ccjk 13.3.5 → 13.3.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (150) hide show
  1. package/dist/chunks/agent-teams.mjs +7 -5
  2. package/dist/chunks/agent.mjs +2 -2
  3. package/dist/chunks/agents.mjs +16 -16
  4. package/dist/chunks/api-cli.mjs +6 -6
  5. package/dist/chunks/api-providers.mjs +1 -1
  6. package/dist/chunks/api.mjs +4 -4
  7. package/dist/chunks/auto-bootstrap.mjs +1 -1
  8. package/dist/chunks/auto-fix.mjs +49 -4
  9. package/dist/chunks/auto-fixer.mjs +7 -5
  10. package/dist/chunks/auto-init.mjs +9 -7208
  11. package/dist/chunks/auto-memory-bridge.mjs +9 -3
  12. package/dist/chunks/auto-updater.mjs +9 -9
  13. package/dist/chunks/auto-upgrade.mjs +5 -3
  14. package/dist/chunks/banner.mjs +4 -3
  15. package/dist/chunks/boost.mjs +118 -62
  16. package/dist/chunks/ccjk-agents.mjs +3 -3
  17. package/dist/chunks/ccjk-all.mjs +7 -7
  18. package/dist/chunks/ccjk-config.mjs +2 -2
  19. package/dist/chunks/ccjk-hooks.mjs +4 -4
  20. package/dist/chunks/ccjk-mcp.mjs +5 -5
  21. package/dist/chunks/ccjk-setup.mjs +5 -5
  22. package/dist/chunks/ccjk-skills.mjs +5 -5
  23. package/dist/chunks/ccr.mjs +18 -16
  24. package/dist/chunks/ccu.mjs +2 -2
  25. package/dist/chunks/check-updates.mjs +8 -8
  26. package/dist/chunks/claude-code-config-manager.mjs +11 -8
  27. package/dist/chunks/claude-code-incremental-manager.mjs +7 -7
  28. package/dist/chunks/claude-config.mjs +1 -1
  29. package/dist/chunks/claude-wrapper.mjs +1 -1
  30. package/dist/chunks/cli-hook.mjs +15 -15
  31. package/dist/chunks/codex-config-switch.mjs +7 -7
  32. package/dist/chunks/codex-provider-manager.mjs +7 -7
  33. package/dist/chunks/codex-uninstaller.mjs +2 -2
  34. package/dist/chunks/codex.mjs +5 -5
  35. package/dist/chunks/commands.mjs +2 -2
  36. package/dist/chunks/commands2.mjs +3 -3
  37. package/dist/chunks/commit.mjs +2 -2
  38. package/dist/chunks/completion.mjs +2 -2
  39. package/dist/chunks/config-consolidator.mjs +2 -2
  40. package/dist/chunks/config-switch.mjs +8 -8
  41. package/dist/chunks/config.mjs +6 -5
  42. package/dist/chunks/config2.mjs +5 -5
  43. package/dist/chunks/config3.mjs +4 -4
  44. package/dist/chunks/constants.mjs +1 -1
  45. package/dist/chunks/context-opt.mjs +92 -90
  46. package/dist/chunks/context.mjs +659 -0
  47. package/dist/chunks/dashboard.mjs +14 -9
  48. package/dist/chunks/doctor.mjs +4 -4
  49. package/dist/chunks/eval.mjs +502 -0
  50. package/dist/chunks/evolution.mjs +46 -39
  51. package/dist/chunks/health-alerts.mjs +9 -9
  52. package/dist/chunks/help.mjs +1 -1
  53. package/dist/chunks/hook-installer.mjs +6 -3
  54. package/dist/chunks/index.mjs +23 -0
  55. package/dist/chunks/index10.mjs +634 -571
  56. package/dist/chunks/index11.mjs +1061 -569
  57. package/dist/chunks/index12.mjs +914 -1076
  58. package/dist/chunks/index13.mjs +136 -951
  59. package/dist/chunks/index14.mjs +209 -185
  60. package/dist/chunks/index2.mjs +19 -24
  61. package/dist/chunks/index3.mjs +19085 -12
  62. package/dist/chunks/index4.mjs +16 -19092
  63. package/dist/chunks/index5.mjs +7602 -16
  64. package/dist/chunks/index6.mjs +159 -7590
  65. package/dist/chunks/index7.mjs +1602 -171
  66. package/dist/chunks/index8.mjs +19 -1602
  67. package/dist/chunks/index9.mjs +612 -15
  68. package/dist/chunks/init.mjs +26 -19
  69. package/dist/chunks/installer.mjs +5 -5
  70. package/dist/chunks/installer2.mjs +2 -2
  71. package/dist/chunks/intent-engine.mjs +1 -1
  72. package/dist/chunks/interview.mjs +4 -4
  73. package/dist/chunks/manager.mjs +1 -1
  74. package/dist/chunks/marketplace.mjs +2 -2
  75. package/dist/chunks/mcp-cli.mjs +12 -12
  76. package/dist/chunks/mcp.mjs +8 -8
  77. package/dist/chunks/memory.mjs +8 -8
  78. package/dist/chunks/menu-hierarchical.mjs +24 -22
  79. package/dist/chunks/menu.mjs +27 -22
  80. package/dist/chunks/metrics-display.mjs +2 -2
  81. package/dist/chunks/migrator.mjs +1 -1
  82. package/dist/chunks/monitor.mjs +2 -2
  83. package/dist/chunks/notification.mjs +6 -6
  84. package/dist/chunks/onboarding-wizard.mjs +6 -5
  85. package/dist/chunks/onboarding.mjs +4 -4
  86. package/dist/chunks/package.mjs +1 -1
  87. package/dist/chunks/paradigm.mjs +2 -2
  88. package/dist/chunks/permission-manager.mjs +2 -2
  89. package/dist/chunks/permissions.mjs +3 -3
  90. package/dist/chunks/persistence-manager.mjs +19 -12
  91. package/dist/chunks/persistence.mjs +5 -3
  92. package/dist/chunks/plugin.mjs +2 -2
  93. package/dist/chunks/prompts.mjs +5 -5
  94. package/dist/chunks/providers.mjs +2 -2
  95. package/dist/chunks/quick-actions.mjs +7 -6
  96. package/dist/chunks/quick-provider.mjs +5 -4
  97. package/dist/chunks/quick-setup.mjs +20 -15
  98. package/dist/chunks/remote.mjs +15 -16
  99. package/dist/chunks/{convoy-manager.mjs → session-manager.mjs} +1129 -1095
  100. package/dist/chunks/session.mjs +2 -2
  101. package/dist/chunks/sessions.mjs +3 -3
  102. package/dist/chunks/silent-updater.mjs +1 -1
  103. package/dist/chunks/simple-config.mjs +2 -2
  104. package/dist/chunks/skill2.mjs +3 -3
  105. package/dist/chunks/skills-sync.mjs +5 -5
  106. package/dist/chunks/skills.mjs +3 -3
  107. package/dist/chunks/slash-commands.mjs +9 -8
  108. package/dist/chunks/smart-defaults.mjs +9 -5
  109. package/dist/chunks/startup.mjs +1 -1
  110. package/dist/chunks/stats.mjs +2 -2
  111. package/dist/chunks/status.mjs +37 -22
  112. package/dist/chunks/team.mjs +3 -3
  113. package/dist/chunks/thinking.mjs +4 -4
  114. package/dist/chunks/trace.mjs +2 -2
  115. package/dist/chunks/uninstall.mjs +9 -9
  116. package/dist/chunks/update.mjs +14 -11
  117. package/dist/chunks/upgrade-manager.mjs +3 -3
  118. package/dist/chunks/upgrade.mjs +25 -9
  119. package/dist/chunks/version-checker.mjs +4 -4
  120. package/dist/chunks/vim.mjs +3 -3
  121. package/dist/chunks/workflows.mjs +1 -1
  122. package/dist/chunks/wsl.mjs +1 -1
  123. package/dist/chunks/zero-config.mjs +4 -4
  124. package/dist/cli.mjs +60 -26
  125. package/dist/index.d.mts +4392 -4392
  126. package/dist/index.d.ts +4392 -4392
  127. package/dist/index.mjs +4314 -4314
  128. package/dist/shared/{ccjk.DcKLglJQ.mjs → ccjk.BIxuVL3_.mjs} +2 -2
  129. package/dist/shared/{ccjk.DJdmgr2d.mjs → ccjk.BJMRY2Ra.mjs} +5 -3
  130. package/dist/shared/{ccjk.B1TwPltj.mjs → ccjk.BOu1yav7.mjs} +3 -2
  131. package/dist/shared/{ccjk.mJpVRDZ8.mjs → ccjk.BWFpnOr3.mjs} +1 -1
  132. package/dist/shared/{ccjk.BfIpomdz.mjs → ccjk.CHUEFqmw.mjs} +3 -2
  133. package/dist/shared/{ccjk.CqdbaXqU.mjs → ccjk.CLUL0pAV.mjs} +9 -5
  134. package/dist/shared/{ccjk.Cot9p9_n.mjs → ccjk.Cjj8SVrn.mjs} +1 -1
  135. package/dist/shared/{ccjk.CfrpIIKy.mjs → ccjk.Crd_nEfj.mjs} +38 -20
  136. package/dist/shared/{ccjk.DCw2WnZU.mjs → ccjk.CvChMYvB.mjs} +1 -1
  137. package/dist/shared/{ccjk.CXzjn01x.mjs → ccjk.D8ZLYSZZ.mjs} +1 -1
  138. package/dist/shared/{ccjk.BrPUmTqm.mjs → ccjk.DJuyfrlL.mjs} +164 -82
  139. package/dist/shared/{ccjk.DHXfsrwn.mjs → ccjk.DRfdq6yl.mjs} +4 -4
  140. package/dist/shared/{ccjk.DXRAZcix.mjs → ccjk.DScm_NnL.mjs} +8 -4
  141. package/dist/shared/{ccjk.XsJWJuQP.mjs → ccjk.DfZKjHvG.mjs} +6 -128
  142. package/dist/shared/{ccjk.BFxsJM0k.mjs → ccjk.DwSebGy0.mjs} +4 -3
  143. package/dist/shared/ccjk.DxWqH-EF.mjs +170 -0
  144. package/dist/shared/{ccjk.Cwa_FiTX.mjs → ccjk.I6IuYdc_.mjs} +2 -2
  145. package/dist/shared/{ccjk.DpstNaeR.mjs → ccjk.KpFl2RDA.mjs} +3 -3
  146. package/dist/shared/{ccjk.dYDLfmph.mjs → ccjk._dESH4Rk.mjs} +1 -1
  147. package/dist/shared/{ccjk.BxSmJ8B7.mjs → ccjk.wLJHO0Af.mjs} +2 -1
  148. package/package.json +65 -67
  149. package/dist/chunks/index15.mjs +0 -218
  150. package/dist/shared/{ccjk.c-ETfBZ_.mjs → ccjk.eIn-g1yI.mjs} +96 -96
