@done-coding/cli-utils 0.8.0 → 0.8.2-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/es/index.mjs CHANGED
@@ -1,56 +1,55 @@
1
1
  #!/usr/bin/env node
2
- import p from "chalk";
3
- import { default as Ie } from "chalk";
4
- import l from "node:path";
5
- import m, { existsSync as I, mkdirSync as q, writeFileSync as b, readFileSync as R } from "node:fs";
6
- import C from "crypto";
7
- import z from "prompts";
8
- import Q from "yargs";
9
- import { hideBin as Z } from "yargs/helpers";
10
- import { execSync as u } from "node:child_process";
2
+ import q from "chalk";
3
+ import f from "node:path";
4
+ import m, { existsSync as v, mkdirSync as z, writeFileSync as b, readFileSync as _ } from "node:fs";
5
+ import R from "crypto";
6
+ import Q from "prompts";
7
+ import Z from "yargs";
8
+ import { hideBin as tt } from "yargs/helpers";
9
+ import { execSync as g } from "node:child_process";
11
10
  import F from "json5";
12
11
  export * from "json5";
13
- import { default as Ae } from "json5";
14
- import tt from "lodash.merge";
15
- import et from "semver";
16
- import { tmpdir as rt, homedir as st } from "node:os";
12
+ import { default as we } from "json5";
13
+ import et from "lodash.merge";
14
+ import rt from "semver";
15
+ import { tmpdir as st, homedir as nt } from "node:os";
17
16
  import { v4 as ot } from "uuid";
