dnmp 0.0.0-alpha.0.1 → 0.0.0-alpha.0.3

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/bin/cli.js ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ import('../dist/cli.mjs')
package/dist/cli.mjs ADDED
@@ -0,0 +1,552 @@
1
+ import * as process$2 from "node:process";
2
+ import process$1 from "node:process";
3
+ import cac from "cac";
4
+ import { readFile, writeFile } from "node:fs/promises";
5
+ import { resolve } from "node:path";
6
+ import { cancel, confirm, intro, isCancel, outro, select, text } from "@clack/prompts";
7
+ import { findUp } from "find-up";
8
+ import fs, { readFileSync } from "node:fs";
9
+ import { glob } from "glob";
10
+ import { parse } from "yaml";
11
+ import boxen from "boxen";
12
+ import { createJiti } from "jiti";
13
+ import { x } from "tinyexec";
14
+ import semver from "semver";
15
+
16
+ //#region rolldown:runtime
17
+ var __create = Object.create;
18
+ var __defProp = Object.defineProperty;
19
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
20
+ var __getOwnPropNames = Object.getOwnPropertyNames;
21
+ var __getProtoOf = Object.getPrototypeOf;
22
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
23
+ var __commonJSMin = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
24
+ var __copyProps = (to, from, except, desc) => {
25
+ if (from && typeof from === "object" || typeof from === "function") {
26
+ for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
27
+ key = keys[i];
28
+ if (!__hasOwnProp.call(to, key) && key !== except) {
29
+ __defProp(to, key, {
30
+ get: ((k) => from[k]).bind(null, key),
31
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
32
+ });
33
+ }
34
+ }
35
+ }
36
+ return to;
37
+ };
38
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
39
+ value: mod,
40
+ enumerable: true
41
+ }) : target, mod));
42
+
43
+ //#endregion
44
+ //#region node_modules/.pnpm/picocolors@1.1.1/node_modules/picocolors/picocolors.js
45
+ var require_picocolors = /* @__PURE__ */ __commonJSMin(((exports, module) => {
46
+ let p = process || {}, argv = p.argv || [], env = p.env || {};
47
+ let isColorSupported = !(!!env.NO_COLOR || argv.includes("--no-color")) && (!!env.FORCE_COLOR || argv.includes("--color") || p.platform === "win32" || (p.stdout || {}).isTTY && env.TERM !== "dumb" || !!env.CI);
48
+ let formatter = (open, close, replace = open) => (input) => {
49
+ let string = "" + input, index = string.indexOf(close, open.length);
50
+ return ~index ? open + replaceClose(string, close, replace, index) + close : open + string + close;
51
+ };
52
+ let replaceClose = (string, close, replace, index) => {
53
+ let result = "", cursor = 0;
54
+ do {
55
+ result += string.substring(cursor, index) + replace;
56
+ cursor = index + close.length;
57
+ index = string.indexOf(close, cursor);
58
+ } while (~index);
59
+ return result + string.substring(cursor);
60
+ };
61
+ let createColors = (enabled = isColorSupported) => {
62
+ let f = enabled ? formatter : () => String;
63
+ return {
64
+ isColorSupported: enabled,
65
+ reset: f("\x1B[0m", "\x1B[0m"),
66
+ bold: f("\x1B[1m", "\x1B[22m", "\x1B[22m\x1B[1m"),
67
+ dim: f("\x1B[2m", "\x1B[22m", "\x1B[22m\x1B[2m"),
68
+ italic: f("\x1B[3m", "\x1B[23m"),
69
+ underline: f("\x1B[4m", "\x1B[24m"),
70
+ inverse: f("\x1B[7m", "\x1B[27m"),
71
+ hidden: f("\x1B[8m", "\x1B[28m"),
72
+ strikethrough: f("\x1B[9m", "\x1B[29m"),
73
+ black: f("\x1B[30m", "\x1B[39m"),
74
+ red: f("\x1B[31m", "\x1B[39m"),
75
+ green: f("\x1B[32m", "\x1B[39m"),
76
+ yellow: f("\x1B[33m", "\x1B[39m"),
77
+ blue: f("\x1B[34m", "\x1B[39m"),
78
+ magenta: f("\x1B[35m", "\x1B[39m"),
79
+ cyan: f("\x1B[36m", "\x1B[39m"),
80
+ white: f("\x1B[37m", "\x1B[39m"),
81
+ gray: f("\x1B[90m", "\x1B[39m"),
82
+ bgBlack: f("\x1B[40m", "\x1B[49m"),
83
+ bgRed: f("\x1B[41m", "\x1B[49m"),
84
+ bgGreen: f("\x1B[42m", "\x1B[49m"),
85
+ bgYellow: f("\x1B[43m", "\x1B[49m"),
86
+ bgBlue: f("\x1B[44m", "\x1B[49m"),
87
+ bgMagenta: f("\x1B[45m", "\x1B[49m"),
88
+ bgCyan: f("\x1B[46m", "\x1B[49m"),
89
+ bgWhite: f("\x1B[47m", "\x1B[49m"),
90
+ blackBright: f("\x1B[90m", "\x1B[39m"),
91
+ redBright: f("\x1B[91m", "\x1B[39m"),
92
+ greenBright: f("\x1B[92m", "\x1B[39m"),
93
+ yellowBright: f("\x1B[93m", "\x1B[39m"),
94
+ blueBright: f("\x1B[94m", "\x1B[39m"),
95
+ magentaBright: f("\x1B[95m", "\x1B[39m"),
96
+ cyanBright: f("\x1B[96m", "\x1B[39m"),
97
+ whiteBright: f("\x1B[97m", "\x1B[39m"),
98
+ bgBlackBright: f("\x1B[100m", "\x1B[49m"),
99
+ bgRedBright: f("\x1B[101m", "\x1B[49m"),
100
+ bgGreenBright: f("\x1B[102m", "\x1B[49m"),
101
+ bgYellowBright: f("\x1B[103m", "\x1B[49m"),
102
+ bgBlueBright: f("\x1B[104m", "\x1B[49m"),
103
+ bgMagentaBright: f("\x1B[105m", "\x1B[49m"),
104
+ bgCyanBright: f("\x1B[106m", "\x1B[49m"),
105
+ bgWhiteBright: f("\x1B[107m", "\x1B[49m")
106
+ };
107
+ };
108
+ module.exports = createColors();
109
+ module.exports.createColors = createColors;
110
+ }));
111
+
112
+ //#endregion
113
+ //#region src/constant.ts
114
+ var import_picocolors = /* @__PURE__ */ __toESM(require_picocolors());
115
+ const CACHE_FOLDER_NAME = ".cache";
116
+ const CACHE_FILE_NAME = "token.ts";
117
+ const CACHE_TOKEN_FILE_PATH = `${CACHE_FOLDER_NAME}/${CACHE_FILE_NAME}`;
118
+ const CUSTOM_RELEASE_PREFIX = "custom";
119
+ const CANCEL_PROCESS = "Current operation canceled.";
120
+
121
+ //#endregion
122
+ //#region src/utils.ts
123
+ const checkDirExist = (dirPath) => {
124
+ return fs.existsSync(dirPath);
125
+ };
126
+ const createDir = (dirPath) => {
127
+ if (!checkDirExist(dirPath)) fs.mkdirSync(dirPath);
128
+ };
129
+ const printWarning = (message) => console.log(boxen(message, {
130
+ title: "Warning",
131
+ padding: 1,
132
+ borderStyle: "round",
133
+ borderColor: "yellow"
134
+ }));
135
+ const isCancelProcess = (value, message = CANCEL_PROCESS) => {
136
+ if (isCancel(value)) {
137
+ cancel(message);
138
+ return process.exit(0);
139
+ }
140
+ };
141
+ const loaderTs = async (path) => {
142
+ return await createJiti(path).import(path, { default: true });
143
+ };
144
+
145
+ //#endregion
146
+ //#region src/token.ts
147
+ const setToken = async (config, token$1) => {
148
+ createDir(resolve(config.cwd, CACHE_FOLDER_NAME));
149
+ await writeFile(config.token.file, `export default "${token$1}"`);
150
+ };
151
+ const loaderToken = async (config) => {
152
+ return await loaderTs(config.token.file);
153
+ };
154
+
155
+ //#endregion
156
+ //#region package.json
157
+ var name = "dnmp";
158
+ var version = "0.0.0-alpha.0.3";
159
+
160
+ //#endregion
161
+ //#region src/config.ts
162
+ const CURRENT_PATH = resolve(import.meta.dirname, "../");
163
+ const defaultConfig = {
164
+ root: "",
165
+ cwd: "",
166
+ token: {
167
+ name: "token.ts",
168
+ file: resolve(CURRENT_PATH, `${CACHE_TOKEN_FILE_PATH}`),
169
+ value: ""
170
+ },
171
+ release: "",
172
+ currentVersion: "",
173
+ monorepo: {
174
+ is: false,
175
+ workspacePath: "",
176
+ packages: [],
177
+ packageContexts: [],
178
+ updatePackages: []
179
+ },
180
+ packages: ""
181
+ };
182
+ const collectPackageFiles = async (config, packages) => {
183
+ const files = ["package.json"];
184
+ files.push(...await glob(packages, {
185
+ cwd: config.cwd,
186
+ ignore: ["**/node_modules/**"]
187
+ }));
188
+ return [...files];
189
+ };
190
+ const isMonorepo = async (config) => {
191
+ const workspacePath = await findUp("pnpm-workspace.yaml", { cwd: config.cwd });
192
+ if (!workspacePath) return {
193
+ is: false,
194
+ workspacePath: "",
195
+ packageContexts: [],
196
+ packages: []
197
+ };
198
+ const is = !!(workspacePath ? parse(readFileSync(workspacePath, "utf-8")) : { packages: [] })?.packages.length;
199
+ const { packages: workSpacePackages } = parse(readFileSync(workspacePath, "utf-8"));
200
+ let packages = [];
201
+ let packageContexts = [];
202
+ if (workSpacePackages) {
203
+ packages = workSpacePackages.map((item) => item.indexOf("*") ? `${item.replace("/*", "")}/**/package.json` : `${item}/**/package.json`);
204
+ packageContexts = (await collectPackageFiles(config, packages)).map((file) => {
205
+ const files = JSON.parse(readFileSync(resolve(config.cwd, file), "utf-8"));
206
+ return {
207
+ name: `${files.name}`,
208
+ file,
209
+ version: files?.version || "",
210
+ context: files
211
+ };
212
+ });
213
+ }
214
+ return {
215
+ is,
216
+ workspacePath,
217
+ packageContexts,
218
+ packages
219
+ };
220
+ };
221
+ const resolveConfig = async () => {
222
+ const { loadConfig } = await import("c12");
223
+ const config = await loadConfig({
224
+ name,
225
+ defaultConfig
226
+ }).then((r) => ({
227
+ ...r.config,
228
+ cwd: process$2.cwd(),
229
+ root: CURRENT_PATH
230
+ }));
231
+ config.token.value = await loaderToken(config) || "";
232
+ config.monorepo = await isMonorepo(config);
233
+ config.packages = resolve(config.cwd, "package.json");
234
+ return config;
235
+ };
236
+
237
+ //#endregion
238
+ //#region src/git.ts
239
+ const gitCommit = async (config) => {
240
+ const args = [];
241
+ args.push("--message", `release: v${config.release}`);
242
+ args.push("--allow-empty");
243
+ args.push(config.packages);
244
+ await x("git", ["commit", ...args], { nodeOptions: {
245
+ cwd: config.cwd,
246
+ stdio: "pipe"
247
+ } });
248
+ };
249
+ const gitTags = async (config) => {
250
+ await x("git", [
251
+ "tag",
252
+ "--annotate",
253
+ "--message",
254
+ "",
255
+ `v${config.release}`
256
+ ], { nodeOptions: {
257
+ cwd: config.cwd,
258
+ stdio: "pipe"
259
+ } });
260
+ };
261
+
262
+ //#endregion
263
+ //#region src/update-files.ts
264
+ const JSON_SPACING = 2;
265
+ const updatePackageJson = async (path, version$1) => {
266
+ const updatePackage = JSON.parse(await readFile(path, "utf-8"));
267
+ updatePackage.version = version$1;
268
+ await writeFile(path, JSON.stringify(updatePackage, null, JSON_SPACING));
269
+ };
270
+ const updateFiles = async (config) => {
271
+ if (config.monorepo.is) for (const pkg of config.monorepo.updatePackages) await updatePackageJson(pkg.path, pkg.newVersion);
272
+ else await updatePackageJson(config.packages, config.release);
273
+ };
274
+
275
+ //#endregion
276
+ //#region src/version/current.ts
277
+ const getCurrentVersion = async (config) => {
278
+ const { packages } = config;
279
+ if (typeof packages === "object") {} else config.currentVersion = JSON.parse(await readFile(packages, { encoding: "utf-8" })).version || "";
280
+ };
281
+
282
+ //#endregion
283
+ //#region src/version/new.version.ts
284
+ const PADDING = 13;
285
+ const validateVersion = (version$1) => !!semver.valid(version$1);
286
+ const DEFAULT_STYLE = {
287
+ label: "next",
288
+ color: import_picocolors.default.cyan
289
+ };
290
+ const UI_STYLE_MAP = {
291
+ major: {
292
+ label: "major",
293
+ color: import_picocolors.default.cyan
294
+ },
295
+ minor: {
296
+ label: "minor",
297
+ color: import_picocolors.default.cyan
298
+ },
299
+ patch: {
300
+ label: "patch",
301
+ color: import_picocolors.default.cyan
302
+ },
303
+ next: {
304
+ label: "next",
305
+ color: import_picocolors.default.cyan
306
+ },
307
+ rc: {
308
+ label: "rc",
309
+ color: import_picocolors.default.green
310
+ },
311
+ beta: {
312
+ label: "pre-beta",
313
+ color: import_picocolors.default.magenta
314
+ },
315
+ alpha: {
316
+ label: "alpha",
317
+ color: import_picocolors.default.yellow
318
+ }
319
+ };
320
+ /**
321
+ * 核心逻辑:增量处理预发布版本
322
+ * 解决 TS2345: 使用 readonly 修饰符接受 semver 的返回类型
323
+ */
324
+ const processIncrementalPre = (preParts, base, prefix, expectedLen, fallback) => {
325
+ if (preParts[0] !== prefix) return `${base}-${fallback}`;
326
+ const newPre = [...preParts].slice(0, expectedLen);
327
+ while (newPre.length < expectedLen) newPre.push(0);
328
+ const lastIdx = expectedLen - 1;
329
+ const lastVal = newPre[lastIdx];
330
+ const numericVal = typeof lastVal === "number" ? lastVal : Number.parseInt(String(lastVal), 10);
331
+ newPre[lastIdx] = preParts.length < expectedLen ? 1 : Number.isNaN(numericVal) ? 1 : numericVal + 1;
332
+ return `${base}-${newPre.join(".")}`;
333
+ };
334
+ const getNextVersions = (version$1) => {
335
+ const s = semver.parse(version$1);
336
+ if (!s) throw new Error(`[Invalid SemVer]: ${version$1}`);
337
+ const { major: M, minor: m, patch: p, prerelease: pre } = s;
338
+ const base = `${M}.${m}.${p}`;
339
+ return {
340
+ "major": `${M + 1}.0.0`,
341
+ "minor": `${M}.${m + 1}.0`,
342
+ "patch": `${M}.${m}.${p + 1}`,
343
+ "next": `${M}.${m}.${p + 1}`,
344
+ "rc": processIncrementalPre(pre, base, "rc", 2, "rc.1"),
345
+ "beta-major": processIncrementalPre(pre, base, "beta", 2, "beta.1"),
346
+ "beta-minor": processIncrementalPre(pre, base, "beta", 3, "beta.0.1"),
347
+ "beta-patch": processIncrementalPre(pre, base, "beta", 4, "beta.0.0.1"),
348
+ "pre-beta": `${base}-beta`,
349
+ "alpha-beta": `${base}-alpha.beta`,
350
+ "alpha-major": processIncrementalPre(pre, base, "alpha", 2, "alpha.1"),
351
+ "alpha-minor": processIncrementalPre(pre, base, "alpha", 3, "alpha.0.1"),
352
+ "alpha-patch": processIncrementalPre(pre, base, "alpha", 4, "alpha.0.0.1")
353
+ };
354
+ };
355
+ async function promptForNewVersion(config, pkg, index) {
356
+ const version$1 = config.monorepo.is && pkg !== void 0 ? pkg.newVersion : config.currentVersion;
357
+ const next = getNextVersions(version$1);
358
+ const options = Object.keys(next).map((key) => {
359
+ const versionStr = next[key];
360
+ return {
361
+ value: key,
362
+ label: `${(UI_STYLE_MAP[key.split("-")[0] ?? "next"] ?? DEFAULT_STYLE).label.padStart(PADDING, " ")} ${versionStr.replace(/(rc|beta|alpha)/g, (match) => {
363
+ return (UI_STYLE_MAP[match] ?? DEFAULT_STYLE).color(match);
364
+ })}`
365
+ };
366
+ });
367
+ options.push({
368
+ value: CUSTOM_RELEASE_PREFIX,
369
+ label: `${"custom".padStart(PADDING, " ")} ...`
370
+ });
371
+ const release = await select({
372
+ message: `Current version ${import_picocolors.default.bold(version$1)}`,
373
+ options,
374
+ initialValue: "next"
375
+ });
376
+ isCancelProcess(release);
377
+ let finalVersion;
378
+ if (release === CUSTOM_RELEASE_PREFIX) {
379
+ const custom = await text({
380
+ message: "Enter the new version number",
381
+ validate: (val) => !validateVersion(val) ? "Invalid semver" : void 0
382
+ });
383
+ if (isCancel(custom)) {
384
+ cancel("No version entered");
385
+ return process.exit(0);
386
+ }
387
+ finalVersion = custom;
388
+ } else finalVersion = next[release];
389
+ if (config.monorepo.is && pkg !== void 0 && index !== void 0 && Array.isArray(config.monorepo.updatePackages)) config.monorepo.updatePackages[index].newVersion = finalVersion;
390
+ else config.release = finalVersion;
391
+ }
392
+
393
+ //#endregion
394
+ //#region src/command/bump.ts
395
+ /**
396
+ * 创建包选择选项
397
+ */
398
+ const createPackageOptions = (packageContexts) => {
399
+ return packageContexts.map((file) => {
400
+ return {
401
+ value: file.name,
402
+ label: file.name,
403
+ hint: `${import_picocolors.default.red(file.version)} - ${file.file}`
404
+ };
405
+ });
406
+ };
407
+ /**
408
+ * 处理单个包的选择流程
409
+ */
410
+ const processPackageSelection = async (config, selectedPackageName, packageContexts) => {
411
+ const selectedPackage = packageContexts.find((opt) => opt.name === selectedPackageName);
412
+ const resolvePackage = {
413
+ name: selectedPackageName,
414
+ path: resolve(config.cwd, selectedPackage.file),
415
+ currentVersion: selectedPackage.version,
416
+ newVersion: selectedPackage.version
417
+ };
418
+ (config.monorepo.updatePackages ??= []).push(resolvePackage);
419
+ await promptForNewVersion(config, resolvePackage, config.monorepo.updatePackages.length - 1);
420
+ };
421
+ /**
422
+ * 处理 monorepo 包的选择逻辑
423
+ */
424
+ const handleMonorepoPackageSelection = async (config) => {
425
+ let availableOptions = [...createPackageOptions(config.monorepo.packageContexts)];
426
+ while (availableOptions.length > 0) {
427
+ const selectedPackage = await select({
428
+ message: "请选择要升级版本的包:",
429
+ options: availableOptions
430
+ });
431
+ isCancelProcess(selectedPackage);
432
+ await processPackageSelection(config, selectedPackage, config.monorepo.packageContexts);
433
+ availableOptions = availableOptions.filter((opt) => opt.value !== selectedPackage);
434
+ if (availableOptions.length > 0) {
435
+ const continueSelection = await confirm({
436
+ message: "是否继续选择其他包?",
437
+ initialValue: true
438
+ });
439
+ isCancelProcess(continueSelection);
440
+ if (!continueSelection) break;
441
+ }
442
+ }
443
+ };
444
+ /**
445
+ * 获取缓存文件路径
446
+ */
447
+ const getCachePath = async (cwd) => {
448
+ return await findUp("node_modules/.cache/dnmp.ts", { cwd }) || null;
449
+ };
450
+ /**
451
+ * 读取或设置统一更新版本选项
452
+ */
453
+ const getOrUpdateAllUpdateVersion = async (config) => {
454
+ const cachePath = await getCachePath(config.cwd);
455
+ if (cachePath) return Boolean(await loaderTs(cachePath));
456
+ const allUpdateVersion = await confirm({
457
+ message: "是否以根 package.json 为主版本统一更新 workspace 所有版本",
458
+ initialValue: true
459
+ });
460
+ isCancelProcess(allUpdateVersion, CANCEL_PROCESS);
461
+ await writeFile(resolve(config.cwd, "./node_modules/.cache/dnmp.ts"), `export default ${allUpdateVersion}`);
462
+ return allUpdateVersion;
463
+ };
464
+ /**
465
+ * 读取包文件内容
466
+ */
467
+ const readPackageFile = async (filePath) => {
468
+ return JSON.parse(await readFile(filePath, "utf-8"));
469
+ };
470
+ /**
471
+ * 统一更新所有包的版本
472
+ */
473
+ const updateAllPackagesVersion = async (config) => {
474
+ config.currentVersion = (await readPackageFile(config.packages)).version;
475
+ await promptForNewVersion(config);
476
+ for (const item of config.monorepo.packageContexts) {
477
+ const resolvePkgPath = resolve(config.cwd, item.file);
478
+ const packageInfo = await readPackageFile(resolvePkgPath);
479
+ (config.monorepo.updatePackages ??= []).push({
480
+ name: item.name,
481
+ path: resolvePkgPath,
482
+ currentVersion: packageInfo.version,
483
+ newVersion: config.release
484
+ });
485
+ }
486
+ };
487
+ const bumpVersion = async () => {
488
+ const config = await resolveConfig();
489
+ intro(import_picocolors.default.bgCyan(` dnmp ${version} `));
490
+ if (!config.token.value) {
491
+ outro("请先设置 release token");
492
+ return process$1.exit(0);
493
+ }
494
+ if (config.monorepo.is) if (await getOrUpdateAllUpdateVersion(config)) await updateAllPackagesVersion(config);
495
+ else await handleMonorepoPackageSelection(config);
496
+ else {
497
+ await getCurrentVersion(config);
498
+ await promptForNewVersion(config);
499
+ }
500
+ console.log("npm", [
501
+ "publish",
502
+ `--//registry.npmjs.org/:_authToken=${config.token.value}`,
503
+ "--access",
504
+ "public"
505
+ ].join(" "));
506
+ const isConfirmUpdate = await confirm({
507
+ message: "是否确认更新 package.json ?",
508
+ initialValue: true
509
+ });
510
+ isCancelProcess(isConfirmUpdate);
511
+ if (!isConfirmUpdate) {
512
+ outro("用户取消操作,后续进程停止");
513
+ return process$1.exit(0);
514
+ }
515
+ await updateFiles(config);
516
+ await gitCommit(config);
517
+ await gitTags(config);
518
+ outro("Done.");
519
+ };
520
+
521
+ //#endregion
522
+ //#region src/command/token.ts
523
+ const token = async (token$1 = "") => {
524
+ try {
525
+ await setToken(await resolveConfig(), token$1);
526
+ } catch (error) {
527
+ printWarning(error.message);
528
+ process$1.exit(0);
529
+ }
530
+ };
531
+
532
+ //#endregion
533
+ //#region src/cli.ts
534
+ const cli = cac(name);
535
+ cli.command("").action(async (options) => {
536
+ await bumpVersion();
537
+ });
538
+ cli.command("set <token>", "Set the local release Token").action(async (token$1 = "") => {
539
+ await token(token$1);
540
+ });
541
+ cli.help();
542
+ cli.version(version);
543
+ try {
544
+ cli.parse();
545
+ } catch (error) {
546
+ printWarning(error.message);
547
+ process$2.exit(0);
548
+ }
549
+
550
+ //#endregion
551
+ export { };
552
+ //# sourceMappingURL=cli.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.mjs","names":["token","defaultConfig: IConfigOptions","packageContexts: IPackageContexts[]","process","version","version","DEFAULT_STYLE: UIStyle","pc","UI_STYLE_MAP: Record<string, UIStyle>","finalVersion: string","pc","resolvePackage: IUpdatePackages","process","token","error: any","setToken","token","error: any"],"sources":["../node_modules/.pnpm/picocolors@1.1.1/node_modules/picocolors/picocolors.js","../src/constant.ts","../src/utils.ts","../src/token.ts","../package.json","../src/config.ts","../src/git.ts","../src/update-files.ts","../src/version/current.ts","../src/version/new.version.ts","../src/command/bump.ts","../src/command/token.ts","../src/cli.ts"],"sourcesContent":["let p = process || {}, argv = p.argv || [], env = p.env || {}\nlet isColorSupported =\n\t!(!!env.NO_COLOR || argv.includes(\"--no-color\")) &&\n\t(!!env.FORCE_COLOR || argv.includes(\"--color\") || p.platform === \"win32\" || ((p.stdout || {}).isTTY && env.TERM !== \"dumb\") || !!env.CI)\n\nlet formatter = (open, close, replace = open) =>\n\tinput => {\n\t\tlet string = \"\" + input, index = string.indexOf(close, open.length)\n\t\treturn ~index ? open + replaceClose(string, close, replace, index) + close : open + string + close\n\t}\n\nlet replaceClose = (string, close, replace, index) => {\n\tlet result = \"\", cursor = 0\n\tdo {\n\t\tresult += string.substring(cursor, index) + replace\n\t\tcursor = index + close.length\n\t\tindex = string.indexOf(close, cursor)\n\t} while (~index)\n\treturn result + string.substring(cursor)\n}\n\nlet createColors = (enabled = isColorSupported) => {\n\tlet f = enabled ? formatter : () => String\n\treturn {\n\t\tisColorSupported: enabled,\n\t\treset: f(\"\\x1b[0m\", \"\\x1b[0m\"),\n\t\tbold: f(\"\\x1b[1m\", \"\\x1b[22m\", \"\\x1b[22m\\x1b[1m\"),\n\t\tdim: f(\"\\x1b[2m\", \"\\x1b[22m\", \"\\x1b[22m\\x1b[2m\"),\n\t\titalic: f(\"\\x1b[3m\", \"\\x1b[23m\"),\n\t\tunderline: f(\"\\x1b[4m\", \"\\x1b[24m\"),\n\t\tinverse: f(\"\\x1b[7m\", \"\\x1b[27m\"),\n\t\thidden: f(\"\\x1b[8m\", \"\\x1b[28m\"),\n\t\tstrikethrough: f(\"\\x1b[9m\", \"\\x1b[29m\"),\n\n\t\tblack: f(\"\\x1b[30m\", \"\\x1b[39m\"),\n\t\tred: f(\"\\x1b[31m\", \"\\x1b[39m\"),\n\t\tgreen: f(\"\\x1b[32m\", \"\\x1b[39m\"),\n\t\tyellow: f(\"\\x1b[33m\", \"\\x1b[39m\"),\n\t\tblue: f(\"\\x1b[34m\", \"\\x1b[39m\"),\n\t\tmagenta: f(\"\\x1b[35m\", \"\\x1b[39m\"),\n\t\tcyan: f(\"\\x1b[36m\", \"\\x1b[39m\"),\n\t\twhite: f(\"\\x1b[37m\", \"\\x1b[39m\"),\n\t\tgray: f(\"\\x1b[90m\", \"\\x1b[39m\"),\n\n\t\tbgBlack: f(\"\\x1b[40m\", \"\\x1b[49m\"),\n\t\tbgRed: f(\"\\x1b[41m\", \"\\x1b[49m\"),\n\t\tbgGreen: f(\"\\x1b[42m\", \"\\x1b[49m\"),\n\t\tbgYellow: f(\"\\x1b[43m\", \"\\x1b[49m\"),\n\t\tbgBlue: f(\"\\x1b[44m\", \"\\x1b[49m\"),\n\t\tbgMagenta: f(\"\\x1b[45m\", \"\\x1b[49m\"),\n\t\tbgCyan: f(\"\\x1b[46m\", \"\\x1b[49m\"),\n\t\tbgWhite: f(\"\\x1b[47m\", \"\\x1b[49m\"),\n\n\t\tblackBright: f(\"\\x1b[90m\", \"\\x1b[39m\"),\n\t\tredBright: f(\"\\x1b[91m\", \"\\x1b[39m\"),\n\t\tgreenBright: f(\"\\x1b[92m\", \"\\x1b[39m\"),\n\t\tyellowBright: f(\"\\x1b[93m\", \"\\x1b[39m\"),\n\t\tblueBright: f(\"\\x1b[94m\", \"\\x1b[39m\"),\n\t\tmagentaBright: f(\"\\x1b[95m\", \"\\x1b[39m\"),\n\t\tcyanBright: f(\"\\x1b[96m\", \"\\x1b[39m\"),\n\t\twhiteBright: f(\"\\x1b[97m\", \"\\x1b[39m\"),\n\n\t\tbgBlackBright: f(\"\\x1b[100m\", \"\\x1b[49m\"),\n\t\tbgRedBright: f(\"\\x1b[101m\", \"\\x1b[49m\"),\n\t\tbgGreenBright: f(\"\\x1b[102m\", \"\\x1b[49m\"),\n\t\tbgYellowBright: f(\"\\x1b[103m\", \"\\x1b[49m\"),\n\t\tbgBlueBright: f(\"\\x1b[104m\", \"\\x1b[49m\"),\n\t\tbgMagentaBright: f(\"\\x1b[105m\", \"\\x1b[49m\"),\n\t\tbgCyanBright: f(\"\\x1b[106m\", \"\\x1b[49m\"),\n\t\tbgWhiteBright: f(\"\\x1b[107m\", \"\\x1b[49m\"),\n\t}\n}\n\nmodule.exports = createColors()\nmodule.exports.createColors = createColors\n","export const CACHE_FOLDER_NAME = '.cache'\nexport const CACHE_FILE_NAME = 'token.ts'\nexport const CACHE_TOKEN_FILE_PATH = `${CACHE_FOLDER_NAME}/${CACHE_FILE_NAME}`\nexport const CUSTOM_RELEASE_PREFIX = 'custom'\nexport const CANCEL_PROCESS = 'Current operation canceled.'\n","import fs from 'node:fs'\nimport { cancel, isCancel } from '@clack/prompts'\nimport boxen from 'boxen'\nimport { createJiti } from 'jiti'\nimport { CANCEL_PROCESS } from '@/constant.ts'\n\nexport const checkDirExist = (dirPath: string) => {\n return fs.existsSync(dirPath)\n}\n\nexport const createDir = (dirPath: string) => {\n if (!checkDirExist(dirPath)) {\n fs.mkdirSync(dirPath)\n }\n}\n\nexport const printWarning = (message: string) =>\n console.log(boxen(message, {\n title: 'Warning',\n padding: 1,\n borderStyle: 'round',\n borderColor: 'yellow',\n }))\n\nexport const isCancelProcess = (value: unknown, message: string = CANCEL_PROCESS) => {\n if (isCancel(value)) {\n cancel(message)\n return process.exit(0)\n }\n}\n\nexport const loaderTs = async (path: string): Promise<string> => {\n const loader = createJiti(path)\n return await loader.import(path, { default: true })\n}\n","import type { IConfigOptions } from '@/types'\nimport { writeFile } from 'node:fs/promises'\nimport { resolve } from 'node:path'\nimport { CACHE_FOLDER_NAME } from '@/constant.ts'\nimport { createDir, loaderTs } from '@/utils.ts'\n\nexport const setToken = async (config: IConfigOptions, token: string): Promise<void> => {\n createDir(resolve(config.cwd, CACHE_FOLDER_NAME))\n await writeFile(config.token.file, `export default \"${token}\"`)\n}\n\nexport const loaderToken = async (config: IConfigOptions): Promise<string> => {\n return await loaderTs(config.token.file)\n}\n","","import type { IConfigOptions, IPackage, IPackageContexts } from '@/types'\nimport { readFileSync } from 'node:fs'\nimport { resolve } from 'node:path'\nimport * as process from 'node:process'\nimport { findUp } from 'find-up'\nimport { glob } from 'glob'\nimport { parse } from 'yaml'\nimport { CACHE_TOKEN_FILE_PATH } from '@/constant.ts'\nimport { loaderToken } from '@/token.ts'\nimport { name } from '../package.json'\n\nconst CURRENT_PATH = resolve(import.meta.dirname, '../')\n\nconst defaultConfig: IConfigOptions = {\n root: '',\n cwd: '',\n token: {\n name: 'token.ts',\n file: resolve(CURRENT_PATH, `${CACHE_TOKEN_FILE_PATH}`),\n value: '',\n },\n release: '',\n currentVersion: '',\n monorepo: {\n is: false,\n workspacePath: '',\n packages: [],\n packageContexts: [],\n updatePackages: [],\n },\n packages: '',\n}\n\nconst collectPackageFiles = async (config: IConfigOptions, packages: string[]) => {\n const files = ['package.json']\n files.push(...await glob(packages, {\n cwd: config.cwd,\n ignore: ['**/node_modules/**'],\n }))\n\n return [...files]\n}\n\nexport const isMonorepo = async (\n config: IConfigOptions,\n): Promise<IConfigOptions['monorepo']> => {\n const workspacePath = await findUp('pnpm-workspace.yaml', {\n cwd: config.cwd,\n }) as string\n\n if (!workspacePath) {\n return {\n is: false,\n workspacePath: '',\n packageContexts: [],\n packages: [],\n }\n }\n\n const workspaceYaml = workspacePath ? parse(readFileSync(workspacePath, 'utf-8')) : { packages: [] }\n\n const is = !!workspaceYaml?.packages.length\n\n const { packages: workSpacePackages } = parse(readFileSync(workspacePath, 'utf-8'))\n\n let packages = []\n let packageContexts: IPackageContexts[] = []\n if (workSpacePackages) {\n packages = workSpacePackages.map(\n (item: string) =>\n item.indexOf('*')\n ? `${item.replace('/*', '')}/**/package.json`\n : `${item}/**/package.json`,\n )\n\n const packageFiles = await collectPackageFiles(config, packages)\n packageContexts = packageFiles.map((file) => {\n const files = JSON.parse(readFileSync(resolve(config.cwd, file), 'utf-8')) as IPackage\n\n return {\n name: `${files.name}`,\n file,\n version: files?.version || '',\n context: files,\n }\n }) as IPackageContexts[]\n }\n\n return {\n is,\n workspacePath,\n packageContexts,\n packages,\n }\n}\n\nexport const resolveConfig = async (): Promise<IConfigOptions> => {\n const { loadConfig } = await import('c12')\n\n const config = await loadConfig<IConfigOptions>({\n name,\n defaultConfig,\n }).then(r => ({\n ...r.config,\n cwd: process.cwd(),\n root: CURRENT_PATH,\n }))\n\n config.token.value = await loaderToken(config) || ''\n\n config.monorepo = await isMonorepo(config)\n\n config.packages = resolve(config.cwd, 'package.json')\n\n return config\n}\n","import type { IConfigOptions } from '@/types'\nimport { x } from 'tinyexec'\n\nexport const gitCommit = async (config: IConfigOptions) => {\n const args = []\n\n args.push('--message', `release: v${config.release}`)\n\n args.push('--allow-empty')\n\n // if (typeof config.packages === 'object') {\n // args.push(config.packages.map(r => basename(r)).join(' '))\n // }\n // else {\n args.push(config.packages)\n // }\n\n await x('git', ['commit', ...args], {\n nodeOptions: {\n cwd: config.cwd,\n stdio: 'pipe',\n },\n })\n}\n\nexport const gitTags = async (config: IConfigOptions) => {\n await x('git', [\n 'tag',\n '--annotate',\n '--message',\n '',\n `v${config.release}`,\n ], {\n nodeOptions: {\n cwd: config.cwd,\n stdio: 'pipe',\n },\n })\n}\n\nexport const gitPush = async (config: IConfigOptions) => {\n await x('git', ['push', '--tags'], {\n throwOnError: true,\n nodeOptions: {\n cwd: config.cwd,\n stdio: 'pipe',\n },\n })\n}\n","import type { IConfigOptions } from '@/types'\nimport { readFile, writeFile } from 'node:fs/promises'\n\nconst JSON_SPACING = 2\n\nconst updatePackageJson = async (path: string, version: string) => {\n const updatePackage = JSON.parse(await readFile(path, 'utf-8'))\n updatePackage.version = version\n await writeFile(path, JSON.stringify(updatePackage, null, JSON_SPACING))\n}\n\nexport const updateFiles = async (config: IConfigOptions) => {\n if (config.monorepo.is) {\n for (const pkg of config.monorepo.updatePackages!) {\n await updatePackageJson(pkg.path, pkg.newVersion)\n }\n }\n else {\n await updatePackageJson(config.packages, config.release)\n }\n}\n","import type { IConfigOptions } from '@/types'\nimport { readFile } from 'node:fs/promises'\n\nexport const getCurrentVersion = async (config: IConfigOptions) => {\n const { packages } = config\n\n if (typeof packages === 'object') {\n // TODO load monorepo package version\n }\n else {\n const manifest = JSON.parse(await readFile(packages, {\n encoding: 'utf-8',\n })) as {\n version?: string\n }\n\n config.currentVersion = manifest.version || ''\n }\n}\n","import type { releaseType, ReleaseTypes } from '@/release-type.ts'\nimport type { IConfigOptions, IUpdatePackages } from '@/types'\nimport { cancel, isCancel, select, text } from '@clack/prompts'\nimport pc from 'picocolors'\nimport semver from 'semver'\nimport { CUSTOM_RELEASE_PREFIX } from '@/constant.ts'\nimport { isCancelProcess } from '@/utils.ts'\n\n// https://semver.org/\n\nconst PADDING = 13\nexport const validateVersion = (version: string) => !!semver.valid(version)\n\ninterface UIStyle {\n label: string\n color: (t: string) => string\n}\n\nconst DEFAULT_STYLE: UIStyle = { label: 'next', color: pc.cyan }\n\nconst UI_STYLE_MAP: Record<string, UIStyle> = {\n major: { label: 'major', color: pc.cyan },\n minor: { label: 'minor', color: pc.cyan },\n patch: { label: 'patch', color: pc.cyan },\n next: { label: 'next', color: pc.cyan },\n rc: { label: 'rc', color: pc.green },\n beta: { label: 'pre-beta', color: pc.magenta },\n alpha: { label: 'alpha', color: pc.yellow },\n}\n\n// --- 工具函数 ---\n\n/**\n * 核心逻辑:增量处理预发布版本\n * 解决 TS2345: 使用 readonly 修饰符接受 semver 的返回类型\n */\nconst processIncrementalPre = (preParts: readonly (string | number)[], base: string, prefix: string, expectedLen: number, fallback: string): string => {\n if (preParts[0] !== prefix) {\n return `${base}-${fallback}`\n }\n\n const newPre = [...preParts].slice(0, expectedLen)\n while (newPre.length < expectedLen) {\n newPre.push(0)\n }\n\n const lastIdx = expectedLen - 1\n const lastVal = newPre[lastIdx]\n const numericVal = typeof lastVal === 'number' ? lastVal : Number.parseInt(String(lastVal), 10)\n\n const isExtension = preParts.length < expectedLen\n // 逻辑:如果是补位产生的 0,则起始为 1;如果是已有的数字,则递增\n newPre[lastIdx] = isExtension ? 1 : (Number.isNaN(numericVal) ? 1 : numericVal + 1)\n\n return `${base}-${newPre.join('.')}`\n}\n\nexport const getNextVersions = (version: string): ReleaseTypes => {\n const s = semver.parse(version)\n if (!s)\n throw new Error(`[Invalid SemVer]: ${version}`)\n\n const { major: M, minor: m, patch: p, prerelease: pre } = s\n const base = `${M}.${m}.${p}`\n\n return {\n 'major': `${M + 1}.0.0`,\n 'minor': `${M}.${m + 1}.0`,\n 'patch': `${M}.${m}.${p + 1}`,\n 'next': `${M}.${m}.${p + 1}`,\n 'rc': processIncrementalPre(pre, base, 'rc', 2, 'rc.1'),\n 'beta-major': processIncrementalPre(pre, base, 'beta', 2, 'beta.1'),\n 'beta-minor': processIncrementalPre(pre, base, 'beta', 3, 'beta.0.1'),\n 'beta-patch': processIncrementalPre(pre, base, 'beta', 4, 'beta.0.0.1'),\n 'pre-beta': `${base}-beta`,\n 'alpha-beta': `${base}-alpha.beta`,\n 'alpha-major': processIncrementalPre(pre, base, 'alpha', 2, 'alpha.1'),\n 'alpha-minor': processIncrementalPre(pre, base, 'alpha', 3, 'alpha.0.1'),\n 'alpha-patch': processIncrementalPre(pre, base, 'alpha', 4, 'alpha.0.0.1'),\n }\n}\n\nexport async function promptForNewVersion(config: IConfigOptions): Promise<string | void>\nexport async function promptForNewVersion(config: IConfigOptions, pkg: IUpdatePackages, index: number): Promise<string | void>\nexport async function promptForNewVersion(config: IConfigOptions, pkg?: IUpdatePackages, index?: number): Promise<string | void> {\n const version = config.monorepo.is && pkg !== undefined ? pkg.newVersion : config.currentVersion\n\n const next = getNextVersions(version)\n\n // 动态生成选项\n const options = (Object.keys(next) as releaseType[]).map((key) => {\n const versionStr = next[key]\n\n // 1. 获取前缀(如 'alpha')\n const prefix = key.split('-')[0] ?? 'next'\n\n // 2. 彻底解决 TS18048: 即使 prefix 在 Map 里,TS 仍认为可能返回 undefined\n // 使用空值合并运算符 (??) 确保 style 永远是 UIStyle 类型\n const style = UI_STYLE_MAP[prefix] ?? DEFAULT_STYLE\n\n const label = style.label.padStart(PADDING, ' ')\n\n // 渲染版本颜色,同样处理关键字匹配的安全性\n const coloredVersion = versionStr.replace(/(rc|beta|alpha)/g, (match) => {\n const matchStyle = UI_STYLE_MAP[match] ?? DEFAULT_STYLE\n return matchStyle.color(match)\n })\n\n return {\n value: key as string,\n label: `${label} ${coloredVersion}`,\n }\n })\n\n options.push({\n value: CUSTOM_RELEASE_PREFIX,\n label: `${'custom'.padStart(PADDING, ' ')} ...`,\n })\n\n const release = await select({\n message: `Current version ${pc.bold(version)}`,\n options,\n initialValue: 'next',\n }) as releaseType | 'custom'\n\n isCancelProcess(release)\n\n let finalVersion: string\n\n if (release === CUSTOM_RELEASE_PREFIX) {\n const custom = await text({\n message: 'Enter the new version number',\n validate: val => !validateVersion(val) ? 'Invalid semver' : undefined,\n }) as string\n\n if (isCancel(custom)) {\n cancel('No version entered')\n return process.exit(0)\n }\n finalVersion = custom\n }\n else {\n // 这里的 release 已经排除了 CUSTOM 且必定属于 releaseType\n finalVersion = next[release]\n }\n\n if (\n config.monorepo.is\n && pkg !== undefined\n && index !== undefined\n && Array.isArray(config.monorepo.updatePackages)\n ) {\n config.monorepo.updatePackages[index]!.newVersion = finalVersion\n }\n else {\n config.release = finalVersion\n }\n}\n","import type { IConfigOptions, IPackageContexts, IUpdatePackages } from '@/types'\nimport { readFile, writeFile } from 'node:fs/promises'\nimport { resolve } from 'node:path'\nimport process from 'node:process'\nimport { confirm, intro, outro, select } from '@clack/prompts'\nimport { findUp } from 'find-up'\nimport pc from 'picocolors'\nimport { resolveConfig } from '@/config.ts'\nimport { CANCEL_PROCESS } from '@/constant.ts'\nimport { gitCommit, gitTags } from '@/git.ts'\nimport { updateFiles } from '@/update-files.ts'\nimport { isCancelProcess, loaderTs } from '@/utils.ts'\nimport { getCurrentVersion } from '@/version/current.ts'\nimport { promptForNewVersion } from '@/version/new.version.ts'\nimport { version } from '../../package.json'\n\n/**\n * 创建包选择选项\n */\nconst createPackageOptions = (packageContexts: IPackageContexts[]) => {\n return packageContexts.map((file) => {\n return {\n value: file.name,\n label: file.name,\n hint: `${pc.red(file.version)} - ${file.file}`,\n }\n })\n}\n\n/**\n * 处理单个包的选择流程\n */\nconst processPackageSelection = async (\n config: IConfigOptions,\n selectedPackageName: string,\n packageContexts: IPackageContexts[],\n): Promise<void> => {\n const selectedPackage = packageContexts.find(opt => opt.name === selectedPackageName) as IPackageContexts\n\n const resolvePackage: IUpdatePackages = {\n name: selectedPackageName,\n path: resolve(config.cwd, selectedPackage.file),\n currentVersion: selectedPackage.version,\n newVersion: selectedPackage.version,\n };\n\n (config.monorepo.updatePackages ??= []).push(resolvePackage)\n\n await promptForNewVersion(config, resolvePackage, config.monorepo.updatePackages.length - 1)\n}\n\n/**\n * 处理 monorepo 包的选择逻辑\n */\nconst handleMonorepoPackageSelection = async (config: IConfigOptions): Promise<void> => {\n const options = createPackageOptions(config.monorepo.packageContexts)\n let availableOptions = [...options]\n\n while (availableOptions.length > 0) {\n const selectedPackage = await select({\n message: '请选择要升级版本的包:',\n options: availableOptions,\n }) as string\n\n isCancelProcess(selectedPackage)\n\n await processPackageSelection(config, selectedPackage, config.monorepo.packageContexts)\n\n // 从可用选项中移除已选择的包\n availableOptions = availableOptions.filter(opt => opt.value !== selectedPackage)\n\n if (availableOptions.length > 0) {\n const continueSelection = await confirm({\n message: '是否继续选择其他包?',\n initialValue: true,\n })\n isCancelProcess(continueSelection)\n\n if (!continueSelection) {\n break\n }\n }\n }\n}\n\n/**\n * 获取缓存文件路径\n */\nconst getCachePath = async (cwd: string): Promise<string | null> => {\n const path = await findUp('node_modules/.cache/dnmp.ts', {\n cwd,\n })\n return path || null\n}\n\n/**\n * 读取或设置统一更新版本选项\n */\nconst getOrUpdateAllUpdateVersion = async (config: IConfigOptions): Promise<boolean> => {\n const cachePath = await getCachePath(config.cwd)\n\n if (cachePath) {\n return Boolean(await loaderTs(cachePath))\n }\n\n const allUpdateVersion = await confirm({\n message: '是否以根 package.json 为主版本统一更新 workspace 所有版本',\n initialValue: true,\n }) as boolean\n\n isCancelProcess(allUpdateVersion, CANCEL_PROCESS)\n\n const cacheFilePath = resolve(config.cwd, './node_modules/.cache/dnmp.ts')\n await writeFile(cacheFilePath, `export default ${allUpdateVersion}`)\n\n return allUpdateVersion\n}\n\n/**\n * 读取包文件内容\n */\nconst readPackageFile = async (filePath: string): Promise<{ version: string }> => {\n return JSON.parse(await readFile(filePath, 'utf-8')) as { version: string }\n}\n\n/**\n * 统一更新所有包的版本\n */\nconst updateAllPackagesVersion = async (config: IConfigOptions): Promise<void> => {\n const pkg = await readPackageFile(config.packages)\n config.currentVersion = pkg.version\n\n await promptForNewVersion(config)\n\n for (const item of config.monorepo.packageContexts) {\n const resolvePkgPath = resolve(config.cwd, item.file)\n const packageInfo = await readPackageFile(resolvePkgPath);\n\n (config.monorepo.updatePackages ??= []).push({\n name: item.name,\n path: resolvePkgPath,\n currentVersion: packageInfo.version,\n newVersion: config.release,\n })\n }\n}\n\nexport const bumpVersion = async () => {\n const config = await resolveConfig()\n\n intro(pc.bgCyan(` dnmp ${version} `))\n\n if (!config.token.value) {\n outro('请先设置 release token')\n return process.exit(0)\n }\n\n if (config.monorepo.is) {\n const allUpdateVersion = await getOrUpdateAllUpdateVersion(config)\n\n if (allUpdateVersion) {\n await updateAllPackagesVersion(config)\n }\n else {\n await handleMonorepoPackageSelection(config)\n }\n }\n else {\n await getCurrentVersion(config)\n await promptForNewVersion(config)\n }\n\n console.log('npm', [\n 'publish',\n `--//registry.npmjs.org/:_authToken=${config.token.value}`,\n '--access',\n 'public',\n ].join(' '))\n\n const isConfirmUpdate = await confirm({\n message: '是否确认更新 package.json ?',\n initialValue: true,\n })\n\n isCancelProcess(isConfirmUpdate)\n\n if (!isConfirmUpdate) {\n outro('用户取消操作,后续进程停止')\n return process.exit(0)\n }\n\n await updateFiles(config)\n\n await gitCommit(config)\n await gitTags(config)\n\n // await runCommand(config, 'npm', [\n // 'publish',\n // `--//registry.npmjs.org/:_authToken=${config.token}`,\n // '--access',\n // 'public',\n // ])\n\n outro('Done.')\n}\n","import process from 'node:process'\nimport { resolveConfig } from '@/config.ts'\nimport { setToken } from '@/token.ts'\nimport { printWarning } from '@/utils.ts'\n\nexport const token = async (token: string = '') => {\n try {\n const config = await resolveConfig()\n await setToken(config, token)\n }\n catch (error: any) {\n printWarning(error.message)\n process.exit(0)\n }\n}\n","import * as process from 'node:process'\nimport cac from 'cac'\nimport { bumpVersion } from '@/command/bump.ts'\nimport { token as setToken } from '@/command/token.ts'\nimport { printWarning } from '@/utils.ts'\nimport { name, version } from '../package.json'\n\nconst cli = cac(name)\n\n// TODO 完成主目录下的 package.json 版本发布\n// TODO 完成 monorepo 相关版本,多选版本发布\n\ncli.command('')\n .action(async (options) => {\n await bumpVersion()\n })\n\ncli.command('set <token>', 'Set the local release Token')\n .action(async (token: string = '') => {\n await setToken(token)\n })\n\ncli.help()\ncli.version(version)\n\ntry {\n cli.parse()\n}\ncatch (error: any) {\n printWarning(error.message)\n process.exit(0)\n}\n"],"x_google_ignoreList":[0],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAA,IAAI,IAAI,WAAW,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE;CAC7D,IAAI,mBACH,EAAE,CAAC,CAAC,IAAI,YAAY,KAAK,SAAS,aAAa,MAC9C,CAAC,CAAC,IAAI,eAAe,KAAK,SAAS,UAAU,IAAI,EAAE,aAAa,YAAa,EAAE,UAAU,EAAE,EAAE,SAAS,IAAI,SAAS,UAAW,CAAC,CAAC,IAAI;CAEtI,IAAI,aAAa,MAAM,OAAO,UAAU,UACvC,UAAS;EACR,IAAI,SAAS,KAAK,OAAO,QAAQ,OAAO,QAAQ,OAAO,KAAK,OAAO;AACnE,SAAO,CAAC,QAAQ,OAAO,aAAa,QAAQ,OAAO,SAAS,MAAM,GAAG,QAAQ,OAAO,SAAS;;CAG/F,IAAI,gBAAgB,QAAQ,OAAO,SAAS,UAAU;EACrD,IAAI,SAAS,IAAI,SAAS;AAC1B,KAAG;AACF,aAAU,OAAO,UAAU,QAAQ,MAAM,GAAG;AAC5C,YAAS,QAAQ,MAAM;AACvB,WAAQ,OAAO,QAAQ,OAAO,OAAO;WAC7B,CAAC;AACV,SAAO,SAAS,OAAO,UAAU,OAAO;;CAGzC,IAAI,gBAAgB,UAAU,qBAAqB;EAClD,IAAI,IAAI,UAAU,kBAAkB;AACpC,SAAO;GACN,kBAAkB;GAClB,OAAO,EAAE,WAAW,UAAU;GAC9B,MAAM,EAAE,WAAW,YAAY,kBAAkB;GACjD,KAAK,EAAE,WAAW,YAAY,kBAAkB;GAChD,QAAQ,EAAE,WAAW,WAAW;GAChC,WAAW,EAAE,WAAW,WAAW;GACnC,SAAS,EAAE,WAAW,WAAW;GACjC,QAAQ,EAAE,WAAW,WAAW;GAChC,eAAe,EAAE,WAAW,WAAW;GAEvC,OAAO,EAAE,YAAY,WAAW;GAChC,KAAK,EAAE,YAAY,WAAW;GAC9B,OAAO,EAAE,YAAY,WAAW;GAChC,QAAQ,EAAE,YAAY,WAAW;GACjC,MAAM,EAAE,YAAY,WAAW;GAC/B,SAAS,EAAE,YAAY,WAAW;GAClC,MAAM,EAAE,YAAY,WAAW;GAC/B,OAAO,EAAE,YAAY,WAAW;GAChC,MAAM,EAAE,YAAY,WAAW;GAE/B,SAAS,EAAE,YAAY,WAAW;GAClC,OAAO,EAAE,YAAY,WAAW;GAChC,SAAS,EAAE,YAAY,WAAW;GAClC,UAAU,EAAE,YAAY,WAAW;GACnC,QAAQ,EAAE,YAAY,WAAW;GACjC,WAAW,EAAE,YAAY,WAAW;GACpC,QAAQ,EAAE,YAAY,WAAW;GACjC,SAAS,EAAE,YAAY,WAAW;GAElC,aAAa,EAAE,YAAY,WAAW;GACtC,WAAW,EAAE,YAAY,WAAW;GACpC,aAAa,EAAE,YAAY,WAAW;GACtC,cAAc,EAAE,YAAY,WAAW;GACvC,YAAY,EAAE,YAAY,WAAW;GACrC,eAAe,EAAE,YAAY,WAAW;GACxC,YAAY,EAAE,YAAY,WAAW;GACrC,aAAa,EAAE,YAAY,WAAW;GAEtC,eAAe,EAAE,aAAa,WAAW;GACzC,aAAa,EAAE,aAAa,WAAW;GACvC,eAAe,EAAE,aAAa,WAAW;GACzC,gBAAgB,EAAE,aAAa,WAAW;GAC1C,cAAc,EAAE,aAAa,WAAW;GACxC,iBAAiB,EAAE,aAAa,WAAW;GAC3C,cAAc,EAAE,aAAa,WAAW;GACxC,eAAe,EAAE,aAAa,WAAW;GACzC;;AAGF,QAAO,UAAU,cAAc;AAC/B,QAAO,QAAQ,eAAe;;;;;;AC1E9B;AACA;AACA;AACA;AACA;;;;ACEA,MAAa,iBAAiB,YAAoB;AAC9C,QAAO,GAAG,WAAW,QAAQ;;AAGjC,MAAa,aAAa,YAAoB;AAC1C,KAAI,CAAC,cAAc,QAAQ,CACvB,IAAG,UAAU,QAAQ;;AAI7B,MAAa,gBAAgB,YACzB,QAAQ,IAAI,MAAM,SAAS;CACvB,OAAO;CACP,SAAS;CACT,aAAa;CACb,aAAa;CAChB,CAAC,CAAC;AAEP,MAAa,mBAAmB,OAAgB,UAAkB,mBAAmB;AACjF,KAAI,SAAS,MAAM,EAAE;AACjB,SAAO,QAAQ;AACf,SAAO,QAAQ,KAAK,EAAE;;;AAI9B,MAAa,WAAW,OAAO,SAAkC;AAE7D,QAAO,MADQ,WAAW,KAAK,CACX,OAAO,MAAM,EAAE,SAAS,MAAM,CAAC;;;;;AC3BvD,MAAa,WAAW,OAAO,QAAwB,YAAiC;AACpF,WAAU,QAAQ,OAAO,KAAK,kBAAkB,CAAC;AACjD,OAAM,UAAU,OAAO,MAAM,MAAM,mBAAmBA,QAAM,GAAG;;AAGnE,MAAa,cAAc,OAAO,WAA4C;AAC1E,QAAO,MAAM,SAAS,OAAO,MAAM,KAAK;;;;;;;;;;AED5C,MAAM,eAAe,QAAQ,OAAO,KAAK,SAAS,MAAM;AAExD,MAAMC,gBAAgC;CAClC,MAAM;CACN,KAAK;CACL,OAAO;EACH,MAAM;EACN,MAAM,QAAQ,cAAc,GAAG,wBAAwB;EACvD,OAAO;EACV;CACD,SAAS;CACT,gBAAgB;CAChB,UAAU;EACN,IAAI;EACJ,eAAe;EACf,UAAU,EAAE;EACZ,iBAAiB,EAAE;EACnB,gBAAgB,EAAE;EACrB;CACD,UAAU;CACb;AAED,MAAM,sBAAsB,OAAO,QAAwB,aAAuB;CAC9E,MAAM,QAAQ,CAAC,eAAe;AAC9B,OAAM,KAAK,GAAG,MAAM,KAAK,UAAU;EAC/B,KAAK,OAAO;EACZ,QAAQ,CAAC,qBAAqB;EACjC,CAAC,CAAC;AAEH,QAAO,CAAC,GAAG,MAAM;;AAGrB,MAAa,aAAa,OACtB,WACsC;CACtC,MAAM,gBAAgB,MAAM,OAAO,uBAAuB,EACtD,KAAK,OAAO,KACf,CAAC;AAEF,KAAI,CAAC,cACD,QAAO;EACH,IAAI;EACJ,eAAe;EACf,iBAAiB,EAAE;EACnB,UAAU,EAAE;EACf;CAKL,MAAM,KAAK,CAAC,EAFU,gBAAgB,MAAM,aAAa,eAAe,QAAQ,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE,GAExE,SAAS;CAErC,MAAM,EAAE,UAAU,sBAAsB,MAAM,aAAa,eAAe,QAAQ,CAAC;CAEnF,IAAI,WAAW,EAAE;CACjB,IAAIC,kBAAsC,EAAE;AAC5C,KAAI,mBAAmB;AACnB,aAAW,kBAAkB,KACxB,SACG,KAAK,QAAQ,IAAI,GACX,GAAG,KAAK,QAAQ,MAAM,GAAG,CAAC,oBAC1B,GAAG,KAAK,kBACrB;AAGD,qBADqB,MAAM,oBAAoB,QAAQ,SAAS,EACjC,KAAK,SAAS;GACzC,MAAM,QAAQ,KAAK,MAAM,aAAa,QAAQ,OAAO,KAAK,KAAK,EAAE,QAAQ,CAAC;AAE1E,UAAO;IACH,MAAM,GAAG,MAAM;IACf;IACA,SAAS,OAAO,WAAW;IAC3B,SAAS;IACZ;IACH;;AAGN,QAAO;EACH;EACA;EACA;EACA;EACH;;AAGL,MAAa,gBAAgB,YAAqC;CAC9D,MAAM,EAAE,eAAe,MAAM,OAAO;CAEpC,MAAM,SAAS,MAAM,WAA2B;EAC5C;EACA;EACH,CAAC,CAAC,MAAK,OAAM;EACV,GAAG,EAAE;EACL,KAAKC,UAAQ,KAAK;EAClB,MAAM;EACT,EAAE;AAEH,QAAO,MAAM,QAAQ,MAAM,YAAY,OAAO,IAAI;AAElD,QAAO,WAAW,MAAM,WAAW,OAAO;AAE1C,QAAO,WAAW,QAAQ,OAAO,KAAK,eAAe;AAErD,QAAO;;;;;AC/GX,MAAa,YAAY,OAAO,WAA2B;CACvD,MAAM,OAAO,EAAE;AAEf,MAAK,KAAK,aAAa,aAAa,OAAO,UAAU;AAErD,MAAK,KAAK,gBAAgB;AAM1B,MAAK,KAAK,OAAO,SAAS;AAG1B,OAAM,EAAE,OAAO,CAAC,UAAU,GAAG,KAAK,EAAE,EAChC,aAAa;EACT,KAAK,OAAO;EACZ,OAAO;EACV,EACJ,CAAC;;AAGN,MAAa,UAAU,OAAO,WAA2B;AACrD,OAAM,EAAE,OAAO;EACX;EACA;EACA;EACA;EACA,IAAI,OAAO;EACd,EAAE,EACC,aAAa;EACT,KAAK,OAAO;EACZ,OAAO;EACV,EACJ,CAAC;;;;;AClCN,MAAM,eAAe;AAErB,MAAM,oBAAoB,OAAO,MAAc,cAAoB;CAC/D,MAAM,gBAAgB,KAAK,MAAM,MAAM,SAAS,MAAM,QAAQ,CAAC;AAC/D,eAAc,UAAUC;AACxB,OAAM,UAAU,MAAM,KAAK,UAAU,eAAe,MAAM,aAAa,CAAC;;AAG5E,MAAa,cAAc,OAAO,WAA2B;AACzD,KAAI,OAAO,SAAS,GAChB,MAAK,MAAM,OAAO,OAAO,SAAS,eAC9B,OAAM,kBAAkB,IAAI,MAAM,IAAI,WAAW;KAIrD,OAAM,kBAAkB,OAAO,UAAU,OAAO,QAAQ;;;;;ACfhE,MAAa,oBAAoB,OAAO,WAA2B;CAC/D,MAAM,EAAE,aAAa;AAErB,KAAI,OAAO,aAAa,UAAU,OAU9B,QAAO,iBANU,KAAK,MAAM,MAAM,SAAS,UAAU,EACjD,UAAU,SACb,CAAC,CAAC,CAI8B,WAAW;;;;;ACNpD,MAAM,UAAU;AAChB,MAAa,mBAAmB,cAAoB,CAAC,CAAC,OAAO,MAAMC,UAAQ;AAO3E,MAAMC,gBAAyB;CAAE,OAAO;CAAQ,OAAOC,0BAAG;CAAM;AAEhE,MAAMC,eAAwC;CAC1C,OAAO;EAAE,OAAO;EAAS,OAAOD,0BAAG;EAAM;CACzC,OAAO;EAAE,OAAO;EAAS,OAAOA,0BAAG;EAAM;CACzC,OAAO;EAAE,OAAO;EAAS,OAAOA,0BAAG;EAAM;CACzC,MAAM;EAAE,OAAO;EAAQ,OAAOA,0BAAG;EAAM;CACvC,IAAI;EAAE,OAAO;EAAM,OAAOA,0BAAG;EAAO;CACpC,MAAM;EAAE,OAAO;EAAY,OAAOA,0BAAG;EAAS;CAC9C,OAAO;EAAE,OAAO;EAAS,OAAOA,0BAAG;EAAQ;CAC9C;;;;;AAQD,MAAM,yBAAyB,UAAwC,MAAc,QAAgB,aAAqB,aAA6B;AACnJ,KAAI,SAAS,OAAO,OAChB,QAAO,GAAG,KAAK,GAAG;CAGtB,MAAM,SAAS,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,YAAY;AAClD,QAAO,OAAO,SAAS,YACnB,QAAO,KAAK,EAAE;CAGlB,MAAM,UAAU,cAAc;CAC9B,MAAM,UAAU,OAAO;CACvB,MAAM,aAAa,OAAO,YAAY,WAAW,UAAU,OAAO,SAAS,OAAO,QAAQ,EAAE,GAAG;AAI/F,QAAO,WAFa,SAAS,SAAS,cAEN,IAAK,OAAO,MAAM,WAAW,GAAG,IAAI,aAAa;AAEjF,QAAO,GAAG,KAAK,GAAG,OAAO,KAAK,IAAI;;AAGtC,MAAa,mBAAmB,cAAkC;CAC9D,MAAM,IAAI,OAAO,MAAMF,UAAQ;AAC/B,KAAI,CAAC,EACD,OAAM,IAAI,MAAM,qBAAqBA,YAAU;CAEnD,MAAM,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,YAAY,QAAQ;CAC1D,MAAM,OAAO,GAAG,EAAE,GAAG,EAAE,GAAG;AAE1B,QAAO;EACH,SAAS,GAAG,IAAI,EAAE;EAClB,SAAS,GAAG,EAAE,GAAG,IAAI,EAAE;EACvB,SAAS,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;EAC1B,QAAQ,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;EACzB,MAAM,sBAAsB,KAAK,MAAM,MAAM,GAAG,OAAO;EACvD,cAAc,sBAAsB,KAAK,MAAM,QAAQ,GAAG,SAAS;EACnE,cAAc,sBAAsB,KAAK,MAAM,QAAQ,GAAG,WAAW;EACrE,cAAc,sBAAsB,KAAK,MAAM,QAAQ,GAAG,aAAa;EACvE,YAAY,GAAG,KAAK;EACpB,cAAc,GAAG,KAAK;EACtB,eAAe,sBAAsB,KAAK,MAAM,SAAS,GAAG,UAAU;EACtE,eAAe,sBAAsB,KAAK,MAAM,SAAS,GAAG,YAAY;EACxE,eAAe,sBAAsB,KAAK,MAAM,SAAS,GAAG,cAAc;EAC7E;;AAKL,eAAsB,oBAAoB,QAAwB,KAAuB,OAAwC;CAC7H,MAAMA,YAAU,OAAO,SAAS,MAAM,QAAQ,SAAY,IAAI,aAAa,OAAO;CAElF,MAAM,OAAO,gBAAgBA,UAAQ;CAGrC,MAAM,UAAW,OAAO,KAAK,KAAK,CAAmB,KAAK,QAAQ;EAC9D,MAAM,aAAa,KAAK;AAiBxB,SAAO;GACH,OAAO;GACP,OAAO,IAZG,aAJC,IAAI,MAAM,IAAI,CAAC,MAAM,WAIE,eAElB,MAAM,SAAS,SAAS,IAAI,CAU5B,GAPG,WAAW,QAAQ,qBAAqB,UAAU;AAErE,YADmB,aAAa,UAAU,eACxB,MAAM,MAAM;KAChC;GAKD;GACH;AAEF,SAAQ,KAAK;EACT,OAAO;EACP,OAAO,GAAG,SAAS,SAAS,SAAS,IAAI,CAAC;EAC7C,CAAC;CAEF,MAAM,UAAU,MAAM,OAAO;EACzB,SAAS,mBAAmBE,0BAAG,KAAKF,UAAQ;EAC5C;EACA,cAAc;EACjB,CAAC;AAEF,iBAAgB,QAAQ;CAExB,IAAII;AAEJ,KAAI,YAAY,uBAAuB;EACnC,MAAM,SAAS,MAAM,KAAK;GACtB,SAAS;GACT,WAAU,QAAO,CAAC,gBAAgB,IAAI,GAAG,mBAAmB;GAC/D,CAAC;AAEF,MAAI,SAAS,OAAO,EAAE;AAClB,UAAO,qBAAqB;AAC5B,UAAO,QAAQ,KAAK,EAAE;;AAE1B,iBAAe;OAIf,gBAAe,KAAK;AAGxB,KACI,OAAO,SAAS,MACb,QAAQ,UACR,UAAU,UACV,MAAM,QAAQ,OAAO,SAAS,eAAe,CAEhD,QAAO,SAAS,eAAe,OAAQ,aAAa;KAGpD,QAAO,UAAU;;;;;;;;ACxIzB,MAAM,wBAAwB,oBAAwC;AAClE,QAAO,gBAAgB,KAAK,SAAS;AACjC,SAAO;GACH,OAAO,KAAK;GACZ,OAAO,KAAK;GACZ,MAAM,GAAGC,0BAAG,IAAI,KAAK,QAAQ,CAAC,KAAK,KAAK;GAC3C;GACH;;;;;AAMN,MAAM,0BAA0B,OAC5B,QACA,qBACA,oBACgB;CAChB,MAAM,kBAAkB,gBAAgB,MAAK,QAAO,IAAI,SAAS,oBAAoB;CAErF,MAAMC,iBAAkC;EACpC,MAAM;EACN,MAAM,QAAQ,OAAO,KAAK,gBAAgB,KAAK;EAC/C,gBAAgB,gBAAgB;EAChC,YAAY,gBAAgB;EAC/B;AAED,EAAC,OAAO,SAAS,mBAAmB,EAAE,EAAE,KAAK,eAAe;AAE5D,OAAM,oBAAoB,QAAQ,gBAAgB,OAAO,SAAS,eAAe,SAAS,EAAE;;;;;AAMhG,MAAM,iCAAiC,OAAO,WAA0C;CAEpF,IAAI,mBAAmB,CAAC,GADR,qBAAqB,OAAO,SAAS,gBAAgB,CAClC;AAEnC,QAAO,iBAAiB,SAAS,GAAG;EAChC,MAAM,kBAAkB,MAAM,OAAO;GACjC,SAAS;GACT,SAAS;GACZ,CAAC;AAEF,kBAAgB,gBAAgB;AAEhC,QAAM,wBAAwB,QAAQ,iBAAiB,OAAO,SAAS,gBAAgB;AAGvF,qBAAmB,iBAAiB,QAAO,QAAO,IAAI,UAAU,gBAAgB;AAEhF,MAAI,iBAAiB,SAAS,GAAG;GAC7B,MAAM,oBAAoB,MAAM,QAAQ;IACpC,SAAS;IACT,cAAc;IACjB,CAAC;AACF,mBAAgB,kBAAkB;AAElC,OAAI,CAAC,kBACD;;;;;;;AAShB,MAAM,eAAe,OAAO,QAAwC;AAIhE,QAHa,MAAM,OAAO,+BAA+B,EACrD,KACH,CAAC,IACa;;;;;AAMnB,MAAM,8BAA8B,OAAO,WAA6C;CACpF,MAAM,YAAY,MAAM,aAAa,OAAO,IAAI;AAEhD,KAAI,UACA,QAAO,QAAQ,MAAM,SAAS,UAAU,CAAC;CAG7C,MAAM,mBAAmB,MAAM,QAAQ;EACnC,SAAS;EACT,cAAc;EACjB,CAAC;AAEF,iBAAgB,kBAAkB,eAAe;AAGjD,OAAM,UADgB,QAAQ,OAAO,KAAK,gCAAgC,EAC3C,kBAAkB,mBAAmB;AAEpE,QAAO;;;;;AAMX,MAAM,kBAAkB,OAAO,aAAmD;AAC9E,QAAO,KAAK,MAAM,MAAM,SAAS,UAAU,QAAQ,CAAC;;;;;AAMxD,MAAM,2BAA2B,OAAO,WAA0C;AAE9E,QAAO,kBADK,MAAM,gBAAgB,OAAO,SAAS,EACtB;AAE5B,OAAM,oBAAoB,OAAO;AAEjC,MAAK,MAAM,QAAQ,OAAO,SAAS,iBAAiB;EAChD,MAAM,iBAAiB,QAAQ,OAAO,KAAK,KAAK,KAAK;EACrD,MAAM,cAAc,MAAM,gBAAgB,eAAe;AAEzD,GAAC,OAAO,SAAS,mBAAmB,EAAE,EAAE,KAAK;GACzC,MAAM,KAAK;GACX,MAAM;GACN,gBAAgB,YAAY;GAC5B,YAAY,OAAO;GACtB,CAAC;;;AAIV,MAAa,cAAc,YAAY;CACnC,MAAM,SAAS,MAAM,eAAe;AAEpC,OAAMD,0BAAG,OAAO,SAAS,QAAQ,GAAG,CAAC;AAErC,KAAI,CAAC,OAAO,MAAM,OAAO;AACrB,QAAM,qBAAqB;AAC3B,SAAOE,UAAQ,KAAK,EAAE;;AAG1B,KAAI,OAAO,SAAS,GAGhB,KAFyB,MAAM,4BAA4B,OAAO,CAG9D,OAAM,yBAAyB,OAAO;KAGtC,OAAM,+BAA+B,OAAO;MAG/C;AACD,QAAM,kBAAkB,OAAO;AAC/B,QAAM,oBAAoB,OAAO;;AAGrC,SAAQ,IAAI,OAAO;EACf;EACA,sCAAsC,OAAO,MAAM;EACnD;EACA;EACH,CAAC,KAAK,IAAI,CAAC;CAEZ,MAAM,kBAAkB,MAAM,QAAQ;EAClC,SAAS;EACT,cAAc;EACjB,CAAC;AAEF,iBAAgB,gBAAgB;AAEhC,KAAI,CAAC,iBAAiB;AAClB,QAAM,gBAAgB;AACtB,SAAOA,UAAQ,KAAK,EAAE;;AAG1B,OAAM,YAAY,OAAO;AAEzB,OAAM,UAAU,OAAO;AACvB,OAAM,QAAQ,OAAO;AASrB,OAAM,QAAQ;;;;;ACtMlB,MAAa,QAAQ,OAAO,UAAgB,OAAO;AAC/C,KAAI;AAEA,QAAM,SADS,MAAM,eAAe,EACbC,QAAM;UAE1BC,OAAY;AACf,eAAa,MAAM,QAAQ;AAC3B,YAAQ,KAAK,EAAE;;;;;;ACLvB,MAAM,MAAM,IAAI,KAAK;AAKrB,IAAI,QAAQ,GAAG,CACV,OAAO,OAAO,YAAY;AACvB,OAAM,aAAa;EACrB;AAEN,IAAI,QAAQ,eAAe,8BAA8B,CACpD,OAAO,OAAO,UAAgB,OAAO;AAClC,OAAMC,MAASC,QAAM;EACvB;AAEN,IAAI,MAAM;AACV,IAAI,QAAQ,QAAQ;AAEpB,IAAI;AACA,KAAI,OAAO;SAERC,OAAY;AACf,cAAa,MAAM,QAAQ;AAC3B,WAAQ,KAAK,EAAE"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "dnmp",
3
3
  "type": "module",
