@angular/fire 7.6.1 → 16.0.0-canary.e04cd7f

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 (455) hide show
  1. package/analytics/is-analytics-supported-factory.d.ts +4 -0
  2. package/auth-guard/auth-guard.d.ts +4 -4
  3. package/compat/auth/auth.d.ts +1 -1
  4. package/compat/auth-guard/auth-guard.d.ts +6 -4
  5. package/compat/database/interfaces.d.ts +12 -12
  6. package/compat/firestore/interfaces.d.ts +17 -17
  7. package/compat/proxy.d.ts +8 -8
  8. package/compat/remote-config/interfaces.d.ts +1 -1
  9. package/compat/storage/interfaces.d.ts +8 -8
  10. package/compat/storage/pipes/storageUrl.pipe.d.ts +1 -1
  11. package/core.d.ts +1 -12
  12. package/esm2022/analytics/analytics.module.mjs +94 -0
  13. package/esm2022/analytics/is-analytics-supported-factory.mjs +16 -0
  14. package/esm2022/analytics/overrides.mjs +3 -0
  15. package/esm2022/analytics/screen-tracking.service.mjs +147 -0
  16. package/esm2022/analytics/user-tracking.service.mjs +44 -0
  17. package/esm2022/app/app.module.mjs +84 -0
  18. package/esm2022/app-check/app-check.module.mjs +80 -0
  19. package/{esm2015/auth/auth.module.js → esm2022/auth/auth.module.mjs} +8 -8
  20. package/esm2022/auth-guard/auth-guard.mjs +51 -0
  21. package/{esm2015/auth-guard/auth-guard.module.js → esm2022/auth-guard/auth-guard.module.mjs} +5 -5
  22. package/esm2022/compat/analytics/analytics.mjs +161 -0
  23. package/{esm2015/compat/analytics/analytics.module.js → esm2022/compat/analytics/analytics.module.mjs} +5 -5
  24. package/esm2022/compat/analytics/screen-tracking.service.mjs +49 -0
  25. package/esm2022/compat/analytics/user-tracking.service.mjs +53 -0
  26. package/esm2022/compat/auth/auth.mjs +161 -0
  27. package/{esm2015/compat/auth/auth.module.js → esm2022/compat/auth/auth.module.mjs} +5 -5
  28. package/{esm2015/compat/auth/public_api.js → esm2022/compat/auth/public_api.mjs} +1 -1
  29. package/esm2022/compat/auth-guard/auth-guard.mjs +51 -0
  30. package/{esm2015/compat/auth-guard/auth-guard.module.js → esm2022/compat/auth-guard/auth-guard.module.mjs} +5 -5
  31. package/{esm2015/compat/cache.js → esm2022/compat/cache.mjs} +3 -3
  32. package/esm2022/compat/database/database.mjs +119 -0
  33. package/{esm2015/compat/database/database.module.js → esm2022/compat/database/database.module.mjs} +5 -5
  34. package/esm2022/compat/database/list/create-reference.mjs +44 -0
  35. package/{esm2015/compat/firebase.app.module.js → esm2022/compat/firebase.app.module.mjs} +11 -11
  36. package/esm2022/compat/firestore/collection/changes.mjs +108 -0
  37. package/esm2022/compat/firestore/collection/collection.mjs +123 -0
  38. package/esm2022/compat/firestore/collection-group/collection-group.mjs +86 -0
  39. package/esm2022/compat/firestore/document/document.mjs +87 -0
  40. package/esm2022/compat/firestore/firestore.mjs +257 -0
  41. package/{esm2015/compat/firestore/firestore.module.js → esm2022/compat/firestore/firestore.module.mjs} +5 -5
  42. package/esm2022/compat/firestore/interfaces.mjs +2 -0
  43. package/esm2022/compat/firestore/observable/fromRef.mjs +40 -0
  44. package/esm2022/compat/functions/functions.mjs +69 -0
  45. package/{esm2015/compat/functions/functions.module.js → esm2022/compat/functions/functions.module.mjs} +5 -5
  46. package/{esm2015/compat/functions/public_api.js → esm2022/compat/functions/public_api.mjs} +1 -1
  47. package/esm2022/compat/messaging/messaging.mjs +80 -0
  48. package/{esm2015/compat/messaging/messaging.module.js → esm2022/compat/messaging/messaging.module.mjs} +5 -5
  49. package/{esm2015/compat/performance/performance.js → esm2022/compat/performance/performance.mjs} +7 -6
  50. package/{esm2015/compat/performance/performance.module.js → esm2022/compat/performance/performance.module.mjs} +5 -5
  51. package/esm2022/compat/performance/performance.service.mjs +27 -0
  52. package/esm2022/compat/proxy.mjs +59 -0
  53. package/esm2022/compat/remote-config/remote-config.mjs +207 -0
  54. package/{esm2015/compat/remote-config/remote-config.module.js → esm2022/compat/remote-config/remote-config.module.mjs} +5 -5
  55. package/esm2022/compat/storage/pipes/storageUrl.pipe.mjs +58 -0
  56. package/esm2022/compat/storage/storage.mjs +95 -0
  57. package/{esm2015/compat/storage/storage.module.js → esm2022/compat/storage/storage.module.mjs} +5 -5
  58. package/esm2022/core.mjs +37 -0
  59. package/{esm2015/database/database.module.js → esm2022/database/database.module.mjs} +8 -8
  60. package/{esm2015/firestore/firestore.module.js → esm2022/firestore/firestore.module.mjs} +8 -8
  61. package/{esm2015/firestore/lite/lite.module.js → esm2022/firestore/lite/lite.module.mjs} +8 -8
  62. package/esm2022/firestore/rxfire.mjs +15 -0
  63. package/{esm2015/functions/functions.module.js → esm2022/functions/functions.module.mjs} +8 -8
  64. package/esm2022/messaging/is-messaging-supported-factory.mjs +16 -0
  65. package/esm2022/messaging/messaging.module.mjs +86 -0
  66. package/esm2022/messaging/overrides.mjs +3 -0
  67. package/{esm2015/performance/performance.module.js → esm2022/performance/performance.module.mjs} +8 -8
  68. package/esm2022/remote-config/is-remote-config-supported-factory.mjs +16 -0
  69. package/esm2022/remote-config/overrides.mjs +3 -0
  70. package/esm2022/remote-config/remote-config.module.mjs +86 -0
  71. package/{esm2015/storage/storage.module.js → esm2022/storage/storage.module.mjs} +8 -8
  72. package/esm2022/zones.mjs +196 -0
  73. package/{fesm2015/angular-fire-analytics.js → fesm2022/angular-fire-analytics.mjs} +61 -38
  74. package/fesm2022/angular-fire-analytics.mjs.map +1 -0
  75. package/{fesm2015/angular-fire-app-check.js → fesm2022/angular-fire-app-check.mjs} +9 -10
  76. package/fesm2022/angular-fire-app-check.mjs.map +1 -0
  77. package/{fesm2015/angular-fire-app.js → fesm2022/angular-fire-app.mjs} +8 -8
  78. package/fesm2022/angular-fire-app.mjs.map +1 -0
  79. package/{fesm2015/angular-fire-auth-guard.js → fesm2022/angular-fire-auth-guard.mjs} +25 -23
  80. package/fesm2022/angular-fire-auth-guard.mjs.map +1 -0
  81. package/{fesm2015/angular-fire-auth.js → fesm2022/angular-fire-auth.mjs} +8 -8
  82. package/fesm2022/angular-fire-auth.mjs.map +1 -0
  83. package/{fesm2015/angular-fire-compat-analytics.js → fesm2022/angular-fire-compat-analytics.mjs} +28 -28
  84. package/fesm2022/angular-fire-compat-analytics.mjs.map +1 -0
  85. package/{fesm2015/angular-fire-compat-auth-guard.js → fesm2022/angular-fire-compat-auth-guard.mjs} +25 -23
  86. package/fesm2022/angular-fire-compat-auth-guard.mjs.map +1 -0
  87. package/{fesm2015/angular-fire-compat-auth.js → fesm2022/angular-fire-compat-auth.mjs} +32 -10
  88. package/fesm2022/angular-fire-compat-auth.mjs.map +1 -0
  89. package/{fesm2015/angular-fire-compat-database.js → fesm2022/angular-fire-compat-database.mjs} +17 -12
  90. package/fesm2022/angular-fire-compat-database.mjs.map +1 -0
  91. package/{fesm2015/angular-fire-compat-firestore.js → fesm2022/angular-fire-compat-firestore.mjs} +37 -16
  92. package/fesm2022/angular-fire-compat-firestore.mjs.map +1 -0
  93. package/{fesm2015/angular-fire-compat-functions.js → fesm2022/angular-fire-compat-functions.mjs} +10 -9
  94. package/fesm2022/angular-fire-compat-functions.mjs.map +1 -0
  95. package/{fesm2015/angular-fire-compat-messaging.js → fesm2022/angular-fire-compat-messaging.mjs} +20 -15
  96. package/fesm2022/angular-fire-compat-messaging.mjs.map +1 -0
  97. package/{fesm2015/angular-fire-compat-performance.js → fesm2022/angular-fire-compat-performance.mjs} +16 -15
  98. package/fesm2022/angular-fire-compat-performance.mjs.map +1 -0
  99. package/{fesm2015/angular-fire-compat-remote-config.js → fesm2022/angular-fire-compat-remote-config.mjs} +33 -19
  100. package/fesm2022/angular-fire-compat-remote-config.mjs.map +1 -0
  101. package/{fesm2015/angular-fire-compat-storage.js → fesm2022/angular-fire-compat-storage.mjs} +23 -18
  102. package/fesm2022/angular-fire-compat-storage.mjs.map +1 -0
  103. package/{fesm2015/angular-fire-compat.js → fesm2022/angular-fire-compat.mjs} +15 -17
  104. package/fesm2022/angular-fire-compat.mjs.map +1 -0
  105. package/{fesm2015/angular-fire-database.js → fesm2022/angular-fire-database.mjs} +8 -8
  106. package/fesm2022/angular-fire-database.mjs.map +1 -0
  107. package/{fesm2015/angular-fire-firestore-lite.js → fesm2022/angular-fire-firestore-lite.mjs} +8 -8
  108. package/fesm2022/angular-fire-firestore-lite.mjs.map +1 -0
  109. package/{fesm2015/angular-fire-firestore.js → fesm2022/angular-fire-firestore.mjs} +12 -10
  110. package/fesm2022/angular-fire-firestore.mjs.map +1 -0
  111. package/{fesm2015/angular-fire-functions.js → fesm2022/angular-fire-functions.mjs} +8 -8
  112. package/fesm2022/angular-fire-functions.mjs.map +1 -0
  113. package/{fesm2015/angular-fire-messaging.js → fesm2022/angular-fire-messaging.mjs} +33 -19
  114. package/fesm2022/angular-fire-messaging.mjs.map +1 -0
  115. package/{fesm2015/angular-fire-performance.js → fesm2022/angular-fire-performance.mjs} +8 -8
  116. package/fesm2022/angular-fire-performance.mjs.map +1 -0
  117. package/{fesm2015/angular-fire-remote-config.js → fesm2022/angular-fire-remote-config.mjs} +34 -20
  118. package/fesm2022/angular-fire-remote-config.mjs.map +1 -0
  119. package/{fesm2015/angular-fire-storage.js → fesm2022/angular-fire-storage.mjs} +8 -8
  120. package/fesm2022/angular-fire-storage.mjs.map +1 -0
  121. package/{fesm2015/angular-fire.js → fesm2022/angular-fire.mjs} +23 -52
  122. package/fesm2022/angular-fire.mjs.map +1 -0
  123. package/firestore/rxfire.d.ts +3 -1
  124. package/messaging/is-messaging-supported-factory.d.ts +4 -0
  125. package/package.json +158 -7
  126. package/publish.sh +1 -0
  127. package/remote-config/is-remote-config-supported-factory.d.ts +4 -0
  128. package/schematics/add/index.js +1 -1
  129. package/schematics/common.js +8 -4
  130. package/schematics/deploy/actions.js +59 -59
  131. package/schematics/deploy/builder.js +5 -5
  132. package/schematics/firebaseTools.js +9 -5
  133. package/schematics/setup/index.js +24 -23
  134. package/schematics/setup/prompts.js +20 -15
  135. package/schematics/update/v7/index.js +5 -5
  136. package/schematics/utils.js +30 -30
  137. package/README.md +0 -216
  138. package/analytics/package.json +0 -11
  139. package/app/package.json +0 -11
  140. package/app-check/package.json +0 -11
  141. package/auth/package.json +0 -11
  142. package/auth-guard/package.json +0 -11
  143. package/bundles/angular-fire-analytics.umd.js +0 -673
  144. package/bundles/angular-fire-analytics.umd.js.map +0 -1
  145. package/bundles/angular-fire-app-check.umd.js +0 -465
  146. package/bundles/angular-fire-app-check.umd.js.map +0 -1
  147. package/bundles/angular-fire-app.umd.js +0 -477
  148. package/bundles/angular-fire-app.umd.js.map +0 -1
  149. package/bundles/angular-fire-auth-guard.umd.js +0 -109
  150. package/bundles/angular-fire-auth-guard.umd.js.map +0 -1
  151. package/bundles/angular-fire-auth.umd.js +0 -557
  152. package/bundles/angular-fire-auth.umd.js.map +0 -1
  153. package/bundles/angular-fire-compat-analytics.umd.js +0 -672
  154. package/bundles/angular-fire-compat-analytics.umd.js.map +0 -1
  155. package/bundles/angular-fire-compat-auth-guard.umd.js +0 -112
  156. package/bundles/angular-fire-compat-auth-guard.umd.js.map +0 -1
  157. package/bundles/angular-fire-compat-auth.umd.js +0 -559
  158. package/bundles/angular-fire-compat-auth.umd.js.map +0 -1
  159. package/bundles/angular-fire-compat-database.umd.js +0 -799
  160. package/bundles/angular-fire-compat-database.umd.js.map +0 -1
  161. package/bundles/angular-fire-compat-firestore.umd.js +0 -1073
  162. package/bundles/angular-fire-compat-firestore.umd.js.map +0 -1
  163. package/bundles/angular-fire-compat-functions.umd.js +0 -443
  164. package/bundles/angular-fire-compat-functions.umd.js.map +0 -1
  165. package/bundles/angular-fire-compat-messaging.umd.js +0 -465
  166. package/bundles/angular-fire-compat-messaging.umd.js.map +0 -1
  167. package/bundles/angular-fire-compat-performance.umd.js +0 -212
  168. package/bundles/angular-fire-compat-performance.umd.js.map +0 -1
  169. package/bundles/angular-fire-compat-remote-config.umd.js +0 -605
  170. package/bundles/angular-fire-compat-remote-config.umd.js.map +0 -1
  171. package/bundles/angular-fire-compat-storage.umd.js +0 -598
  172. package/bundles/angular-fire-compat-storage.umd.js.map +0 -1
  173. package/bundles/angular-fire-compat.umd.js +0 -535
  174. package/bundles/angular-fire-compat.umd.js.map +0 -1
  175. package/bundles/angular-fire-database.umd.js +0 -557
  176. package/bundles/angular-fire-database.umd.js.map +0 -1
  177. package/bundles/angular-fire-firestore-lite.umd.js +0 -531
  178. package/bundles/angular-fire-firestore-lite.umd.js.map +0 -1
  179. package/bundles/angular-fire-firestore.umd.js +0 -565
  180. package/bundles/angular-fire-firestore.umd.js.map +0 -1
  181. package/bundles/angular-fire-functions.umd.js +0 -461
  182. package/bundles/angular-fire-functions.umd.js.map +0 -1
  183. package/bundles/angular-fire-messaging.umd.js +0 -473
  184. package/bundles/angular-fire-messaging.umd.js.map +0 -1
  185. package/bundles/angular-fire-performance.umd.js +0 -473
  186. package/bundles/angular-fire-performance.umd.js.map +0 -1
  187. package/bundles/angular-fire-remote-config.umd.js +0 -499
  188. package/bundles/angular-fire-remote-config.umd.js.map +0 -1
  189. package/bundles/angular-fire-storage.umd.js +0 -485
  190. package/bundles/angular-fire-storage.umd.js.map +0 -1
  191. package/bundles/angular-fire.umd.js +0 -308
  192. package/bundles/angular-fire.umd.js.map +0 -1
  193. package/compat/analytics/package.json +0 -11
  194. package/compat/auth/package.json +0 -11
  195. package/compat/auth-guard/package.json +0 -11
  196. package/compat/database/package.json +0 -11
  197. package/compat/firestore/package.json +0 -11
  198. package/compat/functions/package.json +0 -11
  199. package/compat/messaging/package.json +0 -11
  200. package/compat/package.json +0 -11
  201. package/compat/performance/package.json +0 -11
  202. package/compat/remote-config/package.json +0 -11
  203. package/compat/storage/package.json +0 -11
  204. package/database/package.json +0 -11
  205. package/docs/analytics.md +0 -67
  206. package/docs/app-check.md +0 -53
  207. package/docs/auth.md +0 -165
  208. package/docs/compat/analytics/getting-started.md +0 -137
  209. package/docs/compat/auth/getting-started.md +0 -162
  210. package/docs/compat/auth/router-guards.md +0 -104
  211. package/docs/compat/emulators/emulators.md +0 -134
  212. package/docs/compat/firestore/collections.md +0 -326
  213. package/docs/compat/firestore/documents.md +0 -115
  214. package/docs/compat/firestore/offline-data.md +0 -39
  215. package/docs/compat/firestore/querying-collections.md +0 -204
  216. package/docs/compat/functions/functions.md +0 -166
  217. package/docs/compat/messaging/messaging.md +0 -232
  218. package/docs/compat/performance/getting-started.md +0 -132
  219. package/docs/compat/remote-config/getting-started.md +0 -134
  220. package/docs/compat/rtdb/lists.md +0 -257
  221. package/docs/compat/rtdb/objects.md +0 -182
  222. package/docs/compat/rtdb/querying-lists.md +0 -155
  223. package/docs/compat/storage/storage.md +0 -257
  224. package/docs/compat.md +0 -70
  225. package/docs/database.md +0 -175
  226. package/docs/deploy/getting-started.md +0 -204
  227. package/docs/firebase.json +0 -16
  228. package/docs/firestore.md +0 -148
  229. package/docs/functions.md +0 -52
  230. package/docs/images/analytics-illo_1x.png +0 -0
  231. package/docs/images/auth-illo_1x.png +0 -0
  232. package/docs/images/cloud-messaging-illo_1x.png +0 -0
  233. package/docs/images/database-illo_1x.png +0 -0
  234. package/docs/images/firestore-illo_1x.png +0 -0
  235. package/docs/images/functions-illo_1x.png +0 -0
  236. package/docs/images/hosting-illo_1x.png +0 -0
  237. package/docs/images/performance-illo_1x.png +0 -0
  238. package/docs/images/reCAPTCHA-logo@1x.png +0 -0
  239. package/docs/images/remote-config-illo_1x.png +0 -0
  240. package/docs/images/storage-illo_1x.png +0 -0
  241. package/docs/install-and-setup.md +0 -114
  242. package/docs/install-angular-cli-windows10.md +0 -82
  243. package/docs/messaging.md +0 -25
  244. package/docs/performance.md +0 -57
  245. package/docs/remote-config.md +0 -53
  246. package/docs/storage.md +0 -90
  247. package/docs/universal/cloud-functions.md +0 -75
  248. package/docs/universal/getting-started.md +0 -153
  249. package/docs/universal/prerendering.md +0 -72
  250. package/docs/version-4-upgrade.md +0 -119
  251. package/docs/version-5-upgrade.md +0 -82
  252. package/docs/version-6-upgrade.md +0 -16
  253. package/docs/version-7-upgrade.md +0 -298
  254. package/esm2015/analytics/analytics.module.js +0 -93
  255. package/esm2015/analytics/overrides.js +0 -3
  256. package/esm2015/analytics/screen-tracking.service.js +0 -139
  257. package/esm2015/analytics/user-tracking.service.js +0 -43
  258. package/esm2015/app/app.module.js +0 -84
  259. package/esm2015/app-check/app-check.module.js +0 -81
  260. package/esm2015/auth-guard/auth-guard.js +0 -49
  261. package/esm2015/compat/analytics/analytics.js +0 -163
  262. package/esm2015/compat/analytics/screen-tracking.service.js +0 -49
  263. package/esm2015/compat/analytics/user-tracking.service.js +0 -52
  264. package/esm2015/compat/auth/auth.js +0 -139
  265. package/esm2015/compat/auth-guard/auth-guard.js +0 -49
  266. package/esm2015/compat/database/database.js +0 -117
  267. package/esm2015/compat/database/list/create-reference.js +0 -41
  268. package/esm2015/compat/firestore/collection/changes.js +0 -107
  269. package/esm2015/compat/firestore/collection/collection.js +0 -117
  270. package/esm2015/compat/firestore/collection-group/collection-group.js +0 -81
  271. package/esm2015/compat/firestore/document/document.js +0 -82
  272. package/esm2015/compat/firestore/firestore.js +0 -254
  273. package/esm2015/compat/firestore/interfaces.js +0 -2
  274. package/esm2015/compat/firestore/observable/fromRef.js +0 -39
  275. package/esm2015/compat/functions/functions.js +0 -68
  276. package/esm2015/compat/messaging/messaging.js +0 -75
  277. package/esm2015/compat/performance/performance.service.js +0 -27
  278. package/esm2015/compat/proxy.js +0 -61
  279. package/esm2015/compat/remote-config/remote-config.js +0 -193
  280. package/esm2015/compat/storage/pipes/storageUrl.pipe.js +0 -54
  281. package/esm2015/compat/storage/storage.js +0 -94
  282. package/esm2015/core.js +0 -79
  283. package/esm2015/firestore/rxfire.js +0 -13
  284. package/esm2015/messaging/messaging.module.js +0 -85
  285. package/esm2015/messaging/overrides.js +0 -3
  286. package/esm2015/remote-config/overrides.js +0 -3
  287. package/esm2015/remote-config/remote-config.module.js +0 -85
  288. package/esm2015/zones.js +0 -183
  289. package/fesm2015/angular-fire-analytics.js.map +0 -1
  290. package/fesm2015/angular-fire-app-check.js.map +0 -1
  291. package/fesm2015/angular-fire-app.js.map +0 -1
  292. package/fesm2015/angular-fire-auth-guard.js.map +0 -1
  293. package/fesm2015/angular-fire-auth.js.map +0 -1
  294. package/fesm2015/angular-fire-compat-analytics.js.map +0 -1
  295. package/fesm2015/angular-fire-compat-auth-guard.js.map +0 -1
  296. package/fesm2015/angular-fire-compat-auth.js.map +0 -1
  297. package/fesm2015/angular-fire-compat-database.js.map +0 -1
  298. package/fesm2015/angular-fire-compat-firestore.js.map +0 -1
  299. package/fesm2015/angular-fire-compat-functions.js.map +0 -1
  300. package/fesm2015/angular-fire-compat-messaging.js.map +0 -1
  301. package/fesm2015/angular-fire-compat-performance.js.map +0 -1
  302. package/fesm2015/angular-fire-compat-remote-config.js.map +0 -1
  303. package/fesm2015/angular-fire-compat-storage.js.map +0 -1
  304. package/fesm2015/angular-fire-compat.js.map +0 -1
  305. package/fesm2015/angular-fire-database.js.map +0 -1
  306. package/fesm2015/angular-fire-firestore-lite.js.map +0 -1
  307. package/fesm2015/angular-fire-firestore.js.map +0 -1
  308. package/fesm2015/angular-fire-functions.js.map +0 -1
  309. package/fesm2015/angular-fire-messaging.js.map +0 -1
  310. package/fesm2015/angular-fire-performance.js.map +0 -1
  311. package/fesm2015/angular-fire-remote-config.js.map +0 -1
  312. package/fesm2015/angular-fire-storage.js.map +0 -1
  313. package/fesm2015/angular-fire.js.map +0 -1
  314. package/firestore/lite/package.json +0 -11
  315. package/firestore/package.json +0 -11
  316. package/firestore-protos.js +0 -4
  317. package/functions/package.json +0 -11
  318. package/messaging/package.json +0 -11
  319. package/performance/package.json +0 -11
  320. package/remote-config/package.json +0 -11
  321. package/schematics/add/schema.json +0 -16
  322. package/schematics/builders.json +0 -10
  323. package/schematics/collection.json +0 -15
  324. package/schematics/deploy/schema.json +0 -119
  325. package/schematics/migration.json +0 -15
  326. package/schematics/setup/schema.json +0 -16
  327. package/storage/package.json +0 -11
  328. /package/analytics/{angular-fire-analytics.d.ts → index.d.ts} +0 -0
  329. /package/app/{angular-fire-app.d.ts → index.d.ts} +0 -0
  330. /package/app-check/{angular-fire-app-check.d.ts → index.d.ts} +0 -0
  331. /package/auth/{angular-fire-auth.d.ts → index.d.ts} +0 -0
  332. /package/auth-guard/{angular-fire-auth-guard.d.ts → index.d.ts} +0 -0
  333. /package/compat/analytics/{angular-fire-compat-analytics.d.ts → index.d.ts} +0 -0
  334. /package/compat/auth/{angular-fire-compat-auth.d.ts → index.d.ts} +0 -0
  335. /package/compat/auth-guard/{angular-fire-compat-auth-guard.d.ts → index.d.ts} +0 -0
  336. /package/compat/database/{angular-fire-compat-database.d.ts → index.d.ts} +0 -0
  337. /package/compat/firestore/{angular-fire-compat-firestore.d.ts → index.d.ts} +0 -0
  338. /package/compat/functions/{angular-fire-compat-functions.d.ts → index.d.ts} +0 -0
  339. /package/compat/{angular-fire-compat.d.ts → index.d.ts} +0 -0
  340. /package/compat/messaging/{angular-fire-compat-messaging.d.ts → index.d.ts} +0 -0
  341. /package/compat/performance/{angular-fire-compat-performance.d.ts → index.d.ts} +0 -0
  342. /package/compat/remote-config/{angular-fire-compat-remote-config.d.ts → index.d.ts} +0 -0
  343. /package/compat/storage/{angular-fire-compat-storage.d.ts → index.d.ts} +0 -0
  344. /package/database/{angular-fire-database.d.ts → index.d.ts} +0 -0
  345. /package/{esm2015/analytics/analytics.js → esm2022/analytics/analytics.mjs} +0 -0
  346. /package/{esm2015/analytics/angular-fire-analytics.js → esm2022/analytics/angular-fire-analytics.mjs} +0 -0
  347. /package/{esm2015/analytics/firebase.js → esm2022/analytics/firebase.mjs} +0 -0
  348. /package/{esm2015/analytics/public_api.js → esm2022/analytics/public_api.mjs} +0 -0
  349. /package/{esm2015/angular-fire.js → esm2022/angular-fire.mjs} +0 -0
  350. /package/{esm2015/app/angular-fire-app.js → esm2022/app/angular-fire-app.mjs} +0 -0
  351. /package/{esm2015/app/app.js → esm2022/app/app.mjs} +0 -0
  352. /package/{esm2015/app/firebase.js → esm2022/app/firebase.mjs} +0 -0
  353. /package/{esm2015/app/public_api.js → esm2022/app/public_api.mjs} +0 -0
  354. /package/{esm2015/app-check/angular-fire-app-check.js → esm2022/app-check/angular-fire-app-check.mjs} +0 -0
  355. /package/{esm2015/app-check/app-check.js → esm2022/app-check/app-check.mjs} +0 -0
  356. /package/{esm2015/app-check/firebase.js → esm2022/app-check/firebase.mjs} +0 -0
  357. /package/{esm2015/app-check/public_api.js → esm2022/app-check/public_api.mjs} +0 -0
  358. /package/{esm2015/auth/angular-fire-auth.js → esm2022/auth/angular-fire-auth.mjs} +0 -0
  359. /package/{esm2015/auth/auth.js → esm2022/auth/auth.mjs} +0 -0
  360. /package/{esm2015/auth/firebase.js → esm2022/auth/firebase.mjs} +0 -0
  361. /package/{esm2015/auth/public_api.js → esm2022/auth/public_api.mjs} +0 -0
  362. /package/{esm2015/auth/rxfire.js → esm2022/auth/rxfire.mjs} +0 -0
  363. /package/{esm2015/auth-guard/angular-fire-auth-guard.js → esm2022/auth-guard/angular-fire-auth-guard.mjs} +0 -0
  364. /package/{esm2015/auth-guard/public_api.js → esm2022/auth-guard/public_api.mjs} +0 -0
  365. /package/{esm2015/compat/analytics/angular-fire-compat-analytics.js → esm2022/compat/analytics/angular-fire-compat-analytics.mjs} +0 -0
  366. /package/{esm2015/compat/analytics/base.js → esm2022/compat/analytics/base.mjs} +0 -0
  367. /package/{esm2015/compat/analytics/public_api.js → esm2022/compat/analytics/public_api.mjs} +0 -0
  368. /package/{esm2015/compat/angular-fire-compat.js → esm2022/compat/angular-fire-compat.mjs} +0 -0
  369. /package/{esm2015/compat/auth/angular-fire-compat-auth.js → esm2022/compat/auth/angular-fire-compat-auth.mjs} +0 -0
  370. /package/{esm2015/compat/auth/base.js → esm2022/compat/auth/base.mjs} +0 -0
  371. /package/{esm2015/compat/auth-guard/angular-fire-compat-auth-guard.js → esm2022/compat/auth-guard/angular-fire-compat-auth-guard.mjs} +0 -0
  372. /package/{esm2015/compat/auth-guard/public_api.js → esm2022/compat/auth-guard/public_api.mjs} +0 -0
  373. /package/{esm2015/compat/database/angular-fire-compat-database.js → esm2022/compat/database/angular-fire-compat-database.mjs} +0 -0
  374. /package/{esm2015/compat/database/interfaces.js → esm2022/compat/database/interfaces.mjs} +0 -0
  375. /package/{esm2015/compat/database/list/audit-trail.js → esm2022/compat/database/list/audit-trail.mjs} +0 -0
  376. /package/{esm2015/compat/database/list/changes.js → esm2022/compat/database/list/changes.mjs} +0 -0
  377. /package/{esm2015/compat/database/list/data-operation.js → esm2022/compat/database/list/data-operation.mjs} +0 -0
  378. /package/{esm2015/compat/database/list/remove.js → esm2022/compat/database/list/remove.mjs} +0 -0
  379. /package/{esm2015/compat/database/list/snapshot-changes.js → esm2022/compat/database/list/snapshot-changes.mjs} +0 -0
  380. /package/{esm2015/compat/database/list/state-changes.js → esm2022/compat/database/list/state-changes.mjs} +0 -0
  381. /package/{esm2015/compat/database/list/utils.js → esm2022/compat/database/list/utils.mjs} +0 -0
  382. /package/{esm2015/compat/database/object/create-reference.js → esm2022/compat/database/object/create-reference.mjs} +0 -0
  383. /package/{esm2015/compat/database/object/snapshot-changes.js → esm2022/compat/database/object/snapshot-changes.mjs} +0 -0
  384. /package/{esm2015/compat/database/observable/fromRef.js → esm2022/compat/database/observable/fromRef.mjs} +0 -0
  385. /package/{esm2015/compat/database/public_api.js → esm2022/compat/database/public_api.mjs} +0 -0
  386. /package/{esm2015/compat/database/utils.js → esm2022/compat/database/utils.mjs} +0 -0
  387. /package/{esm2015/compat/firebase.app.js → esm2022/compat/firebase.app.mjs} +0 -0
  388. /package/{esm2015/compat/firestore/angular-fire-compat-firestore.js → esm2022/compat/firestore/angular-fire-compat-firestore.mjs} +0 -0
  389. /package/{esm2015/compat/firestore/public_api.js → esm2022/compat/firestore/public_api.mjs} +0 -0
  390. /package/{esm2015/compat/functions/angular-fire-compat-functions.js → esm2022/compat/functions/angular-fire-compat-functions.mjs} +0 -0
  391. /package/{esm2015/compat/functions/base.js → esm2022/compat/functions/base.mjs} +0 -0
  392. /package/{esm2015/compat/messaging/angular-fire-compat-messaging.js → esm2022/compat/messaging/angular-fire-compat-messaging.mjs} +0 -0
  393. /package/{esm2015/compat/messaging/base.js → esm2022/compat/messaging/base.mjs} +0 -0
  394. /package/{esm2015/compat/messaging/public_api.js → esm2022/compat/messaging/public_api.mjs} +0 -0
  395. /package/{esm2015/compat/performance/angular-fire-compat-performance.js → esm2022/compat/performance/angular-fire-compat-performance.mjs} +0 -0
  396. /package/{esm2015/compat/performance/base.js → esm2022/compat/performance/base.mjs} +0 -0
  397. /package/{esm2015/compat/performance/public_api.js → esm2022/compat/performance/public_api.mjs} +0 -0
  398. /package/{esm2015/compat/public_api.js → esm2022/compat/public_api.mjs} +0 -0
  399. /package/{esm2015/compat/remote-config/angular-fire-compat-remote-config.js → esm2022/compat/remote-config/angular-fire-compat-remote-config.mjs} +0 -0
  400. /package/{esm2015/compat/remote-config/base.js → esm2022/compat/remote-config/base.mjs} +0 -0
  401. /package/{esm2015/compat/remote-config/interfaces.js → esm2022/compat/remote-config/interfaces.mjs} +0 -0
  402. /package/{esm2015/compat/remote-config/public_api.js → esm2022/compat/remote-config/public_api.mjs} +0 -0
  403. /package/{esm2015/compat/storage/angular-fire-compat-storage.js → esm2022/compat/storage/angular-fire-compat-storage.mjs} +0 -0
  404. /package/{esm2015/compat/storage/interfaces.js → esm2022/compat/storage/interfaces.mjs} +0 -0
  405. /package/{esm2015/compat/storage/observable/fromTask.js → esm2022/compat/storage/observable/fromTask.mjs} +0 -0
  406. /package/{esm2015/compat/storage/public_api.js → esm2022/compat/storage/public_api.mjs} +0 -0
  407. /package/{esm2015/compat/storage/ref.js → esm2022/compat/storage/ref.mjs} +0 -0
  408. /package/{esm2015/compat/storage/task.js → esm2022/compat/storage/task.mjs} +0 -0
  409. /package/{esm2015/database/angular-fire-database.js → esm2022/database/angular-fire-database.mjs} +0 -0
  410. /package/{esm2015/database/database.js → esm2022/database/database.mjs} +0 -0
  411. /package/{esm2015/database/firebase.js → esm2022/database/firebase.mjs} +0 -0
  412. /package/{esm2015/database/public_api.js → esm2022/database/public_api.mjs} +0 -0
  413. /package/{esm2015/database/rxfire.js → esm2022/database/rxfire.mjs} +0 -0
  414. /package/{esm2015/firestore/angular-fire-firestore.js → esm2022/firestore/angular-fire-firestore.mjs} +0 -0
  415. /package/{esm2015/firestore/firebase.js → esm2022/firestore/firebase.mjs} +0 -0
  416. /package/{esm2015/firestore/firestore.js → esm2022/firestore/firestore.mjs} +0 -0
  417. /package/{esm2015/firestore/lite/angular-fire-firestore-lite.js → esm2022/firestore/lite/angular-fire-firestore-lite.mjs} +0 -0
  418. /package/{esm2015/firestore/lite/firebase.js → esm2022/firestore/lite/firebase.mjs} +0 -0
  419. /package/{esm2015/firestore/lite/lite.js → esm2022/firestore/lite/lite.mjs} +0 -0
  420. /package/{esm2015/firestore/lite/public_api.js → esm2022/firestore/lite/public_api.mjs} +0 -0
  421. /package/{esm2015/firestore/lite/rxfire.js → esm2022/firestore/lite/rxfire.mjs} +0 -0
  422. /package/{esm2015/firestore/public_api.js → esm2022/firestore/public_api.mjs} +0 -0
  423. /package/{esm2015/functions/angular-fire-functions.js → esm2022/functions/angular-fire-functions.mjs} +0 -0
  424. /package/{esm2015/functions/firebase.js → esm2022/functions/firebase.mjs} +0 -0
  425. /package/{esm2015/functions/functions.js → esm2022/functions/functions.mjs} +0 -0
  426. /package/{esm2015/functions/public_api.js → esm2022/functions/public_api.mjs} +0 -0
  427. /package/{esm2015/functions/rxfire.js → esm2022/functions/rxfire.mjs} +0 -0
  428. /package/{esm2015/messaging/angular-fire-messaging.js → esm2022/messaging/angular-fire-messaging.mjs} +0 -0
  429. /package/{esm2015/messaging/firebase.js → esm2022/messaging/firebase.mjs} +0 -0
  430. /package/{esm2015/messaging/messaging.js → esm2022/messaging/messaging.mjs} +0 -0
  431. /package/{esm2015/messaging/public_api.js → esm2022/messaging/public_api.mjs} +0 -0
  432. /package/{esm2015/performance/angular-fire-performance.js → esm2022/performance/angular-fire-performance.mjs} +0 -0
  433. /package/{esm2015/performance/firebase.js → esm2022/performance/firebase.mjs} +0 -0
  434. /package/{esm2015/performance/performance.js → esm2022/performance/performance.mjs} +0 -0
  435. /package/{esm2015/performance/public_api.js → esm2022/performance/public_api.mjs} +0 -0
  436. /package/{esm2015/performance/rxfire.js → esm2022/performance/rxfire.mjs} +0 -0
  437. /package/{esm2015/public_api.js → esm2022/public_api.mjs} +0 -0
  438. /package/{esm2015/remote-config/angular-fire-remote-config.js → esm2022/remote-config/angular-fire-remote-config.mjs} +0 -0
  439. /package/{esm2015/remote-config/firebase.js → esm2022/remote-config/firebase.mjs} +0 -0
  440. /package/{esm2015/remote-config/public_api.js → esm2022/remote-config/public_api.mjs} +0 -0
  441. /package/{esm2015/remote-config/remote-config.js → esm2022/remote-config/remote-config.mjs} +0 -0
  442. /package/{esm2015/remote-config/rxfire.js → esm2022/remote-config/rxfire.mjs} +0 -0
  443. /package/{esm2015/storage/angular-fire-storage.js → esm2022/storage/angular-fire-storage.mjs} +0 -0
  444. /package/{esm2015/storage/firebase.js → esm2022/storage/firebase.mjs} +0 -0
  445. /package/{esm2015/storage/public_api.js → esm2022/storage/public_api.mjs} +0 -0
  446. /package/{esm2015/storage/rxfire.js → esm2022/storage/rxfire.mjs} +0 -0
  447. /package/{esm2015/storage/storage.js → esm2022/storage/storage.mjs} +0 -0
  448. /package/firestore/{angular-fire-firestore.d.ts → index.d.ts} +0 -0
  449. /package/firestore/lite/{angular-fire-firestore-lite.d.ts → index.d.ts} +0 -0
  450. /package/functions/{angular-fire-functions.d.ts → index.d.ts} +0 -0
  451. /package/{angular-fire.d.ts → index.d.ts} +0 -0
  452. /package/messaging/{angular-fire-messaging.d.ts → index.d.ts} +0 -0
  453. /package/performance/{angular-fire-performance.d.ts → index.d.ts} +0 -0
  454. /package/remote-config/{angular-fire-remote-config.d.ts → index.d.ts} +0 -0
  455. /package/storage/{angular-fire-storage.d.ts → index.d.ts} +0 -0
