@wpkernel/pipeline 0.12.3-beta.0 → 0.12.5-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/README.md +71 -88
  2. package/dist/async-utils.d.ts +14 -0
  3. package/dist/async-utils.d.ts.map +1 -1
  4. package/dist/async-utils.js +18 -13
  5. package/dist/createExtension.d.ts +7 -1
  6. package/dist/createExtension.d.ts.map +1 -1
  7. package/dist/createPipeline.d.ts.map +1 -1
  8. package/dist/createPipeline.js +6 -119
  9. package/dist/dependency-graph.d.ts +6 -0
  10. package/dist/dependency-graph.d.ts.map +1 -1
  11. package/dist/dependency-graph.js +73 -65
  12. package/dist/error-factory.d.ts +1 -1
  13. package/dist/extensions.d.ts.map +1 -1
  14. package/dist/extensions.js +61 -62
  15. package/dist/helper.d.ts +27 -16
  16. package/dist/helper.d.ts.map +1 -1
  17. package/dist/index.d.ts +3 -2
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +22 -21
  20. package/dist/internal/pipeline-program-utils.d.ts +127 -0
  21. package/dist/internal/pipeline-program-utils.d.ts.map +1 -0
  22. package/dist/internal/pipeline-program-utils.js +161 -0
  23. package/dist/internal/pipeline-runner.types.d.ts +117 -1
  24. package/dist/internal/pipeline-runner.types.d.ts.map +1 -1
  25. package/dist/internal/runner/context.d.ts +6 -0
  26. package/dist/internal/runner/context.d.ts.map +1 -0
  27. package/dist/internal/runner/context.js +169 -0
  28. package/dist/internal/runner/execution.d.ts +6 -0
  29. package/dist/internal/runner/execution.d.ts.map +1 -0
  30. package/dist/internal/runner/execution.js +40 -0
  31. package/dist/internal/{pipeline-runner.d.ts → runner/index.d.ts} +3 -8
  32. package/dist/internal/runner/index.d.ts.map +1 -0
  33. package/dist/internal/runner/index.js +11 -0
  34. package/dist/internal/runner/program.d.ts +8 -0
  35. package/dist/internal/runner/program.d.ts.map +1 -0
  36. package/dist/internal/runner/program.js +294 -0
  37. package/dist/makePipeline.d.ts +20 -0
  38. package/dist/makePipeline.d.ts.map +1 -0
  39. package/dist/makePipeline.js +139 -0
  40. package/dist/registration.d.ts.map +1 -1
  41. package/dist/registration.js +17 -15
  42. package/dist/rollback.d.ts +94 -0
  43. package/dist/rollback.d.ts.map +1 -0
  44. package/dist/rollback.js +46 -0
  45. package/dist/types.d.ts +37 -3
  46. package/dist/types.d.ts.map +1 -1
  47. package/package.json +1 -1
  48. package/dist/internal/pipeline-runner.d.ts.map +0 -1
  49. package/dist/internal/pipeline-runner.js +0 -257
