@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.
- package/dist/banner.cjs +31 -7
- package/dist/banner.cjs.map +1 -1
- package/dist/banner.js +5 -3
- package/dist/banner.js.map +1 -1
- package/dist/cli.cjs +130 -98
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.js +65 -40
- package/dist/cli.js.map +1 -1
- package/dist/commands/add.cjs +63 -49
- package/dist/commands/add.cjs.map +1 -1
- package/dist/commands/add.js +14 -9
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/build.cjs +50 -19
- package/dist/commands/build.cjs.map +1 -1
- package/dist/commands/build.js +9 -6
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/dev.cjs +50 -19
- package/dist/commands/dev.cjs.map +1 -1
- package/dist/commands/dev.js +9 -6
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/generate.cjs +76 -63
- package/dist/commands/generate.cjs.map +1 -1
- package/dist/commands/generate.js +24 -18
- package/dist/commands/generate.js.map +1 -1
- package/dist/commands/index.cjs +136 -100
- package/dist/commands/index.cjs.map +1 -1
- package/dist/commands/index.js +66 -39
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/init.cjs +89 -71
- package/dist/commands/init.cjs.map +1 -1
- package/dist/commands/init.js +28 -17
- package/dist/commands/init.js.map +1 -1
- package/dist/index.cjs +187 -132
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +94 -48
- package/dist/index.js.map +1 -1
- package/dist/repl.cjs +139 -111
- package/dist/repl.cjs.map +1 -1
- package/dist/repl.js +67 -46
- package/dist/repl.js.map +1 -1
- package/dist/start.cjs +151 -114
- package/dist/start.cjs.map +1 -1
- package/dist/start.js +76 -48
- package/dist/start.js.map +1 -1
- package/dist/types.cjs +18 -2
- package/dist/types.cjs.map +1 -1
- package/dist/types.js +0 -2
- package/dist/types.js.map +1 -1
- package/dist/utils/file.cjs +67 -34
- package/dist/utils/file.cjs.map +1 -1
- package/dist/utils/file.js +18 -12
- package/dist/utils/file.js.map +1 -1
- package/dist/utils/logger.cjs +56 -22
- package/dist/utils/logger.cjs.map +1 -1
- package/dist/utils/logger.js +11 -5
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/pm.cjs +41 -16
- package/dist/utils/pm.cjs.map +1 -1
- package/dist/utils/pm.js +10 -7
- package/dist/utils/pm.js.map +1 -1
- package/package.json +1 -1
package/dist/banner.cjs
CHANGED
|
@@ -1,9 +1,32 @@
|
|
|
1
|
-
|
|
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
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
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
|
package/dist/banner.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/banner.ts"],"
|
|
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
|
-
|
|
32
|
-
|
|
30
|
+
export {
|
|
31
|
+
showBanner,
|
|
32
|
+
showDevBanner,
|
|
33
|
+
showLogo
|
|
34
|
+
};
|
|
33
35
|
//# sourceMappingURL=banner.js.map
|
package/dist/banner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/banner.ts"],"
|
|
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
|
-
|
|
2
|
-
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
var
|
|
6
|
-
var
|
|
7
|
-
var
|
|
8
|
-
var
|
|
9
|
-
var
|
|
10
|
-
var
|
|
11
|
-
var
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
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
|
-
|
|
31
|
-
|
|
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
|
-
|
|
35
|
-
var
|
|
36
|
-
|
|
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
|
-
|
|
39
|
-
var
|
|
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
|
|
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()} ${
|
|
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()} ${
|
|
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()} ${
|
|
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()} ${
|
|
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
|
-
${
|
|
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
|
-
|
|
67
|
-
|
|
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 =
|
|
74
|
-
const template =
|
|
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 =
|
|
80
|
-
|
|
81
|
-
|
|
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 (!
|
|
86
|
-
|
|
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(
|
|
92
|
-
const { join } = await import(
|
|
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 =
|
|
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 =
|
|
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 (
|
|
121
|
-
if (
|
|
122
|
-
if (
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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 (
|
|
151
|
-
|
|
168
|
+
if (p.isCancel(projectName)) {
|
|
169
|
+
p.cancel("Cancelled");
|
|
152
170
|
return;
|
|
153
171
|
}
|
|
154
|
-
const targetDir = options.targetDir ||
|
|
155
|
-
const packageManager = options.packageManager || await
|
|
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 (
|
|
164
|
-
|
|
181
|
+
if (p.isCancel(packageManager)) {
|
|
182
|
+
p.cancel("Cancelled");
|
|
165
183
|
return;
|
|
166
184
|
}
|
|
167
|
-
const useTypescript = options.typescript ?? await
|
|
185
|
+
const useTypescript = options.typescript ?? await p.confirm({
|
|
168
186
|
message: "Use TypeScript?",
|
|
169
187
|
initialValue: true
|
|
170
188
|
});
|
|
171
|
-
if (
|
|
172
|
-
|
|
189
|
+
if (p.isCancel(useTypescript)) {
|
|
190
|
+
p.cancel("Cancelled");
|
|
173
191
|
return;
|
|
174
192
|
}
|
|
175
|
-
const initGit = options.git ?? await
|
|
193
|
+
const initGit = options.git ?? await p.confirm({
|
|
176
194
|
message: "Initialize a git repository?",
|
|
177
195
|
initialValue: true
|
|
178
196
|
});
|
|
179
|
-
if (
|
|
180
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
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 (
|
|
244
|
-
|
|
271
|
+
if (p2.isCancel(type)) {
|
|
272
|
+
p2.cancel("Cancelled");
|
|
245
273
|
return;
|
|
246
274
|
}
|
|
247
|
-
const name = options.name || await
|
|
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 (
|
|
253
|
-
|
|
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 ||
|
|
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
|
-
|
|
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 ${
|
|
298
|
+
logger.success(`Created ${type} at ${(0, import_node_path4.resolve)(targetDir, filename)}`);
|
|
271
299
|
} else {
|
|
272
|
-
const targetDir = options.targetDir ||
|
|
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
|
-
|
|
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 ${
|
|
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
|
|
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 (
|
|
303
|
-
|
|
333
|
+
if (p3.isCancel(pkg)) {
|
|
334
|
+
p3.cancel("Cancelled");
|
|
304
335
|
return;
|
|
305
336
|
}
|
|
306
|
-
const isDev = options.dev ?? await
|
|
337
|
+
const isDev = options.dev ?? await p3.confirm({
|
|
307
338
|
message: "Save as dev dependency?",
|
|
308
339
|
initialValue: false
|
|
309
340
|
});
|
|
310
|
-
if (
|
|
311
|
-
|
|
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 =
|
|
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
|
|
415
|
-
|
|
444
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
445
|
+
0 && (module.exports = {
|
|
446
|
+
createCLI
|
|
447
|
+
});
|
|
416
448
|
//# sourceMappingURL=cli.cjs.map
|