@wpkernel/pipeline 0.12.1-beta.0 → 0.12.2-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -0
- package/dist/createExtension.d.ts +4 -3
- package/dist/createExtension.d.ts.map +1 -1
- package/dist/createExtension.js +20 -11
- package/dist/createPipeline.d.ts +28 -188
- package/dist/createPipeline.d.ts.map +1 -1
- package/dist/createPipeline.js +81 -402
- package/dist/extensions/index.d.ts +3 -0
- package/dist/extensions/index.d.ts.map +1 -0
- package/dist/extensions/index.js +8 -0
- package/dist/extensions/official.d.ts +73 -0
- package/dist/extensions/official.d.ts.map +1 -0
- package/dist/extensions/official.js +111 -0
- package/dist/extensions.d.ts +6 -2
- package/dist/extensions.d.ts.map +1 -1
- package/dist/extensions.js +50 -45
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -16
- package/dist/internal/diagnostic-manager.d.ts +29 -0
- package/dist/internal/diagnostic-manager.d.ts.map +1 -0
- package/dist/internal/diagnostic-manager.js +94 -0
- package/dist/internal/diagnostic-manager.types.d.ts +70 -0
- package/dist/internal/diagnostic-manager.types.d.ts.map +1 -0
- package/dist/internal/extension-coordinator.d.ts +21 -0
- package/dist/internal/extension-coordinator.d.ts.map +1 -0
- package/dist/internal/extension-coordinator.js +55 -0
- package/dist/internal/extension-coordinator.types.d.ts +42 -0
- package/dist/internal/extension-coordinator.types.d.ts.map +1 -0
- package/dist/internal/helper-execution.d.ts +32 -0
- package/dist/internal/helper-execution.d.ts.map +1 -0
- package/dist/internal/helper-execution.js +37 -0
- package/dist/internal/pipeline-runner.d.ts +18 -0
- package/dist/internal/pipeline-runner.d.ts.map +1 -0
- package/dist/internal/pipeline-runner.js +261 -0
- package/dist/internal/pipeline-runner.types.d.ts +79 -0
- package/dist/internal/pipeline-runner.types.d.ts.map +1 -0
- package/dist/registration.d.ts +3 -2
- package/dist/registration.d.ts.map +1 -1
- package/dist/registration.js +38 -27
- package/dist/types.d.ts +14 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +8 -3
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @wpkernel/pipeline
|
|
3
|
+
* @license EUPL-1.2
|
|
4
|
+
*/
|
|
5
|
+
const e = [
|
|
6
|
+
{
|
|
7
|
+
id: "live-runner",
|
|
8
|
+
status: "in-development",
|
|
9
|
+
summary: "Provides live progress, retry orchestration, and interactive prompts powered by reporter events.",
|
|
10
|
+
factory: {
|
|
11
|
+
name: "createLivePipelineRunExtension",
|
|
12
|
+
slug: "live-runner",
|
|
13
|
+
options: {
|
|
14
|
+
renderer: "PipelineReporterRenderer",
|
|
15
|
+
retries: "{ default: number; helpers?: Record<string, number>; }",
|
|
16
|
+
prompts: "PromptAdapter"
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
behaviours: [
|
|
20
|
+
{
|
|
21
|
+
name: "Live progress renderer",
|
|
22
|
+
description: "Stream helper lifecycle events to a renderer so users can observe DAG execution in real time.",
|
|
23
|
+
reporterEvents: [
|
|
24
|
+
"pipeline:run:started",
|
|
25
|
+
"pipeline:helper:started",
|
|
26
|
+
"pipeline:helper:succeeded",
|
|
27
|
+
"pipeline:helper:failed"
|
|
28
|
+
],
|
|
29
|
+
integrations: [
|
|
30
|
+
"Terminal renderers that consume structured pipeline reporter events.",
|
|
31
|
+
"Remote observability tools that aggregate helper lifecycle data."
|
|
32
|
+
]
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
name: "Retry and recovery prompts",
|
|
36
|
+
description: "Allow helpers to declare retry policies and surface interactive prompts when failures occur.",
|
|
37
|
+
helperAnnotations: [
|
|
38
|
+
"helper.meta.retryPolicy",
|
|
39
|
+
"helper.meta.prompt"
|
|
40
|
+
],
|
|
41
|
+
integrations: [
|
|
42
|
+
"Prompt adapters that negotiate stdin/stdout access for interactive CLIs."
|
|
43
|
+
]
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
name: "Reporter-driven telemetry",
|
|
47
|
+
description: "Emit structured progress payloads so headless environments can capture telemetry without a TTY renderer.",
|
|
48
|
+
reporterEvents: [
|
|
49
|
+
"pipeline:progress:update",
|
|
50
|
+
"pipeline:retry:scheduled",
|
|
51
|
+
"pipeline:retry:completed"
|
|
52
|
+
]
|
|
53
|
+
}
|
|
54
|
+
],
|
|
55
|
+
pipelineTouchPoints: [
|
|
56
|
+
"Consumes helper-provided metadata via createHelper() options.",
|
|
57
|
+
"Subscribes to reporter hooks exposed on the pipeline context.",
|
|
58
|
+
"Registers a single extension hook through createPipelineExtension."
|
|
59
|
+
],
|
|
60
|
+
rolloutNotes: [
|
|
61
|
+
"Full extension keys are constructed with the pipeline namespace constant from @wpkernel/core/contracts.",
|
|
62
|
+
"Initial milestone focuses on read-only telemetry to validate event semantics.",
|
|
63
|
+
"Interactive prompts ship once reporter transport supports stdin multiplexing.",
|
|
64
|
+
"Retries remain deterministic by respecting helper dependency ordering."
|
|
65
|
+
]
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
id: "concurrency",
|
|
69
|
+
status: "planned",
|
|
70
|
+
summary: "Adds a scheduler that can run independent helper branches in parallel without violating dependency constraints.",
|
|
71
|
+
factory: {
|
|
72
|
+
name: "createDeterministicConcurrencyExtension",
|
|
73
|
+
slug: "concurrency",
|
|
74
|
+
options: {
|
|
75
|
+
maxConcurrency: 'number | "auto"',
|
|
76
|
+
groups: "Record<string, number>"
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
behaviours: [
|
|
80
|
+
{
|
|
81
|
+
name: "Deterministic worker pool",
|
|
82
|
+
description: "Implements a ready-queue executor that only schedules helpers whose dependencies have settled.",
|
|
83
|
+
helperAnnotations: ["helper.meta.concurrencyGroup"],
|
|
84
|
+
integrations: [
|
|
85
|
+
"Workload schedulers that expose capacity metrics or enforce rate limits."
|
|
86
|
+
]
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
name: "Reporter integration",
|
|
90
|
+
description: "Propagates worker state (idle, busy, saturated) via reporter events so renderers can show resource usage.",
|
|
91
|
+
reporterEvents: [
|
|
92
|
+
"pipeline:concurrency:queue",
|
|
93
|
+
"pipeline:concurrency:worker-state"
|
|
94
|
+
]
|
|
95
|
+
}
|
|
96
|
+
],
|
|
97
|
+
pipelineTouchPoints: [
|
|
98
|
+
"Wraps executeHelpers() with a concurrency-aware scheduler.",
|
|
99
|
+
"Requires dependency graph snapshots for ready-queue calculation.",
|
|
100
|
+
"Extends helper registration validation to guard conflicting group caps."
|
|
101
|
+
],
|
|
102
|
+
rolloutNotes: [
|
|
103
|
+
"Full extension keys are constructed with the pipeline namespace constant from @wpkernel/core/contracts.",
|
|
104
|
+
"Prototype with read-only metrics before enabling true parallel execution.",
|
|
105
|
+
"Guarantee stable helper ordering for equal-priority tasks to aid reproducibility."
|
|
106
|
+
]
|
|
107
|
+
}
|
|
108
|
+
];
|
|
109
|
+
export {
|
|
110
|
+
e as OFFICIAL_EXTENSION_BLUEPRINTS
|
|
111
|
+
};
|
package/dist/extensions.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { MaybePromise, PipelineExtensionHook, PipelineExtensionHookOptions, PipelineExtensionHookResult, PipelineExtensionRollbackErrorMetadata } from './types';
|
|
1
|
+
import { MaybePromise, PipelineExtensionHook, PipelineExtensionHookOptions, PipelineExtensionHookResult, PipelineExtensionRollbackErrorMetadata, PipelineExtensionLifecycle } from './types';
|
|
2
2
|
/**
|
|
3
3
|
* An extension hook entry with its unique key.
|
|
4
4
|
*
|
|
@@ -6,6 +6,7 @@ import { MaybePromise, PipelineExtensionHook, PipelineExtensionHookOptions, Pipe
|
|
|
6
6
|
*/
|
|
7
7
|
export interface ExtensionHookEntry<TContext, TOptions, TArtifact> {
|
|
8
8
|
readonly key: string;
|
|
9
|
+
readonly lifecycle: PipelineExtensionLifecycle;
|
|
9
10
|
readonly hook: PipelineExtensionHook<TContext, TOptions, TArtifact>;
|
|
10
11
|
}
|
|
11
12
|
/**
|
|
@@ -46,13 +47,14 @@ export declare function createRollbackErrorMetadata(error: unknown): PipelineExt
|
|
|
46
47
|
* If any hook throws, automatically rolls back all previously executed hooks in reverse order.
|
|
47
48
|
*
|
|
48
49
|
* @param hooks - The extension hooks to run
|
|
50
|
+
* @param lifecycle
|
|
49
51
|
* @param options - Context, options, and initial artifact
|
|
50
52
|
* @param onRollbackError - Callback invoked if a rollback itself fails
|
|
51
53
|
* @returns The final artifact and all hook execution results
|
|
52
54
|
*
|
|
53
55
|
* @internal
|
|
54
56
|
*/
|
|
55
|
-
export declare function runExtensionHooks<TContext, TOptions, TArtifact>(hooks: readonly ExtensionHookEntry<TContext, TOptions, TArtifact>[], options: PipelineExtensionHookOptions<TContext, TOptions, TArtifact>, onRollbackError: (args: RollbackErrorArgs) => void): MaybePromise<{
|
|
57
|
+
export declare function runExtensionHooks<TContext, TOptions, TArtifact>(hooks: readonly ExtensionHookEntry<TContext, TOptions, TArtifact>[], lifecycle: PipelineExtensionLifecycle, options: PipelineExtensionHookOptions<TContext, TOptions, TArtifact>, onRollbackError: (args: RollbackErrorArgs) => void): MaybePromise<{
|
|
56
58
|
artifact: TArtifact;
|
|
57
59
|
results: ExtensionHookExecution<TContext, TOptions, TArtifact>[];
|
|
58
60
|
}>;
|
|
@@ -80,4 +82,6 @@ export declare function commitExtensionResults<TContext, TOptions, TArtifact>(re
|
|
|
80
82
|
* @internal
|
|
81
83
|
*/
|
|
82
84
|
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';
|
|
83
87
|
//# sourceMappingURL=extensions.d.ts.map
|
package/dist/extensions.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extensions.d.ts","sourceRoot":"","sources":["../src/extensions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,YAAY,EACZ,qBAAqB,EACrB,4BAA4B,EAC5B,2BAA2B,EAC3B,sCAAsC,EACtC,MAAM,SAAS,CAAC;AAQjB;;;;GAIG;AACH,MAAM,WAAW,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS;IAChE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;CACpE;AAED;;;;GAIG;AACH,MAAM,WAAW,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS;IACpE,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IACjE,QAAQ,CAAC,MAAM,EAAE,2BAA2B,CAAC,SAAS,CAAC,CAAC;CACxD;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CACzC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,2BAA2B,CAC1C,KAAK,EAAE,OAAO,GACZ,sCAAsC,CAoBxC;AAED
|
|
1
|
+
{"version":3,"file":"extensions.d.ts","sourceRoot":"","sources":["../src/extensions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,YAAY,EACZ,qBAAqB,EACrB,4BAA4B,EAC5B,2BAA2B,EAC3B,sCAAsC,EACtC,0BAA0B,EAC1B,MAAM,SAAS,CAAC;AAQjB;;;;GAIG;AACH,MAAM,WAAW,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS;IAChE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,SAAS,EAAE,0BAA0B,CAAC;IAC/C,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;CACpE;AAED;;;;GAIG;AACH,MAAM,WAAW,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS;IACpE,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IACjE,QAAQ,CAAC,MAAM,EAAE,2BAA2B,CAAC,SAAS,CAAC,CAAC;CACxD;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CACzC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,2BAA2B,CAC1C,KAAK,EAAE,OAAO,GACZ,sCAAsC,CAoBxC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAC9D,KAAK,EAAE,SAAS,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,EACnE,SAAS,EAAE,0BAA0B,EACrC,OAAO,EAAE,4BAA4B,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,EACpE,eAAe,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,GAChD,YAAY,CAAC;IACf,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,EAAE,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,CAAC;CACjE,CAAC,CA8DD;AAED;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EACnE,OAAO,EAAE,SAAS,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,GACvE,YAAY,CAAC,IAAI,CAAC,CAcpB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EACrE,OAAO,EAAE,SAAS,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,EACzE,KAAK,EAAE,SAAS,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,EACnE,eAAe,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,GAChD,YAAY,CAAC,IAAI,CAAC,CA2BpB;AAED,OAAO,EAAE,6BAA6B,EAAE,MAAM,0BAA0B,CAAC;AACzE,YAAY,EACX,0BAA0B,EAC1B,kBAAkB,EAClB,kBAAkB,EAClB,yBAAyB,GACzB,MAAM,0BAA0B,CAAC"}
|
package/dist/extensions.js
CHANGED
|
@@ -1,78 +1,83 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { processSequentially as l, isPromiseLike as k, maybeTry as h, maybeThen as m } from "./async-utils.js";
|
|
2
2
|
/**
|
|
3
3
|
* @wpkernel/pipeline
|
|
4
4
|
* @license EUPL-1.2
|
|
5
5
|
*/
|
|
6
|
-
function
|
|
6
|
+
function x(t) {
|
|
7
7
|
if (t instanceof Error) {
|
|
8
|
-
const { name:
|
|
8
|
+
const { name: n, message: o, stack: e } = t, r = t.cause;
|
|
9
9
|
return {
|
|
10
|
-
name:
|
|
11
|
-
message:
|
|
10
|
+
name: n,
|
|
11
|
+
message: o,
|
|
12
12
|
stack: e,
|
|
13
|
-
cause:
|
|
13
|
+
cause: r
|
|
14
14
|
};
|
|
15
15
|
}
|
|
16
16
|
return typeof t == "string" ? {
|
|
17
17
|
message: t
|
|
18
18
|
} : {};
|
|
19
19
|
}
|
|
20
|
-
function
|
|
21
|
-
let
|
|
22
|
-
const
|
|
23
|
-
() =>
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
20
|
+
function y(t, n, o, e) {
|
|
21
|
+
let r = o.artifact;
|
|
22
|
+
const s = [], u = t.filter(
|
|
23
|
+
(i) => i.lifecycle === n
|
|
24
|
+
), f = {
|
|
25
|
+
context: o.context,
|
|
26
|
+
options: o.options,
|
|
27
|
+
lifecycle: n
|
|
28
|
+
}, p = h(
|
|
29
|
+
() => l(u, (i) => {
|
|
30
|
+
const c = i.hook({
|
|
31
|
+
...f,
|
|
32
|
+
artifact: r
|
|
28
33
|
});
|
|
29
|
-
if (k(
|
|
30
|
-
return Promise.resolve(
|
|
31
|
-
a && (a.artifact !== void 0 && (
|
|
32
|
-
hook:
|
|
34
|
+
if (k(c))
|
|
35
|
+
return Promise.resolve(c).then((a) => {
|
|
36
|
+
a && (a.artifact !== void 0 && (r = a.artifact), s.push({
|
|
37
|
+
hook: i,
|
|
33
38
|
result: a
|
|
34
39
|
}));
|
|
35
40
|
});
|
|
36
|
-
if (
|
|
37
|
-
return
|
|
38
|
-
hook:
|
|
39
|
-
result:
|
|
41
|
+
if (c)
|
|
42
|
+
return c.artifact !== void 0 && (r = c.artifact), void s.push({
|
|
43
|
+
hook: i,
|
|
44
|
+
result: c
|
|
40
45
|
});
|
|
41
46
|
}),
|
|
42
|
-
(
|
|
43
|
-
|
|
47
|
+
(i) => m(
|
|
48
|
+
d(s, u, e),
|
|
44
49
|
() => {
|
|
45
|
-
throw
|
|
50
|
+
throw i;
|
|
46
51
|
}
|
|
47
52
|
)
|
|
48
53
|
);
|
|
49
|
-
return
|
|
54
|
+
return m(p, () => ({ artifact: r, results: s }));
|
|
50
55
|
}
|
|
51
|
-
function
|
|
52
|
-
return
|
|
53
|
-
const
|
|
54
|
-
if (!
|
|
56
|
+
function E(t) {
|
|
57
|
+
return l(t, (n) => {
|
|
58
|
+
const o = n.result.commit;
|
|
59
|
+
if (!o)
|
|
55
60
|
return;
|
|
56
|
-
const e =
|
|
61
|
+
const e = o();
|
|
57
62
|
if (k(e))
|
|
58
63
|
return e.then(() => {
|
|
59
64
|
});
|
|
60
65
|
});
|
|
61
66
|
}
|
|
62
|
-
function
|
|
63
|
-
const e =
|
|
64
|
-
return
|
|
67
|
+
function d(t, n, o) {
|
|
68
|
+
const e = n.map((s) => s.key), r = e;
|
|
69
|
+
return l(
|
|
65
70
|
[...t].reverse(),
|
|
66
|
-
(
|
|
67
|
-
const u =
|
|
71
|
+
(s) => {
|
|
72
|
+
const u = s.result.rollback;
|
|
68
73
|
if (u)
|
|
69
|
-
return
|
|
74
|
+
return h(
|
|
70
75
|
() => u(),
|
|
71
|
-
(
|
|
72
|
-
|
|
73
|
-
error:
|
|
76
|
+
(f) => {
|
|
77
|
+
o({
|
|
78
|
+
error: f,
|
|
74
79
|
extensionKeys: e,
|
|
75
|
-
hookSequence:
|
|
80
|
+
hookSequence: r
|
|
76
81
|
});
|
|
77
82
|
}
|
|
78
83
|
);
|
|
@@ -81,8 +86,8 @@ function h(t, o, r) {
|
|
|
81
86
|
);
|
|
82
87
|
}
|
|
83
88
|
export {
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
89
|
+
E as commitExtensionResults,
|
|
90
|
+
x as createRollbackErrorMetadata,
|
|
91
|
+
d as rollbackExtensionResults,
|
|
92
|
+
y as runExtensionHooks
|
|
88
93
|
};
|
package/dist/index.d.ts
CHANGED
|
@@ -6,10 +6,12 @@ export { executeHelpers } from './executor';
|
|
|
6
6
|
export type { ErrorFactory } from './error-factory';
|
|
7
7
|
export { createDefaultError, createErrorFactory } from './error-factory';
|
|
8
8
|
export { registerHelper, registerExtensionHook, handleExtensionRegisterResult, } from './registration';
|
|
9
|
-
export type { Pipeline, CreatePipelineOptions, PipelineReporter, PipelineExtension, PipelineExtensionHook, PipelineExtensionHookOptions, PipelineExtensionHookResult, PipelineDiagnostic, ConflictDiagnostic, MissingDependencyDiagnostic, UnusedHelperDiagnostic, Helper, HelperApplyFn, HelperDescriptor, HelperKind, HelperMode, CreateHelperOptions, HelperApplyOptions, MaybePromise, PipelineStep, PipelineRunState, HelperExecutionSnapshot, PipelineExecutionMetadata, FragmentFinalizationMetadata, PipelineExtensionRollbackErrorMetadata, } from './types';
|
|
9
|
+
export type { Pipeline, CreatePipelineOptions, PipelineReporter, PipelineExtension, PipelineExtensionHook, PipelineExtensionHookOptions, PipelineExtensionHookResult, PipelineExtensionLifecycle, PipelineExtensionHookRegistration, PipelineExtensionRegisterOutput, PipelineDiagnostic, ConflictDiagnostic, MissingDependencyDiagnostic, UnusedHelperDiagnostic, Helper, HelperApplyFn, HelperDescriptor, HelperKind, HelperMode, CreateHelperOptions, HelperApplyOptions, MaybePromise, PipelineStep, PipelineRunState, HelperExecutionSnapshot, PipelineExecutionMetadata, FragmentFinalizationMetadata, PipelineExtensionRollbackErrorMetadata, } from './types';
|
|
10
10
|
export type { RegisteredHelper, MissingDependencyIssue, } from './dependency-graph';
|
|
11
11
|
export { createHelperId, compareHelpers } from './dependency-graph';
|
|
12
12
|
export { isPromiseLike, maybeThen, maybeTry, processSequentially, } from './async-utils';
|
|
13
13
|
export type { ExtensionHookEntry, ExtensionHookExecution, RollbackErrorArgs, } from './extensions';
|
|
14
14
|
export { createRollbackErrorMetadata } from './extensions';
|
|
15
|
+
export { OFFICIAL_EXTENSION_BLUEPRINTS } from './extensions/official';
|
|
16
|
+
export type { OfficialExtensionBlueprint } from './extensions/official';
|
|
15
17
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,YAAY,EAAE,8BAA8B,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EACN,cAAc,EACd,qBAAqB,EACrB,6BAA6B,GAC7B,MAAM,gBAAgB,CAAC;AAGxB,YAAY,EAEX,QAAQ,EACR,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,4BAA4B,EAC5B,2BAA2B,EAC3B,kBAAkB,EAClB,kBAAkB,EAClB,2BAA2B,EAC3B,sBAAsB,EAGtB,MAAM,EACN,aAAa,EACb,gBAAgB,EAChB,UAAU,EACV,UAAU,EACV,mBAAmB,EACnB,kBAAkB,EAGlB,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,uBAAuB,EACvB,yBAAyB,EACzB,4BAA4B,EAC5B,sCAAsC,GACtC,MAAM,SAAS,CAAC;AAGjB,YAAY,EACX,gBAAgB,EAChB,sBAAsB,GACtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGpE,OAAO,EACN,aAAa,EACb,SAAS,EACT,QAAQ,EACR,mBAAmB,GACnB,MAAM,eAAe,CAAC;AAGvB,YAAY,EACX,kBAAkB,EAClB,sBAAsB,EACtB,iBAAiB,GACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,YAAY,EAAE,8BAA8B,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EACN,cAAc,EACd,qBAAqB,EACrB,6BAA6B,GAC7B,MAAM,gBAAgB,CAAC;AAGxB,YAAY,EAEX,QAAQ,EACR,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,4BAA4B,EAC5B,2BAA2B,EAC3B,0BAA0B,EAC1B,iCAAiC,EACjC,+BAA+B,EAC/B,kBAAkB,EAClB,kBAAkB,EAClB,2BAA2B,EAC3B,sBAAsB,EAGtB,MAAM,EACN,aAAa,EACb,gBAAgB,EAChB,UAAU,EACV,UAAU,EACV,mBAAmB,EACnB,kBAAkB,EAGlB,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,uBAAuB,EACvB,yBAAyB,EACzB,4BAA4B,EAC5B,sCAAsC,GACtC,MAAM,SAAS,CAAC;AAGjB,YAAY,EACX,gBAAgB,EAChB,sBAAsB,GACtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGpE,OAAO,EACN,aAAa,EACb,SAAS,EACT,QAAQ,EACR,mBAAmB,GACnB,MAAM,eAAe,CAAC;AAGvB,YAAY,EACX,kBAAkB,EAClB,sBAAsB,EACtB,iBAAiB,GACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAC;AAG3D,OAAO,EAAE,6BAA6B,EAAE,MAAM,uBAAuB,CAAC;AACtE,YAAY,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,31 +1,33 @@
|
|
|
1
1
|
import { createHelper as o } from "./helper.js";
|
|
2
|
-
import { createPipeline as
|
|
2
|
+
import { createPipeline as p } from "./createPipeline.js";
|
|
3
3
|
import { createPipelineExtension as i } from "./createExtension.js";
|
|
4
4
|
import { executeHelpers as m } from "./executor.js";
|
|
5
|
-
import { createDefaultError as
|
|
6
|
-
import { handleExtensionRegisterResult as
|
|
7
|
-
import { compareHelpers as
|
|
8
|
-
import { isPromiseLike as
|
|
9
|
-
import { createRollbackErrorMetadata as
|
|
5
|
+
import { createDefaultError as s, createErrorFactory as c } from "./error-factory.js";
|
|
6
|
+
import { handleExtensionRegisterResult as n, registerExtensionHook as E, registerHelper as H } from "./registration.js";
|
|
7
|
+
import { compareHelpers as I, createHelperId as u } from "./dependency-graph.js";
|
|
8
|
+
import { isPromiseLike as R, maybeThen as T, maybeTry as b, processSequentially as d } from "./async-utils.js";
|
|
9
|
+
import { createRollbackErrorMetadata as k } from "./extensions.js";
|
|
10
|
+
import { OFFICIAL_EXTENSION_BLUEPRINTS as L } from "./extensions/official.js";
|
|
10
11
|
/**
|
|
11
12
|
* @wpkernel/pipeline
|
|
12
13
|
* @license EUPL-1.2
|
|
13
14
|
*/
|
|
14
15
|
export {
|
|
15
|
-
|
|
16
|
-
|
|
16
|
+
L as OFFICIAL_EXTENSION_BLUEPRINTS,
|
|
17
|
+
I as compareHelpers,
|
|
18
|
+
s as createDefaultError,
|
|
17
19
|
c as createErrorFactory,
|
|
18
20
|
o as createHelper,
|
|
19
|
-
|
|
20
|
-
|
|
21
|
+
u as createHelperId,
|
|
22
|
+
p as createPipeline,
|
|
21
23
|
i as createPipelineExtension,
|
|
22
|
-
|
|
24
|
+
k as createRollbackErrorMetadata,
|
|
23
25
|
m as executeHelpers,
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
n as handleExtensionRegisterResult,
|
|
27
|
+
R as isPromiseLike,
|
|
28
|
+
T as maybeThen,
|
|
29
|
+
b as maybeTry,
|
|
30
|
+
d as processSequentially,
|
|
29
31
|
E as registerExtensionHook,
|
|
30
32
|
H as registerHelper
|
|
31
33
|
};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { DiagnosticManager, DiagnosticManagerInitConfig } from './diagnostic-manager.types';
|
|
2
|
+
import { Helper, HelperKind, PipelineDiagnostic, PipelineReporter } from '../types';
|
|
3
|
+
/**
|
|
4
|
+
* Creates a diagnostic manager instance scoped to a pipeline.
|
|
5
|
+
*
|
|
6
|
+
* The manager collects helper registration conflicts, missing dependencies, unused helper
|
|
7
|
+
* notifications, and runtime diagnostics. It stores them until the reporter becomes available and
|
|
8
|
+
* replays the backlog immediately when one is provided. This keeps `createPipeline` focused on the
|
|
9
|
+
* high-level orchestration while the manager owns stateful bookkeeping concerns.
|
|
10
|
+
*
|
|
11
|
+
* @param params
|
|
12
|
+
* @example
|
|
13
|
+
* ```ts
|
|
14
|
+
* const manager = initDiagnosticManager({
|
|
15
|
+
* options,
|
|
16
|
+
* fragmentKind: 'fragment',
|
|
17
|
+
* builderKind: 'builder',
|
|
18
|
+
* });
|
|
19
|
+
* manager.flagUnusedHelper(helper, 'fragment', 'not executed', []);
|
|
20
|
+
* manager.record({ type: 'conflict', key: 'demo', mode: 'extend', helpers: [], message: '' });
|
|
21
|
+
* ```
|
|
22
|
+
*
|
|
23
|
+
* @category Pipeline
|
|
24
|
+
* @internal
|
|
25
|
+
*/
|
|
26
|
+
export declare function initDiagnosticManager<TRunOptions, TBuildOptions, TContext extends {
|
|
27
|
+
reporter: TReporter;
|
|
28
|
+
}, TReporter extends PipelineReporter, TDraft, TArtifact, TDiagnostic extends PipelineDiagnostic, TRunResult, TFragmentInput, TFragmentOutput, TBuilderInput, TBuilderOutput, TFragmentKind extends HelperKind, TBuilderKind extends HelperKind, TFragmentHelper extends Helper<TContext, TFragmentInput, TFragmentOutput, TReporter, TFragmentKind>, TBuilderHelper extends Helper<TContext, TBuilderInput, TBuilderOutput, TReporter, TBuilderKind>>(params: DiagnosticManagerInitConfig<TRunOptions, TBuildOptions, TContext, TReporter, TDraft, TArtifact, TDiagnostic, TRunResult, TFragmentInput, TFragmentOutput, TBuilderInput, TBuilderOutput, TFragmentKind, TBuilderKind, TFragmentHelper, TBuilderHelper>): DiagnosticManager<TRunOptions, TBuildOptions, TContext, TReporter, TDraft, TArtifact, TDiagnostic, TRunResult, TFragmentInput, TFragmentOutput, TBuilderInput, TBuilderOutput, TFragmentKind, TBuilderKind, TFragmentHelper, TBuilderHelper>;
|
|
29
|
+
//# sourceMappingURL=diagnostic-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnostic-manager.d.ts","sourceRoot":"","sources":["../../src/internal/diagnostic-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,iBAAiB,EACjB,2BAA2B,EAC3B,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EACX,MAAM,EAEN,UAAU,EACV,kBAAkB,EAClB,gBAAgB,EAChB,MAAM,UAAU,CAAC;AAGlB;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,qBAAqB,CACpC,WAAW,EACX,aAAa,EACb,QAAQ,SAAS;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,EACxC,SAAS,SAAS,gBAAgB,EAClC,MAAM,EACN,SAAS,EACT,WAAW,SAAS,kBAAkB,EACtC,UAAU,EACV,cAAc,EACd,eAAe,EACf,aAAa,EACb,cAAc,EACd,aAAa,SAAS,UAAU,EAChC,YAAY,SAAS,UAAU,EAC/B,eAAe,SAAS,MAAM,CAC7B,QAAQ,EACR,cAAc,EACd,eAAe,EACf,SAAS,EACT,aAAa,CACb,EACD,cAAc,SAAS,MAAM,CAC5B,QAAQ,EACR,aAAa,EACb,cAAc,EACd,SAAS,EACT,YAAY,CACZ,EAED,MAAM,EAAE,2BAA2B,CAClC,WAAW,EACX,aAAa,EACb,QAAQ,EACR,SAAS,EACT,MAAM,EACN,SAAS,EACT,WAAW,EACX,UAAU,EACV,cAAc,EACd,eAAe,EACf,aAAa,EACb,cAAc,EACd,aAAa,EACb,YAAY,EACZ,eAAe,EACf,cAAc,CACd,GACC,iBAAiB,CACnB,WAAW,EACX,aAAa,EACb,QAAQ,EACR,SAAS,EACT,MAAM,EACN,SAAS,EACT,WAAW,EACX,UAAU,EACV,cAAc,EACd,eAAe,EACf,aAAa,EACb,cAAc,EACd,aAAa,EACb,YAAY,EACZ,eAAe,EACf,cAAc,CACd,CA6LA"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @wpkernel/pipeline
|
|
3
|
+
* @license EUPL-1.2
|
|
4
|
+
*/
|
|
5
|
+
function w(i) {
|
|
6
|
+
const g = [], a = /* @__PURE__ */ new WeakMap();
|
|
7
|
+
let s;
|
|
8
|
+
const d = (e, n) => e === i.fragmentKind ? `Fragment helper "${n.key}"` : e === i.builderKind ? `Builder helper "${n.key}"` : `Helper "${n.key}"`, u = (e) => {
|
|
9
|
+
if (!s || !i.options.onDiagnostic)
|
|
10
|
+
return;
|
|
11
|
+
const n = a.get(s);
|
|
12
|
+
if (n?.has(e))
|
|
13
|
+
return;
|
|
14
|
+
const t = n ?? /* @__PURE__ */ new Set();
|
|
15
|
+
i.options.onDiagnostic({
|
|
16
|
+
reporter: s,
|
|
17
|
+
diagnostic: e
|
|
18
|
+
}), t.add(e), n || a.set(s, t);
|
|
19
|
+
}, c = (e) => {
|
|
20
|
+
g.push(e), u(e);
|
|
21
|
+
}, y = (e, n, t, o) => {
|
|
22
|
+
const r = i.options.createConflictDiagnostic?.({
|
|
23
|
+
helper: e,
|
|
24
|
+
existing: n,
|
|
25
|
+
message: o
|
|
26
|
+
}) ?? {
|
|
27
|
+
type: "conflict",
|
|
28
|
+
key: e.key,
|
|
29
|
+
mode: e.mode,
|
|
30
|
+
helpers: [
|
|
31
|
+
n.origin ?? n.key,
|
|
32
|
+
e.origin ?? e.key
|
|
33
|
+
],
|
|
34
|
+
message: o,
|
|
35
|
+
kind: t
|
|
36
|
+
};
|
|
37
|
+
c(r);
|
|
38
|
+
}, p = (e, n, t) => {
|
|
39
|
+
const o = `${d(
|
|
40
|
+
t,
|
|
41
|
+
e
|
|
42
|
+
)} depends on unknown helper "${n}".`, r = i.options.createMissingDependencyDiagnostic?.({
|
|
43
|
+
helper: e,
|
|
44
|
+
dependency: n,
|
|
45
|
+
message: o
|
|
46
|
+
}) ?? {
|
|
47
|
+
type: "missing-dependency",
|
|
48
|
+
key: e.key,
|
|
49
|
+
dependency: n,
|
|
50
|
+
message: o,
|
|
51
|
+
kind: t,
|
|
52
|
+
helper: e.origin ?? e.key
|
|
53
|
+
};
|
|
54
|
+
c(r);
|
|
55
|
+
}, f = (e, n, t, o) => {
|
|
56
|
+
const r = `${d(n, e)} ${t}.`, k = i.options.createUnusedHelperDiagnostic?.({
|
|
57
|
+
helper: e,
|
|
58
|
+
message: r
|
|
59
|
+
}) ?? {
|
|
60
|
+
type: "unused-helper",
|
|
61
|
+
key: e.key,
|
|
62
|
+
message: r,
|
|
63
|
+
kind: n,
|
|
64
|
+
helper: e.origin ?? e.key,
|
|
65
|
+
dependsOn: o
|
|
66
|
+
};
|
|
67
|
+
c(k);
|
|
68
|
+
};
|
|
69
|
+
return {
|
|
70
|
+
describeHelper: d,
|
|
71
|
+
flagConflict: y,
|
|
72
|
+
flagMissingDependency: p,
|
|
73
|
+
flagUnusedHelper: f,
|
|
74
|
+
reviewUnusedHelpers: (e, n, t) => {
|
|
75
|
+
for (const o of e)
|
|
76
|
+
n.has(o.id) || f(
|
|
77
|
+
o.helper,
|
|
78
|
+
t,
|
|
79
|
+
"was registered but never executed",
|
|
80
|
+
o.helper.dependsOn
|
|
81
|
+
);
|
|
82
|
+
},
|
|
83
|
+
setReporter: (e) => {
|
|
84
|
+
if (s = e, !!s)
|
|
85
|
+
for (const n of g)
|
|
86
|
+
u(n);
|
|
87
|
+
},
|
|
88
|
+
record: c,
|
|
89
|
+
readDiagnostics: () => g
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
export {
|
|
93
|
+
w as initDiagnosticManager
|
|
94
|
+
};
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { RegisteredHelper } from '../dependency-graph';
|
|
2
|
+
import { CreatePipelineOptions, Helper, HelperDescriptor, HelperKind, PipelineDiagnostic, PipelineReporter } from '../types';
|
|
3
|
+
/**
|
|
4
|
+
* Shared structural contract for the diagnostic subsystem used by {@link createPipeline}.
|
|
5
|
+
*
|
|
6
|
+
* The `DiagnosticManager` is intentionally generic so that downstream pipelines can customise
|
|
7
|
+
* context, helper kinds, artifact shapes, and reporter implementations without leaking internal
|
|
8
|
+
* types. All implementations produced by {@link initDiagnosticManager} honour this interface.
|
|
9
|
+
*
|
|
10
|
+
* @template TRunOptions - Options accepted by `pipeline.run()`
|
|
11
|
+
* @template TBuildOptions - Options produced by `createBuildOptions`
|
|
12
|
+
* @template TContext - Pipeline execution context, including the reporter instance
|
|
13
|
+
* @template TReporter - Reporter type used to publish diagnostics
|
|
14
|
+
* @template TDraft - Fragment draft produced before builders execute
|
|
15
|
+
* @template TArtifact - Final artifact emitted by the pipeline
|
|
16
|
+
* @template TDiagnostic - Diagnostic entry recorded during execution
|
|
17
|
+
* @template TRunResult - Result returned by `pipeline.run()`
|
|
18
|
+
* @template TFragmentInput - Input passed to fragment helpers
|
|
19
|
+
* @template TFragmentOutput - Output produced by fragment helpers
|
|
20
|
+
* @template TBuilderInput - Input passed to builder helpers
|
|
21
|
+
* @template TBuilderOutput - Output produced by builder helpers
|
|
22
|
+
* @template TFragmentKind - Helper kind identifier for fragment helpers
|
|
23
|
+
* @template TBuilderKind - Helper kind identifier for builder helpers
|
|
24
|
+
* @template TFragmentHelper - Helper implementation registered in the fragment stage
|
|
25
|
+
* @template TBuilderHelper - Helper implementation registered in the builder stage
|
|
26
|
+
*
|
|
27
|
+
* @category Pipeline
|
|
28
|
+
* @internal
|
|
29
|
+
*/
|
|
30
|
+
export interface DiagnosticManager<TRunOptions, TBuildOptions, TContext extends {
|
|
31
|
+
reporter: TReporter;
|
|
32
|
+
}, TReporter extends PipelineReporter, TDraft, TArtifact, TDiagnostic extends PipelineDiagnostic, TRunResult, TFragmentInput, TFragmentOutput, TBuilderInput, TBuilderOutput, TFragmentKind extends HelperKind, TBuilderKind extends HelperKind, TFragmentHelper extends Helper<TContext, TFragmentInput, TFragmentOutput, TReporter, TFragmentKind>, TBuilderHelper extends Helper<TContext, TBuilderInput, TBuilderOutput, TReporter, TBuilderKind>> {
|
|
33
|
+
readonly describeHelper: (kind: HelperKind, helper: HelperDescriptor) => string;
|
|
34
|
+
readonly flagConflict: (helper: HelperDescriptor, existing: HelperDescriptor, kind: HelperKind, message: string) => void;
|
|
35
|
+
readonly flagMissingDependency: (helper: HelperDescriptor, dependency: string, kind: HelperKind) => void;
|
|
36
|
+
readonly flagUnusedHelper: (helper: HelperDescriptor, kind: HelperKind, reason: string, dependsOn: readonly string[]) => void;
|
|
37
|
+
readonly reviewUnusedHelpers: <THelper extends HelperDescriptor>(entries: RegisteredHelper<THelper>[], visited: Set<string>, kind: HelperKind) => void;
|
|
38
|
+
readonly setReporter: (reporter: TReporter | undefined) => void;
|
|
39
|
+
readonly record: (diagnostic: TDiagnostic) => void;
|
|
40
|
+
readonly readDiagnostics: () => readonly TDiagnostic[];
|
|
41
|
+
readonly __types?: {
|
|
42
|
+
readonly runOptions: TRunOptions;
|
|
43
|
+
readonly buildOptions: TBuildOptions;
|
|
44
|
+
readonly draft: TDraft;
|
|
45
|
+
readonly artifact: TArtifact;
|
|
46
|
+
readonly runResult: TRunResult;
|
|
47
|
+
readonly fragmentInput: TFragmentInput;
|
|
48
|
+
readonly fragmentOutput: TFragmentOutput;
|
|
49
|
+
readonly builderInput: TBuilderInput;
|
|
50
|
+
readonly builderOutput: TBuilderOutput;
|
|
51
|
+
readonly fragmentHelper: TFragmentHelper;
|
|
52
|
+
readonly builderHelper: TBuilderHelper;
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Configuration object consumed by {@link initDiagnosticManager}. Splitting the type from the
|
|
57
|
+
* implementation keeps the orchestration module lightweight while enabling re-use in tests.
|
|
58
|
+
*
|
|
59
|
+
* @category Pipeline
|
|
60
|
+
* @internal
|
|
61
|
+
*/
|
|
62
|
+
export interface DiagnosticManagerInitConfig<TRunOptions, TBuildOptions, TContext extends {
|
|
63
|
+
reporter: TReporter;
|
|
64
|
+
}, TReporter extends PipelineReporter, TDraft, TArtifact, TDiagnostic extends PipelineDiagnostic, TRunResult, TFragmentInput, TFragmentOutput, TBuilderInput, TBuilderOutput, TFragmentKind extends HelperKind, TBuilderKind extends HelperKind, TFragmentHelper extends Helper<TContext, TFragmentInput, TFragmentOutput, TReporter, TFragmentKind>, TBuilderHelper extends Helper<TContext, TBuilderInput, TBuilderOutput, TReporter, TBuilderKind>> {
|
|
65
|
+
readonly options: CreatePipelineOptions<TRunOptions, TBuildOptions, TContext, TReporter, TDraft, TArtifact, TDiagnostic, TRunResult, TFragmentInput, TFragmentOutput, TBuilderInput, TBuilderOutput, TFragmentKind, TBuilderKind, TFragmentHelper, TBuilderHelper>;
|
|
66
|
+
readonly fragmentKind: TFragmentKind;
|
|
67
|
+
readonly builderKind: TBuilderKind;
|
|
68
|
+
}
|
|
69
|
+
export type { ErrorFactory } from '../error-factory';
|
|
70
|
+
//# sourceMappingURL=diagnostic-manager.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnostic-manager.types.d.ts","sourceRoot":"","sources":["../../src/internal/diagnostic-manager.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { ExtensionCoordinator, ExtensionRollbackEvent } from './extension-coordinator.types';
|
|
2
|
+
/**
|
|
3
|
+
* Builds an {@link ExtensionCoordinator} tailored to the provided rollback handler.
|
|
4
|
+
*
|
|
5
|
+
* @param onRollbackError
|
|
6
|
+
* @example
|
|
7
|
+
* ```ts
|
|
8
|
+
* const coordinator = initExtensionCoordinator(({ error }) => console.warn(error));
|
|
9
|
+
* const state = await coordinator.runLifecycle('after-fragments', {
|
|
10
|
+
* hooks,
|
|
11
|
+
* options: hookOptions,
|
|
12
|
+
* });
|
|
13
|
+
* await coordinator.commit(state);
|
|
14
|
+
* ```
|
|
15
|
+
*
|
|
16
|
+
* @category Pipeline
|
|
17
|
+
* @internal
|
|
18
|
+
*/
|
|
19
|
+
export declare function initExtensionCoordinator<TContext, TOptions, TArtifact>(onRollbackError: (event: ExtensionRollbackEvent<TContext, TOptions, TArtifact>) => void): ExtensionCoordinator<TContext, TOptions, TArtifact>;
|
|
20
|
+
export type { ExtensionLifecycleState, ExtensionHookEntry, } from './extension-coordinator.types';
|
|
21
|
+
//# sourceMappingURL=extension-coordinator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extension-coordinator.d.ts","sourceRoot":"","sources":["../../src/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,SAAS,EACrE,eAAe,EAAE,CAChB,KAAK,EAAE,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,KACxD,IAAI,GACP,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CA+ErD;AAED,YAAY,EACX,uBAAuB,EACvB,kBAAkB,GAClB,MAAM,+BAA+B,CAAC"}
|