@intentius/chant-lexicon-helm 0.46.0 → 0.50.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/archive-render.d.ts +94 -0
- package/dist/archive-render.d.ts.map +1 -0
- package/dist/commands.d.ts +54 -0
- package/dist/commands.d.ts.map +1 -0
- package/dist/config.d.ts +135 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/deep-observe-hooks.d.ts +2 -0
- package/dist/deep-observe-hooks.d.ts.map +1 -0
- package/dist/deep-observe.d.ts +54 -0
- package/dist/deep-observe.d.ts.map +1 -0
- package/dist/describe-resources.d.ts +17 -0
- package/dist/describe-resources.d.ts.map +1 -0
- package/dist/index.d.ts +19 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/integrity.json +5 -3
- package/dist/lint/audit-catalog.d.ts.map +1 -1
- package/dist/lint/post-synth/index.d.ts.map +1 -1
- package/dist/lint/post-synth/whm503.d.ts +34 -0
- package/dist/lint/post-synth/whm503.d.ts.map +1 -0
- package/dist/lint/post-synth/whm504.d.ts +20 -0
- package/dist/lint/post-synth/whm504.d.ts.map +1 -0
- package/dist/manifest.json +25 -13
- package/dist/okf/index.md +2 -0
- package/dist/okf/rules/WHM503.md +15 -0
- package/dist/okf/rules/WHM504.md +11 -0
- package/dist/okf/types/Values.md +1 -0
- package/dist/op/activities/cluster-probe.d.ts +44 -0
- package/dist/op/activities/cluster-probe.d.ts.map +1 -0
- package/dist/op/activities/helm.d.ts +179 -5
- package/dist/op/activities/helm.d.ts.map +1 -1
- package/dist/op/activities/index.d.ts +4 -2
- package/dist/op/activities/index.d.ts.map +1 -1
- package/dist/op/builders.d.ts +47 -0
- package/dist/op/builders.d.ts.map +1 -0
- package/dist/pinnability/actions.d.ts +76 -0
- package/dist/pinnability/actions.d.ts.map +1 -0
- package/dist/pinnability/classify.d.ts +129 -0
- package/dist/pinnability/classify.d.ts.map +1 -0
- package/dist/pinnability/conditions.d.ts +109 -0
- package/dist/pinnability/conditions.d.ts.map +1 -0
- package/dist/pinnability/index.d.ts +17 -0
- package/dist/pinnability/index.d.ts.map +1 -0
- package/dist/pinnability/localize.d.ts +124 -0
- package/dist/pinnability/localize.d.ts.map +1 -0
- package/dist/pinnability/render-stream.d.ts +27 -0
- package/dist/pinnability/render-stream.d.ts.map +1 -0
- package/dist/pinnability/values.d.ts +69 -0
- package/dist/pinnability/values.d.ts.map +1 -0
- package/dist/plugin.d.ts.map +1 -1
- package/dist/release-observe.d.ts +109 -0
- package/dist/release-observe.d.ts.map +1 -0
- package/dist/render-diff.d.ts +192 -0
- package/dist/render-diff.d.ts.map +1 -0
- package/dist/render-digest.d.ts +135 -0
- package/dist/render-digest.d.ts.map +1 -0
- package/dist/render-store.d.ts +310 -0
- package/dist/render-store.d.ts.map +1 -0
- package/dist/render-wrapper.d.ts +140 -0
- package/dist/render-wrapper.d.ts.map +1 -0
- package/dist/render.d.ts +81 -0
- package/dist/render.d.ts.map +1 -1
- package/dist/rules/whm503.ts +101 -0
- package/dist/rules/whm504.ts +52 -0
- package/dist/skills/chant-helm.md +7 -0
- package/dist/values-probe.d.ts +177 -0
- package/dist/values-probe.d.ts.map +1 -0
- package/dist/wrapper-chart.d.ts +61 -0
- package/dist/wrapper-chart.d.ts.map +1 -0
- package/package.json +10 -4
- package/src/archive-render.test.ts +201 -0
- package/src/archive-render.ts +119 -0
- package/src/commands.test.ts +487 -0
- package/src/commands.ts +445 -0
- package/src/config.test.ts +130 -0
- package/src/config.ts +220 -0
- package/src/deep-observe-hooks.ts +20 -0
- package/src/deep-observe.test.ts +165 -0
- package/src/deep-observe.ts +121 -0
- package/src/describe-resources.test.ts +255 -0
- package/src/describe-resources.ts +198 -0
- package/src/index.ts +106 -2
- package/src/lifecycle-integration.test.ts +289 -0
- package/src/lint/audit-catalog.ts +2 -0
- package/src/lint/post-synth/index.ts +4 -0
- package/src/lint/post-synth/whm503.test.ts +134 -0
- package/src/lint/post-synth/whm503.ts +101 -0
- package/src/lint/post-synth/whm504.test.ts +105 -0
- package/src/lint/post-synth/whm504.ts +52 -0
- package/src/op/activities/cluster-probe.test.ts +66 -0
- package/src/op/activities/cluster-probe.ts +148 -0
- package/src/op/activities/helm.test.ts +824 -0
- package/src/op/activities/helm.ts +628 -5
- package/src/op/activities/index.ts +17 -2
- package/src/op/builders.test.ts +70 -0
- package/src/op/builders.ts +66 -0
- package/src/pinnability/actions.ts +263 -0
- package/src/pinnability/classify.ts +579 -0
- package/src/pinnability/conditions.ts +0 -0
- package/src/pinnability/index.ts +77 -0
- package/src/pinnability/localize.test.ts +234 -0
- package/src/pinnability/localize.ts +644 -0
- package/src/pinnability/pinnability.test.ts +560 -0
- package/src/pinnability/render-stream.ts +59 -0
- package/src/pinnability/values.ts +205 -0
- package/src/plugin.test.ts +3 -1
- package/src/plugin.ts +97 -12
- package/src/release-observe.ts +392 -0
- package/src/render-diff.test.ts +366 -0
- package/src/render-diff.ts +407 -0
- package/src/render-digest.test.ts +186 -0
- package/src/render-digest.ts +207 -0
- package/src/render-store.test.ts +412 -0
- package/src/render-store.ts +621 -0
- package/src/render-wrapper.test.ts +259 -0
- package/src/render-wrapper.ts +274 -0
- package/src/render.test.ts +383 -4
- package/src/render.ts +319 -8
- package/src/skills/chant-helm.md +7 -0
- package/src/values-probe.test.ts +400 -0
- package/src/values-probe.ts +627 -0
- package/src/wrapper-chart.test.ts +110 -0
- package/src/wrapper-chart.ts +124 -0
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tri-state evaluation of template pipeline conditions against supplied
|
|
3
|
+
* values (#1234, epic #1228).
|
|
4
|
+
*
|
|
5
|
+
* The classifier must decide whether a control-flow construct is REACHABLE
|
|
6
|
+
* under the values the render was given. That needs no template engine —
|
|
7
|
+
* only enough of Go template expression semantics to evaluate the gates
|
|
8
|
+
* charts actually write: `and` / `or` / `not` / `eq` / `ne` / `empty`,
|
|
9
|
+
* parenthesised sub-expressions, literals, and `.Values` paths.
|
|
10
|
+
*
|
|
11
|
+
* Everything else evaluates to UNKNOWN, and unknown always degrades toward
|
|
12
|
+
* refusal, never toward pinning: a gate we cannot prove closed is treated as
|
|
13
|
+
* open. The only way a control-flow `lookup` avoids refusal is a gate that
|
|
14
|
+
* DEFINITIVELY evaluates false against the supplied values.
|
|
15
|
+
*
|
|
16
|
+
* Values fidelity caveat: the evaluator sees chant's approximation of helm's
|
|
17
|
+
* value coalescing (parent-overrides-child, alias scoping, globals — see
|
|
18
|
+
* values.ts). The build-time values probe (#1251) replaces that
|
|
19
|
+
* approximation with helm's own coalescing; until then, exotic mechanisms
|
|
20
|
+
* (`import-values`, `tpl`-computed values) resolve as unknown or absent,
|
|
21
|
+
* both of which are safe directions for a gate.
|
|
22
|
+
*/
|
|
23
|
+
export declare const UNKNOWN: unique symbol;
|
|
24
|
+
export type Tri = boolean | typeof UNKNOWN;
|
|
25
|
+
/** Go template truthiness: false, zero, "", nil, empty collection are false. */
|
|
26
|
+
export declare function truthy(v: unknown): boolean;
|
|
27
|
+
/** The evaluation context: effective values plus dot binding. */
|
|
28
|
+
export interface EvalContext {
|
|
29
|
+
/** Effective values for the chart instance being evaluated. */
|
|
30
|
+
values: unknown;
|
|
31
|
+
/**
|
|
32
|
+
* Root-scope prefix of this instance ("grafana" for the grafana subchart of
|
|
33
|
+
* an umbrella), used to report gate paths in the PARENT's coordinates.
|
|
34
|
+
*/
|
|
35
|
+
scope: readonly string[];
|
|
36
|
+
/**
|
|
37
|
+
* When the dot is pinned to a `.Values` subtree by an enclosing `with`,
|
|
38
|
+
* that subtree's path; `null` when the dot is the root context;
|
|
39
|
+
* `undefined` when unresolvable.
|
|
40
|
+
*/
|
|
41
|
+
dotValuesPath: string[] | null | undefined;
|
|
42
|
+
}
|
|
43
|
+
/** A definitively-false conjunct and the values path responsible for it. */
|
|
44
|
+
export interface GatePath {
|
|
45
|
+
/** Values path in the ROOT chart's coordinates, e.g. "grafana.persistence.enabled". */
|
|
46
|
+
path: string;
|
|
47
|
+
/** The value the path currently holds (rendered for the hazard record). */
|
|
48
|
+
value: unknown;
|
|
49
|
+
}
|
|
50
|
+
export interface EvalResult {
|
|
51
|
+
value: Tri;
|
|
52
|
+
/** When `value` is false: the values path(s) that made it false. */
|
|
53
|
+
gates: GatePath[];
|
|
54
|
+
}
|
|
55
|
+
type Token = {
|
|
56
|
+
t: "lparen";
|
|
57
|
+
} | {
|
|
58
|
+
t: "rparen";
|
|
59
|
+
} | {
|
|
60
|
+
t: "pipe";
|
|
61
|
+
} | {
|
|
62
|
+
t: "str";
|
|
63
|
+
v: string;
|
|
64
|
+
} | {
|
|
65
|
+
t: "num";
|
|
66
|
+
v: number;
|
|
67
|
+
} | {
|
|
68
|
+
t: "word";
|
|
69
|
+
v: string;
|
|
70
|
+
};
|
|
71
|
+
export declare function tokenize(expr: string): Token[] | undefined;
|
|
72
|
+
export type ExprNode = {
|
|
73
|
+
type: "call";
|
|
74
|
+
op: string;
|
|
75
|
+
args: ExprNode[];
|
|
76
|
+
} | {
|
|
77
|
+
type: "atom";
|
|
78
|
+
token: Token;
|
|
79
|
+
} | {
|
|
80
|
+
type: "pipeline";
|
|
81
|
+
stages: ExprNode[];
|
|
82
|
+
};
|
|
83
|
+
/**
|
|
84
|
+
* Parse a pipeline expression into an AST. Returns undefined on anything the
|
|
85
|
+
* small grammar does not cover — which the evaluator then treats as UNKNOWN.
|
|
86
|
+
*/
|
|
87
|
+
export declare function parseExpr(expr: string): ExprNode | undefined;
|
|
88
|
+
/**
|
|
89
|
+
* Evaluate a condition expression to a tri-state truth value. When the
|
|
90
|
+
* result is definitively false, `gates` names the values path(s)
|
|
91
|
+
* responsible — the record a conditional hazard carries so that flipping
|
|
92
|
+
* the value later re-classifies the chart.
|
|
93
|
+
*/
|
|
94
|
+
export declare function evaluateCondition(expr: string, ctx: EvalContext): EvalResult;
|
|
95
|
+
/**
|
|
96
|
+
* Is a call to `fn` inside `expr` actually evaluated, given short-circuit
|
|
97
|
+
* `and` / `or`? Returns the gates that make it unreachable, or "reachable"
|
|
98
|
+
* when no definitive gate precedes the call.
|
|
99
|
+
*
|
|
100
|
+
* `and A (lookup ...)` with A false never calls lookup (Go templates
|
|
101
|
+
* short-circuit since 1.18, which every supported helm builds against);
|
|
102
|
+
* `or A (lookup ...)` with A true likewise skips it.
|
|
103
|
+
*/
|
|
104
|
+
export declare function callReachability(expr: string, fnRe: RegExp, ctx: EvalContext): {
|
|
105
|
+
reachable: Tri;
|
|
106
|
+
gates: GatePath[];
|
|
107
|
+
};
|
|
108
|
+
export {};
|
|
109
|
+
//# sourceMappingURL=conditions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conditions.d.ts","sourceRoot":"","sources":["../../src/pinnability/conditions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,eAAO,MAAM,OAAO,eAAoB,CAAC;AACzC,MAAM,MAAM,GAAG,GAAG,OAAO,GAAG,OAAO,OAAO,CAAC;AAE3C,gFAAgF;AAChF,wBAAgB,MAAM,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAM1C;AAED,iEAAiE;AACjE,MAAM,WAAW,WAAW;IAC1B,+DAA+D;IAC/D,MAAM,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB;;;;OAIG;IACH,aAAa,EAAE,MAAM,EAAE,GAAG,IAAI,GAAG,SAAS,CAAC;CAC5C;AAED,4EAA4E;AAC5E,MAAM,WAAW,QAAQ;IACvB,uFAAuF;IACvF,IAAI,EAAE,MAAM,CAAC;IACb,2EAA2E;IAC3E,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,GAAG,CAAC;IACX,oEAAoE;IACpE,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB;AAID,KAAK,KAAK,GACN;IAAE,CAAC,EAAE,QAAQ,CAAA;CAAE,GACf;IAAE,CAAC,EAAE,QAAQ,CAAA;CAAE,GACf;IAAE,CAAC,EAAE,MAAM,CAAA;CAAE,GACb;IAAE,CAAC,EAAE,KAAK,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,GACvB;IAAE,CAAC,EAAE,KAAK,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,GACvB;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7B,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,EAAE,GAAG,SAAS,CAiC1D;AAID,MAAM,MAAM,QAAQ,GAChB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,QAAQ,EAAE,CAAA;CAAE,GAC9C;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,QAAQ,EAAE,CAAA;CAAE,CAAC;AAE7C;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAO5D;AAuMD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,GAAG,UAAU,CAW5E;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,WAAW,GACf;IAAE,SAAS,EAAE,GAAG,CAAC;IAAC,KAAK,EAAE,QAAQ,EAAE,CAAA;CAAE,CA8CvC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pinnability gate for helm renders (#1234, epic #1228 Phase 1).
|
|
3
|
+
*
|
|
4
|
+
* `classifyChart` is the entry point the pinned-render pipeline
|
|
5
|
+
* (#1235–#1240) calls before anything is pinned; the survey harness
|
|
6
|
+
* (lexicons/helm/test/survey) asserts its verdicts over a corpus of real
|
|
7
|
+
* upstream charts. This module deliberately imports nothing from the
|
|
8
|
+
* lexicon's generated artifacts, so it loads on a fresh clone and in the
|
|
9
|
+
* survey CI job without a generation step.
|
|
10
|
+
*/
|
|
11
|
+
export { classifyChart, type PinnabilityVerdict, type PinnabilityReport, type ClassifyChartOptions, type CapabilityRequirement, type ClosedInput, type ConditionalHazard, type ControlFlowLookup, type ValuePositionLookup, type RenderEvidence, collectOwnTemplateFiles, } from "./classify.js";
|
|
12
|
+
export { actionPipeline, extractActions, scopeActions, type TemplateAction, type ActionKind, type ScopedAction, type ScopeFrame, } from "./actions.js";
|
|
13
|
+
export { UNKNOWN, truthy, evaluateCondition, callReachability, parseExpr, type Tri, type EvalContext, type EvalResult, type GatePath, } from "./conditions.js";
|
|
14
|
+
export { buildChartInstances, mergeValues, valueAtPath, readChartMeta, type ChartInstance, type ChartDependency, type ChartMeta, } from "./values.js";
|
|
15
|
+
export { splitDocuments, sourcePath, isCrdSource, routeBySource, countDifferingLines, type RoutedDocuments, } from "./render-stream.js";
|
|
16
|
+
export { localizeOpenInputs, diffRenderPair, type RenderFn, type PinStyle, type CandidatePin, type LocalizedOccurrence, type LocalizedInput, type LocalizationReport, type LocalizeOptions, } from "./localize.js";
|
|
17
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pinnability/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EACL,aAAa,EACb,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,uBAAuB,GACxB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,cAAc,EACd,cAAc,EACd,YAAY,EACZ,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,UAAU,GAChB,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,OAAO,EACP,MAAM,EACN,iBAAiB,EACjB,gBAAgB,EAChB,SAAS,EACT,KAAK,GAAG,EACR,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,QAAQ,GACd,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,mBAAmB,EACnB,WAAW,EACX,WAAW,EACX,aAAa,EACb,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,SAAS,GACf,MAAM,UAAU,CAAC;AAElB,OAAO,EACL,cAAc,EACd,UAAU,EACV,WAAW,EACX,aAAa,EACb,mBAAmB,EACnB,KAAK,eAAe,GACrB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,eAAe,GACrB,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Double-render localizer for open generated inputs (#1236, epic #1228
|
|
3
|
+
* Phase 1).
|
|
4
|
+
*
|
|
5
|
+
* The static classifier (#1234) NAMES generator sites; this module proves
|
|
6
|
+
* which of them actually fire and maps every unstable output line back to
|
|
7
|
+
* the input that produced it. The mechanism is the epic's own: pin the
|
|
8
|
+
* input, not the output. For each candidate values path that could close a
|
|
9
|
+
* generator, render the chart twice with that path pinned — the lines that
|
|
10
|
+
* stop differing are the lines that input produced, cascades included
|
|
11
|
+
* (finding 6: one `randAlphaNum` admin password differed as the secret line
|
|
12
|
+
* PLUS a `checksum/secret` annotation derived from it; hoisting the secret
|
|
13
|
+
* alone would have desynchronized the checksum and silently broken
|
|
14
|
+
* restart-on-change).
|
|
15
|
+
*
|
|
16
|
+
* Candidate pins come from three static sources, each validated dynamically
|
|
17
|
+
* before being suggested:
|
|
18
|
+
*
|
|
19
|
+
* 1. the generator's own action (`x | default (randAlphaNum 16)` — the
|
|
20
|
+
* classifier already names `x`),
|
|
21
|
+
* 2. enclosing control-flow gates (`if not .Values.core.existingSecret`
|
|
22
|
+
* around the generator: supplying the existing-secret slot closes it),
|
|
23
|
+
* 3. the include chain — a generator inside `define "grafana.password"`
|
|
24
|
+
* inherits the gates of every `include "grafana.password"` site, which
|
|
25
|
+
* is where grafana's `{{- if .Values.adminPassword }} ... {{- else }}`
|
|
26
|
+
* supply slot lives.
|
|
27
|
+
*
|
|
28
|
+
* A differing line no probe and no source mapping can explain is reported as
|
|
29
|
+
* UNLOCALIZED instability — never silently pinnable. A base double render
|
|
30
|
+
* with zero differing lines confirms the chart deterministic.
|
|
31
|
+
*/
|
|
32
|
+
import { type PinnabilityReport } from "./classify.js";
|
|
33
|
+
/** Renders the chart with the given values paths pinned to literal strings. */
|
|
34
|
+
export type RenderFn = (pins: Record<string, string>) => string;
|
|
35
|
+
export type PinStyle = "supply" | "existing-slot" | "gate";
|
|
36
|
+
export interface CandidatePin {
|
|
37
|
+
/** Root-scoped values path. */
|
|
38
|
+
path: string;
|
|
39
|
+
style: PinStyle;
|
|
40
|
+
}
|
|
41
|
+
/** One unstable output line, located in the rendered document set. */
|
|
42
|
+
export interface LocalizedOccurrence {
|
|
43
|
+
/** Source template of the rendered document (`# Source:` origin). */
|
|
44
|
+
doc: string;
|
|
45
|
+
/** `Kind/name` of the document, when parseable. */
|
|
46
|
+
docId: string;
|
|
47
|
+
/** YAML key of the differing line (`admin-password`, `checksum/secret`). */
|
|
48
|
+
key: string;
|
|
49
|
+
/** 1-based line within the document, from the first base render. */
|
|
50
|
+
line: number;
|
|
51
|
+
/**
|
|
52
|
+
* The line lives in a different template than the generator — a derived
|
|
53
|
+
* field (checksum annotation, re-included secret) grouped under its root
|
|
54
|
+
* input rather than reported as independent instability.
|
|
55
|
+
*/
|
|
56
|
+
derived: boolean;
|
|
57
|
+
}
|
|
58
|
+
/** One open generated input with the unstable lines localized to it. */
|
|
59
|
+
export interface LocalizedInput {
|
|
60
|
+
fn: string;
|
|
61
|
+
/** Template file and line of the generator (classifier coordinates). */
|
|
62
|
+
file: string;
|
|
63
|
+
line: number;
|
|
64
|
+
/** The values path a supply-style pin uses, when one validated. */
|
|
65
|
+
valuesPath?: string;
|
|
66
|
+
/** A validated pin exists — supplying a value closes this input. */
|
|
67
|
+
suppliable: boolean;
|
|
68
|
+
/**
|
|
69
|
+
* The concrete values entry a user adds to close the input, e.g.
|
|
70
|
+
* `adminPassword: <generate once and supply>`. Absent when no candidate
|
|
71
|
+
* pin validated (the input is real but not closable via values).
|
|
72
|
+
*/
|
|
73
|
+
suggestedPin?: string;
|
|
74
|
+
/** Chart-provided slots that also close it (`admin.existingSecret`). */
|
|
75
|
+
existingSlots: string[];
|
|
76
|
+
occurrences: LocalizedOccurrence[];
|
|
77
|
+
}
|
|
78
|
+
export interface LocalizationReport {
|
|
79
|
+
/** The base double render differed on zero lines. */
|
|
80
|
+
deterministic: boolean;
|
|
81
|
+
/** Differing line count of the base double render (per-render lines). */
|
|
82
|
+
differingLines: number;
|
|
83
|
+
inputs: LocalizedInput[];
|
|
84
|
+
/** Differing lines no probe and no source mapping explains. */
|
|
85
|
+
unlocalized: LocalizedOccurrence[];
|
|
86
|
+
/**
|
|
87
|
+
* Pinning every validated pin at once yields a stable render. Present
|
|
88
|
+
* only when at least one pin validated.
|
|
89
|
+
*/
|
|
90
|
+
stableWithAllPins?: boolean;
|
|
91
|
+
/** How many `helm template` invocations the localization used. */
|
|
92
|
+
renders: number;
|
|
93
|
+
}
|
|
94
|
+
export interface LocalizeOptions {
|
|
95
|
+
render: RenderFn;
|
|
96
|
+
/** Values overrides, as `helm template --values` would merge them. */
|
|
97
|
+
values?: unknown;
|
|
98
|
+
/** Values files merged (in order) over the chart defaults. */
|
|
99
|
+
valuesFiles?: string[];
|
|
100
|
+
/** Probe budget per generator site (default 6). */
|
|
101
|
+
maxProbesPerInput?: number;
|
|
102
|
+
}
|
|
103
|
+
interface DiffOccurrence {
|
|
104
|
+
ident: string;
|
|
105
|
+
doc: string;
|
|
106
|
+
docId: string;
|
|
107
|
+
key: string;
|
|
108
|
+
line: number;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Diff two renders of the SAME inputs into a set of differing-line
|
|
112
|
+
* occurrences with identities stable across separate probe runs: documents
|
|
113
|
+
* pair by (`# Source:` origin, ordinal), lines identify by their YAML key
|
|
114
|
+
* plus ordinal rather than raw content — the content is exactly what varies.
|
|
115
|
+
*/
|
|
116
|
+
export declare function diffRenderPair(a: string, b: string): Map<string, DiffOccurrence>;
|
|
117
|
+
/**
|
|
118
|
+
* Localize the open generated inputs of a chart: double-render, and map
|
|
119
|
+
* every differing line back to the input that produced it by pinning
|
|
120
|
+
* candidate inputs one at a time. See the module doc for the mechanism.
|
|
121
|
+
*/
|
|
122
|
+
export declare function localizeOpenInputs(chartDir: string, report: PinnabilityReport, options: LocalizeOptions): LocalizationReport;
|
|
123
|
+
export {};
|
|
124
|
+
//# sourceMappingURL=localize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"localize.d.ts","sourceRoot":"","sources":["../../src/pinnability/localize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AASH,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,YAAY,CAAC;AAWpB,+EAA+E;AAC/E,MAAM,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,MAAM,CAAC;AAEhE,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,eAAe,GAAG,MAAM,CAAC;AAE3D,MAAM,WAAW,YAAY;IAC3B,+BAA+B;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,QAAQ,CAAC;CACjB;AAED,sEAAsE;AACtE,MAAM,WAAW,mBAAmB;IAClC,qEAAqE;IACrE,GAAG,EAAE,MAAM,CAAC;IACZ,mDAAmD;IACnD,KAAK,EAAE,MAAM,CAAC;IACd,4EAA4E;IAC5E,GAAG,EAAE,MAAM,CAAC;IACZ,oEAAoE;IACpE,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wEAAwE;AACxE,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,mEAAmE;IACnE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oEAAoE;IACpE,UAAU,EAAE,OAAO,CAAC;IACpB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wEAAwE;IACxE,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,EAAE,mBAAmB,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,kBAAkB;IACjC,qDAAqD;IACrD,aAAa,EAAE,OAAO,CAAC;IACvB,yEAAyE;IACzE,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,+DAA+D;IAC/D,WAAW,EAAE,mBAAmB,EAAE,CAAC;IACnC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,kEAAkE;IAClE,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,QAAQ,CAAC;IACjB,sEAAsE;IACtE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,8DAA8D;IAC9D,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,mDAAmD;IACnD,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAMD,UAAU,cAAc;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd;AAmCD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CA4ChF;AA0ND;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,eAAe,GACvB,kBAAkB,CA8LpB"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Helpers over a `helm template` output stream (#1234, epic #1228).
|
|
3
|
+
*
|
|
4
|
+
* The CRD routing rule here is what the structure-preserving wrapper
|
|
5
|
+
* (#1239) builds on, and the line diff seeds the double-render localizer
|
|
6
|
+
* (#1236). Both were proven in the survey harness before promotion.
|
|
7
|
+
*/
|
|
8
|
+
/** Split a `helm template` stream into non-empty documents. */
|
|
9
|
+
export declare function splitDocuments(rendered: string): string[];
|
|
10
|
+
/** The `# Source: <chart>/<path>` origin of a rendered document, if any. */
|
|
11
|
+
export declare function sourcePath(doc: string): string | undefined;
|
|
12
|
+
/**
|
|
13
|
+
* Finding 10: segment matching, not prefix matching. A subchart's CRDs
|
|
14
|
+
* arrive as `charts/<child>/crds/<file>`; `startsWith("crds/")` catches
|
|
15
|
+
* 0 of them and would route every one into templates/, making it deletable
|
|
16
|
+
* on uninstall.
|
|
17
|
+
*/
|
|
18
|
+
export declare function isCrdSource(path: string): boolean;
|
|
19
|
+
export interface RoutedDocuments {
|
|
20
|
+
crds: string[];
|
|
21
|
+
templates: string[];
|
|
22
|
+
}
|
|
23
|
+
/** Route rendered documents by origin: `crds/`-segment sources vs the rest. */
|
|
24
|
+
export declare function routeBySource(rendered: string): RoutedDocuments;
|
|
25
|
+
/** Count lines that differ between two renders (symmetric, order-blind). */
|
|
26
|
+
export declare function countDifferingLines(a: string, b: string): number;
|
|
27
|
+
//# sourceMappingURL=render-stream.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render-stream.d.ts","sourceRoot":"","sources":["../../src/pinnability/render-stream.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,+DAA+D;AAC/D,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAKzD;AAED,4EAA4E;AAC5E,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAG1D;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEjD;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,+EAA+E;AAC/E,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,CAO/D;AAED,4EAA4E;AAC5E,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAUhE"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Chart model and value coalescing for the pinnability classifier (#1234,
|
|
3
|
+
* epic #1228).
|
|
4
|
+
*
|
|
5
|
+
* Pinnability is a property of `(chart, values)`, not of the chart alone —
|
|
6
|
+
* so the classifier needs each subchart instance's EFFECTIVE values to ask
|
|
7
|
+
* whether a gate is open. This module walks `Chart.yaml` dependencies
|
|
8
|
+
* (aliases and `condition:` included — finding 12: dependency conditions are
|
|
9
|
+
* values-driven and therefore closed inputs) and approximates helm's
|
|
10
|
+
* coalescing: child defaults, overridden by the parent's `<alias-or-name>`
|
|
11
|
+
* subtree, with `global` propagated down.
|
|
12
|
+
*
|
|
13
|
+
* The approximation is deliberate and bounded. `import-values`, `tags`, and
|
|
14
|
+
* `tpl`-computed values are not modeled; a gate they would decide resolves
|
|
15
|
+
* as UNKNOWN and the classifier refuses rather than pins (see
|
|
16
|
+
* conditions.ts). The build-time values probe (#1251) replaces this with
|
|
17
|
+
* helm's own coalescing.
|
|
18
|
+
*/
|
|
19
|
+
export interface ChartDependency {
|
|
20
|
+
name: string;
|
|
21
|
+
alias?: string;
|
|
22
|
+
/** Comma-separated values paths, evaluated against the ROOT values. */
|
|
23
|
+
condition?: string;
|
|
24
|
+
}
|
|
25
|
+
export interface ChartMeta {
|
|
26
|
+
name: string;
|
|
27
|
+
dependencies: ChartDependency[];
|
|
28
|
+
}
|
|
29
|
+
export declare function readChartMeta(chartDir: string): ChartMeta;
|
|
30
|
+
export declare function readYamlFile(path: string): unknown;
|
|
31
|
+
/**
|
|
32
|
+
* Helm-style deep merge: `override` wins, maps merge recursively, a `null`
|
|
33
|
+
* override deletes the key, arrays replace wholesale.
|
|
34
|
+
*/
|
|
35
|
+
export declare function mergeValues(base: unknown, override: unknown): unknown;
|
|
36
|
+
/** Resolve a dot path against a values tree; undefined when absent. */
|
|
37
|
+
export declare function valueAtPath(values: unknown, path: string[]): unknown;
|
|
38
|
+
/**
|
|
39
|
+
* One chart in the tree, with the values IT sees. An aliased dependency
|
|
40
|
+
* yields two instances over the same directory — each with its own value
|
|
41
|
+
* scope, which is why findings are evaluated per instance but reported per
|
|
42
|
+
* file.
|
|
43
|
+
*/
|
|
44
|
+
export interface ChartInstance {
|
|
45
|
+
/** Directory of the (sub)chart. */
|
|
46
|
+
dir: string;
|
|
47
|
+
/** Directory relative to the root chart ("" for the root). */
|
|
48
|
+
relDir: string;
|
|
49
|
+
/** Values scope from the root, e.g. ["grafana"] or ["kidtwo"]; [] for root. */
|
|
50
|
+
scope: readonly string[];
|
|
51
|
+
/** Effective values as this instance sees them. */
|
|
52
|
+
values: unknown;
|
|
53
|
+
/**
|
|
54
|
+
* When a `condition:` on the dependency chain disables this instance under
|
|
55
|
+
* the supplied values: the first condition path that resolved false, in
|
|
56
|
+
* root coordinates. Constructs inside a disabled instance are gated by it.
|
|
57
|
+
*/
|
|
58
|
+
disabledBy?: string;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Build the instance tree for a chart directory and the values the render
|
|
62
|
+
* was given. `suppliedValues` merges over the root chart's `values.yaml`
|
|
63
|
+
* exactly like `helm template --values`.
|
|
64
|
+
*/
|
|
65
|
+
export declare function buildChartInstances(chartDir: string, suppliedValues?: unknown): {
|
|
66
|
+
instances: ChartInstance[];
|
|
67
|
+
warnings: string[];
|
|
68
|
+
};
|
|
69
|
+
//# sourceMappingURL=values.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"values.d.ts","sourceRoot":"","sources":["../../src/pinnability/values.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAMH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uEAAuE;IACvE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,eAAe,EAAE,CAAC;CACjC;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAqBzD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGlD;AAMD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAYrE;AAED,uEAAuE;AACvE,wBAAgB,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAOpE;AAED;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,mCAAmC;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,8DAA8D;IAC9D,MAAM,EAAE,MAAM,CAAC;IACf,+EAA+E;IAC/E,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,mDAAmD;IACnD,MAAM,EAAE,OAAO,CAAC;IAChB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,cAAc,CAAC,EAAE,OAAO,GACvB;IAAE,SAAS,EAAE,aAAa,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CA8EpD"}
|
package/dist/plugin.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAiC,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAiC,MAAM,0BAA0B,CAAC;AAiB7F,eAAO,MAAM,UAAU,EAAE,aAqcxB,CAAC"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import type { UnobservedEntity, UnobservedReason } from "@intentius/chant/lexicon";
|
|
2
|
+
declare const defaultRunner: (command: string) => Promise<{
|
|
3
|
+
stdout: string;
|
|
4
|
+
}>;
|
|
5
|
+
/** Injectable command runner, so tests drive every branch without helm or a cluster. */
|
|
6
|
+
export type HelmRunner = (command: string) => Promise<{
|
|
7
|
+
stdout: string;
|
|
8
|
+
}>;
|
|
9
|
+
export { defaultRunner as defaultHelmRunner };
|
|
10
|
+
export declare const HELM_CHART_ENTITY_TYPE = "Helm::Chart";
|
|
11
|
+
export declare const HELM_RELEASE_TYPE = "Helm::Release";
|
|
12
|
+
/** Shell-quote one argv element, same convention as `helm-upgrade.ts`. */
|
|
13
|
+
export declare function q(arg: string): string;
|
|
14
|
+
/**
|
|
15
|
+
* The environment's kube context (#1488): the declared binding when present,
|
|
16
|
+
* ambient otherwise. Unresolvable config is ambient, chant's own fallback —
|
|
17
|
+
* identical to `list-artifacts.ts`.
|
|
18
|
+
*/
|
|
19
|
+
export declare function resolveHelmContext(environment: string): Promise<string | undefined>;
|
|
20
|
+
/**
|
|
21
|
+
* Total verdict for a failed helm invocation (#1089/#1246). A missing binary
|
|
22
|
+
* and a missing/unusable kubeconfig are both `no-credentials` — the read had
|
|
23
|
+
* no usable way to reach the target. Anything else the CLI refused is
|
|
24
|
+
* `read-failed`.
|
|
25
|
+
*/
|
|
26
|
+
export declare function classifyHelmFailure(err: unknown): {
|
|
27
|
+
reason: UnobservedReason;
|
|
28
|
+
detail: string;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Kinds that are cluster-scoped, so a document without `metadata.namespace`
|
|
32
|
+
* must not inherit the release namespace. Well-known built-ins only; a
|
|
33
|
+
* cluster-scoped CRD instance this set does not name defaults to the release
|
|
34
|
+
* namespace, which affects the row's address, never its verdict.
|
|
35
|
+
*/
|
|
36
|
+
export declare const CLUSTER_SCOPED_KINDS: Set<string>;
|
|
37
|
+
/** One rendered document a release holds, from either channel. */
|
|
38
|
+
export interface ParsedReleaseResource {
|
|
39
|
+
/**
|
|
40
|
+
* Row key, following the k8s runtime-sweep convention
|
|
41
|
+
* (`<Kind>/<namespace>/<name>`, `cluster:<Kind>/<name>`) so a helm row and
|
|
42
|
+
* a k8s row for the same object spell the same identity.
|
|
43
|
+
*/
|
|
44
|
+
key: string;
|
|
45
|
+
apiVersion: string;
|
|
46
|
+
kind: string;
|
|
47
|
+
name: string;
|
|
48
|
+
namespace?: string;
|
|
49
|
+
/** Which read reported it — hooks are invisible to the manifest channel. */
|
|
50
|
+
channel: "manifest" | "hooks";
|
|
51
|
+
/** chant's k8s entity type for the document's GVK (`K8s::Apps::Deployment`). */
|
|
52
|
+
entityType: string;
|
|
53
|
+
/** The document itself, minus nothing — the release's stored declaration. */
|
|
54
|
+
doc: Record<string, unknown>;
|
|
55
|
+
/** `helm.sh/hook*` annotations, for hook-channel rows. */
|
|
56
|
+
hook?: {
|
|
57
|
+
hook: string;
|
|
58
|
+
weight?: string;
|
|
59
|
+
deletePolicy?: string;
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
/** One declared chart resolved to a live release, with what the release holds. */
|
|
63
|
+
export interface ObservedRelease {
|
|
64
|
+
entityName: string;
|
|
65
|
+
release: string;
|
|
66
|
+
namespace: string;
|
|
67
|
+
status?: string;
|
|
68
|
+
revision?: string;
|
|
69
|
+
chart?: string;
|
|
70
|
+
appVersion?: string;
|
|
71
|
+
updated?: string;
|
|
72
|
+
resources: ParsedReleaseResource[];
|
|
73
|
+
}
|
|
74
|
+
export interface ReleaseObservation {
|
|
75
|
+
/** Charts whose release was found and fully read. */
|
|
76
|
+
releases: ObservedRelease[];
|
|
77
|
+
/** Chart entities whose release `helm list` did not report — a real absence. */
|
|
78
|
+
absent: string[];
|
|
79
|
+
/** Chart entities that could not be read, with a total reason (#1089). */
|
|
80
|
+
unobserved: Record<string, UnobservedEntity>;
|
|
81
|
+
/** The helm command issued per chart entity (#1620). */
|
|
82
|
+
queried: Record<string, string>;
|
|
83
|
+
}
|
|
84
|
+
export interface ReleaseObserveOptions {
|
|
85
|
+
environment: string;
|
|
86
|
+
entities: Map<string, {
|
|
87
|
+
entityType: string;
|
|
88
|
+
props: Record<string, unknown>;
|
|
89
|
+
}>;
|
|
90
|
+
/** Deploy unit, `<namespace>/<release>` or `<release>` (see `describeStackStatus`). */
|
|
91
|
+
stack?: string;
|
|
92
|
+
}
|
|
93
|
+
/** The declared chart entities, with the release name each one deploys as. */
|
|
94
|
+
export declare function chartEntities(entities: Map<string, {
|
|
95
|
+
entityType: string;
|
|
96
|
+
props: Record<string, unknown>;
|
|
97
|
+
}>): Array<{
|
|
98
|
+
entityName: string;
|
|
99
|
+
release: string;
|
|
100
|
+
}>;
|
|
101
|
+
/** Parse one channel's multi-document YAML stream into per-resource rows. */
|
|
102
|
+
export declare function parseReleaseDocuments(text: string, channel: "manifest" | "hooks", releaseNamespace: string): ParsedReleaseResource[];
|
|
103
|
+
/**
|
|
104
|
+
* Resolve every declared chart to its release and read both channels.
|
|
105
|
+
* Never throws for a per-release failure; a whole-read failure (the `helm
|
|
106
|
+
* list` itself) lands every chart entity in `unobserved` with one reason.
|
|
107
|
+
*/
|
|
108
|
+
export declare function observeReleases(options: ReleaseObserveOptions, run?: HelmRunner): Promise<ReleaseObservation>;
|
|
109
|
+
//# sourceMappingURL=release-observe.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"release-observe.d.ts","sourceRoot":"","sources":["../src/release-observe.ts"],"names":[],"mappings":"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"}
|