@vobs/cli 1.2.0 → 1.2.2

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 (61) hide show
  1. package/dist/banner.cjs +31 -7
  2. package/dist/banner.cjs.map +1 -1
  3. package/dist/banner.js +5 -3
  4. package/dist/banner.js.map +1 -1
  5. package/dist/cli.cjs +130 -98
  6. package/dist/cli.cjs.map +1 -1
  7. package/dist/cli.js +65 -40
  8. package/dist/cli.js.map +1 -1
  9. package/dist/commands/add.cjs +63 -49
  10. package/dist/commands/add.cjs.map +1 -1
  11. package/dist/commands/add.js +14 -9
  12. package/dist/commands/add.js.map +1 -1
  13. package/dist/commands/build.cjs +50 -19
  14. package/dist/commands/build.cjs.map +1 -1
  15. package/dist/commands/build.js +9 -6
  16. package/dist/commands/build.js.map +1 -1
  17. package/dist/commands/dev.cjs +50 -19
  18. package/dist/commands/dev.cjs.map +1 -1
  19. package/dist/commands/dev.js +9 -6
  20. package/dist/commands/dev.js.map +1 -1
  21. package/dist/commands/generate.cjs +76 -63
  22. package/dist/commands/generate.cjs.map +1 -1
  23. package/dist/commands/generate.js +24 -18
  24. package/dist/commands/generate.js.map +1 -1
  25. package/dist/commands/index.cjs +136 -100
  26. package/dist/commands/index.cjs.map +1 -1
  27. package/dist/commands/index.js +66 -39
  28. package/dist/commands/index.js.map +1 -1
  29. package/dist/commands/init.cjs +89 -71
  30. package/dist/commands/init.cjs.map +1 -1
  31. package/dist/commands/init.js +28 -17
  32. package/dist/commands/init.js.map +1 -1
  33. package/dist/index.cjs +187 -132
  34. package/dist/index.cjs.map +1 -1
  35. package/dist/index.js +94 -48
  36. package/dist/index.js.map +1 -1
  37. package/dist/repl.cjs +139 -111
  38. package/dist/repl.cjs.map +1 -1
  39. package/dist/repl.js +67 -46
  40. package/dist/repl.js.map +1 -1
  41. package/dist/start.cjs +151 -114
  42. package/dist/start.cjs.map +1 -1
  43. package/dist/start.js +76 -48
  44. package/dist/start.js.map +1 -1
  45. package/dist/types.cjs +18 -2
  46. package/dist/types.cjs.map +1 -1
  47. package/dist/types.js +0 -2
  48. package/dist/types.js.map +1 -1
  49. package/dist/utils/file.cjs +67 -34
  50. package/dist/utils/file.cjs.map +1 -1
  51. package/dist/utils/file.js +18 -12
  52. package/dist/utils/file.js.map +1 -1
  53. package/dist/utils/logger.cjs +56 -22
  54. package/dist/utils/logger.cjs.map +1 -1
  55. package/dist/utils/logger.js +11 -5
  56. package/dist/utils/logger.js.map +1 -1
  57. package/dist/utils/pm.cjs +41 -16
  58. package/dist/utils/pm.cjs.map +1 -1
  59. package/dist/utils/pm.js +10 -7
  60. package/dist/utils/pm.js.map +1 -1
  61. package/package.json +5 -1
