@angular/fire 18.0.1 → 19.0.0-canary.35e0a98

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 (297) hide show
  1. package/README.md +11 -30
  2. package/analytics/analytics.module.d.ts +2 -2
  3. package/analytics/firebase.d.ts +3 -3
  4. package/analytics/screen-tracking.service.d.ts +1 -1
  5. package/app-check/app-check.d.ts +6 -0
  6. package/app-check/public_api.d.ts +1 -2
  7. package/auth/firebase.d.ts +1 -2
  8. package/auth/rxfire.d.ts +2 -2
  9. package/compat/auth/auth.d.ts +1 -0
  10. package/compat/database/database.d.ts +2 -1
  11. package/compat/database/list/create-reference.d.ts +2 -1
  12. package/compat/database/object/create-reference.d.ts +2 -1
  13. package/compat/firestore/collection/collection.d.ts +1 -0
  14. package/compat/firestore/collection-group/collection-group.d.ts +1 -0
  15. package/compat/firestore/document/document.d.ts +1 -0
  16. package/compat/firestore/firestore.d.ts +2 -1
  17. package/compat/remote-config/remote-config.d.ts +1 -0
  18. package/compat/storage/pipes/storageUrl.pipe.d.ts +2 -2
  19. package/compat/storage/ref.d.ts +2 -1
  20. package/compat/storage/storage.d.ts +2 -1
  21. package/compat/storage/storage.module.d.ts +1 -1
  22. package/core.d.ts +0 -7
  23. package/data-connect/data-connect.d.ts +9 -0
  24. package/data-connect/data-connect.module.d.ts +13 -0
  25. package/data-connect/firebase.d.ts +12 -0
  26. package/{vertexai-preview → data-connect}/index.d.ts +1 -1
  27. package/data-connect/package.json +3 -0
  28. package/data-connect/public_api.d.ts +3 -0
  29. package/database/firebase.d.ts +1 -2
  30. package/database/rxfire.d.ts +4 -4
  31. package/docs/install-and-setup.md +10 -5
  32. package/docs/vertexai.md +3 -3
  33. package/docs/zones.md +39 -0
  34. package/fesm2022/angular-fire-analytics.mjs +31 -58
  35. package/fesm2022/angular-fire-analytics.mjs.map +1 -1
  36. package/fesm2022/angular-fire-app-check.mjs +16 -11
  37. package/fesm2022/angular-fire-app-check.mjs.map +1 -1
  38. package/fesm2022/angular-fire-app.mjs +4 -4
  39. package/fesm2022/angular-fire-app.mjs.map +1 -1
  40. package/fesm2022/angular-fire-auth-guard.mjs +7 -7
  41. package/fesm2022/angular-fire-auth-guard.mjs.map +1 -1
  42. package/fesm2022/angular-fire-auth.mjs +48 -48
  43. package/fesm2022/angular-fire-auth.mjs.map +1 -1
  44. package/fesm2022/angular-fire-compat-analytics.mjs +15 -15
  45. package/fesm2022/angular-fire-compat-analytics.mjs.map +1 -1
  46. package/fesm2022/angular-fire-compat-auth-guard.mjs +7 -7
  47. package/fesm2022/angular-fire-compat-auth-guard.mjs.map +1 -1
  48. package/fesm2022/angular-fire-compat-auth.mjs +12 -10
  49. package/fesm2022/angular-fire-compat-auth.mjs.map +1 -1
  50. package/fesm2022/angular-fire-compat-database.mjs +25 -23
  51. package/fesm2022/angular-fire-compat-database.mjs.map +1 -1
  52. package/fesm2022/angular-fire-compat-firestore.mjs +29 -24
  53. package/fesm2022/angular-fire-compat-firestore.mjs.map +1 -1
  54. package/fesm2022/angular-fire-compat-functions.mjs +7 -7
  55. package/fesm2022/angular-fire-compat-functions.mjs.map +1 -1
  56. package/fesm2022/angular-fire-compat-messaging.mjs +7 -7
  57. package/fesm2022/angular-fire-compat-messaging.mjs.map +1 -1
  58. package/fesm2022/angular-fire-compat-performance.mjs +10 -10
  59. package/fesm2022/angular-fire-compat-performance.mjs.map +1 -1
  60. package/fesm2022/angular-fire-compat-remote-config.mjs +12 -10
  61. package/fesm2022/angular-fire-compat-remote-config.mjs.map +1 -1
  62. package/fesm2022/angular-fire-compat-storage.mjs +28 -25
  63. package/fesm2022/angular-fire-compat-storage.mjs.map +1 -1
  64. package/fesm2022/angular-fire-compat.mjs +4 -4
  65. package/fesm2022/angular-fire-compat.mjs.map +1 -1
  66. package/fesm2022/angular-fire-data-connect.mjs +100 -0
  67. package/fesm2022/angular-fire-data-connect.mjs.map +1 -0
  68. package/fesm2022/angular-fire-database.mjs +35 -35
  69. package/fesm2022/angular-fire-database.mjs.map +1 -1
  70. package/fesm2022/angular-fire-firestore-lite.mjs +42 -45
  71. package/fesm2022/angular-fire-firestore-lite.mjs.map +1 -1
  72. package/fesm2022/angular-fire-firestore.mjs +46 -55
  73. package/fesm2022/angular-fire-firestore.mjs.map +1 -1
  74. package/fesm2022/angular-fire-functions.mjs +7 -6
  75. package/fesm2022/angular-fire-functions.mjs.map +1 -1
  76. package/fesm2022/angular-fire-messaging.mjs +16 -43
  77. package/fesm2022/angular-fire-messaging.mjs.map +1 -1
  78. package/fesm2022/angular-fire-performance.mjs +7 -7
  79. package/fesm2022/angular-fire-performance.mjs.map +1 -1
  80. package/fesm2022/angular-fire-remote-config.mjs +22 -48
  81. package/fesm2022/angular-fire-remote-config.mjs.map +1 -1
  82. package/fesm2022/angular-fire-storage.mjs +10 -9
  83. package/fesm2022/angular-fire-storage.mjs.map +1 -1
  84. package/fesm2022/{angular-fire-vertexai-preview.mjs → angular-fire-vertexai.mjs} +11 -10
  85. package/fesm2022/angular-fire-vertexai.mjs.map +1 -0
  86. package/fesm2022/angular-fire.mjs +74 -116
  87. package/fesm2022/angular-fire.mjs.map +1 -1
  88. package/firestore/firebase.d.ts +2 -12
  89. package/firestore/lite/firebase.d.ts +2 -6
  90. package/firestore/lite/rxfire.d.ts +4 -4
  91. package/firestore/rxfire.d.ts +7 -7
  92. package/messaging/firebase.d.ts +2 -2
  93. package/messaging/messaging.module.d.ts +2 -2
  94. package/package.json +21 -76
  95. package/performance/rxfire.d.ts +2 -2
  96. package/publish.sh +1 -0
  97. package/remote-config/firebase.d.ts +3 -2
  98. package/remote-config/remote-config.module.d.ts +2 -2
  99. package/remote-config/rxfire.d.ts +5 -5
  100. package/schematics/add/index.js +1 -13
  101. package/schematics/deploy/actions.js +138 -394
  102. package/schematics/deploy/builder.js +139 -61
  103. package/schematics/setup/index.js +94 -64
  104. package/schematics/update/index.js +1 -7
  105. package/schematics/update/v7/index.js +1 -67
  106. package/schematics/versions.json +2 -3
  107. package/vertexai/firebase.d.ts +4 -0
  108. package/vertexai/index.d.ts +5 -0
  109. package/vertexai/package.json +3 -0
  110. package/{vertexai-preview → vertexai}/vertexai.d.ts +1 -1
  111. package/{vertexai-preview → vertexai}/vertexai.module.d.ts +1 -1
  112. package/zones.d.ts +9 -15
  113. package/analytics/is-analytics-supported-factory.d.ts +0 -4
  114. package/analytics/overrides.d.ts +0 -1
  115. package/esm2022/analytics/analytics.mjs +0 -16
  116. package/esm2022/analytics/analytics.module.mjs +0 -101
  117. package/esm2022/analytics/angular-fire-analytics.mjs +0 -5
  118. package/esm2022/analytics/firebase.mjs +0 -17
  119. package/esm2022/analytics/is-analytics-supported-factory.mjs +0 -16
  120. package/esm2022/analytics/overrides.mjs +0 -3
  121. package/esm2022/analytics/public_api.mjs +0 -6
  122. package/esm2022/analytics/screen-tracking.service.mjs +0 -148
  123. package/esm2022/analytics/user-tracking.service.mjs +0 -44
  124. package/esm2022/angular-fire.mjs +0 -5
  125. package/esm2022/app/angular-fire-app.mjs +0 -5
  126. package/esm2022/app/app.mjs +0 -15
  127. package/esm2022/app/app.module.mjs +0 -91
  128. package/esm2022/app/firebase.mjs +0 -13
  129. package/esm2022/app/public_api.mjs +0 -4
  130. package/esm2022/app-check/angular-fire-app-check.mjs +0 -5
  131. package/esm2022/app-check/app-check.mjs +0 -10
  132. package/esm2022/app-check/app-check.module.mjs +0 -80
  133. package/esm2022/app-check/firebase.mjs +0 -10
  134. package/esm2022/app-check/public_api.mjs +0 -5
  135. package/esm2022/auth/angular-fire-auth.mjs +0 -5
  136. package/esm2022/auth/auth.mjs +0 -16
  137. package/esm2022/auth/auth.module.mjs +0 -73
  138. package/esm2022/auth/firebase.mjs +0 -59
  139. package/esm2022/auth/public_api.mjs +0 -5
  140. package/esm2022/auth/rxfire.mjs +0 -7
  141. package/esm2022/auth-guard/angular-fire-auth-guard.mjs +0 -5
  142. package/esm2022/auth-guard/auth-guard.mjs +0 -53
  143. package/esm2022/auth-guard/auth-guard.module.mjs +0 -20
  144. package/esm2022/auth-guard/public_api.mjs +0 -3
  145. package/esm2022/compat/analytics/analytics.mjs +0 -160
  146. package/esm2022/compat/analytics/analytics.module.mjs +0 -35
  147. package/esm2022/compat/analytics/angular-fire-compat-analytics.mjs +0 -5
  148. package/esm2022/compat/analytics/base.mjs +0 -11
  149. package/esm2022/compat/analytics/public_api.mjs +0 -5
  150. package/esm2022/compat/analytics/screen-tracking.service.mjs +0 -49
  151. package/esm2022/compat/analytics/user-tracking.service.mjs +0 -53
  152. package/esm2022/compat/angular-fire-compat.mjs +0 -5
  153. package/esm2022/compat/auth/angular-fire-compat-auth.mjs +0 -5
  154. package/esm2022/compat/auth/auth.mjs +0 -161
  155. package/esm2022/compat/auth/auth.module.mjs +0 -20
  156. package/esm2022/compat/auth/base.mjs +0 -39
  157. package/esm2022/compat/auth/public_api.mjs +0 -4
  158. package/esm2022/compat/auth-guard/angular-fire-compat-auth-guard.mjs +0 -5
  159. package/esm2022/compat/auth-guard/auth-guard.mjs +0 -53
  160. package/esm2022/compat/auth-guard/auth-guard.module.mjs +0 -20
  161. package/esm2022/compat/auth-guard/public_api.mjs +0 -3
  162. package/esm2022/compat/cache.mjs +0 -33
  163. package/esm2022/compat/database/angular-fire-compat-database.mjs +0 -5
  164. package/esm2022/compat/database/database.mjs +0 -119
  165. package/esm2022/compat/database/database.module.mjs +0 -20
  166. package/esm2022/compat/database/interfaces.mjs +0 -2
  167. package/esm2022/compat/database/list/audit-trail.mjs +0 -47
  168. package/esm2022/compat/database/list/changes.mjs +0 -85
  169. package/esm2022/compat/database/list/create-reference.mjs +0 -44
  170. package/esm2022/compat/database/list/data-operation.mjs +0 -11
  171. package/esm2022/compat/database/list/remove.mjs +0 -16
  172. package/esm2022/compat/database/list/snapshot-changes.mjs +0 -7
  173. package/esm2022/compat/database/list/state-changes.mjs +0 -9
  174. package/esm2022/compat/database/list/utils.mjs +0 -8
  175. package/esm2022/compat/database/object/create-reference.mjs +0 -19
  176. package/esm2022/compat/database/object/snapshot-changes.mjs +0 -7
  177. package/esm2022/compat/database/observable/fromRef.mjs +0 -48
  178. package/esm2022/compat/database/public_api.mjs +0 -9
  179. package/esm2022/compat/database/utils.mjs +0 -36
  180. package/esm2022/compat/firebase.app.mjs +0 -6
  181. package/esm2022/compat/firebase.app.module.mjs +0 -71
  182. package/esm2022/compat/firestore/angular-fire-compat-firestore.mjs +0 -5
  183. package/esm2022/compat/firestore/collection/changes.mjs +0 -108
  184. package/esm2022/compat/firestore/collection/collection.mjs +0 -123
  185. package/esm2022/compat/firestore/collection-group/collection-group.mjs +0 -86
  186. package/esm2022/compat/firestore/document/document.mjs +0 -87
  187. package/esm2022/compat/firestore/firestore.mjs +0 -257
  188. package/esm2022/compat/firestore/firestore.module.mjs +0 -32
  189. package/esm2022/compat/firestore/interfaces.mjs +0 -2
  190. package/esm2022/compat/firestore/observable/fromRef.mjs +0 -40
  191. package/esm2022/compat/firestore/public_api.mjs +0 -9
  192. package/esm2022/compat/functions/angular-fire-compat-functions.mjs +0 -5
  193. package/esm2022/compat/functions/base.mjs +0 -8
  194. package/esm2022/compat/functions/functions.mjs +0 -69
  195. package/esm2022/compat/functions/functions.module.mjs +0 -20
  196. package/esm2022/compat/functions/public_api.mjs +0 -4
  197. package/esm2022/compat/messaging/angular-fire-compat-messaging.mjs +0 -5
  198. package/esm2022/compat/messaging/base.mjs +0 -9
  199. package/esm2022/compat/messaging/messaging.mjs +0 -81
  200. package/esm2022/compat/messaging/messaging.module.mjs +0 -20
  201. package/esm2022/compat/messaging/public_api.mjs +0 -3
  202. package/esm2022/compat/performance/angular-fire-compat-performance.mjs +0 -5
  203. package/esm2022/compat/performance/base.mjs +0 -9
  204. package/esm2022/compat/performance/performance.mjs +0 -105
  205. package/esm2022/compat/performance/performance.module.mjs +0 -27
  206. package/esm2022/compat/performance/performance.service.mjs +0 -28
  207. package/esm2022/compat/performance/public_api.mjs +0 -4
  208. package/esm2022/compat/proxy.mjs +0 -58
  209. package/esm2022/compat/public_api.mjs +0 -5
  210. package/esm2022/compat/remote-config/angular-fire-compat-remote-config.mjs +0 -5
  211. package/esm2022/compat/remote-config/base.mjs +0 -20
  212. package/esm2022/compat/remote-config/interfaces.mjs +0 -2
  213. package/esm2022/compat/remote-config/public_api.mjs +0 -3
  214. package/esm2022/compat/remote-config/remote-config.mjs +0 -206
  215. package/esm2022/compat/remote-config/remote-config.module.mjs +0 -20
  216. package/esm2022/compat/storage/angular-fire-compat-storage.mjs +0 -5
  217. package/esm2022/compat/storage/interfaces.mjs +0 -2
  218. package/esm2022/compat/storage/observable/fromTask.mjs +0 -36
  219. package/esm2022/compat/storage/pipes/storageUrl.pipe.mjs +0 -56
  220. package/esm2022/compat/storage/public_api.mjs +0 -7
  221. package/esm2022/compat/storage/ref.mjs +0 -28
  222. package/esm2022/compat/storage/storage.mjs +0 -95
  223. package/esm2022/compat/storage/storage.module.mjs +0 -22
  224. package/esm2022/compat/storage/task.mjs +0 -21
  225. package/esm2022/core.mjs +0 -43
  226. package/esm2022/database/angular-fire-database.mjs +0 -5
  227. package/esm2022/database/database.mjs +0 -16
  228. package/esm2022/database/database.module.mjs +0 -76
  229. package/esm2022/database/firebase.mjs +0 -44
  230. package/esm2022/database/public_api.mjs +0 -5
  231. package/esm2022/database/rxfire.mjs +0 -13
  232. package/esm2022/firestore/angular-fire-firestore.mjs +0 -5
  233. package/esm2022/firestore/firebase.mjs +0 -73
  234. package/esm2022/firestore/firestore.mjs +0 -16
  235. package/esm2022/firestore/firestore.module.mjs +0 -76
  236. package/esm2022/firestore/lite/angular-fire-firestore-lite.mjs +0 -5
  237. package/esm2022/firestore/lite/firebase.mjs +0 -48
  238. package/esm2022/firestore/lite/lite.mjs +0 -16
  239. package/esm2022/firestore/lite/lite.module.mjs +0 -75
  240. package/esm2022/firestore/lite/public_api.mjs +0 -5
  241. package/esm2022/firestore/lite/rxfire.mjs +0 -12
  242. package/esm2022/firestore/public_api.mjs +0 -5
  243. package/esm2022/firestore/rxfire.mjs +0 -15
  244. package/esm2022/functions/angular-fire-functions.mjs +0 -5
  245. package/esm2022/functions/firebase.mjs +0 -9
  246. package/esm2022/functions/functions.mjs +0 -16
  247. package/esm2022/functions/functions.module.mjs +0 -76
  248. package/esm2022/functions/public_api.mjs +0 -5
  249. package/esm2022/functions/rxfire.mjs +0 -5
  250. package/esm2022/messaging/angular-fire-messaging.mjs +0 -5
  251. package/esm2022/messaging/firebase.mjs +0 -10
  252. package/esm2022/messaging/is-messaging-supported-factory.mjs +0 -16
  253. package/esm2022/messaging/messaging.mjs +0 -16
  254. package/esm2022/messaging/messaging.module.mjs +0 -93
  255. package/esm2022/messaging/overrides.mjs +0 -3
  256. package/esm2022/messaging/public_api.mjs +0 -4
  257. package/esm2022/performance/angular-fire-performance.mjs +0 -5
  258. package/esm2022/performance/firebase.mjs +0 -8
  259. package/esm2022/performance/performance.mjs +0 -16
  260. package/esm2022/performance/performance.module.mjs +0 -83
  261. package/esm2022/performance/public_api.mjs +0 -5
  262. package/esm2022/performance/rxfire.mjs +0 -8
  263. package/esm2022/public_api.mjs +0 -3
  264. package/esm2022/remote-config/angular-fire-remote-config.mjs +0 -5
  265. package/esm2022/remote-config/firebase.mjs +0 -17
  266. package/esm2022/remote-config/is-remote-config-supported-factory.mjs +0 -16
  267. package/esm2022/remote-config/overrides.mjs +0 -3
  268. package/esm2022/remote-config/public_api.mjs +0 -5
  269. package/esm2022/remote-config/remote-config.mjs +0 -16
  270. package/esm2022/remote-config/remote-config.module.mjs +0 -93
  271. package/esm2022/remote-config/rxfire.mjs +0 -9
  272. package/esm2022/storage/angular-fire-storage.mjs +0 -5
  273. package/esm2022/storage/firebase.mjs +0 -20
  274. package/esm2022/storage/public_api.mjs +0 -5
  275. package/esm2022/storage/rxfire.mjs +0 -6
  276. package/esm2022/storage/storage.mjs +0 -16
  277. package/esm2022/storage/storage.module.mjs +0 -76
  278. package/esm2022/vertexai-preview/angular-fire-vertexai-preview.mjs +0 -5
  279. package/esm2022/vertexai-preview/firebase.mjs +0 -7
  280. package/esm2022/vertexai-preview/public_api.mjs +0 -4
  281. package/esm2022/vertexai-preview/vertexai.mjs +0 -16
  282. package/esm2022/vertexai-preview/vertexai.module.mjs +0 -73
  283. package/esm2022/zones.mjs +0 -194
  284. package/fesm2022/angular-fire-vertexai-preview.mjs.map +0 -1
  285. package/messaging/is-messaging-supported-factory.d.ts +0 -4
  286. package/messaging/overrides.d.ts +0 -1
  287. package/remote-config/is-remote-config-supported-factory.d.ts +0 -4
  288. package/remote-config/overrides.d.ts +0 -1
  289. package/schematics/common.js +0 -81
  290. package/schematics/deploy/functions-templates.js +0 -57
  291. package/schematics/firebaseTools.js +0 -78
  292. package/schematics/interfaces.js +0 -16
  293. package/schematics/setup/prompts.js +0 -195
  294. package/schematics/utils.js +0 -189
  295. package/vertexai-preview/firebase.d.ts +0 -4
  296. package/vertexai-preview/package.json +0 -3
  297. /package/{vertexai-preview → vertexai}/public_api.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"angular-fire-compat-auth.mjs","sources":["../../../src/compat/auth/base.ts","../../../src/compat/auth/auth.ts","../../../src/compat/auth/auth.module.ts","../../../src/compat/auth/angular-fire-compat-auth.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/auth, so Proxy can work with proxy-polyfill in Internet Explorer\nexport const proxyPolyfillCompat = {\n name: null,\n config: null,\n emulatorConfig: null,\n app: null,\n applyActionCode: null,\n checkActionCode: null,\n confirmPasswordReset: null,\n createUserWithEmailAndPassword: null,\n currentUser: null,\n fetchSignInMethodsForEmail: null,\n isSignInWithEmailLink: null,\n getRedirectResult: null,\n languageCode: null,\n settings: null,\n onAuthStateChanged: null,\n onIdTokenChanged: null,\n sendSignInLinkToEmail: null,\n sendPasswordResetEmail: null,\n setPersistence: null,\n signInAndRetrieveDataWithCredential: null,\n signInAnonymously: null,\n signInWithCredential: null,\n signInWithCustomToken: null,\n signInWithEmailAndPassword: null,\n signInWithPhoneNumber: null,\n signInWithEmailLink: null,\n signInWithPopup: null,\n signInWithRedirect: null,\n signOut: null,\n tenantId: null,\n updateCurrentUser: null,\n useDeviceLanguage: null,\n useEmulator: null,\n verifyPasswordResetCode: null,\n};\n","import { isPlatformServer } from '@angular/common';\nimport { Inject, Injectable, InjectionToken, NgZone, Optional, PLATFORM_ID } from '@angular/core';\nimport { keepUnstableUntilFirst, ɵAngularFireSchedulers } from '@angular/fire';\nimport { AppCheckInstances } from '@angular/fire/app-check';\nimport { ɵPromiseProxy, ɵapplyMixins, ɵlazySDKProxy } from '@angular/fire/compat';\nimport { FIREBASE_APP_NAME, FIREBASE_OPTIONS, FirebaseApp, ɵcacheInstance, ɵfirebaseAppFactory } from '@angular/fire/compat';\nimport { FirebaseOptions } from 'firebase/app';\nimport firebase from 'firebase/compat/app';\nimport { Observable, Subject, from, merge, of } from 'rxjs';\nimport { filter, first, map, observeOn, shareReplay, subscribeOn, switchMap, switchMapTo } from 'rxjs/operators';\nimport { proxyPolyfillCompat } from './base';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface AngularFireAuth extends ɵPromiseProxy<firebase.auth.Auth> {}\n\ntype UseEmulatorArguments = Parameters<firebase.auth.Auth['useEmulator']>;\nexport const USE_EMULATOR = new InjectionToken<UseEmulatorArguments>('angularfire2.auth.use-emulator');\n\nexport const SETTINGS = new InjectionToken<firebase.auth.AuthSettings>('angularfire2.auth.settings');\nexport const TENANT_ID = new InjectionToken<string>('angularfire2.auth.tenant-id');\nexport const LANGUAGE_CODE = new InjectionToken<string>('angularfire2.auth.langugage-code');\nexport const USE_DEVICE_LANGUAGE = new InjectionToken<boolean>('angularfire2.auth.use-device-language');\nexport const PERSISTENCE = new InjectionToken<string>('angularfire.auth.persistence');\n\nexport const ɵauthFactory = (\n app: FirebaseApp, zone: NgZone, useEmulator: UseEmulatorArguments|null,\n tenantId: string, languageCode: string|null, useDeviceLanguage: boolean|null,\n settings: firebase.auth.AuthSettings|null, persistence: string|null,\n) => ɵcacheInstance(`${app.name}.auth`, 'AngularFireAuth', app.name, () => {\n const auth = zone.runOutsideAngular(() => app.auth());\n if (useEmulator) {\n auth.useEmulator(...useEmulator);\n }\n if (tenantId) {\n auth.tenantId = tenantId;\n }\n auth.languageCode = languageCode;\n if (useDeviceLanguage) {\n auth.useDeviceLanguage();\n }\n if (settings) {\n for (const [k, v] of Object.entries(settings)) {\n auth.settings[k] = v;\n }\n }\n if (persistence) {\n auth.setPersistence(persistence);\n }\n return auth;\n}, [useEmulator, tenantId, languageCode, useDeviceLanguage, settings, persistence]);\n\n@Injectable({\n providedIn: 'any'\n})\nexport class AngularFireAuth {\n\n /**\n * Observable of authentication state; as of Firebase 4.0 this is only triggered via sign-in/out\n */\n public readonly authState: Observable<firebase.User|null>;\n\n /**\n * Observable of the currently signed-in user's JWT token used to identify the user to a Firebase service (or null).\n */\n public readonly idToken: Observable<string|null>;\n\n /**\n * Observable of the currently signed-in user (or null).\n */\n public readonly user: Observable<firebase.User|null>;\n\n /**\n * Observable of the currently signed-in user's IdTokenResult object which contains the ID token JWT string and other\n * helper properties for getting different data associated with the token as well as all the decoded payload claims\n * (or null).\n */\n public readonly idTokenResult: Observable<firebase.auth.IdTokenResult|null>;\n\n /**\n * Observable of the currently signed-in user's credential, or null\n */\n public readonly credential: Observable<Required<firebase.auth.UserCredential>|null>;\n\n constructor(\n @Inject(FIREBASE_OPTIONS) options: FirebaseOptions,\n @Optional() @Inject(FIREBASE_APP_NAME) name: string|null|undefined,\n // eslint-disable-next-line @typescript-eslint/ban-types\n @Inject(PLATFORM_ID) platformId: Object,\n zone: NgZone,\n schedulers: ɵAngularFireSchedulers,\n @Optional() @Inject(USE_EMULATOR) useEmulator: any, // can't use the tuple here\n @Optional() @Inject(SETTINGS) settings: any, // can't use firebase.auth.AuthSettings here\n @Optional() @Inject(TENANT_ID) tenantId: string | null,\n @Optional() @Inject(LANGUAGE_CODE) languageCode: string | null,\n @Optional() @Inject(USE_DEVICE_LANGUAGE) useDeviceLanguage: boolean | null,\n @Optional() @Inject(PERSISTENCE) persistence: string | null,\n @Optional() _appCheckInstances: AppCheckInstances,\n ) {\n const logins = new Subject<Required<firebase.auth.UserCredential>>();\n\n const auth = of(undefined).pipe(\n observeOn(schedulers.outsideAngular),\n switchMap(() => zone.runOutsideAngular(() => import('firebase/compat/auth'))),\n map(() => ɵfirebaseAppFactory(options, zone, name)),\n map(app => ɵauthFactory(app, zone, useEmulator, tenantId, languageCode, useDeviceLanguage, settings, persistence)),\n shareReplay({ bufferSize: 1, refCount: false }),\n );\n\n if (isPlatformServer(platformId)) {\n\n this.authState = this.user = this.idToken = this.idTokenResult = this.credential = of(null);\n\n } else {\n\n // HACK, as we're exporting auth.Auth, rather than auth, developers importing firebase.auth\n // (e.g, `import { auth } from 'firebase/compat/app'`) are getting an undefined auth object unexpectedly\n // as we're completely lazy. Let's eagerly load the Auth SDK here.\n // There could potentially be race conditions still... but this greatly decreases the odds while\n // we reevaluate the API.\n auth.pipe(first()).subscribe();\n\n const redirectResult = auth.pipe(\n switchMap(auth => auth.getRedirectResult().then(it => it, () => null)),\n keepUnstableUntilFirst,\n shareReplay({ bufferSize: 1, refCount: false }),\n );\n\n const authStateChanged = auth.pipe(\n switchMap(auth => new Observable<firebase.User|null>(sub =>\n ({ unsubscribe: zone.runOutsideAngular(() => auth.onAuthStateChanged(\n next => sub.next(next),\n err => sub.error(err),\n () => sub.complete()\n ))})\n )),\n );\n\n const idTokenChanged = auth.pipe(\n switchMap(auth => new Observable<firebase.User|null>(sub =>\n ({ unsubscribe: zone.runOutsideAngular(() => auth.onIdTokenChanged(\n next => sub.next(next),\n err => sub.error(err),\n () => sub.complete()\n ))})\n ))\n );\n\n this.authState = redirectResult.pipe(\n switchMapTo(authStateChanged),\n subscribeOn(schedulers.outsideAngular),\n observeOn(schedulers.insideAngular),\n );\n\n this.user = redirectResult.pipe(\n switchMapTo(idTokenChanged),\n subscribeOn(schedulers.outsideAngular),\n observeOn(schedulers.insideAngular),\n );\n\n this.idToken = this.user.pipe(\n switchMap(user => user ? from(user.getIdToken()) : of(null))\n );\n\n this.idTokenResult = this.user.pipe(\n switchMap(user => user ? from(user.getIdTokenResult()) : of(null))\n );\n\n this.credential = merge(\n redirectResult,\n logins,\n // pipe in null authState to make credential zipable, just a weird devexp if\n // authState and user go null to still have a credential\n this.authState.pipe(filter(it => !it))\n ).pipe(\n // handle the { user: { } } when a user is already logged in, rather have null\n // TODO handle the type corcersion better\n map(credential => credential?.user ? credential as Required<firebase.auth.UserCredential> : null),\n subscribeOn(schedulers.outsideAngular),\n observeOn(schedulers.insideAngular),\n );\n\n }\n\n return ɵlazySDKProxy(this, auth, zone, { spy: {\n apply: (name, _, val) => {\n // If they call a signIn or createUser function listen into the promise\n // this will give us the user credential, push onto the logins Subject\n // to be consumed in .credential\n if (name.startsWith('signIn') || name.startsWith('createUser')) {\n // TODO fix the types, the trouble is UserCredential has everything optional\n val.then((user: firebase.auth.UserCredential) => logins.next(user as any));\n }\n }\n }});\n\n }\n\n}\n\nɵapplyMixins(AngularFireAuth, [proxyPolyfillCompat]);\n","import { NgModule } from '@angular/core';\nimport { VERSION } from '@angular/fire';\nimport firebase from 'firebase/compat/app';\nimport { AngularFireAuth } from './auth';\n\n@NgModule({\n providers: [ AngularFireAuth ]\n})\nexport class AngularFireAuthModule {\n constructor() {\n firebase.registerVersion('angularfire', VERSION.full, 'auth-compat');\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["ɵcacheInstance","ɵfirebaseAppFactory","ɵlazySDKProxy","ɵapplyMixins"],"mappings":"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"}
1
+ {"version":3,"file":"angular-fire-compat-auth.mjs","sources":["../../../src/compat/auth/base.ts","../../../src/compat/auth/auth.ts","../../../src/compat/auth/auth.module.ts","../../../src/compat/auth/angular-fire-compat-auth.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/auth, so Proxy can work with proxy-polyfill in Internet Explorer\nexport const proxyPolyfillCompat = {\n name: null,\n config: null,\n emulatorConfig: null,\n app: null,\n applyActionCode: null,\n checkActionCode: null,\n confirmPasswordReset: null,\n createUserWithEmailAndPassword: null,\n currentUser: null,\n fetchSignInMethodsForEmail: null,\n isSignInWithEmailLink: null,\n getRedirectResult: null,\n languageCode: null,\n settings: null,\n onAuthStateChanged: null,\n onIdTokenChanged: null,\n sendSignInLinkToEmail: null,\n sendPasswordResetEmail: null,\n setPersistence: null,\n signInAndRetrieveDataWithCredential: null,\n signInAnonymously: null,\n signInWithCredential: null,\n signInWithCustomToken: null,\n signInWithEmailAndPassword: null,\n signInWithPhoneNumber: null,\n signInWithEmailLink: null,\n signInWithPopup: null,\n signInWithRedirect: null,\n signOut: null,\n tenantId: null,\n updateCurrentUser: null,\n useDeviceLanguage: null,\n useEmulator: null,\n verifyPasswordResetCode: null,\n};\n","import { isPlatformServer } from '@angular/common';\nimport { EnvironmentInjector, Inject, Injectable, InjectionToken, NgZone, Optional, PLATFORM_ID, inject } from '@angular/core';\nimport { pendingUntilEvent } from '@angular/core/rxjs-interop';\nimport { ɵAngularFireSchedulers } from '@angular/fire';\nimport { AppCheckInstances } from '@angular/fire/app-check';\nimport { ɵPromiseProxy, ɵapplyMixins, ɵlazySDKProxy } from '@angular/fire/compat';\nimport { FIREBASE_APP_NAME, FIREBASE_OPTIONS, FirebaseApp, ɵcacheInstance, ɵfirebaseAppFactory } from '@angular/fire/compat';\nimport { FirebaseOptions } from 'firebase/app';\nimport firebase from 'firebase/compat/app';\nimport { Observable, Subject, from, merge, of } from 'rxjs';\nimport { filter, first, map, observeOn, shareReplay, subscribeOn, switchMap, switchMapTo } from 'rxjs/operators';\nimport { proxyPolyfillCompat } from './base';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface AngularFireAuth extends ɵPromiseProxy<firebase.auth.Auth> {}\n\ntype UseEmulatorArguments = Parameters<firebase.auth.Auth['useEmulator']>;\nexport const USE_EMULATOR = new InjectionToken<UseEmulatorArguments>('angularfire2.auth.use-emulator');\n\nexport const SETTINGS = new InjectionToken<firebase.auth.AuthSettings>('angularfire2.auth.settings');\nexport const TENANT_ID = new InjectionToken<string>('angularfire2.auth.tenant-id');\nexport const LANGUAGE_CODE = new InjectionToken<string>('angularfire2.auth.langugage-code');\nexport const USE_DEVICE_LANGUAGE = new InjectionToken<boolean>('angularfire2.auth.use-device-language');\nexport const PERSISTENCE = new InjectionToken<string>('angularfire.auth.persistence');\n\nexport const ɵauthFactory = (\n app: FirebaseApp, zone: NgZone, useEmulator: UseEmulatorArguments|null,\n tenantId: string, languageCode: string|null, useDeviceLanguage: boolean|null,\n settings: firebase.auth.AuthSettings|null, persistence: string|null,\n) => ɵcacheInstance(`${app.name}.auth`, 'AngularFireAuth', app.name, () => {\n const auth = zone.runOutsideAngular(() => app.auth());\n if (useEmulator) {\n auth.useEmulator(...useEmulator);\n }\n if (tenantId) {\n auth.tenantId = tenantId;\n }\n auth.languageCode = languageCode;\n if (useDeviceLanguage) {\n auth.useDeviceLanguage();\n }\n if (settings) {\n for (const [k, v] of Object.entries(settings)) {\n auth.settings[k] = v;\n }\n }\n if (persistence) {\n auth.setPersistence(persistence);\n }\n return auth;\n}, [useEmulator, tenantId, languageCode, useDeviceLanguage, settings, persistence]);\n\n@Injectable({\n providedIn: 'any'\n})\nexport class AngularFireAuth {\n\n private readonly injector = inject(EnvironmentInjector);\n\n /**\n * Observable of authentication state; as of Firebase 4.0 this is only triggered via sign-in/out\n */\n public readonly authState: Observable<firebase.User|null>;\n\n /**\n * Observable of the currently signed-in user's JWT token used to identify the user to a Firebase service (or null).\n */\n public readonly idToken: Observable<string|null>;\n\n /**\n * Observable of the currently signed-in user (or null).\n */\n public readonly user: Observable<firebase.User|null>;\n\n /**\n * Observable of the currently signed-in user's IdTokenResult object which contains the ID token JWT string and other\n * helper properties for getting different data associated with the token as well as all the decoded payload claims\n * (or null).\n */\n public readonly idTokenResult: Observable<firebase.auth.IdTokenResult|null>;\n\n /**\n * Observable of the currently signed-in user's credential, or null\n */\n public readonly credential: Observable<Required<firebase.auth.UserCredential>|null>;\n\n constructor(\n @Inject(FIREBASE_OPTIONS) options: FirebaseOptions,\n @Optional() @Inject(FIREBASE_APP_NAME) name: string|null|undefined,\n // eslint-disable-next-line @typescript-eslint/ban-types\n @Inject(PLATFORM_ID) platformId: Object,\n zone: NgZone,\n schedulers: ɵAngularFireSchedulers,\n @Optional() @Inject(USE_EMULATOR) useEmulator: any, // can't use the tuple here\n @Optional() @Inject(SETTINGS) settings: any, // can't use firebase.auth.AuthSettings here\n @Optional() @Inject(TENANT_ID) tenantId: string | null,\n @Optional() @Inject(LANGUAGE_CODE) languageCode: string | null,\n @Optional() @Inject(USE_DEVICE_LANGUAGE) useDeviceLanguage: boolean | null,\n @Optional() @Inject(PERSISTENCE) persistence: string | null,\n @Optional() _appCheckInstances: AppCheckInstances,\n ) {\n const logins = new Subject<Required<firebase.auth.UserCredential>>();\n\n const auth = of(undefined).pipe(\n observeOn(schedulers.outsideAngular),\n switchMap(() => zone.runOutsideAngular(() => import('firebase/compat/auth'))),\n map(() => ɵfirebaseAppFactory(options, zone, name)),\n map(app => ɵauthFactory(app, zone, useEmulator, tenantId, languageCode, useDeviceLanguage, settings, persistence)),\n shareReplay({ bufferSize: 1, refCount: false }),\n );\n\n if (isPlatformServer(platformId)) {\n\n this.authState = this.user = this.idToken = this.idTokenResult = this.credential = of(null);\n\n } else {\n\n // HACK, as we're exporting auth.Auth, rather than auth, developers importing firebase.auth\n // (e.g, `import { auth } from 'firebase/compat/app'`) are getting an undefined auth object unexpectedly\n // as we're completely lazy. Let's eagerly load the Auth SDK here.\n // There could potentially be race conditions still... but this greatly decreases the odds while\n // we reevaluate the API.\n auth.pipe(first()).subscribe();\n\n const redirectResult = auth.pipe(\n switchMap(auth => auth.getRedirectResult().then(it => it, () => null)),\n pendingUntilEvent(this.injector),\n shareReplay({ bufferSize: 1, refCount: false }),\n );\n\n const authStateChanged = auth.pipe(\n switchMap(auth => new Observable<firebase.User|null>(sub =>\n ({ unsubscribe: zone.runOutsideAngular(() => auth.onAuthStateChanged(\n next => sub.next(next),\n err => sub.error(err),\n () => sub.complete()\n ))})\n )),\n );\n\n const idTokenChanged = auth.pipe(\n switchMap(auth => new Observable<firebase.User|null>(sub =>\n ({ unsubscribe: zone.runOutsideAngular(() => auth.onIdTokenChanged(\n next => sub.next(next),\n err => sub.error(err),\n () => sub.complete()\n ))})\n ))\n );\n\n this.authState = redirectResult.pipe(\n switchMapTo(authStateChanged),\n subscribeOn(schedulers.outsideAngular),\n observeOn(schedulers.insideAngular),\n );\n\n this.user = redirectResult.pipe(\n switchMapTo(idTokenChanged),\n subscribeOn(schedulers.outsideAngular),\n observeOn(schedulers.insideAngular),\n );\n\n this.idToken = this.user.pipe(\n switchMap(user => user ? from(user.getIdToken()) : of(null))\n );\n\n this.idTokenResult = this.user.pipe(\n switchMap(user => user ? from(user.getIdTokenResult()) : of(null))\n );\n\n this.credential = merge(\n redirectResult,\n logins,\n // pipe in null authState to make credential zipable, just a weird devexp if\n // authState and user go null to still have a credential\n this.authState.pipe(filter(it => !it))\n ).pipe(\n // handle the { user: { } } when a user is already logged in, rather have null\n // TODO handle the type corcersion better\n map(credential => credential?.user ? credential as Required<firebase.auth.UserCredential> : null),\n subscribeOn(schedulers.outsideAngular),\n observeOn(schedulers.insideAngular),\n );\n\n }\n\n return ɵlazySDKProxy(this, auth, zone, { spy: {\n apply: (name, _, val) => {\n // If they call a signIn or createUser function listen into the promise\n // this will give us the user credential, push onto the logins Subject\n // to be consumed in .credential\n if (name.startsWith('signIn') || name.startsWith('createUser')) {\n // TODO fix the types, the trouble is UserCredential has everything optional\n val.then((user: firebase.auth.UserCredential) => logins.next(user as any));\n }\n }\n }});\n\n }\n\n}\n\nɵapplyMixins(AngularFireAuth, [proxyPolyfillCompat]);\n","import { NgModule } from '@angular/core';\nimport { VERSION } from '@angular/fire';\nimport firebase from 'firebase/compat/app';\nimport { AngularFireAuth } from './auth';\n\n@NgModule({\n providers: [ AngularFireAuth ]\n})\nexport class AngularFireAuthModule {\n constructor() {\n firebase.registerVersion('angularfire', VERSION.full, 'auth-compat');\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["ɵcacheInstance","ɵfirebaseAppFactory","ɵlazySDKProxy","ɵapplyMixins"],"mappings":"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"}
@@ -1,11 +1,12 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, PLATFORM_ID, Injectable, Inject, Optional, NgModule } from '@angular/core';
2
+ import { inject, NgZone, InjectionToken, EnvironmentInjector, PLATFORM_ID, Injectable, Inject, Optional, NgModule } from '@angular/core';
3
3
  import * as i1 from '@angular/fire';
4
- import { keepUnstableUntilFirst, VERSION } from '@angular/fire';
4
+ import { VERSION } from '@angular/fire';
5
5
  import * as i3 from '@angular/fire/app-check';
6
6
  import { ɵfirebaseAppFactory as _firebaseAppFactory, ɵcacheInstance as _cacheInstance, FIREBASE_OPTIONS, FIREBASE_APP_NAME } from '@angular/fire/compat';
7
7
  import * as i2 from '@angular/fire/compat/auth';
8
8
  import { ɵauthFactory as _authFactory, USE_EMULATOR as USE_EMULATOR$1, SETTINGS, TENANT_ID, LANGUAGE_CODE, USE_DEVICE_LANGUAGE, PERSISTENCE } from '@angular/fire/compat/auth';
9
+ import { pendingUntilEvent } from '@angular/core/rxjs-interop';
9
10
  import { map, share, scan, withLatestFrom, skipWhile, switchMap, distinctUntilChanged } from 'rxjs/operators';
10
11
  import { Observable, asyncScheduler, merge, of } from 'rxjs';
11
12
  import 'firebase/compat/auth';
@@ -262,9 +263,9 @@ function snapshotChanges(query, events, scheduler) {
262
263
  return listChanges(query, events, scheduler);
263
264
  }
264
265
 
265
- function createListReference(query, afDatabase) {
266
+ function createListReference(query, afDatabase, injector) {
266
267
  const outsideAngularScheduler = afDatabase.schedulers.outsideAngular;
267
- const refInZone = afDatabase.schedulers.ngZone.run(() => query.ref);
268
+ const refInZone = inject(NgZone).run(() => query.ref);
268
269
  return {
269
270
  query,
270
271
  update: createDataOperationMethod(refInZone, 'update'),
@@ -272,13 +273,13 @@ function createListReference(query, afDatabase) {
272
273
  push: (data) => refInZone.push(data),
273
274
  remove: createRemoveMethod(refInZone),
274
275
  snapshotChanges(events) {
275
- return snapshotChanges(query, events, outsideAngularScheduler).pipe(keepUnstableUntilFirst);
276
+ return snapshotChanges(query, events, outsideAngularScheduler).pipe(pendingUntilEvent(injector));
276
277
  },
277
278
  stateChanges(events) {
278
- return stateChanges(query, events, outsideAngularScheduler).pipe(keepUnstableUntilFirst);
279
+ return stateChanges(query, events, outsideAngularScheduler).pipe(pendingUntilEvent(injector));
279
280
  },
280
281
  auditTrail(events) {
281
- return auditTrail(query, events, outsideAngularScheduler).pipe(keepUnstableUntilFirst);
282
+ return auditTrail(query, events, outsideAngularScheduler).pipe(pendingUntilEvent(injector));
282
283
  },
283
284
  valueChanges(events, options) {
284
285
  const snapshotChanges$ = snapshotChanges(query, events, outsideAngularScheduler);
@@ -294,7 +295,7 @@ function createListReference(query, afDatabase) {
294
295
  else {
295
296
  return a.payload.val();
296
297
  }
297
- })), keepUnstableUntilFirst);
298
+ })), pendingUntilEvent(injector));
298
299
  }
