@angular/fire 7.6.1 → 16.0.0-canary.1350920

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 (480) hide show
  1. package/README.md +11 -27
  2. package/analytics/analytics.module.d.ts +2 -2
  3. package/analytics/firebase.d.ts +4 -1
  4. package/analytics/is-analytics-supported-factory.d.ts +4 -0
  5. package/analytics/screen-tracking.service.d.ts +3 -3
  6. package/app-check/app-check.d.ts +0 -6
  7. package/app-check/app-check.module.d.ts +3 -4
  8. package/app-check/firebase.d.ts +2 -1
  9. package/app-check/public_api.d.ts +2 -1
  10. package/auth/auth.module.d.ts +2 -2
  11. package/auth/firebase.d.ts +3 -1
  12. package/auth-guard/auth-guard.d.ts +6 -6
  13. package/compat/analytics/analytics.d.ts +1 -3
  14. package/compat/analytics/analytics.module.d.ts +1 -1
  15. package/compat/analytics/screen-tracking.service.d.ts +1 -1
  16. package/compat/analytics/user-tracking.service.d.ts +1 -1
  17. package/compat/auth/auth.d.ts +4 -4
  18. package/compat/auth-guard/auth-guard.d.ts +8 -6
  19. package/compat/database/database.d.ts +4 -4
  20. package/compat/database/interfaces.d.ts +14 -14
  21. package/compat/database/list/audit-trail.d.ts +1 -1
  22. package/compat/database/list/create-reference.d.ts +1 -1
  23. package/compat/database/list/data-operation.d.ts +1 -1
  24. package/compat/database/list/state-changes.d.ts +1 -1
  25. package/compat/database/object/create-reference.d.ts +1 -1
  26. package/compat/database/observable/fromRef.d.ts +1 -1
  27. package/compat/database/utils.d.ts +1 -1
  28. package/compat/firebase.app.module.d.ts +1 -1
  29. package/compat/firestore/collection/collection.d.ts +2 -2
  30. package/compat/firestore/collection-group/collection-group.d.ts +2 -2
  31. package/compat/firestore/document/document.d.ts +4 -4
  32. package/compat/firestore/firestore.d.ts +7 -7
  33. package/compat/firestore/interfaces.d.ts +19 -19
  34. package/compat/functions/functions.d.ts +3 -3
  35. package/compat/messaging/messaging.d.ts +2 -2
  36. package/compat/performance/performance.d.ts +2 -2
  37. package/compat/proxy.d.ts +8 -8
  38. package/compat/remote-config/interfaces.d.ts +1 -1
  39. package/compat/remote-config/remote-config.d.ts +15 -49
  40. package/compat/storage/interfaces.d.ts +8 -8
  41. package/compat/storage/observable/fromTask.d.ts +1 -2
  42. package/compat/storage/pipes/storageUrl.pipe.d.ts +1 -1
  43. package/compat/storage/ref.d.ts +1 -1
  44. package/compat/storage/storage.d.ts +3 -3
  45. package/compat/storage/task.d.ts +1 -1
  46. package/core.d.ts +8 -12
  47. package/database/database.module.d.ts +2 -2
  48. package/docs/app-check.md +1 -1
  49. package/docs/auth.md +6 -6
  50. package/docs/database.md +1 -1
  51. package/docs/deploy/getting-started.md +2 -2
  52. package/docs/firestore.md +1 -1
  53. package/docs/install-and-setup.md +1 -1
  54. package/docs/install-firebase-tools.md +78 -0
  55. package/docs/universal/cloud-functions.md +27 -6
  56. package/docs/universal/getting-started.md +9 -134
  57. package/{esm2015/analytics/analytics.js → esm2022/analytics/analytics.mjs} +1 -1
  58. package/esm2022/analytics/analytics.module.mjs +94 -0
  59. package/esm2022/analytics/firebase.mjs +17 -0
  60. package/esm2022/analytics/is-analytics-supported-factory.mjs +16 -0
  61. package/esm2022/analytics/overrides.mjs +3 -0
  62. package/esm2022/analytics/screen-tracking.service.mjs +148 -0
  63. package/esm2022/analytics/user-tracking.service.mjs +44 -0
  64. package/{esm2015/app/app.js → esm2022/app/app.mjs} +1 -1
  65. package/esm2022/app/app.module.mjs +85 -0
  66. package/esm2022/app-check/app-check.mjs +10 -0
  67. package/esm2022/app-check/app-check.module.mjs +78 -0
  68. package/esm2022/app-check/firebase.mjs +10 -0
  69. package/esm2022/app-check/public_api.mjs +5 -0
  70. package/{esm2015/auth/auth.js → esm2022/auth/auth.mjs} +1 -1
  71. package/esm2022/auth/auth.module.mjs +71 -0
  72. package/esm2022/auth/firebase.mjs +58 -0
  73. package/esm2022/auth-guard/auth-guard.mjs +53 -0
  74. package/{esm2015/auth-guard/auth-guard.module.js → esm2022/auth-guard/auth-guard.module.mjs} +7 -7
  75. package/esm2022/compat/analytics/analytics.mjs +160 -0
  76. package/esm2022/compat/analytics/analytics.module.mjs +35 -0
  77. package/esm2022/compat/analytics/screen-tracking.service.mjs +49 -0
  78. package/esm2022/compat/analytics/user-tracking.service.mjs +53 -0
  79. package/esm2022/compat/auth/auth.mjs +161 -0
  80. package/{esm2015/compat/auth/auth.module.js → esm2022/compat/auth/auth.module.mjs} +7 -7
  81. package/{esm2015/compat/auth/public_api.js → esm2022/compat/auth/public_api.mjs} +1 -1
  82. package/esm2022/compat/auth-guard/auth-guard.mjs +53 -0
  83. package/{esm2015/compat/auth-guard/auth-guard.module.js → esm2022/compat/auth-guard/auth-guard.module.mjs} +7 -7
  84. package/{esm2015/compat/cache.js → esm2022/compat/cache.mjs} +4 -3
  85. package/esm2022/compat/database/database.mjs +119 -0
  86. package/{esm2015/compat/database/database.module.js → esm2022/compat/database/database.module.mjs} +7 -7
  87. package/esm2022/compat/database/interfaces.mjs +2 -0
  88. package/{esm2015/compat/database/list/audit-trail.js → esm2022/compat/database/list/audit-trail.mjs} +3 -3
  89. package/esm2022/compat/database/list/changes.mjs +85 -0
  90. package/esm2022/compat/database/list/create-reference.mjs +44 -0
  91. package/{esm2015/compat/database/list/data-operation.js → esm2022/compat/database/list/data-operation.mjs} +1 -1
  92. package/{esm2015/compat/database/list/snapshot-changes.js → esm2022/compat/database/list/snapshot-changes.mjs} +1 -1
  93. package/{esm2015/compat/database/list/state-changes.js → esm2022/compat/database/list/state-changes.mjs} +2 -2
  94. package/{esm2015/compat/database/object/create-reference.js → esm2022/compat/database/object/create-reference.mjs} +2 -2
  95. package/{esm2015/compat/database/object/snapshot-changes.js → esm2022/compat/database/object/snapshot-changes.mjs} +1 -1
  96. package/esm2022/compat/database/observable/fromRef.mjs +48 -0
  97. package/{esm2015/compat/database/utils.js → esm2022/compat/database/utils.mjs} +1 -1
  98. package/{esm2015/compat/firebase.app.js → esm2022/compat/firebase.app.mjs} +1 -1
  99. package/esm2022/compat/firebase.app.module.mjs +71 -0
  100. package/esm2022/compat/firestore/collection/changes.mjs +108 -0
  101. package/esm2022/compat/firestore/collection/collection.mjs +123 -0
  102. package/esm2022/compat/firestore/collection-group/collection-group.mjs +86 -0
  103. package/esm2022/compat/firestore/document/document.mjs +87 -0
  104. package/esm2022/compat/firestore/firestore.mjs +257 -0
  105. package/{esm2015/compat/firestore/firestore.module.js → esm2022/compat/firestore/firestore.module.mjs} +7 -7
  106. package/esm2022/compat/firestore/interfaces.mjs +2 -0
  107. package/esm2022/compat/firestore/observable/fromRef.mjs +40 -0
  108. package/esm2022/compat/functions/functions.mjs +69 -0
  109. package/{esm2015/compat/functions/functions.module.js → esm2022/compat/functions/functions.module.mjs} +7 -7
  110. package/{esm2015/compat/functions/public_api.js → esm2022/compat/functions/public_api.mjs} +1 -1
  111. package/esm2022/compat/messaging/messaging.mjs +81 -0
  112. package/{esm2015/compat/messaging/messaging.module.js → esm2022/compat/messaging/messaging.module.mjs} +7 -7
  113. package/esm2022/compat/performance/performance.mjs +105 -0
  114. package/esm2022/compat/performance/performance.module.mjs +27 -0
  115. package/esm2022/compat/performance/performance.service.mjs +28 -0
  116. package/esm2022/compat/proxy.mjs +58 -0
  117. package/esm2022/compat/remote-config/remote-config.mjs +206 -0
  118. package/{esm2015/compat/remote-config/remote-config.module.js → esm2022/compat/remote-config/remote-config.module.mjs} +7 -7
  119. package/esm2022/compat/storage/observable/fromTask.mjs +36 -0
  120. package/esm2022/compat/storage/pipes/storageUrl.pipe.mjs +58 -0
  121. package/{esm2015/compat/storage/ref.js → esm2022/compat/storage/ref.mjs} +3 -3
  122. package/esm2022/compat/storage/storage.mjs +95 -0
  123. package/esm2022/compat/storage/storage.module.mjs +22 -0
  124. package/{esm2015/compat/storage/task.js → esm2022/compat/storage/task.mjs} +2 -2
  125. package/esm2022/core.mjs +43 -0
  126. package/{esm2015/database/database.js → esm2022/database/database.mjs} +1 -1
  127. package/esm2022/database/database.module.mjs +74 -0
  128. package/esm2022/firestore/firebase.mjs +73 -0
  129. package/{esm2015/firestore/firestore.js → esm2022/firestore/firestore.mjs} +1 -1
  130. package/esm2022/firestore/firestore.module.mjs +74 -0
  131. package/esm2022/firestore/lite/firebase.mjs +48 -0
  132. package/{esm2015/firestore/lite/lite.js → esm2022/firestore/lite/lite.mjs} +1 -1
  133. package/esm2022/firestore/lite/lite.module.mjs +73 -0
  134. package/esm2022/firestore/lite/rxfire.mjs +12 -0
  135. package/esm2022/firestore/rxfire.mjs +15 -0
  136. package/{esm2015/functions/functions.js → esm2022/functions/functions.mjs} +1 -1
  137. package/esm2022/functions/functions.module.mjs +74 -0
  138. package/esm2022/messaging/is-messaging-supported-factory.mjs +16 -0
  139. package/{esm2015/messaging/messaging.js → esm2022/messaging/messaging.mjs} +1 -1
  140. package/esm2022/messaging/messaging.module.mjs +86 -0
  141. package/esm2022/messaging/overrides.mjs +3 -0
  142. package/{esm2015/performance/performance.js → esm2022/performance/performance.mjs} +1 -1
  143. package/esm2022/performance/performance.module.mjs +81 -0
  144. package/esm2022/remote-config/is-remote-config-supported-factory.mjs +16 -0
  145. package/esm2022/remote-config/overrides.mjs +3 -0
  146. package/{esm2015/remote-config/remote-config.js → esm2022/remote-config/remote-config.mjs} +1 -1
  147. package/esm2022/remote-config/remote-config.module.mjs +86 -0
  148. package/{esm2015/storage/storage.js → esm2022/storage/storage.mjs} +1 -1
  149. package/esm2022/storage/storage.module.mjs +74 -0
  150. package/esm2022/zones.mjs +194 -0
  151. package/{fesm2015/angular-fire-analytics.js → fesm2022/angular-fire-analytics.mjs} +68 -41
  152. package/fesm2022/angular-fire-analytics.mjs.map +1 -0
  153. package/{fesm2015/angular-fire-app-check.js → fesm2022/angular-fire-app-check.mjs} +18 -25
  154. package/fesm2022/angular-fire-app-check.mjs.map +1 -0
  155. package/{fesm2015/angular-fire-app.js → fesm2022/angular-fire-app.mjs} +10 -9
  156. package/fesm2022/angular-fire-app.mjs.map +1 -0
  157. package/{fesm2015/angular-fire-auth-guard.js → fesm2022/angular-fire-auth-guard.mjs} +31 -27
  158. package/fesm2022/angular-fire-auth-guard.mjs.map +1 -0
  159. package/{fesm2015/angular-fire-auth.js → fesm2022/angular-fire-auth.mjs} +14 -13
  160. package/fesm2022/angular-fire-auth.mjs.map +1 -0
  161. package/{fesm2015/angular-fire-compat-analytics.js → fesm2022/angular-fire-compat-analytics.mjs} +43 -41
  162. package/fesm2022/angular-fire-compat-analytics.mjs.map +1 -0
  163. package/{fesm2015/angular-fire-compat-auth-guard.js → fesm2022/angular-fire-compat-auth-guard.mjs} +30 -26
  164. package/fesm2022/angular-fire-compat-auth-guard.mjs.map +1 -0
  165. package/{fesm2015/angular-fire-compat-auth.js → fesm2022/angular-fire-compat-auth.mjs} +38 -16
  166. package/fesm2022/angular-fire-compat-auth.mjs.map +1 -0
  167. package/{fesm2015/angular-fire-compat-database.js → fesm2022/angular-fire-compat-database.mjs} +138 -132
  168. package/fesm2022/angular-fire-compat-database.mjs.map +1 -0
  169. package/{fesm2015/angular-fire-compat-firestore.js → fesm2022/angular-fire-compat-firestore.mjs} +119 -98
  170. package/fesm2022/angular-fire-compat-firestore.mjs.map +1 -0
  171. package/{fesm2015/angular-fire-compat-functions.js → fesm2022/angular-fire-compat-functions.mjs} +13 -12
  172. package/fesm2022/angular-fire-compat-functions.mjs.map +1 -0
  173. package/{fesm2015/angular-fire-compat-messaging.js → fesm2022/angular-fire-compat-messaging.mjs} +25 -19
  174. package/fesm2022/angular-fire-compat-messaging.mjs.map +1 -0
  175. package/{fesm2015/angular-fire-compat-performance.js → fesm2022/angular-fire-compat-performance.mjs} +29 -34
  176. package/fesm2022/angular-fire-compat-performance.mjs.map +1 -0
  177. package/{fesm2015/angular-fire-compat-remote-config.js → fesm2022/angular-fire-compat-remote-config.mjs} +35 -22
  178. package/fesm2022/angular-fire-compat-remote-config.mjs.map +1 -0
  179. package/{fesm2015/angular-fire-compat-storage.js → fesm2022/angular-fire-compat-storage.mjs} +30 -23
  180. package/fesm2022/angular-fire-compat-storage.mjs.map +1 -0
  181. package/{fesm2015/angular-fire-compat.js → fesm2022/angular-fire-compat.mjs} +25 -25
  182. package/fesm2022/angular-fire-compat.mjs.map +1 -0
  183. package/{fesm2015/angular-fire-database.js → fesm2022/angular-fire-database.mjs} +11 -12
  184. package/fesm2022/angular-fire-database.mjs.map +1 -0
  185. package/{fesm2015/angular-fire-firestore-lite.js → fesm2022/angular-fire-firestore-lite.mjs} +25 -15
  186. package/fesm2022/angular-fire-firestore-lite.mjs.map +1 -0
  187. package/fesm2022/angular-fire-firestore.mjs +180 -0
  188. package/fesm2022/angular-fire-firestore.mjs.map +1 -0
  189. package/{fesm2015/angular-fire-functions.js → fesm2022/angular-fire-functions.mjs} +12 -13
  190. package/fesm2022/angular-fire-functions.mjs.map +1 -0
  191. package/{fesm2015/angular-fire-messaging.js → fesm2022/angular-fire-messaging.mjs} +33 -19
  192. package/fesm2022/angular-fire-messaging.mjs.map +1 -0
  193. package/{fesm2015/angular-fire-performance.js → fesm2022/angular-fire-performance.mjs} +11 -11
  194. package/fesm2022/angular-fire-performance.mjs.map +1 -0
  195. package/{fesm2015/angular-fire-remote-config.js → fesm2022/angular-fire-remote-config.mjs} +34 -20
  196. package/fesm2022/angular-fire-remote-config.mjs.map +1 -0
  197. package/{fesm2015/angular-fire-storage.js → fesm2022/angular-fire-storage.mjs} +10 -11
  198. package/fesm2022/angular-fire-storage.mjs.map +1 -0
  199. package/{fesm2015/angular-fire.js → fesm2022/angular-fire.mjs} +33 -58
  200. package/fesm2022/angular-fire.mjs.map +1 -0
  201. package/firestore/firebase.d.ts +21 -1
  202. package/firestore/firestore.module.d.ts +2 -2
  203. package/firestore/lite/firebase.d.ts +10 -1
  204. package/firestore/lite/lite.module.d.ts +2 -2
  205. package/firestore/lite/rxfire.d.ts +3 -1
  206. package/firestore/rxfire.d.ts +3 -1
  207. package/functions/functions.module.d.ts +2 -2
  208. package/messaging/is-messaging-supported-factory.d.ts +4 -0
  209. package/messaging/messaging.module.d.ts +2 -2
  210. package/package.json +169 -18
  211. package/performance/performance.module.d.ts +2 -2
  212. package/remote-config/is-remote-config-supported-factory.d.ts +4 -0
  213. package/remote-config/remote-config.module.d.ts +2 -2
  214. package/schematics/add/index.js +2 -2
  215. package/schematics/common.js +9 -5
  216. package/schematics/deploy/actions.js +69 -69
  217. package/schematics/deploy/builder.js +7 -7
  218. package/schematics/firebaseTools.js +9 -5
  219. package/schematics/interfaces.js +9 -8
  220. package/schematics/setup/index.js +48 -64
  221. package/schematics/setup/prompts.js +22 -18
  222. package/schematics/update/index.js +1 -1
  223. package/schematics/update/v7/index.js +7 -7
  224. package/schematics/utils.js +87 -71
  225. package/storage/storage.module.d.ts +2 -2
  226. package/analytics/package.json +0 -11
  227. package/app/package.json +0 -11
  228. package/app-check/package.json +0 -11
  229. package/auth/package.json +0 -11
  230. package/auth-guard/package.json +0 -11
  231. package/bundles/angular-fire-analytics.umd.js +0 -673
  232. package/bundles/angular-fire-analytics.umd.js.map +0 -1
  233. package/bundles/angular-fire-app-check.umd.js +0 -465
  234. package/bundles/angular-fire-app-check.umd.js.map +0 -1
  235. package/bundles/angular-fire-app.umd.js +0 -477
  236. package/bundles/angular-fire-app.umd.js.map +0 -1
  237. package/bundles/angular-fire-auth-guard.umd.js +0 -109
  238. package/bundles/angular-fire-auth-guard.umd.js.map +0 -1
  239. package/bundles/angular-fire-auth.umd.js +0 -557
  240. package/bundles/angular-fire-auth.umd.js.map +0 -1
  241. package/bundles/angular-fire-compat-analytics.umd.js +0 -672
  242. package/bundles/angular-fire-compat-analytics.umd.js.map +0 -1
  243. package/bundles/angular-fire-compat-auth-guard.umd.js +0 -112
  244. package/bundles/angular-fire-compat-auth-guard.umd.js.map +0 -1
  245. package/bundles/angular-fire-compat-auth.umd.js +0 -559
  246. package/bundles/angular-fire-compat-auth.umd.js.map +0 -1
  247. package/bundles/angular-fire-compat-database.umd.js +0 -799
  248. package/bundles/angular-fire-compat-database.umd.js.map +0 -1
  249. package/bundles/angular-fire-compat-firestore.umd.js +0 -1073
  250. package/bundles/angular-fire-compat-firestore.umd.js.map +0 -1
  251. package/bundles/angular-fire-compat-functions.umd.js +0 -443
  252. package/bundles/angular-fire-compat-functions.umd.js.map +0 -1
  253. package/bundles/angular-fire-compat-messaging.umd.js +0 -465
  254. package/bundles/angular-fire-compat-messaging.umd.js.map +0 -1
  255. package/bundles/angular-fire-compat-performance.umd.js +0 -212
  256. package/bundles/angular-fire-compat-performance.umd.js.map +0 -1
  257. package/bundles/angular-fire-compat-remote-config.umd.js +0 -605
  258. package/bundles/angular-fire-compat-remote-config.umd.js.map +0 -1
  259. package/bundles/angular-fire-compat-storage.umd.js +0 -598
  260. package/bundles/angular-fire-compat-storage.umd.js.map +0 -1
  261. package/bundles/angular-fire-compat.umd.js +0 -535
  262. package/bundles/angular-fire-compat.umd.js.map +0 -1
  263. package/bundles/angular-fire-database.umd.js +0 -557
  264. package/bundles/angular-fire-database.umd.js.map +0 -1
  265. package/bundles/angular-fire-firestore-lite.umd.js +0 -531
  266. package/bundles/angular-fire-firestore-lite.umd.js.map +0 -1
  267. package/bundles/angular-fire-firestore.umd.js +0 -565
  268. package/bundles/angular-fire-firestore.umd.js.map +0 -1
  269. package/bundles/angular-fire-functions.umd.js +0 -461
  270. package/bundles/angular-fire-functions.umd.js.map +0 -1
  271. package/bundles/angular-fire-messaging.umd.js +0 -473
  272. package/bundles/angular-fire-messaging.umd.js.map +0 -1
  273. package/bundles/angular-fire-performance.umd.js +0 -473
  274. package/bundles/angular-fire-performance.umd.js.map +0 -1
  275. package/bundles/angular-fire-remote-config.umd.js +0 -499
  276. package/bundles/angular-fire-remote-config.umd.js.map +0 -1
  277. package/bundles/angular-fire-storage.umd.js +0 -485
  278. package/bundles/angular-fire-storage.umd.js.map +0 -1
  279. package/bundles/angular-fire.umd.js +0 -308
  280. package/bundles/angular-fire.umd.js.map +0 -1
  281. package/compat/analytics/package.json +0 -11
  282. package/compat/auth/package.json +0 -11
  283. package/compat/auth-guard/package.json +0 -11
  284. package/compat/database/package.json +0 -11
  285. package/compat/firestore/package.json +0 -11
  286. package/compat/functions/package.json +0 -11
  287. package/compat/messaging/package.json +0 -11
  288. package/compat/package.json +0 -11
  289. package/compat/performance/package.json +0 -11
  290. package/compat/remote-config/package.json +0 -11
  291. package/compat/storage/package.json +0 -11
  292. package/database/package.json +0 -11
  293. package/esm2015/analytics/analytics.module.js +0 -93
  294. package/esm2015/analytics/firebase.js +0 -14
  295. package/esm2015/analytics/overrides.js +0 -3
  296. package/esm2015/analytics/screen-tracking.service.js +0 -139
  297. package/esm2015/analytics/user-tracking.service.js +0 -43
  298. package/esm2015/app/app.module.js +0 -84
  299. package/esm2015/app-check/app-check.js +0 -16
  300. package/esm2015/app-check/app-check.module.js +0 -81
  301. package/esm2015/app-check/firebase.js +0 -9
  302. package/esm2015/app-check/public_api.js +0 -4
  303. package/esm2015/auth/auth.module.js +0 -71
  304. package/esm2015/auth/firebase.js +0 -56
  305. package/esm2015/auth-guard/auth-guard.js +0 -49
  306. package/esm2015/compat/analytics/analytics.js +0 -163
  307. package/esm2015/compat/analytics/analytics.module.js +0 -32
  308. package/esm2015/compat/analytics/screen-tracking.service.js +0 -49
  309. package/esm2015/compat/analytics/user-tracking.service.js +0 -52
  310. package/esm2015/compat/auth/auth.js +0 -139
  311. package/esm2015/compat/auth-guard/auth-guard.js +0 -49
  312. package/esm2015/compat/database/database.js +0 -117
  313. package/esm2015/compat/database/interfaces.js +0 -2
  314. package/esm2015/compat/database/list/changes.js +0 -85
  315. package/esm2015/compat/database/list/create-reference.js +0 -41
  316. package/esm2015/compat/database/observable/fromRef.js +0 -47
  317. package/esm2015/compat/firebase.app.module.js +0 -69
  318. package/esm2015/compat/firestore/collection/changes.js +0 -107
  319. package/esm2015/compat/firestore/collection/collection.js +0 -117
  320. package/esm2015/compat/firestore/collection-group/collection-group.js +0 -81
  321. package/esm2015/compat/firestore/document/document.js +0 -82
  322. package/esm2015/compat/firestore/firestore.js +0 -254
  323. package/esm2015/compat/firestore/interfaces.js +0 -2
  324. package/esm2015/compat/firestore/observable/fromRef.js +0 -39
  325. package/esm2015/compat/functions/functions.js +0 -68
  326. package/esm2015/compat/messaging/messaging.js +0 -75
  327. package/esm2015/compat/performance/performance.js +0 -110
  328. package/esm2015/compat/performance/performance.module.js +0 -28
  329. package/esm2015/compat/performance/performance.service.js +0 -27
  330. package/esm2015/compat/proxy.js +0 -61
  331. package/esm2015/compat/remote-config/remote-config.js +0 -193
  332. package/esm2015/compat/storage/observable/fromTask.js +0 -34
  333. package/esm2015/compat/storage/pipes/storageUrl.pipe.js +0 -54
  334. package/esm2015/compat/storage/storage.js +0 -94
  335. package/esm2015/compat/storage/storage.module.js +0 -22
  336. package/esm2015/core.js +0 -79
  337. package/esm2015/database/database.module.js +0 -74
  338. package/esm2015/firestore/firebase.js +0 -53
  339. package/esm2015/firestore/firestore.module.js +0 -74
  340. package/esm2015/firestore/lite/firebase.js +0 -39
  341. package/esm2015/firestore/lite/lite.module.js +0 -74
  342. package/esm2015/firestore/lite/rxfire.js +0 -10
  343. package/esm2015/firestore/rxfire.js +0 -13
  344. package/esm2015/functions/functions.module.js +0 -74
  345. package/esm2015/messaging/messaging.module.js +0 -85
  346. package/esm2015/messaging/overrides.js +0 -3
  347. package/esm2015/performance/performance.module.js +0 -81
  348. package/esm2015/remote-config/overrides.js +0 -3
  349. package/esm2015/remote-config/remote-config.module.js +0 -85
  350. package/esm2015/storage/storage.module.js +0 -74
  351. package/esm2015/zones.js +0 -183
  352. package/fesm2015/angular-fire-analytics.js.map +0 -1
  353. package/fesm2015/angular-fire-app-check.js.map +0 -1
  354. package/fesm2015/angular-fire-app.js.map +0 -1
  355. package/fesm2015/angular-fire-auth-guard.js.map +0 -1
  356. package/fesm2015/angular-fire-auth.js.map +0 -1
  357. package/fesm2015/angular-fire-compat-analytics.js.map +0 -1
  358. package/fesm2015/angular-fire-compat-auth-guard.js.map +0 -1
  359. package/fesm2015/angular-fire-compat-auth.js.map +0 -1
  360. package/fesm2015/angular-fire-compat-database.js.map +0 -1
  361. package/fesm2015/angular-fire-compat-firestore.js.map +0 -1
  362. package/fesm2015/angular-fire-compat-functions.js.map +0 -1
  363. package/fesm2015/angular-fire-compat-messaging.js.map +0 -1
  364. package/fesm2015/angular-fire-compat-performance.js.map +0 -1
  365. package/fesm2015/angular-fire-compat-remote-config.js.map +0 -1
  366. package/fesm2015/angular-fire-compat-storage.js.map +0 -1
  367. package/fesm2015/angular-fire-compat.js.map +0 -1
  368. package/fesm2015/angular-fire-database.js.map +0 -1
  369. package/fesm2015/angular-fire-firestore-lite.js.map +0 -1
  370. package/fesm2015/angular-fire-firestore.js +0 -159
  371. package/fesm2015/angular-fire-firestore.js.map +0 -1
  372. package/fesm2015/angular-fire-functions.js.map +0 -1
  373. package/fesm2015/angular-fire-messaging.js.map +0 -1
  374. package/fesm2015/angular-fire-performance.js.map +0 -1
  375. package/fesm2015/angular-fire-remote-config.js.map +0 -1
  376. package/fesm2015/angular-fire-storage.js.map +0 -1
  377. package/fesm2015/angular-fire.js.map +0 -1
  378. package/firestore/lite/package.json +0 -11
  379. package/firestore/package.json +0 -11
  380. package/firestore-protos.js +0 -4
  381. package/functions/package.json +0 -11
  382. package/messaging/package.json +0 -11
  383. package/performance/package.json +0 -11
  384. package/remote-config/package.json +0 -11
  385. package/storage/package.json +0 -11
  386. /package/analytics/{angular-fire-analytics.d.ts → index.d.ts} +0 -0
  387. /package/app/{angular-fire-app.d.ts → index.d.ts} +0 -0
  388. /package/app-check/{angular-fire-app-check.d.ts → index.d.ts} +0 -0
  389. /package/auth/{angular-fire-auth.d.ts → index.d.ts} +0 -0
  390. /package/auth-guard/{angular-fire-auth-guard.d.ts → index.d.ts} +0 -0
  391. /package/compat/analytics/{angular-fire-compat-analytics.d.ts → index.d.ts} +0 -0
  392. /package/compat/auth/{angular-fire-compat-auth.d.ts → index.d.ts} +0 -0
  393. /package/compat/auth-guard/{angular-fire-compat-auth-guard.d.ts → index.d.ts} +0 -0
  394. /package/compat/database/{angular-fire-compat-database.d.ts → index.d.ts} +0 -0
  395. /package/compat/firestore/{angular-fire-compat-firestore.d.ts → index.d.ts} +0 -0
  396. /package/compat/functions/{angular-fire-compat-functions.d.ts → index.d.ts} +0 -0
  397. /package/compat/{angular-fire-compat.d.ts → index.d.ts} +0 -0
  398. /package/compat/messaging/{angular-fire-compat-messaging.d.ts → index.d.ts} +0 -0
  399. /package/compat/performance/{angular-fire-compat-performance.d.ts → index.d.ts} +0 -0
  400. /package/compat/remote-config/{angular-fire-compat-remote-config.d.ts → index.d.ts} +0 -0
  401. /package/compat/storage/{angular-fire-compat-storage.d.ts → index.d.ts} +0 -0
  402. /package/database/{angular-fire-database.d.ts → index.d.ts} +0 -0
  403. /package/{esm2015/analytics/angular-fire-analytics.js → esm2022/analytics/angular-fire-analytics.mjs} +0 -0
  404. /package/{esm2015/analytics/public_api.js → esm2022/analytics/public_api.mjs} +0 -0
  405. /package/{esm2015/angular-fire.js → esm2022/angular-fire.mjs} +0 -0
  406. /package/{esm2015/app/angular-fire-app.js → esm2022/app/angular-fire-app.mjs} +0 -0
  407. /package/{esm2015/app/firebase.js → esm2022/app/firebase.mjs} +0 -0
  408. /package/{esm2015/app/public_api.js → esm2022/app/public_api.mjs} +0 -0
  409. /package/{esm2015/app-check/angular-fire-app-check.js → esm2022/app-check/angular-fire-app-check.mjs} +0 -0
  410. /package/{esm2015/auth/angular-fire-auth.js → esm2022/auth/angular-fire-auth.mjs} +0 -0
  411. /package/{esm2015/auth/public_api.js → esm2022/auth/public_api.mjs} +0 -0
  412. /package/{esm2015/auth/rxfire.js → esm2022/auth/rxfire.mjs} +0 -0
  413. /package/{esm2015/auth-guard/angular-fire-auth-guard.js → esm2022/auth-guard/angular-fire-auth-guard.mjs} +0 -0
  414. /package/{esm2015/auth-guard/public_api.js → esm2022/auth-guard/public_api.mjs} +0 -0
  415. /package/{esm2015/compat/analytics/angular-fire-compat-analytics.js → esm2022/compat/analytics/angular-fire-compat-analytics.mjs} +0 -0
  416. /package/{esm2015/compat/analytics/base.js → esm2022/compat/analytics/base.mjs} +0 -0
  417. /package/{esm2015/compat/analytics/public_api.js → esm2022/compat/analytics/public_api.mjs} +0 -0
  418. /package/{esm2015/compat/angular-fire-compat.js → esm2022/compat/angular-fire-compat.mjs} +0 -0
  419. /package/{esm2015/compat/auth/angular-fire-compat-auth.js → esm2022/compat/auth/angular-fire-compat-auth.mjs} +0 -0
  420. /package/{esm2015/compat/auth/base.js → esm2022/compat/auth/base.mjs} +0 -0
  421. /package/{esm2015/compat/auth-guard/angular-fire-compat-auth-guard.js → esm2022/compat/auth-guard/angular-fire-compat-auth-guard.mjs} +0 -0
  422. /package/{esm2015/compat/auth-guard/public_api.js → esm2022/compat/auth-guard/public_api.mjs} +0 -0
  423. /package/{esm2015/compat/database/angular-fire-compat-database.js → esm2022/compat/database/angular-fire-compat-database.mjs} +0 -0
  424. /package/{esm2015/compat/database/list/remove.js → esm2022/compat/database/list/remove.mjs} +0 -0
  425. /package/{esm2015/compat/database/list/utils.js → esm2022/compat/database/list/utils.mjs} +0 -0
  426. /package/{esm2015/compat/database/public_api.js → esm2022/compat/database/public_api.mjs} +0 -0
  427. /package/{esm2015/compat/firestore/angular-fire-compat-firestore.js → esm2022/compat/firestore/angular-fire-compat-firestore.mjs} +0 -0
  428. /package/{esm2015/compat/firestore/public_api.js → esm2022/compat/firestore/public_api.mjs} +0 -0
  429. /package/{esm2015/compat/functions/angular-fire-compat-functions.js → esm2022/compat/functions/angular-fire-compat-functions.mjs} +0 -0
  430. /package/{esm2015/compat/functions/base.js → esm2022/compat/functions/base.mjs} +0 -0
  431. /package/{esm2015/compat/messaging/angular-fire-compat-messaging.js → esm2022/compat/messaging/angular-fire-compat-messaging.mjs} +0 -0
  432. /package/{esm2015/compat/messaging/base.js → esm2022/compat/messaging/base.mjs} +0 -0
  433. /package/{esm2015/compat/messaging/public_api.js → esm2022/compat/messaging/public_api.mjs} +0 -0
  434. /package/{esm2015/compat/performance/angular-fire-compat-performance.js → esm2022/compat/performance/angular-fire-compat-performance.mjs} +0 -0
  435. /package/{esm2015/compat/performance/base.js → esm2022/compat/performance/base.mjs} +0 -0
  436. /package/{esm2015/compat/performance/public_api.js → esm2022/compat/performance/public_api.mjs} +0 -0
  437. /package/{esm2015/compat/public_api.js → esm2022/compat/public_api.mjs} +0 -0
  438. /package/{esm2015/compat/remote-config/angular-fire-compat-remote-config.js → esm2022/compat/remote-config/angular-fire-compat-remote-config.mjs} +0 -0
  439. /package/{esm2015/compat/remote-config/base.js → esm2022/compat/remote-config/base.mjs} +0 -0
  440. /package/{esm2015/compat/remote-config/interfaces.js → esm2022/compat/remote-config/interfaces.mjs} +0 -0
  441. /package/{esm2015/compat/remote-config/public_api.js → esm2022/compat/remote-config/public_api.mjs} +0 -0
  442. /package/{esm2015/compat/storage/angular-fire-compat-storage.js → esm2022/compat/storage/angular-fire-compat-storage.mjs} +0 -0
  443. /package/{esm2015/compat/storage/interfaces.js → esm2022/compat/storage/interfaces.mjs} +0 -0
  444. /package/{esm2015/compat/storage/public_api.js → esm2022/compat/storage/public_api.mjs} +0 -0
  445. /package/{esm2015/database/angular-fire-database.js → esm2022/database/angular-fire-database.mjs} +0 -0
  446. /package/{esm2015/database/firebase.js → esm2022/database/firebase.mjs} +0 -0
  447. /package/{esm2015/database/public_api.js → esm2022/database/public_api.mjs} +0 -0
  448. /package/{esm2015/database/rxfire.js → esm2022/database/rxfire.mjs} +0 -0
  449. /package/{esm2015/firestore/angular-fire-firestore.js → esm2022/firestore/angular-fire-firestore.mjs} +0 -0
  450. /package/{esm2015/firestore/lite/angular-fire-firestore-lite.js → esm2022/firestore/lite/angular-fire-firestore-lite.mjs} +0 -0
  451. /package/{esm2015/firestore/lite/public_api.js → esm2022/firestore/lite/public_api.mjs} +0 -0
  452. /package/{esm2015/firestore/public_api.js → esm2022/firestore/public_api.mjs} +0 -0
  453. /package/{esm2015/functions/angular-fire-functions.js → esm2022/functions/angular-fire-functions.mjs} +0 -0
  454. /package/{esm2015/functions/firebase.js → esm2022/functions/firebase.mjs} +0 -0
  455. /package/{esm2015/functions/public_api.js → esm2022/functions/public_api.mjs} +0 -0
  456. /package/{esm2015/functions/rxfire.js → esm2022/functions/rxfire.mjs} +0 -0
  457. /package/{esm2015/messaging/angular-fire-messaging.js → esm2022/messaging/angular-fire-messaging.mjs} +0 -0
  458. /package/{esm2015/messaging/firebase.js → esm2022/messaging/firebase.mjs} +0 -0
  459. /package/{esm2015/messaging/public_api.js → esm2022/messaging/public_api.mjs} +0 -0
  460. /package/{esm2015/performance/angular-fire-performance.js → esm2022/performance/angular-fire-performance.mjs} +0 -0
  461. /package/{esm2015/performance/firebase.js → esm2022/performance/firebase.mjs} +0 -0
  462. /package/{esm2015/performance/public_api.js → esm2022/performance/public_api.mjs} +0 -0
  463. /package/{esm2015/performance/rxfire.js → esm2022/performance/rxfire.mjs} +0 -0
  464. /package/{esm2015/public_api.js → esm2022/public_api.mjs} +0 -0
  465. /package/{esm2015/remote-config/angular-fire-remote-config.js → esm2022/remote-config/angular-fire-remote-config.mjs} +0 -0
  466. /package/{esm2015/remote-config/firebase.js → esm2022/remote-config/firebase.mjs} +0 -0
  467. /package/{esm2015/remote-config/public_api.js → esm2022/remote-config/public_api.mjs} +0 -0
  468. /package/{esm2015/remote-config/rxfire.js → esm2022/remote-config/rxfire.mjs} +0 -0
  469. /package/{esm2015/storage/angular-fire-storage.js → esm2022/storage/angular-fire-storage.mjs} +0 -0
  470. /package/{esm2015/storage/firebase.js → esm2022/storage/firebase.mjs} +0 -0
  471. /package/{esm2015/storage/public_api.js → esm2022/storage/public_api.mjs} +0 -0
  472. /package/{esm2015/storage/rxfire.js → esm2022/storage/rxfire.mjs} +0 -0
  473. /package/firestore/{angular-fire-firestore.d.ts → index.d.ts} +0 -0
  474. /package/firestore/lite/{angular-fire-firestore-lite.d.ts → index.d.ts} +0 -0
  475. /package/functions/{angular-fire-functions.d.ts → index.d.ts} +0 -0
  476. /package/{angular-fire.d.ts → index.d.ts} +0 -0
  477. /package/messaging/{angular-fire-messaging.d.ts → index.d.ts} +0 -0
  478. /package/performance/{angular-fire-performance.d.ts → index.d.ts} +0 -0
  479. /package/remote-config/{angular-fire-remote-config.d.ts → index.d.ts} +0 -0
  480. /package/storage/{angular-fire-storage.d.ts → index.d.ts} +0 -0
