@vobs/cli 1.2.1 → 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 +1 -1
package/dist/banner.cjs CHANGED
@@ -1,9 +1,32 @@
1
- 'use strict';
2
-
1
+ var __VOBS_CJS_FILE_URL = require("url").pathToFileURL(__filename).href;
2
+ "use strict";
3
3
  var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
4
7
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
5
21
 
6
22
  // packages/cli/src/banner.ts
23
+ var banner_exports = {};
24
+ __export(banner_exports, {
25
+ showBanner: () => showBanner,
26
+ showDevBanner: () => showDevBanner,
27
+ showLogo: () => showLogo
28
+ });
29
+ module.exports = __toCommonJS(banner_exports);
7
30
  var BANNER_LINE1 = "\u{1D5E9}\u{1D5E2}\u{1D5D5}\u{1D5E6} \u{1D5D6}\u{1D5DF}\u{1D5DC} \u{1D603}\u{1D7ED}.\u{1D7EC}";
8
31
  var BANNER_TAGLINE = "Signals First \xB7 Zero Re-renders \xB7 Ultra Lightweight";
9
32
  var INDENT = " ";
@@ -29,9 +52,10 @@ function showDevBanner() {
29
52
  console.log();
30
53
  }
31
54
  __name(showDevBanner, "showDevBanner");
32
-
33
- exports.showBanner = showBanner;
34
- exports.showDevBanner = showDevBanner;
35
- exports.showLogo = showLogo;
36
- //# sourceMappingURL=banner.cjs.map
55
+ // Annotate the CommonJS export names for ESM import in node:
56
+ 0 && (module.exports = {
57
+ showBanner,
58
+ showDevBanner,
59
+ showLogo
60
+ });
37
61
  //# sourceMappingURL=banner.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/banner.ts"],"names":[],"mappings":";;;;;;AAWA,IAAM,YAAA,GAAe,+FAAA;AACrB,IAAM,cAAA,GAAiB,2DAAA;AAGvB,IAAM,MAAA,GAAS,IAAA;AACf,IAAM,GAAA,GAAM,SAAA;AACZ,IAAM,KAAA,GAAQ,SAAA;AAGP,SAAS,QAAA,GAAiB;AAC/B,EAAA,OAAA,CAAQ,GAAA,EAAI;AACZ,EAAA,OAAA,CAAQ,GAAA,EAAI;AACZ,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,EAAG,MAAM,CAAA,EAAG,YAAY,CAAA,CAAE,CAAA;AACtC,EAAA,OAAA,CAAQ,GAAA,EAAI;AACZ,EAAA,OAAA,CAAQ,GAAA,CAAI,GAAG,MAAM,CAAA,EAAG,GAAG,CAAA,EAAG,cAAc,CAAA,EAAG,KAAK,CAAA,CAAE,CAAA;AACtD,EAAA,OAAA,CAAQ,GAAA,EAAI;AACZ,EAAA,OAAA,CAAQ,GAAA,EAAI;AACd;AARgB,MAAA,CAAA,QAAA,EAAA,UAAA,CAAA;AAWT,SAAS,UAAA,GAAmB;AACjC,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,EAAG,MAAM,CAAA,EAAG,YAAY,CAAA,CAAE,CAAA;AACxC;AAFgB,MAAA,CAAA,UAAA,EAAA,YAAA,CAAA;AAKT,SAAS,aAAA,GAAsB;AACpC,EAAA,OAAA,CAAQ,GAAA,EAAI;AACZ,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,EAAG,MAAM,CAAA,EAAG,YAAY,CAAA,CAAE,CAAA;AACtC,EAAA,OAAA,CAAQ,GAAA,EAAI;AACd;AAJgB,MAAA,CAAA,aAAA,EAAA,eAAA,CAAA","file":"banner.cjs","sourcesContent":["/**\n * VOBS CLI Banner — Mathematical Bold Sans-Serif\n * 𝗩𝗢𝗕𝗦 𝗖𝗟𝗜 𝘃𝟭.𝟬\n * Signals First · Zero Re-renders · Ultra Lightweight\n *\n * The banner is left-aligned with a fixed indent rather than horizontally\n * centered. Centering depends on the terminal column width and per-glyph\n * render width, neither of which is reliably knowable, so it drifts as the\n * window resizes. Fixed indent is stable across any terminal size.\n */\n\nconst BANNER_LINE1 = '𝗩𝗢𝗕𝗦 𝗖𝗟𝗜 𝘃𝟭.𝟬'\nconst BANNER_TAGLINE = 'Signals First · Zero Re-renders · Ultra Lightweight'\n\n/** Fixed left indent applied to every banner line (2 spaces). */\nconst INDENT = ' '\nconst DIM = '\\x1b[2m'\nconst RESET = '\\x1b[0m'\n\n/** Show full banner (used for logo command, --help) */\nexport function showLogo(): void {\n console.log()\n console.log()\n console.log(`${INDENT}${BANNER_LINE1}`)\n console.log()\n console.log(`${INDENT}${DIM}${BANNER_TAGLINE}${RESET}`)\n console.log()\n console.log()\n}\n\n/** Show single-line version banner (used for --version) */\nexport function showBanner(): void {\n console.log(`${INDENT}${BANNER_LINE1}`)\n}\n\n/** Show the dev server start banner */\nexport function showDevBanner(): void {\n console.log()\n console.log(`${INDENT}${BANNER_LINE1}`)\n console.log()\n}"]}
