'use strict'; function findOptions(onComplete, options) { if (typeof onComplete !== 'function' && typeof(options) === undefined) { return onComplete; } else { return options; } } module.exports = function(Fireproof) { /** * Delegates Firebase#authWithCustomToken. * @method Fireproof#authWithCustomToken * @param {String} authToken * @param {Function} [onComplete] * @param {Object} [options] * @returns {Promise} that resolves on auth success and rejects on auth failure. */ Fireproof.prototype.authWithCustomToken = function(authToken, onComplete, options) { var oc = Fireproof._handleError(onComplete); options = findOptions(onComplete, options); this._ref.authWithCustomToken(authToken, oc, options); return oc.promise; }; /** * Delegates Firebase#authAnonymously. * @method Fireproof#authAnonymously * @param {Function} [onComplete] * @param {Object} [options] * @returns {Promise} that resolves on auth success and rejects on auth failure. */ Fireproof.prototype.authAnonymously = function(onComplete, options) { var oc = Fireproof._handleError(onComplete); options = findOptions(onComplete, options); this._ref.authAnonymously(oc, options); return oc.promise; }; /** * Delegates Firebase#authWithPassword. * @method Fireproof#authWithPassword * @param {Object} credentials Should include `email` and `password`. * @param {Function} [onComplete] * @param {Object} [options] * @returns {Promise} that resolves on auth success and rejects on auth failure. */ Fireproof.prototype.authWithPassword = function(credentials, onComplete, options) { var oc = Fireproof._handleError(onComplete); options = findOptions(onComplete, options); this._ref.authWithPassword(credentials, oc, options); return oc.promise; }; /** * Delegates Firebase#authWithOAuthPopup. * @method Fireproof#authWithOAuthPopup * @param {String} provider * @param {Function} [onComplete] * @param {Object} [options] * @returns {Promise} that resolves on auth success and rejects on auth failure. */ Fireproof.prototype.authWithOAuthPopup = function(provider, onComplete, options) { var oc = Fireproof._handleError(onComplete); options = findOptions(onComplete, options); this._ref.authWithOAuthPopup(provider, oc, options); return oc.promise; }; /** * Delegates Firebase#authWithOAuthRedirect. * @method Fireproof#authWithOAuthRedirect * @param {String} provider * @param {Function} [onComplete] * @param {Object} [options] * @returns {Promise} that resolves on auth success and rejects on auth failure. */ Fireproof.prototype.authWithOAuthRedirect = function(provider, onComplete, options) { var oc = Fireproof._handleError(onComplete); options = findOptions(onComplete, options); this._ref.authWithOAuthRedirect(provider, oc, options); return oc.promise; }; /** * Delegates Firebase#authWithOAuthPopup. * @method Fireproof#authWithOAuthPopup * @param {String} provider * @param {Object} credentials * @param {Function} [onComplete] * @param {Object} [options] * @returns {Promise} that resolves on auth success and rejects on auth failure. */ Fireproof.prototype.authWithOAuthToken = function(provider, credentials, onComplete, options) { var oc = Fireproof._handleError(onComplete); options = findOptions(onComplete, options); this._ref.authWithOAuthRedirect(provider, credentials, oc, options); return oc.promise; }; /** * Delegates Firebase#getAuth. * @method Fireproof#getAuth * @returns {Object} user info object, or null otherwise. */ Fireproof.prototype.getAuth = function() { return this._ref.getAuth(); }; /** * Delegates Firebase#onAuth. * @method Fireproof#onAuth * @param {Function} onComplete Gets called on auth change. * @param {Object} [context] */ Fireproof.prototype.onAuth = function(onComplete, context) { return this._ref.onAuth(onComplete, context); }; /** * Delegates Firebase#offAuth. * @method Fireproof#offAuth * @param {Function} onComplete The function previously passed to onAuth. * @param {Object} [context] */ Fireproof.prototype.offAuth = function(onComplete, context) { return this._ref.offAuth(onComplete, context); }; /** * Delegates Firebase#unauth. * @method Fireproof#unauth */ Fireproof.prototype.unauth = function() { return this._ref.unauth(); }; };