@angular/fire 7.5.0 → 7.6.0-canary.34e89a4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (154) hide show
  1. package/README.md +95 -74
  2. package/analytics/is-analytics-supported-factory.d.ts +4 -0
  3. package/bundles/angular-fire-analytics.umd.js +41 -31
  4. package/bundles/angular-fire-analytics.umd.js.map +1 -1
  5. package/bundles/angular-fire-app-check.umd.js +14 -18
  6. package/bundles/angular-fire-app-check.umd.js.map +1 -1
  7. package/bundles/angular-fire-app.umd.js +14 -18
  8. package/bundles/angular-fire-app.umd.js.map +1 -1
  9. package/bundles/angular-fire-auth-guard.umd.js +5 -7
  10. package/bundles/angular-fire-auth-guard.umd.js.map +1 -1
  11. package/bundles/angular-fire-auth.umd.js +64 -68
  12. package/bundles/angular-fire-auth.umd.js.map +1 -1
  13. package/bundles/angular-fire-compat-analytics.umd.js +11 -13
  14. package/bundles/angular-fire-compat-analytics.umd.js.map +1 -1
  15. package/bundles/angular-fire-compat-auth-guard.umd.js +6 -8
  16. package/bundles/angular-fire-compat-auth-guard.umd.js.map +1 -1
  17. package/bundles/angular-fire-compat-auth.umd.js +11 -13
  18. package/bundles/angular-fire-compat-auth.umd.js.map +1 -1
  19. package/bundles/angular-fire-compat-database.umd.js +9 -11
  20. package/bundles/angular-fire-compat-database.umd.js.map +1 -1
  21. package/bundles/angular-fire-compat-firestore.umd.js +9 -11
  22. package/bundles/angular-fire-compat-firestore.umd.js.map +1 -1
  23. package/bundles/angular-fire-compat-functions.umd.js +9 -11
  24. package/bundles/angular-fire-compat-functions.umd.js.map +1 -1
  25. package/bundles/angular-fire-compat-messaging.umd.js +8 -10
  26. package/bundles/angular-fire-compat-messaging.umd.js.map +1 -1
  27. package/bundles/angular-fire-compat-performance.umd.js +8 -10
  28. package/bundles/angular-fire-compat-performance.umd.js.map +1 -1
  29. package/bundles/angular-fire-compat-remote-config.umd.js +9 -11
  30. package/bundles/angular-fire-compat-remote-config.umd.js.map +1 -1
  31. package/bundles/angular-fire-compat-storage.umd.js +8 -10
  32. package/bundles/angular-fire-compat-storage.umd.js.map +1 -1
  33. package/bundles/angular-fire-compat.umd.js +13 -15
  34. package/bundles/angular-fire-compat.umd.js.map +1 -1
  35. package/bundles/angular-fire-database.umd.js +59 -67
  36. package/bundles/angular-fire-database.umd.js.map +1 -1
  37. package/bundles/angular-fire-firestore-lite.umd.js +50 -54
  38. package/bundles/angular-fire-firestore-lite.umd.js.map +1 -1
  39. package/bundles/angular-fire-firestore.umd.js +67 -71
  40. package/bundles/angular-fire-firestore.umd.js.map +1 -1
  41. package/bundles/angular-fire-functions.umd.js +15 -19
  42. package/bundles/angular-fire-functions.umd.js.map +1 -1
  43. package/bundles/angular-fire-messaging.umd.js +33 -23
  44. package/bundles/angular-fire-messaging.umd.js.map +1 -1
  45. package/bundles/angular-fire-performance.umd.js +17 -21
  46. package/bundles/angular-fire-performance.umd.js.map +1 -1
  47. package/bundles/angular-fire-remote-config.umd.js +47 -37
  48. package/bundles/angular-fire-remote-config.umd.js.map +1 -1
  49. package/bundles/angular-fire-storage.umd.js +27 -31
  50. package/bundles/angular-fire-storage.umd.js.map +1 -1
  51. package/bundles/angular-fire.umd.js +16 -59
  52. package/bundles/angular-fire.umd.js.map +1 -1
  53. package/compat/firestore/interfaces.d.ts +4 -4
  54. package/core.d.ts +1 -12
  55. package/docs/analytics.md +67 -0
  56. package/docs/app-check.md +53 -0
  57. package/docs/auth.md +165 -0
  58. package/docs/{analytics → compat/analytics}/getting-started.md +2 -0
  59. package/docs/{auth → compat/auth}/getting-started.md +2 -0
  60. package/docs/{auth → compat/auth}/router-guards.md +2 -0
  61. package/docs/{emulators → compat/emulators}/emulators.md +2 -0
  62. package/docs/{firestore → compat/firestore}/collections.md +2 -0
  63. package/docs/{firestore → compat/firestore}/documents.md +2 -0
  64. package/docs/{firestore → compat/firestore}/offline-data.md +2 -0
  65. package/docs/{firestore → compat/firestore}/querying-collections.md +2 -0
  66. package/docs/{functions → compat/functions}/functions.md +2 -0
  67. package/docs/{messaging → compat/messaging}/messaging.md +2 -0
  68. package/docs/{performance → compat/performance}/getting-started.md +2 -0
  69. package/docs/{remote-config → compat/remote-config}/getting-started.md +2 -0
  70. package/docs/{rtdb → compat/rtdb}/lists.md +2 -0
  71. package/docs/{rtdb → compat/rtdb}/objects.md +2 -0
  72. package/docs/{rtdb → compat/rtdb}/querying-lists.md +2 -0
  73. package/docs/{storage → compat/storage}/storage.md +2 -0
  74. package/docs/compat.md +70 -0
  75. package/docs/database.md +175 -0
  76. package/docs/deploy/getting-started.md +2 -2
  77. package/docs/firestore.md +148 -0
  78. package/docs/functions.md +52 -0
  79. package/docs/images/analytics-illo_1x.png +0 -0
  80. package/docs/images/auth-illo_1x.png +0 -0
  81. package/docs/images/cloud-messaging-illo_1x.png +0 -0
  82. package/docs/images/database-illo_1x.png +0 -0
  83. package/docs/images/firestore-illo_1x.png +0 -0
  84. package/docs/images/functions-illo_1x.png +0 -0
  85. package/docs/images/hosting-illo_1x.png +0 -0
  86. package/docs/images/performance-illo_1x.png +0 -0
  87. package/docs/images/reCAPTCHA-logo@1x.png +0 -0
  88. package/docs/images/remote-config-illo_1x.png +0 -0
  89. package/docs/images/storage-illo_1x.png +0 -0
  90. package/docs/install-and-setup.md +39 -86
  91. package/docs/install-firebase-tools.md +78 -0
  92. package/docs/messaging.md +25 -0
  93. package/docs/performance.md +57 -0
  94. package/docs/remote-config.md +53 -0
  95. package/docs/storage.md +90 -0
  96. package/docs/universal/cloud-functions.md +27 -6
  97. package/docs/universal/getting-started.md +9 -134
  98. package/esm2015/analytics/analytics.module.js +7 -6
  99. package/esm2015/analytics/is-analytics-supported-factory.js +16 -0
  100. package/esm2015/analytics/overrides.js +3 -3
  101. package/esm2015/compat/firestore/interfaces.js +1 -1
  102. package/esm2015/core.js +3 -45
  103. package/esm2015/messaging/is-messaging-supported-factory.js +16 -0
  104. package/esm2015/messaging/messaging.module.js +7 -6
  105. package/esm2015/messaging/overrides.js +3 -3
  106. package/esm2015/remote-config/is-remote-config-supported-factory.js +16 -0
  107. package/esm2015/remote-config/overrides.js +3 -3
  108. package/esm2015/remote-config/remote-config.module.js +7 -6
  109. package/fesm2015/angular-fire-analytics.js +21 -7
  110. package/fesm2015/angular-fire-analytics.js.map +1 -1
  111. package/fesm2015/angular-fire-app-check.js.map +1 -1
  112. package/fesm2015/angular-fire-app.js.map +1 -1
  113. package/fesm2015/angular-fire-auth-guard.js.map +1 -1
  114. package/fesm2015/angular-fire-auth.js.map +1 -1
  115. package/fesm2015/angular-fire-compat-analytics.js.map +1 -1
  116. package/fesm2015/angular-fire-compat-auth-guard.js.map +1 -1
  117. package/fesm2015/angular-fire-compat-auth.js.map +1 -1
  118. package/fesm2015/angular-fire-compat-database.js +1 -1
  119. package/fesm2015/angular-fire-compat-database.js.map +1 -1
  120. package/fesm2015/angular-fire-compat-firestore.js +1 -1
  121. package/fesm2015/angular-fire-compat-firestore.js.map +1 -1
  122. package/fesm2015/angular-fire-compat-functions.js.map +1 -1
  123. package/fesm2015/angular-fire-compat-messaging.js.map +1 -1
  124. package/fesm2015/angular-fire-compat-performance.js.map +1 -1
  125. package/fesm2015/angular-fire-compat-remote-config.js.map +1 -1
  126. package/fesm2015/angular-fire-compat-storage.js.map +1 -1
  127. package/fesm2015/angular-fire-compat.js.map +1 -1
  128. package/fesm2015/angular-fire-database.js.map +1 -1
  129. package/fesm2015/angular-fire-firestore-lite.js.map +1 -1
  130. package/fesm2015/angular-fire-firestore.js.map +1 -1
  131. package/fesm2015/angular-fire-functions.js.map +1 -1
  132. package/fesm2015/angular-fire-messaging.js +21 -7
  133. package/fesm2015/angular-fire-messaging.js.map +1 -1
  134. package/fesm2015/angular-fire-performance.js.map +1 -1
  135. package/fesm2015/angular-fire-remote-config.js +22 -8
  136. package/fesm2015/angular-fire-remote-config.js.map +1 -1
  137. package/fesm2015/angular-fire-storage.js.map +1 -1
  138. package/fesm2015/angular-fire.js +3 -45
  139. package/fesm2015/angular-fire.js.map +1 -1
  140. package/messaging/is-messaging-supported-factory.d.ts +4 -0
  141. package/package.json +9 -10
  142. package/remote-config/is-remote-config-supported-factory.d.ts +4 -0
  143. package/schematics/deploy/actions.js +8 -3
  144. package/schematics/deploy/builder.js +2 -2
  145. package/schematics/firebaseTools.js +4 -2
  146. package/schematics/setup/index.js +58 -29
  147. package/schematics/setup/prompts.js +18 -46
  148. package/schematics/utils.js +32 -28
  149. package/docs/ionic/authentication.md +0 -104
  150. package/docs/ionic/cli.md +0 -218
  151. package/docs/ionic/v2.md +0 -531
  152. package/docs/ionic/v3.md +0 -705
  153. package/schematics/setup/ssr.js +0 -100
  154. package/schematics/setup/static.js +0 -78
