@angular/fire 18.0.0 → 18.0.1-canary.3639e41
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/esm2022/analytics/analytics.module.mjs +5 -5
- 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/database/database.mjs +4 -4
- package/esm2022/compat/database/database.module.mjs +5 -5
- package/esm2022/compat/firebase.app.module.mjs +5 -5
- package/esm2022/compat/firestore/firestore.mjs +4 -4
- package/esm2022/compat/firestore/firestore.module.mjs +5 -5
- 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/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 +8 -8
- package/esm2022/compat/storage/storage.mjs +4 -4
- package/esm2022/compat/storage/storage.module.mjs +5 -5
- 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/messaging.module.mjs +5 -5
- package/esm2022/performance/performance.module.mjs +5 -5
- 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 +297 -410
- package/fesm2022/angular-fire-analytics.mjs.map +1 -7
- package/fesm2022/angular-fire-app-check.mjs +91 -162
- package/fesm2022/angular-fire-app-check.mjs.map +1 -7
- package/fesm2022/angular-fire-app.mjs +108 -181
- package/fesm2022/angular-fire-app.mjs.map +1 -7
- package/fesm2022/angular-fire-auth-guard.mjs +73 -83
- package/fesm2022/angular-fire-auth-guard.mjs.map +1 -7
- package/fesm2022/angular-fire-auth.mjs +142 -421
- package/fesm2022/angular-fire-auth.mjs.map +1 -7
- package/fesm2022/angular-fire-compat-analytics.mjs +271 -262
- package/fesm2022/angular-fire-compat-analytics.mjs.map +1 -7
- package/fesm2022/angular-fire-compat-auth-guard.mjs +72 -83
- package/fesm2022/angular-fire-compat-auth-guard.mjs.map +1 -7
- package/fesm2022/angular-fire-compat-auth.mjs +214 -215
- package/fesm2022/angular-fire-compat-auth.mjs.map +1 -7
- package/fesm2022/angular-fire-compat-database.mjs +378 -375
- package/fesm2022/angular-fire-compat-database.mjs.map +1 -7
- package/fesm2022/angular-fire-compat-firestore.mjs +677 -537
- package/fesm2022/angular-fire-compat-firestore.mjs.map +1 -7
- package/fesm2022/angular-fire-compat-functions.mjs +94 -98
- package/fesm2022/angular-fire-compat-functions.mjs.map +1 -7
- package/fesm2022/angular-fire-compat-messaging.mjs +107 -107
- package/fesm2022/angular-fire-compat-messaging.mjs.map +1 -7
- package/fesm2022/angular-fire-compat-performance.mjs +152 -158
- package/fesm2022/angular-fire-compat-performance.mjs.map +1 -7
- package/fesm2022/angular-fire-compat-remote-config.mjs +232 -216
- package/fesm2022/angular-fire-compat-remote-config.mjs.map +1 -7
- package/fesm2022/angular-fire-compat-storage.mjs +231 -226
- package/fesm2022/angular-fire-compat-storage.mjs.map +1 -7
- package/fesm2022/angular-fire-compat.mjs +153 -140
- package/fesm2022/angular-fire-compat.mjs.map +1 -7
- package/fesm2022/angular-fire-database.mjs +136 -376
- package/fesm2022/angular-fire-database.mjs.map +1 -7
- package/fesm2022/angular-fire-firestore-lite.mjs +139 -388
- package/fesm2022/angular-fire-firestore-lite.mjs.map +1 -7
- package/fesm2022/angular-fire-firestore.mjs +167 -526
- package/fesm2022/angular-fire-firestore.mjs.map +1 -7
- package/fesm2022/angular-fire-functions.mjs +93 -166
- package/fesm2022/angular-fire-functions.mjs.map +1 -7
- package/fesm2022/angular-fire-messaging.mjs +118 -196
- package/fesm2022/angular-fire-messaging.mjs.map +1 -7
- package/fesm2022/angular-fire-performance.mjs +104 -178
- package/fesm2022/angular-fire-performance.mjs.map +1 -7
- package/fesm2022/angular-fire-remote-config.mjs +132 -254
- package/fesm2022/angular-fire-remote-config.mjs.map +1 -7
- package/fesm2022/angular-fire-storage.mjs +105 -225
- package/fesm2022/angular-fire-storage.mjs.map +1 -7
- package/fesm2022/angular-fire-vertexai-preview.mjs +85 -146
- package/fesm2022/angular-fire-vertexai-preview.mjs.map +1 -7
- package/fesm2022/angular-fire.mjs +213 -183
- package/fesm2022/angular-fire.mjs.map +1 -7
- package/package.json +1 -1
|
@@ -1,7 +1 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/compat/analytics/base.ts", "../../../src/compat/analytics/analytics.ts", "../../../src/compat/analytics/user-tracking.service.ts", "../../../src/compat/analytics/screen-tracking.service.ts", "../../../src/compat/analytics/analytics.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/analytics, so Proxy can work with proxy-polyfill in Internet Explorer\nexport const proxyPolyfillCompat = {\n app: null,\n logEvent: null,\n setCurrentScreen: null,\n setUserId: null,\n setUserProperties: null,\n setAnalyticsCollectionEnabled: null,\n};\n", "import { isPlatformBrowser } from '@angular/common';\nimport { Inject, Injectable, InjectionToken, NgZone, Optional, PLATFORM_ID } from '@angular/core';\nimport { ɵAngularFireSchedulers } from '@angular/fire';\nimport { ɵPromiseProxy, ɵapplyMixins, ɵcacheInstance, ɵlazySDKProxy } from '@angular/fire/compat';\nimport { FirebaseApp } from '@angular/fire/compat';\nimport { isSupported } from 'firebase/analytics';\nimport firebase from 'firebase/compat/app';\nimport { EMPTY, of } from 'rxjs';\nimport { map, observeOn, shareReplay, switchMap } from 'rxjs/operators';\nimport { proxyPolyfillCompat } from './base';\n\nexport type Config = Record<string, any>;\n\nexport const COLLECTION_ENABLED = new InjectionToken<boolean>('angularfire2.analytics.analyticsCollectionEnabled');\nexport const APP_VERSION = new InjectionToken<string>('angularfire2.analytics.appVersion');\nexport const APP_NAME = new InjectionToken<string>('angularfire2.analytics.appName');\nexport const DEBUG_MODE = new InjectionToken<boolean>('angularfire2.analytics.debugMode');\nexport const CONFIG = new InjectionToken<Config>('angularfire2.analytics.config');\n\nconst APP_NAME_KEY = 'app_name';\nconst APP_VERSION_KEY = 'app_version';\nconst DEBUG_MODE_KEY = 'debug_mode';\nconst GTAG_CONFIG_COMMAND = 'config';\nconst GTAG_FUNCTION_NAME = 'gtag'; // TODO rename these\nconst DATA_LAYER_NAME = 'dataLayer';\nconst SEND_TO_KEY = 'send_to';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface AngularFireAnalytics extends ɵPromiseProxy<firebase.analytics.Analytics> {\n}\n\n@Injectable({\n providedIn: 'any'\n})\nexport class AngularFireAnalytics {\n\n private measurementId: string;\n private analyticsInitialized = new Promise<void>(() => undefined);\n\n async updateConfig(config: Config) {\n await this.analyticsInitialized;\n window[GTAG_FUNCTION_NAME](GTAG_CONFIG_COMMAND, this.measurementId, { ...config, update: true });\n }\n\n constructor(\n app: FirebaseApp,\n @Optional() @Inject(COLLECTION_ENABLED) analyticsCollectionEnabled: boolean | null,\n @Optional() @Inject(APP_VERSION) providedAppVersion: string | null,\n @Optional() @Inject(APP_NAME) providedAppName: string | null,\n @Optional() @Inject(DEBUG_MODE) debugModeEnabled: boolean | null,\n @Optional() @Inject(CONFIG) providedConfig: Config | null,\n // eslint-disable-next-line @typescript-eslint/ban-types\n @Inject(PLATFORM_ID) platformId: Object,\n zone: NgZone,\n schedulers: ɵAngularFireSchedulers,\n ) {\n\n if (isPlatformBrowser(platformId)) {\n\n window[DATA_LAYER_NAME] = window[DATA_LAYER_NAME] || [];\n\n // It turns out we can't rely on the measurementId in the Firebase config JSON\n // this identifier is not stable. firebase/analytics does a call to get a fresh value\n // falling back on the one in the config. Rather than do that ourselves we should listen\n // on our gtag function for a analytics config command\n // e.g, ['config', measurementId, { origin: 'firebase', firebase_id }]\n const parseMeasurementId = (...args: any[]) => {\n if (args[0] === 'config' && args[2].origin === 'firebase') {\n this.measurementId = args[1];\n return true;\n } else {\n return false;\n }\n };\n\n const patchGtag = (fn?: (...args: any[]) => void) => {\n window[GTAG_FUNCTION_NAME] = (...args: any[]) => {\n if (fn) {\n fn(...args);\n }\n // Inject app_name and app_version into events\n // TODO(jamesdaniels): I'm doing this as documented but it's still not\n // showing up in the console. Investigate. Guessing it's just part of the\n // whole GA4 transition mess.\n if (args[0] === 'event' && args[2][SEND_TO_KEY] === this.measurementId) {\n if (providedAppName) {\n args[2][APP_NAME_KEY] = providedAppName;\n }\n if (providedAppVersion) {\n args[2][APP_VERSION_KEY] = providedAppVersion;\n }\n }\n if (debugModeEnabled && typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.info(...args);\n }\n /**\n * According to the gtag documentation, this function that defines a custom data layer cannot be\n * an arrow function because 'arguments' is not an array. It is actually an object that behaves\n * like an array and contains more information then just indexes. Transforming this into arrow function\n * caused issue #2505 where analytics no longer sent any data.\n */\n (function(..._args: any[]) {\n window[DATA_LAYER_NAME].push(arguments);\n })(...args);\n };\n };\n\n // Unclear if we still need to but I was running into config/events I passed\n // to gtag before ['js' timestamp] weren't getting parsed, so let's make a promise\n // that resolves when firebase/analytics has configured gtag.js that we wait on\n // before sending anything\n const firebaseAnalyticsAlreadyInitialized = window[DATA_LAYER_NAME].some(parseMeasurementId);\n if (firebaseAnalyticsAlreadyInitialized) {\n this.analyticsInitialized = Promise.resolve();\n patchGtag();\n } else {\n this.analyticsInitialized = new Promise(resolve => {\n patchGtag((...args) => {\n if (parseMeasurementId(...args)) {\n resolve();\n }\n });\n });\n }\n\n if (providedConfig) {\n this.updateConfig(providedConfig);\n }\n if (debugModeEnabled) {\n this.updateConfig({ [DEBUG_MODE_KEY]: 1 });\n }\n\n } else {\n\n this.analyticsInitialized = Promise.resolve();\n\n }\n\n const analytics = of(undefined).pipe(\n observeOn(schedulers.outsideAngular),\n switchMap(isSupported),\n switchMap(supported => supported ? zone.runOutsideAngular(() => import('firebase/compat/analytics')) : EMPTY),\n map(() => {\n return ɵcacheInstance(`analytics`, 'AngularFireAnalytics', app.name, () => {\n const analytics = app.analytics();\n if (analyticsCollectionEnabled === false) {\n analytics.setAnalyticsCollectionEnabled(false);\n }\n return analytics;\n }, [app, analyticsCollectionEnabled, providedConfig, debugModeEnabled]);\n }),\n shareReplay({ bufferSize: 1, refCount: false })\n );\n\n return ɵlazySDKProxy(this, analytics, zone);\n\n }\n\n}\n\nɵapplyMixins(AngularFireAnalytics, [proxyPolyfillCompat]);\n", "import { isPlatformServer } from '@angular/common';\nimport { Inject, Injectable, NgZone, OnDestroy, PLATFORM_ID } from '@angular/core';\nimport { VERSION } from '@angular/fire';\nimport { AngularFireAuth } from '@angular/fire/compat/auth';\nimport firebase from 'firebase/compat/app';\nimport { Subscription } from 'rxjs';\nimport { AngularFireAnalytics } from './analytics';\n\n@Injectable()\nexport class UserTrackingService implements OnDestroy {\n\n initialized: Promise<void>;\n private disposables: Subscription[] = [];\n\n // TODO a user properties injector\n constructor(\n analytics: AngularFireAnalytics,\n // eslint-disable-next-line @typescript-eslint/ban-types\n @Inject(PLATFORM_ID) platformId: Object,\n auth: AngularFireAuth,\n zone: NgZone,\n ) {\n firebase.registerVersion('angularfire', VERSION.full, 'compat-user-tracking');\n if (!isPlatformServer(platformId)) {\n let resolveInitialized;\n this.initialized = zone.runOutsideAngular(() => new Promise(resolve => resolveInitialized = resolve));\n this.disposables = [\n auth.authState.subscribe(user => {\n analytics.setUserId(user?.uid);\n resolveInitialized();\n }),\n auth.credential.subscribe(credential => {\n if (credential) {\n const method = credential.user.isAnonymous ? 'anonymous' : credential.additionalUserInfo.providerId;\n if (credential.additionalUserInfo.isNewUser) {\n analytics.logEvent('sign_up', { method });\n }\n analytics.logEvent('login', { method });\n }\n })\n ];\n } else {\n this.initialized = Promise.resolve();\n }\n\n }\n\n ngOnDestroy() {\n this.disposables.forEach(it => it.unsubscribe());\n }\n}\n", "import { ComponentFactoryResolver, Injectable, NgZone, OnDestroy, Optional } from '@angular/core';\nimport { VERSION } from '@angular/fire';\nimport { ɵscreenViewEvent } from '@angular/fire/analytics';\nimport { Title } from '@angular/platform-browser';\nimport { Router } from '@angular/router';\nimport firebase from 'firebase/compat/app';\nimport { Subscription } from 'rxjs';\nimport { switchMap } from 'rxjs/operators';\nimport { AngularFireAnalytics } from './analytics';\nimport { UserTrackingService } from './user-tracking.service';\n\nconst SCREEN_VIEW_EVENT = 'screen_view';\n\n@Injectable()\nexport class ScreenTrackingService implements OnDestroy {\n\n private disposable: Subscription | undefined;\n\n constructor(\n analytics: AngularFireAnalytics,\n @Optional() router: Router,\n @Optional() title: Title,\n componentFactoryResolver: ComponentFactoryResolver,\n zone: NgZone,\n @Optional() userTrackingService: UserTrackingService,\n ) {\n firebase.registerVersion('angularfire', VERSION.full, 'compat-screen-tracking');\n if (!router || !analytics) { return this; }\n zone.runOutsideAngular(() => {\n this.disposable = ɵscreenViewEvent(router, title, componentFactoryResolver).pipe(\n switchMap(async params => {\n if (userTrackingService) {\n await userTrackingService.initialized;\n }\n return await analytics.logEvent(SCREEN_VIEW_EVENT, params);\n })\n ).subscribe();\n });\n }\n\n ngOnDestroy() {\n if (this.disposable) {\n this.disposable.unsubscribe();\n }\n }\n\n}\n", "import { NgModule, Optional } from '@angular/core';\nimport { VERSION } from '@angular/fire';\nimport firebase from 'firebase/compat/app';\nimport { AngularFireAnalytics } from './analytics';\nimport { ScreenTrackingService } from './screen-tracking.service';\nimport { UserTrackingService } from './user-tracking.service';\n\n@NgModule({\n providers: [ AngularFireAnalytics ]\n})\nexport class AngularFireAnalyticsModule {\n constructor(\n analytics: AngularFireAnalytics,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n @Optional() screenTracking: ScreenTrackingService,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n @Optional() userTracking: UserTrackingService,\n ) {\n firebase.registerVersion('angularfire', VERSION.full, 'analytics-compat');\n // calling anything on analytics will eagerly load the SDK\n analytics.app.then(() => undefined);\n }\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["analytics", "Inject", "Injectable", "NgZone", "PLATFORM_ID", "Injectable", "NgZone", "Optional", "VERSION", "firebase", "switchMap", "Optional", "VERSION", "firebase"]
|
|
7
|
-
}
|
|
1
|
+
{"version":3,"file":"angular-fire-compat-analytics.mjs","sources":["../../../src/compat/analytics/base.ts","../../../src/compat/analytics/analytics.ts","../../../src/compat/analytics/user-tracking.service.ts","../../../src/compat/analytics/screen-tracking.service.ts","../../../src/compat/analytics/analytics.module.ts","../../../src/compat/analytics/angular-fire-compat-analytics.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/analytics, so Proxy can work with proxy-polyfill in Internet Explorer\nexport const proxyPolyfillCompat = {\n app: null,\n logEvent: null,\n setCurrentScreen: null,\n setUserId: null,\n setUserProperties: null,\n setAnalyticsCollectionEnabled: null,\n};\n","import { isPlatformBrowser } from '@angular/common';\nimport { Inject, Injectable, InjectionToken, NgZone, Optional, PLATFORM_ID } from '@angular/core';\nimport { ɵAngularFireSchedulers } from '@angular/fire';\nimport { ɵPromiseProxy, ɵapplyMixins, ɵcacheInstance, ɵlazySDKProxy } from '@angular/fire/compat';\nimport { FirebaseApp } from '@angular/fire/compat';\nimport { isSupported } from 'firebase/analytics';\nimport firebase from 'firebase/compat/app';\nimport { EMPTY, of } from 'rxjs';\nimport { map, observeOn, shareReplay, switchMap } from 'rxjs/operators';\nimport { proxyPolyfillCompat } from './base';\n\nexport type Config = Record<string, any>;\n\nexport const COLLECTION_ENABLED = new InjectionToken<boolean>('angularfire2.analytics.analyticsCollectionEnabled');\nexport const APP_VERSION = new InjectionToken<string>('angularfire2.analytics.appVersion');\nexport const APP_NAME = new InjectionToken<string>('angularfire2.analytics.appName');\nexport const DEBUG_MODE = new InjectionToken<boolean>('angularfire2.analytics.debugMode');\nexport const CONFIG = new InjectionToken<Config>('angularfire2.analytics.config');\n\nconst APP_NAME_KEY = 'app_name';\nconst APP_VERSION_KEY = 'app_version';\nconst DEBUG_MODE_KEY = 'debug_mode';\nconst GTAG_CONFIG_COMMAND = 'config';\nconst GTAG_FUNCTION_NAME = 'gtag'; // TODO rename these\nconst DATA_LAYER_NAME = 'dataLayer';\nconst SEND_TO_KEY = 'send_to';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface AngularFireAnalytics extends ɵPromiseProxy<firebase.analytics.Analytics> {\n}\n\n@Injectable({\n providedIn: 'any'\n})\nexport class AngularFireAnalytics {\n\n private measurementId: string;\n private analyticsInitialized = new Promise<void>(() => undefined);\n\n async updateConfig(config: Config) {\n await this.analyticsInitialized;\n window[GTAG_FUNCTION_NAME](GTAG_CONFIG_COMMAND, this.measurementId, { ...config, update: true });\n }\n\n constructor(\n app: FirebaseApp,\n @Optional() @Inject(COLLECTION_ENABLED) analyticsCollectionEnabled: boolean | null,\n @Optional() @Inject(APP_VERSION) providedAppVersion: string | null,\n @Optional() @Inject(APP_NAME) providedAppName: string | null,\n @Optional() @Inject(DEBUG_MODE) debugModeEnabled: boolean | null,\n @Optional() @Inject(CONFIG) providedConfig: Config | null,\n // eslint-disable-next-line @typescript-eslint/ban-types\n @Inject(PLATFORM_ID) platformId: Object,\n zone: NgZone,\n schedulers: ɵAngularFireSchedulers,\n ) {\n\n if (isPlatformBrowser(platformId)) {\n\n window[DATA_LAYER_NAME] = window[DATA_LAYER_NAME] || [];\n\n // It turns out we can't rely on the measurementId in the Firebase config JSON\n // this identifier is not stable. firebase/analytics does a call to get a fresh value\n // falling back on the one in the config. Rather than do that ourselves we should listen\n // on our gtag function for a analytics config command\n // e.g, ['config', measurementId, { origin: 'firebase', firebase_id }]\n const parseMeasurementId = (...args: any[]) => {\n if (args[0] === 'config' && args[2].origin === 'firebase') {\n this.measurementId = args[1];\n return true;\n } else {\n return false;\n }\n };\n\n const patchGtag = (fn?: (...args: any[]) => void) => {\n window[GTAG_FUNCTION_NAME] = (...args: any[]) => {\n if (fn) {\n fn(...args);\n }\n // Inject app_name and app_version into events\n // TODO(jamesdaniels): I'm doing this as documented but it's still not\n // showing up in the console. Investigate. Guessing it's just part of the\n // whole GA4 transition mess.\n if (args[0] === 'event' && args[2][SEND_TO_KEY] === this.measurementId) {\n if (providedAppName) {\n args[2][APP_NAME_KEY] = providedAppName;\n }\n if (providedAppVersion) {\n args[2][APP_VERSION_KEY] = providedAppVersion;\n }\n }\n if (debugModeEnabled && typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.info(...args);\n }\n /**\n * According to the gtag documentation, this function that defines a custom data layer cannot be\n * an arrow function because 'arguments' is not an array. It is actually an object that behaves\n * like an array and contains more information then just indexes. Transforming this into arrow function\n * caused issue #2505 where analytics no longer sent any data.\n */\n (function(..._args: any[]) {\n window[DATA_LAYER_NAME].push(arguments);\n })(...args);\n };\n };\n\n // Unclear if we still need to but I was running into config/events I passed\n // to gtag before ['js' timestamp] weren't getting parsed, so let's make a promise\n // that resolves when firebase/analytics has configured gtag.js that we wait on\n // before sending anything\n const firebaseAnalyticsAlreadyInitialized = window[DATA_LAYER_NAME].some(parseMeasurementId);\n if (firebaseAnalyticsAlreadyInitialized) {\n this.analyticsInitialized = Promise.resolve();\n patchGtag();\n } else {\n this.analyticsInitialized = new Promise(resolve => {\n patchGtag((...args) => {\n if (parseMeasurementId(...args)) {\n resolve();\n }\n });\n });\n }\n\n if (providedConfig) {\n this.updateConfig(providedConfig);\n }\n if (debugModeEnabled) {\n this.updateConfig({ [DEBUG_MODE_KEY]: 1 });\n }\n\n } else {\n\n this.analyticsInitialized = Promise.resolve();\n\n }\n\n const analytics = of(undefined).pipe(\n observeOn(schedulers.outsideAngular),\n switchMap(isSupported),\n switchMap(supported => supported ? zone.runOutsideAngular(() => import('firebase/compat/analytics')) : EMPTY),\n map(() => {\n return ɵcacheInstance(`analytics`, 'AngularFireAnalytics', app.name, () => {\n const analytics = app.analytics();\n if (analyticsCollectionEnabled === false) {\n analytics.setAnalyticsCollectionEnabled(false);\n }\n return analytics;\n }, [app, analyticsCollectionEnabled, providedConfig, debugModeEnabled]);\n }),\n shareReplay({ bufferSize: 1, refCount: false })\n );\n\n return ɵlazySDKProxy(this, analytics, zone);\n\n }\n\n}\n\nɵapplyMixins(AngularFireAnalytics, [proxyPolyfillCompat]);\n","import { isPlatformServer } from '@angular/common';\nimport { Inject, Injectable, NgZone, OnDestroy, PLATFORM_ID } from '@angular/core';\nimport { VERSION } from '@angular/fire';\nimport { AngularFireAuth } from '@angular/fire/compat/auth';\nimport firebase from 'firebase/compat/app';\nimport { Subscription } from 'rxjs';\nimport { AngularFireAnalytics } from './analytics';\n\n@Injectable()\nexport class UserTrackingService implements OnDestroy {\n\n initialized: Promise<void>;\n private disposables: Subscription[] = [];\n\n // TODO a user properties injector\n constructor(\n analytics: AngularFireAnalytics,\n // eslint-disable-next-line @typescript-eslint/ban-types\n @Inject(PLATFORM_ID) platformId: Object,\n auth: AngularFireAuth,\n zone: NgZone,\n ) {\n firebase.registerVersion('angularfire', VERSION.full, 'compat-user-tracking');\n if (!isPlatformServer(platformId)) {\n let resolveInitialized;\n this.initialized = zone.runOutsideAngular(() => new Promise(resolve => resolveInitialized = resolve));\n this.disposables = [\n auth.authState.subscribe(user => {\n analytics.setUserId(user?.uid);\n resolveInitialized();\n }),\n auth.credential.subscribe(credential => {\n if (credential) {\n const method = credential.user.isAnonymous ? 'anonymous' : credential.additionalUserInfo.providerId;\n if (credential.additionalUserInfo.isNewUser) {\n analytics.logEvent('sign_up', { method });\n }\n analytics.logEvent('login', { method });\n }\n })\n ];\n } else {\n this.initialized = Promise.resolve();\n }\n\n }\n\n ngOnDestroy() {\n this.disposables.forEach(it => it.unsubscribe());\n }\n}\n","import { ComponentFactoryResolver, Injectable, NgZone, OnDestroy, Optional } from '@angular/core';\nimport { VERSION } from '@angular/fire';\nimport { ɵscreenViewEvent } from '@angular/fire/analytics';\nimport { Title } from '@angular/platform-browser';\nimport { Router } from '@angular/router';\nimport firebase from 'firebase/compat/app';\nimport { Subscription } from 'rxjs';\nimport { switchMap } from 'rxjs/operators';\nimport { AngularFireAnalytics } from './analytics';\nimport { UserTrackingService } from './user-tracking.service';\n\nconst SCREEN_VIEW_EVENT = 'screen_view';\n\n@Injectable()\nexport class ScreenTrackingService implements OnDestroy {\n\n private disposable: Subscription | undefined;\n\n constructor(\n analytics: AngularFireAnalytics,\n @Optional() router: Router,\n @Optional() title: Title,\n componentFactoryResolver: ComponentFactoryResolver,\n zone: NgZone,\n @Optional() userTrackingService: UserTrackingService,\n ) {\n firebase.registerVersion('angularfire', VERSION.full, 'compat-screen-tracking');\n if (!router || !analytics) { return this; }\n zone.runOutsideAngular(() => {\n this.disposable = ɵscreenViewEvent(router, title, componentFactoryResolver).pipe(\n switchMap(async params => {\n if (userTrackingService) {\n await userTrackingService.initialized;\n }\n return await analytics.logEvent(SCREEN_VIEW_EVENT, params);\n })\n ).subscribe();\n });\n }\n\n ngOnDestroy() {\n if (this.disposable) {\n this.disposable.unsubscribe();\n }\n }\n\n}\n","import { NgModule, Optional } from '@angular/core';\nimport { VERSION } from '@angular/fire';\nimport firebase from 'firebase/compat/app';\nimport { AngularFireAnalytics } from './analytics';\nimport { ScreenTrackingService } from './screen-tracking.service';\nimport { UserTrackingService } from './user-tracking.service';\n\n@NgModule({\n providers: [ AngularFireAnalytics ]\n})\nexport class AngularFireAnalyticsModule {\n constructor(\n analytics: AngularFireAnalytics,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n @Optional() screenTracking: ScreenTrackingService,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n @Optional() userTracking: UserTrackingService,\n ) {\n firebase.registerVersion('angularfire', VERSION.full, 'analytics-compat');\n // calling anything on analytics will eagerly load the SDK\n analytics.app.then(() => undefined);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["ɵcacheInstance","ɵlazySDKProxy","ɵapplyMixins","i2","ɵscreenViewEvent","i1.AngularFireAnalytics","i4.UserTrackingService","i2.ScreenTrackingService","i3.UserTrackingService"],"mappings":"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"}
|
|
@@ -1,86 +1,75 @@
|
|
|
1
|
-
|
|
2
|
-
import { Injectable } from
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import { of, pipe } from
|
|
6
|
-
import { map,
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
};
|
|
33
|
-
i0.ɵɵ
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { Injectable, NgModule } from '@angular/core';
|
|
3
|
+
import * as i2 from '@angular/fire/compat/auth';
|
|
4
|
+
import * as i1 from '@angular/router';
|
|
5
|
+
import { of, pipe } from 'rxjs';
|
|
6
|
+
import { map, take, switchMap } from 'rxjs/operators';
|
|
7
|
+
import { VERSION } from '@angular/fire';
|
|
8
|
+
import firebase from 'firebase/compat/app';
|
|
9
|
+
|
|
10
|
+
const loggedIn = map(user => !!user);
|
|
11
|
+
class AngularFireAuthGuard {
|
|
12
|
+
router;
|
|
13
|
+
auth;
|
|
14
|
+
constructor(router, auth) {
|
|
15
|
+
this.router = router;
|
|
16
|
+
this.auth = auth;
|
|
17
|
+
}
|
|
18
|
+
canActivate = (next, state) => {
|
|
19
|
+
const authPipeFactory = next.data.authGuardPipe || (() => loggedIn);
|
|
20
|
+
return this.auth.user.pipe(take(1), authPipeFactory(next, state), map(can => {
|
|
21
|
+
if (typeof can === 'boolean') {
|
|
22
|
+
return can;
|
|
23
|
+
}
|
|
24
|
+
else if (Array.isArray(can)) {
|
|
25
|
+
return this.router.createUrlTree(can);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
// TODO(EdricChan03): Add tests
|
|
29
|
+
return this.router.parseUrl(can);
|
|
30
|
+
}
|
|
31
|
+
}));
|
|
32
|
+
};
|
|
33
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: AngularFireAuthGuard, deps: [{ token: i1.Router }, { token: i2.AngularFireAuth }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
34
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: AngularFireAuthGuard, providedIn: 'any' });
|
|
35
|
+
}
|
|
36
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: AngularFireAuthGuard, decorators: [{
|
|
37
|
+
type: Injectable,
|
|
38
|
+
args: [{
|
|
39
|
+
providedIn: 'any'
|
|
40
|
+
}]
|
|
41
|
+
}], ctorParameters: () => [{ type: i1.Router }, { type: i2.AngularFireAuth }] });
|
|
42
|
+
const canActivate = (pipe) => ({
|
|
43
|
+
canActivate: [AngularFireAuthGuard], data: { authGuardPipe: pipe }
|
|
42
44
|
});
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
);
|
|
51
|
-
|
|
52
|
-
|
|
45
|
+
const isNotAnonymous = map(user => !!user && !user.isAnonymous);
|
|
46
|
+
const idTokenResult = switchMap((user) => user ? user.getIdTokenResult() : of(null));
|
|
47
|
+
const emailVerified = map(user => !!user && user.emailVerified);
|
|
48
|
+
const customClaims = pipe(idTokenResult, map(idTokenResult => idTokenResult ? idTokenResult.claims : []));
|
|
49
|
+
const hasCustomClaim =
|
|
50
|
+
// eslint-disable-next-line no-prototype-builtins
|
|
51
|
+
(claim) => pipe(customClaims, map(claims => claims.hasOwnProperty(claim)));
|
|
52
|
+
const redirectUnauthorizedTo = (redirect) => pipe(loggedIn, map(loggedIn => loggedIn || redirect));
|
|
53
|
+
const redirectLoggedInTo = (redirect) => pipe(loggedIn, map(loggedIn => loggedIn && redirect || true));
|
|
54
|
+
|
|
55
|
+
class AngularFireAuthGuardModule {
|
|
56
|
+
constructor() {
|
|
57
|
+
firebase.registerVersion('angularfire', VERSION.full, 'auth-guard-compat');
|
|
58
|
+
}
|
|
59
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: AngularFireAuthGuardModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
60
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.0", ngImport: i0, type: AngularFireAuthGuardModule });
|
|
61
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: AngularFireAuthGuardModule, providers: [AngularFireAuthGuard] });
|
|
62
|
+
}
|
|
63
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: AngularFireAuthGuardModule, decorators: [{
|
|
64
|
+
type: NgModule,
|
|
65
|
+
args: [{
|
|
66
|
+
providers: [AngularFireAuthGuard]
|
|
67
|
+
}]
|
|
68
|
+
}], ctorParameters: () => [] });
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Generated bundle index. Do not edit.
|
|
72
|
+
*/
|
|
53
73
|
|
|
54
|
-
|
|
55
|
-
import { NgModule } from "@angular/core";
|
|
56
|
-
import { VERSION } from "@angular/fire";
|
|
57
|
-
import firebase from "firebase/compat/app";
|
|
58
|
-
import * as i02 from "@angular/core";
|
|
59
|
-
var AngularFireAuthGuardModule = class _AngularFireAuthGuardModule {
|
|
60
|
-
constructor() {
|
|
61
|
-
firebase.registerVersion("angularfire", VERSION.full, "auth-guard-compat");
|
|
62
|
-
}
|
|
63
|
-
static ɵfac = i02.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.3", ngImport: i02, type: _AngularFireAuthGuardModule, deps: [], target: i02.ɵɵFactoryTarget.NgModule });
|
|
64
|
-
static ɵmod = i02.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.0-rc.3", ngImport: i02, type: _AngularFireAuthGuardModule });
|
|
65
|
-
static ɵinj = i02.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.0-rc.3", ngImport: i02, type: _AngularFireAuthGuardModule, providers: [AngularFireAuthGuard] });
|
|
66
|
-
};
|
|
67
|
-
i02.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.3", ngImport: i02, type: AngularFireAuthGuardModule, decorators: [{
|
|
68
|
-
type: NgModule,
|
|
69
|
-
args: [{
|
|
70
|
-
providers: [AngularFireAuthGuard]
|
|
71
|
-
}]
|
|
72
|
-
}], ctorParameters: () => [] });
|
|
73
|
-
export {
|
|
74
|
-
AngularFireAuthGuard,
|
|
75
|
-
AngularFireAuthGuardModule,
|
|
76
|
-
canActivate,
|
|
77
|
-
customClaims,
|
|
78
|
-
emailVerified,
|
|
79
|
-
hasCustomClaim,
|
|
80
|
-
idTokenResult,
|
|
81
|
-
isNotAnonymous,
|
|
82
|
-
loggedIn,
|
|
83
|
-
redirectLoggedInTo,
|
|
84
|
-
redirectUnauthorizedTo
|
|
85
|
-
};
|
|
74
|
+
export { AngularFireAuthGuard, AngularFireAuthGuardModule, canActivate, customClaims, emailVerified, hasCustomClaim, idTokenResult, isNotAnonymous, loggedIn, redirectLoggedInTo, redirectUnauthorizedTo };
|
|
86
75
|
//# sourceMappingURL=angular-fire-compat-auth-guard.mjs.map
|
|
@@ -1,7 +1 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/compat/auth-guard/auth-guard.ts", "../../../src/compat/auth-guard/auth-guard.module.ts"],
|
|
4
|
-
"sourcesContent": ["import { Injectable } from '@angular/core';\nimport { AngularFireAuth } from '@angular/fire/compat/auth';\nimport { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot } from '@angular/router';\nimport firebase from 'firebase/compat/app';\nimport { Observable, UnaryFunction, of, pipe } from 'rxjs';\nimport { map, switchMap, take } from 'rxjs/operators';\n\nexport type AuthPipeGenerator = (next: ActivatedRouteSnapshot, state: RouterStateSnapshot) => AuthPipe;\nexport type AuthPipe = UnaryFunction<Observable<firebase.User|null>, Observable<boolean|string|any[]>>;\n\nexport const loggedIn: AuthPipe = map(user => !!user);\n\n@Injectable({\n providedIn: 'any'\n})\nexport class AngularFireAuthGuard implements CanActivate {\n\n constructor(private router: Router, private auth: AngularFireAuth) {}\n\n canActivate = (next: ActivatedRouteSnapshot, state: RouterStateSnapshot) => {\n const authPipeFactory = next.data.authGuardPipe as AuthPipeGenerator || (() => loggedIn);\n return this.auth.user.pipe(\n take(1),\n authPipeFactory(next, state),\n map(can => {\n if (typeof can === 'boolean') {\n return can;\n } else if (Array.isArray(can)) {\n return this.router.createUrlTree(can);\n } else {\n // TODO(EdricChan03): Add tests\n return this.router.parseUrl(can);\n }\n })\n );\n }\n\n}\n\nexport const canActivate = (pipe: AuthPipeGenerator) => ({\n canActivate: [ AngularFireAuthGuard ], data: { authGuardPipe: pipe }\n});\n\n\nexport const isNotAnonymous: AuthPipe = map(user => !!user && !user.isAnonymous);\nexport const idTokenResult = switchMap((user: firebase.User|null) => user ? user.getIdTokenResult() : of(null));\nexport const emailVerified: AuthPipe = map(user => !!user && user.emailVerified);\nexport const customClaims = pipe(idTokenResult, map(idTokenResult => idTokenResult ? idTokenResult.claims : []));\nexport const hasCustomClaim: (claim: string) => AuthPipe =\n // eslint-disable-next-line no-prototype-builtins\n (claim) => pipe(customClaims, map(claims => claims.hasOwnProperty(claim)));\nexport const redirectUnauthorizedTo: (redirect: string|any[]) => AuthPipe =\n (redirect) => pipe(loggedIn, map(loggedIn => loggedIn || redirect));\nexport const redirectLoggedInTo: (redirect: string|any[]) => AuthPipe =\n (redirect) => pipe(loggedIn, map(loggedIn => loggedIn && redirect || true));\n", "import { NgModule } from '@angular/core';\nimport { VERSION } from '@angular/fire';\nimport firebase from 'firebase/compat/app';\nimport { AngularFireAuthGuard } from './auth-guard';\n\n@NgModule({\n providers: [ AngularFireAuthGuard ]\n})\nexport class AngularFireAuthGuardModule {\n constructor() {\n firebase.registerVersion('angularfire', VERSION.full, 'auth-guard-compat');\n }\n}\n"],
|
|
5
|
-
"mappings": ";AAAA,SAAS,kBAAkB;AAC3B,SAAS,uBAAuB;AAChC,SAA8C,cAAmC;AAEjF,SAAoC,IAAI,YAAY;AACpD,SAAS,KAAK,WAAW,YAAY;;;;AAK9B,IAAM,WAAqB,IAAI,UAAQ,CAAC,CAAC,IAAI;AAK9C,IAAO,uBAAP,MAAO,sBAAoB;EAEX;EAAwB;EAA5C,YAAoB,QAAwB,MAAqB;AAA7C,SAAA,SAAA;AAAwB,SAAA,OAAA;EAAwB;EAEpE,cAAc,CAAC,MAA8B,UAA8B;AACzE,UAAM,kBAAkB,KAAK,KAAK,kBAAuC,MAAM;AAC/E,WAAO,KAAK,KAAK,KAAK,KACpB,KAAK,CAAC,GACN,gBAAgB,MAAM,KAAK,GAC3B,IAAI,SAAM;AACR,UAAI,OAAO,QAAQ,WAAW;AAC5B,eAAO;MACT,WAAW,MAAM,QAAQ,GAAG,GAAG;AAC7B,eAAO,KAAK,OAAO,cAAc,GAAG;MACtC,OAAO;AAEL,eAAO,KAAK,OAAO,SAAS,GAAG;MACjC;IACF,CAAC,CAAC;EAEN;0GApBW,uBAAoB,MAAA,CAAA,EAAA,OAAA,UAAA,GAAA,EAAA,OAAA,mBAAA,CAAA,GAAA,QAAA,mBAAA,WAAA,CAAA;8GAApB,uBAAoB,YAFnB,MAAK,CAAA;;gGAEN,sBAAoB,YAAA,CAAA;QAHhC;SAAW;IACV,YAAY;GACb;;AAyBM,IAAM,cAAc,CAACA,WAA6B;EACvD,aAAa,CAAE,oBAAoB;EAAI,MAAM,EAAE,eAAeA,MAAI;;AAI7D,IAAM,iBAA2B,IAAI,UAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,WAAW;AACxE,IAAM,gBAAgB,UAAU,CAAC,SAA6B,OAAO,KAAK,iBAAgB,IAAK,GAAG,IAAI,CAAC;AACvG,IAAM,gBAA0B,IAAI,UAAQ,CAAC,CAAC,QAAQ,KAAK,aAAa;AACxE,IAAM,eAAe,KAAK,eAAe,IAAI,CAAAC,mBAAiBA,iBAAgBA,eAAc,SAAS,CAAA,CAAE,CAAC;AACxG,IAAM;;EAEX,CAAC,UAAU,KAAK,cAAc,IAAI,YAAW,OAAO,eAAe,KAAK,CAAC,CAAC;;AACrE,IAAM,yBACX,CAAC,aAAa,KAAK,UAAU,IAAI,CAAAC,cAAYA,aAAY,QAAQ,CAAC;AAC7D,IAAM,qBACX,CAAC,aAAa,KAAK,UAAU,IAAI,CAAAA,cAAYA,aAAY,YAAY,IAAI,CAAC;;;ACtD5E,SAAS,gBAAgB;AACzB,SAAS,eAAe;AACxB,OAAO,cAAc;;AAMf,IAAO,6BAAP,MAAO,4BAA0B;EACrC,cAAA;AACE,aAAS,gBAAgB,eAAe,QAAQ,MAAM,mBAAmB;EAC3E;4GAHW,6BAA0B,MAAA,CAAA,GAAA,QAAA,oBAAA,SAAA,CAAA;6GAA1B,4BAA0B,CAAA;6GAA1B,6BAA0B,WAF1B,CAAE,oBAAoB,EAAE,CAAA;;kGAExB,4BAA0B,YAAA,CAAA;QAHtC;SAAS;IACR,WAAW,CAAE,oBAAoB;GAClC;;",
|
|
6
|
-
"names": ["pipe", "idTokenResult", "loggedIn"]
|
|
7
|
-
}
|
|
1
|
+
{"version":3,"file":"angular-fire-compat-auth-guard.mjs","sources":["../../../src/compat/auth-guard/auth-guard.ts","../../../src/compat/auth-guard/auth-guard.module.ts","../../../src/compat/auth-guard/angular-fire-compat-auth-guard.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { AngularFireAuth } from '@angular/fire/compat/auth';\nimport { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot } from '@angular/router';\nimport firebase from 'firebase/compat/app';\nimport { Observable, UnaryFunction, of, pipe } from 'rxjs';\nimport { map, switchMap, take } from 'rxjs/operators';\n\nexport type AuthPipeGenerator = (next: ActivatedRouteSnapshot, state: RouterStateSnapshot) => AuthPipe;\nexport type AuthPipe = UnaryFunction<Observable<firebase.User|null>, Observable<boolean|string|any[]>>;\n\nexport const loggedIn: AuthPipe = map(user => !!user);\n\n@Injectable({\n providedIn: 'any'\n})\nexport class AngularFireAuthGuard implements CanActivate {\n\n constructor(private router: Router, private auth: AngularFireAuth) {}\n\n canActivate = (next: ActivatedRouteSnapshot, state: RouterStateSnapshot) => {\n const authPipeFactory = next.data.authGuardPipe as AuthPipeGenerator || (() => loggedIn);\n return this.auth.user.pipe(\n take(1),\n authPipeFactory(next, state),\n map(can => {\n if (typeof can === 'boolean') {\n return can;\n } else if (Array.isArray(can)) {\n return this.router.createUrlTree(can);\n } else {\n // TODO(EdricChan03): Add tests\n return this.router.parseUrl(can);\n }\n })\n );\n }\n\n}\n\nexport const canActivate = (pipe: AuthPipeGenerator) => ({\n canActivate: [ AngularFireAuthGuard ], data: { authGuardPipe: pipe }\n});\n\n\nexport const isNotAnonymous: AuthPipe = map(user => !!user && !user.isAnonymous);\nexport const idTokenResult = switchMap((user: firebase.User|null) => user ? user.getIdTokenResult() : of(null));\nexport const emailVerified: AuthPipe = map(user => !!user && user.emailVerified);\nexport const customClaims = pipe(idTokenResult, map(idTokenResult => idTokenResult ? idTokenResult.claims : []));\nexport const hasCustomClaim: (claim: string) => AuthPipe =\n // eslint-disable-next-line no-prototype-builtins\n (claim) => pipe(customClaims, map(claims => claims.hasOwnProperty(claim)));\nexport const redirectUnauthorizedTo: (redirect: string|any[]) => AuthPipe =\n (redirect) => pipe(loggedIn, map(loggedIn => loggedIn || redirect));\nexport const redirectLoggedInTo: (redirect: string|any[]) => AuthPipe =\n (redirect) => pipe(loggedIn, map(loggedIn => loggedIn && redirect || true));\n","import { NgModule } from '@angular/core';\nimport { VERSION } from '@angular/fire';\nimport firebase from 'firebase/compat/app';\nimport { AngularFireAuthGuard } from './auth-guard';\n\n@NgModule({\n providers: [ AngularFireAuthGuard ]\n})\nexport class AngularFireAuthGuardModule {\n constructor() {\n firebase.registerVersion('angularfire', VERSION.full, 'auth-guard-compat');\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|