@ikas/component-cli 1.4.0-beta.23 → 1.4.0-beta.25

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/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/list-entities.d.ts +3 -0
  5. package/dist/commands/list-entities.d.ts.map +1 -0
  6. package/dist/commands/list-entities.js +32 -0
  7. package/dist/commands/list-entities.js.map +1 -0
  8. package/dist/commands/list-page-sections.d.ts +3 -0
  9. package/dist/commands/list-page-sections.d.ts.map +1 -0
  10. package/dist/commands/list-page-sections.js +25 -0
  11. package/dist/commands/list-page-sections.js.map +1 -0
  12. package/dist/commands/proxy.d.ts +39 -0
  13. package/dist/commands/proxy.d.ts.map +1 -0
  14. package/dist/commands/proxy.js +210 -0
  15. package/dist/commands/proxy.js.map +1 -0
  16. package/dist/commands/search-products.d.ts +3 -0
  17. package/dist/commands/search-products.d.ts.map +1 -0
  18. package/dist/commands/search-products.js +40 -0
  19. package/dist/commands/search-products.js.map +1 -0
  20. package/dist/commands/update-section-prop.d.ts +3 -0
  21. package/dist/commands/update-section-prop.d.ts.map +1 -0
  22. package/dist/commands/update-section-prop.js +59 -0
  23. package/dist/commands/update-section-prop.js.map +1 -0
  24. package/dist/commands/update-section-props.d.ts +3 -0
  25. package/dist/commands/update-section-props.d.ts.map +1 -0
  26. package/dist/commands/update-section-props.js +43 -0
  27. package/dist/commands/update-section-props.js.map +1 -0
  28. package/dist/commands/upload-image.d.ts +3 -0
  29. package/dist/commands/upload-image.d.ts.map +1 -0
  30. package/dist/commands/upload-image.js +79 -0
  31. package/dist/commands/upload-image.js.map +1 -0
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +12 -0
  34. package/dist/index.js.map +1 -1
  35. package/dist/utils/editor-action-client.d.ts +1 -1
  36. package/dist/utils/editor-action-client.d.ts.map +1 -1
  37. package/dist/utils/editor-action-client.js.map +1 -1
  38. package/dist/utils/websocket-server.d.ts +2 -2
  39. package/dist/utils/websocket-server.d.ts.map +1 -1
  40. package/dist/utils/websocket-server.js.map +1 -1
  41. package/package.json +1 -1
