cmssy-cli 0.4.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 (51) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +235 -0
  3. package/dist/cli.d.ts +3 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +71 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/commands/build.d.ts +6 -0
  8. package/dist/commands/build.d.ts.map +1 -0
  9. package/dist/commands/build.js +153 -0
  10. package/dist/commands/build.js.map +1 -0
  11. package/dist/commands/configure.d.ts +6 -0
  12. package/dist/commands/configure.d.ts.map +1 -0
  13. package/dist/commands/configure.js +42 -0
  14. package/dist/commands/configure.js.map +1 -0
  15. package/dist/commands/create.d.ts +8 -0
  16. package/dist/commands/create.d.ts.map +1 -0
  17. package/dist/commands/create.js +314 -0
  18. package/dist/commands/create.js.map +1 -0
  19. package/dist/commands/deploy.d.ts +9 -0
  20. package/dist/commands/deploy.d.ts.map +1 -0
  21. package/dist/commands/deploy.js +226 -0
  22. package/dist/commands/deploy.js.map +1 -0
  23. package/dist/commands/dev.d.ts +6 -0
  24. package/dist/commands/dev.d.ts.map +1 -0
  25. package/dist/commands/dev.js +489 -0
  26. package/dist/commands/dev.js.map +1 -0
  27. package/dist/commands/init.d.ts +6 -0
  28. package/dist/commands/init.d.ts.map +1 -0
  29. package/dist/commands/init.js +517 -0
  30. package/dist/commands/init.js.map +1 -0
  31. package/dist/commands/sync.d.ts +6 -0
  32. package/dist/commands/sync.d.ts.map +1 -0
  33. package/dist/commands/sync.js +208 -0
  34. package/dist/commands/sync.js.map +1 -0
  35. package/dist/utils/blockforge-config.d.ts +19 -0
  36. package/dist/utils/blockforge-config.d.ts.map +1 -0
  37. package/dist/utils/blockforge-config.js +19 -0
  38. package/dist/utils/blockforge-config.js.map +1 -0
  39. package/dist/utils/cmssy-config.d.ts +19 -0
  40. package/dist/utils/cmssy-config.d.ts.map +1 -0
  41. package/dist/utils/cmssy-config.js +19 -0
  42. package/dist/utils/cmssy-config.js.map +1 -0
  43. package/dist/utils/config.d.ts +8 -0
  44. package/dist/utils/config.d.ts.map +1 -0
  45. package/dist/utils/config.js +45 -0
  46. package/dist/utils/config.js.map +1 -0
  47. package/dist/utils/graphql.d.ts +4 -0
  48. package/dist/utils/graphql.d.ts.map +1 -0
  49. package/dist/utils/graphql.js +26 -0
  50. package/dist/utils/graphql.js.map +1 -0
  51. package/package.json +66 -0
