@dereekb/dbx-core 9.25.16 → 10.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 (284) hide show
  1. package/{esm2020 → esm2022}/lib/action/action.machine.mjs +4 -4
  2. package/{esm2020 → esm2022}/lib/action/action.module.mjs +41 -41
  3. package/{esm2020 → esm2022}/lib/action/action.store.mjs +4 -4
  4. package/{esm2020 → esm2022}/lib/action/action.store.source.mjs +4 -4
  5. package/{esm2020 → esm2022}/lib/action/directive/auto/action.automodify.directive.mjs +9 -9
  6. package/esm2022/lib/action/directive/auto/action.autotrigger.directive.mjs +132 -0
  7. package/{esm2020 → esm2022}/lib/action/directive/context/action.directive.mjs +4 -4
  8. package/{esm2020 → esm2022}/lib/action/directive/context/action.source.directive.mjs +4 -4
  9. package/{esm2020 → esm2022}/lib/action/directive/debug/action.logger.directive.mjs +4 -4
  10. package/{esm2020 → esm2022}/lib/action/directive/map/action.map.directive.mjs +4 -4
  11. package/{esm2020 → esm2022}/lib/action/directive/map/action.map.key.directive.mjs +4 -4
  12. package/{esm2020 → esm2022}/lib/action/directive/map/action.map.source.directive.mjs +4 -4
  13. package/{esm2020 → esm2022}/lib/action/directive/map/action.map.working.disable.directive.mjs +4 -4
  14. package/{esm2020 → esm2022}/lib/action/directive/state/action.disabled.directive.mjs +4 -4
  15. package/{esm2020 → esm2022}/lib/action/directive/state/action.disableonsuccess.directive.mjs +4 -4
  16. package/{esm2020 → esm2022}/lib/action/directive/state/action.enforce.modified.directive.mjs +4 -4
  17. package/{esm2020 → esm2022}/lib/action/directive/state/action.handler.directive.mjs +7 -7
  18. package/{esm2020 → esm2022}/lib/action/directive/state/action.handler.instance.mjs +7 -7
  19. package/{esm2020 → esm2022}/lib/action/directive/state/action.presuccess.directive.mjs +4 -4
  20. package/{esm2020 → esm2022}/lib/action/directive/state/action.success.directive.mjs +4 -4
  21. package/{esm2020 → esm2022}/lib/action/directive/state/action.success.handler.directive.mjs +10 -10
  22. package/{esm2020 → esm2022}/lib/action/directive/state/action.value.directive.mjs +10 -10
  23. package/esm2022/lib/action/directive/state/action.value.stream.directive.mjs +79 -0
  24. package/{esm2020 → esm2022}/lib/action/directive/state/action.value.trigger.directive.mjs +11 -11
  25. package/{esm2020 → esm2022}/lib/action/directive/state/action.working.component.mjs +4 -4
  26. package/{esm2020 → esm2022}/lib/auth/auth.module.mjs +5 -5
  27. package/{esm2020 → esm2022}/lib/auth/auth.role.any.directive.mjs +4 -4
  28. package/{esm2020 → esm2022}/lib/auth/auth.role.has.directive.mjs +4 -4
  29. package/{esm2020 → esm2022}/lib/auth/auth.role.not.directive.mjs +4 -4
  30. package/{esm2020 → esm2022}/lib/auth/auth.state.module.mjs +5 -5
  31. package/{esm2020 → esm2022}/lib/auth/auth.state.service.mjs +4 -4
  32. package/{esm2020 → esm2022}/lib/auth/router/auth.router.module.mjs +5 -5
  33. package/{esm2020 → esm2022}/lib/auth/router/auth.router.service.mjs +4 -4
  34. package/{esm2020 → esm2022}/lib/auth/router/state/auth.router.state.module.mjs +5 -5
  35. package/{esm2020 → esm2022}/lib/auth/router/state/effect/auth.router.state.effect.mjs +4 -4
  36. package/{esm2020 → esm2022}/lib/auth/state/effect/auth.effect.mjs +4 -4
  37. package/{esm2020 → esm2022}/lib/button/action/action.button.directive.mjs +4 -4
  38. package/{esm2020 → esm2022}/lib/button/action/action.button.trigger.directive.mjs +4 -4
  39. package/esm2022/lib/button/button.directive.mjs +125 -0
  40. package/{esm2020 → esm2022}/lib/button/button.loading.directive.mjs +4 -4
  41. package/{esm2020 → esm2022}/lib/button/button.module.mjs +5 -5
  42. package/{esm2020 → esm2022}/lib/button/router/button.segue.directive.mjs +10 -10
  43. package/{esm2020 → esm2022}/lib/context/context.directive.mjs +4 -4
  44. package/esm2022/lib/context/context.mjs +22 -0
  45. package/{esm2020 → esm2022}/lib/context/context.module.mjs +5 -5
  46. package/{esm2020 → esm2022}/lib/context/context.service.mjs +4 -4
  47. package/{esm2020 → esm2022}/lib/filter/filter.abstract.connector.directive.mjs +4 -4
  48. package/{esm2020 → esm2022}/lib/filter/filter.abstract.source.directive.mjs +4 -4
  49. package/{esm2020 → esm2022}/lib/filter/filter.connect.source.directive.mjs +4 -4
  50. package/{esm2020 → esm2022}/lib/filter/filter.connector.directive.mjs +4 -4
  51. package/{esm2020 → esm2022}/lib/filter/filter.map.connector.directive.mjs +4 -4
  52. package/{esm2020 → esm2022}/lib/filter/filter.map.directive.mjs +4 -4
  53. package/{esm2020 → esm2022}/lib/filter/filter.map.instance.directive.mjs +4 -4
  54. package/{esm2020 → esm2022}/lib/filter/filter.map.source.directive.mjs +4 -4
  55. package/{esm2020 → esm2022}/lib/filter/filter.module.mjs +5 -5
  56. package/{esm2020 → esm2022}/lib/filter/filter.source.directive.mjs +4 -4
  57. package/{esm2020 → esm2022}/lib/injection/injection.array.component.mjs +6 -6
  58. package/{esm2020 → esm2022}/lib/injection/injection.component.mjs +6 -6
  59. package/{esm2020 → esm2022}/lib/injection/injection.component.module.mjs +5 -5
  60. package/{esm2020 → esm2022}/lib/injection/injection.context.directive.mjs +4 -4
  61. package/{esm2020 → esm2022}/lib/injection/injection.context.forward.directive.mjs +4 -4
  62. package/{esm2020 → esm2022}/lib/injection/injection.directive.mjs +4 -4
  63. package/esm2022/lib/injection/injection.instance.mjs +117 -0
  64. package/{esm2020 → esm2022}/lib/ngrx/store.lockset.mjs +4 -4
  65. package/{esm2020 → esm2022}/lib/pipe/async/asobservable.pipe.mjs +4 -4
  66. package/{esm2020 → esm2022}/lib/pipe/async/async.pipe.module.mjs +5 -5
  67. package/{esm2020 → esm2022}/lib/pipe/date/date.pipe.module.mjs +41 -41
  68. package/{esm2020 → esm2022}/lib/pipe/date/datedayrange.pipe.mjs +4 -4
  69. package/{esm2020 → esm2022}/lib/pipe/date/datedaytimerange.pipe.mjs +4 -4
  70. package/{esm2020 → esm2022}/lib/pipe/date/datedistance.pipe.mjs +4 -4
  71. package/{esm2020 → esm2022}/lib/pipe/date/dateformatdistance.pipe.mjs +4 -4
  72. package/{esm2020 → esm2022}/lib/pipe/date/datefromtoformat.pipe.mjs +7 -7
  73. package/{esm2020 → esm2022}/lib/pipe/date/daterangedistance.pipe.mjs +4 -4
  74. package/{esm2020 → esm2022}/lib/pipe/date/datetimerange.pipe.mjs +4 -4
  75. package/{esm2020 → esm2022}/lib/pipe/date/datetimerangeonly.pipe.mjs +4 -4
  76. package/{esm2020 → esm2022}/lib/pipe/date/datetimerangeonlydistance.pipe.mjs +4 -4
  77. package/{esm2020 → esm2022}/lib/pipe/date/minutesstring.pipe.mjs +4 -4
  78. package/{esm2020 → esm2022}/lib/pipe/date/systemdatetotargetdate.pipe.mjs +4 -4
  79. package/{esm2020 → esm2022}/lib/pipe/date/targetdatetosystemdate.pipe.mjs +4 -4
  80. package/{esm2020 → esm2022}/lib/pipe/date/timedistance.pipe.mjs +7 -7
  81. package/{esm2020 → esm2022}/lib/pipe/date/timezoneabbreviation.pipe.mjs +4 -4
  82. package/{esm2020 → esm2022}/lib/pipe/date/tojsdate.pipe.mjs +4 -4
  83. package/{esm2020 → esm2022}/lib/pipe/date/tominutes.pipe.mjs +4 -4
  84. package/{esm2020 → esm2022}/lib/pipe/misc/misc.pipe.module.mjs +5 -5
  85. package/{esm2020 → esm2022}/lib/pipe/misc/prettyjson.pipe.mjs +4 -4
  86. package/{esm2020 → esm2022}/lib/pipe/pipe.module.mjs +5 -5
  87. package/{esm2020 → esm2022}/lib/pipe/value/dollar.pipe.mjs +4 -4
  88. package/{esm2020 → esm2022}/lib/pipe/value/getvalue.pipe.mjs +7 -7
  89. package/{esm2020 → esm2022}/lib/pipe/value/value.pipe.module.mjs +5 -5
  90. package/{esm2020 → esm2022}/lib/router/anchor/anchor.directive.mjs +4 -4
  91. package/esm2022/lib/router/anchor/clickable.mjs +18 -0
  92. package/{esm2020 → esm2022}/lib/router/router/provider/angular/angular.router.service.mjs +4 -4
  93. package/{esm2020 → esm2022}/lib/router/router/provider/angular/angular.router.service.module.mjs +5 -5
  94. package/{esm2020 → esm2022}/lib/router/router/provider/uirouter/uirouter.router.service.mjs +4 -4
  95. package/{esm2020 → esm2022}/lib/router/router/provider/uirouter/uirouter.router.service.module.mjs +5 -5
  96. package/{esm2020 → esm2022}/lib/router/router/transition/transition.directive.mjs +4 -4
  97. package/{esm2020 → esm2022}/lib/router/router/transition/transition.watcher.directive.mjs +9 -9
  98. package/{esm2020 → esm2022}/lib/storage/storage.accessor.simple.factory.mjs +4 -4
  99. package/esm2022/lib/storage/storage.accessor.simple.mjs +163 -0
  100. package/{esm2020 → esm2022}/lib/storage/storage.module.mjs +5 -5
  101. package/{esm2020 → esm2022}/lib/subscription/subscription.directive.mjs +7 -7
  102. package/{esm2020 → esm2022}/lib/view/if.directive.mjs +4 -4
  103. package/{fesm2020 → fesm2022}/dereekb-dbx-core.mjs +524 -528
  104. package/fesm2022/dereekb-dbx-core.mjs.map +1 -0
  105. package/lib/action/action.d.ts +1 -1
  106. package/lib/action/action.handler.d.ts +3 -3
  107. package/lib/action/action.store.source.d.ts +2 -2
  108. package/lib/action/directive/auto/action.automodify.directive.d.ts +1 -1
  109. package/lib/action/directive/auto/action.autotrigger.directive.d.ts +1 -1
  110. package/lib/action/directive/context/action.directive.d.ts +1 -1
  111. package/lib/action/directive/context/action.source.directive.d.ts +1 -1
  112. package/lib/action/directive/debug/action.logger.directive.d.ts +1 -1
  113. package/lib/action/directive/map/action.map.d.ts +1 -1
  114. package/lib/action/directive/map/action.map.directive.d.ts +1 -1
  115. package/lib/action/directive/map/action.map.key.directive.d.ts +1 -1
  116. package/lib/action/directive/map/action.map.source.directive.d.ts +1 -1
  117. package/lib/action/directive/map/action.map.working.disable.directive.d.ts +1 -1
  118. package/lib/action/directive/state/action.disabled.directive.d.ts +1 -1
  119. package/lib/action/directive/state/action.disableonsuccess.directive.d.ts +1 -1
  120. package/lib/action/directive/state/action.enforce.modified.directive.d.ts +1 -1
  121. package/lib/action/directive/state/action.handler.directive.d.ts +2 -2
  122. package/lib/action/directive/state/action.presuccess.directive.d.ts +1 -1
  123. package/lib/action/directive/state/action.success.directive.d.ts +1 -1
  124. package/lib/action/directive/state/action.success.handler.directive.d.ts +2 -2
  125. package/lib/action/directive/state/action.value.directive.d.ts +1 -1
  126. package/lib/action/directive/state/action.value.stream.directive.d.ts +1 -1
  127. package/lib/action/directive/state/action.value.trigger.directive.d.ts +2 -2
  128. package/lib/action/directive/state/action.value.trigger.instance.d.ts +1 -1
  129. package/lib/action/directive/state/action.working.component.d.ts +1 -1
  130. package/lib/auth/auth.role.any.directive.d.ts +1 -1
  131. package/lib/auth/auth.role.has.directive.d.ts +1 -1
  132. package/lib/auth/auth.role.not.directive.d.ts +1 -1
  133. package/lib/auth/auth.user.d.ts +3 -3
  134. package/lib/auth/router/provider/uirouter/hook.d.ts +4 -4
  135. package/lib/auth/router/provider/uirouter/state.hook.d.ts +1 -1
  136. package/lib/auth/state/reducer/index.d.ts +1 -1
  137. package/lib/auth/state/state.d.ts +1 -1
  138. package/lib/button/action/action.button.directive.d.ts +1 -1
  139. package/lib/button/action/action.button.trigger.directive.d.ts +1 -1
  140. package/lib/button/button.d.ts +1 -1
  141. package/lib/button/button.directive.d.ts +2 -2
  142. package/lib/button/button.loading.directive.d.ts +1 -1
  143. package/lib/button/router/button.segue.directive.d.ts +1 -1
  144. package/lib/context/context.d.ts +2 -6
  145. package/lib/context/context.directive.d.ts +1 -1
  146. package/lib/context/state/reducer/index.d.ts +1 -1
  147. package/lib/context/state/state.d.ts +1 -1
  148. package/lib/filter/filter.abstract.connector.directive.d.ts +1 -1
  149. package/lib/filter/filter.abstract.source.directive.d.ts +1 -1
  150. package/lib/filter/filter.connect.source.directive.d.ts +1 -1
  151. package/lib/filter/filter.connector.directive.d.ts +1 -1
  152. package/lib/filter/filter.map.connector.directive.d.ts +1 -1
  153. package/lib/filter/filter.map.directive.d.ts +1 -1
  154. package/lib/filter/filter.map.instance.directive.d.ts +1 -1
  155. package/lib/filter/filter.map.source.directive.d.ts +1 -1
  156. package/lib/filter/filter.preset.d.ts +1 -1
  157. package/lib/filter/filter.source.directive.d.ts +1 -1
  158. package/lib/injection/injection.array.component.d.ts +1 -1
  159. package/lib/injection/injection.component.d.ts +1 -1
  160. package/lib/injection/injection.context.directive.d.ts +1 -1
  161. package/lib/injection/injection.context.forward.directive.d.ts +1 -1
  162. package/lib/injection/injection.d.ts +2 -2
  163. package/lib/injection/injection.directive.d.ts +1 -1
  164. package/lib/router/anchor/anchor.d.ts +2 -2
  165. package/lib/router/anchor/anchor.directive.d.ts +1 -1
  166. package/lib/router/anchor/mousable.d.ts +1 -1
  167. package/lib/router/router/service/router.go.d.ts +1 -1
  168. package/lib/router/router/service/router.service.util.d.ts +1 -1
  169. package/lib/router/router/transition/transition.directive.d.ts +1 -1
  170. package/lib/router/router/transition/transition.watcher.directive.d.ts +1 -1
  171. package/lib/router/segue.d.ts +2 -2
  172. package/lib/subscription/subscription.directive.d.ts +2 -2
  173. package/lib/view/if.directive.d.ts +1 -1
  174. package/package.json +18 -24
  175. package/esm2020/lib/action/directive/auto/action.autotrigger.directive.mjs +0 -132
  176. package/esm2020/lib/action/directive/state/action.value.stream.directive.mjs +0 -79
  177. package/esm2020/lib/button/button.directive.mjs +0 -125
  178. package/esm2020/lib/context/context.mjs +0 -26
  179. package/esm2020/lib/injection/injection.instance.mjs +0 -117
  180. package/esm2020/lib/router/anchor/clickable.mjs +0 -18
  181. package/esm2020/lib/storage/storage.accessor.simple.mjs +0 -163
  182. package/fesm2015/dereekb-dbx-core.mjs +0 -5506
  183. package/fesm2015/dereekb-dbx-core.mjs.map +0 -1
  184. package/fesm2020/dereekb-dbx-core.mjs.map +0 -1
  185. /package/{esm2020 → esm2022}/dereekb-dbx-core.mjs +0 -0
  186. /package/{esm2020 → esm2022}/index.mjs +0 -0
  187. /package/{esm2020 → esm2022}/lib/action/action.handler.mjs +0 -0
  188. /package/{esm2020 → esm2022}/lib/action/action.holder.mjs +0 -0
  189. /package/{esm2020 → esm2022}/lib/action/action.mjs +0 -0
  190. /package/{esm2020 → esm2022}/lib/action/action.reference.mjs +0 -0
  191. /package/{esm2020 → esm2022}/lib/action/action.store.source.provide.mjs +0 -0
  192. /package/{esm2020 → esm2022}/lib/action/directive/auto/index.mjs +0 -0
  193. /package/{esm2020 → esm2022}/lib/action/directive/context/index.mjs +0 -0
  194. /package/{esm2020 → esm2022}/lib/action/directive/debug/index.mjs +0 -0
  195. /package/{esm2020 → esm2022}/lib/action/directive/index.mjs +0 -0
  196. /package/{esm2020 → esm2022}/lib/action/directive/map/action.map.mjs +0 -0
  197. /package/{esm2020 → esm2022}/lib/action/directive/map/index.mjs +0 -0
  198. /package/{esm2020 → esm2022}/lib/action/directive/state/action.value.trigger.instance.mjs +0 -0
  199. /package/{esm2020 → esm2022}/lib/action/directive/state/index.mjs +0 -0
  200. /package/{esm2020 → esm2022}/lib/action/index.mjs +0 -0
  201. /package/{esm2020 → esm2022}/lib/auth/auth.user.mjs +0 -0
  202. /package/{esm2020 → esm2022}/lib/auth/index.mjs +0 -0
  203. /package/{esm2020 → esm2022}/lib/auth/router/auth.router.mjs +0 -0
  204. /package/{esm2020 → esm2022}/lib/auth/router/index.mjs +0 -0
  205. /package/{esm2020 → esm2022}/lib/auth/router/provider/uirouter/auth.hook.mjs +0 -0
  206. /package/{esm2020 → esm2022}/lib/auth/router/provider/uirouter/hook.mjs +0 -0
  207. /package/{esm2020 → esm2022}/lib/auth/router/provider/uirouter/index.mjs +0 -0
  208. /package/{esm2020 → esm2022}/lib/auth/router/provider/uirouter/redirect.mjs +0 -0
  209. /package/{esm2020 → esm2022}/lib/auth/router/provider/uirouter/role.hook.mjs +0 -0
  210. /package/{esm2020 → esm2022}/lib/auth/router/provider/uirouter/state.hook.mjs +0 -0
  211. /package/{esm2020 → esm2022}/lib/auth/router/state/effect/index.mjs +0 -0
  212. /package/{esm2020 → esm2022}/lib/auth/router/state/index.mjs +0 -0
  213. /package/{esm2020 → esm2022}/lib/auth/service/auth.service.mjs +0 -0
  214. /package/{esm2020 → esm2022}/lib/auth/service/auth.service.rxjs.mjs +0 -0
  215. /package/{esm2020 → esm2022}/lib/auth/service/index.mjs +0 -0
  216. /package/{esm2020 → esm2022}/lib/auth/state/action/auth.action.mjs +0 -0
  217. /package/{esm2020 → esm2022}/lib/auth/state/action/index.mjs +0 -0
  218. /package/{esm2020 → esm2022}/lib/auth/state/action/user.action.mjs +0 -0
  219. /package/{esm2020 → esm2022}/lib/auth/state/index.mjs +0 -0
  220. /package/{esm2020 → esm2022}/lib/auth/state/reducer/index.mjs +0 -0
  221. /package/{esm2020 → esm2022}/lib/auth/state/reducer/user.reducer.mjs +0 -0
  222. /package/{esm2020 → esm2022}/lib/auth/state/state.mjs +0 -0
  223. /package/{esm2020 → esm2022}/lib/button/action/index.mjs +0 -0
  224. /package/{esm2020 → esm2022}/lib/button/button.mjs +0 -0
  225. /package/{esm2020 → esm2022}/lib/button/index.mjs +0 -0
  226. /package/{esm2020 → esm2022}/lib/button/router/index.mjs +0 -0
  227. /package/{esm2020 → esm2022}/lib/context/index.mjs +0 -0
  228. /package/{esm2020 → esm2022}/lib/context/state/action/data.action.mjs +0 -0
  229. /package/{esm2020 → esm2022}/lib/context/state/action/index.mjs +0 -0
  230. /package/{esm2020 → esm2022}/lib/context/state/effect/index.mjs +0 -0
  231. /package/{esm2020 → esm2022}/lib/context/state/index.mjs +0 -0
  232. /package/{esm2020 → esm2022}/lib/context/state/reducer/data.reducer.mjs +0 -0
  233. /package/{esm2020 → esm2022}/lib/context/state/reducer/index.mjs +0 -0
  234. /package/{esm2020 → esm2022}/lib/context/state/state.mjs +0 -0
  235. /package/{esm2020 → esm2022}/lib/filter/filter.content.mjs +0 -0
  236. /package/{esm2020 → esm2022}/lib/filter/filter.preset.mjs +0 -0
  237. /package/{esm2020 → esm2022}/lib/filter/index.mjs +0 -0
  238. /package/{esm2020 → esm2022}/lib/index.mjs +0 -0
  239. /package/{esm2020 → esm2022}/lib/injection/index.mjs +0 -0
  240. /package/{esm2020 → esm2022}/lib/injection/injection.array.mjs +0 -0
  241. /package/{esm2020 → esm2022}/lib/injection/injection.context.mjs +0 -0
  242. /package/{esm2020 → esm2022}/lib/injection/injection.mjs +0 -0
  243. /package/{esm2020 → esm2022}/lib/injection/injection.rxjs.mjs +0 -0
  244. /package/{esm2020 → esm2022}/lib/ngrx/index.mjs +0 -0
  245. /package/{esm2020 → esm2022}/lib/pipe/async/index.mjs +0 -0
  246. /package/{esm2020 → esm2022}/lib/pipe/date/index.mjs +0 -0
  247. /package/{esm2020 → esm2022}/lib/pipe/index.mjs +0 -0
  248. /package/{esm2020 → esm2022}/lib/pipe/misc/index.mjs +0 -0
  249. /package/{esm2020 → esm2022}/lib/pipe/value/index.mjs +0 -0
  250. /package/{esm2020 → esm2022}/lib/router/anchor/anchor.mjs +0 -0
  251. /package/{esm2020 → esm2022}/lib/router/anchor/index.mjs +0 -0
  252. /package/{esm2020 → esm2022}/lib/router/anchor/mousable.mjs +0 -0
  253. /package/{esm2020 → esm2022}/lib/router/auth/hook/id.hook.mjs +0 -0
  254. /package/{esm2020 → esm2022}/lib/router/auth/hook/index.mjs +0 -0
  255. /package/{esm2020 → esm2022}/lib/router/auth/hook/uid.hook.mjs +0 -0
  256. /package/{esm2020 → esm2022}/lib/router/auth/index.mjs +0 -0
  257. /package/{esm2020 → esm2022}/lib/router/index.mjs +0 -0
  258. /package/{esm2020 → esm2022}/lib/router/router/index.mjs +0 -0
  259. /package/{esm2020 → esm2022}/lib/router/router/provider/angular/index.mjs +0 -0
  260. /package/{esm2020 → esm2022}/lib/router/router/provider/index.mjs +0 -0
  261. /package/{esm2020 → esm2022}/lib/router/router/provider/uirouter/index.mjs +0 -0
  262. /package/{esm2020 → esm2022}/lib/router/router/service/index.mjs +0 -0
  263. /package/{esm2020 → esm2022}/lib/router/router/service/router.go.mjs +0 -0
  264. /package/{esm2020 → esm2022}/lib/router/router/service/router.service.mjs +0 -0
  265. /package/{esm2020 → esm2022}/lib/router/router/service/router.service.rxjs.mjs +0 -0
  266. /package/{esm2020 → esm2022}/lib/router/router/service/router.service.util.mjs +0 -0
  267. /package/{esm2020 → esm2022}/lib/router/router/service/router.transition.service.mjs +0 -0
  268. /package/{esm2020 → esm2022}/lib/router/router/transition/index.mjs +0 -0
  269. /package/{esm2020 → esm2022}/lib/router/router/transition/transition.mjs +0 -0
  270. /package/{esm2020 → esm2022}/lib/router/router/transition/transition.rxjs.mjs +0 -0
  271. /package/{esm2020 → esm2022}/lib/router/router/util/index.mjs +0 -0
  272. /package/{esm2020 → esm2022}/lib/router/router/util/route.default.mjs +0 -0
  273. /package/{esm2020 → esm2022}/lib/router/router/util/route.reader.mjs +0 -0
  274. /package/{esm2020 → esm2022}/lib/router/segue.mjs +0 -0
  275. /package/{esm2020 → esm2022}/lib/storage/index.mjs +0 -0
  276. /package/{esm2020 → esm2022}/lib/storage/storage.accessor.mjs +0 -0
  277. /package/{esm2020 → esm2022}/lib/storage/storage.accessor.string.mjs +0 -0
  278. /package/{esm2020 → esm2022}/lib/storage/storage.di.mjs +0 -0
  279. /package/{esm2020 → esm2022}/lib/storage/storage.object.localstorage.mjs +0 -0
  280. /package/{esm2020 → esm2022}/lib/storage/storage.object.memory.mjs +0 -0
  281. /package/{esm2020 → esm2022}/lib/subscription/index.mjs +0 -0
  282. /package/{esm2020 → esm2022}/lib/util/index.mjs +0 -0
  283. /package/{esm2020 → esm2022}/lib/util/view.mjs +0 -0
  284. /package/{esm2020 → esm2022}/lib/view/index.mjs +0 -0