4
- "version": "0.0.0-alpha.0.1",
4
+ "version": "0.0.0-alpha.0.3",
5
5
  "packageManager": "pnpm@10.15.1",
6
6
  "description": "Interactive CLI that bumps your version numbers and more",
7
7
  "author": "lonewolfyx <olddrivero.king@qq.com>",
@@ -19,7 +19,7 @@
19
19
  "module": "./dist/index.mjs",
20
20
  "types": "./dist/index.d.mts",
21
21
  "bin": {
22
- "bin-name": "./dist/index.js"
22
+ "dnmp": "./bin/cli.js"
23
23
  },
24
24
  "files": [
25
25
  "dist"
@@ -29,23 +29,31 @@
29
29
  "build": "tsdown",
30
30
  "lint": "eslint",
31
31
  "lint:fix": "eslint --fix",
32
- "prepublishOnly": "pnpm build"
32
+ "prepublishOnly": "pnpm build",
33
+ "prepare": "simple-git-hooks"
33
34
  },
34
35
  "publishConfig": {
35
36
  "registry": "https://registry.npmjs.org",
36
37
  "access": "public"
37
38
  },
38
39
  "dependencies": {
40
+ "@clack/prompts": "^0.11.0",
41
+ "boxen": "^8.0.1",
42
+ "c12": "^3.3.3",
39
43
  "cac": "^6.7.14",
40
44
  "defu": "^6.1.4",
41
45
  "find-up": "^8.0.0",
42
46
  "glob": "^13.0.0",
43
- "jiti": "^2.6.1"
47
+ "jiti": "^2.6.1",
48
+ "semver": "^7.7.3",
49
+ "tinyexec": "^1.0.2",
50
+ "yaml": "^2.8.2"
44
51
  },