@@ -0,0 +1,4 @@
1
+ export declare const isAnalyticsSupportedFactory: {
2
+ async: () => any;
3
+ sync: () => any;
4
+ };
@@ -3,8 +3,8 @@ import { Observable, UnaryFunction } from 'rxjs';
3
3
  import { Auth } from '@angular/fire/auth';
4
4
  import { User } from 'firebase/auth';
5
5
  import * as i0 from "@angular/core";
6
- export declare type AuthPipeGenerator = (next: ActivatedRouteSnapshot, state: RouterStateSnapshot) => AuthPipe;
7
- export declare type AuthPipe = UnaryFunction<Observable<User | null>, Observable<boolean | string | any[]>>;
6
+ export type AuthPipeGenerator = (next: ActivatedRouteSnapshot, state: RouterStateSnapshot) => AuthPipe;
7
+ export type AuthPipe = UnaryFunction<Observable<User | null>, Observable<boolean | string | any[]>>;
8
8
  export declare const loggedIn: AuthPipe;
9
9
  export declare class AuthGuard implements CanActivate {
10
10
  private router;
@@ -21,9 +21,9 @@ export declare const canActivate: (pipe: AuthPipeGenerator) => {
21
21
  };
22
22
  };
23
23
  export declare const isNotAnonymous: AuthPipe;
