@caelo-cms/shared 0.10.72 → 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 +48 -36
- 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 +23 -4
- package/dist/build-page.js.map +1 -1
- package/dist/content.d.ts +201 -100
- package/dist/content.d.ts.map +1 -1
- package/dist/content.js +176 -74
- 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/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -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/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/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 +51 -37
- package/src/build-page.test.ts +34 -3
- package/src/build-page.ts +26 -3
- package/src/content.test.ts +111 -3
- package/src/content.ts +186 -75
- 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/index.ts +3 -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 +55 -19
- package/src/preview-compose.ts +59 -154
- 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/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
|
@@ -1,4 +1,64 @@
|
|
|
1
1
|
// SPDX-License-Identifier: MPL-2.0
|
|
2
|
+
/**
|
|
3
|
+
* Recursive module renderer — the ONE renderer for nested modules
|
|
4
|
+
* (`module` / `module-list` fields), shared by the editor preview
|
|
5
|
+
* (`pages.render_preview`, which pre-renders each placement through
|
|
6
|
+
* `renderModuleWithContent`) and the composer (`composePageWithLayout`
|
|
7
|
+
* with a `nestedModules` resolver, which the static generator supplies
|
|
8
|
+
* so deployed pages render nested modules exactly as the preview does).
|
|
9
|
+
* Pure function so it's unit-testable without the compose stack; the
|
|
10
|
+
* callers fetch the data and hand it over through a resolver.
|
|
11
|
+
*
|
|
12
|
+
* Substitution + iteration live in the shared template engine
|
|
13
|
+
* (`./template-engine.ts`). This file keeps the recursion +
|
|
14
|
+
* cycle-detection + depth-limit guards. Per-call shape:
|
|
15
|
+
* 1. `renderInner` validates the (moduleId, contentInstanceId)
|
|
16
|
+
* pair against the resolver and the depth / cycle bookkeeping.
|
|
17
|
+
* 2. `substituteWithRecursion` hands the engine the HTML + view +
|
|
18
|
+
* a partial resolver (`<name>` for single refs, `<name>__<index>`
|
|
19
|
+
* for list elements) that recurses through `renderInner` only
|
|
20
|
+
* for the nested refs the template actually dispatches.
|
|
21
|
+
* 3. The engine performs primitive substitution, section
|
|
22
|
+
* iteration, and loud-raw / failure-marker emission. Its
|
|
23
|
+
* `missingSlots` are merged into the recursion context's
|
|
24
|
+
* `missing` array.
|
|
25
|
+
*
|
|
26
|
+
* Template grammar (extends v0.4.0's `{{fieldName}}` with two nested
|
|
27
|
+
* forms):
|
|
28
|
+
*
|
|
29
|
+
* {{fieldName}} — primitive substitution (text,
|
|
30
|
+
* richtext, url, image, ...).
|
|
31
|
+
* {{>fieldName}} — single nested module slot
|
|
32
|
+
* (field kind = 'module').
|
|
33
|
+
* values[fieldName] is
|
|
34
|
+
* { moduleId, contentInstanceId }.
|
|
35
|
+
* {{#fieldName}}…{{/fieldName}} — section over a list field
|
|
36
|
+
* (kind = list / module-list).
|
|
37
|
+
* A `list` iterates the inner
|
|
38
|
+
* template per entry (an entry's
|
|
39
|
+
* `{{>f}}` module field recurses
|
|
40
|
+
* here too); module-list ignores
|
|
41
|
+
* the inner and renders each
|
|
42
|
+
* element's nested module HTML
|
|
43
|
+
* via `renderInner` (recursion).
|
|
44
|
+
*
|
|
45
|
+
* Pre-1.0 fail-loud (CLAUDE.md §2):
|
|
46
|
+
* - Depth limit 8 — beyond that, emit an HTML comment naming the
|
|
47
|
+
* limit + add a `missingSlots` entry; do NOT silently truncate.
|
|
48
|
+
* - Cycle detection — track `(moduleId, contentInstanceId)` pairs on
|
|
49
|
+
* the recursion path; on revisit, comment + missingSlots entry.
|
|
50
|
+
* - Missing referenced module / soft-deleted content_instance —
|
|
51
|
+
* comment + missingSlots entry. Same channel; the operator sees the
|
|
52
|
+
* gap in the preview, and the static generator refuses the build.
|
|
53
|
+
*
|
|
54
|
+
* Module ids: the root element of every nested module render carries
|
|
55
|
+
* `data-caelo-module-id` (#1027), the same stamp the composer puts on a
|
|
56
|
+
* page placement's root, in the preview and the static build alike.
|
|
57
|
+
*
|
|
58
|
+
* CSS + JS dedup: every unique module touched during recursion
|
|
59
|
+
* contributes its CSS + JS once. The caller collects the seen-set out
|
|
60
|
+
* of band so the page's <head>/<style> + footer scripts are stable.
|
|
61
|
+
*/
|
|
2
62
|
import { isLinkFailureMarker } from "./link-refs.js";
|
|
3
63
|
import { tagModuleId } from "./module-id-tag.js";
|
|
4
64
|
import { caeloMissingComment, renderTemplate } from "./template-engine.js";
|
|
@@ -22,7 +82,7 @@ function fail(ctx, reason) {
|
|
|
22
82
|
* Render a module's HTML against a content_instance's values, recursing
|
|
23
83
|
* into nested-module fields.
|
|
24
84
|
*/
|
|
25
|
-
export function renderModuleWithContent(moduleId, contentInstanceId, resolver, themeAssets,
|
|
85
|
+
export function renderModuleWithContent(moduleId, contentInstanceId, resolver, themeAssets, lists, linkResolver) {
|
|
26
86
|
const touched = new Set();
|
|
27
87
|
const missing = [];
|
|
28
88
|
const failures = [];
|
|
@@ -35,12 +95,13 @@ export function renderModuleWithContent(moduleId, contentInstanceId, resolver, t
|
|
|
35
95
|
path: new Set(),
|
|
36
96
|
depth: 0,
|
|
37
97
|
themeAssets,
|
|
38
|
-
|
|
39
|
-
|
|
98
|
+
lists,
|
|
99
|
+
listHolder: null,
|
|
40
100
|
linkResolver,
|
|
41
101
|
});
|
|
42
102
|
return { html, touchedModuleIds: touched, missingSlots: missing, failures };
|
|
43
103
|
}
|
|
104
|
+
const UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;
|
|
44
105
|
function renderInner(moduleId, contentInstanceId, ctx) {
|
|
45
106
|
if (ctx.depth >= MAX_RECURSION_DEPTH) {
|
|
46
107
|
fail(ctx, `depth-limit:${moduleId}/${contentInstanceId}`);
|
|
@@ -77,8 +138,10 @@ function renderInner(moduleId, contentInstanceId, ctx) {
|
|
|
77
138
|
path,
|
|
78
139
|
depth: ctx.depth + 1,
|
|
79
140
|
themeAssets: ctx.themeAssets,
|
|
80
|
-
|
|
81
|
-
|
|
141
|
+
lists: ctx.lists,
|
|
142
|
+
// Variant content (`variant:<key>`) is no stored instance, so its
|
|
143
|
+
// local list entries carry no instance address.
|
|
144
|
+
listHolder: ci.listHolderId ?? (UUID_RE.test(ci.id) ? ci.id : null),
|
|
82
145
|
linkResolver: ctx.linkResolver,
|
|
83
146
|
};
|
|
84
147
|
return substituteWithRecursion(mod.html, mod.fields, ci.values, childCtx);
|
|
@@ -98,6 +161,9 @@ function renderInner(moduleId, contentInstanceId, ctx) {
|
|
|
98
161
|
* HTML for element i. Malformed elements (non-NestedRef shape)
|
|
99
162
|
* resolve to `undefined` — the engine emits the existing
|
|
100
163
|
* `module-list-malformed:<name>[<i>]` marker.
|
|
164
|
+
* - `{{>f}}` inside an entry of list field `<name>`:
|
|
165
|
+
* `list:<name>/<itemId>/<f>`, with the ref passed alongside (the
|
|
166
|
+
* entry may come from a shared list, not from `values`).
|
|
101
167
|
*
|
|
102
168
|
* Failure-marker parity: every literal `missingSlots` string the
|
|
103
169
|
* legacy hand-rolled substitution emitted is preserved — half by the
|
|
@@ -115,9 +181,9 @@ function substituteWithRecursion(html, fields, values, ctx) {
|
|
|
115
181
|
// stays off the page. Memoised: `{{>name}}` twice renders it once.
|
|
116
182
|
const fieldByName = new Map(fields.map((f) => [f.name, f]));
|
|
117
183
|
const rendered = new Map();
|
|
118
|
-
const partials = (key) => {
|
|
184
|
+
const partials = (key, ref) => {
|
|
119
185
|
if (!rendered.has(key))
|
|
120
|
-
rendered.set(key, renderPartial(key, fieldByName, values, ctx));
|
|
186
|
+
rendered.set(key, renderPartial(key, ref, fieldByName, values, ctx));
|
|
121
187
|
return rendered.get(key);
|
|
122
188
|
};
|
|
123
189
|
const result = renderTemplate({
|
|
@@ -126,8 +192,8 @@ function substituteWithRecursion(html, fields, values, ctx) {
|
|
|
126
192
|
contentValues: values,
|
|
127
193
|
partials,
|
|
128
194
|
themeAssets: ctx.themeAssets,
|
|
129
|
-
|
|
130
|
-
|
|
195
|
+
lists: ctx.lists,
|
|
196
|
+
listHolder: { contentInstanceId: ctx.listHolder },
|
|
131
197
|
linkResolver: ctx.linkResolver,
|
|
132
198
|
});
|
|
133
199
|
for (const m of result.missingSlots) {
|
|
@@ -142,13 +208,14 @@ function substituteWithRecursion(html, fields, values, ctx) {
|
|
|
142
208
|
return result.html;
|
|
143
209
|
}
|
|
144
210
|
/**
|
|
145
|
-
* Render the partial the engine asked for: `<name>` (a `module` field)
|
|
146
|
-
*
|
|
147
|
-
*
|
|
148
|
-
* `
|
|
211
|
+
* Render the partial the engine asked for: `<name>` (a `module` field),
|
|
212
|
+
* `<name>__<i>` (element i of a `module-list`) or
|
|
213
|
+
* `list:<name>/<itemId>/<f>` (a list entry's module field, `ref` given).
|
|
214
|
+
* `undefined` when the value is not a well-formed ref — the engine then
|
|
215
|
+
* emits its own `module-ref-malformed` / `module-list-malformed` marker.
|
|
149
216
|
*/
|
|
150
|
-
function renderPartial(key, fieldByName, values, ctx) {
|
|
151
|
-
const hit = nestedRefForPartial(key, fieldByName, values);
|
|
217
|
+
function renderPartial(key, ref, fieldByName, values, ctx) {
|
|
218
|
+
const hit = nestedRefForPartial(key, ref, fieldByName, values);
|
|
152
219
|
if (!hit)
|
|
153
220
|
return undefined;
|
|
154
221
|
// #1027 — a nested module's root carries its own id, exactly like a
|
|
@@ -163,7 +230,13 @@ function renderPartial(key, fieldByName, values, ctx) {
|
|
|
163
230
|
* (`name` or `name[i]`); `undefined` when the key names no well-formed
|
|
164
231
|
* ref. The one place that maps the engine's partial keys to values.
|
|
165
232
|
*/
|
|
166
|
-
function nestedRefForPartial(key, fieldByName, values) {
|
|
233
|
+
function nestedRefForPartial(key, ref, fieldByName, values) {
|
|
234
|
+
if (key.startsWith(LIST_PARTIAL_PREFIX)) {
|
|
235
|
+
const [name, itemId, entryField] = key.slice(LIST_PARTIAL_PREFIX.length).split("/");
|
|
236
|
+
if (!name || !itemId || !entryField || !ref || !isNestedRef(ref))
|
|
237
|
+
return undefined;
|
|
238
|
+
return { ref, field: name, step: `${name}[${itemId}].${entryField}` };
|
|
239
|
+
}
|
|
167
240
|
const single = fieldByName.get(key);
|
|
168
241
|
if (single?.kind === "module") {
|
|
169
242
|
const ref = values[key];
|
|
@@ -184,6 +257,8 @@ function nestedRefForPartial(key, fieldByName, values) {
|
|
|
184
257
|
const el = raw[i];
|
|
185
258
|
return isNestedRef(el) ? { ref: el, field: name, step: `${name}[${i}]` } : undefined;
|
|
186
259
|
}
|
|
260
|
+
/** Partial-key prefix of a list entry's embedded module (`template-sections.ts`). */
|
|
261
|
+
const LIST_PARTIAL_PREFIX = "list:";
|
|
187
262
|
/**
|
|
188
263
|
* Epic #724 (rollout F) — the nested refs that render when this module
|
|
189
264
|
* renders with these values: exactly the refs {@link renderPlacedModule}
|
|
@@ -195,7 +270,7 @@ function nestedRefForPartial(key, fieldByName, values) {
|
|
|
195
270
|
*
|
|
196
271
|
* @returns one entry per dispatched ref, in render order, deduplicated.
|
|
197
272
|
*/
|
|
198
|
-
export function dispatchedNestedRefs(html, fields, values) {
|
|
273
|
+
export function dispatchedNestedRefs(html, fields, values, lists) {
|
|
199
274
|
const fieldByName = new Map(fields.map((f) => [f.name, f]));
|
|
200
275
|
const out = [];
|
|
201
276
|
const asked = new Set();
|
|
@@ -203,8 +278,9 @@ export function dispatchedNestedRefs(html, fields, values) {
|
|
|
203
278
|
html,
|
|
204
279
|
fields,
|
|
205
280
|
contentValues: values,
|
|
206
|
-
|
|
207
|
-
|
|
281
|
+
...(lists ? { lists } : {}),
|
|
282
|
+
partials: (key, ref) => {
|
|
283
|
+
const hit = nestedRefForPartial(key, ref, fieldByName, values);
|
|
208
284
|
if (!hit)
|
|
209
285
|
return undefined;
|
|
210
286
|
if (!asked.has(key)) {
|
|
@@ -247,30 +323,45 @@ export function renderPlacedModule(placement, resolver, options) {
|
|
|
247
323
|
path: new Set(),
|
|
248
324
|
depth: 1,
|
|
249
325
|
themeAssets: options.themeAssets,
|
|
250
|
-
|
|
251
|
-
|
|
326
|
+
lists: options.lists,
|
|
327
|
+
listHolder: options.contentInstanceId ?? null,
|
|
252
328
|
linkResolver: options.linkResolver,
|
|
253
329
|
});
|
|
254
330
|
return { html, touchedModuleIds: touched, missingSlots: missing, failures };
|
|
255
331
|
}
|
|
256
332
|
/**
|
|
257
333
|
* Walk a content_instance's values to find every nested-module reference
|
|
258
|
-
* it carries
|
|
259
|
-
*
|
|
334
|
+
* it carries: `module` / `module-list` values and the `module` fields of
|
|
335
|
+
* local list entries at any depth (`{ id, node, values, children }`).
|
|
336
|
+
* Used by the caller to pre-batch the modules + content_instances the
|
|
337
|
+
* page will need.
|
|
260
338
|
*/
|
|
261
339
|
export function collectNestedRefs(values) {
|
|
262
340
|
const refs = [];
|
|
263
|
-
|
|
341
|
+
const visit = (v, depth) => {
|
|
342
|
+
if (depth > MAX_COLLECT_DEPTH || typeof v !== "object" || v === null)
|
|
343
|
+
return;
|
|
264
344
|
if (isNestedRef(v)) {
|
|
265
|
-
refs.push(v);
|
|
345
|
+
refs.push({ moduleId: v.moduleId, contentInstanceId: v.contentInstanceId });
|
|
346
|
+
return;
|
|
266
347
|
}
|
|
267
|
-
|
|
268
|
-
for (const el of v)
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
}
|
|
348
|
+
if (Array.isArray(v)) {
|
|
349
|
+
for (const el of v)
|
|
350
|
+
visit(el, depth + 1);
|
|
351
|
+
return;
|
|
272
352
|
}
|
|
273
|
-
|
|
353
|
+
const entry = v;
|
|
354
|
+
if (typeof entry.values === "object" && entry.values !== null) {
|
|
355
|
+
for (const inner of Object.values(entry.values))
|
|
356
|
+
visit(inner, depth + 1);
|
|
357
|
+
}
|
|
358
|
+
if (Array.isArray(entry.children))
|
|
359
|
+
visit(entry.children, depth + 1);
|
|
360
|
+
};
|
|
361
|
+
for (const v of Object.values(values))
|
|
362
|
+
visit(v, 0);
|
|
274
363
|
return refs;
|
|
275
364
|
}
|
|
365
|
+
/** Bound for {@link collectNestedRefs}: list depth (8) × two levels per entry, plus slack. */
|
|
366
|
+
const MAX_COLLECT_DEPTH = 24;
|
|
276
367
|
//# sourceMappingURL=nested-module-render.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nested-module-render.js","sourceRoot":"","sources":["../src/nested-module-render.ts"],"names":[],"mappings":"AAAA,mCAAmC;
|
|
1
|
+
{"version":3,"file":"nested-module-render.js","sourceRoot":"","sources":["../src/nested-module-render.ts"],"names":[],"mappings":"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"}
|
package/dist/page-log.d.ts
CHANGED
|
@@ -62,9 +62,9 @@ export declare const pageLogEntrySchema: z.ZodObject<{
|
|
|
62
62
|
chatSessionId: z.ZodNullable<z.ZodString>;
|
|
63
63
|
actorKind: z.ZodEnum<{
|
|
64
64
|
system: "system";
|
|
65
|
+
plugin: "plugin";
|
|
65
66
|
ai: "ai";
|
|
66
67
|
human: "human";
|
|
67
|
-
plugin: "plugin";
|
|
68
68
|
}>;
|
|
69
69
|
entryKind: z.ZodEnum<{
|
|
70
70
|
decision: "decision";
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import type { ModuleFieldKind } from "./content.js";
|
|
2
2
|
import { type LinkResolver } from "./link-refs.js";
|
|
3
|
+
import type { ListPageContext } from "./lists/resolve.js";
|
|
3
4
|
import { tagModuleId } from "./module-id-tag.js";
|
|
4
5
|
import { type NestedRenderResolver } from "./nested-module-render.js";
|
|
6
|
+
import { type TemplateField } from "./template-engine.js";
|
|
5
7
|
import type { ThemeDocument } from "./themes.js";
|
|
6
8
|
export { tagModuleId };
|
|
7
9
|
export interface ComposeModule {
|
|
@@ -13,8 +15,8 @@ export interface ComposeModule {
|
|
|
13
15
|
readonly js: string;
|
|
14
16
|
/**
|
|
15
17
|
* v0.4.0 module-field schema, extended in #71 to carry `kind` so
|
|
16
|
-
* the shared template engine can dispatch
|
|
17
|
-
* module
|
|
18
|
+
* the shared template engine can dispatch list / module-list /
|
|
19
|
+
* module sections (a `list` field carries its binding too). `kind` is optional for back-compat
|
|
18
20
|
* with callers that haven't been updated; the engine treats absent
|
|
19
21
|
* kinds as primitives (the legacy compose-path behaviour).
|
|
20
22
|
*
|
|
@@ -29,11 +31,7 @@ export interface ComposeModule {
|
|
|
29
31
|
* here via the `contentValues` field below. Nested-module refs
|
|
30
32
|
* render through `ComposeInput.nestedModules`.
|
|
31
33
|
*/
|
|
32
|
-
readonly fields?: readonly
|
|
33
|
-
name: string;
|
|
34
|
-
kind?: ModuleFieldKind;
|
|
35
|
-
default?: unknown;
|
|
36
|
-
}[];
|
|
34
|
+
readonly fields?: readonly ComposeField[];
|
|
37
35
|
/**
|
|
38
36
|
* PR #61 follow-up — per-placement content values from the bound
|
|
39
37
|
* `content_instances.values` jsonb. When present, the composer
|
|
@@ -44,17 +42,22 @@ export interface ComposeModule {
|
|
|
44
42
|
* visitors — the bug e2e-livedit's second Stage caught.
|
|
45
43
|
*/
|
|
46
44
|
readonly contentValues?: Readonly<Record<string, unknown>>;
|
|
45
|
+
/**
|
|
46
|
+
* The stored content instance `contentValues` come from — the address
|
|
47
|
+
* of the module's local list entries (overlays, `data-caelo-list-item`).
|
|
48
|
+
* Absent for site chrome rendered from field defaults and for content
|
|
49
|
+
* variants, which are no stored instance.
|
|
50
|
+
*/
|
|
51
|
+
readonly contentInstanceId?: string;
|
|
47
52
|
}
|
|
53
|
+
/** A module field as the composer passes it to the engine; `kind` absent = primitive. */
|
|
54
|
+
export type ComposeField = Omit<TemplateField, "kind"> & {
|
|
55
|
+
readonly kind?: ModuleFieldKind;
|
|
56
|
+
};
|
|
48
57
|
export interface ComposeBlock {
|
|
49
58
|
readonly blockName: string;
|
|
50
59
|
readonly modules: readonly ComposeModule[];
|
|
51
60
|
}
|
|
52
|
-
/** P6.7.5 — structured sets carried into the composer so nav-menu
|
|
53
|
-
* modules render from typed items and theme tokens flow into <head>. */
|
|
54
|
-
export interface ComposeStructuredSets {
|
|
55
|
-
/** Map keyed by `<kind>/<slug>` (e.g. `nav-menu/header-main`). */
|
|
56
|
-
readonly byKindSlug: Readonly<Record<string, readonly unknown[]>>;
|
|
57
|
-
}
|
|
58
61
|
/**
|
|
59
62
|
* v0.11.0 — Theme context resolved by the preview op + static generator
|
|
60
63
|
* (#45 Phase 3). Carries the active theme's DTCG tokens jsonb plus the
|
|
@@ -100,7 +103,6 @@ export interface ComposeInput {
|
|
|
100
103
|
readonly templateHtml: string;
|
|
101
104
|
readonly templateCss: string;
|
|
102
105
|
readonly blocks: readonly ComposeBlock[];
|
|
103
|
-
readonly structuredSets?: ComposeStructuredSets;
|
|
104
106
|
/**
|
|
105
107
|
* v0.11.0 — active theme threaded through from the preview op + static
|
|
106
108
|
* generator. Undefined when no theme row exists OR when the caller
|
|
@@ -111,13 +113,14 @@ export interface ComposeInput {
|
|
|
111
113
|
/** issue #150 — resolved web fonts; undefined = system stacks only. */
|
|
112
114
|
readonly fonts?: ComposeFonts;
|
|
113
115
|
/**
|
|
114
|
-
*
|
|
115
|
-
*
|
|
116
|
-
*
|
|
117
|
-
*
|
|
116
|
+
* The list view of the page being composed (`lists/resolve.ts`
|
|
117
|
+
* `createListRenderContext(data).forPage(pageId, …)`): resolves `list`
|
|
118
|
+
* fields — local, shared, query, system and plugin sources — and
|
|
119
|
+
* `{{page.*}}` in every placed, nested and chrome module alike, so a
|
|
120
|
+
* menu renders the same in the editor and on deploy, including the
|
|
121
|
+
* loud marker when its plugin source is off.
|
|
118
122
|
*/
|
|
119
|
-
readonly
|
|
120
|
-
readonly dormantDataLists?: Readonly<Record<string, string>>;
|
|
123
|
+
readonly lists?: ListPageContext;
|
|
121
124
|
/**
|
|
122
125
|
* #450 — modules withheld by a plugin, keyed by module id. Resolved
|
|
123
126
|
* by the host before composing; absent means the module renders
|
|
@@ -137,7 +140,7 @@ export interface ComposeInput {
|
|
|
137
140
|
/**
|
|
138
141
|
* Epic #724 — resolves internal references (`caelo:page/<id>`,
|
|
139
142
|
* `caelo:media/<id>`) for THIS page: in every placed and nested
|
|
140
|
-
* module and in
|
|
143
|
+
* module and in list entries. A broken reference becomes a
|
|
141
144
|
* `link-target-missing:<kind>/<id>` module failure; without a resolver
|
|
142
145
|
* every reference fails with `link-resolver-unavailable` (loud — a
|
|
143
146
|
* deploy refuses it).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preview-compose.d.ts","sourceRoot":"","sources":["../src/preview-compose.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,OAAO,EAAE,KAAK,YAAY,EAAyB,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAGL,KAAK,oBAAoB,EAE1B,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"preview-compose.d.ts","sourceRoot":"","sources":["../src/preview-compose.ts"],"names":[],"mappings":"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"}
|