@async/pipeline 0.1.3

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.
Files changed (82) hide show
  1. package/README.md +68 -0
  2. package/dist/cli.d.ts +3 -0
  3. package/dist/cli.d.ts.map +1 -0
  4. package/dist/cli.js +3 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/core.d.ts +2 -0
  7. package/dist/core.d.ts.map +1 -0
  8. package/dist/core.js +2 -0
  9. package/dist/core.js.map +1 -0
  10. package/dist/index.d.ts +4 -0
  11. package/dist/index.d.ts.map +1 -0
  12. package/dist/index.js +4 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/internal/core/cache.d.ts +47 -0
  15. package/dist/internal/core/cache.d.ts.map +1 -0
  16. package/dist/internal/core/cache.js +81 -0
  17. package/dist/internal/core/cache.js.map +1 -0
  18. package/dist/internal/core/errors.d.ts +7 -0
  19. package/dist/internal/core/errors.d.ts.map +1 -0
  20. package/dist/internal/core/errors.js +14 -0
  21. package/dist/internal/core/errors.js.map +1 -0
  22. package/dist/internal/core/index.d.ts +347 -0
  23. package/dist/internal/core/index.d.ts.map +1 -0
  24. package/dist/internal/core/index.js +584 -0
  25. package/dist/internal/core/index.js.map +1 -0
  26. package/dist/internal/core/runtime.d.ts +111 -0
  27. package/dist/internal/core/runtime.d.ts.map +1 -0
  28. package/dist/internal/core/runtime.js +495 -0
  29. package/dist/internal/core/runtime.js.map +1 -0
  30. package/dist/internal/lima/index.d.ts +15 -0
  31. package/dist/internal/lima/index.d.ts.map +1 -0
  32. package/dist/internal/lima/index.js +65 -0
  33. package/dist/internal/lima/index.js.map +1 -0
  34. package/dist/internal/node/cli.d.ts +3 -0
  35. package/dist/internal/node/cli.d.ts.map +1 -0
  36. package/dist/internal/node/cli.js +410 -0
  37. package/dist/internal/node/cli.js.map +1 -0
  38. package/dist/internal/node/doctor.d.ts +7 -0
  39. package/dist/internal/node/doctor.d.ts.map +1 -0
  40. package/dist/internal/node/doctor.js +21 -0
  41. package/dist/internal/node/doctor.js.map +1 -0
  42. package/dist/internal/node/github.d.ts +48 -0
  43. package/dist/internal/node/github.d.ts.map +1 -0
  44. package/dist/internal/node/github.js +351 -0
  45. package/dist/internal/node/github.js.map +1 -0
  46. package/dist/internal/node/index.d.ts +8 -0
  47. package/dist/internal/node/index.d.ts.map +1 -0
  48. package/dist/internal/node/index.js +8 -0
  49. package/dist/internal/node/index.js.map +1 -0
  50. package/dist/internal/node/loader.d.ts +3 -0
  51. package/dist/internal/node/loader.d.ts.map +1 -0
  52. package/dist/internal/node/loader.js +10 -0
  53. package/dist/internal/node/loader.js.map +1 -0
  54. package/dist/internal/node/runner.d.ts +35 -0
  55. package/dist/internal/node/runner.d.ts.map +1 -0
  56. package/dist/internal/node/runner.js +527 -0
  57. package/dist/internal/node/runner.js.map +1 -0
  58. package/dist/internal/node/sources.d.ts +44 -0
  59. package/dist/internal/node/sources.d.ts.map +1 -0
  60. package/dist/internal/node/sources.js +187 -0
  61. package/dist/internal/node/sources.js.map +1 -0
  62. package/dist/internal/node/store.d.ts +23 -0
  63. package/dist/internal/node/store.d.ts.map +1 -0
  64. package/dist/internal/node/store.js +224 -0
  65. package/dist/internal/node/store.js.map +1 -0
  66. package/dist/internal/node/sync.d.ts +41 -0
  67. package/dist/internal/node/sync.d.ts.map +1 -0
  68. package/dist/internal/node/sync.js +332 -0
  69. package/dist/internal/node/sync.js.map +1 -0
  70. package/dist/lima.d.ts +2 -0
  71. package/dist/lima.d.ts.map +1 -0
  72. package/dist/lima.js +2 -0
  73. package/dist/lima.js.map +1 -0
  74. package/dist/node.d.ts +2 -0
  75. package/dist/node.d.ts.map +1 -0
  76. package/dist/node.js +2 -0
  77. package/dist/node.js.map +1 -0
  78. package/dist/runtime.d.ts +2 -0
  79. package/dist/runtime.d.ts.map +1 -0
  80. package/dist/runtime.js +2 -0
  81. package/dist/runtime.js.map +1 -0
  82. package/package.json +51 -0