@@ -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 createSearchProductsCommand(): Command;
3
+ //# sourceMappingURL=search-products.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-products.d.ts","sourceRoot":"","sources":["../../src/commands/search-products.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2CpC,wBAAgB,2BAA2B,IAAI,OAAO,CAarD"}
@@ -0,0 +1,40 @@
1
+ import { Command } from "commander";
2
+ import { printErrorAndExit, printResultAndExit, runEditorAction, } from "../utils/editor-action-client.js";
3
+ async function runSearchProducts(options) {
4
+ const port = options.port ? parseInt(options.port, 10) : undefined;
5
+ const productIds = options.ids
6
+ ? options.ids
7
+ .split(",")
8
+ .map(s => s.trim())
9
+ .filter(Boolean)
10
+ : undefined;
11
+ const perPage = options.perPage ? parseInt(options.perPage, 10) : undefined;
12
+ const page = options.page ? parseInt(options.page, 10) : undefined;
13
+ try {
14
+ const result = await runEditorAction("search-products", {
15
+ ...(options.query ? { query: options.query } : {}),
16
+ ...(productIds && productIds.length ? { productIds } : {}),
17
+ ...(typeof perPage === "number" && !Number.isNaN(perPage) ? { perPage } : {}),
18
+ ...(typeof page === "number" && !Number.isNaN(page) ? { page } : {}),
19
+ },
20
+ // The host fetches from the store API, so allow more than the default 10s.
21
+ { ...(port ? { port } : {}), timeoutMs: 20_000 });
22
+ printResultAndExit(result);
23
+ }
24
+ catch (e) {
25
+ printErrorAndExit(e);
26
+ }
27
+ }
28
+ export function createSearchProductsCommand() {
29
+ const cmd = new Command("search-products");
30
+ cmd
31
+ .description("Search the connected store's products and return each product's id (productId) + first variantId, name, slug, and variant count. Use the productId/variantId to fill a PRODUCT prop value via `ikas-component update-section-prop`. Requires the editor embedded in the ikas admin panel (the host runs the search).")
32
+ .option("--query <text>", "Free-text search query (name, sku, barcode)")
33
+ .option("--ids <ids>", "Comma-separated product ids to look up directly")
34
+ .option("--per-page <n>", "Results per page")
35
+ .option("--page <n>", "Page number")
36
+ .option("--port <port>", "Dev server WebSocket port", "5201")
37
+ .action(runSearchProducts);
38
+ return cmd;
39
+ }
40
+ //# sourceMappingURL=search-products.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-products.js","sourceRoot":"","sources":["../../src/commands/search-products.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,GAChB,MAAM,kCAAkC,CAAC;AAU1C,KAAK,UAAU,iBAAiB,CAAC,OAA8B;IAC7D,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACnE,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG;QAC5B,CAAC,CAAC,OAAO,CAAC,GAAG;aACR,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aAClB,MAAM,CAAC,OAAO,CAAC;QACpB,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5E,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,iBAAiB,EACjB;YACE,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAClD,GAAG,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1D,GAAG,CAAC,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7E,GAAG,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACrE;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,2BAA2B;IACzC,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC3C,GAAG;SACA,WAAW,CACV,sTAAsT,CACvT;SACA,MAAM,CAAC,gBAAgB,EAAE,6CAA6C,CAAC;SACvE,MAAM,CAAC,aAAa,EAAE,iDAAiD,CAAC;SACxE,MAAM,CAAC,gBAAgB,EAAE,kBAAkB,CAAC;SAC5C,MAAM,CAAC,YAAY,EAAE,aAAa,CAAC;SACnC,MAAM,CAAC,eAAe,EAAE,2BAA2B,EAAE,MAAM,CAAC;SAC5D,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAC7B,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function createUpdateSectionPropCommand(): Command;
3
+ //# sourceMappingURL=update-section-prop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-section-prop.d.ts","sourceRoot":"","sources":["../../src/commands/update-section-prop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA4DpC,wBAAgB,8BAA8B,IAAI,OAAO,CAsBxD"}
@@ -0,0 +1,59 @@
1
+ import { Command } from "commander";
2
+ import { printErrorAndExit, printResultAndExit, runEditorAction, } from "../utils/editor-action-client.js";
3
+ async function runUpdateSectionProp(options) {
4
+ if (!options.pageId || typeof options.pageId !== "string") {
5
+ printErrorAndExit(new Error("--page-id is required (use `ikas-component list-pages` to discover ids)"));
6
+ }
7
+ if (!options.elementId || typeof options.elementId !== "string") {
8
+ printErrorAndExit(new Error("--element-id is required (use `ikas-component list-page-sections` to discover ids)"));
9
+ }
10
+ if (!options.propId && !options.propName) {
11
+ printErrorAndExit(new Error("Provide --prop-id or --prop-name (see `ikas-component list-page-sections`)"));
12
+ }
13
+ if (options.value === undefined) {
14
+ printErrorAndExit(new Error("--value is required (JSON, e.g. '{\"value\":\"Hello\"}')"));
15
+ }
16
+ let value;
17
+ try {
18
+ value = JSON.parse(options.value);
19
+ }
20
+ catch {
21
+ printErrorAndExit(new Error(`--value must be valid JSON (e.g. '{"value":"Hello"}'). Received: ${options.value}`));
22
+ }
23
+ const port = options.port ? parseInt(options.port, 10) : undefined;
24
+ try {
25
+ const result = await runEditorAction("update-section-prop", {
26
+ pageId: options.pageId,
27
+ elementId: options.elementId,
28
+ ...(options.propId ? { propId: options.propId } : {}),
29
+ ...(options.propName ? { propName: options.propName } : {}),
30
+ value,
31
+ }, port ? { port } : {});
32
+ printResultAndExit(result);
33
+ }
34
+ catch (e) {
35
+ printErrorAndExit(e);
36
+ }
37
+ }
38
+ export function createUpdateSectionPropCommand() {
39
+ const cmd = new Command("update-section-prop");
40
+ cmd
41
+ .description([
42
+ "Change a single prop value of a section placed on a page. Target the placement by its elementId (from `ikas-component list-page-sections`) and the prop by --prop-id or --prop-name.",
43
+ "--value is the JSON-encoded prop value. Shape depends on the prop type:",
44
+ " Scalars (TEXT/RICH_TEXT/BOOLEAN/NUMBER/COLOR/ENUM/DATE) are { \"value\": <scalar> } — e.g. '{\"value\":\"Hello\"}', '{\"value\":true}', '{\"value\":\"#FF0000\"}'.",
45
+ " Object props are NOT wrapped: IMAGE/VIDEO/SVG = '{\"id\":\"<asset-id>\",\"altText\":\"...\"}' (get id via `ikas-component upload-image`); PRODUCT = '{\"productId\":\"...\"}'.",
46
+ " LINK = a single link object needing id + linkType + label + subLinks: PAGE = '{\"id\":\"<unique>\",\"linkType\":\"PAGE\",\"label\":\"Home\",\"pageId\":\"<id>\",\"pageType\":\"INDEX\",\"subLinks\":[]}'; EXTERNAL = '{\"id\":\"<unique>\",\"linkType\":\"EXTERNAL\",\"label\":\"Docs\",\"externalLink\":\"https://...\",\"subLinks\":[]}'. (pageId/pageType from `list-pages`.) LIST_OF_LINK = '{\"links\":[<link>,...]}'.",
47
+ " COMPONENT_LIST = '{\"components\":[{\"id\":\"<unique>\",\"codeComponentId\":\"<child-id>\",\"propValues\":{\"<childProp>\":<value>}}]}' (single COMPONENT = one such entry). Each entry needs a unique id and codeComponentId (or componentId); child propValues use the same per-type shapes recursively.",
48
+ " The value REPLACES the whole prop — to edit a COMPONENT_LIST, read the current value from `list-page-sections` and resend the entire array. Wrong shapes are rejected with an error, not stored silently.",
49
+ ].join("\n"))
50
+ .requiredOption("--page-id <id>", "Page id (from `ikas-component list-pages`)")
51
+ .requiredOption("--element-id <id>", "Placed section elementId (from `ikas-component list-page-sections`)")
52
+ .option("--prop-id <id>", "Blueprint prop id to update")
53
+ .option("--prop-name <name>", "Blueprint prop name to update (alternative to --prop-id)")
54
+ .requiredOption("--value <json>", 'JSON-encoded prop value, e.g. \'{"value":"Hello"}\'')
55
+ .option("--port <port>", "Dev server WebSocket port", "5201")
56
+ .action(runUpdateSectionProp);
57
+ return cmd;
58
+ }
59
+ //# sourceMappingURL=update-section-prop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-section-prop.js","sourceRoot":"","sources":["../../src/commands/update-section-prop.ts"],"names":[],"mappings":"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"}
@@ -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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function createUploadImageCommand(): Command;
3
+ //# sourceMappingURL=upload-image.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload-image.d.ts","sourceRoot":"","sources":["../../src/commands/upload-image.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA4FpC,wBAAgB,wBAAwB,IAAI,OAAO,CAYlD"}
@@ -0,0 +1,79 @@
1
+ import { Command } from "commander";
2
+ import { readFile } from "node:fs/promises";
3
+ import { basename, extname } from "node:path";
4
+ import { printErrorAndExit, printResultAndExit, runEditorAction, } from "../utils/editor-action-client.js";
5
+ const MIME_BY_EXT = {
6
+ ".png": "image/png",
7
+ ".jpg": "image/jpeg",
8
+ ".jpeg": "image/jpeg",
9
+ ".webp": "image/webp",
10
+ ".gif": "image/gif",
11
+ };
12
+ const VALID_IMAGE_TYPES = Object.values(MIME_BY_EXT);
13
+ const MAX_SIZE_BYTES = 10 * 1024 * 1024; // 10MB, mirrors the editor's IMAGE_UPLOAD_LIMIT_SIZE
14
+ async function loadImage(options) {
15
+ if (options.file && options.url) {
16
+ throw new Error("Provide only one of --file or --url, not both");
17
+ }
18
+ if (options.file) {
19
+ const buffer = await readFile(options.file);
20
+ const ext = extname(options.file).toLowerCase();
21
+ const mimeType = MIME_BY_EXT[ext];
22
+ if (!mimeType) {
23
+ throw new Error(`Unsupported image extension "${ext || "(none)"}". Supported: ${Object.keys(MIME_BY_EXT).join(", ")}`);
24
+ }
25
+ if (buffer.byteLength > MAX_SIZE_BYTES) {
26
+ throw new Error(`Image is ${(buffer.byteLength / 1024 / 1024).toFixed(1)}MB; the limit is 10MB`);
27
+ }
28
+ return { base64: buffer.toString("base64"), mimeType, fileName: basename(options.file) };
29
+ }
30
+ if (options.url) {
31
+ const res = await fetch(options.url);
32
+ if (!res.ok) {
33
+ throw new Error(`Failed to fetch image: ${res.status} ${res.statusText}`);
34
+ }
35
+ const mimeType = (res.headers.get("content-type") || "").split(";")[0].trim();
36
+ if (!VALID_IMAGE_TYPES.includes(mimeType)) {
37
+ throw new Error(`URL returned content-type "${mimeType || "(none)"}". Supported: ${VALID_IMAGE_TYPES.join(", ")}`);
38
+ }
39
+ const buffer = Buffer.from(await res.arrayBuffer());
40
+ if (buffer.byteLength > MAX_SIZE_BYTES) {
41
+ throw new Error(`Image is ${(buffer.byteLength / 1024 / 1024).toFixed(1)}MB; the limit is 10MB`);
42
+ }
43
+ const urlName = basename(new URL(options.url).pathname) || "image";
44
+ return { base64: buffer.toString("base64"), mimeType, fileName: urlName };
45
+ }
46
+ throw new Error("Provide --file <path> or --url <url>");
47
+ }
48
+ async function runUploadImage(options) {
49
+ const port = options.port ? parseInt(options.port, 10) : undefined;
50
+ try {
51
+ const { base64, mimeType, fileName } = await loadImage(options);
52
+ const result = await runEditorAction("upload-image", {
53
+ base64,
54
+ mimeType,
55
+ fileName,
56
+ ...(options.alt ? { altText: options.alt } : {}),
57
+ isVideo: false,
58
+ },
59
+ // Uploads carry the full image payload and round-trip to the host, so give
60
+ // them a far more generous timeout than the default 10s.
61
+ { ...(port ? { port } : {}), timeoutMs: 60_000 });
62
+ printResultAndExit(result);
63
+ }
64
+ catch (e) {
65
+ printErrorAndExit(e);
66
+ }
67
+ }
68
+ export function createUploadImageCommand() {
69
+ const cmd = new Command("upload-image");
70
+ cmd
71
+ .description("Upload an image to the connected editor's project and return its image id. Supply the image with --file (local path) or --url. The returned id can be used as the `id` of an IMAGE prop value via `ikas-component update-section-prop`. Requires the editor to be embedded in the ikas admin panel (the host performs the actual upload).")
72
+ .option("--file <path>", "Local image file path (.png, .jpg, .jpeg, .webp, .gif)")
73
+ .option("--url <url>", "Image URL to fetch and upload")
74
+ .option("--alt <text>", "Alt text for the image")
75
+ .option("--port <port>", "Dev server WebSocket port", "5201")
76
+ .action(runUploadImage);
77
+ return cmd;
78
+ }
79
+ //# sourceMappingURL=upload-image.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload-image.js","sourceRoot":"","sources":["../../src/commands/upload-image.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+BpC,wBAAgB,GAAG,qBAElB;AAED,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2CpC,wBAAgB,GAAG,qBAElB;AAED,cAAc,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -6,9 +6,15 @@ import { createCheckCommand } from "./commands/check.js";
6
6
  import { createConfigCommand } from "./commands/config.js";
