@angular/fire 7.6.1 → 16.0.0-canary.2d48ab0

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 (479) hide show
  1. package/README.md +11 -4
  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 +168 -17
  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/setup/index.js +27 -27
  220. package/schematics/setup/prompts.js +22 -18
  221. package/schematics/update/index.js +1 -1
  222. package/schematics/update/v7/index.js +7 -7
  223. package/schematics/utils.js +34 -34
  224. package/storage/storage.module.d.ts +2 -2
  225. package/analytics/package.json +0 -11
  226. package/app/package.json +0 -11
  227. package/app-check/package.json +0 -11
  228. package/auth/package.json +0 -11
  229. package/auth-guard/package.json +0 -11
  230. package/bundles/angular-fire-analytics.umd.js +0 -673
  231. package/bundles/angular-fire-analytics.umd.js.map +0 -1
  232. package/bundles/angular-fire-app-check.umd.js +0 -465
  233. package/bundles/angular-fire-app-check.umd.js.map +0 -1
  234. package/bundles/angular-fire-app.umd.js +0 -477
  235. package/bundles/angular-fire-app.umd.js.map +0 -1
  236. package/bundles/angular-fire-auth-guard.umd.js +0 -109
  237. package/bundles/angular-fire-auth-guard.umd.js.map +0 -1
  238. package/bundles/angular-fire-auth.umd.js +0 -557
  239. package/bundles/angular-fire-auth.umd.js.map +0 -1
  240. package/bundles/angular-fire-compat-analytics.umd.js +0 -672
  241. package/bundles/angular-fire-compat-analytics.umd.js.map +0 -1
  242. package/bundles/angular-fire-compat-auth-guard.umd.js +0 -112
  243. package/bundles/angular-fire-compat-auth-guard.umd.js.map +0 -1
  244. package/bundles/angular-fire-compat-auth.umd.js +0 -559
  245. package/bundles/angular-fire-compat-auth.umd.js.map +0 -1
  246. package/bundles/angular-fire-compat-database.umd.js +0 -799
  247. package/bundles/angular-fire-compat-database.umd.js.map +0 -1
  248. package/bundles/angular-fire-compat-firestore.umd.js +0 -1073
  249. package/bundles/angular-fire-compat-firestore.umd.js.map +0 -1
  250. package/bundles/angular-fire-compat-functions.umd.js +0 -443
  251. package/bundles/angular-fire-compat-functions.umd.js.map +0 -1
  252. package/bundles/angular-fire-compat-messaging.umd.js +0 -465
  253. package/bundles/angular-fire-compat-messaging.umd.js.map +0 -1
  254. package/bundles/angular-fire-compat-performance.umd.js +0 -212
  255. package/bundles/angular-fire-compat-performance.umd.js.map +0 -1
  256. package/bundles/angular-fire-compat-remote-config.umd.js +0 -605
  257. package/bundles/angular-fire-compat-remote-config.umd.js.map +0 -1
  258. package/bundles/angular-fire-compat-storage.umd.js +0 -598
  259. package/bundles/angular-fire-compat-storage.umd.js.map +0 -1
  260. package/bundles/angular-fire-compat.umd.js +0 -535
  261. package/bundles/angular-fire-compat.umd.js.map +0 -1
  262. package/bundles/angular-fire-database.umd.js +0 -557
  263. package/bundles/angular-fire-database.umd.js.map +0 -1
  264. package/bundles/angular-fire-firestore-lite.umd.js +0 -531
  265. package/bundles/angular-fire-firestore-lite.umd.js.map +0 -1
  266. package/bundles/angular-fire-firestore.umd.js +0 -565
  267. package/bundles/angular-fire-firestore.umd.js.map +0 -1
  268. package/bundles/angular-fire-functions.umd.js +0 -461
  269. package/bundles/angular-fire-functions.umd.js.map +0 -1
  270. package/bundles/angular-fire-messaging.umd.js +0 -473
  271. package/bundles/angular-fire-messaging.umd.js.map +0 -1
  272. package/bundles/angular-fire-performance.umd.js +0 -473
  273. package/bundles/angular-fire-performance.umd.js.map +0 -1
  274. package/bundles/angular-fire-remote-config.umd.js +0 -499
  275. package/bundles/angular-fire-remote-config.umd.js.map +0 -1
  276. package/bundles/angular-fire-storage.umd.js +0 -485
  277. package/bundles/angular-fire-storage.umd.js.map +0 -1
  278. package/bundles/angular-fire.umd.js +0 -308
  279. package/bundles/angular-fire.umd.js.map +0 -1
  280. package/compat/analytics/package.json +0 -11
  281. package/compat/auth/package.json +0 -11
  282. package/compat/auth-guard/package.json +0 -11
  283. package/compat/database/package.json +0 -11
  284. package/compat/firestore/package.json +0 -11
  285. package/compat/functions/package.json +0 -11
  286. package/compat/messaging/package.json +0 -11
  287. package/compat/package.json +0 -11
  288. package/compat/performance/package.json +0 -11
  289. package/compat/remote-config/package.json +0 -11
  290. package/compat/storage/package.json +0 -11
  291. package/database/package.json +0 -11
  292. package/esm2015/analytics/analytics.module.js +0 -93
  293. package/esm2015/analytics/firebase.js +0 -14
  294. package/esm2015/analytics/overrides.js +0 -3
  295. package/esm2015/analytics/screen-tracking.service.js +0 -139
  296. package/esm2015/analytics/user-tracking.service.js +0 -43
  297. package/esm2015/app/app.module.js +0 -84
  298. package/esm2015/app-check/app-check.js +0 -16
  299. package/esm2015/app-check/app-check.module.js +0 -81
  300. package/esm2015/app-check/firebase.js +0 -9
  301. package/esm2015/app-check/public_api.js +0 -4
  302. package/esm2015/auth/auth.module.js +0 -71
  303. package/esm2015/auth/firebase.js +0 -56
  304. package/esm2015/auth-guard/auth-guard.js +0 -49
  305. package/esm2015/compat/analytics/analytics.js +0 -163
  306. package/esm2015/compat/analytics/analytics.module.js +0 -32
  307. package/esm2015/compat/analytics/screen-tracking.service.js +0 -49
  308. package/esm2015/compat/analytics/user-tracking.service.js +0 -52
  309. package/esm2015/compat/auth/auth.js +0 -139
  310. package/esm2015/compat/auth-guard/auth-guard.js +0 -49
  311. package/esm2015/compat/database/database.js +0 -117
  312. package/esm2015/compat/database/interfaces.js +0 -2
  313. package/esm2015/compat/database/list/changes.js +0 -85
  314. package/esm2015/compat/database/list/create-reference.js +0 -41
  315. package/esm2015/compat/database/observable/fromRef.js +0 -47
  316. package/esm2015/compat/firebase.app.module.js +0 -69
  317. package/esm2015/compat/firestore/collection/changes.js +0 -107
  318. package/esm2015/compat/firestore/collection/collection.js +0 -117
  319. package/esm2015/compat/firestore/collection-group/collection-group.js +0 -81
  320. package/esm2015/compat/firestore/document/document.js +0 -82
  321. package/esm2015/compat/firestore/firestore.js +0 -254
  322. package/esm2015/compat/firestore/interfaces.js +0 -2
  323. package/esm2015/compat/firestore/observable/fromRef.js +0 -39
  324. package/esm2015/compat/functions/functions.js +0 -68
  325. package/esm2015/compat/messaging/messaging.js +0 -75
  326. package/esm2015/compat/performance/performance.js +0 -110
  327. package/esm2015/compat/performance/performance.module.js +0 -28
  328. package/esm2015/compat/performance/performance.service.js +0 -27
  329. package/esm2015/compat/proxy.js +0 -61
  330. package/esm2015/compat/remote-config/remote-config.js +0 -193
  331. package/esm2015/compat/storage/observable/fromTask.js +0 -34
  332. package/esm2015/compat/storage/pipes/storageUrl.pipe.js +0 -54
  333. package/esm2015/compat/storage/storage.js +0 -94
  334. package/esm2015/compat/storage/storage.module.js +0 -22
  335. package/esm2015/core.js +0 -79
  336. package/esm2015/database/database.module.js +0 -74
  337. package/esm2015/firestore/firebase.js +0 -53
  338. package/esm2015/firestore/firestore.module.js +0 -74
  339. package/esm2015/firestore/lite/firebase.js +0 -39
  340. package/esm2015/firestore/lite/lite.module.js +0 -74
  341. package/esm2015/firestore/lite/rxfire.js +0 -10
  342. package/esm2015/firestore/rxfire.js +0 -13
  343. package/esm2015/functions/functions.module.js +0 -74
  344. package/esm2015/messaging/messaging.module.js +0 -85
  345. package/esm2015/messaging/overrides.js +0 -3
  346. package/esm2015/performance/performance.module.js +0 -81
  347. package/esm2015/remote-config/overrides.js +0 -3
  348. package/esm2015/remote-config/remote-config.module.js +0 -85
  349. package/esm2015/storage/storage.module.js +0 -74
  350. package/esm2015/zones.js +0 -183
  351. package/fesm2015/angular-fire-analytics.js.map +0 -1
  352. package/fesm2015/angular-fire-app-check.js.map +0 -1
  353. package/fesm2015/angular-fire-app.js.map +0 -1
  354. package/fesm2015/angular-fire-auth-guard.js.map +0 -1
  355. package/fesm2015/angular-fire-auth.js.map +0 -1
  356. package/fesm2015/angular-fire-compat-analytics.js.map +0 -1
  357. package/fesm2015/angular-fire-compat-auth-guard.js.map +0 -1
  358. package/fesm2015/angular-fire-compat-auth.js.map +0 -1
  359. package/fesm2015/angular-fire-compat-database.js.map +0 -1
  360. package/fesm2015/angular-fire-compat-firestore.js.map +0 -1
  361. package/fesm2015/angular-fire-compat-functions.js.map +0 -1
  362. package/fesm2015/angular-fire-compat-messaging.js.map +0 -1
  363. package/fesm2015/angular-fire-compat-performance.js.map +0 -1
  364. package/fesm2015/angular-fire-compat-remote-config.js.map +0 -1
  365. package/fesm2015/angular-fire-compat-storage.js.map +0 -1
  366. package/fesm2015/angular-fire-compat.js.map +0 -1
  367. package/fesm2015/angular-fire-database.js.map +0 -1
  368. package/fesm2015/angular-fire-firestore-lite.js.map +0 -1
  369. package/fesm2015/angular-fire-firestore.js +0 -159
  370. package/fesm2015/angular-fire-firestore.js.map +0 -1
  371. package/fesm2015/angular-fire-functions.js.map +0 -1
  372. package/fesm2015/angular-fire-messaging.js.map +0 -1
  373. package/fesm2015/angular-fire-performance.js.map +0 -1
  374. package/fesm2015/angular-fire-remote-config.js.map +0 -1
  375. package/fesm2015/angular-fire-storage.js.map +0 -1
  376. package/fesm2015/angular-fire.js.map +0 -1
  377. package/firestore/lite/package.json +0 -11
  378. package/firestore/package.json +0 -11
  379. package/firestore-protos.js +0 -4
  380. package/functions/package.json +0 -11
  381. package/messaging/package.json +0 -11
  382. package/performance/package.json +0 -11
  383. package/remote-config/package.json +0 -11
  384. package/storage/package.json +0 -11
  385. /package/analytics/{angular-fire-analytics.d.ts → index.d.ts} +0 -0
  386. /package/app/{angular-fire-app.d.ts → index.d.ts} +0 -0
  387. /package/app-check/{angular-fire-app-check.d.ts → index.d.ts} +0 -0
  388. /package/auth/{angular-fire-auth.d.ts → index.d.ts} +0 -0
  389. /package/auth-guard/{angular-fire-auth-guard.d.ts → index.d.ts} +0 -0
  390. /package/compat/analytics/{angular-fire-compat-analytics.d.ts → index.d.ts} +0 -0
  391. /package/compat/auth/{angular-fire-compat-auth.d.ts → index.d.ts} +0 -0
  392. /package/compat/auth-guard/{angular-fire-compat-auth-guard.d.ts → index.d.ts} +0 -0
  393. /package/compat/database/{angular-fire-compat-database.d.ts → index.d.ts} +0 -0
  394. /package/compat/firestore/{angular-fire-compat-firestore.d.ts → index.d.ts} +0 -0
  395. /package/compat/functions/{angular-fire-compat-functions.d.ts → index.d.ts} +0 -0
  396. /package/compat/{angular-fire-compat.d.ts → index.d.ts} +0 -0
  397. /package/compat/messaging/{angular-fire-compat-messaging.d.ts → index.d.ts} +0 -0
  398. /package/compat/performance/{angular-fire-compat-performance.d.ts → index.d.ts} +0 -0
  399. /package/compat/remote-config/{angular-fire-compat-remote-config.d.ts → index.d.ts} +0 -0
  400. /package/compat/storage/{angular-fire-compat-storage.d.ts → index.d.ts} +0 -0
  401. /package/database/{angular-fire-database.d.ts → index.d.ts} +0 -0
  402. /package/{esm2015/analytics/angular-fire-analytics.js → esm2022/analytics/angular-fire-analytics.mjs} +0 -0
  403. /package/{esm2015/analytics/public_api.js → esm2022/analytics/public_api.mjs} +0 -0
  404. /package/{esm2015/angular-fire.js → esm2022/angular-fire.mjs} +0 -0
  405. /package/{esm2015/app/angular-fire-app.js → esm2022/app/angular-fire-app.mjs} +0 -0
  406. /package/{esm2015/app/firebase.js → esm2022/app/firebase.mjs} +0 -0
  407. /package/{esm2015/app/public_api.js → esm2022/app/public_api.mjs} +0 -0
  408. /package/{esm2015/app-check/angular-fire-app-check.js → esm2022/app-check/angular-fire-app-check.mjs} +0 -0
  409. /package/{esm2015/auth/angular-fire-auth.js → esm2022/auth/angular-fire-auth.mjs} +0 -0
  410. /package/{esm2015/auth/public_api.js → esm2022/auth/public_api.mjs} +0 -0
  411. /package/{esm2015/auth/rxfire.js → esm2022/auth/rxfire.mjs} +0 -0
  412. /package/{esm2015/auth-guard/angular-fire-auth-guard.js → esm2022/auth-guard/angular-fire-auth-guard.mjs} +0 -0
  413. /package/{esm2015/auth-guard/public_api.js → esm2022/auth-guard/public_api.mjs} +0 -0
  414. /package/{esm2015/compat/analytics/angular-fire-compat-analytics.js → esm2022/compat/analytics/angular-fire-compat-analytics.mjs} +0 -0
  415. /package/{esm2015/compat/analytics/base.js → esm2022/compat/analytics/base.mjs} +0 -0
  416. /package/{esm2015/compat/analytics/public_api.js → esm2022/compat/analytics/public_api.mjs} +0 -0
  417. /package/{esm2015/compat/angular-fire-compat.js → esm2022/compat/angular-fire-compat.mjs} +0 -0
  418. /package/{esm2015/compat/auth/angular-fire-compat-auth.js → esm2022/compat/auth/angular-fire-compat-auth.mjs} +0 -0
  419. /package/{esm2015/compat/auth/base.js → esm2022/compat/auth/base.mjs} +0 -0
  420. /package/{esm2015/compat/auth-guard/angular-fire-compat-auth-guard.js → esm2022/compat/auth-guard/angular-fire-compat-auth-guard.mjs} +0 -0
  421. /package/{esm2015/compat/auth-guard/public_api.js → esm2022/compat/auth-guard/public_api.mjs} +0 -0
  422. /package/{esm2015/compat/database/angular-fire-compat-database.js → esm2022/compat/database/angular-fire-compat-database.mjs} +0 -0
  423. /package/{esm2015/compat/database/list/remove.js → esm2022/compat/database/list/remove.mjs} +0 -0
  424. /package/{esm2015/compat/database/list/utils.js → esm2022/compat/database/list/utils.mjs} +0 -0
  425. /package/{esm2015/compat/database/public_api.js → esm2022/compat/database/public_api.mjs} +0 -0
  426. /package/{esm2015/compat/firestore/angular-fire-compat-firestore.js → esm2022/compat/firestore/angular-fire-compat-firestore.mjs} +0 -0
  427. /package/{esm2015/compat/firestore/public_api.js → esm2022/compat/firestore/public_api.mjs} +0 -0
  428. /package/{esm2015/compat/functions/angular-fire-compat-functions.js → esm2022/compat/functions/angular-fire-compat-functions.mjs} +0 -0
  429. /package/{esm2015/compat/functions/base.js → esm2022/compat/functions/base.mjs} +0 -0
  430. /package/{esm2015/compat/messaging/angular-fire-compat-messaging.js → esm2022/compat/messaging/angular-fire-compat-messaging.mjs} +0 -0
  431. /package/{esm2015/compat/messaging/base.js → esm2022/compat/messaging/base.mjs} +0 -0
  432. /package/{esm2015/compat/messaging/public_api.js → esm2022/compat/messaging/public_api.mjs} +0 -0
  433. /package/{esm2015/compat/performance/angular-fire-compat-performance.js → esm2022/compat/performance/angular-fire-compat-performance.mjs} +0 -0
  434. /package/{esm2015/compat/performance/base.js → esm2022/compat/performance/base.mjs} +0 -0
  435. /package/{esm2015/compat/performance/public_api.js → esm2022/compat/performance/public_api.mjs} +0 -0
  436. /package/{esm2015/compat/public_api.js → esm2022/compat/public_api.mjs} +0 -0
  437. /package/{esm2015/compat/remote-config/angular-fire-compat-remote-config.js → esm2022/compat/remote-config/angular-fire-compat-remote-config.mjs} +0 -0
  438. /package/{esm2015/compat/remote-config/base.js → esm2022/compat/remote-config/base.mjs} +0 -0
  439. /package/{esm2015/compat/remote-config/interfaces.js → esm2022/compat/remote-config/interfaces.mjs} +0 -0
  440. /package/{esm2015/compat/remote-config/public_api.js → esm2022/compat/remote-config/public_api.mjs} +0 -0
  441. /package/{esm2015/compat/storage/angular-fire-compat-storage.js → esm2022/compat/storage/angular-fire-compat-storage.mjs} +0 -0
  442. /package/{esm2015/compat/storage/interfaces.js → esm2022/compat/storage/interfaces.mjs} +0 -0
  443. /package/{esm2015/compat/storage/public_api.js → esm2022/compat/storage/public_api.mjs} +0 -0
  444. /package/{esm2015/database/angular-fire-database.js → esm2022/database/angular-fire-database.mjs} +0 -0
  445. /package/{esm2015/database/firebase.js → esm2022/database/firebase.mjs} +0 -0
  446. /package/{esm2015/database/public_api.js → esm2022/database/public_api.mjs} +0 -0
  447. /package/{esm2015/database/rxfire.js → esm2022/database/rxfire.mjs} +0 -0
  448. /package/{esm2015/firestore/angular-fire-firestore.js → esm2022/firestore/angular-fire-firestore.mjs} +0 -0
  449. /package/{esm2015/firestore/lite/angular-fire-firestore-lite.js → esm2022/firestore/lite/angular-fire-firestore-lite.mjs} +0 -0
  450. /package/{esm2015/firestore/lite/public_api.js → esm2022/firestore/lite/public_api.mjs} +0 -0
  451. /package/{esm2015/firestore/public_api.js → esm2022/firestore/public_api.mjs} +0 -0
  452. /package/{esm2015/functions/angular-fire-functions.js → esm2022/functions/angular-fire-functions.mjs} +0 -0
  453. /package/{esm2015/functions/firebase.js → esm2022/functions/firebase.mjs} +0 -0
  454. /package/{esm2015/functions/public_api.js → esm2022/functions/public_api.mjs} +0 -0
  455. /package/{esm2015/functions/rxfire.js → esm2022/functions/rxfire.mjs} +0 -0
  456. /package/{esm2015/messaging/angular-fire-messaging.js → esm2022/messaging/angular-fire-messaging.mjs} +0 -0
  457. /package/{esm2015/messaging/firebase.js → esm2022/messaging/firebase.mjs} +0 -0
  458. /package/{esm2015/messaging/public_api.js → esm2022/messaging/public_api.mjs} +0 -0
  459. /package/{esm2015/performance/angular-fire-performance.js → esm2022/performance/angular-fire-performance.mjs} +0 -0
  460. /package/{esm2015/performance/firebase.js → esm2022/performance/firebase.mjs} +0 -0
  461. /package/{esm2015/performance/public_api.js → esm2022/performance/public_api.mjs} +0 -0
  462. /package/{esm2015/performance/rxfire.js → esm2022/performance/rxfire.mjs} +0 -0
  463. /package/{esm2015/public_api.js → esm2022/public_api.mjs} +0 -0
  464. /package/{esm2015/remote-config/angular-fire-remote-config.js → esm2022/remote-config/angular-fire-remote-config.mjs} +0 -0
  465. /package/{esm2015/remote-config/firebase.js → esm2022/remote-config/firebase.mjs} +0 -0
  466. /package/{esm2015/remote-config/public_api.js → esm2022/remote-config/public_api.mjs} +0 -0
  467. /package/{esm2015/remote-config/rxfire.js → esm2022/remote-config/rxfire.mjs} +0 -0
  468. /package/{esm2015/storage/angular-fire-storage.js → esm2022/storage/angular-fire-storage.mjs} +0 -0
  469. /package/{esm2015/storage/firebase.js → esm2022/storage/firebase.mjs} +0 -0
  470. /package/{esm2015/storage/public_api.js → esm2022/storage/public_api.mjs} +0 -0
  471. /package/{esm2015/storage/rxfire.js → esm2022/storage/rxfire.mjs} +0 -0
  472. /package/firestore/{angular-fire-firestore.d.ts → index.d.ts} +0 -0
  473. /package/firestore/lite/{angular-fire-firestore-lite.d.ts → index.d.ts} +0 -0
  474. /package/functions/{angular-fire-functions.d.ts → index.d.ts} +0 -0
  475. /package/{angular-fire.d.ts → index.d.ts} +0 -0
  476. /package/messaging/{angular-fire-messaging.d.ts → index.d.ts} +0 -0
  477. /package/performance/{angular-fire-performance.d.ts → index.d.ts} +0 -0
  478. /package/remote-config/{angular-fire-remote-config.d.ts → index.d.ts} +0 -0
  479. /package/storage/{angular-fire-storage.d.ts → index.d.ts} +0 -0
