@motiadev/core 0.14.0-beta.164 → 0.14.0-beta.165-707935
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.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 +215 -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 +55 -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 +37 -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 +23 -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 +98 -0
- package/dist/src/observability/stream-tracer.mjs.map +1 -0
- package/dist/src/observability/trace-manager.mjs +27 -0
- package/dist/src/observability/trace-manager.mjs.map +1 -0
- package/dist/src/observability/tracer.mjs +88 -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 +353 -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 +49 -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 +194 -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 +21 -8
- package/tsdown.config.ts +53 -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 -198
- 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 -33
- 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 -22
- 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 -23
- package/dist/src/observability/stream-tracer.d.ts.map +0 -1
- package/dist/src/observability/stream-tracer.js +0 -114
- package/dist/src/observability/trace-manager.d.ts +0 -14
- package/dist/src/observability/trace-manager.d.ts.map +0 -1
- package/dist/src/observability/trace-manager.js +0 -26
- 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 -98
- 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 -344
- 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 -45
- 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 -190
- 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,97 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream-factory.d.mts","names":[],"sources":["../../../src/streams/stream-factory.ts"],"sourcesContent":[],"mappings":";;;KAEY,6BAA6B,YAAY"}
|
|
@@ -0,0 +1,49 @@
|
|
|
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
|
+
onShutdown?: () => Promise<void>;
|
|
25
|
+
};
|
|
26
|
+
type MotiaPluginBuilder = (motia: MotiaPluginContext) => MotiaPlugin;
|
|
27
|
+
type AdapterConfig = {
|
|
28
|
+
state?: StateAdapter;
|
|
29
|
+
streams?: StreamAdapterManager;
|
|
30
|
+
events?: EventAdapter;
|
|
31
|
+
cron?: CronAdapter;
|
|
32
|
+
};
|
|
33
|
+
type StreamAuthRequest = {
|
|
34
|
+
headers: Record<string, string | string[] | undefined>;
|
|
35
|
+
url?: string;
|
|
36
|
+
};
|
|
37
|
+
type StreamAuthConfig<TSchema extends z.ZodTypeAny = z.ZodTypeAny> = {
|
|
38
|
+
contextSchema: JsonSchema;
|
|
39
|
+
authenticate: (request: StreamAuthRequest) => Promise<z.infer<TSchema> | null> | (z.infer<TSchema> | null);
|
|
40
|
+
};
|
|
41
|
+
type Config = {
|
|
42
|
+
app?: (app: Express) => void;
|
|
43
|
+
plugins?: MotiaPluginBuilder[];
|
|
44
|
+
adapters?: AdapterConfig;
|
|
45
|
+
streamAuth?: StreamAuthConfig;
|
|
46
|
+
};
|
|
47
|
+
//#endregion
|
|
48
|
+
export { AdapterConfig, Config, MotiaPlugin, MotiaPluginBuilder, StreamAuthConfig, StreamAuthRequest, WorkbenchPlugin };
|
|
49
|
+
//# sourceMappingURL=app-config-types.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
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;EAOX,SAAA,CAAA,EAAA,MAAA;EAEA,QAAA,CAAA,EAAA,QAAa,GAAA,KAAA;EACf,UAAA,CAAA,EAAA,MAAA,EAAA;EACE,KAAA,CAAA,EAdF,MAcE,CAAA,MAAA,EAAA,GAAA,CAAA;CACD;AACF,KAbG,WAAA,GAaH;EAAW,SAAA,EAZP,eAYO,EAAA;EAGR,OAAA,CAAA,EAAA,MAAA;EAKA,KAAA,CAAA,EAAA,MAAA,EAAA;EAAmC,UAAA,CAAA,EAAA,GAAA,GAjB1B,OAiB0B,CAAA,IAAA,CAAA;CAAa;AAC3C,KAfL,kBAAA,GAeK,CAAA,KAAA,EAfwB,kBAexB,EAAA,GAf+C,WAe/C;AACS,KAdd,aAAA,GAcc;EAAsC,KAAA,CAAA,EAbtD,YAasD;EAAN,OAAA,CAAA,EAZ9C,oBAY8C;EAAV,MAAA,CAAA,EAXrC,YAWqC;EAA4C,IAAA,CAAA,EAVnF,WAUmF;CAAR;AAAO,KAP/E,iBAAA,GAO+E;EAG/E,OAAA,EATD,MASO,CAAA,MAAA,EAAA,MAAA,GAAA,MAAA,EAAA,GAAA,SAAA,CAAA;EACJ,GAAA,CAAA,EAAA,MAAA;CACF;AACC,KARD,gBAQC,CAAA,gBARgC,CAAA,CAAE,UAQlC,GAR+C,CAAA,CAAE,UAQjD,CAAA,GAAA;EACE,aAAA,EARE,UAQF;EAAgB,YAAA,EAAA,CAAA,OAAA,EAPL,iBAOK,EAAA,GAPiB,OAOjB,CAPyB,CAAA,CAAE,KAO3B,CAPiC,OAOjC,CAAA,GAAA,IAAA,CAAA,GAAA,CAPqD,CAAA,CAAE,KAOvD,CAP6D,OAO7D,CAAA,GAAA,IAAA,CAAA;;KAJnB,MAAA;cACE;YACF;aACC;eACE"}
|
|
@@ -0,0 +1,30 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,101 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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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"}
|
|
@@ -0,0 +1,102 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { StreamFactory } from "./streams/stream-factory.mjs";
|
|
2
|
+
import { StepSchemaInput } from "./types.mjs";
|
|
3
|
+
|
|
4
|
+
//#region src/types-stream.d.ts
|
|
5
|
+
type StreamSubscription = {
|
|
6
|
+
groupId: string;
|
|
7
|
+
id?: string;
|
|
8
|
+
};
|
|
9
|
+
interface StreamConfig {
|
|
10
|
+
name: string;
|
|
11
|
+
schema: StepSchemaInput;
|
|
12
|
+
baseConfig: {
|
|
13
|
+
storageType: 'default';
|
|
14
|
+
} | {
|
|
15
|
+
storageType: 'custom';
|
|
16
|
+
factory: () => MotiaStream<any>;
|
|
17
|
+
};
|
|
18
|
+
canAccess?: (subscription: StreamSubscription, authContext: any) => boolean | Promise<boolean>;
|
|
19
|
+
}
|
|
20
|
+
type StateStreamEventChannel = {
|
|
21
|
+
groupId: string;
|
|
22
|
+
id?: string;
|
|
23
|
+
};
|
|
24
|
+
type StateStreamEvent<TData> = {
|
|
25
|
+
type: string;
|
|
26
|
+
data: TData;
|
|
27
|
+
};
|
|
28
|
+
type BaseStreamItem<TData = unknown> = TData & {
|
|
29
|
+
id: string;
|
|
30
|
+
};
|
|
31
|
+
type Stream<TConfig extends StreamConfig = StreamConfig> = {
|
|
32
|
+
filePath: string;
|
|
33
|
+
config: TConfig;
|
|
34
|
+
hidden?: boolean;
|
|
35
|
+
factory: StreamFactory<unknown>;
|
|
36
|
+
};
|
|
37
|
+
interface MotiaStream<TData> {
|
|
38
|
+
get(groupId: string, id: string): Promise<BaseStreamItem<TData> | null>;
|
|
39
|
+
set(groupId: string, id: string, data: TData): Promise<BaseStreamItem<TData>>;
|
|
40
|
+
delete(groupId: string, id: string): Promise<BaseStreamItem<TData> | null>;
|
|
41
|
+
getGroup(groupId: string): Promise<BaseStreamItem<TData>[]>;
|
|
42
|
+
send<T>(channel: StateStreamEventChannel, event: StateStreamEvent<T>): Promise<void>;
|
|
43
|
+
}
|
|
44
|
+
//#endregion
|
|
45
|
+
export { BaseStreamItem, MotiaStream, StateStreamEvent, StateStreamEventChannel, Stream, StreamConfig, StreamSubscription };
|
|
46
|
+
//# sourceMappingURL=types-stream.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types-stream.d.mts","names":[],"sources":["../../src/types-stream.ts"],"sourcesContent":[],"mappings":";;;;KAGY,kBAAA;;EAAA,EAAA,CAAA,EAAA,MAAA;AAEZ,CAAA;AAEU,UAFO,YAAA,CAEP;EACyE,IAAA,EAAA,MAAA;EACtD,MAAA,EAFnB,eAEmB;EAAmD,UAAA,EAAA;IAAO,WAAA,EAAA,SAAA;EAG3E,CAAA,GAAA;IACA,WAAA,EAAA,QAAgB;IAEhB,OAAA,EAAA,GAAA,GAPuE,WAOzD,CAAA,GAAoB,CAAA;EAElC,CAAA;EAAuB,SAAA,CAAA,EAAA,CAAA,YAAA,EARN,kBAQM,EAAA,WAAA,EAAA,GAAA,EAAA,GAAA,OAAA,GAR6C,OAQ7C,CAAA,OAAA,CAAA;;AAEzB,KAPE,uBAAA,GAOF;EAEC,OAAA,EAAA,MAAA;EAAa,EAAA,CAAA,EAAA,MAAA;AAGxB,CAAA;AAC2D,KAZ/C,gBAY+C,CAAA,KAAA,CAAA,GAAA;EAAf,IAAA,EAAA,MAAA;EAAR,IAAA,EAZwB,KAYxB;CACK;AAA+B,KAX5D,cAW4D,CAAA,QAAA,OAAA,CAAA,GAX1B,KAW0B,GAAA;EAAf,EAAA,EAAA,MAAA;CAAR;AACa,KAVlD,MAUkD,CAAA,gBAV3B,YAU2B,GAVZ,YAUY,CAAA,GAAA;EAAf,QAAA,EAAA,MAAA;EAAR,MAAA,EAR7B,OAQ6B;EACa,MAAA,CAAA,EAAA,OAAA;EAAf,OAAA,EAP1B,aAO0B,CAAA,OAAA,CAAA;CAAR;AAEV,UANF,WAME,CAAA,KAAA,CAAA,CAAA;EAAiD,GAAA,CAAA,OAAA,EAAA,MAAA,EAAA,EAAA,EAAA,MAAA,CAAA,EALhC,OAKgC,CALxB,cAKwB,CALT,KAKS,CAAA,GAAA,IAAA,CAAA;EAAjB,GAAA,CAAA,OAAA,EAAA,MAAA,EAAA,EAAA,EAAA,MAAA,EAAA,IAAA,EAJV,KAIU,CAAA,EAJF,OAIE,CAJM,cAIN,CAJqB,KAIrB,CAAA,CAAA;EAAsB,MAAA,CAAA,OAAA,EAAA,MAAA,EAAA,EAAA,EAAA,MAAA,CAAA,EAHlC,OAGkC,CAH1B,cAG0B,CAHX,KAGW,CAAA,GAAA,IAAA,CAAA;EAAO,QAAA,CAAA,OAAA,EAAA,MAAA,CAAA,EAFnD,OAEmD,CAF3C,cAE2C,CAF5B,KAE4B,CAAA,EAAA,CAAA;mBAA7D,gCAAgC,iBAAiB,KAAK"}
|