@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.
- package/README.md +49 -650
- package/dist/cli.js +706 -328
- package/package.json +26 -73
- package/templates/block/Component.module.css.tpl +12 -0
- package/templates/block/Component.tsx.tpl +15 -0
- package/templates/block/block.ts.tpl +11 -0
- package/templates/init/app/[[...path]]/page.tsx +19 -0
- package/templates/init/app/api/draft/route.ts +5 -0
- package/templates/init/blocks/hero/Hero.module.css +131 -0
- package/templates/init/blocks/hero/Hero.tsx +100 -0
- package/templates/init/blocks/hero/block.ts +21 -0
- package/templates/init/cmssy/blocks.ts +5 -0
- package/templates/init/cmssy/editor.tsx +10 -0
- package/templates/init/cmssy.config.ts +8 -0
- package/templates/init/env.example +4 -0
- package/templates/init/next.config.mjs +8 -0
- package/templates/init/proxy.ts +32 -0
- 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.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 -231
- 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,214 +0,0 @@
|
|
|
1
|
-
import chalk from "chalk";
|
|
2
|
-
import { execSync } from "child_process";
|
|
3
|
-
import fs from "fs-extra";
|
|
4
|
-
import path from "path";
|
|
5
|
-
import { getFieldTypes, isValidFieldType } from "./field-schema.js";
|
|
6
|
-
/**
|
|
7
|
-
* Type-safe field config helper. Required for all schema fields.
|
|
8
|
-
* Infers the field type from `type` and narrows `defaultValue` accordingly.
|
|
9
|
-
*
|
|
10
|
-
* @example
|
|
11
|
-
* field({ type: "singleLine", label: "Title", defaultValue: "Hello" }) // ✓
|
|
12
|
-
* field({ type: "singleLine", label: "Title", defaultValue: 123 }) // ✗ TS error
|
|
13
|
-
*/
|
|
14
|
-
export function field(config) {
|
|
15
|
-
return config;
|
|
16
|
-
}
|
|
17
|
-
// defineBlock requires branded FieldDef - enforces field() usage
|
|
18
|
-
export function defineBlock(config) {
|
|
19
|
-
return config;
|
|
20
|
-
}
|
|
21
|
-
// defineTemplate requires branded FieldDef in schema (if present)
|
|
22
|
-
export function defineTemplate(config) {
|
|
23
|
-
return config;
|
|
24
|
-
}
|
|
25
|
-
// defineTheme for theme/config.ts authoring
|
|
26
|
-
export function defineTheme(config) {
|
|
27
|
-
return config;
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Resolve the config file for a block or template.
|
|
31
|
-
* Both use a unified `config.ts` file.
|
|
32
|
-
*/
|
|
33
|
-
export function resolveConfigPath(resourcePath) {
|
|
34
|
-
const candidate = path.join(resourcePath, "config.ts");
|
|
35
|
-
return fs.existsSync(candidate) ? candidate : null;
|
|
36
|
-
}
|
|
37
|
-
// Load config.ts dynamically
|
|
38
|
-
export async function loadBlockConfig(blockPath) {
|
|
39
|
-
const configPath = resolveConfigPath(blockPath);
|
|
40
|
-
if (!configPath) {
|
|
41
|
-
return null;
|
|
42
|
-
}
|
|
43
|
-
try {
|
|
44
|
-
// Find tsx binary - try multiple locations
|
|
45
|
-
const cliPath = path.dirname(path.dirname(new URL(import.meta.url).pathname));
|
|
46
|
-
// Possible locations for tsx binary
|
|
47
|
-
const possibleTsxPaths = [
|
|
48
|
-
path.join(cliPath, "..", "node_modules", ".bin", "tsx"), // CLI's node_modules (dist -> root)
|
|
49
|
-
path.join(cliPath, "..", "..", "node_modules", ".bin", "tsx"), // If symlinked
|
|
50
|
-
path.join(process.cwd(), "node_modules", ".bin", "tsx"), // Project's node_modules
|
|
51
|
-
];
|
|
52
|
-
let tsxBinary = possibleTsxPaths.find((p) => fs.existsSync(p));
|
|
53
|
-
// If not found, use npx as fallback
|
|
54
|
-
if (!tsxBinary) {
|
|
55
|
-
tsxBinary = "npx -y tsx"; // Use npx with -y to auto-install if needed
|
|
56
|
-
}
|
|
57
|
-
const cacheDir = path.join(process.cwd(), ".cmssy", "cache");
|
|
58
|
-
fs.ensureDirSync(cacheDir);
|
|
59
|
-
// Create a mock cmssy-cli/config module in cache
|
|
60
|
-
const mockConfigPath = path.join(cacheDir, "cmssy-cli-config.mjs");
|
|
61
|
-
const mockConfig = `export const defineBlock = (config) => config;\nexport const defineTemplate = (config) => config;\nexport const defineTheme = (config) => config;\nexport const field = (config) => config;`;
|
|
62
|
-
fs.writeFileSync(mockConfigPath, mockConfig);
|
|
63
|
-
// Read original config and replace import path to point to mock
|
|
64
|
-
const configContent = fs.readFileSync(configPath, "utf-8");
|
|
65
|
-
const modifiedConfig = configContent.replace(/from\s+['"](?:@cmssy\/cli\/config|cmssy-cli\/config)['"]/g, `from '${mockConfigPath.replace(/\\/g, "/")}'`);
|
|
66
|
-
// Write modified config to temp file
|
|
67
|
-
const tempConfigPath = path.join(cacheDir, `temp-${path.basename(configPath)}`);
|
|
68
|
-
fs.writeFileSync(tempConfigPath, modifiedConfig);
|
|
69
|
-
// Execute with tsx - use --eval to import and output
|
|
70
|
-
const evalCode = `import cfg from '${tempConfigPath.replace(/\\/g, "/")}'; console.log(JSON.stringify(cfg.default || cfg));`;
|
|
71
|
-
// Build command - handle both direct binary path and npx
|
|
72
|
-
const command = tsxBinary.includes("npx")
|
|
73
|
-
? `${tsxBinary} --eval "${evalCode}"`
|
|
74
|
-
: `"${tsxBinary}" --eval "${evalCode}"`;
|
|
75
|
-
const output = execSync(command, {
|
|
76
|
-
encoding: "utf-8",
|
|
77
|
-
cwd: process.cwd(),
|
|
78
|
-
env: {
|
|
79
|
-
...process.env,
|
|
80
|
-
NODE_ENV: "development",
|
|
81
|
-
},
|
|
82
|
-
stdio: ["pipe", "pipe", "pipe"],
|
|
83
|
-
});
|
|
84
|
-
// Clean up
|
|
85
|
-
fs.removeSync(tempConfigPath);
|
|
86
|
-
fs.removeSync(mockConfigPath);
|
|
87
|
-
// Parse JSON output
|
|
88
|
-
const lines = output.trim().split("\n");
|
|
89
|
-
const jsonLine = lines[lines.length - 1];
|
|
90
|
-
const config = JSON.parse(jsonLine);
|
|
91
|
-
return config;
|
|
92
|
-
}
|
|
93
|
-
catch (error) {
|
|
94
|
-
throw new Error(`Failed to load config at ${configPath}: ${error.message}`);
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
// Validate defaultValue types match field type expectations
|
|
98
|
-
export function validateDefaultValues(schema) {
|
|
99
|
-
const errors = [];
|
|
100
|
-
function check(key, field, parentPath = "") {
|
|
101
|
-
const fullPath = parentPath ? `${parentPath}.${key}` : key;
|
|
102
|
-
if (field.defaultValue === undefined)
|
|
103
|
-
return;
|
|
104
|
-
const val = field.defaultValue;
|
|
105
|
-
switch (field.type) {
|
|
106
|
-
case "singleLine":
|
|
107
|
-
case "multiLine":
|
|
108
|
-
case "richText":
|
|
109
|
-
case "date":
|
|
110
|
-
case "media":
|
|
111
|
-
case "link":
|
|
112
|
-
case "select":
|
|
113
|
-
case "color":
|
|
114
|
-
case "form":
|
|
115
|
-
if (typeof val !== "string") {
|
|
116
|
-
errors.push(`"${fullPath}": type "${field.type}" expects string defaultValue, got ${typeof val}`);
|
|
117
|
-
}
|
|
118
|
-
break;
|
|
119
|
-
case "numeric":
|
|
120
|
-
if (typeof val !== "number") {
|
|
121
|
-
errors.push(`"${fullPath}": type "numeric" expects number defaultValue, got ${typeof val}`);
|
|
122
|
-
}
|
|
123
|
-
break;
|
|
124
|
-
case "boolean":
|
|
125
|
-
if (typeof val !== "boolean") {
|
|
126
|
-
errors.push(`"${fullPath}": type "boolean" expects boolean defaultValue, got ${typeof val}`);
|
|
127
|
-
}
|
|
128
|
-
break;
|
|
129
|
-
case "multiselect":
|
|
130
|
-
if (!Array.isArray(val) ||
|
|
131
|
-
!val.every((v) => typeof v === "string")) {
|
|
132
|
-
errors.push(`"${fullPath}": type "multiselect" expects string[] defaultValue`);
|
|
133
|
-
}
|
|
134
|
-
break;
|
|
135
|
-
case "repeater":
|
|
136
|
-
if (!Array.isArray(val) ||
|
|
137
|
-
!val.every((item) => item !== null && typeof item === "object" && !Array.isArray(item))) {
|
|
138
|
-
errors.push(`"${fullPath}": type "repeater" expects Record<string, unknown>[] defaultValue`);
|
|
139
|
-
}
|
|
140
|
-
break;
|
|
141
|
-
case "pageSelector":
|
|
142
|
-
if (!Array.isArray(val)) {
|
|
143
|
-
errors.push(`"${fullPath}": type "pageSelector" expects PageRef[] defaultValue, got ${typeof val}`);
|
|
144
|
-
}
|
|
145
|
-
break;
|
|
146
|
-
}
|
|
147
|
-
// Recurse into repeater schema
|
|
148
|
-
if (field.type === "repeater") {
|
|
149
|
-
const repeater = field;
|
|
150
|
-
if (repeater.schema) {
|
|
151
|
-
Object.entries(repeater.schema).forEach(([k, f]) => check(k, f, fullPath));
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
Object.entries(schema).forEach(([key, field]) => check(key, field));
|
|
156
|
-
return { valid: errors.length === 0, errors };
|
|
157
|
-
}
|
|
158
|
-
// Validate schema against backend field types
|
|
159
|
-
export async function validateSchema(schema, blockPath) {
|
|
160
|
-
const errors = [];
|
|
161
|
-
const fieldTypes = await getFieldTypes();
|
|
162
|
-
function validateField(key, field, parentPath = "") {
|
|
163
|
-
const fullPath = parentPath ? `${parentPath}.${key}` : key;
|
|
164
|
-
// Check if field type is valid
|
|
165
|
-
if (!isValidFieldType(field.type, fieldTypes)) {
|
|
166
|
-
errors.push(`Invalid field type "${field.type}" for field "${fullPath}". Valid types: ${fieldTypes
|
|
167
|
-
.map((ft) => ft.type)
|
|
168
|
-
.join(", ")}`);
|
|
169
|
-
}
|
|
170
|
-
// Validate repeater nested schema
|
|
171
|
-
if (field.type === "repeater") {
|
|
172
|
-
const repeaterField = field;
|
|
173
|
-
if (!repeaterField.schema || typeof repeaterField.schema !== "object") {
|
|
174
|
-
errors.push(`Repeater field "${fullPath}" must have a "schema" property`);
|
|
175
|
-
}
|
|
176
|
-
else {
|
|
177
|
-
// Recursively validate nested schema
|
|
178
|
-
Object.entries(repeaterField.schema).forEach(([nestedKey, nestedField]) => {
|
|
179
|
-
validateField(nestedKey, nestedField, fullPath);
|
|
180
|
-
});
|
|
181
|
-
}
|
|
182
|
-
// Validate minItems/maxItems
|
|
183
|
-
if (repeaterField.minItems !== undefined && repeaterField.minItems < 0) {
|
|
184
|
-
errors.push(`Repeater field "${fullPath}" has invalid minItems (must be >= 0)`);
|
|
185
|
-
}
|
|
186
|
-
if (repeaterField.maxItems !== undefined && repeaterField.maxItems < 1) {
|
|
187
|
-
errors.push(`Repeater field "${fullPath}" has invalid maxItems (must be >= 1)`);
|
|
188
|
-
}
|
|
189
|
-
if (repeaterField.minItems &&
|
|
190
|
-
repeaterField.maxItems &&
|
|
191
|
-
repeaterField.minItems > repeaterField.maxItems) {
|
|
192
|
-
errors.push(`Repeater field "${fullPath}" has minItems > maxItems`);
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
// Validate select/multiselect options
|
|
196
|
-
if (field.type === "select" || field.type === "multiselect") {
|
|
197
|
-
const selectField = field;
|
|
198
|
-
if (!selectField.options ||
|
|
199
|
-
!Array.isArray(selectField.options) ||
|
|
200
|
-
selectField.options.length === 0) {
|
|
201
|
-
errors.push(`${field.type} field "${fullPath}" must have at least one option`);
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
// Warn about required fields with default values
|
|
205
|
-
if (field.required && field.defaultValue !== undefined) {
|
|
206
|
-
console.warn(chalk.yellow(`Warning: Field "${fullPath}" is required but has a defaultValue. The defaultValue will be ignored.`));
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
Object.entries(schema).forEach(([key, field]) => {
|
|
210
|
-
validateField(key, field);
|
|
211
|
-
});
|
|
212
|
-
return { valid: errors.length === 0, errors };
|
|
213
|
-
}
|
|
214
|
-
//# sourceMappingURL=block-config.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"block-config.js","sourceRoot":"","sources":["../../src/utils/block-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { ResourceConfig } from "../types/block-config.js";
|
|
2
|
-
export interface BlockMeta {
|
|
3
|
-
type: "block" | "template";
|
|
4
|
-
category?: string;
|
|
5
|
-
tags?: string[];
|
|
6
|
-
displayName?: string;
|
|
7
|
-
description?: string;
|
|
8
|
-
version?: string;
|
|
9
|
-
updatedAt: string;
|
|
10
|
-
}
|
|
11
|
-
export interface BlocksMetaCache {
|
|
12
|
-
version: 1;
|
|
13
|
-
blocks: Record<string, BlockMeta>;
|
|
14
|
-
}
|
|
15
|
-
export declare function loadMetaCache(cwd?: string): BlocksMetaCache;
|
|
16
|
-
export declare function saveMetaCache(cache: BlocksMetaCache, cwd?: string): void;
|
|
17
|
-
export declare function updateBlockInCache(name: string, type: "block" | "template", config: ResourceConfig | null, version?: string, cwd?: string): void;
|
|
18
|
-
export declare function removeBlockFromCache(name: string, cwd?: string): void;
|
|
19
|
-
export declare function getBlockMeta(name: string, cwd?: string): BlockMeta | null;
|
|
20
|
-
/**
|
|
21
|
-
* Get all unique categories from cache
|
|
22
|
-
*/
|
|
23
|
-
export declare function getCachedCategories(cwd?: string): string[];
|
|
24
|
-
/**
|
|
25
|
-
* Get all unique tags from cache
|
|
26
|
-
*/
|
|
27
|
-
export declare function getCachedTags(cwd?: string): string[];
|
|
28
|
-
//# sourceMappingURL=blocks-meta-cache.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"blocks-meta-cache.d.ts","sourceRoot":"","sources":["../../src/utils/blocks-meta-cache.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAI1D,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,OAAO,GAAG,UAAU,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,CAAC,CAAC;IACX,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;CACnC;AAMD,wBAAgB,aAAa,CAAC,GAAG,SAAgB,GAAG,eAAe,CAYlE;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,eAAe,EAAE,GAAG,SAAgB,GAAG,IAAI,CAI/E;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,OAAO,GAAG,UAAU,EAC1B,MAAM,EAAE,cAAc,GAAG,IAAI,EAC7B,OAAO,CAAC,EAAE,MAAM,EAChB,GAAG,SAAgB,GAClB,IAAI,CAcN;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,SAAgB,GAAG,IAAI,CAI5E;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,SAAgB,GAAG,SAAS,GAAG,IAAI,CAGhF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,SAAgB,GAAG,MAAM,EAAE,CAWjE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,SAAgB,GAAG,MAAM,EAAE,CAW3D"}
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
import fs from "fs-extra";
|
|
2
|
-
import path from "path";
|
|
3
|
-
const CACHE_FILE = ".cmssy/blocks-meta.json";
|
|
4
|
-
function getCachePath(cwd = process.cwd()) {
|
|
5
|
-
return path.join(cwd, CACHE_FILE);
|
|
6
|
-
}
|
|
7
|
-
export function loadMetaCache(cwd = process.cwd()) {
|
|
8
|
-
const cachePath = getCachePath(cwd);
|
|
9
|
-
if (fs.existsSync(cachePath)) {
|
|
10
|
-
try {
|
|
11
|
-
return fs.readJsonSync(cachePath);
|
|
12
|
-
}
|
|
13
|
-
catch {
|
|
14
|
-
// Corrupted cache, return empty
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
return { version: 1, blocks: {} };
|
|
18
|
-
}
|
|
19
|
-
export function saveMetaCache(cache, cwd = process.cwd()) {
|
|
20
|
-
const cachePath = getCachePath(cwd);
|
|
21
|
-
fs.ensureDirSync(path.dirname(cachePath));
|
|
22
|
-
fs.writeJsonSync(cachePath, cache, { spaces: 2 });
|
|
23
|
-
}
|
|
24
|
-
export function updateBlockInCache(name, type, config, version, cwd = process.cwd()) {
|
|
25
|
-
const cache = loadMetaCache(cwd);
|
|
26
|
-
cache.blocks[name] = {
|
|
27
|
-
type,
|
|
28
|
-
category: config?.category,
|
|
29
|
-
tags: config?.tags,
|
|
30
|
-
displayName: config?.name,
|
|
31
|
-
description: config?.description,
|
|
32
|
-
version,
|
|
33
|
-
updatedAt: new Date().toISOString(),
|
|
34
|
-
};
|
|
35
|
-
saveMetaCache(cache, cwd);
|
|
36
|
-
}
|
|
37
|
-
export function removeBlockFromCache(name, cwd = process.cwd()) {
|
|
38
|
-
const cache = loadMetaCache(cwd);
|
|
39
|
-
delete cache.blocks[name];
|
|
40
|
-
saveMetaCache(cache, cwd);
|
|
41
|
-
}
|
|
42
|
-
export function getBlockMeta(name, cwd = process.cwd()) {
|
|
43
|
-
const cache = loadMetaCache(cwd);
|
|
44
|
-
return cache.blocks[name] || null;
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Get all unique categories from cache
|
|
48
|
-
*/
|
|
49
|
-
export function getCachedCategories(cwd = process.cwd()) {
|
|
50
|
-
const cache = loadMetaCache(cwd);
|
|
51
|
-
const categories = new Set();
|
|
52
|
-
Object.values(cache.blocks).forEach((meta) => {
|
|
53
|
-
if (meta.category) {
|
|
54
|
-
categories.add(meta.category);
|
|
55
|
-
}
|
|
56
|
-
});
|
|
57
|
-
return Array.from(categories).sort();
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Get all unique tags from cache
|
|
61
|
-
*/
|
|
62
|
-
export function getCachedTags(cwd = process.cwd()) {
|
|
63
|
-
const cache = loadMetaCache(cwd);
|
|
64
|
-
const tags = new Set();
|
|
65
|
-
Object.values(cache.blocks).forEach((meta) => {
|
|
66
|
-
if (meta.tags) {
|
|
67
|
-
meta.tags.forEach((tag) => tags.add(tag));
|
|
68
|
-
}
|
|
69
|
-
});
|
|
70
|
-
return Array.from(tags).sort();
|
|
71
|
-
}
|
|
72
|
-
//# sourceMappingURL=blocks-meta-cache.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"blocks-meta-cache.js","sourceRoot":"","sources":["../../src/utils/blocks-meta-cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AAGxB,MAAM,UAAU,GAAG,yBAAyB,CAAC;AAiB7C,SAAS,YAAY,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IACvC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IAC/C,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IAEpC,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,OAAO,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QACpC,CAAC;QAAC,MAAM,CAAC;YACP,gCAAgC;QAClC,CAAC;IACH,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAsB,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IACvE,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IACpC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IAC1C,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,IAAY,EACZ,IAA0B,EAC1B,MAA6B,EAC7B,OAAgB,EAChB,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IAEnB,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IAEjC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG;QACnB,IAAI;QACJ,QAAQ,EAAE,MAAM,EAAE,QAAQ;QAC1B,IAAI,EAAE,MAAM,EAAE,IAAI;QAClB,WAAW,EAAE,MAAM,EAAE,IAAI;QACzB,WAAW,EAAE,MAAM,EAAE,WAAW;QAChC,OAAO;QACP,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAC;IAEF,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAY,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IACpE,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IACjC,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1B,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IAC5D,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IACjC,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IACrD,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IAErC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAC3C,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IAC/C,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAE/B,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAC3C,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;AACjC,CAAC"}
|
package/dist/utils/builder.d.ts
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { FieldTypeDefinition } from "./field-schema.js";
|
|
2
|
-
export interface BuildOptions {
|
|
3
|
-
/** Framework (default: "react") */
|
|
4
|
-
framework?: string;
|
|
5
|
-
/** Enable minification (default: true for production, false for dev) */
|
|
6
|
-
minify?: boolean;
|
|
7
|
-
/** Enable sourcemaps (default: true) */
|
|
8
|
-
sourcemap?: boolean;
|
|
9
|
-
/** Output mode: "versioned" or "flat" (default: "versioned") */
|
|
10
|
-
outputMode?: "versioned" | "flat";
|
|
11
|
-
/** Generate package.json with cmssy metadata (default: true) */
|
|
12
|
-
generatePackageJson?: boolean;
|
|
13
|
-
/** Generate TypeScript types (default: true) */
|
|
14
|
-
generateTypes?: boolean;
|
|
15
|
-
/** Throw errors or warn (default: true for build, false for dev) */
|
|
16
|
-
strict?: boolean;
|
|
17
|
-
/** Field type definitions from backend (for type generation) */
|
|
18
|
-
fieldTypes?: FieldTypeDefinition[];
|
|
19
|
-
}
|
|
20
|
-
export interface BuildableResource {
|
|
21
|
-
type: "block" | "template";
|
|
22
|
-
name: string;
|
|
23
|
-
path: string;
|
|
24
|
-
packageJson?: any;
|
|
25
|
-
blockConfig?: any;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Build a resource (block or template) with configurable options.
|
|
29
|
-
* Supports 2 modes:
|
|
30
|
-
* - Production mode (build): versioned output, minified, generates package.json
|
|
31
|
-
* - Development mode (dev): flat output, not minified, no package.json
|
|
32
|
-
*/
|
|
33
|
-
export declare function buildResource(resource: BuildableResource, outDir: string, options?: BuildOptions): Promise<void>;
|
|
34
|
-
//# sourceMappingURL=builder.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/utils/builder.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAGxD,MAAM,WAAW,YAAY;IAC3B,mCAAmC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,wCAAwC;IACxC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gEAAgE;IAChE,UAAU,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC;IAClC,gEAAgE;IAChE,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,gDAAgD;IAChD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,oEAAoE;IACpE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,gEAAgE;IAChE,UAAU,CAAC,EAAE,mBAAmB,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,OAAO,GAAG,UAAU,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB,WAAW,CAAC,EAAE,GAAG,CAAC;CACnB;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,CACjC,QAAQ,EAAE,iBAAiB,EAC3B,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,IAAI,CAAC,CAqHf"}
|
package/dist/utils/builder.js
DELETED
|
@@ -1,140 +0,0 @@
|
|
|
1
|
-
import chalk from "chalk";
|
|
2
|
-
import { build as esbuild } from "esbuild";
|
|
3
|
-
import { execSync } from "child_process";
|
|
4
|
-
import fs from "fs-extra";
|
|
5
|
-
import path from "path";
|
|
6
|
-
import { generateTypes } from "./type-generator.js";
|
|
7
|
-
/**
|
|
8
|
-
* Build a resource (block or template) with configurable options.
|
|
9
|
-
* Supports 2 modes:
|
|
10
|
-
* - Production mode (build): versioned output, minified, generates package.json
|
|
11
|
-
* - Development mode (dev): flat output, not minified, no package.json
|
|
12
|
-
*/
|
|
13
|
-
export async function buildResource(resource, outDir, options = {}) {
|
|
14
|
-
const { framework = "react", minify = true, sourcemap = true, outputMode = "versioned", generatePackageJson = true, generateTypes: shouldGenerateTypes = true, strict = true, fieldTypes, } = options;
|
|
15
|
-
const srcPath = path.join(resource.path, "src");
|
|
16
|
-
const entryPoint = framework === "react"
|
|
17
|
-
? path.join(srcPath, "index.tsx")
|
|
18
|
-
: path.join(srcPath, "index.ts");
|
|
19
|
-
// Check entry point exists
|
|
20
|
-
if (!fs.existsSync(entryPoint)) {
|
|
21
|
-
const message = `Entry point not found: ${entryPoint}`;
|
|
22
|
-
if (strict) {
|
|
23
|
-
throw new Error(message);
|
|
24
|
-
}
|
|
25
|
-
else {
|
|
26
|
-
console.warn(chalk.yellow(`Warning: ${message}`));
|
|
27
|
-
return;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
// Determine output paths based on mode
|
|
31
|
-
let destDir;
|
|
32
|
-
let outFile;
|
|
33
|
-
let outCssFile = null;
|
|
34
|
-
if (outputMode === "versioned") {
|
|
35
|
-
// Production: public/@vendor/blocks.hero/1.0.0/
|
|
36
|
-
if (!resource.packageJson || !resource.packageJson.name || !resource.packageJson.version) {
|
|
37
|
-
const message = `Resource "${resource.name}" requires package.json with name and version for versioned output`;
|
|
38
|
-
if (strict) {
|
|
39
|
-
throw new Error(message);
|
|
40
|
-
}
|
|
41
|
-
else {
|
|
42
|
-
console.warn(chalk.yellow(`Warning: ${message}`));
|
|
43
|
-
return;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
const packageName = resource.packageJson.name;
|
|
47
|
-
const version = resource.packageJson.version;
|
|
48
|
-
destDir = path.join(outDir, packageName, version);
|
|
49
|
-
outFile = path.join(destDir, "index.js");
|
|
50
|
-
outCssFile = path.join(destDir, "index.css");
|
|
51
|
-
fs.mkdirSync(destDir, { recursive: true });
|
|
52
|
-
}
|
|
53
|
-
else {
|
|
54
|
-
// Development: .cmssy/dev/block.hero.js
|
|
55
|
-
destDir = outDir;
|
|
56
|
-
outFile = path.join(outDir, `${resource.type}.${resource.name}.js`);
|
|
57
|
-
outCssFile = path.join(outDir, `${resource.type}.${resource.name}.css`);
|
|
58
|
-
fs.mkdirSync(destDir, { recursive: true });
|
|
59
|
-
}
|
|
60
|
-
// Build JavaScript with esbuild
|
|
61
|
-
try {
|
|
62
|
-
await esbuild({
|
|
63
|
-
entryPoints: [entryPoint],
|
|
64
|
-
bundle: true,
|
|
65
|
-
format: "esm",
|
|
66
|
-
outfile: outFile,
|
|
67
|
-
jsx: "transform",
|
|
68
|
-
minify,
|
|
69
|
-
sourcemap,
|
|
70
|
-
target: "es2020",
|
|
71
|
-
loader: { ".css": "empty" }, // Ignore CSS imports (CSS is handled separately)
|
|
72
|
-
// Note: React is bundled for dev because browser ES modules can't resolve bare imports
|
|
73
|
-
// Production builds (publish.ts) externalize React since SSR/BlockRenderer provide it
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
catch (error) {
|
|
77
|
-
const message = `Build error for ${resource.name}`;
|
|
78
|
-
if (strict) {
|
|
79
|
-
throw error;
|
|
80
|
-
}
|
|
81
|
-
else {
|
|
82
|
-
console.error(chalk.red(`${message}:`), error);
|
|
83
|
-
return;
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
// Process CSS if exists
|
|
87
|
-
const cssPath = path.join(srcPath, "index.css");
|
|
88
|
-
if (fs.existsSync(cssPath) && outCssFile) {
|
|
89
|
-
await processCSS(cssPath, outCssFile, minify, resource.name, strict);
|
|
90
|
-
}
|
|
91
|
-
// Generate minimal package.json (production mode)
|
|
92
|
-
if (generatePackageJson && outputMode === "versioned") {
|
|
93
|
-
// Only include essential fields - metadata is sent during publish, not stored in build
|
|
94
|
-
const outputPackageJson = {
|
|
95
|
-
name: resource.packageJson?.name || "",
|
|
96
|
-
version: resource.packageJson?.version || "1.0.0",
|
|
97
|
-
description: resource.packageJson?.description || "",
|
|
98
|
-
author: resource.packageJson?.author || { name: "", email: "" },
|
|
99
|
-
};
|
|
100
|
-
fs.writeFileSync(path.join(destDir, "package.json"), JSON.stringify(outputPackageJson, null, 2) + "\n");
|
|
101
|
-
}
|
|
102
|
-
// Generate TypeScript types (only for blocks with schema, not templates with pages)
|
|
103
|
-
if (shouldGenerateTypes && resource.blockConfig?.schema) {
|
|
104
|
-
await generateTypes({
|
|
105
|
-
blockPath: resource.path,
|
|
106
|
-
schema: resource.blockConfig.schema,
|
|
107
|
-
fieldTypes,
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* Process CSS with PostCSS (if config exists) or copy as-is
|
|
113
|
-
*/
|
|
114
|
-
async function processCSS(cssPath, outCssFile, minify, resourceName, strict) {
|
|
115
|
-
const postcssConfigPath = path.join(process.cwd(), "postcss.config.js");
|
|
116
|
-
if (fs.existsSync(postcssConfigPath)) {
|
|
117
|
-
// Use PostCSS to process CSS (includes Tailwind)
|
|
118
|
-
try {
|
|
119
|
-
const minifyFlag = minify ? " --no-map" : "";
|
|
120
|
-
execSync(`npx postcss "${cssPath}" -o "${outCssFile}"${minifyFlag}`, {
|
|
121
|
-
stdio: "pipe",
|
|
122
|
-
cwd: process.cwd(),
|
|
123
|
-
});
|
|
124
|
-
}
|
|
125
|
-
catch (error) {
|
|
126
|
-
const message = `PostCSS processing failed for ${resourceName}: ${error.message}`;
|
|
127
|
-
if (strict) {
|
|
128
|
-
throw new Error(message);
|
|
129
|
-
}
|
|
130
|
-
console.warn(chalk.yellow(`Warning: ${message}`));
|
|
131
|
-
console.log(chalk.gray("Copying CSS as-is..."));
|
|
132
|
-
fs.copyFileSync(cssPath, outCssFile);
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
else {
|
|
136
|
-
// No PostCSS config - just copy CSS
|
|
137
|
-
fs.copyFileSync(cssPath, outCssFile);
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
//# sourceMappingURL=builder.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/utils/builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
export interface CmssyConfig {
|
|
2
|
-
framework: string;
|
|
3
|
-
projectName?: string;
|
|
4
|
-
author?: {
|
|
5
|
-
name: string;
|
|
6
|
-
email: string;
|
|
7
|
-
};
|
|
8
|
-
build?: {
|
|
9
|
-
outDir: string;
|
|
10
|
-
minify: boolean;
|
|
11
|
-
sourcemap: boolean;
|
|
12
|
-
};
|
|
13
|
-
}
|
|
14
|
-
export declare function loadConfig(): Promise<CmssyConfig>;
|
|
15
|
-
export declare function getPackageJson(packagePath: string): any;
|
|
16
|
-
//# sourceMappingURL=cmssy-config.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cmssy-config.d.ts","sourceRoot":"","sources":["../../src/utils/cmssy-config.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,KAAK,CAAC,EAAE;QACN,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,OAAO,CAAC;QAChB,SAAS,EAAE,OAAO,CAAC;KACpB,CAAC;CACH;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,WAAW,CAAC,CAYvD;AAED,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,OAMjD"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import fs from "fs-extra";
|
|
2
|
-
import path from "path";
|
|
3
|
-
export async function loadConfig() {
|
|
4
|
-
const configPath = path.join(process.cwd(), "cmssy.config.js");
|
|
5
|
-
if (!fs.existsSync(configPath)) {
|
|
6
|
-
throw new Error("cmssy.config.js not found. Run 'cmssy init' to create a project.");
|
|
7
|
-
}
|
|
8
|
-
// Dynamic import for ESM
|
|
9
|
-
const configModule = await import(`file://${configPath}`);
|
|
10
|
-
return configModule.default;
|
|
11
|
-
}
|
|
12
|
-
export function getPackageJson(packagePath) {
|
|
13
|
-
const pkgPath = path.join(packagePath, "package.json");
|
|
14
|
-
if (!fs.existsSync(pkgPath)) {
|
|
15
|
-
return null;
|
|
16
|
-
}
|
|
17
|
-
return fs.readJsonSync(pkgPath);
|
|
18
|
-
}
|
|
19
|
-
//# sourceMappingURL=cmssy-config.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cmssy-config.js","sourceRoot":"","sources":["../../src/utils/cmssy-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AAgBxB,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,iBAAiB,CAAC,CAAC;IAE/D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CACb,kEAAkE,CACnE,CAAC;IACJ,CAAC;IAED,yBAAyB;IACzB,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,UAAU,UAAU,EAAE,CAAC,CAAC;IAC1D,OAAO,YAAY,CAAC,OAAO,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,WAAmB;IAChD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IACvD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AAClC,CAAC"}
|
package/dist/utils/config.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
export interface CmssyConfig {
|
|
2
|
-
apiUrl: string;
|
|
3
|
-
apiToken: string | null;
|
|
4
|
-
workspaceId?: string | null;
|
|
5
|
-
}
|
|
6
|
-
export declare function loadConfig(): CmssyConfig;
|
|
7
|
-
export declare function saveConfig(config: Partial<CmssyConfig>): void;
|
|
8
|
-
export declare function hasConfig(): boolean;
|
|
9
|
-
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,wBAAgB,UAAU,IAAI,WAAW,CAaxC;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI,CAiC7D;AAED,wBAAgB,SAAS,IAAI,OAAO,CAGnC"}
|
package/dist/utils/config.js
DELETED
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import dotenv from "dotenv";
|
|
2
|
-
import fs from "fs-extra";
|
|
3
|
-
import path from "path";
|
|
4
|
-
export function loadConfig() {
|
|
5
|
-
// Load from .env in cwd
|
|
6
|
-
const envPath = path.join(process.cwd(), ".env");
|
|
7
|
-
if (fs.existsSync(envPath)) {
|
|
8
|
-
dotenv.config({ path: envPath });
|
|
9
|
-
}
|
|
10
|
-
return {
|
|
11
|
-
apiUrl: process.env.CMSSY_API_URL || "https://api.cmssy.io/graphql",
|
|
12
|
-
apiToken: process.env.CMSSY_API_TOKEN || null,
|
|
13
|
-
workspaceId: process.env.CMSSY_WORKSPACE_ID || null,
|
|
14
|
-
};
|
|
15
|
-
}
|
|
16
|
-
export function saveConfig(config) {
|
|
17
|
-
const envPath = path.join(process.cwd(), ".env");
|
|
18
|
-
const existingEnv = fs.existsSync(envPath)
|
|
19
|
-
? fs.readFileSync(envPath, "utf8")
|
|
20
|
-
: "";
|
|
21
|
-
let newEnv = existingEnv;
|
|
22
|
-
// Helper: append a key=value, ensuring a leading newline
|
|
23
|
-
function appendKey(key, value) {
|
|
24
|
-
const regex = new RegExp(`^${key}=.*$`, "m");
|
|
25
|
-
if (regex.test(newEnv)) {
|
|
26
|
-
newEnv = newEnv.replace(regex, `${key}=${value}`);
|
|
27
|
-
}
|
|
28
|
-
else {
|
|
29
|
-
// Ensure newline before appending to avoid concatenation with last line
|
|
30
|
-
if (newEnv.length > 0 && !newEnv.endsWith("\n")) {
|
|
31
|
-
newEnv += "\n";
|
|
32
|
-
}
|
|
33
|
-
newEnv += `${key}=${value}\n`;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
if (config.apiToken !== undefined) {
|
|
37
|
-
appendKey("CMSSY_API_TOKEN", config.apiToken ?? "");
|
|
38
|
-
}
|
|
39
|
-
if (config.apiUrl !== undefined) {
|
|
40
|
-
appendKey("CMSSY_API_URL", config.apiUrl);
|
|
41
|
-
}
|
|
42
|
-
if (config.workspaceId !== undefined) {
|
|
43
|
-
appendKey("CMSSY_WORKSPACE_ID", config.workspaceId ?? "");
|
|
44
|
-
}
|
|
45
|
-
fs.writeFileSync(envPath, newEnv.trim() + "\n");
|
|
46
|
-
}
|
|
47
|
-
export function hasConfig() {
|
|
48
|
-
const config = loadConfig();
|
|
49
|
-
return !!config.apiToken;
|
|
50
|
-
}
|
|
51
|
-
//# sourceMappingURL=config.js.map
|
package/dist/utils/config.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AAQxB,MAAM,UAAU,UAAU;IACxB,wBAAwB;IACxB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;IAEjD,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IACnC,CAAC;IAED,OAAO;QACL,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,8BAA8B;QACnE,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,IAAI;QAC7C,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,IAAI;KACpD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAA4B;IACrD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;IACjD,MAAM,WAAW,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;QACxC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC;QAClC,CAAC,CAAC,EAAE,CAAC;IAEP,IAAI,MAAM,GAAG,WAAW,CAAC;IAEzB,yDAAyD;IACzD,SAAS,SAAS,CAAC,GAAW,EAAE,KAAa;QAC3C,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,MAAM,EAAE,GAAG,CAAC,CAAC;QAC7C,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACvB,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC;QACpD,CAAC;aAAM,CAAC;YACN,wEAAwE;YACxE,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChD,MAAM,IAAI,IAAI,CAAC;YACjB,CAAC;YACD,MAAM,IAAI,GAAG,GAAG,IAAI,KAAK,IAAI,CAAC;QAChC,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAClC,SAAS,CAAC,iBAAiB,EAAE,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;IACtD,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAChC,SAAS,CAAC,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC;IACD,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACrC,SAAS,CAAC,oBAAoB,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,OAAO,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC3B,CAAC"}
|