@@ -1 +1 @@
1
- {"version":3,"file":"extensions.d.ts","sourceRoot":"","sources":["../src/extensions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,YAAY,EACZ,qBAAqB,EACrB,4BAA4B,EAC5B,2BAA2B,EAC3B,sCAAsC,EACtC,0BAA0B,EAC1B,MAAM,SAAS,CAAC;AAQjB;;;;GAIG;AACH,MAAM,WAAW,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS;IAChE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,SAAS,EAAE,0BAA0B,CAAC;IAC/C,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;CACpE;AAED;;;;GAIG;AACH,MAAM,WAAW,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS;IACpE,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IACjE,QAAQ,CAAC,MAAM,EAAE,2BAA2B,CAAC,SAAS,CAAC,CAAC;CACxD;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CACzC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,2BAA2B,CAC1C,KAAK,EAAE,OAAO,GACZ,sCAAsC,CAoBxC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAC9D,KAAK,EAAE,SAAS,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,EACnE,SAAS,EAAE,0BAA0B,EACrC,OAAO,EAAE,4BAA4B,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,EACpE,eAAe,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,GAChD,YAAY,CAAC;IACf,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,EAAE,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,CAAC;CACjE,CAAC,CA8DD;AAED;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EACnE,OAAO,EAAE,SAAS,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,GACvE,YAAY,CAAC,IAAI,CAAC,CAcpB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EACrE,OAAO,EAAE,SAAS,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,EACzE,KAAK,EAAE,SAAS,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,EACnE,eAAe,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,GAChD,YAAY,CAAC,IAAI,CAAC,CA2BpB;AAED,OAAO,EAAE,6BAA6B,EAAE,MAAM,0BAA0B,CAAC;AACzE,YAAY,EACX,0BAA0B,EAC1B,kBAAkB,EAClB,kBAAkB,EAClB,yBAAyB,GACzB,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"extensions.d.ts","sourceRoot":"","sources":["../src/extensions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,YAAY,EACZ,qBAAqB,EACrB,4BAA4B,EAC5B,2BAA2B,EAC3B,sCAAsC,EACtC,0BAA0B,EAC1B,MAAM,SAAS,CAAC;AASjB;;;;GAIG;AACH,MAAM,WAAW,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS;IAChE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,SAAS,EAAE,0BAA0B,CAAC;IAC/C,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;CACpE;AAED;;;;GAIG;AACH,MAAM,WAAW,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS;IACpE,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IACjE,QAAQ,CAAC,MAAM,EAAE,2BAA2B,CAAC,SAAS,CAAC,CAAC;CACxD;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CACzC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,2BAA2B,CAC1C,KAAK,EAAE,OAAO,GACZ,sCAAsC,CAoBxC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAC9D,KAAK,EAAE,SAAS,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,EACnE,SAAS,EAAE,0BAA0B,EACrC,OAAO,EAAE,4BAA4B,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,EACpE,eAAe,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,GAChD,YAAY,CAAC;IACf,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,EAAE,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,CAAC;CACjE,CAAC,CA8DD;AAED;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EACnE,OAAO,EAAE,SAAS,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,GACvE,YAAY,CAAC,IAAI,CAAC,CAcpB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EACrE,OAAO,EAAE,SAAS,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,EACzE,KAAK,EAAE,SAAS,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,EACnE,eAAe,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,GAChD,YAAY,CAAC,IAAI,CAAC,CA0BpB;AAED,OAAO,EAAE,6BAA6B,EAAE,MAAM,0BAA0B,CAAC;AACzE,YAAY,EACX,0BAA0B,EAC1B,kBAAkB,EAClB,kBAAkB,EAClB,yBAAyB,GACzB,MAAM,0BAA0B,CAAC"}
@@ -1,89 +1,88 @@
1
- import { processSequentially as l, isPromiseLike as k, maybeTry as h, maybeThen as m } from "./async-utils.js";
2
- function x(t) {
3
- if (t instanceof Error) {
4
- const { name: n, message: o, stack: e } = t, r = t.cause;
1
+ import { processSequentially as f, isPromiseLike as k, maybeTry as p, maybeThen as l } from "./async-utils.js";
2
+ import { runRollbackStack as b } from "./rollback.js";
3
+ function E(o) {
4
+ if (o instanceof Error) {
5
+ const { name: r, message: e, stack: s } = o, n = o.cause;
5
6
  return {
6
- name: n,
7
- message: o,
8
- stack: e,
9
- cause: r
7
+ name: r,
8
+ message: e,
9
+ stack: s,
10
+ cause: n
10
11
  };
11
12
  }
12
- return typeof t == "string" ? {
13
- message: t
13
+ return typeof o == "string" ? {
14
+ message: o
14
15
  } : {};
15
16
  }
16
- function y(t, n, o, e) {
17
- let r = o.artifact;
18
- const s = [], u = t.filter(
19
- (i) => i.lifecycle === n
20
- ), f = {
21
- context: o.context,
22
- options: o.options,
23
- lifecycle: n
24
- }, p = h(
25
- () => l(u, (i) => {
26
- const c = i.hook({
27
- ...f,
28
- artifact: r
17
+ function R(o, r, e, s) {
18
+ let n = e.artifact;
19
+ const c = [], t = o.filter(
20
+ (i) => i.lifecycle === r
21
+ ), m = {
22
+ context: e.context,
23
+ options: e.options,
24
+ lifecycle: r
25
+ }, h = p(
26
+ () => f(t, (i) => {
27
+ const u = i.hook({
28
+ ...m,
29
+ artifact: n
29
30
  });
30
- if (k(c))
31
- return Promise.resolve(c).then((a) => {
32
- a && (a.artifact !== void 0 && (r = a.artifact), s.push({
31
+ if (k(u))
32
+ return Promise.resolve(u).then((a) => {
33
+ a && (a.artifact !== void 0 && (n = a.artifact), c.push({
33
34
  hook: i,
34
35
  result: a
35
36
  }));
36
37
  });
37
- if (c)
38
- return c.artifact !== void 0 && (r = c.artifact), void s.push({
38
+ if (u)
39
+ return u.artifact !== void 0 && (n = u.artifact), void c.push({
39
40
  hook: i,
40
- result: c
41
+ result: u
41
42
  });
42
43
  }),
43
- (i) => m(
44
- d(s, u, e),
44
+ (i) => l(
45
+ d(c, t, s),
45
46
  () => {
46
47
  throw i;
47
48
  }
48
49
  )
49
50
  );
50
- return m(p, () => ({ artifact: r, results: s }));
51
+ return l(h, () => ({ artifact: n, results: c }));
51
52
  }
52
- function E(t) {
53
- return l(t, (n) => {
54
- const o = n.result.commit;
55
- if (!o)
53
+ function g(o) {
54
+ return f(o, (r) => {
55
+ const e = r.result.commit;
56
+ if (!e)
56
57
  return;
57
- const e = o();
58
- if (k(e))
59
- return e.then(() => {
58
+ const s = e();
59
+ if (k(s))
60
+ return s.then(() => {
60
61
  });
61
62
  });
62
63
  }
63
- function d(t, n, o) {
64
- const e = n.map((s) => s.key), r = e;
65
- return l(
66
- [...t].reverse(),
67
- (s) => {
68
- const u = s.result.rollback;
69
- if (u)
70
- return h(
71
- () => u(),
72
- (f) => {
73
- o({
74
- error: f,
75
- extensionKeys: e,
76
- hookSequence: r
77
- });
78
- }
79
- );
80
- },
81
- "forward"
82
- );
64
+ function d(o, r, e) {
65
+ const s = r.map((t) => t.key), n = s, c = o.map((t) => ({
66
+ result: t.result,
67
+ hook: t.hook
68
+ })).filter((t) => t.result.rollback).map((t) => ({
69
+ key: t.hook.key,
70
+ run: t.result.rollback
71
+ }));
72
+ return b(c, {
73
+ source: "extension",
74
+ onError: ({ error: t }) => {
75
+ e({
76
+ error: t,
77
+ extensionKeys: s,
78
+ hookSequence: n
79
+ });
80
+ }
81
+ });
83
82
  }
84
83
  export {
85
- E as commitExtensionResults,
86
- x as createRollbackErrorMetadata,
84
+ g as commitExtensionResults,
85
+ E as createRollbackErrorMetadata,
87
86
  d as rollbackExtensionResults,
88
- y as runExtensionHooks
87
+ R as runExtensionHooks
89
88
  };
package/dist/helper.d.ts CHANGED
@@ -32,6 +32,14 @@ import { CreateHelperOptions, Helper, HelperKind, PipelineReporter } from './typ
32
32
  * - Validates dependency chains and reports missing/circular dependencies
33
33
  * - Ensures helpers run in correct order regardless of registration sequence
34
34
  *
35
+ * ### Apply results & rollback
36
+ * Helpers typically perform their work by mutating the provided `fragment` or `output` in place and optionally calling `next()` to continue the chain.
37
+ * For more advanced scenarios, a helper can **also return** a result object:
38
+ * - `output` — an updated output value to feed into subsequent helpers
39
+ * - `rollback` — a rollback operation created via `createPipelineRollback`, which will be executed if the pipeline fails after this helper completes
40
+ *
41
+ * Returning a result object is opt-in; existing helpers that return `void` remain valid and continue to behave as before.
42
+ *
35
43
  * ## Architecture
36
44
  *
37
45
  * Helpers form directed acyclic graphs (DAGs) where each node represents a transformation
@@ -41,7 +49,7 @@ import { CreateHelperOptions, Helper, HelperKind, PipelineReporter } from './typ
41
49
  * This design enables:
42
50
  * - **Composability**: Combine helpers from different packages without conflicts
43
51
  * - **Extensibility**: Third-party helpers integrate seamlessly via dependency declarations
44
- * - **Reliability**: Rollback support ensures atomic operations across helper chains
52
+ * - **Reliability**: Helper-level rollback (via `createPipelineRollback`) ensures atomic behaviour across helper chains
45
53
  * - **Observability**: Built-in diagnostics and reporter integration for debugging
46
54
  *
47
55
  * @param options
@@ -84,46 +92,49 @@ import { CreateHelperOptions, Helper, HelperKind, PipelineReporter } from './typ
84
92
  * });
85
93
  * ```
86
94
  *
87
- * @example Builder helper with rollback
95
+ * @example Builder helper with rollback result
88
96
  * ```typescript
89
- * import { createPipelineCommit, createPipelineRollback } from '@wpkernel/pipeline';
97
+ * import { createHelper, createPipelineRollback } from '@wpkernel/pipeline';
90
98
  *
91
99
  * const writeFileHelper = createHelper({
92
100
  * key: 'write-file',
93
101
  * kind: 'builder',
94
- * apply: ({ draft, context }) => {
102
+ * apply: ({ output, context }) => {
95
103
  * const path = context.outputPath;
96
- * const backup = readFileSync(path, 'utf-8'); // Capture current state
104
+ * const before = [...output]; // Capture current in-memory state
97
105
  *
98
- * writeFileSync(path, draft);
106
+ * output.push(context.fileContent);
99
107
  *
100
108
  * return {
101
- * commit: createPipelineCommit(
102
- * () => context.reporter.info(`Wrote ${path}`)
103
- * ),
104
109
  * rollback: createPipelineRollback(
105
- * () => writeFileSync(path, backup), // Restore on error
106
- * () => context.reporter.warn(`Rolled back ${path}`)
110
+ * () => {
111
+ * output.length = 0;
112
+ * output.push(...before);
113
+ * },
114
+ * {
115
+ * key: 'write-file',
116
+ * label: 'Restore file output state',
117
+ * }
107
118
  * ),
108
119
  * };
109
120
  * },
110
121
  * });
111
122
  * ```
112
123
  *
113
- * @example Async helper with error handling
124
+ * @example Async helper with transformed output and error handling
114
125
  * ```typescript
115
126
  * const formatCodeHelper = createHelper({
116
127
  * key: 'format-code',
117
128
  * kind: 'builder',
118
129
  * dependsOn: ['write-file'],
119
- * apply: async ({ artifact, context }) => {
130
+ * apply: async ({ output, context }) => {
120
131
  * try {
121
- * const formatted = await prettier.format(artifact, {
132
+ * const formatted = await prettier.format(output.join(''), {
122
133
  * parser: 'php',
123
134
  * });
124
- * return { artifact: formatted };
135
+ * return { output: formatted.split('') }; // Optionally return a new output value
125
136
  * } catch (error) {
126
- * context.reporter.error('Formatting failed', { error });
137
+ * context.reporter.warn?.('Formatting failed', { error });
127
138
  * throw error;
128
139
  * }
129
140
  * },
@@ -1 +1 @@
1
- {"version":3,"file":"helper.d.ts","sourceRoot":"","sources":["../src/helper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,mBAAmB,EACnB,MAAM,EACN,UAAU,EAEV,gBAAgB,EAChB,MAAM,SAAS,CAAC;AAEjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkIG;AACH,wBAAgB,YAAY,CAC3B,QAAQ,EACR,MAAM,EACN,OAAO,EACP,SAAS,SAAS,gBAAgB,GAAG,gBAAgB,EACrD,KAAK,SAAS,UAAU,GAAG,UAAU,EAErC,OAAO,EAAE,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,GACvE,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,CA8BrD"}
1
+ {"version":3,"file":"helper.d.ts","sourceRoot":"","sources":["../src/helper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,mBAAmB,EACnB,MAAM,EACN,UAAU,EAEV,gBAAgB,EAChB,MAAM,SAAS,CAAC;AAEjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6IG;AACH,wBAAgB,YAAY,CAC3B,QAAQ,EACR,MAAM,EACN,OAAO,EACP,SAAS,SAAS,gBAAgB,GAAG,gBAAgB,EACrD,KAAK,SAAS,UAAU,GAAG,UAAU,EAErC,OAAO,EAAE,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,GACvE,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,CA8BrD"}
package/dist/index.d.ts CHANGED
@@ -6,12 +6,13 @@ export { executeHelpers } from './executor';
6
6
  export { ErrorFactory } from "./error-factory";
7
7
  export { createDefaultError, createErrorFactory } from './error-factory';
8
8
  export { registerHelper, registerExtensionHook, handleExtensionRegisterResult, } from './registration';
9
- export { Pipeline, CreatePipelineOptions, PipelineReporter, PipelineExtension, PipelineExtensionHook, PipelineExtensionHookOptions, PipelineExtensionHookResult, PipelineExtensionLifecycle, PipelineExtensionHookRegistration, PipelineExtensionRegisterOutput, PipelineDiagnostic, ConflictDiagnostic, MissingDependencyDiagnostic, UnusedHelperDiagnostic, Helper, HelperApplyFn, HelperDescriptor, HelperKind, HelperMode, CreateHelperOptions, HelperApplyOptions, MaybePromise, PipelineStep, PipelineRunState, HelperExecutionSnapshot, PipelineExecutionMetadata, FragmentFinalizationMetadata, PipelineExtensionRollbackErrorMetadata, } from "./types";
9
+ export { createPipelineRollback, runRollbackStack } from './rollback';
10
+ export { PipelineRollback, PipelineRollbackErrorMetadata, RunRollbackStackOptions, } from "./rollback";
11
+ export { Pipeline, CreatePipelineOptions, PipelineReporter, PipelineExtension, PipelineExtensionHook, PipelineExtensionHookOptions, PipelineExtensionHookResult, PipelineExtensionLifecycle, PipelineExtensionHookRegistration, PipelineExtensionRegisterOutput, PipelineDiagnostic, ConflictDiagnostic, MissingDependencyDiagnostic, UnusedHelperDiagnostic, Helper, HelperApplyFn, HelperApplyResult, HelperDescriptor, HelperKind, HelperMode, CreateHelperOptions, HelperApplyOptions, MaybePromise, PipelineStep, PipelineRunState, HelperExecutionSnapshot, PipelineExecutionMetadata, FragmentFinalizationMetadata, PipelineExtensionRollbackErrorMetadata, } from "./types";
10
12
  export { RegisteredHelper, MissingDependencyIssue, } from "./dependency-graph";
11
13
  export { createHelperId, compareHelpers } from './dependency-graph';
12
14
  export { isPromiseLike, maybeThen, maybeTry, processSequentially, } from './async-utils';
13
15
  export { ExtensionHookEntry, ExtensionHookExecution, RollbackErrorArgs, } from "./extensions";
14
- export { createRollbackErrorMetadata } from './extensions';
15
16
  export { OFFICIAL_EXTENSION_BLUEPRINTS } from './extensions/official';
16
17
  export { OfficialExtensionBlueprint } from "./extensions/official";
17
18
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,YAAY,EAAE,8BAA8B,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EACN,cAAc,EACd,qBAAqB,EACrB,6BAA6B,GAC7B,MAAM,gBAAgB,CAAC;AAGxB,YAAY,EAEX,QAAQ,EACR,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,4BAA4B,EAC5B,2BAA2B,EAC3B,0BAA0B,EAC1B,iCAAiC,EACjC,+BAA+B,EAC/B,kBAAkB,EAClB,kBAAkB,EAClB,2BAA2B,EAC3B,sBAAsB,EAGtB,MAAM,EACN,aAAa,EACb,gBAAgB,EAChB,UAAU,EACV,UAAU,EACV,mBAAmB,EACnB,kBAAkB,EAGlB,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,uBAAuB,EACvB,yBAAyB,EACzB,4BAA4B,EAC5B,sCAAsC,GACtC,MAAM,SAAS,CAAC;AAGjB,YAAY,EACX,gBAAgB,EAChB,sBAAsB,GACtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGpE,OAAO,EACN,aAAa,EACb,SAAS,EACT,QAAQ,EACR,mBAAmB,GACnB,MAAM,eAAe,CAAC;AAGvB,YAAY,EACX,kBAAkB,EAClB,sBAAsB,EACtB,iBAAiB,GACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAC;AAG3D,OAAO,EAAE,6BAA6B,EAAE,MAAM,uBAAuB,CAAC;AACtE,YAAY,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,YAAY,EAAE,8BAA8B,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EACN,cAAc,EACd,qBAAqB,EACrB,6BAA6B,GAC7B,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACtE,YAAY,EACX,gBAAgB,EAChB,6BAA6B,EAC7B,uBAAuB,GACvB,MAAM,YAAY,CAAC;AAGpB,YAAY,EAEX,QAAQ,EACR,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,4BAA4B,EAC5B,2BAA2B,EAC3B,0BAA0B,EAC1B,iCAAiC,EACjC,+BAA+B,EAC/B,kBAAkB,EAClB,kBAAkB,EAClB,2BAA2B,EAC3B,sBAAsB,EAGtB,MAAM,EACN,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,UAAU,EACV,UAAU,EACV,mBAAmB,EACnB,kBAAkB,EAElB,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,uBAAuB,EACvB,yBAAyB,EACzB,4BAA4B,EAC5B,sCAAsC,GACtC,MAAM,SAAS,CAAC;AAGjB,YAAY,EACX,gBAAgB,EAChB,sBAAsB,GACtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGpE,OAAO,EACN,aAAa,EACb,SAAS,EACT,QAAQ,EACR,mBAAmB,GACnB,MAAM,eAAe,CAAC;AAGvB,YAAY,EACX,kBAAkB,EAClB,sBAAsB,EACtB,iBAAiB,GACjB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,6BAA6B,EAAE,MAAM,uBAAuB,CAAC;AACtE,YAAY,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC"}
package/dist/index.js CHANGED
@@ -1,29 +1,30 @@
1
1
  import { createHelper as o } from "./helper.js";
2
2
  import { createPipeline as p } from "./createPipeline.js";
3
- import { createPipelineExtension as i } from "./createExtension.js";
4
- import { executeHelpers as m } from "./executor.js";
5
- import { createDefaultError as s, createErrorFactory as c } from "./error-factory.js";
6
- import { handleExtensionRegisterResult as n, registerExtensionHook as E, registerHelper as H } from "./registration.js";
7
- import { compareHelpers as I, createHelperId as u } from "./dependency-graph.js";
8
- import { isPromiseLike as R, maybeThen as T, maybeTry as b, processSequentially as d } from "./async-utils.js";
9
- import { createRollbackErrorMetadata as k } from "./extensions.js";
10
- import { OFFICIAL_EXTENSION_BLUEPRINTS as L } from "./extensions/official.js";
3
+ import { createPipelineExtension as l } from "./createExtension.js";
4
+ import { executeHelpers as c } from "./executor.js";
5
+ import { createDefaultError as x, createErrorFactory as n } from "./error-factory.js";
6
+ import { handleExtensionRegisterResult as f, registerExtensionHook as E, registerHelper as H } from "./registration.js";
7
+ import { createPipelineRollback as u, runRollbackStack as y } from "./rollback.js";
8
+ import { compareHelpers as P, createHelperId as R } from "./dependency-graph.js";
9
+ import { isPromiseLike as S, maybeThen as T, maybeTry as g, processSequentially as F } from "./async-utils.js";
10
+ import { OFFICIAL_EXTENSION_BLUEPRINTS as N } from "./extensions/official.js";
11
11
  export {
12
- L as OFFICIAL_EXTENSION_BLUEPRINTS,
13
- I as compareHelpers,
14
- s as createDefaultError,
15
- c as createErrorFactory,
12
+ N as OFFICIAL_EXTENSION_BLUEPRINTS,
13
+ P as compareHelpers,
14
+ x as createDefaultError,
15
+ n as createErrorFactory,
16
16
  o as createHelper,
17
- u as createHelperId,
17
+ R as createHelperId,
18
18
  p as createPipeline,
19
- i as createPipelineExtension,
20
- k as createRollbackErrorMetadata,
21
- m as executeHelpers,
22
- n as handleExtensionRegisterResult,
23
- R as isPromiseLike,
19
+ l as createPipelineExtension,
20
+ u as createPipelineRollback,
21
+ c as executeHelpers,
22
+ f as handleExtensionRegisterResult,
23
+ S as isPromiseLike,
24
24
  T as maybeThen,
25
- b as maybeTry,
26
- d as processSequentially,
25
+ g as maybeTry,
26
+ F as processSequentially,
27
27
  E as registerExtensionHook,
28
- H as registerHelper
28
+ H as registerHelper,
29
+ y as runRollbackStack
29
30
  };
@@ -0,0 +1,127 @@
1
+ import { Helper, HelperApplyOptions, HelperKind, MaybePromise, PipelineExtensionRollbackErrorMetadata, PipelineReporter } from '../types';
2
+ import { RegisteredHelper } from '../dependency-graph';
3
+ import { Program } from '../async-utils.js';
4
+ import { HelperInvokeOptions, RollbackContext, Halt, RollbackEntry, HelperRollbackPlan, StageEnv } from './pipeline-runner.types.js';
5
+ export declare function isHalt<TRunResult>(value: unknown): value is Halt<TRunResult>;
6
+ /**
7
+ * Builds a rollback handler that first drains helper rollbacks (when present) and then defers to
8
+ * extension rollback handling.
9
+ *
10
+ * @param state
11
+ * @param state.context
12
+ * @param state.extensionCoordinator
13
+ * @param state.extensionState
14
+ * @param helperRollbacks
15
+ * @param onHelperRollbackError
16
+ * @internal
17
+ */
18
+ export declare function makeRollbackHandler<TContext, TOptions, TArtifact, THelper extends {
19
+ key: string;
20
+ }>(state: RollbackContext<TContext, TOptions, TArtifact>, helperRollbacks: RollbackEntry<THelper>[], onHelperRollbackError?: (options: {
21
+ readonly error: unknown;
22
+ readonly helper: THelper;
23
+ readonly errorMetadata: PipelineExtensionRollbackErrorMetadata;
24
+ readonly context: TContext;
25
+ }) => void): (error: unknown) => MaybePromise<void>;
26
+ /**
27
+ * Generic stage constructor that executes an ordered helper list with middleware-style `next()`.
28
+ * Optional rollback capture keeps fragment/builder programs declarative by passing in only the
29
+ * stage-specific arg factories and completion logic.
30
+ *
31
+ * @param options
32
+ * @param options.getOrder
33
+ * @param options.makeArgs
34
+ * @param options.invoke
35
+ * @param options.recordStep
36
+ * @param options.onVisited
37
+ * @param options.registerRollback
38
+ * @internal
39
+ */
40
+ export declare function createHelpersProgram<TContext, TReporter extends PipelineReporter, TKind extends HelperKind, THelper extends Helper<TContext, TInput, TOutput, TReporter, TKind>, TInput, TOutput, TState>(options: {
41
+ getOrder: (state: TState) => RegisteredHelper<THelper>[];
42
+ makeArgs: (state: TState) => (entry: RegisteredHelper<THelper>) => HelperApplyOptions<TContext, TInput, TOutput, TReporter>;
43
+ invoke: (invokeOptions: HelperInvokeOptions<THelper, TInput, TOutput, TContext, TReporter>) => MaybePromise<void>;
44
+ recordStep: (entry: RegisteredHelper<unknown>) => void;
45
+ onVisited: (state: TState, visited: Set<string>) => TState;
46
+ registerRollback?: (helper: THelper, result: unknown) => void;
47
+ }): (state: TState) => MaybePromise<TState>;
48
+ /**
49
+ * Pure finalizer for fragment state that can be composed into a pipeline without knowing the
50
+ * concrete runner shape. Callers supply how to detect halts, how to snapshot fragment execution,
51
+ * and how to apply the finalized artifact back onto state.
52
+ * @param options
53
+ * @param options.isHalt
54
+ * @param options.snapshotFragments
55
+ * @param options.applyArtifact
56
+ */
57
+ export declare function makeFinalizeFragmentsStage<TState, THalt extends Halt<unknown>, TFragments>(options: {
58
+ isHalt: (value: TState | THalt) => value is THalt;
59
+ snapshotFragments: (state: TState) => TFragments;
60
+ applyArtifact: (state: TState, fragments: TFragments) => TState;
61
+ }): Program<TState | THalt>;
62
+ /**
63
+ * Generic stage builder for "after fragments" style hooks. The runner provides the execution logic
64
+ * (e.g. extension coordinator runLifecycle) and a halt predicate; the program simply short-circuits
65
+ * on halts and applies the provided execution otherwise.
66
+ * @param options
67
+ * @param options.isHalt
68
+ * @param options.execute
69
+ */
70
+ export declare function makeAfterFragmentsStage<TState, THalt extends Halt<unknown>>(options: {
71
+ isHalt: (value: TState | THalt) => value is THalt;
72
+ execute: (state: TState) => MaybePromise<TState>;
73
+ }): Program<TState | THalt>;
74
+ /**
75
+ * Commit stage builder that keeps the runner point-free: supply how to commit extensions and how to
76
+ * roll back with a halt sentinel, and the program handles sync/async errors uniformly.
77
+ * @param options
78
+ * @param options.isHalt
79
+ * @param options.commit
80
+ * @param options.rollbackToHalt
81
+ */
82
+ export declare function makeCommitStage<TState, THalt extends Halt<unknown>>(options: {
83
+ isHalt: (value: TState | THalt) => value is THalt;
84
+ commit: (state: TState) => MaybePromise<void>;
85
+ rollbackToHalt: (state: TState, error: unknown) => MaybePromise<THalt>;
86
+ }): Program<TState | THalt>;
87
+ /**
88
+ * Simple finalizer that snapshots helpers/diagnostics into state unless a halt is present.
89
+ * @param options
90
+ * @param options.isHalt
91
+ * @param options.finalize
92
+ */
93
+ export declare function makeFinalizeResultStage<TState, THalt extends Halt<unknown>>(options: {
94
+ isHalt: (value: TState | THalt) => value is THalt;
95
+ finalize: (state: TState) => TState;
96
+ }): Program<TState | THalt>;
97
+ export type HelperStageSpec<TState, TContext, TReporter extends PipelineReporter, TKind extends HelperKind, THelper extends Helper<TContext, TInput, TOutput, TReporter, TKind>, TInput, TOutput> = {
98
+ readonly getOrder: (state: TState) => RegisteredHelper<THelper>[];
99
+ readonly makeArgs: (state: TState) => (entry: RegisteredHelper<THelper>) => HelperApplyOptions<TContext, TInput, TOutput, TReporter>;
100
+ readonly onVisited: (state: TState, visited: Set<string>, rollbacks: RollbackEntry<THelper>[]) => TState;
101
+ readonly readRollbacks?: (state: TState) => RollbackEntry<THelper>[] | undefined;
102
+ };
103
+ export declare function runHelperRollbackPlan<TContext, TOptions, TArtifact, THelper extends {
104
+ key: string;
105
+ }>(plan: HelperRollbackPlan<TContext, TOptions, TArtifact, THelper>, error: unknown): MaybePromise<void>;
106
+ export type HelperStageRunPlan<TState, TRunResult, TContext, TOptions, TArtifact, THelper extends {
107
+ key: string;
108
+ }> = {
109
+ readonly state: TState;
110
+ readonly program: Program<TState>;
111
+ readonly rollbackPlan: HelperRollbackPlan<TContext, TOptions, TArtifact, THelper>;
112
+ readonly halt: (error?: unknown) => Halt<TRunResult>;
113
+ };
114
+ export declare function runHelperStageWithRollback<TState, TRunResult, TContext, TOptions, TArtifact, THelper extends {
115
+ key: string;
116
+ }>(plan: HelperStageRunPlan<TState, TRunResult, TContext, TOptions, TArtifact, THelper>): MaybePromise<TState | Halt<TRunResult>>;
117
+ export type RollbackToHaltPlan<TRunResult, TContext, TOptions, TArtifact, THelper extends {
118
+ key: string;
119
+ }> = {
120
+ readonly rollbackPlan: HelperRollbackPlan<TContext, TOptions, TArtifact, THelper>;
121
+ readonly halt: (error?: unknown) => Halt<TRunResult>;
122
+ };
123
+ export declare function runRollbackToHalt<TRunResult, TContext, TOptions, TArtifact, THelper extends {
124
+ key: string;
125
+ }>(plan: RollbackToHaltPlan<TRunResult, TContext, TOptions, TArtifact, THelper>, error: unknown): MaybePromise<Halt<TRunResult>>;
126
+ export declare function makeHelperStageFactory<TState, TRunResult, TContext, TOptions, TArtifact, TReporter extends PipelineReporter>(config: StageEnv<TState, TRunResult, TContext, TOptions, TArtifact, TReporter>): <TKind extends HelperKind, THelper extends Helper<TContext, TInput, TOutput, TReporter, TKind>, TInput, TOutput>(spec: HelperStageSpec<TState, TContext, TReporter, TKind, THelper, TInput, TOutput>) => Program<TState | Halt<TRunResult>>;
127
+ //# sourceMappingURL=pipeline-program-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline-program-utils.d.ts","sourceRoot":"","sources":["../../src/internal/pipeline-program-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,161 @@
1
+ import { maybeTry as g, maybeThen as H, isPromiseLike as S } from "../async-utils.js";
2
+ import { executeHelpers as x } from "../executor.js";
3
+ import { runRollbackStack as y } from "../rollback.js";
4
+ function O(r) {
5
+ return !!(r && typeof r == "object" && "__halt" in r && r.__halt === !0);
6
+ }
7
+ function C(r) {
8
+ const {
9
+ getOrder: t,
10
+ makeArgs: n,
11
+ invoke: o,
12
+ recordStep: l,
13
+ onVisited: a,
14
+ registerRollback: k
15
+ } = r, b = (c, i, p) => {
16
+ const s = o({ helper: c, args: i, next: p });
17
+ return k ? S(s) ? s.then((e) => {
18
+ k(c, e);
19
+ }) : (k(c, s), s) : s;
20
+ };
21
+ return (c) => {
22
+ const i = t(c), p = x(i, n(c), b, l);
23
+ return H(
24
+ p,
25
+ (s) => a(c, s)
26
+ );
27
+ };
28
+ }
29
+ function T(r) {
30
+ const { isHalt: t, snapshotFragments: n, applyArtifact: o } = r;
31
+ return (l) => t(l) ? l : o(l, n(l));
32
+ }
33
+ function _(r) {
34
+ const { isHalt: t, execute: n } = r;
35
+ return (o) => t(o) ? o : n(o);
36
+ }
37
+ function z(r) {
38
+ const { isHalt: t, commit: n, rollbackToHalt: o } = r, l = (a) => {
39
+ const k = () => a;
40
+ return g(
41
+ () => H(n(a), k),
42
+ (c) => o(a, c)
43
+ );
44
+ };
45
+ return (a) => t(a) ? a : l(a);
46
+ }
47
+ function V(r) {
48
+ const { isHalt: t, finalize: n } = r;
49
+ return (o) => t(o) ? o : n(o);
50
+ }
51
+ function E(r, t) {
52
+ const { context: n, rollbackContext: o, helperRollbacks: l, onHelperRollbackError: a } = r, k = o.extensionCoordinator && o.extensionState ? o.extensionCoordinator.createRollbackHandler(
53
+ o.extensionState
54
+ ) : (i) => {
55
+ throw i;
56
+ };
57
+ return g(() => H(
58
+ y(
59
+ l.map((i) => ({
60
+ ...i.rollback,
61
+ key: i.helper.key
62
+ })),
63
+ {
64
+ source: "helper",
65
+ onError: ({
66
+ error: i,
67
+ metadata: p,
68
+ entry: s
69
+ }) => {
70
+ const e = l.find(
71
+ (u) => u.helper.key === (s.key ?? "")
72
+ );
73
+ e && a && a({
74
+ error: i,
75
+ helper: e.helper,
76
+ errorMetadata: p,
77
+ context: n
78
+ });
79
+ }
80
+ }
81
+ ),
82
+ () => k(t)
83
+ ), () => {
84
+ });
85
+ }
86
+ function P(r) {
87
+ const { state: t, program: n, rollbackPlan: o, halt: l } = r;
88
+ return g(() => n(t), (b) => F(
89
+ {
90
+ rollbackPlan: o,
91
+ halt: l
92
+ },
93
+ b
94
+ ));
95
+ }
96
+ function F(r, t) {
97
+ return H(
98
+ E(r.rollbackPlan, t),
99
+ () => r.halt(t)
100
+ );
101
+ }
102
+ function j(r) {
103
+ return function(n) {
104
+ const {
105
+ pushStep: o,
106
+ toRollbackContext: l,
107
+ halt: a,
108
+ isHalt: k,
109
+ onHelperRollbackError: b
110
+ } = r, c = ({
111
+ helper: e,
112
+ args: u,
113
+ next: m
114
+ }) => e.apply(u, m), i = (e) => o(e), p = (e) => (u, m) => {
115
+ if (!(!m || typeof m != "object") && "rollback" in m) {
116
+ const f = m.rollback;
117
+ f && e.push({ helper: u, rollback: f });
118
+ }
119
+ }, s = () => b ? (e) => b({
120
+ ...e,
121
+ helper: e.helper
122
+ }) : void 0;
123
+ return (e) => {
124
+ if (k(e))
125
+ return e;
126
+ const u = [
127
+ ...n.readRollbacks?.(e) ?? []
128
+ ], m = l(e), f = C({
129
+ getOrder: n.getOrder,
130
+ makeArgs: n.makeArgs,
131
+ invoke: c,
132
+ recordStep: i,
133
+ onVisited: (h, R) => n.onVisited(h, R, u),
134
+ registerRollback: p(u)
135
+ }), d = {
136
+ context: m.context,
137
+ rollbackContext: m,
138
+ helperRollbacks: u,
139
+ onHelperRollbackError: s()
140
+ };
141
+ return P({
142
+ state: e,
143
+ program: f,
144
+ rollbackPlan: d,
145
+ halt: a
146
+ });
147
+ };
148
+ };
149
+ }
150
+ export {
151
+ C as createHelpersProgram,
152
+ O as isHalt,
153
+ _ as makeAfterFragmentsStage,
154
+ z as makeCommitStage,
155
+ T as makeFinalizeFragmentsStage,
156
+ V as makeFinalizeResultStage,
157
+ j as makeHelperStageFactory,
158
+ E as runHelperRollbackPlan,
159
+ P as runHelperStageWithRollback,
160
+ F as runRollbackToHalt
161
+ };