@cmssy/cli 0.8.0 → 0.10.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 (69) hide show
  1. package/config.d.ts +2 -2
  2. package/config.js +1 -1
  3. package/dist/cli.js +22 -8
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/codegen.d.ts +7 -0
  6. package/dist/commands/codegen.d.ts.map +1 -0
  7. package/dist/commands/codegen.js +133 -0
  8. package/dist/commands/codegen.js.map +1 -0
  9. package/dist/commands/create.d.ts.map +1 -1
  10. package/dist/commands/create.js +11 -15
  11. package/dist/commands/create.js.map +1 -1
  12. package/dist/commands/dev.d.ts.map +1 -1
  13. package/dist/commands/dev.js +5 -2
  14. package/dist/commands/dev.js.map +1 -1
  15. package/dist/commands/init.d.ts +0 -1
  16. package/dist/commands/init.d.ts.map +1 -1
  17. package/dist/commands/init.js +350 -367
  18. package/dist/commands/init.js.map +1 -1
  19. package/dist/commands/publish.d.ts.map +1 -1
  20. package/dist/commands/publish.js +119 -9
  21. package/dist/commands/publish.js.map +1 -1
  22. package/dist/utils/block-config.d.ts +65 -2
  23. package/dist/utils/block-config.d.ts.map +1 -1
  24. package/dist/utils/block-config.js +17 -5
  25. package/dist/utils/block-config.js.map +1 -1
  26. package/dist/utils/dev-generator/api-routes/blocks.d.ts +3 -0
  27. package/dist/utils/dev-generator/api-routes/blocks.d.ts.map +1 -0
  28. package/dist/utils/dev-generator/api-routes/blocks.js +194 -0
  29. package/dist/utils/dev-generator/api-routes/blocks.js.map +1 -0
  30. package/dist/utils/dev-generator/api-routes/config.d.ts +2 -0
  31. package/dist/utils/dev-generator/api-routes/config.d.ts.map +1 -0
  32. package/dist/utils/dev-generator/api-routes/config.js +107 -0
  33. package/dist/utils/dev-generator/api-routes/config.js.map +1 -0
  34. package/dist/utils/dev-generator/api-routes/preview.d.ts +2 -0
  35. package/dist/utils/dev-generator/api-routes/preview.d.ts.map +1 -0
  36. package/dist/utils/dev-generator/api-routes/preview.js +50 -0
  37. package/dist/utils/dev-generator/api-routes/preview.js.map +1 -0
  38. package/dist/utils/dev-generator/api-routes/workspaces.d.ts +2 -0
  39. package/dist/utils/dev-generator/api-routes/workspaces.d.ts.map +1 -0
  40. package/dist/utils/dev-generator/api-routes/workspaces.js +128 -0
  41. package/dist/utils/dev-generator/api-routes/workspaces.js.map +1 -0
  42. package/dist/utils/dev-generator/helpers.d.ts +23 -0
  43. package/dist/utils/dev-generator/helpers.d.ts.map +1 -0
  44. package/dist/utils/dev-generator/helpers.js +112 -0
  45. package/dist/utils/dev-generator/helpers.js.map +1 -0
  46. package/dist/utils/dev-generator/home-page.d.ts +2 -0
  47. package/dist/utils/dev-generator/home-page.d.ts.map +1 -0
  48. package/dist/utils/dev-generator/home-page.js +643 -0
  49. package/dist/utils/dev-generator/home-page.js.map +1 -0
  50. package/dist/utils/dev-generator/index.d.ts +12 -0
  51. package/dist/utils/dev-generator/index.d.ts.map +1 -0
  52. package/dist/utils/dev-generator/index.js +53 -0
  53. package/dist/utils/dev-generator/index.js.map +1 -0
  54. package/dist/utils/dev-generator/layout.d.ts +3 -0
  55. package/dist/utils/dev-generator/layout.d.ts.map +1 -0
  56. package/dist/utils/dev-generator/layout.js +59 -0
  57. package/dist/utils/dev-generator/layout.js.map +1 -0
  58. package/dist/utils/dev-generator/next-config.d.ts +3 -0
  59. package/dist/utils/dev-generator/next-config.d.ts.map +1 -0
  60. package/dist/utils/dev-generator/next-config.js +104 -0
  61. package/dist/utils/dev-generator/next-config.js.map +1 -0
  62. package/dist/utils/dev-generator/preview-pages.d.ts +3 -0
  63. package/dist/utils/dev-generator/preview-pages.d.ts.map +1 -0
  64. package/dist/utils/dev-generator/preview-pages.js +827 -0
  65. package/dist/utils/dev-generator/preview-pages.js.map +1 -0
  66. package/dist/utils/graphql.d.ts.map +1 -1
  67. package/dist/utils/graphql.js +2 -0
  68. package/dist/utils/graphql.js.map +1 -1
  69. package/package.json +2 -2
