@motiadev/core 0.13.0 → 0.13.1-beta.163-660633
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/LICENSE +93 -21
- package/dist/index.d.mts +38 -0
- package/dist/index.mjs +30 -0
- package/dist/src/adapters/defaults/cron/in-memory-cron-adapter.d.mts +17 -0
- package/dist/src/adapters/defaults/cron/in-memory-cron-adapter.d.mts.map +1 -0
- package/dist/src/adapters/defaults/cron/in-memory-cron-adapter.mjs +51 -0
- package/dist/src/adapters/defaults/cron/in-memory-cron-adapter.mjs.map +1 -0
- package/dist/src/adapters/defaults/event/in-memory-queue-event-adapter.d.mts +19 -0
- package/dist/src/adapters/defaults/event/in-memory-queue-event-adapter.d.mts.map +1 -0
- package/dist/src/adapters/defaults/event/in-memory-queue-event-adapter.mjs +54 -0
- package/dist/src/adapters/defaults/event/in-memory-queue-event-adapter.mjs.map +1 -0
- package/dist/src/adapters/defaults/index.d.mts +8 -0
- package/dist/src/adapters/defaults/index.mjs +10 -0
- package/dist/src/adapters/defaults/state/file-state-adapter.d.mts +27 -0
- package/dist/src/adapters/defaults/state/file-state-adapter.d.mts.map +1 -0
- package/dist/src/adapters/defaults/state/file-state-adapter.mjs +105 -0
- package/dist/src/adapters/defaults/state/file-state-adapter.mjs.map +1 -0
- package/dist/src/adapters/defaults/state/memory-state-adapter.d.mts +20 -0
- package/dist/src/adapters/defaults/state/memory-state-adapter.d.mts.map +1 -0
- package/dist/src/adapters/defaults/state/memory-state-adapter.mjs +58 -0
- package/dist/src/adapters/defaults/state/memory-state-adapter.mjs.map +1 -0
- package/dist/src/adapters/defaults/state/utils.mjs +40 -0
- package/dist/src/adapters/defaults/state/utils.mjs.map +1 -0
- package/dist/src/adapters/defaults/stream/file-stream-adapter-manager.d.mts +13 -0
- package/dist/src/adapters/defaults/stream/file-stream-adapter-manager.d.mts.map +1 -0
- package/dist/src/adapters/defaults/stream/file-stream-adapter-manager.mjs +16 -0
- package/dist/src/adapters/defaults/stream/file-stream-adapter-manager.mjs.map +1 -0
- package/dist/src/adapters/defaults/stream/file-stream-adapter.d.mts +24 -0
- package/dist/src/adapters/defaults/stream/file-stream-adapter.d.mts.map +1 -0
- package/dist/src/adapters/defaults/stream/file-stream-adapter.mjs +84 -0
- package/dist/src/adapters/defaults/stream/file-stream-adapter.mjs.map +1 -0
- package/dist/src/adapters/defaults/stream/memory-stream-adapter-manager.d.mts +10 -0
- package/dist/src/adapters/defaults/stream/memory-stream-adapter-manager.d.mts.map +1 -0
- package/dist/src/adapters/defaults/stream/memory-stream-adapter-manager.mjs +12 -0
- package/dist/src/adapters/defaults/stream/memory-stream-adapter-manager.mjs.map +1 -0
- package/dist/src/adapters/defaults/stream/memory-stream-adapter.d.mts +20 -0
- package/dist/src/adapters/defaults/stream/memory-stream-adapter.d.mts.map +1 -0
- package/dist/src/adapters/defaults/stream/memory-stream-adapter.mjs +58 -0
- package/dist/src/adapters/defaults/stream/memory-stream-adapter.mjs.map +1 -0
- package/dist/src/adapters/interfaces/cron-adapter.interface.d.mts +32 -0
- package/dist/src/adapters/interfaces/cron-adapter.interface.d.mts.map +1 -0
- package/dist/src/adapters/interfaces/event-adapter.interface.d.mts +19 -0
- package/dist/src/adapters/interfaces/event-adapter.interface.d.mts.map +1 -0
- package/dist/src/adapters/interfaces/observability-adapter.interface.d.mts +27 -0
- package/dist/src/adapters/interfaces/observability-adapter.interface.d.mts.map +1 -0
- package/dist/src/adapters/interfaces/state-adapter.interface.d.mts +28 -0
- package/dist/src/adapters/interfaces/state-adapter.interface.d.mts.map +1 -0
- package/dist/src/adapters/interfaces/stream-adapter-manager.interface.d.mts +10 -0
- package/dist/src/adapters/interfaces/stream-adapter-manager.interface.d.mts.map +1 -0
- package/dist/src/adapters/interfaces/stream-adapter.interface.d.mts +26 -0
- package/dist/src/adapters/interfaces/stream-adapter.interface.d.mts.map +1 -0
- package/dist/src/adapters/interfaces/stream-adapter.interface.mjs +17 -0
- package/dist/src/adapters/interfaces/stream-adapter.interface.mjs.map +1 -0
- package/dist/src/analytics/utils.d.mts +9 -0
- package/dist/src/analytics/utils.d.mts.map +1 -0
- package/dist/src/analytics/utils.mjs +35 -0
- package/dist/src/analytics/utils.mjs.map +1 -0
- package/dist/src/call-step-file.mjs +213 -0
- package/dist/src/call-step-file.mjs.map +1 -0
- package/dist/src/config.d.mts +7 -0
- package/dist/src/config.d.mts.map +1 -0
- package/dist/src/config.mjs +6 -0
- package/dist/src/config.mjs.map +1 -0
- package/dist/src/cron-handler.d.mts +18 -0
- package/dist/src/cron-handler.d.mts.map +1 -0
- package/dist/src/cron-handler.mjs +103 -0
- package/dist/src/cron-handler.mjs.map +1 -0
- package/dist/src/endpoints/analytics-endpoint.mjs +29 -0
- package/dist/src/endpoints/analytics-endpoint.mjs.map +1 -0
- package/dist/src/endpoints/flows-config-endpoint.mjs +38 -0
- package/dist/src/endpoints/flows-config-endpoint.mjs.map +1 -0
- package/dist/src/endpoints/flows-endpoint.mjs +39 -0
- package/dist/src/endpoints/flows-endpoint.mjs.map +1 -0
- package/dist/src/endpoints/step-endpoint.mjs +41 -0
- package/dist/src/endpoints/step-endpoint.mjs.map +1 -0
- package/dist/src/generate-trace-id.mjs +13 -0
- package/dist/src/generate-trace-id.mjs.map +1 -0
- package/dist/src/get-step-config.d.mts +9 -0
- package/dist/src/get-step-config.d.mts.map +1 -0
- package/dist/src/get-step-config.mjs +63 -0
- package/dist/src/get-step-config.mjs.map +1 -0
- package/dist/src/get-step-language.mjs +14 -0
- package/dist/src/get-step-language.mjs.map +1 -0
- package/dist/src/guards.d.mts +10 -0
- package/dist/src/guards.d.mts.map +1 -0
- package/dist/src/guards.mjs +9 -0
- package/dist/src/guards.mjs.map +1 -0
- package/dist/src/helper/flows-helper.mjs +126 -0
- package/dist/src/helper/flows-helper.mjs.map +1 -0
- package/dist/src/infrastructure-validator/defaults.mjs +17 -0
- package/dist/src/infrastructure-validator/defaults.mjs.map +1 -0
- package/dist/src/infrastructure-validator/index.d.mts +3 -0
- package/dist/src/infrastructure-validator/index.mjs +4 -0
- package/dist/src/infrastructure-validator/schemas.d.mts +1 -0
- package/dist/src/infrastructure-validator/schemas.mjs +77 -0
- package/dist/src/infrastructure-validator/schemas.mjs.map +1 -0
- package/dist/src/infrastructure-validator/types.d.mts +14 -0
- package/dist/src/infrastructure-validator/types.d.mts.map +1 -0
- package/dist/src/infrastructure-validator/validations.d.mts +7 -0
- package/dist/src/infrastructure-validator/validations.d.mts.map +1 -0
- package/dist/src/infrastructure-validator/validations.mjs +29 -0
- package/dist/src/infrastructure-validator/validations.mjs.map +1 -0
- package/dist/src/language-runner.mjs +53 -0
- package/dist/src/language-runner.mjs.map +1 -0
- package/dist/src/locked-data.d.mts +81 -0
- package/dist/src/locked-data.d.mts.map +1 -0
- package/dist/src/locked-data.mjs +223 -0
- package/dist/src/locked-data.mjs.map +1 -0
- package/dist/src/logger-factory.d.mts +16 -0
- package/dist/src/logger-factory.d.mts.map +1 -0
- package/dist/src/logger-factory.mjs +33 -0
- package/dist/src/logger-factory.mjs.map +1 -0
- package/dist/src/logger.d.mts +28 -0
- package/dist/src/logger.d.mts.map +1 -0
- package/dist/src/logger.mjs +64 -0
- package/dist/src/logger.mjs.map +1 -0
- package/dist/src/mermaid-generator.d.mts +9 -0
- package/dist/src/mermaid-generator.d.mts.map +1 -0
- package/dist/src/mermaid-generator.mjs +126 -0
- package/dist/src/mermaid-generator.mjs.map +1 -0
- package/dist/src/motia.d.mts +36 -0
- package/dist/src/motia.d.mts.map +1 -0
- package/dist/src/motia.mjs +6 -0
- package/dist/src/motia.mjs.map +1 -0
- package/dist/src/node/can-access.d.mts +1 -0
- package/dist/src/node/can-access.mjs +36 -0
- package/dist/src/node/can-access.mjs.map +1 -0
- package/dist/src/node/get-config.d.mts +1 -0
- package/dist/src/node/get-config.mjs +49 -0
- package/dist/src/node/get-config.mjs.map +1 -0
- package/dist/src/node/logger.mjs +47 -0
- package/dist/src/node/logger.mjs.map +1 -0
- package/dist/src/node/middleware-compose.mjs +10 -0
- package/dist/src/node/middleware-compose.mjs.map +1 -0
- package/dist/src/node/node-runner.d.mts +1 -0
- package/dist/src/node/node-runner.mjs +94 -0
- package/dist/src/node/node-runner.mjs.map +1 -0
- package/dist/src/node/rpc-state-manager.mjs +35 -0
- package/dist/src/node/rpc-state-manager.mjs.map +1 -0
- package/dist/src/node/rpc.mjs +55 -0
- package/dist/src/node/rpc.mjs.map +1 -0
- package/dist/src/observability/create-trace.mjs +26 -0
- package/dist/src/observability/create-trace.mjs.map +1 -0
- package/dist/src/observability/index.d.mts +7 -0
- package/dist/src/observability/index.d.mts.map +1 -0
- package/dist/src/observability/no-tracer.d.mts +15 -0
- package/dist/src/observability/no-tracer.d.mts.map +1 -0
- package/dist/src/observability/no-tracer.mjs +15 -0
- package/dist/src/observability/no-tracer.mjs.map +1 -0
- package/dist/src/observability/redis-trace-stream-adapter.mjs +76 -0
- package/dist/src/observability/redis-trace-stream-adapter.mjs.map +1 -0
- package/dist/src/observability/stream-tracer.mjs +87 -0
- package/dist/src/observability/stream-tracer.mjs.map +1 -0
- package/dist/src/observability/trace-manager.mjs +24 -0
- package/dist/src/observability/trace-manager.mjs.map +1 -0
- package/dist/src/observability/tracer.mjs +87 -0
- package/dist/src/observability/tracer.mjs.map +1 -0
- package/dist/src/observability/types.d.mts +14 -0
- package/dist/src/observability/types.d.mts.map +1 -0
- package/dist/src/pretty-print.mjs +50 -0
- package/dist/src/pretty-print.mjs.map +1 -0
- package/dist/src/printer.d.mts +65 -0
- package/dist/src/printer.d.mts.map +1 -0
- package/dist/src/printer.mjs +147 -0
- package/dist/src/printer.mjs.map +1 -0
- package/dist/src/process-communication/communication-config.mjs +26 -0
- package/dist/src/process-communication/communication-config.mjs.map +1 -0
- package/dist/src/process-communication/process-manager.mjs +67 -0
- package/dist/src/process-communication/process-manager.mjs.map +1 -0
- package/dist/src/queue-manager.d.mts +37 -0
- package/dist/src/queue-manager.d.mts.map +1 -0
- package/dist/src/queue-manager.mjs +209 -0
- package/dist/src/queue-manager.mjs.map +1 -0
- package/dist/src/run-stream-can-access.mjs +59 -0
- package/dist/src/run-stream-can-access.mjs.map +1 -0
- package/dist/src/schema-utils.mjs +30 -0
- package/dist/src/schema-utils.mjs.map +1 -0
- package/dist/src/server.d.mts +40 -0
- package/dist/src/server.d.mts.map +1 -0
- package/dist/src/server.mjs +332 -0
- package/dist/src/server.mjs.map +1 -0
- package/dist/src/socket-server/helpers.mjs +35 -0
- package/dist/src/socket-server/helpers.mjs.map +1 -0
- package/dist/src/socket-server.mjs +127 -0
- package/dist/src/socket-server.mjs.map +1 -0
- package/dist/src/state/create-state-adapter.d.mts +11 -0
- package/dist/src/state/create-state-adapter.d.mts.map +1 -0
- package/dist/src/state/create-state-adapter.mjs +11 -0
- package/dist/src/state/create-state-adapter.mjs.map +1 -0
- package/dist/src/step-handler-rpc-processor.mjs +56 -0
- package/dist/src/step-handler-rpc-processor.mjs.map +1 -0
- package/dist/src/step-handler-rpc-stdin-processor.mjs +71 -0
- package/dist/src/step-handler-rpc-stdin-processor.mjs.map +1 -0
- package/dist/src/step-handlers.d.mts +13 -0
- package/dist/src/step-handlers.d.mts.map +1 -0
- package/dist/src/step-handlers.mjs +93 -0
- package/dist/src/step-handlers.mjs.map +1 -0
- package/dist/src/step-validator.d.mts +15 -0
- package/dist/src/step-validator.d.mts.map +1 -0
- package/dist/src/step-validator.mjs +118 -0
- package/dist/src/step-validator.mjs.map +1 -0
- package/dist/src/steps/emit.step.mjs +20 -0
- package/dist/src/steps/emit.step.mjs.map +1 -0
- package/dist/src/steps/index.mjs +14 -0
- package/dist/src/steps/index.mjs.map +1 -0
- package/dist/src/streams/flows-config-stream.mjs +46 -0
- package/dist/src/streams/flows-config-stream.mjs.map +1 -0
- package/dist/src/streams/flows-stream.mjs +33 -0
- package/dist/src/streams/flows-stream.mjs.map +1 -0
- package/dist/src/streams/redis-logs-stream.d.mts +3 -0
- package/dist/src/streams/redis-logs-stream.mjs +97 -0
- package/dist/src/streams/redis-logs-stream.mjs.map +1 -0
- package/dist/src/streams/stream-factory.d.mts +7 -0
- package/dist/src/streams/stream-factory.d.mts.map +1 -0
- package/dist/src/types/app-config-types.d.mts +48 -0
- package/dist/src/types/app-config-types.d.mts.map +1 -0
- package/dist/src/types/generate-type-from-schema.mjs +30 -0
- package/dist/src/types/generate-type-from-schema.mjs.map +1 -0
- package/dist/src/types/generate-types-from-response.mjs +12 -0
- package/dist/src/types/generate-types-from-response.mjs.map +1 -0
- package/dist/src/types/generate-types.mjs +101 -0
- package/dist/src/types/generate-types.mjs.map +1 -0
- package/dist/src/types/merge-schemas.mjs +102 -0
- package/dist/src/types/merge-schemas.mjs.map +1 -0
- package/dist/src/types/schema.types.d.mts +13 -0
- package/dist/src/types/schema.types.d.mts.map +1 -0
- package/dist/src/types/schema.types.mjs +14 -0
- package/dist/src/types/schema.types.mjs.map +1 -0
- package/dist/src/types-stream.d.mts +46 -0
- package/dist/src/types-stream.d.mts.map +1 -0
- package/dist/src/types.d.mts +188 -0
- package/dist/src/types.d.mts.map +1 -0
- package/dist/src/utils.mjs +13 -0
- package/dist/src/utils.mjs.map +1 -0
- package/dist/src/validate-event-input.mjs +76 -0
- package/dist/src/validate-event-input.mjs.map +1 -0
- package/jest.config.cjs +20 -0
- package/package.json +22 -8
- package/tsdown.config.ts +54 -0
- package/dist/index.d.ts +0 -30
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -72
- package/dist/jest.config.d.ts +0 -8
- package/dist/jest.config.d.ts.map +0 -1
- package/dist/src/adapters/defaults/cron/in-memory-cron-adapter.d.ts +0 -13
- package/dist/src/adapters/defaults/cron/in-memory-cron-adapter.d.ts.map +0 -1
- package/dist/src/adapters/defaults/cron/in-memory-cron-adapter.js +0 -53
- package/dist/src/adapters/defaults/event/in-memory-queue-event-adapter.d.ts +0 -15
- package/dist/src/adapters/defaults/event/in-memory-queue-event-adapter.d.ts.map +0 -1
- package/dist/src/adapters/defaults/event/in-memory-queue-event-adapter.js +0 -49
- package/dist/src/adapters/defaults/index.d.ts +0 -9
- package/dist/src/adapters/defaults/index.d.ts.map +0 -1
- package/dist/src/adapters/defaults/index.js +0 -19
- package/dist/src/adapters/defaults/state/file-state-adapter.d.ts +0 -23
- package/dist/src/adapters/defaults/state/file-state-adapter.d.ts.map +0 -1
- package/dist/src/adapters/defaults/state/file-state-adapter.js +0 -149
- package/dist/src/adapters/defaults/state/memory-state-adapter.d.ts +0 -16
- package/dist/src/adapters/defaults/state/memory-state-adapter.d.ts.map +0 -1
- package/dist/src/adapters/defaults/state/memory-state-adapter.js +0 -69
- package/dist/src/adapters/defaults/state/utils.d.ts +0 -4
- package/dist/src/adapters/defaults/state/utils.d.ts.map +0 -1
- package/dist/src/adapters/defaults/state/utils.js +0 -66
- package/dist/src/adapters/defaults/stream/file-stream-adapter-manager.d.ts +0 -9
- package/dist/src/adapters/defaults/stream/file-stream-adapter-manager.d.ts.map +0 -1
- package/dist/src/adapters/defaults/stream/file-stream-adapter-manager.js +0 -14
- package/dist/src/adapters/defaults/stream/file-stream-adapter.d.ts +0 -22
- package/dist/src/adapters/defaults/stream/file-stream-adapter.d.ts.map +0 -1
- package/dist/src/adapters/defaults/stream/file-stream-adapter.js +0 -125
- package/dist/src/adapters/defaults/stream/index.d.ts +0 -5
- package/dist/src/adapters/defaults/stream/index.d.ts.map +0 -1
- package/dist/src/adapters/defaults/stream/index.js +0 -11
- package/dist/src/adapters/defaults/stream/memory-stream-adapter-manager.d.ts +0 -6
- package/dist/src/adapters/defaults/stream/memory-stream-adapter-manager.d.ts.map +0 -1
- package/dist/src/adapters/defaults/stream/memory-stream-adapter-manager.js +0 -10
- package/dist/src/adapters/defaults/stream/memory-stream-adapter.d.ts +0 -16
- package/dist/src/adapters/defaults/stream/memory-stream-adapter.d.ts.map +0 -1
- package/dist/src/adapters/defaults/stream/memory-stream-adapter.js +0 -55
- package/dist/src/adapters/interfaces/cron-adapter.interface.d.ts +0 -29
- package/dist/src/adapters/interfaces/cron-adapter.interface.d.ts.map +0 -1
- package/dist/src/adapters/interfaces/cron-adapter.interface.js +0 -2
- package/dist/src/adapters/interfaces/event-adapter.interface.d.ts +0 -15
- package/dist/src/adapters/interfaces/event-adapter.interface.d.ts.map +0 -1
- package/dist/src/adapters/interfaces/event-adapter.interface.js +0 -2
- package/dist/src/adapters/interfaces/index.d.ts +0 -7
- package/dist/src/adapters/interfaces/index.d.ts.map +0 -1
- package/dist/src/adapters/interfaces/index.js +0 -5
- package/dist/src/adapters/interfaces/observability-adapter.interface.d.ts +0 -23
- package/dist/src/adapters/interfaces/observability-adapter.interface.d.ts.map +0 -1
- package/dist/src/adapters/interfaces/observability-adapter.interface.js +0 -2
- package/dist/src/adapters/interfaces/state-adapter.interface.d.ts +0 -24
- package/dist/src/adapters/interfaces/state-adapter.interface.d.ts.map +0 -1
- package/dist/src/adapters/interfaces/state-adapter.interface.js +0 -2
- package/dist/src/adapters/interfaces/stream-adapter-manager.interface.d.ts +0 -6
- package/dist/src/adapters/interfaces/stream-adapter-manager.interface.d.ts.map +0 -1
- package/dist/src/adapters/interfaces/stream-adapter-manager.interface.js +0 -2
- package/dist/src/adapters/interfaces/stream-adapter.interface.d.ts +0 -22
- package/dist/src/adapters/interfaces/stream-adapter.interface.d.ts.map +0 -1
- package/dist/src/adapters/interfaces/stream-adapter.interface.js +0 -16
- package/dist/src/analytics/utils.d.ts +0 -6
- package/dist/src/analytics/utils.d.ts.map +0 -1
- package/dist/src/analytics/utils.js +0 -51
- package/dist/src/call-step-file.d.ts +0 -16
- package/dist/src/call-step-file.d.ts.map +0 -1
- package/dist/src/call-step-file.js +0 -194
- package/dist/src/config.d.ts +0 -3
- package/dist/src/config.d.ts.map +0 -1
- package/dist/src/config.js +0 -5
- package/dist/src/config.types.d.ts +0 -17
- package/dist/src/config.types.d.ts.map +0 -1
- package/dist/src/config.types.js +0 -2
- package/dist/src/cron-handler.d.ts +0 -14
- package/dist/src/cron-handler.d.ts.map +0 -1
- package/dist/src/cron-handler.js +0 -132
- package/dist/src/endpoints/analytics-endpoint.d.ts +0 -3
- package/dist/src/endpoints/analytics-endpoint.d.ts.map +0 -1
- package/dist/src/endpoints/analytics-endpoint.js +0 -28
- package/dist/src/endpoints/flows-config-endpoint.d.ts +0 -4
- package/dist/src/endpoints/flows-config-endpoint.d.ts.map +0 -1
- package/dist/src/endpoints/flows-config-endpoint.js +0 -34
- package/dist/src/endpoints/flows-endpoint.d.ts +0 -3
- package/dist/src/endpoints/flows-endpoint.d.ts.map +0 -1
- package/dist/src/endpoints/flows-endpoint.js +0 -29
- package/dist/src/endpoints/step-endpoint.d.ts +0 -4
- package/dist/src/endpoints/step-endpoint.d.ts.map +0 -1
- package/dist/src/endpoints/step-endpoint.js +0 -45
- package/dist/src/generate-trace-id.d.ts +0 -3
- package/dist/src/generate-trace-id.d.ts.map +0 -1
- package/dist/src/generate-trace-id.js +0 -14
- package/dist/src/get-step-config.d.ts +0 -5
- package/dist/src/get-step-config.d.ts.map +0 -1
- package/dist/src/get-step-config.js +0 -68
- package/dist/src/get-step-language.d.ts +0 -2
- package/dist/src/get-step-language.d.ts.map +0 -1
- package/dist/src/get-step-language.js +0 -27
- package/dist/src/guards.d.ts +0 -6
- package/dist/src/guards.d.ts.map +0 -1
- package/dist/src/guards.js +0 -11
- package/dist/src/helper/flows-helper.d.ts +0 -6
- package/dist/src/helper/flows-helper.d.ts.map +0 -1
- package/dist/src/helper/flows-helper.js +0 -143
- package/dist/src/infrastructure-validator/defaults.d.ts +0 -4
- package/dist/src/infrastructure-validator/defaults.d.ts.map +0 -1
- package/dist/src/infrastructure-validator/defaults.js +0 -16
- package/dist/src/infrastructure-validator/index.d.ts +0 -4
- package/dist/src/infrastructure-validator/index.d.ts.map +0 -1
- package/dist/src/infrastructure-validator/index.js +0 -13
- package/dist/src/infrastructure-validator/schemas.d.ts +0 -45
- package/dist/src/infrastructure-validator/schemas.d.ts.map +0 -1
- package/dist/src/infrastructure-validator/schemas.js +0 -100
- package/dist/src/infrastructure-validator/types.d.ts +0 -21
- package/dist/src/infrastructure-validator/types.d.ts.map +0 -1
- package/dist/src/infrastructure-validator/types.js +0 -2
- package/dist/src/infrastructure-validator/validations.d.ts +0 -4
- package/dist/src/infrastructure-validator/validations.d.ts.map +0 -1
- package/dist/src/infrastructure-validator/validations.js +0 -62
- package/dist/src/language-runner.d.ts +0 -15
- package/dist/src/language-runner.d.ts.map +0 -1
- package/dist/src/language-runner.js +0 -31
- package/dist/src/locked-data.d.ts +0 -78
- package/dist/src/locked-data.d.ts.map +0 -1
- package/dist/src/locked-data.js +0 -284
- package/dist/src/logger-factory.d.ts +0 -19
- package/dist/src/logger-factory.d.ts.map +0 -1
- package/dist/src/logger-factory.js +0 -27
- package/dist/src/logger.d.ts +0 -26
- package/dist/src/logger.d.ts.map +0 -1
- package/dist/src/logger.js +0 -60
- package/dist/src/mermaid-generator.d.ts +0 -5
- package/dist/src/mermaid-generator.d.ts.map +0 -1
- package/dist/src/mermaid-generator.js +0 -203
- package/dist/src/motia.d.ts +0 -32
- package/dist/src/motia.d.ts.map +0 -1
- package/dist/src/motia.js +0 -4
- package/dist/src/node/can-access.d.ts +0 -2
- package/dist/src/node/can-access.d.ts.map +0 -1
- package/dist/src/node/can-access.js +0 -44
- package/dist/src/node/get-config.d.ts +0 -2
- package/dist/src/node/get-config.d.ts.map +0 -1
- package/dist/src/node/get-config.js +0 -64
- package/dist/src/node/logger.d.ts +0 -16
- package/dist/src/node/logger.d.ts.map +0 -1
- package/dist/src/node/logger.js +0 -48
- package/dist/src/node/middleware-compose.d.ts +0 -2
- package/dist/src/node/middleware-compose.d.ts.map +0 -1
- package/dist/src/node/middleware-compose.js +0 -10
- package/dist/src/node/node-runner.d.ts +0 -2
- package/dist/src/node/node-runner.d.ts.map +0 -1
- package/dist/src/node/node-runner.js +0 -83
- package/dist/src/node/rpc-state-manager.d.ts +0 -12
- package/dist/src/node/rpc-state-manager.d.ts.map +0 -1
- package/dist/src/node/rpc-state-manager.js +0 -24
- package/dist/src/node/rpc.d.ts +0 -10
- package/dist/src/node/rpc.d.ts.map +0 -1
- package/dist/src/node/rpc.js +0 -50
- package/dist/src/observability/create-trace.d.ts +0 -4
- package/dist/src/observability/create-trace.d.ts.map +0 -1
- package/dist/src/observability/create-trace.js +0 -22
- package/dist/src/observability/index.d.ts +0 -4
- package/dist/src/observability/index.d.ts.map +0 -1
- package/dist/src/observability/index.js +0 -2
- package/dist/src/observability/no-tracer.d.ts +0 -10
- package/dist/src/observability/no-tracer.d.ts.map +0 -1
- package/dist/src/observability/no-tracer.js +0 -14
- package/dist/src/observability/redis-trace-stream-adapter.d.ts +0 -17
- package/dist/src/observability/redis-trace-stream-adapter.d.ts.map +0 -1
- package/dist/src/observability/redis-trace-stream-adapter.js +0 -65
- package/dist/src/observability/stream-tracer.d.ts +0 -22
- package/dist/src/observability/stream-tracer.d.ts.map +0 -1
- package/dist/src/observability/stream-tracer.js +0 -97
- package/dist/src/observability/trace-manager.d.ts +0 -13
- package/dist/src/observability/trace-manager.d.ts.map +0 -1
- package/dist/src/observability/trace-manager.js +0 -23
- package/dist/src/observability/tracer.d.ts +0 -19
- package/dist/src/observability/tracer.d.ts.map +0 -1
- package/dist/src/observability/tracer.js +0 -95
- package/dist/src/observability/types.d.ts +0 -75
- package/dist/src/observability/types.d.ts.map +0 -1
- package/dist/src/observability/types.js +0 -2
- package/dist/src/pretty-print.d.ts +0 -2
- package/dist/src/pretty-print.d.ts.map +0 -1
- package/dist/src/pretty-print.js +0 -63
- package/dist/src/printer.d.ts +0 -61
- package/dist/src/printer.d.ts.map +0 -1
- package/dist/src/printer.js +0 -164
- package/dist/src/process-communication/communication-config.d.ts +0 -8
- package/dist/src/process-communication/communication-config.d.ts.map +0 -1
- package/dist/src/process-communication/communication-config.js +0 -18
- package/dist/src/process-communication/process-manager.d.ts +0 -32
- package/dist/src/process-communication/process-manager.d.ts.map +0 -1
- package/dist/src/process-communication/process-manager.js +0 -88
- package/dist/src/process-communication/rpc-processor-interface.d.ts +0 -10
- package/dist/src/process-communication/rpc-processor-interface.d.ts.map +0 -1
- package/dist/src/process-communication/rpc-processor-interface.js +0 -2
- package/dist/src/queue-manager.d.ts +0 -42
- package/dist/src/queue-manager.d.ts.map +0 -1
- package/dist/src/queue-manager.js +0 -252
- package/dist/src/ruby/get-ruby-config.d.ts +0 -3
- package/dist/src/ruby/get-ruby-config.d.ts.map +0 -1
- package/dist/src/ruby/get-ruby-config.js +0 -34
- package/dist/src/run-stream-can-access.d.ts +0 -10
- package/dist/src/run-stream-can-access.d.ts.map +0 -1
- package/dist/src/run-stream-can-access.js +0 -59
- package/dist/src/schema-utils.d.ts +0 -9
- package/dist/src/schema-utils.d.ts.map +0 -1
- package/dist/src/schema-utils.js +0 -80
- package/dist/src/server.d.ts +0 -37
- package/dist/src/server.d.ts.map +0 -1
- package/dist/src/server.js +0 -318
- package/dist/src/socket-server/helpers.d.ts +0 -53
- package/dist/src/socket-server/helpers.d.ts.map +0 -1
- package/dist/src/socket-server/helpers.js +0 -28
- package/dist/src/socket-server.d.ts +0 -21
- package/dist/src/socket-server.d.ts.map +0 -1
- package/dist/src/socket-server.js +0 -127
- package/dist/src/state/create-state-adapter.d.ts +0 -8
- package/dist/src/state/create-state-adapter.d.ts.map +0 -1
- package/dist/src/state/create-state-adapter.js +0 -8
- package/dist/src/step-handler-rpc-processor.d.ts +0 -22
- package/dist/src/step-handler-rpc-processor.d.ts.map +0 -1
- package/dist/src/step-handler-rpc-processor.js +0 -63
- package/dist/src/step-handler-rpc-stdin-processor.d.ts +0 -23
- package/dist/src/step-handler-rpc-stdin-processor.d.ts.map +0 -1
- package/dist/src/step-handler-rpc-stdin-processor.js +0 -83
- package/dist/src/step-handlers.d.ts +0 -9
- package/dist/src/step-handlers.d.ts.map +0 -1
- package/dist/src/step-handlers.js +0 -77
- package/dist/src/step-validator.d.ts +0 -15
- package/dist/src/step-validator.d.ts.map +0 -1
- package/dist/src/step-validator.js +0 -135
- package/dist/src/steps/emit.step.d.ts +0 -12
- package/dist/src/steps/emit.step.d.ts.map +0 -1
- package/dist/src/steps/emit.step.js +0 -27
- package/dist/src/steps/index.d.ts +0 -3
- package/dist/src/steps/index.d.ts.map +0 -1
- package/dist/src/steps/index.js +0 -16
- package/dist/src/streams/flows-config-stream.d.ts +0 -14
- package/dist/src/streams/flows-config-stream.d.ts.map +0 -1
- package/dist/src/streams/flows-config-stream.js +0 -49
- package/dist/src/streams/flows-stream.d.ts +0 -12
- package/dist/src/streams/flows-stream.d.ts.map +0 -1
- package/dist/src/streams/flows-stream.js +0 -35
- package/dist/src/streams/redis-logs-stream.d.ts +0 -31
- package/dist/src/streams/redis-logs-stream.d.ts.map +0 -1
- package/dist/src/streams/redis-logs-stream.js +0 -84
- package/dist/src/streams/stream-factory.d.ts +0 -3
- package/dist/src/streams/stream-factory.d.ts.map +0 -1
- package/dist/src/streams/stream-factory.js +0 -2
- package/dist/src/types/app-config-types.d.ts +0 -44
- package/dist/src/types/app-config-types.d.ts.map +0 -1
- package/dist/src/types/app-config-types.js +0 -2
- package/dist/src/types/flows-config-types.d.ts +0 -10
- package/dist/src/types/flows-config-types.d.ts.map +0 -1
- package/dist/src/types/flows-config-types.js +0 -2
- package/dist/src/types/flows-types.d.ts +0 -39
- package/dist/src/types/flows-types.d.ts.map +0 -1
- package/dist/src/types/flows-types.js +0 -2
- package/dist/src/types/generate-type-from-schema.d.ts +0 -3
- package/dist/src/types/generate-type-from-schema.d.ts.map +0 -1
- package/dist/src/types/generate-type-from-schema.js +0 -49
- package/dist/src/types/generate-types-from-response.d.ts +0 -3
- package/dist/src/types/generate-types-from-response.d.ts.map +0 -1
- package/dist/src/types/generate-types-from-response.js +0 -13
- package/dist/src/types/generate-types.d.ts +0 -13
- package/dist/src/types/generate-types.d.ts.map +0 -1
- package/dist/src/types/generate-types.js +0 -127
- package/dist/src/types/merge-schemas.d.ts +0 -5
- package/dist/src/types/merge-schemas.d.ts.map +0 -1
- package/dist/src/types/merge-schemas.js +0 -183
- package/dist/src/types/schema.types.d.ts +0 -9
- package/dist/src/types/schema.types.d.ts.map +0 -1
- package/dist/src/types/schema.types.js +0 -14
- package/dist/src/types-stream.d.ts +0 -42
- package/dist/src/types-stream.d.ts.map +0 -1
- package/dist/src/types-stream.js +0 -2
- package/dist/src/types.d.ts +0 -184
- package/dist/src/types.d.ts.map +0 -1
- package/dist/src/types.js +0 -17
- package/dist/src/utils.d.ts +0 -3
- package/dist/src/utils.d.ts.map +0 -1
- package/dist/src/utils.js +0 -12
- package/dist/src/validate-event-input.d.ts +0 -3
- package/dist/src/validate-event-input.d.ts.map +0 -1
- package/dist/src/validate-event-input.js +0 -74
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { globalLogger } from "./logger.mjs";
|
|
2
|
+
import { getLanguageBasedRunner } from "./language-runner.mjs";
|
|
3
|
+
import { ProcessManager } from "./process-communication/process-manager.mjs";
|
|
4
|
+
|
|
5
|
+
//#region src/get-step-config.ts
|
|
6
|
+
const getConfig = (file, projectRoot) => {
|
|
7
|
+
const { runner, command, args } = getLanguageBasedRunner(file, {
|
|
8
|
+
python: "get-config.py",
|
|
9
|
+
ruby: "get-config.rb",
|
|
10
|
+
node: {
|
|
11
|
+
js: "get-config.mjs",
|
|
12
|
+
ts: "get-config.ts"
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
return new Promise((resolve, reject) => {
|
|
16
|
+
let config = null;
|
|
17
|
+
const processManager = new ProcessManager({
|
|
18
|
+
command,
|
|
19
|
+
args: [
|
|
20
|
+
...args,
|
|
21
|
+
runner,
|
|
22
|
+
file
|
|
23
|
+
],
|
|
24
|
+
logger: globalLogger,
|
|
25
|
+
context: "Config",
|
|
26
|
+
projectRoot
|
|
27
|
+
});
|
|
28
|
+
processManager.spawn().then(() => {
|
|
29
|
+
processManager.onMessage((message) => {
|
|
30
|
+
config = message;
|
|
31
|
+
globalLogger.debug(`[Config] Read config via ${processManager.commType?.toUpperCase()}`, {
|
|
32
|
+
config,
|
|
33
|
+
communicationType: processManager.commType
|
|
34
|
+
});
|
|
35
|
+
resolve(config);
|
|
36
|
+
processManager.kill();
|
|
37
|
+
});
|
|
38
|
+
processManager.onProcessClose((code) => {
|
|
39
|
+
processManager.close();
|
|
40
|
+
if (config) return;
|
|
41
|
+
else if (code !== 0) reject(`Process exited with code ${code}`);
|
|
42
|
+
else if (!config) reject(`No config found for file ${file}`);
|
|
43
|
+
});
|
|
44
|
+
processManager.onProcessError((error) => {
|
|
45
|
+
processManager.close();
|
|
46
|
+
if (error.code === "ENOENT") reject(`Executable ${command} not found`);
|
|
47
|
+
else reject(error);
|
|
48
|
+
});
|
|
49
|
+
}).catch((error) => {
|
|
50
|
+
reject(`Failed to spawn process: ${error}`);
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
};
|
|
54
|
+
const getStepConfig = (file, projectRoot) => {
|
|
55
|
+
return getConfig(file, projectRoot);
|
|
56
|
+
};
|
|
57
|
+
const getStreamConfig = (file, projectRoot) => {
|
|
58
|
+
return getConfig(file, projectRoot);
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
//#endregion
|
|
62
|
+
export { getStepConfig, getStreamConfig };
|
|
63
|
+
//# sourceMappingURL=get-step-config.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-step-config.mjs","names":["config: T | null"],"sources":["../../src/get-step-config.ts"],"sourcesContent":["import { getLanguageBasedRunner } from './language-runner'\nimport { globalLogger } from './logger'\nimport { ProcessManager } from './process-communication/process-manager'\nimport type { StepConfig } from './types'\nimport type { StreamConfig } from './types-stream'\n\nconst getConfig = <T>(file: string, projectRoot?: string): Promise<T | null> => {\n const { runner, command, args } = getLanguageBasedRunner(file, {\n python: 'get-config.py',\n ruby: 'get-config.rb',\n node: { js: 'get-config.mjs', ts: 'get-config.ts' },\n })\n\n return new Promise((resolve, reject) => {\n let config: T | null = null\n\n const processManager = new ProcessManager({\n command,\n args: [...args, runner, file],\n logger: globalLogger,\n context: 'Config',\n projectRoot,\n })\n\n processManager\n .spawn()\n .then(() => {\n processManager.onMessage<T>((message) => {\n config = message\n globalLogger.debug(`[Config] Read config via ${processManager.commType?.toUpperCase()}`, {\n config,\n communicationType: processManager.commType,\n })\n resolve(config)\n processManager.kill()\n })\n\n processManager.onProcessClose((code) => {\n processManager.close()\n if (config) {\n return\n } else if (code !== 0) {\n reject(`Process exited with code ${code}`)\n } else if (!config) {\n reject(`No config found for file ${file}`)\n }\n })\n\n processManager.onProcessError((error) => {\n processManager.close()\n if (error.code === 'ENOENT') {\n reject(`Executable ${command} not found`)\n } else {\n reject(error)\n }\n })\n })\n .catch((error) => {\n reject(`Failed to spawn process: ${error}`)\n })\n })\n}\n\nexport const getStepConfig = (file: string, projectRoot?: string): Promise<StepConfig | null> => {\n return getConfig<StepConfig>(file, projectRoot)\n}\n\nexport const getStreamConfig = (file: string, projectRoot?: string): Promise<StreamConfig | null> => {\n return getConfig<StreamConfig>(file, projectRoot)\n}\n"],"mappings":";;;;;AAMA,MAAM,aAAgB,MAAc,gBAA4C;CAC9E,MAAM,EAAE,QAAQ,SAAS,SAAS,uBAAuB,MAAM;EAC7D,QAAQ;EACR,MAAM;EACN,MAAM;GAAE,IAAI;GAAkB,IAAI;GAAiB;EACpD,CAAC;AAEF,QAAO,IAAI,SAAS,SAAS,WAAW;EACtC,IAAIA,SAAmB;EAEvB,MAAM,iBAAiB,IAAI,eAAe;GACxC;GACA,MAAM;IAAC,GAAG;IAAM;IAAQ;IAAK;GAC7B,QAAQ;GACR,SAAS;GACT;GACD,CAAC;AAEF,iBACG,OAAO,CACP,WAAW;AACV,kBAAe,WAAc,YAAY;AACvC,aAAS;AACT,iBAAa,MAAM,4BAA4B,eAAe,UAAU,aAAa,IAAI;KACvF;KACA,mBAAmB,eAAe;KACnC,CAAC;AACF,YAAQ,OAAO;AACf,mBAAe,MAAM;KACrB;AAEF,kBAAe,gBAAgB,SAAS;AACtC,mBAAe,OAAO;AACtB,QAAI,OACF;aACS,SAAS,EAClB,QAAO,4BAA4B,OAAO;aACjC,CAAC,OACV,QAAO,4BAA4B,OAAO;KAE5C;AAEF,kBAAe,gBAAgB,UAAU;AACvC,mBAAe,OAAO;AACtB,QAAI,MAAM,SAAS,SACjB,QAAO,cAAc,QAAQ,YAAY;QAEzC,QAAO,MAAM;KAEf;IACF,CACD,OAAO,UAAU;AAChB,UAAO,4BAA4B,QAAQ;IAC3C;GACJ;;AAGJ,MAAa,iBAAiB,MAAc,gBAAqD;AAC/F,QAAO,UAAsB,MAAM,YAAY;;AAGjD,MAAa,mBAAmB,MAAc,gBAAuD;AACnG,QAAO,UAAwB,MAAM,YAAY"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
//#region src/get-step-language.ts
|
|
2
|
+
const getStepLanguage = (fileExtension) => {
|
|
3
|
+
if (!fileExtension) return;
|
|
4
|
+
if (fileExtension.endsWith(".js")) return "javascript";
|
|
5
|
+
if (fileExtension.endsWith(".ts")) return "typescript";
|
|
6
|
+
if (fileExtension.endsWith(".py")) return "python";
|
|
7
|
+
if (fileExtension.endsWith(".go")) return "go";
|
|
8
|
+
if (fileExtension.endsWith(".rb")) return "ruby";
|
|
9
|
+
if (fileExtension.endsWith(".php")) return "php";
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
//#endregion
|
|
13
|
+
export { getStepLanguage };
|
|
14
|
+
//# sourceMappingURL=get-step-language.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-step-language.mjs","names":[],"sources":["../../src/get-step-language.ts"],"sourcesContent":["export const getStepLanguage = (fileExtension?: string): string | undefined => {\n if (!fileExtension) return\n\n if (fileExtension.endsWith('.js')) {\n return 'javascript'\n }\n\n if (fileExtension.endsWith('.ts')) {\n return 'typescript'\n }\n\n if (fileExtension.endsWith('.py')) {\n return 'python'\n }\n\n if (fileExtension.endsWith('.go')) {\n return 'go'\n }\n\n if (fileExtension.endsWith('.rb')) {\n return 'ruby'\n }\n\n if (fileExtension.endsWith('.php')) {\n return 'php'\n }\n\n return\n}\n"],"mappings":";AAAA,MAAa,mBAAmB,kBAA+C;AAC7E,KAAI,CAAC,cAAe;AAEpB,KAAI,cAAc,SAAS,MAAM,CAC/B,QAAO;AAGT,KAAI,cAAc,SAAS,MAAM,CAC/B,QAAO;AAGT,KAAI,cAAc,SAAS,MAAM,CAC/B,QAAO;AAGT,KAAI,cAAc,SAAS,MAAM,CAC/B,QAAO;AAGT,KAAI,cAAc,SAAS,MAAM,CAC/B,QAAO;AAGT,KAAI,cAAc,SAAS,OAAO,CAChC,QAAO"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ApiRouteConfig, CronConfig, EventConfig, NoopConfig, Step } from "./types.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/guards.d.ts
|
|
4
|
+
declare const isApiStep: (step: Step) => step is Step<ApiRouteConfig>;
|
|
5
|
+
declare const isEventStep: (step: Step) => step is Step<EventConfig>;
|
|
6
|
+
declare const isNoopStep: (step: Step) => step is Step<NoopConfig>;
|
|
7
|
+
declare const isCronStep: (step: Step) => step is Step<CronConfig>;
|
|
8
|
+
//#endregion
|
|
9
|
+
export { isApiStep, isCronStep, isEventStep, isNoopStep };
|
|
10
|
+
//# sourceMappingURL=guards.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guards.d.mts","names":[],"sources":["../../src/guards.ts"],"sourcesContent":[],"mappings":";;;cAEa,kBAAmB,iBAAe,KAAK;cACvC,oBAAqB,iBAAe,KAAK;AADzC,cAEA,UAFoF,EAAA,CAAA,IAAA,EAEhE,IAFgE,EAAA,GAAA,IAAA,IAEjD,IAFiD,CAE5C,UAF4C,CAAA;AAAjE,cAGnB,UAHmB,EAAA,CAAA,IAAA,EAGC,IAHD,EAAA,GAAA,IAAA,IAGgB,IAHhB,CAGqB,UAHrB,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
//#region src/guards.ts
|
|
2
|
+
const isApiStep = (step) => step.config.type === "api";
|
|
3
|
+
const isEventStep = (step) => step.config.type === "event";
|
|
4
|
+
const isNoopStep = (step) => step.config.type === "noop";
|
|
5
|
+
const isCronStep = (step) => step.config.type === "cron";
|
|
6
|
+
|
|
7
|
+
//#endregion
|
|
8
|
+
export { isApiStep, isCronStep, isEventStep, isNoopStep };
|
|
9
|
+
//# sourceMappingURL=guards.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guards.mjs","names":[],"sources":["../../src/guards.ts"],"sourcesContent":["import type { ApiRouteConfig, CronConfig, EventConfig, NoopConfig, Step } from './types'\n\nexport const isApiStep = (step: Step): step is Step<ApiRouteConfig> => step.config.type === 'api'\nexport const isEventStep = (step: Step): step is Step<EventConfig> => step.config.type === 'event'\nexport const isNoopStep = (step: Step): step is Step<NoopConfig> => step.config.type === 'noop'\nexport const isCronStep = (step: Step): step is Step<CronConfig> => step.config.type === 'cron'\n"],"mappings":";AAEA,MAAa,aAAa,SAA6C,KAAK,OAAO,SAAS;AAC5F,MAAa,eAAe,SAA0C,KAAK,OAAO,SAAS;AAC3F,MAAa,cAAc,SAAyC,KAAK,OAAO,SAAS;AACzF,MAAa,cAAc,SAAyC,KAAK,OAAO,SAAS"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { isApiStep, isCronStep, isEventStep, isNoopStep } from "../guards.mjs";
|
|
2
|
+
import { getStepLanguage } from "../get-step-language.mjs";
|
|
3
|
+
import { v5 } from "uuid";
|
|
4
|
+
import fs from "fs";
|
|
5
|
+
import path from "path";
|
|
6
|
+
|
|
7
|
+
//#region src/helper/flows-helper.ts
|
|
8
|
+
const getNodeComponentPath = (filePath) => {
|
|
9
|
+
const filePathWithoutExtension = filePath.replace(/\.[^/.]+$/, "");
|
|
10
|
+
const tsxPath = filePathWithoutExtension + ".tsx";
|
|
11
|
+
const jsxPath = filePathWithoutExtension + ".jsx";
|
|
12
|
+
if (fs.existsSync(tsxPath)) return tsxPath;
|
|
13
|
+
if (fs.existsSync(jsxPath)) return jsxPath;
|
|
14
|
+
};
|
|
15
|
+
const getRelativePath = (filePath) => {
|
|
16
|
+
const baseDir = process.cwd();
|
|
17
|
+
return path.relative(baseDir, filePath);
|
|
18
|
+
};
|
|
19
|
+
const createEdge = (sourceId, targetId, topic, label, variant, conditional) => ({
|
|
20
|
+
id: `${sourceId}-${targetId}`,
|
|
21
|
+
source: sourceId,
|
|
22
|
+
target: targetId,
|
|
23
|
+
data: {
|
|
24
|
+
variant,
|
|
25
|
+
label,
|
|
26
|
+
topic,
|
|
27
|
+
labelVariant: conditional ? "conditional" : "default"
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
const processEmit = (emit) => {
|
|
31
|
+
const isString = typeof emit === "string";
|
|
32
|
+
return {
|
|
33
|
+
topic: isString ? emit : emit.topic,
|
|
34
|
+
label: isString ? void 0 : emit.label,
|
|
35
|
+
conditional: isString ? void 0 : emit.conditional
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
const createEdgesForEmits = (sourceStep, targetSteps, emits, variant) => {
|
|
39
|
+
const edges = [];
|
|
40
|
+
emits.forEach((emit) => {
|
|
41
|
+
const { topic, label, conditional } = processEmit(emit);
|
|
42
|
+
targetSteps.forEach((targetStep) => {
|
|
43
|
+
if (targetStep.subscribes?.includes(topic) || targetStep.virtualSubscribes?.includes(topic)) edges.push(createEdge(sourceStep.id, targetStep.id, topic, label, variant, conditional));
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
return edges;
|
|
47
|
+
};
|
|
48
|
+
const createBaseStepResponse = (step, id) => ({
|
|
49
|
+
id,
|
|
50
|
+
name: step.config.name,
|
|
51
|
+
description: step.config.description,
|
|
52
|
+
nodeComponentPath: getNodeComponentPath(step.filePath),
|
|
53
|
+
filePath: getRelativePath(step.filePath),
|
|
54
|
+
language: getStepLanguage(step.filePath),
|
|
55
|
+
virtualEmits: step.config.virtualEmits ?? void 0,
|
|
56
|
+
virtualSubscribes: step.config.virtualSubscribes ?? void 0
|
|
57
|
+
});
|
|
58
|
+
const createApiStepResponse = (step, id) => {
|
|
59
|
+
if (!isApiStep(step)) throw new Error("Attempted to create API step response with non-API step");
|
|
60
|
+
return {
|
|
61
|
+
...createBaseStepResponse(step, id),
|
|
62
|
+
type: "api",
|
|
63
|
+
emits: step.config.emits,
|
|
64
|
+
subscribes: step.config.virtualSubscribes ?? void 0,
|
|
65
|
+
action: "webhook",
|
|
66
|
+
webhookUrl: `${step.config.method} ${step.config.path}`,
|
|
67
|
+
bodySchema: step.config.bodySchema ?? void 0
|
|
68
|
+
};
|
|
69
|
+
};
|
|
70
|
+
const createEventStepResponse = (step, id) => {
|
|
71
|
+
if (!isEventStep(step)) throw new Error("Attempted to create Event step response with non-Event step");
|
|
72
|
+
return {
|
|
73
|
+
...createBaseStepResponse(step, id),
|
|
74
|
+
type: "event",
|
|
75
|
+
emits: step.config.emits,
|
|
76
|
+
subscribes: step.config.subscribes
|
|
77
|
+
};
|
|
78
|
+
};
|
|
79
|
+
const createNoopStepResponse = (step, id) => {
|
|
80
|
+
if (!isNoopStep(step)) throw new Error("Attempted to create Noop step response with non-Noop step");
|
|
81
|
+
return {
|
|
82
|
+
...createBaseStepResponse(step, id),
|
|
83
|
+
type: "noop",
|
|
84
|
+
emits: [],
|
|
85
|
+
subscribes: step.config.virtualSubscribes
|
|
86
|
+
};
|
|
87
|
+
};
|
|
88
|
+
const createCronStepResponse = (step, id) => {
|
|
89
|
+
if (!isCronStep(step)) throw new Error("Attempted to create Cron step response with non-Cron step");
|
|
90
|
+
return {
|
|
91
|
+
...createBaseStepResponse(step, id),
|
|
92
|
+
type: "cron",
|
|
93
|
+
emits: step.config.emits,
|
|
94
|
+
cronExpression: step.config.cron
|
|
95
|
+
};
|
|
96
|
+
};
|
|
97
|
+
const STEP_NAMESPACE = "7f1c3ff2-9b00-4d0a-bdd7-efb8bca49d4f";
|
|
98
|
+
const generateStepId = (filePath) => {
|
|
99
|
+
return v5(filePath, STEP_NAMESPACE);
|
|
100
|
+
};
|
|
101
|
+
const createStepResponse = (step) => {
|
|
102
|
+
const id = generateStepId(step.filePath);
|
|
103
|
+
if (isApiStep(step)) return createApiStepResponse(step, id);
|
|
104
|
+
if (isEventStep(step)) return createEventStepResponse(step, id);
|
|
105
|
+
if (isNoopStep(step)) return createNoopStepResponse(step, id);
|
|
106
|
+
if (isCronStep(step)) return createCronStepResponse(step, id);
|
|
107
|
+
throw new Error(`Unknown step type for step: ${step.config.name}`);
|
|
108
|
+
};
|
|
109
|
+
const createEdgesForStep = (sourceStep, allSteps) => {
|
|
110
|
+
const regularEdges = createEdgesForEmits(sourceStep, allSteps, sourceStep.emits, "event");
|
|
111
|
+
const virtualEdges = sourceStep.virtualEmits ? createEdgesForEmits(sourceStep, allSteps, sourceStep.virtualEmits, "virtual") : [];
|
|
112
|
+
return [...regularEdges, ...virtualEdges];
|
|
113
|
+
};
|
|
114
|
+
const generateFlow = (flowId, flowSteps) => {
|
|
115
|
+
const steps = flowSteps.map(createStepResponse);
|
|
116
|
+
return {
|
|
117
|
+
id: flowId,
|
|
118
|
+
name: flowId,
|
|
119
|
+
steps,
|
|
120
|
+
edges: steps.flatMap((step) => createEdgesForStep(step, steps))
|
|
121
|
+
};
|
|
122
|
+
};
|
|
123
|
+
|
|
124
|
+
//#endregion
|
|
125
|
+
export { generateFlow, generateStepId };
|
|
126
|
+
//# sourceMappingURL=flows-helper.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flows-helper.mjs","names":["edges: FlowEdge[]","uuidv5"],"sources":["../../../src/helper/flows-helper.ts"],"sourcesContent":["// Helper functions\n\nimport fs from 'fs'\nimport path from 'path'\nimport { v5 as uuidv5 } from 'uuid'\nimport { getStepLanguage } from '../get-step-language'\nimport { isApiStep, isCronStep, isEventStep, isNoopStep } from '../guards'\nimport type { Emit, Step } from '../types'\nimport type { FlowEdge, FlowResponse, FlowStepResponse } from '../types/flows-types'\n\nconst getNodeComponentPath = (filePath: string): string | undefined => {\n const filePathWithoutExtension = filePath.replace(/\\.[^/.]+$/, '')\n const tsxPath = filePathWithoutExtension + '.tsx'\n const jsxPath = filePathWithoutExtension + '.jsx'\n\n if (fs.existsSync(tsxPath)) return tsxPath\n if (fs.existsSync(jsxPath)) return jsxPath\n}\n\nconst getRelativePath = (filePath: string): string => {\n const baseDir = process.cwd()\n return path.relative(baseDir, filePath)\n}\n\nconst createEdge = (\n sourceId: string,\n targetId: string,\n topic: string,\n label: string | undefined,\n variant: 'event' | 'virtual',\n conditional?: boolean,\n): FlowEdge => ({\n id: `${sourceId}-${targetId}`,\n source: sourceId,\n target: targetId,\n data: {\n variant,\n label,\n topic,\n labelVariant: conditional ? 'conditional' : 'default',\n },\n})\n\nconst processEmit = (emit: Emit): { topic: string; label?: string; conditional?: boolean } => {\n const isString = typeof emit === 'string'\n\n return {\n topic: isString ? emit : emit.topic,\n label: isString ? undefined : emit.label,\n conditional: isString ? undefined : emit.conditional,\n }\n}\n\nconst createEdgesForEmits = (\n sourceStep: FlowStepResponse,\n targetSteps: FlowStepResponse[],\n emits: Emit[],\n variant: 'event' | 'virtual',\n): FlowEdge[] => {\n const edges: FlowEdge[] = []\n\n emits.forEach((emit) => {\n const { topic, label, conditional } = processEmit(emit)\n\n targetSteps.forEach((targetStep) => {\n if (targetStep.subscribes?.includes(topic) || targetStep.virtualSubscribes?.includes(topic)) {\n edges.push(createEdge(sourceStep.id, targetStep.id, topic, label, variant, conditional))\n }\n })\n })\n\n return edges\n}\n\nconst createBaseStepResponse = (\n step: Step,\n id: string,\n): Pick<\n FlowStepResponse,\n 'name' | 'description' | 'nodeComponentPath' | 'language' | 'id' | 'filePath' | 'virtualEmits' | 'virtualSubscribes'\n> => ({\n id,\n name: step.config.name,\n description: step.config.description,\n nodeComponentPath: getNodeComponentPath(step.filePath),\n filePath: getRelativePath(step.filePath),\n language: getStepLanguage(step.filePath),\n\n virtualEmits: step.config.virtualEmits ?? undefined,\n virtualSubscribes: step.config.virtualSubscribes ?? undefined,\n})\n\nconst createApiStepResponse = (step: Step, id: string): FlowStepResponse => {\n if (!isApiStep(step)) {\n throw new Error('Attempted to create API step response with non-API step')\n }\n\n return {\n ...createBaseStepResponse(step, id),\n type: 'api',\n emits: step.config.emits,\n subscribes: step.config.virtualSubscribes ?? undefined,\n action: 'webhook',\n webhookUrl: `${step.config.method} ${step.config.path}`,\n bodySchema: step.config.bodySchema ?? undefined,\n }\n}\n\nconst createEventStepResponse = (step: Step, id: string): FlowStepResponse => {\n if (!isEventStep(step)) {\n throw new Error('Attempted to create Event step response with non-Event step')\n }\n\n return {\n ...createBaseStepResponse(step, id),\n type: 'event',\n emits: step.config.emits,\n subscribes: step.config.subscribes,\n }\n}\n\nconst createNoopStepResponse = (step: Step, id: string): FlowStepResponse => {\n if (!isNoopStep(step)) {\n throw new Error('Attempted to create Noop step response with non-Noop step')\n }\n\n return {\n ...createBaseStepResponse(step, id),\n type: 'noop',\n emits: [],\n subscribes: step.config.virtualSubscribes,\n }\n}\n\nconst createCronStepResponse = (step: Step, id: string): FlowStepResponse => {\n if (!isCronStep(step)) {\n throw new Error('Attempted to create Cron step response with non-Cron step')\n }\n\n return {\n ...createBaseStepResponse(step, id),\n type: 'cron',\n emits: step.config.emits,\n cronExpression: step.config.cron,\n }\n}\n\nexport const STEP_NAMESPACE = '7f1c3ff2-9b00-4d0a-bdd7-efb8bca49d4f'\nexport const generateStepId = (filePath: string): string => {\n return uuidv5(filePath, STEP_NAMESPACE)\n}\n\nconst createStepResponse = (step: Step): FlowStepResponse => {\n const id = generateStepId(step.filePath)\n if (isApiStep(step)) return createApiStepResponse(step, id)\n if (isEventStep(step)) return createEventStepResponse(step, id)\n if (isNoopStep(step)) return createNoopStepResponse(step, id)\n if (isCronStep(step)) return createCronStepResponse(step, id)\n\n throw new Error(`Unknown step type for step: ${step.config.name}`)\n}\n\nconst createEdgesForStep = (sourceStep: FlowStepResponse, allSteps: FlowStepResponse[]): FlowEdge[] => {\n const regularEdges = createEdgesForEmits(sourceStep, allSteps, sourceStep.emits, 'event')\n const virtualEdges = sourceStep.virtualEmits\n ? createEdgesForEmits(sourceStep, allSteps, sourceStep.virtualEmits, 'virtual')\n : []\n\n return [...regularEdges, ...virtualEdges]\n}\n\nexport const generateFlow = (flowId: string, flowSteps: Step[]): FlowResponse => {\n const steps = flowSteps.map(createStepResponse)\n\n const edges = steps.flatMap((step) => createEdgesForStep(step, steps))\n\n return { id: flowId, name: flowId, steps, edges }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
//#region src/infrastructure-validator/defaults.ts
|
|
2
|
+
const DEFAULT_QUEUE_CONFIG = {
|
|
3
|
+
type: "standard",
|
|
4
|
+
maxRetries: 3,
|
|
5
|
+
visibilityTimeout: 900,
|
|
6
|
+
delaySeconds: 0
|
|
7
|
+
};
|
|
8
|
+
function getQueueConfigWithDefaults(infrastructure) {
|
|
9
|
+
return {
|
|
10
|
+
...DEFAULT_QUEUE_CONFIG,
|
|
11
|
+
...infrastructure?.queue || {}
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
//#endregion
|
|
16
|
+
export { DEFAULT_QUEUE_CONFIG, getQueueConfigWithDefaults };
|
|
17
|
+
//# sourceMappingURL=defaults.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaults.mjs","names":["DEFAULT_QUEUE_CONFIG: QueueConfig"],"sources":["../../../src/infrastructure-validator/defaults.ts"],"sourcesContent":["import type { InfrastructureConfig, QueueConfig } from '../types'\n\nexport const DEFAULT_QUEUE_CONFIG: QueueConfig = {\n type: 'standard',\n maxRetries: 3,\n visibilityTimeout: 900,\n delaySeconds: 0,\n}\n\nexport function getQueueConfigWithDefaults(infrastructure?: InfrastructureConfig): QueueConfig {\n return {\n ...DEFAULT_QUEUE_CONFIG,\n ...(infrastructure?.queue || {}),\n }\n}\n"],"mappings":";AAEA,MAAaA,uBAAoC;CAC/C,MAAM;CACN,YAAY;CACZ,mBAAmB;CACnB,cAAc;CACf;AAED,SAAgB,2BAA2B,gBAAoD;AAC7F,QAAO;EACL,GAAG;EACH,GAAI,gBAAgB,SAAS,EAAE;EAChC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
|
|
3
|
+
//#region src/infrastructure-validator/schemas.ts
|
|
4
|
+
const AWS_LAMBDA_LIMITS = {
|
|
5
|
+
MIN_RAM_MB: 128,
|
|
6
|
+
MAX_RAM_MB: 10240,
|
|
7
|
+
MIN_TIMEOUT_SECONDS: 1,
|
|
8
|
+
MAX_TIMEOUT_SECONDS: 900
|
|
9
|
+
};
|
|
10
|
+
const AWS_LAMBDA_CPU_RATIO = {
|
|
11
|
+
128: .0625,
|
|
12
|
+
256: .125,
|
|
13
|
+
512: .25,
|
|
14
|
+
1024: .5,
|
|
15
|
+
1536: .75,
|
|
16
|
+
2048: 1,
|
|
17
|
+
3008: 1.5,
|
|
18
|
+
4096: 2,
|
|
19
|
+
5120: 2.5,
|
|
20
|
+
6144: 3,
|
|
21
|
+
7168: 3.5,
|
|
22
|
+
8192: 4,
|
|
23
|
+
9216: 4.5,
|
|
24
|
+
10240: 5
|
|
25
|
+
};
|
|
26
|
+
function getProportionalCpu(ramMb) {
|
|
27
|
+
const ramValues = Object.keys(AWS_LAMBDA_CPU_RATIO).map(Number).sort((a, b) => a - b);
|
|
28
|
+
const exact = AWS_LAMBDA_CPU_RATIO[ramMb];
|
|
29
|
+
if (exact !== void 0) return exact;
|
|
30
|
+
for (let i = 0; i < ramValues.length - 1; i++) {
|
|
31
|
+
const lower = ramValues[i];
|
|
32
|
+
const upper = ramValues[i + 1];
|
|
33
|
+
if (ramMb > lower && ramMb < upper) {
|
|
34
|
+
const lowerCpu = AWS_LAMBDA_CPU_RATIO[lower];
|
|
35
|
+
const upperCpu = AWS_LAMBDA_CPU_RATIO[upper];
|
|
36
|
+
const ratio = (ramMb - lower) / (upper - lower);
|
|
37
|
+
return lowerCpu + (upperCpu - lowerCpu) * ratio;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return ramMb <= ramValues[0] ? AWS_LAMBDA_CPU_RATIO[ramValues[0]] : AWS_LAMBDA_CPU_RATIO[ramValues[ramValues.length - 1]];
|
|
41
|
+
}
|
|
42
|
+
const handlerBaseSchema = z.object({
|
|
43
|
+
ram: z.number().min(AWS_LAMBDA_LIMITS.MIN_RAM_MB, `RAM must be at least ${AWS_LAMBDA_LIMITS.MIN_RAM_MB} MB`).max(AWS_LAMBDA_LIMITS.MAX_RAM_MB, `RAM cannot exceed ${AWS_LAMBDA_LIMITS.MAX_RAM_MB} MB`),
|
|
44
|
+
timeout: z.number().min(AWS_LAMBDA_LIMITS.MIN_TIMEOUT_SECONDS, `Timeout must be at least ${AWS_LAMBDA_LIMITS.MIN_TIMEOUT_SECONDS}s`).max(AWS_LAMBDA_LIMITS.MAX_TIMEOUT_SECONDS, `Timeout cannot exceed ${AWS_LAMBDA_LIMITS.MAX_TIMEOUT_SECONDS}s`),
|
|
45
|
+
cpu: z.number().optional()
|
|
46
|
+
});
|
|
47
|
+
const handlerSchema = handlerBaseSchema.partial().superRefine((handler, ctx) => {
|
|
48
|
+
if (handler.cpu === void 0 || handler.ram === void 0) return;
|
|
49
|
+
const expectedCpu = getProportionalCpu(handler.ram);
|
|
50
|
+
if (Math.abs(handler.cpu - expectedCpu) > .1) ctx.addIssue({
|
|
51
|
+
code: z.ZodIssueCode.custom,
|
|
52
|
+
path: ["handler", "cpu"],
|
|
53
|
+
message: `CPU (${handler.cpu} vCPU) is not proportional to RAM (${handler.ram} MB). Expected approximately ${expectedCpu.toFixed(2)} vCPU`
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
const queueSchema = z.object({
|
|
57
|
+
type: z.enum(["standard", "fifo"]),
|
|
58
|
+
visibilityTimeout: z.number(),
|
|
59
|
+
maxRetries: z.number().min(0, "maxRetries cannot be negative"),
|
|
60
|
+
delaySeconds: z.number().min(0, "delaySeconds cannot be negative").max(900, "delaySeconds cannot exceed 900 seconds (15 minutes)").optional()
|
|
61
|
+
});
|
|
62
|
+
const infrastructureSchema = z.object({
|
|
63
|
+
handler: handlerSchema.optional(),
|
|
64
|
+
queue: queueSchema.partial().optional()
|
|
65
|
+
}).superRefine((config, ctx) => {
|
|
66
|
+
if (config.queue?.visibilityTimeout !== void 0 && config.handler?.timeout !== void 0) {
|
|
67
|
+
if (config.queue.visibilityTimeout <= config.handler.timeout) ctx.addIssue({
|
|
68
|
+
code: z.ZodIssueCode.custom,
|
|
69
|
+
path: ["queue", "visibilityTimeout"],
|
|
70
|
+
message: `Visibility timeout (${config.queue.visibilityTimeout}s) must be greater than handler timeout (${config.handler.timeout}s) to prevent premature message redelivery`
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
//#endregion
|
|
76
|
+
export { AWS_LAMBDA_CPU_RATIO, AWS_LAMBDA_LIMITS, getProportionalCpu, handlerBaseSchema, handlerSchema, infrastructureSchema, queueSchema };
|
|
77
|
+
//# sourceMappingURL=schemas.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.mjs","names":["AWS_LAMBDA_CPU_RATIO: Record<number, number>"],"sources":["../../../src/infrastructure-validator/schemas.ts"],"sourcesContent":["import { z } from 'zod'\n\nexport const AWS_LAMBDA_LIMITS = {\n MIN_RAM_MB: 128,\n MAX_RAM_MB: 10240,\n MIN_TIMEOUT_SECONDS: 1,\n MAX_TIMEOUT_SECONDS: 900,\n} as const\n\nexport const AWS_LAMBDA_CPU_RATIO: Record<number, number> = {\n 128: 0.0625,\n 256: 0.125,\n 512: 0.25,\n 1024: 0.5,\n 1536: 0.75,\n 2048: 1,\n 3008: 1.5,\n 4096: 2,\n 5120: 2.5,\n 6144: 3,\n 7168: 3.5,\n 8192: 4,\n 9216: 4.5,\n 10240: 5,\n}\n\nexport function getProportionalCpu(ramMb: number): number {\n const ramValues = Object.keys(AWS_LAMBDA_CPU_RATIO)\n .map(Number)\n .sort((a, b) => a - b)\n\n const exact = AWS_LAMBDA_CPU_RATIO[ramMb]\n if (exact !== undefined) {\n return exact\n }\n\n for (let i = 0; i < ramValues.length - 1; i++) {\n const lower = ramValues[i]\n const upper = ramValues[i + 1]\n\n if (ramMb > lower && ramMb < upper) {\n const lowerCpu = AWS_LAMBDA_CPU_RATIO[lower]\n const upperCpu = AWS_LAMBDA_CPU_RATIO[upper]\n const ratio = (ramMb - lower) / (upper - lower)\n return lowerCpu + (upperCpu - lowerCpu) * ratio\n }\n }\n\n return ramMb <= ramValues[0]\n ? AWS_LAMBDA_CPU_RATIO[ramValues[0]]\n : AWS_LAMBDA_CPU_RATIO[ramValues[ramValues.length - 1]]\n}\n\nexport const handlerBaseSchema = z.object({\n ram: z\n .number()\n .min(AWS_LAMBDA_LIMITS.MIN_RAM_MB, `RAM must be at least ${AWS_LAMBDA_LIMITS.MIN_RAM_MB} MB`)\n .max(AWS_LAMBDA_LIMITS.MAX_RAM_MB, `RAM cannot exceed ${AWS_LAMBDA_LIMITS.MAX_RAM_MB} MB`),\n timeout: z\n .number()\n .min(AWS_LAMBDA_LIMITS.MIN_TIMEOUT_SECONDS, `Timeout must be at least ${AWS_LAMBDA_LIMITS.MIN_TIMEOUT_SECONDS}s`)\n .max(AWS_LAMBDA_LIMITS.MAX_TIMEOUT_SECONDS, `Timeout cannot exceed ${AWS_LAMBDA_LIMITS.MAX_TIMEOUT_SECONDS}s`),\n cpu: z.number().optional(),\n})\n\nexport const handlerSchema = handlerBaseSchema.partial().superRefine((handler, ctx) => {\n if (handler.cpu === undefined || handler.ram === undefined) {\n return\n }\n\n const expectedCpu = getProportionalCpu(handler.ram)\n const tolerance = 0.1\n\n if (Math.abs(handler.cpu - expectedCpu) > tolerance) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['handler', 'cpu'],\n message: `CPU (${handler.cpu} vCPU) is not proportional to RAM (${handler.ram} MB). Expected approximately ${expectedCpu.toFixed(2)} vCPU`,\n })\n }\n})\n\nexport const queueSchema = z.object({\n type: z.enum(['standard', 'fifo']),\n visibilityTimeout: z.number(),\n maxRetries: z.number().min(0, 'maxRetries cannot be negative'),\n delaySeconds: z\n .number()\n .min(0, 'delaySeconds cannot be negative')\n .max(900, 'delaySeconds cannot exceed 900 seconds (15 minutes)')\n .optional(),\n})\n\nexport const infrastructureSchema = z\n .object({\n handler: handlerSchema.optional(),\n queue: queueSchema.partial().optional(),\n })\n .superRefine((config, ctx) => {\n if (config.queue?.visibilityTimeout !== undefined && config.handler?.timeout !== undefined) {\n if (config.queue.visibilityTimeout <= config.handler.timeout) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['queue', 'visibilityTimeout'],\n message: `Visibility timeout (${config.queue.visibilityTimeout}s) must be greater than handler timeout (${config.handler.timeout}s) to prevent premature message redelivery`,\n })\n }\n }\n })\n"],"mappings":";;;AAEA,MAAa,oBAAoB;CAC/B,YAAY;CACZ,YAAY;CACZ,qBAAqB;CACrB,qBAAqB;CACtB;AAED,MAAaA,uBAA+C;CAC1D,KAAK;CACL,KAAK;CACL,KAAK;CACL,MAAM;CACN,MAAM;CACN,MAAM;CACN,MAAM;CACN,MAAM;CACN,MAAM;CACN,MAAM;CACN,MAAM;CACN,MAAM;CACN,MAAM;CACN,OAAO;CACR;AAED,SAAgB,mBAAmB,OAAuB;CACxD,MAAM,YAAY,OAAO,KAAK,qBAAqB,CAChD,IAAI,OAAO,CACX,MAAM,GAAG,MAAM,IAAI,EAAE;CAExB,MAAM,QAAQ,qBAAqB;AACnC,KAAI,UAAU,OACZ,QAAO;AAGT,MAAK,IAAI,IAAI,GAAG,IAAI,UAAU,SAAS,GAAG,KAAK;EAC7C,MAAM,QAAQ,UAAU;EACxB,MAAM,QAAQ,UAAU,IAAI;AAE5B,MAAI,QAAQ,SAAS,QAAQ,OAAO;GAClC,MAAM,WAAW,qBAAqB;GACtC,MAAM,WAAW,qBAAqB;GACtC,MAAM,SAAS,QAAQ,UAAU,QAAQ;AACzC,UAAO,YAAY,WAAW,YAAY;;;AAI9C,QAAO,SAAS,UAAU,KACtB,qBAAqB,UAAU,MAC/B,qBAAqB,UAAU,UAAU,SAAS;;AAGxD,MAAa,oBAAoB,EAAE,OAAO;CACxC,KAAK,EACF,QAAQ,CACR,IAAI,kBAAkB,YAAY,wBAAwB,kBAAkB,WAAW,KAAK,CAC5F,IAAI,kBAAkB,YAAY,qBAAqB,kBAAkB,WAAW,KAAK;CAC5F,SAAS,EACN,QAAQ,CACR,IAAI,kBAAkB,qBAAqB,4BAA4B,kBAAkB,oBAAoB,GAAG,CAChH,IAAI,kBAAkB,qBAAqB,yBAAyB,kBAAkB,oBAAoB,GAAG;CAChH,KAAK,EAAE,QAAQ,CAAC,UAAU;CAC3B,CAAC;AAEF,MAAa,gBAAgB,kBAAkB,SAAS,CAAC,aAAa,SAAS,QAAQ;AACrF,KAAI,QAAQ,QAAQ,UAAa,QAAQ,QAAQ,OAC/C;CAGF,MAAM,cAAc,mBAAmB,QAAQ,IAAI;AAGnD,KAAI,KAAK,IAAI,QAAQ,MAAM,YAAY,GAFrB,GAGhB,KAAI,SAAS;EACX,MAAM,EAAE,aAAa;EACrB,MAAM,CAAC,WAAW,MAAM;EACxB,SAAS,QAAQ,QAAQ,IAAI,qCAAqC,QAAQ,IAAI,+BAA+B,YAAY,QAAQ,EAAE,CAAC;EACrI,CAAC;EAEJ;AAEF,MAAa,cAAc,EAAE,OAAO;CAClC,MAAM,EAAE,KAAK,CAAC,YAAY,OAAO,CAAC;CAClC,mBAAmB,EAAE,QAAQ;CAC7B,YAAY,EAAE,QAAQ,CAAC,IAAI,GAAG,gCAAgC;CAC9D,cAAc,EACX,QAAQ,CACR,IAAI,GAAG,kCAAkC,CACzC,IAAI,KAAK,sDAAsD,CAC/D,UAAU;CACd,CAAC;AAEF,MAAa,uBAAuB,EACjC,OAAO;CACN,SAAS,cAAc,UAAU;CACjC,OAAO,YAAY,SAAS,CAAC,UAAU;CACxC,CAAC,CACD,aAAa,QAAQ,QAAQ;AAC5B,KAAI,OAAO,OAAO,sBAAsB,UAAa,OAAO,SAAS,YAAY,QAC/E;MAAI,OAAO,MAAM,qBAAqB,OAAO,QAAQ,QACnD,KAAI,SAAS;GACX,MAAM,EAAE,aAAa;GACrB,MAAM,CAAC,SAAS,oBAAoB;GACpC,SAAS,uBAAuB,OAAO,MAAM,kBAAkB,2CAA2C,OAAO,QAAQ,QAAQ;GAClI,CAAC;;EAGN"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
//#region src/infrastructure-validator/types.d.ts
|
|
2
|
+
type InfrastructureValidationError = {
|
|
3
|
+
path: string;
|
|
4
|
+
message: string;
|
|
5
|
+
};
|
|
6
|
+
type InfrastructureValidationResult = {
|
|
7
|
+
success: true;
|
|
8
|
+
} | {
|
|
9
|
+
success: false;
|
|
10
|
+
errors?: InfrastructureValidationError[];
|
|
11
|
+
};
|
|
12
|
+
//#endregion
|
|
13
|
+
export { InfrastructureValidationError, InfrastructureValidationResult };
|
|
14
|
+
//# sourceMappingURL=types.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.mts","names":[],"sources":["../../../src/infrastructure-validator/types.ts"],"sourcesContent":[],"mappings":";KAAY,6BAAA;EAAA,IAAA,EAAA,MAAA;EAKA,OAAA,EAAA,MAAA;;KAAA,8BAAA;;;;WAMG"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { InfrastructureValidationResult } from "./types.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/infrastructure-validator/validations.d.ts
|
|
4
|
+
declare const validateInfrastructureConfig: (infrastructureConfig: unknown) => InfrastructureValidationResult;
|
|
5
|
+
//#endregion
|
|
6
|
+
export { validateInfrastructureConfig };
|
|
7
|
+
//# sourceMappingURL=validations.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validations.d.mts","names":[],"sources":["../../../src/infrastructure-validator/validations.ts"],"sourcesContent":[],"mappings":";;;cAuCa,iEAAgE"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { infrastructureSchema } from "./schemas.mjs";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
|
|
4
|
+
//#region src/infrastructure-validator/validations.ts
|
|
5
|
+
const validateInfrastructureConfig = (infrastructureConfig) => {
|
|
6
|
+
try {
|
|
7
|
+
infrastructureSchema.parse(infrastructureConfig);
|
|
8
|
+
return { success: true };
|
|
9
|
+
} catch (error) {
|
|
10
|
+
if (error instanceof z.ZodError) return {
|
|
11
|
+
success: false,
|
|
12
|
+
errors: error.issues.map((err) => ({
|
|
13
|
+
path: err.path.length > 0 ? err.path.join(".") : "infrastructure",
|
|
14
|
+
message: err.message
|
|
15
|
+
}))
|
|
16
|
+
};
|
|
17
|
+
return {
|
|
18
|
+
success: false,
|
|
19
|
+
errors: [{
|
|
20
|
+
path: "infrastructure",
|
|
21
|
+
message: `Unexpected validation error: ${error instanceof Error ? error.message : "Unknown error"}`
|
|
22
|
+
}]
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
//#endregion
|
|
28
|
+
export { validateInfrastructureConfig };
|
|
29
|
+
//# sourceMappingURL=validations.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validations.mjs","names":[],"sources":["../../../src/infrastructure-validator/validations.ts"],"sourcesContent":["import { z } from 'zod'\nimport { infrastructureSchema, queueSchema } from './schemas'\nimport type {\n InfrastructureValidationError,\n InfrastructureValidationResult,\n QueueValidationError,\n QueueValidationResult,\n} from './types'\n\nexport const validateQueueConfig = (queueConfig: unknown): QueueValidationResult => {\n try {\n const schema = queueSchema\n schema.parse(queueConfig)\n\n return { success: true }\n } catch (error) {\n if (error instanceof z.ZodError) {\n const errors: QueueValidationError[] = error.issues.map((err) => ({\n path: err.path.length > 0 ? err.path.join('.') : 'queue',\n message: err.message,\n }))\n\n return {\n success: false,\n errors,\n }\n }\n\n return {\n success: false,\n errors: [\n {\n path: 'queue',\n message: `Unexpected validation error: ${error instanceof Error ? error.message : 'Unknown error'}`,\n },\n ],\n }\n }\n}\nexport const validateInfrastructureConfig = (infrastructureConfig: unknown): InfrastructureValidationResult => {\n try {\n infrastructureSchema.parse(infrastructureConfig)\n\n return { success: true }\n } catch (error) {\n if (error instanceof z.ZodError) {\n const errors: InfrastructureValidationError[] = error.issues.map((err) => ({\n path: err.path.length > 0 ? err.path.join('.') : 'infrastructure',\n message: err.message,\n }))\n\n return {\n success: false,\n errors,\n }\n }\n\n return {\n success: false,\n errors: [\n {\n path: 'infrastructure',\n message: `Unexpected validation error: ${error instanceof Error ? error.message : 'Unknown error'}`,\n },\n ],\n }\n }\n}\n"],"mappings":";;;;AAuCA,MAAa,gCAAgC,yBAAkE;AAC7G,KAAI;AACF,uBAAqB,MAAM,qBAAqB;AAEhD,SAAO,EAAE,SAAS,MAAM;UACjB,OAAO;AACd,MAAI,iBAAiB,EAAE,SAMrB,QAAO;GACL,SAAS;GACT,QAP8C,MAAM,OAAO,KAAK,SAAS;IACzE,MAAM,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG;IACjD,SAAS,IAAI;IACd,EAAE;GAKF;AAGH,SAAO;GACL,SAAS;GACT,QAAQ,CACN;IACE,MAAM;IACN,SAAS,gCAAgC,iBAAiB,QAAQ,MAAM,UAAU;IACnF,CACF;GACF"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import path from "path";
|
|
2
|
+
import { createRequire } from "module";
|
|
3
|
+
import { fileURLToPath } from "url";
|
|
4
|
+
|
|
5
|
+
//#region src/language-runner.ts
|
|
6
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
7
|
+
const require = createRequire(import.meta.url);
|
|
8
|
+
const getTsxLoaderPath = () => {
|
|
9
|
+
try {
|
|
10
|
+
return require.resolve("tsx");
|
|
11
|
+
} catch {
|
|
12
|
+
return "tsx";
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
const getLanguageBasedRunner = (stepFilePath = "", overrides) => {
|
|
16
|
+
const isPython = stepFilePath.endsWith(".py");
|
|
17
|
+
const isRuby = stepFilePath.endsWith(".rb");
|
|
18
|
+
const isNode = stepFilePath.endsWith(".js") || stepFilePath.endsWith(".ts");
|
|
19
|
+
if (isPython) return {
|
|
20
|
+
runner: path.join(__dirname, "python", overrides?.python ?? "python-runner.py"),
|
|
21
|
+
command: "python",
|
|
22
|
+
args: []
|
|
23
|
+
};
|
|
24
|
+
else if (isRuby) return {
|
|
25
|
+
runner: path.join(__dirname, "ruby", overrides?.ruby ?? "ruby-runner.rb"),
|
|
26
|
+
command: "ruby",
|
|
27
|
+
args: []
|
|
28
|
+
};
|
|
29
|
+
else if (isNode) {
|
|
30
|
+
const defaultNodeOverrides = overrides?.node;
|
|
31
|
+
const tsRunner = path.join(__dirname, "node", defaultNodeOverrides?.ts ?? "node-runner.ts");
|
|
32
|
+
const jsRunner = path.join(__dirname, "node", defaultNodeOverrides?.js ?? "node-runner.mjs");
|
|
33
|
+
if (process.env._MOTIA_TEST_MODE === "true") return {
|
|
34
|
+
runner: tsRunner,
|
|
35
|
+
command: "node",
|
|
36
|
+
args: [
|
|
37
|
+
"--loader",
|
|
38
|
+
"ts-node/esm",
|
|
39
|
+
"--no-warnings=ExperimentalWarning"
|
|
40
|
+
]
|
|
41
|
+
};
|
|
42
|
+
return {
|
|
43
|
+
runner: jsRunner,
|
|
44
|
+
command: "node",
|
|
45
|
+
args: ["--import", getTsxLoaderPath()]
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
throw Error(`Unsupported file extension ${stepFilePath}`);
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
//#endregion
|
|
52
|
+
export { getLanguageBasedRunner };
|
|
53
|
+
//# sourceMappingURL=language-runner.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"language-runner.mjs","names":[],"sources":["../../src/language-runner.ts"],"sourcesContent":["import { createRequire } from 'module'\nimport path from 'path'\nimport { fileURLToPath } from 'url'\n\nexport type LanguageRunnerConfig = {\n command: string\n runner: string\n args: string[]\n}\n\nexport type LanguageRunnerOverrides = {\n python?: string\n ruby?: string\n node?: {\n js: string\n ts?: string\n }\n}\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url))\nconst require = createRequire(import.meta.url)\n\n// Resolve tsx loader path from this package's node_modules\nconst getTsxLoaderPath = () => {\n try {\n return require.resolve('tsx')\n } catch {\n return 'tsx'\n }\n}\n\nexport const getLanguageBasedRunner = (\n stepFilePath = '',\n overrides?: LanguageRunnerOverrides,\n): LanguageRunnerConfig => {\n const isPython = stepFilePath.endsWith('.py')\n const isRuby = stepFilePath.endsWith('.rb')\n const isNode = stepFilePath.endsWith('.js') || stepFilePath.endsWith('.ts')\n\n if (isPython) {\n const pythonRunner = path.join(__dirname, 'python', overrides?.python ?? 'python-runner.py')\n return { runner: pythonRunner, command: 'python', args: [] }\n } else if (isRuby) {\n const rubyRunner = path.join(__dirname, 'ruby', overrides?.ruby ?? 'ruby-runner.rb')\n return { runner: rubyRunner, command: 'ruby', args: [] }\n } else if (isNode) {\n const defaultNodeOverrides = overrides?.node\n const tsRunner = path.join(__dirname, 'node', defaultNodeOverrides?.ts ?? 'node-runner.ts')\n const jsRunner = path.join(__dirname, 'node', defaultNodeOverrides?.js ?? 'node-runner.mjs')\n\n if (process.env._MOTIA_TEST_MODE === 'true') {\n return {\n runner: tsRunner,\n command: 'node',\n args: ['--loader', 'ts-node/esm', '--no-warnings=ExperimentalWarning'],\n }\n }\n\n const tsxPath = getTsxLoaderPath()\n return { runner: jsRunner, command: 'node', args: ['--import', tsxPath] }\n }\n\n throw Error(`Unsupported file extension ${stepFilePath}`)\n}\n"],"mappings":";;;;;AAmBA,MAAM,YAAY,KAAK,QAAQ,cAAc,OAAO,KAAK,IAAI,CAAC;AAC9D,MAAM,UAAU,cAAc,OAAO,KAAK,IAAI;AAG9C,MAAM,yBAAyB;AAC7B,KAAI;AACF,SAAO,QAAQ,QAAQ,MAAM;SACvB;AACN,SAAO;;;AAIX,MAAa,0BACX,eAAe,IACf,cACyB;CACzB,MAAM,WAAW,aAAa,SAAS,MAAM;CAC7C,MAAM,SAAS,aAAa,SAAS,MAAM;CAC3C,MAAM,SAAS,aAAa,SAAS,MAAM,IAAI,aAAa,SAAS,MAAM;AAE3E,KAAI,SAEF,QAAO;EAAE,QADY,KAAK,KAAK,WAAW,UAAU,WAAW,UAAU,mBAAmB;EAC7D,SAAS;EAAU,MAAM,EAAE;EAAE;UACnD,OAET,QAAO;EAAE,QADU,KAAK,KAAK,WAAW,QAAQ,WAAW,QAAQ,iBAAiB;EACvD,SAAS;EAAQ,MAAM,EAAE;EAAE;UAC/C,QAAQ;EACjB,MAAM,uBAAuB,WAAW;EACxC,MAAM,WAAW,KAAK,KAAK,WAAW,QAAQ,sBAAsB,MAAM,iBAAiB;EAC3F,MAAM,WAAW,KAAK,KAAK,WAAW,QAAQ,sBAAsB,MAAM,kBAAkB;AAE5F,MAAI,QAAQ,IAAI,qBAAqB,OACnC,QAAO;GACL,QAAQ;GACR,SAAS;GACT,MAAM;IAAC;IAAY;IAAe;IAAoC;GACvE;AAIH,SAAO;GAAE,QAAQ;GAAU,SAAS;GAAQ,MAAM,CAAC,YADnC,kBAAkB,CACqC;GAAE;;AAG3E,OAAM,MAAM,8BAA8B,eAAe"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { JsonSchema } from "./types/schema.types.mjs";
|
|
2
|
+
import { StreamFactory } from "./streams/stream-factory.mjs";
|
|
3
|
+
import { Stream } from "./types-stream.mjs";
|
|
4
|
+
import { StreamAdapterManager } from "./adapters/interfaces/stream-adapter-manager.interface.mjs";
|
|
5
|
+
import { Printer } from "./printer.mjs";
|
|
6
|
+
import { StreamAuthConfig } from "./types/app-config-types.mjs";
|
|
7
|
+
import { ApiRouteConfig, CronConfig, EventConfig, Flow, Step } from "./types.mjs";
|
|
8
|
+
import { RedisClientType } from "redis";
|
|
9
|
+
|
|
10
|
+
//#region src/locked-data.d.ts
|
|
11
|
+
type FlowEvent = 'flow-created' | 'flow-removed' | 'flow-updated';
|
|
12
|
+
type StepEvent = 'step-created' | 'step-removed' | 'step-updated';
|
|
13
|
+
type StreamEvent = 'stream-created' | 'stream-removed' | 'stream-updated';
|
|
14
|
+
type StreamWrapper<TData> = (streamName: string, factory: StreamFactory<TData>) => StreamFactory<TData>;
|
|
15
|
+
declare class LockedData {
|
|
16
|
+
readonly baseDir: string;
|
|
17
|
+
readonly streamAdapter: StreamAdapterManager;
|
|
18
|
+
private readonly printer;
|
|
19
|
+
readonly redisClient: RedisClientType;
|
|
20
|
+
flows: Record<string, Flow>;
|
|
21
|
+
activeSteps: Step[];
|
|
22
|
+
devSteps: Step[];
|
|
23
|
+
private stepsMap;
|
|
24
|
+
private handlers;
|
|
25
|
+
private stepHandlers;
|
|
26
|
+
private streamHandlers;
|
|
27
|
+
private streams;
|
|
28
|
+
private streamWrapper?;
|
|
29
|
+
private streamAuthContextType?;
|
|
30
|
+
private streamAuthConfig?;
|
|
31
|
+
constructor(baseDir: string, streamAdapter: StreamAdapterManager, printer: Printer, redisClient: RedisClientType);
|
|
32
|
+
applyStreamWrapper<TData>(streamWrapper: StreamWrapper<TData>): void;
|
|
33
|
+
setStreamAuthConfig(config?: {
|
|
34
|
+
authenticate: StreamAuthConfig['authenticate'];
|
|
35
|
+
contextSchema?: JsonSchema;
|
|
36
|
+
}): void;
|
|
37
|
+
getStreamAuthConfig(): {
|
|
38
|
+
authenticate: StreamAuthConfig["authenticate"];
|
|
39
|
+
} | undefined;
|
|
40
|
+
saveTypes(): void;
|
|
41
|
+
on(event: FlowEvent, handler: (flowName: string) => void): void;
|
|
42
|
+
onStep(event: StepEvent, handler: (step: Step) => void): void;
|
|
43
|
+
onStream(event: StreamEvent, handler: (stream: Stream) => void): void;
|
|
44
|
+
getActiveSteps(): Step[];
|
|
45
|
+
eventSteps(): Step<EventConfig>[];
|
|
46
|
+
apiSteps(): Step<ApiRouteConfig>[];
|
|
47
|
+
cronSteps(): Step<CronConfig>[];
|
|
48
|
+
pythonSteps(): Step[];
|
|
49
|
+
tsSteps(): Step[];
|
|
50
|
+
getStreams(): Record<string, StreamFactory<any>>;
|
|
51
|
+
listStreams(): Stream[];
|
|
52
|
+
getStreamByName(streamName: string): Stream | undefined;
|
|
53
|
+
findStream(path: string): Stream | undefined;
|
|
54
|
+
updateStep(oldStep: Step, newStep: Step, options?: {
|
|
55
|
+
disableTypeCreation?: boolean;
|
|
56
|
+
}): boolean;
|
|
57
|
+
createStep(step: Step, options?: {
|
|
58
|
+
disableTypeCreation?: boolean;
|
|
59
|
+
}): boolean;
|
|
60
|
+
deleteStep(step: Step, options?: {
|
|
61
|
+
disableTypeCreation?: boolean;
|
|
62
|
+
}): void;
|
|
63
|
+
private createFactoryWrapper;
|
|
64
|
+
createStream<TData>(baseStream: Omit<Stream, 'factory'>, options?: {
|
|
65
|
+
disableTypeCreation?: boolean;
|
|
66
|
+
}): StreamFactory<TData>;
|
|
67
|
+
deleteStream(stream: Stream, options?: {
|
|
68
|
+
disableTypeCreation?: boolean;
|
|
69
|
+
}): void;
|
|
70
|
+
updateStream(oldStream: Stream, stream: Stream, options?: {
|
|
71
|
+
disableTypeCreation?: boolean;
|
|
72
|
+
}): void;
|
|
73
|
+
private createFlow;
|
|
74
|
+
private removeFlow;
|
|
75
|
+
private onFlowUpdated;
|
|
76
|
+
private isValidStep;
|
|
77
|
+
private createStreamAdapter;
|
|
78
|
+
}
|
|
79
|
+
//#endregion
|
|
80
|
+
export { LockedData };
|
|
81
|
+
//# sourceMappingURL=locked-data.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"locked-data.d.mts","names":[],"sources":["../../src/locked-data.ts"],"sourcesContent":[],"mappings":"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"}
|