@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
@@ -23,6 +23,7 @@ export * from './src/model/public_types';
23
23
  export { FactorId, ProviderId, SignInMethod, OperationType, ActionCodeOperation } from './src/model/enum_maps';
24
24
  export * from './src';
25
25
  import { browserLocalPersistence } from './src/platform_browser/persistence/local_storage';
26
+ import { browserCookiePersistence } from './src/platform_browser/persistence/cookie_storage';
26
27
  import { browserSessionPersistence } from './src/platform_browser/persistence/session_storage';
27
28
  import { indexedDBLocalPersistence } from './src/platform_browser/persistence/indexed_db';
28
29
  import { PhoneAuthProvider } from './src/platform_browser/providers/phone';
@@ -34,4 +35,4 @@ import { browserPopupRedirectResolver } from './src/platform_browser/popup_redir
34
35
  import { PhoneMultiFactorGenerator } from './src/platform_browser/mfa/assertions/phone';
35
36
  import { TotpMultiFactorGenerator, TotpSecret } from './src/mfa/assertions/totp';
36
37
  import { getAuth } from './src/platform_browser';
37
- export { browserLocalPersistence, browserSessionPersistence, indexedDBLocalPersistence, PhoneAuthProvider, signInWithPhoneNumber, linkWithPhoneNumber, reauthenticateWithPhoneNumber, updatePhoneNumber, signInWithPopup, linkWithPopup, reauthenticateWithPopup, signInWithRedirect, linkWithRedirect, reauthenticateWithRedirect, getRedirectResult, RecaptchaVerifier, browserPopupRedirectResolver, PhoneMultiFactorGenerator, TotpMultiFactorGenerator, TotpSecret, getAuth };
38
+ export { browserLocalPersistence, browserCookiePersistence, browserSessionPersistence, indexedDBLocalPersistence, PhoneAuthProvider, signInWithPhoneNumber, linkWithPhoneNumber, reauthenticateWithPhoneNumber, updatePhoneNumber, signInWithPopup, linkWithPopup, reauthenticateWithPopup, signInWithRedirect, linkWithRedirect, reauthenticateWithRedirect, getRedirectResult, RecaptchaVerifier, browserPopupRedirectResolver, PhoneMultiFactorGenerator, TotpMultiFactorGenerator, TotpSecret, getAuth };
package/dist/rn/index.js CHANGED
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var app = require('@firebase/app');
6
- var index = require('./index-ee081591.js');
6
+ var index = require('./index-e8d5e0fb.js');
7
7
  require('@firebase/util');
8
8
  require('tslib');
9
9
  require('@firebase/component');
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var index = require('./index-ee081591.js');
5
+ var index = require('./index-e8d5e0fb.js');
6
6
  var app = require('@firebase/app');
7
7
  var util = require('@firebase/util');
8
8
  require('tslib');
@@ -245,6 +245,150 @@ BrowserLocalPersistence.type = 'LOCAL';
245
245
  */
246
246
  const browserLocalPersistence = BrowserLocalPersistence;
247
247
 