@@ -0,0 +1,81 @@
1
+ import { Inject, Injectable, InjectionToken, NgZone, Optional, PLATFORM_ID } from '@angular/core';
2
+ import { ɵAngularFireSchedulers } from '@angular/fire';
3
+ import { ɵapplyMixins, ɵlazySDKProxy } from '@angular/fire/compat';
4
+ import { FIREBASE_APP_NAME, FIREBASE_OPTIONS, ɵcacheInstance, ɵfirebaseAppFactory } from '@angular/fire/compat';
5
+ import { isSupported } from 'firebase/messaging';
6
+ import { EMPTY, Observable, concat, of } from 'rxjs';
7
+ import { catchError, defaultIfEmpty, map, mergeMap, observeOn, shareReplay, subscribeOn, switchMap, switchMapTo } from 'rxjs/operators';
8
+ import { proxyPolyfillCompat } from './base';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "@angular/fire";
11
+ export const VAPID_KEY = new InjectionToken('angularfire2.messaging.vapid-key');
12
+ export const SERVICE_WORKER = new InjectionToken('angularfire2.messaging.service-worker-registeration');
13
+ export class AngularFireMessaging {
14
+ requestPermission;
15
+ getToken;
16
+ tokenChanges;
17
+ messages;
18
+ requestToken;
19
+ deleteToken;
20
+ constructor(options, name,
21
+ // eslint-disable-next-line @typescript-eslint/ban-types
22
+ platformId, zone, schedulers, vapidKey, _serviceWorker) {
23
+ const serviceWorker = _serviceWorker;
24
+ const messaging = of(undefined).pipe(subscribeOn(schedulers.outsideAngular), observeOn(schedulers.insideAngular), switchMap(isSupported), switchMap(supported => supported ? import('firebase/compat/messaging') : EMPTY), map(() => ɵfirebaseAppFactory(options, zone, name)), switchMap(app => ɵcacheInstance(`${app.name}.messaging`, 'AngularFireMessaging', app.name, () => {
25
+ return of(app.messaging());
26
+ }, [])), shareReplay({ bufferSize: 1, refCount: false }));
27
+ this.requestPermission = messaging.pipe(subscribeOn(schedulers.outsideAngular), observeOn(schedulers.insideAngular), switchMap(() => Notification.requestPermission()));
28
+ this.getToken = messaging.pipe(subscribeOn(schedulers.outsideAngular), observeOn(schedulers.insideAngular), switchMap(async (messaging) => {
29
+ if (Notification.permission === 'granted') {
30
+ // eslint-disable-next-line @typescript-eslint/no-misused-promises
31
+ const serviceWorkerRegistration = serviceWorker ? await serviceWorker : null;
32
+ return await messaging.getToken({ vapidKey, serviceWorkerRegistration });
33
+ }
34
+ else {
35
+ return null;
36
+ }
37
+ }));
38
+ const notificationPermission$ = new Observable(emitter => {
39
+ navigator.permissions.query({ name: 'notifications' }).then(notificationPerm => {
40
+ notificationPerm.onchange = () => emitter.next();
41
+ });
42
+ });
43
+ const tokenChange$ = messaging.pipe(subscribeOn(schedulers.outsideAngular), observeOn(schedulers.insideAngular), switchMapTo(notificationPermission$), switchMapTo(this.getToken));
44
+ this.tokenChanges = messaging.pipe(subscribeOn(schedulers.outsideAngular), observeOn(schedulers.insideAngular), switchMap(() => concat(this.getToken, tokenChange$)));
45
+ this.messages = messaging.pipe(subscribeOn(schedulers.outsideAngular), observeOn(schedulers.insideAngular), switchMap(messaging => new Observable(emitter => messaging.onMessage(emitter))));
46
+ this.requestToken = messaging.pipe(subscribeOn(schedulers.outsideAngular), observeOn(schedulers.insideAngular), switchMap(() => this.requestPermission), catchError(() => of(null)), mergeMap(() => this.tokenChanges));
47
+ this.deleteToken = () => messaging.pipe(subscribeOn(schedulers.outsideAngular), observeOn(schedulers.insideAngular), switchMap(messaging => messaging.deleteToken()), defaultIfEmpty(false));
48
+ return ɵlazySDKProxy(this, messaging, zone);
49
+ }
50
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: AngularFireMessaging, deps: [{ token: FIREBASE_OPTIONS }, { token: FIREBASE_APP_NAME, optional: true }, { token: PLATFORM_ID }, { token: i0.NgZone }, { token: i1.ɵAngularFireSchedulers }, { token: VAPID_KEY, optional: true }, { token: SERVICE_WORKER, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
51
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: AngularFireMessaging, providedIn: 'any' });
52
+ }
53
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: AngularFireMessaging, decorators: [{
54
+ type: Injectable,
55
+ args: [{
56
+ providedIn: 'any'
57
+ }]
58
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
59
+ type: Inject,
60
+ args: [FIREBASE_OPTIONS]
61
+ }] }, { type: undefined, decorators: [{
62
+ type: Optional
63
+ }, {
64
+ type: Inject,
65
+ args: [FIREBASE_APP_NAME]
66
+ }] }, { type: Object, decorators: [{
67
+ type: Inject,
68
+ args: [PLATFORM_ID]
69
+ }] }, { type: i0.NgZone }, { type: i1.ɵAngularFireSchedulers }, { type: undefined, decorators: [{
70
+ type: Optional
71
+ }, {
72
+ type: Inject,
73
+ args: [VAPID_KEY]
74
+ }] }, { type: undefined, decorators: [{
75
+ type: Optional
76
+ }, {
77
+ type: Inject,
78
+ args: [SERVICE_WORKER]
79
+ }] }]; } });
80
+ ɵapplyMixins(AngularFireMessaging, [proxyPolyfillCompat]);
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBhdC9tZXNzYWdpbmcvbWVzc2FnaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkQsT0FBTyxFQUFpQixZQUFZLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBR2hILE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hJLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFFBQVEsQ0FBQzs7O0FBRTdDLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxJQUFJLGNBQWMsQ0FBUyxrQ0FBa0MsQ0FBQyxDQUFDO0FBQ3hGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FBcUMscURBQXFELENBQUMsQ0FBQztBQVM1SSxNQUFNLE9BQU8sb0JBQW9CO0lBRWYsaUJBQWlCLENBQXFDO0lBQ3RELFFBQVEsQ0FBNEI7SUFDcEMsWUFBWSxDQUE0QjtJQUN4QyxRQUFRLENB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Q0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsRUFDL0MsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUN0QixDQUFDO1FBRUYsT0FBTyxhQUFhLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM5QyxDQUFDO3dHQW5HVSxvQkFBb0Isa0JBVXJCLGdCQUFnQixhQUNKLGlCQUFpQiw2QkFFN0IsV0FBVyx5RUFHQyxTQUFTLDZCQUNULGNBQWM7NEdBakJ6QixvQkFBb0IsY0FGbkIsS0FBSzs7NEZBRU4sb0JBQW9CO2tCQUhoQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxLQUFLO2lCQUNsQjs7MEJBV0ksTUFBTTsyQkFBQyxnQkFBZ0I7OzBCQUN2QixRQUFROzswQkFBSSxNQUFNOzJCQUFDLGlCQUFpQjs7MEJBRXBDLE1BQU07MkJBQUMsV0FBVzs7MEJBR2xCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsU0FBUzs7MEJBQzVCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsY0FBYzs7QUFzRnRDLFlBQVksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4sIE5nWm9uZSwgT3B0aW9uYWwsIFBMQVRGT1JNX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyDJtUFuZ3VsYXJGaXJlU2NoZWR1bGVycyB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUnO1xuaW1wb3J0IHsgybVQcm9taXNlUHJveHksIMm1YXBwbHlNaXhpbnMsIMm1bGF6eVNES1Byb3h5IH0gZnJvbSAnQGFuZ3VsYXIvZmlyZS9jb21wYXQnO1xuaW1wb3J0IHsgRklSRUJBU0VfQVBQX05BTUUsIEZJUkVCQVNFX09QVElPTlMsIMm1Y2FjaGVJbnN0YW5jZSwgybVmaXJlYmFzZUFwcEZhY3RvcnkgfSBmcm9tICdAYW5ndWxhci9maXJlL2NvbXBhdCc7XG5pbXBvcnQgeyBGaXJlYmFzZU9wdGlvbnMgfSBmcm9tICdmaXJlYmFzZS9hcHAnO1xuaW1wb3J0IGZpcmViYXNlIGZyb20gJ2ZpcmViYXNlL2NvbXBhdC9hcHAnO1xuaW1wb3J0IHsgaXNTdXBwb3J0ZWQgfSBmcm9tICdmaXJlYmFzZS9tZXNzYWdpbmcnO1xuaW1wb3J0IHsgRU1QVFksIE9ic2VydmFibGUsIGNvbmNhdCwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGRlZmF1bHRJZkVtcHR5LCBtYXAsIG1lcmdlTWFwLCBvYnNlcnZlT24sIHNoYXJlUmVwbGF5LCBzdWJzY3JpYmVPbiwgc3dpdGNoTWFwLCBzd2l0Y2hNYXBUbyB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IHByb3h5UG9seWZpbGxDb21wYXQgfSBmcm9tICcuL2Jhc2UnO1xuXG5leHBvcnQgY29uc3QgVkFQSURfS0VZID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oJ2FuZ3VsYXJmaXJlMi5tZXNzYWdpbmcudmFwaWQta2V5Jyk7XG5leHBvcnQgY29uc3QgU0VSVklDRV9XT1JLRVIgPSBuZXcgSW5qZWN0aW9uVG9rZW48UHJvbWlzZTxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uPj4oJ2FuZ3VsYXJmaXJlMi5tZXNzYWdpbmcuc2VydmljZS13b3JrZXItcmVnaXN0ZXJhdGlvbicpO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWludGVyZmFjZVxuZXhwb3J0IGludGVyZmFjZSBBbmd1bGFyRmlyZU1lc3NhZ2luZyBleHRlbmRzIE9taXQ8ybVQcm9taXNlUHJveHk8ZmlyZWJhc2UubWVzc2FnaW5nLk1lc3NhZ2luZz4sICdkZWxldGVUb2tlbicgfCAnZ2V0VG9rZW4nIHwgJ3JlcXVlc3RQZXJtaXNzaW9uJz4ge1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdhbnknXG59KVxuZXhwb3J0IGNsYXNzIEFuZ3VsYXJGaXJlTWVzc2FnaW5nIHtcblxuICBwdWJsaWMgcmVhZG9ubHkgcmVxdWVzdFBlcm1pc3Npb246IE9ic2VydmFibGU8Tm90aWZpY2F0aW9uUGVybWlzc2lvbj47XG4gIHB1YmxpYyByZWFkb25seSBnZXRUb2tlbjogT2JzZXJ2YWJsZTxzdHJpbmcgfCBudWxsPjtcbiAgcHVibGljIHJlYWRvbmx5IHRva2VuQ2hhbmdlczogT2JzZXJ2YWJsZTxzdHJpbmcgfCBudWxsPjtcbiAgcHVibGljIHJlYWRvbmx5IG1lc3NhZ2VzOiBPYnNlcnZhYmxlPGZpcmViYXNlLm1lc3NhZ2luZy5NZXNzYWdlUGF5bG9hZD47XG4gIHB1YmxpYyByZWFkb25seSByZXF1ZXN0VG9rZW46IE9ic2VydmFibGU8c3RyaW5nIHwgbnVsbD47XG4gIHB1YmxpYyByZWFkb25seSBkZWxldGVUb2tlbjogKHRva2VuOiBzdHJpbmcpID0+IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChGSVJFQkFTRV9PUFRJT05TKSBvcHRpb25zOiBGaXJlYmFzZU9wdGlvbnMsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChGSVJFQkFTRV9BUFBfTkFNRSkgbmFtZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10eXBlc1xuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHBsYXRmb3JtSWQ6IE9iamVjdCxcbiAgICB6b25lOiBOZ1pvbmUsXG4gICAgc2NoZWR1bGVyczogybVBbmd1bGFyRmlyZVNjaGVkdWxlcnMsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChWQVBJRF9LRVkpIHZhcGlkS2V5OiBzdHJpbmd8bnVsbCxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFNFUlZJQ0VfV09SS0VSKSBfc2VydmljZVdvcmtlcjogYW55LFxuICApIHtcbiAgICBjb25zdCBzZXJ2aWNlV29ya2VyOiBQcm9taXNlPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24+IHwgbnVsbCA9IF9zZXJ2aWNlV29ya2VyO1xuXG4gICAgY29uc3QgbWVzc2FnaW5nID0gb2YodW5kZWZpbmVkKS5waXBlKFxuICAgICAgc3Vic2NyaWJlT24oc2NoZWR1bGVycy5vdXRzaWRlQW5ndWxhciksXG4gICAgICBvYnNlcnZlT24oc2NoZWR1bGVycy5pbnNpZGVBbmd1bGFyKSxcbiAgICAgIHN3aXRjaE1hcChpc1N1cHBvcnRlZCksXG4gICAgICBzd2l0Y2hNYXAoc3VwcG9ydGVkID0+IHN1cHBvcnRlZCA/IGltcG9ydCgnZmlyZWJhc2UvY29tcGF0L21lc3NhZ2luZycpIDogRU1QVFkpLFxuICAgICAgbWFwKCgpID0+IMm1ZmlyZWJhc2VBcHBGYWN0b3J5KG9wdGlvbnMsIHpvbmUsIG5hbWUpKSxcbiAgICAgIHN3aXRjaE1hcChhcHAgPT4gybVjYWNoZUluc3RhbmNlKGAke2FwcC5uYW1lfS5tZXNzYWdpbmdgLCAnQW5ndWxhckZpcmVNZXNzYWdpbmcnLCBhcHAubmFtZSwgKCkgPT4ge1xuICAgICAgICByZXR1cm4gb2YoYXBwLm1lc3NhZ2luZygpKTtcbiAgICAgIH0sIFtdKSksXG4gICAgICBzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiBmYWxzZSB9KVxuICAgICk7XG5cblxuICAgIHRoaXMucmVxdWVzdFBlcm1pc3Npb24gPSBtZXNzYWdpbmcucGlwZShcbiAgICAgIHN1YnNjcmliZU9uKHNjaGVkdWxlcnMub3V0c2lkZUFuZ3VsYXIpLFxuICAgICAgb2JzZXJ2ZU9uKHNjaGVkdWxlcnMuaW5zaWRlQW5ndWxhciksXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gTm90aWZpY2F0aW9uLnJlcXVlc3RQZXJtaXNzaW9uKCkpXG4gICAgKTtcblxuICAgIHRoaXMuZ2V0VG9rZW4gPSBtZXNzYWdpbmcucGlwZShcbiAgICAgIHN1YnNjcmliZU9uKHNjaGVkdWxlcnMub3V0c2lkZUFuZ3VsYXIpLFxuICAgICAgb2JzZXJ2ZU9uKHNjaGVkdWxlcnMuaW5zaWRlQW5ndWxhciksXG4gICAgICBzd2l0Y2hNYXAoYXN5bmMgbWVzc2FnaW5nID0+IHtcbiAgICAgICAgaWYgKE5vdGlmaWNhdGlvbi5wZXJtaXNzaW9uID09PSAnZ3JhbnRlZCcpIHtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW1pc3VzZWQtcHJvbWlzZXNcbiAgICAgICAgICBjb25zdCBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uID0gc2VydmljZVdvcmtlciA/IGF3YWl0IHNlcnZpY2VXb3JrZXIgOiBudWxsO1xuICAgICAgICAgIHJldHVybiBhd2FpdCBtZXNzYWdpbmcuZ2V0VG9rZW4oeyB2YXBpZEtleSwgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbiB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuXG4gICAgY29uc3Qgbm90aWZpY2F0aW9uUGVybWlzc2lvbiQgPSBuZXcgT2JzZXJ2YWJsZTxzdHJpbmc+KGVtaXR0ZXIgPT4ge1xuICAgICAgbmF2aWdhdG9yLnBlcm1pc3Npb25zLnF1ZXJ5KHsgbmFtZTogJ25vdGlmaWNhdGlvbnMnIH0pLnRoZW4obm90aWZpY2F0aW9uUGVybSA9PiB7XG4gICAgICAgIG5vdGlmaWNhdGlvblBlcm0ub25jaGFuZ2UgPSAoKSA9PiBlbWl0dGVyLm5leHQoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG5cbiAgICBjb25zdCB0b2tlbkNoYW5nZSQgPSBtZXNzYWdpbmcucGlwZShcbiAgICAgIHN1YnNjcmliZU9uKHNjaGVkdWxlcnMub3V0c2lkZUFuZ3VsYXIpLFxuICAgICAgb2JzZXJ2ZU9uKHNjaGVkdWxlcnMuaW5zaWRlQW5ndWxhciksXG4gICAgICBzd2l0Y2hNYXBUbyhub3RpZmljYXRpb25QZXJtaXNzaW9uJCksXG4gICAgICBzd2l0Y2hNYXBUbyh0aGlzLmdldFRva2VuKVxuICAgICk7XG5cbiAgICB0aGlzLnRva2VuQ2hhbmdlcyA9IG1lc3NhZ2luZy5waXBlKFxuICAgICAgc3Vic2NyaWJlT24oc2NoZWR1bGVycy5vdXRzaWRlQW5ndWxhciksXG4gICAgICBvYnNlcnZlT24oc2NoZWR1bGVycy5pbnNpZGVBbmd1bGFyKSxcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiBjb25jYXQodGhpcy5nZXRUb2tlbiwgdG9rZW5DaGFuZ2UkKSlcbiAgICApO1xuXG5cbiAgICB0aGlzLm1lc3NhZ2VzID0gbWVzc2FnaW5nLnBpcGUoXG4gICAgICBzdWJzY3JpYmVPbihzY2hlZHVsZXJzLm91dHNpZGVBbmd1bGFyKSxcbiAgICAgIG9ic2VydmVPbihzY2hlZHVsZXJzLmluc2lkZUFuZ3VsYXIpLFxuICAgICAgc3dpdGNoTWFwKG1lc3NhZ2luZyA9PiBuZXcgT2JzZXJ2YWJsZTxmaXJlYmFzZS5tZXNzYWdpbmcuTWVzc2FnZVBheWxvYWQ+KGVtaXR0ZXIgPT5cbiAgICAgICAgbWVzc2FnaW5nLm9uTWVzc2FnZShlbWl0dGVyKVxuICAgICAgKSksXG4gICAgKTtcblxuICAgIHRoaXMucmVxdWVzdFRva2VuID0gbWVzc2FnaW5nLnBpcGUoXG4gICAgICBzdWJzY3JpYmVPbihzY2hlZHVsZXJzLm91dHNpZGVBbmd1bGFyKSxcbiAgICAgIG9ic2VydmVPbihzY2hlZHVsZXJzLmluc2lkZUFuZ3VsYXIpLFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMucmVxdWVzdFBlcm1pc3Npb24pLFxuICAgICAgY2F0Y2hFcnJvcigoKSA9PiBvZihudWxsKSksXG4gICAgICBtZXJnZU1hcCgoKSA9PiB0aGlzLnRva2VuQ2hhbmdlcylcbiAgICApO1xuXG4gICAgdGhpcy5kZWxldGVUb2tlbiA9ICgpID0+IG1lc3NhZ2luZy5waXBlKFxuICAgICAgc3Vic2NyaWJlT24oc2NoZWR1bGVycy5vdXRzaWRlQW5ndWxhciksXG4gICAgICBvYnNlcnZlT24oc2NoZWR1bGVycy5pbnNpZGVBbmd1bGFyKSxcbiAgICAgIHN3aXRjaE1hcChtZXNzYWdpbmcgPT4gbWVzc2FnaW5nLmRlbGV0ZVRva2VuKCkpLFxuICAgICAgZGVmYXVsdElmRW1wdHkoZmFsc2UpXG4gICAgKTtcblxuICAgIHJldHVybiDJtWxhenlTREtQcm94eSh0aGlzLCBtZXNzYWdpbmcsIHpvbmUpO1xuICB9XG5cbn1cblxuybVhcHBseU1peGlucyhBbmd1bGFyRmlyZU1lc3NhZ2luZywgW3Byb3h5UG9seWZpbGxDb21wYXRdKTtcbiJdfQ==
@@ -1,20 +1,20 @@
1
1
  import { NgModule } from '@angular/core';