18
- import { v4 as be } from "uuid";
19
- import { default as Te } from "lodash.get";
20
- import { default as Ne } from "lodash.set";
21
- import { default as Ge } from "lodash.curry";
22
- import _ from "pinyin";
23
- const g = Object.assign(
24
- (t, ...e) => console.log(...e.map((r) => p[t](r))),
25
- {
17
+ import { v4 as Ne } from "uuid";
18
+ import { default as Le } from "lodash.get";
19
+ import { default as Fe } from "lodash.set";
20
+ import { default as je } from "lodash.curry";
21
+ import E from "pinyin";
22
+ const x = (t) => {
23
+ const e = (...[r, ...n]) => t(q[r](...n));
24
+ return Object.assign(e, {
26
25
  /** 成功 */
27
- success: (...t) => g("green", ...t),
26
+ success: (...r) => e("green", ...r),
28
27
  /** /步骤 */
29
- stage: (...t) => g("blue", ...t),
28
+ stage: (...r) => e("blue", ...r),
30
29
  /** 提示信息 */
31
- info: (...t) => g("cyan", ...t),
30
+ info: (...r) => e("cyan", ...r),
32
31
  /** 警告 */
33
- warn: (...t) => g("yellow", ...t),
32
+ warn: (...r) => e("yellow", ...r),
34
33
  /** 错误 */
35
- error: (...t) => g("red", ...t),
34
+ error: (...r) => e("red", ...r),
36
35
  /** 跳过 */
37
- skip: (...t) => g("gray", ...t)
38
- }
39
- ), Qt = (t, {
36
+ skip: (...r) => e("gray", ...r)
37
+ });
38
+ }, a = x(console.log), ee = x((t) => t), re = (t, {
40
39
  /** 当前目录 */
41
40
  currentDir: e = process.cwd(),
42
41
  /** 优先找最远的父目录 */
43
42
  isFindFarthest: r = !0
44
43
  } = {}) => {
45
- const o = l.resolve(e).split(l.sep).map((s, n, c) => c.slice(0, n).concat(s).join(l.sep) || l.sep);
46
- for (; o.length; ) {
47
- const s = r ? o.shift() : o.pop(), n = l.join(s, t);
48
- if (m.existsSync(n))
44
+ const n = f.resolve(e).split(f.sep).map((s, o, c) => c.slice(0, o).concat(s).join(f.sep) || f.sep);
45
+ for (; n.length; ) {
46
+ const s = r ? n.shift() : n.pop(), o = f.join(s, t);
47
+ if (m.existsSync(o))
49
48
  return s;
50
49
  }
51
- }, x = "aes-256-cbc", j = 16, O = "hex", w = ":";
52
- function k(t) {
53
- return C.pbkdf2Sync(
50
+ }, j = "aes-256-cbc", k = 16, C = "hex", T = ":";
51
+ function U(t) {
52
+ return R.pbkdf2Sync(
54
53
  t,
55
54
  "done-coding-cli-salt",
56
55
  // 使用固定的盐值
@@ -61,55 +60,67 @@ function k(t) {
61
60
  "sha256"
62
61
  );
63
62
  }
64
- function Zt({
63
+ function se({
65
64
  text: t,
66
65
  secretKey: e
67
66
  }) {
68
67
  try {
69
- const r = k(e), o = C.randomBytes(j), s = C.createCipheriv(x, r, o);
70
- let n = s.update(t);
71
- n = Buffer.concat([n, s.final()]);
72
- const c = o.toString(O), i = n.toString(O);
73
- return `${c}${w}${i}`;
68
+ const r = U(e), n = R.randomBytes(k), s = R.createCipheriv(j, r, n);
69
+ let o = s.update(t);
70
+ o = Buffer.concat([o, s.final()]);
71
+ const c = n.toString(C), i = o.toString(C);
72
+ return `${c}${T}${i}`;
74
73
  } catch (r) {
75
- return g.error(
74
+ return a.error(
76
75
  `加密失败: ${r instanceof Error ? r.message : String(r)}`
77
76
  ), "";
78
77
  }
79
78
  }
80
- function te({
79
+ function ne({
81
80
  encryptedText: t,
82
81
  secretKey: e
83
82
  }) {
84
83
  try {
85
- if (!t.includes(w))
84
+ if (!t.includes(T))
86
85
  return "";
87
- const r = k(e), [o, s] = t.split(w);
88
- if (o.length !== j * 2)
86
+ const r = U(e), [n, s] = t.split(T);
87
+ if (n.length !== k * 2)
89
88
  return "";
90
- const n = Buffer.from(o, O), c = Buffer.from(s, O), i = C.createDecipheriv(x, r, n);
91
- let f = i.update(c);
92
- return f = Buffer.concat([f, i.final()]), f.toString();
89
+ const o = Buffer.from(n, C), c = Buffer.from(s, C), i = R.createDecipheriv(j, r, o);
90
+ let u = i.update(c);
91
+ return u = Buffer.concat([u, i.final()]), u.toString();
93
92
  } catch (r) {
94
- return g.error(
93
+ return a.error(
95
94
  `解密失败: ${r instanceof Error ? r.message : String(r)}`
96
95
  ), "";
97
96
  }
98
97
  }
99
- const H = (...t) => {
98
+ const I = (...t) => {
100
99
  const [e, r = {}] = t;
101
- return z(e, {
102
- onCancel(o) {
103
- return g.error(`退出${o == null ? void 0 : o.name}输入`), process.exit(1);
100
+ return Q(e, {
101
+ onCancel(n) {
102
+ return a.error(`退出${n == null ? void 0 : n.name}输入`), process.exit(1);
104
103
  },
105
104
  ...r
106
105
  });
107
- }, nt = (t, e) => {
108
- t ? g.error(t) : g.error(e.message), e != null && e.stack && g.error(e.stack), process.exit(1);
109
- }, it = () => {
110
- const t = Z(process.argv);
111
- return Q(t);
112
- }, ee = ({
106
+ }, oe = async ({
107
+ isMCP: t,
108
+ key: e,
109
+ presetAnswer: r,
110
+ defaultValue: n,
111
+ questionConfig: s
112
+ }) => {
113
+ if (t) {
114
+ const o = r == null ? void 0 : r[e];
115
+ return o === void 0 ? (a.error("MCP场景的约束值不能为空"), process.exit(1)) : o;
116
+ } else
117
+ return (r == null ? void 0 : r[e]) ?? n ?? (await I(s))[e];
118
+ }, ie = async (t, e) => (await I(e))[t], it = (t, e) => {
119
+ t ? a.error(t) : a.error(e.message), e != null && e.stack && a.error(e.stack), process.exit(1);
120
+ }, ct = () => {
121
+ const t = tt(process.argv);
122
+ return Z(t);
123
+ }, ce = ({
113
124
  rootScriptName: t,
114
125
  packageJson: e
115
126
  }) => {
@@ -117,51 +128,51 @@ const H = (...t) => {
117
128
  return t;
118
129
  if (!e)
119
130
  return;
120
- const { bin: r, name: o } = e;
131
+ const { bin: r, name: n } = e;
121
132
  if (r) {
122
133
  if (typeof r == "string")
123
- return o.includes("/") ? void 0 : o;
134
+ return n.includes("/") ? void 0 : n;
124
135
  if (typeof r == "object") {
125
- const s = Object.entries(r), n = process.argv[1], c = s.filter(([, f]) => n == null ? void 0 : n.endsWith(f));
136
+ const s = Object.entries(r), o = process.argv[1], c = s.filter(([, u]) => o == null ? void 0 : o.endsWith(u));
126
137
  if (c.length !== 1)
127
138
  return;
128
139
  const [i] = c[0];
129
140
  return process.platform === "win32" ? i.toLowerCase() : i;
130
141
  }
131
142
  }
132
- }, U = (t, {
143
+ }, H = (t, {
133
144
  usage: e,
134
145
  version: r,
135
- demandCommandCount: o,
146
+ demandCommandCount: n,
136
147
  options: s,
137
- positionals: n,
148
+ positionals: o,
138
149
  subcommands: c,
139
150
  rootScriptName: i
140
- }, f) => {
141
- let a = t.strict();
142
- e && (a = a.usage(`Usage: ${e}`)), o && (a = a.demandCommand(o));
143
- const h = "help";
144
- return a = a.help(h), r ? a = a.version(r).alias("h", h).alias("v", "version") : a = a.alias("h", h), s && (a = a.options(s)), n && (a = Object.entries(n).reduce((y, [M, d]) => y.positional(M, d), a)), c && (a = a.command(c)), f && i && (a = a.scriptName(i)), a;
145
- }, re = async ({ handler: t, ...e }) => {
146
- const r = await U(it(), e, !0).fail(
147
- nt
151
+ }, u) => {
152
+ let l = t.strict();
153
+ e && (l = l.usage(`Usage: ${e}`)), n && (l = l.demandCommand(n));
154
+ const p = "help";
155
+ return l = l.help(p), r ? l = l.version(r).alias("h", p).alias("v", "version") : l = l.alias("h", p), s && (l = l.options(s)), o && (l = Object.entries(o).reduce((S, [M, h]) => S.positional(M, h), l)), c && (l = l.command(c)), u && i && (l = l.scriptName(i)), l;
156
+ }, ae = async ({ handler: t, ...e }) => {
157
+ const r = await H(ct(), e, !0).fail(
158
+ it
148
159
  ).argv;
149
160
  return t ? t(r) : r;
150
- }, se = (t) => {
151
- const { command: e, describe: r, handler: o = () => {
161
+ }, fe = (t) => {
162
+ const { command: e, describe: r, handler: n = () => {
152
163
  }, ...s } = t;
153
164
  return {
154
165
  command: e,
155
166
  describe: r,
156
- builder(n) {
157
- return U(n, s, !1);
167
+ builder(o) {
168
+ return H(o, s, !1);
158
169
  },
159
- handler: o
170
+ handler: n
160
171
  };
161
172
  };
162
- var ct = /* @__PURE__ */ ((t) => (t.VSCODE = "VsCode", t.CURSOR = "Cursor", t.OTHER = "其他", t))(ct || {});
163
- const at = async () => {
164
- const { editorType: t } = await H([
173
+ var at = /* @__PURE__ */ ((t) => (t.VSCODE = "VsCode", t.CURSOR = "Cursor", t.OTHER = "其他", t))(at || {});
174
+ const ft = async () => {
175
+ const { editorType: t } = await I([
165
176
  {
166
177
  name: "editorType",
167
178
  type: "select",
@@ -181,29 +192,29 @@ const at = async () => {
181
192
  }, lt = {
182
193
  Cursor: "cursor",
183
194
  VsCode: "code"
184
- }, ft = (t, e, r) => {
195
+ }, ut = (t, e, r) => {
185
196
  try {
186
- u(`${t} -v`, { stdio: "ignore" }), u(`${t} ${e}`);
197
+ g(`${t} -v`, { stdio: "ignore" }), g(`${t} ${e}`);
187
198
  } catch {
188
199
  r();
189
200
  }
190
201
  }, gt = (t, e) => {
191
- const r = (o) => g.info(`
192
- ${o}, 请用编辑器打开 ${t} 进行编辑
202
+ const r = (n) => a.info(`
203
+ ${n}, 请用编辑器打开 ${t} 进行编辑
193
204
  `);
194
205
  switch (e) {
195
206
  case "Cursor":
196
207
  case "VsCode": {
197
- const o = lt[e];
198
- ft(o, t, () => {
199
- r(`${o}命令未安装`);
208
+ const n = lt[e];
209
+ ut(n, t, () => {
210
+ r(`${n}命令未安装`);
200
211
  });
201
212
  break;
202
213
  }
203
214
  default:
204
215
  r("其他编辑器");
205
216
  }
206
- }, ut = (t = process.cwd()) => ({
217
+ }, mt = (t = process.cwd()) => ({
207
218
  /** 必须保留 */
208
219
  rootDir: {
209
220
  type: "string",
@@ -212,12 +223,12 @@ const at = async () => {
212
223
  /** 必须设置默认值 */
213
224
  default: t
214
225
  }
215
- }), oe = ({
226
+ }), le = ({
216
227
  configPathDefault: t,
217
228
  rootDirDefault: e
218
229
  }) => ({
219
230
  /** 必须保留 */
220
- ...ut(e),
231
+ ...mt(e),
221
232
  /** 必须保留 */
222
233
  configPath: {
223
234
  type: "string",
@@ -226,31 +237,31 @@ const at = async () => {
226
237
  /** 必须设置默认值 */
227
238
  default: t
228
239
  }
229
- }), mt = async (t, e) => {
230
- const { configPath: r, rootDir: o } = e, s = l.resolve(o, r), n = l.dirname(s);
231
- return I(n) || q(n, {
240
+ }), pt = async (t, e) => {
241
+ const { configPath: r, rootDir: n } = e, s = f.resolve(n, r), o = f.dirname(s);
242
+ return v(o) || z(o, {
232
243
  recursive: !0
233
- }), s.endsWith(".json5") ? (g.info(`json5模式写入 ${s}`), b(s, F.stringify(t, null, 2)), s) : (g.info(`json模式写入 ${s}`), b(s, JSON.stringify(t, null, 2)), s);
234
- }, ne = async (t, e, {
244
+ }), s.endsWith(".json5") ? (a.info(`json5模式写入 ${s}`), b(s, F.stringify(t, null, 2)), s) : (a.info(`json模式写入 ${s}`), b(s, JSON.stringify(t, null, 2)), s);
245
+ }, ue = async (t, e, {
235
246
  onFileGenerated: r,
236
- edit: o = !1
247
+ edit: n = !1
237
248
  } = {}) => {
238
- const s = await mt(t, e);
239
- if (r == null || r(s), o) {
240
- const n = await at();
241
- gt(e.configPath, n);
249
+ const s = await pt(t, e);
250
+ if (r == null || r(s), n) {
251
+ const o = await ft();
252
+ gt(e.configPath, o);
242
253
  }
243
- }, ie = async (t, e) => {
244
- const { configPath: r, rootDir: o } = t, s = l.resolve(o, r);
245
- if (!I(s)) {
254
+ }, ge = async (t, e) => {
255
+ const { configPath: r, rootDir: n } = t, s = f.resolve(n, r);
256
+ if (!v(s)) {
246
257
  if (e)
247
- return g.info("配置文件不存在,使用onNotExists返回值"), e();
248
- const n = `配置文件不存在 ${s}`;
249
- throw new Error(n);
258
+ return a.info("配置文件不存在,使用onNotExists返回值"), e();
259
+ const o = `配置文件不存在 ${s}`;
260
+ throw new Error(o);
250
261
  }
251
- return s.endsWith(".json5") ? (g.info(`json5模式解析 ${s}`), F.parse(R(s, "utf8"))) : (g.info(`json模式解析 ${s}`), JSON.parse(R(s, "utf8")));
252
- }, ce = async () => {
253
- const { useDefaultConfig: t } = await H({
262
+ return s.endsWith(".json5") ? (a.info(`json5模式解析 ${s}`), F.parse(_(s, "utf8"))) : (a.info(`json模式解析 ${s}`), JSON.parse(_(s, "utf8")));
263
+ }, me = async () => {
264
+ const { useDefaultConfig: t } = await I({
254
265
  name: "useDefaultConfig",
255
266
  type: "confirm",
256
267
  message: "使用默认模板配置",
@@ -260,245 +271,241 @@ const at = async () => {
260
271
  }, J = "package.json", D = ({
261
272
  rootDir: t
262
273
  }) => {
263
- const e = l.resolve(t, J);
264
- if (!I(e))
274
+ const e = f.resolve(t, J);
275
+ if (!v(e))
265
276
  throw new Error(`${t}未找到package.json文件`);
266
- const r = R(e, "utf-8");
277
+ const r = _(e, "utf-8");
267
278
  return JSON.parse(r);
268
- }, pt = ({
279
+ }, ht = ({
269
280
  rootDir: t,
270
281
  pkgJson: e,
271
282
  pkgName: r,
272
- isDevPkg: o
283
+ isDevPkg: n
273
284
  }) => {
274
- const s = e || D({ rootDir: t }), n = o ? s.devDependencies : s.dependencies;
275
- let c = n == null ? void 0 : n[r];
285
+ const s = e || D({ rootDir: t }), o = n ? s.devDependencies : s.dependencies;
286
+ let c = o == null ? void 0 : o[r];
276
287
  if (!c) {
277
- const i = o ? s.dependencies : s.devDependencies;
278
- c = i == null ? void 0 : i[r], c && console.log(
279
- p.yellow(
280
- `${o ? "开发" : "生产"}依赖包${r}可能错误的安装在${o ? "dependencies" : "devDependencies"}`
281
- )
288
+ const i = n ? s.dependencies : s.devDependencies;
289
+ c = i == null ? void 0 : i[r], c && a.warn(
290
+ `${n ? "开发" : "生产"}依赖包${r}可能错误的安装在${n ? "dependencies" : "devDependencies"}`
282
291
  );
283
292
  return;
284
293
  }
285
- return c || console.log(p.cyan(`依赖包${r}未安装`)), c;
286
- }, ae = ({
294
+ return c || a.info(`依赖包${r}未安装`), c;
295
+ }, pe = ({
287
296
  patchConfig: t,
288
297
  rootDir: e
289
298
  }) => {
290
299
  if (!t)
291
300
  return;
292
- const r = D({ rootDir: e }), o = tt(r, t), s = l.resolve(e, J);
293
- b(s, JSON.stringify(o, null, 2), "utf-8");
301
+ const r = D({ rootDir: e }), n = et(r, t), s = f.resolve(e, J);
302
+ b(s, JSON.stringify(n, null, 2), "utf-8");
294
303
  }, $ = (t) => {
295
- const r = u("git rev-parse --show-toplevel", {
304
+ const r = g("git rev-parse --show-toplevel", {
296
305
  cwd: t
297
306
  }).toString();
298
307
  if (!r)
299
308
  throw new Error("获取git根目录失败");
300
309
  return r.trim();
301
- }, le = () => {
310
+ }, he = () => {
302
311
  var t;
303
312
  try {
304
- const e = u("git symbolic-ref --short HEAD", {
313
+ const e = g("git symbolic-ref --short HEAD", {
305
314
  stdio: "ignore"
306
315
  });
307
316
  return (t = e == null ? void 0 : e.toString()) == null ? void 0 : t.trim();
308
317
  } catch {
309
318
  try {
310
- const r = u("git rev-parse --short HEAD").toString().trim();
311
- g.skip(`当前未指向具体某个分支, 当前commit hash: ${r}`);
319
+ const r = g("git rev-parse --short HEAD").toString().trim();
320
+ a.skip(`当前未指向具体某个分支, 当前commit hash: ${r}`);
312
321
  } finally {
313
322
  return;
314
323
  }
315
324
  }
316
- }, ht = (t) => {
325
+ }, dt = (t) => {
317
326
  const e = t.match(/moving\s+from\s+(.*)\s+to\s+(.*)/);
318
327
  if (e) {
319
- const [, r, o] = e;
328
+ const [, r, n] = e;
320
329
  return {
321
330
  fromBranch: r.trim(),
322
- toBranch: o.trim()
331
+ toBranch: n.trim()
323
332
  };
324
333
  }
325
- }, P = 73, dt = (t) => {
334
+ }, A = 73, St = (t) => {
326
335
  const r = m.statSync(t).mode;
327
- if ((r & P) === P)
336
+ if ((r & A) === A)
328
337
  return;
329
- console.log(p.blue(`${t} 没有执行权限 添加... `));
330
- const o = r | P;
331
- m.chmodSync(t, o), console.log(p.green(`${t} 添加执行权限成功`));
338
+ a.stage(`${t} 没有执行权限 添加... `);
339
+ const n = r | A;
340
+ m.chmodSync(t, n), a.success(`${t} 添加执行权限成功`);
332
341
  }, V = (t) => m.existsSync(t), N = async (t) => {
333
342
  try {
334
343
  return await m.promises.lstat(t), !0;
335
344
  } catch (e) {
336
345
  return e.code !== "ENOENT";
337
346
  }
338
- }, St = (t, e = !1) => {
347
+ }, yt = (t, e = !1) => {
339
348
  V(t) && m.rmSync(t, { recursive: !0, force: e });
340
- }, fe = async (t, e = !1) => {
349
+ }, Et = async (t, e = !1) => {
341
350
  await N(t) && await m.promises.rm(t, { recursive: !0, force: e });
342
- }, yt = (t) => m.readFileSync(t, "utf-8"), Et = (t) => m.promises.readFile(t, "utf-8"), ge = (t, e) => JSON.parse(yt(t)) || e, K = async (t, e) => JSON.parse(await Et(t)) || e;
343
- var S = /* @__PURE__ */ ((t) => (t.PRE_COMMIT = "pre-commit", t.PRE_MERGE_COMMIT = "pre-merge-commit", t.PREPARE_COMMIT_MSG = "prepare-commit-msg", t.COMMIT_MSG = "commit-msg", t.PRE_REBASE = "pre-rebase", t.POST_COMMIT = "post-commit", t.POST_MERGE = "post-merge", t.PRE_PUSH = "pre-push", t))(S || {});
344
- const _t = "husky", Rt = ".husky", Ct = ({ rootDir: t }) => {
345
- const e = $(t), r = pt({
351
+ }, _t = (t) => m.readFileSync(t, "utf-8"), Rt = (t) => m.promises.readFile(t, "utf-8"), de = (t, e) => JSON.parse(_t(t)) || e, K = async (t, e) => JSON.parse(await Rt(t)) || e;
352
+ var d = /* @__PURE__ */ ((t) => (t.PRE_COMMIT = "pre-commit", t.PRE_MERGE_COMMIT = "pre-merge-commit", t.PREPARE_COMMIT_MSG = "prepare-commit-msg", t.COMMIT_MSG = "commit-msg", t.PRE_REBASE = "pre-rebase", t.POST_COMMIT = "post-commit", t.POST_MERGE = "post-merge", t.PRE_PUSH = "pre-push", t))(d || {});
353
+ const Ct = "husky", Ot = ".husky", vt = ({ rootDir: t }) => {
354
+ const e = $(t), r = ht({
346
355
  rootDir: e,
347
356
  pkgJson: D({ rootDir: e }),
348
- pkgName: _t,
357
+ pkgName: Ct,
349
358
  isDevPkg: !0
350
359
  });
351
360
  if (!r)
352
361
  throw new Error("husky版本获取失败, 可能husky未安装");
353
- const o = r.replace(/^(\^|~)/, ""), s = "<9.0.0";
354
- return et.satisfies(o, s) ? (console.log(p.cyan(`${o}符合${s}`)), `#!/usr/bin/env sh
355
- . "$(dirname -- "$0")/_/husky.sh"`) : (console.log(p.cyan(`${o}不符合${s}`)), "");
356
- }, Ot = ({ rootDir: t }) => {
362
+ const n = r.replace(/^(\^|~)/, ""), s = "<9.0.0";
363
+ return rt.satisfies(n, s) ? (a.info(`${n}符合${s}`), `#!/usr/bin/env sh
364
+ . "$(dirname -- "$0")/_/husky.sh"`) : (a.info(`${n}不符合${s}`), "");
365
+ }, It = ({ rootDir: t }) => {
357
366
  const e = $(t);
358
- return l.resolve(e, Rt);
359
- }, ue = ({
367
+ return f.resolve(e, Ot);
368
+ }, Se = ({
360
369
  hookNames: t,
361
370
  rootDir: e,
362
371
  getCode: r
363
372
  }) => {
364
- const o = Ot({ rootDir: e });
365
- m.existsSync(o) || m.mkdirSync(o, { recursive: !0 }), t.forEach((s) => {
366
- const n = l.resolve(o, s), c = m.existsSync(n);
373
+ const n = It({ rootDir: e });
374
+ m.existsSync(n) || m.mkdirSync(n, { recursive: !0 }), t.forEach((s) => {
375
+ const o = f.resolve(n, s), c = m.existsSync(o);
367
376
  let i = r(s);
368
377
  if (c)
369
- m.readFileSync(n, "utf-8").includes(i) ? console.log(
370
- p.gray(`${n} ${s}相关调用 ${i} 已存在 跳过`)
371
- ) : (m.appendFileSync(
372
- n,
378
+ m.readFileSync(o, "utf-8").includes(i) ? a.skip(`${o} ${s}相关调用 ${i} 已存在 跳过`) : (m.appendFileSync(
379
+ o,
373
380
  `
374
381
  ${i}
375
382
  `
376
- ), console.log(p.green(`${n} 添加 ${s}相关调用成功`)));
383
+ ), a.success(`${o} 添加 ${s}相关调用成功`));
377
384
  else {
378
- const f = Ct({
385
+ const u = vt({
379
386
  rootDir: e
380
387
  });
381
388
  m.writeFileSync(
382
- n,
383
- `${f}
389
+ o,
390
+ `${u}
384
391
 
385
392
  ${i}
386
393
  `,
387
394
  "utf-8"
388
- ), console.log(p.green(`${n} 添加 ${s}相关调用成功`));
395
+ ), a.success(`${o} 添加 ${s}相关调用成功`);
389
396
  }
390
- dt(n);
397
+ St(o);
391
398
  });
392
- }, me = [
399
+ }, ye = [
393
400
  // HooksNameEnum.PRE_MERGE_COMMIT,
394
- S.PREPARE_COMMIT_MSG,
395
- S.COMMIT_MSG
396
- ], pe = ({
401
+ d.PREPARE_COMMIT_MSG,
402
+ d.COMMIT_MSG
403
+ ], Ee = ({
397
404
  hookName: t,
398
405
  rootDir: e
399
406
  }) => {
400
- const r = $(e), o = l.resolve(r, ".git");
407
+ const r = $(e), n = f.resolve(r, ".git");
401
408
  switch (t) {
402
- case S.PREPARE_COMMIT_MSG:
403
- case S.COMMIT_MSG: {
404
- const s = l.resolve(o, "MERGE_MSG");
405
- if (I(s))
406
- return R(s, "utf-8");
409
+ case d.PREPARE_COMMIT_MSG:
410
+ case d.COMMIT_MSG: {
411
+ const s = f.resolve(n, "MERGE_MSG");
412
+ if (v(s))
413
+ return _(s, "utf-8");
407
414
  }
408
415
  }
409
416
  return "";
410
- }, he = ({
417
+ }, _e = ({
411
418
  remoteAlias: t = "origin"
412
419
  } = {}) => {
413
420
  try {
414
- const e = u("git rev-parse HEAD").toString().trim(), r = u('git log -1 --pretty=format:"%an"').toString().trim(), o = u('git log -1 --pretty=format:"%ae"').toString().trim(), s = u('git log -1 --pretty=format:"%s"').toString().trim(), n = u("git config user.name").toString().trim(), c = u("git config user.email").toString().trim(), i = u("git rev-parse --abbrev-ref HEAD").toString().trim();
415
- let f = "";
421
+ const e = g("git rev-parse HEAD").toString().trim(), r = g('git log -1 --pretty=format:"%an"').toString().trim(), n = g('git log -1 --pretty=format:"%ae"').toString().trim(), s = g('git log -1 --pretty=format:"%s"').toString().trim(), o = g("git config user.name").toString().trim(), c = g("git config user.email").toString().trim(), i = g("git rev-parse --abbrev-ref HEAD").toString().trim();
422
+ let u = "";
416
423
  try {
417
- f = u(`git config --get remote.${t}.url`).toString().trim();
424
+ u = g(`git config --get remote.${t}.url`).toString().trim();
418
425
  } catch {
419
- g.warn("git远程仓库地址获取失败或者不存在");
426
+ a.warn("git远程仓库地址获取失败或者不存在");
420
427
  }
421
428
  return {
422
429
  lastHash: e,
423
430
  lastCommitter: r,
424
- lastCommitterPinYin: _(r, {
425
- style: _.STYLE_NORMAL,
431
+ lastCommitterPinYin: E(r, {
432
+ style: E.STYLE_NORMAL,
426
433
  heteronym: !1
427
434
  }).join(""),
428
- lastCommitEmail: o,
435
+ lastCommitEmail: n,
429
436
  lastCommitMsg: s,
430
- userName: n,
431
- userNamePinYin: _(n, {
432
- style: _.STYLE_NORMAL,
437
+ userName: o,
438
+ userNamePinYin: E(o, {
439
+ style: E.STYLE_NORMAL,
433
440
  heteronym: !1
434
441
  }).join(""),
435
442
  userEmail: c,
436
443
  branchName: i,
437
- remoteInfo: f ? {
444
+ remoteInfo: u ? {
438
445
  alias: t,
439
- url: f
446
+ url: u
440
447
  } : void 0
441
448
  };
442
449
  } catch (e) {
443
- throw g.error("获取git最后提交信息失败"), e;
450
+ throw a.error("获取git最后提交信息失败"), e;
444
451
  }
445
452
  }, Y = (t = "") => {
446
453
  const e = /\s*Merge\s+branch\s+['|"](.+)['|"]\s+into\s+['|"](.+)['|"]\s*/i, r = t.match(e);
447
454
  if (r) {
448
- const [, i, f] = r;
455
+ const [, i, u] = r;
449
456
  return {
450
457
  fromBranch: i,
451
- toBranch: f
458
+ toBranch: u
452
459
  };
453
460
  }
454
- const o = /\s*Merge\s+branch\s+['|"](.+)['|"]\s+of\s+.+\s+into\s+['|"](.+)['|"]\s*/i, s = t.match(o);
461
+ const n = /\s*Merge\s+branch\s+['|"](.+)['|"]\s+of\s+.+\s+into\s+['|"](.+)['|"]\s*/i, s = t.match(n);
455
462
  if (s) {
456
- const [, i, f] = s;
463
+ const [, i, u] = s;
457
464
  return {
458
465
  fromBranch: i,
459
- toBranch: f
466
+ toBranch: u
460
467
  };
461
468
  }
462
- const n = /\s*Merge\s+branch\s+['|"](.+)['|"](\s+of)?\s*/i, c = t.match(n);
469
+ const o = /\s*Merge\s+branch\s+['|"](.+)['|"](\s+of)?\s*/i, c = t.match(o);
463
470
  if (c) {
464
471
  const [, i] = c;
465
472
  return {
466
473
  fromBranch: i
467
474
  };
468
475
  }
469
- }, vt = (t) => {
470
- if (t.startsWith(T.MERGE))
476
+ }, $t = (t) => {
477
+ if (t.startsWith(w.MERGE))
471
478
  return {
472
- fromBranch: t.replace(T.MERGE, "").trim()
479
+ fromBranch: t.replace(w.MERGE, "").trim()
473
480
  };
474
- }, de = () => {
481
+ }, Re = () => {
475
482
  const t = process.env.GIT_REFLOG_ACTION || "";
476
483
  if (!t)
477
484
  return;
478
485
  const e = /merge\s+([^\s]+)\s*/i, r = t.match(e);
479
486
  if (r) {
480
- const [, n] = r;
487
+ const [, o] = r;
481
488
  return {
482
- fromBranch: n
489
+ fromBranch: o
483
490
  };
484
491
  }
485
- const o = /pull\s+([^\s]+)\s+([^\s]+)/, s = t.match(o);
492
+ const n = /pull\s+([^\s]+)\s+([^\s]+)/, s = t.match(n);
486
493
  if (s) {
487
- const [, , n] = s;
494
+ const [, , o] = s;
488
495
  return {
489
- fromBranch: n
496
+ fromBranch: o
490
497
  };
491
498
  }
492
499
  };
493
- var T = /* @__PURE__ */ ((t) => (t.CHECKOUT = "checkout", t.MERGE = "merge", t.COMMIT = "commit", t.COMMIT_MERGE = "commit (merge)", t.PULL = "pull", t.RESET = "reset", t.REBASE_START = "rebase (start)", t.REBASE_FINISH = "rebase (finish)", t.REBASE_ABORT = "rebase (abort)", t.REBASE_CONTINUE = "rebase (continue)", t))(T || {});
494
- const L = "__GIT_REPLACE_MARK__", v = {
500
+ var w = /* @__PURE__ */ ((t) => (t.CHECKOUT = "checkout", t.MERGE = "merge", t.COMMIT = "commit", t.COMMIT_MERGE = "commit (merge)", t.PULL = "pull", t.RESET = "reset", t.REBASE_START = "rebase (start)", t.REBASE_FINISH = "rebase (finish)", t.REBASE_ABORT = "rebase (abort)", t.REBASE_CONTINUE = "rebase (continue)", t))(w || {});
501
+ const B = "__GIT_REPLACE_MARK__", O = {
495
502
  stringify(t) {
496
- return JSON.stringify(t).replace(/"/g, L);
503
+ return JSON.stringify(t).replace(/"/g, B);
497
504
  },
498
505
  parse(t) {
499
- return JSON.parse(t.replace(new RegExp(L, "g"), '"'));
506
+ return JSON.parse(t.replace(new RegExp(B, "g"), '"'));
500
507
  }
501
- }, Se = ({
508
+ }, Ce = ({
502
509
  count: t = 100
503
510
  } = {}) => {
504
511
  if (t <= 0)
@@ -520,19 +527,19 @@ const L = "__GIT_REPLACE_MARK__", v = {
520
527
  /** 提交日期 */
521
528
  commitTime: "%ci"
522
529
  };
523
- return u(
524
- `git --no-pager log --oneline -n ${t} --pretty=format:"${v.stringify(
530
+ return g(
531
+ `git --no-pager log --oneline -n ${t} --pretty=format:"${O.stringify(
525
532
  e
526
533
  )}"`
527
534
  ).toString().split(`
528
- `).map((n) => {
529
- const c = v.parse(n);
535
+ `).map((o) => {
536
+ const c = O.parse(o);
530
537
  return {
531
538
  ...c,
532
539
  mergeInfo: Y(c.message)
533
540
  };
534
541
  });
535
- }, ye = ({
542
+ }, Oe = ({
536
543
  count: t = 100,
537
544
  filterItem: e = () => !0
538
545
  } = {}) => {
@@ -545,201 +552,201 @@ const L = "__GIT_REPLACE_MARK__", v = {
545
552
  committerEmail: "%ce",
546
553
  commitTime: "%ci"
547
554
  };
548
- return u(
549
- `git --no-pager reflog -n ${t} --pretty=format:"${v.stringify(
555
+ return g(
556
+ `git --no-pager reflog -n ${t} --pretty=format:"${O.stringify(
550
557
  r
551
558
  )}"`
552
559
  ).toString().split(`
553
- `).map((i) => v.parse(i)).filter(e).map((i) => {
554
- const { fullMessage: f, ...a } = i, h = ":", [y] = f.split(h, 1), M = f.slice(`${y}${h}`.length), d = y.trim(), E = M.trim();
555
- let A, B, X;
556
- if (d.startsWith(
560
+ `).map((i) => O.parse(i)).filter(e).map((i) => {
561
+ const { fullMessage: u, ...l } = i, p = ":", [S] = u.split(p, 1), M = u.slice(`${S}${p}`.length), h = S.trim(), y = M.trim();
562
+ let P, G, X;
563
+ if (h.startsWith(
557
564
  "checkout"
558
565
  /* CHECKOUT */
559
566
  ))
560
- B = ht(E);
561
- else if (d.startsWith(
567
+ G = dt(y);
568
+ else if (h.startsWith(
562
569
  "merge"
563
570
  /* MERGE */
564
571
  ))
565
- A = vt(d);
566
- else if (d.startsWith(
572
+ P = $t(h);
573
+ else if (h.startsWith(
567
574
  "commit (merge)"
568
575
  /* COMMIT_MERGE */
569
576
  )) {
570
- const G = Y(E);
571
- G || g.warn(
572
- `${i.hash} 是合并提交 但是未从提交信息(${E})中检测到合并分支信息,推测手动更改了提交内容`
573
- ), A = G;
577
+ const L = Y(y);
578
+ L || a.warn(
579
+ `${i.hash} 是合并提交 但是未从提交信息(${y})中检测到合并分支信息,推测手动更改了提交内容`
580
+ ), P = L;
574
581
  }
575
582
  return {
576
- ...a,
577
- type: d,
578
- message: E,
579
- mergeInfo: A,
580
- checkoutInfo: B,
583
+ ...l,
584
+ type: h,
585
+ message: y,
586
+ mergeInfo: P,
587
+ checkoutInfo: G,
581
588
  rebaseInfo: X
582
589
  };
583
590
  });
584
- }, Ee = (t) => {
585
- const e = $(t), r = l.resolve(e, ".git"), o = l.resolve(r, "rebase-merge");
586
- if (m.existsSync(o))
591
+ }, ve = (t) => {
592
+ const e = $(t), r = f.resolve(e, ".git"), n = f.resolve(r, "rebase-merge");
593
+ if (m.existsSync(n))
587
594
  return !0;
588
- const s = l.resolve(r, "rebase-apply");
595
+ const s = f.resolve(r, "rebase-apply");
589
596
  if (m.existsSync(s))
590
597
  return !0;
591
- const n = l.resolve(r, "REBASE_HEAD");
592
- return !!m.existsSync(n);
593
- }, _e = ({
598
+ const o = f.resolve(r, "REBASE_HEAD");
599
+ return !!m.existsSync(o);
600
+ }, Ie = ({
594
601
  branchName: t,
595
602
  version: e,
596
603
  remoteInfo: r
597
604
  }) => {
598
- r && (u(`git push ${r.alias} v${e}`, {
605
+ r && (g(`git push ${r.alias} v${e}`, {
599
606
  stdio: "inherit"
600
- }), u(`git push ${r.alias} ${t}`, {
607
+ }), g(`git push ${r.alias} ${t}`, {
601
608
  stdio: "inherit"
602
609
  }));
603
- }, It = (t) => /^https?:\/\//.test(t), $t = (t) => /^git@/.test(t), Re = (t) => {
610
+ }, Mt = (t) => /^https?:\/\//.test(t), Pt = (t) => /^git@/.test(t), $e = (t) => {
604
611
  const { hostname: e, pathname: r } = new URL(t);
605
612
  return `git@${e}:${r.replace("/", "")}`;
606
- }, W = ".done-coding", Mt = `${W}/cli/assets-config`, At = "assets", Pt = "index.json", bt = `${W}/config.json`, wt = "https://gitee.com/justsosu/done-coding-cli-assets-config.git", Tt = ({
613
+ }, At = (t) => f.resolve(t, ".git"), Me = (t) => Et(At(t)), W = ".done-coding", bt = `${W}/cli/assets-config`, Tt = "assets", wt = "index.json", Dt = `${W}/config.json`, Nt = "https://gitee.com/justsosu/done-coding-cli-assets-config.git", Gt = ({
607
614
  dir: t,
608
615
  fn: e,
609
616
  endClear: r = !0,
610
- exitClear: o = !0
617
+ exitClear: n = !0
611
618
  }) => {
612
619
  if (V(t))
613
- return console.log(p.red(`${t} 已存在,请手动删除该目录再试`)), process.exit(1);
620
+ return a.error(`${t} 已存在,请手动删除该目录再试`), process.exit(1);
614
621
  const s = () => {
615
- console.log("正在清理临时目录...", t), St(t);
622
+ a.stage("正在清理临时目录...", t), yt(t);
616
623
  };
617
- o && process.once("exit", () => {
618
- console.log("发现进程退出,正在清理临时目录...", t), s();
624
+ n && process.once("exit", () => {
625
+ a.stage("发现进程退出,正在清理临时目录...", t), s();
619
626
  });
620
- let n;
627
+ let o;
621
628
  try {
622
- n = e(t);
629
+ o = e(t);
623
630
  } catch (c) {
624
631
  throw r && s(), c;
625
632
  }
626
- return r && (n instanceof Promise ? n.finally(s) : s()), n;
633
+ return r && (o instanceof Promise ? o.finally(s) : s()), o;
627
634
  };
628
- var Dt = /* @__PURE__ */ ((t) => (t.ASSETS_CONFIG_REPO_URL = "ASSETS_CONFIG_REPO_URL", t))(Dt || {});
629
- const Nt = (t) => l.resolve(
630
- rt(),
631
- Mt,
635
+ var Lt = /* @__PURE__ */ ((t) => (t.ASSETS_CONFIG_REPO_URL = "ASSETS_CONFIG_REPO_URL", t))(Lt || {});
636
+ const Bt = (t) => f.resolve(
637
+ st(),
638
+ bt,
632
639
  `${t}-${ot()}`
633
- ), Bt = () => l.resolve(st(), bt), Gt = async () => {
634
- const t = Bt();
635
- console.log("读取全局配置:", t);
636
- const e = {
637
- ASSETS_CONFIG_REPO_URL: wt
640
+ ), Ft = () => f.resolve(nt(), Dt), xt = async () => {
641
+ const t = Ft(), e = {
642
+ ASSETS_CONFIG_REPO_URL: Nt
638
643
  };
639
644
  try {
640
645
  if (await N(t)) {
641
646
  const r = await K(t, {});
642
- Object.entries(r).forEach(([o, s]) => {
643
- e[o] = s;
647
+ Object.entries(r).forEach(([n, s]) => {
648
+ e[n] = s;
644
649
  });
645
650
  }
646
651
  } catch {
647
652
  }
648
- return console.log("done-coding-cli 全局配置:", e), e;
649
- }, Lt = async (t) => {
650
- if (console.log("资产配置仓库临时目录:", t), await N(t))
651
- return console.log(
652
- p.red(`${t} 已存在,请手动删除该目录再试`)
653
- ), process.exit(1);
653
+ return e;
654
+ }, jt = async (t) => {
655
+ if (await N(t))
656
+ return a.error(`${t} 已存在,请手动删除该目录再试`), process.exit(1);
654
657
  const {
655
658
  [
656
659
  "ASSETS_CONFIG_REPO_URL"
657
660
  /* ASSETS_CONFIG_REPO_URL */
658
661
  ]: e
659
- } = await Gt();
660
- return $t(e) || It(e) ? (console.log("远程仓库拉取配置...", e), u(`git clone ${e} ${t} --depth=1`)) : (m.mkdirSync(t, { recursive: !0 }), u(`cp -r ${e}/ ${t}/`)), {
662
+ } = await xt();
663
+ return Pt(e) || Mt(e) ? g(`git clone ${e} ${t} --depth=1`) : (m.mkdirSync(t, { recursive: !0 }), g(`cp -r ${e}/ ${t}/`)), {
661
664
  assetConfigRepoUrl: e
662
665
  };
663
- }, Ce = async ({
666
+ }, Pe = async ({
664
667
  moduleName: t,
665
668
  onSuccess: e
666
- }) => (console.log(p.blue(`拉取${t}配置,请稍等...`)), Tt({
669
+ }) => (a.stage(`拉取${t}配置,请稍等...`), Gt({
667
670
  // 资源配置仓库临时文件夹
668
- dir: Nt(t),
671
+ dir: Bt(t),
669
672
  fn: async (r) => {
670
- const { assetConfigRepoUrl: o } = await Lt(r), s = l.join(
671
- At,
673
+ const { assetConfigRepoUrl: n } = await jt(r), s = f.join(
674
+ Tt,
672
675
  t
673
- ), n = l.join(
676
+ ), o = f.join(
674
677
  s,
675
- Pt
676
- ), c = l.resolve(r, n), i = await K(c);
678
+ wt
679
+ ), c = f.resolve(r, o), i = await K(c);
677
680
  return await e({
678
- repoUrl: o,
681
+ repoUrl: n,
679
682
  config: i,
680
683
  moduleDirFileRelativePath: s,
681
- moduleEntryFileRelativePath: n,
684
+ moduleEntryFileRelativePath: o,
682
685
  assetsConfigRepoTempDir: r
683
686
  }), i;
684
687
  }
685
688
  }));
686
689
  export {
687
- Dt as DoneCodingCliGlobalConfigKeyEnum,
688
- ct as EditorTypeEnum,
689
- T as GitRefLogTypeEnum,
690
- S as HooksNameEnum,
691
- me as SUPPORT_GET_COMMIT_BY_HOOKS_NAMES,
692
- Ge as _curry,
693
- Te as _get,
694
- Ne as _set,
695
- ue as addHuskyHooks,
696
- ae as addPackageConfig,
697
- Tt as applyUseTempDir,
690
+ Lt as DoneCodingCliGlobalConfigKeyEnum,
691
+ at as EditorTypeEnum,
692
+ w as GitRefLogTypeEnum,
693
+ d as HooksNameEnum,
694
+ ye as SUPPORT_GET_COMMIT_BY_HOOKS_NAMES,
695
+ je as _curry,
696
+ Le as _get,
697
+ Fe as _set,
698
+ Se as addHuskyHooks,
699
+ pe as addPackageConfig,
700
+ Gt as applyUseTempDir,
698
701
  V as assetIsExits,
699
702
  N as assetIsExitsAsync,
700
- Ie as chalk,
701
- Ee as checkCurrentIsRebasing,
702
- re as createMainCommand,
703
- se as createSubcommand,
704
- te as decryptAES,
705
- Zt as encryptAES,
706
- dt as fileAddX,
707
- Nt as getCliModuleTempDir,
708
- pe as getCommitByHookName,
709
- oe as getConfigFileCommonOptions,
710
- Se as getCurrentBranchLastCommitList,
711
- le as getCurrentBranchName,
712
- at as getEditorType,
713
- he as getGitLastCommitInfo,
703
+ ve as checkCurrentIsRebasing,
704
+ ae as createMainCommand,
705
+ fe as createSubcommand,
706
+ ne as decryptAES,
707
+ se as encryptAES,
708
+ St as fileAddX,
709
+ ie as getAnswerSwift,
710
+ oe as getAnswerWithMCP,
711
+ Bt as getCliModuleTempDir,
712
+ Ee as getCommitByHookName,
713
+ le as getConfigFileCommonOptions,
714
+ Ce as getCurrentBranchLastCommitList,
715
+ he as getCurrentBranchName,
716
+ ft as getEditorType,
717
+ _e as getGitLastCommitInfo,
718
+ At as getGitPath,
714
719
  $ as getGitProjectDir,
715
- ye as getLastReflogList,
720
+ Oe as getLastReflogList,
721
+ ee as getLogText,
716
722
  D as getPackageJson,
717
- pt as getRelyPkgVersion,
718
- ut as getRootDirOptions,
719
- ee as getRootScriptName,
720
- ce as getUseDefaultConfig,
721
- Re as http2sshGitUrl,
722
- mt as initConfigFile,
723
- ne as initHandlerCommon,
724
- It as isHttpGitUrl,
725
- $t as isSshGitUrl,
726
- Ae as json5,
727
- g as log,
728
- Qt as lookForParentTarget,
723
+ ht as getRelyPkgVersion,
724
+ mt as getRootDirOptions,
725
+ ce as getRootScriptName,
726
+ me as getUseDefaultConfig,
727
+ $e as http2sshGitUrl,
728
+ pt as initConfigFile,
729
+ ue as initHandlerCommon,
730
+ Mt as isHttpGitUrl,
731
+ Pt as isSshGitUrl,
732
+ we as json5,
733
+ a as log,
734
+ re as lookForParentTarget,
729
735
  gt as openFileInEditor,
730
- _e as pushGitPublishInfoToRemote,
731
- Ce as readCliModuleAssetsConfig,
732
- ie as readConfigFile,
733
- yt as readFile,
734
- Et as readFileAsync,
735
- ge as readJsonFile,
736
+ Ie as pushGitPublishInfoToRemote,
737
+ Pe as readCliModuleAssetsConfig,
738
+ ge as readConfigFile,
739
+ _t as readFile,
740
+ Rt as readFileAsync,
741
+ de as readJsonFile,
736
742
  K as readJsonFileAsync,
737
- St as removeAsset,
738
- fe as removeAssetAsync,
739
- ht as resolveCheckoutInfoByRefInfo,
743
+ yt as removeAsset,
744
+ Et as removeAssetAsync,
745
+ dt as resolveCheckoutInfoByRefInfo,
740
746
  Y as resolveMergeInfoByCommitMsg,
741
- de as resolveMergeInfoByGitReflogAction,
742
- vt as resolveMergeInfoByRefType,
743
- be as uuidv4,
744
- H as xPrompts
747
+ Re as resolveMergeInfoByGitReflogAction,
748
+ $t as resolveMergeInfoByRefType,
749
+ Me as rmGitCtrlAsync,
750
+ Ne as uuidv4,
751
+ I as xPrompts
745
752
  };