299
300
  };
300
301
  }
@@ -305,18 +306,18 @@ function createObjectSnapshotChanges(query, scheduler) {
305
306
  };
306
307
  }
307
308
 
308
- function createObjectReference(query, afDatabase) {
309
+ function createObjectReference(query, afDatabase, injector) {
309
310
  return {
310
311
  query,
311
312
  snapshotChanges() {
312
- return createObjectSnapshotChanges(query, afDatabase.schedulers.outsideAngular)().pipe(keepUnstableUntilFirst);
313
+ return createObjectSnapshotChanges(query, afDatabase.schedulers.outsideAngular)().pipe(pendingUntilEvent(injector));
313
314
  },
314
315
  update(data) { return query.ref.update(data); },
315
316
  set(data) { return query.ref.set(data); },
316
317
  remove() { return query.ref.remove(); },
317
318
  valueChanges() {
318
319
  const snapshotChanges$ = createObjectSnapshotChanges(query, afDatabase.schedulers.outsideAngular)();
319
- return snapshotChanges$.pipe(keepUnstableUntilFirst, map(action => action.payload.exists() ? action.payload.val() : null));
320
+ return snapshotChanges$.pipe(pendingUntilEvent(injector), map(action => action.payload.exists() ? action.payload.val() : null));
320
321
  },
321
322
  };
322
323
  }
@@ -326,6 +327,7 @@ const USE_EMULATOR = new InjectionToken('angularfire2.database.use-emulator');
326
327
  class AngularFireDatabase {
327
328
  schedulers;
328
329
  database;
330
+ injector = inject(EnvironmentInjector);
329
331
  constructor(options, name, databaseURL,
330
332
  // eslint-disable-next-line @typescript-eslint/ban-types
331
333
  platformId, zone, schedulers, _useEmulator, // tuple isn't working here
@@ -346,25 +348,25 @@ class AngularFireDatabase {
346
348
  }, [useEmulator]);
347
349
  }
348
350
  list(pathOrRef, queryFn) {
349
- const ref = this.schedulers.ngZone.runOutsideAngular(() => getRef(this.database, pathOrRef));
351
+ const ref = inject(NgZone).runOutsideAngular(() => getRef(this.database, pathOrRef));
350
352
  let query = ref;
351
353
  if (queryFn) {
352
354
  query = queryFn(ref);
353
355
  }
354
- return createListReference(query, this);
356
+ return createListReference(query, this, this.injector);
355
357
  }
356
358
  object(pathOrRef) {
357
- const ref = this.schedulers.ngZone.runOutsideAngular(() => getRef(this.database, pathOrRef));
358
- return createObjectReference(ref, this);
359
+ const ref = inject(NgZone).runOutsideAngular(() => getRef(this.database, pathOrRef));
360
+ return createObjectReference(ref, this, this.injector);
359
361
  }
360
362
  createPushId() {
361
- const ref = this.schedulers.ngZone.runOutsideAngular(() => this.database.ref());
363
+ const ref = inject(NgZone).runOutsideAngular(() => this.database.ref());
362
364
  return ref.push().key;
363
365
  }
364
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: AngularFireDatabase, deps: [{ token: FIREBASE_OPTIONS }, { token: FIREBASE_APP_NAME, optional: true }, { token: URL, optional: true }, { token: PLATFORM_ID }, { token: i0.NgZone }, { token: i1.ɵAngularFireSchedulers }, { token: USE_EMULATOR, optional: true }, { token: i2.AngularFireAuth, optional: true }, { token: USE_EMULATOR$1, optional: true }, { token: SETTINGS, optional: true }, { token: TENANT_ID, optional: true }, { token: LANGUAGE_CODE, optional: true }, { token: USE_DEVICE_LANGUAGE, optional: true }, { token: PERSISTENCE, optional: true }, { token: i3.AppCheckInstances, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
365
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: AngularFireDatabase, providedIn: 'any' });
366
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: AngularFireDatabase, deps: [{ token: FIREBASE_OPTIONS }, { token: FIREBASE_APP_NAME, optional: true }, { token: URL, optional: true }, { token: PLATFORM_ID }, { token: i0.NgZone }, { token: i1.ɵAngularFireSchedulers }, { token: USE_EMULATOR, optional: true }, { token: i2.AngularFireAuth, optional: true }, { token: USE_EMULATOR$1, optional: true }, { token: SETTINGS, optional: true }, { token: TENANT_ID, optional: true }, { token: LANGUAGE_CODE, optional: true }, { token: USE_DEVICE_LANGUAGE, optional: true }, { token: PERSISTENCE, optional: true }, { token: i3.AppCheckInstances, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
367
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: AngularFireDatabase, providedIn: 'any' });
366
368
  }