@@ -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=
@@ -0,0 +1,206 @@
1
+ import { Inject, Injectable, InjectionToken, NgZone, Optional, PLATFORM_ID } from '@angular/core';
2
+ import { keepUnstableUntilFirst, ɵ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/remote-config';
6
+ import { EMPTY, Observable, concat, of, pipe } from 'rxjs';
7
+ import { debounceTime, distinctUntilChanged, filter, groupBy, map, mergeMap, observeOn, scan, shareReplay, startWith, switchMap, withLatestFrom } 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 SETTINGS = new InjectionToken('angularfire2.remoteConfig.settings');
12
+ export const DEFAULTS = new InjectionToken('angularfire2.remoteConfig.defaultConfig');
13
+ const AS_TO_FN = { strings: 'asString', numbers: 'asNumber', booleans: 'asBoolean' };
14
+ const STATIC_VALUES = { numbers: 0, booleans: false, strings: undefined };
15
+ // TODO look into the types here, I don't like the anys
16
+ const proxyAll = (observable, as) => new Proxy(observable.pipe(mapToObject(as)), {
17
+ get: (self, name) => self[name] || observable.pipe(map(all => all.find(p => p.key === name)), map(param => param ? param[AS_TO_FN[as]]() : STATIC_VALUES[as]), distinctUntilChanged())
18
+ });
19
+ // TODO export as implements Partial<...> so minor doesn't break us
20
+ export class Value {
21
+ _source;
22
+ _value;
23
+ asBoolean() {
24
+ return ['1', 'true', 't', 'y', 'yes', 'on'].indexOf(this._value.toLowerCase()) > -1;
25
+ }
26
+ asString() {
27
+ return this._value;
28
+ }
29
+ asNumber() {
30
+ return Number(this._value) || 0;
31
+ }
32
+ getSource() {
33
+ return this._source;
34
+ }
35
+ constructor(_source, _value) {
36
+ this._source = _source;
37
+ this._value = _value;
38
+ }
39
+ }
40
+ // SEMVER use ConstructorParameters when we can support Typescript 3.6
41
+ export class Parameter extends Value {
42
+ key;
43
+ fetchTimeMillis;
44
+ constructor(key, fetchTimeMillis, source, value) {
45
+ super(source, value);
46
+ this.key = key;
47
+ this.fetchTimeMillis = fetchTimeMillis;
48
+ }
49
+ }
50
+ // If it's a Parameter array, test any, else test the individual Parameter
51
+ const filterTest = (fn) => filter(it => Array.isArray(it) ? it.some(fn) : fn(it));
52
+ // Allow the user to bypass the default values and wait till they get something from the server, even if it's a cached copy;
53
+ // if used in conjuntion with first() it will only fetch RC values from the server if they aren't cached locally
54
+ export const filterRemote = () => filterTest(p => p.getSource() === 'remote');
55
+ // filterFresh allows the developer to effectively set up a maximum cache time
56
+ export const filterFresh = (howRecentInMillis) => filterTest(p => p.fetchTimeMillis + howRecentInMillis >= new Date().getTime());
57
+ // I ditched loading the defaults into RC and a simple map for scan since we already have our own defaults implementation.
58
+ // The idea here being that if they have a default that never loads from the server, they will be able to tell via fetchTimeMillis
59
+ // on the Parameter. Also if it doesn't come from the server it won't emit again in .changes, due to the distinctUntilChanged,
60
+ // which we can simplify to === rather than deep comparison
61
+ const scanToParametersArray = (remoteConfig) => pipe(withLatestFrom(remoteConfig), scan((existing, [all, rc]) => {
62
+ // SEMVER use "new Set" to unique once we're only targeting es6
63
+ // at the scale we expect remote config to be at, we probably won't see a performance hit from this unoptimized uniqueness
64
+ // implementation.
65
+ // const allKeys = [...new Set([...existing.map(p => p.key), ...Object.keys(all)])];
66
+ const allKeys = [...existing.map(p => p.key), ...Object.keys(all)].filter((v, i, a) => a.indexOf(v) === i);
67
+ return allKeys.map(key => {
68
+ const updatedValue = all[key];
69
+ return updatedValue ? new Parameter(key, rc ? rc.fetchTimeMillis : -1, updatedValue.getSource(), updatedValue.asString())
70
+ : existing.find(p => p.key === key);
71
+ });
72
+ }, []));
73
+ export class AngularFireRemoteConfig {
74
+ zone;
75
+ changes;
76
+ parameters;
77
+ numbers;
78
+ booleans;
79
+ strings;
80
+ constructor(options, name, settings, defaultConfig, zone, schedulers,
81
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars,@typescript-eslint/ban-types
82
+ platformId) {
83
+ this.zone = zone;
84
+ const remoteConfig$ = of(undefined).pipe(observeOn(schedulers.outsideAngular), switchMap(() => isSupported()), switchMap(isSupported => isSupported ? import('firebase/compat/remote-config') : EMPTY), map(() => ɵfirebaseAppFactory(options, zone, name)), map(app => ɵcacheInstance(`${app.name}.remote-config`, 'AngularFireRemoteConfig', app.name, () => {
85
+ const rc = app.remoteConfig();
86
+ if (settings) {
87
+ rc.settings = settings;
88
+ }
89
+ if (defaultConfig) {
90
+ rc.defaultConfig = defaultConfig;
91
+ }
92
+ return rc;
93
+ }, [settings, defaultConfig])), startWith(undefined), shareReplay({ bufferSize: 1, refCount: false }));
94
+ const loadedRemoteConfig$ = remoteConfig$.pipe(filter(rc => !!rc));
95
+ const default$ = of(Object.keys(defaultConfig || {}).reduce((c, k) => ({ ...c, [k]: new Value('default', defaultConfig[k].toString()) }), {}));
96
+ // we should filter out the defaults we provided to RC, since we have our own implementation
97
+ // that gives us a -1 for fetchTimeMillis (so filterFresh can filter them out)
98
+ const filterOutDefaults = map(all => Object.keys(all)
99
+ .filter(key => all[key].getSource() !== 'default')
100
+ .reduce((acc, key) => ({ ...acc, [key]: all[key] }), {}));
101
+ const existing$ = loadedRemoteConfig$.pipe(switchMap(rc => rc.activate()
102
+ .then(() => rc.ensureInitialized())
103
+ .then(() => rc.getAll())), filterOutDefaults);
104
+ const fresh$ = loadedRemoteConfig$.pipe(switchMap(rc => zone.runOutsideAngular(() => rc.fetchAndActivate()
105
+ .then(() => rc.ensureInitialized())
106
+ .then(() => rc.getAll()))), filterOutDefaults);
107
+ this.parameters = concat(default$, existing$, fresh$).pipe(scanToParametersArray(remoteConfig$), keepUnstableUntilFirst, shareReplay({ bufferSize: 1, refCount: true }));
108
+ this.changes = this.parameters.pipe(switchMap(params => of(...params)), groupBy(param => param.key), mergeMap(group => group.pipe(distinctUntilChanged())));
109
+ this.strings = proxyAll(this.parameters, 'strings');
110
+ this.booleans = proxyAll(this.parameters, 'booleans');
111
+ this.numbers = proxyAll(this.parameters, 'numbers');
112
+ return ɵlazySDKProxy(this, loadedRemoteConfig$, zone);
113
+ }
114
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: AngularFireRemoteConfig, deps: [{ token: FIREBASE_OPTIONS }, { token: FIREBASE_APP_NAME, optional: true }, { token: SETTINGS, optional: true }, { token: DEFAULTS, optional: true }, { token: i0.NgZone }, { token: i1.ɵAngularFireSchedulers }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable });
115
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: AngularFireRemoteConfig, providedIn: 'any' });
116
+ }
117
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: AngularFireRemoteConfig, decorators: [{
118
+ type: Injectable,
119
+ args: [{
120
+ providedIn: 'any'
121
+ }]
122
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
123
+ type: Inject,
124
+ args: [FIREBASE_OPTIONS]
125
+ }] }, { type: undefined, decorators: [{
126
+ type: Optional
127
+ }, {
128
+ type: Inject,
129
+ args: [FIREBASE_APP_NAME]
130
+ }] }, { type: undefined, decorators: [{
131
+ type: Optional
132
+ }, {
133
+ type: Inject,
134
+ args: [SETTINGS]
135
+ }] }, { type: undefined, decorators: [{
136
+ type: Optional
137
+ }, {
138
+ type: Inject,
139
+ args: [DEFAULTS]
140
+ }] }, { type: i0.NgZone }, { type: i1.ɵAngularFireSchedulers }, { type: Object, decorators: [{
141
+ type: Inject,
142
+ args: [PLATFORM_ID]
143
+ }] }]; } });
144
+ export const budget = (interval) => (source) => new Observable(observer => {
145
+ let timedOut = false;
146
+ // TODO use scheduler task rather than settimeout
147
+ const timeout = setTimeout(() => {
148
+ observer.complete();
149
+ timedOut = true;
150
+ }, interval);
151
+ return source.subscribe({
152
+ next(val) {
153
+ if (!timedOut) {
154
+ observer.next(val);
155
+ }
156
+ },
157
+ error(err) {
158
+ if (!timedOut) {
159
+ clearTimeout(timeout);
160
+ observer.error(err);
161
+ }
162
+ },
163
+ complete() {
164
+ if (!timedOut) {
165
+ clearTimeout(timeout);
166
+ observer.complete();
167
+ }
168
+ }
169
+ });
170
+ });
171
+ const typedMethod = (it) => {
172
+ switch (typeof it) {
173
+ case 'string':
174
+ return 'asString';
175
+ case 'boolean':
176
+ return 'asBoolean';
177
+ case 'number':
178
+ return 'asNumber';
179
+ default:
180
+ return 'asString';
181
+ }
182
+ };
183
+ export function scanToObject(to = 'strings') {
184
+ return pipe(
185
+ // TODO cleanup
186
+ scan((c, p) => ({
187
+ ...c, [p.key]: typeof to === 'object' ?
188
+ p[typedMethod(to[p.key])]() :
189
+ p[AS_TO_FN[to]]()
190
+ }), typeof to === 'object' ?
191
+ to :
192
+ {}), debounceTime(1), budget(10), distinctUntilChanged((a, b) => JSON.stringify(a) === JSON.stringify(b)));
193
+ }
194
+ export function mapToObject(to = 'strings') {
195
+ return pipe(
196
+ // TODO this is getting a little long, cleanup
197
+ map((params) => params.reduce((c, p) => ({
198
+ ...c, [p.key]: typeof to === 'object' ?
199
+ p[typedMethod(to[p.key])]() :
200
+ p[AS_TO_FN[to]]()
201
+ }), typeof to === 'object' ?
202
+ to :
203
+ {})), distinctUntilChanged((a, b) => JSON.stringify(a) === JSON.stringify(b)));
204
+ }
205
+ ɵapplyMixins(AngularFireRemoteConfig, [proxyPolyfillCompat]);
206
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3RlLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wYXQvcmVtb3RlLWNvbmZpZy9yZW1vdGUtY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFpQixZQUFZLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBR2hILE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsS0FBSyxFQUE0QixVQUFVLEVBQW9CLE1BQU0sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZHLE9BQU8sRUFDTCxZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLE1BQU0sRUFDTixPQUFPLEVBQ1AsR0FBRyxFQUNILFFBQVEsRUFDUixTQUFTLEVBQ1QsSUFBSSxFQUNKLFdBQVcsRUFDWCxTQUFTLEVBQ1QsU0FBUyxFQUNULGNBQWMsRUFDZixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFFBQVEsQ0FBQzs7O0FBSzdDLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxJQUFJLGNBQWMsQ0FBVyxvQ0FBb0MsQ0FBQyxDQUFDO0FBQzNGLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxJQUFJLGNBQWMsQ0FBaUIseUNBQXlDLENBQUMsQ0FBQztBQU10RyxNQUFNLFFBQVEsR0FB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QUErQyxDQUNsRCxDQUFDLEVBQ0Ysb0JBQW9CLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDeEUsQ0FBQztBQUNKLENBQUM7QUFFRCxZQUFZLENBQUMsdUJBQXVCLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBOZ1pvbmUsIE9wdGlvbmFsLCBQTEFURk9STV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsga2VlcFVuc3RhYmxlVW50aWxGaXJzdCwgybVBbmd1bGFyRmlyZVNjaGVkdWxlcnMgfSBmcm9tICdAYW5ndWxhci9maXJlJztcbmltcG9ydCB7IMm1UHJvbWlzZVByb3h5LCDJtWFwcGx5TWl4aW5zLCDJtWxhenlTREtQcm94eSB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUvY29tcGF0JztcbmltcG9ydCB7IEZJUkVCQVNFX0FQUF9OQU1FLCBGSVJFQkFTRV9PUFRJT05TLCDJtWNhY2hlSW5zdGFuY2UsIMm1ZmlyZWJhc2VBcHBGYWN0b3J5IH0gZnJvbSAnQGFuZ3VsYXIvZmlyZS9jb21wYXQnO1xuaW1wb3J0IHsgRmlyZWJhc2VPcHRpb25zIH0gZnJvbSAnZmlyZWJhc2UvYXBwJztcbmltcG9ydCBmaXJlYmFzZSBmcm9tICdmaXJlYmFzZS9jb21wYXQvYXBwJztcbmltcG9ydCB7IGlzU3VwcG9ydGVkIH0gZnJvbSAnZmlyZWJhc2UvcmVtb3RlLWNvbmZpZyc7XG5pbXBvcnQgeyBFTVBUWSwgTW9ub1R5cGVPcGVyYXRvckZ1bmN0aW9uLCBPYnNlcnZhYmxlLCBPcGVyYXRvckZ1bmN0aW9uLCBjb25jYXQsIG9mLCBwaXBlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBkZWJvdW5jZVRpbWUsXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICBmaWx0ZXIsXG4gIGdyb3VwQnksXG4gIG1hcCxcbiAgbWVyZ2VNYXAsXG4gIG9ic2VydmVPbixcbiAgc2NhbixcbiAgc2hhcmVSZXBsYXksXG4gIHN0YXJ0V2l0aCxcbiAgc3dpdGNoTWFwLFxuICB3aXRoTGF0ZXN0RnJvbVxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBwcm94eVBvbHlmaWxsQ29tcGF0IH0gZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7IFNldHRpbmdzIH0gZnJvbSAnLi9pbnRlcmZhY2VzJztcblxuZXhwb3J0IHR5cGUgQ29uZmlnVGVtcGxhdGUgPSBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPjtcblxuZXhwb3J0IGNvbnN0IFNFVFRJTkdTID0gbmV3IEluamVjdGlvblRva2VuPFNldHRpbmdzPignYW5ndWxhcmZpcmUyLnJlbW90ZUNvbmZpZy5zZXR0aW5ncycpO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRTID0gbmV3IEluamVjdGlvblRva2VuPENvbmZpZ1RlbXBsYXRlPignYW5ndWxhcmZpcmUyLnJlbW90ZUNvbmZpZy5kZWZhdWx0Q29uZmlnJyk7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktaW50ZXJmYWNlXG5leHBvcnQgaW50ZXJmYWNlIEFuZ3VsYXJGaXJlUmVtb3RlQ29uZmlnIGV4dGVuZHMgybVQcm9taXNlUHJveHk8ZmlyZWJhc2UucmVtb3RlQ29uZmlnLlJlbW90ZUNvbmZpZz4ge1xufVxuXG5jb25zdCBBU19UT19GTiA9IHsgc3RyaW5nczogJ2FzU3RyaW5nJywgbnVtYmVyczogJ2FzTnVtYmVyJywgYm9vbGVhbnM6ICdhc0Jvb2xlYW4nIH07XG5jb25zdCBTVEFUSUNfVkFMVUVTID0geyBudW1iZXJzOiAwLCBib29sZWFuczogZmFsc2UsIHN0cmluZ3M6IHVuZGVmaW5lZCB9O1xuXG4vLyBUT0RPIGxvb2sgaW50byB0aGUgdHlwZXMgaGVyZSwgSSBkb24ndCBsaWtlIHRoZSBhbnlzXG5jb25zdCBwcm94eUFsbCA9IChvYnNlcnZhYmxlOiBPYnNlcnZhYmxlPFBhcmFtZXRlcltdPiwgYXM6ICdudW1iZXJzJyB8ICdib29sZWFucycgfCAnc3RyaW5ncycpID0+IG5ldyBQcm94eShcbiAgb2JzZXJ2YWJsZS5waXBlKG1hcFRvT2JqZWN0KGFzIGFzIGFueSkpLCB7XG4gICAgZ2V0OiAoc2VsZiwgbmFtZTogc3RyaW5nKSA9PiBzZWxmW25hbWVdIHx8IG9ic2VydmFibGUucGlwZShcbiAgICAgIG1hcChhbGwgPT4gYWxsLmZpbmQocCA9PiBwLmtleSA9PT0gbmFtZSkpLFxuICAgICAgbWFwKHBhcmFtID0+IHBhcmFtID8gcGFyYW1bQVNfVE9fRk5bYXNdXSgpIDogU1RBVElDX1ZBTFVFU1thc10pLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgIClcbiAgfVxuKSBhcyBhbnk7XG5cbi8vIFRPRE8gZXhwb3J0IGFzIGltcGxlbWVudHMgUGFydGlhbDwuLi4+IHNvIG1pbm9yIGRvZXNuJ3QgYnJlYWsgdXNcbmV4cG9ydCBjbGFzcyBWYWx1ZSBpbXBsZW1lbnRzIGZpcmViYXNlLnJlbW90ZUNvbmZpZy5WYWx1ZSB7XG4gIGFzQm9vbGVhbigpIHtcbiAgICByZXR1cm4gWycxJywgJ3RydWUnLCAndCcsICd5JywgJ3llcycsICdvbiddLmluZGV4T2YodGhpcy5fdmFsdWUudG9Mb3dlckNhc2UoKSkgPiAtMTtcbiAgfVxuXG4gIGFzU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuXG4gIGFzTnVtYmVyKCkge1xuICAgIHJldHVybiBOdW1iZXIodGhpcy5fdmFsdWUpIHx8IDA7XG4gIH1cblxuICBnZXRTb3VyY2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NvdXJjZTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBfc291cmNlOiBmaXJlYmFzZS5yZW1vdGVDb25maWcuVmFsdWVTb3VyY2UsIHB1YmxpYyBfdmFsdWU6IHN0cmluZykge1xuICB9XG59XG5cbi8vIFNFTVZFUiB1c2UgQ29uc3RydWN0b3JQYXJhbWV0ZXJzIHdoZW4gd2UgY2FuIHN1cHBvcnQgVHlwZXNjcmlwdCAzLjZcbmV4cG9ydCBjbGFzcyBQYXJhbWV0ZXIgZXh0ZW5kcyBWYWx1ZSB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBrZXk6IHN0cmluZywgcHVibGljIGZldGNoVGltZU1pbGxpczogbnVtYmVyLCBzb3VyY2U6IGZpcmViYXNlLnJlbW90ZUNvbmZpZy5WYWx1ZVNvdXJjZSwgdmFsdWU6IHN0cmluZykge1xuICAgIHN1cGVyKHNvdXJjZSwgdmFsdWUpO1xuICB9XG59XG5cbi8vIElmIGl0J3MgYSBQYXJhbWV0ZXIgYXJyYXksIHRlc3QgYW55LCBlbHNlIHRlc3QgdGhlIGluZGl2aWR1YWwgUGFyYW1ldGVyXG5jb25zdCBmaWx0ZXJUZXN0ID0gKGZuOiAocGFyYW06IFBhcmFtZXRlcikgPT4gYm9vbGVhbikgPT4gZmlsdGVyPFBhcmFtZXRlciB8IFBhcmFtZXRlcltdPihpdCA9PiBBcnJheS5pc0FycmF5KGl0KSA/IGl0LnNvbWUoZm4pIDogZm4oaXQpKTtcblxuLy8gQWxsb3cgdGhlIHVzZXIgdG8gYnlwYXNzIHRoZSBkZWZhdWx0IHZhbHVlcyBhbmQgd2FpdCB0aWxsIHRoZXkgZ2V0IHNvbWV0aGluZyBmcm9tIHRoZSBzZXJ2ZXIsIGV2ZW4gaWYgaXQncyBhIGNhY2hlZCBjb3B5O1xuLy8gaWYgdXNlZCBpbiBjb25qdW50aW9uIHdpdGggZmlyc3QoKSBpdCB3aWxsIG9ubHkgZmV0Y2ggUkMgdmFsdWVzIGZyb20gdGhlIHNlcnZlciBpZiB0aGV5IGFyZW4ndCBjYWNoZWQgbG9jYWxseVxuZXhwb3J0IGNvbnN0IGZpbHRlclJlbW90ZSA9ICgpID0+IGZpbHRlclRlc3QocCA9PiBwLmdldFNvdXJjZSgpID09PSAncmVtb3RlJyk7XG5cbi8vIGZpbHRlckZyZXNoIGFsbG93cyB0aGUgZGV2ZWxvcGVyIHRvIGVmZmVjdGl2ZWx5IHNldCB1cCBhIG1heGltdW0gY2FjaGUgdGltZVxuZXhwb3J0IGNvbnN0IGZpbHRlckZyZXNoID0gKGhvd1JlY2VudEluTWlsbGlzOiBudW1iZXIpID0+IGZpbHRlclRlc3QocCA9PiBwLmZldGNoVGltZU1pbGxpcyArIGhvd1JlY2VudEluTWlsbGlzID49IG5ldyBEYXRlKCkuZ2V0VGltZSgpKTtcblxuXG4vLyBJIGRpdGNoZWQgbG9hZGluZyB0aGUgZGVmYXVsdHMgaW50byBSQyBhbmQgYSBzaW1wbGUgbWFwIGZvciBzY2FuIHNpbmNlIHdlIGFscmVhZHkgaGF2ZSBvdXIgb3duIGRlZmF1bHRzIGltcGxlbWVudGF0aW9uLlxuLy8gVGhlIGlkZWEgaGVyZSBiZWluZyB0aGF0IGlmIHRoZXkgaGF2ZSBhIGRlZmF1bHQgdGhhdCBuZXZlciBsb2FkcyBmcm9tIHRoZSBzZXJ2ZXIsIHRoZXkgd2lsbCBiZSBhYmxlIHRvIHRlbGwgdmlhIGZldGNoVGltZU1pbGxpc1xuLy8gb24gdGhlIFBhcmFtZXRlci4gQWxzbyBpZiBpdCBkb2Vzbid0IGNvbWUgZnJvbSB0aGUgc2VydmVyIGl0IHdvbid0IGVtaXQgYWdhaW4gaW4gLmNoYW5nZXMsIGR1ZSB0byB0aGUgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4vLyB3aGljaCB3ZSBjYW4gc2ltcGxpZnkgdG8gPT09IHJhdGhlciB0aGFuIGRlZXAgY29tcGFyaXNvblxuY29uc3Qgc2NhblRvUGFyYW1ldGVyc0FycmF5ID0gKFxuICByZW1vdGVDb25maWc6IE9ic2VydmFibGU8ZmlyZWJhc2UucmVtb3RlQ29uZmlnLlJlbW90ZUNvbmZpZyB8IHVuZGVmaW5lZD5cbik6IE9wZXJhdG9yRnVuY3Rpb248UmVjb3JkPHN0cmluZywgZmlyZWJhc2UucmVtb3RlQ29uZmlnLlZhbHVlPiwgUGFyYW1ldGVyW10+ID0+IHBpcGUoXG4gIHdpdGhMYXRlc3RGcm9tKHJlbW90ZUNvbmZpZyksXG4gIHNjYW4oKGV4aXN0aW5nLCBbYWxsLCByY10pID0+IHtcbiAgICAvLyBTRU1WRVIgdXNlIFwibmV3IFNldFwiIHRvIHVuaXF1ZSBvbmNlIHdlJ3JlIG9ubHkgdGFyZ2V0aW5nIGVzNlxuICAgIC8vIGF0IHRoZSBzY2FsZSB3ZSBleHBlY3QgcmVtb3RlIGNvbmZpZyB0byBiZSBhdCwgd2UgcHJvYmFibHkgd29uJ3Qgc2VlIGEgcGVyZm9ybWFuY2UgaGl0IGZyb20gdGhpcyB1bm9wdGltaXplZCB1bmlxdWVuZXNzXG4gICAgLy8gaW1wbGVtZW50YXRpb24uXG4gICAgLy8gY29uc3QgYWxsS2V5cyA9IFsuLi5uZXcgU2V0KFsuLi5leGlzdGluZy5tYXAocCA9PiBwLmtleSksIC4uLk9iamVjdC5rZXlzKGFsbCldKV07XG4gICAgY29uc3QgYWxsS2V5cyA9IFsuLi5leGlzdGluZy5tYXAocCA9PiBwLmtleSksIC4uLk9iamVjdC5rZXlzKGFsbCldLmZpbHRlcigodiwgaSwgYSkgPT4gYS5pbmRleE9mKHYpID09PSBpKTtcbiAgICByZXR1cm4gYWxsS2V5cy5tYXAoa2V5ID0+IHtcbiAgICAgIGNvbnN0IHVwZGF0ZWRWYWx1ZSA9IGFsbFtrZXldO1xuICAgICAgcmV0dXJuIHVwZGF0ZWRWYWx1ZSA/IG5ldyBQYXJhbWV0ZXIoa2V5LCByYyA/IHJjLmZldGNoVGltZU1pbGxpcyA6IC0xLCB1cGRhdGVkVmFsdWUuZ2V0U291cmNlKCksIHVwZGF0ZWRWYWx1ZS5hc1N0cmluZygpKVxuICAgICAgICA6IGV4aXN0aW5nLmZpbmQocCA9PiBwLmtleSA9PT0ga2V5KTtcbiAgICB9KTtcbiAgfSwgW10gYXMgUGFyYW1ldGVyW10pXG4pO1xuXG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ2FueSdcbn0pXG5leHBvcnQgY2xhc3MgQW5ndWxhckZpcmVSZW1vdGVDb25maWcge1xuXG4gIHJlYWRvbmx5IGNoYW5nZXM6IE9ic2VydmFibGU8UGFyYW1ldGVyPjtcbiAgcmVhZG9ubHkgcGFyYW1ldGVyczogT2JzZXJ2YWJsZTxQYXJhbWV0ZXJbXT47XG4gIHJlYWRvbmx5IG51bWJlcnM6IE9ic2VydmFibGU8UmVjb3JkPHN0cmluZywgbnVtYmVyIHwgdW5kZWZpbmVkPj4gJiBSZWNvcmQ8c3RyaW5nLCBPYnNlcnZhYmxlPG51bWJlcj4+O1xuICByZWFkb25seSBib29sZWFuczogT2JzZXJ2YWJsZTxSZWNvcmQ8c3RyaW5nLCBib29sZWFuIHwgdW5kZWZpbmVkPj4gJiBSZWNvcmQ8c3RyaW5nLCBPYnNlcnZhYmxlPGJvb2xlYW4+PjtcbiAgcmVhZG9ubHkgc3RyaW5nczogT2JzZXJ2YWJsZTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCB1bmRlZmluZWQ+PiAmIFJlY29yZDxzdHJpbmcsIE9ic2VydmFibGU8c3RyaW5nIHwgdW5kZWZpbmVkPj47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChGSVJFQkFTRV9PUFRJT05TKSBvcHRpb25zOiBGaXJlYmFzZU9wdGlvbnMsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChGSVJFQkFTRV9BUFBfTkFNRSkgbmFtZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFNFVFRJTkdTKSBzZXR0aW5nczogU2V0dGluZ3MgfCBudWxsLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoREVGQVVMVFMpIGRlZmF1bHRDb25maWc6IENvbmZpZ1RlbXBsYXRlIHwgbnVsbCxcbiAgICBwcml2YXRlIHpvbmU6IE5nWm9uZSxcbiAgICBzY2hlZHVsZXJzOiDJtUFuZ3VsYXJGaXJlU2NoZWR1bGVycyxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzLEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHlwZXNcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwbGF0Zm9ybUlkOiBPYmplY3RcbiAgKSB7XG4gICAgY29uc3QgcmVtb3RlQ29uZmlnJCA9IG9mKHVuZGVmaW5lZCkucGlwZShcbiAgICAgIG9ic2VydmVPbihzY2hlZHVsZXJzLm91dHNpZGVBbmd1bGFyKSxcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiBpc1N1cHBvcnRlZCgpKSxcbiAgICAgIHN3aXRjaE1hcChpc1N1cHBvcnRlZCA9PiBpc1N1cHBvcnRlZCA/IGltcG9ydCgnZmlyZWJhc2UvY29tcGF0L3JlbW90ZS1jb25maWcnKSA6IEVNUFRZKSxcbiAgICAgIG1hcCgoKSA9PiDJtWZpcmViYXNlQXBwRmFjdG9yeShvcHRpb25zLCB6b25lLCBuYW1lKSksXG4gICAgICBtYXAoYXBwID0+IMm1Y2FjaGVJbnN0YW5jZShgJHthcHAubmFtZX0ucmVtb3RlLWNvbmZpZ2AsICdBbmd1bGFyRmlyZVJlbW90ZUNvbmZpZycsIGFwcC5uYW1lLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHJjID0gYXBwLnJlbW90ZUNvbmZpZygpO1xuICAgICAgICBpZiAoc2V0dGluZ3MpIHtcbiAgICAgICAgICByYy5zZXR0aW5ncyA9IHNldHRpbmdzO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkZWZhdWx0Q29uZmlnKSB7XG4gICAgICAgICAgcmMuZGVmYXVsdENvbmZpZyA9IGRlZmF1bHRDb25maWc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJjO1xuICAgICAgfSwgW3NldHRpbmdzLCBkZWZhdWx0Q29uZmlnXSkpLFxuICAgICAgc3RhcnRXaXRoPGZpcmViYXNlLnJlbW90ZUNvbmZpZy5SZW1vdGVDb25maWcsIHVuZGVmaW5lZD4odW5kZWZpbmVkKSxcbiAgICAgIHNoYXJlUmVwbGF5KHsgYnVmZmVyU2l6ZTogMSwgcmVmQ291bnQ6IGZhbHNlIH0pXG4gICAgKSBhcyBPYnNlcnZhYmxlPGFueT47XG5cbiAgICBjb25zdCBsb2FkZWRSZW1vdGVDb25maWckID0gcmVtb3RlQ29uZmlnJC5waXBlKFxuICAgICAgZmlsdGVyPGZpcmViYXNlLnJlbW90ZUNvbmZpZy5SZW1vdGVDb25maWc+KHJjID0+ICEhcmMpXG4gICAgKTtcblxuICAgIGNvbnN0IGRlZmF1bHQkOiBPYnNlcnZhYmxlPFJlY29yZDxzdHJpbmcsIGZpcmViYXNlLnJlbW90ZUNvbmZpZy5WYWx1ZT4+ID0gb2YoT2JqZWN0LmtleXMoZGVmYXVsdENvbmZpZyB8fCB7fSkucmVkdWNlKFxuICAgICAgKGMsIGspID0+ICh7IC4uLmMsIFtrXTogbmV3IFZhbHVlKCdkZWZhdWx0JywgZGVmYXVsdENvbmZpZ1trXS50b1N0cmluZygpKSB9KSwge31cbiAgICApKTtcblxuICAgIC8vIHdlIHNob3VsZCBmaWx0ZXIgb3V0IHRoZSBkZWZhdWx0cyB3ZSBwcm92aWRlZCB0byBSQywgc2luY2Ugd2UgaGF2ZSBvdXIgb3duIGltcGxlbWVudGF0aW9uXG4gICAgLy8gdGhhdCBnaXZlcyB1cyBhIC0xIGZvciBmZXRjaFRpbWVNaWxsaXMgKHNvIGZpbHRlckZyZXNoIGNhbiBmaWx0ZXIgdGhlbSBvdXQpXG4gICAgY29uc3QgZmlsdGVyT3V0RGVmYXVsdHMgPSBtYXA8UmVjb3JkPHN0cmluZywgZmlyZWJhc2UucmVtb3RlQ29uZmlnLlZhbHVlPiwgUmVjb3JkPHN0cmluZywgZmlyZWJhc2UucmVtb3RlQ29uZmlnLlZhbHVlPj4oYWxsID0+XG4gICAgICBPYmplY3Qua2V5cyhhbGwpXG4gICAgICAgIC5maWx0ZXIoa2V5ID0+IGFsbFtrZXldLmdldFNvdXJjZSgpICE9PSAnZGVmYXVsdCcpXG4gICAgICAgIC5yZWR1Y2UoKGFjYywga2V5KSA9PiAoeyAuLi5hY2MsIFtrZXldOiBhbGxba2V5XSB9KSwge30pXG4gICAgKTtcblxuICAgIGNvbnN0IGV4aXN0aW5nJCA9IGxvYWRlZFJlbW90ZUNvbmZpZyQucGlwZShcbiAgICAgIHN3aXRjaE1hcChyYyA9PlxuICAgICAgICByYy5hY3RpdmF0ZSgpXG4gICAgICAgICAgLnRoZW4oKCkgPT4gcmMuZW5zdXJlSW5pdGlhbGl6ZWQoKSlcbiAgICAgICAgICAudGhlbigoKSA9PiByYy5nZXRBbGwoKSlcbiAgICAgICksXG4gICAgICBmaWx0ZXJPdXREZWZhdWx0c1xuICAgICk7XG5cbiAgICBjb25zdCBmcmVzaCQgPSBsb2FkZWRSZW1vdGVDb25maWckLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAocmMgPT4gem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PlxuICAgICAgICByYy5mZXRjaEFuZEFjdGl2YXRlKClcbiAgICAgICAgICAudGhlbigoKSA9PiByYy5lbnN1cmVJbml0aWFsaXplZCgpKVxuICAgICAgICAgIC50aGVuKCgpID0+IHJjLmdldEFsbCgpKVxuICAgICAgKSksXG4gICAgICBmaWx0ZXJPdXREZWZhdWx0c1xuICAgICk7XG5cbiAgICB0aGlzLnBhcmFtZXRlcnMgPSBjb25jYXQoZGVmYXVsdCQsIGV4aXN0aW5nJCwgZnJlc2gkKS5waXBlKFxuICAgICAgc2NhblRvUGFyYW1ldGVyc0FycmF5KHJlbW90ZUNvbmZpZyQpLFxuICAgICAga2VlcFVuc3RhYmxlVW50aWxGaXJzdCxcbiAgICAgIHNoYXJlUmVwbGF5KHsgYnVmZmVyU2l6ZTogMSwgcmVmQ291bnQ6IHRydWUgfSlcbiAgICApO1xuXG4gICAgdGhpcy5jaGFuZ2VzID0gdGhpcy5wYXJhbWV0ZXJzLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAocGFyYW1zID0+IG9mKC4uLnBhcmFtcykpLFxuICAgICAgZ3JvdXBCeShwYXJhbSA9PiBwYXJhbS5rZXkpLFxuICAgICAgbWVyZ2VNYXAoZ3JvdXAgPT4gZ3JvdXAucGlwZShcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICAgKSlcbiAgICApO1xuXG4gICAgdGhpcy5zdHJpbmdzID0gcHJveHlBbGwodGhpcy5wYXJhbWV0ZXJzLCAnc3RyaW5ncycpO1xuICAgIHRoaXMuYm9vbGVhbnMgPSBwcm94eUFsbCh0aGlzLnBhcmFtZXRlcnMsICdib29sZWFucycpO1xuICAgIHRoaXMubnVtYmVycyA9IHByb3h5QWxsKHRoaXMucGFyYW1ldGVycywgJ251bWJlcnMnKTtcblxuICAgIHJldHVybiDJtWxhenlTREtQcm94eSh0aGlzLCBsb2FkZWRSZW1vdGVDb25maWckLCB6b25lKTtcbiAgfVxuXG59XG5cblxuZXhwb3J0IGNvbnN0IGJ1ZGdldCA9IDxUPihpbnRlcnZhbDogbnVtYmVyKTogTW9ub1R5cGVPcGVyYXRvckZ1bmN0aW9uPFQ+ID0+IChzb3VyY2U6IE9ic2VydmFibGU8VD4pID0+IG5ldyBPYnNlcnZhYmxlPFQ+KG9ic2VydmVyID0+IHtcbiAgbGV0IHRpbWVkT3V0ID0gZmFsc2U7XG4gIC8vIFRPRE8gdXNlIHNjaGVkdWxlciB0YXNrIHJhdGhlciB0aGFuIHNldHRpbWVvdXRcbiAgY29uc3QgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgdGltZWRPdXQgPSB0cnVlO1xuICB9LCBpbnRlcnZhbCk7XG4gIHJldHVybiBzb3VyY2Uuc3Vic2NyaWJlKHtcbiAgICBuZXh0KHZhbCkge1xuICAgICAgaWYgKCF0aW1lZE91dCkge1xuICAgICAgICBvYnNlcnZlci5uZXh0KHZhbCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBlcnJvcihlcnIpIHtcbiAgICAgIGlmICghdGltZWRPdXQpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICBvYnNlcnZlci5lcnJvcihlcnIpO1xuICAgICAgfVxuICAgIH0sXG4gICAgY29tcGxldGUoKSB7XG4gICAgICBpZiAoIXRpbWVkT3V0KSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xufSk7XG5cbmNvbnN0IHR5cGVkTWV0aG9kID0gKGl0OiBhbnkpID0+IHtcbiAgc3dpdGNoICh0eXBlb2YgaXQpIHtcbiAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgcmV0dXJuICdhc1N0cmluZyc7XG4gICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICByZXR1cm4gJ2FzQm9vbGVhbic7XG4gICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgIHJldHVybiAnYXNOdW1iZXInO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gJ2FzU3RyaW5nJztcbiAgfVxufTtcblxuXG5leHBvcnQgZnVuY3Rpb24gc2NhblRvT2JqZWN0KCk6IE9wZXJhdG9yRnVuY3Rpb248UGFyYW1ldGVyLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCB1bmRlZmluZWQ+PjtcbmV4cG9ydCBmdW5jdGlvbiBzY2FuVG9PYmplY3QodG86ICdudW1iZXJzJyk6IE9wZXJhdG9yRnVuY3Rpb248UGFyYW1ldGVyLCBSZWNvcmQ8c3RyaW5nLCBudW1iZXIgfCB1bmRlZmluZWQ+PjtcbmV4cG9ydCBmdW5jdGlvbiBzY2FuVG9PYmplY3QodG86ICdib29sZWFucycpOiBPcGVyYXRvckZ1bmN0aW9uPFBhcmFtZXRlciwgUmVjb3JkPHN0cmluZywgYm9vbGVhbiB8IHVuZGVmaW5lZD4+O1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC91bmlmaWVkLXNpZ25hdHVyZXNcbmV4cG9ydCBmdW5jdGlvbiBzY2FuVG9PYmplY3QodG86ICdzdHJpbmdzJyk6IE9wZXJhdG9yRnVuY3Rpb248UGFyYW1ldGVyLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCB1bmRlZmluZWQ+PjtcbmV4cG9ydCBmdW5jdGlvbiBzY2FuVG9PYmplY3Q8VCBleHRlbmRzIENvbmZpZ1RlbXBsYXRlPih0ZW1wbGF0ZTogVCk6IE9wZXJhdG9yRnVuY3Rpb248UGFyYW1ldGVyLCBUICYgUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgdW5kZWZpbmVkPj47XG5leHBvcnQgZnVuY3Rpb24gc2NhblRvT2JqZWN0PFQgZXh0ZW5kcyBDb25maWdUZW1wbGF0ZT4odG86ICdudW1iZXJzJyB8ICdib29sZWFucycgfCAnc3RyaW5ncycgfCBUID0gJ3N0cmluZ3MnKSB7XG4gIHJldHVybiBwaXBlKFxuICAgIC8vIFRPRE8gY2xlYW51cFxuICAgIHNjYW4oXG4gICAgICAoYywgcDogUGFyYW1ldGVyKSA9PiAoe1xuICAgICAgICAuLi5jLCBbcC5rZXldOiB0eXBlb2YgdG8gPT09ICdvYmplY3QnID9cbiAgICAgICAgICBwW3R5cGVkTWV0aG9kKHRvW3Aua2V5XSldKCkgOlxuICAgICAgICAgIHBbQVNfVE9fRk5bdG9dXSgpXG4gICAgICB9KSxcbiAgICAgIHR5cGVvZiB0byA9PT0gJ29iamVjdCcgP1xuICAgICAgICB0byBhcyBUICYgUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgdW5kZWZpbmVkPiA6XG4gICAgICAgIHt9IGFzIFJlY29yZDxzdHJpbmcsIG51bWJlciB8IGJvb2xlYW4gfCBzdHJpbmc+XG4gICAgKSxcbiAgICBkZWJvdW5jZVRpbWUoMSksXG4gICAgYnVkZ2V0KDEwKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgoYSwgYikgPT4gSlNPTi5zdHJpbmdpZnkoYSkgPT09IEpTT04uc3RyaW5naWZ5KGIpKVxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFwVG9PYmplY3QoKTogT3BlcmF0b3JGdW5jdGlvbjxQYXJhbWV0ZXJbXSwgUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgdW5kZWZpbmVkPj47XG5leHBvcnQgZnVuY3Rpb24gbWFwVG9PYmplY3QodG86ICdudW1iZXJzJyk6IE9wZXJhdG9yRnVuY3Rpb248UGFyYW1ldGVyW10sIFJlY29yZDxzdHJpbmcsIG51bWJlciB8IHVuZGVmaW5lZD4+O1xuZXhwb3J0IGZ1bmN0aW9uIG1hcFRvT2JqZWN0KHRvOiAnYm9vbGVhbnMnKTogT3BlcmF0b3JGdW5jdGlvbjxQYXJhbWV0ZXJbXSwgUmVjb3JkPHN0cmluZywgYm9vbGVhbiB8IHVuZGVmaW5lZD4+O1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC91bmlmaWVkLXNpZ25hdHVyZXNcbmV4cG9ydCBmdW5jdGlvbiBtYXBUb09iamVjdCh0bzogJ3N0cmluZ3MnKTogT3BlcmF0b3JGdW5jdGlvbjxQYXJhbWV0ZXJbXSwgUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgdW5kZWZpbmVkPj47XG5leHBvcnQgZnVuY3Rpb24gbWFwVG9PYmplY3Q8VCBleHRlbmRzIENvbmZpZ1RlbXBsYXRlPih0ZW1wbGF0ZTogVCk6XG4gIE9wZXJhdG9yRnVuY3Rpb248UGFyYW1ldGVyW10sIFQgJiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCB1bmRlZmluZWQ+PjtcbmV4cG9ydCBmdW5jdGlvbiBtYXBUb09iamVjdDxUIGV4dGVuZHMgQ29uZmlnVGVtcGxhdGU+KHRvOiAnbnVtYmVycycgfCAnYm9vbGVhbnMnIHwgJ3N0cmluZ3MnIHwgVCA9ICdzdHJpbmdzJykge1xuICByZXR1cm4gcGlwZShcbiAgICAvLyBUT0RPIHRoaXMgaXMgZ2V0dGluZyBhIGxpdHRsZSBsb25nLCBjbGVhbnVwXG4gICAgbWFwKChwYXJhbXM6IFBhcmFtZXRlcltdKSA9PiBwYXJhbXMucmVkdWNlKFxuICAgICAgKGMsIHApID0+ICh7XG4gICAgICAgIC4uLmMsIFtwLmtleV06IHR5cGVvZiB0byA9PT0gJ29iamVjdCcgP1xuICAgICAgICAgIHBbdHlwZWRNZXRob2QodG9bcC5rZXldKV0oKSA6XG4gICAgICAgICAgcFtBU19UT19GTlt0b11dKClcbiAgICAgIH0pLFxuICAgICAgdHlwZW9mIHRvID09PSAnb2JqZWN0JyA/XG4gICAgICAgIHRvIGFzIFQgJiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCB1bmRlZmluZWQ+IDpcbiAgICAgICAge30gYXMgUmVjb3JkPHN0cmluZywgbnVtYmVyIHwgYm9vbGVhbiB8IHN0cmluZz5cbiAgICApKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgoYSwgYikgPT4gSlNPTi5zdHJpbmdpZnkoYSkgPT09IEpTT04uc3RyaW5naWZ5KGIpKVxuICApO1xufVxuXG7JtWFwcGx5TWl4aW5zKEFuZ3VsYXJGaXJlUmVtb3RlQ29uZmlnLCBbcHJveHlQb2x5ZmlsbENvbXBhdF0pO1xuIl19
@@ -1,20 +1,20 @@
1
1
  import { NgModule } from '@angular/core';