1
+ {"version":3,"sources":["../src/banner.ts"],"sourcesContent":["/**\n * VOBS CLI Banner — Mathematical Bold Sans-Serif\n * 𝗩𝗢𝗕𝗦 𝗖𝗟𝗜 𝘃𝟭.𝟬\n * Signals First · Zero Re-renders · Ultra Lightweight\n *\n * The banner is left-aligned with a fixed indent rather than horizontally\n * centered. Centering depends on the terminal column width and per-glyph\n * render width, neither of which is reliably knowable, so it drifts as the\n * window resizes. Fixed indent is stable across any terminal size.\n */\n\nconst BANNER_LINE1 = '𝗩𝗢𝗕𝗦 𝗖𝗟𝗜 𝘃𝟭.𝟬'\nconst BANNER_TAGLINE = 'Signals First · Zero Re-renders · Ultra Lightweight'\n\n/** Fixed left indent applied to every banner line (2 spaces). */\nconst INDENT = ' '\nconst DIM = '\\x1b[2m'\nconst RESET = '\\x1b[0m'\n\n/** Show full banner (used for logo command, --help) */\nexport function showLogo(): void {\n console.log()\n console.log()\n console.log(`${INDENT}${BANNER_LINE1}`)\n console.log()\n console.log(`${INDENT}${DIM}${BANNER_TAGLINE}${RESET}`)\n console.log()\n console.log()\n}\n\n/** Show single-line version banner (used for --version) */\nexport function showBanner(): void {\n console.log(`${INDENT}${BANNER_LINE1}`)\n}\n\n/** Show the dev server start banner */\nexport function showDevBanner(): void {\n console.log()\n console.log(`${INDENT}${BANNER_LINE1}`)\n console.log()\n}"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWA,IAAM,eAAe;AACrB,IAAM,iBAAiB;AAGvB,IAAM,SAAS;AACf,IAAM,MAAM;AACZ,IAAM,QAAQ;AAGP,SAAS,WAAiB;AAC/B,UAAQ,IAAI;AACZ,UAAQ,IAAI;AACZ,UAAQ,IAAI,GAAG,MAAM,GAAG,YAAY,EAAE;AACtC,UAAQ,IAAI;AACZ,UAAQ,IAAI,GAAG,MAAM,GAAG,GAAG,GAAG,cAAc,GAAG,KAAK,EAAE;AACtD,UAAQ,IAAI;AACZ,UAAQ,IAAI;AACd;AARgB;AAWT,SAAS,aAAmB;AACjC,UAAQ,IAAI,GAAG,MAAM,GAAG,YAAY,EAAE;AACxC;AAFgB;AAKT,SAAS,gBAAsB;AACpC,UAAQ,IAAI;AACZ,UAAQ,IAAI,GAAG,MAAM,GAAG,YAAY,EAAE;AACtC,UAAQ,IAAI;AACd;AAJgB;","names":[]}
package/dist/banner.js CHANGED
@@ -27,7 +27,9 @@ function showDevBanner() {
27
27
  console.log();
28
28
  }
29
29
  __name(showDevBanner, "showDevBanner");
30
-
31
- export { showBanner, showDevBanner, showLogo };
32
- //# sourceMappingURL=banner.js.map
30
+ export {
31
+ showBanner,
32
+ showDevBanner,
33
+ showLogo
34
+ };
33
35
  //# sourceMappingURL=banner.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/banner.ts"],"names":[],"mappings":";;;;AAWA,IAAM,YAAA,GAAe,+FAAA;AACrB,IAAM,cAAA,GAAiB,2DAAA;AAGvB,IAAM,MAAA,GAAS,IAAA;AACf,IAAM,GAAA,GAAM,SAAA;AACZ,IAAM,KAAA,GAAQ,SAAA;AAGP,SAAS,QAAA,GAAiB;AAC/B,EAAA,OAAA,CAAQ,GAAA,EAAI;AACZ,EAAA,OAAA,CAAQ,GAAA,EAAI;AACZ,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,EAAG,MAAM,CAAA,EAAG,YAAY,CAAA,CAAE,CAAA;AACtC,EAAA,OAAA,CAAQ,GAAA,EAAI;AACZ,EAAA,OAAA,CAAQ,GAAA,CAAI,GAAG,MAAM,CAAA,EAAG,GAAG,CAAA,EAAG,cAAc,CAAA,EAAG,KAAK,CAAA,CAAE,CAAA;AACtD,EAAA,OAAA,CAAQ,GAAA,EAAI;AACZ,EAAA,OAAA,CAAQ,GAAA,EAAI;AACd;AARgB,MAAA,CAAA,QAAA,EAAA,UAAA,CAAA;AAWT,SAAS,UAAA,GAAmB;AACjC,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,EAAG,MAAM,CAAA,EAAG,YAAY,CAAA,CAAE,CAAA;AACxC;AAFgB,MAAA,CAAA,UAAA,EAAA,YAAA,CAAA;AAKT,SAAS,aAAA,GAAsB;AACpC,EAAA,OAAA,CAAQ,GAAA,EAAI;AACZ,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,EAAG,MAAM,CAAA,EAAG,YAAY,CAAA,CAAE,CAAA;AACtC,EAAA,OAAA,CAAQ,GAAA,EAAI;AACd;AAJgB,MAAA,CAAA,aAAA,EAAA,eAAA,CAAA","file":"banner.js","sourcesContent":["/**\n * VOBS CLI Banner — Mathematical Bold Sans-Serif\n * 𝗩𝗢𝗕𝗦 𝗖𝗟𝗜 𝘃𝟭.𝟬\n * Signals First · Zero Re-renders · Ultra Lightweight\n *\n * The banner is left-aligned with a fixed indent rather than horizontally\n * centered. Centering depends on the terminal column width and per-glyph\n * render width, neither of which is reliably knowable, so it drifts as the\n * window resizes. Fixed indent is stable across any terminal size.\n */\n\nconst BANNER_LINE1 = '𝗩𝗢𝗕𝗦 𝗖𝗟𝗜 𝘃𝟭.𝟬'\nconst BANNER_TAGLINE = 'Signals First · Zero Re-renders · Ultra Lightweight'\n\n/** Fixed left indent applied to every banner line (2 spaces). */\nconst INDENT = ' '\nconst DIM = '\\x1b[2m'\nconst RESET = '\\x1b[0m'\n\n/** Show full banner (used for logo command, --help) */\nexport function showLogo(): void {\n console.log()\n console.log()\n console.log(`${INDENT}${BANNER_LINE1}`)\n console.log()\n console.log(`${INDENT}${DIM}${BANNER_TAGLINE}${RESET}`)\n console.log()\n console.log()\n}\n\n/** Show single-line version banner (used for --version) */\nexport function showBanner(): void {\n console.log(`${INDENT}${BANNER_LINE1}`)\n}\n\n/** Show the dev server start banner */\nexport function showDevBanner(): void {\n console.log()\n console.log(`${INDENT}${BANNER_LINE1}`)\n console.log()\n}"]}
1
+ {"version":3,"sources":["../src/banner.ts"],"sourcesContent":["/**\n * VOBS CLI Banner — Mathematical Bold Sans-Serif\n * 𝗩𝗢𝗕𝗦 𝗖𝗟𝗜 𝘃𝟭.𝟬\n * Signals First · Zero Re-renders · Ultra Lightweight\n *\n * The banner is left-aligned with a fixed indent rather than horizontally\n * centered. Centering depends on the terminal column width and per-glyph\n * render width, neither of which is reliably knowable, so it drifts as the\n * window resizes. Fixed indent is stable across any terminal size.\n */\n\nconst BANNER_LINE1 = '𝗩𝗢𝗕𝗦 𝗖𝗟𝗜 𝘃𝟭.𝟬'\nconst BANNER_TAGLINE = 'Signals First · Zero Re-renders · Ultra Lightweight'\n\n/** Fixed left indent applied to every banner line (2 spaces). */\nconst INDENT = ' '\nconst DIM = '\\x1b[2m'\nconst RESET = '\\x1b[0m'\n\n/** Show full banner (used for logo command, --help) */\nexport function showLogo(): void {\n console.log()\n console.log()\n console.log(`${INDENT}${BANNER_LINE1}`)\n console.log()\n console.log(`${INDENT}${DIM}${BANNER_TAGLINE}${RESET}`)\n console.log()\n console.log()\n}\n\n/** Show single-line version banner (used for --version) */\nexport function showBanner(): void {\n console.log(`${INDENT}${BANNER_LINE1}`)\n}\n\n/** Show the dev server start banner */\nexport function showDevBanner(): void {\n console.log()\n console.log(`${INDENT}${BANNER_LINE1}`)\n console.log()\n}"],"mappings":";;;;AAWA,IAAM,eAAe;AACrB,IAAM,iBAAiB;AAGvB,IAAM,SAAS;AACf,IAAM,MAAM;AACZ,IAAM,QAAQ;AAGP,SAAS,WAAiB;AAC/B,UAAQ,IAAI;AACZ,UAAQ,IAAI;AACZ,UAAQ,IAAI,GAAG,MAAM,GAAG,YAAY,EAAE;AACtC,UAAQ,IAAI;AACZ,UAAQ,IAAI,GAAG,MAAM,GAAG,GAAG,GAAG,cAAc,GAAG,KAAK,EAAE;AACtD,UAAQ,IAAI;AACZ,UAAQ,IAAI;AACd;AARgB;AAWT,SAAS,aAAmB;AACjC,UAAQ,IAAI,GAAG,MAAM,GAAG,YAAY,EAAE;AACxC;AAFgB;AAKT,SAAS,gBAAsB;AACpC,UAAQ,IAAI;AACZ,UAAQ,IAAI,GAAG,MAAM,GAAG,YAAY,EAAE;AACtC,UAAQ,IAAI;AACd;AAJgB;","names":[]}
package/dist/cli.cjs CHANGED
@@ -1,95 +1,108 @@
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 pc = require('picocolors');
8
- var fs = require('fs');
9
- var url = require('url');
10
- var Handlebars = require('handlebars');
11
- var vite = require('vite');
12
-
13
- var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
14
- function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
15
-
16
- function _interopNamespace(e) {
17
- if (e && e.__esModule) return e;
18
- var n = Object.create(null);
19
- if (e) {
20
- Object.keys(e).forEach(function (k) {
21
- if (k !== 'default') {
22
- var d = Object.getOwnPropertyDescriptor(e, k);
23
- Object.defineProperty(n, k, d.get ? d : {
24
- enumerable: true,
25
- get: function () { return e[k]; }
26
- });
27
- }
28
- });
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 });
29
19
  }
30
- n.default = e;
31
- return Object.freeze(n);
32
- }
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);
33
31
 
