@cmssy/cli 0.22.4 → 1.0.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 (260) hide show
  1. package/README.md +49 -650
  2. package/dist/cli.js +706 -328
  3. package/package.json +26 -73
  4. package/templates/block/Component.module.css.tpl +12 -0
  5. package/templates/block/Component.tsx.tpl +15 -0
  6. package/templates/block/block.ts.tpl +11 -0
  7. package/templates/init/app/[[...path]]/page.tsx +19 -0
  8. package/templates/init/app/api/draft/route.ts +5 -0
  9. package/templates/init/blocks/hero/Hero.module.css +131 -0
  10. package/templates/init/blocks/hero/Hero.tsx +100 -0
  11. package/templates/init/blocks/hero/block.ts +21 -0
  12. package/templates/init/cmssy/blocks.ts +5 -0
  13. package/templates/init/cmssy/editor.tsx +10 -0
  14. package/templates/init/cmssy.config.ts +8 -0
  15. package/templates/init/env.example +4 -0
  16. package/templates/init/next.config.mjs +8 -0
  17. package/templates/init/proxy.ts +32 -0
  18. package/config.d.ts +0 -3
  19. package/config.js +0 -4
  20. package/dist/cli.d.ts +0 -3
  21. package/dist/cli.d.ts.map +0 -1
  22. package/dist/cli.js.map +0 -1
  23. package/dist/commands/add-source.d.ts +0 -13
  24. package/dist/commands/add-source.d.ts.map +0 -1
  25. package/dist/commands/add-source.js +0 -273
  26. package/dist/commands/add-source.js.map +0 -1
  27. package/dist/commands/build.d.ts +0 -7
  28. package/dist/commands/build.d.ts.map +0 -1
  29. package/dist/commands/build.js +0 -127
  30. package/dist/commands/build.js.map +0 -1
  31. package/dist/commands/codegen.d.ts +0 -7
  32. package/dist/commands/codegen.d.ts.map +0 -1
  33. package/dist/commands/codegen.js +0 -150
  34. package/dist/commands/codegen.js.map +0 -1
  35. package/dist/commands/configure.d.ts +0 -6
  36. package/dist/commands/configure.d.ts.map +0 -1
  37. package/dist/commands/configure.js +0 -39
  38. package/dist/commands/configure.js.map +0 -1
  39. package/dist/commands/create.d.ts +0 -18
  40. package/dist/commands/create.d.ts.map +0 -1
  41. package/dist/commands/create.js +0 -403
  42. package/dist/commands/create.js.map +0 -1
  43. package/dist/commands/dev.d.ts +0 -6
  44. package/dist/commands/dev.d.ts.map +0 -1
  45. package/dist/commands/dev.js +0 -144
  46. package/dist/commands/dev.js.map +0 -1
  47. package/dist/commands/doctor.d.ts +0 -2
  48. package/dist/commands/doctor.d.ts.map +0 -1
  49. package/dist/commands/doctor.js +0 -230
  50. package/dist/commands/doctor.js.map +0 -1
  51. package/dist/commands/init.d.ts +0 -6
  52. package/dist/commands/init.d.ts.map +0 -1
  53. package/dist/commands/init.js +0 -414
  54. package/dist/commands/init.js.map +0 -1
  55. package/dist/commands/lib.d.ts +0 -17
  56. package/dist/commands/lib.d.ts.map +0 -1
  57. package/dist/commands/lib.js +0 -132
  58. package/dist/commands/lib.js.map +0 -1
  59. package/dist/commands/link.d.ts +0 -8
  60. package/dist/commands/link.d.ts.map +0 -1
  61. package/dist/commands/link.js +0 -116
  62. package/dist/commands/link.js.map +0 -1
  63. package/dist/commands/migrate.d.ts +0 -2
  64. package/dist/commands/migrate.d.ts.map +0 -1
  65. package/dist/commands/migrate.js +0 -231
  66. package/dist/commands/migrate.js.map +0 -1
  67. package/dist/commands/package.d.ts +0 -14
  68. package/dist/commands/package.d.ts.map +0 -1
  69. package/dist/commands/package.js +0 -137
  70. package/dist/commands/package.js.map +0 -1
  71. package/dist/commands/publish-block-buildtime.d.ts +0 -8
  72. package/dist/commands/publish-block-buildtime.d.ts.map +0 -1
  73. package/dist/commands/publish-block-buildtime.js +0 -290
  74. package/dist/commands/publish-block-buildtime.js.map +0 -1
  75. package/dist/commands/publish-template.d.ts +0 -22
  76. package/dist/commands/publish-template.d.ts.map +0 -1
  77. package/dist/commands/publish-template.js +0 -345
  78. package/dist/commands/publish-template.js.map +0 -1
  79. package/dist/commands/publish.d.ts +0 -15
  80. package/dist/commands/publish.d.ts.map +0 -1
  81. package/dist/commands/publish.js +0 -1003
  82. package/dist/commands/publish.js.map +0 -1
  83. package/dist/commands/skills.d.ts +0 -11
  84. package/dist/commands/skills.d.ts.map +0 -1
  85. package/dist/commands/skills.js +0 -178
  86. package/dist/commands/skills.js.map +0 -1
  87. package/dist/commands/sync.d.ts +0 -6
  88. package/dist/commands/sync.d.ts.map +0 -1
  89. package/dist/commands/sync.js +0 -208
  90. package/dist/commands/sync.js.map +0 -1
  91. package/dist/commands/test.d.ts +0 -8
  92. package/dist/commands/test.d.ts.map +0 -1
  93. package/dist/commands/test.js +0 -60
  94. package/dist/commands/test.js.map +0 -1
  95. package/dist/commands/upload.d.ts +0 -11
  96. package/dist/commands/upload.d.ts.map +0 -1
  97. package/dist/commands/upload.js +0 -128
  98. package/dist/commands/upload.js.map +0 -1
  99. package/dist/commands/workspaces.d.ts +0 -2
  100. package/dist/commands/workspaces.d.ts.map +0 -1
  101. package/dist/commands/workspaces.js +0 -62
  102. package/dist/commands/workspaces.js.map +0 -1
  103. package/dist/dev-ui/app.js +0 -1284
  104. package/dist/dev-ui/index.html +0 -1511
  105. package/dist/dev-ui-react/App.tsx +0 -164
  106. package/dist/dev-ui-react/__tests__/previewData.test.ts +0 -193
  107. package/dist/dev-ui-react/components/BlocksList.tsx +0 -232
  108. package/dist/dev-ui-react/components/Editor.tsx +0 -469
  109. package/dist/dev-ui-react/components/Preview.tsx +0 -146
  110. package/dist/dev-ui-react/hooks/useBlocks.ts +0 -80
  111. package/dist/dev-ui-react/index.html +0 -13
  112. package/dist/dev-ui-react/main.tsx +0 -8
  113. package/dist/dev-ui-react/styles.css +0 -856
  114. package/dist/dev-ui-react/types.ts +0 -45
  115. package/dist/skills/claude/cmssy-block.md +0 -454
  116. package/dist/skills/claude/cmssy-mcp-content.md +0 -235
  117. package/dist/test-helpers/index.d.ts +0 -23
  118. package/dist/test-helpers/index.d.ts.map +0 -1
  119. package/dist/test-helpers/index.js +0 -50
  120. package/dist/test-helpers/index.js.map +0 -1
  121. package/dist/types/block-config.d.ts +0 -6
  122. package/dist/types/block-config.d.ts.map +0 -1
  123. package/dist/types/block-config.js +0 -12
  124. package/dist/types/block-config.js.map +0 -1
  125. package/dist/types/publish-job.d.ts +0 -61
  126. package/dist/types/publish-job.d.ts.map +0 -1
  127. package/dist/types/publish-job.js +0 -13
  128. package/dist/types/publish-job.js.map +0 -1
  129. package/dist/utils/api-error.d.ts +0 -10
  130. package/dist/utils/api-error.d.ts.map +0 -1
  131. package/dist/utils/api-error.js +0 -55
  132. package/dist/utils/api-error.js.map +0 -1
  133. package/dist/utils/block-config.d.ts +0 -87
  134. package/dist/utils/block-config.d.ts.map +0 -1
  135. package/dist/utils/block-config.js +0 -214
  136. package/dist/utils/block-config.js.map +0 -1
  137. package/dist/utils/blocks-meta-cache.d.ts +0 -28
  138. package/dist/utils/blocks-meta-cache.d.ts.map +0 -1
  139. package/dist/utils/blocks-meta-cache.js +0 -72
  140. package/dist/utils/blocks-meta-cache.js.map +0 -1
  141. package/dist/utils/builder.d.ts +0 -34
  142. package/dist/utils/builder.d.ts.map +0 -1
  143. package/dist/utils/builder.js +0 -140
  144. package/dist/utils/builder.js.map +0 -1
  145. package/dist/utils/cmssy-config.d.ts +0 -16
  146. package/dist/utils/cmssy-config.d.ts.map +0 -1
  147. package/dist/utils/cmssy-config.js +0 -19
  148. package/dist/utils/cmssy-config.js.map +0 -1
  149. package/dist/utils/config.d.ts +0 -9
  150. package/dist/utils/config.d.ts.map +0 -1
  151. package/dist/utils/config.js +0 -51
  152. package/dist/utils/config.js.map +0 -1
  153. package/dist/utils/dependency-check.d.ts +0 -21
  154. package/dist/utils/dependency-check.d.ts.map +0 -1
  155. package/dist/utils/dependency-check.js +0 -56
  156. package/dist/utils/dependency-check.js.map +0 -1
  157. package/dist/utils/dev-generator/api-routes/blocks.d.ts +0 -3
  158. package/dist/utils/dev-generator/api-routes/blocks.d.ts.map +0 -1
  159. package/dist/utils/dev-generator/api-routes/blocks.js +0 -194
  160. package/dist/utils/dev-generator/api-routes/blocks.js.map +0 -1
  161. package/dist/utils/dev-generator/api-routes/config.d.ts +0 -2
  162. package/dist/utils/dev-generator/api-routes/config.d.ts.map +0 -1
  163. package/dist/utils/dev-generator/api-routes/config.js +0 -107
  164. package/dist/utils/dev-generator/api-routes/config.js.map +0 -1
  165. package/dist/utils/dev-generator/api-routes/preview.d.ts +0 -2
  166. package/dist/utils/dev-generator/api-routes/preview.d.ts.map +0 -1
  167. package/dist/utils/dev-generator/api-routes/preview.js +0 -50
  168. package/dist/utils/dev-generator/api-routes/preview.js.map +0 -1
  169. package/dist/utils/dev-generator/api-routes/workspaces.d.ts +0 -2
  170. package/dist/utils/dev-generator/api-routes/workspaces.d.ts.map +0 -1
  171. package/dist/utils/dev-generator/api-routes/workspaces.js +0 -128
  172. package/dist/utils/dev-generator/api-routes/workspaces.js.map +0 -1
  173. package/dist/utils/dev-generator/helpers.d.ts +0 -23
  174. package/dist/utils/dev-generator/helpers.d.ts.map +0 -1
  175. package/dist/utils/dev-generator/helpers.js +0 -128
  176. package/dist/utils/dev-generator/helpers.js.map +0 -1
  177. package/dist/utils/dev-generator/home-page.d.ts +0 -2
  178. package/dist/utils/dev-generator/home-page.d.ts.map +0 -1
  179. package/dist/utils/dev-generator/home-page.js +0 -643
  180. package/dist/utils/dev-generator/home-page.js.map +0 -1
  181. package/dist/utils/dev-generator/index.d.ts +0 -11
  182. package/dist/utils/dev-generator/index.d.ts.map +0 -1
  183. package/dist/utils/dev-generator/index.js +0 -85
  184. package/dist/utils/dev-generator/index.js.map +0 -1
  185. package/dist/utils/dev-generator/layout.d.ts +0 -3
  186. package/dist/utils/dev-generator/layout.d.ts.map +0 -1
  187. package/dist/utils/dev-generator/layout.js +0 -63
  188. package/dist/utils/dev-generator/layout.js.map +0 -1
  189. package/dist/utils/dev-generator/next-config.d.ts +0 -3
  190. package/dist/utils/dev-generator/next-config.d.ts.map +0 -1
  191. package/dist/utils/dev-generator/next-config.js +0 -111
  192. package/dist/utils/dev-generator/next-config.js.map +0 -1
  193. package/dist/utils/dev-generator/preview-pages.d.ts +0 -3
  194. package/dist/utils/dev-generator/preview-pages.d.ts.map +0 -1
  195. package/dist/utils/dev-generator/preview-pages.js +0 -833
  196. package/dist/utils/dev-generator/preview-pages.js.map +0 -1
  197. package/dist/utils/dev-generator.d.ts +0 -12
  198. package/dist/utils/dev-generator.d.ts.map +0 -1
  199. package/dist/utils/dev-generator.js +0 -1752
  200. package/dist/utils/dev-generator.js.map +0 -1
  201. package/dist/utils/field-schema.d.ts +0 -13
  202. package/dist/utils/field-schema.d.ts.map +0 -1
  203. package/dist/utils/field-schema.js +0 -182
  204. package/dist/utils/field-schema.js.map +0 -1
  205. package/dist/utils/graphql.d.ts +0 -39
  206. package/dist/utils/graphql.d.ts.map +0 -1
  207. package/dist/utils/graphql.js +0 -138
  208. package/dist/utils/graphql.js.map +0 -1
  209. package/dist/utils/lib-manifest.d.ts +0 -7
  210. package/dist/utils/lib-manifest.d.ts.map +0 -1
  211. package/dist/utils/lib-manifest.js +0 -59
  212. package/dist/utils/lib-manifest.js.map +0 -1
  213. package/dist/utils/publish-helpers.d.ts +0 -43
  214. package/dist/utils/publish-helpers.d.ts.map +0 -1
  215. package/dist/utils/publish-helpers.js +0 -215
  216. package/dist/utils/publish-helpers.js.map +0 -1
  217. package/dist/utils/publish-helpers.test.d.ts +0 -2
  218. package/dist/utils/publish-helpers.test.d.ts.map +0 -1
  219. package/dist/utils/publish-helpers.test.js +0 -24
  220. package/dist/utils/publish-helpers.test.js.map +0 -1
  221. package/dist/utils/resolve-workspace.d.ts +0 -6
  222. package/dist/utils/resolve-workspace.d.ts.map +0 -1
  223. package/dist/utils/resolve-workspace.js +0 -32
  224. package/dist/utils/resolve-workspace.js.map +0 -1
  225. package/dist/utils/scanner.d.ts +0 -42
  226. package/dist/utils/scanner.d.ts.map +0 -1
  227. package/dist/utils/scanner.js +0 -156
  228. package/dist/utils/scanner.js.map +0 -1
  229. package/dist/utils/schema-diff.d.ts +0 -22
  230. package/dist/utils/schema-diff.d.ts.map +0 -1
  231. package/dist/utils/schema-diff.js +0 -107
  232. package/dist/utils/schema-diff.js.map +0 -1
  233. package/dist/utils/source-collector.d.ts +0 -19
  234. package/dist/utils/source-collector.d.ts.map +0 -1
  235. package/dist/utils/source-collector.js +0 -565
  236. package/dist/utils/source-collector.js.map +0 -1
  237. package/dist/utils/theme-builder.d.ts +0 -12
  238. package/dist/utils/theme-builder.d.ts.map +0 -1
  239. package/dist/utils/theme-builder.js +0 -117
  240. package/dist/utils/theme-builder.js.map +0 -1
  241. package/dist/utils/type-generator.d.ts +0 -9
  242. package/dist/utils/type-generator.d.ts.map +0 -1
  243. package/dist/utils/type-generator.js +0 -86
  244. package/dist/utils/type-generator.js.map +0 -1
  245. package/dist/utils/version.d.ts +0 -10
  246. package/dist/utils/version.d.ts.map +0 -1
  247. package/dist/utils/version.js +0 -30
  248. package/dist/utils/version.js.map +0 -1
  249. package/dist/utils/versions.d.ts.map +0 -1
  250. package/dist/utils/versions.js.map +0 -1
  251. package/src/dev-app/app/api/blocks/[name]/config/route.ts +0 -140
  252. package/src/dev-app/app/api/blocks/route.ts +0 -61
  253. package/src/dev-app/app/api/config/route.ts +0 -98
  254. package/src/dev-app/app/api/context/route.ts +0 -126
  255. package/src/dev-app/app/api/preview/[name]/route.ts +0 -137
  256. package/src/dev-app/app/api/workspaces/route.ts +0 -124
  257. package/src/dev-app/app/layout.tsx +0 -18
  258. package/src/dev-app/app/page.tsx +0 -1785
  259. package/test.d.ts +0 -1
  260. package/test.js +0 -2
