@firebase/auth 1.9.1 → 1.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. package/dist/auth-public.d.ts +28 -1
  2. package/dist/auth.d.ts +40 -2
  3. package/dist/browser-cjs/{index-018c7ebd.js → index-eddc1dc3.js} +211 -15
  4. package/dist/browser-cjs/index-eddc1dc3.js.map +1 -0
  5. package/dist/browser-cjs/index.d.ts +2 -1
  6. package/dist/browser-cjs/index.js +2 -1
  7. package/dist/browser-cjs/index.js.map +1 -1
  8. package/dist/browser-cjs/internal.js +2 -1
  9. package/dist/browser-cjs/internal.js.map +1 -1
  10. package/dist/browser-cjs/src/api/index.d.ts +1 -1
  11. package/dist/browser-cjs/src/core/auth/auth_impl.d.ts +4 -1
  12. package/dist/browser-cjs/src/core/persistence/index.d.ts +2 -1
  13. package/dist/browser-cjs/src/model/auth.d.ts +4 -1
  14. package/dist/browser-cjs/src/model/public_types.d.ts +2 -1
  15. package/dist/browser-cjs/src/platform_browser/persistence/cookie_storage.d.ts +40 -0
  16. package/dist/browser-cjs/src/platform_node/index.d.ts +1 -0
  17. package/dist/cordova/auth-cordova-public.d.ts +26 -1
  18. package/dist/cordova/auth-cordova.d.ts +29 -2
  19. package/dist/cordova/index.d.ts +2 -1
  20. package/dist/cordova/index.js +2 -2
  21. package/dist/cordova/internal.js +147 -3
  22. package/dist/cordova/internal.js.map +1 -1
  23. package/dist/cordova/{popup_redirect-e795474a.js → popup_redirect-5323ec00.js} +66 -15
  24. package/dist/cordova/popup_redirect-5323ec00.js.map +1 -0
  25. package/dist/cordova/src/api/index.d.ts +1 -1
  26. package/dist/cordova/src/core/auth/auth_impl.d.ts +4 -1
  27. package/dist/cordova/src/core/persistence/index.d.ts +2 -1
  28. package/dist/cordova/src/model/auth.d.ts +4 -1
  29. package/dist/cordova/src/model/public_types.d.ts +2 -1
  30. package/dist/cordova/src/platform_browser/persistence/cookie_storage.d.ts +40 -0
  31. package/dist/cordova/src/platform_node/index.d.ts +1 -0
  32. package/dist/esm2017/{index-e84cf44d.js → index-c92d61ad.js} +211 -16
  33. package/dist/esm2017/index-c92d61ad.js.map +1 -0
  34. package/dist/esm2017/index.d.ts +2 -1
  35. package/dist/esm2017/index.js +1 -1
  36. package/dist/esm2017/internal.js +2 -2
  37. package/dist/esm2017/src/api/index.d.ts +1 -1
  38. package/dist/esm2017/src/core/auth/auth_impl.d.ts +4 -1
  39. package/dist/esm2017/src/core/persistence/index.d.ts +2 -1
  40. package/dist/esm2017/src/model/auth.d.ts +4 -1
  41. package/dist/esm2017/src/model/public_types.d.ts +2 -1
  42. package/dist/esm2017/src/platform_browser/persistence/cookie_storage.d.ts +40 -0
  43. package/dist/esm2017/src/platform_node/index.d.ts +1 -0
  44. package/dist/index.d.ts +2 -1
  45. package/dist/index.webworker.js +65 -14
  46. package/dist/index.webworker.js.map +1 -1
  47. package/dist/node/index.d.ts +2 -1
  48. package/dist/node/index.js +2 -1
  49. package/dist/node/index.js.map +1 -1
  50. package/dist/node/internal.js +2 -1
  51. package/dist/node/internal.js.map +1 -1
  52. package/dist/node/src/api/index.d.ts +1 -1
  53. package/dist/node/src/core/auth/auth_impl.d.ts +4 -1
  54. package/dist/node/src/core/persistence/index.d.ts +2 -1
  55. package/dist/node/src/model/auth.d.ts +4 -1
  56. package/dist/node/src/model/public_types.d.ts +2 -1
  57. package/dist/node/src/platform_browser/persistence/cookie_storage.d.ts +40 -0
  58. package/dist/node/src/platform_node/index.d.ts +1 -0
  59. package/dist/node/{totp-06fa6909.js → totp-af329771.js} +68 -15
  60. package/dist/node/totp-af329771.js.map +1 -0
  61. package/dist/node-esm/index.d.ts +2 -1
  62. package/dist/node-esm/index.js +1 -1
  63. package/dist/node-esm/internal.js +2 -2
  64. package/dist/node-esm/internal.js.map +1 -1
  65. package/dist/node-esm/src/api/index.d.ts +1 -1
  66. package/dist/node-esm/src/core/auth/auth_impl.d.ts +4 -1
  67. package/dist/node-esm/src/core/persistence/index.d.ts +2 -1
  68. package/dist/node-esm/src/model/auth.d.ts +4 -1
  69. package/dist/node-esm/src/model/public_types.d.ts +2 -1
  70. package/dist/node-esm/src/platform_browser/persistence/cookie_storage.d.ts +40 -0
  71. package/dist/node-esm/src/platform_node/index.d.ts +1 -0
  72. package/dist/node-esm/{totp-d5ff2369.js → totp-7829abf2.js} +68 -16
  73. package/dist/node-esm/totp-7829abf2.js.map +1 -0
  74. package/dist/rn/{index-ee081591.js → index-e8d5e0fb.js} +66 -15
  75. package/dist/rn/index-e8d5e0fb.js.map +1 -0
  76. package/dist/rn/index.d.ts +2 -1
  77. package/dist/rn/index.js +1 -1
  78. package/dist/rn/internal.js +146 -1
  79. package/dist/rn/internal.js.map +1 -1
  80. package/dist/rn/src/api/index.d.ts +1 -1
  81. package/dist/rn/src/core/auth/auth_impl.d.ts +4 -1
  82. package/dist/rn/src/core/persistence/index.d.ts +2 -1
  83. package/dist/rn/src/model/auth.d.ts +4 -1
  84. package/dist/rn/src/model/public_types.d.ts +2 -1
  85. package/dist/rn/src/platform_browser/persistence/cookie_storage.d.ts +40 -0
  86. package/dist/rn/src/platform_node/index.d.ts +1 -0
  87. package/dist/src/api/index.d.ts +1 -1
  88. package/dist/src/core/auth/auth_impl.d.ts +4 -1
  89. package/dist/src/core/persistence/index.d.ts +2 -1
  90. package/dist/src/model/auth.d.ts +4 -1
  91. package/dist/src/model/public_types.d.ts +2 -1
  92. package/dist/src/platform_browser/persistence/cookie_storage.d.ts +40 -0
  93. package/dist/src/platform_node/index.d.ts +1 -0
  94. package/dist/web-extension-cjs/index.d.ts +2 -1
  95. package/dist/web-extension-cjs/index.js +1 -1
  96. package/dist/web-extension-cjs/internal.js +146 -1
  97. package/dist/web-extension-cjs/internal.js.map +1 -1
  98. package/dist/web-extension-cjs/{register-c2c7670d.js → register-b64ddc5e.js} +66 -15
  99. package/dist/web-extension-cjs/register-b64ddc5e.js.map +1 -0
  100. package/dist/web-extension-cjs/src/api/index.d.ts +1 -1
  101. package/dist/web-extension-cjs/src/core/auth/auth_impl.d.ts +4 -1
  102. package/dist/web-extension-cjs/src/core/persistence/index.d.ts +2 -1
  103. package/dist/web-extension-cjs/src/model/auth.d.ts +4 -1
  104. package/dist/web-extension-cjs/src/model/public_types.d.ts +2 -1
  105. package/dist/web-extension-cjs/src/platform_browser/persistence/cookie_storage.d.ts +40 -0
  106. package/dist/web-extension-cjs/src/platform_node/index.d.ts +1 -0
  107. package/dist/web-extension-esm2017/auth-web-extension-public.d.ts +26 -1
  108. package/dist/web-extension-esm2017/auth-web-extension.d.ts +29 -2
  109. package/dist/web-extension-esm2017/index.d.ts +2 -1
  110. package/dist/web-extension-esm2017/index.js +2 -2
  111. package/dist/web-extension-esm2017/internal.js +147 -3
  112. package/dist/web-extension-esm2017/internal.js.map +1 -1
  113. package/dist/web-extension-esm2017/{register-31c228e4.js → register-00522d81.js} +66 -15
  114. package/dist/web-extension-esm2017/register-00522d81.js.map +1 -0
  115. package/dist/web-extension-esm2017/src/api/index.d.ts +1 -1
  116. package/dist/web-extension-esm2017/src/core/auth/auth_impl.d.ts +4 -1
  117. package/dist/web-extension-esm2017/src/core/persistence/index.d.ts +2 -1
  118. package/dist/web-extension-esm2017/src/model/auth.d.ts +4 -1
  119. package/dist/web-extension-esm2017/src/model/public_types.d.ts +2 -1
  120. package/dist/web-extension-esm2017/src/platform_browser/persistence/cookie_storage.d.ts +40 -0
  121. package/dist/web-extension-esm2017/src/platform_node/index.d.ts +1 -0
  122. package/package.json +3 -2
  123. package/dist/browser-cjs/index-018c7ebd.js.map +0 -1
  124. package/dist/cordova/popup_redirect-e795474a.js.map +0 -1
  125. package/dist/esm2017/index-e84cf44d.js.map +0 -1
  126. package/dist/node/totp-06fa6909.js.map +0 -1
  127. package/dist/node-esm/totp-d5ff2369.js.map +0 -1
  128. package/dist/rn/index-ee081591.js.map +0 -1
  129. package/dist/web-extension-cjs/register-c2c7670d.js.map +0 -1
  130. package/dist/web-extension-esm2017/register-31c228e4.js.map +0 -1