34
- var p__namespace = /*#__PURE__*/_interopNamespace(p);
35
- var pc__default = /*#__PURE__*/_interopDefault(pc);
36
- var Handlebars__default = /*#__PURE__*/_interopDefault(Handlebars);
32
+ // packages/cli/src/cli.ts
33
+ var cli_exports = {};
34
+ __export(cli_exports, {
35
+ createCLI: () => createCLI
36
+ });
37
+ module.exports = __toCommonJS(cli_exports);
38
+ var import_cac = require("cac");
37
39
 
38
- var __defProp = Object.defineProperty;
39
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
40
+ // packages/cli/src/commands/init.ts
41
+ var import_node_path3 = require("path");
42
+ var import_node_child_process2 = require("child_process");
43
+ var p = __toESM(require("@clack/prompts"), 1);
44
+
45
+ // packages/cli/src/utils/logger.ts
46
+ var import_picocolors = __toESM(require("picocolors"), 1);
40
47
  function timestamp() {
41
- return pc__default.default.dim(`[${(/* @__PURE__ */ new Date()).toLocaleTimeString()}]`);
48
+ return import_picocolors.default.dim(`[${(/* @__PURE__ */ new Date()).toLocaleTimeString()}]`);
42
49
  }
43
50
  __name(timestamp, "timestamp");