@@ -0,0 +1,53 @@
1
+ import fs from "fs-extra";
2
+ import path from "path";
3
+ import { generateNextConfig, generateTsConfig } from "./next-config.js";
4
+ import { generateRootLayout, generateGlobalsCss } from "./layout.js";
5
+ import { generateHomePage } from "./home-page.js";
6
+ import { generateBlocksApiRoute, generateBlockConfigApiRoute, } from "./api-routes/blocks.js";
7
+ import { generatePreviewApiRoute } from "./api-routes/preview.js";
8
+ import { generateWorkspacesApiRoute } from "./api-routes/workspaces.js";
9
+ import { generateConfigApiRoute } from "./api-routes/config.js";
10
+ import { generatePreviewPages } from "./preview-pages.js";
11
+ const DEV_DIR = ".cmssy/dev";
12
+ /**
13
+ * Generate the .cmssy/dev/ Next.js app structure for cmssy dev.
14
+ * This creates a minimal Next.js app that imports blocks directly,
15
+ * enabling "use client" boundaries, next/image, and SSR in dev preview.
16
+ */
17
+ export function generateDevApp(projectRoot, resources) {
18
+ const devRoot = path.join(projectRoot, DEV_DIR);
19
+ // Clean and recreate
20
+ fs.removeSync(devRoot);
21
+ fs.mkdirSync(path.join(devRoot, "app/preview"), { recursive: true });
22
+ fs.mkdirSync(path.join(devRoot, "app/api/blocks"), { recursive: true });
23
+ fs.mkdirSync(path.join(devRoot, "app/api/preview"), { recursive: true });
24
+ fs.mkdirSync(path.join(devRoot, "app/api/workspaces"), { recursive: true });
25
+ fs.mkdirSync(path.join(devRoot, "app/api/config"), { recursive: true });
26
+ // Generate all files
27
+ generateNextConfig(devRoot, projectRoot);
28
+ generateTsConfig(devRoot, projectRoot);
29
+ generateRootLayout(devRoot);
30
+ generateGlobalsCss(devRoot, projectRoot);
31
+ generateHomePage(devRoot);
32
+ generateBlocksApiRoute(devRoot);
33
+ generateBlockConfigApiRoute(devRoot);
34
+ generatePreviewApiRoute(devRoot);
35
+ generateWorkspacesApiRoute(devRoot);
36
+ generateConfigApiRoute(devRoot);
37
+ generatePreviewPages(devRoot, projectRoot, resources);
38
+ return devRoot;
39
+ }
40
+ /**
41
+ * Regenerate only the preview pages (called when new blocks are detected).
42
+ */
43
+ export function regeneratePreviewPages(projectRoot, resources) {
44
+ const devRoot = path.join(projectRoot, DEV_DIR);
45
+ const previewDir = path.join(devRoot, "app/preview");
46
+ // Remove old preview pages
47
+ if (fs.existsSync(previewDir)) {
48
+ fs.removeSync(previewDir);
49
+ }
50
+ fs.mkdirSync(previewDir, { recursive: true });
51
+ generatePreviewPages(devRoot, projectRoot, resources);
52
+ }
53
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/dev-generator/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare function generateRootLayout(devRoot: string): void;
2
+ export declare function generateGlobalsCss(devRoot: string, projectRoot: string): void;
3
+ //# sourceMappingURL=layout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../../src/utils/dev-generator/layout.ts"],"names":[],"mappings":"AAGA,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,QAwBjD;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,QAmCtE"}
@@ -0,0 +1,59 @@
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 "./globals.css";
6
+
7
+ export const metadata: Metadata = {
8
+ title: "Cmssy Dev Server",
9
+ icons: {
10
+ 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",
11
+ },
12
+ };
13
+
14
+ export default function RootLayout({
15
+ children,
16
+ }: {
17
+ children: React.ReactNode;
18
+ }) {
19
+ return (
20
+ <html lang="en">
21
+ <body>{children}</body>
22
+ </html>
23
+ );
24
+ }
25
+ `;
26
+ fs.writeFileSync(path.join(devRoot, "app/layout.tsx"), content);
27
+ }
28
+ export function generateGlobalsCss(devRoot, projectRoot) {
29
+ const rel = path.relative(path.join(devRoot, "app"), projectRoot);
30
+ // Check for project CSS files that contain Tailwind / theme
31
+ const cssFiles = ["styles/main.css", "styles/globals.css", "app/globals.css"];
32
+ const projectCssFile = cssFiles.find((f) => fs.existsSync(path.join(projectRoot, f)));
33
+ // Import the project's main CSS (Tailwind + theme) if it exists
34
+ const projectCssImport = projectCssFile
35
+ ? `@import "${rel}/${projectCssFile}";\n\n`
36
+ : "";
37
+ const content = `${projectCssImport}*,
38
+ *::before,
39
+ *::after {
40
+ box-sizing: border-box;
41
+ }
42
+
43
+ html,
44
+ body {
45
+ height: 100%;
46
+ margin: 0;
47
+ padding: 0;
48
+ }
49
+
50
+ body {
51
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
52
+ background: #f5f5f5;
53
+ line-height: 1.5;
54
+ -webkit-font-smoothing: antialiased;
55
+ }
56
+ `;
57
+ fs.writeFileSync(path.join(devRoot, "app/globals.css"), content);
58
+ }
59
+ //# sourceMappingURL=layout.js.map
@@ -0,0 +1 @@
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;;;;;;;;;;;;;;;;;;;;;CAqBjB,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,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,WAAW,CAAC,CAAC;IAElE,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"}
@@ -0,0 +1,3 @@
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
@@ -0,0 +1 @@
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,QAuBtE;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,QAqFpE"}
@@ -0,0 +1,104 @@
1
+ import fs from "fs-extra";
2
+ import path from "path";
3
+ export function generateNextConfig(devRoot, projectRoot) {
4
+ const rel = path.relative(devRoot, projectRoot);
5
+ const content = `import { resolve, dirname } from "path";
6
+ import { fileURLToPath } from "url";
7
+
8
+ const __dirname = dirname(fileURLToPath(import.meta.url));
9
+
10
+ /** @type {import('next').NextConfig} */
11
+ const nextConfig = {
12
+ turbopack: {
13
+ root: resolve(__dirname, "${rel}"),
14
+ },
15
+
16
+ allowedDevOrigins: ['*'],
17
+
18
+ images: {
19
+ remotePatterns: [{ protocol: 'https', hostname: '**' }],
20
+ },
21
+ };
22
+
23
+ export default nextConfig;
24
+ `;
25
+ fs.writeFileSync(path.join(devRoot, "next.config.mjs"), content);
26
+ }
27
+ export function generateTsConfig(devRoot, projectRoot) {
28
+ // Paths must be relative to tsconfig location (.cmssy/dev/)
29
+ const rel = path.relative(devRoot, projectRoot);
30
+ // Read project tsconfig to forward user-defined path aliases and includes
31
+ const projectTsConfigPath = path.join(projectRoot, "tsconfig.json");
32
+ let userPaths = {};
33
+ let userIncludes = [];
34
+ if (fs.existsSync(projectTsConfigPath)) {
35
+ try {
36
+ const projectTsConfig = JSON.parse(fs.readFileSync(projectTsConfigPath, "utf-8"));
37
+ const rawPaths = projectTsConfig.compilerOptions?.paths || {};
38
+ // Re-map user paths relative to .cmssy/dev/ (project tsconfig uses baseUrl: ".")
39
+ for (const [alias, targets] of Object.entries(rawPaths)) {
40
+ // Skip cmssy-cli/config — we handle it ourselves
41
+ if (alias === "cmssy-cli/config")
42
+ continue;
43
+ userPaths[alias] = targets.map((t) => `${rel}/${t}`);
44
+ }
45
+ // Re-map user includes relative to .cmssy/dev/
46
+ // Convert catch-all globs (e.g. blocks/**/*) to TS-only for better perf
47
+ const rawIncludes = projectTsConfig.include || [];
48
+ userIncludes = rawIncludes.flatMap((inc) => {
49
+ const remapped = `${rel}/${inc}`;
50
+ if (remapped.endsWith("/**/*")) {
51
+ const base = remapped.slice(0, -5);
52
+ return [`${base}/**/*.ts`, `${base}/**/*.tsx`];
53
+ }
54
+ return [remapped];
55
+ });
56
+ }
57
+ catch {
58
+ // Ignore parse errors — fall back to defaults
59
+ }
60
+ }
61
+ const tsConfig = {
62
+ compilerOptions: {
63
+ target: "ES2020",
64
+ lib: ["dom", "dom.iterable", "esnext"],
65
+ allowJs: true,
66
+ skipLibCheck: true,
67
+ strict: true,
68
+ noEmit: true,
69
+ esModuleInterop: true,
70
+ module: "esnext",
71
+ moduleResolution: "bundler",
72
+ resolveJsonModule: true,
73
+ isolatedModules: true,
74
+ jsx: "preserve",
75
+ incremental: true,
76
+ plugins: [{ name: "next" }],
77
+ paths: {
78
+ // User-defined aliases from project tsconfig (e.g. @/* for shadcn)
79
+ ...userPaths,
80
+ // Cmssy built-in aliases (override user if conflicting)
81
+ "@blocks/*": [`${rel}/blocks/*`],
82
+ "@templates/*": [`${rel}/templates/*`],
83
+ "@styles/*": [`${rel}/styles/*`],
84
+ "@lib/*": [`${rel}/lib/*`],
85
+ "cmssy-cli/config": [`${rel}/node_modules/cmssy-cli/config`],
86
+ },
87
+ },
88
+ include: [
89
+ "next-env.d.ts",
90
+ "**/*.ts",
91
+ "**/*.tsx",
92
+ ".next/types/**/*.ts",
93
+ `${rel}/blocks/**/*.ts`,
94
+ `${rel}/blocks/**/*.tsx`,
95
+ `${rel}/templates/**/*.ts`,
96
+ `${rel}/templates/**/*.tsx`,
97
+ // User-defined includes from project tsconfig (e.g. components/**/*, lib/**/*)
98
+ ...userIncludes,
99
+ ],
100
+ exclude: ["node_modules"],
101
+ };
102
+ fs.writeFileSync(path.join(devRoot, "tsconfig.json"), JSON.stringify(tsConfig, null, 2) + "\n");
103
+ }
104
+ //# sourceMappingURL=next-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"next-config.js","sourceRoot":"","sources":["../../../src/utils/dev-generator/next-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
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
@@ -0,0 +1 @@
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"}