2
- import { AngularFireRemoteConfig } from './remote-config';
3
- import firebase from 'firebase/compat/app';
4
2
  import { VERSION } from '@angular/fire';
3
+ import firebase from 'firebase/compat/app';
4
+ import { AngularFireRemoteConfig } from './remote-config';
5
5
  import * as i0 from "@angular/core";
6
6
  export class AngularFireRemoteConfigModule {
7
7
  constructor() {
8
8
  firebase.registerVersion('angularfire', VERSION.full, 'rc-compat');
9
9
  }
10
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: AngularFireRemoteConfigModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
11
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.10", ngImport: i0, type: AngularFireRemoteConfigModule });
12
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: AngularFireRemoteConfigModule, providers: [AngularFireRemoteConfig] });
10
13
  }
11
- AngularFireRemoteConfigModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0, type: AngularFireRemoteConfigModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
12
- AngularFireRemoteConfigModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0, type: AngularFireRemoteConfigModule });
13
- AngularFireRemoteConfigModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0, type: AngularFireRemoteConfigModule, providers: [AngularFireRemoteConfig] });
14
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.3", ngImport: i0, type: AngularFireRemoteConfigModule, decorators: [{
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: AngularFireRemoteConfigModule, decorators: [{
15
15
  type: NgModule,
16
16
  args: [{
17
17
  providers: [AngularFireRemoteConfig]
18
18
  }]
19
19
  }], ctorParameters: function () { return []; } });
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3RlLWNvbmZpZy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcGF0L3JlbW90ZS1jb25maWcvcmVtb3RlLWNvbmZpZy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxRCxPQUFPLFFBQVEsTUFBTSxxQkFBcUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUt4QyxNQUFNLE9BQU8sNkJBQTZCO0lBQ3RDO1FBQ0ksUUFBUSxDQUFDLGVBQWUsQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztJQUN2RSxDQUFDOzswSEFIUSw2QkFBNkI7MkhBQTdCLDZCQUE2QjsySEFBN0IsNkJBQTZCLGFBRjdCLENBQUUsdUJBQXVCLENBQUU7MkZBRTNCLDZCQUE2QjtrQkFIekMsUUFBUTttQkFBQztvQkFDUixTQUFTLEVBQUUsQ0FBRSx1QkFBdUIsQ0FBRTtpQkFDdkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQW5ndWxhckZpcmVSZW1vdGVDb25maWcgfSBmcm9tICcuL3JlbW90ZS1jb25maWcnO1xuaW1wb3J0IGZpcmViYXNlIGZyb20gJ2ZpcmViYXNlL2NvbXBhdC9hcHAnO1xuaW1wb3J0IHsgVkVSU0lPTiB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUnO1xuXG5ATmdNb2R1bGUoe1xuICBwcm92aWRlcnM6IFsgQW5ndWxhckZpcmVSZW1vdGVDb25maWcgXVxufSlcbmV4cG9ydCBjbGFzcyBBbmd1bGFyRmlyZVJlbW90ZUNvbmZpZ01vZHVsZSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIGZpcmViYXNlLnJlZ2lzdGVyVmVyc2lvbignYW5ndWxhcmZpcmUnLCBWRVJTSU9OLmZ1bGwsICdyYy1jb21wYXQnKTtcbiAgICB9XG59XG4iXX0=
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3RlLWNvbmZpZy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcGF0L3JlbW90ZS1jb25maWcvcmVtb3RlLWNvbmZpZy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hDLE9BQU8sUUFBUSxNQUFNLHFCQUFxQixDQUFDO0FBQzNDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUsxRCxNQUFNLE9BQU8sNkJBQTZCO0lBQ3RDO1FBQ0ksUUFBUSxDQUFDLGVBQWUsQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztJQUN2RSxDQUFDO3dHQUhRLDZCQUE2Qjt5R0FBN0IsNkJBQTZCO3lHQUE3Qiw2QkFBNkIsYUFGN0IsQ0FBRSx1QkFBdUIsQ0FBRTs7NEZBRTNCLDZCQUE2QjtrQkFIekMsUUFBUTttQkFBQztvQkFDUixTQUFTLEVBQUUsQ0FBRSx1QkFBdUIsQ0FBRTtpQkFDdkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVkVSU0lPTiB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUnO1xuaW1wb3J0IGZpcmViYXNlIGZyb20gJ2ZpcmViYXNlL2NvbXBhdC9hcHAnO1xuaW1wb3J0IHsgQW5ndWxhckZpcmVSZW1vdGVDb25maWcgfSBmcm9tICcuL3JlbW90ZS1jb25maWcnO1xuXG5ATmdNb2R1bGUoe1xuICBwcm92aWRlcnM6IFsgQW5ndWxhckZpcmVSZW1vdGVDb25maWcgXVxufSlcbmV4cG9ydCBjbGFzcyBBbmd1bGFyRmlyZVJlbW90ZUNvbmZpZ01vZHVsZSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIGZpcmViYXNlLnJlZ2lzdGVyVmVyc2lvbignYW5ndWxhcmZpcmUnLCBWRVJTSU9OLmZ1bGwsICdyYy1jb21wYXQnKTtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,36 @@
1
+ import { Observable } from 'rxjs';
2
+ import { debounceTime } from 'rxjs/operators';
3
+ // need to import, else the types become import('firebase/compat/app').default.storage.UploadTask
4
+ // and it no longer works w/Firebase v7
5
+ // Things aren't working great, I'm having to put in a lot of work-arounds for what
6
+ // appear to be Firebase JS SDK bugs https://github.com/firebase/firebase-js-sdk/issues/4158
7
+ export function fromTask(task) {
8
+ return new Observable(subscriber => {
9
+ const progress = (snap) => subscriber.next(snap);
10
+ const error = e => subscriber.error(e);
11
+ const complete = () => subscriber.complete();
12
+ // emit the current snapshot, so they don't have to wait for state_changes
13
+ // to fire next... this is stale if the task is no longer running :(
14
+ progress(task.snapshot);
15
+ const unsub = task.on('state_changed', progress);
16
+ // it turns out that neither task snapshot nor 'state_changed' fire the last
17
+ // snapshot before completion, the one with status 'success" and 100% progress
18
+ // so let's use the promise form of the task for that
19
+ task.then(snapshot => {
20
+ progress(snapshot);
21
+ complete();
22
+ }, e => {
23
+ // TODO investigate, again this is stale, we never fire a canceled or error it seems
24
+ progress(task.snapshot);
25
+ error(e);
26
+ });
27
+ // on's type if Function, rather than () => void, need to wrap
28
+ return function unsubscribe() {
29
+ unsub();
30
+ };
31
+ }).pipe(
32
+ // deal with sync emissions from first emitting `task.snapshot`, this makes sure
33
+ // that if the task is already finished we don't emit the old running state
34
+ debounceTime(0));
35
+ }
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvbVRhc2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY29tcGF0L3N0b3JhZ2Uvb2JzZXJ2YWJsZS9mcm9tVGFzay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUc5QyxpR0FBaUc7QUFDakcsdUNBQXVDO0FBRXZDLG1GQUFtRjtBQUNuRiw0RkFBNEY7QUFDNUYsTUFBTSxVQUFVLFFBQVEsQ0FBQyxJQUFnQjtJQUN2QyxPQUFPLElBQUksVUFBVSxDQUFxQixVQUFVLENBQUMsRUFBRTtRQUNyRCxNQUFNLFFBQVEsR0FBRyxDQUFDLElBQXdCLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckUsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sUUFBUSxHQUFHLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM3QywwRUFBMEU7UUFDMUUsb0VBQW9FO1FBQ3BFLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDeEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxlQUFlLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDakQsNEVBQTRFO1FBQzVFLDhFQUE4RTtRQUM5RSxxREFBcUQ7UUFDckQsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNuQixRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbkIsUUFBUSxFQUFFLENBQUM7UUFDYixDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUU7WUFDTCxvRkFBb0Y7WUFDcEYsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN4QixLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDWCxDQUFDLENBQUMsQ0FBQztRQUNILDhEQUE4RDtRQUM5RCxPQUFPLFNBQVMsV0FBVztZQUN6QixLQUFLLEVBQUUsQ0FBQztRQUNWLENBQUMsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDLElBQUk7SUFDTCxnRkFBZ0Y7SUFDaEYsMkVBQTJFO0lBQzNFLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FDaEIsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBVcGxvYWRUYXNrLCBVcGxvYWRUYXNrU25hcHNob3QgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcblxuLy8gbmVlZCB0byBpbXBvcnQsIGVsc2UgdGhlIHR5cGVzIGJlY29tZSBpbXBvcnQoJ2ZpcmViYXNlL2NvbXBhdC9hcHAnKS5kZWZhdWx0LnN0b3JhZ2UuVXBsb2FkVGFza1xuLy8gYW5kIGl0IG5vIGxvbmdlciB3b3JrcyB3L0ZpcmViYXNlIHY3XG5cbi8vIFRoaW5ncyBhcmVuJ3Qgd29ya2luZyBncmVhdCwgSSdtIGhhdmluZyB0byBwdXQgaW4gYSBsb3Qgb2Ygd29yay1hcm91bmRzIGZvciB3aGF0XG4vLyBhcHBlYXIgdG8gYmUgRmlyZWJhc2UgSlMgU0RLIGJ1Z3MgaHR0cHM6Ly9naXRodWIuY29tL2ZpcmViYXNlL2ZpcmViYXNlLWpzLXNkay9pc3N1ZXMvNDE1OFxuZXhwb3J0IGZ1bmN0aW9uIGZyb21UYXNrKHRhc2s6IFVwbG9hZFRhc2spIHtcbiAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPFVwbG9hZFRhc2tTbmFwc2hvdD4oc3Vic2NyaWJlciA9PiB7XG4gICAgY29uc3QgcHJvZ3Jlc3MgPSAoc25hcDogVXBsb2FkVGFza1NuYXBzaG90KSA9PiBzdWJzY3JpYmVyLm5leHQoc25hcCk7XG4gICAgY29uc3QgZXJyb3IgPSBlID0+IHN1YnNjcmliZXIuZXJyb3IoZSk7XG4gICAgY29uc3QgY29tcGxldGUgPSAoKSA9PiBzdWJzY3JpYmVyLmNvbXBsZXRlKCk7XG4gICAgLy8gZW1pdCB0aGUgY3VycmVudCBzbmFwc2hvdCwgc28gdGhleSBkb24ndCBoYXZlIHRvIHdhaXQgZm9yIHN0YXRlX2NoYW5nZXNcbiAgICAvLyB0byBmaXJlIG5leHQuLi4gdGhpcyBpcyBzdGFsZSBpZiB0aGUgdGFzayBpcyBubyBsb25nZXIgcnVubmluZyA6KFxuICAgIHByb2dyZXNzKHRhc2suc25hcHNob3QpO1xuICAgIGNvbnN0IHVuc3ViID0gdGFzay5vbignc3RhdGVfY2hhbmdlZCcsIHByb2dyZXNzKTtcbiAgICAvLyBpdCB0dXJucyBvdXQgdGhhdCBuZWl0aGVyIHRhc2sgc25hcHNob3Qgbm9yICdzdGF0ZV9jaGFuZ2VkJyBmaXJlIHRoZSBsYXN0XG4gICAgLy8gc25hcHNob3QgYmVmb3JlIGNvbXBsZXRpb24sIHRoZSBvbmUgd2l0aCBzdGF0dXMgJ3N1Y2Nlc3NcIiBhbmQgMTAwJSBwcm9ncmVzc1xuICAgIC8vIHNvIGxldCdzIHVzZSB0aGUgcHJvbWlzZSBmb3JtIG9mIHRoZSB0YXNrIGZvciB0aGF0XG4gICAgdGFzay50aGVuKHNuYXBzaG90ID0+IHtcbiAgICAgIHByb2dyZXNzKHNuYXBzaG90KTtcbiAgICAgIGNvbXBsZXRlKCk7XG4gICAgfSwgZSA9PiB7XG4gICAgICAvLyBUT0RPIGludmVzdGlnYXRlLCBhZ2FpbiB0aGlzIGlzIHN0YWxlLCB3ZSBuZXZlciBmaXJlIGEgY2FuY2VsZWQgb3IgZXJyb3IgaXQgc2VlbXNcbiAgICAgIHByb2dyZXNzKHRhc2suc25hcHNob3QpO1xuICAgICAgZXJyb3IoZSk7XG4gICAgfSk7XG4gICAgLy8gb24ncyB0eXBlIGlmIEZ1bmN0aW9uLCByYXRoZXIgdGhhbiAoKSA9PiB2b2lkLCBuZWVkIHRvIHdyYXBcbiAgICByZXR1cm4gZnVuY3Rpb24gdW5zdWJzY3JpYmUoKSB7XG4gICAgICB1bnN1YigpO1xuICAgIH07XG4gIH0pLnBpcGUoXG4gICAgLy8gZGVhbCB3aXRoIHN5bmMgZW1pc3Npb25zIGZyb20gZmlyc3QgZW1pdHRpbmcgYHRhc2suc25hcHNob3RgLCB0aGlzIG1ha2VzIHN1cmVcbiAgICAvLyB0aGF0IGlmIHRoZSB0YXNrIGlzIGFscmVhZHkgZmluaXNoZWQgd2UgZG9uJ3QgZW1pdCB0aGUgb2xkIHJ1bm5pbmcgc3RhdGVcbiAgICBkZWJvdW5jZVRpbWUoMClcbiAgKTtcbn1cbiJdfQ==
@@ -0,0 +1,58 @@
1
+ import { AsyncPipe } from '@angular/common';
2
+ import { ChangeDetectorRef, NgModule, Optional, Pipe } from '@angular/core';
3
+ import { TransferState, makeStateKey } from '@angular/platform-browser';
4
+ import { of } from 'rxjs';
5
+ import { tap } from 'rxjs/operators';
6
+ import { AngularFireStorage } from '../storage';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "../storage";
9
+ import * as i2 from "@angular/platform-browser";
10
+ /** to be used with in combination with | async */
11
+ export class GetDownloadURLPipe {
12
+ storage;
13
+ state;
14
+ asyncPipe;
15
+ path;
16
+ downloadUrl$;
17
+ constructor(storage, cdr, state) {
18
+ this.storage = storage;
19
+ this.state = state;
20
+ this.asyncPipe = new AsyncPipe(cdr);
21
+ }
22
+ transform(path) {
23
+ if (path !== this.path) {
24
+ this.path = path;
25
+ const key = makeStateKey(`|getDownloadURL|${path}`);
26
+ const existing = this.state?.get(key, undefined);
27
+ this.downloadUrl$ = existing ? of(existing) : this.storage.ref(path).getDownloadURL().pipe(tap(it => this.state?.set(key, it)));
28
+ }
29
+ return this.asyncPipe.transform(this.downloadUrl$);
30
+ }
31
+ ngOnDestroy() {
32
+ this.asyncPipe.ngOnDestroy();
33
+ }
34
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: GetDownloadURLPipe, deps: [{ token: i1.AngularFireStorage }, { token: i0.ChangeDetectorRef }, { token: i2.TransferState, optional: true }], target: i0.ɵɵFactoryTarget.Pipe });
35
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.10", ngImport: i0, type: GetDownloadURLPipe, name: "getDownloadURL", pure: false });
36
+ }
37
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: GetDownloadURLPipe, decorators: [{
38
+ type: Pipe,
39
+ args: [{
40
+ name: 'getDownloadURL',
41
+ pure: false,
42
+ }]
43
+ }], ctorParameters: function () { return [{ type: i1.AngularFireStorage }, { type: i0.ChangeDetectorRef }, { type: i2.TransferState, decorators: [{
44
+ type: Optional
45
+ }] }]; } });
46
+ export class GetDownloadURLPipeModule {
47
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: GetDownloadURLPipeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
48
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.10", ngImport: i0, type: GetDownloadURLPipeModule, declarations: [GetDownloadURLPipe], exports: [GetDownloadURLPipe] });
49
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: GetDownloadURLPipeModule });
50
+ }
51
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: GetDownloadURLPipeModule, decorators: [{
52
+ type: NgModule,
53
+ args: [{
54
+ declarations: [GetDownloadURLPipe],
55
+ exports: [GetDownloadURLPipe],
56
+ }]
57
+ }] });
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZVVybC5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBhdC9zdG9yYWdlL3BpcGVzL3N0b3JhZ2VVcmwucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBYSxRQUFRLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUN0RyxPQUFPLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3hFLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFlBQVksQ0FBQzs7OztBQUVoRCxrREFBa0Q7QUFLbEQsTUFBTSxPQUFPLGtCQUFrQjtJQU9uQjtJQUVZO0lBUGQsU0FBUyxDQUFZO0lBQ3JCLElBQUksQ0FBUztJQUNiLFlBQVksQ0FBa0I7SUFFdEMsWUFDVSxPQUEyQixFQUNuQyxHQUFzQixFQUNGLEtBQW9CO1FBRmhDLFlBQU8sR0FBUCxPQUFPLENBQW9CO1FBRWYsVUFBSyxHQUFMLEtBQUssQ0FBZTtRQUV4QyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxTQUFTLENBQUMsSUFBWTtRQUNwQixJQUFJLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1lBQ2pCLE1BQU0sR0FBRyxHQUFHLFlBQVksQ0FBUyxtQkFBbUIsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUM1RCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDakQsSUFBSSxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUMsSUFBSSxDQUN4RixHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FDcEMsQ0FBQztTQUNIO1FBQ0QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQy9CLENBQUM7d0dBNUJVLGtCQUFrQjtzR0FBbEIsa0JBQWtCOzs0RkFBbEIsa0JBQWtCO2tCQUo5QixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxnQkFBZ0I7b0JBQ3RCLElBQUksRUFBRSxLQUFLO2lCQUNaOzswQkFVSSxRQUFROztBQTJCYixNQUFNLE9BQU8sd0JBQXdCO3dHQUF4Qix3QkFBd0I7eUdBQXhCLHdCQUF3QixpQkFwQ3hCLGtCQUFrQixhQUFsQixrQkFBa0I7eUdBb0NsQix3QkFBd0I7OzRGQUF4Qix3QkFBd0I7a0JBSnBDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUUsa0JBQWtCLENBQUU7b0JBQ3BDLE9BQU8sRUFBRSxDQUFFLGtCQUFrQixDQUFFO2lCQUNoQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFzeW5jUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgTmdNb2R1bGUsIE9uRGVzdHJveSwgT3B0aW9uYWwsIFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRyYW5zZmVyU3RhdGUsIG1ha2VTdGF0ZUtleSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEFuZ3VsYXJGaXJlU3RvcmFnZSB9IGZyb20gJy4uL3N0b3JhZ2UnO1xuXG4vKiogdG8gYmUgdXNlZCB3aXRoIGluIGNvbWJpbmF0aW9uIHdpdGggfCBhc3luYyAqL1xuQFBpcGUoe1xuICBuYW1lOiAnZ2V0RG93bmxvYWRVUkwnLFxuICBwdXJlOiBmYWxzZSxcbn0pXG5leHBvcnQgY2xhc3MgR2V0RG93bmxvYWRVUkxQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSwgT25EZXN0cm95IHtcblxuICBwcml2YXRlIGFzeW5jUGlwZTogQXN5bmNQaXBlO1xuICBwcml2YXRlIHBhdGg6IHN0cmluZztcbiAgcHJpdmF0ZSBkb3dubG9hZFVybCQ6IE9ic2VydmFibGU8YW55PjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHN0b3JhZ2U6IEFuZ3VsYXJGaXJlU3RvcmFnZSxcbiAgICBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgc3RhdGU6IFRyYW5zZmVyU3RhdGVcbiAgKSB7XG4gICAgdGhpcy5hc3luY1BpcGUgPSBuZXcgQXN5bmNQaXBlKGNkcik7XG4gIH1cblxuICB0cmFuc2Zvcm0ocGF0aDogc3RyaW5nKSB7XG4gICAgaWYgKHBhdGggIT09IHRoaXMucGF0aCkge1xuICAgICAgdGhpcy5wYXRoID0gcGF0aDtcbiAgICAgIGNvbnN0IGtleSA9IG1ha2VTdGF0ZUtleTxzdHJpbmc+KGB8Z2V0RG93bmxvYWRVUkx8JHtwYXRofWApO1xuICAgICAgY29uc3QgZXhpc3RpbmcgPSB0aGlzLnN0YXRlPy5nZXQoa2V5LCB1bmRlZmluZWQpO1xuICAgICAgdGhpcy5kb3dubG9hZFVybCQgPSBleGlzdGluZyA/IG9mKGV4aXN0aW5nKSA6IHRoaXMuc3RvcmFnZS5yZWYocGF0aCkuZ2V0RG93bmxvYWRVUkwoKS5waXBlKFxuICAgICAgICB0YXAoaXQgPT4gdGhpcy5zdGF0ZT8uc2V0KGtleSwgaXQpKVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuYXN5bmNQaXBlLnRyYW5zZm9ybSh0aGlzLmRvd25sb2FkVXJsJCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmFzeW5jUGlwZS5uZ09uRGVzdHJveSgpO1xuICB9XG5cbn1cblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbIEdldERvd25sb2FkVVJMUGlwZSBdLFxuICBleHBvcnRzOiBbIEdldERvd25sb2FkVVJMUGlwZSBdLFxufSlcbmV4cG9ydCBjbGFzcyBHZXREb3dubG9hZFVSTFBpcGVNb2R1bGUge31cbiJdfQ==
@@ -1,7 +1,7 @@
1
- import { createUploadTask } from './task';
1
+ import { keepUnstableUntilFirst, observeOutsideAngular } from '@angular/fire';
2
2
  import { from, of } from 'rxjs';
