@wildo-ai/saas-backend-lib 1.0.1
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/dist/esm/__tests__/setup.d.ts +7 -0
- package/dist/esm/__tests__/setup.d.ts.map +1 -0
- package/dist/esm/__tests__/setup.js +14 -0
- package/dist/esm/__tests__/setup.js.map +1 -0
- package/dist/esm/__tests__/test-container.d.ts +39 -0
- package/dist/esm/__tests__/test-container.d.ts.map +1 -0
- package/dist/esm/__tests__/test-container.js +94 -0
- package/dist/esm/__tests__/test-container.js.map +1 -0
- package/dist/esm/applications/models/applications.backend.schemas.d.ts +11 -0
- package/dist/esm/applications/models/applications.backend.schemas.d.ts.map +1 -0
- package/dist/esm/applications/models/applications.backend.schemas.js +15 -0
- package/dist/esm/applications/models/applications.backend.schemas.js.map +1 -0
- package/dist/esm/base-classes/models/manual-controllers.backend.definition.d.ts +12 -0
- package/dist/esm/base-classes/models/manual-controllers.backend.definition.d.ts.map +1 -0
- package/dist/esm/base-classes/models/manual-controllers.backend.definition.js +30 -0
- package/dist/esm/base-classes/models/manual-controllers.backend.definition.js.map +1 -0
- package/dist/esm/base-classes/models/repositories.backend.schemas.d.ts +98 -0
- package/dist/esm/base-classes/models/repositories.backend.schemas.d.ts.map +1 -0
- package/dist/esm/base-classes/models/repositories.backend.schemas.js +11 -0
- package/dist/esm/base-classes/models/repositories.backend.schemas.js.map +1 -0
- package/dist/esm/base-classes/services/__tests__/mock-resource-operation-helper.service.d.ts +31 -0
- package/dist/esm/base-classes/services/__tests__/mock-resource-operation-helper.service.d.ts.map +1 -0
- package/dist/esm/base-classes/services/__tests__/mock-resource-operation-helper.service.js +52 -0
- package/dist/esm/base-classes/services/__tests__/mock-resource-operation-helper.service.js.map +1 -0
- package/dist/esm/base-classes/services/batches/batches-cronjobs-custom-execution.service.d.ts +56 -0
- package/dist/esm/base-classes/services/batches/batches-cronjobs-custom-execution.service.d.ts.map +1 -0
- package/dist/esm/base-classes/services/batches/batches-cronjobs-custom-execution.service.js +52 -0
- package/dist/esm/base-classes/services/batches/batches-cronjobs-custom-execution.service.js.map +1 -0
- package/dist/esm/base-classes/services/batches/batches-cronjobs-executor.backend.service.d.ts +33 -0
- package/dist/esm/base-classes/services/batches/batches-cronjobs-executor.backend.service.d.ts.map +1 -0
- package/dist/esm/base-classes/services/batches/batches-cronjobs-executor.backend.service.js +125 -0
- package/dist/esm/base-classes/services/batches/batches-cronjobs-executor.backend.service.js.map +1 -0
- package/dist/esm/base-classes/services/batches/batches-cronjobs-resource-execution.backend.service.d.ts +20 -0
- package/dist/esm/base-classes/services/batches/batches-cronjobs-resource-execution.backend.service.d.ts.map +1 -0
- package/dist/esm/base-classes/services/batches/batches-cronjobs-resource-execution.backend.service.js +45 -0
- package/dist/esm/base-classes/services/batches/batches-cronjobs-resource-execution.backend.service.js.map +1 -0
- package/dist/esm/base-classes/services/controllers/abstract-controller.backend.service.d.ts +133 -0
- package/dist/esm/base-classes/services/controllers/abstract-controller.backend.service.d.ts.map +1 -0
- package/dist/esm/base-classes/services/controllers/abstract-controller.backend.service.js +280 -0
- package/dist/esm/base-classes/services/controllers/abstract-controller.backend.service.js.map +1 -0
- package/dist/esm/base-classes/services/controllers/controller-resource.backend.service.d.ts +147 -0
- package/dist/esm/base-classes/services/controllers/controller-resource.backend.service.d.ts.map +1 -0
- package/dist/esm/base-classes/services/controllers/controller-resource.backend.service.js +1320 -0
- package/dist/esm/base-classes/services/controllers/controller-resource.backend.service.js.map +1 -0
- package/dist/esm/base-classes/services/controllers/controllers-registry-handler.backend.service.d.ts +107 -0
- package/dist/esm/base-classes/services/controllers/controllers-registry-handler.backend.service.d.ts.map +1 -0
- package/dist/esm/base-classes/services/controllers/controllers-registry-handler.backend.service.js +369 -0
- package/dist/esm/base-classes/services/controllers/controllers-registry-handler.backend.service.js.map +1 -0
- package/dist/esm/base-classes/services/controllers/validate-field-handler.backend.service.d.ts +194 -0
- package/dist/esm/base-classes/services/controllers/validate-field-handler.backend.service.d.ts.map +1 -0
- package/dist/esm/base-classes/services/controllers/validate-field-handler.backend.service.js +417 -0
- package/dist/esm/base-classes/services/controllers/validate-field-handler.backend.service.js.map +1 -0
- package/dist/esm/base-classes/services/repositories/__tests__/mock-repositories-registry-handler.service.d.ts +9 -0
- package/dist/esm/base-classes/services/repositories/__tests__/mock-repositories-registry-handler.service.d.ts.map +1 -0
- package/dist/esm/base-classes/services/repositories/__tests__/mock-repositories-registry-handler.service.js +35 -0
- package/dist/esm/base-classes/services/repositories/__tests__/mock-repositories-registry-handler.service.js.map +1 -0
- package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.d.ts +107 -0
- package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.d.ts.map +1 -0
- package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.js +800 -0
- package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.js.map +1 -0
- package/dist/esm/base-classes/services/repositories/repositories-registry-handler.backend.service.d.ts +181 -0
- package/dist/esm/base-classes/services/repositories/repositories-registry-handler.backend.service.d.ts.map +1 -0
- package/dist/esm/base-classes/services/repositories/repositories-registry-handler.backend.service.js +529 -0
- package/dist/esm/base-classes/services/repositories/repositories-registry-handler.backend.service.js.map +1 -0
- package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.d.ts +245 -0
- package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.d.ts.map +1 -0
- package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.js +1509 -0
- package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.js.map +1 -0
- package/dist/esm/base-classes/services/resource-operations-helper.backend.service.d.ts +134 -0
- package/dist/esm/base-classes/services/resource-operations-helper.backend.service.d.ts.map +1 -0
- package/dist/esm/base-classes/services/resource-operations-helper.backend.service.js +388 -0
- package/dist/esm/base-classes/services/resource-operations-helper.backend.service.js.map +1 -0
- package/dist/esm/base-classes/services/services/__tests__/mock-services-registry-handler.service.d.ts +9 -0
- package/dist/esm/base-classes/services/services/__tests__/mock-services-registry-handler.service.d.ts.map +1 -0
- package/dist/esm/base-classes/services/services/__tests__/mock-services-registry-handler.service.js +26 -0
- package/dist/esm/base-classes/services/services/__tests__/mock-services-registry-handler.service.js.map +1 -0
- package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-base.backend.service.d.ts +144 -0
- package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-base.backend.service.d.ts.map +1 -0
- package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-base.backend.service.js +49 -0
- package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-base.backend.service.js.map +1 -0
- package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-registry.backend.service.d.ts +84 -0
- package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-registry.backend.service.d.ts.map +1 -0
- package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-registry.backend.service.js +156 -0
- package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-registry.backend.service.js.map +1 -0
- package/dist/esm/base-classes/services/services/resource-operation-custom-implementation.factory.backend.d.ts +42 -0
- package/dist/esm/base-classes/services/services/resource-operation-custom-implementation.factory.backend.d.ts.map +1 -0
- package/dist/esm/base-classes/services/services/resource-operation-custom-implementation.factory.backend.js +94 -0
- package/dist/esm/base-classes/services/services/resource-operation-custom-implementation.factory.backend.js.map +1 -0
- package/dist/esm/base-classes/services/services/services-registry-handler.backend.service.d.ts +593 -0
- package/dist/esm/base-classes/services/services/services-registry-handler.backend.service.d.ts.map +1 -0
- package/dist/esm/base-classes/services/services/services-registry-handler.backend.service.js +4015 -0
- package/dist/esm/base-classes/services/services/services-registry-handler.backend.service.js.map +1 -0
- package/dist/esm/base-classes/utils/backend-type-utils.d.ts +43 -0
- package/dist/esm/base-classes/utils/backend-type-utils.d.ts.map +1 -0
- package/dist/esm/base-classes/utils/backend-type-utils.js +10 -0
- package/dist/esm/base-classes/utils/backend-type-utils.js.map +1 -0
- package/dist/esm/billing/services/back-office/abstract-billing.backend.service.d.ts +44 -0
- package/dist/esm/billing/services/back-office/abstract-billing.backend.service.d.ts.map +1 -0
- package/dist/esm/billing/services/back-office/abstract-billing.backend.service.js +94 -0
- package/dist/esm/billing/services/back-office/abstract-billing.backend.service.js.map +1 -0
- package/dist/esm/billing/services/back-office/billing-feature-sync.backend.service.d.ts +102 -0
- package/dist/esm/billing/services/back-office/billing-feature-sync.backend.service.d.ts.map +1 -0
- package/dist/esm/billing/services/back-office/billing-feature-sync.backend.service.js +405 -0
- package/dist/esm/billing/services/back-office/billing-feature-sync.backend.service.js.map +1 -0
- package/dist/esm/billing/services/back-office/billing-state.backend.service.d.ts +55 -0
- package/dist/esm/billing/services/back-office/billing-state.backend.service.d.ts.map +1 -0
- package/dist/esm/billing/services/back-office/billing-state.backend.service.js +268 -0
- package/dist/esm/billing/services/back-office/billing-state.backend.service.js.map +1 -0
- package/dist/esm/billing/services/back-office/product-catalog-sync.backend.service.d.ts +83 -0
- package/dist/esm/billing/services/back-office/product-catalog-sync.backend.service.d.ts.map +1 -0
- package/dist/esm/billing/services/back-office/product-catalog-sync.backend.service.js +371 -0
- package/dist/esm/billing/services/back-office/product-catalog-sync.backend.service.js.map +1 -0
- package/dist/esm/billing/services/back-office/usage-metering.backend.service.d.ts +80 -0
- package/dist/esm/billing/services/back-office/usage-metering.backend.service.d.ts.map +1 -0
- package/dist/esm/billing/services/back-office/usage-metering.backend.service.js +255 -0
- package/dist/esm/billing/services/back-office/usage-metering.backend.service.js.map +1 -0
- package/dist/esm/billing/services/billing.utils.d.ts +17 -0
- package/dist/esm/billing/services/billing.utils.d.ts.map +1 -0
- package/dist/esm/billing/services/billing.utils.js +25 -0
- package/dist/esm/billing/services/billing.utils.js.map +1 -0
- package/dist/esm/billing/services/custom-impl/billing-account.mutations.custom-impl.backend.service.d.ts +50 -0
- package/dist/esm/billing/services/custom-impl/billing-account.mutations.custom-impl.backend.service.d.ts.map +1 -0
- package/dist/esm/billing/services/custom-impl/billing-account.mutations.custom-impl.backend.service.js +290 -0
- package/dist/esm/billing/services/custom-impl/billing-account.mutations.custom-impl.backend.service.js.map +1 -0
- package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.d.ts +92 -0
- package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.d.ts.map +1 -0
- package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.js +193 -0
- package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.js.map +1 -0
- package/dist/esm/billing/services/custom-impl/billing-custom-implementations.backend.d.ts +66 -0
- package/dist/esm/billing/services/custom-impl/billing-custom-implementations.backend.d.ts.map +1 -0
- package/dist/esm/billing/services/custom-impl/billing-custom-implementations.backend.js +180 -0
- package/dist/esm/billing/services/custom-impl/billing-custom-implementations.backend.js.map +1 -0
- package/dist/esm/billing/services/custom-impl/credit-pool.custom-ops.custom-impl.backend.service.d.ts +31 -0
- package/dist/esm/billing/services/custom-impl/credit-pool.custom-ops.custom-impl.backend.service.d.ts.map +1 -0
- package/dist/esm/billing/services/custom-impl/credit-pool.custom-ops.custom-impl.backend.service.js +100 -0
- package/dist/esm/billing/services/custom-impl/credit-pool.custom-ops.custom-impl.backend.service.js.map +1 -0
- package/dist/esm/billing/services/custom-impl/promotion.custom-ops.custom-impl.backend.service.d.ts +33 -0
- package/dist/esm/billing/services/custom-impl/promotion.custom-ops.custom-impl.backend.service.d.ts.map +1 -0
- package/dist/esm/billing/services/custom-impl/promotion.custom-ops.custom-impl.backend.service.js +200 -0
- package/dist/esm/billing/services/custom-impl/promotion.custom-ops.custom-impl.backend.service.js.map +1 -0
- package/dist/esm/billing/services/custom-impl/subscription.mutations.custom-impl.backend.service.d.ts +58 -0
- package/dist/esm/billing/services/custom-impl/subscription.mutations.custom-impl.backend.service.d.ts.map +1 -0
- package/dist/esm/billing/services/custom-impl/subscription.mutations.custom-impl.backend.service.js +362 -0
- package/dist/esm/billing/services/custom-impl/subscription.mutations.custom-impl.backend.service.js.map +1 -0
- package/dist/esm/billing/services/webhooks/billing-webhook-adapter.backend.service.d.ts +19 -0
- package/dist/esm/billing/services/webhooks/billing-webhook-adapter.backend.service.d.ts.map +1 -0
- package/dist/esm/billing/services/webhooks/billing-webhook-adapter.backend.service.js +50 -0
- package/dist/esm/billing/services/webhooks/billing-webhook-adapter.backend.service.js.map +1 -0
- package/dist/esm/billing/services/webhooks/billing-webhook-capability-handler.backend.service.d.ts +21 -0
- package/dist/esm/billing/services/webhooks/billing-webhook-capability-handler.backend.service.d.ts.map +1 -0
- package/dist/esm/billing/services/webhooks/billing-webhook-capability-handler.backend.service.js +32 -0
- package/dist/esm/billing/services/webhooks/billing-webhook-capability-handler.backend.service.js.map +1 -0
- package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.d.ts +114 -0
- package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.d.ts.map +1 -0
- package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.js +569 -0
- package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.js.map +1 -0
- package/dist/esm/billing/testing/billing-test-fixtures.d.ts +109 -0
- package/dist/esm/billing/testing/billing-test-fixtures.d.ts.map +1 -0
- package/dist/esm/billing/testing/billing-test-fixtures.js +200 -0
- package/dist/esm/billing/testing/billing-test-fixtures.js.map +1 -0
- package/dist/esm/billing/testing/mock-billing-provider.d.ts +152 -0
- package/dist/esm/billing/testing/mock-billing-provider.d.ts.map +1 -0
- package/dist/esm/billing/testing/mock-billing-provider.js +394 -0
- package/dist/esm/billing/testing/mock-billing-provider.js.map +1 -0
- package/dist/esm/charts/controllers/chart.backend.controller.d.ts +46 -0
- package/dist/esm/charts/controllers/chart.backend.controller.d.ts.map +1 -0
- package/dist/esm/charts/controllers/chart.backend.controller.js +214 -0
- package/dist/esm/charts/controllers/chart.backend.controller.js.map +1 -0
- package/dist/esm/charts/services/chart-registry.backend.service.d.ts +55 -0
- package/dist/esm/charts/services/chart-registry.backend.service.d.ts.map +1 -0
- package/dist/esm/charts/services/chart-registry.backend.service.js +102 -0
- package/dist/esm/charts/services/chart-registry.backend.service.js.map +1 -0
- package/dist/esm/compliance/audit-trails/audit-logs.custom-impl.backend.service.d.ts +9 -0
- package/dist/esm/compliance/audit-trails/audit-logs.custom-impl.backend.service.d.ts.map +1 -0
- package/dist/esm/compliance/audit-trails/audit-logs.custom-impl.backend.service.js +80 -0
- package/dist/esm/compliance/audit-trails/audit-logs.custom-impl.backend.service.js.map +1 -0
- package/dist/esm/compliance/audit-trails/services/__tests__/mock-audit-logs.service.d.ts +23 -0
- package/dist/esm/compliance/audit-trails/services/__tests__/mock-audit-logs.service.d.ts.map +1 -0
- package/dist/esm/compliance/audit-trails/services/__tests__/mock-audit-logs.service.js +46 -0
- package/dist/esm/compliance/audit-trails/services/__tests__/mock-audit-logs.service.js.map +1 -0
- package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.d.ts +73 -0
- package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.d.ts.map +1 -0
- package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.js +291 -0
- package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.js.map +1 -0
- package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.d.ts +447 -0
- package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.d.ts.map +1 -0
- package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.js +898 -0
- package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.js.map +1 -0
- package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.d.ts +127 -0
- package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.d.ts.map +1 -0
- package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.js +462 -0
- package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.js.map +1 -0
- package/dist/esm/compliance/index.d.ts +2 -0
- package/dist/esm/compliance/index.d.ts.map +1 -0
- package/dist/esm/compliance/index.js +1 -0
- package/dist/esm/compliance/index.js.map +1 -0
- package/dist/esm/config/custom/application-config-controller.backend.service.d.ts +31 -0
- package/dist/esm/config/custom/application-config-controller.backend.service.d.ts.map +1 -0
- package/dist/esm/config/custom/application-config-controller.backend.service.js +112 -0
- package/dist/esm/config/custom/application-config-controller.backend.service.js.map +1 -0
- package/dist/esm/config/models/app-config-overrides.backend.definitions.d.ts +29 -0
- package/dist/esm/config/models/app-config-overrides.backend.definitions.d.ts.map +1 -0
- package/dist/esm/config/models/app-config-overrides.backend.definitions.js +143 -0
- package/dist/esm/config/models/app-config-overrides.backend.definitions.js.map +1 -0
- package/dist/esm/config/models/app-config-secrets.backend.schemas.d.ts +56 -0
- package/dist/esm/config/models/app-config-secrets.backend.schemas.d.ts.map +1 -0
- package/dist/esm/config/models/app-config-secrets.backend.schemas.js +121 -0
- package/dist/esm/config/models/app-config-secrets.backend.schemas.js.map +1 -0
- package/dist/esm/config/models/app-config.backend-authored.definitions.d.ts +35 -0
- package/dist/esm/config/models/app-config.backend-authored.definitions.d.ts.map +1 -0
- package/dist/esm/config/models/app-config.backend-authored.definitions.js +89 -0
- package/dist/esm/config/models/app-config.backend-authored.definitions.js.map +1 -0
- package/dist/esm/config/models/app-config.backend.schemas.d.ts +1651 -0
- package/dist/esm/config/models/app-config.backend.schemas.d.ts.map +1 -0
- package/dist/esm/config/models/app-config.backend.schemas.js +478 -0
- package/dist/esm/config/models/app-config.backend.schemas.js.map +1 -0
- package/dist/esm/config/models/app-env-config.backend.schemas.d.ts +74 -0
- package/dist/esm/config/models/app-env-config.backend.schemas.d.ts.map +1 -0
- package/dist/esm/config/models/app-env-config.backend.schemas.js +115 -0
- package/dist/esm/config/models/app-env-config.backend.schemas.js.map +1 -0
- package/dist/esm/config/models/config-mutation-boundary.utils.d.ts +11 -0
- package/dist/esm/config/models/config-mutation-boundary.utils.d.ts.map +1 -0
- package/dist/esm/config/models/config-mutation-boundary.utils.js +50 -0
- package/dist/esm/config/models/config-mutation-boundary.utils.js.map +1 -0
- package/dist/esm/config/models/postgresql-env-config.backend.schemas.d.ts +48 -0
- package/dist/esm/config/models/postgresql-env-config.backend.schemas.d.ts.map +1 -0
- package/dist/esm/config/models/postgresql-env-config.backend.schemas.js +106 -0
- package/dist/esm/config/models/postgresql-env-config.backend.schemas.js.map +1 -0
- package/dist/esm/config/models/runtime-topology.backend.contracts.d.ts +12 -0
- package/dist/esm/config/models/runtime-topology.backend.contracts.d.ts.map +1 -0
- package/dist/esm/config/models/runtime-topology.backend.contracts.js +23 -0
- package/dist/esm/config/models/runtime-topology.backend.contracts.js.map +1 -0
- package/dist/esm/config/services/__tests__/mock-app-configuration.service.d.ts +39 -0
- package/dist/esm/config/services/__tests__/mock-app-configuration.service.d.ts.map +1 -0
- package/dist/esm/config/services/__tests__/mock-app-configuration.service.js +124 -0
- package/dist/esm/config/services/__tests__/mock-app-configuration.service.js.map +1 -0
- package/dist/esm/config/services/app-configuration-loader.backend.service.d.ts +76 -0
- package/dist/esm/config/services/app-configuration-loader.backend.service.d.ts.map +1 -0
- package/dist/esm/config/services/app-configuration-loader.backend.service.js +375 -0
- package/dist/esm/config/services/app-configuration-loader.backend.service.js.map +1 -0
- package/dist/esm/config/services/app-configuration.backend.service.d.ts +148 -0
- package/dist/esm/config/services/app-configuration.backend.service.d.ts.map +1 -0
- package/dist/esm/config/services/app-configuration.backend.service.js +494 -0
- package/dist/esm/config/services/app-configuration.backend.service.js.map +1 -0
- package/dist/esm/config/services/app-configuration.backend.utils.d.ts +17 -0
- package/dist/esm/config/services/app-configuration.backend.utils.d.ts.map +1 -0
- package/dist/esm/config/services/app-configuration.backend.utils.js +61 -0
- package/dist/esm/config/services/app-configuration.backend.utils.js.map +1 -0
- package/dist/esm/config/services/application-startup-config-validator.backend.service.d.ts +70 -0
- package/dist/esm/config/services/application-startup-config-validator.backend.service.d.ts.map +1 -0
- package/dist/esm/config/services/application-startup-config-validator.backend.service.js +470 -0
- package/dist/esm/config/services/application-startup-config-validator.backend.service.js.map +1 -0
- package/dist/esm/databases/models/aggregation.backend.schemas.d.ts +136 -0
- package/dist/esm/databases/models/aggregation.backend.schemas.d.ts.map +1 -0
- package/dist/esm/databases/models/aggregation.backend.schemas.js +9 -0
- package/dist/esm/databases/models/aggregation.backend.schemas.js.map +1 -0
- package/dist/esm/databases/models/databases.backend.schemas.d.ts +32 -0
- package/dist/esm/databases/models/databases.backend.schemas.d.ts.map +1 -0
- package/dist/esm/databases/models/databases.backend.schemas.js +60 -0
- package/dist/esm/databases/models/databases.backend.schemas.js.map +1 -0
- package/dist/esm/databases/models/filter.backend.schemas.d.ts +83 -0
- package/dist/esm/databases/models/filter.backend.schemas.d.ts.map +1 -0
- package/dist/esm/databases/models/filter.backend.schemas.js +27 -0
- package/dist/esm/databases/models/filter.backend.schemas.js.map +1 -0
- package/dist/esm/databases/models/sql.backend.schemas.d.ts +75 -0
- package/dist/esm/databases/models/sql.backend.schemas.d.ts.map +1 -0
- package/dist/esm/databases/models/sql.backend.schemas.js +31 -0
- package/dist/esm/databases/models/sql.backend.schemas.js.map +1 -0
- package/dist/esm/databases/models/transaction.shared.schemas.d.ts +120 -0
- package/dist/esm/databases/models/transaction.shared.schemas.d.ts.map +1 -0
- package/dist/esm/databases/models/transaction.shared.schemas.js +30 -0
- package/dist/esm/databases/models/transaction.shared.schemas.js.map +1 -0
- package/dist/esm/databases/services/__tests__/mock-mongo-transaction-registry.service.d.ts +15 -0
- package/dist/esm/databases/services/__tests__/mock-mongo-transaction-registry.service.d.ts.map +1 -0
- package/dist/esm/databases/services/__tests__/mock-mongo-transaction-registry.service.js +60 -0
- package/dist/esm/databases/services/__tests__/mock-mongo-transaction-registry.service.js.map +1 -0
- package/dist/esm/databases/services/__tests__/mock-mongodb.service.d.ts +19 -0
- package/dist/esm/databases/services/__tests__/mock-mongodb.service.d.ts.map +1 -0
- package/dist/esm/databases/services/__tests__/mock-mongodb.service.js +69 -0
- package/dist/esm/databases/services/__tests__/mock-mongodb.service.js.map +1 -0
- package/dist/esm/databases/services/__tests__/mock-mongoose-model.service.d.ts +11 -0
- package/dist/esm/databases/services/__tests__/mock-mongoose-model.service.d.ts.map +1 -0
- package/dist/esm/databases/services/__tests__/mock-mongoose-model.service.js +315 -0
- package/dist/esm/databases/services/__tests__/mock-mongoose-model.service.js.map +1 -0
- package/dist/esm/databases/services/__tests__/mock-redis.service.d.ts +29 -0
- package/dist/esm/databases/services/__tests__/mock-redis.service.d.ts.map +1 -0
- package/dist/esm/databases/services/__tests__/mock-redis.service.js +65 -0
- package/dist/esm/databases/services/__tests__/mock-redis.service.js.map +1 -0
- package/dist/esm/databases/services/__tests__/mock-zod-mongoose-schema-convertor.service.d.ts +19 -0
- package/dist/esm/databases/services/__tests__/mock-zod-mongoose-schema-convertor.service.d.ts.map +1 -0
- package/dist/esm/databases/services/__tests__/mock-zod-mongoose-schema-convertor.service.js +44 -0
- package/dist/esm/databases/services/__tests__/mock-zod-mongoose-schema-convertor.service.js.map +1 -0
- package/dist/esm/databases/services/aggregation/aggregation-authorization.backend.service.d.ts +74 -0
- package/dist/esm/databases/services/aggregation/aggregation-authorization.backend.service.d.ts.map +1 -0
- package/dist/esm/databases/services/aggregation/aggregation-authorization.backend.service.js +369 -0
- package/dist/esm/databases/services/aggregation/aggregation-authorization.backend.service.js.map +1 -0
- package/dist/esm/databases/services/aggregation/aggregation-query.backend.service.d.ts +110 -0
- package/dist/esm/databases/services/aggregation/aggregation-query.backend.service.d.ts.map +1 -0
- package/dist/esm/databases/services/aggregation/aggregation-query.backend.service.js +444 -0
- package/dist/esm/databases/services/aggregation/aggregation-query.backend.service.js.map +1 -0
- package/dist/esm/databases/services/aggregation/computed-measure-evaluator.backend.service.d.ts +38 -0
- package/dist/esm/databases/services/aggregation/computed-measure-evaluator.backend.service.d.ts.map +1 -0
- package/dist/esm/databases/services/aggregation/computed-measure-evaluator.backend.service.js +180 -0
- package/dist/esm/databases/services/aggregation/computed-measure-evaluator.backend.service.js.map +1 -0
- package/dist/esm/databases/services/aggregation/field-access-validator.backend.service.d.ts +42 -0
- package/dist/esm/databases/services/aggregation/field-access-validator.backend.service.d.ts.map +1 -0
- package/dist/esm/databases/services/aggregation/field-access-validator.backend.service.js +183 -0
- package/dist/esm/databases/services/aggregation/field-access-validator.backend.service.js.map +1 -0
- package/dist/esm/databases/services/aggregation/time-series-densifier.backend.service.d.ts +48 -0
- package/dist/esm/databases/services/aggregation/time-series-densifier.backend.service.d.ts.map +1 -0
- package/dist/esm/databases/services/aggregation/time-series-densifier.backend.service.js +320 -0
- package/dist/esm/databases/services/aggregation/time-series-densifier.backend.service.js.map +1 -0
- package/dist/esm/databases/services/aggregation/topn-processor.backend.service.d.ts +47 -0
- package/dist/esm/databases/services/aggregation/topn-processor.backend.service.d.ts.map +1 -0
- package/dist/esm/databases/services/aggregation/topn-processor.backend.service.js +187 -0
- package/dist/esm/databases/services/aggregation/topn-processor.backend.service.js.map +1 -0
- package/dist/esm/databases/services/aggregation/window-function-processor.backend.service.d.ts +47 -0
- package/dist/esm/databases/services/aggregation/window-function-processor.backend.service.d.ts.map +1 -0
- package/dist/esm/databases/services/aggregation/window-function-processor.backend.service.js +250 -0
- package/dist/esm/databases/services/aggregation/window-function-processor.backend.service.js.map +1 -0
- package/dist/esm/databases/services/db-utils.d.ts +56 -0
- package/dist/esm/databases/services/db-utils.d.ts.map +1 -0
- package/dist/esm/databases/services/db-utils.js +66 -0
- package/dist/esm/databases/services/db-utils.js.map +1 -0
- package/dist/esm/databases/services/mongo-aggregation.backend.service.d.ts +91 -0
- package/dist/esm/databases/services/mongo-aggregation.backend.service.d.ts.map +1 -0
- package/dist/esm/databases/services/mongo-aggregation.backend.service.js +652 -0
- package/dist/esm/databases/services/mongo-aggregation.backend.service.js.map +1 -0
- package/dist/esm/databases/services/mongodb.service.d.ts +132 -0
- package/dist/esm/databases/services/mongodb.service.d.ts.map +1 -0
- package/dist/esm/databases/services/mongodb.service.js +630 -0
- package/dist/esm/databases/services/mongodb.service.js.map +1 -0
- package/dist/esm/databases/services/postgresql-aggregation.backend.service.d.ts +113 -0
- package/dist/esm/databases/services/postgresql-aggregation.backend.service.d.ts.map +1 -0
- package/dist/esm/databases/services/postgresql-aggregation.backend.service.js +635 -0
- package/dist/esm/databases/services/postgresql-aggregation.backend.service.js.map +1 -0
- package/dist/esm/databases/services/postgresql-database.backend.service.d.ts +75 -0
- package/dist/esm/databases/services/postgresql-database.backend.service.d.ts.map +1 -0
- package/dist/esm/databases/services/postgresql-database.backend.service.js +255 -0
- package/dist/esm/databases/services/postgresql-database.backend.service.js.map +1 -0
- package/dist/esm/databases/services/postgresql-filter.backend.service.d.ts +116 -0
- package/dist/esm/databases/services/postgresql-filter.backend.service.d.ts.map +1 -0
- package/dist/esm/databases/services/postgresql-filter.backend.service.js +624 -0
- package/dist/esm/databases/services/postgresql-filter.backend.service.js.map +1 -0
- package/dist/esm/databases/services/redis.service.d.ts +143 -0
- package/dist/esm/databases/services/redis.service.d.ts.map +1 -0
- package/dist/esm/databases/services/redis.service.js +429 -0
- package/dist/esm/databases/services/redis.service.js.map +1 -0
- package/dist/esm/databases/services/zod-to-mongoose-schema-convertor.backend.service.d.ts +302 -0
- package/dist/esm/databases/services/zod-to-mongoose-schema-convertor.backend.service.d.ts.map +1 -0
- package/dist/esm/databases/services/zod-to-mongoose-schema-convertor.backend.service.js +1787 -0
- package/dist/esm/databases/services/zod-to-mongoose-schema-convertor.backend.service.js.map +1 -0
- package/dist/esm/databases/services/zod-to-sql-hybrid-schema.planner.d.ts +65 -0
- package/dist/esm/databases/services/zod-to-sql-hybrid-schema.planner.d.ts.map +1 -0
- package/dist/esm/databases/services/zod-to-sql-hybrid-schema.planner.js +237 -0
- package/dist/esm/databases/services/zod-to-sql-hybrid-schema.planner.js.map +1 -0
- package/dist/esm/errors/services/__tests__/mock-error-builder.service.d.ts +339 -0
- package/dist/esm/errors/services/__tests__/mock-error-builder.service.d.ts.map +1 -0
- package/dist/esm/errors/services/__tests__/mock-error-builder.service.js +209 -0
- package/dist/esm/errors/services/__tests__/mock-error-builder.service.js.map +1 -0
- package/dist/esm/errors/services/error-builder.backend.service.d.ts +95 -0
- package/dist/esm/errors/services/error-builder.backend.service.d.ts.map +1 -0
- package/dist/esm/errors/services/error-builder.backend.service.js +334 -0
- package/dist/esm/errors/services/error-builder.backend.service.js.map +1 -0
- package/dist/esm/errors/services/error-handler.backend.service.d.ts +43 -0
- package/dist/esm/errors/services/error-handler.backend.service.d.ts.map +1 -0
- package/dist/esm/errors/services/error-handler.backend.service.js +219 -0
- package/dist/esm/errors/services/error-handler.backend.service.js.map +1 -0
- package/dist/esm/errors/services/rate-limit.backend.service.d.ts +23 -0
- package/dist/esm/errors/services/rate-limit.backend.service.d.ts.map +1 -0
- package/dist/esm/errors/services/rate-limit.backend.service.js +59 -0
- package/dist/esm/errors/services/rate-limit.backend.service.js.map +1 -0
- package/dist/esm/external-providers/models/external-providers.backend.schemas.d.ts +135 -0
- package/dist/esm/external-providers/models/external-providers.backend.schemas.d.ts.map +1 -0
- package/dist/esm/external-providers/models/external-providers.backend.schemas.js +129 -0
- package/dist/esm/external-providers/models/external-providers.backend.schemas.js.map +1 -0
- package/dist/esm/external-providers/services/__tests__/mock-external-providers-registry.service.d.ts +18 -0
- package/dist/esm/external-providers/services/__tests__/mock-external-providers-registry.service.d.ts.map +1 -0
- package/dist/esm/external-providers/services/__tests__/mock-external-providers-registry.service.js +38 -0
- package/dist/esm/external-providers/services/__tests__/mock-external-providers-registry.service.js.map +1 -0
- package/dist/esm/external-providers/services/__tests__/mock-lazy-provider-registry.service.d.ts +20 -0
- package/dist/esm/external-providers/services/__tests__/mock-lazy-provider-registry.service.d.ts.map +1 -0
- package/dist/esm/external-providers/services/__tests__/mock-lazy-provider-registry.service.js +44 -0
- package/dist/esm/external-providers/services/__tests__/mock-lazy-provider-registry.service.js.map +1 -0
- package/dist/esm/external-providers/services/external-api-handler.backend.service.d.ts +9 -0
- package/dist/esm/external-providers/services/external-api-handler.backend.service.d.ts.map +1 -0
- package/dist/esm/external-providers/services/external-api-handler.backend.service.js +36 -0
- package/dist/esm/external-providers/services/external-api-handler.backend.service.js.map +1 -0
- package/dist/esm/external-providers/services/external-providers-registry.backend.service.d.ts +83 -0
- package/dist/esm/external-providers/services/external-providers-registry.backend.service.d.ts.map +1 -0
- package/dist/esm/external-providers/services/external-providers-registry.backend.service.js +422 -0
- package/dist/esm/external-providers/services/external-providers-registry.backend.service.js.map +1 -0
- package/dist/esm/external-providers/services/feature-bindings.backend.service.d.ts +102 -0
- package/dist/esm/external-providers/services/feature-bindings.backend.service.d.ts.map +1 -0
- package/dist/esm/external-providers/services/feature-bindings.backend.service.js +352 -0
- package/dist/esm/external-providers/services/feature-bindings.backend.service.js.map +1 -0
- package/dist/esm/external-providers/services/lazy-provider-registry.backend.service.d.ts +141 -0
- package/dist/esm/external-providers/services/lazy-provider-registry.backend.service.d.ts.map +1 -0
- package/dist/esm/external-providers/services/lazy-provider-registry.backend.service.js +391 -0
- package/dist/esm/external-providers/services/lazy-provider-registry.backend.service.js.map +1 -0
- package/dist/esm/features/controllers/features.backend.controller.d.ts +35 -0
- package/dist/esm/features/controllers/features.backend.controller.d.ts.map +1 -0
- package/dist/esm/features/controllers/features.backend.controller.js +179 -0
- package/dist/esm/features/controllers/features.backend.controller.js.map +1 -0
- package/dist/esm/features/services/__tests__/mock-capability-bindings.service.d.ts +8 -0
- package/dist/esm/features/services/__tests__/mock-capability-bindings.service.d.ts.map +1 -0
- package/dist/esm/features/services/__tests__/mock-capability-bindings.service.js +31 -0
- package/dist/esm/features/services/__tests__/mock-capability-bindings.service.js.map +1 -0
- package/dist/esm/features/services/__tests__/mock-feature-definition-registry.service.d.ts +22 -0
- package/dist/esm/features/services/__tests__/mock-feature-definition-registry.service.d.ts.map +1 -0
- package/dist/esm/features/services/__tests__/mock-feature-definition-registry.service.js +52 -0
- package/dist/esm/features/services/__tests__/mock-feature-definition-registry.service.js.map +1 -0
- package/dist/esm/features/services/__tests__/mock-feature-resolution.service.d.ts +13 -0
- package/dist/esm/features/services/__tests__/mock-feature-resolution.service.d.ts.map +1 -0
- package/dist/esm/features/services/__tests__/mock-feature-resolution.service.js +36 -0
- package/dist/esm/features/services/__tests__/mock-feature-resolution.service.js.map +1 -0
- package/dist/esm/features/services/feature-definition-registry.backend.service.d.ts +111 -0
- package/dist/esm/features/services/feature-definition-registry.backend.service.d.ts.map +1 -0
- package/dist/esm/features/services/feature-definition-registry.backend.service.js +437 -0
- package/dist/esm/features/services/feature-definition-registry.backend.service.js.map +1 -0
- package/dist/esm/features/services/feature-gate.backend.service.d.ts +110 -0
- package/dist/esm/features/services/feature-gate.backend.service.d.ts.map +1 -0
- package/dist/esm/features/services/feature-gate.backend.service.js +414 -0
- package/dist/esm/features/services/feature-gate.backend.service.js.map +1 -0
- package/dist/esm/features/services/feature-resolution.backend.service.d.ts +163 -0
- package/dist/esm/features/services/feature-resolution.backend.service.d.ts.map +1 -0
- package/dist/esm/features/services/feature-resolution.backend.service.js +550 -0
- package/dist/esm/features/services/feature-resolution.backend.service.js.map +1 -0
- package/dist/esm/features/testing/feature-test-utils.d.ts +85 -0
- package/dist/esm/features/testing/feature-test-utils.d.ts.map +1 -0
- package/dist/esm/features/testing/feature-test-utils.js +127 -0
- package/dist/esm/features/testing/feature-test-utils.js.map +1 -0
- package/dist/esm/files/batches/files-cleanup.batch.backend.service.d.ts +34 -0
- package/dist/esm/files/batches/files-cleanup.batch.backend.service.d.ts.map +1 -0
- package/dist/esm/files/batches/files-cleanup.batch.backend.service.js +226 -0
- package/dist/esm/files/batches/files-cleanup.batch.backend.service.js.map +1 -0
- package/dist/esm/files/constraints/file-analyzers.types.d.ts +76 -0
- package/dist/esm/files/constraints/file-analyzers.types.d.ts.map +1 -0
- package/dist/esm/files/constraints/file-analyzers.types.js +16 -0
- package/dist/esm/files/constraints/file-analyzers.types.js.map +1 -0
- package/dist/esm/files/constraints/file-constraint-resolver-chain.backend.service.d.ts +38 -0
- package/dist/esm/files/constraints/file-constraint-resolver-chain.backend.service.d.ts.map +1 -0
- package/dist/esm/files/constraints/file-constraint-resolver-chain.backend.service.js +99 -0
- package/dist/esm/files/constraints/file-constraint-resolver-chain.backend.service.js.map +1 -0
- package/dist/esm/files/constraints/file-constraint.types.d.ts +77 -0
- package/dist/esm/files/constraints/file-constraint.types.d.ts.map +1 -0
- package/dist/esm/files/constraints/file-constraint.types.js +16 -0
- package/dist/esm/files/constraints/file-constraint.types.js.map +1 -0
- package/dist/esm/files/constraints/file-validation.backend.service.d.ts +63 -0
- package/dist/esm/files/constraints/file-validation.backend.service.d.ts.map +1 -0
- package/dist/esm/files/constraints/file-validation.backend.service.js +317 -0
- package/dist/esm/files/constraints/file-validation.backend.service.js.map +1 -0
- package/dist/esm/files/constraints/resource-field-constraint-resolver.backend.service.d.ts +33 -0
- package/dist/esm/files/constraints/resource-field-constraint-resolver.backend.service.d.ts.map +1 -0
- package/dist/esm/files/constraints/resource-field-constraint-resolver.backend.service.js +126 -0
- package/dist/esm/files/constraints/resource-field-constraint-resolver.backend.service.js.map +1 -0
- package/dist/esm/files/controllers/file.controller.d.ts +145 -0
- package/dist/esm/files/controllers/file.controller.d.ts.map +1 -0
- package/dist/esm/files/controllers/file.controller.js +806 -0
- package/dist/esm/files/controllers/file.controller.js.map +1 -0
- package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.d.ts +85 -0
- package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.d.ts.map +1 -0
- package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.js +512 -0
- package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.js.map +1 -0
- package/dist/esm/files/rag/weaviate-vector-store.backend.service.d.ts +84 -0
- package/dist/esm/files/rag/weaviate-vector-store.backend.service.d.ts.map +1 -0
- package/dist/esm/files/rag/weaviate-vector-store.backend.service.js +224 -0
- package/dist/esm/files/rag/weaviate-vector-store.backend.service.js.map +1 -0
- package/dist/esm/files/scanning/clamav-scanner.backend.service.d.ts +55 -0
- package/dist/esm/files/scanning/clamav-scanner.backend.service.d.ts.map +1 -0
- package/dist/esm/files/scanning/clamav-scanner.backend.service.js +202 -0
- package/dist/esm/files/scanning/clamav-scanner.backend.service.js.map +1 -0
- package/dist/esm/files/scanning/file-scan.types.d.ts +17 -0
- package/dist/esm/files/scanning/file-scan.types.d.ts.map +1 -0
- package/dist/esm/files/scanning/file-scan.types.js +7 -0
- package/dist/esm/files/scanning/file-scan.types.js.map +1 -0
- package/dist/esm/files/scanning/yara-scanner.backend.service.d.ts +73 -0
- package/dist/esm/files/scanning/yara-scanner.backend.service.d.ts.map +1 -0
- package/dist/esm/files/scanning/yara-scanner.backend.service.js +184 -0
- package/dist/esm/files/scanning/yara-scanner.backend.service.js.map +1 -0
- package/dist/esm/files/services/__tests__/mock-file-field-detection.service.d.ts +12 -0
- package/dist/esm/files/services/__tests__/mock-file-field-detection.service.d.ts.map +1 -0
- package/dist/esm/files/services/__tests__/mock-file-field-detection.service.js +41 -0
- package/dist/esm/files/services/__tests__/mock-file-field-detection.service.js.map +1 -0
- package/dist/esm/files/services/__tests__/mock-file-operation-handler.service.d.ts +33 -0
- package/dist/esm/files/services/__tests__/mock-file-operation-handler.service.d.ts.map +1 -0
- package/dist/esm/files/services/__tests__/mock-file-operation-handler.service.js +71 -0
- package/dist/esm/files/services/__tests__/mock-file-operation-handler.service.js.map +1 -0
- package/dist/esm/files/services/__tests__/mock-file-repository.service.d.ts +16 -0
- package/dist/esm/files/services/__tests__/mock-file-repository.service.d.ts.map +1 -0
- package/dist/esm/files/services/__tests__/mock-file-repository.service.js +95 -0
- package/dist/esm/files/services/__tests__/mock-file-repository.service.js.map +1 -0
- package/dist/esm/files/services/file-field-detection.backend.service.d.ts +57 -0
- package/dist/esm/files/services/file-field-detection.backend.service.d.ts.map +1 -0
- package/dist/esm/files/services/file-field-detection.backend.service.js +145 -0
- package/dist/esm/files/services/file-field-detection.backend.service.js.map +1 -0
- package/dist/esm/files/services/file-operation-handler.backend.service.d.ts +103 -0
- package/dist/esm/files/services/file-operation-handler.backend.service.d.ts.map +1 -0
- package/dist/esm/files/services/file-operation-handler.backend.service.js +604 -0
- package/dist/esm/files/services/file-operation-handler.backend.service.js.map +1 -0
- package/dist/esm/files/services/file-population.backend.service.d.ts +73 -0
- package/dist/esm/files/services/file-population.backend.service.d.ts.map +1 -0
- package/dist/esm/files/services/file-population.backend.service.js +367 -0
- package/dist/esm/files/services/file-population.backend.service.js.map +1 -0
- package/dist/esm/files/services/file-rag-indexing.backend.service.d.ts +64 -0
- package/dist/esm/files/services/file-rag-indexing.backend.service.d.ts.map +1 -0
- package/dist/esm/files/services/file-rag-indexing.backend.service.js +188 -0
- package/dist/esm/files/services/file-rag-indexing.backend.service.js.map +1 -0
- package/dist/esm/files/services/file-scanning.backend.service.d.ts +97 -0
- package/dist/esm/files/services/file-scanning.backend.service.d.ts.map +1 -0
- package/dist/esm/files/services/file-scanning.backend.service.js +323 -0
- package/dist/esm/files/services/file-scanning.backend.service.js.map +1 -0
- package/dist/esm/files/services/file-text-extraction.backend.service.d.ts +52 -0
- package/dist/esm/files/services/file-text-extraction.backend.service.d.ts.map +1 -0
- package/dist/esm/files/services/file-text-extraction.backend.service.js +168 -0
- package/dist/esm/files/services/file-text-extraction.backend.service.js.map +1 -0
- package/dist/esm/files/services/files.backend.service.d.ts +235 -0
- package/dist/esm/files/services/files.backend.service.d.ts.map +1 -0
- package/dist/esm/files/services/files.backend.service.js +987 -0
- package/dist/esm/files/services/files.backend.service.js.map +1 -0
- package/dist/esm/files/storage/file-storage-path-resolver.backend.service.d.ts +50 -0
- package/dist/esm/files/storage/file-storage-path-resolver.backend.service.d.ts.map +1 -0
- package/dist/esm/files/storage/file-storage-path-resolver.backend.service.js +253 -0
- package/dist/esm/files/storage/file-storage-path-resolver.backend.service.js.map +1 -0
- package/dist/esm/files/storage/file-storage-provider.types.d.ts +156 -0
- package/dist/esm/files/storage/file-storage-provider.types.d.ts.map +1 -0
- package/dist/esm/files/storage/file-storage-provider.types.js +10 -0
- package/dist/esm/files/storage/file-storage-provider.types.js.map +1 -0
- package/dist/esm/files/storage/file-storage-router.backend.service.d.ts +68 -0
- package/dist/esm/files/storage/file-storage-router.backend.service.d.ts.map +1 -0
- package/dist/esm/files/storage/file-storage-router.backend.service.js +168 -0
- package/dist/esm/files/storage/file-storage-router.backend.service.js.map +1 -0
- package/dist/esm/files/storage/local-directory-storage-provider.backend.service.d.ts +57 -0
- package/dist/esm/files/storage/local-directory-storage-provider.backend.service.d.ts.map +1 -0
- package/dist/esm/files/storage/local-directory-storage-provider.backend.service.js +307 -0
- package/dist/esm/files/storage/local-directory-storage-provider.backend.service.js.map +1 -0
- package/dist/esm/files/storage/wildo-managed-storage-provider.backend.service.d.ts +41 -0
- package/dist/esm/files/storage/wildo-managed-storage-provider.backend.service.d.ts.map +1 -0
- package/dist/esm/files/storage/wildo-managed-storage-provider.backend.service.js +397 -0
- package/dist/esm/files/storage/wildo-managed-storage-provider.backend.service.js.map +1 -0
- package/dist/esm/files/utils/file-field-schema-path.backend.utils.d.ts +30 -0
- package/dist/esm/files/utils/file-field-schema-path.backend.utils.d.ts.map +1 -0
- package/dist/esm/files/utils/file-field-schema-path.backend.utils.js +251 -0
- package/dist/esm/files/utils/file-field-schema-path.backend.utils.js.map +1 -0
- package/dist/esm/files/utils/file-upload.utils.d.ts +74 -0
- package/dist/esm/files/utils/file-upload.utils.d.ts.map +1 -0
- package/dist/esm/files/utils/file-upload.utils.js +116 -0
- package/dist/esm/files/utils/file-upload.utils.js.map +1 -0
- package/dist/esm/files/utils/file-uploader.utils.d.ts +15 -0
- package/dist/esm/files/utils/file-uploader.utils.d.ts.map +1 -0
- package/dist/esm/files/utils/file-uploader.utils.js +47 -0
- package/dist/esm/files/utils/file-uploader.utils.js.map +1 -0
- package/dist/esm/files/utils/file-validation.utils.d.ts +111 -0
- package/dist/esm/files/utils/file-validation.utils.d.ts.map +1 -0
- package/dist/esm/files/utils/file-validation.utils.js +516 -0
- package/dist/esm/files/utils/file-validation.utils.js.map +1 -0
- package/dist/esm/flows-actors/agent-catalogs.backend.d.ts +222 -0
- package/dist/esm/flows-actors/agent-catalogs.backend.d.ts.map +1 -0
- package/dist/esm/flows-actors/agent-catalogs.backend.js +320 -0
- package/dist/esm/flows-actors/agent-catalogs.backend.js.map +1 -0
- package/dist/esm/flows-actors/controllers/flows-actors.controller.d.ts +33 -0
- package/dist/esm/flows-actors/controllers/flows-actors.controller.d.ts.map +1 -0
- package/dist/esm/flows-actors/controllers/flows-actors.controller.js +96 -0
- package/dist/esm/flows-actors/controllers/flows-actors.controller.js.map +1 -0
- package/dist/esm/flows-actors/models/agent-catalogs.backend.definitions.d.ts +225 -0
- package/dist/esm/flows-actors/models/agent-catalogs.backend.definitions.d.ts.map +1 -0
- package/dist/esm/flows-actors/models/agent-catalogs.backend.definitions.js +323 -0
- package/dist/esm/flows-actors/models/agent-catalogs.backend.definitions.js.map +1 -0
- package/dist/esm/flows-actors/models/agent-facets.backend.definitions.d.ts +77 -0
- package/dist/esm/flows-actors/models/agent-facets.backend.definitions.d.ts.map +1 -0
- package/dist/esm/flows-actors/models/agent-facets.backend.definitions.js +28 -0
- package/dist/esm/flows-actors/models/agent-facets.backend.definitions.js.map +1 -0
- package/dist/esm/flows-actors/models/agents.backend.definitions.d.ts +1 -0
- package/dist/esm/flows-actors/models/agents.backend.definitions.d.ts.map +1 -0
- package/dist/esm/flows-actors/models/agents.backend.definitions.js +1 -0
- package/dist/esm/flows-actors/models/agents.backend.definitions.js.map +1 -0
- package/dist/esm/flows-actors/models/core-facets.backend.definitions.d.ts +52 -0
- package/dist/esm/flows-actors/models/core-facets.backend.definitions.d.ts.map +1 -0
- package/dist/esm/flows-actors/models/core-facets.backend.definitions.js +307 -0
- package/dist/esm/flows-actors/models/core-facets.backend.definitions.js.map +1 -0
- package/dist/esm/flows-actors/models/flows-actors.backend.definitions.d.ts +7 -0
- package/dist/esm/flows-actors/models/flows-actors.backend.definitions.d.ts.map +1 -0
- package/dist/esm/flows-actors/models/flows-actors.backend.definitions.js +8 -0
- package/dist/esm/flows-actors/models/flows-actors.backend.definitions.js.map +1 -0
- package/dist/esm/flows-actors/models/flows-actors.backend.schemas.d.ts +30 -0
- package/dist/esm/flows-actors/models/flows-actors.backend.schemas.d.ts.map +1 -0
- package/dist/esm/flows-actors/models/flows-actors.backend.schemas.js +7 -0
- package/dist/esm/flows-actors/models/flows-actors.backend.schemas.js.map +1 -0
- package/dist/esm/flows-actors/services/actors-system.backend.service.d.ts +72 -0
- package/dist/esm/flows-actors/services/actors-system.backend.service.d.ts.map +1 -0
- package/dist/esm/flows-actors/services/actors-system.backend.service.js +229 -0
- package/dist/esm/flows-actors/services/actors-system.backend.service.js.map +1 -0
- package/dist/esm/flows-actors/services/agent-facets.backend.service.d.ts +95 -0
- package/dist/esm/flows-actors/services/agent-facets.backend.service.d.ts.map +1 -0
- package/dist/esm/flows-actors/services/agent-facets.backend.service.js +276 -0
- package/dist/esm/flows-actors/services/agent-facets.backend.service.js.map +1 -0
- package/dist/esm/flows-actors/services/agents.backend.service.d.ts +183 -0
- package/dist/esm/flows-actors/services/agents.backend.service.d.ts.map +1 -0
- package/dist/esm/flows-actors/services/agents.backend.service.js +2095 -0
- package/dist/esm/flows-actors/services/agents.backend.service.js.map +1 -0
- package/dist/esm/flows-actors/services/context-curation.backend.service.d.ts +64 -0
- package/dist/esm/flows-actors/services/context-curation.backend.service.d.ts.map +1 -0
- package/dist/esm/flows-actors/services/context-curation.backend.service.js +180 -0
- package/dist/esm/flows-actors/services/context-curation.backend.service.js.map +1 -0
- package/dist/esm/flows-actors/services/flows-actors-registry.service.d.ts +101 -0
- package/dist/esm/flows-actors/services/flows-actors-registry.service.d.ts.map +1 -0
- package/dist/esm/flows-actors/services/flows-actors-registry.service.js +313 -0
- package/dist/esm/flows-actors/services/flows-actors-registry.service.js.map +1 -0
- package/dist/esm/flows-actors/services/flows.backend.services.d.ts +64 -0
- package/dist/esm/flows-actors/services/flows.backend.services.d.ts.map +1 -0
- package/dist/esm/flows-actors/services/flows.backend.services.js +203 -0
- package/dist/esm/flows-actors/services/flows.backend.services.js.map +1 -0
- package/dist/esm/flows-actors/services/prompt-compiler.backend.service.d.ts +91 -0
- package/dist/esm/flows-actors/services/prompt-compiler.backend.service.d.ts.map +1 -0
- package/dist/esm/flows-actors/services/prompt-compiler.backend.service.js +629 -0
- package/dist/esm/flows-actors/services/prompt-compiler.backend.service.js.map +1 -0
- package/dist/esm/flows-actors/utils/cli-runtime-operation-support.backend.utils.d.ts +15 -0
- package/dist/esm/flows-actors/utils/cli-runtime-operation-support.backend.utils.d.ts.map +1 -0
- package/dist/esm/flows-actors/utils/cli-runtime-operation-support.backend.utils.js +55 -0
- package/dist/esm/flows-actors/utils/cli-runtime-operation-support.backend.utils.js.map +1 -0
- package/dist/esm/flows-actors/utils/cli-runtime-runner.backend.utils.d.ts +22 -0
- package/dist/esm/flows-actors/utils/cli-runtime-runner.backend.utils.d.ts.map +1 -0
- package/dist/esm/flows-actors/utils/cli-runtime-runner.backend.utils.js +131 -0
- package/dist/esm/flows-actors/utils/cli-runtime-runner.backend.utils.js.map +1 -0
- package/dist/esm/flows-actors/utils/flows-actors-frontend-extractor.utils.d.ts +15 -0
- package/dist/esm/flows-actors/utils/flows-actors-frontend-extractor.utils.d.ts.map +1 -0
- package/dist/esm/flows-actors/utils/flows-actors-frontend-extractor.utils.js +43 -0
- package/dist/esm/flows-actors/utils/flows-actors-frontend-extractor.utils.js.map +1 -0
- package/dist/esm/flows-actors/utils/prompt-ir-adapters.backend.utils.d.ts +66 -0
- package/dist/esm/flows-actors/utils/prompt-ir-adapters.backend.utils.d.ts.map +1 -0
- package/dist/esm/flows-actors/utils/prompt-ir-adapters.backend.utils.js +219 -0
- package/dist/esm/flows-actors/utils/prompt-ir-adapters.backend.utils.js.map +1 -0
- package/dist/esm/guidance/batches/dormancy-detection.batch.backend.service.d.ts +17 -0
- package/dist/esm/guidance/batches/dormancy-detection.batch.backend.service.d.ts.map +1 -0
- package/dist/esm/guidance/batches/dormancy-detection.batch.backend.service.js +110 -0
- package/dist/esm/guidance/batches/dormancy-detection.batch.backend.service.js.map +1 -0
- package/dist/esm/guidance/services/guidance-trigger-evaluator.backend.service.d.ts +41 -0
- package/dist/esm/guidance/services/guidance-trigger-evaluator.backend.service.d.ts.map +1 -0
- package/dist/esm/guidance/services/guidance-trigger-evaluator.backend.service.js +135 -0
- package/dist/esm/guidance/services/guidance-trigger-evaluator.backend.service.js.map +1 -0
- package/dist/esm/guidance/services/lifecycle-custom-implementations.backend.d.ts +33 -0
- package/dist/esm/guidance/services/lifecycle-custom-implementations.backend.d.ts.map +1 -0
- package/dist/esm/guidance/services/lifecycle-custom-implementations.backend.js +105 -0
- package/dist/esm/guidance/services/lifecycle-custom-implementations.backend.js.map +1 -0
- package/dist/esm/guidance/services/lifecycle-evaluator.backend.service.d.ts +103 -0
- package/dist/esm/guidance/services/lifecycle-evaluator.backend.service.d.ts.map +1 -0
- package/dist/esm/guidance/services/lifecycle-evaluator.backend.service.js +685 -0
- package/dist/esm/guidance/services/lifecycle-evaluator.backend.service.js.map +1 -0
- package/dist/esm/guidance/services/milestone-condition-registry.backend.service.d.ts +23 -0
- package/dist/esm/guidance/services/milestone-condition-registry.backend.service.d.ts.map +1 -0
- package/dist/esm/guidance/services/milestone-condition-registry.backend.service.js +57 -0
- package/dist/esm/guidance/services/milestone-condition-registry.backend.service.js.map +1 -0
- package/dist/esm/guidance/services/milestone-definition-registry.backend.service.d.ts +49 -0
- package/dist/esm/guidance/services/milestone-definition-registry.backend.service.d.ts.map +1 -0
- package/dist/esm/guidance/services/milestone-definition-registry.backend.service.js +248 -0
- package/dist/esm/guidance/services/milestone-definition-registry.backend.service.js.map +1 -0
- package/dist/esm/guidance/services/milestone-evaluator.backend.service.d.ts +64 -0
- package/dist/esm/guidance/services/milestone-evaluator.backend.service.d.ts.map +1 -0
- package/dist/esm/guidance/services/milestone-evaluator.backend.service.js +487 -0
- package/dist/esm/guidance/services/milestone-evaluator.backend.service.js.map +1 -0
- package/dist/esm/i18n/controllers/i18n-controller.backend.service.d.ts +55 -0
- package/dist/esm/i18n/controllers/i18n-controller.backend.service.d.ts.map +1 -0
- package/dist/esm/i18n/controllers/i18n-controller.backend.service.js +208 -0
- package/dist/esm/i18n/controllers/i18n-controller.backend.service.js.map +1 -0
- package/dist/esm/i18n/services/i18n.backend.service.d.ts +43 -0
- package/dist/esm/i18n/services/i18n.backend.service.d.ts.map +1 -0
- package/dist/esm/i18n/services/i18n.backend.service.js +83 -0
- package/dist/esm/i18n/services/i18n.backend.service.js.map +1 -0
- package/dist/esm/index.d.ts +203 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +239 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/inject/models/container.d.ts +44 -0
- package/dist/esm/inject/models/container.d.ts.map +1 -0
- package/dist/esm/inject/models/container.js +489 -0
- package/dist/esm/inject/models/container.js.map +1 -0
- package/dist/esm/inject/models/service-types.d.ts +198 -0
- package/dist/esm/inject/models/service-types.d.ts.map +1 -0
- package/dist/esm/inject/models/service-types.js +226 -0
- package/dist/esm/inject/models/service-types.js.map +1 -0
- package/dist/esm/monitoring/analytics/controllers/analytics.backend.controller.d.ts +34 -0
- package/dist/esm/monitoring/analytics/controllers/analytics.backend.controller.d.ts.map +1 -0
- package/dist/esm/monitoring/analytics/controllers/analytics.backend.controller.js +122 -0
- package/dist/esm/monitoring/analytics/controllers/analytics.backend.controller.js.map +1 -0
- package/dist/esm/monitoring/analytics/services/value-moment-engine.backend.service.d.ts +41 -0
- package/dist/esm/monitoring/analytics/services/value-moment-engine.backend.service.d.ts.map +1 -0
- package/dist/esm/monitoring/analytics/services/value-moment-engine.backend.service.js +62 -0
- package/dist/esm/monitoring/analytics/services/value-moment-engine.backend.service.js.map +1 -0
- package/dist/esm/monitoring/analytics/services/value-moment-handler-registry.backend.service.d.ts +18 -0
- package/dist/esm/monitoring/analytics/services/value-moment-handler-registry.backend.service.d.ts.map +1 -0
- package/dist/esm/monitoring/analytics/services/value-moment-handler-registry.backend.service.js +43 -0
- package/dist/esm/monitoring/analytics/services/value-moment-handler-registry.backend.service.js.map +1 -0
- package/dist/esm/monitoring/logger/middleware/logging.middleware.d.ts +12 -0
- package/dist/esm/monitoring/logger/middleware/logging.middleware.d.ts.map +1 -0
- package/dist/esm/monitoring/logger/middleware/logging.middleware.js +25 -0
- package/dist/esm/monitoring/logger/middleware/logging.middleware.js.map +1 -0
- package/dist/esm/monitoring/logger/models/logger.backend.schemas.d.ts +41 -0
- package/dist/esm/monitoring/logger/models/logger.backend.schemas.d.ts.map +1 -0
- package/dist/esm/monitoring/logger/models/logger.backend.schemas.js +29 -0
- package/dist/esm/monitoring/logger/models/logger.backend.schemas.js.map +1 -0
- package/dist/esm/monitoring/logger/services/__tests__/mock-logger.service.d.ts +22 -0
- package/dist/esm/monitoring/logger/services/__tests__/mock-logger.service.d.ts.map +1 -0
- package/dist/esm/monitoring/logger/services/__tests__/mock-logger.service.js +53 -0
- package/dist/esm/monitoring/logger/services/__tests__/mock-logger.service.js.map +1 -0
- package/dist/esm/monitoring/logger/services/logger.service.d.ts +37 -0
- package/dist/esm/monitoring/logger/services/logger.service.d.ts.map +1 -0
- package/dist/esm/monitoring/logger/services/logger.service.js +189 -0
- package/dist/esm/monitoring/logger/services/logger.service.js.map +1 -0
- package/dist/esm/monitoring/observability/middleware/metrics.middleware.d.ts +38 -0
- package/dist/esm/monitoring/observability/middleware/metrics.middleware.d.ts.map +1 -0
- package/dist/esm/monitoring/observability/middleware/metrics.middleware.js +147 -0
- package/dist/esm/monitoring/observability/middleware/metrics.middleware.js.map +1 -0
- package/dist/esm/monitoring/observability/middleware/telemetry.middleware.d.ts +26 -0
- package/dist/esm/monitoring/observability/middleware/telemetry.middleware.d.ts.map +1 -0
- package/dist/esm/monitoring/observability/middleware/telemetry.middleware.js +117 -0
- package/dist/esm/monitoring/observability/middleware/telemetry.middleware.js.map +1 -0
- package/dist/esm/monitoring/observability/middleware/tracing.middleware.d.ts +28 -0
- package/dist/esm/monitoring/observability/middleware/tracing.middleware.d.ts.map +1 -0
- package/dist/esm/monitoring/observability/middleware/tracing.middleware.js +182 -0
- package/dist/esm/monitoring/observability/middleware/tracing.middleware.js.map +1 -0
- package/dist/esm/monitoring/observability/models/observability.backend.schemas.d.ts +86 -0
- package/dist/esm/monitoring/observability/models/observability.backend.schemas.d.ts.map +1 -0
- package/dist/esm/monitoring/observability/models/observability.backend.schemas.js +1 -0
- package/dist/esm/monitoring/observability/models/observability.backend.schemas.js.map +1 -0
- package/dist/esm/monitoring/observability/services/instrumentations/custom.instrumentations.d.ts +57 -0
- package/dist/esm/monitoring/observability/services/instrumentations/custom.instrumentations.d.ts.map +1 -0
- package/dist/esm/monitoring/observability/services/instrumentations/custom.instrumentations.js +77 -0
- package/dist/esm/monitoring/observability/services/instrumentations/custom.instrumentations.js.map +1 -0
- package/dist/esm/monitoring/observability/services/metrics.service.d.ts +27 -0
- package/dist/esm/monitoring/observability/services/metrics.service.d.ts.map +1 -0
- package/dist/esm/monitoring/observability/services/metrics.service.js +236 -0
- package/dist/esm/monitoring/observability/services/metrics.service.js.map +1 -0
- package/dist/esm/monitoring/observability/services/telemetry.service.d.ts +28 -0
- package/dist/esm/monitoring/observability/services/telemetry.service.d.ts.map +1 -0
- package/dist/esm/monitoring/observability/services/telemetry.service.js +144 -0
- package/dist/esm/monitoring/observability/services/telemetry.service.js.map +1 -0
- package/dist/esm/monitoring/observability/services/tracer.service.d.ts +24 -0
- package/dist/esm/monitoring/observability/services/tracer.service.d.ts.map +1 -0
- package/dist/esm/monitoring/observability/services/tracer.service.js +287 -0
- package/dist/esm/monitoring/observability/services/tracer.service.js.map +1 -0
- package/dist/esm/notifications/email/components/email-components.d.ts +90 -0
- package/dist/esm/notifications/email/components/email-components.d.ts.map +1 -0
- package/dist/esm/notifications/email/components/email-components.js +171 -0
- package/dist/esm/notifications/email/components/email-components.js.map +1 -0
- package/dist/esm/notifications/email/models/email-context-provider.interface.d.ts +80 -0
- package/dist/esm/notifications/email/models/email-context-provider.interface.d.ts.map +1 -0
- package/dist/esm/notifications/email/models/email-context-provider.interface.js +25 -0
- package/dist/esm/notifications/email/models/email-context-provider.interface.js.map +1 -0
- package/dist/esm/notifications/email/models/email-template-definition.d.ts +68 -0
- package/dist/esm/notifications/email/models/email-template-definition.d.ts.map +1 -0
- package/dist/esm/notifications/email/models/email-template-definition.js +12 -0
- package/dist/esm/notifications/email/models/email-template-definition.js.map +1 -0
- package/dist/esm/notifications/email/models/email-template.actors-system.backend.definitions.d.ts +19 -0
- package/dist/esm/notifications/email/models/email-template.actors-system.backend.definitions.d.ts.map +1 -0
- package/dist/esm/notifications/email/models/email-template.actors-system.backend.definitions.js +66 -0
- package/dist/esm/notifications/email/models/email-template.actors-system.backend.definitions.js.map +1 -0
- package/dist/esm/notifications/email/models/email.backend.scheamas.d.ts +1 -0
- package/dist/esm/notifications/email/models/email.backend.scheamas.d.ts.map +1 -0
- package/dist/esm/notifications/email/models/email.backend.scheamas.js +1 -0
- package/dist/esm/notifications/email/models/email.backend.scheamas.js.map +1 -0
- package/dist/esm/notifications/email/services/email-batch-send.batch.backend.service.d.ts +74 -0
- package/dist/esm/notifications/email/services/email-batch-send.batch.backend.service.d.ts.map +1 -0
- package/dist/esm/notifications/email/services/email-batch-send.batch.backend.service.js +196 -0
- package/dist/esm/notifications/email/services/email-batch-send.batch.backend.service.js.map +1 -0
- package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.d.ts +49 -0
- package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.d.ts.map +1 -0
- package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.js +141 -0
- package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.js.map +1 -0
- package/dist/esm/notifications/email/services/email-renderer.backend.service.d.ts +74 -0
- package/dist/esm/notifications/email/services/email-renderer.backend.service.d.ts.map +1 -0
- package/dist/esm/notifications/email/services/email-renderer.backend.service.js +215 -0
- package/dist/esm/notifications/email/services/email-renderer.backend.service.js.map +1 -0
- package/dist/esm/notifications/email/services/email-template-compiler.backend.service.d.ts +37 -0
- package/dist/esm/notifications/email/services/email-template-compiler.backend.service.d.ts.map +1 -0
- package/dist/esm/notifications/email/services/email-template-compiler.backend.service.js +121 -0
- package/dist/esm/notifications/email/services/email-template-compiler.backend.service.js.map +1 -0
- package/dist/esm/notifications/email/services/email-template-generation.backend.service.d.ts +115 -0
- package/dist/esm/notifications/email/services/email-template-generation.backend.service.d.ts.map +1 -0
- package/dist/esm/notifications/email/services/email-template-generation.backend.service.js +634 -0
- package/dist/esm/notifications/email/services/email-template-generation.backend.service.js.map +1 -0
- package/dist/esm/notifications/email/services/email-template-registry.backend.service.d.ts +48 -0
- package/dist/esm/notifications/email/services/email-template-registry.backend.service.d.ts.map +1 -0
- package/dist/esm/notifications/email/services/email-template-registry.backend.service.js +146 -0
- package/dist/esm/notifications/email/services/email-template-registry.backend.service.js.map +1 -0
- package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.d.ts +58 -0
- package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.d.ts.map +1 -0
- package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.js +223 -0
- package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.js.map +1 -0
- package/dist/esm/notifications/email/services/email-template-validator.backend.service.d.ts +49 -0
- package/dist/esm/notifications/email/services/email-template-validator.backend.service.d.ts.map +1 -0
- package/dist/esm/notifications/email/services/email-template-validator.backend.service.js +204 -0
- package/dist/esm/notifications/email/services/email-template-validator.backend.service.js.map +1 -0
- package/dist/esm/notifications/email/services/email.backend.service.d.ts +76 -0
- package/dist/esm/notifications/email/services/email.backend.service.d.ts.map +1 -0
- package/dist/esm/notifications/email/services/email.backend.service.js +294 -0
- package/dist/esm/notifications/email/services/email.backend.service.js.map +1 -0
- package/dist/esm/notifications/email/utils/color-conversion.utils.d.ts +56 -0
- package/dist/esm/notifications/email/utils/color-conversion.utils.d.ts.map +1 -0
- package/dist/esm/notifications/email/utils/color-conversion.utils.js +108 -0
- package/dist/esm/notifications/email/utils/color-conversion.utils.js.map +1 -0
- package/dist/esm/notifications/email/utils/interpolate-email-label.utils.d.ts +8 -0
- package/dist/esm/notifications/email/utils/interpolate-email-label.utils.d.ts.map +1 -0
- package/dist/esm/notifications/email/utils/interpolate-email-label.utils.js +15 -0
- package/dist/esm/notifications/email/utils/interpolate-email-label.utils.js.map +1 -0
- package/dist/esm/notifications/email/utils/zod-to-typescript.utils.d.ts +50 -0
- package/dist/esm/notifications/email/utils/zod-to-typescript.utils.d.ts.map +1 -0
- package/dist/esm/notifications/email/utils/zod-to-typescript.utils.js +281 -0
- package/dist/esm/notifications/email/utils/zod-to-typescript.utils.js.map +1 -0
- package/dist/esm/notifications/services/notification-badge.backend.service.d.ts +94 -0
- package/dist/esm/notifications/services/notification-badge.backend.service.d.ts.map +1 -0
- package/dist/esm/notifications/services/notification-badge.backend.service.js +292 -0
- package/dist/esm/notifications/services/notification-badge.backend.service.js.map +1 -0
- package/dist/esm/notifications/services/notifications-dispatcher.backend.service.d.ts +202 -0
- package/dist/esm/notifications/services/notifications-dispatcher.backend.service.d.ts.map +1 -0
- package/dist/esm/notifications/services/notifications-dispatcher.backend.service.js +1290 -0
- package/dist/esm/notifications/services/notifications-dispatcher.backend.service.js.map +1 -0
- package/dist/esm/notifications/sms/services/sms.backend.service.d.ts +50 -0
- package/dist/esm/notifications/sms/services/sms.backend.service.d.ts.map +1 -0
- package/dist/esm/notifications/sms/services/sms.backend.service.js +209 -0
- package/dist/esm/notifications/sms/services/sms.backend.service.js.map +1 -0
- package/dist/esm/notifications/webhooks/controllers/webhook-auto-controller.backend.service.d.ts +58 -0
- package/dist/esm/notifications/webhooks/controllers/webhook-auto-controller.backend.service.d.ts.map +1 -0
- package/dist/esm/notifications/webhooks/controllers/webhook-auto-controller.backend.service.js +184 -0
- package/dist/esm/notifications/webhooks/controllers/webhook-auto-controller.backend.service.js.map +1 -0
- package/dist/esm/notifications/webhooks/services/polymorphic-lookup.backend.service.d.ts +56 -0
- package/dist/esm/notifications/webhooks/services/polymorphic-lookup.backend.service.d.ts.map +1 -0
- package/dist/esm/notifications/webhooks/services/polymorphic-lookup.backend.service.js +109 -0
- package/dist/esm/notifications/webhooks/services/polymorphic-lookup.backend.service.js.map +1 -0
- package/dist/esm/notifications/webhooks/services/webhook-handler.backend.service.d.ts +96 -0
- package/dist/esm/notifications/webhooks/services/webhook-handler.backend.service.d.ts.map +1 -0
- package/dist/esm/notifications/webhooks/services/webhook-handler.backend.service.js +396 -0
- package/dist/esm/notifications/webhooks/services/webhook-handler.backend.service.js.map +1 -0
- package/dist/esm/organizations/services/org-creation-on-registration.backend.utils.d.ts +39 -0
- package/dist/esm/organizations/services/org-creation-on-registration.backend.utils.d.ts.map +1 -0
- package/dist/esm/organizations/services/org-creation-on-registration.backend.utils.js +73 -0
- package/dist/esm/organizations/services/org-creation-on-registration.backend.utils.js.map +1 -0
- package/dist/esm/organizations/services/org-member-roles-validation.backend.utils.d.ts +22 -0
- package/dist/esm/organizations/services/org-member-roles-validation.backend.utils.d.ts.map +1 -0
- package/dist/esm/organizations/services/org-member-roles-validation.backend.utils.js +35 -0
- package/dist/esm/organizations/services/org-member-roles-validation.backend.utils.js.map +1 -0
- package/dist/esm/organizations/services/organization-custom-implementation.backend.service.d.ts +10 -0
- package/dist/esm/organizations/services/organization-custom-implementation.backend.service.d.ts.map +1 -0
- package/dist/esm/organizations/services/organization-custom-implementation.backend.service.js +77 -0
- package/dist/esm/organizations/services/organization-custom-implementation.backend.service.js.map +1 -0
- package/dist/esm/organizations/services/organization-member-custom-implementation.backend.service.d.ts +10 -0
- package/dist/esm/organizations/services/organization-member-custom-implementation.backend.service.d.ts.map +1 -0
- package/dist/esm/organizations/services/organization-member-custom-implementation.backend.service.js +131 -0
- package/dist/esm/organizations/services/organization-member-custom-implementation.backend.service.js.map +1 -0
- package/dist/esm/organizations/services/scim-provisioning-gate.backend.utils.d.ts +22 -0
- package/dist/esm/organizations/services/scim-provisioning-gate.backend.utils.d.ts.map +1 -0
- package/dist/esm/organizations/services/scim-provisioning-gate.backend.utils.js +21 -0
- package/dist/esm/organizations/services/scim-provisioning-gate.backend.utils.js.map +1 -0
- package/dist/esm/organizations/services/user-org-type-grant.backend.utils.d.ts +25 -0
- package/dist/esm/organizations/services/user-org-type-grant.backend.utils.d.ts.map +1 -0
- package/dist/esm/organizations/services/user-org-type-grant.backend.utils.js +34 -0
- package/dist/esm/organizations/services/user-org-type-grant.backend.utils.js.map +1 -0
- package/dist/esm/organizations/services/user-type-revocation-on-org-leave.backend.utils.d.ts +32 -0
- package/dist/esm/organizations/services/user-type-revocation-on-org-leave.backend.utils.d.ts.map +1 -0
- package/dist/esm/organizations/services/user-type-revocation-on-org-leave.backend.utils.js +66 -0
- package/dist/esm/organizations/services/user-type-revocation-on-org-leave.backend.utils.js.map +1 -0
- package/dist/esm/queue/adapters/rabbitmq-adapter.backend.service.d.ts +126 -0
- package/dist/esm/queue/adapters/rabbitmq-adapter.backend.service.d.ts.map +1 -0
- package/dist/esm/queue/adapters/rabbitmq-adapter.backend.service.js +370 -0
- package/dist/esm/queue/adapters/rabbitmq-adapter.backend.service.js.map +1 -0
- package/dist/esm/queue/apps-crontabs-manager.backend.service.d.ts +86 -0
- package/dist/esm/queue/apps-crontabs-manager.backend.service.d.ts.map +1 -0
- package/dist/esm/queue/apps-crontabs-manager.backend.service.js +176 -0
- package/dist/esm/queue/apps-crontabs-manager.backend.service.js.map +1 -0
- package/dist/esm/queue/cron-job-sync.backend.service.d.ts +42 -0
- package/dist/esm/queue/cron-job-sync.backend.service.d.ts.map +1 -0
- package/dist/esm/queue/cron-job-sync.backend.service.js +181 -0
- package/dist/esm/queue/cron-job-sync.backend.service.js.map +1 -0
- package/dist/esm/queue/domain-queue-consumer.backend.service.d.ts +84 -0
- package/dist/esm/queue/domain-queue-consumer.backend.service.d.ts.map +1 -0
- package/dist/esm/queue/domain-queue-consumer.backend.service.js +275 -0
- package/dist/esm/queue/domain-queue-consumer.backend.service.js.map +1 -0
- package/dist/esm/queue/job-completion-registry.backend.service.d.ts +111 -0
- package/dist/esm/queue/job-completion-registry.backend.service.d.ts.map +1 -0
- package/dist/esm/queue/job-completion-registry.backend.service.js +237 -0
- package/dist/esm/queue/job-completion-registry.backend.service.js.map +1 -0
- package/dist/esm/queue/job-consumer.backend.service.d.ts +109 -0
- package/dist/esm/queue/job-consumer.backend.service.d.ts.map +1 -0
- package/dist/esm/queue/job-consumer.backend.service.js +515 -0
- package/dist/esm/queue/job-consumer.backend.service.js.map +1 -0
- package/dist/esm/queue/job-executor.backend.service.d.ts +53 -0
- package/dist/esm/queue/job-executor.backend.service.d.ts.map +1 -0
- package/dist/esm/queue/job-executor.backend.service.js +278 -0
- package/dist/esm/queue/job-executor.backend.service.js.map +1 -0
- package/dist/esm/queue/job-payload-storage.backend.service.d.ts +86 -0
- package/dist/esm/queue/job-payload-storage.backend.service.d.ts.map +1 -0
- package/dist/esm/queue/job-payload-storage.backend.service.js +250 -0
- package/dist/esm/queue/job-payload-storage.backend.service.js.map +1 -0
- package/dist/esm/queue/job-status-tracking.backend.service.d.ts +97 -0
- package/dist/esm/queue/job-status-tracking.backend.service.d.ts.map +1 -0
- package/dist/esm/queue/job-status-tracking.backend.service.js +281 -0
- package/dist/esm/queue/job-status-tracking.backend.service.js.map +1 -0
- package/dist/esm/queue/queue-monitoring.backend.service.d.ts +71 -0
- package/dist/esm/queue/queue-monitoring.backend.service.d.ts.map +1 -0
- package/dist/esm/queue/queue-monitoring.backend.service.js +297 -0
- package/dist/esm/queue/queue-monitoring.backend.service.js.map +1 -0
- package/dist/esm/queue/queue-worker-initializer.backend.service.d.ts +63 -0
- package/dist/esm/queue/queue-worker-initializer.backend.service.d.ts.map +1 -0
- package/dist/esm/queue/queue-worker-initializer.backend.service.js +171 -0
- package/dist/esm/queue/queue-worker-initializer.backend.service.js.map +1 -0
- package/dist/esm/queue/queue.backend.service.d.ts +108 -0
- package/dist/esm/queue/queue.backend.service.d.ts.map +1 -0
- package/dist/esm/queue/queue.backend.service.js +419 -0
- package/dist/esm/queue/queue.backend.service.js.map +1 -0
- package/dist/esm/queue/scheduled-message-verifier.backend.service.d.ts +74 -0
- package/dist/esm/queue/scheduled-message-verifier.backend.service.d.ts.map +1 -0
- package/dist/esm/queue/scheduled-message-verifier.backend.service.js +189 -0
- package/dist/esm/queue/scheduled-message-verifier.backend.service.js.map +1 -0
- package/dist/esm/queue/worker-shutdown-manager.backend.service.d.ts +124 -0
- package/dist/esm/queue/worker-shutdown-manager.backend.service.d.ts.map +1 -0
- package/dist/esm/queue/worker-shutdown-manager.backend.service.js +250 -0
- package/dist/esm/queue/worker-shutdown-manager.backend.service.js.map +1 -0
- package/dist/esm/requests/models/api-routes.backend.defintions.d.ts +34 -0
- package/dist/esm/requests/models/api-routes.backend.defintions.d.ts.map +1 -0
- package/dist/esm/requests/models/api-routes.backend.defintions.js +42 -0
- package/dist/esm/requests/models/api-routes.backend.defintions.js.map +1 -0
- package/dist/esm/requests/models/requests.backend.schemas.d.ts +48 -0
- package/dist/esm/requests/models/requests.backend.schemas.d.ts.map +1 -0
- package/dist/esm/requests/models/requests.backend.schemas.js +7 -0
- package/dist/esm/requests/models/requests.backend.schemas.js.map +1 -0
- package/dist/esm/requests/service/__tests__/mock-apps-shared-resources-gateway.service.d.ts +6 -0
- package/dist/esm/requests/service/__tests__/mock-apps-shared-resources-gateway.service.d.ts.map +1 -0
- package/dist/esm/requests/service/__tests__/mock-apps-shared-resources-gateway.service.js +20 -0
- package/dist/esm/requests/service/__tests__/mock-apps-shared-resources-gateway.service.js.map +1 -0
- package/dist/esm/requests/service/apps-shared-resources-gateway.backend.service.d.ts +84 -0
- package/dist/esm/requests/service/apps-shared-resources-gateway.backend.service.d.ts.map +1 -0
- package/dist/esm/requests/service/apps-shared-resources-gateway.backend.service.js +462 -0
- package/dist/esm/requests/service/apps-shared-resources-gateway.backend.service.js.map +1 -0
- package/dist/esm/requests/service/platform-mutualized-handler.backend.service.d.ts +9 -0
- package/dist/esm/requests/service/platform-mutualized-handler.backend.service.d.ts.map +1 -0
- package/dist/esm/requests/service/platform-mutualized-handler.backend.service.js +36 -0
- package/dist/esm/requests/service/platform-mutualized-handler.backend.service.js.map +1 -0
- package/dist/esm/requests/service/platform-requests.backend.utils.d.ts +6 -0
- package/dist/esm/requests/service/platform-requests.backend.utils.d.ts.map +1 -0
- package/dist/esm/requests/service/platform-requests.backend.utils.js +47 -0
- package/dist/esm/requests/service/platform-requests.backend.utils.js.map +1 -0
- package/dist/esm/requests/service/remote-client-base.backend.service.d.ts +111 -0
- package/dist/esm/requests/service/remote-client-base.backend.service.d.ts.map +1 -0
- package/dist/esm/requests/service/remote-client-base.backend.service.js +354 -0
- package/dist/esm/requests/service/remote-client-base.backend.service.js.map +1 -0
- package/dist/esm/requests/service/serverless-services-handler.backend.service.d.ts +9 -0
- package/dist/esm/requests/service/serverless-services-handler.backend.service.d.ts.map +1 -0
- package/dist/esm/requests/service/serverless-services-handler.backend.service.js +36 -0
- package/dist/esm/requests/service/serverless-services-handler.backend.service.js.map +1 -0
- package/dist/esm/requests/service/websocket.service.d.ts +507 -0
- package/dist/esm/requests/service/websocket.service.d.ts.map +1 -0
- package/dist/esm/requests/service/websocket.service.js +2222 -0
- package/dist/esm/requests/service/websocket.service.js.map +1 -0
- package/dist/esm/resources/models/custom-service-implementations.backend.definition.d.ts +3 -0
- package/dist/esm/resources/models/custom-service-implementations.backend.definition.d.ts.map +1 -0
- package/dist/esm/resources/models/custom-service-implementations.backend.definition.js +17 -0
- package/dist/esm/resources/models/custom-service-implementations.backend.definition.js.map +1 -0
- package/dist/esm/resources/models/index.d.ts +7 -0
- package/dist/esm/resources/models/index.d.ts.map +1 -0
- package/dist/esm/resources/models/index.js +7 -0
- package/dist/esm/resources/models/index.js.map +1 -0
- package/dist/esm/resources/models/resources-operations.backend.definitions.d.ts +4 -0
- package/dist/esm/resources/models/resources-operations.backend.definitions.d.ts.map +1 -0
- package/dist/esm/resources/models/resources-operations.backend.definitions.js +7 -0
- package/dist/esm/resources/models/resources-operations.backend.definitions.js.map +1 -0
- package/dist/esm/resources/models/resources-relationships.backend.definitions.d.ts +3 -0
- package/dist/esm/resources/models/resources-relationships.backend.definitions.d.ts.map +1 -0
- package/dist/esm/resources/models/resources-relationships.backend.definitions.js +19 -0
- package/dist/esm/resources/models/resources-relationships.backend.definitions.js.map +1 -0
- package/dist/esm/resources/models/resources-types.backend.schemas.d.ts +13 -0
- package/dist/esm/resources/models/resources-types.backend.schemas.d.ts.map +1 -0
- package/dist/esm/resources/models/resources-types.backend.schemas.js +14 -0
- package/dist/esm/resources/models/resources-types.backend.schemas.js.map +1 -0
- package/dist/esm/resources/models/resources.backend.schemas.d.ts +7 -0
- package/dist/esm/resources/models/resources.backend.schemas.d.ts.map +1 -0
- package/dist/esm/resources/models/resources.backend.schemas.js +8 -0
- package/dist/esm/resources/models/resources.backend.schemas.js.map +1 -0
- package/dist/esm/resources/models/virtual-fields.backend.types.d.ts +121 -0
- package/dist/esm/resources/models/virtual-fields.backend.types.d.ts.map +1 -0
- package/dist/esm/resources/models/virtual-fields.backend.types.js +10 -0
- package/dist/esm/resources/models/virtual-fields.backend.types.js.map +1 -0
- package/dist/esm/resources/services/__tests__/mock-resources-registry.service.d.ts +25 -0
- package/dist/esm/resources/services/__tests__/mock-resources-registry.service.d.ts.map +1 -0
- package/dist/esm/resources/services/__tests__/mock-resources-registry.service.js +59 -0
- package/dist/esm/resources/services/__tests__/mock-resources-registry.service.js.map +1 -0
- package/dist/esm/resources/services/resource-context.backend.service.d.ts +321 -0
- package/dist/esm/resources/services/resource-context.backend.service.d.ts.map +1 -0
- package/dist/esm/resources/services/resource-context.backend.service.js +723 -0
- package/dist/esm/resources/services/resource-context.backend.service.js.map +1 -0
- package/dist/esm/resources/services/resource-id.backend.service.d.ts +110 -0
- package/dist/esm/resources/services/resource-id.backend.service.d.ts.map +1 -0
- package/dist/esm/resources/services/resource-id.backend.service.js +267 -0
- package/dist/esm/resources/services/resource-id.backend.service.js.map +1 -0
- package/dist/esm/resources/services/resource-population.backend.service.d.ts +149 -0
- package/dist/esm/resources/services/resource-population.backend.service.d.ts.map +1 -0
- package/dist/esm/resources/services/resource-population.backend.service.js +543 -0
- package/dist/esm/resources/services/resource-population.backend.service.js.map +1 -0
- package/dist/esm/resources/services/resources-registry.backend.service.d.ts +151 -0
- package/dist/esm/resources/services/resources-registry.backend.service.d.ts.map +1 -0
- package/dist/esm/resources/services/resources-registry.backend.service.js +867 -0
- package/dist/esm/resources/services/resources-registry.backend.service.js.map +1 -0
- package/dist/esm/resources/services/virtual-fields.backend.service.d.ts +72 -0
- package/dist/esm/resources/services/virtual-fields.backend.service.d.ts.map +1 -0
- package/dist/esm/resources/services/virtual-fields.backend.service.js +254 -0
- package/dist/esm/resources/services/virtual-fields.backend.service.js.map +1 -0
- package/dist/esm/runtime/controllers/health-controller.backend.service.d.ts +73 -0
- package/dist/esm/runtime/controllers/health-controller.backend.service.d.ts.map +1 -0
- package/dist/esm/runtime/controllers/health-controller.backend.service.js +275 -0
- package/dist/esm/runtime/controllers/health-controller.backend.service.js.map +1 -0
- package/dist/esm/runtime/domain-module.backend.definitions.d.ts +43 -0
- package/dist/esm/runtime/domain-module.backend.definitions.d.ts.map +1 -0
- package/dist/esm/runtime/domain-module.backend.definitions.js +70 -0
- package/dist/esm/runtime/domain-module.backend.definitions.js.map +1 -0
- package/dist/esm/runtime/models/execution-context.backend.schemas.d.ts +253 -0
- package/dist/esm/runtime/models/execution-context.backend.schemas.d.ts.map +1 -0
- package/dist/esm/runtime/models/execution-context.backend.schemas.js +329 -0
- package/dist/esm/runtime/models/execution-context.backend.schemas.js.map +1 -0
- package/dist/esm/runtime/models/runtime.backend.schemas.d.ts +45 -0
- package/dist/esm/runtime/models/runtime.backend.schemas.d.ts.map +1 -0
- package/dist/esm/runtime/models/runtime.backend.schemas.js +73 -0
- package/dist/esm/runtime/models/runtime.backend.schemas.js.map +1 -0
- package/dist/esm/runtime/services/execution-context-creator.backend.service.d.ts +315 -0
- package/dist/esm/runtime/services/execution-context-creator.backend.service.d.ts.map +1 -0
- package/dist/esm/runtime/services/execution-context-creator.backend.service.js +1525 -0
- package/dist/esm/runtime/services/execution-context-creator.backend.service.js.map +1 -0
- package/dist/esm/runtime/services/execution-context-handler.backend.service.d.ts +60 -0
- package/dist/esm/runtime/services/execution-context-handler.backend.service.d.ts.map +1 -0
- package/dist/esm/runtime/services/execution-context-handler.backend.service.js +150 -0
- package/dist/esm/runtime/services/execution-context-handler.backend.service.js.map +1 -0
- package/dist/esm/runtime/services/health-readiness-contributor.backend.interface.d.ts +11 -0
- package/dist/esm/runtime/services/health-readiness-contributor.backend.interface.d.ts.map +1 -0
- package/dist/esm/runtime/services/health-readiness-contributor.backend.interface.js +1 -0
- package/dist/esm/runtime/services/health-readiness-contributor.backend.interface.js.map +1 -0
- package/dist/esm/runtime/services/http-server.backend.service.d.ts +188 -0
- package/dist/esm/runtime/services/http-server.backend.service.d.ts.map +1 -0
- package/dist/esm/runtime/services/http-server.backend.service.js +755 -0
- package/dist/esm/runtime/services/http-server.backend.service.js.map +1 -0
- package/dist/esm/runtime/services/start-application.backend.service.d.ts +240 -0
- package/dist/esm/runtime/services/start-application.backend.service.d.ts.map +1 -0
- package/dist/esm/runtime/services/start-application.backend.service.js +977 -0
- package/dist/esm/runtime/services/start-application.backend.service.js.map +1 -0
- package/dist/esm/runtime/testing/execution-context-test-fixtures.d.ts +10 -0
- package/dist/esm/runtime/testing/execution-context-test-fixtures.d.ts.map +1 -0
- package/dist/esm/runtime/testing/execution-context-test-fixtures.js +13 -0
- package/dist/esm/runtime/testing/execution-context-test-fixtures.js.map +1 -0
- package/dist/esm/runtime/testing/mock-execution-context-creator.service.d.ts +15 -0
- package/dist/esm/runtime/testing/mock-execution-context-creator.service.d.ts.map +1 -0
- package/dist/esm/runtime/testing/mock-execution-context-creator.service.js +42 -0
- package/dist/esm/runtime/testing/mock-execution-context-creator.service.js.map +1 -0
- package/dist/esm/runtime/utils/scan-default-exports.backend.utils.d.ts +85 -0
- package/dist/esm/runtime/utils/scan-default-exports.backend.utils.d.ts.map +1 -0
- package/dist/esm/runtime/utils/scan-default-exports.backend.utils.js +171 -0
- package/dist/esm/runtime/utils/scan-default-exports.backend.utils.js.map +1 -0
- package/dist/esm/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.d.ts +19 -0
- package/dist/esm/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.d.ts.map +1 -0
- package/dist/esm/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.js +59 -0
- package/dist/esm/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.js.map +1 -0
- package/dist/esm/security/authentications/controllers/auth-method-management-controller.backend.service.d.ts +31 -0
- package/dist/esm/security/authentications/controllers/auth-method-management-controller.backend.service.d.ts.map +1 -0
- package/dist/esm/security/authentications/controllers/auth-method-management-controller.backend.service.js +215 -0
- package/dist/esm/security/authentications/controllers/auth-method-management-controller.backend.service.js.map +1 -0
- package/dist/esm/security/authentications/controllers/authentication-controller.backend.service.d.ts +493 -0
- package/dist/esm/security/authentications/controllers/authentication-controller.backend.service.d.ts.map +1 -0
- package/dist/esm/security/authentications/controllers/authentication-controller.backend.service.js +2371 -0
- package/dist/esm/security/authentications/controllers/authentication-controller.backend.service.js.map +1 -0
- package/dist/esm/security/authentications/models/auth-constants.backend.d.ts +83 -0
- package/dist/esm/security/authentications/models/auth-constants.backend.d.ts.map +1 -0
- package/dist/esm/security/authentications/models/auth-constants.backend.js +113 -0
- package/dist/esm/security/authentications/models/auth-constants.backend.js.map +1 -0
- package/dist/esm/security/authentications/models/authentications.backend.schemas.d.ts +98 -0
- package/dist/esm/security/authentications/models/authentications.backend.schemas.d.ts.map +1 -0
- package/dist/esm/security/authentications/models/authentications.backend.schemas.js +59 -0
- package/dist/esm/security/authentications/models/authentications.backend.schemas.js.map +1 -0
- package/dist/esm/security/authentications/models/jwt.backend.schemas.d.ts +42 -0
- package/dist/esm/security/authentications/models/jwt.backend.schemas.d.ts.map +1 -0
- package/dist/esm/security/authentications/models/jwt.backend.schemas.js +98 -0
- package/dist/esm/security/authentications/models/jwt.backend.schemas.js.map +1 -0
- package/dist/esm/security/authentications/models/oauth2-connection.backend.schemas.d.ts +163 -0
- package/dist/esm/security/authentications/models/oauth2-connection.backend.schemas.d.ts.map +1 -0
- package/dist/esm/security/authentications/models/oauth2-connection.backend.schemas.js +12 -0
- package/dist/esm/security/authentications/models/oauth2-connection.backend.schemas.js.map +1 -0
- package/dist/esm/security/authentications/models/saml-authentication.backend.schemas.d.ts +102 -0
- package/dist/esm/security/authentications/models/saml-authentication.backend.schemas.d.ts.map +1 -0
- package/dist/esm/security/authentications/models/saml-authentication.backend.schemas.js +7 -0
- package/dist/esm/security/authentications/models/saml-authentication.backend.schemas.js.map +1 -0
- package/dist/esm/security/authentications/models/sso-connection.backend.schemas.d.ts +88 -0
- package/dist/esm/security/authentications/models/sso-connection.backend.schemas.d.ts.map +1 -0
- package/dist/esm/security/authentications/models/sso-connection.backend.schemas.js +17 -0
- package/dist/esm/security/authentications/models/sso-connection.backend.schemas.js.map +1 -0
- package/dist/esm/security/authentications/services/__tests__/mock-auth-execution-context-factory.service.d.ts +27 -0
- package/dist/esm/security/authentications/services/__tests__/mock-auth-execution-context-factory.service.d.ts.map +1 -0
- package/dist/esm/security/authentications/services/__tests__/mock-auth-execution-context-factory.service.js +66 -0
- package/dist/esm/security/authentications/services/__tests__/mock-auth-execution-context-factory.service.js.map +1 -0
- package/dist/esm/security/authentications/services/__tests__/mock-auth-token-issuer.service.d.ts +30 -0
- package/dist/esm/security/authentications/services/__tests__/mock-auth-token-issuer.service.d.ts.map +1 -0
- package/dist/esm/security/authentications/services/__tests__/mock-auth-token-issuer.service.js +44 -0
- package/dist/esm/security/authentications/services/__tests__/mock-auth-token-issuer.service.js.map +1 -0
- package/dist/esm/security/authentications/services/admin-config/__tests__/mock-domain-to-org-lookup.service.d.ts +19 -0
- package/dist/esm/security/authentications/services/admin-config/__tests__/mock-domain-to-org-lookup.service.d.ts.map +1 -0
- package/dist/esm/security/authentications/services/admin-config/__tests__/mock-domain-to-org-lookup.service.js +43 -0
- package/dist/esm/security/authentications/services/admin-config/__tests__/mock-domain-to-org-lookup.service.js.map +1 -0
- package/dist/esm/security/authentications/services/admin-config/__tests__/mock-enterprise-user-provisioning.service.d.ts +37 -0
- package/dist/esm/security/authentications/services/admin-config/__tests__/mock-enterprise-user-provisioning.service.d.ts.map +1 -0
- package/dist/esm/security/authentications/services/admin-config/__tests__/mock-enterprise-user-provisioning.service.js +58 -0
- package/dist/esm/security/authentications/services/admin-config/__tests__/mock-enterprise-user-provisioning.service.js.map +1 -0
- package/dist/esm/security/authentications/services/admin-config/auth-organization-configuration.service.d.ts +85 -0
- package/dist/esm/security/authentications/services/admin-config/auth-organization-configuration.service.d.ts.map +1 -0
- package/dist/esm/security/authentications/services/admin-config/auth-organization-configuration.service.js +379 -0
- package/dist/esm/security/authentications/services/admin-config/auth-organization-configuration.service.js.map +1 -0
- package/dist/esm/security/authentications/services/admin-config/domain-to-org-lookup.backend.service.d.ts +79 -0
- package/dist/esm/security/authentications/services/admin-config/domain-to-org-lookup.backend.service.d.ts.map +1 -0
- package/dist/esm/security/authentications/services/admin-config/domain-to-org-lookup.backend.service.js +205 -0
- package/dist/esm/security/authentications/services/admin-config/domain-to-org-lookup.backend.service.js.map +1 -0
- package/dist/esm/security/authentications/services/admin-config/domain-verification.backend.service.d.ts +59 -0
- package/dist/esm/security/authentications/services/admin-config/domain-verification.backend.service.d.ts.map +1 -0
- package/dist/esm/security/authentications/services/admin-config/domain-verification.backend.service.js +179 -0
- package/dist/esm/security/authentications/services/admin-config/domain-verification.backend.service.js.map +1 -0
- package/dist/esm/security/authentications/services/admin-config/enterprise-user-provisioning.backend.service.d.ts +116 -0
- package/dist/esm/security/authentications/services/admin-config/enterprise-user-provisioning.backend.service.d.ts.map +1 -0
- package/dist/esm/security/authentications/services/admin-config/enterprise-user-provisioning.backend.service.js +436 -0
- package/dist/esm/security/authentications/services/admin-config/enterprise-user-provisioning.backend.service.js.map +1 -0
- package/dist/esm/security/authentications/services/admin-config/oidc-discovery.backend.service.d.ts +67 -0
- package/dist/esm/security/authentications/services/admin-config/oidc-discovery.backend.service.d.ts.map +1 -0
- package/dist/esm/security/authentications/services/admin-config/oidc-discovery.backend.service.js +222 -0
- package/dist/esm/security/authentications/services/admin-config/oidc-discovery.backend.service.js.map +1 -0
- package/dist/esm/security/authentications/services/anonymous-session.backend.service.d.ts +80 -0
- package/dist/esm/security/authentications/services/anonymous-session.backend.service.d.ts.map +1 -0
- package/dist/esm/security/authentications/services/anonymous-session.backend.service.js +368 -0
- package/dist/esm/security/authentications/services/anonymous-session.backend.service.js.map +1 -0
- package/dist/esm/security/authentications/services/auth-credential-verifier.backend.service.d.ts +75 -0
- package/dist/esm/security/authentications/services/auth-credential-verifier.backend.service.d.ts.map +1 -0
- package/dist/esm/security/authentications/services/auth-credential-verifier.backend.service.js +139 -0
- package/dist/esm/security/authentications/services/auth-credential-verifier.backend.service.js.map +1 -0
- package/dist/esm/security/authentications/services/auth-execution-context-factory.backend.service.d.ts +72 -0
- package/dist/esm/security/authentications/services/auth-execution-context-factory.backend.service.d.ts.map +1 -0
- package/dist/esm/security/authentications/services/auth-execution-context-factory.backend.service.js +127 -0
- package/dist/esm/security/authentications/services/auth-execution-context-factory.backend.service.js.map +1 -0
- package/dist/esm/security/authentications/services/auth-methods/auth-method-management.backend.service.d.ts +57 -0
- package/dist/esm/security/authentications/services/auth-methods/auth-method-management.backend.service.d.ts.map +1 -0
- package/dist/esm/security/authentications/services/auth-methods/auth-method-management.backend.service.js +459 -0
- package/dist/esm/security/authentications/services/auth-methods/auth-method-management.backend.service.js.map +1 -0
- package/dist/esm/security/authentications/services/auth-methods/auth-mfa.backend.service.d.ts +44 -0
- package/dist/esm/security/authentications/services/auth-methods/auth-mfa.backend.service.d.ts.map +1 -0
- package/dist/esm/security/authentications/services/auth-methods/auth-mfa.backend.service.js +131 -0
- package/dist/esm/security/authentications/services/auth-methods/auth-mfa.backend.service.js.map +1 -0
- package/dist/esm/security/authentications/services/auth-methods/auth-password-reset.backend.service.d.ts +58 -0
- package/dist/esm/security/authentications/services/auth-methods/auth-password-reset.backend.service.d.ts.map +1 -0
- package/dist/esm/security/authentications/services/auth-methods/auth-password-reset.backend.service.js +209 -0
- package/dist/esm/security/authentications/services/auth-methods/auth-password-reset.backend.service.js.map +1 -0
- package/dist/esm/security/authentications/services/auth-methods/auth-phone-verification.backend.service.d.ts +46 -0
- package/dist/esm/security/authentications/services/auth-methods/auth-phone-verification.backend.service.d.ts.map +1 -0
- package/dist/esm/security/authentications/services/auth-methods/auth-phone-verification.backend.service.js +124 -0
- package/dist/esm/security/authentications/services/auth-methods/auth-phone-verification.backend.service.js.map +1 -0
- package/dist/esm/security/authentications/services/auth-methods/auth-registration.backend.service.d.ts +165 -0
- package/dist/esm/security/authentications/services/auth-methods/auth-registration.backend.service.d.ts.map +1 -0
- package/dist/esm/security/authentications/services/auth-methods/auth-registration.backend.service.js +816 -0
- package/dist/esm/security/authentications/services/auth-methods/auth-registration.backend.service.js.map +1 -0
- package/dist/esm/security/authentications/services/auth-methods/oauth2-authentication.backend.service.d.ts +218 -0
- package/dist/esm/security/authentications/services/auth-methods/oauth2-authentication.backend.service.d.ts.map +1 -0
- package/dist/esm/security/authentications/services/auth-methods/oauth2-authentication.backend.service.js +1026 -0
- package/dist/esm/security/authentications/services/auth-methods/oauth2-authentication.backend.service.js.map +1 -0
- package/dist/esm/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.d.ts +150 -0
- package/dist/esm/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.d.ts.map +1 -0
- package/dist/esm/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.js +737 -0
- package/dist/esm/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.js.map +1 -0
- package/dist/esm/security/authentications/services/auth-methods/saml-assertion-validator.backend.service.d.ts +224 -0
- package/dist/esm/security/authentications/services/auth-methods/saml-assertion-validator.backend.service.d.ts.map +1 -0
- package/dist/esm/security/authentications/services/auth-methods/saml-assertion-validator.backend.service.js +593 -0
- package/dist/esm/security/authentications/services/auth-methods/saml-assertion-validator.backend.service.js.map +1 -0
- package/dist/esm/security/authentications/services/auth-methods/saml-authentication.backend.service.d.ts +267 -0
- package/dist/esm/security/authentications/services/auth-methods/saml-authentication.backend.service.d.ts.map +1 -0
- package/dist/esm/security/authentications/services/auth-methods/saml-authentication.backend.service.js +1376 -0
- package/dist/esm/security/authentications/services/auth-methods/saml-authentication.backend.service.js.map +1 -0
- package/dist/esm/security/authentications/services/auth-methods/saml-metadata.backend.service.d.ts +93 -0
- package/dist/esm/security/authentications/services/auth-methods/saml-metadata.backend.service.d.ts.map +1 -0
- package/dist/esm/security/authentications/services/auth-methods/saml-metadata.backend.service.js +396 -0
- package/dist/esm/security/authentications/services/auth-methods/saml-metadata.backend.service.js.map +1 -0
- package/dist/esm/security/authentications/services/auth-methods/saml-replay-guard.backend.service.d.ts +40 -0
- package/dist/esm/security/authentications/services/auth-methods/saml-replay-guard.backend.service.d.ts.map +1 -0
- package/dist/esm/security/authentications/services/auth-methods/saml-replay-guard.backend.service.js +92 -0
- package/dist/esm/security/authentications/services/auth-methods/saml-replay-guard.backend.service.js.map +1 -0
- package/dist/esm/security/authentications/services/auth-methods/webauthn.backend.service.d.ts +82 -0
- package/dist/esm/security/authentications/services/auth-methods/webauthn.backend.service.d.ts.map +1 -0
- package/dist/esm/security/authentications/services/auth-methods/webauthn.backend.service.js +325 -0
- package/dist/esm/security/authentications/services/auth-methods/webauthn.backend.service.js.map +1 -0
- package/dist/esm/security/authentications/services/auth-session-store.backend.service.d.ts +66 -0
- package/dist/esm/security/authentications/services/auth-session-store.backend.service.d.ts.map +1 -0
- package/dist/esm/security/authentications/services/auth-session-store.backend.service.js +198 -0
- package/dist/esm/security/authentications/services/auth-session-store.backend.service.js.map +1 -0
- package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.d.ts +108 -0
- package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.d.ts.map +1 -0
- package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.js +406 -0
- package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.js.map +1 -0
- package/dist/esm/security/authentications/services/authentication-orchestrator.backend.service.d.ts +366 -0
- package/dist/esm/security/authentications/services/authentication-orchestrator.backend.service.d.ts.map +1 -0
- package/dist/esm/security/authentications/services/authentication-orchestrator.backend.service.js +2631 -0
- package/dist/esm/security/authentications/services/authentication-orchestrator.backend.service.js.map +1 -0
- package/dist/esm/security/authentications/services/custom-impls/auth-custom-implementations.backend.d.ts +13 -0
- package/dist/esm/security/authentications/services/custom-impls/auth-custom-implementations.backend.d.ts.map +1 -0
- package/dist/esm/security/authentications/services/custom-impls/auth-custom-implementations.backend.js +53 -0
- package/dist/esm/security/authentications/services/custom-impls/auth-custom-implementations.backend.js.map +1 -0
- package/dist/esm/security/authentications/services/custom-impls/auth-policy.custom-impl.backend.service.d.ts +12 -0
- package/dist/esm/security/authentications/services/custom-impls/auth-policy.custom-impl.backend.service.d.ts.map +1 -0
- package/dist/esm/security/authentications/services/custom-impls/auth-policy.custom-impl.backend.service.js +41 -0
- package/dist/esm/security/authentications/services/custom-impls/auth-policy.custom-impl.backend.service.js.map +1 -0
- package/dist/esm/security/authentications/services/custom-impls/scim-provisioning-config.custom-impl.backend.service.d.ts +18 -0
- package/dist/esm/security/authentications/services/custom-impls/scim-provisioning-config.custom-impl.backend.service.d.ts.map +1 -0
- package/dist/esm/security/authentications/services/custom-impls/scim-provisioning-config.custom-impl.backend.service.js +140 -0
- package/dist/esm/security/authentications/services/custom-impls/scim-provisioning-config.custom-impl.backend.service.js.map +1 -0
- package/dist/esm/security/authentications/services/custom-impls/scim-tokens.custom-impl.backend.service.d.ts +16 -0
- package/dist/esm/security/authentications/services/custom-impls/scim-tokens.custom-impl.backend.service.d.ts.map +1 -0
- package/dist/esm/security/authentications/services/custom-impls/scim-tokens.custom-impl.backend.service.js +112 -0
- package/dist/esm/security/authentications/services/custom-impls/scim-tokens.custom-impl.backend.service.js.map +1 -0
- package/dist/esm/security/authentications/services/custom-impls/siem-delivery-dlq.custom-impl.backend.service.d.ts +16 -0
- package/dist/esm/security/authentications/services/custom-impls/siem-delivery-dlq.custom-impl.backend.service.d.ts.map +1 -0
- package/dist/esm/security/authentications/services/custom-impls/siem-delivery-dlq.custom-impl.backend.service.js +101 -0
- package/dist/esm/security/authentications/services/custom-impls/siem-delivery-dlq.custom-impl.backend.service.js.map +1 -0
- package/dist/esm/security/authentications/services/custom-impls/siem-export-config.custom-impl.backend.service.d.ts +18 -0
- package/dist/esm/security/authentications/services/custom-impls/siem-export-config.custom-impl.backend.service.d.ts.map +1 -0
- package/dist/esm/security/authentications/services/custom-impls/siem-export-config.custom-impl.backend.service.js +136 -0
- package/dist/esm/security/authentications/services/custom-impls/siem-export-config.custom-impl.backend.service.js.map +1 -0
- package/dist/esm/security/authentications/services/custom-impls/sso-config.custom-impl.backend.service.d.ts +19 -0
- package/dist/esm/security/authentications/services/custom-impls/sso-config.custom-impl.backend.service.d.ts.map +1 -0
- package/dist/esm/security/authentications/services/custom-impls/sso-config.custom-impl.backend.service.js +154 -0
- package/dist/esm/security/authentications/services/custom-impls/sso-config.custom-impl.backend.service.js.map +1 -0
- package/dist/esm/security/authentications/services/custom-impls/sso-connection.custom-impl.backend.service.d.ts +26 -0
- package/dist/esm/security/authentications/services/custom-impls/sso-connection.custom-impl.backend.service.d.ts.map +1 -0
- package/dist/esm/security/authentications/services/custom-impls/sso-connection.custom-impl.backend.service.js +657 -0
- package/dist/esm/security/authentications/services/custom-impls/sso-connection.custom-impl.backend.service.js.map +1 -0
- package/dist/esm/security/authentications/services/utils/__tests__/mock-auth-user-lookup.service.d.ts +27 -0
- package/dist/esm/security/authentications/services/utils/__tests__/mock-auth-user-lookup.service.d.ts.map +1 -0
- package/dist/esm/security/authentications/services/utils/__tests__/mock-auth-user-lookup.service.js +60 -0
- package/dist/esm/security/authentications/services/utils/__tests__/mock-auth-user-lookup.service.js.map +1 -0
- package/dist/esm/security/authentications/services/utils/auth-controller.utils.d.ts +23 -0
- package/dist/esm/security/authentications/services/utils/auth-controller.utils.d.ts.map +1 -0
- package/dist/esm/security/authentications/services/utils/auth-controller.utils.js +44 -0
- package/dist/esm/security/authentications/services/utils/auth-controller.utils.js.map +1 -0
- package/dist/esm/security/authentications/services/utils/auth-credential-ops.backend.service.d.ts +89 -0
- package/dist/esm/security/authentications/services/utils/auth-credential-ops.backend.service.d.ts.map +1 -0
- package/dist/esm/security/authentications/services/utils/auth-credential-ops.backend.service.js +192 -0
- package/dist/esm/security/authentications/services/utils/auth-credential-ops.backend.service.js.map +1 -0
- package/dist/esm/security/authentications/services/utils/auth-response-helper.backend.service.d.ts +20 -0
- package/dist/esm/security/authentications/services/utils/auth-response-helper.backend.service.d.ts.map +1 -0
- package/dist/esm/security/authentications/services/utils/auth-response-helper.backend.service.js +55 -0
- package/dist/esm/security/authentications/services/utils/auth-response-helper.backend.service.js.map +1 -0
- package/dist/esm/security/authentications/services/utils/auth-user-lookup.backend.service.d.ts +50 -0
- package/dist/esm/security/authentications/services/utils/auth-user-lookup.backend.service.d.ts.map +1 -0
- package/dist/esm/security/authentications/services/utils/auth-user-lookup.backend.service.js +135 -0
- package/dist/esm/security/authentications/services/utils/auth-user-lookup.backend.service.js.map +1 -0
- package/dist/esm/security/authentications/services/utils/saml-java-availability.d.ts +26 -0
- package/dist/esm/security/authentications/services/utils/saml-java-availability.d.ts.map +1 -0
- package/dist/esm/security/authentications/services/utils/saml-java-availability.js +59 -0
- package/dist/esm/security/authentications/services/utils/saml-java-availability.js.map +1 -0
- package/dist/esm/security/authorizations/services/authorizations.backend.service.d.ts +137 -0
- package/dist/esm/security/authorizations/services/authorizations.backend.service.d.ts.map +1 -0
- package/dist/esm/security/authorizations/services/authorizations.backend.service.js +723 -0
- package/dist/esm/security/authorizations/services/authorizations.backend.service.js.map +1 -0
- package/dist/esm/security/consumable-tokens/batches/consumable-tokens-cleanup.batch.backend.service.d.ts +28 -0
- package/dist/esm/security/consumable-tokens/batches/consumable-tokens-cleanup.batch.backend.service.d.ts.map +1 -0
- package/dist/esm/security/consumable-tokens/batches/consumable-tokens-cleanup.batch.backend.service.js +156 -0
- package/dist/esm/security/consumable-tokens/batches/consumable-tokens-cleanup.batch.backend.service.js.map +1 -0
- package/dist/esm/security/consumable-tokens/models/consumable-tokens.backend.resources-config.schemas.d.ts +4 -0
- package/dist/esm/security/consumable-tokens/models/consumable-tokens.backend.resources-config.schemas.d.ts.map +1 -0
- package/dist/esm/security/consumable-tokens/models/consumable-tokens.backend.resources-config.schemas.js +72 -0
- package/dist/esm/security/consumable-tokens/models/consumable-tokens.backend.resources-config.schemas.js.map +1 -0
- package/dist/esm/security/consumable-tokens/models/consumable-tokens.shared.schemas.d.ts +125 -0
- package/dist/esm/security/consumable-tokens/models/consumable-tokens.shared.schemas.d.ts.map +1 -0
- package/dist/esm/security/consumable-tokens/models/consumable-tokens.shared.schemas.js +69 -0
- package/dist/esm/security/consumable-tokens/models/consumable-tokens.shared.schemas.js.map +1 -0
- package/dist/esm/security/consumable-tokens/models/index.d.ts +3 -0
- package/dist/esm/security/consumable-tokens/models/index.d.ts.map +1 -0
- package/dist/esm/security/consumable-tokens/models/index.js +3 -0
- package/dist/esm/security/consumable-tokens/models/index.js.map +1 -0
- package/dist/esm/security/consumable-tokens/services/__tests__/mock-consumable-token.service.d.ts +26 -0
- package/dist/esm/security/consumable-tokens/services/__tests__/mock-consumable-token.service.d.ts.map +1 -0
- package/dist/esm/security/consumable-tokens/services/__tests__/mock-consumable-token.service.js +55 -0
- package/dist/esm/security/consumable-tokens/services/__tests__/mock-consumable-token.service.js.map +1 -0
- package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.d.ts +142 -0
- package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.d.ts.map +1 -0
- package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.js +446 -0
- package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.js.map +1 -0
- package/dist/esm/security/jwt/services/auth-jwt-guard.backend.service.d.ts +46 -0
- package/dist/esm/security/jwt/services/auth-jwt-guard.backend.service.d.ts.map +1 -0
- package/dist/esm/security/jwt/services/auth-jwt-guard.backend.service.js +147 -0
- package/dist/esm/security/jwt/services/auth-jwt-guard.backend.service.js.map +1 -0
- package/dist/esm/security/jwt/services/jwt.backend.service.d.ts +75 -0
- package/dist/esm/security/jwt/services/jwt.backend.service.d.ts.map +1 -0
- package/dist/esm/security/jwt/services/jwt.backend.service.js +368 -0
- package/dist/esm/security/jwt/services/jwt.backend.service.js.map +1 -0
- package/dist/esm/security/scim/controllers/scim.backend.controller.d.ts +71 -0
- package/dist/esm/security/scim/controllers/scim.backend.controller.d.ts.map +1 -0
- package/dist/esm/security/scim/controllers/scim.backend.controller.js +863 -0
- package/dist/esm/security/scim/controllers/scim.backend.controller.js.map +1 -0
- package/dist/esm/security/scim/models/scim-protocol.backend.schemas.d.ts +275 -0
- package/dist/esm/security/scim/models/scim-protocol.backend.schemas.d.ts.map +1 -0
- package/dist/esm/security/scim/models/scim-protocol.backend.schemas.js +139 -0
- package/dist/esm/security/scim/models/scim-protocol.backend.schemas.js.map +1 -0
- package/dist/esm/security/scim/utils/scim-filter-parser.d.ts +35 -0
- package/dist/esm/security/scim/utils/scim-filter-parser.d.ts.map +1 -0
- package/dist/esm/security/scim/utils/scim-filter-parser.js +232 -0
- package/dist/esm/security/scim/utils/scim-filter-parser.js.map +1 -0
- package/dist/esm/security/scim/utils/scim-response-formatter.d.ts +42 -0
- package/dist/esm/security/scim/utils/scim-response-formatter.d.ts.map +1 -0
- package/dist/esm/security/scim/utils/scim-response-formatter.js +89 -0
- package/dist/esm/security/scim/utils/scim-response-formatter.js.map +1 -0
- package/dist/esm/testing.d.ts +31 -0
- package/dist/esm/testing.d.ts.map +1 -0
- package/dist/esm/testing.js +31 -0
- package/dist/esm/testing.js.map +1 -0
- package/dist/esm/users/services/user-self-custom-implementations.backend.d.ts +9 -0
- package/dist/esm/users/services/user-self-custom-implementations.backend.d.ts.map +1 -0
- package/dist/esm/users/services/user-self-custom-implementations.backend.js +48 -0
- package/dist/esm/users/services/user-self-custom-implementations.backend.js.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -0
- package/package.json +163 -0
- package/src/__tests__/integration/bulk-repository-write-contract.integration.test.ts +373 -0
- package/src/__tests__/integration/custom-batch-job-execution.integration.test.ts +147 -0
- package/src/__tests__/integration/delete-file-rollback-persistence.integration.test.ts +551 -0
- package/src/__tests__/integration/file-management-nested-persistence.integration.test.ts +487 -0
- package/src/__tests__/integration/file-management-postgresql-persistence.integration.test.ts +466 -0
- package/src/__tests__/integration/files-cleanup-persistence.integration.test.ts +335 -0
- package/src/__tests__/integration/generated-bulk-relationship-runtime.integration.test.ts +545 -0
- package/src/__tests__/integration/lifecycle-delete-rollback-persistence.integration.test.ts +537 -0
- package/src/__tests__/integration/postgresql-contextual-filter-enforcement.integration.test.ts +170 -0
- package/src/__tests__/integration/postgresql-delete-best-effort-boundary.integration.test.ts +604 -0
- package/src/__tests__/integration/prompt-compiler.integration.test.ts +723 -0
- package/src/__tests__/integration/relationship-service-semantics.integration.test.ts +2086 -0
- package/src/__tests__/integration/repositories-registry.integration.test.ts +296 -0
- package/src/__tests__/integration/resource-factory-pipeline.integration.test.ts +556 -0
- package/src/__tests__/integration/resource-services.integration.test.ts +265 -0
- package/src/__tests__/integration/resources-registry.integration.test.ts +327 -0
- package/src/__tests__/integration/services-registry.integration.test.ts +231 -0
- package/src/__tests__/integration/update-many-runtime-guards.integration.test.ts +290 -0
- package/src/__tests__/setup.ts +15 -0
- package/src/__tests__/test-container.ts +120 -0
- package/src/applications/models/applications.backend.schemas.ts +18 -0
- package/src/base-classes/__tests__/batches-cronjobs-executor.test.ts +63 -0
- package/src/base-classes/__tests__/bulk-delete-child-file-guard.test.ts +152 -0
- package/src/base-classes/__tests__/bulk-nested-file-update-coordination.test.ts +171 -0
- package/src/base-classes/__tests__/delete-file-coordination.test.ts +185 -0
- package/src/base-classes/__tests__/postgresql-file-transaction-coordination.test.ts +424 -0
- package/src/base-classes/__tests__/postgresql-repository-contextual-filter-enforcement.test.ts +88 -0
- package/src/base-classes/__tests__/repository-contextual-filter-enforcement.test.ts +87 -0
- package/src/base-classes/__tests__/resource-operation-helper-context-enforcement.test.ts +74 -0
- package/src/base-classes/__tests__/transaction-boundaries.test.ts +153 -0
- package/src/base-classes/models/manual-controllers.backend.definition.ts +56 -0
- package/src/base-classes/models/repositories.backend.schemas.ts +105 -0
- package/src/base-classes/services/__tests__/mock-resource-operation-helper.service.ts +61 -0
- package/src/base-classes/services/batches/batches-cronjobs-custom-execution.service.ts +148 -0
- package/src/base-classes/services/batches/batches-cronjobs-executor.backend.service.ts +115 -0
- package/src/base-classes/services/batches/batches-cronjobs-resource-execution.backend.service.ts +58 -0
- package/src/base-classes/services/controllers/__tests__/controller-request-validation.utils.test.ts +292 -0
- package/src/base-classes/services/controllers/__tests__/controller-resource-file-upload-routes.test.ts +1335 -0
- package/src/base-classes/services/controllers/__tests__/controller-resource.version-conflict.test.ts +372 -0
- package/src/base-classes/services/controllers/abstract-controller.backend.service.ts +302 -0
- package/src/base-classes/services/controllers/controller-resource.backend.service.ts +1833 -0
- package/src/base-classes/services/controllers/controllers-registry-handler.backend.service.ts +494 -0
- package/src/base-classes/services/controllers/validate-field-handler.backend.service.ts +613 -0
- package/src/base-classes/services/repositories/__tests__/mock-repositories-registry-handler.service.ts +31 -0
- package/src/base-classes/services/repositories/__tests__/repository-resource.singleton-read.test.ts +50 -0
- package/src/base-classes/services/repositories/postgresql-resource-repository.backend.service.ts +1207 -0
- package/src/base-classes/services/repositories/repositories-registry-handler.backend.service.ts +804 -0
- package/src/base-classes/services/repositories/repository-resource.backend.service.ts +2186 -0
- package/src/base-classes/services/resource-operations-helper.backend.service.ts +468 -0
- package/src/base-classes/services/services/__tests__/mock-services-registry-handler.service.ts +21 -0
- package/src/base-classes/services/services/__tests__/services-registry-handler.notifications.test.ts +65 -0
- package/src/base-classes/services/services/resource-operation-custom-implementation-base.backend.service.ts +305 -0
- package/src/base-classes/services/services/resource-operation-custom-implementation-registry.backend.service.ts +224 -0
- package/src/base-classes/services/services/resource-operation-custom-implementation.factory.backend.ts +331 -0
- package/src/base-classes/services/services/services-registry-handler.backend.service.ts +6288 -0
- package/src/base-classes/utils/backend-type-utils.ts +64 -0
- package/src/billing/services/back-office/__tests__/billing-feature-sync.backend.service.test.ts +132 -0
- package/src/billing/services/back-office/__tests__/billing-state.backend.service.test.ts +245 -0
- package/src/billing/services/back-office/__tests__/product-catalog-sync.backend.service.test.ts +238 -0
- package/src/billing/services/back-office/abstract-billing.backend.service.ts +89 -0
- package/src/billing/services/back-office/billing-feature-sync.backend.service.ts +473 -0
- package/src/billing/services/back-office/billing-state.backend.service.ts +348 -0
- package/src/billing/services/back-office/product-catalog-sync.backend.service.ts +415 -0
- package/src/billing/services/back-office/usage-metering.backend.service.ts +326 -0
- package/src/billing/services/billing.utils.ts +26 -0
- package/src/billing/services/custom-impl/billing-account.mutations.custom-impl.backend.service.ts +342 -0
- package/src/billing/services/custom-impl/billing-custom-impl-utils.backend.ts +274 -0
- package/src/billing/services/custom-impl/billing-custom-implementations.backend.ts +236 -0
- package/src/billing/services/custom-impl/credit-pool.custom-ops.custom-impl.backend.service.ts +133 -0
- package/src/billing/services/custom-impl/promotion.custom-ops.custom-impl.backend.service.ts +242 -0
- package/src/billing/services/custom-impl/subscription.mutations.custom-impl.backend.service.ts +434 -0
- package/src/billing/services/webhooks/billing-webhook-adapter.backend.service.ts +70 -0
- package/src/billing/services/webhooks/billing-webhook-capability-handler.backend.service.ts +46 -0
- package/src/billing/services/webhooks/billing-webhook-event-router.backend.service.ts +727 -0
- package/src/billing/testing/billing-test-fixtures.ts +296 -0
- package/src/billing/testing/mock-billing-provider.ts +548 -0
- package/src/charts/controllers/__tests__/chart.backend.controller.test.ts +403 -0
- package/src/charts/controllers/chart.backend.controller.ts +238 -0
- package/src/charts/services/__tests__/chart-registry.backend.service.test.ts +120 -0
- package/src/charts/services/chart-registry.backend.service.ts +109 -0
- package/src/compliance/audit-trails/audit-logs.custom-impl.backend.service.ts +104 -0
- package/src/compliance/audit-trails/services/__tests__/mock-audit-logs.service.ts +48 -0
- package/src/compliance/audit-trails/services/audit-event-dispatcher.backend.service.ts +325 -0
- package/src/compliance/audit-trails/services/audit-logs.backend.service.ts +1313 -0
- package/src/compliance/audit-trails/services/siem-webhook-delivery.backend.service.ts +542 -0
- package/src/compliance/index.ts +1 -0
- package/src/config/custom/application-config-controller.backend.service.ts +119 -0
- package/src/config/models/__tests__/app-config-secrets.boundaries.test.ts +56 -0
- package/src/config/models/__tests__/app-config.backend-authored.definitions.test.ts +286 -0
- package/src/config/models/app-config-secrets.backend.schemas.ts +154 -0
- package/src/config/models/app-config.backend-authored.definitions.ts +165 -0
- package/src/config/models/app-config.backend.schemas.ts +614 -0
- package/src/config/models/app-env-config.backend.schemas.ts +135 -0
- package/src/config/models/config-mutation-boundary.utils.ts +76 -0
- package/src/config/models/postgresql-env-config.backend.schemas.ts +126 -0
- package/src/config/models/runtime-topology.backend.contracts.ts +42 -0
- package/src/config/services/__tests__/app-configuration-loader.backend.service.test.ts +118 -0
- package/src/config/services/__tests__/app-configuration.backend.service.test.ts +40 -0
- package/src/config/services/__tests__/app-configuration.backend.utils.test.ts +72 -0
- package/src/config/services/__tests__/application-startup-config-validator.backend.service.test.ts +404 -0
- package/src/config/services/__tests__/mock-app-configuration.service.ts +131 -0
- package/src/config/services/app-configuration-loader.backend.service.ts +443 -0
- package/src/config/services/app-configuration.backend.service.ts +570 -0
- package/src/config/services/app-configuration.backend.utils.ts +94 -0
- package/src/config/services/application-startup-config-validator.backend.service.ts +611 -0
- package/src/databases/models/aggregation.backend.schemas.ts +174 -0
- package/src/databases/models/databases.backend.schemas.ts +70 -0
- package/src/databases/models/filter.backend.schemas.ts +101 -0
- package/src/databases/models/sql.backend.schemas.ts +111 -0
- package/src/databases/models/transaction.shared.schemas.ts +172 -0
- package/src/databases/services/__tests__/mock-mongo-transaction-registry.service.ts +90 -0
- package/src/databases/services/__tests__/mock-mongodb.service.ts +86 -0
- package/src/databases/services/__tests__/mock-mongoose-model.service.ts +411 -0
- package/src/databases/services/__tests__/mock-redis.service.ts +72 -0
- package/src/databases/services/__tests__/mock-zod-mongoose-schema-convertor.service.ts +41 -0
- package/src/databases/services/__tests__/mongo-aggregation-compiler.test.ts +918 -0
- package/src/databases/services/__tests__/postgresql-filter.backend.service.test.ts +180 -0
- package/src/databases/services/__tests__/sql-hybrid-transform.test.ts +73 -0
- package/src/databases/services/aggregation/__tests__/aggregation-authorization.backend.service.test.ts +444 -0
- package/src/databases/services/aggregation/__tests__/aggregation-query.backend.service.test.ts +150 -0
- package/src/databases/services/aggregation/__tests__/computed-measure-evaluator.test.ts +525 -0
- package/src/databases/services/aggregation/__tests__/field-access-validator.test.ts +458 -0
- package/src/databases/services/aggregation/__tests__/time-series-densifier.test.ts +631 -0
- package/src/databases/services/aggregation/__tests__/window-function-processor.test.ts +598 -0
- package/src/databases/services/aggregation/aggregation-authorization.backend.service.ts +516 -0
- package/src/databases/services/aggregation/aggregation-query.backend.service.ts +514 -0
- package/src/databases/services/aggregation/computed-measure-evaluator.backend.service.ts +196 -0
- package/src/databases/services/aggregation/field-access-validator.backend.service.ts +225 -0
- package/src/databases/services/aggregation/time-series-densifier.backend.service.ts +389 -0
- package/src/databases/services/aggregation/topn-processor.backend.service.ts +221 -0
- package/src/databases/services/aggregation/window-function-processor.backend.service.ts +301 -0
- package/src/databases/services/db-utils.ts +96 -0
- package/src/databases/services/mongo-aggregation.backend.service.ts +762 -0
- package/src/databases/services/mongodb.service.ts +736 -0
- package/src/databases/services/postgresql-aggregation.backend.service.ts +794 -0
- package/src/databases/services/postgresql-database.backend.service.ts +288 -0
- package/src/databases/services/postgresql-filter.backend.service.ts +673 -0
- package/src/databases/services/redis.service.ts +531 -0
- package/src/databases/services/zod-to-mongoose-schema-convertor.backend.service.ts +2486 -0
- package/src/databases/services/zod-to-sql-hybrid-schema.planner.ts +312 -0
- package/src/errors/services/__tests__/error-builder.backend.service.test.ts +31 -0
- package/src/errors/services/__tests__/error-handler.backend.service.test.ts +82 -0
- package/src/errors/services/__tests__/mock-error-builder.service.ts +288 -0
- package/src/errors/services/error-builder.backend.service.ts +403 -0
- package/src/errors/services/error-handler.backend.service.ts +236 -0
- package/src/errors/services/rate-limit.backend.service.ts +45 -0
- package/src/external-providers/models/external-providers.backend.schemas.ts +243 -0
- package/src/external-providers/services/__tests__/external-providers-registry.backend.service.test.ts +136 -0
- package/src/external-providers/services/__tests__/feature-bindings.backend.service.test.ts +40 -0
- package/src/external-providers/services/__tests__/mock-external-providers-registry.service.ts +33 -0
- package/src/external-providers/services/__tests__/mock-lazy-provider-registry.service.ts +45 -0
- package/src/external-providers/services/external-api-handler.backend.service.ts +19 -0
- package/src/external-providers/services/external-providers-registry.backend.service.ts +534 -0
- package/src/external-providers/services/feature-bindings.backend.service.ts +422 -0
- package/src/external-providers/services/lazy-provider-registry.backend.service.ts +486 -0
- package/src/features/__tests__/feature-builders.test.ts +152 -0
- package/src/features/controllers/__tests__/features.backend.controller.test.ts +173 -0
- package/src/features/controllers/features.backend.controller.ts +200 -0
- package/src/features/services/__tests__/feature-definition-registry.backend.service.test.ts +152 -0
- package/src/features/services/__tests__/feature-gate.test.ts +484 -0
- package/src/features/services/__tests__/feature-resolution.backend.service.test.ts +203 -0
- package/src/features/services/__tests__/mock-capability-bindings.service.ts +26 -0
- package/src/features/services/__tests__/mock-feature-definition-registry.service.ts +56 -0
- package/src/features/services/__tests__/mock-feature-resolution.service.ts +36 -0
- package/src/features/services/feature-definition-registry.backend.service.ts +537 -0
- package/src/features/services/feature-gate.backend.service.ts +522 -0
- package/src/features/services/feature-resolution.backend.service.ts +652 -0
- package/src/features/testing/feature-test-utils.ts +200 -0
- package/src/files/batches/__tests__/files-cleanup.batch.backend.service.test.ts +186 -0
- package/src/files/batches/files-cleanup.batch.backend.service.ts +259 -0
- package/src/files/constraints/file-analyzers.types.ts +85 -0
- package/src/files/constraints/file-constraint-resolver-chain.backend.service.ts +99 -0
- package/src/files/constraints/file-constraint.types.ts +104 -0
- package/src/files/constraints/file-validation.backend.service.ts +359 -0
- package/src/files/constraints/resource-field-constraint-resolver.backend.service.ts +138 -0
- package/src/files/controllers/__tests__/file.controller.behavior.test.ts +655 -0
- package/src/files/controllers/file.controller.ts +1030 -0
- package/src/files/handlers/__tests__/resource-file-upload-handler.backend.service.test.ts +392 -0
- package/src/files/handlers/resource-file-upload-handler.backend.service.ts +605 -0
- package/src/files/rag/weaviate-vector-store.backend.service.ts +271 -0
- package/src/files/scanning/clamav-scanner.backend.service.ts +214 -0
- package/src/files/scanning/file-scan.types.ts +17 -0
- package/src/files/scanning/yara-scanner.backend.service.ts +212 -0
- package/src/files/services/__tests__/file-field-detection.backend.service.test.ts +91 -0
- package/src/files/services/__tests__/file-operation-handler.backend.service.test.ts +272 -0
- package/src/files/services/__tests__/file-population.backend.service.test.ts +120 -0
- package/src/files/services/__tests__/file-scanning.backend.service.test.ts +163 -0
- package/src/files/services/__tests__/files.backend.service.test.ts +885 -0
- package/src/files/services/__tests__/mock-file-field-detection.service.ts +43 -0
- package/src/files/services/__tests__/mock-file-operation-handler.service.ts +113 -0
- package/src/files/services/__tests__/mock-file-repository.service.ts +104 -0
- package/src/files/services/file-field-detection.backend.service.ts +156 -0
- package/src/files/services/file-operation-handler.backend.service.ts +861 -0
- package/src/files/services/file-population.backend.service.ts +485 -0
- package/src/files/services/file-rag-indexing.backend.service.ts +229 -0
- package/src/files/services/file-scanning.backend.service.ts +373 -0
- package/src/files/services/file-text-extraction.backend.service.ts +193 -0
- package/src/files/services/files.backend.service.ts +1356 -0
- package/src/files/storage/file-storage-path-resolver.backend.service.ts +289 -0
- package/src/files/storage/file-storage-provider.types.ts +188 -0
- package/src/files/storage/file-storage-router.backend.service.ts +172 -0
- package/src/files/storage/local-directory-storage-provider.backend.service.ts +417 -0
- package/src/files/storage/wildo-managed-storage-provider.backend.service.ts +530 -0
- package/src/files/utils/__tests__/file-field-schema-path.backend.utils.test.ts +44 -0
- package/src/files/utils/__tests__/file-uploader.utils.test.ts +57 -0
- package/src/files/utils/__tests__/file-validation.utils.test.ts +559 -0
- package/src/files/utils/file-field-schema-path.backend.utils.ts +385 -0
- package/src/files/utils/file-upload.utils.ts +146 -0
- package/src/files/utils/file-uploader.utils.ts +65 -0
- package/src/files/utils/file-validation.utils.ts +753 -0
- package/src/flows-actors/agent-catalogs.backend.ts +427 -0
- package/src/flows-actors/controllers/flows-actors.controller.ts +91 -0
- package/src/flows-actors/models/agent-catalogs.backend.definitions.ts +430 -0
- package/src/flows-actors/models/agent-facets.backend.definitions.ts +120 -0
- package/src/flows-actors/models/agents.backend.definitions.ts +4 -0
- package/src/flows-actors/models/core-facets.backend.definitions.ts +348 -0
- package/src/flows-actors/models/flows-actors.backend.definitions.ts +13 -0
- package/src/flows-actors/models/flows-actors.backend.schemas.ts +44 -0
- package/src/flows-actors/services/__tests__/agent-facets-catalogs.test.ts +544 -0
- package/src/flows-actors/services/__tests__/agents.backend.service.cli-runtime.test.ts +234 -0
- package/src/flows-actors/services/actors-system.backend.service.ts +270 -0
- package/src/flows-actors/services/agent-facets.backend.service.ts +350 -0
- package/src/flows-actors/services/agents.backend.service.ts +2730 -0
- package/src/flows-actors/services/context-curation.backend.service.ts +203 -0
- package/src/flows-actors/services/flows-actors-registry.service.ts +374 -0
- package/src/flows-actors/services/flows.backend.services.ts +237 -0
- package/src/flows-actors/services/prompt-compiler.backend.service.ts +734 -0
- package/src/flows-actors/utils/__tests__/cli-runtime-operation-support.backend.utils.test.ts +95 -0
- package/src/flows-actors/utils/cli-runtime-operation-support.backend.utils.ts +87 -0
- package/src/flows-actors/utils/cli-runtime-runner.backend.utils.ts +171 -0
- package/src/flows-actors/utils/flows-actors-frontend-extractor.utils.ts +63 -0
- package/src/flows-actors/utils/prompt-ir-adapters.backend.utils.ts +257 -0
- package/src/guidance/batches/dormancy-detection.batch.backend.service.ts +126 -0
- package/src/guidance/services/__tests__/guidance-trigger-evaluator.backend.service.test.ts +49 -0
- package/src/guidance/services/__tests__/lifecycle-evaluator.backend.service.test.ts +85 -0
- package/src/guidance/services/__tests__/milestone-definition-registry.backend.service.test.ts +211 -0
- package/src/guidance/services/__tests__/milestone-evaluator.backend.service.test.ts +561 -0
- package/src/guidance/services/guidance-trigger-evaluator.backend.service.ts +151 -0
- package/src/guidance/services/lifecycle-custom-implementations.backend.ts +139 -0
- package/src/guidance/services/lifecycle-evaluator.backend.service.ts +908 -0
- package/src/guidance/services/milestone-condition-registry.backend.service.ts +57 -0
- package/src/guidance/services/milestone-definition-registry.backend.service.ts +265 -0
- package/src/guidance/services/milestone-evaluator.backend.service.ts +611 -0
- package/src/i18n/controllers/i18n-controller.backend.service.ts +227 -0
- package/src/i18n/services/i18n.backend.service.ts +88 -0
- package/src/index.ts +286 -0
- package/src/inject/models/container.ts +586 -0
- package/src/inject/models/service-types.ts +488 -0
- package/src/monitoring/analytics/controllers/analytics.backend.controller.ts +114 -0
- package/src/monitoring/analytics/services/value-moment-engine.backend.service.ts +53 -0
- package/src/monitoring/analytics/services/value-moment-handler-registry.backend.service.ts +38 -0
- package/src/monitoring/logger/middleware/logging.middleware.ts +40 -0
- package/src/monitoring/logger/models/logger.backend.schemas.ts +56 -0
- package/src/monitoring/logger/services/__tests__/mock-logger.service.ts +49 -0
- package/src/monitoring/logger/services/logger.service.ts +214 -0
- package/src/monitoring/observability/middleware/metrics.middleware.ts +205 -0
- package/src/monitoring/observability/middleware/telemetry.middleware.ts +188 -0
- package/src/monitoring/observability/middleware/tracing.middleware.ts +265 -0
- package/src/monitoring/observability/models/observability.backend.schemas.ts +96 -0
- package/src/monitoring/observability/services/instrumentations/custom.instrumentations.ts +132 -0
- package/src/monitoring/observability/services/metrics.service.ts +266 -0
- package/src/monitoring/observability/services/telemetry.service.ts +157 -0
- package/src/monitoring/observability/services/tracer.service.ts +334 -0
- package/src/notifications/email/components/email-components.ts +341 -0
- package/src/notifications/email/models/email-context-provider.interface.ts +107 -0
- package/src/notifications/email/models/email-template-definition.ts +74 -0
- package/src/notifications/email/models/email-template.actors-system.backend.definitions.ts +80 -0
- package/src/notifications/email/models/email.backend.scheamas.ts +0 -0
- package/src/notifications/email/services/email-batch-send.batch.backend.service.ts +236 -0
- package/src/notifications/email/services/email-context-provider-registry.backend.service.ts +157 -0
- package/src/notifications/email/services/email-renderer.backend.service.ts +274 -0
- package/src/notifications/email/services/email-template-compiler.backend.service.ts +136 -0
- package/src/notifications/email/services/email-template-generation.backend.service.ts +811 -0
- package/src/notifications/email/services/email-template-registry.backend.service.ts +166 -0
- package/src/notifications/email/services/email-template-sandbox.backend.service.ts +255 -0
- package/src/notifications/email/services/email-template-validator.backend.service.ts +229 -0
- package/src/notifications/email/services/email.backend.service.ts +429 -0
- package/src/notifications/email/utils/color-conversion.utils.ts +142 -0
- package/src/notifications/email/utils/interpolate-email-label.utils.ts +16 -0
- package/src/notifications/email/utils/zod-to-typescript.utils.ts +352 -0
- package/src/notifications/services/__tests__/notifications-dispatcher.operation-semantics.test.ts +773 -0
- package/src/notifications/services/__tests__/notifications-dispatcher.websocket-integration.test.ts +173 -0
- package/src/notifications/services/notification-badge.backend.service.ts +412 -0
- package/src/notifications/services/notifications-dispatcher.backend.service.ts +1696 -0
- package/src/notifications/sms/services/sms.backend.service.ts +283 -0
- package/src/notifications/webhooks/controllers/webhook-auto-controller.backend.service.ts +220 -0
- package/src/notifications/webhooks/services/polymorphic-lookup.backend.service.ts +131 -0
- package/src/notifications/webhooks/services/webhook-handler.backend.service.ts +481 -0
- package/src/organizations/services/__tests__/org-creation-on-registration.backend.utils.test.ts +193 -0
- package/src/organizations/services/__tests__/org-member-roles-validation.backend.utils.test.ts +101 -0
- package/src/organizations/services/__tests__/organization-custom-implementation.backend.service.test.ts +113 -0
- package/src/organizations/services/__tests__/scim-provisioning-gate.backend.utils.test.ts +94 -0
- package/src/organizations/services/__tests__/user-org-type-grant.backend.utils.test.ts +164 -0
- package/src/organizations/services/__tests__/user-type-revocation-on-org-leave.backend.utils.test.ts +161 -0
- package/src/organizations/services/org-creation-on-registration.backend.utils.ts +119 -0
- package/src/organizations/services/org-member-roles-validation.backend.utils.ts +51 -0
- package/src/organizations/services/organization-custom-implementation.backend.service.ts +106 -0
- package/src/organizations/services/organization-member-custom-implementation.backend.service.ts +150 -0
- package/src/organizations/services/scim-provisioning-gate.backend.utils.ts +34 -0
- package/src/organizations/services/user-org-type-grant.backend.utils.ts +49 -0
- package/src/organizations/services/user-type-revocation-on-org-leave.backend.utils.ts +102 -0
- package/src/queue/adapters/rabbitmq-adapter.backend.service.ts +494 -0
- package/src/queue/apps-crontabs-manager.backend.service.ts +258 -0
- package/src/queue/cron-job-sync.backend.service.ts +184 -0
- package/src/queue/domain-queue-consumer.backend.service.ts +333 -0
- package/src/queue/job-completion-registry.backend.service.ts +342 -0
- package/src/queue/job-consumer.backend.service.ts +646 -0
- package/src/queue/job-executor.backend.service.ts +315 -0
- package/src/queue/job-payload-storage.backend.service.ts +297 -0
- package/src/queue/job-status-tracking.backend.service.ts +376 -0
- package/src/queue/queue-monitoring.backend.service.ts +333 -0
- package/src/queue/queue-worker-initializer.backend.service.ts +179 -0
- package/src/queue/queue.backend.service.ts +530 -0
- package/src/queue/scheduled-message-verifier.backend.service.ts +228 -0
- package/src/queue/worker-shutdown-manager.backend.service.ts +298 -0
- package/src/requests/models/api-routes.backend.defintions.ts +45 -0
- package/src/requests/models/requests.backend.schemas.ts +73 -0
- package/src/requests/service/__tests__/websocket.service.auth-refresh.test.ts +361 -0
- package/src/requests/service/__tests__/websocket.service.resource-room-validation.test.ts +234 -0
- package/src/requests/service/__tests__/websocket.service.variant-authorization.test.ts +94 -0
- package/src/requests/service/platform-mutualized-handler.backend.service.ts +19 -0
- package/src/requests/service/platform-requests.backend.utils.ts +54 -0
- package/src/requests/service/remote-client-base.backend.service.ts +485 -0
- package/src/requests/service/serverless-services-handler.backend.service.ts +19 -0
- package/src/requests/service/websocket.service.ts +2844 -0
- package/src/resources/models/custom-service-implementations.backend.definition.ts +22 -0
- package/src/resources/models/index.ts +7 -0
- package/src/resources/models/resources-operations.backend.definitions.ts +9 -0
- package/src/resources/models/resources-relationships.backend.definitions.ts +30 -0
- package/src/resources/models/resources-types.backend.schemas.ts +14 -0
- package/src/resources/models/resources.backend.schemas.ts +6 -0
- package/src/resources/models/virtual-fields.backend.types.ts +132 -0
- package/src/resources/services/__tests__/mock-resources-registry.service.ts +69 -0
- package/src/resources/services/__tests__/resource-id.backend.service.test.ts +69 -0
- package/src/resources/services/resource-context.backend.service.ts +1107 -0
- package/src/resources/services/resource-id.backend.service.ts +280 -0
- package/src/resources/services/resource-population.backend.service.ts +761 -0
- package/src/resources/services/resources-registry.backend.service.ts +1126 -0
- package/src/resources/services/virtual-fields.backend.service.ts +303 -0
- package/src/runtime/__tests__/execution-context-creator.backend.service.test.ts +469 -0
- package/src/runtime/controllers/health-controller.backend.service.ts +297 -0
- package/src/runtime/domain-module.backend.definitions.test.ts +83 -0
- package/src/runtime/domain-module.backend.definitions.ts +161 -0
- package/src/runtime/models/execution-context.backend.schemas.ts +456 -0
- package/src/runtime/models/runtime.backend.schemas.ts +82 -0
- package/src/runtime/services/execution-context-creator.backend.service.ts +2102 -0
- package/src/runtime/services/execution-context-handler.backend.service.ts +224 -0
- package/src/runtime/services/health-readiness-contributor.backend.interface.ts +11 -0
- package/src/runtime/services/http-server.backend.service.ts +870 -0
- package/src/runtime/services/start-application.backend.service.ts +1109 -0
- package/src/runtime/testing/execution-context-test-fixtures.ts +14 -0
- package/src/runtime/testing/mock-execution-context-creator.service.ts +46 -0
- package/src/runtime/utils/scan-default-exports.backend.utils.ts +247 -0
- package/src/security/authentications/__tests__/auth-registration.test.ts +338 -0
- package/src/security/authentications/__tests__/authentication-controller.test.ts +31 -0
- package/src/security/authentications/__tests__/authentication-orchestrator.test.ts +27 -0
- package/src/security/authentications/__tests__/saml-assertion-validator.test.ts +631 -0
- package/src/security/authentications/__tests__/saml-authentication.test.ts +126 -0
- package/src/security/authentications/__tests__/saml-integration-test-helpers.test.ts +234 -0
- package/src/security/authentications/__tests__/saml-metadata.test.ts +185 -0
- package/src/security/authentications/__tests__/saml-replay-guard.test.ts +99 -0
- package/src/security/authentications/__tests__/saml-sso-flow.integration.test.ts +355 -0
- package/src/security/authentications/__tests__/saml-test-fixtures.test.ts +433 -0
- package/src/security/authentications/__tests__/saml-test-parser.test.ts +117 -0
- package/src/security/authentications/__tests__/sso-connection-custom-ops.integration.test.ts +236 -0
- package/src/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.ts +71 -0
- package/src/security/authentications/controllers/auth-method-management-controller.backend.service.ts +205 -0
- package/src/security/authentications/controllers/authentication-controller.backend.service.ts +2712 -0
- package/src/security/authentications/models/auth-constants.backend.ts +141 -0
- package/src/security/authentications/models/authentications.backend.schemas.ts +106 -0
- package/src/security/authentications/models/jwt.backend.schemas.ts +107 -0
- package/src/security/authentications/models/oauth2-connection.backend.schemas.ts +196 -0
- package/src/security/authentications/models/saml-authentication.backend.schemas.ts +124 -0
- package/src/security/authentications/models/sso-connection.backend.schemas.ts +104 -0
- package/src/security/authentications/services/__tests__/mock-auth-execution-context-factory.service.ts +73 -0
- package/src/security/authentications/services/__tests__/mock-auth-token-issuer.service.ts +46 -0
- package/src/security/authentications/services/admin-config/__tests__/mock-domain-to-org-lookup.service.ts +40 -0
- package/src/security/authentications/services/admin-config/__tests__/mock-enterprise-user-provisioning.service.ts +67 -0
- package/src/security/authentications/services/admin-config/auth-organization-configuration.service.ts +424 -0
- package/src/security/authentications/services/admin-config/domain-to-org-lookup.backend.service.ts +244 -0
- package/src/security/authentications/services/admin-config/domain-verification.backend.service.ts +215 -0
- package/src/security/authentications/services/admin-config/enterprise-user-provisioning.backend.service.ts +509 -0
- package/src/security/authentications/services/admin-config/oidc-discovery.backend.service.ts +250 -0
- package/src/security/authentications/services/anonymous-session.backend.service.ts +442 -0
- package/src/security/authentications/services/auth-credential-verifier.backend.service.ts +147 -0
- package/src/security/authentications/services/auth-execution-context-factory.backend.service.ts +132 -0
- package/src/security/authentications/services/auth-methods/auth-method-management.backend.service.ts +532 -0
- package/src/security/authentications/services/auth-methods/auth-mfa.backend.service.ts +141 -0
- package/src/security/authentications/services/auth-methods/auth-password-reset.backend.service.ts +215 -0
- package/src/security/authentications/services/auth-methods/auth-phone-verification.backend.service.ts +136 -0
- package/src/security/authentications/services/auth-methods/auth-registration.backend.service.ts +994 -0
- package/src/security/authentications/services/auth-methods/oauth2-authentication.backend.service.ts +1210 -0
- package/src/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.ts +903 -0
- package/src/security/authentications/services/auth-methods/saml-assertion-validator.backend.service.ts +791 -0
- package/src/security/authentications/services/auth-methods/saml-authentication.backend.service.ts +1727 -0
- package/src/security/authentications/services/auth-methods/saml-metadata.backend.service.ts +432 -0
- package/src/security/authentications/services/auth-methods/saml-replay-guard.backend.service.ts +90 -0
- package/src/security/authentications/services/auth-methods/webauthn.backend.service.ts +393 -0
- package/src/security/authentications/services/auth-session-store.backend.service.ts +211 -0
- package/src/security/authentications/services/auth-token-issuer.backend.service.ts +496 -0
- package/src/security/authentications/services/authentication-orchestrator.backend.service.ts +3156 -0
- package/src/security/authentications/services/custom-impls/auth-custom-implementations.backend.ts +88 -0
- package/src/security/authentications/services/custom-impls/auth-policy.custom-impl.backend.service.ts +54 -0
- package/src/security/authentications/services/custom-impls/scim-provisioning-config.custom-impl.backend.service.ts +167 -0
- package/src/security/authentications/services/custom-impls/scim-tokens.custom-impl.backend.service.ts +136 -0
- package/src/security/authentications/services/custom-impls/siem-delivery-dlq.custom-impl.backend.service.ts +123 -0
- package/src/security/authentications/services/custom-impls/siem-export-config.custom-impl.backend.service.ts +161 -0
- package/src/security/authentications/services/custom-impls/sso-config.custom-impl.backend.service.ts +185 -0
- package/src/security/authentications/services/custom-impls/sso-connection.custom-impl.backend.service.ts +792 -0
- package/src/security/authentications/services/utils/__tests__/mock-auth-user-lookup.service.ts +62 -0
- package/src/security/authentications/services/utils/auth-controller.utils.ts +51 -0
- package/src/security/authentications/services/utils/auth-credential-ops.backend.service.ts +202 -0
- package/src/security/authentications/services/utils/auth-response-helper.backend.service.ts +38 -0
- package/src/security/authentications/services/utils/auth-user-lookup.backend.service.ts +128 -0
- package/src/security/authentications/services/utils/saml-java-availability.ts +64 -0
- package/src/security/authorizations/__tests__/authorizations.backend.service.test.ts +82 -0
- package/src/security/authorizations/services/authorizations.backend.service.ts +934 -0
- package/src/security/consumable-tokens/batches/consumable-tokens-cleanup.batch.backend.service.ts +168 -0
- package/src/security/consumable-tokens/models/consumable-tokens.backend.resources-config.schemas.ts +92 -0
- package/src/security/consumable-tokens/models/consumable-tokens.shared.schemas.ts +86 -0
- package/src/security/consumable-tokens/models/index.ts +3 -0
- package/src/security/consumable-tokens/services/__tests__/mock-consumable-token.service.ts +63 -0
- package/src/security/consumable-tokens/services/consumable-token.backend.service.ts +568 -0
- package/src/security/jwt/services/auth-jwt-guard.backend.service.ts +137 -0
- package/src/security/jwt/services/jwt.backend.service.ts +397 -0
- package/src/security/scim/__tests__/scim-filter-parser.test.ts +121 -0
- package/src/security/scim/controllers/scim.backend.controller.ts +1066 -0
- package/src/security/scim/models/scim-protocol.backend.schemas.ts +258 -0
- package/src/security/scim/utils/scim-filter-parser.ts +289 -0
- package/src/security/scim/utils/scim-response-formatter.ts +122 -0
- package/src/testing.ts +30 -0
- package/src/types/xmldom.d.ts +9 -0
- package/src/users/services/user-self-custom-implementations.backend.ts +62 -0
|
@@ -0,0 +1,2486 @@
|
|
|
1
|
+
import { injectable, inject } from 'inversify';
|
|
2
|
+
import { Schema, Model, Document, Connection, Types } from 'mongoose';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import {
|
|
5
|
+
ResourceConfiguration,
|
|
6
|
+
ResourceType,
|
|
7
|
+
|
|
8
|
+
CoreResourceOperation,
|
|
9
|
+
CoreResourceType,
|
|
10
|
+
ErrorType,
|
|
11
|
+
ErrorCustomMessageReference,
|
|
12
|
+
} from '@wildo-ai/saas-models';
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
import {
|
|
16
|
+
isZodPipe,
|
|
17
|
+
getPipeInputSchema,
|
|
18
|
+
isZodObject,
|
|
19
|
+
getZodType,
|
|
20
|
+
EnumLikeType,
|
|
21
|
+
hasZodType,
|
|
22
|
+
isZodArray,
|
|
23
|
+
isZodOptional,
|
|
24
|
+
isZodNullable,
|
|
25
|
+
isZodDefault,
|
|
26
|
+
getZodDefSchemaProperty,
|
|
27
|
+
getZodDefArrayProperty,
|
|
28
|
+
getZodDefStringProperty,
|
|
29
|
+
getZodDefFunctionProperty,
|
|
30
|
+
getZodDefProperty,
|
|
31
|
+
getZodDef,
|
|
32
|
+
getZodObjectShape,
|
|
33
|
+
isZodTransform,
|
|
34
|
+
isZodCustom,
|
|
35
|
+
isZodTuple,
|
|
36
|
+
isDiscriminatedUnion,
|
|
37
|
+
isZodUnion,
|
|
38
|
+
isZodIntersection,
|
|
39
|
+
isZodLiteral,
|
|
40
|
+
isZodLazy,
|
|
41
|
+
isZodTypeAny,
|
|
42
|
+
isZodRecord,
|
|
43
|
+
isZodSet,
|
|
44
|
+
isDBIndexed,
|
|
45
|
+
isForeignKey,
|
|
46
|
+
unwrapSchema,
|
|
47
|
+
getEnumValues,
|
|
48
|
+
isUnique,
|
|
49
|
+
getUniqueParams,
|
|
50
|
+
UniqueFieldParams,
|
|
51
|
+
isPrimaryKey,
|
|
52
|
+
hasTtl,
|
|
53
|
+
getTtlParams,
|
|
54
|
+
TtlFieldParams,
|
|
55
|
+
} from '@wildo-ai/zod-decorators';
|
|
56
|
+
|
|
57
|
+
import {
|
|
58
|
+
SCHEMA_DEFAULT_OPTIONS,
|
|
59
|
+
SCHEMA_SUBDOCUMENT_OPTIONS,
|
|
60
|
+
initModelFromSchema
|
|
61
|
+
} from './db-utils';
|
|
62
|
+
|
|
63
|
+
import { SAAS_SERVICE_TYPES } from '~wildo-backend-lib/inject/models/service-types';
|
|
64
|
+
import { LoggerService } from '~wildo-backend-lib/monitoring/logger/services/logger.service';
|
|
65
|
+
import { ErrorBuilderBackendService } from '~wildo-backend-lib/errors/services/error-builder.backend.service';
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Interface for union inheritance schema information (not model instances)
|
|
70
|
+
* Represents different inheritance options in a discriminated union
|
|
71
|
+
*/
|
|
72
|
+
export interface UnionInheritance_SchemaInfo {
|
|
73
|
+
discriminatorKey: string;
|
|
74
|
+
discriminatorValue: string;
|
|
75
|
+
schema: Schema;
|
|
76
|
+
zodSchema: z.ZodTypeAny;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Options for schema conversion
|
|
81
|
+
*/
|
|
82
|
+
export interface SchemaConversionOptions {
|
|
83
|
+
includeIndexes?: boolean;
|
|
84
|
+
applyDefaults?: boolean;
|
|
85
|
+
maxDepth?: number;
|
|
86
|
+
connection?: Connection; // optional connection to bind model creation
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Info for unique index application
|
|
91
|
+
*/
|
|
92
|
+
export interface UniqueIndexInfo {
|
|
93
|
+
path: string;
|
|
94
|
+
params: UniqueFieldParams;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* Info for TTL (Time To Live) index application.
|
|
99
|
+
* MongoDB will automatically delete documents when the TTL expires.
|
|
100
|
+
*/
|
|
101
|
+
export interface TtlIndexInfo {
|
|
102
|
+
path: string;
|
|
103
|
+
params: TtlFieldParams;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Interface for generated model information (for debugging)
|
|
108
|
+
*/
|
|
109
|
+
export interface GeneratedModelInfo {
|
|
110
|
+
resourceType: ResourceType;
|
|
111
|
+
modelName: string;
|
|
112
|
+
mainModel: Model<any & Document>;
|
|
113
|
+
inheritanceSchemas: UnionInheritance_SchemaInfo[];
|
|
114
|
+
inheritanceModels: Model<any & Document>[];
|
|
115
|
+
schemaFieldCount: number;
|
|
116
|
+
indexCount: number;
|
|
117
|
+
conversionOptions: SchemaConversionOptions;
|
|
118
|
+
createdAt: Date;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Debug statistics for model generation
|
|
123
|
+
*/
|
|
124
|
+
export interface ModelGenerationStats {
|
|
125
|
+
totalResources: number;
|
|
126
|
+
totalMainModels: number;
|
|
127
|
+
totalInheritanceModels: number;
|
|
128
|
+
totalSchemaFields: number;
|
|
129
|
+
totalIndexes: number;
|
|
130
|
+
resourceTypes: ResourceType[];
|
|
131
|
+
conversionTime: number;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Service for converting Zod schemas to Mongoose schemas
|
|
136
|
+
* Handles decorators for database indexing and resource references
|
|
137
|
+
* Supports discriminated unions and complex nested objects
|
|
138
|
+
*
|
|
139
|
+
* IMPORTANT: This service is STATELESS and does NOT create inheritance models
|
|
140
|
+
* to avoid global state mutations. Use the returned schemas to create models externally.
|
|
141
|
+
*
|
|
142
|
+
* Features unified error handling with ErrorBuilderBackendService for schema conversion errors.
|
|
143
|
+
*/
|
|
144
|
+
@injectable()
|
|
145
|
+
export class ZodToMongooseSchemaConvertorBackendService {
|
|
146
|
+
|
|
147
|
+
// =================================================================
|
|
148
|
+
// CONSTRUCTOR AND CONFIGURATION
|
|
149
|
+
// =================================================================
|
|
150
|
+
|
|
151
|
+
private readonly DEFAULT_MAX_DEPTH = 25;
|
|
152
|
+
protected logDebug: (message: string, context?: Record<string, unknown>) => void;
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
constructor(
|
|
156
|
+
@inject(SAAS_SERVICE_TYPES.Logger) private logger: LoggerService,
|
|
157
|
+
@inject(SAAS_SERVICE_TYPES.ErrorBuilderService) private errorBuilder: ErrorBuilderBackendService
|
|
158
|
+
) {
|
|
159
|
+
this.logDebug = this.logger.debugByType('ZodToMongooseSchemaConvertorBackendService');
|
|
160
|
+
this.logger.setDebugTypeLogging('ZodToMongooseSchemaConvertorBackendService', false);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
// =================================================================
|
|
164
|
+
// PUBLIC API METHODS
|
|
165
|
+
// =================================================================
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* Converts a ResourceConfiguration to a Mongoose model
|
|
169
|
+
* @param resourceConfiguration The resource configuration containing the schema
|
|
170
|
+
* @param options Conversion options
|
|
171
|
+
* @returns Object containing the main model and union inheritance schema information
|
|
172
|
+
* @throws Error if schema conversion fails
|
|
173
|
+
*/
|
|
174
|
+
/**
|
|
175
|
+
* NOTE: TDatabaseSchema has been removed. Backend-only fields are now marked with
|
|
176
|
+
* the `isBackendOnly` decorator on mainSchema and handled at the service layer.
|
|
177
|
+
*/
|
|
178
|
+
convertResourceConfigurationToModel<
|
|
179
|
+
TCustomOperationEnum extends EnumLikeType | undefined,
|
|
180
|
+
TCoreOperationEnum extends Partial<CoreResourceOperation> | undefined,
|
|
181
|
+
TMainSchema extends z.ZodTypeAny
|
|
182
|
+
>(
|
|
183
|
+
resourceConfiguration: ResourceConfiguration<TCustomOperationEnum, TCoreOperationEnum, TMainSchema>,
|
|
184
|
+
options: SchemaConversionOptions = {}
|
|
185
|
+
): {
|
|
186
|
+
mainModel: Model<any & Document>;
|
|
187
|
+
inheritanceSchemas: UnionInheritance_SchemaInfo[];
|
|
188
|
+
} {
|
|
189
|
+
|
|
190
|
+
const startTime = Date.now();
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
if (!resourceConfiguration) {
|
|
194
|
+
const error = this.errorBuilder.buildError(
|
|
195
|
+
ErrorType.VALIDATION,
|
|
196
|
+
undefined,
|
|
197
|
+
{ customMessageReference: ErrorCustomMessageReference.ZOD_CONVERTER_SCHEMA_CONVERSION_FAILED }
|
|
198
|
+
);
|
|
199
|
+
throw error;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
if (!resourceConfiguration.mainSchema) {
|
|
203
|
+
const error = this.errorBuilder.buildError(
|
|
204
|
+
ErrorType.VALIDATION,
|
|
205
|
+
undefined,
|
|
206
|
+
{ customMessageReference: ErrorCustomMessageReference.ZOD_CONVERTER_SCHEMA_CONVERSION_FAILED, }
|
|
207
|
+
);
|
|
208
|
+
throw error;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
// NOTE: databaseSchema was removed - mainSchema now contains all fields including backend-only (marked with isBackendOnly decorator)
|
|
212
|
+
const schemaToConvert = resourceConfiguration.mainSchema;
|
|
213
|
+
const modelLabel = resourceConfiguration.resourceIdentifier as string;
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
|
|
217
|
+
// Get the collection name (may be different from model name for USER_SELF_* resources)
|
|
218
|
+
const collectionName = this.getCollectionNameForResource(resourceConfiguration.resourceIdentifier);
|
|
219
|
+
|
|
220
|
+
if (!modelLabel) {
|
|
221
|
+
const error = this.errorBuilder.buildError(
|
|
222
|
+
ErrorType.VALIDATION,
|
|
223
|
+
undefined,
|
|
224
|
+
{ customMessageReference: ErrorCustomMessageReference.ZOD_CONVERTER_SCHEMA_CONVERSION_FAILED }
|
|
225
|
+
);
|
|
226
|
+
throw error;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
try {
|
|
230
|
+
// Convert Zod schema to Mongoose schema with clean state
|
|
231
|
+
const conversionResult = this.convertZodSchemaToMongooseSchemaWithCleanup(
|
|
232
|
+
schemaToConvert,
|
|
233
|
+
options,
|
|
234
|
+
resourceConfiguration
|
|
235
|
+
);
|
|
236
|
+
|
|
237
|
+
// Initialize main model with custom collection name if different from model name and optional connection
|
|
238
|
+
const mainModel = initModelFromSchema(
|
|
239
|
+
conversionResult.mongooseSchema,
|
|
240
|
+
modelLabel,
|
|
241
|
+
collectionName,
|
|
242
|
+
options.connection
|
|
243
|
+
);
|
|
244
|
+
|
|
245
|
+
// Log debug information if debug logging is enabled
|
|
246
|
+
this.logDebug(`Converted schema for resource '${modelLabel}'`, {
|
|
247
|
+
resourceType: resourceConfiguration.resourceIdentifier,
|
|
248
|
+
modelName: modelLabel,
|
|
249
|
+
schemaFieldCount: this.countSchemaFields(conversionResult.mongooseSchema),
|
|
250
|
+
indexCount: conversionResult.mongooseSchema.indexes().length,
|
|
251
|
+
inheritanceCount: conversionResult.inheritanceSchemas.length,
|
|
252
|
+
conversionTime: Date.now() - startTime,
|
|
253
|
+
conversionOptions: options
|
|
254
|
+
});
|
|
255
|
+
|
|
256
|
+
return {
|
|
257
|
+
mainModel,
|
|
258
|
+
inheritanceSchemas: conversionResult.inheritanceSchemas
|
|
259
|
+
};
|
|
260
|
+
} catch (error) {
|
|
261
|
+
const conversionError = this.errorBuilder.buildError(
|
|
262
|
+
ErrorType.INTERNAL,
|
|
263
|
+
undefined,
|
|
264
|
+
{
|
|
265
|
+
customMessageReference: ErrorCustomMessageReference.ZOD_CONVERTER_SCHEMA_CONVERSION_FAILED,
|
|
266
|
+
context: {
|
|
267
|
+
resourceType: resourceConfiguration.resourceIdentifier,
|
|
268
|
+
modelLabel,
|
|
269
|
+
originalError: error instanceof Error ? error.message : (typeof error === 'object' ? JSON.stringify(error, null, 2) : String(error))
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
);
|
|
273
|
+
throw conversionError;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
/**
|
|
278
|
+
* Creates a Mongoose model directly from a Zod schema (utility method)
|
|
279
|
+
* @param zodSchema The Zod schema
|
|
280
|
+
* @param modelName The name for the model
|
|
281
|
+
* @param options Conversion options
|
|
282
|
+
* @returns Object containing the main model and union inheritance schemas
|
|
283
|
+
* @throws Error if schema conversion fails
|
|
284
|
+
*/
|
|
285
|
+
createModelFromZodSchema(
|
|
286
|
+
zodSchema: z.ZodTypeAny,
|
|
287
|
+
modelName: string,
|
|
288
|
+
options: SchemaConversionOptions = {}
|
|
289
|
+
): {
|
|
290
|
+
mainModel: Model<any & Document>;
|
|
291
|
+
inheritanceSchemas: UnionInheritance_SchemaInfo[];
|
|
292
|
+
} {
|
|
293
|
+
|
|
294
|
+
if (!zodSchema) {
|
|
295
|
+
const error = this.errorBuilder.buildError(
|
|
296
|
+
ErrorType.VALIDATION,
|
|
297
|
+
undefined,
|
|
298
|
+
{ customMessageReference: ErrorCustomMessageReference.ZOD_CONVERTER_SCHEMA_CONVERSION_FAILED }
|
|
299
|
+
);
|
|
300
|
+
throw error;
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
if (!modelName || typeof modelName !== 'string') {
|
|
304
|
+
const error = this.errorBuilder.buildError(
|
|
305
|
+
ErrorType.VALIDATION,
|
|
306
|
+
undefined,
|
|
307
|
+
{ customMessageReference: ErrorCustomMessageReference.ZOD_CONVERTER_SCHEMA_CONVERSION_FAILED }
|
|
308
|
+
);
|
|
309
|
+
throw error;
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
try {
|
|
313
|
+
const conversionResult = this.convertZodSchemaToMongooseSchemaWithCleanup(zodSchema, options, undefined);
|
|
314
|
+
const mainModel = initModelFromSchema(conversionResult.mongooseSchema, modelName);
|
|
315
|
+
|
|
316
|
+
this.logDebug(`Created model from Zod schema '${modelName}'`, {
|
|
317
|
+
modelName,
|
|
318
|
+
schemaFieldCount: this.countSchemaFields(conversionResult.mongooseSchema),
|
|
319
|
+
indexCount: conversionResult.mongooseSchema.indexes().length,
|
|
320
|
+
inheritanceCount: conversionResult.inheritanceSchemas.length,
|
|
321
|
+
conversionOptions: options
|
|
322
|
+
});
|
|
323
|
+
|
|
324
|
+
return {
|
|
325
|
+
mainModel,
|
|
326
|
+
inheritanceSchemas: conversionResult.inheritanceSchemas
|
|
327
|
+
};
|
|
328
|
+
} catch (error) {
|
|
329
|
+
const modelError = this.errorBuilder.buildError(
|
|
330
|
+
ErrorType.INTERNAL,
|
|
331
|
+
undefined,
|
|
332
|
+
{
|
|
333
|
+
customMessageReference: ErrorCustomMessageReference.ZOD_CONVERTER_MODEL_BUILD_FAILED,
|
|
334
|
+
context: {
|
|
335
|
+
modelName,
|
|
336
|
+
originalError: error instanceof Error ? error.message : (typeof error === 'object' ? JSON.stringify(error, null, 2) : String(error))
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
);
|
|
340
|
+
throw modelError;
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
/**
|
|
345
|
+
* Creates inheritance models from union inheritance schemas
|
|
346
|
+
* This is a separate method to allow external control over model creation
|
|
347
|
+
* @param unionRootModel The union root model (base for all inheritance options)
|
|
348
|
+
* @param inheritanceSchemas The union inheritance schemas to create models from
|
|
349
|
+
* @returns Array of created inheritance models
|
|
350
|
+
*/
|
|
351
|
+
createInheritanceModels(
|
|
352
|
+
unionRootModel: Model<any & Document>,
|
|
353
|
+
inheritanceSchemas: UnionInheritance_SchemaInfo[]
|
|
354
|
+
): Model<any & Document>[] {
|
|
355
|
+
|
|
356
|
+
const models: Model<any & Document>[] = [];
|
|
357
|
+
|
|
358
|
+
for (const inheritanceSchema of inheritanceSchemas) {
|
|
359
|
+
try {
|
|
360
|
+
const inheritanceModelName = `${unionRootModel.modelName}_${inheritanceSchema.discriminatorValue}`;
|
|
361
|
+
const inheritanceModel = unionRootModel.discriminator(inheritanceModelName, inheritanceSchema.schema);
|
|
362
|
+
models.push(inheritanceModel);
|
|
363
|
+
} catch (error) {
|
|
364
|
+
this.logger.warn(`Failed to create inheritance model for value '${inheritanceSchema.discriminatorValue}': ${error instanceof Error ? error.message : String(error)}`);
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
this.logDebug(`Created inheritance models for union root model '${unionRootModel.modelName}'`, {
|
|
369
|
+
unionRootModelName: unionRootModel.modelName,
|
|
370
|
+
inheritanceModelsCount: models.length,
|
|
371
|
+
inheritanceValues: inheritanceSchemas.map(s => s.discriminatorValue)
|
|
372
|
+
});
|
|
373
|
+
|
|
374
|
+
return models;
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
// =================================================================
|
|
378
|
+
// MAIN CONVERSION METHODS
|
|
379
|
+
// =================================================================
|
|
380
|
+
|
|
381
|
+
/**
|
|
382
|
+
* Converts a Zod schema to a Mongoose schema with proper cleanup
|
|
383
|
+
* @param zodSchema The Zod schema to convert
|
|
384
|
+
* @param options Conversion options
|
|
385
|
+
* @returns Object containing mongoose schema and union inheritance information
|
|
386
|
+
*/
|
|
387
|
+
private convertZodSchemaToMongooseSchemaWithCleanup(
|
|
388
|
+
zodSchema: z.ZodTypeAny,
|
|
389
|
+
options: SchemaConversionOptions = {},
|
|
390
|
+
resourceConfiguration?: any
|
|
391
|
+
): {
|
|
392
|
+
mongooseSchema: Schema;
|
|
393
|
+
inheritanceSchemas: UnionInheritance_SchemaInfo[];
|
|
394
|
+
} {
|
|
395
|
+
|
|
396
|
+
if (!zodSchema) {
|
|
397
|
+
const error = this.errorBuilder.buildError(
|
|
398
|
+
ErrorType.VALIDATION,
|
|
399
|
+
undefined,
|
|
400
|
+
{ customMessageReference: ErrorCustomMessageReference.ZOD_CONVERTER_SCHEMA_CONVERSION_FAILED }
|
|
401
|
+
);
|
|
402
|
+
throw error;
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
const maxDepth = options.maxDepth || this.DEFAULT_MAX_DEPTH;
|
|
406
|
+
const processedSchemas = new WeakSet<z.ZodTypeAny>();
|
|
407
|
+
const schemaCache = new WeakMap<z.ZodTypeAny, Schema>();
|
|
408
|
+
const inheritanceSchemas: UnionInheritance_SchemaInfo[] = [];
|
|
409
|
+
const indexesToApply: string[] = [];
|
|
410
|
+
const uniqueIndexesToApply: UniqueIndexInfo[] = [];
|
|
411
|
+
const ttlIndexesToApply: TtlIndexInfo[] = [];
|
|
412
|
+
|
|
413
|
+
try {
|
|
414
|
+
// Convert Zod schema to Mongoose schema definition
|
|
415
|
+
const schemaDefinition = this.convertZodTypeToMongooseDefinition(
|
|
416
|
+
zodSchema,
|
|
417
|
+
processedSchemas,
|
|
418
|
+
schemaCache,
|
|
419
|
+
inheritanceSchemas,
|
|
420
|
+
indexesToApply,
|
|
421
|
+
uniqueIndexesToApply,
|
|
422
|
+
ttlIndexesToApply,
|
|
423
|
+
'',
|
|
424
|
+
0,
|
|
425
|
+
maxDepth
|
|
426
|
+
);
|
|
427
|
+
|
|
428
|
+
|
|
429
|
+
|
|
430
|
+
|
|
431
|
+
|
|
432
|
+
// Remove discriminatorKey from schema definition if present (it's not a valid Mongoose field type)
|
|
433
|
+
// discriminatorKey is used for model-level discriminator configuration, not schema definition
|
|
434
|
+
const { discriminatorKey, ...cleanSchemaDefinition } = schemaDefinition as any;
|
|
435
|
+
|
|
436
|
+
// CRDT field-level metadata — schemaless Mixed field for per-field LWW timestamps.
|
|
437
|
+
// Only populated for resources that have isCRDT() fields.
|
|
438
|
+
cleanSchemaDefinition._field_meta = { type: Schema.Types.Mixed };
|
|
439
|
+
|
|
440
|
+
// Create the Mongoose schema
|
|
441
|
+
const mongooseSchema = new Schema(cleanSchemaDefinition, SCHEMA_DEFAULT_OPTIONS);
|
|
442
|
+
|
|
443
|
+
// Apply standard transforms (convert ObjectId to string in toObject/toJSON)
|
|
444
|
+
this.applyStandardTransforms(mongooseSchema);
|
|
445
|
+
|
|
446
|
+
// Apply indexes if enabled
|
|
447
|
+
if (options.includeIndexes !== false) {
|
|
448
|
+
this.applyIndexesToSchema(mongooseSchema, indexesToApply, uniqueIndexesToApply, ttlIndexesToApply);
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
return {
|
|
452
|
+
mongooseSchema,
|
|
453
|
+
inheritanceSchemas
|
|
454
|
+
};
|
|
455
|
+
} catch (error) {
|
|
456
|
+
// Cleanup
|
|
457
|
+
inheritanceSchemas.length = 0;
|
|
458
|
+
indexesToApply.length = 0;
|
|
459
|
+
ttlIndexesToApply.length = 0;
|
|
460
|
+
uniqueIndexesToApply.length = 0;
|
|
461
|
+
|
|
462
|
+
const conversionError = this.errorBuilder.buildError(
|
|
463
|
+
ErrorType.INTERNAL,
|
|
464
|
+
undefined,
|
|
465
|
+
{
|
|
466
|
+
customMessageReference: ErrorCustomMessageReference.ZOD_CONVERTER_SCHEMA_CONVERSION_FAILED,
|
|
467
|
+
context: {
|
|
468
|
+
originalError: error instanceof Error ? error.message : (typeof error === 'object' ? JSON.stringify(error, null, 2) : String(error)),
|
|
469
|
+
maxDepth: options.maxDepth
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
);
|
|
473
|
+
throw conversionError;
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
/**
|
|
478
|
+
* Converts a Zod type to a Mongoose schema definition
|
|
479
|
+
* @param zodType The Zod type to convert
|
|
480
|
+
* @param processedSchemas Set to track circular references
|
|
481
|
+
* @param inheritanceSchemas Array to collect union inheritance schemas
|
|
482
|
+
* @param indexesToApply Array to collect index paths
|
|
483
|
+
* @param uniqueIndexesToApply Array to collect unique index paths with params
|
|
484
|
+
* @param ttlIndexesToApply Array to collect TTL index paths with params
|
|
485
|
+
* @param currentPath Current object path for indexing
|
|
486
|
+
* @param currentDepth Current recursion depth
|
|
487
|
+
* @param maxDepth Maximum allowed recursion depth
|
|
488
|
+
* @returns The Mongoose schema definition
|
|
489
|
+
*/
|
|
490
|
+
private convertZodTypeToMongooseDefinition(
|
|
491
|
+
zodType: z.ZodTypeAny,
|
|
492
|
+
processedSchemas: WeakSet<z.ZodTypeAny>,
|
|
493
|
+
schemaCache: WeakMap<z.ZodTypeAny, Schema>,
|
|
494
|
+
inheritanceSchemas: UnionInheritance_SchemaInfo[],
|
|
495
|
+
indexesToApply: string[],
|
|
496
|
+
uniqueIndexesToApply: UniqueIndexInfo[],
|
|
497
|
+
ttlIndexesToApply: TtlIndexInfo[],
|
|
498
|
+
currentPath: string = '',
|
|
499
|
+
currentDepth: number = 0,
|
|
500
|
+
maxDepth: number = 10
|
|
501
|
+
): any {
|
|
502
|
+
|
|
503
|
+
|
|
504
|
+
|
|
505
|
+
// Depth check
|
|
506
|
+
if (currentDepth >= maxDepth) {
|
|
507
|
+
return { type: Schema.Types.Mixed };
|
|
508
|
+
}
|
|
509
|
+
|
|
510
|
+
try {
|
|
511
|
+
// Handle pipe types (from .transform(), .pipe(), etc.) - unwrap to input schema
|
|
512
|
+
// In Zod v4, transforms create pipe types with 'in' and 'out' schemas
|
|
513
|
+
if (isZodPipe(zodType)) {
|
|
514
|
+
const inputSchema = getPipeInputSchema(zodType);
|
|
515
|
+
if (inputSchema) {
|
|
516
|
+
// For pipe types, recursively process the input schema
|
|
517
|
+
return this.convertZodTypeToMongooseDefinition(
|
|
518
|
+
inputSchema,
|
|
519
|
+
processedSchemas,
|
|
520
|
+
schemaCache,
|
|
521
|
+
inheritanceSchemas,
|
|
522
|
+
indexesToApply,
|
|
523
|
+
uniqueIndexesToApply,
|
|
524
|
+
ttlIndexesToApply,
|
|
525
|
+
currentPath,
|
|
526
|
+
currentDepth,
|
|
527
|
+
maxDepth
|
|
528
|
+
);
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
|
|
532
|
+
// Handle ZodObject (main case for resource schemas)
|
|
533
|
+
// In Zod v4, object schemas have type: "object"
|
|
534
|
+
if (isZodObject(zodType)) {
|
|
535
|
+
|
|
536
|
+
// Check cache for existing schema to handle recursion
|
|
537
|
+
if (schemaCache.has(zodType)) {
|
|
538
|
+
return schemaCache.get(zodType);
|
|
539
|
+
}
|
|
540
|
+
|
|
541
|
+
// Create a new Schema instance immediately to allow self-reference
|
|
542
|
+
// We use a temporary empty definition, then add paths to it
|
|
543
|
+
const newSchema = new Schema({}, SCHEMA_SUBDOCUMENT_OPTIONS);
|
|
544
|
+
schemaCache.set(zodType, newSchema);
|
|
545
|
+
|
|
546
|
+
// Use public .shape property (Zod v4 API)
|
|
547
|
+
const shape = getZodObjectShape(zodType);
|
|
548
|
+
|
|
549
|
+
|
|
550
|
+
|
|
551
|
+
const mongooseDefinition: any = {};
|
|
552
|
+
|
|
553
|
+
for (const [fieldName, fieldSchema] of Object.entries(shape)) {
|
|
554
|
+
if (fieldName.startsWith('$') || typeof fieldSchema !== 'object' || fieldSchema === null) {
|
|
555
|
+
if (fieldName.startsWith('$')) {
|
|
556
|
+
this.logger.warn(`[ZodToMongoose] Skipping '$'-prefixed key '${fieldName}' (value type: ${typeof fieldSchema}) at path='${currentPath}'. Assumed Zod internal — if this is a user field, the filter is incorrect.`);
|
|
557
|
+
}
|
|
558
|
+
continue;
|
|
559
|
+
}
|
|
560
|
+
|
|
561
|
+
const fieldPath = currentPath ? `${currentPath}.${fieldName}` : fieldName;
|
|
562
|
+
|
|
563
|
+
const fieldDefinition = this.convertZodFieldToMongooseField(
|
|
564
|
+
fieldSchema as z.ZodTypeAny,
|
|
565
|
+
processedSchemas,
|
|
566
|
+
schemaCache,
|
|
567
|
+
inheritanceSchemas,
|
|
568
|
+
indexesToApply,
|
|
569
|
+
uniqueIndexesToApply,
|
|
570
|
+
ttlIndexesToApply,
|
|
571
|
+
fieldPath,
|
|
572
|
+
currentDepth + 1,
|
|
573
|
+
maxDepth
|
|
574
|
+
);
|
|
575
|
+
|
|
576
|
+
// Safety check: ensure field definition is valid
|
|
577
|
+
if (!fieldDefinition || typeof fieldDefinition !== 'object' ||
|
|
578
|
+
(!fieldDefinition.type && !Array.isArray(fieldDefinition) && typeof fieldDefinition !== 'object')) {
|
|
579
|
+
this.logger.warn(`[ZodToMongoose] Invalid field definition for ${fieldPath}`, { fieldDefinition });
|
|
580
|
+
this.logger.warn(`[ZodToMongoose] Zod field type was: ${typeof fieldSchema}`);
|
|
581
|
+
mongooseDefinition[fieldName] = { type: Schema.Types.Mixed };
|
|
582
|
+
} else {
|
|
583
|
+
// CRITICAL: If fieldDefinition is a Schema instance (from nested object),
|
|
584
|
+
// wrap it in { type: ... } to prevent Mongoose from iterating over its properties
|
|
585
|
+
if (this.isSchemaLike(fieldDefinition)) {
|
|
586
|
+
mongooseDefinition[fieldName] = {
|
|
587
|
+
type: fieldDefinition,
|
|
588
|
+
_id: false
|
|
589
|
+
};
|
|
590
|
+
} else {
|
|
591
|
+
mongooseDefinition[fieldName] = fieldDefinition;
|
|
592
|
+
}
|
|
593
|
+
}
|
|
594
|
+
}
|
|
595
|
+
|
|
596
|
+
// Final validation: ensure all fields have proper type properties
|
|
597
|
+
// Only validate at depth 0 (top-level). Nested objects will be validated by Mongoose
|
|
598
|
+
// when they're added to their parent schema
|
|
599
|
+
if (currentDepth === 0) {
|
|
600
|
+
this.validateAndFixFieldTypes(mongooseDefinition, 'unknown');
|
|
601
|
+
}
|
|
602
|
+
|
|
603
|
+
// If this is the top-level call (depth 0), we return the definition object
|
|
604
|
+
// so the caller can create the main Schema.
|
|
605
|
+
// If this is a nested object (depth > 0), we return the Schema instance we created.
|
|
606
|
+
if (currentDepth === 0) {
|
|
607
|
+
return mongooseDefinition;
|
|
608
|
+
} else {
|
|
609
|
+
newSchema.add(mongooseDefinition);
|
|
610
|
+
this.applyStandardTransforms(newSchema);
|
|
611
|
+
return newSchema;
|
|
612
|
+
}
|
|
613
|
+
}
|
|
614
|
+
|
|
615
|
+
// For non-object types, convert as field
|
|
616
|
+
return this.convertZodFieldToMongooseField(
|
|
617
|
+
zodType,
|
|
618
|
+
processedSchemas,
|
|
619
|
+
schemaCache,
|
|
620
|
+
inheritanceSchemas,
|
|
621
|
+
indexesToApply,
|
|
622
|
+
uniqueIndexesToApply,
|
|
623
|
+
ttlIndexesToApply,
|
|
624
|
+
currentPath,
|
|
625
|
+
currentDepth,
|
|
626
|
+
maxDepth
|
|
627
|
+
);
|
|
628
|
+
} catch (error) {
|
|
629
|
+
processedSchemas.delete(zodType);
|
|
630
|
+
this.logger.error(`[ZodToMongoose] convertZodTypeToMongooseDefinition FAILED at path='${currentPath}', depth=${currentDepth}: ${error instanceof Error ? error.message : String(error)}`);
|
|
631
|
+
throw error;
|
|
632
|
+
}
|
|
633
|
+
}
|
|
634
|
+
|
|
635
|
+
// =================================================================
|
|
636
|
+
// FIELD CONVERSION METHODS
|
|
637
|
+
// =================================================================
|
|
638
|
+
|
|
639
|
+
/**
|
|
640
|
+
* Converts a single Zod field to a Mongoose field definition
|
|
641
|
+
* @param zodField The Zod field schema
|
|
642
|
+
* @param processedSchemas Set to track circular references
|
|
643
|
+
* @param inheritanceSchemas Array to collect union inheritance schemas
|
|
644
|
+
* @param indexesToApply Array to collect index paths
|
|
645
|
+
* @param ttlIndexesToApply Array to collect TTL index paths
|
|
646
|
+
* @param currentPath Current field path
|
|
647
|
+
* @param currentDepth Current recursion depth
|
|
648
|
+
* @param maxDepth Maximum allowed recursion depth
|
|
649
|
+
* @returns The Mongoose field definition
|
|
650
|
+
*/
|
|
651
|
+
private convertZodFieldToMongooseField(
|
|
652
|
+
zodField: z.ZodTypeAny,
|
|
653
|
+
processedSchemas: WeakSet<z.ZodTypeAny>,
|
|
654
|
+
schemaCache: WeakMap<z.ZodTypeAny, Schema>,
|
|
655
|
+
inheritanceSchemas: UnionInheritance_SchemaInfo[],
|
|
656
|
+
indexesToApply: string[],
|
|
657
|
+
uniqueIndexesToApply: UniqueIndexInfo[],
|
|
658
|
+
ttlIndexesToApply: TtlIndexInfo[],
|
|
659
|
+
currentPath: string,
|
|
660
|
+
currentDepth: number,
|
|
661
|
+
maxDepth: number
|
|
662
|
+
): any {
|
|
663
|
+
|
|
664
|
+
// Special handling for _id fields - always convert to ObjectId
|
|
665
|
+
const fieldName = currentPath.split('.').pop() || '';
|
|
666
|
+
if (fieldName === '_id') {
|
|
667
|
+
const definition: any = {
|
|
668
|
+
type: Schema.Types.ObjectId,
|
|
669
|
+
// Ensure Mongoose can auto-generate _id when not provided
|
|
670
|
+
default: () => new Types.ObjectId(),
|
|
671
|
+
required: false
|
|
672
|
+
};
|
|
673
|
+
|
|
674
|
+
return definition;
|
|
675
|
+
}
|
|
676
|
+
|
|
677
|
+
// Unwrap optional fields
|
|
678
|
+
// In Zod v4, optional schemas have type: "optional"
|
|
679
|
+
if (isZodOptional(zodField)) {
|
|
680
|
+
const innerType = getZodDefSchemaProperty(zodField, 'innerType');
|
|
681
|
+
if (!innerType) {
|
|
682
|
+
return { type: Schema.Types.Mixed, required: false };
|
|
683
|
+
}
|
|
684
|
+
const innerField = this.convertZodFieldToMongooseField(
|
|
685
|
+
innerType,
|
|
686
|
+
processedSchemas,
|
|
687
|
+
schemaCache,
|
|
688
|
+
inheritanceSchemas,
|
|
689
|
+
indexesToApply,
|
|
690
|
+
uniqueIndexesToApply,
|
|
691
|
+
ttlIndexesToApply,
|
|
692
|
+
currentPath,
|
|
693
|
+
currentDepth,
|
|
694
|
+
maxDepth
|
|
695
|
+
);
|
|
696
|
+
// For optional fields, explicitly ensure they are NOT required
|
|
697
|
+
if (!innerField || typeof innerField !== 'object') {
|
|
698
|
+
return { type: Schema.Types.Mixed, required: false };
|
|
699
|
+
}
|
|
700
|
+
|
|
701
|
+
// Handle arrays specially (arrays don't have required property)
|
|
702
|
+
if (Array.isArray(innerField)) {
|
|
703
|
+
return innerField; // Arrays don't have required property
|
|
704
|
+
}
|
|
705
|
+
|
|
706
|
+
// CRITICAL: If innerField is a Schema instance (from nested object), wrap it properly
|
|
707
|
+
// Do NOT destructure Schema instances as this spreads their internal properties
|
|
708
|
+
if (this.isSchemaLike(innerField)) {
|
|
709
|
+
return {
|
|
710
|
+
type: innerField,
|
|
711
|
+
required: false,
|
|
712
|
+
_id: false
|
|
713
|
+
};
|
|
714
|
+
}
|
|
715
|
+
|
|
716
|
+
// Remove any required: true and explicitly set required: false for optional fields
|
|
717
|
+
const { required, ...optionalField } = innerField;
|
|
718
|
+
|
|
719
|
+
// Explicitly set required: false to ensure Mongoose recognizes this as optional
|
|
720
|
+
const result = Object.keys(optionalField).length === 0 && innerField.type
|
|
721
|
+
? { type: innerField.type, required: false }
|
|
722
|
+
: { ...optionalField, required: false };
|
|
723
|
+
|
|
724
|
+
return result;
|
|
725
|
+
}
|
|
726
|
+
|
|
727
|
+
// Unwrap nullable fields
|
|
728
|
+
// In Zod v4, nullable schemas have type: "nullable"
|
|
729
|
+
if (isZodNullable(zodField)) {
|
|
730
|
+
const innerType = getZodDefSchemaProperty(zodField, 'innerType');
|
|
731
|
+
if (!innerType) {
|
|
732
|
+
return { type: Schema.Types.Mixed };
|
|
733
|
+
}
|
|
734
|
+
const innerField = this.convertZodFieldToMongooseField(
|
|
735
|
+
innerType,
|
|
736
|
+
processedSchemas,
|
|
737
|
+
schemaCache,
|
|
738
|
+
inheritanceSchemas,
|
|
739
|
+
indexesToApply,
|
|
740
|
+
uniqueIndexesToApply,
|
|
741
|
+
ttlIndexesToApply,
|
|
742
|
+
currentPath,
|
|
743
|
+
currentDepth,
|
|
744
|
+
maxDepth
|
|
745
|
+
);
|
|
746
|
+
// Ensure we always have at least the type information
|
|
747
|
+
if (!innerField || typeof innerField !== 'object') {
|
|
748
|
+
return { type: Schema.Types.Mixed };
|
|
749
|
+
}
|
|
750
|
+
|
|
751
|
+
// CRITICAL: If innerField is a Schema instance (from nested object), wrap it properly
|
|
752
|
+
// Do NOT destructure Schema instances as this spreads their internal properties
|
|
753
|
+
if (this.isSchemaLike(innerField)) {
|
|
754
|
+
return {
|
|
755
|
+
type: innerField,
|
|
756
|
+
_id: false
|
|
757
|
+
};
|
|
758
|
+
}
|
|
759
|
+
|
|
760
|
+
// For nullable fields, we typically don't want required=true
|
|
761
|
+
const { required, ...nullableField } = innerField;
|
|
762
|
+
if (Object.keys(nullableField).length === 0 && innerField.type) {
|
|
763
|
+
return { type: innerField.type };
|
|
764
|
+
}
|
|
765
|
+
return nullableField;
|
|
766
|
+
}
|
|
767
|
+
|
|
768
|
+
// Unwrap default fields
|
|
769
|
+
// In Zod v4, default schemas have type: "default"
|
|
770
|
+
if (isZodDefault(zodField)) {
|
|
771
|
+
const defaultValueProp = getZodDefProperty(zodField, 'defaultValue');
|
|
772
|
+
const defaultValue = typeof defaultValueProp === 'function'
|
|
773
|
+
? (defaultValueProp as () => unknown)()
|
|
774
|
+
: defaultValueProp;
|
|
775
|
+
|
|
776
|
+
const innerType = getZodDefSchemaProperty(zodField, 'innerType');
|
|
777
|
+
if (!innerType) {
|
|
778
|
+
return { type: Schema.Types.Mixed, default: defaultValue };
|
|
779
|
+
}
|
|
780
|
+
|
|
781
|
+
const innerField = this.convertZodFieldToMongooseField(
|
|
782
|
+
innerType,
|
|
783
|
+
processedSchemas,
|
|
784
|
+
schemaCache,
|
|
785
|
+
inheritanceSchemas,
|
|
786
|
+
indexesToApply,
|
|
787
|
+
uniqueIndexesToApply,
|
|
788
|
+
ttlIndexesToApply,
|
|
789
|
+
currentPath,
|
|
790
|
+
currentDepth,
|
|
791
|
+
maxDepth
|
|
792
|
+
);
|
|
793
|
+
|
|
794
|
+
// Remove required property for fields with defaults (Mongoose treats absence as optional)
|
|
795
|
+
// Ensure we always have at least the type information
|
|
796
|
+
if (!innerField || typeof innerField !== 'object') {
|
|
797
|
+
return { type: Schema.Types.Mixed, default: defaultValue };
|
|
798
|
+
}
|
|
799
|
+
|
|
800
|
+
// Handle arrays BEFORE destructuring (arrays don't have required property)
|
|
801
|
+
if (Array.isArray(innerField)) {
|
|
802
|
+
return {
|
|
803
|
+
type: innerField,
|
|
804
|
+
default: defaultValue
|
|
805
|
+
};
|
|
806
|
+
}
|
|
807
|
+
|
|
808
|
+
// CRITICAL: If innerField is a Schema instance (from nested object), wrap it properly
|
|
809
|
+
// Do NOT destructure Schema instances as this spreads their internal properties
|
|
810
|
+
if (this.isSchemaLike(innerField)) {
|
|
811
|
+
return {
|
|
812
|
+
type: innerField,
|
|
813
|
+
default: defaultValue,
|
|
814
|
+
_id: false
|
|
815
|
+
};
|
|
816
|
+
}
|
|
817
|
+
|
|
818
|
+
const { required, ...fieldWithoutRequired } = innerField;
|
|
819
|
+
|
|
820
|
+
// Check if this is a nested object schema (has 'type' property with nested fields)
|
|
821
|
+
// CRITICAL: Do NOT spread if type is a Schema instance!
|
|
822
|
+
const isNestedObjectSchema = fieldWithoutRequired.type &&
|
|
823
|
+
typeof fieldWithoutRequired.type === 'object' &&
|
|
824
|
+
!Array.isArray(fieldWithoutRequired.type) &&
|
|
825
|
+
!this.isSchemaLike(fieldWithoutRequired.type) &&
|
|
826
|
+
Object.keys(fieldWithoutRequired.type).length > 0;
|
|
827
|
+
|
|
828
|
+
if (isNestedObjectSchema && defaultValue && typeof defaultValue === 'object') {
|
|
829
|
+
// For nested objects with defaults, preserve field type definitions
|
|
830
|
+
// and merge defaults into the appropriate fields
|
|
831
|
+
const nestedFields = { ...fieldWithoutRequired.type };
|
|
832
|
+
|
|
833
|
+
for (const [fieldName, defaultFieldValue] of Object.entries(defaultValue)) {
|
|
834
|
+
if (nestedFields[fieldName] && typeof nestedFields[fieldName] === 'object') {
|
|
835
|
+
// Preserve the existing field definition and add the default
|
|
836
|
+
nestedFields[fieldName] = {
|
|
837
|
+
...nestedFields[fieldName],
|
|
838
|
+
default: defaultFieldValue
|
|
839
|
+
};
|
|
840
|
+
}
|
|
841
|
+
}
|
|
842
|
+
|
|
843
|
+
return {
|
|
844
|
+
type: nestedFields,
|
|
845
|
+
default: defaultValue,
|
|
846
|
+
_id: false
|
|
847
|
+
};
|
|
848
|
+
}
|
|
849
|
+
|
|
850
|
+
// This check is no longer needed since arrays are handled before destructuring
|
|
851
|
+
|
|
852
|
+
// Ensure we have at least the type property for primitive fields
|
|
853
|
+
const result = Object.keys(fieldWithoutRequired).length === 0 && innerField.type
|
|
854
|
+
? { type: innerField.type }
|
|
855
|
+
: fieldWithoutRequired;
|
|
856
|
+
|
|
857
|
+
return {
|
|
858
|
+
...result,
|
|
859
|
+
default: defaultValue
|
|
860
|
+
};
|
|
861
|
+
}
|
|
862
|
+
|
|
863
|
+
// Handle pipe types (from .transform(), .pipe(), etc.) - extract the input schema
|
|
864
|
+
// In Zod v4, transforms create pipe types with 'in' and 'out' schemas
|
|
865
|
+
if (isZodPipe(zodField)) {
|
|
866
|
+
const inputSchema = getPipeInputSchema(zodField);
|
|
867
|
+
if (inputSchema) {
|
|
868
|
+
return this.convertZodFieldToMongooseField(
|
|
869
|
+
inputSchema,
|
|
870
|
+
processedSchemas,
|
|
871
|
+
schemaCache,
|
|
872
|
+
inheritanceSchemas,
|
|
873
|
+
indexesToApply,
|
|
874
|
+
uniqueIndexesToApply,
|
|
875
|
+
ttlIndexesToApply,
|
|
876
|
+
currentPath,
|
|
877
|
+
currentDepth,
|
|
878
|
+
maxDepth
|
|
879
|
+
);
|
|
880
|
+
}
|
|
881
|
+
}
|
|
882
|
+
|
|
883
|
+
// Handle transform types (standalone transform, no underlying schema)
|
|
884
|
+
// In Zod v4, transform types are standalone
|
|
885
|
+
if (isZodTransform(zodField)) {
|
|
886
|
+
// Transform types don't have an underlying schema, return Mixed
|
|
887
|
+
return { type: Schema.Types.Mixed };
|
|
888
|
+
}
|
|
889
|
+
|
|
890
|
+
// Handle custom types (from .refine(), .superRefine(), etc.)
|
|
891
|
+
// In Zod v4, custom types don't wrap schemas - refinements are stored as checks
|
|
892
|
+
// For custom types, we need to check if there's an underlying schema
|
|
893
|
+
// This is complex - for now, return Mixed
|
|
894
|
+
if (isZodCustom(zodField)) {
|
|
895
|
+
return { type: Schema.Types.Mixed };
|
|
896
|
+
}
|
|
897
|
+
|
|
898
|
+
// Handle arrays
|
|
899
|
+
// In Zod v4, array schemas have type: "array"
|
|
900
|
+
if (isZodArray(zodField)) {
|
|
901
|
+
const element = getZodDefSchemaProperty(zodField, 'element');
|
|
902
|
+
if (!element) {
|
|
903
|
+
return [{ type: Schema.Types.Mixed }];
|
|
904
|
+
}
|
|
905
|
+
|
|
906
|
+
const elementType = this.convertZodFieldToMongooseField(
|
|
907
|
+
element,
|
|
908
|
+
processedSchemas,
|
|
909
|
+
schemaCache,
|
|
910
|
+
inheritanceSchemas,
|
|
911
|
+
indexesToApply,
|
|
912
|
+
uniqueIndexesToApply,
|
|
913
|
+
ttlIndexesToApply,
|
|
914
|
+
`${currentPath}[]`,
|
|
915
|
+
currentDepth + 1,
|
|
916
|
+
maxDepth
|
|
917
|
+
);
|
|
918
|
+
|
|
919
|
+
// Check for array-level decorators before returning
|
|
920
|
+
let arrayDefinition: any = [elementType];
|
|
921
|
+
|
|
922
|
+
// Handle array-level resource reference (convert array elements to ObjectId)
|
|
923
|
+
if (isForeignKey(zodField)) {
|
|
924
|
+
arrayDefinition = [{
|
|
925
|
+
type: Schema.Types.ObjectId
|
|
926
|
+
}];
|
|
927
|
+
}
|
|
928
|
+
|
|
929
|
+
// Collect index information for decorated array fields
|
|
930
|
+
// Skip primary keys - they're already indexed via unique index or field-level index
|
|
931
|
+
if (isDBIndexed(zodField) && !isPrimaryKey(zodField) && currentPath) {
|
|
932
|
+
indexesToApply.push(currentPath);
|
|
933
|
+
}
|
|
934
|
+
|
|
935
|
+
// Collect unique index information for array fields
|
|
936
|
+
if (isUnique(zodField) && currentPath) {
|
|
937
|
+
const uniqueParams = getUniqueParams(zodField);
|
|
938
|
+
uniqueIndexesToApply.push({ path: currentPath, params: uniqueParams || {} });
|
|
939
|
+
}
|
|
940
|
+
|
|
941
|
+
// Collect TTL index information for array fields (rare, but possible for array of dates)
|
|
942
|
+
if (hasTtl(zodField) && currentPath) {
|
|
943
|
+
const ttlParams = getTtlParams(zodField);
|
|
944
|
+
if (ttlParams) {
|
|
945
|
+
ttlIndexesToApply.push({ path: currentPath, params: ttlParams });
|
|
946
|
+
}
|
|
947
|
+
}
|
|
948
|
+
|
|
949
|
+
return arrayDefinition;
|
|
950
|
+
}
|
|
951
|
+
|
|
952
|
+
// Handle tuples
|
|
953
|
+
// In Zod v4, tuple schemas have type: "tuple"
|
|
954
|
+
if (isZodTuple(zodField)) {
|
|
955
|
+
return [{ type: Schema.Types.Mixed }];
|
|
956
|
+
}
|
|
957
|
+
|
|
958
|
+
// Handle nested objects
|
|
959
|
+
// In Zod v4, object schemas have type: "object"
|
|
960
|
+
if (isZodObject(zodField)) {
|
|
961
|
+
const nestedDefinition = this.convertZodTypeToMongooseDefinition(
|
|
962
|
+
zodField,
|
|
963
|
+
processedSchemas,
|
|
964
|
+
schemaCache,
|
|
965
|
+
inheritanceSchemas,
|
|
966
|
+
indexesToApply,
|
|
967
|
+
uniqueIndexesToApply,
|
|
968
|
+
ttlIndexesToApply,
|
|
969
|
+
currentPath,
|
|
970
|
+
currentDepth,
|
|
971
|
+
maxDepth
|
|
972
|
+
);
|
|
973
|
+
|
|
974
|
+
// If nestedDefinition is a Schema instance (from cache or new), return it directly as type
|
|
975
|
+
if (nestedDefinition instanceof Schema) {
|
|
976
|
+
return {
|
|
977
|
+
type: nestedDefinition,
|
|
978
|
+
_id: false
|
|
979
|
+
};
|
|
980
|
+
}
|
|
981
|
+
|
|
982
|
+
// Otherwise wrap the definition
|
|
983
|
+
return {
|
|
984
|
+
type: nestedDefinition,
|
|
985
|
+
_id: false // Disable automatic _id for subdocuments unless explicitly defined
|
|
986
|
+
};
|
|
987
|
+
}
|
|
988
|
+
|
|
989
|
+
// Handle discriminated unions
|
|
990
|
+
// Mongoose discriminators only work on top-level models, NOT on embedded sub-documents.
|
|
991
|
+
// At depth 0 we collect schema info for later discriminator model creation.
|
|
992
|
+
// At depth > 0 we flatten into a superset schema (all fields from all options,
|
|
993
|
+
// non-discriminator fields optional) so field types and indexes are preserved.
|
|
994
|
+
if (isDiscriminatedUnion(zodField)) {
|
|
995
|
+
if (currentDepth === 0) {
|
|
996
|
+
return this.handleDiscriminatedUnionField(
|
|
997
|
+
zodField,
|
|
998
|
+
processedSchemas,
|
|
999
|
+
schemaCache,
|
|
1000
|
+
inheritanceSchemas,
|
|
1001
|
+
indexesToApply,
|
|
1002
|
+
uniqueIndexesToApply,
|
|
1003
|
+
ttlIndexesToApply,
|
|
1004
|
+
currentPath,
|
|
1005
|
+
currentDepth,
|
|
1006
|
+
maxDepth
|
|
1007
|
+
);
|
|
1008
|
+
}
|
|
1009
|
+
return this.flattenDiscriminatedUnionForSubdocument(
|
|
1010
|
+
zodField,
|
|
1011
|
+
processedSchemas,
|
|
1012
|
+
schemaCache,
|
|
1013
|
+
inheritanceSchemas,
|
|
1014
|
+
indexesToApply,
|
|
1015
|
+
uniqueIndexesToApply,
|
|
1016
|
+
ttlIndexesToApply,
|
|
1017
|
+
currentPath,
|
|
1018
|
+
currentDepth,
|
|
1019
|
+
maxDepth
|
|
1020
|
+
);
|
|
1021
|
+
}
|
|
1022
|
+
|
|
1023
|
+
// Handle regular unions - analyze for smart type detection
|
|
1024
|
+
// In Zod v4, union schemas have type: "union"
|
|
1025
|
+
if (isZodUnion(zodField)) {
|
|
1026
|
+
return this.handleZodUnion(zodField);
|
|
1027
|
+
}
|
|
1028
|
+
|
|
1029
|
+
// Handle intersections - merge the types
|
|
1030
|
+
// In Zod v4, intersection schemas have type: "intersection"
|
|
1031
|
+
if (isZodIntersection(zodField)) {
|
|
1032
|
+
const left = getZodDefSchemaProperty(zodField, 'left');
|
|
1033
|
+
const right = getZodDefSchemaProperty(zodField, 'right');
|
|
1034
|
+
|
|
1035
|
+
if (!left || !right) {
|
|
1036
|
+
return { type: Schema.Types.Mixed };
|
|
1037
|
+
}
|
|
1038
|
+
|
|
1039
|
+
const leftDef = this.convertZodFieldToMongooseField(
|
|
1040
|
+
left,
|
|
1041
|
+
processedSchemas,
|
|
1042
|
+
schemaCache,
|
|
1043
|
+
inheritanceSchemas,
|
|
1044
|
+
indexesToApply,
|
|
1045
|
+
uniqueIndexesToApply,
|
|
1046
|
+
ttlIndexesToApply,
|
|
1047
|
+
currentPath,
|
|
1048
|
+
currentDepth,
|
|
1049
|
+
maxDepth
|
|
1050
|
+
);
|
|
1051
|
+
const rightDef = this.convertZodFieldToMongooseField(
|
|
1052
|
+
right,
|
|
1053
|
+
processedSchemas,
|
|
1054
|
+
schemaCache,
|
|
1055
|
+
inheritanceSchemas,
|
|
1056
|
+
indexesToApply,
|
|
1057
|
+
uniqueIndexesToApply,
|
|
1058
|
+
ttlIndexesToApply,
|
|
1059
|
+
currentPath,
|
|
1060
|
+
currentDepth,
|
|
1061
|
+
maxDepth
|
|
1062
|
+
);
|
|
1063
|
+
|
|
1064
|
+
// Merge object definitions
|
|
1065
|
+
if (this.isObjectDefinition(leftDef) && this.isObjectDefinition(rightDef)) {
|
|
1066
|
+
return { ...leftDef, ...rightDef };
|
|
1067
|
+
}
|
|
1068
|
+
return { type: Schema.Types.Mixed };
|
|
1069
|
+
}
|
|
1070
|
+
|
|
1071
|
+
// Handle literals
|
|
1072
|
+
// In Zod v4, literal schemas have type: "literal"
|
|
1073
|
+
if (isZodLiteral(zodField)) {
|
|
1074
|
+
const literalValue = getZodDefProperty(zodField, 'value');
|
|
1075
|
+
return {
|
|
1076
|
+
type: typeof literalValue === 'string' ? String :
|
|
1077
|
+
typeof literalValue === 'number' ? Number :
|
|
1078
|
+
typeof literalValue === 'boolean' ? Boolean : Schema.Types.Mixed,
|
|
1079
|
+
enum: [literalValue]
|
|
1080
|
+
};
|
|
1081
|
+
}
|
|
1082
|
+
|
|
1083
|
+
// Handle lazy types (recursive schemas)
|
|
1084
|
+
// In Zod v4, lazy schemas have type: "lazy"
|
|
1085
|
+
if (isZodLazy(zodField)) {
|
|
1086
|
+
const getter = getZodDefFunctionProperty(zodField, 'getter');
|
|
1087
|
+
if (!getter) {
|
|
1088
|
+
return { type: Schema.Types.Mixed };
|
|
1089
|
+
}
|
|
1090
|
+
const innerSchema = getter();
|
|
1091
|
+
return this.convertZodFieldToMongooseField(
|
|
1092
|
+
innerSchema,
|
|
1093
|
+
processedSchemas,
|
|
1094
|
+
schemaCache,
|
|
1095
|
+
inheritanceSchemas,
|
|
1096
|
+
indexesToApply,
|
|
1097
|
+
uniqueIndexesToApply,
|
|
1098
|
+
ttlIndexesToApply,
|
|
1099
|
+
currentPath,
|
|
1100
|
+
currentDepth,
|
|
1101
|
+
maxDepth
|
|
1102
|
+
);
|
|
1103
|
+
}
|
|
1104
|
+
|
|
1105
|
+
// Handle basic types with decorators - unwrap to get the core type
|
|
1106
|
+
const coreType = this.unwrapDecoratedType(zodField);
|
|
1107
|
+
const baseDefinition = this.getBaseMongooseType(coreType, schemaCache);
|
|
1108
|
+
|
|
1109
|
+
// Apply resource reference (ObjectId)
|
|
1110
|
+
if (isForeignKey(zodField)) {
|
|
1111
|
+
const definition: any = {
|
|
1112
|
+
type: Schema.Types.ObjectId
|
|
1113
|
+
};
|
|
1114
|
+
|
|
1115
|
+
// Only add required property if the field is actually required
|
|
1116
|
+
if (this.isFieldRequired(zodField)) {
|
|
1117
|
+
definition.required = true;
|
|
1118
|
+
}
|
|
1119
|
+
|
|
1120
|
+
// Collect index information instead of applying immediately
|
|
1121
|
+
// Skip primary keys - they're already indexed via unique index or field-level index
|
|
1122
|
+
if (isDBIndexed(zodField) && !isPrimaryKey(zodField) && currentPath) {
|
|
1123
|
+
indexesToApply.push(currentPath);
|
|
1124
|
+
}
|
|
1125
|
+
|
|
1126
|
+
// Collect unique index information
|
|
1127
|
+
if (isUnique(zodField) && currentPath) {
|
|
1128
|
+
const uniqueParams = getUniqueParams(zodField);
|
|
1129
|
+
uniqueIndexesToApply.push({ path: currentPath, params: uniqueParams || {} });
|
|
1130
|
+
}
|
|
1131
|
+
|
|
1132
|
+
return definition;
|
|
1133
|
+
}
|
|
1134
|
+
|
|
1135
|
+
// Collect TTL index information for Date fields
|
|
1136
|
+
// TTL indexes enable automatic document expiration in MongoDB
|
|
1137
|
+
if (hasTtl(zodField) && currentPath) {
|
|
1138
|
+
const ttlParams = getTtlParams(zodField);
|
|
1139
|
+
if (ttlParams) {
|
|
1140
|
+
ttlIndexesToApply.push({ path: currentPath, params: ttlParams });
|
|
1141
|
+
}
|
|
1142
|
+
}
|
|
1143
|
+
|
|
1144
|
+
// Collect index information for decorated fields
|
|
1145
|
+
// Skip primary keys - they're already indexed via unique index or field-level index
|
|
1146
|
+
if (isDBIndexed(zodField) && !isPrimaryKey(zodField) && currentPath) {
|
|
1147
|
+
indexesToApply.push(currentPath);
|
|
1148
|
+
}
|
|
1149
|
+
|
|
1150
|
+
// Collect unique index information for decorated fields
|
|
1151
|
+
if (isUnique(zodField) && currentPath) {
|
|
1152
|
+
const uniqueParams = getUniqueParams(zodField);
|
|
1153
|
+
uniqueIndexesToApply.push({ path: currentPath, params: uniqueParams || {} });
|
|
1154
|
+
}
|
|
1155
|
+
|
|
1156
|
+
// Only add required property if the field is actually required
|
|
1157
|
+
if (this.isFieldRequired(zodField)) {
|
|
1158
|
+
const definition = baseDefinition || { type: Schema.Types.Mixed };
|
|
1159
|
+
return {
|
|
1160
|
+
...definition,
|
|
1161
|
+
required: true
|
|
1162
|
+
};
|
|
1163
|
+
}
|
|
1164
|
+
|
|
1165
|
+
return baseDefinition || { type: Schema.Types.Mixed };
|
|
1166
|
+
}
|
|
1167
|
+
|
|
1168
|
+
// =================================================================
|
|
1169
|
+
// TYPE HANDLING METHODS
|
|
1170
|
+
// =================================================================
|
|
1171
|
+
|
|
1172
|
+
/**
|
|
1173
|
+
* Flattens a discriminated union into a superset schema for embedded sub-documents.
|
|
1174
|
+
*
|
|
1175
|
+
* WHY: Mongoose discriminators only work on top-level models (root collections),
|
|
1176
|
+
* NOT on embedded sub-documents or array elements. Attempting to use discriminator
|
|
1177
|
+
* APIs on sub-schemas causes "Invalid schema configuration" errors ($id leak,
|
|
1178
|
+
* initializeTimestamps, etc.).
|
|
1179
|
+
*
|
|
1180
|
+
* CONSEQUENCES OF THIS APPROACH:
|
|
1181
|
+
* - All fields from ALL union options are merged into one flat schema.
|
|
1182
|
+
* - The discriminator key stays required; all other fields become optional
|
|
1183
|
+
* at the Mongoose layer (since each variant uses a different subset).
|
|
1184
|
+
* - Per-variant required constraints are NOT enforced by Mongoose — Zod handles
|
|
1185
|
+
* validation at the application layer before data reaches MongoDB.
|
|
1186
|
+
* - Field types and indexes ARE preserved (unlike Schema.Types.Mixed).
|
|
1187
|
+
* - First-seen-wins: if two options define the same field with different types,
|
|
1188
|
+
* only the first option's type is used.
|
|
1189
|
+
*
|
|
1190
|
+
* PREFERRED SOLUTION: When possible, define discriminated unions at the root
|
|
1191
|
+
* resource schema level (depth 0) where Mongoose discriminators work natively.
|
|
1192
|
+
* Use sub-document discriminated unions only when the domain model requires it,
|
|
1193
|
+
* accepting the trade-offs above.
|
|
1194
|
+
*/
|
|
1195
|
+
private flattenDiscriminatedUnionForSubdocument(
|
|
1196
|
+
zodField: z.ZodTypeAny,
|
|
1197
|
+
processedSchemas: WeakSet<z.ZodTypeAny>,
|
|
1198
|
+
schemaCache: WeakMap<z.ZodTypeAny, Schema>,
|
|
1199
|
+
inheritanceSchemas: UnionInheritance_SchemaInfo[],
|
|
1200
|
+
indexesToApply: string[],
|
|
1201
|
+
uniqueIndexesToApply: UniqueIndexInfo[],
|
|
1202
|
+
ttlIndexesToApply: TtlIndexInfo[],
|
|
1203
|
+
currentPath: string,
|
|
1204
|
+
currentDepth: number,
|
|
1205
|
+
maxDepth: number
|
|
1206
|
+
): any {
|
|
1207
|
+
const discriminatorKey = getZodDefStringProperty(zodField, 'discriminator');
|
|
1208
|
+
const optionsArray = getZodDefArrayProperty(zodField, 'options');
|
|
1209
|
+
|
|
1210
|
+
if (!discriminatorKey || !optionsArray || optionsArray.length === 0) {
|
|
1211
|
+
return { type: Schema.Types.Mixed };
|
|
1212
|
+
}
|
|
1213
|
+
|
|
1214
|
+
const options = optionsArray.filter(isZodTypeAny);
|
|
1215
|
+
if (options.length === 0) {
|
|
1216
|
+
return { type: Schema.Types.Mixed };
|
|
1217
|
+
}
|
|
1218
|
+
|
|
1219
|
+
this.logger.warn(
|
|
1220
|
+
`[ZodToMongoose] Discriminated union at path='${currentPath}' (depth=${currentDepth}) is inside a sub-document. ` +
|
|
1221
|
+
`Mongoose discriminators only work on root-level models. Flattening ${options.length} variants into a superset schema ` +
|
|
1222
|
+
`(discriminator='${discriminatorKey}'). Consequences: non-discriminator fields are optional at Mongoose level, ` +
|
|
1223
|
+
`per-variant required constraints rely on Zod validation. Preferred solution: move discriminated unions to root schema level.`
|
|
1224
|
+
);
|
|
1225
|
+
|
|
1226
|
+
const mergedDefinition: Record<string, any> = {};
|
|
1227
|
+
|
|
1228
|
+
for (const option of options) {
|
|
1229
|
+
if (!isZodObject(option)) continue;
|
|
1230
|
+
|
|
1231
|
+
const optionShape = getZodObjectShape(option);
|
|
1232
|
+
for (const [fieldName, fieldSchema] of Object.entries(optionShape)) {
|
|
1233
|
+
const existing = mergedDefinition[fieldName];
|
|
1234
|
+
if (existing) {
|
|
1235
|
+
// Field already seen from a previous variant. Union enum values if both
|
|
1236
|
+
// definitions carry an enum array (e.g. variant field with different enums
|
|
1237
|
+
// per option). Otherwise keep the first definition (same base type).
|
|
1238
|
+
if (Array.isArray(existing.enum) && fieldName !== discriminatorKey) {
|
|
1239
|
+
const fieldPath = currentPath ? `${currentPath}.${fieldName}` : fieldName;
|
|
1240
|
+
const fieldDef = this.convertZodFieldToMongooseField(
|
|
1241
|
+
fieldSchema as z.ZodTypeAny,
|
|
1242
|
+
processedSchemas, schemaCache, inheritanceSchemas,
|
|
1243
|
+
indexesToApply, uniqueIndexesToApply, ttlIndexesToApply,
|
|
1244
|
+
fieldPath, currentDepth + 1, maxDepth
|
|
1245
|
+
);
|
|
1246
|
+
if (fieldDef && Array.isArray(fieldDef.enum)) {
|
|
1247
|
+
existing.enum = [...new Set([...existing.enum, ...fieldDef.enum])];
|
|
1248
|
+
}
|
|
1249
|
+
}
|
|
1250
|
+
continue;
|
|
1251
|
+
}
|
|
1252
|
+
|
|
1253
|
+
const fieldPath = currentPath ? `${currentPath}.${fieldName}` : fieldName;
|
|
1254
|
+
const fieldDef = this.convertZodFieldToMongooseField(
|
|
1255
|
+
fieldSchema as z.ZodTypeAny,
|
|
1256
|
+
processedSchemas,
|
|
1257
|
+
schemaCache,
|
|
1258
|
+
inheritanceSchemas,
|
|
1259
|
+
indexesToApply,
|
|
1260
|
+
uniqueIndexesToApply,
|
|
1261
|
+
ttlIndexesToApply,
|
|
1262
|
+
fieldPath,
|
|
1263
|
+
currentDepth + 1,
|
|
1264
|
+
maxDepth
|
|
1265
|
+
);
|
|
1266
|
+
|
|
1267
|
+
if (fieldName === discriminatorKey) {
|
|
1268
|
+
mergedDefinition[fieldName] = fieldDef;
|
|
1269
|
+
} else if (typeof fieldDef === 'object' && fieldDef !== null && !Array.isArray(fieldDef) && !(fieldDef instanceof Schema)) {
|
|
1270
|
+
mergedDefinition[fieldName] = { ...fieldDef, required: false };
|
|
1271
|
+
} else {
|
|
1272
|
+
mergedDefinition[fieldName] = fieldDef;
|
|
1273
|
+
}
|
|
1274
|
+
}
|
|
1275
|
+
}
|
|
1276
|
+
|
|
1277
|
+
const nestedSchema = new Schema(mergedDefinition, SCHEMA_SUBDOCUMENT_OPTIONS);
|
|
1278
|
+
this.applyStandardTransforms(nestedSchema);
|
|
1279
|
+
return nestedSchema;
|
|
1280
|
+
}
|
|
1281
|
+
|
|
1282
|
+
/**
|
|
1283
|
+
* Handles discriminated union fields by collecting schema information
|
|
1284
|
+
* @param zodField The discriminated union field
|
|
1285
|
+
* @param processedSchemas Set to track circular references
|
|
1286
|
+
* @param inheritanceSchemas Array to collect union inheritance schemas
|
|
1287
|
+
* @param indexesToApply Array to collect index paths
|
|
1288
|
+
* @param currentPath Current field path
|
|
1289
|
+
* @param currentDepth Current recursion depth
|
|
1290
|
+
* @param maxDepth Maximum allowed recursion depth
|
|
1291
|
+
* @returns Base schema definition for the discriminated union
|
|
1292
|
+
*/
|
|
1293
|
+
private handleDiscriminatedUnionField(
|
|
1294
|
+
zodField: z.ZodTypeAny,
|
|
1295
|
+
processedSchemas: WeakSet<z.ZodTypeAny>,
|
|
1296
|
+
schemaCache: WeakMap<z.ZodTypeAny, Schema>,
|
|
1297
|
+
inheritanceSchemas: UnionInheritance_SchemaInfo[],
|
|
1298
|
+
indexesToApply: string[],
|
|
1299
|
+
uniqueIndexesToApply: UniqueIndexInfo[],
|
|
1300
|
+
ttlIndexesToApply: TtlIndexInfo[],
|
|
1301
|
+
currentPath: string,
|
|
1302
|
+
currentDepth: number,
|
|
1303
|
+
maxDepth: number
|
|
1304
|
+
): any {
|
|
1305
|
+
|
|
1306
|
+
const discriminatorKey = getZodDefStringProperty(zodField, 'discriminator');
|
|
1307
|
+
const optionsArray = getZodDefArrayProperty(zodField, 'options');
|
|
1308
|
+
|
|
1309
|
+
if (!discriminatorKey || !optionsArray || optionsArray.length === 0) {
|
|
1310
|
+
return { type: Schema.Types.Mixed };
|
|
1311
|
+
}
|
|
1312
|
+
|
|
1313
|
+
// Filter and validate options are ZodTypeAny
|
|
1314
|
+
const options = optionsArray.filter(isZodTypeAny);
|
|
1315
|
+
if (options.length === 0) {
|
|
1316
|
+
return { type: Schema.Types.Mixed };
|
|
1317
|
+
}
|
|
1318
|
+
|
|
1319
|
+
// Use the first option as the union root schema structure
|
|
1320
|
+
const rootOption = options[0];
|
|
1321
|
+
const rootDefinition = this.convertZodTypeToMongooseDefinition(
|
|
1322
|
+
rootOption,
|
|
1323
|
+
processedSchemas,
|
|
1324
|
+
schemaCache,
|
|
1325
|
+
inheritanceSchemas,
|
|
1326
|
+
indexesToApply,
|
|
1327
|
+
uniqueIndexesToApply,
|
|
1328
|
+
ttlIndexesToApply,
|
|
1329
|
+
currentPath,
|
|
1330
|
+
currentDepth,
|
|
1331
|
+
maxDepth
|
|
1332
|
+
);
|
|
1333
|
+
|
|
1334
|
+
// Collect union inheritance schemas for later model creation (but don't create models here)
|
|
1335
|
+
for (let optionIndex = 0; optionIndex < options.length; optionIndex++) {
|
|
1336
|
+
const option = options[optionIndex];
|
|
1337
|
+
try {
|
|
1338
|
+
const optionDefinition = this.convertZodTypeToMongooseDefinition(
|
|
1339
|
+
option,
|
|
1340
|
+
processedSchemas,
|
|
1341
|
+
schemaCache,
|
|
1342
|
+
inheritanceSchemas,
|
|
1343
|
+
indexesToApply,
|
|
1344
|
+
uniqueIndexesToApply,
|
|
1345
|
+
ttlIndexesToApply,
|
|
1346
|
+
currentPath,
|
|
1347
|
+
currentDepth,
|
|
1348
|
+
maxDepth
|
|
1349
|
+
);
|
|
1350
|
+
|
|
1351
|
+
// Create Mongoose schema for this union inheritance option
|
|
1352
|
+
const inheritanceOptionSchema = new Schema(optionDefinition, SCHEMA_SUBDOCUMENT_OPTIONS);
|
|
1353
|
+
this.applyStandardTransforms(inheritanceOptionSchema);
|
|
1354
|
+
|
|
1355
|
+
// Extract discriminator value from the option's shape
|
|
1356
|
+
// In Zod v4, use public .shape property and get literal value from def
|
|
1357
|
+
// Unwrap the discriminator field to handle optional/nullable/default wrappers
|
|
1358
|
+
let discriminatorValue: string | null = null;
|
|
1359
|
+
if (discriminatorKey && isZodObject(option)) {
|
|
1360
|
+
const optionShape = getZodObjectShape(option);
|
|
1361
|
+
const discriminatorField = optionShape[discriminatorKey];
|
|
1362
|
+
if (discriminatorField) {
|
|
1363
|
+
// Unwrap the field to get the actual literal/enum value
|
|
1364
|
+
const unwrappedField = unwrapSchema(discriminatorField);
|
|
1365
|
+
if (isZodLiteral(unwrappedField)) {
|
|
1366
|
+
const literalValue = getZodDefProperty(unwrappedField, 'value');
|
|
1367
|
+
if (literalValue !== undefined && literalValue !== null) {
|
|
1368
|
+
discriminatorValue = String(literalValue);
|
|
1369
|
+
}
|
|
1370
|
+
} else {
|
|
1371
|
+
// Try to get value from enum if it's an enum field
|
|
1372
|
+
const enumValues = getEnumValues(unwrappedField);
|
|
1373
|
+
if (enumValues.length > 0) {
|
|
1374
|
+
discriminatorValue = String(enumValues[0]);
|
|
1375
|
+
}
|
|
1376
|
+
}
|
|
1377
|
+
}
|
|
1378
|
+
|
|
1379
|
+
// Fallback: If shape approach failed, try to extract from schema definition directly
|
|
1380
|
+
// This handles cases where extended schemas might not expose shape correctly
|
|
1381
|
+
if (!discriminatorValue && discriminatorField) {
|
|
1382
|
+
const def = getZodDef(discriminatorField);
|
|
1383
|
+
if (def && def.type === 'literal' && def.value !== undefined) {
|
|
1384
|
+
discriminatorValue = String(def.value);
|
|
1385
|
+
}
|
|
1386
|
+
}
|
|
1387
|
+
}
|
|
1388
|
+
|
|
1389
|
+
// If we couldn't extract a discriminator value, use index-based fallback to ensure uniqueness
|
|
1390
|
+
// This prevents "Discriminator with name 'unknown' already exists" errors
|
|
1391
|
+
if (!discriminatorValue || discriminatorValue === 'unknown') {
|
|
1392
|
+
discriminatorValue = `option_${optionIndex}`;
|
|
1393
|
+
this.logDebug(`Could not extract discriminator value for union option ${optionIndex}, using fallback: ${discriminatorValue}`, {
|
|
1394
|
+
discriminatorKey,
|
|
1395
|
+
optionIndex
|
|
1396
|
+
});
|
|
1397
|
+
}
|
|
1398
|
+
|
|
1399
|
+
// Store schema information for later inheritance model creation
|
|
1400
|
+
inheritanceSchemas.push({
|
|
1401
|
+
discriminatorKey,
|
|
1402
|
+
discriminatorValue: String(discriminatorValue),
|
|
1403
|
+
schema: inheritanceOptionSchema,
|
|
1404
|
+
zodSchema: option
|
|
1405
|
+
});
|
|
1406
|
+
} catch (error) {
|
|
1407
|
+
this.logger.warn(`Failed to process union inheritance option: ${error instanceof Error ? error.message : String(error)}`);
|
|
1408
|
+
}
|
|
1409
|
+
}
|
|
1410
|
+
|
|
1411
|
+
// Return the union root definition with discriminator key
|
|
1412
|
+
return {
|
|
1413
|
+
...rootDefinition,
|
|
1414
|
+
discriminatorKey
|
|
1415
|
+
};
|
|
1416
|
+
}
|
|
1417
|
+
|
|
1418
|
+
/**
|
|
1419
|
+
* Unwraps decorated Zod types to get the core type for instanceof checks
|
|
1420
|
+
* @param zodField The potentially decorated Zod field
|
|
1421
|
+
* @returns The core Zod type without decoration wrappers
|
|
1422
|
+
*/
|
|
1423
|
+
private unwrapDecoratedType(zodField: z.ZodTypeAny): z.ZodTypeAny {
|
|
1424
|
+
// Use the centralized unwrapSchema function from zod-decorators
|
|
1425
|
+
return unwrapSchema(zodField);
|
|
1426
|
+
}
|
|
1427
|
+
|
|
1428
|
+
/**
|
|
1429
|
+
* Handles ZodUnion types intelligently
|
|
1430
|
+
* @param zodUnion The Zod union to analyze
|
|
1431
|
+
* @returns Appropriate Mongoose type definition
|
|
1432
|
+
*/
|
|
1433
|
+
private handleZodUnion(zodUnion: z.ZodTypeAny): any {
|
|
1434
|
+
const options = getZodDefArrayProperty(zodUnion, 'options');
|
|
1435
|
+
if (!options) {
|
|
1436
|
+
return { type: Schema.Types.Mixed };
|
|
1437
|
+
}
|
|
1438
|
+
|
|
1439
|
+
// Collect all enum values and check if all options are string-like
|
|
1440
|
+
const enumValues: string[] = [];
|
|
1441
|
+
let allStringLike = true;
|
|
1442
|
+
|
|
1443
|
+
for (const option of options) {
|
|
1444
|
+
if (!isZodTypeAny(option)) continue;
|
|
1445
|
+
|
|
1446
|
+
const optionType = getZodType(option);
|
|
1447
|
+
|
|
1448
|
+
// Handle enum (check for entries in Zod v4, or enum property for native enums)
|
|
1449
|
+
if (optionType === 'enum') {
|
|
1450
|
+
// Use centralized getEnumValues function
|
|
1451
|
+
const optionEnumValues = getEnumValues(option);
|
|
1452
|
+
enumValues.push(...optionEnumValues);
|
|
1453
|
+
continue;
|
|
1454
|
+
}
|
|
1455
|
+
|
|
1456
|
+
// Handle ZodString (allows any string)
|
|
1457
|
+
if (optionType === 'string') {
|
|
1458
|
+
// String type allows any string value, so we just continue
|
|
1459
|
+
continue;
|
|
1460
|
+
}
|
|
1461
|
+
|
|
1462
|
+
// If we encounter a non-string type, fall back to Mixed
|
|
1463
|
+
allStringLike = false;
|
|
1464
|
+
break;
|
|
1465
|
+
}
|
|
1466
|
+
|
|
1467
|
+
// If all options are string-like (enum + string), return String with enum validation
|
|
1468
|
+
if (allStringLike) {
|
|
1469
|
+
if (enumValues.length > 0) {
|
|
1470
|
+
return {
|
|
1471
|
+
type: String,
|
|
1472
|
+
enum: [...new Set(enumValues)] // Remove duplicates
|
|
1473
|
+
};
|
|
1474
|
+
} else {
|
|
1475
|
+
return { type: String };
|
|
1476
|
+
}
|
|
1477
|
+
}
|
|
1478
|
+
|
|
1479
|
+
// Fall back to Mixed for complex unions
|
|
1480
|
+
return { type: Schema.Types.Mixed };
|
|
1481
|
+
}
|
|
1482
|
+
|
|
1483
|
+
/**
|
|
1484
|
+
* Gets the base Mongoose type for a Zod field
|
|
1485
|
+
* @param zodField The Zod field to get the type for
|
|
1486
|
+
* @param schemaCache Cache of created schemas for recursive types
|
|
1487
|
+
* @returns The base Mongoose type definition
|
|
1488
|
+
*/
|
|
1489
|
+
private getBaseMongooseType(zodField: z.ZodTypeAny, schemaCache?: WeakMap<z.ZodTypeAny, Schema>): any {
|
|
1490
|
+
const zodType = getZodType(zodField);
|
|
1491
|
+
|
|
1492
|
+
// Handle string types
|
|
1493
|
+
// In Zod v4, string schemas have type: "string"
|
|
1494
|
+
if (zodType === 'string') {
|
|
1495
|
+
const definition: any = { type: String };
|
|
1496
|
+
|
|
1497
|
+
// Add string-specific validations
|
|
1498
|
+
// In Zod v4, checks are stored in def.checks array
|
|
1499
|
+
const checks = getZodDefArrayProperty(zodField, 'checks');
|
|
1500
|
+
if (checks) {
|
|
1501
|
+
|
|
1502
|
+
for (const check of checks) {
|
|
1503
|
+
if (typeof check === 'object' && check !== null) {
|
|
1504
|
+
const checkKind = (check as Record<string, unknown>).kind;
|
|
1505
|
+
const checkValue = (check as Record<string, unknown>).value;
|
|
1506
|
+
|
|
1507
|
+
if (checkKind === 'min' && typeof checkValue === 'number') {
|
|
1508
|
+
definition.minlength = checkValue;
|
|
1509
|
+
} else if (checkKind === 'max' && typeof checkValue === 'number') {
|
|
1510
|
+
definition.maxlength = checkValue;
|
|
1511
|
+
} else if (checkKind === 'regex' && checkValue instanceof RegExp) {
|
|
1512
|
+
definition.match = checkValue;
|
|
1513
|
+
}
|
|
1514
|
+
}
|
|
1515
|
+
}
|
|
1516
|
+
}
|
|
1517
|
+
|
|
1518
|
+
return definition;
|
|
1519
|
+
}
|
|
1520
|
+
|
|
1521
|
+
// Handle number types
|
|
1522
|
+
// In Zod v4, number schemas have type: "number" or "int"
|
|
1523
|
+
if (zodType === 'number' || zodType === 'int') {
|
|
1524
|
+
const definition: any = { type: Number };
|
|
1525
|
+
|
|
1526
|
+
const checks = getZodDefArrayProperty(zodField, 'checks');
|
|
1527
|
+
if (checks) {
|
|
1528
|
+
|
|
1529
|
+
for (const check of checks) {
|
|
1530
|
+
if (typeof check === 'object' && check !== null) {
|
|
1531
|
+
const checkKind = (check as Record<string, unknown>).kind;
|
|
1532
|
+
const checkValue = (check as Record<string, unknown>).value;
|
|
1533
|
+
|
|
1534
|
+
if (checkKind === 'min' && typeof checkValue === 'number') {
|
|
1535
|
+
definition.min = checkValue;
|
|
1536
|
+
} else if (checkKind === 'max' && typeof checkValue === 'number') {
|
|
1537
|
+
definition.max = checkValue;
|
|
1538
|
+
}
|
|
1539
|
+
}
|
|
1540
|
+
}
|
|
1541
|
+
}
|
|
1542
|
+
|
|
1543
|
+
return definition;
|
|
1544
|
+
}
|
|
1545
|
+
|
|
1546
|
+
// Handle bigint types
|
|
1547
|
+
// In Zod v4, bigint schemas have type: "bigint"
|
|
1548
|
+
// Mongoose 6+ supports BigInt natively, which stores as BSON Long (64-bit)
|
|
1549
|
+
// For arbitrarily large bigints, we store as String for maximum precision
|
|
1550
|
+
if (zodType === 'bigint') {
|
|
1551
|
+
// Use String type for storage to preserve full precision of arbitrarily large bigints
|
|
1552
|
+
// The application layer handles conversion to/from BigInt
|
|
1553
|
+
return {
|
|
1554
|
+
type: String,
|
|
1555
|
+
get: (v: string | null | undefined) => v ? BigInt(v) : v,
|
|
1556
|
+
set: (v: bigint | string | null | undefined) => v !== null && v !== undefined ? String(v) : v
|
|
1557
|
+
};
|
|
1558
|
+
}
|
|
1559
|
+
|
|
1560
|
+
// Handle boolean types
|
|
1561
|
+
// In Zod v4, boolean schemas have type: "boolean"
|
|
1562
|
+
if (zodType === 'boolean') {
|
|
1563
|
+
return { type: Boolean };
|
|
1564
|
+
}
|
|
1565
|
+
|
|
1566
|
+
// Handle date types
|
|
1567
|
+
// In Zod v4, date schemas have type: "date"
|
|
1568
|
+
if (zodType === 'date') {
|
|
1569
|
+
return { type: Date };
|
|
1570
|
+
}
|
|
1571
|
+
|
|
1572
|
+
// Handle enum types
|
|
1573
|
+
// In Zod v4, enum schemas have type: "enum" and values are in def.entries
|
|
1574
|
+
if (zodType === 'enum') {
|
|
1575
|
+
// Use centralized getEnumValues function
|
|
1576
|
+
const enumValues = getEnumValues(zodField);
|
|
1577
|
+
|
|
1578
|
+
return {
|
|
1579
|
+
type: String,
|
|
1580
|
+
enum: enumValues
|
|
1581
|
+
};
|
|
1582
|
+
}
|
|
1583
|
+
|
|
1584
|
+
// NOTE: In Zod v4, .brand() no longer creates a wrapper type.
|
|
1585
|
+
// Branded schemas report their underlying type (e.g., 'string') directly.
|
|
1586
|
+
// The branding is purely a TypeScript compile-time feature.
|
|
1587
|
+
// No special handling is needed for branded types in Zod v4.
|
|
1588
|
+
|
|
1589
|
+
// Handle record types - z.record() represents plain objects with dynamic keys
|
|
1590
|
+
// In Zod v4, record schemas have type: "record"
|
|
1591
|
+
if (isZodRecord(zodField)) {
|
|
1592
|
+
// Default to Mixed for non-recursive records
|
|
1593
|
+
// Only use Map if we detect a recursive schema that requires it
|
|
1594
|
+
const valueType = getZodDefSchemaProperty(zodField, 'valueType');
|
|
1595
|
+
let mapValueType: any = null;
|
|
1596
|
+
|
|
1597
|
+
if (valueType && isZodLazy(valueType)) {
|
|
1598
|
+
// For recursive records (like properties: z.record(z.lazy(...))), we MUST use Map with the schema
|
|
1599
|
+
// otherwise we lose the recursive structure.
|
|
1600
|
+
|
|
1601
|
+
// Try to resolve lazy type from cache if available
|
|
1602
|
+
if (schemaCache) {
|
|
1603
|
+
const getter = getZodDefFunctionProperty(valueType, 'getter');
|
|
1604
|
+
if (getter) {
|
|
1605
|
+
const inner = getter();
|
|
1606
|
+
if (schemaCache.has(inner)) {
|
|
1607
|
+
mapValueType = schemaCache.get(inner);
|
|
1608
|
+
}
|
|
1609
|
+
}
|
|
1610
|
+
}
|
|
1611
|
+
}
|
|
1612
|
+
|
|
1613
|
+
// If we found a recursive schema, return Map
|
|
1614
|
+
if (mapValueType) {
|
|
1615
|
+
return { type: Map, of: mapValueType };
|
|
1616
|
+
}
|
|
1617
|
+
|
|
1618
|
+
// Default to Mixed for non-recursive records
|
|
1619
|
+
return { type: Schema.Types.Mixed };
|
|
1620
|
+
}
|
|
1621
|
+
|
|
1622
|
+
// Handle Set types
|
|
1623
|
+
// In Zod v4, set schemas have type: "set"
|
|
1624
|
+
// Sets are stored as arrays in MongoDB with getter/setter for conversion
|
|
1625
|
+
if (zodType === 'set') {
|
|
1626
|
+
const valueType = getZodDefSchemaProperty(zodField, 'valueType');
|
|
1627
|
+
|
|
1628
|
+
// Try to determine the value type for the Set
|
|
1629
|
+
let setValueType: any = Schema.Types.Mixed;
|
|
1630
|
+
if (valueType) {
|
|
1631
|
+
const valueTypeDefinition = this.getBaseMongooseType(valueType, schemaCache);
|
|
1632
|
+
if (valueTypeDefinition?.type) {
|
|
1633
|
+
setValueType = valueTypeDefinition.type;
|
|
1634
|
+
}
|
|
1635
|
+
}
|
|
1636
|
+
|
|
1637
|
+
return {
|
|
1638
|
+
type: [setValueType],
|
|
1639
|
+
get: (v: any[] | null | undefined) => v ? new Set(v) : v,
|
|
1640
|
+
set: (v: Set<any> | any[] | null | undefined) => {
|
|
1641
|
+
if (v === null || v === undefined) return v;
|
|
1642
|
+
return v instanceof Set ? Array.from(v) : v;
|
|
1643
|
+
}
|
|
1644
|
+
};
|
|
1645
|
+
}
|
|
1646
|
+
|
|
1647
|
+
// Handle Map types
|
|
1648
|
+
// In Zod v4, map schemas have type: "map"
|
|
1649
|
+
if (zodType === 'map') {
|
|
1650
|
+
const valueType = getZodDefSchemaProperty(zodField, 'valueType');
|
|
1651
|
+
|
|
1652
|
+
// Try to determine the value type for the Map
|
|
1653
|
+
let mapValueType: any = Schema.Types.Mixed;
|
|
1654
|
+
if (valueType) {
|
|
1655
|
+
const valueTypeDefinition = this.getBaseMongooseType(valueType, schemaCache);
|
|
1656
|
+
if (valueTypeDefinition?.type) {
|
|
1657
|
+
mapValueType = valueTypeDefinition.type;
|
|
1658
|
+
}
|
|
1659
|
+
}
|
|
1660
|
+
|
|
1661
|
+
return { type: Map, of: mapValueType };
|
|
1662
|
+
}
|
|
1663
|
+
|
|
1664
|
+
// Handle any/unknown types
|
|
1665
|
+
// In Zod v4, any/unknown schemas have type: "any" or "unknown"
|
|
1666
|
+
if (zodType === 'any' || zodType === 'unknown') {
|
|
1667
|
+
return { type: Schema.Types.Mixed };
|
|
1668
|
+
}
|
|
1669
|
+
|
|
1670
|
+
// Handle void/undefined types
|
|
1671
|
+
// In Zod v4, void/undefined schemas have type: "void" or "undefined"
|
|
1672
|
+
if (zodType === 'void' || zodType === 'undefined') {
|
|
1673
|
+
return { type: Schema.Types.Mixed };
|
|
1674
|
+
}
|
|
1675
|
+
|
|
1676
|
+
// Handle never type
|
|
1677
|
+
// In Zod v4, never schemas have type: "never"
|
|
1678
|
+
if (zodType === 'never') {
|
|
1679
|
+
return { type: Schema.Types.Mixed };
|
|
1680
|
+
}
|
|
1681
|
+
|
|
1682
|
+
// Fallback for unknown types
|
|
1683
|
+
this.logger.warn(`[ZodToMongoose] Unknown Zod type, using Mixed. Type: ${typeof zodField}`);
|
|
1684
|
+
return { type: Schema.Types.Mixed };
|
|
1685
|
+
}
|
|
1686
|
+
|
|
1687
|
+
// =================================================================
|
|
1688
|
+
// VALIDATION AND HELPER METHODS
|
|
1689
|
+
// =================================================================
|
|
1690
|
+
|
|
1691
|
+
/**
|
|
1692
|
+
* Validates and fixes field types to ensure Mongoose compatibility
|
|
1693
|
+
* @param mongooseDefinition The mongoose schema definition to validate
|
|
1694
|
+
* @param resourceType The resource type for debugging
|
|
1695
|
+
*/
|
|
1696
|
+
private validateAndFixFieldTypes(mongooseDefinition: any, resourceType: string): void {
|
|
1697
|
+
this.validateFieldsRecursively(mongooseDefinition, resourceType, '');
|
|
1698
|
+
}
|
|
1699
|
+
|
|
1700
|
+
/**
|
|
1701
|
+
* Recursively validates and fixes field types
|
|
1702
|
+
* @param obj The object to validate
|
|
1703
|
+
* @param resourceType The resource type for debugging
|
|
1704
|
+
* @param path The current field path for debugging
|
|
1705
|
+
*/
|
|
1706
|
+
/**
|
|
1707
|
+
* Checks if a value is a Mongoose Schema instance or looks like one
|
|
1708
|
+
* More robust than instanceof to handle different Schema versions/instances
|
|
1709
|
+
*/
|
|
1710
|
+
private isSchemaLike(value: any): boolean {
|
|
1711
|
+
if (!value || typeof value !== 'object') return false;
|
|
1712
|
+
// Check instanceof first (most reliable)
|
|
1713
|
+
if (value instanceof Schema) {
|
|
1714
|
+
return true;
|
|
1715
|
+
}
|
|
1716
|
+
// Check for Schema constructor
|
|
1717
|
+
if (value.constructor && value.constructor.name === 'Schema') {
|
|
1718
|
+
return true;
|
|
1719
|
+
}
|
|
1720
|
+
// Check for Schema-specific properties as fallback
|
|
1721
|
+
// A real Schema instance has: paths, methods, statics, virtuals, options
|
|
1722
|
+
// Even newly created empty schemas have these
|
|
1723
|
+
return (
|
|
1724
|
+
typeof value.paths === 'object' &&
|
|
1725
|
+
typeof value.methods === 'object' &&
|
|
1726
|
+
typeof value.statics === 'object' &&
|
|
1727
|
+
typeof value.virtuals === 'object' &&
|
|
1728
|
+
typeof value.options === 'object'
|
|
1729
|
+
);
|
|
1730
|
+
}
|
|
1731
|
+
|
|
1732
|
+
|
|
1733
|
+
private validateFieldsRecursively(obj: any, resourceType: string, path: string): void {
|
|
1734
|
+
if (!obj || typeof obj !== 'object' || Array.isArray(obj)) {
|
|
1735
|
+
return;
|
|
1736
|
+
}
|
|
1737
|
+
|
|
1738
|
+
|
|
1739
|
+
// CRITICAL: If obj itself is a Schema instance, do not iterate over it
|
|
1740
|
+
// Schema instances have internal properties that should not be validated as fields
|
|
1741
|
+
if (this.isSchemaLike(obj)) {
|
|
1742
|
+
return;
|
|
1743
|
+
}
|
|
1744
|
+
|
|
1745
|
+
for (const [fieldName, fieldValue] of Object.entries(obj)) {
|
|
1746
|
+
const fieldPath = path ? `${path}.${fieldName}` : fieldName;
|
|
1747
|
+
|
|
1748
|
+
// CRITICAL: If fieldValue is a Schema instance, skip it entirely
|
|
1749
|
+
// Schema instances are already valid and should not be validated
|
|
1750
|
+
if (this.isSchemaLike(fieldValue)) {
|
|
1751
|
+
continue;
|
|
1752
|
+
}
|
|
1753
|
+
|
|
1754
|
+
if (fieldValue && typeof fieldValue === 'object' && !Array.isArray(fieldValue)) {
|
|
1755
|
+
// CRITICAL: If fieldValue has a 'type' property that is a Schema instance,
|
|
1756
|
+
// skip validation entirely - it's already properly wrapped
|
|
1757
|
+
if ('type' in fieldValue && this.isSchemaLike(fieldValue.type)) {
|
|
1758
|
+
continue;
|
|
1759
|
+
}
|
|
1760
|
+
|
|
1761
|
+
// Check if this is a field definition (should have a type property or be a nested object)
|
|
1762
|
+
const hasTypeProperty = 'type' in fieldValue;
|
|
1763
|
+
const hasNestedFields = Object.keys(fieldValue).some(key =>
|
|
1764
|
+
key !== 'default' && key !== 'required' && key !== '_id' && key !== 'type' &&
|
|
1765
|
+
typeof fieldValue[key] === 'object'
|
|
1766
|
+
);
|
|
1767
|
+
|
|
1768
|
+
// Valid Mongoose schema properties that don't require a 'type' property
|
|
1769
|
+
const validMongooseProperties = [
|
|
1770
|
+
'match', 'min', 'max', 'minlength', 'maxlength',
|
|
1771
|
+
'enum', 'required', 'default', 'validate', 'get', 'set',
|
|
1772
|
+
'transform', 'alias', 'immutable', 'sparse', 'unique',
|
|
1773
|
+
'index', 'select', 'populate', 'discriminator', '_id'
|
|
1774
|
+
];
|
|
1775
|
+
|
|
1776
|
+
const hasOnlyValidMongooseProperties = Object.keys(fieldValue).every(key =>
|
|
1777
|
+
validMongooseProperties.includes(key)
|
|
1778
|
+
);
|
|
1779
|
+
|
|
1780
|
+
if (!hasTypeProperty && !hasNestedFields && !hasOnlyValidMongooseProperties) {
|
|
1781
|
+
// This field is missing a type property - fix it
|
|
1782
|
+
this.logger.warn(`[ZodToMongoose] FIXING field '${fieldPath}' in resource '${resourceType}': Missing type property`);
|
|
1783
|
+
this.logger.warn(`[ZodToMongoose] Field value keys: ${Object.keys(fieldValue as Record<string, unknown>).join(', ')}`);
|
|
1784
|
+
|
|
1785
|
+
let mongooseType: any = Schema.Types.Mixed; // Default fallback
|
|
1786
|
+
|
|
1787
|
+
// Try to infer type from default value if available
|
|
1788
|
+
if ('default' in fieldValue) {
|
|
1789
|
+
const defaultValue = fieldValue.default;
|
|
1790
|
+
if (typeof defaultValue === 'boolean') {
|
|
1791
|
+
mongooseType = Schema.Types.Boolean;
|
|
1792
|
+
} else if (typeof defaultValue === 'string') {
|
|
1793
|
+
mongooseType = Schema.Types.String;
|
|
1794
|
+
} else if (typeof defaultValue === 'number') {
|
|
1795
|
+
mongooseType = Schema.Types.Number;
|
|
1796
|
+
} else if (defaultValue instanceof Date) {
|
|
1797
|
+
mongooseType = Schema.Types.Date;
|
|
1798
|
+
}
|
|
1799
|
+
}
|
|
1800
|
+
// For fields with only 'required: true', assume String as a safe default
|
|
1801
|
+
else if ('required' in fieldValue && Object.keys(fieldValue).length === 1) {
|
|
1802
|
+
mongooseType = String;
|
|
1803
|
+
}
|
|
1804
|
+
|
|
1805
|
+
// Fix the field definition
|
|
1806
|
+
obj[fieldName] = {
|
|
1807
|
+
type: mongooseType,
|
|
1808
|
+
...fieldValue
|
|
1809
|
+
};
|
|
1810
|
+
|
|
1811
|
+
this.logger.warn(`[ZodToMongoose] Fixed to: ${JSON.stringify(obj[fieldName])}`);
|
|
1812
|
+
} else if (hasNestedFields) {
|
|
1813
|
+
// Recursively validate nested objects, but exclude valid Mongoose properties AND type
|
|
1814
|
+
const validMongooseKeys = ['match', 'min', 'max', 'minlength', 'maxlength', 'enum', 'required', 'default', 'validate', 'get', 'set', 'transform', 'alias', 'immutable', 'sparse', 'unique', 'index', 'select', 'populate', 'discriminator', '_id', 'type'];
|
|
1815
|
+
const nestedFields = Object.fromEntries(
|
|
1816
|
+
Object.entries(fieldValue).filter(([key]) => !validMongooseKeys.includes(key))
|
|
1817
|
+
);
|
|
1818
|
+
this.validateFieldsRecursively(nestedFields, resourceType, fieldPath);
|
|
1819
|
+
} else if (hasTypeProperty && fieldValue.type && typeof fieldValue.type === 'object') {
|
|
1820
|
+
// CRITICAL: If fieldValue.type is a Schema instance, DO NOT validate it
|
|
1821
|
+
// Schema instances have internal properties (methods, options, etc.) that should not be treated as fields
|
|
1822
|
+
if (!this.isSchemaLike(fieldValue.type)) {
|
|
1823
|
+
// This is a nested object type (plain object definition) - validate its contents
|
|
1824
|
+
this.validateFieldsRecursively(fieldValue.type, resourceType, fieldPath);
|
|
1825
|
+
}
|
|
1826
|
+
// If it's a Schema instance, we skip validation - it's already a valid Mongoose schema
|
|
1827
|
+
}
|
|
1828
|
+
}
|
|
1829
|
+
}
|
|
1830
|
+
}
|
|
1831
|
+
|
|
1832
|
+
|
|
1833
|
+
// =================================================================
|
|
1834
|
+
// UTILITY AND HELPER METHODS
|
|
1835
|
+
// =================================================================
|
|
1836
|
+
|
|
1837
|
+
/**
|
|
1838
|
+
* Maps USER_SELF_* resources to their equivalent collection names
|
|
1839
|
+
* This ensures USER_SELF resources use the same MongoDB collections
|
|
1840
|
+
* as their non-SELF counterparts while maintaining separate models
|
|
1841
|
+
*/
|
|
1842
|
+
private getCollectionNameForResource(resourceType: ResourceType): string {
|
|
1843
|
+
const collectionMapping: Record<string, string> = {
|
|
1844
|
+
[CoreResourceType.USER_SELF]: CoreResourceType.USERS,
|
|
1845
|
+
[CoreResourceType.USER_SELF_PROFILES]: CoreResourceType.USER_PROFILES,
|
|
1846
|
+
[CoreResourceType.USER_SELF_PREFERENCES]: CoreResourceType.USER_PREFERENCES,
|
|
1847
|
+
};
|
|
1848
|
+
|
|
1849
|
+
// Return mapped collection name or original resource type
|
|
1850
|
+
return collectionMapping[resourceType as string] || (resourceType as string);
|
|
1851
|
+
}
|
|
1852
|
+
|
|
1853
|
+
/**
|
|
1854
|
+
* Standardizes toObject/toJSON to serialize ObjectId fields as strings.
|
|
1855
|
+
* Keeps internal schema types as ObjectId for queries, but outputs strings for DTO parsing.
|
|
1856
|
+
*/
|
|
1857
|
+
private applyStandardTransforms(mongooseSchema: Schema): void {
|
|
1858
|
+
const hasToObject = (mongooseSchema as any).options?.toObject;
|
|
1859
|
+
const hasToJSON = (mongooseSchema as any).options?.toJSON;
|
|
1860
|
+
|
|
1861
|
+
mongooseSchema.set('toObject', {
|
|
1862
|
+
...(hasToObject || {}),
|
|
1863
|
+
transform: (doc: any, ret: any) => {
|
|
1864
|
+
this.serializeObjectIds(ret);
|
|
1865
|
+
if (typeof (hasToObject as any)?.transform === 'function') {
|
|
1866
|
+
(hasToObject as any).transform(doc, ret);
|
|
1867
|
+
}
|
|
1868
|
+
return ret;
|
|
1869
|
+
}
|
|
1870
|
+
});
|
|
1871
|
+
|
|
1872
|
+
mongooseSchema.set('toJSON', {
|
|
1873
|
+
...(hasToJSON || {}),
|
|
1874
|
+
transform: (doc: any, ret: any) => {
|
|
1875
|
+
this.serializeObjectIds(ret);
|
|
1876
|
+
if (typeof (hasToJSON as any)?.transform === 'function') {
|
|
1877
|
+
(hasToJSON as any).transform(doc, ret);
|
|
1878
|
+
}
|
|
1879
|
+
return ret;
|
|
1880
|
+
}
|
|
1881
|
+
});
|
|
1882
|
+
}
|
|
1883
|
+
|
|
1884
|
+
private serializeObjectIds(obj: any): void {
|
|
1885
|
+
if (!obj || typeof obj !== 'object') return;
|
|
1886
|
+
const stack: any[] = [obj];
|
|
1887
|
+
while (stack.length) {
|
|
1888
|
+
const current = stack.pop();
|
|
1889
|
+
for (const key of Object.keys(current)) {
|
|
1890
|
+
const value = current[key];
|
|
1891
|
+
if (value && typeof value === 'object') {
|
|
1892
|
+
// ObjectId array
|
|
1893
|
+
if (Array.isArray(value)) {
|
|
1894
|
+
for (let i = 0; i < value.length; i++) {
|
|
1895
|
+
const v = value[i] as any;
|
|
1896
|
+
if (v && typeof v === 'object' && (v as any)?._bsontype === 'ObjectId') {
|
|
1897
|
+
value[i] = String(v);
|
|
1898
|
+
} else if (v && typeof v === 'object') {
|
|
1899
|
+
stack.push(v);
|
|
1900
|
+
}
|
|
1901
|
+
}
|
|
1902
|
+
} else if ((value as any)?._bsontype === 'ObjectId' || value instanceof (Types as any).ObjectId) {
|
|
1903
|
+
current[key] = String(value);
|
|
1904
|
+
} else {
|
|
1905
|
+
stack.push(value);
|
|
1906
|
+
}
|
|
1907
|
+
}
|
|
1908
|
+
}
|
|
1909
|
+
}
|
|
1910
|
+
}
|
|
1911
|
+
|
|
1912
|
+
/**
|
|
1913
|
+
* Determines if a Zod field is required
|
|
1914
|
+
* @param zodField The Zod field to check
|
|
1915
|
+
* @returns True if the field is required
|
|
1916
|
+
*/
|
|
1917
|
+
private isFieldRequired(zodField: z.ZodTypeAny): boolean {
|
|
1918
|
+
// Check if it's wrapped in ZodOptional or ZodNullable
|
|
1919
|
+
// In Zod v4, optional/nullable schemas have type: "optional" or "nullable"
|
|
1920
|
+
if (isZodOptional(zodField) || isZodNullable(zodField)) {
|
|
1921
|
+
return false;
|
|
1922
|
+
}
|
|
1923
|
+
|
|
1924
|
+
// Check if it has a default value
|
|
1925
|
+
// In Zod v4, default schemas have type: "default"
|
|
1926
|
+
if (isZodDefault(zodField)) {
|
|
1927
|
+
return false;
|
|
1928
|
+
}
|
|
1929
|
+
|
|
1930
|
+
// Otherwise, it's required
|
|
1931
|
+
return true;
|
|
1932
|
+
}
|
|
1933
|
+
|
|
1934
|
+
/**
|
|
1935
|
+
* Applies indexes to a Mongoose schema
|
|
1936
|
+
* @param mongooseSchema The schema to apply indexes to
|
|
1937
|
+
* @param indexesToApply Array of field paths to index
|
|
1938
|
+
* @param uniqueIndexesToApply Array of unique index info with paths and params
|
|
1939
|
+
* @param ttlIndexesToApply Array of TTL index info with paths and params
|
|
1940
|
+
*/
|
|
1941
|
+
private applyIndexesToSchema(
|
|
1942
|
+
mongooseSchema: Schema,
|
|
1943
|
+
indexesToApply: string[],
|
|
1944
|
+
uniqueIndexesToApply: UniqueIndexInfo[] = [],
|
|
1945
|
+
ttlIndexesToApply: TtlIndexInfo[] = []
|
|
1946
|
+
): void {
|
|
1947
|
+
const appliedPaths = new Set<string>();
|
|
1948
|
+
|
|
1949
|
+
// First, collect all paths that will have unique indexes to avoid duplicates
|
|
1950
|
+
const uniqueIndexPaths = new Set<string>();
|
|
1951
|
+
for (const uniqueInfo of uniqueIndexesToApply) {
|
|
1952
|
+
const normalizedPath = (uniqueInfo.path || '').replace(/\[\]/g, '').trim();
|
|
1953
|
+
if (normalizedPath) {
|
|
1954
|
+
uniqueIndexPaths.add(normalizedPath);
|
|
1955
|
+
}
|
|
1956
|
+
}
|
|
1957
|
+
|
|
1958
|
+
// Apply regular indexes
|
|
1959
|
+
for (const rawPath of indexesToApply) {
|
|
1960
|
+
try {
|
|
1961
|
+
// Normalize array notation and trim whitespace
|
|
1962
|
+
const normalizedPath = (rawPath || '').replace(/\[\]/g, '').trim();
|
|
1963
|
+
|
|
1964
|
+
// Skip invalid or empty paths
|
|
1965
|
+
if (!normalizedPath) continue;
|
|
1966
|
+
|
|
1967
|
+
// Never attempt to index _id (MongoDB manages it). Also skip nested '.*._id'
|
|
1968
|
+
if (normalizedPath === '_id' || normalizedPath.endsWith('._id')) {
|
|
1969
|
+
continue;
|
|
1970
|
+
}
|
|
1971
|
+
|
|
1972
|
+
// Skip paths that will have unique indexes (unique indexes already create an index)
|
|
1973
|
+
if (uniqueIndexPaths.has(normalizedPath)) {
|
|
1974
|
+
continue;
|
|
1975
|
+
}
|
|
1976
|
+
|
|
1977
|
+
// De-duplicate
|
|
1978
|
+
if (appliedPaths.has(normalizedPath)) continue;
|
|
1979
|
+
appliedPaths.add(normalizedPath);
|
|
1980
|
+
|
|
1981
|
+
// Create a simple index on the field
|
|
1982
|
+
const indexSpec: Record<string, 1> = {};
|
|
1983
|
+
indexSpec[normalizedPath] = 1;
|
|
1984
|
+
mongooseSchema.index(indexSpec);
|
|
1985
|
+
} catch (error) {
|
|
1986
|
+
this.logger.warn(`[ZodToMongoose] Failed to apply index on path '${rawPath}': ${error instanceof Error ? error.message : String(error)}`);
|
|
1987
|
+
}
|
|
1988
|
+
}
|
|
1989
|
+
|
|
1990
|
+
// Apply unique indexes
|
|
1991
|
+
const appliedUniquePaths = new Set<string>();
|
|
1992
|
+
for (const uniqueInfo of uniqueIndexesToApply) {
|
|
1993
|
+
try {
|
|
1994
|
+
// Normalize array notation and trim whitespace
|
|
1995
|
+
const normalizedPath = (uniqueInfo.path || '').replace(/\[\]/g, '').trim();
|
|
1996
|
+
|
|
1997
|
+
// Skip invalid or empty paths
|
|
1998
|
+
if (!normalizedPath) continue;
|
|
1999
|
+
|
|
2000
|
+
// Never attempt to index _id (MongoDB manages it). Also skip nested '.*._id'
|
|
2001
|
+
if (normalizedPath === '_id' || normalizedPath.endsWith('._id')) {
|
|
2002
|
+
continue;
|
|
2003
|
+
}
|
|
2004
|
+
|
|
2005
|
+
// De-duplicate (unique indexes take precedence, so remove from regular indexes if exists)
|
|
2006
|
+
if (appliedUniquePaths.has(normalizedPath)) continue;
|
|
2007
|
+
appliedUniquePaths.add(normalizedPath);
|
|
2008
|
+
|
|
2009
|
+
const params = uniqueInfo.params || {};
|
|
2010
|
+
const scope = params.scope || 'global';
|
|
2011
|
+
const sparse = params.sparse !== false; // Default to true
|
|
2012
|
+
|
|
2013
|
+
// Create index spec based on scope or compoundWith
|
|
2014
|
+
const indexSpec: Record<string, 1> = {};
|
|
2015
|
+
|
|
2016
|
+
if (params.compoundWith) {
|
|
2017
|
+
// Resolve compoundWith field — handles polymorphic renames automatically
|
|
2018
|
+
let compoundField = params.compoundWith;
|
|
2019
|
+
if (!(mongooseSchema as any).paths?.[compoundField]) {
|
|
2020
|
+
const suffix = compoundField.charAt(0).toUpperCase() + compoundField.slice(1);
|
|
2021
|
+
const schemaFields = Object.keys((mongooseSchema as any).paths || {});
|
|
2022
|
+
const match = schemaFields.find(p => p.endsWith(suffix) && p !== normalizedPath);
|
|
2023
|
+
if (match) {
|
|
2024
|
+
compoundField = match;
|
|
2025
|
+
} else {
|
|
2026
|
+
this.logger.warn(`[ZodToMongoose] compoundWith field '${params.compoundWith}' not found in schema paths (suffix '${suffix}'). Available: ${schemaFields.join(', ')}`);
|
|
2027
|
+
}
|
|
2028
|
+
}
|
|
2029
|
+
indexSpec[compoundField] = 1;
|
|
2030
|
+
indexSpec[normalizedPath] = 1;
|
|
2031
|
+
} else if (scope === 'organization') {
|
|
2032
|
+
// Compound unique index: organizationId + field
|
|
2033
|
+
indexSpec['organizationId'] = 1;
|
|
2034
|
+
indexSpec[normalizedPath] = 1;
|
|
2035
|
+
} else if (scope === 'user') {
|
|
2036
|
+
// Compound unique index: createdByUserId + field
|
|
2037
|
+
indexSpec['createdByUserId'] = 1;
|
|
2038
|
+
indexSpec[normalizedPath] = 1;
|
|
2039
|
+
} else {
|
|
2040
|
+
// Global unique index
|
|
2041
|
+
indexSpec[normalizedPath] = 1;
|
|
2042
|
+
}
|
|
2043
|
+
|
|
2044
|
+
// Apply unique index with options
|
|
2045
|
+
const indexOptions: { unique: true; sparse?: boolean } = { unique: true };
|
|
2046
|
+
if (sparse) {
|
|
2047
|
+
indexOptions.sparse = true;
|
|
2048
|
+
}
|
|
2049
|
+
|
|
2050
|
+
mongooseSchema.index(indexSpec, indexOptions);
|
|
2051
|
+
} catch (error) {
|
|
2052
|
+
this.logger.warn(`[ZodToMongoose] Failed to apply unique index on path '${uniqueInfo.path}': ${error instanceof Error ? error.message : String(error)}`);
|
|
2053
|
+
}
|
|
2054
|
+
}
|
|
2055
|
+
|
|
2056
|
+
// Apply TTL indexes
|
|
2057
|
+
// MongoDB TTL indexes automatically delete documents after a specified time
|
|
2058
|
+
// TTL indexes can only be applied to Date fields
|
|
2059
|
+
const appliedTtlPaths = new Set<string>();
|
|
2060
|
+
for (const ttlInfo of ttlIndexesToApply) {
|
|
2061
|
+
try {
|
|
2062
|
+
// Normalize array notation and trim whitespace
|
|
2063
|
+
const normalizedPath = (ttlInfo.path || '').replace(/\[\]/g, '').trim();
|
|
2064
|
+
|
|
2065
|
+
// Skip invalid or empty paths
|
|
2066
|
+
if (!normalizedPath) continue;
|
|
2067
|
+
|
|
2068
|
+
// De-duplicate
|
|
2069
|
+
if (appliedTtlPaths.has(normalizedPath)) continue;
|
|
2070
|
+
appliedTtlPaths.add(normalizedPath);
|
|
2071
|
+
|
|
2072
|
+
const params = ttlInfo.params;
|
|
2073
|
+
const expireAfterSeconds = params.expireAfterSeconds;
|
|
2074
|
+
|
|
2075
|
+
// Create TTL index on the field
|
|
2076
|
+
const indexSpec: Record<string, 1> = {};
|
|
2077
|
+
indexSpec[normalizedPath] = 1;
|
|
2078
|
+
|
|
2079
|
+
// Apply TTL index with expireAfterSeconds option
|
|
2080
|
+
mongooseSchema.index(indexSpec, { expireAfterSeconds });
|
|
2081
|
+
|
|
2082
|
+
this.logDebug(`Applied TTL index on path '${normalizedPath}' with expireAfterSeconds: ${expireAfterSeconds}`);
|
|
2083
|
+
} catch (error) {
|
|
2084
|
+
this.logger.warn(`[ZodToMongoose] Failed to apply TTL index on path '${ttlInfo.path}': ${error instanceof Error ? error.message : String(error)}`);
|
|
2085
|
+
}
|
|
2086
|
+
}
|
|
2087
|
+
}
|
|
2088
|
+
|
|
2089
|
+
/**
|
|
2090
|
+
* Checks if a definition is an object definition (not a primitive type)
|
|
2091
|
+
* @param definition The definition to check
|
|
2092
|
+
* @returns True if it's an object definition
|
|
2093
|
+
*/
|
|
2094
|
+
private isObjectDefinition(definition: any): boolean {
|
|
2095
|
+
return definition &&
|
|
2096
|
+
typeof definition === 'object' &&
|
|
2097
|
+
!Array.isArray(definition) &&
|
|
2098
|
+
!definition.type &&
|
|
2099
|
+
Object.keys(definition).length > 0;
|
|
2100
|
+
}
|
|
2101
|
+
|
|
2102
|
+
/**
|
|
2103
|
+
* Generates a hash for a schema for caching purposes
|
|
2104
|
+
* @param schema The schema to hash
|
|
2105
|
+
* @returns A hash string
|
|
2106
|
+
*/
|
|
2107
|
+
private getSchemaHash(schema: any): string {
|
|
2108
|
+
try {
|
|
2109
|
+
const schemaString = JSON.stringify(schema, (key, value) => {
|
|
2110
|
+
if (typeof value === 'function') return '[Function]';
|
|
2111
|
+
if (value instanceof RegExp) return value.toString();
|
|
2112
|
+
return value;
|
|
2113
|
+
});
|
|
2114
|
+
return schemaString.length.toString(36) + schemaString.slice(0, 10);
|
|
2115
|
+
} catch {
|
|
2116
|
+
return Math.random().toString(36).substr(2, 9);
|
|
2117
|
+
}
|
|
2118
|
+
}
|
|
2119
|
+
|
|
2120
|
+
// =================================================================
|
|
2121
|
+
// DEBUG AND UTILITY METHODS
|
|
2122
|
+
// =================================================================
|
|
2123
|
+
|
|
2124
|
+
/**
|
|
2125
|
+
* Debug display method to show schema structure for a specific model
|
|
2126
|
+
* @param model The Mongoose model to analyze
|
|
2127
|
+
* @param showDetails Whether to show detailed field information
|
|
2128
|
+
*/
|
|
2129
|
+
debugDisplayModelSchema(model: Model<any>, showDetails: boolean = true): void {
|
|
2130
|
+
|
|
2131
|
+
this.logDebug(`\n🔍 === MODEL SCHEMA DEBUG: ${model.modelName} ===`);
|
|
2132
|
+
this.logDebug(`Collection: ${model.collection.name}`);
|
|
2133
|
+
this.logDebug(`Schema Fields: ${this.countSchemaFields(model.schema)}`);
|
|
2134
|
+
this.logDebug(`Indexes: ${model.schema.indexes().length}`);
|
|
2135
|
+
|
|
2136
|
+
if (showDetails) {
|
|
2137
|
+
this.displaySchemaStructure(model.schema, model.modelName);
|
|
2138
|
+
|
|
2139
|
+
const indexes = model.schema.indexes();
|
|
2140
|
+
if (indexes.length > 0) {
|
|
2141
|
+
this.logDebug('\n🗂️ Indexes:');
|
|
2142
|
+
indexes.forEach((index, i) => {
|
|
2143
|
+
const [fields, options] = index;
|
|
2144
|
+
const fieldsStr = Object.entries(fields)
|
|
2145
|
+
.map(([field, direction]) => `${field}:${direction}`)
|
|
2146
|
+
.join(', ');
|
|
2147
|
+
const optionsStr = options && Object.keys(options).length > 0
|
|
2148
|
+
? ` (${Object.entries(options).map(([k, v]) => `${k}:${v}`).join(', ')})`
|
|
2149
|
+
: '';
|
|
2150
|
+
this.logDebug(` ${i + 1}. {${fieldsStr}}${optionsStr}`);
|
|
2151
|
+
});
|
|
2152
|
+
}
|
|
2153
|
+
}
|
|
2154
|
+
this.logDebug('=================================\n');
|
|
2155
|
+
}
|
|
2156
|
+
|
|
2157
|
+
/**
|
|
2158
|
+
* Debug method to show simplified schema summary
|
|
2159
|
+
* @param models Array of models to analyze
|
|
2160
|
+
*/
|
|
2161
|
+
debugShowModelsSummary(models: Model<any>[]): void {
|
|
2162
|
+
|
|
2163
|
+
this.logDebug('\n📋 === MODELS SUMMARY ===');
|
|
2164
|
+
|
|
2165
|
+
if (models.length === 0) {
|
|
2166
|
+
this.logDebug('No models provided.');
|
|
2167
|
+
return;
|
|
2168
|
+
}
|
|
2169
|
+
|
|
2170
|
+
for (const model of models) {
|
|
2171
|
+
const fieldCount = this.countSchemaFields(model.schema);
|
|
2172
|
+
const indexCount = model.schema.indexes().length;
|
|
2173
|
+
this.logDebug(`${model.modelName}: ${fieldCount} fields, ${indexCount} indexes`);
|
|
2174
|
+
}
|
|
2175
|
+
this.logDebug('========================\n');
|
|
2176
|
+
}
|
|
2177
|
+
|
|
2178
|
+
/**
|
|
2179
|
+
* Counts schema fields recursively
|
|
2180
|
+
* @param schema The Mongoose schema
|
|
2181
|
+
* @returns Total field count
|
|
2182
|
+
*/
|
|
2183
|
+
private countSchemaFields(schema: Schema): number {
|
|
2184
|
+
if (!schema || !schema.paths) return 0;
|
|
2185
|
+
|
|
2186
|
+
const paths = schema.paths;
|
|
2187
|
+
const pathNames = Object.keys(paths)
|
|
2188
|
+
.filter(path => !['__v', '_version_db_doc'].includes(path))
|
|
2189
|
+
.sort();
|
|
2190
|
+
|
|
2191
|
+
return pathNames.length;
|
|
2192
|
+
}
|
|
2193
|
+
|
|
2194
|
+
/**
|
|
2195
|
+
* Displays the structure of a Mongoose schema for debugging
|
|
2196
|
+
* @param schema The schema to display
|
|
2197
|
+
* @param schemaName Optional name for the schema
|
|
2198
|
+
* @param options Display options
|
|
2199
|
+
*/
|
|
2200
|
+
private displaySchemaStructure(
|
|
2201
|
+
schema: Schema,
|
|
2202
|
+
schemaName: string = 'Schema',
|
|
2203
|
+
options: {
|
|
2204
|
+
showIndexes?: boolean;
|
|
2205
|
+
showValidators?: boolean;
|
|
2206
|
+
maxDepth?: number;
|
|
2207
|
+
} = {}
|
|
2208
|
+
): void {
|
|
2209
|
+
const { showIndexes = true, showValidators = false, maxDepth = 3 } = options;
|
|
2210
|
+
|
|
2211
|
+
this.logDebug(`\n=== ${schemaName} Structure ===`);
|
|
2212
|
+
|
|
2213
|
+
if (!schema || !schema.paths) {
|
|
2214
|
+
this.logDebug('No schema paths found');
|
|
2215
|
+
return;
|
|
2216
|
+
}
|
|
2217
|
+
|
|
2218
|
+
const paths = schema.paths;
|
|
2219
|
+
const pathNames = Object.keys(paths)
|
|
2220
|
+
.filter(path => !['__v', '_version_db_doc'].includes(path))
|
|
2221
|
+
.sort();
|
|
2222
|
+
|
|
2223
|
+
for (const pathName of pathNames) {
|
|
2224
|
+
const pathInfo = this.getPathTypeInfo(paths[pathName]);
|
|
2225
|
+
|
|
2226
|
+
// Start with base type
|
|
2227
|
+
let pathDisplay = `${pathName}: `;
|
|
2228
|
+
|
|
2229
|
+
if (pathInfo.isArray) {
|
|
2230
|
+
// For arrays, show [ElementType] format
|
|
2231
|
+
const elementType = pathInfo.arrayElementType || 'Mixed';
|
|
2232
|
+
pathDisplay += `[${elementType}]`;
|
|
2233
|
+
} else {
|
|
2234
|
+
pathDisplay += pathInfo.type;
|
|
2235
|
+
}
|
|
2236
|
+
|
|
2237
|
+
// Collect all additional info in parentheses
|
|
2238
|
+
const additionalInfo: string[] = [];
|
|
2239
|
+
|
|
2240
|
+
// Required vs Optional
|
|
2241
|
+
if (pathInfo.isRequired) {
|
|
2242
|
+
additionalInfo.push('required');
|
|
2243
|
+
} else {
|
|
2244
|
+
additionalInfo.push('optional');
|
|
2245
|
+
}
|
|
2246
|
+
|
|
2247
|
+
// Enum values
|
|
2248
|
+
if (pathInfo.enumValues.length > 0) {
|
|
2249
|
+
const enumList = pathInfo.enumValues.join(', ');
|
|
2250
|
+
additionalInfo.push(`enum: [${enumList}]`);
|
|
2251
|
+
}
|
|
2252
|
+
|
|
2253
|
+
// Default value
|
|
2254
|
+
if (pathInfo.hasDefault) {
|
|
2255
|
+
let defaultStr = '';
|
|
2256
|
+
if (Array.isArray(pathInfo.defaultValue)) {
|
|
2257
|
+
defaultStr = `[${pathInfo.defaultValue.join(', ')}]`;
|
|
2258
|
+
} else if (typeof pathInfo.defaultValue === 'object' && pathInfo.defaultValue !== null) {
|
|
2259
|
+
defaultStr = JSON.stringify(pathInfo.defaultValue);
|
|
2260
|
+
} else if (typeof pathInfo.defaultValue === 'string') {
|
|
2261
|
+
defaultStr = `"${pathInfo.defaultValue}"`;
|
|
2262
|
+
} else {
|
|
2263
|
+
defaultStr = String(pathInfo.defaultValue);
|
|
2264
|
+
}
|
|
2265
|
+
additionalInfo.push(`default: ${defaultStr}`);
|
|
2266
|
+
}
|
|
2267
|
+
|
|
2268
|
+
// Validators
|
|
2269
|
+
if (showValidators && pathInfo.validators.length > 0) {
|
|
2270
|
+
additionalInfo.push(`validators: [${pathInfo.validators.join(', ')}]`);
|
|
2271
|
+
}
|
|
2272
|
+
|
|
2273
|
+
// Add all additional info in parentheses
|
|
2274
|
+
if (additionalInfo.length > 0) {
|
|
2275
|
+
pathDisplay += ` (${additionalInfo.join(', ')})`;
|
|
2276
|
+
}
|
|
2277
|
+
|
|
2278
|
+
this.logDebug(` ${pathDisplay}`);
|
|
2279
|
+
|
|
2280
|
+
// Show nested structure for objects
|
|
2281
|
+
if (pathInfo.isNested && maxDepth > 0) {
|
|
2282
|
+
this.displayNestedPathStructure(paths[pathName], 2, maxDepth - 1, showValidators);
|
|
2283
|
+
}
|
|
2284
|
+
}
|
|
2285
|
+
|
|
2286
|
+
if (showIndexes) {
|
|
2287
|
+
const indexes = schema.indexes();
|
|
2288
|
+
if (indexes.length > 0) {
|
|
2289
|
+
this.logDebug('\n Indexes:');
|
|
2290
|
+
indexes.forEach((index, i) => {
|
|
2291
|
+
this.logDebug(` ${i + 1}. ${JSON.stringify(index[0])} ${JSON.stringify(index[1] || {})}`);
|
|
2292
|
+
});
|
|
2293
|
+
}
|
|
2294
|
+
}
|
|
2295
|
+
|
|
2296
|
+
this.logDebug(`\nTotal paths: ${pathNames.length}`);
|
|
2297
|
+
}
|
|
2298
|
+
|
|
2299
|
+
/**
|
|
2300
|
+
* Displays nested path structure recursively with comprehensive details
|
|
2301
|
+
* @param path The path to display
|
|
2302
|
+
* @param indent Current indentation level
|
|
2303
|
+
* @param maxDepth Maximum depth to display
|
|
2304
|
+
* @param showValidators Whether to show validator information
|
|
2305
|
+
*/
|
|
2306
|
+
private displayNestedPathStructure(path: any, indent: number = 0, maxDepth: number = 2, showValidators: boolean = false): void {
|
|
2307
|
+
if (maxDepth <= 0) return;
|
|
2308
|
+
|
|
2309
|
+
const spaces = ' '.repeat(indent);
|
|
2310
|
+
|
|
2311
|
+
if (path.schema && path.schema.paths) {
|
|
2312
|
+
const nestedPaths = Object.keys(path.schema.paths)
|
|
2313
|
+
.filter(nestedPath => !['__v', '_version_db_doc'].includes(nestedPath))
|
|
2314
|
+
.sort();
|
|
2315
|
+
|
|
2316
|
+
for (const nestedPath of nestedPaths) {
|
|
2317
|
+
const nestedPathInfo = this.getPathTypeInfo(path.schema.paths[nestedPath]);
|
|
2318
|
+
|
|
2319
|
+
// Build display string for nested field
|
|
2320
|
+
let nestedDisplay = `${nestedPath}: `;
|
|
2321
|
+
|
|
2322
|
+
if (nestedPathInfo.isArray) {
|
|
2323
|
+
const elementType = nestedPathInfo.arrayElementType || 'Mixed';
|
|
2324
|
+
nestedDisplay += `[${elementType}]`;
|
|
2325
|
+
} else {
|
|
2326
|
+
nestedDisplay += nestedPathInfo.type;
|
|
2327
|
+
}
|
|
2328
|
+
|
|
2329
|
+
// Collect additional info for nested fields
|
|
2330
|
+
const nestedAdditionalInfo: string[] = [];
|
|
2331
|
+
|
|
2332
|
+
// Required vs Optional
|
|
2333
|
+
if (nestedPathInfo.isRequired) {
|
|
2334
|
+
nestedAdditionalInfo.push('required');
|
|
2335
|
+
} else {
|
|
2336
|
+
nestedAdditionalInfo.push('optional');
|
|
2337
|
+
}
|
|
2338
|
+
|
|
2339
|
+
// Enum values
|
|
2340
|
+
if (nestedPathInfo.enumValues.length > 0) {
|
|
2341
|
+
const enumList = nestedPathInfo.enumValues.join(', ');
|
|
2342
|
+
nestedAdditionalInfo.push(`enum: [${enumList}]`);
|
|
2343
|
+
}
|
|
2344
|
+
|
|
2345
|
+
// Default value
|
|
2346
|
+
if (nestedPathInfo.hasDefault) {
|
|
2347
|
+
let defaultStr = '';
|
|
2348
|
+
if (Array.isArray(nestedPathInfo.defaultValue)) {
|
|
2349
|
+
defaultStr = `[${nestedPathInfo.defaultValue.join(', ')}]`;
|
|
2350
|
+
} else if (typeof nestedPathInfo.defaultValue === 'object' && nestedPathInfo.defaultValue !== null) {
|
|
2351
|
+
defaultStr = JSON.stringify(nestedPathInfo.defaultValue);
|
|
2352
|
+
} else if (typeof nestedPathInfo.defaultValue === 'string') {
|
|
2353
|
+
defaultStr = `"${nestedPathInfo.defaultValue}"`;
|
|
2354
|
+
} else {
|
|
2355
|
+
defaultStr = String(nestedPathInfo.defaultValue);
|
|
2356
|
+
}
|
|
2357
|
+
nestedAdditionalInfo.push(`default: ${defaultStr}`);
|
|
2358
|
+
}
|
|
2359
|
+
|
|
2360
|
+
// Validators
|
|
2361
|
+
if (showValidators && nestedPathInfo.validators.length > 0) {
|
|
2362
|
+
nestedAdditionalInfo.push(`validators: [${nestedPathInfo.validators.join(', ')}]`);
|
|
2363
|
+
}
|
|
2364
|
+
|
|
2365
|
+
// Add additional info in parentheses
|
|
2366
|
+
if (nestedAdditionalInfo.length > 0) {
|
|
2367
|
+
nestedDisplay += ` (${nestedAdditionalInfo.join(', ')})`;
|
|
2368
|
+
}
|
|
2369
|
+
|
|
2370
|
+
this.logDebug(`${spaces}${nestedDisplay}`);
|
|
2371
|
+
|
|
2372
|
+
if (nestedPathInfo.isNested) {
|
|
2373
|
+
this.displayNestedPathStructure(path.schema.paths[nestedPath], indent + 1, maxDepth - 1, showValidators);
|
|
2374
|
+
}
|
|
2375
|
+
}
|
|
2376
|
+
}
|
|
2377
|
+
}
|
|
2378
|
+
|
|
2379
|
+
/**
|
|
2380
|
+
* Gets comprehensive type information for a schema path
|
|
2381
|
+
* @param schemaType The schema type to analyze
|
|
2382
|
+
* @returns Object containing detailed type information
|
|
2383
|
+
*/
|
|
2384
|
+
private getPathTypeInfo(schemaType: any): {
|
|
2385
|
+
type: string;
|
|
2386
|
+
isRequired: boolean;
|
|
2387
|
+
hasDefault: boolean;
|
|
2388
|
+
defaultValue: any;
|
|
2389
|
+
isArray: boolean;
|
|
2390
|
+
arrayElementType: string;
|
|
2391
|
+
isNested: boolean;
|
|
2392
|
+
validators: string[];
|
|
2393
|
+
enumValues: string[];
|
|
2394
|
+
isOptional: boolean;
|
|
2395
|
+
} {
|
|
2396
|
+
let type = 'Mixed';
|
|
2397
|
+
let isRequired = false;
|
|
2398
|
+
let hasDefault = false;
|
|
2399
|
+
let defaultValue: any = undefined;
|
|
2400
|
+
let isArray = false;
|
|
2401
|
+
let arrayElementType = '';
|
|
2402
|
+
let isNested = false;
|
|
2403
|
+
const validators: string[] = [];
|
|
2404
|
+
const enumValues: string[] = [];
|
|
2405
|
+
|
|
2406
|
+
if (schemaType) {
|
|
2407
|
+
// Get type name
|
|
2408
|
+
if (schemaType.instance) {
|
|
2409
|
+
type = schemaType.instance;
|
|
2410
|
+
} else if (schemaType.constructor && schemaType.constructor.name) {
|
|
2411
|
+
type = schemaType.constructor.name;
|
|
2412
|
+
}
|
|
2413
|
+
|
|
2414
|
+
// Check if required
|
|
2415
|
+
if (schemaType.isRequired) {
|
|
2416
|
+
isRequired = true;
|
|
2417
|
+
}
|
|
2418
|
+
|
|
2419
|
+
// Check if has default and get the actual value
|
|
2420
|
+
if (schemaType.defaultValue !== undefined) {
|
|
2421
|
+
hasDefault = true;
|
|
2422
|
+
defaultValue = schemaType.defaultValue;
|
|
2423
|
+
|
|
2424
|
+
// Handle function defaults
|
|
2425
|
+
if (typeof defaultValue === 'function') {
|
|
2426
|
+
try {
|
|
2427
|
+
const result = defaultValue();
|
|
2428
|
+
defaultValue = result;
|
|
2429
|
+
} catch (e) {
|
|
2430
|
+
defaultValue = '[Function]';
|
|
2431
|
+
}
|
|
2432
|
+
}
|
|
2433
|
+
}
|
|
2434
|
+
|
|
2435
|
+
// Check if array and get element type
|
|
2436
|
+
if (schemaType.constructor && schemaType.constructor.name === 'Array') {
|
|
2437
|
+
isArray = true;
|
|
2438
|
+
|
|
2439
|
+
// Try to get array element type
|
|
2440
|
+
if (schemaType.caster) {
|
|
2441
|
+
if (schemaType.caster.instance) {
|
|
2442
|
+
arrayElementType = schemaType.caster.instance;
|
|
2443
|
+
} else if (schemaType.caster.constructor && schemaType.caster.constructor.name) {
|
|
2444
|
+
arrayElementType = schemaType.caster.constructor.name;
|
|
2445
|
+
}
|
|
2446
|
+
|
|
2447
|
+
// Check for enum values in array elements
|
|
2448
|
+
if (schemaType.caster.enumValues && Array.isArray(schemaType.caster.enumValues)) {
|
|
2449
|
+
enumValues.push(...schemaType.caster.enumValues);
|
|
2450
|
+
}
|
|
2451
|
+
}
|
|
2452
|
+
}
|
|
2453
|
+
|
|
2454
|
+
// Check if nested (has embedded schema)
|
|
2455
|
+
if (schemaType.schema) {
|
|
2456
|
+
isNested = true;
|
|
2457
|
+
type = 'Object';
|
|
2458
|
+
}
|
|
2459
|
+
|
|
2460
|
+
// Check for enum values
|
|
2461
|
+
if (schemaType.enumValues && Array.isArray(schemaType.enumValues)) {
|
|
2462
|
+
enumValues.push(...schemaType.enumValues);
|
|
2463
|
+
}
|
|
2464
|
+
|
|
2465
|
+
// Collect validators
|
|
2466
|
+
if (schemaType.validators && Array.isArray(schemaType.validators)) {
|
|
2467
|
+
validators.push(...schemaType.validators.map((v: any) => v.type || 'custom'));
|
|
2468
|
+
}
|
|
2469
|
+
}
|
|
2470
|
+
|
|
2471
|
+
const isOptional = !isRequired;
|
|
2472
|
+
|
|
2473
|
+
return {
|
|
2474
|
+
type,
|
|
2475
|
+
isRequired,
|
|
2476
|
+
hasDefault,
|
|
2477
|
+
defaultValue,
|
|
2478
|
+
isArray,
|
|
2479
|
+
arrayElementType,
|
|
2480
|
+
isNested,
|
|
2481
|
+
validators,
|
|
2482
|
+
enumValues,
|
|
2483
|
+
isOptional
|
|
2484
|
+
};
|
|
2485
|
+
}
|
|
2486
|
+
}
|