binnacle 0.4.9 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +1 -1
- data/Gemfile.lock +15 -15
- data/lib/binnacle/version.rb +1 -1
- data/lib/generators/binnacle/templates/firebase-messaging-sw.js.erb +2 -2
- data/spec/commands_spec.rb +6 -6
- data/vendor/assets/javascripts/base64/base64.js +6 -2
- data/vendor/assets/javascripts/binnacle/binnacle.js +335 -619
- data/vendor/assets/javascripts/firebase/firebase-app-externs.js +46 -2
- data/vendor/assets/javascripts/firebase/firebase-app.js +5 -35
- data/vendor/assets/javascripts/firebase/firebase-auth-externs.js +684 -36
- data/vendor/assets/javascripts/firebase/firebase-auth.js +293 -241
- data/vendor/assets/javascripts/firebase/firebase-database-externs.js +48 -1
- data/vendor/assets/javascripts/firebase/firebase-database.js +22 -254
- data/vendor/assets/javascripts/firebase/firebase-messaging-externs.js +29 -10
- data/vendor/assets/javascripts/firebase/firebase-messaging.js +5 -35
- data/vendor/assets/javascripts/firebase/firebase-storage-externs.js +30 -10
- data/vendor/assets/javascripts/firebase/firebase-storage.js +5 -52
- data/vendor/assets/javascripts/firebase/firebase.js +319 -605
- data/vendor/assets/javascripts/moment/min/locales.min.js +498 -0
- data/vendor/assets/javascripts/moment/min/moment-with-locales.js +3 -3
- data/vendor/assets/javascripts/moment/min/moment-with-locales.min.js +505 -0
- data/vendor/assets/javascripts/moment/min/moment.min.js +2 -2
- data/vendor/assets/javascripts/moment/moment.js +3 -3
- data/vendor/assets/javascripts/moment/src/lib/locale/set.js +1 -1
- data/vendor/assets/javascripts/moment/src/moment.js +2 -2
- metadata +4 -2
@@ -1,6 +1,25 @@
|
|
1
|
+
/*! @license Firebase v4.2.0
|
2
|
+
Build: rev-d6b2db4
|
3
|
+
Terms: https://firebase.google.com/terms/ */
|
4
|
+
|
5
|
+
/**
|
6
|
+
* Copyright 2017 Google Inc.
|
7
|
+
*
|
8
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
9
|
+
* you may not use this file except in compliance with the License.
|
10
|
+
* You may obtain a copy of the License at
|
11
|
+
*
|
12
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
13
|
+
*
|
14
|
+
* Unless required by applicable law or agreed to in writing, software
|
15
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
16
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
17
|
+
* See the License for the specific language governing permissions and
|
18
|
+
* limitations under the License.
|
19
|
+
*/
|
1
20
|
/**
|
2
21
|
* @fileoverview Firebase namespace and Firebase App API.
|
3
|
-
* Version:
|
22
|
+
* Version: 4.2.0
|
4
23
|
*
|
5
24
|
* Copyright 2017 Google Inc. All Rights Reserved.
|
6
25
|
*
|
@@ -140,7 +159,6 @@ firebase.app.App.prototype.name;
|
|
140
159
|
*
|
141
160
|
* @example
|
142
161
|
* var app = firebase.initializeApp(config);
|
143
|
-
* console.log(app.options.credential === config.credential); // true
|
144
162
|
* console.log(app.options.databaseURL === config.databaseURL); // true
|
145
163
|
*
|
146
164
|
* @type {!Object}
|
@@ -219,6 +237,7 @@ firebase.Promise = function(resolver) {};
|
|
219
237
|
* @param {(function(!Error): *)=} onReject Called when the Promise is rejected
|
220
238
|
* (with an error).
|
221
239
|
* @return {!firebase.Promise<*>}
|
240
|
+
* @override
|
222
241
|
*/
|
223
242
|
firebase.Promise.prototype.then = function(onResolve, onReject) {};
|
224
243
|
|
@@ -227,6 +246,7 @@ firebase.Promise.prototype.then = function(onResolve, onReject) {};
|
|
227
246
|
*
|
228
247
|
* @param {(function(!Error): *)=} onReject Called when the Promise is rejected
|
229
248
|
* (with an error).
|
249
|
+
* @override
|
230
250
|
*/
|
231
251
|
firebase.Promise.prototype.catch = function(onReject) {};
|
232
252
|
|
@@ -259,3 +279,27 @@ firebase.Promise.reject = function(error) {};
|
|
259
279
|
* @return {!firebase.Promise<!Array<*>>}
|
260
280
|
*/
|
261
281
|
firebase.Promise.all = function(values) {};
|
282
|
+
|
283
|
+
/**
|
284
|
+
* @template V, E
|
285
|
+
* @interface
|
286
|
+
**/
|
287
|
+
firebase.Observer = function() {};
|
288
|
+
|
289
|
+
/**
|
290
|
+
* @param {?V} value
|
291
|
+
*/
|
292
|
+
firebase.Observer.prototype.next = function(value) {};
|
293
|
+
|
294
|
+
/**
|
295
|
+
* @param {!E} error
|
296
|
+
*/
|
297
|
+
firebase.Observer.prototype.error = function(error) {};
|
298
|
+
|
299
|
+
firebase.Observer.prototype.complete = function() {};
|
300
|
+
|
301
|
+
/** @typedef {function(): void} */
|
302
|
+
firebase.CompleteFn;
|
303
|
+
|
304
|
+
/** @typedef {function(): void} */
|
305
|
+
firebase.Unsubscribe;
|
@@ -1,35 +1,5 @@
|
|
1
|
-
/*! @license Firebase
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
k.Symbol("iterator"));"function"!=typeof Array.prototype[a]&&aa(Array.prototype,a,{configurable:!0,writable:!0,value:function(){return m(this)}});n=function(){}},m=function(a){var b=0;return da(function(){return b<a.length?{done:!1,value:a[b++]}:{done:!0}})},da=function(a){n();a={next:a};a[k.Symbol.iterator]=function(){return this};return a},q=this,r=function(){},t=function(a){var b=typeof a;if("object"==b)if(a){if(a instanceof Array)return"array";if(a instanceof Object)return b;var c=Object.prototype.toString.call(a);
|
6
|
-
if("[object Window]"==c)return"object";if("[object Array]"==c||"number"==typeof a.length&&"undefined"!=typeof a.splice&&"undefined"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable("splice"))return"array";if("[object Function]"==c||"undefined"!=typeof a.call&&"undefined"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable("call"))return"function"}else return"null";else if("function"==b&&"undefined"==typeof a.call)return"object";return b},v=function(a){return"function"==t(a)},ea=function(a,
|
7
|
-
b,c){return a.call.apply(a.bind,arguments)},fa=function(a,b,c){if(!a)throw Error();if(2<arguments.length){var d=Array.prototype.slice.call(arguments,2);return function(){var c=Array.prototype.slice.call(arguments);Array.prototype.unshift.apply(c,d);return a.apply(b,c)}}return function(){return a.apply(b,arguments)}},w=function(a,b,c){w=Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf("native code")?ea:fa;return w.apply(null,arguments)},x=function(a,b){var c=Array.prototype.slice.call(arguments,
|
8
|
-
1);return function(){var b=c.slice();b.push.apply(b,arguments);return a.apply(this,b)}},y=function(a,b){function c(){}c.prototype=b.prototype;a.ha=b.prototype;a.prototype=new c;a.prototype.constructor=a;a.base=function(a,c,h){for(var e=Array(arguments.length-2),d=2;d<arguments.length;d++)e[d-2]=arguments[d];return b.prototype[c].apply(a,e)}};var A;A="undefined"!==typeof window?window:"undefined"!==typeof self?self:global;
|
9
|
-
var __extends=function(a,b){function c(){this.constructor=a}for(var d in b)b.hasOwnProperty(d)&&(a[d]=b[d]);a.prototype=null===b?Object.create(b):(c.prototype=b.prototype,new c)},__assign=Object.assign||function(a){for(var b,c=1,d=arguments.length;c<d;c++){b=arguments[c];for(var e in b)Object.prototype.hasOwnProperty.call(b,e)&&(a[e]=b[e])}return a},__rest=function(a,b){var c={},d;for(d in a)Object.prototype.hasOwnProperty.call(a,d)&&0>b.indexOf(d)&&(c[d]=a[d]);if(null!=a&&"function"===typeof Object.getOwnPropertySymbols){var e=
|
10
|
-
0;for(d=Object.getOwnPropertySymbols(a);e<d.length;e++)0>b.indexOf(d[e])&&(c[d[e]]=a[d[e]])}return c},__decorate=function(a,b,c,d){var e=arguments.length,h=3>e?b:null===d?d=Object.getOwnPropertyDescriptor(b,c):d,g;g=A.Reflect;if("object"===typeof g&&"function"===typeof g.decorate)h=g.decorate(a,b,c,d);else for(var f=a.length-1;0<=f;f--)if(g=a[f])h=(3>e?g(h):3<e?g(b,c,h):g(b,c))||h;return 3<e&&h&&Object.defineProperty(b,c,h),h},__metadata=function(a,b){var c=A.Reflect;if("object"===typeof c&&"function"===
|
11
|
-
typeof c.metadata)return c.metadata(a,b)},__param=function(a,b){return function(c,d){b(c,d,a)}},__awaiter=function(a,b,c,d){return new (c||(c=Promise))(function(e,h){function g(a){try{p(d.next(a))}catch(u){h(u)}}function f(a){try{p(d["throw"](a))}catch(u){h(u)}}function p(a){a.done?e(a.value):(new c(function(b){b(a.value)})).then(g,f)}p((d=d.apply(a,b)).next())})},__generator=function(a,b){function c(a){return function(b){return d([a,b])}}function d(c){if(h)throw new TypeError("Generator is already executing.");
|
12
|
-
for(;e;)try{if(h=1,g&&(f=g[c[0]&2?"return":c[0]?"throw":"next"])&&!(f=f.call(g,c[1])).done)return f;if(g=0,f)c=[0,f.value];switch(c[0]){case 0:case 1:f=c;break;case 4:return e.label++,{value:c[1],done:!1};case 5:e.label++;g=c[1];c=[0];continue;case 7:c=e.G.pop();e.I.pop();continue;default:if(!(f=e.I,f=0<f.length&&f[f.length-1])&&(6===c[0]||2===c[0])){e=0;continue}if(3===c[0]&&(!f||c[1]>f[0]&&c[1]<f[3]))e.label=c[1];else if(6===c[0]&&e.label<f[1])e.label=f[1],f=c;else if(f&&e.label<f[2])e.label=f[2],
|
13
|
-
e.G.push(c);else{f[2]&&e.G.pop();e.I.pop();continue}}c=b.call(a,e)}catch(z){c=[6,z],g=0}finally{h=f=0}if(c[0]&5)throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}var e={label:0,ga:function(){if(f[0]&1)throw f[1];return f[1]},I:[],G:[]},h,g,f;return{next:c(0),"throw":c(1),"return":c(2)}};
|
14
|
-
"undefined"!==typeof A.S&&A.S||(A.__extends=__extends,A.__assign=__assign,A.__rest=__rest,A.__extends=__extends,A.__decorate=__decorate,A.__metadata=__metadata,A.__param=__param,A.__awaiter=__awaiter,A.__generator=__generator);var B=function(a){if(Error.captureStackTrace)Error.captureStackTrace(this,B);else{var b=Error().stack;b&&(this.stack=b)}a&&(this.message=String(a))};y(B,Error);B.prototype.name="CustomError";var ga=function(a,b){for(var c=a.split("%s"),d="",e=Array.prototype.slice.call(arguments,1);e.length&&1<c.length;)d+=c.shift()+e.shift();return d+c.join("%s")};var C=function(a,b){b.unshift(a);B.call(this,ga.apply(null,b));b.shift()};y(C,B);C.prototype.name="AssertionError";var ha=function(a,b,c,d){var e="Assertion failed";if(c)var e=e+(": "+c),h=d;else a&&(e+=": "+a,h=b);throw new C(""+e,h||[]);},D=function(a,b,c){a||ha("",null,b,Array.prototype.slice.call(arguments,2))},E=function(a,b,c){v(a)||ha("Expected function but got %s: %s.",[t(a),a],b,Array.prototype.slice.call(arguments,2))};var F=function(a,b,c){this.Y=c;this.T=a;this.Z=b;this.s=0;this.o=null};F.prototype.get=function(){var a;0<this.s?(this.s--,a=this.o,this.o=a.next,a.next=null):a=this.T();return a};F.prototype.put=function(a){this.Z(a);this.s<this.Y&&(this.s++,a.next=this.o,this.o=a)};var G;a:{var ia=q.navigator;if(ia){var ja=ia.userAgent;if(ja){G=ja;break a}}G=""};var ka=function(a){q.setTimeout(function(){throw a;},0)},H,la=function(){var a=q.MessageChannel;"undefined"===typeof a&&"undefined"!==typeof window&&window.postMessage&&window.addEventListener&&-1==G.indexOf("Presto")&&(a=function(){var a=document.createElement("IFRAME");a.style.display="none";a.src="";document.documentElement.appendChild(a);var b=a.contentWindow,a=b.document;a.open();a.write("");a.close();var c="callImmediate"+Math.random(),d="file:"==b.location.protocol?"*":b.location.protocol+
|
15
|
-
"//"+b.location.host,a=w(function(a){if(("*"==d||a.origin==d)&&a.data==c)this.port1.onmessage()},this);b.addEventListener("message",a,!1);this.port1={};this.port2={postMessage:function(){b.postMessage(c,d)}}});if("undefined"!==typeof a&&-1==G.indexOf("Trident")&&-1==G.indexOf("MSIE")){var b=new a,c={},d=c;b.port1.onmessage=function(){if(void 0!==c.next){c=c.next;var a=c.J;c.J=null;a()}};return function(a){d.next={J:a};d=d.next;b.port2.postMessage(0)}}return"undefined"!==typeof document&&"onreadystatechange"in
|
16
|
-
document.createElement("SCRIPT")?function(a){var b=document.createElement("SCRIPT");b.onreadystatechange=function(){b.onreadystatechange=null;b.parentNode.removeChild(b);b=null;a();a=null};document.documentElement.appendChild(b)}:function(a){q.setTimeout(a,0)}};var I=function(){this.v=this.g=null},ma=new F(function(){return new J},function(a){a.reset()},100);I.prototype.add=function(a,b){var c=ma.get();c.set(a,b);this.v?this.v.next=c:(D(!this.g),this.g=c);this.v=c};I.prototype.remove=function(){var a=null;this.g&&(a=this.g,this.g=this.g.next,this.g||(this.v=null),a.next=null);return a};var J=function(){this.next=this.scope=this.B=null};J.prototype.set=function(a,b){this.B=a;this.scope=b;this.next=null};
|
17
|
-
J.prototype.reset=function(){this.next=this.scope=this.B=null};var M=function(a,b){K||na();L||(K(),L=!0);oa.add(a,b)},K,na=function(){if(-1!=String(q.Promise).indexOf("[native code]")){var a=q.Promise.resolve(void 0);K=function(){a.then(pa)}}else K=function(){var a=pa;!v(q.setImmediate)||q.Window&&q.Window.prototype&&-1==G.indexOf("Edge")&&q.Window.prototype.setImmediate==q.setImmediate?(H||(H=la()),H(a)):q.setImmediate(a)}},L=!1,oa=new I,pa=function(){for(var a;a=oa.remove();){try{a.B.call(a.scope)}catch(b){ka(b)}ma.put(a)}L=!1};var O=function(a,b){this.b=0;this.R=void 0;this.j=this.h=this.u=null;this.m=this.A=!1;if(a!=r)try{var c=this;a.call(b,function(a){N(c,2,a)},function(a){try{if(a instanceof Error)throw a;throw Error("Promise rejected.");}catch(e){}N(c,3,a)})}catch(d){N(this,3,d)}},qa=function(){this.next=this.context=this.i=this.f=this.child=null;this.w=!1};qa.prototype.reset=function(){this.context=this.i=this.f=this.child=null;this.w=!1};
|
18
|
-
var ra=new F(function(){return new qa},function(a){a.reset()},100),sa=function(a,b,c){var d=ra.get();d.f=a;d.i=b;d.context=c;return d},ua=function(a,b,c){ta(a,b,c,null)||M(x(b,a))};O.prototype.then=function(a,b,c){null!=a&&E(a,"opt_onFulfilled should be a function.");null!=b&&E(b,"opt_onRejected should be a function. Did you pass opt_context as the second argument instead of the third?");return va(this,v(a)?a:null,v(b)?b:null,c)};O.prototype.then=O.prototype.then;O.prototype.$goog_Thenable=!0;
|
19
|
-
O.prototype.ba=function(a,b){return va(this,null,a,b)};var xa=function(a,b){a.h||2!=a.b&&3!=a.b||wa(a);D(null!=b.f);a.j?a.j.next=b:a.h=b;a.j=b},va=function(a,b,c,d){var e=sa(null,null,null);e.child=new O(function(a,g){e.f=b?function(c){try{var e=b.call(d,c);a(e)}catch(z){g(z)}}:a;e.i=c?function(b){try{var e=c.call(d,b);a(e)}catch(z){g(z)}}:g});e.child.u=a;xa(a,e);return e.child};O.prototype.da=function(a){D(1==this.b);this.b=0;N(this,2,a)};
|
20
|
-
O.prototype.ea=function(a){D(1==this.b);this.b=0;N(this,3,a)};
|
21
|
-
var N=function(a,b,c){0==a.b&&(a===c&&(b=3,c=new TypeError("Promise cannot resolve to itself")),a.b=1,ta(c,a.da,a.ea,a)||(a.R=c,a.b=b,a.u=null,wa(a),3!=b||ya(a,c)))},ta=function(a,b,c,d){if(a instanceof O)return null!=b&&E(b,"opt_onFulfilled should be a function."),null!=c&&E(c,"opt_onRejected should be a function. Did you pass opt_context as the second argument instead of the third?"),xa(a,sa(b||r,c||null,d)),!0;var e;if(a)try{e=!!a.$goog_Thenable}catch(g){e=!1}else e=!1;if(e)return a.then(b,c,d),
|
22
|
-
!0;e=typeof a;if("object"==e&&null!=a||"function"==e)try{var h=a.then;if(v(h))return za(a,h,b,c,d),!0}catch(g){return c.call(d,g),!0}return!1},za=function(a,b,c,d,e){var h=!1,g=function(a){h||(h=!0,c.call(e,a))},f=function(a){h||(h=!0,d.call(e,a))};try{b.call(a,g,f)}catch(p){f(p)}},wa=function(a){a.A||(a.A=!0,M(a.V,a))},Aa=function(a){var b=null;a.h&&(b=a.h,a.h=b.next,b.next=null);a.h||(a.j=null);null!=b&&D(null!=b.f);return b};
|
23
|
-
O.prototype.V=function(){for(var a;a=Aa(this);){var b=this.b,c=this.R;if(3==b&&a.i&&!a.w){var d;for(d=this;d&&d.m;d=d.u)d.m=!1}if(a.child)a.child.u=null,Ba(a,b,c);else try{a.w?a.f.call(a.context):Ba(a,b,c)}catch(e){Ca.call(null,e)}ra.put(a)}this.A=!1};var Ba=function(a,b,c){2==b?a.f.call(a.context,c):a.i&&a.i.call(a.context,c)},ya=function(a,b){a.m=!0;M(function(){a.m&&Ca.call(null,b)})},Ca=ka;function P(a,b){if(!(b instanceof Object))return b;switch(b.constructor){case Date:return new Date(b.getTime());case Object:void 0===a&&(a={});break;case Array:a=[];break;default:return b}for(var c in b)b.hasOwnProperty(c)&&(a[c]=P(a[c],b[c]));return a};O.all=function(a){return new O(function(b,c){var d=a.length,e=[];if(d)for(var h=function(a,c){d--;e[a]=c;0==d&&b(e)},g=function(a){c(a)},f=0,p;f<a.length;f++)p=a[f],ua(p,x(h,f),g);else b(e)})};O.resolve=function(a){if(a instanceof O)return a;var b=new O(r);N(b,2,a);return b};O.reject=function(a){return new O(function(b,c){c(a)})};O.prototype["catch"]=O.prototype.ba;var Q=O;"undefined"!==typeof Promise&&(Q=Promise);var Da=Q;function Ea(a,b){a=new R(a,b);return a.subscribe.bind(a)}var R=function(a,b){var c=this;this.a=[];this.P=0;this.task=Da.resolve();this.l=!1;this.F=b;this.task.then(function(){a(c)}).catch(function(a){c.error(a)})};R.prototype.next=function(a){S(this,function(b){b.next(a)})};R.prototype.error=function(a){S(this,function(b){b.error(a)});this.close(a)};R.prototype.complete=function(){S(this,function(a){a.complete()});this.close()};
|
24
|
-
R.prototype.subscribe=function(a,b,c){var d=this,e;if(void 0===a&&void 0===b&&void 0===c)throw Error("Missing Observer.");e=Fa(a)?a:{next:a,error:b,complete:c};void 0===e.next&&(e.next=T);void 0===e.error&&(e.error=T);void 0===e.complete&&(e.complete=T);a=this.fa.bind(this,this.a.length);this.l&&this.task.then(function(){try{d.K?e.error(d.K):e.complete()}catch(h){}});this.a.push(e);return a};
|
25
|
-
R.prototype.fa=function(a){void 0!==this.a&&void 0!==this.a[a]&&(delete this.a[a],--this.P,0===this.P&&void 0!==this.F&&this.F(this))};var S=function(a,b){if(!a.l)for(var c=0;c<a.a.length;c++)Ga(a,c,b)},Ga=function(a,b,c){a.task.then(function(){if(void 0!==a.a&&void 0!==a.a[b])try{c(a.a[b])}catch(d){"undefined"!==typeof console&&console.error&&console.error(d)}})};R.prototype.close=function(a){var b=this;this.l||(this.l=!0,void 0!==a&&(this.K=a),this.task.then(function(){b.a=void 0;b.F=void 0}))};
|
26
|
-
function Fa(a){if("object"!==typeof a||null===a)return!1;var b;b=["next","error","complete"];n();var c=b[Symbol.iterator];b=c?c.call(b):m(b);for(c=b.next();!c.done;c=b.next())if(c=c.value,c in a&&"function"===typeof a[c])return!0;return!1}function T(){};var Ha=Error.captureStackTrace,V=function(a,b){this.code=a;this.message=b;if(Ha)Ha(this,U.prototype.create);else{var c=Error.apply(this,arguments);this.name="FirebaseError";Object.defineProperty(this,"stack",{get:function(){return c.stack}})}};V.prototype=Object.create(Error.prototype);V.prototype.constructor=V;V.prototype.name="FirebaseError";var U=function(a,b,c){this.$=a;this.aa=b;this.U=c;this.pattern=/\{\$([^}]+)}/g};
|
27
|
-
U.prototype.create=function(a,b){void 0===b&&(b={});var c=this.U[a];a=this.$+"/"+a;var c=void 0===c?"Error":c.replace(this.pattern,function(a,c){a=b[c];return void 0!==a?a.toString():"<"+c+"?>"}),c=this.aa+": "+c+" ("+a+").",c=new V(a,c),d;for(d in b)b.hasOwnProperty(d)&&"_"!==d.slice(-1)&&(c[d]=b[d]);return c};var W=Q,X=function(a,b,c){var d=this;this.M=c;this.N=!1;this.c={};this.D=b;this.H=P(void 0,a);a="serviceAccount"in this.H;("credential"in this.H||a)&&"undefined"!==typeof console&&console.log("The '"+(a?"serviceAccount":"credential")+"' property specified in the first argument to initializeApp() is deprecated and will be removed in the next major version. You should instead use the 'firebase-admin' package. See https://firebase.google.com/docs/admin/setup for details on how to get started.");Object.keys(c.INTERNAL.factories).forEach(function(a){var b=
|
28
|
-
c.INTERNAL.useAsService(d,a);null!==b&&(b=d.X.bind(d,b),d[a]=b)})};X.prototype.delete=function(){var a=this;return(new W(function(b){Y(a);b()})).then(function(){a.M.INTERNAL.removeApp(a.D);var b=[];Object.keys(a.c).forEach(function(c){Object.keys(a.c[c]).forEach(function(d){b.push(a.c[c][d])})});return W.all(b.map(function(a){return a.INTERNAL.delete()}))}).then(function(){a.N=!0;a.c={}})};
|
29
|
-
X.prototype.X=function(a,b){Y(this);"undefined"===typeof this.c[a]&&(this.c[a]={});var c=b||"[DEFAULT]";return"undefined"===typeof this.c[a][c]?(b=this.M.INTERNAL.factories[a](this,this.W.bind(this),b),this.c[a][c]=b):this.c[a][c]};X.prototype.W=function(a){P(this,a)};var Y=function(a){a.N&&Z("app-deleted",{name:a.D})};k.Object.defineProperties(X.prototype,{name:{configurable:!0,enumerable:!0,get:function(){Y(this);return this.D}},options:{configurable:!0,enumerable:!0,get:function(){Y(this);return this.H}}});
|
30
|
-
X.prototype.name&&X.prototype.options||X.prototype.delete||console.log("dc");
|
31
|
-
function Ia(){function a(a){a=a||"[DEFAULT]";var b=d[a];void 0===b&&Z("no-app",{name:a});return b}function b(a,b){Object.keys(e).forEach(function(d){d=c(a,d);if(null!==d&&h[d])h[d](b,a)})}function c(a,b){if("serverAuth"===b)return null;var c=b;a=a.options;"auth"===b&&(a.serviceAccount||a.credential)&&(c="serverAuth","serverAuth"in e||Z("sa-not-supported"));return c}var d={},e={},h={},g={__esModule:!0,initializeApp:function(a,c){void 0===c?c="[DEFAULT]":"string"===typeof c&&""!==c||Z("bad-app-name",
|
32
|
-
{name:c+""});void 0!==d[c]&&Z("duplicate-app",{name:c});a=new X(a,c,g);d[c]=a;b(a,"create");void 0!=a.INTERNAL&&void 0!=a.INTERNAL.getToken||P(a,{INTERNAL:{getUid:function(){return null},getToken:function(){return W.resolve(null)},addAuthTokenListener:function(){},removeAuthTokenListener:function(){}}});return a},app:a,apps:null,Promise:W,SDK_VERSION:"0.0.0",INTERNAL:{registerService:function(b,c,d,u){e[b]&&Z("duplicate-service",{name:b});e[b]=c;u&&(h[b]=u);c=function(c){void 0===c&&(c=a());return c[b]()};
|
33
|
-
void 0!==d&&P(c,d);return g[b]=c},createFirebaseNamespace:Ia,extendNamespace:function(a){P(g,a)},createSubscribe:Ea,ErrorFactory:U,removeApp:function(a){b(d[a],"delete");delete d[a]},factories:e,useAsService:c,Promise:O,deepExtend:P}};g["default"]=g;Object.defineProperty(g,"apps",{get:function(){return Object.keys(d).map(function(a){return d[a]})}});a.App=X;return g}function Z(a,b){throw Ja.create(a,b);}
|
34
|
-
var Ja=new U("app","Firebase",{"no-app":"No Firebase App '{$name}' has been created - call Firebase App.initializeApp()","bad-app-name":"Illegal App name: '{$name}","duplicate-app":"Firebase App named '{$name}' already exists","app-deleted":"Firebase App named '{$name}' already deleted","duplicate-service":"Firebase service named '{$name}' already registered","sa-not-supported":"Initializing the Firebase SDK with a service account is only allowed in a Node.js environment. On client devices, you should instead initialize the SDK with an api key and auth domain"});"undefined"!==typeof firebase&&(firebase=Ia()); }).call(this);
|
35
|
-
firebase.SDK_VERSION = "3.7.1";
|
1
|
+
/*! @license Firebase v4.2.0
|
2
|
+
Build: rev-d6b2db4
|
3
|
+
Terms: https://firebase.google.com/terms/ */
|
4
|
+
|
5
|
+
var firebase=function(){var e=void 0===e?self:e;return function(t){function n(e){if(o[e])return o[e].exports;var r=o[e]={i:e,l:!1,exports:{}};return t[e].call(r.exports,r,r.exports,n),r.l=!0,r.exports}var r=e.webpackJsonpFirebase;e.webpackJsonpFirebase=function(e,o,c){for(var s,a,u,f=0,l=[];f<e.length;f++)a=e[f],i[a]&&l.push(i[a][0]),i[a]=0;for(s in o)Object.prototype.hasOwnProperty.call(o,s)&&(t[s]=o[s]);for(r&&r(e,o,c);l.length;)l.shift()();if(c)for(f=0;f<c.length;f++)u=n(n.s=c[f]);return u};var o={},i={3:0};return n.e=function(e){function t(){s.onerror=s.onload=null,clearTimeout(a);var t=i[e];0!==t&&(t&&t[1](Error("Loading chunk "+e+" failed.")),i[e]=void 0)}var r=i[e];if(0===r)return new Promise(function(e){e()});if(r)return r[2];var o=new Promise(function(t,n){r=i[e]=[t,n]});r[2]=o;var c=document.getElementsByTagName("head")[0],s=document.createElement("script");s.type="text/javascript",s.charset="utf-8",s.async=!0,s.timeout=12e4,n.nc&&s.setAttribute("nonce",n.nc),s.src=n.p+""+e+".js";var a=setTimeout(t,12e4);return s.onerror=s.onload=t,c.appendChild(s),o},n.m=t,n.c=o,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.n=function(e){var t=e&&e.t?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n.oe=function(e){throw console.error(e),e},n(n.s=5)}([,,,,function(e,t,n){"use strict";n.d(t,"b",function(){return o}),n.d(t,"a",function(){return i}),n.d(t,"c",function(){return c});var r=n(14),o=r.a.Promise||n(20),i=function(){function e(){var e=this;this.resolve=null,this.reject=null,this.promise=new o(function(t,n){e.resolve=t,e.reject=n})}return e.prototype.wrapCallback=function(e){function t(t,r){t?n.reject(t):n.resolve(r),"function"==typeof e&&(c(n.promise),1===e.length?e(t):e(t,r))}var n=this;return t},e}(),c=function(e){e.catch(function(){})}},function(e,t,n){"use strict";function r(){function e(e){v(y[e],"delete"),delete y[e]}function t(e){return e=e||f,u(y,e)||o("no-app",{name:e}),y[e]}function n(e,t){void 0===t?t=f:"string"==typeof t&&""!==t||o("bad-app-name",{name:t+""}),u(y,t)&&o("duplicate-app",{name:t});var n=new p(e,t,g);return y[t]=n,v(n,"create"),n}function l(){return Object.keys(y).map(function(e){return y[e]})}function h(e,n,r,i,c){b[e]&&o("duplicate-service",{name:e}),b[e]=n,i&&(_[e]=i,l().forEach(function(e){i("create",e)}));var s=function(n){return void 0===n&&(n=t()),"function"!=typeof n[e]&&o("invalid-app-argument",{name:e}),n[e]()};return void 0!==r&&Object(a.b)(s,r),g[e]=s,p.prototype[e]=function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return this.r.bind(this,e).apply(this,c?t:[])},s}function d(e){Object(a.b)(g,e)}function v(e,t){Object.keys(b).forEach(function(n){var r=m(e,n);null!==r&&_[r]&&_[r](t,e)})}function m(e,t){if("serverAuth"===t)return null;var n=t;return e.options,n}var y={},b={},_={},g={t:!0,initializeApp:n,app:t,apps:null,Promise:s.b,SDK_VERSION:"4.2.0",INTERNAL:{registerService:h,createFirebaseNamespace:r,extendNamespace:d,createSubscribe:i.a,ErrorFactory:c.a,removeApp:e,factories:b,useAsService:m,Promise:s.b,deepExtend:a.b}};return Object(a.c)(g,"default",g),Object.defineProperty(g,"apps",{get:l}),Object(a.c)(t,"App",p),g}function o(e,t){throw d.create(e,t)}Object.defineProperty(t,"__esModule",{value:!0});var i=n(13),c=n(10),s=n(4),a=n(17),u=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},f="[DEFAULT]",l=[],p=function(){function e(e,t,n){this.u=n,this.f=!1,this.h={},this.v=t,this.y=Object(a.a)(e),this.INTERNAL={getUid:function(){return null},getToken:function(){return s.b.resolve(null)},addAuthTokenListener:function(e){l.push(e),setTimeout(function(){return e(null)},0)},removeAuthTokenListener:function(e){l=l.filter(function(t){return t!==e})}}}return Object.defineProperty(e.prototype,"name",{get:function(){return this._(),this.v},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"options",{get:function(){return this._(),this.y},enumerable:!0,configurable:!0}),e.prototype.delete=function(){var e=this;return new s.b(function(t){e._(),t()}).then(function(){e.u.INTERNAL.removeApp(e.v);var t=[];return Object.keys(e.h).forEach(function(n){Object.keys(e.h[n]).forEach(function(r){t.push(e.h[n][r])})}),s.b.all(t.map(function(e){return e.INTERNAL.delete()}))}).then(function(){e.f=!0,e.h={}})},e.prototype.r=function(e,t){if(void 0===t&&(t=f),this._(),this.h[e]||(this.h[e]={}),!this.h[e][t]){var n=t!==f?t:void 0,r=this.u.INTERNAL.factories[e](this,this.extendApp.bind(this),n);this.h[e][t]=r}return this.h[e][t]},e.prototype.extendApp=function(e){var t=this;Object(a.b)(this,e),e.INTERNAL&&e.INTERNAL.addAuthTokenListener&&(l.forEach(function(e){t.INTERNAL.addAuthTokenListener(e)}),l=[])},e.prototype._=function(){this.f&&o("app-deleted",{name:this.v})},e}();p.prototype.name&&p.prototype.options||p.prototype.delete||console.log("dc");var h={"no-app":"No Firebase App '{$name}' has been created - call Firebase App.initializeApp()","bad-app-name":"Illegal App name: '{$name}","duplicate-app":"Firebase App named '{$name}' already exists","app-deleted":"Firebase App named '{$name}' already deleted","duplicate-service":"Firebase service named '{$name}' already registered","sa-not-supported":"Initializing the Firebase SDK with a service account is only allowed in a Node.js environment. On client devices, you should instead initialize the SDK with an api key and auth domain","invalid-app-argument":"firebase.{$name}() takes either no argument or a Firebase App instance."},d=new c.a("app","Firebase",h),v=n(19),m=(n.n(v),r());t.default=m},,,,,function(e,t,n){"use strict";n.d(t,"a",function(){return c});var r="FirebaseError",o=Error.captureStackTrace,i=function(){function e(e,t){if(this.code=e,this.message=t,o)o(this,c.prototype.create);else{var n=Error.apply(this,arguments);this.name=r,Object.defineProperty(this,"stack",{get:function(){return n.stack}})}}return e}();i.prototype=Object.create(Error.prototype),i.prototype.constructor=i,i.prototype.name=r;var c=function(){function e(e,t,n){this.service=e,this.serviceName=t,this.errors=n,this.pattern=/\{\$([^}]+)}/g}return e.prototype.create=function(e,t){void 0===t&&(t={});var n,r=this.errors[e],o=this.service+"/"+e;n=void 0===r?"Error":r.replace(this.pattern,function(e,n){var r=t[n];return void 0!==r?""+r:"<"+n+"?>"}),n=this.serviceName+": "+n+" ("+o+").";var c=new i(o,n);for(var s in t)t.hasOwnProperty(s)&&"_"!==s.slice(-1)&&(c[s]=t[s]);return c},e}()},,,function(e,t,n){"use strict";function r(e,t){var n=new a(e,t);return n.subscribe.bind(n)}function o(e,t){if("object"!==(void 0===e?"undefined":s(e))||null===e)return!1;for(var n=0,r=t;n<r.length;n++){var o=r[n];if(o in e&&"function"==typeof e[o])return!0}return!1}function i(){}t.a=r;var c=n(4),s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a=function(){function e(e,t){var n=this;this.observers=[],this.unsubscribes=[],this.observerCount=0,this.task=c.b.resolve(),this.finalized=!1,this.onNoObservers=t,this.task.then(function(){e(n)}).catch(function(e){n.error(e)})}return e.prototype.next=function(e){this.forEachObserver(function(t){t.next(e)})},e.prototype.error=function(e){this.forEachObserver(function(t){t.error(e)}),this.close(e)},e.prototype.complete=function(){this.forEachObserver(function(e){e.complete()}),this.close()},e.prototype.subscribe=function(e,t,n){var r,c=this;if(void 0===e&&void 0===t&&void 0===n)throw Error("Missing Observer.");r=o(e,["next","error","complete"])?e:{next:e,error:t,complete:n},void 0===r.next&&(r.next=i),void 0===r.error&&(r.error=i),void 0===r.complete&&(r.complete=i);var s=this.unsubscribeOne.bind(this,this.observers.length);return this.finalized&&this.task.then(function(){try{c.finalError?r.error(c.finalError):r.complete()}catch(e){}}),this.observers.push(r),s},e.prototype.unsubscribeOne=function(e){void 0!==this.observers&&void 0!==this.observers[e]&&(delete this.observers[e],this.observerCount-=1,0===this.observerCount&&void 0!==this.onNoObservers&&this.onNoObservers(this))},e.prototype.forEachObserver=function(e){if(!this.finalized)for(var t=0;t<this.observers.length;t++)this.sendOne(t,e)},e.prototype.sendOne=function(e,t){var n=this;this.task.then(function(){if(void 0!==n.observers&&void 0!==n.observers[e])try{t(n.observers[e])}catch(e){"undefined"!=typeof console&&console.error&&console.error(e)}})},e.prototype.close=function(e){var t=this;this.finalized||(this.finalized=!0,void 0!==e&&(this.finalError=e),this.task.then(function(){t.observers=void 0,t.onNoObservers=void 0}))},e}()},function(e,t,n){"use strict";(function(e){n.d(t,"a",function(){return o});var r;if(void 0!==e)r=e;else if("undefined"!=typeof self)r=self;else try{r=Function("return this")()}catch(e){throw Error("polyfill failed because global object is unavailable in this environment")}var o=r}).call(t,n(15))},function(t,n){var r;r=function(){return this}();try{r=r||Function("return this")()||(0,eval)("this")}catch(t){"object"==typeof e&&(r=e)}t.exports=r},function(e,t){function n(){throw Error("setTimeout has not been defined")}function r(){throw Error("clearTimeout has not been defined")}function o(e){if(f===setTimeout)return setTimeout(e,0);if((f===n||!f)&&setTimeout)return f=setTimeout,setTimeout(e,0);try{return f(e,0)}catch(t){try{return f.call(null,e,0)}catch(t){return f.call(this,e,0)}}}function i(e){if(l===clearTimeout)return clearTimeout(e);if((l===r||!l)&&clearTimeout)return l=clearTimeout,clearTimeout(e);try{return l(e)}catch(t){try{return l.call(null,e)}catch(t){return l.call(this,e)}}}function c(){v&&h&&(v=!1,h.length?d=h.concat(d):m=-1,d.length&&s())}function s(){if(!v){var e=o(c);v=!0;for(var t=d.length;t;){for(h=d,d=[];++m<t;)h&&h[m].run();m=-1,t=d.length}h=null,v=!1,i(e)}}function a(e,t){this.fun=e,this.array=t}function u(){}var f,l,p=e.exports={};!function(){try{f="function"==typeof setTimeout?setTimeout:n}catch(e){f=n}try{l="function"==typeof clearTimeout?clearTimeout:r}catch(e){l=r}}();var h,d=[],v=!1,m=-1;p.nextTick=function(e){var t=Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];d.push(new a(e,t)),1!==d.length||v||o(s)},a.prototype.run=function(){this.fun.apply(null,this.array)},p.title="browser",p.browser=!0,p.env={},p.argv=[],p.version="",p.versions={},p.on=u,p.addListener=u,p.once=u,p.off=u,p.removeListener=u,p.removeAllListeners=u,p.emit=u,p.prependListener=u,p.prependOnceListener=u,p.listeners=function(e){return[]},p.binding=function(e){throw Error("process.binding is not supported")},p.cwd=function(){return"/"},p.chdir=function(e){throw Error("process.chdir is not supported")},p.umask=function(){return 0}},function(e,t,n){"use strict";function r(e){return o(void 0,e)}function o(e,t){if(!(t instanceof Object))return t;switch(t.constructor){case Date:var n=t;return new Date(n.getTime());case Object:void 0===e&&(e={});break;case Array:e=[];break;default:return t}for(var r in t)t.hasOwnProperty(r)&&(e[r]=o(e[r],t[r]));return e}function i(e,t,n){e[t]=n}t.a=r,t.b=o,t.c=i},,function(e,t){Array.prototype.findIndex||Object.defineProperty(Array.prototype,"findIndex",{value:function(e){if(null==this)throw new TypeError('"this" is null or not defined');var t=Object(this),n=t.length>>>0;if("function"!=typeof e)throw new TypeError("predicate must be a function");for(var r=arguments[1],o=0;o<n;){var i=t[o];if(e.call(r,i,o,t))return o;o++}return-1}}),Array.prototype.find||Object.defineProperty(Array.prototype,"find",{value:function(e){if(null==this)throw new TypeError('"this" is null or not defined');var t=Object(this),n=t.length>>>0;if("function"!=typeof e)throw new TypeError("predicate must be a function");for(var r=arguments[1],o=0;o<n;){var i=t[o];if(e.call(r,i,o,t))return i;o++}}})},function(e,t,n){(function(t){!function(n){function r(){}function o(e,t){return function(){e.apply(t,arguments)}}function i(e){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof e)throw new TypeError("not a function");this.g=0,this.T=!1,this.w=void 0,this.O=[],l(e,this)}function c(e,t){for(;3===e.g;)e=e.w;if(0===e.g)return void e.O.push(t);e.T=!0,i.j(function(){var n=1===e.g?t.onFulfilled:t.onRejected;if(null===n)return void(1===e.g?s:a)(t.promise,e.w);var r;try{r=n(e.w)}catch(e){return void a(t.promise,e)}s(t.promise,r)})}function s(e,t){try{if(t===e)throw new TypeError("A promise cannot be resolved with itself.");if(t&&("object"==typeof t||"function"==typeof t)){var n=t.then;if(t instanceof i)return e.g=3,e.w=t,void u(e);if("function"==typeof n)return void l(o(n,t),e)}e.g=1,e.w=t,u(e)}catch(t){a(e,t)}}function a(e,t){e.g=2,e.w=t,u(e)}function u(e){2===e.g&&0===e.O.length&&i.j(function(){e.T||i.A(e.w)});for(var t=0,n=e.O.length;t<n;t++)c(e,e.O[t]);e.O=null}function f(e,t,n){this.onFulfilled="function"==typeof e?e:null,this.onRejected="function"==typeof t?t:null,this.promise=n}function l(e,t){var n=!1;try{e(function(e){n||(n=!0,s(t,e))},function(e){n||(n=!0,a(t,e))})}catch(e){if(n)return;n=!0,a(t,e)}}var p=setTimeout;i.prototype.catch=function(e){return this.then(null,e)},i.prototype.then=function(e,t){var n=new this.constructor(r);return c(this,new f(e,t,n)),n},i.all=function(e){var t=Array.prototype.slice.call(e);return new i(function(e,n){function r(i,c){try{if(c&&("object"==typeof c||"function"==typeof c)){var s=c.then;if("function"==typeof s)return void s.call(c,function(e){r(i,e)},n)}t[i]=c,0==--o&&e(t)}catch(e){n(e)}}if(0===t.length)return e([]);for(var o=t.length,i=0;i<t.length;i++)r(i,t[i])})},i.resolve=function(e){return e&&"object"==typeof e&&e.constructor===i?e:new i(function(t){t(e)})},i.reject=function(e){return new i(function(t,n){n(e)})},i.race=function(e){return new i(function(t,n){for(var r=0,o=e.length;r<o;r++)e[r].then(t,n)})},i.j="function"==typeof t&&function(e){t(e)}||function(e){p(e,0)},i.A=function(e){"undefined"!=typeof console&&console&&console.warn("Possible Unhandled Promise Rejection:",e)},i.k=function(e){i.j=e},i.I=function(e){i.A=e},void 0!==e&&e.exports?e.exports=i:n.Promise||(n.Promise=i)}(this)}).call(t,n(21).setImmediate)},function(t,n,r){function o(e,t){this.F=e,this.N=t}var i=Function.prototype.apply;n.setTimeout=function(){return new o(i.call(setTimeout,e,arguments),clearTimeout)},n.setInterval=function(){return new o(i.call(setInterval,e,arguments),clearInterval)},n.clearTimeout=n.clearInterval=function(e){e&&e.close()},o.prototype.unref=o.prototype.ref=function(){},o.prototype.close=function(){this.N.call(e,this.F)},n.enroll=function(e,t){clearTimeout(e.x),e.P=t},n.unenroll=function(e){clearTimeout(e.x),e.P=-1},n.L=n.active=function(e){clearTimeout(e.x);var t=e.P;t>=0&&(e.x=setTimeout(function(){e.S&&e.S()},t))},r(22),n.setImmediate=setImmediate,n.clearImmediate=clearImmediate},function(e,t,n){(function(e,t){!function(e,n){"use strict";function r(e){"function"!=typeof e&&(e=Function(""+e));for(var t=Array(arguments.length-1),n=0;n<t.length;n++)t[n]=arguments[n+1];var r={callback:e,args:t};return u[a]=r,s(a),a++}function o(e){delete u[e]}function i(e){var t=e.callback,r=e.args;switch(r.length){case 0:t();break;case 1:t(r[0]);break;case 2:t(r[0],r[1]);break;case 3:t(r[0],r[1],r[2]);break;default:t.apply(n,r)}}function c(e){if(f)setTimeout(c,0,e);else{var t=u[e];if(t){f=!0;try{i(t)}finally{o(e),f=!1}}}}if(!e.setImmediate){var s,a=1,u={},f=!1,l=e.document,p=Object.getPrototypeOf&&Object.getPrototypeOf(e);p=p&&p.setTimeout?p:e,"[object process]"==={}.toString.call(e.process)?function(){s=function(e){t.nextTick(function(){c(e)})}}():function(){if(e.postMessage&&!e.importScripts){var t=!0,n=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage("","*"),e.onmessage=n,t}}()?function(){var t="setImmediate$"+Math.random()+"$",n=function(n){n.source===e&&"string"==typeof n.data&&0===n.data.indexOf(t)&&c(+n.data.slice(t.length))};e.addEventListener?e.addEventListener("message",n,!1):e.attachEvent("onmessage",n),s=function(n){e.postMessage(t+n,"*")}}():e.MessageChannel?function(){var e=new MessageChannel;e.port1.onmessage=function(e){c(e.data)},s=function(t){e.port2.postMessage(t)}}():l&&"onreadystatechange"in l.createElement("script")?function(){var e=l.documentElement;s=function(t){var n=l.createElement("script");n.onreadystatechange=function(){c(t),n.onreadystatechange=null,e.removeChild(n),n=null},e.appendChild(n)}}():function(){s=function(e){setTimeout(c,0,e)}}(),p.setImmediate=r,p.clearImmediate=o}}("undefined"==typeof self?void 0===e?this:e:self)}).call(t,n(15),n(16))}])}().default;
|
@@ -1,6 +1,25 @@
|
|
1
|
+
/*! @license Firebase v4.2.0
|
2
|
+
Build: rev-d6b2db4
|
3
|
+
Terms: https://firebase.google.com/terms/ */
|
4
|
+
|
5
|
+
/**
|
6
|
+
* Copyright 2017 Google Inc.
|
7
|
+
*
|
8
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
9
|
+
* you may not use this file except in compliance with the License.
|
10
|
+
* You may obtain a copy of the License at
|
11
|
+
*
|
12
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
13
|
+
*
|
14
|
+
* Unless required by applicable law or agreed to in writing, software
|
15
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
16
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
17
|
+
* See the License for the specific language governing permissions and
|
18
|
+
* limitations under the License.
|
19
|
+
*/
|
1
20
|
/**
|
2
21
|
* @fileoverview Firebase Auth API.
|
3
|
-
* Version:
|
22
|
+
* Version: 4.2.0
|
4
23
|
*
|
5
24
|
* Copyright 2017 Google Inc. All Rights Reserved.
|
6
25
|
*
|
@@ -58,7 +77,7 @@ firebase.auth.AuthCredential = function() {};
|
|
58
77
|
*
|
59
78
|
* @type {string}
|
60
79
|
*/
|
61
|
-
firebase.auth.AuthCredential.prototype.
|
80
|
+
firebase.auth.AuthCredential.prototype.providerId;
|
62
81
|
|
63
82
|
/**
|
64
83
|
* Gets the {@link firebase.auth.Auth `Auth`} service for the current app.
|
@@ -115,6 +134,13 @@ firebase.UserInfo.prototype.displayName;
|
|
115
134
|
*/
|
116
135
|
firebase.UserInfo.prototype.photoURL;
|
117
136
|
|
137
|
+
/**
|
138
|
+
* The user's E.164 formatted phone number (if available).
|
139
|
+
*
|
140
|
+
* @type {?string}
|
141
|
+
*/
|
142
|
+
firebase.UserInfo.prototype.phoneNumber;
|
143
|
+
|
118
144
|
/**
|
119
145
|
* A user account.
|
120
146
|
*
|
@@ -123,6 +149,14 @@ firebase.UserInfo.prototype.photoURL;
|
|
123
149
|
*/
|
124
150
|
firebase.User;
|
125
151
|
|
152
|
+
/**
|
153
|
+
* The phone number normalized based on the E.164 standard (e.g. +16505550101)
|
154
|
+
* for the current user. This is null if the user has no phone credential linked
|
155
|
+
* to the account.
|
156
|
+
* @type {?string}
|
157
|
+
*/
|
158
|
+
firebase.User.prototype.phoneNumber;
|
159
|
+
|
126
160
|
/** @type {boolean} */
|
127
161
|
firebase.User.prototype.isAnonymous;
|
128
162
|
|
@@ -151,12 +185,27 @@ firebase.User.prototype.refreshToken;
|
|
151
185
|
* Returns the current token if it has not expired, otherwise this will
|
152
186
|
* refresh the token and return a new one.
|
153
187
|
*
|
188
|
+
* This property is deprecated. Use {@link firebase.User#getIdToken} instead.
|
189
|
+
*
|
154
190
|
* @param {boolean=} forceRefresh Force refresh regardless of token
|
155
191
|
* expiration.
|
156
192
|
* @return {!firebase.Promise<string>}
|
193
|
+
* @deprecated
|
157
194
|
*/
|
158
195
|
firebase.User.prototype.getToken = function(forceRefresh) {};
|
159
196
|
|
197
|
+
/**
|
198
|
+
* Returns a JWT token used to identify the user to a Firebase service.
|
199
|
+
*
|
200
|
+
* Returns the current token if it has not expired, otherwise this will
|
201
|
+
* refresh the token and return a new one.
|
202
|
+
*
|
203
|
+
* @param {boolean=} forceRefresh Force refresh regardless of token
|
204
|
+
* expiration.
|
205
|
+
* @return {!firebase.Promise<string>}
|
206
|
+
*/
|
207
|
+
firebase.User.prototype.getIdToken = function(forceRefresh) {};
|
208
|
+
|
160
209
|
/**
|
161
210
|
* Refreshes the current user, if signed in.
|
162
211
|
*
|
@@ -187,9 +236,8 @@ firebase.User.prototype.sendEmailVerification = function() {};
|
|
187
236
|
* <dt>auth/invalid-credential</dt>
|
188
237
|
* <dd>Thrown if the provider's credential is not valid. This can happen if it
|
189
238
|
* has already expired when calling link, or if it used invalid token(s).
|
190
|
-
*
|
191
|
-
*
|
192
|
-
* method.</dd>
|
239
|
+
* See the Firebase documentation for your provider, and make sure you pass
|
240
|
+
* in the correct parameters to the credential method.</dd>
|
193
241
|
* <dt>auth/credential-already-in-use</dt>
|
194
242
|
* <dd>Thrown if the account corresponding to the credential already exists
|
195
243
|
* among your users, or is already linked to a Firebase User.
|
@@ -197,10 +245,11 @@ firebase.User.prototype.sendEmailVerification = function() {};
|
|
197
245
|
* user to a Google user by linking a Google credential to it and the Google
|
198
246
|
* credential used is already associated with an existing Firebase Google
|
199
247
|
* user.
|
200
|
-
*
|
201
|
-
* ({@link firebase.auth.AuthCredential})
|
202
|
-
*
|
203
|
-
*
|
248
|
+
* The fields <code>error.email</code>, <code>error.phoneNumber</code>, and
|
249
|
+
* <code>error.credential</code> ({@link firebase.auth.AuthCredential})
|
250
|
+
* may be provided, depending on the type of credential. You can recover
|
251
|
+
* from this error by signing in with <code>error.credential</code> directly
|
252
|
+
* via {@link firebase.auth.Auth#signInWithCredential}.</dd>
|
204
253
|
* <dt>auth/email-already-in-use</dt>
|
205
254
|
* <dd>Thrown if the email corresponding to the credential already exists
|
206
255
|
* among your users. When thrown while linking a credential to an existing
|
@@ -210,8 +259,8 @@ firebase.User.prototype.sendEmailVerification = function() {};
|
|
210
259
|
* you wish to continue signing in with that credential. To do so, call
|
211
260
|
* {@link firebase.auth.Auth#fetchProvidersForEmail}, sign in to
|
212
261
|
* <code>error.email</code> via one of the providers returned and then
|
213
|
-
* {@link firebase.User#
|
214
|
-
* in user.</dd>
|
262
|
+
* {@link firebase.User#linkWithCredential} the original credential to that
|
263
|
+
* newly signed in user.</dd>
|
215
264
|
* <dt>auth/operation-not-allowed</dt>
|
216
265
|
* <dd>Thrown if you have not enabled the provider in the Firebase Console. Go
|
217
266
|
* to the Firebase Console for your project, in the Auth section and the
|
@@ -221,14 +270,133 @@ firebase.User.prototype.sendEmailVerification = function() {};
|
|
221
270
|
* {@link firebase.auth.EmailAuthProvider#credential} is invalid.</dd>
|
222
271
|
* <dt>auth/wrong-password</dt>
|
223
272
|
* <dd>Thrown if the password used in a
|
224
|
-
* {@link firebase.auth.EmailAuthProvider#credential} is not correct or
|
225
|
-
* the user associated with the email does not have a password.</dd>
|
273
|
+
* {@link firebase.auth.EmailAuthProvider#credential} is not correct or
|
274
|
+
* when the user associated with the email does not have a password.</dd>
|
275
|
+
* <dt>auth/invalid-verification-code</dt>
|
276
|
+
* <dd>Thrown if the credential is a
|
277
|
+
* {@link firebase.auth.PhoneAuthProvider#credential} and the verification
|
278
|
+
* code of the credential is not valid.</dd>
|
279
|
+
* <dt>auth/invalid-verification-id</dt>
|
280
|
+
* <dd>Thrown if the credential is a
|
281
|
+
* {@link firebase.auth.PhoneAuthProvider#credential} and the verification
|
282
|
+
* ID of the credential is not valid.</dd>
|
226
283
|
* </dl>
|
227
284
|
*
|
228
285
|
* @param {!firebase.auth.AuthCredential} credential The auth credential.
|
229
286
|
* @return {!firebase.Promise<!firebase.User>}
|
230
287
|
*/
|
231
|
-
firebase.User.prototype.
|
288
|
+
firebase.User.prototype.linkWithCredential = function(credential) {};
|
289
|
+
|
290
|
+
|
291
|
+
/**
|
292
|
+
* Links the user account with the given credentials, and returns any available
|
293
|
+
* additional user information, such as user name.
|
294
|
+
*
|
295
|
+
* <h4>Error Codes</h4>
|
296
|
+
* <dl>
|
297
|
+
* <dt>auth/provider-already-linked</dt>
|
298
|
+
* <dd>Thrown if the provider has already been linked to the user. This error is
|
299
|
+
* thrown even if this is not the same provider's account that is currently
|
300
|
+
* linked to the user.</dd>
|
301
|
+
* <dt>auth/invalid-credential</dt>
|
302
|
+
* <dd>Thrown if the provider's credential is not valid. This can happen if it
|
303
|
+
* has already expired when calling link, or if it used invalid token(s).
|
304
|
+
* See the Firebase documentation for your provider, and make sure you pass
|
305
|
+
* in the correct parameters to the credential method.</dd>
|
306
|
+
* <dt>auth/credential-already-in-use</dt>
|
307
|
+
* <dd>Thrown if the account corresponding to the credential already exists
|
308
|
+
* among your users, or is already linked to a Firebase User.
|
309
|
+
* For example, this error could be thrown if you are upgrading an anonymous
|
310
|
+
* user to a Google user by linking a Google credential to it and the Google
|
311
|
+
* credential used is already associated with an existing Firebase Google
|
312
|
+
* user.
|
313
|
+
* The fields <code>error.email</code>, <code>error.phoneNumber</code>, and
|
314
|
+
* <code>error.credential</code> ({@link firebase.auth.AuthCredential})
|
315
|
+
* may be provided, depending on the type of credential. You can recover
|
316
|
+
* from this error by signing in with <code>error.credential</code> directly
|
317
|
+
* via {@link firebase.auth.Auth#signInWithCredential}.</dd>
|
318
|
+
* <dt>auth/email-already-in-use</dt>
|
319
|
+
* <dd>Thrown if the email corresponding to the credential already exists
|
320
|
+
* among your users. When thrown while linking a credential to an existing
|
321
|
+
* user, an <code>error.email</code> and <code>error.credential</code>
|
322
|
+
* ({@link firebase.auth.AuthCredential}) fields are also provided.
|
323
|
+
* You have to link the credential to the existing user with that email if
|
324
|
+
* you wish to continue signing in with that credential. To do so, call
|
325
|
+
* {@link firebase.auth.Auth#fetchProvidersForEmail}, sign in to
|
326
|
+
* <code>error.email</code> via one of the providers returned and then
|
327
|
+
* {@link firebase.User#linkWithCredential} the original credential to that
|
328
|
+
* newly signed in user.</dd>
|
329
|
+
* <dt>auth/operation-not-allowed</dt>
|
330
|
+
* <dd>Thrown if you have not enabled the provider in the Firebase Console. Go
|
331
|
+
* to the Firebase Console for your project, in the Auth section and the
|
332
|
+
* <strong>Sign in Method</strong> tab and configure the provider.</dd>
|
333
|
+
* <dt>auth/invalid-email</dt>
|
334
|
+
* <dd>Thrown if the email used in a
|
335
|
+
* {@link firebase.auth.EmailAuthProvider#credential} is invalid.</dd>
|
336
|
+
* <dt>auth/wrong-password</dt>
|
337
|
+
* <dd>Thrown if the password used in a
|
338
|
+
* {@link firebase.auth.EmailAuthProvider#credential} is not correct or
|
339
|
+
* when the user associated with the email does not have a password.</dd>
|
340
|
+
* <dt>auth/invalid-verification-code</dt>
|
341
|
+
* <dd>Thrown if the credential is a
|
342
|
+
* {@link firebase.auth.PhoneAuthProvider#credential} and the verification
|
343
|
+
* code of the credential is not valid.</dd>
|
344
|
+
* <dt>auth/invalid-verification-id</dt>
|
345
|
+
* <dd>Thrown if the credential is a
|
346
|
+
* {@link firebase.auth.PhoneAuthProvider#credential} and the verification
|
347
|
+
* ID of the credential is not valid.</dd>
|
348
|
+
* </dl>
|
349
|
+
*
|
350
|
+
* @param {!firebase.auth.AuthCredential} credential The auth credential.
|
351
|
+
* @return {!firebase.Promise<!firebase.auth.UserCredential>}
|
352
|
+
*/
|
353
|
+
firebase.User.prototype.linkAndRetrieveDataWithCredential =
|
354
|
+
function(credential) {};
|
355
|
+
|
356
|
+
|
357
|
+
/**
|
358
|
+
* Links the user account with the given phone number.
|
359
|
+
*
|
360
|
+
* <h4>Error Codes</h4>
|
361
|
+
* <dl>
|
362
|
+
* <dt>auth/provider-already-linked</dt>
|
363
|
+
* <dd>Thrown if the provider has already been linked to the user. This error is
|
364
|
+
* thrown even if this is not the same provider's account that is currently
|
365
|
+
* linked to the user.</dd>
|
366
|
+
* <dt>auth/captcha-check-failed</dt>
|
367
|
+
* <dd>Thrown if the reCAPTCHA response token was invalid, expired, or if
|
368
|
+
* this method was called from a non-whitelisted domain.</dd>
|
369
|
+
* <dt>auth/invalid-phone-number</dt>
|
370
|
+
* <dd>Thrown if the phone number has an invalid format.</dd>
|
371
|
+
* <dt>auth/missing-phone-number</dt>
|
372
|
+
* <dd>Thrown if the phone number is missing.</dd>
|
373
|
+
* <dt>auth/quota-exceeded</dt>
|
374
|
+
* <dd>Thrown if the SMS quota for the Firebase project has been exceeded.</dd>
|
375
|
+
* <dt>auth/user-disabled</dt>
|
376
|
+
* <dd>Thrown if the user corresponding to the given phone number has been
|
377
|
+
* disabled.</dd>
|
378
|
+
* <dt>auth/credential-already-in-use</dt>
|
379
|
+
* <dd>Thrown if the account corresponding to the phone number already exists
|
380
|
+
* among your users, or is already linked to a Firebase User.
|
381
|
+
* The fields <code>error.phoneNumber</code> and
|
382
|
+
* <code>error.credential</code> ({@link firebase.auth.AuthCredential})
|
383
|
+
* are provided in this case. You can recover from this error by signing in
|
384
|
+
* with that credential directly via
|
385
|
+
* {@link firebase.auth.Auth#signInWithCredential}.</dd>
|
386
|
+
* <dt>auth/operation-not-allowed</dt>
|
387
|
+
* <dd>Thrown if you have not enabled the phone authentication provider in the
|
388
|
+
* Firebase Console. Go to the Firebase Console for your project, in the
|
389
|
+
* Auth section and the <strong>Sign in Method</strong> tab and configure
|
390
|
+
* the provider.</dd>
|
391
|
+
* </dl>
|
392
|
+
*
|
393
|
+
* @param {string} phoneNumber The user's phone number in E.164 format (e.g.
|
394
|
+
* +16505550101).
|
395
|
+
* @param {!firebase.auth.ApplicationVerifier} applicationVerifier
|
396
|
+
* @return {!firebase.Promise<!firebase.auth.ConfirmationResult>}
|
397
|
+
*/
|
398
|
+
firebase.User.prototype.linkWithPhoneNumber =
|
399
|
+
function(phoneNumber, applicationVerifier) {};
|
232
400
|
|
233
401
|
|
234
402
|
/**
|
@@ -262,9 +430,8 @@ firebase.User.prototype.unlink = function(providerId) {};
|
|
262
430
|
* <dt>auth/invalid-credential</dt>
|
263
431
|
* <dd>Thrown if the provider's credential is not valid. This can happen if it
|
264
432
|
* has already expired when calling link, or if it used invalid token(s).
|
265
|
-
*
|
266
|
-
*
|
267
|
-
* method.</dd>
|
433
|
+
* See the Firebase documentation for your provider, and make sure you pass
|
434
|
+
* in the correct parameters to the credential method.</dd>
|
268
435
|
* <dt>auth/invalid-email</dt>
|
269
436
|
* <dd>Thrown if the email used in a
|
270
437
|
* {@link firebase.auth.EmailAuthProvider#credential} is invalid.</dd>
|
@@ -272,12 +439,94 @@ firebase.User.prototype.unlink = function(providerId) {};
|
|
272
439
|
* <dd>Thrown if the password used in a
|
273
440
|
* {@link firebase.auth.EmailAuthProvider#credential} is not correct or when
|
274
441
|
* the user associated with the email does not have a password.</dd>
|
442
|
+
* <dt>auth/invalid-verification-code</dt>
|
443
|
+
* <dd>Thrown if the credential is a
|
444
|
+
* {@link firebase.auth.PhoneAuthProvider#credential} and the verification
|
445
|
+
* code of the credential is not valid.</dd>
|
446
|
+
* <dt>auth/invalid-verification-id</dt>
|
447
|
+
* <dd>Thrown if the credential is a
|
448
|
+
* {@link firebase.auth.PhoneAuthProvider#credential} and the verification
|
449
|
+
* ID of the credential is not valid.</dd>
|
275
450
|
* </dl>
|
276
451
|
*
|
277
452
|
* @param {!firebase.auth.AuthCredential} credential
|
278
453
|
* @return {!firebase.Promise<void>}
|
279
454
|
*/
|
280
|
-
firebase.User.prototype.
|
455
|
+
firebase.User.prototype.reauthenticateWithCredential = function(credential) {};
|
456
|
+
|
457
|
+
|
458
|
+
/**
|
459
|
+
* Re-authenticates a user using a fresh credential, and returns any available
|
460
|
+
* additional user information, such as user name. Use before operations
|
461
|
+
* such as {@link firebase.User#updatePassword} that require tokens from recent
|
462
|
+
* sign-in attempts.
|
463
|
+
*
|
464
|
+
* <h4>Error Codes</h4>
|
465
|
+
* <dl>
|
466
|
+
* <dt>auth/user-mismatch</dt>
|
467
|
+
* <dd>Thrown if the credential given does not correspond to the user.</dd>
|
468
|
+
* <dt>auth/user-not-found</dt>
|
469
|
+
* <dd>Thrown if the credential given does not correspond to any existing user.
|
470
|
+
* </dd>
|
471
|
+
* <dt>auth/invalid-credential</dt>
|
472
|
+
* <dd>Thrown if the provider's credential is not valid. This can happen if it
|
473
|
+
* has already expired when calling link, or if it used invalid token(s).
|
474
|
+
* See the Firebase documentation for your provider, and make sure you pass
|
475
|
+
* in the correct parameters to the credential method.</dd>
|
476
|
+
* <dt>auth/invalid-email</dt>
|
477
|
+
* <dd>Thrown if the email used in a
|
478
|
+
* {@link firebase.auth.EmailAuthProvider#credential} is invalid.</dd>
|
479
|
+
* <dt>auth/wrong-password</dt>
|
480
|
+
* <dd>Thrown if the password used in a
|
481
|
+
* {@link firebase.auth.EmailAuthProvider#credential} is not correct or when
|
482
|
+
* the user associated with the email does not have a password.</dd>
|
483
|
+
* <dt>auth/invalid-verification-code</dt>
|
484
|
+
* <dd>Thrown if the credential is a
|
485
|
+
* {@link firebase.auth.PhoneAuthProvider#credential} and the verification
|
486
|
+
* code of the credential is not valid.</dd>
|
487
|
+
* <dt>auth/invalid-verification-id</dt>
|
488
|
+
* <dd>Thrown if the credential is a
|
489
|
+
* {@link firebase.auth.PhoneAuthProvider#credential} and the verification
|
490
|
+
* ID of the credential is not valid.</dd>
|
491
|
+
* </dl>
|
492
|
+
*
|
493
|
+
* @param {!firebase.auth.AuthCredential} credential
|
494
|
+
* @return {!firebase.Promise<!firebase.auth.UserCredential>}
|
495
|
+
*/
|
496
|
+
firebase.User.prototype.reauthenticateAndRetrieveDataWithCredential =
|
497
|
+
function(credential) {};
|
498
|
+
|
499
|
+
|
500
|
+
/**
|
501
|
+
* Re-authenticates a user using a fresh credential. Use before operations
|
502
|
+
* such as {@link firebase.User#updatePassword} that require tokens from recent
|
503
|
+
* sign-in attempts.
|
504
|
+
*
|
505
|
+
* <h4>Error Codes</h4>
|
506
|
+
* <dl>
|
507
|
+
* <dt>auth/user-mismatch</dt>
|
508
|
+
* <dd>Thrown if the credential given does not correspond to the user.</dd>
|
509
|
+
* <dt>auth/user-not-found</dt>
|
510
|
+
* <dd>Thrown if the credential given does not correspond to any existing user.
|
511
|
+
* </dd>
|
512
|
+
* <dt>auth/captcha-check-failed</dt>
|
513
|
+
* <dd>Thrown if the reCAPTCHA response token was invalid, expired, or if
|
514
|
+
* this method was called from a non-whitelisted domain.</dd>
|
515
|
+
* <dt>auth/invalid-phone-number</dt>
|
516
|
+
* <dd>Thrown if the phone number has an invalid format.</dd>
|
517
|
+
* <dt>auth/missing-phone-number</dt>
|
518
|
+
* <dd>Thrown if the phone number is missing.</dd>
|
519
|
+
* <dt>auth/quota-exceeded</dt>
|
520
|
+
* <dd>Thrown if the SMS quota for the Firebase project has been exceeded.</dd>
|
521
|
+
* </dl>
|
522
|
+
*
|
523
|
+
* @param {string} phoneNumber The user's phone number in E.164 format (e.g.
|
524
|
+
* +16505550101).
|
525
|
+
* @param {!firebase.auth.ApplicationVerifier} applicationVerifier
|
526
|
+
* @return {!firebase.Promise<!firebase.auth.ConfirmationResult>}
|
527
|
+
*/
|
528
|
+
firebase.User.prototype.reauthenticateWithPhoneNumber =
|
529
|
+
function(phoneNumber, applicationVerifier) {};
|
281
530
|
|
282
531
|
|
283
532
|
/**
|
@@ -289,7 +538,8 @@ firebase.User.prototype.reauthenticate = function(credential) {};
|
|
289
538
|
*
|
290
539
|
* <b>Important:</b> this is a security sensitive operation that requires the
|
291
540
|
* user to have recently signed in. If this requirement isn't met, ask the user
|
292
|
-
* to authenticate again and then call
|
541
|
+
* to authenticate again and then call
|
542
|
+
* {@link firebase.User#reauthenticateWithCredential}.
|
293
543
|
*
|
294
544
|
* <h4>Error Codes</h4>
|
295
545
|
* <dl>
|
@@ -299,8 +549,8 @@ firebase.User.prototype.reauthenticate = function(credential) {};
|
|
299
549
|
* <dd>Thrown if the email is already used by another user.</dd>
|
300
550
|
* <dt>auth/requires-recent-login</dt>
|
301
551
|
* <dd>Thrown if the user's last sign-in time does not meet the security
|
302
|
-
* threshold. Use {@link firebase.User#
|
303
|
-
* not apply if the user is anonymous.</dd>
|
552
|
+
* threshold. Use {@link firebase.User#reauthenticateWithCredential} to
|
553
|
+
* resolve. This does not apply if the user is anonymous.</dd>
|
304
554
|
* </dl>
|
305
555
|
*
|
306
556
|
* @param {string} newEmail The new email address.
|
@@ -314,7 +564,8 @@ firebase.User.prototype.updateEmail = function(newEmail) {};
|
|
314
564
|
*
|
315
565
|
* <b>Important:</b> this is a security sensitive operation that requires the
|
316
566
|
* user to have recently signed in. If this requirement isn't met, ask the user
|
317
|
-
* to authenticate again and then call
|
567
|
+
* to authenticate again and then call
|
568
|
+
* {@link firebase.User#reauthenticateWithCredential}.
|
318
569
|
*
|
319
570
|
* <h4>Error Codes</h4>
|
320
571
|
* <dl>
|
@@ -322,8 +573,8 @@ firebase.User.prototype.updateEmail = function(newEmail) {};
|
|
322
573
|
* <dd>Thrown if the password is not strong enough.</dd>
|
323
574
|
* <dt>auth/requires-recent-login</dt>
|
324
575
|
* <dd>Thrown if the user's last sign-in time does not meet the security
|
325
|
-
* threshold. Use {@link firebase.User#
|
326
|
-
* not apply if the user is anonymous.</dd>
|
576
|
+
* threshold. Use {@link firebase.User#reauthenticateWithCredential} to
|
577
|
+
* resolve. This does not apply if the user is anonymous.</dd>
|
327
578
|
* </dl>
|
328
579
|
*
|
329
580
|
* @param {string} newPassword
|
@@ -332,6 +583,23 @@ firebase.User.prototype.updateEmail = function(newEmail) {};
|
|
332
583
|
firebase.User.prototype.updatePassword = function(newPassword) {};
|
333
584
|
|
334
585
|
|
586
|
+
/**
|
587
|
+
* Updates the user's phone number.
|
588
|
+
*
|
589
|
+
* <h4>Error Codes</h4>
|
590
|
+
* <dl>
|
591
|
+
* <dt>auth/invalid-verification-code</dt>
|
592
|
+
* <dd>Thrown if the verification code of the credential is not valid.</dd>
|
593
|
+
* <dt>auth/invalid-verification-id</dt>
|
594
|
+
* <dd>Thrown if the verification ID of the credential is not valid.</dd>
|
595
|
+
* </dl>
|
596
|
+
*
|
597
|
+
* @param {!firebase.auth.AuthCredential} phoneCredential
|
598
|
+
* @return {!firebase.Promise<void>}
|
599
|
+
*/
|
600
|
+
firebase.User.prototype.updatePhoneNumber = function(phoneCredential) {};
|
601
|
+
|
602
|
+
|
335
603
|
/**
|
336
604
|
* Updates a user's profile data.
|
337
605
|
*
|
@@ -375,14 +643,15 @@ firebase.User.prototype.updateProfile = function(profile) {};
|
|
375
643
|
*
|
376
644
|
* <b>Important:</b> this is a security sensitive operation that requires the
|
377
645
|
* user to have recently signed in. If this requirement isn't met, ask the user
|
378
|
-
* to authenticate again and then call
|
646
|
+
* to authenticate again and then call
|
647
|
+
* {@link firebase.User#reauthenticateWithCredential}.
|
379
648
|
*
|
380
649
|
* <h4>Error Codes</h4>
|
381
650
|
* <dl>
|
382
651
|
* <dt>auth/requires-recent-login</dt>
|
383
652
|
* <dd>Thrown if the user's last sign-in time does not meet the security
|
384
|
-
* threshold. Use {@link firebase.User#
|
385
|
-
* not apply if the user is anonymous.</dd>
|
653
|
+
* threshold. Use {@link firebase.User#reauthenticateWithCredential} to
|
654
|
+
* resolve. This does not apply if the user is anonymous.</dd>
|
386
655
|
* </dl>
|
387
656
|
*
|
388
657
|
* @return {!firebase.Promise<void>}
|
@@ -529,6 +798,69 @@ firebase.auth.Auth.prototype.app;
|
|
529
798
|
*/
|
530
799
|
firebase.auth.Auth.prototype.currentUser;
|
531
800
|
|
801
|
+
/**
|
802
|
+
* @enum {string}
|
803
|
+
* An enumeration of the possible persistence mechanism types.
|
804
|
+
*/
|
805
|
+
firebase.auth.Auth.Persistence = {
|
806
|
+
/**
|
807
|
+
* Indicates that the state will be persisted even when the browser window is
|
808
|
+
* closed or the activity is destroyed in react-native.
|
809
|
+
*/
|
810
|
+
LOCAL: 'local',
|
811
|
+
/**
|
812
|
+
* Indicates that the state will only be stored in memory and will be cleared
|
813
|
+
* when the window or activity is refreshed.
|
814
|
+
*/
|
815
|
+
NONE: 'none',
|
816
|
+
/**
|
817
|
+
* Indicates that the state will only persist in current session/tab, relevant
|
818
|
+
* to web only, and will be cleared when the tab is closed.
|
819
|
+
*/
|
820
|
+
SESSION: 'session'
|
821
|
+
};
|
822
|
+
|
823
|
+
/**
|
824
|
+
* Changes the current type of persistence on the current Auth instance for the
|
825
|
+
* currently saved Auth session and applies this type of persistence for
|
826
|
+
* future sign-in requests, including sign-in with redirect requests. This will
|
827
|
+
* return a promise that will resolve once the state finishes copying from one
|
828
|
+
* type of storage to the other.
|
829
|
+
* Calling a sign-in method after changing persistence will wait for that
|
830
|
+
* persistence change to complete before applying it on the new Auth state.
|
831
|
+
*
|
832
|
+
* This makes it easy for a user signing in to specify whether their session
|
833
|
+
* should be remembered or not. It also makes it easier to never persist the
|
834
|
+
* Auth state for applications that are shared by other users or have sensitive
|
835
|
+
* data.
|
836
|
+
*
|
837
|
+
* The default for web browser apps and React Native apps is 'local' (provided
|
838
|
+
* the browser supports this mechanism) whereas it is 'none' for Node.js backend
|
839
|
+
* apps.
|
840
|
+
*
|
841
|
+
* <h4>Error Codes (thrown synchronously)</h4>
|
842
|
+
* <dl>
|
843
|
+
* <dt>auth/invalid-persistence-type</dt>
|
844
|
+
* <dd>Thrown if the specified persistence type is invalid.</dd>
|
845
|
+
* <dt>auth/unsupported-persistence-type</dt>
|
846
|
+
* <dd>Thrown if the current environment does not support the specified
|
847
|
+
* persistence type.</dd>
|
848
|
+
* </dl>
|
849
|
+
*
|
850
|
+
* @example
|
851
|
+
* firebase.auth().setPersistence(firebase.auth.Auth.Persistence.SESSION)
|
852
|
+
* .then(function() {
|
853
|
+
* // Existing and future Auth states are now persisted in the current
|
854
|
+
* // session only. Closing the window would clear any existing state even if
|
855
|
+
* // a user forgets to sign out.
|
856
|
+
* });
|
857
|
+
*
|
858
|
+
* @param {!firebase.auth.Auth.Persistence} persistence The auth state
|
859
|
+
* persistence mechanism.
|
860
|
+
* @return {!firebase.Promise<void>}
|
861
|
+
*/
|
862
|
+
firebase.auth.Auth.prototype.setPersistence = function(persistence) {};
|
863
|
+
|
532
864
|
/**
|
533
865
|
* Creates a new user account associated with the specified email address and
|
534
866
|
* password.
|
@@ -596,7 +928,14 @@ firebase.auth.Auth.prototype.fetchProvidersForEmail = function(email) {};
|
|
596
928
|
|
597
929
|
|
598
930
|
/**
|
599
|
-
* Adds an observer for
|
931
|
+
* Adds an observer for changes to the user's sign-in state.
|
932
|
+
*
|
933
|
+
* Prior to 4.0.0, this triggered the observer when users were signed in,
|
934
|
+
* signed out, or when the user's ID token changed in situations such as token
|
935
|
+
* expiry or password change. After 4.0.0, the observer is only triggered
|
936
|
+
* on sign-in or sign-out.
|
937
|
+
*
|
938
|
+
* To keep the old behavior, see {@link firebase.auth.Auth#onIdTokenChanged}.
|
600
939
|
*
|
601
940
|
* @example
|
602
941
|
* firebase.auth().onAuthStateChanged(function(user) {
|
@@ -605,18 +944,42 @@ firebase.auth.Auth.prototype.fetchProvidersForEmail = function(email) {};
|
|
605
944
|
* }
|
606
945
|
* });
|
607
946
|
*
|
608
|
-
* @param {!
|
947
|
+
* @param {!firebase.Observer<firebase.User, firebase.auth.Error>|function(?firebase.User)}
|
609
948
|
* nextOrObserver An observer object or a function triggered on change.
|
610
949
|
* @param {function(!firebase.auth.Error)=} error Optional A function
|
611
950
|
* triggered on auth error.
|
612
|
-
* @param {
|
951
|
+
* @param {firebase.CompleteFn=} completed Optional A function triggered when the
|
613
952
|
* observer is removed.
|
614
|
-
* @return {!
|
953
|
+
* @return {!firebase.Unsubscribe} The unsubscribe function for the observer.
|
615
954
|
*/
|
616
955
|
firebase.auth.Auth.prototype.onAuthStateChanged = function(
|
617
956
|
nextOrObserver, error, completed) {};
|
618
957
|
|
619
958
|
|
959
|
+
/**
|
960
|
+
* Adds an observer for changes to the signed-in user's ID token, which includes
|
961
|
+
* sign-in, sign-out, and token refresh events. This method has the same
|
962
|
+
* behavior as {@link firebase.auth.Auth#onAuthStateChanged} had prior to 4.0.0.
|
963
|
+
*
|
964
|
+
* @example
|
965
|
+
* firebase.auth().onIdTokenChanged(function(user) {
|
966
|
+
* if (user) {
|
967
|
+
* // User is signed in or token was refreshed.
|
968
|
+
* }
|
969
|
+
* });
|
970
|
+
*
|
971
|
+
* @param {!firebase.Observer<firebase.User, firebase.auth.Error>|function(?firebase.User)}
|
972
|
+
* nextOrObserver An observer object or a function triggered on change.
|
973
|
+
* @param {function(!firebase.auth.Error)=} error Optional A function
|
974
|
+
* triggered on auth error.
|
975
|
+
* @param {firebase.CompleteFn=} completed Optional A function triggered when the
|
976
|
+
* observer is removed.
|
977
|
+
* @return {!firebase.Unsubscribe} The unsubscribe function for the observer.
|
978
|
+
*/
|
979
|
+
firebase.auth.Auth.prototype.onIdTokenChanged = function(
|
980
|
+
nextOrObserver, error, completed) {};
|
981
|
+
|
982
|
+
|
620
983
|
/**
|
621
984
|
* Sends a password reset email to the given email address.
|
622
985
|
*
|
@@ -678,7 +1041,7 @@ firebase.auth.Auth.prototype.confirmPasswordReset =
|
|
678
1041
|
* {@link firebase.auth.Auth#fetchProvidersForEmail} and then asking the
|
679
1042
|
* user to sign in using one of the returned providers. Once the user is
|
680
1043
|
* signed in, the original credential can be linked to the user with
|
681
|
-
* {@link firebase.User#
|
1044
|
+
* {@link firebase.User#linkWithCredential}.</dd>
|
682
1045
|
* <dt>auth/invalid-credential</dt>
|
683
1046
|
* <dd>Thrown if the credential is malformed or has expired.</dd>
|
684
1047
|
* <dt>auth/operation-not-allowed</dt>
|
@@ -697,6 +1060,14 @@ firebase.auth.Auth.prototype.confirmPasswordReset =
|
|
697
1060
|
* {@link firebase.auth.EmailAuthProvider#credential} and the password is
|
698
1061
|
* invalid for the given email, or if the account corresponding to the email
|
699
1062
|
* does not have a password set.</dd>
|
1063
|
+
* <dt>auth/invalid-verification-code</dt>
|
1064
|
+
* <dd>Thrown if the credential is a
|
1065
|
+
* {@link firebase.auth.PhoneAuthProvider#credential} and the verification
|
1066
|
+
* code of the credential is not valid.</dd>
|
1067
|
+
* <dt>auth/invalid-verification-id</dt>
|
1068
|
+
* <dd>Thrown if the credential is a
|
1069
|
+
* {@link firebase.auth.PhoneAuthProvider#credential} and the verification
|
1070
|
+
* ID of the credential is not valid.</dd>
|
700
1071
|
* </dl>
|
701
1072
|
*
|
702
1073
|
* @example
|
@@ -721,6 +1092,59 @@ firebase.auth.Auth.prototype.confirmPasswordReset =
|
|
721
1092
|
*/
|
722
1093
|
firebase.auth.Auth.prototype.signInWithCredential = function(credential) {};
|
723
1094
|
|
1095
|
+
/**
|
1096
|
+
* Asynchronously signs in with the given credentials, and returns any available
|
1097
|
+
* additional user information, such as user name.
|
1098
|
+
*
|
1099
|
+
* <h4>Error Codes</h4>
|
1100
|
+
* <dl>
|
1101
|
+
* <dt>auth/account-exists-with-different-credential</dt>
|
1102
|
+
* <dd>Thrown if there already exists an account with the email address
|
1103
|
+
* asserted by the credential. Resolve this by calling
|
1104
|
+
* {@link firebase.auth.Auth#fetchProvidersForEmail} and then asking the
|
1105
|
+
* user to sign in using one of the returned providers. Once the user is
|
1106
|
+
* signed in, the original credential can be linked to the user with
|
1107
|
+
* {@link firebase.User#linkWithCredential}.</dd>
|
1108
|
+
* <dt>auth/invalid-credential</dt>
|
1109
|
+
* <dd>Thrown if the credential is malformed or has expired.</dd>
|
1110
|
+
* <dt>auth/operation-not-allowed</dt>
|
1111
|
+
* <dd>Thrown if the type of account corresponding to the credential
|
1112
|
+
* is not enabled. Enable the account type in the Firebase Console, under
|
1113
|
+
* the Auth tab.</dd>
|
1114
|
+
* <dt>auth/user-disabled</dt>
|
1115
|
+
* <dd>Thrown if the user corresponding to the given credential has been
|
1116
|
+
* disabled.</dd>
|
1117
|
+
* <dt>auth/user-not-found</dt>
|
1118
|
+
* <dd>Thrown if signing in with a credential from
|
1119
|
+
* {@link firebase.auth.EmailAuthProvider#credential} and there is no user
|
1120
|
+
* corresponding to the given email. </dd>
|
1121
|
+
* <dt>auth/wrong-password</dt>
|
1122
|
+
* <dd>Thrown if signing in with a credential from
|
1123
|
+
* {@link firebase.auth.EmailAuthProvider#credential} and the password is
|
1124
|
+
* invalid for the given email, or if the account corresponding to the email
|
1125
|
+
* does not have a password set.</dd>
|
1126
|
+
* <dt>auth/invalid-verification-code</dt>
|
1127
|
+
* <dd>Thrown if the credential is a
|
1128
|
+
* {@link firebase.auth.PhoneAuthProvider#credential} and the verification
|
1129
|
+
* code of the credential is not valid.</dd>
|
1130
|
+
* <dt>auth/invalid-verification-id</dt>
|
1131
|
+
* <dd>Thrown if the credential is a
|
1132
|
+
* {@link firebase.auth.PhoneAuthProvider#credential} and the verification
|
1133
|
+
* ID of the credential is not valid.</dd>
|
1134
|
+
* </dl>
|
1135
|
+
*
|
1136
|
+
* @example
|
1137
|
+
* firebase.auth().signInAndRetrieveDataWithCredential(credential)
|
1138
|
+
* .then(function(userCredential) {
|
1139
|
+
* console.log(userCredential.additionalUserInfo.username);
|
1140
|
+
* });
|
1141
|
+
*
|
1142
|
+
* @param {!firebase.auth.AuthCredential} credential The auth credential.
|
1143
|
+
* @return {!firebase.Promise<!firebase.auth.UserCredential>}
|
1144
|
+
*/
|
1145
|
+
firebase.auth.Auth.prototype.signInAndRetrieveDataWithCredential =
|
1146
|
+
function(credential) {};
|
1147
|
+
|
724
1148
|
|
725
1149
|
/**
|
726
1150
|
* Asynchronously signs in using a custom token.
|
@@ -804,6 +1228,94 @@ firebase.auth.Auth.prototype.signInWithEmailAndPassword =
|
|
804
1228
|
function(email, password) {};
|
805
1229
|
|
806
1230
|
|
1231
|
+
/**
|
1232
|
+
* Asynchronously signs in using a phone number. This method sends a code via
|
1233
|
+
* SMS to the given phone number, and returns a
|
1234
|
+
* {@link firebase.auth.ConfirmationResult}. After the user provides the code
|
1235
|
+
* sent to their phone, call {@link firebase.auth.ConfirmationResult#confirm}
|
1236
|
+
* with the code to sign the user in.
|
1237
|
+
*
|
1238
|
+
* For abuse prevention, this method also requires a
|
1239
|
+
* {@link firebase.auth.ApplicationVerifier}. The Firebase Auth SDK includes
|
1240
|
+
* a reCAPTCHA-based implementation, {@link firebase.auth.RecaptchaVerifier}.
|
1241
|
+
*
|
1242
|
+
* <h4>Error Codes</h4>
|
1243
|
+
* <dl>
|
1244
|
+
* <dt>auth/captcha-check-failed</dt>
|
1245
|
+
* <dd>Thrown if the reCAPTCHA response token was invalid, expired, or if
|
1246
|
+
* this method was called from a non-whitelisted domain.</dd>
|
1247
|
+
* <dt>auth/invalid-phone-number</dt>
|
1248
|
+
* <dd>Thrown if the phone number has an invalid format.</dd>
|
1249
|
+
* <dt>auth/missing-phone-number</dt>
|
1250
|
+
* <dd>Thrown if the phone number is missing.</dd>
|
1251
|
+
* <dt>auth/quota-exceeded</dt>
|
1252
|
+
* <dd>Thrown if the SMS quota for the Firebase project has been exceeded.</dd>
|
1253
|
+
* <dt>auth/user-disabled</dt>
|
1254
|
+
* <dd>Thrown if the user corresponding to the given phone number has been
|
1255
|
+
* disabled.</dd>
|
1256
|
+
* <dt>auth/operation-not-allowed</dt>
|
1257
|
+
* <dd>Thrown if you have not enabled the provider in the Firebase Console. Go
|
1258
|
+
* to the Firebase Console for your project, in the Auth section and the
|
1259
|
+
* <strong>Sign in Method</strong> tab and configure the provider.</dd>
|
1260
|
+
* </dl>
|
1261
|
+
*
|
1262
|
+
* @example
|
1263
|
+
* // 'recaptcha-container' is the ID of an element in the DOM.
|
1264
|
+
* var applicationVerifier = new firebase.auth.RecaptchaVerifier(
|
1265
|
+
* 'recaptcha-container');
|
1266
|
+
* firebase.auth().signInWithPhoneNumber(phoneNumber, applicationVerifier)
|
1267
|
+
* .then(function(confirmationResult) {
|
1268
|
+
* var verificationCode = window.prompt('Please enter the verification ' +
|
1269
|
+
* 'code that was sent to your mobile device.');
|
1270
|
+
* return confirmationResult.confirm(verificationCode);
|
1271
|
+
* })
|
1272
|
+
* .catch(function(error) {
|
1273
|
+
* // Handle Errors here.
|
1274
|
+
* });
|
1275
|
+
*
|
1276
|
+
* @param {string} phoneNumber The user's phone number in E.164 format (e.g.
|
1277
|
+
* +16505550101).
|
1278
|
+
* @param {!firebase.auth.ApplicationVerifier} applicationVerifier
|
1279
|
+
* @return {!firebase.Promise<!firebase.auth.ConfirmationResult>}
|
1280
|
+
*/
|
1281
|
+
firebase.auth.Auth.prototype.signInWithPhoneNumber =
|
1282
|
+
function(phoneNumber, applicationVerifier) {};
|
1283
|
+
|
1284
|
+
|
1285
|
+
/**
|
1286
|
+
* A result from a phone number sign-in, link, or reauthenticate call.
|
1287
|
+
* @interface
|
1288
|
+
*/
|
1289
|
+
firebase.auth.ConfirmationResult;
|
1290
|
+
|
1291
|
+
|
1292
|
+
/**
|
1293
|
+
* The phone number authentication operation's verification ID. This can be used
|
1294
|
+
* along with the verification code to initialize a phone auth credential.
|
1295
|
+
*
|
1296
|
+
* @type {string}
|
1297
|
+
*/
|
1298
|
+
firebase.auth.ConfirmationResult.prototype.verificationId;
|
1299
|
+
|
1300
|
+
|
1301
|
+
/**
|
1302
|
+
* Finishes a phone number sign-in, link, or reauthentication, given the code
|
1303
|
+
* that was sent to the user's mobile device.
|
1304
|
+
*
|
1305
|
+
* <h4>Error Codes</h4>
|
1306
|
+
* <dl>
|
1307
|
+
* <dt>auth/invalid-verification-code</dt>
|
1308
|
+
* <dd>Thrown if the verification code is not valid.</dd>
|
1309
|
+
* <dt>auth/missing-verification-code</dt>
|
1310
|
+
* <dd>Thrown if the verification code is missing.</dd>
|
1311
|
+
* </dl>
|
1312
|
+
* @param {string} verificationCode
|
1313
|
+
* @return {!firebase.Promise<!firebase.auth.UserCredential>}
|
1314
|
+
*/
|
1315
|
+
firebase.auth.ConfirmationResult.prototype.confirm =
|
1316
|
+
function(verificationCode) {};
|
1317
|
+
|
1318
|
+
|
807
1319
|
/**
|
808
1320
|
* Asynchronously signs in as an anonymous user.
|
809
1321
|
*
|
@@ -836,15 +1348,33 @@ firebase.auth.Auth.prototype.signInAnonymously = function() {};
|
|
836
1348
|
|
837
1349
|
|
838
1350
|
/**
|
839
|
-
* A structure containing a User
|
1351
|
+
* A structure containing a User, an AuthCredential, the operationType, and
|
1352
|
+
* any additional user information that was returned from the identity provider.
|
1353
|
+
* operationType could be 'signIn' for a sign-in operation, 'link' for a linking
|
1354
|
+
* operation and 'reauthenticate' for a reauthentication operation.
|
840
1355
|
*
|
841
1356
|
* @typedef {{
|
842
1357
|
* user: ?firebase.User,
|
843
|
-
* credential: ?firebase.auth.AuthCredential
|
1358
|
+
* credential: ?firebase.auth.AuthCredential,
|
1359
|
+
* operationType: (?string|undefined),
|
1360
|
+
* additionalUserInfo: (?firebase.auth.AdditionalUserInfo|undefined)
|
844
1361
|
* }}
|
845
1362
|
*/
|
846
1363
|
firebase.auth.UserCredential;
|
847
1364
|
|
1365
|
+
|
1366
|
+
/**
|
1367
|
+
* A structure containing additional user information from a federated identity
|
1368
|
+
* provider.
|
1369
|
+
* @typedef {{
|
1370
|
+
* providerId: string,
|
1371
|
+
* profile: ?Object,
|
1372
|
+
* username: (?string|undefined)
|
1373
|
+
* }}
|
1374
|
+
*/
|
1375
|
+
firebase.auth.AdditionalUserInfo;
|
1376
|
+
|
1377
|
+
|
848
1378
|
/**
|
849
1379
|
* Signs out the current user.
|
850
1380
|
*
|
@@ -890,8 +1420,8 @@ firebase.auth.Auth.prototype.signOut = function() {};
|
|
890
1420
|
* <strong>Sign in Method</strong> tab and configure the provider.</dd>
|
891
1421
|
* <dt>auth/requires-recent-login</dt>
|
892
1422
|
* <dd>Thrown if the user's last sign-in time does not meet the security
|
893
|
-
* threshold. Use {@link firebase.User#
|
894
|
-
* not apply if the user is anonymous.</dd>
|
1423
|
+
* threshold. Use {@link firebase.User#reauthenticateWithCredential} to
|
1424
|
+
* resolve. This does not apply if the user is anonymous.</dd>
|
895
1425
|
* <dt>auth/too-many-requests</dt>
|
896
1426
|
* <dd>Thrown if requests are blocked from a device due to unusual activity.
|
897
1427
|
* Trying again after some delay would unblock.</dd>
|
@@ -946,6 +1476,7 @@ firebase.auth.AuthProvider = function() {};
|
|
946
1476
|
/** @type {string} */
|
947
1477
|
firebase.auth.AuthProvider.prototype.providerId;
|
948
1478
|
|
1479
|
+
|
949
1480
|
/**
|
950
1481
|
* Facebook auth provider.
|
951
1482
|
*
|
@@ -1001,6 +1532,7 @@ firebase.auth.FacebookAuthProvider.prototype.providerId;
|
|
1001
1532
|
|
1002
1533
|
/**
|
1003
1534
|
* @param {string} scope Facebook OAuth scope.
|
1535
|
+
* @return {!firebase.auth.AuthProvider} The provider instance itself.
|
1004
1536
|
*/
|
1005
1537
|
firebase.auth.FacebookAuthProvider.prototype.addScope = function(scope) {};
|
1006
1538
|
|
@@ -1015,6 +1547,7 @@ firebase.auth.FacebookAuthProvider.prototype.addScope = function(scope) {};
|
|
1015
1547
|
* 'scope', 'response_type' and 'state' are not allowed and will be ignored.
|
1016
1548
|
* @param {!Object} customOAuthParameters The custom OAuth parameters to pass
|
1017
1549
|
* in the OAuth request.
|
1550
|
+
* @return {!firebase.auth.AuthProvider} The provider instance itself.
|
1018
1551
|
*/
|
1019
1552
|
firebase.auth.FacebookAuthProvider.prototype.setCustomParameters =
|
1020
1553
|
function(customOAuthParameters) {};
|
@@ -1107,6 +1640,7 @@ firebase.auth.GithubAuthProvider.prototype.providerId;
|
|
1107
1640
|
|
1108
1641
|
/**
|
1109
1642
|
* @param {string} scope Github OAuth scope.
|
1643
|
+
* @return {!firebase.auth.AuthProvider} The provider instance itself.
|
1110
1644
|
*/
|
1111
1645
|
firebase.auth.GithubAuthProvider.prototype.addScope = function(scope) {};
|
1112
1646
|
|
@@ -1120,6 +1654,7 @@ firebase.auth.GithubAuthProvider.prototype.addScope = function(scope) {};
|
|
1120
1654
|
* 'scope', 'response_type' and 'state' are not allowed and will be ignored.
|
1121
1655
|
* @param {!Object} customOAuthParameters The custom OAuth parameters to pass
|
1122
1656
|
* in the OAuth request.
|
1657
|
+
* @return {!firebase.auth.AuthProvider} The provider instance itself.
|
1123
1658
|
*/
|
1124
1659
|
firebase.auth.GithubAuthProvider.prototype.setCustomParameters =
|
1125
1660
|
function(customOAuthParameters) {};
|
@@ -1187,6 +1722,7 @@ firebase.auth.GoogleAuthProvider.prototype.providerId;
|
|
1187
1722
|
|
1188
1723
|
/**
|
1189
1724
|
* @param {string} scope Google OAuth scope.
|
1725
|
+
* @return {!firebase.auth.AuthProvider} The provider instance itself.
|
1190
1726
|
*/
|
1191
1727
|
firebase.auth.GoogleAuthProvider.prototype.addScope = function(scope) {};
|
1192
1728
|
|
@@ -1202,6 +1738,7 @@ firebase.auth.GoogleAuthProvider.prototype.addScope = function(scope) {};
|
|
1202
1738
|
* 'scope', 'response_type' and 'state' are not allowed and will be ignored.
|
1203
1739
|
* @param {!Object} customOAuthParameters The custom OAuth parameters to pass
|
1204
1740
|
* in the OAuth request.
|
1741
|
+
* @return {!firebase.auth.AuthProvider} The provider instance itself.
|
1205
1742
|
*/
|
1206
1743
|
firebase.auth.GoogleAuthProvider.prototype.setCustomParameters =
|
1207
1744
|
function(customOAuthParameters) {};
|
@@ -1264,6 +1801,7 @@ firebase.auth.TwitterAuthProvider.prototype.providerId;
|
|
1264
1801
|
* 'oauth_token', 'oauth_signature', etc are not allowed and will be ignored.
|
1265
1802
|
* @param {!Object} customOAuthParameters The custom OAuth parameters to pass
|
1266
1803
|
* in the OAuth request.
|
1804
|
+
* @return {!firebase.auth.AuthProvider} The provider instance itself.
|
1267
1805
|
*/
|
1268
1806
|
firebase.auth.TwitterAuthProvider.prototype.setCustomParameters =
|
1269
1807
|
function(customOAuthParameters) {};
|
@@ -1298,3 +1836,113 @@ firebase.auth.EmailAuthProvider.credential = function(email, password) {};
|
|
1298
1836
|
|
1299
1837
|
/** @type {string} */
|
1300
1838
|
firebase.auth.EmailAuthProvider.prototype.providerId;
|
1839
|
+
|
1840
|
+
|
1841
|
+
|
1842
|
+
/**
|
1843
|
+
* Phone number auth provider.
|
1844
|
+
*
|
1845
|
+
* @example
|
1846
|
+
* // 'recaptcha-container' is the ID of an element in the DOM.
|
1847
|
+
* var applicationVerifier = new firebase.auth.RecaptchaVerifier(
|
1848
|
+
* 'recaptcha-container');
|
1849
|
+
* var provider = new firebase.auth.PhoneAuthProvider();
|
1850
|
+
* provider.verifyPhoneNumber('+16505550101', applicationVerifier)
|
1851
|
+
* .then(function(verificationId) {
|
1852
|
+
* var verificationCode = window.prompt('Please enter the verification ' +
|
1853
|
+
* 'code that was sent to your mobile device.');
|
1854
|
+
* return firebase.auth.PhoneAuthProvider.credential(verificationId,
|
1855
|
+
* verificationCode);
|
1856
|
+
* })
|
1857
|
+
* .then(function(phoneCredential) {
|
1858
|
+
* return firebase.auth().signInWithCredential(phoneCredential);
|
1859
|
+
* });
|
1860
|
+
*
|
1861
|
+
* @constructor
|
1862
|
+
* @param {?firebase.auth.Auth=} auth The Firebase Auth instance in which
|
1863
|
+
* sign-ins should occur. Uses the default Auth instance if unspecified.
|
1864
|
+
* @implements {firebase.auth.AuthProvider}
|
1865
|
+
*/
|
1866
|
+
firebase.auth.PhoneAuthProvider = function(auth) {};
|
1867
|
+
|
1868
|
+
/** @type {string} */
|
1869
|
+
firebase.auth.PhoneAuthProvider.PROVIDER_ID;
|
1870
|
+
|
1871
|
+
/**
|
1872
|
+
* Creates a phone auth credential, given the verification ID from
|
1873
|
+
* {@link firebase.auth.PhoneAuthProvider#verifyPhoneNumber} and the code
|
1874
|
+
* that was sent to the user's mobile device.
|
1875
|
+
*
|
1876
|
+
* <h4>Error Codes</h4>
|
1877
|
+
* <dl>
|
1878
|
+
* <dt>auth/missing-verification-code</dt>
|
1879
|
+
* <dd>Thrown if the verification code is missing.</dd>
|
1880
|
+
* <dt>auth/missing-verification-id</dt>
|
1881
|
+
* <dd>Thrown if the verification ID is missing.</dd>
|
1882
|
+
* </dl>
|
1883
|
+
*
|
1884
|
+
* @param {string} verificationId The verification ID returned from
|
1885
|
+
* {@link firebase.auth.PhoneAuthProvider#verifyPhoneNumber}.
|
1886
|
+
* @param {string} verificationCode The verification code sent to the user's
|
1887
|
+
* mobile device.
|
1888
|
+
* @return {!firebase.auth.AuthCredential} The auth provider credential.
|
1889
|
+
*/
|
1890
|
+
firebase.auth.PhoneAuthProvider.credential =
|
1891
|
+
function(verificationId, verificationCode) {};
|
1892
|
+
|
1893
|
+
/** @type {string} */
|
1894
|
+
firebase.auth.PhoneAuthProvider.prototype.providerId;
|
1895
|
+
|
1896
|
+
/**
|
1897
|
+
* Starts a phone number authentication flow by sending a verification code to
|
1898
|
+
* the given phone number. Returns an ID that can be passed to
|
1899
|
+
* {@link firebase.auth.PhoneAuthProvider#credential} to identify this flow.
|
1900
|
+
*
|
1901
|
+
* For abuse prevention, this method also requires a
|
1902
|
+
* {@link firebase.auth.ApplicationVerifier}. The Firebase Auth SDK includes
|
1903
|
+
* a reCAPTCHA-based implementation, {@link firebase.auth.RecaptchaVerifier}.
|
1904
|
+
*
|
1905
|
+
* <h4>Error Codes</h4>
|
1906
|
+
* <dl>
|
1907
|
+
* <dt>auth/captcha-check-failed</dt>
|
1908
|
+
* <dd>Thrown if the reCAPTCHA response token was invalid, expired, or if
|
1909
|
+
* this method was called from a non-whitelisted domain.</dd>
|
1910
|
+
* <dt>auth/invalid-phone-number</dt>
|
1911
|
+
* <dd>Thrown if the phone number has an invalid format.</dd>
|
1912
|
+
* <dt>auth/missing-phone-number</dt>
|
1913
|
+
* <dd>Thrown if the phone number is missing.</dd>
|
1914
|
+
* <dt>auth/quota-exceeded</dt>
|
1915
|
+
* <dd>Thrown if the SMS quota for the Firebase project has been exceeded.</dd>
|
1916
|
+
* <dt>auth/user-disabled</dt>
|
1917
|
+
* <dd>Thrown if the user corresponding to the given phone number has been
|
1918
|
+
* disabled.</dd>
|
1919
|
+
* </dl>
|
1920
|
+
*
|
1921
|
+
* @param {string} phoneNumber The user's phone number in E.164 format (e.g.
|
1922
|
+
* +16505550101).
|
1923
|
+
* @param {!firebase.auth.ApplicationVerifier} applicationVerifier
|
1924
|
+
* @return {!firebase.Promise<string>} A Promise for the verification ID.
|
1925
|
+
*/
|
1926
|
+
firebase.auth.PhoneAuthProvider.prototype.verifyPhoneNumber =
|
1927
|
+
function(phoneNumber, applicationVerifier) {};
|
1928
|
+
|
1929
|
+
|
1930
|
+
/**
|
1931
|
+
* A verifier for domain verification and abuse prevention. Currently, the
|
1932
|
+
* only implementation is {@link firebase.auth.RecaptchaVerifier}.
|
1933
|
+
* @interface
|
1934
|
+
*/
|
1935
|
+
firebase.auth.ApplicationVerifier = function() {};
|
1936
|
+
|
1937
|
+
/**
|
1938
|
+
* Identifies the type of application verifier (e.g. "recaptcha").
|
1939
|
+
* @type {string}
|
1940
|
+
*/
|
1941
|
+
firebase.auth.ApplicationVerifier.prototype.type;
|
1942
|
+
|
1943
|
+
/**
|
1944
|
+
* Executes the verification process.
|
1945
|
+
* @return {!firebase.Promise<string>} A Promise for a token that can be used to
|
1946
|
+
* assert the validity of a request.
|
1947
|
+
*/
|
1948
|
+
firebase.auth.ApplicationVerifier.prototype.verify = function() {};
|