package/dist/index.cjs CHANGED
@@ -1,97 +1,128 @@
1
- 'use strict';
2
-
3
- var cac = require('cac');
4
- var path = require('path');
5
- var child_process = require('child_process');
6
- var p = require('@clack/prompts');
7
- var pc2 = require('picocolors');
8
- var fs = require('fs');
9
- var url = require('url');
10
- var Handlebars = require('handlebars');
11
- var vite = require('vite');
12
- var promises = require('readline/promises');
13
- var process$1 = require('process');
1
+ var __VOBS_CJS_FILE_URL = require("url").pathToFileURL(__filename).href;
2
+ "use strict";
3
+ var __create = Object.create;
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getProtoOf = Object.getPrototypeOf;
8
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
10
+ var __export = (target, all) => {
11
+ for (var name in all)
12
+ __defProp(target, name, { get: all[name], enumerable: true });
13
+ };
14
+ var __copyProps = (to, from, except, desc) => {
15
+ if (from && typeof from === "object" || typeof from === "function") {
16
+ for (let key of __getOwnPropNames(from))
17
+ if (!__hasOwnProp.call(to, key) && key !== except)
18
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
19
+ }
20
+ return to;
21
+ };
22
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
23
+ // If the importer is in node compatibility mode or this is not an ESM
24
+ // file that has been converted to a CommonJS file using a Babel-
25
+ // compatible transform (i.e. "__esModule" has not been set), then set
26
+ // "default" to the CommonJS "module.exports" for node compatibility.
27
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
28
+ mod
29
+ ));
30
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
14
31
 
15
- var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
16
- function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
32
+ // packages/cli/src/index.ts
33
+ var src_exports = {};
34
+ __export(src_exports, {
35
+ addCommand: () => addCommand,
36
+ addPackage: () => addPackage,
37
+ buildCommand: () => buildCommand,
38
+ createCLI: () => createCLI,
39
+ detectPackageManager: () => detectPackageManager,
40
+ devCommand: () => devCommand,
41
+ ensureDir: () => ensureDir,
42
+ generateCommand: () => generateCommand,
43
+ initCommand: () => initCommand,
44
+ installDependencies: () => installDependencies,
45
+ logger: () => logger,
46
+ renderTemplate: () => renderTemplate,
47
+ scaffoldProject: () => scaffoldProject,
48
+ showBanner: () => showBanner,
49
+ showDevBanner: () => showDevBanner,
50
+ showLogo: () => showLogo,
51
+ start: () => start,
52
+ startRepl: () => startRepl,
53
+ writeFile: () => writeFile
54
+ });
55
+ module.exports = __toCommonJS(src_exports);
17
56
 
18
- function _interopNamespace(e) {
19
- if (e && e.__esModule) return e;
20
- var n = Object.create(null);
21
- if (e) {
22
- Object.keys(e).forEach(function (k) {
23
- if (k !== 'default') {
24
- var d = Object.getOwnPropertyDescriptor(e, k);
25
- Object.defineProperty(n, k, d.get ? d : {
26
- enumerable: true,
27
- get: function () { return e[k]; }
28
- });
29
- }
30
- });
31
- }
32
- n.default = e;
33
- return Object.freeze(n);
34
- }
57
+ // packages/cli/src/cli.ts
58
+ var import_cac = require("cac");
35
59
 
36
- var p__namespace = /*#__PURE__*/_interopNamespace(p);
37
- var pc2__default = /*#__PURE__*/_interopDefault(pc2);
38
- var Handlebars__default = /*#__PURE__*/_interopDefault(Handlebars);
60
+ // packages/cli/src/commands/init.ts
61
+ var import_node_path3 = require("path");
62
+ var import_node_child_process2 = require("child_process");
63
+ var p = __toESM(require("@clack/prompts"), 1);
39
64
 
40
- var __defProp = Object.defineProperty;
41
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
65
+ // packages/cli/src/utils/logger.ts
66
+ var import_picocolors = __toESM(require("picocolors"), 1);
42
67
  function timestamp() {
43
- return pc2__default.default.dim(`[${(/* @__PURE__ */ new Date()).toLocaleTimeString()}]`);
68
+ return import_picocolors.default.dim(`[${(/* @__PURE__ */ new Date()).toLocaleTimeString()}]`);
44
69
  }
45
70
  __name(timestamp, "timestamp");
46
71
  function info(msg) {
47
- console.log(`${timestamp()} ${pc2__default.default.cyan("\u2139")} ${msg}`);
72
+ console.log(`${timestamp()} ${import_picocolors.default.cyan("\u2139")} ${msg}`);
48
73
  }
