taon 18.0.33 → 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/assets/shared/shared_folder_info.txt +1 -1
- package/browser/fesm2022/taon.mjs +67 -84
- 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/client/fesm2022/taon.mjs +67 -84
- 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/lib/base-classes/base-context.d.ts +6 -6
- 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/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/helpers/class-helpers.js +2 -2
- package/lib/helpers/class-helpers.js.map +1 -1
- package/lib/index.d.ts +6 -32
- 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-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/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/index.js +2 -2
- 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/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-github-fork-me-corner/index.js +2 -2
- package/lib/ui/taon-github-fork-me-ribbon/index.js +2 -2
- package/lib/ui/taon-notifications/taon-notifications.models.js +2 -2
- package/lib/ui/taon-progress-bar/index.js +2 -2
- 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-table/index.js +2 -2
- package/lib/ui/toan-full-material.module.d.ts +2 -0
- package/old-app .js +1 -0
- package/old-app .js.map +1 -1
- package/package.json +3 -3
- package/taon.jsonc +0 -5
- package/tmp-environment.json +24 -3
- package/websql/fesm2022/taon.mjs +67 -84
- 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,431 +0,0 @@
|
|
|
1
|
-
import { __decorate, __metadata } from "tslib";
|
|
2
|
-
import { Helpers } from 'tnp-core/websql';
|
|
3
|
-
import { _ } from 'tnp-core/websql';
|
|
4
|
-
import { ClassHelpers } from '../helpers/class-helpers';
|
|
5
|
-
import { MySqlQuerySource } from 'taon-type-sql/websql';
|
|
6
|
-
import { TaonRepository } from '../decorators/classes/repository-decorator';
|
|
7
|
-
import { BaseInjector } from './base-injector';
|
|
8
|
-
const INDEX_KEYS_NO_FOR_UPDATE = ['id'];
|
|
9
|
-
let BaseRepository = class BaseRepository extends BaseInjector {
|
|
10
|
-
constructor(__entityClassResolveFn) {
|
|
11
|
-
super();
|
|
12
|
-
this.__entityClassResolveFn = __entityClassResolveFn;
|
|
13
|
-
// @ts-ignore
|
|
14
|
-
this.entityClassResolveFn = __entityClassResolveFn;
|
|
15
|
-
}
|
|
16
|
-
get dbQuery() {
|
|
17
|
-
if (!this.__dbQuery) {
|
|
18
|
-
if (!this.ctx) {
|
|
19
|
-
return; // TODO
|
|
20
|
-
throw new Error(`[BaseRepository] Context not inited for class ${ClassHelpers.getName(this)}`);
|
|
21
|
-
}
|
|
22
|
-
const connection = this.ctx?.connection;
|
|
23
|
-
if (!connection) {
|
|
24
|
-
throw new Error(`[BaseRepository] Database not inited for context ${this.ctx?.contextName}`);
|
|
25
|
-
}
|
|
26
|
-
this.__dbQuery = new MySqlQuerySource(connection);
|
|
27
|
-
}
|
|
28
|
-
return this.__dbQuery;
|
|
29
|
-
}
|
|
30
|
-
get connection() {
|
|
31
|
-
return this.ctx?.connection;
|
|
32
|
-
}
|
|
33
|
-
get repository() {
|
|
34
|
-
return this.__repository;
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* target for repository
|
|
38
|
-
*/
|
|
39
|
-
get target() {
|
|
40
|
-
return this?.repository?.target;
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* alias to repository
|
|
44
|
-
*/
|
|
45
|
-
get repo() {
|
|
46
|
-
return this.repository;
|
|
47
|
-
}
|
|
48
|
-
get repositoryExists() {
|
|
49
|
-
return !!this.__repository;
|
|
50
|
-
}
|
|
51
|
-
async __init(context) {
|
|
52
|
-
if (this.__repository) {
|
|
53
|
-
return;
|
|
54
|
-
}
|
|
55
|
-
let entityClassFn = this.entityClassResolveFn();
|
|
56
|
-
if (!entityClassFn) {
|
|
57
|
-
Helpers.warn(`Entity class not provided for repository ${ClassHelpers.getName(this)}`);
|
|
58
|
-
return;
|
|
59
|
-
}
|
|
60
|
-
const ctx = this.__endpoint_context__;
|
|
61
|
-
if (ctx.remoteHost) {
|
|
62
|
-
return;
|
|
63
|
-
}
|
|
64
|
-
const connection = ctx.connection;
|
|
65
|
-
if (!connection) {
|
|
66
|
-
throw new Error(`
|
|
67
|
-
|
|
68
|
-
Connection not found for context ${ctx.contextName}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
Maybe you forgot to init database ?
|
|
72
|
-
|
|
73
|
-
Taon.createContext({
|
|
74
|
-
...
|
|
75
|
-
database:true
|
|
76
|
-
...
|
|
77
|
-
})
|
|
78
|
-
|
|
79
|
-
`);
|
|
80
|
-
}
|
|
81
|
-
if (!entityClassFn) {
|
|
82
|
-
Helpers.warn(`Entity class not found for repository ${ClassHelpers.getName(this)}`);
|
|
83
|
-
return;
|
|
84
|
-
}
|
|
85
|
-
this.__repository = (await connection.getRepository(ClassHelpers.getOrginalClass(entityClassFn)));
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Checks if entity has an id.
|
|
89
|
-
* If entity composite compose ids, it will check them all.
|
|
90
|
-
*/
|
|
91
|
-
hasId(entity) {
|
|
92
|
-
return this.repo.hasId(entity);
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Gets entity mixed id.
|
|
96
|
-
*/
|
|
97
|
-
getId(entity) {
|
|
98
|
-
return this.repo.getId(entity);
|
|
99
|
-
}
|
|
100
|
-
/**
|
|
101
|
-
Saves a given entity in the database.
|
|
102
|
-
* If entity does not exist in the database then inserts, otherwise updates.
|
|
103
|
-
*/
|
|
104
|
-
async save(item, options) {
|
|
105
|
-
let model = await this.repo.create(item);
|
|
106
|
-
model = await this.repo.save(model, options);
|
|
107
|
-
const { id } = model;
|
|
108
|
-
model = await this.repo.findOne({
|
|
109
|
-
where: { id },
|
|
110
|
-
});
|
|
111
|
-
return model;
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* alias to save
|
|
115
|
-
* -> it will actuall create new entity in db
|
|
116
|
-
* in oposite to typeorm create method
|
|
117
|
-
*/
|
|
118
|
-
async create(item, options) {
|
|
119
|
-
return this.save(item, options);
|
|
120
|
-
}
|
|
121
|
-
async bulkSave(items, options) {
|
|
122
|
-
const models = [];
|
|
123
|
-
for (let index = 0; index < items.length; index++) {
|
|
124
|
-
const item = items[index];
|
|
125
|
-
const model = await this.save(item, options);
|
|
126
|
-
models.push(model);
|
|
127
|
-
}
|
|
128
|
-
return models;
|
|
129
|
-
}
|
|
130
|
-
async bulkCreate(items, options) {
|
|
131
|
-
return this.bulkSave(items, options);
|
|
132
|
-
}
|
|
133
|
-
/**
|
|
134
|
-
* Saves all given entities in the database.
|
|
135
|
-
* If entities do not exist in the database then inserts, otherwise updates.
|
|
136
|
-
*/
|
|
137
|
-
/**
|
|
138
|
-
* Merges multiple entities (or entity-like objects) into a given entity.
|
|
139
|
-
*/
|
|
140
|
-
merge(mergeIntoEntity, ...entityLikes) {
|
|
141
|
-
return this.repo.merge(mergeIntoEntity, ...entityLikes);
|
|
142
|
-
}
|
|
143
|
-
/**
|
|
144
|
-
* Creates a new entity from the given plain javascript object. If entity already exist in the database, then
|
|
145
|
-
* it loads it (and everything related to it), replaces all values with the new ones from the given object
|
|
146
|
-
* and returns this new entity. This new entity is actually a loaded from the db entity with all properties
|
|
147
|
-
* replaced from the new object.
|
|
148
|
-
*
|
|
149
|
-
* Note that given entity-like object must have an entity id / primary key to find entity by.
|
|
150
|
-
* Returns undefined if entity with given id was not found.
|
|
151
|
-
*/
|
|
152
|
-
preload(entityLike) {
|
|
153
|
-
return this.repo.preload(entityLike);
|
|
154
|
-
}
|
|
155
|
-
/**
|
|
156
|
-
* Removes a given entities from the database.
|
|
157
|
-
*/
|
|
158
|
-
async remove(idOrEntity) {
|
|
159
|
-
if (_.isObject(idOrEntity)) {
|
|
160
|
-
idOrEntity = idOrEntity.id;
|
|
161
|
-
}
|
|
162
|
-
const deletedEntity = await this.repo.findOne({
|
|
163
|
-
where: { id: idOrEntity },
|
|
164
|
-
});
|
|
165
|
-
const idCopy = deletedEntity.id;
|
|
166
|
-
await this.repo.remove(deletedEntity);
|
|
167
|
-
deletedEntity.id = idCopy;
|
|
168
|
-
return deletedEntity;
|
|
169
|
-
}
|
|
170
|
-
/**
|
|
171
|
-
* alias to remove
|
|
172
|
-
*/
|
|
173
|
-
async delete(idOrEntity) {
|
|
174
|
-
return this.remove(idOrEntity);
|
|
175
|
-
}
|
|
176
|
-
/**
|
|
177
|
-
* alias to removeById
|
|
178
|
-
*/
|
|
179
|
-
async deleteById(id) {
|
|
180
|
-
return this.remove(id);
|
|
181
|
-
}
|
|
182
|
-
async bulkRemove(idsOrEntities) {
|
|
183
|
-
idsOrEntities = idsOrEntities.map(id => {
|
|
184
|
-
return _.isObject(id) ? id.id : id;
|
|
185
|
-
});
|
|
186
|
-
const models = [];
|
|
187
|
-
for (let index = 0; index < idsOrEntities.length; index++) {
|
|
188
|
-
const id = idsOrEntities[index];
|
|
189
|
-
const model = await this.remove(id);
|
|
190
|
-
models.push(model);
|
|
191
|
-
}
|
|
192
|
-
return models;
|
|
193
|
-
}
|
|
194
|
-
async bulkDelete(ids) {
|
|
195
|
-
return this.bulkRemove(ids);
|
|
196
|
-
}
|
|
197
|
-
/**
|
|
198
|
-
* Records the delete date of a given entity.
|
|
199
|
-
*/
|
|
200
|
-
softRemove(entity, options) {
|
|
201
|
-
return this.repo.softRemove(entity, options);
|
|
202
|
-
}
|
|
203
|
-
/**
|
|
204
|
-
* Recovers a given entity in the database.
|
|
205
|
-
*/
|
|
206
|
-
recover(entity, options) {
|
|
207
|
-
return this.repo.recover(entity, options);
|
|
208
|
-
}
|
|
209
|
-
/**
|
|
210
|
-
* Inserts a given entity into the database.
|
|
211
|
-
* Unlike save method executes a primitive operation without cascades, relations and other operations included.
|
|
212
|
-
* Executes fast and efficient INSERT query.
|
|
213
|
-
* Does not check if entity exist in the database, so query will fail if duplicate entity is being inserted.
|
|
214
|
-
*/
|
|
215
|
-
insert(entity) {
|
|
216
|
-
return this.repo.insert(entity);
|
|
217
|
-
}
|
|
218
|
-
async update(item) {
|
|
219
|
-
const { id } = item;
|
|
220
|
-
return await this.updateById(id, item);
|
|
221
|
-
}
|
|
222
|
-
async updateById(id, item) {
|
|
223
|
-
const allowedPropsToUpdate = [];
|
|
224
|
-
for (const key in item) {
|
|
225
|
-
if (_.isObject(item) &&
|
|
226
|
-
item.hasOwnProperty(key) &&
|
|
227
|
-
typeof item[key] !== 'object' &&
|
|
228
|
-
!_.isUndefined(this.repo.metadata.ownColumns.find(c => c.propertyName === key))) {
|
|
229
|
-
allowedPropsToUpdate.push(key);
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
for (let i = 0; i < allowedPropsToUpdate.length; i++) {
|
|
233
|
-
const key = allowedPropsToUpdate[i];
|
|
234
|
-
if (!INDEX_KEYS_NO_FOR_UPDATE.includes(key.toLowerCase())) {
|
|
235
|
-
const toSet = item[key];
|
|
236
|
-
await this.repo.update({
|
|
237
|
-
id,
|
|
238
|
-
}, {
|
|
239
|
-
[key]: toSet,
|
|
240
|
-
});
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
let model = await this.repo.findOne({
|
|
244
|
-
where: { id },
|
|
245
|
-
});
|
|
246
|
-
return model;
|
|
247
|
-
}
|
|
248
|
-
async bulkUpdate(items) {
|
|
249
|
-
const models = [];
|
|
250
|
-
for (let index = 0; index < items.length; index++) {
|
|
251
|
-
const item = items[index];
|
|
252
|
-
const { id } = item; // TOOD
|
|
253
|
-
const model = await this.updateById(id, item);
|
|
254
|
-
models.push(model);
|
|
255
|
-
}
|
|
256
|
-
return { models };
|
|
257
|
-
}
|
|
258
|
-
/**
|
|
259
|
-
* Inserts a given entity into the database, unless a unique constraint conflicts then updates the entity
|
|
260
|
-
* Unlike save method executes a primitive operation without cascades, relations and other operations included.
|
|
261
|
-
* Executes fast and efficient INSERT ... ON CONFLICT DO UPDATE/ON DUPLICATE KEY UPDATE query.
|
|
262
|
-
*/
|
|
263
|
-
upsert(entityOrEntities, conflictPathsOrOptions) {
|
|
264
|
-
return this.repo.upsert(entityOrEntities, conflictPathsOrOptions);
|
|
265
|
-
}
|
|
266
|
-
/**
|
|
267
|
-
* Records the delete date of entities by a given criteria.
|
|
268
|
-
* Unlike save method executes a primitive operation without cascades, relations and other operations included.
|
|
269
|
-
* Executes fast and efficient SOFT-DELETE query.
|
|
270
|
-
* Does not check if entity exist in the database.
|
|
271
|
-
*/
|
|
272
|
-
softDelete(criteria) {
|
|
273
|
-
return this.repo.softDelete(criteria);
|
|
274
|
-
}
|
|
275
|
-
/**
|
|
276
|
-
* Restores entities by a given criteria.
|
|
277
|
-
* Unlike save method executes a primitive operation without cascades, relations and other operations included.
|
|
278
|
-
* Executes fast and efficient SOFT-DELETE query.
|
|
279
|
-
* Does not check if entity exist in the database.
|
|
280
|
-
*/
|
|
281
|
-
restore(criteria) {
|
|
282
|
-
return this.repo.restore(criteria);
|
|
283
|
-
}
|
|
284
|
-
/**
|
|
285
|
-
* Counts entities that match given options.
|
|
286
|
-
* Useful for pagination.
|
|
287
|
-
*/
|
|
288
|
-
count(options) {
|
|
289
|
-
return this.repo.count(options);
|
|
290
|
-
}
|
|
291
|
-
/**
|
|
292
|
-
* Counts entities that match given conditions.
|
|
293
|
-
* Useful for pagination.
|
|
294
|
-
*/
|
|
295
|
-
countBy(where) {
|
|
296
|
-
return this.repo.countBy(where);
|
|
297
|
-
}
|
|
298
|
-
/**
|
|
299
|
-
* Finds entities that match given find options.
|
|
300
|
-
*/
|
|
301
|
-
find(options) {
|
|
302
|
-
return this.repo.find(options);
|
|
303
|
-
}
|
|
304
|
-
/**
|
|
305
|
-
* Finds entities that match given find options.
|
|
306
|
-
*/
|
|
307
|
-
findBy(where) {
|
|
308
|
-
return this.repo.findBy(where);
|
|
309
|
-
}
|
|
310
|
-
//
|
|
311
|
-
/**
|
|
312
|
-
* Finds entities that match given find options.
|
|
313
|
-
* Also counts all entities that match given conditions,
|
|
314
|
-
* but ignores pagination settings (from and take options).
|
|
315
|
-
*/
|
|
316
|
-
findAndCount(options) {
|
|
317
|
-
return this.repo.findAndCount(options);
|
|
318
|
-
}
|
|
319
|
-
/**
|
|
320
|
-
* Finds entities that match given WHERE conditions.
|
|
321
|
-
* Also counts all entities that match given conditions,
|
|
322
|
-
* but ignores pagination settings (from and take options).
|
|
323
|
-
*/
|
|
324
|
-
findAndCountBy(where) {
|
|
325
|
-
return this.repo.findAndCountBy(where);
|
|
326
|
-
}
|
|
327
|
-
/**
|
|
328
|
-
* Finds entities with ids.
|
|
329
|
-
* Optionally find options or conditions can be applied.
|
|
330
|
-
*
|
|
331
|
-
* @deprecated use `findBy` method instead in conjunction with `In` operator, for example:
|
|
332
|
-
*
|
|
333
|
-
* .findBy({
|
|
334
|
-
* id: In([1, 2, 3])
|
|
335
|
-
* })
|
|
336
|
-
*/
|
|
337
|
-
findByIds(ids) {
|
|
338
|
-
return this.repo.findByIds(ids);
|
|
339
|
-
}
|
|
340
|
-
/**
|
|
341
|
-
* Finds first entity by a given find options.
|
|
342
|
-
* If entity was not found in the database - returns null.
|
|
343
|
-
*/
|
|
344
|
-
findOne(options) {
|
|
345
|
-
return this.repo.findOne(options);
|
|
346
|
-
}
|
|
347
|
-
/**
|
|
348
|
-
* Finds first entity that matches given where condition.
|
|
349
|
-
* If entity was not found in the database - returns null.
|
|
350
|
-
*/
|
|
351
|
-
findOneBy(where) {
|
|
352
|
-
return this.repo.findOneBy(where);
|
|
353
|
-
}
|
|
354
|
-
/**
|
|
355
|
-
* Finds first entity that matches given id.
|
|
356
|
-
* If entity was not found in the database - returns null.
|
|
357
|
-
*
|
|
358
|
-
* @deprecated use `findOneBy` method instead in conjunction with `In` operator, for example:
|
|
359
|
-
*
|
|
360
|
-
* .findOneBy({
|
|
361
|
-
* id: 1 // where "id" is your primary column name
|
|
362
|
-
* })
|
|
363
|
-
*/
|
|
364
|
-
findOneById(id) {
|
|
365
|
-
return this.repo.findOneById(id);
|
|
366
|
-
}
|
|
367
|
-
/**
|
|
368
|
-
* Finds first entity by a given find options.
|
|
369
|
-
* If entity was not found in the database - rejects with error.
|
|
370
|
-
*/
|
|
371
|
-
findOneOrFail(options) {
|
|
372
|
-
return this.repo.findOneOrFail(options);
|
|
373
|
-
}
|
|
374
|
-
/**
|
|
375
|
-
* Finds first entity that matches given where condition.
|
|
376
|
-
* If entity was not found in the database - rejects with error.
|
|
377
|
-
*/
|
|
378
|
-
findOneByOrFail(where) {
|
|
379
|
-
return this.repo.findOneByOrFail(where);
|
|
380
|
-
}
|
|
381
|
-
/**
|
|
382
|
-
* Executes a raw SQL query and returns a raw database results.
|
|
383
|
-
* Raw query execution is supported only by relational databases (MongoDB is not supported).
|
|
384
|
-
*/
|
|
385
|
-
query(query, parameters) {
|
|
386
|
-
return this.repo.query(query, parameters);
|
|
387
|
-
}
|
|
388
|
-
/**
|
|
389
|
-
* Clears all the data from the given table/collection (truncates/drops it).
|
|
390
|
-
*
|
|
391
|
-
* Note: this method uses TRUNCATE and may not work as you expect in transactions on some platforms.
|
|
392
|
-
* @see https://stackoverflow.com/a/5972738/925151
|
|
393
|
-
*/
|
|
394
|
-
clear() {
|
|
395
|
-
return this.repo.clear();
|
|
396
|
-
}
|
|
397
|
-
/**
|
|
398
|
-
* Increments some column by provided value of the entities matched given conditions.
|
|
399
|
-
*/
|
|
400
|
-
increment(conditions, propertyPath, value) {
|
|
401
|
-
return this.repo.increment(conditions, propertyPath, value);
|
|
402
|
-
}
|
|
403
|
-
/**
|
|
404
|
-
* Decrements some column by provided value of the entities matched given conditions.
|
|
405
|
-
*/
|
|
406
|
-
decrement(conditions, propertyPath, value) {
|
|
407
|
-
return this.repo.decrement(conditions, propertyPath, value);
|
|
408
|
-
}
|
|
409
|
-
/**
|
|
410
|
-
* @deprecated use findAndCount instead
|
|
411
|
-
*/
|
|
412
|
-
async getAll() {
|
|
413
|
-
const totalCount = await this.repo.count();
|
|
414
|
-
const models = await this.repo.find();
|
|
415
|
-
return { models, totalCount };
|
|
416
|
-
}
|
|
417
|
-
async getBy(id) {
|
|
418
|
-
const model = await await this.repo.findOne({
|
|
419
|
-
where: { id },
|
|
420
|
-
});
|
|
421
|
-
return model;
|
|
422
|
-
}
|
|
423
|
-
};
|
|
424
|
-
BaseRepository = __decorate([
|
|
425
|
-
TaonRepository({ className: 'BaseRepository' }),
|
|
426
|
-
__metadata("design:paramtypes", [Function])
|
|
427
|
-
], BaseRepository);
|
|
428
|
-
export { BaseRepository };
|
|
429
|
-
;
|
|
430
|
-
({}); // @--end-of-file-for-module=taon lib/base-classes/base-repository.ts
|
|
431
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1yZXBvc2l0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWRpc3Qtd2Vic3FsL3Rhb24vcHJvamVjdHMvdGFvbi9zcmMvbGliL2Jhc2UtY2xhc3Nlcy9iYXNlLXJlcG9zaXRvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQTBCQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDNUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRy9DLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUdqQyxJQUFlLGNBQWMsR0FBN0IsTUFBZSxjQUVwQixTQUFRLFlBQVk7SUFRcEIsWUFFVSxzQkFBaUM7UUFFekMsS0FBSyxFQUFFLENBQUM7UUFGQSwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQVc7UUFHekMsYUFBYTtRQUNiLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxzQkFBc0IsQ0FBQztJQUNyRCxDQUFDO0lBTUQsSUFBVyxPQUFPO1FBRWhCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDZCxPQUFPLENBQUMsT0FBTztnQkFDZixNQUFNLElBQUksS0FBSyxDQUNiLGlEQUFpRCxZQUFZLENBQUMsT0FBTyxDQUNuRSxJQUFJLENBQ0wsRUFBRSxDQUNKLENBQUM7WUFDSixDQUFDO1lBQ0QsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUM7WUFDeEMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNoQixNQUFNLElBQUksS0FBSyxDQUNiLG9EQUFvRCxJQUFJLENBQUMsR0FBRyxFQUFFLFdBQVcsRUFBRSxDQUM1RSxDQUFDO1lBQ0osQ0FBQztZQUNELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNwRCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBRXhCLENBQUM7SUFJRCxJQUFXLFVBQVU7UUFFbkIsT0FBTyxJQUFJLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQztJQUU5QixDQUFDO0lBT0QsSUFBYyxVQUFVO1FBRXRCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUUzQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLE1BQU07UUFFZixPQUFPLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBYSxDQUFDO0lBRXpDLENBQUM7SUFFRDs7T0FFRztJQUNILElBQWMsSUFBSTtRQUVoQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFFekIsQ0FBQztJQUVELElBQVcsZ0JBQWdCO1FBRXpCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7SUFFN0IsQ0FBQztJQU1ELEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBYTtRQUV4QixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN0QixPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksYUFBYSxHQUFRLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQ3JELElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNuQixPQUFPLENBQUMsSUFBSSxDQUNWLDRDQUE0QyxZQUFZLENBQUMsT0FBTyxDQUM5RCxJQUFJLENBQ0wsRUFBRSxDQUNKLENBQUM7WUFDRixPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sR0FBRyxHQUFvQixJQUFJLENBQUMsb0JBQW9CLENBQUM7UUFDdkQsSUFBSSxHQUFHLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDbkIsT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLFVBQVUsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDO1FBRWxDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNoQixNQUFNLElBQUksS0FBSyxDQUFDOzsyQ0FFcUIsR0FBRyxDQUFDLFdBQVc7Ozs7Ozs7Ozs7O1NBV2pELENBQUMsQ0FBQztRQUNQLENBQUM7UUFFRCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDbkIsT0FBTyxDQUFDLElBQUksQ0FDVix5Q0FBeUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUN0RSxDQUFDO1lBQ0YsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsTUFBTSxVQUFVLENBQUMsYUFBYSxDQUNqRCxZQUFZLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxDQUM1QyxDQUFRLENBQUM7SUFPWixDQUFDO0lBSUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLE1BQWM7UUFDbEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBSUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsTUFBYztRQUNsQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFJRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsSUFBSSxDQUNSLElBQVksRUFDWixPQUVDO1FBR0QsSUFBSSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV6QyxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDN0MsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEtBQVksQ0FBQztRQUU1QixLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUM5QixLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQVM7U0FDckIsQ0FBQyxDQUFDO1FBRUgsT0FBTyxLQUFLLENBQUM7SUFFZixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxNQUFNLENBQ1YsSUFBWSxFQUNaLE9BRUM7UUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxLQUFLLENBQUMsUUFBUSxDQUNaLEtBQWUsRUFDZixPQUVDO1FBR0QsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDbEQsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRTFCLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDN0MsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQixDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFFaEIsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVLENBQ2QsS0FBZSxFQUNmLE9BRUM7UUFFRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFpQkQ7OztPQUdHO0lBd0NIOztPQUVHO0lBQ0gsS0FBSyxDQUFDLGVBQXVCLEVBQUUsR0FBRyxXQUFxQjtRQUNyRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsRUFBRSxHQUFHLFdBQVcsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFJRDs7Ozs7Ozs7T0FRRztJQUNILE9BQU8sQ0FBQyxVQUFrQjtRQUN4QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFLRDs7T0FFRztJQUNILEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBb0M7UUFFL0MsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDM0IsVUFBVSxHQUFJLFVBQXFCLENBQUMsRUFBRSxDQUFDO1FBQ3pDLENBQUM7UUFDRCxNQUFNLGFBQWEsR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQzVDLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQVM7U0FDakMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxNQUFNLEdBQUcsYUFBYSxDQUFDLEVBQUUsQ0FBQztRQUNoQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRXRDLGFBQWEsQ0FBQyxFQUFFLEdBQUcsTUFBTSxDQUFDO1FBQzFCLE9BQU8sYUFBYSxDQUFDO0lBRXZCLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBb0M7UUFDL0MsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxVQUFVLENBQUMsRUFBbUI7UUFDbEMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFDRCxLQUFLLENBQUMsVUFBVSxDQUNkLGFBQTJDO1FBRzNDLGFBQWEsR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQ3JDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUUsRUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ2pELENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxhQUFhLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDMUQsTUFBTSxFQUFFLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hDLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNwQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JCLENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUVoQixDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFpQztRQUNoRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQWdFRDs7T0FFRztJQUNILFVBQVUsQ0FDUixNQUFTLEVBQ1QsT0FBcUI7UUFFckIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQTZCRDs7T0FFRztJQUNILE9BQU8sQ0FDTCxNQUFTLEVBQ1QsT0FBcUI7UUFFckIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUlEOzs7OztPQUtHO0lBQ0gsTUFBTSxDQUNKLE1BQXlFO1FBRXpFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUlELEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBWTtRQUV2QixNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsSUFBVyxDQUFDO1FBQzNCLE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUV6QyxDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxFQUFtQixFQUFFLElBQVk7UUFFaEQsTUFBTSxvQkFBb0IsR0FBRyxFQUFFLENBQUM7UUFDaEMsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN2QixJQUNFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO2dCQUNoQixJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQztnQkFDeEIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssUUFBUTtnQkFDN0IsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUNaLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxLQUFLLEdBQUcsQ0FBQyxDQUNoRSxFQUNELENBQUM7Z0JBQ0Qsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2pDLENBQUM7UUFDSCxDQUFDO1FBRUQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLG9CQUFvQixDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3JELE1BQU0sR0FBRyxHQUFXLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQUUsQ0FBQztnQkFFMUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUd4QixNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUNwQjtvQkFDRSxFQUFFO2lCQUNJLEVBQ1I7b0JBQ0UsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLO2lCQUNOLENBQ1QsQ0FBQztZQU1KLENBQUM7UUFDSCxDQUFDO1FBQ0QsSUFBSSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUNsQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQVM7U0FDckIsQ0FBQyxDQUFDO1FBRUgsT0FBTyxLQUFLLENBQUM7SUFFZixDQUFDO0lBQ0QsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFlO1FBRTlCLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNsQixLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ2xELE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxQixNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsSUFBVyxDQUFDLENBQUMsT0FBTztZQUNuQyxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzlDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsQ0FBQztRQUNELE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUVwQixDQUFDO0lBOEJEOzs7O09BSUc7SUFDSCxNQUFNLENBQ0osZ0JBRW9DLEVBQ3BDLHNCQUF3RDtRQUV4RCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixFQUFFLHNCQUFzQixDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUlEOzs7OztPQUtHO0lBQ0gsVUFBVSxDQUNSLFFBUzRCO1FBRTVCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUlEOzs7OztPQUtHO0lBQ0gsT0FBTyxDQUNMLFFBUzRCO1FBRTVCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUlEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxPQUFpQztRQUNyQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFJRDs7O09BR0c7SUFDSCxPQUFPLENBQ0wsS0FBNEQ7UUFFNUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBSUQ7O09BRUc7SUFDSCxJQUFJLENBQUMsT0FBaUM7UUFDcEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBSUQ7O09BRUc7SUFDSCxNQUFNLENBQ0osS0FBNEQ7UUFFNUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBZUQsRUFBRTtJQUNGOzs7O09BSUc7SUFDSCxZQUFZLENBQUMsT0FBaUM7UUFDNUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBSUQ7Ozs7T0FJRztJQUNILGNBQWMsQ0FDWixLQUE0RDtRQUU1RCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFJRDs7Ozs7Ozs7O09BU0c7SUFDSCxTQUFTLENBQUMsR0FBVTtRQUNsQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFJRDs7O09BR0c7SUFDSCxPQUFPLENBQUMsT0FBK0I7UUFDckMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBSUQ7OztPQUdHO0lBQ0gsU0FBUyxDQUNQLEtBQTREO1FBRTVELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUlEOzs7Ozs7Ozs7T0FTRztJQUNILFdBQVcsQ0FDVCxFQUEwQjtRQUcxQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFJRDs7O09BR0c7SUFDSCxhQUFhLENBQUMsT0FBK0I7UUFDM0MsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBSUQ7OztPQUdHO0lBQ0gsZUFBZSxDQUNiLEtBQTREO1FBRTVELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUlEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxLQUFhLEVBQUUsVUFBa0I7UUFDckMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUlEOzs7OztPQUtHO0lBQ0gsS0FBSztRQUNILE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBSUQ7O09BRUc7SUFDSCxTQUFTLENBQ1AsVUFBb0MsRUFDcEMsWUFBb0IsRUFDcEIsS0FBc0I7UUFFdEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFJRDs7T0FFRztJQUNILFNBQVMsQ0FDUCxVQUFvQyxFQUNwQyxZQUFvQixFQUNwQixLQUFzQjtRQUV0QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUlEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLE1BQU07UUFPVixNQUFNLFVBQVUsR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDM0MsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBR3RDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLENBQUM7SUFFaEMsQ0FBQztJQUlELEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBbUI7UUFFN0IsTUFBTSxLQUFLLEdBQUcsTUFBTSxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQzFDLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBUztTQUNyQixDQUFDLENBQUM7UUFFSCxPQUFPLEtBQUssQ0FBQztJQUVmLENBQUM7Q0FFRixDQUFBO0FBdjNCcUIsY0FBYztJQURuQyxjQUFjLENBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQzs7R0FDMUIsY0FBYyxDQXUzQm5DOztBQUVBLENBQUM7QUFBQSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMscUVBQXFFIiwic291cmNlc0NvbnRlbnQiOlsiXG5cblxuaW1wb3J0IHR5cGUge1xuICBEYXRhU291cmNlLFxuICBEZWVwUGFydGlhbCxcbiAgRGVsZXRlUmVzdWx0LFxuICBGaW5kTWFueU9wdGlvbnMsXG4gIEZpbmRPbmVPcHRpb25zLFxuICBGaW5kT3B0aW9uc1doZXJlLFxuICBJbnNlcnRSZXN1bHQsXG5cbiAgUmVtb3ZlT3B0aW9ucyxcbiAgUmVwb3NpdG9yeSxcbiAgU2F2ZU9wdGlvbnMsXG4gIFVwZGF0ZVJlc3VsdCxcbn0gZnJvbSAndGFvbi10eXBlb3JtJztcblxuaW1wb3J0IHR5cGUgeyBRdWVyeURlZXBQYXJ0aWFsRW50aXR5IH0gZnJvbSAndGFvbi10eXBlb3JtL2xpYi90eXBlb3JtL3F1ZXJ5LWJ1aWxkZXIvUXVlcnlQYXJ0aWFsRW50aXR5JztcblxuaW1wb3J0IHR5cGUgeyBVcHNlcnRPcHRpb25zIH0gZnJvbSAndGFvbi10eXBlb3JtL2xpYi90eXBlb3JtL3JlcG9zaXRvcnkvVXBzZXJ0T3B0aW9ucyc7XG5cblxuXG5pbXBvcnQgdHlwZSB7IERhdGFTb3VyY2UgYXMgRGF0YVNvdXJjZVR5cGUgfSBmcm9tICd0YW9uLXR5cGVvcm0vd2Vic3FsJztcbmltcG9ydCB7IEVuZHBvaW50Q29udGV4dCB9IGZyb20gJy4uL2VuZHBvaW50LWNvbnRleHQnO1xuaW1wb3J0IHsgSGVscGVycyB9IGZyb20gJ3RucC1jb3JlL3dlYnNxbCc7XG5pbXBvcnQgeyBfIH0gZnJvbSAndG5wLWNvcmUvd2Vic3FsJztcbmltcG9ydCB7IENsYXNzSGVscGVycyB9IGZyb20gJy4uL2hlbHBlcnMvY2xhc3MtaGVscGVycyc7XG5pbXBvcnQgeyBNeVNxbFF1ZXJ5U291cmNlIH0gZnJvbSAndGFvbi10eXBlLXNxbC93ZWJzcWwnO1xuaW1wb3J0IHsgVGFvblJlcG9zaXRvcnkgfSBmcm9tICcuLi9kZWNvcmF0b3JzL2NsYXNzZXMvcmVwb3NpdG9yeS1kZWNvcmF0b3InO1xuaW1wb3J0IHsgQmFzZUluamVjdG9yIH0gZnJvbSAnLi9iYXNlLWluamVjdG9yJztcblxuXG5jb25zdCBJTkRFWF9LRVlTX05PX0ZPUl9VUERBVEUgPSBbJ2lkJ107XG5cbkBUYW9uUmVwb3NpdG9yeSh7IGNsYXNzTmFtZTogJ0Jhc2VSZXBvc2l0b3J5JyB9KVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VSZXBvc2l0b3J5PFxuICBFbnRpdHkgZXh0ZW5kcyB7IGlkPzogYW55IH0sXG4+IGV4dGVuZHMgQmFzZUluamVjdG9yIHtcblxuXG5cblxuXG5cbiAgYWJzdHJhY3QgZW50aXR5Q2xhc3NSZXNvbHZlRm46ICgpID0+IGFueTtcbiAgY29uc3RydWN0b3IoXG5cbiAgICBwcml2YXRlIF9fZW50aXR5Q2xhc3NSZXNvbHZlRm46ICgpID0+IGFueSxcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdGhpcy5lbnRpdHlDbGFzc1Jlc29sdmVGbiA9IF9fZW50aXR5Q2xhc3NSZXNvbHZlRm47XG4gIH1cblxuXG5cbiAgcHJpdmF0ZSBfX2RiUXVlcnk6IE15U3FsUXVlcnlTb3VyY2U7XG5cbiAgcHVibGljIGdldCBkYlF1ZXJ5KCk6IE15U3FsUXVlcnlTb3VyY2Uge1xuXG4gICAgaWYgKCF0aGlzLl9fZGJRdWVyeSkge1xuICAgICAgaWYgKCF0aGlzLmN0eCkge1xuICAgICAgICByZXR1cm47IC8vIFRPRE9cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBbQmFzZVJlcG9zaXRvcnldIENvbnRleHQgbm90IGluaXRlZCBmb3IgY2xhc3MgJHtDbGFzc0hlbHBlcnMuZ2V0TmFtZShcbiAgICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgKX1gLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgY29uc3QgY29ubmVjdGlvbiA9IHRoaXMuY3R4Py5jb25uZWN0aW9uO1xuICAgICAgaWYgKCFjb25uZWN0aW9uKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgW0Jhc2VSZXBvc2l0b3J5XSBEYXRhYmFzZSBub3QgaW5pdGVkIGZvciBjb250ZXh0ICR7dGhpcy5jdHg/LmNvbnRleHROYW1lfWAsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICB0aGlzLl9fZGJRdWVyeSA9IG5ldyBNeVNxbFF1ZXJ5U291cmNlKGNvbm5lY3Rpb24pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fX2RiUXVlcnk7XG5cbiAgfVxuXG5cblxuICBwdWJsaWMgZ2V0IGNvbm5lY3Rpb24oKTogRGF0YVNvdXJjZVR5cGUge1xuXG4gICAgcmV0dXJuIHRoaXMuY3R4Py5jb25uZWN0aW9uO1xuXG4gIH1cblxuXG5cblxuICBwcml2YXRlIF9fcmVwb3NpdG9yeTogUmVwb3NpdG9yeTxFbnRpdHk+O1xuXG4gIHByb3RlY3RlZCBnZXQgcmVwb3NpdG9yeSgpIHtcblxuICAgIHJldHVybiB0aGlzLl9fcmVwb3NpdG9yeTtcblxuICB9XG5cbiAgLyoqXG4gICAqIHRhcmdldCBmb3IgcmVwb3NpdG9yeVxuICAgKi9cbiAgcHVibGljIGdldCB0YXJnZXQoKTogRnVuY3Rpb24ge1xuXG4gICAgcmV0dXJuIHRoaXM/LnJlcG9zaXRvcnk/LnRhcmdldCBhcyBhbnk7XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBhbGlhcyB0byByZXBvc2l0b3J5XG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0IHJlcG8oKSB7XG5cbiAgICByZXR1cm4gdGhpcy5yZXBvc2l0b3J5O1xuXG4gIH1cblxuICBwdWJsaWMgZ2V0IHJlcG9zaXRvcnlFeGlzdHMoKTogYm9vbGVhbiB7XG5cbiAgICByZXR1cm4gISF0aGlzLl9fcmVwb3NpdG9yeTtcblxuICB9XG5cblxuXG5cblxuICBhc3luYyBfX2luaXQoY29udGV4dD86IGFueSkge1xuXG4gICAgaWYgKHRoaXMuX19yZXBvc2l0b3J5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCBlbnRpdHlDbGFzc0ZuOiBhbnkgPSB0aGlzLmVudGl0eUNsYXNzUmVzb2x2ZUZuKCk7XG4gICAgaWYgKCFlbnRpdHlDbGFzc0ZuKSB7XG4gICAgICBIZWxwZXJzLndhcm4oXG4gICAgICAgIGBFbnRpdHkgY2xhc3Mgbm90IHByb3ZpZGVkIGZvciByZXBvc2l0b3J5ICR7Q2xhc3NIZWxwZXJzLmdldE5hbWUoXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgKX1gLFxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY3R4OiBFbmRwb2ludENvbnRleHQgPSB0aGlzLl9fZW5kcG9pbnRfY29udGV4dF9fO1xuICAgIGlmIChjdHgucmVtb3RlSG9zdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBjb25uZWN0aW9uID0gY3R4LmNvbm5lY3Rpb247XG5cbiAgICBpZiAoIWNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgXG5cbiAgICAgICAgQ29ubmVjdGlvbiBub3QgZm91bmQgZm9yIGNvbnRleHQgJHtjdHguY29udGV4dE5hbWV9XG5cblxuICAgICAgICBNYXliZSB5b3UgZm9yZ290IHRvIGluaXQgZGF0YWJhc2UgP1xuXG4gICAgICAgIFRhb24uY3JlYXRlQ29udGV4dCh7XG4gICAgICAgIC4uLlxuICAgICAgICBkYXRhYmFzZTp0cnVlXG4gICAgICAgIC4uLlxuICAgICAgICB9KVxuXG4gICAgICAgIGApO1xuICAgIH1cblxuICAgIGlmICghZW50aXR5Q2xhc3NGbikge1xuICAgICAgSGVscGVycy53YXJuKFxuICAgICAgICBgRW50aXR5IGNsYXNzIG5vdCBmb3VuZCBmb3IgcmVwb3NpdG9yeSAke0NsYXNzSGVscGVycy5nZXROYW1lKHRoaXMpfWAsXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX19yZXBvc2l0b3J5ID0gKGF3YWl0IGNvbm5lY3Rpb24uZ2V0UmVwb3NpdG9yeShcbiAgICAgIENsYXNzSGVscGVycy5nZXRPcmdpbmFsQ2xhc3MoZW50aXR5Q2xhc3NGbiksXG4gICAgKSkgYXMgYW55O1xuXG5cblxuXG5cblxuICB9XG5cblxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgZW50aXR5IGhhcyBhbiBpZC5cbiAgICogSWYgZW50aXR5IGNvbXBvc2l0ZSBjb21wb3NlIGlkcywgaXQgd2lsbCBjaGVjayB0aGVtIGFsbC5cbiAgICovXG4gIGhhc0lkKGVudGl0eTogRW50aXR5KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucmVwby5oYXNJZChlbnRpdHkpO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBHZXRzIGVudGl0eSBtaXhlZCBpZC5cbiAgICovXG4gIGdldElkKGVudGl0eTogRW50aXR5KTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5yZXBvLmdldElkKGVudGl0eSk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAgU2F2ZXMgYSBnaXZlbiBlbnRpdHkgaW4gdGhlIGRhdGFiYXNlLlxuICAgKiBJZiBlbnRpdHkgZG9lcyBub3QgZXhpc3QgaW4gdGhlIGRhdGFiYXNlIHRoZW4gaW5zZXJ0cywgb3RoZXJ3aXNlIHVwZGF0ZXMuXG4gICAqL1xuICBhc3luYyBzYXZlKFxuICAgIGl0ZW06IEVudGl0eSxcbiAgICBvcHRpb25zPzogU2F2ZU9wdGlvbnMgJiB7XG4gICAgICByZWxvYWQ6IGZhbHNlO1xuICAgIH0sXG4gICk6IFByb21pc2U8RW50aXR5PiB7XG5cbiAgICBsZXQgbW9kZWwgPSBhd2FpdCB0aGlzLnJlcG8uY3JlYXRlKGl0ZW0pO1xuXG4gICAgbW9kZWwgPSBhd2FpdCB0aGlzLnJlcG8uc2F2ZShtb2RlbCwgb3B0aW9ucyk7XG4gICAgY29uc3QgeyBpZCB9ID0gbW9kZWwgYXMgYW55O1xuXG4gICAgbW9kZWwgPSBhd2FpdCB0aGlzLnJlcG8uZmluZE9uZSh7XG4gICAgICB3aGVyZTogeyBpZCB9IGFzIGFueSxcbiAgICB9KTtcblxuICAgIHJldHVybiBtb2RlbDtcblxuICB9XG5cbiAgLyoqXG4gICAqIGFsaWFzIHRvIHNhdmVcbiAgICogLT4gaXQgd2lsbCBhY3R1YWxsIGNyZWF0ZSBuZXcgZW50aXR5IGluIGRiXG4gICAqIGluIG9wb3NpdGUgdG8gdHlwZW9ybSBjcmVhdGUgbWV0aG9kXG4gICAqL1xuICBhc3luYyBjcmVhdGUoXG4gICAgaXRlbTogRW50aXR5LFxuICAgIG9wdGlvbnM/OiBTYXZlT3B0aW9ucyAmIHtcbiAgICAgIHJlbG9hZDogZmFsc2U7XG4gICAgfSxcbiAgKTogUHJvbWlzZTxFbnRpdHk+IHtcbiAgICByZXR1cm4gdGhpcy5zYXZlKGl0ZW0sIG9wdGlvbnMpO1xuICB9XG5cbiAgYXN5bmMgYnVsa1NhdmUoXG4gICAgaXRlbXM6IEVudGl0eVtdLFxuICAgIG9wdGlvbnM/OiBTYXZlT3B0aW9ucyAmIHtcbiAgICAgIHJlbG9hZDogZmFsc2U7XG4gICAgfSxcbiAgKTogUHJvbWlzZTxFbnRpdHlbXT4ge1xuXG4gICAgY29uc3QgbW9kZWxzID0gW107XG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGl0ZW1zLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgY29uc3QgaXRlbSA9IGl0ZW1zW2luZGV4XTtcblxuICAgICAgY29uc3QgbW9kZWwgPSBhd2FpdCB0aGlzLnNhdmUoaXRlbSwgb3B0aW9ucyk7XG4gICAgICBtb2RlbHMucHVzaChtb2RlbCk7XG4gICAgfVxuICAgIHJldHVybiBtb2RlbHM7XG5cbiAgfVxuXG4gIGFzeW5jIGJ1bGtDcmVhdGUoXG4gICAgaXRlbXM6IEVudGl0eVtdLFxuICAgIG9wdGlvbnM/OiBTYXZlT3B0aW9ucyAmIHtcbiAgICAgIHJlbG9hZDogZmFsc2U7XG4gICAgfSxcbiAgKTogUHJvbWlzZTxFbnRpdHlbXT4ge1xuICAgIHJldHVybiB0aGlzLmJ1bGtTYXZlKGl0ZW1zLCBvcHRpb25zKTtcbiAgfVxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG4gIC8qKlxuICAgKiBTYXZlcyBhbGwgZ2l2ZW4gZW50aXRpZXMgaW4gdGhlIGRhdGFiYXNlLlxuICAgKiBJZiBlbnRpdGllcyBkbyBub3QgZXhpc3QgaW4gdGhlIGRhdGFiYXNlIHRoZW4gaW5zZXJ0cywgb3RoZXJ3aXNlIHVwZGF0ZXMuXG4gICAqL1xuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuICAvKipcbiAgICogTWVyZ2VzIG11bHRpcGxlIGVudGl0aWVzIChvciBlbnRpdHktbGlrZSBvYmplY3RzKSBpbnRvIGEgZ2l2ZW4gZW50aXR5LlxuICAgKi9cbiAgbWVyZ2UobWVyZ2VJbnRvRW50aXR5OiBFbnRpdHksIC4uLmVudGl0eUxpa2VzOiBFbnRpdHlbXSk6IEVudGl0eSB7XG4gICAgcmV0dXJuIHRoaXMucmVwby5tZXJnZShtZXJnZUludG9FbnRpdHksIC4uLmVudGl0eUxpa2VzKTtcbiAgfVxuXG5cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBlbnRpdHkgZnJvbSB0aGUgZ2l2ZW4gcGxhaW4gamF2YXNjcmlwdCBvYmplY3QuIElmIGVudGl0eSBhbHJlYWR5IGV4aXN0IGluIHRoZSBkYXRhYmFzZSwgdGhlblxuICAgKiBpdCBsb2FkcyBpdCAoYW5kIGV2ZXJ5dGhpbmcgcmVsYXRlZCB0byBpdCksIHJlcGxhY2VzIGFsbCB2YWx1ZXMgd2l0aCB0aGUgbmV3IG9uZXMgZnJvbSB0aGUgZ2l2ZW4gb2JqZWN0XG4gICAqIGFuZCByZXR1cm5zIHRoaXMgbmV3IGVudGl0eS4gVGhpcyBuZXcgZW50aXR5IGlzIGFjdHVhbGx5IGEgbG9hZGVkIGZyb20gdGhlIGRiIGVudGl0eSB3aXRoIGFsbCBwcm9wZXJ0aWVzXG4gICAqIHJlcGxhY2VkIGZyb20gdGhlIG5ldyBvYmplY3QuXG4gICAqXG4gICAqIE5vdGUgdGhhdCBnaXZlbiBlbnRpdHktbGlrZSBvYmplY3QgbXVzdCBoYXZlIGFuIGVudGl0eSBpZCAvIHByaW1hcnkga2V5IHRvIGZpbmQgZW50aXR5IGJ5LlxuICAgKiBSZXR1cm5zIHVuZGVmaW5lZCBpZiBlbnRpdHkgd2l0aCBnaXZlbiBpZCB3YXMgbm90IGZvdW5kLlxuICAgKi9cbiAgcHJlbG9hZChlbnRpdHlMaWtlOiBFbnRpdHkpOiBQcm9taXNlPEVudGl0eSB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiB0aGlzLnJlcG8ucHJlbG9hZChlbnRpdHlMaWtlKTtcbiAgfVxuXG5cblxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGEgZ2l2ZW4gZW50aXRpZXMgZnJvbSB0aGUgZGF0YWJhc2UuXG4gICAqL1xuICBhc3luYyByZW1vdmUoaWRPckVudGl0eTogbnVtYmVyIHwgc3RyaW5nIHwgRW50aXR5KTogUHJvbWlzZTxFbnRpdHk+IHtcblxuICAgIGlmIChfLmlzT2JqZWN0KGlkT3JFbnRpdHkpKSB7XG4gICAgICBpZE9yRW50aXR5ID0gKGlkT3JFbnRpdHkgYXMgRW50aXR5KS5pZDtcbiAgICB9XG4gICAgY29uc3QgZGVsZXRlZEVudGl0eSA9IGF3YWl0IHRoaXMucmVwby5maW5kT25lKHtcbiAgICAgIHdoZXJlOiB7IGlkOiBpZE9yRW50aXR5IH0gYXMgYW55LFxuICAgIH0pO1xuXG4gICAgY29uc3QgaWRDb3B5ID0gZGVsZXRlZEVudGl0eS5pZDtcbiAgICBhd2FpdCB0aGlzLnJlcG8ucmVtb3ZlKGRlbGV0ZWRFbnRpdHkpO1xuXG4gICAgZGVsZXRlZEVudGl0eS5pZCA9IGlkQ29weTtcbiAgICByZXR1cm4gZGVsZXRlZEVudGl0eTtcblxuICB9XG5cbiAgLyoqXG4gICAqIGFsaWFzIHRvIHJlbW92ZVxuICAgKi9cbiAgYXN5bmMgZGVsZXRlKGlkT3JFbnRpdHk6IG51bWJlciB8IHN0cmluZyB8IEVudGl0eSk6IFByb21pc2U8RW50aXR5PiB7XG4gICAgcmV0dXJuIHRoaXMucmVtb3ZlKGlkT3JFbnRpdHkpO1xuICB9XG5cbiAgLyoqXG4gICAqIGFsaWFzIHRvIHJlbW92ZUJ5SWRcbiAgICovXG4gIGFzeW5jIGRlbGV0ZUJ5SWQoaWQ6IG51bWJlciB8IHN0cmluZyk6IFByb21pc2U8RW50aXR5PiB7XG4gICAgcmV0dXJuIHRoaXMucmVtb3ZlKGlkKTtcbiAgfVxuICBhc3luYyBidWxrUmVtb3ZlKFxuICAgIGlkc09yRW50aXRpZXM6IChudW1iZXIgfCBzdHJpbmcgfCBFbnRpdHkpW10sXG4gICk6IFByb21pc2U8RW50aXR5W10+IHtcblxuICAgIGlkc09yRW50aXRpZXMgPSBpZHNPckVudGl0aWVzLm1hcChpZCA9PiB7XG4gICAgICByZXR1cm4gXy5pc09iamVjdChpZCkgPyAoaWQgYXMgRW50aXR5KS5pZCA6IGlkO1xuICAgIH0pO1xuXG4gICAgY29uc3QgbW9kZWxzID0gW107XG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGlkc09yRW50aXRpZXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBjb25zdCBpZCA9IGlkc09yRW50aXRpZXNbaW5kZXhdO1xuICAgICAgY29uc3QgbW9kZWwgPSBhd2FpdCB0aGlzLnJlbW92ZShpZCk7XG4gICAgICBtb2RlbHMucHVzaChtb2RlbCk7XG4gICAgfVxuICAgIHJldHVybiBtb2RlbHM7XG5cbiAgfVxuXG4gIGFzeW5jIGJ1bGtEZWxldGUoaWRzOiAobnVtYmVyIHwgc3RyaW5nIHwgRW50aXR5KVtdKTogUHJvbWlzZTxFbnRpdHlbXT4ge1xuICAgIHJldHVybiB0aGlzLmJ1bGtSZW1vdmUoaWRzKTtcbiAgfVxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbiAgLyoqXG4gICAqIFJlY29yZHMgdGhlIGRlbGV0ZSBkYXRlIG9mIGFsbCBnaXZlbiBlbnRpdGllcy5cbiAgICovXG4gIHNvZnRSZW1vdmU8VCBleHRlbmRzIEVudGl0eT4oXG4gICAgZW50aXRpZXM6IFRbXSxcbiAgICBvcHRpb25zOiBTYXZlT3B0aW9ucyAmIHtcbiAgICAgIHJlbG9hZDogZmFsc2U7XG4gICAgfSxcbiAgKTogUHJvbWlzZTxUW10+O1xuICAvKipcbiAgICogUmVjb3JkcyB0aGUgZGVsZXRlIGRhdGUgb2YgYWxsIGdpdmVuIGVudGl0aWVzLlxuICAgKi9cbiAgc29mdFJlbW92ZTxUIGV4dGVuZHMgRW50aXR5PihcbiAgICBlbnRpdGllczogVFtdLFxuICAgIG9wdGlvbnM/OiBTYXZlT3B0aW9ucyxcbiAgKTogUHJvbWlzZTwoVCAmIEVudGl0eSlbXT47XG4gIC8qKlxuICAgKiBSZWNvcmRzIHRoZSBkZWxldGUgZGF0ZSBvZiBhIGdpdmVuIGVudGl0eS5cbiAgICovXG4gIHNvZnRSZW1vdmU8VCBleHRlbmRzIEVudGl0eT4oXG4gICAgZW50aXR5OiBULFxuICAgIG9wdGlvbnM6IFNhdmVPcHRpb25zICYge1xuICAgICAgcmVsb2FkOiBmYWxzZTtcbiAgICB9LFxuICApOiBQcm9taXNlPFQ+O1xuICAvKipcbiAgICogUmVjb3JkcyB0aGUgZGVsZXRlIGRhdGUgb2YgYSBnaXZlbiBlbnRpdHkuXG4gICAqL1xuICBzb2Z0UmVtb3ZlPFQgZXh0ZW5kcyBFbnRpdHk+KFxuICAgIGVudGl0eTogVCxcbiAgICBvcHRpb25zPzogU2F2ZU9wdGlvbnMsXG4gICk6IFByb21pc2U8VCAmIEVudGl0eT4ge1xuICAgIHJldHVybiB0aGlzLnJlcG8uc29mdFJlbW92ZShlbnRpdHksIG9wdGlvbnMpO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBSZWNvdmVycyBhbGwgZ2l2ZW4gZW50aXRpZXMgaW4gdGhlIGRhdGFiYXNlLlxuICAgKi9cbiAgcmVjb3ZlcjxUIGV4dGVuZHMgRW50aXR5PihcbiAgICBlbnRpdGllczogVFtdLFxuICAgIG9wdGlvbnM6IFNhdmVPcHRpb25zICYge1xuICAgICAgcmVsb2FkOiBmYWxzZTtcbiAgICB9LFxuICApOiBQcm9taXNlPFRbXT47XG4gIC8qKlxuICAgKiBSZWNvdmVycyBhbGwgZ2l2ZW4gZW50aXRpZXMgaW4gdGhlIGRhdGFiYXNlLlxuICAgKi9cbiAgcmVjb3ZlcjxUIGV4dGVuZHMgRW50aXR5PihcbiAgICBlbnRpdGllczogVFtdLFxuICAgIG9wdGlvbnM/OiBTYXZlT3B0aW9ucyxcbiAgKTogUHJvbWlzZTwoVCAmIEVudGl0eSlbXT47XG4gIC8qKlxuICAgKiBSZWNvdmVycyBhIGdpdmVuIGVudGl0eSBpbiB0aGUgZGF0YWJhc2UuXG4gICAqL1xuICByZWNvdmVyPFQgZXh0ZW5kcyBFbnRpdHk+KFxuICAgIGVudGl0eTogVCxcbiAgICBvcHRpb25zOiBTYXZlT3B0aW9ucyAmIHtcbiAgICAgIHJlbG9hZDogZmFsc2U7XG4gICAgfSxcbiAgKTogUHJvbWlzZTxUPjtcbiAgLyoqXG4gICAqIFJlY292ZXJzIGEgZ2l2ZW4gZW50aXR5IGluIHRoZSBkYXRhYmFzZS5cbiAgICovXG4gIHJlY292ZXI8VCBleHRlbmRzIEVudGl0eT4oXG4gICAgZW50aXR5OiBULFxuICAgIG9wdGlvbnM/OiBTYXZlT3B0aW9ucyxcbiAgKTogUHJvbWlzZTxUICYgRW50aXR5PiB7XG4gICAgcmV0dXJuIHRoaXMucmVwby5yZWNvdmVyKGVudGl0eSwgb3B0aW9ucyk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIEluc2VydHMgYSBnaXZlbiBlbnRpdHkgaW50byB0aGUgZGF0YWJhc2UuXG4gICAqIFVubGlrZSBzYXZlIG1ldGhvZCBleGVjdXRlcyBhIHByaW1pdGl2ZSBvcGVyYXRpb24gd2l0aG91dCBjYXNjYWRlcywgcmVsYXRpb25zIGFuZCBvdGhlciBvcGVyYXRpb25zIGluY2x1ZGVkLlxuICAgKiBFeGVjdXRlcyBmYXN0IGFuZCBlZmZpY2llbnQgSU5TRVJUIHF1ZXJ5LlxuICAgKiBEb2VzIG5vdCBjaGVjayBpZiBlbnRpdHkgZXhpc3QgaW4gdGhlIGRhdGFiYXNlLCBzbyBxdWVyeSB3aWxsIGZhaWwgaWYgZHVwbGljYXRlIGVudGl0eSBpcyBiZWluZyBpbnNlcnRlZC5cbiAgICovXG4gIGluc2VydChcbiAgICBlbnRpdHk6IFF1ZXJ5RGVlcFBhcnRpYWxFbnRpdHk8RW50aXR5PiB8IFF1ZXJ5RGVlcFBhcnRpYWxFbnRpdHk8RW50aXR5PltdLFxuICApOiBQcm9taXNlPEluc2VydFJlc3VsdD4ge1xuICAgIHJldHVybiB0aGlzLnJlcG8uaW5zZXJ0KGVudGl0eSk7XG4gIH1cblxuXG5cbiAgYXN5bmMgdXBkYXRlKGl0ZW06IEVudGl0eSkge1xuXG4gICAgY29uc3QgeyBpZCB9ID0gaXRlbSBhcyBhbnk7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMudXBkYXRlQnlJZChpZCwgaXRlbSk7XG5cbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZUJ5SWQoaWQ6IG51bWJlciB8IHN0cmluZywgaXRlbTogRW50aXR5KSB7XG5cbiAgICBjb25zdCBhbGxvd2VkUHJvcHNUb1VwZGF0ZSA9IFtdO1xuICAgIGZvciAoY29uc3Qga2V5IGluIGl0ZW0pIHtcbiAgICAgIGlmIChcbiAgICAgICAgXy5pc09iamVjdChpdGVtKSAmJlxuICAgICAgICBpdGVtLmhhc093blByb3BlcnR5KGtleSkgJiZcbiAgICAgICAgdHlwZW9mIGl0ZW1ba2V5XSAhPT0gJ29iamVjdCcgJiZcbiAgICAgICAgIV8uaXNVbmRlZmluZWQoXG4gICAgICAgICAgdGhpcy5yZXBvLm1ldGFkYXRhLm93bkNvbHVtbnMuZmluZChjID0+IGMucHJvcGVydHlOYW1lID09PSBrZXkpLFxuICAgICAgICApXG4gICAgICApIHtcbiAgICAgICAgYWxsb3dlZFByb3BzVG9VcGRhdGUucHVzaChrZXkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYWxsb3dlZFByb3BzVG9VcGRhdGUubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGtleTogc3RyaW5nID0gYWxsb3dlZFByb3BzVG9VcGRhdGVbaV07XG4gICAgICBpZiAoIUlOREVYX0tFWVNfTk9fRk9SX1VQREFURS5pbmNsdWRlcyhrZXkudG9Mb3dlckNhc2UoKSkpIHtcblxuICAgICAgICBjb25zdCB0b1NldCA9IGl0ZW1ba2V5XTtcblxuXG4gICAgICAgIGF3YWl0IHRoaXMucmVwby51cGRhdGUoXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQsXG4gICAgICAgICAgfSBhcyBhbnksXG4gICAgICAgICAge1xuICAgICAgICAgICAgW2tleV06IHRvU2V0LFxuICAgICAgICAgIH0gYXMgYW55LFxuICAgICAgICApO1xuXG5cblxuXG5cbiAgICAgIH1cbiAgICB9XG4gICAgbGV0IG1vZGVsID0gYXdhaXQgdGhpcy5yZXBvLmZpbmRPbmUoe1xuICAgICAgd2hlcmU6IHsgaWQgfSBhcyBhbnksXG4gICAgfSk7XG5cbiAgICByZXR1cm4gbW9kZWw7XG5cbiAgfVxuICBhc3luYyBidWxrVXBkYXRlKGl0ZW1zOiBFbnRpdHlbXSkge1xuXG4gICAgY29uc3QgbW9kZWxzID0gW107XG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGl0ZW1zLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgY29uc3QgaXRlbSA9IGl0ZW1zW2luZGV4XTtcbiAgICAgIGNvbnN0IHsgaWQgfSA9IGl0ZW0gYXMgYW55OyAvLyBUT09EXG4gICAgICBjb25zdCBtb2RlbCA9IGF3YWl0IHRoaXMudXBkYXRlQnlJZChpZCwgaXRlbSk7XG4gICAgICBtb2RlbHMucHVzaChtb2RlbCk7XG4gICAgfVxuICAgIHJldHVybiB7IG1vZGVscyB9O1xuXG4gIH1cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG4gIC8qKlxuICAgKiBJbnNlcnRzIGEgZ2l2ZW4gZW50aXR5IGludG8gdGhlIGRhdGFiYXNlLCB1bmxlc3MgYSB1bmlxdWUgY29uc3RyYWludCBjb25mbGljdHMgdGhlbiB1cGRhdGVzIHRoZSBlbnRpdHlcbiAgICogVW5saWtlIHNhdmUgbWV0aG9kIGV4ZWN1dGVzIGEgcHJpbWl0aXZlIG9wZXJhdGlvbiB3aXRob3V0IGNhc2NhZGVzLCByZWxhdGlvbnMgYW5kIG90aGVyIG9wZXJhdGlvbnMgaW5jbHVkZWQuXG4gICAqIEV4ZWN1dGVzIGZhc3QgYW5kIGVmZmljaWVudCBJTlNFUlQgLi4uIE9OIENPTkZMSUNUIERPIFVQREFURS9PTiBEVVBMSUNBVEUgS0VZIFVQREFURSBxdWVyeS5cbiAgICovXG4gIHVwc2VydChcbiAgICBlbnRpdHlPckVudGl0aWVzOlxuICAgICAgfCBRdWVyeURlZXBQYXJ0aWFsRW50aXR5PEVudGl0eT5cbiAgICAgIHwgUXVlcnlEZWVwUGFydGlhbEVudGl0eTxFbnRpdHk+W10sXG4gICAgY29uZmxpY3RQYXRoc09yT3B0aW9uczogc3RyaW5nW10gfCBVcHNlcnRPcHRpb25zPEVudGl0eT4sXG4gICk6IFByb21pc2U8SW5zZXJ0UmVzdWx0PiB7XG4gICAgcmV0dXJuIHRoaXMucmVwby51cHNlcnQoZW50aXR5T3JFbnRpdGllcywgY29uZmxpY3RQYXRoc09yT3B0aW9ucyk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIFJlY29yZHMgdGhlIGRlbGV0ZSBkYXRlIG9mIGVudGl0aWVzIGJ5IGEgZ2l2ZW4gY3JpdGVyaWEuXG4gICAqIFVubGlrZSBzYXZlIG1ldGhvZCBleGVjdXRlcyBhIHByaW1pdGl2ZSBvcGVyYXRpb24gd2l0aG91dCBjYXNjYWRlcywgcmVsYXRpb25zIGFuZCBvdGhlciBvcGVyYXRpb25zIGluY2x1ZGVkLlxuICAgKiBFeGVjdXRlcyBmYXN0IGFuZCBlZmZpY2llbnQgU09GVC1ERUxFVEUgcXVlcnkuXG4gICAqIERvZXMgbm90IGNoZWNrIGlmIGVudGl0eSBleGlzdCBpbiB0aGUgZGF0YWJhc2UuXG4gICAqL1xuICBzb2Z0RGVsZXRlKFxuICAgIGNyaXRlcmlhOlxuICAgICAgfCBzdHJpbmdcbiAgICAgIHwgc3RyaW5nW11cbiAgICAgIHwgbnVtYmVyXG4gICAgICB8IG51bWJlcltdXG4gICAgICB8IERhdGVcbiAgICAgIHwgRGF0ZVtdXG5cblxuICAgICAgfCBGaW5kT3B0aW9uc1doZXJlPEVudGl0eT4sXG4gICk6IFByb21pc2U8VXBkYXRlUmVzdWx0PiB7XG4gICAgcmV0dXJuIHRoaXMucmVwby5zb2Z0RGVsZXRlKGNyaXRlcmlhKTtcbiAgfVxuXG5cblxuICAvKipcbiAgICogUmVzdG9yZXMgZW50aXRpZXMgYnkgYSBnaXZlbiBjcml0ZXJpYS5cbiAgICogVW5saWtlIHNhdmUgbWV0aG9kIGV4ZWN1dGVzIGEgcHJpbWl0aXZlIG9wZXJhdGlvbiB3aXRob3V0IGNhc2NhZGVzLCByZWxhdGlvbnMgYW5kIG90aGVyIG9wZXJhdGlvbnMgaW5jbHVkZWQuXG4gICAqIEV4ZWN1dGVzIGZhc3QgYW5kIGVmZmljaWVudCBTT0ZULURFTEVURSBxdWVyeS5cbiAgICogRG9lcyBub3QgY2hlY2sgaWYgZW50aXR5IGV4aXN0IGluIHRoZSBkYXRhYmFzZS5cbiAgICovXG4gIHJlc3RvcmUoXG4gICAgY3JpdGVyaWE6XG4gICAgICB8IHN0cmluZ1xuICAgICAgfCBzdHJpbmdbXVxuICAgICAgfCBudW1iZXJcbiAgICAgIHwgbnVtYmVyW11cbiAgICAgIHwgRGF0ZVxuICAgICAgfCBEYXRlW11cblxuXG4gICAgICB8IEZpbmRPcHRpb25zV2hlcmU8RW50aXR5PixcbiAgKTogUHJvbWlzZTxVcGRhdGVSZXN1bHQ+IHtcbiAgICByZXR1cm4gdGhpcy5yZXBvLnJlc3RvcmUoY3JpdGVyaWEpO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBDb3VudHMgZW50aXRpZXMgdGhhdCBtYXRjaCBnaXZlbiBvcHRpb25zLlxuICAgKiBVc2VmdWwgZm9yIHBhZ2luYXRpb24uXG4gICAqL1xuICBjb3VudChvcHRpb25zPzogRmluZE1hbnlPcHRpb25zPEVudGl0eT4pOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLnJlcG8uY291bnQob3B0aW9ucyk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIENvdW50cyBlbnRpdGllcyB0aGF0IG1hdGNoIGdpdmVuIGNvbmRpdGlvbnMuXG4gICAqIFVzZWZ1bCBmb3IgcGFnaW5hdGlvbi5cbiAgICovXG4gIGNvdW50QnkoXG4gICAgd2hlcmU6IEZpbmRPcHRpb25zV2hlcmU8RW50aXR5PiB8IEZpbmRPcHRpb25zV2hlcmU8RW50aXR5PltdLFxuICApOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLnJlcG8uY291bnRCeSh3aGVyZSk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIEZpbmRzIGVudGl0aWVzIHRoYXQgbWF0Y2ggZ2l2ZW4gZmluZCBvcHRpb25zLlxuICAgKi9cbiAgZmluZChvcHRpb25zPzogRmluZE1hbnlPcHRpb25zPEVudGl0eT4pOiBQcm9taXNlPEVudGl0eVtdPiB7XG4gICAgcmV0dXJuIHRoaXMucmVwby5maW5kKG9wdGlvbnMpO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBGaW5kcyBlbnRpdGllcyB0aGF0IG1hdGNoIGdpdmVuIGZpbmQgb3B0aW9ucy5cbiAgICovXG4gIGZpbmRCeShcbiAgICB3aGVyZTogRmluZE9wdGlvbnNXaGVyZTxFbnRpdHk+IHwgRmluZE9wdGlvbnNXaGVyZTxFbnRpdHk+W10sXG4gICk6IFByb21pc2U8RW50aXR5W10+IHtcbiAgICByZXR1cm4gdGhpcy5yZXBvLmZpbmRCeSh3aGVyZSk7XG4gIH1cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG4gIC8vXG4gIC8qKlxuICAgKiBGaW5kcyBlbnRpdGllcyB0aGF0IG1hdGNoIGdpdmVuIGZpbmQgb3B0aW9ucy5cbiAgICogQWxzbyBjb3VudHMgYWxsIGVudGl0aWVzIHRoYXQgbWF0Y2ggZ2l2ZW4gY29uZGl0aW9ucyxcbiAgICogYnV0IGlnbm9yZXMgcGFnaW5hdGlvbiBzZXR0aW5ncyAoZnJvbSBhbmQgdGFrZSBvcHRpb25zKS5cbiAgICovXG4gIGZpbmRBbmRDb3VudChvcHRpb25zPzogRmluZE1hbnlPcHRpb25zPEVudGl0eT4pOiBQcm9taXNlPFtFbnRpdHlbXSwgbnVtYmVyXT4ge1xuICAgIHJldHVybiB0aGlzLnJlcG8uZmluZEFuZENvdW50KG9wdGlvbnMpO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBGaW5kcyBlbnRpdGllcyB0aGF0IG1hdGNoIGdpdmVuIFdIRVJFIGNvbmRpdGlvbnMuXG4gICAqIEFsc28gY291bnRzIGFsbCBlbnRpdGllcyB0aGF0IG1hdGNoIGdpdmVuIGNvbmRpdGlvbnMsXG4gICAqIGJ1dCBpZ25vcmVzIHBhZ2luYXRpb24gc2V0dGluZ3MgKGZyb20gYW5kIHRha2Ugb3B0aW9ucykuXG4gICAqL1xuICBmaW5kQW5kQ291bnRCeShcbiAgICB3aGVyZTogRmluZE9wdGlvbnNXaGVyZTxFbnRpdHk+IHwgRmluZE9wdGlvbnNXaGVyZTxFbnRpdHk+W10sXG4gICk6IFByb21pc2U8W0VudGl0eVtdLCBudW1iZXJdPiB7XG4gICAgcmV0dXJuIHRoaXMucmVwby5maW5kQW5kQ291bnRCeSh3aGVyZSk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIEZpbmRzIGVudGl0aWVzIHdpdGggaWRzLlxuICAgKiBPcHRpb25hbGx5IGZpbmQgb3B0aW9ucyBvciBjb25kaXRpb25zIGNhbiBiZSBhcHBsaWVkLlxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgYGZpbmRCeWAgbWV0aG9kIGluc3RlYWQgaW4gY29uanVuY3Rpb24gd2l0aCBgSW5gIG9wZXJhdG9yLCBmb3IgZXhhbXBsZTpcbiAgICpcbiAgICogLmZpbmRCeSh7XG4gICAqICAgICBpZDogSW4oWzEsIDIsIDNdKVxuICAgKiB9KVxuICAgKi9cbiAgZmluZEJ5SWRzKGlkczogYW55W10pOiBQcm9taXNlPEVudGl0eVtdPiB7XG4gICAgcmV0dXJuIHRoaXMucmVwby5maW5kQnlJZHMoaWRzKTtcbiAgfVxuXG5cblxuICAvKipcbiAgICogRmluZHMgZmlyc3QgZW50aXR5IGJ5IGEgZ2l2ZW4gZmluZCBvcHRpb25zLlxuICAgKiBJZiBlbnRpdHkgd2FzIG5vdCBmb3VuZCBpbiB0aGUgZGF0YWJhc2UgLSByZXR1cm5zIG51bGwuXG4gICAqL1xuICBmaW5kT25lKG9wdGlvbnM6IEZpbmRPbmVPcHRpb25zPEVudGl0eT4pOiBQcm9taXNlPEVudGl0eSB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5yZXBvLmZpbmRPbmUob3B0aW9ucyk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIEZpbmRzIGZpcnN0IGVudGl0eSB0aGF0IG1hdGNoZXMgZ2l2ZW4gd2hlcmUgY29uZGl0aW9uLlxuICAgKiBJZiBlbnRpdHkgd2FzIG5vdCBmb3VuZCBpbiB0aGUgZGF0YWJhc2UgLSByZXR1cm5zIG51bGwuXG4gICAqL1xuICBmaW5kT25lQnkoXG4gICAgd2hlcmU6IEZpbmRPcHRpb25zV2hlcmU8RW50aXR5PiB8IEZpbmRPcHRpb25zV2hlcmU8RW50aXR5PltdLFxuICApOiBQcm9taXNlPEVudGl0eSB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5yZXBvLmZpbmRPbmVCeSh3aGVyZSk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIEZpbmRzIGZpcnN0IGVudGl0eSB0aGF0IG1hdGNoZXMgZ2l2ZW4gaWQuXG4gICAqIElmIGVudGl0eSB3YXMgbm90IGZvdW5kIGluIHRoZSBkYXRhYmFzZSAtIHJldHVybnMgbnVsbC5cbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGBmaW5kT25lQnlgIG1ldGhvZCBpbnN0ZWFkIGluIGNvbmp1bmN0aW9uIHdpdGggYEluYCBvcGVyYXRvciwgZm9yIGV4YW1wbGU6XG4gICAqXG4gICAqIC5maW5kT25lQnkoe1xuICAgKiAgICAgaWQ6IDEgLy8gd2hlcmUgXCJpZFwiIGlzIHlvdXIgcHJpbWFyeSBjb2x1bW4gbmFtZVxuICAgKiB9KVxuICAgKi9cbiAgZmluZE9uZUJ5SWQoXG4gICAgaWQ6IG51bWJlciB8IHN0cmluZyB8IERhdGUsXG5cbiAgKTogUHJvbWlzZTxFbnRpdHkgfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMucmVwby5maW5kT25lQnlJZChpZCk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIEZpbmRzIGZpcnN0IGVudGl0eSBieSBhIGdpdmVuIGZpbmQgb3B0aW9ucy5cbiAgICogSWYgZW50aXR5IHdhcyBub3QgZm91bmQgaW4gdGhlIGRhdGFiYXNlIC0gcmVqZWN0cyB3aXRoIGVycm9yLlxuICAgKi9cbiAgZmluZE9uZU9yRmFpbChvcHRpb25zOiBGaW5kT25lT3B0aW9uczxFbnRpdHk+KTogUHJvbWlzZTxFbnRpdHk+IHtcbiAgICByZXR1cm4gdGhpcy5yZXBvLmZpbmRPbmVPckZhaWwob3B0aW9ucyk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIEZpbmRzIGZpcnN0IGVudGl0eSB0aGF0IG1hdGNoZXMgZ2l2ZW4gd2hlcmUgY29uZGl0aW9uLlxuICAgKiBJZiBlbnRpdHkgd2FzIG5vdCBmb3VuZCBpbiB0aGUgZGF0YWJhc2UgLSByZWplY3RzIHdpdGggZXJyb3IuXG4gICAqL1xuICBmaW5kT25lQnlPckZhaWwoXG4gICAgd2hlcmU6IEZpbmRPcHRpb25zV2hlcmU8RW50aXR5PiB8IEZpbmRPcHRpb25zV2hlcmU8RW50aXR5PltdLFxuICApOiBQcm9taXNlPEVudGl0eT4ge1xuICAgIHJldHVybiB0aGlzLnJlcG8uZmluZE9uZUJ5T3JGYWlsKHdoZXJlKTtcbiAgfVxuXG5cblxuICAvKipcbiAgICogRXhlY3V0ZXMgYSByYXcgU1FMIHF1ZXJ5IGFuZCByZXR1cm5zIGEgcmF3IGRhdGFiYXNlIHJlc3VsdHMuXG4gICAqIFJhdyBxdWVyeSBleGVjdXRpb24gaXMgc3VwcG9ydGVkIG9ubHkgYnkgcmVsYXRpb25hbCBkYXRhYmFzZXMgKE1vbmdvREIgaXMgbm90IHN1cHBvcnRlZCkuXG4gICAqL1xuICBxdWVyeShxdWVyeTogc3RyaW5nLCBwYXJhbWV0ZXJzPzogYW55W10pOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnJlcG8ucXVlcnkocXVlcnksIHBhcmFtZXRlcnMpO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBDbGVhcnMgYWxsIHRoZSBkYXRhIGZyb20gdGhlIGdpdmVuIHRhYmxlL2NvbGxlY3Rpb24gKHRydW5jYXRlcy9kcm9wcyBpdCkuXG4gICAqXG4gICAqIE5vdGU6IHRoaXMgbWV0aG9kIHVzZXMgVFJVTkNBVEUgYW5kIG1heSBub3Qgd29yayBhcyB5b3UgZXhwZWN0IGluIHRyYW5zYWN0aW9ucyBvbiBzb21lIHBsYXRmb3Jtcy5cbiAgICogQHNlZSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvNTk3MjczOC85MjUxNTFcbiAgICovXG4gIGNsZWFyKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLnJlcG8uY2xlYXIoKTtcbiAgfVxuXG5cblxuICAvKipcbiAgICogSW5jcmVtZW50cyBzb21lIGNvbHVtbiBieSBwcm92aWRlZCB2YWx1ZSBvZiB0aGUgZW50aXRpZXMgbWF0Y2hlZCBnaXZlbiBjb25kaXRpb25zLlxuICAgKi9cbiAgaW5jcmVtZW50KFxuICAgIGNvbmRpdGlvbnM6IEZpbmRPcHRpb25zV2hlcmU8RW50aXR5PixcbiAgICBwcm9wZXJ0eVBhdGg6IHN0cmluZyxcbiAgICB2YWx1ZTogbnVtYmVyIHwgc3RyaW5nLFxuICApOiBQcm9taXNlPFVwZGF0ZVJlc3VsdD4ge1xuICAgIHJldHVybiB0aGlzLnJlcG8uaW5jcmVtZW50KGNvbmRpdGlvbnMsIHByb3BlcnR5UGF0aCwgdmFsdWUpO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBEZWNyZW1lbnRzIHNvbWUgY29sdW1uIGJ5IHByb3ZpZGVkIHZhbHVlIG9mIHRoZSBlbnRpdGllcyBtYXRjaGVkIGdpdmVuIGNvbmRpdGlvbnMuXG4gICAqL1xuICBkZWNyZW1lbnQoXG4gICAgY29uZGl0aW9uczogRmluZE9wdGlvbnNXaGVyZTxFbnRpdHk+LFxuICAgIHByb3BlcnR5UGF0aDogc3RyaW5nLFxuICAgIHZhbHVlOiBudW1iZXIgfCBzdHJpbmcsXG4gICk6IFByb21pc2U8VXBkYXRlUmVzdWx0PiB7XG4gICAgcmV0dXJuIHRoaXMucmVwby5kZWNyZW1lbnQoY29uZGl0aW9ucywgcHJvcGVydHlQYXRoLCB2YWx1ZSk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBmaW5kQW5kQ291bnQgaW5zdGVhZFxuICAgKi9cbiAgYXN5bmMgZ2V0QWxsKCkge1xuXG5cblxuXG5cblxuICAgIGNvbnN0IHRvdGFsQ291bnQgPSBhd2FpdCB0aGlzLnJlcG8uY291bnQoKTtcbiAgICBjb25zdCBtb2RlbHMgPSBhd2FpdCB0aGlzLnJlcG8uZmluZCgpO1xuXG5cbiAgICByZXR1cm4geyBtb2RlbHMsIHRvdGFsQ291bnQgfTtcblxuICB9XG5cblxuXG4gIGFzeW5jIGdldEJ5KGlkOiBudW1iZXIgfCBzdHJpbmcpOiBQcm9taXNlPEVudGl0eT4ge1xuXG4gICAgY29uc3QgbW9kZWwgPSBhd2FpdCBhd2FpdCB0aGlzLnJlcG8uZmluZE9uZSh7XG4gICAgICB3aGVyZTogeyBpZCB9IGFzIGFueSxcbiAgICB9KTtcblxuICAgIHJldHVybiBtb2RlbDtcblxuICB9XG5cbn1cblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPXRhb24gbGliL2Jhc2UtY2xhc3Nlcy9iYXNlLXJlcG9zaXRvcnkudHMiXX0=
|
|
@@ -1,156 +0,0 @@
|
|
|
1
|
-
import { __decorate } from "tslib";
|
|
2
|
-
/* */
|
|
3
|
-
/* */
|
|
4
|
-
/* */
|
|
5
|
-
/* */
|
|
6
|
-
/* */
|
|
7
|
-
/* */
|
|
8
|
-
/* */
|
|
9
|
-
/* */
|
|
10
|
-
/* */
|
|
11
|
-
import { BaseInjector } from './base-injector';
|
|
12
|
-
import { TaonSubscriber } from '../decorators/classes/subscriber-decorator';
|
|
13
|
-
let BaseSubscriberForEntity = class BaseSubscriberForEntity extends BaseInjector {
|
|
14
|
-
/**
|
|
15
|
-
* Called after entity is loaded.
|
|
16
|
-
*/
|
|
17
|
-
afterLoad(entity) {
|
|
18
|
-
this.ctx.logDb &&
|
|
19
|
-
console.log(`AFTER ENTITY LOADED: `, entity);
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Called before query execution.
|
|
23
|
-
*/
|
|
24
|
-
beforeQuery(event) {
|
|
25
|
-
this.ctx.logDb &&
|
|
26
|
-
console.log(`BEFORE QUERY: `, event.query);
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Called after query execution.
|
|
30
|
-
*/
|
|
31
|
-
afterQuery(event) {
|
|
32
|
-
this.ctx.logDb &&
|
|
33
|
-
console.log(`AFTER QUERY: `, event.query);
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Called before entity insertion.
|
|
37
|
-
*/
|
|
38
|
-
beforeInsert(event) {
|
|
39
|
-
this.ctx.logDb &&
|
|
40
|
-
console.log(`BEFORE ENTITY INSERTED: `, event.entity);
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Called after entity insertion.
|
|
44
|
-
*/
|
|
45
|
-
afterInsert(event) {
|
|
46
|
-
this.ctx.logDb &&
|
|
47
|
-
console.log(`AFTER ENTITY INSERTED: `, event.entity);
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Called before entity update.
|
|
51
|
-
*/
|
|
52
|
-
beforeUpdate(event) {
|
|
53
|
-
this.ctx.logDb &&
|
|
54
|
-
console.log(`BEFORE ENTITY UPDATED: `, event.entity);
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Called after entity update.
|
|
58
|
-
*/
|
|
59
|
-
afterUpdate(event) {
|
|
60
|
-
this.ctx.logDb &&
|
|
61
|
-
console.log(`AFTER ENTITY UPDATED: `, event.entity);
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Called before entity removal.
|
|
65
|
-
*/
|
|
66
|
-
beforeRemove(event) {
|
|
67
|
-
this.ctx.logDb &&
|
|
68
|
-
console.log(`BEFORE ENTITY WITH ID ${event.entityId} REMOVED: `, event.entity);
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Called after entity removal.
|
|
72
|
-
*/
|
|
73
|
-
afterRemove(event) {
|
|
74
|
-
this.ctx.logDb &&
|
|
75
|
-
console.log(`AFTER ENTITY WITH ID ${event.entityId} REMOVED: `, event.entity);
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* Called before entity removal.
|
|
79
|
-
*/
|
|
80
|
-
beforeSoftRemove(event) {
|
|
81
|
-
this.ctx.logDb &&
|
|
82
|
-
console.log(`BEFORE ENTITY WITH ID ${event.entityId} SOFT REMOVED: `, event.entity);
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Called after entity removal.
|
|
86
|
-
*/
|
|
87
|
-
afterSoftRemove(event) {
|
|
88
|
-
this.ctx.logDb &&
|
|
89
|
-
console.log(`AFTER ENTITY WITH ID ${event.entityId} SOFT REMOVED: `, event.entity);
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* Called before entity recovery.
|
|
93
|
-
*/
|
|
94
|
-
beforeRecover(event) {
|
|
95
|
-
this.ctx.logDb &&
|
|
96
|
-
console.log(`BEFORE ENTITY WITH ID ${event.entityId} RECOVERED: `, event.entity);
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* Called after entity recovery.
|
|
100
|
-
*/
|
|
101
|
-
afterRecover(event) {
|
|
102
|
-
this.ctx.logDb &&
|
|
103
|
-
console.log(`AFTER ENTITY WITH ID ${event.entityId} RECOVERED: `, event.entity);
|
|
104
|
-
}
|
|
105
|
-
/**
|
|
106
|
-
* Called before transaction start.
|
|
107
|
-
*/
|
|
108
|
-
beforeTransactionStart(event) {
|
|
109
|
-
this.ctx.logDb &&
|
|
110
|
-
console.log(`BEFORE TRANSACTION STARTED: `, event);
|
|
111
|
-
}
|
|
112
|
-
/**
|
|
113
|
-
* Called after transaction start.
|
|
114
|
-
*/
|
|
115
|
-
afterTransactionStart(event) {
|
|
116
|
-
this.ctx.logDb &&
|
|
117
|
-
console.log(`AFTER TRANSACTION STARTED: `, event);
|
|
118
|
-
}
|
|
119
|
-
/**
|
|
120
|
-
* Called before transaction commit.
|
|
121
|
-
*/
|
|
122
|
-
beforeTransactionCommit(event) {
|
|
123
|
-
this.ctx.logDb &&
|
|
124
|
-
console.log(`BEFORE TRANSACTION COMMITTED: `, event);
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* Called after transaction commit.
|
|
128
|
-
*/
|
|
129
|
-
afterTransactionCommit(event) {
|
|
130
|
-
this.ctx.logDb &&
|
|
131
|
-
console.log(`AFTER TRANSACTION COMMITTED: `, event);
|
|
132
|
-
}
|
|
133
|
-
/**
|
|
134
|
-
* Called before transaction rollback.
|
|
135
|
-
*/
|
|
136
|
-
beforeTransactionRollback(event) {
|
|
137
|
-
this.ctx.logDb &&
|
|
138
|
-
console.log(`BEFORE TRANSACTION ROLLBACK: `, event);
|
|
139
|
-
}
|
|
140
|
-
/**
|
|
141
|
-
* Called after transaction rollback.
|
|
142
|
-
*/
|
|
143
|
-
afterTransactionRollback(event) {
|
|
144
|
-
this.ctx.logDb &&
|
|
145
|
-
console.log(`AFTER TRANSACTION ROLLBACK: `, event);
|
|
146
|
-
}
|
|
147
|
-
};
|
|
148
|
-
BaseSubscriberForEntity = __decorate([
|
|
149
|
-
TaonSubscriber({
|
|
150
|
-
className: 'BaseSubscriberForEntity',
|
|
151
|
-
})
|
|
152
|
-
], BaseSubscriberForEntity);
|
|
153
|
-
export { BaseSubscriberForEntity };
|
|
154
|
-
;
|
|
155
|
-
({}); // @--end-of-file-for-module=taon lib/base-classes/base-subscriber-for-entity.ts
|
|
156
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1zdWJzY3JpYmVyLWZvci1lbnRpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItZGlzdC13ZWJzcWwvdGFvbi9wcm9qZWN0cy90YW9uL3NyYy9saWIvYmFzZS1jbGFzc2VzL2Jhc2Utc3Vic2NyaWJlci1mb3ItZW50aXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFHQSxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFFTCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBTXJFLElBQWUsdUJBQXVCLEdBQXRDLE1BQWUsdUJBQ3BCLFNBQVEsWUFBWTtJQUtwQjs7T0FFRztJQUNILFNBQVMsQ0FBQyxNQUFXO1FBQ25CLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSztZQUNaLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsV0FBVyxDQUFDLEtBQVU7UUFFcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLO1lBQ1osT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVEOztPQUVHO0lBQ0gsVUFBVSxDQUFDLEtBQVU7UUFFbkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLO1lBQ1osT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRDs7T0FFRztJQUNILFlBQVksQ0FBQyxLQUF1QjtRQUNsQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUs7WUFDWixP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O0lBRUQ7O09BRUc7SUFDSCxzQkFBc0IsQ0FBQyxLQUE2QjtRQUNsRCxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUs7WUFDWixPQUFPLENBQUMsR0FBRyxDQUFDLCtCQUErQixFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRDs7T0FFRztJQUNILHlCQUF5QixDQUFDLEtBQStCO1FBQ3ZELElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSztZQUNaLE9BQU8sQ0FBQyxHQUFHLENBQUMsK0JBQStCLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsd0JBQXdCLENBQUMsS0FBK0I7UUFDdEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLO1lBQ1osT0FBTyxDQUFDLEdBQUcsQ0FBQyw4QkFBOEIsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN2RCxDQUFDO0NBQ0YsQ0FBQTtBQWpMcUIsdUJBQXVCO0lBSDVDLGNBQWMsQ0FBQztRQUNkLFNBQVMsRUFBRSx5QkFBeUI7S0FDckMsQ0FBQztHQUNvQix1QkFBdUIsQ0FpTDVDOztBQUVBLENBQUM7QUFBQSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsZ0ZBQWdGIiwic291cmNlc0NvbnRlbnQiOlsiXG5cbmltcG9ydCB7ICAgRW50aXR5U3Vic2NyaWJlckludGVyZmFjZSwgICBSZWNvdmVyRXZlbnQsICAgU29mdFJlbW92ZUV2ZW50LCAgIEluc2VydEV2ZW50LCAgIFRyYW5zYWN0aW9uU3RhcnRFdmVudCwgICBUcmFuc2FjdGlvbkNvbW1pdEV2ZW50LCAgIFRyYW5zYWN0aW9uUm9sbGJhY2tFdmVudCwgICBSZW1vdmVFdmVudCwgICBVcGRhdGVFdmVudCwgfSBmcm9tICd0YW9uLXR5cGVvcm0vd2Vic3FsJzsvKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuXG5pbXBvcnQgeyBCYXNlSW5qZWN0b3IgfSBmcm9tICcuL2Jhc2UtaW5qZWN0b3InO1xuaW1wb3J0IHsgVGFvblN1YnNjcmliZXIgfSBmcm9tICcuLi9kZWNvcmF0b3JzL2NsYXNzZXMvc3Vic2NyaWJlci1kZWNvcmF0b3InO1xuaW1wb3J0IHsgXyB9IGZyb20gJ3RucC1jb3JlL3dlYnNxbCc7XG5cbkBUYW9uU3Vic2NyaWJlcih7XG4gIGNsYXNzTmFtZTogJ0Jhc2VTdWJzY3JpYmVyRm9yRW50aXR5Jyxcbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZVN1YnNjcmliZXJGb3JFbnRpdHk8RW50aXR5ID0gYW55PlxuICBleHRlbmRzIEJhc2VJbmplY3RvclxuICBpbXBsZW1lbnRzIEVudGl0eVN1YnNjcmliZXJJbnRlcmZhY2VcbntcbiAgYWJzdHJhY3QgbGlzdGVuVG8oKTogbmV3ICguLi5hcmdzKSA9PiBFbnRpdHk7XG5cbiAgLyoqXG4gICAqIENhbGxlZCBhZnRlciBlbnRpdHkgaXMgbG9hZGVkLlxuICAgKi9cbiAgYWZ0ZXJMb2FkKGVudGl0eTogYW55KSB7XG4gICAgdGhpcy5jdHgubG9nRGIgJiZcbiAgICAgIGNvbnNvbGUubG9nKGBBRlRFUiBFTlRJVFkgTE9BREVEOiBgLCBlbnRpdHkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCBiZWZvcmUgcXVlcnkgZXhlY3V0aW9uLlxuICAgKi9cbiAgYmVmb3JlUXVlcnkoZXZlbnQ6IGFueSkge1xuXG4gICAgdGhpcy5jdHgubG9nRGIgJiZcbiAgICAgIGNvbnNvbGUubG9nKGBCRUZPUkUgUVVFUlk6IGAsIGV2ZW50LnF1ZXJ5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgYWZ0ZXIgcXVlcnkgZXhlY3V0aW9uLlxuICAgKi9cbiAgYWZ0ZXJRdWVyeShldmVudDogYW55KSB7XG5cbiAgICB0aGlzLmN0eC5sb2dEYiAmJlxuICAgICAgY29uc29sZS5sb2coYEFGVEVSIFFVRVJZOiBgLCBldmVudC5xdWVyeSk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIGJlZm9yZSBlbnRpdHkgaW5zZXJ0aW9uLlxuICAgKi9cbiAgYmVmb3JlSW5zZXJ0KGV2ZW50OiBJbnNlcnRFdmVudDxhbnk+KSB7XG4gICAgdGhpcy5jdHgubG9nRGIgJiZcbiAgICAgIGNvbnNvbGUubG9nKGBCRUZPUkUgRU5USVRZIElOU0VSVEVEOiBgLCBldmVudC5lbnRpdHkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCBhZnRlciBlbnRpdHkgaW5zZXJ0aW9uLlxuICAgKi9cbiAgYWZ0ZXJJbnNlcnQoZXZlbnQ6IEluc2VydEV2ZW50PGFueT4pIHtcbiAgICB0aGlzLmN0eC5sb2dEYiAmJlxuICAgICAgY29uc29sZS5sb2coYEFGVEVSIEVOVElUWSBJTlNFUlRFRDogYCwgZXZlbnQuZW50aXR5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgYmVmb3JlIGVudGl0eSB1cGRhdGUuXG4gICAqL1xuICBiZWZvcmVVcGRhdGUoZXZlbnQ6IFVwZGF0ZUV2ZW50PGFueT4pIHtcbiAgICB0aGlzLmN0eC5sb2dEYiAmJlxuICAgICAgY29uc29sZS5sb2coYEJFRk9SRSBFTlRJVFkgVVBEQVRFRDogYCwgZXZlbnQuZW50aXR5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgYWZ0ZXIgZW50aXR5IHVwZGF0ZS5cbiAgICovXG4gIGFmdGVyVXBkYXRlKGV2ZW50OiBVcGRhdGVFdmVudDxhbnk+KSB7XG4gICAgdGhpcy5jdHgubG9nRGIgJiZcbiAgICAgIGNvbnNvbGUubG9nKGBBRlRFUiBFTlRJVFkgVVBEQVRFRDogYCwgZXZlbnQuZW50aXR5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgYmVmb3JlIGVudGl0eSByZW1vdmFsLlxuICAgKi9cbiAgYmVmb3JlUmVtb3ZlKGV2ZW50OiBSZW1vdmVFdmVudDxhbnk+KSB7XG4gICAgdGhpcy5jdHgubG9nRGIgJiZcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICBgQkVGT1JFIEVOVElUWSBXSVRIIElEICR7ZXZlbnQuZW50aXR5SWR9IFJFTU9WRUQ6IGAsXG4gICAgICAgIGV2ZW50LmVudGl0eSxcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIGFmdGVyIGVudGl0eSByZW1vdmFsLlxuICAgKi9cbiAgYWZ0ZXJSZW1vdmUoZXZlbnQ6IFJlbW92ZUV2ZW50PGFueT4pIHtcbiAgICB0aGlzLmN0eC5sb2dEYiAmJlxuICAgICAgY29uc29sZS5sb2coXG4gICAgICAgIGBBRlRFUiBFTlRJVFkgV0lUSCBJRCAke2V2ZW50LmVudGl0eUlkfSBSRU1PVkVEOiBgLFxuICAgICAgICBldmVudC5lbnRpdHksXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCBiZWZvcmUgZW50aXR5IHJlbW92YWwuXG4gICAqL1xuICBiZWZvcmVTb2Z0UmVtb3ZlKGV2ZW50OiBTb2Z0UmVtb3ZlRXZlbnQ8YW55Pikge1xuICAgIHRoaXMuY3R4LmxvZ0RiICYmXG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgYEJFRk9SRSBFTlRJVFkgV0lUSCBJRCAke2V2ZW50LmVudGl0eUlkfSBTT0ZUIFJFTU9WRUQ6IGAsXG4gICAgICAgIGV2ZW50LmVudGl0eSxcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIGFmdGVyIGVudGl0eSByZW1vdmFsLlxuICAgKi9cbiAgYWZ0ZXJTb2Z0UmVtb3ZlKGV2ZW50OiBTb2Z0UmVtb3ZlRXZlbnQ8YW55Pikge1xuICAgIHRoaXMuY3R4LmxvZ0RiICYmXG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgYEFGVEVSIEVOVElUWSBXSVRIIElEICR7ZXZlbnQuZW50aXR5SWR9IFNPRlQgUkVNT1ZFRDogYCxcbiAgICAgICAgZXZlbnQuZW50aXR5LFxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgYmVmb3JlIGVudGl0eSByZWNvdmVyeS5cbiAgICovXG4gIGJlZm9yZVJlY292ZXIoZXZlbnQ6IFJlY292ZXJFdmVudDxhbnk+KSB7XG4gICAgdGhpcy5jdHgubG9nRGIgJiZcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICBgQkVGT1JFIEVOVElUWSBXSVRIIElEICR7ZXZlbnQuZW50aXR5SWR9IFJFQ09WRVJFRDogYCxcbiAgICAgICAgZXZlbnQuZW50aXR5LFxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgYWZ0ZXIgZW50aXR5IHJlY292ZXJ5LlxuICAgKi9cbiAgYWZ0ZXJSZWNvdmVyKGV2ZW50OiBSZWNvdmVyRXZlbnQ8YW55Pikge1xuICAgIHRoaXMuY3R4LmxvZ0RiICYmXG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgYEFGVEVSIEVOVElUWSBXSVRIIElEICR7ZXZlbnQuZW50aXR5SWR9IFJFQ09WRVJFRDogYCxcbiAgICAgICAgZXZlbnQuZW50aXR5LFxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgYmVmb3JlIHRyYW5zYWN0aW9uIHN0YXJ0LlxuICAgKi9cbiAgYmVmb3JlVHJhbnNhY3Rpb25TdGFydChldmVudDogVHJhbnNhY3Rpb25TdGFydEV2ZW50KSB7XG4gICAgdGhpcy5jdHgubG9nRGIgJiZcbiAgICAgIGNvbnNvbGUubG9nKGBCRUZPUkUgVFJBTlNBQ1RJT04gU1RBUlRFRDogYCwgZXZlbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCBhZnRlciB0cmFuc2FjdGlvbiBzdGFydC5cbiAgICovXG4gIGFmdGVyVHJhbnNhY3Rpb25TdGFydChldmVudDogVHJhbnNhY3Rpb25TdGFydEV2ZW50KSB7XG4gICAgdGhpcy5jdHgubG9nRGIgJiZcbiAgICAgIGNvbnNvbGUubG9nKGBBRlRFUiBUUkFOU0FDVElPTiBTVEFSVEVEOiBgLCBldmVudCk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIGJlZm9yZSB0cmFuc2FjdGlvbiBjb21taXQuXG4gICAqL1xuICBiZWZvcmVUcmFuc2FjdGlvbkNvbW1pdChldmVudDogVHJhbnNhY3Rpb25Db21taXRFdmVudCkge1xuICAgIHRoaXMuY3R4LmxvZ0RiICYmXG4gICAgICBjb25zb2xlLmxvZyhgQkVGT1JFIFRSQU5TQUNUSU9OIENPTU1JVFRFRDogYCwgZXZlbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCBhZnRlciB0cmFuc2FjdGlvbiBjb21taXQuXG4gICAqL1xuICBhZnRlclRyYW5zYWN0aW9uQ29tbWl0KGV2ZW50OiBUcmFuc2FjdGlvbkNvbW1pdEV2ZW50KSB7XG4gICAgdGhpcy5jdHgubG9nRGIgJiZcbiAgICAgIGNvbnNvbGUubG9nKGBBRlRFUiBUUkFOU0FDVElPTiBDT01NSVRURUQ6IGAsIGV2ZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgYmVmb3JlIHRyYW5zYWN0aW9uIHJvbGxiYWNrLlxuICAgKi9cbiAgYmVmb3JlVHJhbnNhY3Rpb25Sb2xsYmFjayhldmVudDogVHJhbnNhY3Rpb25Sb2xsYmFja0V2ZW50KSB7XG4gICAgdGhpcy5jdHgubG9nRGIgJiZcbiAgICAgIGNvbnNvbGUubG9nKGBCRUZPUkUgVFJBTlNBQ1RJT04gUk9MTEJBQ0s6IGAsIGV2ZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgYWZ0ZXIgdHJhbnNhY3Rpb24gcm9sbGJhY2suXG4gICAqL1xuICBhZnRlclRyYW5zYWN0aW9uUm9sbGJhY2soZXZlbnQ6IFRyYW5zYWN0aW9uUm9sbGJhY2tFdmVudCkge1xuICAgIHRoaXMuY3R4LmxvZ0RiICYmXG4gICAgICBjb25zb2xlLmxvZyhgQUZURVIgVFJBTlNBQ1RJT04gUk9MTEJBQ0s6IGAsIGV2ZW50KTtcbiAgfVxufVxuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9dGFvbiBsaWIvYmFzZS1jbGFzc2VzL2Jhc2Utc3Vic2NyaWJlci1mb3ItZW50aXR5LnRzIl19
|