@ikas/component-cli 0.15.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 (55) hide show
  1. package/bin/create-ikas-component.js +8 -0
  2. package/bin/ikas-component.js +8 -0
  3. package/dist/commands/add.d.ts +3 -0
  4. package/dist/commands/add.d.ts.map +1 -0
  5. package/dist/commands/add.js +156 -0
  6. package/dist/commands/add.js.map +1 -0
  7. package/dist/commands/build.d.ts +3 -0
  8. package/dist/commands/build.d.ts.map +1 -0
  9. package/dist/commands/build.js +273 -0
  10. package/dist/commands/build.js.map +1 -0
  11. package/dist/commands/create.d.ts +4 -0
  12. package/dist/commands/create.d.ts.map +1 -0
  13. package/dist/commands/create.js +572 -0
  14. package/dist/commands/create.js.map +1 -0
  15. package/dist/commands/dev.d.ts +3 -0
  16. package/dist/commands/dev.d.ts.map +1 -0
  17. package/dist/commands/dev.js +381 -0
  18. package/dist/commands/dev.js.map +1 -0
  19. package/dist/commands/publish.d.ts +3 -0
  20. package/dist/commands/publish.d.ts.map +1 -0
  21. package/dist/commands/publish.js +136 -0
  22. package/dist/commands/publish.js.map +1 -0
  23. package/dist/index.d.ts +3 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +20 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/types.d.ts +76 -0
  28. package/dist/types.d.ts.map +1 -0
  29. package/dist/types.js +2 -0
  30. package/dist/types.js.map +1 -0
  31. package/dist/utils/compile.d.ts +25 -0
  32. package/dist/utils/compile.d.ts.map +1 -0
  33. package/dist/utils/compile.js +420 -0
  34. package/dist/utils/compile.js.map +1 -0
  35. package/dist/utils/component-helpers.d.ts +23 -0
  36. package/dist/utils/component-helpers.d.ts.map +1 -0
  37. package/dist/utils/component-helpers.js +177 -0
  38. package/dist/utils/component-helpers.js.map +1 -0
  39. package/dist/utils/css-import-resolver.d.ts +10 -0
  40. package/dist/utils/css-import-resolver.d.ts.map +1 -0
  41. package/dist/utils/css-import-resolver.js +40 -0
  42. package/dist/utils/css-import-resolver.js.map +1 -0
  43. package/dist/utils/esm-transform.d.ts +29 -0
  44. package/dist/utils/esm-transform.d.ts.map +1 -0
  45. package/dist/utils/esm-transform.js +216 -0
  46. package/dist/utils/esm-transform.js.map +1 -0
  47. package/dist/utils/observer-runtime.d.ts +3 -0
  48. package/dist/utils/observer-runtime.d.ts.map +1 -0
  49. package/dist/utils/observer-runtime.js +52 -0
  50. package/dist/utils/observer-runtime.js.map +1 -0
  51. package/dist/utils/websocket-server.d.ts +180 -0
  52. package/dist/utils/websocket-server.d.ts.map +1 -0
  53. package/dist/utils/websocket-server.js +287 -0
  54. package/dist/utils/websocket-server.js.map +1 -0
  55. package/package.json +43 -0
