@mantajs/core 0.1.6 → 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 -5358
- package/.medusa/server/src/admin/index.mjs +0 -5356
- 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/middlewares.js +0 -8
- 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,44 @@
|
|
|
1
|
+
import type { AuthenticationInput, AuthenticationResponse } from '../auth/providers/types';
|
|
2
|
+
import type { AuthContext, AuthCredentials, SessionOptions } from '../auth/types';
|
|
3
|
+
import type { IAuthGateway, IAuthModuleService, IAuthPort } from '../ports/auth';
|
|
4
|
+
export interface TestAuthConfig {
|
|
5
|
+
jwt?: AuthContext;
|
|
6
|
+
apiKeys?: Record<string, AuthContext>;
|
|
7
|
+
sessions?: Record<string, AuthContext>;
|
|
8
|
+
}
|
|
9
|
+
export declare class MockAuthPort implements IAuthPort {
|
|
10
|
+
private _config;
|
|
11
|
+
private _tokenStore;
|
|
12
|
+
constructor(config?: TestAuthConfig);
|
|
13
|
+
verifyJwt(token: string): AuthContext | null;
|
|
14
|
+
verifyApiKey(key: string): AuthContext | null;
|
|
15
|
+
createJwt(payload: AuthContext, options?: {
|
|
16
|
+
expiresIn?: string | number;
|
|
17
|
+
}): string;
|
|
18
|
+
/** Test helper: update config at runtime */
|
|
19
|
+
_configure(config: TestAuthConfig): void;
|
|
20
|
+
}
|
|
21
|
+
export declare class MockAuthModuleService implements IAuthModuleService {
|
|
22
|
+
private _sessions;
|
|
23
|
+
private _config;
|
|
24
|
+
constructor(config?: TestAuthConfig);
|
|
25
|
+
authenticate(_provider: string, _data: AuthenticationInput): Promise<AuthenticationResponse>;
|
|
26
|
+
register(_provider: string, _data: AuthenticationInput): Promise<AuthenticationResponse>;
|
|
27
|
+
validateCallback(_provider: string, _data: AuthenticationInput): Promise<AuthenticationResponse>;
|
|
28
|
+
createSession(authContext: AuthContext, options?: SessionOptions): Promise<{
|
|
29
|
+
sessionId: string;
|
|
30
|
+
expiresAt: Date;
|
|
31
|
+
}>;
|
|
32
|
+
destroySession(sessionId: string): Promise<void>;
|
|
33
|
+
verifySession(sessionId: string): Promise<AuthContext | null>;
|
|
34
|
+
/** Test helper */
|
|
35
|
+
_reset(): void;
|
|
36
|
+
}
|
|
37
|
+
/** SPEC-049b — Auth Gateway facade */
|
|
38
|
+
export declare class MockAuthGateway implements IAuthGateway {
|
|
39
|
+
private authPort;
|
|
40
|
+
private authModuleService;
|
|
41
|
+
constructor(authPort: IAuthPort, authModuleService: IAuthModuleService);
|
|
42
|
+
authenticate(credentials: AuthCredentials): Promise<AuthContext | null>;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=auth-mock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-mock.d.ts","sourceRoot":"","sources":["../../src/adapters/auth-mock.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAC1F,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AACjF,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAEhF,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,EAAE,WAAW,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;CACvC;AAED,qBAAa,YAAa,YAAW,SAAS;IAC5C,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,WAAW,CAAiE;gBAExE,MAAM,CAAC,EAAE,cAAc;IAInC,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAgB5C,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAK7C,SAAS,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,GAAG,MAAM;IA4BlF,4CAA4C;IAC5C,UAAU,CAAC,MAAM,EAAE,cAAc;CAGlC;AAED,qBAAa,qBAAsB,YAAW,kBAAkB;IAC9D,OAAO,CAAC,SAAS,CAAmE;IACpF,OAAO,CAAC,OAAO,CAAgB;gBAEnB,MAAM,CAAC,EAAE,cAAc;IAU7B,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAS5F,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAOxF,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAShG,aAAa,CACjB,WAAW,EAAE,WAAW,EACxB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,IAAI,CAAA;KAAE,CAAC;IAc5C,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhD,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAUnE,kBAAkB;IAClB,MAAM;CAGP;AAED,sCAAsC;AACtC,qBAAa,eAAgB,YAAW,YAAY;IAEhD,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,iBAAiB;gBADjB,QAAQ,EAAE,SAAS,EACnB,iBAAiB,EAAE,kBAAkB;IAGzC,YAAY,CAAC,WAAW,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;CA6B9E"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
// SPEC-049/050/049b — Mock auth implementations for dev/test
|
|
2
|
+
export class MockAuthPort {
|
|
3
|
+
_config;
|
|
4
|
+
_tokenStore = new Map();
|
|
5
|
+
constructor(config) {
|
|
6
|
+
this._config = config ?? {};
|
|
7
|
+
}
|
|
8
|
+
verifyJwt(token) {
|
|
9
|
+
if (!token || !token.startsWith('jwt_'))
|
|
10
|
+
return null;
|
|
11
|
+
// Check token store for expiration
|
|
12
|
+
const stored = this._tokenStore.get(token);
|
|
13
|
+
if (stored) {
|
|
14
|
+
if (Date.now() > stored.expiresAt) {
|
|
15
|
+
this._tokenStore.delete(token);
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
return stored.payload;
|
|
19
|
+
}
|
|
20
|
+
return this._config.jwt ?? null;
|
|
21
|
+
}
|
|
22
|
+
verifyApiKey(key) {
|
|
23
|
+
if (!key || !key.startsWith('sk_'))
|
|
24
|
+
return null;
|
|
25
|
+
return this._config.apiKeys?.[key] ?? null;
|
|
26
|
+
}
|
|
27
|
+
createJwt(payload, options) {
|
|
28
|
+
const token = `jwt_${payload.type}_${payload.id}_${Date.now()}`;
|
|
29
|
+
if (options?.expiresIn) {
|
|
30
|
+
let expiresInMs;
|
|
31
|
+
if (typeof options.expiresIn === 'number') {
|
|
32
|
+
expiresInMs = options.expiresIn * 1000; // seconds to ms
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
// Parse string like '1h', '30m', '60s'
|
|
36
|
+
const match = options.expiresIn.match(/^(\d+)(s|m|h|d)$/);
|
|
37
|
+
if (match) {
|
|
38
|
+
const value = parseInt(match[1], 10);
|
|
39
|
+
const unit = match[2];
|
|
40
|
+
const multipliers = { s: 1000, m: 60000, h: 3600000, d: 86400000 };
|
|
41
|
+
expiresInMs = value * multipliers[unit];
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
expiresInMs = 3600000; // default 1h
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
this._tokenStore.set(token, { payload, expiresAt: Date.now() + expiresInMs });
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
// No expiration — store with far future
|
|
51
|
+
this._tokenStore.set(token, { payload, expiresAt: Number.MAX_SAFE_INTEGER });
|
|
52
|
+
}
|
|
53
|
+
return token;
|
|
54
|
+
}
|
|
55
|
+
/** Test helper: update config at runtime */
|
|
56
|
+
_configure(config) {
|
|
57
|
+
this._config = { ...this._config, ...config };
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
export class MockAuthModuleService {
|
|
61
|
+
_sessions = new Map();
|
|
62
|
+
_config;
|
|
63
|
+
constructor(config) {
|
|
64
|
+
this._config = config ?? {};
|
|
65
|
+
// Pre-load configured sessions
|
|
66
|
+
if (config?.sessions) {
|
|
67
|
+
for (const [sid, auth] of Object.entries(config.sessions)) {
|
|
68
|
+
this._sessions.set(sid, { authContext: auth, expiresAt: new Date(Date.now() + 86400000) });
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
async authenticate(_provider, _data) {
|
|
73
|
+
const ctx = this._config.jwt;
|
|
74
|
+
if (!ctx)
|
|
75
|
+
return { success: false, error: 'No mock JWT configured' };
|
|
76
|
+
return {
|
|
77
|
+
success: true,
|
|
78
|
+
authIdentity: { id: ctx.auth_identity_id ?? crypto.randomUUID(), app_metadata: ctx.metadata },
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
async register(_provider, _data) {
|
|
82
|
+
return {
|
|
83
|
+
success: true,
|
|
84
|
+
authIdentity: { id: crypto.randomUUID() },
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
async validateCallback(_provider, _data) {
|
|
88
|
+
const ctx = this._config.jwt;
|
|
89
|
+
if (!ctx)
|
|
90
|
+
return { success: false, error: 'No mock JWT configured' };
|
|
91
|
+
return {
|
|
92
|
+
success: true,
|
|
93
|
+
authIdentity: { id: ctx.auth_identity_id ?? crypto.randomUUID(), app_metadata: ctx.metadata },
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
async createSession(authContext, options) {
|
|
97
|
+
const sessionId = crypto.randomUUID();
|
|
98
|
+
const ttl = (options?.ttl ?? 86400) * 1000;
|
|
99
|
+
const expiresAt = new Date(Date.now() + ttl);
|
|
100
|
+
this._sessions.set(sessionId, { authContext, expiresAt });
|
|
101
|
+
// Handle TTL expiry (for fake timers in tests)
|
|
102
|
+
if (options?.ttl) {
|
|
103
|
+
setTimeout(() => this._sessions.delete(sessionId), ttl);
|
|
104
|
+
}
|
|
105
|
+
return { sessionId, expiresAt };
|
|
106
|
+
}
|
|
107
|
+
async destroySession(sessionId) {
|
|
108
|
+
this._sessions.delete(sessionId);
|
|
109
|
+
}
|
|
110
|
+
async verifySession(sessionId) {
|
|
111
|
+
const session = this._sessions.get(sessionId);
|
|
112
|
+
if (!session)
|
|
113
|
+
return null;
|
|
114
|
+
if (session.expiresAt < new Date()) {
|
|
115
|
+
this._sessions.delete(sessionId);
|
|
116
|
+
return null;
|
|
117
|
+
}
|
|
118
|
+
return session.authContext;
|
|
119
|
+
}
|
|
120
|
+
/** Test helper */
|
|
121
|
+
_reset() {
|
|
122
|
+
this._sessions.clear();
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
/** SPEC-049b — Auth Gateway facade */
|
|
126
|
+
export class MockAuthGateway {
|
|
127
|
+
authPort;
|
|
128
|
+
authModuleService;
|
|
129
|
+
constructor(authPort, authModuleService) {
|
|
130
|
+
this.authPort = authPort;
|
|
131
|
+
this.authModuleService = authModuleService;
|
|
132
|
+
}
|
|
133
|
+
async authenticate(credentials) {
|
|
134
|
+
// Priority 1: Bearer token
|
|
135
|
+
if (credentials.bearer) {
|
|
136
|
+
const jwtResult = this.authPort.verifyJwt(credentials.bearer);
|
|
137
|
+
if (jwtResult)
|
|
138
|
+
return jwtResult;
|
|
139
|
+
// Fallback to API key only if bearer starts with sk_
|
|
140
|
+
if (credentials.bearer.startsWith('sk_')) {
|
|
141
|
+
const apiKeyResult = this.authPort.verifyApiKey(credentials.bearer);
|
|
142
|
+
if (apiKeyResult)
|
|
143
|
+
return apiKeyResult;
|
|
144
|
+
}
|
|
145
|
+
// Bearer present but invalid → definitive rejection (AG-10, AG-14)
|
|
146
|
+
return null;
|
|
147
|
+
}
|
|
148
|
+
// Priority 2: API key (without bearer)
|
|
149
|
+
if (credentials.apiKey) {
|
|
150
|
+
return this.authPort.verifyApiKey(credentials.apiKey);
|
|
151
|
+
}
|
|
152
|
+
// Priority 3: Session (without bearer or API key)
|
|
153
|
+
if (credentials.sessionId) {
|
|
154
|
+
return this.authModuleService.verifySession(credentials.sessionId);
|
|
155
|
+
}
|
|
156
|
+
// No credentials
|
|
157
|
+
return null;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
//# sourceMappingURL=auth-mock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-mock.js","sourceRoot":"","sources":["../../src/adapters/auth-mock.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ICachePort } from '../ports';
|
|
2
|
+
export declare class InMemoryCacheAdapter implements ICachePort {
|
|
3
|
+
private _store;
|
|
4
|
+
get(key: string): Promise<unknown>;
|
|
5
|
+
set(key: string, data: unknown, ttl?: number): Promise<void>;
|
|
6
|
+
invalidate(key: string): Promise<void>;
|
|
7
|
+
clear(): Promise<void>;
|
|
8
|
+
ping(): Promise<boolean>;
|
|
9
|
+
_reset(): void;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=cache-memory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache-memory.d.ts","sourceRoot":"","sources":["../../src/adapters/cache-memory.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAE1C,qBAAa,oBAAqB,YAAW,UAAU;IACrD,OAAO,CAAC,MAAM,CAAkE;IAE1E,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAUlC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK5D,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAItC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;IAK9B,MAAM;CAGP"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// SPEC-064/077 — InMemoryCacheAdapter implements ICachePort
|
|
2
|
+
export class InMemoryCacheAdapter {
|
|
3
|
+
_store = new Map();
|
|
4
|
+
async get(key) {
|
|
5
|
+
const entry = this._store.get(key);
|
|
6
|
+
if (!entry)
|
|
7
|
+
return null;
|
|
8
|
+
if (entry.expiresAt !== null && Date.now() >= entry.expiresAt) {
|
|
9
|
+
this._store.delete(key);
|
|
10
|
+
return null;
|
|
11
|
+
}
|
|
12
|
+
return entry.value;
|
|
13
|
+
}
|
|
14
|
+
async set(key, data, ttl) {
|
|
15
|
+
const expiresAt = ttl ? Date.now() + ttl * 1000 : null;
|
|
16
|
+
this._store.set(key, { value: data, expiresAt });
|
|
17
|
+
}
|
|
18
|
+
async invalidate(key) {
|
|
19
|
+
this._store.delete(key);
|
|
20
|
+
}
|
|
21
|
+
async clear() {
|
|
22
|
+
this._store.clear();
|
|
23
|
+
}
|
|
24
|
+
async ping() {
|
|
25
|
+
// In-memory cache is always reachable (the backing Map is process-local).
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
28
|
+
_reset() {
|
|
29
|
+
this._store.clear();
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=cache-memory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache-memory.js","sourceRoot":"","sources":["../../src/adapters/cache-memory.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAI5D,MAAM,OAAO,oBAAoB;IACvB,MAAM,GAAG,IAAI,GAAG,EAAwD,CAAA;IAEhF,KAAK,CAAC,GAAG,CAAC,GAAW;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAClC,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAA;QACvB,IAAI,KAAK,CAAC,SAAS,KAAK,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YAC9D,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YACvB,OAAO,IAAI,CAAA;QACb,CAAC;QACD,OAAO,KAAK,CAAC,KAAK,CAAA;IACpB,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW,EAAE,IAAa,EAAE,GAAY;QAChD,MAAM,SAAS,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;QACtD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAA;IAClD,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,GAAW;QAC1B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IACzB,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;IACrB,CAAC;IAED,KAAK,CAAC,IAAI;QACR,0EAA0E;QAC1E,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM;QACJ,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;IACrB,CAAC;CACF"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { DatabaseConfig, IDatabasePort, TransactionOptions } from '../ports';
|
|
2
|
+
export declare class InMemoryTransaction {
|
|
3
|
+
private _tables;
|
|
4
|
+
private _schema;
|
|
5
|
+
constructor(tables: Map<string, Map<string, Record<string, unknown>>>, schema: Map<string, {
|
|
6
|
+
notNull: Set<string>;
|
|
7
|
+
}>);
|
|
8
|
+
execute(sql: string, params?: unknown[]): Promise<unknown>;
|
|
9
|
+
}
|
|
10
|
+
export declare class InMemoryDatabaseAdapter implements IDatabasePort {
|
|
11
|
+
private _tables;
|
|
12
|
+
private _schema;
|
|
13
|
+
private _initialized;
|
|
14
|
+
private _disposed;
|
|
15
|
+
initialize(_config: DatabaseConfig): Promise<void>;
|
|
16
|
+
dispose(): Promise<void>;
|
|
17
|
+
healthCheck(): Promise<boolean>;
|
|
18
|
+
getClient(): unknown;
|
|
19
|
+
getPool(): unknown;
|
|
20
|
+
transaction<T>(fn: (tx: unknown) => Promise<T>, _options?: TransactionOptions): Promise<T>;
|
|
21
|
+
raw<T = Record<string, unknown>>(sql: string, params?: unknown[]): Promise<T[]>;
|
|
22
|
+
_reset(): void;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=database-memory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database-memory.d.ts","sourceRoot":"","sources":["../../src/adapters/database-memory.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAEjF,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,OAAO,CAAmD;IAClE,OAAO,CAAC,OAAO,CAAuC;gBAGpD,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EACzD,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;KAAE,CAAC;IAMzC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;CA4FjE;AAED,qBAAa,uBAAwB,YAAW,aAAa;IAC3D,OAAO,CAAC,OAAO,CAA0D;IACzE,OAAO,CAAC,OAAO,CAA8C;IAC7D,OAAO,CAAC,YAAY,CAAQ;IAC5B,OAAO,CAAC,SAAS,CAAQ;IAEnB,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAMxB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAIrC,SAAS,IAAI,OAAO;IAIpB,OAAO,IAAI,OAAO;IAIZ,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAsB1F,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAMrF,MAAM;CAIP"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
// SPEC-056 — InMemoryDatabaseAdapter implements IDatabasePort
|
|
2
|
+
import { MantaError } from '../errors/manta-error';
|
|
3
|
+
export class InMemoryTransaction {
|
|
4
|
+
_tables;
|
|
5
|
+
_schema;
|
|
6
|
+
constructor(tables, schema) {
|
|
7
|
+
this._tables = tables;
|
|
8
|
+
this._schema = schema;
|
|
9
|
+
}
|
|
10
|
+
async execute(sql, params) {
|
|
11
|
+
const trimmed = sql.trim().toUpperCase();
|
|
12
|
+
// SELECT 1 as value — simple ping
|
|
13
|
+
if (trimmed.startsWith('SELECT 1')) {
|
|
14
|
+
return [{ value: 1 }];
|
|
15
|
+
}
|
|
16
|
+
// SELECT * FROM table WHERE id = $1
|
|
17
|
+
if (trimmed.startsWith('SELECT')) {
|
|
18
|
+
const tableMatch = sql.match(/FROM\s+(\w+)/i);
|
|
19
|
+
if (!tableMatch)
|
|
20
|
+
return [];
|
|
21
|
+
const tableName = tableMatch[1];
|
|
22
|
+
const table = this._tables.get(tableName);
|
|
23
|
+
if (!table)
|
|
24
|
+
return [];
|
|
25
|
+
const whereMatch = sql.match(/WHERE\s+(\w+)\s*=\s*\$(\d+)/i);
|
|
26
|
+
if (whereMatch && params) {
|
|
27
|
+
const col = whereMatch[1];
|
|
28
|
+
const paramIdx = parseInt(whereMatch[2], 10) - 1;
|
|
29
|
+
const val = params[paramIdx];
|
|
30
|
+
const rows = [...table.values()].filter((r) => r[col] === val);
|
|
31
|
+
return rows;
|
|
32
|
+
}
|
|
33
|
+
return [...table.values()];
|
|
34
|
+
}
|
|
35
|
+
// INSERT INTO table (cols) VALUES ($1, $2, ...)
|
|
36
|
+
if (trimmed.startsWith('INSERT')) {
|
|
37
|
+
const tableMatch = sql.match(/INSERT\s+INTO\s+(\w+)/i);
|
|
38
|
+
if (!tableMatch)
|
|
39
|
+
throw new MantaError('INVALID_DATA', 'Invalid INSERT statement');
|
|
40
|
+
const tableName = tableMatch[1];
|
|
41
|
+
// Extract column names
|
|
42
|
+
const colsMatch = sql.match(/\(([^)]+)\)\s*VALUES/i);
|
|
43
|
+
if (!colsMatch)
|
|
44
|
+
throw new MantaError('INVALID_DATA', 'Invalid INSERT — no columns');
|
|
45
|
+
const cols = colsMatch[1].split(',').map((c) => c.trim());
|
|
46
|
+
// Ensure table exists
|
|
47
|
+
if (!this._tables.has(tableName)) {
|
|
48
|
+
this._tables.set(tableName, new Map());
|
|
49
|
+
// Default schema: id and name are NOT NULL for test_table
|
|
50
|
+
if (tableName === 'test_table') {
|
|
51
|
+
this._schema.set(tableName, { notNull: new Set(['id', 'name']) });
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
const table = this._tables.get(tableName);
|
|
55
|
+
const schema = this._schema.get(tableName);
|
|
56
|
+
// Build the row from params
|
|
57
|
+
const row = {};
|
|
58
|
+
for (let i = 0; i < cols.length; i++) {
|
|
59
|
+
row[cols[i]] = params?.[i] ?? null;
|
|
60
|
+
}
|
|
61
|
+
// D-12 — NOT NULL violation (PG 23502 → INVALID_DATA)
|
|
62
|
+
if (schema) {
|
|
63
|
+
for (const col of schema.notNull) {
|
|
64
|
+
if (row[col] === null || row[col] === undefined) {
|
|
65
|
+
throw new MantaError('INVALID_DATA', `NOT NULL violation: column "${col}" in table "${tableName}" cannot be null`);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
// D-11 — FK violation (PG 23503 → NOT_FOUND)
|
|
70
|
+
// Simulate: child_table.parent_id must reference test_table.id
|
|
71
|
+
if (tableName === 'child_table' && row.parent_id) {
|
|
72
|
+
const parentTable = this._tables.get('test_table');
|
|
73
|
+
if (!parentTable || !parentTable.has(String(row.parent_id))) {
|
|
74
|
+
throw new MantaError('NOT_FOUND', `Foreign key violation: referenced row in "test_table" not found for parent_id="${row.parent_id}"`);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
// D-10 — Duplicate key (PG 23505 → DUPLICATE_ERROR)
|
|
78
|
+
const id = String(row.id ?? '');
|
|
79
|
+
if (id && table.has(id)) {
|
|
80
|
+
throw new MantaError('DUPLICATE_ERROR', `Duplicate key violation: id="${id}" already exists in "${tableName}"`);
|
|
81
|
+
}
|
|
82
|
+
table.set(id, row);
|
|
83
|
+
return { rowCount: 1 };
|
|
84
|
+
}
|
|
85
|
+
// Default: return defined result for unknown queries
|
|
86
|
+
return [];
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
export class InMemoryDatabaseAdapter {
|
|
90
|
+
_tables = new Map();
|
|
91
|
+
_schema = new Map();
|
|
92
|
+
_initialized = false;
|
|
93
|
+
_disposed = false;
|
|
94
|
+
async initialize(_config) {
|
|
95
|
+
this._initialized = true;
|
|
96
|
+
}
|
|
97
|
+
async dispose() {
|
|
98
|
+
this._disposed = true;
|
|
99
|
+
this._tables.clear();
|
|
100
|
+
this._schema.clear();
|
|
101
|
+
}
|
|
102
|
+
async healthCheck() {
|
|
103
|
+
return this._initialized && !this._disposed;
|
|
104
|
+
}
|
|
105
|
+
getClient() {
|
|
106
|
+
return new InMemoryTransaction(this._tables, this._schema);
|
|
107
|
+
}
|
|
108
|
+
getPool() {
|
|
109
|
+
return { client: this.getClient() };
|
|
110
|
+
}
|
|
111
|
+
async transaction(fn, _options) {
|
|
112
|
+
// Snapshot for rollback
|
|
113
|
+
const snapshot = new Map();
|
|
114
|
+
for (const [name, rows] of this._tables) {
|
|
115
|
+
const rowsCopy = new Map();
|
|
116
|
+
for (const [id, row] of rows) {
|
|
117
|
+
rowsCopy.set(id, { ...row });
|
|
118
|
+
}
|
|
119
|
+
snapshot.set(name, rowsCopy);
|
|
120
|
+
}
|
|
121
|
+
const schemaCopy = new Map(this._schema);
|
|
122
|
+
const tx = new InMemoryTransaction(snapshot, schemaCopy);
|
|
123
|
+
const result = await fn(tx);
|
|
124
|
+
// Commit: apply snapshot to real tables
|
|
125
|
+
this._tables.clear();
|
|
126
|
+
for (const [name, rows] of snapshot) {
|
|
127
|
+
this._tables.set(name, rows);
|
|
128
|
+
}
|
|
129
|
+
return result;
|
|
130
|
+
}
|
|
131
|
+
async raw(sql, params) {
|
|
132
|
+
const tx = new InMemoryTransaction(this._tables, this._schema);
|
|
133
|
+
const result = await tx.execute(sql, params);
|
|
134
|
+
return result;
|
|
135
|
+
}
|
|
136
|
+
_reset() {
|
|
137
|
+
this._tables.clear();
|
|
138
|
+
this._schema.clear();
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=database-memory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database-memory.js","sourceRoot":"","sources":["../../src/adapters/database-memory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { GroupStatus, IEventBusPort, Message } from '../ports';
|
|
2
|
+
export declare class InMemoryEventBusAdapter implements IEventBusPort {
|
|
3
|
+
private _subscribers;
|
|
4
|
+
private _interceptors;
|
|
5
|
+
private _groups;
|
|
6
|
+
private _maxActiveGroups;
|
|
7
|
+
private _groupTtls;
|
|
8
|
+
private _onGroupCreated?;
|
|
9
|
+
private _onGroupReleased?;
|
|
10
|
+
private _onGroupCleared?;
|
|
11
|
+
emit(event: Message | Message[], options?: {
|
|
12
|
+
groupId?: string;
|
|
13
|
+
}): Promise<void>;
|
|
14
|
+
subscribe(eventName: string, handler: (event: Message) => Promise<void> | void, options?: {
|
|
15
|
+
subscriberId?: string;
|
|
16
|
+
}): void;
|
|
17
|
+
unsubscribe(subscriberId: string): void;
|
|
18
|
+
releaseGroupedEvents(eventGroupId: string): Promise<void>;
|
|
19
|
+
clearGroupedEvents(eventGroupId: string): Promise<void>;
|
|
20
|
+
addInterceptor(fn: (message: Message, context?: {
|
|
21
|
+
isGrouped?: boolean;
|
|
22
|
+
eventGroupId?: string;
|
|
23
|
+
}) => void): void;
|
|
24
|
+
removeInterceptor(fn: (message: Message, context?: {
|
|
25
|
+
isGrouped?: boolean;
|
|
26
|
+
eventGroupId?: string;
|
|
27
|
+
}) => Promise<void> | void): void;
|
|
28
|
+
onGroupCreated(handler: (id: string, count: number) => void): void;
|
|
29
|
+
onGroupReleased(handler: (id: string, count: number) => void): void;
|
|
30
|
+
onGroupCleared(handler: (id: string, count: number, reason: 'explicit' | 'ttl') => void): void;
|
|
31
|
+
getGroupStatus(eventGroupId: string): GroupStatus | null;
|
|
32
|
+
ping(): Promise<boolean>;
|
|
33
|
+
/** Configure maxActiveGroups for testing E-13 */
|
|
34
|
+
_setMaxActiveGroups(max: number): void;
|
|
35
|
+
_reset(): void;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=eventbus-memory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eventbus-memory.d.ts","sourceRoot":"","sources":["../../src/adapters/eventbus-memory.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAEnE,qBAAa,uBAAwB,YAAW,aAAa;IAC3D,OAAO,CAAC,YAAY,CAA8F;IAClH,OAAO,CAAC,aAAa,CAAmD;IACxE,OAAO,CAAC,OAAO,CAA+B;IAC9C,OAAO,CAAC,gBAAgB,CAAQ;IAChC,OAAO,CAAC,UAAU,CAAmD;IAGrE,OAAO,CAAC,eAAe,CAAC,CAAqC;IAC7D,OAAO,CAAC,gBAAgB,CAAC,CAAqC;IAC9D,OAAO,CAAC,eAAe,CAAC,CAAiE;IAEnF,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAwErF,SAAS,CACP,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,EACjD,OAAO,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,GAClC,IAAI;IAYP,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IASjC,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmCzD,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAY7D,cAAc,CAAC,EAAE,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,GAAG,IAAI;IAI9G,iBAAiB,CACf,EAAE,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GACvG,IAAI;IAIP,cAAc,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI;IAG3D,eAAe,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI;IAG5D,cAAc,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,KAAK,KAAK,IAAI;IAIvF,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAMlD,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;IAK9B,iDAAiD;IACjD,mBAAmB,CAAC,GAAG,EAAE,MAAM;IAG/B,MAAM;CAOP"}
|