pruff-skills 1.0.1 → 1.2.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.
@@ -8,23 +8,6 @@ are set forth below. These licenses and notices are provided for informational p
8
8
  Third Party Code Components
9
9
  --------------------------------------------
10
10
 
11
- ================================================================================
12
- Package: @clack/core@0.5.0
13
- License: MIT
14
- Repository: https://github.com/bombshell-dev/clack
15
- --------------------------------------------------------------------------------
16
-
17
- MIT License
18
-
19
- Copyright (c) Nate Moore
20
-
21
- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
22
-
23
- The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
24
-
25
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
26
-
27
-
28
11
  ================================================================================
29
12
  Package: @clack/prompts@0.11.0
30
13
  License: MIT
@@ -66,7 +49,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
66
49
 
67
50
 
68
51
  ================================================================================
69
- Package: simple-git@3.36.0
52
+ Package: simple-git@3.30.0
70
53
  License: MIT
71
54
  Repository: https://github.com/steveukx/git-js
72
55
  --------------------------------------------------------------------------------
@@ -92,35 +75,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
92
75
  SOFTWARE.
93
76
 
94
77
 
95
- ================================================================================
96
- Package: sisteransi@1.0.5
97
- License: MIT
98
- Repository: https://github.com/terkelg/sisteransi
99
- --------------------------------------------------------------------------------
100
-
101
- MIT License
102
-
103
- Copyright (c) 2018 Terkel Gjervig Nielsen
104
-
105
- Permission is hereby granted, free of charge, to any person obtaining a copy
106
- of this software and associated documentation files (the "Software"), to deal
107
- in the Software without restriction, including without limitation the rights
108
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
109
- copies of the Software, and to permit persons to whom the Software is
110
- furnished to do so, subject to the following conditions:
111
-
112
- The above copyright notice and this permission notice shall be included in all
113
- copies or substantial portions of the Software.
114
-
115
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
116
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
117
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
118
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
119
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
120
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
121
- SOFTWARE.
122
-
123
-
124
78
  ================================================================================
125
79
  Package: xdg-basedir@5.1.0
126
80
  License: MIT
@@ -139,7 +93,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
139
93
 
140
94
 
141
95
  ================================================================================
142
- Package: yaml@2.9.0
96
+ Package: yaml@2.8.3
143
97
  License: ISC
144
98
  Repository: https://github.com/eemeli/yaml
145
99
  --------------------------------------------------------------------------------
@@ -1,4 +1,4 @@
1
- import { __commonJSMin, __toESM } from "../../rolldown-runtime.mjs";
1
+ import { r as __toESM, t as __commonJSMin } from "../../rolldown-runtime.mjs";
2
2
  import { stdin, stdout } from "node:process";
3
3
  import * as g from "node:readline";
4
4
  import O from "node:readline";
@@ -637,10 +637,7 @@ let _D = class extends x {
637
637
  if (u.group === !0) {
638
638
  const t = u.value, F = this.getGroupItems(t);
639
639
  this.isGroupSelected(t) ? this.value = this.value.filter((s) => F.findIndex((i) => i.value === s) === -1) : this.value = [...this.value, ...F.map((s) => s.value)], this.value = Array.from(new Set(this.value));
640
- } else {
641
- const t = this.value.includes(u.value);
642
- this.value = t ? this.value.filter((F) => F !== u.value) : [...this.value, u.value];
643
- }
640
+ } else this.value = this.value.includes(u.value) ? this.value.filter((F) => F !== u.value) : [...this.value, u.value];
644
641
  }
645
642
  };
646
643
  A = /* @__PURE__ */ new WeakMap();
@@ -674,12 +671,10 @@ let SD = class extends x {
674
671
  return this.options[this.cursor].value;
675
672
  }
676
673
  toggleAll() {
677
- const u = this.value.length === this.options.length;
678
- this.value = u ? [] : this.options.map((t) => t.value);
674
+ this.value = this.value.length === this.options.length ? [] : this.options.map((t) => t.value);
679
675
  }
680
676
  toggleValue() {
681
- const u = this.value.includes(this._value);
682
- this.value = u ? this.value.filter((t) => t !== this._value) : [...this.value, this._value];
677
+ this.value = this.value.includes(this._value) ? this.value.filter((t) => t !== this._value) : [...this.value, this._value];
683
678
  }
684
679
  };
685
680
  var TD = Object.defineProperty, jD = (e, u, t) => u in e ? TD(e, u, {
@@ -769,4 +764,4 @@ var RD = class extends x {
769
764
  });
770
765
  }
771
766
  };
