@uploadista/core 0.0.2
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/.turbo/turbo-build.log +5 -0
- package/.turbo/turbo-check.log +231 -0
- package/.turbo/turbo-format.log +5 -0
- package/LICENSE +21 -0
- package/README.md +1120 -0
- package/dist/chunk-CUT6urMc.cjs +1 -0
- package/dist/debounce-C2SeqcxD.js +2 -0
- package/dist/debounce-C2SeqcxD.js.map +1 -0
- package/dist/debounce-LZK7yS7Z.cjs +1 -0
- package/dist/errors/index.cjs +1 -0
- package/dist/errors/index.d.cts +3 -0
- package/dist/errors/index.d.ts +3 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +2 -0
- package/dist/errors/uploadista-error.d.ts +209 -0
- package/dist/errors/uploadista-error.d.ts.map +1 -0
- package/dist/errors/uploadista-error.js +322 -0
- package/dist/errors-8i_aMxOE.js +1 -0
- package/dist/errors-CRm1FHHT.cjs +0 -0
- package/dist/flow/edge.d.ts +47 -0
- package/dist/flow/edge.d.ts.map +1 -0
- package/dist/flow/edge.js +40 -0
- package/dist/flow/event.d.ts +206 -0
- package/dist/flow/event.d.ts.map +1 -0
- package/dist/flow/event.js +53 -0
- package/dist/flow/flow-server.d.ts +223 -0
- package/dist/flow/flow-server.d.ts.map +1 -0
- package/dist/flow/flow-server.js +614 -0
- package/dist/flow/flow.d.ts +238 -0
- package/dist/flow/flow.d.ts.map +1 -0
- package/dist/flow/flow.js +629 -0
- package/dist/flow/index.cjs +1 -0
- package/dist/flow/index.d.cts +6 -0
- package/dist/flow/index.d.ts +24 -0
- package/dist/flow/index.d.ts.map +1 -0
- package/dist/flow/index.js +24 -0
- package/dist/flow/node.d.ts +136 -0
- package/dist/flow/node.d.ts.map +1 -0
- package/dist/flow/node.js +153 -0
- package/dist/flow/nodes/index.d.ts +8 -0
- package/dist/flow/nodes/index.d.ts.map +1 -0
- package/dist/flow/nodes/index.js +7 -0
- package/dist/flow/nodes/input-node.d.ts +78 -0
- package/dist/flow/nodes/input-node.d.ts.map +1 -0
- package/dist/flow/nodes/input-node.js +233 -0
- package/dist/flow/nodes/storage-node.d.ts +67 -0
- package/dist/flow/nodes/storage-node.d.ts.map +1 -0
- package/dist/flow/nodes/storage-node.js +94 -0
- package/dist/flow/nodes/streaming-input-node.d.ts +69 -0
- package/dist/flow/nodes/streaming-input-node.d.ts.map +1 -0
- package/dist/flow/nodes/streaming-input-node.js +156 -0
- package/dist/flow/nodes/transform-node.d.ts +85 -0
- package/dist/flow/nodes/transform-node.d.ts.map +1 -0
- package/dist/flow/nodes/transform-node.js +107 -0
- package/dist/flow/parallel-scheduler.d.ts +175 -0
- package/dist/flow/parallel-scheduler.d.ts.map +1 -0
- package/dist/flow/parallel-scheduler.js +193 -0
- package/dist/flow/plugins/credential-provider.d.ts +47 -0
- package/dist/flow/plugins/credential-provider.d.ts.map +1 -0
- package/dist/flow/plugins/credential-provider.js +24 -0
- package/dist/flow/plugins/image-ai-plugin.d.ts +61 -0
- package/dist/flow/plugins/image-ai-plugin.d.ts.map +1 -0
- package/dist/flow/plugins/image-ai-plugin.js +21 -0
- package/dist/flow/plugins/image-plugin.d.ts +52 -0
- package/dist/flow/plugins/image-plugin.d.ts.map +1 -0
- package/dist/flow/plugins/image-plugin.js +22 -0
- package/dist/flow/plugins/types/describe-image-node.d.ts +16 -0
- package/dist/flow/plugins/types/describe-image-node.d.ts.map +1 -0
- package/dist/flow/plugins/types/describe-image-node.js +9 -0
- package/dist/flow/plugins/types/index.d.ts +9 -0
- package/dist/flow/plugins/types/index.d.ts.map +1 -0
- package/dist/flow/plugins/types/index.js +8 -0
- package/dist/flow/plugins/types/optimize-node.d.ts +20 -0
- package/dist/flow/plugins/types/optimize-node.d.ts.map +1 -0
- package/dist/flow/plugins/types/optimize-node.js +11 -0
- package/dist/flow/plugins/types/remove-background-node.d.ts +16 -0
- package/dist/flow/plugins/types/remove-background-node.d.ts.map +1 -0
- package/dist/flow/plugins/types/remove-background-node.js +9 -0
- package/dist/flow/plugins/types/resize-node.d.ts +21 -0
- package/dist/flow/plugins/types/resize-node.d.ts.map +1 -0
- package/dist/flow/plugins/types/resize-node.js +16 -0
- package/dist/flow/plugins/zip-plugin.d.ts +62 -0
- package/dist/flow/plugins/zip-plugin.d.ts.map +1 -0
- package/dist/flow/plugins/zip-plugin.js +21 -0
- package/dist/flow/typed-flow.d.ts +90 -0
- package/dist/flow/typed-flow.d.ts.map +1 -0
- package/dist/flow/typed-flow.js +59 -0
- package/dist/flow/types/flow-file.d.ts +45 -0
- package/dist/flow/types/flow-file.d.ts.map +1 -0
- package/dist/flow/types/flow-file.js +27 -0
- package/dist/flow/types/flow-job.d.ts +118 -0
- package/dist/flow/types/flow-job.d.ts.map +1 -0
- package/dist/flow/types/flow-job.js +11 -0
- package/dist/flow/types/flow-types.d.ts +321 -0
- package/dist/flow/types/flow-types.d.ts.map +1 -0
- package/dist/flow/types/flow-types.js +52 -0
- package/dist/flow/types/index.d.ts +4 -0
- package/dist/flow/types/index.d.ts.map +1 -0
- package/dist/flow/types/index.js +3 -0
- package/dist/flow/types/run-args.d.ts +38 -0
- package/dist/flow/types/run-args.d.ts.map +1 -0
- package/dist/flow/types/run-args.js +30 -0
- package/dist/flow/types/type-validator.d.ts +26 -0
- package/dist/flow/types/type-validator.d.ts.map +1 -0
- package/dist/flow/types/type-validator.js +134 -0
- package/dist/flow/utils/resolve-upload-metadata.d.ts +11 -0
- package/dist/flow/utils/resolve-upload-metadata.d.ts.map +1 -0
- package/dist/flow/utils/resolve-upload-metadata.js +28 -0
- package/dist/flow-2zXnEiWL.cjs +1 -0
- package/dist/flow-CRaKy7Vj.js +2 -0
- package/dist/flow-CRaKy7Vj.js.map +1 -0
- package/dist/generate-id-Dm-Vboxq.d.ts +34 -0
- package/dist/generate-id-Dm-Vboxq.d.ts.map +1 -0
- package/dist/generate-id-LjJRLD6N.d.cts +34 -0
- package/dist/generate-id-LjJRLD6N.d.cts.map +1 -0
- package/dist/generate-id-xHp_Z7Cl.cjs +1 -0
- package/dist/generate-id-yohS1ZDk.js +2 -0
- package/dist/generate-id-yohS1ZDk.js.map +1 -0
- package/dist/index-BO8GZlbD.d.cts +1040 -0
- package/dist/index-BO8GZlbD.d.cts.map +1 -0
- package/dist/index-BoGG5KAY.d.ts +1 -0
- package/dist/index-BtBZHVmz.d.cts +1 -0
- package/dist/index-D-CoVpkZ.d.ts +1004 -0
- package/dist/index-D-CoVpkZ.d.ts.map +1 -0
- package/dist/index.cjs +1 -0
- package/dist/index.d.cts +6 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/dist/logger/logger.cjs +1 -0
- package/dist/logger/logger.d.cts +8 -0
- package/dist/logger/logger.d.cts.map +1 -0
- package/dist/logger/logger.d.ts +5 -0
- package/dist/logger/logger.d.ts.map +1 -0
- package/dist/logger/logger.js +10 -0
- package/dist/logger/logger.js.map +1 -0
- package/dist/semaphore-0ZwjVpyF.js +2 -0
- package/dist/semaphore-0ZwjVpyF.js.map +1 -0
- package/dist/semaphore-BHprIjFI.d.cts +37 -0
- package/dist/semaphore-BHprIjFI.d.cts.map +1 -0
- package/dist/semaphore-DThupBkc.d.ts +37 -0
- package/dist/semaphore-DThupBkc.d.ts.map +1 -0
- package/dist/semaphore-DVrONiAV.cjs +1 -0
- package/dist/stream-limiter-CoWKv39w.js +2 -0
- package/dist/stream-limiter-CoWKv39w.js.map +1 -0
- package/dist/stream-limiter-JgOwmkMa.cjs +1 -0
- package/dist/streams/multi-stream.cjs +1 -0
- package/dist/streams/multi-stream.d.cts +91 -0
- package/dist/streams/multi-stream.d.cts.map +1 -0
- package/dist/streams/multi-stream.d.ts +86 -0
- package/dist/streams/multi-stream.d.ts.map +1 -0
- package/dist/streams/multi-stream.js +149 -0
- package/dist/streams/multi-stream.js.map +1 -0
- package/dist/streams/stream-limiter.cjs +1 -0
- package/dist/streams/stream-limiter.d.cts +36 -0
- package/dist/streams/stream-limiter.d.cts.map +1 -0
- package/dist/streams/stream-limiter.d.ts +27 -0
- package/dist/streams/stream-limiter.d.ts.map +1 -0
- package/dist/streams/stream-limiter.js +49 -0
- package/dist/streams/stream-splitter.cjs +1 -0
- package/dist/streams/stream-splitter.d.cts +68 -0
- package/dist/streams/stream-splitter.d.cts.map +1 -0
- package/dist/streams/stream-splitter.d.ts +51 -0
- package/dist/streams/stream-splitter.d.ts.map +1 -0
- package/dist/streams/stream-splitter.js +175 -0
- package/dist/streams/stream-splitter.js.map +1 -0
- package/dist/types/data-store-registry.d.ts +13 -0
- package/dist/types/data-store-registry.d.ts.map +1 -0
- package/dist/types/data-store-registry.js +4 -0
- package/dist/types/data-store.d.ts +316 -0
- package/dist/types/data-store.d.ts.map +1 -0
- package/dist/types/data-store.js +157 -0
- package/dist/types/event-broadcaster.d.ts +28 -0
- package/dist/types/event-broadcaster.d.ts.map +1 -0
- package/dist/types/event-broadcaster.js +6 -0
- package/dist/types/event-emitter.d.ts +378 -0
- package/dist/types/event-emitter.d.ts.map +1 -0
- package/dist/types/event-emitter.js +223 -0
- package/dist/types/index.cjs +1 -0
- package/dist/types/index.d.cts +6 -0
- package/dist/types/index.d.ts +10 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +9 -0
- package/dist/types/input-file.d.ts +104 -0
- package/dist/types/input-file.d.ts.map +1 -0
- package/dist/types/input-file.js +27 -0
- package/dist/types/kv-store.d.ts +281 -0
- package/dist/types/kv-store.d.ts.map +1 -0
- package/dist/types/kv-store.js +234 -0
- package/dist/types/middleware.d.ts +17 -0
- package/dist/types/middleware.d.ts.map +1 -0
- package/dist/types/middleware.js +21 -0
- package/dist/types/upload-event.d.ts +105 -0
- package/dist/types/upload-event.d.ts.map +1 -0
- package/dist/types/upload-event.js +71 -0
- package/dist/types/upload-file.d.ts +136 -0
- package/dist/types/upload-file.d.ts.map +1 -0
- package/dist/types/upload-file.js +34 -0
- package/dist/types/websocket.d.ts +144 -0
- package/dist/types/websocket.d.ts.map +1 -0
- package/dist/types/websocket.js +40 -0
- package/dist/types-BT-cvi7T.cjs +1 -0
- package/dist/types-DhU2j-XF.js +2 -0
- package/dist/types-DhU2j-XF.js.map +1 -0
- package/dist/upload/convert-to-stream.d.ts +38 -0
- package/dist/upload/convert-to-stream.d.ts.map +1 -0
- package/dist/upload/convert-to-stream.js +43 -0
- package/dist/upload/convert-upload-to-flow-file.d.ts +14 -0
- package/dist/upload/convert-upload-to-flow-file.d.ts.map +1 -0
- package/dist/upload/convert-upload-to-flow-file.js +21 -0
- package/dist/upload/create-upload.d.ts +68 -0
- package/dist/upload/create-upload.d.ts.map +1 -0
- package/dist/upload/create-upload.js +157 -0
- package/dist/upload/index.cjs +1 -0
- package/dist/upload/index.d.cts +6 -0
- package/dist/upload/index.d.ts +4 -0
- package/dist/upload/index.d.ts.map +1 -0
- package/dist/upload/index.js +3 -0
- package/dist/upload/mime.d.ts +24 -0
- package/dist/upload/mime.d.ts.map +1 -0
- package/dist/upload/mime.js +351 -0
- package/dist/upload/upload-chunk.d.ts +58 -0
- package/dist/upload/upload-chunk.d.ts.map +1 -0
- package/dist/upload/upload-chunk.js +277 -0
- package/dist/upload/upload-server.d.ts +221 -0
- package/dist/upload/upload-server.d.ts.map +1 -0
- package/dist/upload/upload-server.js +181 -0
- package/dist/upload/upload-strategy-negotiator.d.ts +148 -0
- package/dist/upload/upload-strategy-negotiator.d.ts.map +1 -0
- package/dist/upload/upload-strategy-negotiator.js +217 -0
- package/dist/upload/upload-url.d.ts +68 -0
- package/dist/upload/upload-url.d.ts.map +1 -0
- package/dist/upload/upload-url.js +142 -0
- package/dist/upload/write-to-store.d.ts +77 -0
- package/dist/upload/write-to-store.d.ts.map +1 -0
- package/dist/upload/write-to-store.js +147 -0
- package/dist/upload-DLuICjpP.cjs +1 -0
- package/dist/upload-DaXO34dE.js +2 -0
- package/dist/upload-DaXO34dE.js.map +1 -0
- package/dist/uploadista-error-BB-Wdiz9.cjs +22 -0
- package/dist/uploadista-error-BVsVxqvz.js +23 -0
- package/dist/uploadista-error-BVsVxqvz.js.map +1 -0
- package/dist/uploadista-error-CwxYs4EB.d.ts +52 -0
- package/dist/uploadista-error-CwxYs4EB.d.ts.map +1 -0
- package/dist/uploadista-error-kKlhLRhY.d.cts +52 -0
- package/dist/uploadista-error-kKlhLRhY.d.cts.map +1 -0
- package/dist/utils/checksum.d.ts +22 -0
- package/dist/utils/checksum.d.ts.map +1 -0
- package/dist/utils/checksum.js +49 -0
- package/dist/utils/debounce.cjs +1 -0
- package/dist/utils/debounce.d.cts +38 -0
- package/dist/utils/debounce.d.cts.map +1 -0
- package/dist/utils/debounce.d.ts +36 -0
- package/dist/utils/debounce.d.ts.map +1 -0
- package/dist/utils/debounce.js +73 -0
- package/dist/utils/generate-id.cjs +1 -0
- package/dist/utils/generate-id.d.cts +2 -0
- package/dist/utils/generate-id.d.ts +32 -0
- package/dist/utils/generate-id.d.ts.map +1 -0
- package/dist/utils/generate-id.js +23 -0
- package/dist/utils/md5.cjs +1 -0
- package/dist/utils/md5.d.cts +73 -0
- package/dist/utils/md5.d.cts.map +1 -0
- package/dist/utils/md5.d.ts +71 -0
- package/dist/utils/md5.d.ts.map +1 -0
- package/dist/utils/md5.js +417 -0
- package/dist/utils/md5.js.map +1 -0
- package/dist/utils/once.cjs +1 -0
- package/dist/utils/once.d.cts +25 -0
- package/dist/utils/once.d.cts.map +1 -0
- package/dist/utils/once.d.ts +21 -0
- package/dist/utils/once.d.ts.map +1 -0
- package/dist/utils/once.js +54 -0
- package/dist/utils/once.js.map +1 -0
- package/dist/utils/semaphore.cjs +1 -0
- package/dist/utils/semaphore.d.cts +3 -0
- package/dist/utils/semaphore.d.ts +78 -0
- package/dist/utils/semaphore.d.ts.map +1 -0
- package/dist/utils/semaphore.js +134 -0
- package/dist/utils/throttle.cjs +1 -0
- package/dist/utils/throttle.d.cts +24 -0
- package/dist/utils/throttle.d.cts.map +1 -0
- package/dist/utils/throttle.d.ts +18 -0
- package/dist/utils/throttle.d.ts.map +1 -0
- package/dist/utils/throttle.js +20 -0
- package/dist/utils/throttle.js.map +1 -0
- package/docs/PARALLEL_EXECUTION.md +206 -0
- package/docs/PARALLEL_EXECUTION_QUICKSTART.md +142 -0
- package/docs/PARALLEL_EXECUTION_REFACTOR.md +184 -0
- package/package.json +80 -0
- package/src/errors/__tests__/uploadista-error.test.ts +251 -0
- package/src/errors/index.ts +2 -0
- package/src/errors/uploadista-error.ts +394 -0
- package/src/flow/README.md +352 -0
- package/src/flow/edge.test.ts +146 -0
- package/src/flow/edge.ts +60 -0
- package/src/flow/event.ts +229 -0
- package/src/flow/flow-server.ts +1089 -0
- package/src/flow/flow.ts +1050 -0
- package/src/flow/index.ts +28 -0
- package/src/flow/node.ts +249 -0
- package/src/flow/nodes/index.ts +8 -0
- package/src/flow/nodes/input-node.ts +296 -0
- package/src/flow/nodes/storage-node.ts +128 -0
- package/src/flow/nodes/transform-node.ts +154 -0
- package/src/flow/parallel-scheduler.ts +259 -0
- package/src/flow/plugins/credential-provider.ts +48 -0
- package/src/flow/plugins/image-ai-plugin.ts +66 -0
- package/src/flow/plugins/image-plugin.ts +60 -0
- package/src/flow/plugins/types/describe-image-node.ts +16 -0
- package/src/flow/plugins/types/index.ts +9 -0
- package/src/flow/plugins/types/optimize-node.ts +18 -0
- package/src/flow/plugins/types/remove-background-node.ts +18 -0
- package/src/flow/plugins/types/resize-node.ts +26 -0
- package/src/flow/plugins/zip-plugin.ts +69 -0
- package/src/flow/typed-flow.ts +279 -0
- package/src/flow/types/flow-file.ts +51 -0
- package/src/flow/types/flow-job.ts +138 -0
- package/src/flow/types/flow-types.ts +353 -0
- package/src/flow/types/index.ts +6 -0
- package/src/flow/types/run-args.ts +40 -0
- package/src/flow/types/type-validator.ts +204 -0
- package/src/flow/utils/resolve-upload-metadata.ts +48 -0
- package/src/index.ts +5 -0
- package/src/logger/logger.ts +14 -0
- package/src/streams/stream-limiter.test.ts +150 -0
- package/src/streams/stream-limiter.ts +75 -0
- package/src/types/data-store.ts +427 -0
- package/src/types/event-broadcaster.ts +39 -0
- package/src/types/event-emitter.ts +349 -0
- package/src/types/index.ts +9 -0
- package/src/types/input-file.ts +107 -0
- package/src/types/kv-store.ts +375 -0
- package/src/types/middleware.ts +54 -0
- package/src/types/upload-event.ts +75 -0
- package/src/types/upload-file.ts +139 -0
- package/src/types/websocket.ts +65 -0
- package/src/upload/convert-to-stream.ts +48 -0
- package/src/upload/create-upload.ts +214 -0
- package/src/upload/index.ts +3 -0
- package/src/upload/mime.ts +436 -0
- package/src/upload/upload-chunk.ts +364 -0
- package/src/upload/upload-server.ts +390 -0
- package/src/upload/upload-strategy-negotiator.ts +316 -0
- package/src/upload/upload-url.ts +173 -0
- package/src/upload/write-to-store.ts +211 -0
- package/src/utils/checksum.ts +61 -0
- package/src/utils/debounce.test.ts +126 -0
- package/src/utils/debounce.ts +89 -0
- package/src/utils/generate-id.ts +35 -0
- package/src/utils/md5.ts +475 -0
- package/src/utils/once.test.ts +83 -0
- package/src/utils/once.ts +63 -0
- package/src/utils/throttle.test.ts +101 -0
- package/src/utils/throttle.ts +29 -0
- package/tsconfig.json +20 -0
- package/tsconfig.tsbuildinfo +1 -0
- package/tsdown.config.ts +25 -0
- package/vitest.config.ts +15 -0
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Flow execution event types and definitions.
|
|
3
|
+
*
|
|
4
|
+
* This module defines the event system used to monitor and track flow execution.
|
|
5
|
+
* Events are emitted at various stages of flow and node execution, allowing
|
|
6
|
+
* real-time monitoring, logging, and WebSocket updates to clients.
|
|
7
|
+
*
|
|
8
|
+
* @module flow/event
|
|
9
|
+
* @see {@link FlowEvent} for the union of all event types
|
|
10
|
+
*/
|
|
11
|
+
import type { NodeType } from "./node";
|
|
12
|
+
/**
|
|
13
|
+
* Enumeration of all possible flow and node execution event types.
|
|
14
|
+
*
|
|
15
|
+
* Events follow a lifecycle pattern:
|
|
16
|
+
* - Job level: JobStart → ... → JobEnd
|
|
17
|
+
* - Flow level: FlowStart → ... → (FlowEnd | FlowError)
|
|
18
|
+
* - Node level: NodeStart → ... → (NodeEnd | NodePause | NodeError)
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```typescript
|
|
22
|
+
* // Listen for flow completion
|
|
23
|
+
* if (event.eventType === EventType.FlowEnd) {
|
|
24
|
+
* console.log("Flow completed:", event.result);
|
|
25
|
+
* }
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export declare enum EventType {
|
|
29
|
+
/** Emitted when a job starts execution */
|
|
30
|
+
JobStart = "job-start",
|
|
31
|
+
/** Emitted when a job completes (success or failure) */
|
|
32
|
+
JobEnd = "job-end",
|
|
33
|
+
/** Emitted when a flow begins execution */
|
|
34
|
+
FlowStart = "flow-start",
|
|
35
|
+
/** Emitted when a flow completes successfully */
|
|
36
|
+
FlowEnd = "flow-end",
|
|
37
|
+
/** Emitted when a flow encounters an error */
|
|
38
|
+
FlowError = "flow-error",
|
|
39
|
+
/** Emitted when a node starts processing */
|
|
40
|
+
NodeStart = "node-start",
|
|
41
|
+
/** Emitted when a node completes successfully */
|
|
42
|
+
NodeEnd = "node-end",
|
|
43
|
+
/** Emitted when a node pauses (waiting for additional data) */
|
|
44
|
+
NodePause = "node-pause",
|
|
45
|
+
/** Emitted when a paused node resumes execution */
|
|
46
|
+
NodeResume = "node-resume",
|
|
47
|
+
/** Emitted when a node encounters an error */
|
|
48
|
+
NodeError = "node-error",
|
|
49
|
+
/** Emitted for streaming node data (e.g., progress updates) */
|
|
50
|
+
NodeStream = "node-stream",
|
|
51
|
+
/** Emitted for node response data */
|
|
52
|
+
NodeResponse = "node-response"
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Event emitted when a job starts execution.
|
|
56
|
+
*/
|
|
57
|
+
export type FlowEventJobStart = {
|
|
58
|
+
jobId: string;
|
|
59
|
+
eventType: EventType.JobStart;
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* Event emitted when a job completes (either successfully or with failure).
|
|
63
|
+
*/
|
|
64
|
+
export type FlowEventJobEnd = {
|
|
65
|
+
jobId: string;
|
|
66
|
+
eventType: EventType.JobEnd;
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* Event emitted when a flow begins execution.
|
|
70
|
+
* This is the first event after JobStart in the execution lifecycle.
|
|
71
|
+
*/
|
|
72
|
+
export type FlowEventFlowStart = {
|
|
73
|
+
jobId: string;
|
|
74
|
+
flowId: string;
|
|
75
|
+
eventType: EventType.FlowStart;
|
|
76
|
+
};
|
|
77
|
+
/**
|
|
78
|
+
* Event emitted when a flow completes successfully.
|
|
79
|
+
*
|
|
80
|
+
* @property result - The final output from all output nodes in the flow
|
|
81
|
+
*/
|
|
82
|
+
export type FlowEventFlowEnd = {
|
|
83
|
+
jobId: string;
|
|
84
|
+
flowId: string;
|
|
85
|
+
eventType: EventType.FlowEnd;
|
|
86
|
+
result?: unknown;
|
|
87
|
+
};
|
|
88
|
+
/**
|
|
89
|
+
* Event emitted when a flow encounters an unrecoverable error.
|
|
90
|
+
*
|
|
91
|
+
* @property error - Error message describing what went wrong
|
|
92
|
+
*/
|
|
93
|
+
export type FlowEventFlowError = {
|
|
94
|
+
jobId: string;
|
|
95
|
+
flowId: string;
|
|
96
|
+
eventType: EventType.FlowError;
|
|
97
|
+
error: string;
|
|
98
|
+
};
|
|
99
|
+
/**
|
|
100
|
+
* Event emitted when a node begins processing.
|
|
101
|
+
*
|
|
102
|
+
* @property nodeName - Human-readable node name
|
|
103
|
+
* @property nodeType - Type of node (input, transform, conditional, output, etc.)
|
|
104
|
+
*/
|
|
105
|
+
export type FlowEventNodeStart = {
|
|
106
|
+
jobId: string;
|
|
107
|
+
flowId: string;
|
|
108
|
+
nodeId: string;
|
|
109
|
+
eventType: EventType.NodeStart;
|
|
110
|
+
nodeName: string;
|
|
111
|
+
nodeType: NodeType;
|
|
112
|
+
};
|
|
113
|
+
/**
|
|
114
|
+
* Event emitted when a node fails after all retry attempts.
|
|
115
|
+
*
|
|
116
|
+
* @property error - Error message from the failed execution
|
|
117
|
+
* @property retryCount - Number of retry attempts made before giving up
|
|
118
|
+
*/
|
|
119
|
+
export type FlowEventNodeError = {
|
|
120
|
+
jobId: string;
|
|
121
|
+
flowId: string;
|
|
122
|
+
nodeId: string;
|
|
123
|
+
nodeName: string;
|
|
124
|
+
eventType: EventType.NodeError;
|
|
125
|
+
error: string;
|
|
126
|
+
retryCount?: number;
|
|
127
|
+
};
|
|
128
|
+
/**
|
|
129
|
+
* Event emitted when a node completes successfully.
|
|
130
|
+
*
|
|
131
|
+
* @property result - The output data produced by the node
|
|
132
|
+
*/
|
|
133
|
+
export type FlowEventNodeEnd = {
|
|
134
|
+
jobId: string;
|
|
135
|
+
flowId: string;
|
|
136
|
+
nodeId: string;
|
|
137
|
+
eventType: EventType.NodeEnd;
|
|
138
|
+
nodeName: string;
|
|
139
|
+
result?: unknown;
|
|
140
|
+
};
|
|
141
|
+
/**
|
|
142
|
+
* Event emitted when a node pauses execution, waiting for additional data.
|
|
143
|
+
*
|
|
144
|
+
* This typically occurs with input nodes that need more chunks or nodes
|
|
145
|
+
* waiting for external services.
|
|
146
|
+
*
|
|
147
|
+
* @property partialData - Any partial result available before pausing
|
|
148
|
+
*/
|
|
149
|
+
export type FlowEventNodePause = {
|
|
150
|
+
jobId: string;
|
|
151
|
+
flowId: string;
|
|
152
|
+
nodeId: string;
|
|
153
|
+
eventType: EventType.NodePause;
|
|
154
|
+
nodeName: string;
|
|
155
|
+
partialData?: unknown;
|
|
156
|
+
};
|
|
157
|
+
/**
|
|
158
|
+
* Event emitted when a paused node resumes execution.
|
|
159
|
+
*
|
|
160
|
+
* This occurs after providing the additional data needed by a paused node.
|
|
161
|
+
*/
|
|
162
|
+
export type FlowEventNodeResume = {
|
|
163
|
+
jobId: string;
|
|
164
|
+
flowId: string;
|
|
165
|
+
nodeId: string;
|
|
166
|
+
eventType: EventType.NodeResume;
|
|
167
|
+
nodeName: string;
|
|
168
|
+
nodeType: NodeType;
|
|
169
|
+
};
|
|
170
|
+
/**
|
|
171
|
+
* Event emitted for node-specific response data.
|
|
172
|
+
*
|
|
173
|
+
* Used for streaming intermediate results or progress updates.
|
|
174
|
+
*/
|
|
175
|
+
export type FlowEventNodeResponse = {
|
|
176
|
+
jobId: string;
|
|
177
|
+
flowId: string;
|
|
178
|
+
nodeId: string;
|
|
179
|
+
eventType: EventType.NodeResponse;
|
|
180
|
+
nodeName: string;
|
|
181
|
+
data: unknown;
|
|
182
|
+
};
|
|
183
|
+
/**
|
|
184
|
+
* Union of all possible flow execution events.
|
|
185
|
+
*
|
|
186
|
+
* This discriminated union allows type-safe event handling based on eventType.
|
|
187
|
+
*
|
|
188
|
+
* @example
|
|
189
|
+
* ```typescript
|
|
190
|
+
* function handleFlowEvent(event: FlowEvent) {
|
|
191
|
+
* switch (event.eventType) {
|
|
192
|
+
* case EventType.FlowStart:
|
|
193
|
+
* console.log("Flow started:", event.flowId);
|
|
194
|
+
* break;
|
|
195
|
+
* case EventType.NodeEnd:
|
|
196
|
+
* console.log("Node completed:", event.nodeName, event.result);
|
|
197
|
+
* break;
|
|
198
|
+
* case EventType.FlowError:
|
|
199
|
+
* console.error("Flow failed:", event.error);
|
|
200
|
+
* break;
|
|
201
|
+
* }
|
|
202
|
+
* }
|
|
203
|
+
* ```
|
|
204
|
+
*/
|
|
205
|
+
export type FlowEvent = FlowEventJobStart | FlowEventJobEnd | FlowEventFlowStart | FlowEventFlowEnd | FlowEventFlowError | FlowEventNodeStart | FlowEventNodeEnd | FlowEventNodePause | FlowEventNodeResume | FlowEventNodeError;
|
|
206
|
+
//# sourceMappingURL=event.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event.d.ts","sourceRoot":"","sources":["../../src/flow/event.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Flow execution event types and definitions.
|
|
3
|
+
*
|
|
4
|
+
* This module defines the event system used to monitor and track flow execution.
|
|
5
|
+
* Events are emitted at various stages of flow and node execution, allowing
|
|
6
|
+
* real-time monitoring, logging, and WebSocket updates to clients.
|
|
7
|
+
*
|
|
8
|
+
* @module flow/event
|
|
9
|
+
* @see {@link FlowEvent} for the union of all event types
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Enumeration of all possible flow and node execution event types.
|
|
13
|
+
*
|
|
14
|
+
* Events follow a lifecycle pattern:
|
|
15
|
+
* - Job level: JobStart → ... → JobEnd
|
|
16
|
+
* - Flow level: FlowStart → ... → (FlowEnd | FlowError)
|
|
17
|
+
* - Node level: NodeStart → ... → (NodeEnd | NodePause | NodeError)
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```typescript
|
|
21
|
+
* // Listen for flow completion
|
|
22
|
+
* if (event.eventType === EventType.FlowEnd) {
|
|
23
|
+
* console.log("Flow completed:", event.result);
|
|
24
|
+
* }
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export var EventType;
|
|
28
|
+
(function (EventType) {
|
|
29
|
+
/** Emitted when a job starts execution */
|
|
30
|
+
EventType["JobStart"] = "job-start";
|
|
31
|
+
/** Emitted when a job completes (success or failure) */
|
|
32
|
+
EventType["JobEnd"] = "job-end";
|
|
33
|
+
/** Emitted when a flow begins execution */
|
|
34
|
+
EventType["FlowStart"] = "flow-start";
|
|
35
|
+
/** Emitted when a flow completes successfully */
|
|
36
|
+
EventType["FlowEnd"] = "flow-end";
|
|
37
|
+
/** Emitted when a flow encounters an error */
|
|
38
|
+
EventType["FlowError"] = "flow-error";
|
|
39
|
+
/** Emitted when a node starts processing */
|
|
40
|
+
EventType["NodeStart"] = "node-start";
|
|
41
|
+
/** Emitted when a node completes successfully */
|
|
42
|
+
EventType["NodeEnd"] = "node-end";
|
|
43
|
+
/** Emitted when a node pauses (waiting for additional data) */
|
|
44
|
+
EventType["NodePause"] = "node-pause";
|
|
45
|
+
/** Emitted when a paused node resumes execution */
|
|
46
|
+
EventType["NodeResume"] = "node-resume";
|
|
47
|
+
/** Emitted when a node encounters an error */
|
|
48
|
+
EventType["NodeError"] = "node-error";
|
|
49
|
+
/** Emitted for streaming node data (e.g., progress updates) */
|
|
50
|
+
EventType["NodeStream"] = "node-stream";
|
|
51
|
+
/** Emitted for node response data */
|
|
52
|
+
EventType["NodeResponse"] = "node-response";
|
|
53
|
+
})(EventType || (EventType = {}));
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
import { Context, Effect, Layer } from "effect";
|
|
2
|
+
import { UploadistaError } from "../errors";
|
|
3
|
+
import { type Flow, type FlowData } from "../flow";
|
|
4
|
+
import type { KvStore, WebSocketConnection } from "../types";
|
|
5
|
+
import { FlowEventEmitter, FlowJobKVStore } from "../types";
|
|
6
|
+
import { UploadServer } from "../upload";
|
|
7
|
+
import type { FlowJob } from "./types/flow-job";
|
|
8
|
+
/**
|
|
9
|
+
* Flow provider interface that applications must implement.
|
|
10
|
+
*
|
|
11
|
+
* This interface defines how the FlowServer retrieves flow definitions.
|
|
12
|
+
* Applications provide their own implementation to load flows from a database,
|
|
13
|
+
* configuration files, or any other source.
|
|
14
|
+
*
|
|
15
|
+
* @template TRequirements - Additional Effect requirements for flow execution
|
|
16
|
+
*
|
|
17
|
+
* @property getFlow - Retrieves a flow definition by ID with authorization check
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```typescript
|
|
21
|
+
* // Implement a flow provider from database
|
|
22
|
+
* const dbFlowProvider: FlowProviderShape = {
|
|
23
|
+
* getFlow: (flowId, clientId) => Effect.gen(function* () {
|
|
24
|
+
* // Load flow from database
|
|
25
|
+
* const flowData = yield* db.getFlow(flowId);
|
|
26
|
+
*
|
|
27
|
+
* // Check authorization
|
|
28
|
+
* if (flowData.ownerId !== clientId) {
|
|
29
|
+
* return yield* Effect.fail(
|
|
30
|
+
* UploadistaError.fromCode("FLOW_NOT_AUTHORIZED")
|
|
31
|
+
* );
|
|
32
|
+
* }
|
|
33
|
+
*
|
|
34
|
+
* // Create flow instance
|
|
35
|
+
* return createFlow(flowData);
|
|
36
|
+
* })
|
|
37
|
+
* };
|
|
38
|
+
*
|
|
39
|
+
* // Provide to FlowServer
|
|
40
|
+
* const flowProviderLayer = Layer.succeed(FlowProvider, dbFlowProvider);
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
export type FlowProviderShape<TRequirements = any> = {
|
|
44
|
+
getFlow: (flowId: string, clientId: string | null) => Effect.Effect<Flow<any, any, TRequirements>, UploadistaError>;
|
|
45
|
+
};
|
|
46
|
+
declare const FlowProvider_base: Context.TagClass<FlowProvider, "FlowProvider", FlowProviderShape<any>>;
|
|
47
|
+
/**
|
|
48
|
+
* Effect-TS context tag for the FlowProvider service.
|
|
49
|
+
*
|
|
50
|
+
* Applications must provide an implementation of FlowProviderShape
|
|
51
|
+
* to enable the FlowServer to retrieve flow definitions.
|
|
52
|
+
*
|
|
53
|
+
* @example
|
|
54
|
+
* ```typescript
|
|
55
|
+
* // Access FlowProvider in an Effect
|
|
56
|
+
* const effect = Effect.gen(function* () {
|
|
57
|
+
* const provider = yield* FlowProvider;
|
|
58
|
+
* const flow = yield* provider.getFlow("flow123", "client456");
|
|
59
|
+
* return flow;
|
|
60
|
+
* });
|
|
61
|
+
* ```
|
|
62
|
+
*/
|
|
63
|
+
export declare class FlowProvider extends FlowProvider_base {
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* FlowServer service interface.
|
|
67
|
+
*
|
|
68
|
+
* This is the core flow processing service that executes DAG-based file processing pipelines.
|
|
69
|
+
* It manages flow execution, job tracking, node processing, pause/resume functionality,
|
|
70
|
+
* and real-time event broadcasting.
|
|
71
|
+
*
|
|
72
|
+
* All operations return Effect types for composable, type-safe error handling.
|
|
73
|
+
*
|
|
74
|
+
* @property getFlow - Retrieves a flow definition by ID
|
|
75
|
+
* @property getFlowData - Retrieves flow metadata (nodes, edges) without full flow instance
|
|
76
|
+
* @property runFlow - Starts a new flow execution and returns immediately with job ID
|
|
77
|
+
* @property continueFlow - Resumes a paused flow with new data for a specific node
|
|
78
|
+
* @property getJobStatus - Retrieves current status and results of a flow job
|
|
79
|
+
* @property subscribeToFlowEvents - Subscribes WebSocket to flow execution events
|
|
80
|
+
* @property unsubscribeFromFlowEvents - Unsubscribes from flow events
|
|
81
|
+
*
|
|
82
|
+
* @example
|
|
83
|
+
* ```typescript
|
|
84
|
+
* // Execute a flow
|
|
85
|
+
* const program = Effect.gen(function* () {
|
|
86
|
+
* const server = yield* FlowServer;
|
|
87
|
+
*
|
|
88
|
+
* // Start flow execution (returns immediately)
|
|
89
|
+
* const job = yield* server.runFlow({
|
|
90
|
+
* flowId: "resize-optimize",
|
|
91
|
+
* storageId: "s3-production",
|
|
92
|
+
* clientId: "client123",
|
|
93
|
+
* inputs: {
|
|
94
|
+
* input_1: { uploadId: "upload_abc123" }
|
|
95
|
+
* }
|
|
96
|
+
* });
|
|
97
|
+
*
|
|
98
|
+
* // Subscribe to events
|
|
99
|
+
* yield* server.subscribeToFlowEvents(job.id, websocket);
|
|
100
|
+
*
|
|
101
|
+
* // Poll for status
|
|
102
|
+
* const status = yield* server.getJobStatus(job.id);
|
|
103
|
+
* console.log(status.status); // "running", "paused", "completed", or "failed"
|
|
104
|
+
*
|
|
105
|
+
* return job;
|
|
106
|
+
* });
|
|
107
|
+
*
|
|
108
|
+
* // Resume a paused flow
|
|
109
|
+
* const resume = Effect.gen(function* () {
|
|
110
|
+
* const server = yield* FlowServer;
|
|
111
|
+
*
|
|
112
|
+
* // Flow paused waiting for user input at node "approval_1"
|
|
113
|
+
* const job = yield* server.continueFlow({
|
|
114
|
+
* jobId: "job123",
|
|
115
|
+
* nodeId: "approval_1",
|
|
116
|
+
* newData: { approved: true },
|
|
117
|
+
* clientId: "client123"
|
|
118
|
+
* });
|
|
119
|
+
*
|
|
120
|
+
* return job;
|
|
121
|
+
* });
|
|
122
|
+
*
|
|
123
|
+
* // Check flow structure before execution
|
|
124
|
+
* const inspect = Effect.gen(function* () {
|
|
125
|
+
* const server = yield* FlowServer;
|
|
126
|
+
*
|
|
127
|
+
* const flowData = yield* server.getFlowData("resize-optimize", "client123");
|
|
128
|
+
* console.log("Nodes:", flowData.nodes);
|
|
129
|
+
* console.log("Edges:", flowData.edges);
|
|
130
|
+
*
|
|
131
|
+
* return flowData;
|
|
132
|
+
* });
|
|
133
|
+
* ```
|
|
134
|
+
*/
|
|
135
|
+
export type FlowServerShape = {
|
|
136
|
+
getFlow: <TRequirements>(flowId: string, clientId: string | null) => Effect.Effect<Flow<any, any, TRequirements>, UploadistaError>;
|
|
137
|
+
getFlowData: (flowId: string, clientId: string | null) => Effect.Effect<FlowData, UploadistaError>;
|
|
138
|
+
runFlow: <TRequirements>({ flowId, storageId, clientId, inputs, }: {
|
|
139
|
+
flowId: string;
|
|
140
|
+
storageId: string;
|
|
141
|
+
clientId: string | null;
|
|
142
|
+
inputs: any;
|
|
143
|
+
}) => Effect.Effect<FlowJob, UploadistaError, TRequirements>;
|
|
144
|
+
continueFlow: <TRequirements>({ jobId, nodeId, newData, clientId, }: {
|
|
145
|
+
jobId: string;
|
|
146
|
+
nodeId: string;
|
|
147
|
+
newData: unknown;
|
|
148
|
+
clientId: string | null;
|
|
149
|
+
}) => Effect.Effect<FlowJob, UploadistaError, TRequirements>;
|
|
150
|
+
getJobStatus: (jobId: string) => Effect.Effect<FlowJob, UploadistaError>;
|
|
151
|
+
subscribeToFlowEvents: (jobId: string, connection: WebSocketConnection) => Effect.Effect<void, UploadistaError>;
|
|
152
|
+
unsubscribeFromFlowEvents: (jobId: string) => Effect.Effect<void, UploadistaError>;
|
|
153
|
+
};
|
|
154
|
+
declare const FlowServer_base: Context.TagClass<FlowServer, "FlowServer", FlowServerShape>;
|
|
155
|
+
/**
|
|
156
|
+
* Effect-TS context tag for the FlowServer service.
|
|
157
|
+
*
|
|
158
|
+
* Use this tag to access the FlowServer in an Effect context.
|
|
159
|
+
* The server must be provided via a Layer or dependency injection.
|
|
160
|
+
*
|
|
161
|
+
* @example
|
|
162
|
+
* ```typescript
|
|
163
|
+
* // Access FlowServer in an Effect
|
|
164
|
+
* const flowEffect = Effect.gen(function* () {
|
|
165
|
+
* const server = yield* FlowServer;
|
|
166
|
+
* const job = yield* server.runFlow({
|
|
167
|
+
* flowId: "my-flow",
|
|
168
|
+
* storageId: "s3",
|
|
169
|
+
* clientId: null,
|
|
170
|
+
* inputs: {}
|
|
171
|
+
* });
|
|
172
|
+
* return job;
|
|
173
|
+
* });
|
|
174
|
+
*
|
|
175
|
+
* // Provide FlowServer layer
|
|
176
|
+
* const program = flowEffect.pipe(
|
|
177
|
+
* Effect.provide(flowServer),
|
|
178
|
+
* Effect.provide(flowProviderLayer),
|
|
179
|
+
* Effect.provide(flowJobKvStore)
|
|
180
|
+
* );
|
|
181
|
+
* ```
|
|
182
|
+
*/
|
|
183
|
+
export declare class FlowServer extends FlowServer_base {
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Legacy configuration options for FlowServer.
|
|
187
|
+
*
|
|
188
|
+
* @deprecated Use Effect Layers and FlowProvider instead.
|
|
189
|
+
* This type is kept for backward compatibility.
|
|
190
|
+
*
|
|
191
|
+
* @property getFlow - Function to retrieve flow definitions
|
|
192
|
+
* @property kvStore - KV store for flow job metadata
|
|
193
|
+
*/
|
|
194
|
+
export type FlowServerOptions = {
|
|
195
|
+
getFlow: <TRequirements>({ flowId, storageId, }: {
|
|
196
|
+
flowId: string;
|
|
197
|
+
storageId: string;
|
|
198
|
+
}) => Promise<Flow<any, any, TRequirements>>;
|
|
199
|
+
kvStore: KvStore<FlowJob>;
|
|
200
|
+
};
|
|
201
|
+
export declare function createFlowServer(): Effect.Effect<{
|
|
202
|
+
getFlow: <TRequirements>(flowId: string, clientId: string | null) => Effect.Effect<Flow<any, any, any>, UploadistaError, never>;
|
|
203
|
+
getFlowData: (flowId: string, clientId: string | null) => Effect.Effect<FlowData, UploadistaError, never>;
|
|
204
|
+
runFlow: ({ flowId, storageId, clientId, inputs, }: {
|
|
205
|
+
flowId: string;
|
|
206
|
+
storageId: string;
|
|
207
|
+
clientId: string | null;
|
|
208
|
+
inputs: unknown;
|
|
209
|
+
}) => Effect.Effect<FlowJob, UploadistaError, any>;
|
|
210
|
+
getJobStatus: (jobId: string) => Effect.Effect<FlowJob, UploadistaError, never>;
|
|
211
|
+
continueFlow: ({ jobId, nodeId, newData, clientId, }: {
|
|
212
|
+
jobId: string;
|
|
213
|
+
nodeId: string;
|
|
214
|
+
newData: unknown;
|
|
215
|
+
clientId: string | null;
|
|
216
|
+
}) => Effect.Effect<FlowJob, UploadistaError, any>;
|
|
217
|
+
subscribeToFlowEvents: (jobId: string, connection: WebSocketConnection) => Effect.Effect<void, UploadistaError, never>;
|
|
218
|
+
unsubscribeFromFlowEvents: (jobId: string) => Effect.Effect<void, UploadistaError, never>;
|
|
219
|
+
}, never, FlowJobKVStore | FlowEventEmitter | UploadServer | FlowProvider>;
|
|
220
|
+
export declare const flowServer: Layer.Layer<FlowServer, never, FlowJobKVStore | FlowEventEmitter | UploadServer | FlowProvider>;
|
|
221
|
+
export type FlowServerLayer = typeof flowServer;
|
|
222
|
+
export {};
|
|
223
|
+
//# sourceMappingURL=flow-server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flow-server.d.ts","sourceRoot":"","sources":["../../src/flow/flow-server.ts"],"names":[],"mappings":"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"}
|