@intentius/chant 0.70.1 → 0.71.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.
- package/dist/cli/handlers/fan-out.d.ts +45 -0
- package/dist/cli/handlers/fan-out.d.ts.map +1 -0
- package/dist/cli/handlers/lifecycle.d.ts +13 -0
- package/dist/cli/handlers/lifecycle.d.ts.map +1 -1
- package/dist/cli/handlers/operator.d.ts.map +1 -1
- package/dist/cli/handlers/run.d.ts +35 -0
- package/dist/cli/handlers/run.d.ts.map +1 -1
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/registry.d.ts +23 -0
- package/dist/cli/registry.d.ts.map +1 -1
- package/dist/components/deploy-units.d.ts +12 -2
- package/dist/components/deploy-units.d.ts.map +1 -1
- package/dist/components/fan-out-output.d.ts +70 -0
- package/dist/components/fan-out-output.d.ts.map +1 -0
- package/dist/components/fan-out-run.d.ts +80 -0
- package/dist/components/fan-out-run.d.ts.map +1 -0
- package/dist/components/fan-out-support.d.ts +65 -0
- package/dist/components/fan-out-support.d.ts.map +1 -0
- package/dist/components/fan-out.d.ts +194 -0
- package/dist/components/fan-out.d.ts.map +1 -0
- package/dist/components/index.d.ts +4 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/discovery/fold-import.d.ts +36 -1
- package/dist/discovery/fold-import.d.ts.map +1 -1
- package/dist/fold/subset.d.ts +22 -0
- package/dist/fold/subset.d.ts.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/lifecycle/affected.d.ts +26 -0
- package/dist/lifecycle/affected.d.ts.map +1 -1
- package/dist/op/activities/activity-contracts.d.ts +16 -1
- package/dist/op/activities/activity-contracts.d.ts.map +1 -1
- package/dist/op/activities/index.d.ts +1 -1
- package/dist/op/activities/index.d.ts.map +1 -1
- package/dist/op/activities/shell.d.ts +31 -2
- package/dist/op/activities/shell.d.ts.map +1 -1
- package/dist/op/activity-contract.d.ts +1 -1
- package/dist/op/activity-contract.d.ts.map +1 -1
- package/dist/op/activity-profiles.d.ts +19 -0
- package/dist/op/activity-profiles.d.ts.map +1 -1
- package/dist/op/builders.d.ts +21 -3
- package/dist/op/builders.d.ts.map +1 -1
- package/dist/op/gate-name.d.ts +10 -0
- package/dist/op/gate-name.d.ts.map +1 -1
- package/dist/op/step-output-ref.d.ts +25 -8
- package/dist/op/step-output-ref.d.ts.map +1 -1
- package/package.json +2 -1
- package/src/cli/handlers/fan-out.test.ts +394 -0
- package/src/cli/handlers/fan-out.ts +336 -0
- package/src/cli/handlers/lifecycle.test.ts +74 -1
- package/src/cli/handlers/lifecycle.ts +29 -1
- package/src/cli/handlers/operator.test.ts +22 -0
- package/src/cli/handlers/operator.ts +11 -3
- package/src/cli/handlers/run.ts +7 -1
- package/src/cli/main.ts +25 -3
- package/src/cli/registry.ts +23 -0
- package/src/components/deploy-units.ts +14 -4
- package/src/components/fan-out-output.test.ts +216 -0
- package/src/components/fan-out-output.ts +162 -0
- package/src/components/fan-out-run.test.ts +194 -0
- package/src/components/fan-out-run.ts +221 -0
- package/src/components/fan-out-support.test.ts +125 -0
- package/src/components/fan-out-support.ts +95 -0
- package/src/components/fan-out.test.ts +284 -0
- package/src/components/fan-out.ts +421 -0
- package/src/components/index.ts +33 -0
- package/src/discovery/fold-import.ts +81 -3
- package/src/fold/subset-public-export.test.ts +31 -0
- package/src/fold/subset.ts +23 -0
- package/src/index.ts +6 -0
- package/src/lifecycle/affected.test.ts +118 -0
- package/src/lifecycle/affected.ts +118 -14
- package/src/meta/declared-imports.test.ts +141 -0
- package/src/op/activities/activity-contracts.ts +17 -1
- package/src/op/activities/index.ts +1 -1
- package/src/op/activities/shell.test.ts +156 -0
- package/src/op/activities/shell.ts +84 -9
- package/src/op/activity-profiles.test.ts +16 -2
- package/src/op/activity-profiles.ts +18 -0
- package/src/op/builders.ts +22 -4
- package/src/op/gate-name.ts +11 -0
- package/src/op/op-ir.test.ts +4 -1
- package/src/op/op.test.ts +7 -2
- package/src/op/step-output-ref.ts +29 -8
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fan a change out downstream, in an order derived from the source (#2417).
|
|
3
|
+
*
|
|
4
|
+
* The order was never the missing piece. `resolveComponentGraph` (./driver.ts)
|
|
5
|
+
* already Kahn-layers a component set by `dependsOn` into parallel-safe waves,
|
|
6
|
+
* flattens to a topological order, refuses a cycle by name and refuses a
|
|
7
|
+
* `dependsOn` it has not been given. What it cannot do is order a *subset*:
|
|
8
|
+
* hand it the affected components alone and it throws `UnknownDependencyError`,
|
|
9
|
+
* because a selected component still names a dependency that is not in the set.
|
|
10
|
+
*
|
|
11
|
+
* That is what this module is. Given every component in the project and the
|
|
12
|
+
* ones whose inputs moved, it derives who else has to run, in what order, what
|
|
13
|
+
* has to be seeded because it is deliberately not running, and one digest that
|
|
14
|
+
* identifies the whole derivation so a single gate can be bound to it.
|
|
15
|
+
*
|
|
16
|
+
* ## Why derived rather than declared
|
|
17
|
+
*
|
|
18
|
+
* The competing shape is a registry where you write down that component B
|
|
19
|
+
* depends on component A. That registry is a second statement of a relationship
|
|
20
|
+
* the source already makes, and it is wrong the first time somebody adds a
|
|
21
|
+
* reference without updating it. `dependsOn` is in the component; the graph is
|
|
22
|
+
* a walk over it.
|
|
23
|
+
*
|
|
24
|
+
* ## Three outcomes, never two
|
|
25
|
+
*
|
|
26
|
+
* A component is selected, skipped as unaffected, or **indeterminate** — the
|
|
27
|
+
* same third answer `../lifecycle/affected.ts` already refuses to collapse. A
|
|
28
|
+
* component whose inputs arrive at deploy time cannot be judged from a source
|
|
29
|
+
* diff, so it is reported rather than guessed at in either direction. Fanning
|
|
30
|
+
* out to everything on any change is easy to build, worth nothing, and reads
|
|
31
|
+
* exactly like diligence in a log.
|
|
32
|
+
*
|
|
33
|
+
* This plans; it does not run. Executing the plan is ./driver.ts's job.
|
|
34
|
+
*/
|
|
35
|
+
import { type DriverComponent } from "./driver.js";
|
|
36
|
+
/** Thrown when `changed` or `indeterminate` names a component the project does not have. */
|
|
37
|
+
export declare class UnknownComponentError extends Error {
|
|
38
|
+
readonly field: "changed" | "indeterminate";
|
|
39
|
+
readonly component: string;
|
|
40
|
+
constructor(field: "changed" | "indeterminate", component: string, known: string[]);
|
|
41
|
+
}
|
|
42
|
+
/** Why a component is in the plan but not running. */
|
|
43
|
+
export type FanOutSkipReason =
|
|
44
|
+
/** Nothing it depends on moved, and it did not move itself. */
|
|
45
|
+
"unaffected"
|
|
46
|
+
/** Its inputs arrive at deploy time, so a source diff cannot judge it. */
|
|
47
|
+
| "indeterminate"
|
|
48
|
+
/** It already applied in an earlier attempt at this same fan-out. */
|
|
49
|
+
| "already-applied"
|
|
50
|
+
/** Something it depends on failed, so the value it would read never landed. */
|
|
51
|
+
| "blocked";
|
|
52
|
+
export interface FanOutSkip {
|
|
53
|
+
component: string;
|
|
54
|
+
reason: FanOutSkipReason;
|
|
55
|
+
/** For `blocked`, the failed component the walk reached this one from. */
|
|
56
|
+
blockedBy?: string;
|
|
57
|
+
}
|
|
58
|
+
export interface FanOutRequest {
|
|
59
|
+
/** Every component in the project, `dependsOn` intact. The full graph is what makes a subset orderable. */
|
|
60
|
+
components: DriverComponent[];
|
|
61
|
+
/** Components whose own inputs moved. The walk starts here. */
|
|
62
|
+
changed: string[];
|
|
63
|
+
/**
|
|
64
|
+
* Components a source diff cannot judge (`../lifecycle/affected.ts`'s third
|
|
65
|
+
* category). One that the walk reaches anyway is selected like any other
|
|
66
|
+
* dependent — reachability is a fact about the graph, not about whether the
|
|
67
|
+
* component's own inputs could be read. One the walk does not reach is
|
|
68
|
+
* reported, never decided.
|
|
69
|
+
*/
|
|
70
|
+
indeterminate?: string[];
|
|
71
|
+
/**
|
|
72
|
+
* Per-component input identity, when the caller has it. Folded into
|
|
73
|
+
* {@link FanOutPlan.digest} so an approval is bound to *what* would be
|
|
74
|
+
* applied and not only to who would run. Absent, the digest still identifies
|
|
75
|
+
* the derivation — the selection, the order and the edges it came from.
|
|
76
|
+
*/
|
|
77
|
+
inputDigests?: Record<string, string>;
|
|
78
|
+
}
|
|
79
|
+
export interface FanOutPlan {
|
|
80
|
+
/** The components to run, every dependency before its dependents. */
|
|
81
|
+
order: string[];
|
|
82
|
+
/**
|
|
83
|
+
* Parallel-safe waves over the selected set. A dependency that is not
|
|
84
|
+
* selected is already satisfied — its outputs are seeded — so it does not
|
|
85
|
+
* hold its dependents back a wave.
|
|
86
|
+
*/
|
|
87
|
+
waves: string[][];
|
|
88
|
+
/** Components deliberately not running, with why. Sorted by name. */
|
|
89
|
+
skipped: FanOutSkip[];
|
|
90
|
+
/**
|
|
91
|
+
* Dependencies of selected components that are not themselves selected.
|
|
92
|
+
* Their outputs have to be seeded for a reference to resolve, which is the
|
|
93
|
+
* price of running a subset rather than the whole graph.
|
|
94
|
+
*/
|
|
95
|
+
seeds: string[];
|
|
96
|
+
/** Components a source diff could not judge and the walk did not reach. Reported, never decided. */
|
|
97
|
+
indeterminate: string[];
|
|
98
|
+
/** Identity of this derivation, for binding one approval to the whole fan-out (#2300's pattern). */
|
|
99
|
+
digest: string;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Derive the fan-out for a change.
|
|
103
|
+
*
|
|
104
|
+
* Refuses a cycle and an unknown `dependsOn` before selecting anything, by
|
|
105
|
+
* resolving the **full** graph first — a broken graph is a broken graph whether
|
|
106
|
+
* or not the change happens to touch the broken part, and finding out halfway
|
|
107
|
+
* through a fan-out is worse than finding out before it starts.
|
|
108
|
+
*/
|
|
109
|
+
export declare function planFanOut(request: FanOutRequest): FanOutPlan;
|
|
110
|
+
/**
|
|
111
|
+
* `../lifecycle/affected.ts`'s answer, which is about **stacks**.
|
|
112
|
+
*
|
|
113
|
+
* `AffectedResult` itself is not imported: this takes the two fields the join
|
|
114
|
+
* needs, so a caller can also hand in a signal that did not come from a git
|
|
115
|
+
* diff (a CI system's own changed-paths answer, an operator naming a stack by
|
|
116
|
+
* hand) without manufacturing the rest of that shape.
|
|
117
|
+
*/
|
|
118
|
+
export interface ChangedUnits {
|
|
119
|
+
/** Stacks whose built artifact moved between base and head. */
|
|
120
|
+
changed: string[];
|
|
121
|
+
/** Stacks a source diff could not judge, because their inputs arrive at deploy time. */
|
|
122
|
+
indeterminate?: string[];
|
|
123
|
+
}
|
|
124
|
+
/** What {@link componentsForUnits} resolved, ready to hand to {@link planFanOut}. */
|
|
125
|
+
export interface ComponentChangeSignal {
|
|
126
|
+
/** Components deploying at least one changed unit. */
|
|
127
|
+
changed: string[];
|
|
128
|
+
/** Components deploying no changed unit but at least one indeterminate one. */
|
|
129
|
+
indeterminate: string[];
|
|
130
|
+
/**
|
|
131
|
+
* Changed or indeterminate units no component claims. Reported rather than
|
|
132
|
+
* dropped: a stack that moved and belongs to nothing this project deploys is
|
|
133
|
+
* a hole in the fan-out's coverage, and a silent one is the failure mode
|
|
134
|
+
* this whole feature exists to avoid.
|
|
135
|
+
*/
|
|
136
|
+
unclaimed: string[];
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Join a stack-level change signal to the components that deploy those stacks.
|
|
140
|
+
*
|
|
141
|
+
* The key is `deployUnits` (./deploy-units.ts), which already answers "what
|
|
142
|
+
* live units does this component's composition target" for `chant components
|
|
143
|
+
* status --live`. Reusing it means a component's claim on a stack is stated
|
|
144
|
+
* once, by its deploy steps, rather than restated in a fan-out config — the
|
|
145
|
+
* same argument this module's doc makes about `dependsOn`.
|
|
146
|
+
*
|
|
147
|
+
* Changed beats indeterminate. A component deploying one stack that certainly
|
|
148
|
+
* moved and another that could not be judged is changed: the certainty already
|
|
149
|
+
* decides it, and reporting it as indeterminate would lose that.
|
|
150
|
+
*/
|
|
151
|
+
export declare function componentsForUnits(components: DriverComponent[], units: ChangedUnits): ComponentChangeSignal;
|
|
152
|
+
/**
|
|
153
|
+
* Components inside `within` that are transitively downstream of any of
|
|
154
|
+
* `roots`, each mapped to the **root** it was reached from rather than to its
|
|
155
|
+
* immediate parent — so a report names the one thing to fix instead of the
|
|
156
|
+
* nearest consequence of it.
|
|
157
|
+
*
|
|
158
|
+
* `roots` is sorted before the walk, so a component downstream of two separate
|
|
159
|
+
* roots always names the same one. Unsorted, the answer would depend on the
|
|
160
|
+
* order the caller listed them in, which is not a fact about anything.
|
|
161
|
+
*
|
|
162
|
+
* Shared by {@link remainingFanOut}, which needs it over a whole plan, and by
|
|
163
|
+
* the runner in ./fan-out-run.ts, which needs it as failures accumulate.
|
|
164
|
+
*/
|
|
165
|
+
export declare function downstreamWithin(components: DriverComponent[], within: Iterable<string>, roots: readonly string[]): Map<string, string>;
|
|
166
|
+
export interface FanOutProgress {
|
|
167
|
+
/** Components that reached `ok` in an earlier attempt at this same plan. */
|
|
168
|
+
completed?: string[];
|
|
169
|
+
/** Components that failed. Everything downstream of one is blocked, not failed. */
|
|
170
|
+
failed?: string[];
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Narrow a plan to what still has to run.
|
|
174
|
+
*
|
|
175
|
+
* **The digest does not change.** That is the whole point: an operator approved
|
|
176
|
+
* a fan-out, a component in the middle of it failed, and finishing the work
|
|
177
|
+
* they already approved must not ask them to approve it again. `remainingFanOut`
|
|
178
|
+
* returns the same `digest` the original derivation produced, so the standing
|
|
179
|
+
* resolution still satisfies the gate on the next attempt. Re-deriving with
|
|
180
|
+
* {@link planFanOut} would mint a new identity and invalidate the approval,
|
|
181
|
+
* which is why resume narrows a plan rather than recomputing one.
|
|
182
|
+
*
|
|
183
|
+
* **A component beneath a failure is `blocked`, never `failed`.** Nothing about
|
|
184
|
+
* it failed. It did not run because the value it would have read never landed,
|
|
185
|
+
* and the distinction is what makes the next attempt legible: an operator
|
|
186
|
+
* reading `blocked by "cluster-a"` knows to fix one thing, not fourteen.
|
|
187
|
+
*
|
|
188
|
+
* **Independent branches keep going.** The order was derived from the source,
|
|
189
|
+
* so a branch that shares no edge with the failure is *known* to be independent
|
|
190
|
+
* rather than assumed to be. Stopping it is the conservative-looking choice
|
|
191
|
+
* that throws away the reason for deriving the graph in the first place.
|
|
192
|
+
*/
|
|
193
|
+
export declare function remainingFanOut(plan: FanOutPlan, components: DriverComponent[], progress: FanOutProgress): FanOutPlan;
|
|
194
|
+
//# sourceMappingURL=fan-out.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fan-out.d.ts","sourceRoot":"","sources":["../../src/components/fan-out.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,EAAyB,KAAK,eAAe,EAAE,MAAM,UAAU,CAAC;AAIvE,4FAA4F;AAC5F,qBAAa,qBAAsB,SAAQ,KAAK;IAE5C,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,eAAe;IAC3C,QAAQ,CAAC,SAAS,EAAE,MAAM;gBADjB,KAAK,EAAE,SAAS,GAAG,eAAe,EAClC,SAAS,EAAE,MAAM,EAC1B,KAAK,EAAE,MAAM,EAAE;CAQlB;AAED,sDAAsD;AACtD,MAAM,MAAM,gBAAgB;AAC1B,+DAA+D;AAC7D,YAAY;AACd,0EAA0E;GACxE,eAAe;AACjB,qEAAqE;GACnE,iBAAiB;AACnB,+EAA+E;GAC7E,SAAS,CAAC;AAEd,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,gBAAgB,CAAC;IACzB,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,2GAA2G;IAC3G,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,+DAA+D;IAC/D,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,UAAU;IACzB,qEAAqE;IACrE,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB;;;;OAIG;IACH,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC;IAClB,qEAAqE;IACrE,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB;;;;OAIG;IACH,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,oGAAoG;IACpG,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,oGAAoG;IACpG,MAAM,EAAE,MAAM,CAAC;CAChB;AAeD;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,aAAa,GAAG,UAAU,CAkF7D;AAID;;;;;;;GAOG;AACH,MAAM,WAAW,YAAY;IAC3B,+DAA+D;IAC/D,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,wFAAwF;IACxF,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,qFAAqF;AACrF,MAAM,WAAW,qBAAqB;IACpC,sDAAsD;IACtD,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,+EAA+E;IAC/E,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB;;;;;OAKG;IACH,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,eAAe,EAAE,EAC7B,KAAK,EAAE,YAAY,GAClB,qBAAqB,CAiCvB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,eAAe,EAAE,EAC7B,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,EACxB,KAAK,EAAE,SAAS,MAAM,EAAE,GACvB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAgBrB;AAID,MAAM,WAAW,cAAc;IAC7B,4EAA4E;IAC5E,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,mFAAmF;IACnF,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,UAAU,EAChB,UAAU,EAAE,eAAe,EAAE,EAC7B,QAAQ,EAAE,cAAc,GACvB,UAAU,CA8CZ"}
|
|
@@ -17,5 +17,9 @@ export { starterCapabilityPlugin } from "./starter-plugin.js";
|
|
|
17
17
|
export * from "./verbs/index.js";
|
|
18
18
|
export * from "./builders.js";
|
|
19
19
|
export { type DriverStep, type DriverGate, type DriverPhase, type DriverComponent, type DriverStepRecord, type DriverComponentResult, type DriverRunResult, type ComponentGraph, type InterpretRunOptions, type WiringValue, resolveComponentGraph, resolveWiring, resolveStepInput, collectComponentOutputs, accumulateComponentOutputs, runComponentDeploy, runInterpretDriver, type GateContext, DependencyCycleError, UnknownDependencyError, DriverRunFailure, } from "./driver.js";
|
|
20
|
+
export { type FanOutRequest, type FanOutPlan, type FanOutSkip, type FanOutSkipReason, type ChangedUnits, type ComponentChangeSignal, type FanOutProgress, planFanOut, componentsForUnits, remainingFanOut, downstreamWithin, UnknownComponentError, } from "./fan-out.js";
|
|
21
|
+
export { type FanOutGate, type FanOutRunOptions, type FanOutRunResult, runFanOut, } from "./fan-out-run.js";
|
|
22
|
+
export { type FanOutGateRef, type FanOutRenderOptions, renderFanOutPlan, renderFanOutHuman, renderFanOutJson, } from "./fan-out-output.js";
|
|
23
|
+
export { type DeriveFanOutOptions, type DerivedFanOut, deriveFanOut, fanOutRegistry, } from "./fan-out-support.js";
|
|
20
24
|
export { EcsFargateComponent, type EcsFargateComponentConfig, LambdaComponent, type LambdaComponentConfig, SingleHostComposeComponent, type SingleHostComposeComponentConfig, } from "./presets/index.js";
|
|
21
25
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,KAAK,SAAS,EACd,KAAK,MAAM,EACX,KAAK,oBAAoB,EACzB,KAAK,SAAS,EACd,KAAK,IAAI,EACT,KAAK,IAAI,EACT,KAAK,KAAK,EACV,KAAK,SAAS,EACd,KAAK,EACL,IAAI,EACJ,WAAW,EACX,cAAc,EACd,aAAa,EACb,WAAW,GACZ,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC7B,kBAAkB,GACnB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC7B,cAAc,EACd,iBAAiB,EACjB,qBAAqB,EACrB,0BAA0B,EAC1B,aAAa,EACb,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACtE,OAAO,EACL,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,kBAAkB,EAClB,6BAA6B,GAC9B,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,wBAAwB,EACxB,KAAK,wBAAwB,EAC7B,0BAA0B,GAC3B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,EACzB,uBAAuB,EACvB,KAAK,8BAA8B,EACnC,8BAA8B,EAC9B,4BAA4B,GAC7B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,OAAO,EACL,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,WAAW,EAChB,qBAAqB,EACrB,aAAa,EACb,gBAAgB,EAChB,uBAAuB,EACvB,0BAA0B,EAC1B,kBAAkB,EAClB,kBAAkB,EAClB,KAAK,WAAW,EAChB,oBAAoB,EACpB,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,mBAAmB,EACnB,KAAK,yBAAyB,EAC9B,eAAe,EACf,KAAK,qBAAqB,EAC1B,0BAA0B,EAC1B,KAAK,gCAAgC,GACtC,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -486,6 +486,36 @@ export interface TaintPlan {
|
|
|
486
486
|
* reason in `discover()`, and {@link foldProject}'s verdicts.
|
|
487
487
|
*/
|
|
488
488
|
export declare function planFoldTaintWithEdges(files: readonly string[], wouldFold: ReadonlyMap<string, boolean>, liveSources?: ReadonlyMap<string, ReadonlySet<string>>): Promise<TaintPlan>;
|
|
489
|
+
/**
|
|
490
|
+
* The rest of the session a whole-build fold needs, mirroring the same fields
|
|
491
|
+
* on `DiscoveryOptions` (chant#2422).
|
|
492
|
+
*
|
|
493
|
+
* Without them {@link foldProject} answered a strictly harsher question than a
|
|
494
|
+
* real `chant build --fold` does. `lexiconPackages` was always empty, and per
|
|
495
|
+
* its own contract an empty set "disables lexicon-package resolution entirely
|
|
496
|
+
* rather than falling back to something more permissive", so no file that reads
|
|
497
|
+
* a lexicon data export as a value could fold through this entry. `buildParams`
|
|
498
|
+
* was always unset, so no file reading `params` could either. Both fold under a
|
|
499
|
+
* real build, and 21 corpus files flipped from `run` to `fold` at
|
|
500
|
+
* `chant-v0.70.1` once the list was supplied.
|
|
501
|
+
*
|
|
502
|
+
* `../build.ts` already threads all three into `../discovery/index.ts`; this is
|
|
503
|
+
* the same three reaching the same `createFoldSession` by the other route.
|
|
504
|
+
*/
|
|
505
|
+
export interface FoldProjectOptions {
|
|
506
|
+
/**
|
|
507
|
+
* Lexicon NAMES active for this build (`["aws", "k8s"]`), as
|
|
508
|
+
* `resolveProjectLexicons()` returns them. A caller building through core has
|
|
509
|
+
* to supply these itself, the same way `examples/differential-corpus.ts`
|
|
510
|
+
* reproduces the CLI's `options.plugins.map((p) => p.name)` step, or the fold
|
|
511
|
+
* is measured without the bare-specifier allowlist a real build gives it.
|
|
512
|
+
*/
|
|
513
|
+
readonly lexicons?: readonly string[];
|
|
514
|
+
/** Resolved build-time parameter values, so a file reading `params.<name>` folds. */
|
|
515
|
+
readonly buildParams?: Readonly<Record<string, BuildParamValue>>;
|
|
516
|
+
/** chant #1093: this build asked for the sandbox, so fold may not reach outside the trusted allowlist. */
|
|
517
|
+
readonly sandbox?: boolean;
|
|
518
|
+
}
|
|
489
519
|
/** One file's place in a whole-build fold, as {@link foldProject} reports it. */
|
|
490
520
|
export interface FoldProjectVerdict {
|
|
491
521
|
/** What the build does with this file. */
|
|
@@ -517,7 +547,12 @@ export interface FoldProjectVerdict {
|
|
|
517
547
|
* Same session, same memo, same taint walk as a real build — this is not a
|
|
518
548
|
* second implementation of the rules, it is the existing one with its
|
|
519
549
|
* intermediate results kept instead of consumed.
|
|
550
|
+
*
|
|
551
|
+
* `options` carries the rest of what a build's session holds (chant#2422).
|
|
552
|
+
* Omitting it answers a harsher question than a real build asks: with no
|
|
553
|
+
* lexicon list nothing reading a lexicon data export folds, and with no build
|
|
554
|
+
* parameters nothing reading `params` does. See {@link FoldProjectOptions}.
|
|
520
555
|
*/
|
|
521
|
-
export declare function foldProject(files: readonly string[], intrinsics?: readonly IntrinsicDef[]): Promise<Map<string, FoldProjectVerdict>>;
|
|
556
|
+
export declare function foldProject(files: readonly string[], intrinsics?: readonly IntrinsicDef[], options?: FoldProjectOptions): Promise<Map<string, FoldProjectVerdict>>;
|
|
522
557
|
export {};
|
|
523
558
|
//# sourceMappingURL=fold-import.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fold-import.d.ts","sourceRoot":"","sources":["../../src/discovery/fold-import.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"fold-import.d.ts","sourceRoot":"","sources":["../../src/discovery/fold-import.ts"],"names":[],"mappings":"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"}
|
package/dist/fold/subset.d.ts
CHANGED
|
@@ -145,7 +145,29 @@ import { type IntrinsicDef } from "../lexicon.js";
|
|
|
145
145
|
* folder would actually accept) — never the reverse. Making EVL
|
|
146
146
|
* flow-sensitive would mean re-implementing an evaluator inside a lint
|
|
147
147
|
* rule; out of scope here. See #1024.
|
|
148
|
+
*
|
|
149
|
+
* ## Which version of the specification this is
|
|
150
|
+
*
|
|
151
|
+
* A specification version names a set of rules and moves on its own schedule,
|
|
152
|
+
* separately from chant's releases (INTENTIUS/typescript-as-data#18). The
|
|
153
|
+
* version chant implements is {@link SPEC_VERSION}, and it is exported from
|
|
154
|
+
* `@intentius/chant`'s public entry so the specification's conformance suite
|
|
155
|
+
* can read it. A suite that finds no declaration reports the implementation as
|
|
156
|
+
* `undeclared` rather than assuming it is current, which is the right default
|
|
157
|
+
* and a useless answer to get from an implementation that does know.
|
|
158
|
+
*
|
|
159
|
+
* Raising it is part of adopting a new version of the rules, alongside the
|
|
160
|
+
* spec-first change process above: land the rule there, implement it here
|
|
161
|
+
* citing the identifier, then move this constant.
|
|
162
|
+
*/
|
|
163
|
+
/**
|
|
164
|
+
* The version of the TypeScript-as-Data specification chant implements
|
|
165
|
+
* (chant#2424).
|
|
166
|
+
*
|
|
167
|
+
* `spec/VERSION` in the specification repository carries the same string, and
|
|
168
|
+
* the conformance adapter reads this one to fill its `specVersion` field.
|
|
148
169
|
*/
|
|
170
|
+
export declare const SPEC_VERSION = "1.0";
|
|
149
171
|
/** The two EVL rule ids a shape violation can be attributed to. */
|
|
150
172
|
export type SubsetRuleId = "EVL001" | "EVL003";
|
|
151
173
|
/** A located, shape-level rejection: the offending node, the EVL rule id it maps to, and a message. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subset.d.ts","sourceRoot":"","sources":["../../src/fold/subset.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjC,OAAO,EAAiD,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAE9F
|
|
1
|
+
{"version":3,"file":"subset.d.ts","sourceRoot":"","sources":["../../src/fold/subset.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjC,OAAO,EAAiD,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAE9F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+JG;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,QAAQ,CAAC;AAElC,mEAAmE;AACnE,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE/C,uGAAuG;AACvG,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC;IACd,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB;AAMD,0FAA0F;AAC1F,eAAO,MAAM,0BAA0B,EAAE,WAAW,CAAC,EAAE,CAAC,UAAU,CAchE,CAAC;AAEH,oFAAoF;AACpF,eAAO,MAAM,yBAAyB,EAAE,WAAW,CAAC,EAAE,CAAC,UAAU,CAG/D,CAAC;AAEH,gHAAgH;AAChH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,EAAE,CAAC,YAAY,GACpB,IAAI,IAAI,EAAE,CAAC,UAAU,GAAG,EAAE,CAAC,aAAa,GAAG,EAAE,CAAC,cAAc,CAE9D;AAED,6GAA6G;AAC7G,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC,aAAa,GAAG,EAAE,CAAC,cAAc,CAErG;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,SAAS,SAAK,GAAG,MAAM,CAGnE;AAQD,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,GAAG,MAAM,CAEzE;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,GAAG,MAAM,CAE1E;AAED,eAAO,MAAM,iCAAiC,8BAA8B,CAAC;AAE7E,eAAO,MAAM,yBAAyB,sBAAsB,CAAC;AAE7D,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,GAAG,MAAM,CAEtE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,GAAG,MAAM,CAErE;AAED,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,MAAM,CAElE;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,EAAE,CAAC,wBAAwB,EACjC,UAAU,CAAC,EAAE,SAAS,YAAY,EAAE,GACnC,eAAe,GAAG,SAAS,CAc7B;AAWD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,UAAU,CAAC,EAAE,SAAS,YAAY,EAAE,GACnC,eAAe,GAAG,SAAS,CA6M7B"}
|
package/dist/index.d.ts
CHANGED
|
@@ -39,7 +39,8 @@ export * from "./graph-lens.js";
|
|
|
39
39
|
export * from "./detectLexicon.js";
|
|
40
40
|
export * from "./fold/fold.js";
|
|
41
41
|
export { findSubsetViolation, checkObjectMember, type SubsetViolation, type SubsetRuleId } from "./fold/subset.js";
|
|
42
|
-
export {
|
|
42
|
+
export { SPEC_VERSION } from "./fold/subset.js";
|
|
43
|
+
export { foldProject, planFoldTaintWithEdges, type FoldProjectOptions, type FoldProjectVerdict, type TaintPlan, type TaintEdgeKind, } from "./discovery/fold-import.js";
|
|
43
44
|
export * from "./lint/parser.js";
|
|
44
45
|
export * from "./lint/rule.js";
|
|
45
46
|
export * from "./lint/rules/index.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,QAAQ,CAAC;AACvB,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAK5B,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,KAAK,eAAe,EAAE,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,10 +31,36 @@ export declare function artifactMap(outputs: Map<string, string | {
|
|
|
31
31
|
}>): Map<string, string>;
|
|
32
32
|
/** Stacks (lexicons) that declare a deploy-time parameter — external input. */
|
|
33
33
|
export declare function externalInputStacks(entities: Map<string, Declarable>): string[];
|
|
34
|
+
/** One independently-deployed stack, as `ChantConfig.stacks` declares it. */
|
|
35
|
+
export interface StackSource {
|
|
36
|
+
/** The deployed stack name — what a component's deploy step names. */
|
|
37
|
+
name: string;
|
|
38
|
+
/** Source directory to build for this stack, relative to the project root. */
|
|
39
|
+
src: string;
|
|
40
|
+
}
|
|
34
41
|
export interface AffectedStacksOptions {
|
|
35
42
|
/** Project source directory to scope (the head/working-tree build root). */
|
|
36
43
|
projectPath: string;
|
|
37
44
|
serializers: Serializer[];
|
|
45
|
+
/**
|
|
46
|
+
* The project's independently-deployed stacks (`ChantConfig.stacks`). With
|
|
47
|
+
* them, each stack's own source is built and the answer names stacks; without
|
|
48
|
+
* them, one build of `projectPath` answers by lexicon partition, which is the
|
|
49
|
+
* only granularity a single-root project has.
|
|
50
|
+
*
|
|
51
|
+
* `dependents` is always empty in this mode, and that is not an omission: the
|
|
52
|
+
* build holds cross-*lexicon* edges, and the relation between two deployed
|
|
53
|
+
* stacks is stated by a component's `dependsOn` and `stackOutput`, which
|
|
54
|
+
* `chant components fan-out` walks for itself. Inventing stack edges from
|
|
55
|
+
* lexicon ones would be a guess dressed as a graph.
|
|
56
|
+
*
|
|
57
|
+
* Each `src` resolves against `projectPath`, so in this mode `projectPath`
|
|
58
|
+
* has to be the project root that `ChantConfig.stacks` is written relative
|
|
59
|
+
* to. A `sourceDir` that narrows the build root does not apply here: the
|
|
60
|
+
* stacks already say which source belongs to which of them, which is the
|
|
61
|
+
* narrowing, and applying both would look for `<sourceDir>/<stack.src>`.
|
|
62
|
+
*/
|
|
63
|
+
stacks?: readonly StackSource[];
|
|
38
64
|
/** Base git ref to diff against (built in a throwaway worktree). */
|
|
39
65
|
baseRef?: string;
|
|
40
66
|
/** Head git ref. Defaults to the working tree (built in place — no worktree). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"affected.d.ts","sourceRoot":"","sources":["../../src/lifecycle/affected.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"affected.d.ts","sourceRoot":"","sources":["../../src/lifecycle/affected.ts"],"names":[],"mappings":"AAoCA,OAAO,EAAS,KAAK,UAAU,EAAE,MAAM,UAAU,CAAC;AAElD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAIhD,MAAM,WAAW,cAAc;IAC7B,iEAAiE;IACjE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,8EAA8E;IAC9E,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,+EAA+E;IAC/E,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAID,2FAA2F;AAC3F,wBAAgB,aAAa,CAC3B,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EACzB,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GACxB,MAAM,EAAE,CAOV;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,UAAU,GAAG,MAAM,EAAE,CAkB9E;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EACzB,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EACzB,KAAK,EAAE,UAAU,EACjB,IAAI,GAAE;IAAE,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;CAAO,GACnE,cAAc,CAKhB;AAID,gFAAgF;AAChF,wBAAgB,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAInG;AAED,+EAA+E;AAC/E,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,MAAM,EAAE,CAQ/E;AA2BD,6EAA6E;AAC7E,MAAM,WAAW,WAAW;IAC1B,sEAAsE;IACtE,IAAI,EAAE,MAAM,CAAC;IACb,8EAA8E;IAC9E,GAAG,EAAE,MAAM,CAAC;CACb;AAyDD,MAAM,WAAW,qBAAqB;IACpC,4EAA4E;IAC5E,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B;;;;;;;;;;;;;;;;;OAiBG;IACH,MAAM,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;IAChC,oEAAoE;IACpE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iFAAiF;IACjF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,cAAc,CAAC,CA+CzF"}
|
|
@@ -33,11 +33,26 @@ export declare const lifecycleDiffContract: import("../index.js").ActivityContra
|
|
|
33
33
|
exitCode: number;
|
|
34
34
|
drifted: boolean;
|
|
35
35
|
}>;
|
|
36
|
+
/**
|
|
37
|
+
* The escape hatch (#2413). `returns` is what `shellCmd` captured and used to
|
|
38
|
+
* throw away: the trimmed stdout, the trimmed stderr, and the exit code —
|
|
39
|
+
* which only ever differs from `0` when the step named that code in `okExit`,
|
|
40
|
+
* since anything else still rejects.
|
|
41
|
+
*
|
|
42
|
+
* Running a command chant does not model in order to discard what it produced
|
|
43
|
+
* is the odd case, not the normal one, so the value a later step reads through
|
|
44
|
+
* `sh.out.stdout` is the point of the step rather than an extra.
|
|
45
|
+
*/
|
|
36
46
|
export declare const shellCmdContract: import("../index.js").ActivityContract<{
|
|
37
47
|
cmd: string;
|
|
38
48
|
env?: Record<string, string> | undefined;
|
|
39
49
|
cwd?: string | undefined;
|
|
40
|
-
|
|
50
|
+
okExit?: number[] | undefined;
|
|
51
|
+
}, {
|
|
52
|
+
stdout: string;
|
|
53
|
+
stderr: string;
|
|
54
|
+
exitCode: number;
|
|
55
|
+
}>;
|
|
41
56
|
export declare const httpCheckContract: import("../index.js").ActivityContract<{
|
|
42
57
|
url: string;
|
|
43
58
|
method?: string | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activity-contracts.d.ts","sourceRoot":"","sources":["../../../src/op/activities/activity-contracts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAKH,eAAO,MAAM,yBAAyB;;SAGrC,CAAC;AAEF,eAAO,MAAM,qBAAqB;;;;;;;EAIjC,CAAC;AAEF,eAAO,MAAM,gBAAgB
|
|
1
|
+
{"version":3,"file":"activity-contracts.d.ts","sourceRoot":"","sources":["../../../src/op/activities/activity-contracts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAKH,eAAO,MAAM,yBAAyB;;SAGrC,CAAC;AAEF,eAAO,MAAM,qBAAqB;;;;;;;EAIjC,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;EAS5B,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;;;;;;;EAgB7B,CAAC;AAEF,eAAO,MAAM,qBAAqB;;SAGjC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;EAUpC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;EAuBpC,CAAC"}
|
|
@@ -3,7 +3,7 @@ export type { ChantBuildArgs } from "./build.js";
|
|
|
3
3
|
export { waitForStack } from "./wait.js";
|
|
4
4
|
export type { WaitForStackArgs } from "./wait.js";
|
|
5
5
|
export { shellCmd } from "./shell.js";
|
|
6
|
-
export type { ShellCmdArgs } from "./shell.js";
|
|
6
|
+
export type { ShellCmdArgs, ShellCmdResult } from "./shell.js";
|
|
7
7
|
export { httpCheck, statusOk } from "./http-check.js";
|
|
8
8
|
export type { HttpCheckArgs, HttpFetch } from "./http-check.js";
|
|
9
9
|
export { lifecycleSnapshot, lifecycleDiff } from "./lifecycle.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/op/activities/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAQ9C,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,YAAY,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAK/C,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/op/activities/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,10 +4,39 @@ export interface ShellCmdArgs {
|
|
|
4
4
|
env?: Record<string, string>;
|
|
5
5
|
/** Working directory. Default: process.cwd(). */
|
|
6
6
|
cwd?: string;
|
|
7
|
+
/**
|
|
8
|
+
* Exit codes that count as success. Default `[0]`.
|
|
9
|
+
*
|
|
10
|
+
* Without this, `exitCode` in the result could only ever be `0` (#2413):
|
|
11
|
+
* every other code rejects, so nothing downstream can read it. Naming the
|
|
12
|
+
* codes a command uses to report a result — `diff`'s 1, `grep`'s 1,
|
|
13
|
+
* a migration tool's "nothing to do" — turns them into a value a later
|
|
14
|
+
* step can branch on instead of a failed Op.
|
|
15
|
+
*/
|
|
16
|
+
okExit?: number[];
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* What a shell step publishes to the steps after it (#2413).
|
|
20
|
+
*
|
|
21
|
+
* `stdout` and `stderr` are trimmed, because the value an author wants from
|
|
22
|
+
* `echo $(terraform output -raw host)` is the host, not the host plus a
|
|
23
|
+
* newline, and a trailing newline in an `env` value or a gate argument is a
|
|
24
|
+
* bug that is very hard to see.
|
|
25
|
+
*
|
|
26
|
+
* `stderr` is here as well as on the console. It was captured and dropped
|
|
27
|
+
* before, so a command that reports on stderr — every tool that prints
|
|
28
|
+
* progress there — had no route to a later step at all.
|
|
29
|
+
*/
|
|
30
|
+
export interface ShellCmdResult {
|
|
31
|
+
stdout: string;
|
|
32
|
+
stderr: string;
|
|
33
|
+
exitCode: number;
|
|
7
34
|
}
|
|
8
35
|
/**
|
|
9
36
|
* Run an arbitrary shell command.
|
|
10
|
-
*
|
|
37
|
+
*
|
|
38
|
+
* Runs under the `atMostOnce` profile by default (#2411): one attempt, since
|
|
39
|
+
* nothing here can know whether repeating the author's command is safe.
|
|
11
40
|
*/
|
|
12
|
-
export declare function shellCmd(args: ShellCmdArgs, signal?: AbortSignal): Promise<
|
|
41
|
+
export declare function shellCmd(args: ShellCmdArgs, signal?: AbortSignal): Promise<ShellCmdResult>;
|
|
13
42
|
//# sourceMappingURL=shell.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../../src/op/activities/shell.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,wCAAwC;IACxC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,iDAAiD;IACjD,GAAG,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../../src/op/activities/shell.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,wCAAwC;IACxC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,iDAAiD;IACjD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAgBD;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAWD;;;;;GAKG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,CA8BhG"}
|
|
@@ -44,7 +44,7 @@ import type { OpConfig } from "./types.js";
|
|
|
44
44
|
* {@link ACTIVITY_PROFILES} itself so the runtime list cannot drift from the
|
|
45
45
|
* table the type is derived from.
|
|
46
46
|
*/
|
|
47
|
-
export declare const KNOWN_ACTIVITY_PROFILES: ("fastIdempotent" | "longInfra" | "k8sWait" | "humanGate" | "argoSync" | "policyCheck")[];
|
|
47
|
+
export declare const KNOWN_ACTIVITY_PROFILES: ("fastIdempotent" | "longInfra" | "k8sWait" | "atMostOnce" | "humanGate" | "argoSync" | "policyCheck")[];
|
|
48
48
|
declare const CONTRACT_BRAND: unique symbol;
|
|
49
49
|
/**
|
|
50
50
|
* A registered activity's args/return schemas — the declaration that lets
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activity-contract.d.ts","sourceRoot":"","sources":["../../src/op/activity-contract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,QAAQ,EAAiD,MAAM,SAAS,CAAC;AAGvF;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,
|
|
1
|
+
{"version":3,"file":"activity-contract.d.ts","sourceRoot":"","sources":["../../src/op/activity-contract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,QAAQ,EAAiD,MAAM,SAAS,CAAC;AAGvF;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,0GAAyB,CAAC;AAE9D,QAAA,MAAM,cAAc,eAA0C,CAAC;AAE/D;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,gBAAgB,CAAC,IAAI,GAAG,OAAO,EAAE,MAAM,GAAG,OAAO;IAChE,QAAQ,CAAC,CAAC,cAAc,CAAC,EAAE,IAAI,CAAC;IAChC,iEAAiE;IACjE,IAAI,EAAE,MAAM,CAAC;IACb,gFAAgF;IAChF,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5B;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,oCAAoC;AACpC,wBAAgB,gBAAgB,CAAC,UAAU,SAAS,CAAC,CAAC,UAAU,EAAE,YAAY,SAAS,CAAC,CAAC,UAAU,GAAG,KAAK,EACzG,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,UAAU,EAChB,OAAO,CAAC,EAAE,YAAY,EACtB,IAAI,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GAC7B,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,YAAY,SAAS,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,CAQ5G;AAED,yEAAyE;AACzE,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,gBAAgB,CAE5E;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,GAAG,IAAI,CAIhH;AAID,MAAM,WAAW,qBAAqB;IACpC,4CAA4C;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,kDAAkD;IAClD,EAAE,EAAE,MAAM,CAAC;IACX,kDAAkD;IAClD,OAAO,EAAE,MAAM,CAAC;CACjB;AAmCD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAE9E;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,EAAE,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,GAAG,SAAS,CASxG;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEvF,wBAAgB,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,GAAG,mBAAmB,GAAG,SAAS,CAQrF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,WAAW,CAAC,EACvD,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,GAC/C,qBAAqB,EAAE,CAiDzB"}
|
|
@@ -73,6 +73,25 @@ export declare const ACTIVITY_PROFILES: {
|
|
|
73
73
|
readonly nonRetryableErrorTypes: ["ReadinessFailedError"];
|
|
74
74
|
};
|
|
75
75
|
};
|
|
76
|
+
/**
|
|
77
|
+
* A command chant did not write and cannot know is safe to repeat (#2411).
|
|
78
|
+
*
|
|
79
|
+
* `shellCmd` is the escape hatch: its whole purpose is to run something
|
|
80
|
+
* outside the model, so nothing here can judge whether a second attempt is
|
|
81
|
+
* harmless or a second deployment. Every other activity carrying a retrying
|
|
82
|
+
* profile is one chant authored and knows the shape of.
|
|
83
|
+
*
|
|
84
|
+
* Twenty minutes, because a shell step is as likely to be a long build as a
|
|
85
|
+
* quick script, and one attempt, because retrying is the claim that needs
|
|
86
|
+
* evidence. An author who knows their command is idempotent names
|
|
87
|
+
* `fastIdempotent` or `longInfra` and gets retries back.
|
|
88
|
+
*/
|
|
89
|
+
readonly atMostOnce: {
|
|
90
|
+
readonly timeout: "20m";
|
|
91
|
+
readonly retry: {
|
|
92
|
+
readonly maximumAttempts: 1;
|
|
93
|
+
};
|
|
94
|
+
};
|
|
76
95
|
/**
|
|
77
96
|
* Human-gate steps: waiting for an operator action (DNS delegation, approval).
|
|
78
97
|
* Very long timeout, single attempt — no retry on human-gate timeouts.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activity-profiles.d.ts","sourceRoot":"","sources":["../../src/op/activity-profiles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,MAAM,WAAW,eAAe;IAC9B,mFAAmF;IACnF,OAAO,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,KAAK,CAAC,EAAE;QACN,uDAAuD;QACvD,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,iEAAiE;QACjE,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,sEAAsE;QACtE,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,0CAA0C;QAC1C,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB;;;WAGG;QACH,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAC;KACnC,CAAC;CACH;AAED,uEAAuE;AACvE,eAAO,MAAM,iBAAiB;IAC5B;;;OAGG;;;;;;;;;IAMH;;;OAGG;;;;;;;;;IAMH;;;OAGG;;;;;;;;;;IAaH;;;OAGG;;;;;;;IAMH;;;;;OAKG;;;;;;;;;;;IAYH;;;;OAIG;;;;;;;CAK+C,CAAC;AAErD,yFAAyF;AACzF,MAAM,MAAM,mBAAmB,GAAG,MAAM,OAAO,iBAAiB,CAAC;AAEjE,kFAAkF;AAClF,eAAO,MAAM,sBAAsB,EAAqC,mBAAmB,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"activity-profiles.d.ts","sourceRoot":"","sources":["../../src/op/activity-profiles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,MAAM,WAAW,eAAe;IAC9B,mFAAmF;IACnF,OAAO,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,KAAK,CAAC,EAAE;QACN,uDAAuD;QACvD,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,iEAAiE;QACjE,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,sEAAsE;QACtE,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,0CAA0C;QAC1C,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB;;;WAGG;QACH,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAC;KACnC,CAAC;CACH;AAED,uEAAuE;AACvE,eAAO,MAAM,iBAAiB;IAC5B;;;OAGG;;;;;;;;;IAMH;;;OAGG;;;;;;;;;IAMH;;;OAGG;;;;;;;;;;IAaH;;;;;;;;;;;;OAYG;;;;;;;IAMH;;;OAGG;;;;;;;IAMH;;;;;OAKG;;;;;;;;;;;IAYH;;;;OAIG;;;;;;;CAK+C,CAAC;AAErD,yFAAyF;AACzF,MAAM,MAAM,mBAAmB,GAAG,MAAM,OAAO,iBAAiB,CAAC;AAEjE,kFAAkF;AAClF,eAAO,MAAM,sBAAsB,EAAqC,mBAAmB,EAAE,CAAC"}
|
package/dist/op/builders.d.ts
CHANGED
|
@@ -179,9 +179,27 @@ export declare const lifecycleSnapshot: (env: string, opts?: {
|
|
|
179
179
|
id?: string;
|
|
180
180
|
}) => NamedActivityStep;
|
|
181
181
|
/**
|
|
182
|
-
* Run an arbitrary shell command.
|
|
183
|
-
*
|
|
184
|
-
*
|
|
182
|
+
* Run an arbitrary shell command.
|
|
183
|
+
*
|
|
184
|
+
* Defaults to the `atMostOnce` profile: twenty minutes, one attempt (#2411).
|
|
185
|
+
* This is the one activity chant cannot know is idempotent, because its
|
|
186
|
+
* purpose is to run something chant does not model, so a failed command is
|
|
187
|
+
* not repeated unless the author says it may be. Name `fastIdempotent` or
|
|
188
|
+
* `longInfra` to get retries back for a command that is safe to repeat.
|
|
189
|
+
*
|
|
190
|
+
* Give the step an `id` and later steps can read what it produced —
|
|
191
|
+
* `sh.out.stdout`, `sh.out.stderr`, `sh.out.exitCode` (#2413) — and a value
|
|
192
|
+
* from an earlier step reaches the command through `env` (#2414):
|
|
193
|
+
*
|
|
194
|
+
* ```ts
|
|
195
|
+
* const host = shell("terraform output -raw host", { id: "host" });
|
|
196
|
+
* shell("./smoke.sh", { env: { HOST: host.out.stdout } });
|
|
197
|
+
* ```
|
|
198
|
+
*
|
|
199
|
+
* `cmd` stays a plain `string` and takes no references. A value spliced into
|
|
200
|
+
* a command line is a quoting decision chant would then be making on the
|
|
201
|
+
* author's behalf, and `env` carries the same value into the same command
|
|
202
|
+
* with the shell's own rules intact.
|
|
185
203
|
*/
|
|
186
204
|
export declare const shell: (cmd: string, opts?: WithStepRefs<Omit<ShellCmdArgs, "cmd">> & StepOpts) => NamedActivityStep;
|
|
187
205
|
/**
|