44
51
  function info(msg) {
45
- console.log(`${timestamp()} ${pc__default.default.cyan("\u2139")} ${msg}`);
52
+ console.log(`${timestamp()} ${import_picocolors.default.cyan("\u2139")} ${msg}`);
46
53
  }
47
54
  __name(info, "info");
48
55
  function success(msg) {
49
- console.log(`${timestamp()} ${pc__default.default.green("\u2714")} ${msg}`);
56
+ console.log(`${timestamp()} ${import_picocolors.default.green("\u2714")} ${msg}`);
50
57
  }
51
58
  __name(success, "success");
52
59
  function warn(msg) {
53
- console.log(`${timestamp()} ${pc__default.default.yellow("\u26A0")} ${msg}`);
60
+ console.log(`${timestamp()} ${import_picocolors.default.yellow("\u26A0")} ${msg}`);
54
61
  }
55
62
  __name(warn, "warn");
56
63
  function error(msg) {
57
- console.error(`${timestamp()} ${pc__default.default.red("\u2716")} ${msg}`);
64
+ console.error(`${timestamp()} ${import_picocolors.default.red("\u2716")} ${msg}`);
58
65
  }
59
66
  __name(error, "error");
60
67
  function step(msg) {
61
68
  console.log(`
62
- ${pc__default.default.bold(pc__default.default.cyan(msg))}`);
69
+ ${import_picocolors.default.bold(import_picocolors.default.cyan(msg))}`);
63
70
  }
64
71
  __name(step, "step");
65
72
  var logger = { info, success, warn, error, step };
66
- 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('cli.cjs', document.baseURI).href))));
67
- var TEMPLATES_ROOT = path.resolve(__dirname$1, "..", "templates");
73
+
74
+ // packages/cli/src/utils/file.ts
75
+ var import_node_fs = require("fs");
76
+ var import_node_path = require("path");
77
+ var import_node_url = require("url");
78
+ var import_handlebars = __toESM(require("handlebars"), 1);
79
+ var __dirname = (0, import_node_path.dirname)((0, import_node_url.fileURLToPath)(__VOBS_CJS_FILE_URL));
80
+ var TEMPLATES_ROOT = (0, import_node_path.resolve)(__dirname, "..", "templates");
68
81
  function getTemplatesDir() {
69
82
  return TEMPLATES_ROOT;
70
83
  }
71
84
  __name(getTemplatesDir, "getTemplatesDir");
72
85
  function renderTemplate(templatePath, context) {
73
- const source = fs.readFileSync(templatePath, "utf-8");
74
- const template = Handlebars__default.default.compile(source);
86
+ const source = (0, import_node_fs.readFileSync)(templatePath, "utf-8");
87
+ const template = import_handlebars.default.compile(source);
75
88
  return template(context);
76
89
  }
77
90
  __name(renderTemplate, "renderTemplate");
78
91
  function writeFile(dir, filename, content) {
79
- const filePath = path.resolve(dir, filename);
80
- fs.mkdirSync(path.dirname(filePath), { recursive: true });
81
- fs.writeFileSync(filePath, content, "utf-8");
92
+ const filePath = (0, import_node_path.resolve)(dir, filename);
93
+ (0, import_node_fs.mkdirSync)((0, import_node_path.dirname)(filePath), { recursive: true });
94
+ (0, import_node_fs.writeFileSync)(filePath, content, "utf-8");
82
95
  }
83
96
  __name(writeFile, "writeFile");
84
97
  function ensureDir(dir) {
85
- if (!fs.existsSync(dir)) {
86
- fs.mkdirSync(dir, { recursive: true });
98
+ if (!(0, import_node_fs.existsSync)(dir)) {
99
+ (0, import_node_fs.mkdirSync)(dir, { recursive: true });
87
100
  }
88
101
  }
89
102
  __name(ensureDir, "ensureDir");
90
103
  async function copyDirRecursive(srcDir, destDir, context) {
91
- const { readdirSync } = await import('fs');
92
- const { join } = await import('path');
104
+ const { readdirSync } = await import("fs");
105
+ const { join } = await import("path");
93
106
  const entries = readdirSync(srcDir, { withFileTypes: true });
94
107
  for (const entry of entries) {
95
108
  const srcPath = join(srcDir, entry.name);
@@ -103,23 +116,28 @@ async function copyDirRecursive(srcDir, destDir, context) {
103
116
  const content = renderTemplate(srcPath, context);
104
117
  writeFile(destDir, destName, content);
105
118
  } else {
106
- const content = fs.readFileSync(srcPath, "utf-8");
119
+ const content = (0, import_node_fs.readFileSync)(srcPath, "utf-8");
107
120
  writeFile(destDir, destName, content);
108
121
  }
109
122
  }
110
123
  }
111
124
  __name(copyDirRecursive, "copyDirRecursive");
112
125
  async function scaffoldProject(targetDir, context) {
113
- const templateDir = path.resolve(TEMPLATES_ROOT, "basic");
126
+ const templateDir = (0, import_node_path.resolve)(TEMPLATES_ROOT, "basic");
114
127
  ensureDir(targetDir);
115
128
  await copyDirRecursive(templateDir, targetDir, context);
116
129
  }
117
130
  __name(scaffoldProject, "scaffoldProject");
131
+
132
+ // packages/cli/src/utils/pm.ts
133
+ var import_node_fs2 = require("fs");
134
+ var import_node_path2 = require("path");
135
+ var import_node_child_process = require("child_process");
118
136
  function detectPackageManager(targetDir) {
119
137
  if (targetDir) {
120
- if (fs.existsSync(path.resolve(targetDir, "pnpm-lock.yaml"))) return "pnpm";
121
- if (fs.existsSync(path.resolve(targetDir, "yarn.lock"))) return "yarn";
122
- if (fs.existsSync(path.resolve(targetDir, "package-lock.json"))) return "npm";
138
+ if ((0, import_node_fs2.existsSync)((0, import_node_path2.resolve)(targetDir, "pnpm-lock.yaml"))) return "pnpm";
139
+ if ((0, import_node_fs2.existsSync)((0, import_node_path2.resolve)(targetDir, "yarn.lock"))) return "yarn";
140
+ if ((0, import_node_fs2.existsSync)((0, import_node_path2.resolve)(targetDir, "package-lock.json"))) return "npm";
123
141
  }
124
142
  const userAgent = process.env.npm_config_user_agent || "";
125
143
  if (userAgent.startsWith("pnpm")) return "pnpm";
@@ -130,29 +148,29 @@ function detectPackageManager(targetDir) {
130
148
  __name(detectPackageManager, "detectPackageManager");
131
149
  function installDependencies(targetDir, pm) {
132
150
  const cmd = pm === "yarn" ? "yarn" : `${pm} install`;
133
- child_process.execSync(cmd, { cwd: targetDir, stdio: "inherit" });
151
+ (0, import_node_child_process.execSync)(cmd, { cwd: targetDir, stdio: "inherit" });
134
152
  }
135
153
  __name(installDependencies, "installDependencies");
136
154
  function addPackage(targetDir, pm, pkg, dev) {
137
155
  const installFlag = dev ? "-D" : "";
138
156
  const cmd = pm === "npm" ? `npm install ${installFlag} ${pkg}` : pm === "yarn" ? `yarn add ${installFlag} ${pkg}` : `pnpm add ${installFlag} ${pkg}`;
139
- child_process.execSync(cmd, { cwd: targetDir, stdio: "inherit" });
157
+ (0, import_node_child_process.execSync)(cmd, { cwd: targetDir, stdio: "inherit" });
140
158
  }
141
159
  __name(addPackage, "addPackage");
142
160
 
143
161
  // packages/cli/src/commands/init.ts
144
162
  async function initCommand(options) {
145
- const projectName = options.name || await p__namespace.text({
163
+ const projectName = options.name || await p.text({
146
164
  message: "Project name:",
147
165
  placeholder: "my-vobs-app",
148
166
  validate: /* @__PURE__ */ __name((v) => !v ? "Project name is required" : void 0, "validate")
149
167
  });
150
- if (p__namespace.isCancel(projectName)) {
151
- p__namespace.cancel("Cancelled");
168
+ if (p.isCancel(projectName)) {
169
+ p.cancel("Cancelled");
152
170
  return;
153
171
  }
154
- const targetDir = options.targetDir || path.resolve(process.cwd(), projectName);
155
- const packageManager = options.packageManager || await p__namespace.select({
172
+ const targetDir = options.targetDir || (0, import_node_path3.resolve)(process.cwd(), projectName);
173
+ const packageManager = options.packageManager || await p.select({
156
174
  message: "Package manager:",
157
175
  options: [
158
176
  { value: "pnpm", label: "pnpm" },
@@ -160,24 +178,24 @@ async function initCommand(options) {
160
178
  { value: "yarn", label: "yarn" }
161
179
  ]
162
180
  });
163
- if (p__namespace.isCancel(packageManager)) {
164
- p__namespace.cancel("Cancelled");
181
+ if (p.isCancel(packageManager)) {
182
+ p.cancel("Cancelled");
165
183
  return;
166
184
  }
167
- const useTypescript = options.typescript ?? await p__namespace.confirm({
185
+ const useTypescript = options.typescript ?? await p.confirm({
168
186
  message: "Use TypeScript?",
169
187
  initialValue: true
170
188
  });
171
- if (p__namespace.isCancel(useTypescript)) {
172
- p__namespace.cancel("Cancelled");
189
+ if (p.isCancel(useTypescript)) {
190
+ p.cancel("Cancelled");
173
191
  return;
174
192
  }
175
- const initGit = options.git ?? await p__namespace.confirm({
193
+ const initGit = options.git ?? await p.confirm({
176
194
  message: "Initialize a git repository?",
177
195
  initialValue: true
178
196
  });
179
- if (p__namespace.isCancel(initGit)) {
180
- p__namespace.cancel("Cancelled");
197
+ if (p.isCancel(initGit)) {
198
+ p.cancel("Cancelled");
181
199
  return;
182
200
  }
183
201
  logger.step(`Creating project ${projectName}...`);
@@ -194,7 +212,7 @@ async function initCommand(options) {
194
212
  if (initGit) {
195
213
  logger.step("Initializing git repository...");
196
214
  try {
197
- child_process.execSync("git init", { cwd: targetDir, stdio: "ignore" });
215
+ (0, import_node_child_process2.execSync)("git init", { cwd: targetDir, stdio: "ignore" });
198
216
  logger.success("Git repository initialized");
199
217
  } catch {
200
218
  logger.warn("Git not found, skipping git init");
@@ -206,9 +224,12 @@ async function initCommand(options) {
206
224
  `);
