@caelo-cms/shared 0.10.57 → 0.10.59
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 +30 -0
- package/dist/ai-tools.d.ts.map +1 -1
- package/dist/ai-tools.js +26 -9
- package/dist/ai-tools.js.map +1 -1
- package/dist/bug-intake.d.ts +176 -0
- package/dist/bug-intake.d.ts.map +1 -0
- package/dist/bug-intake.js +200 -0
- package/dist/bug-intake.js.map +1 -0
- package/dist/content.js +7 -7
- package/dist/edit-markers.d.ts +49 -0
- package/dist/edit-markers.d.ts.map +1 -0
- package/dist/edit-markers.js +225 -0
- package/dist/edit-markers.js.map +1 -0
- package/dist/google-oauth.d.ts +22 -0
- package/dist/google-oauth.d.ts.map +1 -0
- package/dist/google-oauth.js +25 -0
- package/dist/google-oauth.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/link-canonicalise.d.ts +109 -0
- package/dist/link-canonicalise.d.ts.map +1 -0
- package/dist/link-canonicalise.js +471 -0
- package/dist/link-canonicalise.js.map +1 -0
- package/dist/link-refs.d.ts +63 -8
- package/dist/link-refs.d.ts.map +1 -1
- package/dist/link-refs.js +80 -14
- package/dist/link-refs.js.map +1 -1
- package/dist/media.d.ts.map +1 -1
- package/dist/media.js +15 -0
- package/dist/media.js.map +1 -1
- package/dist/nested-module-render.d.ts +17 -0
- package/dist/nested-module-render.d.ts.map +1 -1
- package/dist/nested-module-render.js +45 -6
- package/dist/nested-module-render.js.map +1 -1
- package/dist/page-log.d.ts +1 -1
- package/dist/preview-compose.d.ts.map +1 -1
- package/dist/preview-compose.js +12 -2
- package/dist/preview-compose.js.map +1 -1
- package/dist/theme-normalize.d.ts.map +1 -1
- package/dist/theme-normalize.js +17 -2
- package/dist/theme-normalize.js.map +1 -1
- package/dist/version.d.ts +2 -2
- package/dist/version.js +1 -1
- package/package.json +1 -1
- package/src/ai-tools.ts +29 -11
- package/src/bug-intake.test.ts +154 -0
- package/src/bug-intake.ts +256 -0
- package/src/content.ts +7 -7
- package/src/edit-markers.test.ts +111 -0
- package/src/edit-markers.ts +244 -0
- package/src/google-oauth.ts +27 -0
- package/src/index.ts +4 -0
- package/src/link-canonicalise.test.ts +387 -0
- package/src/link-canonicalise.ts +598 -0
- package/src/link-refs.test.ts +206 -0
- package/src/link-refs.ts +119 -21
- package/src/media.ts +16 -0
- package/src/nested-module-render.ts +59 -4
- package/src/preview-compose.ts +11 -2
- package/src/theme-normalize-typography-subfields.test.ts +54 -0
- package/src/theme-normalize.ts +19 -2
- package/src/version.ts +1 -1
package/src/theme-normalize.ts
CHANGED
|
@@ -284,8 +284,14 @@ export function normalizeTokens(input: Record<string, unknown>): NormalizeResult
|
|
|
284
284
|
// resulting document validates. applyDtcgWrites merges this into
|
|
285
285
|
// any existing typography composite at the path so partial updates
|
|
286
286
|
// don't erase sibling sub-fields.
|
|
287
|
+
// Numbers wrap too: the admin form coerces `.lineHeight` / `.fontWeight`
|
|
288
|
+
// to numbers, and an unwrapped `1.6` would replace the whole composite.
|
|
287
289
|
let storedValue: unknown = rawValue;
|
|
288
|
-
if (
|
|
290
|
+
if (
|
|
291
|
+
resolved.compositeWrap &&
|
|
292
|
+
(typeof rawValue === "number" ||
|
|
293
|
+
(typeof rawValue === "string" && !ALIAS_REGEX.test(rawValue)))
|
|
294
|
+
) {
|
|
289
295
|
storedValue = { [resolved.compositeWrap]: rawValue };
|
|
290
296
|
} else if (
|
|
291
297
|
resolved.inferredType === "gradient" &&
|
|
@@ -303,10 +309,17 @@ export function normalizeTokens(input: Record<string, unknown>): NormalizeResult
|
|
|
303
309
|
// rather than us silently inventing a gradient (CLAUDE.md §2).
|
|
304
310
|
storedValue = gradientObjectToCss(rawValue as Record<string, unknown>) ?? rawValue;
|
|
305
311
|
}
|
|
312
|
+
// Several sub-field inputs (`typography.body.fontSize` +
|
|
313
|
+
// `typography.body.lineHeight`) collapse onto the same composite
|
|
314
|
+
// path; merge them so the last one doesn't silently drop the others.
|
|
315
|
+
const prior = set[resolved.path];
|
|
316
|
+
if (resolved.compositeWrap && isPlainObject(prior) && isPlainObject(storedValue)) {
|
|
317
|
+
storedValue = { ...prior, ...storedValue };
|
|
318
|
+
}
|
|
306
319
|
set[resolved.path] = storedValue;
|
|
307
320
|
types[resolved.path] = resolved.inferredType;
|
|
308
321
|
if (envelopeDescription !== undefined) descriptions[resolved.path] = envelopeDescription;
|
|
309
|
-
paths.push(resolved.path);
|
|
322
|
+
if (!paths.includes(resolved.path)) paths.push(resolved.path);
|
|
310
323
|
}
|
|
311
324
|
|
|
312
325
|
return { set, types, descriptions, canonicalPaths: paths };
|
|
@@ -721,3 +734,7 @@ function similarity(a: string, b: string): number {
|
|
|
721
734
|
function tokenise(s: string): string[] {
|
|
722
735
|
return s.split(/[.\-_]/).filter((p) => p.length > 0);
|
|
723
736
|
}
|
|
737
|
+
|
|
738
|
+
function isPlainObject(v: unknown): v is Record<string, unknown> {
|
|
739
|
+
return v !== null && typeof v === "object" && !Array.isArray(v);
|
|
740
|
+
}
|