cmssy-cli 0.6.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/README.md +382 -36
  2. package/dist/cli.js +29 -10
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/create.d.ts.map +1 -1
  5. package/dist/commands/create.js +10 -0
  6. package/dist/commands/create.js.map +1 -1
  7. package/dist/commands/dev.d.ts.map +1 -1
  8. package/dist/commands/dev.js +251 -12
  9. package/dist/commands/dev.js.map +1 -1
  10. package/dist/commands/init.d.ts.map +1 -1
  11. package/dist/commands/init.js +32 -22
  12. package/dist/commands/init.js.map +1 -1
  13. package/dist/commands/package.d.ts +7 -0
  14. package/dist/commands/package.d.ts.map +1 -0
  15. package/dist/commands/package.js +161 -0
  16. package/dist/commands/package.js.map +1 -0
  17. package/dist/commands/publish.d.ts +12 -0
  18. package/dist/commands/publish.d.ts.map +1 -0
  19. package/dist/commands/publish.js +395 -0
  20. package/dist/commands/publish.js.map +1 -0
  21. package/dist/commands/push.d.ts +9 -0
  22. package/dist/commands/push.d.ts.map +1 -0
  23. package/dist/commands/push.js +199 -0
  24. package/dist/commands/push.js.map +1 -0
  25. package/dist/commands/upload.d.ts +7 -0
  26. package/dist/commands/upload.d.ts.map +1 -0
  27. package/dist/commands/upload.js +126 -0
  28. package/dist/commands/upload.js.map +1 -0
  29. package/dist/dev-ui/app.js +657 -0
  30. package/dist/dev-ui/index.html +837 -0
  31. package/dist/utils/block-config.d.ts.map +1 -1
  32. package/dist/utils/block-config.js +49 -3
  33. package/dist/utils/block-config.js.map +1 -1
  34. package/dist/utils/cmssy-config.d.ts +0 -3
  35. package/dist/utils/cmssy-config.d.ts.map +1 -1
  36. package/dist/utils/cmssy-config.js.map +1 -1
  37. package/dist/utils/config.d.ts +1 -0
  38. package/dist/utils/config.d.ts.map +1 -1
  39. package/dist/utils/config.js +1 -0
  40. package/dist/utils/config.js.map +1 -1
  41. package/dist/utils/graphql.d.ts +1 -0
  42. package/dist/utils/graphql.d.ts.map +1 -1
  43. package/dist/utils/graphql.js +28 -0
  44. package/dist/utils/graphql.js.map +1 -1
  45. package/package.json +8 -3