@@ -0,0 +1,111 @@
1
+ import { type CacheDirective, type CacheRef, type CacheRegistryDefinition } from "./cache.js";
2
+ export { defineCache, fileCache, memoryCache } from "./cache.js";
3
+ export declare const cache: CacheRegistryDefinition;
4
+ export type RuntimeStatus = "idle" | "running" | "passed" | "failed" | "started" | "stopped";
5
+ export type RuntimeNext = () => Promise<unknown>;
6
+ export type RuntimeNodeKind = "task" | "middleware" | "series" | "parallel" | "branch" | "cache";
7
+ export type RuntimeNodeStatus = "passed" | "failed" | "cached";
8
+ export interface RuntimeContext<Input = unknown> {
9
+ input: Input;
10
+ state: Record<string, unknown>;
11
+ taskId: string;
12
+ path: string[];
13
+ signal?: AbortSignal;
14
+ output?: unknown;
15
+ cacheHit?: boolean;
16
+ }
17
+ export type RuntimeMiddleware<Input = unknown> = (context: RuntimeContext<Input>, next: RuntimeNext) => unknown | Promise<unknown>;
18
+ export type RuntimeBranchPredicate<Input = unknown> = (context: RuntimeContext<Input>) => boolean | Promise<boolean>;
19
+ export interface RuntimeSeriesDefinition<Input = unknown> {
20
+ kind: "async-pipeline.runtime.series";
21
+ items: RuntimeRunItem<Input>[];
22
+ }
23
+ export interface RuntimeParallelDefinition<Input = unknown> {
24
+ kind: "async-pipeline.runtime.parallel";
25
+ items: RuntimeRunItem<Input>[];
26
+ concurrency?: number;
27
+ }
28
+ export interface RuntimeParallelOptions {
29
+ concurrency?: number;
30
+ }
31
+ export interface RuntimeBranchDefinition<Input = unknown> {
32
+ kind: "async-pipeline.runtime.branch";
33
+ predicate: RuntimeBranchPredicate<Input>;
34
+ whenTrue: RuntimeRunItem<Input>[];
35
+ whenFalse?: RuntimeRunItem<Input>[];
36
+ }
37
+ export type RuntimeFlowDefinition<Input = unknown> = RuntimeSeriesDefinition<Input> | RuntimeParallelDefinition<Input> | RuntimeBranchDefinition<Input>;
38
+ export type RuntimeRunItem<Input = unknown> = RuntimeMiddleware<Input> | CacheDirective | RuntimeFlowDefinition<Input> | readonly RuntimeRunItem<Input>[];
39
+ export type RuntimeRunDefinition<Input = unknown> = RuntimeRunItem<Input> | readonly RuntimeRunItem<Input>[];
40
+ export interface RuntimeInspectNode {
41
+ kind: RuntimeNodeKind;
42
+ id: string;
43
+ path: string[];
44
+ children: RuntimeInspectNode[];
45
+ }
46
+ export interface RuntimeTaskConfig<Input = unknown> {
47
+ id?: string;
48
+ description?: string;
49
+ dependsOn?: string[];
50
+ cache?: false | CacheRef;
51
+ run?: RuntimeRunDefinition<Input>;
52
+ }
53
+ export interface RuntimeTaskDefinition<Input = unknown> extends RuntimeTaskConfig<Input> {
54
+ children: RuntimeTaskDefinition<Input>[];
55
+ flow?: RuntimeInspectNode;
56
+ }
57
+ export interface RuntimeDefinition<Input = unknown> {
58
+ kind: "runtime-definition";
59
+ tasks: RuntimeTaskDefinition<Input>[];
60
+ cache: CacheRegistryDefinition;
61
+ }
62
+ export interface RuntimeTaskResult {
63
+ id: string;
64
+ status: "passed" | "failed" | "cached";
65
+ cacheHit: boolean;
66
+ path?: string[];
67
+ error?: string;
68
+ errorCode?: string;
69
+ nodes?: RuntimeNodeResult[];
70
+ }
71
+ export interface RuntimeNodeResult {
72
+ id: string;
73
+ kind: RuntimeNodeKind;
74
+ path: string[];
75
+ status: RuntimeNodeStatus;
76
+ error?: string;
77
+ errorCode?: string;
78
+ }
79
+ export interface RuntimeExecution {
80
+ status: "passed" | "failed";
81
+ tasks: RuntimeTaskResult[];
82
+ nodes: RuntimeNodeResult[];
83
+ output?: unknown;
84
+ error?: string;
85
+ errorCode?: string;
86
+ }
87
+ export interface Runtime<Input = unknown> {
88
+ inspect(): RuntimeDefinition<Input>;
89
+ run(input?: Input, options?: {
90
+ task?: string;
91
+ signal?: AbortSignal;
92
+ }): Promise<RuntimeExecution>;
93
+ start(): Promise<void>;
94
+ stop(): Promise<void>;
95
+ close(): Promise<void>;
96
+ }
97
+ export declare function compose<Input = unknown>(...items: RuntimeRunDefinition<Input>[]): RuntimeSeriesDefinition<Input>;
98
+ export declare function series<Input = unknown>(items: RuntimeRunDefinition<Input>): RuntimeSeriesDefinition<Input>;
99
+ export declare function parallel<Input = unknown>(items: readonly RuntimeRunDefinition<Input>[]): RuntimeParallelDefinition<Input>;
100
+ export declare function parallel<Input = unknown>(options: RuntimeParallelOptions, items: readonly RuntimeRunDefinition<Input>[]): RuntimeParallelDefinition<Input>;
101
+ export declare function branch<Input = unknown>(predicate: RuntimeBranchPredicate<Input>, whenTrue: RuntimeRunDefinition<Input>, whenFalse?: RuntimeRunDefinition<Input>): RuntimeBranchDefinition<Input>;
102
+ export declare function task<Input = unknown>(config: RuntimeTaskConfig<Input>): RuntimeTaskDefinition<Input>;
103
+ export declare function task<Input = unknown>(config: RuntimeTaskConfig<Input>, runOrChildren: RuntimeRunDefinition<Input> | readonly RuntimeTaskDefinition<Input>[]): RuntimeTaskDefinition<Input>;
104
+ export declare function defineRuntime<Input = unknown>(definition: readonly RuntimeTaskDefinition<Input>[] | readonly RuntimeRunItem<Input>[] | {
105
+ tasks: readonly RuntimeTaskDefinition<Input>[] | readonly RuntimeRunItem<Input>[];
106
+ cache?: CacheRegistryDefinition;
107
+ }): RuntimeDefinition<Input>;
108
+ export declare function createRuntime<Input = unknown>(definition: RuntimeDefinition<Input> | readonly RuntimeTaskDefinition<Input>[], options?: {
109
+ cache?: CacheRegistryDefinition;
110
+ }): Runtime<Input>;
111
+ //# sourceMappingURL=runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,495 @@
1
+ import { defaultRuntimeCache, isCacheDirective, parseCacheRef } from "./cache.js";
2
+ import { AsyncPipelineError, pipelineError } from "./errors.js";
3
+ export { defineCache, fileCache, memoryCache } from "./cache.js";
4
+ export const cache = defaultRuntimeCache();
5
+ export function compose(...items) {
6
+ return {
7
+ kind: "async-pipeline.runtime.series",
8
+ items: normalizeVariadicRunItems(items)
9
+ };
10
+ }
11
+ export function series(items) {
12
+ return {
13
+ kind: "async-pipeline.runtime.series",
14
+ items: runItemsFromDefinition(items)
15
+ };
16
+ }
17
+ export function parallel(optionsOrItems, maybeItems) {
18
+ const itemsFirst = Array.isArray(optionsOrItems);
19
+ if (itemsFirst && maybeItems !== undefined) {
20
+ throw pipelineError("ASYNC_PIPELINE_RUNTIME_PARALLEL_OPTIONS_ORDER", "Pass runtime parallel options first: parallel(options, items).");
21
+ }
22
+ const options = itemsFirst ? {} : optionsOrItems;
23
+ const items = itemsFirst ? optionsOrItems : maybeItems;
24
+ if (!items) {
25
+ throw pipelineError("ASYNC_PIPELINE_RUNTIME_PARALLEL_ITEMS_REQUIRED", "Runtime parallel requires an items array.");
26
+ }
27
+ if (options.concurrency !== undefined && (!Number.isInteger(options.concurrency) || options.concurrency < 1)) {
28
+ throw pipelineError("ASYNC_PIPELINE_RUNTIME_INVALID_CONCURRENCY", "Runtime parallel concurrency must be a positive integer.");
29
+ }
30
+ return {
31
+ kind: "async-pipeline.runtime.parallel",
32
+ items: items.map((item) => Array.isArray(item) ? [...item] : item),
33
+ concurrency: options.concurrency
34
+ };
35
+ }
36
+ export function branch(predicate, whenTrue, whenFalse) {
37
+ return {
38
+ kind: "async-pipeline.runtime.branch",
39
+ predicate,
40
+ whenTrue: runItemsFromDefinition(whenTrue),
41
+ whenFalse: whenFalse === undefined ? undefined : runItemsFromDefinition(whenFalse)
42
+ };
43
+ }
44
+ export function task(config, runOrChildren) {
45
+ if (config.run !== undefined && runOrChildren !== undefined) {
46
+ throw pipelineError("ASYNC_PIPELINE_TASK_ARGUMENT_CONFLICT", "Do not pass a second task argument when config.run is defined.");
47
+ }
48
+ if (isRuntimeTaskArray(runOrChildren)) {
49
+ return { ...config, children: [...runOrChildren] };
50
+ }
51
+ return {
52
+ ...config,
53
+ run: runOrChildren === undefined ? config.run : runOrChildren,
54
+ children: []
55
+ };
56
+ }
57
+ export function defineRuntime(definition) {
58
+ const objectDefinition = definition;
59
+ const rawTasks = Array.isArray(definition) ? definition : objectDefinition.tasks;
60
+ const tasks = isRuntimeTaskArray(rawTasks)
61
+ ? rawTasks
62
+ : rawTasks.length === 0 ? [] : [task({ id: "runtime" }, compose(...rawTasks))];
63
+ const cache = Array.isArray(definition) ? defaultRuntimeCache() : (objectDefinition.cache ?? defaultRuntimeCache());
64
+ return {
65
+ kind: "runtime-definition",
66
+ tasks: normalizeRuntimeTasks(tasks),
67
+ cache
68
+ };
69
+ }
70
+ export function createRuntime(definition, options = {}) {
71
+ const runtimeDefinition = Array.isArray(definition)
72
+ ? defineRuntime({ tasks: definition, cache: options.cache })
73
+ : definition;
74
+ const memoryCacheEntries = new Map();
75
+ let status = "idle";
76
+ return {
77
+ inspect() {
78
+ return runtimeDefinition;
79
+ },
80
+ async run(input, runOptions = {}) {
81
+ status = "running";
82
+ const state = {};
83
+ const results = [];
84
+ const nodes = [];
85
+ const executionState = {
86
+ memoryCacheEntries,
87
+ nodes,
88
+ registry: runtimeDefinition.cache
89
+ };
90
+ try {
91
+ const plan = createRuntimePlan(runtimeDefinition.tasks, runOptions.task);
92
+ if (runOptions.task && plan.length === 0) {
93
+ throw pipelineError("ASYNC_PIPELINE_RUNTIME_UNKNOWN_TASK", `Unknown runtime task "${runOptions.task}".`);
94
+ }
95
+ let output;
96
+ for (const entry of plan) {
97
+ output = await runRuntimeTask(entry.task, {
98
+ input: input,
99
+ state,
100
+ taskId: entry.task.id ?? entry.path.join("."),
101
+ path: entry.path,
102
+ signal: runOptions.signal
103
+ }, executionState, results);
104
+ }
105
+ status = "passed";
106
+ return { status: "passed", tasks: results, nodes, output };
107
+ }
108
+ catch (error) {
109
+ status = "failed";
110
+ return {
111
+ status: "failed",
112
+ tasks: results,
113
+ nodes,
114
+ output: undefined,
115
+ error: errorMessage(error),
116
+ errorCode: errorCode(error)
117
+ };
118
+ }
119
+ },
120
+ async start() {
121
+ status = "started";
122
+ },
123
+ async stop() {
124
+ status = "stopped";
125
+ },
126
+ async close() {
127
+ status = "stopped";
128
+ }
129
+ };
130
+ }
131
+ async function runRuntimeTask(taskDefinition, context, executionState, results) {
132
+ const nodeStart = executionState.nodes.length;
133
+ try {
134
+ const output = await withRuntimeNodeBoundary({ id: context.taskId, kind: "task", path: context.path }, executionState, async () => {
135
+ const items = runtimeRunItems(taskDefinition);
136
+ return executeSeries(items, context, executionState, [...context.path, "run"], async () => context.output);
137
+ }, () => context.cacheHit ? "cached" : "passed");
138
+ results.push({
139
+ id: context.taskId,
140
+ status: context.cacheHit ? "cached" : "passed",
141
+ cacheHit: context.cacheHit ?? false,
142
+ path: context.path,
143
+ nodes: executionState.nodes.slice(nodeStart)
144
+ });
145
+ return output;
146
+ }
147
+ catch (error) {
148
+ results.push({
149
+ id: context.taskId,
150
+ status: "failed",
151
+ cacheHit: false,
152
+ path: context.path,
153
+ error: errorMessage(error),
154
+ errorCode: errorCode(error),
155
+ nodes: executionState.nodes.slice(nodeStart)
156
+ });
157
+ throw error;
158
+ }
159
+ }
160
+ function runtimeRunItems(taskDefinition) {
161
+ const items = taskDefinition.run === undefined
162
+ ? []
163
+ : runItemsFromDefinition(taskDefinition.run);
164
+ const runItems = [];
165
+ if (taskDefinition.cache) {
166
+ runItems.push(cache.use(taskDefinition.cache));
167
+ }
168
+ runItems.push(...items);
169
+ return runItems;
170
+ }
171
+ function cacheMiddleware(ref, executionState) {
172
+ const parsed = parseCacheRef(ref);
173
+ return async (context, next) => {
174
+ const cacheKey = JSON.stringify([parsed.store, parsed.strategy, context.taskId, context.input]);
175
+ if (parsed.store === "memory" && executionState.memoryCacheEntries.has(cacheKey)) {
176
+ context.cacheHit = true;
177
+ context.output = executionState.memoryCacheEntries.get(cacheKey);
178
+ return context.output;
179
+ }
180
+ if (!executionState.registry.stores[parsed.store]) {
181
+ throw pipelineError("ASYNC_PIPELINE_UNKNOWN_CACHE_STORE", `Unknown cache store "${parsed.store}" in "${ref}".`);
182
+ }
183
+ const output = await next();
184
+ if (parsed.store === "memory")
185
+ executionState.memoryCacheEntries.set(cacheKey, output);
186
+ context.output = output;
187
+ return output;
188
+ };
189
+ }
190
+ async function executeSeries(items, context, executionState, path, done) {
191
+ return withRuntimeNodeBoundary({ id: path.at(-1) ?? "series", kind: "series", path }, executionState, async () => {
192
+ return composeRuntimeItems(items, context, executionState, path, done);
193
+ });
194
+ }
195
+ async function composeRuntimeItems(items, context, executionState, path, done) {
196
+ let index = -1;
197
+ const dispatch = async (position) => {
198
+ if (position <= index) {
199
+ throw pipelineError("ASYNC_PIPELINE_RUNTIME_NEXT_CALLED_TWICE", `Runtime task "${context.taskId}" called next() more than once.`, { path });
200
+ }
201
+ index = position;
202
+ const item = items[position];
203
+ if (!item)
204
+ return done();
205
+ const output = await executeRunItem(item, context, executionState, [...path, String(position)], () => dispatch(position + 1));
206
+ if (output !== undefined)
207
+ context.output = output;
208
+ return context.output;
209
+ };
210
+ return dispatch(0);
211
+ }
212
+ async function executeRunItem(item, context, executionState, path, next) {
213
+ if (Array.isArray(item)) {
214
+ return executeSeries(item, context, executionState, path, next);
215
+ }
216
+ if (isRuntimeSeriesDefinition(item)) {
217
+ return executeSeries(item.items, context, executionState, path, next);
218
+ }
219
+ if (isRuntimeParallelDefinition(item)) {
220
+ return executeParallel(item, context, executionState, path, next);
221
+ }
222
+ if (isRuntimeBranchDefinition(item)) {
223
+ return executeBranch(item, context, executionState, path, next);
224
+ }
225
+ if (isCacheDirective(item)) {
226
+ return withRuntimeNodeBoundary({ id: item.ref, kind: "cache", path }, executionState, async () => cacheMiddleware(item.ref, executionState)(context, next), () => context.cacheHit ? "cached" : "passed");
227
+ }
228
+ if (typeof item === "function") {
229
+ return withRuntimeNodeBoundary({ id: item.name || "middleware", kind: "middleware", path }, executionState, async () => {
230
+ const output = await item(context, next);
231
+ if (output !== undefined)
232
+ context.output = output;
233
+ return context.output;
234
+ });
235
+ }
236
+ throw pipelineError("ASYNC_PIPELINE_RUNTIME_INVALID_RUN_ITEM", `Invalid runtime run item at ${path.join(".")}.`);
237
+ }
238
+ async function executeParallel(definition, context, executionState, path, next) {
239
+ return withRuntimeNodeBoundary({ id: path.at(-1) ?? "parallel", kind: "parallel", path }, executionState, async () => {
240
+ const concurrency = definition.concurrency ?? Math.max(1, definition.items.length);
241
+ const outputs = new Array(definition.items.length);
242
+ const failures = [];
243
+ let nextIndex = 0;
244
+ async function worker() {
245
+ while (nextIndex < definition.items.length) {
246
+ const branchIndex = nextIndex;
247
+ nextIndex += 1;
248
+ const branchItem = definition.items[branchIndex];
249
+ if (!branchItem)
250
+ continue;
251
+ const branchContext = {
252
+ ...context,
253
+ output: context.output,
254
+ path: [...path, String(branchIndex)]
255
+ };
256
+ try {
257
+ outputs[branchIndex] = await executeSeries(runItemsFromDefinition(branchItem), branchContext, executionState, [...path, String(branchIndex)], async () => branchContext.output);
258
+ }
259
+ catch (error) {
260
+ failures.push({ index: branchIndex, error });
261
+ }
262
+ }
263
+ }
264
+ const workerCount = Math.min(concurrency, definition.items.length);
265
+ await Promise.all(Array.from({ length: workerCount }, () => worker()));
266
+ if (failures.length > 0) {
267
+ throw pipelineError("ASYNC_PIPELINE_RUNTIME_PARALLEL_FAILED", `Runtime parallel node failed in task "${context.taskId}".`, { path, failures: failures.map((failure) => ({ index: failure.index, error: describeError(failure.error) })) });
268
+ }
269
+ context.output = outputs;
270
+ return next();
271
+ });
272
+ }
273
+ async function executeBranch(definition, context, executionState, path, next) {
274
+ return withRuntimeNodeBoundary({ id: path.at(-1) ?? "branch", kind: "branch", path }, executionState, async () => {
275
+ let selected;
276
+ try {
277
+ selected = await definition.predicate(context);
278
+ }
279
+ catch (error) {
280
+ throw pipelineError("ASYNC_PIPELINE_RUNTIME_BRANCH_PREDICATE_FAILED", `Runtime branch predicate failed in task "${context.taskId}".`, { path, cause: describeError(error) });
281
+ }
282
+ const items = selected ? definition.whenTrue : definition.whenFalse;
283
+ if (!items)
284
+ return next();
285
+ return executeSeries(items, context, executionState, [...path, selected ? "true" : "false"], next);
286
+ });
287
+ }
288
+ async function withRuntimeNodeBoundary(node, executionState, run, status = () => "passed") {
289
+ try {
290
+ const output = await run();
291
+ executionState.nodes.push({ ...node, status: status() });
292
+ return output;
293
+ }
294
+ catch (error) {
295
+ const wrapped = wrapRuntimeNodeError(node, error);
296
+ executionState.nodes.push({
297
+ ...node,
298
+ status: "failed",
299
+ error: wrapped.message,
300
+ errorCode: errorCode(error) ?? wrapped.code
301
+ });
302
+ throw wrapped;
303
+ }
304
+ }
305
+ function normalizeRuntimeTasks(tasks, prefix = []) {
306
+ return tasks.map((taskDefinition, index) => {
307
+ const id = taskDefinition.id ?? [...prefix, `task-${index + 1}`].join(".");
308
+ const path = [...prefix, id];
309
+ return {
310
+ ...taskDefinition,
311
+ id,
312
+ children: normalizeRuntimeTasks(taskDefinition.children ?? [], path),
313
+ flow: inspectRunDefinition(taskDefinition.run, [...path, "run"])
314
+ };
315
+ });
316
+ }
317
+ function flattenTasks(tasks, path = []) {
318
+ const flattened = [];
319
+ for (const taskDefinition of tasks) {
320
+ const taskPath = [...path, taskDefinition.id ?? String(flattened.length + 1)];
321
+ flattened.push({ task: taskDefinition, path: taskPath });
322
+ flattened.push(...flattenTasks(taskDefinition.children, taskPath));
323
+ }
324
+ return flattened;
325
+ }
326
+ function createRuntimePlan(tasks, target) {
327
+ const entries = flattenTasks(tasks);
328
+ const byId = new Map();
329
+ entries.forEach((entry, index) => {
330
+ const id = entry.task.id ?? entry.path.join(".");
331
+ if (byId.has(id)) {
332
+ throw pipelineError("ASYNC_PIPELINE_RUNTIME_DUPLICATE_TASK", `Duplicate runtime task id "${id}".`);
333
+ }
334
+ const parentId = entry.path.length > 1 ? entry.path.at(-2) : undefined;
335
+ byId.set(id, {
336
+ ...entry,
337
+ index,
338
+ dependsOn: [...(entry.task.dependsOn ?? []), ...(parentId ? [parentId] : [])]
339
+ });
340
+ });
341
+ const selected = target ? collectRuntimeDependencies(target, byId) : new Set(byId.keys());
342
+ const visiting = new Set();
343
+ const visited = new Set();
344
+ const order = [];
345
+ const visit = (id, path) => {
346
+ if (!selected.has(id) || visited.has(id))
347
+ return;
348
+ if (visiting.has(id)) {
349
+ const start = path.indexOf(id);
350
+ const cycle = [...path.slice(start), id].join(" -> ");
351
+ throw pipelineError("ASYNC_PIPELINE_RUNTIME_DEPENDENCY_CYCLE", `Runtime task dependency cycle detected: ${cycle}.`);
352
+ }
353
+ const entry = byId.get(id);
354
+ if (!entry)
355
+ throw pipelineError("ASYNC_PIPELINE_RUNTIME_UNKNOWN_TASK", `Unknown runtime task "${id}".`);
356
+ visiting.add(id);
357
+ for (const dependency of [...entry.dependsOn].sort()) {
358
+ if (!byId.has(dependency)) {
359
+ throw pipelineError("ASYNC_PIPELINE_RUNTIME_MISSING_DEPENDENCY", `Runtime task "${id}" depends on missing task "${dependency}".`);
360
+ }
361
+ visit(dependency, [...path, id]);
362
+ }
363
+ visiting.delete(id);
364
+ visited.add(id);
365
+ order.push(id);
366
+ };
367
+ for (const id of [...selected].sort((left, right) => (byId.get(left)?.index ?? 0) - (byId.get(right)?.index ?? 0))) {
368
+ visit(id, []);
369
+ }
370
+ return order.map((id) => {
371
+ const entry = byId.get(id);
372
+ if (!entry)
373
+ throw pipelineError("ASYNC_PIPELINE_RUNTIME_UNKNOWN_TASK", `Unknown runtime task "${id}".`);
374
+ return { task: entry.task, path: entry.path };
375
+ });
376
+ }
377
+ function collectRuntimeDependencies(target, byId) {
378
+ if (!byId.has(target))
379
+ return new Set();
380
+ const selected = new Set();
381
+ const visit = (id) => {
382
+ if (selected.has(id))
383
+ return;
384
+ const entry = byId.get(id);
385
+ if (!entry)
386
+ throw pipelineError("ASYNC_PIPELINE_RUNTIME_UNKNOWN_TASK", `Unknown runtime task "${id}".`);
387
+ selected.add(id);
388
+ for (const dependency of entry.dependsOn)
389
+ visit(dependency);
390
+ };
391
+ visit(target);
392
+ return selected;
393
+ }
394
+ function isRuntimeTaskArray(value) {
395
+ return Array.isArray(value) && value.every((entry) => Boolean(entry) && typeof entry === "object" && "children" in entry);
396
+ }
397
+ function normalizeVariadicRunItems(items) {
398
+ if (items.length === 1 && Array.isArray(items[0])) {
399
+ return [...items[0]];
400
+ }
401
+ return items.map((item) => item);
402
+ }
403
+ function runItemsFromDefinition(definition) {
404
+ if (isRuntimeSeriesDefinition(definition))
405
+ return [...definition.items];
406
+ return Array.isArray(definition) ? [...definition] : [definition];
407
+ }
408
+ function isRuntimeSeriesDefinition(value) {
409
+ return Boolean(value)
410
+ && typeof value === "object"
411
+ && value.kind === "async-pipeline.runtime.series";
412
+ }
413
+ function isRuntimeParallelDefinition(value) {
414
+ return Boolean(value)
415
+ && typeof value === "object"
416
+ && value.kind === "async-pipeline.runtime.parallel";
417
+ }
418
+ function isRuntimeBranchDefinition(value) {
419
+ return Boolean(value)
420
+ && typeof value === "object"
421
+ && value.kind === "async-pipeline.runtime.branch";
422
+ }
423
+ function inspectRunDefinition(definition, path) {
424
+ const items = definition === undefined ? [] : runItemsFromDefinition(definition);
425
+ return inspectSeries(items, path);
426
+ }
427
+ function inspectSeries(items, path) {
428
+ return {
429
+ kind: "series",
430
+ id: path.at(-1) ?? "series",
431
+ path,
432
+ children: items.map((item, index) => inspectRunItem(item, [...path, String(index)]))
433
+ };
434
+ }
435
+ function inspectRunItem(item, path) {
436
+ if (Array.isArray(item))
437
+ return inspectSeries(item, path);
438
+ if (isRuntimeSeriesDefinition(item))
439
+ return inspectSeries(item.items, path);
440
+ if (isRuntimeParallelDefinition(item)) {
441
+ return {
442
+ kind: "parallel",
443
+ id: path.at(-1) ?? "parallel",
444
+ path,
445
+ children: item.items.map((branchItem, index) => inspectSeries(runItemsFromDefinition(branchItem), [...path, String(index)]))
446
+ };
447
+ }
448
+ if (isRuntimeBranchDefinition(item)) {
449
+ const children = [inspectSeries(item.whenTrue, [...path, "true"])];
450
+ if (item.whenFalse)
451
+ children.push(inspectSeries(item.whenFalse, [...path, "false"]));
452
+ return { kind: "branch", id: path.at(-1) ?? "branch", path, children };
453
+ }
454
+ if (isCacheDirective(item))
455
+ return { kind: "cache", id: item.ref, path, children: [] };
456
+ if (typeof item === "function")
457
+ return { kind: "middleware", id: item.name || "middleware", path, children: [] };
458
+ return { kind: "middleware", id: "middleware", path, children: [] };
459
+ }
460
+ function wrapRuntimeNodeError(node, cause) {
461
+ const code = runtimeNodeErrorCode(node.kind);
462
+ return pipelineError(code, `Runtime ${node.kind} "${node.id}" failed at ${node.path.join(".")}.`, { path: node.path, kind: node.kind, cause: describeError(cause) });
463
+ }
464
+ function runtimeNodeErrorCode(kind) {
465
+ switch (kind) {
466
+ case "task":
467
+ return "ASYNC_PIPELINE_RUNTIME_TASK_FAILED";
468
+ case "parallel":
469
+ return "ASYNC_PIPELINE_RUNTIME_PARALLEL_NODE_FAILED";
470
+ case "branch":
471
+ return "ASYNC_PIPELINE_RUNTIME_BRANCH_FAILED";
472
+ case "cache":
473
+ return "ASYNC_PIPELINE_RUNTIME_CACHE_FAILED";
474
+ case "middleware":
475
+ return "ASYNC_PIPELINE_RUNTIME_MIDDLEWARE_FAILED";
476
+ case "series":
477
+ return "ASYNC_PIPELINE_RUNTIME_SERIES_FAILED";
478
+ }
479
+ }
480
+ function describeError(error) {
481
+ if (error instanceof AsyncPipelineError) {
482
+ return { code: error.code, message: error.message, details: error.details };
483
+ }
484
+ if (error instanceof Error) {
485
+ return { message: error.message };
486
+ }
487
+ return { message: String(error) };
488
+ }
489
+ function errorMessage(error) {
490
+ return error instanceof Error ? error.message : String(error);
491
+ }
492
+ function errorCode(error) {
493
+ return error instanceof AsyncPipelineError ? error.code : undefined;
494
+ }
495
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}