@wpkernel/pipeline 0.12.5-beta.0 → 0.12.6-beta.1

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 (133) hide show
  1. package/README.md +69 -8
  2. package/dist/{async-utils.d.ts → core/async-utils.d.ts} +9 -0
  3. package/dist/core/async-utils.d.ts.map +1 -0
  4. package/dist/core/async-utils.js +46 -0
  5. package/dist/core/createExtension.d.ts.map +1 -0
  6. package/dist/core/dependency-graph.d.ts.map +1 -0
  7. package/dist/core/error-factory.d.ts.map +1 -0
  8. package/dist/{executor.d.ts → core/execution-utils.d.ts} +1 -1
  9. package/dist/core/execution-utils.d.ts.map +1 -0
  10. package/dist/core/executor.d.ts +2 -0
  11. package/dist/core/executor.d.ts.map +1 -0
  12. package/dist/core/extensions/index.d.ts +4 -0
  13. package/dist/core/extensions/index.d.ts.map +1 -0
  14. package/dist/core/extensions/official.d.ts.map +1 -0
  15. package/dist/{extensions.d.ts → core/extensions/runner.d.ts} +2 -5
  16. package/dist/core/extensions/runner.d.ts.map +1 -0
  17. package/dist/core/extensions/runner.js +73 -0
  18. package/dist/core/helper.d.ts.map +1 -0
  19. package/dist/core/index.d.ts +11 -0
  20. package/dist/core/index.d.ts.map +1 -0
  21. package/dist/core/index.js +36 -0
  22. package/dist/{internal → core/internal}/extension-coordinator.d.ts +3 -3
  23. package/dist/core/internal/extension-coordinator.d.ts.map +1 -0
  24. package/dist/{internal → core/internal}/extension-coordinator.js +7 -6
  25. package/dist/{internal → core/internal}/extension-coordinator.types.d.ts +14 -14
  26. package/dist/core/internal/extension-coordinator.types.d.ts.map +1 -0
  27. package/dist/core/makePipeline.d.ts +5 -0
  28. package/dist/core/makePipeline.d.ts.map +1 -0
  29. package/dist/core/makePipeline.js +148 -0
  30. package/dist/core/registration.d.ts.map +1 -0
  31. package/dist/core/registration.js +59 -0
  32. package/dist/core/rollback.d.ts.map +1 -0
  33. package/dist/core/runner/context.d.ts +13 -0
  34. package/dist/core/runner/context.d.ts.map +1 -0
  35. package/dist/core/runner/context.js +86 -0
  36. package/dist/core/runner/diagnostics.d.ts +48 -0
  37. package/dist/core/runner/diagnostics.d.ts.map +1 -0
  38. package/dist/core/runner/diagnostics.js +82 -0
  39. package/dist/core/runner/execution.d.ts +6 -0
  40. package/dist/core/runner/execution.d.ts.map +1 -0
  41. package/dist/core/runner/execution.js +66 -0
  42. package/dist/core/runner/index.d.ts +14 -0
  43. package/dist/core/runner/index.d.ts.map +1 -0
  44. package/dist/core/runner/index.js +9 -0
  45. package/dist/core/runner/program.d.ts +7 -0
  46. package/dist/core/runner/program.d.ts.map +1 -0
  47. package/dist/core/runner/program.js +146 -0
  48. package/dist/core/runner/rollback.d.ts +48 -0
  49. package/dist/core/runner/rollback.d.ts.map +1 -0
  50. package/dist/core/runner/rollback.js +75 -0
  51. package/dist/core/runner/stage-factories.d.ts +69 -0
  52. package/dist/core/runner/stage-factories.d.ts.map +1 -0
  53. package/dist/core/runner/stage-factories.js +121 -0
  54. package/dist/core/runner/types.d.ts +202 -0
  55. package/dist/core/runner/types.d.ts.map +1 -0
  56. package/dist/{types.d.ts → core/types.d.ts} +62 -97
  57. package/dist/core/types.d.ts.map +1 -0
  58. package/dist/extensions/index.js +6 -2
  59. package/dist/index.d.ts +21 -18
  60. package/dist/index.d.ts.map +1 -1
  61. package/dist/index.js +19 -17
  62. package/dist/standard-pipeline/createPipeline.d.ts +6 -0
  63. package/dist/standard-pipeline/createPipeline.d.ts.map +1 -0
  64. package/dist/standard-pipeline/createPipeline.js +7 -0
  65. package/dist/standard-pipeline/runner/index.d.ts +21 -0
  66. package/dist/standard-pipeline/runner/index.d.ts.map +1 -0
  67. package/dist/standard-pipeline/runner/index.js +244 -0
  68. package/dist/standard-pipeline/types.d.ts +150 -0
  69. package/dist/standard-pipeline/types.d.ts.map +1 -0
  70. package/package.json +6 -1
  71. package/dist/async-utils.d.ts.map +0 -1
  72. package/dist/async-utils.js +0 -40
  73. package/dist/createExtension.d.ts.map +0 -1
  74. package/dist/createPipeline.d.ts +0 -45
  75. package/dist/createPipeline.d.ts.map +0 -1
  76. package/dist/createPipeline.js +0 -9
  77. package/dist/dependency-graph.d.ts.map +0 -1
  78. package/dist/error-factory.d.ts.map +0 -1
  79. package/dist/executor.d.ts.map +0 -1
  80. package/dist/extensions/index.d.ts +0 -3
  81. package/dist/extensions/index.d.ts.map +0 -1
  82. package/dist/extensions/official.d.ts.map +0 -1
  83. package/dist/extensions.d.ts.map +0 -1
  84. package/dist/extensions.js +0 -88
  85. package/dist/helper.d.ts.map +0 -1
  86. package/dist/internal/diagnostic-manager.d.ts +0 -29
  87. package/dist/internal/diagnostic-manager.d.ts.map +0 -1
  88. package/dist/internal/diagnostic-manager.js +0 -90
  89. package/dist/internal/diagnostic-manager.types.d.ts +0 -70
  90. package/dist/internal/diagnostic-manager.types.d.ts.map +0 -1
  91. package/dist/internal/extension-coordinator.d.ts.map +0 -1
  92. package/dist/internal/extension-coordinator.types.d.ts.map +0 -1
  93. package/dist/internal/helper-execution.d.ts +0 -32
  94. package/dist/internal/helper-execution.d.ts.map +0 -1
  95. package/dist/internal/helper-execution.js +0 -33
  96. package/dist/internal/pipeline-program-utils.d.ts +0 -127
  97. package/dist/internal/pipeline-program-utils.d.ts.map +0 -1
  98. package/dist/internal/pipeline-program-utils.js +0 -161
  99. package/dist/internal/pipeline-runner.types.d.ts +0 -195
  100. package/dist/internal/pipeline-runner.types.d.ts.map +0 -1
  101. package/dist/internal/runner/context.d.ts +0 -6
  102. package/dist/internal/runner/context.d.ts.map +0 -1
  103. package/dist/internal/runner/context.js +0 -169
  104. package/dist/internal/runner/execution.d.ts +0 -6
  105. package/dist/internal/runner/execution.d.ts.map +0 -1
  106. package/dist/internal/runner/execution.js +0 -40
  107. package/dist/internal/runner/index.d.ts +0 -13
  108. package/dist/internal/runner/index.d.ts.map +0 -1
  109. package/dist/internal/runner/index.js +0 -11
  110. package/dist/internal/runner/program.d.ts +0 -8
  111. package/dist/internal/runner/program.d.ts.map +0 -1
  112. package/dist/internal/runner/program.js +0 -294
  113. package/dist/makePipeline.d.ts +0 -20
  114. package/dist/makePipeline.d.ts.map +0 -1
  115. package/dist/makePipeline.js +0 -139
  116. package/dist/registration.d.ts.map +0 -1
  117. package/dist/registration.js +0 -59
  118. package/dist/rollback.d.ts.map +0 -1
  119. package/dist/types.d.ts.map +0 -1
  120. /package/dist/{createExtension.d.ts → core/createExtension.d.ts} +0 -0
  121. /package/dist/{createExtension.js → core/createExtension.js} +0 -0
  122. /package/dist/{dependency-graph.d.ts → core/dependency-graph.d.ts} +0 -0
  123. /package/dist/{dependency-graph.js → core/dependency-graph.js} +0 -0
  124. /package/dist/{error-factory.d.ts → core/error-factory.d.ts} +0 -0
  125. /package/dist/{error-factory.js → core/error-factory.js} +0 -0
  126. /package/dist/{executor.js → core/execution-utils.js} +0 -0
  127. /package/dist/{extensions → core/extensions}/official.d.ts +0 -0
  128. /package/dist/{extensions → core/extensions}/official.js +0 -0
  129. /package/dist/{helper.d.ts → core/helper.d.ts} +0 -0
  130. /package/dist/{helper.js → core/helper.js} +0 -0
  131. /package/dist/{registration.d.ts → core/registration.d.ts} +0 -0
  132. /package/dist/{rollback.d.ts → core/rollback.d.ts} +0 -0
  133. /package/dist/{rollback.js → core/rollback.js} +0 -0
