@mantajs/core 0.1.7 → 0.2.0-beta.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/dist/adapters/auth-mock.d.ts +44 -0
- package/dist/adapters/auth-mock.d.ts.map +1 -0
- package/dist/adapters/auth-mock.js +160 -0
- package/dist/adapters/auth-mock.js.map +1 -0
- package/dist/adapters/cache-memory.d.ts +11 -0
- package/dist/adapters/cache-memory.d.ts.map +1 -0
- package/dist/adapters/cache-memory.js +32 -0
- package/dist/adapters/cache-memory.js.map +1 -0
- package/dist/adapters/database-memory.d.ts +24 -0
- package/dist/adapters/database-memory.d.ts.map +1 -0
- package/dist/adapters/database-memory.js +141 -0
- package/dist/adapters/database-memory.js.map +1 -0
- package/dist/adapters/eventbus-memory.d.ts +37 -0
- package/dist/adapters/eventbus-memory.d.ts.map +1 -0
- package/dist/adapters/eventbus-memory.js +166 -0
- package/dist/adapters/eventbus-memory.js.map +1 -0
- package/dist/adapters/file-memory.d.ts +24 -0
- package/dist/adapters/file-memory.d.ts.map +1 -0
- package/dist/adapters/file-memory.js +77 -0
- package/dist/adapters/file-memory.js.map +1 -0
- package/dist/adapters/http-memory.d.ts +23 -0
- package/dist/adapters/http-memory.d.ts.map +1 -0
- package/dist/adapters/http-memory.js +149 -0
- package/dist/adapters/http-memory.js.map +1 -0
- package/dist/adapters/index.d.ts +14 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +15 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/job-scheduler-memory.d.ts +20 -0
- package/dist/adapters/job-scheduler-memory.d.ts.map +1 -0
- package/dist/adapters/job-scheduler-memory.js +103 -0
- package/dist/adapters/job-scheduler-memory.js.map +1 -0
- package/dist/adapters/locking-memory.d.ts +20 -0
- package/dist/adapters/locking-memory.d.ts.map +1 -0
- package/dist/adapters/locking-memory.js +85 -0
- package/dist/adapters/locking-memory.js.map +1 -0
- package/dist/adapters/logger-test.d.ts +30 -0
- package/dist/adapters/logger-test.d.ts.map +1 -0
- package/dist/adapters/logger-test.js +77 -0
- package/dist/adapters/logger-test.js.map +1 -0
- package/dist/adapters/notification-memory.d.ts +27 -0
- package/dist/adapters/notification-memory.d.ts.map +1 -0
- package/dist/adapters/notification-memory.js +69 -0
- package/dist/adapters/notification-memory.js.map +1 -0
- package/dist/adapters/relational-query-memory.d.ts +47 -0
- package/dist/adapters/relational-query-memory.d.ts.map +1 -0
- package/dist/adapters/relational-query-memory.js +263 -0
- package/dist/adapters/relational-query-memory.js.map +1 -0
- package/dist/adapters/repository-factory-memory.d.ts +17 -0
- package/dist/adapters/repository-factory-memory.d.ts.map +1 -0
- package/dist/adapters/repository-factory-memory.js +32 -0
- package/dist/adapters/repository-factory-memory.js.map +1 -0
- package/dist/adapters/repository-memory.d.ts +30 -0
- package/dist/adapters/repository-memory.d.ts.map +1 -0
- package/dist/adapters/repository-memory.js +183 -0
- package/dist/adapters/repository-memory.js.map +1 -0
- package/dist/ai/index.d.ts +53 -0
- package/dist/ai/index.d.ts.map +1 -0
- package/dist/ai/index.js +48 -0
- package/dist/ai/index.js.map +1 -0
- package/dist/app/index.d.ts +97 -0
- package/dist/app/index.d.ts.map +1 -0
- package/dist/app/index.js +217 -0
- package/dist/app/index.js.map +1 -0
- package/dist/app/request-context.d.ts +35 -0
- package/dist/app/request-context.d.ts.map +1 -0
- package/dist/app/request-context.js +32 -0
- package/dist/app/request-context.js.map +1 -0
- package/dist/auth/auth-module-service.d.ts +62 -0
- package/dist/auth/auth-module-service.d.ts.map +1 -0
- package/dist/auth/auth-module-service.js +210 -0
- package/dist/auth/auth-module-service.js.map +1 -0
- package/dist/auth/index.d.ts +7 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +5 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/middleware.d.ts +19 -0
- package/dist/auth/middleware.d.ts.map +1 -0
- package/dist/auth/middleware.js +61 -0
- package/dist/auth/middleware.js.map +1 -0
- package/dist/auth/models/auth-identity.d.ts +11 -0
- package/dist/auth/models/auth-identity.d.ts.map +1 -0
- package/dist/auth/models/auth-identity.js +12 -0
- package/dist/auth/models/auth-identity.js.map +1 -0
- package/dist/auth/providers/emailpass.d.ts +7 -0
- package/dist/auth/providers/emailpass.d.ts.map +1 -0
- package/dist/auth/providers/emailpass.js +94 -0
- package/dist/auth/providers/emailpass.js.map +1 -0
- package/dist/auth/providers/types.d.ts +66 -0
- package/dist/auth/providers/types.d.ts.map +1 -0
- package/dist/auth/providers/types.js +3 -0
- package/dist/auth/providers/types.js.map +1 -0
- package/dist/auth/types.d.ts +36 -0
- package/dist/auth/types.d.ts.map +1 -0
- package/dist/auth/types.js +3 -0
- package/dist/auth/types.js.map +1 -0
- package/dist/command/define-command-graph.d.ts +63 -0
- package/dist/command/define-command-graph.d.ts.map +1 -0
- package/dist/command/define-command-graph.js +80 -0
- package/dist/command/define-command-graph.js.map +1 -0
- package/dist/command/dml-to-zod.d.ts +34 -0
- package/dist/command/dml-to-zod.d.ts.map +1 -0
- package/dist/command/dml-to-zod.js +140 -0
- package/dist/command/dml-to-zod.js.map +1 -0
- package/dist/command/generate-entity-commands.d.ts +68 -0
- package/dist/command/generate-entity-commands.d.ts.map +1 -0
- package/dist/command/generate-entity-commands.js +350 -0
- package/dist/command/generate-entity-commands.js.map +1 -0
- package/dist/command/index.d.ts +54 -0
- package/dist/command/index.d.ts.map +1 -0
- package/dist/command/index.js +338 -0
- package/dist/command/index.js.map +1 -0
- package/dist/command/types.d.ts +131 -0
- package/dist/command/types.d.ts.map +1 -0
- package/dist/command/types.js +2 -0
- package/dist/command/types.js.map +1 -0
- package/dist/config/built-in-presets.d.ts +20 -0
- package/dist/config/built-in-presets.d.ts.map +1 -0
- package/dist/config/built-in-presets.js +70 -0
- package/dist/config/built-in-presets.js.map +1 -0
- package/dist/config/config-manager.d.ts +117 -0
- package/dist/config/config-manager.d.ts.map +1 -0
- package/dist/config/config-manager.js +245 -0
- package/dist/config/config-manager.js.map +1 -0
- package/dist/config/define-config.d.ts +20 -0
- package/dist/config/define-config.d.ts.map +1 -0
- package/dist/config/define-config.js +64 -0
- package/dist/config/define-config.js.map +1 -0
- package/dist/config/feature-flags.d.ts +48 -0
- package/dist/config/feature-flags.d.ts.map +1 -0
- package/dist/config/feature-flags.js +97 -0
- package/dist/config/feature-flags.js.map +1 -0
- package/dist/config/index.d.ts +9 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +8 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/presets.d.ts +38 -0
- package/dist/config/presets.d.ts.map +1 -0
- package/dist/config/presets.js +29 -0
- package/dist/config/presets.js.map +1 -0
- package/dist/config/types.d.ts +707 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/types.js +112 -0
- package/dist/config/types.js.map +1 -0
- package/dist/context/index.d.ts +95 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/context/index.js +26 -0
- package/dist/context/index.js.map +1 -0
- package/dist/context/registry.d.ts +32 -0
- package/dist/context/registry.d.ts.map +1 -0
- package/dist/context/registry.js +142 -0
- package/dist/context/registry.js.map +1 -0
- package/dist/db/index.d.ts +2 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +4 -0
- package/dist/db/index.js.map +1 -0
- package/dist/db/schema.d.ts +839 -0
- package/dist/db/schema.d.ts.map +1 -0
- package/dist/db/schema.js +106 -0
- package/dist/db/schema.js.map +1 -0
- package/dist/dml/entity.d.ts +132 -0
- package/dist/dml/entity.d.ts.map +1 -0
- package/dist/dml/entity.js +110 -0
- package/dist/dml/entity.js.map +1 -0
- package/dist/dml/from-zod.d.ts +13 -0
- package/dist/dml/from-zod.d.ts.map +1 -0
- package/dist/dml/from-zod.js +81 -0
- package/dist/dml/from-zod.js.map +1 -0
- package/dist/dml/generator/index.d.ts +62 -0
- package/dist/dml/generator/index.d.ts.map +1 -0
- package/dist/dml/generator/index.js +208 -0
- package/dist/dml/generator/index.js.map +1 -0
- package/dist/dml/index.d.ts +11 -0
- package/dist/dml/index.d.ts.map +1 -0
- package/dist/dml/index.js +13 -0
- package/dist/dml/index.js.map +1 -0
- package/dist/dml/infer.d.ts +36 -0
- package/dist/dml/infer.d.ts.map +1 -0
- package/dist/dml/infer.js +5 -0
- package/dist/dml/infer.js.map +1 -0
- package/dist/dml/model.d.ts +58 -0
- package/dist/dml/model.d.ts.map +1 -0
- package/dist/dml/model.js +95 -0
- package/dist/dml/model.js.map +1 -0
- package/dist/dml/modifiers.d.ts +9 -0
- package/dist/dml/modifiers.d.ts.map +1 -0
- package/dist/dml/modifiers.js +25 -0
- package/dist/dml/modifiers.js.map +1 -0
- package/dist/dml/properties/array.d.ts +7 -0
- package/dist/dml/properties/array.d.ts.map +1 -0
- package/dist/dml/properties/array.js +5 -0
- package/dist/dml/properties/array.js.map +1 -0
- package/dist/dml/properties/autoincrement.d.ts +7 -0
- package/dist/dml/properties/autoincrement.d.ts.map +1 -0
- package/dist/dml/properties/autoincrement.js +5 -0
- package/dist/dml/properties/autoincrement.js.map +1 -0
- package/dist/dml/properties/base.d.ts +124 -0
- package/dist/dml/properties/base.d.ts.map +1 -0
- package/dist/dml/properties/base.js +76 -0
- package/dist/dml/properties/base.js.map +1 -0
- package/dist/dml/properties/big-number.d.ts +7 -0
- package/dist/dml/properties/big-number.d.ts.map +1 -0
- package/dist/dml/properties/big-number.js +5 -0
- package/dist/dml/properties/big-number.js.map +1 -0
- package/dist/dml/properties/boolean.d.ts +7 -0
- package/dist/dml/properties/boolean.d.ts.map +1 -0
- package/dist/dml/properties/boolean.js +5 -0
- package/dist/dml/properties/boolean.js.map +1 -0
- package/dist/dml/properties/computed.d.ts +9 -0
- package/dist/dml/properties/computed.d.ts.map +1 -0
- package/dist/dml/properties/computed.js +22 -0
- package/dist/dml/properties/computed.js.map +1 -0
- package/dist/dml/properties/date-time.d.ts +7 -0
- package/dist/dml/properties/date-time.d.ts.map +1 -0
- package/dist/dml/properties/date-time.js +5 -0
- package/dist/dml/properties/date-time.js.map +1 -0
- package/dist/dml/properties/enum.d.ts +12 -0
- package/dist/dml/properties/enum.d.ts.map +1 -0
- package/dist/dml/properties/enum.js +14 -0
- package/dist/dml/properties/enum.js.map +1 -0
- package/dist/dml/properties/float.d.ts +7 -0
- package/dist/dml/properties/float.d.ts.map +1 -0
- package/dist/dml/properties/float.js +5 -0
- package/dist/dml/properties/float.js.map +1 -0
- package/dist/dml/properties/index.d.ts +15 -0
- package/dist/dml/properties/index.d.ts.map +1 -0
- package/dist/dml/properties/index.js +15 -0
- package/dist/dml/properties/index.js.map +1 -0
- package/dist/dml/properties/json.d.ts +7 -0
- package/dist/dml/properties/json.d.ts.map +1 -0
- package/dist/dml/properties/json.js +6 -0
- package/dist/dml/properties/json.js.map +1 -0
- package/dist/dml/properties/nullable.d.ts +23 -0
- package/dist/dml/properties/nullable.d.ts.map +1 -0
- package/dist/dml/properties/nullable.js +46 -0
- package/dist/dml/properties/nullable.js.map +1 -0
- package/dist/dml/properties/number.d.ts +10 -0
- package/dist/dml/properties/number.d.ts.map +1 -0
- package/dist/dml/properties/number.js +13 -0
- package/dist/dml/properties/number.js.map +1 -0
- package/dist/dml/properties/primary-key.d.ts +14 -0
- package/dist/dml/properties/primary-key.d.ts.map +1 -0
- package/dist/dml/properties/primary-key.js +23 -0
- package/dist/dml/properties/primary-key.js.map +1 -0
- package/dist/dml/properties/text.d.ts +15 -0
- package/dist/dml/properties/text.d.ts.map +1 -0
- package/dist/dml/properties/text.js +19 -0
- package/dist/dml/properties/text.js.map +1 -0
- package/dist/dml/relations/belongs-to.d.ts +20 -0
- package/dist/dml/relations/belongs-to.d.ts.map +1 -0
- package/dist/dml/relations/belongs-to.js +29 -0
- package/dist/dml/relations/belongs-to.js.map +1 -0
- package/dist/dml/relations/has-many.d.ts +16 -0
- package/dist/dml/relations/has-many.d.ts.map +1 -0
- package/dist/dml/relations/has-many.js +25 -0
- package/dist/dml/relations/has-many.js.map +1 -0
- package/dist/dml/relations/has-one.d.ts +26 -0
- package/dist/dml/relations/has-one.d.ts.map +1 -0
- package/dist/dml/relations/has-one.js +46 -0
- package/dist/dml/relations/has-one.js.map +1 -0
- package/dist/dml/relations/many-to-many.d.ts +9 -0
- package/dist/dml/relations/many-to-many.d.ts.map +1 -0
- package/dist/dml/relations/many-to-many.js +11 -0
- package/dist/dml/relations/many-to-many.js.map +1 -0
- package/dist/errors/manta-error.d.ts +68 -0
- package/dist/errors/manta-error.d.ts.map +1 -0
- package/dist/errors/manta-error.js +80 -0
- package/dist/errors/manta-error.js.map +1 -0
- package/dist/events/index.d.ts +3 -0
- package/dist/events/index.d.ts.map +1 -0
- package/dist/events/index.js +3 -0
- package/dist/events/index.js.map +1 -0
- package/dist/events/message-aggregator.d.ts +25 -0
- package/dist/events/message-aggregator.d.ts.map +1 -0
- package/dist/events/message-aggregator.js +35 -0
- package/dist/events/message-aggregator.js.map +1 -0
- package/dist/events/types.d.ts +42 -0
- package/dist/events/types.d.ts.map +1 -0
- package/dist/events/types.js +3 -0
- package/dist/events/types.js.map +1 -0
- package/dist/index.d.ts +55 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +53 -0
- package/dist/index.js.map +1 -0
- package/dist/job/index.d.ts +52 -0
- package/dist/job/index.d.ts.map +1 -0
- package/dist/job/index.js +31 -0
- package/dist/job/index.js.map +1 -0
- package/dist/link/index.d.ts +97 -0
- package/dist/link/index.d.ts.map +1 -0
- package/dist/link/index.js +185 -0
- package/dist/link/index.js.map +1 -0
- package/dist/middleware/define-middleware.d.ts +54 -0
- package/dist/middleware/define-middleware.d.ts.map +1 -0
- package/dist/middleware/define-middleware.js +40 -0
- package/dist/middleware/define-middleware.js.map +1 -0
- package/dist/middleware/index.d.ts +56 -0
- package/dist/middleware/index.d.ts.map +1 -0
- package/dist/middleware/index.js +50 -0
- package/dist/middleware/index.js.map +1 -0
- package/dist/module/index.d.ts +56 -0
- package/dist/module/index.d.ts.map +1 -0
- package/dist/module/index.js +52 -0
- package/dist/module/index.js.map +1 -0
- package/dist/module/versioning.d.ts +27 -0
- package/dist/module/versioning.d.ts.map +1 -0
- package/dist/module/versioning.js +64 -0
- package/dist/module/versioning.js.map +1 -0
- package/dist/naming.d.ts +39 -0
- package/dist/naming.d.ts.map +1 -0
- package/dist/naming.js +95 -0
- package/dist/naming.js.map +1 -0
- package/dist/ports/analytics.d.ts +7 -0
- package/dist/ports/analytics.d.ts.map +1 -0
- package/dist/ports/analytics.js +3 -0
- package/dist/ports/analytics.js.map +1 -0
- package/dist/ports/auth.d.ts +27 -0
- package/dist/ports/auth.d.ts.map +1 -0
- package/dist/ports/auth.js +3 -0
- package/dist/ports/auth.js.map +1 -0
- package/dist/ports/cache.d.ts +35 -0
- package/dist/ports/cache.d.ts.map +1 -0
- package/dist/ports/cache.js +3 -0
- package/dist/ports/cache.js.map +1 -0
- package/dist/ports/database.d.ts +40 -0
- package/dist/ports/database.d.ts.map +1 -0
- package/dist/ports/database.js +3 -0
- package/dist/ports/database.js.map +1 -0
- package/dist/ports/event-bus.d.ts +85 -0
- package/dist/ports/event-bus.d.ts.map +1 -0
- package/dist/ports/event-bus.js +3 -0
- package/dist/ports/event-bus.js.map +1 -0
- package/dist/ports/file.d.ts +62 -0
- package/dist/ports/file.d.ts.map +1 -0
- package/dist/ports/file.js +3 -0
- package/dist/ports/file.js.map +1 -0
- package/dist/ports/http.d.ts +20 -0
- package/dist/ports/http.d.ts.map +1 -0
- package/dist/ports/http.js +3 -0
- package/dist/ports/http.js.map +1 -0
- package/dist/ports/in-memory-progress-channel.d.ts +9 -0
- package/dist/ports/in-memory-progress-channel.d.ts.map +1 -0
- package/dist/ports/in-memory-progress-channel.js +19 -0
- package/dist/ports/in-memory-progress-channel.js.map +1 -0
- package/dist/ports/in-memory-queue.d.ts +24 -0
- package/dist/ports/in-memory-queue.d.ts.map +1 -0
- package/dist/ports/in-memory-queue.js +63 -0
- package/dist/ports/in-memory-queue.js.map +1 -0
- package/dist/ports/index.d.ts +27 -0
- package/dist/ports/index.d.ts.map +1 -0
- package/dist/ports/index.js +6 -0
- package/dist/ports/index.js.map +1 -0
- package/dist/ports/job-scheduler.d.ts +42 -0
- package/dist/ports/job-scheduler.d.ts.map +1 -0
- package/dist/ports/job-scheduler.js +3 -0
- package/dist/ports/job-scheduler.js.map +1 -0
- package/dist/ports/locking.d.ts +43 -0
- package/dist/ports/locking.d.ts.map +1 -0
- package/dist/ports/locking.js +3 -0
- package/dist/ports/locking.js.map +1 -0
- package/dist/ports/logger.d.ts +65 -0
- package/dist/ports/logger.d.ts.map +1 -0
- package/dist/ports/logger.js +3 -0
- package/dist/ports/logger.js.map +1 -0
- package/dist/ports/notification.d.ts +71 -0
- package/dist/ports/notification.d.ts.map +1 -0
- package/dist/ports/notification.js +3 -0
- package/dist/ports/notification.js.map +1 -0
- package/dist/ports/progress-channel.d.ts +46 -0
- package/dist/ports/progress-channel.d.ts.map +1 -0
- package/dist/ports/progress-channel.js +6 -0
- package/dist/ports/progress-channel.js.map +1 -0
- package/dist/ports/queue.d.ts +21 -0
- package/dist/ports/queue.d.ts.map +1 -0
- package/dist/ports/queue.js +15 -0
- package/dist/ports/queue.js.map +1 -0
- package/dist/ports/relational-query.d.ts +37 -0
- package/dist/ports/relational-query.d.ts.map +1 -0
- package/dist/ports/relational-query.js +3 -0
- package/dist/ports/relational-query.js.map +1 -0
- package/dist/ports/repository-factory.d.ts +21 -0
- package/dist/ports/repository-factory.d.ts.map +1 -0
- package/dist/ports/repository-factory.js +4 -0
- package/dist/ports/repository-factory.js.map +1 -0
- package/dist/ports/repository.d.ts +73 -0
- package/dist/ports/repository.d.ts.map +1 -0
- package/dist/ports/repository.js +3 -0
- package/dist/ports/repository.js.map +1 -0
- package/dist/ports/schema-generator.d.ts +15 -0
- package/dist/ports/schema-generator.d.ts.map +1 -0
- package/dist/ports/schema-generator.js +4 -0
- package/dist/ports/schema-generator.js.map +1 -0
- package/dist/ports/search.d.ts +7 -0
- package/dist/ports/search.d.ts.map +1 -0
- package/dist/ports/search.js +3 -0
- package/dist/ports/search.js.map +1 -0
- package/dist/ports/types.d.ts +112 -0
- package/dist/ports/types.d.ts.map +1 -0
- package/dist/ports/types.js +26 -0
- package/dist/ports/types.js.map +1 -0
- package/dist/ports/workflow-store.d.ts +111 -0
- package/dist/ports/workflow-store.d.ts.map +1 -0
- package/dist/ports/workflow-store.js +5 -0
- package/dist/ports/workflow-store.js.map +1 -0
- package/dist/query/define-query-graph.d.ts +55 -0
- package/dist/query/define-query-graph.d.ts.map +1 -0
- package/dist/query/define-query-graph.js +59 -0
- package/dist/query/define-query-graph.js.map +1 -0
- package/dist/query/define-query.d.ts +79 -0
- package/dist/query/define-query.d.ts.map +1 -0
- package/dist/query/define-query.js +77 -0
- package/dist/query/define-query.js.map +1 -0
- package/dist/query/extend-query-graph.d.ts +36 -0
- package/dist/query/extend-query-graph.d.ts.map +1 -0
- package/dist/query/extend-query-graph.js +34 -0
- package/dist/query/extend-query-graph.js.map +1 -0
- package/dist/query/index.d.ts +181 -0
- package/dist/query/index.d.ts.map +1 -0
- package/dist/query/index.js +288 -0
- package/dist/query/index.js.map +1 -0
- package/dist/service/define.d.ts +97 -0
- package/dist/service/define.d.ts.map +1 -0
- package/dist/service/define.js +45 -0
- package/dist/service/define.js.map +1 -0
- package/dist/service/index.d.ts +52 -0
- package/dist/service/index.d.ts.map +1 -0
- package/dist/service/index.js +281 -0
- package/dist/service/index.js.map +1 -0
- package/dist/service/instantiate.d.ts +15 -0
- package/dist/service/instantiate.d.ts.map +1 -0
- package/dist/service/instantiate.js +143 -0
- package/dist/service/instantiate.js.map +1 -0
- package/dist/service/snapshot-repository.d.ts +31 -0
- package/dist/service/snapshot-repository.d.ts.map +1 -0
- package/dist/service/snapshot-repository.js +114 -0
- package/dist/service/snapshot-repository.js.map +1 -0
- package/dist/service/types.d.ts +39 -0
- package/dist/service/types.d.ts.map +1 -0
- package/dist/service/types.js +3 -0
- package/dist/service/types.js.map +1 -0
- package/dist/strict-mode/index.d.ts +42 -0
- package/dist/strict-mode/index.d.ts.map +1 -0
- package/dist/strict-mode/index.js +84 -0
- package/dist/strict-mode/index.js.map +1 -0
- package/dist/subscriber/index.d.ts +117 -0
- package/dist/subscriber/index.d.ts.map +1 -0
- package/dist/subscriber/index.js +76 -0
- package/dist/subscriber/index.js.map +1 -0
- package/dist/testing/relational-query-suite.d.ts +22 -0
- package/dist/testing/relational-query-suite.d.ts.map +1 -0
- package/dist/testing/relational-query-suite.js +233 -0
- package/dist/testing/relational-query-suite.js.map +1 -0
- package/dist/user/auto-routes.d.ts +32 -0
- package/dist/user/auto-routes.d.ts.map +1 -0
- package/dist/user/auto-routes.js +424 -0
- package/dist/user/auto-routes.js.map +1 -0
- package/dist/user/define-user.d.ts +54 -0
- package/dist/user/define-user.d.ts.map +1 -0
- package/dist/user/define-user.js +103 -0
- package/dist/user/define-user.js.map +1 -0
- package/dist/user/index.d.ts +7 -0
- package/dist/user/index.d.ts.map +1 -0
- package/dist/user/index.js +5 -0
- package/dist/user/index.js.map +1 -0
- package/dist/user/models/user.d.ts +15 -0
- package/dist/user/models/user.d.ts.map +1 -0
- package/dist/user/models/user.js +16 -0
- package/dist/user/models/user.js.map +1 -0
- package/dist/user/user-module-service.d.ts +55 -0
- package/dist/user/user-module-service.d.ts.map +1 -0
- package/dist/user/user-module-service.js +100 -0
- package/dist/user/user-module-service.js.map +1 -0
- package/dist/workflows/ai-step.d.ts +2 -0
- package/dist/workflows/ai-step.d.ts.map +1 -0
- package/dist/workflows/ai-step.js +54 -0
- package/dist/workflows/ai-step.js.map +1 -0
- package/dist/workflows/create-step.d.ts +16 -0
- package/dist/workflows/create-step.d.ts.map +1 -0
- package/dist/workflows/create-step.js +194 -0
- package/dist/workflows/create-step.js.map +1 -0
- package/dist/workflows/create-workflow.d.ts +16 -0
- package/dist/workflows/create-workflow.d.ts.map +1 -0
- package/dist/workflows/create-workflow.js +21 -0
- package/dist/workflows/create-workflow.js.map +1 -0
- package/dist/workflows/define-workflow.d.ts +55 -0
- package/dist/workflows/define-workflow.d.ts.map +1 -0
- package/dist/workflows/define-workflow.js +72 -0
- package/dist/workflows/define-workflow.js.map +1 -0
- package/dist/workflows/emit-event-step.d.ts +17 -0
- package/dist/workflows/emit-event-step.d.ts.map +1 -0
- package/dist/workflows/emit-event-step.js +46 -0
- package/dist/workflows/emit-event-step.js.map +1 -0
- package/dist/workflows/for-each.d.ts +6 -0
- package/dist/workflows/for-each.d.ts.map +1 -0
- package/dist/workflows/for-each.js +79 -0
- package/dist/workflows/for-each.js.map +1 -0
- package/dist/workflows/index.d.ts +15 -0
- package/dist/workflows/index.d.ts.map +1 -0
- package/dist/workflows/index.js +12 -0
- package/dist/workflows/index.js.map +1 -0
- package/dist/workflows/manager.d.ts +99 -0
- package/dist/workflows/manager.d.ts.map +1 -0
- package/dist/workflows/manager.js +450 -0
- package/dist/workflows/manager.js.map +1 -0
- package/dist/workflows/orphan-reaper.d.ts +50 -0
- package/dist/workflows/orphan-reaper.d.ts.map +1 -0
- package/dist/workflows/orphan-reaper.js +69 -0
- package/dist/workflows/orphan-reaper.js.map +1 -0
- package/dist/workflows/progress-helper.d.ts +20 -0
- package/dist/workflows/progress-helper.d.ts.map +1 -0
- package/dist/workflows/progress-helper.js +48 -0
- package/dist/workflows/progress-helper.js.map +1 -0
- package/dist/workflows/step.d.ts +103 -0
- package/dist/workflows/step.d.ts.map +1 -0
- package/dist/workflows/step.js +949 -0
- package/dist/workflows/step.js.map +1 -0
- package/dist/workflows/types.d.ts +215 -0
- package/dist/workflows/types.d.ts.map +1 -0
- package/dist/workflows/types.js +9 -0
- package/dist/workflows/types.js.map +1 -0
- package/dist/workflows/yield.d.ts +12 -0
- package/dist/workflows/yield.d.ts.map +1 -0
- package/dist/workflows/yield.js +29 -0
- package/dist/workflows/yield.js.map +1 -0
- package/docs/00-overview.md +254 -0
- package/docs/01-getting-started.md +224 -0
- package/docs/02-models.md +163 -0
- package/docs/03-services.md +208 -0
- package/docs/04-users.md +165 -0
- package/docs/05-commands.md +501 -0
- package/docs/06-queries.md +342 -0
- package/docs/07-events.md +248 -0
- package/docs/08-links.md +182 -0
- package/docs/09-agents.md +142 -0
- package/docs/10-spa.md +327 -0
- package/docs/11-config.md +481 -0
- package/docs/12-constraints.md +183 -0
- package/docs/13-testing.md +345 -0
- package/docs/14-adapters.md +204 -0
- package/docs/15-hosts.md +163 -0
- package/docs/16-reference.md +274 -0
- package/docs/17-dashboard.md +619 -0
- package/docs/AGENT.md +501 -0
- package/package.json +49 -52
- package/.medusa/server/src/admin/index.js +0 -5493
- package/.medusa/server/src/admin/index.mjs +0 -5491
- package/.medusa/server/src/api/admin/companies/[id]/route.js +0 -39
- package/.medusa/server/src/api/admin/companies/middlewares.js +0 -41
- package/.medusa/server/src/api/admin/companies/route.js +0 -37
- package/.medusa/server/src/api/admin/companies/validators.js +0 -29
- package/.medusa/server/src/api/admin/employees/middlewares.js +0 -15
- package/.medusa/server/src/api/admin/employees/route.js +0 -21
- package/.medusa/server/src/api/middlewares.js +0 -9
- package/.medusa/server/src/index.js +0 -5
- package/.medusa/server/src/modules/company/index.js +0 -13
- package/.medusa/server/src/modules/company/migrations/Migration20260126141741.js +0 -26
- package/.medusa/server/src/modules/company/models/company.js +0 -24
- package/.medusa/server/src/modules/company/models/employee.js +0 -15
- package/.medusa/server/src/modules/company/models/index.js +0 -11
- package/.medusa/server/src/modules/company/service.js +0 -11
- package/.medusa/server/src/workflows/create-company.js +0 -10
- package/.medusa/server/src/workflows/delete-company.js +0 -10
- package/.medusa/server/src/workflows/steps/create-company.js +0 -16
- package/.medusa/server/src/workflows/steps/delete-company.js +0 -30
- package/.medusa/server/src/workflows/steps/update-company.js +0 -30
- package/.medusa/server/src/workflows/update-company.js +0 -10
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import type { EnvProfile, MantaConfig } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* ConfigManager loads, normalizes, and provides access to application configuration.
|
|
4
|
+
* Singleton — loaded once at startup. Env vars take priority (serverless-friendly).
|
|
5
|
+
*
|
|
6
|
+
* @param config - The MantaConfig to manage (from defineConfig())
|
|
7
|
+
*/
|
|
8
|
+
export declare class ConfigManager {
|
|
9
|
+
private static instance;
|
|
10
|
+
private readonly config;
|
|
11
|
+
private readonly envProfile;
|
|
12
|
+
private constructor();
|
|
13
|
+
/**
|
|
14
|
+
* Initialize the ConfigManager singleton with the given config.
|
|
15
|
+
* Can only be called once. Subsequent calls throw MantaError.
|
|
16
|
+
*
|
|
17
|
+
* @param config - Partial or full MantaConfig
|
|
18
|
+
* @returns The ConfigManager instance
|
|
19
|
+
*/
|
|
20
|
+
static initialize(config?: Partial<MantaConfig>): ConfigManager;
|
|
21
|
+
/**
|
|
22
|
+
* Get the ConfigManager singleton instance.
|
|
23
|
+
* Throws if not yet initialized.
|
|
24
|
+
*
|
|
25
|
+
* @returns The ConfigManager instance
|
|
26
|
+
*/
|
|
27
|
+
static getInstance(): ConfigManager;
|
|
28
|
+
/**
|
|
29
|
+
* Reset the singleton (for testing purposes).
|
|
30
|
+
*/
|
|
31
|
+
static reset(): void;
|
|
32
|
+
/**
|
|
33
|
+
* Detect the environment profile from APP_ENV or NODE_ENV.
|
|
34
|
+
* dev = development | test
|
|
35
|
+
* prod = production | staging
|
|
36
|
+
*
|
|
37
|
+
* @returns The detected environment profile
|
|
38
|
+
*/
|
|
39
|
+
static detectProfile(): EnvProfile;
|
|
40
|
+
/**
|
|
41
|
+
* Get the raw environment string (APP_ENV > NODE_ENV > "development").
|
|
42
|
+
*
|
|
43
|
+
* @returns The raw environment string
|
|
44
|
+
*/
|
|
45
|
+
static getEnvString(): string;
|
|
46
|
+
/**
|
|
47
|
+
* Get a config value by dot-notation key.
|
|
48
|
+
* Example: get('projectConfig.databaseUrl')
|
|
49
|
+
*
|
|
50
|
+
* @param key - Dot-notation path into the config
|
|
51
|
+
* @returns The value at the given path, or undefined if not found
|
|
52
|
+
*/
|
|
53
|
+
get(key: string): unknown;
|
|
54
|
+
/**
|
|
55
|
+
* Get the entire resolved config object.
|
|
56
|
+
*
|
|
57
|
+
* @returns The full MantaConfig
|
|
58
|
+
*/
|
|
59
|
+
getConfig(): Readonly<MantaConfig>;
|
|
60
|
+
/**
|
|
61
|
+
* Get the current environment profile (dev or prod).
|
|
62
|
+
*
|
|
63
|
+
* @returns The environment profile
|
|
64
|
+
*/
|
|
65
|
+
getProfile(): EnvProfile;
|
|
66
|
+
/**
|
|
67
|
+
* Check if we are running in development profile.
|
|
68
|
+
*
|
|
69
|
+
* @returns True if profile is dev
|
|
70
|
+
*/
|
|
71
|
+
isDev(): boolean;
|
|
72
|
+
/**
|
|
73
|
+
* Check if we are running in production profile.
|
|
74
|
+
*
|
|
75
|
+
* @returns True if profile is prod
|
|
76
|
+
*/
|
|
77
|
+
isProd(): boolean;
|
|
78
|
+
/**
|
|
79
|
+
* Merge MANTA_* environment variables on top of file config.
|
|
80
|
+
* Env var keys are converted from MANTA_SOME_KEY to some.key (dot-notation).
|
|
81
|
+
*
|
|
82
|
+
* @param config - The base config
|
|
83
|
+
* @returns Config with env overrides applied
|
|
84
|
+
*/
|
|
85
|
+
private mergeEnvOverrides;
|
|
86
|
+
/**
|
|
87
|
+
* Convert an env key suffix (after MANTA_) to a dot-notation config path.
|
|
88
|
+
* Example: PROJECT_CONFIG_DATABASE_URL → projectConfig.databaseUrl
|
|
89
|
+
*
|
|
90
|
+
* @param suffix - The env key suffix (after removing MANTA_ prefix)
|
|
91
|
+
* @returns Dot-notation config path
|
|
92
|
+
*/
|
|
93
|
+
private envKeyToConfigPath;
|
|
94
|
+
/**
|
|
95
|
+
* Set a value at a nested path in an object.
|
|
96
|
+
*
|
|
97
|
+
* @param obj - The object to modify
|
|
98
|
+
* @param path - Dot-notation path
|
|
99
|
+
* @param value - The value to set
|
|
100
|
+
*/
|
|
101
|
+
private setNestedValue;
|
|
102
|
+
/**
|
|
103
|
+
* Parse an env var value string into the appropriate type.
|
|
104
|
+
* "true"/"false" → boolean, numeric strings → number, otherwise string.
|
|
105
|
+
*
|
|
106
|
+
* @param value - The raw env var string
|
|
107
|
+
* @returns Parsed value
|
|
108
|
+
*/
|
|
109
|
+
private parseEnvValue;
|
|
110
|
+
/**
|
|
111
|
+
* Validate that required secrets are present.
|
|
112
|
+
* In prod: throw MantaError if missing.
|
|
113
|
+
* In dev: log a warning (console.warn) if missing.
|
|
114
|
+
*/
|
|
115
|
+
private validateSecrets;
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=config-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-manager.d.ts","sourceRoot":"","sources":["../../src/config/config-manager.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAkBtD;;;;;GAKG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA6B;IAEpD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;IACpC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;IAEvC,OAAO;IAMP;;;;;;OAMG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,GAAE,OAAO,CAAC,WAAW,CAAM,GAAG,aAAa;IAYnE;;;;;OAKG;IACH,MAAM,CAAC,WAAW,IAAI,aAAa;IAUnC;;OAEG;IACH,MAAM,CAAC,KAAK,IAAI,IAAI;IAIpB;;;;;;OAMG;IACH,MAAM,CAAC,aAAa,IAAI,UAAU;IAUlC;;;;OAIG;IACH,MAAM,CAAC,YAAY,IAAI,MAAM;IAI7B;;;;;;OAMG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAczB;;;;OAIG;IACH,SAAS,IAAI,QAAQ,CAAC,WAAW,CAAC;IAIlC;;;;OAIG;IACH,UAAU,IAAI,UAAU;IAIxB;;;;OAIG;IACH,KAAK,IAAI,OAAO;IAIhB;;;;OAIG;IACH,MAAM,IAAI,OAAO;IAIjB;;;;;;OAMG;IACH,OAAO,CAAC,iBAAiB;IAuBzB;;;;;;OAMG;IACH,OAAO,CAAC,kBAAkB;IAwB1B;;;;;;OAMG;IACH,OAAO,CAAC,cAAc;IAgBtB;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;IAQrB;;;;OAIG;IACH,OAAO,CAAC,eAAe;CAYxB"}
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
// SPEC-053 — ConfigManager singleton with validation
|
|
2
|
+
import { MantaError } from '../errors/manta-error';
|
|
3
|
+
import { defineConfig } from './define-config';
|
|
4
|
+
/**
|
|
5
|
+
* Prefix for environment variable overrides.
|
|
6
|
+
* Any env var starting with MANTA_ overrides the corresponding config key.
|
|
7
|
+
*/
|
|
8
|
+
const ENV_PREFIX = 'MANTA_';
|
|
9
|
+
/**
|
|
10
|
+
* Prefix for feature flag env var overrides.
|
|
11
|
+
*/
|
|
12
|
+
const FF_ENV_PREFIX = 'MANTA_FF_';
|
|
13
|
+
/**
|
|
14
|
+
* Required secrets in production. Missing secrets throw MantaError in prod, warn in dev.
|
|
15
|
+
*/
|
|
16
|
+
const PROD_REQUIRED_SECRETS = ['projectConfig.databaseUrl', 'projectConfig.jwtSecret'];
|
|
17
|
+
/**
|
|
18
|
+
* ConfigManager loads, normalizes, and provides access to application configuration.
|
|
19
|
+
* Singleton — loaded once at startup. Env vars take priority (serverless-friendly).
|
|
20
|
+
*
|
|
21
|
+
* @param config - The MantaConfig to manage (from defineConfig())
|
|
22
|
+
*/
|
|
23
|
+
export class ConfigManager {
|
|
24
|
+
static instance = null;
|
|
25
|
+
config;
|
|
26
|
+
envProfile;
|
|
27
|
+
constructor(config) {
|
|
28
|
+
this.config = this.mergeEnvOverrides(config);
|
|
29
|
+
this.envProfile = ConfigManager.detectProfile();
|
|
30
|
+
this.validateSecrets();
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Initialize the ConfigManager singleton with the given config.
|
|
34
|
+
* Can only be called once. Subsequent calls throw MantaError.
|
|
35
|
+
*
|
|
36
|
+
* @param config - Partial or full MantaConfig
|
|
37
|
+
* @returns The ConfigManager instance
|
|
38
|
+
*/
|
|
39
|
+
static initialize(config = {}) {
|
|
40
|
+
if (ConfigManager.instance) {
|
|
41
|
+
throw new MantaError('INVALID_STATE', 'ConfigManager is already initialized. Call ConfigManager.reset() first if re-initialization is needed.');
|
|
42
|
+
}
|
|
43
|
+
const merged = defineConfig(config);
|
|
44
|
+
ConfigManager.instance = new ConfigManager(merged);
|
|
45
|
+
return ConfigManager.instance;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Get the ConfigManager singleton instance.
|
|
49
|
+
* Throws if not yet initialized.
|
|
50
|
+
*
|
|
51
|
+
* @returns The ConfigManager instance
|
|
52
|
+
*/
|
|
53
|
+
static getInstance() {
|
|
54
|
+
if (!ConfigManager.instance) {
|
|
55
|
+
throw new MantaError('INVALID_STATE', 'ConfigManager has not been initialized. Call ConfigManager.initialize() first.');
|
|
56
|
+
}
|
|
57
|
+
return ConfigManager.instance;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Reset the singleton (for testing purposes).
|
|
61
|
+
*/
|
|
62
|
+
static reset() {
|
|
63
|
+
ConfigManager.instance = null;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Detect the environment profile from APP_ENV or NODE_ENV.
|
|
67
|
+
* dev = development | test
|
|
68
|
+
* prod = production | staging
|
|
69
|
+
*
|
|
70
|
+
* @returns The detected environment profile
|
|
71
|
+
*/
|
|
72
|
+
static detectProfile() {
|
|
73
|
+
const appEnv = process.env.APP_ENV ?? process.env.NODE_ENV ?? 'development';
|
|
74
|
+
const normalized = appEnv.toLowerCase();
|
|
75
|
+
if (normalized === 'production' || normalized === 'staging') {
|
|
76
|
+
return 'prod';
|
|
77
|
+
}
|
|
78
|
+
return 'dev';
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Get the raw environment string (APP_ENV > NODE_ENV > "development").
|
|
82
|
+
*
|
|
83
|
+
* @returns The raw environment string
|
|
84
|
+
*/
|
|
85
|
+
static getEnvString() {
|
|
86
|
+
return process.env.APP_ENV ?? process.env.NODE_ENV ?? 'development';
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Get a config value by dot-notation key.
|
|
90
|
+
* Example: get('projectConfig.databaseUrl')
|
|
91
|
+
*
|
|
92
|
+
* @param key - Dot-notation path into the config
|
|
93
|
+
* @returns The value at the given path, or undefined if not found
|
|
94
|
+
*/
|
|
95
|
+
get(key) {
|
|
96
|
+
const parts = key.split('.');
|
|
97
|
+
let current = this.config;
|
|
98
|
+
for (const part of parts) {
|
|
99
|
+
if (current === null || current === undefined || typeof current !== 'object') {
|
|
100
|
+
return undefined;
|
|
101
|
+
}
|
|
102
|
+
current = current[part];
|
|
103
|
+
}
|
|
104
|
+
return current;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Get the entire resolved config object.
|
|
108
|
+
*
|
|
109
|
+
* @returns The full MantaConfig
|
|
110
|
+
*/
|
|
111
|
+
getConfig() {
|
|
112
|
+
return this.config;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Get the current environment profile (dev or prod).
|
|
116
|
+
*
|
|
117
|
+
* @returns The environment profile
|
|
118
|
+
*/
|
|
119
|
+
getProfile() {
|
|
120
|
+
return this.envProfile;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Check if we are running in development profile.
|
|
124
|
+
*
|
|
125
|
+
* @returns True if profile is dev
|
|
126
|
+
*/
|
|
127
|
+
isDev() {
|
|
128
|
+
return this.envProfile === 'dev';
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Check if we are running in production profile.
|
|
132
|
+
*
|
|
133
|
+
* @returns True if profile is prod
|
|
134
|
+
*/
|
|
135
|
+
isProd() {
|
|
136
|
+
return this.envProfile === 'prod';
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Merge MANTA_* environment variables on top of file config.
|
|
140
|
+
* Env var keys are converted from MANTA_SOME_KEY to some.key (dot-notation).
|
|
141
|
+
*
|
|
142
|
+
* @param config - The base config
|
|
143
|
+
* @returns Config with env overrides applied
|
|
144
|
+
*/
|
|
145
|
+
mergeEnvOverrides(config) {
|
|
146
|
+
const result = structuredClone(config);
|
|
147
|
+
for (const [envKey, envValue] of Object.entries(process.env)) {
|
|
148
|
+
if (!envKey.startsWith(ENV_PREFIX) || envKey.startsWith(FF_ENV_PREFIX)) {
|
|
149
|
+
continue;
|
|
150
|
+
}
|
|
151
|
+
if (envValue === undefined) {
|
|
152
|
+
continue;
|
|
153
|
+
}
|
|
154
|
+
// Convert MANTA_PROJECT_CONFIG_DATABASE_URL → projectConfig.databaseUrl
|
|
155
|
+
const configPath = this.envKeyToConfigPath(envKey.slice(ENV_PREFIX.length));
|
|
156
|
+
this.setNestedValue(result, configPath, this.parseEnvValue(String(envValue)));
|
|
157
|
+
}
|
|
158
|
+
return result;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Convert an env key suffix (after MANTA_) to a dot-notation config path.
|
|
162
|
+
* Example: PROJECT_CONFIG_DATABASE_URL → projectConfig.databaseUrl
|
|
163
|
+
*
|
|
164
|
+
* @param suffix - The env key suffix (after removing MANTA_ prefix)
|
|
165
|
+
* @returns Dot-notation config path
|
|
166
|
+
*/
|
|
167
|
+
envKeyToConfigPath(suffix) {
|
|
168
|
+
return (suffix
|
|
169
|
+
.toLowerCase()
|
|
170
|
+
.split('_')
|
|
171
|
+
.reduce((acc, part, index) => {
|
|
172
|
+
if (index === 0) {
|
|
173
|
+
acc.push(part);
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
// camelCase joining
|
|
177
|
+
acc.push(part.charAt(0).toUpperCase() + part.slice(1));
|
|
178
|
+
}
|
|
179
|
+
return acc;
|
|
180
|
+
}, [])
|
|
181
|
+
.join('')
|
|
182
|
+
.replace(/([A-Z])/g, '.$1')
|
|
183
|
+
.toLowerCase()
|
|
184
|
+
// Fix: this simple approach won't produce correct dot notation for nested paths
|
|
185
|
+
// A more robust approach:
|
|
186
|
+
.split('.')
|
|
187
|
+
.join('.'));
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Set a value at a nested path in an object.
|
|
191
|
+
*
|
|
192
|
+
* @param obj - The object to modify
|
|
193
|
+
* @param path - Dot-notation path
|
|
194
|
+
* @param value - The value to set
|
|
195
|
+
*/
|
|
196
|
+
setNestedValue(obj, path, value) {
|
|
197
|
+
const parts = path.split('.');
|
|
198
|
+
let current = obj;
|
|
199
|
+
for (let i = 0; i < parts.length - 1; i++) {
|
|
200
|
+
const part = parts[i];
|
|
201
|
+
if (!(part in current) || typeof current[part] !== 'object' || current[part] === null) {
|
|
202
|
+
current[part] = {};
|
|
203
|
+
}
|
|
204
|
+
current = current[part];
|
|
205
|
+
}
|
|
206
|
+
const lastPart = parts[parts.length - 1];
|
|
207
|
+
current[lastPart] = value;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Parse an env var value string into the appropriate type.
|
|
211
|
+
* "true"/"false" → boolean, numeric strings → number, otherwise string.
|
|
212
|
+
*
|
|
213
|
+
* @param value - The raw env var string
|
|
214
|
+
* @returns Parsed value
|
|
215
|
+
*/
|
|
216
|
+
parseEnvValue(value) {
|
|
217
|
+
if (value === 'true')
|
|
218
|
+
return true;
|
|
219
|
+
if (value === 'false')
|
|
220
|
+
return false;
|
|
221
|
+
const num = Number(value);
|
|
222
|
+
if (!Number.isNaN(num) && value.trim() !== '')
|
|
223
|
+
return num;
|
|
224
|
+
return value;
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Validate that required secrets are present.
|
|
228
|
+
* In prod: throw MantaError if missing.
|
|
229
|
+
* In dev: log a warning (console.warn) if missing.
|
|
230
|
+
*/
|
|
231
|
+
validateSecrets() {
|
|
232
|
+
for (const secretPath of PROD_REQUIRED_SECRETS) {
|
|
233
|
+
const value = this.get(secretPath);
|
|
234
|
+
if (value === undefined || value === null || value === '') {
|
|
235
|
+
if (this.envProfile === 'prod') {
|
|
236
|
+
throw new MantaError('INVALID_DATA', `Missing required secret "${secretPath}" in production environment.`);
|
|
237
|
+
}
|
|
238
|
+
else {
|
|
239
|
+
console.warn(`[manta:config] Missing secret "${secretPath}" — ignored in dev mode.`);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
//# sourceMappingURL=config-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-manager.js","sourceRoot":"","sources":["../../src/config/config-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { MantaConfig } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Defines the application configuration with sensible defaults.
|
|
4
|
+
* Validates config sections via Zod schemas at definition time — errors are
|
|
5
|
+
* caught early, not at boot.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* // manta.config.ts
|
|
10
|
+
* import { defineConfig } from '@mantajs/core'
|
|
11
|
+
*
|
|
12
|
+
* export default defineConfig({
|
|
13
|
+
* database: { url: process.env.DATABASE_URL },
|
|
14
|
+
* http: { port: 3000 },
|
|
15
|
+
* admin: { enabled: true },
|
|
16
|
+
* })
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
export declare function defineConfig(config?: Partial<MantaConfig>): MantaConfig;
|
|
20
|
+
//# sourceMappingURL=define-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define-config.d.ts","sourceRoot":"","sources":["../../src/config/define-config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAiB,MAAM,SAAS,CAAA;AAGzD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,YAAY,CAAC,MAAM,GAAE,OAAO,CAAC,WAAW,CAAM,GAAG,WAAW,CA4C3E"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
// SPEC-010 — defineConfig with defaults and auto-detection dev/prod
|
|
2
|
+
import { MantaError } from '../errors/manta-error';
|
|
3
|
+
import { AuthConfigSchema, HttpConfigSchema, QueryConfigSchema } from './types';
|
|
4
|
+
/**
|
|
5
|
+
* Defines the application configuration with sensible defaults.
|
|
6
|
+
* Validates config sections via Zod schemas at definition time — errors are
|
|
7
|
+
* caught early, not at boot.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```typescript
|
|
11
|
+
* // manta.config.ts
|
|
12
|
+
* import { defineConfig } from '@mantajs/core'
|
|
13
|
+
*
|
|
14
|
+
* export default defineConfig({
|
|
15
|
+
* database: { url: process.env.DATABASE_URL },
|
|
16
|
+
* http: { port: 3000 },
|
|
17
|
+
* admin: { enabled: true },
|
|
18
|
+
* })
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export function defineConfig(config = {}) {
|
|
22
|
+
// Validate known config sections early
|
|
23
|
+
if (config.http) {
|
|
24
|
+
const result = HttpConfigSchema.safeParse(config.http);
|
|
25
|
+
if (!result.success) {
|
|
26
|
+
const issues = result.error.issues.map((i) => ` - ${i.path.join('.')}: ${i.message}`).join('\n');
|
|
27
|
+
throw new MantaError('INVALID_DATA', `Invalid http config:\n${issues}`);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
if (config.auth) {
|
|
31
|
+
const result = AuthConfigSchema.safeParse(config.auth);
|
|
32
|
+
if (!result.success) {
|
|
33
|
+
const issues = result.error.issues.map((i) => ` - ${i.path.join('.')}: ${i.message}`).join('\n');
|
|
34
|
+
throw new MantaError('INVALID_DATA', `Invalid auth config:\n${issues}`);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
if (config.query) {
|
|
38
|
+
const result = QueryConfigSchema.safeParse(config.query);
|
|
39
|
+
if (!result.success) {
|
|
40
|
+
const issues = result.error.issues.map((i) => ` - ${i.path.join('.')}: ${i.message}`).join('\n');
|
|
41
|
+
throw new MantaError('INVALID_DATA', `Invalid query config:\n${issues}`);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
const projectConfig = {
|
|
45
|
+
...(config.projectConfig ?? {}),
|
|
46
|
+
};
|
|
47
|
+
return {
|
|
48
|
+
projectConfig,
|
|
49
|
+
admin: config.admin ?? {},
|
|
50
|
+
modules: config.modules ?? {},
|
|
51
|
+
plugins: config.plugins ?? [],
|
|
52
|
+
featureFlags: config.featureFlags ?? {},
|
|
53
|
+
strict: config.strict ?? false,
|
|
54
|
+
...(config.database ? { database: config.database } : {}),
|
|
55
|
+
...(config.preset ? { preset: config.preset } : {}),
|
|
56
|
+
...(config.adapters ? { adapters: config.adapters } : {}),
|
|
57
|
+
...(config.query ? { query: config.query } : {}),
|
|
58
|
+
...(config.http ? { http: config.http } : {}),
|
|
59
|
+
...(config.auth ? { auth: config.auth } : {}),
|
|
60
|
+
...(config.boot ? { boot: config.boot } : {}),
|
|
61
|
+
...(config.spa ? { spa: config.spa } : {}),
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=define-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define-config.js","sourceRoot":"","sources":["../../src/config/define-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FlagRouter resolves feature flags with a 3-level priority:
|
|
3
|
+
* 1. Environment variables: MANTA_FF_<FLAG_NAME> (highest priority)
|
|
4
|
+
* 2. Config file flags (from defineConfig({ featureFlags: { ... } }))
|
|
5
|
+
* 3. Default values registered via setDefault() (lowest priority)
|
|
6
|
+
*
|
|
7
|
+
* Flag names are case-insensitive for env var lookup.
|
|
8
|
+
*/
|
|
9
|
+
export declare class FlagRouter {
|
|
10
|
+
private readonly configFlags;
|
|
11
|
+
private readonly defaults;
|
|
12
|
+
/**
|
|
13
|
+
* Create a FlagRouter with config-level flags.
|
|
14
|
+
*
|
|
15
|
+
* @param configFlags - Flags from defineConfig({ featureFlags })
|
|
16
|
+
*/
|
|
17
|
+
constructor(configFlags?: Record<string, boolean>);
|
|
18
|
+
/**
|
|
19
|
+
* Check if a feature flag is enabled.
|
|
20
|
+
* Priority: env MANTA_FF_* > config > defaults.
|
|
21
|
+
*
|
|
22
|
+
* @param flagName - The flag name (e.g. "workflows_v2", "analytics")
|
|
23
|
+
* @returns True if the flag is enabled, false otherwise
|
|
24
|
+
*/
|
|
25
|
+
isEnabled(flagName: string): boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Set a flag value at the config level (overrides defaults, overridden by env).
|
|
28
|
+
*
|
|
29
|
+
* @param flagName - The flag name
|
|
30
|
+
* @param value - Whether the flag is enabled
|
|
31
|
+
*/
|
|
32
|
+
setFlag(flagName: string, value: boolean): void;
|
|
33
|
+
/**
|
|
34
|
+
* Register a default value for a flag (lowest priority).
|
|
35
|
+
*
|
|
36
|
+
* @param flagName - The flag name
|
|
37
|
+
* @param value - The default value
|
|
38
|
+
*/
|
|
39
|
+
setDefault(flagName: string, value: boolean): void;
|
|
40
|
+
/**
|
|
41
|
+
* List all known flags with their resolved values.
|
|
42
|
+
* Includes flags from env, config, and defaults.
|
|
43
|
+
*
|
|
44
|
+
* @returns Record of flag names to their resolved boolean values
|
|
45
|
+
*/
|
|
46
|
+
listFlags(): Record<string, boolean>;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=feature-flags.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feature-flags.d.ts","sourceRoot":"","sources":["../../src/config/feature-flags.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAyB;IACrD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkC;IAE3D;;;;OAIG;gBACS,WAAW,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;IAIrD;;;;;;OAMG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAuBpC;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAI/C;;;;;OAKG;IACH,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAIlD;;;;;OAKG;IACH,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CA+BrC"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
// SPEC-055 — Feature flags with 3-level priority
|
|
2
|
+
/**
|
|
3
|
+
* FlagRouter resolves feature flags with a 3-level priority:
|
|
4
|
+
* 1. Environment variables: MANTA_FF_<FLAG_NAME> (highest priority)
|
|
5
|
+
* 2. Config file flags (from defineConfig({ featureFlags: { ... } }))
|
|
6
|
+
* 3. Default values registered via setDefault() (lowest priority)
|
|
7
|
+
*
|
|
8
|
+
* Flag names are case-insensitive for env var lookup.
|
|
9
|
+
*/
|
|
10
|
+
export class FlagRouter {
|
|
11
|
+
configFlags;
|
|
12
|
+
defaults = new Map();
|
|
13
|
+
/**
|
|
14
|
+
* Create a FlagRouter with config-level flags.
|
|
15
|
+
*
|
|
16
|
+
* @param configFlags - Flags from defineConfig({ featureFlags })
|
|
17
|
+
*/
|
|
18
|
+
constructor(configFlags = {}) {
|
|
19
|
+
this.configFlags = { ...configFlags };
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Check if a feature flag is enabled.
|
|
23
|
+
* Priority: env MANTA_FF_* > config > defaults.
|
|
24
|
+
*
|
|
25
|
+
* @param flagName - The flag name (e.g. "workflows_v2", "analytics")
|
|
26
|
+
* @returns True if the flag is enabled, false otherwise
|
|
27
|
+
*/
|
|
28
|
+
isEnabled(flagName) {
|
|
29
|
+
// Level 1: Check env var (MANTA_FF_<UPPERCASE_FLAG>)
|
|
30
|
+
const envKey = `MANTA_FF_${flagName.toUpperCase()}`;
|
|
31
|
+
const envValue = process.env[envKey];
|
|
32
|
+
if (envValue !== undefined) {
|
|
33
|
+
return envValue === 'true' || envValue === '1';
|
|
34
|
+
}
|
|
35
|
+
// Level 2: Check config flags
|
|
36
|
+
if (flagName in this.configFlags) {
|
|
37
|
+
return this.configFlags[flagName];
|
|
38
|
+
}
|
|
39
|
+
// Level 3: Check defaults
|
|
40
|
+
const defaultValue = this.defaults.get(flagName);
|
|
41
|
+
if (defaultValue !== undefined) {
|
|
42
|
+
return defaultValue;
|
|
43
|
+
}
|
|
44
|
+
// Not found anywhere → disabled
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Set a flag value at the config level (overrides defaults, overridden by env).
|
|
49
|
+
*
|
|
50
|
+
* @param flagName - The flag name
|
|
51
|
+
* @param value - Whether the flag is enabled
|
|
52
|
+
*/
|
|
53
|
+
setFlag(flagName, value) {
|
|
54
|
+
this.configFlags[flagName] = value;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Register a default value for a flag (lowest priority).
|
|
58
|
+
*
|
|
59
|
+
* @param flagName - The flag name
|
|
60
|
+
* @param value - The default value
|
|
61
|
+
*/
|
|
62
|
+
setDefault(flagName, value) {
|
|
63
|
+
this.defaults.set(flagName, value);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* List all known flags with their resolved values.
|
|
67
|
+
* Includes flags from env, config, and defaults.
|
|
68
|
+
*
|
|
69
|
+
* @returns Record of flag names to their resolved boolean values
|
|
70
|
+
*/
|
|
71
|
+
listFlags() {
|
|
72
|
+
const result = {};
|
|
73
|
+
// Collect all known flag names
|
|
74
|
+
const allNames = new Set();
|
|
75
|
+
// From defaults
|
|
76
|
+
for (const name of this.defaults.keys()) {
|
|
77
|
+
allNames.add(name);
|
|
78
|
+
}
|
|
79
|
+
// From config
|
|
80
|
+
for (const name of Object.keys(this.configFlags)) {
|
|
81
|
+
allNames.add(name);
|
|
82
|
+
}
|
|
83
|
+
// From env vars
|
|
84
|
+
for (const envKey of Object.keys(process.env)) {
|
|
85
|
+
if (envKey.startsWith('MANTA_FF_')) {
|
|
86
|
+
const flagName = envKey.slice('MANTA_FF_'.length).toLowerCase();
|
|
87
|
+
allNames.add(flagName);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
// Resolve each
|
|
91
|
+
for (const name of allNames) {
|
|
92
|
+
result[name] = this.isEnabled(name);
|
|
93
|
+
}
|
|
94
|
+
return result;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=feature-flags.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feature-flags.js","sourceRoot":"","sources":["../../src/config/feature-flags.ts"],"names":[],"mappings":"AAAA,iDAAiD;AAEjD;;;;;;;GAOG;AACH,MAAM,OAAO,UAAU;IACJ,WAAW,CAAyB;IACpC,QAAQ,GAAyB,IAAI,GAAG,EAAE,CAAA;IAE3D;;;;OAIG;IACH,YAAY,cAAuC,EAAE;QACnD,IAAI,CAAC,WAAW,GAAG,EAAE,GAAG,WAAW,EAAE,CAAA;IACvC,CAAC;IAED;;;;;;OAMG;IACH,SAAS,CAAC,QAAgB;QACxB,qDAAqD;QACrD,MAAM,MAAM,GAAG,YAAY,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAA;QACnD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QACpC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,OAAO,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,GAAG,CAAA;QAChD,CAAC;QAED,8BAA8B;QAC9B,IAAI,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAE,CAAA;QACpC,CAAC;QAED,0BAA0B;QAC1B,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAChD,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC/B,OAAO,YAAY,CAAA;QACrB,CAAC;QAED,gCAAgC;QAChC,OAAO,KAAK,CAAA;IACd,CAAC;IAED;;;;;OAKG;IACH,OAAO,CAAC,QAAgB,EAAE,KAAc;QACtC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAA;IACpC,CAAC;IAED;;;;;OAKG;IACH,UAAU,CAAC,QAAgB,EAAE,KAAc;QACzC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;IACpC,CAAC;IAED;;;;;OAKG;IACH,SAAS;QACP,MAAM,MAAM,GAA4B,EAAE,CAAA;QAE1C,+BAA+B;QAC/B,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAA;QAElC,gBAAgB;QAChB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;YACxC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACpB,CAAC;QAED,cAAc;QACd,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YACjD,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACpB,CAAC;QAED,gBAAgB;QAChB,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9C,IAAI,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;gBACnC,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAA;gBAC/D,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;YACxB,CAAC;QACH,CAAC;QAED,eAAe;QACf,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QACrC,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;CACF"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { BUILT_IN_PRESETS, cloudflarePreset, devPreset, vercelPreset } from './built-in-presets';
|
|
2
|
+
export { ConfigManager } from './config-manager';
|
|
3
|
+
export { defineConfig } from './define-config';
|
|
4
|
+
export { FlagRouter } from './feature-flags';
|
|
5
|
+
export type { PresetAdapterEntry, PresetDefinition } from './presets';
|
|
6
|
+
export { definePreset } from './presets';
|
|
7
|
+
export type { AuthConfig, BootConfig, EnvProfile, HttpConfig, MantaConfig, ModuleConfigEntry, ProjectConfig, QueryConfig, RateLimitConfig, SpaConfig, } from './types';
|
|
8
|
+
export { AuthConfigSchema, AuthSessionConfigSchema, BootConfigSchema, DatabaseConfigSchema, EventsConfigSchema, HttpConfigSchema, LoadedConfigSchema, QueryConfigSchema, RateLimitConfigSchema, SessionCookieConfigSchema, SPA_DEFAULTS, } from './types';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAChG,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACxC,YAAY,EACV,UAAU,EACV,UAAU,EACV,UAAU,EACV,UAAU,EACV,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,eAAe,EACf,SAAS,GACV,MAAM,SAAS,CAAA;AAChB,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,yBAAyB,EACzB,YAAY,GACb,MAAM,SAAS,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// SPEC-010, SPEC-053, SPEC-055 — Config module re-exports
|
|
2
|
+
export { BUILT_IN_PRESETS, cloudflarePreset, devPreset, vercelPreset } from './built-in-presets';
|
|
3
|
+
export { ConfigManager } from './config-manager';
|
|
4
|
+
export { defineConfig } from './define-config';
|
|
5
|
+
export { FlagRouter } from './feature-flags';
|
|
6
|
+
export { definePreset } from './presets';
|
|
7
|
+
export { AuthConfigSchema, AuthSessionConfigSchema, BootConfigSchema, DatabaseConfigSchema, EventsConfigSchema, HttpConfigSchema, LoadedConfigSchema, QueryConfigSchema, RateLimitConfigSchema, SessionCookieConfigSchema, SPA_DEFAULTS, } from './types';
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAE1D,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAChG,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE5C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAaxC,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,yBAAyB,EACzB,YAAY,GACb,MAAM,SAAS,CAAA"}
|