@cmssy/cli 0.10.1 → 0.11.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 (81) hide show
  1. package/dist/cli.js +84 -32
  2. package/dist/cli.js.map +1 -1
  3. package/dist/commands/add-source.d.ts +6 -0
  4. package/dist/commands/add-source.d.ts.map +1 -1
  5. package/dist/commands/add-source.js +37 -2
  6. package/dist/commands/add-source.js.map +1 -1
  7. package/dist/commands/build.d.ts.map +1 -1
  8. package/dist/commands/build.js +11 -0
  9. package/dist/commands/build.js.map +1 -1
  10. package/dist/commands/configure.d.ts.map +1 -1
  11. package/dist/commands/configure.js +0 -3
  12. package/dist/commands/configure.js.map +1 -1
  13. package/dist/commands/dev.d.ts.map +1 -1
  14. package/dist/commands/dev.js +20 -0
  15. package/dist/commands/dev.js.map +1 -1
  16. package/dist/commands/doctor.d.ts +2 -0
  17. package/dist/commands/doctor.d.ts.map +1 -0
  18. package/dist/commands/doctor.js +223 -0
  19. package/dist/commands/doctor.js.map +1 -0
  20. package/dist/commands/init.d.ts.map +1 -1
  21. package/dist/commands/init.js +5 -12
  22. package/dist/commands/init.js.map +1 -1
  23. package/dist/commands/link.d.ts +8 -0
  24. package/dist/commands/link.d.ts.map +1 -0
  25. package/dist/commands/link.js +121 -0
  26. package/dist/commands/link.js.map +1 -0
  27. package/dist/commands/package.d.ts +7 -0
  28. package/dist/commands/package.d.ts.map +1 -1
  29. package/dist/commands/package.js +2 -2
  30. package/dist/commands/package.js.map +1 -1
  31. package/dist/commands/publish.d.ts +3 -0
  32. package/dist/commands/publish.d.ts.map +1 -1
  33. package/dist/commands/publish.js +192 -4
  34. package/dist/commands/publish.js.map +1 -1
  35. package/dist/commands/sync.js +1 -1
  36. package/dist/commands/sync.js.map +1 -1
  37. package/dist/commands/test.d.ts +8 -0
  38. package/dist/commands/test.d.ts.map +1 -0
  39. package/dist/commands/test.js +60 -0
  40. package/dist/commands/test.js.map +1 -0
  41. package/dist/commands/upload.d.ts +4 -0
  42. package/dist/commands/upload.d.ts.map +1 -1
  43. package/dist/commands/upload.js +6 -4
  44. package/dist/commands/upload.js.map +1 -1
  45. package/dist/commands/workspaces.d.ts.map +1 -1
  46. package/dist/commands/workspaces.js +1 -1
  47. package/dist/commands/workspaces.js.map +1 -1
  48. package/dist/utils/block-config.d.ts +5 -1
  49. package/dist/utils/block-config.d.ts.map +1 -1
  50. package/dist/utils/block-config.js.map +1 -1
  51. package/dist/utils/config.js +17 -12
  52. package/dist/utils/config.js.map +1 -1
  53. package/dist/utils/dependency-check.d.ts +21 -0
  54. package/dist/utils/dependency-check.d.ts.map +1 -0
  55. package/dist/utils/dependency-check.js +56 -0
  56. package/dist/utils/dependency-check.js.map +1 -0
  57. package/dist/utils/dev-generator/index.d.ts +1 -2
  58. package/dist/utils/dev-generator/index.d.ts.map +1 -1
  59. package/dist/utils/dev-generator/index.js +53 -21
  60. package/dist/utils/dev-generator/index.js.map +1 -1
  61. package/dist/utils/dev-generator/preview-pages.js +8 -2
  62. package/dist/utils/dev-generator/preview-pages.js.map +1 -1
  63. package/dist/utils/graphql.d.ts +1 -1
  64. package/dist/utils/graphql.d.ts.map +1 -1
  65. package/dist/utils/graphql.js +7 -1
  66. package/dist/utils/graphql.js.map +1 -1
  67. package/dist/utils/schema-diff.d.ts +22 -0
  68. package/dist/utils/schema-diff.d.ts.map +1 -0
  69. package/dist/utils/schema-diff.js +107 -0
  70. package/dist/utils/schema-diff.js.map +1 -0
  71. package/package.json +6 -2
  72. package/src/dev-app/app/api/blocks/[name]/config/route.ts +140 -0
  73. package/src/dev-app/app/api/blocks/route.ts +61 -0
  74. package/src/dev-app/app/api/config/route.ts +98 -0
  75. package/src/dev-app/app/api/context/route.ts +126 -0
  76. package/src/dev-app/app/api/preview/[name]/route.ts +137 -0
  77. package/src/dev-app/app/api/workspaces/route.ts +124 -0
  78. package/src/dev-app/app/layout.tsx +18 -0
  79. package/src/dev-app/app/page.tsx +1788 -0
  80. package/test.d.ts +1 -0
  81. package/test.js +2 -0