@@ -0,0 +1,161 @@
1
+ import fs from "fs-extra";
2
+ import path from "path";
3
+ import chalk from "chalk";
4
+ import ora from "ora";
5
+ import archiver from "archiver";
6
+ import { loadConfig } from "../utils/cmssy-config.js";
7
+ export async function packageCommand(packageNames = [], options) {
8
+ const cwd = process.cwd();
9
+ // Load cmssy config
10
+ let config;
11
+ try {
12
+ config = await loadConfig();
13
+ }
14
+ catch (error) {
15
+ console.error(chalk.red("✖ Not a Cmssy project (missing cmssy.config.js)"));
16
+ process.exit(1);
17
+ }
18
+ // Scan for blocks and templates
19
+ const resources = await scanResources(cwd);
20
+ if (resources.length === 0) {
21
+ console.log(chalk.yellow("⚠ No blocks or templates found"));
22
+ return;
23
+ }
24
+ // Determine which packages to package
25
+ let toPackage = [];
26
+ if (options.all) {
27
+ toPackage = resources;
28
+ }
29
+ else if (packageNames.length > 0) {
30
+ // Find specific packages
31
+ for (const name of packageNames) {
32
+ const resource = resources.find((r) => r.name === name);
33
+ if (!resource) {
34
+ console.error(chalk.red(`✖ Package not found: ${name}`));
35
+ process.exit(1);
36
+ }
37
+ toPackage.push(resource);
38
+ }
39
+ }
40
+ else {
41
+ console.error(chalk.red("✖ Specify packages to package or use --all:\n") +
42
+ chalk.white(" cmssy package hero\n") +
43
+ chalk.white(" cmssy package hero pricing\n") +
44
+ chalk.white(" cmssy package --all"));
45
+ process.exit(1);
46
+ }
47
+ // Create output directory
48
+ const outputDir = path.join(cwd, options.output || "packages");
49
+ await fs.ensureDir(outputDir);
50
+ console.log(chalk.blue(`\n📦 Packaging ${toPackage.length} package(s)...\n`));
51
+ // Package each resource
52
+ for (const resource of toPackage) {
53
+ await packageResource(resource, outputDir);
54
+ }
55
+ console.log(chalk.green(`\n✓ Successfully packaged ${toPackage.length} package(s) to ${outputDir}`));
56
+ }
57
+ async function scanResources(cwd) {
58
+ const resources = [];
59
+ // Scan blocks
60
+ const blocksDir = path.join(cwd, "blocks");
61
+ if (await fs.pathExists(blocksDir)) {
62
+ const blockDirs = await fs.readdir(blocksDir);
63
+ for (const name of blockDirs) {
64
+ const blockDir = path.join(blocksDir, name);
65
+ const packageJsonPath = path.join(blockDir, "package.json");
66
+ if (await fs.pathExists(packageJsonPath)) {
67
+ const packageJson = await fs.readJson(packageJsonPath);
68
+ resources.push({
69
+ name,
70
+ type: "block",
71
+ dir: blockDir,
72
+ packageJson,
73
+ });
74
+ }
75
+ }
76
+ }
77
+ // Scan templates
78
+ const templatesDir = path.join(cwd, "templates");
79
+ if (await fs.pathExists(templatesDir)) {
80
+ const templateDirs = await fs.readdir(templatesDir);
81
+ for (const name of templateDirs) {
82
+ const templateDir = path.join(templatesDir, name);
83
+ const packageJsonPath = path.join(templateDir, "package.json");
84
+ if (await fs.pathExists(packageJsonPath)) {
85
+ const packageJson = await fs.readJson(packageJsonPath);
86
+ resources.push({
87
+ name,
88
+ type: "template",
89
+ dir: templateDir,
90
+ packageJson,
91
+ });
92
+ }
93
+ }
94
+ }
95
+ return resources;
96
+ }
97
+ async function packageResource(resource, outputDir) {
98
+ const spinner = ora(`Packaging ${resource.type} ${chalk.cyan(resource.name)}`).start();
99
+ try {
100
+ // Create output filename
101
+ const version = resource.packageJson.version || "1.0.0";
102
+ const outputFile = path.join(outputDir, `${resource.name}-${version}.zip`);
103
+ // Create write stream
104
+ const output = fs.createWriteStream(outputFile);
105
+ const archive = archiver("zip", {
106
+ zlib: { level: 9 }, // Maximum compression
107
+ });
108
+ // Listen for archive events
109
+ output.on("close", () => {
110
+ const size = (archive.pointer() / 1024).toFixed(2);
111
+ spinner.succeed(`Packaged ${resource.type} ${chalk.cyan(resource.name)} (${size} KB)`);
112
+ });
113
+ archive.on("error", (err) => {
114
+ throw err;
115
+ });
116
+ // Pipe archive to output file
117
+ archive.pipe(output);
118
+ // Add files to archive
119
+ // 1. Source directory
120
+ const srcDir = path.join(resource.dir, "src");
121
+ if (await fs.pathExists(srcDir)) {
122
+ archive.directory(srcDir, "src");
123
+ }
124
+ // 2. package.json
125
+ const packageJsonPath = path.join(resource.dir, "package.json");
126
+ if (await fs.pathExists(packageJsonPath)) {
127
+ archive.file(packageJsonPath, { name: "package.json" });
128
+ }
129
+ // 3. block.config.ts (if exists)
130
+ const blockConfigPath = path.join(resource.dir, "block.config.ts");
131
+ if (await fs.pathExists(blockConfigPath)) {
132
+ archive.file(blockConfigPath, { name: "block.config.ts" });
133
+ }
134
+ // 4. preview.json (if exists)
135
+ const previewJsonPath = path.join(resource.dir, "preview.json");
136
+ if (await fs.pathExists(previewJsonPath)) {
137
+ archive.file(previewJsonPath, { name: "preview.json" });
138
+ }
139
+ // 5. README.md (if exists)
140
+ const readmePath = path.join(resource.dir, "README.md");
141
+ if (await fs.pathExists(readmePath)) {
142
+ archive.file(readmePath, { name: "README.md" });
143
+ }
144
+ // 6. Built files from public/ (if exists)
145
+ const publicDir = path.join(process.cwd(), "public", resource.packageJson.name, version);
146
+ if (await fs.pathExists(publicDir)) {
147
+ archive.directory(publicDir, "dist");
148
+ }
149
+ // Finalize archive
150
+ await archive.finalize();
151
+ // Wait for close event
152
+ await new Promise((resolve) => {
153
+ output.on("close", () => resolve());
154
+ });
155
+ }
156
+ catch (error) {
157
+ spinner.fail(`Failed to package ${resource.type} ${chalk.cyan(resource.name)}: ${error.message}`);
158
+ throw error;
159
+ }
160
+ }
161
+ //# sourceMappingURL=package.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package.js","sourceRoot":"","sources":["../../src/commands/package.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ interface PublishOptions {
2
+ marketplace?: boolean;
3
+ workspace?: string;
4
+ patch?: boolean;
5
+ minor?: boolean;
6
+ major?: boolean;
7
+ dryRun?: boolean;
8
+ all?: boolean;
9
+ }
10
+ export declare function publishCommand(packageNames: string[] | undefined, options: PublishOptions): Promise<void>;
11
+ export {};
12
+ //# sourceMappingURL=publish.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../../src/commands/publish.ts"],"names":[],"mappings":"AAiBA,UAAU,cAAc;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAUD,wBAAsB,cAAc,CAClC,YAAY,EAAE,MAAM,EAAE,YAAK,EAC3B,OAAO,EAAE,cAAc,iBA4LxB"}
@@ -0,0 +1,395 @@
1
+ import chalk from "chalk";
2
+ import fs from "fs-extra";
3
+ import { GraphQLClient } from "graphql-request";
4
+ import inquirer from "inquirer";
5
+ import ora from "ora";
6
+ import path from "path";
7
+ import semver from "semver";
8
+ import { hasConfig, loadConfig } from "../utils/config.js";
9
+ import { PUBLISH_PACKAGE_MUTATION, IMPORT_BLOCK_MUTATION, } from "../utils/graphql.js";
10
+ import { loadBlockConfig, } from "../utils/block-config.js";
11
+ export async function publishCommand(packageNames = [], options) {
12
+ console.log(chalk.blue.bold("\n📦 Cmssy - Publish\n"));
13
+ // Validate flags: must have either --marketplace or --workspace
14
+ if (!options.marketplace && !options.workspace) {
15
+ console.error(chalk.red("✖ Specify publish target:\n") +
16
+ chalk.white(" --marketplace Publish to public marketplace (requires review)\n") +
17
+ chalk.white(" --workspace <id> Publish to private workspace (no review)\n"));
18
+ process.exit(1);
19
+ }
20
+ if (options.marketplace && options.workspace) {
21
+ console.error(chalk.red("✖ Cannot specify both --marketplace and --workspace\n"));
22
+ process.exit(1);
23
+ }
24
+ // Check configuration
25
+ if (!hasConfig()) {
26
+ console.error(chalk.red("✖ Not configured. Run: cmssy configure\n"));
27
+ process.exit(1);
28
+ }
29
+ const config = loadConfig();
30
+ // Get workspace ID if --workspace without value
31
+ let workspaceId = options.workspace;
32
+ if (typeof options.workspace === "boolean" || options.workspace === "") {
33
+ // Flag provided without value, check .env
34
+ if (config.workspaceId) {
35
+ workspaceId = config.workspaceId;
36
+ console.log(chalk.gray(`Using workspace ID from .env: ${workspaceId}\n`));
37
+ }
38
+ else {
39
+ const answer = await inquirer.prompt([
40
+ {
41
+ type: "input",
42
+ name: "workspaceId",
43
+ message: "Enter Workspace ID:",
44
+ validate: (input) => {
45
+ if (!input) {
46
+ return "Workspace ID is required (or set CMSSY_WORKSPACE_ID in .env)";
47
+ }
48
+ return true;
49
+ },
50
+ },
51
+ ]);
52
+ workspaceId = answer.workspaceId;
53
+ }
54
+ }
55
+ // Find cmssy.config.js
56
+ const configPath = path.join(process.cwd(), "cmssy.config.js");
57
+ if (!fs.existsSync(configPath)) {
58
+ console.error(chalk.red("✖ Not a cmssy project (missing cmssy.config.js)\n"));
59
+ process.exit(1);
60
+ }
61
+ // Scan for packages to publish
62
+ const packages = await scanPackages(packageNames, options);
63
+ if (packages.length === 0) {
64
+ console.log(chalk.yellow("⚠ No packages found to publish\n"));
65
+ if (packageNames.length > 0) {
66
+ console.log(chalk.gray("Packages specified:"));
67
+ packageNames.forEach((name) => console.log(chalk.gray(` • ${name}`)));
68
+ }
69
+ return;
70
+ }
71
+ // Version bumping
72
+ if (options.patch || options.minor || options.major) {
73
+ const bumpType = options.patch
74
+ ? "patch"
75
+ : options.minor
76
+ ? "minor"
77
+ : "major";
78
+ console.log(chalk.cyan(`Version bump: ${bumpType}\n`));
79
+ for (const pkg of packages) {
80
+ const oldVersion = pkg.packageJson.version;
81
+ const newVersion = semver.inc(oldVersion, bumpType);
82
+ if (!newVersion) {
83
+ console.error(chalk.red(`✖ Invalid version for ${pkg.name}: ${oldVersion}\n`));
84
+ continue;
85
+ }
86
+ pkg.packageJson.version = newVersion;
87
+ // Update package.json
88
+ const pkgPath = path.join(pkg.path, "package.json");
89
+ fs.writeJsonSync(pkgPath, pkg.packageJson, { spaces: 2 });
90
+ console.log(chalk.gray(` ${pkg.name}: ${oldVersion} → ${newVersion}`));
91
+ }
92
+ console.log("");
93
+ }
94
+ console.log(chalk.cyan(`Found ${packages.length} package(s) to publish:\n`));
95
+ packages.forEach((pkg) => {
96
+ console.log(chalk.white(` • ${pkg.packageJson.name} v${pkg.packageJson.version}`));
97
+ });
98
+ console.log("");
99
+ if (options.dryRun) {
100
+ console.log(chalk.yellow("🔍 Dry run mode - nothing will be published\n"));
101
+ return;
102
+ }
103
+ // Show target info
104
+ if (options.marketplace) {
105
+ console.log(chalk.yellow("📋 Target: Marketplace (public)\n" +
106
+ " Status: Pending review\n" +
107
+ " You'll be notified when approved.\n"));
108
+ }
109
+ else {
110
+ console.log(chalk.cyan(`🏢 Target: Workspace (${workspaceId})\n` +
111
+ " Status: Published immediately (no review)\n"));
112
+ }
113
+ // Publish each package
114
+ let successCount = 0;
115
+ let errorCount = 0;
116
+ for (const pkg of packages) {
117
+ const target = options.marketplace ? "marketplace" : "workspace";
118
+ const spinner = ora(`Publishing ${pkg.packageJson.name} to ${target}...`).start();
119
+ try {
120
+ if (options.marketplace) {
121
+ await publishToMarketplace(pkg, config.apiToken, config.apiUrl);
122
+ spinner.succeed(chalk.green(`${pkg.packageJson.name} submitted for review (pending)`));
123
+ }
124
+ else {
125
+ await publishToWorkspace(pkg, workspaceId, config.apiToken, config.apiUrl);
126
+ spinner.succeed(chalk.green(`${pkg.packageJson.name} published to workspace`));
127
+ }
128
+ successCount++;
129
+ }
130
+ catch (error) {
131
+ spinner.fail(chalk.red(`${pkg.packageJson.name} failed`));
132
+ console.error(chalk.red(` Error: ${error.message}\n`));
133
+ errorCount++;
134
+ }
135
+ }
136
+ console.log("");
137
+ if (errorCount === 0) {
138
+ console.log(chalk.green.bold(`✓ ${successCount} package(s) published successfully\n`));
139
+ }
140
+ else {
141
+ console.log(chalk.yellow(`⚠ ${successCount} succeeded, ${errorCount} failed\n`));
142
+ }
143
+ }
144
+ async function scanPackages(packageNames, options) {
145
+ const packages = [];
146
+ // Scan blocks
147
+ const blocksDir = path.join(process.cwd(), "blocks");
148
+ if (fs.existsSync(blocksDir)) {
149
+ const blockDirs = fs
150
+ .readdirSync(blocksDir, { withFileTypes: true })
151
+ .filter((dirent) => dirent.isDirectory())
152
+ .map((dirent) => dirent.name);
153
+ for (const blockName of blockDirs) {
154
+ // Filter: --all OR packageNames includes this block
155
+ if (!options.all && !packageNames.includes(blockName)) {
156
+ continue;
157
+ }
158
+ const blockPath = path.join(blocksDir, blockName);
159
+ const pkgPath = path.join(blockPath, "package.json");
160
+ if (!fs.existsSync(pkgPath)) {
161
+ console.warn(chalk.yellow(`Warning: ${blockName} has no package.json, skipping`));
162
+ continue;
163
+ }
164
+ const packageJson = fs.readJsonSync(pkgPath);
165
+ // Try loading block.config.ts
166
+ const blockConfig = await loadBlockConfig(blockPath);
167
+ if (!blockConfig && !packageJson.cmssy) {
168
+ console.warn(chalk.yellow(`Warning: ${blockName} has no block.config.ts or package.json cmssy section, skipping`));
169
+ continue;
170
+ }
171
+ packages.push({
172
+ type: "block",
173
+ name: blockName,
174
+ path: blockPath,
175
+ packageJson,
176
+ blockConfig,
177
+ });
178
+ }
179
+ }
180
+ // Scan templates
181
+ const templatesDir = path.join(process.cwd(), "templates");
182
+ if (fs.existsSync(templatesDir)) {
183
+ const templateDirs = fs
184
+ .readdirSync(templatesDir, { withFileTypes: true })
185
+ .filter((dirent) => dirent.isDirectory())
186
+ .map((dirent) => dirent.name);
187
+ for (const templateName of templateDirs) {
188
+ // Filter: --all OR packageNames includes this template
189
+ if (!options.all && !packageNames.includes(templateName)) {
190
+ continue;
191
+ }
192
+ const templatePath = path.join(templatesDir, templateName);
193
+ const pkgPath = path.join(templatePath, "package.json");
194
+ if (!fs.existsSync(pkgPath)) {
195
+ console.warn(chalk.yellow(`Warning: ${templateName} has no package.json, skipping`));
196
+ continue;
197
+ }
198
+ const packageJson = fs.readJsonSync(pkgPath);
199
+ // Try loading block.config.ts
200
+ const blockConfig = await loadBlockConfig(templatePath);
201
+ if (!blockConfig && !packageJson.cmssy) {
202
+ console.warn(chalk.yellow(`Warning: ${templateName} has no block.config.ts or package.json cmssy section, skipping`));
203
+ continue;
204
+ }
205
+ packages.push({
206
+ type: "template",
207
+ name: templateName,
208
+ path: templatePath,
209
+ packageJson,
210
+ blockConfig,
211
+ });
212
+ }
213
+ }
214
+ return packages;
215
+ }
216
+ async function publishToMarketplace(pkg, apiToken, apiUrl) {
217
+ const { packageJson, path: packagePath, blockConfig } = pkg;
218
+ // Use blockConfig if available, fallback to package.json cmssy
219
+ const metadata = blockConfig || packageJson.cmssy || {};
220
+ // Validate vendor info
221
+ if (!metadata.vendorName && !packageJson.author) {
222
+ throw new Error("Vendor name required. Add 'vendorName' to block.config.ts or 'author' to package.json");
223
+ }
224
+ const vendorName = metadata.vendorName ||
225
+ (typeof packageJson.author === "string"
226
+ ? packageJson.author
227
+ : packageJson.author?.name);
228
+ // Read source code from src/index.tsx or src/index.ts
229
+ const srcDir = path.join(packagePath, "src");
230
+ let sourceCode;
231
+ const tsxPath = path.join(srcDir, "index.tsx");
232
+ const tsPath = path.join(srcDir, "index.ts");
233
+ if (fs.existsSync(tsxPath)) {
234
+ sourceCode = fs.readFileSync(tsxPath, "utf-8");
235
+ }
236
+ else if (fs.existsSync(tsPath)) {
237
+ sourceCode = fs.readFileSync(tsPath, "utf-8");
238
+ }
239
+ else {
240
+ throw new Error(`Source code not found. Expected ${tsxPath} or ${tsPath}`);
241
+ }
242
+ // Read CSS if exists
243
+ const cssPath = path.join(srcDir, "index.css");
244
+ let cssCode;
245
+ if (fs.existsSync(cssPath)) {
246
+ cssCode = fs.readFileSync(cssPath, "utf-8");
247
+ }
248
+ // Convert block.config.ts schema to schemaFields if using blockConfig
249
+ let schemaFields = metadata.schemaFields || [];
250
+ if (blockConfig && blockConfig.schema) {
251
+ schemaFields = convertSchemaToFields(blockConfig.schema);
252
+ }
253
+ // Build input
254
+ const input = {
255
+ name: packageJson.name,
256
+ version: packageJson.version,
257
+ displayName: metadata.displayName || metadata.name || packageJson.name,
258
+ description: packageJson.description || metadata.description || "",
259
+ longDescription: metadata.longDescription || null,
260
+ packageType: pkg.type,
261
+ category: metadata.category || "other",
262
+ tags: metadata.tags || [],
263
+ sourceCode,
264
+ cssUrl: null,
265
+ packageJsonUrl: "",
266
+ schemaFields,
267
+ defaultContent: extractDefaultContent(blockConfig?.schema || {}),
268
+ vendorName,
269
+ vendorEmail: packageJson.author?.email || null,
270
+ vendorUrl: packageJson.homepage || packageJson.repository?.url || null,
271
+ licenseType: metadata.pricing?.licenseType || metadata.licenseType || "free",
272
+ priceCents: metadata.pricing?.priceCents || metadata.priceCents || 0,
273
+ };
274
+ // Create client
275
+ const client = new GraphQLClient(apiUrl, {
276
+ headers: {
277
+ "Content-Type": "application/json",
278
+ },
279
+ });
280
+ // Send mutation
281
+ const result = await client.request(PUBLISH_PACKAGE_MUTATION, {
282
+ token: apiToken,
283
+ input,
284
+ });
285
+ if (!result.publishPackage?.success) {
286
+ throw new Error(result.publishPackage?.message || "Failed to publish package");
287
+ }
288
+ }
289
+ async function publishToWorkspace(pkg, workspaceId, apiToken, apiUrl) {
290
+ const { packageJson, path: packagePath, blockConfig } = pkg;
291
+ // Use blockConfig if available, fallback to package.json cmssy
292
+ const metadata = blockConfig || packageJson.cmssy || {};
293
+ // Read source code from src/index.tsx or src/index.ts
294
+ const srcDir = path.join(packagePath, "src");
295
+ let sourceCode;
296
+ const tsxPath = path.join(srcDir, "index.tsx");
297
+ const tsPath = path.join(srcDir, "index.ts");
298
+ if (fs.existsSync(tsxPath)) {
299
+ sourceCode = fs.readFileSync(tsxPath, "utf-8");
300
+ }
301
+ else if (fs.existsSync(tsPath)) {
302
+ sourceCode = fs.readFileSync(tsPath, "utf-8");
303
+ }
304
+ else {
305
+ throw new Error(`Source code not found. Expected ${tsxPath} or ${tsPath}`);
306
+ }
307
+ // Read CSS if exists
308
+ const cssPath = path.join(srcDir, "index.css");
309
+ let cssCode;
310
+ if (fs.existsSync(cssPath)) {
311
+ cssCode = fs.readFileSync(cssPath, "utf-8");
312
+ }
313
+ // Generate block_type from package name
314
+ // @cmssy/blocks.hero -> hero
315
+ const blockType = packageJson.name
316
+ .replace(/@[^/]+\//, "")
317
+ .replace(/^blocks\./, "")
318
+ .replace(/^templates\./, "");
319
+ // Convert block.config.ts schema to schemaFields if using blockConfig
320
+ let schemaFields = metadata.schemaFields || [];
321
+ if (blockConfig && blockConfig.schema) {
322
+ schemaFields = convertSchemaToFields(blockConfig.schema);
323
+ }
324
+ // Build input
325
+ const input = {
326
+ blockType,
327
+ name: metadata.displayName || metadata.name || packageJson.name,
328
+ description: packageJson.description || metadata.description || "",
329
+ icon: metadata.icon || "Blocks",
330
+ category: metadata.category || "Custom",
331
+ sourceCode,
332
+ schemaFields,
333
+ defaultContent: extractDefaultContent(blockConfig?.schema || {}),
334
+ sourceRegistry: "local",
335
+ sourceItem: packageJson.name,
336
+ version: packageJson.version || "1.0.0",
337
+ };
338
+ // Create client with workspace header
339
+ const client = new GraphQLClient(apiUrl, {
340
+ headers: {
341
+ "Content-Type": "application/json",
342
+ Authorization: `Bearer ${apiToken}`,
343
+ "X-Workspace-ID": workspaceId,
344
+ },
345
+ });
346
+ // Send mutation
347
+ const result = await client.request(IMPORT_BLOCK_MUTATION, {
348
+ input,
349
+ });
350
+ if (!result.importBlock) {
351
+ throw new Error("Failed to import block to workspace");
352
+ }
353
+ }
354
+ // Helper: Convert block.config.ts schema to schemaFields array
355
+ function convertSchemaToFields(schema) {
356
+ const fields = [];
357
+ Object.entries(schema).forEach(([key, field]) => {
358
+ const baseField = {
359
+ key,
360
+ type: field.type,
361
+ label: field.label,
362
+ required: field.required || false,
363
+ };
364
+ if (field.placeholder) {
365
+ baseField.placeholder = field.placeholder;
366
+ }
367
+ if (field.type === "select" && field.options) {
368
+ baseField.options = field.options;
369
+ }
370
+ if (field.type === "repeater" && field.schema) {
371
+ baseField.minItems = field.minItems;
372
+ baseField.maxItems = field.maxItems;
373
+ baseField.itemSchema = {
374
+ type: "object",
375
+ fields: convertSchemaToFields(field.schema),
376
+ };
377
+ }
378
+ fields.push(baseField);
379
+ });
380
+ return fields;
381
+ }
382
+ // Helper: Extract default content from schema
383
+ function extractDefaultContent(schema) {
384
+ const content = {};
385
+ Object.entries(schema).forEach(([key, field]) => {
386
+ if (field.defaultValue !== undefined) {
387
+ content[key] = field.defaultValue;
388
+ }
389
+ else if (field.type === "repeater") {
390
+ content[key] = [];
391
+ }
392
+ });
393
+ return content;
394
+ }
395
+ //# sourceMappingURL=publish.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publish.js","sourceRoot":"","sources":["../../src/commands/publish.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ interface PushOptions {
2
+ workspace?: string;
3
+ all?: boolean;
4
+ blocks?: string[];
5
+ templates?: string[];
6
+ }
7
+ export declare function pushCommand(options: PushOptions): Promise<void>;
8
+ export {};
9
+ //# sourceMappingURL=push.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../src/commands/push.ts"],"names":[],"mappings":"AASA,UAAU,WAAW;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AASD,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,iBAuFrD"}