@tranquilload/core 0.1.0
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 +88 -0
- package/dist/compression-service-Bm1VBnhT.mjs +18 -0
- package/dist/compression-service-Bm1VBnhT.mjs.map +1 -0
- package/dist/compression-service-Bn86iTJe.cjs +35 -0
- package/dist/compression-service-Bn86iTJe.cjs.map +1 -0
- package/dist/compression-service-CiF7Px08.d.cts +15 -0
- package/dist/compression-service-CiF7Px08.d.cts.map +1 -0
- package/dist/compression-service-DI7ZXVxH.d.mts +15 -0
- package/dist/compression-service-DI7ZXVxH.d.mts.map +1 -0
- package/dist/errors.cjs +9 -0
- package/dist/errors.d.cts +2 -0
- package/dist/errors.d.mts +2 -0
- package/dist/errors.mjs +2 -0
- package/dist/index-Ch8xM6Xt.d.cts +60 -0
- package/dist/index-Ch8xM6Xt.d.cts.map +1 -0
- package/dist/index-DBGtgXEd.d.mts +60 -0
- package/dist/index-DBGtgXEd.d.mts.map +1 -0
- package/dist/logger-service-1J5r_akj.mjs +8 -0
- package/dist/logger-service-1J5r_akj.mjs.map +1 -0
- package/dist/logger-service-BF2pZOHN.d.mts +12 -0
- package/dist/logger-service-BF2pZOHN.d.mts.map +1 -0
- package/dist/logger-service-CbN12RhO.d.cts +12 -0
- package/dist/logger-service-CbN12RhO.d.cts.map +1 -0
- package/dist/logger-service-cx8vzkXs.cjs +19 -0
- package/dist/logger-service-cx8vzkXs.cjs.map +1 -0
- package/dist/middleware-CAI0cnW2.d.mts +10 -0
- package/dist/middleware-CAI0cnW2.d.mts.map +1 -0
- package/dist/middleware-CYcctmlY.d.cts +10 -0
- package/dist/middleware-CYcctmlY.d.cts.map +1 -0
- package/dist/multipart.cjs +244 -0
- package/dist/multipart.cjs.map +1 -0
- package/dist/multipart.d.cts +2 -0
- package/dist/multipart.d.mts +2 -0
- package/dist/multipart.mjs +243 -0
- package/dist/multipart.mjs.map +1 -0
- package/dist/normalize-callback-BNBZZ1jT.cjs +44 -0
- package/dist/normalize-callback-BNBZZ1jT.cjs.map +1 -0
- package/dist/normalize-callback-DQ6C4gaV.mjs +33 -0
- package/dist/normalize-callback-DQ6C4gaV.mjs.map +1 -0
- package/dist/oneshot.cjs +64 -0
- package/dist/oneshot.cjs.map +1 -0
- package/dist/oneshot.d.cts +28 -0
- package/dist/oneshot.d.cts.map +1 -0
- package/dist/oneshot.d.mts +28 -0
- package/dist/oneshot.d.mts.map +1 -0
- package/dist/oneshot.mjs +63 -0
- package/dist/oneshot.mjs.map +1 -0
- package/dist/pipeline.cjs +16 -0
- package/dist/pipeline.cjs.map +1 -0
- package/dist/pipeline.d.cts +9 -0
- package/dist/pipeline.d.cts.map +1 -0
- package/dist/pipeline.d.mts +9 -0
- package/dist/pipeline.d.mts.map +1 -0
- package/dist/pipeline.mjs +14 -0
- package/dist/pipeline.mjs.map +1 -0
- package/dist/progress.cjs +0 -0
- package/dist/progress.d.cts +3 -0
- package/dist/progress.d.mts +3 -0
- package/dist/progress.mjs +1 -0
- package/dist/services.cjs +8 -0
- package/dist/services.d.cts +3 -0
- package/dist/services.d.mts +3 -0
- package/dist/services.mjs +3 -0
- package/dist/upload-error-B2ISUc_k.d.cts +48 -0
- package/dist/upload-error-B2ISUc_k.d.cts.map +1 -0
- package/dist/upload-error-BUexBh08.cjs +119 -0
- package/dist/upload-error-BUexBh08.cjs.map +1 -0
- package/dist/upload-error-jol-eoDW.d.mts +48 -0
- package/dist/upload-error-jol-eoDW.d.mts.map +1 -0
- package/dist/upload-error-zDvpxT9X.mjs +72 -0
- package/dist/upload-error-zDvpxT9X.mjs.map +1 -0
- package/dist/upload-event-C9TOVp5l.d.mts +36 -0
- package/dist/upload-event-C9TOVp5l.d.mts.map +1 -0
- package/dist/upload-event-D77olieX.d.cts +36 -0
- package/dist/upload-event-D77olieX.d.cts.map +1 -0
- package/package.json +70 -0
- package/src/errors/index.ts +10 -0
- package/src/errors/upload-error.test.ts +218 -0
- package/src/errors/upload-error.ts +89 -0
- package/src/multipart/chunk-stream.test.ts +79 -0
- package/src/multipart/chunk-stream.ts +37 -0
- package/src/multipart/circuit-breaker.test.ts +95 -0
- package/src/multipart/circuit-breaker.ts +68 -0
- package/src/multipart/index.test.ts +283 -0
- package/src/multipart/index.ts +119 -0
- package/src/multipart/upload-stream.test.ts +336 -0
- package/src/multipart/upload-stream.ts +246 -0
- package/src/oneshot/index.test.ts +153 -0
- package/src/oneshot/index.ts +76 -0
- package/src/oneshot/upload.test.ts +130 -0
- package/src/oneshot/upload.ts +52 -0
- package/src/pipeline/compress.test.ts +69 -0
- package/src/pipeline/compress.ts +8 -0
- package/src/pipeline/index.ts +3 -0
- package/src/pipeline/middleware.test.ts +102 -0
- package/src/pipeline/middleware.ts +30 -0
- package/src/progress/getprogress.test.ts +102 -0
- package/src/progress/index.ts +10 -0
- package/src/progress/upload-event.test.ts +102 -0
- package/src/progress/upload-event.ts +37 -0
- package/src/scaffold.test.ts +5 -0
- package/src/services/compression-service.test.ts +68 -0
- package/src/services/compression-service.ts +31 -0
- package/src/services/index.ts +11 -0
- package/src/services/logger-service-integration.test.ts +98 -0
- package/src/services/logger-service.test.ts +40 -0
- package/src/services/logger-service.ts +17 -0
- package/src/utils/abort-interop.test.ts +65 -0
- package/src/utils/abort-interop.ts +14 -0
- package/src/utils/normalize-callback.test.ts +46 -0
- package/src/utils/normalize-callback.ts +18 -0
- package/tsconfig.json +8 -0
- package/tsdown.config.ts +16 -0
- package/vitest.config.ts +7 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalize-callback-BNBZZ1jT.cjs","names":["Effect","AbortError","Effect"],"sources":["../src/utils/abort-interop.ts","../src/utils/normalize-callback.ts"],"sourcesContent":["import { Effect } from \"effect\"\nimport { AbortError } from \"../errors/upload-error.js\"\n\nexport const fromAbortSignal = (signal?: AbortSignal): Effect.Effect<never, AbortError> =>\n Effect.async<never, AbortError>((resume) => {\n if (!signal) return\n if (signal.aborted) {\n resume(Effect.fail(new AbortError()))\n return\n }\n const handler = (): void => resume(Effect.fail(new AbortError()))\n signal.addEventListener(\"abort\", handler, { once: true })\n return Effect.sync(() => signal.removeEventListener(\"abort\", handler))\n })\n","import { Effect } from \"effect\"\n\nexport const normalizeCallback = <A, E = never>(\n fn: () => A | Promise<A> | Effect.Effect<A, E>\n): Effect.Effect<A, E | unknown> =>\n Effect.suspend((): Effect.Effect<A, E | unknown> => {\n let result: A | Promise<A> | Effect.Effect<A, E>\n try {\n result = fn()\n } catch (e) {\n return Effect.fail(e)\n }\n if (Effect.isEffect(result)) return result\n if (result instanceof Promise) {\n return Effect.tryPromise({ try: () => result as Promise<A>, catch: (e) => e })\n }\n return Effect.succeed(result)\n })\n"],"mappings":";;;AAGA,MAAa,mBAAmB,WAC9BA,OAAAA,OAAO,OAA0B,WAAW;AAC1C,KAAI,CAAC,OAAQ;AACb,KAAI,OAAO,SAAS;AAClB,SAAOA,OAAAA,OAAO,KAAK,IAAIC,qBAAAA,YAAY,CAAC,CAAC;AACrC;;CAEF,MAAM,gBAAsB,OAAOD,OAAAA,OAAO,KAAK,IAAIC,qBAAAA,YAAY,CAAC,CAAC;AACjE,QAAO,iBAAiB,SAAS,SAAS,EAAE,MAAM,MAAM,CAAC;AACzD,QAAOD,OAAAA,OAAO,WAAW,OAAO,oBAAoB,SAAS,QAAQ,CAAC;EACtE;;;ACXJ,MAAa,qBACX,OAEAE,OAAAA,OAAO,cAA6C;CAClD,IAAI;AACJ,KAAI;AACF,WAAS,IAAI;UACN,GAAG;AACV,SAAOA,OAAAA,OAAO,KAAK,EAAE;;AAEvB,KAAIA,OAAAA,OAAO,SAAS,OAAO,CAAE,QAAO;AACpC,KAAI,kBAAkB,QACpB,QAAOA,OAAAA,OAAO,WAAW;EAAE,WAAW;EAAsB,QAAQ,MAAM;EAAG,CAAC;AAEhF,QAAOA,OAAAA,OAAO,QAAQ,OAAO;EAC7B"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { t as AbortError } from "./upload-error-zDvpxT9X.mjs";
|
|
2
|
+
import { Effect } from "effect";
|
|
3
|
+
//#region src/utils/abort-interop.ts
|
|
4
|
+
const fromAbortSignal = (signal) => Effect.async((resume) => {
|
|
5
|
+
if (!signal) return;
|
|
6
|
+
if (signal.aborted) {
|
|
7
|
+
resume(Effect.fail(new AbortError()));
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
const handler = () => resume(Effect.fail(new AbortError()));
|
|
11
|
+
signal.addEventListener("abort", handler, { once: true });
|
|
12
|
+
return Effect.sync(() => signal.removeEventListener("abort", handler));
|
|
13
|
+
});
|
|
14
|
+
//#endregion
|
|
15
|
+
//#region src/utils/normalize-callback.ts
|
|
16
|
+
const normalizeCallback = (fn) => Effect.suspend(() => {
|
|
17
|
+
let result;
|
|
18
|
+
try {
|
|
19
|
+
result = fn();
|
|
20
|
+
} catch (e) {
|
|
21
|
+
return Effect.fail(e);
|
|
22
|
+
}
|
|
23
|
+
if (Effect.isEffect(result)) return result;
|
|
24
|
+
if (result instanceof Promise) return Effect.tryPromise({
|
|
25
|
+
try: () => result,
|
|
26
|
+
catch: (e) => e
|
|
27
|
+
});
|
|
28
|
+
return Effect.succeed(result);
|
|
29
|
+
});
|
|
30
|
+
//#endregion
|
|
31
|
+
export { fromAbortSignal as n, normalizeCallback as t };
|
|
32
|
+
|
|
33
|
+
//# sourceMappingURL=normalize-callback-DQ6C4gaV.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalize-callback-DQ6C4gaV.mjs","names":[],"sources":["../src/utils/abort-interop.ts","../src/utils/normalize-callback.ts"],"sourcesContent":["import { Effect } from \"effect\"\nimport { AbortError } from \"../errors/upload-error.js\"\n\nexport const fromAbortSignal = (signal?: AbortSignal): Effect.Effect<never, AbortError> =>\n Effect.async<never, AbortError>((resume) => {\n if (!signal) return\n if (signal.aborted) {\n resume(Effect.fail(new AbortError()))\n return\n }\n const handler = (): void => resume(Effect.fail(new AbortError()))\n signal.addEventListener(\"abort\", handler, { once: true })\n return Effect.sync(() => signal.removeEventListener(\"abort\", handler))\n })\n","import { Effect } from \"effect\"\n\nexport const normalizeCallback = <A, E = never>(\n fn: () => A | Promise<A> | Effect.Effect<A, E>\n): Effect.Effect<A, E | unknown> =>\n Effect.suspend((): Effect.Effect<A, E | unknown> => {\n let result: A | Promise<A> | Effect.Effect<A, E>\n try {\n result = fn()\n } catch (e) {\n return Effect.fail(e)\n }\n if (Effect.isEffect(result)) return result\n if (result instanceof Promise) {\n return Effect.tryPromise({ try: () => result as Promise<A>, catch: (e) => e })\n }\n return Effect.succeed(result)\n })\n"],"mappings":";;;AAGA,MAAa,mBAAmB,WAC9B,OAAO,OAA0B,WAAW;AAC1C,KAAI,CAAC,OAAQ;AACb,KAAI,OAAO,SAAS;AAClB,SAAO,OAAO,KAAK,IAAI,YAAY,CAAC,CAAC;AACrC;;CAEF,MAAM,gBAAsB,OAAO,OAAO,KAAK,IAAI,YAAY,CAAC,CAAC;AACjE,QAAO,iBAAiB,SAAS,SAAS,EAAE,MAAM,MAAM,CAAC;AACzD,QAAO,OAAO,WAAW,OAAO,oBAAoB,SAAS,QAAQ,CAAC;EACtE;;;ACXJ,MAAa,qBACX,OAEA,OAAO,cAA6C;CAClD,IAAI;AACJ,KAAI;AACF,WAAS,IAAI;UACN,GAAG;AACV,SAAO,OAAO,KAAK,EAAE;;AAEvB,KAAI,OAAO,SAAS,OAAO,CAAE,QAAO;AACpC,KAAI,kBAAkB,QACpB,QAAO,OAAO,WAAW;EAAE,WAAW;EAAsB,QAAQ,MAAM;EAAG,CAAC;AAEhF,QAAO,OAAO,QAAQ,OAAO;EAC7B"}
|
package/dist/oneshot.cjs
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_compression_service = require("./compression-service-Bn86iTJe.cjs");
|
|
3
|
+
const require_logger_service = require("./logger-service-cx8vzkXs.cjs");
|
|
4
|
+
const require_upload_error = require("./upload-error-BUexBh08.cjs");
|
|
5
|
+
const require_normalize_callback = require("./normalize-callback-BNBZZ1jT.cjs");
|
|
6
|
+
let effect = require("effect");
|
|
7
|
+
//#region src/oneshot/upload.ts
|
|
8
|
+
const uploadOnceEffect = (options) => {
|
|
9
|
+
const { stream, upload, signal } = options;
|
|
10
|
+
const program = effect.Effect.gen(function* () {
|
|
11
|
+
const logger = yield* require_logger_service.LoggerService;
|
|
12
|
+
yield* effect.Effect.sync(() => logger.log("info", "One-shot upload starting"));
|
|
13
|
+
const uploadEffect = require_normalize_callback.normalizeCallback(() => upload(stream)).pipe(effect.Effect.mapError((cause) => {
|
|
14
|
+
if (cause instanceof require_upload_error.AbortError) return cause;
|
|
15
|
+
return new require_upload_error.CompleteUploadError(cause);
|
|
16
|
+
}));
|
|
17
|
+
yield* signal ? effect.Effect.raceFirst(uploadEffect, require_normalize_callback.fromAbortSignal(signal)) : uploadEffect;
|
|
18
|
+
yield* effect.Effect.sync(() => logger.log("info", "One-shot upload completed"));
|
|
19
|
+
return {
|
|
20
|
+
_tag: "UploadCompleted",
|
|
21
|
+
uploadId: "",
|
|
22
|
+
totalParts: 1,
|
|
23
|
+
timestamp: Date.now()
|
|
24
|
+
};
|
|
25
|
+
});
|
|
26
|
+
return effect.Stream.fromEffect(program);
|
|
27
|
+
};
|
|
28
|
+
//#endregion
|
|
29
|
+
//#region src/oneshot/index.ts
|
|
30
|
+
const uploadOnce = (options) => {
|
|
31
|
+
const collected = (async () => {
|
|
32
|
+
let processedStream = options.stream;
|
|
33
|
+
if (options.pipeline !== void 0) if (typeof options.pipeline === "function") processedStream = options.pipeline(options.stream);
|
|
34
|
+
else processedStream = (await effect.Effect.runPromise(effect.Effect.provide(options.pipeline, require_compression_service.CompressionServiceLive)))(options.stream);
|
|
35
|
+
const program = uploadOnceEffect({
|
|
36
|
+
...options,
|
|
37
|
+
stream: processedStream
|
|
38
|
+
}).pipe(effect.Stream.provideLayer(require_logger_service.LoggerServiceLive));
|
|
39
|
+
const exit = await effect.Stream.runCollect(program).pipe(effect.Effect.map((chunk) => Array.from(chunk)), effect.Effect.runPromiseExit);
|
|
40
|
+
if (effect.Exit.isSuccess(exit)) return exit.value;
|
|
41
|
+
return Promise.reject(effect.Cause.squash(exit.cause));
|
|
42
|
+
})();
|
|
43
|
+
return {
|
|
44
|
+
events: new ReadableStream({ async start(controller) {
|
|
45
|
+
try {
|
|
46
|
+
const evts = await collected;
|
|
47
|
+
for (const event of evts) controller.enqueue(event);
|
|
48
|
+
controller.close();
|
|
49
|
+
} catch (_) {
|
|
50
|
+
controller.close();
|
|
51
|
+
}
|
|
52
|
+
} }),
|
|
53
|
+
result: collected.then((evts) => {
|
|
54
|
+
const last = evts[evts.length - 1];
|
|
55
|
+
if (last === void 0) return Promise.reject(/* @__PURE__ */ new Error("uploadOnce: stream ended without emitting an event"));
|
|
56
|
+
return last;
|
|
57
|
+
})
|
|
58
|
+
};
|
|
59
|
+
};
|
|
60
|
+
uploadOnce.effect = uploadOnceEffect;
|
|
61
|
+
//#endregion
|
|
62
|
+
exports.uploadOnce = uploadOnce;
|
|
63
|
+
|
|
64
|
+
//# sourceMappingURL=oneshot.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oneshot.cjs","names":["Effect","LoggerService","normalizeCallback","AbortError","CompleteUploadError","fromAbortSignal","Stream","Effect","CompressionServiceLive","Stream","LoggerServiceLive","Exit","Cause"],"sources":["../src/oneshot/upload.ts","../src/oneshot/index.ts"],"sourcesContent":["import { Effect, Stream } from \"effect\"\nimport type { UploadError } from \"../errors/upload-error.js\"\nimport { AbortError, CompleteUploadError } from \"../errors/upload-error.js\"\nimport { LoggerService } from \"../services/logger-service.js\"\nimport { fromAbortSignal } from \"../utils/abort-interop.js\"\nimport { normalizeCallback } from \"../utils/normalize-callback.js\"\nimport type { UploadEvent } from \"../progress/upload-event.js\"\n\nexport interface UploadOnceOptions {\n readonly stream: ReadableStream<Uint8Array>\n readonly upload: (\n stream: ReadableStream<Uint8Array>\n ) => void | Promise<void> | Effect.Effect<void, UploadError>\n readonly signal?: AbortSignal\n}\n\nexport const uploadOnceEffect = (\n options: UploadOnceOptions\n): Stream.Stream<UploadEvent, UploadError, LoggerService> => {\n const { stream, upload, signal } = options\n\n const program: Effect.Effect<UploadEvent, UploadError, LoggerService> = Effect.gen(\n function* () {\n const logger = yield* LoggerService\n yield* Effect.sync(() => logger.log(\"info\", \"One-shot upload starting\"))\n\n const uploadEffect: Effect.Effect<void, UploadError> = normalizeCallback(\n () => upload(stream)\n ).pipe(\n Effect.mapError((cause): UploadError => {\n if (cause instanceof AbortError) return cause\n return new CompleteUploadError(cause)\n })\n )\n\n yield* signal\n ? Effect.raceFirst(uploadEffect, fromAbortSignal(signal))\n : uploadEffect\n\n yield* Effect.sync(() => logger.log(\"info\", \"One-shot upload completed\"))\n\n return {\n _tag: \"UploadCompleted\" as const,\n uploadId: \"\",\n totalParts: 1,\n timestamp: Date.now(),\n } satisfies UploadEvent\n }\n )\n\n return Stream.fromEffect(program)\n}\n","import { Cause, Effect, Exit, Stream } from \"effect\"\nimport type { UploadCompleted, UploadEvent } from \"../progress/upload-event.js\"\nimport type { Transform } from \"../pipeline/middleware.js\"\nimport { CompressionServiceLive } from \"../services/compression-service.js\"\nimport { LoggerServiceLive } from \"../services/logger-service.js\"\nimport { uploadOnceEffect, type UploadOnceOptions } from \"./upload.js\"\n\nexport type UploadResult = UploadCompleted\nexport type { UploadOnceOptions }\n\nexport interface OneShotPublicOptions extends UploadOnceOptions {\n readonly pipeline?: Transform | Effect.Effect<Transform, unknown, unknown>\n}\n\nexport const uploadOnce = (\n options: OneShotPublicOptions\n): {\n events: ReadableStream<UploadEvent>\n result: Promise<UploadResult>\n} => {\n const collected: Promise<ReadonlyArray<UploadEvent>> = (async () => {\n let processedStream = options.stream\n if (options.pipeline !== undefined) {\n if (typeof options.pipeline === \"function\") {\n processedStream = options.pipeline(options.stream)\n } else {\n const transform = await Effect.runPromise(\n Effect.provide(\n options.pipeline as Effect.Effect<Transform, unknown, never>,\n CompressionServiceLive\n )\n )\n processedStream = transform(options.stream)\n }\n }\n\n const program = uploadOnceEffect({ ...options, stream: processedStream }).pipe(\n Stream.provideLayer(LoggerServiceLive)\n )\n\n const exit = await Stream.runCollect(program).pipe(\n Effect.map((chunk) => Array.from(chunk)),\n Effect.runPromiseExit\n )\n if (Exit.isSuccess(exit)) return exit.value\n return Promise.reject(Cause.squash(exit.cause))\n })()\n\n // events: ReadableStream built from collected array; closes cleanly on error\n const events = new ReadableStream<UploadEvent>({\n async start(controller) {\n try {\n const evts = await collected\n for (const event of evts) controller.enqueue(event)\n controller.close()\n } catch (_) {\n // Close cleanly — abort/upload errors surface via `result` only\n controller.close()\n }\n },\n })\n\n // result: resolves with UploadCompleted, rejects with UploadError on failure\n const result: Promise<UploadResult> = collected.then((evts) => {\n const last = evts[evts.length - 1]\n if (last === undefined) {\n return Promise.reject(new Error(\"uploadOnce: stream ended without emitting an event\"))\n }\n return last as UploadResult\n })\n\n return { events, result }\n}\n\n// Effect escape hatch — LoggerService layer left open for user composition\nuploadOnce.effect = uploadOnceEffect\n"],"mappings":";;;;;;;AAgBA,MAAa,oBACX,YAC2D;CAC3D,MAAM,EAAE,QAAQ,QAAQ,WAAW;CAEnC,MAAM,UAAkEA,OAAAA,OAAO,IAC7E,aAAa;EACX,MAAM,SAAS,OAAOC,uBAAAA;AACtB,SAAOD,OAAAA,OAAO,WAAW,OAAO,IAAI,QAAQ,2BAA2B,CAAC;EAExE,MAAM,eAAiDE,2BAAAA,wBAC/C,OAAO,OAAO,CACrB,CAAC,KACAF,OAAAA,OAAO,UAAU,UAAuB;AACtC,OAAI,iBAAiBG,qBAAAA,WAAY,QAAO;AACxC,UAAO,IAAIC,qBAAAA,oBAAoB,MAAM;IACrC,CACH;AAED,SAAO,SACHJ,OAAAA,OAAO,UAAU,cAAcK,2BAAAA,gBAAgB,OAAO,CAAC,GACvD;AAEJ,SAAOL,OAAAA,OAAO,WAAW,OAAO,IAAI,QAAQ,4BAA4B,CAAC;AAEzE,SAAO;GACL,MAAM;GACN,UAAU;GACV,YAAY;GACZ,WAAW,KAAK,KAAK;GACtB;GAEJ;AAED,QAAOM,OAAAA,OAAO,WAAW,QAAQ;;;;ACpCnC,MAAa,cACX,YAIG;CACH,MAAM,aAAkD,YAAY;EAClE,IAAI,kBAAkB,QAAQ;AAC9B,MAAI,QAAQ,aAAa,KAAA,EACvB,KAAI,OAAO,QAAQ,aAAa,WAC9B,mBAAkB,QAAQ,SAAS,QAAQ,OAAO;MAQlD,oBANkB,MAAMC,OAAAA,OAAO,WAC7BA,OAAAA,OAAO,QACL,QAAQ,UACRC,4BAAAA,uBACD,CACF,EAC2B,QAAQ,OAAO;EAI/C,MAAM,UAAU,iBAAiB;GAAE,GAAG;GAAS,QAAQ;GAAiB,CAAC,CAAC,KACxEC,OAAAA,OAAO,aAAaC,uBAAAA,kBAAkB,CACvC;EAED,MAAM,OAAO,MAAMD,OAAAA,OAAO,WAAW,QAAQ,CAAC,KAC5CF,OAAAA,OAAO,KAAK,UAAU,MAAM,KAAK,MAAM,CAAC,EACxCA,OAAAA,OAAO,eACR;AACD,MAAII,OAAAA,KAAK,UAAU,KAAK,CAAE,QAAO,KAAK;AACtC,SAAO,QAAQ,OAAOC,OAAAA,MAAM,OAAO,KAAK,MAAM,CAAC;KAC7C;AAyBJ,QAAO;EAAE,QAtBM,IAAI,eAA4B,EAC7C,MAAM,MAAM,YAAY;AACtB,OAAI;IACF,MAAM,OAAO,MAAM;AACnB,SAAK,MAAM,SAAS,KAAM,YAAW,QAAQ,MAAM;AACnD,eAAW,OAAO;YACX,GAAG;AAEV,eAAW,OAAO;;KAGvB,CAAC;EAWe,QARqB,UAAU,MAAM,SAAS;GAC7D,MAAM,OAAO,KAAK,KAAK,SAAS;AAChC,OAAI,SAAS,KAAA,EACX,QAAO,QAAQ,uBAAO,IAAI,MAAM,qDAAqD,CAAC;AAExF,UAAO;IACP;EAEuB;;AAI3B,WAAW,SAAS"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { c as UploadError } from "./upload-error-B2ISUc_k.cjs";
|
|
2
|
+
import { n as LoggerService } from "./logger-service-CbN12RhO.cjs";
|
|
3
|
+
import { a as UploadEvent, i as UploadCompleted } from "./upload-event-D77olieX.cjs";
|
|
4
|
+
import { t as Transform } from "./middleware-CYcctmlY.cjs";
|
|
5
|
+
import { Effect, Stream } from "effect";
|
|
6
|
+
|
|
7
|
+
//#region src/oneshot/upload.d.ts
|
|
8
|
+
interface UploadOnceOptions {
|
|
9
|
+
readonly stream: ReadableStream<Uint8Array>;
|
|
10
|
+
readonly upload: (stream: ReadableStream<Uint8Array>) => void | Promise<void> | Effect.Effect<void, UploadError>;
|
|
11
|
+
readonly signal?: AbortSignal;
|
|
12
|
+
}
|
|
13
|
+
//#endregion
|
|
14
|
+
//#region src/oneshot/index.d.ts
|
|
15
|
+
type UploadResult = UploadCompleted;
|
|
16
|
+
interface OneShotPublicOptions extends UploadOnceOptions {
|
|
17
|
+
readonly pipeline?: Transform | Effect.Effect<Transform, unknown, unknown>;
|
|
18
|
+
}
|
|
19
|
+
declare const uploadOnce: {
|
|
20
|
+
(options: OneShotPublicOptions): {
|
|
21
|
+
events: ReadableStream<UploadEvent>;
|
|
22
|
+
result: Promise<UploadResult>;
|
|
23
|
+
};
|
|
24
|
+
effect: (options: UploadOnceOptions) => Stream.Stream<UploadEvent, UploadError, LoggerService>;
|
|
25
|
+
};
|
|
26
|
+
//#endregion
|
|
27
|
+
export { OneShotPublicOptions, type UploadOnceOptions, UploadResult, uploadOnce };
|
|
28
|
+
//# sourceMappingURL=oneshot.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oneshot.d.cts","names":[],"sources":["../src/oneshot/upload.ts","../src/oneshot/index.ts"],"mappings":";;;;;;;UAQiB,iBAAA;EAAA,SACN,MAAA,EAAQ,cAAA,CAAe,UAAA;EAAA,SACvB,MAAA,GACP,MAAA,EAAQ,cAAA,CAAe,UAAA,aACb,OAAA,SAAgB,MAAA,CAAO,MAAA,OAAa,WAAA;EAAA,SACvC,MAAA,GAAS,WAAA;AAAA;;;KCNR,YAAA,GAAe,eAAA;AAAA,UAGV,oBAAA,SAA6B,iBAAA;EAAA,SACnC,QAAA,GAAW,SAAA,GAAY,MAAA,CAAO,MAAA,CAAO,SAAA;AAAA;AAAA,cAGnC,UAAA;EAAA,UACF,oBAAA;IAET,MAAA,EAAQ,cAAA,CAAe,WAAA;IACvB,MAAA,EAAQ,OAAA,CAAQ,YAAA;EAAA"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { c as UploadError } from "./upload-error-jol-eoDW.mjs";
|
|
2
|
+
import { n as LoggerService } from "./logger-service-BF2pZOHN.mjs";
|
|
3
|
+
import { a as UploadEvent, i as UploadCompleted } from "./upload-event-C9TOVp5l.mjs";
|
|
4
|
+
import { t as Transform } from "./middleware-CAI0cnW2.mjs";
|
|
5
|
+
import { Effect, Stream } from "effect";
|
|
6
|
+
|
|
7
|
+
//#region src/oneshot/upload.d.ts
|
|
8
|
+
interface UploadOnceOptions {
|
|
9
|
+
readonly stream: ReadableStream<Uint8Array>;
|
|
10
|
+
readonly upload: (stream: ReadableStream<Uint8Array>) => void | Promise<void> | Effect.Effect<void, UploadError>;
|
|
11
|
+
readonly signal?: AbortSignal;
|
|
12
|
+
}
|
|
13
|
+
//#endregion
|
|
14
|
+
//#region src/oneshot/index.d.ts
|
|
15
|
+
type UploadResult = UploadCompleted;
|
|
16
|
+
interface OneShotPublicOptions extends UploadOnceOptions {
|
|
17
|
+
readonly pipeline?: Transform | Effect.Effect<Transform, unknown, unknown>;
|
|
18
|
+
}
|
|
19
|
+
declare const uploadOnce: {
|
|
20
|
+
(options: OneShotPublicOptions): {
|
|
21
|
+
events: ReadableStream<UploadEvent>;
|
|
22
|
+
result: Promise<UploadResult>;
|
|
23
|
+
};
|
|
24
|
+
effect: (options: UploadOnceOptions) => Stream.Stream<UploadEvent, UploadError, LoggerService>;
|
|
25
|
+
};
|
|
26
|
+
//#endregion
|
|
27
|
+
export { OneShotPublicOptions, type UploadOnceOptions, UploadResult, uploadOnce };
|
|
28
|
+
//# sourceMappingURL=oneshot.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oneshot.d.mts","names":[],"sources":["../src/oneshot/upload.ts","../src/oneshot/index.ts"],"mappings":";;;;;;;UAQiB,iBAAA;EAAA,SACN,MAAA,EAAQ,cAAA,CAAe,UAAA;EAAA,SACvB,MAAA,GACP,MAAA,EAAQ,cAAA,CAAe,UAAA,aACb,OAAA,SAAgB,MAAA,CAAO,MAAA,OAAa,WAAA;EAAA,SACvC,MAAA,GAAS,WAAA;AAAA;;;KCNR,YAAA,GAAe,eAAA;AAAA,UAGV,oBAAA,SAA6B,iBAAA;EAAA,SACnC,QAAA,GAAW,SAAA,GAAY,MAAA,CAAO,MAAA,CAAO,SAAA;AAAA;AAAA,cAGnC,UAAA;EAAA,UACF,oBAAA;IAET,MAAA,EAAQ,cAAA,CAAe,WAAA;IACvB,MAAA,EAAQ,OAAA,CAAQ,YAAA;EAAA"}
|
package/dist/oneshot.mjs
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { n as CompressionServiceLive } from "./compression-service-Bm1VBnhT.mjs";
|
|
2
|
+
import { n as LoggerServiceLive, t as LoggerService } from "./logger-service-1J5r_akj.mjs";
|
|
3
|
+
import { r as CompleteUploadError, t as AbortError } from "./upload-error-zDvpxT9X.mjs";
|
|
4
|
+
import { n as fromAbortSignal, t as normalizeCallback } from "./normalize-callback-DQ6C4gaV.mjs";
|
|
5
|
+
import { Cause, Effect, Exit, Stream } from "effect";
|
|
6
|
+
//#region src/oneshot/upload.ts
|
|
7
|
+
const uploadOnceEffect = (options) => {
|
|
8
|
+
const { stream, upload, signal } = options;
|
|
9
|
+
const program = Effect.gen(function* () {
|
|
10
|
+
const logger = yield* LoggerService;
|
|
11
|
+
yield* Effect.sync(() => logger.log("info", "One-shot upload starting"));
|
|
12
|
+
const uploadEffect = normalizeCallback(() => upload(stream)).pipe(Effect.mapError((cause) => {
|
|
13
|
+
if (cause instanceof AbortError) return cause;
|
|
14
|
+
return new CompleteUploadError(cause);
|
|
15
|
+
}));
|
|
16
|
+
yield* signal ? Effect.raceFirst(uploadEffect, fromAbortSignal(signal)) : uploadEffect;
|
|
17
|
+
yield* Effect.sync(() => logger.log("info", "One-shot upload completed"));
|
|
18
|
+
return {
|
|
19
|
+
_tag: "UploadCompleted",
|
|
20
|
+
uploadId: "",
|
|
21
|
+
totalParts: 1,
|
|
22
|
+
timestamp: Date.now()
|
|
23
|
+
};
|
|
24
|
+
});
|
|
25
|
+
return Stream.fromEffect(program);
|
|
26
|
+
};
|
|
27
|
+
//#endregion
|
|
28
|
+
//#region src/oneshot/index.ts
|
|
29
|
+
const uploadOnce = (options) => {
|
|
30
|
+
const collected = (async () => {
|
|
31
|
+
let processedStream = options.stream;
|
|
32
|
+
if (options.pipeline !== void 0) if (typeof options.pipeline === "function") processedStream = options.pipeline(options.stream);
|
|
33
|
+
else processedStream = (await Effect.runPromise(Effect.provide(options.pipeline, CompressionServiceLive)))(options.stream);
|
|
34
|
+
const program = uploadOnceEffect({
|
|
35
|
+
...options,
|
|
36
|
+
stream: processedStream
|
|
37
|
+
}).pipe(Stream.provideLayer(LoggerServiceLive));
|
|
38
|
+
const exit = await Stream.runCollect(program).pipe(Effect.map((chunk) => Array.from(chunk)), Effect.runPromiseExit);
|
|
39
|
+
if (Exit.isSuccess(exit)) return exit.value;
|
|
40
|
+
return Promise.reject(Cause.squash(exit.cause));
|
|
41
|
+
})();
|
|
42
|
+
return {
|
|
43
|
+
events: new ReadableStream({ async start(controller) {
|
|
44
|
+
try {
|
|
45
|
+
const evts = await collected;
|
|
46
|
+
for (const event of evts) controller.enqueue(event);
|
|
47
|
+
controller.close();
|
|
48
|
+
} catch (_) {
|
|
49
|
+
controller.close();
|
|
50
|
+
}
|
|
51
|
+
} }),
|
|
52
|
+
result: collected.then((evts) => {
|
|
53
|
+
const last = evts[evts.length - 1];
|
|
54
|
+
if (last === void 0) return Promise.reject(/* @__PURE__ */ new Error("uploadOnce: stream ended without emitting an event"));
|
|
55
|
+
return last;
|
|
56
|
+
})
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
uploadOnce.effect = uploadOnceEffect;
|
|
60
|
+
//#endregion
|
|
61
|
+
export { uploadOnce };
|
|
62
|
+
|
|
63
|
+
//# sourceMappingURL=oneshot.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oneshot.mjs","names":[],"sources":["../src/oneshot/upload.ts","../src/oneshot/index.ts"],"sourcesContent":["import { Effect, Stream } from \"effect\"\nimport type { UploadError } from \"../errors/upload-error.js\"\nimport { AbortError, CompleteUploadError } from \"../errors/upload-error.js\"\nimport { LoggerService } from \"../services/logger-service.js\"\nimport { fromAbortSignal } from \"../utils/abort-interop.js\"\nimport { normalizeCallback } from \"../utils/normalize-callback.js\"\nimport type { UploadEvent } from \"../progress/upload-event.js\"\n\nexport interface UploadOnceOptions {\n readonly stream: ReadableStream<Uint8Array>\n readonly upload: (\n stream: ReadableStream<Uint8Array>\n ) => void | Promise<void> | Effect.Effect<void, UploadError>\n readonly signal?: AbortSignal\n}\n\nexport const uploadOnceEffect = (\n options: UploadOnceOptions\n): Stream.Stream<UploadEvent, UploadError, LoggerService> => {\n const { stream, upload, signal } = options\n\n const program: Effect.Effect<UploadEvent, UploadError, LoggerService> = Effect.gen(\n function* () {\n const logger = yield* LoggerService\n yield* Effect.sync(() => logger.log(\"info\", \"One-shot upload starting\"))\n\n const uploadEffect: Effect.Effect<void, UploadError> = normalizeCallback(\n () => upload(stream)\n ).pipe(\n Effect.mapError((cause): UploadError => {\n if (cause instanceof AbortError) return cause\n return new CompleteUploadError(cause)\n })\n )\n\n yield* signal\n ? Effect.raceFirst(uploadEffect, fromAbortSignal(signal))\n : uploadEffect\n\n yield* Effect.sync(() => logger.log(\"info\", \"One-shot upload completed\"))\n\n return {\n _tag: \"UploadCompleted\" as const,\n uploadId: \"\",\n totalParts: 1,\n timestamp: Date.now(),\n } satisfies UploadEvent\n }\n )\n\n return Stream.fromEffect(program)\n}\n","import { Cause, Effect, Exit, Stream } from \"effect\"\nimport type { UploadCompleted, UploadEvent } from \"../progress/upload-event.js\"\nimport type { Transform } from \"../pipeline/middleware.js\"\nimport { CompressionServiceLive } from \"../services/compression-service.js\"\nimport { LoggerServiceLive } from \"../services/logger-service.js\"\nimport { uploadOnceEffect, type UploadOnceOptions } from \"./upload.js\"\n\nexport type UploadResult = UploadCompleted\nexport type { UploadOnceOptions }\n\nexport interface OneShotPublicOptions extends UploadOnceOptions {\n readonly pipeline?: Transform | Effect.Effect<Transform, unknown, unknown>\n}\n\nexport const uploadOnce = (\n options: OneShotPublicOptions\n): {\n events: ReadableStream<UploadEvent>\n result: Promise<UploadResult>\n} => {\n const collected: Promise<ReadonlyArray<UploadEvent>> = (async () => {\n let processedStream = options.stream\n if (options.pipeline !== undefined) {\n if (typeof options.pipeline === \"function\") {\n processedStream = options.pipeline(options.stream)\n } else {\n const transform = await Effect.runPromise(\n Effect.provide(\n options.pipeline as Effect.Effect<Transform, unknown, never>,\n CompressionServiceLive\n )\n )\n processedStream = transform(options.stream)\n }\n }\n\n const program = uploadOnceEffect({ ...options, stream: processedStream }).pipe(\n Stream.provideLayer(LoggerServiceLive)\n )\n\n const exit = await Stream.runCollect(program).pipe(\n Effect.map((chunk) => Array.from(chunk)),\n Effect.runPromiseExit\n )\n if (Exit.isSuccess(exit)) return exit.value\n return Promise.reject(Cause.squash(exit.cause))\n })()\n\n // events: ReadableStream built from collected array; closes cleanly on error\n const events = new ReadableStream<UploadEvent>({\n async start(controller) {\n try {\n const evts = await collected\n for (const event of evts) controller.enqueue(event)\n controller.close()\n } catch (_) {\n // Close cleanly — abort/upload errors surface via `result` only\n controller.close()\n }\n },\n })\n\n // result: resolves with UploadCompleted, rejects with UploadError on failure\n const result: Promise<UploadResult> = collected.then((evts) => {\n const last = evts[evts.length - 1]\n if (last === undefined) {\n return Promise.reject(new Error(\"uploadOnce: stream ended without emitting an event\"))\n }\n return last as UploadResult\n })\n\n return { events, result }\n}\n\n// Effect escape hatch — LoggerService layer left open for user composition\nuploadOnce.effect = uploadOnceEffect\n"],"mappings":";;;;;;AAgBA,MAAa,oBACX,YAC2D;CAC3D,MAAM,EAAE,QAAQ,QAAQ,WAAW;CAEnC,MAAM,UAAkE,OAAO,IAC7E,aAAa;EACX,MAAM,SAAS,OAAO;AACtB,SAAO,OAAO,WAAW,OAAO,IAAI,QAAQ,2BAA2B,CAAC;EAExE,MAAM,eAAiD,wBAC/C,OAAO,OAAO,CACrB,CAAC,KACA,OAAO,UAAU,UAAuB;AACtC,OAAI,iBAAiB,WAAY,QAAO;AACxC,UAAO,IAAI,oBAAoB,MAAM;IACrC,CACH;AAED,SAAO,SACH,OAAO,UAAU,cAAc,gBAAgB,OAAO,CAAC,GACvD;AAEJ,SAAO,OAAO,WAAW,OAAO,IAAI,QAAQ,4BAA4B,CAAC;AAEzE,SAAO;GACL,MAAM;GACN,UAAU;GACV,YAAY;GACZ,WAAW,KAAK,KAAK;GACtB;GAEJ;AAED,QAAO,OAAO,WAAW,QAAQ;;;;ACpCnC,MAAa,cACX,YAIG;CACH,MAAM,aAAkD,YAAY;EAClE,IAAI,kBAAkB,QAAQ;AAC9B,MAAI,QAAQ,aAAa,KAAA,EACvB,KAAI,OAAO,QAAQ,aAAa,WAC9B,mBAAkB,QAAQ,SAAS,QAAQ,OAAO;MAQlD,oBANkB,MAAM,OAAO,WAC7B,OAAO,QACL,QAAQ,UACR,uBACD,CACF,EAC2B,QAAQ,OAAO;EAI/C,MAAM,UAAU,iBAAiB;GAAE,GAAG;GAAS,QAAQ;GAAiB,CAAC,CAAC,KACxE,OAAO,aAAa,kBAAkB,CACvC;EAED,MAAM,OAAO,MAAM,OAAO,WAAW,QAAQ,CAAC,KAC5C,OAAO,KAAK,UAAU,MAAM,KAAK,MAAM,CAAC,EACxC,OAAO,eACR;AACD,MAAI,KAAK,UAAU,KAAK,CAAE,QAAO,KAAK;AACtC,SAAO,QAAQ,OAAO,MAAM,OAAO,KAAK,MAAM,CAAC;KAC7C;AAyBJ,QAAO;EAAE,QAtBM,IAAI,eAA4B,EAC7C,MAAM,MAAM,YAAY;AACtB,OAAI;IACF,MAAM,OAAO,MAAM;AACnB,SAAK,MAAM,SAAS,KAAM,YAAW,QAAQ,MAAM;AACnD,eAAW,OAAO;YACX,GAAG;AAEV,eAAW,OAAO;;KAGvB,CAAC;EAWe,QARqB,UAAU,MAAM,SAAS;GAC7D,MAAM,OAAO,KAAK,KAAK,SAAS;AAChC,OAAI,SAAS,KAAA,EACX,QAAO,QAAQ,uBAAO,IAAI,MAAM,qDAAqD,CAAC;AAExF,UAAO;IACP;EAEuB;;AAI3B,WAAW,SAAS"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_compression_service = require("./compression-service-Bn86iTJe.cjs");
|
|
3
|
+
let effect = require("effect");
|
|
4
|
+
//#region src/pipeline/middleware.ts
|
|
5
|
+
function compose(...transforms) {
|
|
6
|
+
if (!transforms.some((t) => typeof t !== "function") || transforms.length === 0) return (stream) => transforms.reduce((s, t) => t(s), stream);
|
|
7
|
+
return effect.Effect.map(effect.Effect.all(transforms.map((t) => typeof t === "function" ? effect.Effect.succeed(t) : t)), (resolved) => (stream) => resolved.reduce((s, t) => t(s), stream));
|
|
8
|
+
}
|
|
9
|
+
//#endregion
|
|
10
|
+
//#region src/pipeline/compress.ts
|
|
11
|
+
const compress = (algorithm = "deflate-raw") => effect.Effect.map(require_compression_service.CompressionService, (svc) => (stream) => svc.compress(stream, algorithm));
|
|
12
|
+
//#endregion
|
|
13
|
+
exports.compose = compose;
|
|
14
|
+
exports.compress = compress;
|
|
15
|
+
|
|
16
|
+
//# sourceMappingURL=pipeline.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline.cjs","names":["Effect","Effect","CompressionService"],"sources":["../src/pipeline/middleware.ts","../src/pipeline/compress.ts"],"sourcesContent":["import { Effect } from \"effect\"\n\nexport type Transform = (stream: ReadableStream<Uint8Array>) => ReadableStream<Uint8Array>\n\nexport function compose(): Transform\nexport function compose(...transforms: Transform[]): Transform\nexport function compose<E, R>(\n ...transforms: Array<Transform | Effect.Effect<Transform, E, R>>\n): Effect.Effect<Transform, E, R>\nexport function compose(\n ...transforms: Array<Transform | Effect.Effect<Transform, any, any>>\n): Transform | Effect.Effect<Transform, any, any> {\n const hasEffect = transforms.some((t) => typeof t !== \"function\")\n if (!hasEffect || transforms.length === 0) {\n return (stream: ReadableStream<Uint8Array>): ReadableStream<Uint8Array> =>\n (transforms as Transform[]).reduce((s, t) => t(s), stream)\n }\n return Effect.map(\n Effect.all(\n transforms.map((t) =>\n typeof t === \"function\"\n ? Effect.succeed(t as Transform)\n : (t as Effect.Effect<Transform, any, any>)\n )\n ),\n (resolved) =>\n (stream: ReadableStream<Uint8Array>): ReadableStream<Uint8Array> =>\n resolved.reduce((s, t) => t(s), stream)\n )\n}\n","import { Effect } from \"effect\"\nimport { CompressionService } from \"../services/compression-service.js\"\nimport type { Transform } from \"./middleware.js\"\n\nexport const compress = (\n algorithm: CompressionFormat = \"deflate-raw\"\n): Effect.Effect<Transform, never, CompressionService> =>\n Effect.map(CompressionService, (svc) => (stream) => svc.compress(stream, algorithm))\n"],"mappings":";;;;AASA,SAAgB,QACd,GAAG,YAC6C;AAEhD,KAAI,CADc,WAAW,MAAM,MAAM,OAAO,MAAM,WAAW,IAC/C,WAAW,WAAW,EACtC,SAAQ,WACL,WAA2B,QAAQ,GAAG,MAAM,EAAE,EAAE,EAAE,OAAO;AAE9D,QAAOA,OAAAA,OAAO,IACZA,OAAAA,OAAO,IACL,WAAW,KAAK,MACd,OAAO,MAAM,aACTA,OAAAA,OAAO,QAAQ,EAAe,GAC7B,EACN,CACF,GACA,cACE,WACC,SAAS,QAAQ,GAAG,MAAM,EAAE,EAAE,EAAE,OAAO,CAC5C;;;;ACxBH,MAAa,YACX,YAA+B,kBAE/BC,OAAAA,OAAO,IAAIC,4BAAAA,qBAAqB,SAAS,WAAW,IAAI,SAAS,QAAQ,UAAU,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { n as compose, t as Transform } from "./middleware-CYcctmlY.cjs";
|
|
2
|
+
import { t as CompressionService } from "./compression-service-CiF7Px08.cjs";
|
|
3
|
+
import { Effect } from "effect";
|
|
4
|
+
|
|
5
|
+
//#region src/pipeline/compress.d.ts
|
|
6
|
+
declare const compress: (algorithm?: CompressionFormat) => Effect.Effect<Transform, never, CompressionService>;
|
|
7
|
+
//#endregion
|
|
8
|
+
export { type Transform, compose, compress };
|
|
9
|
+
//# sourceMappingURL=pipeline.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline.d.cts","names":[],"sources":["../src/pipeline/compress.ts"],"mappings":";;;;;cAIa,QAAA,GACX,SAAA,GAAW,iBAAA,KACV,MAAA,CAAO,MAAA,CAAO,SAAA,SAAkB,kBAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { n as compose, t as Transform } from "./middleware-CAI0cnW2.mjs";
|
|
2
|
+
import { t as CompressionService } from "./compression-service-DI7ZXVxH.mjs";
|
|
3
|
+
import { Effect } from "effect";
|
|
4
|
+
|
|
5
|
+
//#region src/pipeline/compress.d.ts
|
|
6
|
+
declare const compress: (algorithm?: CompressionFormat) => Effect.Effect<Transform, never, CompressionService>;
|
|
7
|
+
//#endregion
|
|
8
|
+
export { type Transform, compose, compress };
|
|
9
|
+
//# sourceMappingURL=pipeline.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline.d.mts","names":[],"sources":["../src/pipeline/compress.ts"],"mappings":";;;;;cAIa,QAAA,GACX,SAAA,GAAW,iBAAA,KACV,MAAA,CAAO,MAAA,CAAO,SAAA,SAAkB,kBAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { t as CompressionService } from "./compression-service-Bm1VBnhT.mjs";
|
|
2
|
+
import { Effect } from "effect";
|
|
3
|
+
//#region src/pipeline/middleware.ts
|
|
4
|
+
function compose(...transforms) {
|
|
5
|
+
if (!transforms.some((t) => typeof t !== "function") || transforms.length === 0) return (stream) => transforms.reduce((s, t) => t(s), stream);
|
|
6
|
+
return Effect.map(Effect.all(transforms.map((t) => typeof t === "function" ? Effect.succeed(t) : t)), (resolved) => (stream) => resolved.reduce((s, t) => t(s), stream));
|
|
7
|
+
}
|
|
8
|
+
//#endregion
|
|
9
|
+
//#region src/pipeline/compress.ts
|
|
10
|
+
const compress = (algorithm = "deflate-raw") => Effect.map(CompressionService, (svc) => (stream) => svc.compress(stream, algorithm));
|
|
11
|
+
//#endregion
|
|
12
|
+
export { compose, compress };
|
|
13
|
+
|
|
14
|
+
//# sourceMappingURL=pipeline.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline.mjs","names":[],"sources":["../src/pipeline/middleware.ts","../src/pipeline/compress.ts"],"sourcesContent":["import { Effect } from \"effect\"\n\nexport type Transform = (stream: ReadableStream<Uint8Array>) => ReadableStream<Uint8Array>\n\nexport function compose(): Transform\nexport function compose(...transforms: Transform[]): Transform\nexport function compose<E, R>(\n ...transforms: Array<Transform | Effect.Effect<Transform, E, R>>\n): Effect.Effect<Transform, E, R>\nexport function compose(\n ...transforms: Array<Transform | Effect.Effect<Transform, any, any>>\n): Transform | Effect.Effect<Transform, any, any> {\n const hasEffect = transforms.some((t) => typeof t !== \"function\")\n if (!hasEffect || transforms.length === 0) {\n return (stream: ReadableStream<Uint8Array>): ReadableStream<Uint8Array> =>\n (transforms as Transform[]).reduce((s, t) => t(s), stream)\n }\n return Effect.map(\n Effect.all(\n transforms.map((t) =>\n typeof t === \"function\"\n ? Effect.succeed(t as Transform)\n : (t as Effect.Effect<Transform, any, any>)\n )\n ),\n (resolved) =>\n (stream: ReadableStream<Uint8Array>): ReadableStream<Uint8Array> =>\n resolved.reduce((s, t) => t(s), stream)\n )\n}\n","import { Effect } from \"effect\"\nimport { CompressionService } from \"../services/compression-service.js\"\nimport type { Transform } from \"./middleware.js\"\n\nexport const compress = (\n algorithm: CompressionFormat = \"deflate-raw\"\n): Effect.Effect<Transform, never, CompressionService> =>\n Effect.map(CompressionService, (svc) => (stream) => svc.compress(stream, algorithm))\n"],"mappings":";;;AASA,SAAgB,QACd,GAAG,YAC6C;AAEhD,KAAI,CADc,WAAW,MAAM,MAAM,OAAO,MAAM,WAAW,IAC/C,WAAW,WAAW,EACtC,SAAQ,WACL,WAA2B,QAAQ,GAAG,MAAM,EAAE,EAAE,EAAE,OAAO;AAE9D,QAAO,OAAO,IACZ,OAAO,IACL,WAAW,KAAK,MACd,OAAO,MAAM,aACT,OAAO,QAAQ,EAAe,GAC7B,EACN,CACF,GACA,cACE,WACC,SAAS,QAAQ,GAAG,MAAM,EAAE,EAAE,EAAE,OAAO,CAC5C;;;;ACxBH,MAAa,YACX,YAA+B,kBAE/B,OAAO,IAAI,qBAAqB,SAAS,WAAW,IAAI,SAAS,QAAQ,UAAU,CAAC"}
|
|
File without changes
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { a as UploadEvent, i as UploadCompleted, n as PartCompleted, o as UploadInitiated, r as ProgressTick, t as CircuitOpen } from "./upload-event-D77olieX.cjs";
|
|
2
|
+
import { n as Progress } from "./index-Ch8xM6Xt.cjs";
|
|
3
|
+
export { type CircuitOpen, type PartCompleted, type Progress, type ProgressTick, type UploadCompleted, type UploadEvent, type UploadInitiated };
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { a as UploadEvent, i as UploadCompleted, n as PartCompleted, o as UploadInitiated, r as ProgressTick, t as CircuitOpen } from "./upload-event-C9TOVp5l.mjs";
|
|
2
|
+
import { n as Progress } from "./index-DBGtgXEd.mjs";
|
|
3
|
+
export { type CircuitOpen, type PartCompleted, type Progress, type ProgressTick, type UploadCompleted, type UploadEvent, type UploadInitiated };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_compression_service = require("./compression-service-Bn86iTJe.cjs");
|
|
3
|
+
const require_logger_service = require("./logger-service-cx8vzkXs.cjs");
|
|
4
|
+
exports.CompressionService = require_compression_service.CompressionService;
|
|
5
|
+
exports.CompressionServiceLive = require_compression_service.CompressionServiceLive;
|
|
6
|
+
exports.CompressionUnavailableError = require_compression_service.CompressionUnavailableError;
|
|
7
|
+
exports.LoggerService = require_logger_service.LoggerService;
|
|
8
|
+
exports.LoggerServiceLive = require_logger_service.LoggerServiceLive;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { n as LoggerService, r as LoggerServiceLive, t as LogLevel } from "./logger-service-CbN12RhO.cjs";
|
|
2
|
+
import { n as CompressionServiceLive, r as CompressionUnavailableError, t as CompressionService } from "./compression-service-CiF7Px08.cjs";
|
|
3
|
+
export { CompressionService, CompressionServiceLive, CompressionUnavailableError, type LogLevel, LoggerService, LoggerServiceLive };
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { n as LoggerService, r as LoggerServiceLive, t as LogLevel } from "./logger-service-BF2pZOHN.mjs";
|
|
2
|
+
import { n as CompressionServiceLive, r as CompressionUnavailableError, t as CompressionService } from "./compression-service-DI7ZXVxH.mjs";
|
|
3
|
+
export { CompressionService, CompressionServiceLive, CompressionUnavailableError, type LogLevel, LoggerService, LoggerServiceLive };
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { n as CompressionServiceLive, r as CompressionUnavailableError, t as CompressionService } from "./compression-service-Bm1VBnhT.mjs";
|
|
2
|
+
import { n as LoggerServiceLive, t as LoggerService } from "./logger-service-1J5r_akj.mjs";
|
|
3
|
+
export { CompressionService, CompressionServiceLive, CompressionUnavailableError, LoggerService, LoggerServiceLive };
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
//#region src/errors/upload-error.d.ts
|
|
2
|
+
declare class PartUploadError extends Error {
|
|
3
|
+
readonly partNumber: number;
|
|
4
|
+
readonly attempt: number;
|
|
5
|
+
readonly cause: unknown;
|
|
6
|
+
readonly _tag: "PartUploadError";
|
|
7
|
+
constructor(partNumber: number, attempt: number, cause: unknown);
|
|
8
|
+
}
|
|
9
|
+
declare class MaxRetriesExceededError extends Error {
|
|
10
|
+
readonly partNumber: number;
|
|
11
|
+
readonly totalAttempts: number;
|
|
12
|
+
readonly cause: unknown;
|
|
13
|
+
readonly _tag: "MaxRetriesExceededError";
|
|
14
|
+
constructor(partNumber: number, totalAttempts: number, cause: unknown);
|
|
15
|
+
}
|
|
16
|
+
declare class PresignedUrlError extends Error {
|
|
17
|
+
readonly cause: unknown;
|
|
18
|
+
readonly _tag: "PresignedUrlError";
|
|
19
|
+
constructor(cause: unknown);
|
|
20
|
+
}
|
|
21
|
+
declare class InitiateUploadError extends Error {
|
|
22
|
+
readonly cause: unknown;
|
|
23
|
+
readonly _tag: "InitiateUploadError";
|
|
24
|
+
constructor(cause: unknown);
|
|
25
|
+
}
|
|
26
|
+
declare class ReconcileError extends Error {
|
|
27
|
+
readonly cause: unknown;
|
|
28
|
+
readonly _tag: "ReconcileError";
|
|
29
|
+
constructor(cause: unknown);
|
|
30
|
+
}
|
|
31
|
+
declare class CompleteUploadError extends Error {
|
|
32
|
+
readonly cause: unknown;
|
|
33
|
+
readonly _tag: "CompleteUploadError";
|
|
34
|
+
constructor(cause: unknown);
|
|
35
|
+
}
|
|
36
|
+
declare class AbortError extends Error {
|
|
37
|
+
readonly _tag: "AbortError";
|
|
38
|
+
constructor();
|
|
39
|
+
}
|
|
40
|
+
declare class CircuitOpenError extends Error {
|
|
41
|
+
readonly failedParts: number;
|
|
42
|
+
readonly _tag: "CircuitOpenError";
|
|
43
|
+
constructor(failedParts: number);
|
|
44
|
+
}
|
|
45
|
+
type UploadError = PartUploadError | MaxRetriesExceededError | PresignedUrlError | InitiateUploadError | ReconcileError | CompleteUploadError | AbortError | CircuitOpenError;
|
|
46
|
+
//#endregion
|
|
47
|
+
export { PartUploadError as a, UploadError as c, MaxRetriesExceededError as i, CompleteUploadError as n, PresignedUrlError as o, InitiateUploadError as r, ReconcileError as s, AbortError as t };
|
|
48
|
+
//# sourceMappingURL=upload-error-B2ISUc_k.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upload-error-B2ISUc_k.d.cts","names":[],"sources":["../src/errors/upload-error.ts"],"mappings":";cAAa,eAAA,SAAwB,KAAA;EAAA,SAIxB,UAAA;EAAA,SACA,OAAA;EAAA,SACS,KAAA;EAAA,SALX,IAAA;cAGE,UAAA,UACA,OAAA,UACS,KAAA;AAAA;AAAA,cAOT,uBAAA,SAAgC,KAAA;EAAA,SAIhC,UAAA;EAAA,SACA,aAAA;EAAA,SACS,KAAA;EAAA,SALX,IAAA;cAGE,UAAA,UACA,aAAA,UACS,KAAA;AAAA;AAAA,cAOT,iBAAA,SAA0B,KAAA;EAAA,SAGP,KAAA;EAAA,SAFrB,IAAA;cAEqB,KAAA;AAAA;AAAA,cAMnB,mBAAA,SAA4B,KAAA;EAAA,SAGT,KAAA;EAAA,SAFrB,IAAA;cAEqB,KAAA;AAAA;AAAA,cAMnB,cAAA,SAAuB,KAAA;EAAA,SAGJ,KAAA;EAAA,SAFrB,IAAA;cAEqB,KAAA;AAAA;AAAA,cAMnB,mBAAA,SAA4B,KAAA;EAAA,SAGT,KAAA;EAAA,SAFrB,IAAA;cAEqB,KAAA;AAAA;AAAA,cAMnB,UAAA,SAAmB,KAAA;EAAA,SACrB,IAAA;;;cAQE,gBAAA,SAAyB,KAAA;EAAA,SAGf,WAAA;EAAA,SAFZ,IAAA;cAEY,WAAA;AAAA;AAAA,KAMX,WAAA,GACR,eAAA,GACA,uBAAA,GACA,iBAAA,GACA,mBAAA,GACA,cAAA,GACA,mBAAA,GACA,UAAA,GACA,gBAAA"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
//#region src/errors/upload-error.ts
|
|
2
|
+
var PartUploadError = class extends Error {
|
|
3
|
+
_tag = "PartUploadError";
|
|
4
|
+
constructor(partNumber, attempt, cause) {
|
|
5
|
+
super(`Part ${partNumber} failed on attempt ${attempt}`);
|
|
6
|
+
this.partNumber = partNumber;
|
|
7
|
+
this.attempt = attempt;
|
|
8
|
+
this.cause = cause;
|
|
9
|
+
this.name = "PartUploadError";
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
var MaxRetriesExceededError = class extends Error {
|
|
13
|
+
_tag = "MaxRetriesExceededError";
|
|
14
|
+
constructor(partNumber, totalAttempts, cause) {
|
|
15
|
+
super(`Part ${partNumber} failed after ${totalAttempts} attempts`);
|
|
16
|
+
this.partNumber = partNumber;
|
|
17
|
+
this.totalAttempts = totalAttempts;
|
|
18
|
+
this.cause = cause;
|
|
19
|
+
this.name = "MaxRetriesExceededError";
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
var PresignedUrlError = class extends Error {
|
|
23
|
+
_tag = "PresignedUrlError";
|
|
24
|
+
constructor(cause) {
|
|
25
|
+
super("Failed to obtain pre-signed URL");
|
|
26
|
+
this.cause = cause;
|
|
27
|
+
this.name = "PresignedUrlError";
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
var InitiateUploadError = class extends Error {
|
|
31
|
+
_tag = "InitiateUploadError";
|
|
32
|
+
constructor(cause) {
|
|
33
|
+
super("Failed to initiate multipart upload");
|
|
34
|
+
this.cause = cause;
|
|
35
|
+
this.name = "InitiateUploadError";
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
var ReconcileError = class extends Error {
|
|
39
|
+
_tag = "ReconcileError";
|
|
40
|
+
constructor(cause) {
|
|
41
|
+
super("Failed to reconcile completed parts");
|
|
42
|
+
this.cause = cause;
|
|
43
|
+
this.name = "ReconcileError";
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
var CompleteUploadError = class extends Error {
|
|
47
|
+
_tag = "CompleteUploadError";
|
|
48
|
+
constructor(cause) {
|
|
49
|
+
super("Failed to complete multipart upload");
|
|
50
|
+
this.cause = cause;
|
|
51
|
+
this.name = "CompleteUploadError";
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
var AbortError = class extends Error {
|
|
55
|
+
_tag = "AbortError";
|
|
56
|
+
constructor() {
|
|
57
|
+
super("Upload aborted");
|
|
58
|
+
this.name = "AbortError";
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
var CircuitOpenError = class extends Error {
|
|
62
|
+
_tag = "CircuitOpenError";
|
|
63
|
+
constructor(failedParts) {
|
|
64
|
+
super(`Circuit breaker opened after ${failedParts} consecutive part failures`);
|
|
65
|
+
this.failedParts = failedParts;
|
|
66
|
+
this.name = "CircuitOpenError";
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
//#endregion
|
|
70
|
+
Object.defineProperty(exports, "AbortError", {
|
|
71
|
+
enumerable: true,
|
|
72
|
+
get: function() {
|
|
73
|
+
return AbortError;
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
Object.defineProperty(exports, "CircuitOpenError", {
|
|
77
|
+
enumerable: true,
|
|
78
|
+
get: function() {
|
|
79
|
+
return CircuitOpenError;
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
Object.defineProperty(exports, "CompleteUploadError", {
|
|
83
|
+
enumerable: true,
|
|
84
|
+
get: function() {
|
|
85
|
+
return CompleteUploadError;
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
Object.defineProperty(exports, "InitiateUploadError", {
|
|
89
|
+
enumerable: true,
|
|
90
|
+
get: function() {
|
|
91
|
+
return InitiateUploadError;
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
Object.defineProperty(exports, "MaxRetriesExceededError", {
|
|
95
|
+
enumerable: true,
|
|
96
|
+
get: function() {
|
|
97
|
+
return MaxRetriesExceededError;
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
Object.defineProperty(exports, "PartUploadError", {
|
|
101
|
+
enumerable: true,
|
|
102
|
+
get: function() {
|
|
103
|
+
return PartUploadError;
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
Object.defineProperty(exports, "PresignedUrlError", {
|
|
107
|
+
enumerable: true,
|
|
108
|
+
get: function() {
|
|
109
|
+
return PresignedUrlError;
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
Object.defineProperty(exports, "ReconcileError", {
|
|
113
|
+
enumerable: true,
|
|
114
|
+
get: function() {
|
|
115
|
+
return ReconcileError;
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
//# sourceMappingURL=upload-error-BUexBh08.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upload-error-BUexBh08.cjs","names":[],"sources":["../src/errors/upload-error.ts"],"sourcesContent":["export class PartUploadError extends Error {\n readonly _tag = \"PartUploadError\" as const\n\n constructor(\n readonly partNumber: number,\n readonly attempt: number,\n override readonly cause: unknown\n ) {\n super(`Part ${partNumber} failed on attempt ${attempt}`)\n this.name = \"PartUploadError\"\n }\n}\n\nexport class MaxRetriesExceededError extends Error {\n readonly _tag = \"MaxRetriesExceededError\" as const\n\n constructor(\n readonly partNumber: number,\n readonly totalAttempts: number,\n override readonly cause: unknown\n ) {\n super(`Part ${partNumber} failed after ${totalAttempts} attempts`)\n this.name = \"MaxRetriesExceededError\"\n }\n}\n\nexport class PresignedUrlError extends Error {\n readonly _tag = \"PresignedUrlError\" as const\n\n constructor(override readonly cause: unknown) {\n super(\"Failed to obtain pre-signed URL\")\n this.name = \"PresignedUrlError\"\n }\n}\n\nexport class InitiateUploadError extends Error {\n readonly _tag = \"InitiateUploadError\" as const\n\n constructor(override readonly cause: unknown) {\n super(\"Failed to initiate multipart upload\")\n this.name = \"InitiateUploadError\"\n }\n}\n\nexport class ReconcileError extends Error {\n readonly _tag = \"ReconcileError\" as const\n\n constructor(override readonly cause: unknown) {\n super(\"Failed to reconcile completed parts\")\n this.name = \"ReconcileError\"\n }\n}\n\nexport class CompleteUploadError extends Error {\n readonly _tag = \"CompleteUploadError\" as const\n\n constructor(override readonly cause: unknown) {\n super(\"Failed to complete multipart upload\")\n this.name = \"CompleteUploadError\"\n }\n}\n\nexport class AbortError extends Error {\n readonly _tag = \"AbortError\" as const\n\n constructor() {\n super(\"Upload aborted\")\n this.name = \"AbortError\"\n }\n}\n\nexport class CircuitOpenError extends Error {\n readonly _tag = \"CircuitOpenError\" as const\n\n constructor(readonly failedParts: number) {\n super(`Circuit breaker opened after ${failedParts} consecutive part failures`)\n this.name = \"CircuitOpenError\"\n }\n}\n\nexport type UploadError =\n | PartUploadError\n | MaxRetriesExceededError\n | PresignedUrlError\n | InitiateUploadError\n | ReconcileError\n | CompleteUploadError\n | AbortError\n | CircuitOpenError\n"],"mappings":";AAAA,IAAa,kBAAb,cAAqC,MAAM;CACzC,OAAgB;CAEhB,YACE,YACA,SACA,OACA;AACA,QAAM,QAAQ,WAAW,qBAAqB,UAAU;AAJ/C,OAAA,aAAA;AACA,OAAA,UAAA;AACS,OAAA,QAAA;AAGlB,OAAK,OAAO;;;AAIhB,IAAa,0BAAb,cAA6C,MAAM;CACjD,OAAgB;CAEhB,YACE,YACA,eACA,OACA;AACA,QAAM,QAAQ,WAAW,gBAAgB,cAAc,WAAW;AAJzD,OAAA,aAAA;AACA,OAAA,gBAAA;AACS,OAAA,QAAA;AAGlB,OAAK,OAAO;;;AAIhB,IAAa,oBAAb,cAAuC,MAAM;CAC3C,OAAgB;CAEhB,YAAY,OAAkC;AAC5C,QAAM,kCAAkC;AADZ,OAAA,QAAA;AAE5B,OAAK,OAAO;;;AAIhB,IAAa,sBAAb,cAAyC,MAAM;CAC7C,OAAgB;CAEhB,YAAY,OAAkC;AAC5C,QAAM,sCAAsC;AADhB,OAAA,QAAA;AAE5B,OAAK,OAAO;;;AAIhB,IAAa,iBAAb,cAAoC,MAAM;CACxC,OAAgB;CAEhB,YAAY,OAAkC;AAC5C,QAAM,sCAAsC;AADhB,OAAA,QAAA;AAE5B,OAAK,OAAO;;;AAIhB,IAAa,sBAAb,cAAyC,MAAM;CAC7C,OAAgB;CAEhB,YAAY,OAAkC;AAC5C,QAAM,sCAAsC;AADhB,OAAA,QAAA;AAE5B,OAAK,OAAO;;;AAIhB,IAAa,aAAb,cAAgC,MAAM;CACpC,OAAgB;CAEhB,cAAc;AACZ,QAAM,iBAAiB;AACvB,OAAK,OAAO;;;AAIhB,IAAa,mBAAb,cAAsC,MAAM;CAC1C,OAAgB;CAEhB,YAAY,aAA8B;AACxC,QAAM,gCAAgC,YAAY,4BAA4B;AAD3D,OAAA,cAAA;AAEnB,OAAK,OAAO"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
//#region src/errors/upload-error.d.ts
|
|
2
|
+
declare class PartUploadError extends Error {
|
|
3
|
+
readonly partNumber: number;
|
|
4
|
+
readonly attempt: number;
|
|
5
|
+
readonly cause: unknown;
|
|
6
|
+
readonly _tag: "PartUploadError";
|
|
7
|
+
constructor(partNumber: number, attempt: number, cause: unknown);
|
|
8
|
+
}
|
|
9
|
+
declare class MaxRetriesExceededError extends Error {
|
|
10
|
+
readonly partNumber: number;
|
|
11
|
+
readonly totalAttempts: number;
|
|
12
|
+
readonly cause: unknown;
|
|
13
|
+
readonly _tag: "MaxRetriesExceededError";
|
|
14
|
+
constructor(partNumber: number, totalAttempts: number, cause: unknown);
|
|
15
|
+
}
|
|
16
|
+
declare class PresignedUrlError extends Error {
|
|
17
|
+
readonly cause: unknown;
|
|
18
|
+
readonly _tag: "PresignedUrlError";
|
|
19
|
+
constructor(cause: unknown);
|
|
20
|
+
}
|
|
21
|
+
declare class InitiateUploadError extends Error {
|
|
22
|
+
readonly cause: unknown;
|
|
23
|
+
readonly _tag: "InitiateUploadError";
|
|
24
|
+
constructor(cause: unknown);
|
|
25
|
+
}
|
|
26
|
+
declare class ReconcileError extends Error {
|
|
27
|
+
readonly cause: unknown;
|
|
28
|
+
readonly _tag: "ReconcileError";
|
|
29
|
+
constructor(cause: unknown);
|
|
30
|
+
}
|
|
31
|
+
declare class CompleteUploadError extends Error {
|
|
32
|
+
readonly cause: unknown;
|
|
33
|
+
readonly _tag: "CompleteUploadError";
|
|
34
|
+
constructor(cause: unknown);
|
|
35
|
+
}
|
|
36
|
+
declare class AbortError extends Error {
|
|
37
|
+
readonly _tag: "AbortError";
|
|
38
|
+
constructor();
|
|
39
|
+
}
|
|
40
|
+
declare class CircuitOpenError extends Error {
|
|
41
|
+
readonly failedParts: number;
|
|
42
|
+
readonly _tag: "CircuitOpenError";
|
|
43
|
+
constructor(failedParts: number);
|
|
44
|
+
}
|
|
45
|
+
type UploadError = PartUploadError | MaxRetriesExceededError | PresignedUrlError | InitiateUploadError | ReconcileError | CompleteUploadError | AbortError | CircuitOpenError;
|
|
46
|
+
//#endregion
|
|
47
|
+
export { PartUploadError as a, UploadError as c, MaxRetriesExceededError as i, CompleteUploadError as n, PresignedUrlError as o, InitiateUploadError as r, ReconcileError as s, AbortError as t };
|
|
48
|
+
//# sourceMappingURL=upload-error-jol-eoDW.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upload-error-jol-eoDW.d.mts","names":[],"sources":["../src/errors/upload-error.ts"],"mappings":";cAAa,eAAA,SAAwB,KAAA;EAAA,SAIxB,UAAA;EAAA,SACA,OAAA;EAAA,SACS,KAAA;EAAA,SALX,IAAA;cAGE,UAAA,UACA,OAAA,UACS,KAAA;AAAA;AAAA,cAOT,uBAAA,SAAgC,KAAA;EAAA,SAIhC,UAAA;EAAA,SACA,aAAA;EAAA,SACS,KAAA;EAAA,SALX,IAAA;cAGE,UAAA,UACA,aAAA,UACS,KAAA;AAAA;AAAA,cAOT,iBAAA,SAA0B,KAAA;EAAA,SAGP,KAAA;EAAA,SAFrB,IAAA;cAEqB,KAAA;AAAA;AAAA,cAMnB,mBAAA,SAA4B,KAAA;EAAA,SAGT,KAAA;EAAA,SAFrB,IAAA;cAEqB,KAAA;AAAA;AAAA,cAMnB,cAAA,SAAuB,KAAA;EAAA,SAGJ,KAAA;EAAA,SAFrB,IAAA;cAEqB,KAAA;AAAA;AAAA,cAMnB,mBAAA,SAA4B,KAAA;EAAA,SAGT,KAAA;EAAA,SAFrB,IAAA;cAEqB,KAAA;AAAA;AAAA,cAMnB,UAAA,SAAmB,KAAA;EAAA,SACrB,IAAA;;;cAQE,gBAAA,SAAyB,KAAA;EAAA,SAGf,WAAA;EAAA,SAFZ,IAAA;cAEY,WAAA;AAAA;AAAA,KAMX,WAAA,GACR,eAAA,GACA,uBAAA,GACA,iBAAA,GACA,mBAAA,GACA,cAAA,GACA,mBAAA,GACA,UAAA,GACA,gBAAA"}
|