@@ -1,13 +1,13 @@
1
- import { ɵgetAllInstancesOf, ɵisRemoteConfigSupportedFactory, ɵgetDefaultInstanceOf, VERSION, ɵAngularFireSchedulers, ɵzoneWrap } from '@angular/fire';
1
+ import { ɵgetAllInstancesOf, ɵisSupportedError, ɵgetDefaultInstanceOf, VERSION, ɵAngularFireSchedulers, ɵzoneWrap } from '@angular/fire';
2
2
  import { timer, from } from 'rxjs';
3
3
  import { concatMap, distinct } from 'rxjs/operators';
4
4
  import * as i0 from '@angular/core';
5
5
  import { InjectionToken, Optional, APP_INITIALIZER, NgModule, NgZone, Injector } from '@angular/core';
6
6
  import { FirebaseApp, FirebaseApps } from '@angular/fire/app';
7
7
  import { registerVersion } from 'firebase/app';
8
- import { getValue as getValue$1, getString as getString$1, getNumber as getNumber$1, getBoolean as getBoolean$1, getAll as getAll$1 } from 'rxfire/remote-config';
9
- import { activate as activate$1, ensureInitialized as ensureInitialized$1, fetchAndActivate as fetchAndActivate$1, fetchConfig as fetchConfig$1, getAll as getAll$2, getBoolean as getBoolean$2, getNumber as getNumber$2, getRemoteConfig as getRemoteConfig$1, getString as getString$2, getValue as getValue$2, setLogLevel as setLogLevel$1 } from 'firebase/remote-config';
8
+ import { isSupported as isSupported$1, activate as activate$1, ensureInitialized as ensureInitialized$1, fetchAndActivate as fetchAndActivate$1, fetchConfig as fetchConfig$1, getAll as getAll$2, getBoolean as getBoolean$2, getNumber as getNumber$2, getRemoteConfig as getRemoteConfig$1, getString as getString$2, getValue as getValue$2, setLogLevel as setLogLevel$1 } from 'firebase/remote-config';
10
9
  export * from 'firebase/remote-config';
10
+ import { getValue as getValue$1, getString as getString$1, getNumber as getNumber$1, getBoolean as getBoolean$1, getAll as getAll$1 } from 'rxfire/remote-config';
11
11
 
