@sudajs/theme-engine 0.2.1 → 1.1.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.
Files changed (41) hide show
  1. package/dist/agent.d.ts +288 -20
  2. package/dist/agent.d.ts.map +1 -1
  3. package/dist/agent.js +73 -9
  4. package/dist/agent.js.map +1 -1
  5. package/dist/assets.d.ts +21 -0
  6. package/dist/assets.d.ts.map +1 -1
  7. package/dist/assets.js +16 -0
  8. package/dist/assets.js.map +1 -1
  9. package/dist/check.d.ts +54 -0
  10. package/dist/check.d.ts.map +1 -0
  11. package/dist/check.js +120 -0
  12. package/dist/check.js.map +1 -0
  13. package/dist/components/base-blocks.d.ts.map +1 -1
  14. package/dist/components/base-blocks.js +90 -6
  15. package/dist/components/base-blocks.js.map +1 -1
  16. package/dist/components/containers.d.ts.map +1 -1
  17. package/dist/components/containers.js +51 -2
  18. package/dist/components/containers.js.map +1 -1
  19. package/dist/index.d.ts +1 -1
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js +1 -1
  22. package/dist/index.js.map +1 -1
  23. package/dist/registry/filesystem.d.ts +20 -5
  24. package/dist/registry/filesystem.d.ts.map +1 -1
  25. package/dist/registry/filesystem.js +36 -25
  26. package/dist/registry/filesystem.js.map +1 -1
  27. package/dist/runtime.d.ts +1 -1
  28. package/dist/runtime.d.ts.map +1 -1
  29. package/dist/runtime.js +1 -1
  30. package/dist/runtime.js.map +1 -1
  31. package/dist/server.d.ts +2 -2
  32. package/dist/server.d.ts.map +1 -1
  33. package/dist/server.js +2 -2
  34. package/dist/server.js.map +1 -1
  35. package/dist/types.d.ts +38 -18
  36. package/dist/types.d.ts.map +1 -1
  37. package/package.json +1 -1
  38. package/dist/ai/slots.d.ts +0 -33
  39. package/dist/ai/slots.d.ts.map +0 -1
  40. package/dist/ai/slots.js +0 -139
  41. package/dist/ai/slots.js.map +0 -1
package/dist/ai/slots.js DELETED
@@ -1,139 +0,0 @@
1
- function getContent(data) {
2
- const content = data.content;
3
- if (!Array.isArray(content)) {
4
- return [];
5
- }
6
- return content.filter((item) => typeof item === "object" &&
7
- item !== null &&
8
- typeof item.type === "string" &&
9
- typeof item.props === "object" &&
10
- item.props !== null);
11
- }
12
- /** Splits a dot/bracket path into segments: `blocks[0].heading` -> ["blocks","0","heading"]. */
13
- function parsePath(path) {
14
- return path
15
- .replace(/\[(\w+)\]/g, ".$1")
16
- .split(".")
17
- .filter((segment) => segment.length > 0);
18
- }
19
- function getAtPath(root, path) {
20
- let current = root;
21
- for (const segment of parsePath(path)) {
22
- if (current === null || current === undefined) {
23
- return undefined;
24
- }
25
- if (Array.isArray(current)) {
26
- const index = Number(segment);
27
- if (!Number.isInteger(index)) {
28
- return undefined;
29
- }
30
- current = current[index];
31
- }
32
- else if (typeof current === "object") {
33
- current = current[segment];
34
- }
35
- else {
36
- return undefined;
37
- }
38
- }
39
- return current;
40
- }
41
- /**
42
- * Immutably sets `value` at `path` within `root`, creating intermediate
43
- * objects/arrays as needed. Returns a shallow-cloned copy; the original is not
44
- * mutated.
45
- */
46
- function setAtPath(root, path, value) {
47
- const segments = parsePath(path);
48
- if (segments.length === 0) {
49
- return root;
50
- }
51
- const clone = (node, nextSegment) => {
52
- if (Array.isArray(node)) {
53
- return [...node];
54
- }
55
- if (node && typeof node === "object") {
56
- return { ...node };
57
- }
58
- // Decide container shape from the next key.
59
- return Number.isInteger(Number(nextSegment)) ? [] : {};
60
- };
61
- const result = clone(root, segments[0]);
62
- let cursor = result;
63
- for (let i = 0; i < segments.length - 1; i += 1) {
64
- const segment = segments[i];
65
- const nextSegment = segments[i + 1];
66
- const key = Array.isArray(cursor) ? Number(segment) : segment;
67
- const existing = cursor[key];
68
- const child = clone(existing, nextSegment);
69
- cursor[key] = child;
70
- cursor = child;
71
- }
72
- const lastSegment = segments[segments.length - 1];
73
- const lastKey = Array.isArray(cursor) ? Number(lastSegment) : lastSegment;
74
- cursor[lastKey] = value;
75
- return result;
76
- }
77
- /**
78
- * Walks a page document and returns every AI-editable slot declared by the
79
- * theme's `aiSlots` map (keyed by component type).
80
- */
81
- export function extractAiSlots(data, aiSlots) {
82
- if (!aiSlots) {
83
- return [];
84
- }
85
- const slots = [];
86
- for (const item of getContent(data)) {
87
- const descriptors = aiSlots[item.type];
88
- if (!descriptors) {
89
- continue;
90
- }
91
- const componentId = typeof item.props.id === "string" ? item.props.id : "";
92
- for (const descriptor of descriptors) {
93
- slots.push({
94
- componentId,
95
- type: item.type,
96
- descriptor,
97
- value: getAtPath(item.props, descriptor.path),
98
- });
99
- }
100
- }
101
- return slots;
102
- }
103
- /**
104
- * Applies a batch of AI edits to a page document, scoped strictly to the
105
- * declared `aiSlots` for each component type. Edits targeting unknown
106
- * components or paths outside the allow-list are ignored. Returns a new
107
- * document; the input is not mutated.
108
- */
109
- export function applyAiValues(data, aiSlots, edits) {
110
- if (!aiSlots || edits.length === 0) {
111
- return data;
112
- }
113
- const editsByComponent = new Map();
114
- for (const edit of edits) {
115
- const list = editsByComponent.get(edit.componentId) ?? [];
116
- list.push(edit);
117
- editsByComponent.set(edit.componentId, list);
118
- }
119
- const content = getContent(data);
120
- const nextContent = content.map((item) => {
121
- const componentId = typeof item.props.id === "string" ? item.props.id : "";
122
- const componentEdits = editsByComponent.get(componentId);
123
- const descriptors = aiSlots[item.type];
124
- if (!componentEdits || !descriptors) {
125
- return item;
126
- }
127
- const allowedPaths = new Set(descriptors.map((d) => d.path));
128
- let props = item.props;
129
- for (const edit of componentEdits) {
130
- if (!allowedPaths.has(edit.path)) {
131
- continue;
132
- }
133
- props = setAtPath(props, edit.path, edit.value);
134
- }
135
- return props === item.props ? item : { ...item, props };
136
- });
137
- return { ...data, content: nextContent };
138
- }
139
- //# sourceMappingURL=slots.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"slots.js","sourceRoot":"","sources":["../../src/ai/slots.ts"],"names":[],"mappings":"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"}