49
74
  __name(info, "info");
50
75
  function success(msg) {
51
- console.log(`${timestamp()} ${pc2__default.default.green("\u2714")} ${msg}`);
76
+ console.log(`${timestamp()} ${import_picocolors.default.green("\u2714")} ${msg}`);
52
77
  }
53
78
  __name(success, "success");
54
79
  function warn(msg) {
55
- console.log(`${timestamp()} ${pc2__default.default.yellow("\u26A0")} ${msg}`);
80
+ console.log(`${timestamp()} ${import_picocolors.default.yellow("\u26A0")} ${msg}`);
56
81
  }
57
82
  __name(warn, "warn");
58
83
  function error(msg) {
59
- console.error(`${timestamp()} ${pc2__default.default.red("\u2716")} ${msg}`);
84
+ console.error(`${timestamp()} ${import_picocolors.default.red("\u2716")} ${msg}`);
60
85
  }
61
86
  __name(error, "error");
62
87
  function step(msg) {
63
88
  console.log(`
64
- ${pc2__default.default.bold(pc2__default.default.cyan(msg))}`);
89
+ ${import_picocolors.default.bold(import_picocolors.default.cyan(msg))}`);
65
90
  }
66
91
  __name(step, "step");
67
92
  var logger = { info, success, warn, error, step };
68
- var __dirname$1 = path.dirname(url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index.cjs', document.baseURI).href))));
69
- var TEMPLATES_ROOT = path.resolve(__dirname$1, "..", "templates");
93
+
94
+ // packages/cli/src/utils/file.ts
95
+ var import_node_fs = require("fs");
96
+ var import_node_path = require("path");
97
+ var import_node_url = require("url");
98
+ var import_handlebars = __toESM(require("handlebars"), 1);
99
+ var __dirname = (0, import_node_path.dirname)((0, import_node_url.fileURLToPath)(__VOBS_CJS_FILE_URL));
100
+ var TEMPLATES_ROOT = (0, import_node_path.resolve)(__dirname, "..", "templates");
70
101
  function getTemplatesDir() {
71
102
  return TEMPLATES_ROOT;
72
103
  }
73
104
  __name(getTemplatesDir, "getTemplatesDir");
74
105
  function renderTemplate(templatePath, context) {
75
- const source = fs.readFileSync(templatePath, "utf-8");
76
- const template = Handlebars__default.default.compile(source);
106
+ const source = (0, import_node_fs.readFileSync)(templatePath, "utf-8");
107
+ const template = import_handlebars.default.compile(source);
77
108
  return template(context);
78
109
  }
79
110
  __name(renderTemplate, "renderTemplate");
80
111
  function writeFile(dir, filename, content) {
81
- const filePath = path.resolve(dir, filename);
82
- fs.mkdirSync(path.dirname(filePath), { recursive: true });
83
- fs.writeFileSync(filePath, content, "utf-8");
112
+ const filePath = (0, import_node_path.resolve)(dir, filename);
113
+ (0, import_node_fs.mkdirSync)((0, import_node_path.dirname)(filePath), { recursive: true });
114
+ (0, import_node_fs.writeFileSync)(filePath, content, "utf-8");
84
115
  }
85
116
  __name(writeFile, "writeFile");
86
117
  function ensureDir(dir) {
87
- if (!fs.existsSync(dir)) {
88
- fs.mkdirSync(dir, { recursive: true });
118
+ if (!(0, import_node_fs.existsSync)(dir)) {
119
+ (0, import_node_fs.mkdirSync)(dir, { recursive: true });
89
120
  }
90
121
  }
91
122
  __name(ensureDir, "ensureDir");
92
123
  async function copyDirRecursive(srcDir, destDir, context) {
93
- const { readdirSync } = await import('fs');
94
- const { join } = await import('path');
124
+ const { readdirSync } = await import("fs");
125
+ const { join } = await import("path");
95
126
  const entries = readdirSync(srcDir, { withFileTypes: true });
96
127
  for (const entry of entries) {
97
128
  const srcPath = join(srcDir, entry.name);
@@ -105,23 +136,28 @@ async function copyDirRecursive(srcDir, destDir, context) {
105
136
  const content = renderTemplate(srcPath, context);
106
137
  writeFile(destDir, destName, content);
107
138
  } else {
108
- const content = fs.readFileSync(srcPath, "utf-8");
139
+ const content = (0, import_node_fs.readFileSync)(srcPath, "utf-8");
109
140
  writeFile(destDir, destName, content);
110
141
  }
111
142
  }
112
143
  }
113
144
  __name(copyDirRecursive, "copyDirRecursive");
114
145
  async function scaffoldProject(targetDir, context) {
115
- const templateDir = path.resolve(TEMPLATES_ROOT, "basic");
146
+ const templateDir = (0, import_node_path.resolve)(TEMPLATES_ROOT, "basic");
116
147
  ensureDir(targetDir);
117
148
  await copyDirRecursive(templateDir, targetDir, context);
118
149
  }
119
150
  __name(scaffoldProject, "scaffoldProject");
151
+
152
+ // packages/cli/src/utils/pm.ts
153
+ var import_node_fs2 = require("fs");
154
+ var import_node_path2 = require("path");
155
+ var import_node_child_process = require("child_process");
120
156
  function detectPackageManager(targetDir) {
121
157
  if (targetDir) {
122
- if (fs.existsSync(path.resolve(targetDir, "pnpm-lock.yaml"))) return "pnpm";
123
- if (fs.existsSync(path.resolve(targetDir, "yarn.lock"))) return "yarn";
124
- if (fs.existsSync(path.resolve(targetDir, "package-lock.json"))) return "npm";
158
+ if ((0, import_node_fs2.existsSync)((0, import_node_path2.resolve)(targetDir, "pnpm-lock.yaml"))) return "pnpm";
159
+ if ((0, import_node_fs2.existsSync)((0, import_node_path2.resolve)(targetDir, "yarn.lock"))) return "yarn";
160
+ if ((0, import_node_fs2.existsSync)((0, import_node_path2.resolve)(targetDir, "package-lock.json"))) return "npm";
125
161
  }
126
162
  const userAgent = process.env.npm_config_user_agent || "";
127
163
  if (userAgent.startsWith("pnpm")) return "pnpm";
@@ -132,29 +168,29 @@ function detectPackageManager(targetDir) {
132
168
  __name(detectPackageManager, "detectPackageManager");
133
169
  function installDependencies(targetDir, pm) {
134
170
  const cmd = pm === "yarn" ? "yarn" : `${pm} install`;
135
- child_process.execSync(cmd, { cwd: targetDir, stdio: "inherit" });
171
+ (0, import_node_child_process.execSync)(cmd, { cwd: targetDir, stdio: "inherit" });
136
172
  }
137
173
  __name(installDependencies, "installDependencies");
138
174
  function addPackage(targetDir, pm, pkg, dev) {
139
175
  const installFlag = dev ? "-D" : "";
140
176
  const cmd = pm === "npm" ? `npm install ${installFlag} ${pkg}` : pm === "yarn" ? `yarn add ${installFlag} ${pkg}` : `pnpm add ${installFlag} ${pkg}`;
141
- child_process.execSync(cmd, { cwd: targetDir, stdio: "inherit" });
177
+ (0, import_node_child_process.execSync)(cmd, { cwd: targetDir, stdio: "inherit" });
142
178
  }
143
179
  __name(addPackage, "addPackage");
144
180
 
145
181
  // packages/cli/src/commands/init.ts
146
182
  async function initCommand(options) {
147
- const projectName = options.name || await p__namespace.text({
183
+ const projectName = options.name || await p.text({
148
184
  message: "Project name:",
149
185
  placeholder: "my-vobs-app",
150
186
  validate: /* @__PURE__ */ __name((v) => !v ? "Project name is required" : void 0, "validate")
151
187
  });
152
- if (p__namespace.isCancel(projectName)) {
153
- p__namespace.cancel("Cancelled");
188
+ if (p.isCancel(projectName)) {
189
+ p.cancel("Cancelled");
154
190
  return;
155
191
  }
156
- const targetDir = options.targetDir || path.resolve(process.cwd(), projectName);
157
- const packageManager = options.packageManager || await p__namespace.select({
192
+ const targetDir = options.targetDir || (0, import_node_path3.resolve)(process.cwd(), projectName);
193
+ const packageManager = options.packageManager || await p.select({
158
194
  message: "Package manager:",
159
195
  options: [
160
196
  { value: "pnpm", label: "pnpm" },
@@ -162,24 +198,24 @@ async function initCommand(options) {
162
198
  { value: "yarn", label: "yarn" }
163
199
  ]
164
200
  });
165
- if (p__namespace.isCancel(packageManager)) {
166
- p__namespace.cancel("Cancelled");
201
+ if (p.isCancel(packageManager)) {
202
+ p.cancel("Cancelled");
167
203
  return;
168
204
  }
169
- const useTypescript = options.typescript ?? await p__namespace.confirm({
205
+ const useTypescript = options.typescript ?? await p.confirm({
170
206
  message: "Use TypeScript?",
171
207
  initialValue: true
172
208
  });
173
- if (p__namespace.isCancel(useTypescript)) {
174
- p__namespace.cancel("Cancelled");
209
+ if (p.isCancel(useTypescript)) {
210
+ p.cancel("Cancelled");
175
211
  return;
176
212
  }
177
- const initGit = options.git ?? await p__namespace.confirm({
213
+ const initGit = options.git ?? await p.confirm({
178
214
  message: "Initialize a git repository?",
179
215
  initialValue: true
180
216
  });
181
- if (p__namespace.isCancel(initGit)) {
182
- p__namespace.cancel("Cancelled");
217
+ if (p.isCancel(initGit)) {
218
+ p.cancel("Cancelled");
183
219
  return;
184
220
  }
185
221
  logger.step(`Creating project ${projectName}...`);
@@ -196,7 +232,7 @@ async function initCommand(options) {
196
232
  if (initGit) {
197
233
  logger.step("Initializing git repository...");
198
234
  try {
199
- child_process.execSync("git init", { cwd: targetDir, stdio: "ignore" });
235
+ (0, import_node_child_process2.execSync)("git init", { cwd: targetDir, stdio: "ignore" });
200
236
  logger.success("Git repository initialized");
201
237
  } catch {
202
238
  logger.warn("Git not found, skipping git init");
@@ -208,9 +244,12 @@ async function initCommand(options) {
208
244
  `);