12
12
  class RemoteConfig {
13
13
  constructor(remoteConfig) {
@@ -22,9 +22,23 @@ class RemoteConfigInstances {
22
22
  }
23
23
  const remoteConfigInstance$ = timer(0, 300).pipe(concatMap(() => from(ɵgetAllInstancesOf(REMOTE_CONFIG_PROVIDER_NAME))), distinct());
24
24
 
25
+ const isRemoteConfigSupportedValueSymbol = '__angularfire_symbol__remoteConfigIsSupportedValue';
26
+ const isRemoteConfigSupportedPromiseSymbol = '__angularfire_symbol__remoteConfigIsSupported';
27
+ globalThis[isRemoteConfigSupportedPromiseSymbol] || (globalThis[isRemoteConfigSupportedPromiseSymbol] = isSupported$1().then(it => globalThis[isRemoteConfigSupportedValueSymbol] = it).catch(() => globalThis[isRemoteConfigSupportedValueSymbol] = false));
28
+ const isRemoteConfigSupportedFactory = {
29
+ async: () => globalThis[isRemoteConfigSupportedPromiseSymbol],
30
+ sync: () => {
31
+ const ret = globalThis[isRemoteConfigSupportedValueSymbol];
32
+ if (ret === undefined) {
33
+ throw new Error(ɵisSupportedError('RemoteConfig'));
34
+ }
35
+ return ret;
36
+ }
37
+ };
38
+
25
39
  const PROVIDED_REMOTE_CONFIG_INSTANCES = new InjectionToken('angularfire2.remote-config-instances');
26
40
  function defaultRemoteConfigInstanceFactory(provided, defaultApp) {
27
- if (isRemoteConfigSupportedFactory.sync()) {
41
+ if (!isRemoteConfigSupportedFactory.sync()) {
28
42
  return null;
29
43
  }
30
44
  const defaultRemoteConfig = ɵgetDefaultInstanceOf(REMOTE_CONFIG_PROVIDER_NAME, provided, defaultApp);
@@ -32,7 +46,7 @@ function defaultRemoteConfigInstanceFactory(provided, defaultApp) {
32
46
  }
33
47
  function remoteConfigInstanceFactory(fn) {
34
48
  return (zone, injector) => {
35
- if (isRemoteConfigSupportedFactory.sync()) {
49
+ if (!isRemoteConfigSupportedFactory.sync()) {
36
50
  return null;
37
51
  }
38
52
  const remoteConfig = zone.runOutsideAngular(() => fn(injector));
@@ -65,7 +79,7 @@ RemoteConfigModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", vers
65
79
  REMOTE_CONFIG_INSTANCES_PROVIDER,
66
80
  {
67
81
  provide: APP_INITIALIZER,
68
- useValue: ɵisRemoteConfigSupportedFactory.async,
82
+ useValue: isRemoteConfigSupportedFactory.async,
69
83
  multi: true,
70
84
  },
71
85
  ] });
@@ -77,7 +91,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.3", ngImpor
77
91
  REMOTE_CONFIG_INSTANCES_PROVIDER,
78
92
  {
79
93
  provide: APP_INITIALIZER,
80
- useValue: ɵisRemoteConfigSupportedFactory.async,
94
+ useValue: isRemoteConfigSupportedFactory.async,
81
95
  multi: true,
82
96
  },
83
97
  ]
@@ -108,7 +122,7 @@ const getNumberChanges = ɵzoneWrap(getNumber$1, true);
108
122
  const getBooleanChanges = ɵzoneWrap(getBoolean$1, true);
109
123
  const getAllChanges = ɵzoneWrap(getAll$1, true);
110
124
 
111
- const isSupported = ɵisRemoteConfigSupportedFactory.async;
125
+ const isSupported = isRemoteConfigSupportedFactory.async;
112
126
 
113
127
  // DO NOT MODIFY, this file is autogenerated by tools/build.ts
114
128
  const activate = ɵzoneWrap(activate$1, true);
@@ -1 +1 @@
1
- {"version":3,"file":"angular-fire-remote-config.js","sources":["../../../src/remote-config/remote-config.ts","../../../src/remote-config/remote-config.module.ts","../../../src/remote-config/rxfire.ts","../../../src/remote-config/overrides.ts","../../../src/remote-config/firebase.ts","../../../src/remote-config/angular-fire-remote-config.ts"],"sourcesContent":["import { RemoteConfig as FirebaseRemoteConfig } from 'firebase/remote-config';\nimport { ɵgetAllInstancesOf } from '@angular/fire';\nimport { from, timer } from 'rxjs';\nimport { concatMap, distinct } from 'rxjs/operators';\n\n// see notes in core/firebase.app.module.ts for why we're building the class like this\n// tslint:disable-next-line:no-empty-interface\nexport interface RemoteConfig extends FirebaseRemoteConfig {}\n\nexport class RemoteConfig {\n constructor(remoteConfig: FirebaseRemoteConfig) {\n return remoteConfig;\n }\n}\n\nexport const REMOTE_CONFIG_PROVIDER_NAME = 'remote-config';\n\n// tslint:disable-next-line:no-empty-interface\nexport interface RemoteConfigInstances extends Array<FirebaseRemoteConfig> {}\n\nexport class RemoteConfigInstances {\n constructor() {\n return ɵgetAllInstancesOf<FirebaseRemoteConfig>(REMOTE_CONFIG_PROVIDER_NAME);\n }\n}\n\nexport const remoteConfigInstance$ = timer(0, 300).pipe(\n concatMap(() => from(ɵgetAllInstancesOf<FirebaseRemoteConfig>(REMOTE_CONFIG_PROVIDER_NAME))),\n distinct(),\n);\n","import { NgModule, Optional, NgZone, InjectionToken, ModuleWithProviders, Injector, APP_INITIALIZER } from '@angular/core';\nimport { RemoteConfig as FirebaseRemoteConfig } from 'firebase/remote-config';\nimport { ɵgetDefaultInstanceOf, ɵAngularFireSchedulers, VERSION, ɵisRemoteConfigSupportedFactory } from '@angular/fire';\nimport { RemoteConfig, RemoteConfigInstances, REMOTE_CONFIG_PROVIDER_NAME } from './remote-config';\nimport { FirebaseApps, FirebaseApp } from '@angular/fire/app';\nimport { registerVersion } from 'firebase/app';\n\nexport const PROVIDED_REMOTE_CONFIG_INSTANCES = new InjectionToken<RemoteConfig[]>('angularfire2.remote-config-instances');\n\nexport function defaultRemoteConfigInstanceFactory(\n provided: FirebaseRemoteConfig[]|undefined,\n defaultApp: FirebaseApp,\n) {\n if (!ɵisRemoteConfigSupportedFactory.sync()) { return null; }\n const defaultRemoteConfig = ɵgetDefaultInstanceOf<FirebaseRemoteConfig>(REMOTE_CONFIG_PROVIDER_NAME, provided, defaultApp);\n return defaultRemoteConfig && new RemoteConfig(defaultRemoteConfig);\n}\n\nexport function remoteConfigInstanceFactory(fn: (injector: Injector) => FirebaseRemoteConfig) {\n return (zone: NgZone, injector: Injector) => {\n if (!ɵisRemoteConfigSupportedFactory.sync()) { return null; }\n const remoteConfig = zone.runOutsideAngular(() => fn(injector));\n return new RemoteConfig(remoteConfig);\n };\n}\n\nconst REMOTE_CONFIG_INSTANCES_PROVIDER = {\n provide: RemoteConfigInstances,\n deps: [\n [new Optional(), PROVIDED_REMOTE_CONFIG_INSTANCES ],\n ]\n};\n\nconst DEFAULT_REMOTE_CONFIG_INSTANCE_PROVIDER = {\n provide: RemoteConfig,\n useFactory: defaultRemoteConfigInstanceFactory,\n deps: [\n [new Optional(), PROVIDED_REMOTE_CONFIG_INSTANCES ],\n FirebaseApp,\n ]\n};\n\n@NgModule({\n providers: [\n DEFAULT_REMOTE_CONFIG_INSTANCE_PROVIDER,\n REMOTE_CONFIG_INSTANCES_PROVIDER,\n {\n provide: APP_INITIALIZER,\n useValue: ɵisRemoteConfigSupportedFactory.async,\n multi: true,\n },\n ]\n})\nexport class RemoteConfigModule {\n constructor() {\n registerVersion('angularfire', VERSION.full, 'rc');\n }\n}\n\nexport function provideRemoteConfig(\n fn: (injector: Injector) => FirebaseRemoteConfig, ...deps: any[]\n): ModuleWithProviders<RemoteConfigModule> {\n return {\n ngModule: RemoteConfigModule,\n providers: [{\n provide: PROVIDED_REMOTE_CONFIG_INSTANCES,\n useFactory: remoteConfigInstanceFactory(fn),\n multi: true,\n deps: [\n NgZone,\n Injector,\n ɵAngularFireSchedulers,\n FirebaseApps,\n ...deps,\n ]\n }]\n };\n}\n","// DO NOT MODIFY, this file is autogenerated by tools/build.ts\nimport { ɵzoneWrap } from '@angular/fire';\nimport {\n getValue as _getValue,\n getString as _getString,\n getNumber as _getNumber,\n getBoolean as _getBoolean,\n getAll as _getAll\n} from 'rxfire/remote-config';\n\nexport const getValueChanges = ɵzoneWrap(_getValue, true);\nexport const getStringChanges = ɵzoneWrap(_getString, true);\nexport const getNumberChanges = ɵzoneWrap(_getNumber, true);\nexport const getBooleanChanges = ɵzoneWrap(_getBoolean, true);\nexport const getAllChanges = ɵzoneWrap(_getAll, true);\n","import { ɵisRemoteConfigSupportedFactory } from '@angular/fire';\n\nexport const isSupported = ɵisRemoteConfigSupportedFactory.async;\n","// DO NOT MODIFY, this file is autogenerated by tools/build.ts\nexport * from 'firebase/remote-config';\nimport { ɵzoneWrap } from '@angular/fire';\nimport {\n activate as _activate,\n ensureInitialized as _ensureInitialized,\n fetchAndActivate as _fetchAndActivate,\n fetchConfig as _fetchConfig,\n getAll as _getAll,\n getBoolean as _getBoolean,\n getNumber as _getNumber,\n getRemoteConfig as _getRemoteConfig,\n getString as _getString,\n getValue as _getValue,\n setLogLevel as _setLogLevel\n} from 'firebase/remote-config';\n\nexport {\n isSupported\n} from './overrides';\n\nexport const activate = ɵzoneWrap(_activate, true);\nexport const ensureInitialized = ɵzoneWrap(_ensureInitialized, true);\nexport const fetchAndActivate = ɵzoneWrap(_fetchAndActivate, true);\nexport const fetchConfig = ɵzoneWrap(_fetchConfig, true);\nexport const getAll = ɵzoneWrap(_getAll, true);\nexport const getBoolean = ɵzoneWrap(_getBoolean, true);\nexport const getNumber = ɵzoneWrap(_getNumber, true);\nexport const getRemoteConfig = ɵzoneWrap(_getRemoteConfig, true);\nexport const getString = ɵzoneWrap(_getString, true);\nexport const getValue = ɵzoneWrap(_getValue, true);\nexport const setLogLevel = ɵzoneWrap(_setLogLevel, true);\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["_getValue","_getString","_getNumber","_getBoolean","_getAll","_activate","_ensureInitialized","_fetchAndActivate","_fetchConfig","_getRemoteConfig","_setLogLevel"],"mappings":"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"}
1
+ {"version":3,"file":"angular-fire-remote-config.js","sources":["../../../src/remote-config/remote-config.ts","../../../src/remote-config/is-remote-config-supported-factory.ts","../../../src/remote-config/remote-config.module.ts","../../../src/remote-config/rxfire.ts","../../../src/remote-config/overrides.ts","../../../src/remote-config/firebase.ts","../../../src/remote-config/angular-fire-remote-config.ts"],"sourcesContent":["import { RemoteConfig as FirebaseRemoteConfig } from 'firebase/remote-config';\nimport { ɵgetAllInstancesOf } from '@angular/fire';\nimport { from, timer } from 'rxjs';\nimport { concatMap, distinct } from 'rxjs/operators';\n\n// see notes in core/firebase.app.module.ts for why we're building the class like this\n// tslint:disable-next-line:no-empty-interface\nexport interface RemoteConfig extends FirebaseRemoteConfig {}\n\nexport class RemoteConfig {\n constructor(remoteConfig: FirebaseRemoteConfig) {\n return remoteConfig;\n }\n}\n\nexport const REMOTE_CONFIG_PROVIDER_NAME = 'remote-config';\n\n// tslint:disable-next-line:no-empty-interface\nexport interface RemoteConfigInstances extends Array<FirebaseRemoteConfig> {}\n\nexport class RemoteConfigInstances {\n constructor() {\n return ɵgetAllInstancesOf<FirebaseRemoteConfig>(REMOTE_CONFIG_PROVIDER_NAME);\n }\n}\n\nexport const remoteConfigInstance$ = timer(0, 300).pipe(\n concatMap(() => from(ɵgetAllInstancesOf<FirebaseRemoteConfig>(REMOTE_CONFIG_PROVIDER_NAME))),\n distinct(),\n);\n","import { isSupported } from 'firebase/remote-config';\nimport { ɵisSupportedError } from '@angular/fire';\n\nconst isRemoteConfigSupportedValueSymbol = '__angularfire_symbol__remoteConfigIsSupportedValue';\nconst isRemoteConfigSupportedPromiseSymbol = '__angularfire_symbol__remoteConfigIsSupported';\n\nglobalThis[isRemoteConfigSupportedPromiseSymbol] ||= isSupported().then(it =>\n globalThis[isRemoteConfigSupportedValueSymbol] = it\n).catch(() =>\n globalThis[isRemoteConfigSupportedValueSymbol] = false\n);\n\nexport const isRemoteConfigSupportedFactory = {\n async: () => globalThis[isRemoteConfigSupportedPromiseSymbol],\n sync: () => {\n const ret = globalThis[isRemoteConfigSupportedValueSymbol];\n if (ret === undefined) { throw new Error(ɵisSupportedError('RemoteConfig')); }\n return ret;\n }\n};\n","import { NgModule, Optional, NgZone, InjectionToken, ModuleWithProviders, Injector, APP_INITIALIZER } from '@angular/core';\nimport { RemoteConfig as FirebaseRemoteConfig } from 'firebase/remote-config';\nimport { ɵgetDefaultInstanceOf, ɵAngularFireSchedulers, VERSION } from '@angular/fire';\nimport { RemoteConfig, RemoteConfigInstances, REMOTE_CONFIG_PROVIDER_NAME } from './remote-config';\nimport { FirebaseApps, FirebaseApp } from '@angular/fire/app';\nimport { registerVersion } from 'firebase/app';\nimport { isRemoteConfigSupportedFactory } from './is-remote-config-supported-factory';\n\nexport const PROVIDED_REMOTE_CONFIG_INSTANCES = new InjectionToken<RemoteConfig[]>('angularfire2.remote-config-instances');\n\nexport function defaultRemoteConfigInstanceFactory(\n provided: FirebaseRemoteConfig[]|undefined,\n defaultApp: FirebaseApp,\n) {\n if (!isRemoteConfigSupportedFactory.sync()) { return null; }\n const defaultRemoteConfig = ɵgetDefaultInstanceOf<FirebaseRemoteConfig>(REMOTE_CONFIG_PROVIDER_NAME, provided, defaultApp);\n return defaultRemoteConfig && new RemoteConfig(defaultRemoteConfig);\n}\n\nexport function remoteConfigInstanceFactory(fn: (injector: Injector) => FirebaseRemoteConfig) {\n return (zone: NgZone, injector: Injector) => {\n if (!isRemoteConfigSupportedFactory.sync()) { return null; }\n const remoteConfig = zone.runOutsideAngular(() => fn(injector));\n return new RemoteConfig(remoteConfig);\n };\n}\n\nconst REMOTE_CONFIG_INSTANCES_PROVIDER = {\n provide: RemoteConfigInstances,\n deps: [\n [new Optional(), PROVIDED_REMOTE_CONFIG_INSTANCES ],\n ]\n};\n\nconst DEFAULT_REMOTE_CONFIG_INSTANCE_PROVIDER = {\n provide: RemoteConfig,\n useFactory: defaultRemoteConfigInstanceFactory,\n deps: [\n [new Optional(), PROVIDED_REMOTE_CONFIG_INSTANCES ],\n FirebaseApp,\n ]\n};\n\n@NgModule({\n providers: [\n DEFAULT_REMOTE_CONFIG_INSTANCE_PROVIDER,\n REMOTE_CONFIG_INSTANCES_PROVIDER,\n {\n provide: APP_INITIALIZER,\n useValue: isRemoteConfigSupportedFactory.async,\n multi: true,\n },\n ]\n})\nexport class RemoteConfigModule {\n constructor() {\n registerVersion('angularfire', VERSION.full, 'rc');\n }\n}\n\nexport function provideRemoteConfig(\n fn: (injector: Injector) => FirebaseRemoteConfig, ...deps: any[]\n): ModuleWithProviders<RemoteConfigModule> {\n return {\n ngModule: RemoteConfigModule,\n providers: [{\n provide: PROVIDED_REMOTE_CONFIG_INSTANCES,\n useFactory: remoteConfigInstanceFactory(fn),\n multi: true,\n deps: [\n NgZone,\n Injector,\n ɵAngularFireSchedulers,\n FirebaseApps,\n ...deps,\n ]\n }]\n };\n}\n","// DO NOT MODIFY, this file is autogenerated by tools/build.ts\nimport { ɵzoneWrap } from '@angular/fire';\nimport {\n getValue as _getValue,\n getString as _getString,\n getNumber as _getNumber,\n getBoolean as _getBoolean,\n getAll as _getAll\n} from 'rxfire/remote-config';\n\nexport const getValueChanges = ɵzoneWrap(_getValue, true);\nexport const getStringChanges = ɵzoneWrap(_getString, true);\nexport const getNumberChanges = ɵzoneWrap(_getNumber, true);\nexport const getBooleanChanges = ɵzoneWrap(_getBoolean, true);\nexport const getAllChanges = ɵzoneWrap(_getAll, true);\n","import { isRemoteConfigSupportedFactory } from './is-remote-config-supported-factory';\n\nexport const isSupported = isRemoteConfigSupportedFactory.async;\n","// DO NOT MODIFY, this file is autogenerated by tools/build.ts\nexport * from 'firebase/remote-config';\nimport { ɵzoneWrap } from '@angular/fire';\nimport {\n activate as _activate,\n ensureInitialized as _ensureInitialized,\n fetchAndActivate as _fetchAndActivate,\n fetchConfig as _fetchConfig,\n getAll as _getAll,\n getBoolean as _getBoolean,\n getNumber as _getNumber,\n getRemoteConfig as _getRemoteConfig,\n getString as _getString,\n getValue as _getValue,\n setLogLevel as _setLogLevel\n} from 'firebase/remote-config';\n\nexport {\n isSupported\n} from './overrides';\n\nexport const activate = ɵzoneWrap(_activate, true);\nexport const ensureInitialized = ɵzoneWrap(_ensureInitialized, true);\nexport const fetchAndActivate = ɵzoneWrap(_fetchAndActivate, true);\nexport const fetchConfig = ɵzoneWrap(_fetchConfig, true);\nexport const getAll = ɵzoneWrap(_getAll, true);\nexport const getBoolean = ɵzoneWrap(_getBoolean, true);\nexport const getNumber = ɵzoneWrap(_getNumber, true);\nexport const getRemoteConfig = ɵzoneWrap(_getRemoteConfig, true);\nexport const getString = ɵzoneWrap(_getString, true);\nexport const getValue = ɵzoneWrap(_getValue, true);\nexport const setLogLevel = ɵzoneWrap(_setLogLevel, true);\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["isSupported","_getValue","_getString","_getNumber","_getBoolean","_getAll","_activate","_ensureInitialized","_fetchAndActivate","_fetchConfig","_getRemoteConfig","_setLogLevel"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"angular-fire-storage.js","sources":["../../../src/storage/storage.ts","../../../src/storage/storage.module.ts","../../../src/storage/rxfire.ts","../../../src/storage/firebase.ts","../../../src/storage/angular-fire-storage.ts"],"sourcesContent":["import { FirebaseStorage } from 'firebase/storage';\nimport { ɵgetAllInstancesOf } from '@angular/fire';\nimport { from, timer } from 'rxjs';\nimport { concatMap, distinct } from 'rxjs/operators';\n\n// see notes in core/firebase.app.module.ts for why we're building the class like this\n// tslint:disable-next-line:no-empty-interface\nexport interface Storage extends FirebaseStorage {}\n\nexport class Storage {\n constructor(auth: FirebaseStorage) {\n return auth;\n }\n}\n\nexport const STORAGE_PROVIDER_NAME = 'storage';\n\n// tslint:disable-next-line:no-empty-interface\nexport interface StorageInstances extends Array<FirebaseStorage> {}\n\nexport class StorageInstances {\n constructor() {\n return ɵgetAllInstancesOf<FirebaseStorage>(STORAGE_PROVIDER_NAME);\n }\n}\n\nexport const storageInstance$ = timer(0, 300).pipe(\n concatMap(() => from(ɵgetAllInstancesOf<FirebaseStorage>(STORAGE_PROVIDER_NAME))),\n distinct(),\n);\n","import { NgModule, Optional, NgZone, InjectionToken, ModuleWithProviders, Injector } from '@angular/core';\nimport { FirebaseStorage } from 'firebase/storage';\nimport { ɵgetDefaultInstanceOf, ɵAngularFireSchedulers, VERSION } from '@angular/fire';\nimport { Storage, StorageInstances, STORAGE_PROVIDER_NAME } from './storage';\nimport { FirebaseApps, FirebaseApp } from '@angular/fire/app';\nimport { AuthInstances } from '@angular/fire/auth';\nimport { registerVersion } from 'firebase/app';\nimport { AppCheckInstances } from '@angular/fire/app-check';\n\nexport const PROVIDED_STORAGE_INSTANCES = new InjectionToken<Storage[]>('angularfire2.storage-instances');\n\nexport function defaultStorageInstanceFactory(provided: FirebaseStorage[]|undefined, defaultApp: FirebaseApp) {\n const defaultStorage = ɵgetDefaultInstanceOf<FirebaseStorage>(STORAGE_PROVIDER_NAME, provided, defaultApp);\n return defaultStorage && new Storage(defaultStorage);\n}\n\nexport function storageInstanceFactory(fn: (injector: Injector) => FirebaseStorage) {\n return (zone: NgZone, injector: Injector) => {\n const storage = zone.runOutsideAngular(() => fn(injector));\n return new Storage(storage);\n };\n}\n\nconst STORAGE_INSTANCES_PROVIDER = {\n provide: StorageInstances,\n deps: [\n [new Optional(), PROVIDED_STORAGE_INSTANCES ],\n ]\n};\n\nconst DEFAULT_STORAGE_INSTANCE_PROVIDER = {\n provide: Storage,\n useFactory: defaultStorageInstanceFactory,\n deps: [\n [new Optional(), PROVIDED_STORAGE_INSTANCES ],\n FirebaseApp,\n ]\n};\n\n@NgModule({\n providers: [\n DEFAULT_STORAGE_INSTANCE_PROVIDER,\n STORAGE_INSTANCES_PROVIDER,\n ]\n})\nexport class StorageModule {\n constructor() {\n registerVersion('angularfire', VERSION.full, 'gcs');\n }\n}\n\nexport function provideStorage(fn: (injector: Injector) => FirebaseStorage, ...deps: any[]): ModuleWithProviders<StorageModule> {\n return {\n ngModule: StorageModule,\n providers: [{\n provide: PROVIDED_STORAGE_INSTANCES,\n useFactory: storageInstanceFactory(fn),\n multi: true,\n deps: [\n NgZone,\n Injector,\n ɵAngularFireSchedulers,\n FirebaseApps,\n // Defensively load Auth first, if provided\n [new Optional(), AuthInstances ],\n [new Optional(), AppCheckInstances ],\n ...deps,\n ]\n }]\n };\n}\n","// DO NOT MODIFY, this file is autogenerated by tools/build.ts\nimport { ɵzoneWrap } from '@angular/fire';\nimport {\n fromTask as _fromTask,\n percentage as _percentage\n} from 'rxfire/storage';\n\nexport const fromTask = ɵzoneWrap(_fromTask, true);\nexport const percentage = ɵzoneWrap(_percentage, true);\n","// DO NOT MODIFY, this file is autogenerated by tools/build.ts\nexport * from 'firebase/storage';\nimport { ɵzoneWrap } from '@angular/fire';\nimport {\n connectStorageEmulator as _connectStorageEmulator,\n deleteObject as _deleteObject,\n getBlob as _getBlob,\n getBytes as _getBytes,\n getDownloadURL as _getDownloadURL,\n getMetadata as _getMetadata,\n getStorage as _getStorage,\n getStream as _getStream,\n list as _list,\n listAll as _listAll,\n ref as _ref,\n updateMetadata as _updateMetadata,\n uploadBytes as _uploadBytes,\n uploadBytesResumable as _uploadBytesResumable,\n uploadString as _uploadString\n} from 'firebase/storage';\n\nexport const connectStorageEmulator = ɵzoneWrap(_connectStorageEmulator, true);\nexport const deleteObject = ɵzoneWrap(_deleteObject, true);\nexport const getBlob = ɵzoneWrap(_getBlob, true);\nexport const getBytes = ɵzoneWrap(_getBytes, true);\nexport const getDownloadURL = ɵzoneWrap(_getDownloadURL, true);\nexport const getMetadata = ɵzoneWrap(_getMetadata, true);\nexport const getStorage = ɵzoneWrap(_getStorage, true);\nexport const getStream = ɵzoneWrap(_getStream, true);\nexport const list = ɵzoneWrap(_list, true);\nexport const listAll = ɵzoneWrap(_listAll, true);\nexport const ref = ɵzoneWrap(_ref, true);\nexport const updateMetadata = ɵzoneWrap(_updateMetadata, true);\nexport const uploadBytes = ɵzoneWrap(_uploadBytes, true);\nexport const uploadBytesResumable = ɵzoneWrap(_uploadBytesResumable, true);\nexport const uploadString = ɵzoneWrap(_uploadString, true);\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["_fromTask","_percentage","_connectStorageEmulator","_deleteObject","_getBlob","_getBytes","_getDownloadURL","_getMetadata","_getStorage","_getStream","_list","_listAll","_ref","_updateMetadata","_uploadBytes","_uploadBytesResumable","_uploadString"],"mappings":"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"}
1
+ {"version":3,"file":"angular-fire-storage.js","sources":["../../../src/storage/storage.ts","../../../src/storage/storage.module.ts","../../../src/storage/rxfire.ts","../../../src/storage/firebase.ts","../../../src/storage/angular-fire-storage.ts"],"sourcesContent":["import { FirebaseStorage } from 'firebase/storage';\nimport { ɵgetAllInstancesOf } from '@angular/fire';\nimport { from, timer } from 'rxjs';\nimport { concatMap, distinct } from 'rxjs/operators';\n\n// see notes in core/firebase.app.module.ts for why we're building the class like this\n// tslint:disable-next-line:no-empty-interface\nexport interface Storage extends FirebaseStorage {}\n\nexport class Storage {\n constructor(auth: FirebaseStorage) {\n return auth;\n }\n}\n\nexport const STORAGE_PROVIDER_NAME = 'storage';\n\n// tslint:disable-next-line:no-empty-interface\nexport interface StorageInstances extends Array<FirebaseStorage> {}\n\nexport class StorageInstances {\n constructor() {\n return ɵgetAllInstancesOf<FirebaseStorage>(STORAGE_PROVIDER_NAME);\n }\n}\n\nexport const storageInstance$ = timer(0, 300).pipe(\n concatMap(() => from(ɵgetAllInstancesOf<FirebaseStorage>(STORAGE_PROVIDER_NAME))),\n distinct(),\n);\n","import { NgModule, Optional, NgZone, InjectionToken, ModuleWithProviders, Injector } from '@angular/core';\nimport { FirebaseStorage } from 'firebase/storage';\nimport { ɵgetDefaultInstanceOf, ɵAngularFireSchedulers, VERSION } from '@angular/fire';\nimport { Storage, StorageInstances, STORAGE_PROVIDER_NAME } from './storage';\nimport { FirebaseApps, FirebaseApp } from '@angular/fire/app';\nimport { AuthInstances } from '@angular/fire/auth';\nimport { registerVersion } from 'firebase/app';\nimport { AppCheckInstances } from '@angular/fire/app-check';\n\nexport const PROVIDED_STORAGE_INSTANCES = new InjectionToken<Storage[]>('angularfire2.storage-instances');\n\nexport function defaultStorageInstanceFactory(provided: FirebaseStorage[]|undefined, defaultApp: FirebaseApp) {\n const defaultStorage = ɵgetDefaultInstanceOf<FirebaseStorage>(STORAGE_PROVIDER_NAME, provided, defaultApp);\n return defaultStorage && new Storage(defaultStorage);\n}\n\nexport function storageInstanceFactory(fn: (injector: Injector) => FirebaseStorage) {\n return (zone: NgZone, injector: Injector) => {\n const storage = zone.runOutsideAngular(() => fn(injector));\n return new Storage(storage);\n };\n}\n\nconst STORAGE_INSTANCES_PROVIDER = {\n provide: StorageInstances,\n deps: [\n [new Optional(), PROVIDED_STORAGE_INSTANCES ],\n ]\n};\n\nconst DEFAULT_STORAGE_INSTANCE_PROVIDER = {\n provide: Storage,\n useFactory: defaultStorageInstanceFactory,\n deps: [\n [new Optional(), PROVIDED_STORAGE_INSTANCES ],\n FirebaseApp,\n ]\n};\n\n@NgModule({\n providers: [\n DEFAULT_STORAGE_INSTANCE_PROVIDER,\n STORAGE_INSTANCES_PROVIDER,\n ]\n})\nexport class StorageModule {\n constructor() {\n registerVersion('angularfire', VERSION.full, 'gcs');\n }\n}\n\nexport function provideStorage(fn: (injector: Injector) => FirebaseStorage, ...deps: any[]): ModuleWithProviders<StorageModule> {\n return {\n ngModule: StorageModule,\n providers: [{\n provide: PROVIDED_STORAGE_INSTANCES,\n useFactory: storageInstanceFactory(fn),\n multi: true,\n deps: [\n NgZone,\n Injector,\n ɵAngularFireSchedulers,\n FirebaseApps,\n // Defensively load Auth first, if provided\n [new Optional(), AuthInstances ],\n [new Optional(), AppCheckInstances ],\n ...deps,\n ]\n }]\n };\n}\n","// DO NOT MODIFY, this file is autogenerated by tools/build.ts\nimport { ɵzoneWrap } from '@angular/fire';\nimport {\n fromTask as _fromTask,\n percentage as _percentage\n} from 'rxfire/storage';\n\nexport const fromTask = ɵzoneWrap(_fromTask, true);\nexport const percentage = ɵzoneWrap(_percentage, true);\n","// DO NOT MODIFY, this file is autogenerated by tools/build.ts\nexport * from 'firebase/storage';\nimport { ɵzoneWrap } from '@angular/fire';\nimport {\n connectStorageEmulator as _connectStorageEmulator,\n deleteObject as _deleteObject,\n getBlob as _getBlob,\n getBytes as _getBytes,\n getDownloadURL as _getDownloadURL,\n getMetadata as _getMetadata,\n getStorage as _getStorage,\n getStream as _getStream,\n list as _list,\n listAll as _listAll,\n ref as _ref,\n updateMetadata as _updateMetadata,\n uploadBytes as _uploadBytes,\n uploadBytesResumable as _uploadBytesResumable,\n uploadString as _uploadString\n} from 'firebase/storage';\n\nexport const connectStorageEmulator = ɵzoneWrap(_connectStorageEmulator, true);\nexport const deleteObject = ɵzoneWrap(_deleteObject, true);\nexport const getBlob = ɵzoneWrap(_getBlob, true);\nexport const getBytes = ɵzoneWrap(_getBytes, true);\nexport const getDownloadURL = ɵzoneWrap(_getDownloadURL, true);\nexport const getMetadata = ɵzoneWrap(_getMetadata, true);\nexport const getStorage = ɵzoneWrap(_getStorage, true);\nexport const getStream = ɵzoneWrap(_getStream, true);\nexport const list = ɵzoneWrap(_list, true);\nexport const listAll = ɵzoneWrap(_listAll, true);\nexport const ref = ɵzoneWrap(_ref, true);\nexport const updateMetadata = ɵzoneWrap(_updateMetadata, true);\nexport const uploadBytes = ɵzoneWrap(_uploadBytes, true);\nexport const uploadBytesResumable = ɵzoneWrap(_uploadBytesResumable, true);\nexport const uploadString = ɵzoneWrap(_uploadString, true);\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["_fromTask","_percentage","_connectStorageEmulator","_deleteObject","_getBlob","_getBytes","_getDownloadURL","_getMetadata","_getStorage","_getStream","_list","_listAll","_ref","_updateMetadata","_uploadBytes","_uploadBytesResumable","_uploadString"],"mappings":"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"}
@@ -1,55 +1,13 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Version, Injectable } from '@angular/core';
3
3
  import { getApps } from 'firebase/app';
4
- import { isSupported as isSupported$2 } from 'firebase/remote-config';
5
- import { isSupported as isSupported$1 } from 'firebase/messaging';
6
- import { isSupported } from 'firebase/analytics';
7
4
  import { queueScheduler, asyncScheduler, Observable } from 'rxjs';
8
5
  import { tap, observeOn, subscribeOn } from 'rxjs/operators';
9
6
 
10
- const VERSION = new Version('7.5.0');
11
- const isAnalyticsSupportedValueSymbol = '__angularfire_symbol__analyticsIsSupportedValue';
12
- const isAnalyticsSupportedPromiseSymbol = '__angularfire_symbol__analyticsIsSupported';
13
- const isRemoteConfigSupportedValueSymbol = '__angularfire_symbol__remoteConfigIsSupportedValue';
14
- const isRemoteConfigSupportedPromiseSymbol = '__angularfire_symbol__remoteConfigIsSupported';
15
- const isMessagingSupportedValueSymbol = '__angularfire_symbol__messagingIsSupportedValue';
16
- const isMessagingSupportedPromiseSymbol = '__angularfire_symbol__messagingIsSupported';
17
- globalThis[isAnalyticsSupportedPromiseSymbol] || (globalThis[isAnalyticsSupportedPromiseSymbol] = isSupported().then(it => globalThis[isAnalyticsSupportedValueSymbol] = it).catch(() => globalThis[isAnalyticsSupportedValueSymbol] = false));
18
- globalThis[isMessagingSupportedPromiseSymbol] || (globalThis[isMessagingSupportedPromiseSymbol] = isSupported$1().then(it => globalThis[isMessagingSupportedValueSymbol] = it).catch(() => globalThis[isMessagingSupportedValueSymbol] = false));
19
- globalThis[isRemoteConfigSupportedPromiseSymbol] || (globalThis[isRemoteConfigSupportedPromiseSymbol] = isSupported$2().then(it => globalThis[isRemoteConfigSupportedValueSymbol] = it).catch(() => globalThis[isRemoteConfigSupportedValueSymbol] = false));
20
- const isSupportedError = (module) => `The APP_INITIALIZER that is "making" isSupported() sync for the sake of convenient DI has not resolved in this
7
+ const VERSION = new Version('7.6.0-canary.34e89a4');
8
+ const ɵisSupportedError = (module) => `The APP_INITIALIZER that is "making" isSupported() sync for the sake of convenient DI has not resolved in this
21
9
  context. Rather than injecting ${module} in the constructor, first ensure that ${module} is supported by calling
22
10
  \`await isSupported()\`, then retrieve the instance from the injector manually \`injector.get(${module})\`.`;
23
- const ɵisMessagingSupportedFactory = {
24
- async: () => globalThis[isMessagingSupportedPromiseSymbol],
25
- sync: () => {
26
- const ret = globalThis[isMessagingSupportedValueSymbol];
27
- if (ret === undefined) {
28
- throw new Error(isSupportedError('Messaging'));
29
- }
30
- return ret;
31
- }
32
- };
33
- const ɵisRemoteConfigSupportedFactory = {
34
- async: () => globalThis[isRemoteConfigSupportedPromiseSymbol],
35
- sync: () => {
36
- const ret = globalThis[isRemoteConfigSupportedValueSymbol];
37
- if (ret === undefined) {
38
- throw new Error(isSupportedError('RemoteConfig'));
39
- }
40
- return ret;
41
- }
42
- };
43
- const ɵisAnalyticsSupportedFactory = {
44
- async: () => globalThis[isAnalyticsSupportedPromiseSymbol],
45
- sync: () => {
46
- const ret = globalThis[isAnalyticsSupportedValueSymbol];
47
- if (ret === undefined) {
48
- throw new Error(isSupportedError('Analytics'));
49
- }
50
- return ret;
51
- }
52
- };
53
11
  function ɵgetDefaultInstanceOf(identifier, provided, defaultApp) {
54
12
  if (provided) {
55
13
  // Was provide* only called once? If so grab that
@@ -264,5 +222,5 @@ const ɵzoneWrap = (it, blockUntilFirst) => {
264
222
  * Generated bundle index. Do not edit.
265
223
  */
266
224
 
267
- export { VERSION, keepUnstableUntilFirst, observeInsideAngular, observeOutsideAngular, ɵAngularFireSchedulers, ɵZoneScheduler, ɵgetAllInstancesOf, ɵgetDefaultInstanceOf, ɵisAnalyticsSupportedFactory, ɵisMessagingSupportedFactory, ɵisRemoteConfigSupportedFactory, ɵkeepUnstableUntilFirstFactory, ɵzoneWrap };
225
+ export { VERSION, keepUnstableUntilFirst, observeInsideAngular, observeOutsideAngular, ɵAngularFireSchedulers, ɵZoneScheduler, ɵgetAllInstancesOf, ɵgetDefaultInstanceOf, ɵisSupportedError, ɵkeepUnstableUntilFirstFactory, ɵzoneWrap };
268
226
  //# sourceMappingURL=angular-fire.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"angular-fire.js","sources":["../../../src/core.ts","../../../src/zones.ts","../../../src/angular-fire.ts"],"sourcesContent":["import { Version } from '@angular/core';\nimport { FirebaseApp, getApps } from 'firebase/app';\nimport { ComponentContainer } from '@firebase/component';\nimport { isSupported as isRemoteConfigSupported } from 'firebase/remote-config';\nimport { isSupported as isMessagingSupported } from 'firebase/messaging';\nimport { isSupported as isAnalyticsSupported } from 'firebase/analytics';\n\nexport const VERSION = new Version('7.5.0');\n\nconst isAnalyticsSupportedValueSymbol = '__angularfire_symbol__analyticsIsSupportedValue';\nconst isAnalyticsSupportedPromiseSymbol = '__angularfire_symbol__analyticsIsSupported';\nconst isRemoteConfigSupportedValueSymbol = '__angularfire_symbol__remoteConfigIsSupportedValue';\nconst isRemoteConfigSupportedPromiseSymbol = '__angularfire_symbol__remoteConfigIsSupported';\nconst isMessagingSupportedValueSymbol = '__angularfire_symbol__messagingIsSupportedValue';\nconst isMessagingSupportedPromiseSymbol = '__angularfire_symbol__messagingIsSupported';\n\nglobalThis[isAnalyticsSupportedPromiseSymbol] ||= isAnalyticsSupported().then(it =>\n globalThis[isAnalyticsSupportedValueSymbol] = it\n).catch(() =>\n globalThis[isAnalyticsSupportedValueSymbol] = false\n);\n\nglobalThis[isMessagingSupportedPromiseSymbol] ||= isMessagingSupported().then(it =>\n globalThis[isMessagingSupportedValueSymbol] = it\n).catch(() =>\n globalThis[isMessagingSupportedValueSymbol] = false\n);\n\nglobalThis[isRemoteConfigSupportedPromiseSymbol] ||= isRemoteConfigSupported().then(it =>\n globalThis[isRemoteConfigSupportedValueSymbol] = it\n).catch(() =>\n globalThis[isRemoteConfigSupportedValueSymbol] = false\n);\n\nconst 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\nexport const ɵisMessagingSupportedFactory = {\n async: () => globalThis[isMessagingSupportedPromiseSymbol],\n sync: () => {\n const ret = globalThis[isMessagingSupportedValueSymbol];\n if (ret === undefined) { throw new Error(isSupportedError('Messaging')); }\n return ret;\n }\n};\n\nexport const ɵisRemoteConfigSupportedFactory = {\n async: () => globalThis[isRemoteConfigSupportedPromiseSymbol],\n sync: () => {\n const ret = globalThis[isRemoteConfigSupportedValueSymbol];\n if (ret === undefined) { throw new Error(isSupportedError('RemoteConfig')); }\n return ret;\n }\n};\n\nexport const ɵisAnalyticsSupportedFactory = {\n async: () => globalThis[isAnalyticsSupportedPromiseSymbol],\n sync: () => {\n const ret = globalThis[isAnalyticsSupportedValueSymbol];\n if (ret === undefined) { throw new Error(isSupportedError('Analytics')); }\n return ret;\n }\n};\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): Array<T> => {\n const apps = app ? [app] : getApps();\n const instances: Array<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","import { Injectable, NgZone } from '@angular/core';\nimport {\n asyncScheduler,\n Observable,\n Operator,\n queueScheduler,\n SchedulerAction,\n SchedulerLike,\n Subscriber,\n Subscription,\n TeardownLogic\n} from 'rxjs';\nimport { observeOn, subscribeOn, tap } from 'rxjs/operators';\n\nfunction noop() {\n}\n\n/**\n * Schedules tasks so that they are invoked inside the Zone that is passed in the constructor.\n */\n// tslint:disable-next-line:class-name\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 targetZone.runGuarded(() => {\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\nclass BlockUntilFirstOperator<T> implements Operator<T, T> {\n private task: MacroTask | null = null;\n\n constructor(private zone: any) {\n }\n\n call(subscriber: Subscriber<T>, source: Observable<T>): TeardownLogic {\n const unscheduleTask = this.unscheduleTask.bind(this);\n this.task = this.zone.run(() => Zone.current.scheduleMacroTask('firebaseZoneBlock', noop, {}, noop, noop));\n\n return source.pipe(\n tap({ next: unscheduleTask, complete: unscheduleTask, error: unscheduleTask })\n ).subscribe(subscriber).add(unscheduleTask);\n }\n\n private unscheduleTask() {\n // maybe this is a race condition, invoke in a timeout\n // hold for 10ms while I try to figure out what is going on\n setTimeout(() => {\n if (this.task != null && this.task.state === 'scheduled') {\n this.task.invoke();\n this.task = null;\n }\n }, 10);\n }\n}\n\n@Injectable({\n providedIn: 'root',\n})\n// tslint:disable-next-line:class-name\nexport class ɵAngularFireSchedulers {\n public readonly outsideAngular: ɵZoneScheduler;\n public readonly insideAngular: ɵZoneScheduler;\n\n constructor(public ngZone: NgZone) {\n this.outsideAngular = ngZone.runOutsideAngular(() => new ɵZoneScheduler(Zone.current));\n this.insideAngular = ngZone.run(() => new ɵZoneScheduler(Zone.current, asyncScheduler));\n globalThis.ɵAngularFireScheduler ||= this;\n }\n}\n\nfunction getSchedulers() {\n const schedulers = globalThis.ɵAngularFireScheduler as ɵAngularFireSchedulers|undefined;\n if (!schedulers) {\n throw new Error(\n`Either AngularFireModule has not been provided in your AppModule (this can be done manually or implictly using\nprovideFirebaseApp) or you're calling an AngularFire method outside of an NgModule (which is not supported).`);\n }\n return schedulers;\n}\n\nfunction runOutsideAngular<T>(fn: (...args: any[]) => T): T {\n return getSchedulers().ngZone.runOutsideAngular(() => fn());\n}\n\nfunction run<T>(fn: (...args: any[]) => T): T {\n return getSchedulers().ngZone.run(() => fn());\n}\n\nexport function observeOutsideAngular<T>(obs$: Observable<T>): Observable<T> {\n return obs$.pipe(observeOn(getSchedulers().outsideAngular));\n}\n\nexport function observeInsideAngular<T>(obs$: Observable<T>): Observable<T> {\n return obs$.pipe(observeOn(getSchedulers().insideAngular));\n}\n\nexport function keepUnstableUntilFirst<T>(obs$: Observable<T>): Observable<T> {\n const scheduler = getSchedulers();\n return ɵkeepUnstableUntilFirstFactory(getSchedulers())(obs$);\n}\n\n/**\n * Operator to block the zone until the first value has been emitted or the observable\n * has completed/errored. This is used to make sure that universal waits until the first\n * value from firebase but doesn't block the zone forever since the firebase subscription\n * is still alive.\n */\nexport function ɵkeepUnstableUntilFirstFactory(schedulers: ɵAngularFireSchedulers) {\n return function keepUnstableUntilFirst<T>(obs$: Observable<T>): Observable<T> {\n obs$ = obs$.lift(\n new BlockUntilFirstOperator(schedulers.ngZone)\n );\n\n return obs$.pipe(\n // Run the subscribe body outside of Angular (e.g. calling Firebase SDK to add a listener to a change event)\n subscribeOn(schedulers.outsideAngular),\n // Run operators inside the angular zone (e.g. side effects via tap())\n observeOn(schedulers.insideAngular)\n // INVESTIGATE https://github.com/angular/angularfire/pull/2315\n // share()\n );\n };\n}\n\nconst zoneWrapFn = (it: (...args: any[]) => any, macrotask: MacroTask|undefined) => {\n const _this = this;\n // function() is needed for the arguments object\n // tslint:disable-next-line:only-arrow-functions\n return function() {\n const _arguments = arguments;\n if (macrotask) {\n setTimeout(() => {\n if (macrotask.state === 'scheduled') {\n macrotask.invoke();\n }\n }, 10);\n }\n return run(() => it.apply(_this, _arguments));\n };\n};\n\nexport const ɵzoneWrap = <T= unknown>(it: T, blockUntilFirst: boolean): T => {\n // function() is needed for the arguments object\n // tslint:disable-next-line:only-arrow-functions\n return function() {\n let macrotask: MacroTask | undefined;\n const _arguments = arguments;\n // if this is a callback function, e.g, onSnapshot, we should create a microtask and invoke 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 macrotask ||= run(() => Zone.current.scheduleMacroTask('firebaseZoneBlock', noop, {}, noop, noop));\n }\n // TODO create a microtask to track callback functions\n _arguments[i] = zoneWrapFn(_arguments[i], macrotask);\n }\n }\n const ret = runOutsideAngular(() => (it as any).apply(this, _arguments));\n if (!blockUntilFirst) {\n if (ret instanceof Observable) {\n const schedulers = getSchedulers();\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(keepUnstableUntilFirst) as any;\n } else if (ret instanceof Promise) {\n return run(() => new Promise((resolve, reject) => ret.then(it => run(() => resolve(it)), reason => run(() => reject(reason)))));\n } else if (typeof ret === 'function' && macrotask) {\n // Handle unsubscribe\n // function() is needed for the arguments object\n // tslint:disable-next-line:only-arrow-functions\n return function() {\n setTimeout(() => {\n if (macrotask && macrotask.state === 'scheduled') {\n macrotask.invoke();\n }\n }, 10);\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":["isAnalyticsSupported","isMessagingSupported","isRemoteConfigSupported","this"],"mappings":"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"}
1
+ {"version":3,"file":"angular-fire.js","sources":["../../../src/core.ts","../../../src/zones.ts","../../../src/angular-fire.ts"],"sourcesContent":["import { Version } from '@angular/core';\nimport { FirebaseApp, getApps } from 'firebase/app';\nimport { ComponentContainer } from '@firebase/component';\n\nexport const VERSION = new Version('7.6.0-canary.34e89a4');\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): Array<T> => {\n const apps = app ? [app] : getApps();\n const instances: Array<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","import { Injectable, NgZone } from '@angular/core';\nimport {\n asyncScheduler,\n Observable,\n Operator,\n queueScheduler,\n SchedulerAction,\n SchedulerLike,\n Subscriber,\n Subscription,\n TeardownLogic\n} from 'rxjs';\nimport { observeOn, subscribeOn, tap } from 'rxjs/operators';\n\nfunction noop() {\n}\n\n/**\n * Schedules tasks so that they are invoked inside the Zone that is passed in the constructor.\n */\n// tslint:disable-next-line:class-name\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 targetZone.runGuarded(() => {\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\nclass BlockUntilFirstOperator<T> implements Operator<T, T> {\n private task: MacroTask | null = null;\n\n constructor(private zone: any) {\n }\n\n call(subscriber: Subscriber<T>, source: Observable<T>): TeardownLogic {\n const unscheduleTask = this.unscheduleTask.bind(this);\n this.task = this.zone.run(() => Zone.current.scheduleMacroTask('firebaseZoneBlock', noop, {}, noop, noop));\n\n return source.pipe(\n tap({ next: unscheduleTask, complete: unscheduleTask, error: unscheduleTask })\n ).subscribe(subscriber).add(unscheduleTask);\n }\n\n private unscheduleTask() {\n // maybe this is a race condition, invoke in a timeout\n // hold for 10ms while I try to figure out what is going on\n setTimeout(() => {\n if (this.task != null && this.task.state === 'scheduled') {\n this.task.invoke();\n this.task = null;\n }\n }, 10);\n }\n}\n\n@Injectable({\n providedIn: 'root',\n})\n// tslint:disable-next-line:class-name\nexport class ɵAngularFireSchedulers {\n public readonly outsideAngular: ɵZoneScheduler;\n public readonly insideAngular: ɵZoneScheduler;\n\n constructor(public ngZone: NgZone) {\n this.outsideAngular = ngZone.runOutsideAngular(() => new ɵZoneScheduler(Zone.current));\n this.insideAngular = ngZone.run(() => new ɵZoneScheduler(Zone.current, asyncScheduler));\n globalThis.ɵAngularFireScheduler ||= this;\n }\n}\n\nfunction getSchedulers() {\n const schedulers = globalThis.ɵAngularFireScheduler as ɵAngularFireSchedulers|undefined;\n if (!schedulers) {\n throw new Error(\n`Either AngularFireModule has not been provided in your AppModule (this can be done manually or implictly using\nprovideFirebaseApp) or you're calling an AngularFire method outside of an NgModule (which is not supported).`);\n }\n return schedulers;\n}\n\nfunction runOutsideAngular<T>(fn: (...args: any[]) => T): T {\n return getSchedulers().ngZone.runOutsideAngular(() => fn());\n}\n\nfunction run<T>(fn: (...args: any[]) => T): T {\n return getSchedulers().ngZone.run(() => fn());\n}\n\nexport function observeOutsideAngular<T>(obs$: Observable<T>): Observable<T> {\n return obs$.pipe(observeOn(getSchedulers().outsideAngular));\n}\n\nexport function observeInsideAngular<T>(obs$: Observable<T>): Observable<T> {\n return obs$.pipe(observeOn(getSchedulers().insideAngular));\n}\n\nexport function keepUnstableUntilFirst<T>(obs$: Observable<T>): Observable<T> {\n const scheduler = getSchedulers();\n return ɵkeepUnstableUntilFirstFactory(getSchedulers())(obs$);\n}\n\n/**\n * Operator to block the zone until the first value has been emitted or the observable\n * has completed/errored. This is used to make sure that universal waits until the first\n * value from firebase but doesn't block the zone forever since the firebase subscription\n * is still alive.\n */\nexport function ɵkeepUnstableUntilFirstFactory(schedulers: ɵAngularFireSchedulers) {\n return function keepUnstableUntilFirst<T>(obs$: Observable<T>): Observable<T> {\n obs$ = obs$.lift(\n new BlockUntilFirstOperator(schedulers.ngZone)\n );\n\n return obs$.pipe(\n // Run the subscribe body outside of Angular (e.g. calling Firebase SDK to add a listener to a change event)\n subscribeOn(schedulers.outsideAngular),\n // Run operators inside the angular zone (e.g. side effects via tap())\n observeOn(schedulers.insideAngular)\n // INVESTIGATE https://github.com/angular/angularfire/pull/2315\n // share()\n );\n };\n}\n\nconst zoneWrapFn = (it: (...args: any[]) => any, macrotask: MacroTask|undefined) => {\n const _this = this;\n // function() is needed for the arguments object\n // tslint:disable-next-line:only-arrow-functions\n return function() {\n const _arguments = arguments;\n if (macrotask) {\n setTimeout(() => {\n if (macrotask.state === 'scheduled') {\n macrotask.invoke();\n }\n }, 10);\n }\n return run(() => it.apply(_this, _arguments));\n };\n};\n\nexport const ɵzoneWrap = <T= unknown>(it: T, blockUntilFirst: boolean): T => {\n // function() is needed for the arguments object\n // tslint:disable-next-line:only-arrow-functions\n return function() {\n let macrotask: MacroTask | undefined;\n const _arguments = arguments;\n // if this is a callback function, e.g, onSnapshot, we should create a microtask and invoke 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 macrotask ||= run(() => Zone.current.scheduleMacroTask('firebaseZoneBlock', noop, {}, noop, noop));\n }\n // TODO create a microtask to track callback functions\n _arguments[i] = zoneWrapFn(_arguments[i], macrotask);\n }\n }\n const ret = runOutsideAngular(() => (it as any).apply(this, _arguments));\n if (!blockUntilFirst) {\n if (ret instanceof Observable) {\n const schedulers = getSchedulers();\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(keepUnstableUntilFirst) as any;\n } else if (ret instanceof Promise) {\n return run(() => new Promise((resolve, reject) => ret.then(it => run(() => resolve(it)), reason => run(() => reject(reason)))));\n } else if (typeof ret === 'function' && macrotask) {\n // Handle unsubscribe\n // function() is needed for the arguments object\n // tslint:disable-next-line:only-arrow-functions\n return function() {\n setTimeout(() => {\n if (macrotask && macrotask.state === 'scheduled') {\n macrotask.invoke();\n }\n }, 10);\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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"}
@@ -0,0 +1,4 @@
1
+ export declare const isMessagingSupportedFactory: {
2
+ async: () => any;
3
+ sync: () => any;
4
+ };
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": "7.5.0",
4
+ "version": "7.6.0-canary.34e89a4",
5
5
  "description": "The official Angular library for Firebase.",
6
6
  "schematics": "./schematics/collection.json",
7
7
  "builders": "./schematics/builders.json",
@@ -23,12 +23,12 @@
23
23
  "author": "angular,firebase",
24
24
  "license": "MIT",
25
25
  "peerDependencies": {
26
- "@angular/common": "^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0",
27
- "@angular/core": "^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0",
28
- "@angular/platform-browser": "^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0",
29
- "@angular/platform-browser-dynamic": "^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0",
26
+ "@angular/common": "^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0",
27
+ "@angular/core": "^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0",
28
+ "@angular/platform-browser": "^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0",
29
+ "@angular/platform-browser-dynamic": "^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0",
30
30
  "rxjs": "~6.6.0 || ^7.0.0",
31
- "firebase-tools": "^9.9.0 || ^10.0.0 || ^11.0.0"
31
+ "firebase-tools": "^9.9.0 || ^10.0.0 || ^11.0.0 || ^12.0.0"
32
32
  },
33
33
  "peerDependenciesMeta": {
34
34
  "firebase-tools": {
@@ -38,8 +38,8 @@
38
38
  "dependencies": {
39
39
  "firebase": "^9.8.0",
40
40
  "rxfire": "^6.0.0",
41
- "@angular-devkit/schematics": "^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0",
42
- "@schematics/angular": "^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0",
41
+ "@angular-devkit/schematics": "^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0",
42
+ "@schematics/angular": "^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0",
43
43
  "tslib": "^2.0.0",
44
44
  "fuzzy": "^0.1.3",
45
45
  "inquirer-autocomplete-prompt": "^1.0.1",
@@ -51,8 +51,7 @@
51
51
  "node-fetch": "^2.6.1",
52
52
  "semver": "^7.1.3",
53
53
  "inquirer": "^8.1.1",
54
- "fs-extra": "^8.0.1",
55
- "file-loader": "^6.2.0"
54
+ "fs-extra": "^8.0.1"
56
55
  },
57
56
  "ng-update": {
58
57
  "migrations": "./schematics/migration.json"
@@ -0,0 +1,4 @@
1
+ export declare const isRemoteConfigSupportedFactory: {
2
+ async: () => any;
3
+ sync: () => any;
4
+ };
@@ -93,7 +93,7 @@ const deployToHosting = (firebaseTools, context, workspaceRoot, options, firebas
93
93
  yield firebaseTools.serve({
94
94
  port: DEFAULT_EMULATOR_PORT,
95
95
  host: DEFAULT_EMULATOR_HOST,
96
- targets: [`hosting:${siteTarget}`],
96
+ only: `hosting:${siteTarget}`,
97
97
  nonInteractive: true,
98
98
  projectRoot: workspaceRoot,
99
99
  });
@@ -105,6 +105,7 @@ const deployToHosting = (firebaseTools, context, workspaceRoot, options, firebas
105
105
  if (!deployProject) {
106
106
  return;
107
107
  }
108
+ process.env.FIREBASE_FRAMEWORKS_SKIP_BUILD = 'true';
108
109
  }
109
110
  return yield firebaseTools.deploy({
110
111
  only: `hosting:${siteTarget}`,
@@ -314,11 +315,15 @@ const deployToCloudRun = (firebaseTools, context, workspaceRoot, staticBuildTarg
314
315
  exports.deployToCloudRun = deployToCloudRun;
315
316
  function deploy(firebaseTools, context, staticBuildTarget, serverBuildTarget, prerenderBuildTarget, firebaseProject, options, firebaseToken) {
316
317
  return __awaiter(this, void 0, void 0, function* () {
317
- if (!firebaseToken) {
318
+ if (!firebaseToken && !process.env.GOOGLE_APPLICATION_CREDENTIALS) {
318
319
  yield firebaseTools.login();
319
320
  const user = yield firebaseTools.login({ projectRoot: context.workspaceRoot });
320
321
  console.log(`Logged into Firebase as ${user.email}.`);
321
322
  }
323
+ if (!firebaseToken && process.env.GOOGLE_APPLICATION_CREDENTIALS) {
324
+ yield spawnAsync(`gcloud auth activate-service-account --key-file ${process.env.GOOGLE_APPLICATION_CREDENTIALS}`);
325
+ console.log(`Using Google Application Credentials.`);
326
+ }
322
327
  if (prerenderBuildTarget) {
323
328
  const run = yield context.scheduleTarget(architect_1.targetFromTargetString(prerenderBuildTarget.name), prerenderBuildTarget.options);
324
329
  yield run.result;
@@ -364,7 +369,7 @@ function deploy(firebaseTools, context, staticBuildTarget, serverBuildTarget, pr
364
369
  })
365
370
  });
366
371
  firebaseTools.logger.logger.add(logger);
367
- if (serverBuildTarget) {
372
+ if ((!options.version || options.version < 2) && serverBuildTarget) {
368
373
  if (options.ssr === 'cloud-run') {
369
374
  yield exports.deployToCloudRun(firebaseTools, context, context.workspaceRoot, staticBuildTarget, serverBuildTarget, options, firebaseToken);
370
375
  }
@@ -23,14 +23,14 @@ exports.default = architect_1.createBuilder((options, context) => __awaiter(void
23
23
  const [defaultFirebaseProject, defulatFirebaseHostingSite] = utils_1.getFirebaseProjectNameFromFs(context.workspaceRoot, context.target.project);
24
24
  const firebaseProject = options.firebaseProject || defaultFirebaseProject;
25
25
  if (!firebaseProject) {
26
- throw new Error('Cannot detirmine the Firebase Project from your angular.json or .firebaserc');
26
+ throw new Error('Cannot determine the Firebase Project from your angular.json or .firebaserc');
27
27
  }
28
28
  if (firebaseProject !== defaultFirebaseProject) {
29
29
  throw new Error('The Firebase Project specified by your angular.json or .firebaserc is in conflict');
30
30
  }
31
31
  const firebaseHostingSite = options.firebaseHostingSite || defulatFirebaseHostingSite;
32
32
  if (!firebaseHostingSite) {
33
- throw new Error(`Cannot detirmine the Firebase Hosting Site from your angular.json or .firebaserc`);
33
+ throw new Error(`Cannot determine the Firebase Hosting Site from your angular.json or .firebaserc`);
34
34
  }
35
35
  if (firebaseHostingSite !== defulatFirebaseHostingSite) {
36
36
  throw new Error('The Firebase Hosting Site specified by your angular.json or .firebaserc is in conflict');
@@ -29,12 +29,14 @@ const semver = __importStar(require("semver"));
29
29
  const getFirebaseTools = () => globalThis.firebaseTools ?
30
30
  Promise.resolve(globalThis.firebaseTools) :
31
31
  new Promise((resolve, reject) => {
32
+ var _a;
33
+ (_a = process.env).FIREBASE_CLI_EXPERIMENTS || (_a.FIREBASE_CLI_EXPERIMENTS = 'webframeworks');
32
34
  try {
33
35
  resolve(require('firebase-tools'));
34
36
  }
35
37
  catch (e) {
36
38
  try {
37
- const root = child_process_1.execSync('npm root -g').toString().trim();
39
+ const root = child_process_1.execSync('npm root --location=global').toString().trim();
38
40
  resolve(require(`${root}/firebase-tools`));
39
41
  }
40
42
  catch (e) {
@@ -42,7 +44,7 @@ const getFirebaseTools = () => globalThis.firebaseTools ?
42
44
  text: `Installing firebase-tools...`,
43
45
  discardStdin: process.platform !== 'win32',
44
46
  }).start();
45
- child_process_1.spawn('npm', ['i', '-g', 'firebase-tools'], {
47
+ child_process_1.spawn('npm', ['i', '--location=global', 'firebase-tools'], {
46
48
  stdio: 'pipe',
47
49
  shell: true,
48
50
  }).on('close', (code) => {
@@ -9,16 +9,15 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.ngAddSetupProject = exports.setupProject = void 0;
12
+ exports.setupFirebase = exports.generateFirebaseJson = exports.ngAddSetupProject = exports.setupProject = void 0;
13
13
  const core_1 = require("@angular-devkit/core");
14
14
  const schematics_1 = require("@angular-devkit/schematics");
15
15
  const utils_1 = require("../utils");
16
16
  const prompts_1 = require("./prompts");
17
- const ssr_1 = require("./ssr");
18
- const static_1 = require("./static");
19
17
  const firebaseTools_1 = require("../firebaseTools");
20
18
  const fs_1 = require("fs");
21
19
  const path_1 = require("path");
20
+ const common_1 = require("../common");
22
21
  const setupProject = (tree, context, features, config) => __awaiter(void 0, void 0, void 0, function* () {
23
22
  var _a;
24
23
  const { path: workspacePath, workspace } = utils_1.getWorkspace(tree);
@@ -53,36 +52,21 @@ ${Object.entries(config.sdkConfig).reduce((c, [k, v]) => c.concat(` ${k}: '${
53
52
  firebaseApp: config.firebaseApp,
54
53
  firebaseHostingSite: config.firebaseHostingSite,
55
54
  sdkConfig: config.sdkConfig,
56
- prerender: config.prerender,
55
+ prerender: undefined,
57
56
  browserTarget: config.browserTarget,
58
57
  serverTarget: config.serverTarget,
59
58
  prerenderTarget: config.prerenderTarget,
59
+ ssrRegion: config.ssrRegion,
60
60
  };
61
61
  if (features.includes(0)) {
62
- switch (config.projectType) {
63
- case 1:
64
- case 2:
65
- return ssr_1.setupUniversalDeployment({
66
- workspace,
67
- workspacePath,
68
- options,
69
- tree,
70
- context,
71
- project,
72
- projectType: config.projectType,
73
- nodeVersion: config.nodeVersion,
74
- });
75
- case 0:
76
- return static_1.setupStaticDeployment({
77
- workspace,
78
- workspacePath,
79
- options,
80
- tree,
81
- context,
82
- project
83
- });
84
- default: throw (new schematics_1.SchematicsException(`Unimplemented PROJECT_TYPE ${config.projectType}`));
85
- }
62
+ return exports.setupFirebase({
63
+ workspace,
64
+ workspacePath,
65
+ options,
66
+ tree,
67
+ context,
68
+ project
69
+ });
86
70
  }
87
71
  else {
88
72
  return Promise.resolve();
@@ -105,7 +89,7 @@ const ngAddSetupProject = (options) => (host, context) => __awaiter(void 0, void
105
89
  const { project: ngProject, projectName: ngProjectName } = utils_1.getProject(options, host);
106
90
  const [defaultProjectName] = utils_1.getFirebaseProjectNameFromHost(host, ngProjectName);
107
91
  const firebaseProject = yield prompts_1.projectPrompt(defaultProjectName, { projectRoot, account: user.email });
108
- let hosting = { projectType: 0, prerender: false };
92
+ let hosting = {};
109
93
  let firebaseHostingSite;
110
94
  if (features.includes(0)) {
111
95
  const results = yield prompts_1.projectTypePrompt(ngProject, ngProjectName);
@@ -124,3 +108,48 @@ const ngAddSetupProject = (options) => (host, context) => __awaiter(void 0, void
124
108
  }
125
109
  });
126
110
  exports.ngAddSetupProject = ngAddSetupProject;
111
+ function generateFirebaseJson(tree, path, project, region) {
112
+ const firebaseJson = tree.exists(path)
113
+ ? common_1.safeReadJSON(path, tree)
114
+ : {};
115
+ const newConfig = {
116
+ target: project,
117
+ source: '.',
118
+ frameworksBackend: {
119
+ region
120
+ }
121
+ };
122
+ if (firebaseJson.hosting === undefined) {
123
+ firebaseJson.hosting = [newConfig];
124
+ }
125
+ else if (Array.isArray(firebaseJson.hosting)) {
126
+ const existingConfigIndex = firebaseJson.hosting.findIndex(config => config.target === newConfig.target);
127
+ if (existingConfigIndex > -1) {
128
+ firebaseJson.hosting.splice(existingConfigIndex, 1, newConfig);
129
+ }
130
+ else {
131
+ firebaseJson.hosting.push(newConfig);
132
+ }
133
+ }
134
+ else {
135
+ firebaseJson.hosting = [firebaseJson.hosting, newConfig];
136
+ }
137
+ common_1.overwriteIfExists(tree, path, common_1.stringifyFormatted(firebaseJson));
138
+ }
139
+ exports.generateFirebaseJson = generateFirebaseJson;
140
+ const setupFirebase = (config) => {
141
+ const { tree, workspacePath, workspace, options } = config;
142
+ const project = workspace.projects[options.project];
143
+ if (!project.architect) {
144
+ throw new schematics_1.SchematicsException(`Angular project "${options.project}" has a malformed angular.json`);
145
+ }
146
+ project.architect.deploy = {
147
+ builder: '@angular/fire:deploy',
148
+ options: Object.assign(Object.assign({ version: 2, browserTarget: options.browserTarget }, (options.serverTarget ? { serverTarget: options.serverTarget } : {})), (options.prerenderTarget ? { prerenderTarget: options.prerenderTarget } : {}))
149
+ };
150
+ tree.overwrite(workspacePath, JSON.stringify(workspace, null, 2));
151
+ generateFirebaseJson(tree, 'firebase.json', options.project, options.ssrRegion);
152
+ common_1.generateFirebaseRc(tree, '.firebaserc', options.firebaseProject.projectId, options.firebaseHostingSite, options.project);
153
+ return tree;
154
+ };
155
+ exports.setupFirebase = setupFirebase;