@dereekb/dbx-firebase 12.6.21 → 13.0.0

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 (440) hide show
  1. package/LICENSE +1 -1
  2. package/fesm2022/dereekb-dbx-firebase.mjs +910 -1396
  3. package/fesm2022/dereekb-dbx-firebase.mjs.map +1 -1
  4. package/package.json +21 -23
  5. package/types/dereekb-dbx-firebase.d.ts +4304 -0
  6. package/esm2022/dereekb-dbx-firebase.mjs +0 -5
  7. package/esm2022/index.mjs +0 -2
  8. package/esm2022/lib/analytics/analytics.user.events.providers.mjs +0 -25
  9. package/esm2022/lib/analytics/analytics.user.events.service.mjs +0 -37
  10. package/esm2022/lib/analytics/analytics.user.source.mjs +0 -48
  11. package/esm2022/lib/analytics/index.mjs +0 -4
  12. package/esm2022/lib/auth/appcheck/appcheck.interceptor.mjs +0 -76
  13. package/esm2022/lib/auth/appcheck/appcheck.mjs +0 -11
  14. package/esm2022/lib/auth/appcheck/index.mjs +0 -3
  15. package/esm2022/lib/auth/auth.mjs +0 -22
  16. package/esm2022/lib/auth/firebase.auth.module.mjs +0 -22
  17. package/esm2022/lib/auth/firebase.auth.providers.mjs +0 -27
  18. package/esm2022/lib/auth/index.mjs +0 -7
  19. package/esm2022/lib/auth/login/firebase.login.module.mjs +0 -124
  20. package/esm2022/lib/auth/login/firebase.login.providers.default.mjs +0 -109
  21. package/esm2022/lib/auth/login/firebase.login.providers.mjs +0 -59
  22. package/esm2022/lib/auth/login/index.mjs +0 -27
  23. package/esm2022/lib/auth/login/login.anonymous.component.mjs +0 -23
  24. package/esm2022/lib/auth/login/login.apple.component.mjs +0 -23
  25. package/esm2022/lib/auth/login/login.button.component.mjs +0 -148
  26. package/esm2022/lib/auth/login/login.component.mjs +0 -39
  27. package/esm2022/lib/auth/login/login.context.back.component.mjs +0 -26
  28. package/esm2022/lib/auth/login/login.context.directive.mjs +0 -30
  29. package/esm2022/lib/auth/login/login.context.mjs +0 -7
  30. package/esm2022/lib/auth/login/login.email.component.mjs +0 -24
  31. package/esm2022/lib/auth/login/login.email.content.component.mjs +0 -102
  32. package/esm2022/lib/auth/login/login.email.form.component.mjs +0 -27
  33. package/esm2022/lib/auth/login/login.email.recovery.form.component.mjs +0 -21
  34. package/esm2022/lib/auth/login/login.facebook.component.mjs +0 -23
  35. package/esm2022/lib/auth/login/login.github.component.mjs +0 -23
  36. package/esm2022/lib/auth/login/login.google.component.mjs +0 -23
  37. package/esm2022/lib/auth/login/login.list.component.mjs +0 -71
  38. package/esm2022/lib/auth/login/login.microsoft.component.mjs +0 -23
  39. package/esm2022/lib/auth/login/login.mjs +0 -3
  40. package/esm2022/lib/auth/login/login.password.mjs +0 -4
  41. package/esm2022/lib/auth/login/login.service.mjs +0 -127
  42. package/esm2022/lib/auth/login/login.terms.component.mjs +0 -29
  43. package/esm2022/lib/auth/login/login.terms.mjs +0 -6
  44. package/esm2022/lib/auth/login/login.terms.simple.component.mjs +0 -38
  45. package/esm2022/lib/auth/login/login.twitter.component.mjs +0 -23
  46. package/esm2022/lib/auth/login/register.component.mjs +0 -27
  47. package/esm2022/lib/auth/login/register.email.component.mjs +0 -23
  48. package/esm2022/lib/auth/service/firebase.auth.rxjs.mjs +0 -46
  49. package/esm2022/lib/auth/service/firebase.auth.service.delegate.mjs +0 -28
  50. package/esm2022/lib/auth/service/firebase.auth.service.mjs +0 -193
  51. package/esm2022/lib/auth/service/index.mjs +0 -4
  52. package/esm2022/lib/development/development.directive.mjs +0 -78
  53. package/esm2022/lib/development/development.module.mjs +0 -61
  54. package/esm2022/lib/development/development.popup.component.mjs +0 -44
  55. package/esm2022/lib/development/development.popup.content.component.mjs +0 -79
  56. package/esm2022/lib/development/development.popup.content.form.component.mjs +0 -39
  57. package/esm2022/lib/development/development.providers.mjs +0 -47
  58. package/esm2022/lib/development/development.scheduler.list.component.mjs +0 -79
  59. package/esm2022/lib/development/development.scheduler.service.mjs +0 -78
  60. package/esm2022/lib/development/development.scheduler.widget.component.mjs +0 -40
  61. package/esm2022/lib/development/development.service.mjs +0 -20
  62. package/esm2022/lib/development/development.widget.mjs +0 -2
  63. package/esm2022/lib/development/development.widget.service.mjs +0 -56
  64. package/esm2022/lib/development/index.mjs +0 -14
  65. package/esm2022/lib/firebase/appcheck.mjs +0 -2
  66. package/esm2022/lib/firebase/emulators.mjs +0 -14
  67. package/esm2022/lib/firebase/firebase.emulator.module.mjs +0 -23
  68. package/esm2022/lib/firebase/firebase.emulator.providers.mjs +0 -33
  69. package/esm2022/lib/firebase/firebase.emulator.service.mjs +0 -29
  70. package/esm2022/lib/firebase/firebase.module.mjs +0 -26
  71. package/esm2022/lib/firebase/firebase.options.environment.mjs +0 -2
  72. package/esm2022/lib/firebase/firebase.options.mjs +0 -3
  73. package/esm2022/lib/firebase/firebase.providers.mjs +0 -149
  74. package/esm2022/lib/firebase/index.mjs +0 -10
  75. package/esm2022/lib/firestore/firebase.firestore.context.service.mjs +0 -18
  76. package/esm2022/lib/firestore/firebase.firestore.mjs +0 -6
  77. package/esm2022/lib/firestore/firebase.firestore.module.mjs +0 -23
  78. package/esm2022/lib/firestore/firebase.firestore.providers.mjs +0 -86
  79. package/esm2022/lib/firestore/index.mjs +0 -5
  80. package/esm2022/lib/function/firebase.function.module.mjs +0 -23
  81. package/esm2022/lib/function/firebase.function.providers.mjs +0 -54
  82. package/esm2022/lib/function/index.mjs +0 -3
  83. package/esm2022/lib/index.mjs +0 -14
  84. package/esm2022/lib/model/error.mjs +0 -6
  85. package/esm2022/lib/model/index.mjs +0 -7
  86. package/esm2022/lib/model/loader/collection.change.trigger.mjs +0 -80
  87. package/esm2022/lib/model/loader/collection.change.watcher.mjs +0 -35
  88. package/esm2022/lib/model/loader/collection.loader.instance.mjs +0 -227
  89. package/esm2022/lib/model/loader/collection.loader.mjs +0 -2
  90. package/esm2022/lib/model/loader/document.loader.instance.mjs +0 -68
  91. package/esm2022/lib/model/loader/document.loader.mjs +0 -2
  92. package/esm2022/lib/model/loader/index.mjs +0 -7
  93. package/esm2022/lib/model/model.module.mjs +0 -17
  94. package/esm2022/lib/model/modules/index.mjs +0 -3
  95. package/esm2022/lib/model/modules/model/entities/index.mjs +0 -11
  96. package/esm2022/lib/model/modules/model/entities/model.entities.component.mjs +0 -122
  97. package/esm2022/lib/model/modules/model/entities/model.entities.entity.component.mjs +0 -79
  98. package/esm2022/lib/model/modules/model/entities/model.entities.mjs +0 -15
  99. package/esm2022/lib/model/modules/model/entities/model.entities.popover.button.component.mjs +0 -49
  100. package/esm2022/lib/model/modules/model/entities/model.entities.popover.component.mjs +0 -42
  101. package/esm2022/lib/model/modules/model/entities/model.entities.providers.mjs +0 -20
  102. package/esm2022/lib/model/modules/model/entities/model.entities.source.directive.mjs +0 -38
  103. package/esm2022/lib/model/modules/model/entities/model.entities.widget.entity.abstract.directive.mjs +0 -18
  104. package/esm2022/lib/model/modules/model/entities/model.entities.widget.entity.debug.component.mjs +0 -41
  105. package/esm2022/lib/model/modules/model/entities/model.entities.widget.mjs +0 -51
  106. package/esm2022/lib/model/modules/model/entities/model.entities.widget.service.mjs +0 -91
  107. package/esm2022/lib/model/modules/model/history/index.mjs +0 -7
  108. package/esm2022/lib/model/modules/model/history/model.history.component.mjs +0 -36
  109. package/esm2022/lib/model/modules/model/history/model.history.module.mjs +0 -26
  110. package/esm2022/lib/model/modules/model/history/model.history.popover.button.component.mjs +0 -40
  111. package/esm2022/lib/model/modules/model/history/model.history.popover.component.mjs +0 -36
  112. package/esm2022/lib/model/modules/model/history/model.sourceselect.history.mjs +0 -18
  113. package/esm2022/lib/model/modules/model/history/model.tracker.service.mjs +0 -58
  114. package/esm2022/lib/model/modules/model/index.mjs +0 -8
  115. package/esm2022/lib/model/modules/model/model.key.component.mjs +0 -51
  116. package/esm2022/lib/model/modules/model/model.types.list.component.mjs +0 -67
  117. package/esm2022/lib/model/modules/model/model.types.module.mjs +0 -26
  118. package/esm2022/lib/model/modules/model/model.types.providers.mjs +0 -20
  119. package/esm2022/lib/model/modules/model/model.types.service.mjs +0 -122
  120. package/esm2022/lib/model/modules/model/model.types.view.directive.mjs +0 -45
  121. package/esm2022/lib/model/modules/store/index.mjs +0 -22
  122. package/esm2022/lib/model/modules/store/model.store.module.mjs +0 -21
  123. package/esm2022/lib/model/modules/store/store.collection.change.directive.mjs +0 -45
  124. package/esm2022/lib/model/modules/store/store.collection.change.if.directive.mjs +0 -42
  125. package/esm2022/lib/model/modules/store/store.collection.crud.mjs +0 -28
  126. package/esm2022/lib/model/modules/store/store.collection.directive.mjs +0 -99
  127. package/esm2022/lib/model/modules/store/store.collection.list.directive.mjs +0 -31
  128. package/esm2022/lib/model/modules/store/store.collection.mjs +0 -79
  129. package/esm2022/lib/model/modules/store/store.document.context.store.directive.mjs +0 -19
  130. package/esm2022/lib/model/modules/store/store.document.context.store.link.mjs +0 -45
  131. package/esm2022/lib/model/modules/store/store.document.context.store.mjs +0 -86
  132. package/esm2022/lib/model/modules/store/store.document.crud.mjs +0 -80
  133. package/esm2022/lib/model/modules/store/store.document.directive.mjs +0 -114
  134. package/esm2022/lib/model/modules/store/store.document.mjs +0 -193
  135. package/esm2022/lib/model/modules/store/store.document.twoway.key.directive.mjs +0 -26
  136. package/esm2022/lib/model/modules/store/store.document.twoway.key.source.directive.mjs +0 -22
  137. package/esm2022/lib/model/modules/store/store.document.twoway.key.source.mjs +0 -16
  138. package/esm2022/lib/model/modules/store/store.mjs +0 -2
  139. package/esm2022/lib/model/modules/store/store.subcollection.directive.mjs +0 -44
  140. package/esm2022/lib/model/modules/store/store.subcollection.document.mjs +0 -99
  141. package/esm2022/lib/model/modules/store/store.subcollection.mjs +0 -80
  142. package/esm2022/lib/model/modules/store/store.subcollection.rxjs.mjs +0 -23
  143. package/esm2022/lib/model/service/index.mjs +0 -5
  144. package/esm2022/lib/model/service/model.context.instance.mjs +0 -73
  145. package/esm2022/lib/model/service/model.context.mjs +0 -2
  146. package/esm2022/lib/model/service/model.context.providers.mjs +0 -32
  147. package/esm2022/lib/model/service/model.context.service.mjs +0 -38
  148. package/esm2022/lib/model/system/index.mjs +0 -6
  149. package/esm2022/lib/model/system/systemstate.collection.store.directive.mjs +0 -20
  150. package/esm2022/lib/model/system/systemstate.collection.store.mjs +0 -16
  151. package/esm2022/lib/model/system/systemstate.document.store.accessor.mjs +0 -35
  152. package/esm2022/lib/model/system/systemstate.document.store.directive.mjs +0 -19
  153. package/esm2022/lib/model/system/systemstate.document.store.mjs +0 -16
  154. package/esm2022/lib/module.mjs +0 -15
  155. package/esm2022/lib/modules/index.mjs +0 -3
  156. package/esm2022/lib/modules/notification/component/index.mjs +0 -6
  157. package/esm2022/lib/modules/notification/component/notificationitem.content.component.mjs +0 -15
  158. package/esm2022/lib/modules/notification/component/notificationitem.list.component.mjs +0 -90
  159. package/esm2022/lib/modules/notification/component/notificationitem.view.component.mjs +0 -37
  160. package/esm2022/lib/modules/notification/component/notificationitem.view.default.component.mjs +0 -27
  161. package/esm2022/lib/modules/notification/component/notificationitem.view.directive.mjs +0 -14
  162. package/esm2022/lib/modules/notification/container/index.mjs +0 -3
  163. package/esm2022/lib/modules/notification/container/notification.item.store.popover.button.component.mjs +0 -48
  164. package/esm2022/lib/modules/notification/container/notification.item.store.popover.component.mjs +0 -35
  165. package/esm2022/lib/modules/notification/index.mjs +0 -7
  166. package/esm2022/lib/modules/notification/notification.module.mjs +0 -103
  167. package/esm2022/lib/modules/notification/notification.providers.mjs +0 -47
  168. package/esm2022/lib/modules/notification/service/index.mjs +0 -4
  169. package/esm2022/lib/modules/notification/service/notification.template.service.mjs +0 -28
  170. package/esm2022/lib/modules/notification/service/notificationitem.widget.mjs +0 -11
  171. package/esm2022/lib/modules/notification/service/notificationitem.widget.service.mjs +0 -55
  172. package/esm2022/lib/modules/notification/store/index.mjs +0 -18
  173. package/esm2022/lib/modules/notification/store/notification.collection.store.directive.mjs +0 -21
  174. package/esm2022/lib/modules/notification/store/notification.collection.store.mjs +0 -23
  175. package/esm2022/lib/modules/notification/store/notification.document.store.directive.mjs +0 -21
  176. package/esm2022/lib/modules/notification/store/notification.document.store.mjs +0 -33
  177. package/esm2022/lib/modules/notification/store/notification.item.store.mjs +0 -30
  178. package/esm2022/lib/modules/notification/store/notificationbox.collection.store.directive.mjs +0 -21
  179. package/esm2022/lib/modules/notification/store/notificationbox.collection.store.mjs +0 -16
  180. package/esm2022/lib/modules/notification/store/notificationbox.document.store.directive.mjs +0 -21
  181. package/esm2022/lib/modules/notification/store/notificationbox.document.store.mjs +0 -22
  182. package/esm2022/lib/modules/notification/store/notificationsummary.collection.store.directive.mjs +0 -21
  183. package/esm2022/lib/modules/notification/store/notificationsummary.collection.store.mjs +0 -16
  184. package/esm2022/lib/modules/notification/store/notificationsummary.document.store.directive.mjs +0 -21
  185. package/esm2022/lib/modules/notification/store/notificationsummary.document.store.mjs +0 -34
  186. package/esm2022/lib/modules/notification/store/notificationuser.collection.store.directive.mjs +0 -21
  187. package/esm2022/lib/modules/notification/store/notificationuser.collection.store.mjs +0 -16
  188. package/esm2022/lib/modules/notification/store/notificationuser.document.store.directive.mjs +0 -21
  189. package/esm2022/lib/modules/notification/store/notificationuser.document.store.mjs +0 -18
  190. package/esm2022/lib/modules/storagefile/container/index.mjs +0 -8
  191. package/esm2022/lib/modules/storagefile/container/storagefile.download.button.component.mjs +0 -278
  192. package/esm2022/lib/modules/storagefile/container/storagefile.upload.action.handler.directive.mjs +0 -118
  193. package/esm2022/lib/modules/storagefile/container/storagefile.upload.error.mjs +0 -12
  194. package/esm2022/lib/modules/storagefile/container/storagefile.upload.handler.mjs +0 -260
  195. package/esm2022/lib/modules/storagefile/container/storagefile.upload.initialize.document.directive.mjs +0 -51
  196. package/esm2022/lib/modules/storagefile/container/storagefile.upload.store.directive.mjs +0 -38
  197. package/esm2022/lib/modules/storagefile/container/storagefile.upload.sync.directive.mjs +0 -36
  198. package/esm2022/lib/modules/storagefile/index.mjs +0 -6
  199. package/esm2022/lib/modules/storagefile/service/index.mjs +0 -3
  200. package/esm2022/lib/modules/storagefile/service/storagefile.download.service.mjs +0 -158
  201. package/esm2022/lib/modules/storagefile/service/storagefile.download.storage.service.mjs +0 -91
  202. package/esm2022/lib/modules/storagefile/storagefile.providers.mjs +0 -33
  203. package/esm2022/lib/modules/storagefile/storagefile.upload.module.mjs +0 -83
  204. package/esm2022/lib/modules/storagefile/store/index.mjs +0 -8
  205. package/esm2022/lib/modules/storagefile/store/storagefile.collection.store.directive.mjs +0 -22
  206. package/esm2022/lib/modules/storagefile/store/storagefile.collection.store.mjs +0 -18
  207. package/esm2022/lib/modules/storagefile/store/storagefile.document.store.directive.mjs +0 -21
  208. package/esm2022/lib/modules/storagefile/store/storagefile.document.store.mjs +0 -23
  209. package/esm2022/lib/modules/storagefile/store/storagefile.upload.store.mjs +0 -63
  210. package/esm2022/lib/modules/storagefile/store/storagefilegroup.document.store.directive.mjs +0 -21
  211. package/esm2022/lib/modules/storagefile/store/storagefilegroup.document.store.mjs +0 -18
  212. package/esm2022/lib/pipe/index.mjs +0 -4
  213. package/esm2022/lib/pipe/key.flat.pipe.mjs +0 -20
  214. package/esm2022/lib/pipe/key.twoway.pipe.mjs +0 -20
  215. package/esm2022/lib/pipe/pipe.module.mjs +0 -23
  216. package/esm2022/lib/providers.mjs +0 -48
  217. package/esm2022/lib/router/id.param.redirect.mjs +0 -64
  218. package/esm2022/lib/router/index.mjs +0 -2
  219. package/esm2022/lib/storage/firebase.storage.mjs +0 -10
  220. package/esm2022/lib/storage/firebase.storage.module.mjs +0 -22
  221. package/esm2022/lib/storage/firebase.storage.providers.mjs +0 -44
  222. package/esm2022/lib/storage/firebase.storage.service.mjs +0 -27
  223. package/esm2022/lib/storage/index.mjs +0 -5
  224. package/index.d.ts +0 -1
  225. package/lib/analytics/analytics.user.events.providers.d.ts +0 -6
  226. package/lib/analytics/analytics.user.events.service.d.ts +0 -19
  227. package/lib/analytics/analytics.user.source.d.ts +0 -21
  228. package/lib/analytics/index.d.ts +0 -3
  229. package/lib/auth/appcheck/appcheck.d.ts +0 -8
  230. package/lib/auth/appcheck/appcheck.interceptor.d.ts +0 -15
  231. package/lib/auth/appcheck/index.d.ts +0 -2
  232. package/lib/auth/auth.d.ts +0 -15
  233. package/lib/auth/firebase.auth.module.d.ts +0 -13
  234. package/lib/auth/firebase.auth.providers.d.ts +0 -21
  235. package/lib/auth/index.d.ts +0 -6
  236. package/lib/auth/login/firebase.login.module.d.ts +0 -36
  237. package/lib/auth/login/firebase.login.providers.d.ts +0 -32
  238. package/lib/auth/login/firebase.login.providers.default.d.ts +0 -7
  239. package/lib/auth/login/index.d.ts +0 -26
  240. package/lib/auth/login/login.anonymous.component.d.ts +0 -8
  241. package/lib/auth/login/login.apple.component.d.ts +0 -8
  242. package/lib/auth/login/login.button.component.d.ts +0 -53
  243. package/lib/auth/login/login.component.d.ts +0 -14
  244. package/lib/auth/login/login.context.back.component.d.ts +0 -8
  245. package/lib/auth/login/login.context.d.ts +0 -6
  246. package/lib/auth/login/login.context.directive.d.ts +0 -10
  247. package/lib/auth/login/login.d.ts +0 -7
  248. package/lib/auth/login/login.email.component.d.ts +0 -8
  249. package/lib/auth/login/login.email.content.component.d.ts +0 -41
  250. package/lib/auth/login/login.email.form.component.d.ts +0 -17
  251. package/lib/auth/login/login.email.recovery.form.component.d.ts +0 -11
  252. package/lib/auth/login/login.facebook.component.d.ts +0 -8
  253. package/lib/auth/login/login.github.component.d.ts +0 -8
  254. package/lib/auth/login/login.google.component.d.ts +0 -8
  255. package/lib/auth/login/login.list.component.d.ts +0 -21
  256. package/lib/auth/login/login.microsoft.component.d.ts +0 -8
  257. package/lib/auth/login/login.password.d.ts +0 -3
  258. package/lib/auth/login/login.service.d.ts +0 -115
  259. package/lib/auth/login/login.terms.component.d.ts +0 -9
  260. package/lib/auth/login/login.terms.d.ts +0 -18
  261. package/lib/auth/login/login.terms.simple.component.d.ts +0 -9
  262. package/lib/auth/login/login.twitter.component.d.ts +0 -8
  263. package/lib/auth/login/register.component.d.ts +0 -12
  264. package/lib/auth/login/register.email.component.d.ts +0 -8
  265. package/lib/auth/service/firebase.auth.rxjs.d.ts +0 -23
  266. package/lib/auth/service/firebase.auth.service.d.ts +0 -95
  267. package/lib/auth/service/firebase.auth.service.delegate.d.ts +0 -25
  268. package/lib/auth/service/index.d.ts +0 -3
  269. package/lib/development/development.directive.d.ts +0 -24
  270. package/lib/development/development.module.d.ts +0 -15
  271. package/lib/development/development.popup.component.d.ts +0 -14
  272. package/lib/development/development.popup.content.component.d.ts +0 -49
  273. package/lib/development/development.popup.content.form.component.d.ts +0 -17
  274. package/lib/development/development.providers.d.ts +0 -32
  275. package/lib/development/development.scheduler.list.component.d.ts +0 -23
  276. package/lib/development/development.scheduler.service.d.ts +0 -31
  277. package/lib/development/development.scheduler.widget.component.d.ts +0 -12
  278. package/lib/development/development.service.d.ts +0 -16
  279. package/lib/development/development.widget.d.ts +0 -8
  280. package/lib/development/development.widget.service.d.ts +0 -29
  281. package/lib/development/index.d.ts +0 -13
  282. package/lib/firebase/appcheck.d.ts +0 -21
  283. package/lib/firebase/emulators.d.ts +0 -60
  284. package/lib/firebase/firebase.emulator.module.d.ts +0 -14
  285. package/lib/firebase/firebase.emulator.providers.d.ts +0 -13
  286. package/lib/firebase/firebase.emulator.service.d.ts +0 -11
  287. package/lib/firebase/firebase.module.d.ts +0 -14
  288. package/lib/firebase/firebase.options.d.ts +0 -36
  289. package/lib/firebase/firebase.options.environment.d.ts +0 -10
  290. package/lib/firebase/firebase.providers.d.ts +0 -51
  291. package/lib/firebase/index.d.ts +0 -9
  292. package/lib/firestore/firebase.firestore.context.service.d.ts +0 -10
  293. package/lib/firestore/firebase.firestore.d.ts +0 -5
  294. package/lib/firestore/firebase.firestore.module.d.ts +0 -15
  295. package/lib/firestore/firebase.firestore.providers.d.ts +0 -62
  296. package/lib/firestore/index.d.ts +0 -4
  297. package/lib/function/firebase.function.module.d.ts +0 -16
  298. package/lib/function/firebase.function.providers.d.ts +0 -43
  299. package/lib/function/index.d.ts +0 -2
  300. package/lib/index.d.ts +0 -13
  301. package/lib/model/error.d.ts +0 -2
  302. package/lib/model/index.d.ts +0 -6
  303. package/lib/model/loader/collection.change.trigger.d.ts +0 -57
  304. package/lib/model/loader/collection.change.watcher.d.ts +0 -44
  305. package/lib/model/loader/collection.loader.d.ts +0 -61
  306. package/lib/model/loader/collection.loader.instance.d.ts +0 -110
  307. package/lib/model/loader/document.loader.d.ts +0 -75
  308. package/lib/model/loader/document.loader.instance.d.ts +0 -46
  309. package/lib/model/loader/index.d.ts +0 -6
  310. package/lib/model/model.module.d.ts +0 -9
  311. package/lib/model/modules/index.d.ts +0 -2
  312. package/lib/model/modules/model/entities/index.d.ts +0 -10
  313. package/lib/model/modules/model/entities/model.entities.component.d.ts +0 -47
  314. package/lib/model/modules/model/entities/model.entities.d.ts +0 -60
  315. package/lib/model/modules/model/entities/model.entities.entity.component.d.ts +0 -43
  316. package/lib/model/modules/model/entities/model.entities.popover.button.component.d.ts +0 -30
  317. package/lib/model/modules/model/entities/model.entities.popover.component.d.ts +0 -59
  318. package/lib/model/modules/model/entities/model.entities.providers.d.ts +0 -22
  319. package/lib/model/modules/model/entities/model.entities.source.directive.d.ts +0 -8
  320. package/lib/model/modules/model/entities/model.entities.widget.d.ts +0 -30
  321. package/lib/model/modules/model/entities/model.entities.widget.entity.abstract.directive.d.ts +0 -13
  322. package/lib/model/modules/model/entities/model.entities.widget.entity.debug.component.d.ts +0 -17
  323. package/lib/model/modules/model/entities/model.entities.widget.service.d.ts +0 -74
  324. package/lib/model/modules/model/history/index.d.ts +0 -6
  325. package/lib/model/modules/model/history/model.history.component.d.ts +0 -16
  326. package/lib/model/modules/model/history/model.history.module.d.ts +0 -16
  327. package/lib/model/modules/model/history/model.history.popover.button.component.d.ts +0 -16
  328. package/lib/model/modules/model/history/model.history.popover.component.d.ts +0 -50
  329. package/lib/model/modules/model/history/model.sourceselect.history.d.ts +0 -32
  330. package/lib/model/modules/model/history/model.tracker.service.d.ts +0 -43
  331. package/lib/model/modules/model/index.d.ts +0 -7
  332. package/lib/model/modules/model/model.key.component.d.ts +0 -25
  333. package/lib/model/modules/model/model.types.list.component.d.ts +0 -22
  334. package/lib/model/modules/model/model.types.module.d.ts +0 -16
  335. package/lib/model/modules/model/model.types.providers.d.ts +0 -22
  336. package/lib/model/modules/model/model.types.service.d.ts +0 -90
  337. package/lib/model/modules/model/model.types.view.directive.d.ts +0 -19
  338. package/lib/model/modules/store/index.d.ts +0 -21
  339. package/lib/model/modules/store/model.store.module.d.ts +0 -11
  340. package/lib/model/modules/store/store.collection.change.directive.d.ts +0 -28
  341. package/lib/model/modules/store/store.collection.change.if.directive.d.ts +0 -18
  342. package/lib/model/modules/store/store.collection.crud.d.ts +0 -21
  343. package/lib/model/modules/store/store.collection.d.ts +0 -97
  344. package/lib/model/modules/store/store.collection.directive.d.ts +0 -56
  345. package/lib/model/modules/store/store.collection.list.directive.d.ts +0 -16
  346. package/lib/model/modules/store/store.d.ts +0 -87
  347. package/lib/model/modules/store/store.document.context.store.d.ts +0 -59
  348. package/lib/model/modules/store/store.document.context.store.directive.d.ts +0 -8
  349. package/lib/model/modules/store/store.document.context.store.link.d.ts +0 -17
  350. package/lib/model/modules/store/store.document.crud.d.ts +0 -63
  351. package/lib/model/modules/store/store.document.d.ts +0 -101
  352. package/lib/model/modules/store/store.document.directive.d.ts +0 -66
  353. package/lib/model/modules/store/store.document.twoway.key.directive.d.ts +0 -14
  354. package/lib/model/modules/store/store.document.twoway.key.source.d.ts +0 -10
  355. package/lib/model/modules/store/store.document.twoway.key.source.directive.d.ts +0 -13
  356. package/lib/model/modules/store/store.subcollection.d.ts +0 -51
  357. package/lib/model/modules/store/store.subcollection.directive.d.ts +0 -28
  358. package/lib/model/modules/store/store.subcollection.document.d.ts +0 -67
  359. package/lib/model/modules/store/store.subcollection.rxjs.d.ts +0 -24
  360. package/lib/model/service/index.d.ts +0 -4
  361. package/lib/model/service/model.context.d.ts +0 -33
  362. package/lib/model/service/model.context.instance.d.ts +0 -17
  363. package/lib/model/service/model.context.providers.d.ts +0 -18
  364. package/lib/model/service/model.context.service.d.ts +0 -31
  365. package/lib/model/system/index.d.ts +0 -5
  366. package/lib/model/system/systemstate.collection.store.d.ts +0 -8
  367. package/lib/model/system/systemstate.collection.store.directive.d.ts +0 -9
  368. package/lib/model/system/systemstate.document.store.accessor.d.ts +0 -22
  369. package/lib/model/system/systemstate.document.store.d.ts +0 -8
  370. package/lib/model/system/systemstate.document.store.directive.d.ts +0 -9
  371. package/lib/module.d.ts +0 -7
  372. package/lib/modules/index.d.ts +0 -2
  373. package/lib/modules/notification/component/index.d.ts +0 -5
  374. package/lib/modules/notification/component/notificationitem.content.component.d.ts +0 -9
  375. package/lib/modules/notification/component/notificationitem.list.component.d.ts +0 -24
  376. package/lib/modules/notification/component/notificationitem.view.component.d.ts +0 -10
  377. package/lib/modules/notification/component/notificationitem.view.default.component.d.ts +0 -9
  378. package/lib/modules/notification/component/notificationitem.view.directive.d.ts +0 -8
  379. package/lib/modules/notification/container/index.d.ts +0 -2
  380. package/lib/modules/notification/container/notification.item.store.popover.button.component.d.ts +0 -17
  381. package/lib/modules/notification/container/notification.item.store.popover.component.d.ts +0 -50
  382. package/lib/modules/notification/index.d.ts +0 -6
  383. package/lib/modules/notification/notification.module.d.ts +0 -38
  384. package/lib/modules/notification/notification.providers.d.ts +0 -24
  385. package/lib/modules/notification/service/index.d.ts +0 -3
  386. package/lib/modules/notification/service/notification.template.service.d.ts +0 -11
  387. package/lib/modules/notification/service/notificationitem.widget.d.ts +0 -26
  388. package/lib/modules/notification/service/notificationitem.widget.service.d.ts +0 -22
  389. package/lib/modules/notification/store/index.d.ts +0 -17
  390. package/lib/modules/notification/store/notification.collection.store.d.ts +0 -9
  391. package/lib/modules/notification/store/notification.collection.store.directive.d.ts +0 -9
  392. package/lib/modules/notification/store/notification.document.store.d.ts +0 -16
  393. package/lib/modules/notification/store/notification.document.store.directive.d.ts +0 -9
  394. package/lib/modules/notification/store/notification.item.store.d.ts +0 -28
  395. package/lib/modules/notification/store/notificationbox.collection.store.d.ts +0 -8
  396. package/lib/modules/notification/store/notificationbox.collection.store.directive.d.ts +0 -9
  397. package/lib/modules/notification/store/notificationbox.document.store.d.ts +0 -13
  398. package/lib/modules/notification/store/notificationbox.document.store.directive.d.ts +0 -9
  399. package/lib/modules/notification/store/notificationsummary.collection.store.d.ts +0 -8
  400. package/lib/modules/notification/store/notificationsummary.collection.store.directive.d.ts +0 -9
  401. package/lib/modules/notification/store/notificationsummary.document.store.d.ts +0 -21
  402. package/lib/modules/notification/store/notificationsummary.document.store.directive.d.ts +0 -9
  403. package/lib/modules/notification/store/notificationuser.collection.store.d.ts +0 -8
  404. package/lib/modules/notification/store/notificationuser.collection.store.directive.d.ts +0 -9
  405. package/lib/modules/notification/store/notificationuser.document.store.d.ts +0 -11
  406. package/lib/modules/notification/store/notificationuser.document.store.directive.d.ts +0 -9
  407. package/lib/modules/storagefile/container/index.d.ts +0 -7
  408. package/lib/modules/storagefile/container/storagefile.download.button.component.d.ts +0 -160
  409. package/lib/modules/storagefile/container/storagefile.upload.action.handler.directive.d.ts +0 -47
  410. package/lib/modules/storagefile/container/storagefile.upload.error.d.ts +0 -9
  411. package/lib/modules/storagefile/container/storagefile.upload.handler.d.ts +0 -183
  412. package/lib/modules/storagefile/container/storagefile.upload.initialize.document.directive.d.ts +0 -21
  413. package/lib/modules/storagefile/container/storagefile.upload.store.directive.d.ts +0 -20
  414. package/lib/modules/storagefile/container/storagefile.upload.sync.directive.d.ts +0 -18
  415. package/lib/modules/storagefile/index.d.ts +0 -5
  416. package/lib/modules/storagefile/service/index.d.ts +0 -2
  417. package/lib/modules/storagefile/service/storagefile.download.service.d.ts +0 -79
  418. package/lib/modules/storagefile/service/storagefile.download.storage.service.d.ts +0 -56
  419. package/lib/modules/storagefile/storagefile.providers.d.ts +0 -13
  420. package/lib/modules/storagefile/storagefile.upload.module.d.ts +0 -29
  421. package/lib/modules/storagefile/store/index.d.ts +0 -7
  422. package/lib/modules/storagefile/store/storagefile.collection.store.d.ts +0 -10
  423. package/lib/modules/storagefile/store/storagefile.collection.store.directive.d.ts +0 -9
  424. package/lib/modules/storagefile/store/storagefile.document.store.d.ts +0 -16
  425. package/lib/modules/storagefile/store/storagefile.document.store.directive.d.ts +0 -9
  426. package/lib/modules/storagefile/store/storagefile.upload.store.d.ts +0 -166
  427. package/lib/modules/storagefile/store/storagefilegroup.document.store.d.ts +0 -11
  428. package/lib/modules/storagefile/store/storagefilegroup.document.store.directive.d.ts +0 -9
  429. package/lib/pipe/index.d.ts +0 -3
  430. package/lib/pipe/key.flat.pipe.d.ts +0 -9
  431. package/lib/pipe/key.twoway.pipe.d.ts +0 -9
  432. package/lib/pipe/pipe.module.d.ts +0 -13
  433. package/lib/providers.d.ts +0 -64
  434. package/lib/router/id.param.redirect.d.ts +0 -41
  435. package/lib/router/index.d.ts +0 -1
  436. package/lib/storage/firebase.storage.d.ts +0 -9
  437. package/lib/storage/firebase.storage.module.d.ts +0 -13
  438. package/lib/storage/firebase.storage.providers.d.ts +0 -31
  439. package/lib/storage/firebase.storage.service.d.ts +0 -13
  440. package/lib/storage/index.d.ts +0 -4
