webapp-factory 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +145 -0
- package/dist/access-control/adapters/in-memory-relations.d.ts +7 -0
- package/dist/access-control/adapters/in-memory-relations.d.ts.map +1 -0
- package/dist/access-control/adapters/in-memory-relations.js +6 -0
- package/dist/access-control/adapters/in-memory-relations.js.map +1 -0
- package/dist/access-control/core/enforcement.d.ts +13 -0
- package/dist/access-control/core/enforcement.d.ts.map +1 -0
- package/dist/access-control/core/enforcement.js +38 -0
- package/dist/access-control/core/enforcement.js.map +1 -0
- package/dist/access-control/core/errors.d.ts +30 -0
- package/dist/access-control/core/errors.d.ts.map +1 -0
- package/dist/access-control/core/errors.js +46 -0
- package/dist/access-control/core/errors.js.map +1 -0
- package/dist/access-control/core/pdp.d.ts +14 -0
- package/dist/access-control/core/pdp.d.ts.map +1 -0
- package/dist/access-control/core/pdp.js +79 -0
- package/dist/access-control/core/pdp.js.map +1 -0
- package/dist/access-control/core/ports.d.ts +68 -0
- package/dist/access-control/core/ports.d.ts.map +1 -0
- package/dist/access-control/core/ports.js +6 -0
- package/dist/access-control/core/ports.js.map +1 -0
- package/dist/access-control/core/rbac.d.ts +10 -0
- package/dist/access-control/core/rbac.d.ts.map +1 -0
- package/dist/access-control/core/rbac.js +78 -0
- package/dist/access-control/core/rbac.js.map +1 -0
- package/dist/access-control/core/rebac.d.ts +15 -0
- package/dist/access-control/core/rebac.d.ts.map +1 -0
- package/dist/access-control/core/rebac.js +48 -0
- package/dist/access-control/core/rebac.js.map +1 -0
- package/dist/access-control/index.d.ts +15 -0
- package/dist/access-control/index.d.ts.map +1 -0
- package/dist/access-control/index.js +20 -0
- package/dist/access-control/index.js.map +1 -0
- package/dist/access-control/nestjs/access-control.module.d.ts +34 -0
- package/dist/access-control/nestjs/access-control.module.d.ts.map +1 -0
- package/dist/access-control/nestjs/access-control.module.js +80 -0
- package/dist/access-control/nestjs/access-control.module.js.map +1 -0
- package/dist/audit/adapters/in-memory-store.d.ts +3 -0
- package/dist/audit/adapters/in-memory-store.d.ts.map +1 -0
- package/dist/audit/adapters/in-memory-store.js +66 -0
- package/dist/audit/adapters/in-memory-store.js.map +1 -0
- package/dist/audit/adapters/pg-store.d.ts +22 -0
- package/dist/audit/adapters/pg-store.d.ts.map +1 -0
- package/dist/audit/adapters/pg-store.js +119 -0
- package/dist/audit/adapters/pg-store.js.map +1 -0
- package/dist/audit/core/audit-log.d.ts +41 -0
- package/dist/audit/core/audit-log.d.ts.map +1 -0
- package/dist/audit/core/audit-log.js +78 -0
- package/dist/audit/core/audit-log.js.map +1 -0
- package/dist/audit/core/errors.d.ts +22 -0
- package/dist/audit/core/errors.d.ts.map +1 -0
- package/dist/audit/core/errors.js +35 -0
- package/dist/audit/core/errors.js.map +1 -0
- package/dist/audit/core/hash.d.ts +9 -0
- package/dist/audit/core/hash.d.ts.map +1 -0
- package/dist/audit/core/hash.js +45 -0
- package/dist/audit/core/hash.js.map +1 -0
- package/dist/audit/core/ports.d.ts +68 -0
- package/dist/audit/core/ports.d.ts.map +1 -0
- package/dist/audit/core/ports.js +6 -0
- package/dist/audit/core/ports.js.map +1 -0
- package/dist/audit/index.d.ts +13 -0
- package/dist/audit/index.d.ts.map +1 -0
- package/dist/audit/index.js +16 -0
- package/dist/audit/index.js.map +1 -0
- package/dist/auth/adapters/argon2id-hasher.d.ts +15 -0
- package/dist/auth/adapters/argon2id-hasher.d.ts.map +1 -0
- package/dist/auth/adapters/argon2id-hasher.js +61 -0
- package/dist/auth/adapters/argon2id-hasher.js.map +1 -0
- package/dist/auth/adapters/in-memory-stores.d.ts +14 -0
- package/dist/auth/adapters/in-memory-stores.d.ts.map +1 -0
- package/dist/auth/adapters/in-memory-stores.js +78 -0
- package/dist/auth/adapters/in-memory-stores.js.map +1 -0
- package/dist/auth/core/auth-service.d.ts +40 -0
- package/dist/auth/core/auth-service.d.ts.map +1 -0
- package/dist/auth/core/auth-service.js +106 -0
- package/dist/auth/core/auth-service.js.map +1 -0
- package/dist/auth/core/credentials.d.ts +15 -0
- package/dist/auth/core/credentials.d.ts.map +1 -0
- package/dist/auth/core/credentials.js +15 -0
- package/dist/auth/core/credentials.js.map +1 -0
- package/dist/auth/core/crypto-util.d.ts +7 -0
- package/dist/auth/core/crypto-util.d.ts.map +1 -0
- package/dist/auth/core/crypto-util.js +15 -0
- package/dist/auth/core/crypto-util.js.map +1 -0
- package/dist/auth/core/errors.d.ts +33 -0
- package/dist/auth/core/errors.d.ts.map +1 -0
- package/dist/auth/core/errors.js +48 -0
- package/dist/auth/core/errors.js.map +1 -0
- package/dist/auth/core/jwt.d.ts +5 -0
- package/dist/auth/core/jwt.d.ts.map +1 -0
- package/dist/auth/core/jwt.js +40 -0
- package/dist/auth/core/jwt.js.map +1 -0
- package/dist/auth/core/ports.d.ts +95 -0
- package/dist/auth/core/ports.d.ts.map +1 -0
- package/dist/auth/core/ports.js +7 -0
- package/dist/auth/core/ports.js.map +1 -0
- package/dist/auth/core/single-use.d.ts +10 -0
- package/dist/auth/core/single-use.d.ts.map +1 -0
- package/dist/auth/core/single-use.js +47 -0
- package/dist/auth/core/single-use.js.map +1 -0
- package/dist/auth/core/tokens.d.ts +14 -0
- package/dist/auth/core/tokens.d.ts.map +1 -0
- package/dist/auth/core/tokens.js +85 -0
- package/dist/auth/core/tokens.js.map +1 -0
- package/dist/auth/index.d.ts +18 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +22 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/nestjs/auth.module.d.ts +17 -0
- package/dist/auth/nestjs/auth.module.d.ts.map +1 -0
- package/dist/auth/nestjs/auth.module.js +18 -0
- package/dist/auth/nestjs/auth.module.js.map +1 -0
- package/dist/cache/adapters/in-memory-store.d.ts +6 -0
- package/dist/cache/adapters/in-memory-store.d.ts.map +1 -0
- package/dist/cache/adapters/in-memory-store.js +65 -0
- package/dist/cache/adapters/in-memory-store.js.map +1 -0
- package/dist/cache/adapters/redis-store.d.ts +32 -0
- package/dist/cache/adapters/redis-store.d.ts.map +1 -0
- package/dist/cache/adapters/redis-store.js +59 -0
- package/dist/cache/adapters/redis-store.js.map +1 -0
- package/dist/cache/core/cache.d.ts +31 -0
- package/dist/cache/core/cache.d.ts.map +1 -0
- package/dist/cache/core/cache.js +89 -0
- package/dist/cache/core/cache.js.map +1 -0
- package/dist/cache/core/errors.d.ts +17 -0
- package/dist/cache/core/errors.d.ts.map +1 -0
- package/dist/cache/core/errors.js +27 -0
- package/dist/cache/core/errors.js.map +1 -0
- package/dist/cache/core/lock.d.ts +21 -0
- package/dist/cache/core/lock.d.ts.map +1 -0
- package/dist/cache/core/lock.js +47 -0
- package/dist/cache/core/lock.js.map +1 -0
- package/dist/cache/core/ports.d.ts +33 -0
- package/dist/cache/core/ports.d.ts.map +1 -0
- package/dist/cache/core/ports.js +6 -0
- package/dist/cache/core/ports.js.map +1 -0
- package/dist/cache/core/pubsub.d.ts +14 -0
- package/dist/cache/core/pubsub.d.ts.map +1 -0
- package/dist/cache/core/pubsub.js +13 -0
- package/dist/cache/core/pubsub.js.map +1 -0
- package/dist/cache/core/serializer.d.ts +4 -0
- package/dist/cache/core/serializer.d.ts.map +1 -0
- package/dist/cache/core/serializer.js +6 -0
- package/dist/cache/core/serializer.js.map +1 -0
- package/dist/cache/index.d.ts +14 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +19 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/config/adapters/reporters.d.ts +17 -0
- package/dist/config/adapters/reporters.d.ts.map +1 -0
- package/dist/config/adapters/reporters.js +35 -0
- package/dist/config/adapters/reporters.js.map +1 -0
- package/dist/config/adapters/secret-resolvers.d.ts +21 -0
- package/dist/config/adapters/secret-resolvers.d.ts.map +1 -0
- package/dist/config/adapters/secret-resolvers.js +60 -0
- package/dist/config/adapters/secret-resolvers.js.map +1 -0
- package/dist/config/adapters/zod-schema.d.ts +20 -0
- package/dist/config/adapters/zod-schema.d.ts.map +1 -0
- package/dist/config/adapters/zod-schema.js +35 -0
- package/dist/config/adapters/zod-schema.js.map +1 -0
- package/dist/config/core/env-loader.d.ts +47 -0
- package/dist/config/core/env-loader.d.ts.map +1 -0
- package/dist/config/core/env-loader.js +155 -0
- package/dist/config/core/env-loader.js.map +1 -0
- package/dist/config/core/errors.d.ts +34 -0
- package/dist/config/core/errors.d.ts.map +1 -0
- package/dist/config/core/errors.js +49 -0
- package/dist/config/core/errors.js.map +1 -0
- package/dist/config/core/freeze.d.ts +7 -0
- package/dist/config/core/freeze.d.ts.map +1 -0
- package/dist/config/core/freeze.js +20 -0
- package/dist/config/core/freeze.js.map +1 -0
- package/dist/config/core/load-config.d.ts +43 -0
- package/dist/config/core/load-config.d.ts.map +1 -0
- package/dist/config/core/load-config.js +74 -0
- package/dist/config/core/load-config.js.map +1 -0
- package/dist/config/core/merge.d.ts +19 -0
- package/dist/config/core/merge.d.ts.map +1 -0
- package/dist/config/core/merge.js +31 -0
- package/dist/config/core/merge.js.map +1 -0
- package/dist/config/core/ports.d.ts +58 -0
- package/dist/config/core/ports.d.ts.map +1 -0
- package/dist/config/core/ports.js +2 -0
- package/dist/config/core/ports.js.map +1 -0
- package/dist/config/core/secret-resolver.d.ts +16 -0
- package/dist/config/core/secret-resolver.d.ts.map +1 -0
- package/dist/config/core/secret-resolver.js +73 -0
- package/dist/config/core/secret-resolver.js.map +1 -0
- package/dist/config/core/secret.d.ts +21 -0
- package/dist/config/core/secret.d.ts.map +1 -0
- package/dist/config/core/secret.js +40 -0
- package/dist/config/core/secret.js.map +1 -0
- package/dist/config/index.d.ts +16 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +23 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/nestjs/config-kit.module.d.ts +37 -0
- package/dist/config/nestjs/config-kit.module.d.ts.map +1 -0
- package/dist/config/nestjs/config-kit.module.js +24 -0
- package/dist/config/nestjs/config-kit.module.js.map +1 -0
- package/dist/http/adapters/zod-schema.d.ts +11 -0
- package/dist/http/adapters/zod-schema.d.ts.map +1 -0
- package/dist/http/adapters/zod-schema.js +74 -0
- package/dist/http/adapters/zod-schema.js.map +1 -0
- package/dist/http/core/context.d.ts +25 -0
- package/dist/http/core/context.d.ts.map +1 -0
- package/dist/http/core/context.js +60 -0
- package/dist/http/core/context.js.map +1 -0
- package/dist/http/core/errors.d.ts +41 -0
- package/dist/http/core/errors.d.ts.map +1 -0
- package/dist/http/core/errors.js +99 -0
- package/dist/http/core/errors.js.map +1 -0
- package/dist/http/core/kernel.d.ts +54 -0
- package/dist/http/core/kernel.d.ts.map +1 -0
- package/dist/http/core/kernel.js +122 -0
- package/dist/http/core/kernel.js.map +1 -0
- package/dist/http/core/openapi.d.ts +37 -0
- package/dist/http/core/openapi.d.ts.map +1 -0
- package/dist/http/core/openapi.js +99 -0
- package/dist/http/core/openapi.js.map +1 -0
- package/dist/http/core/pagination.d.ts +17 -0
- package/dist/http/core/pagination.d.ts.map +1 -0
- package/dist/http/core/pagination.js +108 -0
- package/dist/http/core/pagination.js.map +1 -0
- package/dist/http/core/ports.d.ts +106 -0
- package/dist/http/core/ports.d.ts.map +1 -0
- package/dist/http/core/ports.js +6 -0
- package/dist/http/core/ports.js.map +1 -0
- package/dist/http/core/redaction.d.ts +8 -0
- package/dist/http/core/redaction.d.ts.map +1 -0
- package/dist/http/core/redaction.js +45 -0
- package/dist/http/core/redaction.js.map +1 -0
- package/dist/http/core/router.d.ts +37 -0
- package/dist/http/core/router.d.ts.map +1 -0
- package/dist/http/core/router.js +120 -0
- package/dist/http/core/router.js.map +1 -0
- package/dist/http/core/security.d.ts +43 -0
- package/dist/http/core/security.d.ts.map +1 -0
- package/dist/http/core/security.js +66 -0
- package/dist/http/core/security.js.map +1 -0
- package/dist/http/core/validation.d.ts +9 -0
- package/dist/http/core/validation.d.ts.map +1 -0
- package/dist/http/core/validation.js +36 -0
- package/dist/http/core/validation.js.map +1 -0
- package/dist/http/index.d.ts +20 -0
- package/dist/http/index.d.ts.map +1 -0
- package/dist/http/index.js +29 -0
- package/dist/http/index.js.map +1 -0
- package/dist/http/nestjs/http-kernel.module.d.ts +37 -0
- package/dist/http/nestjs/http-kernel.module.d.ts.map +1 -0
- package/dist/http/nestjs/http-kernel.module.js +77 -0
- package/dist/http/nestjs/http-kernel.module.js.map +1 -0
- package/dist/http/nodejs/http-adapter.d.ts +11 -0
- package/dist/http/nodejs/http-adapter.d.ts.map +1 -0
- package/dist/http/nodejs/http-adapter.js +60 -0
- package/dist/http/nodejs/http-adapter.js.map +1 -0
- package/dist/i18n/core/catalog.d.ts +23 -0
- package/dist/i18n/core/catalog.d.ts.map +1 -0
- package/dist/i18n/core/catalog.js +31 -0
- package/dist/i18n/core/catalog.js.map +1 -0
- package/dist/i18n/core/errors.d.ts +14 -0
- package/dist/i18n/core/errors.d.ts.map +1 -0
- package/dist/i18n/core/errors.js +22 -0
- package/dist/i18n/core/errors.js.map +1 -0
- package/dist/i18n/core/i18n.d.ts +20 -0
- package/dist/i18n/core/i18n.d.ts.map +1 -0
- package/dist/i18n/core/i18n.js +48 -0
- package/dist/i18n/core/i18n.js.map +1 -0
- package/dist/i18n/core/message.d.ts +8 -0
- package/dist/i18n/core/message.d.ts.map +1 -0
- package/dist/i18n/core/message.js +38 -0
- package/dist/i18n/core/message.js.map +1 -0
- package/dist/i18n/core/negotiate.d.ts +13 -0
- package/dist/i18n/core/negotiate.d.ts.map +1 -0
- package/dist/i18n/core/negotiate.js +46 -0
- package/dist/i18n/core/negotiate.js.map +1 -0
- package/dist/i18n/core/ports.d.ts +35 -0
- package/dist/i18n/core/ports.d.ts.map +1 -0
- package/dist/i18n/core/ports.js +6 -0
- package/dist/i18n/core/ports.js.map +1 -0
- package/dist/i18n/index.d.ts +14 -0
- package/dist/i18n/index.d.ts.map +1 -0
- package/dist/i18n/index.js +18 -0
- package/dist/i18n/index.js.map +1 -0
- package/dist/i18n/nestjs/i18n.module.d.ts +16 -0
- package/dist/i18n/nestjs/i18n.module.d.ts.map +1 -0
- package/dist/i18n/nestjs/i18n.module.js +17 -0
- package/dist/i18n/nestjs/i18n.module.js.map +1 -0
- package/dist/index.d.ts +31 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +31 -0
- package/dist/index.js.map +1 -0
- package/dist/jobs/adapters/in-memory-idempotency.d.ts +9 -0
- package/dist/jobs/adapters/in-memory-idempotency.d.ts.map +1 -0
- package/dist/jobs/adapters/in-memory-idempotency.js +34 -0
- package/dist/jobs/adapters/in-memory-idempotency.js.map +1 -0
- package/dist/jobs/adapters/in-memory-queue-store.d.ts +7 -0
- package/dist/jobs/adapters/in-memory-queue-store.d.ts.map +1 -0
- package/dist/jobs/adapters/in-memory-queue-store.js +70 -0
- package/dist/jobs/adapters/in-memory-queue-store.js.map +1 -0
- package/dist/jobs/adapters/redis-queue-store.d.ts +28 -0
- package/dist/jobs/adapters/redis-queue-store.d.ts.map +1 -0
- package/dist/jobs/adapters/redis-queue-store.js +86 -0
- package/dist/jobs/adapters/redis-queue-store.js.map +1 -0
- package/dist/jobs/core/backoff.d.ts +15 -0
- package/dist/jobs/core/backoff.d.ts.map +1 -0
- package/dist/jobs/core/backoff.js +20 -0
- package/dist/jobs/core/backoff.js.map +1 -0
- package/dist/jobs/core/cron.d.ts +13 -0
- package/dist/jobs/core/cron.d.ts.map +1 -0
- package/dist/jobs/core/cron.js +101 -0
- package/dist/jobs/core/cron.js.map +1 -0
- package/dist/jobs/core/errors.d.ts +18 -0
- package/dist/jobs/core/errors.d.ts.map +1 -0
- package/dist/jobs/core/errors.js +30 -0
- package/dist/jobs/core/errors.js.map +1 -0
- package/dist/jobs/core/ports.d.ts +80 -0
- package/dist/jobs/core/ports.d.ts.map +1 -0
- package/dist/jobs/core/ports.js +6 -0
- package/dist/jobs/core/ports.js.map +1 -0
- package/dist/jobs/core/queue.d.ts +16 -0
- package/dist/jobs/core/queue.d.ts.map +1 -0
- package/dist/jobs/core/queue.js +29 -0
- package/dist/jobs/core/queue.js.map +1 -0
- package/dist/jobs/core/registry.d.ts +4 -0
- package/dist/jobs/core/registry.d.ts.map +1 -0
- package/dist/jobs/core/registry.js +11 -0
- package/dist/jobs/core/registry.js.map +1 -0
- package/dist/jobs/core/scheduler.d.ts +30 -0
- package/dist/jobs/core/scheduler.d.ts.map +1 -0
- package/dist/jobs/core/scheduler.js +53 -0
- package/dist/jobs/core/scheduler.js.map +1 -0
- package/dist/jobs/core/serializer.d.ts +3 -0
- package/dist/jobs/core/serializer.d.ts.map +1 -0
- package/dist/jobs/core/serializer.js +5 -0
- package/dist/jobs/core/serializer.js.map +1 -0
- package/dist/jobs/core/worker.d.ts +28 -0
- package/dist/jobs/core/worker.d.ts.map +1 -0
- package/dist/jobs/core/worker.js +118 -0
- package/dist/jobs/core/worker.js.map +1 -0
- package/dist/jobs/index.d.ts +18 -0
- package/dist/jobs/index.d.ts.map +1 -0
- package/dist/jobs/index.js +23 -0
- package/dist/jobs/index.js.map +1 -0
- package/dist/mailer/adapters/dev-inbox.d.ts +17 -0
- package/dist/mailer/adapters/dev-inbox.d.ts.map +1 -0
- package/dist/mailer/adapters/dev-inbox.js +29 -0
- package/dist/mailer/adapters/dev-inbox.js.map +1 -0
- package/dist/mailer/adapters/i18n-renderer.d.ts +13 -0
- package/dist/mailer/adapters/i18n-renderer.d.ts.map +1 -0
- package/dist/mailer/adapters/i18n-renderer.js +27 -0
- package/dist/mailer/adapters/i18n-renderer.js.map +1 -0
- package/dist/mailer/adapters/in-memory-templates.d.ts +6 -0
- package/dist/mailer/adapters/in-memory-templates.d.ts.map +1 -0
- package/dist/mailer/adapters/in-memory-templates.js +6 -0
- package/dist/mailer/adapters/in-memory-templates.js.map +1 -0
- package/dist/mailer/adapters/transports.d.ts +19 -0
- package/dist/mailer/adapters/transports.d.ts.map +1 -0
- package/dist/mailer/adapters/transports.js +38 -0
- package/dist/mailer/adapters/transports.js.map +1 -0
- package/dist/mailer/core/errors.d.ts +23 -0
- package/dist/mailer/core/errors.d.ts.map +1 -0
- package/dist/mailer/core/errors.js +40 -0
- package/dist/mailer/core/errors.js.map +1 -0
- package/dist/mailer/core/failover.d.ts +3 -0
- package/dist/mailer/core/failover.d.ts.map +1 -0
- package/dist/mailer/core/failover.js +30 -0
- package/dist/mailer/core/failover.js.map +1 -0
- package/dist/mailer/core/mailer.d.ts +25 -0
- package/dist/mailer/core/mailer.d.ts.map +1 -0
- package/dist/mailer/core/mailer.js +61 -0
- package/dist/mailer/core/mailer.js.map +1 -0
- package/dist/mailer/core/ports.d.ts +54 -0
- package/dist/mailer/core/ports.d.ts.map +1 -0
- package/dist/mailer/core/ports.js +6 -0
- package/dist/mailer/core/ports.js.map +1 -0
- package/dist/mailer/core/render.d.ts +4 -0
- package/dist/mailer/core/render.d.ts.map +1 -0
- package/dist/mailer/core/render.js +29 -0
- package/dist/mailer/core/render.js.map +1 -0
- package/dist/mailer/index.d.ts +17 -0
- package/dist/mailer/index.d.ts.map +1 -0
- package/dist/mailer/index.js +21 -0
- package/dist/mailer/index.js.map +1 -0
- package/dist/mailer/nestjs/mailer.module.d.ts +17 -0
- package/dist/mailer/nestjs/mailer.module.d.ts.map +1 -0
- package/dist/mailer/nestjs/mailer.module.js +15 -0
- package/dist/mailer/nestjs/mailer.module.js.map +1 -0
- package/dist/observability/core/context.d.ts +9 -0
- package/dist/observability/core/context.d.ts.map +1 -0
- package/dist/observability/core/context.js +15 -0
- package/dist/observability/core/context.js.map +1 -0
- package/dist/observability/core/health.d.ts +40 -0
- package/dist/observability/core/health.d.ts.map +1 -0
- package/dist/observability/core/health.js +51 -0
- package/dist/observability/core/health.js.map +1 -0
- package/dist/observability/core/logger.d.ts +22 -0
- package/dist/observability/core/logger.d.ts.map +1 -0
- package/dist/observability/core/logger.js +45 -0
- package/dist/observability/core/logger.js.map +1 -0
- package/dist/observability/core/metrics.d.ts +63 -0
- package/dist/observability/core/metrics.d.ts.map +1 -0
- package/dist/observability/core/metrics.js +172 -0
- package/dist/observability/core/metrics.js.map +1 -0
- package/dist/observability/core/redaction.d.ts +10 -0
- package/dist/observability/core/redaction.d.ts.map +1 -0
- package/dist/observability/core/redaction.js +48 -0
- package/dist/observability/core/redaction.js.map +1 -0
- package/dist/observability/core/tracing.d.ts +52 -0
- package/dist/observability/core/tracing.d.ts.map +1 -0
- package/dist/observability/core/tracing.js +88 -0
- package/dist/observability/core/tracing.js.map +1 -0
- package/dist/observability/index.d.ts +14 -0
- package/dist/observability/index.d.ts.map +1 -0
- package/dist/observability/index.js +19 -0
- package/dist/observability/index.js.map +1 -0
- package/dist/observability/nestjs/observability.module.d.ts +35 -0
- package/dist/observability/nestjs/observability.module.d.ts.map +1 -0
- package/dist/observability/nestjs/observability.module.js +87 -0
- package/dist/observability/nestjs/observability.module.js.map +1 -0
- package/dist/persistence/adapters/in-memory-driver.d.ts +18 -0
- package/dist/persistence/adapters/in-memory-driver.d.ts.map +1 -0
- package/dist/persistence/adapters/in-memory-driver.js +229 -0
- package/dist/persistence/adapters/in-memory-driver.js.map +1 -0
- package/dist/persistence/adapters/pg-driver.d.ts +21 -0
- package/dist/persistence/adapters/pg-driver.d.ts.map +1 -0
- package/dist/persistence/adapters/pg-driver.js +42 -0
- package/dist/persistence/adapters/pg-driver.js.map +1 -0
- package/dist/persistence/adapters/testcontainer-harness.d.ts +37 -0
- package/dist/persistence/adapters/testcontainer-harness.d.ts.map +1 -0
- package/dist/persistence/adapters/testcontainer-harness.js +79 -0
- package/dist/persistence/adapters/testcontainer-harness.js.map +1 -0
- package/dist/persistence/core/errors.d.ts +36 -0
- package/dist/persistence/core/errors.d.ts.map +1 -0
- package/dist/persistence/core/errors.js +58 -0
- package/dist/persistence/core/errors.js.map +1 -0
- package/dist/persistence/core/migrations.d.ts +16 -0
- package/dist/persistence/core/migrations.d.ts.map +1 -0
- package/dist/persistence/core/migrations.js +95 -0
- package/dist/persistence/core/migrations.js.map +1 -0
- package/dist/persistence/core/pool.d.ts +4 -0
- package/dist/persistence/core/pool.d.ts.map +1 -0
- package/dist/persistence/core/pool.js +180 -0
- package/dist/persistence/core/pool.js.map +1 -0
- package/dist/persistence/core/ports.d.ts +91 -0
- package/dist/persistence/core/ports.d.ts.map +1 -0
- package/dist/persistence/core/ports.js +6 -0
- package/dist/persistence/core/ports.js.map +1 -0
- package/dist/persistence/core/repository.d.ts +18 -0
- package/dist/persistence/core/repository.d.ts.map +1 -0
- package/dist/persistence/core/repository.js +113 -0
- package/dist/persistence/core/repository.js.map +1 -0
- package/dist/persistence/core/sql.d.ts +13 -0
- package/dist/persistence/core/sql.d.ts.map +1 -0
- package/dist/persistence/core/sql.js +35 -0
- package/dist/persistence/core/sql.js.map +1 -0
- package/dist/persistence/index.d.ts +14 -0
- package/dist/persistence/index.d.ts.map +1 -0
- package/dist/persistence/index.js +22 -0
- package/dist/persistence/index.js.map +1 -0
- package/dist/persistence/pg.d.ts +7 -0
- package/dist/persistence/pg.d.ts.map +1 -0
- package/dist/persistence/pg.js +7 -0
- package/dist/persistence/pg.js.map +1 -0
- package/dist/privacy/adapters/audit-sink.d.ts +19 -0
- package/dist/privacy/adapters/audit-sink.d.ts.map +1 -0
- package/dist/privacy/adapters/audit-sink.js +13 -0
- package/dist/privacy/adapters/audit-sink.js.map +1 -0
- package/dist/privacy/adapters/in-memory-consent-store.d.ts +7 -0
- package/dist/privacy/adapters/in-memory-consent-store.d.ts.map +1 -0
- package/dist/privacy/adapters/in-memory-consent-store.js +18 -0
- package/dist/privacy/adapters/in-memory-consent-store.js.map +1 -0
- package/dist/privacy/adapters/pg-consent-store.d.ts +26 -0
- package/dist/privacy/adapters/pg-consent-store.d.ts.map +1 -0
- package/dist/privacy/adapters/pg-consent-store.js +43 -0
- package/dist/privacy/adapters/pg-consent-store.js.map +1 -0
- package/dist/privacy/core/consent.d.ts +35 -0
- package/dist/privacy/core/consent.d.ts.map +1 -0
- package/dist/privacy/core/consent.js +49 -0
- package/dist/privacy/core/consent.js.map +1 -0
- package/dist/privacy/core/erasure.d.ts +22 -0
- package/dist/privacy/core/erasure.d.ts.map +1 -0
- package/dist/privacy/core/erasure.js +35 -0
- package/dist/privacy/core/erasure.js.map +1 -0
- package/dist/privacy/core/errors.d.ts +18 -0
- package/dist/privacy/core/errors.d.ts.map +1 -0
- package/dist/privacy/core/errors.js +30 -0
- package/dist/privacy/core/errors.js.map +1 -0
- package/dist/privacy/core/export.d.ts +20 -0
- package/dist/privacy/core/export.d.ts.map +1 -0
- package/dist/privacy/core/export.js +30 -0
- package/dist/privacy/core/export.js.map +1 -0
- package/dist/privacy/core/ports.d.ts +48 -0
- package/dist/privacy/core/ports.d.ts.map +1 -0
- package/dist/privacy/core/ports.js +6 -0
- package/dist/privacy/core/ports.js.map +1 -0
- package/dist/privacy/core/registry.d.ts +17 -0
- package/dist/privacy/core/registry.d.ts.map +1 -0
- package/dist/privacy/core/registry.js +31 -0
- package/dist/privacy/core/registry.js.map +1 -0
- package/dist/privacy/index.d.ts +16 -0
- package/dist/privacy/index.d.ts.map +1 -0
- package/dist/privacy/index.js +21 -0
- package/dist/privacy/index.js.map +1 -0
- package/dist/rate-limit/adapters/in-memory-store.d.ts +7 -0
- package/dist/rate-limit/adapters/in-memory-store.d.ts.map +1 -0
- package/dist/rate-limit/adapters/in-memory-store.js +50 -0
- package/dist/rate-limit/adapters/in-memory-store.js.map +1 -0
- package/dist/rate-limit/adapters/redis-store.d.ts +11 -0
- package/dist/rate-limit/adapters/redis-store.d.ts.map +1 -0
- package/dist/rate-limit/adapters/redis-store.js +93 -0
- package/dist/rate-limit/adapters/redis-store.js.map +1 -0
- package/dist/rate-limit/core/enforcer.d.ts +23 -0
- package/dist/rate-limit/core/enforcer.d.ts.map +1 -0
- package/dist/rate-limit/core/enforcer.js +27 -0
- package/dist/rate-limit/core/enforcer.js.map +1 -0
- package/dist/rate-limit/core/errors.d.ts +19 -0
- package/dist/rate-limit/core/errors.d.ts.map +1 -0
- package/dist/rate-limit/core/errors.js +32 -0
- package/dist/rate-limit/core/errors.js.map +1 -0
- package/dist/rate-limit/core/ports.d.ts +50 -0
- package/dist/rate-limit/core/ports.d.ts.map +1 -0
- package/dist/rate-limit/core/ports.js +6 -0
- package/dist/rate-limit/core/ports.js.map +1 -0
- package/dist/rate-limit/core/sliding-window.d.ts +9 -0
- package/dist/rate-limit/core/sliding-window.d.ts.map +1 -0
- package/dist/rate-limit/core/sliding-window.js +24 -0
- package/dist/rate-limit/core/sliding-window.js.map +1 -0
- package/dist/rate-limit/core/token-bucket.d.ts +9 -0
- package/dist/rate-limit/core/token-bucket.d.ts.map +1 -0
- package/dist/rate-limit/core/token-bucket.js +24 -0
- package/dist/rate-limit/core/token-bucket.js.map +1 -0
- package/dist/rate-limit/index.d.ts +15 -0
- package/dist/rate-limit/index.d.ts.map +1 -0
- package/dist/rate-limit/index.js +19 -0
- package/dist/rate-limit/index.js.map +1 -0
- package/dist/rate-limit/nestjs/rate-limit.module.d.ts +25 -0
- package/dist/rate-limit/nestjs/rate-limit.module.d.ts.map +1 -0
- package/dist/rate-limit/nestjs/rate-limit.module.js +63 -0
- package/dist/rate-limit/nestjs/rate-limit.module.js.map +1 -0
- package/dist/rate-limit/nodejs/middleware.d.ts +16 -0
- package/dist/rate-limit/nodejs/middleware.d.ts.map +1 -0
- package/dist/rate-limit/nodejs/middleware.js +26 -0
- package/dist/rate-limit/nodejs/middleware.js.map +1 -0
- package/dist/test-kit/adapters/infra-bootstrap.d.ts +40 -0
- package/dist/test-kit/adapters/infra-bootstrap.d.ts.map +1 -0
- package/dist/test-kit/adapters/infra-bootstrap.js +64 -0
- package/dist/test-kit/adapters/infra-bootstrap.js.map +1 -0
- package/dist/test-kit/core/contract.d.ts +49 -0
- package/dist/test-kit/core/contract.d.ts.map +1 -0
- package/dist/test-kit/core/contract.js +52 -0
- package/dist/test-kit/core/contract.js.map +1 -0
- package/dist/test-kit/core/errors.d.ts +12 -0
- package/dist/test-kit/core/errors.d.ts.map +1 -0
- package/dist/test-kit/core/errors.js +19 -0
- package/dist/test-kit/core/errors.js.map +1 -0
- package/dist/test-kit/core/factories.d.ts +24 -0
- package/dist/test-kit/core/factories.d.ts.map +1 -0
- package/dist/test-kit/core/factories.js +57 -0
- package/dist/test-kit/core/factories.js.map +1 -0
- package/dist/test-kit/core/http-client.d.ts +46 -0
- package/dist/test-kit/core/http-client.d.ts.map +1 -0
- package/dist/test-kit/core/http-client.js +63 -0
- package/dist/test-kit/core/http-client.js.map +1 -0
- package/dist/test-kit/index.d.ts +10 -0
- package/dist/test-kit/index.d.ts.map +1 -0
- package/dist/test-kit/index.js +14 -0
- package/dist/test-kit/index.js.map +1 -0
- package/dist/test-kit/infra.d.ts +6 -0
- package/dist/test-kit/infra.d.ts.map +1 -0
- package/dist/test-kit/infra.js +6 -0
- package/dist/test-kit/infra.js.map +1 -0
- package/package.json +170 -0
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/** Formatteert een rapport tot een mensvriendelijke, geredigeerde tekst. */
|
|
2
|
+
export function formatReport(report) {
|
|
3
|
+
const header = report.environment
|
|
4
|
+
? `${report.title} (omgeving: ${report.environment})`
|
|
5
|
+
: report.title;
|
|
6
|
+
const lines = [
|
|
7
|
+
header,
|
|
8
|
+
'',
|
|
9
|
+
`${report.issues.length} probleem${report.issues.length === 1 ? '' : 'en'} gevonden:`,
|
|
10
|
+
...report.issues.map((issue) => ` - ${issue.path}: ${issue.message}`),
|
|
11
|
+
'',
|
|
12
|
+
'Corrigeer de bovenstaande waarden en start opnieuw.',
|
|
13
|
+
];
|
|
14
|
+
return lines.join('\n');
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Schrijft het geformatteerde rapport naar een sink (default `console.error`). Bevat nooit
|
|
18
|
+
* secretwaarden — de issues zijn reeds geredigeerd.
|
|
19
|
+
*/
|
|
20
|
+
export function consoleReporter(sink = console.error) {
|
|
21
|
+
return {
|
|
22
|
+
report: (report) => sink(formatReport(report)),
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
/** Reporter die rapporten verzamelt in geheugen. Handig voor tests en assertions. */
|
|
26
|
+
export function collectingReporter() {
|
|
27
|
+
const reports = [];
|
|
28
|
+
return {
|
|
29
|
+
reports,
|
|
30
|
+
report: (report) => {
|
|
31
|
+
reports.push(report);
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=reporters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reporters.js","sourceRoot":"","sources":["../../../src/config/adapters/reporters.ts"],"names":[],"mappings":"AAMA,4EAA4E;AAC5E,MAAM,UAAU,YAAY,CAAC,MAAoB;IAC/C,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW;QAC/B,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,eAAe,MAAM,CAAC,WAAW,GAAG;QACrD,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;IACjB,MAAM,KAAK,GAAG;QACZ,MAAM;QACN,EAAE;QACF,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,YAAY,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,YAAY;QACrF,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;QACtE,EAAE;QACF,qDAAqD;KACtD,CAAC;IACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,OAAkC,OAAO,CAAC,KAAK;IAC7E,OAAO;QACL,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;KAC/C,CAAC;AACJ,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,kBAAkB;IAChC,MAAM,OAAO,GAAmB,EAAE,CAAC;IACnC,OAAO;QACL,OAAO;QACP,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE;YACjB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { SecretRef, SecretResolver } from '../core/ports.js';
|
|
2
|
+
/**
|
|
3
|
+
* Lost `file://`-referenties op vanaf het bestandssysteem, bv.
|
|
4
|
+
* `file:///run/secrets/db_password` -> inhoud van `/run/secrets/db_password` (getrimd).
|
|
5
|
+
*/
|
|
6
|
+
export declare function fileSecretResolver(options?: {
|
|
7
|
+
trim?: boolean;
|
|
8
|
+
}): SecretResolver;
|
|
9
|
+
/**
|
|
10
|
+
* In-memory resolver voor een gegeven schema (bv. `vault`), gevoed uit een map. Handig als stub voor
|
|
11
|
+
* een vault-backend, voor tests, of als eenvoudige custom backend.
|
|
12
|
+
*/
|
|
13
|
+
export declare function mapSecretResolver(scheme: string, entries: Record<string, string>): SecretResolver;
|
|
14
|
+
/**
|
|
15
|
+
* Adapter rondom een custom async backend-functie. Het schema bepaalt welke referenties deze
|
|
16
|
+
* resolver aankan.
|
|
17
|
+
*/
|
|
18
|
+
export declare function functionSecretResolver(scheme: string, fn: (ref: SecretRef) => Promise<string> | string): SecretResolver;
|
|
19
|
+
/** Combineert meerdere resolvers; de eerste die de referentie aankan wint. */
|
|
20
|
+
export declare function compositeSecretResolver(...resolvers: SecretResolver[]): SecretResolver;
|
|
21
|
+
//# sourceMappingURL=secret-resolvers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secret-resolvers.d.ts","sourceRoot":"","sources":["../../../src/config/adapters/secret-resolvers.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElE;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,cAAc,CAUnF;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,cAAc,CAWjG;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,CAAC,GAAG,EAAE,SAAS,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,GAC/C,cAAc,CAKhB;AAED,8EAA8E;AAC9E,wBAAgB,uBAAuB,CAAC,GAAG,SAAS,EAAE,cAAc,EAAE,GAAG,cAAc,CAWtF"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* US-0102 — Kant-en-klare {@link SecretResolver}-adapters. Consumers kunnen ook een eigen backend
|
|
3
|
+
* aankoppelen zonder de module te wijzigen (portabiliteit).
|
|
4
|
+
*/
|
|
5
|
+
import { readFile } from 'node:fs/promises';
|
|
6
|
+
/**
|
|
7
|
+
* Lost `file://`-referenties op vanaf het bestandssysteem, bv.
|
|
8
|
+
* `file:///run/secrets/db_password` -> inhoud van `/run/secrets/db_password` (getrimd).
|
|
9
|
+
*/
|
|
10
|
+
export function fileSecretResolver(options = {}) {
|
|
11
|
+
const trim = options.trim ?? true;
|
|
12
|
+
return {
|
|
13
|
+
canResolve: (ref) => ref.scheme === 'file',
|
|
14
|
+
resolve: async (ref) => {
|
|
15
|
+
const path = ref.raw.replace(/^file:\/\//i, '');
|
|
16
|
+
const content = await readFile(path, 'utf8');
|
|
17
|
+
return trim ? content.trim() : content;
|
|
18
|
+
},
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* In-memory resolver voor een gegeven schema (bv. `vault`), gevoed uit een map. Handig als stub voor
|
|
23
|
+
* een vault-backend, voor tests, of als eenvoudige custom backend.
|
|
24
|
+
*/
|
|
25
|
+
export function mapSecretResolver(scheme, entries) {
|
|
26
|
+
return {
|
|
27
|
+
canResolve: (ref) => ref.scheme === scheme,
|
|
28
|
+
resolve: (ref) => {
|
|
29
|
+
if (!Object.prototype.hasOwnProperty.call(entries, ref.location)) {
|
|
30
|
+
// Bewust generiek: geen (deels) secretwaarde in de fout.
|
|
31
|
+
throw new Error('sleutel niet gevonden');
|
|
32
|
+
}
|
|
33
|
+
return entries[ref.location];
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Adapter rondom een custom async backend-functie. Het schema bepaalt welke referenties deze
|
|
39
|
+
* resolver aankan.
|
|
40
|
+
*/
|
|
41
|
+
export function functionSecretResolver(scheme, fn) {
|
|
42
|
+
return {
|
|
43
|
+
canResolve: (ref) => ref.scheme === scheme,
|
|
44
|
+
resolve: (ref) => fn(ref),
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
/** Combineert meerdere resolvers; de eerste die de referentie aankan wint. */
|
|
48
|
+
export function compositeSecretResolver(...resolvers) {
|
|
49
|
+
return {
|
|
50
|
+
canResolve: (ref) => resolvers.some((r) => r.canResolve(ref)),
|
|
51
|
+
resolve: (ref) => {
|
|
52
|
+
const resolver = resolvers.find((r) => r.canResolve(ref));
|
|
53
|
+
if (!resolver) {
|
|
54
|
+
throw new Error('sleutel niet gevonden');
|
|
55
|
+
}
|
|
56
|
+
return resolver.resolve(ref);
|
|
57
|
+
},
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=secret-resolvers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secret-resolvers.js","sourceRoot":"","sources":["../../../src/config/adapters/secret-resolvers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG5C;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,UAA8B,EAAE;IACjE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC;IAClC,OAAO;QACL,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,MAAM;QAC1C,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YACrB,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;YAChD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC7C,OAAO,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;QACzC,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAc,EAAE,OAA+B;IAC/E,OAAO;QACL,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,MAAM;QAC1C,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACf,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACjE,yDAAyD;gBACzD,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;YAC3C,CAAC;YACD,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAW,CAAC;QACzC,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CACpC,MAAc,EACd,EAAgD;IAEhD,OAAO;QACL,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,MAAM;QAC1C,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC;KAC1B,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,uBAAuB,CAAC,GAAG,SAA2B;IACpE,OAAO;QACL,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAC7D,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACf,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1D,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;YAC3C,CAAC;YACD,OAAO,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC/B,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* US-0103 — Zod-adapter voor de {@link ConfigSchema}-poort.
|
|
3
|
+
*
|
|
4
|
+
* Wrapt een Zod-schema tot een config-kit-schema. Het output-type wordt met `z.infer` uit het
|
|
5
|
+
* schema afgeleid (geen `any`), validatie verzamelt ALLE overtredingen, en de Zod-`z.coerce`-helpers
|
|
6
|
+
* kunnen gebruikt worden voor scalaire coercie (string -> number/boolean) tijdens validatie.
|
|
7
|
+
*
|
|
8
|
+
* Zod is een peer-dependency; de core zelf hangt er niet van af.
|
|
9
|
+
*/
|
|
10
|
+
import { z, type ZodType } from 'zod';
|
|
11
|
+
import type { ConfigSchema } from '../core/ports.js';
|
|
12
|
+
import { Secret } from '../core/secret.js';
|
|
13
|
+
/** Maakt een {@link ConfigSchema} van een Zod-schema. */
|
|
14
|
+
export declare function zodSchema<S extends ZodType>(schema: S): ConfigSchema<z.infer<S>>;
|
|
15
|
+
/**
|
|
16
|
+
* Zod-type voor een secretveld: verwacht een reeds-opgeloste {@link Secret} (de secret-resolutie
|
|
17
|
+
* loopt vóór validatie). Het output-type is `Secret`, zodat consumers bewust `.reveal()` aanroepen.
|
|
18
|
+
*/
|
|
19
|
+
export declare function zodSecret(): z.ZodType<Secret>;
|
|
20
|
+
//# sourceMappingURL=zod-schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zod-schema.d.ts","sourceRoot":"","sources":["../../../src/config/adapters/zod-schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,CAAC,EAAE,KAAK,OAAO,EAAE,MAAM,KAAK,CAAC;AAEtC,OAAO,KAAK,EAAE,YAAY,EAAoB,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,yDAAyD;AACzD,wBAAgB,SAAS,CAAC,CAAC,SAAS,OAAO,EAAE,MAAM,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAUhF;AAED;;;GAGG;AACH,wBAAgB,SAAS,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAE7C"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* US-0103 — Zod-adapter voor de {@link ConfigSchema}-poort.
|
|
3
|
+
*
|
|
4
|
+
* Wrapt een Zod-schema tot een config-kit-schema. Het output-type wordt met `z.infer` uit het
|
|
5
|
+
* schema afgeleid (geen `any`), validatie verzamelt ALLE overtredingen, en de Zod-`z.coerce`-helpers
|
|
6
|
+
* kunnen gebruikt worden voor scalaire coercie (string -> number/boolean) tijdens validatie.
|
|
7
|
+
*
|
|
8
|
+
* Zod is een peer-dependency; de core zelf hangt er niet van af.
|
|
9
|
+
*/
|
|
10
|
+
import { z } from 'zod';
|
|
11
|
+
import { Secret } from '../core/secret.js';
|
|
12
|
+
/** Maakt een {@link ConfigSchema} van een Zod-schema. */
|
|
13
|
+
export function zodSchema(schema) {
|
|
14
|
+
return {
|
|
15
|
+
validate(raw) {
|
|
16
|
+
const result = schema.safeParse(raw);
|
|
17
|
+
if (result.success) {
|
|
18
|
+
return { success: true, value: result.data };
|
|
19
|
+
}
|
|
20
|
+
return { success: false, issues: result.error.issues.map(toIssue) };
|
|
21
|
+
},
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Zod-type voor een secretveld: verwacht een reeds-opgeloste {@link Secret} (de secret-resolutie
|
|
26
|
+
* loopt vóór validatie). Het output-type is `Secret`, zodat consumers bewust `.reveal()` aanroepen.
|
|
27
|
+
*/
|
|
28
|
+
export function zodSecret() {
|
|
29
|
+
return z.instanceof(Secret);
|
|
30
|
+
}
|
|
31
|
+
function toIssue(issue) {
|
|
32
|
+
const path = issue.path.length > 0 ? issue.path.join('.') : '(root)';
|
|
33
|
+
return { path, message: issue.message };
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=zod-schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zod-schema.js","sourceRoot":"","sources":["../../../src/config/adapters/zod-schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,CAAC,EAAgB,MAAM,KAAK,CAAC;AAGtC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,yDAAyD;AACzD,MAAM,UAAU,SAAS,CAAoB,MAAS;IACpD,OAAO;QACL,QAAQ,CAAC,GAAY;YACnB,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACrC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;YAC/C,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QACtE,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS;IACvB,OAAO,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,OAAO,CAAC,KAAiB;IAChC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IACrE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;AAC1C,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* US-0101 — Env laden & parsen.
|
|
3
|
+
*
|
|
4
|
+
* Leest omgevingsvariabelen en optionele `.env`-bronnen in en zet ze om naar een genest, ruw
|
|
5
|
+
* configuratie-object volgens de key-conventie (`DB__HOST` -> `db.host`). Coercie naar primitieve
|
|
6
|
+
* types gebeurt schema-gedreven via {@link coerceByMap}. De module bevat geen domeinkennis: welke
|
|
7
|
+
* keys en types bestaan komt uit het geïnjecteerde schema/typemap.
|
|
8
|
+
*/
|
|
9
|
+
import { type ConfigIssue } from './errors.js';
|
|
10
|
+
import type { RawConfig } from './ports.js';
|
|
11
|
+
export type ScalarKind = 'string' | 'number' | 'boolean' | 'list';
|
|
12
|
+
/** Map van dotted pad -> verwacht scalair type (afgeleid uit het geïnjecteerde schema). */
|
|
13
|
+
export type TypeMap = Record<string, ScalarKind>;
|
|
14
|
+
export interface ParseEnvOptions {
|
|
15
|
+
/** Scheidingsteken voor nesting. Default `__`. */
|
|
16
|
+
separator?: string;
|
|
17
|
+
/**
|
|
18
|
+
* Optionele prefix; alleen keys met deze prefix worden meegenomen en de prefix wordt gestript.
|
|
19
|
+
* Bv. prefix `APP_` -> `APP_DB__HOST` wordt `db.host`.
|
|
20
|
+
*/
|
|
21
|
+
prefix?: string;
|
|
22
|
+
/** Segmenten lowercasen (default true), zodat `DB__HOST` -> `db.host`. */
|
|
23
|
+
lowercase?: boolean;
|
|
24
|
+
}
|
|
25
|
+
type EnvRecord = Record<string, string | undefined>;
|
|
26
|
+
/** Zet een platte env-record om naar een genest ruw configuratie-object. */
|
|
27
|
+
export declare function parseEnv(env: EnvRecord, options?: ParseEnvOptions): RawConfig;
|
|
28
|
+
/** Parse `.env`-bestandsinhoud naar een platte record (KEY=VALUE, comments/lege regels genegeerd). */
|
|
29
|
+
export declare function parseDotenv(content: string): Record<string, string>;
|
|
30
|
+
/**
|
|
31
|
+
* Voegt meerdere ruwe bronnen samen met voorrangsvolgorde: latere bronnen winnen (US-0101 AC2).
|
|
32
|
+
* Diepe merge, override wint per key.
|
|
33
|
+
*/
|
|
34
|
+
export declare function mergeSources(...sources: RawConfig[]): RawConfig;
|
|
35
|
+
/**
|
|
36
|
+
* Coerce ruwe (string) waarden naar hun schema-type op basis van een {@link TypeMap} (US-0101).
|
|
37
|
+
*
|
|
38
|
+
* @param mode `'throw'` gooit een {@link ConfigParseError} bij de eerste niet-coërceerbare waarde
|
|
39
|
+
* (standalone gebruik). `'collect'` verzamelt alle issues en retourneert ze, zonder te gooien
|
|
40
|
+
* (voor geaggregeerde rapportage in de pijplijn).
|
|
41
|
+
*/
|
|
42
|
+
export declare function coerceByMap(raw: RawConfig, map: TypeMap, mode?: 'throw' | 'collect'): {
|
|
43
|
+
value: RawConfig;
|
|
44
|
+
issues: ConfigIssue[];
|
|
45
|
+
};
|
|
46
|
+
export {};
|
|
47
|
+
//# sourceMappingURL=env-loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env-loader.d.ts","sourceRoot":"","sources":["../../../src/config/core/env-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAoB,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAEjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;AAElE,2FAA2F;AAC3F,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAEjD,MAAM,WAAW,eAAe;IAC9B,kDAAkD;IAClD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0EAA0E;IAC1E,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,KAAK,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;AAEpD,4EAA4E;AAC5E,wBAAgB,QAAQ,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,GAAE,eAAoB,GAAG,SAAS,CAsBjF;AAED,sGAAsG;AACtG,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAmBnE;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,OAAO,EAAE,SAAS,EAAE,GAAG,SAAS,CAE/D;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,GAAG,EAAE,SAAS,EACd,GAAG,EAAE,OAAO,EACZ,IAAI,GAAE,OAAO,GAAG,SAAmB,GAClC;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,WAAW,EAAE,CAAA;CAAE,CAsB7C"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* US-0101 — Env laden & parsen.
|
|
3
|
+
*
|
|
4
|
+
* Leest omgevingsvariabelen en optionele `.env`-bronnen in en zet ze om naar een genest, ruw
|
|
5
|
+
* configuratie-object volgens de key-conventie (`DB__HOST` -> `db.host`). Coercie naar primitieve
|
|
6
|
+
* types gebeurt schema-gedreven via {@link coerceByMap}. De module bevat geen domeinkennis: welke
|
|
7
|
+
* keys en types bestaan komt uit het geïnjecteerde schema/typemap.
|
|
8
|
+
*/
|
|
9
|
+
import { ConfigParseError } from './errors.js';
|
|
10
|
+
import { deepMerge, isPlainObject } from './merge.js';
|
|
11
|
+
/** Zet een platte env-record om naar een genest ruw configuratie-object. */
|
|
12
|
+
export function parseEnv(env, options = {}) {
|
|
13
|
+
const separator = options.separator ?? '__';
|
|
14
|
+
const lowercase = options.lowercase ?? true;
|
|
15
|
+
const prefix = options.prefix;
|
|
16
|
+
const result = {};
|
|
17
|
+
for (const [rawKey, value] of Object.entries(env)) {
|
|
18
|
+
if (value === undefined)
|
|
19
|
+
continue;
|
|
20
|
+
let key = rawKey;
|
|
21
|
+
if (prefix !== undefined) {
|
|
22
|
+
if (!key.startsWith(prefix))
|
|
23
|
+
continue;
|
|
24
|
+
key = key.slice(prefix.length);
|
|
25
|
+
}
|
|
26
|
+
const segments = key
|
|
27
|
+
.split(separator)
|
|
28
|
+
.map((s) => (lowercase ? s.toLowerCase() : s))
|
|
29
|
+
.filter((s) => s.length > 0);
|
|
30
|
+
if (segments.length === 0)
|
|
31
|
+
continue;
|
|
32
|
+
setPath(result, segments, value);
|
|
33
|
+
}
|
|
34
|
+
return result;
|
|
35
|
+
}
|
|
36
|
+
/** Parse `.env`-bestandsinhoud naar een platte record (KEY=VALUE, comments/lege regels genegeerd). */
|
|
37
|
+
export function parseDotenv(content) {
|
|
38
|
+
const out = {};
|
|
39
|
+
for (const line of content.split(/\r?\n/)) {
|
|
40
|
+
const trimmed = line.trim();
|
|
41
|
+
if (trimmed.length === 0 || trimmed.startsWith('#'))
|
|
42
|
+
continue;
|
|
43
|
+
const eq = trimmed.indexOf('=');
|
|
44
|
+
if (eq === -1)
|
|
45
|
+
continue;
|
|
46
|
+
const key = trimmed.slice(0, eq).trim();
|
|
47
|
+
let value = trimmed.slice(eq + 1).trim();
|
|
48
|
+
// Strip omringende quotes.
|
|
49
|
+
if ((value.startsWith('"') && value.endsWith('"')) ||
|
|
50
|
+
(value.startsWith("'") && value.endsWith("'"))) {
|
|
51
|
+
value = value.slice(1, -1);
|
|
52
|
+
}
|
|
53
|
+
if (key.length > 0)
|
|
54
|
+
out[key] = value;
|
|
55
|
+
}
|
|
56
|
+
return out;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Voegt meerdere ruwe bronnen samen met voorrangsvolgorde: latere bronnen winnen (US-0101 AC2).
|
|
60
|
+
* Diepe merge, override wint per key.
|
|
61
|
+
*/
|
|
62
|
+
export function mergeSources(...sources) {
|
|
63
|
+
return sources.reduce((acc, src) => deepMerge(acc, src), {});
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Coerce ruwe (string) waarden naar hun schema-type op basis van een {@link TypeMap} (US-0101).
|
|
67
|
+
*
|
|
68
|
+
* @param mode `'throw'` gooit een {@link ConfigParseError} bij de eerste niet-coërceerbare waarde
|
|
69
|
+
* (standalone gebruik). `'collect'` verzamelt alle issues en retourneert ze, zonder te gooien
|
|
70
|
+
* (voor geaggregeerde rapportage in de pijplijn).
|
|
71
|
+
*/
|
|
72
|
+
export function coerceByMap(raw, map, mode = 'throw') {
|
|
73
|
+
const issues = [];
|
|
74
|
+
const result = structuredCloneRaw(raw);
|
|
75
|
+
for (const [path, kind] of Object.entries(map)) {
|
|
76
|
+
const segments = path.split('.');
|
|
77
|
+
const current = getPath(result, segments);
|
|
78
|
+
if (current === undefined)
|
|
79
|
+
continue; // ontbrekende keys behandelt de validatie (defaults/required)
|
|
80
|
+
if (typeof current !== 'string')
|
|
81
|
+
continue; // al gecoerced of genest
|
|
82
|
+
const coerced = coerceScalar(current, kind);
|
|
83
|
+
if ('error' in coerced) {
|
|
84
|
+
issues.push({ path, message: coerced.error });
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
setPath(result, segments, coerced.value);
|
|
88
|
+
}
|
|
89
|
+
if (mode === 'throw' && issues.length > 0) {
|
|
90
|
+
throw new ConfigParseError(issues);
|
|
91
|
+
}
|
|
92
|
+
return { value: result, issues };
|
|
93
|
+
}
|
|
94
|
+
function coerceScalar(value, kind) {
|
|
95
|
+
switch (kind) {
|
|
96
|
+
case 'string':
|
|
97
|
+
return { value };
|
|
98
|
+
case 'number': {
|
|
99
|
+
const trimmed = value.trim();
|
|
100
|
+
if (trimmed.length === 0)
|
|
101
|
+
return { error: 'verwacht number, kreeg lege waarde' };
|
|
102
|
+
const n = Number(trimmed);
|
|
103
|
+
if (Number.isNaN(n))
|
|
104
|
+
return { error: 'verwacht number' };
|
|
105
|
+
return { value: n };
|
|
106
|
+
}
|
|
107
|
+
case 'boolean': {
|
|
108
|
+
const v = value.trim().toLowerCase();
|
|
109
|
+
if (['true', '1', 'yes', 'on'].includes(v))
|
|
110
|
+
return { value: true };
|
|
111
|
+
if (['false', '0', 'no', 'off'].includes(v))
|
|
112
|
+
return { value: false };
|
|
113
|
+
return { error: 'verwacht boolean' };
|
|
114
|
+
}
|
|
115
|
+
case 'list':
|
|
116
|
+
return {
|
|
117
|
+
value: value
|
|
118
|
+
.split(',')
|
|
119
|
+
.map((s) => s.trim())
|
|
120
|
+
.filter((s) => s.length > 0),
|
|
121
|
+
};
|
|
122
|
+
default:
|
|
123
|
+
return { value };
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
// ---- interne helpers -------------------------------------------------------
|
|
127
|
+
function setPath(target, segments, value) {
|
|
128
|
+
let node = target;
|
|
129
|
+
for (let i = 0; i < segments.length - 1; i++) {
|
|
130
|
+
const seg = segments[i];
|
|
131
|
+
const next = node[seg];
|
|
132
|
+
if (typeof next !== 'object' || next === null || Array.isArray(next)) {
|
|
133
|
+
node[seg] = {};
|
|
134
|
+
}
|
|
135
|
+
node = node[seg];
|
|
136
|
+
}
|
|
137
|
+
node[segments[segments.length - 1]] = value;
|
|
138
|
+
}
|
|
139
|
+
function getPath(source, segments) {
|
|
140
|
+
let node = source;
|
|
141
|
+
for (const seg of segments) {
|
|
142
|
+
if (typeof node !== 'object' || node === null)
|
|
143
|
+
return undefined;
|
|
144
|
+
node = node[seg];
|
|
145
|
+
}
|
|
146
|
+
return node;
|
|
147
|
+
}
|
|
148
|
+
function structuredCloneRaw(raw) {
|
|
149
|
+
const out = {};
|
|
150
|
+
for (const [key, value] of Object.entries(raw)) {
|
|
151
|
+
out[key] = isPlainObject(value) ? structuredCloneRaw(value) : value;
|
|
152
|
+
}
|
|
153
|
+
return out;
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=env-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env-loader.js","sourceRoot":"","sources":["../../../src/config/core/env-loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Foutentaxonomie voor config-kit. Alle fouten zijn geredigeerd: ze bevatten paden en redenen,
|
|
3
|
+
* maar nooit (deels) opgeloste secretwaarden.
|
|
4
|
+
*/
|
|
5
|
+
export interface ConfigIssue {
|
|
6
|
+
/** Dotted pad naar de betreffende config-key, bv. `db.port`. `(root)` voor top-level. */
|
|
7
|
+
path: string;
|
|
8
|
+
/** Mensvriendelijke reden zonder secretwaarden. */
|
|
9
|
+
message: string;
|
|
10
|
+
}
|
|
11
|
+
/** Basisklasse voor alle config-kit-fouten. */
|
|
12
|
+
export declare class ConfigKitError extends Error {
|
|
13
|
+
constructor(message: string);
|
|
14
|
+
}
|
|
15
|
+
/** Coercie/parse-fout tijdens het inlezen van env (US-0101). */
|
|
16
|
+
export declare class ConfigParseError extends ConfigKitError {
|
|
17
|
+
readonly issues: ConfigIssue[];
|
|
18
|
+
constructor(issues: ConfigIssue[]);
|
|
19
|
+
}
|
|
20
|
+
/** Fout bij het oplossen van een secret-referentie (US-0102). Bevat nooit de secretwaarde. */
|
|
21
|
+
export declare class SecretResolutionError extends ConfigKitError {
|
|
22
|
+
readonly path: string;
|
|
23
|
+
/** Referentie-locatie (schema + locatie), bv. `vault://kv/data/app#missing`. */
|
|
24
|
+
readonly reference: string;
|
|
25
|
+
constructor(path: string, reference: string, reason?: string);
|
|
26
|
+
}
|
|
27
|
+
/** Geaggregeerde validatiefout na schemavalidatie (US-0103/US-0104/US-0105). */
|
|
28
|
+
export declare class ConfigValidationError extends ConfigKitError {
|
|
29
|
+
readonly issues: ConfigIssue[];
|
|
30
|
+
/** Actieve omgeving waarin validatie faalde, indien van toepassing (US-0105). */
|
|
31
|
+
readonly environment: string | undefined;
|
|
32
|
+
constructor(issues: ConfigIssue[], environment?: string);
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/config/core/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,WAAW;IAC1B,yFAAyF;IACzF,IAAI,EAAE,MAAM,CAAC;IACb,mDAAmD;IACnD,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,+CAA+C;AAC/C,qBAAa,cAAe,SAAQ,KAAK;gBAC3B,OAAO,EAAE,MAAM;CAM5B;AAED,gEAAgE;AAChE,qBAAa,gBAAiB,SAAQ,cAAc;IAClD,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC;gBAEnB,MAAM,EAAE,WAAW,EAAE;CAIlC;AAED,8FAA8F;AAC9F,qBAAa,qBAAsB,SAAQ,cAAc;IACvD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,gFAAgF;IAChF,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;gBAEf,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;CAQ7D;AAED,gFAAgF;AAChF,qBAAa,qBAAsB,SAAQ,cAAc;IACvD,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC;IAC/B,iFAAiF;IACjF,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;gBAE7B,MAAM,EAAE,WAAW,EAAE,EAAE,WAAW,CAAC,EAAE,MAAM;CAMxD"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Foutentaxonomie voor config-kit. Alle fouten zijn geredigeerd: ze bevatten paden en redenen,
|
|
3
|
+
* maar nooit (deels) opgeloste secretwaarden.
|
|
4
|
+
*/
|
|
5
|
+
/** Basisklasse voor alle config-kit-fouten. */
|
|
6
|
+
export class ConfigKitError extends Error {
|
|
7
|
+
constructor(message) {
|
|
8
|
+
super(message);
|
|
9
|
+
this.name = new.target.name;
|
|
10
|
+
// Behoud de prototype-keten bij transpileren naar oudere targets.
|
|
11
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
/** Coercie/parse-fout tijdens het inlezen van env (US-0101). */
|
|
15
|
+
export class ConfigParseError extends ConfigKitError {
|
|
16
|
+
issues;
|
|
17
|
+
constructor(issues) {
|
|
18
|
+
super(`Configuratie kon niet geparsed worden:\n${formatIssues(issues)}`);
|
|
19
|
+
this.issues = issues;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
/** Fout bij het oplossen van een secret-referentie (US-0102). Bevat nooit de secretwaarde. */
|
|
23
|
+
export class SecretResolutionError extends ConfigKitError {
|
|
24
|
+
path;
|
|
25
|
+
/** Referentie-locatie (schema + locatie), bv. `vault://kv/data/app#missing`. */
|
|
26
|
+
reference;
|
|
27
|
+
constructor(path, reference, reason) {
|
|
28
|
+
super(`Secret-referentie voor "${path}" kon niet worden opgelost (${reference})` +
|
|
29
|
+
(reason ? `: ${reason}` : ''));
|
|
30
|
+
this.path = path;
|
|
31
|
+
this.reference = reference;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
/** Geaggregeerde validatiefout na schemavalidatie (US-0103/US-0104/US-0105). */
|
|
35
|
+
export class ConfigValidationError extends ConfigKitError {
|
|
36
|
+
issues;
|
|
37
|
+
/** Actieve omgeving waarin validatie faalde, indien van toepassing (US-0105). */
|
|
38
|
+
environment;
|
|
39
|
+
constructor(issues, environment) {
|
|
40
|
+
const scope = environment ? ` (omgeving: ${environment})` : '';
|
|
41
|
+
super(`Configuratie is ongeldig${scope}:\n${formatIssues(issues)}`);
|
|
42
|
+
this.issues = issues;
|
|
43
|
+
this.environment = environment;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
function formatIssues(issues) {
|
|
47
|
+
return issues.map((i) => ` - ${i.path}: ${i.message}`).join('\n');
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/config/core/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,+CAA+C;AAC/C,MAAM,OAAO,cAAe,SAAQ,KAAK;IACvC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;QAC5B,kEAAkE;QAClE,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF;AAED,gEAAgE;AAChE,MAAM,OAAO,gBAAiB,SAAQ,cAAc;IACzC,MAAM,CAAgB;IAE/B,YAAY,MAAqB;QAC/B,KAAK,CAAC,2CAA2C,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACzE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;AAED,8FAA8F;AAC9F,MAAM,OAAO,qBAAsB,SAAQ,cAAc;IAC9C,IAAI,CAAS;IACtB,gFAAgF;IACvE,SAAS,CAAS;IAE3B,YAAY,IAAY,EAAE,SAAiB,EAAE,MAAe;QAC1D,KAAK,CACH,2BAA2B,IAAI,+BAA+B,SAAS,GAAG;YACxE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAChC,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;CACF;AAED,gFAAgF;AAChF,MAAM,OAAO,qBAAsB,SAAQ,cAAc;IAC9C,MAAM,CAAgB;IAC/B,iFAAiF;IACxE,WAAW,CAAqB;IAEzC,YAAY,MAAqB,EAAE,WAAoB;QACrD,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,eAAe,WAAW,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/D,KAAK,CAAC,2BAA2B,KAAK,MAAM,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACpE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;CACF;AAED,SAAS,YAAY,CAAC,MAAqB;IACzC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrE,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Diep bevriezen (immutable maken) van een config-object. Secrets worden als geheel bevroren maar
|
|
3
|
+
* niet doorlopen (hun waarde zit buiten de instance). Arrays en geneste objecten worden recursief
|
|
4
|
+
* bevroren.
|
|
5
|
+
*/
|
|
6
|
+
export declare function deepFreeze<T>(value: T): T;
|
|
7
|
+
//# sourceMappingURL=freeze.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"freeze.d.ts","sourceRoot":"","sources":["../../../src/config/core/freeze.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAUzC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { isSecret } from './secret.js';
|
|
2
|
+
/**
|
|
3
|
+
* Diep bevriezen (immutable maken) van een config-object. Secrets worden als geheel bevroren maar
|
|
4
|
+
* niet doorlopen (hun waarde zit buiten de instance). Arrays en geneste objecten worden recursief
|
|
5
|
+
* bevroren.
|
|
6
|
+
*/
|
|
7
|
+
export function deepFreeze(value) {
|
|
8
|
+
if (value === null || typeof value !== 'object')
|
|
9
|
+
return value;
|
|
10
|
+
if (isSecret(value))
|
|
11
|
+
return Object.freeze(value);
|
|
12
|
+
if (Object.isFrozen(value))
|
|
13
|
+
return value;
|
|
14
|
+
Object.freeze(value);
|
|
15
|
+
for (const key of Object.keys(value)) {
|
|
16
|
+
deepFreeze(value[key]);
|
|
17
|
+
}
|
|
18
|
+
return value;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=freeze.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"freeze.js","sourceRoot":"","sources":["../../../src/config/core/freeze.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAI,KAAQ;IACpC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC9D,IAAI,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACjD,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAEzC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACrB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAgC,CAAC,EAAE,CAAC;QAChE,UAAU,CAAE,KAAiC,CAAC,GAAG,CAAC,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { type ParseEnvOptions } from './env-loader.js';
|
|
2
|
+
import type { ConfigSchema, RawConfig, Reporter, SecretResolver } from './ports.js';
|
|
3
|
+
type EnvRecord = Record<string, string | undefined>;
|
|
4
|
+
export interface LoadConfigOptions<T> {
|
|
5
|
+
/** Geïnjecteerd config-schema (US-0103). */
|
|
6
|
+
schema: ConfigSchema<T>;
|
|
7
|
+
/** Basisconfiguratie die voor alle omgevingen geldt. */
|
|
8
|
+
base?: RawConfig;
|
|
9
|
+
/** Per-omgeving overridelagen, gekozen op basis van de actieve omgeving. */
|
|
10
|
+
overrides?: Record<string, RawConfig>;
|
|
11
|
+
/** Env-key waaruit de actieve omgeving gelezen wordt (bv. `APP_ENV`). */
|
|
12
|
+
environmentKey?: string;
|
|
13
|
+
/** Expliciete actieve omgeving; wint van `environmentKey`. */
|
|
14
|
+
activeEnvironment?: string;
|
|
15
|
+
/** Env-record; indien gezet wordt deze geparsed en met hoogste voorrang samengevoegd. */
|
|
16
|
+
env?: EnvRecord;
|
|
17
|
+
/** Opties voor env-parsing (separator, prefix, lowercase). */
|
|
18
|
+
envOptions?: ParseEnvOptions;
|
|
19
|
+
/** `.env`-bestandsinhoud; lagere voorrang dan `env`. */
|
|
20
|
+
dotenv?: string;
|
|
21
|
+
/** Aanvullende reeds-geparste lagen, tussen override en `.env` in. */
|
|
22
|
+
sources?: RawConfig[];
|
|
23
|
+
/** Secret-resolver-poort; indien gezet worden referenties opgelost en geredigeerd. */
|
|
24
|
+
resolver?: SecretResolver;
|
|
25
|
+
/** Extra dotted paden die als secret behandeld moeten worden. */
|
|
26
|
+
extraSecretPaths?: string[];
|
|
27
|
+
/** Reporter-poort voor het geredigeerde foutrapport. */
|
|
28
|
+
reporter?: Reporter;
|
|
29
|
+
/** Gedrag bij falen: `throw` (default) of `exit` (niet-nul exitcode). */
|
|
30
|
+
onFailure?: 'throw' | 'exit';
|
|
31
|
+
/** Injecteerbare exit-functie (default `process.exit`), zodat fail-fast testbaar is. */
|
|
32
|
+
exit?: (code: number) => never;
|
|
33
|
+
/** Titel van het foutrapport. */
|
|
34
|
+
reportTitle?: string;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Laadt, valideert en bevriest de configuratie. Retourneert een volledig getypt, onveranderlijk
|
|
38
|
+
* object. Gooit {@link ConfigValidationError} (of stopt het proces bij `onFailure: 'exit'`) wanneer
|
|
39
|
+
* de effectieve config niet aan het schema voldoet.
|
|
40
|
+
*/
|
|
41
|
+
export declare function loadConfig<T>(options: LoadConfigOptions<T>): Promise<T>;
|
|
42
|
+
export {};
|
|
43
|
+
//# sourceMappingURL=load-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load-config.d.ts","sourceRoot":"","sources":["../../../src/config/core/load-config.ts"],"names":[],"mappings":"AAaA,OAAO,EAAuC,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAE5F,OAAO,KAAK,EAEV,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,cAAc,EACf,MAAM,YAAY,CAAC;AAGpB,KAAK,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;AAEpD,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,4CAA4C;IAC5C,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAGxB,wDAAwD;IACxD,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,4EAA4E;IAC5E,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACtC,yEAAyE;IACzE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,8DAA8D;IAC9D,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAG3B,yFAAyF;IACzF,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,8DAA8D;IAC9D,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,wDAAwD;IACxD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sEAAsE;IACtE,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC;IAGtB,sFAAsF;IACtF,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,iEAAiE;IACjE,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAG5B,wDAAwD;IACxD,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,yEAAyE;IACzE,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC7B,wFAAwF;IACxF,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,KAAK,CAAC;IAC/B,iCAAiC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAID;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,CAAC,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CA0B7E"}
|