@intentius/chant 0.19.0 → 0.20.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/build-params.d.ts +108 -0
- package/dist/build-params.d.ts.map +1 -0
- package/dist/build.d.ts +79 -1
- package/dist/build.d.ts.map +1 -1
- package/dist/cli/commands/build.d.ts +31 -0
- package/dist/cli/commands/build.d.ts.map +1 -1
- package/dist/cli/commands/check-lexicon-examples.d.ts +41 -0
- package/dist/cli/commands/check-lexicon-examples.d.ts.map +1 -0
- package/dist/cli/commands/check-lexicon-intrinsics.d.ts +54 -0
- package/dist/cli/commands/check-lexicon-intrinsics.d.ts.map +1 -0
- package/dist/cli/commands/check-lexicon.d.ts +1 -1
- package/dist/cli/commands/check-lexicon.d.ts.map +1 -1
- package/dist/cli/commands/lint.d.ts +27 -0
- package/dist/cli/commands/lint.d.ts.map +1 -1
- package/dist/cli/handlers/build.d.ts.map +1 -1
- package/dist/cli/handlers/components.d.ts.map +1 -1
- package/dist/cli/handlers/lint.d.ts.map +1 -1
- package/dist/cli/handlers/run-client.d.ts +1 -1
- package/dist/cli/handlers/run-client.d.ts.map +1 -1
- package/dist/cli/handlers/run.d.ts.map +1 -1
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/plugins.d.ts +16 -0
- package/dist/cli/plugins.d.ts.map +1 -1
- package/dist/cli/registry.d.ts +10 -0
- package/dist/cli/registry.d.ts.map +1 -1
- package/dist/codegen/docs-sections.d.ts.map +1 -1
- package/dist/components/cli-support.d.ts +12 -5
- package/dist/components/cli-support.d.ts.map +1 -1
- package/dist/components/discover.d.ts +62 -7
- package/dist/components/discover.d.ts.map +1 -1
- package/dist/components/sandbox/driver.d.ts +12 -0
- package/dist/components/sandbox/driver.d.ts.map +1 -0
- package/dist/components/sandbox/run.d.ts +42 -0
- package/dist/components/sandbox/run.d.ts.map +1 -0
- package/dist/composite.d.ts +5 -0
- package/dist/composite.d.ts.map +1 -1
- package/dist/config.d.ts +71 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/discovery/collect.d.ts.map +1 -1
- package/dist/discovery/entity-wire-codec.d.ts +166 -0
- package/dist/discovery/entity-wire-codec.d.ts.map +1 -0
- package/dist/discovery/entity-wire.d.ts +50 -0
- package/dist/discovery/entity-wire.d.ts.map +1 -0
- package/dist/discovery/fold-import.d.ts +210 -0
- package/dist/discovery/fold-import.d.ts.map +1 -0
- package/dist/discovery/index.d.ts +74 -1
- package/dist/discovery/index.d.ts.map +1 -1
- package/dist/discovery/sandbox/bundle.d.ts +18 -0
- package/dist/discovery/sandbox/bundle.d.ts.map +1 -0
- package/dist/discovery/sandbox/child-errors.d.ts +15 -0
- package/dist/discovery/sandbox/child-errors.d.ts.map +1 -0
- package/dist/discovery/sandbox/driver.d.ts +13 -0
- package/dist/discovery/sandbox/driver.d.ts.map +1 -0
- package/dist/discovery/sandbox/run.d.ts +69 -0
- package/dist/discovery/sandbox/run.d.ts.map +1 -0
- package/dist/errors.d.ts +9 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/fold/fold.d.ts +226 -0
- package/dist/fold/fold.d.ts.map +1 -0
- package/dist/fold/subset.d.ts +102 -0
- package/dist/fold/subset.d.ts.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/lexicon-output.d.ts +7 -2
- package/dist/lexicon-output.d.ts.map +1 -1
- package/dist/lexicon-schema.d.ts +2 -2
- package/dist/lexicon-schema.d.ts.map +1 -1
- package/dist/lexicon.d.ts +81 -1
- package/dist/lexicon.d.ts.map +1 -1
- package/dist/lifecycle/release-ledger.d.ts +11 -0
- package/dist/lifecycle/release-ledger.d.ts.map +1 -1
- package/dist/lint/component-checks.d.ts +7 -1
- package/dist/lint/component-checks.d.ts.map +1 -1
- package/dist/lint/rules/evl001-non-literal-expression.d.ts.map +1 -1
- package/dist/lint/rules/evl003-dynamic-property-access.d.ts.map +1 -1
- package/dist/params.d.ts +60 -0
- package/dist/params.d.ts.map +1 -0
- package/dist/provenance.d.ts +21 -0
- package/dist/provenance.d.ts.map +1 -1
- package/dist/terraform/aws-resources.d.ts.map +1 -1
- package/package.json +2 -1
- package/src/build-params.test.ts +144 -0
- package/src/build-params.ts +207 -0
- package/src/build.test.ts +38 -0
- package/src/build.ts +144 -7
- package/src/cli/commands/build.test.ts +220 -2
- package/src/cli/commands/build.ts +111 -3
- package/src/cli/commands/check-lexicon-examples.test.ts +92 -0
- package/src/cli/commands/check-lexicon-examples.ts +103 -0
- package/src/cli/commands/check-lexicon-intrinsics.test.ts +145 -0
- package/src/cli/commands/check-lexicon-intrinsics.ts +312 -0
- package/src/cli/commands/check-lexicon.test.ts +34 -0
- package/src/cli/commands/check-lexicon.ts +119 -1
- package/src/cli/commands/lint.ts +31 -3
- package/src/cli/commands/onboard.ts +1 -1
- package/src/cli/component-security-boundary.test.ts +170 -0
- package/src/cli/handlers/build.ts +24 -3
- package/src/cli/handlers/components.ts +9 -2
- package/src/cli/handlers/dev.ts +1 -1
- package/src/cli/handlers/graph.ts +7 -5
- package/src/cli/handlers/lifecycle.ts +2 -2
- package/src/cli/handlers/lint.ts +2 -0
- package/src/cli/handlers/misc.ts +2 -2
- package/src/cli/handlers/run-client.ts +1 -1
- package/src/cli/handlers/run.ts +20 -5
- package/src/cli/main.test.ts +22 -0
- package/src/cli/main.ts +39 -0
- package/src/cli/plugins.ts +20 -4
- package/src/cli/registry.ts +10 -0
- package/src/cli/security-boundary.test.ts +135 -0
- package/src/codegen/docs-sections.test.ts +61 -0
- package/src/codegen/docs-sections.ts +7 -3
- package/src/components/cli-support.ts +22 -10
- package/src/components/discover.ts +127 -25
- package/src/components/sandbox/driver.ts +114 -0
- package/src/components/sandbox/run.test.ts +185 -0
- package/src/components/sandbox/run.ts +177 -0
- package/src/composite.test.ts +21 -0
- package/src/composite.ts +20 -1
- package/src/config.ts +81 -0
- package/src/discovery/collect.ts +17 -3
- package/src/discovery/entity-wire-codec.ts +485 -0
- package/src/discovery/entity-wire.test.ts +240 -0
- package/src/discovery/entity-wire.ts +67 -0
- package/src/discovery/fold-import.test.ts +1026 -0
- package/src/discovery/fold-import.ts +1805 -0
- package/src/discovery/index.test.ts +191 -1
- package/src/discovery/index.ts +233 -1
- package/src/discovery/sandbox/bundle.ts +218 -0
- package/src/discovery/sandbox/child-errors.ts +65 -0
- package/src/discovery/sandbox/driver.ts +147 -0
- package/src/discovery/sandbox/run.test.ts +179 -0
- package/src/discovery/sandbox/run.ts +196 -0
- package/src/errors.ts +9 -1
- package/src/fold/fold.test.ts +535 -0
- package/src/fold/fold.ts +648 -0
- package/src/fold/subset-doc-parity.test.ts +183 -0
- package/src/fold/subset.test.ts +241 -0
- package/src/fold/subset.ts +302 -0
- package/src/index.ts +2 -0
- package/src/lexicon-output.ts +7 -2
- package/src/lexicon-schema.test.ts +14 -0
- package/src/lexicon-schema.ts +3 -1
- package/src/lexicon.ts +82 -1
- package/src/lifecycle/git.test.ts +10 -5
- package/src/lifecycle/release-ledger.test.ts +28 -0
- package/src/lifecycle/release-ledger.ts +11 -0
- package/src/lint/component-checks.ts +8 -1
- package/src/lint/rules/evl001-non-literal-expression.ts +26 -110
- package/src/lint/rules/evl003-dynamic-property-access.ts +11 -2
- package/src/params.test.ts +22 -0
- package/src/params.ts +66 -0
- package/src/provenance.ts +22 -0
- package/src/terraform/adopt-state.test.ts +1 -1
- package/src/terraform/aws-resources.test.ts +11 -4
- package/src/terraform/aws-resources.ts +60 -0
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
import * as ts from "typescript";
|
|
2
|
+
import { type IntrinsicDef } from "../lexicon.js";
|
|
3
|
+
import { type SubsetRuleId } from "./subset.js";
|
|
4
|
+
/**
|
|
5
|
+
* fold — static AST value reducer (chant #1026/#1021/#1024, part of epic #1019)
|
|
6
|
+
*
|
|
7
|
+
* Reduces a single-file TypeScript expression AST to a value with NO
|
|
8
|
+
* module execution. The node-kind/operator/key subset it covers — literals,
|
|
9
|
+
* template interpolation, object/array literals (incl. spread), `const`
|
|
10
|
+
* identifier resolution, property and element access (incl. the
|
|
11
|
+
* cross-resource `{ __attrRef }` case, literal-key-only), unary `!`/`-`,
|
|
12
|
+
* the binary operators `+ - * / === !== > < >= <=`, short-circuit
|
|
13
|
+
* `&& || ??`, conditional expressions, `as`/`satisfies`/`!`/parenthesized
|
|
14
|
+
* unwrapping, a nested `new Type({...})` resource-as-value, and registered
|
|
15
|
+
* lexicon intrinsic tagged templates — is defined ONCE, in {@link "./subset"}
|
|
16
|
+
* ({@link findSubsetViolation}), and shared with EVL001/EVL003
|
|
17
|
+
* ({@link "../lint/rules/evl001-non-literal-expression"}), so the linted
|
|
18
|
+
* subset and the folded subset can never drift apart (#1024).
|
|
19
|
+
*
|
|
20
|
+
* A `CallExpression` has no case — a function call as a value is
|
|
21
|
+
* structurally unrepresentable, not merely linted against. Composite
|
|
22
|
+
* factory calls are out of scope here (epic Phase 5, #1023).
|
|
23
|
+
*
|
|
24
|
+
* Cross-file identifier resolution (chant #1020): `consts` alone is always
|
|
25
|
+
* this file's own top-level bindings — that part stays single-file, and
|
|
26
|
+
* nothing about the supported node-kind subset changes. But an identifier
|
|
27
|
+
* `fold()` can't find in `consts` isn't necessarily a dead end: the optional
|
|
28
|
+
* `externals` map (populated by ../discovery/fold-import.ts, which owns the
|
|
29
|
+
* module graph traversal) lets a caller pre-resolve an *imported* binding to
|
|
30
|
+
* its real value — a plain value for an imported `const`, or the REAL,
|
|
31
|
+
* already-constructed `Declarable`/`CompositeInstance` for a name bound to a
|
|
32
|
+
* resource/composite in the defining module — and `fold()` just returns it
|
|
33
|
+
* for the identifier, unchanged. This is why a bare object/array bracket
|
|
34
|
+
* index a few lines down (`obj[key]`) is enough to make `network.vpc.VpcId`
|
|
35
|
+
* fold correctly once `network` resolves via `externals` to the real,
|
|
36
|
+
* shared composite instance object: indexing a live class instance the same
|
|
37
|
+
* way as a plain object returns its real getter's real `AttrRef`, wired to
|
|
38
|
+
* the real shared parent — see fold-import.ts's module doc for why that
|
|
39
|
+
* shared identity is the entire hard part of #1020.
|
|
40
|
+
*/
|
|
41
|
+
/**
|
|
42
|
+
* The result of folding an AST node: a plain value, a symbolic reference to
|
|
43
|
+
* a sibling resource's attribute, a folded intrinsic tagged template, an
|
|
44
|
+
* unresolved external symbol chain, or a folded resource spec.
|
|
45
|
+
*/
|
|
46
|
+
export type FoldedValue = string | number | boolean | null | undefined | FoldedValue[] | {
|
|
47
|
+
[key: string]: FoldedValue;
|
|
48
|
+
} | AttrRefValue | FoldedIntrinsic | SymbolicValue | FoldedResource;
|
|
49
|
+
/**
|
|
50
|
+
* Symbolic reference produced when a property/element access resolves to an
|
|
51
|
+
* attribute of another `const`-declared resource in the same file, e.g.
|
|
52
|
+
* `bucket.name` (or `bucket["name"]`) where `bucket` is
|
|
53
|
+
* `const bucket = new S3Bucket({...})`.
|
|
54
|
+
*
|
|
55
|
+
* This is the SAME envelope `AttrRef.prototype.toJSON()` produces at
|
|
56
|
+
* runtime ({@link "../attrref"}) — `serializer-walker.ts`'s `walkValue`
|
|
57
|
+
* already recognizes a plain `{ __attrRef }` object as an AttrRef envelope
|
|
58
|
+
* (it doesn't require a live `AttrRef` instance), so this is not an
|
|
59
|
+
* invented shape: it's the existing envelope, produced without running the
|
|
60
|
+
* module that would otherwise construct the real `AttrRef`.
|
|
61
|
+
*/
|
|
62
|
+
export interface AttrRefValue {
|
|
63
|
+
__attrRef: {
|
|
64
|
+
entity: string;
|
|
65
|
+
attribute: string;
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* The result of folding a registered lexicon intrinsic tagged template
|
|
70
|
+
* (e.g. `Sub\`${AWS.StackName}-x\``) to its node form: tag name, cooked
|
|
71
|
+
* template string parts, and folded interpolated values (in order).
|
|
72
|
+
* Mirrors the runtime call shape `Tag(strings, ...values)` so a later
|
|
73
|
+
* build path can replay it into the real intrinsic object (#1022).
|
|
74
|
+
*/
|
|
75
|
+
export interface FoldedIntrinsic {
|
|
76
|
+
__intrinsic: string;
|
|
77
|
+
strings: string[];
|
|
78
|
+
values: FoldedValue[];
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* A sub-expression inside a folded intrinsic that fold could not reduce to
|
|
82
|
+
* a value without resolving an identifier from outside this file — e.g. an
|
|
83
|
+
* imported pseudo-parameter namespace access like `AWS.StackName`.
|
|
84
|
+
* Cross-file import resolution is #1020; until then the raw source text is
|
|
85
|
+
* preserved verbatim (never stringified, never rejected) instead of being
|
|
86
|
+
* treated as an unresolved-identifier error. Only appears inside a folded
|
|
87
|
+
* intrinsic's `values` — see {@link foldIntrinsicValue}.
|
|
88
|
+
*/
|
|
89
|
+
export interface SymbolicValue {
|
|
90
|
+
__symbol: string;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* The result of folding a resource constructor: `new Type({ ...props })`.
|
|
94
|
+
*/
|
|
95
|
+
export interface FoldedResource {
|
|
96
|
+
__resource: string;
|
|
97
|
+
props: {
|
|
98
|
+
[key: string]: FoldedValue;
|
|
99
|
+
};
|
|
100
|
+
/**
|
|
101
|
+
* The constructor's optional second argument — CFN-style resource-level
|
|
102
|
+
* attributes (`DependsOn`, `Condition`, `DeletionPolicy`,
|
|
103
|
+
* `UpdateReplacePolicy`, `CreationPolicy`, `Metadata`, …) some lexicons
|
|
104
|
+
* accept alongside `props` (see `createResource`'s `attributes` param,
|
|
105
|
+
* ../runtime.ts). Present only when the source actually passed one.
|
|
106
|
+
*/
|
|
107
|
+
attributes?: {
|
|
108
|
+
[key: string]: FoldedValue;
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* One entry per exported `const` resource declaration in {@link foldModule}'s
|
|
113
|
+
* result. The `ok: false` case surfaces the same located, rule-id-tagged
|
|
114
|
+
* shape as {@link FoldError} (#1024) — `error` stays the formatted message
|
|
115
|
+
* string for backward-compat display, while `ruleId`/`line`/`column` let a
|
|
116
|
+
* caller cite the exact same rule id + position an EVL diagnostic for the
|
|
117
|
+
* same construct would.
|
|
118
|
+
*/
|
|
119
|
+
export type FoldModuleEntry = {
|
|
120
|
+
ok: true;
|
|
121
|
+
spec: FoldedResource;
|
|
122
|
+
} | {
|
|
123
|
+
ok: false;
|
|
124
|
+
error: string;
|
|
125
|
+
ruleId: SubsetRuleId;
|
|
126
|
+
line: number;
|
|
127
|
+
column: number;
|
|
128
|
+
};
|
|
129
|
+
/**
|
|
130
|
+
* Error thrown when a node cannot be folded to a value without executing
|
|
131
|
+
* code. Carries the node's source position (1-based, matching `LintError`)
|
|
132
|
+
* so callers can report a located diagnostic, and the id of the EVL rule
|
|
133
|
+
* that flags the same construct (#1024) — "EVL001" (the general
|
|
134
|
+
* not-statically-evaluable umbrella) unless the rejection is specifically a
|
|
135
|
+
* dynamic element-access key, which is "EVL003"'s construct. A rejection
|
|
136
|
+
* with no EVL equivalent (unresolved identifier, unregistered intrinsic tag,
|
|
137
|
+
* spread of a value that turns out not to be an object/array — all
|
|
138
|
+
* environment/value-dependent, see {@link "./subset"}'s module doc) still
|
|
139
|
+
* defaults to "EVL001" since that's the closest umbrella rule, even though
|
|
140
|
+
* EVL can't actually detect it ahead of a real fold.
|
|
141
|
+
*
|
|
142
|
+
* chant #1020 hang fix — every `FoldError` is thrown for a routine, EXPECTED
|
|
143
|
+
* outcome (this node's shape isn't in the fold subset) and is ALWAYS caught
|
|
144
|
+
* a few frames up (`tryFoldFileCore`'s own top-level catch, ultimately),
|
|
145
|
+
* reduced to `.message`; `.stack` is never read anywhere on this path. V8
|
|
146
|
+
* still eagerly walks live JS frames to populate the (lazy) `.stack` getter's
|
|
147
|
+
* backing data at CONSTRUCTION time regardless of whether it's ever read —
|
|
148
|
+
* cheap for a shallow call stack, but expensive once the surrounding
|
|
149
|
+
* functions are hot enough for V8 to aggressively inline them (every corpus
|
|
150
|
+
* entry re-triggers the same call shapes across `foldFileMemoized` ->
|
|
151
|
+
* `buildExternals` -> `tryFoldFileCore` -> `resolveDeclaratorValue` ->
|
|
152
|
+
* `resolveLiveValue` -> `resolveCallExpression`/`fold`, chant #1020's
|
|
153
|
+
* cross-file resolution making that chain several layers deeper than the
|
|
154
|
+
* pre-#1020 single-file fold ever needed): capturing a stack from deep,
|
|
155
|
+
* optimized/inlined frames requires V8 to reconstruct them from deopt
|
|
156
|
+
* metadata, confirmed via `sample` to dominate CPU during the observed
|
|
157
|
+
* multi-minute stall (`Isolate::CaptureAndSetErrorStack` /
|
|
158
|
+
* `OptimizedJSFrame::Summarize` / `DeoptTranslationIterator`). Most files in
|
|
159
|
+
* the corpus (77/98 entries have at least one run-fallback file) throw one
|
|
160
|
+
* of these, so the cost compounds across a build. `Error.stackTraceLimit = 0`
|
|
161
|
+
* for the duration of `super()` makes V8 capture zero frames — free
|
|
162
|
+
* regardless of stack depth/optimization state — then the limit is restored
|
|
163
|
+
* immediately, so it doesn't suppress a real stack trace anywhere else in
|
|
164
|
+
* the process.
|
|
165
|
+
*/
|
|
166
|
+
export declare class FoldError extends Error {
|
|
167
|
+
readonly line: number;
|
|
168
|
+
readonly column: number;
|
|
169
|
+
readonly ruleId: SubsetRuleId;
|
|
170
|
+
constructor(message: string, line: number, column: number, ruleId?: SubsetRuleId);
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Resolve a node's 1-based line/column via its owning `SourceFile`. Exported
|
|
174
|
+
* (chant #1020) so fold-import.ts can build its own located `FoldError`s
|
|
175
|
+
* (e.g. an import-cycle diagnostic pointing at the specific `import`
|
|
176
|
+
* statement that closes the cycle) using the exact same position math
|
|
177
|
+
* `foldError` uses here, rather than a second hand-rolled implementation.
|
|
178
|
+
*/
|
|
179
|
+
export declare function locate(node: ts.Node): {
|
|
180
|
+
line: number;
|
|
181
|
+
column: number;
|
|
182
|
+
};
|
|
183
|
+
/**
|
|
184
|
+
* Collect every top-level `const x = <initializer>` in a source file into a
|
|
185
|
+
* name -> initializer map. Single-file only (cross-file is #1020).
|
|
186
|
+
*/
|
|
187
|
+
export declare function collectConsts(sourceFile: ts.SourceFile): Map<string, ts.Expression>;
|
|
188
|
+
/**
|
|
189
|
+
* Fold a single expression node to a value. Throws {@link FoldError} for
|
|
190
|
+
* anything outside the supported subset — including any `CallExpression`
|
|
191
|
+
* that isn't a registered intrinsic tagged template.
|
|
192
|
+
*
|
|
193
|
+
* @param intrinsics - Lexicon-registered intrinsics that fold
|
|
194
|
+
* ({@link intrinsicFolds}, e.g. `Sub`). A tagged template whose tag isn't
|
|
195
|
+
* in this list, or is registered but not foldable, is rejected. Defaults
|
|
196
|
+
* to none — pass the target lexicon's manifest `intrinsics` to recognize
|
|
197
|
+
* its tags.
|
|
198
|
+
* @param externals - chant #1020: pre-resolved imported bindings, consulted
|
|
199
|
+
* only when an identifier isn't in `consts`. See the module doc above.
|
|
200
|
+
* `undefined` (the default) preserves the exact pre-#1020 single-file
|
|
201
|
+
* behavior — every identifier not in `consts` is unresolved.
|
|
202
|
+
*/
|
|
203
|
+
export declare function fold(node: ts.Expression, consts: Map<string, ts.Expression>, intrinsics?: readonly IntrinsicDef[], externals?: ReadonlyMap<string, unknown>): FoldedValue;
|
|
204
|
+
/**
|
|
205
|
+
* Fold a resource constructor call — `new Type({ ...props }, { ...attributes
|
|
206
|
+
* })` — to its spec. Each argument present must be an object literal
|
|
207
|
+
* (anything else is not statically evaluable and throws a located
|
|
208
|
+
* {@link FoldError}). The second argument (CFN-style resource attributes —
|
|
209
|
+
* `DependsOn`, `Condition`, `DeletionPolicy`, …) is optional, matching
|
|
210
|
+
* `createResource`'s runtime constructor signature (../runtime.ts).
|
|
211
|
+
*/
|
|
212
|
+
export declare function foldResource(node: ts.NewExpression, consts: Map<string, ts.Expression>, intrinsics?: readonly IntrinsicDef[], externals?: ReadonlyMap<string, unknown>): FoldedResource;
|
|
213
|
+
/**
|
|
214
|
+
* Fold every exported `const X = new Type({...})` resource declaration in a
|
|
215
|
+
* source file to its spec, with no module execution.
|
|
216
|
+
*
|
|
217
|
+
* Non-resource `const` exports (anything whose initializer isn't a `new`
|
|
218
|
+
* expression) are left out of the result rather than folded or errored —
|
|
219
|
+
* `new`-less resource forms (composite factory calls) are epic Phase 5
|
|
220
|
+
* (#1023) and are not attempted here.
|
|
221
|
+
*
|
|
222
|
+
* @param intrinsics - Lexicon-registered intrinsic tags, forwarded to
|
|
223
|
+
* {@link fold} for every resource. See {@link fold}'s `intrinsics` param.
|
|
224
|
+
*/
|
|
225
|
+
export declare function foldModule(source: string, fileName?: string, intrinsics?: readonly IntrinsicDef[]): Record<string, FoldModuleEntry>;
|
|
226
|
+
//# sourceMappingURL=fold.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fold.d.ts","sourceRoot":"","sources":["../../src/fold/fold.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import * as ts from "typescript";
|
|
2
|
+
/**
|
|
3
|
+
* subset — the single canonical definition of chant's statically-foldable
|
|
4
|
+
* expression subset (chant #1024, epic #1019).
|
|
5
|
+
*
|
|
6
|
+
* `fold()` ({@link "./fold"}, the enforcement layer — a construct outside
|
|
7
|
+
* this subset simply has no case there) and EVL001/EVL003
|
|
8
|
+
* ({@link "../lint/rules/evl001-non-literal-expression"},
|
|
9
|
+
* {@link "../lint/rules/evl003-dynamic-property-access"} — the pre-flight
|
|
10
|
+
* diagnostic layer) both import this module so the two can never drift
|
|
11
|
+
* apart on *which node kinds, operators, and key shapes* are foldable.
|
|
12
|
+
* Before this module existed, `fold()` and EVL001 each hand-rolled their
|
|
13
|
+
* own recursive classifier; they agreed almost everywhere but had several
|
|
14
|
+
* real, silent gaps (see git history of #1024 for the enumerated list —
|
|
15
|
+
* dynamic object-literal keys, template/tagged-template interiors, and
|
|
16
|
+
* unrestricted binary/unary operators were all accepted by EVL001 but
|
|
17
|
+
* rejected by `fold()`). This module is the fix: one classifier, two
|
|
18
|
+
* importers.
|
|
19
|
+
*
|
|
20
|
+
* Scope — this module classifies *shape* only: the syntactic kind of an
|
|
21
|
+
* expression, its operator, and (for keys) its literal-ness. It
|
|
22
|
+
* deliberately does NOT resolve bindings or perform any evaluation, because
|
|
23
|
+
* three things a full fold needs are inherently environment-dependent and
|
|
24
|
+
* cannot be recovered from shape alone:
|
|
25
|
+
*
|
|
26
|
+
* 1. Identifier *resolution* — is a bare name actually a local `const`,
|
|
27
|
+
* vs. an unbound name? That needs the file's `consts` map. Both
|
|
28
|
+
* `fold()` and this module treat a bare identifier as shape-valid;
|
|
29
|
+
* `fold()` alone resolves it (and rejects if unresolved) once it has
|
|
30
|
+
* that map. A lint rule has no equivalent binding-resolution pass
|
|
31
|
+
* today, so EVL (via this module) stays permissive here — a known,
|
|
32
|
+
* intentional asymmetry, not a bug: it can only ever be a *false
|
|
33
|
+
* negative* on EVL's part (EVL passes something `fold()` might later
|
|
34
|
+
* reject for being unresolved), never the reverse.
|
|
35
|
+
* 2. Tagged-template *tag registration* — needs a lexicon's intrinsics
|
|
36
|
+
* manifest, which isn't available to a syntax-only lint rule. `fold()`
|
|
37
|
+
* alone checks it; this module treats any tag name as shape-valid and
|
|
38
|
+
* only classifies the interpolated values.
|
|
39
|
+
* 3. Runtime *type* of a folded value — e.g. spreading `const n = 5`
|
|
40
|
+
* (`{...n}`) is shape-valid (`n` is a plain identifier) but `fold()`
|
|
41
|
+
* rejects it once it discovers `n` folds to a number, not an object.
|
|
42
|
+
* Only real evaluation catches this; EVL004 independently narrows
|
|
43
|
+
* spread sources to a stricter "traceable to a const" shape, which
|
|
44
|
+
* catches most real-world misuse without evaluating, but is not a
|
|
45
|
+
* full substitute.
|
|
46
|
+
*
|
|
47
|
+
* One more inherent gap, on the *value-flow* side rather than shape:
|
|
48
|
+
* `fold()` evaluates `&&`/`||`/`??` and `? :` lazily — it only folds the
|
|
49
|
+
* side/branch actually taken, exactly like the JS runtime — so an
|
|
50
|
+
* otherwise-unfoldable *untaken* branch does not reject
|
|
51
|
+
* (`false && sideEffect()` folds cleanly to `false`). This module (and so
|
|
52
|
+
* EVL) is flow-insensitive: it has no notion of "taken", so it requires
|
|
53
|
+
* every operand/branch to be shape-valid. This can only make EVL *stricter*
|
|
54
|
+
* than `fold()` (a false positive relative to fold, flagging code the
|
|
55
|
+
* folder would actually accept) — never the reverse. Making EVL
|
|
56
|
+
* flow-sensitive would mean re-implementing an evaluator inside a lint
|
|
57
|
+
* rule; out of scope here. See #1024.
|
|
58
|
+
*/
|
|
59
|
+
/** The two EVL rule ids a shape violation can be attributed to. */
|
|
60
|
+
export type SubsetRuleId = "EVL001" | "EVL003";
|
|
61
|
+
/** A located, shape-level rejection: the offending node, the EVL rule id it maps to, and a message. */
|
|
62
|
+
export interface SubsetViolation {
|
|
63
|
+
node: ts.Node;
|
|
64
|
+
ruleId: SubsetRuleId;
|
|
65
|
+
message: string;
|
|
66
|
+
}
|
|
67
|
+
/** Binary operators `fold()` implements — see `fold()`'s operator switch in ./fold.ts. */
|
|
68
|
+
export declare const SUPPORTED_BINARY_OPERATORS: ReadonlySet<ts.SyntaxKind>;
|
|
69
|
+
/** Prefix unary operators `fold()` implements: logical-not and numeric negation. */
|
|
70
|
+
export declare const SUPPORTED_UNARY_OPERATORS: ReadonlySet<ts.SyntaxKind>;
|
|
71
|
+
/** A property name foldable without execution: identifier, string, or numeric literal (not a computed name). */
|
|
72
|
+
export declare function isLiteralPropertyName(node: ts.PropertyName): node is ts.Identifier | ts.StringLiteral | ts.NumericLiteral;
|
|
73
|
+
/** An element-access key foldable without execution: a string or numeric LITERAL only (EVL003 semantics). */
|
|
74
|
+
export declare function isLiteralElementKey(node: ts.Expression): node is ts.StringLiteral | ts.NumericLiteral;
|
|
75
|
+
export declare function computedPropertyNameMessage(node: ts.PropertyName): string;
|
|
76
|
+
export declare function dynamicElementAccessMessage(keyNode: ts.Expression): string;
|
|
77
|
+
export declare const UNSUPPORTED_OBJECT_MEMBER_MESSAGE = "unsupported object member";
|
|
78
|
+
export declare const UNSUPPORTED_UNARY_MESSAGE = "unsupported unary";
|
|
79
|
+
export declare function unsupportedBinaryMessage(opKind: ts.SyntaxKind): string;
|
|
80
|
+
export declare function callExpressionMessage(node: ts.CallExpression): string;
|
|
81
|
+
export declare function unsupportedExpressionMessage(node: ts.Node): string;
|
|
82
|
+
export declare function resourceCtorArgMessage(typeName: string): string;
|
|
83
|
+
/**
|
|
84
|
+
* Classify one object-literal member (`{ a: 1 }`'s `a: 1`, `{ ...x }`'s
|
|
85
|
+
* `...x`, or a shorthand `{ a }`). Checks the key's shape before the
|
|
86
|
+
* value's, mirroring `propName()` in fold.ts, which runs before folding
|
|
87
|
+
* the value. Returns the first violation within this member, or
|
|
88
|
+
* `undefined` when it's fully in the subset.
|
|
89
|
+
*/
|
|
90
|
+
export declare function checkObjectMember(prop: ts.ObjectLiteralElementLike): SubsetViolation | undefined;
|
|
91
|
+
/**
|
|
92
|
+
* The canonical recursive shape classifier: is `node`'s expression *shape*
|
|
93
|
+
* within the subset `fold()` can reduce? Mirrors `fold()`'s own dispatch
|
|
94
|
+
* node-kind for node-kind (see ./fold.ts) — every branch here has a
|
|
95
|
+
* matching branch there, and vice versa — but performs no
|
|
96
|
+
* resolution/evaluation (see the module doc comment for the three
|
|
97
|
+
* environment-dependent exceptions). Returns the first (deepest,
|
|
98
|
+
* `fold()`-evaluation-order) unsupported node, or `undefined` when `node`'s
|
|
99
|
+
* whole shape is foldable.
|
|
100
|
+
*/
|
|
101
|
+
export declare function findSubsetViolation(node: ts.Node): SubsetViolation | undefined;
|
|
102
|
+
//# sourceMappingURL=subset.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subset.d.ts","sourceRoot":"","sources":["../../src/fold/subset.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;AAEH,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;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,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,GAAG,MAAM,CAErE;AAED,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,MAAM,CAElE;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,EAAE,CAAC,wBAAwB,GAAG,eAAe,GAAG,SAAS,CAchG;AAQD;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,eAAe,GAAG,SAAS,CAuH9E"}
|
package/dist/index.d.ts
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
export * from "./declarable.js";
|
|
7
7
|
export * from "./composite.js";
|
|
8
8
|
export * from "./provenance.js";
|
|
9
|
+
export * from "./build-params.js";
|
|
9
10
|
export * from "./intrinsic.js";
|
|
10
11
|
export * from "./types.js";
|
|
11
12
|
export * from "./errors.js";
|
|
@@ -32,6 +33,7 @@ export * from "./graph-dot.js";
|
|
|
32
33
|
export * from "./graph-layout.js";
|
|
33
34
|
export * from "./graph-lens.js";
|
|
34
35
|
export * from "./detectLexicon.js";
|
|
36
|
+
export * from "./fold/fold.js";
|
|
35
37
|
export * from "./lint/parser.js";
|
|
36
38
|
export * from "./lint/rule.js";
|
|
37
39
|
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":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,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;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,WAAW,CAAC;AAC1B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,4BAA4B,CAAC;AAC3C,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,iBAAiB,EACjB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,YAAY,GAClB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,kBAAkB,EAClB,2BAA2B,EAC3B,oBAAoB,EACpB,oBAAoB,EACpB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,0BAA0B,EAC/B,KAAK,qBAAqB,GAC3B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,OAAO,EACP,YAAY,EACZ,YAAY,EACZ,KAAK,SAAS,EACd,KAAK,kBAAkB,EACvB,KAAK,yBAAyB,EAC9B,KAAK,gBAAgB,GACtB,MAAM,0BAA0B,CAAC;AAClC,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,yBAAyB,CAAC;AACxC,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAElC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAClE,cAAc,EAAE,iBAAiB,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC5F,YAAY,EAAE,QAAQ,EAAE,eAAe,EAAE,cAAc,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/lexicon-output.d.ts
CHANGED
|
@@ -32,8 +32,13 @@ export declare class LexiconOutput implements Intrinsic {
|
|
|
32
32
|
readonly outputName: string;
|
|
33
33
|
/** @internal WeakRef to the source entity object for identity-based matching */
|
|
34
34
|
readonly _sourceParent: WeakRef<object> | null;
|
|
35
|
-
/**
|
|
36
|
-
|
|
35
|
+
/**
|
|
36
|
+
* @internal Intrinsic value when constructed from an Intrinsic rather than AttrRef.
|
|
37
|
+
* Readable outside the class (like `_sourceParent` above) so the entity-wire
|
|
38
|
+
* encoder can reach it without an `as unknown as` cast that would erase type
|
|
39
|
+
* checking on every field it reads (#1047).
|
|
40
|
+
*/
|
|
41
|
+
readonly _intrinsic: Intrinsic | null;
|
|
37
42
|
constructor(ref: AttrRef | Intrinsic | string, name: string);
|
|
38
43
|
/**
|
|
39
44
|
* Set the source entity logical name.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lexicon-output.d.ts","sourceRoot":"","sources":["../src/lexicon-output.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAW5D;AAED;;;;;;;;GAQG;AACH,qBAAa,aAAc,YAAW,SAAS;IAC7C,QAAQ,CAAC,CAAC,gBAAgB,CAAC,EAAG,IAAI,CAAU;IAC5C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,gFAAgF;IAChF,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;IAC/C
|
|
1
|
+
{"version":3,"file":"lexicon-output.d.ts","sourceRoot":"","sources":["../src/lexicon-output.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAW5D;AAED;;;;;;;;GAQG;AACH,qBAAa,aAAc,YAAW,SAAS;IAC7C,QAAQ,CAAC,CAAC,gBAAgB,CAAC,EAAG,IAAI,CAAU;IAC5C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,gFAAgF;IAChF,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;IAC/C;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,EAAE,SAAS,GAAG,IAAI,CAAC;gBAE1B,GAAG,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,EAAE,IAAI,EAAE,MAAM;IA8B3D;;;;OAIG;IACH,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIpC;;;;OAIG;IACH,cAAc,IAAI,OAAO;IAOzB;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,GAAG,aAAa;IAO5D,MAAM,IAAI;QAAE,eAAe,EAAE,MAAM,CAAA;KAAE;CAGtC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,MAAM,CAAC,GAAG,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,aAAa,CAErF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAEtE"}
|
package/dist/lexicon-schema.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ export declare const IntrinsicDefSchema: z.ZodObject<{
|
|
|
7
7
|
name: z.ZodString;
|
|
8
8
|
description: z.ZodOptional<z.ZodString>;
|
|
9
9
|
outputKey: z.ZodOptional<z.ZodString>;
|
|
10
|
-
isTag: z.
|
|
10
|
+
isTag: z.ZodBoolean;
|
|
11
11
|
}, z.core.$strip>;
|
|
12
12
|
export declare const LexiconManifestSchema: z.ZodObject<{
|
|
13
13
|
name: z.ZodString;
|
|
@@ -18,7 +18,7 @@ export declare const LexiconManifestSchema: z.ZodObject<{
|
|
|
18
18
|
name: z.ZodString;
|
|
19
19
|
description: z.ZodOptional<z.ZodString>;
|
|
20
20
|
outputKey: z.ZodOptional<z.ZodString>;
|
|
21
|
-
isTag: z.
|
|
21
|
+
isTag: z.ZodBoolean;
|
|
22
22
|
}, z.core.$strip>>>;
|
|
23
23
|
pseudoParameters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
24
24
|
}, z.core.$strip>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lexicon-schema.d.ts","sourceRoot":"","sources":["../src/lexicon-schema.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,eAAe,EAAgB,MAAM,WAAW,CAAC;AAM/D,eAAO,MAAM,kBAAkB;;;;;
|
|
1
|
+
{"version":3,"file":"lexicon-schema.d.ts","sourceRoot":"","sources":["../src/lexicon-schema.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,eAAe,EAAgB,MAAM,WAAW,CAAC;AAM/D,eAAO,MAAM,kBAAkB;;;;;iBAO7B,CAAC;AAQH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;iBAOhC,CAAC;AAiCH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAmB7B,CAAC;AAMH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAMpE;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,eAAe,CA2B/D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAmBjF"}
|
package/dist/lexicon.d.ts
CHANGED
|
@@ -14,6 +14,41 @@ import type { ReferenceCatalog } from "./graph-refs.js";
|
|
|
14
14
|
export type { ReferenceCatalog, IdentityRule, RefRule } from "./graph-refs.js";
|
|
15
15
|
/**
|
|
16
16
|
* Manifest for a packaged lexicon — metadata embedded in the tarball.
|
|
17
|
+
*
|
|
18
|
+
* chant #1067 decided each optional field below explicitly rather than
|
|
19
|
+
* leaving them all equally unchecked:
|
|
20
|
+
*
|
|
21
|
+
* - `chantVersion` — now validated for presence/shape by `chant dev
|
|
22
|
+
* check-lexicon` (a lexicon's `dist/manifest.json` must declare one).
|
|
23
|
+
* NOT validated for compatibility against the core version actually
|
|
24
|
+
* running — that needs a live check at plugin-load time (a different
|
|
25
|
+
* surface: `loadPlugin`/`loadPlugins` in `./cli/plugins.ts`), which stays
|
|
26
|
+
* a deliberate non-goal here.
|
|
27
|
+
* - `namespace` — deliberately NOT validated for cross-lexicon uniqueness in
|
|
28
|
+
* #1067. `chant dev check-lexicon <dir>` only ever inspects one lexicon at
|
|
29
|
+
* a time, so it structurally can't catch a collision between two
|
|
30
|
+
* *different* lexicons. The natural home is `checkConflicts` (./cli/
|
|
31
|
+
* conflict-check.ts), which already detects cross-lexicon rule-id/skill/
|
|
32
|
+
* MCP-tool/MCP-resource collisions when multiple plugins load together —
|
|
33
|
+
* but `namespace` isn't on the runtime `LexiconPlugin` surface at all
|
|
34
|
+
* (manifest-only, baked in at package time), so extending that check would
|
|
35
|
+
* mean adding a new field to `LexiconPlugin` itself. Deferred rather than
|
|
36
|
+
* done under time pressure alongside a concurrent, unrelated change to
|
|
37
|
+
* this same interface (chant #1064).
|
|
38
|
+
* - `pseudoParameters` — deliberately NOT validated against what the
|
|
39
|
+
* lexicon actually exports in #1067, unlike `intrinsics` (see
|
|
40
|
+
* `IntrinsicDef.isTag` below and `./cli/commands/check-lexicon-
|
|
41
|
+
* intrinsics.ts`). The same static-analysis approach would apply — check
|
|
42
|
+
* each declared pseudo-parameter's short name against the real exported
|
|
43
|
+
* namespace object's properties (`AWS.StackName`, `Azure.ResourceGroupName`,
|
|
44
|
+
* ...) — but unlike `intrinsics()`, `pseudoParameters(): string[]` is a
|
|
45
|
+
* flat list of dotted strings with no structural link back to a specific
|
|
46
|
+
* export/property declaration, making the same trick more involved to
|
|
47
|
+
* generalize correctly. Relevant to #1063 (folding cross-file references
|
|
48
|
+
* into lexicon pseudo-parameter namespaces): once that lands, a wrong or
|
|
49
|
+
* missing pseudo-parameter property would silently break folding exactly
|
|
50
|
+
* the way #1039 did for intrinsics, which would be the moment this
|
|
51
|
+
* deferral needs revisiting.
|
|
17
52
|
*/
|
|
18
53
|
export interface LexiconManifest {
|
|
19
54
|
name: string;
|
|
@@ -91,8 +126,53 @@ export interface IntrinsicDef {
|
|
|
91
126
|
readonly name: string;
|
|
92
127
|
readonly description?: string;
|
|
93
128
|
readonly outputKey?: string;
|
|
94
|
-
|
|
129
|
+
/**
|
|
130
|
+
* Whether this intrinsic is authored as a JS tagged template (`` Sub`...` ``)
|
|
131
|
+
* rather than a plain function call (`Ref(...)`). Required — chant #1067 —
|
|
132
|
+
* because an omitted value silently defaulted to "not a tag" with no
|
|
133
|
+
* signal that the registration had never been decided. That produced #1039
|
|
134
|
+
* in both directions at once: aws's `Sub` (a genuine tagged template, the
|
|
135
|
+
* most-used intrinsic in the ecosystem) shipped with no `isTag` at all and
|
|
136
|
+
* silently never folded, while gitlab's `reference()` (a plain call)
|
|
137
|
+
* shipped with `isTag: true`. Both were wrong, and both shipped, because
|
|
138
|
+
* nothing forced the declaration or checked it against how the intrinsic is
|
|
139
|
+
* actually authored. `chant dev check-lexicon` now validates every
|
|
140
|
+
* registration here against its real declaration (tagged-template
|
|
141
|
+
* signature vs plain call) and against the package's own exports — see
|
|
142
|
+
* `../cli/commands/check-lexicon-intrinsics.ts`.
|
|
143
|
+
*/
|
|
144
|
+
readonly isTag: boolean;
|
|
95
145
|
}
|
|
146
|
+
/**
|
|
147
|
+
* Whether `chant build --fold` can ever fold a call to this intrinsic
|
|
148
|
+
* (chant #1062, epic #1019). Today the answer is a direct function of
|
|
149
|
+
* `isTag`: `fold()` (../fold/fold.ts) has no `CallExpression` case at all —
|
|
150
|
+
* a plain-call intrinsic (`Ref(...)`, `Concat(...)`, `reference(...)`, …) is
|
|
151
|
+
* always a run-fallback, no matter what it's named or registered as — while
|
|
152
|
+
* a *registered* tagged-template intrinsic (`Sub\`...\``) folds because
|
|
153
|
+
* `foldTaggedTemplate` recognizes its tag and recurses into the interior.
|
|
154
|
+
*
|
|
155
|
+
* This function is the single predicate both `fold()` (deciding whether a
|
|
156
|
+
* tag is registered for real) and the generated per-lexicon intrinsics page
|
|
157
|
+
* (`../codegen/docs-sections.ts`'s "Folds?" column) call — never two copies
|
|
158
|
+
* of the same `isTag === true` check that could silently drift. #1044 (per-
|
|
159
|
+
* intrinsic, per-lexicon foldability) changes this function's body to
|
|
160
|
+
* consult something more than `isTag` for a plain call that becomes
|
|
161
|
+
* foldable; every caller keeps working unchanged, and the generated matrix
|
|
162
|
+
* updates the moment a lexicon's registration says a given intrinsic now
|
|
163
|
+
* folds — no doc rewrite, no second code path to remember.
|
|
164
|
+
*
|
|
165
|
+
* Takes `{ isTag?: boolean }` rather than `Pick<IntrinsicDef, "isTag">`
|
|
166
|
+
* deliberately: `IntrinsicDef.isTag` is required for new registrations
|
|
167
|
+
* (chant #1067), but this predicate also reads `isTag` off untrusted,
|
|
168
|
+
* possibly-older parsed JSON (`ManifestJSON` in `./codegen/docs-types.ts`,
|
|
169
|
+
* on disk as a published lexicon's `dist/manifest.json`) that may predate
|
|
170
|
+
* the required field. `undefined` there means the same thing it always
|
|
171
|
+
* did — not a tag — so the check below is intentionally unchanged.
|
|
172
|
+
*/
|
|
173
|
+
export declare function intrinsicFolds(def: {
|
|
174
|
+
isTag?: boolean;
|
|
175
|
+
}): boolean;
|
|
96
176
|
/**
|
|
97
177
|
* Options passed to a MigrationSource by `chant migrate`.
|
|
98
178
|
*/
|
package/dist/lexicon.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lexicon.d.ts","sourceRoot":"","sources":["../src/lexicon.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,YAAY,EAAE,SAAS,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC7H,OAAO,KAAK,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAChF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAIrD,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5E
|
|
1
|
+
{"version":3,"file":"lexicon.d.ts","sourceRoot":"","sources":["../src/lexicon.ts"],"names":[],"mappings":"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"}
|
|
@@ -61,6 +61,17 @@ export interface ReleaseRecord {
|
|
|
61
61
|
timestamp: string;
|
|
62
62
|
/** Who/what triggered the deploy (a username, a CI actor, a service account). */
|
|
63
63
|
actor: string;
|
|
64
|
+
/**
|
|
65
|
+
* Who approved the change at its durable approval gate (#1035). Populated for
|
|
66
|
+
* a gated change — the same identity the approver supplied when they cleared
|
|
67
|
+
* the Temporal gate (`chant run signal ... --approver`, carried in the gate
|
|
68
|
+
* signal payload and thus the workflow history). Optional and omitted for an
|
|
69
|
+
* ungated change (nothing to approve), so `actor` alone answers "who made
|
|
70
|
+
* it" while `approver` answers "who approved it" only where a gate exists.
|
|
71
|
+
* Distinct from `actor`: the approver is deliberately a different person than
|
|
72
|
+
* the one who triggered the deploy (separation of duties).
|
|
73
|
+
*/
|
|
74
|
+
approver?: string;
|
|
64
75
|
/** Optional: the archive's own manifest digest (../components/verbs/build-archive.ts's `manifestDigest`), when the caller has it — lets a reader recover full build contents/provenance, not just the promoted image digest. */
|
|
65
76
|
manifestDigest?: string;
|
|
66
77
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"release-ledger.d.ts","sourceRoot":"","sources":["../../src/lifecycle/release-ledger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAKH;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,4FAA4F;IAC5F,OAAO,EAAE,CAAC,CAAC;IACX,6FAA6F;IAC7F,SAAS,EAAE,MAAM,CAAC;IAClB,wCAAwC;IACxC,GAAG,EAAE,MAAM,CAAC;IACZ;;;;;;;OAOG;IACH,MAAM,EAAE,MAAM,CAAC;IACf,gDAAgD;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,iJAAiJ;IACjJ,KAAK,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB,iFAAiF;IACjF,KAAK,EAAE,MAAM,CAAC;IACd,gOAAgO;IAChO,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAaD,4KAA4K;AAC5K,qBAAa,yBAA0B,SAAQ,KAAK;aACtB,OAAO,EAAE,MAAM,EAAE;gBAAjB,OAAO,EAAE,MAAM,EAAE;CAI9C;AAED,yFAAyF;AACzF,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,MAAM,EAAE,CAO9E;AAED,gIAAgI;AAChI,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;AAEhE;;;;;;;;;GASG;AACH,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,kBAAkB,EACzB,IAAI,CAAC,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GACtB,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,aAAa,CAAA;CAAE,CAAC,CAQpD;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,MAAM,EACnB,IAAI,CAAC,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GACtB,OAAO,CAAC;IAAE,OAAO,EAAE,aAAa,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAiB1D;AAED,4EAA4E;AAC5E,wBAAsB,uBAAuB,CAAC,IAAI,CAAC,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAExF;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CASvF;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,aAAa,EAAE,CAE1F"}
|
|
1
|
+
{"version":3,"file":"release-ledger.d.ts","sourceRoot":"","sources":["../../src/lifecycle/release-ledger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAKH;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,4FAA4F;IAC5F,OAAO,EAAE,CAAC,CAAC;IACX,6FAA6F;IAC7F,SAAS,EAAE,MAAM,CAAC;IAClB,wCAAwC;IACxC,GAAG,EAAE,MAAM,CAAC;IACZ;;;;;;;OAOG;IACH,MAAM,EAAE,MAAM,CAAC;IACf,gDAAgD;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,iJAAiJ;IACjJ,KAAK,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB,iFAAiF;IACjF,KAAK,EAAE,MAAM,CAAC;IACd;;;;;;;;;OASG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gOAAgO;IAChO,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAaD,4KAA4K;AAC5K,qBAAa,yBAA0B,SAAQ,KAAK;aACtB,OAAO,EAAE,MAAM,EAAE;gBAAjB,OAAO,EAAE,MAAM,EAAE;CAI9C;AAED,yFAAyF;AACzF,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,MAAM,EAAE,CAO9E;AAED,gIAAgI;AAChI,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;AAEhE;;;;;;;;;GASG;AACH,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,kBAAkB,EACzB,IAAI,CAAC,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GACtB,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,aAAa,CAAA;CAAE,CAAC,CAQpD;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,MAAM,EACnB,IAAI,CAAC,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GACtB,OAAO,CAAC;IAAE,OAAO,EAAE,aAAa,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAiB1D;AAED,4EAA4E;AAC5E,wBAAsB,uBAAuB,CAAC,IAAI,CAAC,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAExF;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CASvF;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,aAAa,EAAE,CAE1F"}
|
|
@@ -86,8 +86,14 @@ export interface ComponentCheck {
|
|
|
86
86
|
* error under the pseudo-check id "COMP000" rather than silently dropped —
|
|
87
87
|
* matching how `discoverComponents`'s caller (`../components/cli-support.ts`)
|
|
88
88
|
* always surfaces `result.errors` rather than ignoring them.
|
|
89
|
+
*
|
|
90
|
+
* `sandbox` (chant #1051, `chant lint --sandbox`) is threaded straight
|
|
91
|
+
* through to `discoverComponents` — `chant lint`'s own AST-only rule engine
|
|
92
|
+
* never executes project source (see this module's own doc comment), but
|
|
93
|
+
* COMP* checks exist precisely because they need the discovered `Component`
|
|
94
|
+
* graph, which does mean importing `*.component.ts` files.
|
|
89
95
|
*/
|
|
90
|
-
export declare function runComponentChecks(path: string, checks: ComponentCheck[], registryContext?: Pick<ComponentCheckContext, "knownKinds" | "rollbackPolicies"
|
|
96
|
+
export declare function runComponentChecks(path: string, checks: ComponentCheck[], registryContext?: Pick<ComponentCheckContext, "knownKinds" | "rollbackPolicies">, sandbox?: boolean): Promise<ComponentCheckDiagnostic[]>;
|
|
91
97
|
/** Structural type guard, mirroring `isPostSynthCheck` — used by rule discovery/registry code. */
|
|
92
98
|
export declare function isComponentCheck(value: unknown): value is ComponentCheck;
|
|
93
99
|
/** Re-exported for rule modules that need the discovered shape without importing `../components/discover` directly. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component-checks.d.ts","sourceRoot":"","sources":["../../src/lint/component-checks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAElE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAEvC,wFAAwF;AACxF,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,mGAAmG;AACnG,MAAM,WAAW,qBAAqB;IACpC,6DAA6D;IAC7D,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAC7C;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACjC;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CACxD;AAED,2MAA2M;AAC3M,MAAM,WAAW,wBAAwB;IACvC,sEAAsE;IACtE,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,QAAQ,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,wFAAwF;IACxF,IAAI,EAAE,MAAM,CAAC;IACb,mDAAmD;IACnD,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,gFAAgF;AAChF,MAAM,WAAW,cAAc;IAC7B,yCAAyC;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,aAAa,GAAG,OAAO,GAAG,aAAa,GAAG,UAAU,CAAC;IAC/D,gDAAgD;IAChD,KAAK,CAAC,GAAG,EAAE,qBAAqB,GAAG,wBAAwB,EAAE,CAAC;CAC/D;AAED
|
|
1
|
+
{"version":3,"file":"component-checks.d.ts","sourceRoot":"","sources":["../../src/lint/component-checks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAElE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAEvC,wFAAwF;AACxF,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,mGAAmG;AACnG,MAAM,WAAW,qBAAqB;IACpC,6DAA6D;IAC7D,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAC7C;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACjC;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CACxD;AAED,2MAA2M;AAC3M,MAAM,WAAW,wBAAwB;IACvC,sEAAsE;IACtE,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,QAAQ,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,wFAAwF;IACxF,IAAI,EAAE,MAAM,CAAC;IACb,mDAAmD;IACnD,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,gFAAgF;AAChF,MAAM,WAAW,cAAc;IAC7B,yCAAyC;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,aAAa,GAAG,OAAO,GAAG,aAAa,GAAG,UAAU,CAAC;IAC/D,gDAAgD;IAChD,KAAK,CAAC,GAAG,EAAE,qBAAqB,GAAG,wBAAwB,EAAE,CAAC;CAC/D;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,cAAc,EAAE,EACxB,eAAe,CAAC,EAAE,IAAI,CAAC,qBAAqB,EAAE,YAAY,GAAG,kBAAkB,CAAC,EAChF,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,wBAAwB,EAAE,CAAC,CA+BrC;AAED,kGAAkG;AAClG,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAUxE;AAED,uHAAuH;AACvH,YAAY,EAAE,mBAAmB,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evl001-non-literal-expression.d.ts","sourceRoot":"","sources":["../../../src/lint/rules/evl001-non-literal-expression.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAA+B,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"evl001-non-literal-expression.d.ts","sourceRoot":"","sources":["../../../src/lint/rules/evl001-non-literal-expression.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAA+B,MAAM,SAAS,CAAC;AAsDrE,eAAO,MAAM,8BAA8B,EAAE,QAU5C,CAAC"}
|