@ikas/component-cli 1.4.0-beta.62 → 1.4.0-beta.64

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 (37) hide show
  1. package/dist/commands/create.d.ts.map +1 -1
  2. package/dist/commands/create.js +118 -66
  3. package/dist/commands/create.js.map +1 -1
  4. package/dist/commands/dev.d.ts.map +1 -1
  5. package/dist/commands/dev.js +2 -7
  6. package/dist/commands/dev.js.map +1 -1
  7. package/dist/commands/get-available-values.d.ts +3 -0
  8. package/dist/commands/get-available-values.d.ts.map +1 -0
  9. package/dist/commands/get-available-values.js +49 -0
  10. package/dist/commands/get-available-values.js.map +1 -0
  11. package/dist/commands/proxy.d.ts +39 -0
  12. package/dist/commands/proxy.d.ts.map +1 -0
  13. package/dist/commands/proxy.js +210 -0
  14. package/dist/commands/proxy.js.map +1 -0
  15. package/dist/commands/search-categories.d.ts +3 -0
  16. package/dist/commands/search-categories.d.ts.map +1 -0
  17. package/dist/commands/search-categories.js +26 -0
  18. package/dist/commands/search-categories.js.map +1 -0
  19. package/dist/commands/set-dynamic-value.d.ts +3 -0
  20. package/dist/commands/set-dynamic-value.d.ts.map +1 -0
  21. package/dist/commands/set-dynamic-value.js +54 -0
  22. package/dist/commands/set-dynamic-value.js.map +1 -0
  23. package/dist/commands/update-section-props.d.ts +3 -0
  24. package/dist/commands/update-section-props.d.ts.map +1 -0
  25. package/dist/commands/update-section-props.js +43 -0
  26. package/dist/commands/update-section-props.js.map +1 -0
  27. package/dist/types.d.ts +0 -10
  28. package/dist/types.d.ts.map +1 -1
  29. package/dist/utils/component-helpers.d.ts +2 -2
  30. package/dist/utils/component-helpers.d.ts.map +1 -1
  31. package/dist/utils/component-helpers.js +4 -71
  32. package/dist/utils/component-helpers.js.map +1 -1
  33. package/dist/utils/websocket-server.d.ts +2 -4
  34. package/dist/utils/websocket-server.d.ts.map +1 -1
  35. package/dist/utils/websocket-server.js +1 -1
  36. package/dist/utils/websocket-server.js.map +1 -1
  37. package/package.json +1 -1
