@rockster/core 0.0.2 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/access/access.module.d.ts +11 -0
- package/access/access.module.js +56 -0
- package/access/access.module.js.map +1 -0
- package/access/constants.d.ts +2 -0
- package/access/constants.js +6 -0
- package/access/constants.js.map +1 -0
- package/access/controllers/controllers.d.ts +7 -0
- package/access/controllers/controllers.js +18 -0
- package/access/controllers/controllers.js.map +1 -0
- package/access/controllers/scope-access-profile.controller.d.ts +17 -0
- package/access/controllers/scope-access-profile.controller.js +111 -0
- package/access/controllers/scope-access-profile.controller.js.map +1 -0
- package/access/controllers/scope-group-user.controller.d.ts +20 -0
- package/access/controllers/scope-group-user.controller.js +132 -0
- package/access/controllers/scope-group-user.controller.js.map +1 -0
- package/access/controllers/scope-group.controller.d.ts +22 -0
- package/access/controllers/scope-group.controller.js +177 -0
- package/access/controllers/scope-group.controller.js.map +1 -0
- package/access/controllers/scope-key.controller.d.ts +7 -0
- package/access/controllers/scope-key.controller.js +45 -0
- package/access/controllers/scope-key.controller.js.map +1 -0
- package/access/controllers/scope-owner.controller.d.ts +9 -0
- package/access/controllers/scope-owner.controller.js +80 -0
- package/access/controllers/scope-owner.controller.js.map +1 -0
- package/access/controllers/scope-user.controller.d.ts +14 -0
- package/access/controllers/scope-user.controller.js +109 -0
- package/access/controllers/scope-user.controller.js.map +1 -0
- package/access/decorators/context-params.decorator.d.ts +2 -0
- package/access/decorators/context-params.decorator.js +13 -0
- package/access/decorators/context-params.decorator.js.map +1 -0
- package/access/decorators/index.d.ts +2 -0
- package/access/decorators/index.js +19 -0
- package/access/decorators/index.js.map +1 -0
- package/access/decorators/scope-context-id-resolver.decorator.d.ts +10 -0
- package/access/decorators/scope-context-id-resolver.decorator.js +22 -0
- package/access/decorators/scope-context-id-resolver.decorator.js.map +1 -0
- package/access/entities/entities.d.ts +8 -0
- package/access/entities/entities.js +22 -0
- package/access/entities/entities.js.map +1 -0
- package/access/entities/index.d.ts +7 -0
- package/access/entities/index.js +24 -0
- package/access/entities/index.js.map +1 -0
- package/access/entities/scope-access-profile-key.d.ts +6 -0
- package/access/entities/scope-access-profile-key.js +40 -0
- package/access/entities/scope-access-profile-key.js.map +1 -0
- package/access/entities/scope-access-profile.d.ts +6 -0
- package/access/entities/scope-access-profile.js +37 -0
- package/access/entities/scope-access-profile.js.map +1 -0
- package/access/entities/scope-access.d.ts +9 -0
- package/access/entities/scope-access.js +58 -0
- package/access/entities/scope-access.js.map +1 -0
- package/access/entities/scope-group-user.d.ts +7 -0
- package/access/entities/scope-group-user.js +47 -0
- package/access/entities/scope-group-user.js.map +1 -0
- package/access/entities/scope-group.d.ts +12 -0
- package/access/entities/scope-group.js +72 -0
- package/access/entities/scope-group.js.map +1 -0
- package/access/entities/scope-key.d.ts +5 -0
- package/access/entities/scope-key.js +35 -0
- package/access/entities/scope-key.js.map +1 -0
- package/access/entities/scope-owner.d.ts +7 -0
- package/access/entities/scope-owner.js +45 -0
- package/access/entities/scope-owner.js.map +1 -0
- package/access/env.d.ts +10 -0
- package/access/env.js +10 -0
- package/access/env.js.map +1 -0
- package/access/functions/assert-context-admin-access.d.ts +15 -0
- package/access/functions/assert-context-admin-access.js +62 -0
- package/access/functions/assert-context-admin-access.js.map +1 -0
- package/access/functions/assert-master-or-owner.d.ts +9 -0
- package/access/functions/assert-master-or-owner.js +40 -0
- package/access/functions/assert-master-or-owner.js.map +1 -0
- package/access/functions/assert-scope-action-access.d.ts +32 -0
- package/access/functions/assert-scope-action-access.js +189 -0
- package/access/functions/assert-scope-action-access.js.map +1 -0
- package/access/functions/build-scope-resolver-initial-data.d.ts +4 -0
- package/access/functions/build-scope-resolver-initial-data.js +17 -0
- package/access/functions/build-scope-resolver-initial-data.js.map +1 -0
- package/access/functions/describe-action-scope.d.ts +9 -0
- package/access/functions/describe-action-scope.js +27 -0
- package/access/functions/describe-action-scope.js.map +1 -0
- package/access/functions/get-context-id-service.d.ts +1 -0
- package/access/functions/get-context-id-service.js +8 -0
- package/access/functions/get-context-id-service.js.map +1 -0
- package/access/functions/get-is-owner.d.ts +1 -0
- package/access/functions/get-is-owner.js +8 -0
- package/access/functions/get-is-owner.js.map +1 -0
- package/access/functions/get-user-keys.d.ts +2 -0
- package/access/functions/get-user-keys.js +10 -0
- package/access/functions/get-user-keys.js.map +1 -0
- package/access/functions/index.d.ts +8 -0
- package/access/functions/index.js +25 -0
- package/access/functions/index.js.map +1 -0
- package/access/functions/init-scope-service-executors.d.ts +3 -0
- package/access/functions/init-scope-service-executors.js +38 -0
- package/access/functions/init-scope-service-executors.js.map +1 -0
- package/access/functions/normalize-scope-keys.d.ts +4 -0
- package/access/functions/normalize-scope-keys.js +17 -0
- package/access/functions/normalize-scope-keys.js.map +1 -0
- package/access/functions/register-scope.d.ts +19 -0
- package/access/functions/register-scope.js +94 -0
- package/access/functions/register-scope.js.map +1 -0
- package/access/functions/resolve-scope-context-id.d.ts +9 -0
- package/access/functions/resolve-scope-context-id.js +71 -0
- package/access/functions/resolve-scope-context-id.js.map +1 -0
- package/access/functions/warn-if-public.d.ts +12 -0
- package/access/functions/warn-if-public.js +20 -0
- package/access/functions/warn-if-public.js.map +1 -0
- package/access/index.d.ts +7 -0
- package/access/index.js +24 -0
- package/access/index.js.map +1 -0
- package/access/interfaces/index.d.ts +3 -0
- package/access/interfaces/index.js +20 -0
- package/access/interfaces/index.js.map +1 -0
- package/access/interfaces/resolve-scope-context-id.d.ts +21 -0
- package/access/interfaces/resolve-scope-context-id.js +3 -0
- package/access/interfaces/resolve-scope-context-id.js.map +1 -0
- package/access/interfaces/scope-service-registry.d.ts +21 -0
- package/access/interfaces/scope-service-registry.js +3 -0
- package/access/interfaces/scope-service-registry.js.map +1 -0
- package/access/interfaces/scope-service.d.ts +11 -0
- package/{database/interfaces/protector.js → access/interfaces/scope-service.js} +1 -1
- package/access/interfaces/scope-service.js.map +1 -0
- package/access/models/scope-access-profile-keys-update.d.ts +5 -0
- package/access/models/scope-access-profile-keys-update.js +27 -0
- package/access/models/scope-access-profile-keys-update.js.map +1 -0
- package/access/models/scope-context.d.ts +4 -0
- package/access/models/scope-context.js +27 -0
- package/access/models/scope-context.js.map +1 -0
- package/access/models/scope-group-apply-access-profile.d.ts +6 -0
- package/access/models/scope-group-apply-access-profile.js +32 -0
- package/access/models/scope-group-apply-access-profile.js.map +1 -0
- package/access/models/scope-keys-update.d.ts +7 -0
- package/access/models/scope-keys-update.js +38 -0
- package/access/models/scope-keys-update.js.map +1 -0
- package/access/models/scope-owner.d.ts +5 -0
- package/access/models/scope-owner.js +32 -0
- package/access/models/scope-owner.js.map +1 -0
- package/access/models/scope-user-mapped.d.ts +9 -0
- package/access/models/scope-user-mapped.js +48 -0
- package/access/models/scope-user-mapped.js.map +1 -0
- package/access/models/scope-user.d.ts +9 -0
- package/access/models/scope-user.js +51 -0
- package/access/models/scope-user.js.map +1 -0
- package/access/queries/scope-access-profile.query.d.ts +1 -0
- package/access/queries/scope-access-profile.query.js +10 -0
- package/access/queries/scope-access-profile.query.js.map +1 -0
- package/access/queries/scope-group-user.query.d.ts +1 -0
- package/access/queries/scope-group-user.query.js +26 -0
- package/access/queries/scope-group-user.query.js.map +1 -0
- package/access/queries/scope-group.query.d.ts +1 -0
- package/access/queries/scope-group.query.js +19 -0
- package/access/queries/scope-group.query.js.map +1 -0
- package/access/services/index.d.ts +7 -0
- package/access/services/index.js +24 -0
- package/access/services/index.js.map +1 -0
- package/access/services/scope-access-profile.service.d.ts +13 -0
- package/access/services/scope-access-profile.service.js +75 -0
- package/access/services/scope-access-profile.service.js.map +1 -0
- package/access/services/scope-access.service.d.ts +11 -0
- package/access/services/scope-access.service.js +89 -0
- package/access/services/scope-access.service.js.map +1 -0
- package/access/services/scope-group-user.service.d.ts +8 -0
- package/access/services/scope-group-user.service.js +49 -0
- package/access/services/scope-group-user.service.js.map +1 -0
- package/access/services/scope-group.service.d.ts +17 -0
- package/access/services/scope-group.service.js +75 -0
- package/access/services/scope-group.service.js.map +1 -0
- package/access/services/scope-key.service.d.ts +9 -0
- package/access/services/scope-key.service.js +52 -0
- package/access/services/scope-key.service.js.map +1 -0
- package/access/services/scope-owner.service.d.ts +10 -0
- package/access/services/scope-owner.service.js +60 -0
- package/access/services/scope-owner.service.js.map +1 -0
- package/access/services/scope-service.d.ts +10 -0
- package/access/services/scope-service.js +52 -0
- package/access/services/scope-service.js.map +1 -0
- package/command/functions/execute-post.js +5 -7
- package/command/functions/execute-post.js.map +1 -1
- package/command/services/post-action-builder.js +21 -17
- package/command/services/post-action-builder.js.map +1 -1
- package/command/services/remove-action-builder.js +32 -22
- package/command/services/remove-action-builder.js.map +1 -1
- package/common/entities/base-entity.js +2 -0
- package/common/entities/base-entity.js.map +1 -1
- package/common/interfaces/enum/object-type.d.ts +2 -1
- package/common/interfaces/enum/object-type.js +1 -0
- package/common/interfaces/enum/object-type.js.map +1 -1
- package/controllers/constants/controller-transaction.d.ts +2 -0
- package/controllers/constants/controller-transaction.js +6 -0
- package/controllers/constants/controller-transaction.js.map +1 -0
- package/controllers/controller.controller.d.ts +1 -1
- package/controllers/controller.controller.js +4 -4
- package/controllers/controller.controller.js.map +1 -1
- package/controllers/decorators/controller.decorator.js +8 -0
- package/controllers/decorators/controller.decorator.js.map +1 -1
- package/controllers/decorators/index.d.ts +1 -0
- package/controllers/decorators/index.js +1 -0
- package/controllers/decorators/index.js.map +1 -1
- package/controllers/decorators/transaction.decorator.d.ts +7 -0
- package/controllers/decorators/transaction.decorator.js +23 -0
- package/controllers/decorators/transaction.decorator.js.map +1 -0
- package/controllers/interfaces/controller-object.d.ts +1 -0
- package/controllers/interfaces/controller-options.d.ts +1 -0
- package/controllers/interfaces/controller-property.d.ts +9 -0
- package/controllers/services/default-action-builder.js +14 -0
- package/controllers/services/default-action-builder.js.map +1 -1
- package/controllers/services/restful-action-builder.js +25 -1
- package/controllers/services/restful-action-builder.js.map +1 -1
- package/core/contexts/request-context.d.ts +5 -0
- package/core/contexts/request-context.js +6 -0
- package/core/contexts/request-context.js.map +1 -0
- package/core/core.controller.d.ts +1 -0
- package/core/core.controller.js +15 -2
- package/core/core.controller.js.map +1 -1
- package/core/functions/create-interceptor.js +2 -2
- package/core/functions/create-interceptor.js.map +1 -1
- package/core/functions/resolve-action-transactional.d.ts +3 -0
- package/core/functions/resolve-action-transactional.js +10 -0
- package/core/functions/resolve-action-transactional.js.map +1 -0
- package/core/interfaces/action-def.d.ts +2 -5
- package/core/interfaces/action-docs.d.ts +15 -0
- package/core/interfaces/action-handle.d.ts +5 -0
- package/core/interfaces/action-handle.js +3 -0
- package/core/interfaces/action-handle.js.map +1 -0
- package/core/interfaces/core-options.d.ts +1 -0
- package/core/interfaces/interceptor.d.ts +1 -1
- package/core/interfaces/object.d.ts +3 -2
- package/core/interfaces/request-context.d.ts +7 -2
- package/core/services/request-executor.d.ts +8 -0
- package/core/services/request-executor.js +88 -0
- package/core/services/request-executor.js.map +1 -1
- package/core/services/request-router.js +5 -4
- package/core/services/request-router.js.map +1 -1
- package/database/database.controller.d.ts +1 -3
- package/database/database.controller.js +1 -5
- package/database/database.controller.js.map +1 -1
- package/database/decorators/entity.decorator.d.ts +3 -1
- package/database/decorators/entity.decorator.js +14 -5
- package/database/decorators/entity.decorator.js.map +1 -1
- package/database/decorators/external-column.decorator.d.ts +17 -0
- package/database/decorators/external-column.decorator.js +30 -0
- package/database/decorators/external-column.decorator.js.map +1 -0
- package/database/decorators/index.d.ts +1 -0
- package/database/decorators/index.js +1 -0
- package/database/decorators/index.js.map +1 -1
- package/database/decorators/protect-entity.decorator.d.ts +1 -0
- package/database/decorators/protect-entity.decorator.js +2 -3
- package/database/decorators/protect-entity.decorator.js.map +1 -1
- package/database/decorators/protected-entity.decorator.d.ts +1 -0
- package/database/decorators/protected-entity.decorator.js +2 -16
- package/database/decorators/protected-entity.decorator.js.map +1 -1
- package/database/decorators/relation.decorator.d.ts +2 -2
- package/database/decorators/relation.decorator.js.map +1 -1
- package/database/extensions/select-query-builder.d.ts +1 -5
- package/database/extensions/select-query-builder.js.map +1 -1
- package/database/functions/find-relation.d.ts +2 -1
- package/database/functions/find-relation.js +3 -3
- package/database/functions/find-relation.js.map +1 -1
- package/database/functions/generate-entity-id.d.ts +2 -0
- package/database/functions/{generate-id.js → generate-entity-id.js} +3 -3
- package/database/functions/generate-entity-id.js.map +1 -0
- package/database/functions/get-relations.d.ts +1 -1
- package/database/functions/inject-repository-handle.js +4 -3
- package/database/functions/inject-repository-handle.js.map +1 -1
- package/database/functions/use-transaction.d.ts +1 -0
- package/database/functions/use-transaction.js +2 -6
- package/database/functions/use-transaction.js.map +1 -1
- package/database/interfaces/entity-dto-object.d.ts +7 -0
- package/database/interfaces/entity-dto-object.js +3 -0
- package/database/interfaces/entity-dto-object.js.map +1 -0
- package/database/interfaces/entity-object.d.ts +0 -6
- package/database/interfaces/entity-property.d.ts +12 -0
- package/database/interfaces/index.d.ts +0 -1
- package/database/interfaces/index.js +0 -1
- package/database/interfaces/index.js.map +1 -1
- package/database/interfaces/path.d.ts +6 -2
- package/database/interfaces/repository.d.ts +8 -8
- package/database/interfaces/virtual-select.d.ts +4 -0
- package/database/interfaces/virtual-select.js +3 -0
- package/database/interfaces/virtual-select.js.map +1 -0
- package/database/services/repository.service.d.ts +1 -1
- package/database/services/repository.service.js +3 -6
- package/database/services/repository.service.js.map +1 -1
- package/docs/docs.module.js +3 -1
- package/docs/docs.module.js.map +1 -1
- package/docs/migrations/1747584000000-CreateDocsTables.d.ts +5 -0
- package/docs/migrations/1747584000000-CreateDocsTables.js +90 -0
- package/docs/migrations/1747584000000-CreateDocsTables.js.map +1 -0
- package/docs/migrations/migrations.d.ts +2 -0
- package/docs/migrations/migrations.js +8 -0
- package/docs/migrations/migrations.js.map +1 -0
- package/docs/queries/docs-controller-action.query.d.ts +1 -1
- package/docs/queries/docs-controller.query.d.ts +1 -1
- package/docs/queries/docs-model.query.d.ts +1 -1
- package/docs/queries/docs-model.query.js +1 -1
- package/docs/queries/docs-model.query.js.map +1 -1
- package/docs/queries/docs-version.query.d.ts +1 -1
- package/docs/services/docs-version.service.js +6 -3
- package/docs/services/docs-version.service.js.map +1 -1
- package/forms/queries/form.query.d.ts +1 -1
- package/forms/queries/property.query.d.ts +1 -1
- package/global.d.ts +2 -0
- package/global.js +2 -1
- package/global.js.map +1 -1
- package/http/http.controller.d.ts +2 -0
- package/http/http.controller.js +3 -2
- package/http/http.controller.js.map +1 -1
- package/index.d.ts +5 -2
- package/index.js +4 -7
- package/index.js.map +1 -1
- package/jobs/jobs.controller.d.ts +2 -0
- package/jobs/jobs.controller.js +22 -16
- package/jobs/jobs.controller.js.map +1 -1
- package/package.json +70 -69
- package/query/functions/add-join.js +8 -16
- package/query/functions/add-join.js.map +1 -1
- package/query/functions/collect-external-column-owners.d.ts +10 -0
- package/query/functions/collect-external-column-owners.js +100 -0
- package/query/functions/collect-external-column-owners.js.map +1 -0
- package/query/functions/create-query-builder.js +47 -28
- package/query/functions/create-query-builder.js.map +1 -1
- package/query/functions/create-query-cache-hash.d.ts +16 -0
- package/query/functions/create-query-cache-hash.js +70 -0
- package/query/functions/create-query-cache-hash.js.map +1 -0
- package/query/functions/create-query.d.ts +8 -3
- package/query/functions/create-query.js +12 -9
- package/query/functions/create-query.js.map +1 -1
- package/query/functions/describe-query-filter.js +3 -2
- package/query/functions/describe-query-filter.js.map +1 -1
- package/query/functions/execute-query.js +89 -9
- package/query/functions/execute-query.js.map +1 -1
- package/query/functions/expand-select-with-external-dependencies.d.ts +9 -0
- package/query/functions/expand-select-with-external-dependencies.js +34 -0
- package/query/functions/expand-select-with-external-dependencies.js.map +1 -0
- package/query/functions/external-column-owner-path.d.ts +5 -0
- package/query/functions/external-column-owner-path.js +18 -0
- package/query/functions/external-column-owner-path.js.map +1 -0
- package/query/functions/get-entity-object-class.d.ts +2 -0
- package/query/functions/get-entity-object-class.js +12 -0
- package/query/functions/get-entity-object-class.js.map +1 -0
- package/query/functions/get-native-select.js +3 -0
- package/query/functions/get-native-select.js.map +1 -1
- package/query/functions/load-properties.d.ts +20 -2
- package/query/functions/load-properties.js +190 -40
- package/query/functions/load-properties.js.map +1 -1
- package/query/functions/map-query-property-to-column-name.js +1 -1
- package/query/functions/map-query-property-to-column-name.js.map +1 -1
- package/query/functions/query-structure-cache.d.ts +24 -0
- package/query/functions/query-structure-cache.js +66 -0
- package/query/functions/query-structure-cache.js.map +1 -0
- package/query/interfaces/query.d.ts +44 -1
- package/query/services/query-action-builder.d.ts +4 -1
- package/query/services/query-action-builder.js +26 -12
- package/query/services/query-action-builder.js.map +1 -1
- package/remote-logs/dtos/index.d.ts +2 -0
- package/remote-logs/dtos/index.js +19 -0
- package/remote-logs/dtos/index.js.map +1 -0
- package/remote-logs/dtos/remote-log-hooks.dto.d.ts +72 -0
- package/remote-logs/dtos/remote-log-hooks.dto.js +280 -0
- package/remote-logs/dtos/remote-log-hooks.dto.js.map +1 -0
- package/remote-logs/dtos/remote-log-search.dto.d.ts +34 -0
- package/remote-logs/dtos/remote-log-search.dto.js +146 -0
- package/remote-logs/dtos/remote-log-search.dto.js.map +1 -0
- package/remote-logs/environment.d.ts +4 -0
- package/remote-logs/environment.js +5 -0
- package/remote-logs/environment.js.map +1 -0
- package/remote-logs/index.d.ts +3 -0
- package/remote-logs/index.js +20 -0
- package/remote-logs/index.js.map +1 -0
- package/remote-logs/interfaces/index.d.ts +1 -0
- package/remote-logs/interfaces/index.js +18 -0
- package/remote-logs/interfaces/index.js.map +1 -0
- package/remote-logs/interfaces/remote-logs-module-options.d.ts +8 -0
- package/remote-logs/interfaces/remote-logs-module-options.js +3 -0
- package/remote-logs/interfaces/remote-logs-module-options.js.map +1 -0
- package/remote-logs/remote-logs-hooks.controller.d.ts +60 -0
- package/remote-logs/remote-logs-hooks.controller.js +331 -0
- package/remote-logs/remote-logs-hooks.controller.js.map +1 -0
- package/remote-logs/remote-logs.controller.d.ts +8 -0
- package/remote-logs/remote-logs.controller.js +41 -0
- package/remote-logs/remote-logs.controller.js.map +1 -0
- package/remote-logs/remote-logs.module.d.ts +12 -0
- package/remote-logs/remote-logs.module.js +107 -0
- package/remote-logs/remote-logs.module.js.map +1 -0
- package/remote-logs/services/opensearch.service.d.ts +13 -0
- package/remote-logs/services/opensearch.service.js +167 -0
- package/remote-logs/services/opensearch.service.js.map +1 -0
- package/security/auth.controller.js +4 -4
- package/security/auth.controller.js.map +1 -1
- package/security/env.js.map +1 -1
- package/security/functions/add-protected.d.ts +2 -2
- package/security/functions/add-protected.js +8 -5
- package/security/functions/add-protected.js.map +1 -1
- package/security/functions/create-authentication-interceptor.d.ts +44 -0
- package/security/functions/create-authentication-interceptor.js +114 -0
- package/security/functions/create-authentication-interceptor.js.map +1 -0
- package/security/functions/find-auth-context.d.ts +1 -2
- package/security/functions/find-auth-context.js +6 -11
- package/security/functions/find-auth-context.js.map +1 -1
- package/security/index.d.ts +1 -0
- package/security/index.js +1 -0
- package/security/index.js.map +1 -1
- package/security/interfaces/authorization-schema.d.ts +3 -1
- package/security/requests/security.request.js +1 -1
- package/security/requests/security.request.js.map +1 -1
- package/security/services/authorization.service.d.ts +5 -3
- package/security/services/authorization.service.js +56 -37
- package/security/services/authorization.service.js.map +1 -1
- package/storage/services/routes.service.js +1 -1
- package/storage/services/routes.service.js.map +1 -1
- package/tasks/constants.d.ts +3 -0
- package/tasks/constants.js +2 -1
- package/tasks/constants.js.map +1 -1
- package/tasks/controllers/task.controller.d.ts +3 -2
- package/tasks/controllers/task.controller.js +11 -40
- package/tasks/controllers/task.controller.js.map +1 -1
- package/tasks/decorators/index.d.ts +1 -0
- package/tasks/decorators/index.js +1 -0
- package/tasks/decorators/index.js.map +1 -1
- package/tasks/decorators/task-payload.decorator.d.ts +1 -0
- package/tasks/decorators/task-payload.decorator.js +12 -0
- package/tasks/decorators/task-payload.decorator.js.map +1 -0
- package/tasks/decorators/task.decorator.js +6 -2
- package/tasks/decorators/task.decorator.js.map +1 -1
- package/tasks/functions/compile-all-task-post-hooks.d.ts +1 -0
- package/tasks/functions/compile-all-task-post-hooks.js +27 -0
- package/tasks/functions/compile-all-task-post-hooks.js.map +1 -0
- package/tasks/functions/compile-task-hook-handle.d.ts +6 -0
- package/tasks/functions/compile-task-hook-handle.js +67 -0
- package/tasks/functions/compile-task-hook-handle.js.map +1 -0
- package/tasks/functions/create-task-hook.d.ts +9 -0
- package/tasks/functions/create-task-hook.js +13 -0
- package/tasks/functions/create-task-hook.js.map +1 -0
- package/tasks/functions/{create-task-message-receptor.d.ts → create-task-message-post.d.ts} +1 -1
- package/tasks/functions/{create-task-message-receptor.js → create-task-message-post.js} +10 -3
- package/tasks/functions/create-task-message-post.js.map +1 -0
- package/tasks/functions/register-task-post-hook-interceptors.d.ts +3 -0
- package/tasks/functions/register-task-post-hook-interceptors.js +86 -0
- package/tasks/functions/register-task-post-hook-interceptors.js.map +1 -0
- package/tasks/functions/run-task-post-hooks.d.ts +11 -0
- package/tasks/functions/run-task-post-hooks.js +18 -0
- package/tasks/functions/run-task-post-hooks.js.map +1 -0
- package/tasks/functions/task-message-operations.d.ts +18 -0
- package/tasks/functions/task-message-operations.js +100 -0
- package/tasks/functions/task-message-operations.js.map +1 -0
- package/tasks/functions/validate-task-payload.d.ts +2 -0
- package/tasks/functions/validate-task-payload.js +19 -0
- package/tasks/functions/validate-task-payload.js.map +1 -0
- package/tasks/hook-constants.d.ts +2 -0
- package/tasks/hook-constants.js +6 -0
- package/tasks/hook-constants.js.map +1 -0
- package/tasks/index.d.ts +3 -0
- package/tasks/index.js +3 -0
- package/tasks/index.js.map +1 -1
- package/tasks/interfaces/compiled-task-post-hooks.d.ts +17 -0
- package/tasks/interfaces/compiled-task-post-hooks.js +3 -0
- package/tasks/interfaces/compiled-task-post-hooks.js.map +1 -0
- package/tasks/interfaces/index.d.ts +3 -0
- package/tasks/interfaces/index.js +3 -0
- package/tasks/interfaces/index.js.map +1 -1
- package/tasks/interfaces/task-hook.d.ts +16 -0
- package/tasks/interfaces/task-hook.js +8 -0
- package/tasks/interfaces/task-hook.js.map +1 -0
- package/tasks/interfaces/task-object.d.ts +6 -2
- package/tasks/interfaces/task-post-hook.d.ts +2 -0
- package/tasks/interfaces/task-post-hook.js +3 -0
- package/tasks/interfaces/task-post-hook.js.map +1 -0
- package/tasks/interfaces/task-post-intercept.d.ts +1 -8
- package/tasks/interfaces/task-runner.d.ts +2 -1
- package/tasks/interfaces/task-settings.d.ts +7 -0
- package/tasks/services/task-runner.service.d.ts +24 -3
- package/tasks/services/task-runner.service.js +68 -28
- package/tasks/services/task-runner.service.js.map +1 -1
- package/translations/controllers/translation.controller.js +12 -9
- package/translations/controllers/translation.controller.js.map +1 -1
- package/translations/functions/create-translation-values.js +2 -5
- package/translations/functions/create-translation-values.js.map +1 -1
- package/translations/migrations/1723760669185-CreateTranslationTables.js +3 -3
- package/translations/migrations/1723760669185-CreateTranslationTables.js.map +1 -1
- package/translations/queries/translation-config.query.d.ts +1 -1
- package/translations/queries/translation-values.query.d.ts +1 -1
- package/translations/queries/translation-values.query.js +1 -1
- package/translations/queries/translation-values.query.js.map +1 -1
- package/translations/translations.controller.d.ts +1 -1
- package/translations/translations.controller.js +4 -4
- package/translations/translations.controller.js.map +1 -1
- package/database/functions/generate-id.d.ts +0 -2
- package/database/functions/generate-id.js.map +0 -1
- package/database/functions/use-protector.d.ts +0 -2
- package/database/functions/use-protector.js +0 -11
- package/database/functions/use-protector.js.map +0 -1
- package/database/interfaces/protector.d.ts +0 -51
- package/database/interfaces/protector.js.map +0 -1
- package/database/services/protect-builder.d.ts +0 -59
- package/database/services/protect-builder.js +0 -524
- package/database/services/protect-builder.js.map +0 -1
- package/security/functions/add-protect.d.ts +0 -2
- package/security/functions/add-protect.js +0 -11
- package/security/functions/add-protect.js.map +0 -1
- package/tasks/functions/create-task-message-receptor.js.map +0 -1
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.collectExternalColumnOwners = collectExternalColumnOwners;
|
|
4
|
+
/**
|
|
5
|
+
* Strips the query root alias prefix from a select path so it matches TypeORM entity property names.
|
|
6
|
+
* e.g. `infraServer.client.name` + rootAlias `infraServer` → `client.name`
|
|
7
|
+
*/
|
|
8
|
+
function selectPathToEntitySegments(fullSelectPath, rootAlias) {
|
|
9
|
+
const prefix = `${rootAlias}.`;
|
|
10
|
+
const stripped = rootAlias && fullSelectPath.startsWith(prefix)
|
|
11
|
+
? fullSelectPath.slice(prefix.length)
|
|
12
|
+
: fullSelectPath;
|
|
13
|
+
return stripped.split(".").filter(Boolean);
|
|
14
|
+
}
|
|
15
|
+
function* walkToParents(root, pathSegments) {
|
|
16
|
+
if (pathSegments.length === 0) {
|
|
17
|
+
if (root !== null && root !== undefined && typeof root === "object") {
|
|
18
|
+
yield root;
|
|
19
|
+
}
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
const [head, ...rest] = pathSegments;
|
|
23
|
+
const next = root?.[head];
|
|
24
|
+
if (next === null || next === undefined) {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
if (Array.isArray(next)) {
|
|
28
|
+
for (const el of next) {
|
|
29
|
+
yield* walkToParents(el, rest);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
yield* walkToParents(next, rest);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
function splitParentAndProperty(entitySegments) {
|
|
37
|
+
if (entitySegments.length === 0) {
|
|
38
|
+
return { parentSegments: [], property: "" };
|
|
39
|
+
}
|
|
40
|
+
if (entitySegments.length === 1) {
|
|
41
|
+
return { parentSegments: [], property: entitySegments[0] };
|
|
42
|
+
}
|
|
43
|
+
return {
|
|
44
|
+
parentSegments: entitySegments.slice(0, -1),
|
|
45
|
+
property: entitySegments[entitySegments.length - 1],
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* For each root row from `getMany()`, finds every object that must receive an external column value.
|
|
50
|
+
* Same logical entity instance appears once in the result (Map by reference).
|
|
51
|
+
*
|
|
52
|
+
* Uses `QueryProperty.externalOwnerWalkSegments` / `externalColumnKey` from the query metadata
|
|
53
|
+
* so the anchor can be a middle segment (e.g. `person` for `user.person.id`), not only the leaf.
|
|
54
|
+
*/
|
|
55
|
+
function collectExternalColumnOwners(roots, externalSelectPaths, rootAlias, properties) {
|
|
56
|
+
const byObject = new Map();
|
|
57
|
+
const add = (obj, prop) => {
|
|
58
|
+
if (!prop || obj === null || typeof obj !== "object") {
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
let set = byObject.get(obj);
|
|
62
|
+
if (!set) {
|
|
63
|
+
set = new Set();
|
|
64
|
+
byObject.set(obj, set);
|
|
65
|
+
}
|
|
66
|
+
set.add(prop);
|
|
67
|
+
};
|
|
68
|
+
for (const root of roots) {
|
|
69
|
+
for (const fullPath of externalSelectPaths) {
|
|
70
|
+
const qp = properties[fullPath];
|
|
71
|
+
if (!qp?.isExternal) {
|
|
72
|
+
continue;
|
|
73
|
+
}
|
|
74
|
+
let ownerWalk;
|
|
75
|
+
let columnKey;
|
|
76
|
+
if (qp.externalOwnerWalkSegments !== undefined &&
|
|
77
|
+
qp.externalColumnKey !== undefined) {
|
|
78
|
+
ownerWalk = qp.externalOwnerWalkSegments;
|
|
79
|
+
columnKey = qp.externalColumnKey;
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
const segments = selectPathToEntitySegments(fullPath, rootAlias);
|
|
83
|
+
const split = splitParentAndProperty(segments);
|
|
84
|
+
ownerWalk = split.parentSegments;
|
|
85
|
+
columnKey = split.property;
|
|
86
|
+
}
|
|
87
|
+
if (!columnKey) {
|
|
88
|
+
continue;
|
|
89
|
+
}
|
|
90
|
+
for (const parent of walkToParents(root, ownerWalk)) {
|
|
91
|
+
add(parent, columnKey);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return [...byObject.entries()].map(([object, props]) => ({
|
|
96
|
+
object: object,
|
|
97
|
+
properties: [...props],
|
|
98
|
+
}));
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=collect-external-column-owners.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collect-external-column-owners.js","sourceRoot":"./","sources":["query/functions/collect-external-column-owners.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,17 +2,18 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.createQueryBuilder = void 0;
|
|
4
4
|
const use_repository_1 = require("../../database/functions/use-repository");
|
|
5
|
-
const use_protector_1 = require("../../database/functions/use-protector");
|
|
6
5
|
const add_join_1 = require("./add-join");
|
|
7
|
-
const get_column_path_1 = require("./get-column-path");
|
|
8
6
|
const get_native_select_1 = require("./get-native-select");
|
|
7
|
+
const create_query_cache_hash_1 = require("./create-query-cache-hash");
|
|
8
|
+
const query_structure_cache_1 = require("./query-structure-cache");
|
|
9
9
|
const select_query_builder_1 = require("../../database/extensions/select-query-builder");
|
|
10
10
|
const transaction_context_1 = require("../../database/contexts/transaction-context");
|
|
11
|
+
const get_entity_object_class_1 = require("./get-entity-object-class");
|
|
11
12
|
const createQueryBuilder = async (queryContent, intercept) => {
|
|
12
13
|
const object = core
|
|
13
14
|
.storage
|
|
14
15
|
.findObject(queryContent.target);
|
|
15
|
-
const RootEntity = object.rootPath.target();
|
|
16
|
+
const RootEntity = (0, get_entity_object_class_1.getEntityObjectClass)(object.rootPath.target());
|
|
16
17
|
const requestContext = transaction_context_1.transactionContextStore.getStore();
|
|
17
18
|
const entityManager = requestContext?.entityManager;
|
|
18
19
|
const repository = entityManager
|
|
@@ -22,35 +23,53 @@ const createQueryBuilder = async (queryContent, intercept) => {
|
|
|
22
23
|
if (intercept) {
|
|
23
24
|
await intercept(queryBuilder);
|
|
24
25
|
}
|
|
25
|
-
const rootProtector = (0, use_protector_1.useProtector)(RootEntity);
|
|
26
|
-
if (object.rootPath.secure && rootProtector) {
|
|
27
|
-
rootProtector.rootCondition({
|
|
28
|
-
rootAlias: object.rootPath.alias,
|
|
29
|
-
queryBuilder: queryBuilder,
|
|
30
|
-
userId: queryContent.userId,
|
|
31
|
-
contextParams: queryContent.context
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
26
|
const joins = {};
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
27
|
+
const joinHash = (0, create_query_cache_hash_1.getJoinStructureHash)(queryContent.target.name, queryContent.query.select);
|
|
28
|
+
const cachedPaths = (0, query_structure_cache_1.getCachedJoinPlan)(joinHash);
|
|
29
|
+
if (cachedPaths) {
|
|
30
|
+
for (const path of cachedPaths) {
|
|
31
|
+
(0, add_join_1.addJoin)(RootEntity, queryContent, joins, queryBuilder, path, entityManager);
|
|
32
|
+
if (path.type === "relation" || path.type === "root") {
|
|
33
|
+
(0, add_join_1.addJoin)(RootEntity, queryContent, joins, queryBuilder, path, entityManager);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
const paths = [];
|
|
39
|
+
for (const name of queryContent.query.select) {
|
|
40
|
+
const property = object.properties[name];
|
|
41
|
+
paths.push(property.path);
|
|
42
|
+
(0, add_join_1.addJoin)(RootEntity, queryContent, joins, queryBuilder, property.path, entityManager);
|
|
43
|
+
switch (property.path.type) {
|
|
44
|
+
case "relation":
|
|
45
|
+
case "root":
|
|
46
|
+
(0, add_join_1.addJoin)(RootEntity, queryContent, joins, queryBuilder, property.path, entityManager);
|
|
47
|
+
break;
|
|
48
|
+
case "embedded":
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
48
51
|
}
|
|
52
|
+
(0, query_structure_cache_1.setCachedJoinPlan)(joinHash, paths);
|
|
53
|
+
}
|
|
54
|
+
const fields = [
|
|
55
|
+
...queryContent.query.select,
|
|
56
|
+
...queryContent.query.orderBy
|
|
57
|
+
? queryContent.query.orderBy.map(order => order.property)
|
|
58
|
+
: []
|
|
59
|
+
];
|
|
60
|
+
const structureHash = (0, create_query_cache_hash_1.getQueryStructureHash)(queryContent.target.name, queryContent.query.select, queryContent.query.orderBy);
|
|
61
|
+
const cached = (0, query_structure_cache_1.getCachedNativeSelect)(structureHash);
|
|
62
|
+
if (cached) {
|
|
63
|
+
queryContent.nativeSelectAsArry = cached.asArry;
|
|
64
|
+
queryContent.nativeSelectAsMap = cached.asMap;
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
const { asArry, asMap } = (0, get_native_select_1.getNativeSelect)(queryContent.target, fields);
|
|
68
|
+
(0, query_structure_cache_1.setCachedNativeSelect)(structureHash, asArry, asMap);
|
|
69
|
+
queryContent.nativeSelectAsArry = asArry;
|
|
70
|
+
queryContent.nativeSelectAsMap = asMap;
|
|
49
71
|
}
|
|
50
|
-
const { asArry, asMap } = (0, get_native_select_1.getNativeSelect)(queryContent.target, queryContent.query.select);
|
|
51
72
|
queryContent.rootAlias = object.rootPath.alias;
|
|
52
|
-
queryContent.nativeSelectAsArry = asArry;
|
|
53
|
-
queryContent.nativeSelectAsMap = asMap;
|
|
54
73
|
return queryBuilder;
|
|
55
74
|
};
|
|
56
75
|
exports.createQueryBuilder = createQueryBuilder;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-query-builder.js","sourceRoot":"./","sources":["query/functions/create-query-builder.ts"],"names":[],"mappings":";;;AACA,4EAAwE;
|
|
1
|
+
{"version":3,"file":"create-query-builder.js","sourceRoot":"./","sources":["query/functions/create-query-builder.ts"],"names":[],"mappings":";;;AACA,4EAAwE;AAExE,yCAAqC;AACrC,2DAAsD;AACtD,uEAAwF;AACxF,mEAKiC;AAEjC,yFAAoF;AACpF,qFAAsF;AAGtF,uEAAiE;AAE1D,MAAM,kBAAkB,GAAG,KAAK,EACpC,YAAmC,EACnC,SAAuC,EACH,EAAE;IAEtC,MAAM,MAAM,GAAG,IAAI;SACf,OAAO;SACP,UAAU,CAAC,YAAY,CAAC,MAAM,CACP,CAAC;IAE5B,MAAM,UAAU,GAAG,IAAA,8CAAoB,EAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAElE,MAAM,cAAc,GAAG,6CAAuB,CAAC,QAAQ,EAAE,CAAC;IAC1D,MAAM,aAAa,GAAG,cAAc,EAAE,aAAa,CAAC;IACpD,MAAM,UAAU,GAAG,aAAa;QAC7B,CAAC,CAAC,aAAa,CAAC,aAAa,CAAC,UAAU,CAAC;QACzC,CAAC,CAAC,IAAA,8BAAa,EAAC,UAAU,CAAC,CAAC;IAE/B,MAAM,YAAY,GAAG,IAAI,yCAAkB,CAAC,UAAU,CAAC,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAElG,IAAI,SAAS,EAAE,CAAC;QACb,MAAM,SAAS,CAAC,YAA0C,CAAC,CAAC;IAC/D,CAAC;IAED,MAAM,KAAK,GAAG,EAAyB,CAAC;IACxC,MAAM,QAAQ,GAAG,IAAA,8CAAoB,EAClC,YAAY,CAAC,MAAM,CAAC,IAAI,EACxB,YAAY,CAAC,KAAK,CAAC,MAAM,CAC3B,CAAC;IACF,MAAM,WAAW,GAAG,IAAA,yCAAiB,EAAC,QAAQ,CAAC,CAAC;IAEhD,IAAI,WAAW,EAAE,CAAC;QACf,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC9B,IAAA,kBAAO,EACJ,UAAU,EACV,YAAY,EACZ,KAAK,EACL,YAAY,EACZ,IAAI,EACJ,aAAa,CACf,CAAC;YACF,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACpD,IAAA,kBAAO,EACJ,UAAU,EACV,YAAY,EACZ,KAAK,EACL,YAAY,EACZ,IAAI,EACJ,aAAa,CACf,CAAC;YACL,CAAC;QACJ,CAAC;IACJ,CAAC;SAAM,CAAC;QACL,MAAM,KAAK,GAAgB,EAAE,CAAC;QAC9B,KAAK,MAAM,IAAI,IAAI,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAC5C,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACzC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC1B,IAAA,kBAAO,EACJ,UAAU,EACV,YAAY,EACZ,KAAK,EACL,YAAY,EACZ,QAAQ,CAAC,IAAI,EACb,aAAa,CACf,CAAC;YACF,QAAQ,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC1B,KAAK,UAAU,CAAC;gBAChB,KAAK,MAAM;oBACR,IAAA,kBAAO,EACJ,UAAU,EACV,YAAY,EACZ,KAAK,EACL,YAAY,EACZ,QAAQ,CAAC,IAAI,EACb,aAAa,CACf,CAAC;oBACF,MAAM;gBACT,KAAK,UAAU;oBACZ,MAAM;YACZ,CAAC;QACJ,CAAC;QACD,IAAA,yCAAiB,EAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,MAAM,GAAG;QACZ,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM;QAC5B,GAAG,YAAY,CAAC,KAAK,CAAC,OAAO;YAC1B,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC;YACzD,CAAC,CAAC,EAAE;KACT,CAAC;IAEF,MAAM,aAAa,GAAG,IAAA,+CAAqB,EACxC,YAAY,CAAC,MAAM,CAAC,IAAI,EACxB,YAAY,CAAC,KAAK,CAAC,MAAM,EACzB,YAAY,CAAC,KAAK,CAAC,OAAO,CAC5B,CAAC;IACF,MAAM,MAAM,GAAG,IAAA,6CAAqB,EAAC,aAAa,CAAC,CAAC;IACpD,IAAI,MAAM,EAAE,CAAC;QACV,YAAY,CAAC,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC;QAChD,YAAY,CAAC,iBAAiB,GAAG,MAAM,CAAC,KAAK,CAAC;IACjD,CAAC;SAAM,CAAC;QACL,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,mCAAe,EAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACvE,IAAA,6CAAqB,EAAC,aAAa,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QACpD,YAAY,CAAC,kBAAkB,GAAG,MAAM,CAAC;QACzC,YAAY,CAAC,iBAAiB,GAAG,KAAK,CAAC;IAC1C,CAAC;IAED,YAAY,CAAC,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;IAE/C,OAAO,YAA0C,CAAC;AACrD,CAAC,CAAA;AA9GY,QAAA,kBAAkB,sBA8G9B"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Query, OrderBy } from '../interfaces/query';
|
|
2
|
+
/**
|
|
3
|
+
* Hash only the query structure (select + orderBy), not parameters (filter, take, skip).
|
|
4
|
+
* Used to cache native select resolution so the same shape reuses asArry/asMap without reprocessing.
|
|
5
|
+
* Sync, uses Node crypto – no async hasher in the hot path.
|
|
6
|
+
*/
|
|
7
|
+
export declare function getQueryStructureHash(targetName: string, select: string[], orderBy?: OrderBy[]): string;
|
|
8
|
+
/**
|
|
9
|
+
* Hash only the select list (order matters for joins). Used to cache the join plan
|
|
10
|
+
* so we reuse the list of QueryPath to apply on a fresh QB each request (no QB instance cached).
|
|
11
|
+
*/
|
|
12
|
+
export declare function getJoinStructureHash(targetName: string, select: string[]): string;
|
|
13
|
+
export declare function createQueryCacheHash<Entity>(input: {
|
|
14
|
+
target: string;
|
|
15
|
+
query: Query<Entity>;
|
|
16
|
+
}): Promise<string>;
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.getQueryStructureHash = getQueryStructureHash;
|
|
7
|
+
exports.getJoinStructureHash = getJoinStructureHash;
|
|
8
|
+
exports.createQueryCacheHash = createQueryCacheHash;
|
|
9
|
+
const crypto_1 = require("crypto");
|
|
10
|
+
const xxhash_wasm_1 = __importDefault(require("xxhash-wasm"));
|
|
11
|
+
let xxh = null;
|
|
12
|
+
async function getHasher() {
|
|
13
|
+
if (!xxh) {
|
|
14
|
+
xxh = await (0, xxhash_wasm_1.default)();
|
|
15
|
+
}
|
|
16
|
+
return xxh;
|
|
17
|
+
}
|
|
18
|
+
function stableSortObject(value) {
|
|
19
|
+
if (Array.isArray(value)) {
|
|
20
|
+
return value.map(stableSortObject);
|
|
21
|
+
}
|
|
22
|
+
if (value && typeof value === 'object') {
|
|
23
|
+
return Object.keys(value)
|
|
24
|
+
.sort()
|
|
25
|
+
.reduce((acc, key) => {
|
|
26
|
+
acc[key] = stableSortObject(value[key]);
|
|
27
|
+
return acc;
|
|
28
|
+
}, {});
|
|
29
|
+
}
|
|
30
|
+
return value;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Hash only the query structure (select + orderBy), not parameters (filter, take, skip).
|
|
34
|
+
* Used to cache native select resolution so the same shape reuses asArry/asMap without reprocessing.
|
|
35
|
+
* Sync, uses Node crypto – no async hasher in the hot path.
|
|
36
|
+
*/
|
|
37
|
+
function getQueryStructureHash(targetName, select, orderBy) {
|
|
38
|
+
const structure = {
|
|
39
|
+
t: targetName,
|
|
40
|
+
s: [...select].sort(),
|
|
41
|
+
o: (orderBy ?? []).map((o) => ({ p: o.property, d: o.direction })),
|
|
42
|
+
};
|
|
43
|
+
const serialized = JSON.stringify(structure);
|
|
44
|
+
return (0, crypto_1.createHash)('sha256').update(serialized).digest('hex');
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Hash only the select list (order matters for joins). Used to cache the join plan
|
|
48
|
+
* so we reuse the list of QueryPath to apply on a fresh QB each request (no QB instance cached).
|
|
49
|
+
*/
|
|
50
|
+
function getJoinStructureHash(targetName, select) {
|
|
51
|
+
const structure = { t: targetName, s: select };
|
|
52
|
+
return (0, crypto_1.createHash)('sha256').update(JSON.stringify(structure)).digest('hex');
|
|
53
|
+
}
|
|
54
|
+
async function createQueryCacheHash(input) {
|
|
55
|
+
const { query } = input;
|
|
56
|
+
const fingerprint = {
|
|
57
|
+
target: input.target,
|
|
58
|
+
select: [...query.select].sort(),
|
|
59
|
+
filter: query.filter ?? null,
|
|
60
|
+
orderBy: query.orderBy?.map(o => ({
|
|
61
|
+
property: o.property,
|
|
62
|
+
direction: o.direction.toLowerCase(),
|
|
63
|
+
})) ?? []
|
|
64
|
+
};
|
|
65
|
+
const normalized = stableSortObject(fingerprint);
|
|
66
|
+
const serialized = JSON.stringify(normalized);
|
|
67
|
+
const hasher = await getHasher();
|
|
68
|
+
return hasher.h64(serialized).toString(16);
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=create-query-cache-hash.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-query-cache-hash.js","sourceRoot":"./","sources":["query/functions/create-query-cache-hash.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import { DirectPath, IndirectPath, RootPath } from "../../database";
|
|
2
|
+
import { Instantiable } from "@rockster/common";
|
|
2
3
|
import { QueryActionOptions } from "../interfaces/query-action-options";
|
|
3
|
-
|
|
4
|
-
export
|
|
5
|
-
|
|
4
|
+
/** Controller decorator factory from createQuery; `.queryRequest` is the generated request class. */
|
|
5
|
+
export type QueryDecoratorFactory = ((options?: QueryActionOptions) => (target: object, propertyKey: string) => void) & {
|
|
6
|
+
queryRequest: Instantiable;
|
|
7
|
+
};
|
|
8
|
+
export declare const createQuery: <Entity>(rootPath: RootPath<Entity>) => QueryDecoratorFactory;
|
|
9
|
+
export declare const joinOne: <Entity>(path: Omit<DirectPath<Entity>, "type">) => DirectPath<Entity>;
|
|
10
|
+
export declare const joinMany: <Entity>(path: Omit<IndirectPath<Entity>, "type">) => IndirectPath<Entity>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.joinMany = exports.joinOne = exports.createQuery = void 0;
|
|
4
4
|
const class_pipe_1 = require("@rockster/class-pipe");
|
|
5
5
|
const database_1 = require("../../database");
|
|
6
6
|
const interfaces_1 = require("../../common/interfaces");
|
|
@@ -31,7 +31,8 @@ const createQuery = (rootPath) => {
|
|
|
31
31
|
entityAlias: rootPath.alias,
|
|
32
32
|
paths: rootPath.paths,
|
|
33
33
|
secure: rootPath.secure,
|
|
34
|
-
rootEntity: Target
|
|
34
|
+
rootEntity: Target,
|
|
35
|
+
rootAlias: rootPath.alias,
|
|
35
36
|
});
|
|
36
37
|
// Data of response
|
|
37
38
|
(0, class_pipe_1.IsType)(() => Target)(QueryResponse.prototype, 'data');
|
|
@@ -48,8 +49,9 @@ const createQuery = (rootPath) => {
|
|
|
48
49
|
// OrderBy.direction
|
|
49
50
|
(0, class_pipe_1.IsIn)(Object.getOwnPropertyNames(database_1.OrderByDirection))(QueryOrderBy.prototype, 'direction');
|
|
50
51
|
(0, class_pipe_1.IsRequired)()(QueryOrderBy.prototype, 'direction');
|
|
51
|
-
// OrderBy.property
|
|
52
|
-
|
|
52
|
+
// OrderBy.property (exclude external columns – not in DB, cannot order by them in SQL)
|
|
53
|
+
const orderByPropertyNames = Object.keys(properties).filter((path) => !properties[path].isExternal);
|
|
54
|
+
(0, class_pipe_1.IsIn)(orderByPropertyNames)(QueryOrderBy.prototype, 'property');
|
|
53
55
|
(0, class_pipe_1.IsRequired)()(QueryOrderBy.prototype, 'property');
|
|
54
56
|
// OrderBy
|
|
55
57
|
(0, class_pipe_1.IsType)(() => QueryOrderBy)(QueryRequest.prototype, 'orderBy');
|
|
@@ -66,7 +68,7 @@ const createQuery = (rootPath) => {
|
|
|
66
68
|
.createObject(QueryRequest);
|
|
67
69
|
object.properties = properties;
|
|
68
70
|
object.rootPath = rootPath;
|
|
69
|
-
|
|
71
|
+
const decorator = (options) => {
|
|
70
72
|
return (target, propertyKey) => {
|
|
71
73
|
const property = core
|
|
72
74
|
.storage
|
|
@@ -81,20 +83,21 @@ const createQuery = (rootPath) => {
|
|
|
81
83
|
(0, class_injector_1.markExecutable)(target, propertyKey, property.name);
|
|
82
84
|
};
|
|
83
85
|
};
|
|
86
|
+
return Object.assign(decorator, { queryRequest: QueryRequest });
|
|
84
87
|
};
|
|
85
88
|
exports.createQuery = createQuery;
|
|
86
|
-
const
|
|
89
|
+
const joinOne = (path) => {
|
|
87
90
|
return {
|
|
88
91
|
type: 'direct',
|
|
89
92
|
...path
|
|
90
93
|
};
|
|
91
94
|
};
|
|
92
|
-
exports.
|
|
93
|
-
const
|
|
95
|
+
exports.joinOne = joinOne;
|
|
96
|
+
const joinMany = (path) => {
|
|
94
97
|
return {
|
|
95
98
|
type: 'indirect',
|
|
96
99
|
...path
|
|
97
100
|
};
|
|
98
101
|
};
|
|
99
|
-
exports.
|
|
102
|
+
exports.joinMany = joinMany;
|
|
100
103
|
//# sourceMappingURL=create-query.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-query.js","sourceRoot":"./","sources":["query/functions/create-query.ts"],"names":[],"mappings":";;;AAAA,qDAS8B;AAC9B,6CAKwB;
|
|
1
|
+
{"version":3,"file":"create-query.js","sourceRoot":"./","sources":["query/functions/create-query.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,7 +26,8 @@ const negatableOperators = {
|
|
|
26
26
|
ilike: true,
|
|
27
27
|
contains: true,
|
|
28
28
|
in: true,
|
|
29
|
-
between: true
|
|
29
|
+
between: true,
|
|
30
|
+
is: true
|
|
30
31
|
};
|
|
31
32
|
const validIsValues = {
|
|
32
33
|
'null': true,
|
|
@@ -77,7 +78,7 @@ const describeQueryFilter = (pendingAction, target, query, select) => {
|
|
|
77
78
|
throw new common_1.BadRequestError({ message: `${requestRef} [filter] invalidField [${current}]` });
|
|
78
79
|
}
|
|
79
80
|
const fieldName = isValidProperty.path.type === 'embedded'
|
|
80
|
-
? isValidProperty.path.
|
|
81
|
+
? isValidProperty.path.rootOrRelationPath
|
|
81
82
|
: `${isValidProperty.path.entityAlias}.${isValidProperty.columnName}`;
|
|
82
83
|
select.pushIfNotExists(current);
|
|
83
84
|
lastField = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"describe-query-filter.js","sourceRoot":"./","sources":["query/functions/describe-query-filter.ts"],"names":[],"mappings":";;;;;;AAAA,6CAG0B;AAQ1B,qDAAoD;AACpD,0DAAkC;AAWlC,MAAM,cAAc,GAAG;IACpB,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,IAAI;IACX,GAAG,EAAE,IAAI;IACT,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,QAAQ,EAAE,IAAI;IACd,EAAE,EAAE,IAAI;IACR,OAAO,EAAE,IAAI;CACf,CAAC;AAEF,MAAM,kBAAkB,GAAG;IACxB,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,IAAI;IACX,QAAQ,EAAE,IAAI;IACd,EAAE,EAAE,IAAI;IACR,OAAO,EAAE,IAAI;
|
|
1
|
+
{"version":3,"file":"describe-query-filter.js","sourceRoot":"./","sources":["query/functions/describe-query-filter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,23 +1,34 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.executeQuery = void 0;
|
|
4
|
+
const class_injector_1 = require("@rockster/class-injector");
|
|
4
5
|
const create_query_builder_1 = require("./create-query-builder");
|
|
5
6
|
const class_pipe_1 = require("@rockster/class-pipe");
|
|
6
7
|
const logger_1 = require("@rockster/logger");
|
|
7
8
|
const global_1 = require("../../global");
|
|
9
|
+
const collect_external_column_owners_1 = require("./collect-external-column-owners");
|
|
10
|
+
const expand_select_with_external_dependencies_1 = require("./expand-select-with-external-dependencies");
|
|
8
11
|
const executeQuery = async ({ content: queryContent, intercept, preFilter }) => {
|
|
9
12
|
const logger = new logger_1.Logger('ExecuteQuery');
|
|
10
13
|
const query = queryContent.query;
|
|
11
|
-
const
|
|
14
|
+
const object = core
|
|
15
|
+
.storage
|
|
16
|
+
.findObject(queryContent.target);
|
|
17
|
+
const effectiveSelect = (0, expand_select_with_external_dependencies_1.expandSelectWithExternalDependencies)(object.properties, query.select, logger);
|
|
18
|
+
const queryForBuilder = {
|
|
19
|
+
...queryContent,
|
|
20
|
+
query: { ...queryContent.query, select: effectiveSelect },
|
|
21
|
+
};
|
|
22
|
+
const queryBuilder = await (0, create_query_builder_1.createQueryBuilder)(queryForBuilder, intercept);
|
|
12
23
|
let page = queryContent.query.page;
|
|
13
24
|
let getWhere = 'where';
|
|
14
25
|
let filtered = 0;
|
|
15
26
|
let total;
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
27
|
+
if (queryBuilder.expressionMap.wheres.length > 0) {
|
|
28
|
+
getWhere = 'andWhere';
|
|
29
|
+
}
|
|
19
30
|
if (preFilter) {
|
|
20
|
-
queryBuilder
|
|
31
|
+
queryBuilder[getWhere](preFilter);
|
|
21
32
|
getWhere = 'andWhere';
|
|
22
33
|
}
|
|
23
34
|
if (page) {
|
|
@@ -32,21 +43,90 @@ const executeQuery = async ({ content: queryContent, intercept, preFilter }) =>
|
|
|
32
43
|
if (query.orderBy) {
|
|
33
44
|
query.orderBy.forEach((orderBy, i) => {
|
|
34
45
|
const direction = orderBy.direction.toUpperCase();
|
|
35
|
-
|
|
46
|
+
const nativeField = queryForBuilder.nativeSelectAsMap.get(orderBy.property);
|
|
47
|
+
queryBuilder.addOrderBy(nativeField, direction);
|
|
36
48
|
});
|
|
37
49
|
}
|
|
38
|
-
queryBuilder.select(
|
|
50
|
+
queryBuilder.select(queryForBuilder.nativeSelectAsArry);
|
|
51
|
+
/**
|
|
52
|
+
* When selecting only a subset of columns, TypeORM will NOT hydrate mapped joins unless it can
|
|
53
|
+
* identify joined rows. In practice, that requires selecting the joined entity's primary column(s).
|
|
54
|
+
*
|
|
55
|
+
* We DO NOT addSelect(join.alias.name) because that selects *all* columns for the join alias and can
|
|
56
|
+
* duplicate columns already in nativeSelect, causing ambiguous column references in DISTINCT wrappers.
|
|
57
|
+
*
|
|
58
|
+
* Instead, ensure each mapped join has its primary key(s) selected (if not already).
|
|
59
|
+
*/
|
|
60
|
+
const currentSelections = new Set((queryBuilder.expressionMap.selects ?? [])
|
|
61
|
+
.map((s) => s.selection)
|
|
62
|
+
.filter((s) => typeof s === "string" && s.length > 0));
|
|
63
|
+
const mainAlias = queryBuilder.expressionMap.mainAlias;
|
|
64
|
+
if (mainAlias?.name && mainAlias.metadata) {
|
|
65
|
+
for (const pk of mainAlias.metadata.primaryColumns ?? []) {
|
|
66
|
+
const sel = `${mainAlias.name}.${pk.propertyPath}`;
|
|
67
|
+
if (!currentSelections.has(sel)) {
|
|
68
|
+
queryBuilder.addSelect(sel);
|
|
69
|
+
currentSelections.add(sel);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
for (const join of queryBuilder.expressionMap.joinAttributes) {
|
|
74
|
+
if (!join.mapToProperty || !join.alias?.name || !join.metadata)
|
|
75
|
+
continue;
|
|
76
|
+
const alias = join.alias.name;
|
|
77
|
+
for (const pk of join.metadata.primaryColumns ?? []) {
|
|
78
|
+
const sel = `${alias}.${pk.propertyPath}`;
|
|
79
|
+
if (!currentSelections.has(sel)) {
|
|
80
|
+
queryBuilder.addSelect(sel);
|
|
81
|
+
currentSelections.add(sel);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
39
85
|
queryBuilder.getVirtualSelect().forEach((virtualSelect) => {
|
|
40
86
|
queryBuilder.addSelect(virtualSelect.selection, virtualSelect.alias);
|
|
41
87
|
});
|
|
42
88
|
logger.debug(queryBuilder.getSql());
|
|
43
|
-
|
|
89
|
+
let items = await queryBuilder.getMany();
|
|
90
|
+
const externalSelectPaths = query.select.filter((path) => object.properties[path]?.isExternal);
|
|
91
|
+
if (externalSelectPaths.length > 0) {
|
|
92
|
+
const pathsByResolver = new Map();
|
|
93
|
+
for (const path of externalSelectPaths) {
|
|
94
|
+
const ResolverClass = object.properties[path]
|
|
95
|
+
?.externalResolver;
|
|
96
|
+
if (!ResolverClass) {
|
|
97
|
+
logger.warn(`External column "${path}" has no resolver; set @ExternalColumn(() => YourResolverClass) on the entity property.`);
|
|
98
|
+
continue;
|
|
99
|
+
}
|
|
100
|
+
const list = pathsByResolver.get(ResolverClass) ?? [];
|
|
101
|
+
list.push(path);
|
|
102
|
+
pathsByResolver.set(ResolverClass, list);
|
|
103
|
+
}
|
|
104
|
+
for (const [ResolverClass, pathsForResolver] of pathsByResolver) {
|
|
105
|
+
const owners = (0, collect_external_column_owners_1.collectExternalColumnOwners)(items, pathsForResolver, queryForBuilder.rootAlias ?? "", object.properties);
|
|
106
|
+
if (owners.length === 0) {
|
|
107
|
+
continue;
|
|
108
|
+
}
|
|
109
|
+
const instance = await (0, class_injector_1.createInstance)(ResolverClass);
|
|
110
|
+
if (typeof instance?.resolve !== "function") {
|
|
111
|
+
logger.warn(`${ResolverClass.name} must implement resolve(payload, context) for external columns.`);
|
|
112
|
+
continue;
|
|
113
|
+
}
|
|
114
|
+
const resolvedRoots = await instance.resolve({
|
|
115
|
+
roots: items,
|
|
116
|
+
externalSelectPaths: pathsForResolver,
|
|
117
|
+
owners,
|
|
118
|
+
}, queryContent);
|
|
119
|
+
if (Array.isArray(resolvedRoots)) {
|
|
120
|
+
items = resolvedRoots;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
44
124
|
const data = await Promise.all(items.map((item) => {
|
|
45
125
|
return (0, class_pipe_1.transform)({
|
|
46
126
|
target: object.rootPath.target(),
|
|
47
127
|
values: item,
|
|
48
128
|
select: query.select,
|
|
49
|
-
fullPath: `${
|
|
129
|
+
fullPath: `${queryForBuilder.rootAlias}.`,
|
|
50
130
|
groups: [global_1.actionGroups.query]
|
|
51
131
|
});
|
|
52
132
|
}));
|