@@ -1,19 +1,616 @@
1
- import { _ as _path } from '../shared/ccjk.bQ7Dh1g4.mjs';
2
- export { b as basename, d as dirname, e as extname, f as format, i as isAbsolute, j as join, m as matchesGlob, n as normalize, a as normalizeString, p as parse, r as relative, c as resolve, s as sep, t as toNamespacedPath } from '../shared/ccjk.bQ7Dh1g4.mjs';
3
-
4
- const delimiter = /* @__PURE__ */ (() => globalThis.process?.platform === "win32" ? ";" : ":")();
5
- const _platforms = { posix: void 0, win32: void 0 };
6
- const mix = (del = delimiter) => {
7
- return new Proxy(_path, {
8
- get(_, prop) {
9
- if (prop === "delimiter") return del;
10
- if (prop === "posix") return posix;
11
- if (prop === "win32") return win32;
12
- return _platforms[prop] || _path[prop];
1
+ import { EventEmitter } from 'events';
2
+
3
+ function toArr(any) {
4
+ return any == null ? [] : Array.isArray(any) ? any : [any];
5
+ }
6
+
7
+ function toVal(out, key, val, opts) {
8
+ var x, old=out[key], nxt=(
9
+ !!~opts.string.indexOf(key) ? (val == null || val === true ? '' : String(val))
10
+ : typeof val === 'boolean' ? val
11
+ : !!~opts.boolean.indexOf(key) ? (val === 'false' ? false : val === 'true' || (out._.push((x = +val,x * 0 === 0) ? x : val),!!val))
12
+ : (x = +val,x * 0 === 0) ? x : val
13
+ );
14
+ out[key] = old == null ? nxt : (Array.isArray(old) ? old.concat(nxt) : [old, nxt]);
15
+ }
16
+
17
+ function mri2 (args, opts) {
18
+ args = args || [];
19
+ opts = opts || {};
20
+
21
+ var k, arr, arg, name, val, out={ _:[] };
22
+ var i=0, j=0, idx=0, len=args.length;
23
+
24
+ const alibi = opts.alias !== void 0;
25
+ const strict = opts.unknown !== void 0;
26
+ const defaults = opts.default !== void 0;
27
+
28
+ opts.alias = opts.alias || {};
29
+ opts.string = toArr(opts.string);
30
+ opts.boolean = toArr(opts.boolean);
31
+
32
+ if (alibi) {
33
+ for (k in opts.alias) {
34
+ arr = opts.alias[k] = toArr(opts.alias[k]);
35
+ for (i=0; i < arr.length; i++) {
36
+ (opts.alias[arr[i]] = arr.concat(k)).splice(i, 1);
37
+ }
38
+ }
39
+ }
40
+
41
+ for (i=opts.boolean.length; i-- > 0;) {
42
+ arr = opts.alias[opts.boolean[i]] || [];
43
+ for (j=arr.length; j-- > 0;) opts.boolean.push(arr[j]);
44
+ }
45
+
46
+ for (i=opts.string.length; i-- > 0;) {
47
+ arr = opts.alias[opts.string[i]] || [];
48
+ for (j=arr.length; j-- > 0;) opts.string.push(arr[j]);
49
+ }
50
+
51
+ if (defaults) {
52
+ for (k in opts.default) {
53
+ name = typeof opts.default[k];
54
+ arr = opts.alias[k] = opts.alias[k] || [];
55
+ if (opts[name] !== void 0) {
56
+ opts[name].push(k);
57
+ for (i=0; i < arr.length; i++) {
58
+ opts[name].push(arr[i]);
59
+ }
60
+ }
61
+ }
62
+ }
63
+
64
+ const keys = strict ? Object.keys(opts.alias) : [];
65
+
66
+ for (i=0; i < len; i++) {
67
+ arg = args[i];
68
+
69
+ if (arg === '--') {
70
+ out._ = out._.concat(args.slice(++i));
71
+ break;
72
+ }
73
+
74
+ for (j=0; j < arg.length; j++) {
75
+ if (arg.charCodeAt(j) !== 45) break; // "-"
76
+ }
77
+
78
+ if (j === 0) {
79
+ out._.push(arg);
80
+ } else if (arg.substring(j, j + 3) === 'no-') {
81
+ name = arg.substring(j + 3);
82
+ if (strict && !~keys.indexOf(name)) {
83
+ return opts.unknown(arg);
84
+ }
85
+ out[name] = false;
86
+ } else {
87
+ for (idx=j+1; idx < arg.length; idx++) {
88
+ if (arg.charCodeAt(idx) === 61) break; // "="
89
+ }
90
+
91
+ name = arg.substring(j, idx);
92
+ val = arg.substring(++idx) || (i+1 === len || (''+args[i+1]).charCodeAt(0) === 45 || args[++i]);
93
+ arr = (j === 2 ? [name] : name);
94
+
95
+ for (idx=0; idx < arr.length; idx++) {
96
+ name = arr[idx];
97
+ if (strict && !~keys.indexOf(name)) return opts.unknown('-'.repeat(j) + name);
98
+ toVal(out, name, (idx + 1 < arr.length) || val, opts);
99
+ }
100
+ }
101
+ }
102
+
103
+ if (defaults) {
104
+ for (k in opts.default) {
105
+ if (out[k] === void 0) {
106
+ out[k] = opts.default[k];
107
+ }
108
+ }
109
+ }
110
+
111
+ if (alibi) {
112
+ for (k in out) {
113
+ arr = opts.alias[k] || [];
114
+ while (arr.length > 0) {
115
+ out[arr.shift()] = out[k];
116
+ }
117
+ }
118
+ }
119
+
120
+ return out;
121
+ }
122
+
123
+ const removeBrackets = (v) => v.replace(/[<[].+/, "").trim();
124
+ const findAllBrackets = (v) => {
125
+ const ANGLED_BRACKET_RE_GLOBAL = /<([^>]+)>/g;
126
+ const SQUARE_BRACKET_RE_GLOBAL = /\[([^\]]+)\]/g;
127
+ const res = [];
128
+ const parse = (match) => {
129
+ let variadic = false;
130
+ let value = match[1];
131
+ if (value.startsWith("...")) {
132
+ value = value.slice(3);
133
+ variadic = true;
134
+ }
135
+ return {
136
+ required: match[0].startsWith("<"),
137
+ value,
138
+ variadic
139
+ };
140
+ };
141
+ let angledMatch;
142
+ while (angledMatch = ANGLED_BRACKET_RE_GLOBAL.exec(v)) {
143
+ res.push(parse(angledMatch));
144
+ }
145
+ let squareMatch;
146
+ while (squareMatch = SQUARE_BRACKET_RE_GLOBAL.exec(v)) {
147
+ res.push(parse(squareMatch));
148
+ }
149
+ return res;
150
+ };
151
+ const getMriOptions = (options) => {
152
+ const result = {alias: {}, boolean: []};
153
+ for (const [index, option] of options.entries()) {
154
+ if (option.names.length > 1) {
155
+ result.alias[option.names[0]] = option.names.slice(1);
156
+ }
157
+ if (option.isBoolean) {
158
+ if (option.negated) {
159
+ const hasStringTypeOption = options.some((o, i) => {
160
+ return i !== index && o.names.some((name) => option.names.includes(name)) && typeof o.required === "boolean";
161
+ });
162
+ if (!hasStringTypeOption) {
163
+ result.boolean.push(option.names[0]);
164
+ }
165
+ } else {
166
+ result.boolean.push(option.names[0]);
167
+ }
13
168
  }
169
+ }
170
+ return result;
171
+ };
172
+ const findLongest = (arr) => {
173
+ return arr.sort((a, b) => {
174
+ return a.length > b.length ? -1 : 1;
175
+ })[0];
176
+ };
177
+ const padRight = (str, length) => {
178
+ return str.length >= length ? str : `${str}${" ".repeat(length - str.length)}`;
179
+ };
180
+ const camelcase = (input) => {
181
+ return input.replace(/([a-z])-([a-z])/g, (_, p1, p2) => {
182
+ return p1 + p2.toUpperCase();
14
183
  });
15
184
  };
16
- const posix = /* @__PURE__ */ mix(":");
17
- const win32 = /* @__PURE__ */ mix(";");
185
+ const setDotProp = (obj, keys, val) => {
186
+ let i = 0;
187
+ let length = keys.length;
188
+ let t = obj;
189
+ let x;
190
+ for (; i < length; ++i) {
191
+ x = t[keys[i]];
192
+ t = t[keys[i]] = i === length - 1 ? val : x != null ? x : !!~keys[i + 1].indexOf(".") || !(+keys[i + 1] > -1) ? {} : [];
193
+ }
194
+ };
195
+ const setByType = (obj, transforms) => {
196
+ for (const key of Object.keys(transforms)) {
197
+ const transform = transforms[key];
198
+ if (transform.shouldTransform) {
199
+ obj[key] = Array.prototype.concat.call([], obj[key]);
200
+ if (typeof transform.transformFunction === "function") {
201
+ obj[key] = obj[key].map(transform.transformFunction);
202
+ }
203
+ }
204
+ }
205
+ };
206
+ const getFileName = (input) => {
207
+ const m = /([^\\\/]+)$/.exec(input);
208
+ return m ? m[1] : "";
209
+ };
210
+ const camelcaseOptionName = (name) => {
211
+ return name.split(".").map((v, i) => {
212
+ return i === 0 ? camelcase(v) : v;
213
+ }).join(".");
214
+ };
215
+ class CACError extends Error {
216
+ constructor(message) {
217
+ super(message);
218
+ this.name = this.constructor.name;
219
+ if (typeof Error.captureStackTrace === "function") {
220
+ Error.captureStackTrace(this, this.constructor);
221
+ } else {
222
+ this.stack = new Error(message).stack;
223
+ }
224
+ }
225
+ }
226
+
227
+ class Option {
228
+ constructor(rawName, description, config) {
229
+ this.rawName = rawName;
230
+ this.description = description;
231
+ this.config = Object.assign({}, config);
232
+ rawName = rawName.replace(/\.\*/g, "");
233
+ this.negated = false;
234
+ this.names = removeBrackets(rawName).split(",").map((v) => {
235
+ let name = v.trim().replace(/^-{1,2}/, "");
236
+ if (name.startsWith("no-")) {
237
+ this.negated = true;
238
+ name = name.replace(/^no-/, "");
239
+ }
240
+ return camelcaseOptionName(name);
241
+ }).sort((a, b) => a.length > b.length ? 1 : -1);
242
+ this.name = this.names[this.names.length - 1];
243
+ if (this.negated && this.config.default == null) {
244
+ this.config.default = true;
245
+ }
246
+ if (rawName.includes("<")) {
247
+ this.required = true;
248
+ } else if (rawName.includes("[")) {
249
+ this.required = false;
250
+ } else {
251
+ this.isBoolean = true;
252
+ }
253
+ }
254
+ }
255
+
256
+ const processArgs = process.argv;
257
+ const platformInfo = `${process.platform}-${process.arch} node-${process.version}`;
258
+
259
+ class Command {
260
+ constructor(rawName, description, config = {}, cli) {
261
+ this.rawName = rawName;
262
+ this.description = description;
263
+ this.config = config;
264
+ this.cli = cli;
265
+ this.options = [];
266
+ this.aliasNames = [];
267
+ this.name = removeBrackets(rawName);
268
+ this.args = findAllBrackets(rawName);
269
+ this.examples = [];
270
+ }
271
+ usage(text) {
272
+ this.usageText = text;
273
+ return this;
274
+ }
275
+ allowUnknownOptions() {
276
+ this.config.allowUnknownOptions = true;
277
+ return this;
278
+ }
279
+ ignoreOptionDefaultValue() {
280
+ this.config.ignoreOptionDefaultValue = true;
281
+ return this;
282
+ }
283
+ version(version, customFlags = "-v, --version") {
284
+ this.versionNumber = version;
285
+ this.option(customFlags, "Display version number");
286
+ return this;
287
+ }
288
+ example(example) {
289
+ this.examples.push(example);
290
+ return this;
291
+ }
292
+ option(rawName, description, config) {
293
+ const option = new Option(rawName, description, config);
294
+ this.options.push(option);
295
+ return this;
296
+ }
297
+ alias(name) {
298
+ this.aliasNames.push(name);
299
+ return this;
300
+ }
301
+ action(callback) {
302
+ this.commandAction = callback;
303
+ return this;
304
+ }
305
+ isMatched(name) {
306
+ return this.name === name || this.aliasNames.includes(name);
307
+ }
308
+ get isDefaultCommand() {
309
+ return this.name === "" || this.aliasNames.includes("!");
310
+ }
311
+ get isGlobalCommand() {
312
+ return this instanceof GlobalCommand;
313
+ }
314
+ hasOption(name) {
315
+ name = name.split(".")[0];
316
+ return this.options.find((option) => {
317
+ return option.names.includes(name);
318
+ });
319
+ }
320
+ outputHelp() {
321
+ const {name, commands} = this.cli;
322
+ const {
323
+ versionNumber,
324
+ options: globalOptions,
325
+ helpCallback
326
+ } = this.cli.globalCommand;
327
+ let sections = [
328
+ {
329
+ body: `${name}${versionNumber ? `/${versionNumber}` : ""}`
330
+ }
331
+ ];
332
+ sections.push({
333
+ title: "Usage",
334
+ body: ` $ ${name} ${this.usageText || this.rawName}`
335
+ });
336
+ const showCommands = (this.isGlobalCommand || this.isDefaultCommand) && commands.length > 0;
337
+ if (showCommands) {
338
+ const longestCommandName = findLongest(commands.map((command) => command.rawName));
339
+ sections.push({
340
+ title: "Commands",
341
+ body: commands.map((command) => {
342
+ return ` ${padRight(command.rawName, longestCommandName.length)} ${command.description}`;
343
+ }).join("\n")
344
+ });
345
+ sections.push({
346
+ title: `For more info, run any command with the \`--help\` flag`,
347
+ body: commands.map((command) => ` $ ${name}${command.name === "" ? "" : ` ${command.name}`} --help`).join("\n")
348
+ });
349
+ }
350
+ let options = this.isGlobalCommand ? globalOptions : [...this.options, ...globalOptions || []];
351
+ if (!this.isGlobalCommand && !this.isDefaultCommand) {
352
+ options = options.filter((option) => option.name !== "version");
353
+ }
354
+ if (options.length > 0) {
355
+ const longestOptionName = findLongest(options.map((option) => option.rawName));
356
+ sections.push({
357
+ title: "Options",
358
+ body: options.map((option) => {
359
+ return ` ${padRight(option.rawName, longestOptionName.length)} ${option.description} ${option.config.default === void 0 ? "" : `(default: ${option.config.default})`}`;
360
+ }).join("\n")
361
+ });
362
+ }
363
+ if (this.examples.length > 0) {
364
+ sections.push({
365
+ title: "Examples",
366
+ body: this.examples.map((example) => {
367
+ if (typeof example === "function") {
368
+ return example(name);
369
+ }
370
+ return example;
371
+ }).join("\n")
372
+ });
373
+ }
374
+ if (helpCallback) {
375
+ sections = helpCallback(sections) || sections;
376
+ }
377
+ console.log(sections.map((section) => {
378
+ return section.title ? `${section.title}:
379
+ ${section.body}` : section.body;
380
+ }).join("\n\n"));
381
+ }
382
+ outputVersion() {
383
+ const {name} = this.cli;
384
+ const {versionNumber} = this.cli.globalCommand;
385
+ if (versionNumber) {
386
+ console.log(`${name}/${versionNumber} ${platformInfo}`);
387
+ }
388
+ }
389
+ checkRequiredArgs() {
390
+ const minimalArgsCount = this.args.filter((arg) => arg.required).length;
391
+ if (this.cli.args.length < minimalArgsCount) {
392
+ throw new CACError(`missing required args for command \`${this.rawName}\``);
393
+ }
394
+ }
395
+ checkUnknownOptions() {
396
+ const {options, globalCommand} = this.cli;
397
+ if (!this.config.allowUnknownOptions) {
398
+ for (const name of Object.keys(options)) {
399
+ if (name !== "--" && !this.hasOption(name) && !globalCommand.hasOption(name)) {
400
+ throw new CACError(`Unknown option \`${name.length > 1 ? `--${name}` : `-${name}`}\``);
401
+ }
402
+ }
403
+ }
404
+ }
405
+ checkOptionValue() {
406
+ const {options: parsedOptions, globalCommand} = this.cli;
407
+ const options = [...globalCommand.options, ...this.options];
408
+ for (const option of options) {
409
+ const value = parsedOptions[option.name.split(".")[0]];
410
+ if (option.required) {
411
+ const hasNegated = options.some((o) => o.negated && o.names.includes(option.name));
412
+ if (value === true || value === false && !hasNegated) {
413
+ throw new CACError(`option \`${option.rawName}\` value is missing`);
414
+ }
415
+ }
416
+ }
417
+ }
418
+ }
419
+ class GlobalCommand extends Command {
420
+ constructor(cli) {
421
+ super("@@global@@", "", {}, cli);
422
+ }
423
+ }
424
+
425
+ var __assign = Object.assign;
426
+ class CAC extends EventEmitter {
427
+ constructor(name = "") {
428
+ super();
429
+ this.name = name;
430
+ this.commands = [];
431
+ this.rawArgs = [];
432
+ this.args = [];
433
+ this.options = {};
434
+ this.globalCommand = new GlobalCommand(this);
435
+ this.globalCommand.usage("<command> [options]");
436
+ }
437
+ usage(text) {
438
+ this.globalCommand.usage(text);
439
+ return this;
440
+ }
441
+ command(rawName, description, config) {
442
+ const command = new Command(rawName, description || "", config, this);
443
+ command.globalCommand = this.globalCommand;
444
+ this.commands.push(command);
445
+ return command;
446
+ }
447
+ option(rawName, description, config) {
448
+ this.globalCommand.option(rawName, description, config);
449
+ return this;
450
+ }
451
+ help(callback) {
452
+ this.globalCommand.option("-h, --help", "Display this message");
453
+ this.globalCommand.helpCallback = callback;
454
+ this.showHelpOnExit = true;
455
+ return this;
456
+ }
457
+ version(version, customFlags = "-v, --version") {
458
+ this.globalCommand.version(version, customFlags);
459
+ this.showVersionOnExit = true;
460
+ return this;
461
+ }
462
+ example(example) {
463
+ this.globalCommand.example(example);
464
+ return this;
465
+ }
466
+ outputHelp() {
467
+ if (this.matchedCommand) {
468
+ this.matchedCommand.outputHelp();
469
+ } else {
470
+ this.globalCommand.outputHelp();
471
+ }
472
+ }
473
+ outputVersion() {
474
+ this.globalCommand.outputVersion();
475
+ }
476
+ setParsedInfo({args, options}, matchedCommand, matchedCommandName) {
477
+ this.args = args;
478
+ this.options = options;
479
+ if (matchedCommand) {
480
+ this.matchedCommand = matchedCommand;
481
+ }
482
+ if (matchedCommandName) {
483
+ this.matchedCommandName = matchedCommandName;
484
+ }
485
+ return this;
486
+ }
487
+ unsetMatchedCommand() {
488
+ this.matchedCommand = void 0;
489
+ this.matchedCommandName = void 0;
490
+ }
491
+ parse(argv = processArgs, {
492
+ run = true
493
+ } = {}) {
494
+ this.rawArgs = argv;
495
+ if (!this.name) {
496
+ this.name = argv[1] ? getFileName(argv[1]) : "cli";
497
+ }
498
+ let shouldParse = true;
499
+ for (const command of this.commands) {
500
+ const parsed = this.mri(argv.slice(2), command);
501
+ const commandName = parsed.args[0];
502
+ if (command.isMatched(commandName)) {
503
+ shouldParse = false;
504
+ const parsedInfo = __assign(__assign({}, parsed), {
505
+ args: parsed.args.slice(1)
506
+ });
507
+ this.setParsedInfo(parsedInfo, command, commandName);
508
+ this.emit(`command:${commandName}`, command);
509
+ }
510
+ }
511
+ if (shouldParse) {
512
+ for (const command of this.commands) {
513
+ if (command.name === "") {
514
+ shouldParse = false;
515
+ const parsed = this.mri(argv.slice(2), command);
516
+ this.setParsedInfo(parsed, command);
517
+ this.emit(`command:!`, command);
518
+ }
519
+ }
520
+ }
521
+ if (shouldParse) {
522
+ const parsed = this.mri(argv.slice(2));
523
+ this.setParsedInfo(parsed);
524
+ }
525
+ if (this.options.help && this.showHelpOnExit) {
526
+ this.outputHelp();
527
+ run = false;
528
+ this.unsetMatchedCommand();
529
+ }
530
+ if (this.options.version && this.showVersionOnExit && this.matchedCommandName == null) {
531
+ this.outputVersion();
532
+ run = false;
533
+ this.unsetMatchedCommand();
534
+ }
535
+ const parsedArgv = {args: this.args, options: this.options};
536
+ if (run) {
537
+ this.runMatchedCommand();
538
+ }
539
+ if (!this.matchedCommand && this.args[0]) {
540
+ this.emit("command:*");
541
+ }
542
+ return parsedArgv;
543
+ }
544
+ mri(argv, command) {
545
+ const cliOptions = [
546
+ ...this.globalCommand.options,
547
+ ...command ? command.options : []
548
+ ];
549
+ const mriOptions = getMriOptions(cliOptions);
550
+ let argsAfterDoubleDashes = [];
551
+ const doubleDashesIndex = argv.indexOf("--");
552
+ if (doubleDashesIndex > -1) {
553
+ argsAfterDoubleDashes = argv.slice(doubleDashesIndex + 1);
554
+ argv = argv.slice(0, doubleDashesIndex);
555
+ }
556
+ let parsed = mri2(argv, mriOptions);
557
+ parsed = Object.keys(parsed).reduce((res, name) => {
558
+ return __assign(__assign({}, res), {
559
+ [camelcaseOptionName(name)]: parsed[name]
560
+ });
561
+ }, {_: []});
562
+ const args = parsed._;
563
+ const options = {
564
+ "--": argsAfterDoubleDashes
565
+ };
566
+ const ignoreDefault = command && command.config.ignoreOptionDefaultValue ? command.config.ignoreOptionDefaultValue : this.globalCommand.config.ignoreOptionDefaultValue;
567
+ let transforms = Object.create(null);
568
+ for (const cliOption of cliOptions) {
569
+ if (!ignoreDefault && cliOption.config.default !== void 0) {
570
+ for (const name of cliOption.names) {
571
+ options[name] = cliOption.config.default;
572
+ }
573
+ }
574
+ if (Array.isArray(cliOption.config.type)) {
575
+ if (transforms[cliOption.name] === void 0) {
576
+ transforms[cliOption.name] = Object.create(null);
577
+ transforms[cliOption.name]["shouldTransform"] = true;
578
+ transforms[cliOption.name]["transformFunction"] = cliOption.config.type[0];
579
+ }
580
+ }
581
+ }
582
+ for (const key of Object.keys(parsed)) {
583
+ if (key !== "_") {
584
+ const keys = key.split(".");
585
+ setDotProp(options, keys, parsed[key]);
586
+ setByType(options, transforms);
587
+ }
588
+ }
589
+ return {
590
+ args,
591
+ options
592
+ };
593
+ }
594
+ runMatchedCommand() {
595
+ const {args, options, matchedCommand: command} = this;
596
+ if (!command || !command.commandAction)
597
+ return;
598
+ command.checkUnknownOptions();
599
+ command.checkOptionValue();
600
+ command.checkRequiredArgs();
601
+ const actionArgs = [];
602
+ command.args.forEach((arg, index) => {
603
+ if (arg.variadic) {
604
+ actionArgs.push(args.slice(index));
605
+ } else {
606
+ actionArgs.push(args[index]);
607
+ }
608
+ });
609
+ actionArgs.push(options);
610
+ return command.commandAction.apply(this, actionArgs);
611
+ }
612
+ }
613
+
614
+ const cac = (name = "") => new CAC(name);
18
615
 
19
- export { posix as default, delimiter, posix, win32 };
616
+ export { CAC, Command, cac, cac as default };