@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.
- package/{esm2020 → esm2022}/lib/action/action.machine.mjs +4 -4
- package/{esm2020 → esm2022}/lib/action/action.module.mjs +41 -41
- package/{esm2020 → esm2022}/lib/action/action.store.mjs +4 -4
- package/{esm2020 → esm2022}/lib/action/action.store.source.mjs +4 -4
- package/{esm2020 → esm2022}/lib/action/directive/auto/action.automodify.directive.mjs +9 -9
- package/esm2022/lib/action/directive/auto/action.autotrigger.directive.mjs +132 -0
- package/{esm2020 → esm2022}/lib/action/directive/context/action.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/action/directive/context/action.source.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/action/directive/debug/action.logger.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/action/directive/map/action.map.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/action/directive/map/action.map.key.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/action/directive/map/action.map.source.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/action/directive/map/action.map.working.disable.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/action/directive/state/action.disabled.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/action/directive/state/action.disableonsuccess.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/action/directive/state/action.enforce.modified.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/action/directive/state/action.handler.directive.mjs +7 -7
- package/{esm2020 → esm2022}/lib/action/directive/state/action.handler.instance.mjs +7 -7
- package/{esm2020 → esm2022}/lib/action/directive/state/action.presuccess.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/action/directive/state/action.success.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/action/directive/state/action.success.handler.directive.mjs +10 -10
- package/{esm2020 → esm2022}/lib/action/directive/state/action.value.directive.mjs +10 -10
- package/esm2022/lib/action/directive/state/action.value.stream.directive.mjs +79 -0
- package/{esm2020 → esm2022}/lib/action/directive/state/action.value.trigger.directive.mjs +11 -11
- package/{esm2020 → esm2022}/lib/action/directive/state/action.working.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/auth/auth.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/auth/auth.role.any.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/auth/auth.role.has.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/auth/auth.role.not.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/auth/auth.state.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/auth/auth.state.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/auth/router/auth.router.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/auth/router/auth.router.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/auth/router/state/auth.router.state.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/auth/router/state/effect/auth.router.state.effect.mjs +4 -4
- package/{esm2020 → esm2022}/lib/auth/state/effect/auth.effect.mjs +4 -4
- package/{esm2020 → esm2022}/lib/button/action/action.button.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/button/action/action.button.trigger.directive.mjs +4 -4
- package/esm2022/lib/button/button.directive.mjs +125 -0
- package/{esm2020 → esm2022}/lib/button/button.loading.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/button/button.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/button/router/button.segue.directive.mjs +10 -10
- package/{esm2020 → esm2022}/lib/context/context.directive.mjs +4 -4
- package/esm2022/lib/context/context.mjs +22 -0
- package/{esm2020 → esm2022}/lib/context/context.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/context/context.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/filter/filter.abstract.connector.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/filter/filter.abstract.source.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/filter/filter.connect.source.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/filter/filter.connector.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/filter/filter.map.connector.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/filter/filter.map.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/filter/filter.map.instance.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/filter/filter.map.source.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/filter/filter.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/filter/filter.source.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/injection/injection.array.component.mjs +6 -6
- package/{esm2020 → esm2022}/lib/injection/injection.component.mjs +6 -6
- package/{esm2020 → esm2022}/lib/injection/injection.component.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/injection/injection.context.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/injection/injection.context.forward.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/injection/injection.directive.mjs +4 -4
- package/esm2022/lib/injection/injection.instance.mjs +117 -0
- package/{esm2020 → esm2022}/lib/ngrx/store.lockset.mjs +4 -4
- package/{esm2020 → esm2022}/lib/pipe/async/asobservable.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/pipe/async/async.pipe.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/pipe/date/date.pipe.module.mjs +41 -41
- package/{esm2020 → esm2022}/lib/pipe/date/datedayrange.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/pipe/date/datedaytimerange.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/pipe/date/datedistance.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/pipe/date/dateformatdistance.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/pipe/date/datefromtoformat.pipe.mjs +7 -7
- package/{esm2020 → esm2022}/lib/pipe/date/daterangedistance.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/pipe/date/datetimerange.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/pipe/date/datetimerangeonly.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/pipe/date/datetimerangeonlydistance.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/pipe/date/minutesstring.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/pipe/date/systemdatetotargetdate.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/pipe/date/targetdatetosystemdate.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/pipe/date/timedistance.pipe.mjs +7 -7
- package/{esm2020 → esm2022}/lib/pipe/date/timezoneabbreviation.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/pipe/date/tojsdate.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/pipe/date/tominutes.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/pipe/misc/misc.pipe.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/pipe/misc/prettyjson.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/pipe/pipe.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/pipe/value/dollar.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/pipe/value/getvalue.pipe.mjs +7 -7
- package/{esm2020 → esm2022}/lib/pipe/value/value.pipe.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/router/anchor/anchor.directive.mjs +4 -4
- package/esm2022/lib/router/anchor/clickable.mjs +18 -0
- package/{esm2020 → esm2022}/lib/router/router/provider/angular/angular.router.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/router/router/provider/angular/angular.router.service.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/router/router/provider/uirouter/uirouter.router.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/router/router/provider/uirouter/uirouter.router.service.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/router/router/transition/transition.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/router/router/transition/transition.watcher.directive.mjs +9 -9
- package/{esm2020 → esm2022}/lib/storage/storage.accessor.simple.factory.mjs +4 -4
- package/esm2022/lib/storage/storage.accessor.simple.mjs +163 -0
- package/{esm2020 → esm2022}/lib/storage/storage.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/subscription/subscription.directive.mjs +7 -7
- package/{esm2020 → esm2022}/lib/view/if.directive.mjs +4 -4
- package/{fesm2020 → fesm2022}/dereekb-dbx-core.mjs +524 -528
- package/fesm2022/dereekb-dbx-core.mjs.map +1 -0
- package/lib/action/action.d.ts +1 -1
- package/lib/action/action.handler.d.ts +3 -3
- package/lib/action/action.store.source.d.ts +2 -2
- package/lib/action/directive/auto/action.automodify.directive.d.ts +1 -1
- package/lib/action/directive/auto/action.autotrigger.directive.d.ts +1 -1
- package/lib/action/directive/context/action.directive.d.ts +1 -1
- package/lib/action/directive/context/action.source.directive.d.ts +1 -1
- package/lib/action/directive/debug/action.logger.directive.d.ts +1 -1
- package/lib/action/directive/map/action.map.d.ts +1 -1
- package/lib/action/directive/map/action.map.directive.d.ts +1 -1
- package/lib/action/directive/map/action.map.key.directive.d.ts +1 -1
- package/lib/action/directive/map/action.map.source.directive.d.ts +1 -1
- package/lib/action/directive/map/action.map.working.disable.directive.d.ts +1 -1
- package/lib/action/directive/state/action.disabled.directive.d.ts +1 -1
- package/lib/action/directive/state/action.disableonsuccess.directive.d.ts +1 -1
- package/lib/action/directive/state/action.enforce.modified.directive.d.ts +1 -1
- package/lib/action/directive/state/action.handler.directive.d.ts +2 -2
- package/lib/action/directive/state/action.presuccess.directive.d.ts +1 -1
- package/lib/action/directive/state/action.success.directive.d.ts +1 -1
- package/lib/action/directive/state/action.success.handler.directive.d.ts +2 -2
- package/lib/action/directive/state/action.value.directive.d.ts +1 -1
- package/lib/action/directive/state/action.value.stream.directive.d.ts +1 -1
- package/lib/action/directive/state/action.value.trigger.directive.d.ts +2 -2
- package/lib/action/directive/state/action.value.trigger.instance.d.ts +1 -1
- package/lib/action/directive/state/action.working.component.d.ts +1 -1
- package/lib/auth/auth.role.any.directive.d.ts +1 -1
- package/lib/auth/auth.role.has.directive.d.ts +1 -1
- package/lib/auth/auth.role.not.directive.d.ts +1 -1
- package/lib/auth/auth.user.d.ts +3 -3
- package/lib/auth/router/provider/uirouter/hook.d.ts +4 -4
- package/lib/auth/router/provider/uirouter/state.hook.d.ts +1 -1
- package/lib/auth/state/reducer/index.d.ts +1 -1
- package/lib/auth/state/state.d.ts +1 -1
- package/lib/button/action/action.button.directive.d.ts +1 -1
- package/lib/button/action/action.button.trigger.directive.d.ts +1 -1
- package/lib/button/button.d.ts +1 -1
- package/lib/button/button.directive.d.ts +2 -2
- package/lib/button/button.loading.directive.d.ts +1 -1
- package/lib/button/router/button.segue.directive.d.ts +1 -1
- package/lib/context/context.d.ts +2 -6
- package/lib/context/context.directive.d.ts +1 -1
- package/lib/context/state/reducer/index.d.ts +1 -1
- package/lib/context/state/state.d.ts +1 -1
- package/lib/filter/filter.abstract.connector.directive.d.ts +1 -1
- package/lib/filter/filter.abstract.source.directive.d.ts +1 -1
- package/lib/filter/filter.connect.source.directive.d.ts +1 -1
- package/lib/filter/filter.connector.directive.d.ts +1 -1
- package/lib/filter/filter.map.connector.directive.d.ts +1 -1
- package/lib/filter/filter.map.directive.d.ts +1 -1
- package/lib/filter/filter.map.instance.directive.d.ts +1 -1
- package/lib/filter/filter.map.source.directive.d.ts +1 -1
- package/lib/filter/filter.preset.d.ts +1 -1
- package/lib/filter/filter.source.directive.d.ts +1 -1
- package/lib/injection/injection.array.component.d.ts +1 -1
- package/lib/injection/injection.component.d.ts +1 -1
- package/lib/injection/injection.context.directive.d.ts +1 -1
- package/lib/injection/injection.context.forward.directive.d.ts +1 -1
- package/lib/injection/injection.d.ts +2 -2
- package/lib/injection/injection.directive.d.ts +1 -1
- package/lib/router/anchor/anchor.d.ts +2 -2
- package/lib/router/anchor/anchor.directive.d.ts +1 -1
- package/lib/router/anchor/mousable.d.ts +1 -1
- package/lib/router/router/service/router.go.d.ts +1 -1
- package/lib/router/router/service/router.service.util.d.ts +1 -1
- package/lib/router/router/transition/transition.directive.d.ts +1 -1
- package/lib/router/router/transition/transition.watcher.directive.d.ts +1 -1
- package/lib/router/segue.d.ts +2 -2
- package/lib/subscription/subscription.directive.d.ts +2 -2
- package/lib/view/if.directive.d.ts +1 -1
- package/package.json +18 -24
- package/esm2020/lib/action/directive/auto/action.autotrigger.directive.mjs +0 -132
- package/esm2020/lib/action/directive/state/action.value.stream.directive.mjs +0 -79
- package/esm2020/lib/button/button.directive.mjs +0 -125
- package/esm2020/lib/context/context.mjs +0 -26
- package/esm2020/lib/injection/injection.instance.mjs +0 -117
- package/esm2020/lib/router/anchor/clickable.mjs +0 -18
- package/esm2020/lib/storage/storage.accessor.simple.mjs +0 -163
- package/fesm2015/dereekb-dbx-core.mjs +0 -5506
- package/fesm2015/dereekb-dbx-core.mjs.map +0 -1
- package/fesm2020/dereekb-dbx-core.mjs.map +0 -1
- /package/{esm2020 → esm2022}/dereekb-dbx-core.mjs +0 -0
- /package/{esm2020 → esm2022}/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/action/action.handler.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/action/action.holder.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/action/action.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/action/action.reference.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/action/action.store.source.provide.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/action/directive/auto/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/action/directive/context/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/action/directive/debug/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/action/directive/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/action/directive/map/action.map.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/action/directive/map/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/action/directive/state/action.value.trigger.instance.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/action/directive/state/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/action/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/auth/auth.user.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/auth/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/auth/router/auth.router.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/auth/router/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/auth/router/provider/uirouter/auth.hook.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/auth/router/provider/uirouter/hook.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/auth/router/provider/uirouter/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/auth/router/provider/uirouter/redirect.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/auth/router/provider/uirouter/role.hook.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/auth/router/provider/uirouter/state.hook.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/auth/router/state/effect/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/auth/router/state/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/auth/service/auth.service.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/auth/service/auth.service.rxjs.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/auth/service/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/auth/state/action/auth.action.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/auth/state/action/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/auth/state/action/user.action.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/auth/state/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/auth/state/reducer/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/auth/state/reducer/user.reducer.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/auth/state/state.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/button/action/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/button/button.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/button/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/button/router/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/context/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/context/state/action/data.action.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/context/state/action/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/context/state/effect/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/context/state/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/context/state/reducer/data.reducer.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/context/state/reducer/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/context/state/state.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/filter/filter.content.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/filter/filter.preset.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/filter/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/injection/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/injection/injection.array.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/injection/injection.context.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/injection/injection.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/injection/injection.rxjs.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/ngrx/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/pipe/async/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/pipe/date/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/pipe/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/pipe/misc/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/pipe/value/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/router/anchor/anchor.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/router/anchor/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/router/anchor/mousable.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/router/auth/hook/id.hook.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/router/auth/hook/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/router/auth/hook/uid.hook.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/router/auth/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/router/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/router/router/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/router/router/provider/angular/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/router/router/provider/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/router/router/provider/uirouter/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/router/router/service/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/router/router/service/router.go.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/router/router/service/router.service.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/router/router/service/router.service.rxjs.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/router/router/service/router.service.util.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/router/router/service/router.transition.service.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/router/router/transition/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/router/router/transition/transition.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/router/router/transition/transition.rxjs.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/router/router/util/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/router/router/util/route.default.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/router/router/util/route.reader.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/router/segue.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/storage/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/storage/storage.accessor.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/storage/storage.accessor.string.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/storage/storage.di.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/storage/storage.object.localstorage.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/storage/storage.object.memory.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/subscription/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/util/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/util/view.mjs +0 -0
- /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
|