@dereekb/dbx-core 12.7.0 → 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 (461) hide show
  1. package/fesm2022/dereekb-dbx-core.mjs +659 -976
  2. package/fesm2022/dereekb-dbx-core.mjs.map +1 -1
  3. package/package.json +16 -18
  4. package/types/dereekb-dbx-core.d.ts +3633 -0
  5. package/esm2022/dereekb-dbx-core.mjs +0 -5
  6. package/esm2022/index.mjs +0 -2
  7. package/esm2022/lib/action/action.handler.mjs +0 -22
  8. package/esm2022/lib/action/action.holder.mjs +0 -76
  9. package/esm2022/lib/action/action.machine.mjs +0 -71
  10. package/esm2022/lib/action/action.mjs +0 -95
  11. package/esm2022/lib/action/action.module.mjs +0 -85
  12. package/esm2022/lib/action/action.reference.mjs +0 -7
  13. package/esm2022/lib/action/action.store.mjs +0 -290
  14. package/esm2022/lib/action/action.store.source.mjs +0 -162
  15. package/esm2022/lib/action/action.store.source.provide.mjs +0 -36
  16. package/esm2022/lib/action/directive/auto/action.automodify.directive.mjs +0 -36
  17. package/esm2022/lib/action/directive/auto/action.autotrigger.directive.mjs +0 -111
  18. package/esm2022/lib/action/directive/auto/index.mjs +0 -3
  19. package/esm2022/lib/action/directive/context/action.directive.mjs +0 -32
  20. package/esm2022/lib/action/directive/context/action.source.directive.mjs +0 -25
  21. package/esm2022/lib/action/directive/context/index.mjs +0 -3
  22. package/esm2022/lib/action/directive/debug/action.logger.directive.mjs +0 -25
  23. package/esm2022/lib/action/directive/debug/index.mjs +0 -2
  24. package/esm2022/lib/action/directive/index.mjs +0 -6
  25. package/esm2022/lib/action/directive/map/action.map.directive.mjs +0 -34
  26. package/esm2022/lib/action/directive/map/action.map.key.directive.mjs +0 -27
  27. package/esm2022/lib/action/directive/map/action.map.mjs +0 -60
  28. package/esm2022/lib/action/directive/map/action.map.source.directive.mjs +0 -44
  29. package/esm2022/lib/action/directive/map/action.map.utility.mjs +0 -37
  30. package/esm2022/lib/action/directive/map/action.map.working.disable.directive.mjs +0 -34
  31. package/esm2022/lib/action/directive/map/index.mjs +0 -7
  32. package/esm2022/lib/action/directive/state/action.disabled.directive.mjs +0 -30
  33. package/esm2022/lib/action/directive/state/action.disableonsuccess.directive.mjs +0 -31
  34. package/esm2022/lib/action/directive/state/action.enforce.modified.directive.mjs +0 -34
  35. package/esm2022/lib/action/directive/state/action.error.handler.directive.mjs +0 -32
  36. package/esm2022/lib/action/directive/state/action.handler.directive.mjs +0 -57
  37. package/esm2022/lib/action/directive/state/action.handler.instance.mjs +0 -61
  38. package/esm2022/lib/action/directive/state/action.idle.directive.mjs +0 -34
  39. package/esm2022/lib/action/directive/state/action.presuccess.directive.mjs +0 -34
  40. package/esm2022/lib/action/directive/state/action.success.directive.mjs +0 -34
  41. package/esm2022/lib/action/directive/state/action.success.handler.directive.mjs +0 -32
  42. package/esm2022/lib/action/directive/state/action.triggered.directive.mjs +0 -34
  43. package/esm2022/lib/action/directive/state/action.value.directive.mjs +0 -42
  44. package/esm2022/lib/action/directive/state/action.value.stream.directive.mjs +0 -59
  45. package/esm2022/lib/action/directive/state/action.value.trigger.directive.mjs +0 -75
  46. package/esm2022/lib/action/directive/state/action.value.trigger.instance.mjs +0 -59
  47. package/esm2022/lib/action/directive/state/action.working.directive.mjs +0 -41
  48. package/esm2022/lib/action/directive/state/index.mjs +0 -17
  49. package/esm2022/lib/action/index.mjs +0 -11
  50. package/esm2022/lib/auth/auth.module.mjs +0 -25
  51. package/esm2022/lib/auth/auth.providers.mjs +0 -16
  52. package/esm2022/lib/auth/auth.role.any.directive.mjs +0 -24
  53. package/esm2022/lib/auth/auth.role.has.directive.mjs +0 -24
  54. package/esm2022/lib/auth/auth.role.not.directive.mjs +0 -24
  55. package/esm2022/lib/auth/auth.state.providers.mjs +0 -14
  56. package/esm2022/lib/auth/auth.state.service.mjs +0 -20
  57. package/esm2022/lib/auth/auth.user.mjs +0 -11
  58. package/esm2022/lib/auth/index.mjs +0 -12
  59. package/esm2022/lib/auth/router/auth.router.mjs +0 -6
  60. package/esm2022/lib/auth/router/auth.router.providers.mjs +0 -19
  61. package/esm2022/lib/auth/router/auth.router.service.mjs +0 -73
  62. package/esm2022/lib/auth/router/index.mjs +0 -6
  63. package/esm2022/lib/auth/router/provider/uirouter/auth.hook.mjs +0 -23
  64. package/esm2022/lib/auth/router/provider/uirouter/hook.mjs +0 -71
  65. package/esm2022/lib/auth/router/provider/uirouter/index.mjs +0 -6
  66. package/esm2022/lib/auth/router/provider/uirouter/redirect.mjs +0 -29
  67. package/esm2022/lib/auth/router/provider/uirouter/role.hook.mjs +0 -58
  68. package/esm2022/lib/auth/router/provider/uirouter/state.hook.mjs +0 -53
  69. package/esm2022/lib/auth/router/state/auth.router.state.providers.mjs +0 -23
  70. package/esm2022/lib/auth/router/state/effect/auth.router.state.effect.mjs +0 -37
  71. package/esm2022/lib/auth/router/state/effect/index.mjs +0 -2
  72. package/esm2022/lib/auth/router/state/index.mjs +0 -3
  73. package/esm2022/lib/auth/service/auth.service.mjs +0 -6
  74. package/esm2022/lib/auth/service/auth.service.rxjs.mjs +0 -30
  75. package/esm2022/lib/auth/service/index.mjs +0 -3
  76. package/esm2022/lib/auth/state/action/auth.action.mjs +0 -14
  77. package/esm2022/lib/auth/state/action/index.mjs +0 -12
  78. package/esm2022/lib/auth/state/action/user.action.mjs +0 -18
  79. package/esm2022/lib/auth/state/effect/auth.effect.mjs +0 -33
  80. package/esm2022/lib/auth/state/index.mjs +0 -13
  81. package/esm2022/lib/auth/state/reducer/index.mjs +0 -23
  82. package/esm2022/lib/auth/state/reducer/user.reducer.mjs +0 -12
  83. package/esm2022/lib/auth/state/state.mjs +0 -2
  84. package/esm2022/lib/button/action/action.button.directive.mjs +0 -28
  85. package/esm2022/lib/button/action/action.button.trigger.directive.mjs +0 -30
  86. package/esm2022/lib/button/action/index.mjs +0 -3
  87. package/esm2022/lib/button/button.directive.mjs +0 -115
  88. package/esm2022/lib/button/button.loading.directive.mjs +0 -37
  89. package/esm2022/lib/button/button.mjs +0 -21
  90. package/esm2022/lib/button/button.module.mjs +0 -28
  91. package/esm2022/lib/button/index.mjs +0 -7
  92. package/esm2022/lib/button/router/button.segue.directive.mjs +0 -29
  93. package/esm2022/lib/button/router/index.mjs +0 -2
  94. package/esm2022/lib/context/context.directive.mjs +0 -26
  95. package/esm2022/lib/context/context.mjs +0 -25
  96. package/esm2022/lib/context/context.module.mjs +0 -19
  97. package/esm2022/lib/context/context.providers.mjs +0 -12
  98. package/esm2022/lib/context/context.service.mjs +0 -26
  99. package/esm2022/lib/context/index.mjs +0 -7
  100. package/esm2022/lib/context/state/action/data.action.mjs +0 -10
  101. package/esm2022/lib/context/state/action/index.mjs +0 -7
  102. package/esm2022/lib/context/state/effect/index.mjs +0 -33
  103. package/esm2022/lib/context/state/index.mjs +0 -13
  104. package/esm2022/lib/context/state/reducer/data.reducer.mjs +0 -16
  105. package/esm2022/lib/context/state/reducer/index.mjs +0 -25
  106. package/esm2022/lib/context/state/state.mjs +0 -2
  107. package/esm2022/lib/environment/environment.mjs +0 -6
  108. package/esm2022/lib/environment/environment.providers.mjs +0 -19
  109. package/esm2022/lib/environment/environment.service.mjs +0 -30
  110. package/esm2022/lib/environment/index.mjs +0 -4
  111. package/esm2022/lib/filter/filter.abstract.connector.directive.mjs +0 -21
  112. package/esm2022/lib/filter/filter.abstract.source.directive.mjs +0 -69
  113. package/esm2022/lib/filter/filter.connect.source.directive.mjs +0 -23
  114. package/esm2022/lib/filter/filter.connector.directive.mjs +0 -20
  115. package/esm2022/lib/filter/filter.content.mjs +0 -29
  116. package/esm2022/lib/filter/filter.map.connector.directive.mjs +0 -33
  117. package/esm2022/lib/filter/filter.map.directive.mjs +0 -22
  118. package/esm2022/lib/filter/filter.map.instance.directive.mjs +0 -25
  119. package/esm2022/lib/filter/filter.map.source.directive.mjs +0 -38
  120. package/esm2022/lib/filter/filter.module.mjs +0 -22
  121. package/esm2022/lib/filter/filter.preset.mjs +0 -8
  122. package/esm2022/lib/filter/filter.source.directive.mjs +0 -19
  123. package/esm2022/lib/filter/index.mjs +0 -13
  124. package/esm2022/lib/index.mjs +0 -15
  125. package/esm2022/lib/injection/index.mjs +0 -14
  126. package/esm2022/lib/injection/injection.array.component.mjs +0 -31
  127. package/esm2022/lib/injection/injection.array.mjs +0 -2
  128. package/esm2022/lib/injection/injection.component.mjs +0 -32
  129. package/esm2022/lib/injection/injection.component.module.mjs +0 -26
  130. package/esm2022/lib/injection/injection.context.directive.mjs +0 -130
  131. package/esm2022/lib/injection/injection.context.forward.directive.mjs +0 -25
  132. package/esm2022/lib/injection/injection.context.mjs +0 -20
  133. package/esm2022/lib/injection/injection.directive.mjs +0 -30
  134. package/esm2022/lib/injection/injection.instance.mjs +0 -121
  135. package/esm2022/lib/injection/injection.mjs +0 -16
  136. package/esm2022/lib/injection/injection.rxjs.mjs +0 -24
  137. package/esm2022/lib/injection/injection.util.mjs +0 -11
  138. package/esm2022/lib/injection/injector.mjs +0 -13
  139. package/esm2022/lib/ngrx/index.mjs +0 -2
  140. package/esm2022/lib/ngrx/store.lockset.mjs +0 -66
  141. package/esm2022/lib/pipe/async/asobservable.pipe.mjs +0 -21
  142. package/esm2022/lib/pipe/async/async.pipe.module.mjs +0 -20
  143. package/esm2022/lib/pipe/async/index.mjs +0 -3
  144. package/esm2022/lib/pipe/date/date.pipe.module.mjs +0 -108
  145. package/esm2022/lib/pipe/date/datedayrange.pipe.mjs +0 -24
  146. package/esm2022/lib/pipe/date/datedaytimerange.pipe.mjs +0 -24
  147. package/esm2022/lib/pipe/date/datedistance.pipe.mjs +0 -27
  148. package/esm2022/lib/pipe/date/dateformatdistance.pipe.mjs +0 -36
  149. package/esm2022/lib/pipe/date/datefromtoformat.pipe.mjs +0 -34
  150. package/esm2022/lib/pipe/date/daterangedistance.pipe.mjs +0 -24
  151. package/esm2022/lib/pipe/date/datetimerange.pipe.mjs +0 -24
  152. package/esm2022/lib/pipe/date/datetimerangeonly.pipe.mjs +0 -24
  153. package/esm2022/lib/pipe/date/datetimerangeonlydistance.pipe.mjs +0 -24
  154. package/esm2022/lib/pipe/date/index.mjs +0 -18
  155. package/esm2022/lib/pipe/date/minutesstring.pipe.mjs +0 -36
  156. package/esm2022/lib/pipe/date/systemdatetotargetdate.pipe.mjs +0 -27
  157. package/esm2022/lib/pipe/date/targetdatetosystemdate.pipe.mjs +0 -27
  158. package/esm2022/lib/pipe/date/timedistance.pipe.mjs +0 -57
  159. package/esm2022/lib/pipe/date/timezoneabbreviation.pipe.mjs +0 -27
  160. package/esm2022/lib/pipe/date/tojsdate.pipe.mjs +0 -30
  161. package/esm2022/lib/pipe/date/tominutes.pipe.mjs +0 -21
  162. package/esm2022/lib/pipe/index.mjs +0 -6
  163. package/esm2022/lib/pipe/misc/index.mjs +0 -3
  164. package/esm2022/lib/pipe/misc/misc.pipe.module.mjs +0 -21
  165. package/esm2022/lib/pipe/misc/prettyjson.pipe.mjs +0 -30
  166. package/esm2022/lib/pipe/pipe.module.mjs +0 -25
  167. package/esm2022/lib/pipe/value/cuttext.pipe.mjs +0 -22
  168. package/esm2022/lib/pipe/value/dollar.pipe.mjs +0 -24
  169. package/esm2022/lib/pipe/value/getvalue.pipe.mjs +0 -40
  170. package/esm2022/lib/pipe/value/index.mjs +0 -5
  171. package/esm2022/lib/pipe/value/value.pipe.module.mjs +0 -27
  172. package/esm2022/lib/router/anchor/anchor.directive.mjs +0 -63
  173. package/esm2022/lib/router/anchor/anchor.mjs +0 -52
  174. package/esm2022/lib/router/anchor/clickable.mjs +0 -18
  175. package/esm2022/lib/router/anchor/index.mjs +0 -5
  176. package/esm2022/lib/router/anchor/mousable.mjs +0 -2
  177. package/esm2022/lib/router/auth/hook/id.hook.mjs +0 -54
  178. package/esm2022/lib/router/auth/hook/index.mjs +0 -3
  179. package/esm2022/lib/router/auth/hook/uid.hook.mjs +0 -19
  180. package/esm2022/lib/router/auth/index.mjs +0 -2
  181. package/esm2022/lib/router/index.mjs +0 -6
  182. package/esm2022/lib/router/model/id.param.redirect.mjs +0 -73
  183. package/esm2022/lib/router/model/index.mjs +0 -7
  184. package/esm2022/lib/router/model/model.module.mjs +0 -26
  185. package/esm2022/lib/router/model/model.router.id.directive.mjs +0 -58
  186. package/esm2022/lib/router/model/model.router.key.directive.mjs +0 -60
  187. package/esm2022/lib/router/model/model.router.mjs +0 -38
  188. package/esm2022/lib/router/model/model.router.uid.directive.mjs +0 -25
  189. package/esm2022/lib/router/router/index.mjs +0 -5
  190. package/esm2022/lib/router/router/provider/angular/angular.router.service.mjs +0 -78
  191. package/esm2022/lib/router/router/provider/angular/angular.router.service.module.mjs +0 -31
  192. package/esm2022/lib/router/router/provider/angular/index.mjs +0 -3
  193. package/esm2022/lib/router/router/provider/index.mjs +0 -3
  194. package/esm2022/lib/router/router/provider/uirouter/index.mjs +0 -4
  195. package/esm2022/lib/router/router/provider/uirouter/uirouter.router.service.mjs +0 -95
  196. package/esm2022/lib/router/router/provider/uirouter/uirouter.router.service.module.mjs +0 -34
  197. package/esm2022/lib/router/router/provider/uirouter/uirouter.router.service.providers.mjs +0 -24
  198. package/esm2022/lib/router/router/service/index.mjs +0 -6
  199. package/esm2022/lib/router/router/service/router.go.mjs +0 -14
  200. package/esm2022/lib/router/router/service/router.service.mjs +0 -7
  201. package/esm2022/lib/router/router/service/router.service.rxjs.mjs +0 -39
  202. package/esm2022/lib/router/router/service/router.service.util.mjs +0 -14
  203. package/esm2022/lib/router/router/service/router.transition.service.mjs +0 -6
  204. package/esm2022/lib/router/router/transition/index.mjs +0 -5
  205. package/esm2022/lib/router/router/transition/transition.directive.mjs +0 -19
  206. package/esm2022/lib/router/router/transition/transition.mjs +0 -12
  207. package/esm2022/lib/router/router/transition/transition.rxjs.mjs +0 -55
  208. package/esm2022/lib/router/router/transition/transition.watcher.directive.mjs +0 -28
  209. package/esm2022/lib/router/router/util/index.mjs +0 -3
  210. package/esm2022/lib/router/router/util/route.default.mjs +0 -63
  211. package/esm2022/lib/router/router/util/route.reader.mjs +0 -47
  212. package/esm2022/lib/router/segue.mjs +0 -35
  213. package/esm2022/lib/rxjs/clean.mjs +0 -28
  214. package/esm2022/lib/rxjs/destroy.mjs +0 -13
  215. package/esm2022/lib/rxjs/index.mjs +0 -7
  216. package/esm2022/lib/rxjs/loading.mjs +0 -19
  217. package/esm2022/lib/rxjs/lockset.mjs +0 -56
  218. package/esm2022/lib/rxjs/rxjs.directive.mjs +0 -42
  219. package/esm2022/lib/rxjs/subscription.mjs +0 -16
  220. package/esm2022/lib/storage/index.mjs +0 -9
  221. package/esm2022/lib/storage/storage.accessor.mjs +0 -16
  222. package/esm2022/lib/storage/storage.accessor.simple.factory.mjs +0 -26
  223. package/esm2022/lib/storage/storage.accessor.simple.mjs +0 -172
  224. package/esm2022/lib/storage/storage.accessor.string.mjs +0 -50
  225. package/esm2022/lib/storage/storage.di.mjs +0 -4
  226. package/esm2022/lib/storage/storage.object.localstorage.mjs +0 -47
  227. package/esm2022/lib/storage/storage.object.memory.mjs +0 -17
  228. package/esm2022/lib/storage/storage.providers.mjs +0 -41
  229. package/esm2022/lib/util/index.mjs +0 -3
  230. package/esm2022/lib/util/input.mjs +0 -7
  231. package/esm2022/lib/util/view.mjs +0 -81
  232. package/esm2022/lib/view/if.directive.mjs +0 -28
  233. package/esm2022/lib/view/index.mjs +0 -2
  234. package/index.d.ts +0 -1
  235. package/lib/action/action.d.ts +0 -80
  236. package/lib/action/action.handler.d.ts +0 -15
  237. package/lib/action/action.holder.d.ts +0 -38
  238. package/lib/action/action.machine.d.ts +0 -48
  239. package/lib/action/action.module.d.ts +0 -30
  240. package/lib/action/action.reference.d.ts +0 -11
  241. package/lib/action/action.store.d.ts +0 -208
  242. package/lib/action/action.store.source.d.ts +0 -77
  243. package/lib/action/action.store.source.provide.d.ts +0 -7
  244. package/lib/action/directive/auto/action.automodify.directive.d.ts +0 -11
  245. package/lib/action/directive/auto/action.autotrigger.directive.d.ts +0 -36
  246. package/lib/action/directive/auto/index.d.ts +0 -2
  247. package/lib/action/directive/context/action.directive.d.ts +0 -10
  248. package/lib/action/directive/context/action.source.directive.d.ts +0 -12
  249. package/lib/action/directive/context/index.d.ts +0 -2
  250. package/lib/action/directive/debug/action.logger.directive.d.ts +0 -11
  251. package/lib/action/directive/debug/index.d.ts +0 -1
  252. package/lib/action/directive/index.d.ts +0 -5
  253. package/lib/action/directive/map/action.map.d.ts +0 -43
  254. package/lib/action/directive/map/action.map.directive.d.ts +0 -12
  255. package/lib/action/directive/map/action.map.key.directive.d.ts +0 -14
  256. package/lib/action/directive/map/action.map.source.directive.d.ts +0 -19
  257. package/lib/action/directive/map/action.map.utility.d.ts +0 -48
  258. package/lib/action/directive/map/action.map.working.disable.directive.d.ts +0 -16
  259. package/lib/action/directive/map/index.d.ts +0 -6
  260. package/lib/action/directive/state/action.disabled.directive.d.ts +0 -15
  261. package/lib/action/directive/state/action.disableonsuccess.directive.d.ts +0 -15
  262. package/lib/action/directive/state/action.enforce.modified.directive.d.ts +0 -15
  263. package/lib/action/directive/state/action.error.handler.directive.d.ts +0 -18
  264. package/lib/action/directive/state/action.handler.directive.d.ts +0 -33
  265. package/lib/action/directive/state/action.handler.instance.d.ts +0 -22
  266. package/lib/action/directive/state/action.idle.directive.d.ts +0 -15
  267. package/lib/action/directive/state/action.presuccess.directive.d.ts +0 -15
  268. package/lib/action/directive/state/action.success.directive.d.ts +0 -15
  269. package/lib/action/directive/state/action.success.handler.directive.d.ts +0 -18
  270. package/lib/action/directive/state/action.triggered.directive.d.ts +0 -15
  271. package/lib/action/directive/state/action.value.directive.d.ts +0 -23
  272. package/lib/action/directive/state/action.value.stream.directive.d.ts +0 -19
  273. package/lib/action/directive/state/action.value.trigger.directive.d.ts +0 -38
  274. package/lib/action/directive/state/action.value.trigger.instance.d.ts +0 -45
  275. package/lib/action/directive/state/action.working.directive.d.ts +0 -17
  276. package/lib/action/directive/state/index.d.ts +0 -16
  277. package/lib/action/index.d.ts +0 -10
  278. package/lib/auth/auth.module.d.ts +0 -16
  279. package/lib/auth/auth.providers.d.ts +0 -12
  280. package/lib/auth/auth.role.any.directive.d.ts +0 -15
  281. package/lib/auth/auth.role.has.directive.d.ts +0 -15
  282. package/lib/auth/auth.role.not.directive.d.ts +0 -15
  283. package/lib/auth/auth.state.providers.d.ts +0 -7
  284. package/lib/auth/auth.state.service.d.ts +0 -11
  285. package/lib/auth/auth.user.d.ts +0 -28
  286. package/lib/auth/index.d.ts +0 -11
  287. package/lib/auth/router/auth.router.d.ts +0 -10
  288. package/lib/auth/router/auth.router.providers.d.ts +0 -18
  289. package/lib/auth/router/auth.router.service.d.ts +0 -46
  290. package/lib/auth/router/index.d.ts +0 -5
  291. package/lib/auth/router/provider/uirouter/auth.hook.d.ts +0 -18
  292. package/lib/auth/router/provider/uirouter/hook.d.ts +0 -51
  293. package/lib/auth/router/provider/uirouter/index.d.ts +0 -5
  294. package/lib/auth/router/provider/uirouter/redirect.d.ts +0 -9
  295. package/lib/auth/router/provider/uirouter/role.hook.d.ts +0 -44
  296. package/lib/auth/router/provider/uirouter/state.hook.d.ts +0 -31
  297. package/lib/auth/router/state/auth.router.state.providers.d.ts +0 -19
  298. package/lib/auth/router/state/effect/auth.router.state.effect.d.ts +0 -28
  299. package/lib/auth/router/state/effect/index.d.ts +0 -1
  300. package/lib/auth/router/state/index.d.ts +0 -2
  301. package/lib/auth/service/auth.service.d.ts +0 -46
  302. package/lib/auth/service/auth.service.rxjs.d.ts +0 -19
  303. package/lib/auth/service/index.d.ts +0 -2
  304. package/lib/auth/state/action/auth.action.d.ts +0 -12
  305. package/lib/auth/state/action/index.d.ts +0 -11
  306. package/lib/auth/state/action/user.action.d.ts +0 -34
  307. package/lib/auth/state/effect/auth.effect.d.ts +0 -28
  308. package/lib/auth/state/index.d.ts +0 -12
  309. package/lib/auth/state/reducer/index.d.ts +0 -29
  310. package/lib/auth/state/reducer/user.reducer.d.ts +0 -11
  311. package/lib/auth/state/state.d.ts +0 -5
  312. package/lib/button/action/action.button.directive.d.ts +0 -10
  313. package/lib/button/action/action.button.trigger.directive.d.ts +0 -14
  314. package/lib/button/action/index.d.ts +0 -2
  315. package/lib/button/button.d.ts +0 -113
  316. package/lib/button/button.directive.d.ts +0 -60
  317. package/lib/button/button.loading.directive.d.ts +0 -18
  318. package/lib/button/button.module.d.ts +0 -19
  319. package/lib/button/index.d.ts +0 -6
  320. package/lib/button/router/button.segue.directive.d.ts +0 -13
  321. package/lib/button/router/index.d.ts +0 -1
  322. package/lib/context/context.d.ts +0 -42
  323. package/lib/context/context.directive.d.ts +0 -13
  324. package/lib/context/context.module.d.ts +0 -10
  325. package/lib/context/context.providers.d.ts +0 -7
  326. package/lib/context/context.service.d.ts +0 -14
  327. package/lib/context/index.d.ts +0 -6
  328. package/lib/context/state/action/data.action.d.ts +0 -13
  329. package/lib/context/state/action/index.d.ts +0 -6
  330. package/lib/context/state/effect/index.d.ts +0 -24
  331. package/lib/context/state/index.d.ts +0 -12
  332. package/lib/context/state/reducer/data.reducer.d.ts +0 -13
  333. package/lib/context/state/reducer/index.d.ts +0 -34
  334. package/lib/context/state/state.d.ts +0 -9
  335. package/lib/environment/environment.d.ts +0 -21
  336. package/lib/environment/environment.providers.d.ts +0 -8
  337. package/lib/environment/environment.service.d.ts +0 -17
  338. package/lib/environment/index.d.ts +0 -3
  339. package/lib/filter/filter.abstract.connector.directive.d.ts +0 -13
  340. package/lib/filter/filter.abstract.source.directive.d.ts +0 -37
  341. package/lib/filter/filter.connect.source.directive.d.ts +0 -13
  342. package/lib/filter/filter.connector.directive.d.ts +0 -9
  343. package/lib/filter/filter.content.d.ts +0 -10
  344. package/lib/filter/filter.map.connector.directive.d.ts +0 -14
  345. package/lib/filter/filter.map.directive.d.ts +0 -10
  346. package/lib/filter/filter.map.instance.directive.d.ts +0 -16
  347. package/lib/filter/filter.map.source.directive.d.ts +0 -23
  348. package/lib/filter/filter.module.d.ts +0 -12
  349. package/lib/filter/filter.preset.d.ts +0 -29
  350. package/lib/filter/filter.source.directive.d.ts +0 -9
  351. package/lib/filter/index.d.ts +0 -12
  352. package/lib/index.d.ts +0 -14
  353. package/lib/injection/index.d.ts +0 -13
  354. package/lib/injection/injection.array.component.d.ts +0 -11
  355. package/lib/injection/injection.array.d.ts +0 -12
  356. package/lib/injection/injection.component.d.ts +0 -19
  357. package/lib/injection/injection.component.module.d.ts +0 -16
  358. package/lib/injection/injection.context.d.ts +0 -39
  359. package/lib/injection/injection.context.directive.d.ts +0 -26
  360. package/lib/injection/injection.context.forward.directive.d.ts +0 -15
  361. package/lib/injection/injection.d.ts +0 -53
  362. package/lib/injection/injection.directive.d.ts +0 -18
  363. package/lib/injection/injection.instance.d.ts +0 -32
  364. package/lib/injection/injection.rxjs.d.ts +0 -10
  365. package/lib/injection/injection.util.d.ts +0 -9
  366. package/lib/injection/injector.d.ts +0 -10
  367. package/lib/ngrx/index.d.ts +0 -1
  368. package/lib/ngrx/store.lockset.d.ts +0 -36
  369. package/lib/pipe/async/asobservable.pipe.d.ts +0 -12
  370. package/lib/pipe/async/async.pipe.module.d.ts +0 -10
  371. package/lib/pipe/async/index.d.ts +0 -2
  372. package/lib/pipe/date/date.pipe.module.d.ts +0 -43
  373. package/lib/pipe/date/datedayrange.pipe.d.ts +0 -9
  374. package/lib/pipe/date/datedaytimerange.pipe.d.ts +0 -9
  375. package/lib/pipe/date/datedistance.pipe.d.ts +0 -8
  376. package/lib/pipe/date/dateformatdistance.pipe.d.ts +0 -12
  377. package/lib/pipe/date/datefromtoformat.pipe.d.ts +0 -13
  378. package/lib/pipe/date/daterangedistance.pipe.d.ts +0 -9
  379. package/lib/pipe/date/datetimerange.pipe.d.ts +0 -9
  380. package/lib/pipe/date/datetimerangeonly.pipe.d.ts +0 -9
  381. package/lib/pipe/date/datetimerangeonlydistance.pipe.d.ts +0 -9
  382. package/lib/pipe/date/index.d.ts +0 -17
  383. package/lib/pipe/date/minutesstring.pipe.d.ts +0 -8
  384. package/lib/pipe/date/systemdatetotargetdate.pipe.d.ts +0 -12
  385. package/lib/pipe/date/targetdatetosystemdate.pipe.d.ts +0 -12
  386. package/lib/pipe/date/timedistance.pipe.d.ts +0 -13
  387. package/lib/pipe/date/timezoneabbreviation.pipe.d.ts +0 -12
  388. package/lib/pipe/date/tojsdate.pipe.d.ts +0 -10
  389. package/lib/pipe/date/tominutes.pipe.d.ts +0 -7
  390. package/lib/pipe/index.d.ts +0 -5
  391. package/lib/pipe/misc/index.d.ts +0 -2
  392. package/lib/pipe/misc/misc.pipe.module.d.ts +0 -12
  393. package/lib/pipe/misc/prettyjson.pipe.d.ts +0 -9
  394. package/lib/pipe/pipe.module.d.ts +0 -15
  395. package/lib/pipe/value/cuttext.pipe.d.ts +0 -11
  396. package/lib/pipe/value/dollar.pipe.d.ts +0 -13
  397. package/lib/pipe/value/getvalue.pipe.d.ts +0 -19
  398. package/lib/pipe/value/index.d.ts +0 -4
  399. package/lib/pipe/value/value.pipe.module.d.ts +0 -17
  400. package/lib/router/anchor/anchor.d.ts +0 -71
  401. package/lib/router/anchor/anchor.directive.d.ts +0 -30
  402. package/lib/router/anchor/clickable.d.ts +0 -20
  403. package/lib/router/anchor/index.d.ts +0 -4
  404. package/lib/router/anchor/mousable.d.ts +0 -9
  405. package/lib/router/auth/hook/id.hook.d.ts +0 -44
  406. package/lib/router/auth/hook/index.d.ts +0 -2
  407. package/lib/router/auth/hook/uid.hook.d.ts +0 -41
  408. package/lib/router/auth/index.d.ts +0 -1
  409. package/lib/router/index.d.ts +0 -5
  410. package/lib/router/model/id.param.redirect.d.ts +0 -51
  411. package/lib/router/model/index.d.ts +0 -6
  412. package/lib/router/model/model.module.d.ts +0 -16
  413. package/lib/router/model/model.router.d.ts +0 -35
  414. package/lib/router/model/model.router.id.directive.d.ts +0 -27
  415. package/lib/router/model/model.router.key.directive.d.ts +0 -29
  416. package/lib/router/model/model.router.uid.directive.d.ts +0 -13
  417. package/lib/router/router/index.d.ts +0 -4
  418. package/lib/router/router/provider/angular/angular.router.service.d.ts +0 -24
  419. package/lib/router/router/provider/angular/angular.router.service.module.d.ts +0 -8
  420. package/lib/router/router/provider/angular/index.d.ts +0 -2
  421. package/lib/router/router/provider/index.d.ts +0 -2
  422. package/lib/router/router/provider/uirouter/index.d.ts +0 -3
  423. package/lib/router/router/provider/uirouter/uirouter.router.service.d.ts +0 -32
  424. package/lib/router/router/provider/uirouter/uirouter.router.service.module.d.ts +0 -11
  425. package/lib/router/router/provider/uirouter/uirouter.router.service.providers.d.ts +0 -7
  426. package/lib/router/router/service/index.d.ts +0 -5
  427. package/lib/router/router/service/router.go.d.ts +0 -14
  428. package/lib/router/router/service/router.service.d.ts +0 -49
  429. package/lib/router/router/service/router.service.rxjs.d.ts +0 -27
  430. package/lib/router/router/service/router.service.util.d.ts +0 -26
  431. package/lib/router/router/service/router.transition.service.d.ts +0 -11
  432. package/lib/router/router/transition/index.d.ts +0 -4
  433. package/lib/router/router/transition/transition.d.ts +0 -13
  434. package/lib/router/router/transition/transition.directive.d.ts +0 -13
  435. package/lib/router/router/transition/transition.rxjs.d.ts +0 -67
  436. package/lib/router/router/transition/transition.watcher.directive.d.ts +0 -14
  437. package/lib/router/router/util/index.d.ts +0 -2
  438. package/lib/router/router/util/route.default.d.ts +0 -20
  439. package/lib/router/router/util/route.reader.d.ts +0 -56
  440. package/lib/router/segue.d.ts +0 -38
  441. package/lib/rxjs/clean.d.ts +0 -16
  442. package/lib/rxjs/destroy.d.ts +0 -7
  443. package/lib/rxjs/index.d.ts +0 -6
  444. package/lib/rxjs/loading.d.ts +0 -13
  445. package/lib/rxjs/lockset.d.ts +0 -47
  446. package/lib/rxjs/rxjs.directive.d.ts +0 -29
  447. package/lib/rxjs/subscription.d.ts +0 -9
  448. package/lib/storage/index.d.ts +0 -8
  449. package/lib/storage/storage.accessor.d.ts +0 -35
  450. package/lib/storage/storage.accessor.simple.d.ts +0 -80
  451. package/lib/storage/storage.accessor.simple.factory.d.ts +0 -17
  452. package/lib/storage/storage.accessor.string.d.ts +0 -16
  453. package/lib/storage/storage.di.d.ts +0 -3
  454. package/lib/storage/storage.object.localstorage.d.ts +0 -16
  455. package/lib/storage/storage.object.memory.d.ts +0 -9
  456. package/lib/storage/storage.providers.d.ts +0 -13
  457. package/lib/util/index.d.ts +0 -2
  458. package/lib/util/input.d.ts +0 -6
  459. package/lib/util/view.d.ts +0 -61
  460. package/lib/view/if.directive.d.ts +0 -18
  461. package/lib/view/index.d.ts +0 -1
