cmssy-cli 0.5.1 → 0.7.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/cli.js +7 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/build.d.ts.map +1 -1
- package/dist/commands/build.js +67 -8
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/create.d.ts.map +1 -1
- package/dist/commands/create.js +124 -70
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/dev.d.ts.map +1 -1
- package/dist/commands/dev.js +178 -22
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +80 -71
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/migrate.d.ts +2 -0
- package/dist/commands/migrate.d.ts.map +1 -0
- package/dist/commands/migrate.js +225 -0
- package/dist/commands/migrate.js.map +1 -0
- package/dist/dev-ui/app.js +496 -0
- package/dist/dev-ui/index.html +443 -0
- package/dist/types/block-config.d.ts +40 -0
- package/dist/types/block-config.d.ts.map +1 -0
- package/dist/types/block-config.js +3 -0
- package/dist/types/block-config.js.map +1 -0
- package/dist/utils/block-config.d.ts +10 -0
- package/dist/utils/block-config.d.ts.map +1 -0
- package/dist/utils/block-config.js +191 -0
- package/dist/utils/block-config.js.map +1 -0
- package/dist/utils/field-schema.d.ts +10 -0
- package/dist/utils/field-schema.d.ts.map +1 -0
- package/dist/utils/field-schema.js +155 -0
- package/dist/utils/field-schema.js.map +1 -0
- package/dist/utils/type-generator.d.ts +3 -0
- package/dist/utils/type-generator.d.ts.map +1 -0
- package/dist/utils/type-generator.js +67 -0
- package/dist/utils/type-generator.js.map +1 -0
- package/package.json +8 -3
package/dist/cli.js
CHANGED
|
@@ -7,11 +7,12 @@ import { deployCommand } from "./commands/deploy.js";
|
|
|
7
7
|
import { devCommand } from "./commands/dev.js";
|
|
8
8
|
import { initCommand } from "./commands/init.js";
|
|
9
9
|
import { syncCommand } from "./commands/sync.js";
|
|
10
|
+
import { migrateCommand } from "./commands/migrate.js";
|
|
10
11
|
const program = new Command();
|
|
11
12
|
program
|
|
12
13
|
.name("cmssy")
|
|
13
14
|
.description("Unified CLI for building and publishing blocks to Cmssy marketplace")
|
|
14
|
-
.version("0.
|
|
15
|
+
.version("0.7.0");
|
|
15
16
|
// cmssy init
|
|
16
17
|
program
|
|
17
18
|
.command("init")
|
|
@@ -67,5 +68,10 @@ program
|
|
|
67
68
|
.argument("[package]", "Package slug to sync (e.g., @vendor/blocks.hero)")
|
|
68
69
|
.option("--workspace <id>", "Workspace ID to sync from")
|
|
69
70
|
.action(syncCommand);
|
|
71
|
+
// cmssy migrate
|
|
72
|
+
program
|
|
73
|
+
.command("migrate [block-name]")
|
|
74
|
+
.description("Migrate from package.json cmssy section to block.config.ts")
|
|
75
|
+
.action(migrateCommand);
|
|
70
76
|
program.parse();
|
|
71
77
|
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AAeA,UAAU,YAAY;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAUD,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,iBAwDvD"}
|
package/dist/commands/build.js
CHANGED
|
@@ -5,6 +5,8 @@ import fs from "fs-extra";
|
|
|
5
5
|
import ora from "ora";
|
|
6
6
|
import path from "path";
|
|
7
7
|
import { getPackageJson, loadConfig } from "../utils/cmssy-config.js";
|
|
8
|
+
import { loadBlockConfig, validateSchema, generatePackageJsonMetadata, } from "../utils/block-config.js";
|
|
9
|
+
import { generateTypes } from "../utils/type-generator.js";
|
|
8
10
|
export async function buildCommand(options) {
|
|
9
11
|
const spinner = ora("Starting build...").start();
|
|
10
12
|
try {
|
|
@@ -61,16 +63,38 @@ async function scanResources() {
|
|
|
61
63
|
.map((dirent) => dirent.name);
|
|
62
64
|
for (const blockName of blockDirs) {
|
|
63
65
|
const blockPath = path.join(blocksDir, blockName);
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
66
|
+
// Try loading block.config.ts
|
|
67
|
+
const blockConfig = await loadBlockConfig(blockPath);
|
|
68
|
+
if (!blockConfig) {
|
|
69
|
+
// Check if package.json has cmssy (old format)
|
|
70
|
+
const pkg = getPackageJson(blockPath);
|
|
71
|
+
if (pkg && pkg.cmssy) {
|
|
72
|
+
throw new Error(`Block "${blockName}" uses legacy package.json format.\n` +
|
|
73
|
+
`Please migrate to block.config.ts.\n` +
|
|
74
|
+
`Run: cmssy migrate ${blockName}\n` +
|
|
75
|
+
`Or see migration guide: https://cmssy.io/docs/migration`);
|
|
76
|
+
}
|
|
77
|
+
console.warn(chalk.yellow(`Warning: Skipping ${blockName} - no block.config.ts found`));
|
|
67
78
|
continue;
|
|
68
79
|
}
|
|
80
|
+
// Validate schema
|
|
81
|
+
const validation = await validateSchema(blockConfig.schema, blockPath);
|
|
82
|
+
if (!validation.valid) {
|
|
83
|
+
console.error(chalk.red(`\nValidation errors in ${blockName}:`));
|
|
84
|
+
validation.errors.forEach((err) => console.error(chalk.red(` - ${err}`)));
|
|
85
|
+
throw new Error(`Schema validation failed for ${blockName}`);
|
|
86
|
+
}
|
|
87
|
+
// Load package.json for name and version
|
|
88
|
+
const pkg = getPackageJson(blockPath);
|
|
89
|
+
if (!pkg || !pkg.name || !pkg.version) {
|
|
90
|
+
throw new Error(`Block "${blockName}" must have package.json with name and version`);
|
|
91
|
+
}
|
|
69
92
|
resources.push({
|
|
70
93
|
type: "block",
|
|
71
94
|
name: blockName,
|
|
72
95
|
path: blockPath,
|
|
73
96
|
packageJson: pkg,
|
|
97
|
+
blockConfig,
|
|
74
98
|
});
|
|
75
99
|
}
|
|
76
100
|
}
|
|
@@ -83,16 +107,38 @@ async function scanResources() {
|
|
|
83
107
|
.map((dirent) => dirent.name);
|
|
84
108
|
for (const templateName of templateDirs) {
|
|
85
109
|
const templatePath = path.join(templatesDir, templateName);
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
110
|
+
// Try loading block.config.ts
|
|
111
|
+
const blockConfig = await loadBlockConfig(templatePath);
|
|
112
|
+
if (!blockConfig) {
|
|
113
|
+
// Check if package.json has cmssy (old format)
|
|
114
|
+
const pkg = getPackageJson(templatePath);
|
|
115
|
+
if (pkg && pkg.cmssy) {
|
|
116
|
+
throw new Error(`Template "${templateName}" uses legacy package.json format.\n` +
|
|
117
|
+
`Please migrate to block.config.ts.\n` +
|
|
118
|
+
`Run: cmssy migrate ${templateName}\n` +
|
|
119
|
+
`Or see migration guide: https://cmssy.io/docs/migration`);
|
|
120
|
+
}
|
|
121
|
+
console.warn(chalk.yellow(`Warning: Skipping ${templateName} - no block.config.ts found`));
|
|
89
122
|
continue;
|
|
90
123
|
}
|
|
124
|
+
// Validate schema
|
|
125
|
+
const validation = await validateSchema(blockConfig.schema, templatePath);
|
|
126
|
+
if (!validation.valid) {
|
|
127
|
+
console.error(chalk.red(`\nValidation errors in ${templateName}:`));
|
|
128
|
+
validation.errors.forEach((err) => console.error(chalk.red(` - ${err}`)));
|
|
129
|
+
throw new Error(`Schema validation failed for ${templateName}`);
|
|
130
|
+
}
|
|
131
|
+
// Load package.json for name and version
|
|
132
|
+
const pkg = getPackageJson(templatePath);
|
|
133
|
+
if (!pkg || !pkg.name || !pkg.version) {
|
|
134
|
+
throw new Error(`Template "${templateName}" must have package.json with name and version`);
|
|
135
|
+
}
|
|
91
136
|
resources.push({
|
|
92
137
|
type: "template",
|
|
93
138
|
name: templateName,
|
|
94
139
|
path: templatePath,
|
|
95
140
|
packageJson: pkg,
|
|
141
|
+
blockConfig,
|
|
96
142
|
});
|
|
97
143
|
}
|
|
98
144
|
}
|
|
@@ -147,7 +193,20 @@ async function buildResource(resource, framework, outDir, config) {
|
|
|
147
193
|
fs.copyFileSync(cssPath, outCssFile);
|
|
148
194
|
}
|
|
149
195
|
}
|
|
150
|
-
//
|
|
151
|
-
|
|
196
|
+
// Generate package.json with cmssy metadata from block.config.ts
|
|
197
|
+
if (resource.blockConfig) {
|
|
198
|
+
const cmssyMetadata = generatePackageJsonMetadata(resource.blockConfig, resource.type);
|
|
199
|
+
const outputPackageJson = {
|
|
200
|
+
...resource.packageJson,
|
|
201
|
+
cmssy: cmssyMetadata,
|
|
202
|
+
};
|
|
203
|
+
fs.writeFileSync(path.join(destDir, "package.json"), JSON.stringify(outputPackageJson, null, 2) + "\n");
|
|
204
|
+
// Generate TypeScript types
|
|
205
|
+
await generateTypes(resource.path, resource.blockConfig.schema);
|
|
206
|
+
}
|
|
207
|
+
else {
|
|
208
|
+
// Fallback: copy package.json as-is (shouldn't happen after migration)
|
|
209
|
+
fs.copyFileSync(path.join(resource.path, "package.json"), path.join(destDir, "package.json"));
|
|
210
|
+
}
|
|
152
211
|
}
|
|
153
212
|
//# sourceMappingURL=build.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,KAAK,IAAI,OAAO,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,KAAK,IAAI,OAAO,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EACL,eAAe,EACf,cAAc,EACd,2BAA2B,GAC5B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAe3D,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAqB;IACtD,MAAM,OAAO,GAAG,GAAG,CAAC,mBAAmB,CAAC,CAAC,KAAK,EAAE,CAAC;IAEjD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;QAClC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC;QAExD,gCAAgC;QAChC,MAAM,SAAS,GAAG,MAAM,aAAa,EAAE,CAAC;QAExC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;YAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,OAAO,CAAC,IAAI,GAAG,YAAY,SAAS,CAAC,MAAM,eAAe,CAAC;QAE3D,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,IAAI,QAAQ,CAAC,CAAC;QAE1E,yBAAyB;QACzB,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACxB,CAAC;QACD,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE1C,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,IAAI,UAAU,GAAG,CAAC,CAAC;QAEnB,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC;gBACH,MAAM,aAAa,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;gBACzD,YAAY,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,KAAK,CACT,OAAO,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,CACnE,CACF,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,UAAU,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;QAED,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;YACrB,OAAO,CAAC,OAAO,CAAC,mBAAmB,YAAY,kBAAkB,CAAC,CAAC;YACnE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,MAAM,IAAI,CAAC,CAAC,CAAC;QAC7D,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CACV,gCAAgC,YAAY,eAAe,UAAU,SAAS,CAC/E,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC7B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC;QAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,aAAa;IAC1B,MAAM,SAAS,GAAe,EAAE,CAAC;IAEjC,cAAc;IACd,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;IACrD,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,EAAE;aACjB,WAAW,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;aAC/C,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;aACxC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAEhC,KAAK,MAAM,SAAS,IAAI,SAAS,EAAE,CAAC;YAClC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YAElD,8BAA8B;YAC9B,MAAM,WAAW,GAAG,MAAM,eAAe,CAAC,SAAS,CAAC,CAAC;YAErD,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,+CAA+C;gBAC/C,MAAM,GAAG,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;gBACtC,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;oBACrB,MAAM,IAAI,KAAK,CACb,UAAU,SAAS,sCAAsC;wBACvD,sCAAsC;wBACtC,sBAAsB,SAAS,IAAI;wBACnC,yDAAyD,CAC5D,CAAC;gBACJ,CAAC;gBAED,OAAO,CAAC,IAAI,CACV,KAAK,CAAC,MAAM,CACV,qBAAqB,SAAS,6BAA6B,CAC5D,CACF,CAAC;gBACF,SAAS;YACX,CAAC;YAED,kBAAkB;YAClB,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YACvE,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;gBACtB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,0BAA0B,SAAS,GAAG,CAAC,CAAC,CAAC;gBACjE,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC3E,MAAM,IAAI,KAAK,CAAC,gCAAgC,SAAS,EAAE,CAAC,CAAC;YAC/D,CAAC;YAED,yCAAyC;YACzC,MAAM,GAAG,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;YACtC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;gBACtC,MAAM,IAAI,KAAK,CACb,UAAU,SAAS,gDAAgD,CACpE,CAAC;YACJ,CAAC;YAED,SAAS,CAAC,IAAI,CAAC;gBACb,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,GAAG;gBAChB,WAAW;aACZ,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,iBAAiB;IACjB,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC;IAC3D,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAChC,MAAM,YAAY,GAAG,EAAE;aACpB,WAAW,CAAC,YAAY,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;aAClD,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;aACxC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAEhC,KAAK,MAAM,YAAY,IAAI,YAAY,EAAE,CAAC;YACxC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;YAE3D,8BAA8B;YAC9B,MAAM,WAAW,GAAG,MAAM,eAAe,CAAC,YAAY,CAAC,CAAC;YAExD,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,+CAA+C;gBAC/C,MAAM,GAAG,GAAG,cAAc,CAAC,YAAY,CAAC,CAAC;gBACzC,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;oBACrB,MAAM,IAAI,KAAK,CACb,aAAa,YAAY,sCAAsC;wBAC7D,sCAAsC;wBACtC,sBAAsB,YAAY,IAAI;wBACtC,yDAAyD,CAC5D,CAAC;gBACJ,CAAC;gBAED,OAAO,CAAC,IAAI,CACV,KAAK,CAAC,MAAM,CACV,qBAAqB,YAAY,6BAA6B,CAC/D,CACF,CAAC;gBACF,SAAS;YACX,CAAC;YAED,kBAAkB;YAClB,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;YAC1E,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;gBACtB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,0BAA0B,YAAY,GAAG,CAAC,CAAC,CAAC;gBACpE,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC3E,MAAM,IAAI,KAAK,CAAC,gCAAgC,YAAY,EAAE,CAAC,CAAC;YAClE,CAAC;YAED,yCAAyC;YACzC,MAAM,GAAG,GAAG,cAAc,CAAC,YAAY,CAAC,CAAC;YACzC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;gBACtC,MAAM,IAAI,KAAK,CACb,aAAa,YAAY,gDAAgD,CAC1E,CAAC;YACJ,CAAC;YAED,SAAS,CAAC,IAAI,CAAC;gBACb,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,YAAY;gBAClB,IAAI,EAAE,YAAY;gBAClB,WAAW,EAAE,GAAG;gBAChB,WAAW;aACZ,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,KAAK,UAAU,aAAa,CAC1B,QAAkB,EAClB,SAAiB,EACjB,MAAc,EACd,MAAW;IAEX,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAChD,MAAM,UAAU,GACd,SAAS,KAAK,OAAO;QACnB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC;QACjC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAErC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,0BAA0B,UAAU,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,oCAAoC;IACpC,6CAA6C;IAC7C,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC;IAC9C,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC;IAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IAExD,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE3C,mBAAmB;IACnB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAE/C,MAAM,OAAO,CAAC;QACZ,WAAW,EAAE,CAAC,UAAU,CAAC;QACzB,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,OAAO;QAChB,GAAG,EAAE,WAAW;QAChB,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,IAAI,IAAI;QACpC,SAAS,EAAE,MAAM,CAAC,KAAK,EAAE,SAAS,IAAI,IAAI;QAC1C,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,CAAC,OAAO,CAAC;KACpB,CAAC,CAAC;IAEH,qCAAqC;IACrC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAChD,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAEnD,uDAAuD;QACvD,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,mBAAmB,CAAC,CAAC;QAExE,IAAI,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACrC,iDAAiD;YACjD,IAAI,CAAC;gBACH,QAAQ,CACN,gBAAgB,OAAO,SAAS,UAAU,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,EACvF,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CACtC,CAAC;YACJ,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,uCAAuC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBACnF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;gBAChD,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,oCAAoC;YACpC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED,iEAAiE;IACjE,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;QACzB,MAAM,aAAa,GAAG,2BAA2B,CAC/C,QAAQ,CAAC,WAAW,EACpB,QAAQ,CAAC,IAAI,CACd,CAAC;QAEF,MAAM,iBAAiB,GAAG;YACxB,GAAG,QAAQ,CAAC,WAAW;YACvB,KAAK,EAAE,aAAa;SACrB,CAAC;QAEF,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,EAClC,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAClD,CAAC;QAEF,4BAA4B;QAC5B,MAAM,aAAa,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAClE,CAAC;SAAM,CAAC;QACN,uEAAuE;QACvE,EAAE,CAAC,YAAY,CACb,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC,EACxC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CACnC,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAQA,iBAAe,WAAW,CAAC,IAAI,EAAE,MAAM,iBAsNtC;AAED,iBAAe,UAAU,CAAC,IAAI,EAAE,MAAM,iBAmMrC;AAED,eAAO,MAAM,aAAa;;;CAGzB,CAAC"}
|
package/dist/commands/create.js
CHANGED
|
@@ -4,6 +4,7 @@ import inquirer from "inquirer";
|
|
|
4
4
|
import ora from "ora";
|
|
5
5
|
import path from "path";
|
|
6
6
|
import { loadConfig } from "../utils/cmssy-config.js";
|
|
7
|
+
import { generateTypes } from "../utils/type-generator.js";
|
|
7
8
|
async function createBlock(name) {
|
|
8
9
|
const spinner = ora("Creating block...").start();
|
|
9
10
|
try {
|
|
@@ -60,7 +61,9 @@ async function createBlock(name) {
|
|
|
60
61
|
// Create component file based on framework
|
|
61
62
|
if (config.framework === "react") {
|
|
62
63
|
const componentName = answers.displayName.replace(/\s+/g, "");
|
|
63
|
-
const componentFile = `
|
|
64
|
+
const componentFile = `import { BlockContent } from './block';
|
|
65
|
+
|
|
66
|
+
export default function ${componentName}({ content }: { content: BlockContent }) {
|
|
64
67
|
const {
|
|
65
68
|
heading = 'Heading',
|
|
66
69
|
description = 'Description',
|
|
@@ -77,18 +80,27 @@ async function createBlock(name) {
|
|
|
77
80
|
fs.writeFileSync(path.join(blockPath, "src", `${componentName}.tsx`), componentFile);
|
|
78
81
|
// Create index file with mount/unmount
|
|
79
82
|
const indexFile = `import React from 'react';
|
|
80
|
-
import { createRoot } from 'react-dom/client';
|
|
83
|
+
import { createRoot, Root } from 'react-dom/client';
|
|
81
84
|
import ${componentName} from './${componentName}';
|
|
82
85
|
import './index.css';
|
|
83
86
|
|
|
87
|
+
interface BlockContext {
|
|
88
|
+
root: Root;
|
|
89
|
+
}
|
|
90
|
+
|
|
84
91
|
export default {
|
|
85
|
-
mount(element, props) {
|
|
92
|
+
mount(element: HTMLElement, props: any): BlockContext {
|
|
86
93
|
const root = createRoot(element);
|
|
87
94
|
root.render(<${componentName} content={props} />);
|
|
88
95
|
return { root };
|
|
89
96
|
},
|
|
90
97
|
|
|
91
|
-
|
|
98
|
+
update(_element: HTMLElement, props: any, ctx: BlockContext): void {
|
|
99
|
+
// Re-render with new props (no unmount = no blink!)
|
|
100
|
+
ctx.root.render(<${componentName} content={props} />);
|
|
101
|
+
},
|
|
102
|
+
|
|
103
|
+
unmount(_element: HTMLElement, ctx: BlockContext): void {
|
|
92
104
|
ctx.root.unmount();
|
|
93
105
|
}
|
|
94
106
|
};
|
|
@@ -111,52 +123,68 @@ export default {
|
|
|
111
123
|
}
|
|
112
124
|
`;
|
|
113
125
|
fs.writeFileSync(path.join(blockPath, "src", "index.css"), cssFile);
|
|
114
|
-
// Create package.json
|
|
126
|
+
// Create minimal package.json
|
|
115
127
|
const packageJson = {
|
|
116
128
|
name: `@${config.projectName || "vendor"}/blocks.${name}`,
|
|
117
129
|
version: "1.0.0",
|
|
118
130
|
description: answers.description,
|
|
119
131
|
author: config.author,
|
|
120
|
-
cmssy: {
|
|
121
|
-
packageType: "block",
|
|
122
|
-
displayName: answers.displayName,
|
|
123
|
-
category: answers.category,
|
|
124
|
-
tags: answers.tags,
|
|
125
|
-
pricing: {
|
|
126
|
-
licenseType: "free",
|
|
127
|
-
},
|
|
128
|
-
schemaFields: [
|
|
129
|
-
{
|
|
130
|
-
key: "heading",
|
|
131
|
-
type: "text",
|
|
132
|
-
label: "Heading",
|
|
133
|
-
required: true,
|
|
134
|
-
placeholder: "Enter heading",
|
|
135
|
-
},
|
|
136
|
-
{
|
|
137
|
-
key: "description",
|
|
138
|
-
type: "text",
|
|
139
|
-
label: "Description",
|
|
140
|
-
placeholder: "Enter description",
|
|
141
|
-
},
|
|
142
|
-
],
|
|
143
|
-
defaultContent: {
|
|
144
|
-
heading: "Heading",
|
|
145
|
-
description: "Description",
|
|
146
|
-
},
|
|
147
|
-
},
|
|
148
132
|
};
|
|
149
133
|
fs.writeFileSync(path.join(blockPath, "package.json"), JSON.stringify(packageJson, null, 2) + "\n");
|
|
134
|
+
// Create block.config.ts
|
|
135
|
+
const blockConfigContent = `import { defineBlock } from 'cmssy-cli/config';
|
|
136
|
+
|
|
137
|
+
export default defineBlock({
|
|
138
|
+
name: '${answers.displayName}',
|
|
139
|
+
description: '${answers.description}',
|
|
140
|
+
category: '${answers.category}',
|
|
141
|
+
tags: ${JSON.stringify(answers.tags)},
|
|
142
|
+
|
|
143
|
+
schema: {
|
|
144
|
+
heading: {
|
|
145
|
+
type: 'singleLine',
|
|
146
|
+
label: 'Heading',
|
|
147
|
+
required: true,
|
|
148
|
+
defaultValue: 'Heading',
|
|
149
|
+
},
|
|
150
|
+
description: {
|
|
151
|
+
type: 'multiLine',
|
|
152
|
+
label: 'Description',
|
|
153
|
+
placeholder: 'Enter description',
|
|
154
|
+
defaultValue: 'Description',
|
|
155
|
+
},
|
|
156
|
+
},
|
|
157
|
+
|
|
158
|
+
pricing: { licenseType: 'free' },
|
|
159
|
+
});
|
|
160
|
+
`;
|
|
161
|
+
fs.writeFileSync(path.join(blockPath, "block.config.ts"), blockConfigContent);
|
|
150
162
|
// Create preview.json
|
|
151
163
|
const previewData = {
|
|
152
164
|
heading: "Preview Heading",
|
|
153
165
|
description: "This is how your block will look in the preview.",
|
|
154
166
|
};
|
|
155
167
|
fs.writeFileSync(path.join(blockPath, "preview.json"), JSON.stringify(previewData, null, 2) + "\n");
|
|
168
|
+
// Generate initial types
|
|
169
|
+
const initialSchema = {
|
|
170
|
+
heading: {
|
|
171
|
+
type: "singleLine",
|
|
172
|
+
label: "Heading",
|
|
173
|
+
required: true,
|
|
174
|
+
defaultValue: "Heading",
|
|
175
|
+
},
|
|
176
|
+
description: {
|
|
177
|
+
type: "multiLine",
|
|
178
|
+
label: "Description",
|
|
179
|
+
placeholder: "Enter description",
|
|
180
|
+
defaultValue: "Description",
|
|
181
|
+
},
|
|
182
|
+
};
|
|
183
|
+
await generateTypes(blockPath, initialSchema);
|
|
156
184
|
spinner.succeed(`Block "${name}" created successfully`);
|
|
157
185
|
console.log(chalk.cyan("\nNext steps:\n"));
|
|
158
|
-
console.log(chalk.white("
|
|
159
|
-
console.log(chalk.white("
|
|
186
|
+
console.log(chalk.white(" cmssy dev # Preview your block"));
|
|
187
|
+
console.log(chalk.white(" cmssy build # Build your block\n"));
|
|
160
188
|
}
|
|
161
189
|
catch (error) {
|
|
162
190
|
spinner.fail("Failed to create block");
|
|
@@ -190,7 +218,9 @@ async function createPage(name) {
|
|
|
190
218
|
fs.mkdirSync(path.join(pagePath, "src"), { recursive: true });
|
|
191
219
|
if (config.framework === "react") {
|
|
192
220
|
const componentName = answers.displayName.replace(/\s+/g, "");
|
|
193
|
-
const componentFile = `
|
|
221
|
+
const componentFile = `import { BlockContent } from './block';
|
|
222
|
+
|
|
223
|
+
export default function ${componentName}({ content }: { content: BlockContent }) {
|
|
194
224
|
const {
|
|
195
225
|
title = 'Page Title',
|
|
196
226
|
sections = [],
|
|
@@ -214,18 +244,27 @@ async function createPage(name) {
|
|
|
214
244
|
`;
|
|
215
245
|
fs.writeFileSync(path.join(pagePath, "src", `${componentName}.tsx`), componentFile);
|
|
216
246
|
const indexFile = `import React from 'react';
|
|
217
|
-
import { createRoot } from 'react-dom/client';
|
|
247
|
+
import { createRoot, Root } from 'react-dom/client';
|
|
218
248
|
import ${componentName} from './${componentName}';
|
|
219
249
|
import './index.css';
|
|
220
250
|
|
|
251
|
+
interface BlockContext {
|
|
252
|
+
root: Root;
|
|
253
|
+
}
|
|
254
|
+
|
|
221
255
|
export default {
|
|
222
|
-
mount(element, props) {
|
|
256
|
+
mount(element: HTMLElement, props: any): BlockContext {
|
|
223
257
|
const root = createRoot(element);
|
|
224
258
|
root.render(<${componentName} content={props} />);
|
|
225
259
|
return { root };
|
|
226
260
|
},
|
|
227
261
|
|
|
228
|
-
|
|
262
|
+
update(_element: HTMLElement, props: any, ctx: BlockContext): void {
|
|
263
|
+
// Re-render with new props (no unmount = no blink!)
|
|
264
|
+
ctx.root.render(<${componentName} content={props} />);
|
|
265
|
+
},
|
|
266
|
+
|
|
267
|
+
unmount(_element: HTMLElement, ctx: BlockContext): void {
|
|
229
268
|
ctx.root.unmount();
|
|
230
269
|
}
|
|
231
270
|
};
|
|
@@ -255,51 +294,66 @@ export default {
|
|
|
255
294
|
}
|
|
256
295
|
`;
|
|
257
296
|
fs.writeFileSync(path.join(pagePath, "src", "index.css"), cssFile);
|
|
297
|
+
// Create minimal package.json
|
|
258
298
|
const packageJson = {
|
|
259
299
|
name: `@${config.projectName || "vendor"}/templates.${name}`,
|
|
260
300
|
version: "1.0.0",
|
|
261
301
|
description: answers.description,
|
|
262
302
|
author: config.author,
|
|
263
|
-
cmssy: {
|
|
264
|
-
packageType: "template",
|
|
265
|
-
displayName: answers.displayName,
|
|
266
|
-
category: "pages",
|
|
267
|
-
pricing: {
|
|
268
|
-
licenseType: "free",
|
|
269
|
-
},
|
|
270
|
-
schemaFields: [
|
|
271
|
-
{
|
|
272
|
-
key: "title",
|
|
273
|
-
type: "text",
|
|
274
|
-
label: "Page Title",
|
|
275
|
-
required: true,
|
|
276
|
-
placeholder: "Enter page title",
|
|
277
|
-
},
|
|
278
|
-
{
|
|
279
|
-
key: "sections",
|
|
280
|
-
type: "array",
|
|
281
|
-
label: "Page Sections",
|
|
282
|
-
itemSchema: {
|
|
283
|
-
type: "object",
|
|
284
|
-
},
|
|
285
|
-
},
|
|
286
|
-
],
|
|
287
|
-
defaultContent: {
|
|
288
|
-
title: "Page Title",
|
|
289
|
-
sections: [],
|
|
290
|
-
},
|
|
291
|
-
},
|
|
292
303
|
};
|
|
293
304
|
fs.writeFileSync(path.join(pagePath, "package.json"), JSON.stringify(packageJson, null, 2) + "\n");
|
|
305
|
+
// Create block.config.ts (using defineTemplate)
|
|
306
|
+
const blockConfigContent = `import { defineTemplate } from 'cmssy-cli/config';
|
|
307
|
+
|
|
308
|
+
export default defineTemplate({
|
|
309
|
+
name: '${answers.displayName}',
|
|
310
|
+
description: '${answers.description}',
|
|
311
|
+
category: 'pages',
|
|
312
|
+
|
|
313
|
+
schema: {
|
|
314
|
+
title: {
|
|
315
|
+
type: 'singleLine',
|
|
316
|
+
label: 'Page Title',
|
|
317
|
+
required: true,
|
|
318
|
+
defaultValue: 'Page Title',
|
|
319
|
+
},
|
|
320
|
+
sections: {
|
|
321
|
+
type: 'repeater',
|
|
322
|
+
label: 'Page Sections',
|
|
323
|
+
schema: {
|
|
324
|
+
// Define section fields here
|
|
325
|
+
},
|
|
326
|
+
},
|
|
327
|
+
},
|
|
328
|
+
|
|
329
|
+
pricing: { licenseType: 'free' },
|
|
330
|
+
});
|
|
331
|
+
`;
|
|
332
|
+
fs.writeFileSync(path.join(pagePath, "block.config.ts"), blockConfigContent);
|
|
294
333
|
const previewData = {
|
|
295
334
|
title: "Preview Page",
|
|
296
335
|
sections: [],
|
|
297
336
|
};
|
|
298
337
|
fs.writeFileSync(path.join(pagePath, "preview.json"), JSON.stringify(previewData, null, 2) + "\n");
|
|
338
|
+
// Generate initial types
|
|
339
|
+
const initialSchema = {
|
|
340
|
+
title: {
|
|
341
|
+
type: "singleLine",
|
|
342
|
+
label: "Page Title",
|
|
343
|
+
required: true,
|
|
344
|
+
defaultValue: "Page Title",
|
|
345
|
+
},
|
|
346
|
+
sections: {
|
|
347
|
+
type: "repeater",
|
|
348
|
+
label: "Page Sections",
|
|
349
|
+
schema: {},
|
|
350
|
+
},
|
|
351
|
+
};
|
|
352
|
+
await generateTypes(pagePath, initialSchema);
|
|
299
353
|
spinner.succeed(`Page template "${name}" created successfully`);
|
|
300
354
|
console.log(chalk.cyan("\nNext steps:\n"));
|
|
301
|
-
console.log(chalk.white("
|
|
302
|
-
console.log(chalk.white("
|
|
355
|
+
console.log(chalk.white(" cmssy dev # Preview your page"));
|
|
356
|
+
console.log(chalk.white(" cmssy build # Build your page\n"));
|
|
303
357
|
}
|
|
304
358
|
catch (error) {
|
|
305
359
|
spinner.fail("Failed to create page template");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AAkBA,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,CAAC;CACd;AAcD,wBAAsB,UAAU,CAAC,OAAO,EAAE,UAAU,iBAgOnD"}
|