cmssy-cli 0.7.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 (39) 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/dev.d.ts.map +1 -1
  5. package/dist/commands/dev.js +147 -1
  6. package/dist/commands/dev.js.map +1 -1
  7. package/dist/commands/init.d.ts.map +1 -1
  8. package/dist/commands/init.js +20 -16
  9. package/dist/commands/init.js.map +1 -1
  10. package/dist/commands/package.d.ts +7 -0
  11. package/dist/commands/package.d.ts.map +1 -0
  12. package/dist/commands/package.js +161 -0
  13. package/dist/commands/package.js.map +1 -0
  14. package/dist/commands/publish.d.ts +12 -0
  15. package/dist/commands/publish.d.ts.map +1 -0
  16. package/dist/commands/publish.js +395 -0
  17. package/dist/commands/publish.js.map +1 -0
  18. package/dist/commands/push.d.ts +9 -0
  19. package/dist/commands/push.d.ts.map +1 -0
  20. package/dist/commands/push.js +199 -0
  21. package/dist/commands/push.js.map +1 -0
  22. package/dist/commands/upload.d.ts +7 -0
  23. package/dist/commands/upload.d.ts.map +1 -0
  24. package/dist/commands/upload.js +126 -0
  25. package/dist/commands/upload.js.map +1 -0
  26. package/dist/dev-ui/app.js +163 -2
  27. package/dist/dev-ui/index.html +396 -2
  28. package/dist/utils/cmssy-config.d.ts +0 -3
  29. package/dist/utils/cmssy-config.d.ts.map +1 -1
  30. package/dist/utils/cmssy-config.js.map +1 -1
  31. package/dist/utils/config.d.ts +1 -0
  32. package/dist/utils/config.d.ts.map +1 -1
  33. package/dist/utils/config.js +1 -0
  34. package/dist/utils/config.js.map +1 -1
  35. package/dist/utils/graphql.d.ts +1 -0
  36. package/dist/utils/graphql.d.ts.map +1 -1
  37. package/dist/utils/graphql.js +28 -0
  38. package/dist/utils/graphql.js.map +1 -1
  39. package/package.json +5 -1
