@motiadev/core 0.13.2-beta.163 → 0.13.2-beta.164-562802
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 +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 +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 +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 +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 -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,87 @@
|
|
|
1
|
+
import { createTrace } from "./create-trace.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/observability/stream-tracer.ts
|
|
4
|
+
var StreamTracer = class StreamTracer {
|
|
5
|
+
constructor(manager, traceGroup, trace, logger) {
|
|
6
|
+
this.manager = manager;
|
|
7
|
+
this.traceGroup = traceGroup;
|
|
8
|
+
this.trace = trace;
|
|
9
|
+
logger.addListener((level, msg, args) => {
|
|
10
|
+
this.addEvent({
|
|
11
|
+
type: "log",
|
|
12
|
+
timestamp: Date.now(),
|
|
13
|
+
level,
|
|
14
|
+
message: msg,
|
|
15
|
+
metadata: args
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
end(err) {
|
|
20
|
+
if (this.trace.endTime) return;
|
|
21
|
+
this.trace.status = err ? "failed" : "completed";
|
|
22
|
+
this.trace.endTime = Date.now();
|
|
23
|
+
this.trace.error = err;
|
|
24
|
+
this.traceGroup.metadata.completedSteps++;
|
|
25
|
+
this.traceGroup.metadata.activeSteps--;
|
|
26
|
+
if (this.traceGroup.metadata.activeSteps === 0) {
|
|
27
|
+
if (this.traceGroup.status === "running") this.traceGroup.status = "completed";
|
|
28
|
+
this.traceGroup.endTime = Date.now();
|
|
29
|
+
}
|
|
30
|
+
if (err) this.traceGroup.status = "failed";
|
|
31
|
+
this.manager.updateTrace();
|
|
32
|
+
this.manager.updateTraceGroup();
|
|
33
|
+
}
|
|
34
|
+
stateOperation(operation, input) {
|
|
35
|
+
this.addEvent({
|
|
36
|
+
type: "state",
|
|
37
|
+
timestamp: Date.now(),
|
|
38
|
+
operation,
|
|
39
|
+
data: input
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
emitOperation(topic, data, success) {
|
|
43
|
+
this.addEvent({
|
|
44
|
+
type: "emit",
|
|
45
|
+
timestamp: Date.now(),
|
|
46
|
+
topic,
|
|
47
|
+
success,
|
|
48
|
+
data
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
streamOperation(streamName, operation, input) {
|
|
52
|
+
if (operation === "set") {
|
|
53
|
+
const lastEvent = this.trace.events[this.trace.events.length - 1];
|
|
54
|
+
if (lastEvent && lastEvent.type === "stream" && lastEvent.streamName === streamName && lastEvent.data.groupId === input.groupId && lastEvent.data.id === input.id) {
|
|
55
|
+
lastEvent.calls++;
|
|
56
|
+
lastEvent.data.data = input.data;
|
|
57
|
+
lastEvent.maxTimestamp = Date.now();
|
|
58
|
+
this.traceGroup.lastActivity = lastEvent.maxTimestamp;
|
|
59
|
+
this.manager.updateTrace();
|
|
60
|
+
this.manager.updateTraceGroup();
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
this.addEvent({
|
|
65
|
+
type: "stream",
|
|
66
|
+
timestamp: Date.now(),
|
|
67
|
+
operation,
|
|
68
|
+
data: input,
|
|
69
|
+
streamName,
|
|
70
|
+
calls: 1
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
child(step, logger) {
|
|
74
|
+
const trace = createTrace(this.traceGroup, step);
|
|
75
|
+
return new StreamTracer(this.manager.child(trace), this.traceGroup, trace, logger);
|
|
76
|
+
}
|
|
77
|
+
addEvent(event) {
|
|
78
|
+
this.trace.events.push(event);
|
|
79
|
+
this.traceGroup.lastActivity = event.timestamp;
|
|
80
|
+
this.manager.updateTrace();
|
|
81
|
+
this.manager.updateTraceGroup();
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
//#endregion
|
|
86
|
+
export { StreamTracer };
|
|
87
|
+
//# sourceMappingURL=stream-tracer.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream-tracer.mjs","names":["manager: TraceManager","traceGroup: TraceGroup","trace: Trace"],"sources":["../../../src/observability/stream-tracer.ts"],"sourcesContent":["import type { Logger } from '../logger'\nimport type { Step } from '../types'\nimport { createTrace } from './create-trace'\nimport type { Tracer } from './index'\nimport type { TraceManager } from './trace-manager'\nimport type { StateOperation, StreamOperation, Trace, TraceError, TraceEvent, TraceGroup } from './types'\n\nexport class StreamTracer implements Tracer {\n constructor(\n private readonly manager: TraceManager,\n private readonly traceGroup: TraceGroup,\n private readonly trace: Trace,\n logger: Logger,\n ) {\n logger.addListener((level, msg, args) => {\n this.addEvent({\n type: 'log',\n timestamp: Date.now(),\n level,\n message: msg,\n metadata: args,\n })\n })\n }\n\n end(err?: TraceError) {\n if (this.trace.endTime) {\n // avoiding updating twice\n return\n }\n\n this.trace.status = err ? 'failed' : 'completed'\n this.trace.endTime = Date.now()\n this.trace.error = err\n\n this.traceGroup.metadata.completedSteps++\n this.traceGroup.metadata.activeSteps--\n\n if (this.traceGroup.metadata.activeSteps === 0) {\n if (this.traceGroup.status === 'running') {\n this.traceGroup.status = 'completed'\n }\n this.traceGroup.endTime = Date.now()\n }\n\n if (err) {\n this.traceGroup.status = 'failed'\n }\n\n this.manager.updateTrace()\n this.manager.updateTraceGroup()\n }\n\n stateOperation(operation: StateOperation, input: unknown) {\n this.addEvent({\n type: 'state',\n timestamp: Date.now(),\n operation,\n data: input,\n })\n }\n\n emitOperation(topic: string, data: unknown, success: boolean) {\n this.addEvent({\n type: 'emit',\n timestamp: Date.now(),\n topic,\n success,\n data,\n })\n }\n\n streamOperation(\n streamName: string,\n operation: StreamOperation,\n input: { groupId: string; id: string; data?: unknown },\n ) {\n if (operation === 'set') {\n const lastEvent = this.trace.events[this.trace.events.length - 1]\n\n if (\n lastEvent &&\n lastEvent.type === 'stream' &&\n lastEvent.streamName === streamName &&\n lastEvent.data.groupId === input.groupId &&\n lastEvent.data.id === input.id\n ) {\n lastEvent.calls++\n lastEvent.data.data = input.data\n lastEvent.maxTimestamp = Date.now()\n\n this.traceGroup.lastActivity = lastEvent.maxTimestamp\n this.manager.updateTrace()\n this.manager.updateTraceGroup()\n\n return\n }\n }\n\n this.addEvent({\n type: 'stream',\n timestamp: Date.now(),\n operation,\n data: input,\n streamName,\n calls: 1,\n })\n }\n\n child(step: Step, logger: Logger) {\n const trace = createTrace(this.traceGroup, step)\n const manager = this.manager.child(trace)\n\n return new StreamTracer(manager, this.traceGroup, trace, logger)\n }\n\n private addEvent(event: TraceEvent) {\n this.trace.events.push(event)\n this.traceGroup.lastActivity = event.timestamp\n\n this.manager.updateTrace()\n this.manager.updateTraceGroup()\n }\n}\n"],"mappings":";;;AAOA,IAAa,eAAb,MAAa,aAA+B;CAC1C,YACE,AAAiBA,SACjB,AAAiBC,YACjB,AAAiBC,OACjB,QACA;EAJiB;EACA;EACA;AAGjB,SAAO,aAAa,OAAO,KAAK,SAAS;AACvC,QAAK,SAAS;IACZ,MAAM;IACN,WAAW,KAAK,KAAK;IACrB;IACA,SAAS;IACT,UAAU;IACX,CAAC;IACF;;CAGJ,IAAI,KAAkB;AACpB,MAAI,KAAK,MAAM,QAEb;AAGF,OAAK,MAAM,SAAS,MAAM,WAAW;AACrC,OAAK,MAAM,UAAU,KAAK,KAAK;AAC/B,OAAK,MAAM,QAAQ;AAEnB,OAAK,WAAW,SAAS;AACzB,OAAK,WAAW,SAAS;AAEzB,MAAI,KAAK,WAAW,SAAS,gBAAgB,GAAG;AAC9C,OAAI,KAAK,WAAW,WAAW,UAC7B,MAAK,WAAW,SAAS;AAE3B,QAAK,WAAW,UAAU,KAAK,KAAK;;AAGtC,MAAI,IACF,MAAK,WAAW,SAAS;AAG3B,OAAK,QAAQ,aAAa;AAC1B,OAAK,QAAQ,kBAAkB;;CAGjC,eAAe,WAA2B,OAAgB;AACxD,OAAK,SAAS;GACZ,MAAM;GACN,WAAW,KAAK,KAAK;GACrB;GACA,MAAM;GACP,CAAC;;CAGJ,cAAc,OAAe,MAAe,SAAkB;AAC5D,OAAK,SAAS;GACZ,MAAM;GACN,WAAW,KAAK,KAAK;GACrB;GACA;GACA;GACD,CAAC;;CAGJ,gBACE,YACA,WACA,OACA;AACA,MAAI,cAAc,OAAO;GACvB,MAAM,YAAY,KAAK,MAAM,OAAO,KAAK,MAAM,OAAO,SAAS;AAE/D,OACE,aACA,UAAU,SAAS,YACnB,UAAU,eAAe,cACzB,UAAU,KAAK,YAAY,MAAM,WACjC,UAAU,KAAK,OAAO,MAAM,IAC5B;AACA,cAAU;AACV,cAAU,KAAK,OAAO,MAAM;AAC5B,cAAU,eAAe,KAAK,KAAK;AAEnC,SAAK,WAAW,eAAe,UAAU;AACzC,SAAK,QAAQ,aAAa;AAC1B,SAAK,QAAQ,kBAAkB;AAE/B;;;AAIJ,OAAK,SAAS;GACZ,MAAM;GACN,WAAW,KAAK,KAAK;GACrB;GACA,MAAM;GACN;GACA,OAAO;GACR,CAAC;;CAGJ,MAAM,MAAY,QAAgB;EAChC,MAAM,QAAQ,YAAY,KAAK,YAAY,KAAK;AAGhD,SAAO,IAAI,aAFK,KAAK,QAAQ,MAAM,MAAM,EAER,KAAK,YAAY,OAAO,OAAO;;CAGlE,AAAQ,SAAS,OAAmB;AAClC,OAAK,MAAM,OAAO,KAAK,MAAM;AAC7B,OAAK,WAAW,eAAe,MAAM;AAErC,OAAK,QAAQ,aAAa;AAC1B,OAAK,QAAQ,kBAAkB"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
//#region src/observability/trace-manager.ts
|
|
2
|
+
var TraceManager = class TraceManager {
|
|
3
|
+
constructor(traceStream, traceGroupStream, traceGroup, trace) {
|
|
4
|
+
this.traceStream = traceStream;
|
|
5
|
+
this.traceGroupStream = traceGroupStream;
|
|
6
|
+
this.traceGroup = traceGroup;
|
|
7
|
+
this.trace = trace;
|
|
8
|
+
this.updateTrace();
|
|
9
|
+
this.updateTraceGroup();
|
|
10
|
+
}
|
|
11
|
+
updateTrace() {
|
|
12
|
+
this.traceStream.set(this.traceGroup.id, this.trace.id, this.trace);
|
|
13
|
+
}
|
|
14
|
+
updateTraceGroup() {
|
|
15
|
+
this.traceGroupStream.set("default", this.traceGroup.id, this.traceGroup);
|
|
16
|
+
}
|
|
17
|
+
child(trace) {
|
|
18
|
+
return new TraceManager(this.traceStream, this.traceGroupStream, this.traceGroup, trace);
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
//#endregion
|
|
23
|
+
export { TraceManager };
|
|
24
|
+
//# sourceMappingURL=trace-manager.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trace-manager.mjs","names":["traceStream: MotiaStream<Trace>","traceGroupStream: MotiaStream<TraceGroup>","traceGroup: TraceGroup","trace: Trace"],"sources":["../../../src/observability/trace-manager.ts"],"sourcesContent":["import type { MotiaStream } from '../types-stream'\nimport type { Trace, TraceGroup } from './types'\n\nexport class TraceManager {\n constructor(\n private readonly traceStream: MotiaStream<Trace>,\n private readonly traceGroupStream: MotiaStream<TraceGroup>,\n private readonly traceGroup: TraceGroup,\n private readonly trace: Trace,\n ) {\n this.updateTrace()\n this.updateTraceGroup()\n }\n\n updateTrace() {\n this.traceStream.set(this.traceGroup.id, this.trace.id, this.trace)\n }\n\n updateTraceGroup() {\n this.traceGroupStream.set('default', this.traceGroup.id, this.traceGroup)\n }\n\n child(trace: Trace) {\n return new TraceManager(this.traceStream, this.traceGroupStream, this.traceGroup, trace)\n }\n}\n"],"mappings":";AAGA,IAAa,eAAb,MAAa,aAAa;CACxB,YACE,AAAiBA,aACjB,AAAiBC,kBACjB,AAAiBC,YACjB,AAAiBC,OACjB;EAJiB;EACA;EACA;EACA;AAEjB,OAAK,aAAa;AAClB,OAAK,kBAAkB;;CAGzB,cAAc;AACZ,OAAK,YAAY,IAAI,KAAK,WAAW,IAAI,KAAK,MAAM,IAAI,KAAK,MAAM;;CAGrE,mBAAmB;AACjB,OAAK,iBAAiB,IAAI,WAAW,KAAK,WAAW,IAAI,KAAK,WAAW;;CAG3E,MAAM,OAAc;AAClB,SAAO,IAAI,aAAa,KAAK,aAAa,KAAK,kBAAkB,KAAK,YAAY,MAAM"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { createTrace } from "./create-trace.mjs";
|
|
2
|
+
import { RedisTraceStreamAdapter } from "./redis-trace-stream-adapter.mjs";
|
|
3
|
+
import { StreamTracer } from "./stream-tracer.mjs";
|
|
4
|
+
import { TraceManager } from "./trace-manager.mjs";
|
|
5
|
+
|
|
6
|
+
//#region src/observability/tracer.ts
|
|
7
|
+
const MAX_TRACE_GROUPS = process.env.MOTIA_MAX_TRACE_GROUPS ? Number.parseInt(process.env.MOTIA_MAX_TRACE_GROUPS, 10) : 50;
|
|
8
|
+
var BaseTracerFactory = class {
|
|
9
|
+
constructor(traceStream, traceGroupStream) {
|
|
10
|
+
this.traceStream = traceStream;
|
|
11
|
+
this.traceGroupStream = traceGroupStream;
|
|
12
|
+
}
|
|
13
|
+
async getAllGroups() {
|
|
14
|
+
return await this.traceGroupStream.getGroup("default");
|
|
15
|
+
}
|
|
16
|
+
async deleteGroup(group) {
|
|
17
|
+
const traces = await this.traceStream.getGroup(group.id);
|
|
18
|
+
for (const trace of traces) await this.traceStream.delete(group.id, trace.id);
|
|
19
|
+
await this.traceGroupStream.delete("default", group.id);
|
|
20
|
+
}
|
|
21
|
+
async clear() {
|
|
22
|
+
const groups = await this.getAllGroups();
|
|
23
|
+
for (const group of groups) await this.deleteGroup(group);
|
|
24
|
+
}
|
|
25
|
+
async createTracer(traceId, step, logger) {
|
|
26
|
+
const traceGroup = {
|
|
27
|
+
id: traceId,
|
|
28
|
+
name: step.config.name,
|
|
29
|
+
lastActivity: Date.now(),
|
|
30
|
+
metadata: {
|
|
31
|
+
completedSteps: 0,
|
|
32
|
+
activeSteps: 0,
|
|
33
|
+
totalSteps: 0
|
|
34
|
+
},
|
|
35
|
+
correlationId: void 0,
|
|
36
|
+
status: "running",
|
|
37
|
+
startTime: Date.now()
|
|
38
|
+
};
|
|
39
|
+
const groups = await this.getAllGroups();
|
|
40
|
+
if (groups.length >= MAX_TRACE_GROUPS) {
|
|
41
|
+
const groupsToDelete = groups.sort((a, b) => a.startTime - b.startTime).slice(0, groups.length - MAX_TRACE_GROUPS + 1);
|
|
42
|
+
for (const group of groupsToDelete) await this.deleteGroup(group);
|
|
43
|
+
}
|
|
44
|
+
const trace = createTrace(traceGroup, step);
|
|
45
|
+
return new StreamTracer(new TraceManager(this.traceStream, this.traceGroupStream, traceGroup, trace), traceGroup, trace, logger);
|
|
46
|
+
}
|
|
47
|
+
async attachToTrace(traceId, step, logger) {
|
|
48
|
+
const existingGroup = await this.traceGroupStream.get("default", traceId);
|
|
49
|
+
if (!existingGroup) return this.createTracer(traceId, step, logger);
|
|
50
|
+
const trace = createTrace(existingGroup, step);
|
|
51
|
+
return new StreamTracer(new TraceManager(this.traceStream, this.traceGroupStream, existingGroup, trace), existingGroup, trace, logger);
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
const createTracerFactory = (lockedData) => {
|
|
55
|
+
const traceStreamName = "motia-trace";
|
|
56
|
+
const traceStreamAdapter = new RedisTraceStreamAdapter(traceStreamName, lockedData.redisClient);
|
|
57
|
+
const traceStream = lockedData.createStream({
|
|
58
|
+
filePath: traceStreamName,
|
|
59
|
+
hidden: true,
|
|
60
|
+
config: {
|
|
61
|
+
name: traceStreamName,
|
|
62
|
+
baseConfig: {
|
|
63
|
+
storageType: "custom",
|
|
64
|
+
factory: () => traceStreamAdapter
|
|
65
|
+
},
|
|
66
|
+
schema: null
|
|
67
|
+
}
|
|
68
|
+
})();
|
|
69
|
+
const traceGroupName = "motia-trace-group";
|
|
70
|
+
const traceGroupStreamAdapter = new RedisTraceStreamAdapter(traceGroupName, lockedData.redisClient);
|
|
71
|
+
return new BaseTracerFactory(traceStream, lockedData.createStream({
|
|
72
|
+
filePath: traceGroupName,
|
|
73
|
+
hidden: true,
|
|
74
|
+
config: {
|
|
75
|
+
name: traceGroupName,
|
|
76
|
+
baseConfig: {
|
|
77
|
+
storageType: "custom",
|
|
78
|
+
factory: () => traceGroupStreamAdapter
|
|
79
|
+
},
|
|
80
|
+
schema: null
|
|
81
|
+
}
|
|
82
|
+
})());
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
//#endregion
|
|
86
|
+
export { createTracerFactory };
|
|
87
|
+
//# sourceMappingURL=tracer.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tracer.mjs","names":["traceStream: MotiaStream<Trace>","traceGroupStream: MotiaStream<TraceGroup>","traceGroup: TraceGroup","traceStreamAdapter: MotiaStream<Trace>","traceGroupStreamAdapter: MotiaStream<TraceGroup>"],"sources":["../../../src/observability/tracer.ts"],"sourcesContent":["import { FileStreamAdapterManager } from '../adapters/defaults/stream/file-stream-adapter-manager'\nimport type { LockedData } from '../locked-data'\nimport type { Logger } from '../logger'\nimport type { Step } from '../types'\nimport type { MotiaStream } from '../types-stream'\nimport { createTrace } from './create-trace'\nimport type { TracerFactory } from './index'\nimport { RedisTraceStreamAdapter } from './redis-trace-stream-adapter'\nimport { StreamTracer } from './stream-tracer'\nimport { TraceManager } from './trace-manager'\nimport type { Trace, TraceGroup } from './types'\n\nconst MAX_TRACE_GROUPS = process.env.MOTIA_MAX_TRACE_GROUPS //\n ? Number.parseInt(process.env.MOTIA_MAX_TRACE_GROUPS, 10)\n : 50\n\nexport class BaseTracerFactory implements TracerFactory {\n constructor(\n private readonly traceStream: MotiaStream<Trace>,\n private readonly traceGroupStream: MotiaStream<TraceGroup>,\n ) {}\n\n private async getAllGroups() {\n return await this.traceGroupStream.getGroup('default')\n }\n\n private async deleteGroup(group: TraceGroup) {\n const traces = await this.traceStream.getGroup(group.id)\n\n for (const trace of traces) {\n await this.traceStream.delete(group.id, trace.id)\n }\n await this.traceGroupStream.delete('default', group.id)\n }\n\n async clear() {\n const groups = await this.getAllGroups()\n\n for (const group of groups) {\n await this.deleteGroup(group)\n }\n }\n\n async createTracer(traceId: string, step: Step, logger: Logger) {\n const traceGroup: TraceGroup = {\n id: traceId,\n name: step.config.name,\n lastActivity: Date.now(),\n metadata: {\n completedSteps: 0,\n activeSteps: 0,\n totalSteps: 0,\n },\n correlationId: undefined,\n status: 'running',\n startTime: Date.now(),\n }\n\n const groups = await this.getAllGroups()\n\n if (groups.length >= MAX_TRACE_GROUPS) {\n const groupsToDelete = groups\n .sort((a, b) => a.startTime - b.startTime) // date ascending\n .slice(0, groups.length - MAX_TRACE_GROUPS + 1)\n\n for (const group of groupsToDelete) {\n await this.deleteGroup(group)\n }\n }\n\n const trace = createTrace(traceGroup, step)\n const manager = new TraceManager(this.traceStream, this.traceGroupStream, traceGroup, trace)\n\n return new StreamTracer(manager, traceGroup, trace, logger)\n }\n\n async attachToTrace(traceId: string, step: Step, logger: Logger) {\n const existingGroup = await this.traceGroupStream.get('default', traceId)\n\n if (!existingGroup) {\n return this.createTracer(traceId, step, logger)\n }\n\n const trace = createTrace(existingGroup, step)\n const manager = new TraceManager(this.traceStream, this.traceGroupStream, existingGroup, trace)\n\n return new StreamTracer(manager, existingGroup, trace, logger)\n }\n}\n\nexport const createTracerFactory = (lockedData: LockedData): TracerFactory => {\n const traceStreamName = 'motia-trace'\n const traceStreamAdapter: MotiaStream<Trace> = new RedisTraceStreamAdapter(traceStreamName, lockedData.redisClient)\n\n const traceStream = lockedData.createStream<Trace>({\n filePath: traceStreamName,\n hidden: true,\n config: {\n name: traceStreamName,\n baseConfig: { storageType: 'custom', factory: () => traceStreamAdapter },\n schema: null as never,\n },\n })()\n\n const traceGroupName = 'motia-trace-group'\n const traceGroupStreamAdapter: MotiaStream<TraceGroup> = new RedisTraceStreamAdapter(\n traceGroupName,\n lockedData.redisClient,\n )\n\n const traceGroupStream = lockedData.createStream<TraceGroup>({\n filePath: traceGroupName,\n hidden: true,\n config: {\n name: traceGroupName,\n baseConfig: { storageType: 'custom', factory: () => traceGroupStreamAdapter },\n schema: null as never,\n },\n })()\n\n return new BaseTracerFactory(traceStream, traceGroupStream)\n}\n"],"mappings":";;;;;;AAYA,MAAM,mBAAmB,QAAQ,IAAI,yBACjC,OAAO,SAAS,QAAQ,IAAI,wBAAwB,GAAG,GACvD;AAEJ,IAAa,oBAAb,MAAwD;CACtD,YACE,AAAiBA,aACjB,AAAiBC,kBACjB;EAFiB;EACA;;CAGnB,MAAc,eAAe;AAC3B,SAAO,MAAM,KAAK,iBAAiB,SAAS,UAAU;;CAGxD,MAAc,YAAY,OAAmB;EAC3C,MAAM,SAAS,MAAM,KAAK,YAAY,SAAS,MAAM,GAAG;AAExD,OAAK,MAAM,SAAS,OAClB,OAAM,KAAK,YAAY,OAAO,MAAM,IAAI,MAAM,GAAG;AAEnD,QAAM,KAAK,iBAAiB,OAAO,WAAW,MAAM,GAAG;;CAGzD,MAAM,QAAQ;EACZ,MAAM,SAAS,MAAM,KAAK,cAAc;AAExC,OAAK,MAAM,SAAS,OAClB,OAAM,KAAK,YAAY,MAAM;;CAIjC,MAAM,aAAa,SAAiB,MAAY,QAAgB;EAC9D,MAAMC,aAAyB;GAC7B,IAAI;GACJ,MAAM,KAAK,OAAO;GAClB,cAAc,KAAK,KAAK;GACxB,UAAU;IACR,gBAAgB;IAChB,aAAa;IACb,YAAY;IACb;GACD,eAAe;GACf,QAAQ;GACR,WAAW,KAAK,KAAK;GACtB;EAED,MAAM,SAAS,MAAM,KAAK,cAAc;AAExC,MAAI,OAAO,UAAU,kBAAkB;GACrC,MAAM,iBAAiB,OACpB,MAAM,GAAG,MAAM,EAAE,YAAY,EAAE,UAAU,CACzC,MAAM,GAAG,OAAO,SAAS,mBAAmB,EAAE;AAEjD,QAAK,MAAM,SAAS,eAClB,OAAM,KAAK,YAAY,MAAM;;EAIjC,MAAM,QAAQ,YAAY,YAAY,KAAK;AAG3C,SAAO,IAAI,aAFK,IAAI,aAAa,KAAK,aAAa,KAAK,kBAAkB,YAAY,MAAM,EAE3D,YAAY,OAAO,OAAO;;CAG7D,MAAM,cAAc,SAAiB,MAAY,QAAgB;EAC/D,MAAM,gBAAgB,MAAM,KAAK,iBAAiB,IAAI,WAAW,QAAQ;AAEzE,MAAI,CAAC,cACH,QAAO,KAAK,aAAa,SAAS,MAAM,OAAO;EAGjD,MAAM,QAAQ,YAAY,eAAe,KAAK;AAG9C,SAAO,IAAI,aAFK,IAAI,aAAa,KAAK,aAAa,KAAK,kBAAkB,eAAe,MAAM,EAE9D,eAAe,OAAO,OAAO;;;AAIlE,MAAa,uBAAuB,eAA0C;CAC5E,MAAM,kBAAkB;CACxB,MAAMC,qBAAyC,IAAI,wBAAwB,iBAAiB,WAAW,YAAY;CAEnH,MAAM,cAAc,WAAW,aAAoB;EACjD,UAAU;EACV,QAAQ;EACR,QAAQ;GACN,MAAM;GACN,YAAY;IAAE,aAAa;IAAU,eAAe;IAAoB;GACxE,QAAQ;GACT;EACF,CAAC,EAAE;CAEJ,MAAM,iBAAiB;CACvB,MAAMC,0BAAmD,IAAI,wBAC3D,gBACA,WAAW,YACZ;AAYD,QAAO,IAAI,kBAAkB,aAVJ,WAAW,aAAyB;EAC3D,UAAU;EACV,QAAQ;EACR,QAAQ;GACN,MAAM;GACN,YAAY;IAAE,aAAa;IAAU,eAAe;IAAyB;GAC7E,QAAQ;GACT;EACF,CAAC,EAAE,CAEuD"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import "../types.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/observability/types.d.ts
|
|
4
|
+
|
|
5
|
+
type TraceError = {
|
|
6
|
+
message: string;
|
|
7
|
+
code?: string | number;
|
|
8
|
+
stack?: string;
|
|
9
|
+
};
|
|
10
|
+
type StateOperation = 'get' | 'getGroup' | 'set' | 'delete' | 'clear';
|
|
11
|
+
type StreamOperation = 'get' | 'getGroup' | 'set' | 'delete' | 'clear' | 'send';
|
|
12
|
+
//#endregion
|
|
13
|
+
export { StateOperation, StreamOperation, TraceError };
|
|
14
|
+
//# sourceMappingURL=types.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.mts","names":[],"sources":["../../../src/observability/types.ts"],"sourcesContent":[],"mappings":";;;;KAiBY,UAAA;;;;;KAqBA,cAAA;KACA,eAAA"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import pc from "picocolors";
|
|
2
|
+
|
|
3
|
+
//#region src/pretty-print.ts
|
|
4
|
+
const stepTag = (step) => pc.bold(pc.cyan(step));
|
|
5
|
+
const timestampTag = (timestamp) => pc.gray(timestamp);
|
|
6
|
+
const traceIdTag = (traceId) => pc.gray(traceId);
|
|
7
|
+
const levelTags = {
|
|
8
|
+
error: pc.red("[ERROR]"),
|
|
9
|
+
info: pc.blue("[INFO]"),
|
|
10
|
+
warn: pc.yellow("[WARN]"),
|
|
11
|
+
debug: pc.gray("[DEBUG]"),
|
|
12
|
+
trace: pc.gray("[TRACE]")
|
|
13
|
+
};
|
|
14
|
+
const numericTag = (value) => pc.green(value);
|
|
15
|
+
const stringTag = (value) => pc.cyan(value);
|
|
16
|
+
const booleanTag = (value) => pc.blue(value);
|
|
17
|
+
const arrayBrackets = ["[", "]"].map((s) => pc.gray(s));
|
|
18
|
+
const objectBrackets = ["{", "}"].map((s) => pc.gray(s));
|
|
19
|
+
const prettyPrintObject = (obj, depth = 0, parentIsLast = false, prefix = "") => {
|
|
20
|
+
const tab = prefix + (depth === 0 ? "" : parentIsLast ? "│ " : "│ ");
|
|
21
|
+
if (depth > 2) return `${tab} └ ${pc.gray("[...]")}`;
|
|
22
|
+
const entries = Object.entries(obj);
|
|
23
|
+
return entries.map(([key, value], index) => {
|
|
24
|
+
const isLast = index === entries.length - 1;
|
|
25
|
+
const isObject = typeof value === "object" && value !== null;
|
|
26
|
+
const prefix$1 = isLast && !isObject ? "└" : "├";
|
|
27
|
+
if (isObject) {
|
|
28
|
+
const subObject = prettyPrintObject(value, depth + 1, isLast, tab);
|
|
29
|
+
const [start, end] = Array.isArray(value) ? arrayBrackets : objectBrackets;
|
|
30
|
+
return `${tab}${prefix$1} ${key}: ${start}\n${subObject}\n${tab}${isLast ? "└" : "│"} ${end}`;
|
|
31
|
+
}
|
|
32
|
+
let printedValue = value;
|
|
33
|
+
if (typeof value === "number") printedValue = numericTag(String(value));
|
|
34
|
+
else if (typeof value === "boolean") printedValue = booleanTag(String(value));
|
|
35
|
+
else if (typeof value === "string") printedValue = stringTag(value);
|
|
36
|
+
return `${tab}${prefix$1} ${key}: ${printedValue}`;
|
|
37
|
+
}).join("\n");
|
|
38
|
+
};
|
|
39
|
+
const prettyPrint = (json, excludeDetails = false) => {
|
|
40
|
+
const { time, traceId, msg, flows, level, step, ...details } = json;
|
|
41
|
+
const levelTag = levelTags[level];
|
|
42
|
+
const timestamp = timestampTag(`[${new Date(time).toLocaleTimeString()}]`);
|
|
43
|
+
const objectHasKeys = Object.keys(details).length > 0;
|
|
44
|
+
console.log(`${timestamp} ${traceIdTag(traceId)} ${levelTag} ${stepTag(step)} ${msg}`);
|
|
45
|
+
if (objectHasKeys && !excludeDetails) console.log(prettyPrintObject(details));
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
//#endregion
|
|
49
|
+
export { prettyPrint };
|
|
50
|
+
//# sourceMappingURL=pretty-print.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pretty-print.mjs","names":["levelTags: Record<string, string>","prefix"],"sources":["../../src/pretty-print.ts"],"sourcesContent":["import pc from 'picocolors'\n\nconst stepTag = (step: string) => pc.bold(pc.cyan(step))\nconst timestampTag = (timestamp: string) => pc.gray(timestamp)\nconst traceIdTag = (traceId: string) => pc.gray(traceId)\n\nconst levelTags: Record<string, string> = {\n error: pc.red('[ERROR]'),\n info: pc.blue('[INFO]'),\n warn: pc.yellow('[WARN]'),\n debug: pc.gray('[DEBUG]'),\n trace: pc.gray('[TRACE]'),\n}\n\nconst numericTag = (value: string) => pc.green(value)\nconst stringTag = (value: string) => pc.cyan(value)\nconst booleanTag = (value: string) => pc.blue(value)\n\nconst arrayBrackets = ['[', ']'].map((s) => pc.gray(s))\nconst objectBrackets = ['{', '}'].map((s) => pc.gray(s))\n\nconst prettyPrintObject = (obj: Record<string, any>, depth = 0, parentIsLast = false, prefix = ''): string => {\n const tab = prefix + (depth === 0 ? '' : parentIsLast ? '│ ' : '│ ')\n\n if (depth > 2) {\n return `${tab} └ ${pc.gray('[...]')}`\n }\n\n const entries = Object.entries(obj)\n\n return entries\n .map(([key, value], index) => {\n const isLast = index === entries.length - 1\n const isObject = typeof value === 'object' && value !== null\n const prefix = isLast && !isObject ? '└' : '├'\n\n if (isObject) {\n const subObject = prettyPrintObject(value, depth + 1, isLast, tab)\n const [start, end] = Array.isArray(value) ? arrayBrackets : objectBrackets\n\n return `${tab}${prefix} ${key}: ${start}\\n${subObject}\\n${tab}${isLast ? '└' : '│'} ${end}`\n }\n\n let printedValue = value\n\n if (typeof value === 'number') {\n printedValue = numericTag(String(value))\n } else if (typeof value === 'boolean') {\n printedValue = booleanTag(String(value))\n } else if (typeof value === 'string') {\n printedValue = stringTag(value)\n }\n\n return `${tab}${prefix} ${key}: ${printedValue}`\n })\n .join('\\n')\n}\n\nexport const prettyPrint = (json: Record<string, any>, excludeDetails = false): void => {\n const { time, traceId, msg, flows, level, step, ...details } = json\n const levelTag = levelTags[level]\n const timestamp = timestampTag(`[${new Date(time).toLocaleTimeString()}]`)\n const objectHasKeys = Object.keys(details).length > 0\n\n console.log(`${timestamp} ${traceIdTag(traceId)} ${levelTag} ${stepTag(step)} ${msg}`)\n\n if (objectHasKeys && !excludeDetails) {\n console.log(prettyPrintObject(details))\n }\n}\n"],"mappings":";;;AAEA,MAAM,WAAW,SAAiB,GAAG,KAAK,GAAG,KAAK,KAAK,CAAC;AACxD,MAAM,gBAAgB,cAAsB,GAAG,KAAK,UAAU;AAC9D,MAAM,cAAc,YAAoB,GAAG,KAAK,QAAQ;AAExD,MAAMA,YAAoC;CACxC,OAAO,GAAG,IAAI,UAAU;CACxB,MAAM,GAAG,KAAK,SAAS;CACvB,MAAM,GAAG,OAAO,SAAS;CACzB,OAAO,GAAG,KAAK,UAAU;CACzB,OAAO,GAAG,KAAK,UAAU;CAC1B;AAED,MAAM,cAAc,UAAkB,GAAG,MAAM,MAAM;AACrD,MAAM,aAAa,UAAkB,GAAG,KAAK,MAAM;AACnD,MAAM,cAAc,UAAkB,GAAG,KAAK,MAAM;AAEpD,MAAM,gBAAgB,CAAC,KAAK,IAAI,CAAC,KAAK,MAAM,GAAG,KAAK,EAAE,CAAC;AACvD,MAAM,iBAAiB,CAAC,KAAK,IAAI,CAAC,KAAK,MAAM,GAAG,KAAK,EAAE,CAAC;AAExD,MAAM,qBAAqB,KAA0B,QAAQ,GAAG,eAAe,OAAO,SAAS,OAAe;CAC5G,MAAM,MAAM,UAAU,UAAU,IAAI,KAAK,eAAe,OAAO;AAE/D,KAAI,QAAQ,EACV,QAAO,GAAG,IAAI,KAAK,GAAG,KAAK,QAAQ;CAGrC,MAAM,UAAU,OAAO,QAAQ,IAAI;AAEnC,QAAO,QACJ,KAAK,CAAC,KAAK,QAAQ,UAAU;EAC5B,MAAM,SAAS,UAAU,QAAQ,SAAS;EAC1C,MAAM,WAAW,OAAO,UAAU,YAAY,UAAU;EACxD,MAAMC,WAAS,UAAU,CAAC,WAAW,MAAM;AAE3C,MAAI,UAAU;GACZ,MAAM,YAAY,kBAAkB,OAAO,QAAQ,GAAG,QAAQ,IAAI;GAClE,MAAM,CAAC,OAAO,OAAO,MAAM,QAAQ,MAAM,GAAG,gBAAgB;AAE5D,UAAO,GAAG,MAAMA,SAAO,GAAG,IAAI,IAAI,MAAM,IAAI,UAAU,IAAI,MAAM,SAAS,MAAM,IAAI,GAAG;;EAGxF,IAAI,eAAe;AAEnB,MAAI,OAAO,UAAU,SACnB,gBAAe,WAAW,OAAO,MAAM,CAAC;WAC/B,OAAO,UAAU,UAC1B,gBAAe,WAAW,OAAO,MAAM,CAAC;WAC/B,OAAO,UAAU,SAC1B,gBAAe,UAAU,MAAM;AAGjC,SAAO,GAAG,MAAMA,SAAO,GAAG,IAAI,IAAI;GAClC,CACD,KAAK,KAAK;;AAGf,MAAa,eAAe,MAA2B,iBAAiB,UAAgB;CACtF,MAAM,EAAE,MAAM,SAAS,KAAK,OAAO,OAAO,MAAM,GAAG,YAAY;CAC/D,MAAM,WAAW,UAAU;CAC3B,MAAM,YAAY,aAAa,IAAI,IAAI,KAAK,KAAK,CAAC,oBAAoB,CAAC,GAAG;CAC1E,MAAM,gBAAgB,OAAO,KAAK,QAAQ,CAAC,SAAS;AAEpD,SAAQ,IAAI,GAAG,UAAU,GAAG,WAAW,QAAQ,CAAC,GAAG,SAAS,GAAG,QAAQ,KAAK,CAAC,GAAG,MAAM;AAEtF,KAAI,iBAAiB,CAAC,eACpB,SAAQ,IAAI,kBAAkB,QAAQ,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { Stream } from "./types-stream.mjs";
|
|
2
|
+
import { ValidationError } from "./step-validator.mjs";
|
|
3
|
+
import { Step } from "./types.mjs";
|
|
4
|
+
|
|
5
|
+
//#region src/printer.d.ts
|
|
6
|
+
declare class Printer {
|
|
7
|
+
private readonly baseDir;
|
|
8
|
+
constructor(baseDir: string);
|
|
9
|
+
stepTag: string;
|
|
10
|
+
flowTag: string;
|
|
11
|
+
registered: string;
|
|
12
|
+
building: string;
|
|
13
|
+
built: string;
|
|
14
|
+
updated: string;
|
|
15
|
+
removed: string;
|
|
16
|
+
printEventInputValidationError(emit: {
|
|
17
|
+
topic: string;
|
|
18
|
+
}, details: {
|
|
19
|
+
missingFields?: string[];
|
|
20
|
+
extraFields?: string[];
|
|
21
|
+
typeMismatches?: string[];
|
|
22
|
+
}): void;
|
|
23
|
+
printInvalidEmit(step: Step, emit: string): void;
|
|
24
|
+
printStepCreated(step: Step): void;
|
|
25
|
+
printStepUpdated(step: Step): void;
|
|
26
|
+
printStepRemoved(step: Step): void;
|
|
27
|
+
printFlowCreated(flowName: string): void;
|
|
28
|
+
printFlowUpdated(flowName: string): void;
|
|
29
|
+
printFlowRemoved(flowName: string): void;
|
|
30
|
+
printStreamCreated(stream: Stream): void;
|
|
31
|
+
printStreamUpdated(stream: Stream): void;
|
|
32
|
+
printStreamRemoved(stream: Stream): void;
|
|
33
|
+
printInvalidEmitConfiguration(step: Step, emit: string): void;
|
|
34
|
+
printInvalidSchema(topic: string, step: Step[]): void;
|
|
35
|
+
printValidationError(stepPath: string, validationError: ValidationError): void;
|
|
36
|
+
getRelativePath(filePath: string): string;
|
|
37
|
+
getStepType(step: Step): string;
|
|
38
|
+
getStepPath(step: Step): string;
|
|
39
|
+
getStreamPath(stream: Stream): string;
|
|
40
|
+
printPluginLog(message: string): void;
|
|
41
|
+
printPluginWarn(message: string): void;
|
|
42
|
+
printPluginError(message: string, ...args: unknown[]): void;
|
|
43
|
+
}
|
|
44
|
+
declare class NoPrinter extends Printer {
|
|
45
|
+
constructor();
|
|
46
|
+
printEventInputValidationError(): void;
|
|
47
|
+
printInvalidEmit(): void;
|
|
48
|
+
printStepCreated(): void;
|
|
49
|
+
printStepUpdated(): void;
|
|
50
|
+
printStepRemoved(): void;
|
|
51
|
+
printFlowCreated(): void;
|
|
52
|
+
printFlowUpdated(): void;
|
|
53
|
+
printFlowRemoved(): void;
|
|
54
|
+
printStepType(): void;
|
|
55
|
+
printStepPath(): void;
|
|
56
|
+
printStreamCreated(): void;
|
|
57
|
+
printStreamUpdated(): void;
|
|
58
|
+
printStreamRemoved(): void;
|
|
59
|
+
printPluginLog(): void;
|
|
60
|
+
printPluginWarn(): void;
|
|
61
|
+
printPluginError(): void;
|
|
62
|
+
}
|
|
63
|
+
//#endregion
|
|
64
|
+
export { NoPrinter, Printer };
|
|
65
|
+
//# sourceMappingURL=printer.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"printer.d.mts","names":[],"sources":["../../src/printer.ts"],"sourcesContent":[],"mappings":";;;;;cAsBa,OAAA;;EAAA,WAAO,CAAA,OAAA,EAAA,MAAA;EA0CK,OAAA,EAAA,MAAA;EAMA,OAAA,EAAA,MAAA;EAIA,UAAA,EAAA,MAAA;EAIA,QAAA,EAAA,MAAA;EAgBI,KAAA,EAAA,MAAA;EAIA,OAAA,EAAA,MAAA;EAIA,OAAA,EAAA,MAAA;EAIS,8BAAA,CAAA,IAAA,EAAA;IAMI,KAAA,EAAA,MAAA;EAOgB,CAAA,EAAA,OAAA,EAAA;IAkBtC,aAAA,CAAA,EAAA,MAAA,EAAA;IASA,WAAA,CAAA,EAAA,MAAA,EAAA;IAKI,cAAA,CAAA,EAAA,MAAA,EAAA;EAAM,CAAA,CAAA,EAAA,IAAA;EAqBjB,gBAAU,CAAA,IAAA,EA5GE,IA4GM,EAAA,IAAO,EAAA,MAAA,CAAA,EAAA,IAAA;yBAtGb;yBAIA;yBAIA;;;;6BAgBI;6BAIA;6BAIA;sCAIS;0CAMI;0DAOgB;;oBAkBtC;oBASA;wBAKI;;;;;cAqBX,SAAA,SAAkB,OAAA"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { isApiStep, isCronStep, isEventStep, isNoopStep } from "./guards.mjs";
|
|
2
|
+
import pc from "picocolors";
|
|
3
|
+
import path from "path";
|
|
4
|
+
|
|
5
|
+
//#region src/printer.ts
|
|
6
|
+
const stepTag = pc.bold(pc.magenta("Step"));
|
|
7
|
+
const flowTag = pc.bold(pc.blue("Flow"));
|
|
8
|
+
const streamTag = pc.bold(pc.green("Stream"));
|
|
9
|
+
const registered = pc.green("➜ [REGISTERED]");
|
|
10
|
+
const building = pc.yellow("⚡ [BUILDING]");
|
|
11
|
+
const built = pc.green("✓ [BUILT]");
|
|
12
|
+
const updated = pc.yellow("➜ [UPDATED]");
|
|
13
|
+
const removed = pc.red("➜ [REMOVED]");
|
|
14
|
+
const invalidEmit = pc.red("➜ [INVALID EMIT]");
|
|
15
|
+
const error = pc.red("[ERROR]");
|
|
16
|
+
const warning = pc.yellow("[WARNING]");
|
|
17
|
+
const warnIcon = pc.yellow("⚠");
|
|
18
|
+
const infoIcon = pc.blue("ℹ");
|
|
19
|
+
const errorIcon = pc.red("✖");
|
|
20
|
+
var Printer = class {
|
|
21
|
+
constructor(baseDir) {
|
|
22
|
+
this.baseDir = baseDir;
|
|
23
|
+
this.stepTag = stepTag;
|
|
24
|
+
this.flowTag = flowTag;
|
|
25
|
+
this.registered = registered;
|
|
26
|
+
this.building = building;
|
|
27
|
+
this.built = built;
|
|
28
|
+
this.updated = updated;
|
|
29
|
+
this.removed = removed;
|
|
30
|
+
}
|
|
31
|
+
printEventInputValidationError(emit, details) {
|
|
32
|
+
const emitPath = pc.bold(pc.cyan(`Emit ${emit.topic}`));
|
|
33
|
+
console.log(`${warnIcon} ${warning} ${emitPath} validation issues:`);
|
|
34
|
+
if (!(details.missingFields?.length || details.extraFields?.length || details.typeMismatches?.length)) {
|
|
35
|
+
console.log(`${pc.yellow("│")} No issues found.`);
|
|
36
|
+
console.log(`${pc.yellow("└─")} Validation passed.`);
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
if (details.missingFields?.length) console.log(`${pc.yellow("│")} ${pc.yellow(`⚠ Missing fields: ${details.missingFields.join(", ")}`)}`);
|
|
40
|
+
if (details.extraFields?.length) console.log(`${pc.yellow("│")} ${pc.yellow(`⚠ Extra fields: ${details.extraFields.join(", ")}`)}`);
|
|
41
|
+
if (details.typeMismatches?.length) console.log(`${pc.yellow("│")} ${pc.yellow(`⚠ Type mismatches: ${details.typeMismatches.join(", ")}`)}`);
|
|
42
|
+
console.log(`${pc.yellow("└─")} ${pc.yellow("Payload does not match schema.")}`);
|
|
43
|
+
}
|
|
44
|
+
printInvalidEmit(step, emit) {
|
|
45
|
+
console.log(`${invalidEmit} ${stepTag} ${this.getStepType(step)} ${this.getStepPath(step)} tried to emit an event not defined in the step config: ${pc.yellow(emit)}`);
|
|
46
|
+
}
|
|
47
|
+
printStepCreated(step) {
|
|
48
|
+
console.log(`${registered} ${stepTag} ${this.getStepType(step)} ${this.getStepPath(step)} registered`);
|
|
49
|
+
}
|
|
50
|
+
printStepUpdated(step) {
|
|
51
|
+
console.log(`${updated} ${stepTag} ${this.getStepType(step)} ${this.getStepPath(step)} updated`);
|
|
52
|
+
}
|
|
53
|
+
printStepRemoved(step) {
|
|
54
|
+
console.log(`${removed} ${stepTag} ${this.getStepType(step)} ${this.getStepPath(step)} removed`);
|
|
55
|
+
}
|
|
56
|
+
printFlowCreated(flowName) {
|
|
57
|
+
console.log(`${registered} ${flowTag} ${pc.bold(pc.cyan(flowName))} registered`);
|
|
58
|
+
}
|
|
59
|
+
printFlowUpdated(flowName) {
|
|
60
|
+
console.log(`${updated} ${flowTag} ${pc.bold(pc.cyan(flowName))} updated`);
|
|
61
|
+
}
|
|
62
|
+
printFlowRemoved(flowName) {
|
|
63
|
+
console.log(`${removed} ${flowTag} ${pc.bold(pc.cyan(flowName))} removed`);
|
|
64
|
+
}
|
|
65
|
+
printStreamCreated(stream) {
|
|
66
|
+
console.log(`${registered} ${streamTag} ${this.getStreamPath(stream)} registered`);
|
|
67
|
+
}
|
|
68
|
+
printStreamUpdated(stream) {
|
|
69
|
+
console.log(`${updated} ${streamTag} ${this.getStreamPath(stream)} updated`);
|
|
70
|
+
}
|
|
71
|
+
printStreamRemoved(stream) {
|
|
72
|
+
console.log(`${removed} ${streamTag} ${this.getStreamPath(stream)} removed`);
|
|
73
|
+
}
|
|
74
|
+
printInvalidEmitConfiguration(step, emit) {
|
|
75
|
+
console.log(`${warnIcon} ${warning} ${stepTag} ${this.getStepType(step)} ${this.getStepPath(step)} emits to ${pc.yellow(emit)}, but there is no subscriber defined`);
|
|
76
|
+
}
|
|
77
|
+
printInvalidSchema(topic, step) {
|
|
78
|
+
console.log(`${error} Topic ${pc.bold(pc.blue(topic))} has incompatible schemas in the following steps:`);
|
|
79
|
+
step.forEach((step$1) => {
|
|
80
|
+
console.log(`${pc.red(" ✖")} ${this.getStepPath(step$1)}`);
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
printValidationError(stepPath, validationError) {
|
|
84
|
+
const relativePath = this.getRelativePath(stepPath);
|
|
85
|
+
console.log(`${error} ${pc.bold(pc.cyan(relativePath))}`);
|
|
86
|
+
validationError.errors?.forEach((error$1) => {
|
|
87
|
+
if (error$1.path) console.log(`${pc.red("│")} ${pc.yellow(`✖ ${error$1.path}`)}: ${error$1.message}`);
|
|
88
|
+
else console.log(`${pc.red("│")} ${pc.yellow("✖")} ${error$1.message}`);
|
|
89
|
+
});
|
|
90
|
+
console.log(`${pc.red("└─")} ${pc.red(validationError.error)} `);
|
|
91
|
+
}
|
|
92
|
+
getRelativePath(filePath) {
|
|
93
|
+
return path.relative(this.baseDir, filePath);
|
|
94
|
+
}
|
|
95
|
+
getStepType(step) {
|
|
96
|
+
if (isApiStep(step)) return pc.gray("(API)");
|
|
97
|
+
if (isEventStep(step)) return pc.gray("(Event)");
|
|
98
|
+
if (isCronStep(step)) return pc.gray("(Cron)");
|
|
99
|
+
if (isNoopStep(step)) return pc.gray("(Noop)");
|
|
100
|
+
return pc.gray("(Unknown)");
|
|
101
|
+
}
|
|
102
|
+
getStepPath(step) {
|
|
103
|
+
const stepPath = this.getRelativePath(step.filePath);
|
|
104
|
+
return pc.bold(pc.cyan(stepPath));
|
|
105
|
+
}
|
|
106
|
+
getStreamPath(stream) {
|
|
107
|
+
const streamPath = this.getRelativePath(stream.filePath);
|
|
108
|
+
return pc.bold(pc.magenta(streamPath));
|
|
109
|
+
}
|
|
110
|
+
printPluginLog(message) {
|
|
111
|
+
const pluginTag = pc.bold(pc.cyan("[motia-plugins]"));
|
|
112
|
+
console.log(`${infoIcon} ${pluginTag} ${message}`);
|
|
113
|
+
}
|
|
114
|
+
printPluginWarn(message) {
|
|
115
|
+
const pluginTag = pc.bold(pc.cyan("[motia-plugins]"));
|
|
116
|
+
console.warn(`${warnIcon} ${pluginTag} ${pc.yellow(message)}`);
|
|
117
|
+
}
|
|
118
|
+
printPluginError(message, ...args) {
|
|
119
|
+
const pluginTag = pc.bold(pc.cyan("[motia-plugins]"));
|
|
120
|
+
console.error(`${errorIcon} ${pluginTag} ${pc.red(message)}`, ...args);
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
var NoPrinter = class extends Printer {
|
|
124
|
+
constructor() {
|
|
125
|
+
super("");
|
|
126
|
+
}
|
|
127
|
+
printEventInputValidationError() {}
|
|
128
|
+
printInvalidEmit() {}
|
|
129
|
+
printStepCreated() {}
|
|
130
|
+
printStepUpdated() {}
|
|
131
|
+
printStepRemoved() {}
|
|
132
|
+
printFlowCreated() {}
|
|
133
|
+
printFlowUpdated() {}
|
|
134
|
+
printFlowRemoved() {}
|
|
135
|
+
printStepType() {}
|
|
136
|
+
printStepPath() {}
|
|
137
|
+
printStreamCreated() {}
|
|
138
|
+
printStreamUpdated() {}
|
|
139
|
+
printStreamRemoved() {}
|
|
140
|
+
printPluginLog() {}
|
|
141
|
+
printPluginWarn() {}
|
|
142
|
+
printPluginError() {}
|
|
143
|
+
};
|
|
144
|
+
|
|
145
|
+
//#endregion
|
|
146
|
+
export { NoPrinter, Printer };
|
|
147
|
+
//# sourceMappingURL=printer.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"printer.mjs","names":["baseDir: string","step","error"],"sources":["../../src/printer.ts"],"sourcesContent":["import path from 'path'\nimport pc from 'picocolors'\nimport { isApiStep, isCronStep, isEventStep, isNoopStep } from './guards'\nimport type { ValidationError } from './step-validator'\nimport type { Step } from './types'\nimport type { Stream } from './types-stream'\n\nconst stepTag = pc.bold(pc.magenta('Step'))\nconst flowTag = pc.bold(pc.blue('Flow'))\nconst streamTag = pc.bold(pc.green('Stream'))\nconst registered = pc.green('➜ [REGISTERED]')\nconst building = pc.yellow('⚡ [BUILDING]')\nconst built = pc.green('✓ [BUILT]')\nconst updated = pc.yellow('➜ [UPDATED]')\nconst removed = pc.red('➜ [REMOVED]')\nconst invalidEmit = pc.red('➜ [INVALID EMIT]')\nconst error = pc.red('[ERROR]')\nconst warning = pc.yellow('[WARNING]')\nconst warnIcon = pc.yellow('⚠')\nconst infoIcon = pc.blue('ℹ')\nconst errorIcon = pc.red('✖')\n\nexport class Printer {\n constructor(private readonly baseDir: string) {}\n\n stepTag = stepTag\n flowTag = flowTag\n registered = registered\n building = building\n built = built\n updated = updated\n removed = removed\n\n printEventInputValidationError(\n emit: { topic: string },\n details: { missingFields?: string[]; extraFields?: string[]; typeMismatches?: string[] },\n ) {\n const emitPath = pc.bold(pc.cyan(`Emit ${emit.topic}`))\n\n console.log(`${warnIcon} ${warning} ${emitPath} validation issues:`)\n\n const hasAny = details.missingFields?.length || details.extraFields?.length || details.typeMismatches?.length\n\n if (!hasAny) {\n console.log(`${pc.yellow('│')} No issues found.`)\n console.log(`${pc.yellow('└─')} Validation passed.`)\n return\n }\n\n if (details.missingFields?.length) {\n console.log(`${pc.yellow('│')} ${pc.yellow(`⚠ Missing fields: ${details.missingFields.join(', ')}`)}`)\n }\n\n if (details.extraFields?.length) {\n console.log(`${pc.yellow('│')} ${pc.yellow(`⚠ Extra fields: ${details.extraFields.join(', ')}`)}`)\n }\n\n if (details.typeMismatches?.length) {\n console.log(`${pc.yellow('│')} ${pc.yellow(`⚠ Type mismatches: ${details.typeMismatches.join(', ')}`)}`)\n }\n\n console.log(`${pc.yellow('└─')} ${pc.yellow('Payload does not match schema.')}`)\n }\n\n printInvalidEmit(step: Step, emit: string) {\n console.log(\n `${invalidEmit} ${stepTag} ${this.getStepType(step)} ${this.getStepPath(step)} tried to emit an event not defined in the step config: ${pc.yellow(emit)}`,\n )\n }\n\n printStepCreated(step: Step) {\n console.log(`${registered} ${stepTag} ${this.getStepType(step)} ${this.getStepPath(step)} registered`)\n }\n\n printStepUpdated(step: Step) {\n console.log(`${updated} ${stepTag} ${this.getStepType(step)} ${this.getStepPath(step)} updated`)\n }\n\n printStepRemoved(step: Step) {\n console.log(`${removed} ${stepTag} ${this.getStepType(step)} ${this.getStepPath(step)} removed`)\n }\n\n printFlowCreated(flowName: string) {\n console.log(`${registered} ${flowTag} ${pc.bold(pc.cyan(flowName))} registered`)\n }\n\n printFlowUpdated(flowName: string) {\n console.log(`${updated} ${flowTag} ${pc.bold(pc.cyan(flowName))} updated`)\n }\n\n printFlowRemoved(flowName: string) {\n console.log(`${removed} ${flowTag} ${pc.bold(pc.cyan(flowName))} removed`)\n }\n\n printStreamCreated(stream: Stream) {\n console.log(`${registered} ${streamTag} ${this.getStreamPath(stream)} registered`)\n }\n\n printStreamUpdated(stream: Stream) {\n console.log(`${updated} ${streamTag} ${this.getStreamPath(stream)} updated`)\n }\n\n printStreamRemoved(stream: Stream) {\n console.log(`${removed} ${streamTag} ${this.getStreamPath(stream)} removed`)\n }\n\n printInvalidEmitConfiguration(step: Step, emit: string) {\n console.log(\n `${warnIcon} ${warning} ${stepTag} ${this.getStepType(step)} ${this.getStepPath(step)} emits to ${pc.yellow(emit)}, but there is no subscriber defined`,\n )\n }\n\n printInvalidSchema(topic: string, step: Step[]) {\n console.log(`${error} Topic ${pc.bold(pc.blue(topic))} has incompatible schemas in the following steps:`)\n step.forEach((step) => {\n console.log(`${pc.red(' ✖')} ${this.getStepPath(step)}`)\n })\n }\n\n printValidationError(stepPath: string, validationError: ValidationError) {\n const relativePath = this.getRelativePath(stepPath)\n\n console.log(`${error} ${pc.bold(pc.cyan(relativePath))}`)\n validationError.errors?.forEach((error) => {\n if (error.path) {\n console.log(`${pc.red('│')} ${pc.yellow(`✖ ${error.path}`)}: ${error.message}`)\n } else {\n console.log(`${pc.red('│')} ${pc.yellow('✖')} ${error.message}`)\n }\n })\n console.log(`${pc.red('└─')} ${pc.red(validationError.error)} `)\n }\n\n getRelativePath(filePath: string) {\n return path.relative(this.baseDir, filePath)\n }\n\n getStepType(step: Step) {\n if (isApiStep(step)) return pc.gray('(API)')\n if (isEventStep(step)) return pc.gray('(Event)')\n if (isCronStep(step)) return pc.gray('(Cron)')\n if (isNoopStep(step)) return pc.gray('(Noop)')\n\n return pc.gray('(Unknown)')\n }\n\n getStepPath(step: Step) {\n const stepPath = this.getRelativePath(step.filePath)\n return pc.bold(pc.cyan(stepPath))\n }\n\n getStreamPath(stream: Stream) {\n const streamPath = this.getRelativePath(stream.filePath)\n return pc.bold(pc.magenta(streamPath))\n }\n\n printPluginLog(message: string) {\n const pluginTag = pc.bold(pc.cyan('[motia-plugins]'))\n console.log(`${infoIcon} ${pluginTag} ${message}`)\n }\n\n printPluginWarn(message: string) {\n const pluginTag = pc.bold(pc.cyan('[motia-plugins]'))\n console.warn(`${warnIcon} ${pluginTag} ${pc.yellow(message)}`)\n }\n\n printPluginError(message: string, ...args: unknown[]) {\n const pluginTag = pc.bold(pc.cyan('[motia-plugins]'))\n console.error(`${errorIcon} ${pluginTag} ${pc.red(message)}`, ...args)\n }\n}\n\nexport class NoPrinter extends Printer {\n constructor() {\n super('')\n }\n\n printEventInputValidationError() {}\n\n printInvalidEmit() {}\n printStepCreated() {}\n printStepUpdated() {}\n printStepRemoved() {}\n printFlowCreated() {}\n printFlowUpdated() {}\n printFlowRemoved() {}\n printStepType() {}\n printStepPath() {}\n\n printStreamCreated() {}\n printStreamUpdated() {}\n printStreamRemoved() {}\n\n printPluginLog() {}\n printPluginWarn() {}\n printPluginError() {}\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
//#region src/process-communication/communication-config.ts
|
|
2
|
+
function createCommunicationConfig(command, projectRoot) {
|
|
3
|
+
const type = command === "python" && process.platform === "win32" ? "rpc" : "ipc";
|
|
4
|
+
const spawnOptions = { stdio: type === "rpc" ? [
|
|
5
|
+
"pipe",
|
|
6
|
+
"pipe",
|
|
7
|
+
"inherit"
|
|
8
|
+
] : [
|
|
9
|
+
"inherit",
|
|
10
|
+
"inherit",
|
|
11
|
+
"inherit",
|
|
12
|
+
"ipc"
|
|
13
|
+
] };
|
|
14
|
+
if (command === "python") spawnOptions.env = {
|
|
15
|
+
...process.env,
|
|
16
|
+
PYTHONPATH: projectRoot || process.cwd()
|
|
17
|
+
};
|
|
18
|
+
return {
|
|
19
|
+
type,
|
|
20
|
+
spawnOptions
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
//#endregion
|
|
25
|
+
export { createCommunicationConfig };
|
|
26
|
+
//# sourceMappingURL=communication-config.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"communication-config.mjs","names":["spawnOptions: SpawnOptions"],"sources":["../../../src/process-communication/communication-config.ts"],"sourcesContent":["import type { SpawnOptions } from 'child_process'\n\nexport type CommunicationType = 'rpc' | 'ipc'\n\nexport interface CommunicationConfig {\n type: CommunicationType\n spawnOptions: SpawnOptions\n}\n\nexport function createCommunicationConfig(command: string, projectRoot?: string): CommunicationConfig {\n const type = command === 'python' && process.platform === 'win32' ? 'rpc' : 'ipc'\n\n const spawnOptions: SpawnOptions = {\n stdio:\n type === 'rpc'\n ? ['pipe', 'pipe', 'inherit'] // RPC: capture stdout\n : ['inherit', 'inherit', 'inherit', 'ipc'], // IPC: include IPC channel\n }\n\n if (command === 'python') {\n spawnOptions.env = {\n ...process.env,\n PYTHONPATH: projectRoot || process.cwd(),\n }\n }\n\n return { type, spawnOptions }\n}\n"],"mappings":";AASA,SAAgB,0BAA0B,SAAiB,aAA2C;CACpG,MAAM,OAAO,YAAY,YAAY,QAAQ,aAAa,UAAU,QAAQ;CAE5E,MAAMA,eAA6B,EACjC,OACE,SAAS,QACL;EAAC;EAAQ;EAAQ;EAAU,GAC3B;EAAC;EAAW;EAAW;EAAW;EAAM,EAC/C;AAED,KAAI,YAAY,SACd,cAAa,MAAM;EACjB,GAAG,QAAQ;EACX,YAAY,eAAe,QAAQ,KAAK;EACzC;AAGH,QAAO;EAAE;EAAM;EAAc"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { RpcProcessor } from "../step-handler-rpc-processor.mjs";
|
|
2
|
+
import { RpcStdinProcessor } from "../step-handler-rpc-stdin-processor.mjs";
|
|
3
|
+
import { createCommunicationConfig } from "./communication-config.mjs";
|
|
4
|
+
import { spawn } from "child_process";
|
|
5
|
+
|
|
6
|
+
//#region src/process-communication/process-manager.ts
|
|
7
|
+
var ProcessManager = class {
|
|
8
|
+
constructor(options) {
|
|
9
|
+
this.options = options;
|
|
10
|
+
}
|
|
11
|
+
async spawn() {
|
|
12
|
+
const { command, args, logger, context = "Process", projectRoot } = this.options;
|
|
13
|
+
const commConfig = createCommunicationConfig(command, projectRoot);
|
|
14
|
+
this.communicationType = commConfig.type;
|
|
15
|
+
logger.debug(`[${context}] Spawning process`, {
|
|
16
|
+
command,
|
|
17
|
+
args,
|
|
18
|
+
communicationType: this.communicationType
|
|
19
|
+
});
|
|
20
|
+
this.child = spawn(command, args, commConfig.spawnOptions);
|
|
21
|
+
this.processor = this.communicationType === "rpc" ? new RpcStdinProcessor(this.child) : new RpcProcessor(this.child);
|
|
22
|
+
await this.processor.init();
|
|
23
|
+
return this.child;
|
|
24
|
+
}
|
|
25
|
+
handler(method, handler) {
|
|
26
|
+
if (!this.processor) throw new Error("Process not spawned yet. Call spawn() first.");
|
|
27
|
+
this.processor.handler(method, handler);
|
|
28
|
+
}
|
|
29
|
+
onMessage(callback) {
|
|
30
|
+
if (!this.processor) throw new Error("Process not spawned yet. Call spawn() first.");
|
|
31
|
+
this.processor.onMessage(callback);
|
|
32
|
+
}
|
|
33
|
+
onProcessClose(callback) {
|
|
34
|
+
if (!this.child) throw new Error("Process not spawned yet. Call spawn() first.");
|
|
35
|
+
this.child.on("close", callback);
|
|
36
|
+
}
|
|
37
|
+
onProcessError(callback) {
|
|
38
|
+
if (!this.child) throw new Error("Process not spawned yet. Call spawn() first.");
|
|
39
|
+
this.child.on("error", callback);
|
|
40
|
+
}
|
|
41
|
+
onStderr(callback) {
|
|
42
|
+
if (!this.child) throw new Error("Process not spawned yet. Call spawn() first.");
|
|
43
|
+
this.child.stderr?.on("data", callback);
|
|
44
|
+
}
|
|
45
|
+
onStdout(callback) {
|
|
46
|
+
if (!this.child) throw new Error("Process not spawned yet. Call spawn() first.");
|
|
47
|
+
if (this.communicationType !== "rpc") this.child.stdout?.on("data", callback);
|
|
48
|
+
}
|
|
49
|
+
kill() {
|
|
50
|
+
if (this.child) this.child.kill("SIGKILL");
|
|
51
|
+
}
|
|
52
|
+
close() {
|
|
53
|
+
if (this.processor) this.processor.close();
|
|
54
|
+
this.processor = void 0;
|
|
55
|
+
this.child = void 0;
|
|
56
|
+
}
|
|
57
|
+
get process() {
|
|
58
|
+
return this.child;
|
|
59
|
+
}
|
|
60
|
+
get commType() {
|
|
61
|
+
return this.communicationType;
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
//#endregion
|
|
66
|
+
export { ProcessManager };
|
|
67
|
+
//# sourceMappingURL=process-manager.mjs.map
|