772
- export { ID, LD, MD, RD, SD, _D, dD, fD, pD, require_picocolors, require_src };
767
+ export { SD as a, fD as c, require_src as d, RD as i, pD as l, LD as n, _D as o, MD as r, dD as s, ID as t, require_picocolors as u };
@@ -1,5 +1,5 @@
1
- import { __toESM } from "../../rolldown-runtime.mjs";
2
- import { LD, MD, RD, SD, _D, dD, fD, require_picocolors, require_src } from "./core.mjs";
1
+ import { r as __toESM } from "../../rolldown-runtime.mjs";
2
+ import { a as SD, c as fD, d as require_src, i as RD, l as pD, n as LD, o as _D, r as MD, s as dD, t as ID, u as require_picocolors } from "./core.mjs";
3
3
  import { stripVTControlCharacters } from "node:util";
4
4
  import y from "node:process";
5
5
  var import_picocolors = /* @__PURE__ */ __toESM(require_picocolors(), 1);
@@ -371,4 +371,4 @@ ${J}${i.trimStart()}`), r = 3 + stripVTControlCharacters(i.trimStart()).length);
371
371
  }
372
372
  };
373
373
  };
374
- export { Ie, M, Me, Se, Y, be, fe, ge, he, ve, xe, ye };
374
+ export { Y as a, ge as c, xe as d, ye as f, Se as i, he as l, M as n, be as o, Me as r, fe as s, Ie as t, ve as u };
@@ -1,4 +1,4 @@
1
- import { __commonJSMin, __require } from "../../rolldown-runtime.mjs";
1
+ import { n as __require, t as __commonJSMin } from "../../rolldown-runtime.mjs";
2
2
  var require_ms = /* @__PURE__ */ __commonJSMin(((exports, module) => {
3
3
  var s = 1e3;
4
4
  var m = s * 60;
@@ -559,4 +559,4 @@ var require_dist = /* @__PURE__ */ __commonJSMin(((exports) => {
559
559
  Object.defineProperty(exports, "__esModule", { value: true });
560
560
  __export(require_src());
561
561
  }));
562
- export { require_dist, require_src$1 as require_src };
562
+ export { require_src$1 as n, require_dist as t };
@@ -1,4 +1,4 @@
1
- import { __commonJSMin } from "../../rolldown-runtime.mjs";
1
+ import { t as __commonJSMin } from "../../rolldown-runtime.mjs";
2
2
  var require_dist = /* @__PURE__ */ __commonJSMin(((exports) => {
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.createDeferred = exports.deferred = void 0;
@@ -34,4 +34,4 @@ var require_dist = /* @__PURE__ */ __commonJSMin(((exports) => {
34
34
  exports.deferred = deferred;
35
35
  exports.createDeferred = deferred;
36
36
  }));
37
- export { require_dist };
37
+ export { require_dist as t };
@@ -1,4 +1,4 @@
1
- import { __commonJSMin, __require } from "../../rolldown-runtime.mjs";
1
+ import { n as __require, t as __commonJSMin } from "../../rolldown-runtime.mjs";
2
2
  var require_dist = /* @__PURE__ */ __commonJSMin(((exports, module) => {
3
3
  var __defProp = Object.defineProperty;
4
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -134,9 +134,5 @@ var require_dist = /* @__PURE__ */ __commonJSMin(((exports, module) => {
134
134
  agent: void 0
135
135
  };
136
136
  }
137
- 0 && (module.exports = {
138
- KNOWN_AGENTS,
139
- determineAgent
140
- });
141
137
  }));
142
- export { require_dist };
138
+ export { require_dist as t };
@@ -1,8 +1,7 @@
1
- import { __toESM } from "../rolldown-runtime.mjs";
2
- import { require_dist, require_src } from "./@kwsites/file-exists.mjs";
3
- import { c, o, r } from "./@simple-git/args-pathspec.mjs";
4
- import { require_dist as require_dist$1 } from "./@kwsites/promise-deferred.mjs";
5
- import { ne } from "./@simple-git/argv-parser.mjs";
1
+ import { r as __toESM } from "../rolldown-runtime.mjs";
2
+ import { n as require_src, t as require_dist } from "./@kwsites/file-exists.mjs";
3
+ import { t as require_dist$1 } from "./@kwsites/promise-deferred.mjs";
4
+ import { Buffer as Buffer$1 } from "node:buffer";
6
5
  import { spawn } from "child_process";
7
6
  import { normalize } from "node:path";
8
7
  import { EventEmitter } from "node:events";
@@ -35,6 +34,22 @@ var __copyProps = (to, from, except, desc) => {
35
34
  return to;
36
35
  };
37
36
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
37
+ function pathspec(...paths) {
38
+ const key = new String(paths);
39
+ cache.set(key, paths);
40
+ return key;
41
+ }
42
+ function isPathSpec(path) {
43
+ return path instanceof String && cache.has(path);
44
+ }
45
+ function toPaths(pathSpec) {
46
+ return cache.get(pathSpec) || [];
47
+ }
48
+ var cache;
49
+ var init_pathspec = __esm({ "src/lib/args/pathspec.ts"() {
50
+ "use strict";
51
+ cache = /* @__PURE__ */ new WeakMap();
52
+ } });
38
53
  var GitError;
39
54
  var init_git_error = __esm({ "src/lib/errors/git-error.ts"() {
40
55
  "use strict";
@@ -142,7 +157,7 @@ function prefixedArray(input, prefix) {
142
157
  return output;
143
158
  }
144
159
  function bufferToString(input) {
145
- return (Array.isArray(input) ? Buffer.concat(input) : input).toString("utf-8");
160
+ return (Array.isArray(input) ? Buffer$1.concat(input) : input).toString("utf-8");
146
161
  }
147
162
  function pick(source, properties) {
148
163
  const out = {};
@@ -171,7 +186,7 @@ function filterType(input, filter, def) {
171
186
  return arguments.length > 2 ? def : void 0;
172
187
  }
173
188
  function filterPrimitives(input, omit) {
174
- const type = r(input) ? "string" : typeof input;
189
+ const type = isPathSpec(input) ? "string" : typeof input;
175
190
  return /number|string|boolean/.test(type) && (!omit || !omit.includes(type));
176
191
  }
177
192
  function filterPlainObject(input) {
@@ -183,6 +198,7 @@ function filterFunction(input) {
183
198
  var filterArray, filterNumber, filterString, filterStringOrStringArray, filterHasLength;
184
199
  var init_argument_filters = __esm({ "src/lib/utils/argument-filters.ts"() {
185
200
  "use strict";
201
+ init_pathspec();
186
202
  init_util();
187
203
  filterArray = (input) => {
188
204
  return Array.isArray(input);
@@ -191,7 +207,7 @@ var init_argument_filters = __esm({ "src/lib/utils/argument-filters.ts"() {
191
207
  return typeof input === "number";
192
208
  };
193
209
  filterString = (input) => {
194
- return typeof input === "string" || r(input);
210
+ return typeof input === "string";
195
211
  };
196
212
  filterStringOrStringArray = (input) => {
197
213
  return filterString(input) || Array.isArray(input) && input.every(filterString);
@@ -291,7 +307,7 @@ function appendTaskOptions(options, commands = []) {
291
307
  if (!filterPlainObject(options)) return commands;
292
308
  return Object.keys(options).reduce((commands2, key) => {
293
309
  const value = options[key];
294
- if (r(value)) commands2.push(value);
310
+ if (isPathSpec(value)) commands2.push(value);
295
311
  else if (filterPrimitives(value, ["boolean"])) commands2.push(key + "=" + value);
296
312
  else if (Array.isArray(value)) {
297
313
  for (const v of value) if (!filterPrimitives(v, ["string", "number"])) commands2.push(key + "=" + v);
@@ -320,6 +336,7 @@ var init_task_options = __esm({ "src/lib/utils/task-options.ts"() {
320
336
  "use strict";
321
337
  init_argument_filters();
322
338
  init_util();
339
+ init_pathspec();
323
340
  } });
324
341
  function callTaskParser(parser4, streams) {
325
342
  return parser4(streams.stdOut, streams.stdErr);
@@ -1073,10 +1090,7 @@ var init_git_executor_chain = __esm({ "src/lib/runners/git-executor-chain.ts"()
1073
1090
  }
1074
1091
  async attemptRemoteTask(task, logger) {
1075
1092
  const binary = this._plugins.exec("spawn.binary", "", pluginContext(task, task.commands));
1076
- const args = this._plugins.exec("spawn.args", [...task.commands], {
1077
- ...pluginContext(task, task.commands),
1078
- env: { ...this.env }
1079
- });
1093
+ const args = this._plugins.exec("spawn.args", [...task.commands], pluginContext(task, task.commands));
1080
1094
  const raw = await this.gitResponse(task, binary, args, this.outputHandler, logger.step("SPAWN"));
1081
1095
  const outputStreams = await this.handleTaskData(task, args, raw, logger.step("HANDLE"));
1082
1096
  logger(`passing response to task's parser as a %s`, task.format);
