@wpkernel/pipeline 0.12.3-beta.2 → 0.12.6-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. package/README.md +130 -86
  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/{extensions → core/extensions}/index.d.ts +1 -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 +1 -1
  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 +147 -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 +20 -17
  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 +16 -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 -122
  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.map +0 -1
  81. package/dist/extensions/official.d.ts.map +0 -1
  82. package/dist/extensions.d.ts.map +0 -1
  83. package/dist/extensions.js +0 -88
  84. package/dist/helper.d.ts.map +0 -1
  85. package/dist/internal/diagnostic-manager.d.ts +0 -29
  86. package/dist/internal/diagnostic-manager.d.ts.map +0 -1
  87. package/dist/internal/diagnostic-manager.js +0 -90
  88. package/dist/internal/diagnostic-manager.types.d.ts +0 -70
  89. package/dist/internal/diagnostic-manager.types.d.ts.map +0 -1
  90. package/dist/internal/extension-coordinator.d.ts.map +0 -1
  91. package/dist/internal/extension-coordinator.types.d.ts.map +0 -1
  92. package/dist/internal/helper-execution.d.ts +0 -32
  93. package/dist/internal/helper-execution.d.ts.map +0 -1
  94. package/dist/internal/helper-execution.js +0 -33
  95. package/dist/internal/pipeline-program-utils.d.ts +0 -127
  96. package/dist/internal/pipeline-program-utils.d.ts.map +0 -1
  97. package/dist/internal/pipeline-program-utils.js +0 -161
  98. package/dist/internal/pipeline-runner.d.ts +0 -18
  99. package/dist/internal/pipeline-runner.d.ts.map +0 -1
  100. package/dist/internal/pipeline-runner.js +0 -343
  101. package/dist/internal/pipeline-runner.types.d.ts +0 -167
  102. package/dist/internal/pipeline-runner.types.d.ts.map +0 -1
  103. package/dist/registration.d.ts.map +0 -1
  104. package/dist/registration.js +0 -57
  105. package/dist/rollback.d.ts.map +0 -1
  106. package/dist/types.d.ts.map +0 -1
  107. /package/dist/{createExtension.d.ts → core/createExtension.d.ts} +0 -0
  108. /package/dist/{createExtension.js → core/createExtension.js} +0 -0
  109. /package/dist/{dependency-graph.d.ts → core/dependency-graph.d.ts} +0 -0
  110. /package/dist/{dependency-graph.js → core/dependency-graph.js} +0 -0
  111. /package/dist/{error-factory.d.ts → core/error-factory.d.ts} +0 -0
  112. /package/dist/{error-factory.js → core/error-factory.js} +0 -0
  113. /package/dist/{executor.js → core/execution-utils.js} +0 -0
  114. /package/dist/{extensions → core/extensions}/official.d.ts +0 -0
  115. /package/dist/{extensions → core/extensions}/official.js +0 -0
  116. /package/dist/{helper.d.ts → core/helper.d.ts} +0 -0
  117. /package/dist/{helper.js → core/helper.js} +0 -0
  118. /package/dist/{registration.d.ts → core/registration.d.ts} +0 -0
  119. /package/dist/{rollback.d.ts → core/rollback.d.ts} +0 -0
  120. /package/dist/{rollback.js → core/rollback.js} +0 -0
package/README.md CHANGED
@@ -1,20 +1,34 @@
1
1
  # @wpkernel/pipeline
2
2
 
3
- > Framework-agnostic orchestration primitives for building dependency-aware execution pipelines with atomic rollback.
3
+ > A type-safe, dependency-aware workflow engine for orchestrating complex generation tasks.
4
4
 
5
5
  ## Overview
6
6
 
7
- `@wpkernel/pipeline` powers every generation flow inside WPKernel. It was extracted from
8
- `@wpkernel/core` so CLI builders, PHP bridges, and external projects can compose helpers,
9
- validate dependencies, and execute deterministic plans. The runtime enforces a three-phase
10
- model (fragments → builders → extensions) and provides rich diagnostics when helpers clash or
11
- dependencies are missing.
7
+ `@wpkernel/pipeline` is a generic orchestration engine that turns sets of decoupled "helpers" into deterministic, topologically sorted execution plans.
12
8
 
13
- ## Quick links
9
+ While it powers WPKernel's code generation (assembling fragments into artifacts), the core is completely agnostic. You can use it to build:
14
10
 
15
- - [Package guide](../../docs/packages/pipeline.md)
16
- - [API reference](../../docs/api/@wpkernel/pipeline/README.md)
17
- - [PHP codemod roadmap](../../docs/internal/php-json-ast-codemod-plan.md)
11
+ - **ETL Pipelines**: Extract, Transform, and Load stages with shared state.
12
+ - **Build Systems**: Compile, Bundle, and Minify steps with precise ordering.
13
+ - **Code Generators**: The standard "Fragment → Builder" pattern.
14
+
15
+ It guarantees:
16
+
17
+ - **Deterministic Ordering**: Topologically sorts helpers based on `dependsOn`.
18
+ - **Cycle Detection**: Fails fast (halts execution) if dependencies form a loop.
19
+ - **Robust Rollbacks**: Extensions and helpers provide best-effort rollback hooks run LIFO, attempting all cleanup steps and reporting any rollback failures.
20
+ - **Type Safety**: Full TypeScript support for custom contexts, options, and artifacts.
21
+
22
+ ### Architecture Note
23
+
24
+ The package exports a single entry point `@wpkernel/pipeline` which provides the "Standard Pipeline" (Fragments & Builders). This is the recommended API for most consumers.
25
+
26
+ Under the hood, the package is split into:
27
+
28
+ 1. **Standard Pipeline (`src/standard-pipeline`)**: The opinionated implementation used by WPKernel.
29
+ 2. **Core Runner (`src/core/runner`)**: A purely agnostic DAG execution engine.
30
+
31
+ Subpath imports (e.g., `@wpkernel/pipeline/core`) are available if you need to build a completely custom pipeline architecture using the runner primitives directly.
18
32
 