45
52
  "devDependencies": {
46
53
  "@antfu/eslint-config": "^6.7.3",
47
54
  "@lonewolfyx/tsconfig": "^0.0.6",
48
55
  "@types/node": "^25.0.3",
56
+ "@types/semver": "^7.7.1",
49
57
  "eslint": "^9.39.2",
50
58
  "lint-staged": "^16.2.7",
51
59
  "picocolors": "^1.1.1",
package/dist/index.mjs DELETED
@@ -1,17 +0,0 @@
1
- import cac from "cac";
2
-
3
- //#region package.json
4
- var name = "dnmp";
5
- var version = "0.0.0-alpha.0.1";
6
-
7
- //#endregion
8
- //#region src/cli.ts
9
- const cli = cac(name);
10
- cli.command("").option("--test -t", "arg description", { default: false }).action(() => {});
11
- cli.help();
12
- cli.version(version);
13
- cli.parse();
14
-
15
- //#endregion
16
- export { };
17
- //# sourceMappingURL=index.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../package.json","../src/cli.ts"],"sourcesContent":["","import cac from 'cac'\nimport { name, version } from '../package.json'\n\nconst cli = cac(name)\n\ncli.command('')\n .option('--test -t', 'arg description', { default: false })\n .action(() => {\n })\n\ncli.help()\ncli.version(version)\ncli.parse()\n"],"mappings":";;;;;;;;ACGA,MAAM,MAAM,IAAI,KAAK;AAErB,IAAI,QAAQ,GAAG,CACV,OAAO,aAAa,mBAAmB,EAAE,SAAS,OAAO,CAAC,CAC1D,aAAa,GACZ;AAEN,IAAI,MAAM;AACV,IAAI,QAAQ,QAAQ;AACpB,IAAI,OAAO"}
File without changes