taon 18.0.34 → 19.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/README.md +175 -175
- package/assets/shared/shared_folder_info.txt +1 -1
- package/bin/start.js +279 -279
- package/bin/taon +6 -6
- package/bin/taon-debug +5 -5
- package/bin/taon-debug-brk +5 -5
- package/browser/README.md +24 -24
- package/browser/fesm2022/taon.mjs +68 -85
- package/browser/fesm2022/taon.mjs.map +1 -1
- package/browser/lib/base-classes/base-context.d.ts +6 -6
- package/browser/lib/base-classes/base.d.ts +6 -6
- package/browser/lib/index.d.ts +6 -32
- package/browser/lib/ui/taon-progress-bar/taon-progress-bar.component.d.ts +1 -3
- package/browser/lib/ui/taon-progress-bar/taon-progress-bar.module.d.ts +1 -2
- package/cli.js.map +1 -1
- package/client/README.md +24 -24
- package/client/fesm2022/taon.mjs +68 -85
- package/client/fesm2022/taon.mjs.map +1 -1
- package/client/lib/base-classes/base-context.d.ts +6 -6
- package/client/lib/base-classes/base.d.ts +6 -6
- package/client/lib/index.d.ts +6 -32
- package/client/lib/ui/taon-progress-bar/taon-progress-bar.component.d.ts +1 -3
- package/client/lib/ui/taon-progress-bar/taon-progress-bar.module.d.ts +1 -2
- package/index.js.map +1 -1
- package/lib/base-classes/base-abstract-entity.js.map +1 -1
- package/lib/base-classes/base-class.js.map +1 -1
- package/lib/base-classes/base-context.d.ts +6 -6
- package/lib/base-classes/base-context.js.map +1 -1
- package/lib/base-classes/base-controller.js.map +1 -1
- package/lib/base-classes/base-crud-controller.js.map +1 -1
- package/lib/base-classes/base-entity.js.map +1 -1
- package/lib/base-classes/base-injector.js.map +1 -1
- package/lib/base-classes/base-migration.js.map +1 -1
- package/lib/base-classes/base-provider.js.map +1 -1
- package/lib/base-classes/base-repository.js.map +1 -1
- package/lib/base-classes/base-subscriber-for-entity.js.map +1 -1
- package/lib/base-classes/base-subscriber.d.ts +4 -0
- package/lib/base-classes/base-subscriber.js +25 -0
- package/lib/base-classes/base-subscriber.js.map +1 -0
- package/lib/base-classes/base.d.ts +6 -6
- package/lib/base-classes/base.js.map +1 -1
- package/lib/build-info._auto-generated_.js.map +1 -1
- package/lib/constants.js.map +1 -1
- package/lib/context-db-migrations.js.map +1 -1
- package/lib/create-context.js.map +1 -1
- package/lib/decorators/classes/controller-decorator.js.map +1 -1
- package/lib/decorators/classes/entity-decorator.js.map +1 -1
- package/lib/decorators/classes/migration-decorator.js.map +1 -1
- package/lib/decorators/classes/provider-decorator.js.map +1 -1
- package/lib/decorators/classes/repository-decorator.js.map +1 -1
- package/lib/decorators/classes/subscriber-decorator.js.map +1 -1
- package/lib/decorators/http/http-decorators.js.map +1 -1
- package/lib/decorators/http/http-methods-decorators.js.map +1 -1
- package/lib/decorators/http/http-params-decorators.js.map +1 -1
- package/lib/dependency-injection/di-container.js.map +1 -1
- package/lib/endpoint-context.js.map +1 -1
- package/lib/entity-process.js.map +1 -1
- package/lib/env.js.map +1 -1
- package/lib/formly/formly-group-wrapper-component.js +1 -0
- package/lib/formly/formly-group-wrapper-component.js.map +1 -1
- package/lib/formly/formly-repeat-component.js +1 -0
- package/lib/formly/formly-repeat-component.js.map +1 -1
- package/lib/formly/formly.models.js.map +1 -1
- package/lib/formly/fromly.js.map +1 -1
- package/lib/formly/type-from-entity.js.map +1 -1
- package/lib/get-response-value.js.map +1 -1
- package/lib/helpers/class-helpers.js +2 -2
- package/lib/helpers/class-helpers.js.map +1 -1
- package/lib/helpers/taon-helpers.js.map +1 -1
- package/lib/index._auto-generated_.js.map +1 -1
- package/lib/index.d.ts +6 -32
- package/lib/index.js.map +1 -1
- package/lib/inject.js.map +1 -1
- package/lib/models.js.map +1 -1
- package/lib/orm.js.map +1 -1
- package/lib/realtime/realtime-client.js.map +1 -1
- package/lib/realtime/realtime-core.js.map +1 -1
- package/lib/realtime/realtime-server.js.map +1 -1
- package/lib/realtime/realtime-strategy/index.js.map +1 -1
- package/lib/realtime/realtime-strategy/realtime-abstract-mock.d.ts +10 -0
- package/lib/realtime/realtime-strategy/realtime-abstract-mock.js +214 -0
- package/lib/realtime/realtime-strategy/realtime-abstract-mock.js.map +1 -0
- package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/index.d.ts +0 -0
- package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/index.js +5 -0
- package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/index.js.map +1 -0
- package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-namespace.d.ts +22 -0
- package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-namespace.js +139 -0
- package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-namespace.js.map +1 -0
- package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-wrapper.d.ts +16 -0
- package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-wrapper.js +68 -0
- package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-wrapper.js.map +1 -0
- package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-namespace.d.ts +10 -0
- package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-namespace.js +56 -0
- package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-namespace.js.map +1 -0
- package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-wrapper.d.ts +10 -0
- package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-wrapper.js +50 -0
- package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-wrapper.js.map +1 -0
- package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc.models.d.ts +13 -0
- package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc.models.js +3 -0
- package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc.models.js.map +1 -0
- package/lib/realtime/realtime-strategy/realtime-strategy-ipc.js.map +1 -1
- package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/index.d.ts +2 -0
- package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/index.js +6 -0
- package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/index.js.map +1 -0
- package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-client.d.ts +16 -0
- package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-client.js +54 -0
- package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-client.js.map +1 -0
- package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-namespaces.d.ts +17 -0
- package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-namespaces.js +52 -0
- package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-namespaces.js.map +1 -0
- package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-server.d.ts +11 -0
- package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-server.js +39 -0
- package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-server.js.map +1 -0
- package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-socket.d.ts +13 -0
- package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-socket.js +46 -0
- package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-socket.js.map +1 -0
- package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock.models.d.ts +11 -0
- package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock.models.js +3 -0
- package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock.models.js.map +1 -0
- package/lib/realtime/realtime-strategy/realtime-strategy-mock.js.map +1 -1
- package/lib/realtime/realtime-strategy/realtime-strategy-socket-io.js.map +1 -1
- package/lib/realtime/realtime-strategy/realtime-strategy.js.map +1 -1
- package/lib/realtime/realtime-subs-manager.js.map +1 -1
- package/lib/realtime/realtime.models.js.map +1 -1
- package/lib/storage.js.map +1 -1
- package/lib/symbols.js.map +1 -1
- package/lib/ui/directives/firedev-inject-html.directive.d.ts +6 -0
- package/lib/ui/directives/firedev-long-press.directive.d.ts +22 -0
- package/lib/ui/directives/index.js +2 -2
- package/lib/ui/directives/index.js.map +1 -1
- package/lib/ui/directives/view-mode.js.map +1 -1
- package/lib/ui/index.js +2 -2
- package/lib/ui/index.js.map +1 -1
- package/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.d.ts +2 -0
- package/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.js +5 -0
- package/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.js.map +1 -0
- package/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.d.ts +29 -0
- package/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.module.d.ts +2 -0
- package/lib/ui/taon-admin-mode-configuration/components/taon-db-admin/index.d.ts +1 -0
- package/lib/ui/taon-admin-mode-configuration/components/taon-db-admin/index.js +5 -0
- package/lib/ui/taon-admin-mode-configuration/components/taon-db-admin/index.js.map +1 -0
- package/lib/ui/taon-admin-mode-configuration/components/taon-db-admin/taon-db-admin.component.d.ts +8 -0
- package/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.d.ts +2 -0
- package/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.js +5 -0
- package/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.js.map +1 -0
- package/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.d.ts +13 -0
- package/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.module.d.ts +2 -0
- package/lib/ui/taon-admin-mode-configuration/index.js +2 -2
- package/lib/ui/taon-admin-mode-configuration/index.js.map +1 -1
- package/lib/ui/taon-admin-mode-configuration/models/taon-admin-mode-tabs.d.ts +5 -0
- package/lib/ui/taon-admin-mode-configuration/models/taon-admin-mode-tabs.js +3 -0
- package/lib/ui/taon-admin-mode-configuration/models/taon-admin-mode-tabs.js.map +1 -0
- package/lib/ui/taon-admin-mode-configuration/taon-admin-control.service.d.ts +14 -0
- package/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.module.d.ts +2 -0
- package/lib/ui/taon-admin-mode-configuration/taon-admin.models.js.map +1 -1
- package/lib/ui/taon-github-fork-me-corner/index.js +2 -2
- package/lib/ui/taon-github-fork-me-corner/index.js.map +1 -1
- package/lib/ui/taon-github-fork-me-ribbon/index.js +2 -2
- package/lib/ui/taon-github-fork-me-ribbon/index.js.map +1 -1
- package/lib/ui/taon-notifications/index.js.map +1 -1
- package/lib/ui/taon-notifications/taon-notifications.models.js +2 -2
- package/lib/ui/taon-notifications/taon-notifications.models.js.map +1 -1
- package/lib/ui/taon-progress-bar/index.js +2 -2
- package/lib/ui/taon-progress-bar/index.js.map +1 -1
- package/lib/ui/taon-progress-bar/taon-progress-bar.component.d.ts +1 -3
- package/lib/ui/taon-session-passcode/index.js +2 -2
- package/lib/ui/taon-session-passcode/index.js.map +1 -1
- package/lib/ui/taon-table/index.js +2 -2
- package/lib/ui/taon-table/index.js.map +1 -1
- package/lib/ui/taon.models.js.map +1 -1
- package/lib/ui/toan-full-material.module.d.ts +2 -0
- package/lib/validators.js.map +1 -1
- package/migrations/index.js.map +1 -1
- package/migrations/migrations_index._auto-generated_.js.map +1 -1
- package/old-app .js +1 -0
- package/old-app .js.map +1 -1
- package/package.json +3 -3
- package/playground.js.map +1 -1
- package/taon.jsonc +39 -39
- package/tmp-environment.json +3 -3
- package/websql/README.md +24 -24
- package/websql/fesm2022/taon.mjs +68 -85
- package/websql/fesm2022/taon.mjs.map +1 -1
- package/websql/lib/base-classes/base-context.d.ts +6 -6
- package/websql/lib/base-classes/base.d.ts +6 -6
- package/websql/lib/index.d.ts +6 -32
- package/websql/lib/ui/taon-progress-bar/taon-progress-bar.component.d.ts +1 -3
- package/websql/lib/ui/taon-progress-bar/taon-progress-bar.module.d.ts +1 -2
- package/browser/esm2022/lib/base-classes/base-abstract-entity.mjs +0 -18
- package/browser/esm2022/lib/base-classes/base-class.mjs +0 -17
- package/browser/esm2022/lib/base-classes/base-context.mjs +0 -14
- package/browser/esm2022/lib/base-classes/base-controller.mjs +0 -19
- package/browser/esm2022/lib/base-classes/base-crud-controller.mjs +0 -279
- package/browser/esm2022/lib/base-classes/base-entity.mjs +0 -18
- package/browser/esm2022/lib/base-classes/base-injector.mjs +0 -167
- package/browser/esm2022/lib/base-classes/base-migration.mjs +0 -23
- package/browser/esm2022/lib/base-classes/base-provider.mjs +0 -6
- package/browser/esm2022/lib/base-classes/base-repository.mjs +0 -514
- package/browser/esm2022/lib/base-classes/base-subscriber-for-entity.mjs +0 -156
- package/browser/esm2022/lib/base-classes/base.mjs +0 -26
- package/browser/esm2022/lib/constants.mjs +0 -4
- package/browser/esm2022/lib/context-db-migrations.mjs +0 -425
- package/browser/esm2022/lib/create-context.mjs +0 -127
- package/browser/esm2022/lib/decorators/classes/controller-decorator.mjs +0 -18
- package/browser/esm2022/lib/decorators/classes/entity-decorator.mjs +0 -30
- package/browser/esm2022/lib/decorators/classes/migration-decorator.mjs +0 -18
- package/browser/esm2022/lib/decorators/classes/provider-decorator.mjs +0 -18
- package/browser/esm2022/lib/decorators/classes/repository-decorator.mjs +0 -18
- package/browser/esm2022/lib/decorators/classes/subscriber-decorator.mjs +0 -18
- package/browser/esm2022/lib/decorators/http/http-decorators.mjs +0 -24
- package/browser/esm2022/lib/decorators/http/http-methods-decorators.mjs +0 -78
- package/browser/esm2022/lib/decorators/http/http-params-decorators.mjs +0 -47
- package/browser/esm2022/lib/dependency-injection/di-container.mjs +0 -32
- package/browser/esm2022/lib/endpoint-context.mjs +0 -1705
- package/browser/esm2022/lib/entity-process.mjs +0 -198
- package/browser/esm2022/lib/env.mjs +0 -6
- package/browser/esm2022/lib/get-response-value.mjs +0 -27
- package/browser/esm2022/lib/helpers/class-helpers.mjs +0 -183
- package/browser/esm2022/lib/helpers/taon-helpers.mjs +0 -120
- package/browser/esm2022/lib/index.mjs +0 -70
- package/browser/esm2022/lib/inject.mjs +0 -36
- package/browser/esm2022/lib/models.mjs +0 -106
- package/browser/esm2022/lib/orm.mjs +0 -6
- package/browser/esm2022/lib/realtime/realtime-client.mjs +0 -141
- package/browser/esm2022/lib/realtime/realtime-core.mjs +0 -62
- package/browser/esm2022/lib/realtime/realtime-server.mjs +0 -292
- package/browser/esm2022/lib/realtime/realtime-strategy/index.mjs +0 -7
- package/browser/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc.mjs +0 -218
- package/browser/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock.mjs +0 -224
- package/browser/esm2022/lib/realtime/realtime-strategy/realtime-strategy-socket-io.mjs +0 -29
- package/browser/esm2022/lib/realtime/realtime-strategy/realtime-strategy.mjs +0 -14
- package/browser/esm2022/lib/realtime/realtime-subs-manager.mjs +0 -81
- package/browser/esm2022/lib/realtime/realtime.models.mjs +0 -4
- package/browser/esm2022/lib/storage.mjs +0 -5
- package/browser/esm2022/lib/symbols.mjs +0 -97
- package/browser/esm2022/lib/ui/directives/index.mjs +0 -6
- package/browser/esm2022/lib/ui/directives/safe.pipe.mjs +0 -43
- package/browser/esm2022/lib/ui/directives/taon-inject-html.directive.mjs +0 -24
- package/browser/esm2022/lib/ui/directives/taon-long-press.directive.mjs +0 -120
- package/browser/esm2022/lib/ui/index.mjs +0 -12
- package/browser/esm2022/lib/ui/taon-admin-mode-configuration/index.mjs +0 -4
- package/browser/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.mjs +0 -194
- package/browser/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin.service.mjs +0 -55
- package/browser/esm2022/lib/ui/taon-full-material.module.mjs +0 -179
- package/browser/esm2022/lib/ui/taon-github-fork-me-corner/index.mjs +0 -5
- package/browser/esm2022/lib/ui/taon-github-fork-me-corner/taon-github-fork-me-corner.component.mjs +0 -18
- package/browser/esm2022/lib/ui/taon-github-fork-me-corner/taon-github-fork-me-corner.module.mjs +0 -21
- package/browser/esm2022/lib/ui/taon-notifications/index.mjs +0 -7
- package/browser/esm2022/lib/ui/taon-notifications/taon-notifications.component.mjs +0 -25
- package/browser/esm2022/lib/ui/taon-notifications/taon-notifications.models.mjs +0 -5
- package/browser/esm2022/lib/ui/taon-notifications/taon-notifications.module.mjs +0 -21
- package/browser/esm2022/lib/ui/taon-notifications/taon-notifications.service.mjs +0 -48
- package/browser/esm2022/lib/ui/taon-progress-bar/index.mjs +0 -5
- package/browser/esm2022/lib/ui/taon-progress-bar/taon-progress-bar.component.mjs +0 -98
- package/browser/esm2022/lib/ui/taon-progress-bar/taon-progress-bar.module.mjs +0 -22
- package/browser/esm2022/lib/ui/taon-session-passcode/index.mjs +0 -4
- package/browser/esm2022/lib/ui/taon-session-passcode/taon-session-passcode.component.mjs +0 -120
- package/browser/esm2022/lib/ui/taon-table/index.mjs +0 -5
- package/browser/esm2022/lib/ui/taon-table/taon-table.component.mjs +0 -160
- package/browser/esm2022/lib/ui/taon-table/taon-table.module.mjs +0 -57
- package/browser/esm2022/lib/validators.mjs +0 -76
- package/browser/esm2022/public-api.mjs +0 -2
- package/browser/esm2022/taon.mjs +0 -5
- package/client/esm2022/lib/base-classes/base-abstract-entity.mjs +0 -18
- package/client/esm2022/lib/base-classes/base-class.mjs +0 -17
- package/client/esm2022/lib/base-classes/base-context.mjs +0 -14
- package/client/esm2022/lib/base-classes/base-controller.mjs +0 -19
- package/client/esm2022/lib/base-classes/base-crud-controller.mjs +0 -279
- package/client/esm2022/lib/base-classes/base-entity.mjs +0 -18
- package/client/esm2022/lib/base-classes/base-injector.mjs +0 -167
- package/client/esm2022/lib/base-classes/base-migration.mjs +0 -23
- package/client/esm2022/lib/base-classes/base-provider.mjs +0 -6
- package/client/esm2022/lib/base-classes/base-repository.mjs +0 -514
- package/client/esm2022/lib/base-classes/base-subscriber-for-entity.mjs +0 -156
- package/client/esm2022/lib/base-classes/base.mjs +0 -26
- package/client/esm2022/lib/constants.mjs +0 -4
- package/client/esm2022/lib/context-db-migrations.mjs +0 -425
- package/client/esm2022/lib/create-context.mjs +0 -127
- package/client/esm2022/lib/decorators/classes/controller-decorator.mjs +0 -18
- package/client/esm2022/lib/decorators/classes/entity-decorator.mjs +0 -30
- package/client/esm2022/lib/decorators/classes/migration-decorator.mjs +0 -18
- package/client/esm2022/lib/decorators/classes/provider-decorator.mjs +0 -18
- package/client/esm2022/lib/decorators/classes/repository-decorator.mjs +0 -18
- package/client/esm2022/lib/decorators/classes/subscriber-decorator.mjs +0 -18
- package/client/esm2022/lib/decorators/http/http-decorators.mjs +0 -24
- package/client/esm2022/lib/decorators/http/http-methods-decorators.mjs +0 -78
- package/client/esm2022/lib/decorators/http/http-params-decorators.mjs +0 -47
- package/client/esm2022/lib/dependency-injection/di-container.mjs +0 -32
- package/client/esm2022/lib/endpoint-context.mjs +0 -1705
- package/client/esm2022/lib/entity-process.mjs +0 -198
- package/client/esm2022/lib/env.mjs +0 -6
- package/client/esm2022/lib/get-response-value.mjs +0 -27
- package/client/esm2022/lib/helpers/class-helpers.mjs +0 -183
- package/client/esm2022/lib/helpers/taon-helpers.mjs +0 -120
- package/client/esm2022/lib/index.mjs +0 -70
- package/client/esm2022/lib/inject.mjs +0 -36
- package/client/esm2022/lib/models.mjs +0 -106
- package/client/esm2022/lib/orm.mjs +0 -6
- package/client/esm2022/lib/realtime/realtime-client.mjs +0 -141
- package/client/esm2022/lib/realtime/realtime-core.mjs +0 -62
- package/client/esm2022/lib/realtime/realtime-server.mjs +0 -292
- package/client/esm2022/lib/realtime/realtime-strategy/index.mjs +0 -7
- package/client/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc.mjs +0 -218
- package/client/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock.mjs +0 -224
- package/client/esm2022/lib/realtime/realtime-strategy/realtime-strategy-socket-io.mjs +0 -29
- package/client/esm2022/lib/realtime/realtime-strategy/realtime-strategy.mjs +0 -14
- package/client/esm2022/lib/realtime/realtime-subs-manager.mjs +0 -81
- package/client/esm2022/lib/realtime/realtime.models.mjs +0 -4
- package/client/esm2022/lib/storage.mjs +0 -5
- package/client/esm2022/lib/symbols.mjs +0 -97
- package/client/esm2022/lib/ui/directives/index.mjs +0 -6
- package/client/esm2022/lib/ui/directives/safe.pipe.mjs +0 -43
- package/client/esm2022/lib/ui/directives/taon-inject-html.directive.mjs +0 -24
- package/client/esm2022/lib/ui/directives/taon-long-press.directive.mjs +0 -120
- package/client/esm2022/lib/ui/index.mjs +0 -12
- package/client/esm2022/lib/ui/taon-admin-mode-configuration/index.mjs +0 -4
- package/client/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.mjs +0 -194
- package/client/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin.service.mjs +0 -55
- package/client/esm2022/lib/ui/taon-full-material.module.mjs +0 -179
- package/client/esm2022/lib/ui/taon-github-fork-me-corner/index.mjs +0 -5
- package/client/esm2022/lib/ui/taon-github-fork-me-corner/taon-github-fork-me-corner.component.mjs +0 -18
- package/client/esm2022/lib/ui/taon-github-fork-me-corner/taon-github-fork-me-corner.module.mjs +0 -21
- package/client/esm2022/lib/ui/taon-notifications/index.mjs +0 -7
- package/client/esm2022/lib/ui/taon-notifications/taon-notifications.component.mjs +0 -25
- package/client/esm2022/lib/ui/taon-notifications/taon-notifications.models.mjs +0 -5
- package/client/esm2022/lib/ui/taon-notifications/taon-notifications.module.mjs +0 -21
- package/client/esm2022/lib/ui/taon-notifications/taon-notifications.service.mjs +0 -48
- package/client/esm2022/lib/ui/taon-progress-bar/index.mjs +0 -5
- package/client/esm2022/lib/ui/taon-progress-bar/taon-progress-bar.component.mjs +0 -98
- package/client/esm2022/lib/ui/taon-progress-bar/taon-progress-bar.module.mjs +0 -22
- package/client/esm2022/lib/ui/taon-session-passcode/index.mjs +0 -4
- package/client/esm2022/lib/ui/taon-session-passcode/taon-session-passcode.component.mjs +0 -120
- package/client/esm2022/lib/ui/taon-table/index.mjs +0 -5
- package/client/esm2022/lib/ui/taon-table/taon-table.component.mjs +0 -160
- package/client/esm2022/lib/ui/taon-table/taon-table.module.mjs +0 -57
- package/client/esm2022/lib/validators.mjs +0 -76
- package/client/esm2022/public-api.mjs +0 -2
- package/client/esm2022/taon.mjs +0 -5
- package/websql/esm2022/lib/base-classes/base-abstract-entity.mjs +0 -25
- package/websql/esm2022/lib/base-classes/base-class.mjs +0 -17
- package/websql/esm2022/lib/base-classes/base-context.mjs +0 -14
- package/websql/esm2022/lib/base-classes/base-controller.mjs +0 -19
- package/websql/esm2022/lib/base-classes/base-crud-controller.mjs +0 -238
- package/websql/esm2022/lib/base-classes/base-entity.mjs +0 -16
- package/websql/esm2022/lib/base-classes/base-injector.mjs +0 -167
- package/websql/esm2022/lib/base-classes/base-migration.mjs +0 -23
- package/websql/esm2022/lib/base-classes/base-provider.mjs +0 -6
- package/websql/esm2022/lib/base-classes/base-repository.mjs +0 -431
- package/websql/esm2022/lib/base-classes/base-subscriber-for-entity.mjs +0 -156
- package/websql/esm2022/lib/base-classes/base.mjs +0 -26
- package/websql/esm2022/lib/constants.mjs +0 -4
- package/websql/esm2022/lib/context-db-migrations.mjs +0 -274
- package/websql/esm2022/lib/create-context.mjs +0 -126
- package/websql/esm2022/lib/decorators/classes/controller-decorator.mjs +0 -18
- package/websql/esm2022/lib/decorators/classes/entity-decorator.mjs +0 -28
- package/websql/esm2022/lib/decorators/classes/migration-decorator.mjs +0 -18
- package/websql/esm2022/lib/decorators/classes/provider-decorator.mjs +0 -18
- package/websql/esm2022/lib/decorators/classes/repository-decorator.mjs +0 -18
- package/websql/esm2022/lib/decorators/classes/subscriber-decorator.mjs +0 -18
- package/websql/esm2022/lib/decorators/http/http-decorators.mjs +0 -24
- package/websql/esm2022/lib/decorators/http/http-methods-decorators.mjs +0 -78
- package/websql/esm2022/lib/decorators/http/http-params-decorators.mjs +0 -47
- package/websql/esm2022/lib/dependency-injection/di-container.mjs +0 -32
- package/websql/esm2022/lib/endpoint-context.mjs +0 -1586
- package/websql/esm2022/lib/entity-process.mjs +0 -198
- package/websql/esm2022/lib/env.mjs +0 -6
- package/websql/esm2022/lib/get-response-value.mjs +0 -25
- package/websql/esm2022/lib/helpers/class-helpers.mjs +0 -183
- package/websql/esm2022/lib/helpers/taon-helpers.mjs +0 -120
- package/websql/esm2022/lib/index.mjs +0 -72
- package/websql/esm2022/lib/inject.mjs +0 -36
- package/websql/esm2022/lib/models.mjs +0 -97
- package/websql/esm2022/lib/orm.mjs +0 -65
- package/websql/esm2022/lib/realtime/realtime-client.mjs +0 -141
- package/websql/esm2022/lib/realtime/realtime-core.mjs +0 -62
- package/websql/esm2022/lib/realtime/realtime-server.mjs +0 -176
- package/websql/esm2022/lib/realtime/realtime-strategy/index.mjs +0 -7
- package/websql/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc.mjs +0 -218
- package/websql/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock.mjs +0 -224
- package/websql/esm2022/lib/realtime/realtime-strategy/realtime-strategy-socket-io.mjs +0 -29
- package/websql/esm2022/lib/realtime/realtime-strategy/realtime-strategy.mjs +0 -14
- package/websql/esm2022/lib/realtime/realtime-subs-manager.mjs +0 -81
- package/websql/esm2022/lib/realtime/realtime.models.mjs +0 -4
- package/websql/esm2022/lib/storage.mjs +0 -5
- package/websql/esm2022/lib/symbols.mjs +0 -97
- package/websql/esm2022/lib/ui/directives/index.mjs +0 -6
- package/websql/esm2022/lib/ui/directives/safe.pipe.mjs +0 -43
- package/websql/esm2022/lib/ui/directives/taon-inject-html.directive.mjs +0 -24
- package/websql/esm2022/lib/ui/directives/taon-long-press.directive.mjs +0 -120
- package/websql/esm2022/lib/ui/index.mjs +0 -12
- package/websql/esm2022/lib/ui/taon-admin-mode-configuration/index.mjs +0 -4
- package/websql/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.mjs +0 -194
- package/websql/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin.service.mjs +0 -55
- package/websql/esm2022/lib/ui/taon-full-material.module.mjs +0 -179
- package/websql/esm2022/lib/ui/taon-github-fork-me-corner/index.mjs +0 -5
- package/websql/esm2022/lib/ui/taon-github-fork-me-corner/taon-github-fork-me-corner.component.mjs +0 -18
- package/websql/esm2022/lib/ui/taon-github-fork-me-corner/taon-github-fork-me-corner.module.mjs +0 -21
- package/websql/esm2022/lib/ui/taon-notifications/index.mjs +0 -7
- package/websql/esm2022/lib/ui/taon-notifications/taon-notifications.component.mjs +0 -25
- package/websql/esm2022/lib/ui/taon-notifications/taon-notifications.models.mjs +0 -5
- package/websql/esm2022/lib/ui/taon-notifications/taon-notifications.module.mjs +0 -21
- package/websql/esm2022/lib/ui/taon-notifications/taon-notifications.service.mjs +0 -48
- package/websql/esm2022/lib/ui/taon-progress-bar/index.mjs +0 -5
- package/websql/esm2022/lib/ui/taon-progress-bar/taon-progress-bar.component.mjs +0 -50
- package/websql/esm2022/lib/ui/taon-progress-bar/taon-progress-bar.module.mjs +0 -22
- package/websql/esm2022/lib/ui/taon-session-passcode/index.mjs +0 -4
- package/websql/esm2022/lib/ui/taon-session-passcode/taon-session-passcode.component.mjs +0 -120
- package/websql/esm2022/lib/ui/taon-table/index.mjs +0 -5
- package/websql/esm2022/lib/ui/taon-table/taon-table.component.mjs +0 -160
- package/websql/esm2022/lib/ui/taon-table/taon-table.module.mjs +0 -57
- package/websql/esm2022/lib/validators.mjs +0 -76
- package/websql/esm2022/public-api.mjs +0 -2
- package/websql/esm2022/taon.mjs +0 -5
|
@@ -1,238 +0,0 @@
|
|
|
1
|
-
import { __decorate, __metadata, __param } from "tslib";
|
|
2
|
-
import { Symbols } from '../symbols';
|
|
3
|
-
import { BaseController } from './base-controller';
|
|
4
|
-
import { GET, PUT, DELETE, POST, PATCH, } from '../decorators/http/http-methods-decorators'; /* */
|
|
5
|
-
/* */
|
|
6
|
-
/* */
|
|
7
|
-
/* */
|
|
8
|
-
/* */
|
|
9
|
-
/* */
|
|
10
|
-
/* */
|
|
11
|
-
import { Query, Path, Body } from '../decorators/http/http-params-decorators';
|
|
12
|
-
import { Models } from '../models';
|
|
13
|
-
import { Helpers, _ } from 'tnp-core/websql';
|
|
14
|
-
import { TaonController, } from '../decorators/classes/controller-decorator'; /* */
|
|
15
|
-
/* */
|
|
16
|
-
/* */
|
|
17
|
-
import { ClassHelpers } from '../helpers/class-helpers';
|
|
18
|
-
import { Validators } from '../validators';
|
|
19
|
-
/**
|
|
20
|
-
* Please override property entityClassFn with entity class.
|
|
21
|
-
*/
|
|
22
|
-
let BaseCrudController = class BaseCrudController extends BaseController {
|
|
23
|
-
async _() {
|
|
24
|
-
if (!_.isFunction(this.entityClassResolveFn)) {
|
|
25
|
-
Helpers.warn(`Skipping initing CRUD controller ${ClassHelpers.getName(this)} because entityClassResolveFn is not provided.`);
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
|
-
let entityClassFn = this.entityClassResolveFn();
|
|
29
|
-
this.db = this.injectRepo(entityClassFn);
|
|
30
|
-
if (entityClassFn) {
|
|
31
|
-
const configEntity = Reflect.getMetadata(Symbols.metadata.options.entity, ClassHelpers.getClassFnFromObject(this));
|
|
32
|
-
if (configEntity?.createTable === false) {
|
|
33
|
-
Helpers.warn(`Table for entity ${ClassHelpers.getName(entityClassFn)} will not be created. Crud will not work properly.`);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
else {
|
|
37
|
-
Helpers.error(`Entity class not provided for controller ${ClassHelpers.getName(this)}.
|
|
38
|
-
|
|
39
|
-
Please provide entity as class propery entityClassFn:
|
|
40
|
-
|
|
41
|
-
class ${ClassHelpers.getName(this)} extends BaseCrudController<Entity> {
|
|
42
|
-
|
|
43
|
-
entityClassResolveFn = ()=> MyEntityClass;
|
|
44
|
-
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
`);
|
|
48
|
-
}
|
|
49
|
-
await super._();
|
|
50
|
-
}
|
|
51
|
-
bufforedChanges(id, property, alreadyLength) {
|
|
52
|
-
return async (request, response) => {
|
|
53
|
-
const model = await this.db.getBy(id);
|
|
54
|
-
if (model === void 0) {
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
Validators.preventUndefinedModel(model, id);
|
|
58
|
-
let value = model[property];
|
|
59
|
-
let result;
|
|
60
|
-
if (_.isString(value) || _.isArray(value)) {
|
|
61
|
-
result = value.slice(alreadyLength);
|
|
62
|
-
}
|
|
63
|
-
return result;
|
|
64
|
-
};
|
|
65
|
-
}
|
|
66
|
-
pagination(pageNumber = 1, pageSize = 10, search = '') {
|
|
67
|
-
return async (request, response) => {
|
|
68
|
-
if (this.db.repositoryExists) {
|
|
69
|
-
const query = {
|
|
70
|
-
page: pageNumber,
|
|
71
|
-
take: pageSize,
|
|
72
|
-
keyword: search,
|
|
73
|
-
};
|
|
74
|
-
const take = query.take || 10;
|
|
75
|
-
const page = query.page || 1;
|
|
76
|
-
const skip = (page - 1) * take;
|
|
77
|
-
const keyword = query.keyword || '';
|
|
78
|
-
const [result, total] = await this.db.findAndCount({
|
|
79
|
-
take: take,
|
|
80
|
-
skip: skip,
|
|
81
|
-
});
|
|
82
|
-
response?.setHeader(Symbols.old.X_TOTAL_COUNT, total);
|
|
83
|
-
return result;
|
|
84
|
-
}
|
|
85
|
-
return [];
|
|
86
|
-
};
|
|
87
|
-
}
|
|
88
|
-
getAll() {
|
|
89
|
-
return async (request, response) => {
|
|
90
|
-
if (this.db.repositoryExists) {
|
|
91
|
-
const { models, totalCount } = await this.db.getAll();
|
|
92
|
-
response?.setHeader(Symbols.old.X_TOTAL_COUNT, totalCount);
|
|
93
|
-
return models;
|
|
94
|
-
}
|
|
95
|
-
return [];
|
|
96
|
-
};
|
|
97
|
-
}
|
|
98
|
-
getBy(id) {
|
|
99
|
-
return async () => {
|
|
100
|
-
const model = await this.db.getBy(id);
|
|
101
|
-
return model;
|
|
102
|
-
};
|
|
103
|
-
}
|
|
104
|
-
updateById(id, item) {
|
|
105
|
-
return async () => {
|
|
106
|
-
const model = await this.db.updateById(id, item);
|
|
107
|
-
return model;
|
|
108
|
-
};
|
|
109
|
-
}
|
|
110
|
-
patchById(id, item) {
|
|
111
|
-
return async () => {
|
|
112
|
-
const model = await this.db.updateById(id, item);
|
|
113
|
-
return model;
|
|
114
|
-
};
|
|
115
|
-
}
|
|
116
|
-
bulkUpdate(items) {
|
|
117
|
-
return async () => {
|
|
118
|
-
if (!Array.isArray(items) || items?.length === 0) {
|
|
119
|
-
return [];
|
|
120
|
-
}
|
|
121
|
-
const { models } = await this.db.bulkUpdate(items);
|
|
122
|
-
return models;
|
|
123
|
-
};
|
|
124
|
-
}
|
|
125
|
-
deleteById(id) {
|
|
126
|
-
return async () => {
|
|
127
|
-
const model = await this.db.deleteById(id);
|
|
128
|
-
return model;
|
|
129
|
-
};
|
|
130
|
-
}
|
|
131
|
-
bulkDelete(ids) {
|
|
132
|
-
return async () => {
|
|
133
|
-
const models = await this.db.bulkDelete(ids);
|
|
134
|
-
return models;
|
|
135
|
-
};
|
|
136
|
-
}
|
|
137
|
-
create(item) {
|
|
138
|
-
return async () => {
|
|
139
|
-
const model = await this.db.create(item);
|
|
140
|
-
return model;
|
|
141
|
-
};
|
|
142
|
-
}
|
|
143
|
-
bulkCreate(items) {
|
|
144
|
-
return async () => {
|
|
145
|
-
const models = await this.db.bulkCreate(items);
|
|
146
|
-
return models;
|
|
147
|
-
};
|
|
148
|
-
}
|
|
149
|
-
};
|
|
150
|
-
__decorate([
|
|
151
|
-
GET(`/:id/property/:property`),
|
|
152
|
-
__param(0, Path(`id`)),
|
|
153
|
-
__param(1, Path(`property`)),
|
|
154
|
-
__param(2, Query('alreadyLength')),
|
|
155
|
-
__metadata("design:type", Function),
|
|
156
|
-
__metadata("design:paramtypes", [Object, String, Number]),
|
|
157
|
-
__metadata("design:returntype", Object)
|
|
158
|
-
], BaseCrudController.prototype, "bufforedChanges", null);
|
|
159
|
-
__decorate([
|
|
160
|
-
GET(),
|
|
161
|
-
__param(0, Query('pageNumber')),
|
|
162
|
-
__param(1, Query('pageSize')),
|
|
163
|
-
__param(2, Query('search')),
|
|
164
|
-
__metadata("design:type", Function),
|
|
165
|
-
__metadata("design:paramtypes", [Number, Number, String]),
|
|
166
|
-
__metadata("design:returntype", Object)
|
|
167
|
-
], BaseCrudController.prototype, "pagination", null);
|
|
168
|
-
__decorate([
|
|
169
|
-
GET(),
|
|
170
|
-
__metadata("design:type", Function),
|
|
171
|
-
__metadata("design:paramtypes", []),
|
|
172
|
-
__metadata("design:returntype", Object)
|
|
173
|
-
], BaseCrudController.prototype, "getAll", null);
|
|
174
|
-
__decorate([
|
|
175
|
-
GET(`/:id`),
|
|
176
|
-
__param(0, Path(`id`)),
|
|
177
|
-
__metadata("design:type", Function),
|
|
178
|
-
__metadata("design:paramtypes", [Object]),
|
|
179
|
-
__metadata("design:returntype", Object)
|
|
180
|
-
], BaseCrudController.prototype, "getBy", null);
|
|
181
|
-
__decorate([
|
|
182
|
-
PUT(`/:id`),
|
|
183
|
-
__param(0, Path(`id`)),
|
|
184
|
-
__param(1, Body()),
|
|
185
|
-
__metadata("design:type", Function),
|
|
186
|
-
__metadata("design:paramtypes", [Object, Object]),
|
|
187
|
-
__metadata("design:returntype", Object)
|
|
188
|
-
], BaseCrudController.prototype, "updateById", null);
|
|
189
|
-
__decorate([
|
|
190
|
-
PATCH(`/:id`),
|
|
191
|
-
__param(0, Path(`id`)),
|
|
192
|
-
__param(1, Body()),
|
|
193
|
-
__metadata("design:type", Function),
|
|
194
|
-
__metadata("design:paramtypes", [Object, Object]),
|
|
195
|
-
__metadata("design:returntype", Object)
|
|
196
|
-
], BaseCrudController.prototype, "patchById", null);
|
|
197
|
-
__decorate([
|
|
198
|
-
PUT(),
|
|
199
|
-
__param(0, Body()),
|
|
200
|
-
__metadata("design:type", Function),
|
|
201
|
-
__metadata("design:paramtypes", [Array]),
|
|
202
|
-
__metadata("design:returntype", Object)
|
|
203
|
-
], BaseCrudController.prototype, "bulkUpdate", null);
|
|
204
|
-
__decorate([
|
|
205
|
-
DELETE(`/:id`),
|
|
206
|
-
__param(0, Path(`id`)),
|
|
207
|
-
__metadata("design:type", Function),
|
|
208
|
-
__metadata("design:paramtypes", [Number]),
|
|
209
|
-
__metadata("design:returntype", Object)
|
|
210
|
-
], BaseCrudController.prototype, "deleteById", null);
|
|
211
|
-
__decorate([
|
|
212
|
-
DELETE(`/bulkDelete/:ids`),
|
|
213
|
-
__param(0, Path(`ids`)),
|
|
214
|
-
__metadata("design:type", Function),
|
|
215
|
-
__metadata("design:paramtypes", [Array]),
|
|
216
|
-
__metadata("design:returntype", Object)
|
|
217
|
-
], BaseCrudController.prototype, "bulkDelete", null);
|
|
218
|
-
__decorate([
|
|
219
|
-
POST(),
|
|
220
|
-
__param(0, Body()),
|
|
221
|
-
__metadata("design:type", Function),
|
|
222
|
-
__metadata("design:paramtypes", [Object]),
|
|
223
|
-
__metadata("design:returntype", Object)
|
|
224
|
-
], BaseCrudController.prototype, "create", null);
|
|
225
|
-
__decorate([
|
|
226
|
-
POST(),
|
|
227
|
-
__param(0, Body()),
|
|
228
|
-
__metadata("design:type", Function),
|
|
229
|
-
__metadata("design:paramtypes", [Object]),
|
|
230
|
-
__metadata("design:returntype", Object)
|
|
231
|
-
], BaseCrudController.prototype, "bulkCreate", null);
|
|
232
|
-
BaseCrudController = __decorate([
|
|
233
|
-
TaonController({ className: 'BaseCrudController' })
|
|
234
|
-
], BaseCrudController);
|
|
235
|
-
export { BaseCrudController };
|
|
236
|
-
;
|
|
237
|
-
({}); // @--end-of-file-for-module=taon lib/base-classes/base-crud-controller.ts
|
|
238
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jcnVkLWNvbnRyb2xsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItZGlzdC13ZWJzcWwvdGFvbi9wcm9qZWN0cy90YW9uL3NyYy9saWIvYmFzZS1jbGFzc2VzL2Jhc2UtY3J1ZC1jb250cm9sbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFHQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVuRCxPQUFPLEVBQUksR0FBRyxFQUFJLEdBQUcsRUFBSSxNQUFNLEVBQUksSUFBSSxFQUFZLEtBQUssR0FBRyxNQUFNLDRDQUE0QyxDQUFDLENBQUEsS0FBSztBQUNuSCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFFTCxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUU5RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ25DLE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFJLGNBQWMsR0FBNEIsTUFBTSw0Q0FBNEMsQ0FBQyxDQUFBLEtBQUs7QUFDN0csS0FBSztBQUNMLEtBQUs7QUFFTCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFeEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUkzQzs7R0FFRztBQUVJLElBQWUsa0JBQWtCLEdBQWpDLE1BQWUsa0JBQTJCLFNBQVEsY0FBYztJQWFyRSxLQUFLLENBQUMsQ0FBQztRQUNMLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLENBQUM7WUFDN0MsT0FBTyxDQUFDLElBQUksQ0FDVixvQ0FBb0MsWUFBWSxDQUFDLE9BQU8sQ0FDdEQsSUFBSSxDQUNMLGdEQUFnRCxDQUNsRCxDQUFDO1lBQ0YsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUNoRCxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFekMsSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUNsQixNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsV0FBVyxDQUN0QyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQy9CLFlBQVksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FDbkIsQ0FBQztZQUN2QixJQUFJLFlBQVksRUFBRSxXQUFXLEtBQUssS0FBSyxFQUFFLENBQUM7Z0JBQ3hDLE9BQU8sQ0FBQyxJQUFJLENBQ1Ysb0JBQW9CLFlBQVksQ0FBQyxPQUFPLENBQ3RDLGFBQWEsQ0FDZCxvREFBb0QsQ0FDdEQsQ0FBQztZQUNKLENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sQ0FBQyxLQUFLLENBQUMsNENBQTRDLFlBQVksQ0FBQyxPQUFPLENBQzVFLElBQUksQ0FDTDs7OztjQUlPLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDOzs7Ozs7T0FNakMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUNELE1BQU0sS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ2xCLENBQUM7SUFLRCxlQUFlLENBQ0QsRUFBbUIsRUFDYixRQUFnQixFQUNWLGFBQXNCO1FBRzlDLE9BQU8sS0FBSyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsRUFBRTtZQUNqQyxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3RDLElBQUksS0FBSyxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3JCLE9BQU87WUFDVCxDQUFDO1lBQ0QsVUFBVSxDQUFDLHFCQUFxQixDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztZQUM1QyxJQUFJLEtBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDNUIsSUFBSSxNQUFXLENBQUM7WUFDaEIsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDMUMsTUFBTSxHQUFJLEtBQWdCLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ2xELENBQUM7WUFFRCxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDLENBQUM7SUFFSixDQUFDO0lBS0QsVUFBVSxDQUNhLGFBQXFCLENBQUMsRUFDeEIsV0FBbUIsRUFBRSxFQUN2QixTQUFpQixFQUFFO1FBR3BDLE9BQU8sS0FBSyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsRUFBRTtZQUNqQyxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztnQkFDN0IsTUFBTSxLQUFLLEdBQUc7b0JBQ1osSUFBSSxFQUFFLFVBQVU7b0JBQ2hCLElBQUksRUFBRSxRQUFRO29CQUNkLE9BQU8sRUFBRSxNQUFNO2lCQUNoQixDQUFDO2dCQUtGLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUM5QixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQztnQkFDN0IsTUFBTSxJQUFJLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO2dCQUMvQixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQztnQkFFcEMsTUFBTSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsR0FBRyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUdqRCxJQUFJLEVBQUUsSUFBSTtvQkFDVixJQUFJLEVBQUUsSUFBSTtpQkFDWCxDQUFDLENBQUM7Z0JBRUgsUUFBUSxFQUFFLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFVdEQsT0FBTyxNQUFrQixDQUFDO1lBQzVCLENBQUM7WUFDRCxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUMsQ0FBQztJQUVKLENBQUM7SUFLRCxNQUFNO1FBRUosT0FBTyxLQUFLLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFFO1lBQ2pDLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUM3QixNQUFNLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDdEQsUUFBUSxFQUFFLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxVQUFVLENBQUMsQ0FBQztnQkFDM0QsT0FBTyxNQUFNLENBQUM7WUFDaEIsQ0FBQztZQUNELE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQyxDQUFDO0lBRUosQ0FBQztJQUtELEtBQUssQ0FBYSxFQUFtQjtRQUVuQyxPQUFPLEtBQUssSUFBSSxFQUFFO1lBQ2hCLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDdEMsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDLENBQUM7SUFFSixDQUFDO0lBS0QsVUFBVSxDQUNJLEVBQW1CLEVBQ3ZCLElBQVk7UUFJcEIsT0FBTyxLQUFLLElBQUksRUFBRTtZQUNoQixNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxJQUFXLENBQUMsQ0FBQztZQUN4RCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUMsQ0FBQztJQUVKLENBQUM7SUFLRCxTQUFTLENBQ0ssRUFBbUIsRUFDdkIsSUFBWTtRQUlwQixPQUFPLEtBQUssSUFBSSxFQUFFO1lBQ2hCLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLElBQVcsQ0FBQyxDQUFDO1lBQ3hELE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQyxDQUFDO0lBRUosQ0FBQztJQUtELFVBQVUsQ0FBUyxLQUFlO1FBRWhDLE9BQU8sS0FBSyxJQUFJLEVBQUU7WUFDaEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxFQUFFLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDakQsT0FBTyxFQUFFLENBQUM7WUFDWixDQUFDO1lBQ0QsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbkQsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQyxDQUFDO0lBRUosQ0FBQztJQUtELFVBQVUsQ0FBYSxFQUFVO1FBRS9CLE9BQU8sS0FBSyxJQUFJLEVBQUU7WUFDaEIsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMzQyxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUMsQ0FBQztJQUVKLENBQUM7SUFLRCxVQUFVLENBQ0ssR0FBd0I7UUFHckMsT0FBTyxLQUFLLElBQUksRUFBRTtZQUNoQixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzdDLE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUMsQ0FBQztJQUVKLENBQUM7SUFLRCxNQUFNLENBQVMsSUFBWTtRQUV6QixPQUFPLEtBQUssSUFBSSxFQUFFO1lBQ2hCLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBVyxDQUFDLENBQUM7WUFDaEQsT0FBTyxLQUFlLENBQUM7UUFDekIsQ0FBQyxDQUFDO0lBRUosQ0FBQztJQUtELFVBQVUsQ0FBUyxLQUFhO1FBRTlCLE9BQU8sS0FBSyxJQUFJLEVBQUU7WUFDaEIsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFZLENBQUMsQ0FBQztZQUN0RCxPQUFPLE1BQWtCLENBQUM7UUFDNUIsQ0FBQyxDQUFDO0lBRUosQ0FBQztDQUVGLENBQUE7QUFyTUM7SUFEQyxHQUFHLENBQUMseUJBQXlCLENBQUM7SUFFNUIsV0FBQSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDVixXQUFBLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUNoQixXQUFBLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQTs7Ozt5REFrQnhCO0FBS0Q7SUFEQyxHQUFHLEVBQUU7SUFFSCxXQUFBLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQTtJQUNuQixXQUFBLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUNqQixXQUFBLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQTs7OztvREF5Q2pCO0FBS0Q7SUFEQyxHQUFHLEVBQUU7Ozs7Z0RBWUw7QUFLRDtJQURDLEdBQUcsQ0FBQyxNQUFNLENBQUM7SUFDTCxXQUFBLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTs7OzsrQ0FPaEI7QUFLRDtJQURDLEdBQUcsQ0FBQyxNQUFNLENBQUM7SUFFVCxXQUFBLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNWLFdBQUEsSUFBSSxFQUFFLENBQUE7Ozs7b0RBU1I7QUFLRDtJQURDLEtBQUssQ0FBQyxNQUFNLENBQUM7SUFFWCxXQUFBLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNWLFdBQUEsSUFBSSxFQUFFLENBQUE7Ozs7bURBU1I7QUFLRDtJQURDLEdBQUcsRUFBRTtJQUNNLFdBQUEsSUFBSSxFQUFFLENBQUE7Ozs7b0RBVWpCO0FBS0Q7SUFEQyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ0gsV0FBQSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7Ozs7b0RBT3JCO0FBS0Q7SUFEQyxNQUFNLENBQUMsa0JBQWtCLENBQUM7SUFFeEIsV0FBQSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7Ozs7b0RBUWI7QUFLRDtJQURDLElBQUksRUFBRTtJQUNDLFdBQUEsSUFBSSxFQUFFLENBQUE7Ozs7Z0RBT2I7QUFLRDtJQURDLElBQUksRUFBRTtJQUNLLFdBQUEsSUFBSSxFQUFFLENBQUE7Ozs7b0RBT2pCO0FBOVBtQixrQkFBa0I7SUFEdkMsY0FBYyxDQUFDLEVBQUUsU0FBUyxFQUFFLG9CQUFvQixFQUFFLENBQUM7R0FDOUIsa0JBQWtCLENBZ1F2Qzs7QUFFQSxDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLDBFQUEwRSIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5cbmltcG9ydCB7IFN5bWJvbHMgfSBmcm9tICcuLi9zeW1ib2xzJztcbmltcG9ydCB7IEJhc2VDb250cm9sbGVyIH0gZnJvbSAnLi9iYXNlLWNvbnRyb2xsZXInO1xuaW1wb3J0IHsgQmFzZVJlcG9zaXRvcnkgfSBmcm9tICcuL2Jhc2UtcmVwb3NpdG9yeSc7XG5pbXBvcnQgeyAgIEdFVCwgICBQVVQsICAgREVMRVRFLCAgIFBPU1QsICAgSEVBRCwgICBQQVRDSCwgfSBmcm9tICcuLi9kZWNvcmF0b3JzL2h0dHAvaHR0cC1tZXRob2RzLWRlY29yYXRvcnMnOy8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG5cbmltcG9ydCB7IFF1ZXJ5LCBQYXRoLCBCb2R5IH0gZnJvbSAnLi4vZGVjb3JhdG9ycy9odHRwL2h0dHAtcGFyYW1zLWRlY29yYXRvcnMnO1xuaW1wb3J0IHsgTXlTcWxRdWVyeVNvdXJjZSB9IGZyb20gJ3Rhb24tdHlwZS1zcWwvd2Vic3FsJztcbmltcG9ydCB7IE1vZGVscyB9IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQgeyBIZWxwZXJzLCBfIH0gZnJvbSAndG5wLWNvcmUvd2Vic3FsJztcbmltcG9ydCB7ICAgVGFvbkNvbnRyb2xsZXIsICAgVGFvbkNvbnRyb2xsZXJPcHRpb25zLCB9IGZyb20gJy4uL2RlY29yYXRvcnMvY2xhc3Nlcy9jb250cm9sbGVyLWRlY29yYXRvcic7LyogKi9cbi8qICovXG4vKiAqL1xuXG5pbXBvcnQgeyBDbGFzc0hlbHBlcnMgfSBmcm9tICcuLi9oZWxwZXJzL2NsYXNzLWhlbHBlcnMnO1xuXG5pbXBvcnQgeyBWYWxpZGF0b3JzIH0gZnJvbSAnLi4vdmFsaWRhdG9ycyc7XG5pbXBvcnQgeyBUYW9uRW50aXR5T3B0aW9ucyB9IGZyb20gJy4uL2RlY29yYXRvcnMvY2xhc3Nlcy9lbnRpdHktZGVjb3JhdG9yJztcblxuXG4vKipcbiAqIFBsZWFzZSBvdmVycmlkZSBwcm9wZXJ0eSBlbnRpdHlDbGFzc0ZuIHdpdGggZW50aXR5IGNsYXNzLlxuICovXG5AVGFvbkNvbnRyb2xsZXIoeyBjbGFzc05hbWU6ICdCYXNlQ3J1ZENvbnRyb2xsZXInIH0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUNydWRDb250cm9sbGVyPEVudGl0eT4gZXh0ZW5kcyBCYXNlQ29udHJvbGxlciB7XG5cbiAgcHJvdGVjdGVkIGRiOiBCYXNlUmVwb3NpdG9yeTxFbnRpdHk+O1xuXG4gIC8qKlxuICAgKiBQbGVhc2UgcHJvdmlkZSBlbnRpdHkgYXMgY2xhc3MgcHJvcGVyeSBlbnRpdHlDbGFzc0ZuOlxuICAgKiBAcmV0dXJucyBjbGFzcyBmdW5jdGlvblxuICAgKlxuICAgKi9cbiAgYWJzdHJhY3QgZW50aXR5Q2xhc3NSZXNvbHZlRm46ICgpID0+IGFueTtcblxuXG5cbiAgYXN5bmMgXygpIHtcbiAgICBpZiAoIV8uaXNGdW5jdGlvbih0aGlzLmVudGl0eUNsYXNzUmVzb2x2ZUZuKSkge1xuICAgICAgSGVscGVycy53YXJuKFxuICAgICAgICBgU2tpcHBpbmcgaW5pdGluZyBDUlVEIGNvbnRyb2xsZXIgJHtDbGFzc0hlbHBlcnMuZ2V0TmFtZShcbiAgICAgICAgICB0aGlzLFxuICAgICAgICApfSBiZWNhdXNlIGVudGl0eUNsYXNzUmVzb2x2ZUZuIGlzIG5vdCBwcm92aWRlZC5gLFxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgZW50aXR5Q2xhc3NGbiA9IHRoaXMuZW50aXR5Q2xhc3NSZXNvbHZlRm4oKTtcbiAgICB0aGlzLmRiID0gdGhpcy5pbmplY3RSZXBvKGVudGl0eUNsYXNzRm4pO1xuXG4gICAgaWYgKGVudGl0eUNsYXNzRm4pIHtcbiAgICAgIGNvbnN0IGNvbmZpZ0VudGl0eSA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoXG4gICAgICAgIFN5bWJvbHMubWV0YWRhdGEub3B0aW9ucy5lbnRpdHksXG4gICAgICAgIENsYXNzSGVscGVycy5nZXRDbGFzc0ZuRnJvbU9iamVjdCh0aGlzKSxcbiAgICAgICkgYXMgVGFvbkVudGl0eU9wdGlvbnM7XG4gICAgICBpZiAoY29uZmlnRW50aXR5Py5jcmVhdGVUYWJsZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgSGVscGVycy53YXJuKFxuICAgICAgICAgIGBUYWJsZSBmb3IgZW50aXR5ICR7Q2xhc3NIZWxwZXJzLmdldE5hbWUoXG4gICAgICAgICAgICBlbnRpdHlDbGFzc0ZuLFxuICAgICAgICAgICl9IHdpbGwgbm90IGJlIGNyZWF0ZWQuIENydWQgd2lsbCBub3Qgd29yayBwcm9wZXJseS5gLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBIZWxwZXJzLmVycm9yKGBFbnRpdHkgY2xhc3Mgbm90IHByb3ZpZGVkIGZvciBjb250cm9sbGVyICR7Q2xhc3NIZWxwZXJzLmdldE5hbWUoXG4gICAgICAgIHRoaXMsXG4gICAgICApfS5cblxuICAgICAgUGxlYXNlIHByb3ZpZGUgZW50aXR5IGFzIGNsYXNzIHByb3BlcnkgZW50aXR5Q2xhc3NGbjpcblxuICAgICAgY2xhc3MgJHtDbGFzc0hlbHBlcnMuZ2V0TmFtZSh0aGlzKX0gZXh0ZW5kcyBCYXNlQ3J1ZENvbnRyb2xsZXI8RW50aXR5PiB7XG5cbiAgICAgICAgZW50aXR5Q2xhc3NSZXNvbHZlRm4gPSAoKT0+IE15RW50aXR5Q2xhc3M7XG5cbiAgICAgIH1cblxuICAgICAgYCk7XG4gICAgfVxuICAgIGF3YWl0IHN1cGVyLl8oKTtcbiAgfVxuXG5cblxuICBAR0VUKGAvOmlkL3Byb3BlcnR5Lzpwcm9wZXJ0eWApXG4gIGJ1ZmZvcmVkQ2hhbmdlcyhcbiAgICBAUGF0aChgaWRgKSBpZDogbnVtYmVyIHwgc3RyaW5nLFxuICAgIEBQYXRoKGBwcm9wZXJ0eWApIHByb3BlcnR5OiBzdHJpbmcsXG4gICAgQFF1ZXJ5KCdhbHJlYWR5TGVuZ3RoJykgYWxyZWFkeUxlbmd0aD86IG51bWJlcixcbiAgKTogTW9kZWxzLkh0dHAuUmVzcG9uc2U8c3RyaW5nIHwgYW55W10+IHtcblxuICAgIHJldHVybiBhc3luYyAocmVxdWVzdCwgcmVzcG9uc2UpID0+IHtcbiAgICAgIGNvbnN0IG1vZGVsID0gYXdhaXQgdGhpcy5kYi5nZXRCeShpZCk7XG4gICAgICBpZiAobW9kZWwgPT09IHZvaWQgMCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBWYWxpZGF0b3JzLnByZXZlbnRVbmRlZmluZWRNb2RlbChtb2RlbCwgaWQpO1xuICAgICAgbGV0IHZhbHVlID0gbW9kZWxbcHJvcGVydHldO1xuICAgICAgbGV0IHJlc3VsdDogYW55O1xuICAgICAgaWYgKF8uaXNTdHJpbmcodmFsdWUpIHx8IF8uaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgcmVzdWx0ID0gKHZhbHVlIGFzIHN0cmluZykuc2xpY2UoYWxyZWFkeUxlbmd0aCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcblxuICB9XG5cblxuXG4gIEBHRVQoKVxuICBwYWdpbmF0aW9uKFxuICAgIEBRdWVyeSgncGFnZU51bWJlcicpIHBhZ2VOdW1iZXI6IG51bWJlciA9IDEsXG4gICAgQFF1ZXJ5KCdwYWdlU2l6ZScpIHBhZ2VTaXplOiBudW1iZXIgPSAxMCxcbiAgICBAUXVlcnkoJ3NlYXJjaCcpIHNlYXJjaDogc3RyaW5nID0gJycsXG4gICk6IE1vZGVscy5IdHRwLlJlc3BvbnNlPEVudGl0eVtdPiB7XG5cbiAgICByZXR1cm4gYXN5bmMgKHJlcXVlc3QsIHJlc3BvbnNlKSA9PiB7XG4gICAgICBpZiAodGhpcy5kYi5yZXBvc2l0b3J5RXhpc3RzKSB7XG4gICAgICAgIGNvbnN0IHF1ZXJ5ID0ge1xuICAgICAgICAgIHBhZ2U6IHBhZ2VOdW1iZXIsXG4gICAgICAgICAgdGFrZTogcGFnZVNpemUsXG4gICAgICAgICAga2V5d29yZDogc2VhcmNoLFxuICAgICAgICB9O1xuXG5cblxuXG4gICAgICAgIGNvbnN0IHRha2UgPSBxdWVyeS50YWtlIHx8IDEwO1xuICAgICAgICBjb25zdCBwYWdlID0gcXVlcnkucGFnZSB8fCAxO1xuICAgICAgICBjb25zdCBza2lwID0gKHBhZ2UgLSAxKSAqIHRha2U7XG4gICAgICAgIGNvbnN0IGtleXdvcmQgPSBxdWVyeS5rZXl3b3JkIHx8ICcnO1xuXG4gICAgICAgIGNvbnN0IFtyZXN1bHQsIHRvdGFsXSA9IGF3YWl0IHRoaXMuZGIuZmluZEFuZENvdW50KHtcblxuXG4gICAgICAgICAgdGFrZTogdGFrZSxcbiAgICAgICAgICBza2lwOiBza2lwLFxuICAgICAgICB9KTtcblxuICAgICAgICByZXNwb25zZT8uc2V0SGVhZGVyKFN5bWJvbHMub2xkLlhfVE9UQUxfQ09VTlQsIHRvdGFsKTtcblxuXG5cblxuXG5cblxuXG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdCBhcyBFbnRpdHlbXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBbXTtcbiAgICB9O1xuXG4gIH1cblxuXG5cbiAgQEdFVCgpXG4gIGdldEFsbCgpOiBNb2RlbHMuSHR0cC5SZXNwb25zZTxFbnRpdHlbXT4ge1xuXG4gICAgcmV0dXJuIGFzeW5jIChyZXF1ZXN0LCByZXNwb25zZSkgPT4ge1xuICAgICAgaWYgKHRoaXMuZGIucmVwb3NpdG9yeUV4aXN0cykge1xuICAgICAgICBjb25zdCB7IG1vZGVscywgdG90YWxDb3VudCB9ID0gYXdhaXQgdGhpcy5kYi5nZXRBbGwoKTtcbiAgICAgICAgcmVzcG9uc2U/LnNldEhlYWRlcihTeW1ib2xzLm9sZC5YX1RPVEFMX0NPVU5ULCB0b3RhbENvdW50KTtcbiAgICAgICAgcmV0dXJuIG1vZGVscztcbiAgICAgIH1cbiAgICAgIHJldHVybiBbXTtcbiAgICB9O1xuXG4gIH1cblxuXG5cbiAgQEdFVChgLzppZGApXG4gIGdldEJ5KEBQYXRoKGBpZGApIGlkOiBudW1iZXIgfCBzdHJpbmcpOiBNb2RlbHMuSHR0cC5SZXNwb25zZTxFbnRpdHk+IHtcblxuICAgIHJldHVybiBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBtb2RlbCA9IGF3YWl0IHRoaXMuZGIuZ2V0QnkoaWQpO1xuICAgICAgcmV0dXJuIG1vZGVsO1xuICAgIH07XG5cbiAgfVxuXG5cblxuICBAUFVUKGAvOmlkYClcbiAgdXBkYXRlQnlJZChcbiAgICBAUGF0aChgaWRgKSBpZDogbnVtYmVyIHwgc3RyaW5nLFxuICAgIEBCb2R5KCkgaXRlbTogRW50aXR5LFxuICApOiBNb2RlbHMuSHR0cC5SZXNwb25zZTxFbnRpdHk+IHtcblxuXG4gICAgcmV0dXJuIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IG1vZGVsID0gYXdhaXQgdGhpcy5kYi51cGRhdGVCeUlkKGlkLCBpdGVtIGFzIGFueSk7XG4gICAgICByZXR1cm4gbW9kZWw7XG4gICAgfTtcblxuICB9XG5cblxuXG4gIEBQQVRDSChgLzppZGApXG4gIHBhdGNoQnlJZChcbiAgICBAUGF0aChgaWRgKSBpZDogbnVtYmVyIHwgc3RyaW5nLFxuICAgIEBCb2R5KCkgaXRlbTogRW50aXR5LFxuICApOiBNb2RlbHMuSHR0cC5SZXNwb25zZTxFbnRpdHk+IHtcblxuXG4gICAgcmV0dXJuIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IG1vZGVsID0gYXdhaXQgdGhpcy5kYi51cGRhdGVCeUlkKGlkLCBpdGVtIGFzIGFueSk7XG4gICAgICByZXR1cm4gbW9kZWw7XG4gICAgfTtcblxuICB9XG5cblxuXG4gIEBQVVQoKVxuICBidWxrVXBkYXRlKEBCb2R5KCkgaXRlbXM6IEVudGl0eVtdKTogTW9kZWxzLkh0dHAuUmVzcG9uc2U8RW50aXR5W10+IHtcblxuICAgIHJldHVybiBhc3luYyAoKSA9PiB7XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkoaXRlbXMpIHx8IGl0ZW1zPy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgY29uc3QgeyBtb2RlbHMgfSA9IGF3YWl0IHRoaXMuZGIuYnVsa1VwZGF0ZShpdGVtcyk7XG4gICAgICByZXR1cm4gbW9kZWxzO1xuICAgIH07XG5cbiAgfVxuXG5cblxuICBAREVMRVRFKGAvOmlkYClcbiAgZGVsZXRlQnlJZChAUGF0aChgaWRgKSBpZDogbnVtYmVyKTogTW9kZWxzLkh0dHAuUmVzcG9uc2U8RW50aXR5PiB7XG5cbiAgICByZXR1cm4gYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgbW9kZWwgPSBhd2FpdCB0aGlzLmRiLmRlbGV0ZUJ5SWQoaWQpO1xuICAgICAgcmV0dXJuIG1vZGVsO1xuICAgIH07XG5cbiAgfVxuXG5cblxuICBAREVMRVRFKGAvYnVsa0RlbGV0ZS86aWRzYClcbiAgYnVsa0RlbGV0ZShcbiAgICBAUGF0aChgaWRzYCkgaWRzOiAobnVtYmVyIHwgc3RyaW5nKVtdLFxuICApOiBNb2RlbHMuSHR0cC5SZXNwb25zZTwobnVtYmVyIHwgc3RyaW5nIHwgRW50aXR5KVtdPiB7XG5cbiAgICByZXR1cm4gYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgbW9kZWxzID0gYXdhaXQgdGhpcy5kYi5idWxrRGVsZXRlKGlkcyk7XG4gICAgICByZXR1cm4gbW9kZWxzO1xuICAgIH07XG5cbiAgfVxuXG5cblxuICBAUE9TVCgpXG4gIGNyZWF0ZShAQm9keSgpIGl0ZW06IEVudGl0eSk6IE1vZGVscy5IdHRwLlJlc3BvbnNlPEVudGl0eT4ge1xuXG4gICAgcmV0dXJuIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IG1vZGVsID0gYXdhaXQgdGhpcy5kYi5jcmVhdGUoaXRlbSBhcyBhbnkpO1xuICAgICAgcmV0dXJuIG1vZGVsIGFzIEVudGl0eTtcbiAgICB9O1xuXG4gIH1cblxuXG5cbiAgQFBPU1QoKVxuICBidWxrQ3JlYXRlKEBCb2R5KCkgaXRlbXM6IEVudGl0eSk6IE1vZGVscy5IdHRwLlJlc3BvbnNlPEVudGl0eVtdPiB7XG5cbiAgICByZXR1cm4gYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgbW9kZWxzID0gYXdhaXQgdGhpcy5kYi5idWxrQ3JlYXRlKGl0ZW1zIGFzIGFueSk7XG4gICAgICByZXR1cm4gbW9kZWxzIGFzIEVudGl0eVtdO1xuICAgIH07XG5cbiAgfVxuXG59XG5cbiA7KHt9KTsgLy8gQC0tZW5kLW9mLWZpbGUtZm9yLW1vZHVsZT10YW9uIGxpYi9iYXNlLWNsYXNzZXMvYmFzZS1jcnVkLWNvbnRyb2xsZXIudHMiXX0=
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { __decorate } from "tslib";
|
|
2
|
-
import { Entity } from 'taon-typeorm/websql';
|
|
3
|
-
import { BaseClass } from './base-class';
|
|
4
|
-
let EntityDecorator = () => {
|
|
5
|
-
return (target) => { };
|
|
6
|
-
};
|
|
7
|
-
EntityDecorator = Entity;
|
|
8
|
-
let BaseEntity = class BaseEntity extends BaseClass {
|
|
9
|
-
};
|
|
10
|
-
BaseEntity = __decorate([
|
|
11
|
-
EntityDecorator()
|
|
12
|
-
], BaseEntity);
|
|
13
|
-
export { BaseEntity };
|
|
14
|
-
;
|
|
15
|
-
({}); // @--end-of-file-for-module=taon lib/base-classes/base-entity.ts
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1lbnRpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItZGlzdC13ZWJzcWwvdGFvbi9wcm9qZWN0cy90YW9uL3NyYy9saWIvYmFzZS1jbGFzc2VzL2Jhc2UtZW50aXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFHQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFJN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV6QyxJQUFJLGVBQWUsR0FBRyxHQUFHLEVBQUU7SUFDekIsT0FBTyxDQUFDLE1BQVcsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDO0FBQzdCLENBQUMsQ0FBQztBQUdGLGVBQWUsR0FBRyxNQUFNLENBQUM7QUFJbEIsSUFBZSxVQUFVLEdBQXpCLE1BQWUsVUFLcEIsU0FBUSxTQUFpQjtDQUFHLENBQUE7QUFMUixVQUFVO0lBRC9CLGVBQWUsRUFBRTtHQUNJLFVBQVUsQ0FLRjs7QUFFN0IsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxpRUFBaUUiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuXG5pbXBvcnQgeyBFbnRpdHkgfSBmcm9tICd0YW9uLXR5cGVvcm0vd2Vic3FsJztcblxuaW1wb3J0IHsgRW5kcG9pbnRDb250ZXh0IH0gZnJvbSAnLi4vZW5kcG9pbnQtY29udGV4dCc7XG5pbXBvcnQgeyBTeW1ib2xzIH0gZnJvbSAnLi4vc3ltYm9scyc7XG5pbXBvcnQgeyBCYXNlQ2xhc3MgfSBmcm9tICcuL2Jhc2UtY2xhc3MnO1xuXG5sZXQgRW50aXR5RGVjb3JhdG9yID0gKCkgPT4ge1xuICByZXR1cm4gKHRhcmdldDogYW55KSA9PiB7fTtcbn07XG5cblxuRW50aXR5RGVjb3JhdG9yID0gRW50aXR5O1xuXG5cbkBFbnRpdHlEZWNvcmF0b3IoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VFbnRpdHk8XG4gIC8qKlxuICAgKiB0eXBlIGZvciBjbG9uaW5nXG4gICAqL1xuICBDbG9uZVQgZXh0ZW5kcyBCYXNlQ2xhc3MgPSBhbnksXG4+IGV4dGVuZHMgQmFzZUNsYXNzPENsb25lVD4ge31cblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPXRhb24gbGliL2Jhc2UtY2xhc3Nlcy9iYXNlLWVudGl0eS50cyJdfQ==
|
|
@@ -1,167 +0,0 @@
|
|
|
1
|
-
import { _ } from 'tnp-core/websql';
|
|
2
|
-
import { Symbols } from '../symbols';
|
|
3
|
-
import { ClassHelpers } from '../helpers/class-helpers';
|
|
4
|
-
export class BaseInjector {
|
|
5
|
-
constructor() {
|
|
6
|
-
/**
|
|
7
|
-
* Repositories to init (by controller)
|
|
8
|
-
*/
|
|
9
|
-
this.__repositories_to_init__ = [];
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* class initialization hook
|
|
13
|
-
* taon after class instace creation
|
|
14
|
-
*/
|
|
15
|
-
async _() {
|
|
16
|
-
const reposToInit = this.__repositories_to_init__;
|
|
17
|
-
for (const repo of reposToInit) {
|
|
18
|
-
await repo.__init(this);
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* @deprecated use ctx instead
|
|
23
|
-
* Current endpoint context
|
|
24
|
-
*/
|
|
25
|
-
get __endpoint_context__() {
|
|
26
|
-
return this[Symbols.ctxInClassOrClassObj];
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* get current endpoint context
|
|
30
|
-
*/
|
|
31
|
-
get ctx() {
|
|
32
|
-
return this.__endpoint_context__;
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* inject crud repo for entity
|
|
36
|
-
*/
|
|
37
|
-
injectRepo(entityForCrud) {
|
|
38
|
-
const repoProxy = this.__inject(void 0, {
|
|
39
|
-
localInstance: true,
|
|
40
|
-
resolveClassFromContext: 'BaseRepository',
|
|
41
|
-
locaInstanceConstructorArgs: [() => entityForCrud],
|
|
42
|
-
});
|
|
43
|
-
this.__repositories_to_init__.push(repoProxy);
|
|
44
|
-
return repoProxy;
|
|
45
|
-
}
|
|
46
|
-
injectCustomRepository(cutomRepositoryClass) {
|
|
47
|
-
const repoProxy = this.__inject(cutomRepositoryClass, {
|
|
48
|
-
localInstance: true,
|
|
49
|
-
locaInstanceConstructorArgs: [
|
|
50
|
-
() => cutomRepositoryClass.prototype.entityClassResolveFn(),
|
|
51
|
-
],
|
|
52
|
-
});
|
|
53
|
-
this.__repositories_to_init__.push(repoProxy);
|
|
54
|
-
return repoProxy;
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* aliast to .injectRepository()
|
|
58
|
-
*/
|
|
59
|
-
injectCustomRepo(cutomRepositoryClass) {
|
|
60
|
-
const repoProxy = this.injectCustomRepository(cutomRepositoryClass);
|
|
61
|
-
this.__repositories_to_init__.push(repoProxy);
|
|
62
|
-
return repoProxy;
|
|
63
|
-
}
|
|
64
|
-
injectController(ctor) {
|
|
65
|
-
return this.__inject(ctor, { localInstance: false });
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* aliast to .injectController()
|
|
69
|
-
*/
|
|
70
|
-
injectSubscriber(ctor) {
|
|
71
|
-
return this.__inject(ctor, { localInstance: false });
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* aliast to .injectController()
|
|
75
|
-
*/
|
|
76
|
-
injectCtrl(ctor) {
|
|
77
|
-
return this.injectController(ctor);
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* global provider available in every context
|
|
81
|
-
*/
|
|
82
|
-
injectGlobalProvider(ctor) {
|
|
83
|
-
return this.__inject(ctor, { localInstance: false });
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* context scoped provider
|
|
87
|
-
* TODO
|
|
88
|
-
*/
|
|
89
|
-
injectContextProvider(ctor) {
|
|
90
|
-
return this.__inject(ctor, { localInstance: false });
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Inject: Controllers, Providers, Repositories, Services, etc.
|
|
94
|
-
* TODO addd nest js injecting
|
|
95
|
-
*/
|
|
96
|
-
__inject(ctor, options) {
|
|
97
|
-
if (!options) {
|
|
98
|
-
options = {};
|
|
99
|
-
}
|
|
100
|
-
const contextClassInstance = this;
|
|
101
|
-
return new Proxy({}, {
|
|
102
|
-
get: (__, propName) => {
|
|
103
|
-
const contextFromClass = ctor && ctor[Symbols.ctxInClassOrClassObj];
|
|
104
|
-
const resultContext = contextFromClass
|
|
105
|
-
? contextFromClass
|
|
106
|
-
: this.__endpoint_context__;
|
|
107
|
-
if (options.resolveClassFromContext) {
|
|
108
|
-
const resolvedClass = resultContext.getClassFunByClassName(options.resolveClassFromContext);
|
|
109
|
-
ctor = resolvedClass;
|
|
110
|
-
}
|
|
111
|
-
if (resultContext) {
|
|
112
|
-
var instance = resultContext.inject(ctor, {
|
|
113
|
-
...options,
|
|
114
|
-
contextClassInstance,
|
|
115
|
-
});
|
|
116
|
-
if (!instance) {
|
|
117
|
-
throw new Error(`Not able to inject "${ClassHelpers.getName(ctor) || ctor.name}" inside ` +
|
|
118
|
-
`property "${propName?.toString()}" on class "${ClassHelpers.getName(this)}".
|
|
119
|
-
|
|
120
|
-
Please add "${ClassHelpers.getName(ctor) || ctor.name}" to (entites or contorllers or providers or repositories)
|
|
121
|
-
|
|
122
|
-
`);
|
|
123
|
-
}
|
|
124
|
-
const result = typeof instance[propName] === 'function'
|
|
125
|
-
? instance[propName].bind(instance)
|
|
126
|
-
: instance[propName];
|
|
127
|
-
return result;
|
|
128
|
-
}
|
|
129
|
-
},
|
|
130
|
-
set: (__, propName, value) => {
|
|
131
|
-
const contextFromClass = ctor && ctor[Symbols.ctxInClassOrClassObj];
|
|
132
|
-
const resultContext = contextFromClass
|
|
133
|
-
? contextFromClass
|
|
134
|
-
: this.__endpoint_context__;
|
|
135
|
-
if (options.resolveClassFromContext) {
|
|
136
|
-
const resolvedClass = resultContext.getClassFunByClassName(options.resolveClassFromContext);
|
|
137
|
-
ctor = resolvedClass;
|
|
138
|
-
}
|
|
139
|
-
if (resultContext) {
|
|
140
|
-
var instance = resultContext.inject(ctor, {
|
|
141
|
-
...options,
|
|
142
|
-
contextClassInstance,
|
|
143
|
-
});
|
|
144
|
-
if (!instance) {
|
|
145
|
-
const classNameNotResolved = ClassHelpers.getName(ctor) || ctor.name;
|
|
146
|
-
throw new Error(`Not able to inject "${classNameNotResolved}" inside ` +
|
|
147
|
-
`property "${propName?.toString()}" on class "${ClassHelpers.getName(this)}".
|
|
148
|
-
|
|
149
|
-
Please add "${ClassHelpers.getName(ctor) || ctor.name}" to (entites or contorllers or providers or repositories)
|
|
150
|
-
|
|
151
|
-
`);
|
|
152
|
-
}
|
|
153
|
-
instance[propName] = value;
|
|
154
|
-
}
|
|
155
|
-
return true;
|
|
156
|
-
},
|
|
157
|
-
});
|
|
158
|
-
}
|
|
159
|
-
clone(override) {
|
|
160
|
-
const classFn = ClassHelpers.getClassFnFromObject(this);
|
|
161
|
-
const result = _.merge(new classFn(), _.merge(_.cloneDeep(this), override));
|
|
162
|
-
return result;
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
;
|
|
166
|
-
({}); // @--end-of-file-for-module=taon lib/base-classes/base-injector.ts
|
|
167
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1pbmplY3Rvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1kaXN0LXdlYnNxbC90YW9uL3Byb2plY3RzL3Rhb24vc3JjL2xpYi9iYXNlLWNsYXNzZXMvYmFzZS1pbmplY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQVcsQ0FBQyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFN0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNyQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFLeEQsTUFBTSxPQUFPLFlBQVk7SUFBekI7UUE4SEU7O1dBRUc7UUFDTyw2QkFBd0IsR0FBRyxFQUEyQixDQUFDO0lBa0luRSxDQUFDO0lBeFBDOzs7T0FHRztJQUNILEtBQUssQ0FBQyxDQUFDO1FBQ0wsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDO1FBQ2xELEtBQUssTUFBTSxJQUFJLElBQUksV0FBVyxFQUFFLENBQUM7WUFDL0IsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFCLENBQUM7SUFDSCxDQUFDO0lBSUQ7OztPQUdHO0lBQ0gsSUFBSSxvQkFBb0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFvQixDQUFDO0lBQy9ELENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksR0FBRztRQUNMLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDO0lBQ25DLENBQUM7SUFNRDs7T0FFRztJQUNILFVBQVUsQ0FBSSxhQUF3QztRQUNwRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3RDLGFBQWEsRUFBRSxJQUFJO1lBQ25CLHVCQUF1QixFQUFFLGdCQUFnQjtZQUN6QywyQkFBMkIsRUFBRSxDQUFDLEdBQUcsRUFB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QU0sYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUU7d0JBQzNDLEdBQUcsT0FBTzt3QkFDVixvQkFBb0I7cUJBQ3JCLENBQUMsQ0FBQztvQkFDSCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7d0JBQ2QsTUFBTSxvQkFBb0IsR0FDeEIsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDO3dCQUMxQyxNQUFNLElBQUksS0FBSyxDQUNiLHVCQUF1QixvQkFBb0IsV0FBVzs0QkFDcEQsYUFBYSxRQUFRLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixZQUFZLENBQUMsT0FBTyxDQUNuRSxJQUFJLENBQ0w7OzRCQUdILFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQ3JDOztlQUVDLENBQ0EsQ0FBQztvQkFDSixDQUFDO29CQUNELFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxLQUFLLENBQUM7Z0JBQzdCLENBQUM7Z0JBQ0QsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1NBQ0YsQ0FDRyxDQUFDO0lBQ1QsQ0FBQztJQU1NLEtBQUssQ0FBQyxRQUF5QjtRQUNwQyxNQUFNLE9BQU8sR0FBRyxZQUFZLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBRTVFLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7Q0FFRjtBQUVBLENBQUM7QUFBQSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsbUVBQW1FIiwic291cmNlc0NvbnRlbnQiOlsiXG5cblxuaW1wb3J0IHsgSGVscGVycywgXyB9IGZyb20gJ3RucC1jb3JlL3dlYnNxbCc7XG5pbXBvcnQgeyBFbmRwb2ludENvbnRleHQgfSBmcm9tICcuLi9lbmRwb2ludC1jb250ZXh0JztcbmltcG9ydCB7IFN5bWJvbHMgfSBmcm9tICcuLi9zeW1ib2xzJztcbmltcG9ydCB7IENsYXNzSGVscGVycyB9IGZyb20gJy4uL2hlbHBlcnMvY2xhc3MtaGVscGVycyc7XG5pbXBvcnQgdHlwZSB7IEJhc2VSZXBvc2l0b3J5IH0gZnJvbSAnLi9iYXNlLXJlcG9zaXRvcnknO1xuaW1wb3J0IHsgQmFzZUNsYXNzIH0gZnJvbSAnLi9iYXNlLWNsYXNzJztcblxuXG5leHBvcnQgY2xhc3MgQmFzZUluamVjdG9yPENsb25lVCBleHRlbmRzIEJhc2VDbGFzcyA9IGFueT4ge1xuICAvKipcbiAgICogZm9yIHByb3h5IHB1cnBvc2VzXG4gICAqL1xuICBnZXRPcmlnaW5hbFByb3RvdHlwZTogKCkgPT4gYW55O1xuICAvKipcbiAgICogZm9yIHByb3h5IHB1cnBvc2VzXG4gICAqL1xuICBnZXRPcmlnaW5hbENvbnN0cnVjdG9yOiAoKSA9PiBhbnk7XG5cblxuICAvKipcbiAgICogY2xhc3MgaW5pdGlhbGl6YXRpb24gaG9va1xuICAgKiB0YW9uIGFmdGVyIGNsYXNzIGluc3RhY2UgY3JlYXRpb25cbiAgICovXG4gIGFzeW5jIF8oKSB7XG4gICAgY29uc3QgcmVwb3NUb0luaXQgPSB0aGlzLl9fcmVwb3NpdG9yaWVzX3RvX2luaXRfXztcbiAgICBmb3IgKGNvbnN0IHJlcG8gb2YgcmVwb3NUb0luaXQpIHtcbiAgICAgIGF3YWl0IHJlcG8uX19pbml0KHRoaXMpO1xuICAgIH1cbiAgfVxuXG5cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGN0eCBpbnN0ZWFkXG4gICAqIEN1cnJlbnQgZW5kcG9pbnQgY29udGV4dFxuICAgKi9cbiAgZ2V0IF9fZW5kcG9pbnRfY29udGV4dF9fKCkge1xuICAgIHJldHVybiB0aGlzW1N5bWJvbHMuY3R4SW5DbGFzc09yQ2xhc3NPYmpdIGFzIEVuZHBvaW50Q29udGV4dDtcbiAgfVxuXG4gIC8qKlxuICAgKiBnZXQgIGN1cnJlbnQgZW5kcG9pbnQgY29udGV4dFxuICAgKi9cbiAgZ2V0IGN0eCgpIHtcbiAgICByZXR1cm4gdGhpcy5fX2VuZHBvaW50X2NvbnRleHRfXztcbiAgfVxuXG5cblxuXG5cbiAgLyoqXG4gICAqIGluamVjdCBjcnVkIHJlcG8gZm9yIGVudGl0eVxuICAgKi9cbiAgaW5qZWN0UmVwbzxUPihlbnRpdHlGb3JDcnVkOiBuZXcgKC4uLmFyZ3M6IGFueVtdKSA9PiBUKTogQmFzZVJlcG9zaXRvcnk8VD4ge1xuICAgIGNvbnN0IHJlcG9Qcm94eSA9IHRoaXMuX19pbmplY3Qodm9pZCAwLCB7XG4gICAgICBsb2NhbEluc3RhbmNlOiB0cnVlLFxuICAgICAgcmVzb2x2ZUNsYXNzRnJvbUNvbnRleHQ6ICdCYXNlUmVwb3NpdG9yeScsXG4gICAgICBsb2NhSW5zdGFuY2VDb25zdHJ1Y3RvckFyZ3M6IFsoKSA9PiBlbnRpdHlGb3JDcnVkXSxcbiAgICB9KTtcbiAgICB0aGlzLl9fcmVwb3NpdG9yaWVzX3RvX2luaXRfXy5wdXNoKHJlcG9Qcm94eSBhcyBhbnkpO1xuICAgIHJldHVybiByZXBvUHJveHkgYXMgYW55O1xuICB9XG5cblxuXG4gIGluamVjdEN1c3RvbVJlcG9zaXRvcnk8VD4oXG4gICAgY3V0b21SZXBvc2l0b3J5Q2xhc3M6IG5ldyAoLi4uYXJnczogYW55W10pID0+IFQsXG4gICk6IFQge1xuICAgIGNvbnN0IHJlcG9Qcm94eSA9IHRoaXMuX19pbmplY3Q8VD4oY3V0b21SZXBvc2l0b3J5Q2xhc3MsIHtcbiAgICAgIGxvY2FsSW5zdGFuY2U6IHRydWUsXG4gICAgICBsb2NhSW5zdGFuY2VDb25zdHJ1Y3RvckFyZ3M6IFtcbiAgICAgICAgKCkgPT4gY3V0b21SZXBvc2l0b3J5Q2xhc3MucHJvdG90eXBlLmVudGl0eUNsYXNzUmVzb2x2ZUZuKCksXG4gICAgICBdLFxuICAgIH0pO1xuICAgIHRoaXMuX19yZXBvc2l0b3JpZXNfdG9faW5pdF9fLnB1c2gocmVwb1Byb3h5IGFzIGFueSk7XG4gICAgcmV0dXJuIHJlcG9Qcm94eTtcbiAgfVxuXG5cblxuICAvKipcbiAgICogYWxpYXN0IHRvIC5pbmplY3RSZXBvc2l0b3J5KClcbiAgICovXG4gIGluamVjdEN1c3RvbVJlcG88VD4oY3V0b21SZXBvc2l0b3J5Q2xhc3M6IG5ldyAoLi4uYXJnczogYW55W10pID0+IFQpOiBUIHtcbiAgICBjb25zdCByZXBvUHJveHkgPSB0aGlzLmluamVjdEN1c3RvbVJlcG9zaXRvcnk8VD4oY3V0b21SZXBvc2l0b3J5Q2xhc3MpO1xuICAgIHRoaXMuX19yZXBvc2l0b3JpZXNfdG9faW5pdF9fLnB1c2gocmVwb1Byb3h5IGFzIGFueSk7XG4gICAgcmV0dXJuIHJlcG9Qcm94eTtcbiAgfVxuXG5cblxuICBpbmplY3RDb250cm9sbGVyPFQ+KGN0b3I6IG5ldyAoLi4uYXJnczogYW55W10pID0+IFQpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5fX2luamVjdDxUPihjdG9yLCB7IGxvY2FsSW5zdGFuY2U6IGZhbHNlIH0pO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBhbGlhc3QgdG8gLmluamVjdENvbnRyb2xsZXIoKVxuICAgKi9cbiAgaW5qZWN0U3Vic2NyaWJlcjxUPihjdG9yOiBuZXcgKC4uLmFyZ3M6IGFueVtdKSA9PiBUKTogVCB7XG4gICAgcmV0dXJuIHRoaXMuX19pbmplY3Q8VD4oY3RvciwgeyBsb2NhbEluc3RhbmNlOiBmYWxzZSB9KTtcbiAgfVxuXG5cblxuICAvKipcbiAgICogYWxpYXN0IHRvIC5pbmplY3RDb250cm9sbGVyKClcbiAgICovXG4gIGluamVjdEN0cmw8VD4oY3RvcjogbmV3ICguLi5hcmdzOiBhbnlbXSkgPT4gVCk6IFQge1xuICAgIHJldHVybiB0aGlzLmluamVjdENvbnRyb2xsZXI8VD4oY3Rvcik7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIGdsb2JhbCBwcm92aWRlciBhdmFpbGFibGUgaW4gZXZlcnkgY29udGV4dFxuICAgKi9cbiAgaW5qZWN0R2xvYmFsUHJvdmlkZXI8VD4oY3RvcjogbmV3ICguLi5hcmdzOiBhbnlbXSkgPT4gVCk6IFQge1xuICAgIHJldHVybiB0aGlzLl9faW5qZWN0PFQ+KGN0b3IsIHsgbG9jYWxJbnN0YW5jZTogZmFsc2UgfSk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIGNvbnRleHQgc2NvcGVkIHByb3ZpZGVyXG4gICAqIFRPRE9cbiAgICovXG4gIGluamVjdENvbnRleHRQcm92aWRlcjxUPihjdG9yOiBuZXcgKC4uLmFyZ3M6IGFueVtdKSA9PiBUKTogVCB7XG4gICAgcmV0dXJuIHRoaXMuX19pbmplY3Q8VD4oY3RvciwgeyBsb2NhbEluc3RhbmNlOiBmYWxzZSB9KTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIFJlcG9zaXRvcmllcyB0byBpbml0IChieSBjb250cm9sbGVyKVxuICAgKi9cbiAgcHJvdGVjdGVkIF9fcmVwb3NpdG9yaWVzX3RvX2luaXRfXyA9IFtdIGFzIEJhc2VSZXBvc2l0b3J5PGFueT5bXTtcblxuXG4gIC8qKlxuICAgKiBJbmplY3Q6IENvbnRyb2xsZXJzLCBQcm92aWRlcnMsIFJlcG9zaXRvcmllcywgU2VydmljZXMsIGV0Yy5cbiAgICogVE9ETyAgYWRkZCBuZXN0IGpzIGluamVjdGluZ1xuICAgKi9cbiAgcHJpdmF0ZSBfX2luamVjdDxUPihcbiAgICBjdG9yOiBuZXcgKC4uLmFyZ3M6IGFueVtdKSA9PiBULFxuICAgIG9wdGlvbnM/OiB7XG4gICAgICAvKipcbiAgICAgICAqIChyZXBvc2l0b3JpZXMgYXJlIE9OTFkvQUxXQVlTIGxvY2FsIGluc3RhbmNlcylcbiAgICAgICAqIElmIHRydWUsIHRoZW4gbG9jYWwgaW5zdGFuY2Ugd2lsbCBiZSBjcmVhdGVkXG4gICAgICAgKiBjb250cm9sbGVycywgcHJvdmlkZXJzIGNhbiBiZSBsb2NhbCBvciBnbG9iYWxcbiAgICAgICAqL1xuICAgICAgbG9jYWxJbnN0YW5jZTogYm9vbGVhbjtcbiAgICAgIHJlc29sdmVDbGFzc0Zyb21Db250ZXh0Pzogc3RyaW5nO1xuICAgICAgbG9jYUluc3RhbmNlQ29uc3RydWN0b3JBcmdzPzogQ29uc3RydWN0b3JQYXJhbWV0ZXJzPHR5cGVvZiBjdG9yPjtcbiAgICB9LFxuICApOiBUIHtcbiAgICBpZiAoIW9wdGlvbnMpIHtcbiAgICAgIG9wdGlvbnMgPSB7fSBhcyBhbnk7XG4gICAgfVxuXG4gICAgY29uc3QgY29udGV4dENsYXNzSW5zdGFuY2UgPSB0aGlzO1xuICAgIHJldHVybiBuZXcgUHJveHkoXG4gICAgICB7fSxcbiAgICAgIHtcbiAgICAgICAgZ2V0OiAoX18sIHByb3BOYW1lKSA9PiB7XG4gICAgICAgICAgY29uc3QgY29udGV4dEZyb21DbGFzczogRW5kcG9pbnRDb250ZXh0ID1cbiAgICAgICAgICAgIGN0b3IgJiYgY3RvcltTeW1ib2xzLmN0eEluQ2xhc3NPckNsYXNzT2JqXTtcblxuICAgICAgICAgIGNvbnN0IHJlc3VsdENvbnRleHQ6IEVuZHBvaW50Q29udGV4dCA9IGNvbnRleHRGcm9tQ2xhc3NcbiAgICAgICAgICAgID8gY29udGV4dEZyb21DbGFzc1xuICAgICAgICAgICAgOiB0aGlzLl9fZW5kcG9pbnRfY29udGV4dF9fO1xuXG4gICAgICAgICAgaWYgKG9wdGlvbnMucmVzb2x2ZUNsYXNzRnJvbUNvbnRleHQpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc29sdmVkQ2xhc3MgPSByZXN1bHRDb250ZXh0LmdldENsYXNzRnVuQnlDbGFzc05hbWUoXG4gICAgICAgICAgICAgIG9wdGlvbnMucmVzb2x2ZUNsYXNzRnJvbUNvbnRleHQsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgY3RvciA9IHJlc29sdmVkQ2xhc3MgYXMgYW55O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChyZXN1bHRDb250ZXh0KSB7XG4gICAgICAgICAgICB2YXIgaW5zdGFuY2U6IFQgPSByZXN1bHRDb250ZXh0LmluamVjdChjdG9yLCB7XG4gICAgICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgICAgIGNvbnRleHRDbGFzc0luc3RhbmNlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoIWluc3RhbmNlKSB7XG4gICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICBgTm90IGFibGUgdG8gaW5qZWN0IFwiJHtcbiAgICAgICAgICAgICAgICAgIENsYXNzSGVscGVycy5nZXROYW1lKGN0b3IpIHx8IGN0b3IubmFtZVxuICAgICAgICAgICAgICAgIH1cIiBpbnNpZGUgYCArXG4gICAgICAgICAgICAgICAgICBgcHJvcGVydHkgXCIke3Byb3BOYW1lPy50b1N0cmluZygpfVwiIG9uICBjbGFzcyBcIiR7Q2xhc3NIZWxwZXJzLmdldE5hbWUoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgICAgICAgICApfVwiLlxuXG4gICAgICAgICAgICAgIFBsZWFzZSBhZGQgXCIke1xuICAgICAgICAgICAgICAgIENsYXNzSGVscGVycy5nZXROYW1lKGN0b3IpIHx8IGN0b3IubmFtZVxuICAgICAgICAgICAgICB9XCIgdG8gKGVudGl0ZXMgb3IgY29udG9ybGxlcnMgb3IgcHJvdmlkZXJzIG9yIHJlcG9zaXRvcmllcylcblxuICAgICAgICAgICAgICBgLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPVxuICAgICAgICAgICAgICB0eXBlb2YgaW5zdGFuY2VbcHJvcE5hbWVdID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICAgICAgPyBpbnN0YW5jZVtwcm9wTmFtZV0uYmluZChpbnN0YW5jZSlcbiAgICAgICAgICAgICAgICA6IGluc3RhbmNlW3Byb3BOYW1lXTtcblxuXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgIH1cblxuXG5cbiAgICAgICAgfSxcbiAgICAgICAgc2V0OiAoX18sIHByb3BOYW1lLCB2YWx1ZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNvbnRleHRGcm9tQ2xhc3MgPSBjdG9yICYmIGN0b3JbU3ltYm9scy5jdHhJbkNsYXNzT3JDbGFzc09ial07XG4gICAgICAgICAgY29uc3QgcmVzdWx0Q29udGV4dDogRW5kcG9pbnRDb250ZXh0ID0gY29udGV4dEZyb21DbGFzc1xuICAgICAgICAgICAgPyBjb250ZXh0RnJvbUNsYXNzXG4gICAgICAgICAgICA6IHRoaXMuX19lbmRwb2ludF9jb250ZXh0X187XG5cbiAgICAgICAgICBpZiAob3B0aW9ucy5yZXNvbHZlQ2xhc3NGcm9tQ29udGV4dCkge1xuICAgICAgICAgICAgY29uc3QgcmVzb2x2ZWRDbGFzcyA9IHJlc3VsdENvbnRleHQuZ2V0Q2xhc3NGdW5CeUNsYXNzTmFtZShcbiAgICAgICAgICAgICAgb3B0aW9ucy5yZXNvbHZlQ2xhc3NGcm9tQ29udGV4dCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjdG9yID0gcmVzb2x2ZWRDbGFzcyBhcyBhbnk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHJlc3VsdENvbnRleHQpIHtcbiAgICAgICAgICAgIHZhciBpbnN0YW5jZTogVCA9IHJlc3VsdENvbnRleHQuaW5qZWN0KGN0b3IsIHtcbiAgICAgICAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgICAgICAgY29udGV4dENsYXNzSW5zdGFuY2UsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmICghaW5zdGFuY2UpIHtcbiAgICAgICAgICAgICAgY29uc3QgY2xhc3NOYW1lTm90UmVzb2x2ZWQgPVxuICAgICAgICAgICAgICAgIENsYXNzSGVscGVycy5nZXROYW1lKGN0b3IpIHx8IGN0b3IubmFtZTtcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgIGBOb3QgYWJsZSB0byBpbmplY3QgXCIke2NsYXNzTmFtZU5vdFJlc29sdmVkfVwiIGluc2lkZSBgICtcbiAgICAgICAgICAgICAgICAgIGBwcm9wZXJ0eSBcIiR7cHJvcE5hbWU/LnRvU3RyaW5nKCl9XCIgb24gIGNsYXNzIFwiJHtDbGFzc0hlbHBlcnMuZ2V0TmFtZShcbiAgICAgICAgICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICAgICAgICAgICl9XCIuXG5cbiAgICAgICAgICAgICAgUGxlYXNlIGFkZCBcIiR7XG4gICAgICAgICAgICAgICAgQ2xhc3NIZWxwZXJzLmdldE5hbWUoY3RvcikgfHwgY3Rvci5uYW1lXG4gICAgICAgICAgICAgIH1cIiB0byAoZW50aXRlcyBvciBjb250b3JsbGVycyBvciBwcm92aWRlcnMgb3IgcmVwb3NpdG9yaWVzKVxuXG4gICAgICAgICAgICAgIGAsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpbnN0YW5jZVtwcm9wTmFtZV0gPSB2YWx1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICkgYXMgVDtcbiAgfVxuXG5cblxuXG5cbiAgcHVibGljIGNsb25lKG92ZXJyaWRlOiBQYXJ0aWFsPENsb25lVD4pOiBDbG9uZVQge1xuICAgIGNvbnN0IGNsYXNzRm4gPSBDbGFzc0hlbHBlcnMuZ2V0Q2xhc3NGbkZyb21PYmplY3QodGhpcyk7XG4gICAgY29uc3QgcmVzdWx0ID0gXy5tZXJnZShuZXcgY2xhc3NGbigpLCBfLm1lcmdlKF8uY2xvbmVEZWVwKHRoaXMpLCBvdmVycmlkZSkpO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG59XG5cbiA7KHt9KTsgLy8gQC0tZW5kLW9mLWZpbGUtZm9yLW1vZHVsZT10YW9uIGxpYi9iYXNlLWNsYXNzZXMvYmFzZS1pbmplY3Rvci50cyJdfQ==
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { _ } from 'tnp-core/websql';
|
|
2
|
-
import { ClassHelpers } from '../helpers/class-helpers';
|
|
3
|
-
import { BaseInjector } from './base-injector';
|
|
4
|
-
export class BaseMigration extends BaseInjector {
|
|
5
|
-
/**
|
|
6
|
-
* by default is READY to run
|
|
7
|
-
*/
|
|
8
|
-
isReadyToRun() {
|
|
9
|
-
return true;
|
|
10
|
-
}
|
|
11
|
-
getDescription() {
|
|
12
|
-
return _.startCase(ClassHelpers.getName(this));
|
|
13
|
-
}
|
|
14
|
-
async up(queryRunner) {
|
|
15
|
-
console.log(`[BaseMigration] Running migration UP "${ClassHelpers.getName(this)}"`);
|
|
16
|
-
}
|
|
17
|
-
async down(queryRunner) {
|
|
18
|
-
console.log(`[BaseMigration] Running migration DOWN "${ClassHelpers.getName(this)}"`);
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
;
|
|
22
|
-
({}); // @--end-of-file-for-module=taon lib/base-classes/base-migration.ts
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1taWdyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItZGlzdC13ZWJzcWwvdGFvbi9wcm9qZWN0cy90YW9uL3NyYy9saWIvYmFzZS1jbGFzc2VzL2Jhc2UtbWlncmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRy9DLE1BQU0sT0FBTyxhQUFjLFNBQVEsWUFBWTtJQUM3Qzs7T0FFRztJQUNJLFlBQVk7UUFDakIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsY0FBYztRQUNaLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELEtBQUssQ0FBQyxFQUFFLENBQUMsV0FBd0I7UUFDL0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyx5Q0FBeUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEYsQ0FBQztJQUNELEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBd0I7UUFDakMsT0FBTyxDQUFDLEdBQUcsQ0FBQywyQ0FBMkMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDeEYsQ0FBQztDQUNGO0FBRUEsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxvRUFBb0UiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuaW1wb3J0IHsgXyB9IGZyb20gJ3RucC1jb3JlL3dlYnNxbCc7XG5pbXBvcnQgeyBDbGFzc0hlbHBlcnMgfSBmcm9tICcuLi9oZWxwZXJzL2NsYXNzLWhlbHBlcnMnO1xuaW1wb3J0IHsgQmFzZUluamVjdG9yIH0gZnJvbSAnLi9iYXNlLWluamVjdG9yJztcbmltcG9ydCB7IE1pZ3JhdGlvbkludGVyZmFjZSwgUXVlcnlSdW5uZXIgfSBmcm9tICd0YW9uLXR5cGVvcm0vd2Vic3FsJztcblxuZXhwb3J0IGNsYXNzIEJhc2VNaWdyYXRpb24gZXh0ZW5kcyBCYXNlSW5qZWN0b3IgaW1wbGVtZW50cyBNaWdyYXRpb25JbnRlcmZhY2Uge1xuICAvKipcbiAgICogYnkgZGVmYXVsdCBpcyBSRUFEWSB0byBydW5cbiAgICovXG4gIHB1YmxpYyBpc1JlYWR5VG9SdW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBnZXREZXNjcmlwdGlvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiBfLnN0YXJ0Q2FzZShDbGFzc0hlbHBlcnMuZ2V0TmFtZSh0aGlzKSk7XG4gIH1cblxuICBhc3luYyB1cChxdWVyeVJ1bm5lcjogUXVlcnlSdW5uZXIpOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnNvbGUubG9nKGBbQmFzZU1pZ3JhdGlvbl0gUnVubmluZyBtaWdyYXRpb24gVVAgXCIke0NsYXNzSGVscGVycy5nZXROYW1lKHRoaXMpfVwiYCk7XG4gIH1cbiAgYXN5bmMgZG93bihxdWVyeVJ1bm5lcjogUXVlcnlSdW5uZXIpOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnNvbGUubG9nKGBbQmFzZU1pZ3JhdGlvbl0gUnVubmluZyBtaWdyYXRpb24gRE9XTiBcIiR7Q2xhc3NIZWxwZXJzLmdldE5hbWUodGhpcyl9XCJgKTtcbiAgfVxufVxuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9dGFvbiBsaWIvYmFzZS1jbGFzc2VzL2Jhc2UtbWlncmF0aW9uLnRzIl19
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { BaseInjector } from './base-injector';
|
|
2
|
-
export class BaseProvider extends BaseInjector {
|
|
3
|
-
}
|
|
4
|
-
;
|
|
5
|
-
({}); // @--end-of-file-for-module=taon lib/base-classes/base-provider.ts
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1kaXN0LXdlYnNxbC90YW9uL3Byb2plY3RzL3Rhb24vc3JjL2xpYi9iYXNlLWNsYXNzZXMvYmFzZS1wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsTUFBTSxPQUFPLFlBQWEsU0FBUSxZQUFZO0NBQUc7QUFFaEQsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxtRUFBbUUiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuaW1wb3J0IHsgQmFzZUluamVjdG9yIH0gZnJvbSAnLi9iYXNlLWluamVjdG9yJztcblxuZXhwb3J0IGNsYXNzIEJhc2VQcm92aWRlciBleHRlbmRzIEJhc2VJbmplY3RvciB7fVxuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9dGFvbiBsaWIvYmFzZS1jbGFzc2VzL2Jhc2UtcHJvdmlkZXIudHMiXX0=
|