@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 @@
|
|
|
1
|
+
{"version":3,"file":"index-D-CoVpkZ.d.ts","names":[],"sources":["../src/flow/node.ts","../src/flow/event.ts","../src/flow/types/flow-types.ts","../src/flow/edge.ts","../src/flow/flow.ts","../src/types/upload-file.ts","../src/types/data-store.ts","../src/types/data-store-registry.ts","../src/types/upload-event.ts","../src/types/websocket.ts","../src/types/event-emitter.ts","../src/types/input-file.ts","../src/types/kv-store.ts","../src/types/middleware.ts","../src/flow/types/flow-job.ts","../src/flow/flow-server.ts","../src/flow/nodes/input-node.ts","../src/upload/mime.ts","../src/upload/upload-server.ts","../src/upload/upload-strategy-negotiator.ts","../src/flow/nodes/storage-node.ts","../src/flow/nodes/streaming-input-node.ts","../src/flow/parallel-scheduler.ts","../src/flow/plugins/types/optimize-node.ts","../src/flow/plugins/types/resize-node.ts","../src/flow/plugins/image-plugin.ts","../src/flow/types/flow-file.ts","../src/flow/types/run-args.ts"],"sourcesContent":[],"mappings":"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"}
|
package/dist/index.cjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require(`./uploadista-error-BB-Wdiz9.cjs`);require(`./errors-CRm1FHHT.cjs`);const t=require(`./flow-2zXnEiWL.cjs`),n=require(`./types-BT-cvi7T.cjs`),r=require(`./upload-DLuICjpP.cjs`);require(`./generate-id-xHp_Z7Cl.cjs`),require(`./stream-limiter-JgOwmkMa.cjs`),require(`./semaphore-DVrONiAV.cjs`),exports.BaseEventEmitterService=n.BaseEventEmitterService,exports.BaseKvStoreService=n.BaseKvStoreService,exports.BufferedUploadFileDataStore=n.BufferedUploadFileDataStore,exports.DataStoreRegistry=n.DataStoreRegistry,exports.ERRORS=e.ERROR_CATALOG,exports.ERROR_CATALOG=e.ERROR_CATALOG,exports.EventType=t.EventType,exports.FlowEventEmitter=n.FlowEventEmitter,exports.FlowJobKVStore=n.FlowJobKVStore,exports.FlowProvider=t.FlowProvider,exports.FlowServer=t.FlowServer,exports.ImagePlugin=t.ImagePlugin,exports.MiddlewareService=n.MiddlewareService,exports.MiddlewareServiceLive=n.MiddlewareServiceLive,exports.NodeType=t.NodeType,exports.ParallelScheduler=t.ParallelScheduler,exports.TypedEventEmitter=n.TypedEventEmitter,exports.TypedKvStore=n.TypedKvStore,exports.UploadEventEmitter=n.UploadEventEmitter,exports.UploadEventType=n.UploadEventType,exports.UploadFileDataStore=n.UploadFileDataStore,exports.UploadFileDataStores=n.UploadFileDataStores,exports.UploadFileKVStore=n.UploadFileKVStore,exports.UploadServer=r.UploadServer,exports.UploadStrategyNegotiator=r.UploadStrategyNegotiator,exports.UploadistaError=e.UploadistaError,exports.completeNodeExecution=t.completeNodeExecution,exports.createFlow=t.createFlow,exports.createFlowEdge=t.createFlowEdge,exports.createFlowNode=t.createFlowNode,exports.createFlowServer=t.createFlowServer,exports.createInputNode=t.createInputNode,exports.createStorageNode=t.createStorageNode,exports.createStreamingInputNode=t.createStreamingInputNode,exports.createUploadServer=r.createUploadServer,exports.detectMimeType=r.detectMimeType,exports.eventToMessageSerializer=n.eventToMessageSerializer,exports.flowDataSchema=t.flowDataSchema,exports.flowEventEmitter=n.flowEventEmitter,exports.flowFileBatchSchema=t.flowFileBatchSchema,exports.flowFileSchema=t.flowFileSchema,exports.flowJobKvStore=n.flowJobKvStore,exports.flowServer=t.flowServer,exports.getFlowData=t.getFlowData,exports.getNodeData=t.getNodeData,exports.httpFailureEffect=e.httpFailureEffect,exports.inputFileSchema=n.inputFileSchema,exports.isFlowFile=t.isFlowFile,exports.isUploadistaError=e.isUploadistaError,exports.jsonSerializer=n.jsonSerializer,exports.optimizeParamsSchema=t.optimizeParamsSchema,exports.resizeParamsSchema=t.resizeParamsSchema,exports.runArgsSchema=t.runArgsSchema,exports.storageParamsSchema=t.storageParamsSchema,exports.uploadEventEmitter=n.uploadEventEmitter,exports.uploadEventSchema=n.uploadEventSchema,exports.uploadFileKvStore=n.uploadFileKvStore,exports.uploadFileSchema=n.uploadFileSchema,exports.uploadServer=r.uploadServer,exports.waitingNodeExecution=t.waitingNodeExecution,exports.webSocketMessageSchema=n.webSocketMessageSchema;
|
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { ERROR_CATALOG, UploadistaError, UploadistaErrorCode, httpFailureEffect, isUploadistaError } from "./uploadista-error-kKlhLRhY.cjs";
|
|
2
|
+
import "./index-BtBZHVmz.cjs";
|
|
3
|
+
import { BaseEventEmitter, BaseEventEmitterService, BaseKvStore, BaseKvStoreService, BufferedUploadFileDataStore, ConditionField, ConditionOperator, ConditionValue, DataStore, DataStoreCapabilities, DataStoreRegistry, DataStoreWriteOptions, EventEmitter, EventType, ExecutionLevel, Flow, FlowCondition, FlowConfig, FlowData, FlowEdge, FlowEvent, FlowEventEmitter, FlowEventFlowEnd, FlowEventFlowStart, FlowEventJobEnd, FlowEventJobStart, FlowEventNodeEnd, FlowEventNodeError, FlowEventNodeResponse, FlowEventNodeStart, FlowExecutionContext, FlowExecutionResult, FlowFile, FlowFileBatch, FlowFileData, FlowJob, FlowJobKVStore, FlowJobStatus, FlowJobTask, FlowJobTaskStatus, FlowNode, FlowNodeData, FlowProvider, FlowProviderShape, FlowServer, FlowServerLayer, FlowServerOptions, FlowServerShape, ImagePlugin, ImagePluginShape, InputFile, KvStore, Middleware, MiddlewareContext, MiddlewareNext, MiddlewareService, MiddlewareServiceLive, NegotiatedStrategy, NodeConnectionValidator, NodeExecutionResult, NodeType, NodeTypeMap, OptimizeParams, ParallelScheduler, ParallelSchedulerConfig, ResizeParams, RunArgs, StorageParams, TypeCompatibilityChecker, TypedEventEmitter, TypedKvStore, UploadEvent, UploadEventEmitter, UploadEventType, UploadFile, UploadFileDataStore, UploadFileDataStores, UploadFileDataStoresShape, UploadFileKVStore, UploadServer, UploadServerOptions, UploadServerShape, UploadStrategy, UploadStrategyNegotiator, UploadStrategyOptions, WebSocketConnection, WebSocketMessage, completeNodeExecution, createFlow, createFlowEdge, createFlowNode, createFlowServer, createInputNode, createStorageNode, createStreamingInputNode, createUploadServer, detectMimeType, eventToMessageSerializer, flowDataSchema, flowEventEmitter, flowFileBatchSchema, flowFileSchema, flowJobKvStore, flowServer, getFlowData, getNodeData, inputFileSchema, isFlowFile, jsonSerializer, optimizeParamsSchema, resizeParamsSchema, runArgsSchema, storageParamsSchema, uploadEventEmitter, uploadEventSchema, uploadFileKvStore, uploadFileSchema, uploadServer, waitingNodeExecution, webSocketMessageSchema } from "./index-BO8GZlbD.cjs";
|
|
4
|
+
import "./generate-id-LjJRLD6N.cjs";
|
|
5
|
+
import "./semaphore-BHprIjFI.cjs";
|
|
6
|
+
export { BaseEventEmitter, BaseEventEmitterService, BaseKvStore, BaseKvStoreService, BufferedUploadFileDataStore, ConditionField, ConditionOperator, ConditionValue, DataStore, DataStoreCapabilities, DataStoreRegistry, DataStoreWriteOptions, ERROR_CATALOG as ERRORS, ERROR_CATALOG, EventEmitter, EventType, ExecutionLevel, Flow, FlowCondition, FlowConfig, FlowData, FlowEdge, FlowEvent, FlowEventEmitter, FlowEventFlowEnd, FlowEventFlowStart, FlowEventJobEnd, FlowEventJobStart, FlowEventNodeEnd, FlowEventNodeError, FlowEventNodeResponse, FlowEventNodeStart, FlowExecutionContext, FlowExecutionResult, FlowFile, FlowFileBatch, FlowFileData, FlowJob, FlowJobKVStore, FlowJobStatus, FlowJobTask, FlowJobTaskStatus, FlowNode, FlowNodeData, FlowProvider, FlowProviderShape, FlowServer, FlowServerLayer, FlowServerOptions, FlowServerShape, ImagePlugin, ImagePluginShape, InputFile, KvStore, Middleware, MiddlewareContext, MiddlewareNext, MiddlewareService, MiddlewareServiceLive, NegotiatedStrategy, NodeConnectionValidator, NodeExecutionResult, NodeType, NodeTypeMap, OptimizeParams, ParallelScheduler, ParallelSchedulerConfig, ResizeParams, RunArgs, StorageParams, TypeCompatibilityChecker, TypedEventEmitter, TypedKvStore, UploadEvent, UploadEventEmitter, UploadEventType, UploadFile, UploadFileDataStore, UploadFileDataStores, UploadFileDataStoresShape, UploadFileKVStore, UploadServer, UploadServerOptions, UploadServerShape, UploadStrategy, UploadStrategyNegotiator, UploadStrategyOptions, UploadistaError, UploadistaErrorCode, WebSocketConnection, WebSocketMessage, completeNodeExecution, createFlow, createFlowEdge, createFlowNode, createFlowServer, createInputNode, createStorageNode, createStreamingInputNode, createUploadServer, detectMimeType, eventToMessageSerializer, flowDataSchema, flowEventEmitter, flowFileBatchSchema, flowFileSchema, flowJobKvStore, flowServer, getFlowData, getNodeData, httpFailureEffect, inputFileSchema, isFlowFile, isUploadistaError, jsonSerializer, optimizeParamsSchema, resizeParamsSchema, runArgsSchema, storageParamsSchema, uploadEventEmitter, uploadEventSchema, uploadFileKvStore, uploadFileSchema, uploadServer, waitingNodeExecution, webSocketMessageSchema };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function e(e){return{log:t=>{e&&console.log(t)}}}exports.createLogger=e;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.cts","names":[],"sources":["../../src/logger/logger.ts"],"sourcesContent":[],"mappings":";KAAY,MAAA;EAAA,GAAA,EAAA,CAAA,OAAM,EAAA,MAAA,EAAA,GAAA,IAAA;AAIlB,CAAA;iBAAgB,YAAA,oBAAgC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/logger/logger.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,GAAG;IACnB,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAChC,CAAC;AAEF,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CASrD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","names":[],"sources":["../../src/logger/logger.ts"],"sourcesContent":["export type Logger = {\n log: (message: string) => void;\n};\n\nexport function createLogger(enabled: boolean): Logger {\n return {\n log: (message: string) => {\n if (enabled) {\n // eslint-disable-next-line no-console\n console.log(message);\n }\n },\n };\n}\n"],"mappings":"AAIA,SAAgB,EAAa,EAA0B,CACrD,MAAO,CACL,IAAM,GAAoB,CACpB,GAEF,QAAQ,IAAI,EAAQ,EAGzB"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{Effect as e}from"effect";function t(e){let t=!1;async function n(){t||(t=!0,await e())}return{release:n}}function n(e){let n=e,r=[];function i(){if(n>0)return Promise.resolve(a());let e={};return e.promise=new Promise(t=>{e.resolve=t}),r.push(e),e.promise}function a(){return n--,t(async()=>{if(n++,r.length>0){let e=r.shift();e&&(e.resolve?.(a()),await e.promise)}})}return{acquire:i}}const r={make:t=>e.acquireRelease(e.sync(()=>{let n=t,r=[];return{acquire:t=>e.gen(function*(){return yield*e.async(t=>{n>0?(n--,t(e.void)):r.push(r=>{n--,t(e.void)})}),yield*e.ensuring(t,e.sync(()=>{if(n++,r.length>0){let e=r.shift();e&&e(()=>{})}}))})}}),()=>e.void),legacy:e=>n(e)};export{r as SemaphoreEffect,t as permit,n as semaphore};
|
|
2
|
+
//# sourceMappingURL=semaphore-0ZwjVpyF.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"semaphore-0ZwjVpyF.js","names":["deferreds: Deferred[]","deferred: Deferred","queue: Array<(permit: () => void) => void>"],"sources":["../src/utils/semaphore.ts"],"sourcesContent":["import { Effect, type Scope } from \"effect\";\nimport type { UploadistaError } from \"../errors/uploadista-error\";\n\ntype ReleaseCallback = () => Promise<void>;\n\nexport function permit(onRelease: ReleaseCallback) {\n let isReleased = false;\n\n async function release() {\n if (!isReleased) {\n isReleased = true;\n await onRelease();\n }\n }\n\n return {\n release,\n };\n}\n\nexport type Permit = ReturnType<typeof permit>;\n\ntype Deferred = {\n resolve?: (permit: Permit) => void;\n promise?: Promise<Permit>;\n};\n\nexport function semaphore(count: number) {\n let availablePermits = count;\n const deferreds: Deferred[] = [];\n\n function acquire(): Promise<Permit> {\n if (availablePermits > 0) {\n return Promise.resolve(createPermit());\n }\n\n const deferred: Deferred = {};\n deferred.promise = new Promise((resolve) => {\n deferred.resolve = resolve;\n });\n deferreds.push(deferred);\n return deferred.promise;\n }\n\n function createPermit(): Permit {\n availablePermits--;\n\n return permit(async () => {\n availablePermits++;\n\n if (deferreds.length > 0) {\n const deferred = deferreds.shift();\n if (deferred) {\n deferred.resolve?.(createPermit());\n await deferred.promise;\n }\n }\n });\n }\n\n return {\n acquire,\n };\n}\n\nexport type Semaphore = ReturnType<typeof semaphore>;\n\n/**\n * Effect-based semaphore utilities\n */\nexport const SemaphoreEffect = {\n /**\n * Creates an Effect-based semaphore with resource management\n * @param count - Number of permits available\n * @returns Effect semaphore with automatic resource cleanup\n */\n make: (\n count: number,\n ): Effect.Effect<\n {\n acquire: <A, E, R>(\n effect: Effect.Effect<A, E, R>,\n ) => Effect.Effect<A, E | UploadistaError, R>;\n },\n never,\n Scope.Scope\n > =>\n Effect.acquireRelease(\n Effect.sync(() => {\n let availablePermits = count;\n const queue: Array<(permit: () => void) => void> = [];\n\n const acquire = <A, E, R>(effect: Effect.Effect<A, E, R>) =>\n Effect.gen(function* () {\n // Wait for a permit\n yield* Effect.async<void, UploadistaError>((resume) => {\n if (availablePermits > 0) {\n availablePermits--;\n resume(Effect.void);\n } else {\n queue.push((releasePermit) => {\n availablePermits--;\n resume(Effect.void);\n });\n }\n });\n\n // Execute the effect with cleanup\n return yield* Effect.ensuring(\n effect,\n Effect.sync(() => {\n availablePermits++;\n if (queue.length > 0) {\n const nextWaiting = queue.shift();\n if (nextWaiting) {\n nextWaiting(() => {});\n }\n }\n }),\n );\n });\n\n return { acquire };\n }),\n () => Effect.void, // Cleanup function\n ),\n\n /**\n * Creates a legacy semaphore wrapper\n * @param count - Number of permits\n * @returns Legacy semaphore instance\n */\n legacy: (count: number) => semaphore(count),\n};\n"],"mappings":"gCAKA,SAAgB,EAAO,EAA4B,CACjD,IAAI,EAAa,GAEjB,eAAe,GAAU,CAClB,IACH,EAAa,GACb,MAAM,GAAW,EAIrB,MAAO,CACL,UACD,CAUH,SAAgB,EAAU,EAAe,CACvC,IAAI,EAAmB,EACjBA,EAAwB,EAAE,CAEhC,SAAS,GAA2B,CAClC,GAAI,EAAmB,EACrB,OAAO,QAAQ,QAAQ,GAAc,CAAC,CAGxC,IAAMC,EAAqB,EAAE,CAK7B,MAJA,GAAS,QAAU,IAAI,QAAS,GAAY,CAC1C,EAAS,QAAU,GACnB,CACF,EAAU,KAAK,EAAS,CACjB,EAAS,QAGlB,SAAS,GAAuB,CAG9B,MAFA,KAEO,EAAO,SAAY,CAGxB,GAFA,IAEI,EAAU,OAAS,EAAG,CACxB,IAAM,EAAW,EAAU,OAAO,CAC9B,IACF,EAAS,UAAU,GAAc,CAAC,CAClC,MAAM,EAAS,WAGnB,CAGJ,MAAO,CACL,UACD,CAQH,MAAa,EAAkB,CAM7B,KACE,GAUA,EAAO,eACL,EAAO,SAAW,CAChB,IAAI,EAAmB,EACjBC,EAA6C,EAAE,CAgCrD,MAAO,CAAE,QA9BiB,GACxB,EAAO,IAAI,WAAa,CAetB,OAbA,MAAO,EAAO,MAA8B,GAAW,CACjD,EAAmB,GACrB,IACA,EAAO,EAAO,KAAK,EAEnB,EAAM,KAAM,GAAkB,CAC5B,IACA,EAAO,EAAO,KAAK,EACnB,EAEJ,CAGK,MAAO,EAAO,SACnB,EACA,EAAO,SAAW,CAEhB,GADA,IACI,EAAM,OAAS,EAAG,CACpB,IAAM,EAAc,EAAM,OAAO,CAC7B,GACF,MAAkB,GAAG,GAGzB,CACH,EACD,CAEc,EAClB,KACI,EAAO,KACd,CAOH,OAAS,GAAkB,EAAU,EAAM,CAC5C"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { UploadistaError } from "./uploadista-error-kKlhLRhY.cjs";
|
|
2
|
+
import { Effect, Scope } from "effect";
|
|
3
|
+
|
|
4
|
+
//#region src/utils/semaphore.d.ts
|
|
5
|
+
type ReleaseCallback = () => Promise<void>;
|
|
6
|
+
declare function permit(onRelease: ReleaseCallback): {
|
|
7
|
+
release: () => Promise<void>;
|
|
8
|
+
};
|
|
9
|
+
type Permit = ReturnType<typeof permit>;
|
|
10
|
+
declare function semaphore(count: number): {
|
|
11
|
+
acquire: () => Promise<Permit>;
|
|
12
|
+
};
|
|
13
|
+
type Semaphore = ReturnType<typeof semaphore>;
|
|
14
|
+
/**
|
|
15
|
+
* Effect-based semaphore utilities
|
|
16
|
+
*/
|
|
17
|
+
declare const SemaphoreEffect: {
|
|
18
|
+
/**
|
|
19
|
+
* Creates an Effect-based semaphore with resource management
|
|
20
|
+
* @param count - Number of permits available
|
|
21
|
+
* @returns Effect semaphore with automatic resource cleanup
|
|
22
|
+
*/
|
|
23
|
+
make: (count: number) => Effect.Effect<{
|
|
24
|
+
acquire: <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E | UploadistaError, R>;
|
|
25
|
+
}, never, Scope.Scope>;
|
|
26
|
+
/**
|
|
27
|
+
* Creates a legacy semaphore wrapper
|
|
28
|
+
* @param count - Number of permits
|
|
29
|
+
* @returns Legacy semaphore instance
|
|
30
|
+
*/
|
|
31
|
+
legacy: (count: number) => {
|
|
32
|
+
acquire: () => Promise<Permit>;
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
//#endregion
|
|
36
|
+
export { Permit, Semaphore, SemaphoreEffect, permit, semaphore };
|
|
37
|
+
//# sourceMappingURL=semaphore-BHprIjFI.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"semaphore-BHprIjFI.d.cts","names":[],"sources":["../src/utils/semaphore.ts"],"sourcesContent":[],"mappings":";;;;KAGK,eAAA,SAAwB;iBAEb,MAAA,YAAkB;EAF7B,OAAA,EAAA,GAAA,UAAe,CAAA,IAAA,CAAA;AAEpB,CAAA;AAAsB,KAeV,MAAA,GAAS,UAfC,CAAA,OAeiB,MAfjB,CAAA;AAAY,iBAsBlB,SAAA,CAtBkB,KAAA,EAAA,MAAA,CAAA,EAAA;iBA0BZ,QAAQ;;AAXlB,KA6CA,SAAA,GAAY,UA7CN,CAAA,OA6CwB,SA7CxB,CAAA;;;;AAAa,cAkDlB,eAlDkB,EAAA;EAOf;;;;;EAsCJ,IAAA,EAAA,CAAA,KAAS,EAAA,MAAA,EAAA,GAahB,MAAA,CAAO,MAbS,CAAA;IAAA,OAAA,EAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,MAAA,EAgBL,MAAA,CAAO,MAhBF,CAgBS,CAhBT,EAgBY,CAhBZ,EAgBe,CAhBf,CAAA,EAAA,GAiBV,MAAA,CAAO,MAjBG,CAiBI,CAjBJ,EAiBO,CAjBP,GAiBW,eAjBX,EAiB4B,CAjB5B,CAAA;KAAqB,KAAA,EAoBtC,KAAA,CAAM,KApBgC,CAAA;;;AAK1C;;;QAWiC,EAAA,CAAA,KAAA,EAAA,MAAA,EAAA,GAAA;IAAG,OAAA,EAAA,GAAA,GAlDd,OAkDc,CAlDN,MAkDM,CAAA"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { UploadistaError } from "./uploadista-error-CwxYs4EB.js";
|
|
2
|
+
import { Effect, Scope } from "effect";
|
|
3
|
+
|
|
4
|
+
//#region src/utils/semaphore.d.ts
|
|
5
|
+
type ReleaseCallback = () => Promise<void>;
|
|
6
|
+
declare function permit(onRelease: ReleaseCallback): {
|
|
7
|
+
release: () => Promise<void>;
|
|
8
|
+
};
|
|
9
|
+
type Permit = ReturnType<typeof permit>;
|
|
10
|
+
declare function semaphore(count: number): {
|
|
11
|
+
acquire: () => Promise<Permit>;
|
|
12
|
+
};
|
|
13
|
+
type Semaphore = ReturnType<typeof semaphore>;
|
|
14
|
+
/**
|
|
15
|
+
* Effect-based semaphore utilities
|
|
16
|
+
*/
|
|
17
|
+
declare const SemaphoreEffect: {
|
|
18
|
+
/**
|
|
19
|
+
* Creates an Effect-based semaphore with resource management
|
|
20
|
+
* @param count - Number of permits available
|
|
21
|
+
* @returns Effect semaphore with automatic resource cleanup
|
|
22
|
+
*/
|
|
23
|
+
make: (count: number) => Effect.Effect<{
|
|
24
|
+
acquire: <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E | UploadistaError, R>;
|
|
25
|
+
}, never, Scope.Scope>;
|
|
26
|
+
/**
|
|
27
|
+
* Creates a legacy semaphore wrapper
|
|
28
|
+
* @param count - Number of permits
|
|
29
|
+
* @returns Legacy semaphore instance
|
|
30
|
+
*/
|
|
31
|
+
legacy: (count: number) => {
|
|
32
|
+
acquire: () => Promise<Permit>;
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
//#endregion
|
|
36
|
+
export { Permit, Semaphore, SemaphoreEffect, permit, semaphore };
|
|
37
|
+
//# sourceMappingURL=semaphore-DThupBkc.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"semaphore-DThupBkc.d.ts","names":[],"sources":["../src/utils/semaphore.ts"],"sourcesContent":[],"mappings":";;;;KAGK,eAAA,SAAwB;iBAEb,MAAA,YAAkB;EAF7B,OAAA,EAAA,GAAA,UAAe,CAAA,IAAA,CAAA;AAEpB,CAAA;AAAsB,KAeV,MAAA,GAAS,UAfC,CAAA,OAeiB,MAfjB,CAAA;AAAY,iBAsBlB,SAAA,CAtBkB,KAAA,EAAA,MAAA,CAAA,EAAA;iBA0BZ,QAAQ;;AAXlB,KA6CA,SAAA,GAAY,UA7CN,CAAA,OA6CwB,SA7CxB,CAAA;;;;AAAa,cAkDlB,eAlDkB,EAAA;EAOf;;;;;EAsCJ,IAAA,EAAA,CAAA,KAAS,EAAA,MAAA,EAAA,GAahB,MAAA,CAAO,MAbS,CAAA;IAAA,OAAA,EAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,MAAA,EAgBL,MAAA,CAAO,MAhBF,CAgBS,CAhBT,EAgBY,CAhBZ,EAgBe,CAhBf,CAAA,EAAA,GAiBV,MAAA,CAAO,MAjBG,CAiBI,CAjBJ,EAiBO,CAjBP,GAiBW,eAjBX,EAiB4B,CAjB5B,CAAA;KAAqB,KAAA,EAoBtC,KAAA,CAAM,KApBgC,CAAA;;;AAK1C;;;QAWiC,EAAA,CAAA,KAAA,EAAA,MAAA,EAAA,GAAA;IAAG,OAAA,EAAA,GAAA,GAlDd,OAkDc,CAlDN,MAkDM,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require(`./chunk-CUT6urMc.cjs`);let t=require(`effect`);t=e.__toESM(t);function n(e){let t=!1;async function n(){t||(t=!0,await e())}return{release:n}}function r(e){let t=e,r=[];function i(){if(t>0)return Promise.resolve(a());let e={};return e.promise=new Promise(t=>{e.resolve=t}),r.push(e),e.promise}function a(){return t--,n(async()=>{if(t++,r.length>0){let e=r.shift();e&&(e.resolve?.(a()),await e.promise)}})}return{acquire:i}}const i={make:e=>t.Effect.acquireRelease(t.Effect.sync(()=>{let n=e,r=[];return{acquire:e=>t.Effect.gen(function*(){return yield*t.Effect.async(e=>{n>0?(n--,e(t.Effect.void)):r.push(r=>{n--,e(t.Effect.void)})}),yield*t.Effect.ensuring(e,t.Effect.sync(()=>{if(n++,r.length>0){let e=r.shift();e&&e(()=>{})}}))})}}),()=>t.Effect.void),legacy:e=>r(e)};Object.defineProperty(exports,`SemaphoreEffect`,{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,`permit`,{enumerable:!0,get:function(){return n}}),Object.defineProperty(exports,`semaphore`,{enumerable:!0,get:function(){return r}});
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{UploadistaError as e}from"./uploadista-error-BVsVxqvz.js";import{Effect as t,Ref as n,Stream as r}from"effect";function i({maxSize:t,onData:n}){let r=0;return new TransformStream({transform(i,a){r+=i.length,n?.(i.byteLength),r>t?a.error(e.fromCode(`ERR_MAX_SIZE_EXCEEDED`)):a.enqueue(i)}})}const a={limit:({maxSize:i,onData:a})=>o=>t.gen(function*(){let s=yield*n.make(0);return o.pipe(r.mapEffect(r=>t.gen(function*(){let t=r instanceof Uint8Array?r.byteLength:0;return yield*n.update(s,e=>e+t),a?.(t),(yield*n.get(s))>i&&(yield*e.fromCode(`ERR_MAX_SIZE_EXCEEDED`).toEffect()),r})))}).pipe(r.unwrap),createTransformStream:e=>i(e)};export{a as StreamLimiterEffect,i as streamLimiter};
|
|
2
|
+
//# sourceMappingURL=stream-limiter-CoWKv39w.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream-limiter-CoWKv39w.js","names":[],"sources":["../src/streams/stream-limiter.ts"],"sourcesContent":["import { Effect, Ref, Stream } from \"effect\";\nimport { UploadistaError } from \"../errors/uploadista-error\";\n\ntype StreamLimiterOptions = {\n maxSize: number;\n onData?: (chunkSize: number) => void;\n};\n\nexport function streamLimiter({\n maxSize,\n onData,\n}: StreamLimiterOptions): TransformStream {\n let currentSize = 0;\n\n return new TransformStream({\n transform(chunk, controller) {\n currentSize += chunk.length;\n\n onData?.(chunk.byteLength);\n\n if (currentSize > maxSize) {\n controller.error(UploadistaError.fromCode(\"ERR_MAX_SIZE_EXCEEDED\"));\n } else {\n controller.enqueue(chunk);\n }\n },\n });\n}\n\n/**\n * Effect-based stream limiter that restricts stream size\n */\nexport const StreamLimiterEffect = {\n /**\n * Creates an Effect-based stream limiter\n * @param maxSize - Maximum allowed stream size in bytes\n * @param onData - Optional callback for data progress tracking\n * @returns Effect stream transformation that enforces size limits\n */\n limit:\n ({ maxSize, onData }: StreamLimiterOptions) =>\n <A>(stream: Stream.Stream<A, UploadistaError>) => {\n return Effect.gen(function* () {\n const currentSize = yield* Ref.make(0);\n\n return stream.pipe(\n Stream.mapEffect((chunk) =>\n Effect.gen(function* () {\n const chunkSize =\n chunk instanceof Uint8Array ? chunk.byteLength : 0;\n yield* Ref.update(currentSize, (size) => size + chunkSize);\n\n onData?.(chunkSize);\n const size = yield* Ref.get(currentSize);\n if (size > maxSize) {\n yield* UploadistaError.fromCode(\n \"ERR_MAX_SIZE_EXCEEDED\",\n ).toEffect();\n }\n\n return chunk;\n }),\n ),\n );\n }).pipe(Stream.unwrap);\n },\n\n /**\n * Creates a legacy TransformStream-based limiter\n * @param options - Stream limiter options\n * @returns TransformStream that enforces size limits\n */\n createTransformStream: (options: StreamLimiterOptions): TransformStream =>\n streamLimiter(options),\n};\n"],"mappings":"sHAQA,SAAgB,EAAc,CAC5B,UACA,UACwC,CACxC,IAAI,EAAc,EAElB,OAAO,IAAI,gBAAgB,CACzB,UAAU,EAAO,EAAY,CAC3B,GAAe,EAAM,OAErB,IAAS,EAAM,WAAW,CAEtB,EAAc,EAChB,EAAW,MAAM,EAAgB,SAAS,wBAAwB,CAAC,CAEnE,EAAW,QAAQ,EAAM,EAG9B,CAAC,CAMJ,MAAa,EAAsB,CAOjC,OACG,CAAE,UAAS,YACR,GACK,EAAO,IAAI,WAAa,CAC7B,IAAM,EAAc,MAAO,EAAI,KAAK,EAAE,CAEtC,OAAO,EAAO,KACZ,EAAO,UAAW,GAChB,EAAO,IAAI,WAAa,CACtB,IAAM,EACJ,aAAiB,WAAa,EAAM,WAAa,EAWnD,OAVA,MAAO,EAAI,OAAO,EAAc,GAAS,EAAO,EAAU,CAE1D,IAAS,EAAU,EACN,MAAO,EAAI,IAAI,EAAY,EAC7B,IACT,MAAO,EAAgB,SACrB,wBACD,CAAC,UAAU,EAGP,GACP,CACH,CACF,EACD,CAAC,KAAK,EAAO,OAAO,CAQ1B,sBAAwB,GACtB,EAAc,EAAQ,CACzB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require(`./chunk-CUT6urMc.cjs`),t=require(`./uploadista-error-BB-Wdiz9.cjs`);let n=require(`effect`);n=e.__toESM(n);function r({maxSize:e,onData:n}){let r=0;return new TransformStream({transform(i,a){r+=i.length,n?.(i.byteLength),r>e?a.error(t.UploadistaError.fromCode(`ERR_MAX_SIZE_EXCEEDED`)):a.enqueue(i)}})}const i={limit:({maxSize:e,onData:r})=>i=>n.Effect.gen(function*(){let a=yield*n.Ref.make(0);return i.pipe(n.Stream.mapEffect(i=>n.Effect.gen(function*(){let o=i instanceof Uint8Array?i.byteLength:0;return yield*n.Ref.update(a,e=>e+o),r?.(o),(yield*n.Ref.get(a))>e&&(yield*t.UploadistaError.fromCode(`ERR_MAX_SIZE_EXCEEDED`).toEffect()),i})))}).pipe(n.Stream.unwrap),createTransformStream:e=>r(e)};Object.defineProperty(exports,`StreamLimiterEffect`,{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,`streamLimiter`,{enumerable:!0,get:function(){return r}});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require(`../chunk-CUT6urMc.cjs`),t=require(`../uploadista-error-BB-Wdiz9.cjs`);let n=require(`effect`);n=e.__toESM(n);var r=class e{stream;current=null;queue;constructor(e){this.stream=new ReadableStream({start:t=>{this.queue=e,this.next(t)},cancel:e=>{this.destroy(e)}})}get readable(){return this.stream}async next(e){if(this.current=null,this.queue.length===0){e.close();return}let t=this.queue.shift();if(!t){e.close();return}try{this.current=t,await this.processCurrentStream(e),this.next(e)}catch(t){e.error(t)}}async processCurrentStream(e){if(!this.current)return;let t=this.current.getReader();try{for(;;){let{done:n,value:r}=await t.read();if(n)break;e.enqueue(r)}}finally{t.releaseLock()}}async destroy(e){let t=[];this.current&&t.push(this.current),Array.isArray(this.queue)&&t.push(...this.queue),await Promise.all(t.map(async t=>{try{t.locked||await t.cancel(e)}catch{}}))}static obj(t){return new e(t)}};const i={fromStreams:e=>n.Stream.fromIterable(e).pipe(n.Stream.flatMap(e=>e)),fromReadableStreams:e=>n.Stream.fromIterable(e).pipe(n.Stream.flatMap(e=>n.Stream.fromReadableStream(()=>e,e=>new t.UploadistaError({code:`UNKNOWN_ERROR`,status:500,body:`Stream processing failed`,details:String(e)})))),obj:e=>new r(e)};exports.MultiStream=r,exports.MultiStreamEffect=i;
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { UploadistaError } from "../uploadista-error-kKlhLRhY.cjs";
|
|
2
|
+
import { Stream } from "effect";
|
|
3
|
+
|
|
4
|
+
//#region src/streams/multi-stream.d.ts
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Options for configuring a MultiStream instance
|
|
8
|
+
*/
|
|
9
|
+
type StreamOptions = {
|
|
10
|
+
/** Whether the stream should operate in object mode */
|
|
11
|
+
objectMode?: boolean;
|
|
12
|
+
/** The maximum number of chunks that can be queued before backpressure is applied */
|
|
13
|
+
highWaterMark?: number;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* A stream that combines multiple ReadableStreams into a single stream.
|
|
17
|
+
* It reads from each stream in sequence, forwarding their chunks to the output.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```typescript
|
|
21
|
+
* const stream1 = new ReadableStream({...});
|
|
22
|
+
* const stream2 = new ReadableStream({...});
|
|
23
|
+
* const multiStream = new MultiStream([stream1, stream2]);
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
declare class MultiStream {
|
|
27
|
+
/** The underlying ReadableStream */
|
|
28
|
+
private stream;
|
|
29
|
+
/** The current stream being read from */
|
|
30
|
+
private current;
|
|
31
|
+
/** Queue of streams to be processed */
|
|
32
|
+
private queue;
|
|
33
|
+
/**
|
|
34
|
+
* Creates a new MultiStream instance
|
|
35
|
+
* @param streams - Array of streams or stream factories to combine
|
|
36
|
+
* @param options - Configuration options for the stream
|
|
37
|
+
*/
|
|
38
|
+
constructor(streams: ReadableStream[]);
|
|
39
|
+
/**
|
|
40
|
+
* Gets the underlying ReadableStream
|
|
41
|
+
*/
|
|
42
|
+
get readable(): ReadableStream;
|
|
43
|
+
/**
|
|
44
|
+
* Moves to the next stream in the queue
|
|
45
|
+
* @param controller - The stream controller to forward data to
|
|
46
|
+
*/
|
|
47
|
+
private next;
|
|
48
|
+
/**
|
|
49
|
+
* Processes the current stream completely
|
|
50
|
+
* @param controller - The stream controller to forward data to
|
|
51
|
+
*/
|
|
52
|
+
private processCurrentStream;
|
|
53
|
+
/**
|
|
54
|
+
* Destroys all streams in the queue and the current stream
|
|
55
|
+
* @param reason - Optional reason for destroying the streams
|
|
56
|
+
*/
|
|
57
|
+
private destroy;
|
|
58
|
+
/**
|
|
59
|
+
* Creates a new MultiStream instance in object mode
|
|
60
|
+
* @param streams - Array of readable streams or stream factories to combine
|
|
61
|
+
* @returns A new MultiStream instance configured for object mode
|
|
62
|
+
*/
|
|
63
|
+
static obj(streams: ReadableStream[]): MultiStream;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Effect-based MultiStream that combines multiple Effect Streams into a single stream
|
|
67
|
+
* @deprecated Use Effect Stream utilities directly instead
|
|
68
|
+
*/
|
|
69
|
+
declare const MultiStreamEffect: {
|
|
70
|
+
/**
|
|
71
|
+
* Combines multiple Effect streams into a single sequential stream
|
|
72
|
+
* @param streams - Array of Effect streams to combine
|
|
73
|
+
* @returns A single Effect stream containing all data from input streams
|
|
74
|
+
*/
|
|
75
|
+
fromStreams: <A, E = UploadistaError>(streams: Array<Stream.Stream<A, E>>) => Stream.Stream<A, E>;
|
|
76
|
+
/**
|
|
77
|
+
* Creates a MultiStream from ReadableStream instances using Effect
|
|
78
|
+
* @param streams - Array of ReadableStreams to combine
|
|
79
|
+
* @returns Effect stream of Uint8Array chunks
|
|
80
|
+
*/
|
|
81
|
+
fromReadableStreams: (streams: ReadableStream<Uint8Array>[]) => Stream.Stream<Uint8Array, UploadistaError>;
|
|
82
|
+
/**
|
|
83
|
+
* Creates a MultiStream instance compatible with legacy API
|
|
84
|
+
* @param streams - Array of streams to combine
|
|
85
|
+
* @returns Legacy MultiStream instance
|
|
86
|
+
*/
|
|
87
|
+
obj: (streams: ReadableStream[]) => MultiStream;
|
|
88
|
+
};
|
|
89
|
+
//#endregion
|
|
90
|
+
export { MultiStream, MultiStreamEffect, StreamOptions };
|
|
91
|
+
//# sourceMappingURL=multi-stream.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multi-stream.d.cts","names":[],"sources":["../../src/streams/multi-stream.ts"],"sourcesContent":[],"mappings":";;;;;;;AAMA;AAkBa,KAlBD,aAAA,GAkBY;EAAA;YAaD,CAAA,EAAA,OAAA;;eAqGD,CAAA,EAAA,MAAA;;;AAStB;;;;;;;;;;AAiB4B,cA5If,WAAA,CA4Ie;;UACT,MAAA;;UAAd,OAAO;;UAqBqB,KAAA;EAAA;;;;;uBArJV;;;;kBAeL;;;;;;;;;;;;;;;;;;;;;sBAsFI,mBAAgB;;;;;;cASzB;;;;;;uBAMO,0BACP,MAAM,MAAA,CAAO,OAAO,GAAG,QAC/B,MAAA,CAAO,OAAO,GAAG;;;;;;iCAST,eAAe,kBACvB,MAAA,CAAO,OAAO,YAAY;;;;;;iBAqBd,qBAAgB"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { Stream } from "effect";
|
|
2
|
+
import { UploadistaError } from "../errors/uploadista-error";
|
|
3
|
+
/**
|
|
4
|
+
* Options for configuring a MultiStream instance
|
|
5
|
+
*/
|
|
6
|
+
export type StreamOptions = {
|
|
7
|
+
/** Whether the stream should operate in object mode */
|
|
8
|
+
objectMode?: boolean;
|
|
9
|
+
/** The maximum number of chunks that can be queued before backpressure is applied */
|
|
10
|
+
highWaterMark?: number;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* A stream that combines multiple ReadableStreams into a single stream.
|
|
14
|
+
* It reads from each stream in sequence, forwarding their chunks to the output.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* const stream1 = new ReadableStream({...});
|
|
19
|
+
* const stream2 = new ReadableStream({...});
|
|
20
|
+
* const multiStream = new MultiStream([stream1, stream2]);
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
export declare class MultiStream {
|
|
24
|
+
/** The underlying ReadableStream */
|
|
25
|
+
private stream;
|
|
26
|
+
/** The current stream being read from */
|
|
27
|
+
private current;
|
|
28
|
+
/** Queue of streams to be processed */
|
|
29
|
+
private queue;
|
|
30
|
+
/**
|
|
31
|
+
* Creates a new MultiStream instance
|
|
32
|
+
* @param streams - Array of streams or stream factories to combine
|
|
33
|
+
* @param options - Configuration options for the stream
|
|
34
|
+
*/
|
|
35
|
+
constructor(streams: ReadableStream[]);
|
|
36
|
+
/**
|
|
37
|
+
* Gets the underlying ReadableStream
|
|
38
|
+
*/
|
|
39
|
+
get readable(): ReadableStream;
|
|
40
|
+
/**
|
|
41
|
+
* Moves to the next stream in the queue
|
|
42
|
+
* @param controller - The stream controller to forward data to
|
|
43
|
+
*/
|
|
44
|
+
private next;
|
|
45
|
+
/**
|
|
46
|
+
* Processes the current stream completely
|
|
47
|
+
* @param controller - The stream controller to forward data to
|
|
48
|
+
*/
|
|
49
|
+
private processCurrentStream;
|
|
50
|
+
/**
|
|
51
|
+
* Destroys all streams in the queue and the current stream
|
|
52
|
+
* @param reason - Optional reason for destroying the streams
|
|
53
|
+
*/
|
|
54
|
+
private destroy;
|
|
55
|
+
/**
|
|
56
|
+
* Creates a new MultiStream instance in object mode
|
|
57
|
+
* @param streams - Array of readable streams or stream factories to combine
|
|
58
|
+
* @returns A new MultiStream instance configured for object mode
|
|
59
|
+
*/
|
|
60
|
+
static obj(streams: ReadableStream[]): MultiStream;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Effect-based MultiStream that combines multiple Effect Streams into a single stream
|
|
64
|
+
* @deprecated Use Effect Stream utilities directly instead
|
|
65
|
+
*/
|
|
66
|
+
export declare const MultiStreamEffect: {
|
|
67
|
+
/**
|
|
68
|
+
* Combines multiple Effect streams into a single sequential stream
|
|
69
|
+
* @param streams - Array of Effect streams to combine
|
|
70
|
+
* @returns A single Effect stream containing all data from input streams
|
|
71
|
+
*/
|
|
72
|
+
fromStreams: <A, E = UploadistaError>(streams: Array<Stream.Stream<A, E>>) => Stream.Stream<A, E>;
|
|
73
|
+
/**
|
|
74
|
+
* Creates a MultiStream from ReadableStream instances using Effect
|
|
75
|
+
* @param streams - Array of ReadableStreams to combine
|
|
76
|
+
* @returns Effect stream of Uint8Array chunks
|
|
77
|
+
*/
|
|
78
|
+
fromReadableStreams: (streams: ReadableStream<Uint8Array>[]) => Stream.Stream<Uint8Array, UploadistaError>;
|
|
79
|
+
/**
|
|
80
|
+
* Creates a MultiStream instance compatible with legacy API
|
|
81
|
+
* @param streams - Array of streams to combine
|
|
82
|
+
* @returns Legacy MultiStream instance
|
|
83
|
+
*/
|
|
84
|
+
obj: (streams: ReadableStream[]) => MultiStream;
|
|
85
|
+
};
|
|
86
|
+
//# sourceMappingURL=multi-stream.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multi-stream.d.ts","sourceRoot":"","sources":["../../src/streams/multi-stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,uDAAuD;IACvD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,qFAAqF;IACrF,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,qBAAa,WAAW;IACtB,oCAAoC;IACpC,OAAO,CAAC,MAAM,CAAiB;IAC/B,yCAAyC;IACzC,OAAO,CAAC,OAAO,CAA+B;IAC9C,uCAAuC;IACvC,OAAO,CAAC,KAAK,CAAoB;IAEjC;;;;OAIG;gBACS,OAAO,EAAE,cAAc,EAAE;IAYrC;;OAEG;IACH,IAAI,QAAQ,IAAI,cAAc,CAE7B;IAED;;;OAGG;YACW,IAAI;IA2BlB;;;OAGG;YACW,oBAAoB;IAiBlC;;;OAGG;YACW,OAAO;IAqBrB;;;;OAIG;IACH,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,cAAc,EAAE;CAGrC;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB;IAC5B;;;;OAIG;kBACW,CAAC,EAAE,CAAC,6BACP,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAClC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;IAGtB;;;;OAIG;mCAEQ,cAAc,CAAC,UAAU,CAAC,EAAE,KACpC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,eAAe,CAAC;IAgB7C;;;;OAIG;mBACY,cAAc,EAAE;CAChC,CAAC"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import { Stream } from "effect";
|
|
2
|
+
import { UploadistaError } from "../errors/uploadista-error";
|
|
3
|
+
/**
|
|
4
|
+
* A stream that combines multiple ReadableStreams into a single stream.
|
|
5
|
+
* It reads from each stream in sequence, forwarding their chunks to the output.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* const stream1 = new ReadableStream({...});
|
|
10
|
+
* const stream2 = new ReadableStream({...});
|
|
11
|
+
* const multiStream = new MultiStream([stream1, stream2]);
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
export class MultiStream {
|
|
15
|
+
/** The underlying ReadableStream */
|
|
16
|
+
stream;
|
|
17
|
+
/** The current stream being read from */
|
|
18
|
+
current = null;
|
|
19
|
+
/** Queue of streams to be processed */
|
|
20
|
+
queue;
|
|
21
|
+
/**
|
|
22
|
+
* Creates a new MultiStream instance
|
|
23
|
+
* @param streams - Array of streams or stream factories to combine
|
|
24
|
+
* @param options - Configuration options for the stream
|
|
25
|
+
*/
|
|
26
|
+
constructor(streams) {
|
|
27
|
+
this.stream = new ReadableStream({
|
|
28
|
+
start: (controller) => {
|
|
29
|
+
this.queue = streams;
|
|
30
|
+
this.next(controller);
|
|
31
|
+
},
|
|
32
|
+
cancel: (reason) => {
|
|
33
|
+
this.destroy(reason);
|
|
34
|
+
},
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Gets the underlying ReadableStream
|
|
39
|
+
*/
|
|
40
|
+
get readable() {
|
|
41
|
+
return this.stream;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Moves to the next stream in the queue
|
|
45
|
+
* @param controller - The stream controller to forward data to
|
|
46
|
+
*/
|
|
47
|
+
async next(controller) {
|
|
48
|
+
this.current = null;
|
|
49
|
+
if (this.queue.length === 0) {
|
|
50
|
+
controller.close();
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
const nextStream = this.queue.shift();
|
|
54
|
+
if (!nextStream) {
|
|
55
|
+
controller.close();
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
try {
|
|
59
|
+
this.current = nextStream;
|
|
60
|
+
// Process the entire stream before moving to next
|
|
61
|
+
await this.processCurrentStream(controller);
|
|
62
|
+
// Move to next stream
|
|
63
|
+
this.next(controller);
|
|
64
|
+
}
|
|
65
|
+
catch (err) {
|
|
66
|
+
controller.error(err);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Processes the current stream completely
|
|
71
|
+
* @param controller - The stream controller to forward data to
|
|
72
|
+
*/
|
|
73
|
+
async processCurrentStream(controller) {
|
|
74
|
+
if (!this.current)
|
|
75
|
+
return;
|
|
76
|
+
const reader = this.current.getReader();
|
|
77
|
+
try {
|
|
78
|
+
while (true) {
|
|
79
|
+
const { done, value } = await reader.read();
|
|
80
|
+
if (done)
|
|
81
|
+
break;
|
|
82
|
+
controller.enqueue(value);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
finally {
|
|
86
|
+
reader.releaseLock();
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Destroys all streams in the queue and the current stream
|
|
91
|
+
* @param reason - Optional reason for destroying the streams
|
|
92
|
+
*/
|
|
93
|
+
async destroy(reason) {
|
|
94
|
+
const streams = [];
|
|
95
|
+
if (this.current)
|
|
96
|
+
streams.push(this.current);
|
|
97
|
+
if (Array.isArray(this.queue)) {
|
|
98
|
+
streams.push(...this.queue);
|
|
99
|
+
}
|
|
100
|
+
await Promise.all(streams.map(async (stream) => {
|
|
101
|
+
try {
|
|
102
|
+
if (!stream.locked) {
|
|
103
|
+
await stream.cancel(reason);
|
|
104
|
+
}
|
|
105
|
+
// If stream is locked, it's being processed and will be cleaned up naturally
|
|
106
|
+
}
|
|
107
|
+
catch {
|
|
108
|
+
// Ignore errors during cleanup
|
|
109
|
+
}
|
|
110
|
+
}));
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Creates a new MultiStream instance in object mode
|
|
114
|
+
* @param streams - Array of readable streams or stream factories to combine
|
|
115
|
+
* @returns A new MultiStream instance configured for object mode
|
|
116
|
+
*/
|
|
117
|
+
static obj(streams) {
|
|
118
|
+
return new MultiStream(streams);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Effect-based MultiStream that combines multiple Effect Streams into a single stream
|
|
123
|
+
* @deprecated Use Effect Stream utilities directly instead
|
|
124
|
+
*/
|
|
125
|
+
export const MultiStreamEffect = {
|
|
126
|
+
/**
|
|
127
|
+
* Combines multiple Effect streams into a single sequential stream
|
|
128
|
+
* @param streams - Array of Effect streams to combine
|
|
129
|
+
* @returns A single Effect stream containing all data from input streams
|
|
130
|
+
*/
|
|
131
|
+
fromStreams: (streams) => Stream.fromIterable(streams).pipe(Stream.flatMap((stream) => stream)),
|
|
132
|
+
/**
|
|
133
|
+
* Creates a MultiStream from ReadableStream instances using Effect
|
|
134
|
+
* @param streams - Array of ReadableStreams to combine
|
|
135
|
+
* @returns Effect stream of Uint8Array chunks
|
|
136
|
+
*/
|
|
137
|
+
fromReadableStreams: (streams) => Stream.fromIterable(streams).pipe(Stream.flatMap((readableStream) => Stream.fromReadableStream(() => readableStream, (error) => new UploadistaError({
|
|
138
|
+
code: "UNKNOWN_ERROR",
|
|
139
|
+
status: 500,
|
|
140
|
+
body: "Stream processing failed",
|
|
141
|
+
details: String(error),
|
|
142
|
+
})))),
|
|
143
|
+
/**
|
|
144
|
+
* Creates a MultiStream instance compatible with legacy API
|
|
145
|
+
* @param streams - Array of streams to combine
|
|
146
|
+
* @returns Legacy MultiStream instance
|
|
147
|
+
*/
|
|
148
|
+
obj: (streams) => new MultiStream(streams),
|
|
149
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multi-stream.js","names":["streams: ReadableStream[]"],"sources":["../../src/streams/multi-stream.ts"],"sourcesContent":["import { Stream } from \"effect\";\nimport { UploadistaError } from \"../errors/uploadista-error\";\n\n/**\n * Options for configuring a MultiStream instance\n */\nexport type StreamOptions = {\n /** Whether the stream should operate in object mode */\n objectMode?: boolean;\n /** The maximum number of chunks that can be queued before backpressure is applied */\n highWaterMark?: number;\n};\n\n/**\n * A stream that combines multiple ReadableStreams into a single stream.\n * It reads from each stream in sequence, forwarding their chunks to the output.\n *\n * @example\n * ```typescript\n * const stream1 = new ReadableStream({...});\n * const stream2 = new ReadableStream({...});\n * const multiStream = new MultiStream([stream1, stream2]);\n * ```\n */\nexport class MultiStream {\n /** The underlying ReadableStream */\n private stream: ReadableStream;\n /** The current stream being read from */\n private current: ReadableStream | null = null;\n /** Queue of streams to be processed */\n private queue!: ReadableStream[];\n\n /**\n * Creates a new MultiStream instance\n * @param streams - Array of streams or stream factories to combine\n * @param options - Configuration options for the stream\n */\n constructor(streams: ReadableStream[]) {\n this.stream = new ReadableStream({\n start: (controller) => {\n this.queue = streams;\n this.next(controller);\n },\n cancel: (reason) => {\n this.destroy(reason);\n },\n });\n }\n\n /**\n * Gets the underlying ReadableStream\n */\n get readable(): ReadableStream {\n return this.stream;\n }\n\n /**\n * Moves to the next stream in the queue\n * @param controller - The stream controller to forward data to\n */\n private async next(controller: ReadableStreamDefaultController) {\n this.current = null;\n\n if (this.queue.length === 0) {\n controller.close();\n return;\n }\n\n const nextStream = this.queue.shift();\n if (!nextStream) {\n controller.close();\n return;\n }\n\n try {\n this.current = nextStream;\n\n // Process the entire stream before moving to next\n await this.processCurrentStream(controller);\n\n // Move to next stream\n this.next(controller);\n } catch (err) {\n controller.error(err);\n }\n }\n\n /**\n * Processes the current stream completely\n * @param controller - The stream controller to forward data to\n */\n private async processCurrentStream(\n controller: ReadableStreamDefaultController,\n ) {\n if (!this.current) return;\n\n const reader = this.current.getReader();\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n controller.enqueue(value);\n }\n } finally {\n reader.releaseLock();\n }\n }\n\n /**\n * Destroys all streams in the queue and the current stream\n * @param reason - Optional reason for destroying the streams\n */\n private async destroy(reason?: unknown) {\n const streams: ReadableStream[] = [];\n if (this.current) streams.push(this.current);\n if (Array.isArray(this.queue)) {\n streams.push(...this.queue);\n }\n\n await Promise.all(\n streams.map(async (stream) => {\n try {\n if (!stream.locked) {\n await stream.cancel(reason);\n }\n // If stream is locked, it's being processed and will be cleaned up naturally\n } catch {\n // Ignore errors during cleanup\n }\n }),\n );\n }\n\n /**\n * Creates a new MultiStream instance in object mode\n * @param streams - Array of readable streams or stream factories to combine\n * @returns A new MultiStream instance configured for object mode\n */\n static obj(streams: ReadableStream[]) {\n return new MultiStream(streams);\n }\n}\n\n/**\n * Effect-based MultiStream that combines multiple Effect Streams into a single stream\n * @deprecated Use Effect Stream utilities directly instead\n */\nexport const MultiStreamEffect = {\n /**\n * Combines multiple Effect streams into a single sequential stream\n * @param streams - Array of Effect streams to combine\n * @returns A single Effect stream containing all data from input streams\n */\n fromStreams: <A, E = UploadistaError>(\n streams: Array<Stream.Stream<A, E>>,\n ): Stream.Stream<A, E> =>\n Stream.fromIterable(streams).pipe(Stream.flatMap((stream) => stream)),\n\n /**\n * Creates a MultiStream from ReadableStream instances using Effect\n * @param streams - Array of ReadableStreams to combine\n * @returns Effect stream of Uint8Array chunks\n */\n fromReadableStreams: (\n streams: ReadableStream<Uint8Array>[],\n ): Stream.Stream<Uint8Array, UploadistaError> =>\n Stream.fromIterable(streams).pipe(\n Stream.flatMap((readableStream) =>\n Stream.fromReadableStream(\n () => readableStream,\n (error) =>\n new UploadistaError({\n code: \"UNKNOWN_ERROR\",\n status: 500,\n body: \"Stream processing failed\",\n details: String(error),\n }),\n ),\n ),\n ),\n\n /**\n * Creates a MultiStream instance compatible with legacy API\n * @param streams - Array of streams to combine\n * @returns Legacy MultiStream instance\n */\n obj: (streams: ReadableStream[]) => new MultiStream(streams),\n};\n"],"mappings":"kGAwBA,IAAa,EAAb,MAAa,CAAY,CAEvB,OAEA,QAAyC,KAEzC,MAOA,YAAY,EAA2B,CACrC,KAAK,OAAS,IAAI,eAAe,CAC/B,MAAQ,GAAe,CACrB,KAAK,MAAQ,EACb,KAAK,KAAK,EAAW,EAEvB,OAAS,GAAW,CAClB,KAAK,QAAQ,EAAO,EAEvB,CAAC,CAMJ,IAAI,UAA2B,CAC7B,OAAO,KAAK,OAOd,MAAc,KAAK,EAA6C,CAG9D,GAFA,KAAK,QAAU,KAEX,KAAK,MAAM,SAAW,EAAG,CAC3B,EAAW,OAAO,CAClB,OAGF,IAAM,EAAa,KAAK,MAAM,OAAO,CACrC,GAAI,CAAC,EAAY,CACf,EAAW,OAAO,CAClB,OAGF,GAAI,CACF,KAAK,QAAU,EAGf,MAAM,KAAK,qBAAqB,EAAW,CAG3C,KAAK,KAAK,EAAW,OACd,EAAK,CACZ,EAAW,MAAM,EAAI,EAQzB,MAAc,qBACZ,EACA,CACA,GAAI,CAAC,KAAK,QAAS,OAEnB,IAAM,EAAS,KAAK,QAAQ,WAAW,CACvC,GAAI,CACF,OAAa,CACX,GAAM,CAAE,OAAM,SAAU,MAAM,EAAO,MAAM,CAC3C,GAAI,EAAM,MACV,EAAW,QAAQ,EAAM,SAEnB,CACR,EAAO,aAAa,EAQxB,MAAc,QAAQ,EAAkB,CACtC,IAAMA,EAA4B,EAAE,CAChC,KAAK,SAAS,EAAQ,KAAK,KAAK,QAAQ,CACxC,MAAM,QAAQ,KAAK,MAAM,EAC3B,EAAQ,KAAK,GAAG,KAAK,MAAM,CAG7B,MAAM,QAAQ,IACZ,EAAQ,IAAI,KAAO,IAAW,CAC5B,GAAI,CACG,EAAO,QACV,MAAM,EAAO,OAAO,EAAO,MAGvB,IAGR,CACH,CAQH,OAAO,IAAI,EAA2B,CACpC,OAAO,IAAI,EAAY,EAAQ,GAQnC,MAAa,EAAoB,CAM/B,YACE,GAEA,EAAO,aAAa,EAAQ,CAAC,KAAK,EAAO,QAAS,GAAW,EAAO,CAAC,CAOvE,oBACE,GAEA,EAAO,aAAa,EAAQ,CAAC,KAC3B,EAAO,QAAS,GACd,EAAO,uBACC,EACL,GACC,IAAI,EAAgB,CAClB,KAAM,gBACN,OAAQ,IACR,KAAM,2BACN,QAAS,OAAO,EAAM,CACvB,CAAC,CACL,CACF,CACF,CAOH,IAAM,GAA8B,IAAI,EAAY,EAAQ,CAC7D"}
|