19
33
  ## Installation
20
34
 
@@ -24,101 +38,131 @@ pnpm add @wpkernel/pipeline
24
38
 
25
39
  The package ships pure TypeScript and has no runtime dependencies.
26
40
 
27
- ## Quick start
41
+ ### Usage
42
+
43
+ #### Standard Pipeline (Recommended)
44
+
45
+ Use `createPipeline` for the standard Fragment → Builder workflow used by WPKernel.
28
46
 
29
47
  ```ts
30
- import { createPipeline, createHelper } from '@wpkernel/pipeline';
48
+ import { createPipeline } from '@wpkernel/pipeline';
31
49
 
32
50
  const pipeline = createPipeline({
33
- fragmentKind: 'fragment',
34
- builderKind: 'builder',
35
- createBuildOptions: (options) => options,
36
- createContext: (options) => ({ reporter: options.reporter }),
37
- createFragmentState: () => ({ items: [] }),
38
- createFragmentArgs: ({ context, draft }) => ({
39
- context,
40
- input: undefined,
41
- output: draft,
42
- reporter: context.reporter,
43
- }),
44
- finalizeFragmentState: ({ draft }) => draft,
45
- createBuilderArgs: ({ context, artifact }) => ({
46
- context,
47
- input: artifact,
48
- output: { result: '' },
49
- reporter: context.reporter,
50
- }),
51
+ // Configuration
52
+ createContext: (ops) => ({ db: ops.db }),
53
+ createBuildOptions: () => ({}),
54
+ createFragmentState: () => ({}),
55
+
56
+ // Argument resolvers
57
+ createFragmentArgs: ({ context }) => ({ db: context.db }),
58
+ createBuilderArgs: ({ artifact }) => ({ artifact }),
59
+ });
60
+ ```
61
+
62
+ #### Custom Pipeline (Advanced)
63
+
64
+ For completely custom architectures (ETL, migrations, etc.), use `makePipeline` to define your own stages.
65
+
66
+ ```ts
67
+ import { makePipeline } from '@wpkernel/pipeline';
68
+
69
+ const pipeline = makePipeline({
70
+ // Define the "Stages" of your pipeline
71
+ helperKinds: ['extract', 'transform', 'load'] as const,
72
+ createStages: (deps) => [
73
+ deps.makeLifecycleStage('extract'),
74
+ deps.makeLifecycleStage('transform'),
75
+ deps.makeLifecycleStage('load'),
76
+ deps.commitStage,
77
+ deps.finalizeResult,
78
+ ],
79
+ createContext: (ops) => ({ db: ops.db }),
80
+ // ... logic for resolving args for your helpers ...
81
+ });
82
+ ```
83
+
84
+ ### 2. Register Helpers
85
+
86
+ Helpers are the atomic units of work. They can be anything - functions, objects, or complex services.
87
+
88
+ ```ts
89
+ // "Extract" helper
90
+ pipeline.use({
91
+ kind: 'extract',
92
+ key: 'users',
93
+ apply: async ({ context }) => {
94
+ return context.db.query('SELECT * FROM users');
95
+ },
51
96
  });
52
97
 
53
- pipeline.ir.use(
54
- createHelper({
55
- key: 'collect-items',
56
- kind: 'fragment',
57
- apply: ({ output }) => {
58
- output.items.push('item1', 'item2');
59
- },
60
- })
61
- );
62
-
63
- pipeline.builders.use(
64
- createHelper({
65
- key: 'format-result',
66
- kind: 'builder',
67
- dependsOn: ['collect-items'],
68
- apply: ({ input, output }) => {
69
- output.result = input.items.join(', ');
70
- },
71
- })
72
- );
73
-
74
- const result = await pipeline.run({ reporter: console });
75
- console.log(result.artifact.result); // "item1, item2"
98
+ // "Transform" helper (depends on generic extract logic)
99
+ pipeline.use({
100
+ kind: 'transform',
101
+ key: 'clean-users',
102
+ dependsOn: ['users'],
103
+ apply: ({ input }) => {
104
+ return input.map((u) => ({ ...u, name: u.name.trim() }));
105
+ },
106
+ });
107
+ ```
108
+
109
+ ### 3. Run It
110
+
111
+ The pipeline resolves the graph, executes the content, and manages the lifecycle.
112
+
113
+ ```ts
114
+ const result = await pipeline.run({ db: myDatabase });
76
115
  ```
77
116
 
78
- ## Core concepts
117
+ ## Concepts
118
+
119
+ ### Agnostic Helper Kinds
120
+
121
+ You are not limited to fixed roles. Define any `kind` of helper (e.g., `'validator'`, `'compiler'`, `'notifier'`) and map them to execution stages.
79
122
 