@@ -0,0 +1,146 @@
1
+ import { composeK as h, maybeThen as b } from "../async-utils.js";
2
+ import { makeCommitStage as R, makeAfterFragmentsStage as H, makeFinalizeResultStage as A, isHalt as c, makeHelperStageFactory as w } from "./stage-factories.js";
3
+ const L = (r, l) => {
4
+ const f = (o) => ({
5
+ __halt: !0,
6
+ error: o
7
+ }), g = (o) => (t) => ({
8
+ context: o.context,
9
+ reporter: o.reporter,
10
+ userState: o.userState
11
+ }), u = {
12
+ pushStep: l.pushStep,
13
+ toRollbackContext: (o) => ({
14
+ context: o.context,
15
+ extensionCoordinator: o.extensionCoordinator,
16
+ extensionState: o.extensionState,
17
+ extensionStack: o.extensionStack
18
+ }),
19
+ halt: f,
20
+ isHalt: c,
21
+ onHelperRollbackError: r.options.onHelperRollbackError
22
+ }, x = w({
23
+ pushStep: l.pushStep,
24
+ toRollbackContext: (o) => ({
25
+ context: o.context,
26
+ extensionCoordinator: o.extensionCoordinator,
27
+ extensionState: o.extensionState,
28
+ extensionStack: o.extensionStack
29
+ }),
30
+ halt: f,
31
+ isHalt: c,
32
+ onHelperRollbackError: r.options.onHelperRollbackError
33
+ }), k = (o, t, i) => {
34
+ const a = {
35
+ getOrder: (e) => e.helperOrders?.get(o) ?? [],
36
+ makeArgs: g,
37
+ onVisited: (e, n, s) => t?.onVisited ? t.onVisited(e, n, s) : e,
38
+ readRollbacks: (e) => e.helperRollbacks?.get(o)?.map((n) => n.helper) ?? [],
39
+ invoke: ({
40
+ helper: e,
41
+ args: n,
42
+ next: s
43
+ }) => {
44
+ if (typeof e == "function")
45
+ return e(n, s);
46
+ if (typeof e == "object" && e !== null && "apply" in e && typeof e.apply == "function")
47
+ return e.apply(n, s);
48
+ throw new Error(
49
+ `Invalid helper: expected function or object with .apply method. Got: ${typeof e}`
50
+ );
51
+ },
52
+ ...t
53
+ };
54
+ return t?.makeArgs ? a.makeArgs = t.makeArgs : i && (a.makeArgs = (e) => (n) => i({
55
+ state: e,
56
+ helper: n.helper,
57
+ context: e.context
58
+ })), x(
59
+ o,
60
+ a
61
+ );
62
+ }, m = (o) => H({
63
+ isHalt: c,
64
+ execute: (t) => {
65
+ t.executedLifecycles.add(o);
66
+ const i = t.extensionCoordinator;
67
+ if (!i)
68
+ return t;
69
+ const a = l.buildHookOptions(
70
+ t,
71
+ o
72
+ );
73
+ return b(
74
+ i.runLifecycle(
75
+ o,
76
+ {
77
+ hooks: r.extensionHooks,
78
+ hookOptions: a
79
+ }
80
+ ),
81
+ (e) => ({
82
+ ...t,
83
+ extensionState: e,
84
+ extensionStack: [
85
+ ...t.extensionStack ?? [],
86
+ {
87
+ coordinator: i,
88
+ state: e
89
+ }
90
+ ],
91
+ userState: e.artifact
92
+ })
93
+ );
94
+ }
95
+ }), S = R({
96
+ isHalt: c,
97
+ commit: (o) => {
98
+ const t = o.extensionCoordinator;
99
+ if (t)
100
+ return t.commit(o.extensionState);
101
+ },
102
+ rollbackToHalt: (o, t) => ({
103
+ __halt: !0,
104
+ error: t
105
+ })
106
+ }), p = A({
107
+ isHalt: c,
108
+ finalize: (o) => {
109
+ const i = {
110
+ ...o,
111
+ diagnostics: r.diagnosticManager.readDiagnostics()
112
+ };
113
+ if (r.extensionHooks.length > 0) {
114
+ const a = i.executedLifecycles, e = /* @__PURE__ */ new Set();
115
+ for (const n of r.extensionHooks)
116
+ a?.has(n.lifecycle) || e.add(n.lifecycle);
117
+ if (e.size > 0) {
118
+ const n = Array.from(e).map((s) => `"${s}"`).join(", ");
119
+ i.reporter.warn?.(
120
+ `The following extension hooks will be ignored because their lifecycles were not executed: ${n}`
121
+ );
122
+ }
123
+ }
124
+ return i;
125
+ }
126
+ }), y = {
127
+ runnerEnv: u,
128
+ finalizeResult: p,
129
+ makeLifecycleStage: m,
130
+ commitStage: S,
131
+ makeHelperStage: k,
132
+ extensions: {
133
+ lifecycles: r.extensionLifecycles
134
+ },
135
+ diagnosticManager: r.diagnosticManager
136
+ };
137
+ if (!r.stages)
138
+ throw new Error(
139
+ "Agnostic Runner requires 'stages' factory to be defined."
140
+ );
141
+ const d = r.stages(y);
142
+ return h(...[...d].reverse());
143
+ };
144
+ export {
145
+ L as createAgnosticProgram
146
+ };
@@ -0,0 +1,48 @@
1
+ import { Program } from '../async-utils';
2
+ import { MaybePromise, PipelineExtensionRollbackErrorMetadata } from '../types';
3
+ import { Halt, HelperRollbackPlan, RollbackContext, RollbackEntry } from './types';
4
+ export type RollbackToHaltPlan<TRunResult, TContext, TOptions, TArtifact, THelper extends {
5
+ key: string;
6
+ }> = {
7
+ readonly rollbackPlan: HelperRollbackPlan<TContext, TOptions, TArtifact, THelper>;
8
+ readonly halt: (error?: unknown) => Halt<TRunResult>;
9
+ };
10
+ /**
11
+ * Executes a rollback plan for a helper stage failure.
12
+ * It coordinates helper-specific rollbacks and extension rollbacks.
13
+ * @param plan
14
+ * @param error
15
+ */
16
+ export declare function runHelperRollbackPlan<TContext, TOptions, TArtifact, THelper extends {
17
+ key: string;
18
+ }>(plan: HelperRollbackPlan<TContext, TOptions, TArtifact, THelper>, error: unknown): MaybePromise<void>;
19
+ export type HelperStageRunPlan<TState, TRunResult, TContext, TOptions, TArtifact, THelper extends {
20
+ key: string;
21
+ }> = {
22
+ readonly state: TState;
23
+ readonly program: Program<TState>;
24
+ readonly rollbackPlan: HelperRollbackPlan<TContext, TOptions, TArtifact, THelper>;
25
+ readonly halt: (error?: unknown) => Halt<TRunResult>;
26
+ };
27
+ export declare function runHelperStageWithRollback<TState, TRunResult, TContext, TOptions, TArtifact, THelper extends {
28
+ key: string;
29
+ }>(plan: HelperStageRunPlan<TState, TRunResult, TContext, TOptions, TArtifact, THelper>): MaybePromise<TState | Halt<TRunResult>>;
30
+ export declare function runRollbackToHalt<TRunResult, TContext, TOptions, TArtifact, THelper extends {
31
+ key: string;
32
+ }>(plan: RollbackToHaltPlan<TRunResult, TContext, TOptions, TArtifact, THelper>, error: unknown): MaybePromise<Halt<TRunResult>>;
33
+ /**
34
+ * Builds a rollback handler that first drains helper rollbacks (when present) and then defers to
35
+ * extension rollback handling.
36
+ * @param state
37
+ * @param helperRollbacks
38
+ * @param onHelperRollbackError
39
+ */
40
+ export declare function makeRollbackHandler<TContext, TOptions, TArtifact, THelper extends {
41
+ key: string;
42
+ }>(state: RollbackContext<TContext, TOptions, TArtifact>, helperRollbacks: RollbackEntry<THelper>[], onHelperRollbackError?: (options: {
43
+ readonly error: unknown;
44
+ readonly helper: THelper;
45
+ readonly errorMetadata: PipelineExtensionRollbackErrorMetadata;
46
+ readonly context: TContext;
47
+ }) => void): (error: unknown) => MaybePromise<void>;
48
+ //# sourceMappingURL=rollback.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rollback.d.ts","sourceRoot":"","sources":["../../../src/core/runner/rollback.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,75 @@
1
+ import { maybeTry as p, maybeThen as b } from "../async-utils.js";
2
+ import { runRollbackStack as R } from "../rollback.js";
3
+ function m(n, o) {
4
+ const { context: u, rollbackContext: e, helperRollbacks: c, onHelperRollbackError: k } = n, l = (e.extensionStack ?? []).map(
5
+ ({ coordinator: r, state: t }) => r.createRollbackHandler(t)
6
+ );
7
+ l.length === 0 && e.extensionCoordinator && e.extensionState && l.push(
8
+ e.extensionCoordinator.createRollbackHandler(
9
+ e.extensionState
10
+ )
11
+ );
12
+ const h = (r) => {
13
+ if (l.length === 0)
14
+ throw r;
15
+ const t = (a) => {
16
+ if (a < 0)
17
+ return;
18
+ const s = l[a], i = () => t(a - 1);
19
+ return p(
20
+ () => b(s(r), i),
21
+ i
22
+ );
23
+ };
24
+ return t(l.length - 1);
25
+ };
26
+ return p(() => b(
27
+ R(
28
+ c.map((r) => ({
29
+ ...r.rollback,
30
+ key: r.helper.key
31
+ })),
32
+ {
33
+ source: "helper",
34
+ onError: ({
35
+ error: r,
36
+ metadata: t,
37
+ entry: a
38
+ }) => {
39
+ const s = c.find(
40
+ (i) => i.helper.key === (a.key ?? "")
41
+ );
42
+ s && k && k({
43
+ error: r,
44
+ helper: s.helper,
45
+ errorMetadata: t,
46
+ context: u
47
+ });
48
+ }
49
+ }
50
+ ),
51
+ () => h(o)
52
+ ), () => {
53
+ });
54
+ }
55
+ function y(n) {
56
+ const { state: o, program: u, rollbackPlan: e, halt: c } = n;
57
+ return p(() => u(o), (h) => d(
58
+ {
59
+ rollbackPlan: e,
60
+ halt: c
61
+ },
62
+ h
63
+ ));
64
+ }
65
+ function d(n, o) {
66
+ return b(
67
+ m(n.rollbackPlan, o),
68
+ () => n.halt(o)
69
+ );
70
+ }
71
+ export {
72
+ m as runHelperRollbackPlan,
73
+ y as runHelperStageWithRollback,
74
+ d as runRollbackToHalt
75
+ };
@@ -0,0 +1,69 @@
1
+ import { Program } from '../async-utils';
2
+ import { Helper, HelperApplyOptions, HelperKind, MaybePromise, PipelineReporter } from '../types';
3
+ import { RegisteredHelper } from '../dependency-graph';
4
+ import { Halt, HelperInvokeOptions, StageEnv, HelperStageSpec } from './types';
5
+ export declare function isHalt<TRunResult>(value: unknown): value is Halt<TRunResult>;
6
+ /**
7
+ * Generic stage constructor that executes an ordered helper list with middleware-style `next()`.
8
+ * @param options
9
+ * @param options.getOrder
10
+ * @param options.makeArgs
11
+ * @param options.invoke
12
+ * @param options.recordStep
13
+ * @param options.onVisited
14
+ * @param options.registerRollback
15
+ */
16
+ export declare function createHelpersProgram<TContext, TReporter extends PipelineReporter, TKind extends HelperKind, THelper extends Helper<TContext, TInput, TOutput, TReporter, TKind>, TInput, TOutput, TState>(options: {
17
+ getOrder: (state: TState) => RegisteredHelper<THelper>[];
18
+ makeArgs: (state: TState) => (entry: RegisteredHelper<THelper>) => HelperApplyOptions<TContext, TInput, TOutput, TReporter>;
19
+ invoke: (invokeOptions: HelperInvokeOptions<THelper, TInput, TOutput, TContext, TReporter>) => MaybePromise<void>;
20
+ recordStep: (entry: RegisteredHelper<unknown>) => void;
21
+ onVisited: (state: TState, visited: Set<string>) => TState;
22
+ registerRollback?: (helper: THelper, result: unknown) => void;
23
+ }): (state: TState) => MaybePromise<TState>;
24
+ /**
25
+ * Pure finalizer for fragment state.
26
+ * @param options
27
+ * @param options.isHalt
28
+ * @param options.snapshotFragments
29
+ * @param options.applyArtifact
30
+ */
31
+ export declare function makeFinalizeFragmentsStage<TState, THalt extends Halt<unknown>, TFragments>(options: {
32
+ isHalt: (value: TState | THalt) => value is THalt;
33
+ snapshotFragments: (state: TState) => TFragments;
34
+ applyArtifact: (state: TState, fragments: TFragments) => TState;
35
+ }): Program<TState | THalt>;
36
+ /**
37
+ * Generic stage builder for "after fragments" style hooks.
38
+ * @param options
39
+ * @param options.isHalt
40
+ * @param options.execute
41
+ */
42
+ export declare function makeAfterFragmentsStage<TState, THalt extends Halt<unknown>>(options: {
43
+ isHalt: (value: TState | THalt) => value is THalt;
44
+ execute: (state: TState) => MaybePromise<TState>;
45
+ }): Program<TState | THalt>;
46
+ /**
47
+ * Commit stage builder.
48
+ * @param options
49
+ * @param options.isHalt
50
+ * @param options.commit
51
+ * @param options.rollbackToHalt
52
+ */
53
+ export declare function makeCommitStage<TState, THalt extends Halt<unknown>>(options: {
54
+ isHalt: (value: TState | THalt) => value is THalt;
55
+ commit: (state: TState) => MaybePromise<void>;
56
+ rollbackToHalt: (state: TState, error: unknown) => MaybePromise<THalt>;
57
+ }): Program<TState | THalt>;
58
+ /**
59
+ * Simple finalizer that snapshots helpers/diagnostics into state.
60
+ * @param options
61
+ * @param options.isHalt
62
+ * @param options.finalize
63
+ */
64
+ export declare function makeFinalizeResultStage<TState, THalt extends Halt<unknown>>(options: {
65
+ isHalt: (value: TState | THalt) => value is THalt;
66
+ 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>>;
69
+ //# sourceMappingURL=stage-factories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stage-factories.d.ts","sourceRoot":"","sources":["../../../src/core/runner/stage-factories.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,121 @@
1
+ import { maybeTry as y, maybeThen as S, isPromiseLike as C } from "../async-utils.js";
2
+ import { executeHelpers as E } from "../execution-utils.js";
3
+ import { runHelperStageWithRollback as F } from "./rollback.js";
4
+ function _(r) {
5
+ return !!(r && typeof r == "object" && "__halt" in r && r.__halt === !0);
6
+ }
7
+ function v(r) {
8
+ const {
9
+ getOrder: c,
10
+ makeArgs: t,
11
+ invoke: e,
12
+ recordStep: a,
13
+ onVisited: i,
14
+ registerRollback: u
15
+ } = r, f = (n, k, p) => {
16
+ const s = e({ helper: n, args: k, next: p });
17
+ return u ? C(s) ? s.then((o) => {
18
+ u(n, o);
19
+ }) : (u(n, s), s) : s;
20
+ };
21
+ return (n) => {
22
+ const k = c(n), p = E(k, t(n), f, a);
23
+ return S(
24
+ p,
25
+ (s) => i(n, s)
26
+ );
27
+ };
28
+ }
29
+ function z(r) {
30
+ const { isHalt: c, snapshotFragments: t, applyArtifact: e } = r;
31
+ return (a) => c(a) ? a : e(a, t(a));
32
+ }
33
+ function T(r) {
34
+ const { isHalt: c, execute: t } = r;
35
+ return (e) => c(e) ? e : t(e);
36
+ }
37
+ function V(r) {
38
+ const { isHalt: c, commit: t, rollbackToHalt: e } = r, a = (i) => {
39
+ const u = () => i;
40
+ return y(
41
+ () => S(t(i), u),
42
+ (n) => e(i, n)
43
+ );
44
+ };
45
+ return (i) => c(i) ? i : a(i);
46
+ }
47
+ function j(r) {
48
+ const { isHalt: c, finalize: t } = r;
49
+ return (e) => c(e) ? e : t(e);
50
+ }
51
+ function M(r) {
52
+ return function(t, e) {
53
+ const {
54
+ pushStep: a,
55
+ toRollbackContext: i,
56
+ halt: u,
57
+ isHalt: f,
58
+ onHelperRollbackError: n
59
+ } = r, k = ({
60
+ helper: o,
61
+ args: m,
62
+ next: l
63
+ }) => o.apply(m, l), p = (o) => (m, l) => {
64
+ if (!(!l || typeof l != "object") && "rollback" in l) {
65
+ const g = l.rollback;
66
+ g && o.push({ helper: m, rollback: g });
67
+ }
68
+ }, s = () => n ? (o) => n({
69
+ ...o,
70
+ helper: o.helper
71
+ }) : void 0;
72
+ return (o) => {
73
+ if (f(o))
74
+ return o;
75
+ let m = o.helperExecution;
76
+ m || (m = /* @__PURE__ */ new Map(), o.helperExecution = m);
77
+ let l = m.get(t);
78
+ l || (l = {
79
+ kind: t,
80
+ executed: [],
81
+ missing: [],
82
+ registered: []
83
+ // Registered populated by getOrder result?
84
+ }, m.set(t, l));
85
+ const g = (b) => {
86
+ a(b), l.executed.push(
87
+ b.helper.key
88
+ );
89
+ }, H = [
90
+ ...e.readRollbacks?.(o) ?? []
91
+ ], h = i(o), d = v({
92
+ getOrder: e.getOrder,
93
+ makeArgs: e.makeArgs,
94
+ invoke: k,
95
+ recordStep: g,
96
+ onVisited: (b, R) => e.onVisited(b, R, H),
97
+ registerRollback: p(H)
98
+ }), x = {
99
+ context: h.context,
100
+ rollbackContext: h,
101
+ helperRollbacks: H,
102
+ onHelperRollbackError: s()
103
+ };
104
+ return F({
105
+ state: o,
106
+ program: d,
107
+ rollbackPlan: x,
108
+ halt: u
109
+ });
110
+ };
111
+ };
112
+ }
113
+ export {
114
+ v as createHelpersProgram,
115
+ _ as isHalt,
116
+ T as makeAfterFragmentsStage,
117
+ V as makeCommitStage,
118
+ z as makeFinalizeFragmentsStage,
119
+ j as makeFinalizeResultStage,
120
+ M as makeHelperStageFactory
121
+ };
@@ -0,0 +1,202 @@
1
+ import { RegisteredHelper } from '../dependency-graph';
2
+ import { Program } from '../async-utils';
3
+ import { ErrorFactory } from '../error-factory';
4
+ import { Helper, HelperApplyOptions, HelperExecutionSnapshot, HelperKind, MaybePromise, PipelineDiagnostic, PipelineExtensionHookOptions, PipelineExtensionLifecycle, PipelineExtensionRollbackErrorMetadata, PipelineReporter, PipelineStep } from '../types';
5
+ import { PipelineRollback } from '../rollback';
6
+ import { ExtensionCoordinator, ExtensionLifecycleState } from '../internal/extension-coordinator.types';
7
+ import { AgnosticDiagnosticManager } from './diagnostics';
8
+ import { ExtensionHookEntry } from '../extensions';
9
+ export type { HelperExecutionSnapshot };
10
+ export type { ExtensionCoordinator, ExtensionLifecycleState };
11
+ export interface AgnosticRunnerOptions<TRunOptions, TUserState, TContext extends {
12
+ reporter: TReporter;
13
+ }, TReporter extends PipelineReporter> {
14
+ readonly createContext: (options: TRunOptions) => TContext;
15
+ readonly createState: (options: {
16
+ readonly context: TContext;
17
+ readonly options: TRunOptions;
18
+ }) => TUserState;
19
+ readonly createError: ErrorFactory;
20
+ readonly onExtensionRollbackError?: (options: {
21
+ readonly error: unknown;
22
+ readonly extensionKeys: readonly string[];
23
+ readonly hookSequence: readonly string[];
24
+ readonly errorMetadata: PipelineExtensionRollbackErrorMetadata;
25
+ readonly context: TContext;
26
+ }) => void;
27
+ readonly onHelperRollbackError?: (options: {
28
+ readonly error: unknown;
29
+ readonly helper: unknown;
30
+ readonly errorMetadata: PipelineExtensionRollbackErrorMetadata;
31
+ readonly context: TContext;
32
+ }) => void;
33
+ readonly providedKeys?: Record<string, readonly string[]>;
34
+ }
35
+ /**
36
+ * Mutable state captured while preparing a pipeline run.
37
+ *
38
+ * @category Pipeline
39
+ * @internal
40
+ */
41
+ export interface AgnosticRunContext<TRunOptions, TUserState, TContext extends {
42
+ reporter: TReporter;
43
+ }, TReporter extends PipelineReporter, TDiagnostic extends PipelineDiagnostic> {
44
+ readonly runOptions: TRunOptions;
45
+ readonly context: TContext;
46
+ readonly state: AgnosticState<TRunOptions, TUserState, TContext, TReporter, TDiagnostic>;
47
+ readonly steps: PipelineStep[];
48
+ readonly pushStep: (entry: RegisteredHelper<unknown>) => void;
49
+ readonly helperRegistries: Map<string, RegisteredHelper<unknown>[]>;
50
+ readonly helperOrders: Map<string, RegisteredHelper<unknown>[]>;
51
+ readonly buildHookOptions: (state: AgnosticState<TRunOptions, TUserState, TContext, TReporter, TDiagnostic>, lifecycle: PipelineExtensionLifecycle) => PipelineExtensionHookOptions<TContext, TRunOptions, TUserState>;
52
+ readonly handleRollbackError: (options: {
53
+ readonly error: unknown;
54
+ readonly extensionKeys: readonly string[];
55
+ readonly hookSequence: readonly string[];
56
+ readonly errorMetadata: PipelineExtensionRollbackErrorMetadata;
57
+ readonly context: TContext;
58
+ }) => void;
59
+ }
60
+ /**
61
+ * Closed-world state threaded through composed pipeline programs.
62
+ *
63
+ * @category Pipeline
64
+ * @internal
65
+ */
66
+ export interface AgnosticState<TRunOptions, TUserState, TContext extends {
67
+ reporter: TReporter;
68
+ }, TReporter extends PipelineReporter, TDiagnostic extends PipelineDiagnostic> {
69
+ readonly context: TContext;
70
+ readonly reporter: TReporter;
71
+ readonly runOptions: TRunOptions;
72
+ readonly userState: TUserState;
73
+ readonly helperRegistries: Map<string, RegisteredHelper<unknown>[]>;
74
+ readonly helperOrders?: Map<string, RegisteredHelper<unknown>[]>;
75
+ readonly steps: PipelineStep[];
76
+ readonly diagnostics: TDiagnostic[];
77
+ readonly executedLifecycles: Set<string>;
78
+ readonly helperExecution?: Map<string, HelperExecutionSnapshot>;
79
+ readonly helperRollbacks?: Map<string, Array<{
80
+ readonly helper: unknown;
81
+ readonly rollback: PipelineRollback;
82
+ }>>;
83
+ readonly extensionCoordinator?: ExtensionCoordinator<TContext, TRunOptions, TUserState>;
84
+ readonly extensionState?: ExtensionLifecycleState<TContext, TRunOptions, TUserState>;
85
+ readonly extensionStack?: Array<{
86
+ readonly coordinator: ExtensionCoordinator<TContext, TRunOptions, TUserState>;
87
+ readonly state: ExtensionLifecycleState<TContext, TRunOptions, TUserState>;
88
+ }>;
89
+ }
90
+ export type { ExtensionHookEntry };
91
+ export type RollbackCapableCoordinator<TContext, TOptions, TUserState> = {
92
+ createRollbackHandler: <TResult>(state: ExtensionLifecycleState<TContext, TOptions, TUserState>) => (error: unknown) => MaybePromise<TResult>;
93
+ };
94
+ export type RollbackEntry<THelper> = {
95
+ readonly helper: THelper;
96
+ readonly rollback: PipelineRollback;
97
+ };
98
+ export type Halt<TRunResult> = {
99
+ readonly __halt: true;
100
+ readonly error?: unknown;
101
+ readonly result?: TRunResult;
102
+ };
103
+ export type RollbackContext<TContext, TOptions, TUserState> = {
104
+ readonly context: TContext;
105
+ readonly extensionCoordinator?: RollbackCapableCoordinator<TContext, TOptions, TUserState>;
106
+ readonly extensionState?: ExtensionLifecycleState<TContext, TOptions, TUserState>;
107
+ readonly extensionStack?: Array<{
108
+ readonly coordinator: RollbackCapableCoordinator<TContext, TOptions, TUserState>;
109
+ readonly state: ExtensionLifecycleState<TContext, TOptions, TUserState>;
110
+ }>;
111
+ };
112
+ export type StageEnv<TState, TRunResult, TContext, TOptions, TReporter extends PipelineReporter, TUserState> = {
113
+ pushStep: (entry: RegisteredHelper<unknown>) => void;
114
+ toRollbackContext: (state: TState) => RollbackContext<TContext, TOptions, TUserState>;
115
+ halt: (error?: unknown) => Halt<TRunResult>;
116
+ isHalt: (value: unknown) => value is Halt<TRunResult>;
117
+ onHelperRollbackError?: (options: {
118
+ readonly error: unknown;
119
+ readonly helper: Helper<TContext, unknown, unknown, TReporter, HelperKind>;
120
+ readonly errorMetadata: PipelineExtensionRollbackErrorMetadata;
121
+ readonly context: TContext;
122
+ }) => void;
123
+ };
124
+ export type PipelineStage<TState, TResult> = Program<TState | TResult>;
125
+ export type AgnosticStageDeps<TState, TResult, TContext, TRunOptions, TReporter extends PipelineReporter, TDiagnostic extends PipelineDiagnostic, TUserState> = {
126
+ readonly runnerEnv: StageEnv<TState, TResult, TContext, TRunOptions, TReporter, TUserState>;
127
+ readonly finalizeResult: PipelineStage<TState, Halt<TResult>>;
128
+ readonly makeLifecycleStage: (lifecycle: string) => PipelineStage<TState, Halt<TResult>>;
129
+ readonly commitStage: PipelineStage<TState, Halt<TResult>>;
130
+ readonly makeHelperStage: (kind: string, spec?: {
131
+ makeArgs?: (state: TState) => (entry: RegisteredHelper<unknown>) => unknown;
132
+ onVisited?: (state: TState, visited: Set<string>, rollbacks: unknown[]) => TState;
133
+ }) => PipelineStage<TState, Halt<TResult>>;
134
+ readonly extensions: {
135
+ readonly lifecycles?: readonly string[];
136
+ };
137
+ readonly diagnosticManager: AgnosticDiagnosticManager<TReporter, TDiagnostic>;
138
+ };
139
+ /**
140
+ * Dependency bundle consumed by {@link initAgnosticRunner}.
141
+ *
142
+ * @category Pipeline
143
+ * @internal
144
+ */
145
+ export interface AgnosticRunnerDependencies<TRunOptions, TUserState, TContext extends {
146
+ reporter: TReporter;
147
+ }, TReporter extends PipelineReporter, TDiagnostic extends PipelineDiagnostic, TRunResult> {
148
+ readonly options: AgnosticRunnerOptions<TRunOptions, TUserState, TContext, TReporter>;
149
+ readonly helperRegistries: Map<string, RegisteredHelper<unknown>[]>;
150
+ readonly diagnosticManager: AgnosticDiagnosticManager<TReporter, TDiagnostic>;
151
+ readonly resolveRunResult: (state: {
152
+ readonly diagnostics: readonly TDiagnostic[];
153
+ readonly steps: readonly PipelineStep[];
154
+ readonly context: TContext;
155
+ readonly userState: TUserState;
156
+ readonly options: TRunOptions;
157
+ readonly helpers: unknown;
158
+ readonly state: AgnosticState<TRunOptions, TUserState, TContext, TReporter, TDiagnostic>;
159
+ }) => TRunResult;
160
+ readonly extensionHooks: ExtensionHookEntry<TContext, TRunOptions, TUserState>[];
161
+ readonly extensionLifecycles?: readonly string[];
162
+ readonly stages?: (deps: AgnosticStageDeps<AgnosticState<TRunOptions, TUserState, TContext, TReporter, TDiagnostic>, TRunResult, TContext, TRunOptions, TReporter, TDiagnostic, TUserState>) => PipelineStage<AgnosticState<TRunOptions, TUserState, TContext, TReporter, TDiagnostic>, Halt<TRunResult>>[];
163
+ }
164
+ export interface AgnosticRunner<TRunOptions, TUserState, TContext extends {
165
+ reporter: TReporter;
166
+ }, TReporter extends PipelineReporter, TDiagnostic extends PipelineDiagnostic, TRunResult> {
167
+ readonly prepareContext: (runOptions: TRunOptions) => AgnosticRunContext<TRunOptions, TUserState, TContext, TReporter, TDiagnostic>;
168
+ readonly executeRun: (context: AgnosticRunContext<TRunOptions, TUserState, TContext, TReporter, TDiagnostic>) => MaybePromise<TRunResult>;
169
+ }
170
+ export type HelperInvokeOptions<THelper, TInput, TOutput, TContext, TReporter extends PipelineReporter> = {
171
+ readonly helper: THelper;
172
+ readonly args: HelperApplyOptions<TContext, TInput, TOutput, TReporter>;
173
+ readonly next: () => MaybePromise<void>;
174
+ };
175
+ export type HelperStageSpec<TState, TContext, TReporter extends PipelineReporter, TKind extends HelperKind, THelper extends Helper<TContext, TInput, TOutput, TReporter, TKind>, TInput, TOutput> = {
176
+ readonly getOrder: (state: TState) => RegisteredHelper<THelper>[];
177
+ readonly makeArgs: (state: TState) => (entry: RegisteredHelper<THelper>) => HelperApplyOptions<TContext, TInput, TOutput, TReporter>;
178
+ readonly onVisited: (state: TState, visited: Set<string>, rollbacks: RollbackEntry<THelper>[]) => TState;
179
+ readonly readRollbacks?: (state: TState) => RollbackEntry<THelper>[] | undefined;
180
+ };
181
+ export type HelperStageRunPlan<TState, TRunResult, TContext, TOptions, TUserState, THelper extends {
182
+ key: string;
183
+ }> = {
184
+ readonly state: TState;
185
+ readonly program: Program<TState>;
186
+ readonly rollbackPlan: HelperRollbackPlan<TContext, TOptions, TUserState, THelper>;
187
+ readonly halt: (error?: unknown) => Halt<TRunResult>;
188
+ };
189
+ export type HelperRollbackPlan<TContext, TOptions, TUserState, THelper extends {
190
+ key: string;
191
+ }> = {
192
+ readonly context: TContext;
193
+ readonly rollbackContext: RollbackContext<TContext, TOptions, TUserState>;
194
+ readonly helperRollbacks: readonly RollbackEntry<THelper>[];
195
+ readonly onHelperRollbackError?: (options: {
196
+ readonly error: unknown;
197
+ readonly helper: THelper;
198
+ readonly errorMetadata: PipelineExtensionRollbackErrorMetadata;
199
+ readonly context: TContext;
200
+ }) => void;
201
+ };
202
+ //# sourceMappingURL=types.d.ts.map