@@ -0,0 +1,39 @@
1
+ import { Command } from "commander";
2
+ import { type ViteDevServer } from "vite";
3
+ export declare const DEFAULT_ADMIN_PORT = 3002;
4
+ export declare const DEFAULT_EDITOR_PORT = 3003;
5
+ export declare const PROD_EDITOR_URL = "https://studio.ikasapps.com";
6
+ export declare const PROD_ADMIN_DOMAIN = "myikas.com";
7
+ export declare const DEV_EDITOR_URL = "https://studio-dev.ikasapps.com";
8
+ export declare const DEV_ADMIN_DOMAIN = "myikas.dev";
9
+ export declare const DEFAULT_EDITOR_URL = "https://studio.ikasapps.com";
10
+ export declare const DEFAULT_ADMIN_DOMAIN = "myikas.com";
11
+ export declare const DEFAULT_PROXY_PORT = 3002;
12
+ export interface StartProxyOptions {
13
+ store: string;
14
+ adminPort?: number;
15
+ editorPort?: number;
16
+ editorUrl?: string;
17
+ adminDomain?: string;
18
+ }
19
+ export interface ProxyHandle {
20
+ adminVite: ViteDevServer;
21
+ editorVite: ViteDevServer;
22
+ adminTarget: string;
23
+ editorTarget: string;
24
+ adminUrl: string;
25
+ editorUrl: string;
26
+ adminPort: number;
27
+ editorPort: number;
28
+ /** Close both underlying Vite servers. */
29
+ close(): Promise<void>;
30
+ }
31
+ export declare function startProxy(opts: StartProxyOptions): Promise<ProxyHandle>;
32
+ export declare function printProxyBanner(handle: ProxyHandle): void;
33
+ export declare function promptForStore(): Promise<string>;
34
+ export declare function resolveEnvironmentDefaults(dev: boolean): {
35
+ editorUrl: string;
36
+ adminDomain: string;
37
+ };
38
+ export declare function createProxyCommand(): Command;
39
+ //# sourceMappingURL=proxy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../src/commands/proxy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,EAAoC,KAAK,aAAa,EAAE,MAAM,MAAM,CAAC;AAE5E,eAAO,MAAM,kBAAkB,OAAO,CAAC;AACvC,eAAO,MAAM,mBAAmB,OAAO,CAAC;AAExC,eAAO,MAAM,eAAe,gCAAgC,CAAC;AAC7D,eAAO,MAAM,iBAAiB,eAAe,CAAC;AAE9C,eAAO,MAAM,cAAc,oCAAoC,CAAC;AAChE,eAAO,MAAM,gBAAgB,eAAe,CAAC;AAG7C,eAAO,MAAM,kBAAkB,gCAAkB,CAAC;AAClD,eAAO,MAAM,oBAAoB,eAAoB,CAAC;AAGtD,eAAO,MAAM,kBAAkB,OAAqB,CAAC;AAErD,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,aAAa,CAAC;IACzB,UAAU,EAAE,aAAa,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IAEnB,0CAA0C;IAC1C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,CA8E9E;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,WAAW,QAQnD;AAED,wBAAsB,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,CActD;AAED,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,OAAO;;;EAItD;AAED,wBAAgB,kBAAkB,IAAI,OAAO,CAiC5C"}
@@ -0,0 +1,210 @@
1
+ import { Command } from "commander";
2
+ import chalk from "chalk";
3
+ import inquirer from "inquirer";
4
+ import { createServer as createViteServer } from "vite";
5
+ export const DEFAULT_ADMIN_PORT = 3002;
6
+ export const DEFAULT_EDITOR_PORT = 3003;
7
+ export const PROD_EDITOR_URL = "https://studio.ikasapps.com";
8
+ export const PROD_ADMIN_DOMAIN = "myikas.com";
9
+ export const DEV_EDITOR_URL = "https://studio-dev.ikasapps.com";
10
+ export const DEV_ADMIN_DOMAIN = "myikas.dev";
11
+ // Default environment = prod. `--dev` flips to dev.
12
+ export const DEFAULT_EDITOR_URL = PROD_EDITOR_URL;
13
+ export const DEFAULT_ADMIN_DOMAIN = PROD_ADMIN_DOMAIN;
14
+ // Kept for the legacy single-port fallback (no longer used by default).
15
+ export const DEFAULT_PROXY_PORT = DEFAULT_ADMIN_PORT;
16
+ export async function startProxy(opts) {
17
+ const adminPort = opts.adminPort ?? DEFAULT_ADMIN_PORT;
18
+ const editorPort = opts.editorPort ?? DEFAULT_EDITOR_PORT;
19
+ const editorTarget = opts.editorUrl ?? DEFAULT_EDITOR_URL;
20
+ const adminDomain = opts.adminDomain ?? DEFAULT_ADMIN_DOMAIN;
21
+ const adminTarget = `https://${opts.store}.${adminDomain}`;
22
+ const adminUrl = `http://localhost:${adminPort}`;
23
+ const editorUrl = `http://localhost:${editorPort}`;
24
+ // Editor proxy: dedicated port so the editor's absolute asset paths
25
+ // (e.g. `/assets/index-*.js`) resolve correctly against its own origin.
26
+ const editorVite = await createViteServer({
27
+ configFile: false,
28
+ appType: "custom",
29
+ logLevel: "warn",
30
+ server: {
31
+ port: editorPort,
32
+ strictPort: true,
33
+ host: "localhost",
34
+ cors: true,
35
+ proxy: {
36
+ "/": {
37
+ target: editorTarget,
38
+ changeOrigin: true,
39
+ secure: true,
40
+ ws: true,
41
+ configure: (proxy) => {
42
+ stripSecurityHeaders(proxy);
43
+ }
44
+ }
45
+ }
46
+ }
47
+ });
48
+ await editorVite.listen();
49
+ // Admin proxy: rewrites the deployed editor origin to our editor proxy URL
50
+ // in any text response so bundled iframe srcs point at localhost.
51
+ const adminVite = await createViteServer({
52
+ configFile: false,
53
+ appType: "custom",
54
+ logLevel: "warn",
55
+ server: {
56
+ port: adminPort,
57
+ strictPort: true,
58
+ host: "localhost",
59
+ cors: true,
60
+ proxy: {
61
+ "/": {
62
+ target: adminTarget,
63
+ changeOrigin: true,
64
+ secure: true,
65
+ ws: true,
66
+ selfHandleResponse: true,
67
+ configure: (proxy) => {
68
+ stripSecurityHeaders(proxy);
69
+ disableCompression(proxy);
70
+ rewriteAdminBody(proxy, editorTarget, editorUrl);
71
+ }
72
+ }
73
+ }
74
+ }
75
+ });
76
+ await adminVite.listen();
77
+ return {
78
+ adminVite,
79
+ editorVite,
80
+ adminTarget,
81
+ editorTarget,
82
+ adminUrl,
83
+ editorUrl,
84
+ adminPort,
85
+ editorPort,
86
+ async close() {
87
+ try {
88
+ await adminVite.close();
89
+ }
90
+ catch { /* ignore */ }
91
+ try {
92
+ await editorVite.close();
93
+ }
94
+ catch { /* ignore */ }
95
+ }
96
+ };
97
+ }
98
+ export function printProxyBanner(handle) {
99
+ console.log("");
100
+ console.log(chalk.green(` Admin proxied: ${handle.adminUrl} -> ${handle.adminTarget}`));
101
+ console.log(chalk.green(` Editor proxied: ${handle.editorUrl} -> ${handle.editorTarget}`));
102
+ console.log("");
103
+ console.log(chalk.cyan(" Open your admin panel:"));
104
+ console.log(chalk.yellow(` ${handle.adminUrl}/admin/storefront`));
105
+ console.log("");
106
+ }
107
+ export async function promptForStore() {
108
+ const answer = await inquirer.prompt([
109
+ {
110
+ type: "input",
111
+ name: "store",
112
+ message: "Which store do you want to proxy? (e.g. 'storename' for storename.myikas.com)",
113
+ validate: (v) => v && /^[a-z0-9-]+$/i.test(v)
114
+ ? true
115
+ : "Store name must be non-empty alphanumeric (dashes allowed)"
116
+ }
117
+ ]);
118
+ return answer.store;
119
+ }
120
+ export function resolveEnvironmentDefaults(dev) {
121
+ return dev
122
+ ? { editorUrl: DEV_EDITOR_URL, adminDomain: DEV_ADMIN_DOMAIN }
123
+ : { editorUrl: PROD_EDITOR_URL, adminDomain: PROD_ADMIN_DOMAIN };
124
+ }
125
+ export function createProxyCommand() {
126
+ const command = new Command("proxy");
127
+ command
128
+ .description("Run localhost proxies for the ikas admin panel + editor so local code components can connect without HTTPS/mixed-content issues")
129
+ .option("-s, --store <name>", "Store name (e.g. 'storename' for storename.myikas.com)")
130
+ .option("-p, --port <port>", `Admin port (default: ${DEFAULT_ADMIN_PORT})`, String(DEFAULT_ADMIN_PORT))
131
+ .option("--editor-port <port>", `Editor port (default: ${DEFAULT_EDITOR_PORT})`, String(DEFAULT_EDITOR_PORT))
132
+ .option("--dev", "Use ikas dev environment (.myikas.dev + studio-dev.ikasapps.com) instead of prod")
133
+ .option("-e, --editor <url>", "Override editor URL to proxy")
134
+ .option("-d, --domain <domain>", "Override admin domain suffix")
135
+ .action(async (opts) => {
136
+ const storeName = opts.store || (await promptForStore());
137
+ const envDefaults = resolveEnvironmentDefaults(Boolean(opts.dev));
138
+ const handle = await startProxy({
139
+ store: storeName,
140
+ adminPort: Number(opts.port) || DEFAULT_ADMIN_PORT,
141
+ editorPort: Number(opts.editorPort) || DEFAULT_EDITOR_PORT,
142
+ editorUrl: opts.editor || envDefaults.editorUrl,
143
+ adminDomain: opts.domain || envDefaults.adminDomain
144
+ });
145
+ printProxyBanner(handle);
146
+ console.log(chalk.gray(" Keep `ikas-component dev` running in another terminal for the WS server."));
147
+ });
148
+ return command;
149
+ }
150
+ /**
151
+ * Strip headers that prevent the proxied pages from running in an HTTP context
152
+ * (e.g. strict CSPs, framing rules). We need this because the admin/editor are
153
+ * normally loaded over HTTPS and may ship headers that are hostile to being
154
+ * served over http://localhost.
155
+ */
156
+ function stripSecurityHeaders(proxy) {
157
+ proxy.on("proxyRes", (proxyRes) => {
158
+ delete proxyRes.headers["content-security-policy"];
159
+ delete proxyRes.headers["content-security-policy-report-only"];
160
+ delete proxyRes.headers["strict-transport-security"];
161
+ delete proxyRes.headers["cross-origin-opener-policy"];
162
+ delete proxyRes.headers["cross-origin-embedder-policy"];
163
+ delete proxyRes.headers["cross-origin-resource-policy"];
164
+ delete proxyRes.headers["x-frame-options"];
165
+ });
166
+ }
167
+ /**
168
+ * Force identity encoding so response bodies arrive uncompressed and can be
169
+ * string-rewritten. Without this, admin responses come back gzip/brotli and
170
+ * the rewriter below would corrupt them.
171
+ */
172
+ function disableCompression(proxy) {
173
+ proxy.on("proxyReq", (proxyReq) => {
174
+ proxyReq.setHeader("accept-encoding", "identity");
175
+ });
176
+ }
177
+ /**
178
+ * For text responses from the admin target, swap the deployed editor origin
179
+ * with the local editor proxy URL so the iframe src in the admin's bundled JS
180
+ * points at localhost instead of the HTTPS origin. That keeps everything on
181
+ * http://localhost, which is what unblocks ws://localhost:5201.
182
+ */
183
+ function rewriteAdminBody(proxy, fromUrl, toUrl) {
184
+ proxy.on("proxyRes", (proxyRes, _req, res) => {
185
+ const contentType = String(proxyRes.headers["content-type"] || "");
186
+ const isText = /text\/|application\/(javascript|json|xml|xhtml)/i.test(contentType);
187
+ for (const [k, v] of Object.entries(proxyRes.headers)) {
188
+ if (k.toLowerCase() === "content-length")
189
+ continue;
190
+ if (v !== undefined)
191
+ res.setHeader(k, v);
192
+ }
193
+ res.statusCode = proxyRes.statusCode || 200;
194
+ if (!isText) {
195
+ proxyRes.pipe(res);
196
+ return;
197
+ }
198
+ const chunks = [];
199
+ proxyRes.on("data", (c) => chunks.push(c));
200
+ proxyRes.on("end", () => {
201
+ let body = Buffer.concat(chunks).toString("utf8");
202
+ body = body.split(fromUrl).join(toUrl);
203
+ const out = Buffer.from(body, "utf8");
204
+ res.setHeader("content-length", String(out.length));
205
+ res.end(out);
206
+ });
207
+ proxyRes.on("error", () => res.end());
208
+ });
209
+ }
210
+ //# sourceMappingURL=proxy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../src/commands/proxy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function createSearchCategoriesCommand(): Command;
3
+ //# sourceMappingURL=search-categories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-categories.d.ts","sourceRoot":"","sources":["../../src/commands/search-categories.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA6BpC,wBAAgB,6BAA6B,IAAI,OAAO,CAUvD"}
@@ -0,0 +1,26 @@
1
+ import { Command } from "commander";
2
+ import { printErrorAndExit, printResultAndExit, runEditorAction, } from "../utils/editor-action-client.js";
3
+ async function runSearchCategories(options) {
4
+ const port = options.port ? parseInt(options.port, 10) : undefined;
5
+ try {
6
+ const result = await runEditorAction("search-categories", {
7
+ ...(options.query ? { query: options.query } : {}),
8
+ },
9
+ // The host fetches from the store API, so allow more than the default 10s.
10
+ { ...(port ? { port } : {}), timeoutMs: 20_000 });
11
+ printResultAndExit(result);
12
+ }
13
+ catch (e) {
14
+ printErrorAndExit(e);
15
+ }
16
+ }
17
+ export function createSearchCategoriesCommand() {
18
+ const cmd = new Command("search-categories");
19
+ cmd
20
+ .description("Search the connected store's product categories and return each category's id (categoryId), name, slug, and parentId. Use the categoryId to fill a CATEGORY prop value via `ikas-component update-section-prop`. Requires the editor embedded in the ikas admin panel (the host runs the search).")
21
+ .option("--query <text>", "Free-text search query (category name, slug)")
22
+ .option("--port <port>", "Dev server WebSocket port", "5201")
23
+ .action(runSearchCategories);
24
+ return cmd;
25
+ }
26
+ //# sourceMappingURL=search-categories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-categories.js","sourceRoot":"","sources":["../../src/commands/search-categories.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,GAChB,MAAM,kCAAkC,CAAC;AAO1C,KAAK,UAAU,mBAAmB,CAAC,OAAgC;IACjE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACnE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,eAAe,CAClC,mBAAmB,EACnB;YACE,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACnD;QACD,2EAA2E;QAC3E,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CACjD,CAAC;QACF,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,iBAAiB,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,6BAA6B;IAC3C,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC7C,GAAG;SACA,WAAW,CACV,mSAAmS,CACpS;SACA,MAAM,CAAC,gBAAgB,EAAE,8CAA8C,CAAC;SACxE,MAAM,CAAC,eAAe,EAAE,2BAA2B,EAAE,MAAM,CAAC;SAC5D,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAC/B,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function createSetDynamicValueCommand(): Command;
3
+ //# sourceMappingURL=set-dynamic-value.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-dynamic-value.d.ts","sourceRoot":"","sources":["../../src/commands/set-dynamic-value.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsDpC,wBAAgB,4BAA4B,IAAI,OAAO,CActD"}
@@ -0,0 +1,54 @@
1
+ import { Command } from "commander";
2
+ import { printErrorAndExit, printResultAndExit, runEditorAction, } from "../utils/editor-action-client.js";
3
+ function parseListPath(raw) {
4
+ if (!raw)
5
+ return undefined;
6
+ let parsed;
7
+ try {
8
+ parsed = JSON.parse(raw);
9
+ }
10
+ catch {
11
+ printErrorAndExit(new Error('--list-path must be JSON, e.g. \'[{"propId":"<listPropId>","index":0}]\''));
12
+ }
13
+ if (!Array.isArray(parsed)) {
14
+ printErrorAndExit(new Error("--list-path must be a JSON array of { propId, index }."));
15
+ }
16
+ return parsed;
17
+ }
18
+ async function runSetDynamicValue(options) {
19
+ if (!options.elementId)
20
+ printErrorAndExit(new Error("--element-id is required"));
21
+ if (!options.propId)
22
+ printErrorAndExit(new Error("--prop-id is required (the prop to bind)"));
23
+ if (!options.ref)
24
+ printErrorAndExit(new Error("--ref is required (a value's `ref` from get-available-values)"));
25
+ const listPath = parseListPath(options.listPath);
26
+ const port = options.port ? parseInt(options.port, 10) : undefined;
27
+ try {
28
+ const result = await runEditorAction("set-dynamic-value", {
29
+ ...(options.pageId ? { pageId: options.pageId } : {}),
30
+ elementId: options.elementId,
31
+ propId: options.propId,
32
+ ref: options.ref,
33
+ ...(listPath ? { listPath } : {}),
34
+ }, port ? { port } : {});
35
+ printResultAndExit(result);
36
+ }
37
+ catch (e) {
38
+ printErrorAndExit(e);
39
+ }
40
+ }
41
+ export function createSetDynamicValueCommand() {
42
+ const cmd = new Command("set-dynamic-value");
43
+ cmd
44
+ .description("Bind a prop to a DYNAMIC value (a variable / loop item field) instead of a static value. --ref is a value's `ref` from `get-available-values`. For a prop of a component inside a COMPONENT_LIST, pass the same --list-path you used for get-available-values. Replaces any static value on that prop.")
45
+ .requiredOption("--element-id <id>", "Placed section elementId (from `list-page-sections`)")
46
+ .requiredOption("--prop-id <id>", "Prop id to bind")
47
+ .requiredOption("--ref <ref>", "A value `ref` from `get-available-values`")
48
+ .option("--page-id <id>", "Page id (from `list-pages`)")
49
+ .option("--list-path <json>", 'JSON path into a COMPONENT_LIST, e.g. \'[{"propId":"<listPropId>","index":0}]\'')
50
+ .option("--port <port>", "Dev server WebSocket port", "5201")
51
+ .action(runSetDynamicValue);
52
+ return cmd;
53
+ }
54
+ //# sourceMappingURL=set-dynamic-value.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-dynamic-value.js","sourceRoot":"","sources":["../../src/commands/set-dynamic-value.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,GAChB,MAAM,kCAAkC,CAAC;AAW1C,SAAS,aAAa,CAAC,GAAY;IACjC,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IAC3B,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,iBAAiB,CAAC,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAC,CAAC;IAC3G,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,iBAAiB,CAAC,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC,CAAC;IACzF,CAAC;IACD,OAAO,MAAkD,CAAC;AAC5D,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,OAA+B;IAC/D,IAAI,CAAC,OAAO,CAAC,SAAS;QAAE,iBAAiB,CAAC,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAC;IACjF,IAAI,CAAC,OAAO,CAAC,MAAM;QAAE,iBAAiB,CAAC,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC,CAAC;IAC9F,IAAI,CAAC,OAAO,CAAC,GAAG;QAAE,iBAAiB,CAAC,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC,CAAC;IAChH,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACjD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACnE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,eAAe,CAClC,mBAAmB,EACnB;YACE,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrD,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAClC,EACD,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CACrB,CAAC;QACF,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,iBAAiB,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,4BAA4B;IAC1C,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC7C,GAAG;SACA,WAAW,CACV,wSAAwS,CACzS;SACA,cAAc,CAAC,mBAAmB,EAAE,sDAAsD,CAAC;SAC3F,cAAc,CAAC,gBAAgB,EAAE,iBAAiB,CAAC;SACnD,cAAc,CAAC,aAAa,EAAE,2CAA2C,CAAC;SAC1E,MAAM,CAAC,gBAAgB,EAAE,6BAA6B,CAAC;SACvD,MAAM,CAAC,oBAAoB,EAAE,iFAAiF,CAAC;SAC/G,MAAM,CAAC,eAAe,EAAE,2BAA2B,EAAE,MAAM,CAAC;SAC5D,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAC9B,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function createUpdateSectionPropsCommand(): Command;
3
+ //# sourceMappingURL=update-section-props.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-section-props.d.ts","sourceRoot":"","sources":["../../src/commands/update-section-props.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoDpC,wBAAgB,+BAA+B,IAAI,OAAO,CAezD"}
@@ -0,0 +1,43 @@
1
+ import { Command } from "commander";
2
+ import { printErrorAndExit, printResultAndExit, runEditorAction, } from "../utils/editor-action-client.js";
3
+ async function runUpdateSectionProps(options) {
4
+ if (!options.pageId || typeof options.pageId !== "string") {
5
+ printErrorAndExit(new Error("--page-id is required (use `ikas-component list-pages`)"));
6
+ }
7
+ if (!options.elementId || typeof options.elementId !== "string") {
8
+ printErrorAndExit(new Error("--element-id is required (use `ikas-component list-page-sections`)"));
9
+ }
10
+ if (options.updates === undefined) {
11
+ printErrorAndExit(new Error('--updates is required: a JSON array, e.g. \'[{"propName":"heading","value":{"value":"Hi"}}]\''));
12
+ }
13
+ let updates;
14
+ try {
15
+ updates = JSON.parse(options.updates);
16
+ }
17
+ catch {
18
+ printErrorAndExit(new Error(`--updates must be valid JSON. Received: ${options.updates}`));
19
+ }
20
+ if (!Array.isArray(updates) || updates.length === 0) {
21
+ printErrorAndExit(new Error('--updates must be a non-empty JSON array of { propId|propName, value } objects.'));
22
+ }
23
+ const port = options.port ? parseInt(options.port, 10) : undefined;
24
+ try {
25
+ const result = await runEditorAction("update-section-props", { pageId: options.pageId, elementId: options.elementId, updates }, { ...(port ? { port } : {}), timeoutMs: 30_000 });
26
+ printResultAndExit(result);
27
+ }
28
+ catch (e) {
29
+ printErrorAndExit(e);
30
+ }
31
+ }
32
+ export function createUpdateSectionPropsCommand() {
33
+ const cmd = new Command("update-section-props");
34
+ cmd
35
+ .description("Set MANY prop values on one placed section in a single call (batch update-section-prop). --updates is a JSON array of { propId|propName, value }, each value using the same per-type shape as update-section-prop. All-or-nothing: every entry is resolved and validated before any is written.")
36
+ .requiredOption("--page-id <id>", "Page id (from `ikas-component list-pages`)")
37
+ .requiredOption("--element-id <id>", "Placed section elementId (from `ikas-component list-page-sections`)")
38
+ .requiredOption("--updates <json>", 'JSON array, e.g. \'[{"propName":"heading","value":{"value":"Hi"}},{"propName":"image","value":{"id":"<asset-id>"}}]\'')
39
+ .option("--port <port>", "Dev server WebSocket port", "5201")
40
+ .action(runUpdateSectionProps);
41
+ return cmd;
42
+ }
43
+ //# sourceMappingURL=update-section-props.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-section-props.js","sourceRoot":"","sources":["../../src/commands/update-section-props.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,GAChB,MAAM,kCAAkC,CAAC;AAS1C,KAAK,UAAU,qBAAqB,CAAC,OAAkC;IACrE,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC1D,iBAAiB,CAAC,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC,CAAC;IAC1F,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,OAAO,OAAO,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;QAChE,iBAAiB,CAAC,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC,CAAC;IACrG,CAAC;IACD,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAClC,iBAAiB,CACf,IAAI,KAAK,CAAC,+FAA+F,CAAC,CAC3G,CAAC;IACJ,CAAC;IAED,IAAI,OAAgB,CAAC;IACrB,IAAI,CAAC;QACH,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,iBAAiB,CAAC,IAAI,KAAK,CAAC,2CAA2C,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC7F,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpD,iBAAiB,CACf,IAAI,KAAK,CAAC,iFAAiF,CAAC,CAC7F,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACnE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,eAAe,CAClC,sBAAsB,EACtB,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE,EACjE,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CACjD,CAAC;QACF,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,iBAAiB,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,+BAA+B;IAC7C,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAChD,GAAG;SACA,WAAW,CACV,iSAAiS,CAClS;SACA,cAAc,CAAC,gBAAgB,EAAE,4CAA4C,CAAC;SAC9E,cAAc,CAAC,mBAAmB,EAAE,qEAAqE,CAAC;SAC1G,cAAc,CACb,kBAAkB,EAClB,uHAAuH,CACxH;SACA,MAAM,CAAC,eAAe,EAAE,2BAA2B,EAAE,MAAM,CAAC;SAC5D,MAAM,CAAC,qBAAqB,CAAC,CAAC;IACjC,OAAO,GAAG,CAAC;AACb,CAAC"}
package/dist/types.d.ts CHANGED
@@ -114,14 +114,4 @@ export interface SharedModuleData {
114
114
  canvasClientJs: string;
115
115
  compiledCss: string;
116
116
  }
