taon 0.0.0 → 18.0.12
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 +115 -0
- package/assets/shared/shared_folder_info.txt +7 -0
- package/bin/start.js +279 -0
- package/bin/taon +2 -1
- package/bin/taon-debug +2 -2
- package/bin/taon-debug-brk +3 -2
- package/browser/README.md +24 -0
- package/browser/esm2022/lib/base-classes/base-abstract-entity.mjs +18 -0
- package/browser/esm2022/lib/base-classes/base-class.mjs +17 -0
- package/browser/esm2022/lib/base-classes/base-context.mjs +14 -0
- package/browser/esm2022/lib/base-classes/base-controller.mjs +18 -0
- package/browser/esm2022/lib/base-classes/base-crud-controller.mjs +279 -0
- package/browser/esm2022/lib/base-classes/base-entity.mjs +18 -0
- package/browser/esm2022/lib/base-classes/base-injector.mjs +160 -0
- package/browser/esm2022/lib/base-classes/base-provider.mjs +6 -0
- package/browser/esm2022/lib/base-classes/base-repository.mjs +514 -0
- package/browser/esm2022/lib/base-classes/base-subscriber-for-entity.mjs +137 -0
- package/browser/esm2022/lib/base-classes/base-subscriber.mjs +27 -0
- package/browser/esm2022/lib/base-classes/base.mjs +26 -0
- package/browser/esm2022/lib/constants.mjs +4 -0
- package/browser/esm2022/lib/create-context.mjs +87 -0
- package/browser/esm2022/lib/decorators/classes/controller-decorator.mjs +15 -0
- package/browser/esm2022/lib/decorators/classes/entity-decorator.mjs +27 -0
- package/browser/esm2022/lib/decorators/classes/provider-decorator.mjs +15 -0
- package/browser/esm2022/lib/decorators/classes/repository-decorator.mjs +15 -0
- package/browser/esm2022/lib/decorators/classes/subscriber-decorator.mjs +41 -0
- package/browser/esm2022/lib/decorators/http/http-decorators.mjs +22 -0
- package/browser/esm2022/lib/decorators/http/http-methods-decorators.mjs +78 -0
- package/browser/esm2022/lib/decorators/http/http-params-decorators.mjs +47 -0
- package/browser/esm2022/lib/dependency-injection/di-container.mjs +32 -0
- package/browser/esm2022/lib/endpoint-context.mjs +1746 -0
- package/browser/esm2022/lib/entity-process.mjs +207 -0
- package/browser/esm2022/lib/env.mjs +6 -0
- package/browser/esm2022/lib/get-response-value.mjs +41 -0
- package/browser/esm2022/lib/helpers/class-helpers.mjs +183 -0
- package/browser/esm2022/lib/helpers/taon-helpers.mjs +120 -0
- package/browser/esm2022/lib/index.mjs +79 -0
- package/browser/esm2022/lib/inject.mjs +70 -0
- package/browser/esm2022/lib/models.mjs +77 -0
- package/browser/esm2022/lib/orm.mjs +6 -0
- package/browser/esm2022/lib/realtime/realtime-client.mjs +129 -0
- package/browser/esm2022/lib/realtime/realtime-core.mjs +54 -0
- package/browser/esm2022/lib/realtime/realtime-server.mjs +274 -0
- package/browser/esm2022/lib/realtime/realtime-strategy/index.mjs +7 -0
- package/browser/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-namespace.mjs +98 -0
- package/browser/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-wrapper.mjs +45 -0
- package/browser/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-namespace.mjs +40 -0
- package/browser/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-wrapper.mjs +25 -0
- package/browser/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc.models.mjs +4 -0
- package/browser/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc.mjs +49 -0
- package/browser/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/index.mjs +5 -0
- package/browser/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-client.mjs +50 -0
- package/browser/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-namespaces.mjs +48 -0
- package/browser/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-server.mjs +35 -0
- package/browser/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-socket.mjs +43 -0
- package/browser/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock.models.mjs +4 -0
- package/browser/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock.mjs +28 -0
- package/browser/esm2022/lib/realtime/realtime-strategy/realtime-strategy-socket-io.mjs +33 -0
- package/browser/esm2022/lib/realtime/realtime-strategy/realtime-strategy.mjs +10 -0
- package/browser/esm2022/lib/realtime/realtime-subs-manager.mjs +79 -0
- package/browser/esm2022/lib/realtime/realtime.models.mjs +4 -0
- package/browser/esm2022/lib/storage.mjs +5 -0
- package/browser/esm2022/lib/symbols.mjs +89 -0
- package/browser/esm2022/lib/ui/taon-admin-mode-configuration/models/taon-admin-mode-tabs.mjs +4 -0
- package/browser/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-control.service.mjs +32 -0
- package/browser/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.mjs +167 -0
- package/browser/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin.service.mjs +64 -0
- package/browser/esm2022/lib/validators.mjs +76 -0
- package/browser/esm2022/public-api.mjs +2 -0
- package/browser/esm2022/taon.mjs +5 -0
- package/browser/fesm2022/taon.mjs +4901 -0
- package/browser/fesm2022/taon.mjs.map +1 -0
- package/browser/index.d.ts +6 -0
- package/browser/lib/base-classes/base-abstract-entity.d.ts +7 -0
- package/browser/lib/base-classes/base-class.d.ts +9 -0
- package/browser/lib/base-classes/base-context.d.ts +17 -0
- package/browser/lib/base-classes/base-controller.d.ts +8 -0
- package/browser/lib/base-classes/base-crud-controller.d.ts +28 -0
- package/browser/lib/base-classes/base-entity.d.ts +8 -0
- package/browser/lib/base-classes/base-injector.d.ts +60 -0
- package/browser/lib/base-classes/base-provider.d.ts +4 -0
- package/browser/lib/base-classes/base-repository.d.ts +249 -0
- package/browser/lib/base-classes/base-subscriber-for-entity.d.ts +82 -0
- package/browser/lib/base-classes/base-subscriber.d.ts +5 -0
- package/browser/lib/base-classes/base.d.ts +36 -0
- package/browser/lib/constants.d.ts +2 -0
- package/browser/lib/create-context.d.ts +25 -0
- package/browser/lib/decorators/classes/controller-decorator.d.ts +13 -0
- package/browser/lib/decorators/classes/entity-decorator.d.ts +17 -0
- package/browser/lib/decorators/classes/provider-decorator.d.ts +5 -0
- package/browser/lib/decorators/classes/repository-decorator.d.ts +5 -0
- package/browser/lib/decorators/classes/subscriber-decorator.d.ts +6 -0
- package/browser/lib/decorators/http/http-decorators.d.ts +18 -0
- package/browser/lib/decorators/http/http-methods-decorators.d.ts +15 -0
- package/browser/lib/decorators/http/http-params-decorators.d.ts +6 -0
- package/browser/lib/dependency-injection/di-container.d.ts +6 -0
- package/browser/lib/endpoint-context.d.ts +117 -0
- package/browser/lib/entity-process.d.ts +40 -0
- package/browser/lib/env.d.ts +3 -0
- package/browser/lib/get-response-value.d.ts +7 -0
- package/browser/lib/helpers/class-helpers.d.ts +19 -0
- package/browser/lib/helpers/taon-helpers.d.ts +17 -0
- package/browser/lib/index.d.ts +113 -0
- package/browser/lib/inject.d.ts +9 -0
- package/browser/lib/models.d.ts +175 -0
- package/browser/lib/orm.d.ts +3 -0
- package/browser/lib/realtime/realtime-client.d.ts +32 -0
- package/browser/lib/realtime/realtime-core.d.ts +41 -0
- package/browser/lib/realtime/realtime-server.d.ts +14 -0
- package/browser/lib/realtime/realtime-strategy/index.d.ts +5 -0
- package/browser/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-namespace.d.ts +22 -0
- package/browser/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-wrapper.d.ts +17 -0
- package/browser/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-namespace.d.ts +11 -0
- package/browser/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-wrapper.d.ts +11 -0
- package/browser/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc.models.d.ts +14 -0
- package/browser/lib/realtime/realtime-strategy/realtime-strategy-ipc.d.ts +23 -0
- package/browser/lib/realtime/realtime-strategy/realtime-strategy-mock-models/index.d.ts +3 -0
- package/browser/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-client.d.ts +17 -0
- package/browser/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-namespaces.d.ts +18 -0
- package/browser/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-server.d.ts +12 -0
- package/browser/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-socket.d.ts +14 -0
- package/browser/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock.models.d.ts +12 -0
- package/browser/lib/realtime/realtime-strategy/realtime-strategy-mock.d.ts +15 -0
- package/browser/lib/realtime/realtime-strategy/realtime-strategy-socket-io.d.ts +17 -0
- package/browser/lib/realtime/realtime-strategy/realtime-strategy.d.ts +13 -0
- package/browser/lib/realtime/realtime-subs-manager.d.ts +15 -0
- package/browser/lib/realtime/realtime.models.d.ts +14 -0
- package/browser/lib/storage.d.ts +2 -0
- package/browser/lib/symbols.d.ts +73 -0
- package/browser/lib/ui/taon-admin-mode-configuration/models/taon-admin-mode-tabs.d.ts +6 -0
- package/browser/lib/ui/taon-admin-mode-configuration/taon-admin-control.service.d.ts +18 -0
- package/browser/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.d.ts +51 -0
- package/browser/lib/ui/taon-admin-mode-configuration/taon-admin.service.d.ts +25 -0
- package/browser/lib/validators.d.ts +8 -0
- package/browser/package.json +25 -0
- package/browser/public-api.d.ts +2 -0
- package/cli.d.ts +1 -0
- package/cli.js +24 -0
- package/cli.js.map +1 -0
- package/client/README.md +24 -0
- package/client/esm2022/lib/base-classes/base-abstract-entity.mjs +18 -0
- package/client/esm2022/lib/base-classes/base-class.mjs +17 -0
- package/client/esm2022/lib/base-classes/base-context.mjs +14 -0
- package/client/esm2022/lib/base-classes/base-controller.mjs +18 -0
- package/client/esm2022/lib/base-classes/base-crud-controller.mjs +279 -0
- package/client/esm2022/lib/base-classes/base-entity.mjs +18 -0
- package/client/esm2022/lib/base-classes/base-injector.mjs +160 -0
- package/client/esm2022/lib/base-classes/base-provider.mjs +6 -0
- package/client/esm2022/lib/base-classes/base-repository.mjs +514 -0
- package/client/esm2022/lib/base-classes/base-subscriber-for-entity.mjs +137 -0
- package/client/esm2022/lib/base-classes/base-subscriber.mjs +27 -0
- package/client/esm2022/lib/base-classes/base.mjs +26 -0
- package/client/esm2022/lib/constants.mjs +4 -0
- package/client/esm2022/lib/create-context.mjs +87 -0
- package/client/esm2022/lib/decorators/classes/controller-decorator.mjs +15 -0
- package/client/esm2022/lib/decorators/classes/entity-decorator.mjs +27 -0
- package/client/esm2022/lib/decorators/classes/provider-decorator.mjs +15 -0
- package/client/esm2022/lib/decorators/classes/repository-decorator.mjs +15 -0
- package/client/esm2022/lib/decorators/classes/subscriber-decorator.mjs +41 -0
- package/client/esm2022/lib/decorators/http/http-decorators.mjs +22 -0
- package/client/esm2022/lib/decorators/http/http-methods-decorators.mjs +78 -0
- package/client/esm2022/lib/decorators/http/http-params-decorators.mjs +47 -0
- package/client/esm2022/lib/dependency-injection/di-container.mjs +32 -0
- package/client/esm2022/lib/endpoint-context.mjs +1746 -0
- package/client/esm2022/lib/entity-process.mjs +207 -0
- package/client/esm2022/lib/env.mjs +6 -0
- package/client/esm2022/lib/get-response-value.mjs +41 -0
- package/client/esm2022/lib/helpers/class-helpers.mjs +183 -0
- package/client/esm2022/lib/helpers/taon-helpers.mjs +120 -0
- package/client/esm2022/lib/index.mjs +79 -0
- package/client/esm2022/lib/inject.mjs +70 -0
- package/client/esm2022/lib/models.mjs +77 -0
- package/client/esm2022/lib/orm.mjs +6 -0
- package/client/esm2022/lib/realtime/realtime-client.mjs +129 -0
- package/client/esm2022/lib/realtime/realtime-core.mjs +54 -0
- package/client/esm2022/lib/realtime/realtime-server.mjs +274 -0
- package/client/esm2022/lib/realtime/realtime-strategy/index.mjs +7 -0
- package/client/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-namespace.mjs +98 -0
- package/client/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-wrapper.mjs +45 -0
- package/client/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-namespace.mjs +40 -0
- package/client/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-wrapper.mjs +25 -0
- package/client/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc.models.mjs +4 -0
- package/client/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc.mjs +49 -0
- package/client/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/index.mjs +5 -0
- package/client/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-client.mjs +50 -0
- package/client/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-namespaces.mjs +48 -0
- package/client/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-server.mjs +35 -0
- package/client/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-socket.mjs +43 -0
- package/client/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock.models.mjs +4 -0
- package/client/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock.mjs +28 -0
- package/client/esm2022/lib/realtime/realtime-strategy/realtime-strategy-socket-io.mjs +33 -0
- package/client/esm2022/lib/realtime/realtime-strategy/realtime-strategy.mjs +10 -0
- package/client/esm2022/lib/realtime/realtime-subs-manager.mjs +79 -0
- package/client/esm2022/lib/realtime/realtime.models.mjs +4 -0
- package/client/esm2022/lib/storage.mjs +5 -0
- package/client/esm2022/lib/symbols.mjs +89 -0
- package/client/esm2022/lib/ui/taon-admin-mode-configuration/models/taon-admin-mode-tabs.mjs +4 -0
- package/client/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-control.service.mjs +32 -0
- package/client/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.mjs +167 -0
- package/client/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin.service.mjs +64 -0
- package/client/esm2022/lib/validators.mjs +76 -0
- package/client/esm2022/public-api.mjs +2 -0
- package/client/esm2022/taon.mjs +5 -0
- package/client/fesm2022/taon.mjs +4901 -0
- package/client/fesm2022/taon.mjs.map +1 -0
- package/client/index.d.ts +6 -0
- package/client/lib/base-classes/base-abstract-entity.d.ts +7 -0
- package/client/lib/base-classes/base-class.d.ts +9 -0
- package/client/lib/base-classes/base-context.d.ts +17 -0
- package/client/lib/base-classes/base-controller.d.ts +8 -0
- package/client/lib/base-classes/base-crud-controller.d.ts +28 -0
- package/client/lib/base-classes/base-entity.d.ts +8 -0
- package/client/lib/base-classes/base-injector.d.ts +60 -0
- package/client/lib/base-classes/base-provider.d.ts +4 -0
- package/client/lib/base-classes/base-repository.d.ts +249 -0
- package/client/lib/base-classes/base-subscriber-for-entity.d.ts +82 -0
- package/client/lib/base-classes/base-subscriber.d.ts +5 -0
- package/client/lib/base-classes/base.d.ts +36 -0
- package/client/lib/constants.d.ts +2 -0
- package/client/lib/create-context.d.ts +25 -0
- package/client/lib/decorators/classes/controller-decorator.d.ts +13 -0
- package/client/lib/decorators/classes/entity-decorator.d.ts +17 -0
- package/client/lib/decorators/classes/provider-decorator.d.ts +5 -0
- package/client/lib/decorators/classes/repository-decorator.d.ts +5 -0
- package/client/lib/decorators/classes/subscriber-decorator.d.ts +6 -0
- package/client/lib/decorators/http/http-decorators.d.ts +18 -0
- package/client/lib/decorators/http/http-methods-decorators.d.ts +15 -0
- package/client/lib/decorators/http/http-params-decorators.d.ts +6 -0
- package/client/lib/dependency-injection/di-container.d.ts +6 -0
- package/client/lib/endpoint-context.d.ts +117 -0
- package/client/lib/entity-process.d.ts +40 -0
- package/client/lib/env.d.ts +3 -0
- package/client/lib/get-response-value.d.ts +7 -0
- package/client/lib/helpers/class-helpers.d.ts +19 -0
- package/client/lib/helpers/taon-helpers.d.ts +17 -0
- package/client/lib/index.d.ts +113 -0
- package/client/lib/inject.d.ts +9 -0
- package/client/lib/models.d.ts +175 -0
- package/client/lib/orm.d.ts +3 -0
- package/client/lib/realtime/realtime-client.d.ts +32 -0
- package/client/lib/realtime/realtime-core.d.ts +41 -0
- package/client/lib/realtime/realtime-server.d.ts +14 -0
- package/client/lib/realtime/realtime-strategy/index.d.ts +5 -0
- package/client/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-namespace.d.ts +22 -0
- package/client/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-wrapper.d.ts +17 -0
- package/client/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-namespace.d.ts +11 -0
- package/client/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-wrapper.d.ts +11 -0
- package/client/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc.models.d.ts +14 -0
- package/client/lib/realtime/realtime-strategy/realtime-strategy-ipc.d.ts +23 -0
- package/client/lib/realtime/realtime-strategy/realtime-strategy-mock-models/index.d.ts +3 -0
- package/client/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-client.d.ts +17 -0
- package/client/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-namespaces.d.ts +18 -0
- package/client/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-server.d.ts +12 -0
- package/client/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-socket.d.ts +14 -0
- package/client/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock.models.d.ts +12 -0
- package/client/lib/realtime/realtime-strategy/realtime-strategy-mock.d.ts +15 -0
- package/client/lib/realtime/realtime-strategy/realtime-strategy-socket-io.d.ts +17 -0
- package/client/lib/realtime/realtime-strategy/realtime-strategy.d.ts +13 -0
- package/client/lib/realtime/realtime-subs-manager.d.ts +15 -0
- package/client/lib/realtime/realtime.models.d.ts +14 -0
- package/client/lib/storage.d.ts +2 -0
- package/client/lib/symbols.d.ts +73 -0
- package/client/lib/ui/taon-admin-mode-configuration/models/taon-admin-mode-tabs.d.ts +6 -0
- package/client/lib/ui/taon-admin-mode-configuration/taon-admin-control.service.d.ts +18 -0
- package/client/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.d.ts +51 -0
- package/client/lib/ui/taon-admin-mode-configuration/taon-admin.service.d.ts +25 -0
- package/client/lib/validators.d.ts +8 -0
- package/client/public-api.d.ts +2 -0
- package/index.d.ts +1 -0
- package/index.js +5 -1
- package/index.js.map +1 -0
- package/lib/base-classes/base-abstract-entity.d.ts +6 -0
- package/lib/base-classes/base-abstract-entity.js +40 -0
- package/lib/base-classes/base-abstract-entity.js.map +1 -0
- package/lib/base-classes/base-class.d.ts +8 -0
- package/lib/base-classes/base-class.js +35 -0
- package/lib/base-classes/base-class.js.map +1 -0
- package/lib/base-classes/base-context.d.ts +16 -0
- package/lib/base-classes/base-context.js +15 -0
- package/lib/base-classes/base-context.js.map +1 -0
- package/lib/base-classes/base-controller.d.ts +7 -0
- package/lib/base-classes/base-controller.js +24 -0
- package/lib/base-classes/base-controller.js.map +1 -0
- package/lib/base-classes/base-crud-controller.d.ts +27 -0
- package/lib/base-classes/base-crud-controller.js +385 -0
- package/lib/base-classes/base-crud-controller.js.map +1 -0
- package/lib/base-classes/base-entity.d.ts +7 -0
- package/lib/base-classes/base-entity.js +25 -0
- package/lib/base-classes/base-entity.js.map +1 -0
- package/lib/base-classes/base-injector.d.ts +59 -0
- package/lib/base-classes/base-injector.js +220 -0
- package/lib/base-classes/base-injector.js.map +1 -0
- package/lib/base-classes/base-provider.d.ts +3 -0
- package/lib/base-classes/base-provider.js +14 -0
- package/lib/base-classes/base-provider.js.map +1 -0
- package/lib/base-classes/base-repository.d.ts +254 -0
- package/lib/base-classes/base-repository.js +780 -0
- package/lib/base-classes/base-repository.js.map +1 -0
- package/lib/base-classes/base-subscriber-for-entity.d.ts +81 -0
- package/lib/base-classes/base-subscriber-for-entity.js +136 -0
- package/lib/base-classes/base-subscriber-for-entity.js.map +1 -0
- 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 +35 -0
- package/lib/base-classes/base.js +27 -0
- package/lib/base-classes/base.js.map +1 -0
- package/lib/build-info._auto-generated_.d.ts +1 -0
- package/lib/build-info._auto-generated_.js +5 -0
- package/lib/build-info._auto-generated_.js.map +1 -0
- package/lib/constants.d.ts +1 -0
- package/lib/constants.js +3 -0
- package/lib/constants.js.map +1 -0
- package/lib/create-context.d.ts +24 -0
- package/lib/create-context.js +183 -0
- package/lib/create-context.js.map +1 -0
- package/lib/decorators/classes/controller-decorator.d.ts +12 -0
- package/lib/decorators/classes/controller-decorator.js +24 -0
- package/lib/decorators/classes/controller-decorator.js.map +1 -0
- package/lib/decorators/classes/entity-decorator.d.ts +16 -0
- package/lib/decorators/classes/entity-decorator.js +39 -0
- package/lib/decorators/classes/entity-decorator.js.map +1 -0
- package/lib/decorators/classes/provider-decorator.d.ts +4 -0
- package/lib/decorators/classes/provider-decorator.js +24 -0
- package/lib/decorators/classes/provider-decorator.js.map +1 -0
- package/lib/decorators/classes/repository-decorator.d.ts +4 -0
- package/lib/decorators/classes/repository-decorator.js +24 -0
- package/lib/decorators/classes/repository-decorator.js.map +1 -0
- package/lib/decorators/classes/subscriber-decorator.d.ts +5 -0
- package/lib/decorators/classes/subscriber-decorator.js +75 -0
- package/lib/decorators/classes/subscriber-decorator.js.map +1 -0
- package/lib/decorators/http/http-decorators.d.ts +17 -0
- package/lib/decorators/http/http-decorators.js +23 -0
- package/lib/decorators/http/http-decorators.js.map +1 -0
- package/lib/decorators/http/http-methods-decorators.d.ts +14 -0
- package/lib/decorators/http/http-methods-decorators.js +91 -0
- package/lib/decorators/http/http-methods-decorators.js.map +1 -0
- package/lib/decorators/http/http-params-decorators.d.ts +5 -0
- package/lib/decorators/http/http-params-decorators.js +55 -0
- package/lib/decorators/http/http-params-decorators.js.map +1 -0
- package/lib/dependency-injection/di-container.d.ts +5 -0
- package/lib/dependency-injection/di-container.js +40 -0
- package/lib/dependency-injection/di-container.js.map +1 -0
- package/lib/endpoint-context.d.ts +117 -0
- package/lib/endpoint-context.js +2128 -0
- package/lib/endpoint-context.js.map +1 -0
- package/lib/entity-process.d.ts +39 -0
- package/lib/entity-process.js +261 -0
- package/lib/entity-process.js.map +1 -0
- package/lib/env.d.ts +2 -0
- package/lib/env.js +7 -0
- package/lib/env.js.map +1 -0
- package/lib/formly/formly-group-wrapper-component.d.ts +5 -0
- package/lib/formly/formly-group-wrapper-component.js +28 -0
- package/lib/formly/formly-group-wrapper-component.js.map +1 -0
- package/lib/formly/formly-repeat-component.d.ts +5 -0
- package/lib/formly/formly-repeat-component.js +47 -0
- package/lib/formly/formly-repeat-component.js.map +1 -0
- package/lib/formly/formly.models.d.ts +1 -0
- package/lib/formly/formly.models.js +3 -0
- package/lib/formly/formly.models.js.map +1 -0
- package/lib/formly/fromly.d.ts +16 -0
- package/lib/formly/fromly.js +213 -0
- package/lib/formly/fromly.js.map +1 -0
- package/lib/formly/type-from-entity.d.ts +20 -0
- package/lib/formly/type-from-entity.js +65 -0
- package/lib/formly/type-from-entity.js.map +1 -0
- package/lib/get-response-value.d.ts +6 -0
- package/lib/get-response-value.js +65 -0
- package/lib/get-response-value.js.map +1 -0
- package/lib/helpers/class-helpers.d.ts +18 -0
- package/lib/helpers/class-helpers.js +227 -0
- package/lib/helpers/class-helpers.js.map +1 -0
- package/lib/helpers/taon-helpers.d.ts +16 -0
- package/lib/helpers/taon-helpers.js +144 -0
- package/lib/helpers/taon-helpers.js.map +1 -0
- package/lib/index.d.ts +112 -0
- package/lib/index.js +113 -0
- package/lib/index.js.map +1 -0
- package/lib/inject.d.ts +8 -0
- package/lib/inject.js +84 -0
- package/lib/inject.js.map +1 -0
- package/lib/models.d.ts +180 -0
- package/lib/models.js +107 -0
- package/lib/models.js.map +1 -0
- package/lib/orm.d.ts +51 -0
- package/lib/orm.js +79 -0
- package/lib/orm.js.map +1 -0
- package/lib/realtime/realtime-client.d.ts +31 -0
- package/lib/realtime/realtime-client.js +158 -0
- package/lib/realtime/realtime-client.js.map +1 -0
- package/lib/realtime/realtime-core.d.ts +40 -0
- package/lib/realtime/realtime-core.js +72 -0
- package/lib/realtime/realtime-core.js.map +1 -0
- package/lib/realtime/realtime-server.d.ts +13 -0
- package/lib/realtime/realtime-server.js +193 -0
- package/lib/realtime/realtime-server.js.map +1 -0
- package/lib/realtime/realtime-strategy/index.d.ts +4 -0
- package/lib/realtime/realtime-strategy/index.js +8 -0
- package/lib/realtime/realtime-strategy/index.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.d.ts +22 -0
- package/lib/realtime/realtime-strategy/realtime-strategy-ipc.js +68 -0
- package/lib/realtime/realtime-strategy/realtime-strategy-ipc.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/realtime/realtime-strategy/realtime-strategy-mock.d.ts +14 -0
- package/lib/realtime/realtime-strategy/realtime-strategy-mock.js +42 -0
- package/lib/realtime/realtime-strategy/realtime-strategy-mock.js.map +1 -0
- package/lib/realtime/realtime-strategy/realtime-strategy-socket-io.d.ts +17 -0
- package/lib/realtime/realtime-strategy/realtime-strategy-socket-io.js +48 -0
- package/lib/realtime/realtime-strategy/realtime-strategy-socket-io.js.map +1 -0
- package/lib/realtime/realtime-strategy/realtime-strategy.d.ts +12 -0
- package/lib/realtime/realtime-strategy/realtime-strategy.js +14 -0
- package/lib/realtime/realtime-strategy/realtime-strategy.js.map +1 -0
- package/lib/realtime/realtime-subs-manager.d.ts +14 -0
- package/lib/realtime/realtime-subs-manager.js +102 -0
- package/lib/realtime/realtime-subs-manager.js.map +1 -0
- package/lib/realtime/realtime.models.d.ts +13 -0
- package/lib/realtime/realtime.models.js +3 -0
- package/lib/realtime/realtime.models.js.map +1 -0
- package/lib/storage.d.ts +1 -0
- package/lib/storage.js +6 -0
- package/lib/storage.js.map +1 -0
- package/lib/symbols.d.ts +72 -0
- package/lib/symbols.js +91 -0
- package/lib/symbols.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.d.ts +4 -0
- package/lib/ui/directives/index.js +5 -0
- package/lib/ui/directives/index.js.map +1 -0
- package/lib/ui/directives/safe.pipe.d.ts +7 -0
- package/lib/ui/directives/view-mode.d.ts +5 -0
- package/lib/ui/directives/view-mode.js +10 -0
- package/lib/ui/directives/view-mode.js.map +1 -0
- 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 +31 -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 +9 -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 +14 -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.d.ts +4 -0
- package/lib/ui/taon-admin-mode-configuration/index.js +5 -0
- package/lib/ui/taon-admin-mode-configuration/index.js.map +1 -0
- 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.component.d.ts +47 -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.service.d.ts +21 -0
- package/lib/ui/taon-github-fork-me-corner/index.d.ts +2 -0
- package/lib/ui/taon-github-fork-me-corner/index.js +5 -0
- package/lib/ui/taon-github-fork-me-corner/index.js.map +1 -0
- package/lib/ui/taon-github-fork-me-corner/taon-github-fork-me-corner.component.d.ts +3 -0
- package/lib/ui/taon-github-fork-me-corner/taon-github-fork-me-corner.module.d.ts +2 -0
- package/lib/ui/taon-github-fork-me-ribbon/index.d.ts +2 -0
- package/lib/ui/taon-github-fork-me-ribbon/index.js +5 -0
- package/lib/ui/taon-github-fork-me-ribbon/index.js.map +1 -0
- package/lib/ui/taon-github-fork-me-ribbon/taon-github-fork-me-ribbon.component.d.ts +3 -0
- package/lib/ui/taon-github-fork-me-ribbon/taon-github-fork-me-ribbon.module.d.ts +2 -0
- package/lib/ui/taon-notifications/index.d.ts +4 -0
- package/lib/ui/taon-notifications/index.js +11 -0
- package/lib/ui/taon-notifications/index.js.map +1 -0
- package/lib/ui/taon-notifications/taon-notifications.component.d.ts +9 -0
- package/lib/ui/taon-notifications/taon-notifications.models.d.ts +6 -0
- package/lib/ui/taon-notifications/taon-notifications.models.js +5 -0
- package/lib/ui/taon-notifications/taon-notifications.models.js.map +1 -0
- package/lib/ui/taon-notifications/taon-notifications.module.d.ts +2 -0
- package/lib/ui/taon-notifications/taon-notifications.service.d.ts +11 -0
- package/lib/ui/taon-progress-bar/index.d.ts +2 -0
- package/lib/ui/taon-progress-bar/index.js +5 -0
- package/lib/ui/taon-progress-bar/index.js.map +1 -0
- package/lib/ui/taon-progress-bar/taon-progress-bar.component.d.ts +14 -0
- package/lib/ui/taon-progress-bar/taon-progress-bar.module.d.ts +2 -0
- package/lib/ui/taon-session-passcode/index.d.ts +1 -0
- package/lib/ui/taon-session-passcode/index.js +5 -0
- package/lib/ui/taon-session-passcode/index.js.map +1 -0
- package/lib/ui/taon-session-passcode/taon-session-passcode.component.d.ts +35 -0
- package/lib/ui/taon.models.d.ts +11 -0
- package/lib/ui/taon.models.js +3 -0
- package/lib/ui/taon.models.js.map +1 -0
- package/lib/ui/toan-full-material.module.d.ts +2 -0
- package/lib/validators.d.ts +7 -0
- package/lib/validators.js +53 -0
- package/lib/validators.js.map +1 -0
- package/old-app .d.ts +0 -0
- package/old-app .js +115 -0
- package/old-app .js.map +1 -0
- package/package.json +74 -11
- package/playground.d.ts +0 -0
- package/playground.js +172 -0
- package/playground.js.map +1 -0
- package/src.d.ts +6 -0
- package/taon.jsonc +48 -0
- package/tmp-environment.json +393 -0
- package/websql/README.md +24 -0
- package/websql/esm2022/lib/base-classes/base-abstract-entity.mjs +25 -0
- package/websql/esm2022/lib/base-classes/base-class.mjs +17 -0
- package/websql/esm2022/lib/base-classes/base-context.mjs +14 -0
- package/websql/esm2022/lib/base-classes/base-controller.mjs +18 -0
- package/websql/esm2022/lib/base-classes/base-crud-controller.mjs +238 -0
- package/websql/esm2022/lib/base-classes/base-entity.mjs +16 -0
- package/websql/esm2022/lib/base-classes/base-injector.mjs +160 -0
- package/websql/esm2022/lib/base-classes/base-provider.mjs +6 -0
- package/websql/esm2022/lib/base-classes/base-repository.mjs +431 -0
- package/websql/esm2022/lib/base-classes/base-subscriber-for-entity.mjs +137 -0
- package/websql/esm2022/lib/base-classes/base-subscriber.mjs +27 -0
- package/websql/esm2022/lib/base-classes/base.mjs +26 -0
- package/websql/esm2022/lib/constants.mjs +4 -0
- package/websql/esm2022/lib/create-context.mjs +86 -0
- package/websql/esm2022/lib/decorators/classes/controller-decorator.mjs +15 -0
- package/websql/esm2022/lib/decorators/classes/entity-decorator.mjs +25 -0
- package/websql/esm2022/lib/decorators/classes/provider-decorator.mjs +15 -0
- package/websql/esm2022/lib/decorators/classes/repository-decorator.mjs +15 -0
- package/websql/esm2022/lib/decorators/classes/subscriber-decorator.mjs +41 -0
- package/websql/esm2022/lib/decorators/http/http-decorators.mjs +22 -0
- package/websql/esm2022/lib/decorators/http/http-methods-decorators.mjs +78 -0
- package/websql/esm2022/lib/decorators/http/http-params-decorators.mjs +47 -0
- package/websql/esm2022/lib/dependency-injection/di-container.mjs +32 -0
- package/websql/esm2022/lib/endpoint-context.mjs +1506 -0
- package/websql/esm2022/lib/entity-process.mjs +207 -0
- package/websql/esm2022/lib/env.mjs +6 -0
- package/websql/esm2022/lib/get-response-value.mjs +45 -0
- package/websql/esm2022/lib/helpers/class-helpers.mjs +183 -0
- package/websql/esm2022/lib/helpers/taon-helpers.mjs +120 -0
- package/websql/esm2022/lib/index.mjs +81 -0
- package/websql/esm2022/lib/inject.mjs +70 -0
- package/websql/esm2022/lib/models.mjs +70 -0
- package/websql/esm2022/lib/orm.mjs +60 -0
- package/websql/esm2022/lib/realtime/realtime-client.mjs +129 -0
- package/websql/esm2022/lib/realtime/realtime-core.mjs +54 -0
- package/websql/esm2022/lib/realtime/realtime-server.mjs +158 -0
- package/websql/esm2022/lib/realtime/realtime-strategy/index.mjs +7 -0
- package/websql/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-namespace.mjs +98 -0
- package/websql/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-wrapper.mjs +45 -0
- package/websql/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-namespace.mjs +40 -0
- package/websql/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-wrapper.mjs +25 -0
- package/websql/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc.models.mjs +4 -0
- package/websql/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc.mjs +48 -0
- package/websql/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/index.mjs +5 -0
- package/websql/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-client.mjs +50 -0
- package/websql/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-namespaces.mjs +48 -0
- package/websql/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-server.mjs +35 -0
- package/websql/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-socket.mjs +43 -0
- package/websql/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock.models.mjs +4 -0
- package/websql/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock.mjs +28 -0
- package/websql/esm2022/lib/realtime/realtime-strategy/realtime-strategy-socket-io.mjs +33 -0
- package/websql/esm2022/lib/realtime/realtime-strategy/realtime-strategy.mjs +10 -0
- package/websql/esm2022/lib/realtime/realtime-subs-manager.mjs +79 -0
- package/websql/esm2022/lib/realtime/realtime.models.mjs +4 -0
- package/websql/esm2022/lib/storage.mjs +5 -0
- package/websql/esm2022/lib/symbols.mjs +89 -0
- package/websql/esm2022/lib/ui/taon-admin-mode-configuration/models/taon-admin-mode-tabs.mjs +4 -0
- package/websql/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-control.service.mjs +32 -0
- package/websql/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.mjs +167 -0
- package/websql/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin.service.mjs +64 -0
- package/websql/esm2022/lib/validators.mjs +76 -0
- package/websql/esm2022/public-api.mjs +2 -0
- package/websql/esm2022/taon.mjs +5 -0
- package/websql/fesm2022/taon.mjs +4595 -0
- package/websql/fesm2022/taon.mjs.map +1 -0
- package/websql/index.d.ts +6 -0
- package/websql/lib/base-classes/base-abstract-entity.d.ts +7 -0
- package/websql/lib/base-classes/base-class.d.ts +9 -0
- package/websql/lib/base-classes/base-context.d.ts +17 -0
- package/websql/lib/base-classes/base-controller.d.ts +8 -0
- package/websql/lib/base-classes/base-crud-controller.d.ts +28 -0
- package/websql/lib/base-classes/base-entity.d.ts +8 -0
- package/websql/lib/base-classes/base-injector.d.ts +60 -0
- package/websql/lib/base-classes/base-provider.d.ts +4 -0
- package/websql/lib/base-classes/base-repository.d.ts +255 -0
- package/websql/lib/base-classes/base-subscriber-for-entity.d.ts +82 -0
- package/websql/lib/base-classes/base-subscriber.d.ts +5 -0
- package/websql/lib/base-classes/base.d.ts +36 -0
- package/websql/lib/constants.d.ts +2 -0
- package/websql/lib/create-context.d.ts +25 -0
- package/websql/lib/decorators/classes/controller-decorator.d.ts +13 -0
- package/websql/lib/decorators/classes/entity-decorator.d.ts +17 -0
- package/websql/lib/decorators/classes/provider-decorator.d.ts +5 -0
- package/websql/lib/decorators/classes/repository-decorator.d.ts +5 -0
- package/websql/lib/decorators/classes/subscriber-decorator.d.ts +6 -0
- package/websql/lib/decorators/http/http-decorators.d.ts +18 -0
- package/websql/lib/decorators/http/http-methods-decorators.d.ts +15 -0
- package/websql/lib/decorators/http/http-params-decorators.d.ts +6 -0
- package/websql/lib/dependency-injection/di-container.d.ts +6 -0
- package/websql/lib/endpoint-context.d.ts +117 -0
- package/websql/lib/entity-process.d.ts +40 -0
- package/websql/lib/env.d.ts +3 -0
- package/websql/lib/get-response-value.d.ts +7 -0
- package/websql/lib/helpers/class-helpers.d.ts +19 -0
- package/websql/lib/helpers/taon-helpers.d.ts +17 -0
- package/websql/lib/index.d.ts +113 -0
- package/websql/lib/inject.d.ts +9 -0
- package/websql/lib/models.d.ts +181 -0
- package/websql/lib/orm.d.ts +52 -0
- package/websql/lib/realtime/realtime-client.d.ts +32 -0
- package/websql/lib/realtime/realtime-core.d.ts +41 -0
- package/websql/lib/realtime/realtime-server.d.ts +14 -0
- package/websql/lib/realtime/realtime-strategy/index.d.ts +5 -0
- package/websql/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-namespace.d.ts +22 -0
- package/websql/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-wrapper.d.ts +17 -0
- package/websql/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-namespace.d.ts +11 -0
- package/websql/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-wrapper.d.ts +11 -0
- package/websql/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc.models.d.ts +14 -0
- package/websql/lib/realtime/realtime-strategy/realtime-strategy-ipc.d.ts +23 -0
- package/websql/lib/realtime/realtime-strategy/realtime-strategy-mock-models/index.d.ts +3 -0
- package/websql/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-client.d.ts +17 -0
- package/websql/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-namespaces.d.ts +18 -0
- package/websql/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-server.d.ts +12 -0
- package/websql/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-socket.d.ts +14 -0
- package/websql/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock.models.d.ts +12 -0
- package/websql/lib/realtime/realtime-strategy/realtime-strategy-mock.d.ts +15 -0
- package/websql/lib/realtime/realtime-strategy/realtime-strategy-socket-io.d.ts +17 -0
- package/websql/lib/realtime/realtime-strategy/realtime-strategy.d.ts +13 -0
- package/websql/lib/realtime/realtime-subs-manager.d.ts +15 -0
- package/websql/lib/realtime/realtime.models.d.ts +14 -0
- package/websql/lib/storage.d.ts +2 -0
- package/websql/lib/symbols.d.ts +73 -0
- package/websql/lib/ui/taon-admin-mode-configuration/models/taon-admin-mode-tabs.d.ts +6 -0
- package/websql/lib/ui/taon-admin-mode-configuration/taon-admin-control.service.d.ts +18 -0
- package/websql/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.d.ts +51 -0
- package/websql/lib/ui/taon-admin-mode-configuration/taon-admin.service.d.ts +25 -0
- package/websql/lib/validators.d.ts +8 -0
- package/websql/package.json +25 -0
- package/websql/public-api.d.ts +2 -0
|
@@ -0,0 +1,207 @@
|
|
|
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 (!_.isObject(this.data)) {
|
|
131
|
+
if (_.isNumber(this.data)) {
|
|
132
|
+
this.response.send(this.data.toString());
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
this.response.send(this.data);
|
|
136
|
+
}
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
if (this.advancedManipulation) {
|
|
140
|
+
const browserKey = config.folder.browser;
|
|
141
|
+
let toSend = _.isArray(this.data) ? [] : {};
|
|
142
|
+
const { include = [], exclude = [] } = { include: [], exclude: [] };
|
|
143
|
+
walk.Object(this.data, (value, lodashPath, changeVAlue, { isCircural, skipObject }) => {
|
|
144
|
+
if (isCircural) {
|
|
145
|
+
_.set(toSend, lodashPath, null);
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
const fun = getTransformFunction(ClassHelpers.getClassFnFromObject(value));
|
|
149
|
+
if (_.isFunction(fun)) {
|
|
150
|
+
_.set(toSend, `${lodashPath}.${browserKey}`, value[browserKey]);
|
|
151
|
+
const indexProp = ClassHelpers.getUniquKey(value);
|
|
152
|
+
_.set(toSend, `${lodashPath}.${indexProp}`, value[indexProp]);
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
_.set(toSend, lodashPath, value);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}, { checkCircural: true, breadthWalk: true, include });
|
|
159
|
+
if (!_.isArray(this.data)) {
|
|
160
|
+
let funParent = getTransformFunction(ClassHelpers.getClassFnFromObject(this.data));
|
|
161
|
+
if (_.isFunction(funParent)) {
|
|
162
|
+
toSend = {
|
|
163
|
+
[browserKey]: toSend[browserKey],
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
Object.keys(this.data).forEach(prop => {
|
|
167
|
+
if (prop !== browserKey) {
|
|
168
|
+
const v = this.data[prop];
|
|
169
|
+
if (!((include.length > 0 && !include.includes(prop)) ||
|
|
170
|
+
(exclude.length > 0 && exclude.includes(prop)))) {
|
|
171
|
+
if (ClassHelpers.isContextClassObject(v) &&
|
|
172
|
+
_.isFunction(getTransformFunction(ClassHelpers.getClassFnFromObject(v)))) {
|
|
173
|
+
toSend[prop] = {
|
|
174
|
+
[browserKey]: v[browserKey],
|
|
175
|
+
};
|
|
176
|
+
const indexProp = ClassHelpers.getUniquKey(v);
|
|
177
|
+
toSend[prop][indexProp] = this.data[prop][indexProp];
|
|
178
|
+
for (const key in v) {
|
|
179
|
+
if (_.isObject(v) &&
|
|
180
|
+
v.hasOwnProperty(key) &&
|
|
181
|
+
![indexProp, config.folder.browser].includes(key) &&
|
|
182
|
+
(_.isString(v[key]) ||
|
|
183
|
+
_.isNumber(v[key]) ||
|
|
184
|
+
_.isDate(v[key]) ||
|
|
185
|
+
_.isNull(v[key]) ||
|
|
186
|
+
_.isBoolean(v[key]))) {
|
|
187
|
+
toSend[prop][key] = v[key];
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
toSend[prop] = v;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
this.response.json(toSend);
|
|
199
|
+
}
|
|
200
|
+
else {
|
|
201
|
+
this.response.json(this.data);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
;
|
|
206
|
+
({}); // @--end-of-file-for-module=taon lib/entity-process.ts
|
|
207
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LXByb2Nlc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItZGlzdC90YW9uL3Byb2plY3RzL3Rhb24vc3JjL2xpYi9lbnRpdHktcHJvY2Vzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDckMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBSzNDOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxNQUFnQixFQUFFLEVBQUU7SUFDdkQsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ1osT0FBTztJQUNULENBQUM7SUFLRCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDWixPQUFPLEtBQUssQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFDRCxNQUFNLE9BQU8sR0FBRyxZQUFZLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFMUQsTUFBTSxTQUFTLEdBQUcsT0FBTztTQUN0QixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7UUFDUCxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQztZQUN2QyxPQUFPLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQztRQUM5QixDQUFDO0lBQ0gsQ0FBQyxDQUFDO1NBQ0QsTUFBTSxDQUFDLENB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LENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO29DQUM3QixDQUFDO2dDQUNILENBQUM7NEJBQ0gsQ0FBQztpQ0FBTSxDQUFDO2dDQUNOLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7NEJBQ25CLENBQUM7d0JBQ0gsQ0FBQztvQkFDSCxDQUFDO2dCQUNILENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUdELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzdCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hDLENBQUM7SUFDSCxDQUFDO0NBRUY7QUFFQSxDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLHVEQUF1RCIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5cbmltcG9ydCB7IF8gfSBmcm9tICd0bnAtY29yZS9icm93c2VyJztcbmltcG9ydCB7IFN5bWJvbHMgfSBmcm9tICcuL3N5bWJvbHMnO1xuaW1wb3J0IHsgd2FsayB9IGZyb20gJ2xvZGFzaC13YWxrLW9iamVjdC9icm93c2VyJztcbmltcG9ydCB7IGNvbmZpZyB9IGZyb20gJ3RucC1jb25maWcvYnJvd3Nlcic7XG5pbXBvcnQgeyBKU09OMTAgfSBmcm9tICdqc29uMTAvYnJvd3Nlcic7XG5pbXBvcnQgeyBDbGFzc0hlbHBlcnMgfSBmcm9tICcuL2hlbHBlcnMvY2xhc3MtaGVscGVycyc7XG5pbXBvcnQgeyBNYXBwaW5nIH0gZnJvbSAnbmcyLXJlc3QvYnJvd3Nlcic7XG5pbXBvcnQgeyBSZXNwb25zZSB9IGZyb20gJ2V4cHJlc3MnO1xuXG5cblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgY29uc3QgZ2V0VHJhbnNmb3JtRnVuY3Rpb24gPSAodGFyZ2V0OiBGdW5jdGlvbikgPT4ge1xuICBpZiAoIXRhcmdldCkge1xuICAgIHJldHVybjtcbiAgfVxuXG5cblxuXG4gIGlmICghdGFyZ2V0KSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuICBjb25zdCBjb25maWdzID0gQ2xhc3NIZWxwZXJzLmdldENvbnRyb2xsZXJDb25maWdzKHRhcmdldCk7XG5cbiAgY29uc3QgZnVuY3Rpb25zID0gY29uZmlnc1xuICAgIC5tYXAoYyA9PiB7XG4gICAgICBpZiAoXy5pc0Z1bmN0aW9uKGMuYnJvd3NlclRyYW5zZm9ybUZuKSkge1xuICAgICAgICByZXR1cm4gYy5icm93c2VyVHJhbnNmb3JtRm47XG4gICAgICB9XG4gICAgfSlcbiAgICAuZmlsdGVyKGYgPT4gXy5pc0Z1bmN0aW9uKGYpKTtcbiAgcmV0dXJuIGZ1bmN0aW9ucy5sZW5ndGggPT09IDBcbiAgICA/IHZvaWQgMFxuICAgIDogZnVuY3Rpb24gKGVudGl0eSkge1xuICAgICAgICBmb3IgKGxldCBpbmRleCA9IGZ1bmN0aW9ucy5sZW5ndGggLSAxOyBpbmRleCA+PSAwOyBpbmRleC0tKSB7XG4gICAgICAgICAgY29uc3QgdHJhbnNmb3JtRnVuID0gZnVuY3Rpb25zW2luZGV4XTtcbiAgICAgICAgICB0cmFuc2Zvcm1GdW4oZW50aXR5KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZW50aXR5O1xuICAgICAgfTtcbn07XG5cblxuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjb25zdCBzaW5nbGVUcmFuc2Zvcm0gPSAoanNvbjogYW55KSA9PiB7XG4gIGxldCBwdGFyZ2V0ID0gQ2xhc3NIZWxwZXJzLmdldENsYXNzRm5Gcm9tT2JqZWN0KGpzb24pO1xuICBsZXQgcGJyb3dzZXJUcmFuc2Zvcm1GbiA9IGdldFRyYW5zZm9ybUZ1bmN0aW9uKHB0YXJnZXQpO1xuICBpZiAocGJyb3dzZXJUcmFuc2Zvcm1Gbikge1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gcGJyb3dzZXJUcmFuc2Zvcm1Gbihqc29uKTtcbiAgICBpZiAoIV8uaXNPYmplY3QobmV3VmFsdWUpKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICBgUGxlYXNlIHJldHVybiBvYmplY3QgaW4gdHJhbnNmb3JtIGZ1bmN0aW9uIGZvciBjbGFzczogYCArXG4gICAgICAgICAgYCR7Q2xhc3NIZWxwZXJzLmdldE5hbWUoanNvbil9YCxcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGpzb24gPSBuZXdWYWx1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGpzb247XG59O1xuXG5cbmV4cG9ydCBjbGFzcyBFbnRpdHlQcm9jZXNzIHtcblxuICBzdGF0aWMgYXN5bmMgaW5pdChyZXN1bHQ6IGFueSwgcmVzcG9uc2U6IFJlc3BvbnNlKSB7XG4gICAgcmV0dXJuIGF3YWl0IG5ldyBFbnRpdHlQcm9jZXNzKHJlc3VsdCwgcmVzcG9uc2UpLnJ1bigpO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBEYXRhIHRvIHNlbmRcbiAgICovXG4gIGRhdGE6IGFueTtcblxuICAvKipcbiAgICogU2F5IHllcyB0bzpcbiAgICogLSBjaXJjdXJhbCBvYmplY3RcbiAgICogLSB0cmFuc2Zvcm0gYnJvd3NlciBmbiBpbiBkZWNvcmF0b3JcbiAgICovXG4gIHByaXZhdGUgYWR2YW5jZWRNYW5pcHVsYXRpb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBlbnRpdHlNYXBwaW5nOiBhbnk7XG4gIHByaXZhdGUgY2lyY3VyYWwgPSBbXTtcblxuXG5cbiAgY29uc3RydWN0b3IoXG4gICAgLyoqXG4gICAgICogRGF0YSBmcm9tIGJhY2tlbmRcbiAgICAgKi9cbiAgICBwcml2YXRlIHJlc3VsdDogYW55LFxuICAgIHByaXZhdGUgcmVzcG9uc2U6IFJlc3BvbnNlLFxuICApIHt9XG5cblxuXG4gIHByaXZhdGUgY2hlY2tBZHZhbmNlZE1hbml1cHVsYXRpb24oKSB7XG4gICAgaWYgKF8uaXNGdW5jdGlvbih0aGlzLnJlc3VsdCkpIHtcbiAgICAgIHRoaXMuYWR2YW5jZWRNYW5pcHVsYXRpb24gPSB0cnVlO1xuICAgICAgdGhpcy5yZXN1bHQgPSB0aGlzLnJlc3VsdCgpO1xuICAgIH1cbiAgfVxuXG5cblxuICBwdWJsaWMgYXN5bmMgcnVuKCkge1xuICAgIHRoaXMuY2hlY2tBZHZhbmNlZE1hbml1cHVsYXRpb24oKTtcbiAgICB0aGlzLmRhdGEgPSB0aGlzLnJlc3VsdDtcblxuICAgIGlmIChfLmlzT2JqZWN0KHRoaXMucmVzdWx0KSkge1xuICAgICAgaWYgKHRoaXMuYWR2YW5jZWRNYW5pcHVsYXRpb24pIHtcbiAgICAgICAgdGhpcy5hcHBsYXlUcmFuc2Zvcm1GbigpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnNldEhlYWRlcnMoKTtcbiAgICB9XG4gICAgdGhpcy5zZW5kKCk7XG4gIH1cblxuXG5cbiAgYXBwbGF5VHJhbnNmb3JtRm4oKSB7XG4gICAgaWYgKF8uaXNPYmplY3QodGhpcy5kYXRhKSAmJiAhXy5pc0FycmF5KHRoaXMuZGF0YSkpIHtcbiAgICAgIHRoaXMuZGF0YSA9IHNpbmdsZVRyYW5zZm9ybSh0aGlzLmRhdGEpO1xuICAgIH1cbiAgICBjb25zdCB7IGluY2x1ZGUgfSA9IHsgaW5jbHVkZTogW10gfTtcbiAgICB3YWxrLk9iamVjdChcbiAgICAgIHRoaXMuZGF0YSxcbiAgICAgICh2YWx1ZSwgbG9kYXNoUGF0aCwgY2hhbmdlVmFsdWUsIHsgc2tpcE9iamVjdCwgaXNDaXJjdXJhbCB9KSA9PiB7XG5cbiAgICAgICAgaWYgKCFpc0NpcmN1cmFsKSB7XG4gICAgICAgICAgaWYgKCFfLmlzQXJyYXkodmFsdWUpICYmIF8uaXNPYmplY3QodmFsdWUpKSB7XG4gICAgICAgICAgICBjaGFuZ2VWYWx1ZShzaW5nbGVUcmFuc2Zvcm0odmFsdWUpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7IGNoZWNrQ2lyY3VyYWw6IHRydWUsIGJyZWFkdGhXYWxrOiB0cnVlLCBpbmNsdWRlIH0sXG4gICAgKTtcblxuICAgIGNvbnN0IHsgY2lyY3MgfSA9IHdhbGsuT2JqZWN0KHRoaXMuZGF0YSwgdm9pZCAwLCB7XG4gICAgICBjaGVja0NpcmN1cmFsOiB0cnVlLFxuICAgICAgYnJlYWR0aFdhbGs6IHRydWUsXG4gICAgICBpbmNsdWRlLFxuICAgIH0pO1xuICAgIHRoaXMuY2lyY3VyYWwgPSBjaXJjcztcbiAgfVxuXG5cblxuICBzZXRIZWFkZXJzKCk6IHZvaWQge1xuICAgIGNvbnN0IHsgaW5jbHVkZSB9ID0geyBpbmNsdWRlOiBbXSB9O1xuXG4gICAgY29uc3QgY2xhc3NOYW1lID0gQ2xhc3NIZWxwZXJzLmdldE5hbWUodGhpcy5kYXRhKTtcbiAgICBjb25zdCBkb05vdGhpbmcgPVxuICAgICAgXy5pc05pbCh0aGlzLmRhdGEpIHx8XG4gICAgICBbXG4gICAgICAgICdPYmplY3QnLFxuICAgICAgICAnJyxcblxuICAgICAgXS5pbmNsdWRlcyhjbGFzc05hbWUpO1xuXG4gICAgaWYgKCFkb05vdGhpbmcpIHtcbiAgICAgIGNvbnN0IGNsZWFuZWQgPSBKU09OMTAuY2xlYW5lZCh0aGlzLmRhdGEsIHZvaWQgMCwge1xuICAgICAgICBicmVhZHRoV2FsazogdHJ1ZSxcbiAgICAgICAgaW5jbHVkZSxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5lbnRpdHlNYXBwaW5nID0gTWFwcGluZy5kZWNvZGUoY2xlYW5lZCwgIXRoaXMuYWR2YW5jZWRNYW5pcHVsYXRpb24pO1xuXG4gICAgICB0aGlzLnJlc3BvbnNlLnNldChcbiAgICAgICAgU3ltYm9scy5vbGQuTUFQUElOR19DT05GSUdfSEVBREVSLFxuICAgICAgICBKU09OLnN0cmluZ2lmeSh0aGlzLmVudGl0eU1hcHBpbmcpLFxuICAgICAgKTtcbiAgICAgIGlmICh0aGlzLmFkdmFuY2VkTWFuaXB1bGF0aW9uKSB7XG4gICAgICAgIHRoaXMucmVzcG9uc2Uuc2V0KFxuICAgICAgICAgIFN5bWJvbHMub2xkLkNJUkNVUkFMX09CSkVDVFNfTUFQX0JPRFksXG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkodGhpcy5jaXJjdXJhbCksXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cblxuXG4gIHNlbmQoKSB7XG4gICAgaWYgKCFfLmlzT2JqZWN0KHRoaXMuZGF0YSkpIHtcbiAgICAgIGlmIChfLmlzTnVtYmVyKHRoaXMuZGF0YSkpIHtcbiAgICAgICAgdGhpcy5yZXNwb25zZS5zZW5kKHRoaXMuZGF0YS50b1N0cmluZygpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucmVzcG9uc2Uuc2VuZCh0aGlzLmRhdGEpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5hZHZhbmNlZE1hbmlwdWxhdGlvbikge1xuICAgICAgY29uc3QgYnJvd3NlcktleSA9IGNvbmZpZy5mb2xkZXIuYnJvd3NlcjtcbiAgICAgIGxldCB0b1NlbmQgPSBfLmlzQXJyYXkodGhpcy5kYXRhKSA/IFtdIDoge307XG5cbiAgICAgIGNvbnN0IHsgaW5jbHVkZSA9IFtdLCBleGNsdWRlID0gW10gfSA9IHsgaW5jbHVkZTogW10sIGV4Y2x1ZGU6IFtdIH07XG5cbiAgICAgIHdhbGsuT2JqZWN0KFxuICAgICAgICB0aGlzLmRhdGEsXG4gICAgICAgICh2YWx1ZSwgbG9kYXNoUGF0aCwgY2hhbmdlVkFsdWUsIHsgaXNDaXJjdXJhbCwgc2tpcE9iamVjdCB9KSA9PiB7XG5cbiAgICAgICAgICBpZiAoaXNDaXJjdXJhbCkge1xuICAgICAgICAgICAgXy5zZXQodG9TZW5kLCBsb2Rhc2hQYXRoLCBudWxsKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgZnVuID0gZ2V0VHJhbnNmb3JtRnVuY3Rpb24oXG4gICAgICAgICAgICAgIENsYXNzSGVscGVycy5nZXRDbGFzc0ZuRnJvbU9iamVjdCh2YWx1ZSksXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBpZiAoXy5pc0Z1bmN0aW9uKGZ1bikpIHtcbiAgICAgICAgICAgICAgXy5zZXQodG9TZW5kLCBgJHtsb2Rhc2hQYXRofS4ke2Jyb3dzZXJLZXl9YCwgdmFsdWVbYnJvd3NlcktleV0pO1xuICAgICAgICAgICAgICBjb25zdCBpbmRleFByb3AgPSBDbGFzc0hlbHBlcnMuZ2V0VW5pcXVLZXkodmFsdWUpO1xuICAgICAgICAgICAgICBfLnNldCh0b1NlbmQsIGAke2xvZGFzaFBhdGh9LiR7aW5kZXhQcm9wfWAsIHZhbHVlW2luZGV4UHJvcF0pO1xuXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBfLnNldCh0b1NlbmQsIGxvZGFzaFBhdGgsIHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHsgY2hlY2tDaXJjdXJhbDogdHJ1ZSwgYnJlYWR0aFdhbGs6IHRydWUsIGluY2x1ZGUgfSxcbiAgICAgICk7XG5cbiAgICAgIGlmICghXy5pc0FycmF5KHRoaXMuZGF0YSkpIHtcbiAgICAgICAgbGV0IGZ1blBhcmVudCA9IGdldFRyYW5zZm9ybUZ1bmN0aW9uKFxuICAgICAgICAgIENsYXNzSGVscGVycy5nZXRDbGFzc0ZuRnJvbU9iamVjdCh0aGlzLmRhdGEpLFxuICAgICAgICApO1xuXG5cblxuICAgICAgICBpZiAoXy5pc0Z1bmN0aW9uKGZ1blBhcmVudCkpIHtcbiAgICAgICAgICB0b1NlbmQgPSB7XG4gICAgICAgICAgICBbYnJvd3NlcktleV06IHRvU2VuZFticm93c2VyS2V5XSxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuZGF0YSkuZm9yRWFjaChwcm9wID0+IHtcbiAgICAgICAgICBpZiAocHJvcCAhPT0gYnJvd3NlcktleSkge1xuICAgICAgICAgICAgY29uc3QgdiA9IHRoaXMuZGF0YVtwcm9wXTtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgIShcbiAgICAgICAgICAgICAgICAoaW5jbHVkZS5sZW5ndGggPiAwICYmICFpbmNsdWRlLmluY2x1ZGVzKHByb3ApKSB8fFxuICAgICAgICAgICAgICAgIChleGNsdWRlLmxlbmd0aCA+IDAgJiYgZXhjbHVkZS5pbmNsdWRlcyhwcm9wKSlcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBDbGFzc0hlbHBlcnMuaXNDb250ZXh0Q2xhc3NPYmplY3QodikgJiZcbiAgICAgICAgICAgICAgICBfLmlzRnVuY3Rpb24oXG4gICAgICAgICAgICAgICAgICBnZXRUcmFuc2Zvcm1GdW5jdGlvbihDbGFzc0hlbHBlcnMuZ2V0Q2xhc3NGbkZyb21PYmplY3QodikpLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdG9TZW5kW3Byb3BdID0ge1xuICAgICAgICAgICAgICAgICAgW2Jyb3dzZXJLZXldOiB2W2Jyb3dzZXJLZXldLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgY29uc3QgaW5kZXhQcm9wID0gQ2xhc3NIZWxwZXJzLmdldFVuaXF1S2V5KHYpO1xuICAgICAgICAgICAgICAgIHRvU2VuZFtwcm9wXVtpbmRleFByb3BdID0gdGhpcy5kYXRhW3Byb3BdW2luZGV4UHJvcF07XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gdikge1xuICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICBfLmlzT2JqZWN0KHYpICYmXG4gICAgICAgICAgICAgICAgICAgIHYuaGFzT3duUHJvcGVydHkoa2V5KSAmJlxuICAgICAgICAgICAgICAgICAgICAhW2luZGV4UHJvcCwgY29uZmlnLmZvbGRlci5icm93c2VyXS5pbmNsdWRlcyhrZXkpICYmXG4gICAgICAgICAgICAgICAgICAgIChfLmlzU3RyaW5nKHZba2V5XSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICBfLmlzTnVtYmVyKHZba2V5XSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICBfLmlzRGF0ZSh2W2tleV0pIHx8XG4gICAgICAgICAgICAgICAgICAgICAgXy5pc051bGwodltrZXldKSB8fFxuICAgICAgICAgICAgICAgICAgICAgIF8uaXNCb29sZWFuKHZba2V5XSkpXG4gICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgdG9TZW5kW3Byb3BdW2tleV0gPSB2W2tleV07XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRvU2VuZFtwcm9wXSA9IHY7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG5cbiAgICAgIHRoaXMucmVzcG9uc2UuanNvbih0b1NlbmQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlc3BvbnNlLmpzb24odGhpcy5kYXRhKTtcbiAgICB9XG4gIH1cblxufVxuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9dGFvbiBsaWIvZW50aXR5LXByb2Nlc3MudHMiXX0=
|
|
@@ -0,0 +1,6 @@
|
|
|
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
|
|
@@ -0,0 +1,41 @@
|
|
|
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
|
+
/* */
|
|
24
|
+
/* */
|
|
25
|
+
/* */
|
|
26
|
+
/* */
|
|
27
|
+
/* */
|
|
28
|
+
/* */
|
|
29
|
+
/* */
|
|
30
|
+
/* */
|
|
31
|
+
/* */
|
|
32
|
+
/* */
|
|
33
|
+
/* */
|
|
34
|
+
/* */
|
|
35
|
+
/* */
|
|
36
|
+
/* */
|
|
37
|
+
return (void 0);
|
|
38
|
+
};
|
|
39
|
+
;
|
|
40
|
+
({}); // @--end-of-file-for-module=taon lib/get-response-value.ts
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXJlc3BvbnNlLXZhbHVlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWRpc3QvdGFvbi9wcm9qZWN0cy90YW9uL3NyYy9saWIvZ2V0LXJlc3BvbnNlLXZhbHVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVVBLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQzlCLFFBQWlDLEVBQ2pDLE9BQXVELEVBQzNDLEVBQUU7SUFDaEIsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDSCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUNsQixDQUFDLENBQUM7QUFFRCxDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLDJEQUEyRCIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5pbXBvcnQgeyBNb2RlbHMgfSBmcm9tICcuL21vZGVscyc7XG5pbXBvcnQgeyAgIFJlc3BvbnNlIGFzIEV4cHJlc3NSZXNwb25zZSwgICBSZXF1ZXN0IGFzIEV4cHJlc3NSZXF1ZXN0LCB9IGZyb20gJ2V4cHJlc3MnOy8qICovXG4vKiAqL1xuLyogKi9cblxuaW1wb3J0IHsgVGFvbkhlbHBlcnMgfSBmcm9tICcuL2hlbHBlcnMvdGFvbi1oZWxwZXJzJztcbmltcG9ydCB7IEhlbHBlcnMgfSBmcm9tICd0bnAtY29yZS9icm93c2VyJztcblxuZXhwb3J0IGNvbnN0IGdldFJlc3BvbnNlVmFsdWUgPSA8VD4oXG4gIHJlc3BvbnNlOiBNb2RlbHMuSHR0cC5SZXNwb25zZTxUPixcbiAgb3B0aW9ucz86IHsgcmVxOiBFeHByZXNzUmVxdWVzdDsgcmVzOiBFeHByZXNzUmVzcG9uc2UgfSxcbik6IFByb21pc2U8VD4gPT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIHJldHVybiAodm9pZCAwKTtcbn07XG5cbiA7KHt9KTsgLy8gQC0tZW5kLW9mLWZpbGUtZm9yLW1vZHVsZT10YW9uIGxpYi9nZXQtcmVzcG9uc2UtdmFsdWUudHMiXX0=
|
|
@@ -0,0 +1,183 @@
|
|
|
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.getUniquKey = (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/LmNvbnN0cnVjdG9yW1N5bWJvbHMuZnVsbENsYXNzTmFtZVN0YXRpY1Byb3BlcnR5XSkgfHxcbiAgICAgIHZvaWQgMFxuICAgICk7XG4gIH07XG5cblxuXG4gIGV4cG9ydCBjb25zdCBnZXRVbmlxdUtleSA9IChjbGFzc0ZuT3JPYmplY3Q6IGFueSk6IHN0cmluZyA9PiB7XG4gICAgY29uc3QgY2xhc3NGbiA9IF8uaXNGdW5jdGlvbihjbGFzc0ZuT3JPYmplY3QpXG4gICAgICA/IGNsYXNzRm5Pck9iamVjdFxuICAgICAgOiBjbGFzc0ZuT3JPYmplY3QuY29uc3RydWN0b3I7XG4gICAgY29uc3QgY29uZmlnID0gUmVmbGVjdC5nZXRNZXRhZGF0YShcbiAgICAgIFN5bWJvbHMubWV0YWRhdGEub3B0aW9ucy5jb250cm9sbGVyLFxuICAgICAgY2xhc3NGbixcbiAgICApIGFzIFRhb25FbnRpdHlPcHRpb25zO1xuICAgIHJldHVybiBjb25maWcudW5pcXVlS2V5UHJvcDtcbiAgfTtcblxuXG5cbiAgZXhwb3J0IGNvbnN0IGlzQ29udGV4dENsYXNzT2JqZWN0ID0gKG9iajogYW55KTogYm9vbGVhbiA9PiB7XG4gICAgaWYgKFxuICAgICAgIV8uaXNPYmplY3Qob2JqKSB8fFxuICAgICAgXy5pc0FycmF5KG9iaikgfHxcbiAgICAgIF8uaXNSZWdFeHAob2JqKSB8fFxuICAgICAgXy5pc0J1ZmZlcihvYmopIHx8XG4gICAgICBfLmlzQXJyYXlCdWZmZXIob2JqKVxuICAgICkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoXy5pc0RhdGUob2JqKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNvbnN0IGNsYXNzTmFtZSA9IGdldE5hbWUob2JqKTtcbiAgICByZXR1cm4gXy5pc1N0cmluZyhjbGFzc05hbWUpICYmIGNsYXNzTmFtZSAhPT0gJ09iamVjdCc7XG4gIH07XG5cblxuXG5cbiAgZXhwb3J0IGNvbnN0IHNldE5hbWUgPSAodGFyZ2V0OiBGdW5jdGlvbiwgY2xhc3NOYW1lOiBzdHJpbmcpOiB2b2lkID0+IHtcblxuICAgIFZhbGlkYXRvcnMuY2xhc3NOYW1lVmxpZGF0aW9uKGNsYXNzTmFtZSwgdGFyZ2V0KTtcbiAgICB0YXJnZXRbU3ltYm9scy5jbGFzc05hbWVTdGF0aWNQcm9wZXJ0eV0gPSBjbGFzc05hbWU7XG4gIH07XG5cblxuXG4gIGV4cG9ydCBjb25zdCBoYXNQYXJlbnRDbGFzc1dpdGhOYW1lID0gKFxuICAgIHRhcmdldDogRnVuY3Rpb24sXG4gICAgY2xhc3NOYW1lOiBzdHJpbmcsXG4gICAgdGFyZ2V0cyA9IFtdLFxuICApOiBib29sZWFuID0+IHtcbiAgICBpZiAoIXRhcmdldCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB0YXJnZXRzLnB1c2godGFyZ2V0KTtcbiAgICBsZXQgdGFyZ2V0UHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YodGFyZ2V0KTtcblxuICAgIGlmIChcbiAgICAgIF8uaXNGdW5jdGlvbih0YXJnZXRQcm90bykgJiZcbiAgICAgIENsYXNzSGVscGVycy5nZXROYW1lKHRhcmdldFByb3RvKSA9PT0gY2xhc3NOYW1lXG4gICAgKSB7XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gaGFzUGFyZW50Q2xhc3NXaXRoTmFtZSh0YXJnZXRQcm90bywgY2xhc3NOYW1lLCB0YXJnZXRzKTtcbiAgfTtcblxuXG5cbiAgZXhwb3J0IGNvbnN0IGdldENvbnRyb2xsZXJDb25maWcgPSAoXG4gICAgdGFyZ2V0OiBGdW5jdGlvbixcbiAgKTogTW9kZWxzLkNvbnRyb2xsZXJDb25maWcgfCB1bmRlZmluZWQgPT4ge1xuICAgIGNvbnN0IGNsYXNzTWV0YWRhdGFPcHRpb25zOiBUYW9uQ29udHJvbGxlck9wdGlvbnMgPSBSZWZsZWN0LmdldE1ldGFkYXRhKFxuICAgICAgU3ltYm9scy5tZXRhZGF0YS5vcHRpb25zLmNvbnRyb2xsZXIsXG4gICAgICB0YXJnZXQsXG4gICAgKTtcbiAgICBjb25zdCBjbGFzc01ldGFkYXRhOiBNb2RlbHMuQ29udHJvbGxlckNvbmZpZyA9IF8ubWVyZ2UoXG4gICAgICBuZXcgTW9kZWxzLkNvbnRyb2xsZXJDb25maWcoKSxcbiAgICAgIGNsYXNzTWV0YWRhdGFPcHRpb25zLFxuICAgICk7XG5cblxuICAgIGNvbnN0IG1ldGhvZE5hbWVzID0gQ2xhc3NIZWxwZXJzLmdldE1ldGhvZHNOYW1lcyh0YXJnZXQpOyAvLyAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0LnByb3RvdHlwZSk7XG5cbiAgICBmb3IgKGNvbnN0IG1ldGhvZE5hbWUgb2YgbWV0aG9kTmFtZXMpIHtcbiAgICAgIGNvbnN0IG1ldGhvZE1ldGFkYXRhOiBNb2RlbHMuTWV0aG9kQ29uZmlnID0gUmVmbGVjdC5nZXRNZXRhZGF0YShcbiAgICAgICAgU3ltYm9scy5tZXRhZGF0YS5vcHRpb25zLmNvbnRyb2xsZXJNZXRob2QsXG4gICAgICAgIHRhcmdldCxcbiAgICAgICAgbWV0aG9kTmFtZSxcbiAgICAgICk7XG5cbiAgICAgIGlmIChtZXRob2RNZXRhZGF0YSkge1xuICAgICAgICBjbGFzc01ldGFkYXRhLm1ldGhvZHNbbWV0aG9kTmFtZV0gPSBtZXRob2RNZXRhZGF0YTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNsYXNzTWV0YWRhdGE7XG4gIH07XG5cblxuXG5cblxuICBjb25zdCBub3RBbGxvd2VkQXNNZXRob2ROYW1lID0gW1xuICAgICdsZW5ndGgnLFxuICAgICduYW1lJyxcbiAgICAnYXJndW1lbnRzJyxcbiAgICAnY2FsbGVyJyxcbiAgICAnY29uc3RydWN0b3InLFxuICAgICdhcHBseScsXG4gICAgJ2JpbmQnLFxuICAgICdjYWxsJyxcbiAgICAndG9TdHJpbmcnLFxuICAgICdfX2RlZmluZUdldHRlcl9fJyxcbiAgICAnX19kZWZpbmVTZXR0ZXJfXycsXG4gICAgJ2hhc093blByb3BlcnR5JyxcbiAgICAnX19sb29rdXBHZXR0ZXJfXycsXG4gICAgJ19fbG9va3VwU2V0dGVyX18nLFxuICAgICdpc1Byb3RvdHlwZU9mJyxcbiAgICAncHJvcGVydHlJc0VudW1lcmFibGUnLFxuICAgICd2YWx1ZU9mJyxcbiAgICAnX19wcm90b19fJyxcbiAgICAndG9Mb2NhbGVTdHJpbmcnLFxuICBdO1xuXG5cbiAgZXhwb3J0IGNvbnN0IGdldE1ldGhvZHNOYW1lcyA9IChcbiAgICBjbGFzc09yQ2xhc3NJbnN0YW5jZTogYW55LFxuICAgIGFsbE1ldGhvZHNOYW1lcyA9IFtdLFxuICApOiBzdHJpbmdbXSA9PiB7XG4gICAgaWYgKCFjbGFzc09yQ2xhc3NJbnN0YW5jZSkge1xuICAgICAgcmV0dXJuIGFsbE1ldGhvZHNOYW1lcztcbiAgICB9XG5cbiAgICBjb25zdCBpc0NsYXNzRnVuY3Rpb24gPSBfLmlzRnVuY3Rpb24oY2xhc3NPckNsYXNzSW5zdGFuY2UpO1xuICAgIGNvbnN0IGNsYXNzRnVuID0gaXNDbGFzc0Z1bmN0aW9uXG4gICAgICA/IGNsYXNzT3JDbGFzc0luc3RhbmNlXG4gICAgICA6IE9iamVjdC5nZXRQcm90b3R5cGVPZihjbGFzc09yQ2xhc3NJbnN0YW5jZSk7XG4gICAgY29uc3Qgb2JqZWN0VG9DaGVjayA9IGlzQ2xhc3NGdW5jdGlvblxuICAgICAgPyAoY2xhc3NPckNsYXNzSW5zdGFuY2UgYXMgRnVuY3Rpb24pPy5wcm90b3R5cGVcbiAgICAgIDogY2xhc3NPckNsYXNzSW5zdGFuY2U7XG4gICAgY29uc3QgcHJvdG90eXBlT2JqID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iamVjdFRvQ2hlY2sgfHwge30pO1xuXG4gICAgY29uc3QgcHJvcGVydGllcyA9IF8udW5pcShbXG4gICAgICAuLi5PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3RUb0NoZWNrIHx8IHt9KSxcbiAgICAgIC4uLk9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHByb3RvdHlwZU9iaiB8fCB7fSksXG4gICAgICAuLi5PYmplY3Qua2V5cyhvYmplY3RUb0NoZWNrIHx8IHt9KSxcbiAgICAgIC4uLk9iamVjdC5rZXlzKHByb3RvdHlwZU9iaiB8fCB7fSksXG4gICAgXSkuZmlsdGVyKGYgPT4gISFmICYmICFub3RBbGxvd2VkQXNNZXRob2ROYW1lLmluY2x1ZGVzKGYpKTtcblxuICAgIHByb3BlcnRpZXNcbiAgICAgIC5maWx0ZXIobWV0aG9kTmFtZSA9PiB0eXBlb2Ygb2JqZWN0VG9DaGVja1ttZXRob2ROYW1lXSA9PT0gJ2Z1bmN0aW9uJylcbiAgICAgIC5mb3JFYWNoKHAgPT4gYWxsTWV0aG9kc05hbWVzLnB1c2gocCkpO1xuXG4gICAgaWYgKFxuICAgICAgIWNsYXNzRnVuIHx8XG4gICAgICAhY2xhc3NGdW4uY29uc3RydWN0b3IgfHxcbiAgICAgIGNsYXNzRnVuPy5jb25zdHJ1Y3Rvcj8ubmFtZSA9PT0gJ09iamVjdCdcbiAgICApIHtcbiAgICAgIHJldHVybiBhbGxNZXRob2RzTmFtZXM7XG4gICAgfVxuICAgIHJldHVybiBnZXRNZXRob2RzTmFtZXMoT2JqZWN0LmdldFByb3RvdHlwZU9mKGNsYXNzRnVuKSwgYWxsTWV0aG9kc05hbWVzKTtcbiAgfTtcblxuXG5cbiAgZXhwb3J0IGNvbnN0IGdldENvbnRyb2xsZXJDb25maWdzID0gKFxuICAgIHRhcmdldDogRnVuY3Rpb24sXG4gICAgY29uZmlnczogTW9kZWxzLkNvbnRyb2xsZXJDb25maWdbXSA9IFtdLFxuICAgIGNhbGxlclRhcmdldD86IEZ1bmN0aW9uLFxuICApOiBNb2RlbHMuUnVudGltZUNvbnRyb2xsZXJDb25maWdbXSA9PiB7XG4gICAgaWYgKCFfLmlzRnVuY3Rpb24odGFyZ2V0KSkge1xuICAgICAgdGhyb3cgYFt0eXBlc2NyaXB0LWNsYXNzLWhlbHBlcl1bZ2V0Q2xhc3NDb25maWddIENhbm5vdCBnZXQgY2xhc3MgY29uZmlnIGZyb206ICR7dGFyZ2V0fWA7XG4gICAgfVxuXG4gICAgbGV0IGNvbmZpZzogTW9kZWxzLlJ1bnRpbWVDb250cm9sbGVyQ29uZmlnO1xuICAgIGNvbnN0IHBhcmVudENsYXNzID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHRhcmdldCk7XG4gICAgY29uc3QgcGFyZW50TmFtZSA9IHBhcmVudENsYXNzID8gQ2xhc3NIZWxwZXJzLmdldE5hbWUocGFyZW50Q2xhc3MpIDogdm9pZCAwO1xuICAgIGNvbnN0IGlzVmFsaWRQYXJlbnQgPSBfLmlzRnVuY3Rpb24ocGFyZW50Q2xhc3MpICYmIHBhcmVudE5hbWUgIT09ICcnO1xuXG4gICAgY29uZmlnID0gZ2V0Q29udHJvbGxlckNvbmZpZyh0YXJnZXQpO1xuXG4gICAgY29uZmlncy5wdXNoKGNvbmZpZyk7XG5cbiAgICByZXR1cm4gaXNWYWxpZFBhcmVudFxuICAgICAgPyBnZXRDb250cm9sbGVyQ29uZmlncyhwYXJlbnRDbGFzcywgY29uZmlncywgdGFyZ2V0KVxuICAgICAgOiBjb25maWdzO1xuICB9O1xuXG5cblxuICBleHBvcnQgY29uc3QgZ2V0Q2FsY3VsYXRlZFBhdGhGb3IgPSAodGFyZ2V0OiBGdW5jdGlvbikgPT4ge1xuICAgIGNvbnN0IGNvbmZpZ3MgPSBnZXRDb250cm9sbGVyQ29uZmlncyh0YXJnZXQpO1xuXG4gICAgY29uc3QgcGFyZW50c2NhbGN1bGF0ZWRQYXRoID0gXy5zbGljZShjb25maWdzLCAxKVxuICAgICAgLnJldmVyc2UoKVxuICAgICAgLm1hcChiYyA9PiB7XG4gICAgICAgIGlmIChUYW9uSGVscGVycy5pc0dvb2RQYXRoKGJjLnBhdGgpKSB7XG4gICAgICAgICAgcmV0dXJuIGJjLnBhdGg7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGJjLmNsYXNzTmFtZTtcbiAgICAgIH0pXG4gICAgICAuam9pbignLycpO1xuXG4gICAgcmV0dXJuIGAvJHtwYXJlbnRzY2FsY3VsYXRlZFBhdGh9LyR7Q2xhc3NIZWxwZXJzLmdldE5hbWUodGFyZ2V0KX1gO1xuICB9O1xuXG59XG5cbiA7KHt9KTsgLy8gQC0tZW5kLW9mLWZpbGUtZm9yLW1vZHVsZT10YW9uIGxpYi9oZWxwZXJzL2NsYXNzLWhlbHBlcnMudHMiXX0=
|
|
@@ -0,0 +1,120 @@
|
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFvbi1oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWRpc3QvdGFvbi9wcm9qZWN0cy90YW9uL3NyYy9saWIvaGVscGVycy90YW9uLWhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3JDLE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBRS9CLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxNQUFNLEtBQVcsV0FBVyxDQWdLM0I7QUFoS0QsV0FBaUIsV0FBVztJQUViLG9CQUFRLEdBQUcsQ0FBQyxDQUFTLEVBQUUsV0FBbUIsRUFBRSxFQUFFO1FBQ3pELE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLEVBQUU7WUFDOUIsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ2hCLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNyQixDQUFDO1lBQ0QsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDZCxDQUFDLENBQUM7SUFJVyxzQkFBVSxHQUFHLENBQUMsQ0FBUyxFQUFFLEVBQUU7UUFDdEMsT0FBTyxDQUFDLElBQUksT0FBTyxDQUFDLEtBQUssUUFBUSxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDdkQsQ0FBQyxDQUFDO0lBSVcsNkJBQWlCLEdBQUcsS0FBSyxDQUFDLEVBQUU7UUFDdkMsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdEIsSUFBSSxDQUFD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RUEsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyw2REFBNkQiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuaW1wb3J0IHsgXyB9IGZyb20gJ3RucC1jb3JlL2Jyb3dzZXInO1xuaW1wb3J0ICogYXMgSlNPTjUgZnJvbSAnanNvbjUnO1xuaW1wb3J0IHsgTW9kZWxzIH0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7IENsYXNzSGVscGVycyB9IGZyb20gJy4vY2xhc3MtaGVscGVycyc7XG5cbmV4cG9ydCBuYW1lc3BhY2UgVGFvbkhlbHBlcnMge1xuXG4gIGV4cG9ydCBjb25zdCBmaWxsVXBUbyA9IChzOiBzdHJpbmcsIG5DaGFyYWN0ZXJzOiBudW1iZXIpID0+IHtcbiAgICByZXR1cm4gXy50aW1lcyhuQ2hhcmFjdGVycywgbiA9PiB7XG4gICAgICBpZiAocy5jaGFyQXQobikpIHtcbiAgICAgICAgcmV0dXJuIHMuY2hhckF0KG4pO1xuICAgICAgfVxuICAgICAgcmV0dXJuICcgJztcbiAgICB9KS5qb2luKCcnKTtcbiAgfTtcblxuXG5cbiAgZXhwb3J0IGNvbnN0IGlzR29vZFBhdGggPSAocDogc3RyaW5nKSA9PiB7XG4gICAgcmV0dXJuIHAgJiYgdHlwZW9mIHAgPT09ICdzdHJpbmcnICYmIHAudHJpbSgpICE9PSAnJztcbiAgfTtcblxuXG5cbiAgZXhwb3J0IGNvbnN0IHRyeVRyYW5zZm9ybVBhcmFtID0gcGFyYW0gPT4ge1xuICAgIGlmICh0eXBlb2YgcGFyYW0gPT09ICdzdHJpbmcnKSB7XG4gICAgICBsZXQgbiA9IE51bWJlcihwYXJhbSk7XG4gICAgICBpZiAoIWlzTmFOKG4pKSByZXR1cm4gbjtcbiAgICAgIGNvbnN0IGJvb2wgPSBwYXJhbS50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICAgIGlmIChib29sID09PSAndHJ1ZScpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoYm9vbCA9PT0gJ2ZhbHNlJykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB0ID0gSlNPTjUucGFyc2UocGFyYW0pO1xuICAgICAgICByZXR1cm4gdDtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIHBhcmFtO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcGFyYW07XG4gIH07XG5cblxuXG4gIGV4cG9ydCBjb25zdCBnZXRFeHByZXNzUGF0aCA9IChcbiAgICBjOiBNb2RlbHMuUnVudGltZUNvbnRyb2xsZXJDb25maWcsXG4gICAgcGF0aE9yQ2xhc3NDb25maWc6IE1vZGVscy5NZXRob2RDb25maWcsXG4gICkgPT4ge1xuICAgIGlmICh0eXBlb2YgcGF0aE9yQ2xhc3NDb25maWcgPT09ICdzdHJpbmcnKVxuICAgICAgcmV0dXJuIGAke2MuY2FsY3VsYXRlZFBhdGh9JHtwYXRoT3JDbGFzc0NvbmZpZ31gLnJlcGxhY2UoL1xcLyQvLCAnJyk7XG4gICAgcmV0dXJuIGAke2MuY2FsY3VsYXRlZFBhdGh9JHtwYXRoT3JDbGFzc0NvbmZpZy5wYXRofWAucmVwbGFjZSgvXFwvJC8sICcnKTtcbiAgfTtcblxuXG5cbiAgZXhwb3J0IGNvbnN0IGRlZmF1bHRUeXBlID0gdmFsdWUgPT4ge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSByZXR1cm4gJyc7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSByZXR1cm4ge307XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHJldHVybiB7fTtcbiAgfTtcblxuXG5cbiAgZXhwb3J0IGNvbnN0IHBhcnNlSlNPTndpdGhTdHJpbmdKU09OcyA9IChcbiAgICBvYmplY3Q6IE9iamVjdCxcbiAgICB3YXJpbmcgPSBmYWxzZSxcbiAgKTogT2JqZWN0ID0+IHtcblxuICAgIGlmICghXy5pc09iamVjdChvYmplY3QpKSB7XG4gICAgICBpZiAod2FyaW5nKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgYFxuICAgICAgICBwYXJzZUpTT053aXRoU3RyaW5nSlNPTnMoLi4uKVxuICAgICAgICBQYXJhbWV0ZXIgc2hvdWxkIGJlIGEgb2JqZWN0LCBidXQgaXMgJHt0eXBlb2Ygb2JqZWN0fVxuICAgICAgICBgLFxuICAgICAgICAgIG9iamVjdCxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICB9XG5cbiAgICBsZXQgcmVzID0gXy5jbG9uZURlZXAob2JqZWN0KTtcblxuICAgIE9iamVjdC5rZXlzKHJlcykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgbGV0IGlzSnNvbiA9IGZhbHNlO1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcG9zc2libGVKU09OID0gSlNPTi5wYXJzZShyZXNba2V5XSk7XG4gICAgICAgIHJlc1trZXldID0gcG9zc2libGVKU09OO1xuICAgICAgICBpc0pzb24gPSB0cnVlO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBpc0pzb24gPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGlzSnNvbikge1xuICAgICAgICByZXNba2V5XSA9IHBhcnNlSlNPTndpdGhTdHJpbmdKU09OcyhyZXNba2V5XSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuXG5cbiAgZXhwb3J0IGNvbnN0IGlzUGxhaW5GaWxlT3JGb2xkZXIgPSBmaWxlUGF0aCA9PiB7XG4gICAgcmV0dXJuIC9eKFthLXpBLVpdfFxcLXxcXF98XFxAfFxcI3xcXCR8XFwhfFxcXnxcXCZ8XFwqfFxcKHxcXCkpKyQvLnRlc3QoZmlsZVBhdGgpO1xuICB9O1xuXG5cblxuICBleHBvcnQgY29uc3QgaXBjS2V5TmFtZVJlc3BvbnNlID0gKFxuICAgIHRhcmdldDogRnVuY3Rpb24sXG4gICAgbWV0aG9kQ29uZmlnOiBNb2RlbHMuTWV0aG9kQ29uZmlnLFxuICAgIGV4cHJlc3NQYXRoOiBzdHJpbmcsXG4gICkgPT4ge1xuICAgIHJldHVybiBbXG4gICAgICAncmVzcG9uc2UnLFxuICAgICAgQ2xhc3NIZWxwZXJzLmdldE5hbWUodGFyZ2V0KSxcbiAgICAgIG1ldGhvZENvbmZpZy5tZXRob2ROYW1lLFxuICAgICAgbWV0aG9kQ29uZmlnLnR5cGUsXG4gICAgICBleHByZXNzUGF0aCxcbiAgICBdLmpvaW4oJy0tJyk7XG4gIH07XG5cblxuXG4gIGV4cG9ydCBjb25zdCBpcGNLZXlOYW1lUmVxdWVzdCA9IChcbiAgICB0YXJnZXQ6IEZ1bmN0aW9uLFxuICAgIG1ldGhvZENvbmZpZzogTW9kZWxzLk1ldGhvZENvbmZpZyxcbiAgICBleHByZXNzUGF0aDogc3RyaW5nLFxuICApID0+IHtcbiAgICByZXR1cm4gW1xuICAgICAgJ3JlcXVlc3QnLFxuICAgICAgQ2xhc3NIZWxwZXJzLmdldE5hbWUodGFyZ2V0KSxcbiAgICAgIG1ldGhvZENvbmZpZy5tZXRob2ROYW1lLFxuICAgICAgbWV0aG9kQ29uZmlnLnR5cGUsXG4gICAgICBleHByZXNzUGF0aCxcbiAgICBdLmpvaW4oJy0tJyk7XG4gIH07XG5cblxuXG4gIGV4cG9ydCBjb25zdCB3ZWJzcWxNb2NrcyA9IGhlYWRlcnMgPT4ge1xuICAgIGNvbnN0IHJlc3BvbnNlOiBFeHByZXNzLlJlc3BvbnNlID0ge1xuICAgICAgc3RhdHVzKHN0YXR1czogYW55KSB7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBzZW5kKHNlbmQ6IGFueSkge1xuXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgIH0sXG4gICAgICBzZXRIZWFkZXIoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcblxuICAgICAgICBoZWFkZXJzW2tleV0gPSB2YWx1ZTtcbiAgICAgIH0sXG4gICAgfTtcbiAgICBjb25zdCByZXF1ZXN0OiBFeHByZXNzLlJlcXVlc3QgPSB7fTtcbiAgICByZXR1cm4geyByZXF1ZXN0LCByZXNwb25zZSB9O1xuICB9O1xuXG59XG5cbiA7KHt9KTsgLy8gQC0tZW5kLW9mLWZpbGUtZm9yLW1vZHVsZT10YW9uIGxpYi9oZWxwZXJzL3Rhb24taGVscGVycy50cyJdfQ==
|