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,198 +0,0 @@
|
|
|
1
|
-
import { _ } from 'tnp-core/browser';
|
|
2
|
-
import { Symbols } from './symbols';
|
|
3
|
-
import { walk } from 'lodash-walk-object/browser';
|
|
4
|
-
import { config } from 'tnp-config/browser';
|
|
5
|
-
import { JSON10 } from 'json10/browser';
|
|
6
|
-
import { ClassHelpers } from './helpers/class-helpers';
|
|
7
|
-
import { Mapping } from 'ng2-rest/browser';
|
|
8
|
-
/**
|
|
9
|
-
* @deprecated
|
|
10
|
-
*/
|
|
11
|
-
export const getTransformFunction = (target) => {
|
|
12
|
-
if (!target) {
|
|
13
|
-
return;
|
|
14
|
-
}
|
|
15
|
-
if (!target) {
|
|
16
|
-
return void 0;
|
|
17
|
-
}
|
|
18
|
-
const configs = ClassHelpers.getControllerConfigs(target);
|
|
19
|
-
const functions = configs
|
|
20
|
-
.map(c => {
|
|
21
|
-
if (_.isFunction(c.browserTransformFn)) {
|
|
22
|
-
return c.browserTransformFn;
|
|
23
|
-
}
|
|
24
|
-
})
|
|
25
|
-
.filter(f => _.isFunction(f));
|
|
26
|
-
return functions.length === 0
|
|
27
|
-
? void 0
|
|
28
|
-
: function (entity) {
|
|
29
|
-
for (let index = functions.length - 1; index >= 0; index--) {
|
|
30
|
-
const transformFun = functions[index];
|
|
31
|
-
transformFun(entity);
|
|
32
|
-
}
|
|
33
|
-
return entity;
|
|
34
|
-
};
|
|
35
|
-
};
|
|
36
|
-
/**
|
|
37
|
-
* @deprecated
|
|
38
|
-
*/
|
|
39
|
-
export const singleTransform = (json) => {
|
|
40
|
-
let ptarget = ClassHelpers.getClassFnFromObject(json);
|
|
41
|
-
let pbrowserTransformFn = getTransformFunction(ptarget);
|
|
42
|
-
if (pbrowserTransformFn) {
|
|
43
|
-
const newValue = pbrowserTransformFn(json);
|
|
44
|
-
if (!_.isObject(newValue)) {
|
|
45
|
-
console.error(`Please return object in transform function for class: ` +
|
|
46
|
-
`${ClassHelpers.getName(json)}`);
|
|
47
|
-
}
|
|
48
|
-
else {
|
|
49
|
-
json = newValue;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
return json;
|
|
53
|
-
};
|
|
54
|
-
export class EntityProcess {
|
|
55
|
-
static async init(result, response) {
|
|
56
|
-
return await new EntityProcess(result, response).run();
|
|
57
|
-
}
|
|
58
|
-
constructor(
|
|
59
|
-
/**
|
|
60
|
-
* Data from backend
|
|
61
|
-
*/
|
|
62
|
-
result, response) {
|
|
63
|
-
this.result = result;
|
|
64
|
-
this.response = response;
|
|
65
|
-
/**
|
|
66
|
-
* Say yes to:
|
|
67
|
-
* - circural object
|
|
68
|
-
* - transform browser fn in decorator
|
|
69
|
-
*/
|
|
70
|
-
this.advancedManipulation = false;
|
|
71
|
-
this.circural = [];
|
|
72
|
-
}
|
|
73
|
-
checkAdvancedManiupulation() {
|
|
74
|
-
if (_.isFunction(this.result)) {
|
|
75
|
-
this.advancedManipulation = true;
|
|
76
|
-
this.result = this.result();
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
async run() {
|
|
80
|
-
this.checkAdvancedManiupulation();
|
|
81
|
-
this.data = this.result;
|
|
82
|
-
if (_.isObject(this.result)) {
|
|
83
|
-
if (this.advancedManipulation) {
|
|
84
|
-
this.applayTransformFn();
|
|
85
|
-
}
|
|
86
|
-
this.setHeaders();
|
|
87
|
-
}
|
|
88
|
-
this.send();
|
|
89
|
-
}
|
|
90
|
-
applayTransformFn() {
|
|
91
|
-
if (_.isObject(this.data) && !_.isArray(this.data)) {
|
|
92
|
-
this.data = singleTransform(this.data);
|
|
93
|
-
}
|
|
94
|
-
const { include } = { include: [] };
|
|
95
|
-
walk.Object(this.data, (value, lodashPath, changeValue, { skipObject, isCircural }) => {
|
|
96
|
-
if (!isCircural) {
|
|
97
|
-
if (!_.isArray(value) && _.isObject(value)) {
|
|
98
|
-
changeValue(singleTransform(value));
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
}, { checkCircural: true, breadthWalk: true, include });
|
|
102
|
-
const { circs } = walk.Object(this.data, void 0, {
|
|
103
|
-
checkCircural: true,
|
|
104
|
-
breadthWalk: true,
|
|
105
|
-
include,
|
|
106
|
-
});
|
|
107
|
-
this.circural = circs;
|
|
108
|
-
}
|
|
109
|
-
setHeaders() {
|
|
110
|
-
const { include } = { include: [] };
|
|
111
|
-
const className = ClassHelpers.getName(this.data);
|
|
112
|
-
const doNothing = _.isNil(this.data) ||
|
|
113
|
-
[
|
|
114
|
-
'Object',
|
|
115
|
-
'',
|
|
116
|
-
].includes(className);
|
|
117
|
-
if (!doNothing) {
|
|
118
|
-
const cleaned = JSON10.cleaned(this.data, void 0, {
|
|
119
|
-
breadthWalk: true,
|
|
120
|
-
include,
|
|
121
|
-
});
|
|
122
|
-
this.entityMapping = Mapping.decode(cleaned, !this.advancedManipulation);
|
|
123
|
-
this.response.set(Symbols.old.MAPPING_CONFIG_HEADER, JSON.stringify(this.entityMapping));
|
|
124
|
-
if (this.advancedManipulation) {
|
|
125
|
-
this.response.set(Symbols.old.CIRCURAL_OBJECTS_MAP_BODY, JSON.stringify(this.circural));
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
send() {
|
|
130
|
-
if (this.advancedManipulation) {
|
|
131
|
-
const browserKey = config.folder.browser;
|
|
132
|
-
let toSend = _.isArray(this.data) ? [] : {};
|
|
133
|
-
const { include = [], exclude = [] } = { include: [], exclude: [] };
|
|
134
|
-
walk.Object(this.data, (value, lodashPath, changeVAlue, { isCircural, skipObject }) => {
|
|
135
|
-
if (isCircural) {
|
|
136
|
-
_.set(toSend, lodashPath, null);
|
|
137
|
-
}
|
|
138
|
-
else {
|
|
139
|
-
const fun = getTransformFunction(ClassHelpers.getClassFnFromObject(value));
|
|
140
|
-
if (_.isFunction(fun)) {
|
|
141
|
-
_.set(toSend, `${lodashPath}.${browserKey}`, value[browserKey]);
|
|
142
|
-
const indexProp = ClassHelpers.getUniqueKey(value);
|
|
143
|
-
_.set(toSend, `${lodashPath}.${indexProp}`, value[indexProp]);
|
|
144
|
-
}
|
|
145
|
-
else {
|
|
146
|
-
_.set(toSend, lodashPath, value);
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
}, { checkCircural: true, breadthWalk: true, include });
|
|
150
|
-
if (!_.isArray(this.data)) {
|
|
151
|
-
let funParent = getTransformFunction(ClassHelpers.getClassFnFromObject(this.data));
|
|
152
|
-
if (_.isFunction(funParent)) {
|
|
153
|
-
toSend = {
|
|
154
|
-
[browserKey]: toSend[browserKey],
|
|
155
|
-
};
|
|
156
|
-
}
|
|
157
|
-
Object.keys(this.data).forEach(prop => {
|
|
158
|
-
if (prop !== browserKey) {
|
|
159
|
-
const v = this.data[prop];
|
|
160
|
-
if (!((include.length > 0 && !include.includes(prop)) ||
|
|
161
|
-
(exclude.length > 0 && exclude.includes(prop)))) {
|
|
162
|
-
if (ClassHelpers.isContextClassObject(v) &&
|
|
163
|
-
_.isFunction(getTransformFunction(ClassHelpers.getClassFnFromObject(v)))) {
|
|
164
|
-
toSend[prop] = {
|
|
165
|
-
[browserKey]: v[browserKey],
|
|
166
|
-
};
|
|
167
|
-
const indexProp = ClassHelpers.getUniqueKey(v);
|
|
168
|
-
toSend[prop][indexProp] = this.data[prop][indexProp];
|
|
169
|
-
for (const key in v) {
|
|
170
|
-
if (_.isObject(v) &&
|
|
171
|
-
v.hasOwnProperty(key) &&
|
|
172
|
-
![indexProp, config.folder.browser].includes(key) &&
|
|
173
|
-
(_.isString(v[key]) ||
|
|
174
|
-
_.isNumber(v[key]) ||
|
|
175
|
-
_.isDate(v[key]) ||
|
|
176
|
-
_.isNull(v[key]) ||
|
|
177
|
-
_.isBoolean(v[key]))) {
|
|
178
|
-
toSend[prop][key] = v[key];
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
else {
|
|
183
|
-
toSend[prop] = v;
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
});
|
|
188
|
-
}
|
|
189
|
-
this.response.json(toSend);
|
|
190
|
-
}
|
|
191
|
-
else {
|
|
192
|
-
this.response.json(this.data);
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
;
|
|
197
|
-
({}); // @--end-of-file-for-module=taon lib/entity-process.ts
|
|
198
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LXByb2Nlc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItZGlzdC90YW9uL3Byb2plY3RzL3Rhb24vc3JjL2xpYi9lbnRpdHktcHJvY2Vzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDckMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBSzNDOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxNQUFnQixFQUFFLEVBQUU7SUFDdkQsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ1osT0FBTztJQUNULENBQUM7SUFLRCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDWixPQUFPLEtBQUssQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFDRCxNQUFNLE9BQU8sR0FBRyxZQUFZLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFMUQsTUFBTSxTQUFTLEdBQUcsT0FBTztTQUN0QixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7UUFDUCxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQztZQUN2QyxPQUFPLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQztRQUM5QixDQUFDO0lBQ0gsQ0FBQyxDQUFDO1NBQ0QsTUFBTSxDQUFDLENB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LElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoQyxDQUFDO0lBQ0gsQ0FBQztDQUVGO0FBRUEsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyx1REFBdUQiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuXG5pbXBvcnQgeyBfIH0gZnJvbSAndG5wLWNvcmUvYnJvd3Nlcic7XG5pbXBvcnQgeyBTeW1ib2xzIH0gZnJvbSAnLi9zeW1ib2xzJztcbmltcG9ydCB7IHdhbGsgfSBmcm9tICdsb2Rhc2gtd2Fsay1vYmplY3QvYnJvd3Nlcic7XG5pbXBvcnQgeyBjb25maWcgfSBmcm9tICd0bnAtY29uZmlnL2Jyb3dzZXInO1xuaW1wb3J0IHsgSlNPTjEwIH0gZnJvbSAnanNvbjEwL2Jyb3dzZXInO1xuaW1wb3J0IHsgQ2xhc3NIZWxwZXJzIH0gZnJvbSAnLi9oZWxwZXJzL2NsYXNzLWhlbHBlcnMnO1xuaW1wb3J0IHsgTWFwcGluZyB9IGZyb20gJ25nMi1yZXN0L2Jyb3dzZXInO1xuaW1wb3J0IHsgUmVzcG9uc2UgfSBmcm9tICdleHByZXNzJztcblxuXG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IGdldFRyYW5zZm9ybUZ1bmN0aW9uID0gKHRhcmdldDogRnVuY3Rpb24pID0+IHtcbiAgaWYgKCF0YXJnZXQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuXG5cblxuICBpZiAoIXRhcmdldCkge1xuICAgIHJldHVybiB2b2lkIDA7XG4gIH1cbiAgY29uc3QgY29uZmlncyA9IENsYXNzSGVscGVycy5nZXRDb250cm9sbGVyQ29uZmlncyh0YXJnZXQpO1xuXG4gIGNvbnN0IGZ1bmN0aW9ucyA9IGNvbmZpZ3NcbiAgICAubWFwKGMgPT4ge1xuICAgICAgaWYgKF8uaXNGdW5jdGlvbihjLmJyb3dzZXJUcmFuc2Zvcm1GbikpIHtcbiAgICAgICAgcmV0dXJuIGMuYnJvd3NlclRyYW5zZm9ybUZuO1xuICAgICAgfVxuICAgIH0pXG4gICAgLmZpbHRlcihmID0+IF8uaXNGdW5jdGlvbihmKSk7XG4gIHJldHVybiBmdW5jdGlvbnMubGVuZ3RoID09PSAwXG4gICAgPyB2b2lkIDBcbiAgICA6IGZ1bmN0aW9uIChlbnRpdHkpIHtcbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSBmdW5jdGlvbnMubGVuZ3RoIC0gMTsgaW5kZXggPj0gMDsgaW5kZXgtLSkge1xuICAgICAgICAgIGNvbnN0IHRyYW5zZm9ybUZ1biA9IGZ1bmN0aW9uc1tpbmRleF07XG4gICAgICAgICAgdHJhbnNmb3JtRnVuKGVudGl0eSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVudGl0eTtcbiAgICAgIH07XG59O1xuXG5cblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgY29uc3Qgc2luZ2xlVHJhbnNmb3JtID0gKGpzb246IGFueSkgPT4ge1xuICBsZXQgcHRhcmdldCA9IENsYXNzSGVscGVycy5nZXRDbGFzc0ZuRnJvbU9iamVjdChqc29uKTtcbiAgbGV0IHBicm93c2VyVHJhbnNmb3JtRm4gPSBnZXRUcmFuc2Zvcm1GdW5jdGlvbihwdGFyZ2V0KTtcbiAgaWYgKHBicm93c2VyVHJhbnNmb3JtRm4pIHtcbiAgICBjb25zdCBuZXdWYWx1ZSA9IHBicm93c2VyVHJhbnNmb3JtRm4oanNvbik7XG4gICAgaWYgKCFfLmlzT2JqZWN0KG5ld1ZhbHVlKSkge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgYFBsZWFzZSByZXR1cm4gb2JqZWN0IGluIHRyYW5zZm9ybSBmdW5jdGlvbiBmb3IgY2xhc3M6IGAgK1xuICAgICAgICAgIGAke0NsYXNzSGVscGVycy5nZXROYW1lKGpzb24pfWAsXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBqc29uID0gbmV3VmFsdWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBqc29uO1xufTtcblxuXG5leHBvcnQgY2xhc3MgRW50aXR5UHJvY2VzcyB7XG5cbiAgc3RhdGljIGFzeW5jIGluaXQocmVzdWx0OiBhbnksIHJlc3BvbnNlOiBSZXNwb25zZSkge1xuICAgIHJldHVybiBhd2FpdCBuZXcgRW50aXR5UHJvY2VzcyhyZXN1bHQsIHJlc3BvbnNlKS5ydW4oKTtcbiAgfVxuXG5cblxuICAvKipcbiAgICogRGF0YSB0byBzZW5kXG4gICAqL1xuICBkYXRhOiBhbnk7XG5cbiAgLyoqXG4gICAqIFNheSB5ZXMgdG86XG4gICAqIC0gY2lyY3VyYWwgb2JqZWN0XG4gICAqIC0gdHJhbnNmb3JtIGJyb3dzZXIgZm4gaW4gZGVjb3JhdG9yXG4gICAqL1xuICBwcml2YXRlIGFkdmFuY2VkTWFuaXB1bGF0aW9uOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgZW50aXR5TWFwcGluZzogYW55O1xuICBwcml2YXRlIGNpcmN1cmFsID0gW107XG5cblxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIC8qKlxuICAgICAqIERhdGEgZnJvbSBiYWNrZW5kXG4gICAgICovXG4gICAgcHJpdmF0ZSByZXN1bHQ6IGFueSxcbiAgICBwcml2YXRlIHJlc3BvbnNlOiBSZXNwb25zZSxcbiAgKSB7fVxuXG5cblxuICBwcml2YXRlIGNoZWNrQWR2YW5jZWRNYW5pdXB1bGF0aW9uKCkge1xuICAgIGlmIChfLmlzRnVuY3Rpb24odGhpcy5yZXN1bHQpKSB7XG4gICAgICB0aGlzLmFkdmFuY2VkTWFuaXB1bGF0aW9uID0gdHJ1ZTtcbiAgICAgIHRoaXMucmVzdWx0ID0gdGhpcy5yZXN1bHQoKTtcbiAgICB9XG4gIH1cblxuXG5cbiAgcHVibGljIGFzeW5jIHJ1bigpIHtcbiAgICB0aGlzLmNoZWNrQWR2YW5jZWRNYW5pdXB1bGF0aW9uKCk7XG4gICAgdGhpcy5kYXRhID0gdGhpcy5yZXN1bHQ7XG5cbiAgICBpZiAoXy5pc09iamVjdCh0aGlzLnJlc3VsdCkpIHtcbiAgICAgIGlmICh0aGlzLmFkdmFuY2VkTWFuaXB1bGF0aW9uKSB7XG4gICAgICAgIHRoaXMuYXBwbGF5VHJhbnNmb3JtRm4oKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zZXRIZWFkZXJzKCk7XG4gICAgfVxuICAgIHRoaXMuc2VuZCgpO1xuICB9XG5cblxuXG4gIGFwcGxheVRyYW5zZm9ybUZuKCkge1xuICAgIGlmIChfLmlzT2JqZWN0KHRoaXMuZGF0YSkgJiYgIV8uaXNBcnJheSh0aGlzLmRhdGEpKSB7XG4gICAgICB0aGlzLmRhdGEgPSBzaW5nbGVUcmFuc2Zvcm0odGhpcy5kYXRhKTtcbiAgICB9XG4gICAgY29uc3QgeyBpbmNsdWRlIH0gPSB7IGluY2x1ZGU6IFtdIH07XG4gICAgd2Fsay5PYmplY3QoXG4gICAgICB0aGlzLmRhdGEsXG4gICAgICAodmFsdWUsIGxvZGFzaFBhdGgsIGNoYW5nZVZhbHVlLCB7IHNraXBPYmplY3QsIGlzQ2lyY3VyYWwgfSkgPT4ge1xuXG4gICAgICAgIGlmICghaXNDaXJjdXJhbCkge1xuICAgICAgICAgIGlmICghXy5pc0FycmF5KHZhbHVlKSAmJiBfLmlzT2JqZWN0KHZhbHVlKSkge1xuICAgICAgICAgICAgY2hhbmdlVmFsdWUoc2luZ2xlVHJhbnNmb3JtKHZhbHVlKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgeyBjaGVja0NpcmN1cmFsOiB0cnVlLCBicmVhZHRoV2FsazogdHJ1ZSwgaW5jbHVkZSB9LFxuICAgICk7XG5cbiAgICBjb25zdCB7IGNpcmNzIH0gPSB3YWxrLk9iamVjdCh0aGlzLmRhdGEsIHZvaWQgMCwge1xuICAgICAgY2hlY2tDaXJjdXJhbDogdHJ1ZSxcbiAgICAgIGJyZWFkdGhXYWxrOiB0cnVlLFxuICAgICAgaW5jbHVkZSxcbiAgICB9KTtcbiAgICB0aGlzLmNpcmN1cmFsID0gY2lyY3M7XG4gIH1cblxuXG5cbiAgc2V0SGVhZGVycygpOiB2b2lkIHtcbiAgICBjb25zdCB7IGluY2x1ZGUgfSA9IHsgaW5jbHVkZTogW10gfTtcblxuICAgIGNvbnN0IGNsYXNzTmFtZSA9IENsYXNzSGVscGVycy5nZXROYW1lKHRoaXMuZGF0YSk7XG4gICAgY29uc3QgZG9Ob3RoaW5nID1cbiAgICAgIF8uaXNOaWwodGhpcy5kYXRhKSB8fFxuICAgICAgW1xuICAgICAgICAnT2JqZWN0JyxcbiAgICAgICAgJycsXG5cbiAgICAgIF0uaW5jbHVkZXMoY2xhc3NOYW1lKTtcblxuICAgIGlmICghZG9Ob3RoaW5nKSB7XG4gICAgICBjb25zdCBjbGVhbmVkID0gSlNPTjEwLmNsZWFuZWQodGhpcy5kYXRhLCB2b2lkIDAsIHtcbiAgICAgICAgYnJlYWR0aFdhbGs6IHRydWUsXG4gICAgICAgIGluY2x1ZGUsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuZW50aXR5TWFwcGluZyA9IE1hcHBpbmcuZGVjb2RlKGNsZWFuZWQsICF0aGlzLmFkdmFuY2VkTWFuaXB1bGF0aW9uKTtcblxuICAgICAgdGhpcy5yZXNwb25zZS5zZXQoXG4gICAgICAgIFN5bWJvbHMub2xkLk1BUFBJTkdfQ09ORklHX0hFQURFUixcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkodGhpcy5lbnRpdHlNYXBwaW5nKSxcbiAgICAgICk7XG4gICAgICBpZiAodGhpcy5hZHZhbmNlZE1hbmlwdWxhdGlvbikge1xuICAgICAgICB0aGlzLnJlc3BvbnNlLnNldChcbiAgICAgICAgICBTeW1ib2xzLm9sZC5DSVJDVVJBTF9PQkpFQ1RTX01BUF9CT0RZLFxuICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMuY2lyY3VyYWwpLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG5cblxuICBzZW5kKCkge1xuICAgIGlmICh0aGlzLmFkdmFuY2VkTWFuaXB1bGF0aW9uKSB7XG4gICAgICBjb25zdCBicm93c2VyS2V5ID0gY29uZmlnLmZvbGRlci5icm93c2VyO1xuICAgICAgbGV0IHRvU2VuZCA9IF8uaXNBcnJheSh0aGlzLmRhdGEpID8gW10gOiB7fTtcblxuICAgICAgY29uc3QgeyBpbmNsdWRlID0gW10sIGV4Y2x1ZGUgPSBbXSB9ID0geyBpbmNsdWRlOiBbXSwgZXhjbHVkZTogW10gfTtcblxuICAgICAgd2Fsay5PYmplY3QoXG4gICAgICAgIHRoaXMuZGF0YSxcbiAgICAgICAgKHZhbHVlLCBsb2Rhc2hQYXRoLCBjaGFuZ2VWQWx1ZSwgeyBpc0NpcmN1cmFsLCBza2lwT2JqZWN0IH0pID0+IHtcblxuICAgICAgICAgIGlmIChpc0NpcmN1cmFsKSB7XG4gICAgICAgICAgICBfLnNldCh0b1NlbmQsIGxvZGFzaFBhdGgsIG51bGwpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBmdW4gPSBnZXRUcmFuc2Zvcm1GdW5jdGlvbihcbiAgICAgICAgICAgICAgQ2xhc3NIZWxwZXJzLmdldENsYXNzRm5Gcm9tT2JqZWN0KHZhbHVlKSxcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChfLmlzRnVuY3Rpb24oZnVuKSkge1xuICAgICAgICAgICAgICBfLnNldCh0b1NlbmQsIGAke2xvZGFzaFBhdGh9LiR7YnJvd3NlcktleX1gLCB2YWx1ZVticm93c2VyS2V5XSk7XG4gICAgICAgICAgICAgIGNvbnN0IGluZGV4UHJvcCA9IENsYXNzSGVscGVycy5nZXRVbmlxdWVLZXkodmFsdWUpO1xuICAgICAgICAgICAgICBfLnNldCh0b1NlbmQsIGAke2xvZGFzaFBhdGh9LiR7aW5kZXhQcm9wfWAsIHZhbHVlW2luZGV4UHJvcF0pO1xuXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBfLnNldCh0b1NlbmQsIGxvZGFzaFBhdGgsIHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHsgY2hlY2tDaXJjdXJhbDogdHJ1ZSwgYnJlYWR0aFdhbGs6IHRydWUsIGluY2x1ZGUgfSxcbiAgICAgICk7XG5cbiAgICAgIGlmICghXy5pc0FycmF5KHRoaXMuZGF0YSkpIHtcbiAgICAgICAgbGV0IGZ1blBhcmVudCA9IGdldFRyYW5zZm9ybUZ1bmN0aW9uKFxuICAgICAgICAgIENsYXNzSGVscGVycy5nZXRDbGFzc0ZuRnJvbU9iamVjdCh0aGlzLmRhdGEpLFxuICAgICAgICApO1xuXG5cblxuICAgICAgICBpZiAoXy5pc0Z1bmN0aW9uKGZ1blBhcmVudCkpIHtcbiAgICAgICAgICB0b1NlbmQgPSB7XG4gICAgICAgICAgICBbYnJvd3NlcktleV06IHRvU2VuZFticm93c2VyS2V5XSxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuZGF0YSkuZm9yRWFjaChwcm9wID0+IHtcbiAgICAgICAgICBpZiAocHJvcCAhPT0gYnJvd3NlcktleSkge1xuICAgICAgICAgICAgY29uc3QgdiA9IHRoaXMuZGF0YVtwcm9wXTtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgIShcbiAgICAgICAgICAgICAgICAoaW5jbHVkZS5sZW5ndGggPiAwICYmICFpbmNsdWRlLmluY2x1ZGVzKHByb3ApKSB8fFxuICAgICAgICAgICAgICAgIChleGNsdWRlLmxlbmd0aCA+IDAgJiYgZXhjbHVkZS5pbmNsdWRlcyhwcm9wKSlcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBDbGFzc0hlbHBlcnMuaXNDb250ZXh0Q2xhc3NPYmplY3QodikgJiZcbiAgICAgICAgICAgICAgICBfLmlzRnVuY3Rpb24oXG4gICAgICAgICAgICAgICAgICBnZXRUcmFuc2Zvcm1GdW5jdGlvbihDbGFzc0hlbHBlcnMuZ2V0Q2xhc3NGbkZyb21PYmplY3QodikpLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdG9TZW5kW3Byb3BdID0ge1xuICAgICAgICAgICAgICAgICAgW2Jyb3dzZXJLZXldOiB2W2Jyb3dzZXJLZXldLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgY29uc3QgaW5kZXhQcm9wID0gQ2xhc3NIZWxwZXJzLmdldFVuaXF1ZUtleSh2KTtcbiAgICAgICAgICAgICAgICB0b1NlbmRbcHJvcF1baW5kZXhQcm9wXSA9IHRoaXMuZGF0YVtwcm9wXVtpbmRleFByb3BdO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHYpIHtcbiAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgXy5pc09iamVjdCh2KSAmJlxuICAgICAgICAgICAgICAgICAgICB2Lmhhc093blByb3BlcnR5KGtleSkgJiZcbiAgICAgICAgICAgICAgICAgICAgIVtpbmRleFByb3AsIGNvbmZpZy5mb2xkZXIuYnJvd3Nlcl0uaW5jbHVkZXMoa2V5KSAmJlxuICAgICAgICAgICAgICAgICAgICAoXy5pc1N0cmluZyh2W2tleV0pIHx8XG4gICAgICAgICAgICAgICAgICAgICAgXy5pc051bWJlcih2W2tleV0pIHx8XG4gICAgICAgICAgICAgICAgICAgICAgXy5pc0RhdGUodltrZXldKSB8fFxuICAgICAgICAgICAgICAgICAgICAgIF8uaXNOdWxsKHZba2V5XSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICBfLmlzQm9vbGVhbih2W2tleV0pKVxuICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvU2VuZFtwcm9wXVtrZXldID0gdltrZXldO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0b1NlbmRbcHJvcF0gPSB2O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuXG4gICAgICB0aGlzLnJlc3BvbnNlLmpzb24odG9TZW5kKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZXNwb25zZS5qc29uKHRoaXMuZGF0YSk7XG4gICAgfVxuICB9XG5cbn1cblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPXRhb24gbGliL2VudGl0eS1wcm9jZXNzLnRzIl19
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { Helpers } from 'tnp-core/browser';
|
|
2
|
-
const ENV = Helpers.isBrowser ? window['ENV'] : global['ENV'];
|
|
3
|
-
export { ENV };
|
|
4
|
-
;
|
|
5
|
-
({}); // @--end-of-file-for-module=taon lib/env.ts
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWRpc3QvdGFvbi9wcm9qZWN0cy90YW9uL3NyYy9saWIvZW52LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUUzQyxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUU5RCxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFFZCxDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLDRDQUE0QyIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5pbXBvcnQgeyBIZWxwZXJzIH0gZnJvbSAndG5wLWNvcmUvYnJvd3Nlcic7XG5cbmNvbnN0IEVOViA9IEhlbHBlcnMuaXNCcm93c2VyID8gd2luZG93WydFTlYnXSA6IGdsb2JhbFsnRU5WJ107XG5cbmV4cG9ydCB7IEVOViB9O1xuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9dGFvbiBsaWIvZW52LnRzIl19
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
export const getResponseValue = (response, options) => {
|
|
2
|
-
/* */
|
|
3
|
-
/* */
|
|
4
|
-
/* */
|
|
5
|
-
/* */
|
|
6
|
-
/* */
|
|
7
|
-
/* */
|
|
8
|
-
/* */
|
|
9
|
-
/* */
|
|
10
|
-
/* */
|
|
11
|
-
/* */
|
|
12
|
-
/* */
|
|
13
|
-
/* */
|
|
14
|
-
/* */
|
|
15
|
-
/* */
|
|
16
|
-
/* */
|
|
17
|
-
/* */
|
|
18
|
-
/* */
|
|
19
|
-
/* */
|
|
20
|
-
/* */
|
|
21
|
-
/* */
|
|
22
|
-
/* */
|
|
23
|
-
return (void 0);
|
|
24
|
-
};
|
|
25
|
-
;
|
|
26
|
-
({}); // @--end-of-file-for-module=taon lib/get-response-value.ts
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXJlc3BvbnNlLXZhbHVlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWRpc3QvdGFvbi9wcm9qZWN0cy90YW9uL3NyYy9saWIvZ2V0LXJlc3BvbnNlLXZhbHVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVVBLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQzlCLFFBQWlDLEVBQ2pDLE9BQXVELEVBQzNDLEVBQUU7SUFDaEIsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0gsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDbEIsQ0FBQyxDQUFDO0FBRUQsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQywyREFBMkQiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuaW1wb3J0IHsgTW9kZWxzIH0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHsgICBSZXNwb25zZSBhcyBFeHByZXNzUmVzcG9uc2UsICAgUmVxdWVzdCBhcyBFeHByZXNzUmVxdWVzdCwgfSBmcm9tICdleHByZXNzJzsvKiAqL1xuLyogKi9cbi8qICovXG5cbmltcG9ydCB7IFRhb25IZWxwZXJzIH0gZnJvbSAnLi9oZWxwZXJzL3Rhb24taGVscGVycyc7XG5pbXBvcnQgeyBIZWxwZXJzIH0gZnJvbSAndG5wLWNvcmUvYnJvd3Nlcic7XG5cbmV4cG9ydCBjb25zdCBnZXRSZXNwb25zZVZhbHVlID0gPFQ+KFxuICByZXNwb25zZTogTW9kZWxzLkh0dHAuUmVzcG9uc2U8VD4sXG4gIG9wdGlvbnM/OiB7IHJlcTogRXhwcmVzc1JlcXVlc3Q7IHJlczogRXhwcmVzc1Jlc3BvbnNlIH0sXG4pOiBQcm9taXNlPFQ+ID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgcmV0dXJuICh2b2lkIDApO1xufTtcblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPXRhb24gbGliL2dldC1yZXNwb25zZS12YWx1ZS50cyJdfQ==
|
|
@@ -1,183 +0,0 @@
|
|
|
1
|
-
import { Symbols } from '../symbols';
|
|
2
|
-
import { Validators } from '../validators';
|
|
3
|
-
import { _ } from 'tnp-core/browser';
|
|
4
|
-
import { Models } from '../models';
|
|
5
|
-
import { TaonHelpers } from './taon-helpers';
|
|
6
|
-
import { CLASS } from 'typescript-class-helpers/browser';
|
|
7
|
-
/* */
|
|
8
|
-
/* */
|
|
9
|
-
export var ClassHelpers;
|
|
10
|
-
(function (ClassHelpers) {
|
|
11
|
-
/**
|
|
12
|
-
* TODO - repalce in every place when getting class fn from object
|
|
13
|
-
*/
|
|
14
|
-
ClassHelpers.getClassFnFromObject = (json) => {
|
|
15
|
-
if (_.isUndefined(json) || _.isNull(json)) {
|
|
16
|
-
return;
|
|
17
|
-
}
|
|
18
|
-
if (json.constructor) {
|
|
19
|
-
return json.constructor;
|
|
20
|
-
}
|
|
21
|
-
const p = Object.getPrototypeOf(json);
|
|
22
|
-
return p && p.constructor && p.constructor.name !== 'Object'
|
|
23
|
-
? p.constructor
|
|
24
|
-
: void 0;
|
|
25
|
-
};
|
|
26
|
-
ClassHelpers.getName = (classFnOrObject) => {
|
|
27
|
-
if (classFnOrObject instanceof FormData) {
|
|
28
|
-
return 'FormData';
|
|
29
|
-
}
|
|
30
|
-
if (!classFnOrObject) {
|
|
31
|
-
console.error('OBJECT OR CLASS', classFnOrObject);
|
|
32
|
-
throw new Error(`Cannot get name from this object or class.`);
|
|
33
|
-
}
|
|
34
|
-
return ((classFnOrObject[Symbols.classNameStaticProperty]
|
|
35
|
-
? classFnOrObject[Symbols.classNameStaticProperty]
|
|
36
|
-
: classFnOrObject?.constructor[Symbols.classNameStaticProperty]) ||
|
|
37
|
-
CLASS.getName(classFnOrObject));
|
|
38
|
-
};
|
|
39
|
-
ClassHelpers.getOrginalClass = (classFnOrObject) => {
|
|
40
|
-
const org = classFnOrObject[Symbols.orignalClass];
|
|
41
|
-
if (!org) {
|
|
42
|
-
return classFnOrObject;
|
|
43
|
-
}
|
|
44
|
-
return ClassHelpers.getOrginalClass(org);
|
|
45
|
-
};
|
|
46
|
-
ClassHelpers.getFullInternalName = (classFnOrObject) => {
|
|
47
|
-
if (!classFnOrObject) {
|
|
48
|
-
throw new Error(`Cannot get name from: ${classFnOrObject}`);
|
|
49
|
-
}
|
|
50
|
-
return ((classFnOrObject[Symbols.fullClassNameStaticProperty]
|
|
51
|
-
? classFnOrObject[Symbols.fullClassNameStaticProperty]
|
|
52
|
-
: classFnOrObject?.constructor[Symbols.fullClassNameStaticProperty]) ||
|
|
53
|
-
void 0);
|
|
54
|
-
};
|
|
55
|
-
ClassHelpers.getUniqueKey = (classFnOrObject) => {
|
|
56
|
-
const classFn = _.isFunction(classFnOrObject)
|
|
57
|
-
? classFnOrObject
|
|
58
|
-
: classFnOrObject.constructor;
|
|
59
|
-
const config = Reflect.getMetadata(Symbols.metadata.options.controller, classFn);
|
|
60
|
-
return config.uniqueKeyProp;
|
|
61
|
-
};
|
|
62
|
-
ClassHelpers.isContextClassObject = (obj) => {
|
|
63
|
-
if (!_.isObject(obj) ||
|
|
64
|
-
_.isArray(obj) ||
|
|
65
|
-
_.isRegExp(obj) ||
|
|
66
|
-
_.isBuffer(obj) ||
|
|
67
|
-
_.isArrayBuffer(obj)) {
|
|
68
|
-
return false;
|
|
69
|
-
}
|
|
70
|
-
if (_.isDate(obj)) {
|
|
71
|
-
return true;
|
|
72
|
-
}
|
|
73
|
-
const className = ClassHelpers.getName(obj);
|
|
74
|
-
return _.isString(className) && className !== 'Object';
|
|
75
|
-
};
|
|
76
|
-
ClassHelpers.setName = (target, className) => {
|
|
77
|
-
Validators.classNameVlidation(className, target);
|
|
78
|
-
target[Symbols.classNameStaticProperty] = className;
|
|
79
|
-
};
|
|
80
|
-
ClassHelpers.hasParentClassWithName = (target, className, targets = []) => {
|
|
81
|
-
if (!target) {
|
|
82
|
-
return false;
|
|
83
|
-
}
|
|
84
|
-
targets.push(target);
|
|
85
|
-
let targetProto = Object.getPrototypeOf(target);
|
|
86
|
-
if (_.isFunction(targetProto) &&
|
|
87
|
-
ClassHelpers.getName(targetProto) === className) {
|
|
88
|
-
return true;
|
|
89
|
-
}
|
|
90
|
-
return ClassHelpers.hasParentClassWithName(targetProto, className, targets);
|
|
91
|
-
};
|
|
92
|
-
ClassHelpers.getControllerConfig = (target) => {
|
|
93
|
-
const classMetadataOptions = Reflect.getMetadata(Symbols.metadata.options.controller, target);
|
|
94
|
-
const classMetadata = _.merge(new Models.ControllerConfig(), classMetadataOptions);
|
|
95
|
-
const methodNames = ClassHelpers.getMethodsNames(target); // Object.getOwnPropertyNames(target.prototype);
|
|
96
|
-
for (const methodName of methodNames) {
|
|
97
|
-
const methodMetadata = Reflect.getMetadata(Symbols.metadata.options.controllerMethod, target, methodName);
|
|
98
|
-
if (methodMetadata) {
|
|
99
|
-
classMetadata.methods[methodName] = methodMetadata;
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
return classMetadata;
|
|
103
|
-
};
|
|
104
|
-
const notAllowedAsMethodName = [
|
|
105
|
-
'length',
|
|
106
|
-
'name',
|
|
107
|
-
'arguments',
|
|
108
|
-
'caller',
|
|
109
|
-
'constructor',
|
|
110
|
-
'apply',
|
|
111
|
-
'bind',
|
|
112
|
-
'call',
|
|
113
|
-
'toString',
|
|
114
|
-
'__defineGetter__',
|
|
115
|
-
'__defineSetter__',
|
|
116
|
-
'hasOwnProperty',
|
|
117
|
-
'__lookupGetter__',
|
|
118
|
-
'__lookupSetter__',
|
|
119
|
-
'isPrototypeOf',
|
|
120
|
-
'propertyIsEnumerable',
|
|
121
|
-
'valueOf',
|
|
122
|
-
'__proto__',
|
|
123
|
-
'toLocaleString',
|
|
124
|
-
];
|
|
125
|
-
ClassHelpers.getMethodsNames = (classOrClassInstance, allMethodsNames = []) => {
|
|
126
|
-
if (!classOrClassInstance) {
|
|
127
|
-
return allMethodsNames;
|
|
128
|
-
}
|
|
129
|
-
const isClassFunction = _.isFunction(classOrClassInstance);
|
|
130
|
-
const classFun = isClassFunction
|
|
131
|
-
? classOrClassInstance
|
|
132
|
-
: Object.getPrototypeOf(classOrClassInstance);
|
|
133
|
-
const objectToCheck = isClassFunction
|
|
134
|
-
? classOrClassInstance?.prototype
|
|
135
|
-
: classOrClassInstance;
|
|
136
|
-
const prototypeObj = Object.getPrototypeOf(objectToCheck || {});
|
|
137
|
-
const properties = _.uniq([
|
|
138
|
-
...Object.getOwnPropertyNames(objectToCheck || {}),
|
|
139
|
-
...Object.getOwnPropertyNames(prototypeObj || {}),
|
|
140
|
-
...Object.keys(objectToCheck || {}),
|
|
141
|
-
...Object.keys(prototypeObj || {}),
|
|
142
|
-
]).filter(f => !!f && !notAllowedAsMethodName.includes(f));
|
|
143
|
-
properties
|
|
144
|
-
.filter(methodName => typeof objectToCheck[methodName] === 'function')
|
|
145
|
-
.forEach(p => allMethodsNames.push(p));
|
|
146
|
-
if (!classFun ||
|
|
147
|
-
!classFun.constructor ||
|
|
148
|
-
classFun?.constructor?.name === 'Object') {
|
|
149
|
-
return allMethodsNames;
|
|
150
|
-
}
|
|
151
|
-
return ClassHelpers.getMethodsNames(Object.getPrototypeOf(classFun), allMethodsNames);
|
|
152
|
-
};
|
|
153
|
-
ClassHelpers.getControllerConfigs = (target, configs = [], callerTarget) => {
|
|
154
|
-
if (!_.isFunction(target)) {
|
|
155
|
-
throw `[typescript-class-helper][getClassConfig] Cannot get class config from: ${target}`;
|
|
156
|
-
}
|
|
157
|
-
let config;
|
|
158
|
-
const parentClass = Object.getPrototypeOf(target);
|
|
159
|
-
const parentName = parentClass ? ClassHelpers.getName(parentClass) : void 0;
|
|
160
|
-
const isValidParent = _.isFunction(parentClass) && parentName !== '';
|
|
161
|
-
config = ClassHelpers.getControllerConfig(target);
|
|
162
|
-
configs.push(config);
|
|
163
|
-
return isValidParent
|
|
164
|
-
? ClassHelpers.getControllerConfigs(parentClass, configs, target)
|
|
165
|
-
: configs;
|
|
166
|
-
};
|
|
167
|
-
ClassHelpers.getCalculatedPathFor = (target) => {
|
|
168
|
-
const configs = ClassHelpers.getControllerConfigs(target);
|
|
169
|
-
const parentscalculatedPath = _.slice(configs, 1)
|
|
170
|
-
.reverse()
|
|
171
|
-
.map(bc => {
|
|
172
|
-
if (TaonHelpers.isGoodPath(bc.path)) {
|
|
173
|
-
return bc.path;
|
|
174
|
-
}
|
|
175
|
-
return bc.className;
|
|
176
|
-
})
|
|
177
|
-
.join('/');
|
|
178
|
-
return `/${parentscalculatedPath}/${ClassHelpers.getName(target)}`;
|
|
179
|
-
};
|
|
180
|
-
})(ClassHelpers || (ClassHelpers = {}));
|
|
181
|
-
;
|
|
182
|
-
({}); // @--end-of-file-for-module=taon lib/helpers/class-helpers.ts
|
|
183
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3MtaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1kaXN0L3Rhb24vcHJvamVjdHMvdGFvbi9zcmMvbGliL2hlbHBlcnMvY2xhc3MtaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFbkMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN6RCxLQUFLO0FBQ0wsS0FBSztBQUdMLE1BQU0sS0FBVyxZQUFZLENBd1E1QjtBQXhRRCxXQUFpQixZQUFZO0lBRTNCOztPQUVHO0lBQ1UsaUNBQW9CLEdBQUcsQ0FBQyxJQUFZLEVBQUUsRUFBRTtRQUNuRCxJQUFJLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQzFDLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQzFCLENBQUM7UUFDRCxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLElBQUksQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEtBQUssUUFBUTtZQUMxRCxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVc7WUFDZixDQUFDLENB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LENBQUMsQ0FBQzthQUNELElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUViLE9BQU8sSUFBSSxxQkFBcUIsSUFBSSxZQUFZLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7SUFDckUsQ0FBQyxDQUFDO0FBRUosQ0FBQyxFQXhRZ0IsWUFBWSxLQUFaLFlBQVksUUF3UTVCO0FBRUEsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyw4REFBOEQiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuaW1wb3J0IHsgU3ltYm9scyB9IGZyb20gJy4uL3N5bWJvbHMnO1xuaW1wb3J0IHsgVmFsaWRhdG9ycyB9IGZyb20gJy4uL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IHsgXyB9IGZyb20gJ3RucC1jb3JlL2Jyb3dzZXInO1xuaW1wb3J0IHsgTW9kZWxzIH0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7IFRhb25Db250cm9sbGVyT3B0aW9ucyB9IGZyb20gJy4uL2RlY29yYXRvcnMvY2xhc3Nlcy9jb250cm9sbGVyLWRlY29yYXRvcic7XG5pbXBvcnQgeyBUYW9uSGVscGVycyB9IGZyb20gJy4vdGFvbi1oZWxwZXJzJztcbmltcG9ydCB7IFRhb25FbnRpdHlPcHRpb25zIH0gZnJvbSAnLi4vZGVjb3JhdG9ycy9jbGFzc2VzL2VudGl0eS1kZWNvcmF0b3InO1xuaW1wb3J0IHsgQ0xBU1MgfSBmcm9tICd0eXBlc2NyaXB0LWNsYXNzLWhlbHBlcnMvYnJvd3Nlcic7XG4vKiAqL1xuLyogKi9cbiAgXG5cbmV4cG9ydCBuYW1lc3BhY2UgQ2xhc3NIZWxwZXJzIHtcblxuICAvKipcbiAgICogVE9ETyAtIHJlcGFsY2UgaW4gZXZlcnkgcGxhY2Ugd2hlbiBnZXR0aW5nIGNsYXNzIGZuIGZyb20gb2JqZWN0XG4gICAqL1xuICBleHBvcnQgY29uc3QgZ2V0Q2xhc3NGbkZyb21PYmplY3QgPSAoanNvbjogT2JqZWN0KSA9PiB7XG4gICAgaWYgKF8uaXNVbmRlZmluZWQoanNvbikgfHwgXy5pc051bGwoanNvbikpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGpzb24uY29uc3RydWN0b3IpIHtcbiAgICAgIHJldHVybiBqc29uLmNvbnN0cnVjdG9yO1xuICAgIH1cbiAgICBjb25zdCBwID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKGpzb24pO1xuICAgIHJldHVybiBwICYmIHAuY29uc3RydWN0b3IgJiYgcC5jb25zdHJ1Y3Rvci5uYW1lICE9PSAnT2JqZWN0J1xuICAgICAgPyBwLmNvbnN0cnVjdG9yXG4gICAgICA6IHZvaWQgMDtcbiAgfTtcblxuXG5cbiAgZXhwb3J0IGNvbnN0IGdldE5hbWUgPSAoY2xhc3NGbk9yT2JqZWN0OiBhbnkpOiBzdHJpbmcgPT4ge1xuXG4gICAgaWYgKGNsYXNzRm5Pck9iamVjdCBpbnN0YW5jZW9mIEZvcm1EYXRhKSB7XG4gICAgICByZXR1cm4gJ0Zvcm1EYXRhJztcbiAgICB9XG4gICAgaWYgKCFjbGFzc0ZuT3JPYmplY3QpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ09CSkVDVCBPUiBDTEFTUycsIGNsYXNzRm5Pck9iamVjdCk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBnZXQgbmFtZSBmcm9tIHRoaXMgb2JqZWN0IG9yIGNsYXNzLmApO1xuICAgIH1cbiAgICByZXR1cm4gKFxuICAgICAgKGNsYXNzRm5Pck9iamVjdFtTeW1ib2xzLmNsYXNzTmFtZVN0YXRpY1Byb3BlcnR5XVxuICAgICAgICA/IGNsYXNzRm5Pck9iamVjdFtTeW1ib2xzLmNsYXNzTmFtZVN0YXRpY1Byb3BlcnR5XVxuICAgICAgICA6IGNsYXNzRm5Pck9iamVjdD8uY29uc3RydWN0b3JbU3ltYm9scy5jbGFzc05hbWVTdGF0aWNQcm9wZXJ0eV0pIHx8XG4gICAgICBDTEFTUy5nZXROYW1lKGNsYXNzRm5Pck9iamVjdClcbiAgICApO1xuICB9O1xuXG5cbiAgZXhwb3J0IGNvbnN0IGdldE9yZ2luYWxDbGFzcyA9IChjbGFzc0ZuT3JPYmplY3Q6IGFueSk6IGFueSA9PiB7XG4gICAgY29uc3Qgb3JnID0gY2xhc3NGbk9yT2JqZWN0W1N5bWJvbHMub3JpZ25hbENsYXNzXTtcbiAgICBpZiAoIW9yZykge1xuICAgICAgcmV0dXJuIGNsYXNzRm5Pck9iamVjdDtcbiAgICB9XG4gICAgcmV0dXJuIGdldE9yZ2luYWxDbGFzcyhvcmcpO1xuICB9O1xuXG5cbiAgZXhwb3J0IGNvbnN0IGdldEZ1bGxJbnRlcm5hbE5hbWUgPSAoY2xhc3NGbk9yT2JqZWN0OiBhbnkpOiBzdHJpbmcgPT4ge1xuXG5cbiAgICBpZiAoIWNsYXNzRm5Pck9iamVjdCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZ2V0IG5hbWUgZnJvbTogJHtjbGFzc0ZuT3JPYmplY3R9YCk7XG4gICAgfVxuICAgIHJldHVybiAoXG4gICAgICAoY2xhc3NGbk9yT2JqZWN0W1N5bWJvbHMuZnVsbENsYXNzTmFtZVN0YXRpY1Byb3BlcnR5XVxuICAgICAgICA/IGNsYXNzRm5Pck9iamVjdFtTeW1ib2xzLmZ1bGxDbGFzc05hbWVTdGF0aWNQcm9wZXJ0eV1cbiAgICAgICAgOiBjbGFzc0ZuT3JPYmplY3Q/LmNvbnN0cnVjdG9yW1N5bWJvbHMuZnVsbENsYXNzTmFtZVN0YXRpY1Byb3BlcnR5XSkgfHxcbiAgICAgIHZvaWQgMFxuICAgICk7XG4gIH07XG5cblxuXG4gIGV4cG9ydCBjb25zdCBnZXRVbmlxdWVLZXkgPSAoY2xhc3NGbk9yT2JqZWN0OiBhbnkpOiBzdHJpbmcgPT4ge1xuICAgIGNvbnN0IGNsYXNzRm4gPSBfLmlzRnVuY3Rpb24oY2xhc3NGbk9yT2JqZWN0KVxuICAgICAgPyBjbGFzc0ZuT3JPYmplY3RcbiAgICAgIDogY2xhc3NGbk9yT2JqZWN0LmNvbnN0cnVjdG9yO1xuICAgIGNvbnN0IGNvbmZpZyA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoXG4gICAgICBTeW1ib2xzLm1ldGFkYXRhLm9wdGlvbnMuY29udHJvbGxlcixcbiAgICAgIGNsYXNzRm4sXG4gICAgKSBhcyBUYW9uRW50aXR5T3B0aW9ucztcbiAgICByZXR1cm4gY29uZmlnLnVuaXF1ZUtleVByb3A7XG4gIH07XG5cblxuXG4gIGV4cG9ydCBjb25zdCBpc0NvbnRleHRDbGFzc09iamVjdCA9IChvYmo6IGFueSk6IGJvb2xlYW4gPT4ge1xuICAgIGlmIChcbiAgICAgICFfLmlzT2JqZWN0KG9iaikgfHxcbiAgICAgIF8uaXNBcnJheShvYmopIHx8XG4gICAgICBfLmlzUmVnRXhwKG9iaikgfHxcbiAgICAgIF8uaXNCdWZmZXIob2JqKSB8fFxuICAgICAgXy5pc0FycmF5QnVmZmVyKG9iailcbiAgICApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKF8uaXNEYXRlKG9iaikpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBjb25zdCBjbGFzc05hbWUgPSBnZXROYW1lKG9iaik7XG4gICAgcmV0dXJuIF8uaXNTdHJpbmcoY2xhc3NOYW1lKSAmJiBjbGFzc05hbWUgIT09ICdPYmplY3QnO1xuICB9O1xuXG5cblxuXG4gIGV4cG9ydCBjb25zdCBzZXROYW1lID0gKHRhcmdldDogRnVuY3Rpb24sIGNsYXNzTmFtZTogc3RyaW5nKTogdm9pZCA9PiB7XG5cbiAgICBWYWxpZGF0b3JzLmNsYXNzTmFtZVZsaWRhdGlvbihjbGFzc05hbWUsIHRhcmdldCk7XG4gICAgdGFyZ2V0W1N5bWJvbHMuY2xhc3NOYW1lU3RhdGljUHJvcGVydHldID0gY2xhc3NOYW1lO1xuICB9O1xuXG5cblxuICBleHBvcnQgY29uc3QgaGFzUGFyZW50Q2xhc3NXaXRoTmFtZSA9IChcbiAgICB0YXJnZXQ6IEZ1bmN0aW9uLFxuICAgIGNsYXNzTmFtZTogc3RyaW5nLFxuICAgIHRhcmdldHMgPSBbXSxcbiAgKTogYm9vbGVhbiA9PiB7XG4gICAgaWYgKCF0YXJnZXQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdGFyZ2V0cy5wdXNoKHRhcmdldCk7XG4gICAgbGV0IHRhcmdldFByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHRhcmdldCk7XG5cbiAgICBpZiAoXG4gICAgICBfLmlzRnVuY3Rpb24odGFyZ2V0UHJvdG8pICYmXG4gICAgICBDbGFzc0hlbHBlcnMuZ2V0TmFtZSh0YXJnZXRQcm90bykgPT09IGNsYXNzTmFtZVxuICAgICkge1xuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGhhc1BhcmVudENsYXNzV2l0aE5hbWUodGFyZ2V0UHJvdG8sIGNsYXNzTmFtZSwgdGFyZ2V0cyk7XG4gIH07XG5cblxuXG4gIGV4cG9ydCBjb25zdCBnZXRDb250cm9sbGVyQ29uZmlnID0gKFxuICAgIHRhcmdldDogRnVuY3Rpb24sXG4gICk6IE1vZGVscy5Db250cm9sbGVyQ29uZmlnIHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBjbGFzc01ldGFkYXRhT3B0aW9uczogVGFvbkNvbnRyb2xsZXJPcHRpb25zID0gUmVmbGVjdC5nZXRNZXRhZGF0YShcbiAgICAgIFN5bWJvbHMubWV0YWRhdGEub3B0aW9ucy5jb250cm9sbGVyLFxuICAgICAgdGFyZ2V0LFxuICAgICk7XG4gICAgY29uc3QgY2xhc3NNZXRhZGF0YTogTW9kZWxzLkNvbnRyb2xsZXJDb25maWcgPSBfLm1lcmdlKFxuICAgICAgbmV3IE1vZGVscy5Db250cm9sbGVyQ29uZmlnKCksXG4gICAgICBjbGFzc01ldGFkYXRhT3B0aW9ucyxcbiAgICApO1xuXG5cbiAgICBjb25zdCBtZXRob2ROYW1lcyA9IENsYXNzSGVscGVycy5nZXRNZXRob2RzTmFtZXModGFyZ2V0KTsgLy8gIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRhcmdldC5wcm90b3R5cGUpO1xuXG4gICAgZm9yIChjb25zdCBtZXRob2ROYW1lIG9mIG1ldGhvZE5hbWVzKSB7XG4gICAgICBjb25zdCBtZXRob2RNZXRhZGF0YTogTW9kZWxzLk1ldGhvZENvbmZpZyA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoXG4gICAgICAgIFN5bWJvbHMubWV0YWRhdGEub3B0aW9ucy5jb250cm9sbGVyTWV0aG9kLFxuICAgICAgICB0YXJnZXQsXG4gICAgICAgIG1ldGhvZE5hbWUsXG4gICAgICApO1xuXG4gICAgICBpZiAobWV0aG9kTWV0YWRhdGEpIHtcbiAgICAgICAgY2xhc3NNZXRhZGF0YS5tZXRob2RzW21ldGhvZE5hbWVdID0gbWV0aG9kTWV0YWRhdGE7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjbGFzc01ldGFkYXRhO1xuICB9O1xuXG5cblxuXG5cbiAgY29uc3Qgbm90QWxsb3dlZEFzTWV0aG9kTmFtZSA9IFtcbiAgICAnbGVuZ3RoJyxcbiAgICAnbmFtZScsXG4gICAgJ2FyZ3VtZW50cycsXG4gICAgJ2NhbGxlcicsXG4gICAgJ2NvbnN0cnVjdG9yJyxcbiAgICAnYXBwbHknLFxuICAgICdiaW5kJyxcbiAgICAnY2FsbCcsXG4gICAgJ3RvU3RyaW5nJyxcbiAgICAnX19kZWZpbmVHZXR0ZXJfXycsXG4gICAgJ19fZGVmaW5lU2V0dGVyX18nLFxuICAgICdoYXNPd25Qcm9wZXJ0eScsXG4gICAgJ19fbG9va3VwR2V0dGVyX18nLFxuICAgICdfX2xvb2t1cFNldHRlcl9fJyxcbiAgICAnaXNQcm90b3R5cGVPZicsXG4gICAgJ3Byb3BlcnR5SXNFbnVtZXJhYmxlJyxcbiAgICAndmFsdWVPZicsXG4gICAgJ19fcHJvdG9fXycsXG4gICAgJ3RvTG9jYWxlU3RyaW5nJyxcbiAgXTtcblxuXG4gIGV4cG9ydCBjb25zdCBnZXRNZXRob2RzTmFtZXMgPSAoXG4gICAgY2xhc3NPckNsYXNzSW5zdGFuY2U6IGFueSxcbiAgICBhbGxNZXRob2RzTmFtZXMgPSBbXSxcbiAgKTogc3RyaW5nW10gPT4ge1xuICAgIGlmICghY2xhc3NPckNsYXNzSW5zdGFuY2UpIHtcbiAgICAgIHJldHVybiBhbGxNZXRob2RzTmFtZXM7XG4gICAgfVxuXG4gICAgY29uc3QgaXNDbGFzc0Z1bmN0aW9uID0gXy5pc0Z1bmN0aW9uKGNsYXNzT3JDbGFzc0luc3RhbmNlKTtcbiAgICBjb25zdCBjbGFzc0Z1biA9IGlzQ2xhc3NGdW5jdGlvblxuICAgICAgPyBjbGFzc09yQ2xhc3NJbnN0YW5jZVxuICAgICAgOiBPYmplY3QuZ2V0UHJvdG90eXBlT2YoY2xhc3NPckNsYXNzSW5zdGFuY2UpO1xuICAgIGNvbnN0IG9iamVjdFRvQ2hlY2sgPSBpc0NsYXNzRnVuY3Rpb25cbiAgICAgID8gKGNsYXNzT3JDbGFzc0luc3RhbmNlIGFzIEZ1bmN0aW9uKT8ucHJvdG90eXBlXG4gICAgICA6IGNsYXNzT3JDbGFzc0luc3RhbmNlO1xuICAgIGNvbnN0IHByb3RvdHlwZU9iaiA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmplY3RUb0NoZWNrIHx8IHt9KTtcblxuICAgIGNvbnN0IHByb3BlcnRpZXMgPSBfLnVuaXEoW1xuICAgICAgLi4uT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0VG9DaGVjayB8fCB7fSksXG4gICAgICAuLi5PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhwcm90b3R5cGVPYmogfHwge30pLFxuICAgICAgLi4uT2JqZWN0LmtleXMob2JqZWN0VG9DaGVjayB8fCB7fSksXG4gICAgICAuLi5PYmplY3Qua2V5cyhwcm90b3R5cGVPYmogfHwge30pLFxuICAgIF0pLmZpbHRlcihmID0+ICEhZiAmJiAhbm90QWxsb3dlZEFzTWV0aG9kTmFtZS5pbmNsdWRlcyhmKSk7XG5cbiAgICBwcm9wZXJ0aWVzXG4gICAgICAuZmlsdGVyKG1ldGhvZE5hbWUgPT4gdHlwZW9mIG9iamVjdFRvQ2hlY2tbbWV0aG9kTmFtZV0gPT09ICdmdW5jdGlvbicpXG4gICAgICAuZm9yRWFjaChwID0+IGFsbE1ldGhvZHNOYW1lcy5wdXNoKHApKTtcblxuICAgIGlmIChcbiAgICAgICFjbGFzc0Z1biB8fFxuICAgICAgIWNsYXNzRnVuLmNvbnN0cnVjdG9yIHx8XG4gICAgICBjbGFzc0Z1bj8uY29uc3RydWN0b3I/Lm5hbWUgPT09ICdPYmplY3QnXG4gICAgKSB7XG4gICAgICByZXR1cm4gYWxsTWV0aG9kc05hbWVzO1xuICAgIH1cbiAgICByZXR1cm4gZ2V0TWV0aG9kc05hbWVzKE9iamVjdC5nZXRQcm90b3R5cGVPZihjbGFzc0Z1biksIGFsbE1ldGhvZHNOYW1lcyk7XG4gIH07XG5cblxuXG4gIGV4cG9ydCBjb25zdCBnZXRDb250cm9sbGVyQ29uZmlncyA9IChcbiAgICB0YXJnZXQ6IEZ1bmN0aW9uLFxuICAgIGNvbmZpZ3M6IE1vZGVscy5Db250cm9sbGVyQ29uZmlnW10gPSBbXSxcbiAgICBjYWxsZXJUYXJnZXQ/OiBGdW5jdGlvbixcbiAgKTogTW9kZWxzLlJ1bnRpbWVDb250cm9sbGVyQ29uZmlnW10gPT4ge1xuICAgIGlmICghXy5pc0Z1bmN0aW9uKHRhcmdldCkpIHtcbiAgICAgIHRocm93IGBbdHlwZXNjcmlwdC1jbGFzcy1oZWxwZXJdW2dldENsYXNzQ29uZmlnXSBDYW5ub3QgZ2V0IGNsYXNzIGNvbmZpZyBmcm9tOiAke3RhcmdldH1gO1xuICAgIH1cblxuICAgIGxldCBjb25maWc6IE1vZGVscy5SdW50aW1lQ29udHJvbGxlckNvbmZpZztcbiAgICBjb25zdCBwYXJlbnRDbGFzcyA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih0YXJnZXQpO1xuICAgIGNvbnN0IHBhcmVudE5hbWUgPSBwYXJlbnRDbGFzcyA/IENsYXNzSGVscGVycy5nZXROYW1lKHBhcmVudENsYXNzKSA6IHZvaWQgMDtcbiAgICBjb25zdCBpc1ZhbGlkUGFyZW50ID0gXy5pc0Z1bmN0aW9uKHBhcmVudENsYXNzKSAmJiBwYXJlbnROYW1lICE9PSAnJztcblxuICAgIGNvbmZpZyA9IGdldENvbnRyb2xsZXJDb25maWcodGFyZ2V0KTtcblxuICAgIGNvbmZpZ3MucHVzaChjb25maWcpO1xuXG4gICAgcmV0dXJuIGlzVmFsaWRQYXJlbnRcbiAgICAgID8gZ2V0Q29udHJvbGxlckNvbmZpZ3MocGFyZW50Q2xhc3MsIGNvbmZpZ3MsIHRhcmdldClcbiAgICAgIDogY29uZmlncztcbiAgfTtcblxuXG5cbiAgZXhwb3J0IGNvbnN0IGdldENhbGN1bGF0ZWRQYXRoRm9yID0gKHRhcmdldDogRnVuY3Rpb24pID0+IHtcbiAgICBjb25zdCBjb25maWdzID0gZ2V0Q29udHJvbGxlckNvbmZpZ3ModGFyZ2V0KTtcblxuICAgIGNvbnN0IHBhcmVudHNjYWxjdWxhdGVkUGF0aCA9IF8uc2xpY2UoY29uZmlncywgMSlcbiAgICAgIC5yZXZlcnNlKClcbiAgICAgIC5tYXAoYmMgPT4ge1xuICAgICAgICBpZiAoVGFvbkhlbHBlcnMuaXNHb29kUGF0aChiYy5wYXRoKSkge1xuICAgICAgICAgIHJldHVybiBiYy5wYXRoO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBiYy5jbGFzc05hbWU7XG4gICAgICB9KVxuICAgICAgLmpvaW4oJy8nKTtcblxuICAgIHJldHVybiBgLyR7cGFyZW50c2NhbGN1bGF0ZWRQYXRofS8ke0NsYXNzSGVscGVycy5nZXROYW1lKHRhcmdldCl9YDtcbiAgfTtcblxufVxuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9dGFvbiBsaWIvaGVscGVycy9jbGFzcy1oZWxwZXJzLnRzIl19
|
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
import { _ } from 'tnp-core/browser';
|
|
2
|
-
import * as JSON5 from 'json5';
|
|
3
|
-
import { ClassHelpers } from './class-helpers';
|
|
4
|
-
export var TaonHelpers;
|
|
5
|
-
(function (TaonHelpers) {
|
|
6
|
-
TaonHelpers.fillUpTo = (s, nCharacters) => {
|
|
7
|
-
return _.times(nCharacters, n => {
|
|
8
|
-
if (s.charAt(n)) {
|
|
9
|
-
return s.charAt(n);
|
|
10
|
-
}
|
|
11
|
-
return ' ';
|
|
12
|
-
}).join('');
|
|
13
|
-
};
|
|
14
|
-
TaonHelpers.isGoodPath = (p) => {
|
|
15
|
-
return p && typeof p === 'string' && p.trim() !== '';
|
|
16
|
-
};
|
|
17
|
-
TaonHelpers.tryTransformParam = param => {
|
|
18
|
-
if (typeof param === 'string') {
|
|
19
|
-
let n = Number(param);
|
|
20
|
-
if (!isNaN(n))
|
|
21
|
-
return n;
|
|
22
|
-
const bool = param.trim().toLowerCase();
|
|
23
|
-
if (bool === 'true') {
|
|
24
|
-
return true;
|
|
25
|
-
}
|
|
26
|
-
if (bool === 'false') {
|
|
27
|
-
return false;
|
|
28
|
-
}
|
|
29
|
-
try {
|
|
30
|
-
const t = JSON5.parse(param);
|
|
31
|
-
return t;
|
|
32
|
-
}
|
|
33
|
-
catch (e) {
|
|
34
|
-
return param;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
return param;
|
|
38
|
-
};
|
|
39
|
-
TaonHelpers.getExpressPath = (c, pathOrClassConfig) => {
|
|
40
|
-
if (typeof pathOrClassConfig === 'string')
|
|
41
|
-
return `${c.calculatedPath}${pathOrClassConfig}`.replace(/\/$/, '');
|
|
42
|
-
return `${c.calculatedPath}${pathOrClassConfig.path}`.replace(/\/$/, '');
|
|
43
|
-
};
|
|
44
|
-
TaonHelpers.defaultType = value => {
|
|
45
|
-
if (typeof value === 'string')
|
|
46
|
-
return '';
|
|
47
|
-
if (typeof value === 'boolean')
|
|
48
|
-
return false;
|
|
49
|
-
if (Array.isArray(value))
|
|
50
|
-
return {};
|
|
51
|
-
if (typeof value === 'object')
|
|
52
|
-
return {};
|
|
53
|
-
};
|
|
54
|
-
TaonHelpers.parseJSONwithStringJSONs = (object, waring = false) => {
|
|
55
|
-
if (!_.isObject(object)) {
|
|
56
|
-
if (waring) {
|
|
57
|
-
console.error(`
|
|
58
|
-
parseJSONwithStringJSONs(...)
|
|
59
|
-
Parameter should be a object, but is ${typeof object}
|
|
60
|
-
`, object);
|
|
61
|
-
}
|
|
62
|
-
return object;
|
|
63
|
-
}
|
|
64
|
-
let res = _.cloneDeep(object);
|
|
65
|
-
Object.keys(res).forEach(key => {
|
|
66
|
-
let isJson = false;
|
|
67
|
-
try {
|
|
68
|
-
const possibleJSON = JSON.parse(res[key]);
|
|
69
|
-
res[key] = possibleJSON;
|
|
70
|
-
isJson = true;
|
|
71
|
-
}
|
|
72
|
-
catch (e) {
|
|
73
|
-
isJson = false;
|
|
74
|
-
}
|
|
75
|
-
if (isJson) {
|
|
76
|
-
res[key] = TaonHelpers.parseJSONwithStringJSONs(res[key], false);
|
|
77
|
-
}
|
|
78
|
-
});
|
|
79
|
-
return res;
|
|
80
|
-
};
|
|
81
|
-
TaonHelpers.isPlainFileOrFolder = filePath => {
|
|
82
|
-
return /^([a-zA-Z]|\-|\_|\@|\#|\$|\!|\^|\&|\*|\(|\))+$/.test(filePath);
|
|
83
|
-
};
|
|
84
|
-
TaonHelpers.ipcKeyNameResponse = (target, methodConfig, expressPath) => {
|
|
85
|
-
return [
|
|
86
|
-
'response',
|
|
87
|
-
ClassHelpers.getName(target),
|
|
88
|
-
methodConfig.methodName,
|
|
89
|
-
methodConfig.type,
|
|
90
|
-
expressPath,
|
|
91
|
-
].join('--');
|
|
92
|
-
};
|
|
93
|
-
TaonHelpers.ipcKeyNameRequest = (target, methodConfig, expressPath) => {
|
|
94
|
-
return [
|
|
95
|
-
'request',
|
|
96
|
-
ClassHelpers.getName(target),
|
|
97
|
-
methodConfig.methodName,
|
|
98
|
-
methodConfig.type,
|
|
99
|
-
expressPath,
|
|
100
|
-
].join('--');
|
|
101
|
-
};
|
|
102
|
-
TaonHelpers.websqlMocks = headers => {
|
|
103
|
-
const response = {
|
|
104
|
-
status(status) {
|
|
105
|
-
return {
|
|
106
|
-
send(send) {
|
|
107
|
-
},
|
|
108
|
-
};
|
|
109
|
-
},
|
|
110
|
-
setHeader(key, value) {
|
|
111
|
-
headers[key] = value;
|
|
112
|
-
},
|
|
113
|
-
};
|
|
114
|
-
const request = {};
|
|
115
|
-
return { request, response };
|
|
116
|
-
};
|
|
117
|
-
})(TaonHelpers || (TaonHelpers = {}));
|
|
118
|
-
;
|
|
119
|
-
({}); // @--end-of-file-for-module=taon lib/helpers/taon-helpers.ts
|
|
120
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFvbi1oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWRpc3QvdGFvbi9wcm9qZWN0cy90YW9uL3NyYy9saWIvaGVscGVycy90YW9uLWhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3JDLE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBRS9CLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxNQUFNLEtBQVcsV0FBVyxDQWdLM0I7QUFoS0QsV0FBaUIsV0FBVztJQUViLG9CQUFRLEdBQUcsQ0FBQyxDQUFTLEVBQUUsV0FBbUIsRUFBRSxFQUFFO1FBQ3pELE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLEVBQUU7WUFDOUIsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ2hCLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNyQixDQUFDO1lBQ0QsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDZCxDQUFDLENBQUM7SUFJVyxzQkFBVSxHQUFHLENBQUMsQ0FBUyxFQUFFLEVBQUU7UUFDdEMsT0FBTyxDQUFDLElBQUksT0FBTyxDQUFDLEtBQUssUUFBUSxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDdkQsQ0FBQyxDQUFDO0lBSVcsNkJBQWlCLEdBQUcsS0FBSyxDQUFDLEVBQUU7UUFDdkMsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQUUsT0FBTyxDQUFDLENBQUM7WUFDeEIsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3hDLElBQUksSUFBSSxLQUFLLE1BQU0sRUFBRSxDQUFDO2dCQUNwQixPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7WUFDRCxJQUFJLElBQUksS0FBSyxPQUFPLEVBQUUsQ0FBQztnQkFDckIsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO1lBQ0QsSUFBSSxDQUFDO2dCQUNILE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzdCLE9BQU8sQ0FBQyxDQUFDO1lBQ1gsQ0FBQztZQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ1gsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQyxDQUFDO0lBSVcsMEJBQWMsR0FBRyxDQUM1QixDQUFpQyxFQUNqQyxpQkFBc0MsRUFDdEMsRUFBRTtRQUNGLElBQUksT0FBTyxpQkFBaUIsS0FBSyxRQUFRO1lBQ3ZDLE9BQU8sR0FBRyxDQUFDLENBQUMsY0FBYyxHQUFHLGlCQUFpQixFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN0RSxPQUFPLEdBQUcsQ0FBQyxDQUFDLGNBQWMsR0FBRyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzNFLENBQUMsQ0FBQztJQUlXLHVCQUFXLEdBQUcsS0FBSyxDQUFDLEVBQUU7UUFDakMsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDekMsSUFBSSxPQUFPLEtBQUssS0FBSyxTQUFTO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDN0MsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztZQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ3BDLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUTtZQUFFLE9BQU8sRUFBRSxDQUFDO0lBQzNDLENBQUMsQ0FBQztJQUlXLG9DQUF3QixHQUFHLENBQ3RDLE1BQWMsRUFDZCxNQUFNLEdBQUcsS0FBSyxFQUNOLEVBQUU7UUFFVixJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ3hCLElBQUksTUFBTSxFQUFFLENBQUM7Z0JBQ1gsT0FBTyxDQUFDLEtBQUssQ0FDWDs7K0NBRXFDLE9BQU8sTUFBTTtTQUNuRCxFQUNDLE1BQU0sQ0FDUCxDQUFDO1lBQ0osQ0FBQztZQUVELE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUM7UUFFRCxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTlCLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzdCLElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQztZQUNuQixJQUFJLENBQUM7Z0JBQ0gsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDMUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFlBQVksQ0FBQztnQkFDeEIsTUFBTSxHQUFHLElBQUksQ0FBQztZQUNoQixDQUFDO1lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDWCxNQUFNLEdBQUcsS0FBSyxDQUFDO1lBQ2pCLENBQUM7WUFFRCxJQUFJLE1BQU0sRUFBRSxDQUFDO2dCQUNYLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxZQUFBLHdCQUF3QixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN2RCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUMsQ0FBQztJQUlXLCtCQUFtQixHQUFHLFFBQVEsQ0FBQyxFQUFFO1FBQzVDLE9BQU8sZ0RBQWdELENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3pFLENBQUMsQ0FBQztJQUlXLDhCQUFrQixHQUFHLENBQ2hDLE1BQWdCLEVBQ2hCLFlBQWlDLEVBQ2pDLFdBQW1CLEVBQ25CLEVBQUU7UUFDRixPQUFPO1lBQ0wsVUFBVTtZQUNWLFlBQVksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1lBQzVCLFlBQVksQ0FBQyxVQUFVO1lBQ3ZCLFlBQVksQ0FBQyxJQUFJO1lBQ2pCLFdBQVc7U0FDWixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNmLENBQUMsQ0FBQztJQUlXLDZCQUFpQixHQUFHLENBQy9CLE1BQWdCLEVBQ2hCLFlBQWlDLEVBQ2pDLFdBQW1CLEVBQ25CLEVBQUU7UUFDRixPQUFPO1lBQ0wsU0FBUztZQUNULFlBQVksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1lBQzVCLFlBQVksQ0FBQyxVQUFVO1lBQ3ZCLFlBQVksQ0FBQyxJQUFJO1lBQ2pCLFdBQVc7U0FDWixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNmLENBQUMsQ0FBQztJQUlXLHVCQUFXLEdBQUcsT0FBTyxDQUFDLEVBQUU7UUFDbkMsTUFBTSxRQUFRLEdBQXFCO1lBQ2pDLE1BQU0sQ0FBQyxNQUFXO2dCQUVoQixPQUFPO29CQUNMLElBQUksQ0FBQyxJQUFTO29CQUVkLENBQUM7aUJBQ0YsQ0FBQztZQUNKLENBQUM7WUFDRCxTQUFTLENBQUMsR0FBVyxFQUFFLEtBQVU7Z0JBRS9CLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDdkIsQ0FBQztTQUNGLENBQUM7UUFDRixNQUFNLE9BQU8sR0FBb0IsRUFBRSxDQUFDO1FBQ3BDLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLENBQUM7SUFDL0IsQ0FBQyxDQUFDO0FBRUosQ0FBQyxFQWhLZ0IsV0FBVyxLQUFYLFdBQVcsUUFnSzNCO0FBRUEsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyw2REFBNkQiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuaW1wb3J0IHsgXyB9IGZyb20gJ3RucC1jb3JlL2Jyb3dzZXInO1xuaW1wb3J0ICogYXMgSlNPTjUgZnJvbSAnanNvbjUnO1xuaW1wb3J0IHsgTW9kZWxzIH0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7IENsYXNzSGVscGVycyB9IGZyb20gJy4vY2xhc3MtaGVscGVycyc7XG5cbmV4cG9ydCBuYW1lc3BhY2UgVGFvbkhlbHBlcnMge1xuXG4gIGV4cG9ydCBjb25zdCBmaWxsVXBUbyA9IChzOiBzdHJpbmcsIG5DaGFyYWN0ZXJzOiBudW1iZXIpID0+IHtcbiAgICByZXR1cm4gXy50aW1lcyhuQ2hhcmFjdGVycywgbiA9PiB7XG4gICAgICBpZiAocy5jaGFyQXQobikpIHtcbiAgICAgICAgcmV0dXJuIHMuY2hhckF0KG4pO1xuICAgICAgfVxuICAgICAgcmV0dXJuICcgJztcbiAgICB9KS5qb2luKCcnKTtcbiAgfTtcblxuXG5cbiAgZXhwb3J0IGNvbnN0IGlzR29vZFBhdGggPSAocDogc3RyaW5nKSA9PiB7XG4gICAgcmV0dXJuIHAgJiYgdHlwZW9mIHAgPT09ICdzdHJpbmcnICYmIHAudHJpbSgpICE9PSAnJztcbiAgfTtcblxuXG5cbiAgZXhwb3J0IGNvbnN0IHRyeVRyYW5zZm9ybVBhcmFtID0gcGFyYW0gPT4ge1xuICAgIGlmICh0eXBlb2YgcGFyYW0gPT09ICdzdHJpbmcnKSB7XG4gICAgICBsZXQgbiA9IE51bWJlcihwYXJhbSk7XG4gICAgICBpZiAoIWlzTmFOKG4pKSByZXR1cm4gbjtcbiAgICAgIGNvbnN0IGJvb2wgPSBwYXJhbS50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICAgIGlmIChib29sID09PSAndHJ1ZScpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoYm9vbCA9PT0gJ2ZhbHNlJykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB0ID0gSlNPTjUucGFyc2UocGFyYW0pO1xuICAgICAgICByZXR1cm4gdDtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIHBhcmFtO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcGFyYW07XG4gIH07XG5cblxuXG4gIGV4cG9ydCBjb25zdCBnZXRFeHByZXNzUGF0aCA9IChcbiAgICBjOiBNb2RlbHMuUnVudGltZUNvbnRyb2xsZXJDb25maWcsXG4gICAgcGF0aE9yQ2xhc3NDb25maWc6IE1vZGVscy5NZXRob2RDb25maWcsXG4gICkgPT4ge1xuICAgIGlmICh0eXBlb2YgcGF0aE9yQ2xhc3NDb25maWcgPT09ICdzdHJpbmcnKVxuICAgICAgcmV0dXJuIGAke2MuY2FsY3VsYXRlZFBhdGh9JHtwYXRoT3JDbGFzc0NvbmZpZ31gLnJlcGxhY2UoL1xcLyQvLCAnJyk7XG4gICAgcmV0dXJuIGAke2MuY2FsY3VsYXRlZFBhdGh9JHtwYXRoT3JDbGFzc0NvbmZpZy5wYXRofWAucmVwbGFjZSgvXFwvJC8sICcnKTtcbiAgfTtcblxuXG5cbiAgZXhwb3J0IGNvbnN0IGRlZmF1bHRUeXBlID0gdmFsdWUgPT4ge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSByZXR1cm4gJyc7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSByZXR1cm4ge307XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHJldHVybiB7fTtcbiAgfTtcblxuXG5cbiAgZXhwb3J0IGNvbnN0IHBhcnNlSlNPTndpdGhTdHJpbmdKU09OcyA9IChcbiAgICBvYmplY3Q6IE9iamVjdCxcbiAgICB3YXJpbmcgPSBmYWxzZSxcbiAgKTogT2JqZWN0ID0+IHtcblxuICAgIGlmICghXy5pc09iamVjdChvYmplY3QpKSB7XG4gICAgICBpZiAod2FyaW5nKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgYFxuICAgICAgICBwYXJzZUpTT053aXRoU3RyaW5nSlNPTnMoLi4uKVxuICAgICAgICBQYXJhbWV0ZXIgc2hvdWxkIGJlIGEgb2JqZWN0LCBidXQgaXMgJHt0eXBlb2Ygb2JqZWN0fVxuICAgICAgICBgLFxuICAgICAgICAgIG9iamVjdCxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICB9XG5cbiAgICBsZXQgcmVzID0gXy5jbG9uZURlZXAob2JqZWN0KTtcblxuICAgIE9iamVjdC5rZXlzKHJlcykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgbGV0IGlzSnNvbiA9IGZhbHNlO1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcG9zc2libGVKU09OID0gSlNPTi5wYXJzZShyZXNba2V5XSk7XG4gICAgICAgIHJlc1trZXldID0gcG9zc2libGVKU09OO1xuICAgICAgICBpc0pzb24gPSB0cnVlO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBpc0pzb24gPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGlzSnNvbikge1xuICAgICAgICByZXNba2V5XSA9IHBhcnNlSlNPTndpdGhTdHJpbmdKU09OcyhyZXNba2V5XSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuXG5cbiAgZXhwb3J0IGNvbnN0IGlzUGxhaW5GaWxlT3JGb2xkZXIgPSBmaWxlUGF0aCA9PiB7XG4gICAgcmV0dXJuIC9eKFthLXpBLVpdfFxcLXxcXF98XFxAfFxcI3xcXCR8XFwhfFxcXnxcXCZ8XFwqfFxcKHxcXCkpKyQvLnRlc3QoZmlsZVBhdGgpO1xuICB9O1xuXG5cblxuICBleHBvcnQgY29uc3QgaXBjS2V5TmFtZVJlc3BvbnNlID0gKFxuICAgIHRhcmdldDogRnVuY3Rpb24sXG4gICAgbWV0aG9kQ29uZmlnOiBNb2RlbHMuTWV0aG9kQ29uZmlnLFxuICAgIGV4cHJlc3NQYXRoOiBzdHJpbmcsXG4gICkgPT4ge1xuICAgIHJldHVybiBbXG4gICAgICAncmVzcG9uc2UnLFxuICAgICAgQ2xhc3NIZWxwZXJzLmdldE5hbWUodGFyZ2V0KSxcbiAgICAgIG1ldGhvZENvbmZpZy5tZXRob2ROYW1lLFxuICAgICAgbWV0aG9kQ29uZmlnLnR5cGUsXG4gICAgICBleHByZXNzUGF0aCxcbiAgICBdLmpvaW4oJy0tJyk7XG4gIH07XG5cblxuXG4gIGV4cG9ydCBjb25zdCBpcGNLZXlOYW1lUmVxdWVzdCA9IChcbiAgICB0YXJnZXQ6IEZ1bmN0aW9uLFxuICAgIG1ldGhvZENvbmZpZzogTW9kZWxzLk1ldGhvZENvbmZpZyxcbiAgICBleHByZXNzUGF0aDogc3RyaW5nLFxuICApID0+IHtcbiAgICByZXR1cm4gW1xuICAgICAgJ3JlcXVlc3QnLFxuICAgICAgQ2xhc3NIZWxwZXJzLmdldE5hbWUodGFyZ2V0KSxcbiAgICAgIG1ldGhvZENvbmZpZy5tZXRob2ROYW1lLFxuICAgICAgbWV0aG9kQ29uZmlnLnR5cGUsXG4gICAgICBleHByZXNzUGF0aCxcbiAgICBdLmpvaW4oJy0tJyk7XG4gIH07XG5cblxuXG4gIGV4cG9ydCBjb25zdCB3ZWJzcWxNb2NrcyA9IGhlYWRlcnMgPT4ge1xuICAgIGNvbnN0IHJlc3BvbnNlOiBFeHByZXNzLlJlc3BvbnNlID0ge1xuICAgICAgc3RhdHVzKHN0YXR1czogYW55KSB7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBzZW5kKHNlbmQ6IGFueSkge1xuXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgIH0sXG4gICAgICBzZXRIZWFkZXIoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcblxuICAgICAgICBoZWFkZXJzW2tleV0gPSB2YWx1ZTtcbiAgICAgIH0sXG4gICAgfTtcbiAgICBjb25zdCByZXF1ZXN0OiBFeHByZXNzLlJlcXVlc3QgPSB7fTtcbiAgICByZXR1cm4geyByZXF1ZXN0LCByZXNwb25zZSB9O1xuICB9O1xuXG59XG5cbiA7KHt9KTsgLy8gQC0tZW5kLW9mLWZpbGUtZm9yLW1vZHVsZT10YW9uIGxpYi9oZWxwZXJzL3Rhb24taGVscGVycy50cyJdfQ==
|