@cmssy/cli 0.22.3 → 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 -231
  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,85 +0,0 @@
1
- import fs from "fs-extra";
2
- import path from "path";
3
- import { fileURLToPath } from "url";
4
- import { generateNextConfig, generateTsConfig } from "./next-config.js";
5
- import { generateGlobalsCss } from "./layout.js";
6
- import { generatePreviewPages } from "./preview-pages.js";
7
- const DEV_DIR = ".cmssy/dev";
8
- /**
9
- * Resolve the dev-app source directory.
10
- * In development: src/dev-app/ (from src/utils/dev-generator/)
11
- * When published: <packageRoot>/src/dev-app (shipped in npm package files)
12
- */
13
- function getDevAppSourceDir() {
14
- const __filename = fileURLToPath(import.meta.url);
15
- const __dirname = path.dirname(__filename);
16
- // Dev mode: src/utils/dev-generator/ -> ../../dev-app = src/dev-app/
17
- const srcDevApp = path.resolve(__dirname, "../../dev-app");
18
- if (fs.existsSync(srcDevApp))
19
- return srcDevApp;
20
- // Published: dist/utils/dev-generator/ -> ../../../src/dev-app
21
- const pkgRoot = path.resolve(__dirname, "../../..");
22
- const publishedDevApp = path.join(pkgRoot, "src/dev-app");
23
- if (fs.existsSync(publishedDevApp))
24
- return publishedDevApp;
25
- throw new Error("Could not find dev-app source directory. Ensure src/dev-app/ exists in @cmssy/cli.");
26
- }
27
- /**
28
- * Copy static dev-app files to the target directory.
29
- * Only copies files that aren't dynamically generated.
30
- */
31
- function copyDevAppFiles(devRoot) {
32
- const sourceDir = getDevAppSourceDir();
33
- // Copy all files from dev-app to devRoot
34
- const filesToCopy = [
35
- "app/page.tsx",
36
- "app/layout.tsx",
37
- "app/api/blocks/route.ts",
38
- "app/api/blocks/[name]/config/route.ts",
39
- "app/api/preview/[name]/route.ts",
40
- "app/api/config/route.ts",
41
- "app/api/context/route.ts",
42
- "app/api/workspaces/route.ts",
43
- ];
44
- for (const file of filesToCopy) {
45
- const src = path.join(sourceDir, file);
46
- const dest = path.join(devRoot, file);
47
- if (!fs.existsSync(src)) {
48
- throw new Error(`Missing required dev-app file: ${file} (expected at ${src})`);
49
- }
50
- fs.mkdirSync(path.dirname(dest), { recursive: true });
51
- fs.copyFileSync(src, dest);
52
- }
53
- }
54
- /**
55
- * Generate the .cmssy/dev/ Next.js app structure for cmssy dev.
56
- * Copies static UI files from dev-app/ and generates dynamic config files.
57
- */
58
- export function generateDevApp(projectRoot, resources) {
59
- const devRoot = path.join(projectRoot, DEV_DIR);
60
- // Clean and recreate
61
- fs.removeSync(devRoot);
62
- fs.mkdirSync(devRoot, { recursive: true });
63
- // Copy static files (page.tsx, layout.tsx, API routes)
64
- copyDevAppFiles(devRoot);
65
- // Generate dynamic files (project-specific)
66
- generateNextConfig(devRoot, projectRoot);
67
- generateTsConfig(devRoot, projectRoot);
68
- generateGlobalsCss(devRoot, projectRoot);
69
- generatePreviewPages(devRoot, projectRoot, resources);
70
- return devRoot;
71
- }
72
- /**
73
- * Regenerate only the preview pages (called when new blocks are detected).
74
- */
75
- export function regeneratePreviewPages(projectRoot, resources) {
76
- const devRoot = path.join(projectRoot, DEV_DIR);
77
- const previewDir = path.join(devRoot, "app/preview");
78
- // Remove old preview pages
79
- if (fs.existsSync(previewDir)) {
80
- fs.removeSync(previewDir);
81
- }
82
- fs.mkdirSync(previewDir, { recursive: true });
83
- generatePreviewPages(devRoot, projectRoot, resources);
84
- }
85
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/dev-generator/index.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- export declare function generateRootLayout(devRoot: string): void;
2
- export declare function generateGlobalsCss(devRoot: string, projectRoot: string): void;
3
- //# sourceMappingURL=layout.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../../src/utils/dev-generator/layout.ts"],"names":[],"mappings":"AAGA,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,QAyBjD;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,QAsCtE"}
@@ -1,63 +0,0 @@
1
- import fs from "fs-extra";
2
- import path from "path";
3
- export function generateRootLayout(devRoot) {
4
- const content = `import type { Metadata } from "next";
5
- import type { ReactNode } from "react";
6
- import "./globals.css";
7
-
8
- export const metadata: Metadata = {
9
- title: "Cmssy Dev Server",
10
- icons: {
11
- icon: "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'%3E%3Crect width='100' height='100' rx='20' fill='%23667eea'/%3E%3Ctext x='50' y='70' font-size='60' font-weight='bold' text-anchor='middle' fill='white' font-family='system-ui'%3EC%3C/text%3E%3C/svg%3E",
12
- },
13
- };
14
-
15
- export default function RootLayout({
16
- children,
17
- }: {
18
- children: ReactNode;
19
- }) {
20
- return (
21
- <html lang="en">
22
- <body>{children}</body>
23
- </html>
24
- );
25
- }
26
- `;
27
- fs.writeFileSync(path.join(devRoot, "app/layout.tsx"), content);
28
- }
29
- export function generateGlobalsCss(devRoot, projectRoot) {
30
- // Normalize to POSIX so the @import line still works on Windows.
31
- const rel = path
32
- .relative(path.join(devRoot, "app"), projectRoot)
33
- .replaceAll(path.sep, "/");
34
- // Check for project CSS files that contain Tailwind / theme
35
- const cssFiles = ["styles/main.css", "styles/globals.css", "app/globals.css"];
36
- const projectCssFile = cssFiles.find((f) => fs.existsSync(path.join(projectRoot, f)));
37
- // Import the project's main CSS (Tailwind + theme) if it exists
38
- const projectCssImport = projectCssFile
39
- ? `@import "${rel}/${projectCssFile}";\n\n`
40
- : "";
41
- const content = `${projectCssImport}*,
42
- *::before,
43
- *::after {
44
- box-sizing: border-box;
45
- }
46
-
47
- html,
48
- body {
49
- height: 100%;
50
- margin: 0;
51
- padding: 0;
52
- }
53
-
54
- body {
55
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
56
- background: #f5f5f5;
57
- line-height: 1.5;
58
- -webkit-font-smoothing: antialiased;
59
- }
60
- `;
61
- fs.writeFileSync(path.join(devRoot, "app/globals.css"), content);
62
- }
63
- //# sourceMappingURL=layout.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"layout.js","sourceRoot":"","sources":["../../../src/utils/dev-generator/layout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,UAAU,kBAAkB,CAAC,OAAe;IAChD,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;CAsBjB,CAAC;IACA,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,EAAE,OAAO,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAAe,EAAE,WAAmB;IACrE,iEAAiE;IACjE,MAAM,GAAG,GAAG,IAAI;SACb,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,WAAW,CAAC;SAChD,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAE7B,4DAA4D;IAC5D,MAAM,QAAQ,GAAG,CAAC,iBAAiB,EAAE,oBAAoB,EAAE,iBAAiB,CAAC,CAAC;IAC9E,MAAM,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CACzC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CACzC,CAAC;IAEF,gEAAgE;IAChE,MAAM,gBAAgB,GAAG,cAAc;QACrC,CAAC,CAAC,YAAY,GAAG,IAAI,cAAc,QAAQ;QAC3C,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,OAAO,GAAG,GAAG,gBAAgB;;;;;;;;;;;;;;;;;;;CAmBpC,CAAC;IACA,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC,EAAE,OAAO,CAAC,CAAC;AACnE,CAAC"}
@@ -1,3 +0,0 @@
1
- export declare function generateNextConfig(devRoot: string, projectRoot: string): void;
2
- export declare function generateTsConfig(devRoot: string, projectRoot: string): void;
3
- //# sourceMappingURL=next-config.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"next-config.d.ts","sourceRoot":"","sources":["../../../src/utils/dev-generator/next-config.ts"],"names":[],"mappings":"AAGA,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,QA6BtE;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,QAsFpE"}
@@ -1,111 +0,0 @@
1
- import fs from "fs-extra";
2
- import path from "path";
3
- export function generateNextConfig(devRoot, projectRoot) {
4
- // Normalize to POSIX so the generated JS works on Windows.
5
- const rel = path.relative(devRoot, projectRoot).replaceAll(path.sep, "/");
6
- const content = `import { resolve, dirname } from "path";
7
- import { fileURLToPath } from "url";
8
-
9
- const __dirname = dirname(fileURLToPath(import.meta.url));
10
-
11
- /** @type {import('next').NextConfig} */
12
- const nextConfig = {
13
- turbopack: {
14
- root: resolve(__dirname, "${rel}"),
15
- },
16
-
17
- // Dev server origin allowlist. Covers loopback + mDNS (*.local) only -
18
- // a wildcard ('*') was the previous value and accepted any origin.
19
- // This file is regenerated by @cmssy/cli on every \`cmssy dev\` run,
20
- // so editing it here won't stick. If you need LAN access from a phone
21
- // / VM, file an issue asking for a config knob on \`cmssy.config.js\`.
22
- allowedDevOrigins: ['localhost', '127.0.0.1', '[::1]', '*.local'],
23
-
24
- images: {
25
- remotePatterns: [{ protocol: 'https', hostname: '**' }],
26
- },
27
- };
28
-
29
- export default nextConfig;
30
- `;
31
- fs.writeFileSync(path.join(devRoot, "next.config.mjs"), content);
32
- }
33
- export function generateTsConfig(devRoot, projectRoot) {
34
- // Paths must be relative to tsconfig location (.cmssy/dev/).
35
- // Normalize to POSIX so the generated JSON works on Windows.
36
- const rel = path.relative(devRoot, projectRoot).replaceAll(path.sep, "/");
37
- // Read project tsconfig to forward user-defined path aliases and includes
38
- const projectTsConfigPath = path.join(projectRoot, "tsconfig.json");
39
- let userPaths = {};
40
- let userIncludes = [];
41
- if (fs.existsSync(projectTsConfigPath)) {
42
- try {
43
- const projectTsConfig = JSON.parse(fs.readFileSync(projectTsConfigPath, "utf-8"));
44
- const rawPaths = projectTsConfig.compilerOptions?.paths || {};
45
- // Re-map user paths relative to .cmssy/dev/ (project tsconfig uses baseUrl: ".")
46
- for (const [alias, targets] of Object.entries(rawPaths)) {
47
- // Skip cmssy-cli/config — we handle it ourselves
48
- if (alias === "cmssy-cli/config")
49
- continue;
50
- userPaths[alias] = targets.map((t) => `${rel}/${t}`);
51
- }
52
- // Re-map user includes relative to .cmssy/dev/
53
- // Convert catch-all globs (e.g. blocks/**/*) to TS-only for better perf
54
- const rawIncludes = projectTsConfig.include || [];
55
- userIncludes = rawIncludes.flatMap((inc) => {
56
- const remapped = `${rel}/${inc}`;
57
- if (remapped.endsWith("/**/*")) {
58
- const base = remapped.slice(0, -5);
59
- return [`${base}/**/*.ts`, `${base}/**/*.tsx`];
60
- }
61
- return [remapped];
62
- });
63
- }
64
- catch {
65
- // Ignore parse errors — fall back to defaults
66
- }
67
- }
68
- const tsConfig = {
69
- compilerOptions: {
70
- target: "ES2020",
71
- lib: ["dom", "dom.iterable", "esnext"],
72
- allowJs: true,
73
- skipLibCheck: true,
74
- strict: true,
75
- noEmit: true,
76
- esModuleInterop: true,
77
- module: "esnext",
78
- moduleResolution: "bundler",
79
- resolveJsonModule: true,
80
- isolatedModules: true,
81
- jsx: "preserve",
82
- incremental: true,
83
- plugins: [{ name: "next" }],
84
- paths: {
85
- // User-defined aliases from project tsconfig (e.g. @/* for shadcn)
86
- ...userPaths,
87
- // Cmssy built-in aliases (override user if conflicting)
88
- "@blocks/*": [`${rel}/blocks/*`],
89
- "@templates/*": [`${rel}/templates/*`],
90
- "@styles/*": [`${rel}/styles/*`],
91
- "@lib/*": [`${rel}/lib/*`],
92
- "cmssy-cli/config": [`${rel}/node_modules/cmssy-cli/config`],
93
- },
94
- },
95
- include: [
96
- "next-env.d.ts",
97
- "**/*.ts",
98
- "**/*.tsx",
99
- ".next/types/**/*.ts",
100
- `${rel}/blocks/**/*.ts`,
101
- `${rel}/blocks/**/*.tsx`,
102
- `${rel}/templates/**/*.ts`,
103
- `${rel}/templates/**/*.tsx`,
104
- // User-defined includes from project tsconfig (e.g. components/**/*, lib/**/*)
105
- ...userIncludes,
106
- ],
107
- exclude: ["node_modules"],
108
- };
109
- fs.writeFileSync(path.join(devRoot, "tsconfig.json"), JSON.stringify(tsConfig, null, 2) + "\n");
110
- }
111
- //# sourceMappingURL=next-config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"next-config.js","sourceRoot":"","sources":["../../../src/utils/dev-generator/next-config.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { ScannedResource } from "../scanner.js";
2
- export declare function generatePreviewPages(devRoot: string, projectRoot: string, resources: ScannedResource[]): void;
3
- //# sourceMappingURL=preview-pages.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"preview-pages.d.ts","sourceRoot":"","sources":["../../../src/utils/dev-generator/preview-pages.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAQrD,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,eAAe,EAAE,QAS7B"}