24
- export declare const idTokenResult: import("rxjs").OperatorFunction<User, any>;
24
+ export declare const idTokenResult: import("rxjs").OperatorFunction<User, import("@firebase/auth").IdTokenResult>;
25
25
  export declare const emailVerified: AuthPipe;
26
- export declare const customClaims: UnaryFunction<Observable<User>, Observable<any>>;
26
+ export declare const customClaims: UnaryFunction<Observable<User>, Observable<any[] | import("@firebase/auth").ParsedToken>>;
27
27
  export declare const hasCustomClaim: (claim: string) => AuthPipe;
28
28
  export declare const redirectUnauthorizedTo: (redirect: string | any[]) => AuthPipe;
29
29
  export declare const redirectLoggedInTo: (redirect: string | any[]) => AuthPipe;
@@ -9,7 +9,7 @@ import { AppCheckInstances } from '@angular/fire/app-check';
9
9
  import * as i0 from "@angular/core";
10
10
  export interface AngularFireAuth extends ɵPromiseProxy<firebase.auth.Auth> {
11
11
  }
12
- declare type UseEmulatorArguments = Parameters<firebase.auth.Auth['useEmulator']>;
12
+ type UseEmulatorArguments = Parameters<firebase.auth.Auth['useEmulator']>;
13
13
  export declare const USE_EMULATOR: InjectionToken<[url: string]>;
14
14
  export declare const SETTINGS: InjectionToken<firebase.auth.AuthSettings>;
15
15
  export declare const TENANT_ID: InjectionToken<string>;
@@ -3,8 +3,8 @@ import { Observable, UnaryFunction } from 'rxjs';
3
3
  import firebase from 'firebase/compat/app';
4
4
  import { AngularFireAuth } from '@angular/fire/compat/auth';
5
5
  import * as i0 from "@angular/core";
6
- export declare type AuthPipeGenerator = (next: ActivatedRouteSnapshot, state: RouterStateSnapshot) => AuthPipe;
7
- export declare type AuthPipe = UnaryFunction<Observable<firebase.User | null>, Observable<boolean | string | any[]>>;
6
+ export type AuthPipeGenerator = (next: ActivatedRouteSnapshot, state: RouterStateSnapshot) => AuthPipe;
7
+ export type AuthPipe = UnaryFunction<Observable<firebase.User | null>, Observable<boolean | string | any[]>>;
8
8
  export declare const loggedIn: AuthPipe;
