@lenne.tech/nest-server 12.0.0 → 12.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/rules/architecture.md +6 -1
- package/.claude/rules/better-auth.md +46 -0
- package/.claude/rules/configurable-features.md +3 -2
- package/.claude/rules/package-management.md +24 -2
- package/.claude/rules/persistence.md +100 -0
- package/.claude/rules/role-system.md +9 -0
- package/.claude/rules/testing.md +116 -18
- package/CLAUDE.md +21 -2
- package/FRAMEWORK-API.md +6 -4
- package/README.md +106 -34
- package/dist/core/common/decorators/unified-field.decorator.d.ts +2 -1
- package/dist/core/common/decorators/unified-field.decorator.js +4 -1
- package/dist/core/common/decorators/unified-field.decorator.js.map +1 -1
- package/dist/core/common/filters/mongoose-cast-error.filter.d.ts +7 -5
- package/dist/core/common/filters/mongoose-cast-error.filter.js +3 -2
- package/dist/core/common/filters/mongoose-cast-error.filter.js.map +1 -1
- package/dist/core/common/helpers/db.helper.d.ts +2 -1
- package/dist/core/common/helpers/db.helper.js +32 -26
- package/dist/core/common/helpers/db.helper.js.map +1 -1
- package/dist/core/common/helpers/decorator.helper.d.ts +1 -1
- package/dist/core/common/helpers/filter.helper.d.ts +2 -1
- package/dist/core/common/helpers/filter.helper.js.map +1 -1
- package/dist/core/common/helpers/gridfs.helper.d.ts +4 -4
- package/dist/core/common/helpers/gridfs.helper.js +14 -6
- package/dist/core/common/helpers/gridfs.helper.js.map +1 -1
- package/dist/core/common/helpers/id.helper.d.ts +4 -1
- package/dist/core/common/helpers/id.helper.js +10 -4
- package/dist/core/common/helpers/id.helper.js.map +1 -1
- package/dist/core/common/helpers/model.helper.js +5 -5
- package/dist/core/common/helpers/model.helper.js.map +1 -1
- package/dist/core/common/helpers/service.helper.js +3 -3
- package/dist/core/common/helpers/service.helper.js.map +1 -1
- package/dist/core/common/interfaces/server-options.interface.d.ts +18 -2
- package/dist/core/common/interfaces/service-options.interface.d.ts +2 -2
- package/dist/core/common/models/core-persistence.model.d.ts +1 -2
- package/dist/core/common/models/core-persistence.model.js +3 -3
- package/dist/core/common/models/core-persistence.model.js.map +1 -1
- package/dist/core/common/persistence/core-persistence.lifecycle.d.ts +9 -0
- package/dist/core/common/persistence/core-persistence.lifecycle.js +38 -0
- package/dist/core/common/persistence/core-persistence.lifecycle.js.map +1 -0
- package/dist/core/common/persistence/core-persistence.module.d.ts +9 -0
- package/dist/core/common/persistence/core-persistence.module.js +76 -0
- package/dist/core/common/persistence/core-persistence.module.js.map +1 -0
- package/dist/core/common/persistence/data-source.config.d.ts +33 -0
- package/dist/core/common/persistence/data-source.config.js +151 -0
- package/dist/core/common/persistence/data-source.config.js.map +1 -0
- package/dist/core/common/persistence/data-source.runtime.d.ts +45 -0
- package/dist/core/common/persistence/data-source.runtime.js +278 -0
- package/dist/core/common/persistence/data-source.runtime.js.map +1 -0
- package/dist/core/common/persistence/data-store.interface.d.ts +73 -0
- package/dist/core/common/persistence/data-store.interface.js +2 -0
- package/dist/core/common/persistence/data-store.interface.js.map +1 -0
- package/dist/core/common/persistence/expiry-sweep.d.ts +12 -0
- package/dist/core/common/persistence/expiry-sweep.js +55 -0
- package/dist/core/common/persistence/expiry-sweep.js.map +1 -0
- package/dist/core/common/persistence/id-format.d.ts +3 -0
- package/dist/core/common/persistence/id-format.js +21 -0
- package/dist/core/common/persistence/id-format.js.map +1 -0
- package/dist/core/common/persistence/infrastructure-locks.d.ts +13 -0
- package/dist/core/common/persistence/infrastructure-locks.js +35 -0
- package/dist/core/common/persistence/infrastructure-locks.js.map +1 -0
- package/dist/core/common/persistence/inject-store.decorator.d.ts +1 -0
- package/dist/core/common/persistence/inject-store.decorator.js +6 -0
- package/dist/core/common/persistence/inject-store.decorator.js.map +1 -0
- package/dist/core/common/persistence/lock-store.interface.d.ts +5 -0
- package/dist/core/common/persistence/lock-store.interface.js +2 -0
- package/dist/core/common/persistence/lock-store.interface.js.map +1 -0
- package/dist/core/common/persistence/model-descriptor.interface.d.ts +36 -0
- package/dist/core/common/persistence/model-descriptor.interface.js +2 -0
- package/dist/core/common/persistence/model-descriptor.interface.js.map +1 -0
- package/dist/core/common/persistence/model-metadata.registry.d.ts +14 -0
- package/dist/core/common/persistence/model-metadata.registry.js +194 -0
- package/dist/core/common/persistence/model-metadata.registry.js.map +1 -0
- package/dist/core/common/persistence/mongo/collection-name.d.ts +2 -0
- package/dist/core/common/persistence/mongo/collection-name.js +73 -0
- package/dist/core/common/persistence/mongo/collection-name.js.map +1 -0
- package/dist/core/common/persistence/mongo/declared-schema.view.d.ts +11 -0
- package/dist/core/common/persistence/mongo/declared-schema.view.js +292 -0
- package/dist/core/common/persistence/mongo/declared-schema.view.js.map +1 -0
- package/dist/core/common/persistence/mongo/hex-object-id.d.ts +13 -0
- package/dist/core/common/persistence/mongo/hex-object-id.js +54 -0
- package/dist/core/common/persistence/mongo/hex-object-id.js.map +1 -0
- package/dist/core/common/persistence/mongo/model-declarations.d.ts +35 -0
- package/dist/core/common/persistence/mongo/model-declarations.js +80 -0
- package/dist/core/common/persistence/mongo/model-declarations.js.map +1 -0
- package/dist/core/common/persistence/mongo/mongo-packages.d.ts +15 -0
- package/dist/core/common/persistence/mongo/mongo-packages.js +66 -0
- package/dist/core/common/persistence/mongo/mongo-packages.js.map +1 -0
- package/dist/core/common/persistence/mongo/mongoose-compat.d.ts +22 -0
- package/dist/core/common/persistence/mongo/mongoose-compat.js +65 -0
- package/dist/core/common/persistence/mongo/mongoose-compat.js.map +1 -0
- package/dist/core/common/persistence/mongo/no-mongo-connection.module.d.ts +2 -0
- package/dist/core/common/persistence/mongo/no-mongo-connection.module.js +19 -0
- package/dist/core/common/persistence/mongo/no-mongo-connection.module.js.map +1 -0
- package/dist/core/common/persistence/mongo-lock-store.d.ts +21 -0
- package/dist/core/common/persistence/mongo-lock-store.js +72 -0
- package/dist/core/common/persistence/mongo-lock-store.js.map +1 -0
- package/dist/core/common/persistence/mongoose-data-store.d.ts +33 -0
- package/dist/core/common/persistence/mongoose-data-store.js +187 -0
- package/dist/core/common/persistence/mongoose-data-store.js.map +1 -0
- package/dist/core/common/persistence/neutral-populate.d.ts +6 -0
- package/dist/core/common/persistence/neutral-populate.js +72 -0
- package/dist/core/common/persistence/neutral-populate.js.map +1 -0
- package/dist/core/common/persistence/persisted-model.decorator.d.ts +6 -0
- package/dist/core/common/persistence/persisted-model.decorator.js +24 -0
- package/dist/core/common/persistence/persisted-model.decorator.js.map +1 -0
- package/dist/core/common/persistence/persistence-runtime.registry.d.ts +61 -0
- package/dist/core/common/persistence/persistence-runtime.registry.js +47 -0
- package/dist/core/common/persistence/persistence-runtime.registry.js.map +1 -0
- package/dist/core/common/persistence/persistence.tokens.d.ts +1 -0
- package/dist/core/common/persistence/persistence.tokens.js +4 -0
- package/dist/core/common/persistence/persistence.tokens.js.map +1 -0
- package/dist/core/common/persistence/policies/audit.policy.d.ts +8 -0
- package/dist/core/common/persistence/policies/audit.policy.js +37 -0
- package/dist/core/common/persistence/policies/audit.policy.js.map +1 -0
- package/dist/core/common/persistence/policies/password.policy.d.ts +3 -0
- package/dist/core/common/persistence/policies/password.policy.js +46 -0
- package/dist/core/common/persistence/policies/password.policy.js.map +1 -0
- package/dist/core/common/persistence/policies/role-guard.policy.d.ts +3 -0
- package/dist/core/common/persistence/policies/role-guard.policy.js +46 -0
- package/dist/core/common/persistence/policies/role-guard.policy.js.map +1 -0
- package/dist/core/common/persistence/policies/system-role.policy.d.ts +5 -0
- package/dist/core/common/persistence/policies/system-role.policy.js +46 -0
- package/dist/core/common/persistence/policies/system-role.policy.js.map +1 -0
- package/dist/core/common/persistence/policies/tenant.policy.d.ts +19 -0
- package/dist/core/common/persistence/policies/tenant.policy.js +120 -0
- package/dist/core/common/persistence/policies/tenant.policy.js.map +1 -0
- package/dist/core/common/persistence/routed-model.guard.d.ts +4 -0
- package/dist/core/common/persistence/routed-model.guard.js +73 -0
- package/dist/core/common/persistence/routed-model.guard.js.map +1 -0
- package/dist/core/common/persistence/sql/mysql/mysql-data-store.d.ts +46 -0
- package/dist/core/common/persistence/sql/mysql/mysql-data-store.js +350 -0
- package/dist/core/common/persistence/sql/mysql/mysql-data-store.js.map +1 -0
- package/dist/core/common/persistence/sql/mysql/mysql-executor.d.ts +13 -0
- package/dist/core/common/persistence/sql/mysql/mysql-executor.js +194 -0
- package/dist/core/common/persistence/sql/mysql/mysql-executor.js.map +1 -0
- package/dist/core/common/persistence/sql/mysql/mysql-lock-store.d.ts +11 -0
- package/dist/core/common/persistence/sql/mysql/mysql-lock-store.js +55 -0
- package/dist/core/common/persistence/sql/mysql/mysql-lock-store.js.map +1 -0
- package/dist/core/common/persistence/sql/mysql/mysql-schema.compiler.d.ts +36 -0
- package/dist/core/common/persistence/sql/mysql/mysql-schema.compiler.js +288 -0
- package/dist/core/common/persistence/sql/mysql/mysql-schema.compiler.js.map +1 -0
- package/dist/core/common/persistence/sql/mysql/mysql-schema.migrator.d.ts +19 -0
- package/dist/core/common/persistence/sql/mysql/mysql-schema.migrator.js +328 -0
- package/dist/core/common/persistence/sql/mysql/mysql-schema.migrator.js.map +1 -0
- package/dist/core/common/persistence/sql/mysql/mysql-session.d.ts +13 -0
- package/dist/core/common/persistence/sql/mysql/mysql-session.js +85 -0
- package/dist/core/common/persistence/sql/mysql/mysql-session.js.map +1 -0
- package/dist/core/common/persistence/sql/mysql/mysql-update.compiler.d.ts +9 -0
- package/dist/core/common/persistence/sql/mysql/mysql-update.compiler.js +264 -0
- package/dist/core/common/persistence/sql/mysql/mysql-update.compiler.js.map +1 -0
- package/dist/core/common/persistence/sql/mysql/mysql-where.compiler.d.ts +20 -0
- package/dist/core/common/persistence/sql/mysql/mysql-where.compiler.js +519 -0
- package/dist/core/common/persistence/sql/mysql/mysql-where.compiler.js.map +1 -0
- package/dist/core/common/persistence/sql/postgres/postgres-lock-store.d.ts +11 -0
- package/dist/core/common/persistence/sql/postgres/postgres-lock-store.js +44 -0
- package/dist/core/common/persistence/sql/postgres/postgres-lock-store.js.map +1 -0
- package/dist/core/common/persistence/sql/postgres/postgres-schema.compiler.d.ts +42 -0
- package/dist/core/common/persistence/sql/postgres/postgres-schema.compiler.js +220 -0
- package/dist/core/common/persistence/sql/postgres/postgres-schema.compiler.js.map +1 -0
- package/dist/core/common/persistence/sql/postgres/postgres-schema.migrator.d.ts +12 -0
- package/dist/core/common/persistence/sql/postgres/postgres-schema.migrator.js +315 -0
- package/dist/core/common/persistence/sql/postgres/postgres-schema.migrator.js.map +1 -0
- package/dist/core/common/persistence/sql/postgres/postgres-update.compiler.d.ts +5 -0
- package/dist/core/common/persistence/sql/postgres/postgres-update.compiler.js +225 -0
- package/dist/core/common/persistence/sql/postgres/postgres-update.compiler.js.map +1 -0
- package/dist/core/common/persistence/sql/postgres/postgres-where.compiler.d.ts +13 -0
- package/dist/core/common/persistence/sql/postgres/postgres-where.compiler.js +484 -0
- package/dist/core/common/persistence/sql/postgres/postgres-where.compiler.js.map +1 -0
- package/dist/core/common/persistence/sql/sql-cast.d.ts +2 -0
- package/dist/core/common/persistence/sql/sql-cast.js +194 -0
- package/dist/core/common/persistence/sql/sql-cast.js.map +1 -0
- package/dist/core/common/persistence/sql/sql-data-store.d.ts +79 -0
- package/dist/core/common/persistence/sql/sql-data-store.js +592 -0
- package/dist/core/common/persistence/sql/sql-data-store.js.map +1 -0
- package/dist/core/common/persistence/sql/sql-dialect.d.ts +20 -0
- package/dist/core/common/persistence/sql/sql-dialect.js +38 -0
- package/dist/core/common/persistence/sql/sql-dialect.js.map +1 -0
- package/dist/core/common/persistence/sql/sql-errors.d.ts +17 -0
- package/dist/core/common/persistence/sql/sql-errors.js +25 -0
- package/dist/core/common/persistence/sql/sql-errors.js.map +1 -0
- package/dist/core/common/persistence/sql/sql-executor.factory.d.ts +11 -0
- package/dist/core/common/persistence/sql/sql-executor.factory.js +199 -0
- package/dist/core/common/persistence/sql/sql-executor.factory.js.map +1 -0
- package/dist/core/common/persistence/sql/sql-executor.interface.d.ts +32 -0
- package/dist/core/common/persistence/sql/sql-executor.interface.js +2 -0
- package/dist/core/common/persistence/sql/sql-executor.interface.js.map +1 -0
- package/dist/core/common/persistence/sql/sql-naming.d.ts +15 -0
- package/dist/core/common/persistence/sql/sql-naming.js +90 -0
- package/dist/core/common/persistence/sql/sql-naming.js.map +1 -0
- package/dist/core/common/persistence/sql/sql-schema.shared.d.ts +25 -0
- package/dist/core/common/persistence/sql/sql-schema.shared.js +69 -0
- package/dist/core/common/persistence/sql/sql-schema.shared.js.map +1 -0
- package/dist/core/common/persistence/sql/sql-session.d.ts +6 -0
- package/dist/core/common/persistence/sql/sql-session.js +78 -0
- package/dist/core/common/persistence/sql/sql-session.js.map +1 -0
- package/dist/core/common/persistence/sql/where-shared.d.ts +18 -0
- package/dist/core/common/persistence/sql/where-shared.js +93 -0
- package/dist/core/common/persistence/sql/where-shared.js.map +1 -0
- package/dist/core/common/persistence/store-guards.d.ts +10 -0
- package/dist/core/common/persistence/store-guards.js +49 -0
- package/dist/core/common/persistence/store-guards.js.map +1 -0
- package/dist/core/common/persistence/store-upsert.d.ts +2 -0
- package/dist/core/common/persistence/store-upsert.js +20 -0
- package/dist/core/common/persistence/store-upsert.js.map +1 -0
- package/dist/core/common/persistence/unavailable-store.d.ts +2 -0
- package/dist/core/common/persistence/unavailable-store.js +53 -0
- package/dist/core/common/persistence/unavailable-store.js.map +1 -0
- package/dist/core/common/persistence/unsupported-capability.error.d.ts +3 -0
- package/dist/core/common/persistence/unsupported-capability.error.js +4 -0
- package/dist/core/common/persistence/unsupported-capability.error.js.map +1 -0
- package/dist/core/common/plugins/mongoose-audit-fields.plugin.js +24 -68
- package/dist/core/common/plugins/mongoose-audit-fields.plugin.js.map +1 -1
- package/dist/core/common/plugins/mongoose-id.plugin.js +3 -0
- package/dist/core/common/plugins/mongoose-id.plugin.js.map +1 -1
- package/dist/core/common/plugins/mongoose-password.plugin.d.ts +1 -3
- package/dist/core/common/plugins/mongoose-password.plugin.js +2 -45
- package/dist/core/common/plugins/mongoose-password.plugin.js.map +1 -1
- package/dist/core/common/plugins/mongoose-role-guard.plugin.js +5 -46
- package/dist/core/common/plugins/mongoose-role-guard.plugin.js.map +1 -1
- package/dist/core/common/plugins/mongoose-system-role.plugin.js +2 -43
- package/dist/core/common/plugins/mongoose-system-role.plugin.js.map +1 -1
- package/dist/core/common/plugins/mongoose-tenant.plugin.js +10 -70
- package/dist/core/common/plugins/mongoose-tenant.plugin.js.map +1 -1
- package/dist/core/common/scalars/upload.scalar.js +1 -1
- package/dist/core/common/scalars/upload.scalar.js.map +1 -1
- package/dist/core/common/services/core-cron-jobs.initializer.js +1 -1
- package/dist/core/common/services/core-cron-jobs.initializer.js.map +1 -1
- package/dist/core/common/services/core-cron-jobs.service.d.ts +1 -0
- package/dist/core/common/services/core-cron-jobs.service.js +23 -14
- package/dist/core/common/services/core-cron-jobs.service.js.map +1 -1
- package/dist/core/common/services/crud.service.d.ts +4 -1
- package/dist/core/common/services/crud.service.js +132 -23
- package/dist/core/common/services/crud.service.js.map +1 -1
- package/dist/core/common/services/model-doc.service.js +1 -1
- package/dist/core/common/services/model-doc.service.js.map +1 -1
- package/dist/core/common/services/module.service.d.ts +9 -2
- package/dist/core/common/services/module.service.js +51 -6
- package/dist/core/common/services/module.service.js.map +1 -1
- package/dist/core/common/types/field-selection.type.d.ts +1 -1
- package/dist/core/common/types/id.type.d.ts +4 -4
- package/dist/core/common/types/object-id-like.type.d.ts +3 -0
- package/dist/core/common/types/object-id-like.type.js +2 -0
- package/dist/core/common/types/object-id-like.type.js.map +1 -0
- package/dist/core/common/types/populate-config.type.d.ts +1 -1
- package/dist/core/common/types/string-or-object-id.type.d.ts +2 -2
- package/dist/core/modules/ai/core-ai.constants.d.ts +4 -0
- package/dist/core/modules/ai/core-ai.constants.js +4 -0
- package/dist/core/modules/ai/core-ai.constants.js.map +1 -1
- package/dist/core/modules/ai/core-ai.module.js +21 -17
- package/dist/core/modules/ai/core-ai.module.js.map +1 -1
- package/dist/core/modules/ai/models/core-ai-budget-limit.model.d.ts +2 -92
- package/dist/core/modules/ai/models/core-ai-budget-limit.model.js +1 -1
- package/dist/core/modules/ai/models/core-ai-budget-limit.model.js.map +1 -1
- package/dist/core/modules/ai/models/core-ai-connection-preference.model.d.ts +2 -87
- package/dist/core/modules/ai/models/core-ai-connection-preference.model.js +1 -1
- package/dist/core/modules/ai/models/core-ai-connection-preference.model.js.map +1 -1
- package/dist/core/modules/ai/models/core-ai-connection.model.d.ts +2 -177
- package/dist/core/modules/ai/models/core-ai-connection.model.js +1 -1
- package/dist/core/modules/ai/models/core-ai-connection.model.js.map +1 -1
- package/dist/core/modules/ai/models/core-ai-conversation.model.d.ts +2 -92
- package/dist/core/modules/ai/models/core-ai-conversation.model.js +3 -4
- package/dist/core/modules/ai/models/core-ai-conversation.model.js.map +1 -1
- package/dist/core/modules/ai/models/core-ai-interaction.model.d.ts +2 -120
- package/dist/core/modules/ai/models/core-ai-interaction.model.js +2 -3
- package/dist/core/modules/ai/models/core-ai-interaction.model.js.map +1 -1
- package/dist/core/modules/ai/models/core-ai-mcp-oauth.models.d.ts +3 -0
- package/dist/core/modules/ai/models/core-ai-mcp-oauth.models.js +21 -0
- package/dist/core/modules/ai/models/core-ai-mcp-oauth.models.js.map +1 -0
- package/dist/core/modules/ai/models/core-ai-mode.model.d.ts +2 -102
- package/dist/core/modules/ai/models/core-ai-mode.model.js +1 -1
- package/dist/core/modules/ai/models/core-ai-mode.model.js.map +1 -1
- package/dist/core/modules/ai/models/core-ai-prompt-hint.model.d.ts +2 -97
- package/dist/core/modules/ai/models/core-ai-prompt-hint.model.js +1 -1
- package/dist/core/modules/ai/models/core-ai-prompt-hint.model.js.map +1 -1
- package/dist/core/modules/ai/models/core-ai-prompt.model.d.ts +2 -112
- package/dist/core/modules/ai/models/core-ai-prompt.model.js +1 -1
- package/dist/core/modules/ai/models/core-ai-prompt.model.js.map +1 -1
- package/dist/core/modules/ai/models/core-ai-slot.model.d.ts +2 -112
- package/dist/core/modules/ai/models/core-ai-slot.model.js +1 -1
- package/dist/core/modules/ai/models/core-ai-slot.model.js.map +1 -1
- package/dist/core/modules/ai/models/core-ai-tool-grant.model.d.ts +2 -97
- package/dist/core/modules/ai/models/core-ai-tool-grant.model.js +1 -1
- package/dist/core/modules/ai/models/core-ai-tool-grant.model.js.map +1 -1
- package/dist/core/modules/ai/models/core-ai-tool-policy.model.d.ts +2 -103
- package/dist/core/modules/ai/models/core-ai-tool-policy.model.js +1 -1
- package/dist/core/modules/ai/models/core-ai-tool-policy.model.js.map +1 -1
- package/dist/core/modules/ai/services/core-ai-budget.service.d.ts +3 -1
- package/dist/core/modules/ai/services/core-ai-budget.service.js +15 -5
- package/dist/core/modules/ai/services/core-ai-budget.service.js.map +1 -1
- package/dist/core/modules/ai/services/core-ai-connection-preference.service.d.ts +1 -1
- package/dist/core/modules/ai/services/core-ai-connection-preference.service.js +6 -10
- package/dist/core/modules/ai/services/core-ai-connection-preference.service.js.map +1 -1
- package/dist/core/modules/ai/services/core-ai-connection.service.d.ts +1 -1
- package/dist/core/modules/ai/services/core-ai-connection.service.js +20 -42
- package/dist/core/modules/ai/services/core-ai-connection.service.js.map +1 -1
- package/dist/core/modules/ai/services/core-ai-conversation.service.d.ts +1 -1
- package/dist/core/modules/ai/services/core-ai-conversation.service.js +28 -29
- package/dist/core/modules/ai/services/core-ai-conversation.service.js.map +1 -1
- package/dist/core/modules/ai/services/core-ai-interaction.service.d.ts +1 -1
- package/dist/core/modules/ai/services/core-ai-interaction.service.js +3 -4
- package/dist/core/modules/ai/services/core-ai-interaction.service.js.map +1 -1
- package/dist/core/modules/ai/services/core-ai-mcp-oauth.service.d.ts +8 -0
- package/dist/core/modules/ai/services/core-ai-mcp-oauth.service.js +70 -18
- package/dist/core/modules/ai/services/core-ai-mcp-oauth.service.js.map +1 -1
- package/dist/core/modules/ai/services/core-ai-mode.service.d.ts +1 -1
- package/dist/core/modules/ai/services/core-ai-mode.service.js +3 -7
- package/dist/core/modules/ai/services/core-ai-mode.service.js.map +1 -1
- package/dist/core/modules/ai/services/core-ai-prompt-hint.service.d.ts +8 -1
- package/dist/core/modules/ai/services/core-ai-prompt-hint.service.js +32 -26
- package/dist/core/modules/ai/services/core-ai-prompt-hint.service.js.map +1 -1
- package/dist/core/modules/ai/services/core-ai-prompt.service.d.ts +1 -1
- package/dist/core/modules/ai/services/core-ai-prompt.service.js +10 -13
- package/dist/core/modules/ai/services/core-ai-prompt.service.js.map +1 -1
- package/dist/core/modules/ai/services/core-ai-slot.service.d.ts +1 -1
- package/dist/core/modules/ai/services/core-ai-slot.service.js +14 -25
- package/dist/core/modules/ai/services/core-ai-slot.service.js.map +1 -1
- package/dist/core/modules/ai/services/core-ai-tool-grant.service.d.ts +1 -1
- package/dist/core/modules/ai/services/core-ai-tool-grant.service.js +6 -18
- package/dist/core/modules/ai/services/core-ai-tool-grant.service.js.map +1 -1
- package/dist/core/modules/ai/services/core-ai-tool-policy.service.d.ts +1 -1
- package/dist/core/modules/ai/services/core-ai-tool-policy.service.js +4 -8
- package/dist/core/modules/ai/services/core-ai-tool-policy.service.js.map +1 -1
- package/dist/core/modules/api-token/core-api-token.model.js +1 -1
- package/dist/core/modules/api-token/core-api-token.model.js.map +1 -1
- package/dist/core/modules/api-token/core-api-token.module.js +3 -2
- package/dist/core/modules/api-token/core-api-token.module.js.map +1 -1
- package/dist/core/modules/api-token/core-api-token.service.d.ts +8 -2
- package/dist/core/modules/api-token/core-api-token.service.js +106 -39
- package/dist/core/modules/api-token/core-api-token.service.js.map +1 -1
- package/dist/core/modules/auth/core-auth.module.js +2 -0
- package/dist/core/modules/auth/core-auth.module.js.map +1 -1
- package/dist/core/modules/auth/guards/legacy-auth-rate-limit.guard.js +1 -2
- package/dist/core/modules/auth/guards/legacy-auth-rate-limit.guard.js.map +1 -1
- package/dist/core/modules/auth/guards/role-guard.token.d.ts +1 -0
- package/dist/core/modules/auth/guards/role-guard.token.js +2 -0
- package/dist/core/modules/auth/guards/role-guard.token.js.map +1 -0
- package/dist/core/modules/auth/services/core-auth.service.js +4 -2
- package/dist/core/modules/auth/services/core-auth.service.js.map +1 -1
- package/dist/core/modules/better-auth/better-auth-sql.helper.d.ts +6 -0
- package/dist/core/modules/better-auth/better-auth-sql.helper.js +113 -0
- package/dist/core/modules/better-auth/better-auth-sql.helper.js.map +1 -0
- package/dist/core/modules/better-auth/better-auth-token.service.d.ts +3 -1
- package/dist/core/modules/better-auth/better-auth-token.service.js +15 -24
- package/dist/core/modules/better-auth/better-auth-token.service.js.map +1 -1
- package/dist/core/modules/better-auth/better-auth.config.d.ts +7 -0
- package/dist/core/modules/better-auth/better-auth.config.js +16 -5
- package/dist/core/modules/better-auth/better-auth.config.js.map +1 -1
- package/dist/core/modules/better-auth/better-auth.types.d.ts +1 -1
- package/dist/core/modules/better-auth/core-better-auth-api.middleware.d.ts +1 -0
- package/dist/core/modules/better-auth/core-better-auth-api.middleware.js +6 -1
- package/dist/core/modules/better-auth/core-better-auth-api.middleware.js.map +1 -1
- package/dist/core/modules/better-auth/core-better-auth-challenge.service.js +30 -15
- package/dist/core/modules/better-auth/core-better-auth-challenge.service.js.map +1 -1
- package/dist/core/modules/better-auth/core-better-auth-mongo.users.d.ts +10 -0
- package/dist/core/modules/better-auth/core-better-auth-mongo.users.js +24 -0
- package/dist/core/modules/better-auth/core-better-auth-mongo.users.js.map +1 -0
- package/dist/core/modules/better-auth/core-better-auth-sql.registry.d.ts +3 -0
- package/dist/core/modules/better-auth/core-better-auth-sql.registry.js +8 -0
- package/dist/core/modules/better-auth/core-better-auth-sql.registry.js.map +1 -0
- package/dist/core/modules/better-auth/core-better-auth-sql.store.d.ts +71 -0
- package/dist/core/modules/better-auth/core-better-auth-sql.store.js +190 -0
- package/dist/core/modules/better-auth/core-better-auth-sql.store.js.map +1 -0
- package/dist/core/modules/better-auth/core-better-auth-user.mapper.d.ts +24 -1
- package/dist/core/modules/better-auth/core-better-auth-user.mapper.js +308 -32
- package/dist/core/modules/better-auth/core-better-auth-user.mapper.js.map +1 -1
- package/dist/core/modules/better-auth/core-better-auth.module.d.ts +2 -0
- package/dist/core/modules/better-auth/core-better-auth.module.js +54 -32
- package/dist/core/modules/better-auth/core-better-auth.module.js.map +1 -1
- package/dist/core/modules/better-auth/core-better-auth.service.d.ts +7 -2
- package/dist/core/modules/better-auth/core-better-auth.service.js +61 -9
- package/dist/core/modules/better-auth/core-better-auth.service.js.map +1 -1
- package/dist/core/modules/file/core-file-info.model.d.ts +1 -2
- package/dist/core/modules/file/core-file-info.model.js +2 -2
- package/dist/core/modules/file/core-file-info.model.js.map +1 -1
- package/dist/core/modules/file/core-file.service.d.ts +5 -3
- package/dist/core/modules/file/core-file.service.js +16 -9
- package/dist/core/modules/file/core-file.service.js.map +1 -1
- package/dist/core/modules/file/file-metadata.helper.d.ts +1 -1
- package/dist/core/modules/file/file-metadata.helper.js +2 -2
- package/dist/core/modules/file/file-metadata.helper.js.map +1 -1
- package/dist/core/modules/file/file-metadata.models.d.ts +35 -0
- package/dist/core/modules/file/file-metadata.models.js +20 -0
- package/dist/core/modules/file/file-metadata.models.js.map +1 -0
- package/dist/core/modules/file/file-metadata.store.d.ts +6 -0
- package/dist/core/modules/file/file-metadata.store.js +77 -0
- package/dist/core/modules/file/file-metadata.store.js.map +1 -0
- package/dist/core/modules/file/file-storage.helper.d.ts +1 -0
- package/dist/core/modules/file/file-storage.helper.js +34 -0
- package/dist/core/modules/file/file-storage.helper.js.map +1 -1
- package/dist/core/modules/file/filesystem-file.helper.d.ts +1 -1
- package/dist/core/modules/file/filesystem-file.helper.js +4 -4
- package/dist/core/modules/file/filesystem-file.helper.js.map +1 -1
- package/dist/core/modules/file/s3-file.helper.d.ts +1 -1
- package/dist/core/modules/file/s3-file.helper.js +5 -5
- package/dist/core/modules/file/s3-file.helper.js.map +1 -1
- package/dist/core/modules/health-check/core-health-check.module.js +12 -2
- package/dist/core/modules/health-check/core-health-check.module.js.map +1 -1
- package/dist/core/modules/health-check/core-health-check.service.d.ts +4 -3
- package/dist/core/modules/health-check/core-health-check.service.js +26 -5
- package/dist/core/modules/health-check/core-health-check.service.js.map +1 -1
- package/dist/core/modules/hub/core-hub.controller.d.ts +1 -0
- package/dist/core/modules/hub/core-hub.controller.js +10 -0
- package/dist/core/modules/hub/core-hub.controller.js.map +1 -1
- package/dist/core/modules/hub/core-hub.service.js +1 -1
- package/dist/core/modules/hub/core-hub.service.js.map +1 -1
- package/dist/core/modules/hub/helpers/hub-client-js.helper.js +23 -0
- package/dist/core/modules/hub/helpers/hub-client-js.helper.js.map +1 -1
- package/dist/core/modules/hub/hub-action-messages.d.ts +2 -0
- package/dist/core/modules/hub/hub-action-messages.js +2 -0
- package/dist/core/modules/hub/hub-action-messages.js.map +1 -1
- package/dist/core/modules/hub/hub-nav.js +1 -0
- package/dist/core/modules/hub/hub-nav.js.map +1 -1
- package/dist/core/modules/hub/interfaces/hub-panels.interface.d.ts +17 -1
- package/dist/core/modules/hub/services/core-hub-db.service.d.ts +6 -1
- package/dist/core/modules/hub/services/core-hub-db.service.js +16 -14
- package/dist/core/modules/hub/services/core-hub-db.service.js.map +1 -1
- package/dist/core/modules/hub/services/core-hub-migrations.service.d.ts +5 -0
- package/dist/core/modules/hub/services/core-hub-migrations.service.js +74 -1
- package/dist/core/modules/hub/services/core-hub-migrations.service.js.map +1 -1
- package/dist/core/modules/hub/services/core-hub-sources.service.d.ts +2 -1
- package/dist/core/modules/hub/services/core-hub-sources.service.js +32 -0
- package/dist/core/modules/hub/services/core-hub-sources.service.js.map +1 -1
- package/dist/core/modules/hub/services/hub-query-profiler.service.js +1 -1
- package/dist/core/modules/hub/services/hub-query-profiler.service.js.map +1 -1
- package/dist/core/modules/migrate/cli/migrate-cli.d.ts +2 -0
- package/dist/core/modules/migrate/cli/migrate-cli.js +35 -1
- package/dist/core/modules/migrate/cli/migrate-cli.js.map +1 -1
- package/dist/core/modules/migrate/index.d.ts +3 -0
- package/dist/core/modules/migrate/index.js +3 -0
- package/dist/core/modules/migrate/index.js.map +1 -1
- package/dist/core/modules/migrate/migration-runner.d.ts +2 -2
- package/dist/core/modules/migrate/migration-runner.js.map +1 -1
- package/dist/core/modules/migrate/migration-state-store.interface.d.ts +16 -0
- package/dist/core/modules/migrate/migration-state-store.interface.js +2 -0
- package/dist/core/modules/migrate/migration-state-store.interface.js.map +1 -0
- package/dist/core/modules/migrate/migration.helper.d.ts +3 -2
- package/dist/core/modules/migrate/migration.helper.js +21 -6
- package/dist/core/modules/migrate/migration.helper.js.map +1 -1
- package/dist/core/modules/migrate/mongo-state-store.d.ts +5 -12
- package/dist/core/modules/migrate/mongo-state-store.js +30 -24
- package/dist/core/modules/migrate/mongo-state-store.js.map +1 -1
- package/dist/core/modules/migrate/sql-migration.helper.d.ts +4 -0
- package/dist/core/modules/migrate/sql-migration.helper.js +34 -0
- package/dist/core/modules/migrate/sql-migration.helper.js.map +1 -0
- package/dist/core/modules/migrate/sql-state-store.d.ts +24 -0
- package/dist/core/modules/migrate/sql-state-store.js +129 -0
- package/dist/core/modules/migrate/sql-state-store.js.map +1 -0
- package/dist/core/modules/system-setup/core-system-setup.service.d.ts +8 -0
- package/dist/core/modules/system-setup/core-system-setup.service.js +41 -25
- package/dist/core/modules/system-setup/core-system-setup.service.js.map +1 -1
- package/dist/core/modules/tenant/core-tenant-member.model.js +1 -1
- package/dist/core/modules/tenant/core-tenant-member.model.js.map +1 -1
- package/dist/core/modules/tenant/core-tenant-member.store.d.ts +2 -0
- package/dist/core/modules/tenant/core-tenant-member.store.js +6 -0
- package/dist/core/modules/tenant/core-tenant-member.store.js.map +1 -0
- package/dist/core/modules/tenant/core-tenant.guard.d.ts +8 -3
- package/dist/core/modules/tenant/core-tenant.guard.js +57 -28
- package/dist/core/modules/tenant/core-tenant.guard.js.map +1 -1
- package/dist/core/modules/tenant/core-tenant.module.js +3 -2
- package/dist/core/modules/tenant/core-tenant.module.js.map +1 -1
- package/dist/core/modules/tenant/core-tenant.service.d.ts +3 -1
- package/dist/core/modules/tenant/core-tenant.service.js +48 -28
- package/dist/core/modules/tenant/core-tenant.service.js.map +1 -1
- package/dist/core/modules/tus/core-tus.service.d.ts +1 -1
- package/dist/core/modules/tus/core-tus.service.js +8 -7
- package/dist/core/modules/tus/core-tus.service.js.map +1 -1
- package/dist/core/modules/tus/tus.module.js +1 -1
- package/dist/core/modules/tus/tus.module.js.map +1 -1
- package/dist/core/modules/user/core-user.model.d.ts +1 -1
- package/dist/core/modules/user/core-user.model.js +1 -1
- package/dist/core/modules/user/core-user.model.js.map +1 -1
- package/dist/core/modules/user/core-user.service.d.ts +3 -1
- package/dist/core/modules/user/core-user.service.js +71 -16
- package/dist/core/modules/user/core-user.service.js.map +1 -1
- package/dist/core.module.js +39 -5
- package/dist/core.module.js.map +1 -1
- package/dist/index.d.ts +26 -0
- package/dist/index.js +26 -0
- package/dist/index.js.map +1 -1
- package/dist/server/common/models/persistence.model.d.ts +1 -1
- package/dist/server/common/models/persistence.model.js +3 -3
- package/dist/server/common/models/persistence.model.js.map +1 -1
- package/dist/server/modules/file/file-info.model.d.ts +1 -77
- package/dist/server/modules/file/file-info.model.js +1 -1
- package/dist/server/modules/file/file-info.model.js.map +1 -1
- package/dist/server/modules/file/file.service.js +1 -1
- package/dist/server/modules/file/file.service.js.map +1 -1
- package/dist/server/modules/user/user.model.d.ts +2 -186
- package/dist/server/modules/user/user.model.js +4 -5
- package/dist/server/modules/user/user.model.js.map +1 -1
- package/dist/server/modules/user/user.module.js +4 -3
- package/dist/server/modules/user/user.module.js.map +1 -1
- package/dist/server/modules/user/user.service.d.ts +1 -1
- package/dist/server/modules/user/user.service.js +5 -8
- package/dist/server/modules/user/user.service.js.map +1 -1
- package/dist/test/test.helper.js +2 -2
- package/dist/test/test.helper.js.map +1 -1
- package/dist/types/graphql-upload.d.ts +10 -7
- package/docs/REQUEST-LIFECYCLE.md +6 -3
- package/docs/choosing-a-database.md +107 -0
- package/docs/native-driver-security.md +29 -0
- package/docs/security-overrides.md +15 -6
- package/migration-guides/12.0.x-to-12.1.x.md +255 -0
- package/package.json +75 -29
- package/src/core/common/decorators/unified-field.decorator.ts +11 -1
- package/src/core/common/filters/mongoose-cast-error.filter.ts +12 -6
- package/src/core/common/helpers/db.helper.ts +40 -25
- package/src/core/common/helpers/decorator.helper.ts +1 -1
- package/src/core/common/helpers/filter.helper.ts +2 -1
- package/src/core/common/helpers/gridfs.helper.ts +28 -9
- package/src/core/common/helpers/id.helper.ts +21 -4
- package/src/core/common/helpers/model.helper.ts +5 -6
- package/src/core/common/helpers/service.helper.ts +3 -3
- package/src/core/common/interfaces/server-options.interface.ts +118 -10
- package/src/core/common/interfaces/service-options.interface.ts +2 -2
- package/src/core/common/models/core-persistence.model.ts +3 -3
- package/src/core/common/persistence/core-persistence.lifecycle.ts +47 -0
- package/src/core/common/persistence/core-persistence.module.ts +109 -0
- package/src/core/common/persistence/data-source.config.ts +271 -0
- package/src/core/common/persistence/data-source.runtime.ts +351 -0
- package/src/core/common/persistence/data-store.interface.ts +155 -0
- package/src/core/common/persistence/expiry-sweep.ts +105 -0
- package/src/core/common/persistence/id-format.ts +43 -0
- package/src/core/common/persistence/infrastructure-locks.ts +66 -0
- package/src/core/common/persistence/inject-store.decorator.ts +16 -0
- package/src/core/common/persistence/lock-store.interface.ts +17 -0
- package/src/core/common/persistence/model-descriptor.interface.ts +90 -0
- package/src/core/common/persistence/model-metadata.registry.ts +285 -0
- package/src/core/common/persistence/mongo/collection-name.ts +87 -0
- package/src/core/common/persistence/mongo/declared-schema.view.ts +378 -0
- package/src/core/common/persistence/mongo/hex-object-id.ts +75 -0
- package/src/core/common/persistence/mongo/model-declarations.ts +135 -0
- package/src/core/common/persistence/mongo/mongo-packages.ts +130 -0
- package/src/core/common/persistence/mongo/mongoose-compat.ts +129 -0
- package/src/core/common/persistence/mongo/no-mongo-connection.module.ts +18 -0
- package/src/core/common/persistence/mongo-lock-store.ts +121 -0
- package/src/core/common/persistence/mongoose-data-store.ts +232 -0
- package/src/core/common/persistence/neutral-populate.ts +98 -0
- package/src/core/common/persistence/persisted-model.decorator.ts +61 -0
- package/src/core/common/persistence/persistence-runtime.registry.ts +152 -0
- package/src/core/common/persistence/persistence.tokens.ts +9 -0
- package/src/core/common/persistence/policies/audit.policy.ts +80 -0
- package/src/core/common/persistence/policies/password.policy.ts +69 -0
- package/src/core/common/persistence/policies/role-guard.policy.ts +74 -0
- package/src/core/common/persistence/policies/system-role.policy.ts +90 -0
- package/src/core/common/persistence/policies/tenant.policy.ts +245 -0
- package/src/core/common/persistence/routed-model.guard.ts +107 -0
- package/src/core/common/persistence/sql/mysql/mysql-data-store.ts +503 -0
- package/src/core/common/persistence/sql/mysql/mysql-executor.ts +281 -0
- package/src/core/common/persistence/sql/mysql/mysql-lock-store.ts +87 -0
- package/src/core/common/persistence/sql/mysql/mysql-schema.compiler.ts +424 -0
- package/src/core/common/persistence/sql/mysql/mysql-schema.migrator.ts +453 -0
- package/src/core/common/persistence/sql/mysql/mysql-session.ts +131 -0
- package/src/core/common/persistence/sql/mysql/mysql-update.compiler.ts +379 -0
- package/src/core/common/persistence/sql/mysql/mysql-where.compiler.ts +686 -0
- package/src/core/common/persistence/sql/postgres/postgres-lock-store.ts +76 -0
- package/src/core/common/persistence/sql/postgres/postgres-schema.compiler.ts +328 -0
- package/src/core/common/persistence/sql/postgres/postgres-schema.migrator.ts +448 -0
- package/src/core/common/persistence/sql/postgres/postgres-update.compiler.ts +310 -0
- package/src/core/common/persistence/sql/postgres/postgres-where.compiler.ts +638 -0
- package/src/core/common/persistence/sql/sql-cast.ts +227 -0
- package/src/core/common/persistence/sql/sql-data-store.ts +762 -0
- package/src/core/common/persistence/sql/sql-dialect.ts +85 -0
- package/src/core/common/persistence/sql/sql-errors.ts +49 -0
- package/src/core/common/persistence/sql/sql-executor.factory.ts +282 -0
- package/src/core/common/persistence/sql/sql-executor.interface.ts +57 -0
- package/src/core/common/persistence/sql/sql-naming.ts +133 -0
- package/src/core/common/persistence/sql/sql-schema.shared.ts +105 -0
- package/src/core/common/persistence/sql/sql-session.ts +158 -0
- package/src/core/common/persistence/sql/where-shared.ts +118 -0
- package/src/core/common/persistence/store-guards.ts +73 -0
- package/src/core/common/persistence/store-upsert.ts +36 -0
- package/src/core/common/persistence/unavailable-store.ts +63 -0
- package/src/core/common/persistence/unsupported-capability.error.ts +7 -0
- package/src/core/common/plugins/mongoose-audit-fields.plugin.ts +33 -74
- package/src/core/common/plugins/mongoose-id.plugin.ts +9 -0
- package/src/core/common/plugins/mongoose-password.plugin.ts +6 -62
- package/src/core/common/plugins/mongoose-role-guard.plugin.ts +11 -63
- package/src/core/common/plugins/mongoose-system-role.plugin.ts +7 -78
- package/src/core/common/plugins/mongoose-tenant.plugin.ts +23 -144
- package/src/core/common/scalars/upload.scalar.ts +8 -3
- package/src/core/common/services/core-cron-jobs.initializer.ts +1 -1
- package/src/core/common/services/core-cron-jobs.service.ts +33 -22
- package/src/core/common/services/crud.service.ts +166 -35
- package/src/core/common/services/model-doc.service.ts +1 -1
- package/src/core/common/services/module.service.ts +78 -6
- package/src/core/common/types/field-selection.type.ts +1 -1
- package/src/core/common/types/id.type.ts +2 -2
- package/src/core/common/types/object-id-like.type.ts +11 -0
- package/src/core/common/types/populate-config.type.ts +1 -1
- package/src/core/common/types/string-or-object-id.type.ts +2 -2
- package/src/core/modules/ai/README.md +15 -2
- package/src/core/modules/ai/core-ai.constants.ts +10 -0
- package/src/core/modules/ai/core-ai.module.ts +32 -17
- package/src/core/modules/ai/models/core-ai-budget-limit.model.ts +2 -2
- package/src/core/modules/ai/models/core-ai-connection-preference.model.ts +2 -2
- package/src/core/modules/ai/models/core-ai-connection.model.ts +2 -2
- package/src/core/modules/ai/models/core-ai-conversation.model.ts +8 -4
- package/src/core/modules/ai/models/core-ai-interaction.model.ts +3 -3
- package/src/core/modules/ai/models/core-ai-mcp-oauth.models.ts +46 -0
- package/src/core/modules/ai/models/core-ai-mode.model.ts +2 -2
- package/src/core/modules/ai/models/core-ai-prompt-hint.model.ts +2 -2
- package/src/core/modules/ai/models/core-ai-prompt.model.ts +2 -2
- package/src/core/modules/ai/models/core-ai-slot.model.ts +2 -2
- package/src/core/modules/ai/models/core-ai-tool-grant.model.ts +2 -2
- package/src/core/modules/ai/models/core-ai-tool-policy.model.ts +2 -2
- package/src/core/modules/ai/services/core-ai-budget.service.ts +22 -4
- package/src/core/modules/ai/services/core-ai-connection-preference.service.ts +6 -13
- package/src/core/modules/ai/services/core-ai-connection.service.ts +34 -44
- package/src/core/modules/ai/services/core-ai-conversation.service.ts +31 -29
- package/src/core/modules/ai/services/core-ai-interaction.service.ts +3 -3
- package/src/core/modules/ai/services/core-ai-mcp-oauth.service.ts +93 -20
- package/src/core/modules/ai/services/core-ai-mode.service.ts +3 -6
- package/src/core/modules/ai/services/core-ai-prompt-hint.service.ts +43 -26
- package/src/core/modules/ai/services/core-ai-prompt.service.ts +15 -12
- package/src/core/modules/ai/services/core-ai-slot.service.ts +20 -24
- package/src/core/modules/ai/services/core-ai-tool-grant.service.ts +17 -27
- package/src/core/modules/ai/services/core-ai-tool-policy.service.ts +7 -10
- package/src/core/modules/api-token/core-api-token.model.ts +1 -1
- package/src/core/modules/api-token/core-api-token.module.ts +4 -2
- package/src/core/modules/api-token/core-api-token.service.ts +118 -43
- package/src/core/modules/auth/core-auth.module.ts +2 -0
- package/src/core/modules/auth/guards/legacy-auth-rate-limit.guard.ts +4 -3
- package/src/core/modules/auth/guards/role-guard.token.ts +7 -0
- package/src/core/modules/auth/services/core-auth.service.ts +16 -2
- package/src/core/modules/better-auth/INTEGRATION-CHECKLIST.md +1 -1
- package/src/core/modules/better-auth/README.md +10 -1
- package/src/core/modules/better-auth/better-auth-sql.helper.ts +191 -0
- package/src/core/modules/better-auth/better-auth-token.service.ts +26 -35
- package/src/core/modules/better-auth/better-auth.config.ts +43 -7
- package/src/core/modules/better-auth/better-auth.types.ts +1 -1
- package/src/core/modules/better-auth/core-better-auth-api.middleware.ts +13 -1
- package/src/core/modules/better-auth/core-better-auth-challenge.service.ts +36 -18
- package/src/core/modules/better-auth/core-better-auth-mongo.users.ts +35 -0
- package/src/core/modules/better-auth/core-better-auth-sql.registry.ts +20 -0
- package/src/core/modules/better-auth/core-better-auth-sql.store.ts +309 -0
- package/src/core/modules/better-auth/core-better-auth-user.mapper.ts +418 -40
- package/src/core/modules/better-auth/core-better-auth.module.ts +71 -35
- package/src/core/modules/better-auth/core-better-auth.service.ts +81 -12
- package/src/core/modules/file/README.md +16 -3
- package/src/core/modules/file/core-file-info.model.ts +2 -2
- package/src/core/modules/file/core-file.service.ts +27 -18
- package/src/core/modules/file/file-metadata.helper.ts +7 -3
- package/src/core/modules/file/file-metadata.models.ts +44 -0
- package/src/core/modules/file/file-metadata.store.ts +109 -0
- package/src/core/modules/file/file-storage.helper.ts +47 -2
- package/src/core/modules/file/filesystem-file.helper.ts +11 -8
- package/src/core/modules/file/s3-file.helper.ts +11 -7
- package/src/core/modules/health-check/core-health-check.module.ts +16 -2
- package/src/core/modules/health-check/core-health-check.service.ts +25 -3
- package/src/core/modules/hub/README.md +20 -11
- package/src/core/modules/hub/core-hub.controller.ts +5 -0
- package/src/core/modules/hub/core-hub.service.ts +1 -1
- package/src/core/modules/hub/helpers/hub-client-js.helper.ts +23 -0
- package/src/core/modules/hub/hub-action-messages.ts +6 -0
- package/src/core/modules/hub/hub-nav.ts +1 -0
- package/src/core/modules/hub/interfaces/hub-panels.interface.ts +8 -1
- package/src/core/modules/hub/services/core-hub-db.service.ts +35 -17
- package/src/core/modules/hub/services/core-hub-migrations.service.ts +96 -2
- package/src/core/modules/hub/services/core-hub-sources.service.ts +47 -1
- package/src/core/modules/hub/services/hub-query-profiler.service.ts +1 -1
- package/src/core/modules/migrate/README.md +54 -0
- package/src/core/modules/migrate/cli/migrate-cli.ts +44 -3
- package/src/core/modules/migrate/index.ts +3 -0
- package/src/core/modules/migrate/migration-runner.ts +3 -2
- package/src/core/modules/migrate/migration-state-store.interface.ts +24 -0
- package/src/core/modules/migrate/migration.helper.ts +35 -10
- package/src/core/modules/migrate/mongo-state-store.ts +64 -65
- package/src/core/modules/migrate/sql-migration.helper.ts +48 -0
- package/src/core/modules/migrate/sql-state-store.ts +198 -0
- package/src/core/modules/system-setup/README.md +14 -2
- package/src/core/modules/system-setup/core-system-setup.service.ts +77 -45
- package/src/core/modules/tenant/README.md +9 -2
- package/src/core/modules/tenant/core-tenant-member.model.ts +1 -1
- package/src/core/modules/tenant/core-tenant-member.store.ts +13 -0
- package/src/core/modules/tenant/core-tenant.guard.ts +77 -24
- package/src/core/modules/tenant/core-tenant.module.ts +6 -3
- package/src/core/modules/tenant/core-tenant.service.ts +59 -42
- package/src/core/modules/tus/core-tus.service.ts +11 -12
- package/src/core/modules/tus/tus.module.ts +1 -1
- package/src/core/modules/user/core-user.model.ts +2 -2
- package/src/core/modules/user/core-user.service.ts +98 -20
- package/src/core.module.ts +60 -5
- package/src/index.ts +26 -0
- package/src/server/common/models/persistence.model.ts +4 -4
- package/src/server/modules/file/file-info.model.ts +1 -1
- package/src/server/modules/file/file.service.ts +1 -1
- package/src/server/modules/user/user.model.ts +10 -5
- package/src/server/modules/user/user.module.ts +9 -3
- package/src/server/modules/user/user.service.ts +9 -11
- package/src/test/test.helper.ts +2 -2
- package/src/types/graphql-upload.d.ts +10 -7
package/CLAUDE.md
CHANGED
|
@@ -107,6 +107,15 @@ compatible with either downstream layout:
|
|
|
107
107
|
other entry on that list, was never imported by framework code — only by the
|
|
108
108
|
pre-commit hook's `extras/sync-version.ts` — and left together with `husky`
|
|
109
109
|
in 11.41.8; its list entry is now inert.
|
|
110
|
+
**Since 12.1.0 `mongoose`, `@nestjs/mongoose` and `mongodb` are OPTIONAL peers** (an npm-mode project on
|
|
111
|
+
PostgreSQL alone installs none of them): a vendor-mode project that keeps data in MongoDB must declare them
|
|
112
|
+
itself — the CLI's vendoring step has to add them for a MongoDB project (lt CLI ticket of the db-agnostic
|
|
113
|
+
epic). **Every vendor project — on whatever database — declares the SQL packages the core names in a literal
|
|
114
|
+
`import()`: `pg` (with `@types/pg`), `mysql2`, `typeorm`, `kysely`, `drizzle-orm`** (at least as `devDependencies`): the vendored core
|
|
115
|
+
is the project's own source, and `tsc` fails with TS2307 on a dynamic `import()` of a missing package. A SQL vendor
|
|
116
|
+
project also keeps the three MongoDB packages as `devDependencies`: the
|
|
117
|
+
vendored core is the project's own source and imports their TYPES (`import type { Connection } from
|
|
118
|
+
'mongoose'`), so its `tsc` fails with TS2307 without them; at runtime it loads none of them.
|
|
110
119
|
**A peer listed there must ALSO stay in `devDependencies`**: the CLI reads
|
|
111
120
|
the version from the upstream devDeps, so removing it as "redundant with
|
|
112
121
|
the peer range" silently leaves vendor consumers without the package, with
|
|
@@ -168,6 +177,9 @@ pnpm run check:esm # Compiles what a vendor project receives as a "type": "
|
|
|
168
177
|
# imports EVERY module — the proof that the core runs as ESM. Catches a
|
|
169
178
|
# named import Node cannot see in a CJS package, a type imported as a value,
|
|
170
179
|
# a missing `.js`; see .claude/rules/architecture.md → "Module Format"
|
|
180
|
+
pnpm run check:without-mongodb # dist/ with mongoose, @nestjs/mongoose and mongodb unresolvable: loads, boots on
|
|
181
|
+
# PostgreSQL, CRUD, Better-Auth sign-up/in, file storage. `:package` installs the packed
|
|
182
|
+
# tarball into a project WITHOUT them (publish path). See .claude/rules/persistence.md
|
|
171
183
|
pnpm run check:swc-tdz # SWC→CJS build, loads EVERY module as its own entry point.
|
|
172
184
|
# The only step that catches a temporal-dead-zone crash from an
|
|
173
185
|
# import cycle — tsc, vitest and oxlint are all blind to it.
|
|
@@ -190,7 +202,7 @@ pnpm run reinit # Clean reinstall + tests + build
|
|
|
190
202
|
- `src/core/common/` - Decorators, helpers, interceptors, services
|
|
191
203
|
- `src/core/modules/` - ApiToken, Auth, BetterAuth, ErrorCode, File, HealthCheck, Hub, Migrate, Permissions, SystemSetup, Tus, User
|
|
192
204
|
- **ApiToken** - Opt-in (`apiTokens`) USER and TENANT tokens + signed assertions. Denied on every route without `@ApiTokenScopes()`; all three guards share `enforceApiTokenRoute()`. See `src/core/modules/api-token/README.md`.
|
|
193
|
-
- **Hub** - Build-free ADMIN-gated operator cockpit at `/hub` (config-gated per environment;
|
|
205
|
+
- **Hub** - Build-free ADMIN-gated operator cockpit at `/hub` (config-gated per environment; 17 panels, runtime collectors, mailbox, admin actions). See `src/core/modules/hub/README.md`.
|
|
194
206
|
- **Permissions** - ADMIN-gated security-map report (routes + roles + `@Restricted` fields); also surfaced in the Hub's "Routes / Permissions" panel.
|
|
195
207
|
- **Optional central infrastructure** (11.33.0+) - `CoreRedisService` (`redis` config) and `CoreS3Service` (`s3` config) turn process-local state into shared state for multi-replica deployments: rate-limit counters, cron deduplication, GraphQL subscriptions, tenant-cache invalidation, Hub collectors, file storage (`file.storage: 's3'`; the driver is otherwise derived — S3 → GridFS → filesystem — and an unavailable one fails the boot rather than falling back) and TUS staging. Both are inert without their config, and their client libraries are **optional peer dependencies** (`ioredis`, `bullmq`, `@aws-sdk/client-s3`, `@aws-sdk/lib-storage`, `@aws-sdk/s3-request-presigner`, `@tus/s3-store`) — a project that uses neither installs nothing extra. When adding a distributed feature, always keep the non-configured fallback path.
|
|
196
208
|
|
|
@@ -356,6 +368,7 @@ Detailed documentation in `.claude/rules/`:
|
|
|
356
368
|
| `migration-guides.md` | Process for creating version migration guides |
|
|
357
369
|
| `configurable-features.md` | Configuration patterns: "Presence implies enabled" and "Boolean shorthand" (`true` / `{}`) |
|
|
358
370
|
| `package-management.md` | Fixed package versions only - no `^`, `~`, or ranges |
|
|
371
|
+
| `persistence.md` | MongoDB and PostgreSQL: the data store, `forFeature()`, optional MongoDB libraries, native tiers, hot paths per database |
|
|
359
372
|
| `framework-compatibility.md` | Maintenance obligations for FRAMEWORK-API.md, shipped docs, cross-repo dependencies |
|
|
360
373
|
|
|
361
374
|
## Native MongoDB Driver — Security Rules
|
|
@@ -445,6 +458,12 @@ These alternatives bypass `process()` but keep Mongoose plugins (Tenant, Audit,
|
|
|
445
458
|
|
|
446
459
|
### High-Frequency Path Design Rules
|
|
447
460
|
|
|
461
|
+
**Per database (12.1.0+):** the rules below name Mongoose APIs because on MongoDB the Mongoose plugins still fire on
|
|
462
|
+
`Model.create()` / `findByIdAndUpdate()`. On PostgreSQL there is no Mongoose model to call (a model routed to SQL
|
|
463
|
+
refuses every Mongoose data method), and the policies live in the store. The neutral form of every rule below is the
|
|
464
|
+
data store — `this.dataStore.insert()`, `updateById()`, `findById()`, `pushToArray()` skip `process()` and keep every
|
|
465
|
+
policy on both databases; prefer it in new code (`.claude/rules/persistence.md` → "High-frequency paths").
|
|
466
|
+
|
|
448
467
|
These rules apply when building features that execute many times per minute (monitoring, metrics, queue processors). These paths are always system-internal — no user context, no authorization needed.
|
|
449
468
|
|
|
450
469
|
1. **`Model.create(doc)` over `new Model().save()`** for single documents — `create()` is ~3x faster and uses ~9x less memory. For batch inserts (N>1), use `Model.insertMany(docs)` — a single call with N documents is ~2.5x faster than N parallel `save()` calls.
|
|
@@ -508,7 +527,7 @@ Details: [`docs/process-performance-optimization.md`](docs/process-performance-o
|
|
|
508
527
|
| [`docs/REQUEST-LIFECYCLE.md`](docs/REQUEST-LIFECYCLE.md) | Complete request lifecycle, security architecture, interceptor chain, decorator reference, CrudService pipeline, Safety Net, diagrams |
|
|
509
528
|
| [`docs/native-driver-security.md`](docs/native-driver-security.md) | Native MongoDB Driver restrictions, secure alternatives, review checklist |
|
|
510
529
|
| [`docs/process-performance-optimization.md`](docs/process-performance-optimization.md) | process() pipeline performance optimizations, SubDocument array handling (pushToArray/pullFromArray) |
|
|
511
|
-
| [`docs/security-overrides.md`](docs/security-overrides.md) | Why pnpm `overrides:` do NOT reach consumers, which
|
|
530
|
+
| [`docs/security-overrides.md`](docs/security-overrides.md) | Why pnpm `overrides:` do NOT reach consumers, which entries a project still needs (none on 12.1 with the declared `@nestjs/*` versions), and the rules for writing your own |
|
|
512
531
|
| [`docs/brevo-manual-test.md`](docs/brevo-manual-test.md) | Manual smoke test for `BrevoService` against the live Brevo API (framework repo only) |
|
|
513
532
|
|
|
514
533
|
<!-- lt-dev:url-block:start -->
|
package/FRAMEWORK-API.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @lenne.tech/nest-server — Framework API Reference
|
|
2
2
|
|
|
3
|
-
> Auto-generated from source code as of 2026-10-
|
|
3
|
+
> Auto-generated from source code as of 2026-10-29 (v12.1.0)
|
|
4
4
|
> File: `FRAMEWORK-API.md` — compact, machine-readable API surface for Claude Code
|
|
5
5
|
|
|
6
6
|
## CoreModule.forRoot()
|
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
- `cookies?`: `boolean | ICookiesConfig` (default: `true`) — Cookie configuration for authentication handling.
|
|
26
26
|
- `cors?`: `boolean | ICorsConfig` (default: `undefined (enabled with auto-derived origins)`) — CORS (Cross-Origin Resource Sharing) configuration.
|
|
27
27
|
- `cronJobs?`: `Record<string, string | false | 0 | CronJobConfigWithTimeZone<null, null> | C...` — Cron jobs configuration object with the name of the cron job function as key
|
|
28
|
+
- `database?`: `string | false | IDatabaseConfig` (default: `undefined (the `mongoose` configuration)`) — Data sources: where models are stored.
|
|
28
29
|
- `debugProcessInput?`: `boolean` (default: `false`) — When true, logs a debug message when prepareInput() changes the input type during process().
|
|
29
30
|
- `email?`: `{ defaultSender?: { email?: string; name?: string; }; mailjet?: MailjetOption...` — SMTP and template configuration for sending emails
|
|
30
31
|
- `env?`: `string` — Environment
|
|
@@ -82,7 +83,7 @@ When `passkey` is enabled, `trustedOrigins` is required (compile-time enforcemen
|
|
|
82
83
|
- `strictMembershipRoles?`: `boolean` (default: `false`) — Refuse membership roles that are not declared anywhere (deny by default).
|
|
83
84
|
- `additionalMembershipRoles?`: `string[]` (default: `[]`) — Membership roles that are valid but carry no hierarchy level (exact-match roles).
|
|
84
85
|
- `cacheTtlMs?`: `number` (default: `30000 (30 seconds)`) — TTL in milliseconds for the tenant guard's in-memory membership cache.
|
|
85
|
-
- `isTenantActive?`: `(tenantId: string, context: { connection: Connection;
|
|
86
|
+
- `isTenantActive?`: `(tenantId: string, context: { connection: Connection; store: (modelName: stri...` (default: `undefined (every tenant is active)`) — Whether a tenant may be used at all — the hook that makes a DEACTIVATED tenant stop working.
|
|
86
87
|
|
|
87
88
|
### IErrorCode
|
|
88
89
|
|
|
@@ -230,7 +231,7 @@ When `passkey` is enabled, `trustedOrigins` is required (compile-time enforcemen
|
|
|
230
231
|
- `rpId?`: `string` — Relying Party ID (usually the domain without protocol).
|
|
231
232
|
- `rpName?`: `string` — Relying Party Name (displayed to users)
|
|
232
233
|
- `userVerification?`: `"discouraged" | "preferred" | "required"` (default: `'preferred'`) — User verification requirement.
|
|
233
|
-
- `webAuthnChallengeCookie?`: `string` (default: `'better-auth-passkey'`) —
|
|
234
|
+
- `webAuthnChallengeCookie?`: `string` (default: `'better-auth-passkey'`) — Key of Better-Auth's WebAuthn challenge cookie. Better-Auth puts its cookie prefix in front of it
|
|
234
235
|
|
|
235
236
|
### IBetterAuthTwoFactorConfig
|
|
236
237
|
|
|
@@ -342,6 +343,7 @@ Generic: `CrudService<Model, CreateInput, UpdateInput>`
|
|
|
342
343
|
- `async pushToArray(id: string | Types.ObjectId | { id?: any; _id?: any; }, field: string, items: any, options?: { $slice?: number; $position?: number; $sort?: Record<string, 1 | -1>; })`: `Promise<void>` — Append items to an array field without loading the full array.
|
|
343
344
|
- `async pullFromArray(id: string | Types.ObjectId | { id?: any; _id?: any; }, field: string, condition: any)`: `Promise<void>` — Remove items from an array field.
|
|
344
345
|
- `async processQueryOrDocument(queryOrDocument: Document<Types.ObjectId, any, any, Record<string, any>, {}> | Document<Types...., serviceOptions?: ServiceOptions)`: `Promise<T>` — Execute, populate and map Mongoose query or document(s) with serviceOptions
|
|
346
|
+
- `assertMongooseStore(method: string)`: `void` — Refuse an API that only exists on MongoDB when the main model is stored elsewhere. The Mongoose model may still
|
|
345
347
|
|
|
346
348
|
**Variants:** Each method has three variants:
|
|
347
349
|
- `method()` — Standard: applies `securityCheck()`, respects permissions
|
|
@@ -406,5 +408,5 @@ in consuming projects keep working.
|
|
|
406
408
|
| `src/core/common/interceptors/` | CheckResponse, CheckSecurity, ResponseModel |
|
|
407
409
|
| `src/core/common/helpers/process-diagnostics.helper.ts` | installProcessDiagnostics() / handleFatalBootstrapError — opt-in, wire into your own main.ts |
|
|
408
410
|
| `docs/REQUEST-LIFECYCLE.md` | Complete request lifecycle |
|
|
409
|
-
| `docs/security-overrides.md` | pnpm overrides are NOT inherited —
|
|
411
|
+
| `docs/security-overrides.md` | pnpm overrides are NOT inherited — which entries your project still needs |
|
|
410
412
|
| `.claude/rules/` | Detailed rules for architecture, security, testing |
|
package/README.md
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# lenne.Tech Nest Server
|
|
2
2
|
|
|
3
|
-
An enterprise-grade extension layer on top of [NestJS](https://nestjs.com/) for building secure, scalable server applications with **GraphQL**, **REST/Swagger
|
|
3
|
+
An enterprise-grade extension layer on top of [NestJS](https://nestjs.com/) for building secure, scalable server applications with **GraphQL**, **REST/Swagger** and **MongoDB, PostgreSQL, MySQL or MariaDB**.
|
|
4
4
|
|
|
5
5
|
[](/LICENSE)
|
|
6
6
|
[](https://www.npmjs.com/package/@lenne.tech/nest-server)
|
|
7
|
-
[](https://nodejs.org/)
|
|
8
8
|
|
|
9
9
|
## Table of Contents
|
|
10
10
|
|
|
@@ -15,6 +15,10 @@ An enterprise-grade extension layer on top of [NestJS](https://nestjs.com/) for
|
|
|
15
15
|
- [Authentication](#authentication)
|
|
16
16
|
- [Roles & Permissions](#roles--permissions)
|
|
17
17
|
- [Multi-Tenancy](#multi-tenancy)
|
|
18
|
+
- [Databases](#databases)
|
|
19
|
+
- [API Tokens](#api-tokens)
|
|
20
|
+
- [AI Assistant & MCP](#ai-assistant--mcp)
|
|
21
|
+
- [Operator Hub](#operator-hub)
|
|
18
22
|
- [Scalability](#scalability)
|
|
19
23
|
- [API Versioning](#api-versioning)
|
|
20
24
|
- [Webhook Support](#webhook-support)
|
|
@@ -55,16 +59,18 @@ This generates a complete module with model, inputs, resolver, controller, and s
|
|
|
55
59
|
| Category | Features |
|
|
56
60
|
|----------|----------|
|
|
57
61
|
| **API-First** | GraphQL (Apollo Server) + REST with Swagger/OpenAPI, dual API surface from single codebase |
|
|
58
|
-
| **Authentication** | BetterAuth (IAM) with JWT, sessions, 2FA/TOTP, Passkey/WebAuthn, social login; Legacy JWT auth |
|
|
59
|
-
| **Authorization** | Extensible role-based access control, field-level restrictions, system roles, hierarchy roles |
|
|
60
|
-
| **Database** | MongoDB
|
|
61
|
-
| **Multi-Tenancy** | Header-based tenant isolation, membership management, hierarchy roles, auto-filtering |
|
|
62
|
-
| **File Handling** | GridFS
|
|
63
|
-
| **
|
|
62
|
+
| **Authentication** | BetterAuth (IAM) with JWT, sessions, 2FA/TOTP, Passkey/WebAuthn, social login; Legacy JWT auth (opt-in); scoped API tokens for users and tenants |
|
|
63
|
+
| **Authorization** | Extensible role-based access control, field-level restrictions (also on nested types), system roles, hierarchy roles; every entry point checked, not just the route |
|
|
64
|
+
| **Database** | MongoDB (Mongoose), PostgreSQL, MySQL or MariaDB (TypeORM, Kysely or Drizzle) — per project or per model — behind one CrudService and security pipeline; tenant isolation enforced by row-level security on PostgreSQL; schema evolution and SQL migrations by the framework; advanced filtering & pagination |
|
|
65
|
+
| **Multi-Tenancy** | Header-based tenant isolation, membership management, hierarchy roles, auto-filtering, a tenant row check after every read, deactivatable tenants |
|
|
66
|
+
| **File Handling** | GridFS, S3 or filesystem storage, presigned downloads, resumable uploads via TUS protocol (up to 50 GB, S3 staging) |
|
|
67
|
+
| **AI** | AI assistant with tool registry, plan mode, confirmation policy, token budgets, conversations and SSE streaming; MCP server (`/ai/mcp`) with OAuth 2.1 |
|
|
68
|
+
| **Security** | Defense-in-depth: input validation, password hashing, role guard, audit fields, response filtering, security headers, SSRF guard for user-entered URLs, re-checked WebSocket subscriptions |
|
|
64
69
|
| **Integration** | SCIM support, OAuth providers, multi-provider email (Mailjet/Brevo/SMTP), webhook support via lifecycle hooks |
|
|
65
|
-
| **Scalability** | Stateless design,
|
|
70
|
+
| **Scalability** | Stateless design; optional Redis and S3 for multi-replica deployments (shared rate limits, cron deduplication, GraphQL subscriptions, cache invalidation, file storage); distributed locks; graceful shutdown; query complexity analysis |
|
|
66
71
|
| **API Versioning** | NestJS-native URI/header/media-type versioning, GraphQL schema evolution with deprecations |
|
|
67
|
-
| **DevOps** |
|
|
72
|
+
| **DevOps** | Operator Hub (`/hub`), health checks, database migrations (MongoDB and SQL), cron jobs, permissions reporting, system setup |
|
|
73
|
+
| **Platform** | NestJS 12, ESM package that CommonJS projects load as well; npm or vendor mode (the core copied into the project) |
|
|
68
74
|
|
|
69
75
|
## Architecture
|
|
70
76
|
|
|
@@ -101,8 +107,10 @@ Every core module supports both **auto-registration** (zero-config) and **manual
|
|
|
101
107
|
|
|
102
108
|
- [NestJS](https://nestjs.com/) — Server framework
|
|
103
109
|
- [Apollo Server](https://www.apollographql.com/docs/apollo-server/) — GraphQL API (optional, disable via `graphQl: false`)
|
|
104
|
-
- [Mongoose](https://mongoosejs.com/) — MongoDB ODM
|
|
110
|
+
- [Mongoose](https://mongoosejs.com/) — MongoDB ODM (optional peer since 12.1.0)
|
|
111
|
+
- [PostgreSQL](https://www.postgresql.org/), [MySQL](https://www.mysql.com/) or [MariaDB](https://mariadb.org/) via TypeORM, Kysely or Drizzle — optional, see [Databases](#databases)
|
|
105
112
|
- [Swagger/OpenAPI](https://swagger.io/) — REST API documentation
|
|
113
|
+
- [Redis](https://redis.io/) and S3-compatible storage — optional, for multi-replica deployments (see [Scalability](#scalability))
|
|
106
114
|
|
|
107
115
|
## API-First Design
|
|
108
116
|
|
|
@@ -222,7 +230,7 @@ BetterAuth provides **lifecycle hooks** for reacting to authentication events (s
|
|
|
222
230
|
|
|
223
231
|
### Legacy Auth (JWT)
|
|
224
232
|
|
|
225
|
-
Passport-based JWT authentication with sign-in, sign-up, refresh tokens, and rate limiting. Runs in parallel with BetterAuth during migration.
|
|
233
|
+
Passport-based JWT authentication with sign-in, sign-up, refresh tokens, and rate limiting. Runs in parallel with BetterAuth during migration. Since 11.38.0 the legacy endpoints are off unless a project opts in with `auth.legacyEndpoints.enabled: true`; disabled endpoints answer 410 Gone.
|
|
226
234
|
|
|
227
235
|
A built-in **migration status query** (`betterAuthMigrationStatus`) tracks progress and indicates when legacy auth can be safely disabled.
|
|
228
236
|
|
|
@@ -310,23 +318,77 @@ async updateProject(@CurrentTenant() tenantId: string) { ... }
|
|
|
310
318
|
|
|
311
319
|
- **Membership validation** — `CoreTenantGuard` validates membership on every request
|
|
312
320
|
- **Hierarchy roles** — Level comparison (higher includes lower), custom via `createHierarchyRoles()`
|
|
313
|
-
- **Automatic data isolation** —
|
|
314
|
-
- **Defense-in-depth** — Guard validation
|
|
321
|
+
- **Automatic data isolation** — the tenant policy filters all queries by tenant context (Mongoose plugin on MongoDB, the data store and row-level security on PostgreSQL)
|
|
322
|
+
- **Defense-in-depth** — Guard validation, the tenant policy, and a tenant row check that refuses any read result containing another tenant's row
|
|
323
|
+
- **Every transport** — GraphQL subscriptions over WebSocket get the same validated tenant context, and open sockets are re-checked when rights change
|
|
315
324
|
- **Multi-membership** — Users can belong to multiple tenants with different roles
|
|
316
325
|
- **Status management** — ACTIVE, INVITED, SUSPENDED membership states
|
|
317
326
|
- **`@SkipTenantCheck()`** — Opt out per endpoint
|
|
318
327
|
- **`@CurrentTenant()`** — Parameter decorator for validated tenant ID
|
|
319
328
|
|
|
329
|
+
## Databases
|
|
330
|
+
|
|
331
|
+
A project keeps its data in **MongoDB** (the default), in **PostgreSQL**, in **MySQL 8.4 / MariaDB 11.8**, or in several
|
|
332
|
+
of them, model by model — the framework's own modules (users, tenants, API tokens, AI, file metadata, locks,
|
|
333
|
+
migrations) run on each; Better-Auth on MongoDB and PostgreSQL:
|
|
334
|
+
|
|
335
|
+
```typescript
|
|
336
|
+
// config.env.ts — PostgreSQL as the default source
|
|
337
|
+
database: {
|
|
338
|
+
url: 'postgres://app_role@db/project', // application role: owns nothing, no BYPASSRLS
|
|
339
|
+
ownerUrl: 'postgres://owner_role@db/project', // owner role: creates and migrates the schema
|
|
340
|
+
sqlEngine: 'typeorm', // or 'kysely' / 'drizzle'
|
|
341
|
+
},
|
|
342
|
+
```
|
|
343
|
+
|
|
344
|
+
Models are registered with `CorePersistenceModule.forFeature()` and declared with the framework's `Schema`, `Prop` and
|
|
345
|
+
`SchemaFactory` (same names as `@nestjs/mongoose`). `mongoose`, `@nestjs/mongoose` and `mongodb` are optional peers: a
|
|
346
|
+
project on PostgreSQL alone installs none of them (in vendor mode it keeps them as `devDependencies` for the types the
|
|
347
|
+
vendored core imports). On MySQL and MariaDB (`mysql2` plus the engine) there is no row-level security: tenant isolation
|
|
348
|
+
is the store's, and native access to a tenant table must filter by tenant itself. Which database to choose:
|
|
349
|
+
[docs/choosing-a-database.md](docs/choosing-a-database.md);
|
|
350
|
+
the rules for code: [.claude/rules/persistence.md](.claude/rules/persistence.md).
|
|
351
|
+
|
|
352
|
+
## API Tokens
|
|
353
|
+
|
|
354
|
+
Opt-in bearer tokens for integrations and scripts (`apiTokens` configuration):
|
|
355
|
+
|
|
356
|
+
- **User tokens** act as their user, with global roles removed (no admin bypass through a token)
|
|
357
|
+
- **Tenant tokens** act with the lowest hierarchy role inside their own tenant (requires `multiTenancy`)
|
|
358
|
+
- **Deny by default** — a token is refused on every route that does not release a scope via `@ApiTokenScopes()`, public routes included
|
|
359
|
+
- **Signed short-lived assertions** with encrypted signing keys, a per-token rate limit, and a separate Swagger view with only the routes a token may call
|
|
360
|
+
|
|
361
|
+
Details: [src/core/modules/api-token/README.md](src/core/modules/api-token/README.md).
|
|
362
|
+
|
|
363
|
+
## AI Assistant & MCP
|
|
364
|
+
|
|
365
|
+
An optional AI module (`ai` configuration) for any OpenAI-compatible model endpoint:
|
|
366
|
+
|
|
367
|
+
- **Tool registry** — the assistant reaches exactly the domain operations a project registers as tools, filtered by the user's roles; a tool must route through a `CrudService` with the caller's service options, so that `@Restricted` and `securityCheck()` apply
|
|
368
|
+
- **Plan mode and confirmations** — a full plan is authorized step by step before anything runs; in chat, destructive tools always ask for confirmation, mutating tools only under `ai.confirmation.mutating` (off by default, can be enforced)
|
|
369
|
+
- **Token budgets** per user and per tenant, conversations, audit log, SSE streaming, admin-editable prompt fragments
|
|
370
|
+
- **MCP server** at `/ai/mcp` (Streamable HTTP) with optional OAuth 2.1 (PKCE, dynamic client registration, consent page), so MCP clients use the same tools with the same rights; there is no confirmation gate over MCP, the client's own approval applies
|
|
371
|
+
|
|
372
|
+
Integration: [src/core/modules/ai/INTEGRATION-CHECKLIST.md](src/core/modules/ai/INTEGRATION-CHECKLIST.md).
|
|
373
|
+
|
|
374
|
+
## Operator Hub
|
|
375
|
+
|
|
376
|
+
A build-free, ADMIN-only operator cockpit at `/hub`, enabled per environment (`hub` configuration): dashboard and
|
|
377
|
+
diagnostics, logs, request traces, query profiler, cron jobs, database and models, migrations, files, configuration,
|
|
378
|
+
routes and permissions, error codes, e-mail preview and mailbox, AI. Mutating actions require a confirmation keyword
|
|
379
|
+
and are written to an audit log. Details: [src/core/modules/hub/README.md](src/core/modules/hub/README.md).
|
|
380
|
+
|
|
320
381
|
## Scalability
|
|
321
382
|
|
|
322
383
|
The architecture is designed for horizontal scalability:
|
|
323
384
|
|
|
324
|
-
- **Stateless request handling** — No server-side session state
|
|
385
|
+
- **Stateless request handling** — No server-side session state in the process (JWT, or Better-Auth sessions in the database)
|
|
386
|
+
- **Optional central infrastructure** — with `redis` configured, rate limits hold across replicas, cron jobs run once per tick (BullMQ), GraphQL subscriptions reach every replica and tenant-cache invalidations are broadcast; with `s3` configured, files and resumable uploads live in shared storage. Without the configuration every feature keeps its process-local behaviour
|
|
387
|
+
- **Distributed locks** — migrations, cron leases and the initial admin setup are serialized across instances, on MongoDB or SQL
|
|
388
|
+
- **Graceful shutdown** — `installGracefulShutdown(app)` with `shutdownDelayMs` lets a load balancer deregister the instance before it closes
|
|
325
389
|
- **Request-scoped isolation** — `AsyncLocalStorage`-based `RequestContext` ensures safe concurrent request processing without shared mutable state
|
|
326
|
-
- **Distributed migration locking** — MongoDB-based distributed locks via `synchronizedMigration()` for safe multi-instance deployments
|
|
327
390
|
- **Query complexity analysis** — Configurable complexity limits prevent expensive GraphQL queries from consuming excessive resources
|
|
328
|
-
- **Connection pooling** — Managed
|
|
329
|
-
- **Configurable MongoDB** — Support for replica sets and connection options via `mongoose.uri` configuration
|
|
391
|
+
- **Connection pooling** — Managed by the Mongoose/MongoDB driver and by one pool per SQL source
|
|
330
392
|
|
|
331
393
|
## External System Integration
|
|
332
394
|
|
|
@@ -362,16 +424,19 @@ The Module Inheritance Pattern ensures any core module can be extended to integr
|
|
|
362
424
|
|
|
363
425
|
| Module | Purpose |
|
|
364
426
|
|--------|---------|
|
|
365
|
-
| **
|
|
366
|
-
| **
|
|
427
|
+
| **AI** | AI assistant with tool registry, budgets, conversations and an MCP server with OAuth 2.1 |
|
|
428
|
+
| **ApiToken** | Scoped user and tenant tokens, deny by default |
|
|
429
|
+
| **Auth** | Legacy JWT authentication with Passport strategies (opt-in) |
|
|
430
|
+
| **BetterAuth** | Modern auth (2FA, Passkey, Social, sessions, lifecycle hooks) on MongoDB or PostgreSQL |
|
|
367
431
|
| **User** | User management, profile, roles, verification |
|
|
368
432
|
| **Tenant** | Multi-tenancy with membership and hierarchy roles |
|
|
369
|
-
| **File** | File upload/download with
|
|
433
|
+
| **File** | File upload/download with GridFS, S3 or filesystem storage |
|
|
370
434
|
| **Tus** | Resumable file uploads via [tus.io](https://tus.io/) protocol (up to 50 GB) |
|
|
371
435
|
| **ErrorCode** | Centralized error codes with unique identifiers |
|
|
372
|
-
| **HealthCheck** | REST (`/health`) and GraphQL health monitoring |
|
|
373
|
-
| **
|
|
374
|
-
| **
|
|
436
|
+
| **HealthCheck** | REST (`/health-check`) and GraphQL health monitoring, per database source |
|
|
437
|
+
| **Hub** | ADMIN-only operator cockpit at `/hub` |
|
|
438
|
+
| **Migrate** | Migrations for MongoDB and SQL with distributed locking for cluster deployments |
|
|
439
|
+
| **Permissions** | Security map report: routes, roles and `@Restricted` fields (HTML, JSON, Markdown) |
|
|
375
440
|
| **SystemSetup** | Initial admin creation for fresh deployments |
|
|
376
441
|
|
|
377
442
|
### CrudService
|
|
@@ -401,11 +466,11 @@ Defense-in-depth security architecture with three layers:
|
|
|
401
466
|
- `@UnifiedField()` — Single decorator for GraphQL, Swagger, and validation
|
|
402
467
|
- `securityCheck()` — Resource-level security on model instances
|
|
403
468
|
|
|
404
|
-
**Layer 3:
|
|
405
|
-
- Password
|
|
406
|
-
- Role
|
|
407
|
-
- Audit
|
|
408
|
-
- Tenant
|
|
469
|
+
**Layer 3: Data Layer (Safety Net)** — the same policies on every database: as Mongoose plugins on MongoDB, in the data store on SQL
|
|
470
|
+
- Password policy — Automatic password hashing
|
|
471
|
+
- Role guard — Prevents unauthorized role escalation at DB level; system roles can never be stored
|
|
472
|
+
- Audit fields — Automatic `createdBy`/`updatedBy` tracking
|
|
473
|
+
- Tenant isolation — Automatic tenant filtering, plus a tenant row check after every read and row-level security on PostgreSQL
|
|
409
474
|
|
|
410
475
|
**Interceptor Chain:**
|
|
411
476
|
- ResponseModelInterceptor — Plain objects to CoreModel conversion
|
|
@@ -426,7 +491,7 @@ export const config = {
|
|
|
426
491
|
local: {
|
|
427
492
|
port: 3000,
|
|
428
493
|
graphQl: { driver: 'apollo' },
|
|
429
|
-
mongoose: { uri: 'mongodb://localhost/my-app' },
|
|
494
|
+
mongoose: { uri: 'mongodb://localhost/my-app' }, // or: database: 'postgres://…' (see Databases)
|
|
430
495
|
betterAuth: { secret: 'my-secret', jwt: true, twoFactor: true },
|
|
431
496
|
multiTenancy: { roleHierarchy: { member: 1, manager: 2, owner: 3 } },
|
|
432
497
|
},
|
|
@@ -448,7 +513,7 @@ Three methods to override configuration:
|
|
|
448
513
|
|
|
449
514
|
## Development
|
|
450
515
|
|
|
451
|
-
**Requirements:** Node.js >=
|
|
516
|
+
**Requirements:** Node.js >= 22.15, pnpm 11, MongoDB and Docker for the e2e suite (the Redis, S3, PostgreSQL, MySQL and MariaDB test containers start automatically)
|
|
452
517
|
|
|
453
518
|
```bash
|
|
454
519
|
# Install dependencies
|
|
@@ -457,11 +522,14 @@ pnpm install
|
|
|
457
522
|
# Start in development mode
|
|
458
523
|
pnpm run start:dev
|
|
459
524
|
|
|
460
|
-
# Run tests (Vitest
|
|
525
|
+
# Run tests (Vitest: unit + e2e, the e2e suite on MongoDB and on PostgreSQL)
|
|
461
526
|
pnpm test
|
|
462
527
|
|
|
463
528
|
# Run tests with coverage
|
|
464
|
-
pnpm run
|
|
529
|
+
pnpm run test:cov
|
|
530
|
+
|
|
531
|
+
# Everything a release needs: audit, format, lint, type checks, tests, build, module-format checks
|
|
532
|
+
pnpm run check
|
|
465
533
|
|
|
466
534
|
# Lint (oxlint) & format (oxfmt)
|
|
467
535
|
pnpm run lint
|
|
@@ -487,7 +555,7 @@ docker run -e NSC__MONGOOSE__URI=mongodb://host:27017/mydb -p 3000:3000 api
|
|
|
487
555
|
docker build --build-arg API_DIR=projects/api -t api .
|
|
488
556
|
```
|
|
489
557
|
|
|
490
|
-
The `docker-entrypoint.sh` runs database migrations before starting the server.
|
|
558
|
+
The `docker-entrypoint.sh` runs database migrations before starting the server. On MongoDB the migration store reads `NSC__MONGOOSE__URI`; on SQL, `createMigrationStore()` connects with the owner URL and keeps its state in `lt_migrations`.
|
|
491
559
|
|
|
492
560
|
### Debugging as package
|
|
493
561
|
|
|
@@ -509,6 +577,10 @@ pnpm run unlink:nest-server # pnpm unlink @lenne.tech/nest-server && pnpm inst
|
|
|
509
577
|
## Documentation
|
|
510
578
|
|
|
511
579
|
- [Request Lifecycle](docs/REQUEST-LIFECYCLE.md) — Complete request pipeline, security architecture, interceptor chain
|
|
580
|
+
- [Choosing a Database](docs/choosing-a-database.md) — MongoDB, PostgreSQL, MySQL/MariaDB or several, and which SQL engine
|
|
581
|
+
- [Native Driver Security](docs/native-driver-security.md) — What native database access bypasses, and the safe alternatives
|
|
582
|
+
- [process() Performance](docs/process-performance-optimization.md) — The CrudService pipeline on hot paths, subdocument arrays
|
|
583
|
+
- [Framework API](FRAMEWORK-API.md) — Generated reference of interfaces, `CoreModule.forRoot()` and CrudService methods
|
|
512
584
|
- [Security Overrides](docs/security-overrides.md) — **Read this**: pnpm `overrides:` are not inherited from this package, so two known-vulnerable transitive deps need an entry in *your* project
|
|
513
585
|
- [Migration Guides](migration-guides/) — Version upgrade instructions
|
|
514
586
|
- [Starter Project](https://github.com/lenneTech/nest-server-starter) — Reference implementation
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { FieldOptions } from '@nestjs/graphql';
|
|
2
|
-
import { PropOptions } from '@nestjs/mongoose';
|
|
2
|
+
import type { PropOptions } from '@nestjs/mongoose';
|
|
3
3
|
import { ApiPropertyOptions } from '@nestjs/swagger';
|
|
4
4
|
import { ValidationOptions } from 'class-validator';
|
|
5
5
|
import { GraphQLScalarType } from 'graphql';
|
|
@@ -28,6 +28,7 @@ export interface UnifiedFieldOptions {
|
|
|
28
28
|
isArray?: boolean;
|
|
29
29
|
isOptional?: boolean;
|
|
30
30
|
mongoose?: boolean | PropOptions;
|
|
31
|
+
renamedFrom?: string;
|
|
31
32
|
roles?: RestrictedType | RoleEnum | RoleEnum[];
|
|
32
33
|
swaggerApiOptions?: ApiPropertyOptions;
|
|
33
34
|
type?: (() => any) | GraphQLScalarType | (new (...args: any[]) => any) | Record<number | string, number | string>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Field, HideField, TypeMetadataStorage } from '@nestjs/graphql';
|
|
2
|
-
import { Prop } from '
|
|
2
|
+
import { Prop } from '../persistence/mongo/mongoose-compat.js';
|
|
3
3
|
import { ApiHideProperty, ApiProperty } from '@nestjs/swagger';
|
|
4
4
|
import { Type } from 'class-transformer';
|
|
5
5
|
import { IsArray, IsBoolean, IsDate, IsDefined, IsEnum, IsNotEmpty, IsNumber, IsObject, IsOptional, IsString, ValidateIf, ValidateNested, } from 'class-validator';
|
|
@@ -260,6 +260,9 @@ export function UnifiedField(opts = {}) {
|
|
|
260
260
|
if (typeof propOptions === 'object' && !Array.isArray(propOptions) && isArrayField && !propOptions.type) {
|
|
261
261
|
propOptions.type = [baseType];
|
|
262
262
|
}
|
|
263
|
+
if (opts.renamedFrom && typeof propOptions === 'object' && !Array.isArray(propOptions)) {
|
|
264
|
+
propOptions.renamedFrom = opts.renamedFrom;
|
|
265
|
+
}
|
|
263
266
|
Prop(propOptions)(target, propertyKey);
|
|
264
267
|
}
|
|
265
268
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unified-field.decorator.js","sourceRoot":"","sources":["../../../../src/core/common/decorators/unified-field.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAgB,SAAS,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtF,OAAO,EAAE,IAAI,EAAe,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,WAAW,EAAsB,MAAM,iBAAiB,CAAC;AACnF,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EACL,OAAO,EACP,SAAS,EACT,MAAM,EACN,SAAS,EACT,MAAM,EACN,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,UAAU,EACV,cAAc,GAEf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAKxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAkB,MAAM,2BAA2B,CAAC;AASvE,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAMlF,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAe,CAAC;AAGvD,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;AAC/D,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;AACjE,MAAM,CAAC,MAAM,yBAAyB,GAAG,MAAM,CAAC,2BAA2B,CAAC,CAAC;AAe7E,MAAM,UAAU,mBAAmB,CAAC,QAAkB;IACpD,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC1D,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC3C,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC3C,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC3C,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAU,CAAC;IAG7C,IAAI,OAAO,GAAG,QAAQ,CAAC;IACvB,OAAO,OAAO,IAAI,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QAClF,MAAM,QAAQ,GAAa,OAAO,CAAC,cAAc,CAAC,kBAAkB,EAAE,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QAC/F,MAAM,QAAQ,GAAa,OAAO,CAAC,cAAc,CAAC,mBAAmB,EAAE,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QAChG,MAAM,aAAa,GAAa,OAAO,CAAC,cAAc,CAAC,yBAAyB,EAAE,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QAE3G,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;YAChC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC1B,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC1B,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;QAED,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAGD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAGzC,KAAK,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;QACnC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAClB,CAAC;IAGD,KAAK,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;QACnC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IAED,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IACnD,OAAO,MAAM,CAAC;AAChB,CAAC;AAqHD,SAAS,mBAAmB,CAAC,KAAc;IACzC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC9D,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IACvE,MAAM,KAAK,GAAI,KAAiC,CAAC,IAAI,CAAC;IACtD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAI9D,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,KAAgC,CAAC,CAAC;IAC7D,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC;AAC9F,CAAC;AAUD,SAAS,oCAAoC,CAAC,KAAc,EAAE,YAAoB;IAChF,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO;IAChF,MAAM,GAAG,GAAG,KAAgC,CAAC;IAC7C,IACE,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC;QAClD,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,EAC/G,CAAC;QAED,OAAO,CAAC,IAAI,CACV,iDAAiD,YAAY,yBAAyB;YACpF,2FAA2F;YAC3F,uFAAuF,CAC1F,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAA4B,EAAE;IAIzD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACtE,MAAM,cAAc,GAAsC,IAAI,CAAC,IAAI;QACjE,CAAC,CAAC,UAAU;YACV,CAAC,CAAE,IAAI,CAAC,IAA8B;YACtC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAwB,EAAE;QAC3C,CAAC,CAAC,SAAS,CAAC;IAKd,MAAM,gBAAgB,GAAG,UAAU,CAAC,CAAC,CAAE,IAAI,CAAC,IAA8B,CAAC,CAAC,CAAC,SAAS,CAAC;IAEvF,OAAO,CAAC,MAAW,EAAE,WAA4B,EAAE,EAAE;QACnD,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;QAGhC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACnC,oCAAoC,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC,WAAW,EAAE,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC;QAC/F,CAAC;QAGD,IAAI,gBAAgB,EAAE,CAAC;YAErB,OAAO,CAAC,IAAI,CACV,iDAAiD,MAAM,CAAC,WAAW,EAAE,IAAI,IAAI,GAAG,IAAI,GAAG,KAAK;gBAC1F,qDAAqD;gBACrD,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,gBAAgB,gBAAgB,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/E,8DAA8D,CACjE,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YAE1B,MAAM,YAAY,GAAa,OAAO,CAAC,cAAc,CAAC,mBAAmB,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;YACzF,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAChC,OAAO,CAAC,cAAc,CAAC,mBAAmB,EAAE,CAAC,GAAG,YAAY,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;YAC9E,CAAC;YACD,SAAS,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YACjC,eAAe,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YACvC,OAAO;QACT,CAAC;aAAM,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;YAElC,MAAM,SAAS,GAAa,OAAO,CAAC,cAAc,CAAC,yBAAyB,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;YAC5F,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC7B,OAAO,CAAC,cAAc,CAAC,yBAAyB,EAAE,CAAC,GAAG,SAAS,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;YACjF,CAAC;QAEH,CAAC;aAAM,CAAC;YAGN,IAAI,cAAc,GAAG,KAAK,CAAC;YAC3B,IAAI,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YACtD,OAAO,KAAK,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;gBAC1E,MAAM,QAAQ,GAAa,OAAO,CAAC,cAAc,CAAC,mBAAmB,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;gBAC9F,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC3B,cAAc,GAAG,IAAI,CAAC;oBACtB,MAAM;gBACR,CAAC;gBACD,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YACvC,CAAC;YAED,IAAI,cAAc,EAAE,CAAC;gBAEnB,MAAM,YAAY,GAAa,OAAO,CAAC,cAAc,CAAC,kBAAkB,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;gBACxF,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBAChC,OAAO,CAAC,cAAc,CAAC,kBAAkB,EAAE,CAAC,GAAG,YAAY,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;gBAC7E,CAAC;gBACD,SAAS,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;gBACjC,eAAe,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;gBACvC,OAAO;YACT,CAAC;QACH,CAAC;QAGD,MAAM,YAAY,GAAa,OAAO,CAAC,cAAc,CAAC,kBAAkB,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;QACxF,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAChC,OAAO,CAAC,cAAc,CAAC,kBAAkB,EAAE,CAAC,GAAG,YAAY,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;QAC7E,CAAC;QAED,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,aAAa,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QAC7E,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;QAC3B,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,YAAY,KAAK,KAAK,CAAC;QAGrE,IAAI,YAAY,KAAK,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,gBAAgB,MAAM,CAAC,WAAW,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC;QAC5G,CAAC;QAED,MAAM,cAAc,GAAG,GAAQ,EAAE;YAC/B,IAAI,QAAQ,EAAE,CAAC;gBACb,IAAI,QAAQ,YAAY,iBAAiB,EAAE,CAAC;oBAE1C,OAAO,QAAQ,CAAC;gBAClB,CAAC;gBAED,IAAI,OAAO,QAAQ,KAAK,UAAU,IAAI,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,SAAS,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;oBAExG,OAAO,QAAQ,CAAC;gBAClB,CAAC;gBAED,IAAI,CAAC;oBAEH,OAAQ,QAAsB,EAAE,CAAC;gBACnC,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,QAAQ,CAAC;gBAClB,CAAC;YACH,CAAC;YAED,OAAO,YAAY,CAAC;QACtB,CAAC,CAAC;QAGF,MAAM,YAAY,GAAG,cAAc,EAAE,CAAC;QAKtC,MAAM,QAAQ,GACZ,YAAY,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;YACtE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;YACjB,CAAC,CAAC,YAAY,CAAC;QAGnB,MAAM,OAAO,GAAiB,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACrD,MAAM,WAAW,GAA+C,EAAE,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC9F,MAAM,OAAO,GAAsB,EAAE,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAGjE,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,UAAU,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YAEzC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;YAExB,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC;YAC5B,WAAW,CAAC,QAAQ,GAAG,KAAK,CAAC;QAC/B,CAAC;aAAM,CAAC;YAEN,SAAS,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YACjC,UAAU,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YAElC,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC;YAEzB,WAAW,CAAC,QAAQ,GAAG,KAAK,CAAC;YAC7B,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC9B,CAAC;QAaD,IAAI,QAAQ,IAAI,CAAC,cAAc,EAAE,CAAC;YAChC,WAAW,CAAC,IAAI,GAAG,QAAQ,CAAC;QAC9B,CAAC;QAGD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,OAAO,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QAC/F,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,WAAW,CAAC;QACzD,WAAW,CAAC,WAAW,GAAG,WAAW,CAAC,WAAW,IAAI,WAAW,CAAC;QAGjE,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC/B,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC;QAC5D,CAAC;QAGD,IAAI,cAAc,IAAI,cAAc,CAAC,IAAI,EAAE,CAAC;YAC1C,WAAW,CAAC,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC;YAWvC,IAAI,UAAU,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAEtD,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,SAAS,CAAC;YACpD,CAAC;iBAAM,IAAI,gBAAgB,IAAI,UAAU,IAAI,gBAAgB,EAAE,CAAC;gBAE9D,WAAW,CAAC,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,CAAC;YACnD,CAAC;iBAAM,CAAC;gBAEN,MAAM,gBAAgB,GAAG,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;gBAC1D,IAAI,gBAAgB,EAAE,CAAC;oBACrB,WAAW,CAAC,QAAQ,GAAG,gBAAgB,CAAC;gBAC1C,CAAC;YACH,CAAC;QACH,CAAC;QAGD,IAAI,YAAY,EAAE,CAAC;YACjB,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC;YAC3B,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YACtC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;QACtB,CAAC;aAAM,CAAC;YACN,WAAW,CAAC,OAAO,GAAG,KAAK,CAAC;YAC5B,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC;QACvB,CAAC;QAKD,IAAI,cAAc,IAAI,cAAc,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YAC5E,MAAM,WAAW,GAAsB,EAAE,GAAG,cAAc,CAAC,OAAO,EAAE,CAAC;YACrE,IAAI,YAAY,IAAI,WAAW,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBACnD,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC;YAC1B,CAAC;YACD,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAChE,CAAC;QAKD,MAAM,SAAS,GAAG,YAAY;YAC5B,CAAC,CAAC,GAAG,EAAE;gBACH,MAAM,QAAQ,GAAG,cAAc,EAAE,IAAI,IAAI,IAAI,CAAC,OAAO,IAAI,cAAc,EAAE,CAAC;gBAE1E,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YACrF,CAAC;YACH,CAAC,CAAC,GAAG,EAAE,CAAC,cAAc,EAAE,IAAI,IAAI,IAAI,CAAC,OAAO,IAAI,cAAc,EAAE,CAAC;QAGnE,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAG/C,WAAW,CAAC,WAAW,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAG9C,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACnD,CAAC;QAGD,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;QACjE,CAAC;aAAM,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,cAAc,EAAE,CAAC;YAM1C,MAAM,SAAS,GAAG,mBAAmB,CAAC,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;YAC/E,IAAI,SAAS,EAAE,CAAC;gBACd,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAGhB,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;gBACtB,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YACxC,CAAC;iBAEI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACjF,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;gBAC1C,cAAc,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;gBAG5D,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC;gBAC1C,MAAM,WAAW,GAAG,GAAG,SAAS,IAAI,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC1D,kBAAkB,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;QAGD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACvE,UAAU,CAAC,GAAG,QAAQ,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAC/C,CAAC;QAGD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,WAAW,GAAQ,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;YAGhF,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,QAAQ,EAAE,CAAC;gBACpG,WAAW,CAAC,IAAI,GAAG,QAAQ,CAAC;YAC9B,CAAC;YAGD,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,YAAY,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;gBACxG,WAAW,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;YAChC,CAAC;YAED,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACzC,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAC1B,IAAS,EACT,IAAuB,EACvB,IAAa,EACb,MAAW;IAEX,MAAM,GAAG,GAAG,IAAI,GAAG,CAAyB;QAC1C,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAC5B,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;KACzB,CAAC,CAAC;IACH,MAAM,SAAS,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAMD,SAAS,WAAW,CAAC,OAAY;IAE/B,IAAI,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QAClC,OAAO,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;IAGD,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,mBAAmB,CAAC,gBAAgB,EAAE,CAAC;QAC7D,MAAM,YAAY,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,KAAK,OAAO,CAAC,CAAC;QAChF,IAAI,YAAY,IAAI,YAAY,CAAC,IAAI,EAAE,CAAC;YACtC,OAAO,YAAY,CAAC,IAAI,CAAC;QAC3B,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;IAGjB,CAAC;IAGD,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACxB,OAAO,OAAO,CAAC,IAAI,CAAC;IACtB,CAAC;IAGD,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,MAAM,IAAI,OAAO,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACpG,OAAO,OAAO,CAAC,IAAI,CAAC;IACtB,CAAC;IAGD,IAAI,OAAO,OAAO,KAAK,UAAU,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC/E,OAAO,OAAO,CAAC,IAAI,CAAC;IACtB,CAAC;IAID,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAE3C,IAAI,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7F,OAAO,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC;QAClC,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,eAAe,CAAC,IAAS;IAEhC,OAAO,CACL,CAAC,IAAI;QACH,OAAO,IAAI,KAAK,UAAU;QAC1B,OAAO,IAAI,CAAC,SAAS,EAAE,SAAS,KAAK,UAAU;QAC/C,OAAO,IAAI,CAAC,SAAS,EAAE,UAAU,KAAK,UAAU;QAChD,OAAO,IAAI,CAAC,SAAS,EAAE,YAAY,KAAK,UAAU,CAAC;QACrD,IAAI,YAAY,iBAAiB,CAClC,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,EAAO;IAC1B,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACtD,CAAC"}
|
|
1
|
+
{"version":3,"file":"unified-field.decorator.js","sourceRoot":"","sources":["../../../../src/core/common/decorators/unified-field.decorator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
import { ArgumentsHost, ExceptionFilter, HttpException, Logger } from '@nestjs/common';
|
|
2
|
-
import { Error as MongooseError } from 'mongoose';
|
|
2
|
+
import type { Error as MongooseError } from 'mongoose';
|
|
3
|
+
import { QueryCastError } from '../persistence/sql/sql-errors.js';
|
|
3
4
|
import type { Request, Response } from 'express';
|
|
4
5
|
export type CastErrorOrigin = 'identifier' | 'input' | 'server';
|
|
5
6
|
export declare function castErrorCandidates(value: unknown): string[];
|
|
6
7
|
export declare function containsCastValue(source: unknown, candidates: readonly string[]): boolean;
|
|
7
8
|
export declare function classifyHttpCastError(value: unknown, request: Partial<Pick<Request, 'body' | 'params' | 'query'>> | undefined): CastErrorOrigin;
|
|
8
9
|
export declare function classifyGraphQlCastError(value: unknown, args: unknown): CastErrorOrigin;
|
|
10
|
+
export type CastFailure = MongooseError.CastError | QueryCastError;
|
|
9
11
|
export declare class MongooseCastErrorFilter implements ExceptionFilter {
|
|
10
12
|
protected static readonly logger: Logger;
|
|
11
13
|
protected static readonly unknownErrorLogger: Logger;
|
|
12
|
-
catch(exception:
|
|
13
|
-
protected catchGraphQl(exception:
|
|
14
|
-
protected catchHttp(exception:
|
|
15
|
-
protected toHttpException(exception:
|
|
14
|
+
catch(exception: CastFailure, host: ArgumentsHost): HttpException | undefined;
|
|
15
|
+
protected catchGraphQl(exception: CastFailure, host: ArgumentsHost): HttpException | undefined;
|
|
16
|
+
protected catchHttp(exception: CastFailure, host: ArgumentsHost): void;
|
|
17
|
+
protected toHttpException(exception: CastFailure, origin: 'identifier' | 'input'): HttpException;
|
|
16
18
|
protected replyAsUnknownError(exception: Error, response: Response): void;
|
|
17
19
|
}
|
|
@@ -6,8 +6,9 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
6
6
|
};
|
|
7
7
|
var MongooseCastErrorFilter_1;
|
|
8
8
|
import { BadRequestException, Catch, HttpStatus, Logger, NotFoundException, } from '@nestjs/common';
|
|
9
|
-
import { Error as MongooseError } from 'mongoose';
|
|
10
9
|
import { ErrorCode } from '../../modules/error-code/error-codes.js';
|
|
10
|
+
import { optionalMongoPackages } from '../persistence/mongo/mongo-packages.js';
|
|
11
|
+
import { QueryCastError } from '../persistence/sql/sql-errors.js';
|
|
11
12
|
const MAX_WALK_DEPTH = 32;
|
|
12
13
|
const MAX_WALK_NODES = 10_000;
|
|
13
14
|
function isPrimitive(value) {
|
|
@@ -158,7 +159,7 @@ let MongooseCastErrorFilter = class MongooseCastErrorFilter {
|
|
|
158
159
|
}
|
|
159
160
|
};
|
|
160
161
|
MongooseCastErrorFilter = MongooseCastErrorFilter_1 = __decorate([
|
|
161
|
-
Catch(
|
|
162
|
+
Catch(...[optionalMongoPackages()?.mongoose.Error.CastError, QueryCastError].filter((type) => !!type))
|
|
162
163
|
], MongooseCastErrorFilter);
|
|
163
164
|
export { MongooseCastErrorFilter };
|
|
164
165
|
//# sourceMappingURL=mongoose-cast-error.filter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mongoose-cast-error.filter.js","sourceRoot":"","sources":["../../../../src/core/common/filters/mongoose-cast-error.filter.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,EAEL,mBAAmB,EACnB,KAAK,EAGL,UAAU,EACV,MAAM,EACN,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"mongoose-cast-error.filter.js","sourceRoot":"","sources":["../../../../src/core/common/filters/mongoose-cast-error.filter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { FieldNode, GraphQLResolveInfo, SelectionNode } from 'graphql';
|
|
2
|
-
import { Document, Model, PopulateOptions, Query } from 'mongoose';
|
|
2
|
+
import type { Document, Model, PopulateOptions, Query } from 'mongoose';
|
|
3
3
|
import { CoreModel } from '../models/core-model.model.js';
|
|
4
4
|
import { FieldSelection } from '../types/field-selection.type.js';
|
|
5
5
|
import { IdsType } from '../types/ids.type.js';
|
|
@@ -19,6 +19,7 @@ export declare function getNextFieldNodes(nodes: readonly SelectionNode[]): Fiel
|
|
|
19
19
|
export declare function getPopulateOptions(info: GraphQLResolveInfo, dotSeparatedSelect?: string): PopulateOptions[];
|
|
20
20
|
export declare function getPopulatOptionsFromSelections(selectionNodes: readonly SelectionNode[]): PopulateOptions[];
|
|
21
21
|
export declare function objectIdsToStrings(element: any, prepared?: WeakMap<any, any>): any;
|
|
22
|
+
export declare function toPopulateOptions(populate: FieldSelection): PopulateOptions[];
|
|
22
23
|
export declare function popAndMap<T extends CoreModel>(queryOrDocument: Document | Document[] | Query<any, any>, populate: FieldSelection, modelClass: new (...args: any[]) => T, mongooseModel?: Model<any>, options?: {
|
|
23
24
|
ignoreSelections?: boolean;
|
|
24
25
|
}): Promise<T | T[]>;
|