@@ -0,0 +1,124 @@
1
+ import { NextResponse } from "next/server";
2
+ import fs from "fs";
3
+ import path from "path";
4
+
5
+ const projectRoot = process.env.CMSSY_PROJECT_ROOT || process.cwd();
6
+
7
+ function loadEnvConfig(): {
8
+ apiUrl: string;
9
+ apiToken: string | null;
10
+ workspaceId: string | null;
11
+ } {
12
+ const envPath = path.join(projectRoot, ".env");
13
+ const config: any = {
14
+ apiUrl: "https://api.cmssy.io/graphql",
15
+ apiToken: null,
16
+ workspaceId: null,
17
+ };
18
+ if (!fs.existsSync(envPath)) return config;
19
+ const content = fs.readFileSync(envPath, "utf-8");
20
+ for (const line of content.split("\n")) {
21
+ const match = line.match(/^(CMSSY_\w+)=(.*)$/);
22
+ if (!match) continue;
23
+ const [, key, val] = match;
24
+ if (key === "CMSSY_API_URL") config.apiUrl = val.trim();
25
+ if (key === "CMSSY_API_TOKEN") config.apiToken = val.trim() || null;
26
+ if (key === "CMSSY_WORKSPACE_ID") config.workspaceId = val.trim() || null;
27
+ }
28
+ return config;
29
+ }
30
+
31
+ const MY_WORKSPACES_QUERY = `
32
+ query MyWorkspaces {
33
+ myWorkspaces {
34
+ id
35
+ slug
36
+ name
37
+ myRole { name slug }
38
+ }
39
+ }
40
+ `;
41
+
42
+ const WORKSPACE_BLOCKS_QUERY = `
43
+ query GetWorkspaceBlocks {
44
+ workspaceBlocks {
45
+ id
46
+ blockType
47
+ name
48
+ version
49
+ }
50
+ }
51
+ `;
52
+
53
+ export async function GET() {
54
+ const config = loadEnvConfig();
55
+
56
+ if (!config.apiToken) {
57
+ return NextResponse.json({ connected: false, reason: "no_token" });
58
+ }
59
+
60
+ try {
61
+ const headers = {
62
+ "Content-Type": "application/json",
63
+ Authorization: `Bearer ${config.apiToken}`,
64
+ };
65
+
66
+ const wsRes = await fetch(config.apiUrl, {
67
+ method: "POST",
68
+ headers,
69
+ body: JSON.stringify({ query: MY_WORKSPACES_QUERY }),
70
+ });
71
+ const wsData = await wsRes.json();
72
+
73
+ if (wsData.errors?.length) {
74
+ return NextResponse.json({
75
+ connected: false,
76
+ reason: "auth_error",
77
+ error: wsData.errors[0].message,
78
+ });
79
+ }
80
+
81
+ const workspaces = wsData.data?.myWorkspaces || [];
82
+
83
+ let targetWorkspace = null;
84
+ if (config.workspaceId) {
85
+ targetWorkspace = workspaces.find(
86
+ (w: any) => w.id === config.workspaceId,
87
+ );
88
+ }
89
+ if (!targetWorkspace && workspaces.length > 0) {
90
+ targetWorkspace = workspaces[0];
91
+ }
92
+
93
+ let publishedBlocks: any[] = [];
94
+ if (targetWorkspace) {
95
+ const blocksRes = await fetch(config.apiUrl, {
96
+ method: "POST",
97
+ headers: {
98
+ ...headers,
99
+ "x-workspace-id": targetWorkspace.id,
100
+ },
101
+ body: JSON.stringify({ query: WORKSPACE_BLOCKS_QUERY }),
102
+ });
103
+ const blocksData = await blocksRes.json();
104
+ publishedBlocks = blocksData.data?.workspaceBlocks || [];
105
+ }
106
+
107
+ return NextResponse.json({
108
+ connected: true,
109
+ workspace: targetWorkspace,
110
+ workspaces,
111
+ publishedBlocks: publishedBlocks.map((b: any) => ({
112
+ blockType: b.blockType,
113
+ name: b.name,
114
+ version: b.version || "1.0.0",
115
+ })),
116
+ });
117
+ } catch (error: any) {
118
+ return NextResponse.json({
119
+ connected: false,
120
+ reason: "network_error",
121
+ error: error.message,
122
+ });
123
+ }
124
+ }
@@ -0,0 +1,18 @@
1
+ import type { Metadata } from "next";
2
+ import type { ReactNode } from "react";
3
+ import "./globals.css";
4
+
5
+ export const metadata: Metadata = {
6
+ title: "Cmssy Dev Server",
7
+ icons: {
8
+ 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",
9
+ },
10
+ };
11
+
12
+ export default function RootLayout({ children }: { children: ReactNode }) {
13
+ return (
14
+ <html lang="en">
15
+ <body>{children}</body>
16
+ </html>
17
+ );
18
+ }