@@ -1,117 +0,0 @@
1
- import { Injector } from '@angular/core';
2
- import { distinctUntilChanged, map, shareReplay, BehaviorSubject, combineLatest } from 'rxjs';
3
- import { DBX_INJECTION_COMPONENT_DATA } from './injection';
4
- import { mergeArrayOrValueIntoArray } from '@dereekb/util';
5
- import { SubscriptionObject, filterMaybe, skipFirstMaybe } from '@dereekb/rxjs';
6
- /**
7
- * Instance used by components to inject content based on the configuration into the view.
8
- */
9
- export class DbxInjectionInstance {
10
- constructor(_injector) {
11
- this._injector = _injector;
12
- this._subscriptionObject = new SubscriptionObject();
13
- this._config = new BehaviorSubject(undefined);
14
- this._template = new BehaviorSubject(undefined);
15
- this._content = new BehaviorSubject(undefined);
16
- this._componentRef = new BehaviorSubject(undefined);
17
- this.config$ = this._config.pipe(distinctUntilChanged());
18
- this.template$ = this._template.pipe(distinctUntilChanged());
19
- this.content$ = this._content.pipe(filterMaybe(), distinctUntilChanged(), shareReplay(1));
20
- }
21
- get config() {
22
- return this._config.value;
23
- }
24
- set config(config) {
25
- this._config.next(config);
26
- }
27
- get template() {
28
- return this._template.value;
29
- }
30
- set template(template) {
31
- this._template.next(template);
32
- }
33
- get content() {
34
- return this._content.value;
35
- }
36
- set content(content) {
37
- this._content.next(content);
38
- }
39
- get componentRef() {
40
- return this._componentRef.value;
41
- }
42
- set componentRef(componentRef) {
43
- this._componentRef.next(componentRef);
44
- }
45
- init() {
46
- // Wait until the first of either of the two inputs comes in as not defined, and then emit.
47
- // We filter the first maybe here between the two items.
48
- const configTemplateObs = combineLatest([this.config$, this.template$]).pipe(map(([config, template]) => {
49
- if (config || template) {
50
- return {
51
- config,
52
- template
53
- };
54
- }
55
- else {
56
- return undefined;
57
- }
58
- }), skipFirstMaybe());
59
- this._subscriptionObject.subscription = combineLatest([configTemplateObs, this.content$]).subscribe(([inputConfig, content]) => {
60
- const { config, template } = inputConfig ?? {};
61
- this._reset(content);
62
- if (config) {
63
- this._initComponent(config, content);
64
- }
65
- else if (template) {
66
- this._initTemplate(template, content);
67
- }
68
- });
69
- }
70
- destroy() {
71
- this._config.complete();
72
- this._template.complete();
73
- this._content.complete();
74
- this._componentRef.complete();
75
- }
76
- _initComponent(config, content) {
77
- content.clear();
78
- const { init, injector: inputInjector, providers, ngModuleRef, componentClass, data } = config;
79
- const parentInjector = inputInjector ?? this._injector;
80
- let injector = parentInjector;
81
- if (providers || data) {
82
- injector = Injector.create({
83
- parent: parentInjector,
84
- providers: mergeArrayOrValueIntoArray([
85
- {
86
- provide: DBX_INJECTION_COMPONENT_DATA,
87
- useValue: data
88
- }
89
- ], providers ?? [])
90
- });
91
- }
92
- const componentRef = content.createComponent(componentClass, { injector, ngModuleRef });
93
- const instance = componentRef.instance;
94
- if (init) {
95
- init(instance);
96
- }
97
- this.componentRef = componentRef;
98
- }
99
- _initTemplate(config, content) {
100
- content.clear();
101
- const { templateRef, viewRef } = config;
102
- if (templateRef) {
103
- content.createEmbeddedView(templateRef);
104
- // TODO: Figure out if these items need to be destroyed or not when this item is destroyed. If so, we need a reference to destroy.
105
- }
106
- else if (viewRef) {
107
- content.insert(viewRef);
108
- }
109
- }
110
- _reset(content) {
111
- if (this.componentRef) {
112
- content.clear();
113
- this.componentRef = undefined;
114
- }
115
- }
116
- }
117
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5qZWN0aW9uLmluc3RhbmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWNvcmUvc3JjL2xpYi9pbmplY3Rpb24vaW5qZWN0aW9uLmluc3RhbmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsUUFBUSxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUN6RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlGLE9BQU8sRUFBMkQsNEJBQTRCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEgsT0FBTyxFQUFtQywwQkFBMEIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVoRjs7R0FFRztBQUNILE1BQU0sT0FBTyxvQkFBb0I7SUE2Qy9CLFlBQTZCLFNBQW1CO1FBQW5CLGNBQVMsR0FBVCxTQUFTLENBQVU7UUE1Q3hDLHdCQUFtQixHQUFHLElBQUksa0JBQWtCLEVBQUUsQ0FBQztRQUUvQyxZQUFPLEdBQUcsSUFBSSxlQUFlLENBQXdDLFNBQVMsQ0FBQyxDQUFDO1FBQ2hGLGNBQVMsR0FBRyxJQUFJLGVBQWUsQ0FBdUMsU0FBUyxDQUFDLENBQUM7UUFFakYsYUFBUSxHQUFHLElBQUksZUFBZSxDQUEwQixTQUFTLENBQUMsQ0FBQztRQUNuRSxrQkFBYSxHQUFHLElBQUksZUFBZSxDQUF5QixTQUFTLENBQUMsQ0FBQztRQUV0RSxZQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO1FBQ3BELGNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLENBQUM7UUFDeEQs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QUksQ0FBQyxZQUFZLEVBQUU7WUFDckIsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDO1NBQy9CO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50UmVmLCBJbmplY3RvciwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgc2hhcmVSZXBsYXksIEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRGJ4SW5qZWN0aW9uQ29tcG9uZW50Q29uZmlnLCBEYnhJbmplY3Rpb25UZW1wbGF0ZUNvbmZpZywgREJYX0lOSkVDVElPTl9DT01QT05FTlRfREFUQSB9IGZyb20gJy4vaW5qZWN0aW9uJztcbmltcG9ydCB7IEluaXRpYWxpemVkLCBEZXN0cm95YWJsZSwgTWF5YmUsIG1lcmdlQXJyYXlPclZhbHVlSW50b0FycmF5IH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb25PYmplY3QsIGZpbHRlck1heWJlLCBza2lwRmlyc3RNYXliZSB9IGZyb20gJ0BkZXJlZWtiL3J4anMnO1xuXG4vKipcbiAqIEluc3RhbmNlIHVzZWQgYnkgY29tcG9uZW50cyB0byBpbmplY3QgY29udGVudCBiYXNlZCBvbiB0aGUgY29uZmlndXJhdGlvbiBpbnRvIHRoZSB2aWV3LlxuICovXG5leHBvcnQgY2xhc3MgRGJ4SW5qZWN0aW9uSW5zdGFuY2U8VD4gaW1wbGVtZW50cyBJbml0aWFsaXplZCwgRGVzdHJveWFibGUge1xuICBwcml2YXRlIF9zdWJzY3JpcHRpb25PYmplY3QgPSBuZXcgU3Vic2NyaXB0aW9uT2JqZWN0KCk7XG5cbiAgcHJpdmF0ZSBfY29uZmlnID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXliZTxEYnhJbmplY3Rpb25Db21wb25lbnRDb25maWc8VD4+Pih1bmRlZmluZWQpO1xuICBwcml2YXRlIF90ZW1wbGF0ZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWF5YmU8RGJ4SW5qZWN0aW9uVGVtcGxhdGVDb25maWc8VD4+Pih1bmRlZmluZWQpO1xuXG4gIHByaXZhdGUgX2NvbnRlbnQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1heWJlPFZpZXdDb250YWluZXJSZWY+Pih1bmRlZmluZWQpO1xuICBwcml2YXRlIF9jb21wb25lbnRSZWYgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1heWJlPENvbXBvbmVudFJlZjxUPj4+KHVuZGVmaW5lZCk7XG5cbiAgcmVhZG9ubHkgY29uZmlnJCA9IHRoaXMuX2NvbmZpZy5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xuICByZWFkb25seSB0ZW1wbGF0ZSQgPSB0aGlzLl90ZW1wbGF0ZS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xuICByZWFkb25seSBjb250ZW50JCA9IHRoaXMuX2NvbnRlbnQucGlwZShmaWx0ZXJNYXliZSgpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCBzaGFyZVJlcGxheSgxKSk7XG5cbiAgZ2V0IGNvbmZpZygpOiBNYXliZTxEYnhJbmplY3Rpb25Db21wb25lbnRDb25maWc8VD4+IHtcbiAgICByZXR1cm4gdGhpcy5fY29uZmlnLnZhbHVlO1xuICB9XG5cbiAgc2V0IGNvbmZpZyhjb25maWc6IE1heWJlPERieEluamVjdGlvbkNvbXBvbmVudENvbmZpZzxUPj4pIHtcbiAgICB0aGlzLl9jb25maWcubmV4dChjb25maWcpO1xuICB9XG5cbiAgZ2V0IHRlbXBsYXRlKCk6IE1heWJlPERieEluamVjdGlvblRlbXBsYXRlQ29uZmlnPFQ+PiB7XG4gICAgcmV0dXJuIHRoaXMuX3RlbXBsYXRlLnZhbHVlO1xuICB9XG5cbiAgc2V0IHRlbXBsYXRlKHRlbXBsYXRlOiBNYXliZTxEYnhJbmplY3Rpb25UZW1wbGF0ZUNvbmZpZzxUPj4pIHtcbiAgICB0aGlzLl90ZW1wbGF0ZS5uZXh0KHRlbXBsYXRlKTtcbiAgfVxuXG4gIGdldCBjb250ZW50KCk6IE1heWJlPE1heWJlPFZpZXdDb250YWluZXJSZWY+PiB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbnRlbnQudmFsdWU7XG4gIH1cblxuICBzZXQgY29udGVudChjb250ZW50OiBNYXliZTxNYXliZTxWaWV3Q29udGFpbmVyUmVmPj4pIHtcbiAgICB0aGlzLl9jb250ZW50Lm5leHQoY29udGVudCk7XG4gIH1cblxuICBnZXQgY29tcG9uZW50UmVmKCk6IE1heWJlPENvbXBvbmVudFJlZjxUPj4ge1xuICAgIHJldHVybiB0aGlzLl9jb21wb25lbnRSZWYudmFsdWU7XG4gIH1cblxuICBzZXQgY29tcG9uZW50UmVmKGNvbXBvbmVudFJlZjogTWF5YmU8Q29tcG9uZW50UmVmPFQ+Pikge1xuICAgIHRoaXMuX2NvbXBvbmVudFJlZi5uZXh0KGNvbXBvbmVudFJlZik7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IF9pbmplY3RvcjogSW5qZWN0b3IpIHt9XG5cbiAgaW5pdCgpOiB2b2lkIHtcbiAgICAvLyBXYWl0IHVudGlsIHRoZSBmaXJzdCBvZiBlaXRoZXIgb2YgdGhlIHR3byBpbnB1dHMgY29tZXMgaW4gYXMgbm90IGRlZmluZWQsIGFuZCB0aGVuIGVtaXQuXG4gICAgLy8gV2UgZmlsdGVyIHRoZSBmaXJzdCBtYXliZSBoZXJlIGJldHdlZW4gdGhlIHR3byBpdGVtcy5cbiAgICBjb25zdCBjb25maWdUZW1wbGF0ZU9icyA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuY29uZmlnJCwgdGhpcy50ZW1wbGF0ZSRdKS5waXBlKFxuICAgICAgbWFwKChbY29uZmlnLCB0ZW1wbGF0ZV0pID0+IHtcbiAgICAgICAgaWYgKGNvbmZpZyB8fCB0ZW1wbGF0ZSkge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgICB0ZW1wbGF0ZVxuICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBza2lwRmlyc3RNYXliZSgpXG4gICAgKTtcblxuICAgIHRoaXMuX3N1YnNjcmlwdGlvbk9iamVjdC5zdWJzY3JpcHRpb24gPSBjb21iaW5lTGF0ZXN0KFtjb25maWdUZW1wbGF0ZU9icywgdGhpcy5jb250ZW50JF0pLnN1YnNjcmliZSgoW2lucHV0Q29uZmlnLCBjb250ZW50XSkgPT4ge1xuICAgICAgY29uc3QgeyBjb25maWcsIHRlbXBsYXRlIH0gPSBpbnB1dENvbmZpZyA/PyB7fTtcbiAgICAgIHRoaXMuX3Jlc2V0KGNvbnRlbnQpO1xuXG4gICAgICBpZiAoY29uZmlnKSB7XG4gICAgICAgIHRoaXMuX2luaXRDb21wb25lbnQoY29uZmlnLCBjb250ZW50KTtcbiAgICAgIH0gZWxzZSBpZiAodGVtcGxhdGUpIHtcbiAgICAgICAgdGhpcy5faW5pdFRlbXBsYXRlKHRlbXBsYXRlLCBjb250ZW50KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fY29uZmlnLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fdGVtcGxhdGUuY29tcGxldGUoKTtcbiAgICB0aGlzLl9jb250ZW50LmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fY29tcG9uZW50UmVmLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwcml2YXRlIF9pbml0Q29tcG9uZW50KGNvbmZpZzogRGJ4SW5qZWN0aW9uQ29tcG9uZW50Q29uZmlnPFQ+LCBjb250ZW50OiBWaWV3Q29udGFpbmVyUmVmKTogdm9pZCB7XG4gICAgY29udGVudC5jbGVhcigpO1xuXG4gICAgY29uc3QgeyBpbml0LCBpbmplY3RvcjogaW5wdXRJbmplY3RvciwgcHJvdmlkZXJzLCBuZ01vZHVsZVJlZiwgY29tcG9uZW50Q2xhc3MsIGRhdGEgfSA9IGNvbmZpZztcblxuICAgIGNvbnN0IHBhcmVudEluamVjdG9yID0gaW5wdXRJbmplY3RvciA/PyB0aGlzLl9pbmplY3RvcjtcbiAgICBsZXQgaW5qZWN0b3I6IEluamVjdG9yIHwgdW5kZWZpbmVkID0gcGFyZW50SW5qZWN0b3I7XG5cbiAgICBpZiAocHJvdmlkZXJzIHx8IGRhdGEpIHtcbiAgICAgIGluamVjdG9yID0gSW5qZWN0b3IuY3JlYXRlKHtcbiAgICAgICAgcGFyZW50OiBwYXJlbnRJbmplY3RvcixcbiAgICAgICAgcHJvdmlkZXJzOiBtZXJnZUFycmF5T3JWYWx1ZUludG9BcnJheShcbiAgICAgICAgICBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHByb3ZpZGU6IERCWF9JTkpFQ1RJT05fQ09NUE9ORU5UX0RBVEEsXG4gICAgICAgICAgICAgIHVzZVZhbHVlOiBkYXRhXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXSxcbiAgICAgICAgICBwcm92aWRlcnMgPz8gW11cbiAgICAgICAgKVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8VD4gPSBjb250ZW50LmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnRDbGFzcywgeyBpbmplY3RvciwgbmdNb2R1bGVSZWYgfSk7XG5cbiAgICBjb25zdCBpbnN0YW5jZSA9IGNvbXBvbmVudFJlZi5pbnN0YW5jZTtcblxuICAgIGlmIChpbml0KSB7XG4gICAgICBpbml0KGluc3RhbmNlKTtcbiAgICB9XG5cbiAgICB0aGlzLmNvbXBvbmVudFJlZiA9IGNvbXBvbmVudFJlZjtcbiAgfVxuXG4gIHByaXZhdGUgX2luaXRUZW1wbGF0ZShjb25maWc6IERieEluamVjdGlvblRlbXBsYXRlQ29uZmlnPFQ+LCBjb250ZW50OiBWaWV3Q29udGFpbmVyUmVmKTogdm9pZCB7XG4gICAgY29udGVudC5jbGVhcigpO1xuXG4gICAgY29uc3QgeyB0ZW1wbGF0ZVJlZiwgdmlld1JlZiB9ID0gY29uZmlnO1xuXG4gICAgaWYgKHRlbXBsYXRlUmVmKSB7XG4gICAgICBjb250ZW50LmNyZWF0ZUVtYmVkZGVkVmlldyh0ZW1wbGF0ZVJlZik7XG5cbiAgICAgIC8vIFRPRE86IEZpZ3VyZSBvdXQgaWYgdGhlc2UgaXRlbXMgbmVlZCB0byBiZSBkZXN0cm95ZWQgb3Igbm90IHdoZW4gdGhpcyBpdGVtIGlzIGRlc3Ryb3llZC4gSWYgc28sIHdlIG5lZWQgYSByZWZlcmVuY2UgdG8gZGVzdHJveS5cbiAgICB9IGVsc2UgaWYgKHZpZXdSZWYpIHtcbiAgICAgIGNvbnRlbnQuaW5zZXJ0KHZpZXdSZWYpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3Jlc2V0KGNvbnRlbnQ6IFZpZXdDb250YWluZXJSZWYpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jb21wb25lbnRSZWYpIHtcbiAgICAgIGNvbnRlbnQuY2xlYXIoKTtcbiAgICAgIHRoaXMuY29tcG9uZW50UmVmID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -1,18 +0,0 @@
1
- import { mailToUrlString, telUrlString } from '@dereekb/util';
2
- export function clickableUrlInNewTab(url) {
3
- return {
4
- url,
5
- target: '_blank'
6
- };
7
- }
8
- export function clickableUrlMailTo(mailTo) {
9
- return {
10
- url: mailToUrlString(mailTo)
11
- };
12
- }
13
- export function clickableUrlTel(tel) {
14
- return {
15
- url: telUrlString(tel)
16
- };
17
- }
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpY2thYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWNvcmUvc3JjL2xpYi9yb3V0ZXIvYW5jaG9yL2NsaWNrYWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXVHLGVBQWUsRUFBc0IsWUFBWSxFQUFjLE1BQU0sZUFBZSxDQUFDO0FBb0JuTSxNQUFNLFVBQVUsb0JBQW9CLENBQUMsR0FBd0I7SUFDM0QsT0FBTztRQUNMLEdBQUc7UUFDSCxNQUFNLEVBQUUsUUFBUTtLQUNqQixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxNQUFzQjtJQUN2RCxPQUFPO1FBQ0wsR0FBRyxFQUFFLGVBQWUsQ0FBQyxNQUFNLENBQUM7S0FDN0IsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUFDLEdBQXVEO0lBQ3JGLE9BQU87UUFDTCxHQUFHLEVBQUUsWUFBWSxDQUFDLEdBQUcsQ0FBQztLQUN2QixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEUxNjRQaG9uZU51bWJlciwgRTE2NFBob25lTnVtYmVyV2l0aEV4dGVuc2lvbiwgRTE2NFBob25lTnVtYmVyV2l0aE9wdGlvbmFsRXh0ZW5zaW9uLCBNYWlsVG9VcmxJbnB1dCwgbWFpbFRvVXJsU3RyaW5nLCBNYXliZSwgUGhvbmVOdW1iZXIsIHRlbFVybFN0cmluZywgV2Vic2l0ZVVybCB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENsaWNrYWJsZUZ1bmN0aW9uIHtcbiAgb25DbGljaz86IChldmVudD86IE1heWJlPE1vdXNlRXZlbnQ+KSA9PiB2b2lkO1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBjbGlja2FibGUgaHJlZi91cmwgY29uZmlndXJhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDbGlja2FibGVVcmwge1xuICAvKipcbiAgICogaHJlZiB1cmxcbiAgICovXG4gIHVybD86IHN0cmluZztcbiAgLyoqXG4gICAqIGhyZWYgdGFyZ2V0IGF0dHJpYnV0ZS5cbiAgICovXG4gIHRhcmdldD86IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsaWNrYWJsZVVybEluTmV3VGFiKHVybDogc3RyaW5nIHwgV2Vic2l0ZVVybCk6IENsaWNrYWJsZVVybCB7XG4gIHJldHVybiB7XG4gICAgdXJsLFxuICAgIHRhcmdldDogJ19ibGFuaydcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsaWNrYWJsZVVybE1haWxUbyhtYWlsVG86IE1haWxUb1VybElucHV0KTogQ2xpY2thYmxlVXJsIHtcbiAgcmV0dXJuIHtcbiAgICB1cmw6IG1haWxUb1VybFN0cmluZyhtYWlsVG8pXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGlja2FibGVVcmxUZWwodGVsOiBQaG9uZU51bWJlciB8IEUxNjRQaG9uZU51bWJlcldpdGhPcHRpb25hbEV4dGVuc2lvbik6IENsaWNrYWJsZVVybCB7XG4gIHJldHVybiB7XG4gICAgdXJsOiB0ZWxVcmxTdHJpbmcodGVsKVxuICB9O1xufVxuIl19
@@ -1,163 +0,0 @@
1
- import { map } from 'rxjs';
2
- import { timeHasExpired, unixTimeNumberForNow } from '@dereekb/date';
3
- import { DataDoesNotExistError, DataIsExpiredError, hasNonNullValue, splitJoinRemainder } from '@dereekb/util';
4
- export class StringifySimpleStorageAccessorConverter {
5
- stringifyValue(value) {
6
- return JSON.stringify(value);
7
- }
8
- parseValue(data) {
9
- return JSON.parse(data);
10
- }
11
- }
12
- export class WrapperSimpleStorageAccessorDelegate {
13
- constructor(_delegate, _converter) {
14
- this._delegate = _delegate;
15
- this._converter = _converter;
16
- }
17
- get(key) {
18
- return this._delegate.get(key);
19
- }
20
- set(key, value) {
21
- return this._delegate.set(key, value);
22
- }
23
- remove(key) {
24
- return this._delegate.remove(key);
25
- }
26
- clear() {
27
- return this._delegate.clear();
28
- }
29
- all(prefix) {
30
- return this._delegate.all(prefix);
31
- }
32
- allKeys(prefix) {
33
- return this._delegate.allKeys(prefix);
34
- }
35
- stringifyValue(value) {
36
- return this._converter.stringifyValue(value);
37
- }
38
- parseValue(data) {
39
- return this._converter.parseValue(data);
40
- }
41
- }
42
- /**
43
- * LimitedStorageAccessor implementation that uses a Delegate
44
- */
45
- export class SimpleStorageAccessor {
46
- constructor(_delegate, config) {
47
- this._delegate = _delegate;
48
- const prefix = config.prefix;
49
- const prefixSplitter = config.prefixSplitter ?? SimpleStorageAccessor.PREFIX_SPLITTER;
50
- this.assertValidStorageKeyPrefix(prefix, prefixSplitter);
51
- const fullPrefix = `${prefix}${prefixSplitter}`;
52
- this._config = {
53
- ...config,
54
- prefixSplitter,
55
- fullPrefix
56
- };
57
- }
58
- // MARK: LimitedStorageAccessor
59
- get(inputKey) {
60
- const storeKey = this.makeStorageKey(inputKey);
61
- return this._delegate.get(storeKey).pipe(map((storedData) => {
62
- if (storedData) {
63
- const readStoredData = this.readStoredData(storedData);
64
- if (!readStoredData.expired) {
65
- return readStoredData.convertedData;
66
- }
67
- else {
68
- throw new DataIsExpiredError(readStoredData);
69
- }
70
- }
71
- else {
72
- throw new DataDoesNotExistError();
73
- }
74
- }));
75
- }
76
- set(inputKey, inputValue) {
77
- const storeKey = this.makeStorageKey(inputKey);
78
- const storeData = this.buildStoredData(inputValue);
79
- const data = JSON.stringify(storeData);
80
- return this._delegate.set(storeKey, data);
81
- }
82
- remove(key) {
83
- const storeKey = this.makeStorageKey(key);
84
- return this._delegate.remove(storeKey);
85
- }
86
- all() {
87
- return this._delegate.all(this._config.fullPrefix).pipe(map((allStoredData) => {
88
- return allStoredData
89
- .map((storedData) => {
90
- const readStoredData = this.readStoredData(storedData);
91
- if (!readStoredData.expired) {
92
- return readStoredData.convertedData;
93
- }
94
- else {
95
- return null;
96
- }
97
- })
98
- .filter(hasNonNullValue);
99
- }));
100
- }
101
- allKeys() {
102
- return this._delegate.allKeys(this._config.fullPrefix).pipe(map((keys) => keys.map((x) => this.decodeStorageKey(x))));
103
- }
104
- clear() {
105
- return this._delegate.clear();
106
- }
107
- // MARK: Stored Values
108
- readStoredData(storedDataString) {
109
- const storedData = JSON.parse(storedDataString);
110
- const expired = this.isExpiredStoredData(storedData);
111
- const convertedData = this._delegate.parseValue(storedData.data);
112
- return {
113
- ...storedData,
114
- expired,
115
- convertedData
116
- };
117
- }
118
- buildStoredData(value) {
119
- return {
120
- storedAt: unixTimeNumberForNow(),
121
- data: this.stringifyValue(value)
122
- };
123
- }
124
- isExpiredStoredData(storeData) {
125
- const expiresIn = this._config.expiresIn;
126
- if (expiresIn) {
127
- if (storeData.storedAt) {
128
- return timeHasExpired(storeData.storedAt, expiresIn);
129
- }
130
- return true;
131
- }
132
- else {
133
- return false;
134
- }
135
- }
136
- // MARK: Internal
137
- assertValidStorageKeyPrefix(prefix, prefixSplitter) {
138
- if (!prefixSplitter) {
139
- throw new Error('Invalid storage key prefix splitter. Must be defined and not empty.');
140
- }
141
- if (!this.isValidStorageKeyPrefix(prefix, prefixSplitter)) {
142
- throw new Error('Invalid storage key prefix.');
143
- }
144
- }
145
- isValidStorageKeyPrefix(prefix, prefixSpltter) {
146
- return Boolean(prefix && prefix.indexOf(prefixSpltter) === -1);
147
- }
148
- makeStorageKey(key) {
149
- return `${this._config.prefix}${this._config.prefixSplitter}${String(key)}`;
150
- }
151
- isKeyOfAccessor(storageKey) {
152
- return storageKey.startsWith(this._config.fullPrefix);
153
- }
154
- decodeStorageKey(storageKey) {
155
- const split = splitJoinRemainder(storageKey, this._config.prefixSplitter, 2);
156
- return split[1];
157
- }
158
- stringifyValue(value) {
159
- return this._delegate.stringifyValue(value);
160
- }
161
- }
162
- SimpleStorageAccessor.PREFIX_SPLITTER = '::';
163
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5hY2Nlc3Nvci5zaW1wbGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtY29yZS9zcmMvbGliL3N0b3JhZ2Uvc3RvcmFnZS5hY2Nlc3Nvci5zaW1wbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsY0FBYyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxrQkFBa0IsRUFBNkUsZUFBZSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBb0IxTCxNQUFNLE9BQU8sdUNBQXVDO0lBQ2xELGNBQWMsQ0FBQyxLQUFRO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsVUFBVSxDQUFDLElBQXNCO1FBQy9CLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQixDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sb0NBQW9DO0lBQy9DLFlBQW9CLFNBQTRDLEVBQVUsVUFBNkM7UUFBbkcsY0FBUyxHQUFULFNBQVMsQ0FBbUM7UUFBVSxlQUFVLEdBQVYsVUFBVSxDQUFtQztJQUFHLENBQUM7SUFFM0gsR0FBRyxDQUFDLEdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxHQUFHLENBQUMsR0FBVyxFQUFFLEtBQXVCO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxNQUFNLENBQUMsR0FBVztRQUNoQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsTUFB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LE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQzlFLENBQUM7SUFFUyxlQUFlLENBQUMsVUFBZ0M7UUFDeEQsT0FBTyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVTLGdCQUFnQixDQUFDLFVBQWdDO1FBQ3pELE1BQU0sS0FBSyxHQUFHLGtCQUFrQixDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM3RSxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBRVMsY0FBYyxDQUFDLEtBQVE7UUFDL0IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QyxDQUFDOztBQTNJZSxxQ0FBZSxHQUFHLElBQUksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUsIG1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGltZUhhc0V4cGlyZWQsIHVuaXhUaW1lTnVtYmVyRm9yTm93IH0gZnJvbSAnQGRlcmVla2IvZGF0ZSc7XG5pbXBvcnQgeyBEYXRhRG9lc05vdEV4aXN0RXJyb3IsIERhdGFJc0V4cGlyZWRFcnJvciwgUmVhZFN0b3JlZERhdGEsIFN0b3JlZERhdGEsIFN0b3JlZERhdGFTdG9yYWdlS2V5LCBTdG9yZWREYXRhU3RyaW5nLCBNYXliZSwgaGFzTm9uTnVsbFZhbHVlLCBzcGxpdEpvaW5SZW1haW5kZXIgfSBmcm9tICdAZGVyZWVrYi91dGlsJztcbmltcG9ydCB7IFN0b3JhZ2VBY2Nlc3NvciB9IGZyb20gJy4vc3RvcmFnZS5hY2Nlc3Nvcic7XG5cbi8vIE1BUks6IFNpbXBsZVN0b3JhZ2VBY2Nlc3NvclxuZXhwb3J0IGludGVyZmFjZSBTaW1wbGVTdG9yYWdlQWNjZXNzb3JDb252ZXJ0ZXI8VD4ge1xuICAvKipcbiAgICogQ29udmVydHMgdGhlIGlucHV0IHZhbHVlIHRvIGEgc3RyaW5nLlxuICAgKi9cbiAgc3RyaW5naWZ5VmFsdWUodmFsdWU6IFQpOiBTdG9yZWREYXRhU3RyaW5nO1xuICAvKipcbiAgICogQ29udmVydHMgdGhlIGRhdGEgc3RyaW5nIGludG8gYSB2YWx1ZS5cbiAgICovXG4gIHBhcnNlVmFsdWUoZGF0YTogU3RvcmVkRGF0YVN0cmluZyk6IFQ7XG59XG5cbi8qKlxuICogU2ltcGxlU3RvcmFnZUFjY2Vzc29yIGRlbGVnYXRlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNpbXBsZVN0b3JhZ2VBY2Nlc3NvckRlbGVnYXRlPFQ+IGV4dGVuZHMgU2ltcGxlU3RvcmFnZUFjY2Vzc29yQ29udmVydGVyPFQ+LCBTdG9yYWdlQWNjZXNzb3I8U3RvcmVkRGF0YVN0cmluZz4ge31cblxuZXhwb3J0IGNsYXNzIFN0cmluZ2lmeVNpbXBsZVN0b3JhZ2VBY2Nlc3NvckNvbnZlcnRlcjxUPiBpbXBsZW1lbnRzIFNpbXBsZVN0b3JhZ2VBY2Nlc3NvckNvbnZlcnRlcjxUPiB7XG4gIHN0cmluZ2lmeVZhbHVlKHZhbHVlOiBUKTogU3RvcmVkRGF0YVN0cmluZyB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgfVxuXG4gIHBhcnNlVmFsdWUoZGF0YTogU3RvcmVkRGF0YVN0cmluZyk6IFQge1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBXcmFwcGVyU2ltcGxlU3RvcmFnZUFjY2Vzc29yRGVsZWdhdGU8VD4gaW1wbGVtZW50cyBTaW1wbGVTdG9yYWdlQWNjZXNzb3JEZWxlZ2F0ZTxUPiB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2RlbGVnYXRlOiBTdG9yYWdlQWNjZXNzb3I8U3RvcmVkRGF0YVN0cmluZz4sIHByaXZhdGUgX2NvbnZlcnRlcjogU2ltcGxlU3RvcmFnZUFjY2Vzc29yQ29udmVydGVyPFQ+KSB7fVxuXG4gIGdldChrZXk6IHN0cmluZyk6IE9ic2VydmFibGU8TWF5YmU8U3RvcmVkRGF0YVN0cmluZz4+IHtcbiAgICByZXR1cm4gdGhpcy5fZGVsZWdhdGUuZ2V0KGtleSk7XG4gIH1cblxuICBzZXQoa2V5OiBzdHJpbmcsIHZhbHVlOiBTdG9yZWREYXRhU3RyaW5nKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuX2RlbGVnYXRlLnNldChrZXksIHZhbHVlKTtcbiAgfVxuXG4gIHJlbW92ZShrZXk6IHN0cmluZyk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLl9kZWxlZ2F0ZS5yZW1vdmUoa2V5KTtcbiAgfVxuXG4gIGNsZWFyKCk6IE9ic2VydmFibGU8b2JqZWN0PiB7XG4gICAgcmV0dXJuIHRoaXMuX2RlbGVnYXRlLmNsZWFyKCk7XG4gIH1cblxuICBhbGwocHJlZml4Pzogc3RyaW5nKTogT2JzZXJ2YWJsZTxzdHJpbmdbXT4ge1xuICAgIHJldHVybiB0aGlzLl9kZWxlZ2F0ZS5hbGwocHJlZml4KTtcbiAgfVxuXG4gIGFsbEtleXMocHJlZml4Pzogc3RyaW5nKTogT2JzZXJ2YWJsZTxzdHJpbmdbXT4ge1xuICAgIHJldHVybiB0aGlzLl9kZWxlZ2F0ZS5hbGxLZXlzKHByZWZpeCk7XG4gIH1cblxuICBzdHJpbmdpZnlWYWx1ZSh2YWx1ZTogVCk6IFN0b3JlZERhdGFTdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9jb252ZXJ0ZXIuc3RyaW5naWZ5VmFsdWUodmFsdWUpO1xuICB9XG5cbiAgcGFyc2VWYWx1ZShkYXRhOiBTdG9yZWREYXRhU3RyaW5nKTogVCB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbnZlcnRlci5wYXJzZVZhbHVlKGRhdGEpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2ltcGxlU3RvcmFnZUFjY2Vzc29yQ29uZmlnIHtcbiAgLyoqXG4gICAqIFN0b3JhZ2UgS2V5IFByZWZpeFxuICAgKi9cbiAgcmVhZG9ubHkgcHJlZml4OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBPcHRpb25hbCBwcmVmaXgvdmFsdWUgc3BsaXR0ZXIuXG4gICAqL1xuICByZWFkb25seSBwcmVmaXhTcGxpdHRlcj86IHN0cmluZztcbiAgLyoqXG4gICAqIE51bWJlciBpbiBtaWxsaXNlY29uZHMgdGhhdCBvYmplY3RzIHN0b3JlZCB3aWxsIGV4cGlyZSBpbi5cbiAgICovXG4gIHJlYWRvbmx5IGV4cGlyZXNJbj86IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIENvbmZpZ3VyZWRTaW1wbGVTdG9yYWdlQWNjZXNzb3JDb25maWcgZXh0ZW5kcyBTaW1wbGVTdG9yYWdlQWNjZXNzb3JDb25maWcge1xuICByZWFkb25seSBwcmVmaXhTcGxpdHRlcjogc3RyaW5nO1xuICByZWFkb25seSBmdWxsUHJlZml4OiBzdHJpbmc7XG59XG5cbi8qKlxuICogTGltaXRlZFN0b3JhZ2VBY2Nlc3NvciBpbXBsZW1lbnRhdGlvbiB0aGF0IHVzZXMgYSBEZWxlZ2F0ZVxuICovXG5leHBvcnQgY2xhc3MgU2ltcGxlU3RvcmFnZUFjY2Vzc29yPFQ+IGltcGxlbWVudHMgU3RvcmFnZUFjY2Vzc29yPFQ+IHtcbiAgc3RhdGljIHJlYWRvbmx5IFBSRUZJWF9TUExJVFRFUiA9ICc6Oic7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9jb25maWc6IENvbmZpZ3VyZWRTaW1wbGVTdG9yYWdlQWNjZXNzb3JDb25maWc7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBfZGVsZWdhdGU6IFNpbXBsZVN0b3JhZ2VBY2Nlc3NvckRlbGVnYXRlPFQ+LCBjb25maWc6IFNpbXBsZVN0b3JhZ2VBY2Nlc3NvckNvbmZpZykge1xuICAgIGNvbnN0IHByZWZpeCA9IGNvbmZpZy5wcmVmaXg7XG4gICAgY29uc3QgcHJlZml4U3BsaXR0ZXIgPSBjb25maWcucHJlZml4U3BsaXR0ZXIgPz8gU2ltcGxlU3RvcmFnZUFjY2Vzc29yLlBSRUZJWF9TUExJVFRFUjtcblxuICAgIHRoaXMuYXNzZXJ0VmFsaWRTdG9yYWdlS2V5UHJlZml4KHByZWZpeCwgcHJlZml4U3BsaXR0ZXIpO1xuXG4gICAgY29uc3QgZnVsbFByZWZpeCA9IGAke3ByZWZpeH0ke3ByZWZpeFNwbGl0dGVyfWA7XG4gICAgdGhpcy5fY29uZmlnID0ge1xuICAgICAgLi4uY29uZmlnLFxuICAgICAgcHJlZml4U3BsaXR0ZXIsXG4gICAgICBmdWxsUHJlZml4XG4gICAgfTtcbiAgfVxuXG4gIC8vIE1BUks6IExpbWl0ZWRTdG9yYWdlQWNjZXNzb3JcbiAgZ2V0KGlucHV0S2V5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICBjb25zdCBzdG9yZUtleSA9IHRoaXMubWFrZVN0b3JhZ2VLZXkoaW5wdXRLZXkpO1xuICAgIHJldHVybiB0aGlzLl9kZWxlZ2F0ZS5nZXQoc3RvcmVLZXkpLnBpcGUoXG4gICAgICBtYXAoKHN0b3JlZERhdGE6IE1heWJlPHN0cmluZz4pID0+IHtcbiAgICAgICAgaWYgKHN0b3JlZERhdGEpIHtcbiAgICAgICAgICBjb25zdCByZWFkU3RvcmVkRGF0YSA9IHRoaXMucmVhZFN0b3JlZERhdGEoc3RvcmVkRGF0YSk7XG5cbiAgICAgICAgICBpZiAoIXJlYWRTdG9yZWREYXRhLmV4cGlyZWQpIHtcbiAgICAgICAgICAgIHJldHVybiByZWFkU3RvcmVkRGF0YS5jb252ZXJ0ZWREYXRhO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRGF0YUlzRXhwaXJlZEVycm9yPFQ+KHJlYWRTdG9yZWREYXRhKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhyb3cgbmV3IERhdGFEb2VzTm90RXhpc3RFcnJvcigpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBzZXQoaW5wdXRLZXk6IHN0cmluZywgaW5wdXRWYWx1ZTogVCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGNvbnN0IHN0b3JlS2V5ID0gdGhpcy5tYWtlU3RvcmFnZUtleShpbnB1dEtleSk7XG4gICAgY29uc3Qgc3RvcmVEYXRhOiBTdG9yZWREYXRhID0gdGhpcy5idWlsZFN0b3JlZERhdGEoaW5wdXRWYWx1ZSk7XG4gICAgY29uc3QgZGF0YSA9IEpTT04uc3RyaW5naWZ5KHN0b3JlRGF0YSk7XG4gICAgcmV0dXJuIHRoaXMuX2RlbGVnYXRlLnNldChzdG9yZUtleSwgZGF0YSk7XG4gIH1cblxuICByZW1vdmUoa2V5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICBjb25zdCBzdG9yZUtleSA9IHRoaXMubWFrZVN0b3JhZ2VLZXkoa2V5KTtcbiAgICByZXR1cm4gdGhpcy5fZGVsZWdhdGUucmVtb3ZlKHN0b3JlS2V5KTtcbiAgfVxuXG4gIGFsbCgpOiBPYnNlcnZhYmxlPFRbXT4ge1xuICAgIHJldHVybiB0aGlzLl9kZWxlZ2F0ZS5hbGwodGhpcy5fY29uZmlnLmZ1bGxQcmVmaXgpLnBpcGUoXG4gICAgICBtYXAoKGFsbFN0b3JlZERhdGEpID0+IHtcbiAgICAgICAgcmV0dXJuIGFsbFN0b3JlZERhdGFcbiAgICAgICAgICAubWFwKChzdG9yZWREYXRhKSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZWFkU3RvcmVkRGF0YSA9IHRoaXMucmVhZFN0b3JlZERhdGEoc3RvcmVkRGF0YSk7XG5cbiAgICAgICAgICAgIGlmICghcmVhZFN0b3JlZERhdGEuZXhwaXJlZCkge1xuICAgICAgICAgICAgICByZXR1cm4gcmVhZFN0b3JlZERhdGEuY29udmVydGVkRGF0YTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgICAgLmZpbHRlcihoYXNOb25OdWxsVmFsdWUpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgYWxsS2V5cygpOiBPYnNlcnZhYmxlPHN0cmluZ1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2RlbGVnYXRlLmFsbEtleXModGhpcy5fY29uZmlnLmZ1bGxQcmVmaXgpLnBpcGUobWFwKChrZXlzKSA9PiBrZXlzLm1hcCgoeCkgPT4gdGhpcy5kZWNvZGVTdG9yYWdlS2V5KHgpKSkpO1xuICB9XG5cbiAgY2xlYXIoKTogT2JzZXJ2YWJsZTxvYmplY3Q+IHtcbiAgICByZXR1cm4gdGhpcy5fZGVsZWdhdGUuY2xlYXIoKTtcbiAgfVxuXG4gIC8vIE1BUks6IFN0b3JlZCBWYWx1ZXNcbiAgcHJvdGVjdGVkIHJlYWRTdG9yZWREYXRhKHN0b3JlZERhdGFTdHJpbmc6IFN0b3JlZERhdGFTdHJpbmcpOiBSZWFkU3RvcmVkRGF0YTxUPiB7XG4gICAgY29uc3Qgc3RvcmVkRGF0YTogU3RvcmVkRGF0YSA9IEpTT04ucGFyc2Uoc3RvcmVkRGF0YVN0cmluZyk7XG4gICAgY29uc3QgZXhwaXJlZCA9IHRoaXMuaXNFeHBpcmVkU3RvcmVkRGF0YShzdG9yZWREYXRhKTtcbiAgICBjb25zdCBjb252ZXJ0ZWREYXRhID0gdGhpcy5fZGVsZWdhdGUucGFyc2VWYWx1ZShzdG9yZWREYXRhLmRhdGEpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN0b3JlZERhdGEsXG4gICAgICBleHBpcmVkLFxuICAgICAgY29udmVydGVkRGF0YVxuICAgIH07XG4gIH1cblxuICBwcm90ZWN0ZWQgYnVpbGRTdG9yZWREYXRhKHZhbHVlOiBUKTogU3RvcmVkRGF0YSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0b3JlZEF0OiB1bml4VGltZU51bWJlckZvck5vdygpLFxuICAgICAgZGF0YTogdGhpcy5zdHJpbmdpZnlWYWx1ZSh2YWx1ZSlcbiAgICB9O1xuICB9XG5cbiAgcHJvdGVjdGVkIGlzRXhwaXJlZFN0b3JlZERhdGEoc3RvcmVEYXRhOiBTdG9yZWREYXRhKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZXhwaXJlc0luID0gdGhpcy5fY29uZmlnLmV4cGlyZXNJbjtcbiAgICBpZiAoZXhwaXJlc0luKSB7XG4gICAgICBpZiAoc3RvcmVEYXRhLnN0b3JlZEF0KSB7XG4gICAgICAgIHJldHVybiB0aW1lSGFzRXhwaXJlZChzdG9yZURhdGEuc3RvcmVkQXQsIGV4cGlyZXNJbik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLy8gTUFSSzogSW50ZXJuYWxcbiAgcHJvdGVjdGVkIGFzc2VydFZhbGlkU3RvcmFnZUtleVByZWZpeChwcmVmaXg6IHN0cmluZywgcHJlZml4U3BsaXR0ZXI6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghcHJlZml4U3BsaXR0ZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBzdG9yYWdlIGtleSBwcmVmaXggc3BsaXR0ZXIuIE11c3QgYmUgZGVmaW5lZCBhbmQgbm90IGVtcHR5LicpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5pc1ZhbGlkU3RvcmFnZUtleVByZWZpeChwcmVmaXgsIHByZWZpeFNwbGl0dGVyKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHN0b3JhZ2Uga2V5IHByZWZpeC4nKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgaXNWYWxpZFN0b3JhZ2VLZXlQcmVmaXgocHJlZml4OiBzdHJpbmcsIHByZWZpeFNwbHR0ZXI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCb29sZWFuKHByZWZpeCAmJiBwcmVmaXguaW5kZXhPZihwcmVmaXhTcGx0dGVyKSA9PT0gLTEpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG1ha2VTdG9yYWdlS2V5KGtleTogc3RyaW5nKTogU3RvcmVkRGF0YVN0b3JhZ2VLZXkge1xuICAgIHJldHVybiBgJHt0aGlzLl9jb25maWcucHJlZml4fSR7dGhpcy5fY29uZmlnLnByZWZpeFNwbGl0dGVyfSR7U3RyaW5nKGtleSl9YDtcbiAgfVxuXG4gIHByb3RlY3RlZCBpc0tleU9mQWNjZXNzb3Ioc3RvcmFnZUtleTogU3RvcmVkRGF0YVN0b3JhZ2VLZXkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gc3RvcmFnZUtleS5zdGFydHNXaXRoKHRoaXMuX2NvbmZpZy5mdWxsUHJlZml4KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBkZWNvZGVTdG9yYWdlS2V5KHN0b3JhZ2VLZXk6IFN0b3JlZERhdGFTdG9yYWdlS2V5KTogc3RyaW5nIHtcbiAgICBjb25zdCBzcGxpdCA9IHNwbGl0Sm9pblJlbWFpbmRlcihzdG9yYWdlS2V5LCB0aGlzLl9jb25maWcucHJlZml4U3BsaXR0ZXIsIDIpO1xuICAgIHJldHVybiBzcGxpdFsxXTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzdHJpbmdpZnlWYWx1ZSh2YWx1ZTogVCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2RlbGVnYXRlLnN0cmluZ2lmeVZhbHVlKHZhbHVlKTtcbiAgfVxufVxuIl19