@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,8 @@
1
+ #!/usr/bin/env node
2
+
3
+ import("../dist/commands/create.js")
4
+ .then((module) => module.run())
5
+ .catch((err) => {
6
+ console.error("Error loading CLI:", err);
7
+ process.exit(1);
8
+ });
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env node
2
+
3
+ import("../dist/index.js")
4
+ .then((module) => module.run())
5
+ .catch((err) => {
6
+ console.error("Error loading CLI:", err);
7
+ process.exit(1);
8
+ });
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function createAddCommand(): Command;
3
+ //# sourceMappingURL=add.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkMpC,wBAAgB,gBAAgB,IAAI,OAAO,CAI1C"}
@@ -0,0 +1,156 @@
1
+ import { Command } from "commander";
2
+ import chalk from "chalk";
3
+ import ora from "ora";
4
+ import inquirer from "inquirer";
5
+ import * as fs from "fs";
6
+ import * as path from "path";
7
+ import { PROP_TYPES, toPascalCase, toKebabCase, generateTypesFile, generateComponentFile, generateStylesFile, generateProjectId, generateComponentId, } from "../utils/component-helpers.js";
8
+ async function addComponent() {
9
+ const configPath = path.resolve(process.cwd(), "ikas.config.json");
10
+ // Check if we're in an ikas component project
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
+ // Read existing config
17
+ const config = JSON.parse(fs.readFileSync(configPath, "utf-8"));
18
+ // Prompt for component name
19
+ const { componentName } = await inquirer.prompt([
20
+ {
21
+ type: "input",
22
+ name: "componentName",
23
+ message: "What is the component name?",
24
+ validate: (input) => {
25
+ if (!input.trim())
26
+ return "Component name is required";
27
+ if (!/^[a-zA-Z][a-zA-Z0-9]*$/.test(input)) {
28
+ return "Component name must start with a letter and contain only letters and numbers";
29
+ }
30
+ const pascalName = toPascalCase(input);
31
+ if (config.components.some((c) => c.name === pascalName)) {
32
+ return `Component "${pascalName}" already exists`;
33
+ }
34
+ return true;
35
+ },
36
+ filter: (input) => toPascalCase(input)
37
+ }
38
+ ]);
39
+ // Prompt for type (section vs component)
40
+ const { componentType } = await inquirer.prompt([
41
+ {
42
+ type: "list",
43
+ name: "componentType",
44
+ message: "Is this a section or a component?",
45
+ choices: [
46
+ { name: "Component (child element, e.g. button, card)", value: "component" },
47
+ { name: "Section (page-level container, e.g. header, hero banner)", value: "section" }
48
+ ]
49
+ }
50
+ ]);
51
+ // Prompt for props
52
+ const props = [];
53
+ let addMoreProps = true;
54
+ console.log(chalk.cyan("\nLet's define the component props:"));
55
+ console.log(chalk.gray("(Press enter without a name to finish adding props)\n"));
56
+ while (addMoreProps) {
57
+ const { propName } = await inquirer.prompt([
58
+ {
59
+ type: "input",
60
+ name: "propName",
61
+ message: "Prop name (leave empty to finish):",
62
+ filter: (input) => input.trim()
63
+ }
64
+ ]);
65
+ if (!propName) {
66
+ addMoreProps = false;
67
+ continue;
68
+ }
69
+ const propDetails = await inquirer.prompt([
70
+ {
71
+ type: "input",
72
+ name: "displayName",
73
+ message: "Display name:",
74
+ default: propName.charAt(0).toUpperCase() + propName.slice(1)
75
+ },
76
+ {
77
+ type: "list",
78
+ name: "type",
79
+ message: "Prop type:",
80
+ choices: PROP_TYPES
81
+ },
82
+ {
83
+ type: "confirm",
84
+ name: "required",
85
+ message: "Is this prop required?",
86
+ default: false
87
+ },
88
+ {
89
+ type: "input",
90
+ name: "description",
91
+ message: "Description (optional):"
92
+ }
93
+ ]);
94
+ props.push({
95
+ name: propName,
96
+ displayName: propDetails.displayName,
97
+ type: propDetails.type,
98
+ required: propDetails.required,
99
+ description: propDetails.description || undefined
100
+ });
101
+ console.log(chalk.green(` Added prop "${propName}" (${propDetails.type})\n`));
102
+ }
103
+ // Create component
104
+ const spinner = ora("Creating component...").start();
105
+ try {
106
+ const kebabName = toKebabCase(componentName);
107
+ // Auto-migrate: generate projectId if missing
108
+ if (!config.projectId) {
109
+ config.projectId = generateProjectId();
110
+ }
111
+ const componentId = generateComponentId(config.projectId, kebabName);
112
+ const componentDir = path.resolve(process.cwd(), `src/components/${componentName}`);
113
+ // Create directory
114
+ fs.mkdirSync(componentDir, { recursive: true });
115
+ // Create files
116
+ fs.writeFileSync(path.join(componentDir, "types.ts"), generateTypesFile(componentName, props, componentType));
117
+ fs.writeFileSync(path.join(componentDir, "index.tsx"), generateComponentFile(componentName, props, componentType));
118
+ fs.writeFileSync(path.join(componentDir, "styles.css"), generateStylesFile(componentName, componentType));
119
+ // Update config
120
+ const newComponent = {
121
+ id: componentId,
122
+ name: componentName,
123
+ entry: `./src/components/${componentName}/index.tsx`,
124
+ styles: `./src/components/${componentName}/styles.css`,
125
+ ...(componentType === "section" ? { type: "section" } : {}),
126
+ props
127
+ };
128
+ config.components.push(newComponent);
129
+ fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
130
+ // Update components index
131
+ const indexPath = path.resolve(process.cwd(), "src/components/index.ts");
132
+ let indexContent = "";
133
+ if (fs.existsSync(indexPath)) {
134
+ indexContent = fs.readFileSync(indexPath, "utf-8");
135
+ }
136
+ indexContent += `export { ${componentName} } from "./${componentName}/index";\n`;
137
+ fs.writeFileSync(indexPath, indexContent);
138
+ spinner.succeed(chalk.green(`Component "${componentName}" created successfully!`));
139
+ console.log("\n" + chalk.cyan("Files created:"));
140
+ console.log(chalk.white(` src/components/${componentName}/index.tsx`));
141
+ console.log(chalk.white(` src/components/${componentName}/styles.css`));
142
+ console.log(chalk.white(` src/components/${componentName}/types.ts`));
143
+ console.log("\n" + chalk.gray("Run `npm run dev` to preview your component"));
144
+ }
145
+ catch (error) {
146
+ spinner.fail("Failed to create component");
147
+ console.error(error);
148
+ process.exit(1);
149
+ }
150
+ }
151
+ export function createAddCommand() {
152
+ return new Command("add")
153
+ .description("Add a new component to the project")
154
+ .action(addComponent);
155
+ }
156
+ //# sourceMappingURL=add.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,OAAO,EACL,UAAU,EACV,YAAY,EACZ,WAAW,EACX,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,+BAA+B,CAAC;AAEvC,KAAK,UAAU,YAAY;IACzB,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,kBAAkB,CAAC,CAAC;IAEnE,8CAA8C;IAC9C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC,CAAC;QAC9D,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC,CAAC;QACrF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,uBAAuB;IACvB,MAAM,MAAM,GAAwB,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;IAErF,4BAA4B;IAC5B,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;QAC9C;YACE,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,6BAA6B;YACtC,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE;gBAC1B,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;oBAAE,OAAO,4BAA4B,CAAC;gBACvD,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC1C,OAAO,8EAA8E,CAAC;gBACxF,CAAC;gBACD,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;gBACvC,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,EAAE,CAAC;oBACzD,OAAO,cAAc,UAAU,kBAAkB,CAAC;gBACpD,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;YACD,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC;SAC/C;KACF,CAAC,CAAC;IAEH,yCAAyC;IACzC,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;QAC9C;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,mCAAmC;YAC5C,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,8CAA8C,EAAE,KAAK,EAAE,WAAW,EAAE;gBAC5E,EAAE,IAAI,EAAE,0DAA0D,EAAE,KAAK,EAAE,SAAS,EAAE;aACvF;SACF;KACF,CAAC,CAAC;IAEH,mBAAmB;IACnB,MAAM,KAAK,GAAoB,EAAE,CAAC;IAClC,IAAI,YAAY,GAAG,IAAI,CAAC;IAExB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC,CAAC;IAC/D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC,CAAC;IAEjF,OAAO,YAAY,EAAE,CAAC;QACpB,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;YACzC;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,oCAAoC;gBAC7C,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE;aACxC;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,YAAY,GAAG,KAAK,CAAC;YACrB,SAAS;QACX,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;YACxC;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,aAAa;gBACnB,OAAO,EAAE,eAAe;gBACxB,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;aAC9D;YACD;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,YAAY;gBACrB,OAAO,EAAE,UAAU;aACpB;YACD;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,wBAAwB;gBACjC,OAAO,EAAE,KAAK;aACf;YACD;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,aAAa;gBACnB,OAAO,EAAE,yBAAyB;aACnC;SACF,CAAC,CAAC;QAEH,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,WAAW,CAAC,WAAW;YACpC,IAAI,EAAE,WAAW,CAAC,IAAI;YACtB,QAAQ,EAAE,WAAW,CAAC,QAAQ;YAC9B,WAAW,EAAE,WAAW,CAAC,WAAW,IAAI,SAAS;SAClD,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,iBAAiB,QAAQ,MAAM,WAAW,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;IACjF,CAAC;IAED,mBAAmB;IACnB,MAAM,OAAO,GAAG,GAAG,CAAC,uBAAuB,CAAC,CAAC,KAAK,EAAE,CAAC;IAErD,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,WAAW,CAAC,aAAa,CAAC,CAAC;QAE7C,8CAA8C;QAC9C,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YACtB,MAAM,CAAC,SAAS,GAAG,iBAAiB,EAAE,CAAC;QACzC,CAAC;QAED,MAAM,WAAW,GAAG,mBAAmB,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACrE,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,kBAAkB,aAAa,EAAE,CAAC,CAAC;QAEpF,mBAAmB;QACnB,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAEhD,eAAe;QACf,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,EACnC,iBAAiB,CAAC,aAAa,EAAE,KAAK,EAAE,aAAa,CAAC,CACvD,CAAC;QAEF,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,EACpC,qBAAqB,CAAC,aAAa,EAAE,KAAK,EAAE,aAAa,CAAC,CAC3D,CAAC;QAEF,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,EACrC,kBAAkB,CAAC,aAAa,EAAE,aAAa,CAAC,CACjD,CAAC;QAEF,gBAAgB;QAChB,MAAM,YAAY,GAAwB;YACxC,EAAE,EAAE,WAAW;YACf,IAAI,EAAE,aAAa;YACnB,KAAK,EAAE,oBAAoB,aAAa,YAAY;YACpD,MAAM,EAAE,oBAAoB,aAAa,aAAa;YACtD,GAAG,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpE,KAAK;SACN,CAAC;QAEF,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACrC,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAE9D,0BAA0B;QAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,yBAAyB,CAAC,CAAC;QACzE,IAAI,YAAY,GAAG,EAAE,CAAC;QACtB,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,YAAY,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACrD,CAAC;QACD,YAAY,IAAI,YAAY,aAAa,cAAc,aAAa,YAAY,CAAC;QACjF,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QAE1C,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,aAAa,yBAAyB,CAAC,CAAC,CAAC;QAEnF,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,oBAAoB,aAAa,YAAY,CAAC,CAAC,CAAC;QACxE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,oBAAoB,aAAa,aAAa,CAAC,CAAC,CAAC;QACzE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,oBAAoB,aAAa,WAAW,CAAC,CAAC,CAAC;QACvE,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC,CAAC;IAEhF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAC3C,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC;SACtB,WAAW,CAAC,oCAAoC,CAAC;SACjD,MAAM,CAAC,YAAY,CAAC,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function createBuildCommand(): Command;
3
+ //# sourceMappingURL=build.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsTpC,wBAAgB,kBAAkB,IAAI,OAAO,CAK5C"}
@@ -0,0 +1,273 @@
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 * as esbuild from "esbuild";
7
+ import { execSync } from "child_process";
8
+ import { resolveCssImports } from "../utils/css-import-resolver.js";
9
+ import { ikasComponentUtilsPlugin } from "../utils/observer-runtime.js";
10
+ async function compileComponent(componentId, entryPath, stylesPath) {
11
+ const componentDir = path.dirname(path.resolve(process.cwd(), entryPath));
12
+ try {
13
+ // Build server bundle (for SSR with preact-render-to-string)
14
+ const serverResult = await esbuild.build({
15
+ entryPoints: [path.resolve(process.cwd(), entryPath)],
16
+ bundle: true,
17
+ format: "esm",
18
+ platform: "node",
19
+ target: "node18",
20
+ write: false,
21
+ external: [
22
+ "preact",
23
+ "preact/hooks",
24
+ "preact-render-to-string",
25
+ "mobx",
26
+ "@ikas/bp-storefront",
27
+ "@ikas/bp-storefront-models",
28
+ "@ikas/bp-storefront-config",
29
+ "@ikas/bp-storefront-api"
30
+ ],
31
+ plugins: [ikasComponentUtilsPlugin()],
32
+ jsx: "transform",
33
+ jsxFactory: "h",
34
+ jsxFragment: "Fragment",
35
+ tsconfigRaw: {
36
+ compilerOptions: {
37
+ jsx: "react",
38
+ jsxFactory: "h",
39
+ jsxFragmentFactory: "Fragment"
40
+ }
41
+ },
42
+ minify: true,
43
+ sourcemap: false,
44
+ banner: {
45
+ js: 'import{h,Fragment}from"preact";'
46
+ }
47
+ });
48
+ // Build client bundle (for hydration)
49
+ const clientResult = await esbuild.build({
50
+ entryPoints: [path.resolve(process.cwd(), entryPath)],
51
+ bundle: true,
52
+ format: "esm",
53
+ platform: "browser",
54
+ target: "es2020",
55
+ write: false,
56
+ external: [
57
+ "preact",
58
+ "preact/hooks",
59
+ "mobx",
60
+ "@ikas/bp-storefront",
61
+ "@ikas/bp-storefront-models",
62
+ "@ikas/bp-storefront-config"
63
+ ],
64
+ plugins: [ikasComponentUtilsPlugin()],
65
+ jsx: "transform",
66
+ jsxFactory: "h",
67
+ jsxFragment: "Fragment",
68
+ tsconfigRaw: {
69
+ compilerOptions: {
70
+ jsx: "react",
71
+ jsxFactory: "h",
72
+ jsxFragmentFactory: "Fragment"
73
+ }
74
+ },
75
+ minify: true,
76
+ sourcemap: false,
77
+ banner: {
78
+ js: 'import{h,Fragment}from"preact";'
79
+ }
80
+ });
81
+ // Read and scope CSS (with import resolution)
82
+ const cssPath = path.resolve(process.cwd(), stylesPath);
83
+ let css = "";
84
+ if (fs.existsSync(cssPath)) {
85
+ const rawCss = fs.readFileSync(cssPath, "utf-8");
86
+ css = resolveCssImports(rawCss, cssPath);
87
+ }
88
+ // Scope CSS with component ID prefix
89
+ const scopedCss = scopeCSS(css, componentId);
90
+ return {
91
+ success: true,
92
+ serverJs: serverResult.outputFiles[0]?.text || "",
93
+ clientJs: clientResult.outputFiles[0]?.text || "",
94
+ scopedCss
95
+ };
96
+ }
97
+ catch (error) {
98
+ return {
99
+ success: false,
100
+ serverJs: "",
101
+ clientJs: "",
102
+ scopedCss: "",
103
+ error: error instanceof Error ? error.message : String(error)
104
+ };
105
+ }
106
+ }
107
+ function scopeCSS(css, componentId) {
108
+ // Add a scoping class to all selectors
109
+ const scopeClass = `cc_${componentId.replace(/[^a-zA-Z0-9]/g, "_")}`;
110
+ // Simple CSS scoping - prepend scope class to each rule
111
+ // This is a basic implementation; a production version would use a proper CSS parser
112
+ const lines = css.split("\n");
113
+ const scopedLines = [];
114
+ let inMediaQuery = false;
115
+ let inKeyframes = false;
116
+ for (const line of lines) {
117
+ const trimmed = line.trim();
118
+ // Skip empty lines
119
+ if (!trimmed) {
120
+ scopedLines.push(line);
121
+ continue;
122
+ }
123
+ // Handle @media queries
124
+ if (trimmed.startsWith("@media")) {
125
+ inMediaQuery = true;
126
+ scopedLines.push(line);
127
+ continue;
128
+ }
129
+ // Handle @keyframes
130
+ if (trimmed.startsWith("@keyframes") || trimmed.startsWith("@-webkit-keyframes")) {
131
+ inKeyframes = true;
132
+ scopedLines.push(line);
133
+ continue;
134
+ }
135
+ // Handle closing braces for @rules
136
+ if (trimmed === "}" && (inMediaQuery || inKeyframes)) {
137
+ if (inKeyframes && !trimmed.includes("{")) {
138
+ // End of keyframes
139
+ inKeyframes = false;
140
+ }
141
+ else if (inMediaQuery) {
142
+ inMediaQuery = false;
143
+ }
144
+ scopedLines.push(line);
145
+ continue;
146
+ }
147
+ // Skip keyframe percentages/from/to
148
+ if (inKeyframes) {
149
+ scopedLines.push(line);
150
+ continue;
151
+ }
152
+ // Skip lines that don't contain selectors
153
+ if (!trimmed.includes("{") || trimmed.startsWith("@")) {
154
+ scopedLines.push(line);
155
+ continue;
156
+ }
157
+ // Scope the selector
158
+ const [selector, rest] = line.split("{");
159
+ if (selector && rest !== undefined) {
160
+ const scopedSelector = selector
161
+ .split(",")
162
+ .map((s) => `.${scopeClass} ${s.trim()}`)
163
+ .join(", ");
164
+ scopedLines.push(`${scopedSelector} {${rest}`);
165
+ }
166
+ else {
167
+ scopedLines.push(line);
168
+ }
169
+ }
170
+ return scopedLines.join("\n");
171
+ }
172
+ function runTypeCheck() {
173
+ const spinner = ora("Type checking with TypeScript...").start();
174
+ try {
175
+ execSync("npx tsc --noEmit", { cwd: process.cwd(), stdio: "pipe" });
176
+ spinner.succeed(chalk.green("Type check passed"));
177
+ return true;
178
+ }
179
+ catch (error) {
180
+ spinner.fail(chalk.red("Type check failed"));
181
+ const execError = error;
182
+ const output = execError.stdout?.toString() || execError.stderr?.toString() || "";
183
+ if (output) {
184
+ console.error("\n" + output);
185
+ }
186
+ return false;
187
+ }
188
+ }
189
+ async function buildComponents(options) {
190
+ const configPath = path.resolve(process.cwd(), "ikas.config.json");
191
+ // Check if we're in an ikas component project
192
+ if (!fs.existsSync(configPath)) {
193
+ console.error(chalk.red("Error: ikas.config.json not found"));
194
+ console.error(chalk.gray("Make sure you're in an ikas component project directory"));
195
+ process.exit(1);
196
+ }
197
+ // Run TypeScript type checking before building
198
+ if (!runTypeCheck()) {
199
+ process.exit(1);
200
+ }
201
+ // Read config
202
+ const config = JSON.parse(fs.readFileSync(configPath, "utf-8"));
203
+ const outputDir = options.output || "dist";
204
+ console.log(chalk.cyan("\n Building ikas Components\n"));
205
+ console.log(chalk.gray(` Project: ${config.name}`));
206
+ console.log(chalk.gray(` Output: ${outputDir}/\n`));
207
+ // Create output directory
208
+ const outputPath = path.resolve(process.cwd(), outputDir);
209
+ if (fs.existsSync(outputPath)) {
210
+ fs.rmSync(outputPath, { recursive: true });
211
+ }
212
+ fs.mkdirSync(outputPath, { recursive: true });
213
+ const results = [];
214
+ // Build each component
215
+ for (const component of config.components) {
216
+ const spinner = ora(`Building ${component.name}...`).start();
217
+ const result = await compileComponent(component.id, component.entry, component.styles);
218
+ if (result.success) {
219
+ // Write output files
220
+ const componentOutDir = path.join(outputPath, component.id);
221
+ fs.mkdirSync(componentOutDir, { recursive: true });
222
+ fs.writeFileSync(path.join(componentOutDir, "server.js"), result.serverJs);
223
+ fs.writeFileSync(path.join(componentOutDir, "client.js"), result.clientJs);
224
+ fs.writeFileSync(path.join(componentOutDir, "styles.css"), result.scopedCss);
225
+ // Write component metadata
226
+ const metadata = {
227
+ id: component.id,
228
+ name: component.name,
229
+ props: component.props
230
+ };
231
+ fs.writeFileSync(path.join(componentOutDir, "metadata.json"), JSON.stringify(metadata, null, 2));
232
+ spinner.succeed(chalk.green(`${component.name} built successfully`));
233
+ results.push({ name: component.name, success: true });
234
+ }
235
+ else {
236
+ spinner.fail(chalk.red(`${component.name} failed to build`));
237
+ console.error(chalk.gray(` ${result.error}`));
238
+ results.push({ name: component.name, success: false, error: result.error });
239
+ }
240
+ }
241
+ // Write manifest
242
+ const manifest = {
243
+ name: config.name,
244
+ version: config.version,
245
+ buildTime: new Date().toISOString(),
246
+ components: config.components.map((c) => ({
247
+ id: c.id,
248
+ name: c.name,
249
+ props: c.props,
250
+ ...(c.type && c.type !== "component" ? { type: c.type } : {}),
251
+ }))
252
+ };
253
+ fs.writeFileSync(path.join(outputPath, "manifest.json"), JSON.stringify(manifest, null, 2));
254
+ // Summary
255
+ const successful = results.filter((r) => r.success).length;
256
+ const failed = results.filter((r) => !r.success).length;
257
+ console.log("\n" + chalk.cyan(" Build Summary"));
258
+ console.log(chalk.green(` Successful: ${successful}`));
259
+ if (failed > 0) {
260
+ console.log(chalk.red(` Failed: ${failed}`));
261
+ }
262
+ console.log(chalk.gray(`\n Output: ${outputPath}\n`));
263
+ if (failed > 0) {
264
+ process.exit(1);
265
+ }
266
+ }
267
+ export function createBuildCommand() {
268
+ return new Command("build")
269
+ .description("Build components for production")
270
+ .option("-o, --output <dir>", "Output directory", "dist")
271
+ .action(buildComponents);
272
+ }
273
+ //# sourceMappingURL=build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { Command } from "commander";
2
+ export declare function createCreateCommand(): Command;
3
+ export declare function run(): Promise<void>;
4
+ //# sourceMappingURL=create.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAskBpC,wBAAgB,mBAAmB,IAAI,OAAO,CA4B7C;AAGD,wBAAsB,GAAG,kBAiCxB"}