@intentius/chant 0.124.21 → 0.124.22
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/codegen/docs-pages.d.ts +1 -0
- package/dist/codegen/docs-pages.d.ts.map +1 -1
- package/dist/codegen/docs-pages.js +1 -0
- package/dist/codegen/docs-sections.d.ts +2 -0
- package/dist/codegen/docs-sections.d.ts.map +1 -1
- package/dist/codegen/docs-sections.js +8 -0
- package/dist/codegen/docs-types.d.ts +7 -0
- package/dist/codegen/docs-types.d.ts.map +1 -1
- package/dist/codegen/docs.d.ts.map +1 -1
- package/dist/codegen/docs.js +20 -0
- package/dist/fold/subset.d.ts +3 -1
- package/dist/fold/subset.d.ts.map +1 -1
- package/dist/fold/subset.js +3 -1
- package/dist/lint/rules/evl004-spread-non-const.d.ts.map +1 -1
- package/dist/lint/rules/evl004-spread-non-const.js +19 -1
- package/dist/wave-runtime.mjs +81 -81
- package/package.json +1 -1
- package/src/codegen/docs-pages.ts +1 -0
- package/src/codegen/docs-sections.ts +8 -0
- package/src/codegen/docs-site/AgentPrompt.astro +153 -0
- package/src/codegen/docs-types.ts +7 -0
- package/src/codegen/docs.ts +27 -0
- package/src/fold/subset.ts +3 -1
- package/src/lint/rules/evl004-spread-non-const.test.ts +18 -0
- package/src/lint/rules/evl004-spread-non-const.ts +16 -1
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
* - `group`: a nested subgroup label inside the quadrant (e.g. "Vendor Composites").
|
|
17
17
|
* - `order`: number; lower sorts first within its group. Unordered pages follow, by label.
|
|
18
18
|
* - `hidden`: `true` keeps the page out of the sidebar (reachable by URL only).
|
|
19
|
+
* - `prompt`: optional `|` block; the agent prompt shown under the title. Kept.
|
|
19
20
|
*
|
|
20
21
|
* `group` / `order` / `hidden` / `label` are stripped from the written copy so
|
|
21
22
|
* Starlight's schema never sees them; `diataxis` stays, and the generated
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docs-pages.d.ts","sourceRoot":"","sources":["../../src/codegen/docs-pages.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"docs-pages.d.ts","sourceRoot":"","sources":["../../src/codegen/docs-pages.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAMH,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEtE,eAAO,MAAM,SAAS,EAAE,SAAS,QAAQ,EAAuD,CAAC;AAEjG,+DAA+D;AAC/D,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAKpD,CAAC;AAEF,MAAM,WAAW,YAAa,SAAQ,WAAW;IAC/C,qEAAqE;IACrE,IAAI,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,OAAO,EAAE,MAAM,CAAC;CACjB;AAyCD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,UAAU,GAAG,YAAY,EAAE,CA+CpE"}
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
* - `group`: a nested subgroup label inside the quadrant (e.g. "Vendor Composites").
|
|
17
17
|
* - `order`: number; lower sorts first within its group. Unordered pages follow, by label.
|
|
18
18
|
* - `hidden`: `true` keeps the page out of the sidebar (reachable by URL only).
|
|
19
|
+
* - `prompt`: optional `|` block; the agent prompt shown under the title. Kept.
|
|
19
20
|
*
|
|
20
21
|
* `group` / `order` / `hidden` / `label` are stripped from the written copy so
|
|
21
22
|
* Starlight's schema never sees them; `diataxis` stays, and the generated
|
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
* Each function produces a complete MDX page string with frontmatter.
|
|
5
5
|
*/
|
|
6
6
|
import type { DocsConfig, ManifestJSON, MetaEntry, RuleMeta } from "./docs-types.js";
|
|
7
|
+
/** A `prompt: |` block scalar for a page's front matter, or nothing. */
|
|
8
|
+
export declare function promptFrontmatter(prompt: string | undefined): string[];
|
|
7
9
|
export declare function generateOverview(config: DocsConfig, manifest: ManifestJSON, resources: Map<string, MetaEntry>, properties: Map<string, MetaEntry>, serviceGroups: Map<string, Map<string, MetaEntry>>, rules: RuleMeta[]): string;
|
|
8
10
|
export declare function generateIntrinsics(config: DocsConfig, manifest: ManifestJSON): string;
|
|
9
11
|
export declare function generatePseudoParameters(config: DocsConfig, manifest: ManifestJSON): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docs-sections.d.ts","sourceRoot":"","sources":["../../src/codegen/docs-sections.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAElF,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,UAAU,EAClB,QAAQ,EAAE,YAAY,EACtB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,EACjC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,EAClC,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,EAClD,KAAK,EAAE,QAAQ,EAAE,GAChB,MAAM,
|
|
1
|
+
{"version":3,"file":"docs-sections.d.ts","sourceRoot":"","sources":["../../src/codegen/docs-sections.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAElF,wEAAwE;AACxE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,EAAE,CAItE;AAED,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,UAAU,EAClB,QAAQ,EAAE,YAAY,EACtB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,EACjC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,EAClC,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,EAClD,KAAK,EAAE,QAAQ,EAAE,GAChB,MAAM,CA4DR;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,UAAU,EAClB,QAAQ,EAAE,YAAY,GACrB,MAAM,CA0BR;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,UAAU,EAClB,QAAQ,EAAE,YAAY,GACrB,MAAM,CAqBR;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAqBhE"}
|
|
@@ -5,11 +5,19 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { escapeMdx } from "./docs-file-markers.js";
|
|
7
7
|
import { intrinsicFolds } from "../lexicon.js";
|
|
8
|
+
/** A `prompt: |` block scalar for a page's front matter, or nothing. */
|
|
9
|
+
export function promptFrontmatter(prompt) {
|
|
10
|
+
const text = prompt?.trim();
|
|
11
|
+
if (!text)
|
|
12
|
+
return [];
|
|
13
|
+
return ["prompt: |", ...text.split("\n").map((line) => (line ? ` ${line}` : ""))];
|
|
14
|
+
}
|
|
8
15
|
export function generateOverview(config, manifest, resources, properties, serviceGroups, rules) {
|
|
9
16
|
const lines = [
|
|
10
17
|
"---",
|
|
11
18
|
`title: "${config.displayName}"`,
|
|
12
19
|
`description: "${config.description}"`,
|
|
20
|
+
...promptFrontmatter(config.prompt),
|
|
13
21
|
"---",
|
|
14
22
|
"",
|
|
15
23
|
config.overview ?? `Reference documentation for the **${config.displayName}** lexicon.`,
|
|
@@ -20,6 +20,13 @@ export interface DocsConfig {
|
|
|
20
20
|
packageJsonPath?: string;
|
|
21
21
|
/** Lexicon-specific overview content (markdown) */
|
|
22
22
|
overview?: string;
|
|
23
|
+
/**
|
|
24
|
+
* The overview page's agent prompt: "Optional: hand this page to your coding
|
|
25
|
+
* agent", shown under the title (docs-site/AgentPrompt.astro). Imperative
|
|
26
|
+
* steps, what to report back, and a line starting "Never". An authored page
|
|
27
|
+
* under `pagesDir` carries its own as a `prompt:` front-matter field.
|
|
28
|
+
*/
|
|
29
|
+
prompt?: string;
|
|
23
30
|
/** Output format description (e.g. "CloudFormation JSON template") */
|
|
24
31
|
outputFormat?: string;
|
|
25
32
|
/** Custom service grouping from resource type (e.g. "AWS::S3::Bucket" → "S3") */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docs-types.d.ts","sourceRoot":"","sources":["../../src/codegen/docs-types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,UAAU;IACzB,oDAAoD;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,WAAW,EAAE,MAAM,CAAC;IACpB,qDAAqD;IACrD,WAAW,EAAE,MAAM,CAAC;IACpB,qEAAqE;IACrE,OAAO,EAAE,MAAM,CAAC;IAChB,gDAAgD;IAChD,MAAM,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mDAAmD;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sEAAsE;IACtE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iFAAiF;IACjF,eAAe,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,MAAM,CAAC;IACnD,iDAAiD;IACjD,aAAa,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC1D,2EAA2E;IAC3E,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,uFAAuF;IACvF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8EAA8E;IAC9E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,+CAA+C;AAC/C,MAAM,MAAM,QAAQ,GAAG,UAAU,GAAG,QAAQ,GAAG,WAAW,GAAG,aAAa,CAAC;AAE3E,0EAA0E;AAC1E,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,QAAQ,CAAC;IACnB,iDAAiD;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+BAA+B;IAC/B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3B,+EAA+E;IAC/E,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,KAAK,EAAE;QACL,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,KAAK,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,0KAA0K;QAC1K,WAAW,CAAC,EAAE,OAAO,CAAC;KACvB,CAAC,CAAC;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,SAAS;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,UAAU,GAAG,UAAU,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9C,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,GAAG,YAAY,CAAC;CAC7B"}
|
|
1
|
+
{"version":3,"file":"docs-types.d.ts","sourceRoot":"","sources":["../../src/codegen/docs-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../../src/codegen/docs.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAWH,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAA0B,MAAM,cAAc,CAAC;AAGjG,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAClF,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAI7E;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,GAAG,MAAM,CAOjF;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAuI3D;AAyBD;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,MAAM,GACb,MAAM,GAAG,IAAI,CAIf;AAED;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,4BAA4B,CAAC;AAE9D;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAUtF;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GACtC,MAAM,EAAE,CAQV;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAQvE;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../../src/codegen/docs.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAWH,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAA0B,MAAM,cAAc,CAAC;AAGjG,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAClF,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAI7E;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,GAAG,MAAM,CAOjF;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAuI3D;AAyBD;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,MAAM,GACb,MAAM,GAAG,IAAI,CAIf;AAED;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,4BAA4B,CAAC;AAE9D;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAUtF;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GACtC,MAAM,EAAE,CAQV;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAQvE;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAsK1E"}
|
package/dist/codegen/docs.js
CHANGED
|
@@ -326,6 +326,13 @@ export const collections = {
|
|
|
326
326
|
extend: z.object({
|
|
327
327
|
// Diátaxis quadrant (https://diataxis.fr), chant #1731.
|
|
328
328
|
diataxis: z.enum(['tutorial', 'how-to', 'reference', 'explanation']).optional(),
|
|
329
|
+
// "Optional: hand this page to your coding agent", shown under the
|
|
330
|
+
// title by src/components/AgentPrompt.astro. It has to say what the
|
|
331
|
+
// agent must never do.
|
|
332
|
+
prompt: z
|
|
333
|
+
.string()
|
|
334
|
+
.optional()
|
|
335
|
+
.refine((p) => !p || /^Never\\b/m.test(p), 'a prompt needs a line that starts with "Never" (what the agent must not do)'),
|
|
329
336
|
}),
|
|
330
337
|
}),
|
|
331
338
|
}),
|
|
@@ -335,6 +342,18 @@ export const collections = {
|
|
|
335
342
|
// without the generated docs site needing a workspace dep on @intentius/chant.
|
|
336
343
|
const pluginSrcPath = fileURLToPath(new URL("./rehype-base-url.mjs", import.meta.url));
|
|
337
344
|
copyFileSync(pluginSrcPath, join(outDir, "src", "rehype-base-url.mjs"));
|
|
345
|
+
// src/components/: the agent prompt card from chant core, and a PageTitle
|
|
346
|
+
// override that puts it under Starlight's title on every page with a `prompt:`.
|
|
347
|
+
mkdirSync(join(outDir, "src", "components"), { recursive: true });
|
|
348
|
+
copyFileSync(fileURLToPath(new URL("./docs-site/AgentPrompt.astro", import.meta.url)), join(outDir, "src", "components", "AgentPrompt.astro"));
|
|
349
|
+
writeFileSync(join(outDir, "src", "components", "PageTitle.astro"), `---
|
|
350
|
+
// Generated by chant's writeDocsSite. Starlight's page title, then the page's agent prompt.
|
|
351
|
+
import Default from '@astrojs/starlight/components/PageTitle.astro';
|
|
352
|
+
import AgentPrompt from './AgentPrompt.astro';
|
|
353
|
+
---
|
|
354
|
+
<Default />
|
|
355
|
+
<AgentPrompt />
|
|
356
|
+
`);
|
|
338
357
|
// astro.config.mjs
|
|
339
358
|
const rehypeLine = config.basePath
|
|
340
359
|
? `\n markdown: {\n rehypePlugins: [[rehypeBaseUrl, { base: '${config.basePath}', projectBase: '/chant' }]],\n },`
|
|
@@ -348,6 +367,7 @@ export default defineConfig({${config.basePath ? `\n base: '${config.basePath}'
|
|
|
348
367
|
integrations: [
|
|
349
368
|
starlight({
|
|
350
369
|
title: '${config.displayName}',
|
|
370
|
+
components: { PageTitle: './src/components/PageTitle.astro' },
|
|
351
371
|
sidebar: ${JSON.stringify(sidebar, null, 6).replace(/\n/g, "\n ")},
|
|
352
372
|
}),
|
|
353
373
|
],
|
package/dist/fold/subset.d.ts
CHANGED
|
@@ -139,7 +139,9 @@ import { type IntrinsicDef } from "../lexicon.js";
|
|
|
139
139
|
* (`{...n}`) is shape-valid (`n` is a plain identifier) but `fold()`
|
|
140
140
|
* rejects it once it discovers `n` folds to a number, not an object.
|
|
141
141
|
* Only real evaluation catches this; EVL004 independently narrows
|
|
142
|
-
* spread sources to a stricter "traceable to a const" shape
|
|
142
|
+
* spread sources to a stricter "traceable to a const" shape (a const
|
|
143
|
+
* declared in the file, or an imported binding, which fold() resolves
|
|
144
|
+
* from the exporting module's folded value), which
|
|
143
145
|
* catches most real-world misuse without evaluating, but is not a
|
|
144
146
|
* full substitute.
|
|
145
147
|
*
|
|
@@ -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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0KG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyEG;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;AAMD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,CAoDpF;AAgCD,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,CAkO7B"}
|
package/dist/fold/subset.js
CHANGED
|
@@ -140,7 +140,9 @@ import { intrinsicCallFolds, intrinsicCallFoldsEagerly } from "../lexicon.js";
|
|
|
140
140
|
* (`{...n}`) is shape-valid (`n` is a plain identifier) but `fold()`
|
|
141
141
|
* rejects it once it discovers `n` folds to a number, not an object.
|
|
142
142
|
* Only real evaluation catches this; EVL004 independently narrows
|
|
143
|
-
* spread sources to a stricter "traceable to a const" shape
|
|
143
|
+
* spread sources to a stricter "traceable to a const" shape (a const
|
|
144
|
+
* declared in the file, or an imported binding, which fold() resolves
|
|
145
|
+
* from the exporting module's folded value), which
|
|
144
146
|
* catches most real-world misuse without evaluating, but is not a
|
|
145
147
|
* full substitute.
|
|
146
148
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evl004-spread-non-const.d.ts","sourceRoot":"","sources":["../../../src/lint/rules/evl004-spread-non-const.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAA+B,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"evl004-spread-non-const.d.ts","sourceRoot":"","sources":["../../../src/lint/rules/evl004-spread-non-const.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAA+B,MAAM,SAAS,CAAC;AAmHrE,eAAO,MAAM,wBAAwB,EAAE,QAUtC,CAAC"}
|
|
@@ -6,6 +6,11 @@ import { isInsideCompositeFactory } from "./composite-scope.js";
|
|
|
6
6
|
* Spread expressions ({...x} or [...x]) must reference a const-declared
|
|
7
7
|
* variable, object literal, or property access chain from a const.
|
|
8
8
|
* Spreading from function calls or non-traceable sources is blocked.
|
|
9
|
+
*
|
|
10
|
+
* A binding imported from another module counts as const: an import can't
|
|
11
|
+
* be reassigned, and sharing an exported const (a preset, a list of
|
|
12
|
+
* Dockerfile steps) across modules is the point of exporting it. Whether the
|
|
13
|
+
* exporting module declared it `const` is that module's own EVL concern.
|
|
9
14
|
*/
|
|
10
15
|
function isTraceableToConst(node, sourceFile) {
|
|
11
16
|
// Object or array literals are fine
|
|
@@ -31,8 +36,21 @@ function isTraceableToConst(node, sourceFile) {
|
|
|
31
36
|
return false;
|
|
32
37
|
}
|
|
33
38
|
function isConstIdentifier(id, sourceFile) {
|
|
34
|
-
// Walk all statements looking for a const declaration of this identifier
|
|
39
|
+
// Walk all statements looking for a const declaration or an import of this identifier
|
|
35
40
|
for (const stmt of sourceFile.statements) {
|
|
41
|
+
if (ts.isImportDeclaration(stmt) && stmt.importClause && !stmt.importClause.isTypeOnly) {
|
|
42
|
+
const clause = stmt.importClause;
|
|
43
|
+
if (clause.name?.text === id.text)
|
|
44
|
+
return true;
|
|
45
|
+
const bindings = clause.namedBindings;
|
|
46
|
+
if (bindings && ts.isNamedImports(bindings)) {
|
|
47
|
+
if (bindings.elements.some((el) => !el.isTypeOnly && el.name.text === id.text))
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
else if (bindings && ts.isNamespaceImport(bindings) && bindings.name.text === id.text) {
|
|
51
|
+
return true;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
36
54
|
if (ts.isVariableStatement(stmt)) {
|
|
37
55
|
if (stmt.declarationList.flags & ts.NodeFlags.Const) {
|
|
38
56
|
for (const decl of stmt.declarationList.declarations) {
|