209
245
  }
210
246
  __name(initCommand, "initCommand");
247
+
248
+ // packages/cli/src/commands/dev.ts
249
+ var import_vite = require("vite");
211
250
  async function devCommand(options) {
212
251
  logger.info("Starting dev server...");
213
- const server = await vite.createServer({
252
+ const server = await (0, import_vite.createServer)({
214
253
  configFile: options.config,
215
254
  server: {
216
255
  port: options.port,
@@ -222,9 +261,12 @@ async function devCommand(options) {
222
261
  logger.success("Dev server is running");
223
262
  }
224
263
  __name(devCommand, "devCommand");
264
+
265
+ // packages/cli/src/commands/build.ts
266
+ var import_vite2 = require("vite");
225
267
  async function buildCommand(options) {
226
268
  logger.info("Building for production...");
227
- await vite.build({
269
+ await (0, import_vite2.build)({
228
270
  configFile: options.config,
229
271
  build: {
230
272
  outDir: options.outDir
@@ -234,56 +276,60 @@ async function buildCommand(options) {
234
276
  logger.success("Build complete");
235
277
  }
236
278
  __name(buildCommand, "buildCommand");
279
+
280
+ // packages/cli/src/commands/generate.ts
281
+ var import_node_path4 = require("path");
282
+ var p2 = __toESM(require("@clack/prompts"), 1);
237
283
  async function generateCommand(options) {
238
- const type = options.type || await p__namespace.select({
284
+ const type = options.type || await p2.select({
239
285
  message: "What to generate?",
240
286
  options: [
241
287
  { value: "component", label: "Component" },
242
288
  { value: "page", label: "Page" }
243
289
  ]
244
290
  });
245
- if (p__namespace.isCancel(type)) {
246
- p__namespace.cancel("Cancelled");
291
+ if (p2.isCancel(type)) {
292
+ p2.cancel("Cancelled");
247
293
  return;
248
294
  }
249
- const name = options.name || await p__namespace.text({
295
+ const name = options.name || await p2.text({
250
296
  message: "Name:",
251
297
  placeholder: type === "component" ? "Button" : "AboutPage",
252
298
  validate: /* @__PURE__ */ __name((v) => !v ? "Name is required" : void 0, "validate")
253
299
  });
254
- if (p__namespace.isCancel(name)) {
255
- p__namespace.cancel("Cancelled");
300
+ if (p2.isCancel(name)) {
301
+ p2.cancel("Cancelled");
256
302
  return;
257
303
  }
258
304
  const templatesDir = getTemplatesDir();
259
305
  if (type === "component") {
260
- const targetDir = options.targetDir || path.resolve(process.cwd(), "src/components");
306
+ const targetDir = options.targetDir || (0, import_node_path4.resolve)(process.cwd(), "src/components");
261
307
  ensureDir(targetDir);
262
308
  const context = {
263
309
  name: toPascalCase(name),
264
310
  kebabName: toKebabCase(name)
265
311
  };
266
312
  const content = renderTemplate(
267
- path.resolve(templatesDir, "component.hbs"),
313
+ (0, import_node_path4.resolve)(templatesDir, "component.hbs"),
268
314
  context
269
315
  );
270
316
  const filename = `${context.name}.tsx`;
271
317
  writeFile(targetDir, filename, content);
272
- logger.success(`Created ${type} at ${path.resolve(targetDir, filename)}`);
318
+ logger.success(`Created ${type} at ${(0, import_node_path4.resolve)(targetDir, filename)}`);
273
319
  } else {
274
- const targetDir = options.targetDir || path.resolve(process.cwd(), "src/pages");
320
+ const targetDir = options.targetDir || (0, import_node_path4.resolve)(process.cwd(), "src/pages");
275
321
  ensureDir(targetDir);
276
322
  const context = {
277
323
  name: toPascalCase(name),
278
324
  path: `/${toKebabCase(name)}`
279
325
  };
280
326
  const content = renderTemplate(
281
- path.resolve(templatesDir, "page.hbs"),
327
+ (0, import_node_path4.resolve)(templatesDir, "page.hbs"),
282
328
  context
283
329
  );
284
330
  const filename = `${context.name}.tsx`;
285
331
  writeFile(targetDir, filename, content);
286
- logger.success(`Created ${type} at ${path.resolve(targetDir, filename)}`);
332
+ logger.success(`Created ${type} at ${(0, import_node_path4.resolve)(targetDir, filename)}`);
287
333
  }
288
334
  }
289
335
  __name(generateCommand, "generateCommand");
@@ -295,22 +341,25 @@ function toKebabCase(str) {
295
341
  return str.replace(/([A-Z])/g, "-$1").toLowerCase().replace(/^-/, "").replace(/[^a-z0-9-]/g, "-").replace(/--+/g, "-").replace(/^-|-$/g, "");
296
342
  }
297
343
  __name(toKebabCase, "toKebabCase");
344
+
345
+ // packages/cli/src/commands/add.ts
346
+ var p3 = __toESM(require("@clack/prompts"), 1);
298
347
  async function addCommand(options) {
299
- const pkg = options.package || await p__namespace.text({
348
+ const pkg = options.package || await p3.text({
300
349
  message: "Package to add:",
301
350
  placeholder: "@vobs/ui",
302
351
  validate: /* @__PURE__ */ __name((v) => !v ? "Package name is required" : void 0, "validate")
303
352
  });
304
- if (p__namespace.isCancel(pkg)) {
305
- p__namespace.cancel("Cancelled");
353
+ if (p3.isCancel(pkg)) {
354
+ p3.cancel("Cancelled");
306
355
  return;
307
356
  }
308
- const isDev = options.dev ?? await p__namespace.confirm({
357
+ const isDev = options.dev ?? await p3.confirm({
309
358
  message: "Save as dev dependency?",
310
359
  initialValue: false
311
360
  });
312
- if (p__namespace.isCancel(isDev)) {
313
- p__namespace.cancel("Cancelled");
361
+ if (p3.isCancel(isDev)) {
362
+ p3.cancel("Cancelled");
314
363
  return;
315
364
  }
316
365
  const pm = detectPackageManager(process.cwd());
@@ -354,7 +403,7 @@ __name(showDevBanner, "showDevBanner");
354
403
 
355
404
  // packages/cli/src/cli.ts
356
405
  function createCLI() {
357
- const cli = cac.cac("vobs");
406
+ const cli = (0, import_cac.cac)("vobs");
358
407
  cli.command("init [name]", "Create a new vobs project").option("--dir <dir>", "Target directory").option("--pm <pm>", "Package manager (pnpm/npm/yarn)").option("--no-typescript", "Do not use TypeScript").option("--no-git", "Do not initialize git").action(async (name, options) => {
359
408
  await initCommand({
360
409
  name,
@@ -412,12 +461,17 @@ function createCLI() {
412
461
  return cli;
413
462
  }
414
463
  __name(createCLI, "createCLI");
464
+
465
+ // packages/cli/src/repl.ts
466
+ var import_promises = require("readline/promises");
467
+ var import_node_process = require("process");
468
+ var import_picocolors2 = __toESM(require("picocolors"), 1);
415
469
  async function startRepl() {
416
470
  showLogo();
417
- const rl = promises.createInterface({
418
- input: process$1.stdin,
419
- output: process$1.stdout,
420
- prompt: ` ${pc2__default.default.magenta("\u276F")} `,
471
+ const rl = (0, import_promises.createInterface)({
472
+ input: import_node_process.stdin,
473
+ output: import_node_process.stdout,
474
+ prompt: ` ${import_picocolors2.default.magenta("\u276F")} `,
421
475
  terminal: true
422
476
  });
423
477
  rl.prompt();
@@ -431,7 +485,7 @@ async function startRepl() {
431
485
  try {
432
486
  await dispatch(args);
433
487
  } catch (err) {
434
- console.error(` ${pc2__default.default.red("\u2716")} ${err instanceof Error ? err.message : String(err)}`);
488
+ console.error(` ${import_picocolors2.default.red("\u2716")} ${err instanceof Error ? err.message : String(err)}`);
435
489
  }
436
490
  rl.prompt();
437
491
  }
@@ -440,15 +494,15 @@ __name(startRepl, "startRepl");
440
494
  var TABLE = {
441
495
  help: {
442
496
  cmd: /* @__PURE__ */ __name(async () => {
443
- console.log(` ${pc2__default.default.bold("Available commands:")}`);
444
- console.log(` ${pc2__default.default.dim("exit|quit")} Leave the interactive CLI`);
445
- console.log(` ${pc2__default.default.dim("clear")} Clear the screen`);
446
- console.log(` ${pc2__default.default.dim("logo")} Re-print the banner`);
447
- console.log(` ${pc2__default.default.dim("version")} Show version`);
448
- console.log(` ${pc2__default.default.dim("init <name>")} Create a new vobs project`);
449
- console.log(` ${pc2__default.default.dim("generate <name>")} Generate a component/page`);
450
- console.log(` ${pc2__default.default.dim("add <package>")} Add a package`);
451
- console.log(` ${pc2__default.default.dim("dev|build")} Use \`vobs dev\` / \`vobs build\` in a terminal`);
497
+ console.log(` ${import_picocolors2.default.bold("Available commands:")}`);
498
+ console.log(` ${import_picocolors2.default.dim("exit|quit")} Leave the interactive CLI`);
499
+ console.log(` ${import_picocolors2.default.dim("clear")} Clear the screen`);
500
+ console.log(` ${import_picocolors2.default.dim("logo")} Re-print the banner`);
501
+ console.log(` ${import_picocolors2.default.dim("version")} Show version`);
502
+ console.log(` ${import_picocolors2.default.dim("init <name>")} Create a new vobs project`);
503
+ console.log(` ${import_picocolors2.default.dim("generate <name>")} Generate a component/page`);
504
+ console.log(` ${import_picocolors2.default.dim("add <package>")} Add a package`);
505
+ console.log(` ${import_picocolors2.default.dim("dev|build")} Use \`vobs dev\` / \`vobs build\` in a terminal`);
452
506
  }, "cmd"),
453
507
  help: ""
454
508
  },
@@ -510,7 +564,7 @@ async function dispatch(args) {
510
564
  await entry.cmd(rest);
511
565
  return;
512
566
  }
513
- console.log(` ${pc2__default.default.yellow("\u26A0")} Unknown command: ${pc2__default.default.bold(String(name))}. Type ${pc2__default.default.cyan("help")} to see options.`);
567
+ console.log(` ${import_picocolors2.default.yellow("\u26A0")} Unknown command: ${import_picocolors2.default.bold(String(name))}. Type ${import_picocolors2.default.cyan("help")} to see options.`);
514
568
  }
515
569
  __name(dispatch, "dispatch");
516
570
  function splitArgs(line) {
@@ -537,25 +591,26 @@ async function start(args) {
537
591
  createCLI().parse();
538
592
  }
539
593
  __name(start, "start");
540
-
541
- exports.addCommand = addCommand;
542
- exports.addPackage = addPackage;
543
- exports.buildCommand = buildCommand;
544
- exports.createCLI = createCLI;
545
- exports.detectPackageManager = detectPackageManager;
546
- exports.devCommand = devCommand;
547
- exports.ensureDir = ensureDir;
548
- exports.generateCommand = generateCommand;
549
- exports.initCommand = initCommand;
550
- exports.installDependencies = installDependencies;
551
- exports.logger = logger;
552
- exports.renderTemplate = renderTemplate;
553
- exports.scaffoldProject = scaffoldProject;
554
- exports.showBanner = showBanner;
555
- exports.showDevBanner = showDevBanner;
556
- exports.showLogo = showLogo;
557
- exports.start = start;
558
- exports.startRepl = startRepl;
559
- exports.writeFile = writeFile;
560
- //# sourceMappingURL=index.cjs.map
594
+ // Annotate the CommonJS export names for ESM import in node:
595
+ 0 && (module.exports = {
596
+ addCommand,
597
+ addPackage,
598
+ buildCommand,
599
+ createCLI,
600
+ detectPackageManager,
601
+ devCommand,
602
+ ensureDir,
603
+ generateCommand,
604
+ initCommand,
605
+ installDependencies,
606
+ logger,
607
+ renderTemplate,
608
+ scaffoldProject,
609
+ showBanner,
610
+ showDevBanner,
611
+ showLogo,
612
+ start,
613
+ startRepl,
614
+ writeFile
615
+ });
561
616
  //# sourceMappingURL=index.cjs.map