@@ -1,290 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { ComponentStore } from '@ngrx/component-store';
3
- import { distinctUntilChanged, filter, map, shareReplay, switchMap, startWith, of } from 'rxjs';
4
- import { BooleanStringKeyArrayUtility } from '@dereekb/util';
5
- import { idleLoadingState, errorResult, filterMaybe, scanCount, successResult, beginLoading } from '@dereekb/rxjs';
6
- import { DbxActionState, DEFAULT_ACTION_DISABLED_KEY, isIdleActionState, loadingStateTypeForActionState } from './action';
7
- import { cleanLockSet } from '../rxjs';
8
- import * as i0 from "@angular/core";
9
- export function isActionContextEnabled(state) {
10
- return BooleanStringKeyArrayUtility.isFalse(state.disabled);
11
- }
12
- export function isActionContextDisabled(state) {
13
- return BooleanStringKeyArrayUtility.isTrue(state.disabled);
14
- }
15
- export function isDisabledActionContextState(state) {
16
- return isIdleActionState(state.actionState) && isActionContextDisabled(state);
17
- }
18
- export function isWorkingActionState(actionState) {
19
- return !isIdleActionState(actionState);
20
- }
21
- export function canTriggerActionState(actionState) {
22
- return actionState !== DbxActionState.DISABLED && isIdleActionState(actionState);
23
- }
24
- export function canTriggerAction(state) {
25
- return isActionContextEnabled(state) && isIdleActionState(state.actionState);
26
- }
27
- export function canReadyValue(state) {
28
- return state.actionState === DbxActionState.TRIGGERED;
29
- }
30
- export function actionContextIsModifiedAndCanTrigger(state) {
31
- // console.log('check: ', state, state.isModified, canTriggerAction(state));
32
- return state.isModified && canTriggerAction(state);
33
- }
34
- export function actionContextHasNoErrorAndIsModifiedAndCanTrigger(state) {
35
- return !state.error && actionContextIsModifiedAndCanTrigger(state);
36
- }
37
- export function loadingStateForActionContextState(state) {
38
- let loadingState;
39
- switch (state.actionState) {
40
- case DbxActionState.RESOLVED:
41
- loadingState = successResult(state.result);
42
- break;
43
- case DbxActionState.REJECTED:
44
- loadingState = errorResult(state.error);
45
- break;
46
- case DbxActionState.IDLE:
47
- case DbxActionState.DISABLED:
48
- loadingState = idleLoadingState();
49
- break;
50
- default:
51
- loadingState = beginLoading(state.workProgress != null ? { loadingProgress: state.workProgress } : undefined);
52
- break;
53
- }
54
- return loadingState;
55
- }
56
- export function loadingStateTypeForActionContextState(state) {
57
- return loadingStateTypeForActionState(state.actionState);
58
- }
59
- const INITIAL_STATE = {
60
- isModified: false,
61
- actionState: DbxActionState.IDLE
62
- };
63
- export class ActionContextStore extends ComponentStore {
64
- lockSet = cleanLockSet({
65
- onLockSetDestroy: () => super.ngOnDestroy(),
66
- destroyLocksetTiming: {
67
- delayTime: 2000
68
- }
69
- });
70
- constructor() {
71
- super({ ...INITIAL_STATE });
72
- this.lockSet.addLock('working', this.isWorking$);
73
- }
74
- // MARK: Accessors
75
- actionState$ = this.state$.pipe(map((x) => (isDisabledActionContextState(x) ? DbxActionState.DISABLED : x.actionState)), shareReplay(1));
76
- /**
77
- * Returns the current disabled reasons/keys.
78
- */
79
- disabledKeys$ = this.state$.pipe(map((x) => [...(x.disabled ?? [])]), distinctUntilChanged(), shareReplay(1));
80
- /**
81
- * Current value of the state.
82
- */
83
- currentValue$ = this.state$.pipe(map((x) => x.value));
84
- /**
85
- * Maps the current state to true or not when the action state changes to/from disabled.
86
- */
87
- isDisabled$ = this.state$.pipe(map(isDisabledActionContextState), distinctUntilChanged(), shareReplay(1));
88
- /**
89
- * Pipes when idle but modified.
90
- */
91
- isModified$ = this.afterDistinctBoolean((x) => x.isModified);
92
- /**
93
- * Pipes true when idle.
94
- */
95
- idle$ = this.actionState$.pipe(map((x) => x === DbxActionState.IDLE), distinctUntilChanged(), shareReplay(1));
96
- /**
97
- * Pipes true when triggered.
98
- */
99
- triggered$ = this.afterDistinctActionState(DbxActionState.TRIGGERED, () => true);
100
- /**
101
- * Pipes the readied value on ValueReady.
102
- */
103
- valueReady$ = this.afterDistinctActionState(DbxActionState.VALUE_READY, (x) => x.value);
104
- /**
105
- * Pipes the working progress on the working state.
106
- */
107
- workProgress$ = this.state$.pipe(map((x) => x.workProgress), distinctUntilChanged(), shareReplay(1));
108
- /**
109
- * Pipes the error on the rejection state.
110
- */
111
- rejected$ = this.afterDistinctActionState(DbxActionState.REJECTED, (x) => x.error);
112
- /**
113
- * Pipes the result when the ActionState becomes rejected.
114
- */
115
- rejectedPair$ = this.afterDistinctActionState(DbxActionState.RESOLVED, (x) => ({ value: x.value, error: x.error }));
116
- /**
117
- * Pipes the result when the ActionState becomes working.
118
- */
119
- working$ = this.afterDistinctActionState(DbxActionState.WORKING, () => true);
120
- /**
121
- * Whether or not it is currently in a working state.
122
- */
123
- isWorking$ = this.afterDistinctBoolean((x) => isWorkingActionState(x.actionState));
124
- /**
125
- * Pipes the current work or work progress.
126
- */
127
- isWorkingOrWorkProgress$ = this.isWorking$.pipe(switchMap((x) => {
128
- let obs;
129
- if (x) {
130
- obs = this.workProgress$.pipe(filter((x) => x != null), startWith(x));
131
- }
132
- else {
133
- obs = of(x);
134
- }
135
- return obs;
136
- }), distinctUntilChanged(), shareReplay(1));
137
- /**
138
- * Pipes the current error.
139
- */
140
- error$ = this.state$.pipe(map((x) => x.error), distinctUntilChanged(), shareReplay(1));
141
- /**
142
- * Pipes the result when the ActionState becomes success.
143
- */
144
- success$ = this.afterDistinctActionState(DbxActionState.RESOLVED, (x) => x.result);
145
- /**
146
- * Pipes the result when the ActionState becomes success.
147
- */
148
- successPair$ = this.afterDistinctActionState(DbxActionState.RESOLVED, (x) => ({ value: x.value, result: x.result }));
149
- /**
150
- * Whether or not it is currently in a success state.
151
- */
152
- isSuccess$ = this.afterDistinctBoolean((x) => x.actionState === DbxActionState.RESOLVED);
153
- /**
154
- * Returns a loading state based on the current state.
155
- */
156
- loadingState$ = this.afterDistinctLoadingStateTypeChange().pipe(switchMap((x) => {
157
- const base = loadingStateForActionContextState(x);
158
- let obs;
159
- if (base.loading === true) {
160
- obs = this.workProgress$.pipe(filter((x) => x != null), map((loadingProgress) => ({ ...base, loadingProgress })), startWith(base));
161
- }
162
- else {
163
- obs = of(base);
164
- }
165
- return obs;
166
- }), shareReplay(1));
167
- /**
168
- * Returns the current LoadingStateType based on the current state.
169
- */
170
- loadingStateType$ = this.state$.pipe(map((x) => loadingStateTypeForActionContextState(x)), distinctUntilChanged(), shareReplay(1));
171
- /**
172
- * Number of errors since last success.
173
- */
174
- errorCountSinceLastSuccess$ = this.isSuccess$.pipe(startWith(false), distinctUntilChanged(), switchMap(() => this.error$.pipe(filterMaybe(), scanCount(), startWith(0))), shareReplay(1));
175
- /**
176
- * Whether or not the state can be triggered.
177
- */
178
- canTrigger$ = this.state$.pipe(map(canTriggerAction), distinctUntilChanged(), shareReplay(1));
179
- /**
180
- * Pipe that maps whether or not this is modified and can be triggered.
181
- *
182
- * Updates every state update instead of when the value changes.
183
- */
184
- isModifiedAndCanTriggerUpdates$ = this.state$.pipe(map((x) => actionContextIsModifiedAndCanTrigger(x), shareReplay(1)));
185
- /**
186
- * Whether or not it can be triggered and modified.
187
- */
188
- isModifiedAndCanTrigger$ = this.isModifiedAndCanTriggerUpdates$.pipe(distinctUntilChanged());
189
- hasNoErrorAndIsModifiedAndCanTrigger$ = this.state$.pipe(map((x) => actionContextHasNoErrorAndIsModifiedAndCanTrigger(x)), distinctUntilChanged(), shareReplay(1));
190
- // MARK: State Changes
191
- /**
192
- * Adds a disabled reason.
193
- */
194
- disable = this.updater((state, key) => ({
195
- ...state,
196
- disabled: BooleanStringKeyArrayUtility.insert(state.disabled, key ?? DEFAULT_ACTION_DISABLED_KEY)
197
- }));
198
- /**
199
- * Removes a disabled reason.
200
- */
201
- enable = this.updater((state, key) => ({
202
- ...state,
203
- disabled: BooleanStringKeyArrayUtility.remove(state.disabled, key ?? DEFAULT_ACTION_DISABLED_KEY)
204
- }));
205
- /**
206
- * Triggers the modified state, if not disabled.
207
- *
208
- * Equivalent to calling setIsModified() with opposite input.
209
- */
210
- setIsSame = this.updater(updateIsSameOnActionContextState);
211
- /**
212
- * Triggers the modified state, if not disabled.
213
- */
214
- setIsModified = this.updater(updateIsModifiedOnActionContextState);
215
- /**
216
- * Triggers the action if the state is currently not idle. The current state is cleared, but the error is retained (as we may need the error from the previous attempt).
217
- *
218
- * Will not fire if the action is disabled.
219
- */
220
- trigger = this.updater((state) => (canTriggerAction(state) ? { isModified: state.isModified, actionState: DbxActionState.TRIGGERED, error: state.error, value: undefined } : state));
221
- /**
222
- * Updates the value, setting value ready. The current result is cleared.
223
- */
224
- readyValue = this.updater((state, value) => (canReadyValue(state) ? { ...state, actionState: DbxActionState.VALUE_READY, value, result: undefined } : state));
225
- /**
226
- * Notifys the context that the action is in progress.
227
- */
228
- startWorking = this.updater((state) => ({ ...state, actionState: DbxActionState.WORKING, workProgress: null }));
229
- /**
230
- * Updates the working progress.
231
- */
232
- setWorkProgress = this.updater((state, workProgress) => ({ ...state, workProgress }));
233
- /**
234
- * Triggers rejection of the action. The value is cleared.
235
- */
236
- reject = this.updater((state, error) => ({
237
- isModified: state.isModified,
238
- actionState: DbxActionState.REJECTED,
239
- error,
240
- errorCount: (state.errorCount ?? 0) + 1,
241
- disabled: state.disabled
242
- }));
243
- /**
244
- * Updates the state to success, and optionally sets a result.
245
- *
246
- * Clears modified state, and any errors.
247
- */
248
- resolve = this.updater((state, result) => ({ isModified: false, actionState: DbxActionState.RESOLVED, value: state.value, result, error: undefined, disabled: state.disabled }));
249
- /**
250
- * Completely resets the store.
251
- */
252
- reset = this.updater(() => ({ ...INITIAL_STATE }));
253
- // MARK: Utility
254
- afterDistinctBoolean(fromState) {
255
- return this.state$.pipe(map((x) => fromState(x)), distinctUntilChanged(), shareReplay(1));
256
- }
257
- afterDistinctActionState(actionState, fromState) {
258
- return this.afterDistinctActionStateChange().pipe(filter((x) => x.actionState === actionState), // Only pipe when the new action state matches.
259
- map((x) => fromState(x)), shareReplay(1));
260
- }
261
- afterDistinctActionStateChange() {
262
- return this.state$.pipe(map((x) => [x, x.actionState]), distinctUntilChanged((a, b) => a?.[1] === b?.[1]), // Filter out when the state remains the same.
263
- map((x) => x[0]), shareReplay(1));
264
- }
265
- afterDistinctLoadingStateTypeChange() {
266
- return this.state$.pipe(map((x) => [x, loadingStateTypeForActionContextState(x)]), distinctUntilChanged((a, b) => a?.[1] === b?.[1]), // Filter out when the loading state remains the same.
267
- map((x) => x[0]), shareReplay(1));
268
- }
269
- // MARK: Cleanup
270
- ngOnDestroy() {
271
- // do not call super.destroy here, to keep the component store from destroying itself.
272
- // the lockset is configured to cleanup the component store.
273
- }
274
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ActionContextStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
275
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ActionContextStore });
276
- }
277
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ActionContextStore, decorators: [{
278
- type: Injectable
279
- }], ctorParameters: () => [] });
280
- function updateIsSameOnActionContextState(state, isSame) {
281
- return updateIsModifiedOnActionContextState(state, isSame == null ? false : !isSame);
282
- }
283
- function updateIsModifiedOnActionContextState(state, isModified) {
284
- return {
285
- ...state,
286
- actionState: state.actionState === DbxActionState.RESOLVED ? DbxActionState.IDLE : state.actionState, // Set to idle from success.
287
- isModified: isModified ?? true // if isModified is not input, default it to true
288
- };
289
- }
290
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLnN0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWNvcmUvc3JjL2xpYi9hY3Rpb24vYWN0aW9uLnN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3ZELE9BQU8sRUFBYyxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RyxPQUFPLEVBQXlCLDRCQUE0QixFQUF3QixNQUFNLGVBQWUsQ0FBQztBQUMxRyxPQUFPLEVBQW9CLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQWdCLFNBQVMsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25KLE9BQU8sRUFBK0MsY0FBYyxFQUE0RSwyQkFBMkIsRUFBRSxpQkFBaUIsRUFBRSw4QkFBOEIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNqUCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sU0FBUyxDQUFDOztBQUV2QyxNQUFNLFVBQVUsc0JBQXNCLENBQUMsS0FBeUI7SUFDOUQsT0FBTyw0QkFBNEIsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzlELENBQUM7QUFFRCxNQUFNLFVBQVUsdUJBQXVCLENBQUMsS0FBeUI7SUFDL0QsT0FBTyw0QkFBNEIsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzdELENBQUM7QUFFRCxNQUFNLFVBQVUsNEJBQTRCLENBQUMsS0FBeUI7SUFDcEUsT0FBTyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksdUJBQXVCLENB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RSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUscUNBQXFDLENBQUMsQ0FBQyxDQUFDLENBQTJDLENBQUMsRUFDbkcsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLHNEQUFzRDtRQUN6RyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQTZCLENBQUMsRUFDNUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7SUFDSixDQUFDO0lBRUQsZ0JBQWdCO0lBQ1AsV0FBVztRQUNsQixzRkFBc0Y7UUFDdEYsNERBQTREO0lBQzlELENBQUM7d0dBM1RVLGtCQUFrQjs0R0FBbEIsa0JBQWtCOzs0RkFBbEIsa0JBQWtCO2tCQUQ5QixVQUFVOztBQStUWCxTQUFTLGdDQUFnQyxDQUFPLEtBQStCLEVBQUUsTUFBdUI7SUFDdEcsT0FBTyxvQ0FBb0MsQ0FBQyxLQUFLLEVBQUUsTUFBTSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3ZGLENBQUM7QUFFRCxTQUFTLG9DQUFvQyxDQUFPLEtBQStCLEVBQUUsVUFBMkI7SUFDOUcsT0FBTztRQUNMLEdBQUcsS0FBSztRQUNSLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVyxLQUFLLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsNEJBQTRCO1FBQ2xJLFVBQVUsRUFBRyxVQUFzQixJQUFJLElBQUksQ0FBQyxpREFBaUQ7S0FDOUYsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbXBvbmVudFN0b3JlIH0gZnJvbSAnQG5ncngvY29tcG9uZW50LXN0b3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCwgc2hhcmVSZXBsYXksIHN3aXRjaE1hcCwgc3RhcnRXaXRoLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQm9vbGVhblN0cmluZ0tleUFycmF5LCBCb29sZWFuU3RyaW5nS2V5QXJyYXlVdGlsaXR5LCBNYXliZSwgUmVhZGFibGVFcnJvciB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgTG9hZGluZ1N0YXRlVHlwZSwgaWRsZUxvYWRpbmdTdGF0ZSwgZXJyb3JSZXN1bHQsIGZpbHRlck1heWJlLCBMb2FkaW5nU3RhdGUsIHNjYW5Db3VudCwgc3VjY2Vzc1Jlc3VsdCwgYmVnaW5Mb2FkaW5nIH0gZnJvbSAnQGRlcmVla2Ivcnhqcyc7XG5pbXBvcnQgeyBEYnhBY3Rpb25EaXNhYmxlZEtleSwgRGJ4QWN0aW9uUmVqZWN0ZWRQYWlyLCBEYnhBY3Rpb25TdGF0ZSwgRGJ4QWN0aW9uU3VjY2Vzc1BhaXIsIERieEFjdGlvbldvcmtPcldvcmtQcm9ncmVzcywgRGJ4QWN0aW9uV29ya1Byb2dyZXNzLCBERUZBVUxUX0FDVElPTl9ESVNBQkxFRF9LRVksIGlzSWRsZUFjdGlvblN0YXRlLCBsb2FkaW5nU3RhdGVUeXBlRm9yQWN0aW9uU3RhdGUgfSBmcm9tICcuL2FjdGlvbic7XG5pbXBvcnQgeyBjbGVhbkxvY2tTZXQgfSBmcm9tICcuLi9yeGpzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGlzQWN0aW9uQ29udGV4dEVuYWJsZWQoc3RhdGU6IEFjdGlvbkNvbnRleHRTdGF0ZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gQm9vbGVhblN0cmluZ0tleUFycmF5VXRpbGl0eS5pc0ZhbHNlKHN0YXRlLmRpc2FibGVkKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQWN0aW9uQ29udGV4dERpc2FibGVkKHN0YXRlOiBBY3Rpb25Db250ZXh0U3RhdGUpOiBib29sZWFuIHtcbiAgcmV0dXJuIEJvb2xlYW5TdHJpbmdLZXlBcnJheVV0aWxpdHkuaXNUcnVlKHN0YXRlLmRpc2FibGVkKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRGlzYWJsZWRBY3Rpb25Db250ZXh0U3RhdGUoc3RhdGU6IEFjdGlvbkNvbnRleHRTdGF0ZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gaXNJZGxlQWN0aW9uU3RhdGUoc3RhdGUuYWN0aW9uU3RhdGUpICYmIGlzQWN0aW9uQ29udGV4dERpc2FibGVkKHN0YXRlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzV29ya2luZ0FjdGlvblN0YXRlKGFjdGlvblN0YXRlOiBEYnhBY3Rpb25TdGF0ZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gIWlzSWRsZUFjdGlvblN0YXRlKGFjdGlvblN0YXRlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNhblRyaWdnZXJBY3Rpb25TdGF0ZShhY3Rpb25TdGF0ZTogRGJ4QWN0aW9uU3RhdGUpOiBib29sZWFuIHtcbiAgcmV0dXJuIGFjdGlvblN0YXRlICE9PSBEYnhBY3Rpb25TdGF0ZS5ESVNBQkxFRCAmJiBpc0lkbGVBY3Rpb25TdGF0ZShhY3Rpb25TdGF0ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjYW5UcmlnZ2VyQWN0aW9uKHN0YXRlOiBBY3Rpb25Db250ZXh0U3RhdGUpOiBib29sZWFuIHtcbiAgcmV0dXJuIGlzQWN0aW9uQ29udGV4dEVuYWJsZWQoc3RhdGUpICYmIGlzSWRsZUFjdGlvblN0YXRlKHN0YXRlLmFjdGlvblN0YXRlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNhblJlYWR5VmFsdWUoc3RhdGU6IEFjdGlvbkNvbnRleHRTdGF0ZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gc3RhdGUuYWN0aW9uU3RhdGUgPT09IERieEFjdGlvblN0YXRlLlRSSUdHRVJFRDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFjdGlvbkNvbnRleHRJc01vZGlmaWVkQW5kQ2FuVHJpZ2dlcihzdGF0ZTogQWN0aW9uQ29udGV4dFN0YXRlKTogYm9vbGVhbiB7XG4gIC8vIGNvbnNvbGUubG9nKCdjaGVjazogJywgc3RhdGUsIHN0YXRlLmlzTW9kaWZpZWQsIGNhblRyaWdnZXJBY3Rpb24oc3RhdGUpKTtcbiAgcmV0dXJuIHN0YXRlLmlzTW9kaWZpZWQgJiYgY2FuVHJpZ2dlckFjdGlvbihzdGF0ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhY3Rpb25Db250ZXh0SGFzTm9FcnJvckFuZElzTW9kaWZpZWRBbmRDYW5UcmlnZ2VyKHN0YXRlOiBBY3Rpb25Db250ZXh0U3RhdGUpOiBib29sZWFuIHtcbiAgcmV0dXJuICFzdGF0ZS5lcnJvciAmJiBhY3Rpb25Db250ZXh0SXNNb2RpZmllZEFuZENhblRyaWdnZXIoc3RhdGUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9hZGluZ1N0YXRlRm9yQWN0aW9uQ29udGV4dFN0YXRlPE8gPSB1bmtub3duPihzdGF0ZTogQWN0aW9uQ29udGV4dFN0YXRlPHVua25vd24sIE8+KTogTG9hZGluZ1N0YXRlPE8+IHtcbiAgbGV0IGxvYWRpbmdTdGF0ZTogTG9hZGluZ1N0YXRlPE8+O1xuXG4gIHN3aXRjaCAoc3RhdGUuYWN0aW9uU3RhdGUpIHtcbiAgICBjYXNlIERieEFjdGlvblN0YXRlLlJFU09MVkVEOlxuICAgICAgbG9hZGluZ1N0YXRlID0gc3VjY2Vzc1Jlc3VsdChzdGF0ZS5yZXN1bHQpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBEYnhBY3Rpb25TdGF0ZS5SRUpFQ1RFRDpcbiAgICAgIGxvYWRpbmdTdGF0ZSA9IGVycm9yUmVzdWx0KHN0YXRlLmVycm9yKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgRGJ4QWN0aW9uU3RhdGUuSURMRTpcbiAgICBjYXNlIERieEFjdGlvblN0YXRlLkRJU0FCTEVEOlxuICAgICAgbG9hZGluZ1N0YXRlID0gaWRsZUxvYWRpbmdTdGF0ZSgpO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGxvYWRpbmdTdGF0ZSA9IGJlZ2luTG9hZGluZyhzdGF0ZS53b3JrUHJvZ3Jlc3MgIT0gbnVsbCA/IHsgbG9hZGluZ1Byb2dyZXNzOiBzdGF0ZS53b3JrUHJvZ3Jlc3MgfSA6IHVuZGVmaW5lZCk7XG4gICAgICBicmVhaztcbiAgfVxuXG4gIHJldHVybiBsb2FkaW5nU3RhdGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2FkaW5nU3RhdGVUeXBlRm9yQWN0aW9uQ29udGV4dFN0YXRlKHN0YXRlOiBBY3Rpb25Db250ZXh0U3RhdGUpOiBMb2FkaW5nU3RhdGVUeXBlIHtcbiAgcmV0dXJuIGxvYWRpbmdTdGF0ZVR5cGVGb3JBY3Rpb25TdGF0ZShzdGF0ZS5hY3Rpb25TdGF0ZSk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWN0aW9uQ29udGV4dFN0YXRlPFQgPSB1bmtub3duLCBPID0gdW5rbm93bj4ge1xuICByZWFkb25seSBhY3Rpb25TdGF0ZTogRGJ4QWN0aW9uU3RhdGU7XG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0aGlzIGFjdGlvbiBpcyBmbGFnZ2VkIGFzIGhhdmluZyBiZWVuIG1vZGlmaWVkLlxuICAgKi9cbiAgcmVhZG9ubHkgaXNNb2RpZmllZDogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRoZSB3b3JraW5nIHByb2dyZXNzIG9mIHRoZSBhY3Rpb24uXG4gICAqXG4gICAqIElzIHJlc2V0IHRvIG51bGwgd2hlbiB0cmlnZ2VyZWQvcmVhZHkgdmFsdWUgaXMgc2V0LlxuICAgKi9cbiAgcmVhZG9ubHkgd29ya1Byb2dyZXNzPzogTWF5YmU8RGJ4QWN0aW9uV29ya1Byb2dyZXNzPjtcbiAgLyoqXG4gICAqIFZhbHVlIHRoYXQgaXMgc2V0IGFmdGVyIGEgdHJpZ2dlcmVkIGFjdGlvbi4gTm90IHRvIGJlIGNvbmZ1c2VkIHdpdGggcmVzdWx0LlxuICAgKi9cbiAgcmVhZG9ubHkgdmFsdWU/OiBNYXliZTxUPjtcbiAgLyoqXG4gICAqIFJlc29sdmVkIHJlc3VsdCB2YWx1ZS5cbiAgICovXG4gIHJlYWRvbmx5IHJlc3VsdD86IE1heWJlPE8+O1xuICAvKipcbiAgICogUmVqZWN0ZWQgZXJyb3IsIGlmIGF2YWlsYWJsZS5cbiAgICovXG4gIHJlYWRvbmx5IGVycm9yPzogTWF5YmU8UmVhZGFibGVFcnJvcj47XG4gIC8qKlxuICAgKiBDdXJyZW50IGRpc2FibGVkIHN0YXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgZGlzYWJsZWQ/OiBCb29sZWFuU3RyaW5nS2V5QXJyYXk7XG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgY29uc2VjdXRpdmUgZXJyb3JzIHRoYXQgaGF2ZSBvY2N1cmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZXJyb3JDb3VudD86IG51bWJlcjtcbn1cblxuY29uc3QgSU5JVElBTF9TVEFURTogQWN0aW9uQ29udGV4dFN0YXRlID0ge1xuICBpc01vZGlmaWVkOiBmYWxzZSxcbiAgYWN0aW9uU3RhdGU6IERieEFjdGlvblN0YXRlLklETEVcbn07XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBY3Rpb25Db250ZXh0U3RvcmU8VCA9IHVua25vd24sIE8gPSB1bmtub3duPiBleHRlbmRzIENvbXBvbmVudFN0b3JlPEFjdGlvbkNvbnRleHRTdGF0ZTxULCBPPj4gaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICByZWFkb25seSBsb2NrU2V0ID0gY2xlYW5Mb2NrU2V0KHtcbiAgICBvbkxvY2tTZXREZXN0cm95OiAoKSA9PiBzdXBlci5uZ09uRGVzdHJveSgpLFxuICAgIGRlc3Ryb3lMb2Nrc2V0VGltaW5nOiB7XG4gICAgICBkZWxheVRpbWU6IDIwMDBcbiAgICB9XG4gIH0pO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKHsgLi4uSU5JVElBTF9TVEFURSB9IGFzIEFjdGlvbkNvbnRleHRTdGF0ZTxULCBPPik7XG4gICAgdGhpcy5sb2NrU2V0LmFkZExvY2soJ3dvcmtpbmcnLCB0aGlzLmlzV29ya2luZyQpO1xuICB9XG5cbiAgLy8gTUFSSzogQWNjZXNzb3JzXG4gIHJlYWRvbmx5IGFjdGlvblN0YXRlJCA9IHRoaXMuc3RhdGUkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiAoaXNEaXNhYmxlZEFjdGlvbkNvbnRleHRTdGF0ZSh4KSA/IERieEFjdGlvblN0YXRlLkRJU0FCTEVEIDogeC5hY3Rpb25TdGF0ZSkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGN1cnJlbnQgZGlzYWJsZWQgcmVhc29ucy9rZXlzLlxuICAgKi9cbiAgcmVhZG9ubHkgZGlzYWJsZWRLZXlzJCA9IHRoaXMuc3RhdGUkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiBbLi4uKHguZGlzYWJsZWQgPz8gW10pXSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIC8qKlxuICAgKiBDdXJyZW50IHZhbHVlIG9mIHRoZSBzdGF0ZS5cbiAgICovXG4gIHJlYWRvbmx5IGN1cnJlbnRWYWx1ZSQ6IE9ic2VydmFibGU8TWF5YmU8VD4+ID0gdGhpcy5zdGF0ZSQucGlwZShtYXAoKHgpID0+IHgudmFsdWUpKTtcblxuICAvKipcbiAgICogTWFwcyB0aGUgY3VycmVudCBzdGF0ZSB0byB0cnVlIG9yIG5vdCB3aGVuIHRoZSBhY3Rpb24gc3RhdGUgY2hhbmdlcyB0by9mcm9tIGRpc2FibGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgaXNEaXNhYmxlZCQgPSB0aGlzLnN0YXRlJC5waXBlKG1hcChpc0Rpc2FibGVkQWN0aW9uQ29udGV4dFN0YXRlKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSwgc2hhcmVSZXBsYXkoMSkpO1xuXG4gIC8qKlxuICAgKiBQaXBlcyB3aGVuIGlkbGUgYnV0IG1vZGlmaWVkLlxuICAgKi9cbiAgcmVhZG9ubHkgaXNNb2RpZmllZCQgPSB0aGlzLmFmdGVyRGlzdGluY3RCb29sZWFuKCh4KSA9PiB4LmlzTW9kaWZpZWQpO1xuXG4gIC8qKlxuICAgKiBQaXBlcyB0cnVlIHdoZW4gaWRsZS5cbiAgICovXG4gIHJlYWRvbmx5IGlkbGUkID0gdGhpcy5hY3Rpb25TdGF0ZSQucGlwZShcbiAgICBtYXAoKHgpID0+IHggPT09IERieEFjdGlvblN0YXRlLklETEUpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICAvKipcbiAgICogUGlwZXMgdHJ1ZSB3aGVuIHRyaWdnZXJlZC5cbiAgICovXG4gIHJlYWRvbmx5IHRyaWdnZXJlZCQgPSB0aGlzLmFmdGVyRGlzdGluY3RBY3Rpb25TdGF0ZShEYnhBY3Rpb25TdGF0ZS5UUklHR0VSRUQsICgpID0+IHRydWUpO1xuXG4gIC8qKlxuICAgKiBQaXBlcyB0aGUgcmVhZGllZCB2YWx1ZSBvbiBWYWx1ZVJlYWR5LlxuICAgKi9cbiAgcmVhZG9ubHkgdmFsdWVSZWFkeSQ6IE9ic2VydmFibGU8VD4gPSB0aGlzLmFmdGVyRGlzdGluY3RBY3Rpb25TdGF0ZShEYnhBY3Rpb25TdGF0ZS5WQUxVRV9SRUFEWSwgKHgpID0+IHgudmFsdWUgYXMgVCk7XG5cbiAgLyoqXG4gICAqIFBpcGVzIHRoZSB3b3JraW5nIHByb2dyZXNzIG9uIHRoZSB3b3JraW5nIHN0YXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgd29ya1Byb2dyZXNzJCA9IHRoaXMuc3RhdGUkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4LndvcmtQcm9ncmVzcyksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIC8qKlxuICAgKiBQaXBlcyB0aGUgZXJyb3Igb24gdGhlIHJlamVjdGlvbiBzdGF0ZS5cbiAgICovXG4gIHJlYWRvbmx5IHJlamVjdGVkJCA9IHRoaXMuYWZ0ZXJEaXN0aW5jdEFjdGlvblN0YXRlKERieEFjdGlvblN0YXRlLlJFSkVDVEVELCAoeCkgPT4geC5lcnJvcik7XG5cbiAgLyoqXG4gICAqIFBpcGVzIHRoZSByZXN1bHQgd2hlbiB0aGUgQWN0aW9uU3RhdGUgYmVjb21lcyByZWplY3RlZC5cbiAgICovXG4gIHJlYWRvbmx5IHJlamVjdGVkUGFpciQgPSB0aGlzLmFmdGVyRGlzdGluY3RBY3Rpb25TdGF0ZShEYnhBY3Rpb25TdGF0ZS5SRVNPTFZFRCwgKHgpID0+ICh7IHZhbHVlOiB4LnZhbHVlLCBlcnJvcjogeC5lcnJvciB9KSBhcyBEYnhBY3Rpb25SZWplY3RlZFBhaXI8VD4pO1xuXG4gIC8qKlxuICAgKiBQaXBlcyB0aGUgcmVzdWx0IHdoZW4gdGhlIEFjdGlvblN0YXRlIGJlY29tZXMgd29ya2luZy5cbiAgICovXG4gIHJlYWRvbmx5IHdvcmtpbmckID0gdGhpcy5hZnRlckRpc3RpbmN0QWN0aW9uU3RhdGUoRGJ4QWN0aW9uU3RhdGUuV09SS0lORywgKCkgPT4gdHJ1ZSk7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IGl0IGlzIGN1cnJlbnRseSBpbiBhIHdvcmtpbmcgc3RhdGUuXG4gICAqL1xuICByZWFkb25seSBpc1dvcmtpbmckID0gdGhpcy5hZnRlckRpc3RpbmN0Qm9vbGVhbigoeCkgPT4gaXNXb3JraW5nQWN0aW9uU3RhdGUoeC5hY3Rpb25TdGF0ZSkpO1xuXG4gIC8qKlxuICAgKiBQaXBlcyB0aGUgY3VycmVudCB3b3JrIG9yIHdvcmsgcHJvZ3Jlc3MuXG4gICAqL1xuICByZWFkb25seSBpc1dvcmtpbmdPcldvcmtQcm9ncmVzcyQgPSB0aGlzLmlzV29ya2luZyQucGlwZShcbiAgICBzd2l0Y2hNYXAoKHgpID0+IHtcbiAgICAgIGxldCBvYnM6IE9ic2VydmFibGU8RGJ4QWN0aW9uV29ya09yV29ya1Byb2dyZXNzPjtcblxuICAgICAgaWYgKHgpIHtcbiAgICAgICAgb2JzID0gdGhpcy53b3JrUHJvZ3Jlc3MkLnBpcGUoXG4gICAgICAgICAgZmlsdGVyKCh4KSA9PiB4ICE9IG51bGwpLFxuICAgICAgICAgIHN0YXJ0V2l0aCh4KVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb2JzID0gb2YoeCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBvYnM7XG4gICAgfSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIC8qKlxuICAgKiBQaXBlcyB0aGUgY3VycmVudCBlcnJvci5cbiAgICovXG4gIHJlYWRvbmx5IGVycm9yJCA9IHRoaXMuc3RhdGUkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4LmVycm9yKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgLyoqXG4gICAqIFBpcGVzIHRoZSByZXN1bHQgd2hlbiB0aGUgQWN0aW9uU3RhdGUgYmVjb21lcyBzdWNjZXNzLlxuICAgKi9cbiAgcmVhZG9ubHkgc3VjY2VzcyQgPSB0aGlzLmFmdGVyRGlzdGluY3RBY3Rpb25TdGF0ZShEYnhBY3Rpb25TdGF0ZS5SRVNPTFZFRCwgKHgpID0+IHgucmVzdWx0KTtcblxuICAvKipcbiAgICogUGlwZXMgdGhlIHJlc3VsdCB3aGVuIHRoZSBBY3Rpb25TdGF0ZSBiZWNvbWVzIHN1Y2Nlc3MuXG4gICAqL1xuICByZWFkb25seSBzdWNjZXNzUGFpciQgPSB0aGlzLmFmdGVyRGlzdGluY3RBY3Rpb25TdGF0ZShEYnhBY3Rpb25TdGF0ZS5SRVNPTFZFRCwgKHgpID0+ICh7IHZhbHVlOiB4LnZhbHVlLCByZXN1bHQ6IHgucmVzdWx0IH0pIGFzIERieEFjdGlvblN1Y2Nlc3NQYWlyPFQsIE8+KTtcblxuICAvKipcbiAgICogV2hldGhlciBvciBub3QgaXQgaXMgY3VycmVudGx5IGluIGEgc3VjY2VzcyBzdGF0ZS5cbiAgICovXG4gIHJlYWRvbmx5IGlzU3VjY2VzcyQgPSB0aGlzLmFmdGVyRGlzdGluY3RCb29sZWFuKCh4KSA9PiB4LmFjdGlvblN0YXRlID09PSBEYnhBY3Rpb25TdGF0ZS5SRVNPTFZFRCk7XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBsb2FkaW5nIHN0YXRlIGJhc2VkIG9uIHRoZSBjdXJyZW50IHN0YXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgbG9hZGluZ1N0YXRlJCA9IHRoaXMuYWZ0ZXJEaXN0aW5jdExvYWRpbmdTdGF0ZVR5cGVDaGFuZ2UoKS5waXBlKFxuICAgIHN3aXRjaE1hcCgoeCkgPT4ge1xuICAgICAgY29uc3QgYmFzZSA9IGxvYWRpbmdTdGF0ZUZvckFjdGlvbkNvbnRleHRTdGF0ZTxPPih4KTtcbiAgICAgIGxldCBvYnM6IE9ic2VydmFibGU8TG9hZGluZ1N0YXRlPE8+PjtcblxuICAgICAgaWYgKGJhc2UubG9hZGluZyA9PT0gdHJ1ZSkge1xuICAgICAgICBvYnMgPSB0aGlzLndvcmtQcm9ncmVzcyQucGlwZShcbiAgICAgICAgICBmaWx0ZXIoKHgpID0+IHggIT0gbnVsbCksXG4gICAgICAgICAgbWFwKChsb2FkaW5nUHJvZ3Jlc3MpID0+ICh7IC4uLmJhc2UsIGxvYWRpbmdQcm9ncmVzcyB9KSksXG4gICAgICAgICAgc3RhcnRXaXRoKGJhc2UpXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvYnMgPSBvZihiYXNlKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG9icztcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBjdXJyZW50IExvYWRpbmdTdGF0ZVR5cGUgYmFzZWQgb24gdGhlIGN1cnJlbnQgc3RhdGUuXG4gICAqL1xuICByZWFkb25seSBsb2FkaW5nU3RhdGVUeXBlJCA9IHRoaXMuc3RhdGUkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiBsb2FkaW5nU3RhdGVUeXBlRm9yQWN0aW9uQ29udGV4dFN0YXRlKHgpKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgLyoqXG4gICAqIE51bWJlciBvZiBlcnJvcnMgc2luY2UgbGFzdCBzdWNjZXNzLlxuICAgKi9cbiAgcmVhZG9ubHkgZXJyb3JDb3VudFNpbmNlTGFzdFN1Y2Nlc3MkID0gdGhpcy5pc1N1Y2Nlc3MkLnBpcGUoXG4gICAgc3RhcnRXaXRoKGZhbHNlKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmVycm9yJC5waXBlKGZpbHRlck1heWJlKCksIHNjYW5Db3VudCgpLCBzdGFydFdpdGgoMCkpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0aGUgc3RhdGUgY2FuIGJlIHRyaWdnZXJlZC5cbiAgICovXG4gIHJlYWRvbmx5IGNhblRyaWdnZXIkID0gdGhpcy5zdGF0ZSQucGlwZShtYXAoY2FuVHJpZ2dlckFjdGlvbiksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIHNoYXJlUmVwbGF5KDEpKTtcblxuICAvKipcbiAgICogUGlwZSB0aGF0IG1hcHMgd2hldGhlciBvciBub3QgdGhpcyBpcyBtb2RpZmllZCBhbmQgY2FuIGJlIHRyaWdnZXJlZC5cbiAgICpcbiAgICogVXBkYXRlcyBldmVyeSBzdGF0ZSB1cGRhdGUgaW5zdGVhZCBvZiB3aGVuIHRoZSB2YWx1ZSBjaGFuZ2VzLlxuICAgKi9cbiAgcmVhZG9ubHkgaXNNb2RpZmllZEFuZENhblRyaWdnZXJVcGRhdGVzJCA9IHRoaXMuc3RhdGUkLnBpcGUobWFwKCh4KSA9PiBhY3Rpb25Db250ZXh0SXNNb2RpZmllZEFuZENhblRyaWdnZXIoeCksIHNoYXJlUmVwbGF5KDEpKSk7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IGl0IGNhbiBiZSB0cmlnZ2VyZWQgYW5kIG1vZGlmaWVkLlxuICAgKi9cbiAgcmVhZG9ubHkgaXNNb2RpZmllZEFuZENhblRyaWdnZXIkID0gdGhpcy5pc01vZGlmaWVkQW5kQ2FuVHJpZ2dlclVwZGF0ZXMkLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XG5cbiAgcmVhZG9ubHkgaGFzTm9FcnJvckFuZElzTW9kaWZpZWRBbmRDYW5UcmlnZ2VyJCA9IHRoaXMuc3RhdGUkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiBhY3Rpb25Db250ZXh0SGFzTm9FcnJvckFuZElzTW9kaWZpZWRBbmRDYW5UcmlnZ2VyKHgpKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgLy8gTUFSSzogU3RhdGUgQ2hhbmdlc1xuICAvKipcbiAgICogQWRkcyBhIGRpc2FibGVkIHJlYXNvbi5cbiAgICovXG4gIHJlYWRvbmx5IGRpc2FibGUgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCBrZXk/OiB2b2lkIHwgRGJ4QWN0aW9uRGlzYWJsZWRLZXkpID0+ICh7XG4gICAgLi4uc3RhdGUsXG4gICAgZGlzYWJsZWQ6IEJvb2xlYW5TdHJpbmdLZXlBcnJheVV0aWxpdHkuaW5zZXJ0KHN0YXRlLmRpc2FibGVkLCAoa2V5IGFzIHN0cmluZykgPz8gREVGQVVMVF9BQ1RJT05fRElTQUJMRURfS0VZKVxuICB9KSk7XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYSBkaXNhYmxlZCByZWFzb24uXG4gICAqL1xuICByZWFkb25seSBlbmFibGUgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCBrZXk/OiB2b2lkIHwgRGJ4QWN0aW9uRGlzYWJsZWRLZXkpID0+ICh7XG4gICAgLi4uc3RhdGUsXG4gICAgZGlzYWJsZWQ6IEJvb2xlYW5TdHJpbmdLZXlBcnJheVV0aWxpdHkucmVtb3ZlKHN0YXRlLmRpc2FibGVkLCAoa2V5IGFzIHN0cmluZykgPz8gREVGQVVMVF9BQ1RJT05fRElTQUJMRURfS0VZKVxuICB9KSk7XG5cbiAgLyoqXG4gICAqIFRyaWdnZXJzIHRoZSBtb2RpZmllZCBzdGF0ZSwgaWYgbm90IGRpc2FibGVkLlxuICAgKlxuICAgKiBFcXVpdmFsZW50IHRvIGNhbGxpbmcgc2V0SXNNb2RpZmllZCgpIHdpdGggb3Bwb3NpdGUgaW5wdXQuXG4gICAqL1xuICByZWFkb25seSBzZXRJc1NhbWUgPSB0aGlzLnVwZGF0ZXI8dm9pZCwgdm9pZCB8IGJvb2xlYW4+KHVwZGF0ZUlzU2FtZU9uQWN0aW9uQ29udGV4dFN0YXRlKTtcblxuICAvKipcbiAgICogVHJpZ2dlcnMgdGhlIG1vZGlmaWVkIHN0YXRlLCBpZiBub3QgZGlzYWJsZWQuXG4gICAqL1xuICByZWFkb25seSBzZXRJc01vZGlmaWVkID0gdGhpcy51cGRhdGVyPHZvaWQsIHZvaWQgfCBib29sZWFuPih1cGRhdGVJc01vZGlmaWVkT25BY3Rpb25Db250ZXh0U3RhdGUpO1xuXG4gIC8qKlxuICAgKiBUcmlnZ2VycyB0aGUgYWN0aW9uIGlmIHRoZSBzdGF0ZSBpcyBjdXJyZW50bHkgbm90IGlkbGUuIFRoZSBjdXJyZW50IHN0YXRlIGlzIGNsZWFyZWQsIGJ1dCB0aGUgZXJyb3IgaXMgcmV0YWluZWQgKGFzIHdlIG1heSBuZWVkIHRoZSBlcnJvciBmcm9tIHRoZSBwcmV2aW91cyBhdHRlbXB0KS5cbiAgICpcbiAgICogV2lsbCBub3QgZmlyZSBpZiB0aGUgYWN0aW9uIGlzIGRpc2FibGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgdHJpZ2dlciA9IHRoaXMudXBkYXRlcigoc3RhdGUpID0+IChjYW5UcmlnZ2VyQWN0aW9uKHN0YXRlKSA/IHsgaXNNb2RpZmllZDogc3RhdGUuaXNNb2RpZmllZCwgYWN0aW9uU3RhdGU6IERieEFjdGlvblN0YXRlLlRSSUdHRVJFRCwgZXJyb3I6IHN0YXRlLmVycm9yLCB2YWx1ZTogdW5kZWZpbmVkIH0gOiBzdGF0ZSkpO1xuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSB2YWx1ZSwgc2V0dGluZyB2YWx1ZSByZWFkeS4gVGhlIGN1cnJlbnQgcmVzdWx0IGlzIGNsZWFyZWQuXG4gICAqL1xuICByZWFkb25seSByZWFkeVZhbHVlID0gdGhpcy51cGRhdGVyKChzdGF0ZSwgdmFsdWU6IFQpID0+IChjYW5SZWFkeVZhbHVlKHN0YXRlKSA/IHsgLi4uc3RhdGUsIGFjdGlvblN0YXRlOiBEYnhBY3Rpb25TdGF0ZS5WQUxVRV9SRUFEWSwgdmFsdWUsIHJlc3VsdDogdW5kZWZpbmVkIH0gOiBzdGF0ZSkpO1xuXG4gIC8qKlxuICAgKiBOb3RpZnlzIHRoZSBjb250ZXh0IHRoYXQgdGhlIGFjdGlvbiBpcyBpbiBwcm9ncmVzcy5cbiAgICovXG4gIHJlYWRvbmx5IHN0YXJ0V29ya2luZyA9IHRoaXMudXBkYXRlcigoc3RhdGUpID0+ICh7IC4uLnN0YXRlLCBhY3Rpb25TdGF0ZTogRGJ4QWN0aW9uU3RhdGUuV09SS0lORywgd29ya1Byb2dyZXNzOiBudWxsIH0pKTtcblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgd29ya2luZyBwcm9ncmVzcy5cbiAgICovXG4gIHJlYWRvbmx5IHNldFdvcmtQcm9ncmVzcyA9IHRoaXMudXBkYXRlcigoc3RhdGUsIHdvcmtQcm9ncmVzczogTWF5YmU8RGJ4QWN0aW9uV29ya1Byb2dyZXNzPikgPT4gKHsgLi4uc3RhdGUsIHdvcmtQcm9ncmVzcyB9KSk7XG5cbiAgLyoqXG4gICAqIFRyaWdnZXJzIHJlamVjdGlvbiBvZiB0aGUgYWN0aW9uLiBUaGUgdmFsdWUgaXMgY2xlYXJlZC5cbiAgICovXG4gIHJlYWRvbmx5IHJlamVjdCA9IHRoaXMudXBkYXRlcigoc3RhdGUsIGVycm9yPzogTWF5YmU8UmVhZGFibGVFcnJvcj4pID0+ICh7XG4gICAgaXNNb2RpZmllZDogc3RhdGUuaXNNb2RpZmllZCxcbiAgICBhY3Rpb25TdGF0ZTogRGJ4QWN0aW9uU3RhdGUuUkVKRUNURUQsXG4gICAgZXJyb3IsXG4gICAgZXJyb3JDb3VudDogKHN0YXRlLmVycm9yQ291bnQgPz8gMCkgKyAxLFxuICAgIGRpc2FibGVkOiBzdGF0ZS5kaXNhYmxlZFxuICB9KSk7XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIHN0YXRlIHRvIHN1Y2Nlc3MsIGFuZCBvcHRpb25hbGx5IHNldHMgYSByZXN1bHQuXG4gICAqXG4gICAqIENsZWFycyBtb2RpZmllZCBzdGF0ZSwgYW5kIGFueSBlcnJvcnMuXG4gICAqL1xuICByZWFkb25seSByZXNvbHZlID0gdGhpcy51cGRhdGVyKChzdGF0ZSwgcmVzdWx0PzogTWF5YmU8Tz4pID0+ICh7IGlzTW9kaWZpZWQ6IGZhbHNlLCBhY3Rpb25TdGF0ZTogRGJ4QWN0aW9uU3RhdGUuUkVTT0xWRUQsIHZhbHVlOiBzdGF0ZS52YWx1ZSwgcmVzdWx0LCBlcnJvcjogdW5kZWZpbmVkLCBkaXNhYmxlZDogc3RhdGUuZGlzYWJsZWQgfSkpO1xuXG4gIC8qKlxuICAgKiBDb21wbGV0ZWx5IHJlc2V0cyB0aGUgc3RvcmUuXG4gICAqL1xuICByZWFkb25seSByZXNldCA9IHRoaXMudXBkYXRlcigoKSA9PiAoeyAuLi5JTklUSUFMX1NUQVRFIH0pIGFzIEFjdGlvbkNvbnRleHRTdGF0ZTxULCBPPik7XG5cbiAgLy8gTUFSSzogVXRpbGl0eVxuICBhZnRlckRpc3RpbmN0Qm9vbGVhbihmcm9tU3RhdGU6IChzdGF0ZTogQWN0aW9uQ29udGV4dFN0YXRlPFQsIE8+KSA9PiBib29sZWFuKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUkLnBpcGUoXG4gICAgICBtYXAoKHgpID0+IGZyb21TdGF0ZSh4KSksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICApO1xuICB9XG5cbiAgYWZ0ZXJEaXN0aW5jdEFjdGlvblN0YXRlPFg+KGFjdGlvblN0YXRlOiBEYnhBY3Rpb25TdGF0ZSwgZnJvbVN0YXRlOiAoc3RhdGU6IEFjdGlvbkNvbnRleHRTdGF0ZTxULCBPPikgPT4gWCk6IE9ic2VydmFibGU8WD4ge1xuICAgIHJldHVybiB0aGlzLmFmdGVyRGlzdGluY3RBY3Rpb25TdGF0ZUNoYW5nZSgpLnBpcGUoXG4gICAgICBmaWx0ZXIoKHgpID0+IHguYWN0aW9uU3RhdGUgPT09IGFjdGlvblN0YXRlKSwgLy8gT25seSBwaXBlIHdoZW4gdGhlIG5ldyBhY3Rpb24gc3RhdGUgbWF0Y2hlcy5cbiAgICAgIG1hcCgoeCkgPT4gZnJvbVN0YXRlKHgpKSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKTtcbiAgfVxuXG4gIGFmdGVyRGlzdGluY3RBY3Rpb25TdGF0ZUNoYW5nZSgpOiBPYnNlcnZhYmxlPEFjdGlvbkNvbnRleHRTdGF0ZTxULCBPPj4ge1xuICAgIHJldHVybiB0aGlzLnN0YXRlJC5waXBlKFxuICAgICAgbWFwKCh4KSA9PiBbeCwgeC5hY3Rpb25TdGF0ZV0gYXMgW0FjdGlvbkNvbnRleHRTdGF0ZSwgRGJ4QWN0aW9uU3RhdGVdKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChhLCBiKSA9PiBhPy5bMV0gPT09IGI/LlsxXSksIC8vIEZpbHRlciBvdXQgd2hlbiB0aGUgc3RhdGUgcmVtYWlucyB0aGUgc2FtZS5cbiAgICAgIG1hcCgoeCkgPT4geFswXSBhcyBBY3Rpb25Db250ZXh0U3RhdGU8VCwgTz4pLFxuICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICApO1xuICB9XG5cbiAgYWZ0ZXJEaXN0aW5jdExvYWRpbmdTdGF0ZVR5cGVDaGFuZ2UoKTogT2JzZXJ2YWJsZTxBY3Rpb25Db250ZXh0U3RhdGU8VCwgTz4+IHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZSQucGlwZShcbiAgICAgIG1hcCgoeCkgPT4gW3gsIGxvYWRpbmdTdGF0ZVR5cGVGb3JBY3Rpb25Db250ZXh0U3RhdGUoeCldIGFzIFtBY3Rpb25Db250ZXh0U3RhdGUsIExvYWRpbmdTdGF0ZVR5cGVdKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChhLCBiKSA9PiBhPy5bMV0gPT09IGI/LlsxXSksIC8vIEZpbHRlciBvdXQgd2hlbiB0aGUgbG9hZGluZyBzdGF0ZSByZW1haW5zIHRoZSBzYW1lLlxuICAgICAgbWFwKCh4KSA9PiB4WzBdIGFzIEFjdGlvbkNvbnRleHRTdGF0ZTxULCBPPiksXG4gICAgICBzaGFyZVJlcGxheSgxKVxuICAgICk7XG4gIH1cblxuICAvLyBNQVJLOiBDbGVhbnVwXG4gIG92ZXJyaWRlIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIC8vIGRvIG5vdCBjYWxsIHN1cGVyLmRlc3Ryb3kgaGVyZSwgdG8ga2VlcCB0aGUgY29tcG9uZW50IHN0b3JlIGZyb20gZGVzdHJveWluZyBpdHNlbGYuXG4gICAgLy8gdGhlIGxvY2tzZXQgaXMgY29uZmlndXJlZCB0byBjbGVhbnVwIHRoZSBjb21wb25lbnQgc3RvcmUuXG4gIH1cbn1cblxuZnVuY3Rpb24gdXBkYXRlSXNTYW1lT25BY3Rpb25Db250ZXh0U3RhdGU8VCwgTz4oc3RhdGU6IEFjdGlvbkNvbnRleHRTdGF0ZTxULCBPPiwgaXNTYW1lPzogdm9pZCB8IGJvb2xlYW4pOiBBY3Rpb25Db250ZXh0U3RhdGU8VCwgTz4ge1xuICByZXR1cm4gdXBkYXRlSXNNb2RpZmllZE9uQWN0aW9uQ29udGV4dFN0YXRlKHN0YXRlLCBpc1NhbWUgPT0gbnVsbCA/IGZhbHNlIDogIWlzU2FtZSk7XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUlzTW9kaWZpZWRPbkFjdGlvbkNvbnRleHRTdGF0ZTxULCBPPihzdGF0ZTogQWN0aW9uQ29udGV4dFN0YXRlPFQsIE8+LCBpc01vZGlmaWVkPzogdm9pZCB8IGJvb2xlYW4pOiBBY3Rpb25Db250ZXh0U3RhdGU8VCwgTz4ge1xuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIGFjdGlvblN0YXRlOiBzdGF0ZS5hY3Rpb25TdGF0ZSA9PT0gRGJ4QWN0aW9uU3RhdGUuUkVTT0xWRUQgPyBEYnhBY3Rpb25TdGF0ZS5JRExFIDogc3RhdGUuYWN0aW9uU3RhdGUsIC8vIFNldCB0byBpZGxlIGZyb20gc3VjY2Vzcy5cbiAgICBpc01vZGlmaWVkOiAoaXNNb2RpZmllZCBhcyBib29sZWFuKSA/PyB0cnVlIC8vIGlmIGlzTW9kaWZpZWQgaXMgbm90IGlucHV0LCBkZWZhdWx0IGl0IHRvIHRydWVcbiAgfTtcbn1cbiJdfQ==
@@ -1,162 +0,0 @@
1
- import { first, switchMap } from 'rxjs';
2
- import { LockSet, filterMaybe } from '@dereekb/rxjs';
3
- /**
4
- * Source that provides a ActionContextStore observable.
5
- */
6
- export class ActionContextStoreSource {
7
- }
8
- /**
9
- * Secondary source. Used by DbxActionContextComponent to find secondary sources.
10
- */
11
- export class SecondaryActionContextStoreSource extends ActionContextStoreSource {
12
- }
13
- export function actionContextStoreSourcePipe(obs) {
14
- return obs.pipe(filterMaybe());
15
- }
16
- export function pipeActionStore(source, pipeFn) {
17
- return source.store$.pipe(switchMap(pipeFn));
18
- }
19
- /**
20
- * Convenience function for subscribing to the input source once and using the provided store.
21
- */
22
- export function useActionStore(source, useFn) {
23
- return source.store$.pipe(first()).subscribe(useFn);
24
- }
25
- /**
26
- * Service that wraps a ActionContextStoreSource.
27
- */
28
- export class DbxActionContextStoreSourceInstance {
29
- lockSet = new LockSet();
30
- _source;
31
- constructor(source) {
32
- if (!source) {
33
- throw new Error('Source is required.');
34
- }
35
- this._source = source;
36
- }
37
- get source() {
38
- return this._source;
39
- }
40
- destroy() {
41
- this.lockSet.destroyOnNextUnlock();
42
- }
43
- // MARK: Store
44
- get store$() {
45
- return this.source.store$;
46
- }
47
- pipeStore(pipeFn) {
48
- return pipeActionStore(this.source, pipeFn);
49
- }
50
- useStore(useFn) {
51
- return useActionStore(this.source, useFn);
52
- }
53
- get state$() {
54
- return this.pipeStore((x) => x.state$);
55
- }
56
- get idle$() {
57
- return this.pipeStore((x) => x.idle$);
58
- }
59
- get triggered$() {
60
- return this.pipeStore((x) => x.triggered$);
61
- }
62
- get valueReady$() {
63
- return this.pipeStore((x) => x.valueReady$);
64
- }
65
- get success$() {
66
- return this.pipeStore((x) => x.success$);
67
- }
68
- get successPair$() {
69
- return this.pipeStore((x) => x.successPair$);
70
- }
71
- get workProgress$() {
72
- return this.pipeStore((x) => x.workProgress$);
73
- }
74
- get error$() {
75
- return this.pipeStore((x) => x.error$);
76
- }
77
- get rejected$() {
78
- return this.pipeStore((x) => x.rejected$);
79
- }
80
- get rejectedPair$() {
81
- return this.pipeStore((x) => x.rejectedPair$);
82
- }
83
- get isModified$() {
84
- return this.pipeStore((x) => x.isModified$);
85
- }
86
- get canTrigger$() {
87
- return this.pipeStore((x) => x.canTrigger$);
88
- }
89
- get isModifiedAndCanTriggerUpdates$() {
90
- return this.pipeStore((x) => x.isModifiedAndCanTriggerUpdates$);
91
- }
92
- get isModifiedAndCanTrigger$() {
93
- return this.pipeStore((x) => x.isModifiedAndCanTrigger$);
94
- }
95
- get actionState$() {
96
- return this.pipeStore((x) => x.actionState$);
97
- }
98
- get loadingState$() {
99
- return this.pipeStore((x) => x.loadingState$);
100
- }
101
- get loadingStateType$() {
102
- return this.pipeStore((x) => x.loadingStateType$);
103
- }
104
- get isWorking$() {
105
- return this.pipeStore((x) => x.isWorking$);
106
- }
107
- get isWorkingOrWorkProgress$() {
108
- return this.pipeStore((x) => x.isWorkingOrWorkProgress$);
109
- }
110
- get isSuccess$() {
111
- return this.pipeStore((x) => x.isSuccess$);
112
- }
113
- get disabledKeys$() {
114
- return this.pipeStore((x) => x.disabledKeys$);
115
- }
116
- get isDisabled$() {
117
- return this.pipeStore((x) => x.isDisabled$);
118
- }
119
- get errorCountSinceLastSuccess$() {
120
- return this.pipeStore((x) => x.errorCountSinceLastSuccess$);
121
- }
122
- enable(key, enable = true) {
123
- this.disable(key, !enable);
124
- }
125
- disable(key, disable = true) {
126
- this.useStore((x) => (disable ? x.disable(key) : x.enable(key)));
127
- }
128
- setIsSame(isSame) {
129
- this.useStore((x) => x.setIsSame(isSame));
130
- }
131
- setIsModified(isModified) {
132
- this.useStore((x) => x.setIsModified(isModified));
133
- }
134
- setWorkProgress(workProgress) {
135
- this.useStore((x) => x.setWorkProgress(workProgress));
136
- }
137
- trigger() {
138
- this.useStore((x) => x.trigger());
139
- }
140
- triggerWithValue(value) {
141
- this.useStore((x) => {
142
- x.trigger();
143
- x.readyValue(value);
144
- });
145
- }
146
- readyValue(value) {
147
- this.useStore((x) => x.readyValue(value));
148
- }
149
- startWorking() {
150
- this.useStore((x) => x.startWorking());
151
- }
152
- reject(error) {
153
- this.useStore((x) => x.reject(error));
154
- }
155
- resolve(value) {
156
- this.useStore((x) => x.resolve(value));
157
- }
158
- reset() {
159
- this.useStore((x) => x.reset());
160
- }
161
- }
162
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLnN0b3JlLnNvdXJjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1jb3JlL3NyYy9saWIvYWN0aW9uL2FjdGlvbi5zdG9yZS5zb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQXNDLE1BQU0sTUFBTSxDQUFDO0FBQzVFLE9BQU8sRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUF5RSxNQUFNLGVBQWUsQ0FBQztBQUs1SDs7R0FFRztBQUNILE1BQU0sT0FBZ0Isd0JBQXdCO0NBTzdDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLE9BQWdCLGlDQUE0RCxTQUFRLHdCQUE4QjtDQUFHO0FBRTNILE1BQU0sVUFBVSw0QkFBNEIsQ0FBTyxHQUFnRDtJQUNqRyxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztBQUNqQyxDQUFDO0FBSUQsTUFBTSxVQUFVLGVBQWUsQ0FBd0MsTUFBc0MsRUFBRSxNQUF3QztJQUNySixPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQy9DLENBQUM7QUFJRDs7R0FFRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQTJCLE1BQXNDLEVBQUUsS0FBbUM7SUFDbEksT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN0RCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sbUNBQW1DO0lBQ3JDLE9BQU8sR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBRWhCLE9BQU8sQ0FBaUM7SUFFekQsWUFBWSxNQUFzQztRQUNoRCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDekMsQ0FBQztRQUVELElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUVNLE9BQU87UUFDWixJQUFJLENBQUMsT0FBTyxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVELGNBQWM7SUFDZCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQzVCLENBQUM7SUFFRCxTQUFTLENBQUksTUFBd0M7UUFDbkQsT0FBTyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQW1DO1FBQzFDLE9BQU8sY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELElBQUksK0JBQStCO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLCtCQUErQixDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVELElBQUksd0JBQXdCO1FBQzFCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsSUFBSSxpQkFBaUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELElBQUksd0JBQXdCO1FBQzFCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELElBQUksMkJBQTJCO1FBQzdCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLDJCQUEyQixDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVNLE1BQU0sQ0FBQyxHQUEwQixFQUFFLE1BQU0sR0FBRyxJQUFJO1FBQ3JELElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVNLE9BQU8sQ0FBQyxHQUEwQixFQUFFLE9BQU8sR0FBRyxJQUFJO1FBQ3ZELElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRU0sU0FBUyxDQUFDLE1BQXlEO1FBQ3hFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRU0sYUFBYSxDQUFDLFVBQTZEO1FBQ2hGLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRU0sZUFBZSxDQUFDLFlBQTJEO1FBQ2hGLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRU0sT0FBTztRQUNaLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxLQUF3QjtRQUM5QyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDbEIsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ1osQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxVQUFVLENBQUMsS0FBd0I7UUFDeEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFTSxZQUFZO1FBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFTSxNQUFNLENBQUMsS0FBdUQ7UUFDbkUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFTSxPQUFPLENBQUMsS0FBd0I7UUFDckMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFTSxLQUFLO1FBQ1YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDbEMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZmlyc3QsIHN3aXRjaE1hcCwgdHlwZSBPYnNlcnZhYmxlLCB0eXBlIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTG9ja1NldCwgZmlsdGVyTWF5YmUsIHR5cGUgTG9hZGluZ1N0YXRlLCB0eXBlIExvYWRpbmdTdGF0ZVR5cGUsIHR5cGUgTWF5YmVPYnNlcnZhYmxlT3JWYWx1ZSB9IGZyb20gJ0BkZXJlZWtiL3J4anMnO1xuaW1wb3J0IHsgdHlwZSBEZXN0cm95YWJsZSwgdHlwZSBNYXliZSwgdHlwZSBSZWFkYWJsZUVycm9yIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyB0eXBlIEFjdGlvbkNvbnRleHRTdGF0ZSwgdHlwZSBBY3Rpb25Db250ZXh0U3RvcmUgfSBmcm9tICcuL2FjdGlvbi5zdG9yZSc7XG5pbXBvcnQgeyB0eXBlIERieEFjdGlvbkRpc2FibGVkS2V5LCB0eXBlIERieEFjdGlvblJlamVjdGVkUGFpciwgdHlwZSBEYnhBY3Rpb25TdGF0ZSwgdHlwZSBEYnhBY3Rpb25TdWNjZXNzUGFpciwgdHlwZSBEYnhBY3Rpb25Xb3JrT3JXb3JrUHJvZ3Jlc3MsIHR5cGUgRGJ4QWN0aW9uV29ya1Byb2dyZXNzIH0gZnJvbSAnLi9hY3Rpb24nO1xuXG4vKipcbiAqIFNvdXJjZSB0aGF0IHByb3ZpZGVzIGEgQWN0aW9uQ29udGV4dFN0b3JlIG9ic2VydmFibGUuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBY3Rpb25Db250ZXh0U3RvcmVTb3VyY2U8VCA9IHVua25vd24sIE8gPSB1bmtub3duPiB7XG4gIC8qKlxuICAgKiBPYnNlcnZhYmxlIHJlZmVyZW5jaW5nIHRoZSBBY3Rpb25Db250ZXh0U3RvcmUuXG4gICAqXG4gICAqIFRoaXMgb2JzZXJ2YWJsZSBieSBkZXNpZ24gaXMgcHJlLWZpbHRlcmVkIHRvIG5vdCByZXR1cm4gbnVsbCB2YWx1ZXMuXG4gICAqL1xuICBhYnN0cmFjdCByZWFkb25seSBzdG9yZSQ6IE9ic2VydmFibGU8QWN0aW9uQ29udGV4dFN0b3JlPFQsIE8+Pjtcbn1cblxuLyoqXG4gKiBTZWNvbmRhcnkgc291cmNlLiBVc2VkIGJ5IERieEFjdGlvbkNvbnRleHRDb21wb25lbnQgdG8gZmluZCBzZWNvbmRhcnkgc291cmNlcy5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNlY29uZGFyeUFjdGlvbkNvbnRleHRTdG9yZVNvdXJjZTxUID0gdW5rbm93biwgTyA9IHVua25vd24+IGV4dGVuZHMgQWN0aW9uQ29udGV4dFN0b3JlU291cmNlPFQsIE8+IHt9XG5cbmV4cG9ydCBmdW5jdGlvbiBhY3Rpb25Db250ZXh0U3RvcmVTb3VyY2VQaXBlPFQsIE8+KG9iczogT2JzZXJ2YWJsZTxNYXliZTxBY3Rpb25Db250ZXh0U3RvcmU8VCwgTz4+Pik6IE9ic2VydmFibGU8QWN0aW9uQ29udGV4dFN0b3JlPFQsIE8+PiB7XG4gIHJldHVybiBvYnMucGlwZShmaWx0ZXJNYXliZSgpKTtcbn1cblxuZXhwb3J0IHR5cGUgUGlwZUFjdGlvblN0b3JlRnVuY3Rpb248UiwgVCwgTz4gPSAoc3RvcmU6IEFjdGlvbkNvbnRleHRTdG9yZTxULCBPPikgPT4gT2JzZXJ2YWJsZTxSPjtcblxuZXhwb3J0IGZ1bmN0aW9uIHBpcGVBY3Rpb25TdG9yZTxSID0gdW5rbm93biwgVCA9IHVua25vd24sIE8gPSB1bmtub3duPihzb3VyY2U6IEFjdGlvbkNvbnRleHRTdG9yZVNvdXJjZTxULCBPPiwgcGlwZUZuOiBQaXBlQWN0aW9uU3RvcmVGdW5jdGlvbjxSLCBULCBPPik6IE9ic2VydmFibGU8Uj4ge1xuICByZXR1cm4gc291cmNlLnN0b3JlJC5waXBlKHN3aXRjaE1hcChwaXBlRm4pKTtcbn1cblxuZXhwb3J0IHR5cGUgVXNlQWN0aW9uU3RvcmVGdW5jdGlvbjxULCBPPiA9IChzdG9yZTogQWN0aW9uQ29udGV4dFN0b3JlPFQsIE8+KSA9PiB2b2lkO1xuXG4vKipcbiAqIENvbnZlbmllbmNlIGZ1bmN0aW9uIGZvciBzdWJzY3JpYmluZyB0byB0aGUgaW5wdXQgc291cmNlIG9uY2UgYW5kIHVzaW5nIHRoZSBwcm92aWRlZCBzdG9yZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUFjdGlvblN0b3JlPFQgPSB1bmtub3duLCBPID0gdW5rbm93bj4oc291cmNlOiBBY3Rpb25Db250ZXh0U3RvcmVTb3VyY2U8VCwgTz4sIHVzZUZuOiBVc2VBY3Rpb25TdG9yZUZ1bmN0aW9uPFQsIE8+KTogU3Vic2NyaXB0aW9uIHtcbiAgcmV0dXJuIHNvdXJjZS5zdG9yZSQucGlwZShmaXJzdCgpKS5zdWJzY3JpYmUodXNlRm4pO1xufVxuXG4vKipcbiAqIFNlcnZpY2UgdGhhdCB3cmFwcyBhIEFjdGlvbkNvbnRleHRTdG9yZVNvdXJjZS5cbiAqL1xuZXhwb3J0IGNsYXNzIERieEFjdGlvbkNvbnRleHRTdG9yZVNvdXJjZUluc3RhbmNlPFQgPSB1bmtub3duLCBPID0gdW5rbm93bj4gaW1wbGVtZW50cyBBY3Rpb25Db250ZXh0U3RvcmVTb3VyY2U8VCwgTz4sIERlc3Ryb3lhYmxlIHtcbiAgcmVhZG9ubHkgbG9ja1NldCA9IG5ldyBMb2NrU2V0KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfc291cmNlOiBBY3Rpb25Db250ZXh0U3RvcmVTb3VyY2U8VCwgTz47XG5cbiAgY29uc3RydWN0b3Ioc291cmNlOiBBY3Rpb25Db250ZXh0U3RvcmVTb3VyY2U8VCwgTz4pIHtcbiAgICBpZiAoIXNvdXJjZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTb3VyY2UgaXMgcmVxdWlyZWQuJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fc291cmNlID0gc291cmNlO1xuICB9XG5cbiAgZ2V0IHNvdXJjZSgpOiBBY3Rpb25Db250ZXh0U3RvcmVTb3VyY2U8VCwgTz4ge1xuICAgIHJldHVybiB0aGlzLl9zb3VyY2U7XG4gIH1cblxuICBwdWJsaWMgZGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmxvY2tTZXQuZGVzdHJveU9uTmV4dFVubG9jaygpO1xuICB9XG5cbiAgLy8gTUFSSzogU3RvcmVcbiAgZ2V0IHN0b3JlJCgpOiBPYnNlcnZhYmxlPEFjdGlvbkNvbnRleHRTdG9yZTxULCBPPj4ge1xuICAgIHJldHVybiB0aGlzLnNvdXJjZS5zdG9yZSQ7XG4gIH1cblxuICBwaXBlU3RvcmU8Uj4ocGlwZUZuOiBQaXBlQWN0aW9uU3RvcmVGdW5jdGlvbjxSLCBULCBPPik6IE9ic2VydmFibGU8Uj4ge1xuICAgIHJldHVybiBwaXBlQWN0aW9uU3RvcmUodGhpcy5zb3VyY2UsIHBpcGVGbik7XG4gIH1cblxuICB1c2VTdG9yZSh1c2VGbjogVXNlQWN0aW9uU3RvcmVGdW5jdGlvbjxULCBPPik6IFN1YnNjcmlwdGlvbiB7XG4gICAgcmV0dXJuIHVzZUFjdGlvblN0b3JlKHRoaXMuc291cmNlLCB1c2VGbik7XG4gIH1cblxuICBnZXQgc3RhdGUkKCk6IE9ic2VydmFibGU8QWN0aW9uQ29udGV4dFN0YXRlPFQsIE8+PiB7XG4gICAgcmV0dXJuIHRoaXMucGlwZVN0b3JlKCh4KSA9PiB4LnN0YXRlJCk7XG4gIH1cblxuICBnZXQgaWRsZSQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMucGlwZVN0b3JlKCh4KSA9PiB4LmlkbGUkKTtcbiAgfVxuXG4gIGdldCB0cmlnZ2VyZWQkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLnBpcGVTdG9yZSgoeCkgPT4geC50cmlnZ2VyZWQkKTtcbiAgfVxuXG4gIGdldCB2YWx1ZVJlYWR5JCgpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5waXBlU3RvcmUoKHgpID0+IHgudmFsdWVSZWFkeSQpO1xuICB9XG5cbiAgZ2V0IHN1Y2Nlc3MkKCk6IE9ic2VydmFibGU8TWF5YmU8Tz4+IHtcbiAgICByZXR1cm4gdGhpcy5waXBlU3RvcmUoKHgpID0+IHguc3VjY2VzcyQpO1xuICB9XG5cbiAgZ2V0IHN1Y2Nlc3NQYWlyJCgpOiBPYnNlcnZhYmxlPERieEFjdGlvblN1Y2Nlc3NQYWlyPFQsIE8+PiB7XG4gICAgcmV0dXJuIHRoaXMucGlwZVN0b3JlKCh4KSA9PiB4LnN1Y2Nlc3NQYWlyJCk7XG4gIH1cblxuICBnZXQgd29ya1Byb2dyZXNzJCgpOiBPYnNlcnZhYmxlPE1heWJlPERieEFjdGlvbldvcmtQcm9ncmVzcz4+IHtcbiAgICByZXR1cm4gdGhpcy5waXBlU3RvcmUoKHgpID0+IHgud29ya1Byb2dyZXNzJCk7XG4gIH1cblxuICBnZXQgZXJyb3IkKCk6IE9ic2VydmFibGU8TWF5YmU8UmVhZGFibGVFcnJvcj4+IHtcbiAgICByZXR1cm4gdGhpcy5waXBlU3RvcmUoKHgpID0+IHguZXJyb3IkKTtcbiAgfVxuXG4gIGdldCByZWplY3RlZCQoKTogT2JzZXJ2YWJsZTxNYXliZTxSZWFkYWJsZUVycm9yPj4ge1xuICAgIHJldHVybiB0aGlzLnBpcGVTdG9yZSgoeCkgPT4geC5yZWplY3RlZCQpO1xuICB9XG5cbiAgZ2V0IHJlamVjdGVkUGFpciQoKTogT2JzZXJ2YWJsZTxEYnhBY3Rpb25SZWplY3RlZFBhaXI8VD4+IHtcbiAgICByZXR1cm4gdGhpcy5waXBlU3RvcmUoKHgpID0+IHgucmVqZWN0ZWRQYWlyJCk7XG4gIH1cblxuICBnZXQgaXNNb2RpZmllZCQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMucGlwZVN0b3JlKCh4KSA9PiB4LmlzTW9kaWZpZWQkKTtcbiAgfVxuXG4gIGdldCBjYW5UcmlnZ2VyJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5waXBlU3RvcmUoKHgpID0+IHguY2FuVHJpZ2dlciQpO1xuICB9XG5cbiAgZ2V0IGlzTW9kaWZpZWRBbmRDYW5UcmlnZ2VyVXBkYXRlcyQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMucGlwZVN0b3JlKCh4KSA9PiB4LmlzTW9kaWZpZWRBbmRDYW5UcmlnZ2VyVXBkYXRlcyQpO1xuICB9XG5cbiAgZ2V0IGlzTW9kaWZpZWRBbmRDYW5UcmlnZ2VyJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5waXBlU3RvcmUoKHgpID0+IHguaXNNb2RpZmllZEFuZENhblRyaWdnZXIkKTtcbiAgfVxuXG4gIGdldCBhY3Rpb25TdGF0ZSQoKTogT2JzZXJ2YWJsZTxEYnhBY3Rpb25TdGF0ZT4ge1xuICAgIHJldHVybiB0aGlzLnBpcGVTdG9yZSgoeCkgPT4geC5hY3Rpb25TdGF0ZSQpO1xuICB9XG5cbiAgZ2V0IGxvYWRpbmdTdGF0ZSQoKTogT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGU8Tz4+IHtcbiAgICByZXR1cm4gdGhpcy5waXBlU3RvcmUoKHgpID0+IHgubG9hZGluZ1N0YXRlJCk7XG4gIH1cblxuICBnZXQgbG9hZGluZ1N0YXRlVHlwZSQoKTogT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGVUeXBlPiB7XG4gICAgcmV0dXJuIHRoaXMucGlwZVN0b3JlKCh4KSA9PiB4LmxvYWRpbmdTdGF0ZVR5cGUkKTtcbiAgfVxuXG4gIGdldCBpc1dvcmtpbmckKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLnBpcGVTdG9yZSgoeCkgPT4geC5pc1dvcmtpbmckKTtcbiAgfVxuXG4gIGdldCBpc1dvcmtpbmdPcldvcmtQcm9ncmVzcyQoKTogT2JzZXJ2YWJsZTxEYnhBY3Rpb25Xb3JrT3JXb3JrUHJvZ3Jlc3M+IHtcbiAgICByZXR1cm4gdGhpcy5waXBlU3RvcmUoKHgpID0+IHguaXNXb3JraW5nT3JXb3JrUHJvZ3Jlc3MkKTtcbiAgfVxuXG4gIGdldCBpc1N1Y2Nlc3MkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLnBpcGVTdG9yZSgoeCkgPT4geC5pc1N1Y2Nlc3MkKTtcbiAgfVxuXG4gIGdldCBkaXNhYmxlZEtleXMkKCk6IE9ic2VydmFibGU8c3RyaW5nW10+IHtcbiAgICByZXR1cm4gdGhpcy5waXBlU3RvcmUoKHgpID0+IHguZGlzYWJsZWRLZXlzJCk7XG4gIH1cblxuICBnZXQgaXNEaXNhYmxlZCQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMucGlwZVN0b3JlKCh4KSA9PiB4LmlzRGlzYWJsZWQkKTtcbiAgfVxuXG4gIGdldCBlcnJvckNvdW50U2luY2VMYXN0U3VjY2VzcyQoKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5waXBlU3RvcmUoKHgpID0+IHguZXJyb3JDb3VudFNpbmNlTGFzdFN1Y2Nlc3MkKTtcbiAgfVxuXG4gIHB1YmxpYyBlbmFibGUoa2V5PzogRGJ4QWN0aW9uRGlzYWJsZWRLZXksIGVuYWJsZSA9IHRydWUpOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGUoa2V5LCAhZW5hYmxlKTtcbiAgfVxuXG4gIHB1YmxpYyBkaXNhYmxlKGtleT86IERieEFjdGlvbkRpc2FibGVkS2V5LCBkaXNhYmxlID0gdHJ1ZSk6IHZvaWQge1xuICAgIHRoaXMudXNlU3RvcmUoKHgpID0+IChkaXNhYmxlID8geC5kaXNhYmxlKGtleSkgOiB4LmVuYWJsZShrZXkpKSk7XG4gIH1cblxuICBwdWJsaWMgc2V0SXNTYW1lKGlzU2FtZT86IGJvb2xlYW4gfCBPYnNlcnZhYmxlPGJvb2xlYW4+IHwgT2JzZXJ2YWJsZTx2b2lkPik6IHZvaWQge1xuICAgIHRoaXMudXNlU3RvcmUoKHgpID0+IHguc2V0SXNTYW1lKGlzU2FtZSkpO1xuICB9XG5cbiAgcHVibGljIHNldElzTW9kaWZpZWQoaXNNb2RpZmllZD86IGJvb2xlYW4gfCBPYnNlcnZhYmxlPGJvb2xlYW4+IHwgT2JzZXJ2YWJsZTx2b2lkPik6IHZvaWQge1xuICAgIHRoaXMudXNlU3RvcmUoKHgpID0+IHguc2V0SXNNb2RpZmllZChpc01vZGlmaWVkKSk7XG4gIH1cblxuICBwdWJsaWMgc2V0V29ya1Byb2dyZXNzKHdvcmtQcm9ncmVzczogTWF5YmVPYnNlcnZhYmxlT3JWYWx1ZTxEYnhBY3Rpb25Xb3JrUHJvZ3Jlc3M+KTogdm9pZCB7XG4gICAgdGhpcy51c2VTdG9yZSgoeCkgPT4geC5zZXRXb3JrUHJvZ3Jlc3Mod29ya1Byb2dyZXNzKSk7XG4gIH1cblxuICBwdWJsaWMgdHJpZ2dlcigpOiB2b2lkIHtcbiAgICB0aGlzLnVzZVN0b3JlKCh4KSA9PiB4LnRyaWdnZXIoKSk7XG4gIH1cblxuICBwdWJsaWMgdHJpZ2dlcldpdGhWYWx1ZSh2YWx1ZTogVCB8IE9ic2VydmFibGU8VD4pOiB2b2lkIHtcbiAgICB0aGlzLnVzZVN0b3JlKCh4KSA9PiB7XG4gICAgICB4LnRyaWdnZXIoKTtcbiAgICAgIHgucmVhZHlWYWx1ZSh2YWx1ZSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgcmVhZHlWYWx1ZSh2YWx1ZTogVCB8IE9ic2VydmFibGU8VD4pOiB2b2lkIHtcbiAgICB0aGlzLnVzZVN0b3JlKCh4KSA9PiB4LnJlYWR5VmFsdWUodmFsdWUpKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGFydFdvcmtpbmcoKTogdm9pZCB7XG4gICAgdGhpcy51c2VTdG9yZSgoeCkgPT4geC5zdGFydFdvcmtpbmcoKSk7XG4gIH1cblxuICBwdWJsaWMgcmVqZWN0KGVycm9yOiBNYXliZTxSZWFkYWJsZUVycm9yIHwgT2JzZXJ2YWJsZTxSZWFkYWJsZUVycm9yPj4pOiB2b2lkIHtcbiAgICB0aGlzLnVzZVN0b3JlKCh4KSA9PiB4LnJlamVjdChlcnJvcikpO1xuICB9XG5cbiAgcHVibGljIHJlc29sdmUodmFsdWU6IE8gfCBPYnNlcnZhYmxlPE8+KTogdm9pZCB7XG4gICAgdGhpcy51c2VTdG9yZSgoeCkgPT4geC5yZXNvbHZlKHZhbHVlKSk7XG4gIH1cblxuICBwdWJsaWMgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy51c2VTdG9yZSgoeCkgPT4geC5yZXNldCgpKTtcbiAgfVxufVxuIl19
@@ -1,36 +0,0 @@
1
- import { forwardRef } from '@angular/core';
2
- import { ActionContextStoreSource, DbxActionContextStoreSourceInstance, SecondaryActionContextStoreSource } from './action.store.source';
3
- import { DbxActionContextMachineAsService } from './action.machine';
4
- import { clean } from '../rxjs/clean';
5
- /**
6
- * Provides an ActionContextStoreSource, as well as an DbxActionContextStoreSourceInstance.
7
- */
8
- export function provideActionStoreSource(sourceType) {
9
- const storeSourceProvider = sourceType != null
10
- ? {
11
- provide: ActionContextStoreSource,
12
- useExisting: forwardRef(() => sourceType)
13
- }
14
- : {
15
- provide: ActionContextStoreSource,
16
- useFactory: () => new DbxActionContextMachineAsService()
17
- };
18
- return [
19
- storeSourceProvider,
20
- {
21
- provide: DbxActionContextStoreSourceInstance,
22
- useFactory: (source) => clean(new DbxActionContextStoreSourceInstance(source)),
23
- deps: [ActionContextStoreSource]
24
- }
25
- ];
26
- }
27
- export function provideSecondaryActionStoreSource(sourceType) {
28
- return [
29
- {
30
- provide: SecondaryActionContextStoreSource,
31
- useExisting: forwardRef(() => sourceType)
32
- },
33
- ...provideActionStoreSource(sourceType)
34
- ];
35
- }
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLnN0b3JlLnNvdXJjZS5wcm92aWRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWNvcmUvc3JjL2xpYi9hY3Rpb24vYWN0aW9uLnN0b3JlLnNvdXJjZS5wcm92aWRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQTRCLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxtQ0FBbUMsRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3pJLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdEM7O0dBRUc7QUFDSCxNQUFNLFVBQVUsd0JBQXdCLENBQXFDLFVBQTBCO0lBQ3JHLE1BQU0sbUJBQW1CLEdBQ3ZCLFVBQVUsSUFBSSxJQUFJO1FBQ2hCLENBQUMsQ0FBQztZQUNFLE9BQU8sRUFBRSx3QkFBd0I7WUFDakMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUM7U0FDMUM7UUFDSCxDQUFDLENBQUM7WUFDRSxPQUFPLEVBQUUsd0JBQXdCO1lBQ2pDLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLGdDQUFnQyxFQUFFO1NBQ3pELENBQUM7SUFFUixPQUFPO1FBQ0wsbUJBQW1CO1FBQ25CO1lBQ0UsT0FBTyxFQUFFLG1DQUFtQztZQUM1QyxVQUFVLEVBQUUsQ0FBQyxNQUFnQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxtQ0FBbUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN4RyxJQUFJLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQztTQUNqQztLQUNGLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLGlDQUFpQyxDQUE4QyxVQUFtQjtJQUNoSCxPQUFPO1FBQ0w7WUFDRSxPQUFPLEVBQUUsaUNBQWlDO1lBQzFDLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDO1NBQzFDO1FBQ0QsR0FBRyx3QkFBd0IsQ0FBQyxVQUFVLENBQUM7S0FDeEMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmb3J3YXJkUmVmLCB0eXBlIFByb3ZpZGVyLCB0eXBlIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGlvbkNvbnRleHRTdG9yZVNvdXJjZSwgRGJ4QWN0aW9uQ29udGV4dFN0b3JlU291cmNlSW5zdGFuY2UsIFNlY29uZGFyeUFjdGlvbkNvbnRleHRTdG9yZVNvdXJjZSB9IGZyb20gJy4vYWN0aW9uLnN0b3JlLnNvdXJjZSc7XG5pbXBvcnQgeyBEYnhBY3Rpb25Db250ZXh0TWFjaGluZUFzU2VydmljZSB9IGZyb20gJy4vYWN0aW9uLm1hY2hpbmUnO1xuaW1wb3J0IHsgY2xlYW4gfSBmcm9tICcuLi9yeGpzL2NsZWFuJztcblxuLyoqXG4gKiBQcm92aWRlcyBhbiBBY3Rpb25Db250ZXh0U3RvcmVTb3VyY2UsIGFzIHdlbGwgYXMgYW4gRGJ4QWN0aW9uQ29udGV4dFN0b3JlU291cmNlSW5zdGFuY2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlQWN0aW9uU3RvcmVTb3VyY2U8UyBleHRlbmRzIEFjdGlvbkNvbnRleHRTdG9yZVNvdXJjZT4oc291cmNlVHlwZTogVHlwZTxTPiB8IG51bGwpOiBQcm92aWRlcltdIHtcbiAgY29uc3Qgc3RvcmVTb3VyY2VQcm92aWRlcjogUHJvdmlkZXIgPVxuICAgIHNvdXJjZVR5cGUgIT0gbnVsbFxuICAgICAgPyB7XG4gICAgICAgICAgcHJvdmlkZTogQWN0aW9uQ29udGV4dFN0b3JlU291cmNlLFxuICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IHNvdXJjZVR5cGUpXG4gICAgICAgIH1cbiAgICAgIDoge1xuICAgICAgICAgIHByb3ZpZGU6IEFjdGlvbkNvbnRleHRTdG9yZVNvdXJjZSxcbiAgICAgICAgICB1c2VGYWN0b3J5OiAoKSA9PiBuZXcgRGJ4QWN0aW9uQ29udGV4dE1hY2hpbmVBc1NlcnZpY2UoKVxuICAgICAgICB9O1xuXG4gIHJldHVybiBbXG4gICAgc3RvcmVTb3VyY2VQcm92aWRlcixcbiAgICB7XG4gICAgICBwcm92aWRlOiBEYnhBY3Rpb25Db250ZXh0U3RvcmVTb3VyY2VJbnN0YW5jZSxcbiAgICAgIHVzZUZhY3Rvcnk6IChzb3VyY2U6IEFjdGlvbkNvbnRleHRTdG9yZVNvdXJjZSkgPT4gY2xlYW4obmV3IERieEFjdGlvbkNvbnRleHRTdG9yZVNvdXJjZUluc3RhbmNlKHNvdXJjZSkpLFxuICAgICAgZGVwczogW0FjdGlvbkNvbnRleHRTdG9yZVNvdXJjZV1cbiAgICB9XG4gIF07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlU2Vjb25kYXJ5QWN0aW9uU3RvcmVTb3VyY2U8UyBleHRlbmRzIFNlY29uZGFyeUFjdGlvbkNvbnRleHRTdG9yZVNvdXJjZT4oc291cmNlVHlwZTogVHlwZTxTPik6IFByb3ZpZGVyW10ge1xuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IFNlY29uZGFyeUFjdGlvbkNvbnRleHRTdG9yZVNvdXJjZSxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IHNvdXJjZVR5cGUpXG4gICAgfSxcbiAgICAuLi5wcm92aWRlQWN0aW9uU3RvcmVTb3VyY2Uoc291cmNlVHlwZSlcbiAgXTtcbn1cbiJdfQ==
@@ -1,36 +0,0 @@
1
- import { Directive, inject, input } from '@angular/core';
2
- import { cleanSubscription } from '../../../rxjs';
3
- import { distinctUntilChanged, filter, switchMap, EMPTY } from 'rxjs';
4
- import { DbxActionContextStoreSourceInstance } from '../../action.store.source';
5
- import { isNotFalse } from '@dereekb/util';
6
- import { toObservable } from '@angular/core/rxjs-interop';
7
- import * as i0 from "@angular/core";
8
- export class DbxActionAutoModifyDirective {
9
- source = inject((DbxActionContextStoreSourceInstance), { host: true });
10
- autoModifyEnabled = input(true, { alias: 'dbxActionAutoModify', transform: isNotFalse });
11
- markAsModified$ = toObservable(this.autoModifyEnabled).pipe(distinctUntilChanged(), switchMap((x) => {
12
- let obs;
13
- if (x) {
14
- obs = this.source.isModified$.pipe(filter((x) => !x));
15
- }
16
- else {
17
- obs = EMPTY;
18
- }
19
- return obs;
20
- }));
21
- constructor() {
22
- cleanSubscription(this.markAsModified$.subscribe(() => {
23
- this.source.setIsModified(true);
24
- }));
25
- }
26
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxActionAutoModifyDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
27
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: DbxActionAutoModifyDirective, isStandalone: true, selector: "dbxActionAutoModify, [dbxActionAutoModify]", inputs: { autoModifyEnabled: { classPropertyName: "autoModifyEnabled", publicName: "dbxActionAutoModify", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
28
- }
29
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxActionAutoModifyDirective, decorators: [{
30
- type: Directive,
31
- args: [{
32
- selector: 'dbxActionAutoModify, [dbxActionAutoModify]',
33
- standalone: true
34
- }]
35
- }], ctorParameters: () => [] });
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLmF1dG9tb2RpZnkuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWNvcmUvc3JjL2xpYi9hY3Rpb24vZGlyZWN0aXZlL2F1dG8vYWN0aW9uLmF1dG9tb2RpZnkuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQU0xRCxNQUFNLE9BQU8sNEJBQTRCO0lBQzlCLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQSxtQ0FBeUMsQ0FBQSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDM0UsaUJBQWlCLEdBQUcsS0FBSyxDQUE0QixJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUscUJBQXFCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDcEgsZUFBZSxHQUFxQixZQUFZLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsSUFBSSxDQUNwRixvQkFBb0IsRUFBRSxFQUN0QixTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtRQUNkLElBQUksR0FBb0IsQ0FBQztRQUV6QixJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ04sR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4RCxDQUFDO2FBQU0sQ0FBQztZQUNOLEdBQUcsR0FBRyxLQUFLLENBQUM7UUFDZCxDQUFDO1FBRUQsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBRUY7UUFDRSxpQkFBaUIsQ0FDZixJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDbEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7d0dBeEJVLDRCQUE0Qjs0RkFBNUIsNEJBQTRCOzs0RkFBNUIsNEJBQTRCO2tCQUp4QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSw0Q0FBNEM7b0JBQ3RELFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgaW5qZWN0LCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY2xlYW5TdWJzY3JpcHRpb24gfSBmcm9tICcuLi8uLi8uLi9yeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIHN3aXRjaE1hcCwgT2JzZXJ2YWJsZSwgRU1QVFkgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERieEFjdGlvbkNvbnRleHRTdG9yZVNvdXJjZUluc3RhbmNlIH0gZnJvbSAnLi4vLi4vYWN0aW9uLnN0b3JlLnNvdXJjZSc7XG5pbXBvcnQgeyBpc05vdEZhbHNlIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyB0b09ic2VydmFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ2RieEFjdGlvbkF1dG9Nb2RpZnksIFtkYnhBY3Rpb25BdXRvTW9kaWZ5XScsXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgRGJ4QWN0aW9uQXV0b01vZGlmeURpcmVjdGl2ZTxULCBPPiB7XG4gIHJlYWRvbmx5IHNvdXJjZSA9IGluamVjdChEYnhBY3Rpb25Db250ZXh0U3RvcmVTb3VyY2VJbnN0YW5jZTxULCBPPiwgeyBob3N0OiB0cnVlIH0pO1xuICByZWFkb25seSBhdXRvTW9kaWZ5RW5hYmxlZCA9IGlucHV0PGJvb2xlYW4sIHN0cmluZyB8IGJvb2xlYW4+KHRydWUsIHsgYWxpYXM6ICdkYnhBY3Rpb25BdXRvTW9kaWZ5JywgdHJhbnNmb3JtOiBpc05vdEZhbHNlIH0pO1xuICByZWFkb25seSBtYXJrQXNNb2RpZmllZCQ6IE9ic2VydmFibGU8dm9pZD4gPSB0b09ic2VydmFibGUodGhpcy5hdXRvTW9kaWZ5RW5hYmxlZCkucGlwZShcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHN3aXRjaE1hcCgoeCkgPT4ge1xuICAgICAgbGV0IG9iczogT2JzZXJ2YWJsZTxhbnk+O1xuXG4gICAgICBpZiAoeCkge1xuICAgICAgICBvYnMgPSB0aGlzLnNvdXJjZS5pc01vZGlmaWVkJC5waXBlKGZpbHRlcigoeCkgPT4gIXgpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9icyA9IEVNUFRZO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gb2JzO1xuICAgIH0pXG4gICk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgY2xlYW5TdWJzY3JpcHRpb24oXG4gICAgICB0aGlzLm1hcmtBc01vZGlmaWVkJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnNvdXJjZS5zZXRJc01vZGlmaWVkKHRydWUpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG59XG4iXX0=