248
+ /**
249
+ * @license
250
+ * Copyright 2025 Google LLC
251
+ *
252
+ * Licensed under the Apache License, Version 2.0 (the "License");
253
+ * you may not use this file except in compliance with the License.
254
+ * You may obtain a copy of the License at
255
+ *
256
+ * http://www.apache.org/licenses/LICENSE-2.0
257
+ *
258
+ * Unless required by applicable law or agreed to in writing, software
259
+ * distributed under the License is distributed on an "AS IS" BASIS,
260
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
261
+ * See the License for the specific language governing permissions and
262
+ * limitations under the License.
263
+ */
264
+ const POLLING_INTERVAL_MS = 1000;
265
+ // Pull a cookie value from document.cookie
266
+ function getDocumentCookie(name) {
267
+ var _a, _b;
268
+ const escapedName = name.replace(/[\\^$.*+?()[\]{}|]/g, '\\$&');
269
+ const matcher = RegExp(`${escapedName}=([^;]+)`);
270
+ return (_b = (_a = document.cookie.match(matcher)) === null || _a === void 0 ? void 0 : _a[1]) !== null && _b !== void 0 ? _b : null;
271
+ }
272
+ // Produce a sanitized cookie name from the persistence key
273
+ function getCookieName(key) {
274
+ // __HOST- doesn't work in localhost https://issues.chromium.org/issues/40196122 but it has
275
+ // desirable security properties, so lets use a different cookie name while in dev-mode.
276
+ // Already checked isSecureContext in _isAvailable, so if it's http we're hitting local.
277
+ const isDevMode = window.location.protocol === 'http:';
278
+ return `${isDevMode ? '__dev_' : '__HOST-'}FIREBASE_${key.split(':')[3]}`;
279
+ }
280
+ class CookiePersistence {
281
+ constructor() {
282
+ this.type = "COOKIE" /* PersistenceType.COOKIE */;
283
+ this.listenerUnsubscribes = new Map();
284
+ }
285
+ // used to get the URL to the backend to proxy to
286
+ _getFinalTarget(originalUrl) {
287
+ if (typeof window === undefined) {
288
+ return originalUrl;
289
+ }
290
+ const url = new URL(`${window.location.origin}/__cookies__`);
291
+ url.searchParams.set('finalTarget', originalUrl);
292
+ return url;
293
+ }
294
+ // To be a usable persistence method in a chain browserCookiePersistence ensures that
295
+ // prerequisites have been met, namely that we're in a secureContext, navigator and document are
296
+ // available and cookies are enabled. Not all UAs support these method, so fallback accordingly.
297
+ async _isAvailable() {
298
+ var _a;
299
+ if (typeof isSecureContext === 'boolean' && !isSecureContext) {
300
+ return false;
301
+ }
302
+ if (typeof navigator === 'undefined' || typeof document === 'undefined') {
303
+ return false;
304
+ }
305
+ return (_a = navigator.cookieEnabled) !== null && _a !== void 0 ? _a : true;
306
+ }
307
+ // Set should be a noop as we expect middleware to handle this
308
+ async _set(_key, _value) {
309
+ return;
310
+ }
311
+ // Attempt to get the cookie from cookieStore, fallback to document.cookie
312
+ async _get(key) {
313
+ if (!this._isAvailable()) {
314
+ return null;
315
+ }
316
+ const name = getCookieName(key);
317
+ if (window.cookieStore) {
318
+ const cookie = await window.cookieStore.get(name);
319
+ return cookie === null || cookie === void 0 ? void 0 : cookie.value;
320
+ }
321
+ return getDocumentCookie(name);
322
+ }
323
+ // Log out by overriding the idToken with a sentinel value of ""
324
+ async _remove(key) {
325
+ if (!this._isAvailable()) {
326
+ return;
327
+ }
328
+ // To make sure we don't hit signout over and over again, only do this operation if we need to
329
+ // with the logout sentinel value of "" this can cause race conditions. Unnecessary set-cookie
330
+ // headers will reduce CDN hit rates too.
331
+ const existingValue = await this._get(key);
332
+ if (!existingValue) {
333
+ return;
334
+ }
335
+ const name = getCookieName(key);
336
+ document.cookie = `${name}=;Max-Age=34560000;Partitioned;Secure;SameSite=Strict;Path=/;Priority=High`;
337
+ await fetch(`/__cookies__`, { method: 'DELETE' }).catch(() => undefined);
338
+ }
339
+ // Listen for cookie changes, both cookieStore and fallback to polling document.cookie
340
+ _addListener(key, listener) {
341
+ if (!this._isAvailable()) {
342
+ return;
343
+ }
344
+ const name = getCookieName(key);
345
+ if (window.cookieStore) {
346
+ const cb = ((event) => {
347
+ const changedCookie = event.changed.find(change => change.name === name);
348
+ if (changedCookie) {
349
+ listener(changedCookie.value);
350
+ }
351
+ const deletedCookie = event.deleted.find(change => change.name === name);
352
+ if (deletedCookie) {
353
+ listener(null);
354
+ }
355
+ });
356
+ const unsubscribe = () => window.cookieStore.removeEventListener('change', cb);
357
+ this.listenerUnsubscribes.set(listener, unsubscribe);
358
+ return window.cookieStore.addEventListener('change', cb);
359
+ }
360
+ let lastValue = getDocumentCookie(name);
361
+ const interval = setInterval(() => {
362
+ const currentValue = getDocumentCookie(name);
363
+ if (currentValue !== lastValue) {
364
+ listener(currentValue);
365
+ lastValue = currentValue;
366
+ }
367
+ }, POLLING_INTERVAL_MS);
368
+ const unsubscribe = () => clearInterval(interval);
369
+ this.listenerUnsubscribes.set(listener, unsubscribe);
370
+ }
371
+ _removeListener(_key, listener) {
372
+ const unsubscribe = this.listenerUnsubscribes.get(listener);
373
+ if (!unsubscribe) {
374
+ return;
375
+ }
376
+ unsubscribe();
377
+ this.listenerUnsubscribes.delete(listener);
378
+ }
379
+ }
380
+ CookiePersistence.type = 'COOKIE';
381
+ /**
382
+ * An implementation of {@link Persistence} of type `COOKIE`, for use on the client side in
383
+ * applications leveraging hybrid rendering and middleware.
384
+ *
385
+ * @remarks This persistence method requires companion middleware to function, such as that provided
386
+ * by {@link https://firebaseopensource.com/projects/firebaseextended/reactfire/ | ReactFire} for
387
+ * NextJS.
388
+ * @beta
389
+ */
390
+ const browserCookiePersistence = CookiePersistence;
391
+
248
392
  /**
249
393
  * @license
250
394
  * Copyright 2020 Google LLC
@@ -3115,6 +3259,7 @@ exports._generateEventId = _generateEventId;
3115
3259
  exports._getRedirectResult = _getRedirectResult;
3116
3260
  exports._overrideRedirectResult = _overrideRedirectResult;
3117
3261
  exports.addFrameworkForLogging = addFrameworkForLogging;
3262
+ exports.browserCookiePersistence = browserCookiePersistence;
3118
3263
  exports.browserLocalPersistence = browserLocalPersistence;
3119
3264
  exports.browserPopupRedirectResolver = browserPopupRedirectResolver;
3120
3265
  exports.browserSessionPersistence = browserSessionPersistence;