@cmssy/cli 0.22.4 → 9.1.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.
- package/dist/index.js +435 -0
- package/package.json +25 -86
- package/LICENSE +0 -21
- package/README.md +0 -692
- package/config.d.ts +0 -3
- package/config.js +0 -4
- package/dist/cli.d.ts +0 -3
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js +0 -340
- package/dist/cli.js.map +0 -1
- package/dist/commands/add-source.d.ts +0 -13
- package/dist/commands/add-source.d.ts.map +0 -1
- package/dist/commands/add-source.js +0 -273
- package/dist/commands/add-source.js.map +0 -1
- package/dist/commands/build.d.ts +0 -7
- package/dist/commands/build.d.ts.map +0 -1
- package/dist/commands/build.js +0 -127
- package/dist/commands/build.js.map +0 -1
- package/dist/commands/codegen.d.ts +0 -7
- package/dist/commands/codegen.d.ts.map +0 -1
- package/dist/commands/codegen.js +0 -150
- package/dist/commands/codegen.js.map +0 -1
- package/dist/commands/configure.d.ts +0 -6
- package/dist/commands/configure.d.ts.map +0 -1
- package/dist/commands/configure.js +0 -39
- package/dist/commands/configure.js.map +0 -1
- package/dist/commands/create.d.ts +0 -18
- package/dist/commands/create.d.ts.map +0 -1
- package/dist/commands/create.js +0 -403
- package/dist/commands/create.js.map +0 -1
- package/dist/commands/dev.d.ts +0 -6
- package/dist/commands/dev.d.ts.map +0 -1
- package/dist/commands/dev.js +0 -144
- package/dist/commands/dev.js.map +0 -1
- package/dist/commands/doctor.d.ts +0 -2
- package/dist/commands/doctor.d.ts.map +0 -1
- package/dist/commands/doctor.js +0 -230
- package/dist/commands/doctor.js.map +0 -1
- package/dist/commands/init.d.ts +0 -6
- package/dist/commands/init.d.ts.map +0 -1
- package/dist/commands/init.js +0 -414
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/lib.d.ts +0 -17
- package/dist/commands/lib.d.ts.map +0 -1
- package/dist/commands/lib.js +0 -132
- package/dist/commands/lib.js.map +0 -1
- package/dist/commands/link.d.ts +0 -8
- package/dist/commands/link.d.ts.map +0 -1
- package/dist/commands/link.js +0 -116
- package/dist/commands/link.js.map +0 -1
- package/dist/commands/migrate.d.ts +0 -2
- package/dist/commands/migrate.d.ts.map +0 -1
- package/dist/commands/migrate.js +0 -231
- package/dist/commands/migrate.js.map +0 -1
- package/dist/commands/package.d.ts +0 -14
- package/dist/commands/package.d.ts.map +0 -1
- package/dist/commands/package.js +0 -137
- package/dist/commands/package.js.map +0 -1
- package/dist/commands/publish-block-buildtime.d.ts +0 -8
- package/dist/commands/publish-block-buildtime.d.ts.map +0 -1
- package/dist/commands/publish-block-buildtime.js +0 -290
- package/dist/commands/publish-block-buildtime.js.map +0 -1
- package/dist/commands/publish-template.d.ts +0 -22
- package/dist/commands/publish-template.d.ts.map +0 -1
- package/dist/commands/publish-template.js +0 -345
- package/dist/commands/publish-template.js.map +0 -1
- package/dist/commands/publish.d.ts +0 -15
- package/dist/commands/publish.d.ts.map +0 -1
- package/dist/commands/publish.js +0 -1003
- package/dist/commands/publish.js.map +0 -1
- package/dist/commands/skills.d.ts +0 -11
- package/dist/commands/skills.d.ts.map +0 -1
- package/dist/commands/skills.js +0 -178
- package/dist/commands/skills.js.map +0 -1
- package/dist/commands/sync.d.ts +0 -6
- package/dist/commands/sync.d.ts.map +0 -1
- package/dist/commands/sync.js +0 -208
- package/dist/commands/sync.js.map +0 -1
- package/dist/commands/test.d.ts +0 -8
- package/dist/commands/test.d.ts.map +0 -1
- package/dist/commands/test.js +0 -60
- package/dist/commands/test.js.map +0 -1
- package/dist/commands/upload.d.ts +0 -11
- package/dist/commands/upload.d.ts.map +0 -1
- package/dist/commands/upload.js +0 -128
- package/dist/commands/upload.js.map +0 -1
- package/dist/commands/workspaces.d.ts +0 -2
- package/dist/commands/workspaces.d.ts.map +0 -1
- package/dist/commands/workspaces.js +0 -62
- package/dist/commands/workspaces.js.map +0 -1
- package/dist/dev-ui/app.js +0 -1284
- package/dist/dev-ui/index.html +0 -1511
- package/dist/dev-ui-react/App.tsx +0 -164
- package/dist/dev-ui-react/__tests__/previewData.test.ts +0 -193
- package/dist/dev-ui-react/components/BlocksList.tsx +0 -232
- package/dist/dev-ui-react/components/Editor.tsx +0 -469
- package/dist/dev-ui-react/components/Preview.tsx +0 -146
- package/dist/dev-ui-react/hooks/useBlocks.ts +0 -80
- package/dist/dev-ui-react/index.html +0 -13
- package/dist/dev-ui-react/main.tsx +0 -8
- package/dist/dev-ui-react/styles.css +0 -856
- package/dist/dev-ui-react/types.ts +0 -45
- package/dist/skills/claude/cmssy-block.md +0 -454
- package/dist/skills/claude/cmssy-mcp-content.md +0 -235
- package/dist/test-helpers/index.d.ts +0 -23
- package/dist/test-helpers/index.d.ts.map +0 -1
- package/dist/test-helpers/index.js +0 -50
- package/dist/test-helpers/index.js.map +0 -1
- package/dist/types/block-config.d.ts +0 -6
- package/dist/types/block-config.d.ts.map +0 -1
- package/dist/types/block-config.js +0 -12
- package/dist/types/block-config.js.map +0 -1
- package/dist/types/publish-job.d.ts +0 -61
- package/dist/types/publish-job.d.ts.map +0 -1
- package/dist/types/publish-job.js +0 -13
- package/dist/types/publish-job.js.map +0 -1
- package/dist/utils/api-error.d.ts +0 -10
- package/dist/utils/api-error.d.ts.map +0 -1
- package/dist/utils/api-error.js +0 -55
- package/dist/utils/api-error.js.map +0 -1
- package/dist/utils/block-config.d.ts +0 -87
- package/dist/utils/block-config.d.ts.map +0 -1
- package/dist/utils/block-config.js +0 -214
- package/dist/utils/block-config.js.map +0 -1
- package/dist/utils/blocks-meta-cache.d.ts +0 -28
- package/dist/utils/blocks-meta-cache.d.ts.map +0 -1
- package/dist/utils/blocks-meta-cache.js +0 -72
- package/dist/utils/blocks-meta-cache.js.map +0 -1
- package/dist/utils/builder.d.ts +0 -34
- package/dist/utils/builder.d.ts.map +0 -1
- package/dist/utils/builder.js +0 -140
- package/dist/utils/builder.js.map +0 -1
- package/dist/utils/cmssy-config.d.ts +0 -16
- package/dist/utils/cmssy-config.d.ts.map +0 -1
- package/dist/utils/cmssy-config.js +0 -19
- package/dist/utils/cmssy-config.js.map +0 -1
- package/dist/utils/config.d.ts +0 -9
- package/dist/utils/config.d.ts.map +0 -1
- package/dist/utils/config.js +0 -51
- package/dist/utils/config.js.map +0 -1
- package/dist/utils/dependency-check.d.ts +0 -21
- package/dist/utils/dependency-check.d.ts.map +0 -1
- package/dist/utils/dependency-check.js +0 -56
- package/dist/utils/dependency-check.js.map +0 -1
- package/dist/utils/dev-generator/api-routes/blocks.d.ts +0 -3
- package/dist/utils/dev-generator/api-routes/blocks.d.ts.map +0 -1
- package/dist/utils/dev-generator/api-routes/blocks.js +0 -194
- package/dist/utils/dev-generator/api-routes/blocks.js.map +0 -1
- package/dist/utils/dev-generator/api-routes/config.d.ts +0 -2
- package/dist/utils/dev-generator/api-routes/config.d.ts.map +0 -1
- package/dist/utils/dev-generator/api-routes/config.js +0 -107
- package/dist/utils/dev-generator/api-routes/config.js.map +0 -1
- package/dist/utils/dev-generator/api-routes/preview.d.ts +0 -2
- package/dist/utils/dev-generator/api-routes/preview.d.ts.map +0 -1
- package/dist/utils/dev-generator/api-routes/preview.js +0 -50
- package/dist/utils/dev-generator/api-routes/preview.js.map +0 -1
- package/dist/utils/dev-generator/api-routes/workspaces.d.ts +0 -2
- package/dist/utils/dev-generator/api-routes/workspaces.d.ts.map +0 -1
- package/dist/utils/dev-generator/api-routes/workspaces.js +0 -128
- package/dist/utils/dev-generator/api-routes/workspaces.js.map +0 -1
- package/dist/utils/dev-generator/helpers.d.ts +0 -23
- package/dist/utils/dev-generator/helpers.d.ts.map +0 -1
- package/dist/utils/dev-generator/helpers.js +0 -128
- package/dist/utils/dev-generator/helpers.js.map +0 -1
- package/dist/utils/dev-generator/home-page.d.ts +0 -2
- package/dist/utils/dev-generator/home-page.d.ts.map +0 -1
- package/dist/utils/dev-generator/home-page.js +0 -643
- package/dist/utils/dev-generator/home-page.js.map +0 -1
- package/dist/utils/dev-generator/index.d.ts +0 -11
- package/dist/utils/dev-generator/index.d.ts.map +0 -1
- package/dist/utils/dev-generator/index.js +0 -85
- package/dist/utils/dev-generator/index.js.map +0 -1
- package/dist/utils/dev-generator/layout.d.ts +0 -3
- package/dist/utils/dev-generator/layout.d.ts.map +0 -1
- package/dist/utils/dev-generator/layout.js +0 -63
- package/dist/utils/dev-generator/layout.js.map +0 -1
- package/dist/utils/dev-generator/next-config.d.ts +0 -3
- package/dist/utils/dev-generator/next-config.d.ts.map +0 -1
- package/dist/utils/dev-generator/next-config.js +0 -111
- package/dist/utils/dev-generator/next-config.js.map +0 -1
- package/dist/utils/dev-generator/preview-pages.d.ts +0 -3
- package/dist/utils/dev-generator/preview-pages.d.ts.map +0 -1
- package/dist/utils/dev-generator/preview-pages.js +0 -833
- package/dist/utils/dev-generator/preview-pages.js.map +0 -1
- package/dist/utils/dev-generator.d.ts +0 -12
- package/dist/utils/dev-generator.d.ts.map +0 -1
- package/dist/utils/dev-generator.js +0 -1752
- package/dist/utils/dev-generator.js.map +0 -1
- package/dist/utils/field-schema.d.ts +0 -13
- package/dist/utils/field-schema.d.ts.map +0 -1
- package/dist/utils/field-schema.js +0 -182
- package/dist/utils/field-schema.js.map +0 -1
- package/dist/utils/graphql.d.ts +0 -39
- package/dist/utils/graphql.d.ts.map +0 -1
- package/dist/utils/graphql.js +0 -138
- package/dist/utils/graphql.js.map +0 -1
- package/dist/utils/lib-manifest.d.ts +0 -7
- package/dist/utils/lib-manifest.d.ts.map +0 -1
- package/dist/utils/lib-manifest.js +0 -59
- package/dist/utils/lib-manifest.js.map +0 -1
- package/dist/utils/publish-helpers.d.ts +0 -43
- package/dist/utils/publish-helpers.d.ts.map +0 -1
- package/dist/utils/publish-helpers.js +0 -215
- package/dist/utils/publish-helpers.js.map +0 -1
- package/dist/utils/publish-helpers.test.d.ts +0 -2
- package/dist/utils/publish-helpers.test.d.ts.map +0 -1
- package/dist/utils/publish-helpers.test.js +0 -24
- package/dist/utils/publish-helpers.test.js.map +0 -1
- package/dist/utils/resolve-workspace.d.ts +0 -6
- package/dist/utils/resolve-workspace.d.ts.map +0 -1
- package/dist/utils/resolve-workspace.js +0 -32
- package/dist/utils/resolve-workspace.js.map +0 -1
- package/dist/utils/scanner.d.ts +0 -42
- package/dist/utils/scanner.d.ts.map +0 -1
- package/dist/utils/scanner.js +0 -156
- package/dist/utils/scanner.js.map +0 -1
- package/dist/utils/schema-diff.d.ts +0 -22
- package/dist/utils/schema-diff.d.ts.map +0 -1
- package/dist/utils/schema-diff.js +0 -107
- package/dist/utils/schema-diff.js.map +0 -1
- package/dist/utils/source-collector.d.ts +0 -19
- package/dist/utils/source-collector.d.ts.map +0 -1
- package/dist/utils/source-collector.js +0 -565
- package/dist/utils/source-collector.js.map +0 -1
- package/dist/utils/theme-builder.d.ts +0 -12
- package/dist/utils/theme-builder.d.ts.map +0 -1
- package/dist/utils/theme-builder.js +0 -117
- package/dist/utils/theme-builder.js.map +0 -1
- package/dist/utils/type-generator.d.ts +0 -9
- package/dist/utils/type-generator.d.ts.map +0 -1
- package/dist/utils/type-generator.js +0 -86
- package/dist/utils/type-generator.js.map +0 -1
- package/dist/utils/version.d.ts +0 -10
- package/dist/utils/version.d.ts.map +0 -1
- package/dist/utils/version.js +0 -30
- package/dist/utils/version.js.map +0 -1
- package/dist/utils/versions.d.ts.map +0 -1
- package/dist/utils/versions.js.map +0 -1
- package/src/dev-app/app/api/blocks/[name]/config/route.ts +0 -140
- package/src/dev-app/app/api/blocks/route.ts +0 -61
- package/src/dev-app/app/api/config/route.ts +0 -98
- package/src/dev-app/app/api/context/route.ts +0 -126
- package/src/dev-app/app/api/preview/[name]/route.ts +0 -137
- package/src/dev-app/app/api/workspaces/route.ts +0 -124
- package/src/dev-app/app/layout.tsx +0 -18
- package/src/dev-app/app/page.tsx +0 -1785
- package/test.d.ts +0 -1
- package/test.js +0 -2
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
interface BlockDep {
|
|
2
|
-
blockName: string;
|
|
3
|
-
packageName: string;
|
|
4
|
-
versionRange: string;
|
|
5
|
-
}
|
|
6
|
-
/**
|
|
7
|
-
* Check if block dependencies are installed in the project.
|
|
8
|
-
* Returns list of missing dependencies.
|
|
9
|
-
*/
|
|
10
|
-
export declare function checkBlockDependencies(blocks: Array<{
|
|
11
|
-
name: string;
|
|
12
|
-
config: {
|
|
13
|
-
dependencies?: Record<string, string>;
|
|
14
|
-
} | null;
|
|
15
|
-
}>, projectRoot: string): BlockDep[];
|
|
16
|
-
/**
|
|
17
|
-
* Print missing dependency warnings to console.
|
|
18
|
-
*/
|
|
19
|
-
export declare function printMissingDeps(missing: BlockDep[]): void;
|
|
20
|
-
export {};
|
|
21
|
-
//# sourceMappingURL=dependency-check.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dependency-check.d.ts","sourceRoot":"","sources":["../../src/utils/dependency-check.ts"],"names":[],"mappings":"AAIA,UAAU,QAAQ;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,KAAK,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,GAAG,IAAI,CAAC;CAC1D,CAAC,EACF,WAAW,EAAE,MAAM,GAClB,QAAQ,EAAE,CAoBZ;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI,CA2B1D"}
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import chalk from "chalk";
|
|
2
|
-
import fs from "fs-extra";
|
|
3
|
-
import path from "path";
|
|
4
|
-
/**
|
|
5
|
-
* Check if block dependencies are installed in the project.
|
|
6
|
-
* Returns list of missing dependencies.
|
|
7
|
-
*/
|
|
8
|
-
export function checkBlockDependencies(blocks, projectRoot) {
|
|
9
|
-
const missing = [];
|
|
10
|
-
for (const block of blocks) {
|
|
11
|
-
const deps = block.config?.dependencies;
|
|
12
|
-
if (!deps)
|
|
13
|
-
continue;
|
|
14
|
-
for (const [pkg, version] of Object.entries(deps)) {
|
|
15
|
-
const pkgPath = path.join(projectRoot, "node_modules", pkg);
|
|
16
|
-
if (!fs.existsSync(pkgPath)) {
|
|
17
|
-
missing.push({
|
|
18
|
-
blockName: block.name,
|
|
19
|
-
packageName: pkg,
|
|
20
|
-
versionRange: version,
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
return missing;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Print missing dependency warnings to console.
|
|
29
|
-
*/
|
|
30
|
-
export function printMissingDeps(missing) {
|
|
31
|
-
if (missing.length === 0)
|
|
32
|
-
return;
|
|
33
|
-
console.log(chalk.yellow("\n⚠ Missing block dependencies:\n"));
|
|
34
|
-
// Group by package for cleaner output
|
|
35
|
-
const byPackage = new Map();
|
|
36
|
-
for (const dep of missing) {
|
|
37
|
-
const key = `${dep.packageName}@${dep.versionRange}`;
|
|
38
|
-
if (!byPackage.has(key))
|
|
39
|
-
byPackage.set(key, []);
|
|
40
|
-
byPackage.get(key).push(dep);
|
|
41
|
-
}
|
|
42
|
-
for (const [key, deps] of byPackage) {
|
|
43
|
-
const blocks = deps.map((d) => d.blockName).join(", ");
|
|
44
|
-
console.log(chalk.yellow(` ${key}`) + chalk.gray(` (used by: ${blocks})`));
|
|
45
|
-
}
|
|
46
|
-
// Build install command (deduplicate by package name)
|
|
47
|
-
const seen = new Map();
|
|
48
|
-
for (const dep of missing) {
|
|
49
|
-
if (!seen.has(dep.packageName)) {
|
|
50
|
-
seen.set(dep.packageName, dep.versionRange);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
const packages = [...seen.entries()].map(([name, ver]) => `${name}@${ver}`);
|
|
54
|
-
console.log(chalk.gray(`\n Run: npm install ${packages.join(" ")}\n`));
|
|
55
|
-
}
|
|
56
|
-
//# sourceMappingURL=dependency-check.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dependency-check.js","sourceRoot":"","sources":["../../src/utils/dependency-check.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"blocks.d.ts","sourceRoot":"","sources":["../../../../src/utils/dev-generator/api-routes/blocks.ts"],"names":[],"mappings":"AAGA,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,QA4DrD;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,MAAM,QAkI1D"}
|
|
@@ -1,194 +0,0 @@
|
|
|
1
|
-
import fs from "fs-extra";
|
|
2
|
-
import path from "path";
|
|
3
|
-
export function generateBlocksApiRoute(devRoot) {
|
|
4
|
-
const content = `import { NextResponse } from "next/server";
|
|
5
|
-
import fs from "fs";
|
|
6
|
-
import path from "path";
|
|
7
|
-
|
|
8
|
-
// Project root is passed via env var set by cmssy dev
|
|
9
|
-
const projectRoot = process.env.CMSSY_PROJECT_ROOT || process.cwd();
|
|
10
|
-
|
|
11
|
-
export async function GET() {
|
|
12
|
-
const blocks: any[] = [];
|
|
13
|
-
|
|
14
|
-
// Scan blocks/
|
|
15
|
-
const blocksDir = path.join(projectRoot, "blocks");
|
|
16
|
-
if (fs.existsSync(blocksDir)) {
|
|
17
|
-
const dirs = fs.readdirSync(blocksDir, { withFileTypes: true })
|
|
18
|
-
.filter((d) => d.isDirectory());
|
|
19
|
-
|
|
20
|
-
for (const dir of dirs) {
|
|
21
|
-
const pkgPath = path.join(blocksDir, dir.name, "package.json");
|
|
22
|
-
const pkg = fs.existsSync(pkgPath) ? JSON.parse(fs.readFileSync(pkgPath, "utf-8")) : {};
|
|
23
|
-
blocks.push({
|
|
24
|
-
type: "block",
|
|
25
|
-
name: dir.name,
|
|
26
|
-
displayName: pkg.cmssy?.displayName || dir.name,
|
|
27
|
-
version: pkg.version || "1.0.0",
|
|
28
|
-
category: pkg.cmssy?.category || "other",
|
|
29
|
-
tags: pkg.cmssy?.tags || [],
|
|
30
|
-
description: pkg.description || "",
|
|
31
|
-
hasConfig: fs.existsSync(path.join(blocksDir, dir.name, "config.ts")),
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
// Scan templates/
|
|
37
|
-
const templatesDir = path.join(projectRoot, "templates");
|
|
38
|
-
if (fs.existsSync(templatesDir)) {
|
|
39
|
-
const dirs = fs.readdirSync(templatesDir, { withFileTypes: true })
|
|
40
|
-
.filter((d) => d.isDirectory());
|
|
41
|
-
|
|
42
|
-
for (const dir of dirs) {
|
|
43
|
-
const pkgPath = path.join(templatesDir, dir.name, "package.json");
|
|
44
|
-
const pkg = fs.existsSync(pkgPath) ? JSON.parse(fs.readFileSync(pkgPath, "utf-8")) : {};
|
|
45
|
-
blocks.push({
|
|
46
|
-
type: "template",
|
|
47
|
-
name: dir.name,
|
|
48
|
-
displayName: pkg.cmssy?.displayName || dir.name,
|
|
49
|
-
version: pkg.version || "1.0.0",
|
|
50
|
-
category: pkg.cmssy?.category || "pages",
|
|
51
|
-
tags: pkg.cmssy?.tags || [],
|
|
52
|
-
description: pkg.description || "",
|
|
53
|
-
hasConfig: fs.existsSync(path.join(templatesDir, dir.name, "config.ts")),
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
return NextResponse.json(blocks);
|
|
59
|
-
}
|
|
60
|
-
`;
|
|
61
|
-
fs.mkdirSync(path.join(devRoot, "app/api/blocks"), { recursive: true });
|
|
62
|
-
fs.writeFileSync(path.join(devRoot, "app/api/blocks/route.ts"), content);
|
|
63
|
-
}
|
|
64
|
-
export function generateBlockConfigApiRoute(devRoot) {
|
|
65
|
-
const dir = path.join(devRoot, "app/api/blocks/[name]/config");
|
|
66
|
-
fs.mkdirSync(dir, { recursive: true });
|
|
67
|
-
const content = `import { NextResponse } from "next/server";
|
|
68
|
-
import fs from "fs";
|
|
69
|
-
import path from "path";
|
|
70
|
-
import { execSync } from "child_process";
|
|
71
|
-
|
|
72
|
-
const projectRoot = process.env.CMSSY_PROJECT_ROOT || process.cwd();
|
|
73
|
-
|
|
74
|
-
function loadBlockConfig(blockPath: string): Record<string, unknown> | null {
|
|
75
|
-
const configPath = path.join(blockPath, "config.ts");
|
|
76
|
-
if (!fs.existsSync(configPath)) return null;
|
|
77
|
-
|
|
78
|
-
try {
|
|
79
|
-
// Find tsx binary
|
|
80
|
-
const tsxPaths = [
|
|
81
|
-
path.join(projectRoot, "node_modules", ".bin", "tsx"),
|
|
82
|
-
path.join(projectRoot, "node_modules", "cmssy-cli", "node_modules", ".bin", "tsx"),
|
|
83
|
-
];
|
|
84
|
-
const tsxBinary = tsxPaths.find((p) => fs.existsSync(p)) || "npx -y tsx";
|
|
85
|
-
|
|
86
|
-
// Create mock cmssy-cli/config module
|
|
87
|
-
const cacheDir = path.join(projectRoot, ".cmssy", "cache");
|
|
88
|
-
fs.mkdirSync(cacheDir, { recursive: true });
|
|
89
|
-
|
|
90
|
-
const mockConfigPath = path.join(cacheDir, "cmssy-cli-config.mjs");
|
|
91
|
-
fs.writeFileSync(mockConfigPath,
|
|
92
|
-
"export const defineBlock = (config) => config;\\nexport const defineTemplate = (config) => config;"
|
|
93
|
-
);
|
|
94
|
-
|
|
95
|
-
// Replace import path in config
|
|
96
|
-
const configContent = fs.readFileSync(configPath, "utf-8");
|
|
97
|
-
const modified = configContent.replace(
|
|
98
|
-
/from\\s+['"](?:@cmssy\\/cli\\/config|cmssy-cli\\/config)['"]/g,
|
|
99
|
-
\`from '\${mockConfigPath.replace(/\\\\\\\\/g, "/")}'\`
|
|
100
|
-
);
|
|
101
|
-
|
|
102
|
-
const tempPath = path.join(cacheDir, "temp-block-config.ts");
|
|
103
|
-
fs.writeFileSync(tempPath, modified);
|
|
104
|
-
|
|
105
|
-
const evalCode = \`import cfg from '\${tempPath.replace(/\\\\\\\\/g, "/")}'; console.log(JSON.stringify(cfg.default || cfg));\`;
|
|
106
|
-
const cmd = tsxBinary.includes("npx")
|
|
107
|
-
? \`\${tsxBinary} --eval "\${evalCode}"\`
|
|
108
|
-
: \`"\${tsxBinary}" --eval "\${evalCode}"\`;
|
|
109
|
-
|
|
110
|
-
const output = execSync(cmd, {
|
|
111
|
-
encoding: "utf-8",
|
|
112
|
-
cwd: projectRoot,
|
|
113
|
-
stdio: ["pipe", "pipe", "pipe"],
|
|
114
|
-
});
|
|
115
|
-
|
|
116
|
-
// Clean up
|
|
117
|
-
try { fs.unlinkSync(tempPath); } catch {}
|
|
118
|
-
try { fs.unlinkSync(mockConfigPath); } catch {}
|
|
119
|
-
|
|
120
|
-
const lines = output.trim().split("\\n");
|
|
121
|
-
return JSON.parse(lines[lines.length - 1]);
|
|
122
|
-
} catch {
|
|
123
|
-
return null;
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
export async function GET(
|
|
128
|
-
_request: Request,
|
|
129
|
-
{ params }: { params: Promise<{ name: string }> }
|
|
130
|
-
) {
|
|
131
|
-
const { name } = await params;
|
|
132
|
-
|
|
133
|
-
// Look in blocks/ first, then templates/
|
|
134
|
-
let blockPath = path.join(projectRoot, "blocks", name);
|
|
135
|
-
let resourceType: "block" | "template" = "block";
|
|
136
|
-
if (!fs.existsSync(blockPath)) {
|
|
137
|
-
blockPath = path.join(projectRoot, "templates", name);
|
|
138
|
-
resourceType = "template";
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
if (!fs.existsSync(blockPath)) {
|
|
142
|
-
return NextResponse.json({ error: "Block not found" }, { status: 404 });
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
// Load preview data
|
|
146
|
-
const previewPath = path.join(blockPath, "preview.json");
|
|
147
|
-
const previewData = fs.existsSync(previewPath)
|
|
148
|
-
? JSON.parse(fs.readFileSync(previewPath, "utf-8"))
|
|
149
|
-
: {};
|
|
150
|
-
|
|
151
|
-
// Load config schema
|
|
152
|
-
const config = loadBlockConfig(blockPath);
|
|
153
|
-
|
|
154
|
-
// Check for pages.json (templates), fall back to config.ts
|
|
155
|
-
const pagesJsonPath = path.join(blockPath, "pages.json");
|
|
156
|
-
let pagesData = fs.existsSync(pagesJsonPath)
|
|
157
|
-
? JSON.parse(fs.readFileSync(pagesJsonPath, "utf-8"))
|
|
158
|
-
: null;
|
|
159
|
-
|
|
160
|
-
// If no pages.json but config has pages (template), convert on the fly
|
|
161
|
-
if (!pagesData && config && (config.pages || config.layoutPositions)) {
|
|
162
|
-
const layoutPositions: Record<string, any> = {};
|
|
163
|
-
if (Array.isArray(config.layoutPositions)) {
|
|
164
|
-
for (const lp of config.layoutPositions as any[]) {
|
|
165
|
-
layoutPositions[lp.position] = { type: lp.type, content: lp.content || {} };
|
|
166
|
-
}
|
|
167
|
-
} else if (config.layoutPositions && typeof config.layoutPositions === "object") {
|
|
168
|
-
Object.assign(layoutPositions, config.layoutPositions);
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
const pages = ((config.pages || []) as any[]).map((page: any, index: number) => ({
|
|
172
|
-
name: page.name,
|
|
173
|
-
slug: page.slug === "home" || page.slug === "/" || index === 0
|
|
174
|
-
? "/"
|
|
175
|
-
: page.slug.startsWith("/") ? page.slug : "/" + page.slug,
|
|
176
|
-
blocks: page.blocks || [],
|
|
177
|
-
}));
|
|
178
|
-
|
|
179
|
-
pagesData = { layoutPositions, pages };
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
return NextResponse.json({
|
|
183
|
-
name,
|
|
184
|
-
schema: config?.schema || {},
|
|
185
|
-
previewData,
|
|
186
|
-
pages: config?.pages,
|
|
187
|
-
layoutPositions: config?.layoutPositions,
|
|
188
|
-
pagesData,
|
|
189
|
-
});
|
|
190
|
-
}
|
|
191
|
-
`;
|
|
192
|
-
fs.writeFileSync(path.join(dir, "route.ts"), content);
|
|
193
|
-
}
|
|
194
|
-
//# sourceMappingURL=blocks.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"blocks.js","sourceRoot":"","sources":["../../../../src/utils/dev-generator/api-routes/blocks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,UAAU,sBAAsB,CAAC,OAAe;IACpD,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwDjB,CAAC;IACA,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACxE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,yBAAyB,CAAC,EAAE,OAAO,CAAC,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,OAAe;IACzD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,8BAA8B,CAAC,CAAC;IAC/D,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEvC,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4HjB,CAAC;IACA,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;AACxD,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../src/utils/dev-generator/api-routes/config.ts"],"names":[],"mappings":"AAGA,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,QAwGrD"}
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
import fs from "fs-extra";
|
|
2
|
-
import path from "path";
|
|
3
|
-
export function generateConfigApiRoute(devRoot) {
|
|
4
|
-
const dir = path.join(devRoot, "app/api/config");
|
|
5
|
-
fs.mkdirSync(dir, { recursive: true });
|
|
6
|
-
const content = `import { NextResponse } from "next/server";
|
|
7
|
-
|
|
8
|
-
const projectRoot = process.env.CMSSY_PROJECT_ROOT || process.cwd();
|
|
9
|
-
|
|
10
|
-
function getEnvPath() {
|
|
11
|
-
const fs = require("fs");
|
|
12
|
-
const path = require("path");
|
|
13
|
-
return path.join(projectRoot, ".env");
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
function readEnv(): Record<string, string> {
|
|
17
|
-
const fs = require("fs");
|
|
18
|
-
const envPath = getEnvPath();
|
|
19
|
-
const result: Record<string, string> = {};
|
|
20
|
-
if (!fs.existsSync(envPath)) return result;
|
|
21
|
-
const content = fs.readFileSync(envPath, "utf-8");
|
|
22
|
-
for (const line of content.split("\\n")) {
|
|
23
|
-
const match = line.match(/^([A-Z_]+)=(.*)$/);
|
|
24
|
-
if (match) result[match[1]] = match[2].trim();
|
|
25
|
-
}
|
|
26
|
-
return result;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
function writeEnv(updates: Record<string, string>) {
|
|
30
|
-
const fs = require("fs");
|
|
31
|
-
const envPath = getEnvPath();
|
|
32
|
-
let content = fs.existsSync(envPath) ? fs.readFileSync(envPath, "utf-8") : "";
|
|
33
|
-
|
|
34
|
-
for (const [key, value] of Object.entries(updates)) {
|
|
35
|
-
const regex = new RegExp(\`^(\${key})=.*$\`, "m");
|
|
36
|
-
if (regex.test(content)) {
|
|
37
|
-
content = content.replace(regex, \`\${key}=\${value}\`);
|
|
38
|
-
} else {
|
|
39
|
-
content = content.trimEnd() + "\\n" + \`\${key}=\${value}\` + "\\n";
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
fs.writeFileSync(envPath, content);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
function maskToken(token: string | undefined): string | null {
|
|
47
|
-
if (!token || token.length < 8) return token ? "***" : null;
|
|
48
|
-
return token.substring(0, 3) + "***" + token.substring(token.length - 3);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
function readCmssyConfig(): Record<string, any> | null {
|
|
52
|
-
const fs = require("fs");
|
|
53
|
-
const path = require("path");
|
|
54
|
-
const configPath = path.join(projectRoot, "cmssy.config.js");
|
|
55
|
-
if (!fs.existsSync(configPath)) return null;
|
|
56
|
-
try {
|
|
57
|
-
const content = fs.readFileSync(configPath, "utf-8");
|
|
58
|
-
const match = content.match(/export\\s+default\\s+({[\\s\\S]*});?/);
|
|
59
|
-
if (match) return JSON.parse(match[1].replace(/,\\s*}/g, "}").replace(/'/g, '"'));
|
|
60
|
-
} catch {}
|
|
61
|
-
return null;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
export async function GET() {
|
|
65
|
-
const env = readEnv();
|
|
66
|
-
const cmssyConfig = readCmssyConfig();
|
|
67
|
-
|
|
68
|
-
return NextResponse.json({
|
|
69
|
-
env: {
|
|
70
|
-
apiUrl: env.CMSSY_API_URL || "https://api.cmssy.io/graphql",
|
|
71
|
-
hasToken: !!env.CMSSY_API_TOKEN,
|
|
72
|
-
maskedToken: maskToken(env.CMSSY_API_TOKEN),
|
|
73
|
-
workspaceId: env.CMSSY_WORKSPACE_ID || null,
|
|
74
|
-
},
|
|
75
|
-
project: cmssyConfig,
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
export async function PUT(request: Request) {
|
|
80
|
-
try {
|
|
81
|
-
const body = await request.json();
|
|
82
|
-
const updates: Record<string, string> = {};
|
|
83
|
-
|
|
84
|
-
if (body.apiUrl !== undefined) {
|
|
85
|
-
updates.CMSSY_API_URL = body.apiUrl;
|
|
86
|
-
}
|
|
87
|
-
if (body.apiToken !== undefined) {
|
|
88
|
-
updates.CMSSY_API_TOKEN = body.apiToken;
|
|
89
|
-
}
|
|
90
|
-
if (body.workspaceId !== undefined) {
|
|
91
|
-
updates.CMSSY_WORKSPACE_ID = body.workspaceId;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
if (Object.keys(updates).length === 0) {
|
|
95
|
-
return NextResponse.json({ error: "No values to update" }, { status: 400 });
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
writeEnv(updates);
|
|
99
|
-
return NextResponse.json({ success: true });
|
|
100
|
-
} catch (error: any) {
|
|
101
|
-
return NextResponse.json({ error: error.message }, { status: 500 });
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
`;
|
|
105
|
-
fs.writeFileSync(path.join(dir, "route.ts"), content);
|
|
106
|
-
}
|
|
107
|
-
//# sourceMappingURL=config.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../src/utils/dev-generator/api-routes/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,UAAU,sBAAsB,CAAC,OAAe;IACpD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;IACjD,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEvC,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkGjB,CAAC;IACA,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;AACxD,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"preview.d.ts","sourceRoot":"","sources":["../../../../src/utils/dev-generator/api-routes/preview.ts"],"names":[],"mappings":"AAGA,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,QA+CtD"}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import fs from "fs-extra";
|
|
2
|
-
import path from "path";
|
|
3
|
-
export function generatePreviewApiRoute(devRoot) {
|
|
4
|
-
const dir = path.join(devRoot, "app/api/preview/[blockName]");
|
|
5
|
-
fs.mkdirSync(dir, { recursive: true });
|
|
6
|
-
const content = `import { NextResponse } from "next/server";
|
|
7
|
-
import fs from "fs";
|
|
8
|
-
import path from "path";
|
|
9
|
-
|
|
10
|
-
const projectRoot = process.env.CMSSY_PROJECT_ROOT || process.cwd();
|
|
11
|
-
|
|
12
|
-
export async function GET(
|
|
13
|
-
_request: Request,
|
|
14
|
-
{ params }: { params: Promise<{ blockName: string }> }
|
|
15
|
-
) {
|
|
16
|
-
const { blockName } = await params;
|
|
17
|
-
let blockPath = path.join(projectRoot, "blocks", blockName);
|
|
18
|
-
if (!fs.existsSync(blockPath)) {
|
|
19
|
-
blockPath = path.join(projectRoot, "templates", blockName);
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
const previewPath = path.join(blockPath, "preview.json");
|
|
23
|
-
const data = fs.existsSync(previewPath)
|
|
24
|
-
? JSON.parse(fs.readFileSync(previewPath, "utf-8"))
|
|
25
|
-
: {};
|
|
26
|
-
|
|
27
|
-
return NextResponse.json(data);
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
export async function POST(
|
|
31
|
-
request: Request,
|
|
32
|
-
{ params }: { params: Promise<{ blockName: string }> }
|
|
33
|
-
) {
|
|
34
|
-
const { blockName } = await params;
|
|
35
|
-
const body = await request.json();
|
|
36
|
-
|
|
37
|
-
let blockPath = path.join(projectRoot, "blocks", blockName);
|
|
38
|
-
if (!fs.existsSync(blockPath)) {
|
|
39
|
-
blockPath = path.join(projectRoot, "templates", blockName);
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
const previewPath = path.join(blockPath, "preview.json");
|
|
43
|
-
fs.writeFileSync(previewPath, JSON.stringify(body, null, 2));
|
|
44
|
-
|
|
45
|
-
return NextResponse.json({ success: true });
|
|
46
|
-
}
|
|
47
|
-
`;
|
|
48
|
-
fs.writeFileSync(path.join(dir, "route.ts"), content);
|
|
49
|
-
}
|
|
50
|
-
//# sourceMappingURL=preview.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"preview.js","sourceRoot":"","sources":["../../../../src/utils/dev-generator/api-routes/preview.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,UAAU,uBAAuB,CAAC,OAAe;IACrD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,6BAA6B,CAAC,CAAC;IAC9D,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEvC,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyCjB,CAAC;IACA,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;AACxD,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"workspaces.d.ts","sourceRoot":"","sources":["../../../../src/utils/dev-generator/api-routes/workspaces.ts"],"names":[],"mappings":"AAGA,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,QA4HzD"}
|
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
import fs from "fs-extra";
|
|
2
|
-
import path from "path";
|
|
3
|
-
export function generateWorkspacesApiRoute(devRoot) {
|
|
4
|
-
const content = `import { NextResponse } from "next/server";
|
|
5
|
-
|
|
6
|
-
const projectRoot = process.env.CMSSY_PROJECT_ROOT || process.cwd();
|
|
7
|
-
|
|
8
|
-
function loadEnvConfig(): { apiUrl: string; apiToken: string | null; workspaceId: string | null } {
|
|
9
|
-
const fs = require("fs");
|
|
10
|
-
const path = require("path");
|
|
11
|
-
const envPath = path.join(projectRoot, ".env");
|
|
12
|
-
const config: any = {
|
|
13
|
-
apiUrl: "https://api.cmssy.io/graphql",
|
|
14
|
-
apiToken: null,
|
|
15
|
-
workspaceId: null,
|
|
16
|
-
};
|
|
17
|
-
if (!fs.existsSync(envPath)) return config;
|
|
18
|
-
const content = fs.readFileSync(envPath, "utf-8");
|
|
19
|
-
for (const line of content.split("\\n")) {
|
|
20
|
-
const match = line.match(/^(CMSSY_\\w+)=(.*)$/);
|
|
21
|
-
if (!match) continue;
|
|
22
|
-
const [, key, val] = match;
|
|
23
|
-
if (key === "CMSSY_API_URL") config.apiUrl = val.trim();
|
|
24
|
-
if (key === "CMSSY_API_TOKEN") config.apiToken = val.trim() || null;
|
|
25
|
-
if (key === "CMSSY_WORKSPACE_ID") config.workspaceId = val.trim() || null;
|
|
26
|
-
}
|
|
27
|
-
return config;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
const MY_WORKSPACES_QUERY = \`
|
|
31
|
-
query MyWorkspaces {
|
|
32
|
-
myWorkspaces {
|
|
33
|
-
id
|
|
34
|
-
slug
|
|
35
|
-
name
|
|
36
|
-
myRole { name slug }
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
\`;
|
|
40
|
-
|
|
41
|
-
const WORKSPACE_BLOCKS_QUERY = \`
|
|
42
|
-
query GetWorkspaceBlocks {
|
|
43
|
-
workspaceBlocks {
|
|
44
|
-
id
|
|
45
|
-
blockType
|
|
46
|
-
name
|
|
47
|
-
version
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
\`;
|
|
51
|
-
|
|
52
|
-
export async function GET() {
|
|
53
|
-
const config = loadEnvConfig();
|
|
54
|
-
|
|
55
|
-
if (!config.apiToken) {
|
|
56
|
-
return NextResponse.json({ connected: false, reason: "no_token" });
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
try {
|
|
60
|
-
const headers = {
|
|
61
|
-
"Content-Type": "application/json",
|
|
62
|
-
Authorization: \`Bearer \${config.apiToken}\`,
|
|
63
|
-
};
|
|
64
|
-
|
|
65
|
-
// Fetch workspaces
|
|
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
|
-
// Find target workspace
|
|
84
|
-
let targetWorkspace = null;
|
|
85
|
-
if (config.workspaceId) {
|
|
86
|
-
targetWorkspace = workspaces.find((w: any) => w.id === config.workspaceId);
|
|
87
|
-
}
|
|
88
|
-
if (!targetWorkspace && workspaces.length > 0) {
|
|
89
|
-
targetWorkspace = workspaces[0];
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
// Fetch published blocks for target workspace
|
|
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
|
-
}
|
|
125
|
-
`;
|
|
126
|
-
fs.writeFileSync(path.join(devRoot, "app/api/workspaces/route.ts"), content);
|
|
127
|
-
}
|
|
128
|
-
//# sourceMappingURL=workspaces.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"workspaces.js","sourceRoot":"","sources":["../../../../src/utils/dev-generator/api-routes/workspaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,UAAU,0BAA0B,CAAC,OAAe;IACxD,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyHjB,CAAC;IACA,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,6BAA6B,CAAC,EAAE,OAAO,CAAC,CAAC;AAC/E,CAAC"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Convert full block type name to simple name.
|
|
3
|
-
* "@cmssy-marketing/blocks.hero" -> "hero"
|
|
4
|
-
* "@vendor/blocks.pricing-table" -> "pricing-table"
|
|
5
|
-
* "hero" -> "hero" (already simple)
|
|
6
|
-
*/
|
|
7
|
-
export declare function convertBlockTypeToSimple(blockType: string): string;
|
|
8
|
-
/**
|
|
9
|
-
* Load config.ts synchronously using tsx/esbuild.
|
|
10
|
-
* Used to generate template preview pages when pages.json is missing.
|
|
11
|
-
*/
|
|
12
|
-
export declare function loadTemplateConfigSync(templateDir: string, projectRoot: string): Record<string, any> | null;
|
|
13
|
-
/**
|
|
14
|
-
* Convert template config (from config.ts defineTemplate) to pages.json format.
|
|
15
|
-
* - layoutPositions: array → object keyed by position
|
|
16
|
-
* - page slugs: "home" → "/", others → "/{slug}"
|
|
17
|
-
*/
|
|
18
|
-
export declare function convertConfigToPagesData(config: Record<string, any>): {
|
|
19
|
-
layoutPositions: Record<string, any>;
|
|
20
|
-
pages: any[];
|
|
21
|
-
};
|
|
22
|
-
export declare function toPascalCase(str: string): string;
|
|
23
|
-
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/utils/dev-generator/helpers.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAWlE;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAwE5B;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG;IACrE,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACrC,KAAK,EAAE,GAAG,EAAE,CAAC;CACd,CA+BA;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAKhD"}
|