@firebase/auth 1.9.1 → 1.10.0-auth-redirect-credentials.82faa0828

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-d5da52c1.js} +215 -16
  4. package/dist/browser-cjs/index-d5da52c1.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-79d5de9a.js} +71 -17
  24. package/dist/cordova/popup_redirect-79d5de9a.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-fc6bc882.js} +216 -18
  33. package/dist/esm2017/index-fc6bc882.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 +70 -16
  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-88cb8aaf.js} +72 -16
  60. package/dist/node/totp-88cb8aaf.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-91f8ecc7.js} +73 -18
  73. package/dist/node-esm/totp-91f8ecc7.js.map +1 -0
  74. package/dist/rn/{index-ee081591.js → index-be8638d6.js} +70 -16
  75. package/dist/rn/index-be8638d6.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-878ee631.js} +70 -16
  99. package/dist/web-extension-cjs/register-878ee631.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-59e2f235.js} +71 -17
  114. package/dist/web-extension-esm2017/register-59e2f235.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 +8 -7
  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
@@ -772,6 +772,14 @@ const SERVER_ERROR_MAP = {
772
772
  * See the License for the specific language governing permissions and
773
773
  * limitations under the License.
774
774
  */
775
+ const CookieAuthProxiedEndpoints = [
776
+ "/v1/accounts:signInWithCustomToken" /* Endpoint.SIGN_IN_WITH_CUSTOM_TOKEN */,
777
+ "/v1/accounts:signInWithEmailLink" /* Endpoint.SIGN_IN_WITH_EMAIL_LINK */,
778
+ "/v1/accounts:signInWithIdp" /* Endpoint.SIGN_IN_WITH_IDP */,
779
+ "/v1/accounts:signInWithPassword" /* Endpoint.SIGN_IN_WITH_PASSWORD */,
780
+ "/v1/accounts:signInWithPhoneNumber" /* Endpoint.SIGN_IN_WITH_PHONE_NUMBER */,
781
+ "/v1/token" /* Endpoint.TOKEN */
782
+ ];
775
783
  const DEFAULT_API_TIMEOUT_MS = new Delay(30000, 60000);
776
784
  function _addTidIfNecessary(auth, request) {
777
785
  if (auth.tenantId && !request.tenantId) {
@@ -808,7 +816,10 @@ async function _performApiRequest(auth, method, path, request, customErrorMap =
808
816
  if (!util.isCloudflareWorker()) {
809
817
  fetchArgs.referrerPolicy = 'no-referrer';
810
818
  }
811
- return FetchProvider.fetch()(_getFinalTarget(auth, auth.config.apiHost, path, query), fetchArgs);
819
+ if (auth.emulatorConfig && util.isCloudWorkstation(auth.emulatorConfig.host)) {
820
+ fetchArgs.credentials = 'include';
821
+ }
822
+ return FetchProvider.fetch()(await _getFinalTarget(auth, auth.config.apiHost, path, query), fetchArgs);
812
823
  });
813
824
  }
814
825
  async function _performFetchWithErrorHandling(auth, customErrorMap, fetchFn) {
@@ -873,12 +884,25 @@ async function _performSignInRequest(auth, method, path, request, customErrorMap
873
884
  }
874
885
  return serverResponse;
875
886
  }
876
- function _getFinalTarget(auth, host, path, query) {
887
+ async function _getFinalTarget(auth, host, path, query) {
877
888
  const base = `${host}${path}?${query}`;
878
- if (!auth.config.emulator) {
879
- return `${auth.config.apiScheme}://${base}`;
880
- }
881
- return _emulatorUrl(auth.config, base);
889
+ const authInternal = auth;
890
+ const finalTarget = authInternal.config.emulator
891
+ ? _emulatorUrl(auth.config, base)
892
+ : `${auth.config.apiScheme}://${base}`;
893
+ // Cookie auth works by MiTMing the signIn and token endpoints from the developer's backend,
894
+ // saving the idToken and refreshToken into cookies, and then redacting the refreshToken
895
+ // from the response
896
+ if (CookieAuthProxiedEndpoints.includes(path)) {
897
+ // Persistence manager is async, we need to await it. We can't just wait for auth initialized
898
+ // here since auth initialization calls this function.
899
+ await authInternal._persistenceManagerAvailable;
900
+ if (authInternal._getPersistenceType() === "COOKIE" /* PersistenceType.COOKIE */) {
901
+ const cookiePersistence = authInternal._getPersistence();
902
+ return cookiePersistence._getFinalTarget(finalTarget).toString();
903
+ }
904
+ }
905
+ return finalTarget;
882
906
  }
883
907
  function _parseEnforcementState(enforcementStateStr) {
884
908
  switch (enforcementStateStr) {
@@ -1454,7 +1478,7 @@ async function requestStsToken(auth, refreshToken) {
1454
1478
  'refresh_token': refreshToken
1455
1479
  }).slice(1);
1456
1480
  const { tokenApiHost, apiKey } = auth.config;
1457
- const url = _getFinalTarget(auth, tokenApiHost, "/v1/token" /* Endpoint.TOKEN */, `key=${apiKey}`);
1481
+ const url = await _getFinalTarget(auth, tokenApiHost, "/v1/token" /* Endpoint.TOKEN */, `key=${apiKey}`);
1458
1482
  const headers = await auth._getAdditionalHeaders();
1459
1483
  headers["Content-Type" /* HttpHeader.CONTENT_TYPE */] = 'application/x-www-form-urlencoded';
1460
1484
  return FetchProvider.fetch()(url, {
@@ -1945,7 +1969,17 @@ class PersistenceUserManager {
1945
1969
  }
1946
1970
  async getCurrentUser() {
1947
1971
  const blob = await this.persistence._get(this.fullUserKey);
1948
- return blob ? UserImpl._fromJSON(this.auth, blob) : null;
1972
+ if (!blob) {
1973
+ return null;
1974
+ }
1975
+ if (typeof blob === 'string') {
1976
+ const response = await getAccountInfo(this.auth, { idToken: blob }).catch(() => undefined);
1977
+ if (!response) {
1978
+ return null;
1979
+ }
1980
+ return UserImpl._fromGetAccountInfoResponse(this.auth, response, blob);
1981
+ }
1982
+ return UserImpl._fromJSON(this.auth, blob);
1949
1983
  }
1950
1984
  removeCurrentUser() {
1951
1985
  return this.persistence._remove(this.fullUserKey);
@@ -1992,7 +2026,19 @@ class PersistenceUserManager {
1992
2026
  try {
1993
2027
  const blob = await persistence._get(key);
1994
2028
  if (blob) {
1995
- const user = UserImpl._fromJSON(auth, blob); // throws for unparsable blob (wrong format)
2029
+ let user;
2030
+ if (typeof blob === 'string') {
2031
+ const response = await getAccountInfo(auth, {
2032
+ idToken: blob
2033
+ }).catch(() => undefined);
2034
+ if (!response) {
2035
+ break;
2036
+ }
2037
+ user = await UserImpl._fromGetAccountInfoResponse(auth, response, blob);
2038
+ }
2039
+ else {
2040
+ user = UserImpl._fromJSON(auth, blob); // throws for unparsable blob (wrong format)
2041
+ }
1996
2042
  if (persistence !== selectedPersistence) {
1997
2043
  userToMigrate = user;
1998
2044
  }
@@ -2490,6 +2536,7 @@ class AuthImpl {
2490
2536
  this._tenantRecaptchaConfigs = {};
2491
2537
  this._projectPasswordPolicy = null;
2492
2538
  this._tenantPasswordPolicies = {};
2539
+ this._resolvePersistenceManagerAvailable = undefined;
2493
2540
  // Tracks the last notified UID for state change listeners to prevent
2494
2541
  // repeated calls to the callbacks. Undefined means it's never been
2495
2542
  // called, whereas null means it's been called with a signed out user
@@ -2500,6 +2547,9 @@ class AuthImpl {
2500
2547
  this.frameworks = [];
2501
2548
  this.name = app.name;
2502
2549
  this.clientVersion = config.sdkClientVersion;
2550
+ // TODO(jamesdaniels) explore less hacky way to do this, cookie authentication needs
2551
+ // persistenceMananger to be available. see _getFinalTarget for more context
2552
+ this._persistenceManagerAvailable = new Promise(resolve => (this._resolvePersistenceManagerAvailable = resolve));
2503
2553
  }
2504
2554
  _initializeWithPersistence(persistenceHierarchy, popupRedirectResolver) {
2505
2555
  if (popupRedirectResolver) {
@@ -2508,17 +2558,18 @@ class AuthImpl {
2508
2558
  // Have to check for app deletion throughout initialization (after each
2509
2559
  // promise resolution)
2510
2560
  this._initializationPromise = this.queue(async () => {
2511
- var _a, _b;
2561
+ var _a, _b, _c;
2512
2562
  if (this._deleted) {
2513
2563
  return;
2514
2564
  }
2515
2565
  this.persistenceManager = await PersistenceUserManager.create(this, persistenceHierarchy);
2566
+ (_a = this._resolvePersistenceManagerAvailable) === null || _a === void 0 ? void 0 : _a.call(this);
2516
2567
  if (this._deleted) {
2517
2568
  return;
2518
2569
  }
2519
2570
  // Initialize the resolver early if necessary (only applicable to web:
2520
2571
  // this will cause the iframe to load immediately in certain cases)
2521
- if ((_a = this._popupRedirectResolver) === null || _a === void 0 ? void 0 : _a._shouldInitProactively) {
2572
+ if ((_b = this._popupRedirectResolver) === null || _b === void 0 ? void 0 : _b._shouldInitProactively) {
2522
2573
  // If this fails, don't halt auth loading
2523
2574
  try {
2524
2575
  await this._popupRedirectResolver._initialize(this);
@@ -2528,7 +2579,7 @@ class AuthImpl {
2528
2579
  }
2529
2580
  }
2530
2581
  await this.initializeCurrentUser(popupRedirectResolver);
2531
- this.lastNotifiedUid = ((_b = this.currentUser) === null || _b === void 0 ? void 0 : _b.uid) || null;
2582
+ this.lastNotifiedUid = ((_c = this.currentUser) === null || _c === void 0 ? void 0 : _c.uid) || null;
2532
2583
  if (this._deleted) {
2533
2584
  return;
2534
2585
  }
@@ -2782,9 +2833,12 @@ class AuthImpl {
2782
2833
  this._tenantPasswordPolicies[this.tenantId] = passwordPolicy;
2783
2834
  }
2784
2835
  }
2785
- _getPersistence() {
2836
+ _getPersistenceType() {
2786
2837
  return this.assertedPersistence.persistence.type;
2787
2838
  }
2839
+ _getPersistence() {
2840
+ return this.assertedPersistence.persistence;
2841
+ }
2788
2842
  _updateErrorMap(errorMap) {
2789
2843
  this._errorFactory = new util.ErrorFactory('auth', 'Firebase', errorMap());
2790
2844
  }
@@ -4349,7 +4403,7 @@ class ActionCodeURL {
4349
4403
  this.operation = operation;
4350
4404
  this.code = code;
4351
4405
  this.continueUrl = (_d = searchParams["continueUrl" /* QueryField.CONTINUE_URL */]) !== null && _d !== void 0 ? _d : null;
4352
- this.languageCode = (_e = searchParams["languageCode" /* QueryField.LANGUAGE_CODE */]) !== null && _e !== void 0 ? _e : null;
4406
+ this.languageCode = (_e = searchParams["lang" /* QueryField.LANGUAGE_CODE */]) !== null && _e !== void 0 ? _e : null;
4353
4407
  this.tenantId = (_f = searchParams["tenantId" /* QueryField.TENANT_ID */]) !== null && _f !== void 0 ? _f : null;
4354
4408
  }
4355
4409
  /**
@@ -7135,7 +7189,7 @@ function multiFactor(user) {
7135
7189
  }
7136
7190
 
7137
7191
  var name = "@firebase/auth";
7138
- var version = "1.9.1";
7192
+ var version = "1.10.0-auth-redirect-credentials.82faa0828";
7139
7193
 
7140
7194
  /**
7141
7195
  * @license
@@ -8595,4 +8649,4 @@ exports.useDeviceLanguage = useDeviceLanguage;
8595
8649
  exports.validatePassword = validatePassword;
8596
8650
  exports.verifyBeforeUpdateEmail = verifyBeforeUpdateEmail;
8597
8651
  exports.verifyPasswordResetCode = verifyPasswordResetCode;
8598
- //# sourceMappingURL=index-ee081591.js.map
8652
+ //# sourceMappingURL=index-be8638d6.js.map