@@ -1,39 +0,0 @@
1
- import chalk from "chalk";
2
- import inquirer from "inquirer";
3
- import { loadConfig, saveConfig } from "../utils/config.js";
4
- export async function configureCommand(options) {
5
- console.log(chalk.blue.bold("\n🔨 Cmssy - Configure\n"));
6
- const existingConfig = loadConfig();
7
- const answers = await inquirer.prompt([
8
- {
9
- type: "input",
10
- name: "apiUrl",
11
- message: "Cmssy API URL:",
12
- default: options.apiUrl ||
13
- existingConfig.apiUrl ||
14
- "https://api.cmssy.io/graphql",
15
- },
16
- {
17
- type: "password",
18
- name: "apiToken",
19
- message: "Cmssy API Token (from /settings/tokens):",
20
- default: existingConfig.apiToken || undefined,
21
- validate: (input) => {
22
- if (!input || input.length < 10) {
23
- return "Please enter a valid API token";
24
- }
25
- return true;
26
- },
27
- },
28
- ]);
29
- // Save to .env
30
- saveConfig({
31
- apiUrl: answers.apiUrl,
32
- apiToken: answers.apiToken,
33
- });
34
- console.log(chalk.green("\n✓ Configuration saved to .env\n"));
35
- console.log(chalk.cyan("Next steps:\n"));
36
- console.log(chalk.white(" cmssy publish-block <name> -w <id> # Publish a block to workspace"));
37
- console.log(chalk.white(" cmssy sync # Pull blocks from Cmssy\n"));
38
- }
39
- //# sourceMappingURL=configure.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"configure.js","sourceRoot":"","sources":["../../src/commands/configure.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAM5D,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,OAAyB;IAC9D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC;IAEzD,MAAM,cAAc,GAAG,UAAU,EAAE,CAAC;IAEpC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;QACpC;YACE,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,gBAAgB;YACzB,OAAO,EACL,OAAO,CAAC,MAAM;gBACd,cAAc,CAAC,MAAM;gBACrB,8BAA8B;SACjC;QACD;YACE,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,0CAA0C;YACnD,OAAO,EAAE,cAAc,CAAC,QAAQ,IAAI,SAAS;YAC7C,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;gBAClB,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;oBAChC,OAAO,gCAAgC,CAAC;gBAC1C,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;SACF;KACF,CAAC,CAAC;IAEH,eAAe;IACf,UAAU,CAAC;QACT,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ;KAC3B,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC,CAAC;IAC9D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;IACzC,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,KAAK,CACT,uEAAuE,CACxE,CACF,CAAC;IACF,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,KAAK,CACT,kEAAkE,CACnE,CACF,CAAC;AACJ,CAAC"}
@@ -1,18 +0,0 @@
1
- interface CreateBlockOptions {
2
- yes?: boolean;
3
- description?: string;
4
- category?: string;
5
- tags?: string;
6
- }
7
- declare function createBlock(name: string, options?: CreateBlockOptions): Promise<void>;
8
- interface CreateTemplateOptions {
9
- yes?: boolean;
10
- description?: string;
11
- }
12
- declare function createPage(name: string, options?: CreateTemplateOptions): Promise<void>;
13
- export declare const createCommand: {
14
- block: typeof createBlock;
15
- page: typeof createPage;
16
- };
17
- export {};
18
- //# sourceMappingURL=create.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAqBA,UAAU,kBAAkB;IAC1B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,iBAAe,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,kBAAuB,iBA8OxE;AAED,UAAU,qBAAqB;IAC7B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,iBAAe,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,qBAA0B,iBAsN1E;AAED,eAAO,MAAM,aAAa;;;CAGzB,CAAC"}
@@ -1,403 +0,0 @@
1
- import chalk from "chalk";
2
- import fs from "fs-extra";
3
- import inquirer from "inquirer";
4
- import ora from "ora";
5
- import path from "path";
6
- import { loadConfig } from "../utils/cmssy-config.js";
7
- import { getFieldTypes } from "../utils/field-schema.js";
8
- import { generateTypes } from "../utils/type-generator.js";
9
- import { updateBlockInCache } from "../utils/blocks-meta-cache.js";
10
- /**
11
- * Convert kebab-case or snake_case to PascalCase.
12
- * Examples: "marketing-site" → "MarketingSite", "my_block" → "MyBlock"
13
- */
14
- function toPascalCase(str) {
15
- return str
16
- .split(/[-_\s]+/)
17
- .map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())
18
- .join("");
19
- }
20
- async function createBlock(name, options = {}) {
21
- const spinner = ora("Creating block...").start();
22
- try {
23
- // Load config
24
- const config = await loadConfig();
25
- const blockPath = path.join(process.cwd(), "blocks", name);
26
- // Check if block already exists
27
- if (fs.existsSync(blockPath)) {
28
- spinner.fail(`Block "${name}" already exists`);
29
- process.exit(1);
30
- }
31
- let answers;
32
- if (options.yes) {
33
- // Use defaults or provided options
34
- const defaultDisplayName = toPascalCase(name);
35
- answers = {
36
- displayName: defaultDisplayName,
37
- description: options.description || "",
38
- category: options.category || "marketing",
39
- tags: options.tags
40
- ? options.tags
41
- .split(",")
42
- .map((t) => t.trim())
43
- .filter(Boolean)
44
- : [],
45
- };
46
- spinner.text = "Creating block files...";
47
- }
48
- else {
49
- // Stop spinner before prompting (ora can interfere with inquirer stdin)
50
- spinner.stop();
51
- // Prompt for block details
52
- answers = await inquirer.prompt([
53
- {
54
- type: "input",
55
- name: "displayName",
56
- message: "Display name:",
57
- default: toPascalCase(name),
58
- },
59
- {
60
- type: "input",
61
- name: "description",
62
- message: "Description:",
63
- default: options.description || "",
64
- },
65
- {
66
- type: "list",
67
- name: "category",
68
- message: "Category:",
69
- choices: [
70
- "marketing",
71
- "typography",
72
- "media",
73
- "layout",
74
- "forms",
75
- "navigation",
76
- "other",
77
- ],
78
- default: options.category || "marketing",
79
- },
80
- {
81
- type: "input",
82
- name: "tags",
83
- message: "Tags (comma-separated):",
84
- default: options.tags || "",
85
- filter: (input) => input
86
- .split(",")
87
- .map((tag) => tag.trim())
88
- .filter(Boolean),
89
- },
90
- ]);
91
- // Restart spinner for file creation
92
- spinner.start("Creating block files...");
93
- }
94
- // Create directory structure
95
- fs.mkdirSync(path.join(blockPath, "src"), { recursive: true });
96
- // Create component file based on framework
97
- if (config.framework === "react") {
98
- // Strip spaces from displayName (already PascalCase from toPascalCase or user input)
99
- const componentName = answers.displayName.replace(/\s+/g, "");
100
- const componentFile = `import { BlockContent } from './block';
101
-
102
- export default function ${componentName}({ content }: { content: BlockContent }) {
103
- const {
104
- heading = 'Heading',
105
- description = 'Description',
106
- } = content;
107
-
108
- return (
109
- <section className="${name}">
110
- <h2>{heading}</h2>
111
- <p>{description}</p>
112
- </section>
113
- );
114
- }
115
- `;
116
- fs.writeFileSync(path.join(blockPath, "src", `${componentName}.tsx`), componentFile);
117
- // Create index file - simplified format (standard React export)
118
- const indexFile = `export { default } from "./${componentName}";
119
- import "./index.css";
120
- `;
121
- fs.writeFileSync(path.join(blockPath, "src", "index.tsx"), indexFile);
122
- }
123
- // Create CSS file (with main.css import if project uses Tailwind)
124
- const hasTailwind = fs.existsSync(path.join(process.cwd(), "postcss.config.js"));
125
- const cssFile = hasTailwind
126
- ? `@import "../../../styles/main.css";
127
- `
128
- : `.${name} {
129
- padding: 2rem;
130
- }
131
-
132
- .${name} h2 {
133
- font-size: 2rem;
134
- margin-bottom: 1rem;
135
- }
136
-
137
- .${name} p {
138
- font-size: 1rem;
139
- color: #666;
140
- }
141
- `;
142
- fs.writeFileSync(path.join(blockPath, "src", "index.css"), cssFile);
143
- // Create minimal package.json
144
- const packageJson = {
145
- name: `@${config.projectName || "vendor"}/blocks.${name}`,
146
- version: "1.0.0",
147
- description: answers.description,
148
- author: config.author,
149
- };
150
- fs.writeFileSync(path.join(blockPath, "package.json"), JSON.stringify(packageJson, null, 2) + "\n");
151
- // Create config.ts
152
- const blockConfigContent = `import { defineBlock, field } from '@cmssy/cli/config';
153
-
154
- export default defineBlock({
155
- name: '${answers.displayName}',
156
- description: '${answers.description}',
157
- category: '${answers.category}',
158
- tags: ${JSON.stringify(answers.tags)},
159
-
160
- schema: {
161
- heading: field({
162
- type: 'singleLine',
163
- label: 'Heading',
164
- required: true,
165
- defaultValue: 'Heading',
166
- }),
167
- description: field({
168
- type: 'multiLine',
169
- label: 'Description',
170
- placeholder: 'Enter description',
171
- defaultValue: 'Description',
172
- }),
173
- },
174
- });
175
- `;
176
- fs.writeFileSync(path.join(blockPath, "config.ts"), blockConfigContent);
177
- // Create preview.json
178
- const previewData = {
179
- heading: "Preview Heading",
180
- description: "This is how your block will look in the preview.",
181
- };
182
- fs.writeFileSync(path.join(blockPath, "preview.json"), JSON.stringify(previewData, null, 2) + "\n");
183
- // Generate initial types
184
- const initialSchema = {
185
- heading: {
186
- type: "singleLine",
187
- label: "Heading",
188
- required: true,
189
- defaultValue: "Heading",
190
- },
191
- description: {
192
- type: "multiLine",
193
- label: "Description",
194
- placeholder: "Enter description",
195
- defaultValue: "Description",
196
- },
197
- };
198
- const fieldTypes = await getFieldTypes();
199
- await generateTypes({ blockPath, schema: initialSchema, fieldTypes });
200
- // Add to metadata cache for instant filters
201
- updateBlockInCache(name, "block", {
202
- name: answers.displayName,
203
- description: answers.description,
204
- category: answers.category,
205
- tags: answers.tags,
206
- schema: initialSchema,
207
- }, "1.0.0");
208
- spinner.succeed(`Block "${name}" created successfully`);
209
- console.log(chalk.cyan("\nNext steps:\n"));
210
- console.log(chalk.white(" cmssy dev # Preview your block"));
211
- console.log(chalk.white(" cmssy build # Build your block\n"));
212
- }
213
- catch (error) {
214
- spinner.fail("Failed to create block");
215
- console.error(chalk.red("Error:"), error);
216
- process.exit(1);
217
- }
218
- }
219
- async function createPage(name, options = {}) {
220
- const spinner = ora("Creating page template...").start();
221
- try {
222
- const config = await loadConfig();
223
- const pagePath = path.join(process.cwd(), "templates", name);
224
- if (fs.existsSync(pagePath)) {
225
- spinner.fail(`Page template "${name}" already exists`);
226
- process.exit(1);
227
- }
228
- let answers;
229
- if (options.yes) {
230
- // Use defaults or provided options
231
- const defaultDisplayName = toPascalCase(name);
232
- answers = {
233
- displayName: defaultDisplayName,
234
- description: options.description || "",
235
- };
236
- spinner.text = "Creating page files...";
237
- }
238
- else {
239
- // Stop spinner before prompting (ora can interfere with inquirer stdin)
240
- spinner.stop();
241
- answers = await inquirer.prompt([
242
- {
243
- type: "input",
244
- name: "displayName",
245
- message: "Display name:",
246
- default: toPascalCase(name),
247
- },
248
- {
249
- type: "input",
250
- name: "description",
251
- message: "Description:",
252
- default: options.description || "",
253
- },
254
- ]);
255
- // Restart spinner for file creation
256
- spinner.start("Creating page files...");
257
- }
258
- fs.mkdirSync(path.join(pagePath, "src"), { recursive: true });
259
- if (config.framework === "react") {
260
- // Strip spaces from displayName (already PascalCase from toPascalCase or user input)
261
- const componentName = answers.displayName.replace(/\s+/g, "");
262
- const componentFile = `import { BlockContent } from './block';
263
-
264
- export default function ${componentName}({ content }: { content: BlockContent }) {
265
- const {
266
- title = 'Page Title',
267
- sections = [],
268
- } = content;
269
-
270
- return (
271
- <div className="${name}-page">
272
- <header>
273
- <h1>{title}</h1>
274
- </header>
275
- <main>
276
- {sections.map((section, index) => (
277
- <div key={index} className="section">
278
- {/* Render blocks here */}
279
- </div>
280
- ))}
281
- </main>
282
- </div>
283
- );
284
- }
285
- `;
286
- fs.writeFileSync(path.join(pagePath, "src", `${componentName}.tsx`), componentFile);
287
- const indexFile = `export { default } from './${componentName}';
288
- import './index.css';
289
- `;
290
- fs.writeFileSync(path.join(pagePath, "src", "index.tsx"), indexFile);
291
- }
292
- const cssFile = `.${name}-page {
293
- min-height: 100vh;
294
- }
295
-
296
- .${name}-page header {
297
- padding: 2rem;
298
- background: #f5f5f5;
299
- }
300
-
301
- .${name}-page h1 {
302
- font-size: 2.5rem;
303
- margin: 0;
304
- }
305
-
306
- .${name}-page main {
307
- padding: 2rem;
308
- }
309
-
310
- .section {
311
- margin-bottom: 2rem;
312
- }
313
- `;
314
- fs.writeFileSync(path.join(pagePath, "src", "index.css"), cssFile);
315
- // Create minimal package.json
316
- const packageJson = {
317
- name: `@${config.projectName || "vendor"}/templates.${name}`,
318
- version: "1.0.0",
319
- description: answers.description,
320
- author: config.author,
321
- };
322
- fs.writeFileSync(path.join(pagePath, "package.json"), JSON.stringify(packageJson, null, 2) + "\n");
323
- // Create config.ts
324
- const templateConfigContent = `import { defineTemplate, field } from '@cmssy/cli/config';
325
-
326
- export default defineTemplate({
327
- name: '${answers.displayName}',
328
- description: '${answers.description}',
329
- category: 'pages',
330
-
331
- pages: [
332
- {
333
- name: 'Home',
334
- slug: '/',
335
- blocks: [],
336
- },
337
- ],
338
-
339
- schema: {
340
- title: field({
341
- type: 'singleLine',
342
- label: 'Page Title',
343
- required: true,
344
- defaultValue: 'Page Title',
345
- }),
346
- sections: field({
347
- type: 'repeater',
348
- label: 'Page Sections',
349
- schema: {},
350
- }),
351
- },
352
- });
353
- `;
354
- fs.writeFileSync(path.join(pagePath, "config.ts"), templateConfigContent);
355
- const previewData = {
356
- title: "Preview Page",
357
- sections: [],
358
- };
359
- fs.writeFileSync(path.join(pagePath, "preview.json"), JSON.stringify(previewData, null, 2) + "\n");
360
- // Generate initial types
361
- const initialSchema = {
362
- title: {
363
- type: "singleLine",
364
- label: "Page Title",
365
- required: true,
366
- defaultValue: "Page Title",
367
- },
368
- sections: {
369
- type: "repeater",
370
- label: "Page Sections",
371
- schema: {},
372
- },
373
- };
374
- const fieldTypesTemplate = await getFieldTypes();
375
- await generateTypes({
376
- blockPath: pagePath,
377
- schema: initialSchema,
378
- fieldTypes: fieldTypesTemplate,
379
- });
380
- // Add to metadata cache for instant filters
381
- updateBlockInCache(name, "template", {
382
- name: answers.displayName,
383
- description: answers.description,
384
- category: "pages",
385
- tags: [],
386
- schema: initialSchema,
387
- }, "1.0.0");
388
- spinner.succeed(`Page template "${name}" created successfully`);
389
- console.log(chalk.cyan("\nNext steps:\n"));
390
- console.log(chalk.white(" cmssy dev # Preview your page"));
391
- console.log(chalk.white(" cmssy build # Build your page\n"));
392
- }
393
- catch (error) {
394
- spinner.fail("Failed to create page template");
395
- console.error(chalk.red("Error:"), error);
396
- process.exit(1);
397
- }
398
- }
399
- export const createCommand = {
400
- block: createBlock,
401
- page: createPage,
402
- };
403
- //# sourceMappingURL=create.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- interface DevOptions {
2
- port: string;
3
- }
4
- export declare function devCommand(options: DevOptions): Promise<void>;
5
- export {};
6
- //# sourceMappingURL=dev.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AAiBA,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE,UAAU,iBAkLnD"}
@@ -1,144 +0,0 @@
1
- import chalk from "chalk";
2
- import { spawn } from "child_process";
3
- import fs from "fs-extra";
4
- import ora from "ora";
5
- import path from "path";
6
- import { generateDevApp, regeneratePreviewPages, } from "../utils/dev-generator/index.js";
7
- import { loadMetaCache } from "../utils/blocks-meta-cache.js";
8
- import { scanResources } from "../utils/scanner.js";
9
- import { loadBlockConfig } from "../utils/block-config.js";
10
- import { checkBlockDependencies, printMissingDeps, } from "../utils/dependency-check.js";
11
- export async function devCommand(options) {
12
- const spinner = ora("Starting Next.js dev server...").start();
13
- try {
14
- const projectRoot = process.cwd();
15
- const port = parseInt(options.port, 10);
16
- // Ensure next.config exists
17
- const hasNextConfig = fs.existsSync(path.join(projectRoot, "next.config.mjs")) ||
18
- fs.existsSync(path.join(projectRoot, "next.config.js")) ||
19
- fs.existsSync(path.join(projectRoot, "next.config.ts"));
20
- if (!hasNextConfig) {
21
- spinner.fail("No next.config found. Run 'cmssy init' to create a new project.");
22
- process.exit(1);
23
- }
24
- // Scan blocks
25
- spinner.text = "Scanning blocks...";
26
- const resources = await scanResources({
27
- strict: false,
28
- loadConfig: false,
29
- validateSchema: false,
30
- loadPreview: false,
31
- requirePackageJson: false,
32
- });
33
- if (resources.length === 0) {
34
- spinner.warn("No blocks or templates found");
35
- console.log(chalk.yellow("\nCreate your first block:\n"));
36
- console.log(chalk.white(" npx cmssy create block my-block\n"));
37
- process.exit(0);
38
- }
39
- // Load metadata cache
40
- const metaCache = loadMetaCache(projectRoot);
41
- resources.forEach((r) => {
42
- const cached = metaCache.blocks[r.name];
43
- if (cached) {
44
- r.category = cached.category;
45
- r.displayName = cached.displayName || r.name;
46
- r.description = cached.description;
47
- }
48
- });
49
- // Check block dependencies (non-blocking - don't abort dev on config errors)
50
- const blocksWithConfigs = await Promise.all(resources
51
- .filter((r) => r.type === "block")
52
- .map(async (r) => {
53
- try {
54
- const config = (await loadBlockConfig(r.path));
55
- return { name: r.name, config };
56
- }
57
- catch {
58
- return { name: r.name, config: null };
59
- }
60
- }));
61
- const missingDeps = checkBlockDependencies(blocksWithConfigs, projectRoot);
62
- if (missingDeps.length > 0) {
63
- spinner.warn("Missing block dependencies");
64
- printMissingDeps(missingDeps);
65
- spinner.start("Generating Next.js dev app...");
66
- }
67
- // Generate the .cmssy/dev/ Next.js app
68
- spinner.text = "Generating Next.js dev app...";
69
- const devRoot = generateDevApp(projectRoot, resources);
70
- // Symlink node_modules from project root into dev app
71
- // so Next.js can resolve react, react-dom, next, etc.
72
- const devNodeModules = path.join(devRoot, "node_modules");
73
- const projectNodeModules = path.join(projectRoot, "node_modules");
74
- if (!fs.existsSync(devNodeModules) && fs.existsSync(projectNodeModules)) {
75
- fs.symlinkSync(projectNodeModules, devNodeModules, "junction");
76
- }
77
- // Find next binary from project's node_modules
78
- const nextBin = path.join(projectRoot, "node_modules/.bin/next");
79
- if (!fs.existsSync(nextBin)) {
80
- spinner.fail("'next' not found in node_modules. Run: npm install next");
81
- process.exit(1);
82
- }
83
- spinner.succeed("Next.js dev app generated");
84
- console.log(chalk.green.bold("\n─────────────────────────────────────────"));
85
- console.log(chalk.green.bold(" Cmssy Dev Server (Next.js)"));
86
- console.log(chalk.green.bold("─────────────────────────────────────────\n"));
87
- const blocks = resources.filter((r) => r.type === "block");
88
- const templates = resources.filter((r) => r.type === "template");
89
- console.log(chalk.cyan(` ${blocks.length} blocks, ${templates.length} templates`));
90
- console.log(chalk.green(`\n Local: ${chalk.cyan(`http://localhost:${port}`)}`));
91
- console.log(chalk.green(" Next.js Fast Refresh enabled"));
92
- console.log(chalk.green(" Press Ctrl+C to stop"));
93
- console.log(chalk.green.bold("\n─────────────────────────────────────────\n"));
94
- // Spawn next dev from project root so the project's own PostCSS config,
95
- // Tailwind setup, and node_modules resolution all work naturally.
96
- // The dev app directory is passed as argument to next dev.
97
- const nextProcess = spawn(nextBin, ["dev", devRoot, "--port", String(port)], {
98
- cwd: projectRoot,
99
- stdio: "inherit",
100
- env: {
101
- ...process.env,
102
- CMSSY_PROJECT_ROOT: projectRoot,
103
- NODE_OPTIONS: `${process.env.NODE_OPTIONS || ""} --max-old-space-size=4096`.trim(),
104
- },
105
- });
106
- nextProcess.on("error", (err) => {
107
- console.error(chalk.red("Failed to start Next.js:"), err.message);
108
- process.exit(1);
109
- });
110
- nextProcess.on("exit", (code) => {
111
- process.exit(code || 0);
112
- });
113
- // Watch for new blocks
114
- const chokidar = await import("chokidar");
115
- const watcher = chokidar.watch([
116
- path.join(projectRoot, "blocks/*/package.json"),
117
- path.join(projectRoot, "templates/*/package.json"),
118
- ], { ignoreInitial: true });
119
- watcher.on("add", async () => {
120
- console.log(chalk.green("\n New block detected, regenerating preview pages..."));
121
- const newResources = await scanResources({
122
- strict: false,
123
- loadConfig: false,
124
- validateSchema: false,
125
- loadPreview: false,
126
- requirePackageJson: false,
127
- });
128
- regeneratePreviewPages(projectRoot, newResources);
129
- console.log(chalk.green(" Preview pages regenerated. Refresh browser.\n"));
130
- });
131
- // Handle Ctrl+C
132
- process.on("SIGINT", () => {
133
- nextProcess.kill("SIGINT");
134
- watcher.close();
135
- process.exit(0);
136
- });
137
- }
138
- catch (error) {
139
- spinner.fail("Failed to start Next.js dev server");
140
- console.error(chalk.red("Error:"), error);
141
- process.exit(1);
142
- }
143
- }
144
- //# sourceMappingURL=dev.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export declare function doctorCommand(): Promise<void>;
2
- //# sourceMappingURL=doctor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AA8BA,wBAAsB,aAAa,kBA4NlC"}