@@ -0,0 +1,314 @@
1
+ import chalk from "chalk";
2
+ import fs from "fs-extra";
3
+ import inquirer from "inquirer";
4
+ import ora from "ora";
5
+ import path from "path";
6
+ import { loadConfig } from "../utils/cmssy-config.js";
7
+ async function createBlock(name) {
8
+ const spinner = ora("Creating block...").start();
9
+ try {
10
+ // Load config
11
+ const config = await loadConfig();
12
+ const blockPath = path.join(process.cwd(), "blocks", name);
13
+ // Check if block already exists
14
+ if (fs.existsSync(blockPath)) {
15
+ spinner.fail(`Block "${name}" already exists`);
16
+ process.exit(1);
17
+ }
18
+ // Prompt for block details
19
+ const answers = await inquirer.prompt([
20
+ {
21
+ type: "input",
22
+ name: "displayName",
23
+ message: "Display name:",
24
+ default: name.charAt(0).toUpperCase() + name.slice(1),
25
+ },
26
+ {
27
+ type: "input",
28
+ name: "description",
29
+ message: "Description:",
30
+ default: "",
31
+ },
32
+ {
33
+ type: "list",
34
+ name: "category",
35
+ message: "Category:",
36
+ choices: [
37
+ "marketing",
38
+ "typography",
39
+ "media",
40
+ "layout",
41
+ "forms",
42
+ "navigation",
43
+ "other",
44
+ ],
45
+ default: "marketing",
46
+ },
47
+ {
48
+ type: "input",
49
+ name: "tags",
50
+ message: "Tags (comma-separated):",
51
+ default: "",
52
+ filter: (input) => input
53
+ .split(",")
54
+ .map((tag) => tag.trim())
55
+ .filter(Boolean),
56
+ },
57
+ ]);
58
+ // Create directory structure
59
+ fs.mkdirSync(path.join(blockPath, "src"), { recursive: true });
60
+ // Create component file based on framework
61
+ if (config.framework === "react") {
62
+ const componentName = answers.displayName.replace(/\s+/g, "");
63
+ const componentFile = `export default function ${componentName}({ content }) {
64
+ const {
65
+ heading = 'Heading',
66
+ description = 'Description',
67
+ } = content;
68
+
69
+ return (
70
+ <section className="${name}">
71
+ <h2>{heading}</h2>
72
+ <p>{description}</p>
73
+ </section>
74
+ );
75
+ }
76
+ `;
77
+ fs.writeFileSync(path.join(blockPath, "src", `${componentName}.tsx`), componentFile);
78
+ // Create index file with mount/unmount
79
+ const indexFile = `import React from 'react';
80
+ import { createRoot } from 'react-dom/client';
81
+ import ${componentName} from './${componentName}';
82
+ import './index.css';
83
+
84
+ export default {
85
+ mount(element, props) {
86
+ const root = createRoot(element);
87
+ root.render(<${componentName} content={props} />);
88
+ return { root };
89
+ },
90
+
91
+ unmount(_element, ctx) {
92
+ ctx.root.unmount();
93
+ }
94
+ };
95
+ `;
96
+ fs.writeFileSync(path.join(blockPath, "src", "index.tsx"), indexFile);
97
+ }
98
+ // Create CSS file
99
+ const cssFile = `.${name} {
100
+ padding: 2rem;
101
+ }
102
+
103
+ .${name} h2 {
104
+ font-size: 2rem;
105
+ margin-bottom: 1rem;
106
+ }
107
+
108
+ .${name} p {
109
+ font-size: 1rem;
110
+ color: #666;
111
+ }
112
+ `;
113
+ fs.writeFileSync(path.join(blockPath, "src", "index.css"), cssFile);
114
+ // Create package.json
115
+ const packageJson = {
116
+ name: `@${config.projectName || "vendor"}/blocks.${name}`,
117
+ version: "1.0.0",
118
+ description: answers.description,
119
+ author: config.author,
120
+ blockforge: {
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
+ };
149
+ fs.writeFileSync(path.join(blockPath, "package.json"), JSON.stringify(packageJson, null, 2) + "\n");
150
+ // Create preview.json
151
+ const previewData = {
152
+ heading: "Preview Heading",
153
+ description: "This is how your block will look in the preview.",
154
+ };
155
+ fs.writeFileSync(path.join(blockPath, "preview.json"), JSON.stringify(previewData, null, 2) + "\n");
156
+ spinner.succeed(`Block "${name}" created successfully`);
157
+ console.log(chalk.cyan("\nNext steps:\n"));
158
+ console.log(chalk.white(" npm run dev # Preview your block"));
159
+ console.log(chalk.white(" npm run build # Build your block\n"));
160
+ }
161
+ catch (error) {
162
+ spinner.fail("Failed to create block");
163
+ console.error(chalk.red("Error:"), error);
164
+ process.exit(1);
165
+ }
166
+ }
167
+ async function createPage(name) {
168
+ const spinner = ora("Creating page template...").start();
169
+ try {
170
+ const config = await loadConfig();
171
+ const pagePath = path.join(process.cwd(), "templates", name);
172
+ if (fs.existsSync(pagePath)) {
173
+ spinner.fail(`Page template "${name}" already exists`);
174
+ process.exit(1);
175
+ }
176
+ const answers = await inquirer.prompt([
177
+ {
178
+ type: "input",
179
+ name: "displayName",
180
+ message: "Display name:",
181
+ default: name.charAt(0).toUpperCase() + name.slice(1),
182
+ },
183
+ {
184
+ type: "input",
185
+ name: "description",
186
+ message: "Description:",
187
+ default: "",
188
+ },
189
+ ]);
190
+ fs.mkdirSync(path.join(pagePath, "src"), { recursive: true });
191
+ if (config.framework === "react") {
192
+ const componentName = answers.displayName.replace(/\s+/g, "");
193
+ const componentFile = `export default function ${componentName}({ content }) {
194
+ const {
195
+ title = 'Page Title',
196
+ sections = [],
197
+ } = content;
198
+
199
+ return (
200
+ <div className="${name}-page">
201
+ <header>
202
+ <h1>{title}</h1>
203
+ </header>
204
+ <main>
205
+ {sections.map((section, index) => (
206
+ <div key={index} className="section">
207
+ {/* Render blocks here */}
208
+ </div>
209
+ ))}
210
+ </main>
211
+ </div>
212
+ );
213
+ }
214
+ `;
215
+ fs.writeFileSync(path.join(pagePath, "src", `${componentName}.tsx`), componentFile);
216
+ const indexFile = `import React from 'react';
217
+ import { createRoot } from 'react-dom/client';
218
+ import ${componentName} from './${componentName}';
219
+ import './index.css';
220
+
221
+ export default {
222
+ mount(element, props) {
223
+ const root = createRoot(element);
224
+ root.render(<${componentName} content={props} />);
225
+ return { root };
226
+ },
227
+
228
+ unmount(_element, ctx) {
229
+ ctx.root.unmount();
230
+ }
231
+ };
232
+ `;
233
+ fs.writeFileSync(path.join(pagePath, "src", "index.tsx"), indexFile);
234
+ }
235
+ const cssFile = `.${name}-page {
236
+ min-height: 100vh;
237
+ }
238
+
239
+ .${name}-page header {
240
+ padding: 2rem;
241
+ background: #f5f5f5;
242
+ }
243
+
244
+ .${name}-page h1 {
245
+ font-size: 2.5rem;
246
+ margin: 0;
247
+ }
248
+
249
+ .${name}-page main {
250
+ padding: 2rem;
251
+ }
252
+
253
+ .section {
254
+ margin-bottom: 2rem;
255
+ }
256
+ `;
257
+ fs.writeFileSync(path.join(pagePath, "src", "index.css"), cssFile);
258
+ const packageJson = {
259
+ name: `@${config.projectName || "vendor"}/templates.${name}`,
260
+ version: "1.0.0",
261
+ description: answers.description,
262
+ author: config.author,
263
+ blockforge: {
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
+ fs.writeFileSync(path.join(pagePath, "package.json"), JSON.stringify(packageJson, null, 2) + "\n");
294
+ const previewData = {
295
+ title: "Preview Page",
296
+ sections: [],
297
+ };
298
+ fs.writeFileSync(path.join(pagePath, "preview.json"), JSON.stringify(previewData, null, 2) + "\n");
299
+ spinner.succeed(`Page template "${name}" created successfully`);
300
+ console.log(chalk.cyan("\nNext steps:\n"));
301
+ console.log(chalk.white(" npm run dev # Preview your page"));
302
+ console.log(chalk.white(" npm run build # Build your page\n"));
303
+ }
304
+ catch (error) {
305
+ spinner.fail("Failed to create page template");
306
+ console.error(chalk.red("Error:"), error);
307
+ process.exit(1);
308
+ }
309
+ }
310
+ export const createCommand = {
311
+ block: createBlock,
312
+ page: createPage,
313
+ };
314
+ //# sourceMappingURL=create.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ interface DeployOptions {
2
+ all?: boolean;
3
+ blocks?: string[];
4
+ templates?: string[];
5
+ dryRun?: boolean;
6
+ }
7
+ export declare function deployCommand(options: DeployOptions): Promise<void>;
8
+ export {};
9
+ //# sourceMappingURL=deploy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"AASA,UAAU,aAAa;IACrB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AASD,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,iBA4EzD"}
@@ -0,0 +1,226 @@
1
+ import chalk from "chalk";
2
+ import FormData from "form-data";
3
+ import fs from "fs-extra";
4
+ import fetch from "node-fetch";
5
+ import ora from "ora";
6
+ import path from "path";
7
+ import { hasConfig, loadConfig } from "../utils/config.js";
8
+ import { createClient, PUBLISH_PACKAGE_MUTATION } from "../utils/graphql.js";
9
+ export async function deployCommand(options) {
10
+ console.log(chalk.blue.bold("\n🔨 Cmssy - Deploy to Marketplace\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
+ // Scan for packages to deploy
24
+ const packages = await scanPackages(options);
25
+ if (packages.length === 0) {
26
+ console.log(chalk.yellow("⚠ No packages found to deploy\n"));
27
+ return;
28
+ }
29
+ console.log(chalk.cyan(`Found ${packages.length} package(s) to deploy:\n`));
30
+ packages.forEach((pkg) => {
31
+ console.log(chalk.white(` • ${pkg.packageJson.name} v${pkg.packageJson.version}`));
32
+ });
33
+ console.log("");
34
+ if (options.dryRun) {
35
+ console.log(chalk.yellow("🔍 Dry run mode - nothing will be published\n"));
36
+ return;
37
+ }
38
+ // Deploy each package
39
+ const client = createClient();
40
+ let successCount = 0;
41
+ let errorCount = 0;
42
+ for (const pkg of packages) {
43
+ const spinner = ora(`Uploading ${pkg.packageJson.name} to Cmssy...`).start();
44
+ try {
45
+ await deployPackage(client, pkg, config.apiToken, config.apiUrl);
46
+ spinner.succeed(chalk.green(`${pkg.packageJson.name} submitted for review`));
47
+ successCount++;
48
+ }
49
+ catch (error) {
50
+ spinner.fail(chalk.red(`${pkg.packageJson.name} failed`));
51
+ console.error(chalk.red(` Error: ${error.message}\n`));
52
+ errorCount++;
53
+ }
54
+ }
55
+ console.log("");
56
+ if (errorCount === 0) {
57
+ console.log(chalk.green.bold(`✓ ${successCount} package(s) submitted for review\n`));
58
+ console.log(chalk.cyan("Your packages are pending Cmssy review."));
59
+ console.log(chalk.cyan("You'll be notified when they're approved.\n"));
60
+ }
61
+ else {
62
+ console.log(chalk.yellow(`⚠ ${successCount} succeeded, ${errorCount} failed\n`));
63
+ }
64
+ }
65
+ async function scanPackages(options) {
66
+ const packages = [];
67
+ // Scan blocks
68
+ const blocksDir = path.join(process.cwd(), "blocks");
69
+ if (fs.existsSync(blocksDir)) {
70
+ const blockDirs = fs
71
+ .readdirSync(blocksDir, { withFileTypes: true })
72
+ .filter((dirent) => dirent.isDirectory())
73
+ .map((dirent) => dirent.name);
74
+ for (const blockName of blockDirs) {
75
+ // Filter by options
76
+ if (options.blocks && !options.blocks.includes(blockName)) {
77
+ continue;
78
+ }
79
+ if (!options.all && !options.blocks) {
80
+ continue; // Skip unless --all or specifically listed
81
+ }
82
+ const blockPath = path.join(blocksDir, blockName);
83
+ const pkgPath = path.join(blockPath, "package.json");
84
+ if (!fs.existsSync(pkgPath))
85
+ continue;
86
+ const packageJson = fs.readJsonSync(pkgPath);
87
+ if (!packageJson.blockforge)
88
+ continue;
89
+ packages.push({
90
+ type: "block",
91
+ name: blockName,
92
+ path: blockPath,
93
+ packageJson,
94
+ });
95
+ }
96
+ }
97
+ // Scan templates
98
+ const templatesDir = path.join(process.cwd(), "templates");
99
+ if (fs.existsSync(templatesDir)) {
100
+ const templateDirs = fs
101
+ .readdirSync(templatesDir, { withFileTypes: true })
102
+ .filter((dirent) => dirent.isDirectory())
103
+ .map((dirent) => dirent.name);
104
+ for (const templateName of templateDirs) {
105
+ // Filter by options
106
+ if (options.templates && !options.templates.includes(templateName)) {
107
+ continue;
108
+ }
109
+ if (!options.all && !options.templates) {
110
+ continue;
111
+ }
112
+ const templatePath = path.join(templatesDir, templateName);
113
+ const pkgPath = path.join(templatePath, "package.json");
114
+ if (!fs.existsSync(pkgPath))
115
+ continue;
116
+ const packageJson = fs.readJsonSync(pkgPath);
117
+ if (!packageJson.blockforge)
118
+ continue;
119
+ packages.push({
120
+ type: "template",
121
+ name: templateName,
122
+ path: templatePath,
123
+ packageJson,
124
+ });
125
+ }
126
+ }
127
+ return packages;
128
+ }
129
+ async function uploadFilesToBackend(packagePublicPath, packageName, version, apiUrl, apiToken) {
130
+ const form = new FormData();
131
+ // Add package metadata
132
+ form.append("packageName", packageName);
133
+ form.append("version", version);
134
+ // Add index.js file
135
+ const indexJsPath = path.join(packagePublicPath, "index.js");
136
+ if (!fs.existsSync(indexJsPath)) {
137
+ throw new Error(`index.js not found at ${indexJsPath}`);
138
+ }
139
+ form.append("component", fs.createReadStream(indexJsPath), {
140
+ filename: "index.js",
141
+ contentType: "application/javascript",
142
+ });
143
+ // Add index.css if exists
144
+ const indexCssPath = path.join(packagePublicPath, "index.css");
145
+ if (fs.existsSync(indexCssPath)) {
146
+ form.append("css", fs.createReadStream(indexCssPath), {
147
+ filename: "index.css",
148
+ contentType: "text/css",
149
+ });
150
+ }
151
+ // Add package.json
152
+ const packageJsonPath = path.join(packagePublicPath, "package.json");
153
+ let pkgJsonToUpload = packageJsonPath;
154
+ if (!fs.existsSync(packageJsonPath)) {
155
+ // If package.json doesn't exist in build output, use source
156
+ pkgJsonToUpload = path.join(path.dirname(path.dirname(packagePublicPath)), "package.json");
157
+ }
158
+ form.append("packageJson", fs.createReadStream(pkgJsonToUpload), {
159
+ filename: "package.json",
160
+ contentType: "application/json",
161
+ });
162
+ // Determine API base URL (remove /graphql suffix if present)
163
+ const apiBase = apiUrl.replace("/graphql", "");
164
+ const uploadUrl = `${apiBase}/api/upload-package`;
165
+ // Upload to backend
166
+ const response = await fetch(uploadUrl, {
167
+ method: "POST",
168
+ headers: {
169
+ Authorization: `Bearer ${apiToken}`,
170
+ ...form.getHeaders(),
171
+ },
172
+ body: form,
173
+ });
174
+ if (!response.ok) {
175
+ const errorText = await response.text();
176
+ throw new Error(`Upload failed: ${response.statusText}. ${errorText}`);
177
+ }
178
+ const result = (await response.json());
179
+ return {
180
+ componentUrl: result.componentUrl,
181
+ cssUrl: result.cssUrl || null,
182
+ packageJsonUrl: result.packageJsonUrl,
183
+ };
184
+ }
185
+ async function deployPackage(client, pkg, apiToken, apiUrl) {
186
+ const { packageJson } = pkg;
187
+ const metadata = packageJson.blockforge;
188
+ // Find built files in public/ directory
189
+ const publicDir = path.join(process.cwd(), "public");
190
+ const packagePublicPath = path.join(publicDir, packageJson.name, packageJson.version);
191
+ if (!fs.existsSync(packagePublicPath)) {
192
+ throw new Error(`Build output not found at ${packagePublicPath}. Run: blockforge build`);
193
+ }
194
+ // Upload package files to Cmssy backend, which uploads to Vercel Blob
195
+ const { componentUrl, cssUrl, packageJsonUrl } = await uploadFilesToBackend(packagePublicPath, packageJson.name, packageJson.version, apiUrl, apiToken);
196
+ // Build input
197
+ const input = {
198
+ name: packageJson.name,
199
+ version: packageJson.version,
200
+ displayName: metadata.displayName,
201
+ description: packageJson.description || metadata.description || "",
202
+ longDescription: metadata.longDescription || packageJson.description || "",
203
+ packageType: metadata.packageType || pkg.type,
204
+ category: metadata.category || "other",
205
+ tags: metadata.tags || [],
206
+ componentUrl,
207
+ cssUrl,
208
+ packageJsonUrl,
209
+ schemaFields: metadata.schemaFields || null,
210
+ defaultContent: metadata.defaultContent || null,
211
+ vendorName: packageJson.author?.name || packageJson.author || "Unknown",
212
+ vendorEmail: packageJson.author?.email || null,
213
+ vendorUrl: packageJson.author?.url || packageJson.homepage || null,
214
+ licenseType: metadata.pricing?.licenseType || "free",
215
+ priceCents: metadata.pricing?.priceCents || 0,
216
+ };
217
+ // Send mutation
218
+ const result = await client.request(PUBLISH_PACKAGE_MUTATION, {
219
+ token: apiToken,
220
+ input,
221
+ });
222
+ if (!result.publishPackage.success) {
223
+ throw new Error(result.publishPackage.message);
224
+ }
225
+ }
226
+ //# sourceMappingURL=deploy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ interface DevOptions {
2
+ port: string;
3
+ }
4
+ export declare function devCommand(options: DevOptions): Promise<void>;
5
+ export {};
6
+ //# sourceMappingURL=dev.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AAUA,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,CAAC;CACd;AAYD,wBAAsB,UAAU,CAAC,OAAO,EAAE,UAAU,iBAsJnD"}