7
7
  import { createDevCommand } from "./commands/dev.js";
8
8
  import { createImportCommand } from "./commands/import.js";
9
+ import { createListEntitiesCommand } from "./commands/list-entities.js";
9
10
  import { createListImportedCommand } from "./commands/list-imported.js";
11
+ import { createListPageSectionsCommand } from "./commands/list-page-sections.js";
10
12
  import { createListPagesCommand } from "./commands/list-pages.js";
11
13
  import { createPublishCommand } from "./commands/publish.js";
14
+ import { createSearchProductsCommand } from "./commands/search-products.js";
15
+ import { createUpdateSectionPropCommand } from "./commands/update-section-prop.js";
16
+ import { createUpdateSectionPropsCommand } from "./commands/update-section-props.js";
17
+ import { createUploadImageCommand } from "./commands/upload-image.js";
12
18
  const program = new Command();
13
19
  program
14
20
  .name("ikas-component")
@@ -25,6 +31,12 @@ program.addCommand(createListPagesCommand());
25
31
  program.addCommand(createListImportedCommand());
26
32
  program.addCommand(createImportCommand());
27
33
  program.addCommand(createAddToPageCommand());
34
+ program.addCommand(createListPageSectionsCommand());
35
+ program.addCommand(createUpdateSectionPropCommand());
36
+ program.addCommand(createUpdateSectionPropsCommand());
37
+ program.addCommand(createUploadImageCommand());
38
+ program.addCommand(createSearchProductsCommand());
39
+ program.addCommand(createListEntitiesCommand());
28
40
  export function run() {
29
41
  return program.parseAsync(process.argv);
30
42
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE7D,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,gBAAgB,CAAC;KACtB,WAAW,CAAC,yCAAyC,CAAC;KACtD,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,oBAAoB;AACpB,OAAO,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC,CAAC;AACvC,OAAO,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC,CAAC;AACvC,OAAO,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC;AACzC,OAAO,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAC;AAC3C,OAAO,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC;AACzC,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC;AAC1C,OAAO,CAAC,UAAU,CAAC,sBAAsB,EAAE,CAAC,CAAC;AAC7C,OAAO,CAAC,UAAU,CAAC,yBAAyB,EAAE,CAAC,CAAC;AAChD,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC;AAC1C,OAAO,CAAC,UAAU,CAAC,sBAAsB,EAAE,CAAC,CAAC;AAE7C,MAAM,UAAU,GAAG;IACjB,OAAO,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC1C,CAAC;AAED,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,6BAA6B,EAAE,MAAM,kCAAkC,CAAC;AACjF,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,8BAA8B,EAAE,MAAM,mCAAmC,CAAC;AACnF,OAAO,EAAE,+BAA+B,EAAE,MAAM,oCAAoC,CAAC;AACrF,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,gBAAgB,CAAC;KACtB,WAAW,CAAC,yCAAyC,CAAC;KACtD,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,oBAAoB;AACpB,OAAO,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC,CAAC;AACvC,OAAO,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC,CAAC;AACvC,OAAO,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC;AACzC,OAAO,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAC;AAC3C,OAAO,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC;AACzC,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC;AAC1C,OAAO,CAAC,UAAU,CAAC,sBAAsB,EAAE,CAAC,CAAC;AAC7C,OAAO,CAAC,UAAU,CAAC,yBAAyB,EAAE,CAAC,CAAC;AAChD,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC;AAC1C,OAAO,CAAC,UAAU,CAAC,sBAAsB,EAAE,CAAC,CAAC;AAC7C,OAAO,CAAC,UAAU,CAAC,6BAA6B,EAAE,CAAC,CAAC;AACpD,OAAO,CAAC,UAAU,CAAC,8BAA8B,EAAE,CAAC,CAAC;AACrD,OAAO,CAAC,UAAU,CAAC,+BAA+B,EAAE,CAAC,CAAC;AACtD,OAAO,CAAC,UAAU,CAAC,wBAAwB,EAAE,CAAC,CAAC;AAC/C,OAAO,CAAC,UAAU,CAAC,2BAA2B,EAAE,CAAC,CAAC;AAClD,OAAO,CAAC,UAAU,CAAC,yBAAyB,EAAE,CAAC,CAAC;AAEhD,MAAM,UAAU,GAAG;IACjB,OAAO,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC1C,CAAC;AAED,cAAc,YAAY,CAAC"}
@@ -10,7 +10,7 @@ export interface EditorActionResult {
10
10
  * The dev server forwards the action to its connected editor client and routes
11
11
  * the result back to this socket (matched by requestId).
12
12
  */
13
- export declare function runEditorAction(action: "list-pages" | "list-imported-components" | "import-component" | "add-section-to-page", payload?: Record<string, unknown>, options?: {
13
+ export declare function runEditorAction(action: "list-pages" | "list-imported-components" | "import-component" | "add-section-to-page" | "list-page-sections" | "update-section-prop" | "upload-image" | "search-products" | "list-entities" | "update-section-props", payload?: Record<string, unknown>, options?: {
14
14
  port?: number;
15
15
  timeoutMs?: number;
16
16
  }): Promise<EditorActionResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"editor-action-client.d.ts","sourceRoot":"","sources":["../../src/utils/editor-action-client.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,YAAY,GAAG,0BAA0B,GAAG,kBAAkB,GAAG,qBAAqB,EAC9F,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GAClD,OAAO,CAAC,kBAAkB,CAAC,CAiF7B;AAED,MAAM,WAAW,YAAY;IAC3B,wFAAwF;IACxF,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,GAAG,KAAK,CAUpE;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,CAIvD"}
1
+ {"version":3,"file":"editor-action-client.d.ts","sourceRoot":"","sources":["../../src/utils/editor-action-client.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EACF,YAAY,GACZ,0BAA0B,GAC1B,kBAAkB,GAClB,qBAAqB,GACrB,oBAAoB,GACpB,qBAAqB,GACrB,cAAc,GACd,iBAAiB,GACjB,eAAe,GACf,sBAAsB,EAC1B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GAClD,OAAO,CAAC,kBAAkB,CAAC,CAiF7B;AAED,MAAM,WAAW,YAAY;IAC3B,wFAAwF;IACxF,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,GAAG,KAAK,CAUpE;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,CAIvD"}
@@ -1 +1 @@
1
- {"version":3,"file":"editor-action-client.js","sourceRoot":"","sources":["../../src/utils/editor-action-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"editor-action-client.js","sourceRoot":"","sources":["../../src/utils/editor-action-client.ts"],"names":[],"mappings":"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"}
@@ -151,7 +151,7 @@ export type DevServerMessage = {
151
151
  } | {
152
152
  type: "editor-action";
153
153
  requestId: string;
154
- action: "list-pages" | "list-imported-components" | "import-component" | "add-section-to-page";
154
+ action: "list-pages" | "list-imported-components" | "import-component" | "add-section-to-page" | "list-page-sections" | "update-section-prop" | "upload-image" | "search-products" | "list-entities" | "update-section-props";
155
155
  payload?: any;
156
156
  } | {
157
157
  type: "editor-action-result";
@@ -286,7 +286,7 @@ export type EditorMessage = {
286
286
  } | {
287
287
  type: "editor-action";
288
288
  requestId: string;
289
- action: "list-pages" | "list-imported-components" | "import-component" | "add-section-to-page";
289
+ action: "list-pages" | "list-imported-components" | "import-component" | "add-section-to-page" | "list-page-sections" | "update-section-prop" | "upload-image" | "search-products" | "list-entities" | "update-section-props";
290
290
  payload?: any;
291
291
  } | {
292
292
  type: "editor-action-result";