207
225
  }
208
226
  __name(initCommand, "initCommand");
227
+
228
+ // packages/cli/src/commands/dev.ts
229
+ var import_vite = require("vite");
209
230
  async function devCommand(options) {
210
231
  logger.info("Starting dev server...");
211
- const server = await vite.createServer({
232
+ const server = await (0, import_vite.createServer)({
212
233
  configFile: options.config,
213
234
  server: {
214
235
  port: options.port,
@@ -220,9 +241,12 @@ async function devCommand(options) {
220
241
  logger.success("Dev server is running");
221
242
  }
222
243
  __name(devCommand, "devCommand");
244
+
245
+ // packages/cli/src/commands/build.ts
246
+ var import_vite2 = require("vite");
223
247
  async function buildCommand(options) {
224
248
  logger.info("Building for production...");
225
- await vite.build({
249
+ await (0, import_vite2.build)({
226
250
  configFile: options.config,
227
251
  build: {
228
252
  outDir: options.outDir
@@ -232,56 +256,60 @@ async function buildCommand(options) {
232
256
  logger.success("Build complete");
233
257
  }
234
258
  __name(buildCommand, "buildCommand");
259
+
260
+ // packages/cli/src/commands/generate.ts
261
+ var import_node_path4 = require("path");
262
+ var p2 = __toESM(require("@clack/prompts"), 1);
235
263
  async function generateCommand(options) {
236
- const type = options.type || await p__namespace.select({
264
+ const type = options.type || await p2.select({
237
265
  message: "What to generate?",
238
266
  options: [
239
267
  { value: "component", label: "Component" },
240
268
  { value: "page", label: "Page" }
241
269
  ]
242
270
  });
243
- if (p__namespace.isCancel(type)) {
244
- p__namespace.cancel("Cancelled");
271
+ if (p2.isCancel(type)) {
272
+ p2.cancel("Cancelled");
245
273
  return;
246
274
  }
247
- const name = options.name || await p__namespace.text({
275
+ const name = options.name || await p2.text({
248
276
  message: "Name:",
249
277
  placeholder: type === "component" ? "Button" : "AboutPage",
250
278
  validate: /* @__PURE__ */ __name((v) => !v ? "Name is required" : void 0, "validate")
251
279
  });
252
- if (p__namespace.isCancel(name)) {
253
- p__namespace.cancel("Cancelled");
280
+ if (p2.isCancel(name)) {
281
+ p2.cancel("Cancelled");
254
282
  return;
255
283
  }
256
284
  const templatesDir = getTemplatesDir();
257
285
  if (type === "component") {
258
- const targetDir = options.targetDir || path.resolve(process.cwd(), "src/components");
286
+ const targetDir = options.targetDir || (0, import_node_path4.resolve)(process.cwd(), "src/components");
259
287
  ensureDir(targetDir);
260
288
  const context = {
261
289
  name: toPascalCase(name),
262
290
  kebabName: toKebabCase(name)
263
291
  };
264
292
  const content = renderTemplate(
265
- path.resolve(templatesDir, "component.hbs"),
293
+ (0, import_node_path4.resolve)(templatesDir, "component.hbs"),
266
294
  context
267
295
  );
268
296
  const filename = `${context.name}.tsx`;
269
297
  writeFile(targetDir, filename, content);
270
- logger.success(`Created ${type} at ${path.resolve(targetDir, filename)}`);
298
+ logger.success(`Created ${type} at ${(0, import_node_path4.resolve)(targetDir, filename)}`);
271
299
  } else {
272
- const targetDir = options.targetDir || path.resolve(process.cwd(), "src/pages");
300
+ const targetDir = options.targetDir || (0, import_node_path4.resolve)(process.cwd(), "src/pages");
273
301
  ensureDir(targetDir);
274
302
  const context = {
275
303
  name: toPascalCase(name),
276
304
  path: `/${toKebabCase(name)}`
277
305
  };
278
306
  const content = renderTemplate(
279
- path.resolve(templatesDir, "page.hbs"),
307
+ (0, import_node_path4.resolve)(templatesDir, "page.hbs"),
280
308
  context
281
309
  );
282
310
  const filename = `${context.name}.tsx`;
283
311
  writeFile(targetDir, filename, content);
284
- logger.success(`Created ${type} at ${path.resolve(targetDir, filename)}`);
312
+ logger.success(`Created ${type} at ${(0, import_node_path4.resolve)(targetDir, filename)}`);
285
313
  }
286
314
  }
287
315
  __name(generateCommand, "generateCommand");
@@ -293,22 +321,25 @@ function toKebabCase(str) {
293
321
  return str.replace(/([A-Z])/g, "-$1").toLowerCase().replace(/^-/, "").replace(/[^a-z0-9-]/g, "-").replace(/--+/g, "-").replace(/^-|-$/g, "");
294
322
  }
295
323
  __name(toKebabCase, "toKebabCase");
324
+
325
+ // packages/cli/src/commands/add.ts
326
+ var p3 = __toESM(require("@clack/prompts"), 1);
296
327
  async function addCommand(options) {
297
- const pkg = options.package || await p__namespace.text({
328
+ const pkg = options.package || await p3.text({
298
329
  message: "Package to add:",
299
330
  placeholder: "@vobs/ui",
300
331
  validate: /* @__PURE__ */ __name((v) => !v ? "Package name is required" : void 0, "validate")
301
332
  });
302
- if (p__namespace.isCancel(pkg)) {
303
- p__namespace.cancel("Cancelled");
333
+ if (p3.isCancel(pkg)) {
334
+ p3.cancel("Cancelled");
304
335
  return;
305
336
  }
306
- const isDev = options.dev ?? await p__namespace.confirm({
337
+ const isDev = options.dev ?? await p3.confirm({
307
338
  message: "Save as dev dependency?",
308
339
  initialValue: false
309
340
  });
310
- if (p__namespace.isCancel(isDev)) {
311
- p__namespace.cancel("Cancelled");
341
+ if (p3.isCancel(isDev)) {
342
+ p3.cancel("Cancelled");
312
343
  return;
313
344
  }
314
345
  const pm = detectPackageManager(process.cwd());
@@ -352,7 +383,7 @@ __name(showDevBanner, "showDevBanner");
352
383
 
353
384
  // packages/cli/src/cli.ts
354
385
  function createCLI() {
355
- const cli = cac.cac("vobs");
386
+ const cli = (0, import_cac.cac)("vobs");
356
387
  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) => {
357
388
  await initCommand({
358
389
  name,
@@ -410,7 +441,8 @@ function createCLI() {
410
441
  return cli;
411
442
  }
412
443
  __name(createCLI, "createCLI");
413
-
414
- exports.createCLI = createCLI;
415
- //# sourceMappingURL=cli.cjs.map
444
+ // Annotate the CommonJS export names for ESM import in node:
445
+ 0 && (module.exports = {
446
+ createCLI
447
+ });
416
448
  //# sourceMappingURL=cli.cjs.map