2
- import { AngularFireMessaging } from './messaging';
3
- import firebase from 'firebase/compat/app';
4
2
  import { VERSION } from '@angular/fire';
3
+ import firebase from 'firebase/compat/app';
4
+ import { AngularFireMessaging } from './messaging';
5
5
  import * as i0 from "@angular/core";
6
6
  export class AngularFireMessagingModule {
7
7
  constructor() {
8
8
  firebase.registerVersion('angularfire', VERSION.full, 'fcm-compat');
9
9
  }
10
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: AngularFireMessagingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
11
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.10", ngImport: i0, type: AngularFireMessagingModule });
12
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: AngularFireMessagingModule, providers: [AngularFireMessaging] });
10
13
  }
11
- AngularFireMessagingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0, type: AngularFireMessagingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
12
- AngularFireMessagingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0, type: AngularFireMessagingModule });
13
- AngularFireMessagingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0, type: AngularFireMessagingModule, providers: [AngularFireMessaging] });
14
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0, type: AngularFireMessagingModule, decorators: [{
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: AngularFireMessagingModule, decorators: [{
15
15
  type: NgModule,
16
16
  args: [{
17
17
  providers: [AngularFireMessaging]
18
18
  }]
19
19
  }], ctorParameters: function () { return []; } });
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnaW5nLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wYXQvbWVzc2FnaW5nL21lc3NhZ2luZy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbkQsT0FBTyxRQUFRLE1BQU0scUJBQXFCLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLeEMsTUFBTSxPQUFPLDBCQUEwQjtJQUNyQztRQUNFLFFBQVEsQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDdEUsQ0FBQzs7dUhBSFUsMEJBQTBCO3dIQUExQiwwQkFBMEI7d0hBQTFCLDBCQUEwQixhQUYxQixDQUFFLG9CQUFvQixDQUFFOzJGQUV4QiwwQkFBMEI7a0JBSHRDLFFBQVE7bUJBQUM7b0JBQ1IsU0FBUyxFQUFFLENBQUUsb0JBQW9CLENBQUU7aUJBQ3BDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFuZ3VsYXJGaXJlTWVzc2FnaW5nIH0gZnJvbSAnLi9tZXNzYWdpbmcnO1xuaW1wb3J0IGZpcmViYXNlIGZyb20gJ2ZpcmViYXNlL2NvbXBhdC9hcHAnO1xuaW1wb3J0IHsgVkVSU0lPTiB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUnO1xuXG5ATmdNb2R1bGUoe1xuICBwcm92aWRlcnM6IFsgQW5ndWxhckZpcmVNZXNzYWdpbmcgXVxufSlcbmV4cG9ydCBjbGFzcyBBbmd1bGFyRmlyZU1lc3NhZ2luZ01vZHVsZSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGZpcmViYXNlLnJlZ2lzdGVyVmVyc2lvbignYW5ndWxhcmZpcmUnLCBWRVJTSU9OLmZ1bGwsICdmY20tY29tcGF0Jyk7XG4gIH1cbn1cbiJdfQ==
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnaW5nLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wYXQvbWVzc2FnaW5nL21lc3NhZ2luZy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hDLE9BQU8sUUFBUSxNQUFNLHFCQUFxQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUFLbkQsTUFBTSxPQUFPLDBCQUEwQjtJQUNyQztRQUNFLFFBQVEsQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDdEUsQ0FBQzt3R0FIVSwwQkFBMEI7eUdBQTFCLDBCQUEwQjt5R0FBMUIsMEJBQTBCLGFBRjFCLENBQUUsb0JBQW9CLENBQUU7OzRGQUV4QiwwQkFBMEI7a0JBSHRDLFFBQVE7bUJBQUM7b0JBQ1IsU0FBUyxFQUFFLENBQUUsb0JBQW9CLENBQUU7aUJBQ3BDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFZFUlNJT04gfSBmcm9tICdAYW5ndWxhci9maXJlJztcbmltcG9ydCBmaXJlYmFzZSBmcm9tICdmaXJlYmFzZS9jb21wYXQvYXBwJztcbmltcG9ydCB7IEFuZ3VsYXJGaXJlTWVzc2FnaW5nIH0gZnJvbSAnLi9tZXNzYWdpbmcnO1xuXG5ATmdNb2R1bGUoe1xuICBwcm92aWRlcnM6IFsgQW5ndWxhckZpcmVNZXNzYWdpbmcgXVxufSlcbmV4cG9ydCBjbGFzcyBBbmd1bGFyRmlyZU1lc3NhZ2luZ01vZHVsZSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGZpcmViYXNlLnJlZ2lzdGVyVmVyc2lvbignYW5ndWxhcmZpcmUnLCBWRVJTSU9OLmZ1bGwsICdmY20tY29tcGF0Jyk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,105 @@
1
+ import { isPlatformBrowser } from '@angular/common';
2
+ import { Inject, Injectable, InjectionToken, NgZone, Optional, PLATFORM_ID } from '@angular/core';
3
+ import { ɵapplyMixins, ɵcacheInstance, ɵlazySDKProxy } from '@angular/fire/compat';
4
+ import { FirebaseApp } from '@angular/fire/compat';
5
+ import { EMPTY, Observable, of } from 'rxjs';
6
+ import { map, shareReplay, switchMap, tap } from 'rxjs/operators';
7
+ import { proxyPolyfillCompat } from './base';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@angular/fire/compat";
10
+ export const INSTRUMENTATION_ENABLED = new InjectionToken('angularfire2.performance.instrumentationEnabled');
11
+ export const DATA_COLLECTION_ENABLED = new InjectionToken('angularfire2.performance.dataCollectionEnabled');
12
+ export class AngularFirePerformance {
13
+ zone;
14
+ performance;
15
+ constructor(app, instrumentationEnabled, dataCollectionEnabled, zone,
16
+ // eslint-disable-next-line @typescript-eslint/ban-types
17
+ platformId) {
18
+ this.zone = zone;
19
+ this.performance = of(undefined).pipe(switchMap(() => isPlatformBrowser(platformId) ? zone.runOutsideAngular(() => import('firebase/compat/performance')) : EMPTY), map(() => ɵcacheInstance(`performance`, 'AngularFirePerformance', app.name, () => {
20
+ const performance = zone.runOutsideAngular(() => app.performance());
21
+ if (instrumentationEnabled === false) {
22
+ performance.instrumentationEnabled = false;
23
+ }
24
+ if (dataCollectionEnabled === false) {
25
+ performance.dataCollectionEnabled = false;
26
+ }
27
+ return performance;
28
+ }, [instrumentationEnabled, dataCollectionEnabled])), shareReplay({ bufferSize: 1, refCount: false }));
29
+ return ɵlazySDKProxy(this, this.performance, zone);
30
+ }
31
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: AngularFirePerformance, deps: [{ token: i1.FirebaseApp }, { token: INSTRUMENTATION_ENABLED, optional: true }, { token: DATA_COLLECTION_ENABLED, optional: true }, { token: i0.NgZone }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable });
32
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: AngularFirePerformance, providedIn: 'any' });
33
+ }
34
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: AngularFirePerformance, decorators: [{
35
+ type: Injectable,
36
+ args: [{
37
+ providedIn: 'any'
38
+ }]
39
+ }], ctorParameters: function () { return [{ type: i1.FirebaseApp }, { type: undefined, decorators: [{
40
+ type: Optional
41
+ }, {
42
+ type: Inject,
43
+ args: [INSTRUMENTATION_ENABLED]
44
+ }] }, { type: undefined, decorators: [{
45
+ type: Optional
46
+ }, {
47
+ type: Inject,
48
+ args: [DATA_COLLECTION_ENABLED]
49
+ }] }, { type: i0.NgZone }, { type: Object, decorators: [{
50
+ type: Inject,
51
+ args: [PLATFORM_ID]
52
+ }] }]; } });
53
+ const trace$ = (traceId) => {
54
+ // eslint-disable-next-line @typescript-eslint/prefer-optional-chain
55
+ if (typeof window !== 'undefined' && window.performance?.mark) {
56
+ const entries = window.performance.getEntriesByName(traceId, 'measure') || [];
57
+ const startMarkName = `_${traceId}Start[${entries.length}]`;
58
+ const endMarkName = `_${traceId}End[${entries.length}]`;
59
+ return new Observable(emitter => {
60
+ window.performance.mark(startMarkName);
61
+ emitter.next();
62
+ return {
63
+ unsubscribe: () => {
64
+ window.performance.mark(endMarkName);
65
+ window.performance.measure(traceId, startMarkName, endMarkName);
66
+ }
67
+ };
68
+ });
69
+ }
70
+ else {
71
+ return EMPTY;
72
+ }
73
+ };
74
+ export const traceUntil = (name, test, options) => (source$) => new Observable(subscriber => {
75
+ const traceSubscription = trace$(name).subscribe();
76
+ return source$.pipe(tap(a => test(a) && traceSubscription.unsubscribe(), () => undefined, () => options && options.orComplete && traceSubscription.unsubscribe())).subscribe(subscriber);
77
+ });
78
+ export const traceWhile = (name, test, options) => (source$) => new Observable(subscriber => {
79
+ let traceSubscription;
80
+ return source$.pipe(tap(a => {
81
+ if (test(a)) {
82
+ traceSubscription = traceSubscription || trace$(name).subscribe();
83
+ }
84
+ else {
85
+ if (traceSubscription) {
86
+ traceSubscription.unsubscribe();
87
+ }
88
+ traceSubscription = undefined;
89
+ }
90
+ }, () => undefined, () => options && options.orComplete && traceSubscription && traceSubscription.unsubscribe())).subscribe(subscriber);
91
+ });
92
+ export const traceUntilComplete = (name) => (source$) => new Observable(subscriber => {
93
+ const traceSubscription = trace$(name).subscribe();
94
+ return source$.pipe(tap(() => undefined, () => undefined, () => traceSubscription.unsubscribe())).subscribe(subscriber);
95
+ });
96
+ export const traceUntilFirst = (name) => (source$) => new Observable(subscriber => {
97
+ const traceSubscription = trace$(name).subscribe();
98
+ return source$.pipe(tap(() => traceSubscription.unsubscribe(), () => undefined, () => undefined)).subscribe(subscriber);
99
+ });
100
+ export const trace = (name) => (source$) => new Observable(subscriber => {
101
+ const traceSubscription = trace$(name).subscribe();
102
+ return source$.pipe(tap(() => traceSubscription.unsubscribe(), () => undefined, () => traceSubscription.unsubscribe())).subscribe(subscriber);
103
+ });
104
+ ɵapplyMixins(AngularFirePerformance, [proxyPolyfillCompat]);
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyZm9ybWFuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcGF0L3BlcmZvcm1hbmNlL3BlcmZvcm1hbmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQWlCLFlBQVksRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRW5ELE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFnQixFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0QsT0FBTyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFFBQVEsQ0FBQzs7O0FBRTdDLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLElBQUksY0FBYyxDQUFVLGlEQUFpRCxDQUFDLENBQUM7QUFDdEgsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxjQUFjLENBQVUsZ0RBQWdELENBQUMsQ0FBQztBQVNySCxNQUFNLE9BQU8sc0JBQXNCO0lBUXZCO0lBTk8sV0FBVyxDQUErQztJQUUzRSxZQUNFLEdBQWdCLEVBQzZCLHNCQUFzQyxFQUN0QyxxQkFBcUMsRUFDMUUsSUFBWTtJQUNwQix3REFBd0Q7SUFDbkMsVUFBa0I7UUFGL0IsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUtwQixJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJ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QixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuRCxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQ2pCLEdBQUcsQ0FDRCxHQUFHLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsRUFDckMsR0FBRyxFQUFFLENBQUMsU0FBUyxFQUNmLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxDQUN0QyxDQUNGLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQzFCLENBQUMsQ0FBQyxDQUFDO0FBRUgsWUFBWSxDQUFDLHNCQUFzQixFQUFFLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgTmdab25lLCBPcHRpb25hbCwgUExBVEZPUk1fSUQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IMm1UHJvbWlzZVByb3h5LCDJtWFwcGx5TWl4aW5zLCDJtWNhY2hlSW5zdGFuY2UsIMm1bGF6eVNES1Byb3h5IH0gZnJvbSAnQGFuZ3VsYXIvZmlyZS9jb21wYXQnO1xuaW1wb3J0IHsgRmlyZWJhc2VBcHAgfSBmcm9tICdAYW5ndWxhci9maXJlL2NvbXBhdCc7XG5pbXBvcnQgZmlyZWJhc2UgZnJvbSAnZmlyZWJhc2UvY29tcGF0L2FwcCc7XG5pbXBvcnQgeyBFTVBUWSwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCBzaGFyZVJlcGxheSwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBwcm94eVBvbHlmaWxsQ29tcGF0IH0gZnJvbSAnLi9iYXNlJztcblxuZXhwb3J0IGNvbnN0IElOU1RSVU1FTlRBVElPTl9FTkFCTEVEID0gbmV3IEluamVjdGlvblRva2VuPGJvb2xlYW4+KCdhbmd1bGFyZmlyZTIucGVyZm9ybWFuY2UuaW5zdHJ1bWVudGF0aW9uRW5hYmxlZCcpO1xuZXhwb3J0IGNvbnN0IERBVEFfQ09MTEVDVElPTl9FTkFCTEVEID0gbmV3IEluamVjdGlvblRva2VuPGJvb2xlYW4+KCdhbmd1bGFyZmlyZTIucGVyZm9ybWFuY2UuZGF0YUNvbGxlY3Rpb25FbmFibGVkJyk7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktaW50ZXJmYWNlXG5leHBvcnQgaW50ZXJmYWNlIEFuZ3VsYXJGaXJlUGVyZm9ybWFuY2UgZXh0ZW5kcyDJtVByb21pc2VQcm94eTxmaXJlYmFzZS5wZXJmb3JtYW5jZS5QZXJmb3JtYW5jZT4ge1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdhbnknXG59KVxuZXhwb3J0IGNsYXNzIEFuZ3VsYXJGaXJlUGVyZm9ybWFuY2Uge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcGVyZm9ybWFuY2U6IE9ic2VydmFibGU8ZmlyZWJhc2UucGVyZm9ybWFuY2UuUGVyZm9ybWFuY2U+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGFwcDogRmlyZWJhc2VBcHAsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChJTlNUUlVNRU5UQVRJT05fRU5BQkxFRCkgaW5zdHJ1bWVudGF0aW9uRW5hYmxlZDogYm9vbGVhbiB8IG51bGwsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChEQVRBX0NPTExFQ1RJT05fRU5BQkxFRCkgZGF0YUNvbGxlY3Rpb25FbmFibGVkOiBib29sZWFuIHwgbnVsbCxcbiAgICBwcml2YXRlIHpvbmU6IE5nWm9uZSxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10eXBlc1xuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHBsYXRmb3JtSWQ6IE9iamVjdFxuICApIHtcblxuICAgIHRoaXMucGVyZm9ybWFuY2UgPSBvZih1bmRlZmluZWQpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gaXNQbGF0Zm9ybUJyb3dzZXIocGxhdGZvcm1JZCkgPyB6b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IGltcG9ydCgnZmlyZWJhc2UvY29tcGF0L3BlcmZvcm1hbmNlJykpIDogRU1QVFkpLFxuICAgICAgbWFwKCgpID0+IMm1Y2FjaGVJbnN0YW5jZShgcGVyZm9ybWFuY2VgLCAnQW5ndWxhckZpcmVQZXJmb3JtYW5jZScsIGFwcC5uYW1lLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHBlcmZvcm1hbmNlID0gem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiBhcHAucGVyZm9ybWFuY2UoKSk7XG4gICAgICAgIGlmIChpbnN0cnVtZW50YXRpb25FbmFibGVkID09PSBmYWxzZSkge1xuICAgICAgICAgIHBlcmZvcm1hbmNlLmluc3RydW1lbnRhdGlvbkVuYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGF0YUNvbGxlY3Rpb25FbmFibGVkID09PSBmYWxzZSkge1xuICAgICAgICAgIHBlcmZvcm1hbmNlLmRhdGFDb2xsZWN0aW9uRW5hYmxlZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwZXJmb3JtYW5jZTtcbiAgICAgIH0sIFtpbnN0cnVtZW50YXRpb25FbmFibGVkLCBkYXRhQ29sbGVjdGlvbkVuYWJsZWRdKSksXG4gICAgICBzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiBmYWxzZSB9KVxuICAgICk7XG5cbiAgICByZXR1cm4gybVsYXp5U0RLUHJveHkodGhpcywgdGhpcy5wZXJmb3JtYW5jZSwgem9uZSk7XG5cbiAgfVxuXG59XG5cbmNvbnN0IHRyYWNlJCA9ICh0cmFjZUlkOiBzdHJpbmcpID0+IHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9wcmVmZXItb3B0aW9uYWwtY2hhaW5cbiAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5wZXJmb3JtYW5jZT8ubWFyaykge1xuICAgIGNvbnN0IGVudHJpZXMgPSB3aW5kb3cucGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5TmFtZSh0cmFjZUlkLCAnbWVhc3VyZScpIHx8IFtdO1xuICAgIGNvbnN0IHN0YXJ0TWFya05hbWUgPSBgXyR7dHJhY2VJZH1TdGFydFske2VudHJpZXMubGVuZ3RofV1gO1xuICAgIGNvbnN0IGVuZE1hcmtOYW1lID0gYF8ke3RyYWNlSWR9RW5kWyR7ZW50cmllcy5sZW5ndGh9XWA7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPHZvaWQ+KGVtaXR0ZXIgPT4ge1xuICAgICAgd2luZG93LnBlcmZvcm1hbmNlLm1hcmsoc3RhcnRNYXJrTmFtZSk7XG4gICAgICBlbWl0dGVyLm5leHQoKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHVuc3Vic2NyaWJlOiAoKSA9PiB7XG4gICAgICAgICAgd2luZG93LnBlcmZvcm1hbmNlLm1hcmsoZW5kTWFya05hbWUpO1xuICAgICAgICAgIHdpbmRvdy5wZXJmb3JtYW5jZS5tZWFzdXJlKHRyYWNlSWQsIHN0YXJ0TWFya05hbWUsIGVuZE1hcmtOYW1lKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gRU1QVFk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB0cmFjZVVudGlsID0gPFQgPSBhbnk+KFxuICBuYW1lOiBzdHJpbmcsXG4gIHRlc3Q6IChhOiBUKSA9PiBib29sZWFuLFxuICBvcHRpb25zPzogeyBvckNvbXBsZXRlPzogYm9vbGVhbiB9XG4pID0+IChzb3VyY2UkOiBPYnNlcnZhYmxlPFQ+KSA9PiBuZXcgT2JzZXJ2YWJsZTxUPihzdWJzY3JpYmVyID0+IHtcbiAgY29uc3QgdHJhY2VTdWJzY3JpcHRpb24gPSB0cmFjZSQobmFtZSkuc3Vic2NyaWJlKCk7XG4gIHJldHVybiBzb3VyY2UkLnBpcGUoXG4gICAgdGFwKFxuICAgICAgYSA9PiB0ZXN0KGEpICYmIHRyYWNlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksXG4gICAgICAoKSA9PiB1bmRlZmluZWQsXG4gICAgICAoKSA9PiBvcHRpb25zICYmIG9wdGlvbnMub3JDb21wbGV0ZSAmJiB0cmFjZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpXG4gICAgKVxuICApLnN1YnNjcmliZShzdWJzY3JpYmVyKTtcbn0pO1xuXG5leHBvcnQgY29uc3QgdHJhY2VXaGlsZSA9IDxUID0gYW55PihcbiAgbmFtZTogc3RyaW5nLFxuICB0ZXN0OiAoYTogVCkgPT4gYm9vbGVhbixcbiAgb3B0aW9ucz86IHsgb3JDb21wbGV0ZT86IGJvb2xlYW4gfVxuKSA9PiAoc291cmNlJDogT2JzZXJ2YWJsZTxUPikgPT4gbmV3IE9ic2VydmFibGU8VD4oc3Vic2NyaWJlciA9PiB7XG4gIGxldCB0cmFjZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuICByZXR1cm4gc291cmNlJC5waXBlKFxuICAgIHRhcChcbiAgICAgIGEgPT4ge1xuICAgICAgICBpZiAodGVzdChhKSkge1xuICAgICAgICAgIHRyYWNlU3Vic2NyaXB0aW9uID0gdHJhY2VTdWJzY3JpcHRpb24gfHwgdHJhY2UkKG5hbWUpLnN1YnNjcmliZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICh0cmFjZVN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdHJhY2VTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0cmFjZVN1YnNjcmlwdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgICgpID0+IHVuZGVmaW5lZCxcbiAgICAgICgpID0+IG9wdGlvbnMgJiYgb3B0aW9ucy5vckNvbXBsZXRlICYmIHRyYWNlU3Vic2NyaXB0aW9uICYmIHRyYWNlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKClcbiAgICApXG4gICkuc3Vic2NyaWJlKHN1YnNjcmliZXIpO1xufSk7XG5cbmV4cG9ydCBjb25zdCB0cmFjZVVudGlsQ29tcGxldGUgPSA8VCA9IGFueT4obmFtZTogc3RyaW5nKSA9PiAoc291cmNlJDogT2JzZXJ2YWJsZTxUPikgPT4gbmV3IE9ic2VydmFibGU8VD4oc3Vic2NyaWJlciA9PiB7XG4gIGNvbnN0IHRyYWNlU3Vic2NyaXB0aW9uID0gdHJhY2UkKG5hbWUpLnN1YnNjcmliZSgpO1xuICByZXR1cm4gc291cmNlJC5waXBlKFxuICAgIHRhcChcbiAgICAgICgpID0+IHVuZGVmaW5lZCxcbiAgICAgICgpID0+IHVuZGVmaW5lZCxcbiAgICAgICgpID0+IHRyYWNlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKClcbiAgICApXG4gICkuc3Vic2NyaWJlKHN1YnNjcmliZXIpO1xufSk7XG5cbmV4cG9ydCBjb25zdCB0cmFjZVVudGlsRmlyc3QgPSA8VCA9IGFueT4obmFtZTogc3RyaW5nKSA9PiAoc291cmNlJDogT2JzZXJ2YWJsZTxUPikgPT4gbmV3IE9ic2VydmFibGU8VD4oc3Vic2NyaWJlciA9PiB7XG4gIGNvbnN0IHRyYWNlU3Vic2NyaXB0aW9uID0gdHJhY2UkKG5hbWUpLnN1YnNjcmliZSgpO1xuICByZXR1cm4gc291cmNlJC5waXBlKFxuICAgIHRhcChcbiAgICAgICgpID0+IHRyYWNlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksXG4gICAgICAoKSA9PiB1bmRlZmluZWQsXG4gICAgICAoKSA9PiB1bmRlZmluZWQgICAgKVxuICApLnN1YnNjcmliZShzdWJzY3JpYmVyKTtcbn0pO1xuXG5leHBvcnQgY29uc3QgdHJhY2UgPSA8VCA9IGFueT4obmFtZTogc3RyaW5nKSA9PiAoc291cmNlJDogT2JzZXJ2YWJsZTxUPikgPT4gbmV3IE9ic2VydmFibGU8VD4oc3Vic2NyaWJlciA9PiB7XG4gIGNvbnN0IHRyYWNlU3Vic2NyaXB0aW9uID0gdHJhY2UkKG5hbWUpLnN1YnNjcmliZSgpO1xuICByZXR1cm4gc291cmNlJC5waXBlKFxuICAgIHRhcChcbiAgICAgICgpID0+IHRyYWNlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksXG4gICAgICAoKSA9PiB1bmRlZmluZWQsXG4gICAgICAoKSA9PiB0cmFjZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpXG4gICAgKVxuICApLnN1YnNjcmliZShzdWJzY3JpYmVyKTtcbn0pO1xuXG7JtWFwcGx5TWl4aW5zKEFuZ3VsYXJGaXJlUGVyZm9ybWFuY2UsIFtwcm94eVBvbHlmaWxsQ29tcGF0XSk7XG4iXX0=
@@ -0,0 +1,27 @@
1
+ import { NgModule, Optional } from '@angular/core';
2
+ import { VERSION } from '@angular/fire';
3
+ import firebase from 'firebase/compat/app';
4
+ import { AngularFirePerformance } from './performance';
5
+ import { PerformanceMonitoringService } from './performance.service';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "./performance";
8
+ import * as i2 from "./performance.service";
9
+ export class AngularFirePerformanceModule {
10
+ constructor(perf, _) {
11
+ firebase.registerVersion('angularfire', VERSION.full, 'perf-compat');
12
+ // call anything here to get perf loading
13
+ perf.dataCollectionEnabled.then(() => undefined);
14
+ }
15
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: AngularFirePerformanceModule, deps: [{ token: i1.AngularFirePerformance }, { token: i2.PerformanceMonitoringService, optional: true }], target: i0.ɵɵFactoryTarget.NgModule });
16
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.10", ngImport: i0, type: AngularFirePerformanceModule });
17
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: AngularFirePerformanceModule, providers: [AngularFirePerformance] });
18
+ }
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: AngularFirePerformanceModule, decorators: [{
20
+ type: NgModule,
21
+ args: [{
22
+ providers: [AngularFirePerformance]
23
+ }]
24
+ }], ctorParameters: function () { return [{ type: i1.AngularFirePerformance }, { type: i2.PerformanceMonitoringService, decorators: [{
25
+ type: Optional
26
+ }] }]; } });
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyZm9ybWFuY2UubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBhdC9wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4QyxPQUFPLFFBQVEsTUFBTSxxQkFBcUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7QUFLckUsTUFBTSxPQUFPLDRCQUE0QjtJQUN2QyxZQUNFLElBQTRCLEVBQ2hCLENBQStCO1FBRTNDLFFBQVEsQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDckUseUNBQXlDO1FBQ3pDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbkQsQ0FBQzt3R0FSVSw0QkFBNEI7eUdBQTVCLDRCQUE0Qjt5R0FBNUIsNEJBQTRCLGFBRjVCLENBQUUsc0JBQXNCLENBQUU7OzRGQUUxQiw0QkFBNEI7a0JBSHhDLFFBQVE7bUJBQUM7b0JBQ1IsU0FBUyxFQUFFLENBQUUsc0JBQXNCLENBQUU7aUJBQ3RDOzswQkFJSSxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBWRVJTSU9OIH0gZnJvbSAnQGFuZ3VsYXIvZmlyZSc7XG5pbXBvcnQgZmlyZWJhc2UgZnJvbSAnZmlyZWJhc2UvY29tcGF0L2FwcCc7XG5pbXBvcnQgeyBBbmd1bGFyRmlyZVBlcmZvcm1hbmNlIH0gZnJvbSAnLi9wZXJmb3JtYW5jZSc7XG5pbXBvcnQgeyBQZXJmb3JtYW5jZU1vbml0b3JpbmdTZXJ2aWNlIH0gZnJvbSAnLi9wZXJmb3JtYW5jZS5zZXJ2aWNlJztcblxuQE5nTW9kdWxlKHtcbiAgcHJvdmlkZXJzOiBbIEFuZ3VsYXJGaXJlUGVyZm9ybWFuY2UgXVxufSlcbmV4cG9ydCBjbGFzcyBBbmd1bGFyRmlyZVBlcmZvcm1hbmNlTW9kdWxlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcGVyZjogQW5ndWxhckZpcmVQZXJmb3JtYW5jZSxcbiAgICBAT3B0aW9uYWwoKSBfOiBQZXJmb3JtYW5jZU1vbml0b3JpbmdTZXJ2aWNlXG4gICkge1xuICAgIGZpcmViYXNlLnJlZ2lzdGVyVmVyc2lvbignYW5ndWxhcmZpcmUnLCBWRVJTSU9OLmZ1bGwsICdwZXJmLWNvbXBhdCcpO1xuICAgIC8vIGNhbGwgYW55dGhpbmcgaGVyZSB0byBnZXQgcGVyZiBsb2FkaW5nXG4gICAgcGVyZi5kYXRhQ29sbGVjdGlvbkVuYWJsZWQudGhlbigoKSA9PiB1bmRlZmluZWQpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,28 @@
1
+ import { ApplicationRef, Injectable } from '@angular/core';
2
+ import { first, tap } from 'rxjs/operators';
3
+ import * as i0 from "@angular/core";
4
+ const IS_STABLE_START_MARK = 'Zone';
5
+ const IS_STABLE_END_MARK = '_isStableEnd';
6
+ export class PerformanceMonitoringService {
7
+ disposable;
8
+ constructor(appRef) {
9
+ // eslint-disable-next-line @typescript-eslint/prefer-optional-chain
10
+ if (typeof window !== 'undefined' && window.performance?.mark) {
11
+ this.disposable = appRef.isStable.pipe(first(it => it), tap(() => {
12
+ window.performance.mark(IS_STABLE_END_MARK);
13
+ window.performance.measure('isStable', IS_STABLE_START_MARK, IS_STABLE_END_MARK);
14
+ })).subscribe();
15
+ }
16
+ }
17
+ ngOnDestroy() {
18
+ if (this.disposable) {
19
+ this.disposable.unsubscribe();
20
+ }
21
+ }
22
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: PerformanceMonitoringService, deps: [{ token: i0.ApplicationRef }], target: i0.ɵɵFactoryTarget.Injectable });
23
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: PerformanceMonitoringService });
24
+ }
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: PerformanceMonitoringService, decorators: [{
26
+ type: Injectable
27
+ }], ctorParameters: function () { return [{ type: i0.ApplicationRef }]; } });
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyZm9ybWFuY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wYXQvcGVyZm9ybWFuY2UvcGVyZm9ybWFuY2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUV0RSxPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUU1QyxNQUFNLG9CQUFvQixHQUFHLE1BQU0sQ0FBQztBQUNwQyxNQUFNLGtCQUFrQixHQUFHLGNBQWMsQ0FBQztBQUcxQyxNQUFNLE9BQU8sNEJBQTRCO0lBRTdCLFVBQVUsQ0FBeUI7SUFFM0MsWUFBWSxNQUFzQjtRQUM5QixvRUFBb0U7UUFDcEUsSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXLElBQUksTUFBTSxDQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUU7WUFDM0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDbEMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQ2YsR0FBRyxDQUFDLEdBQUcsRUFBRTtnQkFDTCxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO2dCQUM1QyxNQUFNLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsb0JBQW9CLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztZQUNyRixDQUFDLENBQUMsQ0FDTCxDQUFDLFNBQVMsRUFBRSxDQUFDO1NBQ2pCO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQUU7SUFDM0QsQ0FBQzt3R0FuQlEsNEJBQTRCOzRHQUE1Qiw0QkFBNEI7OzRGQUE1Qiw0QkFBNEI7a0JBRHhDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcHBsaWNhdGlvblJlZiwgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpcnN0LCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmNvbnN0IElTX1NUQUJMRV9TVEFSVF9NQVJLID0gJ1pvbmUnO1xuY29uc3QgSVNfU1RBQkxFX0VORF9NQVJLID0gJ19pc1N0YWJsZUVuZCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBQZXJmb3JtYW5jZU1vbml0b3JpbmdTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcblxuICAgIHByaXZhdGUgZGlzcG9zYWJsZTogU3Vic2NyaXB0aW9ufHVuZGVmaW5lZDtcblxuICAgIGNvbnN0cnVjdG9yKGFwcFJlZjogQXBwbGljYXRpb25SZWYpIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9wcmVmZXItb3B0aW9uYWwtY2hhaW5cbiAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5wZXJmb3JtYW5jZT8ubWFyaykge1xuICAgICAgICAgICAgdGhpcy5kaXNwb3NhYmxlID0gYXBwUmVmLmlzU3RhYmxlLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlyc3QoaXQgPT4gaXQpLFxuICAgICAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5wZXJmb3JtYW5jZS5tYXJrKElTX1NUQUJMRV9FTkRfTUFSSyk7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5wZXJmb3JtYW5jZS5tZWFzdXJlKCdpc1N0YWJsZScsIElTX1NUQUJMRV9TVEFSVF9NQVJLLCBJU19TVEFCTEVfRU5EX01BUkspO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApLnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIGlmICh0aGlzLmRpc3Bvc2FibGUpIHsgdGhpcy5kaXNwb3NhYmxlLnVuc3Vic2NyaWJlKCk7IH1cbiAgICB9XG5cbn1cbiJdfQ==
@@ -0,0 +1,58 @@
1
+ // DEBUG quick debugger function for inline logging that typescript doesn't complain about
2
+ // wrote it for debugging the ɵlazySDKProxy, commenting out for now; should consider exposing a
3
+ // verbose mode for AngularFire in a future release that uses something like this in multiple places
4
+ // usage: () => log('something') || returnValue
5
+ // const log = (...args: any[]): false => { console.log(...args); return false }
6
+ // The problem here are things like ngOnDestroy are missing, then triggering the service
7
+ // rather than dig too far; I'm capturing these as I go.
8
+ const noopFunctions = ['ngOnDestroy'];
9
+ // INVESTIGATE should we make the Proxy revokable and do some cleanup?
10
+ // right now it's fairly simple but I'm sure this will grow in complexity
11
+ export const ɵlazySDKProxy = (klass, observable, zone, options = {}) => {
12
+ return new Proxy(klass, {
13
+ get: (_, name) => zone.runOutsideAngular(() => {
14
+ if (klass[name]) {
15
+ if (options?.spy?.get) {
16
+ options.spy.get(name, klass[name]);
17
+ }
18
+ return klass[name];
19
+ }
20
+ if (noopFunctions.indexOf(name) > -1) {
21
+ return () => undefined;
22
+ }
23
+ const promise = observable.toPromise().then(mod => {
24
+ const ret = mod?.[name];
25
+ // TODO move to proper type guards
26
+ if (typeof ret === 'function') {
27
+ return ret.bind(mod);
28
+ }
29
+ else if (ret?.then) {
30
+ return ret.then((res) => zone.run(() => res));
31
+ }
32
+ else {
33
+ return zone.run(() => ret);
34
+ }
35
+ });
36
+ // recurse the proxy
37
+ return new Proxy(() => undefined, {
38
+ get: (_, name) => promise[name],
39
+ // TODO handle callbacks as transparently as I can
40
+ apply: (self, _, args) => promise.then(it => {
41
+ const res = it?.(...args);
42
+ if (options?.spy?.apply) {
43
+ options.spy.apply(name, args, res);
44
+ }
45
+ return res;
46
+ })
47
+ });
48
+ })
49
+ });
50
+ };
51
+ export const ɵapplyMixins = (derivedCtor, constructors) => {
52
+ constructors.forEach((baseCtor) => {
53
+ Object.getOwnPropertyNames(baseCtor.prototype || baseCtor).forEach((name) => {
54
+ Object.defineProperty(derivedCtor.prototype, name, Object.getOwnPropertyDescriptor(baseCtor.prototype || baseCtor, name));
55
+ });
56
+ });
57
+ };
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJveHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcGF0L3Byb3h5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW1CQSwwRkFBMEY7QUFDMUYscUdBQXFHO0FBQ3JHLDBHQUEwRztBQUMxRyxxREFBcUQ7QUFDckQsZ0ZBQWdGO0FBRWhGLHdGQUF3RjtBQUN4Rix3REFBd0Q7QUFDeEQsTUFBTSxhQUFhLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUV0QyxzRUFBc0U7QUFDdEUscUZBQXFGO0FBQ3JGLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUFDLEtBQVUsRUFBRSxVQUEyQixFQUFFLElBQVksRUFBRSxVQUtqRixFQUFFLEVBQUUsRUFBRTtJQUNSLE9BQU8sSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFO1FBQ3RCLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFZLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7WUFDcEQsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ2YsSUFBSSxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRTtvQkFDckIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2lCQUNwQztnQkFDRCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNwQjtZQUNELElBQUksYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtnQkFDcEMsT0FBTyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUM7YUFDeEI7WUFDRCxNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsU0FBUyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNoRCxNQUFNLEdBQUcsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDeEIsa0NBQWtDO2dCQUNsQyxJQUFJLE9BQU8sR0FBRyxLQUFLLFVBQVUsRUFBRTtvQkFDN0IsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUN0QjtxQkFBTSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUU7b0JBQ3BCLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2lCQUNwRDtxQkFBTTtvQkFDTCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQzVCO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDSCxvQkFBb0I7WUFDcEIsT0FBTyxJQUFJLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxTQUFTLEVBQUU7Z0JBQzlCLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7Z0JBQy9CLGtEQUFrRDtnQkFDbEQsS0FBSyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUU7b0JBQzFDLE1BQU0sR0FBRyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7b0JBQzFCLElBQUksT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUU7d0JBQ3ZCLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7cUJBQ3BDO29CQUNELE9BQU8sR0FBRyxDQUFDO2dCQUNiLENBQUMsQ0FBQzthQUNILENBQ0YsQ0FBQztRQUNKLENBQUMsQ0FBQztLQUNILENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLFdBQWdCLEVBQUUsWUFBbUIsRUFBRSxFQUFFO0lBQ3BFLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtRQUNoQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLFNBQVMsSUFBSSxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUMxRSxNQUFNLENBQUMsY0FBYyxDQUNuQixXQUFXLENBQUMsU0FBUyxFQUNyQixJQUFJLEVBQ0osTUFBTSxDQUFDLHdCQUF3QixDQUFDLFFBQVEsQ0FBQyxTQUFTLElBQUksUUFBUSxFQUFFLElBQUksQ0FBQyxDQUN0RSxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG50eXBlIE15RnVuY3Rpb24gPSAoLi4uYXJnczogYW55W10pID0+IGFueTtcbnR5cGUgRnVuY3Rpb25Qcm9wZXJ0eU5hbWVzPFQ+ID0geyBbSyBpbiBrZXlvZiBUXTogVFtLXSBleHRlbmRzIE15RnVuY3Rpb24gPyBLIDogbmV2ZXIgfVtrZXlvZiBUXTtcbnR5cGUgUmV0dXJuVHlwZU9yTmV2ZXI8VD4gPSBUIGV4dGVuZHMgTXlGdW5jdGlvbiA/IFJldHVyblR5cGU8VD4gOiBuZXZlcjtcbnR5cGUgUGFyYW1ldGVyc09yTmV2ZXI8VD4gPSBUIGV4dGVuZHMgTXlGdW5jdGlvbiA/IFBhcmFtZXRlcnM8VD4gOiBuZXZlcjtcbnR5cGUgUHJvbWlzZVJldHVybmluZ0Z1bmN0aW9uUHJvcGVydHlOYW1lczxUPiA9IHtcbiAgW0sgaW4gRnVuY3Rpb25Qcm9wZXJ0eU5hbWVzPFQ+XTogUmV0dXJuVHlwZU9yTmV2ZXI8VFtLXT4gZXh0ZW5kcyBQcm9taXNlPGFueT4gPyBLIDogbmV2ZXJcbn1bRnVuY3Rpb25Qcm9wZXJ0eU5hbWVzPFQ+XTtcbnR5cGUgTm9uUHJvbWlzZVJldHVybmluZ0Z1bmN0aW9uUHJvcGVydHlOYW1lczxUPiA9IHtcbiAgW0sgaW4gRnVuY3Rpb25Qcm9wZXJ0eU5hbWVzPFQ+XTogUmV0dXJuVHlwZU9yTmV2ZXI8VFtLXT4gZXh0ZW5kcyBQcm9taXNlPGFueT4gPyBuZXZlciA6IEtcbn1bRnVuY3Rpb25Qcm9wZXJ0eU5hbWVzPFQ+XTtcbnR5cGUgTm9uRnVuY3Rpb25Qcm9wZXJ0eU5hbWVzPFQ+ID0geyBbSyBpbiBrZXlvZiBUXTogVFtLXSBleHRlbmRzIE15RnVuY3Rpb24gPyBuZXZlciA6IEsgfVtrZXlvZiBUXTtcblxuZXhwb3J0IHR5cGUgybVQcm9taXNlUHJveHk8VD4gPSB7IFtLIGluIE5vbkZ1bmN0aW9uUHJvcGVydHlOYW1lczxUPl06IFByb21pc2U8VFtLXT4gfSAmXG4gIHsgW0sgaW4gTm9uUHJvbWlzZVJldHVybmluZ0Z1bmN0aW9uUHJvcGVydHlOYW1lczxUPl06ICguLi5hcmdzOiBQYXJhbWV0ZXJzT3JOZXZlcjxUW0tdPikgPT4gUHJvbWlzZTxSZXR1cm5UeXBlT3JOZXZlcjxUW0tdPj4gfSAmXG4gIHsgW0sgaW4gUHJvbWlzZVJldHVybmluZ0Z1bmN0aW9uUHJvcGVydHlOYW1lczxUPl06IFRbS10gfTtcblxuLy8gREVCVUcgcXVpY2sgZGVidWdnZXIgZnVuY3Rpb24gZm9yIGlubGluZSBsb2dnaW5nIHRoYXQgdHlwZXNjcmlwdCBkb2Vzbid0IGNvbXBsYWluIGFib3V0XG4vLyAgICAgICB3cm90ZSBpdCBmb3IgZGVidWdnaW5nIHRoZSDJtWxhenlTREtQcm94eSwgY29tbWVudGluZyBvdXQgZm9yIG5vdzsgc2hvdWxkIGNvbnNpZGVyIGV4cG9zaW5nIGFcbi8vICAgICAgIHZlcmJvc2UgbW9kZSBmb3IgQW5ndWxhckZpcmUgaW4gYSBmdXR1cmUgcmVsZWFzZSB0aGF0IHVzZXMgc29tZXRoaW5nIGxpa2UgdGhpcyBpbiBtdWx0aXBsZSBwbGFjZXNcbi8vICAgICAgIHVzYWdlOiAoKSA9PiBsb2coJ3NvbWV0aGluZycpIHx8IHJldHVyblZhbHVlXG4vLyBjb25zdCBsb2cgPSAoLi4uYXJnczogYW55W10pOiBmYWxzZSA9PiB7IGNvbnNvbGUubG9nKC4uLmFyZ3MpOyByZXR1cm4gZmFsc2UgfVxuXG4vLyBUaGUgcHJvYmxlbSBoZXJlIGFyZSB0aGluZ3MgbGlrZSBuZ09uRGVzdHJveSBhcmUgbWlzc2luZywgdGhlbiB0cmlnZ2VyaW5nIHRoZSBzZXJ2aWNlXG4vLyByYXRoZXIgdGhhbiBkaWcgdG9vIGZhcjsgSSdtIGNhcHR1cmluZyB0aGVzZSBhcyBJIGdvLlxuY29uc3Qgbm9vcEZ1bmN0aW9ucyA9IFsnbmdPbkRlc3Ryb3knXTtcblxuLy8gSU5WRVNUSUdBVEUgc2hvdWxkIHdlIG1ha2UgdGhlIFByb3h5IHJldm9rYWJsZSBhbmQgZG8gc29tZSBjbGVhbnVwP1xuLy8gICAgICAgICAgICAgcmlnaHQgbm93IGl0J3MgZmFpcmx5IHNpbXBsZSBidXQgSSdtIHN1cmUgdGhpcyB3aWxsIGdyb3cgaW4gY29tcGxleGl0eVxuZXhwb3J0IGNvbnN0IMm1bGF6eVNES1Byb3h5ID0gKGtsYXNzOiBhbnksIG9ic2VydmFibGU6IE9ic2VydmFibGU8YW55Piwgem9uZTogTmdab25lLCBvcHRpb25zOiB7XG4gIHNweT86IHtcbiAgICBnZXQ/OiAoKG5hbWU6IHN0cmluZywgaXQ6IGFueSkgPT4gdm9pZCksXG4gICAgYXBwbHk/OiAoKG5hbWU6IHN0cmluZywgYXJnczogYW55W10sIGl0OiBhbnkpID0+IHZvaWQpXG4gIH1cbn0gPSB7fSkgPT4ge1xuICByZXR1cm4gbmV3IFByb3h5KGtsYXNzLCB7XG4gICAgZ2V0OiAoXywgbmFtZTogc3RyaW5nKSA9PiB6b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIGlmIChrbGFzc1tuYW1lXSkge1xuICAgICAgICBpZiAob3B0aW9ucz8uc3B5Py5nZXQpIHtcbiAgICAgICAgICBvcHRpb25zLnNweS5nZXQobmFtZSwga2xhc3NbbmFtZV0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBrbGFzc1tuYW1lXTtcbiAgICAgIH1cbiAgICAgIGlmIChub29wRnVuY3Rpb25zLmluZGV4T2YobmFtZSkgPiAtMSkge1xuICAgICAgICByZXR1cm4gKCkgPT4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJvbWlzZSA9IG9ic2VydmFibGUudG9Qcm9taXNlKCkudGhlbihtb2QgPT4ge1xuICAgICAgICBjb25zdCByZXQgPSBtb2Q/LltuYW1lXTtcbiAgICAgICAgLy8gVE9ETyBtb3ZlIHRvIHByb3BlciB0eXBlIGd1YXJkc1xuICAgICAgICBpZiAodHlwZW9mIHJldCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHJldHVybiByZXQuYmluZChtb2QpO1xuICAgICAgICB9IGVsc2UgaWYgKHJldD8udGhlbikge1xuICAgICAgICAgIHJldHVybiByZXQudGhlbigocmVzOiBhbnkpID0+IHpvbmUucnVuKCgpID0+IHJlcykpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB6b25lLnJ1bigoKSA9PiByZXQpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIC8vIHJlY3Vyc2UgdGhlIHByb3h5XG4gICAgICByZXR1cm4gbmV3IFByb3h5KCgpID0+IHVuZGVmaW5lZCwge1xuICAgICAgICAgIGdldDogKF8sIG5hbWUpID0+IHByb21pc2VbbmFtZV0sXG4gICAgICAgICAgLy8gVE9ETyBoYW5kbGUgY2FsbGJhY2tzIGFzIHRyYW5zcGFyZW50bHkgYXMgSSBjYW5cbiAgICAgICAgICBhcHBseTogKHNlbGYsIF8sIGFyZ3MpID0+IHByb21pc2UudGhlbihpdCA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXMgPSBpdD8uKC4uLmFyZ3MpO1xuICAgICAgICAgICAgaWYgKG9wdGlvbnM/LnNweT8uYXBwbHkpIHtcbiAgICAgICAgICAgICAgb3B0aW9ucy5zcHkuYXBwbHkobmFtZSwgYXJncywgcmVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9KVxuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCDJtWFwcGx5TWl4aW5zID0gKGRlcml2ZWRDdG9yOiBhbnksIGNvbnN0cnVjdG9yczogYW55W10pID0+IHtcbiAgY29uc3RydWN0b3JzLmZvckVhY2goKGJhc2VDdG9yKSA9PiB7XG4gICAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoYmFzZUN0b3IucHJvdG90eXBlIHx8IGJhc2VDdG9yKS5mb3JFYWNoKChuYW1lKSA9PiB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoXG4gICAgICAgIGRlcml2ZWRDdG9yLnByb3RvdHlwZSxcbiAgICAgICAgbmFtZSxcbiAgICAgICAgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihiYXNlQ3Rvci5wcm90b3R5cGUgfHwgYmFzZUN0b3IsIG5hbWUpXG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcbn07XG4iXX0=