taon 18.0.19 → 18.0.21
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 +114 -118
- package/assets/shared/logo-header-admin-mode.png +0 -0
- package/assets/shared/shared_folder_info.txt +1 -1
- package/bin/start.js +279 -279
- package/bin/taon +6 -6
- package/bin/taon-debug +5 -5
- package/bin/taon-debug-brk +5 -5
- package/browser/README.md +24 -24
- package/browser/esm2022/lib/base-classes/base-abstract-entity.mjs +1 -1
- package/browser/esm2022/lib/base-classes/base-class.mjs +2 -2
- package/browser/esm2022/lib/base-classes/base-controller.mjs +3 -2
- package/browser/esm2022/lib/base-classes/base-crud-controller.mjs +1 -1
- package/browser/esm2022/lib/base-classes/base-migration.mjs +23 -0
- package/browser/esm2022/lib/base-classes/base-subscriber-for-entity.mjs +20 -20
- package/browser/esm2022/lib/base-classes/base.mjs +5 -3
- package/browser/esm2022/lib/context-db-migrations.mjs +410 -0
- package/browser/esm2022/lib/create-context.mjs +22 -8
- package/browser/esm2022/lib/decorators/classes/controller-decorator.mjs +4 -1
- package/browser/esm2022/lib/decorators/classes/entity-decorator.mjs +4 -1
- package/browser/esm2022/lib/decorators/classes/migration-decorator.mjs +18 -0
- package/browser/esm2022/lib/decorators/classes/provider-decorator.mjs +4 -1
- package/browser/esm2022/lib/decorators/classes/repository-decorator.mjs +4 -1
- package/browser/esm2022/lib/decorators/classes/subscriber-decorator.mjs +5 -2
- package/browser/esm2022/lib/decorators/http/http-methods-decorators.mjs +1 -1
- package/browser/esm2022/lib/endpoint-context.mjs +105 -59
- package/browser/esm2022/lib/entity-process.mjs +1 -10
- package/browser/esm2022/lib/get-response-value.mjs +1 -15
- package/browser/esm2022/lib/index.mjs +4 -1
- package/browser/esm2022/lib/inject.mjs +1 -1
- package/browser/esm2022/lib/models.mjs +30 -1
- package/browser/esm2022/lib/symbols.mjs +2 -1
- package/browser/esm2022/lib/ui/taon-admin-mode-configuration/index.mjs +1 -3
- package/browser/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.mjs +55 -37
- package/browser/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin.service.mjs +17 -21
- package/browser/esm2022/lib/ui/taon-notifications/taon-notifications.module.mjs +1 -1
- package/browser/esm2022/lib/ui/taon-progress-bar/taon-progress-bar.component.mjs +1 -1
- package/browser/esm2022/lib/ui/taon-table/taon-table.component.mjs +1 -2
- package/browser/fesm2022/taon.mjs +701 -449
- package/browser/fesm2022/taon.mjs.map +1 -1
- package/browser/lib/base-classes/base-abstract-entity.d.ts +2 -1
- package/browser/lib/base-classes/base-class.d.ts +1 -1
- package/browser/lib/base-classes/base-context.d.ts +3 -0
- package/browser/lib/base-classes/base-controller.d.ts +2 -1
- package/browser/lib/base-classes/base-crud-controller.d.ts +1 -1
- package/browser/lib/base-classes/base-migration.d.ts +12 -0
- package/browser/lib/base-classes/base.d.ts +8 -2
- package/browser/lib/context-db-migrations.d.ts +17 -0
- package/browser/lib/create-context.d.ts +7 -4
- package/browser/lib/decorators/classes/controller-decorator.d.ts +3 -0
- package/browser/lib/decorators/classes/entity-decorator.d.ts +3 -0
- package/browser/lib/decorators/classes/migration-decorator.d.ts +8 -0
- package/browser/lib/decorators/classes/provider-decorator.d.ts +3 -0
- package/browser/lib/decorators/classes/repository-decorator.d.ts +3 -0
- package/browser/lib/decorators/classes/subscriber-decorator.d.ts +3 -0
- package/browser/lib/decorators/http/http-methods-decorators.d.ts +9 -0
- package/browser/lib/endpoint-context.d.ts +14 -7
- package/browser/lib/index.d.ts +14 -1
- package/browser/lib/models.d.ts +45 -22
- package/browser/lib/symbols.d.ts +1 -0
- package/browser/lib/ui/taon-admin-mode-configuration/index.d.ts +1 -3
- package/browser/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.d.ts +5 -8
- package/browser/lib/ui/taon-admin-mode-configuration/taon-admin.service.d.ts +8 -8
- package/client/README.md +24 -24
- package/client/esm2022/lib/base-classes/base-abstract-entity.mjs +1 -1
- package/client/esm2022/lib/base-classes/base-class.mjs +2 -2
- package/client/esm2022/lib/base-classes/base-controller.mjs +3 -2
- package/client/esm2022/lib/base-classes/base-crud-controller.mjs +1 -1
- package/client/esm2022/lib/base-classes/base-migration.mjs +23 -0
- package/client/esm2022/lib/base-classes/base-subscriber-for-entity.mjs +20 -20
- package/client/esm2022/lib/base-classes/base.mjs +5 -3
- package/client/esm2022/lib/context-db-migrations.mjs +410 -0
- package/client/esm2022/lib/create-context.mjs +22 -8
- package/client/esm2022/lib/decorators/classes/controller-decorator.mjs +4 -1
- package/client/esm2022/lib/decorators/classes/entity-decorator.mjs +4 -1
- package/client/esm2022/lib/decorators/classes/migration-decorator.mjs +18 -0
- package/client/esm2022/lib/decorators/classes/provider-decorator.mjs +4 -1
- package/client/esm2022/lib/decorators/classes/repository-decorator.mjs +4 -1
- package/client/esm2022/lib/decorators/classes/subscriber-decorator.mjs +5 -2
- package/client/esm2022/lib/decorators/http/http-methods-decorators.mjs +1 -1
- package/client/esm2022/lib/endpoint-context.mjs +105 -59
- package/client/esm2022/lib/entity-process.mjs +1 -10
- package/client/esm2022/lib/get-response-value.mjs +1 -15
- package/client/esm2022/lib/index.mjs +4 -1
- package/client/esm2022/lib/inject.mjs +1 -1
- package/client/esm2022/lib/models.mjs +30 -1
- package/client/esm2022/lib/symbols.mjs +2 -1
- package/client/esm2022/lib/ui/taon-admin-mode-configuration/index.mjs +1 -3
- package/client/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.mjs +55 -37
- package/client/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin.service.mjs +17 -21
- package/client/esm2022/lib/ui/taon-notifications/taon-notifications.module.mjs +1 -1
- package/client/esm2022/lib/ui/taon-progress-bar/taon-progress-bar.component.mjs +1 -1
- package/client/esm2022/lib/ui/taon-table/taon-table.component.mjs +1 -2
- package/client/fesm2022/taon.mjs +701 -449
- package/client/fesm2022/taon.mjs.map +1 -1
- package/client/lib/base-classes/base-abstract-entity.d.ts +2 -1
- package/client/lib/base-classes/base-class.d.ts +1 -1
- package/client/lib/base-classes/base-context.d.ts +3 -0
- package/client/lib/base-classes/base-controller.d.ts +2 -1
- package/client/lib/base-classes/base-crud-controller.d.ts +1 -1
- package/client/lib/base-classes/base-migration.d.ts +12 -0
- package/client/lib/base-classes/base.d.ts +8 -2
- package/client/lib/context-db-migrations.d.ts +17 -0
- package/client/lib/create-context.d.ts +7 -4
- package/client/lib/decorators/classes/controller-decorator.d.ts +3 -0
- package/client/lib/decorators/classes/entity-decorator.d.ts +3 -0
- package/client/lib/decorators/classes/migration-decorator.d.ts +8 -0
- package/client/lib/decorators/classes/provider-decorator.d.ts +3 -0
- package/client/lib/decorators/classes/repository-decorator.d.ts +3 -0
- package/client/lib/decorators/classes/subscriber-decorator.d.ts +3 -0
- package/client/lib/decorators/http/http-methods-decorators.d.ts +9 -0
- package/client/lib/endpoint-context.d.ts +14 -7
- package/client/lib/index.d.ts +14 -1
- package/client/lib/models.d.ts +45 -22
- package/client/lib/symbols.d.ts +1 -0
- package/client/lib/ui/taon-admin-mode-configuration/index.d.ts +1 -3
- package/client/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.d.ts +5 -8
- package/client/lib/ui/taon-admin-mode-configuration/taon-admin.service.d.ts +8 -8
- package/lib/base-classes/base-abstract-entity.d.ts +1 -0
- package/lib/base-classes/base-class.d.ts +1 -1
- package/lib/base-classes/base-class.js +1 -1
- package/lib/base-classes/base-context.d.ts +3 -0
- package/lib/base-classes/base-controller.d.ts +2 -1
- package/lib/base-classes/base-controller.js +2 -1
- package/lib/base-classes/base-controller.js.map +1 -1
- package/lib/base-classes/base-crud-controller.d.ts +1 -1
- package/lib/base-classes/base-migration.d.ts +11 -0
- package/lib/base-classes/base-migration.js +41 -0
- package/lib/base-classes/base-migration.js.map +1 -0
- package/lib/base-classes/base-repository.js +4 -4
- package/lib/base-classes/base-repository.js.map +1 -1
- package/lib/base-classes/base-subscriber-for-entity.js +19 -19
- package/lib/base-classes/base-subscriber-for-entity.js.map +1 -1
- package/lib/base-classes/base.d.ts +8 -2
- package/lib/base-classes/base.js +4 -2
- package/lib/base-classes/base.js.map +1 -1
- package/lib/context-db-migrations.d.ts +16 -0
- package/lib/context-db-migrations.js +585 -0
- package/lib/context-db-migrations.js.map +1 -0
- package/lib/create-context.d.ts +7 -4
- package/lib/create-context.js +34 -12
- package/lib/create-context.js.map +1 -1
- package/lib/decorators/classes/controller-decorator.d.ts +3 -0
- package/lib/decorators/classes/controller-decorator.js +3 -0
- package/lib/decorators/classes/controller-decorator.js.map +1 -1
- package/lib/decorators/classes/entity-decorator.d.ts +3 -0
- package/lib/decorators/classes/entity-decorator.js +3 -0
- package/lib/decorators/classes/entity-decorator.js.map +1 -1
- package/lib/decorators/classes/migration-decorator.d.ts +7 -0
- package/lib/decorators/classes/migration-decorator.js +27 -0
- package/lib/decorators/classes/migration-decorator.js.map +1 -0
- package/lib/decorators/classes/provider-decorator.d.ts +3 -0
- package/lib/decorators/classes/provider-decorator.js +3 -0
- package/lib/decorators/classes/provider-decorator.js.map +1 -1
- package/lib/decorators/classes/repository-decorator.d.ts +3 -0
- package/lib/decorators/classes/repository-decorator.js +3 -0
- package/lib/decorators/classes/repository-decorator.js.map +1 -1
- package/lib/decorators/classes/subscriber-decorator.d.ts +3 -0
- package/lib/decorators/classes/subscriber-decorator.js +4 -1
- package/lib/decorators/classes/subscriber-decorator.js.map +1 -1
- package/lib/decorators/http/http-methods-decorators.d.ts +9 -0
- package/lib/decorators/http/http-methods-decorators.js.map +1 -1
- package/lib/endpoint-context.d.ts +14 -7
- package/lib/endpoint-context.js +265 -220
- package/lib/endpoint-context.js.map +1 -1
- package/lib/entity-process.js +0 -9
- package/lib/entity-process.js.map +1 -1
- package/lib/get-response-value.js +14 -37
- package/lib/get-response-value.js.map +1 -1
- package/lib/index.d.ts +14 -1
- package/lib/index.js +5 -1
- package/lib/index.js.map +1 -1
- package/lib/inject.js +0 -2
- package/lib/inject.js.map +1 -1
- package/lib/models.d.ts +45 -23
- package/lib/models.js +45 -0
- package/lib/models.js.map +1 -1
- package/lib/symbols.d.ts +1 -0
- package/lib/symbols.js +1 -0
- package/lib/symbols.js.map +1 -1
- package/lib/ui/directives/index.js +2 -2
- package/lib/ui/index.js +2 -2
- package/lib/ui/taon-admin-mode-configuration/index.d.ts +1 -3
- package/lib/ui/taon-admin-mode-configuration/index.js +2 -2
- package/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.d.ts +4 -7
- package/lib/ui/taon-admin-mode-configuration/{models/taon-admin-mode-tabs.js → taon-admin.models.js} +1 -1
- package/lib/ui/taon-admin-mode-configuration/taon-admin.models.js.map +1 -0
- package/lib/ui/taon-admin-mode-configuration/taon-admin.service.d.ts +6 -6
- package/lib/ui/taon-github-fork-me-corner/index.js +2 -2
- package/lib/ui/taon-github-fork-me-ribbon/index.js +2 -2
- package/lib/ui/taon-notifications/taon-notifications.models.js +2 -2
- package/lib/ui/taon-progress-bar/index.js +2 -2
- package/lib/ui/taon-session-passcode/index.js +2 -2
- package/lib/ui/taon-table/index.js +2 -2
- package/migrations/index.d.ts +1 -0
- package/migrations/index.js +6 -0
- package/migrations/index.js.map +1 -0
- package/migrations/migrations_index._auto-generated_.d.ts +0 -0
- package/migrations/migrations_index._auto-generated_.js +4 -0
- package/migrations/migrations_index._auto-generated_.js.map +1 -0
- package/package.json +7 -7
- package/taon.jsonc +47 -47
- package/tmp-environment.json +39 -31
- package/websql/README.md +24 -24
- package/websql/esm2022/lib/base-classes/base-abstract-entity.mjs +1 -1
- package/websql/esm2022/lib/base-classes/base-class.mjs +2 -2
- package/websql/esm2022/lib/base-classes/base-controller.mjs +3 -2
- package/websql/esm2022/lib/base-classes/base-crud-controller.mjs +1 -1
- package/websql/esm2022/lib/base-classes/base-migration.mjs +23 -0
- package/websql/esm2022/lib/base-classes/base-repository.mjs +5 -5
- package/websql/esm2022/lib/base-classes/base-subscriber-for-entity.mjs +20 -20
- package/websql/esm2022/lib/base-classes/base.mjs +5 -3
- package/websql/esm2022/lib/context-db-migrations.mjs +269 -0
- package/websql/esm2022/lib/create-context.mjs +22 -8
- package/websql/esm2022/lib/decorators/classes/controller-decorator.mjs +4 -1
- package/websql/esm2022/lib/decorators/classes/entity-decorator.mjs +4 -1
- package/websql/esm2022/lib/decorators/classes/migration-decorator.mjs +18 -0
- package/websql/esm2022/lib/decorators/classes/provider-decorator.mjs +4 -1
- package/websql/esm2022/lib/decorators/classes/repository-decorator.mjs +4 -1
- package/websql/esm2022/lib/decorators/classes/subscriber-decorator.mjs +5 -2
- package/websql/esm2022/lib/decorators/http/http-methods-decorators.mjs +1 -1
- package/websql/esm2022/lib/endpoint-context.mjs +139 -95
- package/websql/esm2022/lib/entity-process.mjs +1 -10
- package/websql/esm2022/lib/get-response-value.mjs +4 -24
- package/websql/esm2022/lib/index.mjs +4 -1
- package/websql/esm2022/lib/inject.mjs +1 -1
- package/websql/esm2022/lib/models.mjs +28 -1
- package/websql/esm2022/lib/symbols.mjs +2 -1
- package/websql/esm2022/lib/ui/taon-admin-mode-configuration/index.mjs +1 -3
- package/websql/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.mjs +55 -37
- package/websql/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin.service.mjs +17 -21
- package/websql/esm2022/lib/ui/taon-notifications/taon-notifications.module.mjs +1 -1
- package/websql/esm2022/lib/ui/taon-progress-bar/taon-progress-bar.component.mjs +1 -1
- package/websql/esm2022/lib/ui/taon-table/taon-table.component.mjs +1 -2
- package/websql/fesm2022/taon.mjs +594 -497
- package/websql/fesm2022/taon.mjs.map +1 -1
- package/websql/lib/base-classes/base-abstract-entity.d.ts +2 -1
- package/websql/lib/base-classes/base-class.d.ts +1 -1
- package/websql/lib/base-classes/base-context.d.ts +3 -0
- package/websql/lib/base-classes/base-controller.d.ts +2 -1
- package/websql/lib/base-classes/base-crud-controller.d.ts +1 -1
- package/websql/lib/base-classes/base-migration.d.ts +12 -0
- package/websql/lib/base-classes/base.d.ts +8 -2
- package/websql/lib/context-db-migrations.d.ts +17 -0
- package/websql/lib/create-context.d.ts +7 -4
- package/websql/lib/decorators/classes/controller-decorator.d.ts +3 -0
- package/websql/lib/decorators/classes/entity-decorator.d.ts +3 -0
- package/websql/lib/decorators/classes/migration-decorator.d.ts +8 -0
- package/websql/lib/decorators/classes/provider-decorator.d.ts +3 -0
- package/websql/lib/decorators/classes/repository-decorator.d.ts +3 -0
- package/websql/lib/decorators/classes/subscriber-decorator.d.ts +3 -0
- package/websql/lib/decorators/http/http-methods-decorators.d.ts +9 -0
- package/websql/lib/endpoint-context.d.ts +14 -7
- package/websql/lib/index.d.ts +14 -1
- package/websql/lib/models.d.ts +45 -23
- package/websql/lib/symbols.d.ts +1 -0
- package/websql/lib/ui/taon-admin-mode-configuration/index.d.ts +1 -3
- package/websql/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.d.ts +5 -8
- package/websql/lib/ui/taon-admin-mode-configuration/taon-admin.service.d.ts +8 -8
- package/browser/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.mjs +0 -5
- package/browser/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.mjs +0 -115
- package/browser/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.module.mjs +0 -50
- package/browser/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.mjs +0 -5
- package/browser/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.mjs +0 -61
- package/browser/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.module.mjs +0 -21
- package/browser/esm2022/lib/ui/taon-admin-mode-configuration/models/taon-admin-mode-tabs.mjs +0 -4
- package/browser/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-control.service.mjs +0 -32
- package/browser/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.module.mjs +0 -54
- package/browser/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.d.ts +0 -3
- package/browser/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.d.ts +0 -33
- package/browser/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.module.d.ts +0 -16
- package/browser/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.d.ts +0 -3
- package/browser/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.d.ts +0 -17
- package/browser/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.module.d.ts +0 -10
- package/browser/lib/ui/taon-admin-mode-configuration/models/taon-admin-mode-tabs.d.ts +0 -6
- package/browser/lib/ui/taon-admin-mode-configuration/taon-admin-control.service.d.ts +0 -18
- package/browser/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.module.d.ts +0 -17
- package/client/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.mjs +0 -5
- package/client/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.mjs +0 -115
- package/client/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.module.mjs +0 -50
- package/client/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.mjs +0 -5
- package/client/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.mjs +0 -61
- package/client/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.module.mjs +0 -21
- package/client/esm2022/lib/ui/taon-admin-mode-configuration/models/taon-admin-mode-tabs.mjs +0 -4
- package/client/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-control.service.mjs +0 -32
- package/client/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.module.mjs +0 -54
- package/client/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.d.ts +0 -3
- package/client/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.d.ts +0 -33
- package/client/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.module.d.ts +0 -16
- package/client/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.d.ts +0 -3
- package/client/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.d.ts +0 -17
- package/client/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.module.d.ts +0 -10
- package/client/lib/ui/taon-admin-mode-configuration/models/taon-admin-mode-tabs.d.ts +0 -6
- package/client/lib/ui/taon-admin-mode-configuration/taon-admin-control.service.d.ts +0 -18
- package/client/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.module.d.ts +0 -17
- package/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.d.ts +0 -2
- package/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.js +0 -5
- package/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.js.map +0 -1
- package/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.d.ts +0 -29
- package/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.module.d.ts +0 -2
- package/lib/ui/taon-admin-mode-configuration/components/taon-db-admin/index.d.ts +0 -1
- package/lib/ui/taon-admin-mode-configuration/components/taon-db-admin/index.js +0 -5
- package/lib/ui/taon-admin-mode-configuration/components/taon-db-admin/index.js.map +0 -1
- package/lib/ui/taon-admin-mode-configuration/components/taon-db-admin/taon-db-admin.component.d.ts +0 -8
- package/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.d.ts +0 -2
- package/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.js +0 -5
- package/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.js.map +0 -1
- package/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.d.ts +0 -13
- package/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.module.d.ts +0 -2
- package/lib/ui/taon-admin-mode-configuration/models/taon-admin-mode-tabs.js.map +0 -1
- package/lib/ui/taon-admin-mode-configuration/taon-admin-control.service.d.ts +0 -14
- package/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.module.d.ts +0 -2
- package/websql/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.mjs +0 -5
- package/websql/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.mjs +0 -115
- package/websql/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.module.mjs +0 -50
- package/websql/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.mjs +0 -5
- package/websql/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.mjs +0 -61
- package/websql/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.module.mjs +0 -21
- package/websql/esm2022/lib/ui/taon-admin-mode-configuration/models/taon-admin-mode-tabs.mjs +0 -4
- package/websql/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-control.service.mjs +0 -32
- package/websql/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.module.mjs +0 -54
- package/websql/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.d.ts +0 -3
- package/websql/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.d.ts +0 -33
- package/websql/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.module.d.ts +0 -16
- package/websql/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.d.ts +0 -3
- package/websql/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.d.ts +0 -17
- package/websql/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.module.d.ts +0 -10
- package/websql/lib/ui/taon-admin-mode-configuration/models/taon-admin-mode-tabs.d.ts +0 -6
- package/websql/lib/ui/taon-admin-mode-configuration/taon-admin-control.service.d.ts +0 -18
- package/websql/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.module.d.ts +0 -17
- /package/lib/ui/taon-admin-mode-configuration/{models/taon-admin-mode-tabs.d.ts → taon-admin.models.d.ts} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taon.mjs","sources":["../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/symbols.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/validators.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/helpers/taon-helpers.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/helpers/class-helpers.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/models.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/decorators/http/http-methods-decorators.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/decorators/http/http-params-decorators.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/decorators/http/http-decorators.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/decorators/classes/controller-decorator.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/base-classes/base-injector.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/base-classes/base-controller.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/base-classes/base-crud-controller.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/base-classes/base-class.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/base-classes/base-entity.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/orm.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/base-classes/base-abstract-entity.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/decorators/classes/repository-decorator.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/base-classes/base-repository.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/base-classes/base-provider.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/storage.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/taon-admin-mode-configuration/taon-admin.service.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/dependency-injection/di-container.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/get-response-value.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/env.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/realtime/realtime-subs-manager.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/realtime/realtime-client.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/realtime/realtime-server.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/realtime/realtime-strategy/realtime-strategy.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/realtime/realtime-strategy/realtime-strategy-ipc.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/realtime/realtime-strategy/realtime-strategy-mock.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/realtime/realtime-strategy/realtime-strategy-socket-io.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/realtime/realtime-strategy/index.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/realtime/realtime-core.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/endpoint-context.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/create-context.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/base-classes/base-context.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/decorators/classes/subscriber-decorator.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/base-classes/base-subscriber-for-entity.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/base-classes/base.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/decorators/classes/entity-decorator.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/decorators/classes/provider-decorator.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/inject.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/directives/taon-long-press.directive.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/directives/taon-inject-html.directive.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/directives/safe.pipe.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/directives/index.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/taon-full-material.module.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/taon-github-fork-me-corner/taon-github-fork-me-corner.component.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/taon-github-fork-me-corner/taon-github-fork-me-corner.component.html","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/taon-github-fork-me-corner/taon-github-fork-me-corner.module.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/taon-github-fork-me-corner/index.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/taon-notifications/taon-notifications.service.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/taon-notifications/taon-notifications.component.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/taon-notifications/taon-notifications.component.html","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/taon-notifications/taon-notifications.models.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/taon-notifications/taon-notifications.module.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/taon-notifications/index.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/taon-session-passcode/taon-session-passcode.component.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/taon-session-passcode/taon-session-passcode.component.html","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/taon-session-passcode/index.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/taon-progress-bar/taon-progress-bar.component.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/taon-progress-bar/taon-progress-bar.component.html","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/taon-progress-bar/taon-progress-bar.module.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/taon-progress-bar/index.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/taon-table/taon-table.component.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/taon-table/taon-table.component.html","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/taon-table/taon-table.module.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/taon-table/index.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/taon-admin-mode-configuration/taon-admin-control.service.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.html","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.html","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.html","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.module.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.module.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.module.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/taon-admin-mode-configuration/index.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/index.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/constants.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/index.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/taon.ts"],"sourcesContent":["\n\nimport { _ } from 'tnp-core/websql';\nimport { OrignalClassKey } from 'taon-typeorm/websql';\nimport { SYMBOL } from 'typescript-class-helpers/websql';\n\nexport namespace Symbols {\n export const ctxInClassOrClassObj = Symbol();\n export const classNameStaticProperty: string = SYMBOL.ClassNameStaticProperty;\n export const fullClassNameStaticProperty: string = `$$fullclassName$$`;\n export const orignalClass: string = OrignalClassKey;\n export const orignalClassClonesObj: string = `$$originalClassClonesObj$$`;\n export const classMethodsNames: string = `$$classMethodsNames$$`;\n\n /**\n * for backendSocket.in(ROOM_NAME).emit(EVENT)\n *\n * Room names are uniqe..\n * here I am limiting number of event for clients.\n */\n class Realtime {\n NAMESPACE(contextName: string) {\n return `${contextName}-taonRealtimeNsp`;\n }\n TABLE_CHANGE(contextName: string, tableName: string) {\n return `${contextName}:listentablename${tableName}`;\n }\n readonly KEYroomSubscribe = `roomSubscribe`;\n readonly KEYroomUnsubscribe = `roomUnsubscribe`;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n ROOM_NAME_CUSTOM(contextName: string, customEvent: string) {\n return `${contextName}:CustomRoomEvent${customEvent}`;\n }\n\n ROOM_SUBSCRIBE_CUSTOM(contextName: string) {\n return `${contextName}:${this.KEYroomSubscribe}CustomRoomEvent`;\n }\n ROOM_UNSUBSCRIBE_CUSTOM(contextName: string) {\n return `${contextName}:${this.KEYroomUnsubscribe}CustomRoomEvent`;\n }\n\n\n\n ROOM_NAME_UPDATE_ENTITY(\n contextName: string,\n className: string,\n entityId: number | string,\n ) {\n return `${contextName}:room${_.camelCase(className)}${entityId}`.toLowerCase();\n }\n ROOM_SUBSCRIBE_ENTITY_UPDATE_EVENTS(contextName: string) {\n return `${contextName}:${this.KEYroomSubscribe}EntityEvents`;\n }\n\n ROOM_UNSUBSCRIBE_ENTITY_UPDATE_EVENTS(contextName: string) {\n return `${contextName}:${this.KEYroomUnsubscribe}EntityEvents`;\n }\n\n\n\n ROOM_NAME_UPDATE_ENTITY_PROPERTY(\n contextName: string,\n className: string,\n property: string,\n entityId: number | string,\n ) {\n return `${contextName}:room${_.camelCase(className)}${_.camelCase(property)}${entityId}`.toLowerCase();\n }\n\n ROOM_SUBSCRIBE_ENTITY_PROPERTY_UPDATE_EVENTS(contextName: string) {\n return `${contextName}:${this.KEYroomSubscribe}EntityPropertyEvents`;\n }\n\n ROOM_UNSUBSCRIBE_ENTITY_PROPERTY_UPDATE_EVENTS(contextName: string) {\n return `${contextName}:${this.KEYroomUnsubscribe}EntityPropertyEvents`;\n }\n\n }\n\n export const REALTIME = new Realtime();\n\n export const metadata = {\n className: `class:realname`,\n options: {\n runtimeController: `runtime:controller:options`,\n controller: `controller:options`,\n controllerMethod: `controller:method:options`,\n entity: `entity:options`,\n repository: `repository:options`,\n provider: `provider:options`,\n subscriber: `subscriber:options`,\n },\n };\n\n export const old = {\n HAS_TABLE_IN_DB: Symbol(),\n MDC_KEY: `modeldataconfig`,\n WEBSQL_REST_PROGRESS_FUN: Symbol(),\n WEBSQL_REST_PROGRESS_FUN_START: Symbol(),\n WEBSQL_REST_PROGRESS_FUN_DONE: Symbol(),\n WEBSQL_REST_PROGRESS_TIMEOUT: Symbol(),\n\n X_TOTAL_COUNT: `x-total-count`,\n CIRCURAL_OBJECTS_MAP_BODY: `circuralmapbody`,\n CIRCURAL_OBJECTS_MAP_QUERY_PARAM: `circuralmapbody`,\n MAPPING_CONFIG_HEADER: `mappingheader`,\n MAPPING_CONFIG_HEADER_BODY_PARAMS: `mhbodyparams`,\n MAPPING_CONFIG_HEADER_QUERY_PARAMS: `mhqueryparams`,\n ENDPOINT_META_CONFIG: `ng2_rest_endpoint_config`,\n CLASS_DECORATOR_CONTEXT: `$$ng2_rest_class_context`,\n SOCKET_MSG: `socketmessageng2rest`,\n ANGULAR: {\n INPUT_NAMES: Symbol(),\n },\n ERROR_MESSAGES: {\n CLASS_NAME_MATCH: `Please check if your \"class name\" matches @Controller( className ) or @Entity( className )`,\n },\n };\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/symbols.ts","\n\nimport { _ } from 'tnp-core/websql';\nimport { Models } from './models';\n\nexport namespace Validators {\n\n export const classNameVlidation = (className, target: Function) => {\n setTimeout(() => {\n\n if (_.isUndefined(className)) {\n throw `[Taon]\n Please provide \"className\" property for each Controller and Entity:\n\n @Taon.Controller({ className: 'MyExampleCtrl' })\n class MyExampleCtrl {\n ...\n }\n\n @Taon.Entity({ className: 'MyExampleEntity' })\n class MyExampleEntity {\n ...\n }\n\n Notice that minified javascript code does not preserve\n Functions/Classes names -this is only solution to preserve classes names.\n\n `;\n }\n });\n\n return _.isUndefined(className) ? target.name : className;\n };\n\n\n\n export const checkIfMethodsWithReponseTYpeAlowed = (\n methods: Models.MethodConfig[],\n current: Models.MethodConfig,\n ) => {\n const defaultResponseType = 'text or JSON';\n if (!current.responseType) {\n return;\n }\n for (let index = 0; index < methods.length; index++) {\n const m = methods[index];\n if (m.path === current.path && m.responseType !== current.responseType) {\n throw new Error(`\n [taon] you can have 2 methods with same path but differetn reponseType-s\n\n ${m.methodName}( ... path: ${m.path} ) -> responseType: ${m.responseType || defaultResponseType}\n ${current.methodName}( ... path: ${current.path} ) -> responseType: ${current.responseType}\n\n Please change path name on of the methods.\n\n `);\n }\n }\n };\n\n\n\n\n export const validateClassFunctions = (\n controllers: any[],\n entities: any[],\n proviers: any[],\n repositories: any[],\n ) => {\n if (\n _.isArray(controllers) &&\n controllers.filter(f => !_.isFunction(f)).length > 0\n ) {\n console.error('controllers', controllers);\n throw `\n\n Incorect value for property \"controllers\" inside Taon.Init(...)\n\n `;\n }\n\n if (\n _.isArray(entities) &&\n entities.filter(f => !_.isFunction(f)).length > 0\n ) {\n console.error('entites', entities);\n throw `\n\n Incorect value for property \"entities\" inside Taon.Init(...)\n\n `;\n }\n };\n\n\n export const preventUndefinedModel = (model, id) => {\n if (_.isUndefined(model)) {\n throw `Bad update by id, config, id: ${id}`;\n }\n };\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/validators.ts","\n\nimport { _ } from 'tnp-core/websql';\nimport * as JSON5 from 'json5';\nimport { Models } from '../models';\nimport { ClassHelpers } from './class-helpers';\n\nexport namespace TaonHelpers {\n\n export const fillUpTo = (s: string, nCharacters: number) => {\n return _.times(nCharacters, n => {\n if (s.charAt(n)) {\n return s.charAt(n);\n }\n return ' ';\n }).join('');\n };\n\n\n\n export const isGoodPath = (p: string) => {\n return p && typeof p === 'string' && p.trim() !== '';\n };\n\n\n\n export const tryTransformParam = param => {\n if (typeof param === 'string') {\n let n = Number(param);\n if (!isNaN(n)) return n;\n const bool = param.trim().toLowerCase();\n if (bool === 'true') {\n return true;\n }\n if (bool === 'false') {\n return false;\n }\n try {\n const t = JSON5.parse(param);\n return t;\n } catch (e) {\n return param;\n }\n }\n return param;\n };\n\n\n\n export const getExpressPath = (\n c: Models.RuntimeControllerConfig,\n pathOrClassConfig: Models.MethodConfig,\n ) => {\n if (typeof pathOrClassConfig === 'string')\n return `${c.calculatedPath}${pathOrClassConfig}`.replace(/\\/$/, '');\n return `${c.calculatedPath}${pathOrClassConfig.path}`.replace(/\\/$/, '');\n };\n\n\n\n export const defaultType = value => {\n if (typeof value === 'string') return '';\n if (typeof value === 'boolean') return false;\n if (Array.isArray(value)) return {};\n if (typeof value === 'object') return {};\n };\n\n\n\n export const parseJSONwithStringJSONs = (\n object: Object,\n waring = false,\n ): Object => {\n\n if (!_.isObject(object)) {\n if (waring) {\n console.error(\n `\n parseJSONwithStringJSONs(...)\n Parameter should be a object, but is ${typeof object}\n `,\n object,\n );\n }\n\n return object;\n }\n\n let res = _.cloneDeep(object);\n\n Object.keys(res).forEach(key => {\n let isJson = false;\n try {\n const possibleJSON = JSON.parse(res[key]);\n res[key] = possibleJSON;\n isJson = true;\n } catch (e) {\n isJson = false;\n }\n\n if (isJson) {\n res[key] = parseJSONwithStringJSONs(res[key], false);\n }\n });\n\n return res;\n };\n\n\n\n export const isPlainFileOrFolder = filePath => {\n return /^([a-zA-Z]|\\-|\\_|\\@|\\#|\\$|\\!|\\^|\\&|\\*|\\(|\\))+$/.test(filePath);\n };\n\n\n\n export const ipcKeyNameResponse = (\n target: Function,\n methodConfig: Models.MethodConfig,\n expressPath: string,\n ) => {\n return [\n 'response',\n ClassHelpers.getName(target),\n methodConfig.methodName,\n methodConfig.type,\n expressPath,\n ].join('--');\n };\n\n\n\n export const ipcKeyNameRequest = (\n target: Function,\n methodConfig: Models.MethodConfig,\n expressPath: string,\n ) => {\n return [\n 'request',\n ClassHelpers.getName(target),\n methodConfig.methodName,\n methodConfig.type,\n expressPath,\n ].join('--');\n };\n\n\n\n export const websqlMocks = headers => {\n const response: Express.Response = {\n status(status: any) {\n\n return {\n send(send: any) {\n\n },\n };\n },\n setHeader(key: string, value: any) {\n\n headers[key] = value;\n },\n };\n const request: Express.Request = {};\n return { request, response };\n };\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/helpers/taon-helpers.ts","\n\nimport { Symbols } from '../symbols';\nimport { Validators } from '../validators';\nimport { _ } from 'tnp-core/websql';\nimport { Models } from '../models';\nimport { TaonControllerOptions } from '../decorators/classes/controller-decorator';\nimport { TaonHelpers } from './taon-helpers';\nimport { TaonEntityOptions } from '../decorators/classes/entity-decorator';\nimport { CLASS } from 'typescript-class-helpers/websql';\n/* */\n/* */\n \n\nexport namespace ClassHelpers {\n\n /**\n * TODO - repalce in every place when getting class fn from object\n */\n export const getClassFnFromObject = (json: Object) => {\n if (_.isUndefined(json) || _.isNull(json)) {\n return;\n }\n if (json.constructor) {\n return json.constructor;\n }\n const p = Object.getPrototypeOf(json);\n return p && p.constructor && p.constructor.name !== 'Object'\n ? p.constructor\n : void 0;\n };\n\n\n\n export const getName = (classFnOrObject: any): string => {\n\n if (classFnOrObject instanceof FormData) {\n return 'FormData';\n }\n if (!classFnOrObject) {\n console.error('OBJECT OR CLASS', classFnOrObject);\n throw new Error(`Cannot get name from this object or class.`);\n }\n return (\n (classFnOrObject[Symbols.classNameStaticProperty]\n ? classFnOrObject[Symbols.classNameStaticProperty]\n : classFnOrObject?.constructor[Symbols.classNameStaticProperty]) ||\n CLASS.getName(classFnOrObject)\n );\n };\n\n\n export const getOrginalClass = (classFnOrObject: any): any => {\n const org = classFnOrObject[Symbols.orignalClass];\n if (!org) {\n return classFnOrObject;\n }\n return getOrginalClass(org);\n };\n\n\n export const getFullInternalName = (classFnOrObject: any): string => {\n\n\n if (!classFnOrObject) {\n throw new Error(`Cannot get name from: ${classFnOrObject}`);\n }\n return (\n (classFnOrObject[Symbols.fullClassNameStaticProperty]\n ? classFnOrObject[Symbols.fullClassNameStaticProperty]\n : classFnOrObject?.constructor[Symbols.fullClassNameStaticProperty]) ||\n void 0\n );\n };\n\n\n\n export const getUniqueKey = (classFnOrObject: any): string => {\n const classFn = _.isFunction(classFnOrObject)\n ? classFnOrObject\n : classFnOrObject.constructor;\n const config = Reflect.getMetadata(\n Symbols.metadata.options.controller,\n classFn,\n ) as TaonEntityOptions;\n return config.uniqueKeyProp;\n };\n\n\n\n export const isContextClassObject = (obj: any): boolean => {\n if (\n !_.isObject(obj) ||\n _.isArray(obj) ||\n _.isRegExp(obj) ||\n _.isBuffer(obj) ||\n _.isArrayBuffer(obj)\n ) {\n return false;\n }\n if (_.isDate(obj)) {\n return true;\n }\n const className = getName(obj);\n return _.isString(className) && className !== 'Object';\n };\n\n\n\n\n export const setName = (target: Function, className: string): void => {\n\n Validators.classNameVlidation(className, target);\n target[Symbols.classNameStaticProperty] = className;\n };\n\n\n\n export const hasParentClassWithName = (\n target: Function,\n className: string,\n targets = [],\n ): boolean => {\n if (!target) {\n return false;\n }\n targets.push(target);\n let targetProto = Object.getPrototypeOf(target);\n\n if (\n _.isFunction(targetProto) &&\n ClassHelpers.getName(targetProto) === className\n ) {\n\n return true;\n }\n return hasParentClassWithName(targetProto, className, targets);\n };\n\n\n\n export const getControllerConfig = (\n target: Function,\n ): Models.ControllerConfig | undefined => {\n const classMetadataOptions: TaonControllerOptions = Reflect.getMetadata(\n Symbols.metadata.options.controller,\n target,\n );\n const classMetadata: Models.ControllerConfig = _.merge(\n new Models.ControllerConfig(),\n classMetadataOptions,\n );\n\n\n const methodNames = ClassHelpers.getMethodsNames(target); // Object.getOwnPropertyNames(target.prototype);\n\n for (const methodName of methodNames) {\n const methodMetadata: Models.MethodConfig = Reflect.getMetadata(\n Symbols.metadata.options.controllerMethod,\n target,\n methodName,\n );\n\n if (methodMetadata) {\n classMetadata.methods[methodName] = methodMetadata;\n }\n }\n return classMetadata;\n };\n\n\n\n\n\n const notAllowedAsMethodName = [\n 'length',\n 'name',\n 'arguments',\n 'caller',\n 'constructor',\n 'apply',\n 'bind',\n 'call',\n 'toString',\n '__defineGetter__',\n '__defineSetter__',\n 'hasOwnProperty',\n '__lookupGetter__',\n '__lookupSetter__',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'valueOf',\n '__proto__',\n 'toLocaleString',\n ];\n\n\n export const getMethodsNames = (\n classOrClassInstance: any,\n allMethodsNames = [],\n ): string[] => {\n if (!classOrClassInstance) {\n return allMethodsNames;\n }\n\n const isClassFunction = _.isFunction(classOrClassInstance);\n const classFun = isClassFunction\n ? classOrClassInstance\n : Object.getPrototypeOf(classOrClassInstance);\n const objectToCheck = isClassFunction\n ? (classOrClassInstance as Function)?.prototype\n : classOrClassInstance;\n const prototypeObj = Object.getPrototypeOf(objectToCheck || {});\n\n const properties = _.uniq([\n ...Object.getOwnPropertyNames(objectToCheck || {}),\n ...Object.getOwnPropertyNames(prototypeObj || {}),\n ...Object.keys(objectToCheck || {}),\n ...Object.keys(prototypeObj || {}),\n ]).filter(f => !!f && !notAllowedAsMethodName.includes(f));\n\n properties\n .filter(methodName => typeof objectToCheck[methodName] === 'function')\n .forEach(p => allMethodsNames.push(p));\n\n if (\n !classFun ||\n !classFun.constructor ||\n classFun?.constructor?.name === 'Object'\n ) {\n return allMethodsNames;\n }\n return getMethodsNames(Object.getPrototypeOf(classFun), allMethodsNames);\n };\n\n\n\n export const getControllerConfigs = (\n target: Function,\n configs: Models.ControllerConfig[] = [],\n callerTarget?: Function,\n ): Models.RuntimeControllerConfig[] => {\n if (!_.isFunction(target)) {\n throw `[typescript-class-helper][getClassConfig] Cannot get class config from: ${target}`;\n }\n\n let config: Models.RuntimeControllerConfig;\n const parentClass = Object.getPrototypeOf(target);\n const parentName = parentClass ? ClassHelpers.getName(parentClass) : void 0;\n const isValidParent = _.isFunction(parentClass) && parentName !== '';\n\n config = getControllerConfig(target);\n\n configs.push(config);\n\n return isValidParent\n ? getControllerConfigs(parentClass, configs, target)\n : configs;\n };\n\n\n\n export const getCalculatedPathFor = (target: Function) => {\n const configs = getControllerConfigs(target);\n\n const parentscalculatedPath = _.slice(configs, 1)\n .reverse()\n .map(bc => {\n if (TaonHelpers.isGoodPath(bc.path)) {\n return bc.path;\n }\n return bc.className;\n })\n .join('/');\n\n return `/${parentscalculatedPath}/${ClassHelpers.getName(target)}`;\n };\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/helpers/class-helpers.ts","\n\nimport { CoreModels } from 'tnp-core/websql';\nimport { Response, RequestHandler } from 'express';\nimport { Response as ExpressResponse, Request as ExpressRequest, } from 'express';/* */\n/* */\n/* */\n\nimport { Models as ModelsNg2Rest } from 'ng2-rest/websql';\nimport { ClassHelpers } from './helpers/class-helpers';\nimport type { TaonControllerOptions } from './decorators/classes/controller-decorator';\nimport type { TaonEntityOptions } from './decorators/classes/entity-decorator';\n\nexport namespace Models {\n export type FrameworkMode =\n | 'backend-frontend(tcp+udp)'\n | 'remote-backend(tcp+udp)'\n | 'backend-frontend(ipc-electron)'\n | 'backend-frontend(websql-electron)'\n | 'backend-frontend(websql)';\n\n\n export enum ClassType {\n ENTITY = 'ENTITY',\n CONTROLLER = 'CONTROLLER',\n REPOSITORY = 'REPOSITORY',\n PROVIDER = 'PROVIDER',\n SUBSCRIBER = 'SUBSCRIBER',\n }\n\n export const ClassTypeKey = {\n [ClassType.ENTITY]: 'entities',\n [ClassType.CONTROLLER]: 'controllers',\n [ClassType.REPOSITORY]: 'repositories',\n [ClassType.PROVIDER]: 'providers',\n [ClassType.SUBSCRIBER]: 'subscribers',\n } as {\n [key in ClassType]: keyof ContextOptions<any, any, any, any, any, any>;\n };\n\n\n\n\n export type MiddlewareType = [Function, any[]];\n\n\n\n export interface DatabaseConfig {\n /**\n * database name\n */\n database?: string;\n /**\n * only for file base db: sqlite, sqljs\n */\n location?: string;\n synchronize: boolean;\n dropSchema: boolean;\n type?: CoreModels.DatabaseType;\n\n autoSave: boolean; // TODO what is this ?\n /**\n * for websql db mode\n */\n useLocalForage?: boolean;\n logging: boolean;\n\n databasePort?: number;\n databaseHost?: string;\n databaseUsername?: string;\n databasePassword?: string;\n }\n\n\n\n\n export type ISession = {\n secret?: string;\n saveUninitialized?: boolean;\n /**\n * max age of session\n */\n cookieMaxAge?: number;\n secure?: boolean;\n resave?: boolean;\n };\n\n\n\n export type ContectionOptionsLogs = {\n http?: boolean;\n realtime?: boolean;\n framework?: boolean;\n db?: boolean;\n };\n export interface ContextOptions<\n CONTEXTS,\n CONTROLLERS,\n ENTITIES,\n REPOSITORIES,\n PROVIDERS,\n SUBSCRIBERS,\n > {\n contextName: string;\n /**\n * host/port for initing backend server\n */\n host?: string;\n /**\n * frontend host only needed when we are\n * using withCredentials for axios\n * and session cookie\n * or realtime communication\n */\n frontendHost?: string;\n /**\n * backend way of communication\n * between taon backends/processes\n */\n remoteHost?: string;\n useIpcWhenElectron?: boolean;\n contexts?: CONTEXTS;\n controllers?: CONTROLLERS;\n entities?: ENTITIES;\n repositories?: REPOSITORIES;\n providers?: PROVIDERS;\n subscribers?: SUBSCRIBERS;\n session?: ISession;\n productionMode?: boolean;\n abstract?: boolean;\n logs?: boolean | ContectionOptionsLogs;\n database?: boolean | DatabaseConfig;\n disabledRealtime?: boolean;\n https?: {\n key: string;\n cert: string;\n };\n publicAssets?: { serverPath: string; locationOnDisk: string }[];\n middlewares?: MiddlewareType[];\n /**\n * @deprecated\n * only for debugging purpose\n */\n override?: {\n entities?: Function[];\n controllers?: Function[];\n repositories?: Function[];\n providers?: Function[];\n subscribers?: Function[];\n };\n }\n\n\n\n export class DecoratorAbstractOpt {\n className: string;\n }\n\n\n\n export class ParamConfig {\n paramName: string;\n paramType: CoreModels.ParamType;\n index: number;\n defaultType: any;\n expireInSeconds?: number;\n }\n\n\n\n export class MethodConfig {\n methodName: string;\n /**\n * path is global in express app\n */\n global?: boolean;\n /**\n * override default content type\n */\n contentType?: any;\n /**\n * override default axiso response type\n */\n responseType?: any;\n path: string;\n descriptor: PropertyDescriptor;\n type: CoreModels.HttpMethod;\n\n requestHandler: any;\n\n parameters: { [paramName: string]: ParamConfig } = {};\n }\n\n\n\n export class ControllerConfig extends DecoratorAbstractOpt {\n realtime?: boolean;\n path: string;\n uniqueKey?: string;\n methods: { [methodName: string]: MethodConfig } = {};\n }\n\n\n\n export class RuntimeControllerConfig extends ControllerConfig {\n calculatedPath?: string;\n browserTransformFn?: (entity: any) => any;\n }\n\n\n\n export namespace Http {\n export import Rest = ModelsNg2Rest;\n\n export type ContextENDPOINT = { target: Function; initFN: Function };\n\n export type FormlyFromType = 'material' | 'bootstrap';\n\n export type ExpressContext<T> = (\n req: ExpressRequest,\n res: ExpressResponse,\n ) => T;\n\n export type SyncResponse<T> = string | T;\n\n export type ResponseFuncOpt<T> = {\n limitSize?: (\n enties: Function | Function[],\n include: string[],\n exclude: string[],\n ) => void;\n };\n\n export type SyncResponseFunc<T> = (\n options?: ResponseFuncOpt<T>,\n ) => SyncResponse<T>;\n export type MixResponse<T> = SyncResponse<T> | ExpressContext<T>;\n\n export interface ClientAction<T> {\n received?: Rest.PromiseObservableMix<Rest.HttpResponse<T>>;\n }\n\n export interface __Response<T> {\n\n send?: MixResponse<T>;\n\n }\n\n export interface AsyncResponse<T> {\n (\n req?: ExpressRequest,\n res?: ExpressResponse,\n ): Promise<SyncResponse<T> | SyncResponseFunc<T>>;\n }\n\n export type Response<T = string> = (__Response<T> | AsyncResponse<T>) &\n ClientAction<T> &\n __Response<T>;\n\n export class Errors {\n public toString = (): string => {\n return this.message;\n };\n\n private constructor(\n public message: string,\n private code: ModelsNg2Rest.HttpCode = 400,\n ) {}\n\n private static create(\n message: string,\n code: ModelsNg2Rest.HttpCode = 400,\n ) {\n return new Errors(message, code);\n }\n\n public static entityNotFound(entity?: Function) {\n return Errors.create(\n `Entity ${ClassHelpers.getName(entity)} not found`,\n );\n }\n\n public static custom(\n message: string,\n code: ModelsNg2Rest.HttpCode = 400,\n ) {\n return Errors.create(message, code);\n }\n }\n\n\n export interface AuthCallBack {\n (methodReference: Function): RequestHandler;\n }\n\n\n }\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/models.ts","\n\nimport { CoreModels, _ } from 'tnp-core/websql';\nimport { Models } from '../../models';\nimport { Symbols } from '../../symbols';\nimport { Models as ModelsNg2Rest } from 'ng2-rest/websql';\nconst metaReq = (\n method: Models.Http.Rest.HttpMethod,\n path: string,\n target: Function,\n propertyKey: string,\n descriptor: PropertyDescriptor,\n pathOrOptions: string | TaonHttpDecoratorOptions,\n pathIsGlobal: boolean,\n) => {\n let options: TaonHttpDecoratorOptions;\n if (typeof pathOrOptions === 'object') {\n options = pathOrOptions;\n pathOrOptions = options.path as any;\n pathIsGlobal = !!options.pathIsGlobal;\n path = options.path;\n } else {\n options = { pathOrOptions, pathIsGlobal } as any;\n }\n\n const { overrideContentType, overridResponseType } = options;\n\n let methodConfig: Models.MethodConfig = Reflect.getMetadata(\n Symbols.metadata.options.controllerMethod,\n target.constructor,\n propertyKey,\n );\n if (!methodConfig) {\n methodConfig = new Models.MethodConfig();\n Reflect.defineMetadata(\n Symbols.metadata.options.controllerMethod,\n methodConfig,\n target.constructor,\n propertyKey,\n );\n }\n\n methodConfig.methodName = propertyKey;\n methodConfig.type = method;\n if (!path) {\n let paramsPathConcatedPath = '';\n for (const key in methodConfig.parameters) {\n if (methodConfig.parameters.hasOwnProperty(key)) {\n const element = methodConfig.parameters[key];\n if (\n element.paramType === 'Path' &&\n _.isString(element.paramName) &&\n element.paramName.trim().length > 0\n ) {\n paramsPathConcatedPath += `/${element.paramName}/:${element.paramName}`;\n }\n }\n }\n methodConfig.path = `/${propertyKey}${paramsPathConcatedPath}`;\n } else {\n methodConfig.path = path;\n }\n\n methodConfig.descriptor = descriptor;\n methodConfig.global = pathIsGlobal;\n methodConfig.contentType = overrideContentType;\n methodConfig.responseType = overridResponseType;\n Reflect.defineMetadata(\n Symbols.metadata.options.controllerMethod,\n methodConfig,\n target.constructor,\n propertyKey,\n );\n\n};\n\nexport interface TaonHttpDecoratorOptions {\n path?: string;\n pathIsGlobal?: boolean;\n overrideContentType?: CoreModels.ContentType;\n overridResponseType?: ModelsNg2Rest.ResponseTypeAxios;\n}\n\nexport function GET(\n pathOrOptions?: string | TaonHttpDecoratorOptions,\n pathIsGlobal = false,\n) {\n return function (\n target: any,\n propertyKey: string,\n descriptor: PropertyDescriptor,\n ) {\n metaReq(\n 'get',\n pathOrOptions as string,\n target,\n propertyKey,\n descriptor,\n pathOrOptions,\n pathIsGlobal,\n );\n };\n}\n\nexport function HEAD(\n pathOrOptions?: string | TaonHttpDecoratorOptions,\n pathIsGlobal = false,\n) {\n return function (\n target: any,\n propertyKey: string,\n descriptor: PropertyDescriptor,\n ) {\n metaReq(\n 'head',\n pathOrOptions as string,\n target,\n propertyKey,\n descriptor,\n pathOrOptions,\n pathIsGlobal,\n );\n };\n}\n\nexport function POST(\n pathOrOptions?: string | TaonHttpDecoratorOptions,\n pathIsGlobal = false,\n) {\n return function (\n target: any,\n propertyKey: string,\n descriptor: PropertyDescriptor,\n ) {\n metaReq(\n 'post',\n pathOrOptions as string,\n target,\n propertyKey,\n descriptor,\n pathOrOptions,\n pathIsGlobal,\n );\n };\n}\n\nexport function PUT(\n pathOrOptions?: string | TaonHttpDecoratorOptions,\n pathIsGlobal = false,\n) {\n return function (\n target: any,\n propertyKey: string,\n descriptor: PropertyDescriptor,\n ) {\n metaReq(\n 'put',\n pathOrOptions as string,\n target,\n propertyKey,\n descriptor,\n pathOrOptions,\n pathIsGlobal,\n );\n };\n}\n\nexport function PATCH(\n pathOrOptions?: string | TaonHttpDecoratorOptions,\n pathIsGlobal = false,\n) {\n return function (\n target: any,\n propertyKey: string,\n descriptor: PropertyDescriptor,\n ) {\n metaReq(\n 'patch',\n pathOrOptions as string,\n target,\n propertyKey,\n descriptor,\n pathOrOptions,\n pathIsGlobal,\n );\n };\n}\n\nexport function DELETE(\n pathOrOptions?: string | TaonHttpDecoratorOptions,\n pathIsGlobal = false,\n) {\n return function (\n target: any,\n propertyKey: string,\n descriptor: PropertyDescriptor,\n ) {\n metaReq(\n 'delete',\n pathOrOptions as string,\n target,\n propertyKey,\n descriptor,\n pathOrOptions,\n pathIsGlobal,\n );\n };\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/decorators/http/http-methods-decorators.ts","\n\nimport { Models } from '../../models';\nimport { Symbols } from '../../symbols';\n\nfunction metaParam(\n param: Models.Http.Rest.ParamType,\n name: string,\n expire: number,\n defaultValue = undefined,\n target: Function,\n propertyKey: string | symbol,\n parameterIndex: number,\n) {\n let methodConfig: Models.MethodConfig = Reflect.getMetadata(\n Symbols.metadata.options.controllerMethod,\n target.constructor,\n propertyKey,\n );\n if (!methodConfig) {\n methodConfig = new Models.MethodConfig();\n Reflect.defineMetadata(\n Symbols.metadata.options.controllerMethod,\n methodConfig,\n target.constructor,\n propertyKey,\n );\n }\n\n const nameKey = name ? name : param;\n const p = (methodConfig.parameters[nameKey] = !methodConfig.parameters[\n nameKey\n ]\n ? new Models.ParamConfig()\n : methodConfig.parameters[nameKey]);\n p.index = parameterIndex;\n p.paramName = name;\n p.paramType = param;\n p.defaultType = defaultValue;\n p.expireInSeconds = expire;\n Reflect.defineMetadata(\n Symbols.metadata.options.controllerMethod,\n methodConfig,\n target.constructor,\n propertyKey,\n );\n\n}\n\nexport function Path(name: string) {\n return function (\n target: any,\n propertyKey: string | symbol,\n parameterIndex: number,\n ) {\n metaParam('Path', name, undefined, {}, target, propertyKey, parameterIndex);\n };\n}\n\nexport function Query(name?: string) {\n return function (\n target: any,\n propertyKey: string | symbol,\n parameterIndex: number,\n ) {\n metaParam(\n 'Query',\n name,\n undefined,\n {},\n target,\n propertyKey,\n parameterIndex,\n );\n };\n}\n\nexport function Cookie(name: string, expireInSecond: number = 3600) {\n return function (\n target: any,\n propertyKey: string | symbol,\n parameterIndex: number,\n ) {\n metaParam(\n 'Cookie',\n name,\n expireInSecond,\n {},\n target,\n propertyKey,\n parameterIndex,\n );\n };\n}\n\nexport function Header(name?: string) {\n return function (\n target: any,\n propertyKey: string | symbol,\n parameterIndex: number,\n ) {\n metaParam(\n 'Header',\n name,\n undefined,\n {},\n target,\n propertyKey,\n parameterIndex,\n );\n };\n}\n\nexport function Body(name?: string) {\n return function (\n target: any,\n propertyKey: string | symbol,\n parameterIndex: number,\n ) {\n metaParam('Body', name, undefined, {}, target, propertyKey, parameterIndex);\n };\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/decorators/http/http-params-decorators.ts","\n\nimport * as methods from './http-methods-decorators';\nimport * as params from './http-params-decorators';\nimport { Models } from 'ng2-rest/websql';\n\nexport namespace Http {\n export import GET = methods.GET;\n export import POST = methods.POST;\n export import PUT = methods.PUT;\n export import DELETE = methods.DELETE;\n export import PATCH = methods.PATCH;\n export import HEAD = methods.HEAD;\n export import Response = Models.HttpResponse;\n export namespace Param {\n export import Query = params.Query;\n export import Path = params.Path;\n export import Body = params.Body;\n export import Cookie = params.Cookie;\n export import Header = params.Header;\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/decorators/http/http-decorators.ts","\n\nimport { ClassHelpers } from '../../helpers/class-helpers';\nimport { Symbols } from '../../symbols';\nimport { Models } from '../../models';\n\nexport function TaonController(options?: TaonControllerOptions) {\n return function (constructor: Function) {\n ClassHelpers.setName(constructor, options?.className);\n Reflect.defineMetadata(\n Symbols.metadata.options.controller,\n options,\n constructor,\n );\n Reflect.defineMetadata(\n Symbols.metadata.className,\n options?.className || constructor.name,\n constructor,\n );\n };\n}\n\nexport class TaonControllerOptions extends Models.DecoratorAbstractOpt {\n /**\n * typeorm realtime subscribtion // TODO disabled for now, does not make sense ?s\n */\n realtime?: boolean;\n /**\n * override default path for controller api\n */\n path?: string;\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/decorators/classes/controller-decorator.ts","\n\n\nimport { Helpers, _ } from 'tnp-core/websql';\nimport { EndpointContext } from '../endpoint-context';\nimport { Symbols } from '../symbols';\nimport { ClassHelpers } from '../helpers/class-helpers';\nimport type { BaseRepository } from './base-repository';\nimport { BaseClass } from './base-class';\n\n\nexport class BaseInjector<CloneT extends BaseClass = any> {\n /**\n * for proxy purposes\n */\n getOriginalPrototype: () => any;\n /**\n * for proxy purposes\n */\n getOriginalConstructor: () => any;\n\n\n /**\n * class initialization hook\n * taon after class instace creation\n */\n async _() {\n const reposToInit = this.__repositories_to_init__;\n for (const repo of reposToInit) {\n await repo.__init(this);\n }\n }\n\n\n\n /**\n * @deprecated use ctx instead\n * Current endpoint context\n */\n get __endpoint_context__() {\n return this[Symbols.ctxInClassOrClassObj] as EndpointContext;\n }\n\n /**\n * get current endpoint context\n */\n get ctx() {\n return this.__endpoint_context__;\n }\n\n\n\n\n\n /**\n * inject crud repo for entity\n */\n injectRepo<T>(entityForCrud: new (...args: any[]) => T): BaseRepository<T> {\n const repoProxy = this.__inject(void 0, {\n localInstance: true,\n resolveClassFromContext: 'BaseRepository',\n locaInstanceConstructorArgs: [() => entityForCrud],\n });\n this.__repositories_to_init__.push(repoProxy as any);\n return repoProxy as any;\n }\n\n\n\n injectCustomRepository<T>(\n cutomRepositoryClass: new (...args: any[]) => T,\n ): T {\n const repoProxy = this.__inject<T>(cutomRepositoryClass, {\n localInstance: true,\n locaInstanceConstructorArgs: [\n () => cutomRepositoryClass.prototype.entityClassResolveFn(),\n ],\n });\n this.__repositories_to_init__.push(repoProxy as any);\n return repoProxy;\n }\n\n\n\n /**\n * aliast to .injectRepository()\n */\n injectCustomRepo<T>(cutomRepositoryClass: new (...args: any[]) => T): T {\n const repoProxy = this.injectCustomRepository<T>(cutomRepositoryClass);\n this.__repositories_to_init__.push(repoProxy as any);\n return repoProxy;\n }\n\n\n\n injectController<T>(ctor: new (...args: any[]) => T): T {\n return this.__inject<T>(ctor, { localInstance: false });\n }\n\n\n\n /**\n * aliast to .injectController()\n */\n injectSubscriber<T>(ctor: new (...args: any[]) => T): T {\n return this.__inject<T>(ctor, { localInstance: false });\n }\n\n\n\n /**\n * aliast to .injectController()\n */\n injectCtrl<T>(ctor: new (...args: any[]) => T): T {\n return this.injectController<T>(ctor);\n }\n\n\n\n /**\n * global provider available in every context\n */\n injectGlobalProvider<T>(ctor: new (...args: any[]) => T): T {\n return this.__inject<T>(ctor, { localInstance: false });\n }\n\n\n\n /**\n * context scoped provider\n * TODO\n */\n injectContextProvider<T>(ctor: new (...args: any[]) => T): T {\n return this.__inject<T>(ctor, { localInstance: false });\n }\n\n\n /**\n * Repositories to init (by controller)\n */\n protected __repositories_to_init__ = [] as BaseRepository<any>[];\n\n\n /**\n * Inject: Controllers, Providers, Repositories, Services, etc.\n * TODO addd nest js injecting\n */\n private __inject<T>(\n ctor: new (...args: any[]) => T,\n options?: {\n /**\n * (repositories are ONLY/ALWAYS local instances)\n * If true, then local instance will be created\n * controllers, providers can be local or global\n */\n localInstance: boolean;\n resolveClassFromContext?: string;\n locaInstanceConstructorArgs?: ConstructorParameters<typeof ctor>;\n },\n ): T {\n if (!options) {\n options = {} as any;\n }\n\n const contextClassInstance = this;\n return new Proxy(\n {},\n {\n get: (__, propName) => {\n const contextFromClass: EndpointContext =\n ctor && ctor[Symbols.ctxInClassOrClassObj];\n\n const resultContext: EndpointContext = contextFromClass\n ? contextFromClass\n : this.__endpoint_context__;\n\n if (options.resolveClassFromContext) {\n const resolvedClass = resultContext.getClassFunByClassName(\n options.resolveClassFromContext,\n );\n ctor = resolvedClass as any;\n }\n\n if (resultContext) {\n var instance: T = resultContext.inject(ctor, {\n ...options,\n contextClassInstance,\n });\n if (!instance) {\n throw new Error(\n `Not able to inject \"${\n ClassHelpers.getName(ctor) || ctor.name\n }\" inside ` +\n `property \"${propName?.toString()}\" on class \"${ClassHelpers.getName(\n this,\n )}\".\n\n Please add \"${\n ClassHelpers.getName(ctor) || ctor.name\n }\" to (entites or contorllers or providers or repositories)\n\n `,\n );\n }\n\n const result =\n typeof instance[propName] === 'function'\n ? instance[propName].bind(instance)\n : instance[propName];\n\n\n return result;\n }\n\n\n\n },\n set: (__, propName, value) => {\n const contextFromClass = ctor && ctor[Symbols.ctxInClassOrClassObj];\n const resultContext: EndpointContext = contextFromClass\n ? contextFromClass\n : this.__endpoint_context__;\n\n if (options.resolveClassFromContext) {\n const resolvedClass = resultContext.getClassFunByClassName(\n options.resolveClassFromContext,\n );\n ctor = resolvedClass as any;\n }\n\n if (resultContext) {\n var instance: T = resultContext.inject(ctor, {\n ...options,\n contextClassInstance,\n });\n if (!instance) {\n const classNameNotResolved =\n ClassHelpers.getName(ctor) || ctor.name;\n throw new Error(\n `Not able to inject \"${classNameNotResolved}\" inside ` +\n `property \"${propName?.toString()}\" on class \"${ClassHelpers.getName(\n this,\n )}\".\n\n Please add \"${\n ClassHelpers.getName(ctor) || ctor.name\n }\" to (entites or contorllers or providers or repositories)\n\n `,\n );\n }\n instance[propName] = value;\n }\n return true;\n },\n },\n ) as T;\n }\n\n\n\n\n\n public clone(override: Partial<CloneT>): CloneT {\n const classFn = ClassHelpers.getClassFnFromObject(this);\n const result = _.merge(new classFn(), _.merge(_.cloneDeep(this), override));\n\n return result;\n }\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/base-classes/base-injector.ts","\n\nimport { TaonController } from '../decorators/classes/controller-decorator';\nimport { BaseInjector } from './base-injector';\n\n@TaonController({ className: 'BaseController' })\nexport class BaseController extends BaseInjector {\n /**\n * init example data for db\n */\n initExampleDbData(): Promise<any> {\n return void 0;\n }\n\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/base-classes/base-controller.ts","\n\n\nimport { Symbols } from '../symbols';\nimport { BaseController } from './base-controller';\nimport { BaseRepository } from './base-repository';\nimport { GET, PUT, DELETE, POST, HEAD, PATCH, } from '../decorators/http/http-methods-decorators';/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n\nimport { Query, Path, Body } from '../decorators/http/http-params-decorators';\nimport { MySqlQuerySource } from 'taon-type-sql/websql';\nimport { Models } from '../models';\nimport { Helpers, _ } from 'tnp-core/websql';\nimport { TaonController, TaonControllerOptions, } from '../decorators/classes/controller-decorator';/* */\n/* */\n/* */\n\nimport { ClassHelpers } from '../helpers/class-helpers';\n\nimport { Validators } from '../validators';\nimport { TaonEntityOptions } from '../decorators/classes/entity-decorator';\n\n\n/**\n * Please override property entityClassFn with entity class.\n */\n@TaonController({ className: 'BaseCrudController' })\nexport abstract class BaseCrudController<Entity> extends BaseController {\n\n protected db?: BaseRepository<Entity>;\n\n /**\n * Please provide entity as class propery entityClassFn:\n * @returns class function\n *\n */\n abstract entityClassResolveFn: () => any;\n\n\n\n async _() {\n if (!_.isFunction(this.entityClassResolveFn)) {\n Helpers.warn(\n `Skipping initing CRUD controller ${ClassHelpers.getName(\n this,\n )} because entityClassResolveFn is not provided.`,\n );\n return;\n }\n\n let entityClassFn = this.entityClassResolveFn();\n this.db = this.injectRepo(entityClassFn);\n\n if (entityClassFn) {\n const configEntity = Reflect.getMetadata(\n Symbols.metadata.options.entity,\n ClassHelpers.getClassFnFromObject(this),\n ) as TaonEntityOptions;\n if (configEntity?.createTable === false) {\n Helpers.warn(\n `Table for entity ${ClassHelpers.getName(\n entityClassFn,\n )} will not be created. Crud will not work properly.`,\n );\n }\n } else {\n Helpers.error(`Entity class not provided for controller ${ClassHelpers.getName(\n this,\n )}.\n\n Please provide entity as class propery entityClassFn:\n\n class ${ClassHelpers.getName(this)} extends BaseCrudController<Entity> {\n\n entityClassResolveFn = ()=> MyEntityClass;\n\n }\n\n `);\n }\n await super._();\n }\n\n\n\n @GET(`/:id/property/:property`)\n bufforedChanges(\n @Path(`id`) id: number | string,\n @Path(`property`) property: string,\n @Query('alreadyLength') alreadyLength?: number,\n ): Models.Http.Response<string | any[]> {\n\n return async (request, response) => {\n const model = await this.db.getBy(id);\n if (model === void 0) {\n return;\n }\n Validators.preventUndefinedModel(model, id);\n let value = model[property];\n let result: any;\n if (_.isString(value) || _.isArray(value)) {\n result = (value as string).slice(alreadyLength);\n }\n\n return result;\n };\n\n }\n\n\n\n @GET()\n pagination(\n @Query('pageNumber') pageNumber: number = 1,\n @Query('pageSize') pageSize: number = 10,\n @Query('search') search: string = '',\n ): Models.Http.Response<Entity[]> {\n\n return async (request, response) => {\n if (this.db.repositoryExists) {\n const query = {\n page: pageNumber,\n take: pageSize,\n keyword: search,\n };\n\n\n\n\n const take = query.take || 10;\n const page = query.page || 1;\n const skip = (page - 1) * take;\n const keyword = query.keyword || '';\n\n const [result, total] = await this.db.findAndCount({\n\n\n take: take,\n skip: skip,\n });\n\n response?.setHeader(Symbols.old.X_TOTAL_COUNT, total);\n\n\n\n\n\n\n\n\n\n return result as Entity[];\n }\n return [];\n };\n\n }\n\n\n\n @GET()\n getAll(): Models.Http.Response<Entity[]> {\n\n return async (request, response) => {\n if (this.db.repositoryExists) {\n const { models, totalCount } = await this.db.getAll();\n response?.setHeader(Symbols.old.X_TOTAL_COUNT, totalCount);\n return models;\n }\n return [];\n };\n\n }\n\n\n\n @GET(`/:id`)\n getBy(@Path(`id`) id: number | string): Models.Http.Response<Entity> {\n\n return async () => {\n const model = await this.db.getBy(id);\n return model;\n };\n\n }\n\n\n\n @PUT(`/:id`)\n updateById(\n @Path(`id`) id: number | string,\n @Body() item: Entity,\n ): Models.Http.Response<Entity> {\n\n\n return async () => {\n const model = await this.db.updateById(id, item as any);\n return model;\n };\n\n }\n\n\n\n @PATCH(`/:id`)\n patchById(\n @Path(`id`) id: number | string,\n @Body() item: Entity,\n ): Models.Http.Response<Entity> {\n\n\n return async () => {\n const model = await this.db.updateById(id, item as any);\n return model;\n };\n\n }\n\n\n\n @PUT()\n bulkUpdate(@Body() items: Entity[]): Models.Http.Response<Entity[]> {\n\n return async () => {\n if (!Array.isArray(items) || items?.length === 0) {\n return [];\n }\n const { models } = await this.db.bulkUpdate(items);\n return models;\n };\n\n }\n\n\n\n @DELETE(`/:id`)\n deleteById(@Path(`id`) id: number): Models.Http.Response<Entity> {\n\n return async () => {\n const model = await this.db.deleteById(id);\n return model;\n };\n\n }\n\n\n\n @DELETE(`/bulkDelete/:ids`)\n bulkDelete(\n @Path(`ids`) ids: (number | string)[],\n ): Models.Http.Response<(number | string | Entity)[]> {\n\n return async () => {\n const models = await this.db.bulkDelete(ids);\n return models;\n };\n\n }\n\n\n\n @POST()\n create(@Body() item: Entity): Models.Http.Response<Entity> {\n\n return async () => {\n const model = await this.db.create(item as any);\n return model as Entity;\n };\n\n }\n\n\n\n @POST()\n bulkCreate(@Body() items: Entity): Models.Http.Response<Entity[]> {\n\n return async () => {\n const models = await this.db.bulkCreate(items as any);\n return models as Entity[];\n };\n\n }\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/base-classes/base-crud-controller.ts","\n\n\nimport { Helpers, _ } from 'tnp-core/websql';\nimport { EndpointContext } from '../endpoint-context';\nimport { Symbols } from '../symbols';\nimport { ClassHelpers } from '../helpers/class-helpers';\nimport type { BaseRepository } from './base-repository';\n\nimport { inject } from '@angular/core';\n\n\n\nexport class BaseClass<CloneT extends BaseClass = any> {\n\n /**\n * class initialization hook\n * taon after class instace creation\n */\n async _() {}\n\n\n\n public clone(override: Partial<CloneT>): CloneT {\n const classFn = ClassHelpers.getClassFnFromObject(this);\n const result = _.merge(new classFn(), _.merge(_.cloneDeep(this), override));\n\n return result;\n }\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/base-classes/base-class.ts","\n\n\nimport { Entity } from 'taon-typeorm/websql';\n\nimport { EndpointContext } from '../endpoint-context';\nimport { Symbols } from '../symbols';\nimport { BaseClass } from './base-class';\n\nlet EntityDecorator = () => {\n return (target: any) => {};\n};\n\n\nEntityDecorator = Entity;\n\n\n@EntityDecorator()\nexport abstract class BaseEntity<\n /**\n * type for cloning\n */\n CloneT extends BaseClass = any,\n> extends BaseClass<CloneT> {}\n\n ;({}); // @--end-of-file-for-module=taon lib/base-classes/base-entity.ts","\n\n\nimport * as tsorm from 'taon-typeorm/websql';\n\n\n\nexport namespace Orm {\n\n export const Repository = tsorm.Repository;\n export import Connection = tsorm.Connection;\n export namespace ListenEvent {\n export import AfterInsert = tsorm.AfterInsert;\n export import AfterLoad = tsorm.AfterLoad;\n export import AfterRecover = tsorm.AfterRecover;\n export import AfterRemove = tsorm.AfterRemove;\n export import AfterSoftRemove = tsorm.AfterSoftRemove;\n export import AfterUpdate = tsorm.AfterUpdate;\n export import BeforeInsert = tsorm.BeforeInsert;\n export import BeforeRecover = tsorm.BeforeRecover;\n export import BeforeRemove = tsorm.BeforeRemove;\n export import BeforeSoftRemove = tsorm.BeforeSoftRemove;\n export import BeforeUpdate = tsorm.BeforeUpdate;\n }\n\n export namespace Tree {\n export import Children = tsorm.TreeChildren;\n export import Parent = tsorm.TreeParent;\n }\n export namespace Column {\n export import Generated = tsorm.PrimaryGeneratedColumn;\n export import Primary = tsorm.PrimaryColumn;\n export import Index = tsorm.Index;\n export import CreateDate = tsorm.CreateDateColumn;\n export import UpdateDate = tsorm.UpdateDateColumn;\n export import DeleteDate = tsorm.DeleteDateColumn;\n export import Custom = tsorm.Column;\n\n /**\n * 100 characters varchar\n */\n export const String = () =>\n tsorm.Column({ type: 'varchar', length: 100, nullable: true });\n\n export const Number = () =>\n tsorm.Column({ type: 'int', nullable: true });\n\n export const DecimalNumber = () =>\n tsorm.Column({ type: 'float', nullable: true });\n\n\n export const SimpleJson = () =>\n tsorm.Column({ type: 'simple-json', nullable: true });\n\n export const Boolean = (defaultValue: boolean) =>\n tsorm.Column({ type: 'boolean', default: defaultValue });\n\n\n\n export import Version = tsorm.VersionColumn;\n export import Virtual = tsorm.VirtualColumn;\n }\n\n export namespace Join {\n export import Table = tsorm.JoinTable;\n export import Column = tsorm.JoinColumn;\n }\n export namespace Relation {\n export import OneToMany = tsorm.OneToMany;\n export import OneToOne = tsorm.OneToOne;\n export import ManyToMany = tsorm.ManyToMany;\n export import ManyToOne = tsorm.ManyToOne;\n }\n\n}\n\n\n\n ;({}); // @--end-of-file-for-module=taon lib/orm.ts","\n\n\nimport { Entity } from 'taon-typeorm/websql';\n\nimport { Orm } from '../orm';\nimport { BaseEntity } from './base-entity';\nimport type { BaseClass } from './base-class';\n\n\nlet EntityDecorator = () => {\n return (target: any) => {};\n};\n\n\nEntityDecorator = Entity;\n\n\n@EntityDecorator()\nexport abstract class BaseAbstractEntity<\n CloneT extends BaseClass = any,\n> extends BaseEntity<CloneT> {\n\n @Orm.Column.Generated()\n\n id: string;\n\n\n @Orm.Column.Version()\n\n version: number;\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/base-classes/base-abstract-entity.ts","\n\nimport { ClassHelpers } from '../../helpers/class-helpers';\nimport { Symbols } from '../../symbols';\nimport { Models } from '../../models';\nimport { Repository as TypeormRepository, EntityRepository, } from 'taon-typeorm/websql';/* */\n/* */\n/* */\n\nimport { _ } from 'tnp-core/websql';\n\nexport function TaonRepository(options: TaonRepositoryOptions) {\n return function (constructor: Function) {\n Reflect.defineMetadata(\n Symbols.metadata.options.repository,\n options,\n constructor,\n );\n Reflect.defineMetadata(\n Symbols.metadata.className,\n options?.className || constructor.name,\n constructor,\n );\n ClassHelpers.setName(constructor, options?.className);\n };\n}\n\nexport class TaonRepositoryOptions<\n T = any,\n> extends Models.DecoratorAbstractOpt {}\n\n ;({}); // @--end-of-file-for-module=taon lib/decorators/classes/repository-decorator.ts","\n\n\nimport type {\n DataSource,\n DeepPartial,\n DeleteResult,\n FindManyOptions,\n FindOneOptions,\n FindOptionsWhere,\n InsertResult,\n\n RemoveOptions,\n Repository,\n SaveOptions,\n UpdateResult,\n} from 'taon-typeorm';\n\nimport type { QueryDeepPartialEntity } from 'taon-typeorm/lib/typeorm/query-builder/QueryPartialEntity';\n\nimport type { UpsertOptions } from 'taon-typeorm/lib/typeorm/repository/UpsertOptions';\n\n\n\nimport type { DataSource as DataSourceType } from 'taon-typeorm/websql';\nimport { EndpointContext } from '../endpoint-context';\nimport { Helpers } from 'tnp-core/websql';\nimport { _ } from 'tnp-core/websql';\nimport { ClassHelpers } from '../helpers/class-helpers';\nimport { MySqlQuerySource } from 'taon-type-sql/websql';\nimport { TaonRepository } from '../decorators/classes/repository-decorator';\nimport { BaseInjector } from './base-injector';\n\n\nconst INDEX_KEYS_NO_FOR_UPDATE = ['id'];\n\n@TaonRepository({ className: 'BaseRepository' })\nexport abstract class BaseRepository<\n Entity extends { id?: any },\n> extends BaseInjector {\n\n\n\n\n\n\n abstract entityClassResolveFn: () => any;\n constructor(\n\n private __entityClassResolveFn: () => any,\n ) {\n super();\n // @ts-ignore\n this.entityClassResolveFn = __entityClassResolveFn;\n }\n\n\n\n private __dbQuery: MySqlQuerySource;\n\n public get dbQuery(): MySqlQuerySource {\n\n if (!this.__dbQuery) {\n if (!this.__endpoint_context__) {\n return; // TODO\n throw new Error(\n `[BaseRepository] Context not inited for class ${ClassHelpers.getName(\n this,\n )}`,\n );\n }\n const connection = this.__endpoint_context__?.connection;\n if (!connection) {\n throw new Error(\n `[BaseRepository] Database not inited for context ${this.__endpoint_context__?.contextName}`,\n );\n }\n this.__dbQuery = new MySqlQuerySource(connection);\n }\n return this.__dbQuery;\n\n }\n\n\n\n public get connection(): DataSourceType {\n\n return this.__endpoint_context__?.connection;\n\n }\n\n\n\n\n private __repository: Repository<Entity>;\n\n protected get repository() {\n\n return this.__repository;\n\n }\n\n /**\n * target for repository\n */\n public get target(): Function {\n\n return this?.repository?.target as any;\n\n }\n\n /**\n * alias to repository\n */\n protected get repo() {\n\n return this.repository;\n\n }\n\n public get repositoryExists(): boolean {\n\n return !!this.__repository;\n\n }\n\n\n\n\n\n async __init(context?: any) {\n\n if (this.__repository) {\n return;\n }\n let entityClassFn: any = this.entityClassResolveFn();\n if (!entityClassFn) {\n Helpers.warn(\n `Entity class not provided for repository ${ClassHelpers.getName(\n this,\n )}`,\n );\n return;\n }\n const ctx: EndpointContext = this.__endpoint_context__;\n if (ctx.remoteHost) {\n return;\n }\n const connection = ctx.connection;\n\n if (!connection) {\n throw new Error(`\n\n Connection not found for context ${ctx.contextName}\n\n\n Maybe you forgot to init database ?\n\n Taon.createContext({\n ...\n database:true\n ...\n })\n\n `);\n }\n\n if (!entityClassFn) {\n Helpers.warn(\n `Entity class not found for repository ${ClassHelpers.getName(this)}`,\n );\n return;\n }\n\n this.__repository = (await connection.getRepository(\n ClassHelpers.getOrginalClass(entityClassFn),\n )) as any;\n\n\n\n\n\n\n }\n\n\n\n /**\n * Checks if entity has an id.\n * If entity composite compose ids, it will check them all.\n */\n hasId(entity: Entity): boolean {\n return this.repo.hasId(entity);\n }\n\n\n\n /**\n * Gets entity mixed id.\n */\n getId(entity: Entity): any {\n return this.repo.getId(entity);\n }\n\n\n\n /**\n Saves a given entity in the database.\n * If entity does not exist in the database then inserts, otherwise updates.\n */\n async save(\n item: Entity,\n options?: SaveOptions & {\n reload: false;\n },\n ): Promise<Entity> {\n\n let model = await this.repo.create(item);\n\n model = await this.repo.save(model, options);\n const { id } = model as any;\n\n model = await this.repo.findOne({\n where: { id } as any,\n });\n\n return model;\n\n }\n\n /**\n * alias to save\n * -> it will actuall create new entity in db\n * in oposite to typeorm create method\n */\n async create(\n item: Entity,\n options?: SaveOptions & {\n reload: false;\n },\n ): Promise<Entity> {\n return this.save(item, options);\n }\n\n async bulkSave(\n items: Entity[],\n options?: SaveOptions & {\n reload: false;\n },\n ): Promise<Entity[]> {\n\n const models = [];\n for (let index = 0; index < items.length; index++) {\n const item = items[index];\n\n const model = await this.save(item, options);\n models.push(model);\n }\n return models;\n\n }\n\n async bulkCreate(\n items: Entity[],\n options?: SaveOptions & {\n reload: false;\n },\n ): Promise<Entity[]> {\n return this.bulkSave(items, options);\n }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n /**\n * Saves all given entities in the database.\n * If entities do not exist in the database then inserts, otherwise updates.\n */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n /**\n * Merges multiple entities (or entity-like objects) into a given entity.\n */\n merge(mergeIntoEntity: Entity, ...entityLikes: Entity[]): Entity {\n return this.repo.merge(mergeIntoEntity, ...entityLikes);\n }\n\n\n\n /**\n * Creates a new entity from the given plain javascript object. If entity already exist in the database, then\n * it loads it (and everything related to it), replaces all values with the new ones from the given object\n * and returns this new entity. This new entity is actually a loaded from the db entity with all properties\n * replaced from the new object.\n *\n * Note that given entity-like object must have an entity id / primary key to find entity by.\n * Returns undefined if entity with given id was not found.\n */\n preload(entityLike: Entity): Promise<Entity | undefined> {\n return this.repo.preload(entityLike);\n }\n\n\n\n\n /**\n * Removes a given entities from the database.\n */\n async remove(idOrEntity: number | string | Entity): Promise<Entity> {\n\n if (_.isObject(idOrEntity)) {\n idOrEntity = (idOrEntity as Entity).id;\n }\n const deletedEntity = await this.repo.findOne({\n where: { id: idOrEntity } as any,\n });\n\n const idCopy = deletedEntity.id;\n await this.repo.remove(deletedEntity);\n\n deletedEntity.id = idCopy;\n return deletedEntity;\n\n }\n\n /**\n * alias to remove\n */\n async delete(idOrEntity: number | string | Entity): Promise<Entity> {\n return this.remove(idOrEntity);\n }\n\n /**\n * alias to removeById\n */\n async deleteById(id: number | string): Promise<Entity> {\n return this.remove(id);\n }\n async bulkRemove(\n idsOrEntities: (number | string | Entity)[],\n ): Promise<Entity[]> {\n\n idsOrEntities = idsOrEntities.map(id => {\n return _.isObject(id) ? (id as Entity).id : id;\n });\n\n const models = [];\n for (let index = 0; index < idsOrEntities.length; index++) {\n const id = idsOrEntities[index];\n const model = await this.remove(id);\n models.push(model);\n }\n return models;\n\n }\n\n async bulkDelete(ids: (number | string | Entity)[]): Promise<Entity[]> {\n return this.bulkRemove(ids);\n }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n /**\n * Records the delete date of all given entities.\n */\n softRemove<T extends Entity>(\n entities: T[],\n options: SaveOptions & {\n reload: false;\n },\n ): Promise<T[]>;\n /**\n * Records the delete date of all given entities.\n */\n softRemove<T extends Entity>(\n entities: T[],\n options?: SaveOptions,\n ): Promise<(T & Entity)[]>;\n /**\n * Records the delete date of a given entity.\n */\n softRemove<T extends Entity>(\n entity: T,\n options: SaveOptions & {\n reload: false;\n },\n ): Promise<T>;\n /**\n * Records the delete date of a given entity.\n */\n softRemove<T extends Entity>(\n entity: T,\n options?: SaveOptions,\n ): Promise<T & Entity> {\n return this.repo.softRemove(entity, options);\n }\n\n\n\n /**\n * Recovers all given entities in the database.\n */\n recover<T extends Entity>(\n entities: T[],\n options: SaveOptions & {\n reload: false;\n },\n ): Promise<T[]>;\n /**\n * Recovers all given entities in the database.\n */\n recover<T extends Entity>(\n entities: T[],\n options?: SaveOptions,\n ): Promise<(T & Entity)[]>;\n /**\n * Recovers a given entity in the database.\n */\n recover<T extends Entity>(\n entity: T,\n options: SaveOptions & {\n reload: false;\n },\n ): Promise<T>;\n /**\n * Recovers a given entity in the database.\n */\n recover<T extends Entity>(\n entity: T,\n options?: SaveOptions,\n ): Promise<T & Entity> {\n return this.repo.recover(entity, options);\n }\n\n\n\n /**\n * Inserts a given entity into the database.\n * Unlike save method executes a primitive operation without cascades, relations and other operations included.\n * Executes fast and efficient INSERT query.\n * Does not check if entity exist in the database, so query will fail if duplicate entity is being inserted.\n */\n insert(\n entity: QueryDeepPartialEntity<Entity> | QueryDeepPartialEntity<Entity>[],\n ): Promise<InsertResult> {\n return this.repo.insert(entity);\n }\n\n\n\n async update(item: Entity) {\n\n const { id } = item as any;\n return await this.updateById(id, item);\n\n }\n\n async updateById(id: number | string, item: Entity) {\n\n const allowedPropsToUpdate = [];\n for (const key in item) {\n if (\n _.isObject(item) &&\n item.hasOwnProperty(key) &&\n typeof item[key] !== 'object' &&\n !_.isUndefined(\n this.repo.metadata.ownColumns.find(c => c.propertyName === key),\n )\n ) {\n allowedPropsToUpdate.push(key);\n }\n }\n\n for (let i = 0; i < allowedPropsToUpdate.length; i++) {\n const key: string = allowedPropsToUpdate[i];\n if (!INDEX_KEYS_NO_FOR_UPDATE.includes(key.toLowerCase())) {\n\n const toSet = item[key];\n\n\n await this.repo.update(\n {\n id,\n } as any,\n {\n [key]: toSet,\n } as any,\n );\n\n\n\n\n\n }\n }\n let model = await this.repo.findOne({\n where: { id } as any,\n });\n\n return model;\n\n }\n async bulkUpdate(items: Entity[]) {\n\n const models = [];\n for (let index = 0; index < items.length; index++) {\n const item = items[index];\n const { id } = item as any; // TOOD\n const model = await this.updateById(id, item);\n models.push(model);\n }\n return { models };\n\n }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n /**\n * Inserts a given entity into the database, unless a unique constraint conflicts then updates the entity\n * Unlike save method executes a primitive operation without cascades, relations and other operations included.\n * Executes fast and efficient INSERT ... ON CONFLICT DO UPDATE/ON DUPLICATE KEY UPDATE query.\n */\n upsert(\n entityOrEntities:\n | QueryDeepPartialEntity<Entity>\n | QueryDeepPartialEntity<Entity>[],\n conflictPathsOrOptions: string[] | UpsertOptions<Entity>,\n ): Promise<InsertResult> {\n return this.repo.upsert(entityOrEntities, conflictPathsOrOptions);\n }\n\n\n\n /**\n * Records the delete date of entities by a given criteria.\n * Unlike save method executes a primitive operation without cascades, relations and other operations included.\n * Executes fast and efficient SOFT-DELETE query.\n * Does not check if entity exist in the database.\n */\n softDelete(\n criteria:\n | string\n | string[]\n | number\n | number[]\n | Date\n | Date[]\n\n\n | FindOptionsWhere<Entity>,\n ): Promise<UpdateResult> {\n return this.repo.softDelete(criteria);\n }\n\n\n\n /**\n * Restores entities by a given criteria.\n * Unlike save method executes a primitive operation without cascades, relations and other operations included.\n * Executes fast and efficient SOFT-DELETE query.\n * Does not check if entity exist in the database.\n */\n restore(\n criteria:\n | string\n | string[]\n | number\n | number[]\n | Date\n | Date[]\n\n\n | FindOptionsWhere<Entity>,\n ): Promise<UpdateResult> {\n return this.repo.restore(criteria);\n }\n\n\n\n /**\n * Counts entities that match given options.\n * Useful for pagination.\n */\n count(options?: FindManyOptions<Entity>): Promise<number> {\n return this.repo.count(options);\n }\n\n\n\n /**\n * Counts entities that match given conditions.\n * Useful for pagination.\n */\n countBy(\n where: FindOptionsWhere<Entity> | FindOptionsWhere<Entity>[],\n ): Promise<number> {\n return this.repo.countBy(where);\n }\n\n\n\n /**\n * Finds entities that match given find options.\n */\n find(options?: FindManyOptions<Entity>): Promise<Entity[]> {\n return this.repo.find(options);\n }\n\n\n\n /**\n * Finds entities that match given find options.\n */\n findBy(\n where: FindOptionsWhere<Entity> | FindOptionsWhere<Entity>[],\n ): Promise<Entity[]> {\n return this.repo.findBy(where);\n }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n //\n /**\n * Finds entities that match given find options.\n * Also counts all entities that match given conditions,\n * but ignores pagination settings (from and take options).\n */\n findAndCount(options?: FindManyOptions<Entity>): Promise<[Entity[], number]> {\n return this.repo.findAndCount(options);\n }\n\n\n\n /**\n * Finds entities that match given WHERE conditions.\n * Also counts all entities that match given conditions,\n * but ignores pagination settings (from and take options).\n */\n findAndCountBy(\n where: FindOptionsWhere<Entity> | FindOptionsWhere<Entity>[],\n ): Promise<[Entity[], number]> {\n return this.repo.findAndCountBy(where);\n }\n\n\n\n /**\n * Finds entities with ids.\n * Optionally find options or conditions can be applied.\n *\n * @deprecated use `findBy` method instead in conjunction with `In` operator, for example:\n *\n * .findBy({\n * id: In([1, 2, 3])\n * })\n */\n findByIds(ids: any[]): Promise<Entity[]> {\n return this.repo.findByIds(ids);\n }\n\n\n\n /**\n * Finds first entity by a given find options.\n * If entity was not found in the database - returns null.\n */\n findOne(options: FindOneOptions<Entity>): Promise<Entity | null> {\n return this.repo.findOne(options);\n }\n\n\n\n /**\n * Finds first entity that matches given where condition.\n * If entity was not found in the database - returns null.\n */\n findOneBy(\n where: FindOptionsWhere<Entity> | FindOptionsWhere<Entity>[],\n ): Promise<Entity | null> {\n return this.repo.findOneBy(where);\n }\n\n\n\n /**\n * Finds first entity that matches given id.\n * If entity was not found in the database - returns null.\n *\n * @deprecated use `findOneBy` method instead in conjunction with `In` operator, for example:\n *\n * .findOneBy({\n * id: 1 // where \"id\" is your primary column name\n * })\n */\n findOneById(\n id: number | string | Date,\n\n ): Promise<Entity | null> {\n return this.repo.findOneById(id);\n }\n\n\n\n /**\n * Finds first entity by a given find options.\n * If entity was not found in the database - rejects with error.\n */\n findOneOrFail(options: FindOneOptions<Entity>): Promise<Entity> {\n return this.repo.findOneOrFail(options);\n }\n\n\n\n /**\n * Finds first entity that matches given where condition.\n * If entity was not found in the database - rejects with error.\n */\n findOneByOrFail(\n where: FindOptionsWhere<Entity> | FindOptionsWhere<Entity>[],\n ): Promise<Entity> {\n return this.repo.findOneByOrFail(where);\n }\n\n\n\n /**\n * Executes a raw SQL query and returns a raw database results.\n * Raw query execution is supported only by relational databases (MongoDB is not supported).\n */\n query(query: string, parameters?: any[]): Promise<any> {\n return this.repo.query(query, parameters);\n }\n\n\n\n /**\n * Clears all the data from the given table/collection (truncates/drops it).\n *\n * Note: this method uses TRUNCATE and may not work as you expect in transactions on some platforms.\n * @see https://stackoverflow.com/a/5972738/925151\n */\n clear(): Promise<void> {\n return this.repo.clear();\n }\n\n\n\n /**\n * Increments some column by provided value of the entities matched given conditions.\n */\n increment(\n conditions: FindOptionsWhere<Entity>,\n propertyPath: string,\n value: number | string,\n ): Promise<UpdateResult> {\n return this.repo.increment(conditions, propertyPath, value);\n }\n\n\n\n /**\n * Decrements some column by provided value of the entities matched given conditions.\n */\n decrement(\n conditions: FindOptionsWhere<Entity>,\n propertyPath: string,\n value: number | string,\n ): Promise<UpdateResult> {\n return this.repo.decrement(conditions, propertyPath, value);\n }\n\n\n\n /**\n * @deprecated use findAndCount instead\n */\n async getAll() {\n\n\n\n\n\n\n const totalCount = await this.repo.count();\n const models = await this.repo.find();\n\n\n return { models, totalCount };\n\n }\n\n\n\n async getBy(id: number | string): Promise<Entity> {\n\n const model = await await this.repo.findOne({\n where: { id } as any,\n });\n\n return model;\n\n }\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/base-classes/base-repository.ts","\n\nimport { BaseInjector } from './base-injector';\n\nexport class BaseProvider extends BaseInjector {}\n\n ;({}); // @--end-of-file-for-module=taon lib/base-classes/base-provider.ts","\n\nimport { Helpers } from 'tnp-core/websql';\n\nexport const globalPublicStorage = Helpers.isBrowser ? window : global;\n\n ;({}); // @--end-of-file-for-module=taon lib/storage.ts","\n\n\n\nimport { Stor } from 'taon-storage/websql';\nimport { Helpers, _ } from 'tnp-core/websql';\nimport { Subject, take, takeUntil, tap } from 'rxjs';\nimport type { TaonAdminModeConfigurationComponent } from './taon-admin-mode-configuration.component';\nimport { globalPublicStorage } from '../../storage';\nimport { config } from 'tnp-config/websql';\nimport { Injectable } from '@angular/core';\n\n\nconst ENV = Helpers.isBrowser ? window['ENV'] : global['ENV'];\n\n@Injectable({ providedIn: 'root' })\nexport class TaonAdmin {\n public scrollableEnabled = false; // TOOD false by default\n\n\n private constructor() {\n\n this.scrollableEnabled = !!ENV?.useGlobalNgxScrollbar;\n }\n public static get Instance(): TaonAdmin {\n if (!globalPublicStorage[config.frameworkNames.productionFrameworkName]) {\n globalPublicStorage[config.frameworkNames.productionFrameworkName] = new TaonAdmin();\n }\n return globalPublicStorage[config.frameworkNames.productionFrameworkName];\n }\n\n\n\n public cmp: TaonAdminModeConfigurationComponent;\n private onEditMode = new Subject();\n onEditMode$ = this.onEditMode.asObservable();\n\n\n\n // @ts-ignore\n @Stor.property.in.localstorage.for(TaonAdmin).withDefaultValue(false)\n public adminPanelIsOpen: boolean;\n\n\n\n // @ts-ignore\n @Stor.property.in.localstorage.for(TaonAdmin).withDefaultValue(false)\n public draggablePopupMode: boolean;\n\n\n\n // @ts-ignore\n @Stor.property.in.localstorage.for(TaonAdmin).withDefaultValue(false)\n public draggablePopupModeFullScreen: boolean;\n\n\n\n /**\n * Property used in taon\n */ // @ts-ignore\n @Stor.property.in.localstorage.for(TaonAdmin).withDefaultValue(false)\n public keepWebsqlDbDataAfterReload: boolean;\n\n\n\n setEditMode(value: boolean) {\n this.onEditMode.next(value);\n }\n\n setKeepWebsqlDbDataAfterReload(value: boolean) {\n\n\n\n this.keepWebsqlDbDataAfterReload = value;\n }\n\n enabledTabs = [];\n\n hide() {\n this.draggablePopupMode = false;\n this.adminPanelIsOpen = false;\n }\n\n show() {\n this.draggablePopupMode = false;\n this.adminPanelIsOpen = true;\n }\n\n logout() {}\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/ui/taon-admin-mode-configuration/taon-admin.service.ts","\n\nexport class DITaonContainer {\n private static instances = new Map();\n\n static resolve<T>(target: Function): T {\n if (DITaonContainer.instances.has(target)) {\n return DITaonContainer.instances.get(target);\n }\n\n\n const injections = []; // tokens.map(token => Container.inject<any>(token));\n\n const instance = new (target as any)(...injections);\n DITaonContainer.instances.set(target, instance);\n return instance;\n }\n\n static inject<T>(target: new (...args: any[]) => T): T {\n return new Proxy(\n {},\n {\n get: (_, propName) => {\n let instance: T =\n DITaonContainer.instances.get(target) ||\n DITaonContainer.resolve(target);\n return typeof instance[propName] === 'function'\n ? instance[propName].bind(instance)\n : instance[propName];\n },\n set: (_, propName, value) => {\n let instance: T =\n DITaonContainer.instances.get(target) ||\n DITaonContainer.resolve(target);\n instance[propName] = value;\n return true;\n },\n },\n ) as T;\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/dependency-injection/di-container.ts","\n\nimport { Models } from './models';\nimport { Response as ExpressResponse, Request as ExpressRequest, } from 'express';/* */\n/* */\n/* */\n\nimport { TaonHelpers } from './helpers/taon-helpers';\nimport { Helpers } from 'tnp-core/websql';\n\nexport const getResponseValue = <T>(\n response: Models.Http.Response<T>,\n options?: { req: ExpressRequest; res: ExpressResponse },\n): Promise<T> => {\n\n const { req, res } = options || {};\n return new Promise<T>(async (resolve, reject) => {\n\n const resp: Models.Http.__Response<T> = response;\n if (!response && response.send === undefined) {\n console.error('[taon] Bad response value for function');\n resolve(undefined);\n } else if (typeof response === 'function') {\n const asyncResponse: Models.Http.AsyncResponse<T> = response as any;\n try {\n const result = await asyncResponse(req, res);\n resolve(result as any);\n } catch (e) {\n console.error(e);\n console.error('[taon] Error during function call inside controller');\n Helpers.renderError(e);\n reject(e);\n }\n } else if (typeof response === 'object') {\n try {\n if (typeof response.send === 'function') {\n const result = (response as any).send(req, res) as any;\n resolve(result);\n } else {\n resolve(response.send as any);\n }\n } catch (error) {\n console.error('[taon] Bad synchonus function call ');\n Helpers.renderError(error);\n reject(error);\n }\n } else reject(`[taon] Not recognized type of reposne ${response}`);\n\n });\n\n};\n\n ;({}); // @--end-of-file-for-module=taon lib/get-response-value.ts","\n\nimport { Helpers } from 'tnp-core/websql';\n\nconst ENV = Helpers.isBrowser ? window['ENV'] : global['ENV'];\n\nexport { ENV };\n\n ;({}); // @--end-of-file-for-module=taon lib/env.ts","\n\n\n/* */\n/* */\n \nimport { _ } from 'tnp-core/websql';\nimport { Subscriber } from 'rxjs';\nimport { Symbols } from '../symbols';\nimport { Socket as SocketClient } from 'socket.io-client';\nimport { DefaultEventsMap } from 'socket.io/dist/typed-events';\nimport { RealtimeModels } from './realtime.models';\n\n\nexport class RealtimeSubsManager {\n private isListening = false;\n private observers: Subscriber<any>[] = [];\n constructor(private options: RealtimeModels.SubsManagerOpt) {}\n\n\n startListenIfNotStarted(\n realtime: SocketClient<DefaultEventsMap, DefaultEventsMap>,\n ) {\n if (this.options.core.ctx.disabledRealtime) {\n console.warn(`[Taon][startListenIfNotStarted] sockets are disabled`);\n return;\n }\n\n if (!realtime) {\n console.warn(`[Taon][startListenIfNotStarted] invalid socket connection`);\n return;\n }\n\n if (!this.isListening) {\n\n this.isListening = true;\n\n if (this.options.customEvent) {\n const subscribeEvent = Symbols.REALTIME.ROOM_SUBSCRIBE_CUSTOM(\n this.options.core.ctx.contextName,\n );\n\n realtime.emit(subscribeEvent, this.options.roomName);\n } else {\n if (_.isString(this.options.property)) {\n const subscribeEvent =\n Symbols.REALTIME.ROOM_SUBSCRIBE_ENTITY_PROPERTY_UPDATE_EVENTS(\n this.options.core.ctx.contextName,\n );\n\n realtime.emit(subscribeEvent, this.options.roomName);\n } else {\n const subscribeEvent =\n Symbols.REALTIME.ROOM_SUBSCRIBE_ENTITY_UPDATE_EVENTS(\n this.options.core.ctx.contextName,\n );\n\n realtime.emit(subscribeEvent, this.options.roomName);\n }\n }\n\n\n realtime.on(this.options.roomName, data => {\n this.update(data);\n });\n }\n }\n\n\n\n add(observer: Subscriber<any>) {\n\n this.observers.push(observer);\n }\n\n\n\n remove(observer: Subscriber<any>) {\n\n this.observers = this.observers.filter(obs => obs !== observer);\n if (this.observers.length === 0) {\n\n this.isListening = false;\n const { core, customEvent, roomName, property } = this.options;\n\n const realtime = core.socketFE;\n\n if (customEvent) {\n realtime.emit(\n Symbols.REALTIME.ROOM_UNSUBSCRIBE_CUSTOM(\n this.options.core.ctx.contextName,\n ),\n roomName,\n );\n } else {\n if (_.isString(property)) {\n realtime.emit(\n Symbols.REALTIME.ROOM_UNSUBSCRIBE_ENTITY_PROPERTY_UPDATE_EVENTS(\n this.options.core.ctx.contextName,\n ),\n roomName,\n );\n } else {\n realtime.emit(\n Symbols.REALTIME.ROOM_UNSUBSCRIBE_ENTITY_UPDATE_EVENTS(\n this.options.core.ctx.contextName,\n ),\n roomName,\n );\n }\n }\n }\n }\n\n\n\n private update(data: any) {\n\n const ngZone = this.options.core.ctx.ngZone;\n\n\n this.observers.forEach(observer => {\n\n if (!observer.closed) {\n if (ngZone) {\n ngZone.run(() => {\n observer.next(data);\n });\n } else {\n observer.next(data);\n }\n }\n });\n }\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/realtime/realtime-subs-manager.ts","\n\n\nimport { _ } from 'tnp-core/websql';\nimport { RealtimeCore } from './realtime-core';\nimport { Symbols } from '../symbols';\nimport { Observable } from 'rxjs';\nimport { ClassHelpers } from '../helpers/class-helpers';\nimport { RealtimeSubsManager } from './realtime-subs-manager';\nimport { RealtimeModels } from './realtime.models';\nimport type { BaseEntity } from '../base-classes/base-entity';\nimport { Helpers } from 'tnp-core/websql';\n\n\nexport class RealtimeClient {\n private subsManagers: { [path: string]: RealtimeSubsManager } = {};\n constructor(private core: RealtimeCore) {\n this.core = core;\n if (!core.ctx.disabledRealtime) {\n\n this.init();\n\n }\n }\n\n\n private init() {\n\n const nspPath = {\n global: this.core.pathFor(),\n realtime: this.core.pathFor(\n Symbols.REALTIME.NAMESPACE(this.core.ctx.contextName),\n ),\n };\n\n\n this.core.ctx.logRealtime &&\n console.info(\n '[CLIENT] NAMESPACE GLOBAL ',\n nspPath.global.href + ` host: ${this.core.ctx.host}`,\n );\n\n this.core.ctx.logRealtime &&\n console.info(\n '[CLIENT] NAMESPACE REALTIME',\n nspPath.realtime.href + ` host: ${this.core.ctx.host}`,\n );\n\n\n\n this.core.conectSocketFE = this.core.strategy.ioClient(\n nspPath.global.origin,\n {\n path: nspPath.global.pathname,\n },\n );\n\n if (this.core.conectSocketFE.on) {\n this.core.conectSocketFE.on('connect', () => {\n\n\n\n this.core.ctx.logRealtime &&\n console.info(\n `[CLIENT] connected to GLOBAL namespace ${nspPath.global.pathname}` +\n ` of host: ${this.core.ctx.host}`,\n );\n });\n }\n\n\n\n\n this.core.socketFE = this.core.strategy.ioClient(nspPath.realtime.origin, {\n path: nspPath.realtime.pathname,\n });\n\n if (this.core.socketFE.on) {\n this.core.socketFE.on('connect', () => {\n\n\n\n this.core.ctx.logRealtime &&\n console.info(\n `[CLIENT] connected to REALTIME namespace ${nspPath.realtime.pathname}` +\n ` host: ${this.core.ctx.host}`,\n );\n });\n }\n\n\n }\n\n\n\n /**\n * Changes trigger on backend needs to be done manually.. example code:\n *\n * ...\n * Context.Realtime.Server.TrigggerEntityChanges(myEntityInstance);\n * ...\n */\n listenChangesEntity(\n entityClassFn: Function,\n idOrUniqValue: any,\n options: RealtimeModels.ChangeOption,\n ) {\n options = options || ({} as any);\n\n\n const { property, customEvent } = options;\n const className = !customEvent && ClassHelpers.getName(entityClassFn);\n\n if (_.isString(property)) {\n if (property.trim() === '') {\n throw new Error(\n `[Taon][listenChangesEntity.. incorect property '' for ${className}`,\n );\n }\n }\n\n\n return new Observable(observer => {\n\n\n if (this.core.ctx.disabledRealtime) {\n console.error(`[Taon][realtime rxjs] remove taon config flag:\n\n ...\n disabledRealtime: true\n ...\n\nto use socket realtime connection;\n `);\n return () => {\n\n };\n }\n\n let roomName: string;\n\n if (customEvent) {\n roomName = Symbols.REALTIME.ROOM_NAME_CUSTOM(\n this.core.ctx.contextName,\n customEvent,\n );\n } else {\n roomName = _.isString(property)\n ? Symbols.REALTIME.ROOM_NAME_UPDATE_ENTITY_PROPERTY(\n this.core.ctx.contextName,\n className,\n property,\n idOrUniqValue,\n )\n : Symbols.REALTIME.ROOM_NAME_UPDATE_ENTITY(\n this.core.ctx.contextName,\n className,\n idOrUniqValue,\n );\n }\n\n const roomSubOptions: RealtimeModels.SubsManagerOpt = {\n core: this.core,\n property,\n roomName,\n customEvent,\n };\n\n\n const subManagerId = this.getUniqueIdentifierForConnection(roomSubOptions);\n if (!this.subsManagers[subManagerId]) {\n this.subsManagers[subManagerId] = new RealtimeSubsManager(\n roomSubOptions,\n );\n }\n const inst = this.subsManagers[subManagerId];\n inst.add(observer);\n\n inst.startListenIfNotStarted(this.core.socketFE);\n\n return () => {\n inst.remove(observer);\n };\n });\n }\n\n\n\n\n listenChangesEntityTable(entityClassFn: Function) {\n const className = ClassHelpers.getName(entityClassFn);\n return this.listenChangesEntity(entityClassFn, void 0, {\n customEvent: Symbols.REALTIME.TABLE_CHANGE(\n this.core.ctx.contextName,\n className,\n ),\n });\n }\n\n\n\n\n /**\n * Changes trigger on backend needs to be done manually.. example code:\n *\n * ...\n * Context.Realtime.Server.TrigggerEntityChanges(myEntityInstance);\n * // or\n * Context.Realtime.Server.TrigggerEntityPropertyChanges(myEntityInstance,{ property: 'geolocationX' });\n * ...\n */\n listenChangesEntityObj<T extends BaseEntity>(\n entity: T,\n options?: RealtimeModels.ChangeOption,\n ) {\n const classFn = ClassHelpers.getClassFnFromObject(entity);\n const uniqueKey = ClassHelpers.getUniqueKey(classFn);\n return this.listenChangesEntity(classFn, entity[uniqueKey], options);\n }\n\n\n\n listenChangesCustomEvent(customEvent: string) {\n return this.listenChangesEntity(void 0, void 0, {\n customEvent,\n });\n }\n\n\n\n /**\n * Trigger custom event on backend\n * @param customEvent global event name\n * @param dataToPush\n */\n public triggerCustomEvent(customEvent: string, dataToPush?: any) {\n this.core.socketFE.emit(customEvent, dataToPush);\n }\n\n\n\n private getUniqueIdentifierForConnection(options: RealtimeModels.SubsManagerOpt) {\n const url = new URL(options.core.ctx.host);\n return `${this.core.ctx.contextName}:${url.origin}|${options.roomName}|${options.property}|${options.customEvent}`;\n }\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/realtime/realtime-client.ts","\n\n\nimport { Symbols } from '../symbols';\nimport { Helpers, _ } from 'tnp-core/websql';\nimport { RealtimeCore } from './realtime-core';\nimport { ClassHelpers } from '../helpers/class-helpers';\nimport type { BaseEntity } from '../base-classes/base-entity';\nimport { Observable, Subject } from 'rxjs';\n\n\nexport class RealtimeServer {\n\n constructor(private core: RealtimeCore) {\n this.core = core;\n if (!core.ctx.disabledRealtime) {\n\n this.init();\n\n }\n }\n\n\n private init() {\n\n\n if (!this.core.ctx.config.frontendHost) {\n console.warn(`[Taon][Realtime]\n\n Frontend host is not defined\n REALTIME COMMUNICATION WILL NOT WORK\n\n provide \"frontendHost\" property in your taon config\n\n `);\n }\n\n\n const nspPath = {\n global: this.core.pathFor(),\n realtime: this.core.pathFor(\n Symbols.REALTIME.NAMESPACE(this.core.ctx.contextName),\n ),\n };\n\n\n\n\n\n\n this.core.connectSocketBE = this.core.strategy.ioServer(\n Helpers.isWebSQL ? this.core.ctx.uri.origin : this.core.ctx.serverTcpUdp,\n {\n path: nspPath.global.pathname,\n\n cors: {\n origin: this.core.ctx.config.frontendHost,\n methods: this.core.allHttpMethods,\n },\n }, // @ts-ignore\n this.core.ctx,\n );\n\n this.core.ctx.logRealtime &&\n console.info(\n `[backend] CREATE GLOBAL NAMESPACE: '${this.core.connectSocketBE.path()}'` +\n ` , path: '${nspPath.global.pathname}'`,\n );\n\n this.core.connectSocketBE.on('connection', clientSocket => {\n console.info(\n `[backend] client connected to namespace \"${nspPath.global.pathname}\", ` +\n ` host: ${this.core.ctx.host}`,\n );\n });\n\n\n\n\n this.core.socketBE = this.core.strategy.ioServer(\n Helpers.isWebSQL || Helpers.isElectron\n ? this.core.ctx.uri.origin\n : this.core.ctx.serverTcpUdp,\n {\n path: nspPath.realtime.pathname,\n cors: {\n origin: this.core.ctx.config.frontendHost,\n methods: this.core.allHttpMethods,\n },\n }, // @ts-ignore\n this.core.ctx,\n );\n\n this.core.ctx.logRealtime &&\n console.info(\n `[backend] CREATE REALTIME NAMESPACE: '${this.core.socketBE.path()}'` +\n ` , path: '${nspPath.realtime.pathname}' `,\n );\n\n this.core.socketBE.on('connection', backendSocketForClient => {\n console.info(\n `[backend] client connected to namespace \"${nspPath.realtime.pathname}\", ` +\n ` host: ${this.core.ctx.host}`,\n );\n\n backendSocketForClient.on(\n Symbols.REALTIME.ROOM_SUBSCRIBE_CUSTOM(this.core.ctx.contextName),\n roomName => {\n this.core.ctx.logRealtime &&\n console.info(\n `Joining room ${roomName} in namespace REALTIME` +\n ` host: ${this.core.ctx.contextName}/${this.core.ctx.host}`,\n );\n backendSocketForClient.join(roomName);\n },\n );\n\n backendSocketForClient.on(\n Symbols.REALTIME.ROOM_SUBSCRIBE_ENTITY_UPDATE_EVENTS(\n this.core.ctx.contextName,\n ),\n roomName => {\n this.core.ctx.logRealtime &&\n console.info(\n `[backend] Joining room ${roomName} in namespace REALTIME` +\n ` host: ${this.core.ctx.contextName}/${this.core.ctx.host}`,\n );\n backendSocketForClient.join(roomName);\n },\n );\n\n backendSocketForClient.on(\n Symbols.REALTIME.ROOM_SUBSCRIBE_ENTITY_PROPERTY_UPDATE_EVENTS(\n this.core.ctx.contextName,\n ),\n roomName => {\n this.core.ctx.logRealtime &&\n console.info(\n `[backend] Joining room ${roomName} in namespace REALTIME ` +\n ` host: ${this.core.ctx.contextName}/${this.core.ctx.host}`,\n );\n backendSocketForClient.join(roomName);\n },\n );\n\n backendSocketForClient.on(\n Symbols.REALTIME.ROOM_UNSUBSCRIBE_CUSTOM(this.core.ctx.contextName),\n roomName => {\n this.core.ctx.logRealtime &&\n console.info(\n `[backend] Leaving room ${roomName} in namespace REALTIME` +\n ` host: ${this.core.ctx.contextName}/${this.core.ctx.host}`,\n );\n backendSocketForClient.leave(roomName);\n },\n );\n\n backendSocketForClient.on(\n Symbols.REALTIME.ROOM_UNSUBSCRIBE_ENTITY_UPDATE_EVENTS(\n this.core.ctx.contextName,\n ),\n roomName => {\n this.core.ctx.logRealtime &&\n console.info(\n `[backend] Leaving room ${roomName} in namespace REALTIME ` +\n ` host: ${this.core.ctx.contextName}/${this.core.ctx.host}`,\n );\n backendSocketForClient.leave(roomName);\n },\n );\n\n backendSocketForClient.on(\n Symbols.REALTIME.ROOM_UNSUBSCRIBE_ENTITY_PROPERTY_UPDATE_EVENTS(\n this.core.ctx.contextName,\n ),\n roomName => {\n this.core.ctx.logRealtime &&\n console.info(\n `[backend] Leaving room ${roomName} in namespace REALTIME ` +\n ` host: ${this.core.ctx.contextName}/${this.core.ctx.host}`,\n );\n backendSocketForClient.leave(roomName);\n },\n );\n });\n\n\n\n\n }\n\n\n\n\n private triggerChanges(\n entityObjOrClass: Function,\n property?: string,\n valueOfUniqueProperty?: number | string,\n customEvent?: string,\n customEventData?: any,\n ) {\n\n\n\n\n let roomName: string;\n\n if (this.core.ctx.disabledRealtime) {\n return;\n }\n\n if (customEvent) {\n roomName = Symbols.REALTIME.ROOM_NAME_CUSTOM(\n this.core.ctx.contextName,\n customEvent,\n );\n } else {\n let entityFn = entityObjOrClass as Function;\n const entityIsObject =\n !_.isFunction(entityObjOrClass) && _.isObject(entityObjOrClass);\n\n if (entityIsObject) {\n entityFn = ClassHelpers.getClassFnFromObject(entityObjOrClass);\n }\n\n const uniqueKey = ClassHelpers.getUniqueKey(entityFn);\n\n if (entityIsObject) {\n valueOfUniqueProperty = entityObjOrClass[uniqueKey];\n }\n\n if (!valueOfUniqueProperty) {\n Helpers.error(\n `[Taon][Realtime] Entity without iD ! ${ClassHelpers.getName(\n entityFn,\n )} `,\n true,\n true,\n );\n return;\n }\n\n roomName = _.isString(property)\n ? Symbols.REALTIME.ROOM_NAME_UPDATE_ENTITY_PROPERTY(\n this.core.ctx.contextName,\n ClassHelpers.getName(entityFn),\n property,\n valueOfUniqueProperty,\n )\n : Symbols.REALTIME.ROOM_NAME_UPDATE_ENTITY(\n this.core.ctx.contextName,\n ClassHelpers.getName(entityFn),\n valueOfUniqueProperty,\n );\n }\n\n this.core.socketBE.in(roomName).emit(\n roomName, // roomName == eventName in room na\n customEvent ? customEventData : '',\n );\n\n }\n\n\n\n\n\n public triggerEntityChanges(\n entityObjOrClass: Function,\n idToTrigger?: number | string,\n ) {\n if (this.core.ctx.disabledRealtime) {\n const className = ClassHelpers.getName(entityObjOrClass);\n\n console.warn(\n `[Taon][TriggerEntityChanges] Entity \"${className}' is not realtime`,\n );\n return;\n }\n this.triggerChanges(entityObjOrClass as any, void 0, idToTrigger);\n }\n\n\n\n public triggerEntityPropertyChanges<ENTITY extends BaseEntity>(\n entityObjOrClass: new (...args) => ENTITY,\n property: keyof ENTITY | (keyof ENTITY)[],\n idToTrigger?: number | string,\n ) {\n if (this.core.ctx.disabledRealtime) {\n const className = ClassHelpers.getName(entityObjOrClass);\n\n console.warn(\n `[Taon][TriggerEntityPropertyChanges][property=${\n property as string\n }] Entity \"${className}' is not realtime`,\n );\n return;\n }\n\n if (_.isArray(property)) {\n property.forEach(propertyFromArr => {\n this.triggerChanges(\n entityObjOrClass,\n propertyFromArr as any,\n idToTrigger,\n );\n });\n } else {\n this.triggerChanges(entityObjOrClass, property as any, idToTrigger);\n }\n }\n\n\n\n public triggerEntityTableChanges(entityClassOrInstance: Function | object) {\n const className = ClassHelpers.getName(entityClassOrInstance);\n\n if (this.core.ctx.disabledRealtime) {\n console.warn(\n `[Taon][TriggerEntityTableChanges] Entity \"${className}' is not realtime`,\n );\n return;\n }\n\n this.triggerChanges(\n entityClassOrInstance as any,\n void 0,\n void 0,\n Symbols.REALTIME.TABLE_CHANGE(this.core.ctx.contextName, className),\n );\n }\n\n\n\n\n\n\n\n public triggerCustomEvent(customEvent: string, dataToPush: any) {\n this.triggerChanges(void 0, void 0, void 0, customEvent, dataToPush);\n }\n\n\n\n /**\n * Listen to custom events from users\n * @param customEvent global event name\n */\n listenChangesCustomEvent(customEvent: string): Observable<any> {\n\n const sub = new Subject<any>();\n\n this.core.socketBE.on('connection', backendSocketForClient => {\n backendSocketForClient.on(customEvent, (data, ...args) => {\n sub.next(data);\n });\n });\n\n return sub.asObservable();\n\n }\n\n\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/realtime/realtime-server.ts","\n\nimport { EndpointContext } from '../../endpoint-context';\nimport type { Server, ServerOptions } from 'socket.io';\nimport type { io } from 'socket.io-client';\nimport { DefaultEventsMap } from 'socket.io/dist/typed-events';\n\nexport abstract class RealtimeStrategy {\n constructor(protected ctx: EndpointContext) {}\n\n get ioClient(): typeof io {\n throw new Error('Not implemented');\n }\n\n ioServer(\n url: string,\n opt: ServerOptions,\n ): Server<DefaultEventsMap, DefaultEventsMap, DefaultEventsMap, any> {\n throw new Error('Not implemented');\n }\n\n abstract toString(): string;\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/realtime/realtime-strategy/realtime-strategy.ts","\n\n\nimport { Server, ServerOptions } from 'socket.io';\nimport { EndpointContext } from '../../endpoint-context';\nimport { RealtimeStrategy } from './realtime-strategy';\nimport type { io, ManagerOptions, SocketOptions } from 'socket.io-client';\nimport type { ipcRenderer } from 'electron';\nimport { Symbols } from '../../symbols';\n/* */\n/* */\n/* */\n \nimport { RealtimeModels } from '../realtime.models';\n\n\n\nexport class MockServerIpc {\n static serverByContextName = new Map<string, MockServerIpc>();\n\n static from(contextName: string): MockServerIpc {\n if (!MockServerIpc.serverByContextName.has(contextName)) {\n MockServerIpc.serverByContextName.set(\n contextName,\n new MockServerIpc(contextName),\n );\n }\n return MockServerIpc.serverByContextName.get(contextName);\n }\n\n namespacesByName = new Map<string, MockNamespaceIpc>();\n\n\n constructor(public contextName: string) {\n MockServerIpc.serverByContextName.set(contextName, this);\n }\n\n\n\n of(namespace: string): MockNamespaceIpc {\n if (!this.namespacesByName.has(namespace)) {\n this.namespacesByName.set(\n namespace,\n new MockNamespaceIpc(namespace, this),\n );\n }\n return this.namespacesByName.get(namespace);\n }\n\n}\n\n\n\nexport class MockNamespaceIpc {\n\n electronClients = new Set<Electron.WebContents>();\n roomsByRoomName: {\n [roomName: string]: Set<Electron.WebContents>;\n } = {};\n\n private namespaceEventHandlers: {\n [eventName: string]: Set<RealtimeModels.EventHandler>;\n } = {};\n\n\n\n constructor(\n /**\n * Namespace name\n */\n public name: string,\n public server: MockServerIpc,\n ) {}\n\n\n\n on(eventName: string, callback: RealtimeModels.EventHandler) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n\n\n off(event: string, callback?: RealtimeModels.EventHandler) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n\n\n emit(eventName: string, ...args: any[]) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n\n\n to(roomName: string) {\n const electronClientsInroom = this.roomsByRoomName[roomName];\n return new RoomEmitterIpc(electronClientsInroom, this.name, true);\n }\n\n\n\n in(roomName: string) {\n const electronClientsInroom = this.roomsByRoomName[roomName];\n return new RoomEmitterIpc(electronClientsInroom, this.name, false);\n }\n\n\n\n join(webContents: Electron.WebContents, roomName: string) {\n if (!this.roomsByRoomName[roomName]) {\n this.roomsByRoomName[roomName] = new Set();\n }\n this.roomsByRoomName[roomName].add(webContents);\n }\n\n\n\n leave(webContents: Electron.WebContents, roomName: string) {\n if (this.roomsByRoomName[roomName]) {\n this.roomsByRoomName[roomName].delete(webContents);\n if (this.roomsByRoomName[roomName].size === 0) {\n delete this.roomsByRoomName[roomName];\n }\n }\n }\n\n\n\n path() {\n return this.name;\n }\n\n\n\n get nsp() {\n const self = this;\n return {\n get name() {\n return self.name;\n },\n };\n }\n\n}\n\n\n\n\nclass RoomEmitterIpc {\n\n constructor(\n private electronClients: Set<Electron.WebContents>,\n /**\n * namespace name\n */\n private name: string,\n private includeSender: boolean = false,\n private sender: MockSocketIpc = null, // TODO QUICK FIX how to include sender\n ) {}\n\n\n\n emit(eventName: string, ...args: any[]): void {\n const emitEvent = `(${this.name}) \"${eventName}\"`;\n this.electronClients?.forEach(webContents => {\n webContents.send(emitEvent, ...args);\n });\n }\n\n}\n\n\n\nexport class MockSocketIpc {\n\n\n\n ipcRenderer!: typeof ipcRenderer;\n\n\n\n private socketEventHandlers = {} as {\n [eventName: string]: Set<RealtimeModels.EventHandler>;\n };\n\n\n\n get name() {\n return this.namespaceName;\n }\n\n\n\n\n\n /**\n * @param namespaceName instead url for ipc\n */\n constructor(public namespaceName: string) {\n this.ipcRenderer = (window as any).require('electron').ipcRenderer;\n }\n\n\n\n on(eventName: string, callback: (event: any, ...args: any[]) => void) {\n if (!this.socketEventHandlers[eventName]) {\n this.socketEventHandlers[eventName] = new Set();\n }\n this.socketEventHandlers[eventName].add(callback);\n\n const listenToEvent = `(${this.name}) \"${eventName}\"`;\n this.ipcRenderer.on(listenToEvent, (rendereEvent, data) => {\n callback(data);\n });\n\n if (eventName === 'connect') {\n const connectionEventKey = `(${this.name}) \"connection\"`;\n this.ipcRenderer.send(connectionEventKey, this.name);\n }\n }\n\n\n\n off(event: string, callback?: (event: any, ...args: any[]) => void) {\n if (!this.socketEventHandlers[event]) {\n return;\n }\n\n if (callback) {\n this.socketEventHandlers[event].delete(callback);\n } else {\n delete this.socketEventHandlers[event];\n }\n const removeListener = `(${this.name}) \"${event}\"`;\n\n this.ipcRenderer.removeListener(removeListener, data => {\n callback(data);\n });\n }\n\n\n\n emit(event: string, ...args: any[]) {\n const emitEvent = `(${this.name}) \"${event}\"`;\n this.ipcRenderer.send(emitEvent, ...args);\n }\n\n}\n\n\n/**\n * Purpose:\n * - backend-browser communication between 2 processes in electron mode\n */\nexport class RealtimeStrategyIpc extends RealtimeStrategy {\n\n toString(): string {\n return 'ipc';\n }\n\n\n\n constructor(protected ctx: EndpointContext) {\n super(ctx);\n }\n\n\n\n ioServer(__: string, opt: ServerOptions) {\n const namespace = opt?.path || '/';\n const server = MockServerIpc.from(this.ctx.contextName);\n return server.of(namespace) as any;\n }\n\n get ioClient() {\n const clientIo = (\n __: string,\n opt?: Partial<ManagerOptions & SocketOptions>,\n ): MockSocketIpc => {\n const namespace = opt?.path || '/';\n return new MockSocketIpc(namespace);\n };\n return clientIo as any;\n }\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/realtime/realtime-strategy/realtime-strategy-ipc.ts","\n\n\nimport type { EndpointContext } from '../../endpoint-context';\nimport { RealtimeStrategy } from './realtime-strategy';\nimport { Symbols } from '../../symbols';\nimport { ManagerOptions, SocketOptions } from 'socket.io-client';\nimport { RealtimeModels } from '../realtime.models';\nimport { ServerOptions } from 'socket.io';\n\n\n\nclass MockServer {\n static serverByUrl = new Map<string, MockServer>();\n static from(url: string): MockServer {\n if (!MockServer.serverByUrl.has(url)) {\n MockServer.serverByUrl.set(url, new MockServer(url));\n }\n return MockServer.serverByUrl.get(url);\n }\n\n get allServers() {\n return Array.from(MockServer.serverByUrl.values());\n }\n\n namespacesByName = new Map<string, MockNamespace>();\n\n\n constructor(public url: string) {\n MockServer.serverByUrl.set(url, this);\n }\n\n\n\n of(namespace: string): MockNamespace {\n if (!this.namespacesByName.has(namespace)) {\n this.namespacesByName.set(namespace, new MockNamespace(namespace, this));\n }\n return this.namespacesByName.get(namespace);\n }\n\n\n\n path() {\n return this.url;\n }\n\n}\n\n\n\nclass MockNamespace {\n /**\n * All sockets connected to this namespace\n */\n public readonly allSocketsForNamespace = new Set<MockSocket>();\n /**\n * Rooms and their sockets\n */\n private socketByRoomName: {\n [roomName: string]: Set<MockSocket>;\n } = {};\n /**\n * Event handlers for this namespace\n */\n public namespaceEventHandlers: {\n [eventName: string]: Set<RealtimeModels.EventHandler>;\n } = {};\n\n\n constructor(\n /**\n * unique namespace name\n */\n public name: string,\n public server: MockServer,\n ) {}\n\n\n\n on(eventName: string, handler: RealtimeModels.EventHandler): void {\n\n if (!this.namespaceEventHandlers[eventName]) {\n this.namespaceEventHandlers[eventName] =\n new Set<RealtimeModels.EventHandler>();\n }\n\n if (!this.namespaceEventHandlers[eventName].has(handler)) {\n this.namespaceEventHandlers[eventName].add(handler);\n }\n\n\n\n if (eventName === 'connection') {\n setTimeout(() => {\n this.emit('connection', this);\n });\n }\n }\n\n\n\n emit(event: string, ...args: any[]): void {\n this.allSocketsForNamespace?.forEach(socket => {\n socket.emit(event, ...args);\n });\n }\n\n\n\n connect(socket: MockSocket): void {\n this.allSocketsForNamespace.add(socket);\n socket.namespaceInstance = this;\n }\n\n\n\n to(roomName: string): RoomEmitter {\n const socketsInRoom = this.socketByRoomName[roomName];\n return new RoomEmitter(socketsInRoom, true);\n }\n\n\n\n in(roomName: string): RoomEmitter {\n const socketsInRoom = this.socketByRoomName[roomName];\n return new RoomEmitter(socketsInRoom, false);\n }\n\n\n\n joinRoom(roomName: string, socket: MockSocket): void {\n if (!this.socketByRoomName[roomName]) {\n this.socketByRoomName[roomName] = new Set<MockSocket>();\n }\n this.socketByRoomName[roomName].add(socket);\n }\n\n\n\n leaveRoom(roomName: string, socket: MockSocket): void {\n const roomSockets = this.socketByRoomName[roomName];\n if (roomSockets) {\n this.socketByRoomName[roomName].delete(socket);\n }\n }\n\n\n\n get nsp() {\n const self = this;\n return {\n get name() {\n return self.name;\n },\n };\n }\n\n\n path() {\n return this.name;\n }\n}\n\n\n\nclass RoomEmitter {\n\n constructor(\n private sockets: Set<MockSocket>,\n private includeSender: boolean = false,\n private sender: MockSocket = null, // TODO QUICK FIX how to include sender\n ) {}\n\n\n\n emit(event: string, ...args: any[]): void {\n\n\n\n this.sockets?.forEach(socket => {\n\n if (this.includeSender || socket !== this.sender) {\n socket.emit(event, ...args);\n }\n });\n }\n\n}\n\n\n\nclass MockSocket {\n public namespaceInstance: MockNamespace;\n private socketEventHandlers = {} as {\n [eventName: string]: Set<RealtimeModels.EventHandler>;\n };\n get id() {\n return this.nsp.name;\n }\n\n\n constructor(\n public url: string,\n opts?: Partial<ManagerOptions & SocketOptions>,\n ) {\n // @ts-ignore\n const [baseUrl, namespace] = [url, opts.path || '/'];\n\n const namespaceName = namespace || '/';\n\n\n const server = MockServer.from(url);\n\n const ns = server.of(namespaceName);\n ns.connect(this);\n }\n\n\n\n get nsp() {\n const self = this;\n return {\n get name() {\n return self.namespaceInstance?.name;\n },\n };\n }\n\n\n\n path() {\n return this.namespaceInstance?.name;\n }\n\n\n\n on(eventName: string, handler: RealtimeModels.EventHandler): void {\n if (!this.socketEventHandlers[eventName]) {\n this.socketEventHandlers[eventName] =\n new Set<RealtimeModels.EventHandler>();\n }\n this.socketEventHandlers[eventName].add(handler);\n\n\n if (eventName === 'connect') {\n setTimeout(() => {\n this.emit('connect');\n\n });\n }\n }\n\n\n\n emit(eventName: string, ...args: any[]): void {\n eventName = eventName || '';\n\n if (eventName.includes(`:${Symbols.REALTIME.KEYroomSubscribe}`)) {\n const room = args[0];\n this.join(room);\n } else if (eventName.includes(`:${Symbols.REALTIME.KEYroomUnsubscribe}`)) {\n const room = args[0];\n this.leave(room);\n } else {\n\n if (this.namespaceInstance) {\n const namespaceEventHandlers =\n this.namespaceInstance.namespaceEventHandlers[eventName] || [];\n\n\n for (const namespaceEventHandler of namespaceEventHandlers) {\n if (namespaceEventHandler) {\n namespaceEventHandler(...args);\n }\n }\n\n const allSocketsForNamespaceExceptCurrent = Array.from(\n this.namespaceInstance.allSocketsForNamespace.values(),\n ).filter(socket => socket !== this);\n\n\n for (const socket of allSocketsForNamespaceExceptCurrent) {\n const socketEventHandlers = socket.socketEventHandlers[eventName];\n for (const socketEventHandler of socketEventHandlers) {\n if (socketEventHandler) {\n socketEventHandler(...args);\n }\n }\n }\n\n\n const socketEventHandlers = this.socketEventHandlers[eventName] || [];\n for (const clientHandler of socketEventHandlers) {\n if (clientHandler) {\n clientHandler(...args);\n }\n }\n }\n }\n }\n\n\n\n join(roomName: string): void {\n this.namespaceInstance.joinRoom(roomName, this);\n }\n\n\n\n leave(roomName: string): void {\n this.namespaceInstance.leaveRoom(roomName, this);\n }\n\n}\n\n\n/**\n * Purpose:\n * - browser-browser communication mock (in websql mode)\n */\nexport class RealtimeStrategyMock extends RealtimeStrategy {\n\n toString(): string {\n return 'mock';\n }\n\n\n\n constructor(protected ctx: EndpointContext) {\n super(ctx);\n }\n\n\n\n ioServer(url: string, opt: ServerOptions) {\n const server = MockServer.from(url || this.ctx.uri.origin);\n return server.of(opt?.path || '/') as any;\n }\n\n get ioClient() {\n const clientIo = (\n uri: string,\n opts?: Partial<ManagerOptions & SocketOptions>,\n ): MockSocket => {\n return new MockSocket(uri || this.ctx.uri.origin, opts as any);\n };\n return clientIo as any;\n }\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/realtime/realtime-strategy/realtime-strategy-mock.ts","\n\nimport { DefaultEventsMap } from 'socket.io/dist/typed-events';\nimport { EndpointContext } from '../../endpoint-context';\nimport { RealtimeStrategy } from './realtime-strategy';\n/* */\n/* */\n \nimport { io, ManagerOptions, Socket, SocketOptions } from 'socket.io-client';\n\n/**\n * Purpose:\n * - backend-browser communication\n * - backend-backend communication\n */\nexport class RealtimeStrategySocketIO extends RealtimeStrategy {\n toString(): string {\n return 'socket-io';\n }\n constructor(protected ctx: EndpointContext) {\n super(ctx);\n }\n\n ioServer(...args) {\n/* */\n/* */\n return (void 0);\n }\n\n get ioClient() {\n return io;\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/realtime/realtime-strategy/realtime-strategy-socket-io.ts","\n\nexport * from './realtime-strategy';\nexport * from './realtime-strategy-ipc';\nexport * from './realtime-strategy-mock';\nexport * from './realtime-strategy-socket-io';\n\n ;({}); // @--end-of-file-for-module=taon lib/realtime/realtime-strategy/index.ts","\n\n\nimport { Socket as SocketClient } from 'socket.io-client';\nimport type { EndpointContext } from '../endpoint-context';\nimport { RealtimeClient } from './realtime-client';\nimport { RealtimeServer } from './realtime-server';\nimport type { RealtimeStrategy } from './realtime-strategy';\nimport { RealtimeStrategyIpc, RealtimeStrategyMock, RealtimeStrategySocketIO, } from './realtime-strategy';/* */\n/* */\n/* */\n/* */\n\nimport { DefaultEventsMap } from 'socket.io/dist/typed-events';\nimport { Server } from 'socket.io';\nimport { Helpers } from 'tnp-core/websql';\n\n\n/**\n * Realtime class\n * - mock (when browser-browser)\n * - sockets (from socket io when backend-browser)\n * - ipc (when electron is used or between processes)\n * - webworker (when webworker is used in browser or nodejs)\n */\nexport class RealtimeCore {\n\n readonly allHttpMethods = [\n 'GET',\n 'POST',\n 'PUT',\n 'DELETE',\n 'PATCH',\n 'OPTIONS',\n 'HEAD',\n ];\n public readonly client: RealtimeClient;\n public readonly server: RealtimeServer;\n public readonly strategy: RealtimeStrategy;\n\n /**\n * global FE socket - only for established connection\n */\n public conectSocketFE: SocketClient<DefaultEventsMap, DefaultEventsMap>;\n /**\n * socket for namespaces and rooms\n */\n public socketFE: SocketClient<DefaultEventsMap, DefaultEventsMap>;\n /**\n * global BE socket - only for established connection\n */\n public connectSocketBE: Server<\n DefaultEventsMap,\n DefaultEventsMap,\n DefaultEventsMap,\n any\n >;\n /**\n * socket for namespaces and rooms\n */\n public socketBE: Server<\n DefaultEventsMap,\n DefaultEventsMap,\n DefaultEventsMap,\n any\n >;\n\n\n\n constructor(public ctx: EndpointContext) {\n this.ctx = ctx;\n this.strategy = this.resolveStrategy();\n\n this.ctx.logRealtime &&\n console.log(`[taon] realtime strategy: ${this.strategy}`);\n if (Helpers.isWebSQL) {\n this.server = new RealtimeServer(this);\n\n this.client = new RealtimeClient(this);\n\n } else {\n this.client = new RealtimeClient(this);\n this.server = new RealtimeServer(this);\n }\n }\n\n\n\n private resolveStrategy(): RealtimeStrategy {\n if (\n this.ctx.mode === 'backend-frontend(websql)' ||\n this.ctx.mode === 'backend-frontend(websql-electron)'\n ) {\n\n return new RealtimeStrategyMock(this.ctx);\n }\n if (this.ctx.mode === 'backend-frontend(ipc-electron)') {\n return new RealtimeStrategyIpc(this.ctx);\n }\n\n\n\n\n\n\n return new RealtimeStrategySocketIO(this.ctx);\n }\n\n\n\n public pathFor(namespace?: string) {\n const uri = this.ctx.uri;\n\n let nsp = namespace ? namespace : '';\n nsp = nsp === '/' ? '' : nsp;\n const pathname = uri.pathname !== '/' ? uri.pathname : '';\n let prefix = `taonContext`;\n if (Helpers.isElectron) {\n prefix = ``;\n }\n const href = `${uri.origin}${pathname}/${prefix}${prefix && nsp ? '-' + nsp : nsp}`;\n\n return new URL(href) as URL;\n }\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/realtime/realtime-core.ts","\n\n/* eslint-disable @typescript-eslint/typedef */\n\n\nimport { EventSubscriber } from 'taon-typeorm/websql';\nimport type {\n TransactionRollbackEvent,\n TransactionCommitEvent,\n TransactionStartEvent,\n RecoverEvent,\n SoftRemoveEvent,\n RemoveEvent,\n UpdateEvent,\n InsertEvent,\n} from 'taon-typeorm';\nimport { Entity as TypeormEntity, Tree } from 'taon-typeorm/websql';\n\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n\nimport { TaonAdmin } from './ui/taon-admin-mode-configuration/taon-admin.service';\n\nimport { Models } from './models';\nimport { ClassHelpers } from './helpers/class-helpers';\nimport { Symbols } from './symbols';\nimport { _, Helpers } from 'tnp-core/websql';\nimport type { createContext } from './create-context';\nimport { DITaonContainer } from './dependency-injection/di-container';\nimport { TaonControllerOptions } from './decorators/classes/controller-decorator';\nimport { TaonHelpers } from './helpers/taon-helpers';\nimport { Mapping, Models as ModelsNg2Rest, Resource, RestHeaders, } from 'ng2-rest/websql';/* */\n/* */\n/* */\n/* */\n/* */\n\nimport { JSON10 } from 'json10/websql';\nimport { path } from 'tnp-core/websql';\nimport { from, Subject } from 'rxjs';\nimport { EntityProcess } from './entity-process';\nimport { getResponseValue } from './get-response-value';\nimport type { Application } from 'express';\nimport axios from 'axios';\nimport type { NgZone } from '@angular/core';\n\nimport { DataSource, DataSourceOptions, getMetadataArgsStorage, } from 'taon-typeorm/websql';/* */\n/* */\n/* */\n/* */\n\nimport { TaonEntityOptions } from './decorators/classes/entity-decorator';\nimport type { Server } from 'http';\nimport { ENV } from './env';\nimport type { BaseClass } from './base-classes/base-class';\nimport { RealtimeCore } from './realtime/realtime-core';\nimport { TaonSubscriberOptions } from './decorators/classes/subscriber-decorator';\nimport { BaseSubscriberForEntity } from './base-classes/base-subscriber-for-entity';\n\n\nexport class EndpointContext {\n\n\n\n private static ngZone: NgZone;\n\n static initNgZone(ngZone: NgZone) {\n\n this.ngZone = ngZone;\n\n }\n\n\n\n\n\n\n\n\n\n\n\n\n disabledRealtime: boolean = false;\n /**\n * check whether context is inited\n * (with init() function )\n */\n public inited: boolean = false;\n\n\n private readonly localInstaceObjSymbol = Symbol('localInstaceObjSymbol');\n\n\n /**\n * all instances of classes from context\n * key is class name\n */\n public readonly allClassesInstances = {};\n\n\n\n private readonly classInstancesByNameObj = {};\n\n\n\n private readonly objWithClassesInstancesArr = {};\n\n\n\n public readonly activeRoutes: {\n routePath: string;\n method: Models.Http.Rest.HttpMethod;\n }[] = [];\n\n\n\n private injectableTypesfromContexts = [\n Models.ClassType.CONTROLLER,\n Models.ClassType.PROVIDER,\n Models.ClassType.REPOSITORY,\n Models.ClassType.SUBSCRIBER,\n ];\n\n\n private allTypesfromContexts = [\n ...this.injectableTypesfromContexts,\n Models.ClassType.ENTITY,\n ];\n\n\n public expressApp: Application = {} as any;\n\n\n\n public serverTcpUdp: Server;\n\n\n\n databaseConfig?: Models.DatabaseConfig;\n private autoGeneratedConfig?: Models.DatabaseConfig;\n\n\n\n mode: Models.FrameworkMode;\n\n\n\n session?: Models.ISession;\n\n\n\n public connection: DataSource;\n\n\n\n private entitiesTriggers = {};\n\n\n\n private realtime: RealtimeCore;\n get realtimeClient() {\n return this.realtime.client;\n }\n get realtimeServer() {\n return this.realtime.server;\n }\n\n\n\n /**\n * available after init()\n */\n public config: Models.ContextOptions<any, any, any, any, any, any>;\n\n\n\n get logHttp(): boolean {\n if (_.isObject(this.config?.logs)) {\n return !!(this.config.logs as Models.ContectionOptionsLogs).http;\n }\n return this.config?.logs === true;\n }\n\n get logRealtime(): boolean {\n if (_.isObject(this.config?.logs)) {\n return !!(this.config.logs as Models.ContectionOptionsLogs).realtime;\n }\n return this.config?.logs === true;\n }\n\n get logFramework(): boolean {\n if (_.isObject(this.config?.logs)) {\n return !!(this.config.logs as Models.ContectionOptionsLogs).framework;\n }\n return this.config?.logs === true;\n }\n\n get logDb(): boolean {\n if (_.isObject(this.config?.logs)) {\n return !!(this.config.logs as Models.ContectionOptionsLogs).db;\n }\n return this.config?.logs === true;\n }\n\n\n\n\n\n constructor(\n private originalConfig: Models.ContextOptions<any, any, any, any, any, any>,\n private configFn: (\n env: any,\n ) => Models.ContextOptions<any, any, any, any, any, any>,\n ) {}\n\n\n\n public async init(options?: { initFromRecrusiveContextResovle?: boolean; overrideHost?: string;overrideRemoteHost?: string }) {\n const { initFromRecrusiveContextResovle, overrideHost, overrideRemoteHost } = options || {}; // TODO use it ?\n\n this.inited = true;\n this.config = this.configFn(ENV);\n if(overrideHost && overrideRemoteHost) {\n if(Helpers.isWebSQL) {\n throw new Error(`You can't have overrideHost and overrideRemoteHost at the same time`)\n }\n Helpers.error(`You can't have overrideHost and overrideRemoteHost at the same time`, false, true);\n/* */\n/* */\n \n }\n this.config.host = overrideHost ? overrideHost : this.config.host;\n this.config.remoteHost = overrideRemoteHost ? overrideRemoteHost : this.config.remoteHost;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n if (this.config.host) {\n this.mode = 'backend-frontend(tcp+udp)';\n\n this.mode = 'backend-frontend(websql)';\n\n }\n if (this.config.remoteHost) {\n if (this.config.host) {\n Helpers.error(\n `[taon] You can't have remoteHost and host at the same time`,\n false,\n true,\n );\n }\n this.mode = 'remote-backend(tcp+udp)';\n }\n\n if (this.config.useIpcWhenElectron && Helpers.isElectron) {\n if (Helpers.isWebSQL) {\n this.mode = 'backend-frontend(websql-electron)';\n } else {\n this.mode = 'backend-frontend(ipc-electron)';\n }\n }\n\n if (!this.mode && !this.config.abstract) {\n Helpers.error(\n `[taon] Context \"${this.contextName}\": You need to provide host or remoteHost or useIpcWhenElectron`,\n false,\n true,\n );\n/* */\n/* */\n \n }\n\n\n\n if (this.config.database === true) {\n this.databaseConfig = this.getAutoGeneratedConfig();\n } else if (_.isObject(this.config.database)) {\n this.databaseConfig = _.cloneDeep(\n this.config.database,\n ) as Models.DatabaseConfig;\n }\n\n\n\n if (this.config.session) {\n this.session = _.cloneDeep(this.config.session);\n const oneHour = 1000 * 60 * 60 * 1; // 24;\n if (!this.session.cookieMaxAge) {\n this.session.cookieMaxAge = oneHour;\n }\n\n axios.defaults.withCredentials = true;\n }\n\n\n\n this.config.contexts = this.config.contexts || {};\n this.config.entities = this.config.entities || {};\n this.config.controllers = this.config.controllers || {};\n this.config.repositories = this.config.repositories || {};\n this.config.providers = this.config.providers || {};\n this.config.subscribers = this.config.subscribers || {};\n\n this.config.entities = {\n ...(await this.getRecrusiveClassesfromContextsObj(\n Models.ClassType.ENTITY,\n )),\n ...this.config.entities,\n };\n\n this.config.controllers = {\n ...(await this.getRecrusiveClassesfromContextsObj(\n Models.ClassType.CONTROLLER,\n )),\n ...this.config.controllers,\n };\n\n this.config.providers = {\n ...(await this.getRecrusiveClassesfromContextsObj(\n Models.ClassType.PROVIDER,\n )),\n ...this.config.providers,\n };\n\n this.config.subscribers = {\n ...(await this.getRecrusiveClassesfromContextsObj(\n Models.ClassType.SUBSCRIBER,\n )),\n ...this.config.subscribers,\n };\n\n this.config.repositories = {\n ...(await this.getRecrusiveClassesfromContextsObj(\n Models.ClassType.REPOSITORY,\n )),\n ...this.config.repositories,\n };\n\n\n\n\n\n this.config.controllers = this.cloneClassesObjWithNewMetadata({\n classesInput: this.config.controllers,\n config: this.config,\n ctx: this,\n classType: Models.ClassType.CONTROLLER,\n });\n this.config.repositories = this.cloneClassesObjWithNewMetadata({\n classesInput: this.config.repositories,\n config: this.config,\n ctx: this,\n classType: Models.ClassType.REPOSITORY,\n });\n this.config.providers = this.cloneClassesObjWithNewMetadata({\n classesInput: this.config.providers,\n config: this.config,\n ctx: this,\n classType: Models.ClassType.PROVIDER,\n });\n this.config.subscribers = this.cloneClassesObjWithNewMetadata({\n classesInput: this.config.subscribers,\n config: this.config,\n ctx: this,\n classType: Models.ClassType.SUBSCRIBER,\n });\n\n\n\n for (const classTypeName of this.injectableTypesfromContexts) {\n this.classInstancesByNameObj[classTypeName] = {};\n this.objWithClassesInstancesArr[classTypeName] = [];\n }\n\n for (const classTypeName of this.injectableTypesfromContexts) {\n await this.createInstances(\n this.config[Models.ClassTypeKey[classTypeName]],\n classTypeName,\n );\n }\n\n\n\n if (this.mode === 'backend-frontend(tcp+udp)' && !this.config.abstract) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n\n\n\n if (!this.config.abstract) {\n this.disabledRealtime = !!this.config.disabledRealtime;\n/* */\n/* */\n/* */\n/* */\n/* */\n \n this.realtime = new RealtimeCore(this);\n }\n\n\n\n\n if (this.config.abstract) {\n this.logFramework &&\n Helpers.info(\n `[taon] Create abstract context: ${this.config.contextName}`,\n );\n } else {\n if (this.config.remoteHost) {\n this.logFramework &&\n Helpers.info(\n `[taon] Create context for remote host: ${this.config.remoteHost}`,\n );\n } else {\n this.logFramework &&\n Helpers.info(`[taon] Create context for host: ${this.config.host}`);\n }\n }\n\n\n\n Object.keys(this.config).forEach(key => {\n this.originalConfig[key] = this.config[key];\n });\n }\n\n\n\n private getAutoGeneratedConfig(): Models.DatabaseConfig {\n\n let databaseConfig: Models.DatabaseConfig;\n if (Helpers.isRunningInDocker()) {\n Helpers.info('Running in docker, using in mysql database');\n\n databaseConfig = {\n database: `tmp-db-${_.kebabCase(this.contextName)}.sqljs.db`,\n type: 'mysql',\n autoSave: true,\n synchronize: true,\n dropSchema: true,\n logging: this.logDb,\n databasePort: 3306,\n databaseHost: 'localhost',\n databaseUsername: 'root',\n databasePassword: 'admin',\n };\n } else {\n this.logFramework &&\n Helpers.info(\n `[taon][database] Automatically resolving database config for mode ${this.mode}`,\n );\n switch (this.mode) {\n\n case 'backend-frontend(ipc-electron)':\n return {\n location: `tmp-db-${_.kebabCase(this.contextName)}.sqljs`,\n type: 'sqljs',\n autoSave: true,\n synchronize: true,\n dropSchema: true,\n logging: this.logDb,\n };\n break;\n\n\n\n case 'backend-frontend(websql-electron)':\n case 'backend-frontend(websql)':\n databaseConfig = {\n location: `tmp-db-${_.kebabCase(this.contextName)}.sqljs`,\n type: 'sqljs',\n useLocalForage: true, // !!window['localforage'], // TODO this need to be checked in runtime\n autoSave: true,\n synchronize: true,\n dropSchema: true,\n logging: this.logDb,\n };\n\n let keepWebsqlDbDataAfterReload = false;\n\n keepWebsqlDbDataAfterReload =\n TaonAdmin.Instance.keepWebsqlDbDataAfterReload;\n\n\n if (keepWebsqlDbDataAfterReload) {\n databaseConfig.dropSchema = false;\n delete databaseConfig.synchronize; // false is not auto synchonize - from what I understand\n } else {\n databaseConfig.dropSchema = true;\n databaseConfig.synchronize = true;\n }\n\n break;\n\n\n\n case 'backend-frontend(tcp+udp)':\n databaseConfig = {\n database: `context-db-${_.kebabCase(this.contextName)}`,\n location: `tmp-db-${_.kebabCase(this.contextName)}.sqlite`,\n type: 'sqljs',\n autoSave: true,\n synchronize: true,\n dropSchema: true,\n logging: this.logDb,\n };\n break;\n\n }\n }\n return databaseConfig;\n\n }\n\n\n\n get ngZone(): any {\n\n return EndpointContext.ngZone;\n\n return;\n }\n\n\n\n startServer() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n\n\n displayRoutes(app) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n\n\n\n get modeAllowsDatabaseCreation() {\n return (\n this.mode === 'backend-frontend(tcp+udp)' ||\n this.mode === 'backend-frontend(websql)' ||\n this.mode === 'backend-frontend(ipc-electron)'\n );\n }\n\n\n\n\n private cloneClassWithNewMetadata = <\n T extends { new (...args: any[]): any },\n >({\n BaseClass,\n className,\n config,\n ctx,\n classType,\n }: {\n BaseClass: T;\n className: string;\n config: Models.ContextOptions<any, any, any, any, any, any>;\n ctx: EndpointContext;\n classType: Models.ClassType;\n }): T => {\n\n const cloneClass = () => {\n if (\n BaseClass[Symbols.fullClassNameStaticProperty] ===\n `${ctx.contextName}.${className}`\n ) {\n return BaseClass;\n }\n return class extends BaseClass {\n\n\n // @ts-ignore\n static [Symbols.orignalClass] = BaseClass;\n\n // @ts-ignore\n static [Symbols.fullClassNameStaticProperty] = `${ctx.contextName}.${className}`;\n\n // @ts-ignore\n static [Symbols.classNameStaticProperty] = className;\n\n static [Symbols.ctxInClassOrClassObj] = ctx;\n\n static __getFullPathForClass__(arr = []) {\n const name = this[Symbols.fullClassNameStaticProperty];\n arr.push(name);\n // @ts-ignore\n if (\n this[Symbols.orignalClass] && // @ts-ignore\n this[Symbols.orignalClass].__getFullPathForClass__\n ) {\n // @ts-ignore\n this[Symbols.orignalClass].__getFullPathForClass__(arr);\n }\n return arr.join('/');\n }\n static get fullPathForClass(): string {\n return this.__getFullPathForClass__();\n }\n [Symbols.ctxInClassOrClassObj] = ctx;\n\n\n };\n };\n\n const cloneClassFunction = cloneClass();\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n return cloneClassFunction;\n };\n\n\n\n\n\n private cloneClassesObjWithNewMetadata = ({\n classesInput,\n config,\n ctx,\n classType,\n }: {\n classesInput: any;\n config: Models.ContextOptions<any, any, any, any, any, any>;\n ctx: EndpointContext;\n classType: Models.ClassType;\n }) => {\n const classes = {};\n\n for (const key of Object.keys(classesInput || {})) {\n const BaseClass = classesInput[key];\n\n if (!BaseClass) {\n Helpers.error(`Class ${key} is not defined in context ${ctx.contextName}\n\n Please check if you have correct import in context file\n\n `);\n }\n\n var className = Reflect.getMetadata(\n Symbols.metadata.className,\n BaseClass,\n );\n\n\n\n\n\n className = className || key;\n BaseClass[Symbols.classNameStaticProperty] = className;\n\n const clonedClass = this.cloneClassWithNewMetadata({\n BaseClass,\n className,\n config,\n ctx,\n classType,\n });\n classes[className] = clonedClass;\n }\n return classes;\n };\n\n\n\n private async getRecrusiveClassesfromContextsObj(\n classType: Models.ClassType,\n ) {\n const arr = await this.getRecrusiveClassesfromContexts(classType);\n return arr.reduce((acc, c) => {\n acc[ClassHelpers.getName(c)] = c;\n return acc;\n }, {});\n }\n\n private async getRecrusiveClassesfromContexts(\n classType: Models.ClassType,\n arr = [],\n ) {\n const contexts = Object.values(this.config.contexts || {}) as ReturnType<\n typeof createContext\n >[];\n\n\n\n for (const ctx of contexts) {\n\n const ref = await ctx.__ref();\n\n const classesInput = ref.getClassFunBy(classType);\n\n\n const clonedClasses = Object.values(\n this.cloneClassesObjWithNewMetadata({\n classesInput,\n config: this.config,\n ctx: this,\n classType,\n }),\n );\n\n clonedClasses.forEach(c => arr.push(c));\n\n await ref.getRecrusiveClassesfromContexts(classType, arr);\n }\n return arr as Function[];\n }\n\n\n\n getClassInstanceObjBy(classType: Models.ClassType): any {\n return this.classInstancesByNameObj[classType];\n }\n\n\n\n private getClassesInstancesArrBy(classType: Models.ClassType): any[] {\n return this.objWithClassesInstancesArr[classType];\n }\n\n\n\n inject<T>(\n ctor: new (...args: any[]) => T,\n options?: {\n localInstance?: boolean;\n contextClassInstance?: BaseClass;\n locaInstanceConstructorArgs?: ConstructorParameters<typeof ctor>;\n },\n ): T {\n if (!options) {\n options = {} as any;\n }\n const className = ClassHelpers.getName(ctor);\n\n const locaInstanceConstructorArgs =\n options.locaInstanceConstructorArgs || [];\n\n if (this.isCLassType(Models.ClassType.REPOSITORY, ctor)) {\n options.localInstance = true;\n }\n\n if (options?.localInstance) {\n const ctxClassFn = this.getClassFunByClassName(className);\n let entityName: string = '';\n\n if (className === 'BaseRepository') {\n const entityFn = locaInstanceConstructorArgs[0];\n const entity = entityFn && entityFn();\n entityName = entity && ClassHelpers.getName(entity);\n }\n\n if (!options.contextClassInstance[this.localInstaceObjSymbol]) {\n options.contextClassInstance[this.localInstaceObjSymbol] = {};\n }\n const instanceKey = className + (entityName ? `.${entityName}` : '');\n const existed =\n options.contextClassInstance[this.localInstaceObjSymbol][instanceKey];\n if (existed) {\n\n return existed;\n }\n\n if (!ctxClassFn) {\n throw new Error(`Not able to inject \"${className}\" inside context \"${this.contextName}\"\n\n Make sure they share the same context or import context where \"${className}\" is defined.\n\n `);\n }\n\n const injectedInstance = new (ctxClassFn as any)(\n ...locaInstanceConstructorArgs,\n );\n options.contextClassInstance[this.localInstaceObjSymbol][instanceKey] =\n injectedInstance;\n\n return injectedInstance;\n }\n\n const contextScopeInstance = this.allClassesInstances[className];\n\n\n\n return contextScopeInstance;\n }\n\n /**\n * alias for inject\n */\n getInstanceBy<T>(ctor: new (...args: any[]) => T): T {\n return this.inject(ctor, { localInstance: false });\n }\n\n\n checkIfContextInitialized() {\n if (_.isUndefined(this.config)) {\n throw new Error(`Please check if your context has been initialized.\n\n\n await Context.initialize();\n\n\n\n `);\n }\n }\n\n\n getClassFunBy(classType: Models.ClassType) {\n this.checkIfContextInitialized();\n switch (classType) {\n case Models.ClassType.CONTROLLER:\n return this.config.controllers;\n case Models.ClassType.ENTITY:\n return this.config.entities;\n case Models.ClassType.PROVIDER:\n return this.config.providers;\n case Models.ClassType.REPOSITORY:\n return this.config.repositories;\n case Models.ClassType.SUBSCRIBER:\n return this.config.subscribers;\n }\n }\n\n isCLassType(classType: Models.ClassType, classFn: Function): boolean {\n return !!this.getClassFunBy(classType)[ClassHelpers.getName(classFn)];\n }\n\n /**\n * Only for injectable types\n * Only for classType: CONTROLLER, REPOSITORY, PROVIDER\n */\n getClassFunByClassName(className: string): Function {\n for (const classTypeName of this.allTypesfromContexts) {\n const classesForInjectableType =\n this.config[Models.ClassTypeKey[classTypeName]];\n\n if (classesForInjectableType[className]) {\n return classesForInjectableType[className];\n }\n }\n }\n\n getClassFunByClass(classFunction: Function): Function {\n const className = ClassHelpers.getName(classFunction);\n return this.getClassFunByClassName(className);\n }\n\n getClassFunByArr(classType: Models.ClassType) {\n return Object.values(this.getClassFunBy(classType) || {}) as Function[];\n }\n\n\n\n private async createInstances(classes: any, classType: Models.ClassType) {\n\n\n\n\n\n for (const classFn of [\n\n ...Object.values(classes),\n ]) {\n const instance = DITaonContainer.resolve(classFn as any) as any;\n const classInstancesByNameObj = this.classInstancesByNameObj[classType];\n const className = ClassHelpers.getName(classFn);\n\n classInstancesByNameObj[className] = instance;\n\n this.config[Models.ClassTypeKey[classType]][className] = classFn;\n this.objWithClassesInstancesArr[classType].push(instance);\n this.allClassesInstances[className] = instance;\n }\n }\n\n\n\n async reinitControllers() {\n if(this.remoteHost) {\n return;\n }\n\n\n\n const controllers = this.getClassesInstancesArrBy(\n Models.ClassType.CONTROLLER,\n );\n\n for (const ctrl of controllers) {\n if (_.isFunction(ctrl.initExampleDbData)) {\n await Helpers.runSyncOrAsync({\n functionFn: ctrl.initExampleDbData,\n context: ctrl,\n });\n }\n }\n\n\n\n }\n async initClasses() {\n if(this.remoteHost) {\n return;\n }\n for (const classTypeName of [\n Models.ClassType.PROVIDER,\n Models.ClassType.REPOSITORY,\n Models.ClassType.CONTROLLER,\n Models.ClassType.ENTITY,\n ]) {\n\n\n\n\n for (const classFun of this.getClassFunByArr(classTypeName) as any[]) {\n if (_.isFunction(classFun._)) {\n await Helpers.runSyncOrAsync({\n functionFn: classFun._,\n context: classFun,\n });\n\n\n\n\n\n\n }\n }\n\n\n\n\n }\n\n for (const classTypeName of [\n Models.ClassType.PROVIDER,\n Models.ClassType.REPOSITORY,\n Models.ClassType.CONTROLLER,\n ]) {\n\n\n\n\n for (const ctrl of this.getClassesInstancesArrBy(classTypeName)) {\n if (_.isFunction(ctrl._)) {\n await Helpers.runSyncOrAsync({\n functionFn: ctrl._,\n context: ctrl,\n });\n }\n }\n\n\n\n\n }\n }\n\n\n\n isActiveOn(classInstance: object): boolean {\n let contextRef: EndpointContext =\n classInstance[Symbols.ctxInClassOrClassObj];\n return this === contextRef;\n }\n\n\n\n get uri() {\n const url = this.host\n ? new URL(this.host)\n : this.remoteHost\n ? new URL(this.remoteHost)\n : void 0;\n return url;\n }\n\n\n\n get isHttpServer() {\n return this.uri.protocol === 'https:';\n }\n\n\n\n /**\n * ipc/udp needs this\n */\n public get contextName() {\n return this.config.contextName;\n }\n\n\n\n public get publicAssets() {\n return this.config?.publicAssets || [];\n }\n\n\n\n get isProductionMode() {\n return this.config.productionMode;\n }\n\n\n\n get remoteHost() {\n return this.config.remoteHost;\n }\n\n\n\n get host() {\n return this.config.host;\n }\n\n\n\n get orgin() {\n return this.uri?.origin;\n }\n\n\n\n async initSubscribers() {\n\n if(this.remoteHost) {\n return;\n }\n const subscriberClasses = this.getClassFunByArr(\n Models.ClassType.SUBSCRIBER,\n );\n for (const subscriberClassFn of subscriberClasses) {\n const options = Reflect.getMetadata(\n Symbols.metadata.options.subscriber,\n subscriberClassFn,\n ) as TaonSubscriberOptions;\n\n\n EventSubscriber()(subscriberClassFn);\n }\n\n }\n\n\n\n async initEntities() {\n\n if(this.remoteHost) {\n return;\n }\n const entities = this.getClassFunByArr(Models.ClassType.ENTITY);\n for (const entity of entities) {\n const options = Reflect.getMetadata(\n Symbols.metadata.options.entity,\n entity,\n ) as TaonEntityOptions;\n const createTable = _.isUndefined(options.createTable)\n ? true\n : options.createTable;\n const nameForEntity = ClassHelpers.getName(entity);\n\n if (_.isUndefined(options.createTable) ? true : options.createTable) {\n this.logDb &&\n console.info(\n `[taon][typeorm] create table for entity \"${nameForEntity}\" ? '${createTable}'`,\n );\n\n TypeormEntity(nameForEntity)(entity);\n } else {\n this.logDb &&\n console.info(\n `[taon][typeorm] create table for entity \"${nameForEntity}\" ? '${createTable}'`,\n );\n }\n }\n\n }\n\n\n\n\n async initDatabaseConnection() {\n\n if(this.remoteHost) {\n return;\n }\n const entities = (\n this.config.override?.entities\n ? this.config.override.entities\n : this.getClassFunByArr(Models.ClassType.ENTITY)\n ).map(entityFn => {\n return ClassHelpers.getOrginalClass(entityFn);\n });\n\n const subscribers = this.config.override?.subscribers\n ? this.config.override.subscribers\n : this.getClassFunByArr(Models.ClassType.SUBSCRIBER);\n\n const dataSourceDbConfig = _.isObject(this.databaseConfig)\n ? ({\n type: this.databaseConfig.type,\n port: this.databaseConfig.databasePort,\n host: this.databaseConfig.databaseHost,\n database: this.databaseConfig.database as any,\n username: this.databaseConfig.databaseUsername,\n password: this.databaseConfig.databasePassword,\n useLocalForage: this.databaseConfig.useLocalForage,\n entities,\n subscribers,\n synchronize: this.databaseConfig.synchronize,\n autoSave: this.databaseConfig.autoSave,\n dropSchema: this.databaseConfig.dropSchema,\n logging: !!this.databaseConfig.logging,\n location: this.databaseConfig.location,\n } as DataSourceOptions)\n : ({} as DataSourceOptions);\n\n\n this.logFramework &&\n console.log(\n `[Context: \"${this.contextName}\"] dataSourceDbConfig`,\n dataSourceDbConfig,\n );\n\n if (this.modeAllowsDatabaseCreation && this.databaseConfig) {\n this.logDb &&\n this.logFramework &&\n Helpers.info('[taon][database] prepare typeorm connection...');\n try {\n const connection = new DataSource(dataSourceDbConfig);\n this.connection = connection;\n await this.connection.initialize();\n } catch (error) {\n console.error(error?.message || error);\n }\n\n if (!this.connection?.isInitialized) {\n console.log('WRONG CONFIG', dataSourceDbConfig);\n throw new Error(`Something wrong with connection init in ${this.mode}`);\n/* */\n/* */\n \n }\n\n (this.logDb || this.logFramework) &&\n console.info(\n `\n\n CONTECTION OK for ${this.contextName} - ${this.mode}\n\n [taon][typeorm] db prepration done.. db initialize=${this.connection?.isInitialized}\n\n\n `,\n dataSourceDbConfig,\n );\n\n\n\n\n\n\n\n\n\n\n } else {\n Helpers.info(`[taon][typeorm] Not initing db for mode ${this.mode}`);\n }\n\n }\n\n\n\n\n initMetadata() {\n const allControllers = this.getClassFunByArr(Models.ClassType.CONTROLLER);\n\n for (const controllerClassFn of allControllers) {\n controllerClassFn[Symbols.classMethodsNames] =\n ClassHelpers.getMethodsNames(controllerClassFn);\n const configs = ClassHelpers.getControllerConfigs(controllerClassFn);\n\n const classConfig: Models.RuntimeControllerConfig = configs[0];\n\n const parentscalculatedPath = _.slice(configs, 1)\n .reverse()\n .map(bc => {\n if (TaonHelpers.isGoodPath(bc.path)) {\n return bc.path;\n }\n return bc.className;\n })\n .join('/');\n\n if (TaonHelpers.isGoodPath(classConfig.path)) {\n classConfig.calculatedPath = classConfig.path;\n } else {\n classConfig.calculatedPath =\n `${parentscalculatedPath}/${ClassHelpers.getName(controllerClassFn)}`\n .replace(/\\/\\//g, '/')\n .split('/')\n .reduce((acc, bc) => {\n return _.last(acc) === bc ? acc : [...acc, bc];\n }, [])\n .join('/');\n }\n\n _.slice(configs, 1).forEach(bc => {\n const alreadyIs = classConfig.methods;\n const toMerge = _.cloneDeep(bc.methods);\n for (const key in toMerge) {\n if (toMerge.hasOwnProperty(key) && !alreadyIs[key]) {\n const element = toMerge[key];\n alreadyIs[key] = element;\n }\n }\n });\n\n/* */\n/* */\n \n this.logHttp &&\n console.groupCollapsed(\n `[taon][express-server] routes [${classConfig.className}]`,\n );\n/* */\n/* */\n \n\n\n Object.keys(classConfig.methods).forEach(methodName => {\n const methodConfig: Models.MethodConfig =\n classConfig.methods[methodName];\n\n const type: Models.Http.Rest.HttpMethod = methodConfig.type;\n const expressPath = methodConfig.global\n ? `/${methodConfig.path?.replace(/\\//, '')}`\n : TaonHelpers.getExpressPath(classConfig, methodConfig);\n\n\n if (Helpers.isNode || Helpers.isWebSQL) {\n\n\n const { routePath, method } = this.initServer(\n type,\n methodConfig,\n classConfig,\n expressPath,\n controllerClassFn,\n );\n\n this.activeRoutes.push({\n routePath,\n method,\n });\n\n }\n\n const shouldInitClient =\n Helpers.isBrowser || this.remoteHost || Helpers.isWebSQL;\n\n if (shouldInitClient) {\n\n\n\n\n\n\n\n this.initClient(controllerClassFn, type, methodConfig, expressPath);\n }\n });\n\n/* */\n/* */\n \n this.logHttp && console.groupEnd();\n/* */\n/* */\n \n }\n }\n\n\n\n public writeActiveRoutes() {\n if(this.remoteHost) {\n return;\n }\n const contexts: EndpointContext[] = [this];\n\n\n const troutes = this.activeRoutes.map(({ method, routePath }) => {\n return (\n TaonHelpers.fillUpTo(method.toUpperCase() + ':', 10) +\n this.uri.href.replace(/\\/$/, '') +\n routePath\n );\n\n\n\n });\n const routes = [\n ...['', `---------- FOR HOST ${this.uri.href} ----------`],\n ...troutes,\n ];\n const fileName = path.join(\n/* */\n/* */\n \n `tmp-routes-${_.kebabCase(this.config.contextName)}.json`,\n );\n\n this.logFramework && console.log(`[taon] routes file: ${fileName} `);\n\n/* */\n/* */\n/* */\n/* */\n/* */\n \n\n }\n\n\n\n public get middlewares(): Models.MiddlewareType[] {\n/* */\n/* */\n return (void 0);\n }\n\n\n\n private initMiddlewares() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n\n\n\n private initServer(\n\n type: Models.Http.Rest.HttpMethod,\n methodConfig: Models.MethodConfig,\n classConfig: Models.RuntimeControllerConfig,\n expressPath: string,\n target: Function,\n\n ): any {\n\n\n const requestHandler =\n methodConfig.requestHandler &&\n typeof methodConfig.requestHandler === 'function'\n ? methodConfig.requestHandler\n : (req, res, next) => {\n next();\n };\n\n\n const url = this.uri;\n\n\n const getResult = async (resolvedParams, req, res) => {\n const response: Models.Http.Response<any> =\n methodConfig.descriptor.value.apply(\n /**\n * Context for method @GET,@PUT etc.\n */\n this.getInstanceBy(target as any),\n /**\n * Params for metjod @GET, @PUT etc.\n */\n resolvedParams,\n );\n let result = await getResponseValue(response, { req, res });\n return result;\n };\n\n\n url.pathname = url.pathname.replace(/\\/$/, '');\n expressPath = url.pathname.startsWith('/')\n ? `${url.pathname}${expressPath}`\n : expressPath;\n expressPath = expressPath.replace(/\\/\\//g, '/');\n\n\n\n if (Helpers.isElectron) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n\n if (!this.remoteHost) {\n\n\n if (Helpers.isWebSQL) {\n if (!this.expressApp[type.toLowerCase()]) {\n this.expressApp[type.toLowerCase()] = () => {};\n }\n }\n\n\n\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n\n return {\n routePath: expressPath,\n method: methodConfig.type,\n };\n }\n\n\n\n /**\n * client can be browser or nodejs (when remote host)\n */\n private initClient(\n\n target: Function,\n type: Models.Http.Rest.HttpMethod,\n methodConfig: Models.Http.Rest.MethodConfig,\n expressPath: string,\n\n ): void {\n const ctx = this;\n\n this.logHttp && console.log(`${type?.toUpperCase()} ${expressPath} `);\n\n\n let storage: any;\n if (Helpers.isBrowser) {\n storage = window;\n }\n/* */\n/* */\n/* */\n/* */\n \n\n\n const orgMethods = target.prototype[methodConfig.methodName];\n\n\n\n if (Helpers.isElectron) {\n target.prototype[methodConfig.methodName] = function (...args) {\n const received = new Promise(async (resolve, reject) => {\n const headers = {};\n const { request, response } = TaonHelpers.websqlMocks(headers);\n\n Helpers.ipcRenderer.once(\n TaonHelpers.ipcKeyNameResponse(target, methodConfig, expressPath),\n (event, responseData) => {\n let res: any = responseData;\n console.log({ responseData });\n try {\n const body = res;\n res = new ModelsNg2Rest.HttpResponse(\n {\n body: void 0,\n isArray: void 0 as any,\n method: methodConfig.type,\n url: `${ctx.uri.origin}${\n '' // TODO express path\n }${methodConfig.path} `,\n },\n Helpers.isBlob(body) || _.isString(body)\n ? body\n : JSON.stringify(body),\n RestHeaders.from(headers),\n void 0,\n () => body,\n );\n\n resolve(res);\n } catch (error) {\n console.error(error);\n reject(error);\n }\n },\n );\n Helpers.ipcRenderer.send(\n TaonHelpers.ipcKeyNameRequest(target, methodConfig, expressPath),\n args,\n );\n });\n received['observable'] = from(received);\n return {\n received,\n };\n };\n return;\n }\n\n\n\n\n\n\n const MIN_TIMEOUT = 500;\n const MIN_TIMEOUT_STEP = 200;\n const timeout =\n window[Symbols.old.WEBSQL_REST_PROGRESS_TIMEOUT] || MIN_TIMEOUT;\n\n let updateFun: Subject<number> =\n window[Symbols.old.WEBSQL_REST_PROGRESS_FUN];\n if (!window[Symbols.old.WEBSQL_REST_PROGRESS_FUN]) {\n window[Symbols.old.WEBSQL_REST_PROGRESS_FUN] = new Subject();\n }\n updateFun = window[Symbols.old.WEBSQL_REST_PROGRESS_FUN];\n\n let startFun: Subject<void> =\n window[Symbols.old.WEBSQL_REST_PROGRESS_FUN_START];\n if (!window[Symbols.old.WEBSQL_REST_PROGRESS_FUN_START]) {\n window[Symbols.old.WEBSQL_REST_PROGRESS_FUN_START] = new Subject();\n }\n startFun = window[Symbols.old.WEBSQL_REST_PROGRESS_FUN_START];\n\n let doneFun: Subject<void> =\n window[Symbols.old.WEBSQL_REST_PROGRESS_FUN_DONE];\n if (!window[Symbols.old.WEBSQL_REST_PROGRESS_FUN_DONE]) {\n window[Symbols.old.WEBSQL_REST_PROGRESS_FUN_DONE] = new Subject();\n }\n doneFun = window[Symbols.old.WEBSQL_REST_PROGRESS_FUN_DONE];\n\n let periodsToUpdate = 0;\n if (timeout >= MIN_TIMEOUT) {\n periodsToUpdate = Math.floor(timeout / MIN_TIMEOUT_STEP);\n }\n\n\n\n const periods = async () => {\n startFun.next();\n for (let n = 1; n <= periodsToUpdate; n++) {\n\n\n\n let upValue = Math.round(((MIN_TIMEOUT_STEP * n) / timeout) * 100);\n if (upValue > 100) {\n upValue = 100;\n }\n\n updateFun.next(upValue);\n\n await new Promise((resolve, reject) => {\n setTimeout(() => {\n resolve(void 0);\n }, MIN_TIMEOUT_STEP);\n });\n\n }\n doneFun.next();\n };\n\n\n target.prototype[methodConfig.methodName] = function (...args) {\n\n\n\n const received = new Promise(async (resolve, reject) => {\n const headers = {};\n const { request, response } = TaonHelpers.websqlMocks(headers);\n\n let res: any;\n try {\n res = await Helpers.runSyncOrAsync({\n functionFn: orgMethods,\n context: this,\n arrayOfParams: args,\n });\n\n if (typeof res === 'function') {\n res = await Helpers.runSyncOrAsync({\n functionFn: res,\n context: this,\n arrayOfParams: [request, response],\n });\n }\n\n if (typeof res === 'function') {\n res = await Helpers.runSyncOrAsync({\n functionFn: res,\n context: this,\n arrayOfParams: [request, response],\n });\n }\n\n\n if (typeof res === 'object' && res?.received) {\n res = await res.received;\n }\n\n const body = res;\n\n res = new ModelsNg2Rest.HttpResponse(\n {\n body: void 0,\n isArray: void 0 as any,\n method: methodConfig.type,\n url: `${ctx.uri.origin}${\n '' // TODO express path\n }${methodConfig.path} `,\n },\n Helpers.isBlob(body) || _.isString(body)\n ? body\n : JSON.stringify(body),\n RestHeaders.from(headers),\n void 0,\n () => body,\n );\n\n\n\n\n\n await periods();\n resolve(res);\n } catch (error) {\n await periods();\n console.error(error);\n\n\n\n reject(error);\n }\n });\n received['observable'] = from(received);\n\n if (Helpers.isWebSQL) {\n return {\n received,\n };\n }\n };\n if (Helpers.isWebSQL) {\n return;\n }\n\n\n\n\n\n target.prototype[methodConfig.methodName] = function (this: {}, ...args) {\n\n\n\n\n\n if (!storage[Symbols.old.ENDPOINT_META_CONFIG])\n storage[Symbols.old.ENDPOINT_META_CONFIG] = {};\n if (!storage[Symbols.old.ENDPOINT_META_CONFIG][ctx.uri.href])\n storage[Symbols.old.ENDPOINT_META_CONFIG][ctx.uri.href] = {};\n const endpoints = storage[Symbols.old.ENDPOINT_META_CONFIG];\n let rest: ModelsNg2Rest.ResourceModel<any, any>;\n if (!endpoints[ctx.uri.href][expressPath]) {\n let headers = {};\n if (methodConfig.contentType && !methodConfig.responseType) {\n rest = Resource.create(\n ctx.uri.href,\n expressPath,\n Symbols.old.MAPPING_CONFIG_HEADER as any,\n Symbols.old.CIRCURAL_OBJECTS_MAP_BODY as any,\n RestHeaders.from({\n 'Content-Type': methodConfig.contentType,\n Accept: methodConfig.contentType,\n }),\n );\n } else if (methodConfig.contentType && methodConfig.responseType) {\n rest = Resource.create(\n ctx.uri.href,\n expressPath,\n Symbols.old.MAPPING_CONFIG_HEADER as any,\n Symbols.old.CIRCURAL_OBJECTS_MAP_BODY as any,\n RestHeaders.from({\n 'Content-Type': methodConfig.contentType,\n Accept: methodConfig.contentType,\n responsetypeaxios: methodConfig.responseType,\n }),\n );\n } else if (!methodConfig.contentType && methodConfig.responseType) {\n rest = Resource.create(\n ctx.uri.href,\n expressPath,\n Symbols.old.MAPPING_CONFIG_HEADER as any,\n Symbols.old.CIRCURAL_OBJECTS_MAP_BODY as any,\n RestHeaders.from({\n responsetypeaxios: methodConfig.responseType,\n }),\n );\n } else {\n rest = Resource.create(\n ctx.uri.href,\n expressPath,\n Symbols.old.MAPPING_CONFIG_HEADER as any,\n Symbols.old.CIRCURAL_OBJECTS_MAP_BODY as any,\n );\n }\n\n endpoints[ctx.uri.href][expressPath] = rest;\n } else {\n rest = endpoints[ctx.uri.href][expressPath] as any;\n }\n\n const method = type.toLowerCase();\n const isWithBody = method === 'put' || method === 'post';\n const pathPrams = {};\n let queryParams = {};\n let bodyObject = {};\n args.forEach((param, i) => {\n let currentParam: Models.Http.Rest.ParamConfig = void 0 as any;\n\n for (let pp in methodConfig.parameters) {\n let v = methodConfig.parameters[pp];\n if (v.index === i) {\n currentParam = v;\n break;\n }\n }\n\n if (currentParam.paramType === 'Path') {\n pathPrams[currentParam.paramName] = param;\n }\n if (currentParam.paramType === 'Query') {\n if (currentParam.paramName) {\n const mapping = Mapping.decode(param, !ctx.isProductionMode);\n if (mapping) {\n rest.headers.set(\n `${Symbols.old.MAPPING_CONFIG_HEADER_QUERY_PARAMS}${currentParam.paramName} `,\n JSON.stringify(mapping),\n );\n }\n queryParams[currentParam.paramName] = param;\n } else {\n const mapping = Mapping.decode(param, !ctx.isProductionMode);\n if (mapping) {\n rest.headers.set(\n Symbols.old.MAPPING_CONFIG_HEADER_QUERY_PARAMS,\n JSON.stringify(mapping),\n );\n }\n queryParams = _.cloneDeep(param);\n }\n }\n if (currentParam.paramType === 'Header') {\n if (currentParam.paramName) {\n if (currentParam.paramName === Symbols.old.MDC_KEY) {\n\n rest.headers.set(\n currentParam.paramName,\n encodeURIComponent(JSON.stringify(param)),\n );\n } else {\n rest.headers.set(currentParam.paramName, param);\n }\n } else {\n for (let header in param) {\n rest.headers.set(header, param[header]);\n }\n }\n }\n if (currentParam.paramType === 'Cookie') {\n Resource.Cookies.write(\n currentParam.paramName,\n param,\n currentParam.expireInSeconds,\n );\n }\n if (currentParam.paramType === 'Body') {\n if (currentParam.paramName) {\n if (ClassHelpers.getName(bodyObject) === 'FormData') {\n throw new Error(`[taon - framework] Don use param names when posting / putting FormData.\n Use this:\n\n(@Taon.Http.Param.Body() formData: FormData) ...\n\n\ninstead\n\n (@Taon.Http.Param.Body('${currentParam.paramName}') formData: FormData) ...\n\n`);\n }\n const mapping = Mapping.decode(param, !ctx.isProductionMode);\n if (mapping) {\n rest.headers.set(\n `${Symbols.old.MAPPING_CONFIG_HEADER_BODY_PARAMS}${currentParam.paramName} `,\n JSON.stringify(mapping),\n );\n }\n bodyObject[currentParam.paramName] = param;\n } else {\n const mapping = Mapping.decode(param, !ctx.isProductionMode);\n if (mapping) {\n rest.headers.set(\n Symbols.old.MAPPING_CONFIG_HEADER_BODY_PARAMS,\n JSON.stringify(mapping),\n );\n }\n bodyObject = param;\n }\n }\n });\n\n if (\n typeof bodyObject === 'object' &&\n ClassHelpers.getName(bodyObject) !== 'FormData'\n ) {\n let circuralFromItem = [];\n bodyObject = JSON10.parse(\n JSON10.stringify(bodyObject, void 0, void 0, circs => {\n circuralFromItem = circs;\n }),\n );\n rest.headers.set(\n Symbols.old.CIRCURAL_OBJECTS_MAP_BODY,\n JSON10.stringify(circuralFromItem),\n );\n }\n\n if (typeof queryParams === 'object') {\n let circuralFromQueryParams = [];\n queryParams = JSON10.parse(\n JSON10.stringify(queryParams, void 0, void 0, circs => {\n circuralFromQueryParams = circs;\n }),\n );\n\n rest.headers.set(\n Symbols.old.CIRCURAL_OBJECTS_MAP_QUERY_PARAM,\n JSON10.stringify(circuralFromQueryParams),\n );\n }\n\n\n const httpResultObj = {\n received: isWithBody\n ? rest.model(pathPrams)[method](bodyObject, [queryParams])\n : rest.model(pathPrams)[method]([queryParams]),\n };\n return httpResultObj;\n };\n\n }\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/endpoint-context.ts","\n\n\nimport { Helpers } from 'tnp-core/websql';\nimport { EndpointContext } from './endpoint-context';\nimport { Models } from './models';\n\nimport { ENV } from './env';\n\nimport { TaonAdmin } from './ui/taon-admin-mode-configuration/taon-admin.service';\n\n\n\n\n\n\nexport const createContext = <\n\n CTX extends Record<string, object>,\n CTRL extends Record<string, new (...args: any[]) => any>,\n ENTITY extends Record<string, new (...args: any[]) => any>,\n REPO extends Record<string, new (...args: any[]) => any>,\n PROVIDER extends Record<string, new (...args: any[]) => any>,\n SUBSCRIBER extends Record<string, new (...args: any[]) => any>,\n\n>(\n configFn: (\n env: any,\n ) => Models.ContextOptions<CTX, CTRL, ENTITY, REPO, PROVIDER, SUBSCRIBER>,\n) => {\n let config = configFn(ENV);\n\n const endpointContextRef = new EndpointContext(config, configFn);\n\n const res = {\n\n types: {\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n get controllers() {\n return config.controllers;\n },\n get repositories() {\n return config.repositories;\n },\n get providers() {\n return config.providers;\n },\n get subscribers() {\n return config.subscribers;\n },\n },\n\n\n get contexts() {\n return config.contexts;\n },\n get contextName() {\n return config.contextName;\n },\n\n\n /**\n * @deprecated\n * - get reference to internal context\n */\n async __ref() {\n if (!endpointContextRef.inited) {\n await endpointContextRef.init({\n initFromRecrusiveContextResovle: true,\n });\n }\n return endpointContextRef;\n },\n /**\n * only for internal use\n * @deprecated\n */\n get __refSync() {\n return endpointContextRef;\n },\n getClassInstance<T>(ctor: new (...args: any[]) => T): T {\n return endpointContextRef.getInstanceBy(ctor);\n },\n\n getClass<T>(ctor: new (...args: any[]) => T): new (...args: any[]) => T {\n const classFun = endpointContextRef.getClassFunByClass(ctor);\n return classFun as any;\n\n\n\n\n\n\n\n\n\n\n\n\n\n },\n\n\n /**\n * - create controller instances for context\n * - init database (if enable) + migation scripts\n */\n initialize: async (overrideOptions?:{\n overrideHost?: string;\n overrideRemoteHost?: string;\n }): Promise<EndpointContext> => {\n return await new Promise(async (resolve, reject) => {\n setTimeout(async () => {\n await endpointContextRef.init({\n ...overrideOptions,\n });\n if (config.abstract) {\n throw new Error(`Abstract context can not be initialized`);\n }\n\n await endpointContextRef.initEntities();\n await endpointContextRef.initSubscribers();\n\n\n await endpointContextRef.initDatabaseConnection();\n\n\n\n\n\n\n endpointContextRef.initMetadata();\n endpointContextRef.startServer();\n\n endpointContextRef.writeActiveRoutes();\n\n\n await endpointContextRef.initClasses();\n let keepWebsqlDbDataAfterReload = false;\n\n keepWebsqlDbDataAfterReload =\n TaonAdmin.Instance.keepWebsqlDbDataAfterReload;\n\n if (!Helpers.isNode && keepWebsqlDbDataAfterReload) {\n Helpers.info(`[taon] Keep websql data after reload`);\n } else {\n await endpointContextRef.reinitControllers();\n }\n resolve(endpointContextRef);\n });\n });\n },\n\n /**\n * realtime communication with server\n * Udp socket.io (or ipc) based.\n */\n get realtime() {\n return {\n get client() {\n return endpointContextRef.realtimeClient;\n },\n get server() {\n return endpointContextRef.realtimeServer;\n }\n }\n },\n };\n return res;\n};\n\n\n ;({}); // @--end-of-file-for-module=taon lib/create-context.ts","\n\nimport { createContext } from '../create-context';\nimport { BaseRepository } from './base-repository';\n\nconst BaseContext = createContext(() => ({\n contextName: 'BaseContext',\n abstract: true,\n repositories: {\n // @ts-ignore\n BaseRepository,\n },\n}));\n\nexport { BaseContext };\n\n ;({}); // @--end-of-file-for-module=taon lib/base-classes/base-context.ts","\n\nimport { ClassHelpers } from '../../helpers/class-helpers';\nimport { Symbols } from '../../symbols';\nimport { Models } from '../../models';\nimport { _ } from 'tnp-core/websql';\nexport function TaonSubscriber(options: TaonSubscriberOptions) {\n return function (constructor: Function) {\n Reflect.defineMetadata(\n Symbols.metadata.options.repository,\n options,\n constructor,\n );\n Reflect.defineMetadata(\n Symbols.metadata.className,\n options?.className || constructor.name,\n constructor,\n );\n ClassHelpers.setName(constructor, options?.className);\n } as any;\n}\n\nexport class TaonSubscriberOptions<\n T = any,\n> extends Models.DecoratorAbstractOpt {\n allowedEvents?: (keyof T)[];\n}\n\n\n ;({}); // @--end-of-file-for-module=taon lib/decorators/classes/subscriber-decorator.ts","\n\nimport { EntitySubscriberInterface, RecoverEvent, SoftRemoveEvent, InsertEvent, TransactionStartEvent, TransactionCommitEvent, TransactionRollbackEvent, RemoveEvent, UpdateEvent, } from 'taon-typeorm/websql';/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n\nimport { BaseInjector } from './base-injector';\nimport { TaonSubscriber } from '../decorators/classes/subscriber-decorator';\nimport { _ } from 'tnp-core/websql';\n\n@TaonSubscriber({\n className: 'BaseSubscriberForEntity',\n})\nexport abstract class BaseSubscriberForEntity<Entity = any>\n extends BaseInjector\n implements EntitySubscriberInterface\n{\n abstract listenTo(): new (...args) => Entity;\n\n /**\n * Called after entity is loaded.\n */\n afterLoad(entity: any) {\n this.__endpoint_context__.logDb &&\n console.log(`AFTER ENTITY LOADED: `, entity);\n }\n\n /**\n * Called before query execution.\n */\n beforeQuery(event: any) {\n\n this.__endpoint_context__.logDb &&\n console.log(`BEFORE QUERY: `, event.query);\n }\n\n /**\n * Called after query execution.\n */\n afterQuery(event: any) {\n\n this.__endpoint_context__.logDb &&\n console.log(`AFTER QUERY: `, event.query);\n }\n\n /**\n * Called before entity insertion.\n */\n beforeInsert(event: InsertEvent<any>) {\n this.__endpoint_context__.logDb &&\n console.log(`BEFORE ENTITY INSERTED: `, event.entity);\n }\n\n /**\n * Called after entity insertion.\n */\n afterInsert(event: InsertEvent<any>) {\n this.__endpoint_context__.logDb &&\n console.log(`AFTER ENTITY INSERTED: `, event.entity);\n }\n\n /**\n * Called before entity update.\n */\n beforeUpdate(event: UpdateEvent<any>) {\n this.__endpoint_context__.logDb &&\n console.log(`BEFORE ENTITY UPDATED: `, event.entity);\n }\n\n /**\n * Called after entity update.\n */\n afterUpdate(event: UpdateEvent<any>) {\n this.__endpoint_context__.logDb &&\n console.log(`AFTER ENTITY UPDATED: `, event.entity);\n }\n\n /**\n * Called before entity removal.\n */\n beforeRemove(event: RemoveEvent<any>) {\n this.__endpoint_context__.logDb &&\n console.log(\n `BEFORE ENTITY WITH ID ${event.entityId} REMOVED: `,\n event.entity,\n );\n }\n\n /**\n * Called after entity removal.\n */\n afterRemove(event: RemoveEvent<any>) {\n this.__endpoint_context__.logDb &&\n console.log(\n `AFTER ENTITY WITH ID ${event.entityId} REMOVED: `,\n event.entity,\n );\n }\n\n /**\n * Called before entity removal.\n */\n beforeSoftRemove(event: SoftRemoveEvent<any>) {\n this.__endpoint_context__.logDb &&\n console.log(\n `BEFORE ENTITY WITH ID ${event.entityId} SOFT REMOVED: `,\n event.entity,\n );\n }\n\n /**\n * Called after entity removal.\n */\n afterSoftRemove(event: SoftRemoveEvent<any>) {\n this.__endpoint_context__.logDb &&\n console.log(\n `AFTER ENTITY WITH ID ${event.entityId} SOFT REMOVED: `,\n event.entity,\n );\n }\n\n /**\n * Called before entity recovery.\n */\n beforeRecover(event: RecoverEvent<any>) {\n this.__endpoint_context__.logDb &&\n console.log(\n `BEFORE ENTITY WITH ID ${event.entityId} RECOVERED: `,\n event.entity,\n );\n }\n\n /**\n * Called after entity recovery.\n */\n afterRecover(event: RecoverEvent<any>) {\n this.__endpoint_context__.logDb &&\n console.log(\n `AFTER ENTITY WITH ID ${event.entityId} RECOVERED: `,\n event.entity,\n );\n }\n\n /**\n * Called before transaction start.\n */\n beforeTransactionStart(event: TransactionStartEvent) {\n this.__endpoint_context__.logDb &&\n console.log(`BEFORE TRANSACTION STARTED: `, event);\n }\n\n /**\n * Called after transaction start.\n */\n afterTransactionStart(event: TransactionStartEvent) {\n this.__endpoint_context__.logDb &&\n console.log(`AFTER TRANSACTION STARTED: `, event);\n }\n\n /**\n * Called before transaction commit.\n */\n beforeTransactionCommit(event: TransactionCommitEvent) {\n this.__endpoint_context__.logDb &&\n console.log(`BEFORE TRANSACTION COMMITTED: `, event);\n }\n\n /**\n * Called after transaction commit.\n */\n afterTransactionCommit(event: TransactionCommitEvent) {\n this.__endpoint_context__.logDb &&\n console.log(`AFTER TRANSACTION COMMITTED: `, event);\n }\n\n /**\n * Called before transaction rollback.\n */\n beforeTransactionRollback(event: TransactionRollbackEvent) {\n this.__endpoint_context__.logDb &&\n console.log(`BEFORE TRANSACTION ROLLBACK: `, event);\n }\n\n /**\n * Called after transaction rollback.\n */\n afterTransactionRollback(event: TransactionRollbackEvent) {\n this.__endpoint_context__.logDb &&\n console.log(`AFTER TRANSACTION ROLLBACK: `, event);\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/base-classes/base-subscriber-for-entity.ts","\n\nimport * as controller from './base-controller';\nimport * as crudController from './base-crud-controller';\nimport * as entity from './base-entity';\nimport * as abstractEntity from './base-abstract-entity';\nimport * as repository from './base-repository';\nimport * as provider from './base-provider';\nimport * as baseclass from './base-class';\nimport * as baseContext from './base-context';\nimport * as baseSubscriberEntity from './base-subscriber-for-entity';\nexport namespace Base {\n export import Controller = controller.BaseController;\n export import CrudController = crudController.BaseCrudController;\n export import Entity = entity.BaseEntity;\n export import AbstractEntity = abstractEntity.BaseAbstractEntity;\n export import Provider = provider.BaseProvider;\n export import Class = baseclass.BaseClass;\n export import Repository = repository.BaseRepository;\n export import SubscriberForEntity = baseSubscriberEntity.BaseSubscriberForEntity;\n export const Context = baseContext.BaseContext;\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/base-classes/base.ts","\n\nimport { Mapping } from 'ng2-rest/websql';\nimport { ClassHelpers } from '../../helpers/class-helpers';\nimport { CLASS } from 'typescript-class-helpers/websql';\nimport { Symbols } from '../../symbols';\nimport { _ } from 'tnp-core/websql';\nimport { Models } from '../../models';\n\nimport { Entity as TypeormEntity, Tree } from 'taon-typeorm/websql';\n\n\nexport function TaonEntity<T = any>(options?: TaonEntityOptions<T>) {\n return function (constructor: Function) {\n options = options || ({} as any);\n options.uniqueKeyProp = options.uniqueKeyProp || ('id' as any);\n ClassHelpers.setName(constructor, options?.className);\n\n Mapping.DefaultModelWithMapping<T>(\n options?.defaultModelValues || {},\n _.merge(\n options?.defaultModelMapping || {},\n (options?.defaultModelMappingDeep || {}) as any,\n ),\n )(constructor);\n\n\n Mapping.DefaultModelWithMapping<T>(void 0, {})(constructor);\n\n Reflect.defineMetadata(\n Symbols.metadata.options.entity,\n options,\n constructor,\n );\n Reflect.defineMetadata(\n Symbols.metadata.className,\n options?.className || constructor.name,\n constructor,\n );\n\n TypeormEntity(options?.className)(constructor);\n\n CLASS.setName(constructor, options?.className); // TODO QUICK_FIX for ng2-rest\n };\n}\n\nexport class TaonEntityOptions<T = any> extends Models.DecoratorAbstractOpt {\n /**\n * default unique property is \"id\"\n * for your entity it may be something else\n */\n uniqueKeyProp?: string;\n createTable?: boolean;\n defaultModelValues?: Mapping.ModelValue<T>;\n defaultModelMapping?: Mapping.Mapping<T>;\n defaultModelMappingDeep?: { [lodashPathes: string]: string | [string] };\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/decorators/classes/entity-decorator.ts","\n\nimport { ClassHelpers } from '../../helpers/class-helpers';\nimport { Symbols } from '../../symbols';\nimport { Models } from '../../models';\n\nexport function TaonProvider<T = any>(options?: TaonProviderOptions<T>) {\n return function (constructor: Function) {\n Reflect.defineMetadata(\n Symbols.metadata.options.provider,\n options,\n constructor,\n );\n Reflect.defineMetadata(\n Symbols.metadata.className,\n options?.className || constructor.name,\n constructor,\n );\n ClassHelpers.setName(constructor, options?.className || constructor.name);\n };\n}\n\nexport class TaonProviderOptions<\n T = any,\n> extends Models.DecoratorAbstractOpt {\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/decorators/classes/provider-decorator.ts","\n\n\nimport { inject as angularInject } from '@angular/core';\n\nimport { Symbols } from './symbols';\nimport type { EndpointContext } from './endpoint-context';\nimport type { BaseInjector } from './base-classes/base-injector';\n\nexport const inject = <T>(entity: () => new (...args: any[]) => T): T => {\n return new Proxy(\n {},\n {\n get: (_, propName) => {\n if (propName === 'hasOwnProperty') {\n return () => false;\n }\n\n const ctor = entity();\n const contextFromClass = ctor[\n Symbols.ctxInClassOrClassObj\n ] as EndpointContext;\n const resultContext = contextFromClass;\n if (resultContext) {\n let instance = resultContext.inject(ctor) as BaseInjector;\n\n\n if (propName === 'getOriginalPrototype') {\n return () => Object.getPrototypeOf(instance);\n }\n if (propName === 'getOriginalConstructor') {\n return () => instance.constructor;\n }\n\n const methods = ctor[Symbols.classMethodsNames] || [];\n const isMethods = methods.includes(propName);\n\n const methodOrProperty = isMethods\n ? instance[propName].bind(instance)\n : instance[propName];\n\n\n\n\n\n return methodOrProperty;\n }\n\n\n return angularInject(ctor)[propName];\n\n },\n },\n ) as T;\n};\n\n\n\n\n\n\n\n\n/**\n * TODO\n */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n ;({}); // @--end-of-file-for-module=taon lib/inject.ts","\n\nimport { Directive, Input, Output, EventEmitter, HostBinding, HostListener, } from '@angular/core';/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n\n\nimport { _ } from 'tnp-core/websql';\nimport { Log, Level } from 'ng2-logger/websql';\nconst log = Log.create(`[taon-helpers] long-press`, Level.__NOTHING);\n\n@Directive({\n selector: '[taonLongPress]',\n standalone: true,\n})\nexport class TaonLongPress {\n @Input() pressDuration: number = 1000;\n\n @Output() onLongPress: EventEmitter<any> = new EventEmitter();\n @Output() onLongPressing: EventEmitter<any> = new EventEmitter();\n @Output() onLongPressEnd: EventEmitter<any> = new EventEmitter();\n\n private pressing: boolean;\n private longPressing: boolean;\n private timeout: any;\n private mouseX: number = 0;\n private mouseY: number = 0;\n\n @HostBinding('class.press')\n get press() {\n return this.pressing;\n }\n\n @HostBinding('class.longpress')\n get longPress() {\n return this.longPressing;\n }\n\n allowTrigger = false;\n triggerEnd = _.debounce(() => {\n this.endPress();\n }, 500);\n\n @HostListener('mousedown', ['$event'])\n onMouseDown(event) {\n\n log.d(`MOUSE DOWN `);\n\n if (event.which !== 1) return;\n this.allowTrigger = true;\n\n this.mouseX = event.clientX;\n this.mouseY = event.clientY;\n\n this.pressing = true;\n this.longPressing = false;\n\n this.timeout = setTimeout(() => {\n if (this.allowTrigger) {\n this.longPressing = true;\n log.d(`long pressing start pressDuration:${this.pressDuration} `);\n this.onLongPress.emit(event);\n this.loop(event);\n }\n }, this.pressDuration);\n\n this.loop(event);\n }\n\n @HostListener('mousemove', ['$event'])\n onMouseMove(event) {\n if (this.pressing && !this.longPressing) {\n const xThres = event.clientX - this.mouseX > 10;\n const yThres = event.clientY - this.mouseY > 10;\n if (xThres || yThres) {\n this.endPress();\n }\n }\n }\n\n loop(event) {\n if (this.longPressing) {\n this.timeout = setTimeout(() => {\n log.d(`emil longpressing`);\n this.triggerEnd();\n this.onLongPressing.emit(event);\n this.loop(event);\n }, 50);\n }\n }\n\n endPress(emit = true) {\n this.allowTrigger = false;\n clearTimeout(this.timeout);\n this.longPressing = false;\n this.pressing = false;\n if (emit) {\n log.d(`EMIT END`);\n this.onLongPressEnd.emit(true);\n } else {\n log.d(`NOT EMIT END`);\n }\n }\n\n @HostListener('mouseup')\n onMouseUp() {\n this.endPress(false);\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/ui/directives/taon-long-press.directive.ts","\n\nimport { Directive, ElementRef, Input } from '@angular/core';\n\n@Directive({\n selector: '[taonInjectHTML]',\n standalone: true,\n})\nexport class TaonInjectHTMLDirective {\n @Input() set taonInjectHTML(content: string) {\n this.host.nativeElement.innerHTML = content;\n }\n\n constructor(private host: ElementRef) {}\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/ui/directives/taon-inject-html.directive.ts","\n\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer, SafeHtml, SafeStyle, SafeScript, SafeUrl, SafeResourceUrl, } from '@angular/platform-browser';/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n\n\n@Pipe({\n name: 'safe',\n standalone: true,\n})\nexport class SafePipe implements PipeTransform {\n constructor(protected sanitizer: DomSanitizer) {}\n\n public transform(\n value: any,\n type: string\n ): SafeHtml | SafeStyle | SafeScript | SafeUrl | SafeResourceUrl {\n switch (type) {\n case 'html':\n return this.sanitizer.bypassSecurityTrustHtml(value);\n case 'style':\n return this.sanitizer.bypassSecurityTrustStyle(value);\n case 'script':\n return this.sanitizer.bypassSecurityTrustScript(value);\n case 'url':\n return this.sanitizer.bypassSecurityTrustUrl(value);\n case 'resourceUrl':\n return this.sanitizer.bypassSecurityTrustResourceUrl(value);\n default:\n throw new Error(`Invalid safe type specified: ${type}`);\n }\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/ui/directives/safe.pipe.ts","\n\n\nexport * from './taon-long-press.directive';\nexport * from './taon-inject-html.directive';\nexport * from './safe.pipe';\n\n\n ;({}); // @--end-of-file-for-module=taon lib/ui/directives/index.ts","\n\n\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { CdkStepperModule } from '@angular/cdk/stepper';\nimport { CdkTableModule } from '@angular/cdk/table';\nimport { CdkTreeModule } from '@angular/cdk/tree';\nimport { NgModule } from '@angular/core';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatBadgeModule } from '@angular/material/badge';\nimport { MatBottomSheetModule } from '@angular/material/bottom-sheet';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatStepperModule } from '@angular/material/stepper';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatGridListModule } from '@angular/material/grid-list';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatListModule } from '@angular/material/list';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatRippleModule } from '@angular/material/core';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { MatSliderModule } from '@angular/material/slider';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatSortModule } from '@angular/material/sort';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatTreeModule } from '@angular/material/tree';\n\n@NgModule({\n exports: [\n A11yModule,\n CdkStepperModule,\n CdkTableModule,\n CdkTreeModule,\n DragDropModule,\n MatAutocompleteModule,\n MatBadgeModule,\n MatBottomSheetModule,\n MatButtonModule,\n MatButtonToggleModule,\n MatCardModule,\n MatCheckboxModule,\n MatChipsModule,\n MatStepperModule,\n MatDatepickerModule,\n MatDialogModule,\n MatDividerModule,\n MatExpansionModule,\n MatGridListModule,\n MatIconModule,\n MatInputModule,\n MatListModule,\n MatMenuModule,\n MatNativeDateModule,\n MatPaginatorModule,\n MatProgressBarModule,\n MatProgressSpinnerModule,\n MatRadioModule,\n MatRippleModule,\n MatSelectModule,\n MatSidenavModule,\n MatSliderModule,\n MatSlideToggleModule,\n MatSnackBarModule,\n MatSortModule,\n MatTableModule,\n MatTabsModule,\n MatToolbarModule,\n MatTooltipModule,\n MatTreeModule,\n ScrollingModule,\n ],\n})\nexport class TaonFullMaterialModule {}\n\n\n ;({}); // @--end-of-file-for-module=taon lib/ui/taon-full-material.module.ts","\n\n\nimport { Component, EventEmitter, HostBinding, Input, OnInit, Output, } from '@angular/core';/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'taon-github-fork-me-corner',\n templateUrl: './taon-github-fork-me-corner.component.html',\n styleUrls: ['./taon-github-fork-me-corner.component.scss'],\n})\nexport class TaonGithubForkMeCornerComponent {\n @Input() url: string = 'https://github.com';\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/ui/taon-github-fork-me-corner/taon-github-fork-me-corner.component.ts","<a href=\"{{ url }}\" class=\"github-corner\" aria-label=\"View source on GitHub\"\n ><svg\n width=\"80\"\n height=\"80\"\n viewBox=\"0 0 250 250\"\n style=\"\n fill: #151513;\n color: #fff;\n position: absolute;\n top: 0;\n border: 0;\n right: 0;\n \"\n aria-hidden=\"true\">\n <path d=\"M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z\"></path>\n <path\n d=\"M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2\"\n fill=\"currentColor\"\n style=\"transform-origin: 130px 106px\"\n class=\"octo-arm\"></path>\n <path\n d=\"M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z\"\n fill=\"currentColor\"\n class=\"octo-body\"></path>\n </svg>\n</a>\n","\n\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { TaonGithubForkMeCornerComponent } from './taon-github-fork-me-corner.component';\n\n@NgModule({\n imports: [CommonModule],\n exports: [TaonGithubForkMeCornerComponent],\n declarations: [TaonGithubForkMeCornerComponent],\n providers: [],\n})\nexport class TaonGithubForkMeCornerModule {}\n\n ;({}); // @--end-of-file-for-module=taon lib/ui/taon-github-fork-me-corner/taon-github-fork-me-corner.module.ts","\n\n\nexport * from './taon-github-fork-me-corner.component';\n\n\nexport * from './taon-github-fork-me-corner.module';\n\n ;({}); // @--end-of-file-for-module=taon lib/ui/taon-github-fork-me-corner/index.ts","\n\n\nimport { _ } from 'tnp-core/websql';\nimport { Injectable } from '@angular/core';\nimport { HotToastService } from '@ngneat/hot-toast';\nimport { TaonNotificationOptions, TaonNotificationType, } from './taon-notifications.models';/* */\n/* */\n/* */\n\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TaonNotificationsService {\n constructor(private toast: HotToastService) {}\n\n private options(\n type: TaonNotificationType,\n options: TaonNotificationOptions | string\n ): TaonNotificationOptions {\n if (_.isString(options)) {\n options = {\n // @ts-ignore\n title: options,\n };\n }\n return options as TaonNotificationOptions;\n }\n\n success(options: TaonNotificationOptions | string) {\n const opt = this.options('success', options);\n return this.toast.success(opt.title);\n }\n\n error(options: TaonNotificationOptions | string) {\n const opt = this.options('error', options);\n return this.toast.error(opt.title);\n }\n\n warn(options: TaonNotificationOptions | string) {\n const opt = this.options('warning', options);\n return this.toast.warning(opt.title);\n }\n\n info(options: TaonNotificationOptions | string) {\n const opt = this.options('info', options);\n return this.toast.info(opt.title);\n }\n}\n\n\n ;({}); // @--end-of-file-for-module=taon lib/ui/taon-notifications/taon-notifications.service.ts","\n\n\nimport { Component, OnInit, TemplateRef } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { Resource } from 'ng2-rest/websql';\nimport { TaonNotificationsService } from './taon-notifications.service';\n\n@Component({\n selector: 'taon-notifications',\n templateUrl: './taon-notifications.component.html',\n styleUrls: ['./taon-notifications.component.scss'],\n})\nexport class TaonNotificationsComponent implements OnInit {\n constructor(private notification: TaonNotificationsService) {}\n\n ngOnInit() {}\n\n init(\n subscribtionsArray: Subscription[],\n template: TemplateRef<any>,\n callback: (dataToTempalte) => any\n ) {\n subscribtionsArray.push(\n Resource.listenErrors.subscribe(err => {\n this.notification.error(err.msg);\n\n\n\n\n }) as any\n );\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/ui/taon-notifications/taon-notifications.component.ts","<!-- <p>\n notyfications works!\n</p> -->\n","\n\n\nimport { HotToastService } from '@ngneat/hot-toast';\n\nexport class TaonNotificationOptions {\n title: string;\n subtitle?: string;\n}\n\nexport type TaonNotificationType = keyof Omit<\n HotToastService,\n 'defaultConfig' | 'observe'\n>;\n\n\n ;({}); // @--end-of-file-for-module=taon lib/ui/taon-notifications/taon-notifications.models.ts","\n\n\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TaonNotificationsComponent } from './taon-notifications.component';\n\n\n\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { TaonNotificationsService } from './taon-notifications.service';\n\n@NgModule({\n imports: [\n\n\n\n\n\n ],\n exports: [TaonNotificationsComponent],\n declarations: [TaonNotificationsComponent],\n providers: [TaonNotificationsService],\n})\nexport class TaonNotificationsModule {}\n\n\n ;({}); // @--end-of-file-for-module=taon lib/ui/taon-notifications/taon-notifications.module.ts","\n\n\nexport * from './taon-notifications.component';\n\nexport * from './taon-notifications.models';\n\nexport * from './taon-notifications.module';\n\n\nexport * from './taon-notifications.service';\n\n ;({}); // @--end-of-file-for-module=taon lib/ui/taon-notifications/index.ts","\n\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectorRef, Component, DestroyRef, ElementRef, HostBinding, Input, OnInit, Self, inject, } from '@angular/core';/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n\nimport { FormControl, FormGroup, FormsModule, ReactiveFormsModule, } from '@angular/forms';/* */\n/* */\n/* */\n/* */\n/* */\n\nimport { PasswordModule } from 'primeng/password';\nimport { Stor } from 'taon-storage/websql';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { interval, take, tap } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nexport interface TaonSessionPasscodeModel {\n passcode: string;\n}\n\nexport type TaonSessionPasscodeForm = {\n [prop in keyof TaonSessionPasscodeModel]: FormControl<\n TaonSessionPasscodeModel[prop]\n >;\n};\n\n@Component({\n selector: 'taon-session-passcode',\n templateUrl: './taon-session-passcode.component.html',\n styleUrls: ['./taon-session-passcode.component.scss'],\n standalone: true,\n imports: [PasswordModule, CommonModule, ReactiveFormsModule, FormsModule],\n})\nexport class TaonSessionPasscodeComponent implements OnInit {\n destroyRef = inject(DestroyRef);\n\n\n @Input() public passcode: string;\n @Input() public message: string;\n public safeMessage: SafeHtml;\n\n @(Stor.property.in.localstorage\n .for(TaonSessionPasscodeComponent)\n .withDefaultValue(''))\n private lastPasscode: string;\n @HostBinding('style.display') public display = 'none';\n public form: FormGroup<TaonSessionPasscodeForm> =\n new FormGroup<TaonSessionPasscodeForm>({\n passcode: new FormControl(),\n });\n constructor(\n @Self() private element: ElementRef<HTMLElement>,\n private domSanitizer: DomSanitizer,\n private cdr: ChangeDetectorRef,\n ) {}\n\n ngOnInit() {\n if (!this.passcode) {\n this.passcode = '123456';\n }\n if (!this.message) {\n this.message = `\n This website is only for testing purpose. Please type passcode bellow to see content.\n\n `;\n }\n\n\n\n\n\n\n\n this.safeMessage = this.domSanitizer.bypassSecurityTrustHtml(this.message);\n\n if (this.lastPasscode?.toString() === this.passcode?.toString()) {\n this.hide();\n } else {\n this.show();\n this.focus();\n }\n\n interval(1000)\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n tap(() => {\n this.focus();\n }),\n )\n .subscribe();\n }\n\n submit({ passcode }: Partial<TaonSessionPasscodeModel>) {\n if (this.isPasscodeOK(passcode || '')) {\n this.hide();\n } else {\n this.clear();\n }\n }\n\n private isPasscodeOK(passcode: string) {\n this.lastPasscode = passcode.toString();\n return this.passcode.toString() === passcode;\n }\n\n ngAfterViewInit(): void {}\n\n public focus(): void {\n this.element.nativeElement.querySelector('input')?.focus();\n }\n\n hide() {\n this.display = 'none';\n }\n\n show() {\n this.display = 'block';\n }\n\n clear() {\n this.form.controls.passcode.setValue('');\n }\n\n onKeyup(event: KeyboardEvent & { target: { value: string } }) {\n if (this.isPasscodeOK(event.target.value || '')) {\n this.hide();\n return;\n }\n const key = event.keyCode || event.charCode;\n if (key === 8 || key === 46 || this.lastPasscode?.length > 5) {\n this.clear();\n }\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/ui/taon-session-passcode/taon-session-passcode.component.ts","<form\n [formGroup]=\"form\"\n content=\"notranslate\"\n autocomplete=\"off\"\n (click)=\"focus()\"\n (ngSubmit)=\"submit(form.value)\"\n class=\"flex flex-column align-items-center w-full h-full\">\n <div class=\"flex align-content-center w-full justify-content-center mt-8\">\n <p\n class=\"p-3\"\n style=\"max-width: 400px; min-height: 100px\"\n [innerHtml]=\"safeMessage\"></p>\n </div>\n <input\n type=\"password\"\n class=\"text-5xl md:text-8xl pointer-events-none\"\n #taonpasscode\n (keyup)=\"onKeyup($event)\"\n formControlName=\"passcode\" />\n <!-- placeholder=\"Enter passcode\" -->\n</form>\n","\n\n\nexport * from './taon-session-passcode.component';\n\n\n ;({}); // @--end-of-file-for-module=taon lib/ui/taon-session-passcode/index.ts","\n\n\nimport { Component, EventEmitter, HostBinding, Input, OnInit, Output, ViewChild, } from '@angular/core';/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n\nimport { Observable, Subject, Subscription } from 'rxjs';\nimport { _ } from 'tnp-core/websql';\n\nimport axios from 'axios';\nimport { NgProgressConfig, NgProgressModule, NgProgressRef, } from 'ngx-progressbar';/* */\n/* */\n/* */\n/* */\n // @ts-ignore\nimport { Taon } from '../../../lib';\n\n\n\nconst calculatePercentage = (loaded, total) => Math.floor(loaded * 1.0) / total;\ndeclare const ENV: any;\n\n@Component({\n selector: 'taon-progress-bar',\n templateUrl: './taon-progress-bar.component.html',\n styleUrls: ['./taon-progress-bar.component.scss'],\n})\nexport class TaonProgressBarComponent implements OnInit {\n @ViewChild('labProgress') labProgress: NgProgressRef;\n @Input() isDesktop: boolean;\n admin: any; //TODO @LAST\n handlers: Subscription[] = [];\n options: NgProgressConfig = _.merge(\n {\n min: 8,\n max: 100,\n speed: 200,\n trickleSpeed: 300,\n debounceTime: 0,\n ease: 'linear',\n spinnerPosition: 'right',\n direction: 'ltr+',\n color: 'gray',\n fixed: true,\n meteor: true,\n spinner: true,\n thick: false,\n },\n _.get(ENV, `plugins['ngx-progressbar']`),\n );\n\n constructor() {}\n\n ngOnInit() {}\n\n ngOnDestroy(): void {\n this.handlers.forEach(h => h.unsubscribe());\n }\n\n ngAfterViewInit(): void {\n\n this.loadProgressBar(void 0, axios);\n }\n\n loadProgressBar(config, instance = axios) {\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n }\n}\n\n\n ;({}); // @--end-of-file-for-module=taon lib/ui/taon-progress-bar/taon-progress-bar.component.ts","<ng-progress\n #labProgress\n id=\"lab\"\n [meteor]=\"options.meteor\"\n [color]=\"options.color\"\n [min]=\"options.min\"\n [max]=\"options.max\"\n [speed]=\"options.speed\"\n [spinner]=\"\n options.spinner &&\n (!admin.adminPanelIsOpen ||\n (admin.adminPanelIsOpen && (admin.draggablePopupMode || !isDesktop)))\n \"\n [spinnerPosition]=\"options.spinnerPosition\"\n [direction]=\"options.direction\"\n [trickleSpeed]=\"options.trickleSpeed\"\n [debounceTime]=\"options.debounceTime\"\n [ease]=\"options.ease\"\n [thick]=\"options.thick\"\n [fixed]=\"options.fixed\">\n</ng-progress>\n<!-- (started)=\"onProgressStarted()\"\n (completed)=\"onProgressCompleted()\" -->\n","\n\n\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TaonProgressBarComponent } from './taon-progress-bar.component';\nimport { NgProgressConfig, NgProgressModule } from 'ngx-progressbar';\n\n@NgModule({\n imports: [CommonModule, NgProgressModule.withConfig({})],\n declarations: [TaonProgressBarComponent],\n exports: [TaonProgressBarComponent],\n})\nexport class TaonProgressBarModule {}\n\n ;({}); // @--end-of-file-for-module=taon lib/ui/taon-progress-bar/taon-progress-bar.module.ts","\n\n\nexport * from './taon-progress-bar.component';\nexport * from './taon-progress-bar.module';\n\n ;({}); // @--end-of-file-for-module=taon lib/ui/taon-progress-bar/index.ts","\n\n\nimport { Component, OnInit, Input, Output, TemplateRef, EventEmitter, ViewChild, ElementRef, } from '@angular/core';/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n\nimport * as _ from 'lodash';\nimport { Log, Level } from 'ng2-logger/websql'; // @ts-ignore\nimport { Taon } from '../../../lib';\nimport { CLASS } from 'typescript-class-helpers/websql';\nimport { PageEvent } from '@angular/material/paginator';\nimport { MtxGridColumn } from '@ng-matero/extensions/grid';\nimport { Subscription, debounceTime, defer, distinctUntilChanged, fromEvent, map, share, tap, } from 'rxjs';/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n\nimport { json5 } from 'tnp-core/websql';\n\n\n\nconst log = Log.create('Table wrapper', Level.__NOTHING);\nconst defaultColumns = [\n {\n header: 'ID',\n field: 'id',\n },\n {\n header: 'NAME',\n field: 'name',\n },\n] as MtxGridColumn[];\n\n\n@Component({\n\n selector: 'taon-table',\n templateUrl: './taon-table.component.html',\n styleUrls: ['./taon-table.component.scss'],\n})\nexport class TaonTableComponent {\n\n @Input() public pageNumber: number = 1;\n @Input() public pageSize: number = 5;\n @Input() public allowedColumns: string[] = [];\n @Input() public entity: typeof Taon.Base.Entity | string;\n @Input() public expansionTemplate: TemplateRef<any>;\n @Input() public rows = _.times(20, id => {\n return {\n id,\n name: `Amazing ${id} row `,\n };\n });\n @Input() public columns: MtxGridColumn[] = defaultColumns as MtxGridColumn[];\n @Input() public pageSizeOptions: number[] = [5, 10, 20];\n @Output() public expansionChange = new EventEmitter();\n\n @Output() public addingItem = new EventEmitter<void>();\n @ViewChild('search', { static: true }) search?: ElementRef<HTMLElement>;\n private searchInputChange$ = defer(() =>\n fromEvent<KeyboardEvent>(this.search?.nativeElement as any, 'keyup')\n ).pipe(\n map(c => c.target['value']),\n debounceTime(500),\n distinctUntilChanged(),\n share(),\n tap(data => {\n console.log({ data });\n })\n );\n\n public expandable: boolean = false;\n public showPaginator = true;\n public isLoading = false;\n public totalElements: number = 100;\n private sub: Subscription = new Subscription();\n\n\n constructor() {}\n\n\n\n\n async ngOnInit() {\n if (_.isString(this.entity)) {\n this.entity = CLASS.getBy(this.entity) as any;\n }\n\n this.sub.add(this.searchInputChange$.subscribe());\n if (!!this.entity) {\n this.rows = [];\n }\n this.expandable = !!this.expansionTemplate;\n\n log.i('this.columns,', this.columns);\n const columnsConfigSameAsDefault = _.isEqual(this.columns, defaultColumns);\n\n\n\n\n const entityClass = this.entity;\n if (entityClass && columnsConfigSameAsDefault) {\n log.i(\n 'this.crud.entity',\n CLASS.describeProperites(entityClass as Function)\n );\n\n try {\n const props = CLASS.describeProperites(entityClass as Function);\n let columns = props\n .filter(prop =>\n this.allowedColumns.length > 0\n ? this.allowedColumns.includes(prop)\n : true\n )\n .map(prop => {\n return {\n header: _.upperCase(prop),\n field: prop,\n } as MtxGridColumn;\n });\n\n const extra = this.allowedColumns.filter(f => !props.includes(f));\n columns = [\n ...columns,\n ...extra.map(prop => {\n return {\n header: _.upperCase(prop),\n field: prop,\n } as MtxGridColumn;\n }),\n ];\n\n\n\n\n\n if (!this.expandable) {\n for (let index = 0; index < columns.length; index++) {\n const col = columns[index];\n delete col.showExpand;\n }\n }\n this.columns = columns;\n } catch (error) {\n console.error(error);\n }\n } else {\n }\n\n if (!this.entity) {\n this.showPaginator = false;\n }\n\n await this.retriveData();\n }\n\n\n\n ngOnDestroy(): void {\n this.sub.unsubscribe();\n }\n\n\n\n\n\n\n\n async getNextPage(e: PageEvent) {\n\n\n\n this.pageNumber = e.pageIndex + 1;\n this.pageSize = e.pageSize;\n await this.retriveData();\n }\n\n\n\n async retriveData() {\n // @ts-ignore\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n }\n\n\n\n expansionRow(e) {\n this.expansionChange.next(e);\n }\n\n\n\n onTableContextMenu(e) {\n\n\n\n log.i('context menu event', e);\n }\n\n\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/ui/taon-table/taon-table.component.ts","<br />\n<columns-container>\n <column grow>\n <mat-form-field class=\"search-input\">\n <input matInput placeholder=\"Type to search table...\" #search />\n </mat-form-field>\n </column>\n <column [width]=\"80\">\n <button\n mat-fab\n [ngClass]=\"{ 'half-opacity': !search.value }\"\n class=\"undo-button\"\n color=\"secondary\"\n (click)=\"search.value = ''\">\n <mat-icon>close </mat-icon>\n </button>\n </column>\n\n <column [width]=\"80\">\n <button\n mat-fab\n (click)=\"addingItem.next()\"\n class=\"undo-button\"\n color=\"primary\">\n <mat-icon>add</mat-icon>\n </button>\n </column>\n</columns-container>\n\n<mtx-grid\n *ngIf=\"rows && columns\"\n [data]=\"rows\"\n [columns]=\"columns\"\n [expandable]=\"expandable\"\n [expansionTemplate]=\"expansionTemplate\"\n (expansionChange)=\"expansionRow($event)\"\n [length]=\"totalElements\"\n [loading]=\"isLoading\"\n [pageOnFront]=\"false\"\n [pageIndex]=\"pageNumber - 1\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"\n [showPaginator]=\"showPaginator\"\n (page)=\"getNextPage($event)\">\n</mtx-grid>\n","\n\n\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatSelectModule } from '@angular/material/select';\nimport { TaonTableComponent } from './taon-table.component';\nimport { MtxGridModule } from '@ng-matero/extensions/grid';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatInputModule } from '@angular/material/input';\nimport { StaticColumnsModule } from 'static-columns/websql';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButton, MatButtonModule } from '@angular/material/button';\n\n@NgModule({\n imports: [\n CommonModule,\n MatSelectModule,\n MtxGridModule,\n MatFormFieldModule,\n MatInputModule,\n StaticColumnsModule,\n MatIconModule,\n MatButtonModule,\n FormsModule,\n ReactiveFormsModule,\n ],\n exports: [TaonTableComponent],\n declarations: [TaonTableComponent],\n})\nexport class TaonTableModule {}\n\n ;({}); // @--end-of-file-for-module=taon lib/ui/taon-table/taon-table.module.ts","\n\n\nexport * from './taon-table.component';\n\n\nexport * from './taon-table.module';\n\n ;({}); // @--end-of-file-for-module=taon lib/ui/taon-table/index.ts","\n\nimport { ApplicationRef, ChangeDetectorRef, Injectable, TemplateRef, inject, } from '@angular/core';/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n\nimport type { TaonAdmin } from './taon-admin.service';\nimport type { TaonAdminModeConfigurationComponent } from './taon-admin-mode-configuration.component';\n\n@Injectable({ providedIn: 'root' })\nexport class TaonAdminService {\n taonAdminModeConfigurationComponent: TaonAdminModeConfigurationComponent;\n\n private readonly admin: TaonAdmin;\n\n /**\n * @deprecated\n */\n disableScroll() {\n\n\n }\n\n constructor(private cdr: ApplicationRef) {\n this.admin = window['taon'] as TaonAdmin;\n }\n\n public addTab(name: string, template: TemplateRef<any>): void {\n this.admin.cmp.tabs.push({\n name,\n template,\n });\n }\n\n init(\n taonAdminModeConfigurationComponent: TaonAdminModeConfigurationComponent\n ) {\n this.taonAdminModeConfigurationComponent =\n taonAdminModeConfigurationComponent;\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/ui/taon-admin-mode-configuration/taon-admin-control.service.ts","\n\n\n\n\nimport { ChangeDetectorRef, Component, EventEmitter, HostListener, Injector, Input, OnInit, Output, ViewChild, inject, } from '@angular/core';/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n\nimport { Helpers, _ } from 'tnp-core/websql';\nimport { TaonAdmin } from './taon-admin.service';\nimport { Stor } from 'taon-storage/websql';\nimport { CdkDrag, CdkDragEnd, CdkDragMove, CdkDragRelease, Point, } from '@angular/cdk/drag-drop';/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n\nimport { BreakpointsService } from 'static-columns/websql';\nimport { Subject, takeUntil, tap } from 'rxjs';\nimport { TaonAdminModeTab } from './models/taon-admin-mode-tabs';\nimport { TaonAdminService } from './taon-admin-control.service';\n\ndeclare const ENV: any;\n\n\n@Component({\n\n selector: 'app-taon-admin-mode-configuration',\n templateUrl: './taon-admin-mode-configuration.component.html',\n styleUrls: ['./taon-admin-mode-configuration.component.scss'],\n\n})\nexport class TaonAdminModeConfigurationComponent implements OnInit {\n\n $destroy = new Subject();\n public readonly cdr = inject(ChangeDetectorRef);\n public readonly taonAdminService = inject(TaonAdminService);\n public readonly isDesktop: boolean;\n public tabs: TaonAdminModeTab[] = [];\n public admin: TaonAdmin = window['taon'] as TaonAdmin;\n public isWebSQLMode: boolean = Helpers.isWebSQL;\n public hideTaonToolsInProduction: boolean =\n ENV.hideTaonToolsInProduction && ENV.angularProd;\n public isIframe: boolean = window.location !== window.parent.location;\n public height: number = 100;\n public openedOnce = false;\n public reloading: boolean = false;\n public showPasscode: boolean =\n _.isString(ENV.passcode) || _.isObject(ENV.passcode);\n public passcode: string = _.isString(ENV.passcode)\n ? ENV.passcode\n : _.isObject(ENV.passcode)\n ? ENV.passcode.code\n : '';\n public message: string = _.isObject(ENV.passcode)\n ? ENV.passcode.message\n : void 0;\n\n // @ts-ignore\n @Stor.property.in.localstorage\n .for(TaonAdminModeConfigurationComponent)\n .withDefaultValue(0)\n dragPositionX: number;\n\n // @ts-ignore\n @Stor.property.in.localstorage\n .for(TaonAdminModeConfigurationComponent)\n .withDefaultValue(0)\n dragPositionY: number;\n\n dragPositionZero = { x: 0, y: 0 } as Point;\n dragPosition: Point;\n\n // @ts-ignore\n @Stor.property.in.localstorage\n .for(TaonAdminModeConfigurationComponent)\n .withDefaultValue(0)\n selectedIndex: number;\n\n @ViewChild('tabGroup') tabGroup;\n\n // @ts-ignore\n @Stor.property.in.localstorage\n .for(TaonAdminModeConfigurationComponent)\n .withDefaultValue(false)\n wasOpenDraggablePopup: boolean;\n\n @Output() taonAdminModeConfigurationDataChanged = new EventEmitter();\n @Input() taonAdminModeConfigurationData: any = {};\n public get opened() {\n return !this.isIframe && this.admin.adminPanelIsOpen;\n }\n public set opened(v) {\n if (v && !this.openedOnce) {\n this.openedOnce = true;\n }\n if (this.wasOpenDraggablePopup) {\n this.wasOpenDraggablePopup = false;\n this.admin.draggablePopupMode = true;\n }\n this.admin.adminPanelIsOpen = v;\n }\n\n\n\n constructor(private breakpointsService: BreakpointsService) {\n this.admin.cmp = this;\n this.breakpointsService\n .listenTo()\n .pipe(takeUntil(this.$destroy))\n .subscribe(breakpoint => {\n // @ts-ignore\n this.isDesktop = breakpoint === 'desktop';\n });\n this.taonAdminService.init(this);\n }\n\n\n reloadTabs() {\n this.reloading = true;\n setTimeout(() => {\n this.reloading = false;\n console.log('reloading done');\n });\n }\n\n\n async ngOnInit() {\n await Stor.awaitPendingOperatios();\n\n\n\n this.dragPosition = { x: this.dragPositionX, y: this.dragPositionY };\n this.openedOnce = this.opened;\n\n\n\n\n\n }\n\n ngAfterViewInit(): void {\n //Called after ngAfterContentInit when the component's view has been initialized. Applies to components only.\n //Add 'implements AfterViewInit' to the class.\n setTimeout(() => {\n this.height = window.innerHeight;\n\n\n if (this.admin.draggablePopupMode) {\n this.reloadTabs();\n }\n\n\n\n\n\n });\n }\n\n ngOnDestroy(): void {\n this.$destroy.next(void 0);\n this.$destroy.complete();\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event: Event) {\n this.height = window.innerHeight;\n }\n\n\n\n\n async toogle() {\n\n this.opened = !this.opened;\n }\n\n async toogleFullScreen() {\n this.admin.draggablePopupMode = true;\n this.admin.draggablePopupModeFullScreen =\n !this.admin.draggablePopupModeFullScreen;\n this.resetDrag();\n }\n\n resetDrag() {\n this.dragPositionX = 0;\n this.dragPositionY = 0;\n this.dragPosition = { x: this.dragPositionX, y: this.dragPositionY };\n }\n\n moved(c: CdkDragEnd) {\n this.dragPositionX += c.distance.x;\n this.dragPositionY += c.distance.y;\n }\n\n scrollTabs(event) {\n return;\n\n\n\n\n\n\n\n\n\n\n }\n\n\n}\n\n\n\n ;({}); // @--end-of-file-for-module=taon lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.ts","<!-- #region basic global components -->\n<taon-session-passcode\n *ngIf=\"showPasscode\"\n [passcode]=\"passcode\"\n [message]=\"message\" />\n<!-- <taon-progress-bar [isDesktop]=\"isDesktop\"></taon-progress-bar> -->\n<!-- <taon-notifications></taon-notifications> -->\n<button\n mat-fab\n class=\"fab-button\"\n color=\"accent\"\n aria-label=\"Taon Admin Mode\"\n *ngIf=\"\n !admin.draggablePopupMode &&\n isDesktop &&\n !isIframe &&\n !hideTaonToolsInProduction\n \"\n (click)=\"toogle()\">\n <mat-icon>build</mat-icon>\n</button>\n<!-- #endregion -->\n\n<!-- #region small hidden button -->\n<!-- <button class=\"admin-show-button\"\n *ngIf=\"!admin.draggablePopupMode && isDesktop\"\n (click)=\"toogle()\"> Admin </button> -->\n<!-- #endregion -->\n\n<ng-template #contentNoScroll>\n <ng-content> </ng-content>\n</ng-template>\n\n<ng-template #content>\n <ng-scrollbar>\n <ng-container [ngTemplateOutlet]=\"contentNoScroll\"></ng-container>\n </ng-scrollbar>\n</ng-template>\n\n<!-- #region admin tabs -->\n<ng-template #adminTabs>\n <div class=\"taon-header-admin-wrapper\">\n <columns-container\n class=\"taon-header-admin\"\n [ngClass]=\"{ 'draggable-column': admin.draggablePopupMode }\">\n <column width=\"200\" class=\"logo-header\">\n <img\n *ngIf=\"openedOnce\"\n src=\"assets/assets-for/taon/shared/logo-header-admin-mode.png\" />\n </column>\n\n <column grow>\n <!-- <span>Super Admin Mode</span> -->\n </column>\n\n <column\n width=\"40\"\n *ngIf=\"\n !admin.draggablePopupModeFullScreen && !admin.draggablePopupMode\n \">\n <button\n mat-icon-button\n *ngIf=\"admin.draggablePopupMode\"\n (click)=\"\n admin.draggablePopupMode = false;\n opened = false;\n wasOpenDraggablePopup = true\n \"\n class=\"admin-close-button\">\n <mat-icon>close </mat-icon>\n </button>\n\n <button\n mat-icon-button\n *ngIf=\"!admin.draggablePopupMode\"\n (click)=\"toogle()\"\n class=\"admin-close-button\">\n <mat-icon>close</mat-icon>\n </button>\n </column>\n\n <column width=\"40\">\n <button\n mat-icon-button\n *ngIf=\"!admin.draggablePopupModeFullScreen\"\n class=\"admin-close-button\"\n (click)=\"toogleFullScreen()\">\n <mat-icon>fullscreen</mat-icon>\n </button>\n <button\n mat-icon-button\n *ngIf=\"admin.draggablePopupModeFullScreen\"\n class=\"admin-close-button\"\n (click)=\"toogleFullScreen()\">\n <mat-icon>close_fullscreen</mat-icon>\n </button>\n </column>\n\n <column width=\"40\" *ngIf=\"!admin.draggablePopupModeFullScreen\">\n <button\n mat-icon-button\n *ngIf=\"!admin.draggablePopupMode\"\n (click)=\"admin.draggablePopupMode = true\"\n class=\"admin-close-button\">\n <mat-icon>launch</mat-icon>\n </button>\n\n <button\n mat-icon-button\n *ngIf=\"admin.draggablePopupMode\"\n (click)=\"admin.draggablePopupMode = false; resetDrag()\"\n class=\"admin-close-button\">\n <mat-icon style=\"transform: rotate(180deg)\">login</mat-icon>\n </button>\n </column>\n </columns-container>\n </div>\n\n <columns-container\n [ngClass]=\"{ 'draggable-column': admin.draggablePopupMode }\">\n <column grow>\n <mat-tab-group\n dynamicHeight\n (wheel)=\"scrollTabs($event)\"\n #tabGroup\n [selectedIndex]=\"selectedIndex\"\n (selectedIndexChange)=\"selectedIndex = $event\">\n <mat-tab label=\"DB/Cache\">\n <section>\n <mat-card>\n <mat-card-header>\n <mat-card-subtitle>WEBSQL MODE</mat-card-subtitle>\n </mat-card-header>\n <mat-card-content>\n <mat-checkbox\n [disabled]=\"!isWebSQLMode\"\n [ngModel]=\"admin.keepWebsqlDbDataAfterReload\"\n (change)=\"\n admin.setKeepWebsqlDbDataAfterReload($event.checked)\n \">\n Don't remove data when reloading\n </mat-checkbox>\n </mat-card-content>\n </mat-card>\n </section>\n <br />\n <taon-db-admin />\n </mat-tab>\n\n <mat-tab label=\"Files\" *ngIf=\"admin.enabledTabs.includes('files')\">\n <section>\n <mat-checkbox\n [ngModel]=\"admin.filesEditMode\"\n (change)=\"admin.setEditMode($event.checked)\"\n >Edit mode</mat-checkbox\n >\n </section>\n <!-- admin.filesEditMode: {{ admin.filesEditMode }} -->\n <!-- <taon-admin-edit-mode *ngIf=\"admin.filesEditMode\">\n </taon-admin-edit-mode> -->\n <br />\n <hr *ngIf=\"admin.filesEditMode\" />\n <!-- <section>\n <button mat-raised-button>[TODO] Clear Files from browser cache </button> <br>\n <button mat-raised-button>[TODO] Start files export (as zip) </button> <br>\n <button mat-raised-button>[TODO] Import whole database (from zip) </button><br>\n </section> -->\n </mat-tab>\n <mat-tab *ngFor=\"let tab of tabs\" label=\"{{ tab.name }}\">\n <div\n class=\"full-tabs\"\n [style.height.px]=\"height - 150\"\n *ngIf=\"!isIframe\">\n <ng-container *ngTemplateOutlet=\"tab.template\"></ng-container>\n </div>\n <ng-container *ngIf=\"isIframe\">\n <ng-container *ngTemplateOutlet=\"tab.template\"></ng-container>\n </ng-container>\n </mat-tab>\n\n <!-- <mat-tab label=\"Portal\">\n <section>\n <mat-checkbox>[TODO] Maintenance Mode for whole portal</mat-checkbox>\n\n <mat-expansion-panel>\n\n <mat-expansion-panel-header>\n [TODO] Active User: 80432\n </mat-expansion-panel-header>\n <section>\n <button mat-raised-button>[TODO] Send notification to users </button><br>\n <button mat-raised-button>[TODO] Send email to users </button><br>\n </section>\n </mat-expansion-panel>\n <mat-expansion-panel>\n <mat-expansion-panel-header>\n [TODO] Enable features\n </mat-expansion-panel-header>\n <mat-checkbox>[TODO] AB testing</mat-checkbox> <br>\n <mat-checkbox>\n [TODO] Newsletter email question popup\n </mat-checkbox> <br>\n <mat-checkbox>\n [TODO] Promotion popup\n </mat-checkbox> <br>\n </mat-expansion-panel>\n </section>\n </mat-tab>\n <mat-tab label=\"User\">\n Welcome in user managements\n </mat-tab>\n <mat-tab label=\"Translations\">\n Welcome in user managements\n </mat-tab> -->\n </mat-tab-group>\n </column>\n </columns-container>\n</ng-template>\n<!-- #endregion -->\n\n<!-- #region small/mobile draggable popup windows -->\n<div\n class=\"draggable-popup-mode-window\"\n *ngIf=\"\n admin.draggablePopupMode && !admin.draggablePopupModeFullScreen && !isIframe\n \"\n cdkDrag\n [cdkDragFreeDragPosition]=\"dragPosition\"\n (cdkDragEnded)=\"moved($event)\">\n <ng-scrollbar>\n <ng-container [ngTemplateOutlet]=\"adminTabs\"></ng-container>\n </ng-scrollbar>\n</div>\n<!-- #endregion -->\n\n<!-- #region fullscreen draggable popup window -->\n<div\n class=\"draggable-popup-mode-window-full\"\n *ngIf=\"\n admin.draggablePopupMode &&\n admin.draggablePopupModeFullScreen &&\n !isIframe &&\n !reloading\n \"\n cdkDrag\n [cdkDragFreeDragPosition]=\"dragPositionZero\">\n <ng-container [ngTemplateOutlet]=\"adminTabs\"></ng-container>\n</div>\n<!-- #endregion -->\n\n<!-- #region content when not in draggable (or fullscreen draggable) popup -->\n<div\n [style.height.px]=\"height\"\n *ngIf=\"\n (isIframe ||\n !isDesktop ||\n admin.draggablePopupMode ||\n admin.draggablePopupModeFullScreen) &&\n !reloading\n \"\n style=\"width: 100%; display: block\"\n class=\"content\">\n <ng-container\n [ngTemplateOutlet]=\"\n admin.scrollableEnabled ? content : contentNoScroll\n \"></ng-container>\n</div>\n<!-- #endregion -->\n\n<!-- #region draggable popup window -->\n<mat-drawer-container\n *ngIf=\"!admin.draggablePopupMode && isDesktop && !isIframe\"\n class=\"example-container\"\n [style.height.px]=\"height\"\n style=\"background-color: transparent\"\n (backdropClick)=\"opened = false\"\n [hasBackdrop]=\"false\">\n <mat-drawer #drawer style=\"width: 580px\" [opened]=\"opened\" [mode]=\"'side'\">\n <ng-container [ngTemplateOutlet]=\"adminTabs\"></ng-container>\n </mat-drawer>\n <mat-drawer-content style=\"overflow: hidden\">\n <ng-container\n *ngIf=\"!admin.draggablePopupMode && !reloading\"\n [ngTemplateOutlet]=\"\n admin.scrollableEnabled ? content : contentNoScroll\n \"></ng-container>\n </mat-drawer-content>\n</mat-drawer-container>\n<!-- #endregion -->\n","\n\n\n\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output, } from '@angular/core';/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n\nimport { delay, of, Subject, Subscription, takeUntil, tap } from 'rxjs';\n\n\nimport { Router } from '@angular/router';\nimport { Stor } from 'taon-storage/websql';\nimport 'brace';\nimport 'brace/mode/css';\nimport 'brace/mode/typescript';\nimport 'brace/theme/github'; // @ts-ignore\nimport { Taon } from '../../../../../lib';\nimport { MtxGridColumn } from '@ng-matero/extensions/grid';\n\n\n\n\n@Component({\n\n selector: 'taon-admin-edit-mode',\n templateUrl: './taon-admin-edit-mode.component.html',\n styleUrls: ['./taon-admin-edit-mode.component.scss'],\n\n})\nexport class TaonAdminEditModeComponent implements OnInit {\n\n\n inited$ = of(true);\n private destroyed$ = new Subject();\n admin: any; // = window['taon'] as TaonAdmin;\n handlers: Subscription[] = [];\n entity: any; //= TaonFile;\n files: any; // TaonFile[] = [];\n\n @(Stor.property.in.localstorage\n .for(TaonAdminEditModeComponent)\n .withDefaultValue(0))\n selectedTabIndex: number;\n\n @(Stor.property.in.localstorage\n .for(TaonAdminEditModeComponent)\n .withDefaultValue(''))\n fileToSearch: string;\n columns = [\n {\n header: 'ID',\n field: 'id',\n maxWidth: 100,\n showExpand: true,\n },\n {\n header: 'src',\n field: 'src',\n maxWidth: 250,\n },\n {\n header: 'Content Type',\n field: 'contentType',\n maxWidth: 120,\n },\n ] as MtxGridColumn[];\n @Output() taonAdminEditModeDataChanged = new EventEmitter();\n @Input() taonAdminEditModeData: any = {};\n\n\n\n constructor(private router: Router) {}\n\n\n\n ngOnInit() {\n this.files = this.admin.currentFiles;\n this.handlers.push(\n this.admin.onEditMode$.subscribe(() => {\n this.refresFilesList();\n }),\n );\n\n\n\n\n this.admin.onRegisterFile().pipe(\n takeUntil(this.destroyed$),\n tap(() => {\n this.refresFilesList();\n }),\n );\n }\n ngOnDestroy(): void {\n this.handlers.forEach(h => h.unsubscribe());\n this.destroyed$.next(void 0);\n this.destroyed$.unsubscribe();\n }\n\n ngAfterViewInit(): void {\n //Called after ngAfterContentInit when the component's view has been initialized. Applies to components only.\n //Add 'implements AfterViewInit' to the class.\n setTimeout(() => {\n this.refresFilesList();\n }, 500);\n }\n\n\n\n\n\n expansionRow(e) {\n console.log(e);\n }\n refresFilesList() {\n\n this.files = this.admin.currentFiles;\n }\n\n searchFind(file: any): any {\n if (!!this?.fileToSearch) {\n return file?.src?.search(this?.fileToSearch) !== -1;\n }\n return true;\n }\n\n}\n\n\n ;({}); // @--end-of-file-for-module=taon lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.ts","<ng-template #expansionTpl let-row>\n hello from expansion {{ row.src }}\n</ng-template>\n\n<mat-card *ngIf=\"inited$ | async\">\n <div *ngIf=\"!admin.selectedFile\">Please select file from portal to edit</div>\n <taon-file\n *ngIf=\"admin.selectedFile\"\n class=\"file-inside-admin\"\n [insideAdmin]=\"true\"\n [file]=\"admin.selectedFile\"></taon-file>\n\n <hr />\n\n <mat-tab-group\n dynamicHeight\n [selectedIndex]=\"selectedTabIndex\"\n (selectedIndexChange)=\"selectedTabIndex = $event; refresFilesList()\">\n <mat-tab label=\"General\">\n <!-- <taon-file-general-opt\n [file]=\"admin.selectedFile\"></taon-file-general-opt> -->\n </mat-tab>\n <!-- <mat-tab label=\"CSS Editing\">\n <ace [mode]=\"'css'\"\n *ngIf=\"admin.selectedFile\"\n [(value)]=\"admin.selectedFile.css\"\n [theme]=\"'github'\"\n style=\"width: 100%; height: 300px;\"></ace>\n </mat-tab> -->\n\n <mat-tab label=\"Files Picker\">\n <!-- <taon-table\n [entity]=\"entity\"\n [allowedColumns]=\"['src', 'contentType']\"\n [columns]=\"columns\"\n [expansionTemplate]=\"expansionTpl\"\n (expansionChange)=\"expansionRow($event)\">\n </taon-table> -->\n </mat-tab>\n <mat-tab label=\"File Version History\">\n <!-- <taon-table\n [entity]=\"entity\"\n [allowedColumns]=\"['src', 'contentType']\"\n [columns]=\"columns\"\n [expansionTemplate]=\"expansionTpl\"\n (expansionChange)=\"expansionRow($event)\">\n </taon-table> -->\n </mat-tab>\n <mat-tab label=\"Current File\">\n <columns-container *ngIf=\"files.length > 0\">\n <column grow>\n <mat-form-field style=\"width: 100%\">\n <input\n matInput\n [(ngModel)]=\"fileToSearch\"\n (focus)=\"refresFilesList()\"\n placeholder=\"Search by name\" />\n </mat-form-field>\n </column>\n <column [width]=\"40\">\n <button\n mat-icon-button\n (click)=\"fileToSearch = ''; refresFilesList()\"\n *ngIf=\"fileToSearch && fileToSearch?.trim() !== ''\">\n <mat-icon>backspace</mat-icon>\n </button>\n </column>\n <!-- <column [width]=\"40\">\n <button mat-icon-button (click)=\"refresFilesList();\" >\n <mat-icon >refresh</mat-icon>\n </button>\n </column> -->\n </columns-container>\n <columns-container *ngIf=\"files.length == 0\">\n <section>\n <code\n >No <taon-file/> - s components detected on this page</code\n >\n </section>\n </columns-container>\n\n <div class=\"scrollable-files-list\" *ngIf=\"files.length > 0\">\n <ng-scrollbar>\n <!-- selected: \"{{ selectedFile?.src }}\" -->\n <!-- {{ filesSelection.selectedOptions | json }} -->\n <mat-selection-list\n [multiple]=\"false\"\n #filesToSelect\n (selectionChange)=\"\n admin.selectedFile = filesToSelect.selectedOptions.hasValue()\n ? filesToSelect.selectedOptions.selected[0].value\n : null\n \">\n <mat-list-option\n *ngFor=\"let file of files | filterBy: ['src'] : fileToSearch\"\n [value]=\"file\">\n <strong *ngIf=\"file?.src === admin.selectedFile?.src\">\n {{ file.src }}\n </strong>\n <span *ngIf=\"file?.src !== admin.selectedFile?.src\">\n {{ file.src }}\n </span>\n </mat-list-option>\n </mat-selection-list>\n </ng-scrollbar>\n </div>\n </mat-tab>\n </mat-tab-group>\n</mat-card>\n","\n\n\nimport { Component, EventEmitter, HostBinding, Input, OnInit, Output, } from '@angular/core';/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n\nimport { FormlyFieldConfig } from '@ngx-formly/core';\nimport { Subscription } from 'rxjs';\n\nimport { _ } from 'tnp-core/websql';\n\n@Component({\n selector: 'taon-file-general-opt',\n templateUrl: './taon-file-general-opt.component.html',\n styleUrls: ['./taon-file-general-opt.component.scss'],\n})\nexport class TaonFileGeneralOptComponent implements OnInit {\n @HostBinding('style.minHeight.px') @Input() height: number = 100;\n handlers: Subscription[] = [];\n fieldsOrder = [];\n fields: FormlyFieldConfig[] = (\n [\n {\n key: 'width',\n },\n {\n key: 'height',\n },\n {\n key: 'display',\n },\n {\n key: 'widthUnit',\n\n\n\n\n\n },\n {\n key: 'heightUnit', // @ts-ignore\n\n\n\n\n\n },\n {\n key: 'action',\n type: 'action',\n templateOptions: {\n label: 'Reset',\n icon: 'cancel',\n raised: true,\n action: () => {\n console.log('reset');\n },\n },\n },\n ] as FormlyFieldConfig[]\n ).map(f => {\n f.className = 'formly-field-half-size';\n return f;\n });\n @Input() file: any;\n\n constructor() {}\n\n ngOnInit() {}\n\n ngOnDestroy(): void {\n this.handlers.forEach(h => h.unsubscribe());\n }\n}\n\n\n ;({}); // @--end-of-file-for-module=taon lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.ts","<!-- <taon-formly-form\n *ngIf=\"file\"\n [fields]=\"fields\"\n [fieldsOrder]=\"fieldsOrder\"\n [exclude]=\"['id']\"\n [(model)]=\"file.css\">\n</taon-formly-form> -->\n","\n\n\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TaonFileGeneralOptComponent } from './taon-file-general-opt.component';\nimport { TaonFullMaterialModule } from '../../../taon-full-material.module';\n\n@NgModule({\n imports: [CommonModule, TaonFullMaterialModule],\n declarations: [TaonFileGeneralOptComponent],\n exports: [TaonFileGeneralOptComponent],\n})\nexport class TaonFileGeneralOptModule {}\n\n\n ;({}); // @--end-of-file-for-module=taon lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.module.ts","\n\n\nexport * from './taon-file-general-opt.component';\nexport * from './taon-file-general-opt.module';\n\n ;({}); // @--end-of-file-for-module=taon lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.ts","\n\n\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TaonAdminEditModeComponent } from './taon-admin-edit-mode.component';\n\nimport { TaonFullMaterialModule } from '../../../taon-full-material.module';\nimport { StaticColumnsModule } from 'static-columns/websql';\nimport { FormsModule } from '@angular/forms';\nimport { NgScrollbarModule } from 'ngx-scrollbar';\nimport { NgArrayPipesModule } from 'ngx-pipes';\nimport { TaonFileGeneralOptModule } from '../taon-file-general-opt';\nimport { TaonTableModule } from '../../../taon-table';\n\n@NgModule({\n imports: [\n CommonModule,\n StaticColumnsModule,\n NgScrollbarModule,\n TaonFileGeneralOptModule,\n FormsModule,\n\n NgArrayPipesModule,\n TaonTableModule,\n TaonFullMaterialModule, // TODO import only partial things\n ],\n declarations: [TaonAdminEditModeComponent],\n exports: [TaonAdminEditModeComponent],\n})\nexport class TaonAdminEditModeModule {}\n\n\n ;({}); // @--end-of-file-for-module=taon lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.module.ts","\n\n\nexport * from './taon-admin-edit-mode.component';\n\n\nexport * from './taon-admin-edit-mode.module';\n\n ;({}); // @--end-of-file-for-module=taon lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.ts","\n\n\nimport { Injector, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TaonAdminModeConfigurationComponent } from './taon-admin-mode-configuration.component';\nimport { TaonFullMaterialModule } from '../taon-full-material.module';\nimport { StaticColumnsModule } from 'static-columns/websql';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TaonAdminEditModeModule } from './components/taon-admin-edit-mode';\nimport { NgScrollbarModule } from 'ngx-scrollbar';\nimport { TaonProgressBarModule } from '../taon-progress-bar';\nimport { TaonNotificationsModule } from '../taon-notifications';\nimport { createCustomElement } from '@angular/elements';\n\nimport { TaonSessionPasscodeComponent } from '../taon-session-passcode';\n\n@NgModule({\n imports: [\n CommonModule,\n StaticColumnsModule,\n FormsModule,\n NgScrollbarModule,\n TaonAdminEditModeModule,\n TaonProgressBarModule,\n TaonNotificationsModule,\n TaonFullMaterialModule, // TODO import only partial things\n\n TaonSessionPasscodeComponent,\n ],\n declarations: [TaonAdminModeConfigurationComponent],\n exports: [TaonAdminModeConfigurationComponent],\n})\nexport class TaonAdminModeConfigurationModule {}\n\n\n ;({}); // @--end-of-file-for-module=taon lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.module.ts","\n\n\nexport * from './taon-admin-mode-configuration.component';\nexport * from './taon-admin-mode-configuration.module';\nexport * from './taon-admin-control.service';\n\n\n ;({}); // @--end-of-file-for-module=taon lib/ui/taon-admin-mode-configuration/index.ts","\n\n\nexport * from './directives';\nexport * from './taon-full-material.module';\nexport * from './taon-github-fork-me-corner';\nexport * from './taon-github-fork-me-corner';\nexport * from './taon-notifications';\nexport * from './taon-session-passcode';\nexport * from './taon-progress-bar';\nexport * from './taon-table';\nexport * from './taon-admin-mode-configuration';\n\n\n ;({}); // @--end-of-file-for-module=taon lib/ui/index.ts","\n\nexport type TaonEntityKeysToOmit =\n | 'ctrl'\n | 'clone'\n | '__endpoint_context__'\n | 'inject'\n | '_';\n\n ;({}); // @--end-of-file-for-module=taon lib/constants.ts","\n\nimport 'reflect-metadata';\nimport * as http from './decorators/http/http-decorators';\nimport * as base from './base-classes/base';\nimport * as controllerDecorator from './decorators/classes/controller-decorator';\nimport * as entityDecorator from './decorators/classes/entity-decorator';\nimport * as providerDecorator from './decorators/classes/provider-decorator';\nimport * as repositoryDecorator from './decorators/classes/repository-decorator';\nimport * as subscriberDecorator from './decorators/classes/subscriber-decorator';\nimport * as createContextFn from './create-context';\nimport * as orm from './orm';\nimport * as models from './models';\nimport * as coreHelpers from 'tnp-core/websql';\nimport * as injectFn from './inject';\nimport * as endpointContext from './endpoint-context';\nimport * as allSymbols from './symbols';\nimport * as getResponse from './get-response-value';\n\nimport { NgZone } from '@angular/core';\nexport * from './ui';\n\n\nexport { BaseRepository } from './base-classes/base-repository';\nexport { BaseController } from './base-classes/base-controller';\nexport { BaseProvider } from './base-classes/base-provider';\nexport { BaseEntity } from './base-classes/base-entity';\nexport { BaseContext } from './base-classes/base-context';\nexport { createContext } from './create-context';\nexport { inject } from './inject';\nexport { Models } from './models';\nexport * from './constants';\nexport { ClassHelpers } from './helpers/class-helpers';\n\n\nexport namespace Taon {\n export import Response = models.Models.Http.Response;\n export import Http = http.Http;\n export import Base = base.Base;\n export import Orm = orm.Orm;\n\n export const getResponseValue = getResponse.getResponseValue;\n\n\n export import Controller = controllerDecorator.TaonController;\n export import Entity = entityDecorator.TaonEntity;\n export import Provider = providerDecorator.TaonProvider;\n export import Repository = repositoryDecorator.TaonRepository;\n export import Subscriber = subscriberDecorator.TaonSubscriber;\n\n\n export const isBrowser = coreHelpers.Helpers.isBrowser;\n export const isNode = coreHelpers.Helpers.isNode;\n export const isWebSQL = coreHelpers.Helpers.isWebSQL;\n export const isElectron = coreHelpers.Helpers.isElectron;\n\n export const createContext = createContextFn.createContext;\n\n export const inject = injectFn.inject;\n\n\n export const initNgZone = (ngZone: NgZone) => {\n endpointContext.EndpointContext.initNgZone(ngZone);\n };\n\n\n export const symbols = allSymbols.Symbols;\n\n /**\n * @deprecated\n * use createContext instead\n */\n export const init = async (options: {\n host: string;\n entities: Function[];\n controllers: Function[];\n }) => {\n const BaseContext = (await import('./base-classes/base-context'))\n .BaseContext;\n const context = createContext(() => ({\n contextName: 'default',\n host: options.host,\n contexts: { BaseContext },\n database: true,\n entities: Array.from(options.entities) as any,\n controllers: Array.from(options.controllers) as any,\n }));\n\n await context.initialize();\n return context;\n };\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/index.ts","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["_","ModelsNg2Rest","methods.GET","methods.POST","methods.PUT","methods.DELETE","methods.PATCH","methods.HEAD","Models","params.Query","params.Path","params.Body","params.Cookie","params.Header","EntityDecorator","ENV","TypeormEntity","controller.BaseController","crudController.BaseCrudController","entity.BaseEntity","abstractEntity.BaseAbstractEntity","provider.BaseProvider","baseclass.BaseClass","repository.BaseRepository","baseSubscriberEntity.BaseSubscriberForEntity","baseContext.BaseContext","angularInject","log","i1","i1.TaonNotificationsService","inject","i2","i5","i7","i3","i4","i6","i9","i12.TaonSessionPasscodeComponent","i8","i10","i11","i12","http.Http","base.Base","orm.Orm","getResponse.getResponseValue","controllerDecorator.TaonController","entityDecorator.TaonEntity","providerDecorator.TaonProvider","repositoryDecorator.TaonRepository","subscriberDecorator.TaonSubscriber","createContextFn.createContext","injectFn.inject","endpointContext.EndpointContext","allSymbols.Symbols"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"taon.mjs","sources":["../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/symbols.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/validators.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/helpers/taon-helpers.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/helpers/class-helpers.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/models.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/decorators/http/http-methods-decorators.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/decorators/http/http-params-decorators.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/decorators/http/http-decorators.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/decorators/classes/controller-decorator.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/base-classes/base-injector.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/base-classes/base-controller.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/base-classes/base-crud-controller.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/base-classes/base-class.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/base-classes/base-entity.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/orm.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/base-classes/base-abstract-entity.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/decorators/classes/repository-decorator.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/base-classes/base-repository.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/base-classes/base-provider.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/taon-admin-mode-configuration/taon-admin.service.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/dependency-injection/di-container.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/get-response-value.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/env.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/realtime/realtime-subs-manager.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/realtime/realtime-client.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/realtime/realtime-server.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/realtime/realtime-strategy/realtime-strategy.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/realtime/realtime-strategy/realtime-strategy-ipc.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/realtime/realtime-strategy/realtime-strategy-mock.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/realtime/realtime-strategy/realtime-strategy-socket-io.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/realtime/realtime-strategy/index.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/realtime/realtime-core.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/context-db-migrations.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/endpoint-context.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/create-context.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/base-classes/base-context.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/decorators/classes/subscriber-decorator.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/base-classes/base-subscriber-for-entity.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/base-classes/base-migration.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/base-classes/base.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/decorators/classes/entity-decorator.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/decorators/classes/provider-decorator.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/decorators/classes/migration-decorator.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/inject.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/directives/taon-long-press.directive.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/directives/taon-inject-html.directive.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/directives/safe.pipe.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/directives/index.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/taon-full-material.module.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/taon-github-fork-me-corner/taon-github-fork-me-corner.component.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/taon-github-fork-me-corner/taon-github-fork-me-corner.component.html","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/taon-github-fork-me-corner/taon-github-fork-me-corner.module.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/taon-github-fork-me-corner/index.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/taon-notifications/taon-notifications.service.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/taon-notifications/taon-notifications.component.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/taon-notifications/taon-notifications.component.html","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/taon-notifications/taon-notifications.models.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/taon-notifications/taon-notifications.module.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/taon-notifications/index.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/taon-session-passcode/taon-session-passcode.component.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/taon-session-passcode/taon-session-passcode.component.html","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/taon-session-passcode/index.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/taon-progress-bar/taon-progress-bar.component.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/taon-progress-bar/taon-progress-bar.component.html","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/taon-progress-bar/taon-progress-bar.module.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/taon-progress-bar/index.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/taon-table/taon-table.component.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/taon-table/taon-table.component.html","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/taon-table/taon-table.module.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/taon-table/index.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.html","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/taon-admin-mode-configuration/index.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/ui/index.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/constants.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/lib/index.ts","../../../tmp-libs-for-dist-websql/taon/projects/taon/src/taon.ts"],"sourcesContent":["\n\nimport { _ } from 'tnp-core/websql';\nimport { OrignalClassKey } from 'taon-typeorm/websql';\nimport { SYMBOL } from 'typescript-class-helpers/websql';\n\nexport namespace Symbols {\n export const ctxInClassOrClassObj = Symbol();\n export const classNameStaticProperty: string = SYMBOL.ClassNameStaticProperty;\n export const fullClassNameStaticProperty: string = `$$fullclassName$$`;\n export const orignalClass: string = OrignalClassKey;\n export const orignalClassClonesObj: string = `$$originalClassClonesObj$$`;\n export const classMethodsNames: string = `$$classMethodsNames$$`;\n\n /**\n * for backendSocket.in(ROOM_NAME).emit(EVENT)\n *\n * Room names are uniqe..\n * here I am limiting number of event for clients.\n */\n class Realtime {\n NAMESPACE(contextName: string) {\n return `${contextName}-taonRealtimeNsp`;\n }\n TABLE_CHANGE(contextName: string, tableName: string) {\n return `${contextName}:listentablename${tableName}`;\n }\n readonly KEYroomSubscribe = `roomSubscribe`;\n readonly KEYroomUnsubscribe = `roomUnsubscribe`;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n ROOM_NAME_CUSTOM(contextName: string, customEvent: string) {\n return `${contextName}:CustomRoomEvent${customEvent}`;\n }\n\n ROOM_SUBSCRIBE_CUSTOM(contextName: string) {\n return `${contextName}:${this.KEYroomSubscribe}CustomRoomEvent`;\n }\n ROOM_UNSUBSCRIBE_CUSTOM(contextName: string) {\n return `${contextName}:${this.KEYroomUnsubscribe}CustomRoomEvent`;\n }\n\n\n\n ROOM_NAME_UPDATE_ENTITY(\n contextName: string,\n className: string,\n entityId: number | string,\n ) {\n return `${contextName}:room${_.camelCase(className)}${entityId}`.toLowerCase();\n }\n ROOM_SUBSCRIBE_ENTITY_UPDATE_EVENTS(contextName: string) {\n return `${contextName}:${this.KEYroomSubscribe}EntityEvents`;\n }\n\n ROOM_UNSUBSCRIBE_ENTITY_UPDATE_EVENTS(contextName: string) {\n return `${contextName}:${this.KEYroomUnsubscribe}EntityEvents`;\n }\n\n\n\n ROOM_NAME_UPDATE_ENTITY_PROPERTY(\n contextName: string,\n className: string,\n property: string,\n entityId: number | string,\n ) {\n return `${contextName}:room${_.camelCase(className)}${_.camelCase(property)}${entityId}`.toLowerCase();\n }\n\n ROOM_SUBSCRIBE_ENTITY_PROPERTY_UPDATE_EVENTS(contextName: string) {\n return `${contextName}:${this.KEYroomSubscribe}EntityPropertyEvents`;\n }\n\n ROOM_UNSUBSCRIBE_ENTITY_PROPERTY_UPDATE_EVENTS(contextName: string) {\n return `${contextName}:${this.KEYroomUnsubscribe}EntityPropertyEvents`;\n }\n\n }\n\n export const REALTIME = new Realtime();\n\n export const metadata = {\n className: `class:realname`,\n options: {\n runtimeController: `runtime:controller:options`,\n controller: `controller:options`,\n controllerMethod: `controller:method:options`,\n entity: `entity:options`,\n repository: `repository:options`,\n provider: `provider:options`,\n subscriber: `subscriber:options`,\n migration: `migration:options`,\n },\n };\n\n export const old = {\n HAS_TABLE_IN_DB: Symbol(),\n MDC_KEY: `modeldataconfig`,\n WEBSQL_REST_PROGRESS_FUN: Symbol(),\n WEBSQL_REST_PROGRESS_FUN_START: Symbol(),\n WEBSQL_REST_PROGRESS_FUN_DONE: Symbol(),\n WEBSQL_REST_PROGRESS_TIMEOUT: Symbol(),\n\n X_TOTAL_COUNT: `x-total-count`,\n CIRCURAL_OBJECTS_MAP_BODY: `circuralmapbody`,\n CIRCURAL_OBJECTS_MAP_QUERY_PARAM: `circuralmapbody`,\n MAPPING_CONFIG_HEADER: `mappingheader`,\n MAPPING_CONFIG_HEADER_BODY_PARAMS: `mhbodyparams`,\n MAPPING_CONFIG_HEADER_QUERY_PARAMS: `mhqueryparams`,\n ENDPOINT_META_CONFIG: `ng2_rest_endpoint_config`,\n CLASS_DECORATOR_CONTEXT: `$$ng2_rest_class_context`,\n SOCKET_MSG: `socketmessageng2rest`,\n ANGULAR: {\n INPUT_NAMES: Symbol(),\n },\n ERROR_MESSAGES: {\n CLASS_NAME_MATCH: `Please check if your \"class name\" matches @Controller( className ) or @Entity( className )`,\n },\n };\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/symbols.ts","\n\nimport { _ } from 'tnp-core/websql';\nimport { Models } from './models';\n\nexport namespace Validators {\n\n export const classNameVlidation = (className, target: Function) => {\n setTimeout(() => {\n\n if (_.isUndefined(className)) {\n throw `[Taon]\n Please provide \"className\" property for each Controller and Entity:\n\n @Taon.Controller({ className: 'MyExampleCtrl' })\n class MyExampleCtrl {\n ...\n }\n\n @Taon.Entity({ className: 'MyExampleEntity' })\n class MyExampleEntity {\n ...\n }\n\n Notice that minified javascript code does not preserve\n Functions/Classes names -this is only solution to preserve classes names.\n\n `;\n }\n });\n\n return _.isUndefined(className) ? target.name : className;\n };\n\n\n\n export const checkIfMethodsWithReponseTYpeAlowed = (\n methods: Models.MethodConfig[],\n current: Models.MethodConfig,\n ) => {\n const defaultResponseType = 'text or JSON';\n if (!current.responseType) {\n return;\n }\n for (let index = 0; index < methods.length; index++) {\n const m = methods[index];\n if (m.path === current.path && m.responseType !== current.responseType) {\n throw new Error(`\n [taon] you can have 2 methods with same path but differetn reponseType-s\n\n ${m.methodName}( ... path: ${m.path} ) -> responseType: ${m.responseType || defaultResponseType}\n ${current.methodName}( ... path: ${current.path} ) -> responseType: ${current.responseType}\n\n Please change path name on of the methods.\n\n `);\n }\n }\n };\n\n\n\n\n export const validateClassFunctions = (\n controllers: any[],\n entities: any[],\n proviers: any[],\n repositories: any[],\n ) => {\n if (\n _.isArray(controllers) &&\n controllers.filter(f => !_.isFunction(f)).length > 0\n ) {\n console.error('controllers', controllers);\n throw `\n\n Incorect value for property \"controllers\" inside Taon.Init(...)\n\n `;\n }\n\n if (\n _.isArray(entities) &&\n entities.filter(f => !_.isFunction(f)).length > 0\n ) {\n console.error('entites', entities);\n throw `\n\n Incorect value for property \"entities\" inside Taon.Init(...)\n\n `;\n }\n };\n\n\n export const preventUndefinedModel = (model, id) => {\n if (_.isUndefined(model)) {\n throw `Bad update by id, config, id: ${id}`;\n }\n };\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/validators.ts","\n\nimport { _ } from 'tnp-core/websql';\nimport * as JSON5 from 'json5';\nimport { Models } from '../models';\nimport { ClassHelpers } from './class-helpers';\n\nexport namespace TaonHelpers {\n\n export const fillUpTo = (s: string, nCharacters: number) => {\n return _.times(nCharacters, n => {\n if (s.charAt(n)) {\n return s.charAt(n);\n }\n return ' ';\n }).join('');\n };\n\n\n\n export const isGoodPath = (p: string) => {\n return p && typeof p === 'string' && p.trim() !== '';\n };\n\n\n\n export const tryTransformParam = param => {\n if (typeof param === 'string') {\n let n = Number(param);\n if (!isNaN(n)) return n;\n const bool = param.trim().toLowerCase();\n if (bool === 'true') {\n return true;\n }\n if (bool === 'false') {\n return false;\n }\n try {\n const t = JSON5.parse(param);\n return t;\n } catch (e) {\n return param;\n }\n }\n return param;\n };\n\n\n\n export const getExpressPath = (\n c: Models.RuntimeControllerConfig,\n pathOrClassConfig: Models.MethodConfig,\n ) => {\n if (typeof pathOrClassConfig === 'string')\n return `${c.calculatedPath}${pathOrClassConfig}`.replace(/\\/$/, '');\n return `${c.calculatedPath}${pathOrClassConfig.path}`.replace(/\\/$/, '');\n };\n\n\n\n export const defaultType = value => {\n if (typeof value === 'string') return '';\n if (typeof value === 'boolean') return false;\n if (Array.isArray(value)) return {};\n if (typeof value === 'object') return {};\n };\n\n\n\n export const parseJSONwithStringJSONs = (\n object: Object,\n waring = false,\n ): Object => {\n\n if (!_.isObject(object)) {\n if (waring) {\n console.error(\n `\n parseJSONwithStringJSONs(...)\n Parameter should be a object, but is ${typeof object}\n `,\n object,\n );\n }\n\n return object;\n }\n\n let res = _.cloneDeep(object);\n\n Object.keys(res).forEach(key => {\n let isJson = false;\n try {\n const possibleJSON = JSON.parse(res[key]);\n res[key] = possibleJSON;\n isJson = true;\n } catch (e) {\n isJson = false;\n }\n\n if (isJson) {\n res[key] = parseJSONwithStringJSONs(res[key], false);\n }\n });\n\n return res;\n };\n\n\n\n export const isPlainFileOrFolder = filePath => {\n return /^([a-zA-Z]|\\-|\\_|\\@|\\#|\\$|\\!|\\^|\\&|\\*|\\(|\\))+$/.test(filePath);\n };\n\n\n\n export const ipcKeyNameResponse = (\n target: Function,\n methodConfig: Models.MethodConfig,\n expressPath: string,\n ) => {\n return [\n 'response',\n ClassHelpers.getName(target),\n methodConfig.methodName,\n methodConfig.type,\n expressPath,\n ].join('--');\n };\n\n\n\n export const ipcKeyNameRequest = (\n target: Function,\n methodConfig: Models.MethodConfig,\n expressPath: string,\n ) => {\n return [\n 'request',\n ClassHelpers.getName(target),\n methodConfig.methodName,\n methodConfig.type,\n expressPath,\n ].join('--');\n };\n\n\n\n export const websqlMocks = headers => {\n const response: Express.Response = {\n status(status: any) {\n\n return {\n send(send: any) {\n\n },\n };\n },\n setHeader(key: string, value: any) {\n\n headers[key] = value;\n },\n };\n const request: Express.Request = {};\n return { request, response };\n };\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/helpers/taon-helpers.ts","\n\nimport { Symbols } from '../symbols';\nimport { Validators } from '../validators';\nimport { _ } from 'tnp-core/websql';\nimport { Models } from '../models';\nimport { TaonControllerOptions } from '../decorators/classes/controller-decorator';\nimport { TaonHelpers } from './taon-helpers';\nimport { TaonEntityOptions } from '../decorators/classes/entity-decorator';\nimport { CLASS } from 'typescript-class-helpers/websql';\n/* */\n/* */\n \n\nexport namespace ClassHelpers {\n\n /**\n * TODO - repalce in every place when getting class fn from object\n */\n export const getClassFnFromObject = (json: Object) => {\n if (_.isUndefined(json) || _.isNull(json)) {\n return;\n }\n if (json.constructor) {\n return json.constructor;\n }\n const p = Object.getPrototypeOf(json);\n return p && p.constructor && p.constructor.name !== 'Object'\n ? p.constructor\n : void 0;\n };\n\n\n\n export const getName = (classFnOrObject: any): string => {\n\n if (classFnOrObject instanceof FormData) {\n return 'FormData';\n }\n if (!classFnOrObject) {\n console.error('OBJECT OR CLASS', classFnOrObject);\n throw new Error(`Cannot get name from this object or class.`);\n }\n return (\n (classFnOrObject[Symbols.classNameStaticProperty]\n ? classFnOrObject[Symbols.classNameStaticProperty]\n : classFnOrObject?.constructor[Symbols.classNameStaticProperty]) ||\n CLASS.getName(classFnOrObject)\n );\n };\n\n\n export const getOrginalClass = (classFnOrObject: any): any => {\n const org = classFnOrObject[Symbols.orignalClass];\n if (!org) {\n return classFnOrObject;\n }\n return getOrginalClass(org);\n };\n\n\n export const getFullInternalName = (classFnOrObject: any): string => {\n\n\n if (!classFnOrObject) {\n throw new Error(`Cannot get name from: ${classFnOrObject}`);\n }\n return (\n (classFnOrObject[Symbols.fullClassNameStaticProperty]\n ? classFnOrObject[Symbols.fullClassNameStaticProperty]\n : classFnOrObject?.constructor[Symbols.fullClassNameStaticProperty]) ||\n void 0\n );\n };\n\n\n\n export const getUniqueKey = (classFnOrObject: any): string => {\n const classFn = _.isFunction(classFnOrObject)\n ? classFnOrObject\n : classFnOrObject.constructor;\n const config = Reflect.getMetadata(\n Symbols.metadata.options.controller,\n classFn,\n ) as TaonEntityOptions;\n return config.uniqueKeyProp;\n };\n\n\n\n export const isContextClassObject = (obj: any): boolean => {\n if (\n !_.isObject(obj) ||\n _.isArray(obj) ||\n _.isRegExp(obj) ||\n _.isBuffer(obj) ||\n _.isArrayBuffer(obj)\n ) {\n return false;\n }\n if (_.isDate(obj)) {\n return true;\n }\n const className = getName(obj);\n return _.isString(className) && className !== 'Object';\n };\n\n\n\n\n export const setName = (target: Function, className: string): void => {\n\n Validators.classNameVlidation(className, target);\n target[Symbols.classNameStaticProperty] = className;\n };\n\n\n\n export const hasParentClassWithName = (\n target: Function,\n className: string,\n targets = [],\n ): boolean => {\n if (!target) {\n return false;\n }\n targets.push(target);\n let targetProto = Object.getPrototypeOf(target);\n\n if (\n _.isFunction(targetProto) &&\n ClassHelpers.getName(targetProto) === className\n ) {\n\n return true;\n }\n return hasParentClassWithName(targetProto, className, targets);\n };\n\n\n\n export const getControllerConfig = (\n target: Function,\n ): Models.ControllerConfig | undefined => {\n const classMetadataOptions: TaonControllerOptions = Reflect.getMetadata(\n Symbols.metadata.options.controller,\n target,\n );\n const classMetadata: Models.ControllerConfig = _.merge(\n new Models.ControllerConfig(),\n classMetadataOptions,\n );\n\n\n const methodNames = ClassHelpers.getMethodsNames(target); // Object.getOwnPropertyNames(target.prototype);\n\n for (const methodName of methodNames) {\n const methodMetadata: Models.MethodConfig = Reflect.getMetadata(\n Symbols.metadata.options.controllerMethod,\n target,\n methodName,\n );\n\n if (methodMetadata) {\n classMetadata.methods[methodName] = methodMetadata;\n }\n }\n return classMetadata;\n };\n\n\n\n\n\n const notAllowedAsMethodName = [\n 'length',\n 'name',\n 'arguments',\n 'caller',\n 'constructor',\n 'apply',\n 'bind',\n 'call',\n 'toString',\n '__defineGetter__',\n '__defineSetter__',\n 'hasOwnProperty',\n '__lookupGetter__',\n '__lookupSetter__',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'valueOf',\n '__proto__',\n 'toLocaleString',\n ];\n\n\n export const getMethodsNames = (\n classOrClassInstance: any,\n allMethodsNames = [],\n ): string[] => {\n if (!classOrClassInstance) {\n return allMethodsNames;\n }\n\n const isClassFunction = _.isFunction(classOrClassInstance);\n const classFun = isClassFunction\n ? classOrClassInstance\n : Object.getPrototypeOf(classOrClassInstance);\n const objectToCheck = isClassFunction\n ? (classOrClassInstance as Function)?.prototype\n : classOrClassInstance;\n const prototypeObj = Object.getPrototypeOf(objectToCheck || {});\n\n const properties = _.uniq([\n ...Object.getOwnPropertyNames(objectToCheck || {}),\n ...Object.getOwnPropertyNames(prototypeObj || {}),\n ...Object.keys(objectToCheck || {}),\n ...Object.keys(prototypeObj || {}),\n ]).filter(f => !!f && !notAllowedAsMethodName.includes(f));\n\n properties\n .filter(methodName => typeof objectToCheck[methodName] === 'function')\n .forEach(p => allMethodsNames.push(p));\n\n if (\n !classFun ||\n !classFun.constructor ||\n classFun?.constructor?.name === 'Object'\n ) {\n return allMethodsNames;\n }\n return getMethodsNames(Object.getPrototypeOf(classFun), allMethodsNames);\n };\n\n\n\n export const getControllerConfigs = (\n target: Function,\n configs: Models.ControllerConfig[] = [],\n callerTarget?: Function,\n ): Models.RuntimeControllerConfig[] => {\n if (!_.isFunction(target)) {\n throw `[typescript-class-helper][getClassConfig] Cannot get class config from: ${target}`;\n }\n\n let config: Models.RuntimeControllerConfig;\n const parentClass = Object.getPrototypeOf(target);\n const parentName = parentClass ? ClassHelpers.getName(parentClass) : void 0;\n const isValidParent = _.isFunction(parentClass) && parentName !== '';\n\n config = getControllerConfig(target);\n\n configs.push(config);\n\n return isValidParent\n ? getControllerConfigs(parentClass, configs, target)\n : configs;\n };\n\n\n\n export const getCalculatedPathFor = (target: Function) => {\n const configs = getControllerConfigs(target);\n\n const parentscalculatedPath = _.slice(configs, 1)\n .reverse()\n .map(bc => {\n if (TaonHelpers.isGoodPath(bc.path)) {\n return bc.path;\n }\n return bc.className;\n })\n .join('/');\n\n return `/${parentscalculatedPath}/${ClassHelpers.getName(target)}`;\n };\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/helpers/class-helpers.ts","\n\nimport { CoreModels } from 'tnp-core/websql';\nimport { Response, RequestHandler } from 'express';\nimport { Response as ExpressResponse, Request as ExpressRequest, } from 'express';/* */\n/* */\n/* */\n\nimport { _ } from 'tnp-core/websql';\nimport { Models as ModelsNg2Rest } from 'ng2-rest/websql';\nimport { ClassHelpers } from './helpers/class-helpers';\nimport type { TaonControllerOptions } from './decorators/classes/controller-decorator';\nimport type { TaonEntityOptions } from './decorators/classes/entity-decorator';\n\nexport namespace Models {\n export type FrameworkMode =\n | 'backend-frontend(tcp+udp)'\n | 'remote-backend(tcp+udp)'\n | 'backend-frontend(ipc-electron)'\n | 'backend-frontend(websql-electron)'\n | 'backend-frontend(websql)';\n\n\n export enum ClassType {\n ENTITY = 'ENTITY',\n CONTROLLER = 'CONTROLLER',\n REPOSITORY = 'REPOSITORY',\n PROVIDER = 'PROVIDER',\n SUBSCRIBER = 'SUBSCRIBER',\n MIGRATION = 'MIGRATION',\n }\n\n export const ClassTypeKey = {\n [ClassType.ENTITY]: 'entities',\n [ClassType.CONTROLLER]: 'controllers',\n [ClassType.REPOSITORY]: 'repositories',\n [ClassType.PROVIDER]: 'providers',\n [ClassType.SUBSCRIBER]: 'subscribers',\n [ClassType.MIGRATION]: 'migrations',\n } as {\n [key in ClassType]: keyof ContextOptions<any, any, any, any, any, any, any>;\n };\n\n\n\n\n export type MiddlewareType = [Function, any[]];\n\n\n\n /**\n * DROP_DB+MIGRATIONS (default for development)\n * Drop all tables + recreate them + run migrations\n * synchronize: true , dropSchema: true\n * use migrations: true\n *\n * MIGRATIONS (default for production)\n * Do not drop tables, only run migrations\n * synchronize: false, dropSchema: false\n * use migrations: true\n */\n export type DBRecreateMode =\n | 'DROP_DB+MIGRATIONS'\n | 'PRESERVE_DATA+MIGRATIONS';\n\n\n\n export class DatabaseConfigTypeOrm {\n /**\n * database name\n */\n database?: string;\n /**\n * only for file base db: sqlite, sqljs\n */\n location?: string;\n synchronize: boolean;\n dropSchema: boolean;\n type?: CoreModels.DatabaseType;\n /**\n * Persists db on disk/local-storage if serverless db\n */\n autoSave?: boolean;\n /**\n * for websql db mode\n * true by default\n */\n useLocalForage?: boolean;\n logging: boolean;\n databasePort?: number;\n databaseHost?: string;\n databaseUsername?: string;\n databasePassword?: string;\n }\n\n\n\n export class DatabaseConfig extends DatabaseConfigTypeOrm {\n /**\n * Default value 'DROP_ALL'.\n *\n * Tell framework what is happening with db\n * when context is starting.\n */\n public recreateMode?: DBRecreateMode;\n\n static from(\n databasePartialConfig: Partial<\n Omit<\n DatabaseConfig,\n 'synchronize' | 'dropSchema' | 'databaseConfigTypeORM'\n >\n >,\n ): DatabaseConfig {\n return _.merge(new DatabaseConfig(), databasePartialConfig);\n }\n\n get databaseConfigTypeORM(): DatabaseConfigTypeOrm {\n\n const result = _.cloneDeep(this) as DatabaseConfig;\n if (result.recreateMode) {\n if (result.recreateMode === 'DROP_DB+MIGRATIONS') {\n result.synchronize = true;\n result.dropSchema = true;\n } else if (result.recreateMode === 'PRESERVE_DATA+MIGRATIONS') {\n result.synchronize = false;\n result.dropSchema = false;\n }\n }\n delete result.recreateMode;\n\n return result as any;\n\n }\n }\n\n\n\n\n export type ISession = {\n secret?: string;\n saveUninitialized?: boolean;\n /**\n * max age of session\n */\n cookieMaxAge?: number;\n secure?: boolean;\n resave?: boolean;\n };\n\n\n\n export type ConnectionOptionsLogs = {\n http?: boolean;\n realtime?: boolean;\n framework?: boolean;\n db?: boolean;\n migrations?: boolean;\n };\n export interface ContextOptions<\n CONTEXTS,\n CONTROLLERS,\n ENTITIES,\n REPOSITORIES,\n PROVIDERS,\n SUBSCRIBERS,\n MIGRATIONS,\n > {\n contextName: string;\n /**\n * host/port for initing backend server\n */\n host?: string;\n /**\n * frontend host only needed when we are\n * using withCredentials for axios\n * and session cookie\n * or realtime communication\n */\n frontendHost?: string;\n /**\n * backend way of communication\n * between taon backends/processes\n */\n remoteHost?: string;\n useIpcWhenElectron?: boolean;\n contexts?: CONTEXTS;\n controllers?: CONTROLLERS;\n entities?: ENTITIES;\n repositories?: REPOSITORIES;\n providers?: PROVIDERS;\n subscribers?: SUBSCRIBERS;\n migrations?: MIGRATIONS;\n session?: ISession;\n productionMode?: boolean;\n abstract?: boolean;\n logs?: boolean | ConnectionOptionsLogs;\n database?: boolean | Partial<DatabaseConfig>;\n disabledRealtime?: boolean;\n https?: {\n key: string;\n cert: string;\n };\n publicAssets?: { serverPath: string; locationOnDisk: string }[];\n middlewares?: MiddlewareType[];\n }\n\n\n\n export class DecoratorAbstractOpt {\n className: string;\n }\n\n\n\n export class ParamConfig {\n paramName: string;\n paramType: CoreModels.ParamType;\n index: number;\n defaultType: any;\n expireInSeconds?: number;\n }\n\n\n\n export class MethodConfig {\n methodName: string;\n /**\n * path is global in express app\n */\n global?: boolean;\n /**\n * override default content type\n */\n contentType?: any;\n /**\n * override default axiso response type\n */\n responseType?: any;\n path: string;\n descriptor: PropertyDescriptor;\n type: CoreModels.HttpMethod;\n\n requestHandler: any;\n\n parameters: { [paramName: string]: ParamConfig } = {};\n }\n\n\n\n export class ControllerConfig extends DecoratorAbstractOpt {\n realtime?: boolean;\n path: string;\n uniqueKey?: string;\n methods: { [methodName: string]: MethodConfig } = {};\n }\n\n\n\n export class RuntimeControllerConfig extends ControllerConfig {\n calculatedPath?: string;\n browserTransformFn?: (entity: any) => any;\n }\n\n\n\n export namespace Http {\n export import Rest = ModelsNg2Rest;\n\n export type ContextENDPOINT = { target: Function; initFN: Function };\n\n export type FormlyFromType = 'material' | 'bootstrap';\n\n export type ExpressContext<T> = (\n req: ExpressRequest,\n res: ExpressResponse,\n ) => T;\n\n export type SyncResponse<T> = string | T;\n\n export type ResponseFuncOpt<T> = {\n limitSize?: (\n enties: Function | Function[],\n include: string[],\n exclude: string[],\n ) => void;\n };\n\n export type SyncResponseFunc<T> = (\n options?: ResponseFuncOpt<T>,\n ) => SyncResponse<T>;\n export type MixResponse<T> = SyncResponse<T> | ExpressContext<T>;\n\n export interface ClientAction<T> {\n received?: Rest.PromiseObservableMix<Rest.HttpResponse<T>>;\n }\n\n export interface AsyncResponse<T> {\n (\n req?: ExpressRequest,\n res?: ExpressResponse,\n ): Promise<SyncResponse<T> | SyncResponseFunc<T>>;\n }\n\n export type Response<T = string> = AsyncResponse<T> & ClientAction<T>;\n\n export class Errors {\n public toString = (): string => {\n return this.message;\n };\n\n private constructor(\n public message: string,\n private code: ModelsNg2Rest.HttpCode = 400,\n ) {}\n\n private static create(\n message: string,\n code: ModelsNg2Rest.HttpCode = 400,\n ) {\n return new Errors(message, code);\n }\n\n public static entityNotFound(entity?: Function) {\n return Errors.create(\n `Entity ${ClassHelpers.getName(entity)} not found`,\n );\n }\n\n public static custom(\n message: string,\n code: ModelsNg2Rest.HttpCode = 400,\n ) {\n return Errors.create(message, code);\n }\n }\n\n\n export interface AuthCallBack {\n (methodReference: Function): RequestHandler;\n }\n\n\n }\n\n\n\n export interface StartParams {\n port: number;\n args: string[];\n onlyMigrationRun?: boolean;\n onlyMigrationRevertToTimestamp?: number;\n }\n\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/models.ts","\n\nimport { CoreModels, _ } from 'tnp-core/websql';\nimport { Models } from '../../models';\nimport { Symbols } from '../../symbols';\nimport { Models as ModelsNg2Rest } from 'ng2-rest/websql';\nconst metaReq = (\n method: Models.Http.Rest.HttpMethod,\n path: string,\n target: Function,\n propertyKey: string,\n descriptor: PropertyDescriptor,\n pathOrOptions: string | TaonHttpDecoratorOptions,\n pathIsGlobal: boolean,\n) => {\n let options: TaonHttpDecoratorOptions;\n if (typeof pathOrOptions === 'object') {\n options = pathOrOptions;\n pathOrOptions = options.path as any;\n pathIsGlobal = !!options.pathIsGlobal;\n path = options.path;\n } else {\n options = { pathOrOptions, pathIsGlobal } as any;\n }\n\n const { overrideContentType, overridResponseType } = options;\n\n let methodConfig: Models.MethodConfig = Reflect.getMetadata(\n Symbols.metadata.options.controllerMethod,\n target.constructor,\n propertyKey,\n );\n if (!methodConfig) {\n methodConfig = new Models.MethodConfig();\n Reflect.defineMetadata(\n Symbols.metadata.options.controllerMethod,\n methodConfig,\n target.constructor,\n propertyKey,\n );\n }\n\n methodConfig.methodName = propertyKey;\n methodConfig.type = method;\n if (!path) {\n let paramsPathConcatedPath = '';\n for (const key in methodConfig.parameters) {\n if (methodConfig.parameters.hasOwnProperty(key)) {\n const element = methodConfig.parameters[key];\n if (\n element.paramType === 'Path' &&\n _.isString(element.paramName) &&\n element.paramName.trim().length > 0\n ) {\n paramsPathConcatedPath += `/${element.paramName}/:${element.paramName}`;\n }\n }\n }\n methodConfig.path = `/${propertyKey}${paramsPathConcatedPath}`;\n } else {\n methodConfig.path = path;\n }\n\n methodConfig.descriptor = descriptor;\n methodConfig.global = pathIsGlobal;\n methodConfig.contentType = overrideContentType;\n methodConfig.responseType = overridResponseType;\n Reflect.defineMetadata(\n Symbols.metadata.options.controllerMethod,\n methodConfig,\n target.constructor,\n propertyKey,\n );\n\n};\n\nexport interface TaonHttpDecoratorOptions {\n /**\n * ! BE CAREFULL\n * This method is only for very special cases\n * Path for the method is automatically generated\n */\n path?: string;\n /**\n * ! BE CAREFULL\n * If true, the path will be global\n */\n pathIsGlobal?: boolean;\n overrideContentType?: CoreModels.ContentType;\n overridResponseType?: ModelsNg2Rest.ResponseTypeAxios;\n}\n\nexport function GET(\n pathOrOptions?: string | TaonHttpDecoratorOptions,\n pathIsGlobal = false,\n) {\n return function (\n target: any,\n propertyKey: string,\n descriptor: PropertyDescriptor,\n ) {\n metaReq(\n 'get',\n pathOrOptions as string,\n target,\n propertyKey,\n descriptor,\n pathOrOptions,\n pathIsGlobal,\n );\n };\n}\n\nexport function HEAD(\n pathOrOptions?: string | TaonHttpDecoratorOptions,\n pathIsGlobal = false,\n) {\n return function (\n target: any,\n propertyKey: string,\n descriptor: PropertyDescriptor,\n ) {\n metaReq(\n 'head',\n pathOrOptions as string,\n target,\n propertyKey,\n descriptor,\n pathOrOptions,\n pathIsGlobal,\n );\n };\n}\n\nexport function POST(\n pathOrOptions?: string | TaonHttpDecoratorOptions,\n pathIsGlobal = false,\n) {\n return function (\n target: any,\n propertyKey: string,\n descriptor: PropertyDescriptor,\n ) {\n metaReq(\n 'post',\n pathOrOptions as string,\n target,\n propertyKey,\n descriptor,\n pathOrOptions,\n pathIsGlobal,\n );\n };\n}\n\nexport function PUT(\n pathOrOptions?: string | TaonHttpDecoratorOptions,\n pathIsGlobal = false,\n) {\n return function (\n target: any,\n propertyKey: string,\n descriptor: PropertyDescriptor,\n ) {\n metaReq(\n 'put',\n pathOrOptions as string,\n target,\n propertyKey,\n descriptor,\n pathOrOptions,\n pathIsGlobal,\n );\n };\n}\n\nexport function PATCH(\n pathOrOptions?: string | TaonHttpDecoratorOptions,\n pathIsGlobal = false,\n) {\n return function (\n target: any,\n propertyKey: string,\n descriptor: PropertyDescriptor,\n ) {\n metaReq(\n 'patch',\n pathOrOptions as string,\n target,\n propertyKey,\n descriptor,\n pathOrOptions,\n pathIsGlobal,\n );\n };\n}\n\nexport function DELETE(\n pathOrOptions?: string | TaonHttpDecoratorOptions,\n pathIsGlobal = false,\n) {\n return function (\n target: any,\n propertyKey: string,\n descriptor: PropertyDescriptor,\n ) {\n metaReq(\n 'delete',\n pathOrOptions as string,\n target,\n propertyKey,\n descriptor,\n pathOrOptions,\n pathIsGlobal,\n );\n };\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/decorators/http/http-methods-decorators.ts","\n\nimport { Models } from '../../models';\nimport { Symbols } from '../../symbols';\n\nfunction metaParam(\n param: Models.Http.Rest.ParamType,\n name: string,\n expire: number,\n defaultValue = undefined,\n target: Function,\n propertyKey: string | symbol,\n parameterIndex: number,\n) {\n let methodConfig: Models.MethodConfig = Reflect.getMetadata(\n Symbols.metadata.options.controllerMethod,\n target.constructor,\n propertyKey,\n );\n if (!methodConfig) {\n methodConfig = new Models.MethodConfig();\n Reflect.defineMetadata(\n Symbols.metadata.options.controllerMethod,\n methodConfig,\n target.constructor,\n propertyKey,\n );\n }\n\n const nameKey = name ? name : param;\n const p = (methodConfig.parameters[nameKey] = !methodConfig.parameters[\n nameKey\n ]\n ? new Models.ParamConfig()\n : methodConfig.parameters[nameKey]);\n p.index = parameterIndex;\n p.paramName = name;\n p.paramType = param;\n p.defaultType = defaultValue;\n p.expireInSeconds = expire;\n Reflect.defineMetadata(\n Symbols.metadata.options.controllerMethod,\n methodConfig,\n target.constructor,\n propertyKey,\n );\n\n}\n\nexport function Path(name: string) {\n return function (\n target: any,\n propertyKey: string | symbol,\n parameterIndex: number,\n ) {\n metaParam('Path', name, undefined, {}, target, propertyKey, parameterIndex);\n };\n}\n\nexport function Query(name?: string) {\n return function (\n target: any,\n propertyKey: string | symbol,\n parameterIndex: number,\n ) {\n metaParam(\n 'Query',\n name,\n undefined,\n {},\n target,\n propertyKey,\n parameterIndex,\n );\n };\n}\n\nexport function Cookie(name: string, expireInSecond: number = 3600) {\n return function (\n target: any,\n propertyKey: string | symbol,\n parameterIndex: number,\n ) {\n metaParam(\n 'Cookie',\n name,\n expireInSecond,\n {},\n target,\n propertyKey,\n parameterIndex,\n );\n };\n}\n\nexport function Header(name?: string) {\n return function (\n target: any,\n propertyKey: string | symbol,\n parameterIndex: number,\n ) {\n metaParam(\n 'Header',\n name,\n undefined,\n {},\n target,\n propertyKey,\n parameterIndex,\n );\n };\n}\n\nexport function Body(name?: string) {\n return function (\n target: any,\n propertyKey: string | symbol,\n parameterIndex: number,\n ) {\n metaParam('Body', name, undefined, {}, target, propertyKey, parameterIndex);\n };\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/decorators/http/http-params-decorators.ts","\n\nimport * as methods from './http-methods-decorators';\nimport * as params from './http-params-decorators';\nimport { Models } from 'ng2-rest/websql';\n\nexport namespace Http {\n export import GET = methods.GET;\n export import POST = methods.POST;\n export import PUT = methods.PUT;\n export import DELETE = methods.DELETE;\n export import PATCH = methods.PATCH;\n export import HEAD = methods.HEAD;\n export import Response = Models.HttpResponse;\n export namespace Param {\n export import Query = params.Query;\n export import Path = params.Path;\n export import Body = params.Body;\n export import Cookie = params.Cookie;\n export import Header = params.Header;\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/decorators/http/http-decorators.ts","\n\nimport { ClassHelpers } from '../../helpers/class-helpers';\nimport { Symbols } from '../../symbols';\nimport { Models } from '../../models';\n\n/**\n * Controller decorator\n */\nexport function TaonController(options?: TaonControllerOptions) {\n return function (constructor: Function) {\n ClassHelpers.setName(constructor, options?.className);\n Reflect.defineMetadata(\n Symbols.metadata.options.controller,\n options,\n constructor,\n );\n Reflect.defineMetadata(\n Symbols.metadata.className,\n options?.className || constructor.name,\n constructor,\n );\n };\n}\n\nexport class TaonControllerOptions extends Models.DecoratorAbstractOpt {\n /**\n * typeorm realtime subscribtion // TODO disabled for now, does not make sense ?s\n */\n realtime?: boolean;\n /**\n * override default path for controller api\n */\n path?: string;\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/decorators/classes/controller-decorator.ts","\n\n\nimport { Helpers, _ } from 'tnp-core/websql';\nimport { EndpointContext } from '../endpoint-context';\nimport { Symbols } from '../symbols';\nimport { ClassHelpers } from '../helpers/class-helpers';\nimport type { BaseRepository } from './base-repository';\nimport { BaseClass } from './base-class';\n\n\nexport class BaseInjector<CloneT extends BaseClass = any> {\n /**\n * for proxy purposes\n */\n getOriginalPrototype: () => any;\n /**\n * for proxy purposes\n */\n getOriginalConstructor: () => any;\n\n\n /**\n * class initialization hook\n * taon after class instace creation\n */\n async _() {\n const reposToInit = this.__repositories_to_init__;\n for (const repo of reposToInit) {\n await repo.__init(this);\n }\n }\n\n\n\n /**\n * @deprecated use ctx instead\n * Current endpoint context\n */\n get __endpoint_context__() {\n return this[Symbols.ctxInClassOrClassObj] as EndpointContext;\n }\n\n /**\n * get current endpoint context\n */\n get ctx() {\n return this.__endpoint_context__;\n }\n\n\n\n\n\n /**\n * inject crud repo for entity\n */\n injectRepo<T>(entityForCrud: new (...args: any[]) => T): BaseRepository<T> {\n const repoProxy = this.__inject(void 0, {\n localInstance: true,\n resolveClassFromContext: 'BaseRepository',\n locaInstanceConstructorArgs: [() => entityForCrud],\n });\n this.__repositories_to_init__.push(repoProxy as any);\n return repoProxy as any;\n }\n\n\n\n injectCustomRepository<T>(\n cutomRepositoryClass: new (...args: any[]) => T,\n ): T {\n const repoProxy = this.__inject<T>(cutomRepositoryClass, {\n localInstance: true,\n locaInstanceConstructorArgs: [\n () => cutomRepositoryClass.prototype.entityClassResolveFn(),\n ],\n });\n this.__repositories_to_init__.push(repoProxy as any);\n return repoProxy;\n }\n\n\n\n /**\n * aliast to .injectRepository()\n */\n injectCustomRepo<T>(cutomRepositoryClass: new (...args: any[]) => T): T {\n const repoProxy = this.injectCustomRepository<T>(cutomRepositoryClass);\n this.__repositories_to_init__.push(repoProxy as any);\n return repoProxy;\n }\n\n\n\n injectController<T>(ctor: new (...args: any[]) => T): T {\n return this.__inject<T>(ctor, { localInstance: false });\n }\n\n\n\n /**\n * aliast to .injectController()\n */\n injectSubscriber<T>(ctor: new (...args: any[]) => T): T {\n return this.__inject<T>(ctor, { localInstance: false });\n }\n\n\n\n /**\n * aliast to .injectController()\n */\n injectCtrl<T>(ctor: new (...args: any[]) => T): T {\n return this.injectController<T>(ctor);\n }\n\n\n\n /**\n * global provider available in every context\n */\n injectGlobalProvider<T>(ctor: new (...args: any[]) => T): T {\n return this.__inject<T>(ctor, { localInstance: false });\n }\n\n\n\n /**\n * context scoped provider\n * TODO\n */\n injectContextProvider<T>(ctor: new (...args: any[]) => T): T {\n return this.__inject<T>(ctor, { localInstance: false });\n }\n\n\n /**\n * Repositories to init (by controller)\n */\n protected __repositories_to_init__ = [] as BaseRepository<any>[];\n\n\n /**\n * Inject: Controllers, Providers, Repositories, Services, etc.\n * TODO addd nest js injecting\n */\n private __inject<T>(\n ctor: new (...args: any[]) => T,\n options?: {\n /**\n * (repositories are ONLY/ALWAYS local instances)\n * If true, then local instance will be created\n * controllers, providers can be local or global\n */\n localInstance: boolean;\n resolveClassFromContext?: string;\n locaInstanceConstructorArgs?: ConstructorParameters<typeof ctor>;\n },\n ): T {\n if (!options) {\n options = {} as any;\n }\n\n const contextClassInstance = this;\n return new Proxy(\n {},\n {\n get: (__, propName) => {\n const contextFromClass: EndpointContext =\n ctor && ctor[Symbols.ctxInClassOrClassObj];\n\n const resultContext: EndpointContext = contextFromClass\n ? contextFromClass\n : this.__endpoint_context__;\n\n if (options.resolveClassFromContext) {\n const resolvedClass = resultContext.getClassFunByClassName(\n options.resolveClassFromContext,\n );\n ctor = resolvedClass as any;\n }\n\n if (resultContext) {\n var instance: T = resultContext.inject(ctor, {\n ...options,\n contextClassInstance,\n });\n if (!instance) {\n throw new Error(\n `Not able to inject \"${\n ClassHelpers.getName(ctor) || ctor.name\n }\" inside ` +\n `property \"${propName?.toString()}\" on class \"${ClassHelpers.getName(\n this,\n )}\".\n\n Please add \"${\n ClassHelpers.getName(ctor) || ctor.name\n }\" to (entites or contorllers or providers or repositories)\n\n `,\n );\n }\n\n const result =\n typeof instance[propName] === 'function'\n ? instance[propName].bind(instance)\n : instance[propName];\n\n\n return result;\n }\n\n\n\n },\n set: (__, propName, value) => {\n const contextFromClass = ctor && ctor[Symbols.ctxInClassOrClassObj];\n const resultContext: EndpointContext = contextFromClass\n ? contextFromClass\n : this.__endpoint_context__;\n\n if (options.resolveClassFromContext) {\n const resolvedClass = resultContext.getClassFunByClassName(\n options.resolveClassFromContext,\n );\n ctor = resolvedClass as any;\n }\n\n if (resultContext) {\n var instance: T = resultContext.inject(ctor, {\n ...options,\n contextClassInstance,\n });\n if (!instance) {\n const classNameNotResolved =\n ClassHelpers.getName(ctor) || ctor.name;\n throw new Error(\n `Not able to inject \"${classNameNotResolved}\" inside ` +\n `property \"${propName?.toString()}\" on class \"${ClassHelpers.getName(\n this,\n )}\".\n\n Please add \"${\n ClassHelpers.getName(ctor) || ctor.name\n }\" to (entites or contorllers or providers or repositories)\n\n `,\n );\n }\n instance[propName] = value;\n }\n return true;\n },\n },\n ) as T;\n }\n\n\n\n\n\n public clone(override: Partial<CloneT>): CloneT {\n const classFn = ClassHelpers.getClassFnFromObject(this);\n const result = _.merge(new classFn(), _.merge(_.cloneDeep(this), override));\n\n return result;\n }\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/base-classes/base-injector.ts","\n\nimport { TaonController } from '../decorators/classes/controller-decorator';\nimport { BaseInjector } from './base-injector';\n\n@TaonController({ className: 'BaseController' })\nexport class BaseController extends BaseInjector {\n /**\n * THIS ONLY WORKS IF NO MIGRATIONS PROVIDED IN CONFIG\n * Purpose: init example data for db.\n */\n initExampleDbData(): Promise<any> {\n return void 0;\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/base-classes/base-controller.ts","\n\n\nimport { Symbols } from '../symbols';\nimport { BaseController } from './base-controller';\nimport { BaseRepository } from './base-repository';\nimport { GET, PUT, DELETE, POST, HEAD, PATCH, } from '../decorators/http/http-methods-decorators';/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n\nimport { Query, Path, Body } from '../decorators/http/http-params-decorators';\nimport { MySqlQuerySource } from 'taon-type-sql/websql';\nimport { Models } from '../models';\nimport { Helpers, _ } from 'tnp-core/websql';\nimport { TaonController, TaonControllerOptions, } from '../decorators/classes/controller-decorator';/* */\n/* */\n/* */\n\nimport { ClassHelpers } from '../helpers/class-helpers';\n\nimport { Validators } from '../validators';\nimport { TaonEntityOptions } from '../decorators/classes/entity-decorator';\n\n\n/**\n * Please override property entityClassFn with entity class.\n */\n@TaonController({ className: 'BaseCrudController' })\nexport abstract class BaseCrudController<Entity> extends BaseController {\n\n protected db: BaseRepository<Entity>;\n\n /**\n * Please provide entity as class propery entityClassFn:\n * @returns class function\n *\n */\n abstract entityClassResolveFn: () => any;\n\n\n\n async _() {\n if (!_.isFunction(this.entityClassResolveFn)) {\n Helpers.warn(\n `Skipping initing CRUD controller ${ClassHelpers.getName(\n this,\n )} because entityClassResolveFn is not provided.`,\n );\n return;\n }\n\n let entityClassFn = this.entityClassResolveFn();\n this.db = this.injectRepo(entityClassFn);\n\n if (entityClassFn) {\n const configEntity = Reflect.getMetadata(\n Symbols.metadata.options.entity,\n ClassHelpers.getClassFnFromObject(this),\n ) as TaonEntityOptions;\n if (configEntity?.createTable === false) {\n Helpers.warn(\n `Table for entity ${ClassHelpers.getName(\n entityClassFn,\n )} will not be created. Crud will not work properly.`,\n );\n }\n } else {\n Helpers.error(`Entity class not provided for controller ${ClassHelpers.getName(\n this,\n )}.\n\n Please provide entity as class propery entityClassFn:\n\n class ${ClassHelpers.getName(this)} extends BaseCrudController<Entity> {\n\n entityClassResolveFn = ()=> MyEntityClass;\n\n }\n\n `);\n }\n await super._();\n }\n\n\n\n @GET(`/:id/property/:property`)\n bufforedChanges(\n @Path(`id`) id: number | string,\n @Path(`property`) property: string,\n @Query('alreadyLength') alreadyLength?: number,\n ): Models.Http.Response<string | any[]> {\n\n return async (request, response) => {\n const model = await this.db.getBy(id);\n if (model === void 0) {\n return;\n }\n Validators.preventUndefinedModel(model, id);\n let value = model[property];\n let result: any;\n if (_.isString(value) || _.isArray(value)) {\n result = (value as string).slice(alreadyLength);\n }\n\n return result;\n };\n\n }\n\n\n\n @GET()\n pagination(\n @Query('pageNumber') pageNumber: number = 1,\n @Query('pageSize') pageSize: number = 10,\n @Query('search') search: string = '',\n ): Models.Http.Response<Entity[]> {\n\n return async (request, response) => {\n if (this.db.repositoryExists) {\n const query = {\n page: pageNumber,\n take: pageSize,\n keyword: search,\n };\n\n\n\n\n const take = query.take || 10;\n const page = query.page || 1;\n const skip = (page - 1) * take;\n const keyword = query.keyword || '';\n\n const [result, total] = await this.db.findAndCount({\n\n\n take: take,\n skip: skip,\n });\n\n response?.setHeader(Symbols.old.X_TOTAL_COUNT, total);\n\n\n\n\n\n\n\n\n\n return result as Entity[];\n }\n return [];\n };\n\n }\n\n\n\n @GET()\n getAll(): Models.Http.Response<Entity[]> {\n\n return async (request, response) => {\n if (this.db.repositoryExists) {\n const { models, totalCount } = await this.db.getAll();\n response?.setHeader(Symbols.old.X_TOTAL_COUNT, totalCount);\n return models;\n }\n return [];\n };\n\n }\n\n\n\n @GET(`/:id`)\n getBy(@Path(`id`) id: number | string): Models.Http.Response<Entity> {\n\n return async () => {\n const model = await this.db.getBy(id);\n return model;\n };\n\n }\n\n\n\n @PUT(`/:id`)\n updateById(\n @Path(`id`) id: number | string,\n @Body() item: Entity,\n ): Models.Http.Response<Entity> {\n\n\n return async () => {\n const model = await this.db.updateById(id, item as any);\n return model;\n };\n\n }\n\n\n\n @PATCH(`/:id`)\n patchById(\n @Path(`id`) id: number | string,\n @Body() item: Entity,\n ): Models.Http.Response<Entity> {\n\n\n return async () => {\n const model = await this.db.updateById(id, item as any);\n return model;\n };\n\n }\n\n\n\n @PUT()\n bulkUpdate(@Body() items: Entity[]): Models.Http.Response<Entity[]> {\n\n return async () => {\n if (!Array.isArray(items) || items?.length === 0) {\n return [];\n }\n const { models } = await this.db.bulkUpdate(items);\n return models;\n };\n\n }\n\n\n\n @DELETE(`/:id`)\n deleteById(@Path(`id`) id: number): Models.Http.Response<Entity> {\n\n return async () => {\n const model = await this.db.deleteById(id);\n return model;\n };\n\n }\n\n\n\n @DELETE(`/bulkDelete/:ids`)\n bulkDelete(\n @Path(`ids`) ids: (number | string)[],\n ): Models.Http.Response<(number | string | Entity)[]> {\n\n return async () => {\n const models = await this.db.bulkDelete(ids);\n return models;\n };\n\n }\n\n\n\n @POST()\n create(@Body() item: Entity): Models.Http.Response<Entity> {\n\n return async () => {\n const model = await this.db.create(item as any);\n return model as Entity;\n };\n\n }\n\n\n\n @POST()\n bulkCreate(@Body() items: Entity): Models.Http.Response<Entity[]> {\n\n return async () => {\n const models = await this.db.bulkCreate(items as any);\n return models as Entity[];\n };\n\n }\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/base-classes/base-crud-controller.ts","\n\n\nimport { Helpers, _ } from 'tnp-core/websql';\nimport { EndpointContext } from '../endpoint-context';\nimport { Symbols } from '../symbols';\nimport { ClassHelpers } from '../helpers/class-helpers';\nimport type { BaseRepository } from './base-repository';\n\nimport { inject } from '@angular/core';\n\n\n\nexport class BaseClass<CloneT extends BaseClass = any> {\n\n /**\n * class initialization hook\n * taon after class instance creation\n */\n async _() {}\n\n\n\n public clone(override: Partial<CloneT>): CloneT {\n const classFn = ClassHelpers.getClassFnFromObject(this);\n const result = _.merge(new classFn(), _.merge(_.cloneDeep(this), override));\n\n return result;\n }\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/base-classes/base-class.ts","\n\n\nimport { Entity } from 'taon-typeorm/websql';\n\nimport { EndpointContext } from '../endpoint-context';\nimport { Symbols } from '../symbols';\nimport { BaseClass } from './base-class';\n\nlet EntityDecorator = () => {\n return (target: any) => {};\n};\n\n\nEntityDecorator = Entity;\n\n\n@EntityDecorator()\nexport abstract class BaseEntity<\n /**\n * type for cloning\n */\n CloneT extends BaseClass = any,\n> extends BaseClass<CloneT> {}\n\n ;({}); // @--end-of-file-for-module=taon lib/base-classes/base-entity.ts","\n\n\nimport * as tsorm from 'taon-typeorm/websql';\n\n\n\nexport namespace Orm {\n\n export const Repository = tsorm.Repository;\n export import Connection = tsorm.Connection;\n export namespace ListenEvent {\n export import AfterInsert = tsorm.AfterInsert;\n export import AfterLoad = tsorm.AfterLoad;\n export import AfterRecover = tsorm.AfterRecover;\n export import AfterRemove = tsorm.AfterRemove;\n export import AfterSoftRemove = tsorm.AfterSoftRemove;\n export import AfterUpdate = tsorm.AfterUpdate;\n export import BeforeInsert = tsorm.BeforeInsert;\n export import BeforeRecover = tsorm.BeforeRecover;\n export import BeforeRemove = tsorm.BeforeRemove;\n export import BeforeSoftRemove = tsorm.BeforeSoftRemove;\n export import BeforeUpdate = tsorm.BeforeUpdate;\n }\n\n export namespace Tree {\n export import Children = tsorm.TreeChildren;\n export import Parent = tsorm.TreeParent;\n }\n export namespace Column {\n export import Generated = tsorm.PrimaryGeneratedColumn;\n export import Primary = tsorm.PrimaryColumn;\n export import Index = tsorm.Index;\n export import CreateDate = tsorm.CreateDateColumn;\n export import UpdateDate = tsorm.UpdateDateColumn;\n export import DeleteDate = tsorm.DeleteDateColumn;\n export import Custom = tsorm.Column;\n\n /**\n * 100 characters varchar\n */\n export const String = () =>\n tsorm.Column({ type: 'varchar', length: 100, nullable: true });\n\n export const Number = () =>\n tsorm.Column({ type: 'int', nullable: true });\n\n export const DecimalNumber = () =>\n tsorm.Column({ type: 'float', nullable: true });\n\n\n export const SimpleJson = () =>\n tsorm.Column({ type: 'simple-json', nullable: true });\n\n export const Boolean = (defaultValue: boolean) =>\n tsorm.Column({ type: 'boolean', default: defaultValue });\n\n\n\n export import Version = tsorm.VersionColumn;\n export import Virtual = tsorm.VirtualColumn;\n }\n\n export namespace Join {\n export import Table = tsorm.JoinTable;\n export import Column = tsorm.JoinColumn;\n }\n export namespace Relation {\n export import OneToMany = tsorm.OneToMany;\n export import OneToOne = tsorm.OneToOne;\n export import ManyToMany = tsorm.ManyToMany;\n export import ManyToOne = tsorm.ManyToOne;\n }\n\n}\n\n\n\n ;({}); // @--end-of-file-for-module=taon lib/orm.ts","\n\n\nimport { Entity } from 'taon-typeorm/websql';\n\nimport { Orm } from '../orm';\nimport { BaseEntity } from './base-entity';\nimport type { BaseClass } from './base-class';\n\n\nlet EntityDecorator = () => {\n return (target: any) => {};\n};\n\n\nEntityDecorator = Entity;\n\n\n@EntityDecorator()\nexport abstract class BaseAbstractEntity<\n CloneT extends BaseClass = any,\n> extends BaseEntity<CloneT> {\n\n @Orm.Column.Generated()\n\n id: string;\n\n\n @Orm.Column.Version()\n\n version: number;\n}\n\nexport type AbstractEntityOmitKeys<ENTITY> = Omit<ENTITY, 'id' | 'version'| '_' | 'clone'>;\n\n ;({}); // @--end-of-file-for-module=taon lib/base-classes/base-abstract-entity.ts","\n\nimport { ClassHelpers } from '../../helpers/class-helpers';\nimport { Symbols } from '../../symbols';\nimport { Models } from '../../models';\nimport { Repository as TypeormRepository, EntityRepository, } from 'taon-typeorm/websql';/* */\n/* */\n/* */\n\nimport { _ } from 'tnp-core/websql';\n\n/**\n * Repository decorator\n */\nexport function TaonRepository(options: TaonRepositoryOptions) {\n return function (constructor: Function) {\n Reflect.defineMetadata(\n Symbols.metadata.options.repository,\n options,\n constructor,\n );\n Reflect.defineMetadata(\n Symbols.metadata.className,\n options?.className || constructor.name,\n constructor,\n );\n ClassHelpers.setName(constructor, options?.className);\n };\n}\n\nexport class TaonRepositoryOptions<\n T = any,\n> extends Models.DecoratorAbstractOpt {}\n\n ;({}); // @--end-of-file-for-module=taon lib/decorators/classes/repository-decorator.ts","\n\n\nimport type {\n DataSource,\n DeepPartial,\n DeleteResult,\n FindManyOptions,\n FindOneOptions,\n FindOptionsWhere,\n InsertResult,\n\n RemoveOptions,\n Repository,\n SaveOptions,\n UpdateResult,\n} from 'taon-typeorm';\n\nimport type { QueryDeepPartialEntity } from 'taon-typeorm/lib/typeorm/query-builder/QueryPartialEntity';\n\nimport type { UpsertOptions } from 'taon-typeorm/lib/typeorm/repository/UpsertOptions';\n\n\n\nimport type { DataSource as DataSourceType } from 'taon-typeorm/websql';\nimport { EndpointContext } from '../endpoint-context';\nimport { Helpers } from 'tnp-core/websql';\nimport { _ } from 'tnp-core/websql';\nimport { ClassHelpers } from '../helpers/class-helpers';\nimport { MySqlQuerySource } from 'taon-type-sql/websql';\nimport { TaonRepository } from '../decorators/classes/repository-decorator';\nimport { BaseInjector } from './base-injector';\n\n\nconst INDEX_KEYS_NO_FOR_UPDATE = ['id'];\n\n@TaonRepository({ className: 'BaseRepository' })\nexport abstract class BaseRepository<\n Entity extends { id?: any },\n> extends BaseInjector {\n\n\n\n\n\n\n abstract entityClassResolveFn: () => any;\n constructor(\n\n private __entityClassResolveFn: () => any,\n ) {\n super();\n // @ts-ignore\n this.entityClassResolveFn = __entityClassResolveFn;\n }\n\n\n\n private __dbQuery: MySqlQuerySource;\n\n public get dbQuery(): MySqlQuerySource {\n\n if (!this.__dbQuery) {\n if (!this.ctx) {\n return; // TODO\n throw new Error(\n `[BaseRepository] Context not inited for class ${ClassHelpers.getName(\n this,\n )}`,\n );\n }\n const connection = this.ctx?.connection;\n if (!connection) {\n throw new Error(\n `[BaseRepository] Database not inited for context ${this.ctx?.contextName}`,\n );\n }\n this.__dbQuery = new MySqlQuerySource(connection);\n }\n return this.__dbQuery;\n\n }\n\n\n\n public get connection(): DataSourceType {\n\n return this.ctx?.connection;\n\n }\n\n\n\n\n private __repository: Repository<Entity>;\n\n protected get repository() {\n\n return this.__repository;\n\n }\n\n /**\n * target for repository\n */\n public get target(): Function {\n\n return this?.repository?.target as any;\n\n }\n\n /**\n * alias to repository\n */\n protected get repo() {\n\n return this.repository;\n\n }\n\n public get repositoryExists(): boolean {\n\n return !!this.__repository;\n\n }\n\n\n\n\n\n async __init(context?: any) {\n\n if (this.__repository) {\n return;\n }\n let entityClassFn: any = this.entityClassResolveFn();\n if (!entityClassFn) {\n Helpers.warn(\n `Entity class not provided for repository ${ClassHelpers.getName(\n this,\n )}`,\n );\n return;\n }\n const ctx: EndpointContext = this.__endpoint_context__;\n if (ctx.remoteHost) {\n return;\n }\n const connection = ctx.connection;\n\n if (!connection) {\n throw new Error(`\n\n Connection not found for context ${ctx.contextName}\n\n\n Maybe you forgot to init database ?\n\n Taon.createContext({\n ...\n database:true\n ...\n })\n\n `);\n }\n\n if (!entityClassFn) {\n Helpers.warn(\n `Entity class not found for repository ${ClassHelpers.getName(this)}`,\n );\n return;\n }\n\n this.__repository = (await connection.getRepository(\n ClassHelpers.getOrginalClass(entityClassFn),\n )) as any;\n\n\n\n\n\n\n }\n\n\n\n /**\n * Checks if entity has an id.\n * If entity composite compose ids, it will check them all.\n */\n hasId(entity: Entity): boolean {\n return this.repo.hasId(entity);\n }\n\n\n\n /**\n * Gets entity mixed id.\n */\n getId(entity: Entity): any {\n return this.repo.getId(entity);\n }\n\n\n\n /**\n Saves a given entity in the database.\n * If entity does not exist in the database then inserts, otherwise updates.\n */\n async save(\n item: Entity,\n options?: SaveOptions & {\n reload: false;\n },\n ): Promise<Entity> {\n\n let model = await this.repo.create(item);\n\n model = await this.repo.save(model, options);\n const { id } = model as any;\n\n model = await this.repo.findOne({\n where: { id } as any,\n });\n\n return model;\n\n }\n\n /**\n * alias to save\n * -> it will actuall create new entity in db\n * in oposite to typeorm create method\n */\n async create(\n item: Entity,\n options?: SaveOptions & {\n reload: false;\n },\n ): Promise<Entity> {\n return this.save(item, options);\n }\n\n async bulkSave(\n items: Entity[],\n options?: SaveOptions & {\n reload: false;\n },\n ): Promise<Entity[]> {\n\n const models = [];\n for (let index = 0; index < items.length; index++) {\n const item = items[index];\n\n const model = await this.save(item, options);\n models.push(model);\n }\n return models;\n\n }\n\n async bulkCreate(\n items: Entity[],\n options?: SaveOptions & {\n reload: false;\n },\n ): Promise<Entity[]> {\n return this.bulkSave(items, options);\n }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n /**\n * Saves all given entities in the database.\n * If entities do not exist in the database then inserts, otherwise updates.\n */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n /**\n * Merges multiple entities (or entity-like objects) into a given entity.\n */\n merge(mergeIntoEntity: Entity, ...entityLikes: Entity[]): Entity {\n return this.repo.merge(mergeIntoEntity, ...entityLikes);\n }\n\n\n\n /**\n * Creates a new entity from the given plain javascript object. If entity already exist in the database, then\n * it loads it (and everything related to it), replaces all values with the new ones from the given object\n * and returns this new entity. This new entity is actually a loaded from the db entity with all properties\n * replaced from the new object.\n *\n * Note that given entity-like object must have an entity id / primary key to find entity by.\n * Returns undefined if entity with given id was not found.\n */\n preload(entityLike: Entity): Promise<Entity | undefined> {\n return this.repo.preload(entityLike);\n }\n\n\n\n\n /**\n * Removes a given entities from the database.\n */\n async remove(idOrEntity: number | string | Entity): Promise<Entity> {\n\n if (_.isObject(idOrEntity)) {\n idOrEntity = (idOrEntity as Entity).id;\n }\n const deletedEntity = await this.repo.findOne({\n where: { id: idOrEntity } as any,\n });\n\n const idCopy = deletedEntity.id;\n await this.repo.remove(deletedEntity);\n\n deletedEntity.id = idCopy;\n return deletedEntity;\n\n }\n\n /**\n * alias to remove\n */\n async delete(idOrEntity: number | string | Entity): Promise<Entity> {\n return this.remove(idOrEntity);\n }\n\n /**\n * alias to removeById\n */\n async deleteById(id: number | string): Promise<Entity> {\n return this.remove(id);\n }\n async bulkRemove(\n idsOrEntities: (number | string | Entity)[],\n ): Promise<Entity[]> {\n\n idsOrEntities = idsOrEntities.map(id => {\n return _.isObject(id) ? (id as Entity).id : id;\n });\n\n const models = [];\n for (let index = 0; index < idsOrEntities.length; index++) {\n const id = idsOrEntities[index];\n const model = await this.remove(id);\n models.push(model);\n }\n return models;\n\n }\n\n async bulkDelete(ids: (number | string | Entity)[]): Promise<Entity[]> {\n return this.bulkRemove(ids);\n }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n /**\n * Records the delete date of all given entities.\n */\n softRemove<T extends Entity>(\n entities: T[],\n options: SaveOptions & {\n reload: false;\n },\n ): Promise<T[]>;\n /**\n * Records the delete date of all given entities.\n */\n softRemove<T extends Entity>(\n entities: T[],\n options?: SaveOptions,\n ): Promise<(T & Entity)[]>;\n /**\n * Records the delete date of a given entity.\n */\n softRemove<T extends Entity>(\n entity: T,\n options: SaveOptions & {\n reload: false;\n },\n ): Promise<T>;\n /**\n * Records the delete date of a given entity.\n */\n softRemove<T extends Entity>(\n entity: T,\n options?: SaveOptions,\n ): Promise<T & Entity> {\n return this.repo.softRemove(entity, options);\n }\n\n\n\n /**\n * Recovers all given entities in the database.\n */\n recover<T extends Entity>(\n entities: T[],\n options: SaveOptions & {\n reload: false;\n },\n ): Promise<T[]>;\n /**\n * Recovers all given entities in the database.\n */\n recover<T extends Entity>(\n entities: T[],\n options?: SaveOptions,\n ): Promise<(T & Entity)[]>;\n /**\n * Recovers a given entity in the database.\n */\n recover<T extends Entity>(\n entity: T,\n options: SaveOptions & {\n reload: false;\n },\n ): Promise<T>;\n /**\n * Recovers a given entity in the database.\n */\n recover<T extends Entity>(\n entity: T,\n options?: SaveOptions,\n ): Promise<T & Entity> {\n return this.repo.recover(entity, options);\n }\n\n\n\n /**\n * Inserts a given entity into the database.\n * Unlike save method executes a primitive operation without cascades, relations and other operations included.\n * Executes fast and efficient INSERT query.\n * Does not check if entity exist in the database, so query will fail if duplicate entity is being inserted.\n */\n insert(\n entity: QueryDeepPartialEntity<Entity> | QueryDeepPartialEntity<Entity>[],\n ): Promise<InsertResult> {\n return this.repo.insert(entity);\n }\n\n\n\n async update(item: Entity) {\n\n const { id } = item as any;\n return await this.updateById(id, item);\n\n }\n\n async updateById(id: number | string, item: Entity) {\n\n const allowedPropsToUpdate = [];\n for (const key in item) {\n if (\n _.isObject(item) &&\n item.hasOwnProperty(key) &&\n typeof item[key] !== 'object' &&\n !_.isUndefined(\n this.repo.metadata.ownColumns.find(c => c.propertyName === key),\n )\n ) {\n allowedPropsToUpdate.push(key);\n }\n }\n\n for (let i = 0; i < allowedPropsToUpdate.length; i++) {\n const key: string = allowedPropsToUpdate[i];\n if (!INDEX_KEYS_NO_FOR_UPDATE.includes(key.toLowerCase())) {\n\n const toSet = item[key];\n\n\n await this.repo.update(\n {\n id,\n } as any,\n {\n [key]: toSet,\n } as any,\n );\n\n\n\n\n\n }\n }\n let model = await this.repo.findOne({\n where: { id } as any,\n });\n\n return model;\n\n }\n async bulkUpdate(items: Entity[]) {\n\n const models = [];\n for (let index = 0; index < items.length; index++) {\n const item = items[index];\n const { id } = item as any; // TOOD\n const model = await this.updateById(id, item);\n models.push(model);\n }\n return { models };\n\n }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n /**\n * Inserts a given entity into the database, unless a unique constraint conflicts then updates the entity\n * Unlike save method executes a primitive operation without cascades, relations and other operations included.\n * Executes fast and efficient INSERT ... ON CONFLICT DO UPDATE/ON DUPLICATE KEY UPDATE query.\n */\n upsert(\n entityOrEntities:\n | QueryDeepPartialEntity<Entity>\n | QueryDeepPartialEntity<Entity>[],\n conflictPathsOrOptions: string[] | UpsertOptions<Entity>,\n ): Promise<InsertResult> {\n return this.repo.upsert(entityOrEntities, conflictPathsOrOptions);\n }\n\n\n\n /**\n * Records the delete date of entities by a given criteria.\n * Unlike save method executes a primitive operation without cascades, relations and other operations included.\n * Executes fast and efficient SOFT-DELETE query.\n * Does not check if entity exist in the database.\n */\n softDelete(\n criteria:\n | string\n | string[]\n | number\n | number[]\n | Date\n | Date[]\n\n\n | FindOptionsWhere<Entity>,\n ): Promise<UpdateResult> {\n return this.repo.softDelete(criteria);\n }\n\n\n\n /**\n * Restores entities by a given criteria.\n * Unlike save method executes a primitive operation without cascades, relations and other operations included.\n * Executes fast and efficient SOFT-DELETE query.\n * Does not check if entity exist in the database.\n */\n restore(\n criteria:\n | string\n | string[]\n | number\n | number[]\n | Date\n | Date[]\n\n\n | FindOptionsWhere<Entity>,\n ): Promise<UpdateResult> {\n return this.repo.restore(criteria);\n }\n\n\n\n /**\n * Counts entities that match given options.\n * Useful for pagination.\n */\n count(options?: FindManyOptions<Entity>): Promise<number> {\n return this.repo.count(options);\n }\n\n\n\n /**\n * Counts entities that match given conditions.\n * Useful for pagination.\n */\n countBy(\n where: FindOptionsWhere<Entity> | FindOptionsWhere<Entity>[],\n ): Promise<number> {\n return this.repo.countBy(where);\n }\n\n\n\n /**\n * Finds entities that match given find options.\n */\n find(options?: FindManyOptions<Entity>): Promise<Entity[]> {\n return this.repo.find(options);\n }\n\n\n\n /**\n * Finds entities that match given find options.\n */\n findBy(\n where: FindOptionsWhere<Entity> | FindOptionsWhere<Entity>[],\n ): Promise<Entity[]> {\n return this.repo.findBy(where);\n }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n //\n /**\n * Finds entities that match given find options.\n * Also counts all entities that match given conditions,\n * but ignores pagination settings (from and take options).\n */\n findAndCount(options?: FindManyOptions<Entity>): Promise<[Entity[], number]> {\n return this.repo.findAndCount(options);\n }\n\n\n\n /**\n * Finds entities that match given WHERE conditions.\n * Also counts all entities that match given conditions,\n * but ignores pagination settings (from and take options).\n */\n findAndCountBy(\n where: FindOptionsWhere<Entity> | FindOptionsWhere<Entity>[],\n ): Promise<[Entity[], number]> {\n return this.repo.findAndCountBy(where);\n }\n\n\n\n /**\n * Finds entities with ids.\n * Optionally find options or conditions can be applied.\n *\n * @deprecated use `findBy` method instead in conjunction with `In` operator, for example:\n *\n * .findBy({\n * id: In([1, 2, 3])\n * })\n */\n findByIds(ids: any[]): Promise<Entity[]> {\n return this.repo.findByIds(ids);\n }\n\n\n\n /**\n * Finds first entity by a given find options.\n * If entity was not found in the database - returns null.\n */\n findOne(options: FindOneOptions<Entity>): Promise<Entity | null> {\n return this.repo.findOne(options);\n }\n\n\n\n /**\n * Finds first entity that matches given where condition.\n * If entity was not found in the database - returns null.\n */\n findOneBy(\n where: FindOptionsWhere<Entity> | FindOptionsWhere<Entity>[],\n ): Promise<Entity | null> {\n return this.repo.findOneBy(where);\n }\n\n\n\n /**\n * Finds first entity that matches given id.\n * If entity was not found in the database - returns null.\n *\n * @deprecated use `findOneBy` method instead in conjunction with `In` operator, for example:\n *\n * .findOneBy({\n * id: 1 // where \"id\" is your primary column name\n * })\n */\n findOneById(\n id: number | string | Date,\n\n ): Promise<Entity | null> {\n return this.repo.findOneById(id);\n }\n\n\n\n /**\n * Finds first entity by a given find options.\n * If entity was not found in the database - rejects with error.\n */\n findOneOrFail(options: FindOneOptions<Entity>): Promise<Entity> {\n return this.repo.findOneOrFail(options);\n }\n\n\n\n /**\n * Finds first entity that matches given where condition.\n * If entity was not found in the database - rejects with error.\n */\n findOneByOrFail(\n where: FindOptionsWhere<Entity> | FindOptionsWhere<Entity>[],\n ): Promise<Entity> {\n return this.repo.findOneByOrFail(where);\n }\n\n\n\n /**\n * Executes a raw SQL query and returns a raw database results.\n * Raw query execution is supported only by relational databases (MongoDB is not supported).\n */\n query(query: string, parameters?: any[]): Promise<any> {\n return this.repo.query(query, parameters);\n }\n\n\n\n /**\n * Clears all the data from the given table/collection (truncates/drops it).\n *\n * Note: this method uses TRUNCATE and may not work as you expect in transactions on some platforms.\n * @see https://stackoverflow.com/a/5972738/925151\n */\n clear(): Promise<void> {\n return this.repo.clear();\n }\n\n\n\n /**\n * Increments some column by provided value of the entities matched given conditions.\n */\n increment(\n conditions: FindOptionsWhere<Entity>,\n propertyPath: string,\n value: number | string,\n ): Promise<UpdateResult> {\n return this.repo.increment(conditions, propertyPath, value);\n }\n\n\n\n /**\n * Decrements some column by provided value of the entities matched given conditions.\n */\n decrement(\n conditions: FindOptionsWhere<Entity>,\n propertyPath: string,\n value: number | string,\n ): Promise<UpdateResult> {\n return this.repo.decrement(conditions, propertyPath, value);\n }\n\n\n\n /**\n * @deprecated use findAndCount instead\n */\n async getAll() {\n\n\n\n\n\n\n const totalCount = await this.repo.count();\n const models = await this.repo.find();\n\n\n return { models, totalCount };\n\n }\n\n\n\n async getBy(id: number | string): Promise<Entity> {\n\n const model = await await this.repo.findOne({\n where: { id } as any,\n });\n\n return model;\n\n }\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/base-classes/base-repository.ts","\n\nimport { BaseInjector } from './base-injector';\n\nexport class BaseProvider extends BaseInjector {}\n\n ;({}); // @--end-of-file-for-module=taon lib/base-classes/base-provider.ts","\n\n\nimport { Stor } from 'taon-storage/websql';\nimport { Helpers, _ } from 'tnp-core/websql';\nimport { Subject, take, takeUntil, tap } from 'rxjs';\nimport type { TaonAdminModeConfigurationComponent } from './taon-admin-mode-configuration.component';\nimport { globalPublicStorage } from '../../storage';\nimport { config } from 'tnp-config/websql';\nimport { Injectable } from '@angular/core';\n\n\nconst ENV = Helpers.isBrowser ? window['ENV'] : global['ENV'];\n\n@Injectable({ providedIn: 'root' })\nexport class TaonAdminService {\n\n private static _instance: TaonAdminService;\n public static get Instance() {\n return this._instance;\n }\n\n\n\n public scrollableEnabled = false; // TOOD false by default\n private onEditMode = new Subject();\n onEditMode$ = this.onEditMode.asObservable();\n\n\n\n @(Stor.property.in.localstorage.for(TaonAdminService).withDefaultValue(false))\n public adminPanelIsOpen: boolean;\n\n\n\n\n @(Stor.property.in.localstorage.for(TaonAdminService).withDefaultValue(false))\n public draggablePopupMode: boolean;\n\n\n\n\n @(Stor.property.in.localstorage.for(TaonAdminService).withDefaultValue(false))\n public draggablePopupModeFullScreen: boolean;\n\n\n\n /**\n * Property used in taon\n */\n @(Stor.property.in.localstorage.for(TaonAdminService).withDefaultValue(false))\n public keepWebsqlDbDataAfterReload: boolean;\n\n\n\n\n\n constructor() {\n TaonAdminService._instance = this;\n this.scrollableEnabled = !!ENV?.useGlobalNgxScrollbar;\n }\n\n\n\n setEditMode(value: boolean) {\n this.onEditMode.next(value);\n }\n\n setKeepWebsqlDbDataAfterReload(value: boolean) {\n\n\n\n this.keepWebsqlDbDataAfterReload = value;\n }\n\n enabledTabs = [];\n\n hide() {\n this.draggablePopupMode = false;\n this.adminPanelIsOpen = false;\n }\n\n show() {\n this.draggablePopupMode = false;\n this.adminPanelIsOpen = true;\n }\n\n logout() {}\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/ui/taon-admin-mode-configuration/taon-admin.service.ts","\n\nexport class DITaonContainer {\n private static instances = new Map();\n\n static resolve<T>(target: Function): T {\n if (DITaonContainer.instances.has(target)) {\n return DITaonContainer.instances.get(target);\n }\n\n\n const injections = []; // tokens.map(token => Container.inject<any>(token));\n\n const instance = new (target as any)(...injections);\n DITaonContainer.instances.set(target, instance);\n return instance;\n }\n\n static inject<T>(target: new (...args: any[]) => T): T {\n return new Proxy(\n {},\n {\n get: (_, propName) => {\n let instance: T =\n DITaonContainer.instances.get(target) ||\n DITaonContainer.resolve(target);\n return typeof instance[propName] === 'function'\n ? instance[propName].bind(instance)\n : instance[propName];\n },\n set: (_, propName, value) => {\n let instance: T =\n DITaonContainer.instances.get(target) ||\n DITaonContainer.resolve(target);\n instance[propName] = value;\n return true;\n },\n },\n ) as T;\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/dependency-injection/di-container.ts","\n\nimport { Models } from './models';\nimport { Response as ExpressResponse, Request as ExpressRequest, } from 'express';/* */\n/* */\n/* */\n\nimport { TaonHelpers } from './helpers/taon-helpers';\nimport { Helpers } from 'tnp-core/websql';\n\nexport const getResponseValue = <T>(\n response: Models.Http.Response<T>,\n options?: { req: ExpressRequest; res: ExpressResponse },\n): Promise<T> => {\n\n const { req, res } = options || {};\n return new Promise<T>(async (resolve, reject) => {\n\n\n if (typeof response === 'function') {\n const asyncResponse: Models.Http.AsyncResponse<T> = response as any;\n try {\n const result = await asyncResponse(req, res);\n resolve(result as any);\n } catch (e) {\n console.error(e);\n console.error('[taon] Error during function call inside controller');\n Helpers.renderError(e);\n reject(e);\n }\n } else {\n reject(`[taon] Not recognized type of response ${response}`);\n }\n\n });\n\n};\n\n ;({}); // @--end-of-file-for-module=taon lib/get-response-value.ts","\n\nimport { Helpers } from 'tnp-core/websql';\n\nconst ENV = Helpers.isBrowser ? window['ENV'] : global['ENV'];\n\nexport { ENV };\n\n ;({}); // @--end-of-file-for-module=taon lib/env.ts","\n\n\n/* */\n/* */\n \nimport { _ } from 'tnp-core/websql';\nimport { Subscriber } from 'rxjs';\nimport { Symbols } from '../symbols';\nimport { Socket as SocketClient } from 'socket.io-client';\nimport { DefaultEventsMap } from 'socket.io/dist/typed-events';\nimport { RealtimeModels } from './realtime.models';\n\n\nexport class RealtimeSubsManager {\n private isListening = false;\n private observers: Subscriber<any>[] = [];\n constructor(private options: RealtimeModels.SubsManagerOpt) {}\n\n\n startListenIfNotStarted(\n realtime: SocketClient<DefaultEventsMap, DefaultEventsMap>,\n ) {\n if (this.options.core.ctx.disabledRealtime) {\n console.warn(`[Taon][startListenIfNotStarted] sockets are disabled`);\n return;\n }\n\n if (!realtime) {\n console.warn(`[Taon][startListenIfNotStarted] invalid socket connection`);\n return;\n }\n\n if (!this.isListening) {\n\n this.isListening = true;\n\n if (this.options.customEvent) {\n const subscribeEvent = Symbols.REALTIME.ROOM_SUBSCRIBE_CUSTOM(\n this.options.core.ctx.contextName,\n );\n\n realtime.emit(subscribeEvent, this.options.roomName);\n } else {\n if (_.isString(this.options.property)) {\n const subscribeEvent =\n Symbols.REALTIME.ROOM_SUBSCRIBE_ENTITY_PROPERTY_UPDATE_EVENTS(\n this.options.core.ctx.contextName,\n );\n\n realtime.emit(subscribeEvent, this.options.roomName);\n } else {\n const subscribeEvent =\n Symbols.REALTIME.ROOM_SUBSCRIBE_ENTITY_UPDATE_EVENTS(\n this.options.core.ctx.contextName,\n );\n\n realtime.emit(subscribeEvent, this.options.roomName);\n }\n }\n\n\n realtime.on(this.options.roomName, data => {\n this.update(data);\n });\n }\n }\n\n\n\n add(observer: Subscriber<any>) {\n\n this.observers.push(observer);\n }\n\n\n\n remove(observer: Subscriber<any>) {\n\n this.observers = this.observers.filter(obs => obs !== observer);\n if (this.observers.length === 0) {\n\n this.isListening = false;\n const { core, customEvent, roomName, property } = this.options;\n\n const realtime = core.socketFE;\n\n if (customEvent) {\n realtime.emit(\n Symbols.REALTIME.ROOM_UNSUBSCRIBE_CUSTOM(\n this.options.core.ctx.contextName,\n ),\n roomName,\n );\n } else {\n if (_.isString(property)) {\n realtime.emit(\n Symbols.REALTIME.ROOM_UNSUBSCRIBE_ENTITY_PROPERTY_UPDATE_EVENTS(\n this.options.core.ctx.contextName,\n ),\n roomName,\n );\n } else {\n realtime.emit(\n Symbols.REALTIME.ROOM_UNSUBSCRIBE_ENTITY_UPDATE_EVENTS(\n this.options.core.ctx.contextName,\n ),\n roomName,\n );\n }\n }\n }\n }\n\n\n\n private update(data: any) {\n\n const ngZone = this.options.core.ctx.ngZone;\n\n\n this.observers.forEach(observer => {\n\n if (!observer.closed) {\n if (ngZone) {\n ngZone.run(() => {\n observer.next(data);\n });\n } else {\n observer.next(data);\n }\n }\n });\n }\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/realtime/realtime-subs-manager.ts","\n\n\nimport { _ } from 'tnp-core/websql';\nimport { RealtimeCore } from './realtime-core';\nimport { Symbols } from '../symbols';\nimport { Observable } from 'rxjs';\nimport { ClassHelpers } from '../helpers/class-helpers';\nimport { RealtimeSubsManager } from './realtime-subs-manager';\nimport { RealtimeModels } from './realtime.models';\nimport type { BaseEntity } from '../base-classes/base-entity';\nimport { Helpers } from 'tnp-core/websql';\n\n\nexport class RealtimeClient {\n private subsManagers: { [path: string]: RealtimeSubsManager } = {};\n constructor(private core: RealtimeCore) {\n this.core = core;\n if (!core.ctx.disabledRealtime) {\n\n this.init();\n\n }\n }\n\n\n private init() {\n\n const nspPath = {\n global: this.core.pathFor(),\n realtime: this.core.pathFor(\n Symbols.REALTIME.NAMESPACE(this.core.ctx.contextName),\n ),\n };\n\n\n this.core.ctx.logRealtime &&\n console.info(\n '[CLIENT] NAMESPACE GLOBAL ',\n nspPath.global.href + ` host: ${this.core.ctx.host}`,\n );\n\n this.core.ctx.logRealtime &&\n console.info(\n '[CLIENT] NAMESPACE REALTIME',\n nspPath.realtime.href + ` host: ${this.core.ctx.host}`,\n );\n\n\n\n this.core.conectSocketFE = this.core.strategy.ioClient(\n nspPath.global.origin,\n {\n path: nspPath.global.pathname,\n },\n );\n\n if (this.core.conectSocketFE.on) {\n this.core.conectSocketFE.on('connect', () => {\n\n\n\n this.core.ctx.logRealtime &&\n console.info(\n `[CLIENT] connected to GLOBAL namespace ${nspPath.global.pathname}` +\n ` of host: ${this.core.ctx.host}`,\n );\n });\n }\n\n\n\n\n this.core.socketFE = this.core.strategy.ioClient(nspPath.realtime.origin, {\n path: nspPath.realtime.pathname,\n });\n\n if (this.core.socketFE.on) {\n this.core.socketFE.on('connect', () => {\n\n\n\n this.core.ctx.logRealtime &&\n console.info(\n `[CLIENT] connected to REALTIME namespace ${nspPath.realtime.pathname}` +\n ` host: ${this.core.ctx.host}`,\n );\n });\n }\n\n\n }\n\n\n\n /**\n * Changes trigger on backend needs to be done manually.. example code:\n *\n * ...\n * Context.Realtime.Server.TrigggerEntityChanges(myEntityInstance);\n * ...\n */\n listenChangesEntity(\n entityClassFn: Function,\n idOrUniqValue: any,\n options: RealtimeModels.ChangeOption,\n ) {\n options = options || ({} as any);\n\n\n const { property, customEvent } = options;\n const className = !customEvent && ClassHelpers.getName(entityClassFn);\n\n if (_.isString(property)) {\n if (property.trim() === '') {\n throw new Error(\n `[Taon][listenChangesEntity.. incorect property '' for ${className}`,\n );\n }\n }\n\n\n return new Observable(observer => {\n\n\n if (this.core.ctx.disabledRealtime) {\n console.error(`[Taon][realtime rxjs] remove taon config flag:\n\n ...\n disabledRealtime: true\n ...\n\nto use socket realtime connection;\n `);\n return () => {\n\n };\n }\n\n let roomName: string;\n\n if (customEvent) {\n roomName = Symbols.REALTIME.ROOM_NAME_CUSTOM(\n this.core.ctx.contextName,\n customEvent,\n );\n } else {\n roomName = _.isString(property)\n ? Symbols.REALTIME.ROOM_NAME_UPDATE_ENTITY_PROPERTY(\n this.core.ctx.contextName,\n className,\n property,\n idOrUniqValue,\n )\n : Symbols.REALTIME.ROOM_NAME_UPDATE_ENTITY(\n this.core.ctx.contextName,\n className,\n idOrUniqValue,\n );\n }\n\n const roomSubOptions: RealtimeModels.SubsManagerOpt = {\n core: this.core,\n property,\n roomName,\n customEvent,\n };\n\n\n const subManagerId = this.getUniqueIdentifierForConnection(roomSubOptions);\n if (!this.subsManagers[subManagerId]) {\n this.subsManagers[subManagerId] = new RealtimeSubsManager(\n roomSubOptions,\n );\n }\n const inst = this.subsManagers[subManagerId];\n inst.add(observer);\n\n inst.startListenIfNotStarted(this.core.socketFE);\n\n return () => {\n inst.remove(observer);\n };\n });\n }\n\n\n\n\n listenChangesEntityTable(entityClassFn: Function) {\n const className = ClassHelpers.getName(entityClassFn);\n return this.listenChangesEntity(entityClassFn, void 0, {\n customEvent: Symbols.REALTIME.TABLE_CHANGE(\n this.core.ctx.contextName,\n className,\n ),\n });\n }\n\n\n\n\n /**\n * Changes trigger on backend needs to be done manually.. example code:\n *\n * ...\n * Context.Realtime.Server.TrigggerEntityChanges(myEntityInstance);\n * // or\n * Context.Realtime.Server.TrigggerEntityPropertyChanges(myEntityInstance,{ property: 'geolocationX' });\n * ...\n */\n listenChangesEntityObj<T extends BaseEntity>(\n entity: T,\n options?: RealtimeModels.ChangeOption,\n ) {\n const classFn = ClassHelpers.getClassFnFromObject(entity);\n const uniqueKey = ClassHelpers.getUniqueKey(classFn);\n return this.listenChangesEntity(classFn, entity[uniqueKey], options);\n }\n\n\n\n listenChangesCustomEvent(customEvent: string) {\n return this.listenChangesEntity(void 0, void 0, {\n customEvent,\n });\n }\n\n\n\n /**\n * Trigger custom event on backend\n * @param customEvent global event name\n * @param dataToPush\n */\n public triggerCustomEvent(customEvent: string, dataToPush?: any) {\n this.core.socketFE.emit(customEvent, dataToPush);\n }\n\n\n\n private getUniqueIdentifierForConnection(options: RealtimeModels.SubsManagerOpt) {\n const url = new URL(options.core.ctx.host);\n return `${this.core.ctx.contextName}:${url.origin}|${options.roomName}|${options.property}|${options.customEvent}`;\n }\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/realtime/realtime-client.ts","\n\n\nimport { Symbols } from '../symbols';\nimport { Helpers, _ } from 'tnp-core/websql';\nimport { RealtimeCore } from './realtime-core';\nimport { ClassHelpers } from '../helpers/class-helpers';\nimport type { BaseEntity } from '../base-classes/base-entity';\nimport { Observable, Subject } from 'rxjs';\n\n\nexport class RealtimeServer {\n\n constructor(private core: RealtimeCore) {\n this.core = core;\n if (!core.ctx.disabledRealtime) {\n\n this.init();\n\n }\n }\n\n\n private init() {\n\n\n if (!this.core.ctx.config.frontendHost) {\n console.warn(`[Taon][Realtime]\n\n Frontend host is not defined\n REALTIME COMMUNICATION WILL NOT WORK\n\n provide \"frontendHost\" property in your taon config\n\n `);\n }\n\n\n const nspPath = {\n global: this.core.pathFor(),\n realtime: this.core.pathFor(\n Symbols.REALTIME.NAMESPACE(this.core.ctx.contextName),\n ),\n };\n\n\n\n\n\n\n this.core.connectSocketBE = this.core.strategy.ioServer(\n Helpers.isWebSQL ? this.core.ctx.uri.origin : this.core.ctx.serverTcpUdp,\n {\n path: nspPath.global.pathname,\n\n cors: {\n origin: this.core.ctx.config.frontendHost,\n methods: this.core.allHttpMethods,\n },\n }, // @ts-ignore\n this.core.ctx,\n );\n\n this.core.ctx.logRealtime &&\n console.info(\n `[backend] CREATE GLOBAL NAMESPACE: '${this.core.connectSocketBE.path()}'` +\n ` , path: '${nspPath.global.pathname}'`,\n );\n\n this.core.connectSocketBE.on('connection', clientSocket => {\n console.info(\n `[backend] client connected to namespace \"${nspPath.global.pathname}\", ` +\n ` host: ${this.core.ctx.host}`,\n );\n });\n\n\n\n\n this.core.socketBE = this.core.strategy.ioServer(\n Helpers.isWebSQL || Helpers.isElectron\n ? this.core.ctx.uri.origin\n : this.core.ctx.serverTcpUdp,\n {\n path: nspPath.realtime.pathname,\n cors: {\n origin: this.core.ctx.config.frontendHost,\n methods: this.core.allHttpMethods,\n },\n }, // @ts-ignore\n this.core.ctx,\n );\n\n this.core.ctx.logRealtime &&\n console.info(\n `[backend] CREATE REALTIME NAMESPACE: '${this.core.socketBE.path()}'` +\n ` , path: '${nspPath.realtime.pathname}' `,\n );\n\n this.core.socketBE.on('connection', backendSocketForClient => {\n console.info(\n `[backend] client connected to namespace \"${nspPath.realtime.pathname}\", ` +\n ` host: ${this.core.ctx.host}`,\n );\n\n backendSocketForClient.on(\n Symbols.REALTIME.ROOM_SUBSCRIBE_CUSTOM(this.core.ctx.contextName),\n roomName => {\n this.core.ctx.logRealtime &&\n console.info(\n `Joining room ${roomName} in namespace REALTIME` +\n ` host: ${this.core.ctx.contextName}/${this.core.ctx.host}`,\n );\n backendSocketForClient.join(roomName);\n },\n );\n\n backendSocketForClient.on(\n Symbols.REALTIME.ROOM_SUBSCRIBE_ENTITY_UPDATE_EVENTS(\n this.core.ctx.contextName,\n ),\n roomName => {\n this.core.ctx.logRealtime &&\n console.info(\n `[backend] Joining room ${roomName} in namespace REALTIME` +\n ` host: ${this.core.ctx.contextName}/${this.core.ctx.host}`,\n );\n backendSocketForClient.join(roomName);\n },\n );\n\n backendSocketForClient.on(\n Symbols.REALTIME.ROOM_SUBSCRIBE_ENTITY_PROPERTY_UPDATE_EVENTS(\n this.core.ctx.contextName,\n ),\n roomName => {\n this.core.ctx.logRealtime &&\n console.info(\n `[backend] Joining room ${roomName} in namespace REALTIME ` +\n ` host: ${this.core.ctx.contextName}/${this.core.ctx.host}`,\n );\n backendSocketForClient.join(roomName);\n },\n );\n\n backendSocketForClient.on(\n Symbols.REALTIME.ROOM_UNSUBSCRIBE_CUSTOM(this.core.ctx.contextName),\n roomName => {\n this.core.ctx.logRealtime &&\n console.info(\n `[backend] Leaving room ${roomName} in namespace REALTIME` +\n ` host: ${this.core.ctx.contextName}/${this.core.ctx.host}`,\n );\n backendSocketForClient.leave(roomName);\n },\n );\n\n backendSocketForClient.on(\n Symbols.REALTIME.ROOM_UNSUBSCRIBE_ENTITY_UPDATE_EVENTS(\n this.core.ctx.contextName,\n ),\n roomName => {\n this.core.ctx.logRealtime &&\n console.info(\n `[backend] Leaving room ${roomName} in namespace REALTIME ` +\n ` host: ${this.core.ctx.contextName}/${this.core.ctx.host}`,\n );\n backendSocketForClient.leave(roomName);\n },\n );\n\n backendSocketForClient.on(\n Symbols.REALTIME.ROOM_UNSUBSCRIBE_ENTITY_PROPERTY_UPDATE_EVENTS(\n this.core.ctx.contextName,\n ),\n roomName => {\n this.core.ctx.logRealtime &&\n console.info(\n `[backend] Leaving room ${roomName} in namespace REALTIME ` +\n ` host: ${this.core.ctx.contextName}/${this.core.ctx.host}`,\n );\n backendSocketForClient.leave(roomName);\n },\n );\n });\n\n\n\n\n }\n\n\n\n\n private triggerChanges(\n entityObjOrClass: Function,\n property?: string,\n valueOfUniqueProperty?: number | string,\n customEvent?: string,\n customEventData?: any,\n ) {\n\n\n\n\n let roomName: string;\n\n if (this.core.ctx.disabledRealtime) {\n return;\n }\n\n if (customEvent) {\n roomName = Symbols.REALTIME.ROOM_NAME_CUSTOM(\n this.core.ctx.contextName,\n customEvent,\n );\n } else {\n let entityFn = entityObjOrClass as Function;\n const entityIsObject =\n !_.isFunction(entityObjOrClass) && _.isObject(entityObjOrClass);\n\n if (entityIsObject) {\n entityFn = ClassHelpers.getClassFnFromObject(entityObjOrClass);\n }\n\n const uniqueKey = ClassHelpers.getUniqueKey(entityFn);\n\n if (entityIsObject) {\n valueOfUniqueProperty = entityObjOrClass[uniqueKey];\n }\n\n if (!valueOfUniqueProperty) {\n Helpers.error(\n `[Taon][Realtime] Entity without iD ! ${ClassHelpers.getName(\n entityFn,\n )} `,\n true,\n true,\n );\n return;\n }\n\n roomName = _.isString(property)\n ? Symbols.REALTIME.ROOM_NAME_UPDATE_ENTITY_PROPERTY(\n this.core.ctx.contextName,\n ClassHelpers.getName(entityFn),\n property,\n valueOfUniqueProperty,\n )\n : Symbols.REALTIME.ROOM_NAME_UPDATE_ENTITY(\n this.core.ctx.contextName,\n ClassHelpers.getName(entityFn),\n valueOfUniqueProperty,\n );\n }\n\n this.core.socketBE.in(roomName).emit(\n roomName, // roomName == eventName in room na\n customEvent ? customEventData : '',\n );\n\n }\n\n\n\n\n\n public triggerEntityChanges(\n entityObjOrClass: Function,\n idToTrigger?: number | string,\n ) {\n if (this.core.ctx.disabledRealtime) {\n const className = ClassHelpers.getName(entityObjOrClass);\n\n console.warn(\n `[Taon][TriggerEntityChanges] Entity \"${className}' is not realtime`,\n );\n return;\n }\n this.triggerChanges(entityObjOrClass as any, void 0, idToTrigger);\n }\n\n\n\n public triggerEntityPropertyChanges<ENTITY extends BaseEntity>(\n entityObjOrClass: new (...args) => ENTITY,\n property: keyof ENTITY | (keyof ENTITY)[],\n idToTrigger?: number | string,\n ) {\n if (this.core.ctx.disabledRealtime) {\n const className = ClassHelpers.getName(entityObjOrClass);\n\n console.warn(\n `[Taon][TriggerEntityPropertyChanges][property=${\n property as string\n }] Entity \"${className}' is not realtime`,\n );\n return;\n }\n\n if (_.isArray(property)) {\n property.forEach(propertyFromArr => {\n this.triggerChanges(\n entityObjOrClass,\n propertyFromArr as any,\n idToTrigger,\n );\n });\n } else {\n this.triggerChanges(entityObjOrClass, property as any, idToTrigger);\n }\n }\n\n\n\n public triggerEntityTableChanges(entityClassOrInstance: Function | object) {\n const className = ClassHelpers.getName(entityClassOrInstance);\n\n if (this.core.ctx.disabledRealtime) {\n console.warn(\n `[Taon][TriggerEntityTableChanges] Entity \"${className}' is not realtime`,\n );\n return;\n }\n\n this.triggerChanges(\n entityClassOrInstance as any,\n void 0,\n void 0,\n Symbols.REALTIME.TABLE_CHANGE(this.core.ctx.contextName, className),\n );\n }\n\n\n\n\n\n\n\n public triggerCustomEvent(customEvent: string, dataToPush: any) {\n this.triggerChanges(void 0, void 0, void 0, customEvent, dataToPush);\n }\n\n\n\n /**\n * Listen to custom events from users\n * @param customEvent global event name\n */\n listenChangesCustomEvent(customEvent: string): Observable<any> {\n\n const sub = new Subject<any>();\n\n this.core.socketBE.on('connection', backendSocketForClient => {\n backendSocketForClient.on(customEvent, (data, ...args) => {\n sub.next(data);\n });\n });\n\n return sub.asObservable();\n\n }\n\n\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/realtime/realtime-server.ts","\n\nimport { EndpointContext } from '../../endpoint-context';\nimport type { Server, ServerOptions } from 'socket.io';\nimport type { io } from 'socket.io-client';\nimport { DefaultEventsMap } from 'socket.io/dist/typed-events';\n\nexport abstract class RealtimeStrategy {\n constructor(protected ctx: EndpointContext) {}\n\n get ioClient(): typeof io {\n throw new Error('Not implemented');\n }\n\n ioServer(\n url: string,\n opt: ServerOptions,\n ): Server<DefaultEventsMap, DefaultEventsMap, DefaultEventsMap, any> {\n throw new Error('Not implemented');\n }\n\n abstract toString(): string;\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/realtime/realtime-strategy/realtime-strategy.ts","\n\n\nimport { Server, ServerOptions } from 'socket.io';\nimport { EndpointContext } from '../../endpoint-context';\nimport { RealtimeStrategy } from './realtime-strategy';\nimport type { io, ManagerOptions, SocketOptions } from 'socket.io-client';\nimport type { ipcRenderer } from 'electron';\nimport { Symbols } from '../../symbols';\n/* */\n/* */\n/* */\n \nimport { RealtimeModels } from '../realtime.models';\n\n\n\nexport class MockServerIpc {\n static serverByContextName = new Map<string, MockServerIpc>();\n\n static from(contextName: string): MockServerIpc {\n if (!MockServerIpc.serverByContextName.has(contextName)) {\n MockServerIpc.serverByContextName.set(\n contextName,\n new MockServerIpc(contextName),\n );\n }\n return MockServerIpc.serverByContextName.get(contextName);\n }\n\n namespacesByName = new Map<string, MockNamespaceIpc>();\n\n\n constructor(public contextName: string) {\n MockServerIpc.serverByContextName.set(contextName, this);\n }\n\n\n\n of(namespace: string): MockNamespaceIpc {\n if (!this.namespacesByName.has(namespace)) {\n this.namespacesByName.set(\n namespace,\n new MockNamespaceIpc(namespace, this),\n );\n }\n return this.namespacesByName.get(namespace);\n }\n\n}\n\n\n\nexport class MockNamespaceIpc {\n\n electronClients = new Set<Electron.WebContents>();\n roomsByRoomName: {\n [roomName: string]: Set<Electron.WebContents>;\n } = {};\n\n private namespaceEventHandlers: {\n [eventName: string]: Set<RealtimeModels.EventHandler>;\n } = {};\n\n\n\n constructor(\n /**\n * Namespace name\n */\n public name: string,\n public server: MockServerIpc,\n ) {}\n\n\n\n on(eventName: string, callback: RealtimeModels.EventHandler) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n\n\n off(event: string, callback?: RealtimeModels.EventHandler) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n\n\n emit(eventName: string, ...args: any[]) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n\n\n to(roomName: string) {\n const electronClientsInroom = this.roomsByRoomName[roomName];\n return new RoomEmitterIpc(electronClientsInroom, this.name, true);\n }\n\n\n\n in(roomName: string) {\n const electronClientsInroom = this.roomsByRoomName[roomName];\n return new RoomEmitterIpc(electronClientsInroom, this.name, false);\n }\n\n\n\n join(webContents: Electron.WebContents, roomName: string) {\n if (!this.roomsByRoomName[roomName]) {\n this.roomsByRoomName[roomName] = new Set();\n }\n this.roomsByRoomName[roomName].add(webContents);\n }\n\n\n\n leave(webContents: Electron.WebContents, roomName: string) {\n if (this.roomsByRoomName[roomName]) {\n this.roomsByRoomName[roomName].delete(webContents);\n if (this.roomsByRoomName[roomName].size === 0) {\n delete this.roomsByRoomName[roomName];\n }\n }\n }\n\n\n\n path() {\n return this.name;\n }\n\n\n\n get nsp() {\n const self = this;\n return {\n get name() {\n return self.name;\n },\n };\n }\n\n}\n\n\n\n\nclass RoomEmitterIpc {\n\n constructor(\n private electronClients: Set<Electron.WebContents>,\n /**\n * namespace name\n */\n private name: string,\n private includeSender: boolean = false,\n private sender: MockSocketIpc = null, // TODO QUICK FIX how to include sender\n ) {}\n\n\n\n emit(eventName: string, ...args: any[]): void {\n const emitEvent = `(${this.name}) \"${eventName}\"`;\n this.electronClients?.forEach(webContents => {\n webContents.send(emitEvent, ...args);\n });\n }\n\n}\n\n\n\nexport class MockSocketIpc {\n\n\n\n ipcRenderer!: typeof ipcRenderer;\n\n\n\n private socketEventHandlers = {} as {\n [eventName: string]: Set<RealtimeModels.EventHandler>;\n };\n\n\n\n get name() {\n return this.namespaceName;\n }\n\n\n\n\n\n /**\n * @param namespaceName instead url for ipc\n */\n constructor(public namespaceName: string) {\n this.ipcRenderer = (window as any).require('electron').ipcRenderer;\n }\n\n\n\n on(eventName: string, callback: (event: any, ...args: any[]) => void) {\n if (!this.socketEventHandlers[eventName]) {\n this.socketEventHandlers[eventName] = new Set();\n }\n this.socketEventHandlers[eventName].add(callback);\n\n const listenToEvent = `(${this.name}) \"${eventName}\"`;\n this.ipcRenderer.on(listenToEvent, (rendereEvent, data) => {\n callback(data);\n });\n\n if (eventName === 'connect') {\n const connectionEventKey = `(${this.name}) \"connection\"`;\n this.ipcRenderer.send(connectionEventKey, this.name);\n }\n }\n\n\n\n off(event: string, callback?: (event: any, ...args: any[]) => void) {\n if (!this.socketEventHandlers[event]) {\n return;\n }\n\n if (callback) {\n this.socketEventHandlers[event].delete(callback);\n } else {\n delete this.socketEventHandlers[event];\n }\n const removeListener = `(${this.name}) \"${event}\"`;\n\n this.ipcRenderer.removeListener(removeListener, data => {\n callback(data);\n });\n }\n\n\n\n emit(event: string, ...args: any[]) {\n const emitEvent = `(${this.name}) \"${event}\"`;\n this.ipcRenderer.send(emitEvent, ...args);\n }\n\n}\n\n\n/**\n * Purpose:\n * - backend-browser communication between 2 processes in electron mode\n */\nexport class RealtimeStrategyIpc extends RealtimeStrategy {\n\n toString(): string {\n return 'ipc';\n }\n\n\n\n constructor(protected ctx: EndpointContext) {\n super(ctx);\n }\n\n\n\n ioServer(__: string, opt: ServerOptions) {\n const namespace = opt?.path || '/';\n const server = MockServerIpc.from(this.ctx.contextName);\n return server.of(namespace) as any;\n }\n\n get ioClient() {\n const clientIo = (\n __: string,\n opt?: Partial<ManagerOptions & SocketOptions>,\n ): MockSocketIpc => {\n const namespace = opt?.path || '/';\n return new MockSocketIpc(namespace);\n };\n return clientIo as any;\n }\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/realtime/realtime-strategy/realtime-strategy-ipc.ts","\n\n\nimport type { EndpointContext } from '../../endpoint-context';\nimport { RealtimeStrategy } from './realtime-strategy';\nimport { Symbols } from '../../symbols';\nimport { ManagerOptions, SocketOptions } from 'socket.io-client';\nimport { RealtimeModels } from '../realtime.models';\nimport { ServerOptions } from 'socket.io';\n\n\n\nclass MockServer {\n static serverByUrl = new Map<string, MockServer>();\n static from(url: string): MockServer {\n if (!MockServer.serverByUrl.has(url)) {\n MockServer.serverByUrl.set(url, new MockServer(url));\n }\n return MockServer.serverByUrl.get(url);\n }\n\n get allServers() {\n return Array.from(MockServer.serverByUrl.values());\n }\n\n namespacesByName = new Map<string, MockNamespace>();\n\n\n constructor(public url: string) {\n MockServer.serverByUrl.set(url, this);\n }\n\n\n\n of(namespace: string): MockNamespace {\n if (!this.namespacesByName.has(namespace)) {\n this.namespacesByName.set(namespace, new MockNamespace(namespace, this));\n }\n return this.namespacesByName.get(namespace);\n }\n\n\n\n path() {\n return this.url;\n }\n\n}\n\n\n\nclass MockNamespace {\n /**\n * All sockets connected to this namespace\n */\n public readonly allSocketsForNamespace = new Set<MockSocket>();\n /**\n * Rooms and their sockets\n */\n private socketByRoomName: {\n [roomName: string]: Set<MockSocket>;\n } = {};\n /**\n * Event handlers for this namespace\n */\n public namespaceEventHandlers: {\n [eventName: string]: Set<RealtimeModels.EventHandler>;\n } = {};\n\n\n constructor(\n /**\n * unique namespace name\n */\n public name: string,\n public server: MockServer,\n ) {}\n\n\n\n on(eventName: string, handler: RealtimeModels.EventHandler): void {\n\n if (!this.namespaceEventHandlers[eventName]) {\n this.namespaceEventHandlers[eventName] =\n new Set<RealtimeModels.EventHandler>();\n }\n\n if (!this.namespaceEventHandlers[eventName].has(handler)) {\n this.namespaceEventHandlers[eventName].add(handler);\n }\n\n\n\n if (eventName === 'connection') {\n setTimeout(() => {\n this.emit('connection', this);\n });\n }\n }\n\n\n\n emit(event: string, ...args: any[]): void {\n this.allSocketsForNamespace?.forEach(socket => {\n socket.emit(event, ...args);\n });\n }\n\n\n\n connect(socket: MockSocket): void {\n this.allSocketsForNamespace.add(socket);\n socket.namespaceInstance = this;\n }\n\n\n\n to(roomName: string): RoomEmitter {\n const socketsInRoom = this.socketByRoomName[roomName];\n return new RoomEmitter(socketsInRoom, true);\n }\n\n\n\n in(roomName: string): RoomEmitter {\n const socketsInRoom = this.socketByRoomName[roomName];\n return new RoomEmitter(socketsInRoom, false);\n }\n\n\n\n joinRoom(roomName: string, socket: MockSocket): void {\n if (!this.socketByRoomName[roomName]) {\n this.socketByRoomName[roomName] = new Set<MockSocket>();\n }\n this.socketByRoomName[roomName].add(socket);\n }\n\n\n\n leaveRoom(roomName: string, socket: MockSocket): void {\n const roomSockets = this.socketByRoomName[roomName];\n if (roomSockets) {\n this.socketByRoomName[roomName].delete(socket);\n }\n }\n\n\n\n get nsp() {\n const self = this;\n return {\n get name() {\n return self.name;\n },\n };\n }\n\n\n path() {\n return this.name;\n }\n}\n\n\n\nclass RoomEmitter {\n\n constructor(\n private sockets: Set<MockSocket>,\n private includeSender: boolean = false,\n private sender: MockSocket = null, // TODO QUICK FIX how to include sender\n ) {}\n\n\n\n emit(event: string, ...args: any[]): void {\n\n\n\n this.sockets?.forEach(socket => {\n\n if (this.includeSender || socket !== this.sender) {\n socket.emit(event, ...args);\n }\n });\n }\n\n}\n\n\n\nclass MockSocket {\n public namespaceInstance: MockNamespace;\n private socketEventHandlers = {} as {\n [eventName: string]: Set<RealtimeModels.EventHandler>;\n };\n get id() {\n return this.nsp.name;\n }\n\n\n constructor(\n public url: string,\n opts?: Partial<ManagerOptions & SocketOptions>,\n ) {\n // @ts-ignore\n const [baseUrl, namespace] = [url, opts.path || '/'];\n\n const namespaceName = namespace || '/';\n\n\n const server = MockServer.from(url);\n\n const ns = server.of(namespaceName);\n ns.connect(this);\n }\n\n\n\n get nsp() {\n const self = this;\n return {\n get name() {\n return self.namespaceInstance?.name;\n },\n };\n }\n\n\n\n path() {\n return this.namespaceInstance?.name;\n }\n\n\n\n on(eventName: string, handler: RealtimeModels.EventHandler): void {\n if (!this.socketEventHandlers[eventName]) {\n this.socketEventHandlers[eventName] =\n new Set<RealtimeModels.EventHandler>();\n }\n this.socketEventHandlers[eventName].add(handler);\n\n\n if (eventName === 'connect') {\n setTimeout(() => {\n this.emit('connect');\n\n });\n }\n }\n\n\n\n emit(eventName: string, ...args: any[]): void {\n eventName = eventName || '';\n\n if (eventName.includes(`:${Symbols.REALTIME.KEYroomSubscribe}`)) {\n const room = args[0];\n this.join(room);\n } else if (eventName.includes(`:${Symbols.REALTIME.KEYroomUnsubscribe}`)) {\n const room = args[0];\n this.leave(room);\n } else {\n\n if (this.namespaceInstance) {\n const namespaceEventHandlers =\n this.namespaceInstance.namespaceEventHandlers[eventName] || [];\n\n\n for (const namespaceEventHandler of namespaceEventHandlers) {\n if (namespaceEventHandler) {\n namespaceEventHandler(...args);\n }\n }\n\n const allSocketsForNamespaceExceptCurrent = Array.from(\n this.namespaceInstance.allSocketsForNamespace.values(),\n ).filter(socket => socket !== this);\n\n\n for (const socket of allSocketsForNamespaceExceptCurrent) {\n const socketEventHandlers = socket.socketEventHandlers[eventName];\n for (const socketEventHandler of socketEventHandlers) {\n if (socketEventHandler) {\n socketEventHandler(...args);\n }\n }\n }\n\n\n const socketEventHandlers = this.socketEventHandlers[eventName] || [];\n for (const clientHandler of socketEventHandlers) {\n if (clientHandler) {\n clientHandler(...args);\n }\n }\n }\n }\n }\n\n\n\n join(roomName: string): void {\n this.namespaceInstance.joinRoom(roomName, this);\n }\n\n\n\n leave(roomName: string): void {\n this.namespaceInstance.leaveRoom(roomName, this);\n }\n\n}\n\n\n/**\n * Purpose:\n * - browser-browser communication mock (in websql mode)\n */\nexport class RealtimeStrategyMock extends RealtimeStrategy {\n\n toString(): string {\n return 'mock';\n }\n\n\n\n constructor(protected ctx: EndpointContext) {\n super(ctx);\n }\n\n\n\n ioServer(url: string, opt: ServerOptions) {\n const server = MockServer.from(url || this.ctx.uri.origin);\n return server.of(opt?.path || '/') as any;\n }\n\n get ioClient() {\n const clientIo = (\n uri: string,\n opts?: Partial<ManagerOptions & SocketOptions>,\n ): MockSocket => {\n return new MockSocket(uri || this.ctx.uri.origin, opts as any);\n };\n return clientIo as any;\n }\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/realtime/realtime-strategy/realtime-strategy-mock.ts","\n\nimport { DefaultEventsMap } from 'socket.io/dist/typed-events';\nimport { EndpointContext } from '../../endpoint-context';\nimport { RealtimeStrategy } from './realtime-strategy';\n/* */\n/* */\n \nimport { io, ManagerOptions, Socket, SocketOptions } from 'socket.io-client';\n\n/**\n * Purpose:\n * - backend-browser communication\n * - backend-backend communication\n */\nexport class RealtimeStrategySocketIO extends RealtimeStrategy {\n toString(): string {\n return 'socket-io';\n }\n constructor(protected ctx: EndpointContext) {\n super(ctx);\n }\n\n ioServer(...args) {\n/* */\n/* */\n return (void 0);\n }\n\n get ioClient() {\n return io;\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/realtime/realtime-strategy/realtime-strategy-socket-io.ts","\n\nexport * from './realtime-strategy';\nexport * from './realtime-strategy-ipc';\nexport * from './realtime-strategy-mock';\nexport * from './realtime-strategy-socket-io';\n\n ;({}); // @--end-of-file-for-module=taon lib/realtime/realtime-strategy/index.ts","\n\n\nimport { Socket as SocketClient } from 'socket.io-client';\nimport type { EndpointContext } from '../endpoint-context';\nimport { RealtimeClient } from './realtime-client';\nimport { RealtimeServer } from './realtime-server';\nimport type { RealtimeStrategy } from './realtime-strategy';\nimport { RealtimeStrategyIpc, RealtimeStrategyMock, RealtimeStrategySocketIO, } from './realtime-strategy';/* */\n/* */\n/* */\n/* */\n\nimport { DefaultEventsMap } from 'socket.io/dist/typed-events';\nimport { Server } from 'socket.io';\nimport { Helpers } from 'tnp-core/websql';\n\n\n/**\n * Realtime class\n * - mock (when browser-browser)\n * - sockets (from socket io when backend-browser)\n * - ipc (when electron is used or between processes)\n * - webworker (when webworker is used in browser or nodejs)\n */\nexport class RealtimeCore {\n\n readonly allHttpMethods = [\n 'GET',\n 'POST',\n 'PUT',\n 'DELETE',\n 'PATCH',\n 'OPTIONS',\n 'HEAD',\n ];\n public readonly client: RealtimeClient;\n public readonly server: RealtimeServer;\n public readonly strategy: RealtimeStrategy;\n\n /**\n * global FE socket - only for established connection\n */\n public conectSocketFE: SocketClient<DefaultEventsMap, DefaultEventsMap>;\n /**\n * socket for namespaces and rooms\n */\n public socketFE: SocketClient<DefaultEventsMap, DefaultEventsMap>;\n /**\n * global BE socket - only for established connection\n */\n public connectSocketBE: Server<\n DefaultEventsMap,\n DefaultEventsMap,\n DefaultEventsMap,\n any\n >;\n /**\n * socket for namespaces and rooms\n */\n public socketBE: Server<\n DefaultEventsMap,\n DefaultEventsMap,\n DefaultEventsMap,\n any\n >;\n\n\n\n constructor(public ctx: EndpointContext) {\n this.ctx = ctx;\n this.strategy = this.resolveStrategy();\n\n this.ctx.logRealtime &&\n console.log(`[taon] realtime strategy: ${this.strategy}`);\n if (Helpers.isWebSQL) {\n this.server = new RealtimeServer(this);\n\n this.client = new RealtimeClient(this);\n\n } else {\n this.client = new RealtimeClient(this);\n this.server = new RealtimeServer(this);\n }\n }\n\n\n\n private resolveStrategy(): RealtimeStrategy {\n if (\n this.ctx.mode === 'backend-frontend(websql)' ||\n this.ctx.mode === 'backend-frontend(websql-electron)'\n ) {\n\n return new RealtimeStrategyMock(this.ctx);\n }\n if (this.ctx.mode === 'backend-frontend(ipc-electron)') {\n return new RealtimeStrategyIpc(this.ctx);\n }\n\n\n\n\n\n\n return new RealtimeStrategySocketIO(this.ctx);\n }\n\n\n\n public pathFor(namespace?: string) {\n const uri = this.ctx.uri;\n\n let nsp = namespace ? namespace : '';\n nsp = nsp === '/' ? '' : nsp;\n const pathname = uri.pathname !== '/' ? uri.pathname : '';\n let prefix = `taonContext`;\n if (Helpers.isElectron) {\n prefix = ``;\n }\n const href = `${uri.origin}${pathname}/${prefix}${prefix && nsp ? '-' + nsp : nsp}`;\n\n return new URL(href) as URL;\n }\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/realtime/realtime-core.ts","\n\n\nimport { Helpers, UtilsMigrations, _ } from 'tnp-core/websql';\nimport { BaseMigration } from './base-classes/base-migration';\nimport type { EndpointContext } from './endpoint-context';\nimport { Models } from './models';\nimport { ClassHelpers } from './helpers/class-helpers';\nimport { Column, DataSource, Entity, EntitySchema, Index, PrimaryGeneratedColumn, QueryRunner, Table, TableColumn, TableIndex, } from 'taon-typeorm/websql';/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n\n\n\n\nexport type MigrationStatus = 'completed' | 'pending';\n\nexport class ContextDbMigrations {\n\n\n\n readonly DEFAULT_MIGRATION_TABLE_NAME = 'TAON_MIGRATION_META';\n\n\n\n readonly MIGRATION_STATUS_COMPLETED: MigrationStatus = 'completed';\n readonly MIGRATION_STATUS_PENDING: MigrationStatus = 'pending';\n\n\n\n readonly table = new Table({\n name: this.DEFAULT_MIGRATION_TABLE_NAME,\n columns: [\n {\n name: 'id',\n type: 'integer',\n isPrimary: true, // Mark it as the primary key\n isGenerated: true, // Enable auto-generation\n generationStrategy: 'increment', // Use auto-increment strategy\n },\n {\n name: 'name',\n type: 'varchar',\n length: '255',\n isUnique: true, // Ensure the name is unique\n isNullable: false, // Ensure this field is required\n },\n {\n\n name: 'context',\n type: 'varchar',\n length: '255',\n isNullable: false, // Optional context for migrations (e.g., tenant or module name)\n },\n {\n name: 'applied_at',\n type: 'timestamp',\n default: 'CURRENT_TIMESTAMP', // Automatically set the timestamp\n isNullable: true,\n },\n {\n name: 'status',\n type: 'varchar',\n length: '50',\n default: `'${this.MIGRATION_STATUS_COMPLETED}'`,\n isNullable: false,\n },\n\n\n\n\n\n\n ],\n });\n\n\n\n\n\n constructor(private ctx: EndpointContext) {}\n\n\n\n async ensureMigrationTableExists() {\n\n if (this.ctx.remoteHost) {\n return;\n }\n const queryRunner = this.ctx.connection.createQueryRunner();\n await queryRunner.connect();\n await queryRunner.startTransaction();\n\n\n const hasTable = await queryRunner.hasTable(\n this.DEFAULT_MIGRATION_TABLE_NAME,\n );\n if (hasTable) {\n this.ctx.logMigrations &&\n console.log(\n `Table ${this.DEFAULT_MIGRATION_TABLE_NAME} already exists.`,\n );\n await queryRunner.release();\n return; // Exit early if the table exists\n }\n\n try {\n await queryRunner.createTable(this.table);\n await queryRunner.createIndex(\n this.DEFAULT_MIGRATION_TABLE_NAME,\n new TableIndex({\n name: 'IDX_NAME',\n columnNames: ['name'],\n }),\n );\n\n await queryRunner.commitTransaction();\n } catch (error) {\n this.ctx.logMigrations &&\n console.error(\n `Transaction failed [ensureMigrationTableExists]` + `, rolling back:`,\n error,\n );\n await queryRunner.rollbackTransaction();\n } finally {\n await queryRunner.release();\n }\n\n\n }\n\n\n\n async revertMigrationToTimestamp(timestamp: number) {\n\n if (this.ctx.remoteHost) {\n return;\n }\n if (!UtilsMigrations.isValidTimestamp(timestamp)) {\n Helpers.throw(\n `Invalid timestamp provided for migration revert: ${timestamp}`,\n );\n }\n\n\n const migrationsClassFns: Function[] = this.ctx\n .getClassFunByArr(Models.ClassType.MIGRATION)\n .reverse();\n\n\n const migrationClassesInstancesToRevert: BaseMigration[] =\n migrationsClassFns\n .map(classFn => {\n const timestampFromClassName = Number(\n UtilsMigrations.getTimestampFromClassName(\n ClassHelpers.getName(classFn),\n ),\n );\n\n if (timestampFromClassName <= timestamp) {\n\n\n\n\n\n return null;\n }\n\n return this.ctx.getInstanceBy(classFn as any) as any;\n })\n .filter(f => !!f)\n .map(f => f as BaseMigration)\n .filter(migrationInstance => migrationInstance.isReadyToRun());\n\n const queryRunner = this.ctx.connection.createQueryRunner();\n await queryRunner.connect();\n\n try {\n await queryRunner.startTransaction();\n\n\n const appliedMigrationsForContext = await queryRunner.query(\n `SELECT name FROM ${this.DEFAULT_MIGRATION_TABLE_NAME}\n WHERE status = $1 AND context = $2`,\n [this.MIGRATION_STATUS_COMPLETED, this.ctx.contextName],\n );\n\n const appliedMigrationsForContextNames = appliedMigrationsForContext.map(\n m => m.name,\n );\n\n\n for (const migrationClassInstance of migrationClassesInstancesToRevert) {\n const migrationName = ClassHelpers.getName(migrationClassInstance);\n\n if (!appliedMigrationsForContextNames.includes(migrationName)) {\n this.ctx.logMigrations &&\n console.warn(\n `Skipping migration not marked as applied: ${migrationName}`,\n );\n continue;\n }\n\n this.ctx.logMigrations &&\n console.log(\n `Reverting migration: ${migrationName} , context: ${this.ctx.contextName}`,\n );\n await migrationClassInstance.down(queryRunner);\n\n\n await queryRunner.query(\n `DELETE FROM ${this.DEFAULT_MIGRATION_TABLE_NAME} WHERE name = $1`,\n [migrationName],\n );\n }\n\n await queryRunner.commitTransaction();\n this.ctx.logMigrations &&\n console.log(\n 'Migrations successfully reverted to the specified timestamp.',\n );\n } catch (error) {\n this.ctx.logMigrations &&\n console.error('Transaction failed, rolling back:', error);\n await queryRunner.rollbackTransaction();\n } finally {\n await queryRunner.release();\n }\n\n }\n\n\n\n async clearMigrationTable() {\n\n if (this.ctx.remoteHost) {\n return;\n }\n const queryRunner = this.ctx.connection.createQueryRunner();\n await queryRunner.connect();\n await queryRunner.startTransaction();\n\n try {\n await queryRunner.clearTable(this.DEFAULT_MIGRATION_TABLE_NAME);\n await queryRunner.commitTransaction();\n } catch (error) {\n this.ctx.logMigrations &&\n console.error('Transaction failed, rolling back:', error);\n await queryRunner.rollbackTransaction();\n } finally {\n await queryRunner.release();\n }\n\n }\n\n\n\n async markAllMigrationsAsApplied() {\n\n if (this.ctx.remoteHost) {\n return;\n }\n const migrationsClassFns: Function[] = this.ctx.getClassFunByArr(\n Models.ClassType.MIGRATION,\n );\n\n const migrationClassesInstances: BaseMigration[] = migrationsClassFns\n .map(classFn => this.ctx.getInstanceBy(classFn as any))\n .map(f => f as BaseMigration)\n .filter(migrationInstance => migrationInstance.isReadyToRun());\n\n const queryRunner = this.ctx.connection.createQueryRunner();\n await queryRunner.connect();\n\n try {\n await queryRunner.startTransaction();\n\n\n const allMigrationsInDb = await queryRunner.query(\n `SELECT name FROM ${this.DEFAULT_MIGRATION_TABLE_NAME}`,\n );\n\n const allMigrationInDBNames = allMigrationsInDb.map(m => m.name);\n\n for (const instance of migrationClassesInstances) {\n const migrationName = ClassHelpers.getName(instance);\n\n if (allMigrationInDBNames.includes(migrationName)) {\n this.ctx.logMigrations &&\n console.log(`Skipping already applied migration: ${migrationName}`);\n continue;\n }\n\n this.ctx.logMigrations &&\n console.log(`Marking migration as applied: ${migrationName}`);\n\n\n await queryRunner.query(\n `INSERT INTO ${this.DEFAULT_MIGRATION_TABLE_NAME} (name, status, context, applied_at) ` +\n `VALUES ($1, $2, $3, CURRENT_TIMESTAMP)`,\n [\n migrationName,\n this.MIGRATION_STATUS_COMPLETED,\n instance.ctx.contextName,\n ],\n );\n }\n\n\n await queryRunner.query(\n `UPDATE ${this.DEFAULT_MIGRATION_TABLE_NAME}\n SET status = $1, applied_at = CURRENT_TIMESTAMP\n WHERE status = $2`,\n [this.MIGRATION_STATUS_COMPLETED, this.MIGRATION_STATUS_PENDING],\n );\n\n await queryRunner.commitTransaction();\n this.ctx.logMigrations &&\n console.log('All migrations marked as applied.');\n } catch (error) {\n this.ctx.logMigrations &&\n console.error(\n 'Failed to mark all migrations as applied, rolling back:',\n error,\n );\n await queryRunner.rollbackTransaction();\n } finally {\n await queryRunner.release();\n }\n\n }\n\n\n\n async runAllNotCompletedMigrations() {\n\n if (this.ctx.remoteHost) {\n return;\n }\n const migrationsClassFns: Function[] = this.ctx.getClassFunByArr(\n Models.ClassType.MIGRATION,\n );\n\n const migrationClassesInstances: BaseMigration[] = migrationsClassFns\n .map(classFn => this.ctx.getInstanceBy(classFn as any))\n .map(f => f as BaseMigration)\n .filter(migrationInstance => migrationInstance.isReadyToRun());\n\n const queryRunner = this.ctx.connection.createQueryRunner();\n await queryRunner.connect();\n\n try {\n await queryRunner.startTransaction();\n\n\n\n\n\n const appliedMigrationsForContext = await queryRunner.query(\n `SELECT name, status FROM ${this.DEFAULT_MIGRATION_TABLE_NAME} ` +\n `WHERE context = $1`,\n [this.ctx.contextName],\n );\n\n\n const pendingMigrationsForContext = appliedMigrationsForContext.filter(\n m => m.status === this.MIGRATION_STATUS_PENDING,\n );\n\n\n for (const pendingContextMigration of pendingMigrationsForContext) {\n const migrationInstance = migrationClassesInstances.find(\n instance =>\n ClassHelpers.getName(instance) === pendingContextMigration.name,\n );\n\n if (!migrationInstance) {\n this.ctx.logMigrations &&\n console.warn(\n `Pending migration ${pendingContextMigration.name} not found in loaded migrations.`,\n );\n continue;\n }\n\n this.ctx.logMigrations &&\n console.log(\n `Completing pending migration: ${pendingContextMigration.name}`,\n );\n await migrationInstance.up(queryRunner);\n\n\n await queryRunner.query(\n `UPDATE ${this.DEFAULT_MIGRATION_TABLE_NAME}\n SET status = $1, applied_at = CURRENT_TIMESTAMP\n WHERE name = $2`,\n [this.MIGRATION_STATUS_COMPLETED, pendingContextMigration.name],\n );\n }\n\n\n\n for (const instance of migrationClassesInstances) {\n const migrationName = ClassHelpers.getName(instance);\n\n if (appliedMigrationsForContext.some(m => m.name === migrationName)) {\n this.ctx.logMigrations &&\n console.log(`Skipping already applied migration: ${migrationName}`);\n continue;\n }\n\n this.ctx.logMigrations &&\n console.log(`Applying new migration: ${migrationName}`);\n\n await queryRunner.query(\n `INSERT INTO ${this.DEFAULT_MIGRATION_TABLE_NAME} (name, status, context, applied_at) ` +\n `VALUES ($1, $2, $3, NULL)`,\n [migrationName, this.MIGRATION_STATUS_PENDING, this.ctx.contextName],\n );\n\n try {\n\n await instance.up(queryRunner);\n\n\n await queryRunner.query(\n `UPDATE ${this.DEFAULT_MIGRATION_TABLE_NAME} ` +\n `SET status = '${this.MIGRATION_STATUS_COMPLETED}', applied_at = CURRENT_TIMESTAMP ` +\n `WHERE name = $1`,\n [migrationName],\n );\n } catch (error) {\n this.ctx.logMigrations &&\n console.error(`Failed to apply migration: ${migrationName}`, error);\n\n\n await queryRunner.query(\n `DELETE FROM ${this.DEFAULT_MIGRATION_TABLE_NAME} WHERE name = $1`,\n [migrationName],\n );\n\n throw error; // Rethrow to ensure the transaction is rolled back\n }\n }\n\n\n\n await queryRunner.commitTransaction();\n } catch (error) {\n this.ctx.logMigrations &&\n console.error('Transaction failed, rolling back:', error);\n await queryRunner.rollbackTransaction();\n } finally {\n await queryRunner.release();\n }\n\n }\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/context-db-migrations.ts","\n\n/* eslint-disable @typescript-eslint/typedef */\n\n\nimport { EventSubscriber } from 'taon-typeorm/websql';\nimport type {\n TransactionRollbackEvent,\n TransactionCommitEvent,\n TransactionStartEvent,\n RecoverEvent,\n SoftRemoveEvent,\n RemoveEvent,\n UpdateEvent,\n InsertEvent,\n} from 'taon-typeorm';\nimport { Entity as TypeormEntity, Tree } from 'taon-typeorm/websql';\n\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n\nimport { TaonAdminService } from './ui/taon-admin-mode-configuration/taon-admin.service';\n\nimport { UtilsOs } from 'tnp-core/websql';\nimport { Models } from './models';\nimport { ClassHelpers } from './helpers/class-helpers';\nimport { Symbols } from './symbols';\nimport { _, Helpers } from 'tnp-core/websql';\nimport type { createContext } from './create-context';\nimport { DITaonContainer } from './dependency-injection/di-container';\nimport { TaonControllerOptions } from './decorators/classes/controller-decorator';\nimport { TaonHelpers } from './helpers/taon-helpers';\nimport { Mapping, Models as ModelsNg2Rest, Resource, RestHeaders, } from 'ng2-rest/websql';/* */\n/* */\n/* */\n/* */\n/* */\n\nimport { JSON10 } from 'json10/websql';\nimport { path } from 'tnp-core/websql';\nimport { from, Subject } from 'rxjs';\nimport { EntityProcess } from './entity-process';\nimport { getResponseValue } from './get-response-value';\nimport type { Application } from 'express';\nimport axios from 'axios';\nimport type { NgZone } from '@angular/core';\n\nimport { DataSource, DataSourceOptions, getMetadataArgsStorage, } from 'taon-typeorm/websql';/* */\n/* */\n/* */\n/* */\n\nimport { TaonEntityOptions } from './decorators/classes/entity-decorator';\nimport type { Server } from 'http';\nimport { ENV } from './env';\nimport type { BaseClass } from './base-classes/base-class';\nimport { RealtimeCore } from './realtime/realtime-core';\nimport { TaonSubscriberOptions } from './decorators/classes/subscriber-decorator';\nimport { BaseSubscriberForEntity } from './base-classes/base-subscriber-for-entity';\nimport type { BaseMigration } from './base-classes/base-migration';\nimport { ContextDbMigrations } from './context-db-migrations';\n\n\nexport class EndpointContext {\n\n\n\n private static ngZone: NgZone;\n\n static initNgZone(ngZone: NgZone) {\n\n this.ngZone = ngZone;\n\n }\n\n\n\n\n\n\n\n\n\n\n\n\n disabledRealtime: boolean = false;\n /**\n * check whether context is inited\n * (with init() function )\n */\n public inited: boolean = false;\n\n\n readonly dbMigrations = new ContextDbMigrations(this);\n\n private readonly localInstaceObjSymbol = Symbol('localInstaceObjSymbol');\n\n\n /**\n * all instances of classes from context\n * key is class name\n */\n public readonly allClassesInstances = {};\n\n\n\n private readonly classInstancesByNameObj = {};\n\n\n\n private readonly objWithClassesInstancesArr = {};\n\n\n\n public readonly activeRoutes: {\n routePath: string;\n method: Models.Http.Rest.HttpMethod;\n }[] = [];\n\n\n\n private injectableTypesfromContexts = [\n Models.ClassType.CONTROLLER,\n Models.ClassType.PROVIDER,\n Models.ClassType.REPOSITORY,\n Models.ClassType.SUBSCRIBER,\n Models.ClassType.MIGRATION,\n ];\n\n\n private allTypesfromContexts = [\n ...this.injectableTypesfromContexts,\n Models.ClassType.ENTITY,\n ];\n\n\n\n\n public expressApp: Application = {} as any;\n\n\n\n public serverTcpUdp: Server;\n\n\n\n databaseConfig?: Models.DatabaseConfigTypeOrm;\n\n\n\n mode: Models.FrameworkMode;\n\n\n\n readonly onlyMigrationRun?: boolean = false;\n readonly onlyMigrationRevertToTimestamp?: number = undefined;\n\n get isRunOrRevertOnlyMigrationAppStart(): boolean {\n return !!(this.onlyMigrationRun || this.onlyMigrationRevertToTimestamp);\n }\n\n\n\n session?: Models.ISession;\n\n\n\n public connection: DataSource;\n\n\n\n private entitiesTriggers = {};\n\n\n\n private realtime: RealtimeCore;\n get realtimeClient() {\n return this.realtime.client;\n }\n get realtimeServer() {\n return this.realtime.server;\n }\n\n\n\n /**\n * available after init()\n */\n public config: Models.ContextOptions<any, any, any, any, any, any, any>;\n\n\n\n get logHttp(): boolean {\n if (_.isObject(this.config?.logs)) {\n return !!(this.config.logs as Models.ConnectionOptionsLogs).http;\n }\n return this.config?.logs === true;\n }\n\n get logRealtime(): boolean {\n if (_.isObject(this.config?.logs)) {\n return !!(this.config.logs as Models.ConnectionOptionsLogs).realtime;\n }\n return this.config?.logs === true;\n }\n\n get logFramework(): boolean {\n if (_.isObject(this.config?.logs)) {\n return !!(this.config.logs as Models.ConnectionOptionsLogs).framework;\n }\n return this.config?.logs === true;\n }\n\n get logDb(): boolean {\n if (_.isObject(this.config?.logs)) {\n return !!(this.config.logs as Models.ConnectionOptionsLogs).db;\n }\n return this.config?.logs === true;\n }\n\n get logMigrations(): boolean {\n if (_.isObject(this.config?.logs)) {\n return !!(this.config.logs as Models.ConnectionOptionsLogs).migrations;\n }\n return this.config?.logs === true;\n }\n\n\n\n\n\n constructor(\n private originalConfig: Models.ContextOptions<\n any,\n any,\n any,\n any,\n any,\n any,\n any\n >,\n private configFn: (\n env: any,\n ) => Models.ContextOptions<any, any, any, any, any, any, any>,\n ) {}\n\n\n\n public async init(options?: {\n initFromRecrusiveContextResovle?: boolean;\n overrideHost?: string | null;\n overrideRemoteHost?: string | null;\n onlyMigrationRun?: boolean;\n onlyMigrationRevertToTimestamp?: number;\n }) {\n const {\n initFromRecrusiveContextResovle,\n overrideHost,\n overrideRemoteHost,\n onlyMigrationRun,\n onlyMigrationRevertToTimestamp,\n } = options || {}; // TODO use it ?\n\n this.inited = true;\n // @ts-ignore\n this.onlyMigrationRun = onlyMigrationRun;\n // @ts-ignore\n this.onlyMigrationRevertToTimestamp = onlyMigrationRevertToTimestamp;\n this.config = this.configFn(ENV);\n if (_.isObject(this.config.database)) {\n this.config.database = Models.DatabaseConfig.from(\n this.config.database as Models.DatabaseConfig,\n ).databaseConfigTypeORM;\n }\n if (overrideHost && overrideRemoteHost) {\n Helpers.throw(\n `[taon-config] You can't have overrideHost and overrideRemoteHost at the same time`,\n );\n }\n\n this.config.host = !_.isUndefined(overrideHost)\n ? overrideHost\n : this.config.host;\n this.config.remoteHost = !_.isUndefined(overrideRemoteHost)\n ? overrideRemoteHost\n : this.config.remoteHost;\n\n this.config.host = this.host === null ? void 0 : this.host;\n this.config.remoteHost =\n this.remoteHost === null ? void 0 : this.remoteHost;\n\n if (\n this.config.host &&\n !this.config.host.startsWith('http://') &&\n !this.config.host.startsWith('https://')\n ) {\n Helpers.throw(\n `[taon-config] Your 'host' must start with http:// or https://`,\n );\n }\n\n if (\n this.config.remoteHost &&\n !this.config.remoteHost.startsWith('http://') &&\n !this.config.remoteHost.startsWith('https://')\n ) {\n Helpers.throw(\n `[taon-config] Your 'remoteHost' must start with http:// or https://`,\n );\n }\n\n\n if (this.config.host) {\n this.mode = 'backend-frontend(tcp+udp)';\n\n this.mode = 'backend-frontend(websql)';\n\n }\n\n if (this.config.remoteHost) {\n if (this.config.host) {\n Helpers.throw(\n `[taon] You can't have remoteHost and host at the same time`,\n );\n }\n this.mode = 'remote-backend(tcp+udp)';\n }\n\n if (this.config.useIpcWhenElectron && Helpers.isElectron) {\n if (Helpers.isWebSQL) {\n this.mode = 'backend-frontend(websql-electron)';\n } else {\n this.mode = 'backend-frontend(ipc-electron)';\n }\n }\n\n if (!this.mode && !this.config.abstract) {\n Helpers.error(\n `[taon] Context \"${this.contextName}\": You need to provide host or remoteHost or useIpcWhenElectron`,\n false,\n true,\n );\n/* */\n/* */\n \n }\n\n\n\n if (this.config.database === true) {\n this.databaseConfig = this.getAutoGeneratedConfig();\n } else if (_.isObject(this.config.database)) {\n this.databaseConfig = _.merge(\n this.getAutoGeneratedConfig(),\n _.cloneDeep(this.config.database),\n ) as Models.DatabaseConfigTypeOrm;\n }\n\n\n\n if (this.config.session) {\n this.session = _.cloneDeep(this.config.session);\n const oneHour = 1000 * 60 * 60 * 1; // 24;\n if (!this.session.cookieMaxAge) {\n this.session.cookieMaxAge = oneHour;\n }\n\n axios.defaults.withCredentials = true;\n }\n\n\n\n this.config.contexts = this.config.contexts || {};\n this.config.entities = this.config.entities || {};\n this.config.controllers = this.config.controllers || {};\n this.config.repositories = this.config.repositories || {};\n this.config.providers = this.config.providers || {};\n this.config.subscribers = this.config.subscribers || {};\n this.config.migrations = this.config.migrations || {};\n\n this.config.entities = {\n ...(await this.getRecrusiveClassesfromContextsObj(\n Models.ClassType.ENTITY,\n )),\n ...this.config.entities,\n };\n\n this.config.controllers = {\n ...(await this.getRecrusiveClassesfromContextsObj(\n Models.ClassType.CONTROLLER,\n )),\n ...this.config.controllers,\n };\n\n this.config.providers = {\n ...(await this.getRecrusiveClassesfromContextsObj(\n Models.ClassType.PROVIDER,\n )),\n ...this.config.providers,\n };\n\n this.config.subscribers = {\n ...(await this.getRecrusiveClassesfromContextsObj(\n Models.ClassType.SUBSCRIBER,\n )),\n ...this.config.subscribers,\n };\n\n this.config.repositories = {\n ...(await this.getRecrusiveClassesfromContextsObj(\n Models.ClassType.REPOSITORY,\n )),\n ...this.config.repositories,\n };\n\n this.config.migrations = {\n ...(await this.getRecrusiveClassesfromContextsObj(\n Models.ClassType.MIGRATION,\n )),\n ...this.config.migrations,\n };\n\n\n\n\n\n\n this.config.controllers = this.cloneClassesObjWithNewMetadata({\n classesInput: this.config.controllers,\n config: this.config,\n ctx: this,\n classType: Models.ClassType.CONTROLLER,\n });\n this.config.repositories = this.cloneClassesObjWithNewMetadata({\n classesInput: this.config.repositories,\n config: this.config,\n ctx: this,\n classType: Models.ClassType.REPOSITORY,\n });\n this.config.providers = this.cloneClassesObjWithNewMetadata({\n classesInput: this.config.providers,\n config: this.config,\n ctx: this,\n classType: Models.ClassType.PROVIDER,\n });\n this.config.subscribers = this.cloneClassesObjWithNewMetadata({\n classesInput: this.config.subscribers,\n config: this.config,\n ctx: this,\n classType: Models.ClassType.SUBSCRIBER,\n });\n\n this.config.migrations = this.cloneClassesObjWithNewMetadata({\n classesInput: this.config.migrations,\n config: this.config,\n ctx: this,\n classType: Models.ClassType.MIGRATION,\n });\n\n\n\n for (const classTypeName of this.injectableTypesfromContexts) {\n this.classInstancesByNameObj[classTypeName] = {};\n this.objWithClassesInstancesArr[classTypeName] = [];\n }\n\n for (const classTypeName of this.injectableTypesfromContexts) {\n await this.createInstances(\n this.config[Models.ClassTypeKey[classTypeName]],\n classTypeName,\n );\n }\n\n\n if (!this.isRunOrRevertOnlyMigrationAppStart) {\n\n if (this.mode === 'backend-frontend(tcp+udp)' && !this.config.abstract) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n\n\n\n if (!this.config.abstract) {\n this.disabledRealtime = !!this.config.disabledRealtime;\n/* */\n/* */\n/* */\n/* */\n/* */\n \n this.realtime = new RealtimeCore(this);\n }\n\n }\n\n\n\n if (this.config.abstract) {\n this.logFramework &&\n Helpers.info(\n `[taon] Create abstract context: ${this.config.contextName}`,\n );\n } else {\n if (this.config.remoteHost) {\n this.logFramework &&\n Helpers.info(\n `[taon] Create context for remote host: ${this.config.remoteHost}`,\n );\n } else {\n this.logFramework &&\n Helpers.info(`[taon] Create context for host: ${this.config.host}`);\n }\n }\n\n\n\n Object.keys(this.config).forEach(key => {\n this.originalConfig[key] = this.config[key];\n });\n }\n\n\n\n private getAutoGeneratedConfig(): Models.DatabaseConfigTypeOrm {\n\n let databaseConfig: Models.DatabaseConfig = Models.DatabaseConfig.from({});\n if (UtilsOs.isRunningInDocker()) {\n Helpers.info('Running in docker, using in mysql database');\n\n databaseConfig = Models.DatabaseConfig.from({\n database: `db-${this.contextName}.sqlite`,\n type: 'mysql',\n recreateMode: 'PRESERVE_DATA+MIGRATIONS',\n logging: this.logDb,\n databasePort: 3306,\n databaseHost: 'localhost',\n databaseUsername: 'root',\n databasePassword: 'admin',\n });\n } else {\n this.logFramework &&\n Helpers.info(\n `[taon][database] Automatically resolving database config for mode ${this.mode}`,\n );\n switch (this.mode) {\n\n case 'backend-frontend(ipc-electron)':\n databaseConfig = Models.DatabaseConfig.from({\n location: `db-${this.contextName}.sqlite`,\n type: 'sqljs',\n recreateMode: 'DROP_DB+MIGRATIONS',\n logging: this.logDb,\n });\n break;\n\n\n\n case 'backend-frontend(websql-electron)':\n case 'backend-frontend(websql)':\n let keepWebsqlDbDataAfterReload = false;\n\n keepWebsqlDbDataAfterReload =\n TaonAdminService.Instance?.keepWebsqlDbDataAfterReload; // TODO @LAST\n\n\n databaseConfig = databaseConfig = Models.DatabaseConfig.from({\n location: `db-${this.contextName}.sqlite`,\n type: 'sqljs',\n useLocalForage: true, // !!window['localforage'], // TODO this need to be checked in runtime\n recreateMode: keepWebsqlDbDataAfterReload\n ? 'PRESERVE_DATA+MIGRATIONS'\n : 'DROP_DB+MIGRATIONS',\n logging: this.logDb,\n });\n break;\n\n\n\n case 'backend-frontend(tcp+udp)':\n databaseConfig = Models.DatabaseConfig.from({\n database: `context-db-${this.contextName}`,\n location: `db-${this.contextName}.sqlite`,\n type: 'sqljs',\n recreateMode: 'DROP_DB+MIGRATIONS',\n logging: this.logDb,\n });\n break;\n\n }\n }\n return databaseConfig.databaseConfigTypeORM;\n\n }\n\n\n\n get ngZone(): any {\n\n return EndpointContext.ngZone;\n\n return;\n }\n\n\n\n startServer() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n\n\n displayRoutes(app) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n\n\n\n get modeAllowsDatabaseCreation() {\n return (\n this.mode === 'backend-frontend(tcp+udp)' ||\n this.mode === 'backend-frontend(websql)' ||\n this.mode === 'backend-frontend(ipc-electron)'\n );\n }\n\n\n\n\n private cloneClassWithNewMetadata = <\n T extends { new (...args: any[]): any },\n >({\n BaseClass,\n className,\n config,\n ctx,\n classType,\n }: {\n BaseClass: T;\n className: string;\n config: Models.ContextOptions<any, any, any, any, any, any, any>;\n ctx: EndpointContext;\n classType: Models.ClassType;\n }): T => {\n\n const cloneClass = () => {\n if (\n BaseClass[Symbols.fullClassNameStaticProperty] ===\n `${ctx.contextName}.${className}`\n ) {\n return BaseClass;\n }\n return class extends BaseClass {\n\n\n // @ts-ignore\n static [Symbols.orignalClass] = BaseClass;\n\n // @ts-ignore\n static [Symbols.fullClassNameStaticProperty] = `${ctx.contextName}.${className}`;\n\n // @ts-ignore\n static [Symbols.classNameStaticProperty] = className;\n\n static [Symbols.ctxInClassOrClassObj] = ctx;\n\n static __getFullPathForClass__(arr = []) {\n const name = this[Symbols.fullClassNameStaticProperty];\n arr.push(name);\n // @ts-ignore\n if (\n this[Symbols.orignalClass] && // @ts-ignore\n this[Symbols.orignalClass].__getFullPathForClass__\n ) {\n // @ts-ignore\n this[Symbols.orignalClass].__getFullPathForClass__(arr);\n }\n return arr.join('/');\n }\n static get fullPathForClass(): string {\n return this.__getFullPathForClass__();\n }\n [Symbols.ctxInClassOrClassObj] = ctx;\n\n\n };\n };\n\n const cloneClassFunction = cloneClass();\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n return cloneClassFunction;\n };\n\n\n\n\n\n private cloneClassesObjWithNewMetadata = ({\n classesInput,\n config,\n ctx,\n classType,\n }: {\n classesInput: any;\n config: Models.ContextOptions<any, any, any, any, any, any, any>;\n ctx: EndpointContext;\n classType: Models.ClassType;\n }) => {\n const classes = {};\n\n for (const key of Object.keys(classesInput || {})) {\n const BaseClass = classesInput[key];\n\n if (!BaseClass) {\n Helpers.error(`Class ${key} is not defined in context ${ctx.contextName}\n\n Please check if you have correct import in context file\n\n `);\n }\n\n var className = Reflect.getMetadata(\n Symbols.metadata.className,\n BaseClass,\n );\n\n\n\n\n\n className = className || key;\n BaseClass[Symbols.classNameStaticProperty] = className;\n\n const clonedClass = this.cloneClassWithNewMetadata({\n BaseClass,\n className,\n config,\n ctx,\n classType,\n });\n classes[className] = clonedClass;\n }\n return classes;\n };\n\n\n\n private async getRecrusiveClassesfromContextsObj(\n classType: Models.ClassType,\n ) {\n const arr = await this.getRecrusiveClassesfromContexts(classType);\n return arr.reduce((acc, c) => {\n acc[ClassHelpers.getName(c)] = c;\n return acc;\n }, {});\n }\n\n private async getRecrusiveClassesfromContexts(\n classType: Models.ClassType,\n arr = [],\n ) {\n const contexts = Object.values(this.config.contexts || {}) as ReturnType<\n typeof createContext\n >[];\n\n\n\n for (const ctx of contexts) {\n\n const ref = await ctx.__ref();\n\n const classesInput = ref.getClassFunBy(classType);\n\n\n const clonedClasses = Object.values(\n this.cloneClassesObjWithNewMetadata({\n classesInput,\n config: this.config,\n ctx: this,\n classType,\n }),\n );\n\n clonedClasses.forEach(c => arr.push(c));\n\n await ref.getRecrusiveClassesfromContexts(classType, arr);\n }\n return arr as Function[];\n }\n\n\n\n getClassInstanceObjBy(classType: Models.ClassType): any {\n return this.classInstancesByNameObj[classType];\n }\n\n\n\n private getClassesInstancesArrBy(classType: Models.ClassType): any[] {\n return this.objWithClassesInstancesArr[classType];\n }\n\n\n\n inject<T>(\n ctor: new (...args: any[]) => T,\n options?: {\n localInstance?: boolean;\n contextClassInstance?: BaseClass;\n locaInstanceConstructorArgs?: ConstructorParameters<typeof ctor>;\n },\n ): T {\n if (!options) {\n options = {} as any;\n }\n const className = ClassHelpers.getName(ctor);\n\n const locaInstanceConstructorArgs =\n options.locaInstanceConstructorArgs || [];\n\n if (this.isCLassType(Models.ClassType.REPOSITORY, ctor)) {\n options.localInstance = true;\n }\n\n if (options?.localInstance) {\n const ctxClassFn = this.getClassFunByClassName(className);\n let entityName: string = '';\n\n if (className === 'BaseRepository') {\n const entityFn = locaInstanceConstructorArgs[0];\n const entity = entityFn && entityFn();\n entityName = entity && ClassHelpers.getName(entity);\n }\n\n if (!options.contextClassInstance[this.localInstaceObjSymbol]) {\n options.contextClassInstance[this.localInstaceObjSymbol] = {};\n }\n const instanceKey = className + (entityName ? `.${entityName}` : '');\n const existed =\n options.contextClassInstance[this.localInstaceObjSymbol][instanceKey];\n if (existed) {\n\n return existed;\n }\n\n if (!ctxClassFn) {\n throw new Error(`Not able to inject \"${className}\" inside context \"${this.contextName}\"\n\n Make sure they share the same context or import context where \"${className}\" is defined.\n\n `);\n }\n\n const injectedInstance = new (ctxClassFn as any)(\n ...locaInstanceConstructorArgs,\n );\n options.contextClassInstance[this.localInstaceObjSymbol][instanceKey] =\n injectedInstance;\n\n return injectedInstance;\n }\n\n const contextScopeInstance = this.allClassesInstances[className];\n\n\n\n return contextScopeInstance;\n }\n\n /**\n * alias for inject\n */\n getInstanceBy<T>(ctor: new (...args: any[]) => T): T {\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n return this.inject(ctor, { localInstance: false });\n }\n\n\n\n checkIfContextInitialized() {\n if (_.isUndefined(this.config)) {\n throw new Error(`Please check if your context has been initialized.\n\n\n await Context.initialize();\n\n\n\n `);\n }\n }\n\n\n\n getClassFunBy(classType: Models.ClassType) {\n this.checkIfContextInitialized();\n switch (classType) {\n case Models.ClassType.CONTROLLER:\n return this.config.controllers;\n case Models.ClassType.ENTITY:\n return this.config.entities;\n case Models.ClassType.PROVIDER:\n return this.config.providers;\n case Models.ClassType.REPOSITORY:\n return this.config.repositories;\n case Models.ClassType.SUBSCRIBER:\n return this.config.subscribers;\n case Models.ClassType.MIGRATION:\n return this.config.migrations;\n }\n }\n\n isCLassType(classType: Models.ClassType, classFn: Function): boolean {\n return !!this.getClassFunBy(classType)[ClassHelpers.getName(classFn)];\n }\n\n /**\n * Only for injectable types\n * Only for classType: CONTROLLER, REPOSITORY, PROVIDER\n */\n getClassFunByClassName(className: string): Function {\n for (const classTypeName of this.allTypesfromContexts) {\n const classesForInjectableType =\n this.config[Models.ClassTypeKey[classTypeName]];\n\n if (classesForInjectableType[className]) {\n return classesForInjectableType[className];\n }\n }\n }\n\n getClassFunByClass(classFunction: Function): Function {\n const className = ClassHelpers.getName(classFunction);\n return this.getClassFunByClassName(className);\n }\n\n getClassFunByArr(classType: Models.ClassType) {\n return Object.values(this.getClassFunBy(classType) || {}) as Function[];\n }\n\n\n\n private async createInstances(classes: any, classType: Models.ClassType) {\n\n\n\n\n\n for (const classFn of [\n\n ...Object.values(classes),\n ]) {\n const instance = DITaonContainer.resolve(classFn as any) as any;\n const classInstancesByNameObj = this.classInstancesByNameObj[classType];\n const className = ClassHelpers.getName(classFn);\n\n classInstancesByNameObj[className] = instance;\n\n this.config[Models.ClassTypeKey[classType]][className] = classFn;\n this.objWithClassesInstancesArr[classType].push(instance);\n this.allClassesInstances[className] = instance;\n }\n }\n\n\n\n async reinitControllers() {\n if (this.remoteHost || Object.keys(this.config.migrations).length > 0) {\n return;\n }\n\n\n\n const controllers = this.getClassesInstancesArrBy(\n Models.ClassType.CONTROLLER,\n );\n\n for (const ctrl of controllers) {\n if (_.isFunction(ctrl.initExampleDbData)) {\n await Helpers.runSyncOrAsync({\n functionFn: ctrl.initExampleDbData,\n context: ctrl,\n });\n }\n }\n\n\n\n }\n async initClasses() {\n if (this.remoteHost) {\n return;\n }\n for (const classTypeName of [\n Models.ClassType.PROVIDER,\n Models.ClassType.REPOSITORY,\n Models.ClassType.CONTROLLER,\n Models.ClassType.ENTITY,\n Models.ClassType.MIGRATION,\n ]) {\n\n\n\n\n for (const classFun of this.getClassFunByArr(classTypeName) as any[]) {\n if (_.isFunction(classFun._)) {\n await Helpers.runSyncOrAsync({\n functionFn: classFun._,\n context: classFun,\n });\n\n\n\n\n\n\n }\n }\n\n\n\n\n }\n\n for (const classTypeName of [\n Models.ClassType.PROVIDER,\n Models.ClassType.REPOSITORY,\n Models.ClassType.CONTROLLER,\n Models.ClassType.MIGRATION,\n ]) {\n\n\n\n\n for (const ctrl of this.getClassesInstancesArrBy(classTypeName)) {\n if (_.isFunction(ctrl._)) {\n await Helpers.runSyncOrAsync({\n functionFn: ctrl._,\n context: ctrl,\n });\n }\n }\n\n\n\n\n }\n }\n\n\n\n isActiveOn(classInstance: object): boolean {\n let contextRef: EndpointContext =\n classInstance[Symbols.ctxInClassOrClassObj];\n return this === contextRef;\n }\n\n\n\n get uri() {\n const url = this.host\n ? new URL(this.host)\n : this.remoteHost\n ? new URL(this.remoteHost)\n : void 0;\n return url;\n }\n\n\n\n get isHttpServer() {\n return this.uri.protocol === 'https:';\n }\n\n\n\n /**\n * ipc/udp needs this\n */\n public get contextName() {\n return this.config.contextName;\n }\n\n\n\n public get publicAssets() {\n return this.config?.publicAssets || [];\n }\n\n\n\n get isProductionMode() {\n return this.config.productionMode;\n }\n\n\n\n get remoteHost() {\n return this.config.remoteHost;\n }\n\n\n\n get host() {\n return this.config.host;\n }\n\n\n\n get orgin() {\n return this.uri?.origin;\n }\n\n\n\n async initSubscribers() {\n\n if (this.remoteHost) {\n return;\n }\n const subscriberClasses = this.getClassFunByArr(\n Models.ClassType.SUBSCRIBER,\n );\n for (const subscriberClassFn of subscriberClasses) {\n const options = Reflect.getMetadata(\n Symbols.metadata.options.subscriber,\n subscriberClassFn,\n ) as TaonSubscriberOptions;\n\n\n EventSubscriber()(subscriberClassFn);\n }\n\n }\n\n\n\n async initEntities() {\n\n if (this.remoteHost) {\n return;\n }\n const entities = this.getClassFunByArr(Models.ClassType.ENTITY);\n for (const entity of entities) {\n const options = Reflect.getMetadata(\n Symbols.metadata.options.entity,\n entity,\n ) as TaonEntityOptions;\n const createTable = _.isUndefined(options.createTable)\n ? true\n : options.createTable;\n const nameForEntity = ClassHelpers.getName(entity);\n\n if (_.isUndefined(options.createTable) ? true : options.createTable) {\n this.logDb &&\n console.info(\n `[taon][typeorm] create table for entity \"${nameForEntity}\" ? '${createTable}'`,\n );\n\n TypeormEntity(nameForEntity)(entity);\n } else {\n this.logDb &&\n console.info(\n `[taon][typeorm] create table for entity \"${nameForEntity}\" ? '${createTable}'`,\n );\n }\n }\n\n }\n\n\n\n\n async initDatabaseConnection() {\n\n if (this.remoteHost) {\n return;\n }\n const entities = this.getClassFunByArr(Models.ClassType.ENTITY).map(\n entityFn => {\n return ClassHelpers.getOrginalClass(entityFn);\n },\n );\n\n const subscribers = this.getClassFunByArr(Models.ClassType.SUBSCRIBER);\n\n const dataSourceDbConfig = _.isObject(this.databaseConfig)\n ? ({\n type: this.databaseConfig.type,\n port: this.databaseConfig.databasePort,\n host: this.databaseConfig.databaseHost,\n database: this.databaseConfig.database as any,\n username: this.databaseConfig.databaseUsername,\n password: this.databaseConfig.databasePassword,\n useLocalForage: this.databaseConfig.useLocalForage,\n\n entities,\n subscribers,\n synchronize: this.isRunOrRevertOnlyMigrationAppStart\n ? false\n : this.databaseConfig.synchronize,\n autoSave: !_.isNil(this.databaseConfig.autoSave)\n ? this.databaseConfig.autoSave\n : !UtilsOs.isRunningInDocker(), // in docker I am using mysql or posgress\n dropSchema: this.isRunOrRevertOnlyMigrationAppStart\n ? false\n : this.databaseConfig.dropSchema,\n logging: !!this.databaseConfig.logging,\n location: this.databaseConfig.location,\n } as DataSourceOptions)\n : ({} as DataSourceOptions);\n\n\n this.logFramework &&\n console.log(\n `[Context: \"${this.contextName}\"] dataSourceDbConfig`,\n dataSourceDbConfig,\n );\n\n if (this.modeAllowsDatabaseCreation && this.databaseConfig) {\n this.logDb &&\n this.logFramework &&\n Helpers.info('[taon][database] prepare typeorm connection...');\n try {\n const connection = new DataSource(dataSourceDbConfig);\n this.connection = connection;\n await this.connection.initialize();\n } catch (error) {\n console.error(error?.message || error);\n }\n\n if (!this.connection?.isInitialized) {\n console.log('WRONG CONFIG', dataSourceDbConfig);\n throw new Error(`Something wrong with connection init in ${this.mode}`);\n/* */\n/* */\n \n }\n\n if (this.logDb || this.logFramework) {\n console.info(\n `\n\n CONTECTION OK for ${this.contextName} - ${this.mode}\n\n [taon][typeorm] db prepration done.. db initialize=${this.connection?.isInitialized}\n\n\n `,\n dataSourceDbConfig,\n { 'this.connection': !!this.connection },\n );\n console.log(\n `Database file location: ${this.connection.options.database}`,\n );\n }\n\n\n\n\n\n\n\n\n\n\n } else {\n Helpers.info(`[taon][typeorm] Not initing db for mode ${this.mode}`);\n }\n\n }\n\n\n\n\n initControllers() {\n if (this.isRunOrRevertOnlyMigrationAppStart) {\n return;\n }\n const allControllers = this.getClassFunByArr(Models.ClassType.CONTROLLER);\n\n for (const controllerClassFn of allControllers) {\n controllerClassFn[Symbols.classMethodsNames] =\n ClassHelpers.getMethodsNames(controllerClassFn);\n const configs = ClassHelpers.getControllerConfigs(controllerClassFn);\n\n const classConfig: Models.RuntimeControllerConfig = configs[0];\n\n const parentscalculatedPath = _.slice(configs, 1)\n .reverse()\n .map(bc => {\n if (TaonHelpers.isGoodPath(bc.path)) {\n return bc.path;\n }\n return bc.className;\n })\n .join('/');\n\n if (TaonHelpers.isGoodPath(classConfig.path)) {\n classConfig.calculatedPath = classConfig.path;\n } else {\n classConfig.calculatedPath =\n `${parentscalculatedPath}/${ClassHelpers.getName(controllerClassFn)}`\n .replace(/\\/\\//g, '/')\n .split('/')\n .reduce((acc, bc) => {\n return _.last(acc) === bc ? acc : [...acc, bc];\n }, [])\n .join('/');\n }\n\n _.slice(configs, 1).forEach(bc => {\n const alreadyIs = classConfig.methods;\n const toMerge = _.cloneDeep(bc.methods);\n for (const key in toMerge) {\n if (toMerge.hasOwnProperty(key) && !alreadyIs[key]) {\n const element = toMerge[key];\n alreadyIs[key] = element;\n }\n }\n });\n\n/* */\n/* */\n \n this.logHttp &&\n console.groupCollapsed(\n `[taon][express-server] routes [${classConfig.className}]`,\n );\n/* */\n/* */\n \n\n\n Object.keys(classConfig.methods).forEach(methodName => {\n const methodConfig: Models.MethodConfig =\n classConfig.methods[methodName];\n\n const type: Models.Http.Rest.HttpMethod = methodConfig.type;\n const expressPath = methodConfig.global\n ? `/${methodConfig.path?.replace(/\\//, '')}`\n : TaonHelpers.getExpressPath(classConfig, methodConfig);\n\n\n if (Helpers.isNode || Helpers.isWebSQL) {\n\n\n const { routePath, method } = this.initServer(\n type,\n methodConfig,\n classConfig,\n expressPath,\n controllerClassFn,\n );\n\n this.activeRoutes.push({\n routePath,\n method,\n });\n\n }\n\n const shouldInitClient =\n Helpers.isBrowser || this.remoteHost || Helpers.isWebSQL;\n\n if (shouldInitClient) {\n\n\n\n\n\n\n\n this.initClient(controllerClassFn, type, methodConfig, expressPath);\n }\n });\n\n/* */\n/* */\n \n this.logHttp && console.groupEnd();\n/* */\n/* */\n \n }\n }\n\n\n\n public writeActiveRoutes() {\n if (this.remoteHost || this.isRunOrRevertOnlyMigrationAppStart) {\n return;\n }\n const contexts: EndpointContext[] = [this];\n\n\n const troutes = this.activeRoutes.map(({ method, routePath }) => {\n return (\n TaonHelpers.fillUpTo(method.toUpperCase() + ':', 10) +\n this.uri.href.replace(/\\/$/, '') +\n routePath\n );\n\n\n\n });\n const routes = [\n ...['', `---------- FOR HOST ${this.uri.href} ----------`],\n ...troutes,\n ];\n const fileName = path.join(\n/* */\n/* */\n \n `tmp-routes-${_.kebabCase(this.config.contextName)}.json`,\n );\n\n this.logFramework && console.log(`[taon] routes file: ${fileName} `);\n\n/* */\n/* */\n/* */\n/* */\n/* */\n \n\n }\n\n\n\n public get middlewares(): Models.MiddlewareType[] {\n/* */\n/* */\n return (void 0);\n }\n\n\n\n private initMiddlewares() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n\n\n\n private initServer(\n\n type: Models.Http.Rest.HttpMethod,\n methodConfig: Models.MethodConfig,\n classConfig: Models.RuntimeControllerConfig,\n expressPath: string,\n target: Function,\n\n ): any {\n\n\n const requestHandler =\n methodConfig.requestHandler &&\n typeof methodConfig.requestHandler === 'function'\n ? methodConfig.requestHandler\n : (req, res, next) => {\n next();\n };\n\n\n const url = this.uri;\n\n\n const getResult = async (resolvedParams, req, res) => {\n const response: Models.Http.Response<any> =\n methodConfig.descriptor.value.apply(\n /**\n * Context for method @GET,@PUT etc.\n */\n this.getInstanceBy(target as any),\n /**\n * Params for metjod @GET, @PUT etc.\n */\n resolvedParams,\n );\n let result = await getResponseValue(response, { req, res });\n return result;\n };\n\n\n url.pathname = url.pathname.replace(/\\/$/, '');\n expressPath = url.pathname.startsWith('/')\n ? `${url.pathname}${expressPath}`\n : expressPath;\n expressPath = expressPath.replace(/\\/\\//g, '/');\n\n\n\n if (Helpers.isElectron) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n\n if (!this.remoteHost) {\n\n\n if (Helpers.isWebSQL) {\n if (!this.expressApp[type.toLowerCase()]) {\n this.expressApp[type.toLowerCase()] = () => {};\n }\n }\n\n\n\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n\n return {\n routePath: expressPath,\n method: methodConfig.type,\n };\n }\n\n\n\n /**\n * client can be browser or nodejs (when remote host)\n */\n private initClient(\n\n target: Function,\n type: Models.Http.Rest.HttpMethod,\n methodConfig: Models.Http.Rest.MethodConfig,\n expressPath: string,\n\n ): void {\n const ctx = this;\n\n this.logHttp && console.log(`${type?.toUpperCase()} ${expressPath} `);\n\n\n let storage: any;\n if (Helpers.isBrowser) {\n storage = window;\n }\n/* */\n/* */\n/* */\n/* */\n \n\n\n const orgMethods = target.prototype[methodConfig.methodName];\n\n\n\n if (Helpers.isElectron) {\n target.prototype[methodConfig.methodName] = function (...args) {\n const received = new Promise(async (resolve, reject) => {\n const headers = {};\n const { request, response } = TaonHelpers.websqlMocks(headers);\n\n Helpers.ipcRenderer.once(\n TaonHelpers.ipcKeyNameResponse(target, methodConfig, expressPath),\n (event, responseData) => {\n let res: any = responseData;\n console.log({ responseData });\n try {\n const body = res;\n res = new ModelsNg2Rest.HttpResponse(\n {\n body: void 0,\n isArray: void 0 as any,\n method: methodConfig.type,\n url: `${ctx.uri.origin}${\n '' // TODO express path\n }${methodConfig.path} `,\n },\n Helpers.isBlob(body) || _.isString(body)\n ? body\n : JSON.stringify(body),\n RestHeaders.from(headers),\n void 0,\n () => body,\n );\n\n resolve(res);\n } catch (error) {\n console.error(error);\n reject(error);\n }\n },\n );\n Helpers.ipcRenderer.send(\n TaonHelpers.ipcKeyNameRequest(target, methodConfig, expressPath),\n args,\n );\n });\n received['observable'] = from(received);\n return {\n received,\n };\n };\n return;\n }\n\n\n\n\n\n\n const MIN_TIMEOUT = 500;\n const MIN_TIMEOUT_STEP = 200;\n const timeout =\n window[Symbols.old.WEBSQL_REST_PROGRESS_TIMEOUT] || MIN_TIMEOUT;\n\n let updateFun: Subject<number> =\n window[Symbols.old.WEBSQL_REST_PROGRESS_FUN];\n if (!window[Symbols.old.WEBSQL_REST_PROGRESS_FUN]) {\n window[Symbols.old.WEBSQL_REST_PROGRESS_FUN] = new Subject();\n }\n updateFun = window[Symbols.old.WEBSQL_REST_PROGRESS_FUN];\n\n let startFun: Subject<void> =\n window[Symbols.old.WEBSQL_REST_PROGRESS_FUN_START];\n if (!window[Symbols.old.WEBSQL_REST_PROGRESS_FUN_START]) {\n window[Symbols.old.WEBSQL_REST_PROGRESS_FUN_START] = new Subject();\n }\n startFun = window[Symbols.old.WEBSQL_REST_PROGRESS_FUN_START];\n\n let doneFun: Subject<void> =\n window[Symbols.old.WEBSQL_REST_PROGRESS_FUN_DONE];\n if (!window[Symbols.old.WEBSQL_REST_PROGRESS_FUN_DONE]) {\n window[Symbols.old.WEBSQL_REST_PROGRESS_FUN_DONE] = new Subject();\n }\n doneFun = window[Symbols.old.WEBSQL_REST_PROGRESS_FUN_DONE];\n\n let periodsToUpdate = 0;\n if (timeout >= MIN_TIMEOUT) {\n periodsToUpdate = Math.floor(timeout / MIN_TIMEOUT_STEP);\n }\n\n\n\n const periods = async () => {\n startFun.next();\n for (let n = 1; n <= periodsToUpdate; n++) {\n\n\n\n let upValue = Math.round(((MIN_TIMEOUT_STEP * n) / timeout) * 100);\n if (upValue > 100) {\n upValue = 100;\n }\n\n updateFun.next(upValue);\n\n await new Promise((resolve, reject) => {\n setTimeout(() => {\n resolve(void 0);\n }, MIN_TIMEOUT_STEP);\n });\n\n }\n doneFun.next();\n };\n\n\n target.prototype[methodConfig.methodName] = function (...args) {\n\n\n\n const received = new Promise(async (resolve, reject) => {\n const headers = {};\n const { request, response } = TaonHelpers.websqlMocks(headers);\n\n let res: any;\n try {\n res = await Helpers.runSyncOrAsync({\n functionFn: orgMethods,\n context: this,\n arrayOfParams: args,\n });\n\n if (typeof res === 'function') {\n res = await Helpers.runSyncOrAsync({\n functionFn: res,\n context: this,\n arrayOfParams: [request, response],\n });\n }\n\n if (typeof res === 'function') {\n res = await Helpers.runSyncOrAsync({\n functionFn: res,\n context: this,\n arrayOfParams: [request, response],\n });\n }\n\n\n if (typeof res === 'object' && res?.received) {\n res = await res.received;\n }\n\n const body = res;\n\n res = new ModelsNg2Rest.HttpResponse(\n {\n body: void 0,\n isArray: void 0 as any,\n method: methodConfig.type,\n url: `${ctx.uri.origin}${\n '' // TODO express path\n }${methodConfig.path} `,\n },\n Helpers.isBlob(body) || _.isString(body)\n ? body\n : JSON.stringify(body),\n RestHeaders.from(headers),\n void 0,\n () => body,\n );\n\n\n\n\n\n await periods();\n resolve(res);\n } catch (error) {\n await periods();\n console.error(error);\n\n\n\n reject(error);\n }\n });\n received['observable'] = from(received);\n\n if (Helpers.isWebSQL) {\n return {\n received,\n };\n }\n };\n if (Helpers.isWebSQL) {\n return;\n }\n\n\n\n\n\n target.prototype[methodConfig.methodName] = function (this: {}, ...args) {\n\n\n\n\n\n if (!storage[Symbols.old.ENDPOINT_META_CONFIG])\n storage[Symbols.old.ENDPOINT_META_CONFIG] = {};\n if (!storage[Symbols.old.ENDPOINT_META_CONFIG][ctx.uri.href])\n storage[Symbols.old.ENDPOINT_META_CONFIG][ctx.uri.href] = {};\n const endpoints = storage[Symbols.old.ENDPOINT_META_CONFIG];\n let rest: ModelsNg2Rest.ResourceModel<any, any>;\n if (!endpoints[ctx.uri.href][expressPath]) {\n let headers = {};\n if (methodConfig.contentType && !methodConfig.responseType) {\n rest = Resource.create(\n ctx.uri.href,\n expressPath,\n Symbols.old.MAPPING_CONFIG_HEADER as any,\n Symbols.old.CIRCURAL_OBJECTS_MAP_BODY as any,\n RestHeaders.from({\n 'Content-Type': methodConfig.contentType,\n Accept: methodConfig.contentType,\n }),\n );\n } else if (methodConfig.contentType && methodConfig.responseType) {\n rest = Resource.create(\n ctx.uri.href,\n expressPath,\n Symbols.old.MAPPING_CONFIG_HEADER as any,\n Symbols.old.CIRCURAL_OBJECTS_MAP_BODY as any,\n RestHeaders.from({\n 'Content-Type': methodConfig.contentType,\n Accept: methodConfig.contentType,\n responsetypeaxios: methodConfig.responseType,\n }),\n );\n } else if (!methodConfig.contentType && methodConfig.responseType) {\n rest = Resource.create(\n ctx.uri.href,\n expressPath,\n Symbols.old.MAPPING_CONFIG_HEADER as any,\n Symbols.old.CIRCURAL_OBJECTS_MAP_BODY as any,\n RestHeaders.from({\n responsetypeaxios: methodConfig.responseType,\n }),\n );\n } else {\n rest = Resource.create(\n ctx.uri.href,\n expressPath,\n Symbols.old.MAPPING_CONFIG_HEADER as any,\n Symbols.old.CIRCURAL_OBJECTS_MAP_BODY as any,\n );\n }\n\n endpoints[ctx.uri.href][expressPath] = rest;\n } else {\n rest = endpoints[ctx.uri.href][expressPath] as any;\n }\n\n const method = type.toLowerCase();\n const isWithBody = method === 'put' || method === 'post';\n const pathPrams = {};\n let queryParams = {};\n let bodyObject = {};\n args.forEach((param, i) => {\n let currentParam: Models.Http.Rest.ParamConfig = void 0 as any;\n\n for (let pp in methodConfig.parameters) {\n let v = methodConfig.parameters[pp];\n if (v.index === i) {\n currentParam = v;\n break;\n }\n }\n\n if (currentParam.paramType === 'Path') {\n pathPrams[currentParam.paramName] = param;\n }\n if (currentParam.paramType === 'Query') {\n if (currentParam.paramName) {\n const mapping = Mapping.decode(param, !ctx.isProductionMode);\n if (mapping) {\n rest.headers.set(\n `${Symbols.old.MAPPING_CONFIG_HEADER_QUERY_PARAMS}${currentParam.paramName} `,\n JSON.stringify(mapping),\n );\n }\n queryParams[currentParam.paramName] = param;\n } else {\n const mapping = Mapping.decode(param, !ctx.isProductionMode);\n if (mapping) {\n rest.headers.set(\n Symbols.old.MAPPING_CONFIG_HEADER_QUERY_PARAMS,\n JSON.stringify(mapping),\n );\n }\n queryParams = _.cloneDeep(param);\n }\n }\n if (currentParam.paramType === 'Header') {\n if (currentParam.paramName) {\n if (currentParam.paramName === Symbols.old.MDC_KEY) {\n\n rest.headers.set(\n currentParam.paramName,\n encodeURIComponent(JSON.stringify(param)),\n );\n } else {\n rest.headers.set(currentParam.paramName, param);\n }\n } else {\n for (let header in param) {\n rest.headers.set(header, param[header]);\n }\n }\n }\n if (currentParam.paramType === 'Cookie') {\n Resource.Cookies.write(\n currentParam.paramName,\n param,\n currentParam.expireInSeconds,\n );\n }\n if (currentParam.paramType === 'Body') {\n if (currentParam.paramName) {\n if (ClassHelpers.getName(bodyObject) === 'FormData') {\n throw new Error(`[taon - framework] Don use param names when posting / putting FormData.\n Use this:\n\n(@Taon.Http.Param.Body() formData: FormData) ...\n\n\ninstead\n\n (@Taon.Http.Param.Body('${currentParam.paramName}') formData: FormData) ...\n\n`);\n }\n const mapping = Mapping.decode(param, !ctx.isProductionMode);\n if (mapping) {\n rest.headers.set(\n `${Symbols.old.MAPPING_CONFIG_HEADER_BODY_PARAMS}${currentParam.paramName} `,\n JSON.stringify(mapping),\n );\n }\n bodyObject[currentParam.paramName] = param;\n } else {\n const mapping = Mapping.decode(param, !ctx.isProductionMode);\n if (mapping) {\n rest.headers.set(\n Symbols.old.MAPPING_CONFIG_HEADER_BODY_PARAMS,\n JSON.stringify(mapping),\n );\n }\n bodyObject = param;\n }\n }\n });\n\n if (\n typeof bodyObject === 'object' &&\n ClassHelpers.getName(bodyObject) !== 'FormData'\n ) {\n let circuralFromItem = [];\n bodyObject = JSON10.parse(\n JSON10.stringify(bodyObject, void 0, void 0, circs => {\n circuralFromItem = circs;\n }),\n );\n rest.headers.set(\n Symbols.old.CIRCURAL_OBJECTS_MAP_BODY,\n JSON10.stringify(circuralFromItem),\n );\n }\n\n if (typeof queryParams === 'object') {\n let circuralFromQueryParams = [];\n queryParams = JSON10.parse(\n JSON10.stringify(queryParams, void 0, void 0, circs => {\n circuralFromQueryParams = circs;\n }),\n );\n\n rest.headers.set(\n Symbols.old.CIRCURAL_OBJECTS_MAP_QUERY_PARAM,\n JSON10.stringify(circuralFromQueryParams),\n );\n }\n\n\n const httpResultObj = {\n received: isWithBody\n ? rest.model(pathPrams)[method](bodyObject, [queryParams])\n : rest.model(pathPrams)[method]([queryParams]),\n };\n return httpResultObj;\n };\n\n }\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/endpoint-context.ts","\n\n\nimport { Helpers } from 'tnp-core/websql';\nimport { EndpointContext } from './endpoint-context';\nimport { Models } from './models';\n\nimport { ENV } from './env';\n\nimport { TaonAdminService } from './ui/taon-admin-mode-configuration/taon-admin.service';\n\n\n\n\n\n\nexport const createContext = <\n\n CTX extends Record<string, object>,\n CTRL extends Record<string, new (...args: any[]) => any>,\n ENTITY extends Record<string, new (...args: any[]) => any>,\n REPO extends Record<string, new (...args: any[]) => any>,\n PROVIDER extends Record<string, new (...args: any[]) => any>,\n SUBSCRIBER extends Record<string, new (...args: any[]) => any>,\n MIGRATION extends Record<string, new (...args: any[]) => any>,\n\n>(\n configFn: (\n env: any,\n ) => Models.ContextOptions<\n CTX,\n CTRL,\n ENTITY,\n REPO,\n PROVIDER,\n SUBSCRIBER,\n MIGRATION\n >,\n) => {\n let config = configFn(ENV);\n\n const endpointContextRef = new EndpointContext(config, configFn);\n\n const res = {\n\n types: {\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n get controllers() {\n return config.controllers;\n },\n get repositories() {\n return config.repositories;\n },\n get providers() {\n return config.providers;\n },\n get subscribers() {\n return config.subscribers;\n },\n get migrations() {\n return config.migrations;\n },\n },\n\n\n get contexts() {\n return config.contexts;\n },\n get contextName() {\n return config.contextName;\n },\n\n\n /**\n * @deprecated\n * - get reference to internal context\n */\n async __ref() {\n if (!endpointContextRef.inited) {\n await endpointContextRef.init({\n initFromRecrusiveContextResovle: true,\n });\n }\n return endpointContextRef;\n },\n /**\n * only for internal use\n * @deprecated\n */\n get __refSync() {\n return endpointContextRef;\n },\n getClassInstance<T>(ctor: new (...args: any[]) => T): T {\n return endpointContextRef.getInstanceBy(ctor);\n },\n\n getClass<T>(ctor: new (...args: any[]) => T): new (...args: any[]) => T {\n const classFun = endpointContextRef.getClassFunByClass(ctor);\n return classFun as any;\n\n\n\n\n\n\n\n\n\n\n\n\n\n },\n\n\n /**\n * - create controller instances for context\n * - init database (if enable) + migation scripts\n */\n initialize: async (overrideOptions?: {\n overrideHost?: string;\n overrideRemoteHost?: string;\n onlyMigrationRun?: boolean;\n onlyMigrationRevertToTimestamp?: number;\n }): Promise<EndpointContext> => {\n return await new Promise(async (resolve, reject) => {\n setTimeout(async () => {\n await endpointContextRef.init({\n ...overrideOptions,\n });\n\n if (config.abstract) {\n throw new Error(`Abstract context can not be initialized`);\n }\n\n await endpointContextRef.initEntities();\n await endpointContextRef.initSubscribers();\n\n await endpointContextRef.initDatabaseConnection();\n\n await endpointContextRef.dbMigrations.ensureMigrationTableExists();\n\n\n\n\n\n\n endpointContextRef.initControllers();\n endpointContextRef.startServer();\n\n endpointContextRef.writeActiveRoutes();\n\n\n await endpointContextRef.initClasses();\n let keepWebsqlDbDataAfterReload = false;\n\n keepWebsqlDbDataAfterReload =\n TaonAdminService.Instance?.keepWebsqlDbDataAfterReload;\n\n if (!Helpers.isNode && keepWebsqlDbDataAfterReload) {\n Helpers.info(`[taon] Keep websql data after reload`);\n } else {\n await endpointContextRef.reinitControllers();\n }\n ///#region TODO this may be usefull but for now\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n if (endpointContextRef.onlyMigrationRun) {\n await endpointContextRef.dbMigrations.runAllNotCompletedMigrations();\n } else if (endpointContextRef.onlyMigrationRevertToTimestamp) {\n await endpointContextRef.dbMigrations.revertMigrationToTimestamp(\n endpointContextRef.onlyMigrationRevertToTimestamp,\n );\n } else {\n await endpointContextRef.dbMigrations.runAllNotCompletedMigrations();\n }\n\n resolve(endpointContextRef);\n });\n });\n },\n\n /**\n * realtime communication with server\n * Udp socket.io (or ipc) based.\n */\n get realtime() {\n return {\n get client() {\n return endpointContextRef.realtimeClient;\n },\n get server() {\n return endpointContextRef.realtimeServer;\n },\n };\n },\n };\n return res;\n};\n\n\n ;({}); // @--end-of-file-for-module=taon lib/create-context.ts","\n\nimport { createContext } from '../create-context';\nimport { BaseRepository } from './base-repository';\n\nconst BaseContext = createContext(() => ({\n contextName: 'BaseContext',\n abstract: true,\n repositories: {\n // @ts-ignore\n BaseRepository,\n },\n}));\n\nexport { BaseContext };\n\n ;({}); // @--end-of-file-for-module=taon lib/base-classes/base-context.ts","\n\nimport { ClassHelpers } from '../../helpers/class-helpers';\nimport { Symbols } from '../../symbols';\nimport { Models } from '../../models';\nimport { _ } from 'tnp-core/websql';\n\n/**\n * Subscriber decorator\n */\nexport function TaonSubscriber(options: TaonSubscriberOptions) {\n return function (constructor: Function) {\n Reflect.defineMetadata(\n Symbols.metadata.options.subscriber,\n options,\n constructor,\n );\n Reflect.defineMetadata(\n Symbols.metadata.className,\n options?.className || constructor.name,\n constructor,\n );\n ClassHelpers.setName(constructor, options?.className);\n } as any;\n}\n\nexport class TaonSubscriberOptions<\n T = any,\n> extends Models.DecoratorAbstractOpt {\n allowedEvents?: (keyof T)[];\n}\n\n\n ;({}); // @--end-of-file-for-module=taon lib/decorators/classes/subscriber-decorator.ts","\n\nimport { EntitySubscriberInterface, RecoverEvent, SoftRemoveEvent, InsertEvent, TransactionStartEvent, TransactionCommitEvent, TransactionRollbackEvent, RemoveEvent, UpdateEvent, } from 'taon-typeorm/websql';/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n\nimport { BaseInjector } from './base-injector';\nimport { TaonSubscriber } from '../decorators/classes/subscriber-decorator';\nimport { _ } from 'tnp-core/websql';\n\n@TaonSubscriber({\n className: 'BaseSubscriberForEntity',\n})\nexport abstract class BaseSubscriberForEntity<Entity = any>\n extends BaseInjector\n implements EntitySubscriberInterface\n{\n abstract listenTo(): new (...args) => Entity;\n\n /**\n * Called after entity is loaded.\n */\n afterLoad(entity: any) {\n this.ctx.logDb &&\n console.log(`AFTER ENTITY LOADED: `, entity);\n }\n\n /**\n * Called before query execution.\n */\n beforeQuery(event: any) {\n\n this.ctx.logDb &&\n console.log(`BEFORE QUERY: `, event.query);\n }\n\n /**\n * Called after query execution.\n */\n afterQuery(event: any) {\n\n this.ctx.logDb &&\n console.log(`AFTER QUERY: `, event.query);\n }\n\n /**\n * Called before entity insertion.\n */\n beforeInsert(event: InsertEvent<any>) {\n this.ctx.logDb &&\n console.log(`BEFORE ENTITY INSERTED: `, event.entity);\n }\n\n /**\n * Called after entity insertion.\n */\n afterInsert(event: InsertEvent<any>) {\n this.ctx.logDb &&\n console.log(`AFTER ENTITY INSERTED: `, event.entity);\n }\n\n /**\n * Called before entity update.\n */\n beforeUpdate(event: UpdateEvent<any>) {\n this.ctx.logDb &&\n console.log(`BEFORE ENTITY UPDATED: `, event.entity);\n }\n\n /**\n * Called after entity update.\n */\n afterUpdate(event: UpdateEvent<any>) {\n this.ctx.logDb &&\n console.log(`AFTER ENTITY UPDATED: `, event.entity);\n }\n\n /**\n * Called before entity removal.\n */\n beforeRemove(event: RemoveEvent<any>) {\n this.ctx.logDb &&\n console.log(\n `BEFORE ENTITY WITH ID ${event.entityId} REMOVED: `,\n event.entity,\n );\n }\n\n /**\n * Called after entity removal.\n */\n afterRemove(event: RemoveEvent<any>) {\n this.ctx.logDb &&\n console.log(\n `AFTER ENTITY WITH ID ${event.entityId} REMOVED: `,\n event.entity,\n );\n }\n\n /**\n * Called before entity removal.\n */\n beforeSoftRemove(event: SoftRemoveEvent<any>) {\n this.ctx.logDb &&\n console.log(\n `BEFORE ENTITY WITH ID ${event.entityId} SOFT REMOVED: `,\n event.entity,\n );\n }\n\n /**\n * Called after entity removal.\n */\n afterSoftRemove(event: SoftRemoveEvent<any>) {\n this.ctx.logDb &&\n console.log(\n `AFTER ENTITY WITH ID ${event.entityId} SOFT REMOVED: `,\n event.entity,\n );\n }\n\n /**\n * Called before entity recovery.\n */\n beforeRecover(event: RecoverEvent<any>) {\n this.ctx.logDb &&\n console.log(\n `BEFORE ENTITY WITH ID ${event.entityId} RECOVERED: `,\n event.entity,\n );\n }\n\n /**\n * Called after entity recovery.\n */\n afterRecover(event: RecoverEvent<any>) {\n this.ctx.logDb &&\n console.log(\n `AFTER ENTITY WITH ID ${event.entityId} RECOVERED: `,\n event.entity,\n );\n }\n\n /**\n * Called before transaction start.\n */\n beforeTransactionStart(event: TransactionStartEvent) {\n this.ctx.logDb &&\n console.log(`BEFORE TRANSACTION STARTED: `, event);\n }\n\n /**\n * Called after transaction start.\n */\n afterTransactionStart(event: TransactionStartEvent) {\n this.ctx.logDb &&\n console.log(`AFTER TRANSACTION STARTED: `, event);\n }\n\n /**\n * Called before transaction commit.\n */\n beforeTransactionCommit(event: TransactionCommitEvent) {\n this.ctx.logDb &&\n console.log(`BEFORE TRANSACTION COMMITTED: `, event);\n }\n\n /**\n * Called after transaction commit.\n */\n afterTransactionCommit(event: TransactionCommitEvent) {\n this.ctx.logDb &&\n console.log(`AFTER TRANSACTION COMMITTED: `, event);\n }\n\n /**\n * Called before transaction rollback.\n */\n beforeTransactionRollback(event: TransactionRollbackEvent) {\n this.ctx.logDb &&\n console.log(`BEFORE TRANSACTION ROLLBACK: `, event);\n }\n\n /**\n * Called after transaction rollback.\n */\n afterTransactionRollback(event: TransactionRollbackEvent) {\n this.ctx.logDb &&\n console.log(`AFTER TRANSACTION ROLLBACK: `, event);\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/base-classes/base-subscriber-for-entity.ts","\n\nimport { _ } from 'tnp-core/websql';\nimport { ClassHelpers } from '../helpers/class-helpers';\nimport { BaseInjector } from './base-injector';\nimport { MigrationInterface, QueryRunner } from 'taon-typeorm/websql';\n\nexport class BaseMigration extends BaseInjector implements MigrationInterface {\n /**\n * by default is READY to run\n */\n public isReadyToRun(): boolean {\n return true;\n }\n\n getDescription(): string {\n return _.startCase(ClassHelpers.getName(this));\n }\n\n async up(queryRunner: QueryRunner): Promise<any> {\n console.log(`Running migration UP \"${ClassHelpers.getName(this)}\"`);\n }\n async down(queryRunner: QueryRunner): Promise<any> {\n console.log(`Running migration DOWN \"${ClassHelpers.getName(this)}\"`);\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/base-classes/base-migration.ts","\n\nimport * as controller from './base-controller';\nimport * as crudController from './base-crud-controller';\nimport * as entity from './base-entity';\nimport * as abstractEntity from './base-abstract-entity';\nimport * as repository from './base-repository';\nimport * as provider from './base-provider';\nimport * as baseClass from './base-class';\nimport * as baseContext from './base-context';\nimport * as baseSubscriberEntity from './base-subscriber-for-entity';\nimport * as baseMigration from './base-migration';\nexport namespace Base {\n export import Controller = controller.BaseController;\n export import CrudController = crudController.BaseCrudController;\n export import Entity = entity.BaseEntity;\n export import AbstractEntity = abstractEntity.BaseAbstractEntity;\n export import AbstractEntityOmitKeys = abstractEntity.AbstractEntityOmitKeys;\n export import Provider = provider.BaseProvider;\n export import Class = baseClass.BaseClass;\n export import Repository = repository.BaseRepository;\n export import SubscriberForEntity = baseSubscriberEntity.BaseSubscriberForEntity;\n export import Migration = baseMigration.BaseMigration;\n export const Context = baseContext.BaseContext;\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/base-classes/base.ts","\n\nimport { Mapping } from 'ng2-rest/websql';\nimport { ClassHelpers } from '../../helpers/class-helpers';\nimport { CLASS } from 'typescript-class-helpers/websql';\nimport { Symbols } from '../../symbols';\nimport { _ } from 'tnp-core/websql';\nimport { Models } from '../../models';\n\nimport { Entity as TypeormEntity, Tree } from 'taon-typeorm/websql';\n\n\n/**\n * Entity decorator\n */\nexport function TaonEntity<T = any>(options?: TaonEntityOptions<T>) {\n return function (constructor: Function) {\n options = options || ({} as any);\n options.uniqueKeyProp = options.uniqueKeyProp || ('id' as any);\n ClassHelpers.setName(constructor, options?.className);\n\n Mapping.DefaultModelWithMapping<T>(\n options?.defaultModelValues || {},\n _.merge(\n options?.defaultModelMapping || {},\n (options?.defaultModelMappingDeep || {}) as any,\n ),\n )(constructor);\n\n\n Mapping.DefaultModelWithMapping<T>(void 0, {})(constructor);\n\n Reflect.defineMetadata(\n Symbols.metadata.options.entity,\n options,\n constructor,\n );\n Reflect.defineMetadata(\n Symbols.metadata.className,\n options?.className || constructor.name,\n constructor,\n );\n\n TypeormEntity(options?.className)(constructor);\n\n CLASS.setName(constructor, options?.className); // TODO QUICK_FIX for ng2-rest\n };\n}\n\nexport class TaonEntityOptions<T = any> extends Models.DecoratorAbstractOpt {\n /**\n * default unique property is \"id\"\n * for your entity it may be something else\n */\n uniqueKeyProp?: string;\n createTable?: boolean;\n defaultModelValues?: Mapping.ModelValue<T>;\n defaultModelMapping?: Mapping.Mapping<T>;\n defaultModelMappingDeep?: { [lodashPathes: string]: string | [string] };\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/decorators/classes/entity-decorator.ts","\n\nimport { ClassHelpers } from '../../helpers/class-helpers';\nimport { Symbols } from '../../symbols';\nimport { Models } from '../../models';\n\n/**\n * Provider decorator\n */\nexport function TaonProvider<T = any>(options?: TaonProviderOptions<T>) {\n return function (constructor: Function) {\n Reflect.defineMetadata(\n Symbols.metadata.options.provider,\n options,\n constructor,\n );\n Reflect.defineMetadata(\n Symbols.metadata.className,\n options?.className || constructor.name,\n constructor,\n );\n ClassHelpers.setName(constructor, options?.className || constructor.name);\n };\n}\n\nexport class TaonProviderOptions<\n T = any,\n> extends Models.DecoratorAbstractOpt {\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/decorators/classes/provider-decorator.ts","\n\nimport { ClassHelpers } from '../../helpers/class-helpers';\nimport { Symbols } from '../../symbols';\nimport { Models } from '../../models';\nimport { _ } from 'tnp-core/websql';\n\n/**\n * Migration decorator\n */\nexport function TaonMigration(options: TaonMigrationOptions) {\n return function (constructor: Function) {\n Reflect.defineMetadata(\n Symbols.metadata.options.migration,\n options,\n constructor,\n );\n Reflect.defineMetadata(\n Symbols.metadata.className,\n options?.className || constructor.name,\n constructor,\n );\n ClassHelpers.setName(constructor, options?.className);\n } as any;\n}\n\nexport class TaonMigrationOptions<\n T = any,\n> extends Models.DecoratorAbstractOpt {}\n\n ;({}); // @--end-of-file-for-module=taon lib/decorators/classes/migration-decorator.ts","\n\n\nimport { inject as angularInject } from '@angular/core';\n\nimport { Symbols } from './symbols';\nimport type { EndpointContext } from './endpoint-context';\nimport type { BaseInjector } from './base-classes/base-injector';\n\nexport const inject = <T>(entity: () => new (...args: any[]) => T): T => {\n return new Proxy(\n {},\n {\n get: (_, propName) => {\n if (propName === 'hasOwnProperty') {\n return () => false;\n }\n\n const ctor = entity();\n const contextFromClass = ctor[\n Symbols.ctxInClassOrClassObj\n ] as EndpointContext;\n const resultContext = contextFromClass;\n if (resultContext) {\n let instance = resultContext.inject(ctor) as BaseInjector;\n\n\n if (propName === 'getOriginalPrototype') {\n return () => Object.getPrototypeOf(instance);\n }\n if (propName === 'getOriginalConstructor') {\n return () => instance.constructor;\n }\n\n const methods = ctor[Symbols.classMethodsNames] || [];\n const isMethods = methods.includes(propName);\n\n const methodOrProperty = isMethods\n ? instance[propName].bind(instance)\n : instance[propName];\n\n\n\n\n\n return methodOrProperty;\n }\n\n\n return angularInject(ctor)[propName];\n\n },\n },\n ) as T;\n};\n\n\n\n\n\n\n\n\n/**\n * TODO\n */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n ;({}); // @--end-of-file-for-module=taon lib/inject.ts","\n\nimport { Directive, Input, Output, EventEmitter, HostBinding, HostListener, } from '@angular/core';/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n\n\nimport { _ } from 'tnp-core/websql';\nimport { Log, Level } from 'ng2-logger/websql';\nconst log = Log.create(`[taon-helpers] long-press`, Level.__NOTHING);\n\n@Directive({\n selector: '[taonLongPress]',\n standalone: true,\n})\nexport class TaonLongPress {\n @Input() pressDuration: number = 1000;\n\n @Output() onLongPress: EventEmitter<any> = new EventEmitter();\n @Output() onLongPressing: EventEmitter<any> = new EventEmitter();\n @Output() onLongPressEnd: EventEmitter<any> = new EventEmitter();\n\n private pressing: boolean;\n private longPressing: boolean;\n private timeout: any;\n private mouseX: number = 0;\n private mouseY: number = 0;\n\n @HostBinding('class.press')\n get press() {\n return this.pressing;\n }\n\n @HostBinding('class.longpress')\n get longPress() {\n return this.longPressing;\n }\n\n allowTrigger = false;\n triggerEnd = _.debounce(() => {\n this.endPress();\n }, 500);\n\n @HostListener('mousedown', ['$event'])\n onMouseDown(event) {\n\n log.d(`MOUSE DOWN `);\n\n if (event.which !== 1) return;\n this.allowTrigger = true;\n\n this.mouseX = event.clientX;\n this.mouseY = event.clientY;\n\n this.pressing = true;\n this.longPressing = false;\n\n this.timeout = setTimeout(() => {\n if (this.allowTrigger) {\n this.longPressing = true;\n log.d(`long pressing start pressDuration:${this.pressDuration} `);\n this.onLongPress.emit(event);\n this.loop(event);\n }\n }, this.pressDuration);\n\n this.loop(event);\n }\n\n @HostListener('mousemove', ['$event'])\n onMouseMove(event) {\n if (this.pressing && !this.longPressing) {\n const xThres = event.clientX - this.mouseX > 10;\n const yThres = event.clientY - this.mouseY > 10;\n if (xThres || yThres) {\n this.endPress();\n }\n }\n }\n\n loop(event) {\n if (this.longPressing) {\n this.timeout = setTimeout(() => {\n log.d(`emil longpressing`);\n this.triggerEnd();\n this.onLongPressing.emit(event);\n this.loop(event);\n }, 50);\n }\n }\n\n endPress(emit = true) {\n this.allowTrigger = false;\n clearTimeout(this.timeout);\n this.longPressing = false;\n this.pressing = false;\n if (emit) {\n log.d(`EMIT END`);\n this.onLongPressEnd.emit(true);\n } else {\n log.d(`NOT EMIT END`);\n }\n }\n\n @HostListener('mouseup')\n onMouseUp() {\n this.endPress(false);\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/ui/directives/taon-long-press.directive.ts","\n\nimport { Directive, ElementRef, Input } from '@angular/core';\n\n@Directive({\n selector: '[taonInjectHTML]',\n standalone: true,\n})\nexport class TaonInjectHTMLDirective {\n @Input() set taonInjectHTML(content: string) {\n this.host.nativeElement.innerHTML = content;\n }\n\n constructor(private host: ElementRef) {}\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/ui/directives/taon-inject-html.directive.ts","\n\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer, SafeHtml, SafeStyle, SafeScript, SafeUrl, SafeResourceUrl, } from '@angular/platform-browser';/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n\n\n@Pipe({\n name: 'safe',\n standalone: true,\n})\nexport class SafePipe implements PipeTransform {\n constructor(protected sanitizer: DomSanitizer) {}\n\n public transform(\n value: any,\n type: string\n ): SafeHtml | SafeStyle | SafeScript | SafeUrl | SafeResourceUrl {\n switch (type) {\n case 'html':\n return this.sanitizer.bypassSecurityTrustHtml(value);\n case 'style':\n return this.sanitizer.bypassSecurityTrustStyle(value);\n case 'script':\n return this.sanitizer.bypassSecurityTrustScript(value);\n case 'url':\n return this.sanitizer.bypassSecurityTrustUrl(value);\n case 'resourceUrl':\n return this.sanitizer.bypassSecurityTrustResourceUrl(value);\n default:\n throw new Error(`Invalid safe type specified: ${type}`);\n }\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/ui/directives/safe.pipe.ts","\n\n\nexport * from './taon-long-press.directive';\nexport * from './taon-inject-html.directive';\nexport * from './safe.pipe';\n\n\n ;({}); // @--end-of-file-for-module=taon lib/ui/directives/index.ts","\n\n\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { CdkStepperModule } from '@angular/cdk/stepper';\nimport { CdkTableModule } from '@angular/cdk/table';\nimport { CdkTreeModule } from '@angular/cdk/tree';\nimport { NgModule } from '@angular/core';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatBadgeModule } from '@angular/material/badge';\nimport { MatBottomSheetModule } from '@angular/material/bottom-sheet';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatStepperModule } from '@angular/material/stepper';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatGridListModule } from '@angular/material/grid-list';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatListModule } from '@angular/material/list';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatRippleModule } from '@angular/material/core';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { MatSliderModule } from '@angular/material/slider';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatSortModule } from '@angular/material/sort';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatTreeModule } from '@angular/material/tree';\n\n@NgModule({\n exports: [\n A11yModule,\n CdkStepperModule,\n CdkTableModule,\n CdkTreeModule,\n DragDropModule,\n MatAutocompleteModule,\n MatBadgeModule,\n MatBottomSheetModule,\n MatButtonModule,\n MatButtonToggleModule,\n MatCardModule,\n MatCheckboxModule,\n MatChipsModule,\n MatStepperModule,\n MatDatepickerModule,\n MatDialogModule,\n MatDividerModule,\n MatExpansionModule,\n MatGridListModule,\n MatIconModule,\n MatInputModule,\n MatListModule,\n MatMenuModule,\n MatNativeDateModule,\n MatPaginatorModule,\n MatProgressBarModule,\n MatProgressSpinnerModule,\n MatRadioModule,\n MatRippleModule,\n MatSelectModule,\n MatSidenavModule,\n MatSliderModule,\n MatSlideToggleModule,\n MatSnackBarModule,\n MatSortModule,\n MatTableModule,\n MatTabsModule,\n MatToolbarModule,\n MatTooltipModule,\n MatTreeModule,\n ScrollingModule,\n ],\n})\nexport class TaonFullMaterialModule {}\n\n\n ;({}); // @--end-of-file-for-module=taon lib/ui/taon-full-material.module.ts","\n\n\nimport { Component, EventEmitter, HostBinding, Input, OnInit, Output, } from '@angular/core';/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'taon-github-fork-me-corner',\n templateUrl: './taon-github-fork-me-corner.component.html',\n styleUrls: ['./taon-github-fork-me-corner.component.scss'],\n})\nexport class TaonGithubForkMeCornerComponent {\n @Input() url: string = 'https://github.com';\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/ui/taon-github-fork-me-corner/taon-github-fork-me-corner.component.ts","<a href=\"{{ url }}\" class=\"github-corner\" aria-label=\"View source on GitHub\"\n ><svg\n width=\"80\"\n height=\"80\"\n viewBox=\"0 0 250 250\"\n style=\"\n fill: #151513;\n color: #fff;\n position: absolute;\n top: 0;\n border: 0;\n right: 0;\n \"\n aria-hidden=\"true\">\n <path d=\"M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z\"></path>\n <path\n d=\"M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2\"\n fill=\"currentColor\"\n style=\"transform-origin: 130px 106px\"\n class=\"octo-arm\"></path>\n <path\n d=\"M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z\"\n fill=\"currentColor\"\n class=\"octo-body\"></path>\n </svg>\n</a>\n","\n\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { TaonGithubForkMeCornerComponent } from './taon-github-fork-me-corner.component';\n\n@NgModule({\n imports: [CommonModule],\n exports: [TaonGithubForkMeCornerComponent],\n declarations: [TaonGithubForkMeCornerComponent],\n providers: [],\n})\nexport class TaonGithubForkMeCornerModule {}\n\n ;({}); // @--end-of-file-for-module=taon lib/ui/taon-github-fork-me-corner/taon-github-fork-me-corner.module.ts","\n\n\nexport * from './taon-github-fork-me-corner.component';\n\n\nexport * from './taon-github-fork-me-corner.module';\n\n ;({}); // @--end-of-file-for-module=taon lib/ui/taon-github-fork-me-corner/index.ts","\n\n\nimport { _ } from 'tnp-core/websql';\nimport { Injectable } from '@angular/core';\nimport { HotToastService } from '@ngneat/hot-toast';\nimport { TaonNotificationOptions, TaonNotificationType, } from './taon-notifications.models';/* */\n/* */\n/* */\n\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TaonNotificationsService {\n constructor(private toast: HotToastService) {}\n\n private options(\n type: TaonNotificationType,\n options: TaonNotificationOptions | string\n ): TaonNotificationOptions {\n if (_.isString(options)) {\n options = {\n // @ts-ignore\n title: options,\n };\n }\n return options as TaonNotificationOptions;\n }\n\n success(options: TaonNotificationOptions | string) {\n const opt = this.options('success', options);\n return this.toast.success(opt.title);\n }\n\n error(options: TaonNotificationOptions | string) {\n const opt = this.options('error', options);\n return this.toast.error(opt.title);\n }\n\n warn(options: TaonNotificationOptions | string) {\n const opt = this.options('warning', options);\n return this.toast.warning(opt.title);\n }\n\n info(options: TaonNotificationOptions | string) {\n const opt = this.options('info', options);\n return this.toast.info(opt.title);\n }\n}\n\n\n ;({}); // @--end-of-file-for-module=taon lib/ui/taon-notifications/taon-notifications.service.ts","\n\n\nimport { Component, OnInit, TemplateRef } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { Resource } from 'ng2-rest/websql';\nimport { TaonNotificationsService } from './taon-notifications.service';\n\n@Component({\n selector: 'taon-notifications',\n templateUrl: './taon-notifications.component.html',\n styleUrls: ['./taon-notifications.component.scss'],\n})\nexport class TaonNotificationsComponent implements OnInit {\n constructor(private notification: TaonNotificationsService) {}\n\n ngOnInit() {}\n\n init(\n subscribtionsArray: Subscription[],\n template: TemplateRef<any>,\n callback: (dataToTempalte) => any\n ) {\n subscribtionsArray.push(\n Resource.listenErrors.subscribe(err => {\n this.notification.error(err.msg);\n\n\n\n\n }) as any\n );\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/ui/taon-notifications/taon-notifications.component.ts","<!-- <p>\n notyfications works!\n</p> -->\n","\n\n\nimport { HotToastService } from '@ngneat/hot-toast';\n\nexport class TaonNotificationOptions {\n title: string;\n subtitle?: string;\n}\n\nexport type TaonNotificationType = keyof Omit<\n HotToastService,\n 'defaultConfig' | 'observe'\n>;\n\n\n ;({}); // @--end-of-file-for-module=taon lib/ui/taon-notifications/taon-notifications.models.ts","\n\n\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TaonNotificationsComponent } from './taon-notifications.component';\n\n\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { TaonNotificationsService } from './taon-notifications.service';\n\n@NgModule({\n imports: [\n\n\n\n\n\n ],\n exports: [TaonNotificationsComponent],\n declarations: [TaonNotificationsComponent],\n providers: [TaonNotificationsService],\n})\nexport class TaonNotificationsModule {}\n\n\n ;({}); // @--end-of-file-for-module=taon lib/ui/taon-notifications/taon-notifications.module.ts","\n\n\nexport * from './taon-notifications.component';\n\nexport * from './taon-notifications.models';\n\nexport * from './taon-notifications.module';\n\n\nexport * from './taon-notifications.service';\n\n ;({}); // @--end-of-file-for-module=taon lib/ui/taon-notifications/index.ts","\n\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectorRef, Component, DestroyRef, ElementRef, HostBinding, Input, OnInit, Self, inject, } from '@angular/core';/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n\nimport { FormControl, FormGroup, FormsModule, ReactiveFormsModule, } from '@angular/forms';/* */\n/* */\n/* */\n/* */\n/* */\n\nimport { PasswordModule } from 'primeng/password';\nimport { Stor } from 'taon-storage/websql';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { interval, take, tap } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nexport interface TaonSessionPasscodeModel {\n passcode: string;\n}\n\nexport type TaonSessionPasscodeForm = {\n [prop in keyof TaonSessionPasscodeModel]: FormControl<\n TaonSessionPasscodeModel[prop]\n >;\n};\n\n@Component({\n selector: 'taon-session-passcode',\n templateUrl: './taon-session-passcode.component.html',\n styleUrls: ['./taon-session-passcode.component.scss'],\n standalone: true,\n imports: [PasswordModule, CommonModule, ReactiveFormsModule, FormsModule],\n})\nexport class TaonSessionPasscodeComponent implements OnInit {\n destroyRef = inject(DestroyRef);\n\n\n @Input() public passcode: string;\n @Input() public message: string;\n public safeMessage: SafeHtml;\n\n @(Stor.property.in.localstorage\n .for(TaonSessionPasscodeComponent)\n .withDefaultValue(''))\n private lastPasscode: string;\n @HostBinding('style.display') public display = 'none';\n public form: FormGroup<TaonSessionPasscodeForm> =\n new FormGroup<TaonSessionPasscodeForm>({\n passcode: new FormControl(),\n });\n constructor(\n @Self() private element: ElementRef<HTMLElement>,\n private domSanitizer: DomSanitizer,\n private cdr: ChangeDetectorRef,\n ) {}\n\n ngOnInit() {\n if (!this.passcode) {\n this.passcode = '123456';\n }\n if (!this.message) {\n this.message = `\n This website is only for testing purpose. Please type passcode bellow to see content.\n\n `;\n }\n\n\n\n\n\n\n\n this.safeMessage = this.domSanitizer.bypassSecurityTrustHtml(this.message);\n\n if (this.lastPasscode?.toString() === this.passcode?.toString()) {\n this.hide();\n } else {\n this.show();\n this.focus();\n }\n\n interval(1000)\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n tap(() => {\n this.focus();\n }),\n )\n .subscribe();\n }\n\n submit({ passcode }: Partial<TaonSessionPasscodeModel>) {\n if (this.isPasscodeOK(passcode || '')) {\n this.hide();\n } else {\n this.clear();\n }\n }\n\n private isPasscodeOK(passcode: string) {\n this.lastPasscode = passcode.toString();\n return this.passcode.toString() === passcode;\n }\n\n ngAfterViewInit(): void {}\n\n public focus(): void {\n this.element.nativeElement.querySelector('input')?.focus();\n }\n\n hide() {\n this.display = 'none';\n }\n\n show() {\n this.display = 'block';\n }\n\n clear() {\n this.form.controls.passcode.setValue('');\n }\n\n onKeyup(event: KeyboardEvent & { target: { value: string } }) {\n if (this.isPasscodeOK(event.target.value || '')) {\n this.hide();\n return;\n }\n const key = event.keyCode || event.charCode;\n if (key === 8 || key === 46 || this.lastPasscode?.length > 5) {\n this.clear();\n }\n }\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/ui/taon-session-passcode/taon-session-passcode.component.ts","<form\n [formGroup]=\"form\"\n content=\"notranslate\"\n autocomplete=\"off\"\n (click)=\"focus()\"\n (ngSubmit)=\"submit(form.value)\"\n class=\"flex flex-column align-items-center w-full h-full\">\n <div class=\"flex align-content-center w-full justify-content-center mt-8\">\n <p\n class=\"p-3\"\n style=\"max-width: 400px; min-height: 100px\"\n [innerHtml]=\"safeMessage\"></p>\n </div>\n <input\n type=\"password\"\n class=\"text-5xl md:text-8xl pointer-events-none\"\n #taonpasscode\n (keyup)=\"onKeyup($event)\"\n formControlName=\"passcode\" />\n <!-- placeholder=\"Enter passcode\" -->\n</form>\n","\n\n\nexport * from './taon-session-passcode.component';\n\n\n ;({}); // @--end-of-file-for-module=taon lib/ui/taon-session-passcode/index.ts","\n\n\nimport { Component, EventEmitter, HostBinding, Input, OnInit, Output, ViewChild, } from '@angular/core';/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n\nimport { Observable, Subject, Subscription } from 'rxjs';\nimport { _ } from 'tnp-core/websql';\n\nimport axios from 'axios';\nimport { NgProgressConfig, NgProgressModule, NgProgressRef, } from 'ngx-progressbar';/* */\n/* */\n/* */\n/* */\n // @ts-ignore\nimport { Taon } from '../../../lib';\n\n\n\nconst calculatePercentage = (loaded, total) => Math.floor(loaded * 1.0) / total;\ndeclare const ENV: any;\n\n@Component({\n selector: 'taon-progress-bar',\n templateUrl: './taon-progress-bar.component.html',\n styleUrls: ['./taon-progress-bar.component.scss'],\n})\nexport class TaonProgressBarComponent implements OnInit {\n @ViewChild('labProgress') labProgress: NgProgressRef;\n @Input() isDesktop: boolean;\n admin: any;\n handlers: Subscription[] = [];\n options: NgProgressConfig = _.merge(\n {\n min: 8,\n max: 100,\n speed: 200,\n trickleSpeed: 300,\n debounceTime: 0,\n ease: 'linear',\n spinnerPosition: 'right',\n direction: 'ltr+',\n color: 'gray',\n fixed: true,\n meteor: true,\n spinner: true,\n thick: false,\n },\n _.get(ENV, `plugins['ngx-progressbar']`),\n );\n\n constructor() {}\n\n ngOnInit() {}\n\n ngOnDestroy(): void {\n this.handlers.forEach(h => h.unsubscribe());\n }\n\n ngAfterViewInit(): void {\n\n this.loadProgressBar(void 0, axios);\n }\n\n loadProgressBar(config, instance = axios) {\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n }\n}\n\n\n ;({}); // @--end-of-file-for-module=taon lib/ui/taon-progress-bar/taon-progress-bar.component.ts","<ng-progress\n #labProgress\n id=\"lab\"\n [meteor]=\"options.meteor\"\n [color]=\"options.color\"\n [min]=\"options.min\"\n [max]=\"options.max\"\n [speed]=\"options.speed\"\n [spinner]=\"\n options.spinner &&\n (!admin.adminPanelIsOpen ||\n (admin.adminPanelIsOpen && (admin.draggablePopupMode || !isDesktop)))\n \"\n [spinnerPosition]=\"options.spinnerPosition\"\n [direction]=\"options.direction\"\n [trickleSpeed]=\"options.trickleSpeed\"\n [debounceTime]=\"options.debounceTime\"\n [ease]=\"options.ease\"\n [thick]=\"options.thick\"\n [fixed]=\"options.fixed\">\n</ng-progress>\n<!-- (started)=\"onProgressStarted()\"\n (completed)=\"onProgressCompleted()\" -->\n","\n\n\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TaonProgressBarComponent } from './taon-progress-bar.component';\nimport { NgProgressConfig, NgProgressModule } from 'ngx-progressbar';\n\n@NgModule({\n imports: [CommonModule, NgProgressModule.withConfig({})],\n declarations: [TaonProgressBarComponent],\n exports: [TaonProgressBarComponent],\n})\nexport class TaonProgressBarModule {}\n\n ;({}); // @--end-of-file-for-module=taon lib/ui/taon-progress-bar/taon-progress-bar.module.ts","\n\n\nexport * from './taon-progress-bar.component';\nexport * from './taon-progress-bar.module';\n\n ;({}); // @--end-of-file-for-module=taon lib/ui/taon-progress-bar/index.ts","\n\n\nimport { Component, OnInit, Input, Output, TemplateRef, EventEmitter, ViewChild, ElementRef, } from '@angular/core';/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n\nimport * as _ from 'lodash';\nimport { Log, Level } from 'ng2-logger/websql'; // @ts-ignore\nimport { Taon } from '../../../lib';\nimport { CLASS } from 'typescript-class-helpers/websql';\nimport { PageEvent } from '@angular/material/paginator';\nimport { MtxGridColumn } from '@ng-matero/extensions/grid';\nimport { Subscription, debounceTime, defer, distinctUntilChanged, fromEvent, map, share, tap, } from 'rxjs';/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n\nimport { json5 } from 'tnp-core/websql';\n\n\n\nconst log = Log.create('Table wrapper', Level.__NOTHING);\nconst defaultColumns = [\n {\n header: 'ID',\n field: 'id',\n },\n {\n header: 'NAME',\n field: 'name',\n },\n] as MtxGridColumn[];\n\n\n@Component({\n\n selector: 'taon-table',\n templateUrl: './taon-table.component.html',\n styleUrls: ['./taon-table.component.scss'],\n})\nexport class TaonTableComponent {\n\n @Input() public pageNumber: number = 1;\n @Input() public pageSize: number = 5;\n @Input() public allowedColumns: string[] = [];\n @Input() public entity: typeof Taon.Base.Entity | string;\n @Input() public expansionTemplate: TemplateRef<any>;\n @Input() public rows = _.times(20, id => {\n return {\n id,\n name: `Amazing ${id} row `,\n };\n });\n @Input() public columns: MtxGridColumn[] = defaultColumns as MtxGridColumn[];\n @Input() public pageSizeOptions: number[] = [5, 10, 20];\n @Output() public expansionChange = new EventEmitter();\n\n @Output() public addingItem = new EventEmitter<void>();\n @ViewChild('search', { static: true }) search?: ElementRef<HTMLElement>;\n private searchInputChange$ = defer(() =>\n fromEvent<KeyboardEvent>(this.search?.nativeElement as any, 'keyup'),\n ).pipe(\n map(c => c.target['value']),\n debounceTime(500),\n distinctUntilChanged(),\n share(),\n tap(data => {\n console.log({ data });\n }),\n );\n\n public expandable: boolean = false;\n public showPaginator = true;\n public isLoading = false;\n public totalElements: number = 100;\n private sub: Subscription = new Subscription();\n\n\n constructor() {}\n\n\n\n\n async ngOnInit() {\n if (_.isString(this.entity)) {\n this.entity = CLASS.getBy(this.entity) as any;\n }\n\n this.sub.add(this.searchInputChange$.subscribe());\n if (!!this.entity) {\n this.rows = [];\n }\n this.expandable = !!this.expansionTemplate;\n\n log.i('this.columns,', this.columns);\n const columnsConfigSameAsDefault = _.isEqual(this.columns, defaultColumns);\n\n\n\n\n const entityClass = this.entity;\n if (entityClass && columnsConfigSameAsDefault) {\n log.i(\n 'this.crud.entity',\n CLASS.describeProperites(entityClass as Function),\n );\n\n try {\n const props = CLASS.describeProperites(entityClass as Function);\n let columns = props\n .filter(prop =>\n this.allowedColumns.length > 0\n ? this.allowedColumns.includes(prop)\n : true,\n )\n .map(prop => {\n return {\n header: _.upperCase(prop),\n field: prop,\n } as MtxGridColumn;\n });\n\n const extra = this.allowedColumns.filter(f => !props.includes(f));\n columns = [\n ...columns,\n ...extra.map(prop => {\n return {\n header: _.upperCase(prop),\n field: prop,\n } as MtxGridColumn;\n }),\n ];\n\n\n\n\n\n if (!this.expandable) {\n for (let index = 0; index < columns.length; index++) {\n const col = columns[index];\n delete col.showExpand;\n }\n }\n this.columns = columns;\n } catch (error) {\n console.error(error);\n }\n } else {\n }\n\n if (!this.entity) {\n this.showPaginator = false;\n }\n\n await this.retriveData();\n }\n\n\n\n ngOnDestroy(): void {\n this.sub.unsubscribe();\n }\n\n\n\n\n\n\n\n async getNextPage(e: PageEvent) {\n\n\n\n this.pageNumber = e.pageIndex + 1;\n this.pageSize = e.pageSize;\n await this.retriveData();\n }\n\n\n\n async retriveData() {\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n }\n\n\n\n expansionRow(e) {\n this.expansionChange.next(e);\n }\n\n\n\n onTableContextMenu(e) {\n\n\n\n log.i('context menu event', e);\n }\n\n\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/ui/taon-table/taon-table.component.ts","<br />\n<columns-container>\n <column grow>\n <mat-form-field class=\"search-input\">\n <input matInput placeholder=\"Type to search table...\" #search />\n </mat-form-field>\n </column>\n <column [width]=\"80\">\n <button\n mat-fab\n [ngClass]=\"{ 'half-opacity': !search.value }\"\n class=\"undo-button\"\n color=\"secondary\"\n (click)=\"search.value = ''\">\n <mat-icon>close </mat-icon>\n </button>\n </column>\n\n <column [width]=\"80\">\n <button\n mat-fab\n (click)=\"addingItem.next()\"\n class=\"undo-button\"\n color=\"primary\">\n <mat-icon>add</mat-icon>\n </button>\n </column>\n</columns-container>\n\n<mtx-grid\n *ngIf=\"rows && columns\"\n [data]=\"rows\"\n [columns]=\"columns\"\n [expandable]=\"expandable\"\n [expansionTemplate]=\"expansionTemplate\"\n (expansionChange)=\"expansionRow($event)\"\n [length]=\"totalElements\"\n [loading]=\"isLoading\"\n [pageOnFront]=\"false\"\n [pageIndex]=\"pageNumber - 1\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"\n [showPaginator]=\"showPaginator\"\n (page)=\"getNextPage($event)\">\n</mtx-grid>\n","\n\n\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatSelectModule } from '@angular/material/select';\nimport { TaonTableComponent } from './taon-table.component';\nimport { MtxGridModule } from '@ng-matero/extensions/grid';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatInputModule } from '@angular/material/input';\nimport { StaticColumnsModule } from 'static-columns/websql';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButton, MatButtonModule } from '@angular/material/button';\n\n@NgModule({\n imports: [\n CommonModule,\n MatSelectModule,\n MtxGridModule,\n MatFormFieldModule,\n MatInputModule,\n StaticColumnsModule,\n MatIconModule,\n MatButtonModule,\n FormsModule,\n ReactiveFormsModule,\n ],\n exports: [TaonTableComponent],\n declarations: [TaonTableComponent],\n})\nexport class TaonTableModule {}\n\n ;({}); // @--end-of-file-for-module=taon lib/ui/taon-table/taon-table.module.ts","\n\n\nexport * from './taon-table.component';\n\n\nexport * from './taon-table.module';\n\n ;({}); // @--end-of-file-for-module=taon lib/ui/taon-table/index.ts","\n\n\nimport { ChangeDetectorRef, Component, EventEmitter, HostListener, Injector, Input, OnInit, Output, ViewChild, inject, } from '@angular/core';/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n\nimport { Helpers, _ } from 'tnp-core/websql';\nimport { TaonAdminService } from './taon-admin.service';\nimport { Stor } from 'taon-storage/websql';\nimport { CdkDrag, CdkDragEnd, CdkDragMove, CdkDragRelease, Point, } from '@angular/cdk/drag-drop';/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n\nimport { BreakpointsService } from 'static-columns/websql';\nimport { Subject, takeUntil, tap } from 'rxjs';\n\nimport { CommonModule } from '@angular/common';\nimport { TaonFullMaterialModule } from '../taon-full-material.module';\nimport { StaticColumnsModule } from 'static-columns/websql';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NgScrollbarModule } from 'ngx-scrollbar';\nimport { TaonProgressBarModule } from '../taon-progress-bar';\nimport { TaonNotificationsModule } from '../taon-notifications';\nimport { TaonSessionPasscodeComponent } from '../taon-session-passcode';\n\n\n\ndeclare const ENV: any;\n@Component({\n\n selector: 'taon-admin-mode-configuration',\n templateUrl: './taon-admin-mode-configuration.component.html',\n styleUrls: ['./taon-admin-mode-configuration.component.scss'],\n standalone: true,\n imports: [\n CommonModule,\n StaticColumnsModule,\n FormsModule,\n NgScrollbarModule,\n TaonProgressBarModule,\n TaonNotificationsModule,\n TaonFullMaterialModule, // TODO import only partial things\n\n TaonSessionPasscodeComponent,\n ],\n\n})\nexport class TaonAdminModeConfigurationComponent implements OnInit {\n\n $destroy = new Subject();\n public readonly cdr = inject(ChangeDetectorRef);\n public readonly taonAdminService = inject(TaonAdminService);\n public readonly isDesktop: boolean;\n public isWebSQLMode: boolean = Helpers.isWebSQL;\n public hideTaonToolsInProduction: boolean =\n ENV.hideTaonToolsInProduction && ENV.angularProd;\n public isIframe: boolean = window.location !== window.parent.location;\n public height: number = 100;\n public openedOnce = false;\n public reloading: boolean = false;\n public showPasscode: boolean =\n _.isString(ENV.passcode) || _.isObject(ENV.passcode);\n public passcode: string = _.isString(ENV.passcode)\n ? ENV.passcode\n : _.isObject(ENV.passcode)\n ? ENV.passcode.code\n : '';\n public message: string = _.isObject(ENV.passcode)\n ? ENV.passcode.message\n : void 0;\n\n // @ts-ignore\n @(Stor.property.in.localstorage\n .for(TaonAdminModeConfigurationComponent)\n .withDefaultValue(0))\n dragPositionX: number;\n\n // @ts-ignore\n @(Stor.property.in.localstorage\n .for(TaonAdminModeConfigurationComponent)\n .withDefaultValue(0))\n dragPositionY: number;\n\n dragPositionZero = { x: 0, y: 0 } as Point;\n dragPosition: Point;\n\n // @ts-ignore\n @(Stor.property.in.localstorage\n .for(TaonAdminModeConfigurationComponent)\n .withDefaultValue(0))\n selectedIndex: number;\n\n @ViewChild('tabGroup') tabGroup;\n\n // @ts-ignore\n @(Stor.property.in.localstorage\n .for(TaonAdminModeConfigurationComponent)\n .withDefaultValue(false))\n wasOpenDraggablePopup: boolean;\n\n @Output() taonAdminModeConfigurationDataChanged = new EventEmitter();\n @Input() taonAdminModeConfigurationData: any = {};\n public get opened() {\n return !this.isIframe && this.admin.adminPanelIsOpen;\n }\n public set opened(v) {\n if (v && !this.openedOnce) {\n this.openedOnce = true;\n }\n if (this.wasOpenDraggablePopup) {\n this.wasOpenDraggablePopup = false;\n this.admin.draggablePopupMode = true;\n }\n this.admin.adminPanelIsOpen = v;\n }\n\n\n\n constructor(\n private breakpointsService: BreakpointsService,\n public admin: TaonAdminService,\n ) {\n this.breakpointsService\n .listenTo()\n .pipe(takeUntil(this.$destroy))\n .subscribe(breakpoint => {\n // @ts-ignore\n this.isDesktop = breakpoint === 'desktop';\n });\n }\n\n\n\n async ngOnInit() {\n await Stor.awaitPendingOperatios();\n\n\n\n this.dragPosition = { x: this.dragPositionX, y: this.dragPositionY };\n this.openedOnce = this.opened;\n\n\n\n\n\n }\n\n ngAfterViewInit(): void {\n //Called after ngAfterContentInit when the component's view has been initialized. Applies to components only.\n //Add 'implements AfterViewInit' to the class.\n setTimeout(() => {\n this.height = window.innerHeight;\n\n\n if (this.admin.draggablePopupMode) {\n this.reloadTabs();\n }\n\n\n\n\n\n });\n }\n\n ngOnDestroy(): void {\n this.$destroy.next(void 0);\n this.$destroy.complete();\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event: Event) {\n this.height = window.innerHeight;\n }\n\n\n\n\n async reloadTabs(): Promise<void> {\n return new Promise<void>(resolve => {\n this.reloading = true;\n setTimeout(() => {\n this.reloading = false;\n console.log('reloading done');\n resolve();\n });\n });\n }\n\n async toogle() {\n\n this.opened = !this.opened;\n }\n\n async toogleFullScreen() {\n this.admin.draggablePopupMode = true;\n this.admin.draggablePopupModeFullScreen =\n !this.admin.draggablePopupModeFullScreen;\n this.resetDrag();\n }\n\n resetDrag() {\n this.dragPositionX = 0;\n this.dragPositionY = 0;\n this.dragPosition = { x: this.dragPositionX, y: this.dragPositionY };\n }\n\n moved(c: CdkDragEnd) {\n this.dragPositionX += c.distance.x;\n this.dragPositionY += c.distance.y;\n }\n\n scrollTabs(event) {\n return;\n\n\n\n\n\n\n\n\n\n\n }\n\n\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.ts","<!-- #region basic global components -->\n<taon-session-passcode\n *ngIf=\"showPasscode\"\n [passcode]=\"passcode\"\n [message]=\"message\" />\n<!-- <taon-progress-bar [isDesktop]=\"isDesktop\"></taon-progress-bar> -->\n<!-- <taon-notifications></taon-notifications> -->\n<button\n mat-fab\n class=\"fab-button\"\n color=\"accent\"\n aria-label=\"Taon Admin Mode\"\n *ngIf=\"\n !admin.draggablePopupMode &&\n isDesktop &&\n !isIframe &&\n !hideTaonToolsInProduction\n \"\n (click)=\"toogle()\">\n <mat-icon>build</mat-icon>\n</button>\n<!-- #endregion -->\n\n<!-- #region small hidden button -->\n<!-- <button class=\"admin-show-button\"\n *ngIf=\"!admin.draggablePopupMode && isDesktop\"\n (click)=\"toogle()\"> Admin </button> -->\n<!-- #endregion -->\n\n<ng-template #contentNoScroll>\n <ng-content> </ng-content>\n</ng-template>\n\n<ng-template #content>\n <ng-scrollbar>\n <ng-container [ngTemplateOutlet]=\"contentNoScroll\"></ng-container>\n </ng-scrollbar>\n</ng-template>\n\n<!-- #region admin tabs -->\n<ng-template #adminTabs>\n <!-- #region admin tabs / header -->\n <div class=\"taon-header-admin-wrapper\">\n <columns-container\n class=\"taon-header-admin\"\n [ngClass]=\"{ 'draggable-column': admin.draggablePopupMode }\">\n <column\n width=\"200\"\n class=\"logo-header\">\n <img\n *ngIf=\"openedOnce\"\n src=\"assets/assets-for/taon/shared/logo-header-admin-mode.png\" />\n </column>\n\n <column grow>\n <!-- <span>Super Admin Mode</span> -->\n </column>\n\n <column\n width=\"40\"\n *ngIf=\"\n !admin.draggablePopupModeFullScreen && !admin.draggablePopupMode\n \">\n <button\n mat-icon-button\n *ngIf=\"admin.draggablePopupMode\"\n (click)=\"\n admin.draggablePopupMode = false;\n opened = false;\n wasOpenDraggablePopup = true\n \"\n class=\"admin-close-button\">\n <mat-icon>close </mat-icon>\n </button>\n\n <button\n mat-icon-button\n *ngIf=\"!admin.draggablePopupMode\"\n (click)=\"toogle()\"\n class=\"admin-close-button\">\n <mat-icon>close</mat-icon>\n </button>\n </column>\n\n <column width=\"40\">\n <button\n mat-icon-button\n *ngIf=\"!admin.draggablePopupModeFullScreen\"\n class=\"admin-close-button\"\n (click)=\"toogleFullScreen()\">\n <mat-icon>fullscreen</mat-icon>\n </button>\n <button\n mat-icon-button\n *ngIf=\"admin.draggablePopupModeFullScreen\"\n class=\"admin-close-button\"\n (click)=\"toogleFullScreen()\">\n <mat-icon>close_fullscreen</mat-icon>\n </button>\n </column>\n\n <column\n width=\"40\"\n *ngIf=\"!admin.draggablePopupModeFullScreen\">\n <button\n mat-icon-button\n *ngIf=\"!admin.draggablePopupMode\"\n (click)=\"admin.draggablePopupMode = true\"\n class=\"admin-close-button\">\n <mat-icon>launch</mat-icon>\n </button>\n\n <button\n mat-icon-button\n *ngIf=\"admin.draggablePopupMode\"\n (click)=\"admin.draggablePopupMode = false; resetDrag()\"\n class=\"admin-close-button\">\n <mat-icon style=\"transform: rotate(180deg)\">login</mat-icon>\n </button>\n </column>\n </columns-container>\n </div>\n <!-- #endregion -->\n\n <columns-container\n [ngClass]=\"{ 'draggable-column': admin.draggablePopupMode }\">\n <column grow>\n <mat-tab-group\n dynamicHeight\n (wheel)=\"scrollTabs($event)\"\n #tabGroup\n [selectedIndex]=\"selectedIndex\"\n (selectedIndexChange)=\"selectedIndex = $event\">\n <mat-tab label=\"DB/Cache\">\n <section>\n <mat-card>\n <mat-card-header>\n <mat-card-subtitle>WEBSQL MODE</mat-card-subtitle>\n </mat-card-header>\n <mat-card-content>\n <mat-checkbox\n [disabled]=\"!isWebSQLMode\"\n [ngModel]=\"admin.keepWebsqlDbDataAfterReload\"\n (change)=\"\n admin.setKeepWebsqlDbDataAfterReload($event.checked)\n \">\n Don't remove data when reloading\n </mat-checkbox>\n </mat-card-content>\n </mat-card>\n </section>\n <br />\n <taon-db-admin />\n </mat-tab>\n </mat-tab-group>\n </column>\n </columns-container>\n</ng-template>\n<!-- #endregion -->\n\n<!-- #region small/mobile draggable popup windows -->\n<div\n class=\"draggable-popup-mode-window\"\n *ngIf=\"\n admin.draggablePopupMode && !admin.draggablePopupModeFullScreen && !isIframe\n \"\n cdkDrag\n [cdkDragFreeDragPosition]=\"dragPosition\"\n (cdkDragEnded)=\"moved($event)\">\n <ng-scrollbar>\n <ng-container [ngTemplateOutlet]=\"adminTabs\"></ng-container>\n </ng-scrollbar>\n</div>\n<!-- #endregion -->\n\n<!-- #region fullscreen draggable popup window -->\n<div\n class=\"draggable-popup-mode-window-full\"\n *ngIf=\"\n admin.draggablePopupMode &&\n admin.draggablePopupModeFullScreen &&\n !isIframe &&\n !reloading\n \"\n cdkDrag\n [cdkDragFreeDragPosition]=\"dragPositionZero\">\n <ng-container [ngTemplateOutlet]=\"adminTabs\"></ng-container>\n</div>\n<!-- #endregion -->\n\n<!-- #region content when not in draggable (or fullscreen draggable) popup -->\n<div\n [style.height.px]=\"height\"\n *ngIf=\"\n (isIframe ||\n !isDesktop ||\n admin.draggablePopupMode ||\n admin.draggablePopupModeFullScreen) &&\n !reloading\n \"\n style=\"width: 100%; display: block\"\n class=\"content\">\n <ng-container\n [ngTemplateOutlet]=\"\n admin.scrollableEnabled ? content : contentNoScroll\n \"></ng-container>\n</div>\n<!-- #endregion -->\n\n<!-- #region draggable popup window -->\n<mat-drawer-container\n *ngIf=\"!admin.draggablePopupMode && isDesktop && !isIframe\"\n class=\"example-container\"\n [style.height.px]=\"height\"\n style=\"background-color: transparent\"\n (backdropClick)=\"opened = false\"\n [hasBackdrop]=\"false\">\n <mat-drawer\n #drawer\n style=\"width: 580px\"\n [opened]=\"opened\"\n [mode]=\"'side'\">\n <ng-container [ngTemplateOutlet]=\"adminTabs\"></ng-container>\n </mat-drawer>\n <mat-drawer-content style=\"overflow: hidden\">\n <ng-container\n *ngIf=\"!admin.draggablePopupMode && !reloading\"\n [ngTemplateOutlet]=\"\n admin.scrollableEnabled ? content : contentNoScroll\n \"></ng-container>\n </mat-drawer-content>\n</mat-drawer-container>\n<!-- #endregion -->\n","\n\n\nexport * from './taon-admin-mode-configuration.component';\n\n\n ;({}); // @--end-of-file-for-module=taon lib/ui/taon-admin-mode-configuration/index.ts","\n\n\nexport * from './directives';\nexport * from './taon-full-material.module';\nexport * from './taon-github-fork-me-corner';\nexport * from './taon-github-fork-me-corner';\nexport * from './taon-notifications';\nexport * from './taon-session-passcode';\nexport * from './taon-progress-bar';\nexport * from './taon-table';\nexport * from './taon-admin-mode-configuration';\n\n\n ;({}); // @--end-of-file-for-module=taon lib/ui/index.ts","\n\nexport type TaonEntityKeysToOmit =\n | 'ctrl'\n | 'clone'\n | '__endpoint_context__'\n | 'inject'\n | '_';\n\n ;({}); // @--end-of-file-for-module=taon lib/constants.ts","\n\nimport 'reflect-metadata';\nimport * as http from './decorators/http/http-decorators';\nimport * as base from './base-classes/base';\nimport * as controllerDecorator from './decorators/classes/controller-decorator';\nimport * as entityDecorator from './decorators/classes/entity-decorator';\nimport * as providerDecorator from './decorators/classes/provider-decorator';\nimport * as repositoryDecorator from './decorators/classes/repository-decorator';\nimport * as subscriberDecorator from './decorators/classes/subscriber-decorator';\nimport * as migrationDecorator from './decorators/classes/migration-decorator';\nimport * as createContextFn from './create-context';\nimport * as orm from './orm';\nimport * as models from './models';\nimport * as coreHelpers from 'tnp-core/websql';\nimport * as injectFn from './inject';\nimport * as endpointContext from './endpoint-context';\nimport * as allSymbols from './symbols';\nimport * as getResponse from './get-response-value';\n\nimport { NgZone } from '@angular/core';\nexport * from './ui';\n\n\nexport { BaseRepository } from './base-classes/base-repository';\nexport { BaseController } from './base-classes/base-controller';\nexport { BaseProvider } from './base-classes/base-provider';\nexport { BaseEntity } from './base-classes/base-entity';\nexport { BaseContext } from './base-classes/base-context';\nexport { BaseMigration } from './base-classes/base-migration';\nexport { createContext } from './create-context';\nexport { inject } from './inject';\nexport { Models } from './models';\nexport * from './constants';\nexport { ClassHelpers } from './helpers/class-helpers';\n\n\nexport namespace Taon {\n export import Response = models.Models.Http.Response;\n export import Http = http.Http;\n export import Base = base.Base;\n export import Orm = orm.Orm;\n export import StartParams = models.Models.StartParams;\n export const getResponseValue = getResponse.getResponseValue;\n\n\n export import Controller = controllerDecorator.TaonController;\n export import Entity = entityDecorator.TaonEntity;\n export import Provider = providerDecorator.TaonProvider;\n export import Repository = repositoryDecorator.TaonRepository;\n export import Subscriber = subscriberDecorator.TaonSubscriber;\n export import Migration = migrationDecorator.TaonMigration;\n\n\n export const isBrowser = coreHelpers.Helpers.isBrowser;\n export const isNode = coreHelpers.Helpers.isNode;\n export const isWebSQL = coreHelpers.Helpers.isWebSQL;\n export const isElectron = coreHelpers.Helpers.isElectron;\n\n export const createContext = createContextFn.createContext;\n\n export const inject = injectFn.inject;\n\n\n export const initNgZone = (ngZone: NgZone) => {\n endpointContext.EndpointContext.initNgZone(ngZone);\n };\n\n\n export const symbols = allSymbols.Symbols;\n\n /**\n * @deprecated\n * use createContext instead\n */\n export const init = async (options: {\n host: string;\n entities: Function[];\n controllers: Function[];\n }) => {\n const BaseContext = (await import('./base-classes/base-context'))\n .BaseContext;\n const context = createContext(() => ({\n contextName: 'default',\n host: options.host,\n contexts: { BaseContext },\n database: true,\n entities: Array.from(options.entities) as any,\n controllers: Array.from(options.controllers) as any,\n }));\n\n await context.initialize();\n return context;\n };\n}\n\n ;({}); // @--end-of-file-for-module=taon lib/index.ts","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["_","ModelsNg2Rest","methods.GET","methods.POST","methods.PUT","methods.DELETE","methods.PATCH","methods.HEAD","Models","params.Query","params.Path","params.Body","params.Cookie","params.Header","EntityDecorator","ENV","TypeormEntity","controller.BaseController","crudController.BaseCrudController","entity.BaseEntity","abstractEntity.BaseAbstractEntity","provider.BaseProvider","baseClass.BaseClass","repository.BaseRepository","baseSubscriberEntity.BaseSubscriberForEntity","baseMigration.BaseMigration","baseContext.BaseContext","angularInject","log","i1","i1.TaonNotificationsService","inject","i2","i3","i5","i2.TaonAdminService","i4","http.Http","base.Base","orm.Orm","getResponse.getResponseValue","controllerDecorator.TaonController","entityDecorator.TaonEntity","providerDecorator.TaonProvider","repositoryDecorator.TaonRepository","subscriberDecorator.TaonSubscriber","migrationDecorator.TaonMigration","createContextFn.createContext","injectFn.inject","endpointContext.EndpointContext","allSymbols.Symbols"],"mappings":"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"}
|