367
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: AngularFireDatabase, decorators: [{
369
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: AngularFireDatabase, decorators: [{
368
370
  type: Injectable,
369
371
  args: [{
370
372
  providedIn: 'any'
@@ -430,11 +432,11 @@ class AngularFireDatabaseModule {
430
432
  constructor() {
431
433
  firebase.registerVersion('angularfire', VERSION.full, 'rtdb-compat');
432
434
  }
433
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: AngularFireDatabaseModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
434
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.0", ngImport: i0, type: AngularFireDatabaseModule });
435
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: AngularFireDatabaseModule, providers: [AngularFireDatabase] });
435
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: AngularFireDatabaseModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
436
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.0", ngImport: i0, type: AngularFireDatabaseModule });
437
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: AngularFireDatabaseModule, providers: [AngularFireDatabase] });
436
438
  }
437
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: AngularFireDatabaseModule, decorators: [{
439
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: AngularFireDatabaseModule, decorators: [{
438
440
  type: NgModule,
439
441
  args: [{
440
442
  providers: [AngularFireDatabase]
@@ -1 +1 @@
1
- {"version":3,"file":"angular-fire-compat-database.mjs","sources":["../../../src/compat/database/observable/fromRef.ts","../../../src/compat/database/utils.ts","../../../src/compat/database/list/utils.ts","../../../src/compat/database/list/state-changes.ts","../../../src/compat/database/list/audit-trail.ts","../../../src/compat/database/list/data-operation.ts","../../../src/compat/database/list/remove.ts","../../../src/compat/database/list/changes.ts","../../../src/compat/database/list/snapshot-changes.ts","../../../src/compat/database/list/create-reference.ts","../../../src/compat/database/object/snapshot-changes.ts","../../../src/compat/database/object/create-reference.ts","../../../src/compat/database/database.ts","../../../src/compat/database/database.module.ts","../../../src/compat/database/angular-fire-compat-database.ts"],"sourcesContent":["import { Observable, SchedulerLike, asyncScheduler } from 'rxjs';\nimport { map, share } from 'rxjs/operators';\nimport { AngularFireAction, DatabaseQuery, DatabaseSnapshot, ListenEvent } from '../interfaces';\n\ninterface SnapshotPrevKey<T> {\n snapshot: DatabaseSnapshot<T>;\n prevKey: string | null | undefined;\n}\n\n/**\n * Create an observable from a Database Reference or Database Query.\n * @param ref Database Reference\n * @param event Listen event type ('value', 'added', 'changed', 'removed', 'moved')\n * @param listenType 'on' or 'once'\n * @param scheduler - Rxjs scheduler\n */\nexport function fromRef<T>(ref: DatabaseQuery,\n event: ListenEvent,\n listenType = 'on',\n scheduler: SchedulerLike = asyncScheduler\n): Observable<AngularFireAction<DatabaseSnapshot<T>>> {\n return new Observable<SnapshotPrevKey<T>>(subscriber => {\n let fn: any = null;\n fn = ref[listenType](event, (snapshot, prevKey) => {\n scheduler.schedule(() => {\n subscriber.next({ snapshot, prevKey });\n });\n if (listenType === 'once') {\n scheduler.schedule(() => subscriber.complete());\n }\n }, err => {\n scheduler.schedule(() => subscriber.error(err));\n });\n\n if (listenType === 'on') {\n return {\n unsubscribe() {\n if (fn != null) {\n ref.off(event, fn);\n }\n }\n };\n } else {\n return {\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n unsubscribe() {\n }\n };\n }\n }).pipe(\n map(payload => {\n const { snapshot, prevKey } = payload;\n let key: string | null = null;\n if (snapshot.exists()) {\n key = snapshot.key;\n }\n return { type: event, payload: snapshot, prevKey, key };\n }),\n share()\n );\n}\n","import firebase from 'firebase/compat/app';\nimport { DatabaseReference, FirebaseOperation, FirebaseOperationCases, PathReference } from './interfaces';\n\nexport function isString(value: any): boolean {\n return typeof value === 'string';\n}\n\nexport function isFirebaseDataSnapshot(value: any): boolean {\n return typeof value.exportVal === 'function';\n}\n\nexport function isNil(obj: any): boolean {\n return obj === undefined || obj === null;\n}\n\nexport function isFirebaseRef(value: any): boolean {\n return typeof value.set === 'function';\n}\n\n/**\n * Returns a database reference given a Firebase App and an\n * absolute or relative path.\n * @param database - Firebase Database\n * @param pathRef - Database path, relative or absolute\n */\nexport function getRef(database: firebase.database.Database, pathRef: PathReference): DatabaseReference {\n // if a db ref was passed in, just return it\n return isFirebaseRef(pathRef) ? pathRef as DatabaseReference\n : database.ref(pathRef as string);\n}\n\nexport function checkOperationCases(item: FirebaseOperation, cases: FirebaseOperationCases): Promise<void> {\n if (isString(item)) {\n return cases.stringCase();\n } else if (isFirebaseRef(item)) {\n return cases.firebaseCase();\n } else if (isFirebaseDataSnapshot(item)) {\n return cases.snapshotCase();\n }\n throw new Error(`Expects a string, snapshot, or reference. Got: ${typeof item}`);\n}\n","import { isNil } from '../utils';\n\nexport function validateEventsArray(events?: any[]) {\n if (isNil(events) || events.length === 0) {\n events = ['child_added', 'child_removed', 'child_changed', 'child_moved'];\n }\n return events;\n}\n","import { SchedulerLike, merge } from 'rxjs';\nimport { ChildEvent, DatabaseQuery } from '../interfaces';\nimport { fromRef } from '../observable/fromRef';\nimport { validateEventsArray } from './utils';\n\nexport function stateChanges<T>(query: DatabaseQuery, events?: ChildEvent[], scheduler?: SchedulerLike) {\n events = validateEventsArray(events);\n const childEvent$ = events.map(event => fromRef<T>(query, event, 'on', scheduler));\n return merge(...childEvent$);\n}\n","import { Observable, SchedulerLike } from 'rxjs';\nimport { map, scan, skipWhile, withLatestFrom } from 'rxjs/operators';\nimport { AngularFireAction, ChildEvent, DataSnapshot, DatabaseQuery, SnapshotAction } from '../interfaces';\nimport { fromRef } from '../observable/fromRef';\nimport { stateChanges } from './state-changes';\n\n\nexport function auditTrail<T>(query: DatabaseQuery, events?: ChildEvent[], scheduler?: SchedulerLike): Observable<SnapshotAction<T>[]> {\n const auditTrail$ = stateChanges<T>(query, events)\n .pipe(\n scan((current, action) => [...current, action], [])\n );\n return waitForLoaded<T>(query, auditTrail$, scheduler);\n}\n\ninterface LoadedMetadata {\n data: AngularFireAction<DataSnapshot>;\n lastKeyToLoad: any;\n}\n\nfunction loadedData<T>(query: DatabaseQuery, scheduler?: SchedulerLike): Observable<LoadedMetadata> {\n // Create an observable of loaded values to retrieve the\n // known dataset. This will allow us to know what key to\n // emit the \"whole\" array at when listening for child events.\n return fromRef<T>(query, 'value', 'on', scheduler)\n .pipe(\n map(data => {\n // Store the last key in the data set\n let lastKeyToLoad;\n // Loop through loaded dataset to find the last key\n data.payload.forEach(child => {\n lastKeyToLoad = child.key; return false;\n });\n // return data set and the current last key loaded\n return { data, lastKeyToLoad };\n })\n );\n}\n\nfunction waitForLoaded<T>(query: DatabaseQuery, action$: Observable<SnapshotAction<T>[]>, scheduler?: SchedulerLike) {\n const loaded$ = loadedData<T>(query, scheduler);\n return loaded$\n .pipe(\n withLatestFrom(action$),\n // Get the latest values from the \"loaded\" and \"child\" datasets\n // We can use both datasets to form an array of the latest values.\n map(([loaded, actions]) => {\n // Store the last key in the data set\n const lastKeyToLoad = loaded.lastKeyToLoad;\n // Store all child keys loaded at this point\n const loadedKeys = actions.map(snap => snap.key);\n return { actions, lastKeyToLoad, loadedKeys };\n }),\n // This is the magical part, only emit when the last load key\n // in the dataset has been loaded by a child event. At this point\n // we can assume the dataset is \"whole\".\n skipWhile(meta => meta.loadedKeys.indexOf(meta.lastKeyToLoad) === -1),\n // Pluck off the meta data because the user only cares\n // to iterate through the snapshots\n map(meta => meta.actions)\n );\n}\n","import { DatabaseReference, DatabaseSnapshot, FirebaseOperation } from '../interfaces';\nimport { checkOperationCases } from '../utils';\n\nexport function createDataOperationMethod(ref: DatabaseReference, operation: string) {\n return function dataOperation<T>(item: FirebaseOperation, value: T) {\n return checkOperationCases(item, {\n stringCase: () => ref.child(item as string)[operation](value),\n firebaseCase: () => (item as DatabaseReference)[operation](value),\n snapshotCase: () => (item as DatabaseSnapshot<T>).ref[operation](value)\n });\n };\n}\n","import { DatabaseReference, DatabaseSnapshot, FirebaseOperation } from '../interfaces';\nimport { checkOperationCases } from '../utils';\n\n// TODO(davideast): Find out why TS thinks this returns firebase.Primise\n// instead of Promise.\nexport function createRemoveMethod<T>(ref: DatabaseReference) {\n return function remove(item?: FirebaseOperation): any {\n if (!item) { return ref.remove(); }\n return checkOperationCases(item, {\n stringCase: () => ref.child(item as string).remove(),\n firebaseCase: () => (item as DatabaseReference).remove(),\n snapshotCase: () => (item as DatabaseSnapshot<T>).ref.remove()\n });\n };\n}\n","import { Observable, SchedulerLike, merge, of } from 'rxjs';\nimport { distinctUntilChanged, scan, switchMap } from 'rxjs/operators';\nimport { ChildEvent, DatabaseQuery, SnapshotAction } from '../interfaces';\nimport { fromRef } from '../observable/fromRef';\nimport { isNil } from '../utils';\n\n\nexport function listChanges<T = any>(ref: DatabaseQuery, events: ChildEvent[], scheduler?: SchedulerLike): Observable<SnapshotAction<T>[]> {\n return fromRef(ref, 'value', 'once', scheduler).pipe(\n switchMap(snapshotAction => {\n const childEvent$ = [of(snapshotAction)];\n events.forEach(event => childEvent$.push(fromRef(ref, event, 'on', scheduler)));\n return merge(...childEvent$).pipe(scan(buildView, []));\n }),\n distinctUntilChanged()\n );\n}\n\nfunction positionFor<T>(changes: SnapshotAction<T>[], key) {\n const len = changes.length;\n for (let i = 0; i < len; i++) {\n if (changes[i].payload.key === key) {\n return i;\n }\n }\n return -1;\n}\n\nfunction positionAfter<T>(changes: SnapshotAction<T>[], prevKey?: string) {\n if (isNil(prevKey)) {\n return 0;\n } else {\n const i = positionFor(changes, prevKey);\n if (i === -1) {\n return changes.length;\n } else {\n return i + 1;\n }\n }\n}\n\nfunction buildView(current, action) {\n const { payload, prevKey, key } = action;\n const currentKeyPosition = positionFor(current, key);\n const afterPreviousKeyPosition = positionAfter(current, prevKey);\n switch (action.type) {\n case 'value':\n if (action.payload?.exists()) {\n let prevKey = null;\n action.payload.forEach(payload => {\n const action = { payload, type: 'value', prevKey, key: payload.key };\n prevKey = payload.key;\n current = [...current, action];\n return false;\n });\n }\n return current;\n case 'child_added':\n if (currentKeyPosition > -1) {\n // check that the previouskey is what we expect, else reorder\n const previous = current[currentKeyPosition - 1];\n if ((previous?.key || null) !== prevKey) {\n current = current.filter(x => x.payload.key !== payload.key);\n current.splice(afterPreviousKeyPosition, 0, action);\n }\n } else if (prevKey == null) {\n return [action, ...current];\n } else {\n current = current.slice();\n current.splice(afterPreviousKeyPosition, 0, action);\n }\n return current;\n case 'child_removed':\n return current.filter(x => x.payload.key !== payload.key);\n case 'child_changed':\n return current.map(x => x.payload.key === key ? action : x);\n case 'child_moved':\n if (currentKeyPosition > -1) {\n const data = current.splice(currentKeyPosition, 1)[0];\n current = current.slice();\n current.splice(afterPreviousKeyPosition, 0, data);\n return current;\n }\n return current;\n // default will also remove null results\n default:\n return current;\n }\n}\n","import { Observable, SchedulerLike } from 'rxjs';\nimport { ChildEvent, DatabaseQuery, SnapshotAction } from '../interfaces';\nimport { listChanges } from './changes';\nimport { validateEventsArray } from './utils';\n\nexport function snapshotChanges<T>(\n query: DatabaseQuery,\n events?: ChildEvent[],\n scheduler?: SchedulerLike\n): Observable<SnapshotAction<T>[]> {\n events = validateEventsArray(events);\n return listChanges<T>(query, events, scheduler);\n}\n","import { keepUnstableUntilFirst } from '@angular/fire';\nimport type { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { AngularFireDatabase } from '../database';\nimport { AngularFireList, ChildEvent, DatabaseQuery } from '../interfaces';\nimport { auditTrail } from './audit-trail';\nimport { createDataOperationMethod } from './data-operation';\nimport { createRemoveMethod } from './remove';\nimport { snapshotChanges } from './snapshot-changes';\nimport { stateChanges } from './state-changes';\n\nexport function createListReference<T= any>(query: DatabaseQuery, afDatabase: AngularFireDatabase): AngularFireList<T> {\n const outsideAngularScheduler = afDatabase.schedulers.outsideAngular;\n const refInZone = afDatabase.schedulers.ngZone.run(() => query.ref);\n return {\n query,\n update: createDataOperationMethod(refInZone, 'update'),\n set: createDataOperationMethod(refInZone, 'set'),\n push: (data: T) => refInZone.push(data),\n remove: createRemoveMethod(refInZone),\n snapshotChanges(events?: ChildEvent[]) {\n return snapshotChanges<T>(query, events, outsideAngularScheduler).pipe(keepUnstableUntilFirst);\n },\n stateChanges(events?: ChildEvent[]) {\n return stateChanges<T>(query, events, outsideAngularScheduler).pipe(keepUnstableUntilFirst);\n },\n auditTrail(events?: ChildEvent[]) {\n return auditTrail<T>(query, events, outsideAngularScheduler).pipe(keepUnstableUntilFirst);\n },\n valueChanges<K extends string>(events?: ChildEvent[], options?: {idField?: K}): Observable<(T & Record<string, string>)[]> {\n const snapshotChanges$ = snapshotChanges<T>(query, events, outsideAngularScheduler);\n return snapshotChanges$.pipe(\n map(actions => actions.map(a => {\n if (options && options.idField) {\n return {\n ...a.payload.val() as T,\n ...{\n [options.idField]: a.key\n }\n };\n } else {\n return a.payload.val() as T & Record<string, string>\n }\n })),\n keepUnstableUntilFirst\n );\n }\n };\n}\n","import { Observable, SchedulerLike } from 'rxjs';\nimport { DatabaseQuery, SnapshotAction } from '../interfaces';\nimport { fromRef } from '../observable/fromRef';\n\nexport function createObjectSnapshotChanges<T>(query: DatabaseQuery, scheduler?: SchedulerLike) {\n return function snapshotChanges(): Observable<SnapshotAction<T>> {\n return fromRef(query, 'value', 'on', scheduler);\n };\n}\n","import { keepUnstableUntilFirst } from '@angular/fire';\nimport { map } from 'rxjs/operators';\nimport { AngularFireDatabase } from '../database';\nimport { AngularFireObject, DatabaseQuery } from '../interfaces';\nimport { createObjectSnapshotChanges } from './snapshot-changes';\n\nexport function createObjectReference<T= any>(query: DatabaseQuery, afDatabase: AngularFireDatabase): AngularFireObject<T> {\n return {\n query,\n snapshotChanges<T>() {\n return createObjectSnapshotChanges<T>(query, afDatabase.schedulers.outsideAngular)().pipe(\n keepUnstableUntilFirst\n );\n },\n update(data: Partial<T>) { return query.ref.update(data as any) as Promise<void>; },\n set(data: T) { return query.ref.set(data) as Promise<void>; },\n remove() { return query.ref.remove() as Promise<void>; },\n valueChanges<T>() {\n const snapshotChanges$ = createObjectSnapshotChanges(query, afDatabase.schedulers.outsideAngular)();\n return snapshotChanges$.pipe(\n keepUnstableUntilFirst,\n map(action => action.payload.exists() ? action.payload.val() as T : null)\n );\n },\n };\n}\n","import { Inject, Injectable, InjectionToken, NgZone, Optional, PLATFORM_ID } from '@angular/core';\nimport { ɵAngularFireSchedulers } from '@angular/fire';\nimport { AppCheckInstances } from '@angular/fire/app-check';\nimport { FIREBASE_APP_NAME, FIREBASE_OPTIONS, ɵcacheInstance, ɵfirebaseAppFactory } from '@angular/fire/compat';\nimport {\n SETTINGS as AUTH_SETTINGS,\n AngularFireAuth,\n LANGUAGE_CODE,\n PERSISTENCE,\n TENANT_ID,\n USE_EMULATOR as USE_AUTH_EMULATOR,\n USE_DEVICE_LANGUAGE,\n ɵauthFactory,\n} from '@angular/fire/compat/auth';\nimport { FirebaseOptions } from 'firebase/app';\nimport firebase from 'firebase/compat/app';\nimport { AngularFireList, AngularFireObject, DatabaseQuery, PathReference, QueryFn } from './interfaces';\nimport { createListReference } from './list/create-reference';\nimport { createObjectReference } from './object/create-reference';\nimport { getRef } from './utils';\nimport 'firebase/compat/auth';\nimport 'firebase/compat/database';\n\nexport const URL = new InjectionToken<string>('angularfire2.realtimeDatabaseURL');\n\ntype UseEmulatorArguments = Parameters<firebase.database.Database['useEmulator']>;\nexport const USE_EMULATOR = new InjectionToken<UseEmulatorArguments>('angularfire2.database.use-emulator');\n\n@Injectable({\n providedIn: 'any'\n})\nexport class AngularFireDatabase {\n public readonly database: firebase.database.Database;\n\n constructor(\n @Inject(FIREBASE_OPTIONS) options: FirebaseOptions,\n @Optional() @Inject(FIREBASE_APP_NAME) name: string | null | undefined,\n @Optional() @Inject(URL) databaseURL: string | null,\n // eslint-disable-next-line @typescript-eslint/ban-types\n @Inject(PLATFORM_ID) platformId: Object,\n zone: NgZone,\n public schedulers: ɵAngularFireSchedulers,\n @Optional() @Inject(USE_EMULATOR) _useEmulator: any, // tuple isn't working here\n @Optional() auth: AngularFireAuth,\n @Optional() @Inject(USE_AUTH_EMULATOR) useAuthEmulator: any,\n @Optional() @Inject(AUTH_SETTINGS) authSettings: any, // can't use firebase.auth.AuthSettings here\n @Optional() @Inject(TENANT_ID) tenantId: string | null,\n @Optional() @Inject(LANGUAGE_CODE) languageCode: string | null,\n @Optional() @Inject(USE_DEVICE_LANGUAGE) useDeviceLanguage: boolean | null,\n @Optional() @Inject(PERSISTENCE) persistence: string | null,\n @Optional() _appCheckInstances: AppCheckInstances,\n ) {\n\n const useEmulator: UseEmulatorArguments | null = _useEmulator;\n const app = ɵfirebaseAppFactory(options, zone, name);\n\n if (auth) {\n ɵauthFactory(app, zone, useAuthEmulator, tenantId, languageCode, useDeviceLanguage, authSettings, persistence);\n }\n\n this.database = ɵcacheInstance(`${app.name}.database.${databaseURL}`, 'AngularFireDatabase', app.name, () => {\n const database = zone.runOutsideAngular(() => app.database(databaseURL || undefined));\n if (useEmulator) {\n database.useEmulator(...useEmulator);\n }\n return database;\n }, [useEmulator]);\n }\n\n list<T>(pathOrRef: PathReference, queryFn?: QueryFn): AngularFireList<T> {\n const ref = this.schedulers.ngZone.runOutsideAngular(() => getRef(this.database, pathOrRef));\n let query: DatabaseQuery = ref;\n if (queryFn) {\n query = queryFn(ref);\n }\n return createListReference<T>(query, this);\n }\n\n object<T>(pathOrRef: PathReference): AngularFireObject<T> {\n const ref = this.schedulers.ngZone.runOutsideAngular(() => getRef(this.database, pathOrRef));\n return createObjectReference<T>(ref, this);\n }\n\n createPushId() {\n const ref = this.schedulers.ngZone.runOutsideAngular(() => this.database.ref());\n return ref.push().key;\n }\n\n}\n\nexport {\n PathReference,\n DatabaseSnapshot,\n ChildEvent,\n ListenEvent,\n QueryFn,\n AngularFireList,\n AngularFireObject,\n AngularFireAction,\n Action,\n SnapshotAction\n} from './interfaces';\n","import { NgModule } from '@angular/core';\nimport { VERSION } from '@angular/fire';\nimport firebase from 'firebase/compat/app';\nimport { AngularFireDatabase } from './database';\n\n@NgModule({\n providers: [ AngularFireDatabase ]\n})\nexport class AngularFireDatabaseModule {\n constructor() {\n firebase.registerVersion('angularfire', VERSION.full, 'rtdb-compat');\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["ɵfirebaseAppFactory","ɵauthFactory","ɵcacheInstance","USE_AUTH_EMULATOR","AUTH_SETTINGS"],"mappings":"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"}
1
+ {"version":3,"file":"angular-fire-compat-database.mjs","sources":["../../../src/compat/database/observable/fromRef.ts","../../../src/compat/database/utils.ts","../../../src/compat/database/list/utils.ts","../../../src/compat/database/list/state-changes.ts","../../../src/compat/database/list/audit-trail.ts","../../../src/compat/database/list/data-operation.ts","../../../src/compat/database/list/remove.ts","../../../src/compat/database/list/changes.ts","../../../src/compat/database/list/snapshot-changes.ts","../../../src/compat/database/list/create-reference.ts","../../../src/compat/database/object/snapshot-changes.ts","../../../src/compat/database/object/create-reference.ts","../../../src/compat/database/database.ts","../../../src/compat/database/database.module.ts","../../../src/compat/database/angular-fire-compat-database.ts"],"sourcesContent":["import { Observable, SchedulerLike, asyncScheduler } from 'rxjs';\nimport { map, share } from 'rxjs/operators';\nimport { AngularFireAction, DatabaseQuery, DatabaseSnapshot, ListenEvent } from '../interfaces';\n\ninterface SnapshotPrevKey<T> {\n snapshot: DatabaseSnapshot<T>;\n prevKey: string | null | undefined;\n}\n\n/**\n * Create an observable from a Database Reference or Database Query.\n * @param ref Database Reference\n * @param event Listen event type ('value', 'added', 'changed', 'removed', 'moved')\n * @param listenType 'on' or 'once'\n * @param scheduler - Rxjs scheduler\n */\nexport function fromRef<T>(ref: DatabaseQuery,\n event: ListenEvent,\n listenType = 'on',\n scheduler: SchedulerLike = asyncScheduler\n): Observable<AngularFireAction<DatabaseSnapshot<T>>> {\n return new Observable<SnapshotPrevKey<T>>(subscriber => {\n let fn: any = null;\n fn = ref[listenType](event, (snapshot, prevKey) => {\n scheduler.schedule(() => {\n subscriber.next({ snapshot, prevKey });\n });\n if (listenType === 'once') {\n scheduler.schedule(() => subscriber.complete());\n }\n }, err => {\n scheduler.schedule(() => subscriber.error(err));\n });\n\n if (listenType === 'on') {\n return {\n unsubscribe() {\n if (fn != null) {\n ref.off(event, fn);\n }\n }\n };\n } else {\n return {\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n unsubscribe() {\n }\n };\n }\n }).pipe(\n map(payload => {\n const { snapshot, prevKey } = payload;\n let key: string | null = null;\n if (snapshot.exists()) {\n key = snapshot.key;\n }\n return { type: event, payload: snapshot, prevKey, key };\n }),\n share()\n );\n}\n","import firebase from 'firebase/compat/app';\nimport { DatabaseReference, FirebaseOperation, FirebaseOperationCases, PathReference } from './interfaces';\n\nexport function isString(value: any): boolean {\n return typeof value === 'string';\n}\n\nexport function isFirebaseDataSnapshot(value: any): boolean {\n return typeof value.exportVal === 'function';\n}\n\nexport function isNil(obj: any): boolean {\n return obj === undefined || obj === null;\n}\n\nexport function isFirebaseRef(value: any): boolean {\n return typeof value.set === 'function';\n}\n\n/**\n * Returns a database reference given a Firebase App and an\n * absolute or relative path.\n * @param database - Firebase Database\n * @param pathRef - Database path, relative or absolute\n */\nexport function getRef(database: firebase.database.Database, pathRef: PathReference): DatabaseReference {\n // if a db ref was passed in, just return it\n return isFirebaseRef(pathRef) ? pathRef as DatabaseReference\n : database.ref(pathRef as string);\n}\n\nexport function checkOperationCases(item: FirebaseOperation, cases: FirebaseOperationCases): Promise<void> {\n if (isString(item)) {\n return cases.stringCase();\n } else if (isFirebaseRef(item)) {\n return cases.firebaseCase();\n } else if (isFirebaseDataSnapshot(item)) {\n return cases.snapshotCase();\n }\n throw new Error(`Expects a string, snapshot, or reference. Got: ${typeof item}`);\n}\n","import { isNil } from '../utils';\n\nexport function validateEventsArray(events?: any[]) {\n if (isNil(events) || events.length === 0) {\n events = ['child_added', 'child_removed', 'child_changed', 'child_moved'];\n }\n return events;\n}\n","import { SchedulerLike, merge } from 'rxjs';\nimport { ChildEvent, DatabaseQuery } from '../interfaces';\nimport { fromRef } from '../observable/fromRef';\nimport { validateEventsArray } from './utils';\n\nexport function stateChanges<T>(query: DatabaseQuery, events?: ChildEvent[], scheduler?: SchedulerLike) {\n events = validateEventsArray(events);\n const childEvent$ = events.map(event => fromRef<T>(query, event, 'on', scheduler));\n return merge(...childEvent$);\n}\n","import { Observable, SchedulerLike } from 'rxjs';\nimport { map, scan, skipWhile, withLatestFrom } from 'rxjs/operators';\nimport { AngularFireAction, ChildEvent, DataSnapshot, DatabaseQuery, SnapshotAction } from '../interfaces';\nimport { fromRef } from '../observable/fromRef';\nimport { stateChanges } from './state-changes';\n\n\nexport function auditTrail<T>(query: DatabaseQuery, events?: ChildEvent[], scheduler?: SchedulerLike): Observable<SnapshotAction<T>[]> {\n const auditTrail$ = stateChanges<T>(query, events)\n .pipe(\n scan((current, action) => [...current, action], [])\n );\n return waitForLoaded<T>(query, auditTrail$, scheduler);\n}\n\ninterface LoadedMetadata {\n data: AngularFireAction<DataSnapshot>;\n lastKeyToLoad: any;\n}\n\nfunction loadedData<T>(query: DatabaseQuery, scheduler?: SchedulerLike): Observable<LoadedMetadata> {\n // Create an observable of loaded values to retrieve the\n // known dataset. This will allow us to know what key to\n // emit the \"whole\" array at when listening for child events.\n return fromRef<T>(query, 'value', 'on', scheduler)\n .pipe(\n map(data => {\n // Store the last key in the data set\n let lastKeyToLoad;\n // Loop through loaded dataset to find the last key\n data.payload.forEach(child => {\n lastKeyToLoad = child.key; return false;\n });\n // return data set and the current last key loaded\n return { data, lastKeyToLoad };\n })\n );\n}\n\nfunction waitForLoaded<T>(query: DatabaseQuery, action$: Observable<SnapshotAction<T>[]>, scheduler?: SchedulerLike) {\n const loaded$ = loadedData<T>(query, scheduler);\n return loaded$\n .pipe(\n withLatestFrom(action$),\n // Get the latest values from the \"loaded\" and \"child\" datasets\n // We can use both datasets to form an array of the latest values.\n map(([loaded, actions]) => {\n // Store the last key in the data set\n const lastKeyToLoad = loaded.lastKeyToLoad;\n // Store all child keys loaded at this point\n const loadedKeys = actions.map(snap => snap.key);\n return { actions, lastKeyToLoad, loadedKeys };\n }),\n // This is the magical part, only emit when the last load key\n // in the dataset has been loaded by a child event. At this point\n // we can assume the dataset is \"whole\".\n skipWhile(meta => meta.loadedKeys.indexOf(meta.lastKeyToLoad) === -1),\n // Pluck off the meta data because the user only cares\n // to iterate through the snapshots\n map(meta => meta.actions)\n );\n}\n","import { DatabaseReference, DatabaseSnapshot, FirebaseOperation } from '../interfaces';\nimport { checkOperationCases } from '../utils';\n\nexport function createDataOperationMethod(ref: DatabaseReference, operation: string) {\n return function dataOperation<T>(item: FirebaseOperation, value: T) {\n return checkOperationCases(item, {\n stringCase: () => ref.child(item as string)[operation](value),\n firebaseCase: () => (item as DatabaseReference)[operation](value),\n snapshotCase: () => (item as DatabaseSnapshot<T>).ref[operation](value)\n });\n };\n}\n","import { DatabaseReference, DatabaseSnapshot, FirebaseOperation } from '../interfaces';\nimport { checkOperationCases } from '../utils';\n\n// TODO(davideast): Find out why TS thinks this returns firebase.Primise\n// instead of Promise.\nexport function createRemoveMethod<T>(ref: DatabaseReference) {\n return function remove(item?: FirebaseOperation): any {\n if (!item) { return ref.remove(); }\n return checkOperationCases(item, {\n stringCase: () => ref.child(item as string).remove(),\n firebaseCase: () => (item as DatabaseReference).remove(),\n snapshotCase: () => (item as DatabaseSnapshot<T>).ref.remove()\n });\n };\n}\n","import { Observable, SchedulerLike, merge, of } from 'rxjs';\nimport { distinctUntilChanged, scan, switchMap } from 'rxjs/operators';\nimport { ChildEvent, DatabaseQuery, SnapshotAction } from '../interfaces';\nimport { fromRef } from '../observable/fromRef';\nimport { isNil } from '../utils';\n\n\nexport function listChanges<T = any>(ref: DatabaseQuery, events: ChildEvent[], scheduler?: SchedulerLike): Observable<SnapshotAction<T>[]> {\n return fromRef(ref, 'value', 'once', scheduler).pipe(\n switchMap(snapshotAction => {\n const childEvent$ = [of(snapshotAction)];\n events.forEach(event => childEvent$.push(fromRef(ref, event, 'on', scheduler)));\n return merge(...childEvent$).pipe(scan(buildView, []));\n }),\n distinctUntilChanged()\n );\n}\n\nfunction positionFor<T>(changes: SnapshotAction<T>[], key) {\n const len = changes.length;\n for (let i = 0; i < len; i++) {\n if (changes[i].payload.key === key) {\n return i;\n }\n }\n return -1;\n}\n\nfunction positionAfter<T>(changes: SnapshotAction<T>[], prevKey?: string) {\n if (isNil(prevKey)) {\n return 0;\n } else {\n const i = positionFor(changes, prevKey);\n if (i === -1) {\n return changes.length;\n } else {\n return i + 1;\n }\n }\n}\n\nfunction buildView(current, action) {\n const { payload, prevKey, key } = action;\n const currentKeyPosition = positionFor(current, key);\n const afterPreviousKeyPosition = positionAfter(current, prevKey);\n switch (action.type) {\n case 'value':\n if (action.payload?.exists()) {\n let prevKey = null;\n action.payload.forEach(payload => {\n const action = { payload, type: 'value', prevKey, key: payload.key };\n prevKey = payload.key;\n current = [...current, action];\n return false;\n });\n }\n return current;\n case 'child_added':\n if (currentKeyPosition > -1) {\n // check that the previouskey is what we expect, else reorder\n const previous = current[currentKeyPosition - 1];\n if ((previous?.key || null) !== prevKey) {\n current = current.filter(x => x.payload.key !== payload.key);\n current.splice(afterPreviousKeyPosition, 0, action);\n }\n } else if (prevKey == null) {\n return [action, ...current];\n } else {\n current = current.slice();\n current.splice(afterPreviousKeyPosition, 0, action);\n }\n return current;\n case 'child_removed':\n return current.filter(x => x.payload.key !== payload.key);\n case 'child_changed':\n return current.map(x => x.payload.key === key ? action : x);\n case 'child_moved':\n if (currentKeyPosition > -1) {\n const data = current.splice(currentKeyPosition, 1)[0];\n current = current.slice();\n current.splice(afterPreviousKeyPosition, 0, data);\n return current;\n }\n return current;\n // default will also remove null results\n default:\n return current;\n }\n}\n","import { Observable, SchedulerLike } from 'rxjs';\nimport { ChildEvent, DatabaseQuery, SnapshotAction } from '../interfaces';\nimport { listChanges } from './changes';\nimport { validateEventsArray } from './utils';\n\nexport function snapshotChanges<T>(\n query: DatabaseQuery,\n events?: ChildEvent[],\n scheduler?: SchedulerLike\n): Observable<SnapshotAction<T>[]> {\n events = validateEventsArray(events);\n return listChanges<T>(query, events, scheduler);\n}\n","import { Injector, NgZone, inject } from '@angular/core';\nimport { pendingUntilEvent } from '@angular/core/rxjs-interop';\nimport type { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { AngularFireDatabase } from '../database';\nimport { AngularFireList, ChildEvent, DatabaseQuery } from '../interfaces';\nimport { auditTrail } from './audit-trail';\nimport { createDataOperationMethod } from './data-operation';\nimport { createRemoveMethod } from './remove';\nimport { snapshotChanges } from './snapshot-changes';\nimport { stateChanges } from './state-changes';\n\nexport function createListReference<T= any>(query: DatabaseQuery, afDatabase: AngularFireDatabase, injector?: Injector): AngularFireList<T> {\n const outsideAngularScheduler = afDatabase.schedulers.outsideAngular;\n const refInZone = inject(NgZone).run(() => query.ref);\n return {\n query,\n update: createDataOperationMethod(refInZone, 'update'),\n set: createDataOperationMethod(refInZone, 'set'),\n push: (data: T) => refInZone.push(data),\n remove: createRemoveMethod(refInZone),\n snapshotChanges(events?: ChildEvent[]) {\n return snapshotChanges<T>(query, events, outsideAngularScheduler).pipe(pendingUntilEvent(injector));\n },\n stateChanges(events?: ChildEvent[]) {\n return stateChanges<T>(query, events, outsideAngularScheduler).pipe(pendingUntilEvent(injector));\n },\n auditTrail(events?: ChildEvent[]) {\n return auditTrail<T>(query, events, outsideAngularScheduler).pipe(pendingUntilEvent(injector));\n },\n valueChanges<K extends string>(events?: ChildEvent[], options?: {idField?: K}): Observable<(T & Record<string, string>)[]> {\n const snapshotChanges$ = snapshotChanges<T>(query, events, outsideAngularScheduler);\n return snapshotChanges$.pipe(\n map(actions => actions.map(a => {\n if (options && options.idField) {\n return {\n ...a.payload.val() as T,\n ...{\n [options.idField]: a.key\n }\n };\n } else {\n return a.payload.val() as T & Record<string, string>\n }\n })),\n pendingUntilEvent(injector)\n );\n }\n };\n}\n","import { Observable, SchedulerLike } from 'rxjs';\nimport { DatabaseQuery, SnapshotAction } from '../interfaces';\nimport { fromRef } from '../observable/fromRef';\n\nexport function createObjectSnapshotChanges<T>(query: DatabaseQuery, scheduler?: SchedulerLike) {\n return function snapshotChanges(): Observable<SnapshotAction<T>> {\n return fromRef(query, 'value', 'on', scheduler);\n };\n}\n","import { Injector } from '@angular/core';\nimport { pendingUntilEvent } from '@angular/core/rxjs-interop';\nimport { map } from 'rxjs/operators';\nimport { AngularFireDatabase } from '../database';\nimport { AngularFireObject, DatabaseQuery } from '../interfaces';\nimport { createObjectSnapshotChanges } from './snapshot-changes';\n\nexport function createObjectReference<T= any>(query: DatabaseQuery, afDatabase: AngularFireDatabase, injector?: Injector): AngularFireObject<T> {\n return {\n query,\n snapshotChanges<T>() {\n return createObjectSnapshotChanges<T>(query, afDatabase.schedulers.outsideAngular)().pipe(\n pendingUntilEvent(injector)\n );\n },\n update(data: Partial<T>) { return query.ref.update(data as any) as Promise<void>; },\n set(data: T) { return query.ref.set(data) as Promise<void>; },\n remove() { return query.ref.remove() as Promise<void>; },\n valueChanges<T>() {\n const snapshotChanges$ = createObjectSnapshotChanges(query, afDatabase.schedulers.outsideAngular)();\n return snapshotChanges$.pipe(\n pendingUntilEvent(injector),\n map(action => action.payload.exists() ? action.payload.val() as T : null)\n );\n },\n };\n}\n","import { EnvironmentInjector, Inject, Injectable, InjectionToken, NgZone, Optional, PLATFORM_ID, inject } from '@angular/core';\nimport { ɵAngularFireSchedulers } from '@angular/fire';\nimport { AppCheckInstances } from '@angular/fire/app-check';\nimport { FIREBASE_APP_NAME, FIREBASE_OPTIONS, ɵcacheInstance, ɵfirebaseAppFactory } from '@angular/fire/compat';\nimport {\n SETTINGS as AUTH_SETTINGS,\n AngularFireAuth,\n LANGUAGE_CODE,\n PERSISTENCE,\n TENANT_ID,\n USE_EMULATOR as USE_AUTH_EMULATOR,\n USE_DEVICE_LANGUAGE,\n ɵauthFactory,\n} from '@angular/fire/compat/auth';\nimport { FirebaseOptions } from 'firebase/app';\nimport firebase from 'firebase/compat/app';\nimport { AngularFireList, AngularFireObject, DatabaseQuery, PathReference, QueryFn } from './interfaces';\nimport { createListReference } from './list/create-reference';\nimport { createObjectReference } from './object/create-reference';\nimport { getRef } from './utils';\nimport 'firebase/compat/auth';\nimport 'firebase/compat/database';\n\nexport const URL = new InjectionToken<string>('angularfire2.realtimeDatabaseURL');\n\ntype UseEmulatorArguments = Parameters<firebase.database.Database['useEmulator']>;\nexport const USE_EMULATOR = new InjectionToken<UseEmulatorArguments>('angularfire2.database.use-emulator');\n\n@Injectable({\n providedIn: 'any'\n})\nexport class AngularFireDatabase {\n public readonly database: firebase.database.Database;\n private readonly injector = inject(EnvironmentInjector);\n\n constructor(\n @Inject(FIREBASE_OPTIONS) options: FirebaseOptions,\n @Optional() @Inject(FIREBASE_APP_NAME) name: string | null | undefined,\n @Optional() @Inject(URL) databaseURL: string | null,\n // eslint-disable-next-line @typescript-eslint/ban-types\n @Inject(PLATFORM_ID) platformId: Object,\n zone: NgZone,\n public schedulers: ɵAngularFireSchedulers,\n @Optional() @Inject(USE_EMULATOR) _useEmulator: any, // tuple isn't working here\n @Optional() auth: AngularFireAuth,\n @Optional() @Inject(USE_AUTH_EMULATOR) useAuthEmulator: any,\n @Optional() @Inject(AUTH_SETTINGS) authSettings: any, // can't use firebase.auth.AuthSettings here\n @Optional() @Inject(TENANT_ID) tenantId: string | null,\n @Optional() @Inject(LANGUAGE_CODE) languageCode: string | null,\n @Optional() @Inject(USE_DEVICE_LANGUAGE) useDeviceLanguage: boolean | null,\n @Optional() @Inject(PERSISTENCE) persistence: string | null,\n @Optional() _appCheckInstances: AppCheckInstances,\n ) {\n\n const useEmulator: UseEmulatorArguments | null = _useEmulator;\n const app = ɵfirebaseAppFactory(options, zone, name);\n\n if (auth) {\n ɵauthFactory(app, zone, useAuthEmulator, tenantId, languageCode, useDeviceLanguage, authSettings, persistence);\n }\n\n this.database = ɵcacheInstance(`${app.name}.database.${databaseURL}`, 'AngularFireDatabase', app.name, () => {\n const database = zone.runOutsideAngular(() => app.database(databaseURL || undefined));\n if (useEmulator) {\n database.useEmulator(...useEmulator);\n }\n return database;\n }, [useEmulator]);\n }\n\n list<T>(pathOrRef: PathReference, queryFn?: QueryFn): AngularFireList<T> {\n const ref = inject(NgZone).runOutsideAngular(() => getRef(this.database, pathOrRef));\n let query: DatabaseQuery = ref;\n if (queryFn) {\n query = queryFn(ref);\n }\n return createListReference<T>(query, this, this.injector);\n }\n\n object<T>(pathOrRef: PathReference): AngularFireObject<T> {\n const ref = inject(NgZone).runOutsideAngular(() => getRef(this.database, pathOrRef));\n return createObjectReference<T>(ref, this, this.injector);\n }\n\n createPushId() {\n const ref = inject(NgZone).runOutsideAngular(() => this.database.ref());\n return ref.push().key;\n }\n\n}\n\nexport {\n PathReference,\n DatabaseSnapshot,\n ChildEvent,\n ListenEvent,\n QueryFn,\n AngularFireList,\n AngularFireObject,\n AngularFireAction,\n Action,\n SnapshotAction\n} from './interfaces';\n","import { NgModule } from '@angular/core';\nimport { VERSION } from '@angular/fire';\nimport firebase from 'firebase/compat/app';\nimport { AngularFireDatabase } from './database';\n\n@NgModule({\n providers: [ AngularFireDatabase ]\n})\nexport class AngularFireDatabaseModule {\n constructor() {\n firebase.registerVersion('angularfire', VERSION.full, 'rtdb-compat');\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["ɵfirebaseAppFactory","ɵauthFactory","ɵcacheInstance","USE_AUTH_EMULATOR","AUTH_SETTINGS"],"mappings":"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"}
@@ -1,13 +1,14 @@
1
1
  import { isPlatformServer } from '@angular/common';
2
2
  import * as i0 from '@angular/core';
3
- import { InjectionToken, PLATFORM_ID, Injectable, Inject, Optional, NgModule } from '@angular/core';
3
+ import { inject, EnvironmentInjector, InjectionToken, NgZone, PLATFORM_ID, Injectable, Inject, Optional, NgModule } from '@angular/core';
4
4
  import * as i1 from '@angular/fire';
5
- import { keepUnstableUntilFirst, VERSION } from '@angular/fire';
5
+ import { VERSION } from '@angular/fire';
6
6
  import * as i3 from '@angular/fire/app-check';
7
7
  import { ɵfirebaseAppFactory as _firebaseAppFactory, ɵcacheInstance as _cacheInstance, FIREBASE_OPTIONS, FIREBASE_APP_NAME } from '@angular/fire/compat';
8
8
  import * as i2 from '@angular/fire/compat/auth';
9
9
  import { ɵauthFactory as _authFactory, USE_EMULATOR as USE_EMULATOR$1, SETTINGS as SETTINGS$1, TENANT_ID, LANGUAGE_CODE, USE_DEVICE_LANGUAGE, PERSISTENCE } from '@angular/fire/compat/auth';
10
10
  import { Observable, asyncScheduler, from, of } from 'rxjs';
11
+ import { pendingUntilEvent } from '@angular/core/rxjs-interop';
11
12
  import { startWith, pairwise, map, scan, distinctUntilChanged, filter } from 'rxjs/operators';
12
13
  import 'firebase/compat/auth';
13
14
  import 'firebase/compat/firestore';
@@ -76,6 +77,7 @@ function fromCollectionRef(ref, scheduler) {
76
77
  class AngularFirestoreDocument {
77
78
  ref;
78
79
  afs;
80
+ injector = inject(EnvironmentInjector);
79
81
  /**
80
82
  * The constructor takes in a DocumentReference to provide wrapper methods
81
83
  * for data operations, data streaming, and Symbol.observable.
@@ -116,7 +118,7 @@ class AngularFirestoreDocument {
116
118
  */
117
119
  snapshotChanges() {
118
120
  const scheduledFromDocRef$ = fromDocRef(this.ref, this.afs.schedulers.outsideAngular);
119
- return scheduledFromDocRef$.pipe(keepUnstableUntilFirst);
121
+ return scheduledFromDocRef$.pipe(pendingUntilEvent(this.injector));
120
122
  }
121
123
  valueChanges(options = {}) {
122
124
  return this.snapshotChanges().pipe(map(({ payload }) => options.idField ? {
@@ -128,7 +130,7 @@ class AngularFirestoreDocument {
128
130
  * Retrieve the document once.
129
131
  */
130
132
  get(options) {
131
- return from(this.ref.get(options)).pipe(keepUnstableUntilFirst);
133
+ return from(this.ref.get(options)).pipe(pendingUntilEvent(this.injector));
132
134
  }
133
135
  }
134
136
 
@@ -207,7 +209,7 @@ function sliceAndSplice(original, start, deleteCount, ...args) {
207
209
  function combineChange(combined, change) {
208
210
  switch (change.type) {
209
211
  case 'added':
210
- if (combined[change.newIndex] && combined[change.newIndex].doc.ref.isEqual(change.doc.ref)) {
212
+ if (combined[change.newIndex]?.doc.ref.isEqual(change.doc.ref)) {
211
213
  // Not sure why the duplicates are getting fired
212
214
  }
213
215
  else {
@@ -230,7 +232,7 @@ function combineChange(combined, change) {
230
232
  }
231
233
  break;
232
234
  case 'removed':
233
- if (combined[change.oldIndex] && combined[change.oldIndex].doc.ref.isEqual(change.doc.ref)) {
235
+ if (combined[change.oldIndex]?.doc.ref.isEqual(change.doc.ref)) {
234
236
  return sliceAndSplice(combined, change.oldIndex, 1);
235
237
  }
236
238
  break;
@@ -271,6 +273,7 @@ class AngularFirestoreCollection {
271
273
  ref;
272
274
  query;
273
275
  afs;
276
+ injector = inject(EnvironmentInjector);
274
277
  /**
275
278
  * The constructor takes in a CollectionReference and Query to provide wrapper methods
276
279
  * for data operations and data streaming.
@@ -298,7 +301,7 @@ class AngularFirestoreCollection {
298
301
  return source.pipe(
299
302
  // We want to filter out empty arrays, but always emit at first, so the developer knows
300
303
  // that the collection has been resolve; even if it's empty
301
- startWith(undefined), pairwise(), filter(([prior, current]) => current.length > 0 || !prior), map(([, current]) => current), keepUnstableUntilFirst);
304
+ startWith(undefined), pairwise(), filter(([prior, current]) => current.length > 0 || !prior), map(([, current]) => current), pendingUntilEvent(this.injector));
302
305
  }
303
306
  /**
304
307
  * Create a stream of changes as they occur it time. This method is similar to stateChanges()
@@ -314,7 +317,7 @@ class AngularFirestoreCollection {
314
317
  snapshotChanges(events) {
315
318
  const validatedEvents = validateEventsArray(events);
316
319
  const scheduledSortedChanges$ = sortedChanges(this.query, validatedEvents, this.afs.schedulers.outsideAngular);
317
- return scheduledSortedChanges$.pipe(keepUnstableUntilFirst);
320
+ return scheduledSortedChanges$.pipe(pendingUntilEvent(this.injector));
318
321
  }
319
322
  valueChanges(options = {}) {
320
323
  return fromCollectionRef(this.query, this.afs.schedulers.outsideAngular)
@@ -328,13 +331,13 @@ class AngularFirestoreCollection {
328
331
  else {
329
332
  return a.data();
330
333
  }
331
- })), keepUnstableUntilFirst);
334
+ })), pendingUntilEvent(this.injector));
332
335
  }
333
336
  /**
334
337
  * Retrieve the results of the query once.
335
338
  */
336
339
  get(options) {
337
- return from(this.query.get(options)).pipe(keepUnstableUntilFirst);
340
+ return from(this.query.get(options)).pipe(pendingUntilEvent(this.injector));
338
341
  }
339
342
  /**
340
343
  * Add data to a collection reference.
@@ -376,6 +379,7 @@ class AngularFirestoreCollection {
376
379
  class AngularFirestoreCollectionGroup {
377
380
  query;
378
381
  afs;
382
+ injector = inject(EnvironmentInjector);
379
383
  /**
380
384
  * The constructor takes in a CollectionGroupQuery to provide wrapper methods
381
385
  * for data operations and data streaming.
@@ -391,10 +395,10 @@ class AngularFirestoreCollectionGroup {
391
395
  */
392
396
  stateChanges(events) {
393
397
  if (!events || events.length === 0) {
394
- return docChanges(this.query, this.afs.schedulers.outsideAngular).pipe(keepUnstableUntilFirst);
398
+ return docChanges(this.query, this.afs.schedulers.outsideAngular).pipe(pendingUntilEvent(this.injector));
395
399
  }
396
400
  return docChanges(this.query, this.afs.schedulers.outsideAngular)
397
- .pipe(map(actions => actions.filter(change => events.indexOf(change.type) > -1)), filter(changes => changes.length > 0), keepUnstableUntilFirst);
401
+ .pipe(map(actions => actions.filter(change => events.indexOf(change.type) > -1)), filter(changes => changes.length > 0), pendingUntilEvent(this.injector));
398
402
  }
399
403
  /**
400
404
  * Create a stream of changes as they occur it time. This method is similar to stateChanges()
@@ -410,7 +414,7 @@ class AngularFirestoreCollectionGroup {
410
414
  snapshotChanges(events) {
411
415
  const validatedEvents = validateEventsArray(events);
412
416
  const scheduledSortedChanges$ = sortedChanges(this.query, validatedEvents, this.afs.schedulers.outsideAngular);
413
- return scheduledSortedChanges$.pipe(keepUnstableUntilFirst);
417
+ return scheduledSortedChanges$.pipe(pendingUntilEvent(this.injector));
414
418
  }
415
419
  valueChanges(options = {}) {
416
420
  const fromCollectionRefScheduled$ = fromCollectionRef(this.query, this.afs.schedulers.outsideAngular);
@@ -425,13 +429,13 @@ class AngularFirestoreCollectionGroup {
425
429
  else {
426
430
  return a.data();
427
431
  }
428
- })), keepUnstableUntilFirst);
432
+ })), pendingUntilEvent(this.injector));
429
433
  }
430
434
  /**
431
435
  * Retrieve the results of the query once.
432
436
  */
433
437
  get(options) {
434
- return from(this.query.get(options)).pipe(keepUnstableUntilFirst);
438
+ return from(this.query.get(options)).pipe(pendingUntilEvent(this.injector));
435
439
  }
436
440
  }
437
441
 
@@ -518,6 +522,7 @@ class AngularFirestore {
518
522
  schedulers;
519
523
  firestore;
520
524
  persistenceEnabled$;
525
+ ngZone = inject(NgZone);
521
526
  /**
522
527
  * Each Feature of AngularFire has a FirebaseApp injected. This way we
523
528
  * don't rely on the main Firebase App instance and we can create named
@@ -571,7 +576,7 @@ class AngularFirestore {
571
576
  collectionRef = pathOrRef;
572
577
  }
573
578
  const { ref, query } = associateQuery(collectionRef, queryFn);
574
- const refInZone = this.schedulers.ngZone.run(() => ref);
579
+ const refInZone = this.ngZone.run(() => ref);
575
580
  return new AngularFirestoreCollection(refInZone, query, this);
576
581
  }
577
582
  /**
@@ -592,7 +597,7 @@ class AngularFirestore {
592
597
  else {
593
598
  ref = pathOrRef;
594
599
  }
595
- const refInZone = this.schedulers.ngZone.run(() => ref);
600
+ const refInZone = this.ngZone.run(() => ref);
596
601
  return new AngularFirestoreDocument(refInZone, this);
597
602
  }
598
603
  /**
@@ -601,10 +606,10 @@ class AngularFirestore {
601
606
  createId() {
602
607
  return this.firestore.collection('_').doc().id;
603
608
  }
604
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: AngularFirestore, deps: [{ token: FIREBASE_OPTIONS }, { token: FIREBASE_APP_NAME, optional: true }, { token: ENABLE_PERSISTENCE, optional: true }, { token: SETTINGS, optional: true }, { token: PLATFORM_ID }, { token: i0.NgZone }, { token: i1.ɵAngularFireSchedulers }, { token: PERSISTENCE_SETTINGS, optional: true }, { token: USE_EMULATOR, optional: true }, { token: i2.AngularFireAuth, optional: true }, { token: USE_EMULATOR$1, optional: true }, { token: SETTINGS$1, optional: true }, { token: TENANT_ID, optional: true }, { token: LANGUAGE_CODE, optional: true }, { token: USE_DEVICE_LANGUAGE, optional: true }, { token: PERSISTENCE, optional: true }, { token: i3.AppCheckInstances, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
605
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: AngularFirestore, providedIn: 'any' });
609
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: AngularFirestore, deps: [{ token: FIREBASE_OPTIONS }, { token: FIREBASE_APP_NAME, optional: true }, { token: ENABLE_PERSISTENCE, optional: true }, { token: SETTINGS, optional: true }, { token: PLATFORM_ID }, { token: i0.NgZone }, { token: i1.ɵAngularFireSchedulers }, { token: PERSISTENCE_SETTINGS, optional: true }, { token: USE_EMULATOR, optional: true }, { token: i2.AngularFireAuth, optional: true }, { token: USE_EMULATOR$1, optional: true }, { token: SETTINGS$1, optional: true }, { token: TENANT_ID, optional: true }, { token: LANGUAGE_CODE, optional: true }, { token: USE_DEVICE_LANGUAGE, optional: true }, { token: PERSISTENCE, optional: true }, { token: i3.AppCheckInstances, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
610
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: AngularFirestore, providedIn: 'any' });
606
611
  }
607
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: AngularFirestore, decorators: [{
612
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: AngularFirestore, decorators: [{
608
613
  type: Injectable,
609
614
  args: [{
610
615
  providedIn: 'any'
@@ -692,11 +697,11 @@ class AngularFirestoreModule {
692
697
  ]
693
698
  };
694
699
  }
695
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: AngularFirestoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
696
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.0", ngImport: i0, type: AngularFirestoreModule });
697
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: AngularFirestoreModule, providers: [AngularFirestore] });
700
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: AngularFirestoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
701
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.0", ngImport: i0, type: AngularFirestoreModule });
702
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: AngularFirestoreModule, providers: [AngularFirestore] });
698
703
  }
699
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: AngularFirestoreModule, decorators: [{
704
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: AngularFirestoreModule, decorators: [{
700
705
  type: NgModule,
701
706
  args: [{
702
707
  providers: [AngularFirestore]