80
- - **Three-phase execution** – fragment helpers assemble intermediate representations, builder
81
- helpers produce artefacts, and extension hooks commit or roll back side-effects.
82
- - **Deterministic ordering** – helpers declare `dependsOn` relationships; the runtime performs
83
- topological sorting, cycle detection, and unused-helper diagnostics.
84
- - **Extension system** – register hooks via `createPipelineExtension()` to manage commits,
85
- rollbacks, and shared setup/teardown logic.
86
- - **Typed contracts** – helper descriptors, execution metadata, and diagnostics surfaces are
87
- fully typed for TypeScript consumers.
123
+ ### Dependency Graph
88
124
 
89
- ## Official extension incubator
125
+ Pipeline creates a dependency graph for _each_ kind of helper. If `Helper B` depends on `Helper A`, the runner ensures `A` executes before `B` (and passes `A`'s output to `B` if configured).
90
126
 
91
- The package owns an `src/extensions/` workspace where internal extensions are designed before
92
- being promoted to standalone packages. The directory ships a README that documents authoring
93
- guidelines and an [`official.ts`](./src/extensions/official.ts) catalogue describing the
94
- blueprints for:
127
+ ### Extensions & Lifecycles
128
+
129
+ Extensions wrap execution with hooks at specific lifecycle stages.
130
+
131
+ **Standard Pipeline Lifecycles**:
132
+ `prepare` → `before-fragments` → `after-fragments` → `before-builders` → `after-builders` → `finalize`
133
+
134
+ > **Note**: Custom pipelines (using `makePipeline`) can define arbitrary lifecycle stages. Extensions can hook into any stage, standard or custom, as long as it exists in the pipeline's execution plan.
135
+
136
+ **Validation**: The pipeline validates extension registrations. If an extension attempts to hook into an unscheduled lifecycle, the pipeline will log a warning instead of silently ignoring it.
137
+
138
+ **Extension Registration (Sync & Async)**: `extensions.use()` returns `MaybePromise<unknown>`. It returns a Promise only if the extension's `register` method is asynchronous.
139
+
140
+ ```ts
141
+ // Sync registration (e.g. simple helper bundles)
142
+ extensions.use(mySyncExtension);
143
+
144
+ // Async registration (e.g. database connections)
145
+ await extensions.use(myAsyncExtension);
146
+ ```
95
147
 
96
- - a live runner extension that streams reporter events to interactive renderers;
97
- - a deterministic concurrency scheduler;
98
- - additional integration blueprints for telemetry and runtime adapters.
148
+ > **Recommendation**: We recommend `await`ing registration when possible for consistency, but you may omit it if you are certain the extension initializes synchronously. `pipeline.run()` will automatically wait for any pending async registrations.
99
149
 
100
- Consumers can import the catalogue through `@wpkernel/pipeline/extensions` to understand the
101
- contracts and helper annotations each extension expects while we finalise their
102
- implementations.
150
+ ### Rollbacks
103
151
 
104
- ## Consumers
152
+ The pipeline supports robust rollback for both helper application and extension lifecycle commit phases:
105
153
 
106
- - `@wpkernel/cli` (code generation pipeline, codemod entry points)
107
- - `@wpkernel/core` (resource/action orchestration)
108
- - `@wpkernel/php-json-ast` (codemod and builder stacks)
109
- - External tooling that requires deterministic job orchestration
154
+ - **Extensions**: Can provide transactional overhead via the `commit` phase. If extensive failure occurs, `rollback` hooks are triggered.
155
+ - **Helpers**: Can return a `rollback` function in their result. These are executed LIFO if a later failure occurs.
156
+ - **Robustness**: The rollback stack continues execution even if individual rollback actions fail (errors are collected and reported).
110
157
 
111
- ## Diagnostics & error handling
158
+ ### Re-run Semantics
112
159
 
113
- Use the built-in factories (`createDefaultError`, `PipelineDiagnostic`) to capture conflicts,
114
- missing dependencies, and rollback metadata. Execution snapshots describe which helpers ran,
115
- which were skipped, and what extensions committed.
160
+ Diagnostics are per-run. Calling `pipeline.run()` automatically clears any previous runtime diagnostics to ensure a fresh state. Static diagnostics (e.g., registration conflicts) are preserved and re-emitted for each run.
116
161
 
117
- ## Contributing
162
+ ## Documentation
118
163
 
119
- Keep helpers exported through `src/index.ts` and accompany new primitives with examples in the
120
- API reference. When expanding the extension system or diagnostics, update the codemod roadmap to
121
- reflect new capabilities that PHP bridges or the CLI can adopt.
164
+ - [Architecture Guide](../../docs/packages/pipeline/architecture.md): Deep dive into the runner's internals and DAG resolution.
165
+ - [API Reference](../../docs/api/@wpkernel/pipeline/README.md): Generated TSDoc for all interfaces.
122
166
 
123
167
  ## License
124
168
 
@@ -62,4 +62,13 @@ export type Program<S> = (state: S) => MaybePromise<S>;
62
62
  * @internal
63
63
  */
64
64
  export declare const composeK: <S>(...fns: Program<S>[]) => Program<S>;
65
+ /**
66
+ * Sync-friendly Probise.all equivalent.
67
+ *
68
+ * @param values
69
+ * @returns
70
+ *
71
+ * @internal
72
+ */
73
+ export declare function maybeAll<T>(values: readonly MaybePromise<T>[]): MaybePromise<T[]>;
65
74
  //# sourceMappingURL=async-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async-utils.d.ts","sourceRoot":"","sources":["../../src/core/async-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,WAAW,CAAC,OAAO,CAAC,CAS3E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,OAAO,EACnC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,EACtB,WAAW,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,YAAY,CAAC,OAAO,CAAC,GAC9C,YAAY,CAAC,OAAO,CAAC,CAUvB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EACzB,GAAG,EAAE,MAAM,YAAY,CAAC,CAAC,CAAC,EAC1B,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,YAAY,CAAC,CAAC,CAAC,GAC1C,YAAY,CAAC,CAAC,CAAC,CAYjB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EACpC,KAAK,EAAE,SAAS,CAAC,EAAE,EACnB,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,YAAY,CAAC,IAAI,CAAC,EACvD,SAAS,GAAE,SAAS,GAAG,SAAqB,GAC1C,YAAY,CAAC,IAAI,CAAC,CAgCpB;AAED;;;;GAIG;AAEH,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,YAAY,CAAC,CAAC,CAAC,CAAC;AACvD;;;;;;GAMG;AAEH,eAAO,MAAM,QAAQ,GACnB,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,KAAG,OAAO,CAAC,CAAC,CAKjC,CAAC;AAEL;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,YAAY,CAAC,CAAC,EAAE,CAAC,CAKjF"}
@@ -0,0 +1,46 @@
1
+ function f(t) {
2
+ return (typeof t != "object" || t === null) && typeof t != "function" ? !1 : typeof t.then == "function";
3
+ }
4
+ function m(t, e) {
5
+ if (typeof e != "function")
6
+ throw new TypeError("maybeThen: onFulfilled is not a function");
7
+ return f(t) ? Promise.resolve(t).then(e) : e(t);
8
+ }
9
+ function l(t, e) {
10
+ try {
11
+ const r = t();
12
+ return f(r) ? Promise.resolve(r).catch((n) => e(n)) : r;
13
+ } catch (r) {
14
+ return e(r);
15
+ }
16
+ }
17
+ function p(t, e, r = "forward") {
18
+ const n = t.length;
19
+ if (n === 0)
20
+ return;
21
+ const h = (o) => r === "forward" ? o < n : o >= 0, s = (o) => r === "forward" ? o + 1 : o - 1, i = (o) => {
22
+ for (let c = o; h(c); c = s(c)) {
23
+ const a = t[c], u = e(a, c);
24
+ if (f(u))
25
+ return Promise.resolve(u).then(
26
+ () => i(s(c))
27
+ );
28
+ }
29
+ }, y = r === "forward" ? 0 : n - 1;
30
+ return i(y);
31
+ }
32
+ const w = (...t) => (e) => t.reduceRight(
33
+ (r, n) => m(r, n),
34
+ e
35
+ );
36
+ function b(t) {
37
+ return t.some(f) ? Promise.all(t) : t;
38
+ }
39
+ export {
40
+ w as composeK,
41
+ f as isPromiseLike,
42
+ b as maybeAll,
43
+ m as maybeThen,
44
+ l as maybeTry,
45
+ p as processSequentially
46
+ };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createExtension.d.ts","sourceRoot":"","sources":["../../src/core/createExtension.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACX,YAAY,EACZ,iBAAiB,EACjB,qBAAqB,EACrB,iCAAiC,EACjC,0BAA0B,EAC1B,MAAM,YAAY,CAAC;AAEpB,UAAU,kCAAkC;IAC3C,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;GAKG;AACH,MAAM,WAAW,mCAAmC,CACnD,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,SAAS,CACR,SAAQ,kCAAkC;IAC3C,QAAQ,CAAC,QAAQ,EAAE,CAClB,QAAQ,EAAE,SAAS,KACf,YAAY,CACd,IAAI,GACJ,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,GACpD,iCAAiC,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAClE,CAAC;CACF;AAED,UAAU,gCAAgC,CACzC,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,SAAS,CACR,SAAQ,kCAAkC;IAC3C,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC;IAC7D,QAAQ,CAAC,IAAI,CAAC,EACX,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,GACpD,iCAAiC,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IACpE,QAAQ,CAAC,SAAS,CAAC,EAAE,0BAA0B,CAAC;CAChD;AAED,MAAM,MAAM,8BAA8B,CACzC,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,SAAS,IAEP,mCAAmC,CACnC,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,SAAS,CACR,GACD,gCAAgC,CAChC,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,SAAS,CACR,CAAC;AAEL;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoJG;AACH,wBAAgB,uBAAuB,CACtC,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,SAAS,EAET,OAAO,EAAE,8BAA8B,CACtC,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,SAAS,CACT,GACC,iBAAiB,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAoD7D"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependency-graph.d.ts","sourceRoot":"","sources":["../../src/core/dependency-graph.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE5D;;;;GAIG;AACH,MAAM,WAAW,gBAAgB,CAAC,OAAO;IACxC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACvB;AAaD;;;;GAIG;AACH,MAAM,WAAW,sBAAsB,CAAC,OAAO;IAC9C,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC9C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAC/B;AAED;;;;GAIG;AACH,MAAM,WAAW,4BAA4B,CAAC,OAAO;IACpD,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAC9B,KAAK,EAAE,sBAAsB,CAAC,OAAO,CAAC,KAClC,IAAI,CAAC;IACV,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC,OAAO,EAAE;QACxC,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;KACjD,KAAK,IAAI,CAAC;IACX;;;;OAIG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1C;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAC7B,MAAM,EAAE;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,EACzC,KAAK,EAAE,MAAM,GACX,MAAM,CAER;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,OAAO,SAAS,gBAAgB,EAC9D,CAAC,EAAE,gBAAgB,CAAC,OAAO,CAAC,EAC5B,CAAC,EAAE,gBAAgB,CAAC,OAAO,CAAC,GAC1B,MAAM,CAUR;AAoPD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,SAAS,gBAAgB,EACrE,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC,EAAE,EACpC,OAAO,EAAE,4BAA4B,CAAC,OAAO,CAAC,GAAG,SAAS,EAC1D,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,KAAK,GACnD;IACF,KAAK,EAAE,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;IACnC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;CACpC,CAgBA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-factory.d.ts","sourceRoot":"","sources":["../../src/core/error-factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,KAAK,CAAC;AAEpE;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,CAIvE;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,kBAAkB,CACjC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,KAAK,GAC9C,YAAY,CAEd"}
@@ -21,4 +21,4 @@ import { RegisteredHelper } from './dependency-graph';
21
21
  * @internal
22
22
  */
23
23
  export declare function executeHelpers<TContext, TInput, TOutput, TReporter extends PipelineReporter, TKind extends HelperKind, THelper extends Helper<TContext, TInput, TOutput, TReporter, TKind>, TArgs extends HelperApplyOptions<TContext, TInput, TOutput, TReporter>>(ordered: RegisteredHelper<THelper>[], makeArgs: (entry: RegisteredHelper<THelper>) => TArgs, invoke: (helper: THelper, args: TArgs, next: () => MaybePromise<void>) => MaybePromise<void>, recordStep: (entry: RegisteredHelper<THelper>) => void): MaybePromise<Set<string>>;
24
- //# sourceMappingURL=executor.d.ts.map
24
+ //# sourceMappingURL=execution-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution-utils.d.ts","sourceRoot":"","sources":["../../src/core/execution-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,MAAM,EACN,kBAAkB,EAClB,UAAU,EACV,YAAY,EACZ,gBAAgB,EAChB,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAG3D;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,cAAc,CAC7B,QAAQ,EACR,MAAM,EACN,OAAO,EACP,SAAS,SAAS,gBAAgB,EAClC,KAAK,SAAS,UAAU,EACxB,OAAO,SAAS,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,EACnE,KAAK,SAAS,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,EAEtE,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC,EAAE,EACpC,QAAQ,EAAE,CAAC,KAAK,EAAE,gBAAgB,CAAC,OAAO,CAAC,KAAK,KAAK,EACrD,MAAM,EAAE,CACP,MAAM,EAAE,OAAO,EACf,IAAI,EAAE,KAAK,EACX,IAAI,EAAE,MAAM,YAAY,CAAC,IAAI,CAAC,KAC1B,YAAY,CAAC,IAAI,CAAC,EACvB,UAAU,EAAE,CAAC,KAAK,EAAE,gBAAgB,CAAC,OAAO,CAAC,KAAK,IAAI,GACpD,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CA0E3B"}
@@ -0,0 +1,2 @@
1
+ export * from './execution-utils';
2
+ //# sourceMappingURL=executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../src/core/executor.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC"}
@@ -1,3 +1,4 @@
1
+ export * from './runner';
1
2
  export { OFFICIAL_EXTENSION_BLUEPRINTS } from './official';
2
3
  export type { OfficialExtensionBlueprint, ExtensionBlueprint, ExtensionBehaviour, ExtensionFactorySignature, } from './official';
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/extensions/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,OAAO,EAAE,6BAA6B,EAAE,MAAM,YAAY,CAAC;AAC3D,YAAY,EACX,0BAA0B,EAC1B,kBAAkB,EAClB,kBAAkB,EAClB,yBAAyB,GACzB,MAAM,YAAY,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"official.d.ts","sourceRoot":"","sources":["../../../src/core/extensions/official.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAElD;;;;GAIG;AACH,MAAM,WAAW,yBAAyB,CAAC,QAAQ,GAAG,OAAO;IAC5D;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC;CAC3B;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/C,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1C;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IAClC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,gBAAgB,CAAC;IAC9C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,yBAAyB,CAAC;IAC7C,QAAQ,CAAC,UAAU,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACnD,QAAQ,CAAC,mBAAmB,EAAE,SAAS,MAAM,EAAE,CAAC;IAChD,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CACzC;AAED;;;;GAIG;AACH,MAAM,MAAM,2BAA2B,GAAG,CACzC,OAAO,CAAC,EAAE,OAAO,KACb,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAE3D;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,6BAA6B,EAAE,SAAS,kBAAkB,EA+GtE,CAAC;AAEF,YAAY,EAAE,kBAAkB,IAAI,0BAA0B,EAAE,CAAC"}
@@ -1,4 +1,4 @@
1
- import { MaybePromise, PipelineExtensionHook, PipelineExtensionHookOptions, PipelineExtensionHookResult, PipelineExtensionRollbackErrorMetadata, PipelineExtensionLifecycle } from './types';
1
+ import { MaybePromise, PipelineExtensionHook, PipelineExtensionHookOptions, PipelineExtensionHookResult, PipelineExtensionLifecycle } from '../types';
2
2
  /**
3
3
  * An extension hook entry with its unique key.
4
4
  *
@@ -39,7 +39,6 @@ export interface RollbackErrorArgs {
39
39
  *
40
40
  * @internal
41
41
  */
42
- export declare function createRollbackErrorMetadata(error: unknown): PipelineExtensionRollbackErrorMetadata;
43
42
  /**
44
43
  * Runs extension hooks sequentially and accumulates their results.
45
44
  *
@@ -82,6 +81,4 @@ export declare function commitExtensionResults<TContext, TOptions, TArtifact>(re
82
81
  * @internal
83
82
  */
84
83
  export declare function rollbackExtensionResults<TContext, TOptions, TArtifact>(results: readonly ExtensionHookExecution<TContext, TOptions, TArtifact>[], hooks: readonly ExtensionHookEntry<TContext, TOptions, TArtifact>[], onRollbackError: (args: RollbackErrorArgs) => void): MaybePromise<void>;
85
- export { OFFICIAL_EXTENSION_BLUEPRINTS } from './extensions/official.js';
86
- export type { OfficialExtensionBlueprint, ExtensionBlueprint, ExtensionBehaviour, ExtensionFactorySignature, } from './extensions/official.js';
87
- //# sourceMappingURL=extensions.d.ts.map
84
+ //# sourceMappingURL=runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../src/core/extensions/runner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,YAAY,EACZ,qBAAqB,EACrB,4BAA4B,EAC5B,2BAA2B,EAC3B,0BAA0B,EAC1B,MAAM,UAAU,CAAC;AASlB;;;;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;AAGH;;;;;;;;;;;;;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"}
@@ -0,0 +1,73 @@
1
+ import { maybeTry as p, maybeThen as a, processSequentially as f, isPromiseLike as k } from "../async-utils.js";
2
+ import { runRollbackStack as b } from "../rollback.js";
3
+ function E(u, s, t, r) {
4
+ let n = t.artifact;
5
+ const i = [], o = u.filter(
6
+ (e) => e.lifecycle === s
7
+ ), m = {
8
+ context: t.context,
9
+ options: t.options,
10
+ lifecycle: s
11
+ }, h = p(
12
+ () => f(o, (e) => {
13
+ const c = e.hook({
14
+ ...m,
15
+ artifact: n
16
+ });
17
+ if (k(c))
18
+ return Promise.resolve(c).then((l) => {
19
+ l && (l.artifact !== void 0 && (n = l.artifact), i.push({
20
+ hook: e,
21
+ result: l
22
+ }));
23
+ });
24
+ if (c)
25
+ return c.artifact !== void 0 && (n = c.artifact), void i.push({
26
+ hook: e,
27
+ result: c
28
+ });
29
+ }),
30
+ (e) => a(
31
+ d(i, o, r),
32
+ () => {
33
+ throw e;
34
+ }
35
+ )
36
+ );
37
+ return a(h, () => ({ artifact: n, results: i }));
38
+ }
39
+ function R(u) {
40
+ return f(u, (s) => {
41
+ const t = s.result.commit;
42
+ if (!t)
43
+ return;
44
+ const r = t();
45
+ if (k(r))
46
+ return r.then(() => {
47
+ });
48
+ });
49
+ }
50
+ function d(u, s, t) {
51
+ const r = s.map((o) => o.key), n = r, i = u.map((o) => ({
52
+ result: o.result,
53
+ hook: o.hook
54
+ })).filter((o) => o.result.rollback).map((o) => ({
55
+ key: o.hook.key,
56
+ run: o.result.rollback
57
+ }));
58
+ return b(i, {
59
+ source: "extension",
60
+ onError: ({ error: o }) => {
61
+ t({
62
+ error: o,
63
+ extensionKeys: r,
64
+ hookSequence: n
65
+ });
66
+ }
67
+ });
68
+ }
69
+ export {
70
+ R as commitExtensionResults,
71
+ d as rollbackExtensionResults,
72
+ E as runExtensionHooks
73
+ };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helper.d.ts","sourceRoot":"","sources":["../../src/core/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"}
@@ -0,0 +1,11 @@
1
+ export * from './async-utils.js';
2
+ export * from './createExtension.js';
3
+ export * from './dependency-graph.js';
4
+ export * from './error-factory.js';
5
+ export * from './executor.js';
6
+ export * from './extensions/index.js';
7
+ export * from './helper.js';
8
+ export * from './registration.js';
9
+ export * from './rollback.js';
10
+ export * from './types.js';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC"}
@@ -0,0 +1,36 @@
1
+ import { composeK as o, isPromiseLike as t, maybeAll as a, maybeThen as l, maybeTry as p, processSequentially as s } from "./async-utils.js";
2
+ import { createPipelineExtension as c } from "./createExtension.js";
3
+ import { compareHelpers as m, createDependencyGraph as x, createHelperId as E } from "./dependency-graph.js";
4
+ import { createDefaultError as k, createErrorFactory as u } from "./error-factory.js";
5
+ import { createHelper as b } from "./helper.js";
6
+ import { handleExtensionRegisterResult as H, registerExtensionHook as I, registerHelper as d } from "./registration.js";
7
+ import { createPipelineRollback as S, createRollbackErrorMetadata as T, runRollbackStack as g } from "./rollback.js";
8
+ import { executeHelpers as F } from "./execution-utils.js";
9
+ import { OFFICIAL_EXTENSION_BLUEPRINTS as N } from "./extensions/official.js";
10
+ import { commitExtensionResults as D, rollbackExtensionResults as O, runExtensionHooks as _ } from "./extensions/runner.js";
11
+ export {
12
+ N as OFFICIAL_EXTENSION_BLUEPRINTS,
13
+ D as commitExtensionResults,
14
+ m as compareHelpers,
15
+ o as composeK,
16
+ k as createDefaultError,
17
+ x as createDependencyGraph,
18
+ u as createErrorFactory,
19
+ b as createHelper,
20
+ E as createHelperId,
21
+ c as createPipelineExtension,
22
+ S as createPipelineRollback,
23
+ T as createRollbackErrorMetadata,
24
+ F as executeHelpers,
25
+ H as handleExtensionRegisterResult,
26
+ t as isPromiseLike,
27
+ a as maybeAll,
28
+ l as maybeThen,
29
+ p as maybeTry,
30
+ s as processSequentially,
31
+ I as registerExtensionHook,
32
+ d as registerHelper,
33
+ O as rollbackExtensionResults,
34
+ _ as runExtensionHooks,
35
+ g as runRollbackStack
36
+ };
@@ -16,6 +16,6 @@ import { ExtensionCoordinator, ExtensionRollbackEvent } from './extension-coordi
16
16
  * @category Pipeline
17
17
  * @internal
18
18
  */
19
- export declare function initExtensionCoordinator<TContext, TOptions, TArtifact>(onRollbackError: (event: ExtensionRollbackEvent<TContext, TOptions, TArtifact>) => void): ExtensionCoordinator<TContext, TOptions, TArtifact>;
19
+ export declare function initExtensionCoordinator<TContext, TOptions, TUserState>(onRollbackError: (event: ExtensionRollbackEvent<TContext, TOptions, TUserState>) => void): ExtensionCoordinator<TContext, TOptions, TUserState>;
20
20
  export type { ExtensionLifecycleState, ExtensionHookEntry, } from './extension-coordinator.types';
21
21
  //# sourceMappingURL=extension-coordinator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extension-coordinator.d.ts","sourceRoot":"","sources":["../../../src/core/internal/extension-coordinator.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACX,oBAAoB,EAEpB,sBAAsB,EACtB,MAAM,+BAA+B,CAAC;AAGvC;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EACtE,eAAe,EAAE,CAChB,KAAK,EAAE,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC,KACzD,IAAI,GACP,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC,CA+EtD;AAED,YAAY,EACX,uBAAuB,EACvB,kBAAkB,GAClB,MAAM,+BAA+B,CAAC"}
@@ -1,18 +1,19 @@
1
- import { commitExtensionResults as m, rollbackExtensionResults as d, runExtensionHooks as f, createRollbackErrorMetadata as s } from "../extensions.js";
1
+ import { createRollbackErrorMetadata as s } from "../rollback.js";
2
2
  import { maybeThen as i } from "../async-utils.js";
3
+ import { commitExtensionResults as u, rollbackExtensionResults as f, runExtensionHooks as d } from "../extensions/runner.js";
3
4
  function R(n) {
4
5
  return {
5
6
  runLifecycle: (t, { hooks: o, hookOptions: r }) => {
6
7
  const c = o.filter(
7
8
  (e) => e.lifecycle === t
8
- ), a = f(
9
+ ), a = d(
9
10
  o,
10
11
  t,
11
12
  r,
12
- ({ error: e, extensionKeys: l, hookSequence: u }) => n({
13
+ ({ error: e, extensionKeys: l, hookSequence: m }) => n({
13
14
  error: e,
14
15
  extensionKeys: l,
15
- hookSequence: u,
16
+ hookSequence: m,
16
17
  errorMetadata: s(e),
17
18
  hookOptions: r
18
19
  })
@@ -27,7 +28,7 @@ function R(n) {
27
28
  );
28
29
  },
29
30
  createRollbackHandler: (t) => (o) => i(
30
- d(
31
+ f(
31
32
  t.results,
32
33
  t.hooks,
33
34
  ({ error: r, extensionKeys: c, hookSequence: a }) => n({
@@ -42,7 +43,7 @@ function R(n) {
42
43
  throw o;
43
44
  }
44
45
  ),
45
- commit: (t) => m(t.results),
46
+ commit: (t) => u(t.results),
46
47
  handleRollbackError: n
47
48
  };
48
49
  }
@@ -6,10 +6,10 @@ import { ExtensionHookEntry, ExtensionHookExecution, RollbackErrorArgs } from '.
6
6
  * @category Pipeline
7
7
  * @internal
8
8
  */
9
- export interface ExtensionLifecycleState<TContext, TOptions, TArtifact> {
10
- readonly artifact: TArtifact;
11
- readonly results: ExtensionHookExecution<TContext, TOptions, TArtifact>[];
12
- readonly hooks: readonly ExtensionHookEntry<TContext, TOptions, TArtifact>[];
9
+ export interface ExtensionLifecycleState<TContext, TOptions, TUserState> {
10
+ readonly artifact: TUserState;
11
+ readonly results: ExtensionHookExecution<TContext, TOptions, TUserState>[];
12
+ readonly hooks: readonly ExtensionHookEntry<TContext, TOptions, TUserState>[];
13
13
  }
14
14
  /**
15
15
  * Handles extension execution, rollback, and commit using the primitives exposed by the
@@ -25,18 +25,18 @@ export interface ExtensionLifecycleState<TContext, TOptions, TArtifact> {
25
25
  * @category Pipeline
26
26
  * @internal
27
27
  */
28
- export interface ExtensionRollbackEvent<TContext, TOptions, TArtifact> extends RollbackErrorArgs {
28
+ export interface ExtensionRollbackEvent<TContext, TOptions, TUserState> extends RollbackErrorArgs {
29
29
  readonly errorMetadata: PipelineExtensionRollbackErrorMetadata;
30
- readonly hookOptions?: PipelineExtensionHookOptions<TContext, TOptions, TArtifact>;
30
+ readonly hookOptions?: PipelineExtensionHookOptions<TContext, TOptions, TUserState>;
31
31
  }
32
- export interface ExtensionCoordinator<TContext, TOptions, TArtifact> {
33
- readonly runLifecycle: (lifecycle: ExtensionHookEntry<TContext, TOptions, TArtifact>['lifecycle'], options: {
34
- readonly hooks: readonly ExtensionHookEntry<TContext, TOptions, TArtifact>[];
35
- readonly hookOptions: PipelineExtensionHookOptions<TContext, TOptions, TArtifact>;
36
- }) => MaybePromise<ExtensionLifecycleState<TContext, TOptions, TArtifact>>;
37
- readonly createRollbackHandler: <TResult>(state: ExtensionLifecycleState<TContext, TOptions, TArtifact>) => (error: unknown) => MaybePromise<TResult>;
38
- readonly commit: (state: ExtensionLifecycleState<TContext, TOptions, TArtifact>) => MaybePromise<void>;
39
- readonly handleRollbackError: (args: ExtensionRollbackEvent<TContext, TOptions, TArtifact>) => void;
32
+ export interface ExtensionCoordinator<TContext, TOptions, TUserState> {
33
+ readonly runLifecycle: (lifecycle: ExtensionHookEntry<TContext, TOptions, TUserState>['lifecycle'], options: {
34
+ readonly hooks: readonly ExtensionHookEntry<TContext, TOptions, TUserState>[];
35
+ readonly hookOptions: PipelineExtensionHookOptions<TContext, TOptions, TUserState>;
36
+ }) => MaybePromise<ExtensionLifecycleState<TContext, TOptions, TUserState>>;
37
+ readonly createRollbackHandler: <TResult>(state: ExtensionLifecycleState<TContext, TOptions, TUserState>) => (error: unknown) => MaybePromise<TResult>;
38
+ readonly commit: (state: ExtensionLifecycleState<TContext, TOptions, TUserState>) => MaybePromise<void>;
39
+ readonly handleRollbackError: (args: ExtensionRollbackEvent<TContext, TOptions, TUserState>) => void;
40
40
  }
41
41
  export type { ExtensionHookEntry, ExtensionHookExecution, RollbackErrorArgs };
42
42
  //# sourceMappingURL=extension-coordinator.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extension-coordinator.types.d.ts","sourceRoot":"","sources":["../../../src/core/internal/extension-coordinator.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,YAAY,EACZ,4BAA4B,EAC5B,sCAAsC,EACtC,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EACX,kBAAkB,EAClB,sBAAsB,EACtB,iBAAiB,EACjB,MAAM,eAAe,CAAC;AAEvB;;;;;GAKG;AACH,MAAM,WAAW,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU;IACtE,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE,CAAC;IAC3E,QAAQ,CAAC,KAAK,EAAE,SAAS,kBAAkB,CAC1C,QAAQ,EACR,QAAQ,EACR,UAAU,CACV,EAAE,CAAC;CACJ;AAED;;;;;;;GAOG;AACH;;;;;GAKG;AACH,MAAM,WAAW,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,CACrE,SAAQ,iBAAiB;IACzB,QAAQ,CAAC,aAAa,EAAE,sCAAsC,CAAC;IAC/D,QAAQ,CAAC,WAAW,CAAC,EAAE,4BAA4B,CAClD,QAAQ,EACR,QAAQ,EACR,UAAU,CACV,CAAC;CACF;AAED,MAAM,WAAW,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU;IACnE,QAAQ,CAAC,YAAY,EAAE,CACtB,SAAS,EAAE,kBAAkB,CAC5B,QAAQ,EACR,QAAQ,EACR,UAAU,CACV,CAAC,WAAW,CAAC,EACd,OAAO,EAAE;QACR,QAAQ,CAAC,KAAK,EAAE,SAAS,kBAAkB,CAC1C,QAAQ,EACR,QAAQ,EACR,UAAU,CACV,EAAE,CAAC;QACJ,QAAQ,CAAC,WAAW,EAAE,4BAA4B,CACjD,QAAQ,EACR,QAAQ,EACR,UAAU,CACV,CAAC;KACF,KACG,YAAY,CAAC,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;IAC3E,QAAQ,CAAC,qBAAqB,EAAE,CAAC,OAAO,EACvC,KAAK,EAAE,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC,KAC1D,CAAC,KAAK,EAAE,OAAO,KAAK,YAAY,CAAC,OAAO,CAAC,CAAC;IAC/C,QAAQ,CAAC,MAAM,EAAE,CAChB,KAAK,EAAE,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC,KAC1D,YAAY,CAAC,IAAI,CAAC,CAAC;IACxB,QAAQ,CAAC,mBAAmB,EAAE,CAC7B,IAAI,EAAE,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC,KACxD,IAAI,CAAC;CACV;AAED,YAAY,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,CAAC"}