@requence/task 0.7.1 → 0.8.2-edge.1149
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/CHANGELOG.md +39 -0
- package/README.md +5 -5
- package/build/{chunk-b4h2we9a.js → chunk-f7g9gsa0.js} +33 -3
- package/build/chunk-f7g9gsa0.js.map +11 -0
- package/build/cli.js +18 -8
- package/build/cli.js.map +3 -3
- package/build/index.js +1062 -502
- package/build/index.js.map +27 -16
- package/build/types/helpers/src/index.d.ts +8 -2
- package/build/types/helpers/src/index.d.ts.map +1 -1
- package/build/types/helpers/src/jsonschema/validate.d.ts +1 -5
- package/build/types/helpers/src/jsonschema/validate.d.ts.map +1 -1
- package/build/types/helpers/src/jsonschema/zod.d.ts +11 -1
- package/build/types/helpers/src/jsonschema/zod.d.ts.map +1 -1
- package/build/types/helpers/src/protocol/NodeTree.d.ts +532 -148
- package/build/types/helpers/src/protocol/NodeTree.d.ts.map +1 -1
- package/build/types/helpers/src/protocol/clientProperties.d.ts +66 -0
- package/build/types/helpers/src/protocol/clientProperties.d.ts.map +1 -0
- package/build/types/helpers/src/protocol/command.d.ts +372 -142
- package/build/types/helpers/src/protocol/command.d.ts.map +1 -1
- package/build/types/helpers/src/protocol/configurationScript.d.ts +10 -0
- package/build/types/helpers/src/protocol/configurationScript.d.ts.map +1 -0
- package/build/types/helpers/src/protocol/helpers.d.ts.map +1 -1
- package/build/types/helpers/src/protocol/index.d.ts +5 -0
- package/build/types/helpers/src/protocol/index.d.ts.map +1 -1
- package/build/types/helpers/src/protocol/logicLanguages.d.ts +19 -0
- package/build/types/helpers/src/protocol/logicLanguages.d.ts.map +1 -0
- package/build/types/helpers/src/protocol/loopDetection.d.ts +23 -0
- package/build/types/helpers/src/protocol/loopDetection.d.ts.map +1 -0
- package/build/types/helpers/src/protocol/nodeType.d.ts +81 -27
- package/build/types/helpers/src/protocol/nodeType.d.ts.map +1 -1
- package/build/types/helpers/src/protocol/taskOptions.d.ts +4 -1
- package/build/types/helpers/src/protocol/taskOptions.d.ts.map +1 -1
- package/build/types/helpers/src/protocol/templateNodeTypes.d.ts +36 -20
- package/build/types/helpers/src/protocol/templateNodeTypes.d.ts.map +1 -1
- package/build/types/helpers/src/protocol/treeNodes.d.ts +508 -164
- package/build/types/helpers/src/protocol/treeNodes.d.ts.map +1 -1
- package/build/types/helpers/src/protocol/update.d.ts +40 -24
- package/build/types/helpers/src/protocol/update.d.ts.map +1 -1
- package/build/types/helpers/src/protocol/validateTreeStructure.d.ts +22 -0
- package/build/types/helpers/src/protocol/validateTreeStructure.d.ts.map +1 -0
- package/build/types/helpers/src/utils/amqpHeartbeat.d.ts +3 -0
- package/build/types/helpers/src/utils/amqpHeartbeat.d.ts.map +1 -0
- package/build/types/helpers/src/utils/amqpPublishRetry.d.ts +45 -0
- package/build/types/helpers/src/utils/amqpPublishRetry.d.ts.map +1 -0
- package/build/types/helpers/src/utils/claimCheckObject.d.ts +40 -0
- package/build/types/helpers/src/utils/claimCheckObject.d.ts.map +1 -0
- package/build/types/helpers/src/utils/debounce.d.ts.map +1 -1
- package/build/types/helpers/src/{files → utils}/fileObject.d.ts.map +1 -1
- package/build/types/helpers/src/{files → utils}/isValidMimeType.d.ts.map +1 -1
- package/build/types/helpers/src/utils/mapData.d.ts +1 -1
- package/build/types/helpers/src/utils/mapData.d.ts.map +1 -1
- package/build/types/helpers/src/{files → utils}/streamObject.d.ts.map +1 -1
- package/build/types/helpers/src/utils/variableRef.d.ts +19 -0
- package/build/types/helpers/src/utils/variableRef.d.ts.map +1 -0
- package/build/types/helpers/src/utils/variableScriptPatterns.d.ts +125 -0
- package/build/types/helpers/src/utils/variableScriptPatterns.d.ts.map +1 -0
- package/build/types/task/src/abortTask.d.ts.map +1 -1
- package/build/types/task/src/ackTask.d.ts.map +1 -1
- package/build/types/task/src/createTask.d.ts +0 -1
- package/build/types/task/src/createTask.d.ts.map +1 -1
- package/build/types/task/src/errors.d.ts +27 -0
- package/build/types/task/src/errors.d.ts.map +1 -0
- package/build/types/task/src/getTask.d.ts +4 -4
- package/build/types/task/src/getTask.d.ts.map +1 -1
- package/build/types/task/src/index.d.ts +2 -1
- package/build/types/task/src/index.d.ts.map +1 -1
- package/build/types/task/src/ingress.d.ts +26 -0
- package/build/types/task/src/ingress.d.ts.map +1 -0
- package/build/types/task/src/protectTask.d.ts.map +1 -1
- package/build/types/task/src/recreateTask.d.ts +1 -1
- package/build/types/task/src/recreateTask.d.ts.map +1 -1
- package/build/types/task/src/types.d.ts +10 -10
- package/build/types/task/src/utils/getAccessToken.d.ts.map +1 -1
- package/build/types/task/src/watchTasks.d.ts +2 -0
- package/build/types/task/src/watchTasks.d.ts.map +1 -1
- package/package.json +7 -3
- package/build/chunk-b4h2we9a.js.map +0 -10
- package/build/types/helpers/src/files/RequenceFile.d.ts +0 -40
- package/build/types/helpers/src/files/RequenceFile.d.ts.map +0 -1
- package/build/types/helpers/src/files/RequenceStream.d.ts +0 -32
- package/build/types/helpers/src/files/RequenceStream.d.ts.map +0 -1
- package/build/types/helpers/src/files/index.d.ts +0 -7
- package/build/types/helpers/src/files/index.d.ts.map +0 -1
- package/build/types/helpers/src/files/mapOutput.d.ts +0 -10
- package/build/types/helpers/src/files/mapOutput.d.ts.map +0 -1
- package/build/types/helpers/src/files/types.d.ts +0 -4
- package/build/types/helpers/src/files/types.d.ts.map +0 -1
- package/build/types/helpers/src/utils/createObjectProxy.d.ts +0 -2
- package/build/types/helpers/src/utils/createObjectProxy.d.ts.map +0 -1
- package/build/types/helpers/src/utils/resolveRequenceTypes.d.ts +0 -8
- package/build/types/helpers/src/utils/resolveRequenceTypes.d.ts.map +0 -1
- /package/build/types/helpers/src/{files → utils}/fileObject.d.ts +0 -0
- /package/build/types/helpers/src/{files → utils}/isValidMimeType.d.ts +0 -0
- /package/build/types/helpers/src/{files → utils}/streamObject.d.ts +0 -0
package/build/index.js.map
CHANGED
|
@@ -1,28 +1,39 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../
|
|
3
|
+
"sources": ["../../files/src/errors.ts", "../../files/src/streamFraming.ts", "../../files/src/remoteBody.ts", "../../files/src/RequenceFile.ts", "../../files/src/RequenceStream.ts", "../../helpers/src/utils/callbackToAsyncIterator.ts", "../../helpers/src/utils/fileObject.ts", "../../helpers/src/utils/streamObject.ts", "../../helpers/src/utils/claimCheckObject.ts", "../../helpers/src/utils/requenceCallback.ts", "../../files/src/handlers/transport.ts", "../../files/src/handlers/fileHandler.ts", "../../files/src/withRequenceStreams.ts", "../../files/src/handlers/streamHandler.ts", "../../files/src/handlers/claimCheckHandler.ts", "../src/createTask.ts", "../src/utils/getAccessToken.ts", "../src/abortTask.ts", "../src/ackTask.ts", "../../callbacks/src/handler.ts", "../../transformer/src/errors.ts", "../../transformer/src/guards.ts", "../../transformer/src/walk.ts", "../../transformer/src/transform.ts", "../src/ingress.ts", "../src/protectTask.ts", "../src/types.ts", "../src/watchTasks.ts", "../src/getTask.ts", "../src/recreateTask.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
+
"/**\n * Thrown by a `RequenceStream` remote read when the producer terminated\n * abnormally (or vanished) mid-stream — the explicit alternative to the\n * clean-looking EOF a truncated live relay used to produce. Surfaced through\n * the framed consumer-GET protocol (see `streamFraming.ts`): a TRUNCATED\n * terminal frame, or an EOF with no terminal frame at all.\n */\nexport class RequenceStreamTruncatedError extends Error {\n constructor(message = 'stream truncated') {\n super(message)\n this.name = 'RequenceStreamTruncatedError'\n }\n}\n",
|
|
6
|
+
"import { RequenceStreamTruncatedError } from './errors.ts'\n\n/**\n * Opt-in framed protocol for the consumer stream GET, closing the\n * silent-truncation gap: the server *decides* complete-vs-truncated (Redis\n * EOS/ERR markers) but a plain HTTP body cannot state it — a mid-stream\n * producer abort and a clean end both look like EOF. A client that sends\n * `x-requence-stream-protocol: framed` receives length-prefixed frames ending\n * in an explicit terminal frame; the server echoes the header only when it\n * actually frames. Clients that don't send the header (Python SDK, older TS)\n * get today's raw bytes — compatible in both directions.\n *\n * Frame layout: `type u8 | length u32 BE | payload[length]`.\n */\nexport const STREAM_PROTOCOL_HEADER = 'x-requence-stream-protocol'\nexport const STREAM_PROTOCOL_FRAMED = 'framed'\n\nconst DATA = 0x00\n/** Terminal: the stream is complete. Nothing may follow. */\nconst END = 0x01\n/** Terminal: the producer aborted / vanished. Payload = UTF-8 reason. */\nconst TRUNCATED = 0x02\n\nconst HEADER_BYTES = 5\n\n/** 5-byte DATA frame header; write it, then the chunk itself (no copy). */\nexport function dataFrameHeader(byteLength: number): Uint8Array {\n const header = new Uint8Array(HEADER_BYTES)\n new DataView(header.buffer).setUint32(1, byteLength, false)\n header[0] = DATA\n return header\n}\n\nexport const END_FRAME: Uint8Array = new Uint8Array([END, 0, 0, 0, 0])\n\nexport function truncatedFrame(reason: string): Uint8Array {\n const payload = new TextEncoder().encode(reason)\n const frame = new Uint8Array(HEADER_BYTES + payload.byteLength)\n new DataView(frame.buffer).setUint32(1, payload.byteLength, false)\n frame[0] = TRUNCATED\n frame.set(payload, HEADER_BYTES)\n return frame\n}\n\n/**\n * Decode a framed body back into raw chunks. DATA payloads are re-emitted;\n * END terminates cleanly; TRUNCATED — and an EOF without any terminal frame\n * (transport drop, proxy cut) — error the stream with a typed\n * `RequenceStreamTruncatedError`. Frames may be split across chunk boundaries.\n */\nexport function createFrameDecoder(): TransformStream<Uint8Array, Uint8Array> {\n let buffer: Uint8Array = new Uint8Array(0)\n let terminal = false\n\n return new TransformStream<Uint8Array, Uint8Array>({\n transform(chunk, controller) {\n if (terminal) {\n if (chunk.byteLength > 0) {\n throw new Error('stream protocol error: bytes after terminal frame')\n }\n return\n }\n\n if (buffer.byteLength === 0) {\n buffer = chunk\n } else {\n const merged = new Uint8Array(buffer.byteLength + chunk.byteLength)\n merged.set(buffer, 0)\n merged.set(chunk, buffer.byteLength)\n buffer = merged\n }\n\n while (buffer.byteLength >= HEADER_BYTES) {\n const type = buffer[0]\n const length = new DataView(\n buffer.buffer,\n buffer.byteOffset,\n buffer.byteLength,\n ).getUint32(1, false)\n if (buffer.byteLength < HEADER_BYTES + length) {\n break\n }\n // slice (copy): the emitted chunk must not pin the merge buffer\n const payload = buffer.slice(HEADER_BYTES, HEADER_BYTES + length)\n buffer = buffer.subarray(HEADER_BYTES + length)\n\n switch (type) {\n case DATA: {\n if (payload.byteLength > 0) {\n controller.enqueue(payload)\n }\n break\n }\n case END: {\n terminal = true\n if (buffer.byteLength > 0) {\n throw new Error(\n 'stream protocol error: bytes after terminal frame',\n )\n }\n controller.terminate()\n return\n }\n case TRUNCATED: {\n terminal = true\n controller.error(\n new RequenceStreamTruncatedError(\n new TextDecoder().decode(payload) || undefined,\n ),\n )\n return\n }\n default: {\n throw new Error(`stream protocol error: unknown frame type ${type}`)\n }\n }\n }\n },\n flush(controller) {\n if (!terminal) {\n controller.error(\n new RequenceStreamTruncatedError(\n 'connection closed before terminal frame',\n ),\n )\n }\n },\n })\n}\n",
|
|
7
|
+
"import {\n STREAM_PROTOCOL_FRAMED,\n STREAM_PROTOCOL_HEADER,\n createFrameDecoder,\n} from './streamFraming.ts'\n\ninterface RemoteBodyOptions {\n /**\n * External (task) signal. When it aborts, the in-flight fetch is aborted so a\n * service-task teardown can cancel a hung read.\n */\n signal?: AbortSignal\n /**\n * Inactivity timeout (ms). Opt-in: only enforced when > 0. A read that\n * produces no data within the window aborts the underlying fetch so the\n * consumer errors out instead of blocking forever. Disabled by default so\n * legitimately slow/long transfers are never cut.\n */\n stallTimeoutMs?: number\n /**\n * Request the framed stream protocol (see `streamFraming.ts`): the body then\n * carries an explicit `complete|truncated` terminal signal, and a truncated\n * stream rejects with a typed `RequenceStreamTruncatedError` instead of\n * closing like a clean EOF. Falls back to the raw body when the server does\n * not echo the protocol header (older files service).\n */\n framed?: boolean\n}\n\n/**\n * Shared guarded remote read for the files service. Fetches `url` and exposes\n * the response body as a `ReadableStream` that routes EVERY failure through\n * `controller.error(...)` instead of hanging or piping an error page through as\n * content:\n *\n * - fetch rejection, a non-2xx status (body drained via `response.body?.cancel()`),\n * and a null body all error the returned stream;\n * - a mid-stream read failure surfaces as a thrown read, never a silent close;\n * - cancelling the returned stream, the external signal aborting, or the opt-in\n * stall timeout all abort the in-flight fetch (no connection leak).\n *\n * Used by both `RequenceStream` (streaming reads) and `RequenceFile` (buffered\n * reads + `stream()`).\n */\nexport function remoteBody(\n url: string,\n options: RemoteBodyOptions = {},\n): ReadableStream<Uint8Array> {\n const externalSignal = options.signal\n const timeoutMs =\n options.stallTimeoutMs && options.stallTimeoutMs > 0\n ? options.stallTimeoutMs\n : 0\n\n // Self-contained controller: cancelling the returned stream (or the external\n // task signal, or a stall timeout) aborts the in-flight fetch.\n const controller = new AbortController()\n\n let reader: ReadableStreamDefaultReader<Uint8Array> | null = null\n let timer: ReturnType<typeof setTimeout> | undefined\n let onExternalAbort: (() => void) | undefined\n\n const clearTimer = () => {\n if (timer !== undefined) {\n clearTimeout(timer)\n timer = undefined\n }\n }\n\n const cleanup = () => {\n clearTimer()\n if (externalSignal && onExternalAbort) {\n externalSignal.removeEventListener('abort', onExternalAbort)\n }\n }\n\n // Chain the task signal so a service-task teardown aborts the read.\n if (externalSignal) {\n if (externalSignal.aborted) {\n controller.abort(externalSignal.reason)\n } else {\n onExternalAbort = () => controller.abort(externalSignal.reason)\n externalSignal.addEventListener('abort', onExternalAbort, {\n once: true,\n })\n }\n }\n\n const armTimer = () => {\n if (timeoutMs <= 0) {\n return\n }\n clearTimer()\n timer = setTimeout(() => {\n controller.abort(\n new Error(`remote read stalled: no data for ${timeoutMs}ms`),\n )\n }, timeoutMs)\n }\n\n return new ReadableStream<Uint8Array>({\n async start(streamController) {\n let response: Response\n try {\n response = await fetch(url, {\n signal: controller.signal,\n headers: options.framed\n ? { [STREAM_PROTOCOL_HEADER]: STREAM_PROTOCOL_FRAMED }\n : undefined,\n })\n } catch (error) {\n cleanup()\n streamController.error(error)\n return\n }\n\n if (!response.ok) {\n // Drain the error body so the connection is released, then surface the\n // failure instead of piping the error page through as content.\n await response.body?.cancel()\n cleanup()\n streamController.error(\n new Error(\n `remote read failed: ${response.status} ${response.statusText}`,\n ),\n )\n return\n }\n\n if (!response.body) {\n cleanup()\n streamController.error(new Error('remote read response has no body'))\n return\n }\n\n // The server echoes the protocol header only when it actually frames;\n // without the echo (older server) the raw body is read as before.\n const framed =\n options.framed &&\n response.headers.get(STREAM_PROTOCOL_HEADER) === STREAM_PROTOCOL_FRAMED\n reader = framed\n ? response.body.pipeThrough(createFrameDecoder()).getReader()\n : response.body.getReader()\n },\n async pull(streamController) {\n if (!reader) {\n return\n }\n armTimer()\n try {\n const { done, value } = await reader.read()\n clearTimer()\n if (done) {\n cleanup()\n streamController.close()\n return\n }\n streamController.enqueue(value)\n } catch (error) {\n // A mid-stream connection drop, or an abort (task teardown / stall\n // timeout), surfaces as a thrown read — never a silent close.\n clearTimer()\n cleanup()\n streamController.error(error)\n }\n },\n async cancel(reason) {\n cleanup()\n controller.abort(reason)\n await reader?.cancel(reason)\n },\n })\n}\n",
|
|
8
|
+
"import type { FileObject } from '@requence/helpers'\n\nimport { remoteBody } from './remoteBody.ts'\nimport type { MainMimeType, SubMimeType, ValidMimeType } from './types.ts'\n\ninterface RequenceFilePropertyBag<T> extends Omit<BlobPropertyBag, 'type'> {\n type: T\n}\n\nexport interface RequenceFileType<A, B> {\n size: number\n mimeType: string\n mainMimeType: A\n subMimeType: B\n text(): Promise<string>\n json(): Promise<unknown>\n blob(): Promise<Blob>\n arrayBuffer(): Promise<ArrayBuffer>\n stream(): ReadableStream\n}\n\n/**\n * Inactivity timeout (ms) for a remote file read. Opt-in: only enforced when\n * `REQUENCE_FILE_STALL_TIMEOUT_MS` is set to a positive number. When enabled, a\n * read that produces no data within the window aborts the underlying fetch so\n * the consumer errors out instead of blocking forever. Disabled by default so\n * legitimately slow/large downloads are never cut.\n */\nfunction stallTimeoutMs(): number {\n const raw =\n typeof process !== 'undefined'\n ? Number(process.env?.REQUENCE_FILE_STALL_TIMEOUT_MS)\n : Number.NaN\n return Number.isFinite(raw) && raw > 0 ? raw : 0\n}\n\nexport class RequenceFile<\n T extends `${string}/${string}` = '*/*',\n A = MainMimeType<T>,\n B = SubMimeType<T>,\n> implements RequenceFileType<A, B> {\n #data: Blob\n #file: FileObject | null = null\n #signal?: AbortSignal\n constructor(\n blobParts: BlobPart[],\n options?: RequenceFilePropertyBag<ValidMimeType<T>>,\n ) {\n this.#data = new Blob(blobParts, options)\n }\n\n /** @internal */\n static fromFileObject<T extends `${string}/${string}`>(\n file: FileObject,\n signal?: AbortSignal,\n ) {\n const instance = new this([], { type: 'x/x' })\n instance.#file = file\n instance.#signal = signal\n return instance as RequenceFile<T>\n }\n\n /**\n * Egress detection for the file value handler. Covers a `RequenceFile` *and a\n * raw `Blob`* — a Blob adapts through RequenceFile, so no separate Blob\n * branch exists anywhere outside this class.\n */\n static canHandle(value: unknown): value is RequenceFile | Blob {\n return value instanceof RequenceFile || value instanceof Blob\n }\n\n /** @internal */\n get fileObject() {\n return this.#file\n }\n\n get size() {\n return this.#file?.size ?? this.#data.size\n }\n\n get mimeType() {\n return this.#file?.mime ?? this.#data.type\n }\n\n get mainMimeType() {\n return this.mimeType.split('/')[0] as A\n }\n\n get subMimeType() {\n return this.mimeType.split('/')[1] as B\n }\n\n /**\n * Byte stream of the file. For a remote file this is the guarded remote read\n * (status-checked, abortable, opt-in stall timeout) and — unlike the buffered\n * read methods — never holds the whole file in memory, so it is the path to\n * use for large files. For a local file it is the backing Blob's stream.\n */\n stream(): ReadableStream {\n if (!this.#file) {\n return this.#data.stream()\n }\n return remoteBody(this.#file.url, {\n signal: this.#signal,\n stallTimeoutMs: stallTimeoutMs(),\n })\n }\n\n /**\n * Drain the (guarded) remote stream into a single buffer. Transient only —\n * the bytes are freed once the caller is done; nothing is memoized, so a\n * multi-GB file is never retained across reads. Large files that must avoid\n * buffering entirely should use `stream()` instead.\n */\n async #bytes(): Promise<Uint8Array<ArrayBuffer>> {\n const reader = (this.stream() as ReadableStream<Uint8Array>).getReader()\n const chunks: Uint8Array[] = []\n let total = 0\n for (;;) {\n const { done, value } = await reader.read()\n if (done) {\n break\n }\n chunks.push(value)\n total += value.byteLength\n }\n const out = new Uint8Array(total)\n let offset = 0\n for (const chunk of chunks) {\n out.set(chunk, offset)\n offset += chunk.byteLength\n }\n return out\n }\n\n async text() {\n if (this.#file) {\n return new TextDecoder().decode(await this.#bytes())\n }\n return this.#data.text()\n }\n\n async json() {\n if (this.#file) {\n const text = await this.text()\n try {\n return JSON.parse(text)\n } catch (error) {\n throw new Error(\n `RequenceFile JSON parse failed for ${this.#file.url}`,\n { cause: error },\n )\n }\n }\n return JSON.parse(await this.text())\n }\n\n async blob() {\n if (this.#file) {\n return new Blob([await this.#bytes()], { type: this.#file.mime })\n }\n return this.#data\n }\n\n async arrayBuffer() {\n if (this.#file) {\n return (await this.#bytes()).buffer as ArrayBuffer\n }\n return this.#data.arrayBuffer()\n }\n\n toString() {\n return `RequenceFile<${this.mimeType}>`\n }\n}\n",
|
|
9
|
+
"import type { StreamObject } from '@requence/helpers'\n\nimport { remoteBody } from './remoteBody.ts'\nimport type { MainMimeType, SubMimeType, ValidMimeType } from './types.ts'\n\nexport interface RequenceStreamType<A, B> {\n mimeType: string\n mainMimeType: A\n subMimeType: B\n stream(): ReadableStream\n}\n\ninterface RequenceStreamOptions<T> {\n type: T\n signal?: AbortSignal\n}\n\n/**\n * Inactivity timeout (ms) for a remote stream read. Opt-in: only enforced when\n * `REQUENCE_STREAM_STALL_TIMEOUT_MS` is set to a positive number. When enabled,\n * a read that produces no data within the window aborts the underlying fetch so\n * the consumer errors out instead of blocking forever. Disabled by default so\n * legitimately slow/long streams are never cut.\n */\nfunction stallTimeoutMs(): number {\n const raw =\n typeof process !== 'undefined'\n ? Number(process.env?.REQUENCE_STREAM_STALL_TIMEOUT_MS)\n : Number.NaN\n return Number.isFinite(raw) && raw > 0 ? raw : 0\n}\n\nexport class RequenceStream<\n T extends `${string}/${string}` = '*/*',\n A = MainMimeType<T>,\n B = SubMimeType<T>,\n> implements RequenceStreamType<A, B> {\n #data: ReadableStream\n #stream: StreamObject | null = null\n #options: RequenceStreamOptions<any>\n\n constructor(\n stream: ReadableStream,\n options: RequenceStreamOptions<ValidMimeType<T>>,\n ) {\n this.#data = stream\n this.#options = options\n }\n\n /** @internal */\n static fromStreamObject<T extends `${string}/${string}`>(\n stream: StreamObject,\n signal?: AbortSignal,\n ) {\n const instance = new this(null as unknown as ReadableStream, {\n type: 'x/x',\n signal,\n })\n instance.#stream = stream\n return instance as unknown as RequenceStream<T>\n }\n\n /**\n * Egress detection for the stream value handler. Covers a `RequenceStream`\n * *and a raw `Response`* — a Response body adapts through RequenceStream, so\n * no separate Response branch exists anywhere outside this class.\n */\n static canHandle(value: unknown): value is RequenceStream | Response {\n return value instanceof RequenceStream || value instanceof Response\n }\n\n /** @internal */\n get streamObject() {\n return this.#stream\n }\n\n get mimeType() {\n return this.#stream?.mime ?? this.#options.type\n }\n\n get mainMimeType() {\n return this.mimeType.split('/')[0] as A\n }\n\n get subMimeType() {\n return this.mimeType.split('/')[1] as B\n }\n\n stream(): ReadableStream {\n if (!this.#stream) {\n return this.#data\n }\n\n return remoteBody(this.#stream.url, {\n signal: this.#options.signal,\n stallTimeoutMs: stallTimeoutMs(),\n // Framed protocol: a truncated live stream surfaces as a typed\n // RequenceStreamTruncatedError, never as a clean-looking EOF.\n framed: true,\n })\n }\n\n asyncIterable(): AsyncIterable<Uint8Array> {\n const reader = this.stream().getReader()\n\n return {\n [Symbol.asyncIterator]() {\n return {\n async next() {\n return reader.read() as Promise<IteratorResult<Uint8Array>>\n },\n async return() {\n reader.cancel()\n reader.releaseLock()\n return { done: true, value: null }\n },\n async throw() {\n reader.cancel()\n reader.releaseLock()\n return { done: true, value: null }\n },\n }\n },\n }\n }\n\n toString() {\n return `RequenceStream<${this.mimeType}>`\n }\n}\n",
|
|
5
10
|
"type CallbackValue<T> = { value: T } | { done: true } | { error: Error }\n\nexport function callbackToAsyncIterator<T>(\n subscribe: (\n push: (value: T) => void,\n fail: (error: Error) => void,\n end: () => void,\n ) => void | (() => void),\n): AsyncIterator<T> {\n const pullQueue: Array<(value: CallbackValue<T>) => void> = []\n const pushQueue: Array<CallbackValue<T>> = []\n let done = false\n\n const pushValue = (value: CallbackValue<T>) => {\n if (pullQueue.length !== 0) {\n const resolver = pullQueue.shift()\n resolver!(value)\n } else {\n pushQueue.push(value)\n }\n }\n\n const pullValue = () =>\n new Promise<CallbackValue<T>>((resolve) => {\n if (pushQueue.length !== 0) {\n resolve(pushQueue.shift()!)\n } else {\n pullQueue.push(resolve)\n }\n })\n\n const cleanup = subscribe(\n (value) => {\n if (!done) {\n pushValue({ value })\n }\n },\n (error) => {\n if (!done) {\n pushValue({ error })\n }\n },\n () => {\n if (!done) {\n pushValue({ done: true })\n }\n },\n )\n\n return {\n async next() {\n if (done) {\n return { value: undefined, done: true }\n }\n\n const value: any = await pullValue()\n if (value.done) {\n done = true\n return { value: undefined, done: true }\n }\n\n if (value.error) {\n done = true\n throw value.error\n }\n\n return { value: value.value, done: false }\n },\n\n async return() {\n if (!done) {\n done = true\n if (typeof cleanup === 'function') {\n cleanup()\n }\n while (pullQueue.length > 0) {\n const resolver = pullQueue.shift()\n resolver!({ done: true })\n }\n }\n return { value: undefined, done: true }\n },\n }\n}\n\nexport function callbackToAsyncIterable<T>(\n ...args: Parameters<typeof callbackToAsyncIterator<T>>\n): AsyncIterable<T> {\n let iterator: AsyncIterator<T> | undefined\n return {\n [Symbol.asyncIterator]() {\n iterator ??= callbackToAsyncIterator(...args)\n return iterator\n },\n }\n}\n",
|
|
6
|
-
"import { z } from 'zod/v4'\n\nconst recordSchema = z.record(z.string(), z.unknown())\nexport function isRecord(data: unknown): data is Record<string, unknown> {\n return recordSchema.safeParse(data).success\n}\n\nconst uuidSchema = z.uuid()\nexport function isUuid(data: unknown): data is string {\n return uuidSchema.safeParse(data).success\n}\n",
|
|
7
|
-
"import { isRecord } from './guards.ts'\n\ntype DataVistor<T> = (\n data: T,\n path: Array<string | number>,\n) => Promise<any> | any\n\ninterface DataVistors {\n Null?: DataVistor<null>\n String?: DataVistor<string>\n Number?: DataVistor<number>\n Object?: DataVistor<object>\n Array?: DataVistor<Array<any>>\n Buffer?: DataVistor<Buffer>\n Function?: DataVistor<(...args: any[]) => any>\n Symbol?: DataVistor<symbol>\n}\n\ntype HasPromiseVistor<T extends DataVistors, Then, Else> = T[keyof T] extends (\n ...args: any[]\n) => any\n ? Promise<any> extends ReturnType<T[keyof T]>\n ? Then\n : Else\n : Else\n\nfunction resolve<T>(value: T | Promise<T>, onResolve: (value: T) => void) {\n if (value instanceof Promise) {\n return Promise.resolve()\n .then(() => value)\n .then(onResolve)\n }\n return onResolve(value)\n}\n\nfunction notUndefined(value: unknown, fallback: unknown) {\n return resolve(value, (resolvedValue) =>\n typeof resolvedValue === 'undefined' ? fallback : resolvedValue,\n )\n}\n\nclass AbortMapData extends Error {}\n\nexport function mapData<\n Output,\n Input = unknown,\n V extends DataVistors = DataVistors,\n>(\n data: Input,\n visitors: V,\n): HasPromiseVistor<\n V,\n Promise<unknown extends Output ? Input : Output>,\n unknown extends Output ? Input : Output\n> {\n let aborted = false\n const traverseData = (data: any, path: Array<string | number>): any => {\n if (aborted) {\n return data\n }\n try {\n if (Array.isArray(data)) {\n return resolve(visitors.Array?.(data, path), (resolvedData) => {\n if (resolvedData) {\n return resolvedData\n }\n const items = data.map((item, index) =>\n traverseData(item, [...path, index]),\n )\n if (items.some((item) => item instanceof Promise)) {\n return Promise.all(items)\n }\n\n return items\n })\n }\n if (data === null) {\n return notUndefined(visitors.Null?.(data, path), data)\n }\n if (typeof Buffer !== 'undefined' && Buffer.isBuffer(data)) {\n return notUndefined(visitors.Buffer?.(data, path), data)\n }\n if (typeof data === 'string') {\n return notUndefined(visitors.String?.(data, path), data)\n }\n if (typeof data === 'number') {\n return notUndefined(visitors.Number?.(data, path), data)\n }\n if (typeof data === 'symbol') {\n return notUndefined(visitors.Symbol?.(data, path), data)\n }\n if (typeof data === 'function') {\n return notUndefined(visitors.Function?.(data, path), data)\n }\n if (isRecord(data)) {\n return resolve(\n visitors.Object?.(structuredClone(data), path),\n (resolvedData) => {\n const nextData = resolvedData ?? data\n if (!isRecord(nextData)) {\n return nextData\n }\n const entries = Object.entries(nextData).map(([key, value]) => [\n key,\n traverseData(value, [...path, key]),\n ])\n\n if (entries.some(([, value]) => value instanceof Promise)) {\n return Promise.all(\n entries.map(([key, value]) =>\n Promise.resolve()\n .then(() => value)\n .then((resolvedValue) => [key, resolvedValue]),\n ),\n ).then((entries) => Object.fromEntries(entries))\n }\n\n return Object.fromEntries(entries)\n },\n )\n }\n if (typeof data === 'object' && data) {\n return notUndefined(visitors.Object?.(data, path), data)\n }\n return data\n } catch (error) {\n if (error instanceof AbortMapData) {\n aborted = true\n return data\n }\n throw error\n }\n }\n\n return traverseData(data, [])\n}\n\nmapData.abort = () => {\n throw new AbortMapData()\n}\n",
|
|
8
|
-
"import { z } from 'zod/v4'\n\nconst callbackObjectSchema = z.object({\n sourceId: z.string(),\n outputName: z.string().nullable(),\n propertyPath: z.array(z.union([z.string(), z.int()])),\n callbackId: z.uuid(),\n __REQUENCE_type: z.literal('RequenceCallback'),\n})\n\nexport type CallbackObject = z.infer<typeof callbackObjectSchema>\n\nexport function isCallbackObject(data: unknown): data is CallbackObject {\n return callbackObjectSchema.safeParse(data).success\n}\n\nexport type RequenceCallback<T> = (arg: T) => void\nexport type WrappedRequenceCallback<T> = RequenceCallback<T> & {\n response(): Promise<T>\n}\n\nexport function createCallback<T>(\n callback?: (arg: T) => void,\n): WrappedRequenceCallback<T> {\n const { promise, resolve } = Promise.withResolvers<T>()\n\n const executor = (arg: T) => {\n resolve(arg)\n callback?.(arg)\n }\n\n return Object.assign(executor, {\n response() {\n return promise\n },\n })\n}\n",
|
|
9
11
|
"import { z } from 'zod/v4'\n\nconst fileObjectSchema = z.object({\n size: z.int().positive(),\n mime: z.string(),\n url: z.url(),\n __REQUENCE_type: z.literal('RequenceFile'),\n})\n\nexport type FileObject = z.infer<typeof fileObjectSchema>\n\nexport function toFileObject(fileInfo: {\n size: number\n mime: string\n url: string\n}): FileObject {\n return {\n ...fileInfo,\n __REQUENCE_type: 'RequenceFile',\n }\n}\n\nexport function isFileObject(data: unknown): data is FileObject {\n return fileObjectSchema.safeParse(data).success\n}\n",
|
|
10
|
-
"import type { FileObject } from './index.ts'\nimport type { MainMimeType, SubMimeType, ValidMimeType } from './types.ts'\n\ninterface RequenceFilePropertyBag<T> extends Omit<BlobPropertyBag, 'type'> {\n type: T\n}\n\nexport interface RequenceFileType<A, B> {\n size: number\n mimeType: string\n mainMimeType: A\n subMimeType: B\n text(): Promise<string>\n json(): Promise<unknown>\n blob(): Promise<Blob>\n arrayBuffer(): Promise<ArrayBuffer>\n}\n\nexport class RequenceFile<\n T extends `${string}/${string}` = '*/*',\n A = MainMimeType<T>,\n B = SubMimeType<T>,\n> implements RequenceFileType<A, B> {\n #data: Blob\n #file: FileObject | null = null\n constructor(\n blobParts: BlobPart[],\n options?: RequenceFilePropertyBag<ValidMimeType<T>>,\n ) {\n this.#data = new Blob(blobParts, options)\n }\n\n /** @internal */\n static fromFileObject<T extends `${string}/${string}`>(file: FileObject) {\n const instance = new this([], { type: 'x/x' })\n instance.#file = file\n return instance as RequenceFile<T>\n }\n\n /** @internal */\n get fileObject() {\n return this.#file\n }\n\n get size() {\n return this.#file?.size ?? this.#data.size\n }\n\n get mimeType() {\n return this.#file?.mime ?? this.#data.type\n }\n\n get mainMimeType() {\n return this.mimeType.split('/')[0] as A\n }\n\n get subMimeType() {\n return this.mimeType.split('/')[1] as B\n }\n\n async text() {\n if (this.#file) {\n return fetch(this.#file.url).then((response) => response.text())\n }\n return this.#data.text()\n }\n\n async json() {\n if (this.#file) {\n return fetch(this.#file.url).then((response) => response.json())\n }\n return JSON.parse(await this.text())\n }\n\n async blob() {\n if (this.#file) {\n return fetch(this.#file.url).then((response) => response.blob())\n }\n return this.#data\n }\n\n async arrayBuffer() {\n if (this.#file) {\n return fetch(this.#file.url).then((response) => response.arrayBuffer())\n }\n return this.#data.arrayBuffer()\n }\n\n toString() {\n return `RequenceFile<${this.mimeType}>`\n }\n\n toJSON() {\n return `RequenceFile<${this.mimeType}>`\n }\n}\n",
|
|
11
|
-
"import type { StreamObject } from './index.ts'\nimport type { MainMimeType, SubMimeType, ValidMimeType } from './types.ts'\n\nexport interface RequenceStreamType<A, B> {\n mimeType: string\n mainMimeType: A\n subMimeType: B\n stream(): ReadableStream\n}\n\ninterface RequenceStreamOptions<T> {\n type: T\n}\n\nexport class RequenceStream<\n T extends `${string}/${string}` = '*/*',\n A = MainMimeType<T>,\n B = SubMimeType<T>,\n> implements RequenceStreamType<A, B> {\n #data: ReadableStream\n #stream: StreamObject | null = null\n #options: RequenceStreamOptions<any>\n\n constructor(\n stream: ReadableStream,\n options: RequenceStreamOptions<ValidMimeType<T>>,\n ) {\n this.#data = stream\n this.#options = options\n }\n\n /** @internal */\n static fromStreamObject<T extends `${string}/${string}`>(\n stream: StreamObject,\n ) {\n const instance = new this(null as unknown as ReadableStream, {\n type: 'x/x',\n })\n instance.#stream = stream\n return instance as unknown as RequenceStream<T>\n }\n\n /** @internal */\n get streamObject() {\n return this.#stream\n }\n\n get mimeType() {\n return this.#stream?.mime ?? this.#options.type\n }\n\n get mainMimeType() {\n return this.mimeType.split('/')[0] as A\n }\n\n get subMimeType() {\n return this.mimeType.split('/')[1] as B\n }\n\n stream() {\n if (this.#stream) {\n const { readable, writable } = new TransformStream()\n\n fetch(this.#stream.url).then((response) =>\n response.body?.pipeTo(writable),\n )\n\n return readable\n }\n return this.#data\n }\n\n asyncIterable(): AsyncIterable<Uint8Array> {\n const reader = this.stream().getReader()\n\n return {\n [Symbol.asyncIterator]() {\n return {\n async next() {\n return reader.read() as Promise<IteratorResult<Uint8Array>>\n },\n async return() {\n reader.cancel()\n reader.releaseLock()\n return { done: true, value: null }\n },\n }\n },\n }\n }\n\n toString() {\n return `RequenceStream<${this.mimeType}>`\n }\n\n toJSON() {\n return `RequenceStream<${this.mimeType}>`\n }\n}\n",
|
|
12
12
|
"import { z } from 'zod/v4'\n\nconst streamObjectSchema = z.object({\n mime: z.string(),\n url: z.string().url(),\n __REQUENCE_type: z.literal('RequenceStream'),\n})\n\nexport type StreamObject = z.infer<typeof streamObjectSchema>\n\nexport function isStreamObject(data: unknown): data is StreamObject {\n return streamObjectSchema.safeParse(data).success\n}\n\nexport function toStreamObject(streamInfo: {\n mime: string\n url: string\n}): StreamObject {\n return {\n ...streamInfo,\n __REQUENCE_type: 'RequenceStream',\n }\n}\n",
|
|
13
|
-
"import {
|
|
14
|
-
"import {
|
|
15
|
-
"import {\n callbackToAsyncIterable,\n resolveRequenceTypes,\n} from '@requence/helpers'\nimport { mapOutput as mapInput } from '@requence/helpers/files'\nimport chalk from 'chalk'\nimport { type FetchLike, createEventSource } from 'eventsource-client'\n\nimport { abortTask } from './abortTask.ts'\nimport { ackTask } from './ackTask.ts'\nimport { protectTask } from './protectTask.ts'\nimport {\n type CreateTaskOptions,\n type Result,\n type Update,\n eventSchema,\n prioritySchema,\n} from './types.ts'\nimport getAccessToken from './utils/getAccessToken.ts'\n\nclass TaskPrepareError extends Error {\n constructor(\n message: string,\n public readonly taskTemplate: string,\n ) {\n super(message)\n }\n}\n\nexport class TaskError extends TaskPrepareError {\n constructor(\n message: string,\n public readonly taskTemplate: string,\n public readonly taskId: string,\n ) {\n super(message, taskTemplate)\n }\n}\n\ntype TaskUpdateHandler<T> = (update: Update<T>) => void\n\ntype Task<T extends keyof RequenceTask.TaskTemplate | (string & {})> =\n AsyncIterable<Update<T>> &\n Pick<Promise<Result<T>>, 'then' | 'catch' | 'finally'> & {\n getTaskId(): Promise<string>\n getTaskUrl(): Promise<string | null>\n abort(reason?: string): Promise<void>\n protect(): Promise<void>\n finalized(): Promise<string>\n }\n\nexport function createTask<\n T extends keyof RequenceTask.TaskTemplate | (string & {}),\n>(options: CreateTaskOptions<T>, onUpdate?: TaskUpdateHandler<T>): Task<T> {\n const taskUpdateHandlers = new Set<TaskUpdateHandler<T>>()\n const priority = prioritySchema.parse(options.priority)\n const { apiBaseUrl, token } = getAccessToken(options.accessToken)\n\n const prepareUrl = `${apiBaseUrl}/task/prepare/${options.taskTemplate}`\n\n const payloadPromiseWithResolvers = Promise.withResolvers<{\n taskId: string\n urls?: { watch: string; show: string }\n }>()\n\n let isMonitoring = false\n const startMonitoring = async () => {\n if (isMonitoring) {\n return\n }\n\n isMonitoring = true\n const payload = await payloadPromiseWithResolvers.promise\n\n if (!payload.urls) {\n resultPromiseWithResolvers.resolve({\n input: options.input,\n taskId: payload.taskId,\n taskUrl: '',\n result: null,\n getNodeData(_alias) {\n return null\n },\n getNodeError(_alias) {\n return null\n },\n } as Result<T>)\n return\n }\n\n const taskStorage: {\n input: unknown\n data: Record<string, unknown>\n errors: Record<string, string>\n result: unknown\n } = { input: null, data: {}, errors: {}, result: null }\n\n let since: Date | null = null\n let lastPosition: number | null = null\n let lastResponse: Response\n const customFetch: FetchLike = async (url, init) => {\n const response = await fetch(url, init)\n lastResponse = response\n return response\n }\n const eventSource = createEventSource({\n method: 'POST',\n fetch: customFetch,\n url: payload.urls.watch,\n headers: {\n Authorization: `Bearer ${token}`,\n 'Content-Type': 'application/json',\n },\n get body() {\n return JSON.stringify({\n since: since ? since.toISOString() : null,\n lastPosition,\n })\n },\n onScheduleReconnect() {\n // Only advance `since` when we have never received an event yet.\n // Once lastPosition is set it acts as the primary cursor and\n // prevents gaps in the event stream on reconnect.\n if (lastPosition === null) {\n since = new Date()\n }\n },\n async onDisconnect() {\n if (lastResponse.status === 200) {\n eventSource.close()\n }\n },\n onMessage({ id, event, data }) {\n if (id) {\n lastPosition = Number(id)\n }\n\n const updateResult = eventSchema.safeParse({ event, data })\n\n if (!updateResult.success) {\n eventSource.close()\n resultPromiseWithResolvers.reject(\n new TaskError(\n `Invalid ${event} update received`,\n options.taskTemplate,\n payload.taskId,\n ),\n )\n return\n }\n\n const update = updateResult.data\n\n switch (update.type) {\n case 'taskStart': {\n taskStorage.input = resolveRequenceTypes(update.input, () => {\n throw new Error('input may not have callbacks')\n })\n break\n }\n case 'nodeUpdate': {\n if (update.node.alias) {\n taskStorage.data[update.node.alias] = resolveRequenceTypes(\n update.data,\n )\n }\n break\n }\n case 'nodeError': {\n if (update.node.alias) {\n taskStorage.errors[update.node.alias] = update.error\n }\n break\n }\n case 'taskEnd': {\n taskStorage.result = resolveRequenceTypes(update.result)\n eventSource.close()\n if (update.requireAck) {\n ackTask({\n taskId: payload.taskId,\n accessToken: options.accessToken,\n }).catch(() => {})\n }\n break\n }\n case 'taskError':\n case 'taskAborted': {\n eventSource.close()\n if (update.requireAck) {\n ackTask({\n taskId: payload.taskId,\n accessToken: options.accessToken,\n }).catch(() => {})\n }\n break\n }\n }\n\n const context: Update<unknown>['context'] = {\n taskId: update.taskId,\n input: taskStorage.input,\n getNodeData(alias) {\n return taskStorage.data[alias] ?? null\n },\n getNodeError(alias) {\n return taskStorage.errors[alias] ?? null\n },\n result: taskStorage.result,\n }\n\n const contextUpdate = {\n ...update,\n context,\n }\n\n if (contextUpdate.type === 'taskEnd') {\n resultPromiseWithResolvers.resolve({\n ...context,\n taskUrl: payload.urls?.show ?? '',\n } as Result<T>)\n }\n\n if (\n contextUpdate.type === 'taskError' ||\n contextUpdate.type === 'taskAborted'\n ) {\n resultPromiseWithResolvers.reject(\n new TaskError(\n contextUpdate.reason ??\n (contextUpdate.type === 'taskError'\n ? 'Task failed'\n : 'Task aborted'),\n options.taskTemplate,\n payload.taskId,\n ),\n )\n }\n\n taskUpdateHandlers.forEach((handler) =>\n handler(contextUpdate as Update<T>),\n )\n },\n })\n }\n\n const taskIdPromiseWithResolvers = Promise.withResolvers<string>()\n const taskUrlPromiseWithResolvers = Promise.withResolvers<string | null>()\n const resultPromiseWithResolvers = Promise.withResolvers<Result<T>>()\n const finalizedPromiseWithResolvers = Promise.withResolvers<string>()\n finalizedPromiseWithResolvers.promise.catch(() => {})\n\n let rejectTaskIdPromise = false\n let rejectTaskUrlPromise = false\n\n ;(async () => {\n const prepareResponse = await fetch(prepareUrl, {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${token}`,\n },\n })\n\n if (!prepareResponse.ok) {\n const error = new TaskPrepareError(\n await prepareResponse.text(),\n options.taskTemplate,\n )\n finalizedPromiseWithResolvers.reject(error)\n if (rejectTaskIdPromise) {\n taskIdPromiseWithResolvers.reject(error)\n }\n if (rejectTaskUrlPromise) {\n taskUrlPromiseWithResolvers.reject(error)\n }\n if (isMonitoring) {\n resultPromiseWithResolvers.reject(error)\n }\n return\n }\n\n const prepareData = (await prepareResponse.json()) as {\n taskId: string\n finalizeUrl: string\n branch: string\n fileUrls?: { uploadUrl: string; streamUrl: string }\n }\n\n if (prepareData.branch !== 'live' && !options.suppressBranchWarning) {\n console.warn(\n chalk.hex('#eab308')(\n 'task is executed in',\n chalk.bold(prepareData.branch),\n 'branch',\n ),\n )\n }\n\n taskIdPromiseWithResolvers.resolve(prepareData.taskId)\n\n const mappedParams = await mapInput({\n value: {\n name: options.name,\n input: options.input,\n priority,\n requireAck: options.requireAck ?? false,\n },\n options: {\n uploadUrl: prepareData.fileUrls?.uploadUrl,\n streamUrl: prepareData.fileUrls?.streamUrl,\n },\n })\n\n const finalizeResponse = await fetch(prepareData.finalizeUrl, {\n method: 'POST',\n body: JSON.stringify(mappedParams),\n headers: {\n Authorization: `Bearer ${token}`,\n 'Content-Type': 'application/json',\n },\n })\n\n if (!finalizeResponse.ok) {\n const error = new TaskError(\n await finalizeResponse.text(),\n options.taskTemplate,\n prepareData.taskId,\n )\n finalizedPromiseWithResolvers.reject(error)\n if (rejectTaskUrlPromise) {\n taskUrlPromiseWithResolvers.reject(error)\n }\n if (isMonitoring) {\n resultPromiseWithResolvers.reject(error)\n }\n return\n }\n\n const payload = (await finalizeResponse.json()) as {\n taskId: string\n urls?: {\n show: string\n watch: string\n }\n }\n finalizedPromiseWithResolvers.resolve(prepareData.taskId)\n taskUrlPromiseWithResolvers.resolve(payload.urls?.show ?? null)\n payloadPromiseWithResolvers.resolve(payload)\n if (onUpdate) {\n taskUpdateHandlers.add(onUpdate)\n startMonitoring()\n }\n })()\n\n const asyncIterable = callbackToAsyncIterable<Update<T>>(\n (push, _fail, done) => {\n const handleUpdate = (update: Update<T>) => {\n push(update)\n if (\n update.type === 'taskEnd' ||\n update.type === 'taskError' ||\n update.type === 'taskAborted'\n ) {\n done()\n taskUpdateHandlers.delete(handleUpdate)\n }\n }\n taskUpdateHandlers.add(handleUpdate)\n\n startMonitoring()\n\n return () => {\n taskUpdateHandlers.delete(handleUpdate)\n }\n },\n )\n\n const methods = {\n get catch() {\n startMonitoring()\n return resultPromiseWithResolvers.promise.catch.bind(\n resultPromiseWithResolvers.promise,\n )\n },\n get finally() {\n startMonitoring()\n return resultPromiseWithResolvers.promise.finally.bind(\n resultPromiseWithResolvers.promise,\n )\n },\n get then() {\n startMonitoring()\n return resultPromiseWithResolvers.promise.then.bind(\n resultPromiseWithResolvers.promise,\n )\n },\n async getTaskId() {\n rejectTaskIdPromise = true\n return taskIdPromiseWithResolvers.promise\n },\n async getTaskUrl() {\n rejectTaskUrlPromise = true\n return taskUrlPromiseWithResolvers.promise\n },\n async abort(reason?: string) {\n const taskId = await taskIdPromiseWithResolvers.promise\n await abortTask({\n taskId,\n accessToken: options.accessToken,\n reason,\n })\n },\n async protect() {\n const taskId = await taskIdPromiseWithResolvers.promise\n await protectTask({\n taskId,\n accessToken: options.accessToken,\n })\n },\n async finalized() {\n return finalizedPromiseWithResolvers.promise\n },\n }\n\n return Object.defineProperties(\n asyncIterable,\n Object.getOwnPropertyDescriptors(methods),\n ) as any\n}\n",
|
|
13
|
+
"import { z } from 'zod/v4'\n\nconst claimCheckObjectSchema = z.object({\n url: z.url(),\n size: z.int().positive(),\n __REQUENCE_type: z.literal('ClaimCheck'),\n})\n\n/**\n * Reference left behind by the oversized-message claim-check: the value was\n * offloaded to the files service and is fetched back (and re-walked) on\n * ingress by the `ClaimCheck` value handler.\n */\nexport type ClaimCheckObject = z.infer<typeof claimCheckObjectSchema>\n\nexport function toClaimCheckObject(info: {\n url: string\n size: number\n}): ClaimCheckObject {\n return {\n ...info,\n __REQUENCE_type: 'ClaimCheck',\n }\n}\n\nexport function isClaimCheckObject(data: unknown): data is ClaimCheckObject {\n return claimCheckObjectSchema.safeParse(data).success\n}\n\n/**\n * JSON-schema equivalent of the reference shape, for claim-check-aware\n * validation: a subschema position holding a `ClaimCheck` reference is\n * validated against this instead of the declared subschema (shape validation\n * of the offloaded value is deferred to the consumer after rehydration).\n */\nexport const claimCheckJsonSchema = {\n type: 'object',\n properties: {\n url: { type: 'string' },\n size: { type: 'integer' },\n __REQUENCE_type: { const: 'ClaimCheck' },\n },\n required: ['url', 'size', '__REQUENCE_type'],\n} as const\n",
|
|
14
|
+
"import { z } from 'zod/v4'\n\nconst callbackObjectSchema = z.object({\n sourceId: z.string(),\n outputName: z.string().nullable(),\n propertyPath: z.array(z.union([z.string(), z.int()])),\n callbackId: z.uuid(),\n __REQUENCE_type: z.literal('RequenceCallback'),\n})\n\nexport type CallbackObject = z.infer<typeof callbackObjectSchema>\n\nexport function isCallbackObject(data: unknown): data is CallbackObject {\n return callbackObjectSchema.safeParse(data).success\n}\n\nexport type RequenceCallback<T> = (arg: T) => void\nexport type WrappedRequenceCallback<T> = RequenceCallback<T> & {\n response(): Promise<T>\n}\n\nexport function createCallback<T>(\n callback?: (arg: T) => void,\n): WrappedRequenceCallback<T> {\n const { promise, resolve } = Promise.withResolvers<T>()\n\n const executor = (arg: T) => {\n resolve(arg)\n callback?.(arg)\n }\n\n return Object.assign(executor, {\n response() {\n return promise\n },\n })\n}\n",
|
|
15
|
+
"/**\n * Surface a non-2xx files-service response as a clear error instead of parsing\n * an error page as if it were a valid reference. Drains the body so the\n * connection is released.\n */\nexport async function assertOk(res: Response, url: string, phase: string) {\n if (res.ok) {\n return\n }\n const detail = await res.text().catch(() => '')\n throw new Error(\n `${phase} failed: ${res.status} ${res.statusText} (${url})${\n detail ? ` — ${detail}` : ''\n }`,\n )\n}\n",
|
|
16
|
+
"import type { FileObject } from '@requence/helpers'\nimport { isFileObject, toFileObject } from '@requence/helpers'\nimport type { TransformContext, ValueHandler } from '@requence/transformer'\n\nimport type { FileEgressContext } from './context.ts'\nimport { assertOk } from './transport.ts'\nimport { RequenceFile } from '../RequenceFile.ts'\n\nasync function upload(\n ctx: TransformContext,\n uploadUrl: string,\n body: BodyInit | null,\n contentType?: string | null,\n maxFileSize?: number,\n): Promise<FileObject> {\n const uploadResponse = await ctx.fetch(uploadUrl, {\n method: 'POST',\n signal: ctx.signal,\n headers: {\n ...(contentType ? { 'Content-Type': contentType } : {}),\n // Per-task cap transmitted via task options; the files service\n // enforces it (absent ⇒ its hardcoded fallback cap).\n ...(maxFileSize !== undefined\n ? { 'file-size': String(maxFileSize) }\n : {}),\n },\n body,\n })\n\n await assertOk(uploadResponse, uploadUrl, 'upload')\n\n const data = await uploadResponse.json()\n // Explicit field checks rather than `isFileObject`: the FileObject schema\n // requires a positive size, but a legitimate 0-byte file is valid here.\n if (\n !data ||\n typeof data !== 'object' ||\n typeof (data as { url?: unknown }).url !== 'string' ||\n !(data as { url: string }).url ||\n typeof (data as { mime?: unknown }).mime !== 'string' ||\n typeof (data as { size?: unknown }).size !== 'number'\n ) {\n throw new Error(`malformed upload response (${uploadUrl})`)\n }\n\n return toFileObject(data as { size: number; mime: string; url: string })\n}\n\n/**\n * Value handler owning `RequenceFile` — and, through it, raw `Blob`s (a Blob\n * adapts through RequenceFile; no separate Blob branch exists anywhere else).\n *\n * Egress uploads the bytes via the injected transport and returns the\n * `FileObject` reference (idempotent for an already-remote file). Ingress\n * reconstructs the lazy remote instance.\n */\nexport function createRequenceFileHandler(): ValueHandler<\n RequenceFile | Blob,\n FileObject | null,\n FileEgressContext\n> {\n return {\n tag: 'RequenceFile',\n\n canHandle: (value) => RequenceFile.canHandle(value),\n\n async serialize(value, ctx) {\n // Idempotent: an already-remote file keeps its existing reference.\n if (value instanceof RequenceFile && value.fileObject) {\n return value.fileObject\n }\n\n if (!ctx.uploadUrl) {\n ctx.onOffloadSkip?.()\n return null\n }\n\n try {\n if (value instanceof RequenceFile) {\n return await upload(\n ctx,\n ctx.uploadUrl,\n await value.blob(),\n value.mimeType,\n ctx.maxFileSize,\n )\n }\n return await upload(\n ctx,\n ctx.uploadUrl,\n value,\n value.type,\n ctx.maxFileSize,\n )\n } catch (error) {\n if (!(error instanceof Error)) {\n throw error\n }\n // Fail-hard by default: only swallow (to null) when a caller opts in\n // with `onOffloadFail`. Otherwise propagate so the node/task fails loudly.\n if (ctx.onOffloadFail) {\n ctx.onOffloadFail(error)\n return null\n }\n throw error\n }\n },\n\n isReference: (value): value is FileObject => isFileObject(value),\n\n deserialize(ref, ctx) {\n return RequenceFile.fromFileObject(ref as FileObject, ctx.signal)\n },\n }\n}\n",
|
|
17
|
+
"import { AsyncLocalStorage } from 'node:async_hooks'\n\n/**\n * Ambient collection scope for background stream-body uploads.\n *\n * A `RequenceStream` serializes in two beats: the reference (`StreamObject`) is\n * known right after registration, but the body keeps uploading in the\n * background — that is what lets a consumer join the stream *while* the\n * producer is still pushing. The caller, however, must not treat the transform\n * as durably complete (ack the task, mark it done) until every background body\n * upload has settled.\n *\n * `withRequenceStreams` is that collection point: the stream handler registers\n * its background upload into the ambient store, and the caller receives a\n * single `done` promise to feed its completion gate.\n */\nconst pendingUploads = new AsyncLocalStorage<Array<Promise<void>>>()\n\n/**\n * Run `fn` (typically a `transformOutbound` call) collecting every background\n * stream-body upload started within it. Returns the function's result together\n * with a `done` promise that resolves when all collected uploads settle and\n * rejects on the first failure. `value` is available immediately — publish it\n * while the bodies still stream; await `done` before acking.\n */\nexport async function withRequenceStreams<T>(\n fn: () => Promise<T> | T,\n): Promise<{ value: T; done: Promise<void> }> {\n const uploads: Array<Promise<void>> = []\n const value = await pendingUploads.run(uploads, fn)\n return { value, done: Promise.all(uploads).then(() => undefined) }\n}\n\n/**\n * Hand a background upload to the ambient scope. Returns false when no scope\n * is active — the caller (the stream handler) must then await the work inline:\n * still correct, just not live. Never fire-and-forget.\n *\n * @internal\n */\nexport function registerPendingUpload(work: Promise<void>): boolean {\n const store = pendingUploads.getStore()\n if (!store) {\n return false\n }\n store.push(work)\n return true\n}\n",
|
|
18
|
+
"import type { StreamObject } from '@requence/helpers'\nimport { isStreamObject, toStreamObject } from '@requence/helpers'\nimport type { TransformContext, ValueHandler } from '@requence/transformer'\n\nimport type { StreamEgressContext } from './context.ts'\nimport { assertOk } from './transport.ts'\nimport { RequenceStream } from '../RequenceStream.ts'\nimport { registerPendingUpload } from '../withRequenceStreams.ts'\n\nasync function registerAndUpload(\n ctx: TransformContext,\n streamUrl: string,\n stream: ReadableStream,\n contentType?: string | null,\n maxFileSize?: number,\n): Promise<{ ref: StreamObject; bodyUpload?: Promise<void> }> {\n const [testStream, dataStream] = stream.tee()\n\n // Read the first chunk before firing the body upload: nodejs closes an empty\n // duplex `half` body before the fetch executes, so we must know whether any\n // data exists. `dataStream` keeps the buffered chunk (tee), so no bytes are\n // lost. (Obsolete once we move to bun.)\n const reader = testStream.getReader()\n const { done: isEmpty } = await reader.read()\n reader.cancel()\n\n const streamResponse = await ctx.fetch(streamUrl, {\n method: 'POST',\n signal: ctx.signal,\n headers: {\n ...(contentType ? { 'Content-Type': contentType } : {}),\n // Per-task cap transmitted via task options; the files service stores\n // it with the stream and enforces it during the body upload (absent ⇒\n // its hardcoded fallback cap).\n ...(maxFileSize !== undefined\n ? { 'file-size': String(maxFileSize) }\n : {}),\n },\n })\n\n await assertOk(streamResponse, streamUrl, 'stream registration')\n\n const data = await streamResponse.json()\n if (!isStreamObject(toStreamObject(data as { mime: string; url: string }))) {\n throw new Error(`malformed stream registration response (${streamUrl})`)\n }\n\n const { mime, url } = data as { mime: string; url: string }\n\n if (isEmpty) {\n // Legitimate zero-byte stream: POST a static empty body. The duplex\n // \"wait for first byte\" workaround only applies to a streaming body.\n const emptyResponse = await ctx.fetch(url, {\n method: 'POST',\n signal: ctx.signal,\n headers: contentType ? { 'Content-Type': contentType } : {},\n body: new Uint8Array(0),\n })\n await assertOk(emptyResponse, url, 'stream body upload')\n await emptyResponse.body?.cancel()\n return { ref: toStreamObject({ mime, url }) }\n }\n\n // Not awaited here: the body streams in the background so the reference can\n // be published while data still flows. Completion/failure surfaces through\n // the returned promise, collected by `withRequenceStreams`.\n const bodyUpload = (async () => {\n const bodyResponse = await ctx.fetch(url, {\n method: 'POST',\n signal: ctx.signal,\n duplex: 'half', // not typed but needed for nodejs to handle readable streams\n body: dataStream,\n } as RequestInit)\n await assertOk(bodyResponse, url, 'stream body upload')\n await bodyResponse.body?.cancel()\n })()\n\n return { ref: toStreamObject({ mime, url }), bodyUpload }\n}\n\n/**\n * Value handler owning `RequenceStream` — and, through it, raw `Response`s (a\n * Response body adapts through RequenceStream; no separate Response branch\n * exists anywhere else).\n *\n * Egress registers the stream, returns the `StreamObject` reference\n * immediately, and pushes the body in the background (collected by the ambient\n * `withRequenceStreams` scope; without a scope the upload is awaited inline —\n * still correct, just not live). Ingress reconstructs a lazy stream that reads\n * live-or-durable.\n */\nexport function createRequenceStreamHandler(): ValueHandler<\n RequenceStream | Response,\n StreamObject | null,\n StreamEgressContext\n> {\n return {\n tag: 'RequenceStream',\n\n canHandle: (value) => RequenceStream.canHandle(value),\n\n async serialize(value, ctx) {\n // Idempotent: an already-remote stream keeps its existing reference.\n if (value instanceof RequenceStream && value.streamObject) {\n return value.streamObject\n }\n\n if (!ctx.streamUrl) {\n ctx.onOffloadSkip?.()\n return null\n }\n\n const body =\n value instanceof Response\n ? // A body-less Response is a legitimate empty stream.\n (value.body ??\n new ReadableStream({\n start(controller) {\n controller.close()\n },\n }))\n : value.stream()\n const contentType =\n value instanceof Response\n ? value.headers.get('Content-Type')\n : value.mimeType\n\n try {\n const { ref, bodyUpload } = await registerAndUpload(\n ctx,\n ctx.streamUrl,\n body,\n contentType,\n ctx.maxFileSize,\n )\n if (bodyUpload && !registerPendingUpload(bodyUpload)) {\n // No ambient scope collecting background work: await inline. Correct,\n // just not live — never fire-and-forget.\n await bodyUpload\n }\n return ref\n } catch (error) {\n if (!(error instanceof Error)) {\n throw error\n }\n // Fail-hard by default: only swallow (to null) when a caller opts in\n // with `onOffloadFail`. Otherwise propagate so the node/task fails loudly.\n if (ctx.onOffloadFail) {\n ctx.onOffloadFail(error)\n return null\n }\n throw error\n }\n },\n\n isReference: (value): value is StreamObject => isStreamObject(value),\n\n deserialize(ref, ctx) {\n return RequenceStream.fromStreamObject(ref as StreamObject, ctx.signal)\n },\n }\n}\n",
|
|
19
|
+
"import { Buffer } from 'node:buffer'\n\nimport type { ClaimCheckObject } from '@requence/helpers'\nimport { isClaimCheckObject, toClaimCheckObject } from '@requence/helpers'\nimport type {\n HandlerBundle,\n MessageHandler,\n TransformContext,\n ValueHandler,\n} from '@requence/transformer'\n\nimport type { ClaimCheckEgressContext } from './context.ts'\nimport { assertOk } from './transport.ts'\n\n/**\n * Oversized-message claim-check — one `withHandler` bundle carrying both\n * contract halves:\n *\n * - **Egress** is the bundle's `messageHandler`: it size-checks the already\n * value-serialized body and offloads oversized top-level values to the\n * files service, preserving a record body's top-level keys (the transformer\n * asserts this). A non-record body is offloaded wholesale.\n * - **Ingress** is the bundle's `valueHandler`: a reference can resurface at\n * any depth of a later message once a forwarding hop merged it into other\n * data — only the value walk finds it there.\n *\n * Offload failure always **throws** — deliberately ignoring the\n * `onOffloadFail` swallow-to-null contract, which means \"null *reference*\n * for one value\": a silently nulled body part would corrupt the message, and\n * an oversized body that cannot be offloaded fails at the broker anyway.\n * Without an `uploadUrl` on the ctx the handler skips (status quo: the broker\n * rejects the message exactly as it does today).\n */\n\n/**\n * Fallback offload threshold in bytes when the ctx carries no\n * `maxPayloadSize` (safe headroom under RabbitMQ's 16 MiB default\n * `max_message_size`). The per-task value is minted by the ui backend and\n * arrives via task options, like the upload URL.\n */\nconst DEFAULT_MAX_PAYLOAD_SIZE = 4 * 1024 * 1024\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n}\n\nasync function offload(\n ctx: TransformContext,\n uploadUrl: string,\n json: string,\n): Promise<ClaimCheckObject> {\n const response = await ctx.fetch(uploadUrl, {\n method: 'POST',\n signal: ctx.signal,\n headers: { 'Content-Type': 'application/json' },\n body: json,\n })\n await assertOk(response, uploadUrl, 'claim-check offload')\n\n const data = (await response.json()) as { url?: unknown; size?: unknown }\n if (\n !data ||\n typeof data !== 'object' ||\n typeof data.url !== 'string' ||\n !data.url ||\n typeof data.size !== 'number'\n ) {\n throw new Error(`malformed claim-check offload response (${uploadUrl})`)\n }\n return toClaimCheckObject({ url: data.url, size: data.size })\n}\n\n/** The historical sizer: correct for any caller still publishing JSON. */\nfunction jsonByteLength(value: unknown) {\n const json = JSON.stringify(value)\n return json === undefined ? 0 : Buffer.byteLength(json)\n}\n\nfunction createMessageHandler(): MessageHandler<ClaimCheckEgressContext> {\n return {\n async wrapOutbound(body, ctx) {\n const maxBytes = ctx.maxPayloadSize ?? DEFAULT_MAX_PAYLOAD_SIZE\n if (maxBytes <= 0 || body === undefined) {\n return body\n }\n\n // Two different questions about the same value, and they no longer have the\n // same answer:\n // - how big will this be ON THE WIRE → `measure`, the publisher's codec;\n // - what bytes do we PUT in the offloaded object → JSON, always.\n // The stored object is an HTTP/S3 payload read back by `JSON.parse` in the\n // ingress half below, so it stays JSON regardless of the wire codec. Only\n // the threshold arithmetic follows the codec.\n const measure = ctx.measure ?? jsonByteLength\n\n if (measure(body) <= maxBytes) {\n return body\n }\n const { uploadUrl } = ctx\n if (!uploadUrl) {\n ctx.onOffloadSkip?.()\n return body\n }\n\n if (!isRecord(body)) {\n const json = JSON.stringify(body)\n if (json === undefined) {\n return body\n }\n return offload(ctx, uploadUrl, json)\n }\n\n // Record body: offload oversized top-level values largest-first until\n // the body fits, keys preserved. If every value is offloaded and the\n // body still exceeds the threshold there is nothing more a\n // key-preserving wrap can do — return it and let the broker decide.\n const entries = Object.entries(body)\n .map(([key, value]) => ({\n key,\n valueJson: JSON.stringify(value),\n size: measure(value),\n }))\n .sort((a, b) => b.size - a.size)\n\n const wrapped: Record<string, unknown> = { ...body }\n let total = measure(body)\n for (const entry of entries) {\n // A reference is ~100–150 bytes; offloading a value that small can\n // only grow the body. Entries are sorted largest-first, so stop.\n if (\n total <= maxBytes ||\n entry.valueJson === undefined ||\n entry.size <= 256\n ) {\n break\n }\n const ref = await offload(ctx, uploadUrl, entry.valueJson)\n wrapped[entry.key] = ref\n total += measure(ref) - entry.size\n }\n return wrapped\n },\n }\n}\n\n/**\n * Ingress half: fetch the offloaded value back and hand it to the walk. The\n * result is re-walked to a fixpoint, so references nested *inside* the\n * offloaded value (files, streams, callbacks) rehydrate as usual.\n * Reconstruction needs only `ctx.fetch`, so transport-less consumers (task\n * watchers, ui) can always unwrap.\n */\nfunction createValueHandler(): ValueHandler<unknown, ClaimCheckObject> {\n return {\n tag: 'ClaimCheck',\n\n canHandle: () => false, // egress happens at message level, never per value\n\n serialize() {\n throw new Error(\n 'ClaimCheck egress is the bundled MessageHandler (wrapOutbound); it never reaches the value walk',\n )\n },\n\n isReference: (value): value is ClaimCheckObject =>\n isClaimCheckObject(value),\n\n async deserialize(ref, ctx) {\n const response = await ctx.fetch(ref.url, { signal: ctx.signal })\n await assertOk(response, ref.url, 'claim-check fetch')\n const text = await response.text()\n try {\n return JSON.parse(text)\n } catch {\n throw new Error(`malformed claim-check payload (${ref.url})`)\n }\n },\n }\n}\n\n/** The claim-check as one composable bundle: message-wrap egress + value-walk ingress. */\nexport function createClaimCheckHandler(): HandlerBundle<\n object,\n object,\n ClaimCheckEgressContext\n> & {\n valueHandler: ValueHandler<unknown, ClaimCheckObject>\n messageHandler: MessageHandler<ClaimCheckEgressContext>\n} {\n return {\n valueHandler: createValueHandler(),\n messageHandler: createMessageHandler(),\n }\n}\n",
|
|
20
|
+
"import { withRequenceStreams } from '@requence/files'\nimport { callbackToAsyncIterable } from '@requence/helpers'\nimport chalk from 'chalk'\nimport { type FetchLike, createEventSource } from 'eventsource-client'\n\nimport { abortTask } from './abortTask.ts'\nimport { ackTask } from './ackTask.ts'\nimport {\n RequenceUnreachableError,\n isUnreachableStatus,\n reachableFetch,\n} from './errors.ts'\nimport {\n forbidCallbacks,\n inbound,\n observeOnlyCallbacks,\n transformer,\n} from './ingress.ts'\nimport { protectTask } from './protectTask.ts'\nimport {\n type CreateTaskOptions,\n type Result,\n type Update,\n eventSchema,\n prioritySchema,\n} from './types.ts'\nimport getAccessToken from './utils/getAccessToken.ts'\n\nclass TaskPrepareError extends Error {\n constructor(\n message: string,\n public readonly taskTemplate: string,\n ) {\n super(message)\n }\n}\n\nexport class TaskError extends TaskPrepareError {\n constructor(\n message: string,\n public readonly taskTemplate: string,\n public readonly taskId: string,\n ) {\n super(message, taskTemplate)\n }\n}\n\ntype TaskUpdateHandler<T> = (update: Update<T>) => void\n\ntype Task<T extends keyof RequenceTask.TaskTemplate | (string & {})> =\n AsyncIterable<Update<T>> &\n Pick<Promise<Result<T>>, 'then' | 'catch' | 'finally'> & {\n getTaskId(): Promise<string>\n getTaskUrl(): Promise<string | null>\n abort(reason?: string): Promise<void>\n protect(): Promise<void>\n }\n\nexport function createTask<\n T extends keyof RequenceTask.TaskTemplate | (string & {}),\n>(options: CreateTaskOptions<T>, onUpdate?: TaskUpdateHandler<T>): Task<T> {\n const taskUpdateHandlers = new Set<TaskUpdateHandler<T>>()\n const priority = prioritySchema.parse(options.priority)\n const { apiBaseUrl, token } = getAccessToken(options.accessToken)\n\n const prepareUrl = `${apiBaseUrl}/task/prepare/${options.taskTemplate}`\n\n const payloadPromiseWithResolvers = Promise.withResolvers<{\n taskId: string\n urls?: { watch: string; show: string }\n }>()\n\n let isMonitoring = false\n const startMonitoring = async () => {\n if (isMonitoring) {\n return\n }\n\n isMonitoring = true\n const payload = await payloadPromiseWithResolvers.promise\n\n if (!payload.urls) {\n resultPromiseWithResolvers.resolve({\n input: options.input,\n taskId: payload.taskId,\n taskUrl: '',\n result: null,\n getNodeData(_alias) {\n return null\n },\n getNodeError(_alias) {\n return null\n },\n } as Result<T>)\n return\n }\n\n const taskStorage: {\n input: unknown\n data: Record<string, unknown>\n errors: Record<string, string>\n result: unknown\n } = { input: null, data: {}, errors: {}, result: null }\n\n let since: Date | null = null\n let lastPosition: number | null = null\n let lastResponse: Response | undefined\n // Sequentializes async update application so events apply in arrival order.\n let processing: Promise<void> = Promise.resolve()\n const customFetch: FetchLike = async (url, init) => {\n const response = await fetch(url, init)\n lastResponse = response\n return response\n }\n const eventSource = createEventSource({\n method: 'POST',\n fetch: customFetch,\n url: payload.urls.watch,\n headers: {\n Authorization: `Bearer ${token}`,\n 'Content-Type': 'application/json',\n },\n get body() {\n return JSON.stringify({\n since: since ? since.toISOString() : null,\n lastPosition,\n })\n },\n onScheduleReconnect() {\n // Only advance `since` when we have never received an event yet.\n // Once lastPosition is set it acts as the primary cursor and\n // prevents gaps in the event stream on reconnect.\n if (lastPosition === null) {\n since = new Date()\n }\n },\n async onDisconnect() {\n if (lastResponse?.status === 200) {\n eventSource.close()\n return\n }\n // A gateway status is an unambiguous \"system unavailable\" signal (the\n // watch endpoint never returns these), so surface it as retryable\n // instead of reconnecting forever. Bare connection drops keep the\n // resilient auto-reconnect below.\n if (lastResponse && isUnreachableStatus(lastResponse.status)) {\n eventSource.close()\n resultPromiseWithResolvers.reject(\n new RequenceUnreachableError(lastResponse.status),\n )\n }\n },\n onMessage({ id, event, data }) {\n if (id) {\n lastPosition = Number(id)\n }\n\n const updateResult = eventSchema.safeParse({ event, data })\n\n if (!updateResult.success) {\n eventSource.close()\n resultPromiseWithResolvers.reject(\n new TaskError(\n `Invalid ${event} update received`,\n options.taskTemplate,\n payload.taskId,\n ),\n )\n return\n }\n\n const update = updateResult.data\n\n // The inbound transform is async; queue update application so events\n // still apply strictly in arrival order (taskStart before nodeUpdate\n // before taskEnd), exactly as the previous synchronous handler did.\n processing = processing\n .then(() => applyUpdate(update))\n .catch((error: unknown) => {\n eventSource.close()\n resultPromiseWithResolvers.reject(\n new TaskError(\n error instanceof Error ? error.message : String(error),\n options.taskTemplate,\n payload.taskId,\n ),\n )\n })\n },\n })\n\n async function applyUpdate(\n update: ReturnType<typeof eventSchema.parse>,\n ): Promise<void> {\n switch (update.type) {\n case 'taskStart': {\n taskStorage.input = await inbound(update.input, forbidCallbacks)\n break\n }\n case 'nodeUpdate': {\n if (update.node.alias) {\n taskStorage.data[update.node.alias] = await inbound(\n update.data,\n observeOnlyCallbacks,\n )\n }\n break\n }\n case 'nodeError': {\n if (update.node.alias) {\n taskStorage.errors[update.node.alias] = update.error\n }\n break\n }\n case 'taskEnd': {\n taskStorage.result = await inbound(\n update.result,\n observeOnlyCallbacks,\n )\n eventSource.close()\n if (update.requireAck) {\n ackTask({\n taskId: payload.taskId,\n accessToken: options.accessToken,\n }).catch(() => {})\n }\n break\n }\n case 'taskError':\n case 'taskAborted': {\n eventSource.close()\n if (update.requireAck) {\n ackTask({\n taskId: payload.taskId,\n accessToken: options.accessToken,\n }).catch(() => {})\n }\n break\n }\n }\n\n const context: Update<unknown>['context'] = {\n taskId: update.taskId,\n input: taskStorage.input,\n getNodeData(alias) {\n return taskStorage.data[alias] ?? null\n },\n getNodeError(alias) {\n return taskStorage.errors[alias] ?? null\n },\n result: taskStorage.result,\n }\n\n const contextUpdate = {\n ...update,\n context,\n }\n\n if (contextUpdate.type === 'taskEnd') {\n resultPromiseWithResolvers.resolve({\n ...context,\n taskUrl: payload.urls?.show ?? '',\n } as Result<T>)\n }\n\n if (\n contextUpdate.type === 'taskError' ||\n contextUpdate.type === 'taskAborted'\n ) {\n resultPromiseWithResolvers.reject(\n new TaskError(\n contextUpdate.reason ??\n (contextUpdate.type === 'taskError'\n ? 'Task failed'\n : 'Task aborted'),\n options.taskTemplate,\n payload.taskId,\n ),\n )\n }\n\n taskUpdateHandlers.forEach((handler) =>\n handler(contextUpdate as Update<T>),\n )\n }\n }\n\n const taskIdPromiseWithResolvers = Promise.withResolvers<string>()\n // Internal, prepared-phase id used by abort()/protect() (and the monitoring\n // setup) while the task is still being uploaded/finalized. The *public*\n // getTaskId() promise (taskIdPromiseWithResolvers) is only resolved once\n // finalize succeeds, so a caller never receives an id for a task that failed\n // to finalize — and therefore never one for a task the server discarded.\n const preparedTaskIdPromiseWithResolvers = Promise.withResolvers<string>()\n preparedTaskIdPromiseWithResolvers.promise.catch(() => {})\n const taskUrlPromiseWithResolvers = Promise.withResolvers<string | null>()\n const resultPromiseWithResolvers = Promise.withResolvers<Result<T>>()\n\n let rejectTaskIdPromise = false\n let rejectTaskUrlPromise = false\n\n ;(async () => {\n try {\n const prepareResponse = await reachableFetch(prepareUrl, {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${token}`,\n },\n })\n\n if (!prepareResponse.ok) {\n const error = new TaskPrepareError(\n await prepareResponse.text(),\n options.taskTemplate,\n )\n // prepare failed: no id will ever exist, so unblock abort()/protect().\n preparedTaskIdPromiseWithResolvers.reject(error)\n if (rejectTaskIdPromise) {\n taskIdPromiseWithResolvers.reject(error)\n }\n if (rejectTaskUrlPromise) {\n taskUrlPromiseWithResolvers.reject(error)\n }\n if (isMonitoring) {\n resultPromiseWithResolvers.reject(error)\n }\n return\n }\n\n const prepareData = (await prepareResponse.json()) as {\n taskId: string\n finalizeUrl: string\n branch: string\n fileUrls?: { uploadUrl: string; streamUrl: string }\n limits?: { maxPayloadSize: number; maxFileSize: number }\n }\n\n if (prepareData.branch !== 'live' && !options.suppressBranchWarning) {\n console.warn(\n chalk.hex('#eab308')(\n 'task is executed in',\n chalk.bold(prepareData.branch),\n 'branch',\n ),\n )\n }\n\n preparedTaskIdPromiseWithResolvers.resolve(prepareData.taskId)\n\n // Surfaces a failed background stream-body upload of the task input.\n const streamDone = Promise.withResolvers<void>()\n // Guard against an unhandled rejection before we await streamDone below.\n streamDone.promise.catch(() => {})\n\n let mappedParams: unknown\n try {\n const { value, done } = await withRequenceStreams(() =>\n transformer.outbound(\n {\n name: options.name,\n input: options.input,\n priority,\n requireAck: options.requireAck ?? false,\n },\n {\n fetch: globalThis.fetch,\n uploadUrl: prepareData.fileUrls?.uploadUrl,\n streamUrl: prepareData.fileUrls?.streamUrl,\n maxPayloadSize: prepareData.limits?.maxPayloadSize,\n maxFileSize: prepareData.limits?.maxFileSize,\n },\n ),\n )\n mappedParams = value\n done.then(\n () => streamDone.resolve(),\n (error: unknown) =>\n streamDone.reject(\n error instanceof Error ? error : new Error(String(error)),\n ),\n )\n } catch (error) {\n // A failed input upload now fails hard (was silently nulled).\n const taskError = new TaskError(\n error instanceof Error ? error.message : String(error),\n options.taskTemplate,\n prepareData.taskId,\n )\n if (rejectTaskIdPromise) {\n taskIdPromiseWithResolvers.reject(taskError)\n }\n if (rejectTaskUrlPromise) {\n taskUrlPromiseWithResolvers.reject(taskError)\n }\n if (isMonitoring) {\n resultPromiseWithResolvers.reject(taskError)\n }\n return\n }\n\n const finalizeResponse = await reachableFetch(prepareData.finalizeUrl, {\n method: 'POST',\n body: JSON.stringify(mappedParams),\n headers: {\n Authorization: `Bearer ${token}`,\n 'Content-Type': 'application/json',\n },\n })\n\n if (!finalizeResponse.ok) {\n const error = new TaskError(\n await finalizeResponse.text(),\n options.taskTemplate,\n prepareData.taskId,\n )\n if (rejectTaskIdPromise) {\n taskIdPromiseWithResolvers.reject(error)\n }\n if (rejectTaskUrlPromise) {\n taskUrlPromiseWithResolvers.reject(error)\n }\n if (isMonitoring) {\n resultPromiseWithResolvers.reject(error)\n }\n return\n }\n\n // Ensure the background input uploads actually completed. A failed upload\n // means the task's input is incomplete, so fail the task rather than report\n // success with a dangling reference.\n try {\n await streamDone.promise\n } catch (error) {\n const taskError = new TaskError(\n error instanceof Error ? error.message : String(error),\n options.taskTemplate,\n prepareData.taskId,\n )\n if (rejectTaskIdPromise) {\n taskIdPromiseWithResolvers.reject(taskError)\n }\n if (rejectTaskUrlPromise) {\n taskUrlPromiseWithResolvers.reject(taskError)\n }\n if (isMonitoring) {\n resultPromiseWithResolvers.reject(taskError)\n }\n return\n }\n\n const payload = (await finalizeResponse.json()) as {\n taskId: string\n urls?: {\n show: string\n watch: string\n }\n }\n // Finalize succeeded: only now is the id safe to hand out publicly.\n taskIdPromiseWithResolvers.resolve(prepareData.taskId)\n taskUrlPromiseWithResolvers.resolve(payload.urls?.show ?? null)\n payloadPromiseWithResolvers.resolve(payload)\n if (onUpdate) {\n taskUpdateHandlers.add(onUpdate)\n startMonitoring()\n }\n } catch (error) {\n // Routes a thrown error (e.g. RequenceUnreachableError from a failed\n // prepare/finalize during maintenance) to the same rejection paths the\n // inline `!ok` branches use. Rejecting an already-settled promise is a\n // no-op, so this is safe regardless of how far the flow progressed.\n // Unblock abort()/protect() if prepare never resolved the id (no-op once\n // it has); the public getTaskId() rejects only when it was requested.\n preparedTaskIdPromiseWithResolvers.reject(error)\n if (rejectTaskIdPromise) {\n taskIdPromiseWithResolvers.reject(error)\n }\n if (rejectTaskUrlPromise) {\n taskUrlPromiseWithResolvers.reject(error)\n }\n if (isMonitoring) {\n resultPromiseWithResolvers.reject(error)\n }\n }\n })()\n\n const asyncIterable = callbackToAsyncIterable<Update<T>>(\n (push, _fail, done) => {\n const handleUpdate = (update: Update<T>) => {\n push(update)\n if (\n update.type === 'taskEnd' ||\n update.type === 'taskError' ||\n update.type === 'taskAborted'\n ) {\n done()\n taskUpdateHandlers.delete(handleUpdate)\n }\n }\n taskUpdateHandlers.add(handleUpdate)\n\n startMonitoring()\n\n return () => {\n taskUpdateHandlers.delete(handleUpdate)\n }\n },\n )\n\n const methods = {\n get catch() {\n startMonitoring()\n return resultPromiseWithResolvers.promise.catch.bind(\n resultPromiseWithResolvers.promise,\n )\n },\n get finally() {\n startMonitoring()\n return resultPromiseWithResolvers.promise.finally.bind(\n resultPromiseWithResolvers.promise,\n )\n },\n get then() {\n startMonitoring()\n return resultPromiseWithResolvers.promise.then.bind(\n resultPromiseWithResolvers.promise,\n )\n },\n async getTaskId() {\n rejectTaskIdPromise = true\n return taskIdPromiseWithResolvers.promise\n },\n async getTaskUrl() {\n rejectTaskUrlPromise = true\n return taskUrlPromiseWithResolvers.promise\n },\n async abort(reason?: string) {\n const taskId = await preparedTaskIdPromiseWithResolvers.promise\n await abortTask({\n taskId,\n accessToken: options.accessToken,\n reason,\n })\n },\n async protect() {\n const taskId = await preparedTaskIdPromiseWithResolvers.promise\n await protectTask({\n taskId,\n accessToken: options.accessToken,\n })\n },\n }\n\n return Object.defineProperties(\n asyncIterable,\n Object.getOwnPropertyDescriptors(methods),\n ) as any\n}\n",
|
|
16
21
|
"import { readFileSync } from 'node:fs'\n\nimport { deobfuscate } from '@requence/helpers'\n\nexport default function getAccessToken(accessToken?: string) {\n let token =\n accessToken ??\n process.env.REQUENCE_TASK_ACCESS_TOKEN ??\n process.env.REQUENCE_ACCESS_TOKEN\n\n if (!token) {\n const pkgJson = JSON.parse(readFileSync('package.json', 'utf-8'))\n token = pkgJson.requence?.task?.accessToken ?? pkgJson.requence?.accessToken\n }\n\n if (!token) {\n throw new Error(\n 'No access token found\\nYou can provide the access token as argument to createTask,\\nas environment variable REQUENCE_ACCESS_TOKEN or\\nin your package.json in requence.accessToken',\n )\n }\n\n const parts = deobfuscate(token)\n if (parts.length < 2 || parts[0] !== 'api') {\n throw new Error('Invalid access token')\n }\n\n return {\n token: parts[1],\n apiBaseUrl: parts[2],\n }\n}\n",
|
|
17
|
-
"import getAccessToken from './utils/getAccessToken.ts'\n\nclass TaskAbortError extends Error {\n constructor(\n message: string,\n public readonly taskId: string,\n ) {\n super(message)\n }\n}\n\ninterface AbortTaskOptions {\n accessToken?: string\n reason?: string\n taskId: string\n}\nexport async function abortTask(options: AbortTaskOptions) {\n const { apiBaseUrl, token } = getAccessToken(options.accessToken)\n\n const abortUrl = `${apiBaseUrl}/task/abort/${options.taskId}`\n\n const response = await
|
|
18
|
-
"import getAccessToken from './utils/getAccessToken.ts'\n\ninterface AckTaskOptions {\n taskId: string\n accessToken?: string\n}\n\nexport async function ackTask(options: AckTaskOptions) {\n const { apiBaseUrl, token } = getAccessToken(options.accessToken)\n\n const response = await
|
|
19
|
-
"import
|
|
22
|
+
"import { reachableFetch } from './errors.ts'\nimport getAccessToken from './utils/getAccessToken.ts'\n\nclass TaskAbortError extends Error {\n constructor(\n message: string,\n public readonly taskId: string,\n ) {\n super(message)\n }\n}\n\ninterface AbortTaskOptions {\n accessToken?: string\n reason?: string\n taskId: string\n}\nexport async function abortTask(options: AbortTaskOptions) {\n const { apiBaseUrl, token } = getAccessToken(options.accessToken)\n\n const abortUrl = `${apiBaseUrl}/task/abort/${options.taskId}`\n\n const response = await reachableFetch(abortUrl, {\n method: 'POST',\n body: options.reason ?? '',\n headers: {\n Authorization: `Bearer ${token}`,\n },\n })\n\n if (!response.ok) {\n throw new TaskAbortError(await response.text(), options.taskId)\n }\n}\n",
|
|
23
|
+
"import { reachableFetch } from './errors.ts'\nimport getAccessToken from './utils/getAccessToken.ts'\n\ninterface AckTaskOptions {\n taskId: string\n accessToken?: string\n}\n\nexport async function ackTask(options: AckTaskOptions) {\n const { apiBaseUrl, token } = getAccessToken(options.accessToken)\n\n const response = await reachableFetch(\n `${apiBaseUrl}/task/ack/${options.taskId}`,\n {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${token}`,\n },\n },\n )\n\n if (!response.ok) {\n throw new Error(\n `Failed to acknowledge task delivery: ${await response.text()}`,\n )\n }\n}\n",
|
|
24
|
+
"import type { CallbackObject } from '@requence/helpers'\nimport { isCallbackObject } from '@requence/helpers'\nimport type { ValueHandler } from '@requence/transformer'\n\nimport type {\n CallbackEgressContext,\n CallbackIngressContext,\n} from './context.ts'\n\ntype ReconstructedCallback = (arg: unknown) => void\n\n/**\n * Bidirectional handler owning the `RequenceCallback` reference tag.\n *\n * Egress serializes any function into a full callback reference: identity\n * (`callbackId`/`sourceId`) comes from `ctx.onCallback`, the emission from\n * `ctx.outputName`, and the position from the walk's `path` — the reference's\n * public identity (the operator validates invocation args against the output\n * schema at `propertyPath`). A boundary that cannot register callbacks (no\n * `ctx.onCallback`) fails loud.\n *\n * Ingress reconstructs the reference into a callable function that dispatches\n * through `ctx.onCallbackInvoke` — with no `onCallbackInvoke` provided,\n * invoking the callback is a no-op; callers that forbid callbacks pass a\n * throwing implementation.\n */\nexport function createRequenceCallbackHandler(): ValueHandler<\n ReconstructedCallback,\n CallbackObject,\n CallbackEgressContext,\n CallbackIngressContext\n> {\n return {\n tag: 'RequenceCallback',\n\n canHandle: (value) => typeof value === 'function',\n\n serialize(callback, ctx, path) {\n if (!ctx.onCallback) {\n // handler throws are not path-wrapped by the transformer — carry the\n // position in the message ourselves\n throw new Error(\n `functions are not serializable on this boundary (no ctx.onCallback) at path \"${path.join('.')}\"`,\n )\n }\n return {\n ...ctx.onCallback(callback),\n outputName: ctx.outputName ?? null,\n propertyPath: [...path],\n __REQUENCE_type: 'RequenceCallback',\n }\n },\n\n isReference: (value): value is CallbackObject => isCallbackObject(value),\n\n deserialize(ref, ctx) {\n return (arg: unknown) => {\n ctx.onCallbackInvoke?.({ ...(ref as CallbackObject), arg })\n }\n },\n }\n}\n",
|
|
25
|
+
"/** A position in the message tree, as visited by the walk. */\nexport type TransformPath = ReadonlyArray<string | number>\n\n/** Render a path as a readable dotted/indexed accessor, e.g. `data.items[2].file`. */\nexport function formatPath(path: TransformPath): string {\n if (path.length === 0) {\n return '<root>'\n }\n let out = ''\n for (const segment of path) {\n out +=\n typeof segment === 'number'\n ? `[${segment}]`\n : out\n ? `.${segment}`\n : segment\n }\n return out\n}\n\n/**\n * Thrown when the transformer cannot fully resolve a message: a complex value\n * on egress that no registered `ValueHandler` claims, or a reference tag on\n * ingress that no handler owns. The message names the offending type/tag and\n * its path so the failure is diagnosable rather than a silent pass-through.\n */\nexport class TransformError extends Error {\n readonly path: TransformPath\n readonly detail: string\n\n constructor(detail: string, path: TransformPath) {\n super(`${detail} at ${formatPath(path)}`)\n this.name = 'TransformError'\n this.path = path\n this.detail = detail\n }\n}\n",
|
|
26
|
+
"/** The reference marker key. A handler's `tag` is mirrored here on the wire. */\nexport const REFERENCE_TAG_KEY = '__REQUENCE_type'\n\n/**\n * A plain data object: an object literal or a null-prototype object — never a\n * class instance (`Blob`, `RequenceFile`, …), whose prototype chain differs.\n * This is what lets the walk tell traversable structure apart from an opaque\n * complex value a handler must own.\n */\nexport function isPlainObject(\n value: unknown,\n): value is Record<string, unknown> {\n if (value === null || typeof value !== 'object') {\n return false\n }\n const proto = Object.getPrototypeOf(value)\n return proto === null || proto === Object.prototype\n}\n\n/**\n * A value that is neither a JSON primitive nor traversable structure — a class\n * instance, function, symbol, or bigint. On egress every such value must be\n * claimed by a handler; anything left over is unresolvable.\n */\nexport function isComplexValue(value: unknown): boolean {\n if (value === null) {\n return false\n }\n const type = typeof value\n if (type === 'object') {\n return !Array.isArray(value) && !isPlainObject(value)\n }\n return type === 'function' || type === 'symbol' || type === 'bigint'\n}\n\n/** Does a plain object carry the reference marker key? */\nexport function hasReferenceTag(value: unknown): boolean {\n return isPlainObject(value) && REFERENCE_TAG_KEY in value\n}\n",
|
|
27
|
+
"import type { TransformPath } from './errors.ts'\nimport { TransformError } from './errors.ts'\nimport { isPlainObject } from './guards.ts'\n\n/**\n * A visitor's verdict for one (already child-recursed) node:\n * - `recurse` — keep the node as-is (its children are already transformed).\n * - `replace` — the node was transformed; the walk re-processes the replacement\n * so a handler output that still embeds complex values / references resolves\n * to a fixpoint.\n */\nexport type WalkVerdict =\n | { readonly kind: 'recurse' }\n | { readonly kind: 'replace'; readonly value: unknown }\n\nexport const recurse: WalkVerdict = { kind: 'recurse' }\nexport const replaceWith = (value: unknown): WalkVerdict => ({\n kind: 'replace',\n value,\n})\n\nexport type WalkVisitor = (\n value: unknown,\n path: TransformPath,\n) => WalkVerdict | Promise<WalkVerdict>\n\n/**\n * Guard against a handler that returns a value it also claims: without a cap\n * the fixpoint re-walk would spin forever. Chosen well above any legitimate\n * nesting depth so it only ever fires on a genuine non-terminating handler.\n */\nconst MAX_REPLACE_DEPTH = 100\n\n/**\n * Generic async tree-walk — successor to `packages/helpers/src/utils/mapData`.\n *\n * Post-order: a node's array/record children are transformed first, then the\n * node itself is offered to `visit`. This makes both directions symmetric — a\n * serialize output is re-walked so nested complex values are offloaded, and a\n * reference's nested references are reconstructed *before* its handler\n * deserializes it. Concrete policy (what is handled, what throws) lives in the\n * visitor, keeping this purely structural.\n *\n * Identity dedupe (the same instance offloaded once) is owned by the visitor's\n * own memo; because the visitor's synchronous prefix runs before the walk\n * awaits, concurrent siblings sharing an instance can't race the memo.\n */\nexport async function walk(\n root: unknown,\n visit: WalkVisitor,\n): Promise<unknown> {\n const go = async (\n value: unknown,\n path: TransformPath,\n replaceDepth: number,\n ): Promise<unknown> => {\n let node = value\n\n if (Array.isArray(node)) {\n node = await Promise.all(\n node.map((item, index) => go(item, [...path, index], 0)),\n )\n } else if (isPlainObject(node)) {\n const entries = await Promise.all(\n Object.entries(node).map(\n async ([key, item]) =>\n [key, await go(item, [...path, key], 0)] as const,\n ),\n )\n node = Object.fromEntries(entries)\n }\n\n const verdict = await visit(node, path)\n\n if (verdict.kind === 'replace') {\n if (replaceDepth >= MAX_REPLACE_DEPTH) {\n throw new TransformError(\n 'transform did not reach a fixpoint (a handler keeps producing handleable output)',\n path,\n )\n }\n return go(verdict.value, path, replaceDepth + 1)\n }\n\n return node\n }\n\n return go(root, [], 0)\n}\n",
|
|
28
|
+
"import type { TransformContext } from './context.ts'\nimport { TransformError } from './errors.ts'\nimport { hasReferenceTag, isComplexValue, isPlainObject } from './guards.ts'\nimport type { MessageHandler } from './messageHandler.ts'\nimport type { ValueHandler } from './valueHandler.ts'\nimport type { WalkVisitor } from './walk.ts'\nimport { recurse, replaceWith, walk } from './walk.ts'\n\n/**\n * A value handler paired with an optional message handler that produces the\n * same reference tag — e.g. the claim-check, whose egress is a message-level\n * wrap and whose ingress is an ordinary value handler. Composing the pair in\n * one `withHandler` call keeps the two halves together.\n */\nexport interface HandlerBundle<\n ValueEgress extends object = object,\n ValueIngress extends object = object,\n MessageEgress extends object = object,\n> {\n valueHandler?: ValueHandler<any, any, ValueEgress, ValueIngress>\n messageHandler?: MessageHandler<MessageEgress>\n}\n\n/**\n * An immutable, composed transformer instance. There is no global registry:\n * each runtime builds its own instance from exactly the handlers it needs, and\n * the ctx types of `outbound`/`inbound` accumulate the composed handlers'\n * declared capabilities — the compiler tells a runtime which transport it must\n * supply.\n *\n * `withHandler` returns a NEW transformer; instances are never mutated, so a\n * base composition can be safely extended per call site.\n */\nexport interface Transformer<\n OutCtx extends object = object,\n InCtx extends object = object,\n> {\n /** Compose a value handler. */\n withHandler<VOut extends object, VIn extends object>(\n handler: ValueHandler<any, any, VOut, VIn>,\n ): Transformer<OutCtx & VOut, InCtx & VIn>\n /** Compose a bundle: a value handler and/or a paired message handler. */\n withHandler<\n VOut extends object = object,\n VIn extends object = object,\n MOut extends object = object,\n >(\n handler: HandlerBundle<VOut, VIn, MOut>,\n ): Transformer<OutCtx & VOut & MOut, InCtx & VIn>\n\n /**\n * Egress: complex → serializable. Value-walk (first matching `ValueHandler`\n * serializes each complex value; its output is re-walked to a fixpoint),\n * then message-wrap (every `MessageHandler.wrapOutbound`, in composition\n * order; a record body must keep its top-level keys — asserted after each\n * handler). A complex value no handler owns throws a path-annotated\n * `TransformError`.\n */\n outbound(value: unknown, ctx: TransformContext & OutCtx): Promise<unknown>\n\n /**\n * Ingress: serializable → complex. Value-walk only — there is no\n * message-level inbound hook (message-handler references are ordinary\n * references, owned by a `ValueHandler`, so they are reconstructed wherever\n * they appear). Each reference is routed by `isReference` to its handler's\n * `deserialize`; output is re-walked to a fixpoint. A reference tag no\n * handler owns throws a path-annotated `TransformError`.\n */\n inbound(value: unknown, ctx: TransformContext & InCtx): Promise<unknown>\n}\n\n/** Create an empty transformer to compose handlers onto. */\nexport function createTransformer(): Transformer {\n return build([], [])\n}\n\nfunction build(\n valueHandlers: readonly ValueHandler<any, any, any, any>[],\n messageHandlers: readonly MessageHandler<any>[],\n): Transformer<any, any> {\n const transformer: Transformer<any, any> = {\n withHandler(\n handler: ValueHandler<any, any, any, any> | HandlerBundle<any, any, any>,\n ) {\n const bundle: HandlerBundle<any, any, any> =\n 'tag' in handler ? { valueHandler: handler } : handler\n if (!bundle.valueHandler && !bundle.messageHandler) {\n throw new Error(\n 'withHandler: bundle provides neither a valueHandler nor a messageHandler',\n )\n }\n if (bundle.valueHandler) {\n // Two handlers sharing a tag is a wiring bug — the tag is the\n // on-the-wire discriminator, so a duplicate makes ingress routing\n // ambiguous. Caught here, at composition, rather than at transform time.\n const { tag } = bundle.valueHandler\n if (valueHandlers.some((existing) => existing.tag === tag)) {\n throw new Error(\n `withHandler: a ValueHandler with tag \"${tag}\" is already composed`,\n )\n }\n }\n return build(\n bundle.valueHandler\n ? [...valueHandlers, bundle.valueHandler]\n : valueHandlers,\n bundle.messageHandler\n ? [...messageHandlers, bundle.messageHandler]\n : messageHandlers,\n )\n },\n\n async outbound(value: unknown, ctx: TransformContext): Promise<unknown> {\n // Dedupe by instance identity: the same instance at multiple paths is\n // serialized once and every position gets the same reference. The memo\n // is set synchronously (before the first `await`) so concurrent siblings\n // can't race.\n const seen = new Map<object, Promise<unknown>>()\n\n const visit: WalkVisitor = (node, path) => {\n if (!isComplexValue(node)) {\n return recurse\n }\n\n const handler = valueHandlers.find((candidate) =>\n candidate.canHandle(node),\n )\n if (!handler) {\n // JSON.stringify parity: a value that declares its own JSON form via\n // `toJSON` (Date, Buffer, …) is not unresolvable — replace it with\n // that form and re-walk. Handlers match first, so a composed type\n // never falls through to its own toJSON here. Values with neither an\n // owner nor a toJSON stay a loud error: they would otherwise\n // silently collapse.\n const withToJSON = node as { toJSON?: () => unknown }\n if (\n typeof node === 'object' &&\n typeof withToJSON.toJSON === 'function'\n ) {\n return replaceWith(withToJSON.toJSON())\n }\n const label =\n node?.constructor?.name ??\n (typeof node === 'function' ? 'function' : typeof node)\n throw new TransformError(\n `no composed ValueHandler for complex value of type ${label}`,\n path,\n )\n }\n\n if (typeof node === 'object' && node !== null) {\n // The memo only ever caches object-identity values, whose references\n // are path-independent (file/stream) — the cached branch replays the\n // first-seen path. Non-object complex values (functions) bypass it,\n // so a path-bearing handler sees the correct path per occurrence. A\n // future path-bearing *object* handler must not rely on the memo.\n const cached = seen.get(node)\n if (cached) {\n return cached.then(replaceWith)\n }\n const pending = Promise.resolve(handler.serialize(node, ctx, path))\n seen.set(node, pending)\n return pending.then(replaceWith)\n }\n\n return Promise.resolve(handler.serialize(node, ctx, path)).then(\n replaceWith,\n )\n }\n\n const valueTransformed = await walk(value, visit)\n\n let body = valueTransformed\n for (const [index, handler] of messageHandlers.entries()) {\n const wrapped = await handler.wrapOutbound(body, ctx)\n assertTopLevelKeysPreserved(body, wrapped, index)\n body = wrapped\n }\n return body\n },\n\n async inbound(value: unknown, ctx: TransformContext): Promise<unknown> {\n const visit: WalkVisitor = (node, path) => {\n if (!isPlainObject(node)) {\n return recurse\n }\n\n const handler = valueHandlers.find((candidate) =>\n candidate.isReference(node),\n )\n if (handler) {\n // Passthrough handlers own the tag but keep the reference verbatim\n // (kept as-is, not re-walked — identity replacement would never\n // reach the fixpoint).\n if (handler.passthrough) {\n return recurse\n }\n return Promise.resolve(handler.deserialize(node, ctx, path)).then(\n replaceWith,\n )\n }\n\n if (hasReferenceTag(node)) {\n const tag = (node as Record<string, unknown>).__REQUENCE_type\n throw new TransformError(\n `no composed ValueHandler owns reference tag ${JSON.stringify(tag)}`,\n path,\n )\n }\n\n return recurse\n }\n\n return walk(value, visit)\n },\n }\n\n return transformer\n}\n\n/**\n * The `MessageHandler` shape constraint: a record body keeps its top-level\n * keys (values under them may become references, the record itself never\n * does), so forwarding hops that shallow-merge record bodies always see real\n * keys. A non-record body may be replaced wholesale.\n */\nfunction assertTopLevelKeysPreserved(\n body: unknown,\n wrapped: unknown,\n handlerIndex: number,\n): void {\n if (!isPlainObject(body)) {\n return\n }\n const label = `MessageHandler #${handlerIndex}`\n if (!isPlainObject(wrapped)) {\n throw new TransformError(\n `${label} replaced a record body wholesale — wrapOutbound must preserve a record's top-level keys`,\n [],\n )\n }\n const before = Object.keys(body)\n const after = new Set(Object.keys(wrapped))\n const removed = before.filter((key) => !after.has(key))\n const added = [...after].filter((key) => !before.includes(key))\n if (removed.length > 0 || added.length > 0) {\n throw new TransformError(\n `${label} changed a record body's top-level keys (removed: [${removed.join(\n ', ',\n )}], added: [${added.join(', ')}]) — wrapOutbound must preserve them`,\n [],\n )\n }\n}\n",
|
|
29
|
+
"import type { CallbackIngressContext } from '@requence/callbacks'\nimport { createRequenceCallbackHandler } from '@requence/callbacks'\nimport {\n createClaimCheckHandler,\n createRequenceFileHandler,\n createRequenceStreamHandler,\n} from '@requence/files'\nimport { createTransformer } from '@requence/transformer'\n\n/**\n * The task SDK's composed transformer and its single inbound boundary\n * (issue 07): every reference arriving from the API or the task EventSource\n * rehydrates through `inbound`, so the SDK's ingress cancellation/timeout\n * policy lives here, once — none is applied today, and adding one later is a\n * one-line change. Egress (the task input in `createTask`) uses the same\n * instance via `transformer.outbound`.\n */\nexport const transformer = createTransformer()\n .withHandler(createRequenceFileHandler())\n .withHandler(createRequenceStreamHandler())\n .withHandler(createRequenceCallbackHandler())\n .withHandler(createClaimCheckHandler())\n\nexport const inbound = (\n data: unknown,\n opts: CallbackIngressContext = {},\n): Promise<unknown> =>\n transformer.inbound(data, {\n fetch: globalThis.fetch,\n onCallbackInvoke: opts.onCallbackInvoke,\n })\n\n/** Task inputs echo back to their creator; a callback there is a bug. */\nexport const forbidCallbacks = {\n onCallbackInvoke: () => {\n throw new Error('input may not have callbacks')\n },\n}\n\n/**\n * Watched node data and results are read-only observations: a callback in\n * them may be perfectly legitimate (service-to-service), but the task client\n * has no transport to carry an invocation back. Reconstruct the value so the\n * rest of the payload stays usable — invoking the callback throws instead of\n * silently doing nothing.\n */\nexport const observeOnlyCallbacks = {\n onCallbackInvoke: () => {\n throw new Error(\n 'callbacks in watched data cannot be invoked from a task client',\n )\n },\n}\n",
|
|
30
|
+
"import { reachableFetch } from './errors.ts'\nimport getAccessToken from './utils/getAccessToken.ts'\n\nclass TaskProtectError extends Error {\n constructor(\n message: string,\n public readonly taskId: string,\n ) {\n super(message)\n }\n}\n\ninterface ProtectTaskOptions {\n accessToken?: string\n taskId: string\n}\nexport async function protectTask(options: ProtectTaskOptions) {\n const { apiBaseUrl, token } = getAccessToken(options.accessToken)\n\n const protectUrl = `${apiBaseUrl}/task/protect/${options.taskId}`\n\n const response = await reachableFetch(protectUrl, {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${token}`,\n },\n })\n\n if (!response.ok) {\n throw new TaskProtectError(await response.text(), options.taskId)\n }\n}\n",
|
|
20
31
|
"import type { Prettify } from '@requence/helpers'\nimport { z } from 'zod/v4'\n\ntype IfUnknown<T, Then, Else> = unknown extends T\n ? T extends unknown\n ? Then\n : Else\n : Else\n\ntype IfNull<T, Then, Else> = T extends null\n ? null extends T\n ? Then\n : Else\n : Else\n\nexport type CreateTaskOptions<T> = {\n taskTemplate: T\n name?: string | null\n priority?: number\n accessToken?: string\n suppressBranchWarning?: boolean\n requireAck?: boolean\n} & IfNull<\n Input<T>,\n { input?: null },\n IfUnknown<Input<T>, { input?: any }, { input: Input<T> }>\n>\n\ntype Input<T> = T extends keyof RequenceTask.TaskTemplate\n ? RequenceTask.TaskTemplate[T]['input']\n : unknown\ntype Data<T> = T extends keyof RequenceTask.TaskTemplate\n ? Prettify<RequenceTask.TaskTemplate[T]['results']>\n : unknown\ntype NamedData<T, A> = T extends keyof RequenceTask.TaskTemplate\n ? A extends keyof RequenceTask.TaskTemplate[T]['namedResults']\n ? Prettify<RequenceTask.TaskTemplate[T]['namedResults'][A]>\n : unknown\n : unknown\ntype Alias<T> = T extends keyof RequenceTask.TaskTemplate\n ? keyof RequenceTask.TaskTemplate[T]['namedResults']\n : string\n\nexport interface Result<T> {\n input: Input<T>\n result: Data<T>\n taskId: string\n taskUrl: string\n getNodeData<A extends Alias<T>>(alias: A): NamedData<T, A>\n getNodeError(alias: Alias<T>): string | null\n}\n\ntype Context<T> = Omit<Result<T>, 'taskUrl'>\n\nconst nodeInfoSchema = z.object({\n id: z.uuid(),\n type: z.literal(['service', 'logic', 'or', 'reference']),\n alias: z.string().optional(),\n})\n\nconst baseUpdate = z.object({\n timestamp: z.coerce.date(),\n taskId: z.uuid(),\n name: z.string(),\n updateId: z.uuid(),\n})\n\nconst taskStartUpdateSchema = baseUpdate.extend({\n type: z.literal('taskStart'),\n input: z.unknown(),\n rootTaskId: z.uuid().nullable().default(null),\n})\n\nconst taskErrorUpdateSchema = baseUpdate.extend({\n type: z.literal('taskError'),\n reason: z.string().optional(),\n requireAck: z.boolean().optional(),\n})\n\nconst taskAbortUpdateSchema = baseUpdate.extend({\n type: z.literal('taskAborted'),\n reason: z.string().optional(),\n requireAck: z.boolean().optional(),\n})\n\nconst taskEndUpdateSchema = baseUpdate.extend({\n type: z.literal('taskEnd'),\n result: z.record(z.string(), z.any()),\n exit: z.string().nullable(),\n requireAck: z.boolean().optional(),\n})\n\nconst nodeStartUpdateSchema = baseUpdate.extend({\n type: z.literal('nodeStart'),\n node: nodeInfoSchema,\n})\n\nconst nodeUpdateUpdateSchema = baseUpdate.extend({\n type: z.literal('nodeUpdate'),\n node: nodeInfoSchema,\n data: z.unknown(),\n output: z.union([z.null(), z.string()]),\n})\n\nconst nodeErrorUpdateSchema = baseUpdate.extend({\n type: z.literal('nodeError'),\n node: nodeInfoSchema,\n error: z.string(),\n})\n\nconst nodeDeferUpdateSchema = baseUpdate.extend({\n type: z.literal('nodeDefer'),\n node: nodeInfoSchema,\n reason: z.string().optional(),\n})\n\nconst nodeEndUpdateSchema = baseUpdate.extend({\n type: z.literal('nodeEnd'),\n node: nodeInfoSchema,\n})\n\nconst updateSchema = z.discriminatedUnion('type', [\n taskStartUpdateSchema,\n taskErrorUpdateSchema,\n taskAbortUpdateSchema,\n taskEndUpdateSchema,\n nodeStartUpdateSchema,\n nodeUpdateUpdateSchema,\n nodeErrorUpdateSchema,\n nodeDeferUpdateSchema,\n nodeEndUpdateSchema,\n])\n\ntype BaseUpdate = z.infer<typeof updateSchema>\n\nexport type Update<T> = Prettify<\n | (Exclude<BaseUpdate, { type: 'taskEnd' } | { type: 'nodeUpdate' }> & {\n context: Context<Partial<T>>\n })\n | (Extract<BaseUpdate, { type: 'nodeUpdate' }> & {\n context: Context<Partial<T>>\n data: Partial<Data<T>>\n })\n | (Extract<BaseUpdate, { type: 'taskEnd' }> & { context: Context<T> })\n>\n\nexport const eventSchema = z\n .object({ event: z.string(), data: z.string() })\n .transform((event) => ({ type: event.event, ...JSON.parse(event.data) }))\n .pipe(updateSchema)\n\nexport const prioritySchema = z\n .int('priority has to be an integer')\n .min(0, 'min priority is 0')\n .max(4, 'max priority is 4')\n .default(2)\n // map 4-0 to 0-10\n .transform((value) => Math.round(((4 - value) * 10) / 4))\n",
|
|
21
|
-
"import {
|
|
22
|
-
"import {
|
|
32
|
+
"import { callbackToAsyncIterable } from '@requence/helpers'\nimport { type FetchLike, createEventSource } from 'eventsource-client'\n\nimport { ackTask } from './ackTask.ts'\nimport { RequenceUnreachableError, isUnreachableStatus } from './errors.ts'\nimport { forbidCallbacks, inbound, observeOnlyCallbacks } from './ingress.ts'\nimport { type Update, eventSchema } from './types.ts'\nimport getAccessToken from './utils/getAccessToken.ts'\n\ntype WatchUpdate = Update<unknown> & {\n incomplete: boolean\n updateId: string\n rootTaskId: string | null\n}\n\ntype TaskUpdateHandler = (update: WatchUpdate) => void\n\ninterface WatchTasksOptions {\n accessToken?: string\n since: Date\n filter?: {\n only?: Update<unknown>['type'][]\n }\n onUpdate?: TaskUpdateHandler\n onError?: (status: number, reason?: string) => void\n // Invoked when a disconnect is caused by the requence system being\n // unreachable (a 502/503/504 gateway status, e.g. during maintenance). The\n // stream keeps auto-reconnecting; this is a notification, not a terminal\n // error, so callers can surface a \"retry later\" state.\n onUnreachable?: (error: RequenceUnreachableError) => void\n onConnect?: () => void\n onReconnecting?: () => void\n}\n\nexport function watchTasks(options: WatchTasksOptions) {\n const { apiBaseUrl, token } = getAccessToken(options.accessToken)\n const taskUpdateHandlers = new Set<TaskUpdateHandler>()\n\n if (options.onUpdate) {\n taskUpdateHandlers.add(options.onUpdate)\n }\n\n const taskStorage = new Map<\n string,\n {\n input?: unknown\n data: Record<string, unknown>\n errors: Record<string, string>\n result: unknown\n incomplete: boolean\n rootTaskId: string | null\n }\n >()\n\n let startDate = options.since\n let lastPosition: number | null = null\n let lastResponse: Response\n // Sequentializes async update application so events apply in arrival order.\n let processing: Promise<void> = Promise.resolve()\n const customFetch: FetchLike = async (url, init) => {\n const response = await fetch(url, init)\n lastResponse = response\n return response\n }\n\n const eventSource = createEventSource({\n url: new URL(`${apiBaseUrl}/task/watch-all`),\n fetch: customFetch,\n headers: {\n Authorization: `Bearer ${token}`,\n 'Content-Type': 'application/json',\n },\n get body() {\n return JSON.stringify({\n since: startDate.toISOString(),\n lastPosition,\n filter: options.filter,\n })\n },\n method: 'POST',\n onScheduleReconnect() {\n // Do not advance startDate — lastPosition is the cursor now.\n // If we have never received any event, fall back to advancing startDate\n // so we don't replay the entire history on a pre-connect drop.\n if (lastPosition === null) {\n startDate = new Date()\n }\n options.onReconnecting?.()\n },\n onConnect() {\n options.onConnect?.()\n },\n async onDisconnect() {\n if (lastResponse) {\n if (isUnreachableStatus(lastResponse.status)) {\n options.onUnreachable?.(\n new RequenceUnreachableError(lastResponse.status),\n )\n }\n options.onError?.(lastResponse.status, lastResponse.statusText)\n }\n },\n onMessage({ id, event, data }) {\n if (id) {\n lastPosition = Number(id)\n }\n\n const updateResult = eventSchema.safeParse({ event, data })\n\n if (!updateResult.success) {\n eventSource.close()\n throw new Error('invalid update')\n }\n\n const update = updateResult.data\n\n // The inbound transform is async; queue update application so events\n // still apply strictly in arrival order, exactly as the previous\n // synchronous handler did. A failed transform closes the watch.\n processing = processing\n .then(() => applyUpdate(update, id))\n .catch(() => {\n eventSource.close()\n })\n },\n })\n\n async function applyUpdate(\n update: ReturnType<typeof eventSchema.parse>,\n updateId: string | undefined,\n ): Promise<void> {\n if (!taskStorage.has(update.taskId)) {\n taskStorage.set(update.taskId, {\n input: null,\n data: {},\n errors: {},\n result: null,\n incomplete: true,\n rootTaskId: null,\n })\n }\n\n const storageEntry = taskStorage.get(update.taskId)!\n\n switch (update.type) {\n case 'taskStart': {\n storageEntry.input = await inbound(update.input, forbidCallbacks)\n storageEntry.incomplete = false\n storageEntry.rootTaskId = update.rootTaskId\n break\n }\n case 'nodeUpdate': {\n if (update.node.alias) {\n storageEntry.data[update.node.alias] = await inbound(\n update.data,\n observeOnlyCallbacks,\n )\n }\n break\n }\n case 'nodeError': {\n if (update.node.alias) {\n storageEntry.errors[update.node.alias] = update.error\n }\n break\n }\n\n case 'taskEnd': {\n storageEntry.result = await inbound(update.result, observeOnlyCallbacks)\n taskStorage.delete(update.taskId)\n if (update.requireAck) {\n ackTask({\n taskId: update.taskId,\n accessToken: options.accessToken,\n }).catch(() => {})\n }\n break\n }\n case 'taskError':\n case 'taskAborted': {\n taskStorage.delete(update.taskId)\n if (update.requireAck) {\n ackTask({\n taskId: update.taskId,\n accessToken: options.accessToken,\n }).catch(() => {})\n }\n break\n }\n }\n\n const context: Update<unknown>['context'] = {\n taskId: update.taskId,\n input: storageEntry.input,\n getNodeData(alias) {\n return storageEntry.data[alias] ?? null\n },\n getNodeError(alias) {\n return storageEntry.errors[alias] ?? null\n },\n result: storageEntry.result,\n }\n\n const contextUpdate = {\n ...update,\n context,\n updateId,\n incomplete: storageEntry.incomplete,\n rootTaskId: storageEntry.rootTaskId,\n }\n\n taskUpdateHandlers.forEach((handler) =>\n handler(contextUpdate as WatchUpdate),\n )\n }\n\n const asyncIterable = callbackToAsyncIterable<WatchUpdate>((push) => {\n taskUpdateHandlers.add(push)\n return () => {\n taskUpdateHandlers.delete(push)\n }\n })\n\n const stopWatching = () => {\n eventSource.close()\n }\n\n return Object.assign(stopWatching, asyncIterable)\n}\n",
|
|
33
|
+
"import { z } from 'zod/v4'\n\nimport { reachableFetch } from './errors.ts'\nimport { forbidCallbacks, inbound, observeOnlyCallbacks } from './ingress.ts'\nimport type { Update } from './types.ts'\nimport getAccessToken from './utils/getAccessToken.ts'\n\nconst taskSchema = z.object({\n status: z.literal([\n 'SUCCESSFUL',\n 'FAILED',\n 'IDLE',\n 'PENDING',\n 'RUNNING',\n 'STOPPED',\n 'AWAITING_DELIVERY',\n ]),\n statusText: z.string().nullable(),\n input: z.unknown(),\n result: z.unknown(),\n taskTemplate: z.string(),\n name: z.string(),\n nodesData: z.array(z.object({ alias: z.string(), data: z.unknown() })),\n nodesError: z.array(z.object({ alias: z.string(), error: z.string() })),\n branch: z.union([z.literal('live'), z.string()]) as z.ZodType<\n 'live' | (string & {})\n >,\n})\n\ninterface GetTaskOptions {\n accessToken?: string\n taskId: string\n}\n\nexport async function getTask(taskIdOrOptions: string | GetTaskOptions) {\n const taskId =\n typeof taskIdOrOptions === 'string'\n ? taskIdOrOptions\n : taskIdOrOptions.taskId\n const { apiBaseUrl, token } = getAccessToken(\n typeof taskIdOrOptions === 'string'\n ? undefined\n : taskIdOrOptions.accessToken,\n )\n\n const response = await reachableFetch(\n new URL(`${apiBaseUrl}/task/${taskId}`),\n {\n headers: {\n Authorization: `Bearer ${token}`,\n },\n },\n )\n\n if (!response.ok) {\n throw new Error('Task not found')\n }\n\n const taskData = taskSchema.parse(await response.json())\n\n // Rehydrate references up front so the context accessors stay synchronous.\n const [input, result, nodesData] = await Promise.all([\n inbound(taskData.input, forbidCallbacks),\n inbound(taskData.result, observeOnlyCallbacks),\n Promise.all(\n taskData.nodesData.map(async ({ alias, data }) => ({\n alias,\n data: await inbound(data, observeOnlyCallbacks),\n })),\n ),\n ])\n\n const context: Update<unknown>['context'] = {\n taskId,\n input,\n getNodeData(alias) {\n return nodesData.find((d) => d.alias === alias)?.data ?? null\n },\n getNodeError(alias) {\n return taskData.nodesError.find((d) => d.alias === alias)?.error ?? null\n },\n result,\n }\n\n return {\n status: taskData.status,\n statusText: taskData.statusText,\n taskTemplate: taskData.taskTemplate,\n name: taskData.name,\n branch: taskData.branch,\n context,\n }\n}\n",
|
|
23
34
|
"import { createTask } from './createTask.ts'\nimport { getTask } from './getTask.ts'\n\ninterface RecreateTaskOptions {\n taskId: string\n name?: string\n accessToken?: string\n priority?: number\n}\nexport async function recreateTask(\n options: RecreateTaskOptions,\n onUpdate?: Parameters<typeof createTask>[1],\n) {\n const task = await getTask(options.taskId)\n return createTask(\n {\n taskTemplate: task.taskTemplate,\n accessToken: options.accessToken,\n name: options.name ?? task.name,\n priority: options.priority,\n input: task.context.input,\n },\n onUpdate,\n )\n}\n"
|
|
24
35
|
],
|
|
25
|
-
"mappings": "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",
|
|
26
|
-
"debugId": "
|
|
36
|
+
"mappings": "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",
|
|
37
|
+
"debugId": "F96A579BA4EB8E1D64756E2164756E21",
|
|
27
38
|
"names": []
|
|
28
39
|
}
|
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
export * from './utils/matchSchema.ts';
|
|
2
2
|
export * from './utils/obfuscate.ts';
|
|
3
3
|
export * from './utils/clone.ts';
|
|
4
|
-
export * from './utils/createObjectProxy.ts';
|
|
5
4
|
export * from './utils/callbackToAsyncIterator.ts';
|
|
6
5
|
export * from './utils/mapData.ts';
|
|
7
6
|
export * from './utils/guards.ts';
|
|
8
|
-
export * from './utils/
|
|
7
|
+
export * from './utils/fileObject.ts';
|
|
8
|
+
export * from './utils/streamObject.ts';
|
|
9
|
+
export * from './utils/claimCheckObject.ts';
|
|
10
|
+
export * from './utils/variableRef.ts';
|
|
11
|
+
export * from './utils/variableScriptPatterns.ts';
|
|
12
|
+
export * from './utils/isValidMimeType.ts';
|
|
9
13
|
export * from './utils/requenceCallback.ts';
|
|
10
14
|
export * from './utils/types.ts';
|
|
11
15
|
export * from './utils/debounce.ts';
|
|
12
16
|
export * from './utils/obj.ts';
|
|
17
|
+
export * from './utils/amqpHeartbeat.ts';
|
|
18
|
+
export * from './utils/amqpPublishRetry.ts';
|
|
13
19
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../helpers/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA;AACtC,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../helpers/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA;AACtC,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,cAAc,oCAAoC,CAAA;AAClD,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,uBAAuB,CAAA;AACrC,cAAc,yBAAyB,CAAA;AACvC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,wBAAwB,CAAA;AACtC,cAAc,mCAAmC,CAAA;AACjD,cAAc,4BAA4B,CAAA;AAC1C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,kBAAkB,CAAA;AAChC,cAAc,qBAAqB,CAAA;AACnC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,0BAA0B,CAAA;AACxC,cAAc,6BAA6B,CAAA"}
|
|
@@ -24,9 +24,5 @@ export declare function validate<T extends JSONSchema7>(options: {
|
|
|
24
24
|
enforeFileKeywords?: boolean;
|
|
25
25
|
coerceTypes?: boolean;
|
|
26
26
|
removeAdditional?: boolean;
|
|
27
|
-
}):
|
|
28
|
-
[x: string]: {};
|
|
29
|
-
} & {
|
|
30
|
-
[x: string]: {};
|
|
31
|
-
};
|
|
27
|
+
}): unknown;
|
|
32
28
|
//# sourceMappingURL=validate.d.ts.map
|