@@ -1,260 +0,0 @@
1
- import { catchError, map, Observable, of, shareReplay } from 'rxjs';
2
- import { runAsyncTasksForValues, separateValues } from '@dereekb/util';
3
- import { MultiSubscriptionObject } from '@dereekb/rxjs';
4
- /**
5
- * Default implementation of StorageFileUploadHandler.
6
- */
7
- export function storageFileUploadHandler(config) {
8
- const { storageService, storageFileUploadConfigFactory } = config;
9
- let resumable;
10
- return {
11
- uploadFile: async (file) => {
12
- const storageFileUploadConfig = await storageFileUploadConfigFactory(file);
13
- const { storagePath } = storageFileUploadConfig;
14
- const storageAccessorFile = storageService.file(storagePath);
15
- const upload = new Observable((x) => {
16
- if (storageAccessorFile.uploadResumable) {
17
- resumable = storageAccessorFile.uploadResumable(file);
18
- // subscribe to the event by piping this observable to it
19
- resumable
20
- .streamSnapshotEvents()
21
- .pipe(map((x) => {
22
- const { bytesTransferred, totalBytes } = x;
23
- const progress = {
24
- file,
25
- fileRef: storageAccessorFile,
26
- uploadRef: resumable,
27
- bytesTransferred,
28
- totalBytes,
29
- progress: bytesTransferred / totalBytes
30
- };
31
- return progress;
32
- }))
33
- .pipe(catchError((error) => {
34
- // if an error occurs, catch it and emit it as a progress
35
- const progress = {
36
- file,
37
- fileRef: storageAccessorFile,
38
- uploadRef: resumable,
39
- error,
40
- failed: true
41
- };
42
- return of(progress);
43
- }))
44
- .subscribe(x);
45
- }
46
- else {
47
- throw new Error('uploadResumable() function was unavailable.');
48
- }
49
- }).pipe(shareReplay(1));
50
- const instance = {
51
- upload,
52
- taskRef: storageAccessorFile,
53
- pause: () => resumable?.pause() ?? false,
54
- resume: () => resumable?.resume() ?? false,
55
- cancel: () => resumable?.cancel() ?? false
56
- };
57
- return instance;
58
- }
59
- };
60
- }
61
- /**
62
- * Uploads files using the provided upload handler and files.
63
- *
64
- * An observable is returned that emits the latest file events from any file that is being uploaded.
65
- *
66
- * @param input
67
- * @returns
68
- */
69
- export function storageFileUploadFiles(input) {
70
- const { uploadHandler, files, maxParallelUploads: inputMaxParallelUploads } = input;
71
- const maxParallelTasks = inputMaxParallelUploads ?? 3;
72
- const multiUploadsSubscriptionObject = new MultiSubscriptionObject();
73
- // begin the upload for each file
74
- const allFiles = Array.from(files);
75
- // unsubscribe from all previous uploads
76
- multiUploadsSubscriptionObject.unsub();
77
- const allFilesAndLatestProgress = new Array(allFiles.length);
78
- const allFilesAndDetails = allFiles.map((file) => ({ file }));
79
- const overallProgressPerCompletedFile = (1 / allFilesAndLatestProgress.length);
80
- /**
81
- * Once set, any new file upload task that hits this will return an cancel failure.
82
- */
83
- let flaggedCancel = false;
84
- const cancel = () => {
85
- flaggedCancel = true;
86
- };
87
- const upload = new Observable((subscriber) => {
88
- const overallStartTime = new Date();
89
- const incompleteFileFileIndexes = new Set(allFiles.map((_, index) => index));
90
- const activeFileIndexes = new Set();
91
- const doneFileIndexes = new Set();
92
- let latestOverallProgress = 0;
93
- function onStartFileUpload(index, uploadInstance) {
94
- activeFileIndexes.add(index);
95
- allFilesAndDetails[index].startTime = new Date();
96
- allFilesAndDetails[index].uploadInstance = uploadInstance;
97
- allFilesAndDetails[index].fileRef = uploadInstance.taskRef;
98
- }
99
- function onStartFileUploadFlaggedCancelled(index) {
100
- allFilesAndDetails[index].startTime = new Date();
101
- // immediately mark it done
102
- _markFileUploadDone(index, true);
103
- // emit new progress event
104
- _emitEvent();
105
- }
106
- function _markFileUploadDone(fileIndex, finalError) {
107
- doneFileIndexes.add(fileIndex); // add to done file indexes
108
- activeFileIndexes.delete(fileIndex); // remove from active file indexes if it exists
109
- incompleteFileFileIndexes.delete(fileIndex); // remove from incomplete file indexes
110
- // update details
111
- allFilesAndDetails[fileIndex].endTime = new Date();
112
- const error = finalError ?? allFilesAndDetails[fileIndex].error;
113
- allFilesAndDetails[fileIndex].success = !error;
114
- allFilesAndDetails[fileIndex].error = error;
115
- }
116
- function updateUploadProgress(input) {
117
- const { index: fileIndex, nextProgress, fileUploadTaskDone: inputFileUploadTaskDone, nonProgressError } = input;
118
- const error = nonProgressError ?? nextProgress?.error;
119
- const fileUploadTaskDone = inputFileUploadTaskDone ?? Boolean(error);
120
- // the task may already be done, as after a progress-related error the complete task can get called.
121
- const isTaskAlreadyDone = allFilesAndDetails[fileIndex].endTime != null;
122
- if (!isTaskAlreadyDone) {
123
- let nextOverallProgress = latestOverallProgress;
124
- const nextProgressPercent = fileUploadTaskDone ? 100 : (nextProgress?.progress ?? 0) * 100;
125
- // update the overall progress percentage
126
- if (nextProgressPercent) {
127
- // update the overall percentage
128
- const previousProgress = allFilesAndLatestProgress[fileIndex];
129
- const previousProgressPercent = previousProgress?.progress != null ? previousProgress.progress * 100 : 0;
130
- const progressPercentChange = nextProgressPercent - previousProgressPercent;
131
- // increase overall progress by the change
132
- nextOverallProgress += progressPercentChange * overallProgressPerCompletedFile;
133
- }
134
- // update the file progress
135
- if (nextProgress) {
136
- // update the latest FileProgress
137
- allFilesAndLatestProgress[fileIndex] = nextProgress;
138
- // only set fileRef once
139
- if (!allFilesAndDetails[fileIndex].fileRef) {
140
- allFilesAndDetails[fileIndex].fileRef = nextProgress.fileRef;
141
- }
142
- }
143
- // if complete, update the indexes and details
144
- if (fileUploadTaskDone) {
145
- _markFileUploadDone(fileIndex, error);
146
- }
147
- // update the overall progress
148
- latestOverallProgress = nextOverallProgress;
149
- // emit the event to send it
150
- _emitEvent(nextProgress);
151
- }
152
- }
153
- function _emitEvent(nextProgress) {
154
- const isComplete = incompleteFileFileIndexes.size === 0;
155
- let overallProgress = latestOverallProgress;
156
- let result = undefined;
157
- if (isComplete) {
158
- overallProgress = 100; // set to 100%
159
- const overallEndTime = new Date();
160
- const fileResults = allFiles.map((file, index) => {
161
- const result = {
162
- startTime: allFilesAndDetails[index].startTime,
163
- endTime: allFilesAndDetails[index].endTime,
164
- file,
165
- fileRef: allFilesAndDetails[index].fileRef,
166
- success: !allFilesAndDetails[index].error,
167
- error: allFilesAndDetails[index].error
168
- };
169
- return result;
170
- });
171
- const { included: successFileResults, excluded: errorFileResults } = separateValues(fileResults, (x) => x.success);
172
- // all are done, set the result on the next event
173
- result = {
174
- startTime: overallStartTime,
175
- endTime: overallEndTime,
176
- successFileResults,
177
- errorFileResults,
178
- fileResults
179
- };
180
- }
181
- const nextEvent = {
182
- allFiles,
183
- isComplete,
184
- overallProgress,
185
- uploadProgress: nextProgress,
186
- incompleteFileCount: incompleteFileFileIndexes.size,
187
- activeFileCount: activeFileIndexes.size,
188
- doneFileCount: doneFileIndexes.size,
189
- result
190
- };
191
- subscriber.next(nextEvent);
192
- }
193
- async function runUploadTaskForFile([file, index]) {
194
- if (flaggedCancel) {
195
- onStartFileUploadFlaggedCancelled(index);
196
- return Promise.resolve();
197
- }
198
- return new Promise((resolve) => {
199
- const updateFileUploadProgress = (nextProgress) => {
200
- // update the progress
201
- updateUploadProgress({
202
- index,
203
- nextProgress
204
- });
205
- };
206
- const updateFileUploadProgressWithUncaughtError = (error) => {
207
- // error occurred, update the progress with the error
208
- updateUploadProgress({
209
- index,
210
- nonProgressError: error,
211
- fileUploadTaskDone: true
212
- });
213
- // always resolve, never reject
214
- resolve();
215
- };
216
- const completeFileUploadProgress = () => {
217
- updateUploadProgress({
218
- index,
219
- fileUploadTaskDone: true
220
- });
221
- resolve();
222
- };
223
- // upload the file, subscribe to the progress
224
- try {
225
- uploadHandler
226
- .uploadFile(file)
227
- .then((uploadInstance) => {
228
- // add to active file indexes
229
- onStartFileUpload(index, uploadInstance);
230
- const uploadSubscription = uploadInstance.upload.subscribe({
231
- next: updateFileUploadProgress,
232
- error: updateFileUploadProgressWithUncaughtError,
233
- complete: completeFileUploadProgress
234
- });
235
- multiUploadsSubscriptionObject.addSubs(uploadSubscription);
236
- })
237
- .catch(updateFileUploadProgressWithUncaughtError);
238
- }
239
- catch (error) {
240
- updateFileUploadProgressWithUncaughtError(error);
241
- }
242
- });
243
- }
244
- // run upload task for each file
245
- const fileTuples = allFiles.map((file, index) => [file, index]);
246
- runAsyncTasksForValues(fileTuples, runUploadTaskForFile, {
247
- maxParallelTasks,
248
- retriesAllowed: 0 // no retries allowed
249
- }).then(() => {
250
- // all tasks are finished. Complete the subscriber.
251
- subscriber.complete();
252
- });
253
- }).pipe(shareReplay(1));
254
- const instance = {
255
- cancel,
256
- upload
257
- };
258
- return instance;
259
- }
260
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZWZpbGUudXBsb2FkLmhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZmlyZWJhc2Uvc3JjL2xpYi9tb2R1bGVzL3N0b3JhZ2VmaWxlL2NvbnRhaW5lci9zdG9yYWdlZmlsZS51cGxvYWQuaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUdwRSxPQUFPLEVBQThGLHNCQUFzQixFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuSyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFxRXhEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLHdCQUF3QixDQUFDLE1BQXNDO0lBQzdFLE1BQU0sRUFBRSxjQUFjLEVBQUUsOEJBQThCLEVBQUUsR0FBRyxNQUFNLENBQUM7SUFFbEUsSUFBSSxTQUFtQyxDQUFDO0lBRXhDLE9BQU87UUFDTCxVQUFVLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFO1lBQ3pCLE1BQU0sdUJBQXVCLEdBQUcsTUFBTSw4QkFBOEIsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUUzRSxNQUFNLEVBQUUsV0FBVyxFQUFFLEdBQUcsdUJBQXVCLENBQUM7WUFDaEQsTUFBTSxtQkFBbUIsR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBRTdELE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxDQUFnRCxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNqRixJQUFJLG1CQUFtQixDQUFDLGVBQWUsRUFBRSxDQUFDO29CQUN4QyxTQUFTLEdBQUcsbUJBQW1CLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUV0RCx5REFBeUQ7b0JBQ3pELFNBQVM7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Y0FBYyxDQUFDLENBQUM7d0JBRXpDLE1BQU0sa0JBQWtCLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUM7NEJBQ3pELElBQUksRUFBRSx3QkFBd0I7NEJBQzlCLEtBQUssRUFBRSx5Q0FBeUM7NEJBQ2hELFFBQVEsRUFBRSwwQkFBMEI7eUJBQ3JDLENBQUMsQ0FBQzt3QkFFSCw4QkFBOEIsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQztvQkFDN0QsQ0FBQyxDQUFDO3lCQUNELEtBQUssQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDO2dCQUN0RCxDQUFDO2dCQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7b0JBQ2YseUNBQXlDLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ25ELENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxnQ0FBZ0M7UUFDaEMsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBVSxDQUFDLENBQUM7UUFFekUsc0JBQXNCLENBQUMsVUFBVSxFQUFFLG9CQUFvQixFQUFFO1lBQ3ZELGdCQUFnQjtZQUNoQixjQUFjLEVBQUUsQ0FBQyxDQUFDLHFCQUFxQjtTQUN4QyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNYLG1EQUFtRDtZQUNuRCxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFeEIsTUFBTSxRQUFRLEdBQW1DO1FBQy9DLE1BQU07UUFDTixNQUFNO0tBQ1AsQ0FBQztJQUVGLE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIE9ic2VydmFibGUsIG9mLCBzaGFyZVJlcGxheSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdHlwZSBEYnhGaXJlYmFzZVN0b3JhZ2VGaWxlVXBsb2FkU3RvcmVGaWxlUHJvZ3Jlc3MgfSBmcm9tICcuLi9zdG9yZSc7XG5pbXBvcnQgeyB0eXBlIERieEZpcmViYXNlU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zdG9yYWdlL2ZpcmViYXNlLnN0b3JhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyB0eXBlIEluZGV4TnVtYmVyLCB0eXBlIE1heWJlLCB0eXBlIFBlcmNlbnREZWNpbWFsLCB0eXBlIFBlcmNlbnROdW1iZXIsIHR5cGUgUHJvbWlzZU9yVmFsdWUsIHJ1bkFzeW5jVGFza3NGb3JWYWx1ZXMsIHNlcGFyYXRlVmFsdWVzIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyBNdWx0aVN1YnNjcmlwdGlvbk9iamVjdCB9IGZyb20gJ0BkZXJlZWtiL3J4anMnO1xuaW1wb3J0IHsgdHlwZSBGaXJlYmFzZVN0b3JhZ2VBY2Nlc3NvckZpbGUsIHR5cGUgU3RvcmFnZUN1c3RvbU1ldGFkYXRhLCB0eXBlIFN0b3JhZ2VQYXRoSW5wdXQsIHR5cGUgU3RvcmFnZVVwbG9hZE9wdGlvbnMsIHR5cGUgU3RvcmFnZVVwbG9hZFRhc2sgfSBmcm9tICdAZGVyZWVrYi9maXJlYmFzZSc7XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBvYnNlcnZhYmxlIGZvciB1cGxvYWRpbmcgYSBmaWxlLlxuICovXG5leHBvcnQgdHlwZSBTdG9yYWdlRmlsZVVwbG9hZEhhbmRsZXJGdW5jdGlvbiA9IChmaWxlOiBGaWxlKSA9PiBQcm9taXNlPFN0b3JhZ2VGaWxlVXBsb2FkSGFuZGxlckluc3RhbmNlPjtcblxuZXhwb3J0IGludGVyZmFjZSBTdG9yYWdlRmlsZVVwbG9hZEhhbmRsZXJJbnN0YW5jZSBleHRlbmRzIFBpY2s8U3RvcmFnZVVwbG9hZFRhc2s8RmlyZWJhc2VTdG9yYWdlQWNjZXNzb3JGaWxlPiwgJ3Rhc2tSZWYnIHwgJ3BhdXNlJyB8ICdyZXN1bWUnIHwgJ2NhbmNlbCc+IHtcbiAgLyoqXG4gICAqIFRoZSB1cGxvYWQgb2JzZXJ2YWJsZS5cbiAgICpcbiAgICogTXVzdCBiZSBzdWJzY3JpYmVkIHRvIGluIG9yZGVyIGZvciB0aGUgdXBsb2FkIHRvIGJlZ2luLlxuICAgKi9cbiAgcmVhZG9ubHkgdXBsb2FkOiBPYnNlcnZhYmxlPERieEZpcmViYXNlU3RvcmFnZUZpbGVVcGxvYWRTdG9yZUZpbGVQcm9ncmVzcz47XG59XG5cbi8qKlxuICogSGFuZGxlcyB1cGxvYWRpbmcgZmlsZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RvcmFnZUZpbGVVcGxvYWRIYW5kbGVyIHtcbiAgLyoqXG4gICAqIFVwbG9hZHMgYSBmaWxlLCBhbmQgcmV0dXJucyB0aGUgZmlsZSBwcm9ncmVzcyBhcyBpdCBpcyB1cGxvYWRpbmcuXG4gICAqL1xuICByZWFkb25seSB1cGxvYWRGaWxlOiBTdG9yYWdlRmlsZVVwbG9hZEhhbmRsZXJGdW5jdGlvbjtcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBhIHNpbmdsZSBmaWxlIHVwbG9hZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdG9yYWdlRmlsZVVwbG9hZENvbmZpZyB7XG4gIC8qKlxuICAgKiBQYXRoIGZvciB3aGVyZSB0byB1cGxvYWQgdGhlIGZpbGUgdG9cbiAgICovXG4gIHJlYWRvbmx5IHN0b3JhZ2VQYXRoOiBTdG9yYWdlUGF0aElucHV0O1xuICAvKipcbiAgICogVXBsb2FkIG9wdGlvbnMgZm9yIHRoZSBmaWxlLlxuICAgKlxuICAgKiBSZXN1bWFibGUgaXMgbm90IHN1cHBvcnRlZC5cbiAgICovXG4gIHJlYWRvbmx5IHVwbG9hZE9wdGlvbnM/OiBTdG9yYWdlRmlsZVVwbG9hZENvbmZpZ09wdGlvbnM7XG4gIC8qKlxuICAgKiBDdXN0b20gbWV0YWRhdGEgZm9yIHRoZSBmaWxlLlxuICAgKlxuICAgKiBJcyBtZXJnZWQgd2l0aCB1cGxvYWRPcHRpb25zJ3MgbWV0YWRhdGEuXG4gICAqL1xuICByZWFkb25seSBjdXN0b21NZXRhZGF0YT86IFN0b3JhZ2VDdXN0b21NZXRhZGF0YTtcbn1cblxuLyoqXG4gKiBTdG9yYWdlRmlsZVVwbG9hZENvbmZpZyB1cGxvYWQgb3B0aW9ucy5cbiAqL1xuZXhwb3J0IHR5cGUgU3RvcmFnZUZpbGVVcGxvYWRDb25maWdPcHRpb25zID0gT21pdDxTdG9yYWdlVXBsb2FkT3B0aW9ucywgJ3Jlc3VtYWJsZSc+O1xuXG4vKipcbiAqIEZ1bmN0aW9uIHVzZWQgdG8gZ2VuZXJhdGUgZmlsZSBuYW1lcyBmb3IgdGhlIHVwbG9hZGVkIGZpbGVzLlxuICpcbiAqIElmIG5vdCBzZXQsIHRoZSBmaWxlIG5hbWUgd2lsbCBiZSB1c2VkIGFzIGlzLlxuICovXG5leHBvcnQgdHlwZSBTdG9yYWdlRmlsZVVwbG9hZENvbmZpZ0ZhY3RvcnkgPSAoZmlsZTogRmlsZSkgPT4gUHJvbWlzZU9yVmFsdWU8U3RvcmFnZUZpbGVVcGxvYWRDb25maWc+O1xuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIFN0b3JhZ2VGaWxlVXBsb2FkSGFuZGxlcigpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0b3JhZ2VGaWxlVXBsb2FkSGFuZGxlckNvbmZpZyB7XG4gIHJlYWRvbmx5IHN0b3JhZ2VTZXJ2aWNlOiBEYnhGaXJlYmFzZVN0b3JhZ2VTZXJ2aWNlO1xuICByZWFkb25seSBzdG9yYWdlRmlsZVVwbG9hZENvbmZpZ0ZhY3Rvcnk6IFN0b3JhZ2VGaWxlVXBsb2FkQ29uZmlnRmFjdG9yeTtcbn1cblxuLyoqXG4gKiBEZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mIFN0b3JhZ2VGaWxlVXBsb2FkSGFuZGxlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0b3JhZ2VGaWxlVXBsb2FkSGFuZGxlcihjb25maWc6IFN0b3JhZ2VGaWxlVXBsb2FkSGFuZGxlckNvbmZpZyk6IFN0b3JhZ2VGaWxlVXBsb2FkSGFuZGxlciB7XG4gIGNvbnN0IHsgc3RvcmFnZVNlcnZpY2UsIHN0b3JhZ2VGaWxlVXBsb2FkQ29uZmlnRmFjdG9yeSB9ID0gY29uZmlnO1xuXG4gIGxldCByZXN1bWFibGU6IE1heWJlPFN0b3JhZ2VVcGxvYWRUYXNrPjtcblxuICByZXR1cm4ge1xuICAgIHVwbG9hZEZpbGU6IGFzeW5jIChmaWxlKSA9PiB7XG4gICAgICBjb25zdCBzdG9yYWdlRmlsZVVwbG9hZENvbmZpZyA9IGF3YWl0IHN0b3JhZ2VGaWxlVXBsb2FkQ29uZmlnRmFjdG9yeShmaWxlKTtcblxuICAgICAgY29uc3QgeyBzdG9yYWdlUGF0aCB9ID0gc3RvcmFnZUZpbGVVcGxvYWRDb25maWc7XG4gICAgICBjb25zdCBzdG9yYWdlQWNjZXNzb3JGaWxlID0gc3RvcmFnZVNlcnZpY2UuZmlsZShzdG9yYWdlUGF0aCk7XG5cbiAgICAgIGNvbnN0IHVwbG9hZCA9IG5ldyBPYnNlcnZhYmxlPERieEZpcmViYXNlU3RvcmFnZUZpbGVVcGxvYWRTdG9yZUZpbGVQcm9ncmVzcz4oKHgpID0+IHtcbiAgICAgICAgaWYgKHN0b3JhZ2VBY2Nlc3NvckZpbGUudXBsb2FkUmVzdW1hYmxlKSB7XG4gICAgICAgICAgcmVzdW1hYmxlID0gc3RvcmFnZUFjY2Vzc29yRmlsZS51cGxvYWRSZXN1bWFibGUoZmlsZSk7XG5cbiAgICAgICAgICAvLyBzdWJzY3JpYmUgdG8gdGhlIGV2ZW50IGJ5IHBpcGluZyB0aGlzIG9ic2VydmFibGUgdG8gaXRcbiAgICAgICAgICByZXN1bWFibGVcbiAgICAgICAgICAgIC5zdHJlYW1TbmFwc2hvdEV2ZW50cygpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgbWFwKCh4KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBieXRlc1RyYW5zZmVycmVkLCB0b3RhbEJ5dGVzIH0gPSB4O1xuXG4gICAgICAgICAgICAgICAgY29uc3QgcHJvZ3Jlc3M6IERieEZpcmViYXNlU3RvcmFnZUZpbGVVcGxvYWRTdG9yZUZpbGVQcm9ncmVzcyA9IHtcbiAgICAgICAgICAgICAgICAgIGZpbGUsXG4gICAgICAgICAgICAgICAgICBmaWxlUmVmOiBzdG9yYWdlQWNjZXNzb3JGaWxlLFxuICAgICAgICAgICAgICAgICAgdXBsb2FkUmVmOiByZXN1bWFibGUsXG4gICAgICAgICAgICAgICAgICBieXRlc1RyYW5zZmVycmVkLFxuICAgICAgICAgICAgICAgICAgdG90YWxCeXRlcyxcbiAgICAgICAgICAgICAgICAgIHByb2dyZXNzOiBieXRlc1RyYW5zZmVycmVkIC8gdG90YWxCeXRlc1xuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gcHJvZ3Jlc3M7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBpZiBhbiBlcnJvciBvY2N1cnMsIGNhdGNoIGl0IGFuZCBlbWl0IGl0IGFzIGEgcHJvZ3Jlc3NcbiAgICAgICAgICAgICAgICBjb25zdCBwcm9ncmVzczogRGJ4RmlyZWJhc2VTdG9yYWdlRmlsZVVwbG9hZFN0b3JlRmlsZVByb2dyZXNzID0ge1xuICAgICAgICAgICAgICAgICAgZmlsZSxcbiAgICAgICAgICAgICAgICAgIGZpbGVSZWY6IHN0b3JhZ2VBY2Nlc3NvckZpbGUsXG4gICAgICAgICAgICAgICAgICB1cGxvYWRSZWY6IHJlc3VtYWJsZSxcbiAgICAgICAgICAgICAgICAgIGVycm9yLFxuICAgICAgICAgICAgICAgICAgZmFpbGVkOiB0cnVlXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBvZihwcm9ncmVzcyk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcigndXBsb2FkUmVzdW1hYmxlKCkgZnVuY3Rpb24gd2FzIHVuYXZhaWxhYmxlLicpO1xuICAgICAgICB9XG4gICAgICB9KS5waXBlKHNoYXJlUmVwbGF5KDEpKTtcblxuICAgICAgY29uc3QgaW5zdGFuY2U6IFN0b3JhZ2VGaWxlVXBsb2FkSGFuZGxlckluc3RhbmNlID0ge1xuICAgICAgICB1cGxvYWQsXG4gICAgICAgIHRhc2tSZWY6IHN0b3JhZ2VBY2Nlc3NvckZpbGUsXG4gICAgICAgIHBhdXNlOiAoKSA9PiByZXN1bWFibGU/LnBhdXNlKCkgPz8gZmFsc2UsXG4gICAgICAgIHJlc3VtZTogKCkgPT4gcmVzdW1hYmxlPy5yZXN1bWUoKSA/PyBmYWxzZSxcbiAgICAgICAgY2FuY2VsOiAoKSA9PiByZXN1bWFibGU/LmNhbmNlbCgpID8/IGZhbHNlXG4gICAgICB9O1xuXG4gICAgICByZXR1cm4gaW5zdGFuY2U7XG4gICAgfVxuICB9O1xufVxuXG4vLyBNQVJLOiBVcGxvYWQgRmlsZXNcbmV4cG9ydCBpbnRlcmZhY2UgU3RvcmFnZUZpbGVVcGxvYWRGaWxlc0lucHV0IHtcbiAgcmVhZG9ubHkgdXBsb2FkSGFuZGxlcjogU3RvcmFnZUZpbGVVcGxvYWRIYW5kbGVyO1xuICAvKipcbiAgICogRmlsZXMgdG8gdXBsb2FkXG4gICAqL1xuICByZWFkb25seSBmaWxlczogRmlsZVtdO1xuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBtYXggcGFyYWxsZWwgdXBsb2FkcyB0byBwZXJmb3JtIGF0IGEgdGltZS5cbiAgICpcbiAgICogRGVmYXVsdHMgdG8gM1xuICAgKi9cbiAgcmVhZG9ubHkgbWF4UGFyYWxsZWxVcGxvYWRzPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0b3JhZ2VGaWxlVXBsb2FkRmlsZXNJbnN0YW5jZSB7XG4gIC8qKlxuICAgKiBDYW5jZWxzIHRoZSB1cGxvYWQgb2YgdGhlIHJlbWFpbmluZyBmaWxlcy5cbiAgICovXG4gIGNhbmNlbCgpOiB2b2lkO1xuICAvKipcbiAgICogVGhlIHVwbG9hZCBvYnNlcnZhYmxlLlxuICAgKlxuICAgKiBNdXN0IGJlIHN1YnNjcmliZWQgdG8gaW4gb3JkZXIgZm9yIHRoZSB1cGxvYWQgdG8gYmVnaW4uXG4gICAqL1xuICByZWFkb25seSB1cGxvYWQ6IE9ic2VydmFibGU8U3RvcmFnZUZpbGVVcGxvYWRGaWxlc0V2ZW50Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdG9yYWdlRmlsZVVwbG9hZEZpbGVzRXZlbnQge1xuICAvKipcbiAgICogQWxsIGZpbGVzIGJlaW5nIHVwbG9hZGVkXG4gICAqL1xuICByZWFkb25seSBhbGxGaWxlczogRmlsZVtdO1xuICAvKipcbiAgICogUmV0dXJucyB0cnVlIGlmIGFsbCBmaWxlcyBoYXZlIGJlZW4gdXBsb2FkZWQuXG4gICAqXG4gICAqIFRoZSByZXN1bHQgdmFsdWUgc2hvdWxkIGJlIGF2YWlsYWJsZS5cbiAgICovXG4gIHJlYWRvbmx5IGlzQ29tcGxldGU6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHVwbG9hZCB3YXMgY2FuY2VsZWQuXG4gICAqL1xuICByZWFkb25seSBpc0NhbmNlbGVkPzogTWF5YmU8Ym9vbGVhbj47XG4gIC8qKlxuICAgKiBUaGUgb3ZlcmFsbCBwcm9ncmVzcyBvZiBhbGwgZmlsZXMgYmVpbmcgdXBsb2FkZWQuXG4gICAqL1xuICByZWFkb25seSBvdmVyYWxsUHJvZ3Jlc3M6IFBlcmNlbnROdW1iZXI7XG4gIC8qKlxuICAgKiBUaGUgdXBsb2FkIHByb2dyZXNzIHRoYXQgdHJpZ2dlcmVkIHRoaXMgZXZlbnQuXG4gICAqL1xuICByZWFkb25seSB1cGxvYWRQcm9ncmVzcz86IE1heWJlPERieEZpcmViYXNlU3RvcmFnZUZpbGVVcGxvYWRTdG9yZUZpbGVQcm9ncmVzcz47XG4gIC8qKlxuICAgKiBUaGUgZmluYWwgcmVzdWx0LlxuICAgKlxuICAgKiBTZXQgd2hlbiB0aGUgZmluYWwgZmlsZSBoYXMgYmVlbiB1cGxvYWRlZCBvciBmYWlsZWQuXG4gICAqL1xuICByZWFkb25seSByZXN1bHQ/OiBTdG9yYWdlRmlsZVVwbG9hZEZpbGVzRmluYWxSZXN1bHQ7XG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIGZpbGVzIHRoYXQgYXJlIHN0aWxsIHVwbG9hZGluZyBvciBxdWV1ZWQgZm9yIHVwbG9hZC5cbiAgICovXG4gIHJlYWRvbmx5IGluY29tcGxldGVGaWxlQ291bnQ6IG51bWJlcjtcbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgZmlsZXMgdGhhdCBhcmUgYWN0aXZlLlxuICAgKi9cbiAgcmVhZG9ubHkgYWN0aXZlRmlsZUNvdW50OiBudW1iZXI7XG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIGZpbGVzIHRoYXQgYXJlIGRvbmUuXG4gICAqL1xuICByZWFkb25seSBkb25lRmlsZUNvdW50OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RvcmFnZUZpbGVVcGxvYWRGaWxlc0ZpbmFsUmVzdWx0IHtcbiAgcmVhZG9ubHkgc3RhcnRUaW1lOiBEYXRlO1xuICByZWFkb25seSBlbmRUaW1lOiBEYXRlO1xuICByZWFkb25seSBmaWxlUmVzdWx0czogU3RvcmFnZUZpbGVVcGxvYWRGaWxlc0ZpbmFsRmlsZVJlc3VsdFtdO1xuICByZWFkb25seSBzdWNjZXNzRmlsZVJlc3VsdHM6IFN0b3JhZ2VGaWxlVXBsb2FkRmlsZXNGaW5hbEZpbGVSZXN1bHRbXTtcbiAgcmVhZG9ubHkgZXJyb3JGaWxlUmVzdWx0czogU3RvcmFnZUZpbGVVcGxvYWRGaWxlc0ZpbmFsRmlsZVJlc3VsdFtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0b3JhZ2VGaWxlVXBsb2FkRmlsZXNGaW5hbEZpbGVSZXN1bHQge1xuICAvKipcbiAgICogVGhlIHN0YXJ0IHRpbWUgb2YgdGhlIGZpbGUgdXBsb2FkLlxuICAgKi9cbiAgcmVhZG9ubHkgc3RhcnRUaW1lOiBEYXRlO1xuICAvKipcbiAgICogVGhlIGVuZCB0aW1lIG9mIHRoZSBmaWxlIHVwbG9hZCwgb3Igd2hlbiBpdCBmYWlsZWQgb3Igd2FzIGNhbmNlbGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZW5kVGltZTogRGF0ZTtcbiAgLyoqXG4gICAqIFRoZSBmaWxlIHRoYXQgd2FzIHVwbG9hZGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZmlsZTogRmlsZTtcbiAgLyoqXG4gICAqIFRoZSBhY2Nlc3NvciBmaWxlIGZvciB0aGUgZmlsZSwgaWYgYXZhaWxhYmxlLlxuICAgKlxuICAgKiBJcyBnZW5lcmFsbHkgYXZhaWxhYmxlIGlmIHN1Y2Nlc3MgaXMgdHJ1ZS5cbiAgICovXG4gIHJlYWRvbmx5IGZpbGVSZWY/OiBNYXliZTxGaXJlYmFzZVN0b3JhZ2VBY2Nlc3NvckZpbGU+O1xuICAvKipcbiAgICogVHJ1ZSBpZiB0aGUgZmlsZSB3YXMgdXBsb2FkZWQgc3VjY2Vzc2Z1bGx5LlxuICAgKi9cbiAgcmVhZG9ubHkgc3VjY2VzczogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEVycm9yIGlmIHRoZSBmaWxlIGZhaWxlZCB0byB1cGxvYWQuXG4gICAqL1xuICByZWFkb25seSBlcnJvcj86IE1heWJlPHVua25vd24+O1xuICAvKipcbiAgICogVHJ1ZSBpZiB0aGUgZmlsZSB1cGxvYWQgd2FzIGNhbmNlbGxlZC5cbiAgICovXG4gIHJlYWRvbmx5IGNhbmNlbGVkPzogTWF5YmU8Ym9vbGVhbj47XG59XG5cbi8qKlxuICogVXBsb2FkcyBmaWxlcyB1c2luZyB0aGUgcHJvdmlkZWQgdXBsb2FkIGhhbmRsZXIgYW5kIGZpbGVzLlxuICpcbiAqIEFuIG9ic2VydmFibGUgaXMgcmV0dXJuZWQgdGhhdCBlbWl0cyB0aGUgbGF0ZXN0IGZpbGUgZXZlbnRzIGZyb20gYW55IGZpbGUgdGhhdCBpcyBiZWluZyB1cGxvYWRlZC5cbiAqXG4gKiBAcGFyYW0gaW5wdXRcbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdG9yYWdlRmlsZVVwbG9hZEZpbGVzKGlucHV0OiBTdG9yYWdlRmlsZVVwbG9hZEZpbGVzSW5wdXQpOiBTdG9yYWdlRmlsZVVwbG9hZEZpbGVzSW5zdGFuY2Uge1xuICBjb25zdCB7IHVwbG9hZEhhbmRsZXIsIGZpbGVzLCBtYXhQYXJhbGxlbFVwbG9hZHM6IGlucHV0TWF4UGFyYWxsZWxVcGxvYWRzIH0gPSBpbnB1dDtcbiAgY29uc3QgbWF4UGFyYWxsZWxUYXNrcyA9IGlucHV0TWF4UGFyYWxsZWxVcGxvYWRzID8/IDM7XG5cbiAgY29uc3QgbXVsdGlVcGxvYWRzU3Vic2NyaXB0aW9uT2JqZWN0ID0gbmV3IE11bHRpU3Vic2NyaXB0aW9uT2JqZWN0KCk7XG5cbiAgLy8gYmVnaW4gdGhlIHVwbG9hZCBmb3IgZWFjaCBmaWxlXG4gIGNvbnN0IGFsbEZpbGVzID0gQXJyYXkuZnJvbShmaWxlcyk7XG5cbiAgLy8gdW5zdWJzY3JpYmUgZnJvbSBhbGwgcHJldmlvdXMgdXBsb2Fkc1xuICBtdWx0aVVwbG9hZHNTdWJzY3JpcHRpb25PYmplY3QudW5zdWIoKTtcblxuICBpbnRlcmZhY2UgVXBkYXRlVXBsb2FkUHJvZ3Jlc3NJbnB1dCB7XG4gICAgLyoqXG4gICAgICogVGhlIGZpbGUgaW5kZXggbnVtYmVyLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IGluZGV4OiBJbmRleE51bWJlcjtcbiAgICAvKipcbiAgICAgKiBUaGUgbmV4dCBwcm9ncmVzcyBldmVudCwgaWYgYXBwbGljYWJsZS5cbiAgICAgKi9cbiAgICByZWFkb25seSBuZXh0UHJvZ3Jlc3M/OiBNYXliZTxEYnhGaXJlYmFzZVN0b3JhZ2VGaWxlVXBsb2FkU3RvcmVGaWxlUHJvZ3Jlc3M+O1xuICAgIC8qKlxuICAgICAqIEFuIGVycm9yIHRoYXQgb2NjdXJlZCBvdXRzaWRlIG9mIHRoZSBuZXh0UHJvZ3Jlc3MsIGlmIGFwcGxpY2FibGUuXG4gICAgICpcbiAgICAgKiBUaGVzZSBhcmUgdHlwaWNhbGx5IFwidW5jYXVnaHRcIiBlcnJvcnMuXG4gICAgICovXG4gICAgcmVhZG9ubHkgbm9uUHJvZ3Jlc3NFcnJvcj86IE1heWJlPHVua25vd24+O1xuICAgIC8qKlxuICAgICAqIFBhc3NlZCBhcyB0cnVlIHdoZW4gdGhlIHVwbG9hZCB0YXNrIGlzIGRvbmUuXG4gICAgICpcbiAgICAgKiBUaGlzIGlzIGFsc28gaW5mZXJyZWQgYXMgdHJ1ZSB3aGVuIGEgcHJvZ3Jlc3MgZXJyb3Igb2NjdXJzIGZvciBhbiB1cGxvYWQuXG4gICAgICpcbiAgICAgKiBEb2VzIG5vdCBzcGVjaWZ5IHdoZXRoZXIgb3Igbm90IHN1Y2Nlc3Mgd2FzIGFjaGlldmVkIG9yIG5vdC5cbiAgICAgKi9cbiAgICByZWFkb25seSBmaWxlVXBsb2FkVGFza0RvbmU/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIFRydWUgaWYgdGhlIHVwbG9hZCB3YXMgY2FuY2VsZWQuXG4gICAgICovXG4gICAgcmVhZG9ubHkgY2FuY2VsZWQ/OiBib29sZWFuO1xuICB9XG5cbiAgaW50ZXJmYWNlIEZpbGVVcGxvYWREZXRhaWxzIHtcbiAgICByZWFkb25seSBmaWxlOiBGaWxlO1xuICAgIC8qKlxuICAgICAqIFRoZSBjdXJyZW50IHVwbG9hZCBpbnN0YW5jZSBmb3IgdGhlIGZpbGUuXG4gICAgICpcbiAgICAgKiBTZXQgaWYgdGhlIGZpbGUgaXMgY3VycmVudGx5IHVwbG9hZGluZy5cbiAgICAgKi9cbiAgICB1cGxvYWRJbnN0YW5jZT86IFN0b3JhZ2VGaWxlVXBsb2FkSGFuZGxlckluc3RhbmNlO1xuICAgIGZpbGVSZWY/OiBNYXliZTxGaXJlYmFzZVN0b3JhZ2VBY2Nlc3NvckZpbGU+O1xuICAgIHN0YXJ0VGltZT86IERhdGU7XG4gICAgZW5kVGltZT86IERhdGU7XG4gICAgc3VjY2Vzcz86IGJvb2xlYW47XG4gICAgY2FuY2VsZWQ/OiBNYXliZTxib29sZWFuPjtcbiAgICBlcnJvcj86IE1heWJlPHVua25vd24+O1xuICB9XG5cbiAgY29uc3QgYWxsRmlsZXNBbmRMYXRlc3RQcm9ncmVzczogTWF5YmU8RGJ4RmlyZWJhc2VTdG9yYWdlRmlsZVVwbG9hZFN0b3JlRmlsZVByb2dyZXNzPltdID0gbmV3IEFycmF5KGFsbEZpbGVzLmxlbmd0aCk7XG4gIGNvbnN0IGFsbEZpbGVzQW5kRGV0YWlsczogRmlsZVVwbG9hZERldGFpbHNbXSA9IGFsbEZpbGVzLm1hcCgoZmlsZSkgPT4gKHsgZmlsZSB9KSk7XG4gIGNvbnN0IG92ZXJhbGxQcm9ncmVzc1BlckNvbXBsZXRlZEZpbGU6IFBlcmNlbnREZWNpbWFsID0gKDEgLyBhbGxGaWxlc0FuZExhdGVzdFByb2dyZXNzLmxlbmd0aCkgYXMgUGVyY2VudERlY2ltYWw7XG5cbiAgLyoqXG4gICAqIE9uY2Ugc2V0LCBhbnkgbmV3IGZpbGUgdXBsb2FkIHRhc2sgdGhhdCBoaXRzIHRoaXMgd2lsbCByZXR1cm4gYW4gY2FuY2VsIGZhaWx1cmUuXG4gICAqL1xuICBsZXQgZmxhZ2dlZENhbmNlbCA9IGZhbHNlO1xuXG4gIGNvbnN0IGNhbmNlbCA9ICgpID0+IHtcbiAgICBmbGFnZ2VkQ2FuY2VsID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCB1cGxvYWQgPSBuZXcgT2JzZXJ2YWJsZTxTdG9yYWdlRmlsZVVwbG9hZEZpbGVzRXZlbnQ+KChzdWJzY3JpYmVyKSA9PiB7XG4gICAgY29uc3Qgb3ZlcmFsbFN0YXJ0VGltZSA9IG5ldyBEYXRlKCk7XG5cbiAgICBjb25zdCBpbmNvbXBsZXRlRmlsZUZpbGVJbmRleGVzID0gbmV3IFNldDxJbmRleE51bWJlcj4oYWxsRmlsZXMubWFwKChfLCBpbmRleCkgPT4gaW5kZXgpKTtcbiAgICBjb25zdCBhY3RpdmVGaWxlSW5kZXhlcyA9IG5ldyBTZXQ8SW5kZXhOdW1iZXI+KCk7XG4gICAgY29uc3QgZG9uZUZpbGVJbmRleGVzID0gbmV3IFNldDxJbmRleE51bWJlcj4oKTtcbiAgICBsZXQgbGF0ZXN0T3ZlcmFsbFByb2dyZXNzOiBQZXJjZW50TnVtYmVyID0gMDtcblxuICAgIGZ1bmN0aW9uIG9uU3RhcnRGaWxlVXBsb2FkKGluZGV4OiBJbmRleE51bWJlciwgdXBsb2FkSW5zdGFuY2U6IFN0b3JhZ2VGaWxlVXBsb2FkSGFuZGxlckluc3RhbmNlKSB7XG4gICAgICBhY3RpdmVGaWxlSW5kZXhlcy5hZGQoaW5kZXgpO1xuICAgICAgYWxsRmlsZXNBbmREZXRhaWxzW2luZGV4XS5zdGFydFRpbWUgPSBuZXcgRGF0ZSgpO1xuICAgICAgYWxsRmlsZXNBbmREZXRhaWxzW2luZGV4XS51cGxvYWRJbnN0YW5jZSA9IHVwbG9hZEluc3RhbmNlO1xuICAgICAgYWxsRmlsZXNBbmREZXRhaWxzW2luZGV4XS5maWxlUmVmID0gdXBsb2FkSW5zdGFuY2UudGFza1JlZjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBvblN0YXJ0RmlsZVVwbG9hZEZsYWdnZWRDYW5jZWxsZWQoaW5kZXg6IEluZGV4TnVtYmVyKSB7XG4gICAgICBhbGxGaWxlc0FuZERldGFpbHNbaW5kZXhdLnN0YXJ0VGltZSA9IG5ldyBEYXRlKCk7XG5cbiAgICAgIC8vIGltbWVkaWF0ZWx5IG1hcmsgaXQgZG9uZVxuICAgICAgX21hcmtGaWxlVXBsb2FkRG9uZShpbmRleCwgdHJ1ZSk7XG5cbiAgICAgIC8vIGVtaXQgbmV3IHByb2dyZXNzIGV2ZW50XG4gICAgICBfZW1pdEV2ZW50KCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gX21hcmtGaWxlVXBsb2FkRG9uZShmaWxlSW5kZXg6IEluZGV4TnVtYmVyLCBmaW5hbEVycm9yPzogTWF5YmU8dW5rbm93bj4pIHtcbiAgICAgIGRvbmVGaWxlSW5kZXhlcy5hZGQoZmlsZUluZGV4KTsgLy8gYWRkIHRvIGRvbmUgZmlsZSBpbmRleGVzXG4gICAgICBhY3RpdmVGaWxlSW5kZXhlcy5kZWxldGUoZmlsZUluZGV4KTsgLy8gcmVtb3ZlIGZyb20gYWN0aXZlIGZpbGUgaW5kZXhlcyBpZiBpdCBleGlzdHNcbiAgICAgIGluY29tcGxldGVGaWxlRmlsZUluZGV4ZXMuZGVsZXRlKGZpbGVJbmRleCk7IC8vIHJlbW92ZSBmcm9tIGluY29tcGxldGUgZmlsZSBpbmRleGVzXG5cbiAgICAgIC8vIHVwZGF0ZSBkZXRhaWxzXG4gICAgICBhbGxGaWxlc0FuZERldGFpbHNbZmlsZUluZGV4XS5lbmRUaW1lID0gbmV3IERhdGUoKTtcblxuICAgICAgY29uc3QgZXJyb3IgPSBmaW5hbEVycm9yID8/IGFsbEZpbGVzQW5kRGV0YWlsc1tmaWxlSW5kZXhdLmVycm9yO1xuICAgICAgYWxsRmlsZXNBbmREZXRhaWxzW2ZpbGVJbmRleF0uc3VjY2VzcyA9ICFlcnJvcjtcbiAgICAgIGFsbEZpbGVzQW5kRGV0YWlsc1tmaWxlSW5kZXhdLmVycm9yID0gZXJyb3I7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdXBkYXRlVXBsb2FkUHJvZ3Jlc3MoaW5wdXQ6IFVwZGF0ZVVwbG9hZFByb2dyZXNzSW5wdXQpIHtcbiAgICAgIGNvbnN0IHsgaW5kZXg6IGZpbGVJbmRleCwgbmV4dFByb2dyZXNzLCBmaWxlVXBsb2FkVGFza0RvbmU6IGlucHV0RmlsZVVwbG9hZFRhc2tEb25lLCBub25Qcm9ncmVzc0Vycm9yIH0gPSBpbnB1dDtcbiAgICAgIGNvbnN0IGVycm9yID0gbm9uUHJvZ3Jlc3NFcnJvciA/PyBuZXh0UHJvZ3Jlc3M/LmVycm9yO1xuICAgICAgY29uc3QgZmlsZVVwbG9hZFRhc2tEb25lID0gaW5wdXRGaWxlVXBsb2FkVGFza0RvbmUgPz8gQm9vbGVhbihlcnJvcik7XG5cbiAgICAgIC8vIHRoZSB0YXNrIG1heSBhbHJlYWR5IGJlIGRvbmUsIGFzIGFmdGVyIGEgcHJvZ3Jlc3MtcmVsYXRlZCBlcnJvciB0aGUgY29tcGxldGUgdGFzayBjYW4gZ2V0IGNhbGxlZC5cbiAgICAgIGNvbnN0IGlzVGFza0FscmVhZHlEb25lID0gYWxsRmlsZXNBbmREZXRhaWxzW2ZpbGVJbmRleF0uZW5kVGltZSAhPSBudWxsO1xuXG4gICAgICBpZiAoIWlzVGFza0FscmVhZHlEb25lKSB7XG4gICAgICAgIGxldCBuZXh0T3ZlcmFsbFByb2dyZXNzID0gbGF0ZXN0T3ZlcmFsbFByb2dyZXNzO1xuICAgICAgICBjb25zdCBuZXh0UHJvZ3Jlc3NQZXJjZW50ID0gZmlsZVVwbG9hZFRhc2tEb25lID8gMTAwIDogKG5leHRQcm9ncmVzcz8ucHJvZ3Jlc3MgPz8gMCkgKiAxMDA7XG5cbiAgICAgICAgLy8gdXBkYXRlIHRoZSBvdmVyYWxsIHByb2dyZXNzIHBlcmNlbnRhZ2VcbiAgICAgICAgaWYgKG5leHRQcm9ncmVzc1BlcmNlbnQpIHtcbiAgICAgICAgICAvLyB1cGRhdGUgdGhlIG92ZXJhbGwgcGVyY2VudGFnZVxuICAgICAgICAgIGNvbnN0IHByZXZpb3VzUHJvZ3Jlc3MgPSBhbGxGaWxlc0FuZExhdGVzdFByb2dyZXNzW2ZpbGVJbmRleF07XG4gICAgICAgICAgY29uc3QgcHJldmlvdXNQcm9ncmVzc1BlcmNlbnQgPSBwcmV2aW91c1Byb2dyZXNzPy5wcm9ncmVzcyAhPSBudWxsID8gcHJldmlvdXNQcm9ncmVzcy5wcm9ncmVzcyAqIDEwMCA6IDA7XG4gICAgICAgICAgY29uc3QgcHJvZ3Jlc3NQZXJjZW50Q2hhbmdlID0gbmV4dFByb2dyZXNzUGVyY2VudCAtIHByZXZpb3VzUHJvZ3Jlc3NQZXJjZW50O1xuXG4gICAgICAgICAgLy8gaW5jcmVhc2Ugb3ZlcmFsbCBwcm9ncmVzcyBieSB0aGUgY2hhbmdlXG4gICAgICAgICAgbmV4dE92ZXJhbGxQcm9ncmVzcyArPSBwcm9ncmVzc1BlcmNlbnRDaGFuZ2UgKiBvdmVyYWxsUHJvZ3Jlc3NQZXJDb21wbGV0ZWRGaWxlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gdXBkYXRlIHRoZSBmaWxlIHByb2dyZXNzXG4gICAgICAgIGlmIChuZXh0UHJvZ3Jlc3MpIHtcbiAgICAgICAgICAvLyB1cGRhdGUgdGhlIGxhdGVzdCBGaWxlUHJvZ3Jlc3NcbiAgICAgICAgICBhbGxGaWxlc0FuZExhdGVzdFByb2dyZXNzW2ZpbGVJbmRleF0gPSBuZXh0UHJvZ3Jlc3M7XG5cbiAgICAgICAgICAvLyBvbmx5IHNldCBmaWxlUmVmIG9uY2VcbiAgICAgICAgICBpZiAoIWFsbEZpbGVzQW5kRGV0YWlsc1tmaWxlSW5kZXhdLmZpbGVSZWYpIHtcbiAgICAgICAgICAgIGFsbEZpbGVzQW5kRGV0YWlsc1tmaWxlSW5kZXhdLmZpbGVSZWYgPSBuZXh0UHJvZ3Jlc3MuZmlsZVJlZjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBpZiBjb21wbGV0ZSwgdXBkYXRlIHRoZSBpbmRleGVzIGFuZCBkZXRhaWxzXG4gICAgICAgIGlmIChmaWxlVXBsb2FkVGFza0RvbmUpIHtcbiAgICAgICAgICBfbWFya0ZpbGVVcGxvYWREb25lKGZpbGVJbmRleCwgZXJyb3IpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gdXBkYXRlIHRoZSBvdmVyYWxsIHByb2dyZXNzXG4gICAgICAgIGxhdGVzdE92ZXJhbGxQcm9ncmVzcyA9IG5leHRPdmVyYWxsUHJvZ3Jlc3M7XG5cbiAgICAgICAgLy8gZW1pdCB0aGUgZXZlbnQgdG8gc2VuZCBpdFxuICAgICAgICBfZW1pdEV2ZW50KG5leHRQcm9ncmVzcyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gX2VtaXRFdmVudChuZXh0UHJvZ3Jlc3M/OiBNYXliZTxEYnhGaXJlYmFzZVN0b3JhZ2VGaWxlVXBsb2FkU3RvcmVGaWxlUHJvZ3Jlc3M+KSB7XG4gICAgICBjb25zdCBpc0NvbXBsZXRlID0gaW5jb21wbGV0ZUZpbGVGaWxlSW5kZXhlcy5zaXplID09PSAwO1xuXG4gICAgICBsZXQgb3ZlcmFsbFByb2dyZXNzID0gbGF0ZXN0T3ZlcmFsbFByb2dyZXNzO1xuICAgICAgbGV0IHJlc3VsdDogTWF5YmU8U3RvcmFnZUZpbGVVcGxvYWRGaWxlc0ZpbmFsUmVzdWx0PiA9IHVuZGVmaW5lZDtcblxuICAgICAgaWYgKGlzQ29tcGxldGUpIHtcbiAgICAgICAgb3ZlcmFsbFByb2dyZXNzID0gMTAwOyAvLyBzZXQgdG8gMTAwJVxuICAgICAgICBjb25zdCBvdmVyYWxsRW5kVGltZSA9IG5ldyBEYXRlKCk7XG5cbiAgICAgICAgY29uc3QgZmlsZVJlc3VsdHMgPSBhbGxGaWxlcy5tYXAoKGZpbGUsIGluZGV4KSA9PiB7XG4gICAgICAgICAgY29uc3QgcmVzdWx0OiBTdG9yYWdlRmlsZVVwbG9hZEZpbGVzRmluYWxGaWxlUmVzdWx0ID0ge1xuICAgICAgICAgICAgc3RhcnRUaW1lOiBhbGxGaWxlc0FuZERldGFpbHNbaW5kZXhdLnN0YXJ0VGltZSBhcyBEYXRlLFxuICAgICAgICAgICAgZW5kVGltZTogYWxsRmlsZXNBbmREZXRhaWxzW2luZGV4XS5lbmRUaW1lIGFzIERhdGUsXG4gICAgICAgICAgICBmaWxlLFxuICAgICAgICAgICAgZmlsZVJlZjogYWxsRmlsZXNBbmREZXRhaWxzW2luZGV4XS5maWxlUmVmLFxuICAgICAgICAgICAgc3VjY2VzczogIWFsbEZpbGVzQW5kRGV0YWlsc1tpbmRleF0uZXJyb3IsXG4gICAgICAgICAgICBlcnJvcjogYWxsRmlsZXNBbmREZXRhaWxzW2luZGV4XS5lcnJvclxuICAgICAgICAgIH07XG5cbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCB7IGluY2x1ZGVkOiBzdWNjZXNzRmlsZVJlc3VsdHMsIGV4Y2x1ZGVkOiBlcnJvckZpbGVSZXN1bHRzIH0gPSBzZXBhcmF0ZVZhbHVlcyhmaWxlUmVzdWx0cywgKHgpID0+IHguc3VjY2Vzcyk7XG5cbiAgICAgICAgLy8gYWxsIGFyZSBkb25lLCBzZXQgdGhlIHJlc3VsdCBvbiB0aGUgbmV4dCBldmVudFxuICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgc3RhcnRUaW1lOiBvdmVyYWxsU3RhcnRUaW1lLFxuICAgICAgICAgIGVuZFRpbWU6IG92ZXJhbGxFbmRUaW1lLFxuICAgICAgICAgIHN1Y2Nlc3NGaWxlUmVzdWx0cyxcbiAgICAgICAgICBlcnJvckZpbGVSZXN1bHRzLFxuICAgICAgICAgIGZpbGVSZXN1bHRzXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5leHRFdmVudDogU3RvcmFnZUZpbGVVcGxvYWRGaWxlc0V2ZW50ID0ge1xuICAgICAgICBhbGxGaWxlcyxcbiAgICAgICAgaXNDb21wbGV0ZSxcbiAgICAgICAgb3ZlcmFsbFByb2dyZXNzLFxuICAgICAgICB1cGxvYWRQcm9ncmVzczogbmV4dFByb2dyZXNzLFxuICAgICAgICBpbmNvbXBsZXRlRmlsZUNvdW50OiBpbmNvbXBsZXRlRmlsZUZpbGVJbmRleGVzLnNpemUsXG4gICAgICAgIGFjdGl2ZUZpbGVDb3VudDogYWN0aXZlRmlsZUluZGV4ZXMuc2l6ZSxcbiAgICAgICAgZG9uZUZpbGVDb3VudDogZG9uZUZpbGVJbmRleGVzLnNpemUsXG4gICAgICAgIHJlc3VsdFxuICAgICAgfTtcblxuICAgICAgc3Vic2NyaWJlci5uZXh0KG5leHRFdmVudCk7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gcnVuVXBsb2FkVGFza0ZvckZpbGUoW2ZpbGUsIGluZGV4XTogcmVhZG9ubHkgW0ZpbGUsIEluZGV4TnVtYmVyXSkge1xuICAgICAgaWYgKGZsYWdnZWRDYW5jZWwpIHtcbiAgICAgICAgb25TdGFydEZpbGVVcGxvYWRGbGFnZ2VkQ2FuY2VsbGVkKGluZGV4KTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHtcbiAgICAgICAgY29uc3QgdXBkYXRlRmlsZVVwbG9hZFByb2dyZXNzID0gKG5leHRQcm9ncmVzczogRGJ4RmlyZWJhc2VTdG9yYWdlRmlsZVVwbG9hZFN0b3JlRmlsZVByb2dyZXNzKSA9PiB7XG4gICAgICAgICAgLy8gdXBkYXRlIHRoZSBwcm9ncmVzc1xuICAgICAgICAgIHVwZGF0ZVVwbG9hZFByb2dyZXNzKHtcbiAgICAgICAgICAgIGluZGV4LFxuICAgICAgICAgICAgbmV4dFByb2dyZXNzXG4gICAgICAgICAgfSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgdXBkYXRlRmlsZVVwbG9hZFByb2dyZXNzV2l0aFVuY2F1Z2h0RXJyb3IgPSAoZXJyb3I6IHVua25vd24pID0+IHtcbiAgICAgICAgICAvLyBlcnJvciBvY2N1cnJlZCwgdXBkYXRlIHRoZSBwcm9ncmVzcyB3aXRoIHRoZSBlcnJvclxuICAgICAgICAgIHVwZGF0ZVVwbG9hZFByb2dyZXNzKHtcbiAgICAgICAgICAgIGluZGV4LFxuICAgICAgICAgICAgbm9uUHJvZ3Jlc3NFcnJvcjogZXJyb3IsXG4gICAgICAgICAgICBmaWxlVXBsb2FkVGFza0RvbmU6IHRydWVcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIC8vIGFsd2F5cyByZXNvbHZlLCBuZXZlciByZWplY3RcbiAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgY29tcGxldGVGaWxlVXBsb2FkUHJvZ3Jlc3MgPSAoKSA9PiB7XG4gICAgICAgICAgdXBkYXRlVXBsb2FkUHJvZ3Jlc3Moe1xuICAgICAgICAgICAgaW5kZXgsXG4gICAgICAgICAgICBmaWxlVXBsb2FkVGFza0RvbmU6IHRydWVcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgfTtcblxuICAgICAgICAvLyB1cGxvYWQgdGhlIGZpbGUsIHN1YnNjcmliZSB0byB0aGUgcHJvZ3Jlc3NcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB1cGxvYWRIYW5kbGVyXG4gICAgICAgICAgICAudXBsb2FkRmlsZShmaWxlKVxuICAgICAgICAgICAgLnRoZW4oKHVwbG9hZEluc3RhbmNlKSA9PiB7XG4gICAgICAgICAgICAgIC8vIGFkZCB0byBhY3RpdmUgZmlsZSBpbmRleGVzXG4gICAgICAgICAgICAgIG9uU3RhcnRGaWxlVXBsb2FkKGluZGV4LCB1cGxvYWRJbnN0YW5jZSk7XG5cbiAgICAgICAgICAgICAgY29uc3QgdXBsb2FkU3Vic2NyaXB0aW9uID0gdXBsb2FkSW5zdGFuY2UudXBsb2FkLnN1YnNjcmliZSh7XG4gICAgICAgICAgICAgICAgbmV4dDogdXBkYXRlRmlsZVVwbG9hZFByb2dyZXNzLFxuICAgICAgICAgICAgICAgIGVycm9yOiB1cGRhdGVGaWxlVXBsb2FkUHJvZ3Jlc3NXaXRoVW5jYXVnaHRFcnJvcixcbiAgICAgICAgICAgICAgICBjb21wbGV0ZTogY29tcGxldGVGaWxlVXBsb2FkUHJvZ3Jlc3NcbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgbXVsdGlVcGxvYWRzU3Vic2NyaXB0aW9uT2JqZWN0LmFkZFN1YnModXBsb2FkU3Vic2NyaXB0aW9uKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2godXBkYXRlRmlsZVVwbG9hZFByb2dyZXNzV2l0aFVuY2F1Z2h0RXJyb3IpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIHVwZGF0ZUZpbGVVcGxvYWRQcm9ncmVzc1dpdGhVbmNhdWdodEVycm9yKGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gcnVuIHVwbG9hZCB0YXNrIGZvciBlYWNoIGZpbGVcbiAgICBjb25zdCBmaWxlVHVwbGVzID0gYWxsRmlsZXMubWFwKChmaWxlLCBpbmRleCkgPT4gW2ZpbGUsIGluZGV4XSBhcyBjb25zdCk7XG5cbiAgICBydW5Bc3luY1Rhc2tzRm9yVmFsdWVzKGZpbGVUdXBsZXMsIHJ1blVwbG9hZFRhc2tGb3JGaWxlLCB7XG4gICAgICBtYXhQYXJhbGxlbFRhc2tzLFxuICAgICAgcmV0cmllc0FsbG93ZWQ6IDAgLy8gbm8gcmV0cmllcyBhbGxvd2VkXG4gICAgfSkudGhlbigoKSA9PiB7XG4gICAgICAvLyBhbGwgdGFza3MgYXJlIGZpbmlzaGVkLiBDb21wbGV0ZSB0aGUgc3Vic2NyaWJlci5cbiAgICAgIHN1YnNjcmliZXIuY29tcGxldGUoKTtcbiAgICB9KTtcbiAgfSkucGlwZShzaGFyZVJlcGxheSgxKSk7XG5cbiAgY29uc3QgaW5zdGFuY2U6IFN0b3JhZ2VGaWxlVXBsb2FkRmlsZXNJbnN0YW5jZSA9IHtcbiAgICBjYW5jZWwsXG4gICAgdXBsb2FkXG4gIH07XG5cbiAgcmV0dXJuIGluc3RhbmNlO1xufVxuIl19
@@ -1,51 +0,0 @@
1
- import { Directive, inject, input } from '@angular/core';
2
- import { DbxFirebaseStorageFileUploadStore, StorageFileDocumentStore } from '../store';
3
- import { AbstractSubscriptionDirective, DbxActionContextStoreSourceInstance, DbxActionHandlerInstance } from '@dereekb/dbx-core';
4
- import * as i0 from "@angular/core";
5
- /**
6
- * Directive that passes the upload result to a StorageFileDocumentStore to initialize the document immediately.
7
- *
8
- * Use with a DbxAction instance.
9
- */
10
- export class DbxFirebaseStorageFileUploadInitializeDocumentDirective extends AbstractSubscriptionDirective {
11
- uploadStore = inject(DbxFirebaseStorageFileUploadStore);
12
- storageFileDocumentStore = inject(StorageFileDocumentStore);
13
- initializeWithExpediteProcessing = input();
14
- source = inject((DbxActionContextStoreSourceInstance), { host: true });
15
- _dbxActionHandlerInstance = new DbxActionHandlerInstance(this.source);
16
- constructor() {
17
- super();
18
- // set the trigger
19
- this.sub = this.uploadStore.uploadResult$.subscribe(async (result) => {
20
- const successFileResult = result.successFileResults.find((x) => x.fileRef != null);
21
- const fileRef = successFileResult?.fileRef;
22
- if (fileRef) {
23
- this.source.triggerWithValue(fileRef);
24
- }
25
- });
26
- // set the handler function
27
- this._dbxActionHandlerInstance.setHandlerFunction((fileRef, context) => {
28
- context.startWorkingWithLoadingStateObservable(this.storageFileDocumentStore.initializeStorageFileFromUpload({
29
- pathString: fileRef.storagePath.pathString,
30
- bucketId: fileRef.storagePath.bucketId,
31
- expediteProcessing: this.initializeWithExpediteProcessing() ?? undefined
32
- }));
33
- });
34
- this._dbxActionHandlerInstance.init();
35
- }
36
- ngOnDestroy() {
37
- super.ngOnDestroy();
38
- this._dbxActionHandlerInstance.destroy();
39
- }
40
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseStorageFileUploadInitializeDocumentDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
41
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: DbxFirebaseStorageFileUploadInitializeDocumentDirective, isStandalone: true, selector: "[dbxFirebaseStorageFileUploadInitializeDocument]", inputs: { initializeWithExpediteProcessing: { classPropertyName: "initializeWithExpediteProcessing", publicName: "initializeWithExpediteProcessing", isSignal: true, isRequired: false, transformFunction: null } }, exportAs: ["dbxFirebaseStorageFileUploadInitializeDocument"], usesInheritance: true, ngImport: i0 });
42
- }
43
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseStorageFileUploadInitializeDocumentDirective, decorators: [{
44
- type: Directive,
45
- args: [{
46
- selector: '[dbxFirebaseStorageFileUploadInitializeDocument]',
47
- exportAs: 'dbxFirebaseStorageFileUploadInitializeDocument',
48
- standalone: true
49
- }]
50
- }], ctorParameters: () => [] });
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZWZpbGUudXBsb2FkLmluaXRpYWxpemUuZG9jdW1lbnQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZpcmViYXNlL3NyYy9saWIvbW9kdWxlcy9zdG9yYWdlZmlsZS9jb250YWluZXIvc3RvcmFnZWZpbGUudXBsb2FkLmluaXRpYWxpemUuZG9jdW1lbnQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDdkYsT0FBTyxFQUFFLDZCQUE2QixFQUFFLG1DQUFtQyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBSWpJOzs7O0dBSUc7QUFNSCxNQUFNLE9BQU8sdURBQXdELFNBQVEsNkJBQTZCO0lBQy9GLFdBQVcsR0FBRyxNQUFNLENBQUMsaUNBQWlDLENBQUMsQ0FBQztJQUN4RCx3QkFBd0IsR0FBRyxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUU1RCxnQ0FBZ0MsR0FBRyxLQUFLLEVBQWtCLENBQUM7SUFFbkQsTUFBTSxHQUE4RixNQUFNLENBQUMsQ0FBQSxtQ0FBeUYsQ0FBQSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDdE4seUJBQXlCLEdBQUcsSUFBSSx3QkFBd0IsQ0FBdUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRTdJO1FBQ0UsS0FBSyxFQUFFLENBQUM7UUFFUixrQkFBa0I7UUFDbEIsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ25FLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQztZQUNuRixNQUFNLE9BQU8sR0FBRyxpQkFBaUIsRUFBRSxPQUFPLENBQUM7WUFFM0MsSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDWixJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3hDLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILDJCQUEyQjtRQUMzQixJQUFJLENBQUMseUJBQXlCLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUU7WUFDckUsT0FBTyxDQUFDLHNDQUFzQyxDQUM1QyxJQUFJLENBQUMsd0JBQXdCLENBQUMsK0JBQStCLENBQUM7Z0JBQzVELFVBQVUsRUFBRSxPQUFPLENBQUMsV0FBVyxDQUFDLFVBQVU7Z0JBQzFDLFFBQVEsRUFBRSxPQUFPLENBQUMsV0FBVyxDQUFDLFFBQVE7Z0JBQ3RDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxnQ0FBZ0MsRUFBRSxJQUFJLFNBQVM7YUFDekUsQ0FBQyxDQUNILENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRVEsV0FBVztRQUNsQixLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLHlCQUF5QixDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzNDLENBQUM7d0dBdkNVLHVEQUF1RDs0RkFBdkQsdURBQXVEOzs0RkFBdkQsdURBQXVEO2tCQUxuRSxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxrREFBa0Q7b0JBQzVELFFBQVEsRUFBRSxnREFBZ0Q7b0JBQzFELFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgaW5qZWN0LCBpbnB1dCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYnhGaXJlYmFzZVN0b3JhZ2VGaWxlVXBsb2FkU3RvcmUsIFN0b3JhZ2VGaWxlRG9jdW1lbnRTdG9yZSB9IGZyb20gJy4uL3N0b3JlJztcbmltcG9ydCB7IEFic3RyYWN0U3Vic2NyaXB0aW9uRGlyZWN0aXZlLCBEYnhBY3Rpb25Db250ZXh0U3RvcmVTb3VyY2VJbnN0YW5jZSwgRGJ4QWN0aW9uSGFuZGxlckluc3RhbmNlIH0gZnJvbSAnQGRlcmVla2IvZGJ4LWNvcmUnO1xuaW1wb3J0IHsgRmlyZWJhc2VTdG9yYWdlQWNjZXNzb3JGaWxlLCBPbkNhbGxDcmVhdGVNb2RlbFJlc3VsdCB9IGZyb20gJ0BkZXJlZWtiL2ZpcmViYXNlJztcbmltcG9ydCB7IE1heWJlIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5cbi8qKlxuICogRGlyZWN0aXZlIHRoYXQgcGFzc2VzIHRoZSB1cGxvYWQgcmVzdWx0IHRvIGEgU3RvcmFnZUZpbGVEb2N1bWVudFN0b3JlIHRvIGluaXRpYWxpemUgdGhlIGRvY3VtZW50IGltbWVkaWF0ZWx5LlxuICpcbiAqIFVzZSB3aXRoIGEgRGJ4QWN0aW9uIGluc3RhbmNlLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbZGJ4RmlyZWJhc2VTdG9yYWdlRmlsZVVwbG9hZEluaXRpYWxpemVEb2N1bWVudF0nLFxuICBleHBvcnRBczogJ2RieEZpcmViYXNlU3RvcmFnZUZpbGVVcGxvYWRJbml0aWFsaXplRG9jdW1lbnQnLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIERieEZpcmViYXNlU3RvcmFnZUZpbGVVcGxvYWRJbml0aWFsaXplRG9jdW1lbnREaXJlY3RpdmUgZXh0ZW5kcyBBYnN0cmFjdFN1YnNjcmlwdGlvbkRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHJlYWRvbmx5IHVwbG9hZFN0b3JlID0gaW5qZWN0KERieEZpcmViYXNlU3RvcmFnZUZpbGVVcGxvYWRTdG9yZSk7XG4gIHJlYWRvbmx5IHN0b3JhZ2VGaWxlRG9jdW1lbnRTdG9yZSA9IGluamVjdChTdG9yYWdlRmlsZURvY3VtZW50U3RvcmUpO1xuXG4gIHJlYWRvbmx5IGluaXRpYWxpemVXaXRoRXhwZWRpdGVQcm9jZXNzaW5nID0gaW5wdXQ8TWF5YmU8Ym9vbGVhbj4+KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBzb3VyY2U6IERieEFjdGlvbkNvbnRleHRTdG9yZVNvdXJjZUluc3RhbmNlPEZpcmViYXNlU3RvcmFnZUFjY2Vzc29yRmlsZSwgT25DYWxsQ3JlYXRlTW9kZWxSZXN1bHQ+ID0gaW5qZWN0KERieEFjdGlvbkNvbnRleHRTdG9yZVNvdXJjZUluc3RhbmNlPEZpcmViYXNlU3RvcmFnZUFjY2Vzc29yRmlsZSwgT25DYWxsQ3JlYXRlTW9kZWxSZXN1bHQ+LCB7IGhvc3Q6IHRydWUgfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2RieEFjdGlvbkhhbmRsZXJJbnN0YW5jZSA9IG5ldyBEYnhBY3Rpb25IYW5kbGVySW5zdGFuY2U8RmlyZWJhc2VTdG9yYWdlQWNjZXNzb3JGaWxlLCBPbkNhbGxDcmVhdGVNb2RlbFJlc3VsdD4odGhpcy5zb3VyY2UpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG5cbiAgICAvLyBzZXQgdGhlIHRyaWdnZXJcbiAgICB0aGlzLnN1YiA9IHRoaXMudXBsb2FkU3RvcmUudXBsb2FkUmVzdWx0JC5zdWJzY3JpYmUoYXN5bmMgKHJlc3VsdCkgPT4ge1xuICAgICAgY29uc3Qgc3VjY2Vzc0ZpbGVSZXN1bHQgPSByZXN1bHQuc3VjY2Vzc0ZpbGVSZXN1bHRzLmZpbmQoKHgpID0+IHguZmlsZVJlZiAhPSBudWxsKTtcbiAgICAgIGNvbnN0IGZpbGVSZWYgPSBzdWNjZXNzRmlsZVJlc3VsdD8uZmlsZVJlZjtcblxuICAgICAgaWYgKGZpbGVSZWYpIHtcbiAgICAgICAgdGhpcy5zb3VyY2UudHJpZ2dlcldpdGhWYWx1ZShmaWxlUmVmKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIHNldCB0aGUgaGFuZGxlciBmdW5jdGlvblxuICAgIHRoaXMuX2RieEFjdGlvbkhhbmRsZXJJbnN0YW5jZS5zZXRIYW5kbGVyRnVuY3Rpb24oKGZpbGVSZWYsIGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnRleHQuc3RhcnRXb3JraW5nV2l0aExvYWRpbmdTdGF0ZU9ic2VydmFibGUoXG4gICAgICAgIHRoaXMuc3RvcmFnZUZpbGVEb2N1bWVudFN0b3JlLmluaXRpYWxpemVTdG9yYWdlRmlsZUZyb21VcGxvYWQoe1xuICAgICAgICAgIHBhdGhTdHJpbmc6IGZpbGVSZWYuc3RvcmFnZVBhdGgucGF0aFN0cmluZyxcbiAgICAgICAgICBidWNrZXRJZDogZmlsZVJlZi5zdG9yYWdlUGF0aC5idWNrZXRJZCxcbiAgICAgICAgICBleHBlZGl0ZVByb2Nlc3Npbmc6IHRoaXMuaW5pdGlhbGl6ZVdpdGhFeHBlZGl0ZVByb2Nlc3NpbmcoKSA/PyB1bmRlZmluZWRcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9kYnhBY3Rpb25IYW5kbGVySW5zdGFuY2UuaW5pdCgpO1xuICB9XG5cbiAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB0aGlzLl9kYnhBY3Rpb25IYW5kbGVySW5zdGFuY2UuZGVzdHJveSgpO1xuICB9XG59XG4iXX0=
@@ -1,38 +0,0 @@
1
- import { Directive, inject, input } from '@angular/core';
2
- import { skipAllInitialMaybe, SubscriptionObject } from '@dereekb/rxjs';
3
- import { DbxFirebaseStorageFileUploadStore } from '../store';
4
- import { toObservable } from '@angular/core/rxjs-interop';
5
- import { shareReplay } from 'rxjs';
6
- import * as i0 from "@angular/core";
7
- /**
8
- * Directive that provides a DbxFirebaseStorageFileUploadStore, and sync's the inputs to the store.
9
- */
10
- export class DbxFirebaseStorageFileUploadStoreDirective {
11
- _allowedSub = new SubscriptionObject();
12
- _multiSub = new SubscriptionObject();
13
- uploadStore = inject(DbxFirebaseStorageFileUploadStore);
14
- multipleUpload = input();
15
- fileTypesAccepted = input();
16
- fileTypesAccepted$ = toObservable(this.fileTypesAccepted).pipe(skipAllInitialMaybe(), shareReplay(1));
17
- isMultiUploadAllowed$ = toObservable(this.multipleUpload).pipe(skipAllInitialMaybe(), shareReplay(1));
18
- constructor() {
19
- this._allowedSub.subscription = this.fileTypesAccepted$.subscribe((x) => this.uploadStore.setFileTypesAccepted(x));
20
- this._multiSub.subscription = this.isMultiUploadAllowed$.subscribe((x) => this.uploadStore.setIsMultiUploadAllowed(x));
21
- }
22
- ngOnDestroy() {
23
- this._allowedSub.destroy();
24
- this._multiSub.destroy();
25
- }
26
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseStorageFileUploadStoreDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
27
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: DbxFirebaseStorageFileUploadStoreDirective, isStandalone: true, selector: "[dbxFirebaseStorageFileUploadStore]", inputs: { multipleUpload: { classPropertyName: "multipleUpload", publicName: "multipleUpload", isSignal: true, isRequired: false, transformFunction: null }, fileTypesAccepted: { classPropertyName: "fileTypesAccepted", publicName: "fileTypesAccepted", isSignal: true, isRequired: false, transformFunction: null } }, providers: [DbxFirebaseStorageFileUploadStore], exportAs: ["dbxFirebaseStorageFileUploadStore"], ngImport: i0 });
28
- }
29
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseStorageFileUploadStoreDirective, decorators: [{
30
- type: Directive,
31
- args: [{
32
- selector: '[dbxFirebaseStorageFileUploadStore]',
33
- exportAs: 'dbxFirebaseStorageFileUploadStore',
34
- providers: [DbxFirebaseStorageFileUploadStore],
35
- standalone: true
36
- }]
37
- }], ctorParameters: () => [] });
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZWZpbGUudXBsb2FkLnN0b3JlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1maXJlYmFzZS9zcmMvbGliL21vZHVsZXMvc3RvcmFnZWZpbGUvY29udGFpbmVyL3N0b3JhZ2VmaWxlLnVwbG9hZC5zdG9yZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFN0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBR25DOztHQUVHO0FBT0gsTUFBTSxPQUFPLDBDQUEwQztJQUNwQyxXQUFXLEdBQUcsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO0lBQ3ZDLFNBQVMsR0FBRyxJQUFJLGtCQUFrQixFQUFFLENBQUM7SUFFN0MsV0FBVyxHQUFHLE1BQU0sQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO0lBRXhELGNBQWMsR0FBRyxLQUFLLEVBQWtCLENBQUM7SUFDekMsaUJBQWlCLEdBQUcsS0FBSyxFQUFtRCxDQUFDO0lBRTdFLGtCQUFrQixHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RyxxQkFBcUIsR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRS9HO1FBQ0UsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25ILElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6SCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMzQixDQUFDO3dHQXBCVSwwQ0FBMEM7NEZBQTFDLDBDQUEwQyw2WUFIMUMsQ0FBQyxpQ0FBaUMsQ0FBQzs7NEZBR25DLDBDQUEwQztrQkFOdEQsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUscUNBQXFDO29CQUMvQyxRQUFRLEVBQUUsbUNBQW1DO29CQUM3QyxTQUFTLEVBQUUsQ0FBQyxpQ0FBaUMsQ0FBQztvQkFDOUMsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBpbmplY3QsIGlucHV0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHNraXBBbGxJbml0aWFsTWF5YmUsIFN1YnNjcmlwdGlvbk9iamVjdCB9IGZyb20gJ0BkZXJlZWtiL3J4anMnO1xuaW1wb3J0IHsgRGJ4RmlyZWJhc2VTdG9yYWdlRmlsZVVwbG9hZFN0b3JlIH0gZnJvbSAnLi4vc3RvcmUnO1xuaW1wb3J0IHsgQXJyYXlPclZhbHVlLCBNYXliZSB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgdG9PYnNlcnZhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgc2hhcmVSZXBsYXkgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZpbGVBY2NlcHRGaWx0ZXJUeXBlU3RyaW5nIH0gZnJvbSAnQGRlcmVla2IvZGJ4LXdlYic7XG5cbi8qKlxuICogRGlyZWN0aXZlIHRoYXQgcHJvdmlkZXMgYSBEYnhGaXJlYmFzZVN0b3JhZ2VGaWxlVXBsb2FkU3RvcmUsIGFuZCBzeW5jJ3MgdGhlIGlucHV0cyB0byB0aGUgc3RvcmUuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tkYnhGaXJlYmFzZVN0b3JhZ2VGaWxlVXBsb2FkU3RvcmVdJyxcbiAgZXhwb3J0QXM6ICdkYnhGaXJlYmFzZVN0b3JhZ2VGaWxlVXBsb2FkU3RvcmUnLFxuICBwcm92aWRlcnM6IFtEYnhGaXJlYmFzZVN0b3JhZ2VGaWxlVXBsb2FkU3RvcmVdLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIERieEZpcmViYXNlU3RvcmFnZUZpbGVVcGxvYWRTdG9yZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2FsbG93ZWRTdWIgPSBuZXcgU3Vic2NyaXB0aW9uT2JqZWN0KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX211bHRpU3ViID0gbmV3IFN1YnNjcmlwdGlvbk9iamVjdCgpO1xuXG4gIHJlYWRvbmx5IHVwbG9hZFN0b3JlID0gaW5qZWN0KERieEZpcmViYXNlU3RvcmFnZUZpbGVVcGxvYWRTdG9yZSk7XG5cbiAgcmVhZG9ubHkgbXVsdGlwbGVVcGxvYWQgPSBpbnB1dDxNYXliZTxib29sZWFuPj4oKTtcbiAgcmVhZG9ubHkgZmlsZVR5cGVzQWNjZXB0ZWQgPSBpbnB1dDxNYXliZTxBcnJheU9yVmFsdWU8RmlsZUFjY2VwdEZpbHRlclR5cGVTdHJpbmc+Pj4oKTtcblxuICByZWFkb25seSBmaWxlVHlwZXNBY2NlcHRlZCQgPSB0b09ic2VydmFibGUodGhpcy5maWxlVHlwZXNBY2NlcHRlZCkucGlwZShza2lwQWxsSW5pdGlhbE1heWJlKCksIHNoYXJlUmVwbGF5KDEpKTtcbiAgcmVhZG9ubHkgaXNNdWx0aVVwbG9hZEFsbG93ZWQkID0gdG9PYnNlcnZhYmxlKHRoaXMubXVsdGlwbGVVcGxvYWQpLnBpcGUoc2tpcEFsbEluaXRpYWxNYXliZSgpLCBzaGFyZVJlcGxheSgxKSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5fYWxsb3dlZFN1Yi5zdWJzY3JpcHRpb24gPSB0aGlzLmZpbGVUeXBlc0FjY2VwdGVkJC5zdWJzY3JpYmUoKHgpID0+IHRoaXMudXBsb2FkU3RvcmUuc2V0RmlsZVR5cGVzQWNjZXB0ZWQoeCkpO1xuICAgIHRoaXMuX211bHRpU3ViLnN1YnNjcmlwdGlvbiA9IHRoaXMuaXNNdWx0aVVwbG9hZEFsbG93ZWQkLnN1YnNjcmliZSgoeCkgPT4gdGhpcy51cGxvYWRTdG9yZS5zZXRJc011bHRpVXBsb2FkQWxsb3dlZCh4KSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9hbGxvd2VkU3ViLmRlc3Ryb3koKTtcbiAgICB0aGlzLl9tdWx0aVN1Yi5kZXN0cm95KCk7XG4gIH1cbn1cbiJdfQ==
@@ -1,36 +0,0 @@
1
- import { Directive, inject } from '@angular/core';
2
- import { SubscriptionObject } from '@dereekb/rxjs';
3
- import { DbxFirebaseStorageFileUploadStore } from '../store';
4
- import { DbxFileUploadComponent } from '@dereekb/dbx-web';
5
- import * as i0 from "@angular/core";
6
- /**
7
- * Directive that syncs a DbxFirebaseStorageFileUploadStore's configuration to a DbxFileUploadComponent.
8
- */
9
- export class DbxFirebaseStorageFileUploadSyncDirective {
10
- _allowedSub = new SubscriptionObject();
11
- _multiSub = new SubscriptionObject();
12
- _filesSub = new SubscriptionObject();
13
- uploadStore = inject(DbxFirebaseStorageFileUploadStore);
14
- uploadComponent = inject(DbxFileUploadComponent);
15
- constructor() {
16
- this._allowedSub.subscription = this.uploadStore.fileTypesAllowed$.subscribe((x) => this.uploadComponent.setAccept(x));
17
- this._multiSub.subscription = this.uploadStore.isMultiUploadAllowed$.subscribe((x) => this.uploadComponent.setMultiple(x));
18
- this._filesSub.subscription = this.uploadComponent.filesChanged.subscribe((files) => this.uploadStore.setFiles(files.matchResult.accepted));
19
- }
20
- ngOnDestroy() {
21
- this._allowedSub.destroy();
22
- this._multiSub.destroy();
23
- this._filesSub.destroy();
24
- }
25
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseStorageFileUploadSyncDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
26
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: DbxFirebaseStorageFileUploadSyncDirective, isStandalone: true, selector: "[dbxFirebaseStorageFileUploadSync]", exportAs: ["dbxFirebaseStorageFileUploadSync"], ngImport: i0 });
27
- }
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFirebaseStorageFileUploadSyncDirective, decorators: [{
29
- type: Directive,
30
- args: [{
31
- selector: '[dbxFirebaseStorageFileUploadSync]',
32
- exportAs: 'dbxFirebaseStorageFileUploadSync',
33
- standalone: true
34
- }]
35
- }], ctorParameters: () => [] });
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZWZpbGUudXBsb2FkLnN5bmMuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZpcmViYXNlL3NyYy9saWIvbW9kdWxlcy9zdG9yYWdlZmlsZS9jb250YWluZXIvc3RvcmFnZWZpbGUudXBsb2FkLnN5bmMuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDN0QsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBRTFEOztHQUVHO0FBTUgsTUFBTSxPQUFPLHlDQUF5QztJQUNuQyxXQUFXLEdBQUcsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO0lBQ3ZDLFNBQVMsR0FBRyxJQUFJLGtCQUFrQixFQUFFLENBQUM7SUFDckMsU0FBUyxHQUFHLElBQUksa0JBQWtCLEVBQUUsQ0FBQztJQUU3QyxXQUFXLEdBQUcsTUFBTSxDQUFDLGlDQUFpQyxDQUFDLENBQUM7SUFDeEQsZUFBZSxHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBRTFEO1FBQ0UsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkgsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDOUksQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMzQixDQUFDO3dHQWxCVSx5Q0FBeUM7NEZBQXpDLHlDQUF5Qzs7NEZBQXpDLHlDQUF5QztrQkFMckQsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsb0NBQW9DO29CQUM5QyxRQUFRLEVBQUUsa0NBQWtDO29CQUM1QyxVQUFVLEVBQUUsSUFBSTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIGluamVjdCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb25PYmplY3QgfSBmcm9tICdAZGVyZWVrYi9yeGpzJztcbmltcG9ydCB7IERieEZpcmViYXNlU3RvcmFnZUZpbGVVcGxvYWRTdG9yZSB9IGZyb20gJy4uL3N0b3JlJztcbmltcG9ydCB7IERieEZpbGVVcGxvYWRDb21wb25lbnQgfSBmcm9tICdAZGVyZWVrYi9kYngtd2ViJztcblxuLyoqXG4gKiBEaXJlY3RpdmUgdGhhdCBzeW5jcyBhIERieEZpcmViYXNlU3RvcmFnZUZpbGVVcGxvYWRTdG9yZSdzIGNvbmZpZ3VyYXRpb24gdG8gYSBEYnhGaWxlVXBsb2FkQ29tcG9uZW50LlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbZGJ4RmlyZWJhc2VTdG9yYWdlRmlsZVVwbG9hZFN5bmNdJyxcbiAgZXhwb3J0QXM6ICdkYnhGaXJlYmFzZVN0b3JhZ2VGaWxlVXBsb2FkU3luYycsXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgRGJ4RmlyZWJhc2VTdG9yYWdlRmlsZVVwbG9hZFN5bmNEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlYWRvbmx5IF9hbGxvd2VkU3ViID0gbmV3IFN1YnNjcmlwdGlvbk9iamVjdCgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9tdWx0aVN1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZmlsZXNTdWIgPSBuZXcgU3Vic2NyaXB0aW9uT2JqZWN0KCk7XG5cbiAgcmVhZG9ubHkgdXBsb2FkU3RvcmUgPSBpbmplY3QoRGJ4RmlyZWJhc2VTdG9yYWdlRmlsZVVwbG9hZFN0b3JlKTtcbiAgcmVhZG9ubHkgdXBsb2FkQ29tcG9uZW50ID0gaW5qZWN0KERieEZpbGVVcGxvYWRDb21wb25lbnQpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuX2FsbG93ZWRTdWIuc3Vic2NyaXB0aW9uID0gdGhpcy51cGxvYWRTdG9yZS5maWxlVHlwZXNBbGxvd2VkJC5zdWJzY3JpYmUoKHgpID0+IHRoaXMudXBsb2FkQ29tcG9uZW50LnNldEFjY2VwdCh4KSk7XG4gICAgdGhpcy5fbXVsdGlTdWIuc3Vic2NyaXB0aW9uID0gdGhpcy51cGxvYWRTdG9yZS5pc011bHRpVXBsb2FkQWxsb3dlZCQuc3Vic2NyaWJlKCh4KSA9PiB0aGlzLnVwbG9hZENvbXBvbmVudC5zZXRNdWx0aXBsZSh4KSk7XG4gICAgdGhpcy5fZmlsZXNTdWIuc3Vic2NyaXB0aW9uID0gdGhpcy51cGxvYWRDb21wb25lbnQuZmlsZXNDaGFuZ2VkLnN1YnNjcmliZSgoZmlsZXMpID0+IHRoaXMudXBsb2FkU3RvcmUuc2V0RmlsZXMoZmlsZXMubWF0Y2hSZXN1bHQuYWNjZXB0ZWQpKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2FsbG93ZWRTdWIuZGVzdHJveSgpO1xuICAgIHRoaXMuX211bHRpU3ViLmRlc3Ryb3koKTtcbiAgICB0aGlzLl9maWxlc1N1Yi5kZXN0cm95KCk7XG4gIH1cbn1cbiJdfQ==
@@ -1,6 +0,0 @@
1
- export * from './container';
2
- export * from './store';
3
- export * from './service';
4
- export * from './storagefile.upload.module';
5
- export * from './storagefile.providers';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZmlyZWJhc2Uvc3JjL2xpYi9tb2R1bGVzL3N0b3JhZ2VmaWxlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyx5QkFBeUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY29udGFpbmVyJztcbmV4cG9ydCAqIGZyb20gJy4vc3RvcmUnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc3RvcmFnZWZpbGUudXBsb2FkLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3N0b3JhZ2VmaWxlLnByb3ZpZGVycyc7XG4iXX0=
@@ -1,3 +0,0 @@
1
- export * from './storagefile.download.service';
2
- export * from './storagefile.download.storage.service';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZmlyZWJhc2Uvc3JjL2xpYi9tb2R1bGVzL3N0b3JhZ2VmaWxlL3NlcnZpY2UvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLHdDQUF3QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zdG9yYWdlZmlsZS5kb3dubG9hZC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc3RvcmFnZWZpbGUuZG93bmxvYWQuc3RvcmFnZS5zZXJ2aWNlJztcbiJdfQ==