117
- /**
118
- * Theme global-variable metadata carried over the dev-server `sync-types` protocol
119
- * (name / displayName / type only — no value). Drives the generated `ThemeSettingName`
120
- * union in the author's `src/global-types.ts`.
121
- */
122
- export type ThemeSettingMeta = {
123
- name: string;
124
- displayName: string;
125
- type: string;
126
- };
127
117
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { ComponentDefinition, ComponentProp, ComponentPropGroup, ThemeSettingMeta } from "../types.js";
1
+ import type { ComponentDefinition, ComponentProp, ComponentPropGroup } from "../types.js";
2
2
  /**
3
3
  * Generate an 8-character random alphanumeric project ID (lowercase + digits).
4
4
  * Used to namespace component IDs across independent CLI projects.
@@ -74,7 +74,7 @@ export declare function generateGlobalTypesFile(editorTypes?: Array<{
74
74
  * Callers should compute this from `config.components[*].props[*].enumTypeId`
75
75
  * so unused enums are excluded from `global-types.ts`.
76
76
  */
77
- usedEnumIds?: Set<string> | null, themeSettings?: Array<ThemeSettingMeta> | null): string;
77
+ usedEnumIds?: Set<string> | null): string;
78
78
  export declare function generateComponentFile(componentName: string, props: ComponentProp[], type?: "component" | "section"): string;
