@motiadev/core 0.13.2-beta.164-110989 → 0.14.0-beta.164
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/index.d.ts +30 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +72 -0
- package/dist/jest.config.d.ts +8 -0
- package/dist/jest.config.d.ts.map +1 -0
- package/dist/src/adapters/defaults/cron/in-memory-cron-adapter.d.ts +13 -0
- package/dist/src/adapters/defaults/cron/in-memory-cron-adapter.d.ts.map +1 -0
- package/dist/src/adapters/defaults/cron/in-memory-cron-adapter.js +53 -0
- package/dist/src/adapters/defaults/event/in-memory-queue-event-adapter.d.ts +15 -0
- package/dist/src/adapters/defaults/event/in-memory-queue-event-adapter.d.ts.map +1 -0
- package/dist/src/adapters/defaults/event/in-memory-queue-event-adapter.js +49 -0
- package/dist/src/adapters/defaults/index.d.ts +9 -0
- package/dist/src/adapters/defaults/index.d.ts.map +1 -0
- package/dist/src/adapters/defaults/index.js +19 -0
- package/dist/src/adapters/defaults/state/file-state-adapter.d.ts +23 -0
- package/dist/src/adapters/defaults/state/file-state-adapter.d.ts.map +1 -0
- package/dist/src/adapters/defaults/state/file-state-adapter.js +149 -0
- package/dist/src/adapters/defaults/state/memory-state-adapter.d.ts +16 -0
- package/dist/src/adapters/defaults/state/memory-state-adapter.d.ts.map +1 -0
- package/dist/src/adapters/defaults/state/memory-state-adapter.js +69 -0
- package/dist/src/adapters/defaults/state/utils.d.ts +4 -0
- package/dist/src/adapters/defaults/state/utils.d.ts.map +1 -0
- package/dist/src/adapters/defaults/state/utils.js +66 -0
- package/dist/src/adapters/defaults/stream/file-stream-adapter-manager.d.ts +9 -0
- package/dist/src/adapters/defaults/stream/file-stream-adapter-manager.d.ts.map +1 -0
- package/dist/src/adapters/defaults/stream/file-stream-adapter-manager.js +14 -0
- package/dist/src/adapters/defaults/stream/file-stream-adapter.d.ts +22 -0
- package/dist/src/adapters/defaults/stream/file-stream-adapter.d.ts.map +1 -0
- package/dist/src/adapters/defaults/stream/file-stream-adapter.js +125 -0
- package/dist/src/adapters/defaults/stream/index.d.ts +5 -0
- package/dist/src/adapters/defaults/stream/index.d.ts.map +1 -0
- package/dist/src/adapters/defaults/stream/index.js +11 -0
- package/dist/src/adapters/defaults/stream/memory-stream-adapter-manager.d.ts +6 -0
- package/dist/src/adapters/defaults/stream/memory-stream-adapter-manager.d.ts.map +1 -0
- package/dist/src/adapters/defaults/stream/memory-stream-adapter-manager.js +10 -0
- package/dist/src/adapters/defaults/stream/memory-stream-adapter.d.ts +16 -0
- package/dist/src/adapters/defaults/stream/memory-stream-adapter.d.ts.map +1 -0
- package/dist/src/adapters/defaults/stream/memory-stream-adapter.js +55 -0
- package/dist/src/adapters/interfaces/cron-adapter.interface.d.ts +29 -0
- package/dist/src/adapters/interfaces/cron-adapter.interface.d.ts.map +1 -0
- package/dist/src/adapters/interfaces/cron-adapter.interface.js +2 -0
- package/dist/src/adapters/interfaces/event-adapter.interface.d.ts +15 -0
- package/dist/src/adapters/interfaces/event-adapter.interface.d.ts.map +1 -0
- package/dist/src/adapters/interfaces/event-adapter.interface.js +2 -0
- package/dist/src/adapters/interfaces/index.d.ts +7 -0
- package/dist/src/adapters/interfaces/index.d.ts.map +1 -0
- package/dist/src/adapters/interfaces/index.js +5 -0
- package/dist/src/adapters/interfaces/observability-adapter.interface.d.ts +23 -0
- package/dist/src/adapters/interfaces/observability-adapter.interface.d.ts.map +1 -0
- package/dist/src/adapters/interfaces/observability-adapter.interface.js +2 -0
- package/dist/src/adapters/interfaces/state-adapter.interface.d.ts +24 -0
- package/dist/src/adapters/interfaces/state-adapter.interface.d.ts.map +1 -0
- package/dist/src/adapters/interfaces/state-adapter.interface.js +2 -0
- package/dist/src/adapters/interfaces/stream-adapter-manager.interface.d.ts +6 -0
- package/dist/src/adapters/interfaces/stream-adapter-manager.interface.d.ts.map +1 -0
- package/dist/src/adapters/interfaces/stream-adapter-manager.interface.js +2 -0
- package/dist/src/adapters/interfaces/stream-adapter.interface.d.ts +22 -0
- package/dist/src/adapters/interfaces/stream-adapter.interface.d.ts.map +1 -0
- package/dist/src/adapters/interfaces/stream-adapter.interface.js +16 -0
- package/dist/src/analytics/utils.d.ts +6 -0
- package/dist/src/analytics/utils.d.ts.map +1 -0
- package/dist/src/analytics/utils.js +51 -0
- package/dist/src/call-step-file.d.ts +16 -0
- package/dist/src/call-step-file.d.ts.map +1 -0
- package/dist/src/call-step-file.js +198 -0
- package/dist/src/config.d.ts +3 -0
- package/dist/src/config.d.ts.map +1 -0
- package/dist/src/config.js +5 -0
- package/dist/src/config.types.d.ts +17 -0
- package/dist/src/config.types.d.ts.map +1 -0
- package/dist/src/config.types.js +2 -0
- package/dist/src/cron-handler.d.ts +14 -0
- package/dist/src/cron-handler.d.ts.map +1 -0
- package/dist/src/cron-handler.js +132 -0
- package/dist/src/endpoints/analytics-endpoint.d.ts +3 -0
- package/dist/src/endpoints/analytics-endpoint.d.ts.map +1 -0
- package/dist/src/endpoints/analytics-endpoint.js +28 -0
- package/dist/src/endpoints/flows-config-endpoint.d.ts +4 -0
- package/dist/src/endpoints/flows-config-endpoint.d.ts.map +1 -0
- package/dist/src/endpoints/flows-config-endpoint.js +34 -0
- package/dist/src/endpoints/flows-endpoint.d.ts +3 -0
- package/dist/src/endpoints/flows-endpoint.d.ts.map +1 -0
- package/dist/src/endpoints/flows-endpoint.js +29 -0
- package/dist/src/endpoints/step-endpoint.d.ts +4 -0
- package/dist/src/endpoints/step-endpoint.d.ts.map +1 -0
- package/dist/src/endpoints/step-endpoint.js +45 -0
- package/dist/src/generate-trace-id.d.ts +3 -0
- package/dist/src/generate-trace-id.d.ts.map +1 -0
- package/dist/src/generate-trace-id.js +14 -0
- package/dist/src/get-step-config.d.ts +5 -0
- package/dist/src/get-step-config.d.ts.map +1 -0
- package/dist/src/get-step-config.js +68 -0
- package/dist/src/get-step-language.d.ts +2 -0
- package/dist/src/get-step-language.d.ts.map +1 -0
- package/dist/src/get-step-language.js +27 -0
- package/dist/src/guards.d.ts +6 -0
- package/dist/src/guards.d.ts.map +1 -0
- package/dist/src/guards.js +11 -0
- package/dist/src/helper/flows-helper.d.ts +6 -0
- package/dist/src/helper/flows-helper.d.ts.map +1 -0
- package/dist/src/helper/flows-helper.js +143 -0
- package/dist/src/infrastructure-validator/defaults.d.ts +4 -0
- package/dist/src/infrastructure-validator/defaults.d.ts.map +1 -0
- package/dist/src/infrastructure-validator/defaults.js +16 -0
- package/dist/src/infrastructure-validator/index.d.ts +4 -0
- package/dist/src/infrastructure-validator/index.d.ts.map +1 -0
- package/dist/src/infrastructure-validator/index.js +13 -0
- package/dist/src/infrastructure-validator/schemas.d.ts +45 -0
- package/dist/src/infrastructure-validator/schemas.d.ts.map +1 -0
- package/dist/src/infrastructure-validator/schemas.js +100 -0
- package/dist/src/infrastructure-validator/types.d.ts +21 -0
- package/dist/src/infrastructure-validator/types.d.ts.map +1 -0
- package/dist/src/infrastructure-validator/types.js +2 -0
- package/dist/src/infrastructure-validator/validations.d.ts +4 -0
- package/dist/src/infrastructure-validator/validations.d.ts.map +1 -0
- package/dist/src/infrastructure-validator/validations.js +62 -0
- package/dist/src/language-runner.d.ts +15 -0
- package/dist/src/language-runner.d.ts.map +1 -0
- package/dist/src/language-runner.js +31 -0
- package/dist/src/locked-data.d.ts +78 -0
- package/dist/src/locked-data.d.ts.map +1 -0
- package/dist/src/locked-data.js +284 -0
- package/dist/src/logger-factory.d.ts +19 -0
- package/dist/src/logger-factory.d.ts.map +1 -0
- package/dist/src/logger-factory.js +27 -0
- package/dist/src/logger.d.ts +26 -0
- package/dist/src/logger.d.ts.map +1 -0
- package/dist/src/logger.js +60 -0
- package/dist/src/mermaid-generator.d.ts +5 -0
- package/dist/src/mermaid-generator.d.ts.map +1 -0
- package/dist/src/mermaid-generator.js +203 -0
- package/dist/src/motia.d.ts +33 -0
- package/dist/src/motia.d.ts.map +1 -0
- package/dist/src/motia.js +4 -0
- package/dist/src/node/can-access.d.ts +2 -0
- package/dist/src/node/can-access.d.ts.map +1 -0
- package/dist/src/node/can-access.js +44 -0
- package/dist/src/node/get-config.d.ts +2 -0
- package/dist/src/node/get-config.d.ts.map +1 -0
- package/dist/src/node/get-config.js +64 -0
- package/dist/src/node/logger.d.ts +16 -0
- package/dist/src/node/logger.d.ts.map +1 -0
- package/dist/src/node/logger.js +48 -0
- package/dist/src/node/middleware-compose.d.ts +2 -0
- package/dist/src/node/middleware-compose.d.ts.map +1 -0
- package/dist/src/node/middleware-compose.js +10 -0
- package/dist/src/node/node-runner.d.ts +2 -0
- package/dist/src/node/node-runner.d.ts.map +1 -0
- package/dist/src/node/node-runner.js +83 -0
- package/dist/src/node/rpc-state-manager.d.ts +12 -0
- package/dist/src/node/rpc-state-manager.d.ts.map +1 -0
- package/dist/src/node/rpc-state-manager.js +24 -0
- package/dist/src/node/rpc.d.ts +10 -0
- package/dist/src/node/rpc.d.ts.map +1 -0
- package/dist/src/node/rpc.js +50 -0
- package/dist/src/observability/create-trace.d.ts +4 -0
- package/dist/src/observability/create-trace.d.ts.map +1 -0
- package/dist/src/observability/create-trace.js +22 -0
- package/dist/src/observability/index.d.ts +4 -0
- package/dist/src/observability/index.d.ts.map +1 -0
- package/dist/src/observability/index.js +2 -0
- package/dist/src/observability/no-tracer.d.ts +10 -0
- package/dist/src/observability/no-tracer.d.ts.map +1 -0
- package/dist/src/observability/no-tracer.js +22 -0
- package/dist/src/observability/redis-trace-stream-adapter.d.ts +17 -0
- package/dist/src/observability/redis-trace-stream-adapter.d.ts.map +1 -0
- package/dist/src/observability/redis-trace-stream-adapter.js +65 -0
- package/dist/src/observability/stream-tracer.d.ts +23 -0
- package/dist/src/observability/stream-tracer.d.ts.map +1 -0
- package/dist/src/observability/stream-tracer.js +114 -0
- package/dist/src/observability/trace-manager.d.ts +14 -0
- package/dist/src/observability/trace-manager.d.ts.map +1 -0
- package/dist/src/observability/trace-manager.js +26 -0
- package/dist/src/observability/tracer.d.ts +19 -0
- package/dist/src/observability/tracer.d.ts.map +1 -0
- package/dist/src/observability/tracer.js +98 -0
- package/dist/src/observability/types.d.ts +75 -0
- package/dist/src/observability/types.d.ts.map +1 -0
- package/dist/src/observability/types.js +2 -0
- package/dist/src/pretty-print.d.ts +2 -0
- package/dist/src/pretty-print.d.ts.map +1 -0
- package/dist/src/pretty-print.js +63 -0
- package/dist/src/printer.d.ts +61 -0
- package/dist/src/printer.d.ts.map +1 -0
- package/dist/src/printer.js +164 -0
- package/dist/src/process-communication/communication-config.d.ts +8 -0
- package/dist/src/process-communication/communication-config.d.ts.map +1 -0
- package/dist/src/process-communication/communication-config.js +18 -0
- package/dist/src/process-communication/process-manager.d.ts +32 -0
- package/dist/src/process-communication/process-manager.d.ts.map +1 -0
- package/dist/src/process-communication/process-manager.js +88 -0
- package/dist/src/process-communication/rpc-processor-interface.d.ts +10 -0
- package/dist/src/process-communication/rpc-processor-interface.d.ts.map +1 -0
- package/dist/src/process-communication/rpc-processor-interface.js +2 -0
- package/dist/src/queue-manager.d.ts +42 -0
- package/dist/src/queue-manager.d.ts.map +1 -0
- package/dist/src/queue-manager.js +252 -0
- package/dist/src/ruby/get-ruby-config.d.ts +3 -0
- package/dist/src/ruby/get-ruby-config.d.ts.map +1 -0
- package/dist/src/ruby/get-ruby-config.js +34 -0
- package/dist/src/run-stream-can-access.d.ts +10 -0
- package/dist/src/run-stream-can-access.d.ts.map +1 -0
- package/dist/src/run-stream-can-access.js +59 -0
- package/dist/src/schema-utils.d.ts +9 -0
- package/dist/src/schema-utils.d.ts.map +1 -0
- package/dist/src/schema-utils.js +80 -0
- package/dist/src/server.d.ts +37 -0
- package/dist/src/server.d.ts.map +1 -0
- package/dist/src/server.js +344 -0
- package/dist/src/socket-server/helpers.d.ts +53 -0
- package/dist/src/socket-server/helpers.d.ts.map +1 -0
- package/dist/src/socket-server/helpers.js +28 -0
- package/dist/src/socket-server.d.ts +21 -0
- package/dist/src/socket-server.d.ts.map +1 -0
- package/dist/src/socket-server.js +127 -0
- package/dist/src/state/create-state-adapter.d.ts +8 -0
- package/dist/src/state/create-state-adapter.d.ts.map +1 -0
- package/dist/src/state/create-state-adapter.js +8 -0
- package/dist/src/step-handler-rpc-processor.d.ts +22 -0
- package/dist/src/step-handler-rpc-processor.d.ts.map +1 -0
- package/dist/src/step-handler-rpc-processor.js +63 -0
- package/dist/src/step-handler-rpc-stdin-processor.d.ts +23 -0
- package/dist/src/step-handler-rpc-stdin-processor.d.ts.map +1 -0
- package/dist/src/step-handler-rpc-stdin-processor.js +83 -0
- package/dist/src/step-handlers.d.ts +9 -0
- package/dist/src/step-handlers.d.ts.map +1 -0
- package/dist/src/step-handlers.js +77 -0
- package/dist/src/step-validator.d.ts +15 -0
- package/dist/src/step-validator.d.ts.map +1 -0
- package/dist/src/step-validator.js +135 -0
- package/dist/src/steps/emit.step.d.ts +12 -0
- package/dist/src/steps/emit.step.d.ts.map +1 -0
- package/dist/src/steps/emit.step.js +27 -0
- package/dist/src/steps/index.d.ts +3 -0
- package/dist/src/steps/index.d.ts.map +1 -0
- package/dist/src/steps/index.js +16 -0
- package/dist/src/streams/flows-config-stream.d.ts +14 -0
- package/dist/src/streams/flows-config-stream.d.ts.map +1 -0
- package/dist/src/streams/flows-config-stream.js +49 -0
- package/dist/src/streams/flows-stream.d.ts +12 -0
- package/dist/src/streams/flows-stream.d.ts.map +1 -0
- package/dist/src/streams/flows-stream.js +35 -0
- package/dist/src/streams/redis-logs-stream.d.ts +31 -0
- package/dist/src/streams/redis-logs-stream.d.ts.map +1 -0
- package/dist/src/streams/redis-logs-stream.js +84 -0
- package/dist/src/streams/stream-factory.d.ts +3 -0
- package/dist/src/streams/stream-factory.d.ts.map +1 -0
- package/dist/src/streams/stream-factory.js +2 -0
- package/dist/src/types/app-config-types.d.ts +45 -0
- package/dist/src/types/app-config-types.d.ts.map +1 -0
- package/dist/src/types/app-config-types.js +2 -0
- package/dist/src/types/flows-config-types.d.ts +10 -0
- package/dist/src/types/flows-config-types.d.ts.map +1 -0
- package/dist/src/types/flows-config-types.js +2 -0
- package/dist/src/types/flows-types.d.ts +39 -0
- package/dist/src/types/flows-types.d.ts.map +1 -0
- package/dist/src/types/flows-types.js +2 -0
- package/dist/src/types/generate-type-from-schema.d.ts +3 -0
- package/dist/src/types/generate-type-from-schema.d.ts.map +1 -0
- package/dist/src/types/generate-type-from-schema.js +49 -0
- package/dist/src/types/generate-types-from-response.d.ts +3 -0
- package/dist/src/types/generate-types-from-response.d.ts.map +1 -0
- package/dist/src/types/generate-types-from-response.js +13 -0
- package/dist/src/types/generate-types.d.ts +13 -0
- package/dist/src/types/generate-types.d.ts.map +1 -0
- package/dist/src/types/generate-types.js +127 -0
- package/dist/src/types/merge-schemas.d.ts +5 -0
- package/dist/src/types/merge-schemas.d.ts.map +1 -0
- package/dist/src/types/merge-schemas.js +183 -0
- package/dist/src/types/schema.types.d.ts +9 -0
- package/dist/src/types/schema.types.d.ts.map +1 -0
- package/dist/src/types/schema.types.js +14 -0
- package/dist/src/types-stream.d.ts +42 -0
- package/dist/src/types-stream.d.ts.map +1 -0
- package/dist/src/types-stream.js +2 -0
- package/dist/src/types.d.ts +190 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +17 -0
- package/dist/src/utils.d.ts +3 -0
- package/dist/src/utils.d.ts.map +1 -0
- package/dist/src/utils.js +12 -0
- package/dist/src/validate-event-input.d.ts +3 -0
- package/dist/src/validate-event-input.d.ts.map +1 -0
- package/dist/src/validate-event-input.js +74 -0
- package/package.json +8 -21
- package/dist/index.d.mts +0 -38
- package/dist/index.mjs +0 -30
- package/dist/src/adapters/defaults/cron/in-memory-cron-adapter.d.mts +0 -17
- package/dist/src/adapters/defaults/cron/in-memory-cron-adapter.d.mts.map +0 -1
- package/dist/src/adapters/defaults/cron/in-memory-cron-adapter.mjs +0 -51
- package/dist/src/adapters/defaults/cron/in-memory-cron-adapter.mjs.map +0 -1
- package/dist/src/adapters/defaults/event/in-memory-queue-event-adapter.d.mts +0 -19
- package/dist/src/adapters/defaults/event/in-memory-queue-event-adapter.d.mts.map +0 -1
- package/dist/src/adapters/defaults/event/in-memory-queue-event-adapter.mjs +0 -54
- package/dist/src/adapters/defaults/event/in-memory-queue-event-adapter.mjs.map +0 -1
- package/dist/src/adapters/defaults/index.d.mts +0 -8
- package/dist/src/adapters/defaults/index.mjs +0 -10
- package/dist/src/adapters/defaults/state/file-state-adapter.d.mts +0 -27
- package/dist/src/adapters/defaults/state/file-state-adapter.d.mts.map +0 -1
- package/dist/src/adapters/defaults/state/file-state-adapter.mjs +0 -105
- package/dist/src/adapters/defaults/state/file-state-adapter.mjs.map +0 -1
- package/dist/src/adapters/defaults/state/memory-state-adapter.d.mts +0 -20
- package/dist/src/adapters/defaults/state/memory-state-adapter.d.mts.map +0 -1
- package/dist/src/adapters/defaults/state/memory-state-adapter.mjs +0 -58
- package/dist/src/adapters/defaults/state/memory-state-adapter.mjs.map +0 -1
- package/dist/src/adapters/defaults/state/utils.mjs +0 -40
- package/dist/src/adapters/defaults/state/utils.mjs.map +0 -1
- package/dist/src/adapters/defaults/stream/file-stream-adapter-manager.d.mts +0 -13
- package/dist/src/adapters/defaults/stream/file-stream-adapter-manager.d.mts.map +0 -1
- package/dist/src/adapters/defaults/stream/file-stream-adapter-manager.mjs +0 -16
- package/dist/src/adapters/defaults/stream/file-stream-adapter-manager.mjs.map +0 -1
- package/dist/src/adapters/defaults/stream/file-stream-adapter.d.mts +0 -24
- package/dist/src/adapters/defaults/stream/file-stream-adapter.d.mts.map +0 -1
- package/dist/src/adapters/defaults/stream/file-stream-adapter.mjs +0 -84
- package/dist/src/adapters/defaults/stream/file-stream-adapter.mjs.map +0 -1
- package/dist/src/adapters/defaults/stream/memory-stream-adapter-manager.d.mts +0 -10
- package/dist/src/adapters/defaults/stream/memory-stream-adapter-manager.d.mts.map +0 -1
- package/dist/src/adapters/defaults/stream/memory-stream-adapter-manager.mjs +0 -12
- package/dist/src/adapters/defaults/stream/memory-stream-adapter-manager.mjs.map +0 -1
- package/dist/src/adapters/defaults/stream/memory-stream-adapter.d.mts +0 -20
- package/dist/src/adapters/defaults/stream/memory-stream-adapter.d.mts.map +0 -1
- package/dist/src/adapters/defaults/stream/memory-stream-adapter.mjs +0 -58
- package/dist/src/adapters/defaults/stream/memory-stream-adapter.mjs.map +0 -1
- package/dist/src/adapters/interfaces/cron-adapter.interface.d.mts +0 -32
- package/dist/src/adapters/interfaces/cron-adapter.interface.d.mts.map +0 -1
- package/dist/src/adapters/interfaces/event-adapter.interface.d.mts +0 -19
- package/dist/src/adapters/interfaces/event-adapter.interface.d.mts.map +0 -1
- package/dist/src/adapters/interfaces/observability-adapter.interface.d.mts +0 -27
- package/dist/src/adapters/interfaces/observability-adapter.interface.d.mts.map +0 -1
- package/dist/src/adapters/interfaces/state-adapter.interface.d.mts +0 -28
- package/dist/src/adapters/interfaces/state-adapter.interface.d.mts.map +0 -1
- package/dist/src/adapters/interfaces/stream-adapter-manager.interface.d.mts +0 -10
- package/dist/src/adapters/interfaces/stream-adapter-manager.interface.d.mts.map +0 -1
- package/dist/src/adapters/interfaces/stream-adapter.interface.d.mts +0 -26
- package/dist/src/adapters/interfaces/stream-adapter.interface.d.mts.map +0 -1
- package/dist/src/adapters/interfaces/stream-adapter.interface.mjs +0 -17
- package/dist/src/adapters/interfaces/stream-adapter.interface.mjs.map +0 -1
- package/dist/src/analytics/utils.d.mts +0 -9
- package/dist/src/analytics/utils.d.mts.map +0 -1
- package/dist/src/analytics/utils.mjs +0 -35
- package/dist/src/analytics/utils.mjs.map +0 -1
- package/dist/src/call-step-file.mjs +0 -213
- package/dist/src/call-step-file.mjs.map +0 -1
- package/dist/src/config.d.mts +0 -7
- package/dist/src/config.d.mts.map +0 -1
- package/dist/src/config.mjs +0 -6
- package/dist/src/config.mjs.map +0 -1
- package/dist/src/cron-handler.d.mts +0 -18
- package/dist/src/cron-handler.d.mts.map +0 -1
- package/dist/src/cron-handler.mjs +0 -103
- package/dist/src/cron-handler.mjs.map +0 -1
- package/dist/src/endpoints/analytics-endpoint.mjs +0 -29
- package/dist/src/endpoints/analytics-endpoint.mjs.map +0 -1
- package/dist/src/endpoints/flows-config-endpoint.mjs +0 -38
- package/dist/src/endpoints/flows-config-endpoint.mjs.map +0 -1
- package/dist/src/endpoints/flows-endpoint.mjs +0 -39
- package/dist/src/endpoints/flows-endpoint.mjs.map +0 -1
- package/dist/src/endpoints/step-endpoint.mjs +0 -41
- package/dist/src/endpoints/step-endpoint.mjs.map +0 -1
- package/dist/src/generate-trace-id.mjs +0 -13
- package/dist/src/generate-trace-id.mjs.map +0 -1
- package/dist/src/get-step-config.d.mts +0 -9
- package/dist/src/get-step-config.d.mts.map +0 -1
- package/dist/src/get-step-config.mjs +0 -63
- package/dist/src/get-step-config.mjs.map +0 -1
- package/dist/src/get-step-language.mjs +0 -14
- package/dist/src/get-step-language.mjs.map +0 -1
- package/dist/src/guards.d.mts +0 -10
- package/dist/src/guards.d.mts.map +0 -1
- package/dist/src/guards.mjs +0 -9
- package/dist/src/guards.mjs.map +0 -1
- package/dist/src/helper/flows-helper.mjs +0 -126
- package/dist/src/helper/flows-helper.mjs.map +0 -1
- package/dist/src/infrastructure-validator/defaults.mjs +0 -17
- package/dist/src/infrastructure-validator/defaults.mjs.map +0 -1
- package/dist/src/infrastructure-validator/index.d.mts +0 -3
- package/dist/src/infrastructure-validator/index.mjs +0 -4
- package/dist/src/infrastructure-validator/schemas.d.mts +0 -1
- package/dist/src/infrastructure-validator/schemas.mjs +0 -77
- package/dist/src/infrastructure-validator/schemas.mjs.map +0 -1
- package/dist/src/infrastructure-validator/types.d.mts +0 -14
- package/dist/src/infrastructure-validator/types.d.mts.map +0 -1
- package/dist/src/infrastructure-validator/validations.d.mts +0 -7
- package/dist/src/infrastructure-validator/validations.d.mts.map +0 -1
- package/dist/src/infrastructure-validator/validations.mjs +0 -29
- package/dist/src/infrastructure-validator/validations.mjs.map +0 -1
- package/dist/src/language-runner.mjs +0 -55
- package/dist/src/language-runner.mjs.map +0 -1
- package/dist/src/locked-data.d.mts +0 -81
- package/dist/src/locked-data.d.mts.map +0 -1
- package/dist/src/locked-data.mjs +0 -223
- package/dist/src/locked-data.mjs.map +0 -1
- package/dist/src/logger-factory.d.mts +0 -16
- package/dist/src/logger-factory.d.mts.map +0 -1
- package/dist/src/logger-factory.mjs +0 -33
- package/dist/src/logger-factory.mjs.map +0 -1
- package/dist/src/logger.d.mts +0 -28
- package/dist/src/logger.d.mts.map +0 -1
- package/dist/src/logger.mjs +0 -64
- package/dist/src/logger.mjs.map +0 -1
- package/dist/src/mermaid-generator.d.mts +0 -9
- package/dist/src/mermaid-generator.d.mts.map +0 -1
- package/dist/src/mermaid-generator.mjs +0 -126
- package/dist/src/mermaid-generator.mjs.map +0 -1
- package/dist/src/motia.d.mts +0 -36
- package/dist/src/motia.d.mts.map +0 -1
- package/dist/src/motia.mjs +0 -6
- package/dist/src/motia.mjs.map +0 -1
- package/dist/src/node/can-access.d.mts +0 -1
- package/dist/src/node/can-access.mjs +0 -36
- package/dist/src/node/can-access.mjs.map +0 -1
- package/dist/src/node/get-config.d.mts +0 -1
- package/dist/src/node/get-config.mjs +0 -49
- package/dist/src/node/get-config.mjs.map +0 -1
- package/dist/src/node/logger.mjs +0 -47
- package/dist/src/node/logger.mjs.map +0 -1
- package/dist/src/node/middleware-compose.mjs +0 -10
- package/dist/src/node/middleware-compose.mjs.map +0 -1
- package/dist/src/node/node-runner.d.mts +0 -1
- package/dist/src/node/node-runner.mjs +0 -94
- package/dist/src/node/node-runner.mjs.map +0 -1
- package/dist/src/node/rpc-state-manager.mjs +0 -35
- package/dist/src/node/rpc-state-manager.mjs.map +0 -1
- package/dist/src/node/rpc.mjs +0 -55
- package/dist/src/node/rpc.mjs.map +0 -1
- package/dist/src/observability/create-trace.mjs +0 -26
- package/dist/src/observability/create-trace.mjs.map +0 -1
- package/dist/src/observability/index.d.mts +0 -7
- package/dist/src/observability/index.d.mts.map +0 -1
- package/dist/src/observability/no-tracer.d.mts +0 -15
- package/dist/src/observability/no-tracer.d.mts.map +0 -1
- package/dist/src/observability/no-tracer.mjs +0 -15
- package/dist/src/observability/no-tracer.mjs.map +0 -1
- package/dist/src/observability/redis-trace-stream-adapter.mjs +0 -76
- package/dist/src/observability/redis-trace-stream-adapter.mjs.map +0 -1
- package/dist/src/observability/stream-tracer.mjs +0 -87
- package/dist/src/observability/stream-tracer.mjs.map +0 -1
- package/dist/src/observability/trace-manager.mjs +0 -24
- package/dist/src/observability/trace-manager.mjs.map +0 -1
- package/dist/src/observability/tracer.mjs +0 -87
- package/dist/src/observability/tracer.mjs.map +0 -1
- package/dist/src/observability/types.d.mts +0 -14
- package/dist/src/observability/types.d.mts.map +0 -1
- package/dist/src/pretty-print.mjs +0 -50
- package/dist/src/pretty-print.mjs.map +0 -1
- package/dist/src/printer.d.mts +0 -65
- package/dist/src/printer.d.mts.map +0 -1
- package/dist/src/printer.mjs +0 -147
- package/dist/src/printer.mjs.map +0 -1
- package/dist/src/process-communication/communication-config.mjs +0 -26
- package/dist/src/process-communication/communication-config.mjs.map +0 -1
- package/dist/src/process-communication/process-manager.mjs +0 -67
- package/dist/src/process-communication/process-manager.mjs.map +0 -1
- package/dist/src/queue-manager.d.mts +0 -37
- package/dist/src/queue-manager.d.mts.map +0 -1
- package/dist/src/queue-manager.mjs +0 -209
- package/dist/src/queue-manager.mjs.map +0 -1
- package/dist/src/run-stream-can-access.mjs +0 -59
- package/dist/src/run-stream-can-access.mjs.map +0 -1
- package/dist/src/schema-utils.mjs +0 -30
- package/dist/src/schema-utils.mjs.map +0 -1
- package/dist/src/server.d.mts +0 -40
- package/dist/src/server.d.mts.map +0 -1
- package/dist/src/server.mjs +0 -352
- package/dist/src/server.mjs.map +0 -1
- package/dist/src/socket-server/helpers.mjs +0 -35
- package/dist/src/socket-server/helpers.mjs.map +0 -1
- package/dist/src/socket-server.mjs +0 -127
- package/dist/src/socket-server.mjs.map +0 -1
- package/dist/src/state/create-state-adapter.d.mts +0 -11
- package/dist/src/state/create-state-adapter.d.mts.map +0 -1
- package/dist/src/state/create-state-adapter.mjs +0 -11
- package/dist/src/state/create-state-adapter.mjs.map +0 -1
- package/dist/src/step-handler-rpc-processor.mjs +0 -56
- package/dist/src/step-handler-rpc-processor.mjs.map +0 -1
- package/dist/src/step-handler-rpc-stdin-processor.mjs +0 -71
- package/dist/src/step-handler-rpc-stdin-processor.mjs.map +0 -1
- package/dist/src/step-handlers.d.mts +0 -13
- package/dist/src/step-handlers.d.mts.map +0 -1
- package/dist/src/step-handlers.mjs +0 -93
- package/dist/src/step-handlers.mjs.map +0 -1
- package/dist/src/step-validator.d.mts +0 -15
- package/dist/src/step-validator.d.mts.map +0 -1
- package/dist/src/step-validator.mjs +0 -118
- package/dist/src/step-validator.mjs.map +0 -1
- package/dist/src/steps/emit.step.mjs +0 -20
- package/dist/src/steps/emit.step.mjs.map +0 -1
- package/dist/src/steps/index.mjs +0 -14
- package/dist/src/steps/index.mjs.map +0 -1
- package/dist/src/streams/flows-config-stream.mjs +0 -46
- package/dist/src/streams/flows-config-stream.mjs.map +0 -1
- package/dist/src/streams/flows-stream.mjs +0 -33
- package/dist/src/streams/flows-stream.mjs.map +0 -1
- package/dist/src/streams/redis-logs-stream.d.mts +0 -3
- package/dist/src/streams/redis-logs-stream.mjs +0 -97
- package/dist/src/streams/redis-logs-stream.mjs.map +0 -1
- package/dist/src/streams/stream-factory.d.mts +0 -7
- package/dist/src/streams/stream-factory.d.mts.map +0 -1
- package/dist/src/types/app-config-types.d.mts +0 -48
- package/dist/src/types/app-config-types.d.mts.map +0 -1
- package/dist/src/types/generate-type-from-schema.mjs +0 -30
- package/dist/src/types/generate-type-from-schema.mjs.map +0 -1
- package/dist/src/types/generate-types-from-response.mjs +0 -12
- package/dist/src/types/generate-types-from-response.mjs.map +0 -1
- package/dist/src/types/generate-types.mjs +0 -101
- package/dist/src/types/generate-types.mjs.map +0 -1
- package/dist/src/types/merge-schemas.mjs +0 -102
- package/dist/src/types/merge-schemas.mjs.map +0 -1
- package/dist/src/types/schema.types.d.mts +0 -13
- package/dist/src/types/schema.types.d.mts.map +0 -1
- package/dist/src/types/schema.types.mjs +0 -14
- package/dist/src/types/schema.types.mjs.map +0 -1
- package/dist/src/types-stream.d.mts +0 -46
- package/dist/src/types-stream.d.mts.map +0 -1
- package/dist/src/types.d.mts +0 -194
- package/dist/src/types.d.mts.map +0 -1
- package/dist/src/utils.mjs +0 -13
- package/dist/src/utils.mjs.map +0 -1
- package/dist/src/validate-event-input.mjs +0 -76
- package/dist/src/validate-event-input.mjs.map +0 -1
- package/jest.config.cjs +0 -20
- package/tsdown.config.ts +0 -53
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { StreamAdapter } from "../adapters/interfaces/stream-adapter.interface.mjs";
|
|
2
|
-
import fs from "fs";
|
|
3
|
-
|
|
4
|
-
//#region src/streams/flows-config-stream.ts
|
|
5
|
-
var FlowsConfigStream = class extends StreamAdapter {
|
|
6
|
-
constructor(configPath) {
|
|
7
|
-
super("__motia.flows-config");
|
|
8
|
-
this.configPath = configPath;
|
|
9
|
-
this.config = [];
|
|
10
|
-
}
|
|
11
|
-
getConfig() {
|
|
12
|
-
if (this.config.length === 0) {
|
|
13
|
-
if (fs.existsSync(this.configPath)) {
|
|
14
|
-
this.config = JSON.parse(fs.readFileSync(this.configPath, "utf8") || "[]");
|
|
15
|
-
if (!Array.isArray(this.config)) {
|
|
16
|
-
this.config = [];
|
|
17
|
-
this.setConfig(this.config);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
return this.config;
|
|
22
|
-
}
|
|
23
|
-
setConfig(config) {
|
|
24
|
-
this.config = config;
|
|
25
|
-
fs.writeFileSync(this.configPath, JSON.stringify(config, null, 2), "utf8");
|
|
26
|
-
}
|
|
27
|
-
async get(_, id) {
|
|
28
|
-
return this.getConfig().find((flow) => flow.id === id) || null;
|
|
29
|
-
}
|
|
30
|
-
async delete(_) {
|
|
31
|
-
return null;
|
|
32
|
-
}
|
|
33
|
-
async set(_, id, data) {
|
|
34
|
-
const updatedConfig = this.getConfig().filter((item) => item.id !== id);
|
|
35
|
-
updatedConfig.push(data);
|
|
36
|
-
this.setConfig(updatedConfig);
|
|
37
|
-
return data;
|
|
38
|
-
}
|
|
39
|
-
async getGroup() {
|
|
40
|
-
return this.getConfig();
|
|
41
|
-
}
|
|
42
|
-
};
|
|
43
|
-
|
|
44
|
-
//#endregion
|
|
45
|
-
export { FlowsConfigStream };
|
|
46
|
-
//# sourceMappingURL=flows-config-stream.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"flows-config-stream.mjs","names":["configPath: string"],"sources":["../../../src/streams/flows-config-stream.ts"],"sourcesContent":["import fs from 'fs'\nimport { StreamAdapter } from '../adapters/interfaces/stream-adapter.interface'\nimport type { FlowConfig } from '../types/flows-config-types'\n\nexport class FlowsConfigStream extends StreamAdapter<FlowConfig> {\n private config: FlowConfig[] = []\n\n constructor(private readonly configPath: string) {\n super('__motia.flows-config')\n }\n\n private getConfig(): FlowConfig[] {\n if (this.config.length === 0) {\n if (fs.existsSync(this.configPath)) {\n this.config = JSON.parse(fs.readFileSync(this.configPath, 'utf8') || '[]')\n if (!Array.isArray(this.config)) {\n this.config = []\n this.setConfig(this.config)\n }\n }\n }\n return this.config\n }\n\n private setConfig(config: FlowConfig[]) {\n this.config = config\n fs.writeFileSync(this.configPath, JSON.stringify(config, null, 2), 'utf8')\n }\n\n async get(_: string, id: string) {\n const allFlowsConfig = this.getConfig()\n return allFlowsConfig.find((flow) => flow.id === id) || null\n }\n\n async delete(_: string): Promise<null> {\n return null\n }\n\n async set(_: string, id: string, data: FlowConfig): Promise<FlowConfig> {\n const existingConfig = this.getConfig()\n\n const updatedConfig = existingConfig.filter((item) => item.id !== id)\n updatedConfig.push(data)\n\n this.setConfig(updatedConfig)\n return data\n }\n\n async getGroup(): Promise<FlowConfig[]> {\n return this.getConfig()\n }\n}\n"],"mappings":";;;;AAIA,IAAa,oBAAb,cAAuC,cAA0B;CAG/D,YAAY,AAAiBA,YAAoB;AAC/C,QAAM,uBAAuB;EADF;gBAFE,EAAE;;CAMjC,AAAQ,YAA0B;AAChC,MAAI,KAAK,OAAO,WAAW,GACzB;OAAI,GAAG,WAAW,KAAK,WAAW,EAAE;AAClC,SAAK,SAAS,KAAK,MAAM,GAAG,aAAa,KAAK,YAAY,OAAO,IAAI,KAAK;AAC1E,QAAI,CAAC,MAAM,QAAQ,KAAK,OAAO,EAAE;AAC/B,UAAK,SAAS,EAAE;AAChB,UAAK,UAAU,KAAK,OAAO;;;;AAIjC,SAAO,KAAK;;CAGd,AAAQ,UAAU,QAAsB;AACtC,OAAK,SAAS;AACd,KAAG,cAAc,KAAK,YAAY,KAAK,UAAU,QAAQ,MAAM,EAAE,EAAE,OAAO;;CAG5E,MAAM,IAAI,GAAW,IAAY;AAE/B,SADuB,KAAK,WAAW,CACjB,MAAM,SAAS,KAAK,OAAO,GAAG,IAAI;;CAG1D,MAAM,OAAO,GAA0B;AACrC,SAAO;;CAGT,MAAM,IAAI,GAAW,IAAY,MAAuC;EAGtE,MAAM,gBAFiB,KAAK,WAAW,CAEF,QAAQ,SAAS,KAAK,OAAO,GAAG;AACrE,gBAAc,KAAK,KAAK;AAExB,OAAK,UAAU,cAAc;AAC7B,SAAO;;CAGT,MAAM,WAAkC;AACtC,SAAO,KAAK,WAAW"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { StreamAdapter } from "../adapters/interfaces/stream-adapter.interface.mjs";
|
|
2
|
-
import { PLUGIN_FLOW_ID } from "../motia.mjs";
|
|
3
|
-
import { generateFlow } from "../helper/flows-helper.mjs";
|
|
4
|
-
|
|
5
|
-
//#region src/streams/flows-stream.ts
|
|
6
|
-
var FlowsStream = class extends StreamAdapter {
|
|
7
|
-
constructor(lockedData) {
|
|
8
|
-
super("__motia.flows");
|
|
9
|
-
this.lockedData = lockedData;
|
|
10
|
-
}
|
|
11
|
-
async get(_, id) {
|
|
12
|
-
const flow = this.lockedData.flows[id];
|
|
13
|
-
if (!flow) return null;
|
|
14
|
-
return generateFlow(id, flow.steps);
|
|
15
|
-
}
|
|
16
|
-
async delete(_) {
|
|
17
|
-
return null;
|
|
18
|
-
}
|
|
19
|
-
async set(_, __, data) {
|
|
20
|
-
return data;
|
|
21
|
-
}
|
|
22
|
-
async getGroup() {
|
|
23
|
-
/**
|
|
24
|
-
* Get list should receive a groupId argument but that's irrelevant for this stream
|
|
25
|
-
* since we only have one group of flows.
|
|
26
|
-
*/
|
|
27
|
-
return Object.entries(this.lockedData.flows).map(([id, flow]) => generateFlow(id, flow.steps)).filter((flow) => flow.id !== PLUGIN_FLOW_ID);
|
|
28
|
-
}
|
|
29
|
-
};
|
|
30
|
-
|
|
31
|
-
//#endregion
|
|
32
|
-
export { FlowsStream };
|
|
33
|
-
//# sourceMappingURL=flows-stream.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"flows-stream.mjs","names":["lockedData: LockedData"],"sources":["../../../src/streams/flows-stream.ts"],"sourcesContent":["import { StreamAdapter } from '../adapters/interfaces/stream-adapter.interface'\nimport { generateFlow } from '../helper/flows-helper'\nimport type { LockedData } from '../locked-data'\nimport { PLUGIN_FLOW_ID } from '../motia'\nimport type { FlowResponse } from '../types/flows-types'\n\nexport class FlowsStream extends StreamAdapter<FlowResponse> {\n constructor(private readonly lockedData: LockedData) {\n super('__motia.flows')\n }\n\n async get(_: string, id: string): Promise<FlowResponse | null> {\n const flow = this.lockedData.flows[id]\n\n if (!flow) {\n return null\n }\n\n return generateFlow(id, flow.steps)\n }\n\n async delete(_: string): Promise<FlowResponse | null> {\n return null\n }\n\n async set(_: string, __: string, data: FlowResponse): Promise<FlowResponse> {\n return data\n }\n\n async getGroup(): Promise<FlowResponse[]> {\n /**\n * Get list should receive a groupId argument but that's irrelevant for this stream\n * since we only have one group of flows.\n */\n return Object.entries(this.lockedData.flows)\n .map(([id, flow]) => generateFlow(id, flow.steps))\n .filter((flow) => flow.id !== PLUGIN_FLOW_ID)\n }\n}\n"],"mappings":";;;;;AAMA,IAAa,cAAb,cAAiC,cAA4B;CAC3D,YAAY,AAAiBA,YAAwB;AACnD,QAAM,gBAAgB;EADK;;CAI7B,MAAM,IAAI,GAAW,IAA0C;EAC7D,MAAM,OAAO,KAAK,WAAW,MAAM;AAEnC,MAAI,CAAC,KACH,QAAO;AAGT,SAAO,aAAa,IAAI,KAAK,MAAM;;CAGrC,MAAM,OAAO,GAAyC;AACpD,SAAO;;CAGT,MAAM,IAAI,GAAW,IAAY,MAA2C;AAC1E,SAAO;;CAGT,MAAM,WAAoC;;;;;AAKxC,SAAO,OAAO,QAAQ,KAAK,WAAW,MAAM,CACzC,KAAK,CAAC,IAAI,UAAU,aAAa,IAAI,KAAK,MAAM,CAAC,CACjD,QAAQ,SAAS,KAAK,OAAO,eAAe"}
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
import { StreamAdapter } from "../adapters/interfaces/stream-adapter.interface.mjs";
|
|
2
|
-
import { v4 } from "uuid";
|
|
3
|
-
|
|
4
|
-
//#region src/streams/redis-logs-stream.ts
|
|
5
|
-
const LOG_TTL_SECONDS = 4320 * 60;
|
|
6
|
-
var RedisLogsStream = class extends StreamAdapter {
|
|
7
|
-
constructor(client) {
|
|
8
|
-
super("__motia.logs");
|
|
9
|
-
this.keyPrefix = "motia:logs:";
|
|
10
|
-
this.client = client;
|
|
11
|
-
}
|
|
12
|
-
makeLogKey(groupId, id) {
|
|
13
|
-
return `${this.keyPrefix}${groupId}:${id}`;
|
|
14
|
-
}
|
|
15
|
-
makeChannelKey(channel) {
|
|
16
|
-
return `${this.keyPrefix}events:${channel.groupId}:${channel.id}`;
|
|
17
|
-
}
|
|
18
|
-
makeLogId() {
|
|
19
|
-
return `${Date.now()}-${v4()}`;
|
|
20
|
-
}
|
|
21
|
-
async scanKeys(pattern) {
|
|
22
|
-
const keys = [];
|
|
23
|
-
let cursor = "0";
|
|
24
|
-
do {
|
|
25
|
-
const result = await this.client.scan(cursor.toString(), {
|
|
26
|
-
MATCH: pattern,
|
|
27
|
-
COUNT: 100
|
|
28
|
-
});
|
|
29
|
-
cursor = result.cursor;
|
|
30
|
-
keys.push(...result.keys);
|
|
31
|
-
} while (String(cursor) !== "0");
|
|
32
|
-
return keys;
|
|
33
|
-
}
|
|
34
|
-
async get(groupId, id) {
|
|
35
|
-
const key = this.makeLogKey(groupId, id);
|
|
36
|
-
const value = await this.client.get(key);
|
|
37
|
-
return value ? JSON.parse(value) : null;
|
|
38
|
-
}
|
|
39
|
-
async set(groupId, id, data) {
|
|
40
|
-
const logId = id || this.makeLogId();
|
|
41
|
-
const key = this.makeLogKey(groupId, logId);
|
|
42
|
-
const item = {
|
|
43
|
-
...data,
|
|
44
|
-
id: logId,
|
|
45
|
-
id: logId
|
|
46
|
-
};
|
|
47
|
-
const itemJson = JSON.stringify(item);
|
|
48
|
-
await Promise.all([
|
|
49
|
-
this.client.set(key, itemJson),
|
|
50
|
-
this.client.expire(key, LOG_TTL_SECONDS),
|
|
51
|
-
this.send({
|
|
52
|
-
groupId,
|
|
53
|
-
id: logId
|
|
54
|
-
}, {
|
|
55
|
-
type: "log",
|
|
56
|
-
data: item
|
|
57
|
-
})
|
|
58
|
-
]);
|
|
59
|
-
return item;
|
|
60
|
-
}
|
|
61
|
-
async delete(groupId, id) {
|
|
62
|
-
const key = this.makeLogKey(groupId, id);
|
|
63
|
-
const value = await this.client.get(key);
|
|
64
|
-
if (!value) return null;
|
|
65
|
-
const item = JSON.parse(value);
|
|
66
|
-
await Promise.all([this.client.del(key), this.send({
|
|
67
|
-
groupId,
|
|
68
|
-
id
|
|
69
|
-
}, {
|
|
70
|
-
type: "delete",
|
|
71
|
-
data: item
|
|
72
|
-
})]);
|
|
73
|
-
return item;
|
|
74
|
-
}
|
|
75
|
-
async getGroup(groupId) {
|
|
76
|
-
const pattern = `${this.keyPrefix}${groupId}:*`;
|
|
77
|
-
const keys = await this.scanKeys(pattern);
|
|
78
|
-
if (keys.length === 0) return [];
|
|
79
|
-
const logs = (await this.client.mGet(keys)).filter((v) => v !== null).map((v) => JSON.parse(v));
|
|
80
|
-
const sortDesc = (a, b) => a.time - b.time;
|
|
81
|
-
return logs.sort(sortDesc);
|
|
82
|
-
}
|
|
83
|
-
async send(channel, event) {
|
|
84
|
-
const channelKey = this.makeChannelKey(channel);
|
|
85
|
-
await this.client.publish(channelKey, JSON.stringify(event));
|
|
86
|
-
}
|
|
87
|
-
async clear(groupId) {
|
|
88
|
-
const pattern = `${this.keyPrefix}${groupId}:*`;
|
|
89
|
-
const keys = await this.scanKeys(pattern);
|
|
90
|
-
if (keys.length === 0) return;
|
|
91
|
-
await this.client.del(keys);
|
|
92
|
-
}
|
|
93
|
-
};
|
|
94
|
-
|
|
95
|
-
//#endregion
|
|
96
|
-
export { RedisLogsStream };
|
|
97
|
-
//# sourceMappingURL=redis-logs-stream.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"redis-logs-stream.mjs","names":["uuidv4","keys: string[]","cursor: string | number","item: BaseStreamItem<Log>"],"sources":["../../../src/streams/redis-logs-stream.ts"],"sourcesContent":["import type { RedisClientType } from 'redis'\nimport { v4 as uuidv4 } from 'uuid'\nimport { StreamAdapter } from '../adapters/interfaces/stream-adapter.interface'\nimport type { BaseStreamItem, StateStreamEvent } from '../types-stream'\n\nexport type Log = {\n id: string\n level: string\n time: number\n msg: string\n traceId: string\n flows: string[]\n [key: string]: any\n}\n\nconst LOG_TTL_SECONDS = 3 * 24 * 60 * 60\n\nexport class RedisLogsStream extends StreamAdapter<Log> {\n private client: RedisClientType\n readonly keyPrefix = 'motia:logs:'\n\n constructor(client: RedisClientType) {\n super('__motia.logs')\n this.client = client\n }\n\n private makeLogKey(groupId: string, id: string): string {\n return `${this.keyPrefix}${groupId}:${id}`\n }\n\n private makeChannelKey(channel: { groupId: string; id: string }): string {\n return `${this.keyPrefix}events:${channel.groupId}:${channel.id}`\n }\n\n private makeLogId(): string {\n return `${Date.now()}-${uuidv4()}`\n }\n\n private async scanKeys(pattern: string): Promise<string[]> {\n const keys: string[] = []\n let cursor: string | number = '0'\n\n do {\n const result = await this.client.scan(cursor.toString(), {\n MATCH: pattern,\n COUNT: 100,\n })\n cursor = result.cursor\n keys.push(...result.keys)\n } while (String(cursor) !== '0')\n\n return keys\n }\n\n async get(groupId: string, id: string): Promise<BaseStreamItem<Log> | null> {\n const key = this.makeLogKey(groupId, id)\n const value = await this.client.get(key)\n return value ? JSON.parse(value) : null\n }\n\n async set(groupId: string, id: string, data: Log): Promise<BaseStreamItem<Log>> {\n const logId = id || this.makeLogId()\n const key = this.makeLogKey(groupId, logId)\n const logData: Log = { ...data, id: logId }\n const item: BaseStreamItem<Log> = { ...logData, id: logId }\n const itemJson = JSON.stringify(item)\n\n await Promise.all([\n this.client.set(key, itemJson),\n this.client.expire(key, LOG_TTL_SECONDS),\n this.send({ groupId, id: logId }, { type: 'log', data: item }),\n ])\n\n return item\n }\n\n async delete(groupId: string, id: string): Promise<BaseStreamItem<Log> | null> {\n const key = this.makeLogKey(groupId, id)\n const value = await this.client.get(key)\n\n if (!value) return null\n\n const item = JSON.parse(value) as BaseStreamItem<Log>\n\n await Promise.all([this.client.del(key), this.send({ groupId, id }, { type: 'delete', data: item })])\n\n return item\n }\n\n async getGroup(groupId: string): Promise<BaseStreamItem<Log>[]> {\n const pattern = `${this.keyPrefix}${groupId}:*`\n const keys = await this.scanKeys(pattern)\n\n if (keys.length === 0) return []\n\n const values = await this.client.mGet(keys)\n const logs = values.filter((v): v is string => v !== null).map((v) => JSON.parse(v) as BaseStreamItem<Log>)\n\n const sortDesc = (a: BaseStreamItem<Log>, b: BaseStreamItem<Log>) => a.time - b.time\n return logs.sort(sortDesc)\n }\n\n async send<T>(channel: { groupId: string; id: string }, event: StateStreamEvent<T>): Promise<void> {\n const channelKey = this.makeChannelKey(channel)\n await this.client.publish(channelKey, JSON.stringify(event))\n }\n\n async clear(groupId: string): Promise<void> {\n const pattern = `${this.keyPrefix}${groupId}:*`\n const keys = await this.scanKeys(pattern)\n\n if (keys.length === 0) return\n\n await this.client.del(keys)\n }\n}\n"],"mappings":";;;;AAeA,MAAM,kBAAkB,OAAc;AAEtC,IAAa,kBAAb,cAAqC,cAAmB;CAItD,YAAY,QAAyB;AACnC,QAAM,eAAe;mBAHF;AAInB,OAAK,SAAS;;CAGhB,AAAQ,WAAW,SAAiB,IAAoB;AACtD,SAAO,GAAG,KAAK,YAAY,QAAQ,GAAG;;CAGxC,AAAQ,eAAe,SAAkD;AACvE,SAAO,GAAG,KAAK,UAAU,SAAS,QAAQ,QAAQ,GAAG,QAAQ;;CAG/D,AAAQ,YAAoB;AAC1B,SAAO,GAAG,KAAK,KAAK,CAAC,GAAGA,IAAQ;;CAGlC,MAAc,SAAS,SAAoC;EACzD,MAAMC,OAAiB,EAAE;EACzB,IAAIC,SAA0B;AAE9B,KAAG;GACD,MAAM,SAAS,MAAM,KAAK,OAAO,KAAK,OAAO,UAAU,EAAE;IACvD,OAAO;IACP,OAAO;IACR,CAAC;AACF,YAAS,OAAO;AAChB,QAAK,KAAK,GAAG,OAAO,KAAK;WAClB,OAAO,OAAO,KAAK;AAE5B,SAAO;;CAGT,MAAM,IAAI,SAAiB,IAAiD;EAC1E,MAAM,MAAM,KAAK,WAAW,SAAS,GAAG;EACxC,MAAM,QAAQ,MAAM,KAAK,OAAO,IAAI,IAAI;AACxC,SAAO,QAAQ,KAAK,MAAM,MAAM,GAAG;;CAGrC,MAAM,IAAI,SAAiB,IAAY,MAAyC;EAC9E,MAAM,QAAQ,MAAM,KAAK,WAAW;EACpC,MAAM,MAAM,KAAK,WAAW,SAAS,MAAM;EAE3C,MAAMC,OAA4B;GADX,GAAG;GAAM,IAAI;GACY,IAAI;GAAO;EAC3D,MAAM,WAAW,KAAK,UAAU,KAAK;AAErC,QAAM,QAAQ,IAAI;GAChB,KAAK,OAAO,IAAI,KAAK,SAAS;GAC9B,KAAK,OAAO,OAAO,KAAK,gBAAgB;GACxC,KAAK,KAAK;IAAE;IAAS,IAAI;IAAO,EAAE;IAAE,MAAM;IAAO,MAAM;IAAM,CAAC;GAC/D,CAAC;AAEF,SAAO;;CAGT,MAAM,OAAO,SAAiB,IAAiD;EAC7E,MAAM,MAAM,KAAK,WAAW,SAAS,GAAG;EACxC,MAAM,QAAQ,MAAM,KAAK,OAAO,IAAI,IAAI;AAExC,MAAI,CAAC,MAAO,QAAO;EAEnB,MAAM,OAAO,KAAK,MAAM,MAAM;AAE9B,QAAM,QAAQ,IAAI,CAAC,KAAK,OAAO,IAAI,IAAI,EAAE,KAAK,KAAK;GAAE;GAAS;GAAI,EAAE;GAAE,MAAM;GAAU,MAAM;GAAM,CAAC,CAAC,CAAC;AAErG,SAAO;;CAGT,MAAM,SAAS,SAAiD;EAC9D,MAAM,UAAU,GAAG,KAAK,YAAY,QAAQ;EAC5C,MAAM,OAAO,MAAM,KAAK,SAAS,QAAQ;AAEzC,MAAI,KAAK,WAAW,EAAG,QAAO,EAAE;EAGhC,MAAM,QADS,MAAM,KAAK,OAAO,KAAK,KAAK,EACvB,QAAQ,MAAmB,MAAM,KAAK,CAAC,KAAK,MAAM,KAAK,MAAM,EAAE,CAAwB;EAE3G,MAAM,YAAY,GAAwB,MAA2B,EAAE,OAAO,EAAE;AAChF,SAAO,KAAK,KAAK,SAAS;;CAG5B,MAAM,KAAQ,SAA0C,OAA2C;EACjG,MAAM,aAAa,KAAK,eAAe,QAAQ;AAC/C,QAAM,KAAK,OAAO,QAAQ,YAAY,KAAK,UAAU,MAAM,CAAC;;CAG9D,MAAM,MAAM,SAAgC;EAC1C,MAAM,UAAU,GAAG,KAAK,YAAY,QAAQ;EAC5C,MAAM,OAAO,MAAM,KAAK,SAAS,QAAQ;AAEzC,MAAI,KAAK,WAAW,EAAG;AAEvB,QAAM,KAAK,OAAO,IAAI,KAAK"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stream-factory.d.mts","names":[],"sources":["../../../src/streams/stream-factory.ts"],"sourcesContent":[],"mappings":";;;KAEY,6BAA6B,YAAY"}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { CronAdapter } from "../adapters/interfaces/cron-adapter.interface.mjs";
|
|
2
|
-
import { JsonSchema } from "./schema.types.mjs";
|
|
3
|
-
import { EventAdapter } from "../adapters/interfaces/event-adapter.interface.mjs";
|
|
4
|
-
import { StateAdapter } from "../adapters/interfaces/state-adapter.interface.mjs";
|
|
5
|
-
import { StreamAdapterManager } from "../adapters/interfaces/stream-adapter-manager.interface.mjs";
|
|
6
|
-
import { MotiaPluginContext } from "../motia.mjs";
|
|
7
|
-
import { z } from "zod";
|
|
8
|
-
import { Express } from "express";
|
|
9
|
-
|
|
10
|
-
//#region src/types/app-config-types.d.ts
|
|
11
|
-
type WorkbenchPlugin = {
|
|
12
|
-
packageName: string;
|
|
13
|
-
componentName?: string;
|
|
14
|
-
label?: string;
|
|
15
|
-
labelIcon?: string;
|
|
16
|
-
position?: 'bottom' | 'top';
|
|
17
|
-
cssImports?: string[];
|
|
18
|
-
props?: Record<string, any>;
|
|
19
|
-
};
|
|
20
|
-
type MotiaPlugin = {
|
|
21
|
-
workbench: WorkbenchPlugin[];
|
|
22
|
-
dirname?: string;
|
|
23
|
-
steps?: string[];
|
|
24
|
-
};
|
|
25
|
-
type MotiaPluginBuilder = (motia: MotiaPluginContext) => MotiaPlugin;
|
|
26
|
-
type AdapterConfig = {
|
|
27
|
-
state?: StateAdapter;
|
|
28
|
-
streams?: StreamAdapterManager;
|
|
29
|
-
events?: EventAdapter;
|
|
30
|
-
cron?: CronAdapter;
|
|
31
|
-
};
|
|
32
|
-
type StreamAuthRequest = {
|
|
33
|
-
headers: Record<string, string | string[] | undefined>;
|
|
34
|
-
url?: string;
|
|
35
|
-
};
|
|
36
|
-
type StreamAuthConfig<TSchema extends z.ZodTypeAny = z.ZodTypeAny> = {
|
|
37
|
-
contextSchema: JsonSchema;
|
|
38
|
-
authenticate: (request: StreamAuthRequest) => Promise<z.infer<TSchema> | null> | (z.infer<TSchema> | null);
|
|
39
|
-
};
|
|
40
|
-
type Config = {
|
|
41
|
-
app?: (app: Express) => void;
|
|
42
|
-
plugins?: MotiaPluginBuilder[];
|
|
43
|
-
adapters?: AdapterConfig;
|
|
44
|
-
streamAuth?: StreamAuthConfig;
|
|
45
|
-
};
|
|
46
|
-
//#endregion
|
|
47
|
-
export { AdapterConfig, Config, MotiaPlugin, MotiaPluginBuilder, StreamAuthConfig, StreamAuthRequest, WorkbenchPlugin };
|
|
48
|
-
//# sourceMappingURL=app-config-types.d.mts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"app-config-types.d.mts","names":[],"sources":["../../../src/types/app-config-types.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;KASY,eAAA;;EAAA,aAAA,CAAA,EAAA,MAAe;EAWf,KAAA,CAAA,EAAA,MAAW;EAMX,SAAA,CAAA,EAAA,MAAA;EAEA,QAAA,CAAA,EAAA,QAAa,GAAA,KAAA;EACf,UAAA,CAAA,EAAA,MAAA,EAAA;EACE,KAAA,CAAA,EAbF,MAaE,CAAA,MAAA,EAAA,GAAA,CAAA;CACD;AACF,KAZG,WAAA,GAYH;EAAW,SAAA,EAXP,eAWO,EAAA;EAGR,OAAA,CAAA,EAAA,MAAA;EAKA,KAAA,CAAA,EAAA,MAAA,EAAA;CAAiC;AAAiB,KAdlD,kBAAA,GAckD,CAAA,KAAA,EAdrB,kBAcqB,EAAA,GAdE,WAcF;AAC7C,KAbL,aAAA,GAaK;EACS,KAAA,CAAA,EAbhB,YAagB;EAAsC,OAAA,CAAA,EAZpD,oBAYoD;EAAN,MAAA,CAAA,EAX/C,YAW+C;EAAV,IAAA,CAAA,EAVvC,WAUuC;CAA4C;AAAN,KAP1E,iBAAA,GAO0E;EAAK,OAAA,EANhF,MAMgF,CAAA,MAAA,EAAA,MAAA,GAAA,MAAA,EAAA,GAAA,SAAA,CAAA;EAG/E,GAAA,CAAA,EAAA,MAAM;CACJ;AACF,KAPA,gBAOA,CAAA,gBAPiC,CAAA,CAAE,UAOnC,GAPgD,CAAA,CAAE,UAOlD,CAAA,GAAA;EACC,aAAA,EAPI,UAOJ;EACE,YAAA,EAAA,CAAA,OAAA,EAPW,iBAOX,EAAA,GAPiC,OAOjC,CAPyC,CAAA,CAAE,KAO3C,CAPiD,OAOjD,CAAA,GAAA,IAAA,CAAA,GAAA,CAPqE,CAAA,CAAE,KAOvE,CAP6E,OAO7E,CAAA,GAAA,IAAA,CAAA;CAAgB;KAJnB,MAAA;cACE;YACF;aACC;eACE"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { isAnyOf } from "./schema.types.mjs";
|
|
2
|
-
|
|
3
|
-
//#region src/types/generate-type-from-schema.ts
|
|
4
|
-
const generateTypeFromSchema = (schema) => {
|
|
5
|
-
if (!schema) return "unknown";
|
|
6
|
-
if (isAnyOf(schema)) return schema.anyOf.map(generateTypeFromSchema).join(" | ");
|
|
7
|
-
if (schema.type === "array") return `Array<${schema.items ? generateTypeFromSchema(schema.items) : "unknown"}>`;
|
|
8
|
-
if (schema.type === "object" && schema.properties) {
|
|
9
|
-
const props = Object.entries(schema.properties).map(([key, prop]) => {
|
|
10
|
-
const isRequired = schema.required?.includes(key);
|
|
11
|
-
const propType = generateTypeFromSchema(prop);
|
|
12
|
-
return `${key}${isRequired ? "" : "?"}: ${propType}`;
|
|
13
|
-
});
|
|
14
|
-
return props.length > 0 ? `{ ${props.join("; ")} }` : "{}";
|
|
15
|
-
} else if (schema.type === "object" && schema.additionalProperties) return `Record<string, ${generateTypeFromSchema(schema.additionalProperties)}>`;
|
|
16
|
-
if (schema.type === "string") {
|
|
17
|
-
if (schema.format === "binary") return "Buffer";
|
|
18
|
-
return schema.enum && schema.enum.length > 0 ? schema.enum.map((value) => `'${value}'`).join(" | ") : "string";
|
|
19
|
-
}
|
|
20
|
-
if (typeof schema === "object" && schema !== null && "not" in schema) return "undefined";
|
|
21
|
-
switch (schema.type) {
|
|
22
|
-
case "number": return "number";
|
|
23
|
-
case "boolean": return "boolean";
|
|
24
|
-
default: return "unknown";
|
|
25
|
-
}
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
//#endregion
|
|
29
|
-
export { generateTypeFromSchema };
|
|
30
|
-
//# sourceMappingURL=generate-type-from-schema.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"generate-type-from-schema.mjs","names":[],"sources":["../../../src/types/generate-type-from-schema.ts"],"sourcesContent":["import type { JSONSchema } from 'zod/v4/core'\nimport { isAnyOf } from './schema.types'\n\nexport const generateTypeFromSchema = (schema: JSONSchema.BaseSchema): string => {\n if (!schema) {\n return 'unknown'\n }\n\n if (isAnyOf(schema)) {\n const types = schema.anyOf.map(generateTypeFromSchema)\n return types.join(' | ')\n }\n\n if (schema.type === 'array') {\n const itemType = schema.items ? generateTypeFromSchema(schema.items as JSONSchema.ArraySchema) : 'unknown'\n return `Array<${itemType}>`\n }\n\n if (schema.type === 'object' && schema.properties) {\n const props = Object.entries(schema.properties).map(([key, prop]) => {\n const isRequired = schema.required?.includes(key)\n const propType = generateTypeFromSchema(prop as JSONSchema.BaseSchema)\n return `${key}${isRequired ? '' : '?'}: ${propType}`\n })\n return props.length > 0 ? `{ ${props.join('; ')} }` : '{}'\n } else if (schema.type === 'object' && schema.additionalProperties) {\n const propType = generateTypeFromSchema(schema.additionalProperties as JSONSchema.BaseSchema)\n return `Record<string, ${propType}>`\n }\n\n if (schema.type === 'string') {\n if (schema.format === 'binary') {\n return 'Buffer'\n }\n return schema.enum && schema.enum.length > 0 // must have at least one enum value\n ? schema.enum.map((value) => `'${value}'`).join(' | ')\n : 'string'\n }\n\n if (typeof schema === 'object' && schema !== null && 'not' in schema) {\n return 'undefined'\n }\n\n switch (schema.type) {\n case 'number':\n return 'number'\n case 'boolean':\n return 'boolean'\n default:\n return 'unknown'\n }\n}\n"],"mappings":";;;AAGA,MAAa,0BAA0B,WAA0C;AAC/E,KAAI,CAAC,OACH,QAAO;AAGT,KAAI,QAAQ,OAAO,CAEjB,QADc,OAAO,MAAM,IAAI,uBAAuB,CACzC,KAAK,MAAM;AAG1B,KAAI,OAAO,SAAS,QAElB,QAAO,SADU,OAAO,QAAQ,uBAAuB,OAAO,MAAgC,GAAG,UACxE;AAG3B,KAAI,OAAO,SAAS,YAAY,OAAO,YAAY;EACjD,MAAM,QAAQ,OAAO,QAAQ,OAAO,WAAW,CAAC,KAAK,CAAC,KAAK,UAAU;GACnE,MAAM,aAAa,OAAO,UAAU,SAAS,IAAI;GACjD,MAAM,WAAW,uBAAuB,KAA8B;AACtE,UAAO,GAAG,MAAM,aAAa,KAAK,IAAI,IAAI;IAC1C;AACF,SAAO,MAAM,SAAS,IAAI,KAAK,MAAM,KAAK,KAAK,CAAC,MAAM;YAC7C,OAAO,SAAS,YAAY,OAAO,qBAE5C,QAAO,kBADU,uBAAuB,OAAO,qBAA8C,CAC3D;AAGpC,KAAI,OAAO,SAAS,UAAU;AAC5B,MAAI,OAAO,WAAW,SACpB,QAAO;AAET,SAAO,OAAO,QAAQ,OAAO,KAAK,SAAS,IACvC,OAAO,KAAK,KAAK,UAAU,IAAI,MAAM,GAAG,CAAC,KAAK,MAAM,GACpD;;AAGN,KAAI,OAAO,WAAW,YAAY,WAAW,QAAQ,SAAS,OAC5D,QAAO;AAGT,SAAQ,OAAO,MAAf;EACE,KAAK,SACH,QAAO;EACT,KAAK,UACH,QAAO;EACT,QACE,QAAO"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { generateTypeFromSchema } from "./generate-type-from-schema.mjs";
|
|
2
|
-
|
|
3
|
-
//#region src/types/generate-types-from-response.ts
|
|
4
|
-
const generateTypesFromResponse = (record) => {
|
|
5
|
-
return Object.entries(record).map(([status, schema]) => {
|
|
6
|
-
return `ApiResponse<${status}, ${generateTypeFromSchema(schema)}>`;
|
|
7
|
-
}).join(" | ");
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
//#endregion
|
|
11
|
-
export { generateTypesFromResponse };
|
|
12
|
-
//# sourceMappingURL=generate-types-from-response.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"generate-types-from-response.mjs","names":[],"sources":["../../../src/types/generate-types-from-response.ts"],"sourcesContent":["import { generateTypeFromSchema } from './generate-type-from-schema'\nimport type { JsonSchema } from './schema.types'\n\nexport const generateTypesFromResponse = (record: Record<number, JsonSchema>): string => {\n return Object.entries(record)\n .map(([status, schema]) => {\n const schemaType = generateTypeFromSchema(schema as JsonSchema)\n return `ApiResponse<${status}, ${schemaType}>`\n })\n .join(' | ')\n}\n"],"mappings":";;;AAGA,MAAa,6BAA6B,WAA+C;AACvF,QAAO,OAAO,QAAQ,OAAO,CAC1B,KAAK,CAAC,QAAQ,YAAY;AAEzB,SAAO,eAAe,OAAO,IADV,uBAAuB,OAAqB,CACnB;GAC5C,CACD,KAAK,MAAM"}
|
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
import { isApiStep, isCronStep, isEventStep } from "../guards.mjs";
|
|
2
|
-
import { generateTypeFromSchema } from "./generate-type-from-schema.mjs";
|
|
3
|
-
import { schemaToJsonSchema } from "../schema-utils.mjs";
|
|
4
|
-
import { generateTypesFromResponse } from "./generate-types-from-response.mjs";
|
|
5
|
-
import { mergeSchemas } from "./merge-schemas.mjs";
|
|
6
|
-
|
|
7
|
-
//#region src/types/generate-types.ts
|
|
8
|
-
const generateTypesString = (handlers, streams, streamAuthContextType) => {
|
|
9
|
-
return `/**
|
|
10
|
-
* Automatically generated types for motia
|
|
11
|
-
* Do NOT edit this file manually.
|
|
12
|
-
*
|
|
13
|
-
* Consider adding this file to .prettierignore and eslint ignore.
|
|
14
|
-
*/
|
|
15
|
-
import { EventHandler, ApiRouteHandler, ApiResponse, MotiaStream, CronHandler } from 'motia'
|
|
16
|
-
|
|
17
|
-
declare module 'motia' {
|
|
18
|
-
interface FlowContextStateStreams {
|
|
19
|
-
${Object.entries(streams).map(([key, value]) => `'${key}': MotiaStream<${value}>`).join("\n ").trim()}
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
interface Handlers {
|
|
23
|
-
${Object.entries(handlers).map(([key, { type, generics }]) => `'${key}': ${type}<${generics.join(", ")}>`).join("\n ").trim()}
|
|
24
|
-
}
|
|
25
|
-
${streamAuthContextType ? `interface StreamAuthContext ${streamAuthContextType}` : ""}
|
|
26
|
-
}`;
|
|
27
|
-
};
|
|
28
|
-
const generateTypesFromSteps = (steps, printer) => {
|
|
29
|
-
const handlers = {};
|
|
30
|
-
const topics = {};
|
|
31
|
-
const topicsSchemas = {};
|
|
32
|
-
const topicsSteps = {};
|
|
33
|
-
const topicIsFifo = {};
|
|
34
|
-
for (const step of steps) if (isEventStep(step)) {
|
|
35
|
-
if (!step.config.input) {
|
|
36
|
-
for (const topic of step.config.subscribes) if (!topics[topic]) topics[topic] = "never";
|
|
37
|
-
continue;
|
|
38
|
-
}
|
|
39
|
-
for (const topic of step.config.subscribes) {
|
|
40
|
-
const existingSchema = topicsSchemas[topic];
|
|
41
|
-
topicsSteps[topic] = topicsSteps[topic] ?? [];
|
|
42
|
-
topicsSteps[topic].push(step);
|
|
43
|
-
if (step.config.infrastructure?.queue?.type === "fifo") topicIsFifo[topic] = true;
|
|
44
|
-
try {
|
|
45
|
-
const input = step.config.input;
|
|
46
|
-
const schema = existingSchema ? mergeSchemas(existingSchema, input) : schemaToJsonSchema(input) ?? input;
|
|
47
|
-
topics[topic] = generateTypeFromSchema(schema);
|
|
48
|
-
topicsSchemas[topic] = schema;
|
|
49
|
-
} catch (error) {
|
|
50
|
-
printer.printInvalidSchema(topic, topicsSteps[topic]);
|
|
51
|
-
topics[topic] = "never";
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
const generateEmitData = (emit, step) => {
|
|
56
|
-
const emits = emit.reduce((acc, emit$1) => {
|
|
57
|
-
const topic = typeof emit$1 === "string" ? emit$1 : emit$1.topic;
|
|
58
|
-
const topicType = topics[topic];
|
|
59
|
-
if (topicType) if (topicIsFifo[topic]) acc.push(`{ topic: '${topic.replace(/'/g, "\\'")}'; data: ${topicType}; messageGroupId: string }`);
|
|
60
|
-
else acc.push(`{ topic: '${topic.replace(/'/g, "\\'")}'; data: ${topicType} }`);
|
|
61
|
-
else printer.printInvalidEmitConfiguration(step, topic);
|
|
62
|
-
return acc;
|
|
63
|
-
}, []).join(" | ");
|
|
64
|
-
return emits.length === 0 ? "never" : emits;
|
|
65
|
-
};
|
|
66
|
-
for (const step of steps) {
|
|
67
|
-
const emits = "emits" in step.config ? generateEmitData(step.config.emits, step) : "never";
|
|
68
|
-
if (isEventStep(step)) {
|
|
69
|
-
const input = step.config.input ? generateTypeFromSchema(step.config.input) : "never";
|
|
70
|
-
handlers[step.config.name] = {
|
|
71
|
-
type: "EventHandler",
|
|
72
|
-
generics: [input, emits]
|
|
73
|
-
};
|
|
74
|
-
} else if (isApiStep(step)) {
|
|
75
|
-
const input = step.config.bodySchema ? generateTypeFromSchema(step.config.bodySchema) : "Record<string, unknown>";
|
|
76
|
-
const result = step.config.responseSchema ? generateTypesFromResponse(step.config.responseSchema) : "unknown";
|
|
77
|
-
handlers[step.config.name] = {
|
|
78
|
-
type: "ApiRouteHandler",
|
|
79
|
-
generics: [
|
|
80
|
-
input,
|
|
81
|
-
result,
|
|
82
|
-
emits
|
|
83
|
-
]
|
|
84
|
-
};
|
|
85
|
-
} else if (isCronStep(step)) handlers[step.config.name] = {
|
|
86
|
-
type: "CronHandler",
|
|
87
|
-
generics: [emits]
|
|
88
|
-
};
|
|
89
|
-
}
|
|
90
|
-
return handlers;
|
|
91
|
-
};
|
|
92
|
-
const generateTypesFromStreams = (streams) => {
|
|
93
|
-
return Object.entries(streams).reduce((acc, [key, stream]) => {
|
|
94
|
-
if (!stream.hidden) acc[key] = generateTypeFromSchema(stream.config.schema);
|
|
95
|
-
return acc;
|
|
96
|
-
}, {});
|
|
97
|
-
};
|
|
98
|
-
|
|
99
|
-
//#endregion
|
|
100
|
-
export { generateTypesFromSteps, generateTypesFromStreams, generateTypesString };
|
|
101
|
-
//# sourceMappingURL=generate-types.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"generate-types.mjs","names":["handlers: HandlersMap","topics: Record<string, string>","topicsSchemas: Record<string, JsonSchema>","topicsSteps: Record<string, Step[]>","topicIsFifo: Record<string, boolean>","emit"],"sources":["../../../src/types/generate-types.ts"],"sourcesContent":["import { isApiStep, isCronStep, isEventStep } from '../guards'\nimport type { Printer } from '../printer'\nimport { schemaToJsonSchema } from '../schema-utils'\nimport type { Emit, Step } from '../types'\nimport type { Stream } from '../types-stream'\nimport { generateTypeFromSchema } from './generate-type-from-schema'\nimport { generateTypesFromResponse } from './generate-types-from-response'\nimport { mergeSchemas } from './merge-schemas'\nimport type { JsonSchema } from './schema.types'\n\ntype HandlersMap = Record<string, { type: string; generics: string[] }>\ntype StreamsMap = Record<string, string>\n\nexport const generateTypesString = (\n handlers: HandlersMap,\n streams: StreamsMap,\n streamAuthContextType?: string,\n): string => {\n return `/**\n * Automatically generated types for motia\n * Do NOT edit this file manually.\n * \n * Consider adding this file to .prettierignore and eslint ignore.\n */\nimport { EventHandler, ApiRouteHandler, ApiResponse, MotiaStream, CronHandler } from 'motia'\n\ndeclare module 'motia' {\n interface FlowContextStateStreams {\n ${Object.entries(streams)\n .map(([key, value]) => `'${key}': MotiaStream<${value}>`)\n .join('\\n ')\n .trim()}\n }\n\n interface Handlers {\n ${Object.entries(handlers)\n .map(([key, { type, generics }]) => `'${key}': ${type}<${generics.join(', ')}>`)\n .join('\\n ')\n .trim()}\n }\n ${streamAuthContextType ? `interface StreamAuthContext ${streamAuthContextType}` : ''}\n}`\n}\n\nexport const generateTypesFromSteps = (steps: Step[], printer: Printer): HandlersMap => {\n const handlers: HandlersMap = {}\n const topics: Record<string, string> = {}\n const topicsSchemas: Record<string, JsonSchema> = {}\n const topicsSteps: Record<string, Step[]> = {}\n const topicIsFifo: Record<string, boolean> = {}\n\n for (const step of steps) {\n if (isEventStep(step)) {\n if (!step.config.input) {\n for (const topic of step.config.subscribes) {\n if (!topics[topic]) {\n topics[topic] = 'never'\n }\n }\n continue\n }\n\n for (const topic of step.config.subscribes) {\n const existingSchema = topicsSchemas[topic]\n\n topicsSteps[topic] = topicsSteps[topic] ?? []\n topicsSteps[topic].push(step)\n\n const queueType = step.config.infrastructure?.queue?.type\n if (queueType === 'fifo') {\n topicIsFifo[topic] = true\n }\n\n try {\n const input = step.config.input\n const schema = existingSchema\n ? mergeSchemas(existingSchema, input)\n : (schemaToJsonSchema(input) ?? (input as JsonSchema))\n topics[topic] = generateTypeFromSchema(schema)\n topicsSchemas[topic] = schema\n } catch (error) {\n printer.printInvalidSchema(topic, topicsSteps[topic])\n topics[topic] = 'never'\n }\n }\n }\n }\n\n const generateEmitData = (emit: Emit[], step: Step): string => {\n const emits = emit\n .reduce((acc, emit) => {\n const topic = typeof emit === 'string' ? emit : emit.topic\n const topicType = topics[topic]\n\n if (topicType) {\n const isFifo = topicIsFifo[topic]\n if (isFifo) {\n acc.push(`{ topic: '${topic.replace(/'/g, \"\\\\'\")}'; data: ${topicType}; messageGroupId: string }`)\n } else {\n acc.push(`{ topic: '${topic.replace(/'/g, \"\\\\'\")}'; data: ${topicType} }`)\n }\n } else {\n printer.printInvalidEmitConfiguration(step, topic)\n }\n\n return acc\n }, [] as string[])\n .join(' | ')\n\n return emits.length === 0 ? 'never' : emits\n }\n\n for (const step of steps) {\n const emits = 'emits' in step.config ? generateEmitData(step.config.emits, step) : 'never'\n\n if (isEventStep(step)) {\n const input = step.config.input ? generateTypeFromSchema(step.config.input as never as JsonSchema) : 'never'\n handlers[step.config.name] = { type: 'EventHandler', generics: [input, emits] }\n } else if (isApiStep(step)) {\n const input = step.config.bodySchema\n ? generateTypeFromSchema(step.config.bodySchema as never as JsonSchema)\n : 'Record<string, unknown>'\n const result = step.config.responseSchema\n ? generateTypesFromResponse(step.config.responseSchema as never as Record<number, JsonSchema>)\n : 'unknown'\n handlers[step.config.name] = { type: 'ApiRouteHandler', generics: [input, result, emits] }\n } else if (isCronStep(step)) {\n handlers[step.config.name] = { type: 'CronHandler', generics: [emits] }\n }\n }\n\n return handlers\n}\n\nexport const generateTypesFromStreams = (streams: Record<string, Stream>): StreamsMap => {\n return Object.entries(streams).reduce((acc, [key, stream]) => {\n if (!stream.hidden) {\n acc[key] = generateTypeFromSchema(stream.config.schema as unknown as JsonSchema)\n }\n return acc\n }, {} as StreamsMap)\n}\n"],"mappings":"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"}
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
import { JsonSchemaError, isAnyOf } from "./schema.types.mjs";
|
|
2
|
-
import { isZodSchema, schemaToJsonSchema } from "../schema-utils.mjs";
|
|
3
|
-
import * as z$1 from "zod";
|
|
4
|
-
|
|
5
|
-
//#region src/types/merge-schemas.ts
|
|
6
|
-
const isJsonSchema = (value) => {
|
|
7
|
-
return typeof value === "object" && value !== null && !Array.isArray(value) && typeof value !== "boolean";
|
|
8
|
-
};
|
|
9
|
-
const isCompatible = (schema, otherSchema) => {
|
|
10
|
-
if (isAnyOf(schema)) return schema.anyOf.every((item) => isCompatible(item, otherSchema));
|
|
11
|
-
else if (isAnyOf(otherSchema)) return otherSchema.anyOf.every((item) => isCompatible(schema, item));
|
|
12
|
-
if (schema.type !== otherSchema.type) return false;
|
|
13
|
-
if (schema.type === "array" && otherSchema.type === "array") {
|
|
14
|
-
if (!schema.items || !otherSchema.items) return schema.items === otherSchema.items;
|
|
15
|
-
if (Array.isArray(schema.items) || Array.isArray(otherSchema.items)) return false;
|
|
16
|
-
if (isJsonSchema(schema.items) && isJsonSchema(otherSchema.items)) return isCompatible(schema.items, otherSchema.items);
|
|
17
|
-
return schema.items === otherSchema.items;
|
|
18
|
-
}
|
|
19
|
-
if (schema.type === "object" && otherSchema.type === "object") {
|
|
20
|
-
const schemaProps = schema.properties;
|
|
21
|
-
const otherSchemaProps = otherSchema.properties;
|
|
22
|
-
if (!schemaProps || !otherSchemaProps) return schemaProps === otherSchemaProps;
|
|
23
|
-
const keysFromSchema = Object.keys(schemaProps);
|
|
24
|
-
const keysFromOtherSchema = Object.keys(otherSchemaProps);
|
|
25
|
-
const commonKeys = keysFromSchema.filter((key) => keysFromOtherSchema.includes(key));
|
|
26
|
-
if (schema.required?.some((key) => !keysFromOtherSchema.includes(key))) return false;
|
|
27
|
-
else if (otherSchema.required?.some((key) => !keysFromSchema.includes(key))) return false;
|
|
28
|
-
if (commonKeys.length > 0) return commonKeys.every((key) => {
|
|
29
|
-
const prop1 = schemaProps[key];
|
|
30
|
-
const prop2 = otherSchemaProps[key];
|
|
31
|
-
if (isJsonSchema(prop1) && isJsonSchema(prop2)) return isCompatible(prop1, prop2);
|
|
32
|
-
return prop1 === prop2;
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
return true;
|
|
36
|
-
};
|
|
37
|
-
const mergeZodSchemas = (schema, otherSchema) => {
|
|
38
|
-
try {
|
|
39
|
-
return z$1.intersection(schema, otherSchema);
|
|
40
|
-
} catch (error) {
|
|
41
|
-
throw new JsonSchemaError(`Cannot merge Zod schemas: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
42
|
-
}
|
|
43
|
-
};
|
|
44
|
-
const mergeSchemas = (schema, otherSchema) => {
|
|
45
|
-
if (isZodSchema(schema) && isZodSchema(otherSchema)) {
|
|
46
|
-
const jsonSchema = schemaToJsonSchema(mergeZodSchemas(schema, otherSchema));
|
|
47
|
-
if (!jsonSchema) throw new JsonSchemaError("Failed to convert merged Zod schema to JSON Schema");
|
|
48
|
-
return jsonSchema;
|
|
49
|
-
}
|
|
50
|
-
const schemaJsonResult = schemaToJsonSchema(schema);
|
|
51
|
-
const otherSchemaJsonResult = schemaToJsonSchema(otherSchema);
|
|
52
|
-
if (!schemaJsonResult || !otherSchemaJsonResult) throw new JsonSchemaError("Cannot merge schemas: failed to convert to JSON Schema");
|
|
53
|
-
const schemaJson = schemaJsonResult;
|
|
54
|
-
const otherSchemaJson = otherSchemaJsonResult;
|
|
55
|
-
if (!isCompatible(schemaJson, otherSchemaJson)) throw new JsonSchemaError("Cannot merge schemas of different types");
|
|
56
|
-
if (isAnyOf(schemaJson)) return { anyOf: schemaJson.anyOf.map((item) => mergeSchemas(item, otherSchemaJson)) };
|
|
57
|
-
else if (isAnyOf(otherSchemaJson)) return { anyOf: otherSchemaJson.anyOf.map((item) => mergeSchemas(schemaJson, item)) };
|
|
58
|
-
if (schemaJson.type === "object" && otherSchemaJson.type === "object") {
|
|
59
|
-
const schemaProps = schemaJson.properties;
|
|
60
|
-
const otherSchemaProps = otherSchemaJson.properties;
|
|
61
|
-
if (!schemaProps || !otherSchemaProps) throw new JsonSchemaError("Cannot merge object schemas without properties");
|
|
62
|
-
const mergedProperties = {
|
|
63
|
-
...schemaProps,
|
|
64
|
-
...otherSchemaProps
|
|
65
|
-
};
|
|
66
|
-
const otherSchemaKeys = Object.keys(otherSchemaProps).reduce((acc, key) => {
|
|
67
|
-
acc[key] = true;
|
|
68
|
-
return acc;
|
|
69
|
-
}, {});
|
|
70
|
-
for (const key in schemaProps) if (otherSchemaKeys[key]) {
|
|
71
|
-
const prop1 = schemaProps[key];
|
|
72
|
-
const prop2 = otherSchemaProps[key];
|
|
73
|
-
if (isJsonSchema(prop1) && isJsonSchema(prop2)) mergedProperties[key] = mergeSchemas(prop1, prop2);
|
|
74
|
-
else mergedProperties[key] = prop2;
|
|
75
|
-
}
|
|
76
|
-
const schemaRequired = schemaJson.required;
|
|
77
|
-
const otherSchemaRequired = otherSchemaJson.required;
|
|
78
|
-
const mergedRequired = new Set([...schemaRequired ?? [], ...otherSchemaRequired ?? []]);
|
|
79
|
-
return {
|
|
80
|
-
type: "object",
|
|
81
|
-
properties: mergedProperties,
|
|
82
|
-
required: Array.from(mergedRequired)
|
|
83
|
-
};
|
|
84
|
-
}
|
|
85
|
-
if (schemaJson.type === "array" && otherSchemaJson.type === "array") {
|
|
86
|
-
if (!schemaJson.items || !otherSchemaJson.items) throw new JsonSchemaError("Cannot merge array schemas without items");
|
|
87
|
-
if (Array.isArray(schemaJson.items) || Array.isArray(otherSchemaJson.items)) throw new JsonSchemaError("Cannot merge array schemas with array items");
|
|
88
|
-
if (!isJsonSchema(schemaJson.items) || !isJsonSchema(otherSchemaJson.items)) throw new JsonSchemaError("Cannot merge array schemas with non-object items");
|
|
89
|
-
return {
|
|
90
|
-
type: "array",
|
|
91
|
-
items: mergeSchemas(schemaJson.items, otherSchemaJson.items)
|
|
92
|
-
};
|
|
93
|
-
}
|
|
94
|
-
return {
|
|
95
|
-
type: schemaJson.type,
|
|
96
|
-
description: schemaJson.description ?? otherSchemaJson.description
|
|
97
|
-
};
|
|
98
|
-
};
|
|
99
|
-
|
|
100
|
-
//#endregion
|
|
101
|
-
export { mergeSchemas };
|
|
102
|
-
//# sourceMappingURL=merge-schemas.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"merge-schemas.mjs","names":["z","mergedProperties: Record<string, JSONSchema._JSONSchema>"],"sources":["../../../src/types/merge-schemas.ts"],"sourcesContent":["import * as z from 'zod'\nimport type { JSONSchema } from 'zod/v4/core'\nimport { isZodSchema, type SchemaInput, schemaToJsonSchema } from '../schema-utils'\nimport { isAnyOf, type JsonSchema, JsonSchemaError } from './schema.types'\n\nconst isJsonSchema = (value: unknown): value is JsonSchema => {\n return typeof value === 'object' && value !== null && !Array.isArray(value) && typeof value !== 'boolean'\n}\n\nexport const isCompatible = (schema: JsonSchema, otherSchema: JsonSchema): boolean => {\n if (isAnyOf(schema)) {\n return schema.anyOf.every((item) => isCompatible(item, otherSchema))\n } else if (isAnyOf(otherSchema)) {\n return otherSchema.anyOf.every((item) => isCompatible(schema, item))\n }\n\n if (schema.type !== otherSchema.type) {\n return false\n }\n\n if (schema.type === 'array' && otherSchema.type === 'array') {\n if (!schema.items || !otherSchema.items) {\n return schema.items === otherSchema.items\n }\n if (Array.isArray(schema.items) || Array.isArray(otherSchema.items)) {\n return false\n }\n if (isJsonSchema(schema.items) && isJsonSchema(otherSchema.items)) {\n return isCompatible(schema.items, otherSchema.items)\n }\n return schema.items === otherSchema.items\n }\n\n if (schema.type === 'object' && otherSchema.type === 'object') {\n const schemaProps = schema.properties\n const otherSchemaProps = otherSchema.properties\n if (!schemaProps || !otherSchemaProps) {\n return schemaProps === otherSchemaProps\n }\n const keysFromSchema = Object.keys(schemaProps)\n const keysFromOtherSchema = Object.keys(otherSchemaProps)\n const commonKeys = keysFromSchema.filter((key) => keysFromOtherSchema.includes(key))\n\n if (schema.required?.some((key) => !keysFromOtherSchema.includes(key))) {\n return false\n } else if (otherSchema.required?.some((key) => !keysFromSchema.includes(key))) {\n return false\n }\n\n if (commonKeys.length > 0) {\n return commonKeys.every((key) => {\n const prop1 = schemaProps[key]\n const prop2 = otherSchemaProps[key]\n if (isJsonSchema(prop1) && isJsonSchema(prop2)) {\n return isCompatible(prop1, prop2)\n }\n return prop1 === prop2\n })\n }\n }\n\n return true\n}\n\nconst mergeZodSchemas = (schema: z.ZodType, otherSchema: z.ZodType): z.ZodType => {\n try {\n return z.intersection(schema, otherSchema)\n } catch (error) {\n throw new JsonSchemaError(`Cannot merge Zod schemas: ${error instanceof Error ? error.message : 'Unknown error'}`)\n }\n}\n\nexport const mergeSchemas = (schema: SchemaInput, otherSchema: SchemaInput): JsonSchema => {\n if (isZodSchema(schema) && isZodSchema(otherSchema)) {\n const mergedZodSchema = mergeZodSchemas(schema, otherSchema)\n const jsonSchema = schemaToJsonSchema(mergedZodSchema)\n if (!jsonSchema) {\n throw new JsonSchemaError('Failed to convert merged Zod schema to JSON Schema')\n }\n return jsonSchema as JsonSchema\n }\n\n const schemaJsonResult = schemaToJsonSchema(schema)\n const otherSchemaJsonResult = schemaToJsonSchema(otherSchema)\n\n if (!schemaJsonResult || !otherSchemaJsonResult) {\n throw new JsonSchemaError('Cannot merge schemas: failed to convert to JSON Schema')\n }\n\n const schemaJson = schemaJsonResult as JsonSchema\n const otherSchemaJson = otherSchemaJsonResult as JsonSchema\n\n if (!isCompatible(schemaJson, otherSchemaJson)) {\n throw new JsonSchemaError('Cannot merge schemas of different types')\n }\n\n if (isAnyOf(schemaJson)) {\n return {\n anyOf: schemaJson.anyOf.map((item) => mergeSchemas(item, otherSchemaJson)),\n }\n } else if (isAnyOf(otherSchemaJson)) {\n return {\n anyOf: otherSchemaJson.anyOf.map((item) => mergeSchemas(schemaJson, item)),\n }\n }\n\n if (schemaJson.type === 'object' && otherSchemaJson.type === 'object') {\n const schemaProps = schemaJson.properties as Record<string, JSONSchema._JSONSchema> | undefined\n const otherSchemaProps = otherSchemaJson.properties as Record<string, JSONSchema._JSONSchema> | undefined\n if (!schemaProps || !otherSchemaProps) {\n throw new JsonSchemaError('Cannot merge object schemas without properties')\n }\n const mergedProperties: Record<string, JSONSchema._JSONSchema> = { ...schemaProps, ...otherSchemaProps }\n const otherSchemaKeys = Object.keys(otherSchemaProps).reduce(\n (acc, key) => {\n acc[key] = true\n return acc\n },\n {} as Record<string, boolean>,\n )\n\n for (const key in schemaProps) {\n if (otherSchemaKeys[key]) {\n const prop1 = schemaProps[key]\n const prop2 = otherSchemaProps[key]\n if (isJsonSchema(prop1) && isJsonSchema(prop2)) {\n mergedProperties[key] = mergeSchemas(prop1, prop2)\n } else {\n mergedProperties[key] = prop2\n }\n }\n }\n\n const schemaRequired = schemaJson.required as string[] | undefined\n const otherSchemaRequired = otherSchemaJson.required as string[] | undefined\n const mergedRequired = new Set([...(schemaRequired ?? []), ...(otherSchemaRequired ?? [])])\n\n return {\n type: 'object',\n properties: mergedProperties,\n required: Array.from(mergedRequired),\n }\n }\n\n if (schemaJson.type === 'array' && otherSchemaJson.type === 'array') {\n if (!schemaJson.items || !otherSchemaJson.items) {\n throw new JsonSchemaError('Cannot merge array schemas without items')\n }\n if (Array.isArray(schemaJson.items) || Array.isArray(otherSchemaJson.items)) {\n throw new JsonSchemaError('Cannot merge array schemas with array items')\n }\n if (!isJsonSchema(schemaJson.items) || !isJsonSchema(otherSchemaJson.items)) {\n throw new JsonSchemaError('Cannot merge array schemas with non-object items')\n }\n return {\n type: 'array',\n items: mergeSchemas(schemaJson.items, otherSchemaJson.items),\n }\n }\n\n return {\n type: schemaJson.type as JSONSchema.BaseSchema['type'],\n description: (schemaJson.description ?? otherSchemaJson.description) as string | undefined,\n }\n}\n"],"mappings":";;;;;AAKA,MAAM,gBAAgB,UAAwC;AAC5D,QAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,MAAM,IAAI,OAAO,UAAU;;AAGlG,MAAa,gBAAgB,QAAoB,gBAAqC;AACpF,KAAI,QAAQ,OAAO,CACjB,QAAO,OAAO,MAAM,OAAO,SAAS,aAAa,MAAM,YAAY,CAAC;UAC3D,QAAQ,YAAY,CAC7B,QAAO,YAAY,MAAM,OAAO,SAAS,aAAa,QAAQ,KAAK,CAAC;AAGtE,KAAI,OAAO,SAAS,YAAY,KAC9B,QAAO;AAGT,KAAI,OAAO,SAAS,WAAW,YAAY,SAAS,SAAS;AAC3D,MAAI,CAAC,OAAO,SAAS,CAAC,YAAY,MAChC,QAAO,OAAO,UAAU,YAAY;AAEtC,MAAI,MAAM,QAAQ,OAAO,MAAM,IAAI,MAAM,QAAQ,YAAY,MAAM,CACjE,QAAO;AAET,MAAI,aAAa,OAAO,MAAM,IAAI,aAAa,YAAY,MAAM,CAC/D,QAAO,aAAa,OAAO,OAAO,YAAY,MAAM;AAEtD,SAAO,OAAO,UAAU,YAAY;;AAGtC,KAAI,OAAO,SAAS,YAAY,YAAY,SAAS,UAAU;EAC7D,MAAM,cAAc,OAAO;EAC3B,MAAM,mBAAmB,YAAY;AACrC,MAAI,CAAC,eAAe,CAAC,iBACnB,QAAO,gBAAgB;EAEzB,MAAM,iBAAiB,OAAO,KAAK,YAAY;EAC/C,MAAM,sBAAsB,OAAO,KAAK,iBAAiB;EACzD,MAAM,aAAa,eAAe,QAAQ,QAAQ,oBAAoB,SAAS,IAAI,CAAC;AAEpF,MAAI,OAAO,UAAU,MAAM,QAAQ,CAAC,oBAAoB,SAAS,IAAI,CAAC,CACpE,QAAO;WACE,YAAY,UAAU,MAAM,QAAQ,CAAC,eAAe,SAAS,IAAI,CAAC,CAC3E,QAAO;AAGT,MAAI,WAAW,SAAS,EACtB,QAAO,WAAW,OAAO,QAAQ;GAC/B,MAAM,QAAQ,YAAY;GAC1B,MAAM,QAAQ,iBAAiB;AAC/B,OAAI,aAAa,MAAM,IAAI,aAAa,MAAM,CAC5C,QAAO,aAAa,OAAO,MAAM;AAEnC,UAAO,UAAU;IACjB;;AAIN,QAAO;;AAGT,MAAM,mBAAmB,QAAmB,gBAAsC;AAChF,KAAI;AACF,SAAOA,IAAE,aAAa,QAAQ,YAAY;UACnC,OAAO;AACd,QAAM,IAAI,gBAAgB,6BAA6B,iBAAiB,QAAQ,MAAM,UAAU,kBAAkB;;;AAItH,MAAa,gBAAgB,QAAqB,gBAAyC;AACzF,KAAI,YAAY,OAAO,IAAI,YAAY,YAAY,EAAE;EAEnD,MAAM,aAAa,mBADK,gBAAgB,QAAQ,YAAY,CACN;AACtD,MAAI,CAAC,WACH,OAAM,IAAI,gBAAgB,qDAAqD;AAEjF,SAAO;;CAGT,MAAM,mBAAmB,mBAAmB,OAAO;CACnD,MAAM,wBAAwB,mBAAmB,YAAY;AAE7D,KAAI,CAAC,oBAAoB,CAAC,sBACxB,OAAM,IAAI,gBAAgB,yDAAyD;CAGrF,MAAM,aAAa;CACnB,MAAM,kBAAkB;AAExB,KAAI,CAAC,aAAa,YAAY,gBAAgB,CAC5C,OAAM,IAAI,gBAAgB,0CAA0C;AAGtE,KAAI,QAAQ,WAAW,CACrB,QAAO,EACL,OAAO,WAAW,MAAM,KAAK,SAAS,aAAa,MAAM,gBAAgB,CAAC,EAC3E;UACQ,QAAQ,gBAAgB,CACjC,QAAO,EACL,OAAO,gBAAgB,MAAM,KAAK,SAAS,aAAa,YAAY,KAAK,CAAC,EAC3E;AAGH,KAAI,WAAW,SAAS,YAAY,gBAAgB,SAAS,UAAU;EACrE,MAAM,cAAc,WAAW;EAC/B,MAAM,mBAAmB,gBAAgB;AACzC,MAAI,CAAC,eAAe,CAAC,iBACnB,OAAM,IAAI,gBAAgB,iDAAiD;EAE7E,MAAMC,mBAA2D;GAAE,GAAG;GAAa,GAAG;GAAkB;EACxG,MAAM,kBAAkB,OAAO,KAAK,iBAAiB,CAAC,QACnD,KAAK,QAAQ;AACZ,OAAI,OAAO;AACX,UAAO;KAET,EAAE,CACH;AAED,OAAK,MAAM,OAAO,YAChB,KAAI,gBAAgB,MAAM;GACxB,MAAM,QAAQ,YAAY;GAC1B,MAAM,QAAQ,iBAAiB;AAC/B,OAAI,aAAa,MAAM,IAAI,aAAa,MAAM,CAC5C,kBAAiB,OAAO,aAAa,OAAO,MAAM;OAElD,kBAAiB,OAAO;;EAK9B,MAAM,iBAAiB,WAAW;EAClC,MAAM,sBAAsB,gBAAgB;EAC5C,MAAM,iBAAiB,IAAI,IAAI,CAAC,GAAI,kBAAkB,EAAE,EAAG,GAAI,uBAAuB,EAAE,CAAE,CAAC;AAE3F,SAAO;GACL,MAAM;GACN,YAAY;GACZ,UAAU,MAAM,KAAK,eAAe;GACrC;;AAGH,KAAI,WAAW,SAAS,WAAW,gBAAgB,SAAS,SAAS;AACnE,MAAI,CAAC,WAAW,SAAS,CAAC,gBAAgB,MACxC,OAAM,IAAI,gBAAgB,2CAA2C;AAEvE,MAAI,MAAM,QAAQ,WAAW,MAAM,IAAI,MAAM,QAAQ,gBAAgB,MAAM,CACzE,OAAM,IAAI,gBAAgB,8CAA8C;AAE1E,MAAI,CAAC,aAAa,WAAW,MAAM,IAAI,CAAC,aAAa,gBAAgB,MAAM,CACzE,OAAM,IAAI,gBAAgB,mDAAmD;AAE/E,SAAO;GACL,MAAM;GACN,OAAO,aAAa,WAAW,OAAO,gBAAgB,MAAM;GAC7D;;AAGH,QAAO;EACL,MAAM,WAAW;EACjB,aAAc,WAAW,eAAe,gBAAgB;EACzD"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { JSONSchema } from "zod/v4/core";
|
|
2
|
-
|
|
3
|
-
//#region src/types/schema.types.d.ts
|
|
4
|
-
type JsonSchema = JSONSchema.BaseSchema;
|
|
5
|
-
declare class JsonSchemaError extends Error {
|
|
6
|
-
constructor(message: string);
|
|
7
|
-
}
|
|
8
|
-
declare const isAnyOf: (schema: JsonSchema) => schema is JSONSchema.BaseSchema & {
|
|
9
|
-
anyOf: JSONSchema.BaseSchema[];
|
|
10
|
-
};
|
|
11
|
-
//#endregion
|
|
12
|
-
export { JsonSchema, JsonSchemaError, isAnyOf };
|
|
13
|
-
//# sourceMappingURL=schema.types.d.mts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"schema.types.d.mts","names":[],"sources":["../../../src/types/schema.types.ts"],"sourcesContent":[],"mappings":";;;KAEY,UAAA,GAAa,UAAA,CAAW;cAEvB,eAAA,SAAwB,KAAA;EAFzB,WAAA,CAAA,OAAU,EAAA,MAAG;AAEzB;AAOa,cAAA,OAEZ,EAAA,CAAA,MAAA,EAF+B,UAE/B,EAAA,GAAA,MAAA,IAFsD,UAAA,CAAW,UAEjE,GAAA;EAF+B,KAAA,EAAwD,UAAA,CAAW,UAAnE,EAAA;CAAuB"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
//#region src/types/schema.types.ts
|
|
2
|
-
var JsonSchemaError = class extends Error {
|
|
3
|
-
constructor(message) {
|
|
4
|
-
super(message);
|
|
5
|
-
this.name = "JsonSchemaError";
|
|
6
|
-
}
|
|
7
|
-
};
|
|
8
|
-
const isAnyOf = (schema) => {
|
|
9
|
-
return typeof schema === "object" && schema !== null && "anyOf" in schema;
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
//#endregion
|
|
13
|
-
export { JsonSchemaError, isAnyOf };
|
|
14
|
-
//# sourceMappingURL=schema.types.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"schema.types.mjs","names":[],"sources":["../../../src/types/schema.types.ts"],"sourcesContent":["import type { JSONSchema } from 'zod/v4/core'\n\nexport type JsonSchema = JSONSchema.BaseSchema\n\nexport class JsonSchemaError extends Error {\n constructor(message: string) {\n super(message)\n this.name = 'JsonSchemaError'\n }\n}\n\nexport const isAnyOf = (schema: JsonSchema): schema is JSONSchema.BaseSchema & { anyOf: JSONSchema.BaseSchema[] } => {\n return typeof schema === 'object' && schema !== null && 'anyOf' in schema\n}\n"],"mappings":";AAIA,IAAa,kBAAb,cAAqC,MAAM;CACzC,YAAY,SAAiB;AAC3B,QAAM,QAAQ;AACd,OAAK,OAAO;;;AAIhB,MAAa,WAAW,WAA6F;AACnH,QAAO,OAAO,WAAW,YAAY,WAAW,QAAQ,WAAW"}
|