3
- import { observeOutsideAngular, keepUnstableUntilFirst } from '@angular/fire';
4
3
  import { switchMap } from 'rxjs/operators';
4
+ import { createUploadTask } from './task';
5
5
  /**
6
6
  * Create an AngularFire wrapped Storage Reference. This object
7
7
  * creates observable methods from promise based methods.
@@ -25,4 +25,4 @@ export function createStorageRef(ref) {
25
25
  listAll: () => from(ref.listAll())
26
26
  };
27
27
  }
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBhdC9zdG9yYWdlL3JlZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQXlCLGdCQUFnQixFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxJQUFJLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFjM0M7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUM5QixHQUFjO0lBRWQsT0FBTztRQUNMLGNBQWMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUN0QyxxQkFBcUIsRUFDckIsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxFQUNyQyxzQkFBc0IsQ0FDdkI7UUFDRCxXQUFXLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FDbkMscUJBQXFCLEVBQ3JCLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsRUFDbEMsc0JBQXNCLENBQ3ZCO1FBQ0QsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDaEMsS0FBSyxFQUFFLENBQUMsSUFBWSxFQUFFLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFELGNBQWMsRUFBRSxDQUFDLElBQXNCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFFLEdBQUcsRUFBRSxDQUFDLElBQVMsRUFBRSxRQUF5QixFQUFFLEVBQUU7WUFDNUMsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDckMsT0FBTyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoQyxDQUFDO1FBQ0QsU0FBUyxFQUFFLENBQUMsSUFBWSxFQUFFLE1BQXFCLEVBQUUsUUFBeUIsRUFBRSxFQUFFO1lBQzVFLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztZQUNuRCxPQUFPLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hDLENBQUM7UUFDRCxJQUFJLEVBQUUsQ0FBQyxPQUFxQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN4RCxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztLQUNuQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExpc3RPcHRpb25zLCBMaXN0UmVzdWx0LCBSZWZlcmVuY2UsIFNldHRhYmxlTWV0YWRhdGEsIFN0cmluZ0Zvcm1hdCwgVXBsb2FkTWV0YWRhdGEgfSBmcm9tICcuL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQW5ndWxhckZpcmVVcGxvYWRUYXNrLCBjcmVhdGVVcGxvYWRUYXNrIH0gZnJvbSAnLi90YXNrJztcbmltcG9ydCB7IGZyb20sIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBvYnNlcnZlT3V0c2lkZUFuZ3VsYXIsIGtlZXBVbnN0YWJsZVVudGlsRmlyc3QgfSBmcm9tICdAYW5ndWxhci9maXJlJztcbmltcG9ydCB7IHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuZXhwb3J0IGludGVyZmFjZSBBbmd1bGFyRmlyZVN0b3JhZ2VSZWZlcmVuY2Uge1xuICBnZXREb3dubG9hZFVSTCgpOiBPYnNlcnZhYmxlPGFueT47XG4gIGdldE1ldGFkYXRhKCk6IE9ic2VydmFibGU8YW55PjtcbiAgZGVsZXRlKCk6IE9ic2VydmFibGU8YW55PjtcbiAgY2hpbGQocGF0aDogc3RyaW5nKTogQW5ndWxhckZpcmVTdG9yYWdlUmVmZXJlbmNlO1xuICB1cGRhdGVNZXRhZGF0YShtZXRhOiBTZXR0YWJsZU1ldGFkYXRhKTogT2JzZXJ2YWJsZTxhbnk+O1xuICBwdXQoZGF0YTogYW55LCBtZXRhZGF0YT86IFVwbG9hZE1ldGFkYXRhIHwgdW5kZWZpbmVkKTogQW5ndWxhckZpcmVVcGxvYWRUYXNrO1xuICBwdXRTdHJpbmcoZGF0YTogc3RyaW5nLCBmb3JtYXQ/OiBzdHJpbmcgfCB1bmRlZmluZWQsIG1ldGFkYXRhPzogVXBsb2FkTWV0YWRhdGEgfCB1bmRlZmluZWQpOiBBbmd1bGFyRmlyZVVwbG9hZFRhc2s7XG4gIGxpc3Qob3B0aW9ucz86IExpc3RPcHRpb25zKTogT2JzZXJ2YWJsZTxMaXN0UmVzdWx0PjtcbiAgbGlzdEFsbCgpOiBPYnNlcnZhYmxlPExpc3RSZXN1bHQ+O1xufVxuXG4vKipcbiAqIENyZWF0ZSBhbiBBbmd1bGFyRmlyZSB3cmFwcGVkIFN0b3JhZ2UgUmVmZXJlbmNlLiBUaGlzIG9iamVjdFxuICogY3JlYXRlcyBvYnNlcnZhYmxlIG1ldGhvZHMgZnJvbSBwcm9taXNlIGJhc2VkIG1ldGhvZHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTdG9yYWdlUmVmKFxuICByZWY6IFJlZmVyZW5jZVxuKTogQW5ndWxhckZpcmVTdG9yYWdlUmVmZXJlbmNlIHtcbiAgcmV0dXJuIHtcbiAgICBnZXREb3dubG9hZFVSTDogKCkgPT4gb2YodW5kZWZpbmVkKS5waXBlKFxuICAgICAgb2JzZXJ2ZU91dHNpZGVBbmd1bGFyLFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHJlZi5nZXREb3dubG9hZFVSTCgpKSxcbiAgICAgIGtlZXBVbnN0YWJsZVVudGlsRmlyc3RcbiAgICApLFxuICAgIGdldE1ldGFkYXRhOiAoKSA9PiBvZih1bmRlZmluZWQpLnBpcGUoXG4gICAgICBvYnNlcnZlT3V0c2lkZUFuZ3VsYXIsXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gcmVmLmdldE1ldGFkYXRhKCkpLFxuICAgICAga2VlcFVuc3RhYmxlVW50aWxGaXJzdFxuICAgICksXG4gICAgZGVsZXRlOiAoKSA9PiBmcm9tKHJlZi5kZWxldGUoKSksXG4gICAgY2hpbGQ6IChwYXRoOiBzdHJpbmcpID0+IGNyZWF0ZVN0b3JhZ2VSZWYocmVmLmNoaWxkKHBhdGgpKSxcbiAgICB1cGRhdGVNZXRhZGF0YTogKG1ldGE6IFNldHRhYmxlTWV0YWRhdGEpID0+IGZyb20ocmVmLnVwZGF0ZU1ldGFkYXRhKG1ldGEpKSxcbiAgICBwdXQ6IChkYXRhOiBhbnksIG1ldGFkYXRhPzogVXBsb2FkTWV0YWRhdGEpID0+IHtcbiAgICAgIGNvbnN0IHRhc2sgPSByZWYucHV0KGRhdGEsIG1ldGFkYXRhKTtcbiAgICAgIHJldHVybiBjcmVhdGVVcGxvYWRUYXNrKHRhc2spO1xuICAgIH0sXG4gICAgcHV0U3RyaW5nOiAoZGF0YTogc3RyaW5nLCBmb3JtYXQ/OiBTdHJpbmdGb3JtYXQsIG1ldGFkYXRhPzogVXBsb2FkTWV0YWRhdGEpID0+IHtcbiAgICAgIGNvbnN0IHRhc2sgPSByZWYucHV0U3RyaW5nKGRhdGEsIGZvcm1hdCwgbWV0YWRhdGEpO1xuICAgICAgcmV0dXJuIGNyZWF0ZVVwbG9hZFRhc2sodGFzayk7XG4gICAgfSxcbiAgICBsaXN0OiAob3B0aW9ucz86IExpc3RPcHRpb25zKSA9PiBmcm9tKHJlZi5saXN0KG9wdGlvbnMpKSxcbiAgICBsaXN0QWxsOiAoKSA9PiBmcm9tKHJlZi5saXN0QWxsKCkpXG4gIH07XG59XG4iXX0=
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBhdC9zdG9yYWdlL3JlZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUUsT0FBTyxFQUFjLElBQUksRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBeUIsZ0JBQWdCLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFjakU7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUM5QixHQUFjO0lBRWQsT0FBTztRQUNMLGNBQWMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUN0QyxxQkFBcUIsRUFDckIsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxFQUNyQyxzQkFBc0IsQ0FDdkI7UUFDRCxXQUFXLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FDbkMscUJBQXFCLEVBQ3JCLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsRUFDbEMsc0JBQXNCLENBQ3ZCO1FBQ0QsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDaEMsS0FBSyxFQUFFLENBQUMsSUFBWSxFQUFFLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFELGNBQWMsRUFBRSxDQUFDLElBQXNCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFFLEdBQUcsRUFBRSxDQUFDLElBQVMsRUFBRSxRQUF5QixFQUFFLEVBQUU7WUFDNUMsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDckMsT0FBTyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoQyxDQUFDO1FBQ0QsU0FBUyxFQUFFLENBQUMsSUFBWSxFQUFFLE1BQXFCLEVBQUUsUUFBeUIsRUFBRSxFQUFFO1lBQzVFLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztZQUNuRCxPQUFPLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hDLENBQUM7UUFDRCxJQUFJLEVBQUUsQ0FBQyxPQUFxQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN4RCxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztLQUNuQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGtlZXBVbnN0YWJsZVVudGlsRmlyc3QsIG9ic2VydmVPdXRzaWRlQW5ndWxhciB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZnJvbSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IExpc3RPcHRpb25zLCBMaXN0UmVzdWx0LCBSZWZlcmVuY2UsIFNldHRhYmxlTWV0YWRhdGEsIFN0cmluZ0Zvcm1hdCwgVXBsb2FkTWV0YWRhdGEgfSBmcm9tICcuL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQW5ndWxhckZpcmVVcGxvYWRUYXNrLCBjcmVhdGVVcGxvYWRUYXNrIH0gZnJvbSAnLi90YXNrJztcblxuZXhwb3J0IGludGVyZmFjZSBBbmd1bGFyRmlyZVN0b3JhZ2VSZWZlcmVuY2Uge1xuICBnZXREb3dubG9hZFVSTCgpOiBPYnNlcnZhYmxlPGFueT47XG4gIGdldE1ldGFkYXRhKCk6IE9ic2VydmFibGU8YW55PjtcbiAgZGVsZXRlKCk6IE9ic2VydmFibGU8YW55PjtcbiAgY2hpbGQocGF0aDogc3RyaW5nKTogQW5ndWxhckZpcmVTdG9yYWdlUmVmZXJlbmNlO1xuICB1cGRhdGVNZXRhZGF0YShtZXRhOiBTZXR0YWJsZU1ldGFkYXRhKTogT2JzZXJ2YWJsZTxhbnk+O1xuICBwdXQoZGF0YTogYW55LCBtZXRhZGF0YT86IFVwbG9hZE1ldGFkYXRhIHwgdW5kZWZpbmVkKTogQW5ndWxhckZpcmVVcGxvYWRUYXNrO1xuICBwdXRTdHJpbmcoZGF0YTogc3RyaW5nLCBmb3JtYXQ/OiBzdHJpbmcgfCB1bmRlZmluZWQsIG1ldGFkYXRhPzogVXBsb2FkTWV0YWRhdGEgfCB1bmRlZmluZWQpOiBBbmd1bGFyRmlyZVVwbG9hZFRhc2s7XG4gIGxpc3Qob3B0aW9ucz86IExpc3RPcHRpb25zKTogT2JzZXJ2YWJsZTxMaXN0UmVzdWx0PjtcbiAgbGlzdEFsbCgpOiBPYnNlcnZhYmxlPExpc3RSZXN1bHQ+O1xufVxuXG4vKipcbiAqIENyZWF0ZSBhbiBBbmd1bGFyRmlyZSB3cmFwcGVkIFN0b3JhZ2UgUmVmZXJlbmNlLiBUaGlzIG9iamVjdFxuICogY3JlYXRlcyBvYnNlcnZhYmxlIG1ldGhvZHMgZnJvbSBwcm9taXNlIGJhc2VkIG1ldGhvZHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTdG9yYWdlUmVmKFxuICByZWY6IFJlZmVyZW5jZVxuKTogQW5ndWxhckZpcmVTdG9yYWdlUmVmZXJlbmNlIHtcbiAgcmV0dXJuIHtcbiAgICBnZXREb3dubG9hZFVSTDogKCkgPT4gb2YodW5kZWZpbmVkKS5waXBlKFxuICAgICAgb2JzZXJ2ZU91dHNpZGVBbmd1bGFyLFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHJlZi5nZXREb3dubG9hZFVSTCgpKSxcbiAgICAgIGtlZXBVbnN0YWJsZVVudGlsRmlyc3RcbiAgICApLFxuICAgIGdldE1ldGFkYXRhOiAoKSA9PiBvZih1bmRlZmluZWQpLnBpcGUoXG4gICAgICBvYnNlcnZlT3V0c2lkZUFuZ3VsYXIsXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gcmVmLmdldE1ldGFkYXRhKCkpLFxuICAgICAga2VlcFVuc3RhYmxlVW50aWxGaXJzdFxuICAgICksXG4gICAgZGVsZXRlOiAoKSA9PiBmcm9tKHJlZi5kZWxldGUoKSksXG4gICAgY2hpbGQ6IChwYXRoOiBzdHJpbmcpID0+IGNyZWF0ZVN0b3JhZ2VSZWYocmVmLmNoaWxkKHBhdGgpKSxcbiAgICB1cGRhdGVNZXRhZGF0YTogKG1ldGE6IFNldHRhYmxlTWV0YWRhdGEpID0+IGZyb20ocmVmLnVwZGF0ZU1ldGFkYXRhKG1ldGEpKSxcbiAgICBwdXQ6IChkYXRhOiBhbnksIG1ldGFkYXRhPzogVXBsb2FkTWV0YWRhdGEpID0+IHtcbiAgICAgIGNvbnN0IHRhc2sgPSByZWYucHV0KGRhdGEsIG1ldGFkYXRhKTtcbiAgICAgIHJldHVybiBjcmVhdGVVcGxvYWRUYXNrKHRhc2spO1xuICAgIH0sXG4gICAgcHV0U3RyaW5nOiAoZGF0YTogc3RyaW5nLCBmb3JtYXQ/OiBTdHJpbmdGb3JtYXQsIG1ldGFkYXRhPzogVXBsb2FkTWV0YWRhdGEpID0+IHtcbiAgICAgIGNvbnN0IHRhc2sgPSByZWYucHV0U3RyaW5nKGRhdGEsIGZvcm1hdCwgbWV0YWRhdGEpO1xuICAgICAgcmV0dXJuIGNyZWF0ZVVwbG9hZFRhc2sodGFzayk7XG4gICAgfSxcbiAgICBsaXN0OiAob3B0aW9ucz86IExpc3RPcHRpb25zKSA9PiBmcm9tKHJlZi5saXN0KG9wdGlvbnMpKSxcbiAgICBsaXN0QWxsOiAoKSA9PiBmcm9tKHJlZi5saXN0QWxsKCkpXG4gIH07XG59XG4iXX0=