79
79
  export declare function generateStylesFile(componentName: string, type?: "component" | "section"): string;
80
80
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"component-helpers.d.ts","sourceRoot":"","sources":["../../src/utils/component-helpers.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG5G;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAQ1C;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAQzC;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,MAAM,EAAE,EACf,UAAU,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC,GAChC;IAAE,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAGvB;AAED,eAAO,MAAM,UAAU,0YA+Bb,CAAC;AAEX,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CA+BlD,CAAC;AAEF,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAK/C;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAMhD;AA+CD,wBAAgB,iBAAiB,CAC/B,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,aAAa,EAAE,EACtB,IAAI,CAAC,EAAE,WAAW,GAAG,SAAS,EAC9B,WAAW,CAAC,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAC,GAAG,IAAI,EAC9F,WAAW,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,GAC9C,MAAM,CAmER;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,KAAK,CAAC;IAAE,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,GAAG,IAAI,GAAG,SAAS,GAC/E,GAAG,CAAC,MAAM,CAAC,CASb;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,EACvC,UAAU,EAAE,KAAK,CAAC;IAAE,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,GAAG,IAAI,GAAG,SAAS,GAChG,GAAG,CAAC,MAAM,CAAC,CA2Cb;AAqED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,WAAW,CAAC,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAC,GAAG,IAAI,EAC9F,WAAW,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI;AAC/C;;;;;GAKG;AACH,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,EAChC,aAAa,CAAC,EAAE,KAAK,CAAC,gBAAgB,CAAC,GAAG,IAAI,GAC7C,MAAM,CA6DR;AAED,wBAAgB,qBAAqB,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,SAAS,GAAG,MAAM,CAU3H;AAED,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,SAAS,GAAG,MAAM,CAKhG;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,QAS/E;AAMD;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,mBAAmB,EAAE,CAAC;CAClC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,kBAAkB,EAAE,EAChC,KAAK,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GAC3D,mBAAmB,EAAE,CA8CvB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,mBAAmB,GAAG,MAAM,EAAE,CAsC3E;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,UAAU,EAAE,kBAAkB,EAAE,EAChC,OAAO,EAAE,MAAM,GACd;IAAE,KAAK,EAAE,kBAAkB,CAAC;IAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAAA;CAAE,GAAG,IAAI,CAczE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,kBAAkB,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAWjF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,kBAAkB,EAAE,EAChC,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,GAAG,IAAI,EAC5B,KAAK,CAAC,EAAE,MAAM,GACb,kBAAkB,EAAE,CAsCtB"}
1
+ {"version":3,"file":"component-helpers.d.ts","sourceRoot":"","sources":["../../src/utils/component-helpers.ts"],"names":[],"mappings":"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"}
@@ -298,67 +298,6 @@ export function collectUsedCustomTypeIds(customTypes, components) {
298
298
  }