@@ -1670,7 +1684,7 @@ function parseLogOptions(opt = {}, customArgs = []) {
1670
1684
  const rangeOperator = opt.symmetric !== false ? "..." : "..";
1671
1685
  suffix.push(`${opt.from || ""}${rangeOperator}${opt.to || ""}`);
1672
1686
  }
1673
- if (filterString(opt.file)) command.push("--follow", c(opt.file));
1687
+ if (filterString(opt.file)) command.push("--follow", pathspec(opt.file));
1674
1688
  appendTaskOptions(userOptions(opt), command);
1675
1689
  return {
1676
1690
  fields,
@@ -1704,6 +1718,7 @@ var excludeOptions;
1704
1718
  var init_log = __esm({ "src/lib/tasks/log.ts"() {
1705
1719
  "use strict";
1706
1720
  init_log_format();
1721
+ init_pathspec();
1707
1722
  init_parse_list_log_summary();
1708
1723
  init_utils();
1709
1724
  init_task();
@@ -2110,13 +2125,13 @@ function parser3(indexX, indexY, handler) {
2110
2125
  return [`${indexX}${indexY}`, handler];
2111
2126
  }
2112
2127
  function conflicts(indexX, ...indexY) {
2113
- return indexY.map((y) => parser3(indexX, y, (result, file) => result.conflicted.push(file)));
2128
+ return indexY.map((y) => parser3(indexX, y, (result, file) => append(result.conflicted, file)));
2114
2129
  }
2115
2130
  function splitLine(result, lineStr) {
2116
2131
  const trimmed2 = lineStr.trim();
2117
2132
  switch (" ") {
2118
- case trimmed2.charAt(2): return data(trimmed2.charAt(0), trimmed2.charAt(1), trimmed2.slice(3));
2119
- case trimmed2.charAt(1): return data(" ", trimmed2.charAt(0), trimmed2.slice(2));
2133
+ case trimmed2.charAt(2): return data(trimmed2.charAt(0), trimmed2.charAt(1), trimmed2.substr(3));
2134
+ case trimmed2.charAt(1): return data(" ", trimmed2.charAt(0), trimmed2.substr(2));
2120
2135
  default: return;
2121
2136
  }
2122
2137
  function data(index, workingDir, path) {
@@ -2153,42 +2168,26 @@ var init_StatusSummary = __esm({ "src/lib/responses/StatusSummary.ts"() {
2153
2168
  }
2154
2169
  };
2155
2170
  parsers6 = new Map([
2156
- parser3(" ", "A", (result, file) => result.created.push(file)),
2157
- parser3(" ", "D", (result, file) => result.deleted.push(file)),
2158
- parser3(" ", "M", (result, file) => result.modified.push(file)),
2159
- parser3("A", " ", (result, file) => {
2160
- result.created.push(file);
2161
- result.staged.push(file);
2162
- }),
2163
- parser3("A", "M", (result, file) => {
2164
- result.created.push(file);
2165
- result.staged.push(file);
2166
- result.modified.push(file);
2167
- }),
2168
- parser3("D", " ", (result, file) => {
2169
- result.deleted.push(file);
2170
- result.staged.push(file);
2171
- }),
2172
- parser3("M", " ", (result, file) => {
2173
- result.modified.push(file);
2174
- result.staged.push(file);
2175
- }),
2176
- parser3("M", "M", (result, file) => {
2177
- result.modified.push(file);
2178
- result.staged.push(file);
2179
- }),
2171
+ parser3(" ", "A", (result, file) => append(result.created, file)),
2172
+ parser3(" ", "D", (result, file) => append(result.deleted, file)),
2173
+ parser3(" ", "M", (result, file) => append(result.modified, file)),
2174
+ parser3("A", " ", (result, file) => append(result.created, file) && append(result.staged, file)),
2175
+ parser3("A", "M", (result, file) => append(result.created, file) && append(result.staged, file) && append(result.modified, file)),
2176
+ parser3("D", " ", (result, file) => append(result.deleted, file) && append(result.staged, file)),
2177
+ parser3("M", " ", (result, file) => append(result.modified, file) && append(result.staged, file)),
2178
+ parser3("M", "M", (result, file) => append(result.modified, file) && append(result.staged, file)),
2180
2179
  parser3("R", " ", (result, file) => {
2181
- result.renamed.push(renamedFile(file));
2180
+ append(result.renamed, renamedFile(file));
2182
2181
  }),
2183
2182
  parser3("R", "M", (result, file) => {
2184
2183
  const renamed = renamedFile(file);
2185
- result.renamed.push(renamed);
2186
- result.modified.push(renamed.to);
2184
+ append(result.renamed, renamed);
2185
+ append(result.modified, renamed.to);
2187
2186
  }),
2188
2187
  parser3("!", "!", (_result, _file) => {
2189
- (_result.ignored = _result.ignored || []).push(_file);
2188
+ append(_result.ignored = _result.ignored || [], _file);
2190
2189
  }),
2191
- parser3("?", "?", (result, file) => result.not_added.push(file)),
2190
+ parser3("?", "?", (result, file) => append(result.not_added, file)),
2192
2191
  ...conflicts("A", "A", "U"),
2193
2192
  ...conflicts("D", "D", "U"),
2194
2193
  ...conflicts("U", "A", "D", "U"),
@@ -2291,36 +2290,6 @@ var init_version = __esm({ "src/lib/tasks/version.ts"() {
2291
2290
  Object.assign(result, versionResponse(asNumber(major), asNumber(minor), patch, agent));
2292
2291
  })];
2293
2292
  } });
2294
- function createCloneTask(api, task, repoPath, ...args) {
2295
- if (!filterString(repoPath)) return configurationErrorTask(`git.${api}() requires a string 'repoPath'`);
2296
- return task(repoPath, filterType(args[0], filterString), getTrailingOptions(arguments));
2297
- }
2298
- function clone_default() {
2299
- return {
2300
- clone(repo, ...rest) {
2301
- return this._runTask(createCloneTask("clone", cloneTask, filterType(repo, filterString), ...rest), trailingFunctionArgument(arguments));
2302
- },
2303
- mirror(repo, ...rest) {
2304
- return this._runTask(createCloneTask("mirror", cloneMirrorTask, filterType(repo, filterString), ...rest), trailingFunctionArgument(arguments));
2305
- }
2306
- };
2307
- }
2308
- var cloneTask, cloneMirrorTask;
2309
- var init_clone = __esm({ "src/lib/tasks/clone.ts"() {
2310
- "use strict";
2311
- init_task();
2312
- init_utils();
2313
- cloneTask = (repo, directory, customArgs) => {
2314
- const commands = ["clone", ...customArgs];
2315
- filterString(repo) && commands.push(c(repo));
2316
- filterString(directory) && commands.push(c(directory));
2317
- return straightThroughStringTask(commands);
2318
- };
2319
- cloneMirrorTask = (repo, directory, customArgs) => {
2320
- append(customArgs, "--mirror");
2321
- return cloneTask(repo, directory, customArgs);
2322
- };
2323
- } });
2324
2293
  var simple_git_api_exports = {};
2325
2294
  __export(simple_git_api_exports, { SimpleGitApi: () => SimpleGitApi });
2326
2295
  var SimpleGitApi;
@@ -2344,7 +2313,6 @@ var init_simple_git_api = __esm({ "src/lib/simple-git-api.ts"() {
2344
2313
  init_task();
2345
2314
  init_version();
2346
2315
  init_utils();
2347
- init_clone();
2348
2316
  SimpleGitApi = class {
2349
2317
  constructor(_executor) {
2350
2318
  this._executor = _executor;
@@ -2403,7 +2371,7 @@ var init_simple_git_api = __esm({ "src/lib/simple-git-api.ts"() {
2403
2371
  return this._runTask(statusTask(getTrailingOptions(arguments)), trailingFunctionArgument(arguments));
2404
2372
  }
2405
2373
  };
2406
- Object.assign(SimpleGitApi.prototype, checkout_default(), clone_default(), commit_default(), config_default(), count_objects_default(), first_commit_default(), grep_default(), log_default(), show_default(), version_default());
2374
+ Object.assign(SimpleGitApi.prototype, checkout_default(), commit_default(), config_default(), count_objects_default(), first_commit_default(), grep_default(), log_default(), show_default(), version_default());
2407
2375
  } });
2408
2376
  var scheduler_exports = {};
2409
2377
  __export(scheduler_exports, { Scheduler: () => Scheduler });
@@ -2672,6 +2640,30 @@ var init_check_ignore = __esm({ "src/lib/tasks/check-ignore.ts"() {
2672
2640
  "use strict";
2673
2641
  init_CheckIgnore();
2674
2642
  } });
2643
+ var clone_exports = {};
2644
+ __export(clone_exports, {
2645
+ cloneMirrorTask: () => cloneMirrorTask,
2646
+ cloneTask: () => cloneTask
2647
+ });
2648
+ function disallowedCommand(command) {
2649
+ return /^--upload-pack(=|$)/.test(command);
2650
+ }
2651
+ function cloneTask(repo, directory, customArgs) {
2652
+ const commands = ["clone", ...customArgs];
2653
+ filterString(repo) && commands.push(repo);
2654
+ filterString(directory) && commands.push(directory);
2655
+ if (commands.find(disallowedCommand)) return configurationErrorTask(`git.fetch: potential exploit argument blocked.`);
2656
+ return straightThroughStringTask(commands);
2657
+ }
2658
+ function cloneMirrorTask(repo, directory, customArgs) {
2659
+ append(customArgs, "--mirror");
2660
+ return cloneTask(repo, directory, customArgs);
2661
+ }
2662
+ var init_clone = __esm({ "src/lib/tasks/clone.ts"() {
2663
+ "use strict";
2664
+ init_task();
2665
+ init_utils();
2666
+ } });
2675
2667
  function parseFetchResult(stdOut, stdErr) {
2676
2668
  return parseStringResponse({
2677
2669
  raw: stdOut,
@@ -2717,13 +2709,13 @@ var init_parse_fetch = __esm({ "src/lib/parsers/parse-fetch.ts"() {
2717
2709
  } });
2718
2710
  var fetch_exports = {};
2719
2711
  __export(fetch_exports, { fetchTask: () => fetchTask });
2720
- function disallowedCommand(command) {
2712
+ function disallowedCommand2(command) {
2721
2713
  return /^--upload-pack(=|$)/.test(command);
2722
2714
  }
2723
2715
  function fetchTask(remote, branch, customArgs) {
2724
2716
  const commands = ["fetch", ...customArgs];
2725
2717
  if (remote && branch) commands.push(remote, branch);
2726
- if (commands.find(disallowedCommand)) return configurationErrorTask(`git.fetch: potential exploit argument blocked.`);
2718
+ if (commands.find(disallowedCommand2)) return configurationErrorTask(`git.fetch: potential exploit argument blocked.`);
2727
2719
  return {
2728
2720
  commands,
2729
2721
  format: "utf-8",
@@ -3012,12 +3004,13 @@ var require_git = __commonJS({ "src/git.js"(exports, module) {
3012
3004
  var { GitExecutor: GitExecutor2 } = (init_git_executor(), __toCommonJS(git_executor_exports));
3013
3005
  var { SimpleGitApi: SimpleGitApi2 } = (init_simple_git_api(), __toCommonJS(simple_git_api_exports));
3014
3006
  var { Scheduler: Scheduler2 } = (init_scheduler(), __toCommonJS(scheduler_exports));
3015
- var { adhocExecTask: adhocExecTask2, configurationErrorTask: configurationErrorTask2 } = (init_task(), __toCommonJS(task_exports));
3007
+ var { configurationErrorTask: configurationErrorTask2 } = (init_task(), __toCommonJS(task_exports));
3016
3008
  var { asArray: asArray2, filterArray: filterArray2, filterPrimitives: filterPrimitives2, filterString: filterString2, filterStringOrStringArray: filterStringOrStringArray2, filterType: filterType2, getTrailingOptions: getTrailingOptions2, trailingFunctionArgument: trailingFunctionArgument2, trailingOptionsArgument: trailingOptionsArgument2 } = (init_utils(), __toCommonJS(utils_exports));
3017
3009
  var { applyPatchTask: applyPatchTask2 } = (init_apply_patch(), __toCommonJS(apply_patch_exports));
3018
3010
  var { branchTask: branchTask2, branchLocalTask: branchLocalTask2, deleteBranchesTask: deleteBranchesTask2, deleteBranchTask: deleteBranchTask2 } = (init_branch(), __toCommonJS(branch_exports));
3019
3011
  var { checkIgnoreTask: checkIgnoreTask2 } = (init_check_ignore(), __toCommonJS(check_ignore_exports));
3020
3012
  var { checkIsRepoTask: checkIsRepoTask2 } = (init_check_is_repo(), __toCommonJS(check_is_repo_exports));
3013
+ var { cloneTask: cloneTask2, cloneMirrorTask: cloneMirrorTask2 } = (init_clone(), __toCommonJS(clone_exports));
3021
3014
  var { cleanWithOptionsTask: cleanWithOptionsTask2, isCleanOptionsArray: isCleanOptionsArray2 } = (init_clean(), __toCommonJS(clean_exports));
3022
3015
  var { diffSummaryTask: diffSummaryTask2 } = (init_diff(), __toCommonJS(diff_exports));
3023
3016
  var { fetchTask: fetchTask2 } = (init_fetch(), __toCommonJS(fetch_exports));
@@ -3048,6 +3041,16 @@ var require_git = __commonJS({ "src/git.js"(exports, module) {
3048
3041
  Git2.prototype.stashList = function(options) {
3049
3042
  return this._runTask(stashListTask2(trailingOptionsArgument2(arguments) || {}, filterArray2(options) && options || []), trailingFunctionArgument2(arguments));
3050
3043
  };
3044
+ function createCloneTask(api, task, repoPath, localPath) {
3045
+ if (typeof repoPath !== "string") return configurationErrorTask2(`git.${api}() requires a string 'repoPath'`);
3046
+ return task(repoPath, filterType2(localPath, filterString2), getTrailingOptions2(arguments));
3047
+ }
3048
+ Git2.prototype.clone = function() {
3049
+ return this._runTask(createCloneTask("clone", cloneTask2, ...arguments), trailingFunctionArgument2(arguments));
3050
+ };
3051
+ Git2.prototype.mirror = function() {
3052
+ return this._runTask(createCloneTask("mirror", cloneMirrorTask2, ...arguments), trailingFunctionArgument2(arguments));
3053
+ };
3051
3054
  Git2.prototype.mv = function(from, to) {
3052
3055
  return this._runTask(moveTask2(from, to), trailingFunctionArgument2(arguments));
3053
3056
  };
@@ -3066,7 +3069,8 @@ var require_git = __commonJS({ "src/git.js"(exports, module) {
3066
3069
  return this._runTask(fetchTask2(filterType2(remote, filterString2), filterType2(branch, filterString2), getTrailingOptions2(arguments)), trailingFunctionArgument2(arguments));
3067
3070
  };
3068
3071
  Git2.prototype.silent = function(silence) {
3069
- return this._runTask(adhocExecTask2(() => console.warn("simple-git deprecation notice: git.silent: logging should be configured using the `debug` library / `DEBUG` environment variable, this method will be removed.")));
3072
+ console.warn("simple-git deprecation notice: git.silent: logging should be configured using the `debug` library / `DEBUG` environment variable, this will be an error in version 3");
3073
+ return this;
3070
3074
  };
3071
3075
  Git2.prototype.tags = function(options, then) {
3072
3076
  return this._runTask(tagListTask2(getTrailingOptions2(arguments)), trailingFunctionArgument2(arguments));
@@ -3216,7 +3220,7 @@ var require_git = __commonJS({ "src/git.js"(exports, module) {
3216
3220
  });
3217
3221
  };
3218
3222
  Git2.prototype.clearQueue = function() {
3219
- return this._runTask(adhocExecTask2(() => console.warn("simple-git deprecation notice: clearQueue() is deprecated and will be removed, switch to using the abortPlugin instead.")));
3223
+ return this;
3220
3224
  };
3221
3225
  Git2.prototype.checkIgnore = function(pathnames, then) {
3222
3226
  return this._runTask(checkIgnoreTask2(asArray2(filterType2(pathnames, filterStringOrStringArray2, []))), trailingFunctionArgument2(arguments));
@@ -3226,6 +3230,7 @@ var require_git = __commonJS({ "src/git.js"(exports, module) {
3226
3230
  };
3227
3231
  module.exports = Git2;
3228
3232
  } });
3233
+ init_pathspec();
3229
3234
  init_git_error();
3230
3235
  var GitConstructError = class extends GitError {
3231
3236
  constructor(config, message) {
@@ -3269,11 +3274,28 @@ function abortPlugin(signal) {
3269
3274
  }
3270
3275
  }];
3271
3276
  }
3272
- function blockUnsafeOperationsPlugin(options = {}) {
3277
+ function isConfigSwitch(arg) {
3278
+ return typeof arg === "string" && arg.trim().toLowerCase() === "-c";
3279
+ }
3280
+ function preventProtocolOverride(arg, next) {
3281
+ if (!isConfigSwitch(arg)) return;
3282
+ if (!/^\s*protocol(.[a-z]+)?.allow/.test(next)) return;
3283
+ throw new GitPluginError(void 0, "unsafe", "Configuring protocol.allow is not permitted without enabling allowUnsafeExtProtocol");
3284
+ }
3285
+ function preventUploadPack(arg, method) {
3286
+ if (/^\s*--(upload|receive)-pack/.test(arg)) throw new GitPluginError(void 0, "unsafe", `Use of --upload-pack or --receive-pack is not permitted without enabling allowUnsafePack`);
3287
+ if (method === "clone" && /^\s*-u\b/.test(arg)) throw new GitPluginError(void 0, "unsafe", `Use of clone with option -u is not permitted without enabling allowUnsafePack`);
3288
+ if (method === "push" && /^\s*--exec\b/.test(arg)) throw new GitPluginError(void 0, "unsafe", `Use of push with option --exec is not permitted without enabling allowUnsafePack`);
3289
+ }
3290
+ function blockUnsafeOperationsPlugin({ allowUnsafeProtocolOverride = false, allowUnsafePack = false } = {}) {
3273
3291
  return {
3274
3292
  type: "spawn.args",
3275
- action(args, { env }) {
3276
- for (const vulnerability of ne(args, env)) if (options[vulnerability.category] !== true) throw new GitPluginError(void 0, "unsafe", vulnerability.message);
3293
+ action(args, context) {
3294
+ args.forEach((current, index) => {
3295
+ const next = index < args.length ? args[index + 1] : "";
3296
+ allowUnsafeProtocolOverride || preventProtocolOverride(current, next);
3297
+ allowUnsafePack || preventUploadPack(current, context.method);
3298
+ });
3277
3299
  return args;
3278
3300
  }
3279
3301
  };
@@ -3346,7 +3368,7 @@ init_utils();
3346
3368
  var WRONG_NUMBER_ERR = `Invalid value supplied for custom binary, requires a single string or an array containing either one or two strings`;
3347
3369
  var WRONG_CHARS_ERR = `Invalid value supplied for custom binary, restricted characters must be removed or supply the unsafe.allowUnsafeCustomBinary option`;
3348
3370
  function isBadArgument(arg) {
3349
- return !arg || !/^([a-z]:)?([a-z0-9/.\\_~-]+)$/i.test(arg);
3371
+ return !arg || !/^([a-z]:)?([a-z0-9/.\\_-]+)$/i.test(arg);
3350
3372
  }
3351
3373
  function toBinaryConfig(input, allowUnsafe) {
3352
3374
  if (input.length < 1 || input.length > 2) throw new GitPluginError(void 0, "binary", WRONG_NUMBER_ERR);
@@ -3508,6 +3530,7 @@ function timeoutPlugin({ block, stdErr = true, stdOut = true }) {
3508
3530
  }
3509
3531
  };
3510
3532
  }
3533
+ init_pathspec();
3511
3534
  function suffixPathsPlugin() {
3512
3535
  return {
3513
3536
  type: "spawn.args",
@@ -3519,12 +3542,12 @@ function suffixPathsPlugin() {
3519
3542
  }
3520
3543
  for (let i = 0; i < data.length; i++) {
3521
3544
  const param = data[i];
3522
- if (r(param)) {
3523
- append2(o(param));
3545
+ if (isPathSpec(param)) {
3546
+ append2(toPaths(param));
3524
3547
  continue;
3525
3548
  }
3526
3549
  if (param === "--") {
3527
- append2(data.slice(i + 1).flatMap((item) => r(item) && o(item) || item));
3550
+ append2(data.slice(i + 1).flatMap((item) => isPathSpec(item) && toPaths(item) || item));
3528
3551
  break;
3529
3552
  }
3530
3553
  prefix.push(param);
@@ -3545,12 +3568,12 @@ function gitInstanceFactory(baseDir, options) {
3545
3568
  if (!folderExists(config.baseDir)) throw new GitConstructError(config, `Cannot use simple-git on a directory that does not exist`);
3546
3569
  if (Array.isArray(config.config)) plugins.add(commandConfigPrefixingPlugin(config.config));
3547
3570
  plugins.add(blockUnsafeOperationsPlugin(config.unsafe));
3571
+ plugins.add(suffixPathsPlugin());
3548
3572
  plugins.add(completionDetectionPlugin(config.completion));
3549
3573
  config.abort && plugins.add(abortPlugin(config.abort));
3550
3574
  config.progress && plugins.add(progressMonitorPlugin(config.progress));
3551
3575
  config.timeout && plugins.add(timeoutPlugin(config.timeout));
3552
3576
  config.spawnOptions && plugins.add(spawnOptionsPlugin(config.spawnOptions));
3553
- plugins.add(suffixPathsPlugin());
3554
3577
  plugins.add(errorDetectionPlugin(errorDetectionHandler(true)));
3555
3578
  config.errors && plugins.add(errorDetectionPlugin(config.errors));
3556
3579
  customBinaryPlugin(plugins, config.binary, config.unsafe?.allowUnsafeCustomBinary);
@@ -3558,4 +3581,4 @@ function gitInstanceFactory(baseDir, options) {
3558
3581
  }
3559
3582
  init_git_response_error();
3560
3583
  var esm_default = gitInstanceFactory;
3561
- export { esm_default };
3584
+ export { esm_default as t };
@@ -11,4 +11,4 @@ const xdgDataDirectories = (env.XDG_DATA_DIRS || "/usr/local/share/:/usr/share/"
11
11
  if (xdgData) xdgDataDirectories.unshift(xdgData);
12
12
  const xdgConfigDirectories = (env.XDG_CONFIG_DIRS || "/etc/xdg").split(":");
13
13
  if (xdgConfig) xdgConfigDirectories.unshift(xdgConfig);
14
- export { xdgConfig };
14
+ export { xdgConfig as t };
@@ -5,7 +5,7 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
5
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
6
  var __getProtoOf = Object.getPrototypeOf;
7
7
  var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __commonJSMin = (cb, mod) => () => (mod || (cb((mod = { exports: {} }).exports, mod), cb = null), mod.exports);
8
+ var __commonJSMin = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
9
9
  var __copyProps = (to, from, except, desc) => {
10
10
  if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
11
11
  key = keys[i];
@@ -21,4 +21,4 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
21
21
  enumerable: true
22
22
  }) : target, mod));
23
23
  var __require = /* @__PURE__ */ createRequire(import.meta.url);
24
- export { __commonJSMin, __require, __toESM };
24
+ export { __require as n, __toESM as r, __commonJSMin as t };