@angular/fire 17.1.0 → 18.0.0-canary.c866d08
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.
- package/README.md +10 -0
- package/compat/proxy.d.ts +2 -2
- package/compat/storage/pipes/storageUrl.pipe.d.ts +1 -2
- package/docs/analytics.md +14 -20
- package/docs/app-check.md +12 -9
- package/docs/auth.md +44 -9
- package/docs/database.md +12 -12
- package/docs/firestore.md +15 -23
- package/docs/functions.md +11 -9
- package/docs/messaging.md +30 -8
- package/docs/performance.md +11 -9
- package/docs/remote-config.md +11 -9
- package/docs/storage.md +11 -10
- package/docs/vertexai.md +53 -0
- package/esm2022/analytics/analytics.module.mjs +5 -5
- package/esm2022/analytics/is-analytics-supported-factory.mjs +1 -1
- package/esm2022/analytics/screen-tracking.service.mjs +4 -4
- package/esm2022/analytics/user-tracking.service.mjs +4 -4
- package/esm2022/app/app.module.mjs +5 -5
- package/esm2022/app-check/app-check.module.mjs +5 -5
- package/esm2022/auth/auth.module.mjs +5 -5
- package/esm2022/auth-guard/auth-guard.mjs +4 -4
- package/esm2022/auth-guard/auth-guard.module.mjs +5 -5
- package/esm2022/compat/analytics/analytics.mjs +4 -4
- package/esm2022/compat/analytics/analytics.module.mjs +5 -5
- package/esm2022/compat/analytics/screen-tracking.service.mjs +4 -4
- package/esm2022/compat/analytics/user-tracking.service.mjs +4 -4
- package/esm2022/compat/auth/auth.mjs +4 -4
- package/esm2022/compat/auth/auth.module.mjs +5 -5
- package/esm2022/compat/auth-guard/auth-guard.mjs +4 -4
- package/esm2022/compat/auth-guard/auth-guard.module.mjs +5 -5
- package/esm2022/compat/cache.mjs +1 -1
- package/esm2022/compat/database/database.mjs +4 -4
- package/esm2022/compat/database/database.module.mjs +5 -5
- package/esm2022/compat/database/list/changes.mjs +1 -1
- package/esm2022/compat/database/list/create-reference.mjs +1 -1
- package/esm2022/compat/database/list/remove.mjs +1 -1
- package/esm2022/compat/database/list/utils.mjs +1 -1
- package/esm2022/compat/database/observable/fromRef.mjs +1 -1
- package/esm2022/compat/database/utils.mjs +1 -1
- package/esm2022/compat/firebase.app.module.mjs +5 -5
- package/esm2022/compat/firestore/collection/changes.mjs +1 -1
- package/esm2022/compat/firestore/collection/collection.mjs +1 -1
- package/esm2022/compat/firestore/collection-group/collection-group.mjs +1 -1
- package/esm2022/compat/firestore/firestore.mjs +4 -4
- package/esm2022/compat/firestore/firestore.module.mjs +5 -5
- package/esm2022/compat/firestore/observable/fromRef.mjs +1 -1
- package/esm2022/compat/functions/functions.mjs +4 -4
- package/esm2022/compat/functions/functions.module.mjs +5 -5
- package/esm2022/compat/messaging/messaging.mjs +4 -4
- package/esm2022/compat/messaging/messaging.module.mjs +5 -5
- package/esm2022/compat/performance/performance.mjs +4 -4
- package/esm2022/compat/performance/performance.module.mjs +5 -5
- package/esm2022/compat/performance/performance.service.mjs +4 -4
- package/esm2022/compat/proxy.mjs +1 -1
- package/esm2022/compat/remote-config/remote-config.mjs +4 -4
- package/esm2022/compat/remote-config/remote-config.module.mjs +5 -5
- package/esm2022/compat/storage/pipes/storageUrl.pipe.mjs +10 -12
- package/esm2022/compat/storage/storage.mjs +4 -4
- package/esm2022/compat/storage/storage.module.mjs +5 -5
- package/esm2022/core.mjs +1 -1
- package/esm2022/database/database.module.mjs +5 -5
- package/esm2022/firestore/firestore.module.mjs +5 -5
- package/esm2022/firestore/lite/lite.module.mjs +5 -5
- package/esm2022/functions/functions.module.mjs +5 -5
- package/esm2022/messaging/is-messaging-supported-factory.mjs +1 -1
- package/esm2022/messaging/messaging.module.mjs +5 -5
- package/esm2022/performance/performance.module.mjs +5 -5
- package/esm2022/remote-config/is-remote-config-supported-factory.mjs +1 -1
- package/esm2022/remote-config/remote-config.module.mjs +5 -5
- package/esm2022/storage/storage.module.mjs +5 -5
- package/esm2022/vertexai-preview/vertexai.module.mjs +5 -5
- package/esm2022/zones.mjs +4 -4
- package/fesm2022/angular-fire-analytics.mjs +410 -297
- package/fesm2022/angular-fire-analytics.mjs.map +7 -1
- package/fesm2022/angular-fire-app-check.mjs +162 -91
- package/fesm2022/angular-fire-app-check.mjs.map +7 -1
- package/fesm2022/angular-fire-app.mjs +181 -108
- package/fesm2022/angular-fire-app.mjs.map +7 -1
- package/fesm2022/angular-fire-auth-guard.mjs +83 -73
- package/fesm2022/angular-fire-auth-guard.mjs.map +7 -1
- package/fesm2022/angular-fire-auth.mjs +421 -142
- package/fesm2022/angular-fire-auth.mjs.map +7 -1
- package/fesm2022/angular-fire-compat-analytics.mjs +261 -270
- package/fesm2022/angular-fire-compat-analytics.mjs.map +7 -1
- package/fesm2022/angular-fire-compat-auth-guard.mjs +83 -72
- package/fesm2022/angular-fire-compat-auth-guard.mjs.map +7 -1
- package/fesm2022/angular-fire-compat-auth.mjs +214 -213
- package/fesm2022/angular-fire-compat-auth.mjs.map +7 -1
- package/fesm2022/angular-fire-compat-database.mjs +375 -378
- package/fesm2022/angular-fire-compat-database.mjs.map +7 -1
- package/fesm2022/angular-fire-compat-firestore.mjs +537 -677
- package/fesm2022/angular-fire-compat-firestore.mjs.map +7 -1
- package/fesm2022/angular-fire-compat-functions.mjs +97 -93
- package/fesm2022/angular-fire-compat-functions.mjs.map +7 -1
- package/fesm2022/angular-fire-compat-messaging.mjs +106 -106
- package/fesm2022/angular-fire-compat-messaging.mjs.map +7 -1
- package/fesm2022/angular-fire-compat-performance.mjs +157 -151
- package/fesm2022/angular-fire-compat-performance.mjs.map +7 -1
- package/fesm2022/angular-fire-compat-remote-config.mjs +215 -231
- package/fesm2022/angular-fire-compat-remote-config.mjs.map +7 -1
- package/fesm2022/angular-fire-compat-storage.mjs +226 -233
- package/fesm2022/angular-fire-compat-storage.mjs.map +7 -1
- package/fesm2022/angular-fire-compat.mjs +140 -153
- package/fesm2022/angular-fire-compat.mjs.map +7 -1
- package/fesm2022/angular-fire-database.mjs +376 -136
- package/fesm2022/angular-fire-database.mjs.map +7 -1
- package/fesm2022/angular-fire-firestore-lite.mjs +388 -139
- package/fesm2022/angular-fire-firestore-lite.mjs.map +7 -1
- package/fesm2022/angular-fire-firestore.mjs +526 -167
- package/fesm2022/angular-fire-firestore.mjs.map +7 -1
- package/fesm2022/angular-fire-functions.mjs +166 -93
- package/fesm2022/angular-fire-functions.mjs.map +7 -1
- package/fesm2022/angular-fire-messaging.mjs +196 -118
- package/fesm2022/angular-fire-messaging.mjs.map +7 -1
- package/fesm2022/angular-fire-performance.mjs +178 -104
- package/fesm2022/angular-fire-performance.mjs.map +7 -1
- package/fesm2022/angular-fire-remote-config.mjs +254 -132
- package/fesm2022/angular-fire-remote-config.mjs.map +7 -1
- package/fesm2022/angular-fire-storage.mjs +225 -105
- package/fesm2022/angular-fire-storage.mjs.map +7 -1
- package/fesm2022/angular-fire-vertexai-preview.mjs +146 -85
- package/fesm2022/angular-fire-vertexai-preview.mjs.map +7 -1
- package/fesm2022/angular-fire.mjs +183 -213
- package/fesm2022/angular-fire.mjs.map +7 -1
- package/package.json +7 -7
- package/schematics/deploy/actions.js +2 -2
- package/schematics/setup/prompts.js +1 -1
|
@@ -1 +1,7 @@
|
|
|
1
|
-
{"version":3,"file":"angular-fire-compat-performance.mjs","sources":["../../../src/compat/performance/base.ts","../../../src/compat/performance/performance.ts","../../../src/compat/performance/performance.service.ts","../../../src/compat/performance/performance.module.ts","../../../src/compat/performance/angular-fire-compat-performance.ts"],"sourcesContent":["// DO NOT MODIFY, this file is autogenerated by tools/build.ts\n// Export a null object with the same keys as firebase/compat/performance, so Proxy can work with proxy-polyfill in Internet Explorer\nexport const proxyPolyfillCompat = {\n app: null,\n trace: null,\n instrumentationEnabled: null,\n dataCollectionEnabled: null,\n};\n","import { isPlatformBrowser } from '@angular/common';\nimport { Inject, Injectable, InjectionToken, NgZone, Optional, PLATFORM_ID } from '@angular/core';\nimport { ɵPromiseProxy, ɵapplyMixins, ɵcacheInstance, ɵlazySDKProxy } from '@angular/fire/compat';\nimport { FirebaseApp } from '@angular/fire/compat';\nimport firebase from 'firebase/compat/app';\nimport { EMPTY, Observable, Subscription, of } from 'rxjs';\nimport { map, shareReplay, switchMap, tap } from 'rxjs/operators';\nimport { proxyPolyfillCompat } from './base';\n\nexport const INSTRUMENTATION_ENABLED = new InjectionToken<boolean>('angularfire2.performance.instrumentationEnabled');\nexport const DATA_COLLECTION_ENABLED = new InjectionToken<boolean>('angularfire2.performance.dataCollectionEnabled');\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface AngularFirePerformance extends ɵPromiseProxy<firebase.performance.Performance> {\n}\n\n@Injectable({\n providedIn: 'any'\n})\nexport class AngularFirePerformance {\n\n private readonly performance: Observable<firebase.performance.Performance>;\n\n constructor(\n app: FirebaseApp,\n @Optional() @Inject(INSTRUMENTATION_ENABLED) instrumentationEnabled: boolean | null,\n @Optional() @Inject(DATA_COLLECTION_ENABLED) dataCollectionEnabled: boolean | null,\n private zone: NgZone,\n // eslint-disable-next-line @typescript-eslint/ban-types\n @Inject(PLATFORM_ID) platformId: Object\n ) {\n\n this.performance = of(undefined).pipe(\n switchMap(() => isPlatformBrowser(platformId) ? zone.runOutsideAngular(() => import('firebase/compat/performance')) : EMPTY),\n map(() => ɵcacheInstance(`performance`, 'AngularFirePerformance', app.name, () => {\n const performance = zone.runOutsideAngular(() => app.performance());\n if (instrumentationEnabled === false) {\n performance.instrumentationEnabled = false;\n }\n if (dataCollectionEnabled === false) {\n performance.dataCollectionEnabled = false;\n }\n return performance;\n }, [instrumentationEnabled, dataCollectionEnabled])),\n shareReplay({ bufferSize: 1, refCount: false })\n );\n\n return ɵlazySDKProxy(this, this.performance, zone);\n\n }\n\n}\n\nconst trace$ = (traceId: string) => {\n // eslint-disable-next-line @typescript-eslint/prefer-optional-chain\n if (typeof window !== 'undefined' && window.performance?.mark) {\n const entries = window.performance.getEntriesByName(traceId, 'measure') || [];\n const startMarkName = `_${traceId}Start[${entries.length}]`;\n const endMarkName = `_${traceId}End[${entries.length}]`;\n return new Observable<void>(emitter => {\n window.performance.mark(startMarkName);\n emitter.next();\n return {\n unsubscribe: () => {\n window.performance.mark(endMarkName);\n window.performance.measure(traceId, startMarkName, endMarkName);\n }\n };\n });\n } else {\n return EMPTY;\n }\n};\n\nexport const traceUntil = <T = any>(\n name: string,\n test: (a: T) => boolean,\n options?: { orComplete?: boolean }\n) => (source$: Observable<T>) => new Observable<T>(subscriber => {\n const traceSubscription = trace$(name).subscribe();\n return source$.pipe(\n tap(\n a => test(a) && traceSubscription.unsubscribe(),\n () => undefined,\n () => options && options.orComplete && traceSubscription.unsubscribe()\n )\n ).subscribe(subscriber);\n});\n\nexport const traceWhile = <T = any>(\n name: string,\n test: (a: T) => boolean,\n options?: { orComplete?: boolean }\n) => (source$: Observable<T>) => new Observable<T>(subscriber => {\n let traceSubscription: Subscription | undefined;\n return source$.pipe(\n tap(\n a => {\n if (test(a)) {\n traceSubscription = traceSubscription || trace$(name).subscribe();\n } else {\n if (traceSubscription) {\n traceSubscription.unsubscribe();\n }\n\n traceSubscription = undefined;\n }\n },\n () => undefined,\n () => options && options.orComplete && traceSubscription && traceSubscription.unsubscribe()\n )\n ).subscribe(subscriber);\n});\n\nexport const traceUntilComplete = <T = any>(name: string) => (source$: Observable<T>) => new Observable<T>(subscriber => {\n const traceSubscription = trace$(name).subscribe();\n return source$.pipe(\n tap(\n () => undefined,\n () => undefined,\n () => traceSubscription.unsubscribe()\n )\n ).subscribe(subscriber);\n});\n\nexport const traceUntilFirst = <T = any>(name: string) => (source$: Observable<T>) => new Observable<T>(subscriber => {\n const traceSubscription = trace$(name).subscribe();\n return source$.pipe(\n tap(\n () => traceSubscription.unsubscribe(),\n () => undefined,\n () => undefined )\n ).subscribe(subscriber);\n});\n\nexport const trace = <T = any>(name: string) => (source$: Observable<T>) => new Observable<T>(subscriber => {\n const traceSubscription = trace$(name).subscribe();\n return source$.pipe(\n tap(\n () => traceSubscription.unsubscribe(),\n () => undefined,\n () => traceSubscription.unsubscribe()\n )\n ).subscribe(subscriber);\n});\n\nɵapplyMixins(AngularFirePerformance, [proxyPolyfillCompat]);\n","import { ApplicationRef, Injectable, OnDestroy } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { first, tap } from 'rxjs/operators';\n\nconst IS_STABLE_START_MARK = 'Zone';\nconst IS_STABLE_END_MARK = '_isStableEnd';\n\n@Injectable()\nexport class PerformanceMonitoringService implements OnDestroy {\n\n private disposable: Subscription|undefined;\n\n constructor(appRef: ApplicationRef) {\n // eslint-disable-next-line @typescript-eslint/prefer-optional-chain\n if (typeof window !== 'undefined' && window.performance?.mark) {\n this.disposable = appRef.isStable.pipe(\n first(it => it),\n tap(() => {\n window.performance.mark(IS_STABLE_END_MARK);\n window.performance.measure('isStable', IS_STABLE_START_MARK, IS_STABLE_END_MARK);\n })\n ).subscribe();\n }\n }\n\n ngOnDestroy() {\n if (this.disposable) { this.disposable.unsubscribe(); }\n }\n\n}\n","import { NgModule, Optional } from '@angular/core';\nimport { VERSION } from '@angular/fire';\nimport firebase from 'firebase/compat/app';\nimport { AngularFirePerformance } from './performance';\nimport { PerformanceMonitoringService } from './performance.service';\n\n@NgModule({\n providers: [ AngularFirePerformance ]\n})\nexport class AngularFirePerformanceModule {\n constructor(\n perf: AngularFirePerformance,\n @Optional() _: PerformanceMonitoringService\n ) {\n firebase.registerVersion('angularfire', VERSION.full, 'perf-compat');\n // call anything here to get perf loading\n perf.dataCollectionEnabled.then(() => undefined);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.AngularFirePerformance","i2.PerformanceMonitoringService"],"mappings":"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"}
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/compat/performance/base.ts", "../../../src/compat/performance/performance.ts", "../../../src/compat/performance/performance.service.ts", "../../../src/compat/performance/performance.module.ts"],
|
|
4
|
+
"sourcesContent": ["// DO NOT MODIFY, this file is autogenerated by tools/build.ts\n// Export a null object with the same keys as firebase/compat/performance, so Proxy can work with proxy-polyfill in Internet Explorer\nexport const proxyPolyfillCompat = {\n app: null,\n trace: null,\n instrumentationEnabled: null,\n dataCollectionEnabled: null,\n};\n", "import { isPlatformBrowser } from '@angular/common';\nimport { Inject, Injectable, InjectionToken, NgZone, Optional, PLATFORM_ID } from '@angular/core';\nimport { ɵPromiseProxy, ɵapplyMixins, ɵcacheInstance, ɵlazySDKProxy } from '@angular/fire/compat';\nimport { FirebaseApp } from '@angular/fire/compat';\nimport firebase from 'firebase/compat/app';\nimport { EMPTY, Observable, Subscription, of } from 'rxjs';\nimport { map, shareReplay, switchMap, tap } from 'rxjs/operators';\nimport { proxyPolyfillCompat } from './base';\n\nexport const INSTRUMENTATION_ENABLED = new InjectionToken<boolean>('angularfire2.performance.instrumentationEnabled');\nexport const DATA_COLLECTION_ENABLED = new InjectionToken<boolean>('angularfire2.performance.dataCollectionEnabled');\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface AngularFirePerformance extends ɵPromiseProxy<firebase.performance.Performance> {\n}\n\n@Injectable({\n providedIn: 'any'\n})\nexport class AngularFirePerformance {\n\n private readonly performance: Observable<firebase.performance.Performance>;\n\n constructor(\n app: FirebaseApp,\n @Optional() @Inject(INSTRUMENTATION_ENABLED) instrumentationEnabled: boolean | null,\n @Optional() @Inject(DATA_COLLECTION_ENABLED) dataCollectionEnabled: boolean | null,\n private zone: NgZone,\n // eslint-disable-next-line @typescript-eslint/ban-types\n @Inject(PLATFORM_ID) platformId: Object\n ) {\n\n this.performance = of(undefined).pipe(\n switchMap(() => isPlatformBrowser(platformId) ? zone.runOutsideAngular(() => import('firebase/compat/performance')) : EMPTY),\n map(() => ɵcacheInstance(`performance`, 'AngularFirePerformance', app.name, () => {\n const performance = zone.runOutsideAngular(() => app.performance());\n if (instrumentationEnabled === false) {\n performance.instrumentationEnabled = false;\n }\n if (dataCollectionEnabled === false) {\n performance.dataCollectionEnabled = false;\n }\n return performance;\n }, [instrumentationEnabled, dataCollectionEnabled])),\n shareReplay({ bufferSize: 1, refCount: false })\n );\n\n return ɵlazySDKProxy(this, this.performance, zone);\n\n }\n\n}\n\nconst trace$ = (traceId: string) => {\n // eslint-disable-next-line @typescript-eslint/prefer-optional-chain\n if (typeof window !== 'undefined' && window.performance?.mark) {\n const entries = window.performance.getEntriesByName(traceId, 'measure') || [];\n const startMarkName = `_${traceId}Start[${entries.length}]`;\n const endMarkName = `_${traceId}End[${entries.length}]`;\n return new Observable<void>(emitter => {\n window.performance.mark(startMarkName);\n emitter.next();\n return {\n unsubscribe: () => {\n window.performance.mark(endMarkName);\n window.performance.measure(traceId, startMarkName, endMarkName);\n }\n };\n });\n } else {\n return EMPTY;\n }\n};\n\nexport const traceUntil = <T = any>(\n name: string,\n test: (a: T) => boolean,\n options?: { orComplete?: boolean }\n) => (source$: Observable<T>) => new Observable<T>(subscriber => {\n const traceSubscription = trace$(name).subscribe();\n return source$.pipe(\n tap(\n a => test(a) && traceSubscription.unsubscribe(),\n () => undefined,\n () => options && options.orComplete && traceSubscription.unsubscribe()\n )\n ).subscribe(subscriber);\n});\n\nexport const traceWhile = <T = any>(\n name: string,\n test: (a: T) => boolean,\n options?: { orComplete?: boolean }\n) => (source$: Observable<T>) => new Observable<T>(subscriber => {\n let traceSubscription: Subscription | undefined;\n return source$.pipe(\n tap(\n a => {\n if (test(a)) {\n traceSubscription = traceSubscription || trace$(name).subscribe();\n } else {\n if (traceSubscription) {\n traceSubscription.unsubscribe();\n }\n\n traceSubscription = undefined;\n }\n },\n () => undefined,\n () => options && options.orComplete && traceSubscription && traceSubscription.unsubscribe()\n )\n ).subscribe(subscriber);\n});\n\nexport const traceUntilComplete = <T = any>(name: string) => (source$: Observable<T>) => new Observable<T>(subscriber => {\n const traceSubscription = trace$(name).subscribe();\n return source$.pipe(\n tap(\n () => undefined,\n () => undefined,\n () => traceSubscription.unsubscribe()\n )\n ).subscribe(subscriber);\n});\n\nexport const traceUntilFirst = <T = any>(name: string) => (source$: Observable<T>) => new Observable<T>(subscriber => {\n const traceSubscription = trace$(name).subscribe();\n return source$.pipe(\n tap(\n () => traceSubscription.unsubscribe(),\n () => undefined,\n () => undefined )\n ).subscribe(subscriber);\n});\n\nexport const trace = <T = any>(name: string) => (source$: Observable<T>) => new Observable<T>(subscriber => {\n const traceSubscription = trace$(name).subscribe();\n return source$.pipe(\n tap(\n () => traceSubscription.unsubscribe(),\n () => undefined,\n () => traceSubscription.unsubscribe()\n )\n ).subscribe(subscriber);\n});\n\nɵapplyMixins(AngularFirePerformance, [proxyPolyfillCompat]);\n", "import { ApplicationRef, Injectable, OnDestroy } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { first, tap } from 'rxjs/operators';\n\nconst IS_STABLE_START_MARK = 'Zone';\nconst IS_STABLE_END_MARK = '_isStableEnd';\n\n@Injectable()\nexport class PerformanceMonitoringService implements OnDestroy {\n\n private disposable: Subscription|undefined;\n\n constructor(appRef: ApplicationRef) {\n // eslint-disable-next-line @typescript-eslint/prefer-optional-chain\n if (typeof window !== 'undefined' && window.performance?.mark) {\n this.disposable = appRef.isStable.pipe(\n first(it => it),\n tap(() => {\n window.performance.mark(IS_STABLE_END_MARK);\n window.performance.measure('isStable', IS_STABLE_START_MARK, IS_STABLE_END_MARK);\n })\n ).subscribe();\n }\n }\n\n ngOnDestroy() {\n if (this.disposable) { this.disposable.unsubscribe(); }\n }\n\n}\n", "import { NgModule, Optional } from '@angular/core';\nimport { VERSION } from '@angular/fire';\nimport firebase from 'firebase/compat/app';\nimport { AngularFirePerformance } from './performance';\nimport { PerformanceMonitoringService } from './performance.service';\n\n@NgModule({\n providers: [ AngularFirePerformance ]\n})\nexport class AngularFirePerformanceModule {\n constructor(\n perf: AngularFirePerformance,\n @Optional() _: PerformanceMonitoringService\n ) {\n firebase.registerVersion('angularfire', VERSION.full, 'perf-compat');\n // call anything here to get perf loading\n perf.dataCollectionEnabled.then(() => undefined);\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["Injectable", "tap", "Optional"]
|
|
7
|
+
}
|
|
@@ -1,247 +1,231 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
lastFetchStatus: null,
|
|
19
|
-
activate: null,
|
|
20
|
-
ensureInitialized: null,
|
|
21
|
-
fetch: null,
|
|
22
|
-
fetchAndActivate: null,
|
|
23
|
-
getAll: null,
|
|
24
|
-
getBoolean: null,
|
|
25
|
-
getNumber: null,
|
|
26
|
-
getString: null,
|
|
27
|
-
getValue: null,
|
|
28
|
-
setLogLevel: null,
|
|
1
|
+
// base.mjs
|
|
2
|
+
var proxyPolyfillCompat = {
|
|
3
|
+
app: null,
|
|
4
|
+
settings: null,
|
|
5
|
+
defaultConfig: null,
|
|
6
|
+
fetchTimeMillis: null,
|
|
7
|
+
lastFetchStatus: null,
|
|
8
|
+
activate: null,
|
|
9
|
+
ensureInitialized: null,
|
|
10
|
+
fetch: null,
|
|
11
|
+
fetchAndActivate: null,
|
|
12
|
+
getAll: null,
|
|
13
|
+
getBoolean: null,
|
|
14
|
+
getNumber: null,
|
|
15
|
+
getString: null,
|
|
16
|
+
getValue: null,
|
|
17
|
+
setLogLevel: null
|
|
29
18
|
};
|
|
30
19
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
20
|
+
// remote-config.mjs
|
|
21
|
+
import { Inject, Injectable, InjectionToken, NgZone, Optional, PLATFORM_ID } from "@angular/core";
|
|
22
|
+
import { keepUnstableUntilFirst, ɵAngularFireSchedulers } from "@angular/fire";
|
|
23
|
+
import { ɵapplyMixins, ɵlazySDKProxy } from "@angular/fire/compat";
|
|
24
|
+
import { FIREBASE_APP_NAME, FIREBASE_OPTIONS, ɵcacheInstance, ɵfirebaseAppFactory } from "@angular/fire/compat";
|
|
25
|
+
import { isSupported } from "firebase/remote-config";
|
|
26
|
+
import { EMPTY, Observable, concat, of, pipe } from "rxjs";
|
|
27
|
+
import { debounceTime, distinctUntilChanged, filter, groupBy, map, mergeMap, observeOn, scan, shareReplay, startWith, switchMap, withLatestFrom } from "rxjs/operators";
|
|
28
|
+
import * as i0 from "@angular/core";
|
|
29
|
+
import * as i1 from "@angular/fire";
|
|
30
|
+
var SETTINGS = new InjectionToken("angularfire2.remoteConfig.settings");
|
|
31
|
+
var DEFAULTS = new InjectionToken("angularfire2.remoteConfig.defaultConfig");
|
|
32
|
+
var AS_TO_FN = { strings: "asString", numbers: "asNumber", booleans: "asBoolean" };
|
|
33
|
+
var STATIC_VALUES = { numbers: 0, booleans: false, strings: void 0 };
|
|
34
|
+
var proxyAll = (observable, as) => new Proxy(observable.pipe(mapToObject(as)), {
|
|
35
|
+
get: (self, name) => self[name] || observable.pipe(map((all) => all.find((p) => p.key === name)), map((param) => param ? param[AS_TO_FN[as]]() : STATIC_VALUES[as]), distinctUntilChanged())
|
|
38
36
|
});
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
const
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
// I ditched loading the defaults into RC and a simple map for scan since we already have our own defaults implementation.
|
|
78
|
-
// The idea here being that if they have a default that never loads from the server, they will be able to tell via fetchTimeMillis
|
|
79
|
-
// on the Parameter. Also if it doesn't come from the server it won't emit again in .changes, due to the distinctUntilChanged,
|
|
80
|
-
// which we can simplify to === rather than deep comparison
|
|
81
|
-
const scanToParametersArray = (remoteConfig) => pipe(withLatestFrom(remoteConfig), scan((existing, [all, rc]) => {
|
|
82
|
-
// SEMVER use "new Set" to unique once we're only targeting es6
|
|
83
|
-
// at the scale we expect remote config to be at, we probably won't see a performance hit from this unoptimized uniqueness
|
|
84
|
-
// implementation.
|
|
85
|
-
// const allKeys = [...new Set([...existing.map(p => p.key), ...Object.keys(all)])];
|
|
86
|
-
const allKeys = [...existing.map(p => p.key), ...Object.keys(all)].filter((v, i, a) => a.indexOf(v) === i);
|
|
87
|
-
return allKeys.map(key => {
|
|
88
|
-
const updatedValue = all[key];
|
|
89
|
-
return updatedValue ? new Parameter(key, rc ? rc.fetchTimeMillis : -1, updatedValue.getSource(), updatedValue.asString())
|
|
90
|
-
: existing.find(p => p.key === key);
|
|
91
|
-
});
|
|
37
|
+
var Value = class {
|
|
38
|
+
_source;
|
|
39
|
+
_value;
|
|
40
|
+
asBoolean() {
|
|
41
|
+
return ["1", "true", "t", "y", "yes", "on"].indexOf(this._value.toLowerCase()) > -1;
|
|
42
|
+
}
|
|
43
|
+
asString() {
|
|
44
|
+
return this._value;
|
|
45
|
+
}
|
|
46
|
+
asNumber() {
|
|
47
|
+
return Number(this._value) || 0;
|
|
48
|
+
}
|
|
49
|
+
getSource() {
|
|
50
|
+
return this._source;
|
|
51
|
+
}
|
|
52
|
+
constructor(_source, _value) {
|
|
53
|
+
this._source = _source;
|
|
54
|
+
this._value = _value;
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
var Parameter = class extends Value {
|
|
58
|
+
key;
|
|
59
|
+
fetchTimeMillis;
|
|
60
|
+
constructor(key, fetchTimeMillis, source, value) {
|
|
61
|
+
super(source, value);
|
|
62
|
+
this.key = key;
|
|
63
|
+
this.fetchTimeMillis = fetchTimeMillis;
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
var filterTest = (fn) => filter((it) => Array.isArray(it) ? it.some(fn) : fn(it));
|
|
67
|
+
var filterRemote = () => filterTest((p) => p.getSource() === "remote");
|
|
68
|
+
var filterFresh = (howRecentInMillis) => filterTest((p) => p.fetchTimeMillis + howRecentInMillis >= (/* @__PURE__ */ new Date()).getTime());
|
|
69
|
+
var scanToParametersArray = (remoteConfig) => pipe(withLatestFrom(remoteConfig), scan((existing, [all, rc]) => {
|
|
70
|
+
const allKeys = [...existing.map((p) => p.key), ...Object.keys(all)].filter((v, i, a) => a.indexOf(v) === i);
|
|
71
|
+
return allKeys.map((key) => {
|
|
72
|
+
const updatedValue = all[key];
|
|
73
|
+
return updatedValue ? new Parameter(key, rc ? rc.fetchTimeMillis : -1, updatedValue.getSource(), updatedValue.asString()) : existing.find((p) => p.key === key);
|
|
74
|
+
});
|
|
92
75
|
}, []));
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
76
|
+
var AngularFireRemoteConfig = class _AngularFireRemoteConfig {
|
|
77
|
+
zone;
|
|
78
|
+
changes;
|
|
79
|
+
parameters;
|
|
80
|
+
numbers;
|
|
81
|
+
booleans;
|
|
82
|
+
strings;
|
|
83
|
+
constructor(options, name, settings, defaultConfig, zone, schedulers, platformId) {
|
|
84
|
+
this.zone = zone;
|
|
85
|
+
const remoteConfig$ = of(void 0).pipe(observeOn(schedulers.outsideAngular), switchMap(() => isSupported()), switchMap((isSupported2) => isSupported2 ? import("firebase/compat/remote-config") : EMPTY), map(() => ɵfirebaseAppFactory(options, zone, name)), map((app) => ɵcacheInstance(`${app.name}.remote-config`, "AngularFireRemoteConfig", app.name, () => {
|
|
86
|
+
const rc = app.remoteConfig();
|
|
87
|
+
if (settings) {
|
|
88
|
+
rc.settings = settings;
|
|
89
|
+
}
|
|
90
|
+
if (defaultConfig) {
|
|
91
|
+
rc.defaultConfig = defaultConfig;
|
|
92
|
+
}
|
|
93
|
+
return rc;
|
|
94
|
+
}, [settings, defaultConfig])), startWith(void 0), shareReplay({ bufferSize: 1, refCount: false }));
|
|
95
|
+
const loadedRemoteConfig$ = remoteConfig$.pipe(filter((rc) => !!rc));
|
|
96
|
+
const default$ = of(Object.keys(defaultConfig || {}).reduce((c, k) => ({ ...c, [k]: new Value("default", defaultConfig[k].toString()) }), {}));
|
|
97
|
+
const filterOutDefaults = map((all) => Object.keys(all).filter((key) => all[key].getSource() !== "default").reduce((acc, key) => ({ ...acc, [key]: all[key] }), {}));
|
|
98
|
+
const existing$ = loadedRemoteConfig$.pipe(switchMap((rc) => rc.activate().then(() => rc.ensureInitialized()).then(() => rc.getAll())), filterOutDefaults);
|
|
99
|
+
const fresh$ = loadedRemoteConfig$.pipe(switchMap((rc) => zone.runOutsideAngular(() => rc.fetchAndActivate().then(() => rc.ensureInitialized()).then(() => rc.getAll()))), filterOutDefaults);
|
|
100
|
+
this.parameters = concat(default$, existing$, fresh$).pipe(scanToParametersArray(remoteConfig$), keepUnstableUntilFirst, shareReplay({ bufferSize: 1, refCount: true }));
|
|
101
|
+
this.changes = this.parameters.pipe(switchMap((params) => of(...params)), groupBy((param) => param.key), mergeMap((group) => group.pipe(distinctUntilChanged())));
|
|
102
|
+
this.strings = proxyAll(this.parameters, "strings");
|
|
103
|
+
this.booleans = proxyAll(this.parameters, "booleans");
|
|
104
|
+
this.numbers = proxyAll(this.parameters, "numbers");
|
|
105
|
+
return ɵlazySDKProxy(this, loadedRemoteConfig$, zone);
|
|
106
|
+
}
|
|
107
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.3", ngImport: i0, type: _AngularFireRemoteConfig, deps: [{ token: FIREBASE_OPTIONS }, { token: FIREBASE_APP_NAME, optional: true }, { token: SETTINGS, optional: true }, { token: DEFAULTS, optional: true }, { token: i0.NgZone }, { token: i1.ɵAngularFireSchedulers }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
108
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0-rc.3", ngImport: i0, type: _AngularFireRemoteConfig, providedIn: "any" });
|
|
109
|
+
};
|
|
110
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.3", ngImport: i0, type: AngularFireRemoteConfig, decorators: [{
|
|
111
|
+
type: Injectable,
|
|
112
|
+
args: [{
|
|
113
|
+
providedIn: "any"
|
|
114
|
+
}]
|
|
115
|
+
}], ctorParameters: () => [{ type: void 0, decorators: [{
|
|
116
|
+
type: Inject,
|
|
117
|
+
args: [FIREBASE_OPTIONS]
|
|
118
|
+
}] }, { type: void 0, decorators: [{
|
|
119
|
+
type: Optional
|
|
120
|
+
}, {
|
|
121
|
+
type: Inject,
|
|
122
|
+
args: [FIREBASE_APP_NAME]
|
|
123
|
+
}] }, { type: void 0, decorators: [{
|
|
124
|
+
type: Optional
|
|
125
|
+
}, {
|
|
126
|
+
type: Inject,
|
|
127
|
+
args: [SETTINGS]
|
|
128
|
+
}] }, { type: void 0, decorators: [{
|
|
129
|
+
type: Optional
|
|
130
|
+
}, {
|
|
131
|
+
type: Inject,
|
|
132
|
+
args: [DEFAULTS]
|
|
133
|
+
}] }, { type: i0.NgZone }, { type: i1.ɵAngularFireSchedulers }, { type: Object, decorators: [{
|
|
134
|
+
type: Inject,
|
|
135
|
+
args: [PLATFORM_ID]
|
|
136
|
+
}] }] });
|
|
137
|
+
var budget = (interval) => (source) => new Observable((observer) => {
|
|
138
|
+
let timedOut = false;
|
|
139
|
+
const timeout = setTimeout(() => {
|
|
140
|
+
observer.complete();
|
|
141
|
+
timedOut = true;
|
|
142
|
+
}, interval);
|
|
143
|
+
return source.subscribe({
|
|
144
|
+
next(val) {
|
|
145
|
+
if (!timedOut) {
|
|
146
|
+
observer.next(val);
|
|
147
|
+
}
|
|
148
|
+
},
|
|
149
|
+
error(err) {
|
|
150
|
+
if (!timedOut) {
|
|
151
|
+
clearTimeout(timeout);
|
|
152
|
+
observer.error(err);
|
|
153
|
+
}
|
|
154
|
+
},
|
|
155
|
+
complete() {
|
|
156
|
+
if (!timedOut) {
|
|
157
|
+
clearTimeout(timeout);
|
|
168
158
|
observer.complete();
|
|
169
|
-
|
|
170
|
-
}, interval);
|
|
171
|
-
return source.subscribe({
|
|
172
|
-
next(val) {
|
|
173
|
-
if (!timedOut) {
|
|
174
|
-
observer.next(val);
|
|
175
|
-
}
|
|
176
|
-
},
|
|
177
|
-
error(err) {
|
|
178
|
-
if (!timedOut) {
|
|
179
|
-
clearTimeout(timeout);
|
|
180
|
-
observer.error(err);
|
|
181
|
-
}
|
|
182
|
-
},
|
|
183
|
-
complete() {
|
|
184
|
-
if (!timedOut) {
|
|
185
|
-
clearTimeout(timeout);
|
|
186
|
-
observer.complete();
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
});
|
|
190
|
-
});
|
|
191
|
-
const typedMethod = (it) => {
|
|
192
|
-
switch (typeof it) {
|
|
193
|
-
case 'string':
|
|
194
|
-
return 'asString';
|
|
195
|
-
case 'boolean':
|
|
196
|
-
return 'asBoolean';
|
|
197
|
-
case 'number':
|
|
198
|
-
return 'asNumber';
|
|
199
|
-
default:
|
|
200
|
-
return 'asString';
|
|
159
|
+
}
|
|
201
160
|
}
|
|
161
|
+
});
|
|
162
|
+
});
|
|
163
|
+
var typedMethod = (it) => {
|
|
164
|
+
switch (typeof it) {
|
|
165
|
+
case "string":
|
|
166
|
+
return "asString";
|
|
167
|
+
case "boolean":
|
|
168
|
+
return "asBoolean";
|
|
169
|
+
case "number":
|
|
170
|
+
return "asNumber";
|
|
171
|
+
default:
|
|
172
|
+
return "asString";
|
|
173
|
+
}
|
|
202
174
|
};
|
|
203
|
-
function scanToObject(to =
|
|
204
|
-
|
|
175
|
+
function scanToObject(to = "strings") {
|
|
176
|
+
return pipe(
|
|
205
177
|
// TODO cleanup
|
|
206
178
|
scan((c, p) => ({
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
179
|
+
...c,
|
|
180
|
+
[p.key]: typeof to === "object" ? p[typedMethod(to[p.key])]() : p[AS_TO_FN[to]]()
|
|
181
|
+
}), typeof to === "object" ? to : {}),
|
|
182
|
+
debounceTime(1),
|
|
183
|
+
budget(10),
|
|
184
|
+
distinctUntilChanged((a, b) => JSON.stringify(a) === JSON.stringify(b))
|
|
185
|
+
);
|
|
213
186
|
}
|
|
214
|
-
function mapToObject(to =
|
|
215
|
-
|
|
187
|
+
function mapToObject(to = "strings") {
|
|
188
|
+
return pipe(
|
|
216
189
|
// TODO this is getting a little long, cleanup
|
|
217
190
|
map((params) => params.reduce((c, p) => ({
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
{})), distinctUntilChanged((a, b) => JSON.stringify(a) === JSON.stringify(b)));
|
|
191
|
+
...c,
|
|
192
|
+
[p.key]: typeof to === "object" ? p[typedMethod(to[p.key])]() : p[AS_TO_FN[to]]()
|
|
193
|
+
}), typeof to === "object" ? to : {})),
|
|
194
|
+
distinctUntilChanged((a, b) => JSON.stringify(a) === JSON.stringify(b))
|
|
195
|
+
);
|
|
224
196
|
}
|
|
225
197
|
ɵapplyMixins(AngularFireRemoteConfig, [proxyPolyfillCompat]);
|
|
226
198
|
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
export {
|
|
199
|
+
// remote-config.module.mjs
|
|
200
|
+
import { NgModule } from "@angular/core";
|
|
201
|
+
import { VERSION } from "@angular/fire";
|
|
202
|
+
import firebase from "firebase/compat/app";
|
|
203
|
+
import * as i02 from "@angular/core";
|
|
204
|
+
var AngularFireRemoteConfigModule = class _AngularFireRemoteConfigModule {
|
|
205
|
+
constructor() {
|
|
206
|
+
firebase.registerVersion("angularfire", VERSION.full, "rc-compat");
|
|
207
|
+
}
|
|
208
|
+
static ɵfac = i02.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.3", ngImport: i02, type: _AngularFireRemoteConfigModule, deps: [], target: i02.ɵɵFactoryTarget.NgModule });
|
|
209
|
+
static ɵmod = i02.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.0-rc.3", ngImport: i02, type: _AngularFireRemoteConfigModule });
|
|
210
|
+
static ɵinj = i02.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.0-rc.3", ngImport: i02, type: _AngularFireRemoteConfigModule, providers: [AngularFireRemoteConfig] });
|
|
211
|
+
};
|
|
212
|
+
i02.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.3", ngImport: i02, type: AngularFireRemoteConfigModule, decorators: [{
|
|
213
|
+
type: NgModule,
|
|
214
|
+
args: [{
|
|
215
|
+
providers: [AngularFireRemoteConfig]
|
|
216
|
+
}]
|
|
217
|
+
}], ctorParameters: () => [] });
|
|
218
|
+
export {
|
|
219
|
+
AngularFireRemoteConfig,
|
|
220
|
+
AngularFireRemoteConfigModule,
|
|
221
|
+
DEFAULTS,
|
|
222
|
+
Parameter,
|
|
223
|
+
SETTINGS,
|
|
224
|
+
Value,
|
|
225
|
+
budget,
|
|
226
|
+
filterFresh,
|
|
227
|
+
filterRemote,
|
|
228
|
+
mapToObject,
|
|
229
|
+
scanToObject
|
|
230
|
+
};
|
|
247
231
|
//# sourceMappingURL=angular-fire-compat-remote-config.mjs.map
|