9
9
  export declare class AngularFireAuthGuard implements CanActivate {
10
10
  private router;
@@ -21,9 +21,11 @@ export declare const canActivate: (pipe: AuthPipeGenerator) => {
21
21
  };
22
22
  };
23
23
  export declare const isNotAnonymous: AuthPipe;
24
- export declare const idTokenResult: import("rxjs").OperatorFunction<firebase.User, any>;
24
+ export declare const idTokenResult: import("rxjs").OperatorFunction<firebase.User, firebase.auth.IdTokenResult>;
25
25
  export declare const emailVerified: AuthPipe;
26
- export declare const customClaims: UnaryFunction<Observable<firebase.User>, Observable<any>>;
26
+ export declare const customClaims: UnaryFunction<Observable<firebase.User>, Observable<any[] | {
27
+ [key: string]: any;
28
+ }>>;
27
29
  export declare const hasCustomClaim: (claim: string) => AuthPipe;
28
30
  export declare const redirectUnauthorizedTo: (redirect: string | any[]) => AuthPipe;
29
31
  export declare const redirectLoggedInTo: (redirect: string | any[]) => AuthPipe;
@@ -1,6 +1,6 @@
1
1
  import { Observable } from 'rxjs';
2
2
  import firebase from 'firebase/compat/app';
