@wpkernel/pipeline 1.0.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/makeResumablePipeline.d.ts +6 -0
- package/dist/core/makeResumablePipeline.d.ts.map +1 -0
- package/dist/core/makeResumablePipeline.js +160 -0
- package/dist/core/runner/context.d.ts +5 -2
- package/dist/core/runner/context.d.ts.map +1 -1
- package/dist/core/runner/context.js +66 -43
- package/dist/core/runner/execution.d.ts +8 -2
- package/dist/core/runner/execution.d.ts.map +1 -1
- package/dist/core/runner/execution.js +119 -49
- package/dist/core/runner/index.d.ts +4 -1
- package/dist/core/runner/index.d.ts.map +1 -1
- package/dist/core/runner/index.js +11 -6
- package/dist/core/runner/program.d.ts +5 -2
- package/dist/core/runner/program.d.ts.map +1 -1
- package/dist/core/runner/program.js +111 -94
- package/dist/core/runner/stage-factories.d.ts +15 -6
- package/dist/core/runner/stage-factories.d.ts.map +1 -1
- package/dist/core/runner/stage-factories.js +90 -73
- package/dist/core/runner/types.d.ts +15 -2
- package/dist/core/runner/types.d.ts.map +1 -1
- package/dist/core/types.d.ts +52 -3
- package/dist/core/types.d.ts.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +25 -23
- package/dist/standard-pipeline/runner/index.d.ts.map +1 -1
- package/dist/standard-pipeline/runner/index.js +4 -3
- package/package.json +1 -1
|
@@ -1,146 +1,163 @@
|
|
|
1
1
|
import { composeK as h, maybeThen as b } from "../async-utils.js";
|
|
2
|
-
import { makeCommitStage as R, makeAfterFragmentsStage as
|
|
3
|
-
const
|
|
4
|
-
|
|
2
|
+
import { makeCommitStage as R, makeAfterFragmentsStage as A, makeFinalizeResultStage as H, isHalt as l, makeHelperStageFactory as w, isPaused as g } from "./stage-factories.js";
|
|
3
|
+
const _ = (n) => n.stageIndex ?? 0, v = (n, a) => ({
|
|
4
|
+
stageIndex: _(n),
|
|
5
|
+
state: n,
|
|
6
|
+
token: a?.token,
|
|
7
|
+
pauseKind: a?.pauseKind,
|
|
8
|
+
payload: a?.payload,
|
|
9
|
+
createdAt: Date.now()
|
|
10
|
+
}), C = (n, a) => ({
|
|
11
|
+
__paused: !0,
|
|
12
|
+
snapshot: v(n, a)
|
|
13
|
+
}), L = (n, a) => {
|
|
14
|
+
const u = (e) => ({
|
|
5
15
|
__halt: !0,
|
|
6
|
-
error:
|
|
7
|
-
}),
|
|
8
|
-
context:
|
|
9
|
-
reporter:
|
|
10
|
-
userState:
|
|
11
|
-
}),
|
|
12
|
-
pushStep:
|
|
13
|
-
toRollbackContext: (
|
|
14
|
-
context:
|
|
15
|
-
extensionCoordinator:
|
|
16
|
-
extensionState:
|
|
17
|
-
extensionStack:
|
|
16
|
+
error: e
|
|
17
|
+
}), f = (e) => (t) => ({
|
|
18
|
+
context: e.context,
|
|
19
|
+
reporter: e.reporter,
|
|
20
|
+
userState: e.userState
|
|
21
|
+
}), x = {
|
|
22
|
+
pushStep: a.pushStep,
|
|
23
|
+
toRollbackContext: (e) => ({
|
|
24
|
+
context: e.context,
|
|
25
|
+
extensionCoordinator: e.extensionCoordinator,
|
|
26
|
+
extensionState: e.extensionState,
|
|
27
|
+
extensionStack: e.extensionStack
|
|
18
28
|
}),
|
|
19
|
-
halt:
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
+
halt: u,
|
|
30
|
+
pause: n.options.supportsPause ? (e, t) => C(e, t) : void 0,
|
|
31
|
+
isHalt: l,
|
|
32
|
+
onHelperRollbackError: n.options.onHelperRollbackError
|
|
33
|
+
}, k = w({
|
|
34
|
+
pushStep: a.pushStep,
|
|
35
|
+
toRollbackContext: (e) => ({
|
|
36
|
+
context: e.context,
|
|
37
|
+
extensionCoordinator: e.extensionCoordinator,
|
|
38
|
+
extensionState: e.extensionState,
|
|
39
|
+
extensionStack: e.extensionStack
|
|
29
40
|
}),
|
|
30
|
-
halt:
|
|
31
|
-
isHalt:
|
|
32
|
-
onHelperRollbackError:
|
|
33
|
-
}),
|
|
34
|
-
const
|
|
35
|
-
getOrder: (
|
|
36
|
-
makeArgs:
|
|
37
|
-
onVisited: (
|
|
38
|
-
readRollbacks: (
|
|
41
|
+
halt: u,
|
|
42
|
+
isHalt: l,
|
|
43
|
+
onHelperRollbackError: n.options.onHelperRollbackError
|
|
44
|
+
}), p = (e, t, s) => {
|
|
45
|
+
const i = {
|
|
46
|
+
getOrder: (o) => o.helperOrders?.get(e) ?? [],
|
|
47
|
+
makeArgs: f,
|
|
48
|
+
onVisited: (o, r, c) => t?.onVisited ? t.onVisited(o, r, c) : o,
|
|
49
|
+
readRollbacks: (o) => o.helperRollbacks?.get(e)?.map((r) => r.helper) ?? [],
|
|
39
50
|
invoke: ({
|
|
40
|
-
helper:
|
|
41
|
-
args:
|
|
42
|
-
next:
|
|
51
|
+
helper: o,
|
|
52
|
+
args: r,
|
|
53
|
+
next: c
|
|
43
54
|
}) => {
|
|
44
|
-
if (typeof
|
|
45
|
-
return
|
|
46
|
-
if (typeof
|
|
47
|
-
return
|
|
55
|
+
if (typeof o == "function")
|
|
56
|
+
return o(r, c);
|
|
57
|
+
if (typeof o == "object" && o !== null && "apply" in o && typeof o.apply == "function")
|
|
58
|
+
return o.apply(r, c);
|
|
48
59
|
throw new Error(
|
|
49
|
-
`Invalid helper: expected function or object with .apply method. Got: ${typeof
|
|
60
|
+
`Invalid helper: expected function or object with .apply method. Got: ${typeof o}`
|
|
50
61
|
);
|
|
51
62
|
},
|
|
52
63
|
...t
|
|
53
64
|
};
|
|
54
|
-
return t?.makeArgs ?
|
|
55
|
-
state:
|
|
56
|
-
helper:
|
|
57
|
-
context:
|
|
58
|
-
})),
|
|
59
|
-
|
|
60
|
-
|
|
65
|
+
return t?.makeArgs ? i.makeArgs = t.makeArgs : s && (i.makeArgs = (o) => (r) => s({
|
|
66
|
+
state: o,
|
|
67
|
+
helper: r.helper,
|
|
68
|
+
context: o.context
|
|
69
|
+
})), k(
|
|
70
|
+
e,
|
|
71
|
+
i
|
|
61
72
|
);
|
|
62
|
-
}, m = (
|
|
63
|
-
isHalt:
|
|
73
|
+
}, m = (e) => A({
|
|
74
|
+
isHalt: l,
|
|
75
|
+
isPaused: g,
|
|
64
76
|
execute: (t) => {
|
|
65
|
-
t.executedLifecycles.add(
|
|
66
|
-
const
|
|
67
|
-
if (!
|
|
77
|
+
t.executedLifecycles.add(e);
|
|
78
|
+
const s = t.extensionCoordinator;
|
|
79
|
+
if (!s)
|
|
68
80
|
return t;
|
|
69
|
-
const
|
|
81
|
+
const i = a.buildHookOptions(
|
|
70
82
|
t,
|
|
71
|
-
|
|
83
|
+
e
|
|
72
84
|
);
|
|
73
85
|
return b(
|
|
74
|
-
|
|
75
|
-
|
|
86
|
+
s.runLifecycle(
|
|
87
|
+
e,
|
|
76
88
|
{
|
|
77
|
-
hooks:
|
|
78
|
-
hookOptions:
|
|
89
|
+
hooks: n.extensionHooks,
|
|
90
|
+
hookOptions: i
|
|
79
91
|
}
|
|
80
92
|
),
|
|
81
|
-
(
|
|
93
|
+
(o) => ({
|
|
82
94
|
...t,
|
|
83
|
-
extensionState:
|
|
95
|
+
extensionState: o,
|
|
84
96
|
extensionStack: [
|
|
85
97
|
...t.extensionStack ?? [],
|
|
86
98
|
{
|
|
87
|
-
coordinator:
|
|
88
|
-
state:
|
|
99
|
+
coordinator: s,
|
|
100
|
+
state: o
|
|
89
101
|
}
|
|
90
102
|
],
|
|
91
|
-
userState:
|
|
103
|
+
userState: o.artifact
|
|
92
104
|
})
|
|
93
105
|
);
|
|
94
106
|
}
|
|
95
107
|
}), S = R({
|
|
96
|
-
isHalt:
|
|
97
|
-
|
|
98
|
-
|
|
108
|
+
isHalt: l,
|
|
109
|
+
isPaused: g,
|
|
110
|
+
commit: (e) => {
|
|
111
|
+
const t = e.extensionCoordinator;
|
|
99
112
|
if (t)
|
|
100
|
-
return t.commit(
|
|
113
|
+
return t.commit(e.extensionState);
|
|
101
114
|
},
|
|
102
|
-
rollbackToHalt: (
|
|
115
|
+
rollbackToHalt: (e, t) => ({
|
|
103
116
|
__halt: !0,
|
|
104
117
|
error: t
|
|
105
118
|
})
|
|
106
|
-
}),
|
|
107
|
-
isHalt:
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
119
|
+
}), d = H({
|
|
120
|
+
isHalt: l,
|
|
121
|
+
isPaused: g,
|
|
122
|
+
finalize: (e) => {
|
|
123
|
+
const s = {
|
|
124
|
+
...e,
|
|
125
|
+
diagnostics: n.diagnosticManager.readDiagnostics()
|
|
112
126
|
};
|
|
113
|
-
if (
|
|
114
|
-
const
|
|
115
|
-
for (const
|
|
116
|
-
|
|
117
|
-
if (
|
|
118
|
-
const
|
|
119
|
-
|
|
120
|
-
`The following extension hooks will be ignored because their lifecycles were not executed: ${
|
|
127
|
+
if (n.extensionHooks.length > 0) {
|
|
128
|
+
const i = s.executedLifecycles, o = /* @__PURE__ */ new Set();
|
|
129
|
+
for (const r of n.extensionHooks)
|
|
130
|
+
i?.has(r.lifecycle) || o.add(r.lifecycle);
|
|
131
|
+
if (o.size > 0) {
|
|
132
|
+
const r = Array.from(o).map((c) => `"${c}"`).join(", ");
|
|
133
|
+
s.reporter.warn?.(
|
|
134
|
+
`The following extension hooks will be ignored because their lifecycles were not executed: ${r}`
|
|
121
135
|
);
|
|
122
136
|
}
|
|
123
137
|
}
|
|
124
|
-
return
|
|
138
|
+
return s;
|
|
125
139
|
}
|
|
126
140
|
}), y = {
|
|
127
|
-
runnerEnv:
|
|
128
|
-
finalizeResult:
|
|
141
|
+
runnerEnv: x,
|
|
142
|
+
finalizeResult: d,
|
|
129
143
|
makeLifecycleStage: m,
|
|
130
144
|
commitStage: S,
|
|
131
|
-
makeHelperStage:
|
|
145
|
+
makeHelperStage: p,
|
|
132
146
|
extensions: {
|
|
133
|
-
lifecycles:
|
|
147
|
+
lifecycles: n.extensionLifecycles
|
|
134
148
|
},
|
|
135
|
-
diagnosticManager:
|
|
149
|
+
diagnosticManager: n.diagnosticManager
|
|
136
150
|
};
|
|
137
|
-
if (!
|
|
151
|
+
if (!n.stages)
|
|
138
152
|
throw new Error(
|
|
139
153
|
"Agnostic Runner requires 'stages' factory to be defined."
|
|
140
154
|
);
|
|
141
|
-
|
|
142
|
-
|
|
155
|
+
return n.stages(y);
|
|
156
|
+
}, E = (n, a) => {
|
|
157
|
+
const u = L(n, a);
|
|
158
|
+
return h(...[...u].reverse());
|
|
143
159
|
};
|
|
144
160
|
export {
|
|
145
|
-
|
|
161
|
+
E as createAgnosticProgram,
|
|
162
|
+
L as createAgnosticStages
|
|
146
163
|
};
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { Program } from '../async-utils';
|
|
2
|
-
import { Helper, HelperApplyOptions, HelperKind, MaybePromise, PipelineReporter } from '../types';
|
|
2
|
+
import { Helper, HelperApplyOptions, HelperKind, MaybePromise, PipelinePaused, PipelineReporter } from '../types';
|
|
3
3
|
import { RegisteredHelper } from '../dependency-graph';
|
|
4
4
|
import { Halt, HelperInvokeOptions, StageEnv, HelperStageSpec } from './types';
|
|
5
5
|
export declare function isHalt<TRunResult>(value: unknown): value is Halt<TRunResult>;
|
|
6
|
+
export declare function isPaused<TState>(value: unknown): value is PipelinePaused<TState>;
|
|
6
7
|
/**
|
|
7
8
|
* Generic stage constructor that executes an ordered helper list with middleware-style `next()`.
|
|
8
9
|
* @param options
|
|
@@ -27,43 +28,51 @@ export declare function createHelpersProgram<TContext, TReporter extends Pipelin
|
|
|
27
28
|
* @param options.isHalt
|
|
28
29
|
* @param options.snapshotFragments
|
|
29
30
|
* @param options.applyArtifact
|
|
31
|
+
* @param options.isPaused
|
|
30
32
|
*/
|
|
31
33
|
export declare function makeFinalizeFragmentsStage<TState, THalt extends Halt<unknown>, TFragments>(options: {
|
|
32
34
|
isHalt: (value: TState | THalt) => value is THalt;
|
|
35
|
+
isPaused?: (value: unknown) => value is PipelinePaused<TState>;
|
|
33
36
|
snapshotFragments: (state: TState) => TFragments;
|
|
34
37
|
applyArtifact: (state: TState, fragments: TFragments) => TState;
|
|
35
|
-
}): Program<TState | THalt
|
|
38
|
+
}): Program<TState | THalt | PipelinePaused<TState>>;
|
|
36
39
|
/**
|
|
37
40
|
* Generic stage builder for "after fragments" style hooks.
|
|
38
41
|
* @param options
|
|
39
42
|
* @param options.isHalt
|
|
40
43
|
* @param options.execute
|
|
44
|
+
* @param options.isPaused
|
|
41
45
|
*/
|
|
42
46
|
export declare function makeAfterFragmentsStage<TState, THalt extends Halt<unknown>>(options: {
|
|
43
47
|
isHalt: (value: TState | THalt) => value is THalt;
|
|
48
|
+
isPaused?: (value: unknown) => value is PipelinePaused<TState>;
|
|
44
49
|
execute: (state: TState) => MaybePromise<TState>;
|
|
45
|
-
}): Program<TState | THalt
|
|
50
|
+
}): Program<TState | THalt | PipelinePaused<TState>>;
|
|
46
51
|
/**
|
|
47
52
|
* Commit stage builder.
|
|
48
53
|
* @param options
|
|
49
54
|
* @param options.isHalt
|
|
50
55
|
* @param options.commit
|
|
51
56
|
* @param options.rollbackToHalt
|
|
57
|
+
* @param options.isPaused
|
|
52
58
|
*/
|
|
53
59
|
export declare function makeCommitStage<TState, THalt extends Halt<unknown>>(options: {
|
|
54
60
|
isHalt: (value: TState | THalt) => value is THalt;
|
|
61
|
+
isPaused?: (value: unknown) => value is PipelinePaused<TState>;
|
|
55
62
|
commit: (state: TState) => MaybePromise<void>;
|
|
56
63
|
rollbackToHalt: (state: TState, error: unknown) => MaybePromise<THalt>;
|
|
57
|
-
}): Program<TState | THalt
|
|
64
|
+
}): Program<TState | THalt | PipelinePaused<TState>>;
|
|
58
65
|
/**
|
|
59
66
|
* Simple finalizer that snapshots helpers/diagnostics into state.
|
|
60
67
|
* @param options
|
|
61
68
|
* @param options.isHalt
|
|
62
69
|
* @param options.finalize
|
|
70
|
+
* @param options.isPaused
|
|
63
71
|
*/
|
|
64
72
|
export declare function makeFinalizeResultStage<TState, THalt extends Halt<unknown>>(options: {
|
|
65
73
|
isHalt: (value: TState | THalt) => value is THalt;
|
|
74
|
+
isPaused?: (value: unknown) => value is PipelinePaused<TState>;
|
|
66
75
|
finalize: (state: TState) => TState;
|
|
67
|
-
}): Program<TState | THalt
|
|
68
|
-
export declare function makeHelperStageFactory<TState, TRunResult, TContext, TOptions, TReporter extends PipelineReporter, TUserState>(config: StageEnv<TState, TRunResult, TContext, TOptions, TReporter, TUserState>): <TKind extends HelperKind, THelper extends Helper<TContext, TInput, TOutput, TReporter, TKind>, TInput, TOutput>(kind: string, spec: HelperStageSpec<TState, TContext, TReporter, TKind, THelper, TInput, TOutput>) => Program<TState | Halt<TRunResult>>;
|
|
76
|
+
}): Program<TState | THalt | PipelinePaused<TState>>;
|
|
77
|
+
export declare function makeHelperStageFactory<TState, TRunResult, TContext, TOptions, TReporter extends PipelineReporter, TUserState>(config: StageEnv<TState, TRunResult, TContext, TOptions, TReporter, TUserState>): <TKind extends HelperKind, THelper extends Helper<TContext, TInput, TOutput, TReporter, TKind>, TInput, TOutput>(kind: string, spec: HelperStageSpec<TState, TContext, TReporter, TKind, THelper, TInput, TOutput>) => Program<TState | Halt<TRunResult> | PipelinePaused<TState>>;
|
|
69
78
|
//# sourceMappingURL=stage-factories.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stage-factories.d.ts","sourceRoot":"","sources":["../../../src/core/runner/stage-factories.ts"],"names":[],"mappings":"AAAA,OAAO,EAIN,KAAK,OAAO,EACZ,MAAM,gBAAgB,CAAC;AAGxB,OAAO,KAAK,EACX,MAAM,EACN,kBAAkB,EAClB,UAAU,EACV,YAAY,
|
|
1
|
+
{"version":3,"file":"stage-factories.d.ts","sourceRoot":"","sources":["../../../src/core/runner/stage-factories.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,121 +1,138 @@
|
|
|
1
|
-
import { maybeTry as
|
|
2
|
-
import { executeHelpers as
|
|
3
|
-
import { runHelperStageWithRollback as
|
|
4
|
-
function
|
|
1
|
+
import { maybeTry as R, maybeThen as S, isPromiseLike as y } from "../async-utils.js";
|
|
2
|
+
import { executeHelpers as _ } from "../execution-utils.js";
|
|
3
|
+
import { runHelperStageWithRollback as C } from "./rollback.js";
|
|
4
|
+
function v(r) {
|
|
5
5
|
return !!(r && typeof r == "object" && "__halt" in r && r.__halt === !0);
|
|
6
6
|
}
|
|
7
|
-
function
|
|
7
|
+
function E(r) {
|
|
8
|
+
return !!(r && typeof r == "object" && "__paused" in r && r.__paused === !0);
|
|
9
|
+
}
|
|
10
|
+
function F(r) {
|
|
8
11
|
const {
|
|
9
|
-
getOrder:
|
|
10
|
-
makeArgs:
|
|
11
|
-
invoke:
|
|
12
|
-
recordStep:
|
|
13
|
-
onVisited:
|
|
14
|
-
registerRollback:
|
|
15
|
-
} = r,
|
|
16
|
-
const s =
|
|
17
|
-
return
|
|
18
|
-
|
|
19
|
-
}) : (
|
|
12
|
+
getOrder: u,
|
|
13
|
+
makeArgs: n,
|
|
14
|
+
invoke: t,
|
|
15
|
+
recordStep: e,
|
|
16
|
+
onVisited: l,
|
|
17
|
+
registerRollback: i
|
|
18
|
+
} = r, k = (c, f, p) => {
|
|
19
|
+
const s = t({ helper: c, args: f, next: p });
|
|
20
|
+
return i ? y(s) ? s.then((o) => {
|
|
21
|
+
i(c, o);
|
|
22
|
+
}) : (i(c, s), s) : s;
|
|
20
23
|
};
|
|
21
|
-
return (
|
|
22
|
-
const
|
|
24
|
+
return (c) => {
|
|
25
|
+
const f = u(c), p = _(f, n(c), k, e);
|
|
23
26
|
return S(
|
|
24
27
|
p,
|
|
25
|
-
(s) =>
|
|
28
|
+
(s) => l(c, s)
|
|
26
29
|
);
|
|
27
30
|
};
|
|
28
31
|
}
|
|
29
32
|
function z(r) {
|
|
30
|
-
const {
|
|
31
|
-
|
|
33
|
+
const {
|
|
34
|
+
isHalt: u,
|
|
35
|
+
isPaused: n,
|
|
36
|
+
snapshotFragments: t,
|
|
37
|
+
applyArtifact: e
|
|
38
|
+
} = r;
|
|
39
|
+
return (l) => n && n(l) || u(l) ? l : e(
|
|
40
|
+
l,
|
|
41
|
+
t(l)
|
|
42
|
+
);
|
|
32
43
|
}
|
|
33
44
|
function T(r) {
|
|
34
|
-
const { isHalt:
|
|
35
|
-
return (e) =>
|
|
45
|
+
const { isHalt: u, isPaused: n, execute: t } = r;
|
|
46
|
+
return (e) => n && n(e) || u(e) ? e : t(e);
|
|
36
47
|
}
|
|
37
48
|
function V(r) {
|
|
38
|
-
const {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
49
|
+
const {
|
|
50
|
+
isHalt: u,
|
|
51
|
+
isPaused: n,
|
|
52
|
+
commit: t,
|
|
53
|
+
rollbackToHalt: e
|
|
54
|
+
} = r, l = (i) => {
|
|
55
|
+
const k = () => i;
|
|
56
|
+
return R(
|
|
57
|
+
() => S(t(i), k),
|
|
58
|
+
(f) => e(i, f)
|
|
43
59
|
);
|
|
44
60
|
};
|
|
45
|
-
return (i) =>
|
|
61
|
+
return (i) => n && n(i) || u(i) ? i : l(i);
|
|
46
62
|
}
|
|
47
|
-
function
|
|
48
|
-
const { isHalt:
|
|
49
|
-
return (e) =>
|
|
63
|
+
function B(r) {
|
|
64
|
+
const { isHalt: u, isPaused: n, finalize: t } = r;
|
|
65
|
+
return (e) => n && n(e) || u(e) ? e : t(e);
|
|
50
66
|
}
|
|
51
67
|
function M(r) {
|
|
52
|
-
return function(
|
|
68
|
+
return function(n, t) {
|
|
53
69
|
const {
|
|
54
|
-
pushStep:
|
|
55
|
-
toRollbackContext:
|
|
56
|
-
halt:
|
|
57
|
-
isHalt:
|
|
58
|
-
onHelperRollbackError:
|
|
59
|
-
} = r,
|
|
70
|
+
pushStep: e,
|
|
71
|
+
toRollbackContext: l,
|
|
72
|
+
halt: i,
|
|
73
|
+
isHalt: k,
|
|
74
|
+
onHelperRollbackError: c
|
|
75
|
+
} = r, f = t.invoke ?? (({
|
|
60
76
|
helper: o,
|
|
61
77
|
args: m,
|
|
62
|
-
next:
|
|
63
|
-
}) => o.apply(m,
|
|
64
|
-
if (!(!
|
|
65
|
-
const
|
|
66
|
-
|
|
78
|
+
next: a
|
|
79
|
+
}) => o.apply(m, a)), p = (o) => (m, a) => {
|
|
80
|
+
if (!(!a || typeof a != "object") && "rollback" in a) {
|
|
81
|
+
const d = a.rollback;
|
|
82
|
+
d && o.push({ helper: m, rollback: d });
|
|
67
83
|
}
|
|
68
|
-
}, s = () =>
|
|
84
|
+
}, s = () => c ? (o) => c({
|
|
69
85
|
...o,
|
|
70
86
|
helper: o.helper
|
|
71
87
|
}) : void 0;
|
|
72
88
|
return (o) => {
|
|
73
|
-
if (
|
|
89
|
+
if (k(o) || E(o))
|
|
74
90
|
return o;
|
|
75
91
|
let m = o.helperExecution;
|
|
76
92
|
m || (m = /* @__PURE__ */ new Map(), o.helperExecution = m);
|
|
77
|
-
let
|
|
78
|
-
|
|
79
|
-
kind:
|
|
93
|
+
let a = m.get(n);
|
|
94
|
+
a || (a = {
|
|
95
|
+
kind: n,
|
|
80
96
|
executed: [],
|
|
81
97
|
missing: [],
|
|
82
98
|
registered: []
|
|
83
99
|
// Registered populated by getOrder result?
|
|
84
|
-
}, m.set(
|
|
85
|
-
const
|
|
86
|
-
|
|
87
|
-
|
|
100
|
+
}, m.set(n, a));
|
|
101
|
+
const d = (g) => {
|
|
102
|
+
e(g), a.executed.push(
|
|
103
|
+
g.helper.key
|
|
88
104
|
);
|
|
89
|
-
},
|
|
90
|
-
...
|
|
91
|
-
],
|
|
92
|
-
getOrder:
|
|
93
|
-
makeArgs:
|
|
94
|
-
invoke:
|
|
95
|
-
recordStep:
|
|
96
|
-
onVisited: (
|
|
97
|
-
registerRollback: p(
|
|
98
|
-
}),
|
|
99
|
-
context:
|
|
100
|
-
rollbackContext:
|
|
101
|
-
helperRollbacks:
|
|
105
|
+
}, b = [
|
|
106
|
+
...t.readRollbacks?.(o) ?? []
|
|
107
|
+
], H = l(o), h = F({
|
|
108
|
+
getOrder: t.getOrder,
|
|
109
|
+
makeArgs: t.makeArgs,
|
|
110
|
+
invoke: f,
|
|
111
|
+
recordStep: d,
|
|
112
|
+
onVisited: (g, x) => t.onVisited(g, x, b),
|
|
113
|
+
registerRollback: p(b)
|
|
114
|
+
}), P = {
|
|
115
|
+
context: H.context,
|
|
116
|
+
rollbackContext: H,
|
|
117
|
+
helperRollbacks: b,
|
|
102
118
|
onHelperRollbackError: s()
|
|
103
119
|
};
|
|
104
|
-
return
|
|
120
|
+
return C({
|
|
105
121
|
state: o,
|
|
106
|
-
program:
|
|
107
|
-
rollbackPlan:
|
|
108
|
-
halt:
|
|
122
|
+
program: h,
|
|
123
|
+
rollbackPlan: P,
|
|
124
|
+
halt: i
|
|
109
125
|
});
|
|
110
126
|
};
|
|
111
127
|
};
|
|
112
128
|
}
|
|
113
129
|
export {
|
|
114
|
-
|
|
115
|
-
|
|
130
|
+
F as createHelpersProgram,
|
|
131
|
+
v as isHalt,
|
|
132
|
+
E as isPaused,
|
|
116
133
|
T as makeAfterFragmentsStage,
|
|
117
134
|
V as makeCommitStage,
|
|
118
135
|
z as makeFinalizeFragmentsStage,
|
|
119
|
-
|
|
136
|
+
B as makeFinalizeResultStage,
|
|
120
137
|
M as makeHelperStageFactory
|
|
121
138
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { RegisteredHelper } from '../dependency-graph';
|
|
2
2
|
import { Program } from '../async-utils';
|
|
3
3
|
import { ErrorFactory } from '../error-factory';
|
|
4
|
-
import { Helper, HelperApplyOptions, HelperExecutionSnapshot, HelperKind, MaybePromise, PipelineDiagnostic, PipelineExtensionHookOptions, PipelineExtensionLifecycle, PipelineExtensionRollbackErrorMetadata, PipelineReporter, PipelineStep } from '../types';
|
|
4
|
+
import { Helper, HelperApplyOptions, HelperExecutionSnapshot, HelperKind, MaybePromise, PipelinePauseOptions, PipelinePauseSnapshot, PipelinePaused, PipelineDiagnostic, PipelineExtensionHookOptions, PipelineExtensionLifecycle, PipelineExtensionRollbackErrorMetadata, PipelineReporter, PipelineStep } from '../types';
|
|
5
5
|
import { PipelineRollback } from '../rollback';
|
|
6
6
|
import { ExtensionCoordinator, ExtensionLifecycleState } from '../internal/extension-coordinator.types';
|
|
7
7
|
import { AgnosticDiagnosticManager } from './diagnostics';
|
|
@@ -17,6 +17,7 @@ export interface AgnosticRunnerOptions<TRunOptions, TUserState, TContext extends
|
|
|
17
17
|
readonly options: TRunOptions;
|
|
18
18
|
}) => TUserState;
|
|
19
19
|
readonly createError: ErrorFactory;
|
|
20
|
+
readonly supportsPause?: boolean;
|
|
20
21
|
readonly onExtensionRollbackError?: (options: {
|
|
21
22
|
readonly error: unknown;
|
|
22
23
|
readonly extensionKeys: readonly string[];
|
|
@@ -75,6 +76,8 @@ export interface AgnosticState<TRunOptions, TUserState, TContext extends {
|
|
|
75
76
|
readonly steps: PipelineStep[];
|
|
76
77
|
readonly diagnostics: TDiagnostic[];
|
|
77
78
|
readonly executedLifecycles: Set<string>;
|
|
79
|
+
readonly stageIndex?: number;
|
|
80
|
+
readonly resumeInput?: unknown;
|
|
78
81
|
readonly helperExecution?: Map<string, HelperExecutionSnapshot>;
|
|
79
82
|
readonly helperRollbacks?: Map<string, Array<{
|
|
80
83
|
readonly helper: unknown;
|
|
@@ -113,6 +116,7 @@ export type StageEnv<TState, TRunResult, TContext, TOptions, TReporter extends P
|
|
|
113
116
|
pushStep: (entry: RegisteredHelper<unknown>) => void;
|
|
114
117
|
toRollbackContext: (state: TState) => RollbackContext<TContext, TOptions, TUserState>;
|
|
115
118
|
halt: (error?: unknown) => Halt<TRunResult>;
|
|
119
|
+
pause?: (state: TState, options?: PipelinePauseOptions) => PipelinePaused<TState>;
|
|
116
120
|
isHalt: (value: unknown) => value is Halt<TRunResult>;
|
|
117
121
|
onHelperRollbackError?: (options: {
|
|
118
122
|
readonly error: unknown;
|
|
@@ -121,7 +125,8 @@ export type StageEnv<TState, TRunResult, TContext, TOptions, TReporter extends P
|
|
|
121
125
|
readonly context: TContext;
|
|
122
126
|
}) => void;
|
|
123
127
|
};
|
|
124
|
-
export type PipelineStage<TState, TResult> = Program<TState | TResult
|
|
128
|
+
export type PipelineStage<TState, TResult> = Program<TState | TResult | PipelinePaused<TState>>;
|
|
129
|
+
export type PipelineStepResult<TState, TRunResult> = TState | PipelinePaused<TState> | Halt<TRunResult>;
|
|
125
130
|
export type AgnosticStageDeps<TState, TResult, TContext, TRunOptions, TReporter extends PipelineReporter, TDiagnostic extends PipelineDiagnostic, TUserState> = {
|
|
126
131
|
readonly runnerEnv: StageEnv<TState, TResult, TContext, TRunOptions, TReporter, TUserState>;
|
|
127
132
|
readonly finalizeResult: PipelineStage<TState, Halt<TResult>>;
|
|
@@ -167,6 +172,13 @@ export interface AgnosticRunner<TRunOptions, TUserState, TContext extends {
|
|
|
167
172
|
readonly prepareContext: (runOptions: TRunOptions) => AgnosticRunContext<TRunOptions, TUserState, TContext, TReporter, TDiagnostic>;
|
|
168
173
|
readonly executeRun: (context: AgnosticRunContext<TRunOptions, TUserState, TContext, TReporter, TDiagnostic>) => MaybePromise<TRunResult>;
|
|
169
174
|
}
|
|
175
|
+
export interface AgnosticResumableRunner<TRunOptions, TUserState, TContext extends {
|
|
176
|
+
reporter: TReporter;
|
|
177
|
+
}, TReporter extends PipelineReporter, TDiagnostic extends PipelineDiagnostic, TRunResult> {
|
|
178
|
+
readonly prepareContext: (runOptions: TRunOptions) => AgnosticRunContext<TRunOptions, TUserState, TContext, TReporter, TDiagnostic>;
|
|
179
|
+
readonly executeRun: (context: AgnosticRunContext<TRunOptions, TUserState, TContext, TReporter, TDiagnostic>) => MaybePromise<TRunResult | PipelinePaused<AgnosticState<TRunOptions, TUserState, TContext, TReporter, TDiagnostic>>>;
|
|
180
|
+
readonly executeResume: (snapshot: PipelinePauseSnapshot<AgnosticState<TRunOptions, TUserState, TContext, TReporter, TDiagnostic>>, resumeInput?: unknown) => MaybePromise<TRunResult | PipelinePaused<AgnosticState<TRunOptions, TUserState, TContext, TReporter, TDiagnostic>>>;
|
|
181
|
+
}
|
|
170
182
|
export type HelperInvokeOptions<THelper, TInput, TOutput, TContext, TReporter extends PipelineReporter> = {
|
|
171
183
|
readonly helper: THelper;
|
|
172
184
|
readonly args: HelperApplyOptions<TContext, TInput, TOutput, TReporter>;
|
|
@@ -175,6 +187,7 @@ export type HelperInvokeOptions<THelper, TInput, TOutput, TContext, TReporter ex
|
|
|
175
187
|
export type HelperStageSpec<TState, TContext, TReporter extends PipelineReporter, TKind extends HelperKind, THelper extends Helper<TContext, TInput, TOutput, TReporter, TKind>, TInput, TOutput> = {
|
|
176
188
|
readonly getOrder: (state: TState) => RegisteredHelper<THelper>[];
|
|
177
189
|
readonly makeArgs: (state: TState) => (entry: RegisteredHelper<THelper>) => HelperApplyOptions<TContext, TInput, TOutput, TReporter>;
|
|
190
|
+
readonly invoke?: (invokeOptions: HelperInvokeOptions<THelper, TInput, TOutput, TContext, TReporter>) => MaybePromise<void>;
|
|
178
191
|
readonly onVisited: (state: TState, visited: Set<string>, rollbacks: RollbackEntry<THelper>[]) => TState;
|
|
179
192
|
readonly readRollbacks?: (state: TState) => RollbackEntry<THelper>[] | undefined;
|
|
180
193
|
};
|