cmssy-cli 0.5.1 → 0.6.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 +114 -70
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/dev.d.ts.map +1 -1
- package/dist/commands/dev.js +73 -10
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +69 -66
- 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/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 +145 -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 +5 -1
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.6.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":";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;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,OAAO,CAAC;KACb,WAAW,CACV,qEAAqE,CACtE;KACA,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,aAAa;AACb,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,gCAAgC,CAAC;KAC7C,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;KAClC,MAAM,CACL,6BAA6B,EAC7B,0CAA0C,EAC1C,OAAO,CACR;KACA,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,eAAe;AACf,MAAM,MAAM,GAAG,OAAO;KACnB,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,gCAAgC,CAAC,CAAC;AAEjD,MAAM;KACH,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,oBAAoB,CAAC;KACjC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;KAChC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAE/B,MAAM;KACH,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,4BAA4B,CAAC;KACzC,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;KACnC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAE9B,cAAc;AACd,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,gCAAgC,CAAC;KAC7C,MAAM,CAAC,yBAAyB,EAAE,kBAAkB,CAAC;KACrD,MAAM,CAAC,YAAY,CAAC,CAAC;AAExB,YAAY;AACZ,OAAO;KACJ,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,uCAAuC,CAAC;KACpD,MAAM,CAAC,mBAAmB,EAAE,aAAa,EAAE,MAAM,CAAC;KAClD,MAAM,CAAC,UAAU,CAAC,CAAC;AAEtB,kBAAkB;AAClB,OAAO;KACJ,OAAO,CAAC,WAAW,CAAC;KACpB,WAAW,CAAC,iCAAiC,CAAC;KAC9C,MAAM,CAAC,iBAAiB,EAAE,eAAe,EAAE,8BAA8B,CAAC;KAC1E,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAE5B,eAAe;AACf,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,+CAA+C,CAAC;KAC5D,MAAM,CAAC,OAAO,EAAE,iCAAiC,CAAC;KAClD,MAAM,CAAC,qBAAqB,EAAE,wBAAwB,CAAC;KACvD,MAAM,CAAC,wBAAwB,EAAE,2BAA2B,CAAC;KAC7D,MAAM,CAAC,WAAW,EAAE,mDAAmD,CAAC;KACxE,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,aAAa;AACb,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,qDAAqD,CAAC;KAClE,QAAQ,CAAC,WAAW,EAAE,kDAAkD,CAAC;KACzE,MAAM,CAAC,kBAAkB,EAAE,2BAA2B,CAAC;KACvD,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,gBAAgB;AAChB,OAAO;KACJ,OAAO,CAAC,sBAAsB,CAAC;KAC/B,WAAW,CAAC,4DAA4D,CAAC;KACzE,MAAM,CAAC,cAAc,CAAC,CAAC;AAE1B,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
@@ -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":"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"}
|
|
@@ -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,iBAiNtC;AAED,iBAAe,UAAU,CAAC,IAAI,EAAE,MAAM,iBA8LrC;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,22 @@ 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
|
-
unmount(_element, ctx) {
|
|
98
|
+
unmount(_element: HTMLElement, ctx: BlockContext): void {
|
|
92
99
|
ctx.root.unmount();
|
|
93
100
|
}
|
|
94
101
|
};
|
|
@@ -111,52 +118,68 @@ export default {
|
|
|
111
118
|
}
|
|
112
119
|
`;
|
|
113
120
|
fs.writeFileSync(path.join(blockPath, "src", "index.css"), cssFile);
|
|
114
|
-
// Create package.json
|
|
121
|
+
// Create minimal package.json
|
|
115
122
|
const packageJson = {
|
|
116
123
|
name: `@${config.projectName || "vendor"}/blocks.${name}`,
|
|
117
124
|
version: "1.0.0",
|
|
118
125
|
description: answers.description,
|
|
119
126
|
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
127
|
};
|
|
149
128
|
fs.writeFileSync(path.join(blockPath, "package.json"), JSON.stringify(packageJson, null, 2) + "\n");
|
|
129
|
+
// Create block.config.ts
|
|
130
|
+
const blockConfigContent = `import { defineBlock } from 'cmssy-cli/config';
|
|
131
|
+
|
|
132
|
+
export default defineBlock({
|
|
133
|
+
name: '${answers.displayName}',
|
|
134
|
+
description: '${answers.description}',
|
|
135
|
+
category: '${answers.category}',
|
|
136
|
+
tags: ${JSON.stringify(answers.tags)},
|
|
137
|
+
|
|
138
|
+
schema: {
|
|
139
|
+
heading: {
|
|
140
|
+
type: 'singleLine',
|
|
141
|
+
label: 'Heading',
|
|
142
|
+
required: true,
|
|
143
|
+
defaultValue: 'Heading',
|
|
144
|
+
},
|
|
145
|
+
description: {
|
|
146
|
+
type: 'multiLine',
|
|
147
|
+
label: 'Description',
|
|
148
|
+
placeholder: 'Enter description',
|
|
149
|
+
defaultValue: 'Description',
|
|
150
|
+
},
|
|
151
|
+
},
|
|
152
|
+
|
|
153
|
+
pricing: { licenseType: 'free' },
|
|
154
|
+
});
|
|
155
|
+
`;
|
|
156
|
+
fs.writeFileSync(path.join(blockPath, "block.config.ts"), blockConfigContent);
|
|
150
157
|
// Create preview.json
|
|
151
158
|
const previewData = {
|
|
152
159
|
heading: "Preview Heading",
|
|
153
160
|
description: "This is how your block will look in the preview.",
|
|
154
161
|
};
|
|
155
162
|
fs.writeFileSync(path.join(blockPath, "preview.json"), JSON.stringify(previewData, null, 2) + "\n");
|
|
163
|
+
// Generate initial types
|
|
164
|
+
const initialSchema = {
|
|
165
|
+
heading: {
|
|
166
|
+
type: "singleLine",
|
|
167
|
+
label: "Heading",
|
|
168
|
+
required: true,
|
|
169
|
+
defaultValue: "Heading",
|
|
170
|
+
},
|
|
171
|
+
description: {
|
|
172
|
+
type: "multiLine",
|
|
173
|
+
label: "Description",
|
|
174
|
+
placeholder: "Enter description",
|
|
175
|
+
defaultValue: "Description",
|
|
176
|
+
},
|
|
177
|
+
};
|
|
178
|
+
await generateTypes(blockPath, initialSchema);
|
|
156
179
|
spinner.succeed(`Block "${name}" created successfully`);
|
|
157
180
|
console.log(chalk.cyan("\nNext steps:\n"));
|
|
158
|
-
console.log(chalk.white("
|
|
159
|
-
console.log(chalk.white("
|
|
181
|
+
console.log(chalk.white(" cmssy dev # Preview your block"));
|
|
182
|
+
console.log(chalk.white(" cmssy build # Build your block\n"));
|
|
160
183
|
}
|
|
161
184
|
catch (error) {
|
|
162
185
|
spinner.fail("Failed to create block");
|
|
@@ -190,7 +213,9 @@ async function createPage(name) {
|
|
|
190
213
|
fs.mkdirSync(path.join(pagePath, "src"), { recursive: true });
|
|
191
214
|
if (config.framework === "react") {
|
|
192
215
|
const componentName = answers.displayName.replace(/\s+/g, "");
|
|
193
|
-
const componentFile = `
|
|
216
|
+
const componentFile = `import { BlockContent } from './block';
|
|
217
|
+
|
|
218
|
+
export default function ${componentName}({ content }: { content: BlockContent }) {
|
|
194
219
|
const {
|
|
195
220
|
title = 'Page Title',
|
|
196
221
|
sections = [],
|
|
@@ -214,18 +239,22 @@ async function createPage(name) {
|
|
|
214
239
|
`;
|
|
215
240
|
fs.writeFileSync(path.join(pagePath, "src", `${componentName}.tsx`), componentFile);
|
|
216
241
|
const indexFile = `import React from 'react';
|
|
217
|
-
import { createRoot } from 'react-dom/client';
|
|
242
|
+
import { createRoot, Root } from 'react-dom/client';
|
|
218
243
|
import ${componentName} from './${componentName}';
|
|
219
244
|
import './index.css';
|
|
220
245
|
|
|
246
|
+
interface BlockContext {
|
|
247
|
+
root: Root;
|
|
248
|
+
}
|
|
249
|
+
|
|
221
250
|
export default {
|
|
222
|
-
mount(element, props) {
|
|
251
|
+
mount(element: HTMLElement, props: any): BlockContext {
|
|
223
252
|
const root = createRoot(element);
|
|
224
253
|
root.render(<${componentName} content={props} />);
|
|
225
254
|
return { root };
|
|
226
255
|
},
|
|
227
256
|
|
|
228
|
-
unmount(_element, ctx) {
|
|
257
|
+
unmount(_element: HTMLElement, ctx: BlockContext): void {
|
|
229
258
|
ctx.root.unmount();
|
|
230
259
|
}
|
|
231
260
|
};
|
|
@@ -255,51 +284,66 @@ export default {
|
|
|
255
284
|
}
|
|
256
285
|
`;
|
|
257
286
|
fs.writeFileSync(path.join(pagePath, "src", "index.css"), cssFile);
|
|
287
|
+
// Create minimal package.json
|
|
258
288
|
const packageJson = {
|
|
259
289
|
name: `@${config.projectName || "vendor"}/templates.${name}`,
|
|
260
290
|
version: "1.0.0",
|
|
261
291
|
description: answers.description,
|
|
262
292
|
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
293
|
};
|
|
293
294
|
fs.writeFileSync(path.join(pagePath, "package.json"), JSON.stringify(packageJson, null, 2) + "\n");
|
|
295
|
+
// Create block.config.ts (using defineTemplate)
|
|
296
|
+
const blockConfigContent = `import { defineTemplate } from 'cmssy-cli/config';
|
|
297
|
+
|
|
298
|
+
export default defineTemplate({
|
|
299
|
+
name: '${answers.displayName}',
|
|
300
|
+
description: '${answers.description}',
|
|
301
|
+
category: 'pages',
|
|
302
|
+
|
|
303
|
+
schema: {
|
|
304
|
+
title: {
|
|
305
|
+
type: 'singleLine',
|
|
306
|
+
label: 'Page Title',
|
|
307
|
+
required: true,
|
|
308
|
+
defaultValue: 'Page Title',
|
|
309
|
+
},
|
|
310
|
+
sections: {
|
|
311
|
+
type: 'repeater',
|
|
312
|
+
label: 'Page Sections',
|
|
313
|
+
schema: {
|
|
314
|
+
// Define section fields here
|
|
315
|
+
},
|
|
316
|
+
},
|
|
317
|
+
},
|
|
318
|
+
|
|
319
|
+
pricing: { licenseType: 'free' },
|
|
320
|
+
});
|
|
321
|
+
`;
|
|
322
|
+
fs.writeFileSync(path.join(pagePath, "block.config.ts"), blockConfigContent);
|
|
294
323
|
const previewData = {
|
|
295
324
|
title: "Preview Page",
|
|
296
325
|
sections: [],
|
|
297
326
|
};
|
|
298
327
|
fs.writeFileSync(path.join(pagePath, "preview.json"), JSON.stringify(previewData, null, 2) + "\n");
|
|
328
|
+
// Generate initial types
|
|
329
|
+
const initialSchema = {
|
|
330
|
+
title: {
|
|
331
|
+
type: "singleLine",
|
|
332
|
+
label: "Page Title",
|
|
333
|
+
required: true,
|
|
334
|
+
defaultValue: "Page Title",
|
|
335
|
+
},
|
|
336
|
+
sections: {
|
|
337
|
+
type: "repeater",
|
|
338
|
+
label: "Page Sections",
|
|
339
|
+
schema: {},
|
|
340
|
+
},
|
|
341
|
+
};
|
|
342
|
+
await generateTypes(pagePath, initialSchema);
|
|
299
343
|
spinner.succeed(`Page template "${name}" created successfully`);
|
|
300
344
|
console.log(chalk.cyan("\nNext steps:\n"));
|
|
301
|
-
console.log(chalk.white("
|
|
302
|
-
console.log(chalk.white("
|
|
345
|
+
console.log(chalk.white(" cmssy dev # Preview your page"));
|
|
346
|
+
console.log(chalk.white(" cmssy build # Build your page\n"));
|
|
303
347
|
}
|
|
304
348
|
catch (error) {
|
|
305
349
|
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":"AAiBA,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,CAAC;CACd;AAcD,wBAAsB,UAAU,CAAC,OAAO,EAAE,UAAU,iBAsJnD"}
|