3
- export declare type FirebaseOperation = string | firebase.database.Reference | firebase.database.DataSnapshot;
3
+ export type FirebaseOperation = string | firebase.database.Reference | firebase.database.DataSnapshot;
4
4
  export interface AngularFireList<T> {
5
5
  query: DatabaseQuery;
6
6
  valueChanges(events?: ChildEvent[], options?: {}): Observable<T[]>;
@@ -31,9 +31,9 @@ export interface FirebaseOperationCases {
31
31
  snapshotCase?: () => Promise<void>;
32
32
  unwrappedSnapshotCase?: () => Promise<void>;
33
33
  }
34
- export declare type QueryFn = (ref: DatabaseReference) => DatabaseQuery;
35
- export declare type ChildEvent = 'child_added' | 'child_removed' | 'child_changed' | 'child_moved';
36
- export declare type ListenEvent = 'value' | ChildEvent;
34
+ export type QueryFn = (ref: DatabaseReference) => DatabaseQuery;
35
+ export type ChildEvent = 'child_added' | 'child_removed' | 'child_changed' | 'child_moved';
36
+ export type ListenEvent = 'value' | ChildEvent;
37
37
  export interface Action<T> {
38
38
  type: ListenEvent;
39
39
  payload: T;
@@ -42,8 +42,8 @@ export interface AngularFireAction<T> extends Action<T> {
42
42
  prevKey: string | null | undefined;
43
43
  key: string | null;
44
44
  }
45
- export declare type SnapshotAction<T> = AngularFireAction<DatabaseSnapshot<T>>;
46
- export declare type Primitive = number | string | boolean;
45
+ export type SnapshotAction<T> = AngularFireAction<DatabaseSnapshot<T>>;
46
+ export type Primitive = number | string | boolean;
47
47
  export interface DatabaseSnapshotExists<T> extends firebase.database.DataSnapshot {
48
48
  exists(): true;
49
49
  val(): T;
@@ -54,9 +54,9 @@ export interface DatabaseSnapshotDoesNotExist<T> extends firebase.database.DataS
54
54
  val(): null;
55
55
  forEach(action: (a: DatabaseSnapshot<T>) => boolean): boolean;
56
56
  }
57
- export declare type DatabaseSnapshot<T> = DatabaseSnapshotExists<T> | DatabaseSnapshotDoesNotExist<T>;
58
- export declare type DatabaseReference = firebase.database.Reference;
59
- export declare type DatabaseQuery = firebase.database.Query;
60
- export declare type DataSnapshot = firebase.database.DataSnapshot;
61
- export declare type QueryReference = DatabaseReference | DatabaseQuery;
62
- export declare type PathReference = QueryReference | string;
57
+ export type DatabaseSnapshot<T> = DatabaseSnapshotExists<T> | DatabaseSnapshotDoesNotExist<T>;
58
+ export type DatabaseReference = firebase.database.Reference;
59
+ export type DatabaseQuery = firebase.database.Query;
60
+ export type DataSnapshot = firebase.database.DataSnapshot;
61
+ export type QueryReference = DatabaseReference | DatabaseQuery;
62
+ export type PathReference = QueryReference | string;
@@ -1,16 +1,16 @@
1
1
  import { Subscriber } from 'rxjs';
2
2
  import firebase from 'firebase/compat/app';
3
- export declare type Settings = firebase.firestore.Settings;
4
- export declare type CollectionReference<T = DocumentData> = firebase.firestore.CollectionReference<T>;
5
- export declare type DocumentReference<T = DocumentData> = firebase.firestore.DocumentReference<T>;
6
- export declare type PersistenceSettings = firebase.firestore.PersistenceSettings;
7
- export declare type DocumentChangeType = firebase.firestore.DocumentChangeType;
8
- export declare type SnapshotOptions = firebase.firestore.SnapshotOptions;
9
- export declare type FieldPath = firebase.firestore.FieldPath;
10
- export declare type Query<T = DocumentData> = firebase.firestore.Query<T>;
11
- export declare type SetOptions = firebase.firestore.SetOptions;
12
- export declare type DocumentData = firebase.firestore.DocumentData;
13
- export interface DocumentSnapshotExists<T> extends firebase.firestore.DocumentSnapshot {
3
+ export type Settings = firebase.firestore.Settings;
4
+ export type CollectionReference<T = DocumentData> = firebase.firestore.CollectionReference<T>;
5
+ export type DocumentReference<T = DocumentData> = firebase.firestore.DocumentReference<T>;
6
+ export type PersistenceSettings = firebase.firestore.PersistenceSettings;
7
+ export type DocumentChangeType = firebase.firestore.DocumentChangeType;
8
+ export type SnapshotOptions = firebase.firestore.SnapshotOptions;
9
+ export type FieldPath = firebase.firestore.FieldPath;
10
+ export type Query<T = DocumentData> = firebase.firestore.Query<T>;
11
+ export type SetOptions = firebase.firestore.SetOptions;
12
+ export type DocumentData = firebase.firestore.DocumentData;
13
+ export interface DocumentSnapshotExists<T> extends firebase.firestore.DocumentSnapshot<T> {
14
14
  readonly exists: true;
15
15
  data(options?: SnapshotOptions): T;
16
16
  }
@@ -19,14 +19,14 @@ export interface DocumentSnapshotDoesNotExist extends firebase.firestore.Documen
19
19
  data(options?: SnapshotOptions): undefined;
20
20
  get(fieldPath: string | FieldPath, options?: SnapshotOptions): undefined;
21
21
  }
22
- export declare type DocumentSnapshot<T> = DocumentSnapshotExists<T> | DocumentSnapshotDoesNotExist;
23
- export interface QueryDocumentSnapshot<T> extends firebase.firestore.QueryDocumentSnapshot {
22
+ export type DocumentSnapshot<T> = DocumentSnapshotExists<T> | DocumentSnapshotDoesNotExist;
23
+ export interface QueryDocumentSnapshot<T> extends firebase.firestore.QueryDocumentSnapshot<T> {
24
24
  data(options?: SnapshotOptions): T;
25
25
  }
26
- export interface QuerySnapshot<T> extends firebase.firestore.QuerySnapshot {
26
+ export interface QuerySnapshot<T> extends firebase.firestore.QuerySnapshot<T> {
27
27
  readonly docs: QueryDocumentSnapshot<T>[];
28
28
  }
29
- export interface DocumentChange<T> extends firebase.firestore.DocumentChange {
29
+ export interface DocumentChange<T> extends firebase.firestore.DocumentChange<T> {
30
30
  readonly doc: QueryDocumentSnapshot<T>;
31
31
  }
32
32
  export interface DocumentChangeAction<T> {
@@ -40,8 +40,8 @@ export interface Action<T> {
40
40
  export interface Reference<T> {
41
41
  onSnapshot: (options: firebase.firestore.SnapshotListenOptions, sub: Subscriber<any>) => any;
42
42
  }
43
- export declare type QueryFn<T = DocumentData> = (ref: CollectionReference<T>) => Query<T>;
44
- export declare type QueryGroupFn<T = DocumentData> = (query: Query<T>) => Query<T>;
43
+ export type QueryFn<T = DocumentData> = (ref: CollectionReference<T>) => Query<T>;
44
+ export type QueryGroupFn<T = DocumentData> = (query: Query<T>) => Query<T>;
45
45
  /**
46
46
  * A structure that provides an association between a reference
47
47
  * and a query on that reference. Note: Performing operations
package/compat/proxy.d.ts CHANGED
@@ -1,21 +1,21 @@
1
1
  import { NgZone } from '@angular/core';
2
2
  import { Observable } from 'rxjs';
3
- declare type MyFunction = (...args: any[]) => any;
4
- declare type FunctionPropertyNames<T> = {
3
+ type MyFunction = (...args: any[]) => any;
4
+ type FunctionPropertyNames<T> = {
5
5
  [K in keyof T]: T[K] extends MyFunction ? K : never;
6
6
  }[keyof T];
7
- declare type ReturnTypeOrNever<T> = T extends MyFunction ? ReturnType<T> : never;
8
- declare type ParametersOrNever<T> = T extends MyFunction ? Parameters<T> : never;
9
- declare type PromiseReturningFunctionPropertyNames<T> = {
7
+ type ReturnTypeOrNever<T> = T extends MyFunction ? ReturnType<T> : never;
8
+ type ParametersOrNever<T> = T extends MyFunction ? Parameters<T> : never;
9
+ type PromiseReturningFunctionPropertyNames<T> = {
10
10
  [K in FunctionPropertyNames<T>]: ReturnTypeOrNever<T[K]> extends Promise<any> ? K : never;
11
11
  }[FunctionPropertyNames<T>];
12
- declare type NonPromiseReturningFunctionPropertyNames<T> = {
12
+ type NonPromiseReturningFunctionPropertyNames<T> = {
13
13
  [K in FunctionPropertyNames<T>]: ReturnTypeOrNever<T[K]> extends Promise<any> ? never : K;
14
14
  }[FunctionPropertyNames<T>];
15
- declare type NonFunctionPropertyNames<T> = {
15
+ type NonFunctionPropertyNames<T> = {
16
16
  [K in keyof T]: T[K] extends MyFunction ? never : K;
17
17
  }[keyof T];
18
- export declare type ɵPromiseProxy<T> = {
18
+ export type ɵPromiseProxy<T> = {
19
19
  [K in NonFunctionPropertyNames<T>]: Promise<T[K]>;
20
20
  } & {
21
21
  [K in NonPromiseReturningFunctionPropertyNames<T>]: (...args: ParametersOrNever<T[K]>) => Promise<ReturnTypeOrNever<T[K]>>;
@@ -1,2 +1,2 @@
1
1
  import firebase from 'firebase/compat/app';
2
- export declare type Settings = firebase.remoteConfig.Settings;
2
+ export type Settings = firebase.remoteConfig.Settings;
@@ -1,9 +1,9 @@
1
1
  import firebase from 'firebase/compat/app';
2
- export declare type UploadTask = firebase.storage.UploadTask;
3
- export declare type UploadTaskSnapshot = firebase.storage.UploadTaskSnapshot;
4
- export declare type UploadMetadata = firebase.storage.UploadMetadata;
5
- export declare type SettableMetadata = firebase.storage.SettableMetadata;
6
- export declare type Reference = firebase.storage.Reference;
7
- export declare type StringFormat = firebase.storage.StringFormat;
8
- export declare type ListResult = firebase.storage.ListResult;
9
- export declare type ListOptions = firebase.storage.ListOptions;
2
+ export type UploadTask = firebase.storage.UploadTask;
3
+ export type UploadTaskSnapshot = firebase.storage.UploadTaskSnapshot;
4
+ export type UploadMetadata = firebase.storage.UploadMetadata;
5
+ export type SettableMetadata = firebase.storage.SettableMetadata;
6
+ export type Reference = firebase.storage.Reference;
7
+ export type StringFormat = firebase.storage.StringFormat;
8
+ export type ListResult = firebase.storage.ListResult;
9
+ export type ListOptions = firebase.storage.ListOptions;
@@ -13,7 +13,7 @@ export declare class GetDownloadURLPipe implements PipeTransform, OnDestroy {
13
13
  transform(path: string): any;
14
14
  ngOnDestroy(): void;
15
15
  static ɵfac: i0.ɵɵFactoryDeclaration<GetDownloadURLPipe, [null, null, { optional: true; }]>;
16
- static ɵpipe: i0.ɵɵPipeDeclaration<GetDownloadURLPipe, "getDownloadURL">;
16
+ static ɵpipe: i0.ɵɵPipeDeclaration<GetDownloadURLPipe, "getDownloadURL", false>;
17
17
  }
18
18
  export declare class GetDownloadURLPipeModule {
19
19
  static ɵfac: i0.ɵɵFactoryDeclaration<GetDownloadURLPipeModule, never>;
package/core.d.ts CHANGED
@@ -1,17 +1,6 @@
1
1
  import { Version } from '@angular/core';
2
2
  import { FirebaseApp } from 'firebase/app';
3
3
  export declare const VERSION: Version;
4
- export declare const ɵisMessagingSupportedFactory: {
5
- async: () => any;
6
- sync: () => any;
7
- };
8
- export declare const ɵisRemoteConfigSupportedFactory: {
9
- async: () => any;
10
- sync: () => any;
11
- };
12
- export declare const ɵisAnalyticsSupportedFactory: {
13
- async: () => any;
14
- sync: () => any;
15
- };
4
+ export declare const ɵisSupportedError: (module: string) => string;
16
5
  export declare function ɵgetDefaultInstanceOf<T = unknown>(identifier: string, provided: T[] | undefined, defaultApp: FirebaseApp): T | undefined;
17
6
  export declare const ɵgetAllInstancesOf: <T = unknown>(identifier: string, app?: FirebaseApp) => T[];
@@ -0,0 +1,94 @@
1
+ import { NgModule, Optional, NgZone, InjectionToken, APP_INITIALIZER, Injector } from '@angular/core';
2
+ import { ɵgetDefaultInstanceOf, ɵAngularFireSchedulers, VERSION } from '@angular/fire';
3
+ import { Analytics, ANALYTICS_PROVIDER_NAME, AnalyticsInstances } from './analytics';
4
+ import { FirebaseApps, FirebaseApp } from '@angular/fire/app';
5
+ import { registerVersion } from 'firebase/app';
6
+ import { ScreenTrackingService } from './screen-tracking.service';
7
+ import { UserTrackingService } from './user-tracking.service';
8
+ import { isAnalyticsSupportedFactory } from './is-analytics-supported-factory';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "./screen-tracking.service";
11
+ import * as i2 from "./user-tracking.service";
12
+ export const PROVIDED_ANALYTICS_INSTANCES = new InjectionToken('angularfire2.analytics-instances');
13
+ export function defaultAnalyticsInstanceFactory(provided, defaultApp) {
14
+ if (!isAnalyticsSupportedFactory.sync()) {
15
+ return null;
16
+ }
17
+ const defaultAnalytics = ɵgetDefaultInstanceOf(ANALYTICS_PROVIDER_NAME, provided, defaultApp);
18
+ return defaultAnalytics && new Analytics(defaultAnalytics);
19
+ }
20
+ export function analyticsInstanceFactory(fn) {
21
+ return (zone, injector) => {
22
+ if (!isAnalyticsSupportedFactory.sync()) {
23
+ return null;
24
+ }
25
+ const analytics = zone.runOutsideAngular(() => fn(injector));
26
+ return new Analytics(analytics);
27
+ };
28
+ }
29
+ const ANALYTICS_INSTANCES_PROVIDER = {
30
+ provide: AnalyticsInstances,
31
+ deps: [
32
+ [new Optional(), PROVIDED_ANALYTICS_INSTANCES],
33
+ ]
34
+ };
35
+ const DEFAULT_ANALYTICS_INSTANCE_PROVIDER = {
36
+ provide: Analytics,
37
+ useFactory: defaultAnalyticsInstanceFactory,
38
+ deps: [
39
+ [new Optional(), PROVIDED_ANALYTICS_INSTANCES],
40
+ FirebaseApp,
41
+ ]
42
+ };
43
+ export class AnalyticsModule {
44
+ constructor(_screenTrackingService, _userTrackingService) {
45
+ registerVersion('angularfire', VERSION.full, 'analytics');
46
+ }
47
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: AnalyticsModule, deps: [{ token: i1.ScreenTrackingService, optional: true }, { token: i2.UserTrackingService, optional: true }], target: i0.ɵɵFactoryTarget.NgModule });
48
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.3", ngImport: i0, type: AnalyticsModule });
49
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: AnalyticsModule, providers: [
50
+ DEFAULT_ANALYTICS_INSTANCE_PROVIDER,
51
+ ANALYTICS_INSTANCES_PROVIDER,
52
+ {
53
+ provide: APP_INITIALIZER,
54
+ useValue: isAnalyticsSupportedFactory.async,
55
+ multi: true,
56
+ }
57
+ ] });
58
+ }
59
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: AnalyticsModule, decorators: [{
60
+ type: NgModule,
61
+ args: [{
62
+ providers: [
63
+ DEFAULT_ANALYTICS_INSTANCE_PROVIDER,
64
+ ANALYTICS_INSTANCES_PROVIDER,
65
+ {
66
+ provide: APP_INITIALIZER,
67
+ useValue: isAnalyticsSupportedFactory.async,
68
+ multi: true,
69
+ }
70
+ ]
71
+ }]
72
+ }], ctorParameters: function () { return [{ type: i1.ScreenTrackingService, decorators: [{
73
+ type: Optional
74
+ }] }, { type: i2.UserTrackingService, decorators: [{
75
+ type: Optional
76
+ }] }]; } });
77
+ export function provideAnalytics(fn, ...deps) {
78
+ return {
79
+ ngModule: AnalyticsModule,
80
+ providers: [{
81
+ provide: PROVIDED_ANALYTICS_INSTANCES,
82
+ useFactory: analyticsInstanceFactory(fn),
83
+ multi: true,
84
+ deps: [
85
+ NgZone,
86
+ Injector,
87
+ ɵAngularFireSchedulers,
88
+ FirebaseApps,
89
+ ...deps,
90
+ ]
91
+ }]
92
+ };
93
+ }
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl0aWNzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hbmFseXRpY3MvYW5hbHl0aWNzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUF1QixlQUFlLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNILE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxzQkFBc0IsRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkYsT0FBTyxFQUFFLFNBQVMsRUFBRSx1QkFBdUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNyRixPQUFPLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzlELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDL0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7QUFFL0UsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsSUFBSSxjQUFjLENBQWMsa0NBQWtDLENBQUMsQ0FBQztBQUVoSCxNQUFNLFVBQVUsK0JBQStCLENBQUMsUUFBdUMsRUFBRSxVQUF1QjtJQUM5RyxJQUFJLENBQUMsMkJBQTJCLENBQUMsSUFBSSxFQUFFLEVBQUU7UUFBRSxPQUFPLElBQUksQ0FBQztLQUFFO0lBQ3pELE1BQU0sZ0JBQWdCLEdBQUcscUJBQXFCLENBQW9CLHVCQUF1QixFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNqSCxPQUFPLGdCQUFnQixJQUFJLElBQUksU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDN0QsQ0FBQztBQUVELE1BQU0sVUFBVSx3QkFBd0IsQ0FBQyxFQUE2QztJQUNwRixPQUFPLENBQUMsSUFBWSxFQUFFLFFBQWtCLEVBQUUsRUFBRTtRQUMxQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFBRSxPQUFPLElBQUksQ0FBQztTQUFFO1FBQ3pELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUM3RCxPQUFPLElBQUksU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2xDLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLDRCQUE0QixHQUFHO0lBQ25DLE9BQU8sRUFBRSxrQkFBa0I7SUFDM0IsSUFBSSxFQUFFO1FBQ0osQ0FBQyxJQUFJLFFBQVEsRUFBRSxFQUFFLDRCQUE0QixDQUFFO0tBQ2hEO0NBQ0YsQ0FBQztBQUVGLE1BQU0sbUNBQW1DLEdBQUc7SUFDMUMsT0FBTyxFQUFFLFNBQVM7SUFDbEIsVUFBVSxFQUFFLCtCQUErQjtJQUMzQyxJQUFJLEVBQUU7UUFDSixDQUFDLElBQUksUUFBUSxFQUFFLEVBQUUsNEJBQTRCLENBQUU7UUFDL0MsV0FBVztLQUNaO0NBQ0YsQ0FBQztBQWFGLE1BQU0sT0FBTyxlQUFlO0lBQzFCLFlBQ2Msc0JBQTZDLEVBQzdDLG9CQUF5QztRQUVyRCxlQUFlLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDNUQsQ0FBQzt1R0FOVSxlQUFlO3dHQUFmLGVBQWU7d0dBQWYsZUFBZSxhQVZmO1lBQ1QsbUNBQW1DO1lBQ25DLDRCQUE0QjtZQUM1QjtnQkFDRSxPQUFPLEVBQUUsZUFBZTtnQkFDeEIsUUFBUSxFQUFFLDJCQUEyQixDQUFDLEtBQUs7Z0JBQzNDLEtBQUssRUFBRSxJQUFJO2FBQ1o7U0FDRjs7MkZBRVUsZUFBZTtrQkFYM0IsUUFBUTttQkFBQztvQkFDUixTQUFTLEVBQUU7d0JBQ1QsbUNBQW1DO3dCQUNuQyw0QkFBNEI7d0JBQzVCOzRCQUNFLE9BQU8sRUFBRSxlQUFlOzRCQUN4QixRQUFRLEVBQUUsMkJBQTJCLENBQUMsS0FBSzs0QkFDM0MsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7aUJBQ0Y7OzBCQUdJLFFBQVE7OzBCQUNSLFFBQVE7O0FBTWIsTUFBTSxVQUFVLGdCQUFnQixDQUFDLEVBQTZDLEVBQUUsR0FBRyxJQUFXO0lBQzVGLE9BQU87UUFDTCxRQUFRLEVBQUUsZUFBZTtRQUN6QixTQUFTLEVBQUUsQ0FBQztnQkFDVixPQUFPLEVBQUUsNEJBQTRCO2dCQUNyQyxVQUFVLEVBQUUsd0JBQXdCLENBQUMsRUFBRSxDQUFDO2dCQUN4QyxLQUFLLEVBQUUsSUFBSTtnQkFDWCxJQUFJLEVBQUU7b0JBQ0osTUFBTTtvQkFDTixRQUFRO29CQUNSLHNCQUFzQjtvQkFDdEIsWUFBWTtvQkFDWixHQUFHLElBQUk7aUJBQ1I7YUFDRixDQUFDO0tBQ0gsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgT3B0aW9uYWwsIE5nWm9uZSwgSW5qZWN0aW9uVG9rZW4sIE1vZHVsZVdpdGhQcm92aWRlcnMsIEFQUF9JTklUSUFMSVpFUiwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFuYWx5dGljcyBhcyBGaXJlYmFzZUFuYWx5dGljcyB9IGZyb20gJ2ZpcmViYXNlL2FuYWx5dGljcyc7XG5pbXBvcnQgeyDJtWdldERlZmF1bHRJbnN0YW5jZU9mLCDJtUFuZ3VsYXJGaXJlU2NoZWR1bGVycywgVkVSU0lPTiB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUnO1xuaW1wb3J0IHsgQW5hbHl0aWNzLCBBTkFMWVRJQ1NfUFJPVklERVJfTkFNRSwgQW5hbHl0aWNzSW5zdGFuY2VzIH0gZnJvbSAnLi9hbmFseXRpY3MnO1xuaW1wb3J0IHsgRmlyZWJhc2VBcHBzLCBGaXJlYmFzZUFwcCB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUvYXBwJztcbmltcG9ydCB7IHJlZ2lzdGVyVmVyc2lvbiB9IGZyb20gJ2ZpcmViYXNlL2FwcCc7XG5pbXBvcnQgeyBTY3JlZW5UcmFja2luZ1NlcnZpY2UgfSBmcm9tICcuL3NjcmVlbi10cmFja2luZy5zZXJ2aWNlJztcbmltcG9ydCB7IFVzZXJUcmFja2luZ1NlcnZpY2UgfSBmcm9tICcuL3VzZXItdHJhY2tpbmcuc2VydmljZSc7XG5pbXBvcnQgeyBpc0FuYWx5dGljc1N1cHBvcnRlZEZhY3RvcnkgfSBmcm9tICcuL2lzLWFuYWx5dGljcy1zdXBwb3J0ZWQtZmFjdG9yeSc7XG5cbmV4cG9ydCBjb25zdCBQUk9WSURFRF9BTkFMWVRJQ1NfSU5TVEFOQ0VTID0gbmV3IEluamVjdGlvblRva2VuPEFuYWx5dGljc1tdPignYW5ndWxhcmZpcmUyLmFuYWx5dGljcy1pbnN0YW5jZXMnKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGRlZmF1bHRBbmFseXRpY3NJbnN0YW5jZUZhY3RvcnkocHJvdmlkZWQ6IEZpcmViYXNlQW5hbHl0aWNzW118dW5kZWZpbmVkLCBkZWZhdWx0QXBwOiBGaXJlYmFzZUFwcCkge1xuICBpZiAoIWlzQW5hbHl0aWNzU3VwcG9ydGVkRmFjdG9yeS5zeW5jKCkpIHsgcmV0dXJuIG51bGw7IH1cbiAgY29uc3QgZGVmYXVsdEFuYWx5dGljcyA9IMm1Z2V0RGVmYXVsdEluc3RhbmNlT2Y8RmlyZWJhc2VBbmFseXRpY3M+KEFOQUxZVElDU19QUk9WSURFUl9OQU1FLCBwcm92aWRlZCwgZGVmYXVsdEFwcCk7XG4gIHJldHVybiBkZWZhdWx0QW5hbHl0aWNzICYmIG5ldyBBbmFseXRpY3MoZGVmYXVsdEFuYWx5dGljcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhbmFseXRpY3NJbnN0YW5jZUZhY3RvcnkoZm46IChpbmplY3RvcjogSW5qZWN0b3IpID0+IEZpcmViYXNlQW5hbHl0aWNzKSB7XG4gIHJldHVybiAoem9uZTogTmdab25lLCBpbmplY3RvcjogSW5qZWN0b3IpID0+IHtcbiAgICBpZiAoIWlzQW5hbHl0aWNzU3VwcG9ydGVkRmFjdG9yeS5zeW5jKCkpIHsgcmV0dXJuIG51bGw7IH1cbiAgICBjb25zdCBhbmFseXRpY3MgPSB6b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IGZuKGluamVjdG9yKSk7XG4gICAgcmV0dXJuIG5ldyBBbmFseXRpY3MoYW5hbHl0aWNzKTtcbiAgfTtcbn1cblxuY29uc3QgQU5BTFlUSUNTX0lOU1RBTkNFU19QUk9WSURFUiA9IHtcbiAgcHJvdmlkZTogQW5hbHl0aWNzSW5zdGFuY2VzLFxuICBkZXBzOiBbXG4gICAgW25ldyBPcHRpb25hbCgpLCBQUk9WSURFRF9BTkFMWVRJQ1NfSU5TVEFOQ0VTIF0sXG4gIF1cbn07XG5cbmNvbnN0IERFRkFVTFRfQU5BTFlUSUNTX0lOU1RBTkNFX1BST1ZJREVSID0ge1xuICBwcm92aWRlOiBBbmFseXRpY3MsXG4gIHVzZUZhY3Rvcnk6IGRlZmF1bHRBbmFseXRpY3NJbnN0YW5jZUZhY3RvcnksXG4gIGRlcHM6IFtcbiAgICBbbmV3IE9wdGlvbmFsKCksIFBST1ZJREVEX0FOQUxZVElDU19JTlNUQU5DRVMgXSxcbiAgICBGaXJlYmFzZUFwcCxcbiAgXVxufTtcblxuQE5nTW9kdWxlKHtcbiAgcHJvdmlkZXJzOiBbXG4gICAgREVGQVVMVF9BTkFMWVRJQ1NfSU5TVEFOQ0VfUFJPVklERVIsXG4gICAgQU5BTFlUSUNTX0lOU1RBTkNFU19QUk9WSURFUixcbiAgICB7XG4gICAgICBwcm92aWRlOiBBUFBfSU5JVElBTElaRVIsXG4gICAgICB1c2VWYWx1ZTogaXNBbmFseXRpY3NTdXBwb3J0ZWRGYWN0b3J5LmFzeW5jLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEFuYWx5dGljc01vZHVsZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpIF9zY3JlZW5UcmFja2luZ1NlcnZpY2U6IFNjcmVlblRyYWNraW5nU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBfdXNlclRyYWNraW5nU2VydmljZTogVXNlclRyYWNraW5nU2VydmljZSxcbiAgKSB7XG4gICAgcmVnaXN0ZXJWZXJzaW9uKCdhbmd1bGFyZmlyZScsIFZFUlNJT04uZnVsbCwgJ2FuYWx5dGljcycpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlQW5hbHl0aWNzKGZuOiAoaW5qZWN0b3I6IEluamVjdG9yKSA9PiBGaXJlYmFzZUFuYWx5dGljcywgLi4uZGVwczogYW55W10pOiBNb2R1bGVXaXRoUHJvdmlkZXJzPEFuYWx5dGljc01vZHVsZT4ge1xuICByZXR1cm4ge1xuICAgIG5nTW9kdWxlOiBBbmFseXRpY3NNb2R1bGUsXG4gICAgcHJvdmlkZXJzOiBbe1xuICAgICAgcHJvdmlkZTogUFJPVklERURfQU5BTFlUSUNTX0lOU1RBTkNFUyxcbiAgICAgIHVzZUZhY3Rvcnk6IGFuYWx5dGljc0luc3RhbmNlRmFjdG9yeShmbiksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgIGRlcHM6IFtcbiAgICAgICAgTmdab25lLFxuICAgICAgICBJbmplY3RvcixcbiAgICAgICAgybVBbmd1bGFyRmlyZVNjaGVkdWxlcnMsXG4gICAgICAgIEZpcmViYXNlQXBwcyxcbiAgICAgICAgLi4uZGVwcyxcbiAgICAgIF1cbiAgICB9XVxuICB9O1xufVxuIl19
@@ -0,0 +1,16 @@
1
+ import { ɵisSupportedError } from '@angular/fire';
2
+ import { isSupported } from 'firebase/analytics';
3
+ const isAnalyticsSupportedValueSymbol = '__angularfire_symbol__analyticsIsSupportedValue';
4
+ const isAnalyticsSupportedPromiseSymbol = '__angularfire_symbol__analyticsIsSupported';
5
+ globalThis[isAnalyticsSupportedPromiseSymbol] ||= isSupported().then(it => globalThis[isAnalyticsSupportedValueSymbol] = it).catch(() => globalThis[isAnalyticsSupportedValueSymbol] = false);
6
+ export const isAnalyticsSupportedFactory = {
7
+ async: () => globalThis[isAnalyticsSupportedPromiseSymbol],
8
+ sync: () => {
9
+ const ret = globalThis[isAnalyticsSupportedValueSymbol];
10
+ if (ret === undefined) {
11
+ throw new Error(ɵisSupportedError('Analytics'));
12
+ }
13
+ return ret;
14
+ }
15
+ };
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtYW5hbHl0aWNzLXN1cHBvcnRlZC1mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FuYWx5dGljcy9pcy1hbmFseXRpY3Mtc3VwcG9ydGVkLWZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVqRCxNQUFNLCtCQUErQixHQUFHLGlEQUFpRCxDQUFDO0FBQzFGLE1BQU0saUNBQWlDLEdBQUcsNENBQTRDLENBQUM7QUFFdkYsVUFBVSxDQUFDLGlDQUFpQyxDQUFDLEtBQUssV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQ3hFLFVBQVUsQ0FBQywrQkFBK0IsQ0FBQyxHQUFHLEVBQUUsQ0FDakQsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQ1gsVUFBVSxDQUFDLCtCQUErQixDQUFDLEdBQUcsS0FBSyxDQUNwRCxDQUFDO0FBQ0YsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUc7SUFDekMsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxpQ0FBaUMsQ0FBQztJQUMxRCxJQUFJLEVBQUUsR0FBRyxFQUFFO1FBQ1QsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLCtCQUErQixDQUFDLENBQUM7UUFDeEQsSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1NBQUU7UUFDM0UsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IMm1aXNTdXBwb3J0ZWRFcnJvciB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUnO1xuaW1wb3J0IHsgaXNTdXBwb3J0ZWQgfSBmcm9tICdmaXJlYmFzZS9hbmFseXRpY3MnO1xuXG5jb25zdCBpc0FuYWx5dGljc1N1cHBvcnRlZFZhbHVlU3ltYm9sID0gJ19fYW5ndWxhcmZpcmVfc3ltYm9sX19hbmFseXRpY3NJc1N1cHBvcnRlZFZhbHVlJztcbmNvbnN0IGlzQW5hbHl0aWNzU3VwcG9ydGVkUHJvbWlzZVN5bWJvbCA9ICdfX2FuZ3VsYXJmaXJlX3N5bWJvbF9fYW5hbHl0aWNzSXNTdXBwb3J0ZWQnO1xuXG5nbG9iYWxUaGlzW2lzQW5hbHl0aWNzU3VwcG9ydGVkUHJvbWlzZVN5bWJvbF0gfHw9IGlzU3VwcG9ydGVkKCkudGhlbihpdCA9PlxuICBnbG9iYWxUaGlzW2lzQW5hbHl0aWNzU3VwcG9ydGVkVmFsdWVTeW1ib2xdID0gaXRcbikuY2F0Y2goKCkgPT5cbiAgZ2xvYmFsVGhpc1tpc0FuYWx5dGljc1N1cHBvcnRlZFZhbHVlU3ltYm9sXSA9IGZhbHNlXG4pO1xuZXhwb3J0IGNvbnN0IGlzQW5hbHl0aWNzU3VwcG9ydGVkRmFjdG9yeSA9IHtcbiAgYXN5bmM6ICgpID0+IGdsb2JhbFRoaXNbaXNBbmFseXRpY3NTdXBwb3J0ZWRQcm9taXNlU3ltYm9sXSxcbiAgc3luYzogKCkgPT4ge1xuICAgIGNvbnN0IHJldCA9IGdsb2JhbFRoaXNbaXNBbmFseXRpY3NTdXBwb3J0ZWRWYWx1ZVN5bWJvbF07XG4gICAgaWYgKHJldCA9PT0gdW5kZWZpbmVkKSB7IHRocm93IG5ldyBFcnJvcijJtWlzU3VwcG9ydGVkRXJyb3IoJ0FuYWx5dGljcycpKTsgfVxuICAgIHJldHVybiByZXQ7XG4gIH1cbn07XG4iXX0=
@@ -0,0 +1,3 @@
1
+ import { isAnalyticsSupportedFactory } from './is-analytics-supported-factory';
2
+ export const isSupported = isAnalyticsSupportedFactory.async;
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcnJpZGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FuYWx5dGljcy9vdmVycmlkZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFL0UsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLDJCQUEyQixDQUFDLEtBQUssQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzQW5hbHl0aWNzU3VwcG9ydGVkRmFjdG9yeSB9IGZyb20gJy4vaXMtYW5hbHl0aWNzLXN1cHBvcnRlZC1mYWN0b3J5JztcblxuZXhwb3J0IGNvbnN0IGlzU3VwcG9ydGVkID0gaXNBbmFseXRpY3NTdXBwb3J0ZWRGYWN0b3J5LmFzeW5jO1xuXG4iXX0=
@@ -0,0 +1,147 @@
1
+ import { ComponentFactoryResolver, Injectable, NgZone, Optional, Injector } from '@angular/core';
2
+ import { of } from 'rxjs';
3
+ import { distinctUntilChanged, filter, groupBy, map, mergeMap, pairwise, startWith, switchMap } from 'rxjs/operators';
4
+ import { ActivationEnd, Router, ɵEmptyOutletComponent } from '@angular/router';
5
+ import { Title } from '@angular/platform-browser';
6
+ import { VERSION } from '@angular/fire';
7
+ import { registerVersion } from 'firebase/app';
8
+ import { Analytics } from './analytics';
9
+ import { logEvent, isSupported } from './firebase';
10
+ import { UserTrackingService } from './user-tracking.service';
11
+ import * as i0 from "@angular/core";
12
+ import * as i1 from "@angular/router";
13
+ import * as i2 from "@angular/platform-browser";
14
+ import * as i3 from "./user-tracking.service";
15
+ const FIREBASE_EVENT_ORIGIN_KEY = 'firebase_event_origin';
16
+ const FIREBASE_PREVIOUS_SCREEN_CLASS_KEY = 'firebase_previous_class';
17
+ const FIREBASE_PREVIOUS_SCREEN_INSTANCE_ID_KEY = 'firebase_previous_id';
18
+ const FIREBASE_PREVIOUS_SCREEN_NAME_KEY = 'firebase_previous_screen';
19
+ const FIREBASE_SCREEN_CLASS_KEY = 'firebase_screen_class';
20
+ const FIREBASE_SCREEN_INSTANCE_ID_KEY = 'firebase_screen_id';
21
+ const FIREBASE_SCREEN_NAME_KEY = 'firebase_screen';
22
+ const OUTLET_KEY = 'outlet';
23
+ const PAGE_PATH_KEY = 'page_path';
24
+ const PAGE_TITLE_KEY = 'page_title';
25
+ const SCREEN_CLASS_KEY = 'screen_class';
26
+ const SCREEN_NAME_KEY = 'screen_name';
27
+ const SCREEN_VIEW_EVENT = 'screen_view';
28
+ const EVENT_ORIGIN_AUTO = 'auto';
29
+ const SCREEN_INSTANCE_DELIMITER = '#';
30
+ // this is an INT64 in iOS/Android but use INT32 cause javascript
31
+ let nextScreenInstanceID = Math.floor(Math.random() * (2 ** 32 - 1)) - 2 ** 31;
32
+ const knownScreenInstanceIDs = {};
33
+ const getScreenInstanceID = (params) => {
34
+ // unique the screen class against the outlet name
35
+ const screenInstanceKey = [
36
+ params[SCREEN_CLASS_KEY],
37
+ params[OUTLET_KEY]
38
+ ].join(SCREEN_INSTANCE_DELIMITER);
39
+ if (knownScreenInstanceIDs.hasOwnProperty(screenInstanceKey)) {
40
+ return knownScreenInstanceIDs[screenInstanceKey];
41
+ }
42
+ else {
43
+ const ret = nextScreenInstanceID++;
44
+ knownScreenInstanceIDs[screenInstanceKey] = ret;
45
+ return ret;
46
+ }
47
+ };
48
+ export const ɵscreenViewEvent = (router, title, componentFactoryResolver) => {
49
+ const activationEndEvents = router.events.pipe(filter(e => e instanceof ActivationEnd));
50
+ return activationEndEvents.pipe(switchMap(activationEnd => {
51
+ // router parseUrl is having trouble with outlets when they're empty
52
+ // e.g, /asdf/1(bob://sally:asdf), so put another slash in when empty
53
+ const urlTree = router.parseUrl(router.url.replace(/(?:\().+(?:\))/g, a => a.replace('://', ':///')));
54
+ const pagePath = urlTree.root.children[activationEnd.snapshot.outlet]?.toString() || '';
55
+ const actualSnapshot = router.routerState.root.children.map(it => it).find(it => it.outlet === activationEnd.snapshot.outlet);
56
+ if (!actualSnapshot) {
57
+ return of(null);
58
+ }
59
+ let actualDeep = actualSnapshot;
60
+ while (actualDeep.firstChild) {
61
+ actualDeep = actualDeep.firstChild;
62
+ }
63
+ const screenName = actualDeep.pathFromRoot.map(s => s.routeConfig?.path).filter(it => it).join('/') || '/';
64
+ const params = {
65
+ [SCREEN_NAME_KEY]: screenName,
66
+ [PAGE_PATH_KEY]: `/${pagePath}`,
67
+ [FIREBASE_EVENT_ORIGIN_KEY]: EVENT_ORIGIN_AUTO,
68
+ [FIREBASE_SCREEN_NAME_KEY]: screenName,
69
+ [OUTLET_KEY]: activationEnd.snapshot.outlet
70
+ };
71
+ if (title) {
72
+ params[PAGE_TITLE_KEY] = title.getTitle();
73
+ }
74
+ let component = actualSnapshot.component;
75
+ if (component) {
76
+ if (component === ɵEmptyOutletComponent) {
77
+ let deepSnapshot = activationEnd.snapshot;
78
+ // TODO when might there be mutple children, different outlets? explore
79
+ while (deepSnapshot.firstChild) {
80
+ deepSnapshot = deepSnapshot.firstChild;
81
+ }
82
+ component = deepSnapshot.component;
83
+ }
84
+ }
85
+ else {
86
+ component = activationEnd.snapshot.component;
87
+ }
88
+ if (typeof component === 'string') {
89
+ return of({ ...params, [SCREEN_CLASS_KEY]: component });
90
+ }
91
+ else if (component) {
92
+ const componentFactory = componentFactoryResolver.resolveComponentFactory(component);
93
+ return of({ ...params, [SCREEN_CLASS_KEY]: componentFactory.selector });
94
+ }
95
+ // lazy loads cause extra activations, ignore
96
+ return of(null);
97
+ }), filter(it => !!it), map(params => ({
98
+ [FIREBASE_SCREEN_CLASS_KEY]: params[SCREEN_CLASS_KEY],
99
+ [FIREBASE_SCREEN_INSTANCE_ID_KEY]: getScreenInstanceID(params),
100
+ ...params
101
+ })), groupBy(it => it[OUTLET_KEY]), mergeMap(it => it.pipe(distinctUntilChanged((a, b) => JSON.stringify(a) === JSON.stringify(b)), startWith(undefined), pairwise(), map(([prior, current]) => prior ? {
102
+ [FIREBASE_PREVIOUS_SCREEN_CLASS_KEY]: prior[SCREEN_CLASS_KEY],
103
+ [FIREBASE_PREVIOUS_SCREEN_NAME_KEY]: prior[SCREEN_NAME_KEY],
104
+ [FIREBASE_PREVIOUS_SCREEN_INSTANCE_ID_KEY]: prior[FIREBASE_SCREEN_INSTANCE_ID_KEY],
105
+ ...current
106
+ } : current))));
107
+ };
108
+ export class ScreenTrackingService {
109
+ disposable;
110
+ constructor(router, title, componentFactoryResolver, zone, userTrackingService, injector) {
111
+ registerVersion('angularfire', VERSION.full, 'screen-tracking');
112
+ // The APP_INITIALIZER that is making isSupported() sync for the sake of convenient DI
113
+ // may not be done when services are initialized. Guard the functionality by first ensuring
114
+ // that the (global) promise has resolved, then get Analytics from the injector.
115
+ isSupported().then(() => {
116
+ const analytics = injector.get(Analytics);
117
+ if (!router || !analytics) {
118
+ return;
119
+ }
120
+ zone.runOutsideAngular(() => {
121
+ this.disposable = ɵscreenViewEvent(router, title, componentFactoryResolver).pipe(switchMap(async (params) => {
122
+ if (userTrackingService) {
123
+ await userTrackingService.initialized;
124
+ }
125
+ return logEvent(analytics, SCREEN_VIEW_EVENT, params);
126
+ })).subscribe();
127
+ });
128
+ });
129
+ }
130
+ ngOnDestroy() {
131
+ if (this.disposable) {
132
+ this.disposable.unsubscribe();
133
+ }
134
+ }
135
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: ScreenTrackingService, deps: [{ token: i1.Router, optional: true }, { token: i2.Title, optional: true }, { token: i0.ComponentFactoryResolver }, { token: i0.NgZone }, { token: i3.UserTrackingService, optional: true }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
136
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: ScreenTrackingService });
137
+ }
138
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: ScreenTrackingService, decorators: [{
139
+ type: Injectable
140
+ }], ctorParameters: function () { return [{ type: i1.Router, decorators: [{
141
+ type: Optional
142
+ }] }, { type: i2.Title, decorators: [{
143
+ type: Optional
144
+ }] }, { type: i0.ComponentFactoryResolver }, { type: i0.NgZone }, { type: i3.UserTrackingService, decorators: [{
145
+ type: Optional
146
+ }] }, { type: i0.Injector }]; } });
147
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyZWVuLXRyYWNraW5nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYW5hbHl0aWNzL3NjcmVlbi10cmFja2luZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFhLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUcsT0FBTyxFQUFFLEVBQUUsRUFBNEIsTUFBTSxNQUFNLENBQUM7QUFDcEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RILE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLHFCQUFxQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0UsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUUvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7OztBQUU5RCxNQUFNLHlCQUF5QixHQUFHLHVCQUF1QixDQUFDO0FBQzFELE1BQU0sa0NBQWtDLEdBQUcseUJBQXlCLENBQUM7QUFDckUsTUFBTSx3Q0FBd0MsR0FBRyxzQkFBc0IsQ0FBQztBQUN4RSxNQUFNLGlDQUFpQyxHQUFHLDBCQUEwQixDQUFDO0FBQ3JFLE1BQU0seUJBQXlCLEdBQUcsdUJBQXVCLENBQUM7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O1lBQ2hCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNuQixJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQy9CO0lBQ0gsQ0FBQzt1R0FsQ1UscUJBQXFCOzJHQUFyQixxQkFBcUI7OzJGQUFyQixxQkFBcUI7a0JBRGpDLFVBQVU7OzBCQU1OLFFBQVE7OzBCQUNSLFFBQVE7OzBCQUdSLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIEluamVjdGFibGUsIE5nWm9uZSwgT25EZXN0cm95LCBPcHRpb25hbCwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IG9mLCBTdWJzY3JpcHRpb24sIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIGdyb3VwQnksIG1hcCwgbWVyZ2VNYXAsIHBhaXJ3aXNlLCBzdGFydFdpdGgsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEFjdGl2YXRpb25FbmQsIFJvdXRlciwgybVFbXB0eU91dGxldENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBUaXRsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgVkVSU0lPTiB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUnO1xuaW1wb3J0IHsgcmVnaXN0ZXJWZXJzaW9uIH0gZnJvbSAnZmlyZWJhc2UvYXBwJztcblxuaW1wb3J0IHsgQW5hbHl0aWNzIH0gZnJvbSAnLi9hbmFseXRpY3MnO1xuaW1wb3J0IHsgbG9nRXZlbnQsIGlzU3VwcG9ydGVkIH0gZnJvbSAnLi9maXJlYmFzZSc7XG5pbXBvcnQgeyBVc2VyVHJhY2tpbmdTZXJ2aWNlIH0gZnJvbSAnLi91c2VyLXRyYWNraW5nLnNlcnZpY2UnO1xuXG5jb25zdCBGSVJFQkFTRV9FVkVOVF9PUklHSU5fS0VZID0gJ2ZpcmViYXNlX2V2ZW50X29yaWdpbic7XG5jb25zdCBGSVJFQkFTRV9QUkVWSU9VU19TQ1JFRU5fQ0xBU1NfS0VZID0gJ2ZpcmViYXNlX3ByZXZpb3VzX2NsYXNzJztcbmNvbnN0IEZJUkVCQVNFX1BSRVZJT1VTX1NDUkVFTl9JTlNUQU5DRV9JRF9LRVkgPSAnZmlyZWJhc2VfcHJldmlvdXNfaWQnO1xuY29uc3QgRklSRUJBU0VfUFJFVklPVVNfU0NSRUVOX05BTUVfS0VZID0gJ2ZpcmViYXNlX3ByZXZpb3VzX3NjcmVlbic7XG5jb25zdCBGSVJFQkFTRV9TQ1JFRU5fQ0xBU1NfS0VZID0gJ2ZpcmViYXNlX3NjcmVlbl9jbGFzcyc7XG5jb25zdCBGSVJFQkFTRV9TQ1JFRU5fSU5TVEFOQ0VfSURfS0VZID0gJ2ZpcmViYXNlX3NjcmVlbl9pZCc7XG5jb25zdCBGSVJFQkFTRV9TQ1JFRU5fTkFNRV9LRVkgPSAnZmlyZWJhc2Vfc2NyZWVuJztcbmNvbnN0IE9VVExFVF9LRVkgPSAnb3V0bGV0JztcbmNvbnN0IFBBR0VfUEFUSF9LRVkgPSAncGFnZV9wYXRoJztcbmNvbnN0IFBBR0VfVElUTEVfS0VZID0gJ3BhZ2VfdGl0bGUnO1xuY29uc3QgU0NSRUVOX0NMQVNTX0tFWSA9ICdzY3JlZW5fY2xhc3MnO1xuY29uc3QgU0NSRUVOX05BTUVfS0VZID0gJ3NjcmVlbl9uYW1lJztcbmNvbnN0IFNDUkVFTl9WSUVXX0VWRU5UID0gJ3NjcmVlbl92aWV3JztcbmNvbnN0IEVWRU5UX09SSUdJTl9BVVRPID0gJ2F1dG8nO1xuY29uc3QgU0NSRUVOX0lOU1RBTkNFX0RFTElNSVRFUiA9ICcjJztcblxuLy8gdGhpcyBpcyBhbiBJTlQ2NCBpbiBpT1MvQW5kcm9pZCBidXQgdXNlIElOVDMyIGNhdXNlIGphdmFzY3JpcHRcbmxldCBuZXh0U2NyZWVuSW5zdGFuY2VJRCA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqICgyICoqIDMyIC0gMSkpIC0gMiAqKiAzMTtcblxuY29uc3Qga25vd25TY3JlZW5JbnN0YW5jZUlEczogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfSA9IHt9O1xuXG5jb25zdCBnZXRTY3JlZW5JbnN0YW5jZUlEID0gKHBhcmFtczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSkgPT4ge1xuICAvLyB1bmlxdWUgdGhlIHNjcmVlbiBjbGFzcyBhZ2FpbnN0IHRoZSBvdXRsZXQgbmFtZVxuICBjb25zdCBzY3JlZW5JbnN0YW5jZUtleSA9IFtcbiAgICBwYXJhbXNbU0NSRUVOX0NMQVNTX0tFWV0sXG4gICAgcGFyYW1zW09VVExFVF9LRVldXG4gIF0uam9pbihTQ1JFRU5fSU5TVEFOQ0VfREVMSU1JVEVSKTtcbiAgaWYgKGtub3duU2NyZWVuSW5zdGFuY2VJRHMuaGFzT3duUHJvcGVydHkoc2NyZWVuSW5zdGFuY2VLZXkpKSB7XG4gICAgcmV0dXJuIGtub3duU2NyZWVuSW5zdGFuY2VJRHNbc2NyZWVuSW5zdGFuY2VLZXldO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHJldCA9IG5leHRTY3JlZW5JbnN0YW5jZUlEKys7XG4gICAga25vd25TY3JlZW5JbnN0YW5jZUlEc1tzY3JlZW5JbnN0YW5jZUtleV0gPSByZXQ7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IMm1c2NyZWVuVmlld0V2ZW50ID0gKFxuICByb3V0ZXI6IFJvdXRlcixcbiAgdGl0bGU6IFRpdGxlfG51bGwsXG4gIGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuKTogT2JzZXJ2YWJsZTx7XG4gIFtTQ1JFRU5fTkFNRV9LRVldOiBzdHJpbmcsXG4gIFtQQUdFX1BBVEhfS0VZXTogc3RyaW5nLFxuICBbRklSRUJBU0VfRVZFTlRfT1JJR0lOX0tFWV06ICdhdXRvJyxcbiAgW0ZJUkVCQVNFX1NDUkVFTl9OQU1FX0tFWV06IHN0cmluZyxcbiAgW09VVExFVF9LRVldOiBzdHJpbmcsXG4gIFtQQUdFX1RJVExFX0tFWV0/OiBzdHJpbmcsXG4gIFtTQ1JFRU5fQ0xBU1NfS0VZXTogc3RyaW5nLFxuICBbRklSRUJBU0VfU0NSRUVOX0NMQVNTX0tFWV06IHN0cmluZyxcbiAgW0ZJUkVCQVNFX1NDUkVFTl9JTlNUQU5DRV9JRF9LRVldOiBudW1iZXIsXG4gIFtGSVJFQkFTRV9QUkVWSU9VU19TQ1JFRU5fQ0xBU1NfS0VZXTogc3RyaW5nLFxuICBbRklSRUJBU0VfUFJFVklPVVNfU0NSRUVOX05BTUVfS0VZXTogc3RyaW5nLFxuICBbRklSRUJBU0VfUFJFVklPVVNfU0NSRUVOX0lOU1RBTkNFX0lEX0tFWV06IG51bWJlcixcbn0+ID0+IHtcbiAgY29uc3QgYWN0aXZhdGlvbkVuZEV2ZW50cyA9IHJvdXRlci5ldmVudHMucGlwZShmaWx0ZXI8QWN0aXZhdGlvbkVuZD4oZSA9PiBlIGluc3RhbmNlb2YgQWN0aXZhdGlvbkVuZCkpO1xuICByZXR1cm4gYWN0aXZhdGlvbkVuZEV2ZW50cy5waXBlKFxuICAgIHN3aXRjaE1hcDxBY3RpdmF0aW9uRW5kLCBPYnNlcnZhYmxlPFJlY29yZDxzdHJpbmcsIGFueT58bnVsbD4+KGFjdGl2YXRpb25FbmQgPT4ge1xuICAgICAgLy8gcm91dGVyIHBhcnNlVXJsIGlzIGhhdmluZyB0cm91YmxlIHdpdGggb3V0bGV0cyB3aGVuIHRoZXkncmUgZW1wdHlcbiAgICAgIC8vIGUuZywgL2FzZGYvMShib2I6Ly9zYWxseTphc2RmKSwgc28gcHV0IGFub3RoZXIgc2xhc2ggaW4gd2hlbiBlbXB0eVxuICAgICAgY29uc3QgdXJsVHJlZSA9IHJvdXRlci5wYXJzZVVybChyb3V0ZXIudXJsLnJlcGxhY2UoLyg/OlxcKCkuKyg/OlxcKSkvZywgYSA9PiBhLnJlcGxhY2UoJzovLycsICc6Ly8vJykpKTtcbiAgICAgIGNvbnN0IHBhZ2VQYXRoID0gdXJsVHJlZS5yb290LmNoaWxkcmVuW2FjdGl2YXRpb25FbmQuc25hcHNob3Qub3V0bGV0XT8udG9TdHJpbmcoKSB8fCAnJztcbiAgICAgIGNvbnN0IGFjdHVhbFNuYXBzaG90ID0gcm91dGVyLnJvdXRlclN0YXRlLnJvb3QuY2hpbGRyZW4ubWFwKGl0ID0+IGl0KS5maW5kKGl0ID0+IGl0Lm91dGxldCA9PT0gYWN0aXZhdGlvbkVuZC5zbmFwc2hvdC5vdXRsZXQpO1xuXG4gICAgICBpZiAoIWFjdHVhbFNuYXBzaG90KSB7XG4gICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgIH1cblxuICAgICAgbGV0IGFjdHVhbERlZXAgPSBhY3R1YWxTbmFwc2hvdDtcbiAgICAgIHdoaWxlIChhY3R1YWxEZWVwLmZpcnN0Q2hpbGQpIHtcbiAgICAgICAgYWN0dWFsRGVlcCA9IGFjdHVhbERlZXAuZmlyc3RDaGlsZDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHNjcmVlbk5hbWUgPSBhY3R1YWxEZWVwLnBhdGhGcm9tUm9vdC5tYXAocyA9PiBzLnJvdXRlQ29uZmlnPy5wYXRoKS5maWx0ZXIoaXQgPT4gaXQpLmpvaW4oJy8nKSB8fCAnLyc7XG5cbiAgICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICAgW1NDUkVFTl9OQU1FX0tFWV06IHNjcmVlbk5hbWUsXG4gICAgICAgIFtQQUdFX1BBVEhfS0VZXTogYC8ke3BhZ2VQYXRofWAsXG4gICAgICAgIFtGSVJFQkFTRV9FVkVOVF9PUklHSU5fS0VZXTogRVZFTlRfT1JJR0lOX0FVVE8sXG4gICAgICAgIFtGSVJFQkFTRV9TQ1JFRU5fTkFNRV9LRVldOiBzY3JlZW5OYW1lLFxuICAgICAgICBbT1VUTEVUX0tFWV06IGFjdGl2YXRpb25FbmQuc25hcHNob3Qub3V0bGV0XG4gICAgICB9O1xuICAgICAgaWYgKHRpdGxlKSB7XG4gICAgICAgIHBhcmFtc1tQQUdFX1RJVExFX0tFWV0gPSB0aXRsZS5nZXRUaXRsZSgpO1xuICAgICAgfVxuXG4gICAgICBsZXQgY29tcG9uZW50ID0gYWN0dWFsU25hcHNob3QuY29tcG9uZW50O1xuICAgICAgaWYgKGNvbXBvbmVudCkge1xuICAgICAgICBpZiAoY29tcG9uZW50ID09PSDJtUVtcHR5T3V0bGV0Q29tcG9uZW50KSB7XG4gICAgICAgICAgbGV0IGRlZXBTbmFwc2hvdCA9IGFjdGl2YXRpb25FbmQuc25hcHNob3Q7XG4gICAgICAgICAgLy8gVE9ETyB3aGVuIG1pZ2h0IHRoZXJlIGJlIG11dHBsZSBjaGlsZHJlbiwgZGlmZmVyZW50IG91dGxldHM/IGV4cGxvcmVcbiAgICAgICAgICB3aGlsZSAoZGVlcFNuYXBzaG90LmZpcnN0Q2hpbGQpIHtcbiAgICAgICAgICAgIGRlZXBTbmFwc2hvdCA9IGRlZXBTbmFwc2hvdC5maXJzdENoaWxkO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb21wb25lbnQgPSBkZWVwU25hcHNob3QuY29tcG9uZW50O1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb21wb25lbnQgPSBhY3RpdmF0aW9uRW5kLnNuYXBzaG90LmNvbXBvbmVudDtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBjb21wb25lbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiBvZih7IC4uLnBhcmFtcywgW1NDUkVFTl9DTEFTU19LRVldOiBjb21wb25lbnQgfSk7XG4gICAgICB9IGVsc2UgaWYgKGNvbXBvbmVudCkge1xuICAgICAgICBjb25zdCBjb21wb25lbnRGYWN0b3J5ID0gY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KGNvbXBvbmVudCk7XG4gICAgICAgIHJldHVybiBvZih7IC4uLnBhcmFtcywgW1NDUkVFTl9DTEFTU19LRVldOiBjb21wb25lbnRGYWN0b3J5LnNlbGVjdG9yIH0pO1xuICAgICAgfVxuICAgICAgLy8gbGF6eSBsb2FkcyBjYXVzZSBleHRyYSBhY3RpdmF0aW9ucywgaWdub3JlXG4gICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgfSksXG4gICAgZmlsdGVyKGl0ID0+ICEhaXQpLFxuICAgIG1hcChwYXJhbXMgPT4gKHtcbiAgICAgIFtGSVJFQkFTRV9TQ1JFRU5fQ0xBU1NfS0VZXTogcGFyYW1zW1NDUkVFTl9DTEFTU19LRVldLFxuICAgICAgW0ZJUkVCQVNFX1NDUkVFTl9JTlNUQU5DRV9JRF9LRVldOiBnZXRTY3JlZW5JbnN0YW5jZUlEKHBhcmFtcyksXG4gICAgICAuLi5wYXJhbXNcbiAgICB9KSksXG4gICAgZ3JvdXBCeShpdCA9PiBpdFtPVVRMRVRfS0VZXSksXG4gICAgbWVyZ2VNYXAoaXQgPT4gaXQucGlwZShcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChhLCBiKSA9PiBKU09OLnN0cmluZ2lmeShhKSA9PT0gSlNPTi5zdHJpbmdpZnkoYikpLFxuICAgICAgc3RhcnRXaXRoPGFueSwgYW55Pih1bmRlZmluZWQpLFxuICAgICAgcGFpcndpc2UoKSxcbiAgICAgIG1hcCgoW3ByaW9yLCBjdXJyZW50XSkgPT5cbiAgICAgICAgcHJpb3IgPyB7XG4gICAgICAgICAgW0ZJUkVCQVNFX1BSRVZJT1VTX1NDUkVFTl9DTEFTU19LRVldOiBwcmlvcltTQ1JFRU5fQ0xBU1NfS0VZXSxcbiAgICAgICAgICBbRklSRUJBU0VfUFJFVklPVVNfU0NSRUVOX05BTUVfS0VZXTogcHJpb3JbU0NSRUVOX05BTUVfS0VZXSxcbiAgICAgICAgICBbRklSRUJBU0VfUFJFVklPVVNfU0NSRUVOX0lOU1RBTkNFX0lEX0tFWV06IHByaW9yW0ZJUkVCQVNFX1NDUkVFTl9JTlNUQU5DRV9JRF9LRVldLFxuICAgICAgICAgIC4uLmN1cnJlbnRcbiAgICAgICAgfSA6IGN1cnJlbnRcbiAgICAgICksXG4gICAgKSlcbiAgKTtcbn07XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTY3JlZW5UcmFja2luZ1NlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuXG4gIHByaXZhdGUgZGlzcG9zYWJsZTogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpIHJvdXRlcjogUm91dGVyLFxuICAgIEBPcHRpb25hbCgpIHRpdGxlOiBUaXRsZSxcbiAgICBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICB6b25lOiBOZ1pvbmUsXG4gICAgQE9wdGlvbmFsKCkgdXNlclRyYWNraW5nU2VydmljZTogVXNlclRyYWNraW5nU2VydmljZSxcbiAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICkge1xuICAgIHJlZ2lzdGVyVmVyc2lvbignYW5ndWxhcmZpcmUnLCBWRVJTSU9OLmZ1bGwsICdzY3JlZW4tdHJhY2tpbmcnKTtcbiAgICAvLyBUaGUgQVBQX0lOSVRJQUxJWkVSIHRoYXQgaXMgbWFraW5nIGlzU3VwcG9ydGVkKCkgc3luYyBmb3IgdGhlIHNha2Ugb2YgY29udmVuaWVudCBESVxuICAgIC8vIG1heSBub3QgYmUgZG9uZSB3aGVuIHNlcnZpY2VzIGFyZSBpbml0aWFsaXplZC4gR3VhcmQgdGhlIGZ1bmN0aW9uYWxpdHkgYnkgZmlyc3QgZW5zdXJpbmdcbiAgICAvLyB0aGF0IHRoZSAoZ2xvYmFsKSBwcm9taXNlIGhhcyByZXNvbHZlZCwgdGhlbiBnZXQgQW5hbHl0aWNzIGZyb20gdGhlIGluamVjdG9yLlxuICAgIGlzU3VwcG9ydGVkKCkudGhlbigoKSA9PiB7XG4gICAgICBjb25zdCBhbmFseXRpY3MgPSBpbmplY3Rvci5nZXQoQW5hbHl0aWNzKTtcbiAgICAgIGlmICghcm91dGVyIHx8ICFhbmFseXRpY3MpIHsgcmV0dXJuOyB9XG4gICAgICB6b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgdGhpcy5kaXNwb3NhYmxlID0gybVzY3JlZW5WaWV3RXZlbnQocm91dGVyLCB0aXRsZSwgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyKS5waXBlKFxuICAgICAgICAgIHN3aXRjaE1hcChhc3luYyBwYXJhbXMgPT4ge1xuICAgICAgICAgICAgaWYgKHVzZXJUcmFja2luZ1NlcnZpY2UpIHsgYXdhaXQgdXNlclRyYWNraW5nU2VydmljZS5pbml0aWFsaXplZDsgfVxuICAgICAgICAgICAgcmV0dXJuIGxvZ0V2ZW50KGFuYWx5dGljcywgU0NSRUVOX1ZJRVdfRVZFTlQsIHBhcmFtcyk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKS5zdWJzY3JpYmUoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuZGlzcG9zYWJsZSkge1xuICAgICAgdGhpcy5kaXNwb3NhYmxlLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbn1cbiJdfQ==
@@ -0,0 +1,44 @@
1
+ import { Injectable, Injector, NgZone } from '@angular/core';
2
+ import { VERSION } from '@angular/fire';
3
+ import { Auth, authState } from '@angular/fire/auth';
4
+ import { registerVersion } from 'firebase/app';
5
+ import { Analytics } from './analytics';
6
+ import { setUserId, isSupported } from './firebase';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/fire/auth";
9
+ export class UserTrackingService {
10
+ initialized;
11
+ disposables = [];
12
+ constructor(auth, zone, injector) {
13
+ registerVersion('angularfire', VERSION.full, 'user-tracking');
14
+ let resolveInitialized;
15
+ this.initialized = zone.runOutsideAngular(() => new Promise(resolve => { resolveInitialized = resolve; }));
16
+ // The APP_INITIALIZER that is making isSupported() sync for the sake of convenient DI
17
+ // may not be done when services are initialized. Guard the functionality by first ensuring
18
+ // that the (global) promise has resolved, then get Analytics from the injector.
19
+ isSupported().then(() => {
20
+ const analytics = injector.get(Analytics);
21
+ if (analytics) {
22
+ this.disposables = [
23
+ // TODO add credential tracking back in
24
+ authState(auth).subscribe(user => {
25
+ setUserId(analytics, user?.uid);
26
+ resolveInitialized();
27
+ }),
28
+ ];
29
+ }
30
+ else {
31
+ resolveInitialized();
32
+ }
33
+ });
34
+ }
35
+ ngOnDestroy() {
36
+ this.disposables.forEach(it => it.unsubscribe());
37
+ }
38
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: UserTrackingService, deps: [{ token: i1.Auth }, { token: i0.NgZone }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
39
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: UserTrackingService });
40
+ }
41
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: UserTrackingService, decorators: [{
42
+ type: Injectable
43
+ }], ctorParameters: function () { return [{ type: i1.Auth }, { type: i0.NgZone }, { type: i0.Injector }]; } });
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci10cmFja2luZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FuYWx5dGljcy91c2VyLXRyYWNraW5nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBRXhFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRS9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7OztBQUdwRCxNQUFNLE9BQU8sbUJBQW1CO0lBRWQsV0FBVyxDQUFnQjtJQUNuQyxXQUFXLEdBQXdCLEVBQUUsQ0FBQztJQUU5QyxZQUNFLElBQVUsRUFDVixJQUFZLEVBQ1osUUFBa0I7UUFFbEIsZUFBZSxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBQzlELElBQUksa0JBQThCLENBQUM7UUFDbkMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxrQkFBa0IsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNHLHNGQUFzRjtRQUN0RiwyRkFBMkY7UUFDM0YsZ0ZBQWdGO1FBQ2hGLFdBQVcsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDdEIsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUMxQyxJQUFJLFNBQVMsRUFBRTtnQkFDYixJQUFJLENBQUMsV0FBVyxHQUFHO29CQUNqQix1Q0FBdUM7b0JBQ3ZDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7d0JBQy9CLFNBQVMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO3dCQUNoQyxrQkFBa0IsRUFBRSxDQUFDO29CQUN2QixDQUFDLENBQUM7aUJBQ0gsQ0FBQzthQUNIO2lCQUFNO2dCQUNMLGtCQUFrQixFQUFFLENBQUM7YUFDdEI7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUNuRCxDQUFDO3VHQWxDVSxtQkFBbUI7MkdBQW5CLG1CQUFtQjs7MkZBQW5CLG1CQUFtQjtrQkFEL0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yLCBOZ1pvbmUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBWRVJTSU9OIH0gZnJvbSAnQGFuZ3VsYXIvZmlyZSc7XG5pbXBvcnQgeyBBdXRoLCBhdXRoU3RhdGUgfSBmcm9tICdAYW5ndWxhci9maXJlL2F1dGgnO1xuaW1wb3J0IHsgcmVnaXN0ZXJWZXJzaW9uIH0gZnJvbSAnZmlyZWJhc2UvYXBwJztcblxuaW1wb3J0IHsgQW5hbHl0aWNzIH0gZnJvbSAnLi9hbmFseXRpY3MnO1xuaW1wb3J0IHsgc2V0VXNlcklkLCBpc1N1cHBvcnRlZCB9IGZyb20gJy4vZmlyZWJhc2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVXNlclRyYWNraW5nU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgcHVibGljIHJlYWRvbmx5IGluaXRpYWxpemVkOiBQcm9taXNlPHZvaWQ+O1xuICBwcml2YXRlIGRpc3Bvc2FibGVzOiBBcnJheTxTdWJzY3JpcHRpb24+ID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgYXV0aDogQXV0aCxcbiAgICB6b25lOiBOZ1pvbmUsXG4gICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICApIHtcbiAgICByZWdpc3RlclZlcnNpb24oJ2FuZ3VsYXJmaXJlJywgVkVSU0lPTi5mdWxsLCAndXNlci10cmFja2luZycpO1xuICAgIGxldCByZXNvbHZlSW5pdGlhbGl6ZWQ6ICgpID0+IHZvaWQ7XG4gICAgdGhpcy5pbml0aWFsaXplZCA9IHpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7IHJlc29sdmVJbml0aWFsaXplZCA9IHJlc29sdmU7IH0pKTtcbiAgICAvLyBUaGUgQVBQX0lOSVRJQUxJWkVSIHRoYXQgaXMgbWFraW5nIGlzU3VwcG9ydGVkKCkgc3luYyBmb3IgdGhlIHNha2Ugb2YgY29udmVuaWVudCBESVxuICAgIC8vIG1heSBub3QgYmUgZG9uZSB3aGVuIHNlcnZpY2VzIGFyZSBpbml0aWFsaXplZC4gR3VhcmQgdGhlIGZ1bmN0aW9uYWxpdHkgYnkgZmlyc3QgZW5zdXJpbmdcbiAgICAvLyB0aGF0IHRoZSAoZ2xvYmFsKSBwcm9taXNlIGhhcyByZXNvbHZlZCwgdGhlbiBnZXQgQW5hbHl0aWNzIGZyb20gdGhlIGluamVjdG9yLlxuICAgIGlzU3VwcG9ydGVkKCkudGhlbigoKSA9PiB7XG4gICAgICBjb25zdCBhbmFseXRpY3MgPSBpbmplY3Rvci5nZXQoQW5hbHl0aWNzKTtcbiAgICAgIGlmIChhbmFseXRpY3MpIHtcbiAgICAgICAgdGhpcy5kaXNwb3NhYmxlcyA9IFtcbiAgICAgICAgICAvLyBUT0RPIGFkZCBjcmVkZW50aWFsIHRyYWNraW5nIGJhY2sgaW5cbiAgICAgICAgICBhdXRoU3RhdGUoYXV0aCkuc3Vic2NyaWJlKHVzZXIgPT4ge1xuICAgICAgICAgICAgc2V0VXNlcklkKGFuYWx5dGljcywgdXNlcj8udWlkKTtcbiAgICAgICAgICAgIHJlc29sdmVJbml0aWFsaXplZCgpO1xuICAgICAgICAgIH0pLFxuICAgICAgICBdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzb2x2ZUluaXRpYWxpemVkKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRpc3Bvc2FibGVzLmZvckVhY2goaXQgPT4gaXQudW5zdWJzY3JpYmUoKSk7XG4gIH1cbn1cbiJdfQ==