@@ -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"}
@@ -0,0 +1,199 @@
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 { hasConfig, loadConfig } from "../utils/config.js";
8
+ import { IMPORT_BLOCK_MUTATION } from "../utils/graphql.js";
9
+ export async function pushCommand(options) {
10
+ console.log(chalk.blue.bold("\nšŸš€ Cmssy - Push to Workspace\n"));
11
+ // Check configuration
12
+ if (!hasConfig()) {
13
+ console.error(chalk.red("āœ– Not configured. Run: cmssy configure\n"));
14
+ process.exit(1);
15
+ }
16
+ const config = loadConfig();
17
+ // Find cmssy.config.js
18
+ const configPath = path.join(process.cwd(), "cmssy.config.js");
19
+ if (!fs.existsSync(configPath)) {
20
+ console.error(chalk.red("āœ– Not a cmssy project (missing cmssy.config.js)\n"));
21
+ process.exit(1);
22
+ }
23
+ // Get workspace ID
24
+ let workspaceId = options.workspace;
25
+ if (!workspaceId) {
26
+ const answer = await inquirer.prompt([
27
+ {
28
+ type: "input",
29
+ name: "workspaceId",
30
+ message: "Enter Workspace ID:",
31
+ validate: (input) => {
32
+ if (!input) {
33
+ return "Workspace ID is required";
34
+ }
35
+ return true;
36
+ },
37
+ },
38
+ ]);
39
+ workspaceId = answer.workspaceId;
40
+ }
41
+ // Scan for packages to push
42
+ const packages = await scanPackages(options);
43
+ if (packages.length === 0) {
44
+ console.log(chalk.yellow("⚠ No packages found to push\n"));
45
+ return;
46
+ }
47
+ console.log(chalk.cyan(`Found ${packages.length} package(s) to push:\n`));
48
+ packages.forEach((pkg) => {
49
+ console.log(chalk.white(` • ${pkg.packageJson.name} v${pkg.packageJson.version}`));
50
+ });
51
+ console.log("");
52
+ // Push each package
53
+ let successCount = 0;
54
+ let errorCount = 0;
55
+ for (const pkg of packages) {
56
+ const spinner = ora(`Pushing ${pkg.packageJson.name} to workspace...`).start();
57
+ try {
58
+ await pushPackage(pkg, workspaceId, config.apiToken, config.apiUrl);
59
+ spinner.succeed(chalk.green(`${pkg.packageJson.name} pushed successfully`));
60
+ successCount++;
61
+ }
62
+ catch (error) {
63
+ spinner.fail(chalk.red(`${pkg.packageJson.name} failed`));
64
+ console.error(chalk.red(` Error: ${error.message}\n`));
65
+ errorCount++;
66
+ }
67
+ }
68
+ console.log("");
69
+ if (errorCount === 0) {
70
+ console.log(chalk.green.bold(`āœ“ ${successCount} package(s) pushed to workspace\n`));
71
+ }
72
+ else {
73
+ console.log(chalk.yellow(`⚠ ${successCount} succeeded, ${errorCount} failed\n`));
74
+ }
75
+ }
76
+ async function scanPackages(options) {
77
+ const packages = [];
78
+ // Scan blocks
79
+ const blocksDir = path.join(process.cwd(), "blocks");
80
+ if (fs.existsSync(blocksDir)) {
81
+ const blockDirs = fs
82
+ .readdirSync(blocksDir, { withFileTypes: true })
83
+ .filter((dirent) => dirent.isDirectory())
84
+ .map((dirent) => dirent.name);
85
+ for (const blockName of blockDirs) {
86
+ // Filter by options
87
+ if (options.blocks && !options.blocks.includes(blockName)) {
88
+ continue;
89
+ }
90
+ if (!options.all && !options.blocks) {
91
+ continue; // Skip unless --all or specifically listed
92
+ }
93
+ const blockPath = path.join(blocksDir, blockName);
94
+ const pkgPath = path.join(blockPath, "package.json");
95
+ if (!fs.existsSync(pkgPath))
96
+ continue;
97
+ const packageJson = fs.readJsonSync(pkgPath);
98
+ if (!packageJson.cmssy)
99
+ continue;
100
+ packages.push({
101
+ type: "block",
102
+ name: blockName,
103
+ path: blockPath,
104
+ packageJson,
105
+ });
106
+ }
107
+ }
108
+ // Scan templates
109
+ const templatesDir = path.join(process.cwd(), "templates");
110
+ if (fs.existsSync(templatesDir)) {
111
+ const templateDirs = fs
112
+ .readdirSync(templatesDir, { withFileTypes: true })
113
+ .filter((dirent) => dirent.isDirectory())
114
+ .map((dirent) => dirent.name);
115
+ for (const templateName of templateDirs) {
116
+ // Filter by options
117
+ if (options.templates && !options.templates.includes(templateName)) {
118
+ continue;
119
+ }
120
+ if (!options.all && !options.templates) {
121
+ continue;
122
+ }
123
+ const templatePath = path.join(templatesDir, templateName);
124
+ const pkgPath = path.join(templatePath, "package.json");
125
+ if (!fs.existsSync(pkgPath))
126
+ continue;
127
+ const packageJson = fs.readJsonSync(pkgPath);
128
+ if (!packageJson.cmssy)
129
+ continue;
130
+ packages.push({
131
+ type: "template",
132
+ name: templateName,
133
+ path: templatePath,
134
+ packageJson,
135
+ });
136
+ }
137
+ }
138
+ return packages;
139
+ }
140
+ async function pushPackage(pkg, workspaceId, apiToken, apiUrl) {
141
+ const { packageJson, path: packagePath } = pkg;
142
+ const metadata = packageJson.cmssy;
143
+ // Read source code from src/index.tsx or src/index.ts
144
+ const srcDir = path.join(packagePath, "src");
145
+ let sourceCode;
146
+ const tsxPath = path.join(srcDir, "index.tsx");
147
+ const tsPath = path.join(srcDir, "index.ts");
148
+ if (fs.existsSync(tsxPath)) {
149
+ sourceCode = fs.readFileSync(tsxPath, "utf-8");
150
+ }
151
+ else if (fs.existsSync(tsPath)) {
152
+ sourceCode = fs.readFileSync(tsPath, "utf-8");
153
+ }
154
+ else {
155
+ throw new Error(`Source code not found. Expected ${tsxPath} or ${tsPath}`);
156
+ }
157
+ // Read CSS if exists
158
+ const cssPath = path.join(srcDir, "index.css");
159
+ let cssCode;
160
+ if (fs.existsSync(cssPath)) {
161
+ cssCode = fs.readFileSync(cssPath, "utf-8");
162
+ }
163
+ // Generate block_type from package name
164
+ // @cmssy/blocks.hero -> hero
165
+ const blockType = packageJson.name
166
+ .replace(/@[^/]+\//, "")
167
+ .replace(/^blocks\./, "")
168
+ .replace(/^templates\./, "");
169
+ // Build input
170
+ const input = {
171
+ blockType,
172
+ name: metadata.displayName,
173
+ description: packageJson.description || metadata.description || "",
174
+ icon: metadata.icon || "Blocks",
175
+ category: metadata.category || "Custom",
176
+ sourceCode,
177
+ schemaFields: metadata.schemaFields || [],
178
+ defaultContent: metadata.defaultContent || {},
179
+ sourceRegistry: "local",
180
+ sourceItem: packageJson.name,
181
+ version: packageJson.version || "1.0.0",
182
+ };
183
+ // Create client with workspace header
184
+ const client = new GraphQLClient(apiUrl, {
185
+ headers: {
186
+ "Content-Type": "application/json",
187
+ Authorization: `Bearer ${apiToken}`,
188
+ "X-Workspace-ID": workspaceId,
189
+ },
190
+ });
191
+ // Send mutation
192
+ const result = await client.request(IMPORT_BLOCK_MUTATION, {
193
+ input,
194
+ });
195
+ if (!result.importBlock) {
196
+ throw new Error("Failed to import block");
197
+ }
198
+ }
199
+ //# sourceMappingURL=push.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"push.js","sourceRoot":"","sources":["../../src/commands/push.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ interface UploadOptions {
2
+ workspace?: string;
3
+ all?: boolean;
4
+ }
5
+ export declare function uploadCommand(packageFiles: string[] | undefined, options: UploadOptions): Promise<void>;
6
+ export {};
7
+ //# sourceMappingURL=upload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../../src/commands/upload.ts"],"names":[],"mappings":"AAQA,UAAU,aAAa;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,wBAAsB,aAAa,CACjC,YAAY,EAAE,MAAM,EAAE,YAAK,EAC3B,OAAO,EAAE,aAAa,iBAiGvB"}