@@ -0,0 +1,381 @@
1
+ import chalk from "chalk";
2
+ import chokidar from "chokidar";
3
+ import { Command } from "commander";
4
+ import * as fs from "fs";
5
+ import * as path from "path";
6
+ import { toPascalCase, toKebabCase, generateTypesFile, generateComponentFile, generateStylesFile, updateBarrelExport, generateProjectId, generateComponentId, } from "../utils/component-helpers.js";
7
+ import { compileAllComponents as compileAllComponentsMulti } from "../utils/compile.js";
8
+ import { transformEsmToWindowGlobals, transformChunkForCanvas, buildChunkMapping } from "../utils/esm-transform.js";
9
+ import { DevServerWebSocket } from "../utils/websocket-server.js";
10
+ const DEV_SERVER_PORT = 5201;
11
+ // Store compiled components and shared modules
12
+ const compiledComponents = new Map();
13
+ const compiledSharedModules = new Map();
14
+ /**
15
+ * Get the component definition that contains a file path
16
+ */
17
+ function findComponentForFile(config, filePath) {
18
+ const normalizedPath = path.normalize(filePath);
19
+ for (const component of config.components) {
20
+ const entryPath = path.resolve(process.cwd(), component.entry);
21
+ const stylesPath = path.resolve(process.cwd(), component.styles);
22
+ const componentDir = path.dirname(entryPath);
23
+ // Check if the file is the entry, styles, or in the component directory
24
+ if (normalizedPath === entryPath ||
25
+ normalizedPath === stylesPath ||
26
+ normalizedPath.startsWith(componentDir + path.sep)) {
27
+ return component;
28
+ }
29
+ }
30
+ return null;
31
+ }
32
+ /**
33
+ * Compile all components using multi-entry code splitting.
34
+ * Updates compiledComponents and compiledSharedModules maps.
35
+ */
36
+ async function compileAllComponentsForDev(config) {
37
+ const components = config.components.map(c => ({
38
+ id: c.id,
39
+ entryPath: c.entry,
40
+ stylesPath: c.styles,
41
+ }));
42
+ const result = await compileAllComponentsMulti(components);
43
+ if (!result.success) {
44
+ console.error(chalk.red(` Multi-entry compilation failed: ${result.error}`));
45
+ return false;
46
+ }
47
+ // Build chunk mapping for ESM transform (namespace with projectId)
48
+ const chunkIds = Array.from(result.chunks.keys());
49
+ const chunkMapping = buildChunkMapping(chunkIds, config.projectId);
50
+ // Process shared chunks
51
+ compiledSharedModules.clear();
52
+ for (const [chunkId, chunk] of result.chunks) {
53
+ const prefixedChunkId = config.projectId ? `${config.projectId}-${chunkId}` : chunkId;
54
+ const canvasClientJs = transformChunkForCanvas(chunk.clientJs, prefixedChunkId);
55
+ compiledSharedModules.set(prefixedChunkId, {
56
+ id: prefixedChunkId,
57
+ compiledServerJs: chunk.serverJs,
58
+ compiledClientJs: chunk.clientJs,
59
+ canvasClientJs,
60
+ compiledCss: result.chunkCss.get(chunkId) || "",
61
+ });
62
+ }
63
+ if (chunkIds.length > 0) {
64
+ console.log(chalk.cyan(` Extracted ${chunkIds.length} shared chunk(s)`));
65
+ }
66
+ // Process entry components
67
+ compiledComponents.clear();
68
+ for (const component of config.components) {
69
+ const entry = result.entries.get(component.id);
70
+ if (!entry) {
71
+ console.error(chalk.red(` No output for component: ${component.name}`));
72
+ continue;
73
+ }
74
+ const entryPath = path.resolve(process.cwd(), component.entry);
75
+ if (!fs.existsSync(entryPath)) {
76
+ console.error(chalk.red(` TSX file not found: ${component.entry}`));
77
+ continue;
78
+ }
79
+ const scopedCss = result.css.get(component.id) || "";
80
+ // Transform ESM to window globals for canvas mode, with chunk mapping
81
+ const canvasClientJs = transformEsmToWindowGlobals(entry.clientJs, { chunkMapping });
82
+ const data = {
83
+ id: component.id,
84
+ name: component.name,
85
+ projectId: config.projectId,
86
+ props: component.props.map((prop, index) => ({
87
+ id: `${component.id}_prop_${index}`,
88
+ name: prop.name,
89
+ displayName: prop.displayName,
90
+ description: prop.description,
91
+ type: prop.type,
92
+ isRequired: prop.required,
93
+ defaultValue: prop.defaultValue
94
+ })),
95
+ compiledServerJs: entry.serverJs,
96
+ compiledClientJs: entry.clientJs,
97
+ compiledCss: scopedCss,
98
+ canvasClientJs,
99
+ sourceType: "dev",
100
+ lastCompiledAt: Date.now(),
101
+ type: component.type || "component",
102
+ };
103
+ compiledComponents.set(component.id, data);
104
+ console.log(chalk.green(` Compiled: ${component.name}`));
105
+ }
106
+ return true;
107
+ }
108
+ /**
109
+ * Get all compiled components as an array
110
+ */
111
+ function getAllComponents() {
112
+ return Array.from(compiledComponents.values());
113
+ }
114
+ /**
115
+ * Get all compiled shared modules as an array
116
+ */
117
+ function getAllSharedModules() {
118
+ return Array.from(compiledSharedModules.values());
119
+ }
120
+ /**
121
+ * Read and return the current config from disk
122
+ */
123
+ function readConfig(configPath) {
124
+ return JSON.parse(fs.readFileSync(configPath, "utf-8"));
125
+ }
126
+ /**
127
+ * Write config to disk
128
+ */
129
+ function writeConfig(configPath, config) {
130
+ fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
131
+ }
132
+ /**
133
+ * Create handler functions for editor commands
134
+ */
135
+ function createEditorHandlers(configPath, getConfig, setConfig) {
136
+ return {
137
+ onRequestState: () => ({
138
+ components: getAllComponents(),
139
+ sharedModules: getAllSharedModules(),
140
+ }),
141
+ onCreateComponent: async (name, type) => {
142
+ const pascalName = toPascalCase(name);
143
+ // Validate
144
+ if (!/^[a-zA-Z][a-zA-Z0-9]*$/.test(pascalName)) {
145
+ throw new Error("Component name must start with a letter and contain only letters and numbers");
146
+ }
147
+ const config = getConfig();
148
+ if (config.components.some((c) => c.name === pascalName)) {
149
+ throw new Error(`Component "${pascalName}" already exists`);
150
+ }
151
+ const kebabName = toKebabCase(pascalName);
152
+ const componentId = generateComponentId(config.projectId, kebabName);
153
+ const componentDir = path.resolve(process.cwd(), `src/components/${pascalName}`);
154
+ // Create directory and files
155
+ fs.mkdirSync(componentDir, { recursive: true });
156
+ fs.writeFileSync(path.join(componentDir, "types.ts"), generateTypesFile(pascalName, [], type));
157
+ fs.writeFileSync(path.join(componentDir, "index.tsx"), generateComponentFile(pascalName, [], type));
158
+ fs.writeFileSync(path.join(componentDir, "styles.css"), generateStylesFile(pascalName, type));
159
+ // Update config
160
+ const newComponent = {
161
+ id: componentId,
162
+ name: pascalName,
163
+ entry: `./src/components/${pascalName}/index.tsx`,
164
+ styles: `./src/components/${pascalName}/styles.css`,
165
+ props: [],
166
+ ...(type === "section" ? { type: "section" } : {}),
167
+ };
168
+ config.components.push(newComponent);
169
+ writeConfig(configPath, config);
170
+ setConfig(config);
171
+ // Update barrel export
172
+ const allNames = config.components.map((c) => c.name);
173
+ updateBarrelExport(process.cwd(), allNames);
174
+ console.log(chalk.green(` Created component: ${pascalName}`));
175
+ return { id: componentId };
176
+ },
177
+ onAddProp: async (componentId, prop) => {
178
+ const config = getConfig();
179
+ const component = config.components.find((c) => c.id === componentId);
180
+ if (!component) {
181
+ throw new Error(`Component not found: ${componentId}`);
182
+ }
183
+ if (component.props.some((p) => p.name === prop.name)) {
184
+ throw new Error(`Prop "${prop.name}" already exists on ${component.name}`);
185
+ }
186
+ component.props.push(prop);
187
+ writeConfig(configPath, config);
188
+ setConfig(config);
189
+ // Regenerate types.ts
190
+ const componentDir = path.resolve(process.cwd(), path.dirname(component.entry));
191
+ fs.writeFileSync(path.join(componentDir, "types.ts"), generateTypesFile(component.name, component.props));
192
+ console.log(chalk.green(` Added prop "${prop.name}" to ${component.name}`));
193
+ },
194
+ onUpdateProp: async (componentId, propName, prop) => {
195
+ const config = getConfig();
196
+ const component = config.components.find((c) => c.id === componentId);
197
+ if (!component) {
198
+ throw new Error(`Component not found: ${componentId}`);
199
+ }
200
+ const propIndex = component.props.findIndex((p) => p.name === propName);
201
+ if (propIndex === -1) {
202
+ throw new Error(`Prop "${propName}" not found on ${component.name}`);
203
+ }
204
+ component.props[propIndex] = prop;
205
+ writeConfig(configPath, config);
206
+ setConfig(config);
207
+ // Regenerate types.ts
208
+ const componentDir = path.resolve(process.cwd(), path.dirname(component.entry));
209
+ fs.writeFileSync(path.join(componentDir, "types.ts"), generateTypesFile(component.name, component.props));
210
+ console.log(chalk.green(` Updated prop "${propName}" on ${component.name}`));
211
+ },
212
+ onDeleteProp: async (componentId, propName) => {
213
+ const config = getConfig();
214
+ const component = config.components.find((c) => c.id === componentId);
215
+ if (!component) {
216
+ throw new Error(`Component not found: ${componentId}`);
217
+ }
218
+ const propIndex = component.props.findIndex((p) => p.name === propName);
219
+ if (propIndex === -1) {
220
+ throw new Error(`Prop "${propName}" not found on ${component.name}`);
221
+ }
222
+ component.props.splice(propIndex, 1);
223
+ writeConfig(configPath, config);
224
+ setConfig(config);
225
+ // Regenerate types.ts
226
+ const componentDir = path.resolve(process.cwd(), path.dirname(component.entry));
227
+ fs.writeFileSync(path.join(componentDir, "types.ts"), generateTypesFile(component.name, component.props));
228
+ console.log(chalk.green(` Deleted prop "${propName}" from ${component.name}`));
229
+ }
230
+ };
231
+ }
232
+ async function startDevServer() {
233
+ const configPath = path.resolve(process.cwd(), "ikas.config.json");
234
+ // Check if we're in an ikas component project
235
+ if (!fs.existsSync(configPath)) {
236
+ console.error(chalk.red("Error: ikas.config.json not found"));
237
+ console.error(chalk.gray("Make sure you're in an ikas component project directory"));
238
+ process.exit(1);
239
+ }
240
+ // Read config
241
+ let config = JSON.parse(fs.readFileSync(configPath, "utf-8"));
242
+ // Auto-migrate: generate projectId if missing (legacy project)
243
+ if (!config.projectId) {
244
+ config.projectId = generateProjectId();
245
+ fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
246
+ console.log(chalk.yellow(` Auto-generated projectId: ${config.projectId}`));
247
+ }
248
+ console.log(chalk.cyan("\n ikas Component Dev Server\n"));
249
+ console.log(chalk.gray(` Project: ${config.name}`));
250
+ console.log(chalk.gray(` Components: ${config.components.length}\n`));
251
+ // Initial compilation of all components (multi-entry with code splitting)
252
+ console.log(chalk.cyan(" Compiling components..."));
253
+ await compileAllComponentsForDev(config);
254
+ console.log("");
255
+ // Start WebSocket server
256
+ const wsServer = new DevServerWebSocket(DEV_SERVER_PORT);
257
+ const handlers = createEditorHandlers(configPath, () => config, (newConfig) => { config = newConfig; });
258
+ try {
259
+ await wsServer.start(handlers);
260
+ console.log(chalk.green(` WebSocket server running on ws://localhost:${DEV_SERVER_PORT}`));
261
+ console.log(chalk.gray(" Connect your editor to receive live updates\n"));
262
+ }
263
+ catch (error) {
264
+ console.error(chalk.red(` Failed to start WebSocket server: ${error.message}`));
265
+ process.exit(1);
266
+ }
267
+ // Watch for file changes
268
+ const watchPaths = [
269
+ "src/**/*.tsx",
270
+ "src/**/*.ts",
271
+ "src/**/*.css",
272
+ "ikas.config.json"
273
+ ];
274
+ const watcher = chokidar.watch(watchPaths, {
275
+ ignoreInitial: true,
276
+ awaitWriteFinish: {
277
+ stabilityThreshold: 100,
278
+ pollInterval: 50
279
+ }
280
+ });
281
+ // Debounce full recompilation for rapid changes
282
+ let recompileTimer = null;
283
+ const DEBOUNCE_MS = 50;
284
+ const scheduleFullRecompile = (triggeredBy) => {
285
+ if (recompileTimer) {
286
+ clearTimeout(recompileTimer);
287
+ }
288
+ recompileTimer = setTimeout(async () => {
289
+ recompileTimer = null;
290
+ console.log(chalk.yellow(` Recompiling all (triggered by: ${triggeredBy})...`));
291
+ const success = await compileAllComponentsForDev(config);
292
+ if (success) {
293
+ // Send full state to all connected editors
294
+ wsServer.broadcast({
295
+ type: "initial-state",
296
+ payload: {
297
+ components: getAllComponents(),
298
+ sharedModules: getAllSharedModules(),
299
+ timestamp: Date.now()
300
+ }
301
+ });
302
+ }
303
+ else {
304
+ // Broadcast error for the triggering component if identifiable
305
+ const component = findComponentForFile(config, triggeredBy);
306
+ if (component) {
307
+ wsServer.broadcastComponentError(component.id, `Compilation failed for ${component.name}`);
308
+ }
309
+ }
310
+ }, DEBOUNCE_MS);
311
+ };
312
+ watcher.on("change", async (filePath) => {
313
+ const normalizedPath = path.resolve(filePath);
314
+ // Handle config changes
315
+ if (normalizedPath === configPath) {
316
+ console.log(chalk.yellow("\n Config changed, reloading..."));
317
+ try {
318
+ config = JSON.parse(fs.readFileSync(configPath, "utf-8"));
319
+ await compileAllComponentsForDev(config);
320
+ // Send full state to all connected editors
321
+ wsServer.broadcast({
322
+ type: "initial-state",
323
+ payload: {
324
+ components: getAllComponents(),
325
+ sharedModules: getAllSharedModules(),
326
+ timestamp: Date.now()
327
+ }
328
+ });
329
+ }
330
+ catch (e) {
331
+ console.error(chalk.red(" Failed to reload config"));
332
+ }
333
+ return;
334
+ }
335
+ // Any source file change triggers a full recompile (shared code may be affected)
336
+ console.log(chalk.yellow(` Change detected: ${path.basename(filePath)}`));
337
+ scheduleFullRecompile(normalizedPath);
338
+ });
339
+ watcher.on("add", async (filePath) => {
340
+ const normalizedPath = path.resolve(filePath);
341
+ if (normalizedPath === configPath)
342
+ return;
343
+ console.log(chalk.cyan(` New file: ${path.basename(filePath)}`));
344
+ scheduleFullRecompile(normalizedPath);
345
+ });
346
+ watcher.on("unlink", (filePath) => {
347
+ const component = findComponentForFile(config, filePath);
348
+ if (component) {
349
+ console.log(chalk.yellow(` File removed: ${path.basename(filePath)}`));
350
+ // Component might still exist if only one file was removed
351
+ // Check if entry file still exists
352
+ const entryPath = path.resolve(process.cwd(), component.entry);
353
+ if (!fs.existsSync(entryPath)) {
354
+ compiledComponents.delete(component.id);
355
+ wsServer.broadcastComponentDeleted(component.id);
356
+ console.log(chalk.red(` Component removed: ${component.name}`));
357
+ }
358
+ else {
359
+ // Trigger recompile for remaining files
360
+ scheduleFullRecompile(filePath);
361
+ }
362
+ }
363
+ });
364
+ console.log(chalk.green(" Watching for changes..."));
365
+ console.log(chalk.gray(" Press Ctrl+C to stop\n"));
366
+ // Handle shutdown
367
+ const shutdown = async () => {
368
+ console.log(chalk.yellow("\n Shutting down..."));
369
+ watcher.close();
370
+ await wsServer.stop();
371
+ process.exit(0);
372
+ };
373
+ process.on("SIGINT", shutdown);
374
+ process.on("SIGTERM", shutdown);
375
+ }
376
+ export function createDevCommand() {
377
+ return new Command("dev")
378
+ .description("Start the development server with live editor updates")
379
+ .action(startDevServer);
380
+ }
381
+ //# sourceMappingURL=dev.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function createPublishCommand(): Command;
3
+ //# sourceMappingURL=publish.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../../src/commands/publish.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoMpC,wBAAgB,oBAAoB,IAAI,OAAO,CAM9C"}
@@ -0,0 +1,136 @@
1
+ import { Command } from "commander";
2
+ import chalk from "chalk";
3
+ import ora from "ora";
4
+ import * as fs from "fs";
5
+ import * as path from "path";
6
+ import { compileAllComponents } from "../utils/compile.js";
7
+ import { transformEsmToWindowGlobals, transformChunkForCanvas, buildChunkMapping } from "../utils/esm-transform.js";
8
+ import { generateProjectId } from "../utils/component-helpers.js";
9
+ async function publishComponents(options) {
10
+ const configPath = path.resolve(process.cwd(), "ikas.config.json");
11
+ if (!fs.existsSync(configPath)) {
12
+ console.error(chalk.red("Error: ikas.config.json not found"));
13
+ console.error(chalk.gray("Make sure you're in an ikas component project directory"));
14
+ process.exit(1);
15
+ }
16
+ const config = JSON.parse(fs.readFileSync(configPath, "utf-8"));
17
+ // Auto-migrate: generate projectId if missing (legacy project)
18
+ if (!config.projectId) {
19
+ config.projectId = generateProjectId();
20
+ fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
21
+ console.log(chalk.yellow(` Auto-generated projectId: ${config.projectId}`));
22
+ }
23
+ // Filter components if specific one requested
24
+ let componentsToPublish = config.components;
25
+ if (options.component) {
26
+ componentsToPublish = config.components.filter((c) => c.id === options.component || c.name === options.component);
27
+ if (componentsToPublish.length === 0) {
28
+ console.error(chalk.red(`Component "${options.component}" not found`));
29
+ process.exit(1);
30
+ }
31
+ }
32
+ console.log(chalk.cyan("\n Publishing ikas Components\n"));
33
+ console.log(chalk.gray(` Project: ${config.name}`));
34
+ console.log(chalk.gray(` Components: ${componentsToPublish.length}\n`));
35
+ const spinner = ora("Compiling all components...").start();
36
+ // Use multi-entry compilation with code splitting
37
+ const result = await compileAllComponents(componentsToPublish.map(c => ({
38
+ id: c.id,
39
+ entryPath: c.entry,
40
+ stylesPath: c.styles,
41
+ })));
42
+ if (!result.success) {
43
+ spinner.fail(chalk.red(`Compilation failed: ${result.error}`));
44
+ process.exit(1);
45
+ }
46
+ spinner.succeed(chalk.green("Compilation complete"));
47
+ // Build chunk mapping for ESM transform (namespace with projectId)
48
+ const chunkIds = Array.from(result.chunks.keys());
49
+ const chunkMapping = buildChunkMapping(chunkIds, config.projectId);
50
+ // Process shared modules
51
+ const sharedModules = [];
52
+ for (const [chunkId, chunk] of result.chunks) {
53
+ const prefixedChunkId = config.projectId ? `${config.projectId}-${chunkId}` : chunkId;
54
+ const canvasClientJs = transformChunkForCanvas(chunk.clientJs, prefixedChunkId);
55
+ sharedModules.push({
56
+ id: prefixedChunkId,
57
+ compiledServerJs: chunk.serverJs,
58
+ compiledClientJs: chunk.clientJs,
59
+ canvasClientJs,
60
+ compiledCss: result.chunkCss.get(chunkId) || "",
61
+ });
62
+ }
63
+ if (sharedModules.length > 0) {
64
+ console.log(chalk.cyan(` Extracted ${sharedModules.length} shared module(s)`));
65
+ }
66
+ // Process entry components
67
+ const outputComponents = [];
68
+ for (const component of componentsToPublish) {
69
+ const entry = result.entries.get(component.id);
70
+ if (!entry) {
71
+ console.log(chalk.red(` No output for component: ${component.name}`));
72
+ continue;
73
+ }
74
+ const entryPath = path.resolve(process.cwd(), component.entry);
75
+ if (!fs.existsSync(entryPath)) {
76
+ console.log(chalk.red(` TSX file not found: ${component.entry}`));
77
+ continue;
78
+ }
79
+ const scopedCss = result.css.get(component.id) || "";
80
+ // Transform ESM to window globals for canvas mode, with chunk mapping
81
+ const canvasClientJs = transformEsmToWindowGlobals(entry.clientJs, { chunkMapping });
82
+ outputComponents.push({
83
+ id: component.id,
84
+ name: component.name,
85
+ projectId: config.projectId,
86
+ props: component.props.map((prop, index) => ({
87
+ id: `${component.id}_prop_${index}`,
88
+ name: prop.name,
89
+ displayName: prop.displayName,
90
+ description: prop.description,
91
+ type: prop.type,
92
+ isRequired: prop.required,
93
+ defaultValue: prop.defaultValue
94
+ })),
95
+ compiledServerJs: entry.serverJs,
96
+ compiledClientJs: entry.clientJs,
97
+ compiledCss: scopedCss,
98
+ canvasClientJs,
99
+ sourceType: "external",
100
+ lastCompiledAt: Date.now(),
101
+ ...(component.type && component.type !== "component" ? { componentType: component.type } : {}),
102
+ });
103
+ console.log(chalk.green(` ${component.name} published`));
104
+ }
105
+ if (outputComponents.length === 0) {
106
+ console.error(chalk.red("\nNo components were published"));
107
+ process.exit(1);
108
+ }
109
+ // Write output
110
+ const outputPath = options.output || "ikas-components.json";
111
+ const outputFile = path.resolve(process.cwd(), outputPath);
112
+ const output = {
113
+ name: config.name,
114
+ version: config.version,
115
+ projectId: config.projectId,
116
+ publishedAt: new Date().toISOString(),
117
+ components: outputComponents,
118
+ sharedModules,
119
+ };
120
+ fs.writeFileSync(outputFile, JSON.stringify(output, null, 2));
121
+ console.log("\n" + chalk.cyan(" Publish Complete"));
122
+ console.log(chalk.green(` Components: ${outputComponents.length}`));
123
+ if (sharedModules.length > 0) {
124
+ console.log(chalk.green(` Shared modules: ${sharedModules.length}`));
125
+ }
126
+ console.log(chalk.gray(` Output: ${outputFile}\n`));
127
+ console.log(chalk.white(" Import this file in the ikas editor to use your components.\n"));
128
+ }
129
+ export function createPublishCommand() {
130
+ return new Command("publish")
131
+ .description("Publish components for import into ikas editor")
132
+ .option("-o, --output <file>", "Output file path", "ikas-components.json")
133
+ .option("-c, --component <name>", "Publish specific component only")
134
+ .action(publishComponents);
135
+ }
136
+ //# sourceMappingURL=publish.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publish.js","sourceRoot":"","sources":["../../src/commands/publish.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare function run(): void;
2
+ export * from "./types.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAmBA,wBAAgB,GAAG,SAElB;AAED,cAAc,YAAY,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,20 @@
1
+ import { Command } from "commander";
2
+ import { createAddCommand } from "./commands/add.js";
3
+ import { createBuildCommand } from "./commands/build.js";
4
+ import { createDevCommand } from "./commands/dev.js";
5
+ import { createPublishCommand } from "./commands/publish.js";
6
+ const program = new Command();
7
+ program
8
+ .name("ikas-component")
9
+ .description("CLI for developing ikas code components")
10
+ .version("0.0.1");
11
+ // Register commands
12
+ program.addCommand(createAddCommand());
13
+ program.addCommand(createDevCommand());
14
+ program.addCommand(createBuildCommand());
15
+ program.addCommand(createPublishCommand());
16
+ export function run() {
17
+ program.parse(process.argv);
18
+ }
19
+ export * from "./types.js";
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,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;AAE3C,MAAM,UAAU,GAAG;IACjB,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC;AAED,cAAc,YAAY,CAAC"}