@@ -770,6 +770,14 @@ const SERVER_ERROR_MAP = {
770
770
  * See the License for the specific language governing permissions and
771
771
  * limitations under the License.
772
772
  */
773
+ const CookieAuthProxiedEndpoints = [
774
+ "/v1/accounts:signInWithCustomToken" /* Endpoint.SIGN_IN_WITH_CUSTOM_TOKEN */,
775
+ "/v1/accounts:signInWithEmailLink" /* Endpoint.SIGN_IN_WITH_EMAIL_LINK */,
776
+ "/v1/accounts:signInWithIdp" /* Endpoint.SIGN_IN_WITH_IDP */,
777
+ "/v1/accounts:signInWithPassword" /* Endpoint.SIGN_IN_WITH_PASSWORD */,
778
+ "/v1/accounts:signInWithPhoneNumber" /* Endpoint.SIGN_IN_WITH_PHONE_NUMBER */,
779
+ "/v1/token" /* Endpoint.TOKEN */
780
+ ];
773
781
  const DEFAULT_API_TIMEOUT_MS = new Delay(30000, 60000);
774
782
  function _addTidIfNecessary(auth, request) {
775
783
  if (auth.tenantId && !request.tenantId) {
@@ -806,7 +814,7 @@ async function _performApiRequest(auth, method, path, request, customErrorMap =
806
814
  if (!isCloudflareWorker()) {
807
815
  fetchArgs.referrerPolicy = 'no-referrer';
808
816
  }
809
- return FetchProvider.fetch()(_getFinalTarget(auth, auth.config.apiHost, path, query), fetchArgs);
817
+ return FetchProvider.fetch()(await _getFinalTarget(auth, auth.config.apiHost, path, query), fetchArgs);
810
818
  });
811
819
  }
812
820
  async function _performFetchWithErrorHandling(auth, customErrorMap, fetchFn) {
@@ -871,12 +879,25 @@ async function _performSignInRequest(auth, method, path, request, customErrorMap
871
879
  }
872
880
  return serverResponse;
873
881
  }
874
- function _getFinalTarget(auth, host, path, query) {
882
+ async function _getFinalTarget(auth, host, path, query) {
875
883
  const base = `${host}${path}?${query}`;
876
- if (!auth.config.emulator) {
877
- return `${auth.config.apiScheme}://${base}`;
878
- }
879
- return _emulatorUrl(auth.config, base);
884
+ const authInternal = auth;
885
+ const finalTarget = authInternal.config.emulator
886
+ ? _emulatorUrl(auth.config, base)
887
+ : `${auth.config.apiScheme}://${base}`;
888
+ // Cookie auth works by MiTMing the signIn and token endpoints from the developer's backend,
889
+ // saving the idToken and refreshToken into cookies, and then redacting the refreshToken
890
+ // from the response
891
+ if (CookieAuthProxiedEndpoints.includes(path)) {
892
+ // Persistence manager is async, we need to await it. We can't just wait for auth initialized
893
+ // here since auth initialization calls this function.
894
+ await authInternal._persistenceManagerAvailable;
895
+ if (authInternal._getPersistenceType() === "COOKIE" /* PersistenceType.COOKIE */) {
896
+ const cookiePersistence = authInternal._getPersistence();
897
+ return cookiePersistence._getFinalTarget(finalTarget).toString();
898
+ }
899
+ }
900
+ return finalTarget;
880
901
  }
881
902
  function _parseEnforcementState(enforcementStateStr) {
882
903
  switch (enforcementStateStr) {
@@ -1452,7 +1473,7 @@ async function requestStsToken(auth, refreshToken) {
1452
1473
  'refresh_token': refreshToken
1453
1474
  }).slice(1);
1454
1475
  const { tokenApiHost, apiKey } = auth.config;
1455
- const url = _getFinalTarget(auth, tokenApiHost, "/v1/token" /* Endpoint.TOKEN */, `key=${apiKey}`);
1476
+ const url = await _getFinalTarget(auth, tokenApiHost, "/v1/token" /* Endpoint.TOKEN */, `key=${apiKey}`);
1456
1477
  const headers = await auth._getAdditionalHeaders();
1457
1478
  headers["Content-Type" /* HttpHeader.CONTENT_TYPE */] = 'application/x-www-form-urlencoded';
1458
1479
  return FetchProvider.fetch()(url, {
@@ -1943,7 +1964,17 @@ class PersistenceUserManager {
1943
1964
  }
1944
1965
  async getCurrentUser() {
1945
1966
  const blob = await this.persistence._get(this.fullUserKey);
1946
- return blob ? UserImpl._fromJSON(this.auth, blob) : null;
1967
+ if (!blob) {
1968
+ return null;
1969
+ }
1970
+ if (typeof blob === 'string') {
1971
+ const response = await getAccountInfo(this.auth, { idToken: blob }).catch(() => undefined);
1972
+ if (!response) {
1973
+ return null;
1974
+ }
1975
+ return UserImpl._fromGetAccountInfoResponse(this.auth, response, blob);
1976
+ }
1977
+ return UserImpl._fromJSON(this.auth, blob);
1947
1978
  }
1948
1979
  removeCurrentUser() {
1949
1980
  return this.persistence._remove(this.fullUserKey);
@@ -1990,7 +2021,19 @@ class PersistenceUserManager {
1990
2021
  try {
1991
2022
  const blob = await persistence._get(key);
1992
2023
  if (blob) {
1993
- const user = UserImpl._fromJSON(auth, blob); // throws for unparsable blob (wrong format)
2024
+ let user;
2025
+ if (typeof blob === 'string') {
2026
+ const response = await getAccountInfo(auth, {
2027
+ idToken: blob
2028
+ }).catch(() => undefined);
2029
+ if (!response) {
2030
+ break;
2031
+ }
2032
+ user = await UserImpl._fromGetAccountInfoResponse(auth, response, blob);
2033
+ }
2034
+ else {
2035
+ user = UserImpl._fromJSON(auth, blob); // throws for unparsable blob (wrong format)
2036
+ }
1994
2037
  if (persistence !== selectedPersistence) {
1995
2038
  userToMigrate = user;
1996
2039
  }
@@ -2488,6 +2531,7 @@ class AuthImpl {
2488
2531
  this._tenantRecaptchaConfigs = {};
2489
2532
  this._projectPasswordPolicy = null;
2490
2533
  this._tenantPasswordPolicies = {};
2534
+ this._resolvePersistenceManagerAvailable = undefined;
2491
2535
  // Tracks the last notified UID for state change listeners to prevent
2492
2536
  // repeated calls to the callbacks. Undefined means it's never been
2493
2537
  // called, whereas null means it's been called with a signed out user
@@ -2498,6 +2542,9 @@ class AuthImpl {
2498
2542
  this.frameworks = [];
2499
2543
  this.name = app.name;
2500
2544
  this.clientVersion = config.sdkClientVersion;
2545
+ // TODO(jamesdaniels) explore less hacky way to do this, cookie authentication needs
2546
+ // persistenceMananger to be available. see _getFinalTarget for more context
2547
+ this._persistenceManagerAvailable = new Promise(resolve => (this._resolvePersistenceManagerAvailable = resolve));
2501
2548
  }
2502
2549
  _initializeWithPersistence(persistenceHierarchy, popupRedirectResolver) {
2503
2550
  if (popupRedirectResolver) {
@@ -2506,17 +2553,18 @@ class AuthImpl {
2506
2553
  // Have to check for app deletion throughout initialization (after each
2507
2554
  // promise resolution)
2508
2555
  this._initializationPromise = this.queue(async () => {
2509
- var _a, _b;
2556
+ var _a, _b, _c;
2510
2557
  if (this._deleted) {
2511
2558
  return;
2512
2559
  }
2513
2560
  this.persistenceManager = await PersistenceUserManager.create(this, persistenceHierarchy);
2561
+ (_a = this._resolvePersistenceManagerAvailable) === null || _a === void 0 ? void 0 : _a.call(this);
2514
2562
  if (this._deleted) {
2515
2563
  return;
2516
2564
  }
2517
2565
  // Initialize the resolver early if necessary (only applicable to web:
2518
2566
  // this will cause the iframe to load immediately in certain cases)
2519
- if ((_a = this._popupRedirectResolver) === null || _a === void 0 ? void 0 : _a._shouldInitProactively) {
2567
+ if ((_b = this._popupRedirectResolver) === null || _b === void 0 ? void 0 : _b._shouldInitProactively) {
2520
2568
  // If this fails, don't halt auth loading
2521
2569
  try {
2522
2570
  await this._popupRedirectResolver._initialize(this);
@@ -2526,7 +2574,7 @@ class AuthImpl {
2526
2574
  }
2527
2575
  }
2528
2576
  await this.initializeCurrentUser(popupRedirectResolver);
2529
- this.lastNotifiedUid = ((_b = this.currentUser) === null || _b === void 0 ? void 0 : _b.uid) || null;
2577
+ this.lastNotifiedUid = ((_c = this.currentUser) === null || _c === void 0 ? void 0 : _c.uid) || null;
2530
2578
  if (this._deleted) {
2531
2579
  return;
2532
2580
  }
@@ -2780,9 +2828,12 @@ class AuthImpl {
2780
2828
  this._tenantPasswordPolicies[this.tenantId] = passwordPolicy;
2781
2829
  }
2782
2830
  }
2783
- _getPersistence() {
2831
+ _getPersistenceType() {
2784
2832
  return this.assertedPersistence.persistence.type;
2785
2833
  }
2834
+ _getPersistence() {
2835
+ return this.assertedPersistence.persistence;
2836
+ }
2786
2837
  _updateErrorMap(errorMap) {
2787
2838
  this._errorFactory = new ErrorFactory('auth', 'Firebase', errorMap());
2788
2839
  }
@@ -8025,7 +8076,7 @@ function _isEmptyString(input) {
8025
8076
  }
8026
8077
 
8027
8078
  var name = "@firebase/auth";
8028
- var version = "1.9.1";
8079
+ var version = "1.10.0";
8029
8080
 
8030
8081
  /**
8031
8082
  * @license
@@ -8172,4 +8223,4 @@ function registerAuth(clientPlatform) {
8172
8223
  }
8173
8224
 
8174
8225
  export { updateEmail as $, AUTH_ERROR_CODES_MAP_DO_NOT_USE_INTERNALLY as A, linkWithCredential as B, reauthenticateWithCredential as C, signInWithCustomToken as D, EmailAuthCredential as E, FacebookAuthProvider as F, GoogleAuthProvider as G, sendPasswordResetEmail as H, confirmPasswordReset as I, applyActionCode as J, checkActionCode as K, verifyPasswordResetCode as L, createUserWithEmailAndPassword as M, signInWithEmailAndPassword as N, OAuthCredential as O, PhoneAuthCredential as P, sendSignInLinkToEmail as Q, isSignInWithEmailLink as R, SAMLAuthProvider as S, TotpMultiFactorGenerator as T, signInWithEmailLink as U, fetchSignInMethodsForEmail as V, sendEmailVerification as W, verifyBeforeUpdateEmail as X, ActionCodeURL as Y, parseActionCodeURL as Z, updateProfile as _, indexedDBLocalPersistence as a, FetchProvider as a$, updatePassword as a0, getIdToken as a1, getIdTokenResult as a2, unlink as a3, getAdditionalUserInfo as a4, reload as a5, getMultiFactorResolver as a6, multiFactor as a7, STORAGE_AVAILABLE_KEY as a8, _isMobileBrowser as a9, signInWithIdp as aA, _fail as aB, debugAssert as aC, _assertInstanceOf as aD, _generateEventId as aE, FederatedAuthProvider as aF, _persistenceKeyName as aG, _performApiRequest as aH, _getCurrentUrl as aI, _gapiScriptUrl as aJ, _emulatorUrl as aK, _isChromeIOS as aL, _isFirefox as aM, _isIOSStandalone as aN, BaseOAuthProvider as aO, _setWindowLocation as aP, _isSafari as aQ, _isIOS as aR, MultiFactorAssertionImpl as aS, finalizeEnrollPhoneMfa as aT, finalizeSignInPhoneMfa as aU, _setExternalJSProvider as aV, _isAndroid as aW, _isIOS7Or8 as aX, UserImpl as aY, AuthImpl as aZ, _getClientVersion as a_, _isIE10 as aa, Delay as ab, _window as ac, _assert as ad, isV2 as ae, _createError as af, _recaptchaV2ScriptUrl as ag, _loadJS as ah, MockReCaptcha as ai, _generateCallbackName as aj, _castAuth as ak, _isHttpOrHttps as al, _isWorker as am, getRecaptchaParams as an, _serverAppCurrentUserOperationNotSupportedError as ao, _assertLinkedStatus as ap, _initializeRecaptchaConfig as aq, FAKE_TOKEN as ar, startEnrollPhoneMfa as as, handleRecaptchaFlow as at, startSignInPhoneMfa as au, sendPhoneVerificationCode as av, _link as aw, _getInstance as ax, _signInWithCredential as ay, _reauthenticate as az, TotpSecret as b, SAMLAuthCredential as b0, connectAuthEmulator as c, initializeRecaptchaConfig as d, beforeAuthStateChanged as e, onAuthStateChanged as f, updateCurrentUser as g, signOut as h, initializeAuth as i, revokeAccessToken as j, deleteUser as k, debugErrorMap as l, AuthCredential as m, inMemoryPersistence as n, onIdTokenChanged as o, prodErrorMap as p, EmailAuthProvider as q, registerAuth as r, setPersistence as s, GithubAuthProvider as t, useDeviceLanguage as u, validatePassword as v, OAuthProvider as w, TwitterAuthProvider as x, signInAnonymously as y, signInWithCredential as z };
8175
- //# sourceMappingURL=register-31c228e4.js.map
8226
+ //# sourceMappingURL=register-00522d81.js.map