@angular/fire 20.0.0 → 20.0.1

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.
@@ -175,9 +175,9 @@ const ɵzoneWrap = (it, blockUntilFirst, logLevel) => {
175
175
  else if (ret instanceof Promise) {
176
176
  // eslint-disable-next-line @typescript-eslint/no-misused-promises
177
177
  return run(() => {
178
- pendingTasks.run(() => ret);
178
+ const removeTask = pendingTasks.add();
179
179
  return new Promise((resolve, reject) => {
180
- ret.then((it) => runInInjectionContext(injector, () => run(() => resolve(it))), (reason) => runInInjectionContext(injector, () => run(() => reject(reason))));
180
+ ret.then((it) => runInInjectionContext(injector, () => run(() => resolve(it))), (reason) => runInInjectionContext(injector, () => run(() => reject(reason)))).finally(removeTask);
181
181
  });
182
182
  });
183
183
  }
@@ -1 +1 @@
1
- {"version":3,"file":"angular-fire.mjs","sources":["../../../src/core.ts","../../../src/zones.ts","../../../src/angular-fire.ts"],"sourcesContent":["import { Version } from '@angular/core';\nimport { ComponentContainer } from '@firebase/component';\nimport { FirebaseApp, getApps } from 'firebase/app';\n\nexport const VERSION = new Version('ANGULARFIRE2_VERSION');\n\nexport const ɵisSupportedError = (module: string) =>\n `The APP_INITIALIZER that is \"making\" isSupported() sync for the sake of convenient DI has not resolved in this\ncontext. Rather than injecting ${module} in the constructor, first ensure that ${module} is supported by calling\n\\`await isSupported()\\`, then retrieve the instance from the injector manually \\`injector.get(${module})\\`.`;\n\n// TODO is there a better way to get at the internal types?\ninterface FirebaseAppWithContainer extends FirebaseApp {\n container: ComponentContainer;\n}\n\nexport function ɵgetDefaultInstanceOf<T= unknown>(identifier: string, provided: T[]|undefined, defaultApp: FirebaseApp): T|undefined {\n if (provided) {\n // Was provide* only called once? If so grab that\n if (provided.length === 1) { return provided[0]; }\n const providedUsingDefaultApp = provided.filter((it: any) => it.app === defaultApp);\n // Was provide* only called once, using the default app? If so use that\n if (providedUsingDefaultApp.length === 1) { return providedUsingDefaultApp[0]; }\n }\n // Grab the default instance from the defaultApp\n const defaultAppWithContainer: FirebaseAppWithContainer = defaultApp as any;\n const provider = defaultAppWithContainer.container.getProvider(identifier as never);\n return provider.getImmediate({ optional: true });\n}\n\nexport const ɵgetAllInstancesOf = <T= unknown>(identifier: string, app?: FirebaseApp): T[] => {\n const apps = app ? [app] : getApps();\n const instances: any[] = [];\n apps.forEach((app: FirebaseAppWithContainer) => {\n const provider: any = app.container.getProvider(identifier as never);\n provider.instances.forEach((instance: any) => {\n if (!instances.includes(instance)) {\n instances.push(instance);\n }\n });\n });\n return instances;\n};\n","/* eslint-disable @typescript-eslint/ban-ts-comment */\nimport {\n EnvironmentInjector,\n Injectable,\n NgZone,\n PendingTasks,\n inject,\n isDevMode,\n runInInjectionContext\n} from '@angular/core';\nimport { pendingUntilEvent } from '@angular/core/rxjs-interop';\nimport {\n Observable,\n SchedulerAction,\n SchedulerLike,\n Subscription,\n asyncScheduler,\n queueScheduler\n} from 'rxjs';\nimport { observeOn, subscribeOn } from 'rxjs/operators';\n\ndeclare const Zone: {current: unknown} | undefined;\n\nexport enum LogLevel {\n \"SILENT\" = 0, \n \"WARN\" = 1,\n \"VERBOSE\" = 2,\n}\n\n\nvar currentLogLevel = (isDevMode() && typeof Zone !== \"undefined\") ? LogLevel.WARN : LogLevel.SILENT;\n\nexport const setLogLevel = (logLevel: LogLevel) => currentLogLevel = logLevel;\n\n/**\n * Schedules tasks so that they are invoked inside the Zone that is passed in the constructor.\n */\nexport class ɵZoneScheduler implements SchedulerLike {\n constructor(private zone: any, private delegate: any = queueScheduler) {\n }\n\n now() {\n return this.delegate.now();\n }\n\n schedule(work: (this: SchedulerAction<any>, state?: any) => void, delay?: number, state?: any): Subscription {\n const targetZone = this.zone;\n // Wrap the specified work function to make sure that if nested scheduling takes place the\n // work is executed in the correct zone\n const workInZone = function(this: SchedulerAction<any>, state: any) {\n if (targetZone) {\n targetZone.runGuarded(() => {\n work.apply(this, [state]);\n });\n } else {\n work.apply(this, [state]);\n }\n };\n\n // Scheduling itself needs to be run in zone to ensure setInterval calls for async scheduling are done\n // inside the correct zone. This scheduler needs to schedule asynchronously always to ensure that\n // firebase emissions are never synchronous. Specifying a delay causes issues with the queueScheduler delegate.\n return this.delegate.schedule(workInZone, delay, state);\n }\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ɵAngularFireSchedulers {\n public readonly outsideAngular: ɵZoneScheduler;\n public readonly insideAngular: ɵZoneScheduler;\n\n constructor() {\n const ngZone = inject(NgZone);\n this.outsideAngular = ngZone.runOutsideAngular(\n () => new ɵZoneScheduler(typeof Zone === 'undefined' ? undefined : Zone.current)\n );\n this.insideAngular = ngZone.run(\n () => new ɵZoneScheduler(\n typeof Zone === 'undefined' ? undefined : Zone.current,\n asyncScheduler\n )\n );\n }\n}\n\nvar alreadyWarned = false;\nfunction warnOutsideInjectionContext(original: any, logLevel: LogLevel) {\n if (!alreadyWarned && (currentLogLevel > LogLevel.SILENT || isDevMode())) {\n alreadyWarned = true;\n console.warn(\"Calling Firebase APIs outside of an Injection context may destabilize your application leading to subtle change-detection and hydration bugs. Find more at https://github.com/angular/angularfire/blob/main/docs/zones.md\");\n }\n if (currentLogLevel >= logLevel) {\n console.warn(`Firebase API called outside injection context: ${original.name}`);\n }\n}\n\nfunction runOutsideAngular<T>(fn: (...args: any[]) => T): T {\n const ngZone = inject(NgZone, { optional: true });\n if (!ngZone) {return fn();}\n return ngZone.runOutsideAngular(() => fn());\n}\n\nfunction run<T>(fn: (...args: any[]) => T): T {\n const ngZone = inject(NgZone, { optional: true });\n if (!ngZone) {return fn();}\n return ngZone.run(() => fn());\n}\n\nconst zoneWrapFn = (\n it: (...args: any[]) => any,\n taskDone: VoidFunction | undefined,\n injector: EnvironmentInjector,\n) => {\n return (...args: any[]) => {\n if (taskDone) {\n setTimeout(taskDone, 0);\n }\n return runInInjectionContext(injector, () => run(() => it.apply(this, args)));\n };\n};\n\nexport const ɵzoneWrap = <T= unknown>(it: T, blockUntilFirst: boolean, logLevel?: LogLevel): T => {\n logLevel ||= blockUntilFirst ? LogLevel.WARN : LogLevel.VERBOSE;\n // function() is needed for the arguments object\n return function () {\n let taskDone: VoidFunction | undefined;\n const _arguments = arguments;\n let schedulers: ɵAngularFireSchedulers;\n let pendingTasks: PendingTasks;\n let injector: EnvironmentInjector;\n try {\n schedulers = inject(ɵAngularFireSchedulers);\n pendingTasks = inject(PendingTasks);\n injector = inject(EnvironmentInjector);\n } catch(e) {\n warnOutsideInjectionContext(it, logLevel);\n return (it as any).apply(this, _arguments);\n }\n // if this is a callback function, e.g, onSnapshot, we should create a pending task and complete it\n // only once one of the callback functions is tripped.\n for (let i = 0; i < arguments.length; i++) {\n if (typeof _arguments[i] === 'function') {\n if (blockUntilFirst) {\n taskDone ||= run(() => pendingTasks.add());\n }\n // TODO create a microtask to track callback functions\n _arguments[i] = zoneWrapFn(_arguments[i], taskDone, injector);\n }\n }\n const ret = runOutsideAngular(() => (it as any).apply(this, _arguments));\n if (!blockUntilFirst) {\n if (ret instanceof Observable) {\n return ret.pipe(\n subscribeOn(schedulers.outsideAngular),\n observeOn(schedulers.insideAngular),\n );\n } else {\n return run(() => ret);\n }\n }\n if (ret instanceof Observable) {\n return ret.pipe(\n subscribeOn(schedulers.outsideAngular),\n observeOn(schedulers.insideAngular),\n pendingUntilEvent(injector),\n );\n } else if (ret instanceof Promise) {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n return run(\n () => {\n pendingTasks.run(() => ret);\n return new Promise((resolve, reject) => {\n ret.then(\n (it) => runInInjectionContext(injector, () => run(() => resolve(it))),\n (reason) => runInInjectionContext(injector, () => run(() => reject(reason)))\n )\n });\n });\n } else if (typeof ret === 'function' && taskDone) {\n // Handle unsubscribe\n // function() is needed for the arguments object\n return function () {\n setTimeout(taskDone, 0);\n return ret.apply(this, arguments);\n };\n } else {\n // TODO how do we handle storage uploads in Zone? and other stuff with cancel() etc?\n return run(() => ret);\n }\n } as any;\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["this"],"mappings":"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"}
1
+ {"version":3,"file":"angular-fire.mjs","sources":["../../../src/core.ts","../../../src/zones.ts","../../../src/angular-fire.ts"],"sourcesContent":["import { Version } from '@angular/core';\nimport { ComponentContainer } from '@firebase/component';\nimport { FirebaseApp, getApps } from 'firebase/app';\n\nexport const VERSION = new Version('ANGULARFIRE2_VERSION');\n\nexport const ɵisSupportedError = (module: string) =>\n `The APP_INITIALIZER that is \"making\" isSupported() sync for the sake of convenient DI has not resolved in this\ncontext. Rather than injecting ${module} in the constructor, first ensure that ${module} is supported by calling\n\\`await isSupported()\\`, then retrieve the instance from the injector manually \\`injector.get(${module})\\`.`;\n\n// TODO is there a better way to get at the internal types?\ninterface FirebaseAppWithContainer extends FirebaseApp {\n container: ComponentContainer;\n}\n\nexport function ɵgetDefaultInstanceOf<T= unknown>(identifier: string, provided: T[]|undefined, defaultApp: FirebaseApp): T|undefined {\n if (provided) {\n // Was provide* only called once? If so grab that\n if (provided.length === 1) { return provided[0]; }\n const providedUsingDefaultApp = provided.filter((it: any) => it.app === defaultApp);\n // Was provide* only called once, using the default app? If so use that\n if (providedUsingDefaultApp.length === 1) { return providedUsingDefaultApp[0]; }\n }\n // Grab the default instance from the defaultApp\n const defaultAppWithContainer: FirebaseAppWithContainer = defaultApp as any;\n const provider = defaultAppWithContainer.container.getProvider(identifier as never);\n return provider.getImmediate({ optional: true });\n}\n\nexport const ɵgetAllInstancesOf = <T= unknown>(identifier: string, app?: FirebaseApp): T[] => {\n const apps = app ? [app] : getApps();\n const instances: any[] = [];\n apps.forEach((app: FirebaseAppWithContainer) => {\n const provider: any = app.container.getProvider(identifier as never);\n provider.instances.forEach((instance: any) => {\n if (!instances.includes(instance)) {\n instances.push(instance);\n }\n });\n });\n return instances;\n};\n","/* eslint-disable @typescript-eslint/ban-ts-comment */\nimport {\n EnvironmentInjector,\n Injectable,\n NgZone,\n PendingTasks,\n inject,\n isDevMode,\n runInInjectionContext\n} from '@angular/core';\nimport { pendingUntilEvent } from '@angular/core/rxjs-interop';\nimport {\n Observable,\n SchedulerAction,\n SchedulerLike,\n Subscription,\n asyncScheduler,\n queueScheduler\n} from 'rxjs';\nimport { observeOn, subscribeOn } from 'rxjs/operators';\n\ndeclare const Zone: {current: unknown} | undefined;\n\nexport enum LogLevel {\n \"SILENT\" = 0, \n \"WARN\" = 1,\n \"VERBOSE\" = 2,\n}\n\n\nvar currentLogLevel = (isDevMode() && typeof Zone !== \"undefined\") ? LogLevel.WARN : LogLevel.SILENT;\n\nexport const setLogLevel = (logLevel: LogLevel) => currentLogLevel = logLevel;\n\n/**\n * Schedules tasks so that they are invoked inside the Zone that is passed in the constructor.\n */\nexport class ɵZoneScheduler implements SchedulerLike {\n constructor(private zone: any, private delegate: any = queueScheduler) {\n }\n\n now() {\n return this.delegate.now();\n }\n\n schedule(work: (this: SchedulerAction<any>, state?: any) => void, delay?: number, state?: any): Subscription {\n const targetZone = this.zone;\n // Wrap the specified work function to make sure that if nested scheduling takes place the\n // work is executed in the correct zone\n const workInZone = function(this: SchedulerAction<any>, state: any) {\n if (targetZone) {\n targetZone.runGuarded(() => {\n work.apply(this, [state]);\n });\n } else {\n work.apply(this, [state]);\n }\n };\n\n // Scheduling itself needs to be run in zone to ensure setInterval calls for async scheduling are done\n // inside the correct zone. This scheduler needs to schedule asynchronously always to ensure that\n // firebase emissions are never synchronous. Specifying a delay causes issues with the queueScheduler delegate.\n return this.delegate.schedule(workInZone, delay, state);\n }\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ɵAngularFireSchedulers {\n public readonly outsideAngular: ɵZoneScheduler;\n public readonly insideAngular: ɵZoneScheduler;\n\n constructor() {\n const ngZone = inject(NgZone);\n this.outsideAngular = ngZone.runOutsideAngular(\n () => new ɵZoneScheduler(typeof Zone === 'undefined' ? undefined : Zone.current)\n );\n this.insideAngular = ngZone.run(\n () => new ɵZoneScheduler(\n typeof Zone === 'undefined' ? undefined : Zone.current,\n asyncScheduler\n )\n );\n }\n}\n\nvar alreadyWarned = false;\nfunction warnOutsideInjectionContext(original: any, logLevel: LogLevel) {\n if (!alreadyWarned && (currentLogLevel > LogLevel.SILENT || isDevMode())) {\n alreadyWarned = true;\n console.warn(\"Calling Firebase APIs outside of an Injection context may destabilize your application leading to subtle change-detection and hydration bugs. Find more at https://github.com/angular/angularfire/blob/main/docs/zones.md\");\n }\n if (currentLogLevel >= logLevel) {\n console.warn(`Firebase API called outside injection context: ${original.name}`);\n }\n}\n\nfunction runOutsideAngular<T>(fn: (...args: any[]) => T): T {\n const ngZone = inject(NgZone, { optional: true });\n if (!ngZone) {return fn();}\n return ngZone.runOutsideAngular(() => fn());\n}\n\nfunction run<T>(fn: (...args: any[]) => T): T {\n const ngZone = inject(NgZone, { optional: true });\n if (!ngZone) {return fn();}\n return ngZone.run(() => fn());\n}\n\nconst zoneWrapFn = (\n it: (...args: any[]) => any,\n taskDone: VoidFunction | undefined,\n injector: EnvironmentInjector,\n) => {\n return (...args: any[]) => {\n if (taskDone) {\n setTimeout(taskDone, 0);\n }\n return runInInjectionContext(injector, () => run(() => it.apply(this, args)));\n };\n};\n\nexport const ɵzoneWrap = <T= unknown>(it: T, blockUntilFirst: boolean, logLevel?: LogLevel): T => {\n logLevel ||= blockUntilFirst ? LogLevel.WARN : LogLevel.VERBOSE;\n // function() is needed for the arguments object\n return function () {\n let taskDone: VoidFunction | undefined;\n const _arguments = arguments;\n let schedulers: ɵAngularFireSchedulers;\n let pendingTasks: PendingTasks;\n let injector: EnvironmentInjector;\n try {\n schedulers = inject(ɵAngularFireSchedulers);\n pendingTasks = inject(PendingTasks);\n injector = inject(EnvironmentInjector);\n } catch(e) {\n warnOutsideInjectionContext(it, logLevel);\n return (it as any).apply(this, _arguments);\n }\n // if this is a callback function, e.g, onSnapshot, we should create a pending task and complete it\n // only once one of the callback functions is tripped.\n for (let i = 0; i < arguments.length; i++) {\n if (typeof _arguments[i] === 'function') {\n if (blockUntilFirst) {\n taskDone ||= run(() => pendingTasks.add());\n }\n // TODO create a microtask to track callback functions\n _arguments[i] = zoneWrapFn(_arguments[i], taskDone, injector);\n }\n }\n const ret = runOutsideAngular(() => (it as any).apply(this, _arguments));\n if (!blockUntilFirst) {\n if (ret instanceof Observable) {\n return ret.pipe(\n subscribeOn(schedulers.outsideAngular),\n observeOn(schedulers.insideAngular),\n );\n } else {\n return run(() => ret);\n }\n }\n if (ret instanceof Observable) {\n return ret.pipe(\n subscribeOn(schedulers.outsideAngular),\n observeOn(schedulers.insideAngular),\n pendingUntilEvent(injector),\n );\n } else if (ret instanceof Promise) {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n return run(\n () => {\n const removeTask = pendingTasks.add();\n return new Promise((resolve, reject) => {\n ret.then(\n (it) => runInInjectionContext(injector, () => run(() => resolve(it))),\n (reason) => runInInjectionContext(injector, () => run(() => reject(reason)))\n ).finally(removeTask);\n });\n });\n } else if (typeof ret === 'function' && taskDone) {\n // Handle unsubscribe\n // function() is needed for the arguments object\n return function () {\n setTimeout(taskDone, 0);\n return ret.apply(this, arguments);\n };\n } else {\n // TODO how do we handle storage uploads in Zone? and other stuff with cancel() etc?\n return run(() => ret);\n }\n } as any;\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["this"],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "../node_modules/ng-packagr/package.schema.json",
3
3
  "name": "@angular/fire",
4
- "version": "20.0.0",
4
+ "version": "20.0.1",
5
5
  "description": "Angular + Firebase = ❤️",
6
6
  "schematics": "./schematics/collection.json",
7
7
  "builders": "./schematics/builders.json",
@@ -75,26 +75,26 @@
75
75
  "types": "./app-check/index.d.ts",
76
76
  "default": "./fesm2022/angular-fire-app-check.mjs"
77
77
  },
78
- "./auth-guard": {
79
- "types": "./auth-guard/index.d.ts",
80
- "default": "./fesm2022/angular-fire-auth-guard.mjs"
81
- },
82
78
  "./auth": {
83
79
  "types": "./auth/index.d.ts",
84
80
  "default": "./fesm2022/angular-fire-auth.mjs"
85
81
  },
82
+ "./auth-guard": {
83
+ "types": "./auth-guard/index.d.ts",
84
+ "default": "./fesm2022/angular-fire-auth-guard.mjs"
85
+ },
86
86
  "./compat": {
87
87
  "types": "./compat/index.d.ts",
88
88
  "default": "./fesm2022/angular-fire-compat.mjs"
89
89
  },
90
- "./data-connect": {
91
- "types": "./data-connect/index.d.ts",
92
- "default": "./fesm2022/angular-fire-data-connect.mjs"
93
- },
94
90
  "./database": {
95
91
  "types": "./database/index.d.ts",
96
92
  "default": "./fesm2022/angular-fire-database.mjs"
97
93
  },
94
+ "./data-connect": {
95
+ "types": "./data-connect/index.d.ts",
96
+ "default": "./fesm2022/angular-fire-data-connect.mjs"
97
+ },
98
98
  "./firestore": {
99
99
  "types": "./firestore/index.d.ts",
100
100
  "default": "./fesm2022/angular-fire-firestore.mjs"