299
299
  return used;
300
300
  }
301
- /** Map a global-variable kind to a TS type. Primitives narrowed; complex kinds stay `any`. */
302
- function themeSettingTsType(type) {
303
- switch (type) {
304
- case "NUMBER":
305
- return "number";
306
- case "BOOLEAN":
307
- return "boolean";
308
- case "TEXT":
309
- case "RICH_TEXT":
310
- case "COLOR":
311
- return "string";
312
- default:
313
- return "any"; // IMAGE, BORDER, SHADOW — object shapes can drift from runtime
314
- }
315
- }
316
- /**
317
- * Import line for the typed theme-globals wrapper. Must sit at the top of the generated
318
- * file (after the header). Emitted only when there are theme globals.
319
- *
320
- * A module augmentation can't deliver key-safety here: the runtime `getThemeSettingValue`
321
- * is declared `(name: string): any`, so an added narrower overload never wins resolution —
322
- * unknown keys still match `string` and return `any`. A generated wrapper whose parameter
323
- * is `ThemeSettingName` (no `string` overload) does reject unknown keys and narrow the value.
324
- */
325
- const THEME_GLOBALS_IMPORT = `import { getThemeSettingValue as _getThemeSettingValueRaw } from "@ikas/bp-storefront";\n`;
326
- /**
327
- * Build the theme-globals block for `src/global-types.ts`: the key union, a value-type map,
328
- * and a type-safe `themeValue` wrapper (authors import it from `./global-types`). The wrapper
329
- * is deliberately named differently from the SDK's `getThemeSettingValue` so authors can't
330
- * accidentally import the untyped SDK version and lose key-safety (no shadowing).
331
- * Returns "" when there are no globals (an empty union would resolve to `never`). The import
332
- * the wrapper needs is emitted separately via {@link THEME_GLOBALS_IMPORT}.
333
- */
334
- function generateThemeGlobalsBlock(themeSettings) {
335
- if (!themeSettings || themeSettings.length === 0)
336
- return "";
337
- const sorted = [...themeSettings].sort((a, b) => a.name.localeCompare(b.name));
338
- const unionLines = sorted
339
- .map(s => {
340
- // Escape the JSDoc comment terminator to avoid prematurely closing the
341
- // generated `/** ... */` block when a displayName contains `*/`.
342
- const label = String(s.displayName).replace(/\*\//g, "*\\/");
343
- return ` /** ${label} (${s.type}) */\n | ${JSON.stringify(s.name)}`;
344
- })
345
- .join("\n");
346
- const mapLines = sorted
347
- .map(s => ` ${JSON.stringify(s.name)}: ${themeSettingTsType(s.type)};`)
348
- .join("\n");
349
- return (`\n/** Stable keys of theme global variables defined in the editor's "Styles" panel. */\n` +
350
- `export type ThemeSettingName =\n${unionLines};\n\n` +
351
- `/** Narrowed value type per global key (primitives only; complex kinds are \`any\`). */\n` +
352
- `type ThemeSettingValueMap = {\n${mapLines}\n};\n\n` +
353
- `/**\n` +
354
- ` * Type-safe theme global accessor — only accepts keys declared in the editor's Styles panel.\n` +
355
- ` * Import this from \`./global-types\`, not \`getThemeSettingValue\` from \`@ikas/bp-storefront\`\n` +
356
- ` * (that one is untyped: it accepts any string and returns \`any\`).\n` +
357
- ` */\n` +
358
- `export function themeValue<K extends ThemeSettingName>(name: K): ThemeSettingValueMap[K] {\n` +
359
- ` return _getThemeSettingValueRaw(name) as ThemeSettingValueMap[K];\n` +
360
- `}\n`);
361
- }
362
301
  /**
363
302
  * Generate the content for `src/global-types.ts`.
364
303
  * Collects all custom enum types from editorTypes (preferred) or customTypes (fallback)
@@ -372,7 +311,7 @@ export function generateGlobalTypesFile(editorTypes, customTypes,
372
311
  * Callers should compute this from `config.components[*].props[*].enumTypeId`
373
312
  * so unused enums are excluded from `global-types.ts`.
374
313
  */
375
- usedEnumIds, themeSettings) {
314
+ usedEnumIds) {
376
315
  const header = `// Auto-generated global type definitions for ikas code components.\n// This file is regenerated automatically — do not edit manually.\n`;
377
316
  // Collect all custom enum types with their options
378
317
  // Use a Map keyed by type ID to deduplicate
@@ -413,23 +352,17 @@ usedEnumIds, themeSettings) {
413
352
  }
