@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.
- package/README.md +71 -88
- package/dist/async-utils.d.ts +14 -0
- package/dist/async-utils.d.ts.map +1 -1
- package/dist/async-utils.js +18 -13
- package/dist/createExtension.d.ts +7 -1
- package/dist/createExtension.d.ts.map +1 -1
- package/dist/createPipeline.d.ts.map +1 -1
- package/dist/createPipeline.js +6 -119
- package/dist/dependency-graph.d.ts +6 -0
- package/dist/dependency-graph.d.ts.map +1 -1
- package/dist/dependency-graph.js +73 -65
- package/dist/error-factory.d.ts +1 -1
- package/dist/extensions.d.ts.map +1 -1
- package/dist/extensions.js +61 -62
- package/dist/helper.d.ts +27 -16
- package/dist/helper.d.ts.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -21
- package/dist/internal/pipeline-program-utils.d.ts +127 -0
- package/dist/internal/pipeline-program-utils.d.ts.map +1 -0
- package/dist/internal/pipeline-program-utils.js +161 -0
- package/dist/internal/pipeline-runner.types.d.ts +117 -1
- package/dist/internal/pipeline-runner.types.d.ts.map +1 -1
- package/dist/internal/runner/context.d.ts +6 -0
- package/dist/internal/runner/context.d.ts.map +1 -0
- package/dist/internal/runner/context.js +169 -0
- package/dist/internal/runner/execution.d.ts +6 -0
- package/dist/internal/runner/execution.d.ts.map +1 -0
- package/dist/internal/runner/execution.js +40 -0
- package/dist/internal/{pipeline-runner.d.ts → runner/index.d.ts} +3 -8
- package/dist/internal/runner/index.d.ts.map +1 -0
- package/dist/internal/runner/index.js +11 -0
- package/dist/internal/runner/program.d.ts +8 -0
- package/dist/internal/runner/program.d.ts.map +1 -0
- package/dist/internal/runner/program.js +294 -0
- package/dist/makePipeline.d.ts +20 -0
- package/dist/makePipeline.d.ts.map +1 -0
- package/dist/makePipeline.js +139 -0
- package/dist/registration.d.ts.map +1 -1
- package/dist/registration.js +17 -15
- package/dist/rollback.d.ts +94 -0
- package/dist/rollback.d.ts.map +1 -0
- package/dist/rollback.js +46 -0
- package/dist/types.d.ts +37 -3
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/internal/pipeline-runner.d.ts.map +0 -1
- package/dist/internal/pipeline-runner.js +0 -257
package/dist/extensions.d.ts.map
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/extensions.js
CHANGED
|
@@ -1,89 +1,88 @@
|
|
|
1
|
-
import { processSequentially as
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
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:
|
|
7
|
-
message:
|
|
8
|
-
stack:
|
|
9
|
-
cause:
|
|
7
|
+
name: r,
|
|
8
|
+
message: e,
|
|
9
|
+
stack: s,
|
|
10
|
+
cause: n
|
|
10
11
|
};
|
|
11
12
|
}
|
|
12
|
-
return typeof
|
|
13
|
-
message:
|
|
13
|
+
return typeof o == "string" ? {
|
|
14
|
+
message: o
|
|
14
15
|
} : {};
|
|
15
16
|
}
|
|
16
|
-
function
|
|
17
|
-
let
|
|
18
|
-
const
|
|
19
|
-
(i) => i.lifecycle ===
|
|
20
|
-
),
|
|
21
|
-
context:
|
|
22
|
-
options:
|
|
23
|
-
lifecycle:
|
|
24
|
-
},
|
|
25
|
-
() =>
|
|
26
|
-
const
|
|
27
|
-
...
|
|
28
|
-
artifact:
|
|
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(
|
|
31
|
-
return Promise.resolve(
|
|
32
|
-
a && (a.artifact !== void 0 && (
|
|
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 (
|
|
38
|
-
return
|
|
38
|
+
if (u)
|
|
39
|
+
return u.artifact !== void 0 && (n = u.artifact), void c.push({
|
|
39
40
|
hook: i,
|
|
40
|
-
result:
|
|
41
|
+
result: u
|
|
41
42
|
});
|
|
42
43
|
}),
|
|
43
|
-
(i) =>
|
|
44
|
-
d(
|
|
44
|
+
(i) => l(
|
|
45
|
+
d(c, t, s),
|
|
45
46
|
() => {
|
|
46
47
|
throw i;
|
|
47
48
|
}
|
|
48
49
|
)
|
|
49
50
|
);
|
|
50
|
-
return
|
|
51
|
+
return l(h, () => ({ artifact: n, results: c }));
|
|
51
52
|
}
|
|
52
|
-
function
|
|
53
|
-
return
|
|
54
|
-
const
|
|
55
|
-
if (!
|
|
53
|
+
function g(o) {
|
|
54
|
+
return f(o, (r) => {
|
|
55
|
+
const e = r.result.commit;
|
|
56
|
+
if (!e)
|
|
56
57
|
return;
|
|
57
|
-
const
|
|
58
|
-
if (k(
|
|
59
|
-
return
|
|
58
|
+
const s = e();
|
|
59
|
+
if (k(s))
|
|
60
|
+
return s.then(() => {
|
|
60
61
|
});
|
|
61
62
|
});
|
|
62
63
|
}
|
|
63
|
-
function d(
|
|
64
|
-
const
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
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
|
-
|
|
86
|
-
|
|
84
|
+
g as commitExtensionResults,
|
|
85
|
+
E as createRollbackErrorMetadata,
|
|
87
86
|
d as rollbackExtensionResults,
|
|
88
|
-
|
|
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**:
|
|
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 {
|
|
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: ({
|
|
102
|
+
* apply: ({ output, context }) => {
|
|
95
103
|
* const path = context.outputPath;
|
|
96
|
-
* const
|
|
104
|
+
* const before = [...output]; // Capture current in-memory state
|
|
97
105
|
*
|
|
98
|
-
*
|
|
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
|
-
* () =>
|
|
106
|
-
*
|
|
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 ({
|
|
130
|
+
* apply: async ({ output, context }) => {
|
|
120
131
|
* try {
|
|
121
|
-
* const formatted = await prettier.format(
|
|
132
|
+
* const formatted = await prettier.format(output.join(''), {
|
|
122
133
|
* parser: 'php',
|
|
123
134
|
* });
|
|
124
|
-
* return {
|
|
135
|
+
* return { output: formatted.split('') }; // Optionally return a new output value
|
|
125
136
|
* } catch (error) {
|
|
126
|
-
* context.reporter.
|
|
137
|
+
* context.reporter.warn?.('Formatting failed', { error });
|
|
127
138
|
* throw error;
|
|
128
139
|
* }
|
|
129
140
|
* },
|
package/dist/helper.d.ts.map
CHANGED
|
@@ -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
|
|
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 {
|
|
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
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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,
|
|
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
|
|
4
|
-
import { executeHelpers as
|
|
5
|
-
import { createDefaultError as
|
|
6
|
-
import { handleExtensionRegisterResult as
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import { OFFICIAL_EXTENSION_BLUEPRINTS as
|
|
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
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
N as OFFICIAL_EXTENSION_BLUEPRINTS,
|
|
13
|
+
P as compareHelpers,
|
|
14
|
+
x as createDefaultError,
|
|
15
|
+
n as createErrorFactory,
|
|
16
16
|
o as createHelper,
|
|
17
|
-
|
|
17
|
+
R as createHelperId,
|
|
18
18
|
p as createPipeline,
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
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
|
-
|
|
26
|
-
|
|
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
|
+
};
|