@caelo-cms/shared 0.10.71 → 0.11.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/ai-tools.d.ts +125 -50
- package/dist/ai-tools.d.ts.map +1 -1
- package/dist/ai-tools.js +50 -38
- package/dist/ai-tools.js.map +1 -1
- package/dist/build-page.d.ts +110 -30
- package/dist/build-page.d.ts.map +1 -1
- package/dist/build-page.js +26 -7
- package/dist/build-page.js.map +1 -1
- package/dist/content.d.ts +203 -102
- package/dist/content.d.ts.map +1 -1
- package/dist/content.js +178 -76
- package/dist/content.js.map +1 -1
- package/dist/css-var-aliases.d.ts +20 -0
- package/dist/css-var-aliases.d.ts.map +1 -0
- package/dist/css-var-aliases.js +95 -0
- package/dist/css-var-aliases.js.map +1 -0
- package/dist/css-var-scan.d.ts +0 -16
- package/dist/css-var-scan.d.ts.map +1 -1
- package/dist/css-var-scan.js +24 -0
- package/dist/css-var-scan.js.map +1 -1
- package/dist/edit-markers.d.ts +41 -5
- package/dist/edit-markers.d.ts.map +1 -1
- package/dist/edit-markers.js +47 -50
- package/dist/edit-markers.js.map +1 -1
- package/dist/id-safe-truncate.d.ts +15 -0
- package/dist/id-safe-truncate.d.ts.map +1 -0
- package/dist/id-safe-truncate.js +47 -0
- package/dist/id-safe-truncate.js.map +1 -0
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/interactions.js +2 -2
- package/dist/interactions.js.map +1 -1
- package/dist/link-canonicalise.d.ts.map +1 -1
- package/dist/link-canonicalise.js +7 -1
- package/dist/link-canonicalise.js.map +1 -1
- package/dist/link-refs.d.ts +1 -1
- package/dist/link-refs.js +3 -3
- package/dist/lists/address.d.ts +34 -0
- package/dist/lists/address.d.ts.map +1 -0
- package/dist/lists/address.js +43 -0
- package/dist/lists/address.js.map +1 -0
- package/dist/lists/default-types.d.ts +10 -0
- package/dist/lists/default-types.d.ts.map +1 -0
- package/dist/lists/default-types.js +91 -0
- package/dist/lists/default-types.js.map +1 -0
- package/dist/lists/fields.d.ts +152 -0
- package/dist/lists/fields.d.ts.map +1 -0
- package/dist/lists/fields.js +258 -0
- package/dist/lists/fields.js.map +1 -0
- package/dist/lists/index.d.ts +14 -0
- package/dist/lists/index.d.ts.map +1 -0
- package/dist/lists/index.js +15 -0
- package/dist/lists/index.js.map +1 -0
- package/dist/lists/item-attr.d.ts +26 -0
- package/dist/lists/item-attr.d.ts.map +1 -0
- package/dist/lists/item-attr.js +31 -0
- package/dist/lists/item-attr.js.map +1 -0
- package/dist/lists/items.d.ts +105 -0
- package/dist/lists/items.d.ts.map +1 -0
- package/dist/lists/items.js +304 -0
- package/dist/lists/items.js.map +1 -0
- package/dist/lists/list-type.d.ts +401 -0
- package/dist/lists/list-type.d.ts.map +1 -0
- package/dist/lists/list-type.js +275 -0
- package/dist/lists/list-type.js.map +1 -0
- package/dist/lists/model.d.ts +14 -0
- package/dist/lists/model.d.ts.map +1 -0
- package/dist/lists/model.js +15 -0
- package/dist/lists/model.js.map +1 -0
- package/dist/lists/page-type.d.ts +115 -0
- package/dist/lists/page-type.d.ts.map +1 -0
- package/dist/lists/page-type.js +66 -0
- package/dist/lists/page-type.js.map +1 -0
- package/dist/lists/refs.d.ts +13 -0
- package/dist/lists/refs.d.ts.map +1 -0
- package/dist/lists/refs.js +18 -0
- package/dist/lists/refs.js.map +1 -0
- package/dist/lists/render-data.d.ts +114 -0
- package/dist/lists/render-data.d.ts.map +1 -0
- package/dist/lists/render-data.js +3 -0
- package/dist/lists/render-data.js.map +1 -0
- package/dist/lists/render-deps.d.ts +68 -0
- package/dist/lists/render-deps.d.ts.map +1 -0
- package/dist/lists/render-deps.js +91 -0
- package/dist/lists/render-deps.js.map +1 -0
- package/dist/lists/resolve-values.d.ts +63 -0
- package/dist/lists/resolve-values.d.ts.map +1 -0
- package/dist/lists/resolve-values.js +181 -0
- package/dist/lists/resolve-values.js.map +1 -0
- package/dist/lists/resolve.d.ts +106 -0
- package/dist/lists/resolve.d.ts.map +1 -0
- package/dist/lists/resolve.js +878 -0
- package/dist/lists/resolve.js.map +1 -0
- package/dist/lists/scope.d.ts +81 -0
- package/dist/lists/scope.d.ts.map +1 -0
- package/dist/lists/scope.js +3 -0
- package/dist/lists/scope.js.map +1 -0
- package/dist/markup-structure.d.ts +8 -0
- package/dist/markup-structure.d.ts.map +1 -1
- package/dist/markup-structure.js +2 -0
- package/dist/markup-structure.js.map +1 -1
- package/dist/media.d.ts +1 -1
- package/dist/nested-module-render.d.ts +25 -20
- package/dist/nested-module-render.d.ts.map +1 -1
- package/dist/nested-module-render.js +122 -31
- package/dist/nested-module-render.js.map +1 -1
- package/dist/page-log.d.ts +1 -1
- package/dist/preview-compose.d.ts +24 -21
- package/dist/preview-compose.d.ts.map +1 -1
- package/dist/preview-compose.js +34 -118
- package/dist/preview-compose.js.map +1 -1
- package/dist/preview-scanner.d.ts +5 -2
- package/dist/preview-scanner.d.ts.map +1 -1
- package/dist/preview-scanner.js +5 -3
- package/dist/preview-scanner.js.map +1 -1
- package/dist/source-text-transport.d.ts +17 -0
- package/dist/source-text-transport.d.ts.map +1 -0
- package/dist/source-text-transport.js +71 -0
- package/dist/source-text-transport.js.map +1 -0
- package/dist/template-engine.d.ts +44 -31
- package/dist/template-engine.d.ts.map +1 -1
- package/dist/template-engine.js +75 -174
- package/dist/template-engine.js.map +1 -1
- package/dist/template-sections.d.ts +69 -0
- package/dist/template-sections.d.ts.map +1 -0
- package/dist/template-sections.js +423 -0
- package/dist/template-sections.js.map +1 -0
- package/dist/uuid-diagnose.d.ts +9 -0
- package/dist/uuid-diagnose.d.ts.map +1 -0
- package/dist/uuid-diagnose.js +47 -0
- package/dist/uuid-diagnose.js.map +1 -0
- package/dist/version.d.ts +2 -2
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/package.json +8 -1
- package/src/__tests__/redos-hardening.test.ts +50 -16
- package/src/ai-tools-add-module-modes.test.ts +50 -0
- package/src/ai-tools.test.ts +10 -0
- package/src/ai-tools.ts +53 -39
- package/src/build-page.test.ts +34 -3
- package/src/build-page.ts +29 -6
- package/src/content.test.ts +111 -3
- package/src/content.ts +188 -77
- package/src/css-var-aliases.test.ts +61 -0
- package/src/css-var-aliases.ts +109 -0
- package/src/css-var-scan.ts +9 -0
- package/src/edit-markers.test.ts +37 -21
- package/src/edit-markers.ts +52 -20
- package/src/id-safe-truncate.test.ts +35 -0
- package/src/id-safe-truncate.ts +46 -0
- package/src/index.ts +5 -1
- package/src/interactions.ts +2 -2
- package/src/link-canonicalise.test.ts +36 -6
- package/src/link-canonicalise.ts +6 -1
- package/src/link-refs.test.ts +66 -42
- package/src/link-refs.ts +3 -3
- package/src/lists/address.ts +75 -0
- package/src/lists/default-types.ts +102 -0
- package/src/lists/fields.ts +285 -0
- package/src/lists/index.ts +16 -0
- package/src/lists/item-attr.test.ts +36 -0
- package/src/lists/item-attr.ts +49 -0
- package/src/lists/items.ts +402 -0
- package/src/lists/list-fixtures.test.ts +302 -0
- package/src/lists/list-type.ts +306 -0
- package/src/lists/lists.test.ts +328 -0
- package/src/lists/model.ts +16 -0
- package/src/lists/page-type.ts +71 -0
- package/src/lists/refs.ts +21 -0
- package/src/lists/render-data.ts +125 -0
- package/src/lists/render-deps.test.ts +132 -0
- package/src/lists/render-deps.ts +144 -0
- package/src/lists/resolve-values.ts +224 -0
- package/src/lists/resolve.test.ts +295 -0
- package/src/lists/resolve.ts +1148 -0
- package/src/lists/scope.ts +69 -0
- package/src/lists-compose-parity.test.ts +262 -0
- package/src/markup-structure.ts +10 -0
- package/src/nested-module-render.test.ts +111 -77
- package/src/nested-module-render.ts +85 -48
- package/src/preview-compose.test.ts +74 -19
- package/src/preview-compose.ts +59 -154
- package/src/preview-scanner.test.ts +8 -4
- package/src/preview-scanner.ts +5 -3
- package/src/source-text-transport.test.ts +63 -0
- package/src/source-text-transport.ts +70 -0
- package/src/template-engine-lists.test.ts +553 -0
- package/src/template-engine.test.ts +62 -80
- package/src/template-engine.ts +102 -245
- package/src/template-sections.ts +500 -0
- package/src/uuid-diagnose.test.ts +28 -0
- package/src/uuid-diagnose.ts +50 -0
- package/src/version.ts +1 -1
- package/dist/structured-sets.d.ts +0 -70
- package/dist/structured-sets.d.ts.map +0 -1
- package/dist/structured-sets.js +0 -92
- package/dist/structured-sets.js.map +0 -1
- package/src/structured-sets.ts +0 -114
- package/src/template-engine-data-lists.test.ts +0 -90
package/dist/content.js
CHANGED
|
@@ -9,6 +9,9 @@
|
|
|
9
9
|
* trying to set `html` on a page fails Zod parse before any handler runs.
|
|
10
10
|
*/
|
|
11
11
|
import { z } from "zod";
|
|
12
|
+
import { listItemInputSchema } from "./lists/items.js";
|
|
13
|
+
import { LIST_MAX_ITEMS, sourceDefSchema } from "./lists/list-type.js";
|
|
14
|
+
import { LIST_REF_RE } from "./lists/refs.js";
|
|
12
15
|
/** Lowercase slug, hyphenated, 1–64 chars, no leading/trailing hyphen. */
|
|
13
16
|
export const slugSchema = z
|
|
14
17
|
.string()
|
|
@@ -74,7 +77,52 @@ export const MODULE_CSS_MAX = 128 * 1024;
|
|
|
74
77
|
export const MODULE_JS_MAX = 256 * 1024;
|
|
75
78
|
export const TEMPLATE_HTML_MAX = 512 * 1024;
|
|
76
79
|
export const TEMPLATE_CSS_MAX = 128 * 1024;
|
|
77
|
-
|
|
80
|
+
/**
|
|
81
|
+
* Code payloads a model sometimes corrupts before they reach us, both seen
|
|
82
|
+
* in PR #1121's real-AI runs and stored verbatim before this guard:
|
|
83
|
+
* - JSON-encoded: the whole value wrapped in quotes with `\"` escapes
|
|
84
|
+
* (`"<footer class=\"x\">…"`) — the page showed literal quotes;
|
|
85
|
+
* - HTML-escaped markup: `<div><caelo-slot …` with no real tag
|
|
86
|
+
* — a template without a single slot, so it had no blocks at all.
|
|
87
|
+
* Refusing at the write boundary with the fix turns a broken render the
|
|
88
|
+
* AI only notices from a screenshot into one corrected call (CLAUDE.md
|
|
89
|
+
* §2, §11; same reasoning as the CDATA guard below). AI tool arguments
|
|
90
|
+
* never reach this in that shape: `sourceTextArg` decodes both encodings
|
|
91
|
+
* first (`source-text-transport.ts`); this guards every other writer.
|
|
92
|
+
*/
|
|
93
|
+
export function jsonEncodedCodeMessage(field, value) {
|
|
94
|
+
const t = value.trim();
|
|
95
|
+
if (t.length < 2 || !t.startsWith('"') || !t.endsWith('"'))
|
|
96
|
+
return null;
|
|
97
|
+
try {
|
|
98
|
+
if (typeof JSON.parse(t) !== "string")
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
return null;
|
|
103
|
+
}
|
|
104
|
+
return `${field} is JSON-encoded (wrapped in quotes with \\" escapes) — send the raw ${field} itself, not a JSON string of it.`;
|
|
105
|
+
}
|
|
106
|
+
/** See {@link jsonEncodedCodeMessage}: markup sent HTML-escaped. */
|
|
107
|
+
export function htmlEscapedMarkupMessage(field, value) {
|
|
108
|
+
if (value.includes("<") || !/<\/?[a-zA-Z]/.test(value))
|
|
109
|
+
return null;
|
|
110
|
+
return `${field} is HTML-escaped (<…> instead of <…>) — send the markup itself, unescaped.`;
|
|
111
|
+
}
|
|
112
|
+
const noCorruptMarkup = (field) => (value, ctx) => {
|
|
113
|
+
const message = jsonEncodedCodeMessage(field, value) ?? htmlEscapedMarkupMessage(field, value);
|
|
114
|
+
if (message)
|
|
115
|
+
ctx.addIssue({ code: "custom", message });
|
|
116
|
+
};
|
|
117
|
+
const noJsonEncodedCode = (field) => (value, ctx) => {
|
|
118
|
+
const message = jsonEncodedCodeMessage(field, value);
|
|
119
|
+
if (message)
|
|
120
|
+
ctx.addIssue({ code: "custom", message });
|
|
121
|
+
};
|
|
122
|
+
const moduleHtml = z
|
|
123
|
+
.string()
|
|
124
|
+
.max(MODULE_HTML_MAX, `html exceeds ${MODULE_HTML_MAX} bytes`)
|
|
125
|
+
.superRefine(noCorruptMarkup("html"));
|
|
78
126
|
/**
|
|
79
127
|
* issue #432 root-cause guard — reject XML CDATA wrappers in module css/js.
|
|
80
128
|
*
|
|
@@ -100,11 +148,13 @@ const cdataMessage = (field) => `${field} contains an XML CDATA marker (${CDATA_
|
|
|
100
148
|
const moduleCss = z
|
|
101
149
|
.string()
|
|
102
150
|
.max(MODULE_CSS_MAX, `css exceeds ${MODULE_CSS_MAX} bytes`)
|
|
103
|
-
.refine(noCdata, cdataMessage("css"))
|
|
151
|
+
.refine(noCdata, cdataMessage("css"))
|
|
152
|
+
.superRefine(noJsonEncodedCode("css"));
|
|
104
153
|
const moduleJs = z
|
|
105
154
|
.string()
|
|
106
155
|
.max(MODULE_JS_MAX, `js exceeds ${MODULE_JS_MAX} bytes`)
|
|
107
|
-
.refine(noCdata, cdataMessage("js"))
|
|
156
|
+
.refine(noCdata, cdataMessage("js"))
|
|
157
|
+
.superRefine(noJsonEncodedCode("js"));
|
|
108
158
|
/**
|
|
109
159
|
* v0.4.0 — module field schema. Each field declares one substitution slot in
|
|
110
160
|
* the module's templated HTML (`{{fieldName}}`) and the kind of content it
|
|
@@ -137,27 +187,27 @@ export const MODULE_FIELD_PRIMITIVE_KINDS = [
|
|
|
137
187
|
"link",
|
|
138
188
|
];
|
|
139
189
|
/**
|
|
140
|
-
*
|
|
141
|
-
*
|
|
142
|
-
*
|
|
143
|
-
*
|
|
144
|
-
*
|
|
145
|
-
* Use `text-list` for "list of strings" — menu labels, tag chips,
|
|
146
|
-
* bullet points where each item is just text. Inner template
|
|
147
|
-
* references `{{.}}` (Mustache convention) or `{{item}}` to mean
|
|
148
|
-
* the current element.
|
|
190
|
+
* Epic #1107 — the data-list field kind (`docs/lists.md` §7). One kind
|
|
191
|
+
* for every repeated piece of data: feature bullets, a footer link group,
|
|
192
|
+
* a three-level menu, a mega dropdown, a "latest news" block. The entry
|
|
193
|
+
* shape comes from a LIST TYPE (`listType`, a slug); the entries come from
|
|
194
|
+
* the field's binding:
|
|
149
195
|
*
|
|
150
|
-
*
|
|
151
|
-
*
|
|
152
|
-
*
|
|
196
|
+
* - `local` (default) — entries stored in the placement's value
|
|
197
|
+
* (`ListItem[]`), only this module shows them;
|
|
198
|
+
* - `shared` — a `caelo:list/<id>` list, fixed on the field (`list`) or
|
|
199
|
+
* chosen per placement; navigation and anything needed in
|
|
200
|
+
* more than one place;
|
|
201
|
+
* - `source` — entries generated per page from `source` (a page query,
|
|
202
|
+
* a system source like breadcrumbs, a plugin source).
|
|
153
203
|
*
|
|
154
|
-
*
|
|
155
|
-
*
|
|
156
|
-
*
|
|
204
|
+
* The template iterates `{{#field}}…{{/field}}` the same way for every
|
|
205
|
+
* binding. `module-list` stays: it composes modules, lists carry data.
|
|
206
|
+
* Replaces the `text-list` / `link-list` kinds.
|
|
157
207
|
*/
|
|
158
|
-
export const MODULE_FIELD_LIST_KINDS = ["
|
|
208
|
+
export const MODULE_FIELD_LIST_KINDS = ["list"];
|
|
159
209
|
export const MODULE_FIELD_NESTED_KINDS = ["module", "module-list"];
|
|
160
|
-
/**
|
|
210
|
+
/** Every module field kind. */
|
|
161
211
|
export const MODULE_FIELD_KINDS = [
|
|
162
212
|
...MODULE_FIELD_PRIMITIVE_KINDS,
|
|
163
213
|
...MODULE_FIELD_LIST_KINDS,
|
|
@@ -165,10 +215,9 @@ export const MODULE_FIELD_KINDS = [
|
|
|
165
215
|
];
|
|
166
216
|
/**
|
|
167
217
|
* Field kinds the shared template engine iterates via the
|
|
168
|
-
* `{{#name}}…{{/name}}` Mustache-section operator
|
|
169
|
-
* list
|
|
170
|
-
*
|
|
171
|
-
* keys off it (`packages/shared/src/template-engine.ts`).
|
|
218
|
+
* `{{#name}}…{{/name}}` Mustache-section operator (`list` and
|
|
219
|
+
* `module-list`); the engine's section-dispatch keys off it
|
|
220
|
+
* (`packages/shared/src/template-engine.ts`).
|
|
172
221
|
*/
|
|
173
222
|
export const MODULE_FIELD_SECTION_KINDS = [...MODULE_FIELD_LIST_KINDS, "module-list"];
|
|
174
223
|
const moduleFieldName = z.string().regex(/^[a-z][a-z0-9_]{0,63}$/, "name must be snake_case");
|
|
@@ -215,41 +264,72 @@ const moduleFieldModuleListSchema = z
|
|
|
215
264
|
})
|
|
216
265
|
.strict();
|
|
217
266
|
/**
|
|
218
|
-
*
|
|
219
|
-
* the
|
|
220
|
-
* is
|
|
221
|
-
*
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
name: moduleFieldName,
|
|
226
|
-
kind: z.literal("text-list"),
|
|
227
|
-
label: moduleFieldLabel,
|
|
228
|
-
min: z.number().int().nonnegative().optional(),
|
|
229
|
-
max: z.number().int().positive().max(256).optional(),
|
|
230
|
-
default: z.array(z.string()).optional(),
|
|
231
|
-
})
|
|
232
|
-
.strict();
|
|
233
|
-
/**
|
|
234
|
-
* v0.12.0 — list-of-{label,href} field. Inner template uses
|
|
235
|
-
* `{{label}}` + `{{href}}` per iteration. Targets the common
|
|
236
|
-
* primary-nav / footer-column / sidebar-menu pattern without
|
|
237
|
-
* forcing a sub-module per link.
|
|
267
|
+
* Epic #1107 — a `list` field (`docs/lists.md` §7). The static schema
|
|
268
|
+
* checks the SHAPE: the binding's parts fit together and a local default
|
|
269
|
+
* is well-formed entries. Whether those entries fit the named list type
|
|
270
|
+
* (nodes, fields, depth) needs the type, which is stored data — the op
|
|
271
|
+
* layer validates that with `validateListItems` when the module is
|
|
272
|
+
* written, and the renderer reports `list-type-missing:<slug>` for a type
|
|
273
|
+
* that is gone.
|
|
238
274
|
*/
|
|
239
|
-
const
|
|
275
|
+
const moduleFieldListSchema = z
|
|
240
276
|
.object({
|
|
241
277
|
name: moduleFieldName,
|
|
242
|
-
kind: z.literal("
|
|
278
|
+
kind: z.literal("list"),
|
|
243
279
|
label: moduleFieldLabel,
|
|
280
|
+
/** Slug of the list type that defines the entries. */
|
|
281
|
+
listType: slugSchema,
|
|
282
|
+
bind: z.enum(["local", "shared", "source"]).optional(),
|
|
283
|
+
/** `bind: "shared"` — fix the list for every placement (`caelo:list/<id>`). */
|
|
284
|
+
list: z.string().regex(LIST_REF_RE, "list must be caelo:list/<id>").optional(),
|
|
285
|
+
/** `bind: "source"` — where generated entries come from. */
|
|
286
|
+
source: sourceDefSchema.optional(),
|
|
244
287
|
min: z.number().int().nonnegative().optional(),
|
|
245
|
-
max: z.number().int().positive().max(
|
|
246
|
-
|
|
288
|
+
max: z.number().int().positive().max(LIST_MAX_ITEMS).optional(),
|
|
289
|
+
/** `local`: entries; `shared`: `caelo:list/<id>`. */
|
|
290
|
+
default: z
|
|
291
|
+
.union([
|
|
292
|
+
z.array(listItemInputSchema),
|
|
293
|
+
z.string().regex(LIST_REF_RE, "a shared default must be caelo:list/<id>"),
|
|
294
|
+
])
|
|
295
|
+
.optional(),
|
|
247
296
|
})
|
|
248
297
|
.strict();
|
|
298
|
+
/** Binding consistency of one `list` field; every problem, AI-actionable. */
|
|
299
|
+
function listFieldIssues(f) {
|
|
300
|
+
const bind = f.bind ?? "local";
|
|
301
|
+
const issues = [];
|
|
302
|
+
if (bind === "source" && f.source === undefined) {
|
|
303
|
+
issues.push(`list field "${f.name}": bind "source" needs a source (query, system or plugin).`);
|
|
304
|
+
}
|
|
305
|
+
if (bind !== "source" && f.source !== undefined) {
|
|
306
|
+
issues.push(`list field "${f.name}": source is only allowed with bind "source".`);
|
|
307
|
+
}
|
|
308
|
+
if (bind === "local" && f.list !== undefined) {
|
|
309
|
+
issues.push(`list field "${f.name}": list is only allowed with bind "shared" — a local list stores its entries in the placement.`);
|
|
310
|
+
}
|
|
311
|
+
if (bind === "source" && f.list !== undefined && f.source?.kind !== "system") {
|
|
312
|
+
issues.push(`list field "${f.name}": list on a source field names the vocabulary of a page_terms source only.`);
|
|
313
|
+
}
|
|
314
|
+
if (f.default !== undefined) {
|
|
315
|
+
if (bind === "local" && typeof f.default === "string") {
|
|
316
|
+
issues.push(`list field "${f.name}": a local default is an array of entries, not a list reference.`);
|
|
317
|
+
}
|
|
318
|
+
if (bind === "shared" && Array.isArray(f.default)) {
|
|
319
|
+
issues.push(`list field "${f.name}": a shared default is caelo:list/<id> — create the list with upsert_lists_many first.`);
|
|
320
|
+
}
|
|
321
|
+
if (bind === "source") {
|
|
322
|
+
issues.push(`list field "${f.name}": a source field has no default; its entries are generated.`);
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
if (f.min !== undefined && f.max !== undefined && f.min > f.max) {
|
|
326
|
+
issues.push(`list field "${f.name}": min is greater than max.`);
|
|
327
|
+
}
|
|
328
|
+
return issues;
|
|
329
|
+
}
|
|
249
330
|
export const moduleFieldSchema = z.discriminatedUnion("kind", [
|
|
250
331
|
moduleFieldPrimitiveSchema,
|
|
251
|
-
|
|
252
|
-
moduleFieldLinkListSchema,
|
|
332
|
+
moduleFieldListSchema,
|
|
253
333
|
moduleFieldModuleSchema,
|
|
254
334
|
moduleFieldModuleListSchema,
|
|
255
335
|
]);
|
|
@@ -322,14 +402,20 @@ const moduleFieldsArray = z
|
|
|
322
402
|
return;
|
|
323
403
|
}
|
|
324
404
|
seen.add(f.name);
|
|
405
|
+
if (f.kind === "list") {
|
|
406
|
+
for (const message of listFieldIssues(f)) {
|
|
407
|
+
ctx.addIssue({ code: z.ZodIssueCode.custom, message });
|
|
408
|
+
}
|
|
409
|
+
}
|
|
325
410
|
}
|
|
326
411
|
for (const run of findNumberedScalarFanoutRuns(arr)) {
|
|
327
412
|
ctx.addIssue({
|
|
328
413
|
code: z.ZodIssueCode.custom,
|
|
329
414
|
message: `numbered-scalar fanout: ${run.map((n) => `"${n}"`).join(", ")} repeat one role as ` +
|
|
330
415
|
"numbered scalar fields — repeating content is ONE list field, never numbered scalars " +
|
|
331
|
-
'(CLAUDE.md §1A). Replace the run with a single field: kind "
|
|
332
|
-
'strings
|
|
416
|
+
'(CLAUDE.md §1A). Replace the run with a single field: kind "list" with a list type ' +
|
|
417
|
+
'(listType "texts" for plain strings — the template iterates {{#f}}{{text}}{{/f}}; ' +
|
|
418
|
+
'"links" for label + link — {{#f}}<a href="{{link}}">{{label}}</a>{{/f}}), or ' +
|
|
333
419
|
'"module-list" (rich per-item structure: mint a card sub-module and reference it per ' +
|
|
334
420
|
"item — in build_page, author the card detached with `ref` and pass " +
|
|
335
421
|
'[{"$ref": "<ref>"}, …] as the field value). A two-field split like col1/col2 is fine; ' +
|
|
@@ -338,10 +424,10 @@ const moduleFieldsArray = z
|
|
|
338
424
|
}
|
|
339
425
|
});
|
|
340
426
|
/**
|
|
341
|
-
* v0.12.0 — coarse role tag for the AI's
|
|
427
|
+
* v0.12.0 — coarse role tag for the AI's `list_modules` catalog.
|
|
342
428
|
* Constrained by `modules_kind_check` in migration 0095. Adding a
|
|
343
429
|
* new kind means: (1) bump the SQL CHECK, (2) update this schema,
|
|
344
|
-
* (3) update
|
|
430
|
+
* (3) update the add_module / build_page kind guidance so the AI knows when to use it.
|
|
345
431
|
*/
|
|
346
432
|
export const MODULE_KINDS = ["chrome", "hero", "content", "cta", "utility"];
|
|
347
433
|
export const moduleKindSchema = z.enum(MODULE_KINDS);
|
|
@@ -387,29 +473,25 @@ export const moduleUpdateSchema = z
|
|
|
387
473
|
fields: moduleFieldsArray.optional(),
|
|
388
474
|
})
|
|
389
475
|
.strict();
|
|
390
|
-
/**
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
* product-pages as a pattern. See CLAUDE.md §1A.
|
|
395
|
-
*/
|
|
396
|
-
export const TEMPLATE_KINDS = [
|
|
397
|
-
"home",
|
|
398
|
-
"landing",
|
|
399
|
-
"product",
|
|
400
|
-
"blog",
|
|
401
|
-
"doc",
|
|
402
|
-
"content",
|
|
403
|
-
"utility",
|
|
404
|
-
];
|
|
405
|
-
export const templateKindSchema = z.enum(TEMPLATE_KINDS);
|
|
476
|
+
/** A page type slug (epic #1107, docs/lists.md §5). */
|
|
477
|
+
export const pageTypeSlugSchema = z
|
|
478
|
+
.string()
|
|
479
|
+
.regex(/^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$/, "page type slug: lowercase letters, digits, hyphens");
|
|
406
480
|
export const templateCreateSchema = z
|
|
407
481
|
.object({
|
|
408
482
|
slug: slugSchema,
|
|
409
483
|
displayName: displayNameSchema,
|
|
410
|
-
/**
|
|
411
|
-
|
|
412
|
-
|
|
484
|
+
/**
|
|
485
|
+
* Epic #1107 — the page type (slug) this template serves; the template
|
|
486
|
+
* is appended to that type's `templates`. Omit for the site's default
|
|
487
|
+
* page type (`site_defaults.default_page_type_id`, stored data — not a
|
|
488
|
+
* render-time fallback).
|
|
489
|
+
*/
|
|
490
|
+
pageType: pageTypeSlugSchema.optional(),
|
|
491
|
+
html: z
|
|
492
|
+
.string()
|
|
493
|
+
.max(TEMPLATE_HTML_MAX, `html exceeds ${TEMPLATE_HTML_MAX} bytes`)
|
|
494
|
+
.superRefine(noCorruptMarkup("html")),
|
|
413
495
|
css: z.string().max(TEMPLATE_CSS_MAX, `css exceeds ${TEMPLATE_CSS_MAX} bytes`).default(""),
|
|
414
496
|
/**
|
|
415
497
|
* P6.7.6 — every template binds to one layout. When omitted, the
|
|
@@ -446,9 +528,9 @@ export const templateUpdateSchema = z
|
|
|
446
528
|
.object({
|
|
447
529
|
templateId: z.string().uuid(),
|
|
448
530
|
displayName: displayNameSchema.optional(),
|
|
449
|
-
/**
|
|
450
|
-
|
|
451
|
-
html: z.string().max(TEMPLATE_HTML_MAX).optional(),
|
|
531
|
+
/** Epic #1107 — also allow this template for the page type (slug); appended to its `templates`. */
|
|
532
|
+
pageType: pageTypeSlugSchema.optional(),
|
|
533
|
+
html: z.string().max(TEMPLATE_HTML_MAX).superRefine(noCorruptMarkup("html")).optional(),
|
|
452
534
|
css: z.string().max(TEMPLATE_CSS_MAX).optional(),
|
|
453
535
|
/** P6.7.6 — re-point the template to a different layout. */
|
|
454
536
|
layoutId: z.string().uuid().optional(),
|
|
@@ -506,6 +588,16 @@ export const pageCreateSchema = z
|
|
|
506
588
|
* becomes "<parent's path>/<slug>". Omit (or null) for a top-level page.
|
|
507
589
|
*/
|
|
508
590
|
parentPageId: z.string().uuid().nullable().optional(),
|
|
591
|
+
/**
|
|
592
|
+
* Epic #1107 — what the page IS (page type slug). Omit to take the type
|
|
593
|
+
* whose `templates` contain the template; with neither `pageType` nor
|
|
594
|
+
* `templateId`, the site's default page type and its default template.
|
|
595
|
+
*/
|
|
596
|
+
pageType: pageTypeSlugSchema.optional(),
|
|
597
|
+
/** Property values, validated against the page type. */
|
|
598
|
+
properties: z.record(z.string(), z.unknown()).optional(),
|
|
599
|
+
/** Terms (`caelo:term/<listId>/<itemId>`) from the page type's vocabularies. */
|
|
600
|
+
terms: z.array(z.string().max(120)).max(100).optional(),
|
|
509
601
|
})
|
|
510
602
|
.strict();
|
|
511
603
|
/**
|
|
@@ -555,6 +647,16 @@ export const pageUpdateSchema = z
|
|
|
555
647
|
* every inbound link, which is never a safe default (CLAUDE.md §2).
|
|
556
648
|
*/
|
|
557
649
|
redirectFromOld: z.enum(["auto", "skip"]).optional(),
|
|
650
|
+
/**
|
|
651
|
+
* Epic #1107 — switch the page type (slug). The template must be one of
|
|
652
|
+
* the type's templates (pass `templateId` too when it is not), and the
|
|
653
|
+
* page's properties and terms must fit the new type.
|
|
654
|
+
*/
|
|
655
|
+
pageType: pageTypeSlugSchema.optional(),
|
|
656
|
+
/** Merged into the page's properties; `null` removes a property. */
|
|
657
|
+
properties: z.record(z.string(), z.unknown()).optional(),
|
|
658
|
+
/** Replaces the page's terms (`caelo:term/<listId>/<itemId>`). */
|
|
659
|
+
terms: z.array(z.string().max(120)).max(100).optional(),
|
|
558
660
|
})
|
|
559
661
|
.strict();
|
|
560
662
|
export const pageSetModulesSchema = z
|
package/dist/content.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content.js","sourceRoot":"","sources":["../src/content.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"content.js","sourceRoot":"","sources":["../src/content.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/** The theme var an unknown name stands for, or null. */
|
|
2
|
+
export declare function themeVarForAlias(name: string, knownVars: ReadonlySet<string>): string | null;
|
|
3
|
+
/** One renamed reference. */
|
|
4
|
+
export interface CssVarRename {
|
|
5
|
+
readonly from: string;
|
|
6
|
+
readonly to: string;
|
|
7
|
+
readonly count: number;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Rename `var(--alias…)` references to the theme's name for that role.
|
|
11
|
+
* A name the CSS itself defines (`--surface: …`) is the author's own
|
|
12
|
+
* property and stays.
|
|
13
|
+
*/
|
|
14
|
+
export declare function renameCssVarAliases(css: string, knownVars: readonly string[], definedInCss: ReadonlySet<string>): {
|
|
15
|
+
css: string;
|
|
16
|
+
renames: CssVarRename[];
|
|
17
|
+
};
|
|
18
|
+
/** Tool-result sentence for the renames, or null. */
|
|
19
|
+
export declare function formatCssVarRenameReport(renames: readonly CssVarRename[]): string | null;
|
|
20
|
+
//# sourceMappingURL=css-var-aliases.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"css-var-aliases.d.ts","sourceRoot":"","sources":["../src/css-var-aliases.ts"],"names":[],"mappings":"AA+CA,yDAAyD;AACzD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,IAAI,CAM5F;AAKD,6BAA6B;AAC7B,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,SAAS,MAAM,EAAE,EAC5B,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,GAChC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,YAAY,EAAE,CAAA;CAAE,CAuB1C;AAED,qDAAqD;AACrD,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,GAAG,MAAM,GAAG,IAAI,CAOxF"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MPL-2.0
|
|
2
|
+
/**
|
|
3
|
+
* Common names for theme roles, mapped to the names Caelo's theme emits.
|
|
4
|
+
*
|
|
5
|
+
* Module CSS is authored against conventions the model knows from other
|
|
6
|
+
* design systems: `--color-text`, `--color-surface`, `--color-text-muted`.
|
|
7
|
+
* Caelo's theme calls those roles `--color-foreground`, `--color-background`
|
|
8
|
+
* and `--color-muted-foreground`. The write-time scan used to answer with an
|
|
9
|
+
* edit-distance guess (`--color-text` → "did you mean `--color-accent`?"),
|
|
10
|
+
* so the AI loaded the theme and renamed every reference with edit_content
|
|
11
|
+
* — two to three extra tool calls per module, and a failed one when the
|
|
12
|
+
* same declaration appeared twice (e2e-livedit run 40351690739). A name
|
|
13
|
+
* that unambiguously means a role the theme has is renamed before the
|
|
14
|
+
* write instead, and the tool result says so, the same way theme-literal
|
|
15
|
+
* binding rewrites a literal that equals a token (issue #164). Only names
|
|
16
|
+
* in this table are touched, and only when the theme emits the target.
|
|
17
|
+
*/
|
|
18
|
+
/** Role name (without `--` and an optional `color-` prefix) → theme role. */
|
|
19
|
+
const ROLE_ALIASES = {
|
|
20
|
+
text: "foreground",
|
|
21
|
+
"text-primary": "foreground",
|
|
22
|
+
"text-color": "foreground",
|
|
23
|
+
"body-text": "foreground",
|
|
24
|
+
fg: "foreground",
|
|
25
|
+
heading: "foreground",
|
|
26
|
+
"text-muted": "muted-foreground",
|
|
27
|
+
"text-secondary": "muted-foreground",
|
|
28
|
+
"text-subtle": "muted-foreground",
|
|
29
|
+
"muted-text": "muted-foreground",
|
|
30
|
+
"fg-muted": "muted-foreground",
|
|
31
|
+
surface: "background",
|
|
32
|
+
bg: "background",
|
|
33
|
+
"page-bg": "background",
|
|
34
|
+
"body-bg": "background",
|
|
35
|
+
"surface-muted": "muted",
|
|
36
|
+
"surface-alt": "muted",
|
|
37
|
+
"bg-muted": "muted",
|
|
38
|
+
"bg-subtle": "muted",
|
|
39
|
+
"surface-raised": "card",
|
|
40
|
+
"card-bg": "card",
|
|
41
|
+
"border-color": "border",
|
|
42
|
+
divider: "border",
|
|
43
|
+
line: "border",
|
|
44
|
+
};
|
|
45
|
+
/** The theme var an unknown name stands for, or null. */
|
|
46
|
+
export function themeVarForAlias(name, knownVars) {
|
|
47
|
+
const bare = name.replace(/^--/, "").replace(/^color-/, "");
|
|
48
|
+
const role = ROLE_ALIASES[bare];
|
|
49
|
+
if (role === undefined)
|
|
50
|
+
return null;
|
|
51
|
+
const target = `--color-${role}`;
|
|
52
|
+
return knownVars.has(target) ? target : null;
|
|
53
|
+
}
|
|
54
|
+
/** `var(` + the referenced name, when the name ends there. */
|
|
55
|
+
const VAR_NAME_RE = /(var\(\s*)(--[a-zA-Z0-9_-]+)(?![a-zA-Z0-9_-])/g;
|
|
56
|
+
/**
|
|
57
|
+
* Rename `var(--alias…)` references to the theme's name for that role.
|
|
58
|
+
* A name the CSS itself defines (`--surface: …`) is the author's own
|
|
59
|
+
* property and stays.
|
|
60
|
+
*/
|
|
61
|
+
export function renameCssVarAliases(css, knownVars, definedInCss) {
|
|
62
|
+
const known = new Set(knownVars);
|
|
63
|
+
const targets = new Map();
|
|
64
|
+
const counts = new Map();
|
|
65
|
+
// One pass over the references, no pattern built from a name.
|
|
66
|
+
const out = css.replace(VAR_NAME_RE, (match, open, name) => {
|
|
67
|
+
if (known.has(name) || definedInCss.has(name))
|
|
68
|
+
return match;
|
|
69
|
+
let to = targets.get(name);
|
|
70
|
+
if (to === undefined) {
|
|
71
|
+
const resolved = themeVarForAlias(name, known);
|
|
72
|
+
if (resolved === null)
|
|
73
|
+
return match;
|
|
74
|
+
to = resolved;
|
|
75
|
+
targets.set(name, to);
|
|
76
|
+
}
|
|
77
|
+
counts.set(name, (counts.get(name) ?? 0) + 1);
|
|
78
|
+
return `${open}${to}`;
|
|
79
|
+
});
|
|
80
|
+
const renames = [...targets].map(([from, to]) => ({
|
|
81
|
+
from,
|
|
82
|
+
to,
|
|
83
|
+
count: counts.get(from) ?? 0,
|
|
84
|
+
}));
|
|
85
|
+
return { css: out, renames };
|
|
86
|
+
}
|
|
87
|
+
/** Tool-result sentence for the renames, or null. */
|
|
88
|
+
export function formatCssVarRenameReport(renames) {
|
|
89
|
+
if (renames.length === 0)
|
|
90
|
+
return null;
|
|
91
|
+
return ` 🔗 renamed to the theme's names: ${renames
|
|
92
|
+
.map((r) => `${r.from}→${r.to}${r.count > 1 ? `×${r.count}` : ""}`)
|
|
93
|
+
.join(", ")} — the STORED css uses the theme's names, so anchor later edit_content calls on those.`;
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=css-var-aliases.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"css-var-aliases.js","sourceRoot":"","sources":["../src/css-var-aliases.ts"],"names":[],"mappings":"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"}
|
package/dist/css-var-scan.d.ts
CHANGED
|
@@ -1,19 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* issue #156 — CSS custom-property reference scanner.
|
|
3
|
-
*
|
|
4
|
-
* The silent-fallback trap: module/template/layout CSS referencing a
|
|
5
|
-
* `var(--…)` the active theme never emits renders the hardcoded
|
|
6
|
-
* fallback (or nothing), so the page quietly diverges from the theme —
|
|
7
|
-
* the monochrome regression class documented in theme-render.ts. The
|
|
8
|
-
* prompt-level var inventory guards the happy path; this scanner is the
|
|
9
|
-
* mechanical write-time guard (CLAUDE.md §2: misses must be loud).
|
|
10
|
-
*
|
|
11
|
-
* Pure string analysis — callers (authoring tools, preview op) supply
|
|
12
|
-
* the known-var set from `listThemeCssVarNames(activeTheme.tokens)`.
|
|
13
|
-
* Custom properties DEFINED anywhere in the scanned bundle are treated
|
|
14
|
-
* as known: a layout may define `--site-gutter` for its modules, and
|
|
15
|
-
* that is legitimate authoring, not drift.
|
|
16
|
-
*/
|
|
17
1
|
/** One `var(--x)` reference found in CSS. */
|
|
18
2
|
export interface CssVarReference {
|
|
19
3
|
readonly name: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"css-var-scan.d.ts","sourceRoot":"","sources":["../src/css-var-scan.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"css-var-scan.d.ts","sourceRoot":"","sources":["../src/css-var-scan.ts"],"names":[],"mappings":"AAqBA,6CAA6C;AAC7C,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,6EAA6E;IAC7E,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;CAC/B;AAKD,iFAAiF;AACjF,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,EAAE,CAStE;AAED,4DAA4D;AAC5D,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAMjE;AAsBD,sEAAsE;AACtE,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,qEAAqE;IACrE,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC;AAED,MAAM,WAAW,eAAe;IAC9B,yEAAyE;IACzE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,4DAA4D;IAC5D,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,eAAe,GAAG,aAAa,EAAE,CAiCnE;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAExD;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,SAAS,aAAa,EAAE,GAAG,MAAM,GAAG,IAAI,CAa3F"}
|
package/dist/css-var-scan.js
CHANGED
|
@@ -1,4 +1,21 @@
|
|
|
1
1
|
// SPDX-License-Identifier: MPL-2.0
|
|
2
|
+
/**
|
|
3
|
+
* issue #156 — CSS custom-property reference scanner.
|
|
4
|
+
*
|
|
5
|
+
* The silent-fallback trap: module/template/layout CSS referencing a
|
|
6
|
+
* `var(--…)` the active theme never emits renders the hardcoded
|
|
7
|
+
* fallback (or nothing), so the page quietly diverges from the theme —
|
|
8
|
+
* the monochrome regression class documented in theme-render.ts. The
|
|
9
|
+
* prompt-level var inventory guards the happy path; this scanner is the
|
|
10
|
+
* mechanical write-time guard (CLAUDE.md §2: misses must be loud).
|
|
11
|
+
*
|
|
12
|
+
* Pure string analysis — callers (authoring tools, preview op) supply
|
|
13
|
+
* the known-var set from `listThemeCssVarNames(activeTheme.tokens)`.
|
|
14
|
+
* Custom properties DEFINED anywhere in the scanned bundle are treated
|
|
15
|
+
* as known: a layout may define `--site-gutter` for its modules, and
|
|
16
|
+
* that is legitimate authoring, not drift.
|
|
17
|
+
*/
|
|
18
|
+
import { themeVarForAlias } from "./css-var-aliases.js";
|
|
2
19
|
const VAR_REFERENCE_RE = /var\(\s*(--[a-zA-Z0-9_-]+)\s*(,)?/g;
|
|
3
20
|
const VAR_DEFINITION_RE = /(?:^|[{;\s])(--[a-zA-Z0-9_-]+)\s*:/g;
|
|
4
21
|
/** Extract every `var(--x[, fallback])` reference (deduped by name+fallback). */
|
|
@@ -52,6 +69,13 @@ export function scanCssVars(input) {
|
|
|
52
69
|
if (known.has(ref.name) || reported.has(ref.name))
|
|
53
70
|
continue;
|
|
54
71
|
reported.add(ref.name);
|
|
72
|
+
// A common role name (`--color-text`) suggests the theme's name for
|
|
73
|
+
// that role, not the nearest spelling (which was `--color-accent`).
|
|
74
|
+
const alias = themeVarForAlias(ref.name, known);
|
|
75
|
+
if (alias !== null) {
|
|
76
|
+
unknown.push({ name: ref.name, hasFallback: ref.hasFallback, suggestion: alias });
|
|
77
|
+
continue;
|
|
78
|
+
}
|
|
55
79
|
let best = null;
|
|
56
80
|
let bestDist = Number.POSITIVE_INFINITY;
|
|
57
81
|
for (const candidate of known) {
|