414
353
  }
415
354
  }
416
- const themeBlock = generateThemeGlobalsBlock(themeSettings);
417
- // The wrapper's runtime import must sit at the top of the file (after the header).
418
- const themeImport = themeBlock ? THEME_GLOBALS_IMPORT : "";
419
355
  if (enumTypes.size === 0) {
420
- if (!themeBlock) {
421
- return `${header}// Custom enum types from the editor will appear here.\n\nexport {};\n`;
422
- }
423
- return `${header}${themeImport}${themeBlock}`;
356
+ return `${header}// Custom enum types from the editor will appear here.\n\nexport {};\n`;
424
357
  }
425
358
  // Sort by type name for stable output
426
359
  const sorted = Array.from(enumTypes.values()).sort((a, b) => a.name.localeCompare(b.name));
427
- let content = `${header}${themeImport}\n`;
360
+ let content = `${header}\n`;
428
361
  for (const enumType of sorted) {
429
362
  const unionType = enumType.options.map(v => `"${v}"`).join(" | ");
430
363
  content += `/** Enum type: ${enumType.id} */\nexport type ${enumType.name} = ${unionType};\n`;
431
364
  }
432
- return `${content}${themeBlock}`;
365
+ return content;
433
366
  }
434
367
  export function generateComponentFile(componentName, props, type) {
435
368
  const propsDestructure = props.map((p) => p.name).join(", ");