workshell 0.4.0 → 0.5.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/README.md +75 -38
- package/dist/index.js +1566 -52
- package/package.json +3 -1
package/dist/index.js
CHANGED
|
@@ -97,6 +97,1524 @@ var require_picocolors = __commonJS({
|
|
|
97
97
|
}
|
|
98
98
|
});
|
|
99
99
|
|
|
100
|
+
// node_modules/.pnpm/picomatch@4.0.3/node_modules/picomatch/lib/constants.js
|
|
101
|
+
var require_constants = __commonJS({
|
|
102
|
+
"node_modules/.pnpm/picomatch@4.0.3/node_modules/picomatch/lib/constants.js"(exports, module) {
|
|
103
|
+
"use strict";
|
|
104
|
+
var WIN_SLASH = "\\\\/";
|
|
105
|
+
var WIN_NO_SLASH = `[^${WIN_SLASH}]`;
|
|
106
|
+
var DOT_LITERAL = "\\.";
|
|
107
|
+
var PLUS_LITERAL = "\\+";
|
|
108
|
+
var QMARK_LITERAL = "\\?";
|
|
109
|
+
var SLASH_LITERAL = "\\/";
|
|
110
|
+
var ONE_CHAR = "(?=.)";
|
|
111
|
+
var QMARK = "[^/]";
|
|
112
|
+
var END_ANCHOR = `(?:${SLASH_LITERAL}|$)`;
|
|
113
|
+
var START_ANCHOR = `(?:^|${SLASH_LITERAL})`;
|
|
114
|
+
var DOTS_SLASH = `${DOT_LITERAL}{1,2}${END_ANCHOR}`;
|
|
115
|
+
var NO_DOT = `(?!${DOT_LITERAL})`;
|
|
116
|
+
var NO_DOTS = `(?!${START_ANCHOR}${DOTS_SLASH})`;
|
|
117
|
+
var NO_DOT_SLASH = `(?!${DOT_LITERAL}{0,1}${END_ANCHOR})`;
|
|
118
|
+
var NO_DOTS_SLASH = `(?!${DOTS_SLASH})`;
|
|
119
|
+
var QMARK_NO_DOT = `[^.${SLASH_LITERAL}]`;
|
|
120
|
+
var STAR = `${QMARK}*?`;
|
|
121
|
+
var SEP = "/";
|
|
122
|
+
var POSIX_CHARS = {
|
|
123
|
+
DOT_LITERAL,
|
|
124
|
+
PLUS_LITERAL,
|
|
125
|
+
QMARK_LITERAL,
|
|
126
|
+
SLASH_LITERAL,
|
|
127
|
+
ONE_CHAR,
|
|
128
|
+
QMARK,
|
|
129
|
+
END_ANCHOR,
|
|
130
|
+
DOTS_SLASH,
|
|
131
|
+
NO_DOT,
|
|
132
|
+
NO_DOTS,
|
|
133
|
+
NO_DOT_SLASH,
|
|
134
|
+
NO_DOTS_SLASH,
|
|
135
|
+
QMARK_NO_DOT,
|
|
136
|
+
STAR,
|
|
137
|
+
START_ANCHOR,
|
|
138
|
+
SEP
|
|
139
|
+
};
|
|
140
|
+
var WINDOWS_CHARS = {
|
|
141
|
+
...POSIX_CHARS,
|
|
142
|
+
SLASH_LITERAL: `[${WIN_SLASH}]`,
|
|
143
|
+
QMARK: WIN_NO_SLASH,
|
|
144
|
+
STAR: `${WIN_NO_SLASH}*?`,
|
|
145
|
+
DOTS_SLASH: `${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$)`,
|
|
146
|
+
NO_DOT: `(?!${DOT_LITERAL})`,
|
|
147
|
+
NO_DOTS: `(?!(?:^|[${WIN_SLASH}])${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`,
|
|
148
|
+
NO_DOT_SLASH: `(?!${DOT_LITERAL}{0,1}(?:[${WIN_SLASH}]|$))`,
|
|
149
|
+
NO_DOTS_SLASH: `(?!${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`,
|
|
150
|
+
QMARK_NO_DOT: `[^.${WIN_SLASH}]`,
|
|
151
|
+
START_ANCHOR: `(?:^|[${WIN_SLASH}])`,
|
|
152
|
+
END_ANCHOR: `(?:[${WIN_SLASH}]|$)`,
|
|
153
|
+
SEP: "\\"
|
|
154
|
+
};
|
|
155
|
+
var POSIX_REGEX_SOURCE = {
|
|
156
|
+
alnum: "a-zA-Z0-9",
|
|
157
|
+
alpha: "a-zA-Z",
|
|
158
|
+
ascii: "\\x00-\\x7F",
|
|
159
|
+
blank: " \\t",
|
|
160
|
+
cntrl: "\\x00-\\x1F\\x7F",
|
|
161
|
+
digit: "0-9",
|
|
162
|
+
graph: "\\x21-\\x7E",
|
|
163
|
+
lower: "a-z",
|
|
164
|
+
print: "\\x20-\\x7E ",
|
|
165
|
+
punct: "\\-!\"#$%&'()\\*+,./:;<=>?@[\\]^_`{|}~",
|
|
166
|
+
space: " \\t\\r\\n\\v\\f",
|
|
167
|
+
upper: "A-Z",
|
|
168
|
+
word: "A-Za-z0-9_",
|
|
169
|
+
xdigit: "A-Fa-f0-9"
|
|
170
|
+
};
|
|
171
|
+
module.exports = {
|
|
172
|
+
MAX_LENGTH: 1024 * 64,
|
|
173
|
+
POSIX_REGEX_SOURCE,
|
|
174
|
+
// regular expressions
|
|
175
|
+
REGEX_BACKSLASH: /\\(?![*+?^${}(|)[\]])/g,
|
|
176
|
+
REGEX_NON_SPECIAL_CHARS: /^[^@![\].,$*+?^{}()|\\/]+/,
|
|
177
|
+
REGEX_SPECIAL_CHARS: /[-*+?.^${}(|)[\]]/,
|
|
178
|
+
REGEX_SPECIAL_CHARS_BACKREF: /(\\?)((\W)(\3*))/g,
|
|
179
|
+
REGEX_SPECIAL_CHARS_GLOBAL: /([-*+?.^${}(|)[\]])/g,
|
|
180
|
+
REGEX_REMOVE_BACKSLASH: /(?:\[.*?[^\\]\]|\\(?=.))/g,
|
|
181
|
+
// Replace globs with equivalent patterns to reduce parsing time.
|
|
182
|
+
REPLACEMENTS: {
|
|
183
|
+
__proto__: null,
|
|
184
|
+
"***": "*",
|
|
185
|
+
"**/**": "**",
|
|
186
|
+
"**/**/**": "**"
|
|
187
|
+
},
|
|
188
|
+
// Digits
|
|
189
|
+
CHAR_0: 48,
|
|
190
|
+
/* 0 */
|
|
191
|
+
CHAR_9: 57,
|
|
192
|
+
/* 9 */
|
|
193
|
+
// Alphabet chars.
|
|
194
|
+
CHAR_UPPERCASE_A: 65,
|
|
195
|
+
/* A */
|
|
196
|
+
CHAR_LOWERCASE_A: 97,
|
|
197
|
+
/* a */
|
|
198
|
+
CHAR_UPPERCASE_Z: 90,
|
|
199
|
+
/* Z */
|
|
200
|
+
CHAR_LOWERCASE_Z: 122,
|
|
201
|
+
/* z */
|
|
202
|
+
CHAR_LEFT_PARENTHESES: 40,
|
|
203
|
+
/* ( */
|
|
204
|
+
CHAR_RIGHT_PARENTHESES: 41,
|
|
205
|
+
/* ) */
|
|
206
|
+
CHAR_ASTERISK: 42,
|
|
207
|
+
/* * */
|
|
208
|
+
// Non-alphabetic chars.
|
|
209
|
+
CHAR_AMPERSAND: 38,
|
|
210
|
+
/* & */
|
|
211
|
+
CHAR_AT: 64,
|
|
212
|
+
/* @ */
|
|
213
|
+
CHAR_BACKWARD_SLASH: 92,
|
|
214
|
+
/* \ */
|
|
215
|
+
CHAR_CARRIAGE_RETURN: 13,
|
|
216
|
+
/* \r */
|
|
217
|
+
CHAR_CIRCUMFLEX_ACCENT: 94,
|
|
218
|
+
/* ^ */
|
|
219
|
+
CHAR_COLON: 58,
|
|
220
|
+
/* : */
|
|
221
|
+
CHAR_COMMA: 44,
|
|
222
|
+
/* , */
|
|
223
|
+
CHAR_DOT: 46,
|
|
224
|
+
/* . */
|
|
225
|
+
CHAR_DOUBLE_QUOTE: 34,
|
|
226
|
+
/* " */
|
|
227
|
+
CHAR_EQUAL: 61,
|
|
228
|
+
/* = */
|
|
229
|
+
CHAR_EXCLAMATION_MARK: 33,
|
|
230
|
+
/* ! */
|
|
231
|
+
CHAR_FORM_FEED: 12,
|
|
232
|
+
/* \f */
|
|
233
|
+
CHAR_FORWARD_SLASH: 47,
|
|
234
|
+
/* / */
|
|
235
|
+
CHAR_GRAVE_ACCENT: 96,
|
|
236
|
+
/* ` */
|
|
237
|
+
CHAR_HASH: 35,
|
|
238
|
+
/* # */
|
|
239
|
+
CHAR_HYPHEN_MINUS: 45,
|
|
240
|
+
/* - */
|
|
241
|
+
CHAR_LEFT_ANGLE_BRACKET: 60,
|
|
242
|
+
/* < */
|
|
243
|
+
CHAR_LEFT_CURLY_BRACE: 123,
|
|
244
|
+
/* { */
|
|
245
|
+
CHAR_LEFT_SQUARE_BRACKET: 91,
|
|
246
|
+
/* [ */
|
|
247
|
+
CHAR_LINE_FEED: 10,
|
|
248
|
+
/* \n */
|
|
249
|
+
CHAR_NO_BREAK_SPACE: 160,
|
|
250
|
+
/* \u00A0 */
|
|
251
|
+
CHAR_PERCENT: 37,
|
|
252
|
+
/* % */
|
|
253
|
+
CHAR_PLUS: 43,
|
|
254
|
+
/* + */
|
|
255
|
+
CHAR_QUESTION_MARK: 63,
|
|
256
|
+
/* ? */
|
|
257
|
+
CHAR_RIGHT_ANGLE_BRACKET: 62,
|
|
258
|
+
/* > */
|
|
259
|
+
CHAR_RIGHT_CURLY_BRACE: 125,
|
|
260
|
+
/* } */
|
|
261
|
+
CHAR_RIGHT_SQUARE_BRACKET: 93,
|
|
262
|
+
/* ] */
|
|
263
|
+
CHAR_SEMICOLON: 59,
|
|
264
|
+
/* ; */
|
|
265
|
+
CHAR_SINGLE_QUOTE: 39,
|
|
266
|
+
/* ' */
|
|
267
|
+
CHAR_SPACE: 32,
|
|
268
|
+
/* */
|
|
269
|
+
CHAR_TAB: 9,
|
|
270
|
+
/* \t */
|
|
271
|
+
CHAR_UNDERSCORE: 95,
|
|
272
|
+
/* _ */
|
|
273
|
+
CHAR_VERTICAL_LINE: 124,
|
|
274
|
+
/* | */
|
|
275
|
+
CHAR_ZERO_WIDTH_NOBREAK_SPACE: 65279,
|
|
276
|
+
/* \uFEFF */
|
|
277
|
+
/**
|
|
278
|
+
* Create EXTGLOB_CHARS
|
|
279
|
+
*/
|
|
280
|
+
extglobChars(chars) {
|
|
281
|
+
return {
|
|
282
|
+
"!": { type: "negate", open: "(?:(?!(?:", close: `))${chars.STAR})` },
|
|
283
|
+
"?": { type: "qmark", open: "(?:", close: ")?" },
|
|
284
|
+
"+": { type: "plus", open: "(?:", close: ")+" },
|
|
285
|
+
"*": { type: "star", open: "(?:", close: ")*" },
|
|
286
|
+
"@": { type: "at", open: "(?:", close: ")" }
|
|
287
|
+
};
|
|
288
|
+
},
|
|
289
|
+
/**
|
|
290
|
+
* Create GLOB_CHARS
|
|
291
|
+
*/
|
|
292
|
+
globChars(win32) {
|
|
293
|
+
return win32 === true ? WINDOWS_CHARS : POSIX_CHARS;
|
|
294
|
+
}
|
|
295
|
+
};
|
|
296
|
+
}
|
|
297
|
+
});
|
|
298
|
+
|
|
299
|
+
// node_modules/.pnpm/picomatch@4.0.3/node_modules/picomatch/lib/utils.js
|
|
300
|
+
var require_utils = __commonJS({
|
|
301
|
+
"node_modules/.pnpm/picomatch@4.0.3/node_modules/picomatch/lib/utils.js"(exports) {
|
|
302
|
+
"use strict";
|
|
303
|
+
var {
|
|
304
|
+
REGEX_BACKSLASH,
|
|
305
|
+
REGEX_REMOVE_BACKSLASH,
|
|
306
|
+
REGEX_SPECIAL_CHARS,
|
|
307
|
+
REGEX_SPECIAL_CHARS_GLOBAL
|
|
308
|
+
} = require_constants();
|
|
309
|
+
exports.isObject = (val) => val !== null && typeof val === "object" && !Array.isArray(val);
|
|
310
|
+
exports.hasRegexChars = (str) => REGEX_SPECIAL_CHARS.test(str);
|
|
311
|
+
exports.isRegexChar = (str) => str.length === 1 && exports.hasRegexChars(str);
|
|
312
|
+
exports.escapeRegex = (str) => str.replace(REGEX_SPECIAL_CHARS_GLOBAL, "\\$1");
|
|
313
|
+
exports.toPosixSlashes = (str) => str.replace(REGEX_BACKSLASH, "/");
|
|
314
|
+
exports.isWindows = () => {
|
|
315
|
+
if (typeof navigator !== "undefined" && navigator.platform) {
|
|
316
|
+
const platform = navigator.platform.toLowerCase();
|
|
317
|
+
return platform === "win32" || platform === "windows";
|
|
318
|
+
}
|
|
319
|
+
if (typeof process !== "undefined" && process.platform) {
|
|
320
|
+
return process.platform === "win32";
|
|
321
|
+
}
|
|
322
|
+
return false;
|
|
323
|
+
};
|
|
324
|
+
exports.removeBackslashes = (str) => {
|
|
325
|
+
return str.replace(REGEX_REMOVE_BACKSLASH, (match2) => {
|
|
326
|
+
return match2 === "\\" ? "" : match2;
|
|
327
|
+
});
|
|
328
|
+
};
|
|
329
|
+
exports.escapeLast = (input, char, lastIdx) => {
|
|
330
|
+
const idx = input.lastIndexOf(char, lastIdx);
|
|
331
|
+
if (idx === -1) return input;
|
|
332
|
+
if (input[idx - 1] === "\\") return exports.escapeLast(input, char, idx - 1);
|
|
333
|
+
return `${input.slice(0, idx)}\\${input.slice(idx)}`;
|
|
334
|
+
};
|
|
335
|
+
exports.removePrefix = (input, state = {}) => {
|
|
336
|
+
let output = input;
|
|
337
|
+
if (output.startsWith("./")) {
|
|
338
|
+
output = output.slice(2);
|
|
339
|
+
state.prefix = "./";
|
|
340
|
+
}
|
|
341
|
+
return output;
|
|
342
|
+
};
|
|
343
|
+
exports.wrapOutput = (input, state = {}, options = {}) => {
|
|
344
|
+
const prepend = options.contains ? "" : "^";
|
|
345
|
+
const append = options.contains ? "" : "$";
|
|
346
|
+
let output = `${prepend}(?:${input})${append}`;
|
|
347
|
+
if (state.negated === true) {
|
|
348
|
+
output = `(?:^(?!${output}).*$)`;
|
|
349
|
+
}
|
|
350
|
+
return output;
|
|
351
|
+
};
|
|
352
|
+
exports.basename = (path, { windows } = {}) => {
|
|
353
|
+
const segs = path.split(windows ? /[\\/]/ : "/");
|
|
354
|
+
const last = segs[segs.length - 1];
|
|
355
|
+
if (last === "") {
|
|
356
|
+
return segs[segs.length - 2];
|
|
357
|
+
}
|
|
358
|
+
return last;
|
|
359
|
+
};
|
|
360
|
+
}
|
|
361
|
+
});
|
|
362
|
+
|
|
363
|
+
// node_modules/.pnpm/picomatch@4.0.3/node_modules/picomatch/lib/scan.js
|
|
364
|
+
var require_scan = __commonJS({
|
|
365
|
+
"node_modules/.pnpm/picomatch@4.0.3/node_modules/picomatch/lib/scan.js"(exports, module) {
|
|
366
|
+
"use strict";
|
|
367
|
+
var utils = require_utils();
|
|
368
|
+
var {
|
|
369
|
+
CHAR_ASTERISK,
|
|
370
|
+
/* * */
|
|
371
|
+
CHAR_AT,
|
|
372
|
+
/* @ */
|
|
373
|
+
CHAR_BACKWARD_SLASH,
|
|
374
|
+
/* \ */
|
|
375
|
+
CHAR_COMMA,
|
|
376
|
+
/* , */
|
|
377
|
+
CHAR_DOT,
|
|
378
|
+
/* . */
|
|
379
|
+
CHAR_EXCLAMATION_MARK,
|
|
380
|
+
/* ! */
|
|
381
|
+
CHAR_FORWARD_SLASH,
|
|
382
|
+
/* / */
|
|
383
|
+
CHAR_LEFT_CURLY_BRACE,
|
|
384
|
+
/* { */
|
|
385
|
+
CHAR_LEFT_PARENTHESES,
|
|
386
|
+
/* ( */
|
|
387
|
+
CHAR_LEFT_SQUARE_BRACKET,
|
|
388
|
+
/* [ */
|
|
389
|
+
CHAR_PLUS,
|
|
390
|
+
/* + */
|
|
391
|
+
CHAR_QUESTION_MARK,
|
|
392
|
+
/* ? */
|
|
393
|
+
CHAR_RIGHT_CURLY_BRACE,
|
|
394
|
+
/* } */
|
|
395
|
+
CHAR_RIGHT_PARENTHESES,
|
|
396
|
+
/* ) */
|
|
397
|
+
CHAR_RIGHT_SQUARE_BRACKET
|
|
398
|
+
/* ] */
|
|
399
|
+
} = require_constants();
|
|
400
|
+
var isPathSeparator = (code) => {
|
|
401
|
+
return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH;
|
|
402
|
+
};
|
|
403
|
+
var depth = (token) => {
|
|
404
|
+
if (token.isPrefix !== true) {
|
|
405
|
+
token.depth = token.isGlobstar ? Infinity : 1;
|
|
406
|
+
}
|
|
407
|
+
};
|
|
408
|
+
var scan = (input, options) => {
|
|
409
|
+
const opts = options || {};
|
|
410
|
+
const length = input.length - 1;
|
|
411
|
+
const scanToEnd = opts.parts === true || opts.scanToEnd === true;
|
|
412
|
+
const slashes = [];
|
|
413
|
+
const tokens = [];
|
|
414
|
+
const parts = [];
|
|
415
|
+
let str = input;
|
|
416
|
+
let index = -1;
|
|
417
|
+
let start = 0;
|
|
418
|
+
let lastIndex = 0;
|
|
419
|
+
let isBrace = false;
|
|
420
|
+
let isBracket = false;
|
|
421
|
+
let isGlob = false;
|
|
422
|
+
let isExtglob = false;
|
|
423
|
+
let isGlobstar = false;
|
|
424
|
+
let braceEscaped = false;
|
|
425
|
+
let backslashes = false;
|
|
426
|
+
let negated = false;
|
|
427
|
+
let negatedExtglob = false;
|
|
428
|
+
let finished = false;
|
|
429
|
+
let braces = 0;
|
|
430
|
+
let prev;
|
|
431
|
+
let code;
|
|
432
|
+
let token = { value: "", depth: 0, isGlob: false };
|
|
433
|
+
const eos = () => index >= length;
|
|
434
|
+
const peek = () => str.charCodeAt(index + 1);
|
|
435
|
+
const advance = () => {
|
|
436
|
+
prev = code;
|
|
437
|
+
return str.charCodeAt(++index);
|
|
438
|
+
};
|
|
439
|
+
while (index < length) {
|
|
440
|
+
code = advance();
|
|
441
|
+
let next;
|
|
442
|
+
if (code === CHAR_BACKWARD_SLASH) {
|
|
443
|
+
backslashes = token.backslashes = true;
|
|
444
|
+
code = advance();
|
|
445
|
+
if (code === CHAR_LEFT_CURLY_BRACE) {
|
|
446
|
+
braceEscaped = true;
|
|
447
|
+
}
|
|
448
|
+
continue;
|
|
449
|
+
}
|
|
450
|
+
if (braceEscaped === true || code === CHAR_LEFT_CURLY_BRACE) {
|
|
451
|
+
braces++;
|
|
452
|
+
while (eos() !== true && (code = advance())) {
|
|
453
|
+
if (code === CHAR_BACKWARD_SLASH) {
|
|
454
|
+
backslashes = token.backslashes = true;
|
|
455
|
+
advance();
|
|
456
|
+
continue;
|
|
457
|
+
}
|
|
458
|
+
if (code === CHAR_LEFT_CURLY_BRACE) {
|
|
459
|
+
braces++;
|
|
460
|
+
continue;
|
|
461
|
+
}
|
|
462
|
+
if (braceEscaped !== true && code === CHAR_DOT && (code = advance()) === CHAR_DOT) {
|
|
463
|
+
isBrace = token.isBrace = true;
|
|
464
|
+
isGlob = token.isGlob = true;
|
|
465
|
+
finished = true;
|
|
466
|
+
if (scanToEnd === true) {
|
|
467
|
+
continue;
|
|
468
|
+
}
|
|
469
|
+
break;
|
|
470
|
+
}
|
|
471
|
+
if (braceEscaped !== true && code === CHAR_COMMA) {
|
|
472
|
+
isBrace = token.isBrace = true;
|
|
473
|
+
isGlob = token.isGlob = true;
|
|
474
|
+
finished = true;
|
|
475
|
+
if (scanToEnd === true) {
|
|
476
|
+
continue;
|
|
477
|
+
}
|
|
478
|
+
break;
|
|
479
|
+
}
|
|
480
|
+
if (code === CHAR_RIGHT_CURLY_BRACE) {
|
|
481
|
+
braces--;
|
|
482
|
+
if (braces === 0) {
|
|
483
|
+
braceEscaped = false;
|
|
484
|
+
isBrace = token.isBrace = true;
|
|
485
|
+
finished = true;
|
|
486
|
+
break;
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
if (scanToEnd === true) {
|
|
491
|
+
continue;
|
|
492
|
+
}
|
|
493
|
+
break;
|
|
494
|
+
}
|
|
495
|
+
if (code === CHAR_FORWARD_SLASH) {
|
|
496
|
+
slashes.push(index);
|
|
497
|
+
tokens.push(token);
|
|
498
|
+
token = { value: "", depth: 0, isGlob: false };
|
|
499
|
+
if (finished === true) continue;
|
|
500
|
+
if (prev === CHAR_DOT && index === start + 1) {
|
|
501
|
+
start += 2;
|
|
502
|
+
continue;
|
|
503
|
+
}
|
|
504
|
+
lastIndex = index + 1;
|
|
505
|
+
continue;
|
|
506
|
+
}
|
|
507
|
+
if (opts.noext !== true) {
|
|
508
|
+
const isExtglobChar = code === CHAR_PLUS || code === CHAR_AT || code === CHAR_ASTERISK || code === CHAR_QUESTION_MARK || code === CHAR_EXCLAMATION_MARK;
|
|
509
|
+
if (isExtglobChar === true && peek() === CHAR_LEFT_PARENTHESES) {
|
|
510
|
+
isGlob = token.isGlob = true;
|
|
511
|
+
isExtglob = token.isExtglob = true;
|
|
512
|
+
finished = true;
|
|
513
|
+
if (code === CHAR_EXCLAMATION_MARK && index === start) {
|
|
514
|
+
negatedExtglob = true;
|
|
515
|
+
}
|
|
516
|
+
if (scanToEnd === true) {
|
|
517
|
+
while (eos() !== true && (code = advance())) {
|
|
518
|
+
if (code === CHAR_BACKWARD_SLASH) {
|
|
519
|
+
backslashes = token.backslashes = true;
|
|
520
|
+
code = advance();
|
|
521
|
+
continue;
|
|
522
|
+
}
|
|
523
|
+
if (code === CHAR_RIGHT_PARENTHESES) {
|
|
524
|
+
isGlob = token.isGlob = true;
|
|
525
|
+
finished = true;
|
|
526
|
+
break;
|
|
527
|
+
}
|
|
528
|
+
}
|
|
529
|
+
continue;
|
|
530
|
+
}
|
|
531
|
+
break;
|
|
532
|
+
}
|
|
533
|
+
}
|
|
534
|
+
if (code === CHAR_ASTERISK) {
|
|
535
|
+
if (prev === CHAR_ASTERISK) isGlobstar = token.isGlobstar = true;
|
|
536
|
+
isGlob = token.isGlob = true;
|
|
537
|
+
finished = true;
|
|
538
|
+
if (scanToEnd === true) {
|
|
539
|
+
continue;
|
|
540
|
+
}
|
|
541
|
+
break;
|
|
542
|
+
}
|
|
543
|
+
if (code === CHAR_QUESTION_MARK) {
|
|
544
|
+
isGlob = token.isGlob = true;
|
|
545
|
+
finished = true;
|
|
546
|
+
if (scanToEnd === true) {
|
|
547
|
+
continue;
|
|
548
|
+
}
|
|
549
|
+
break;
|
|
550
|
+
}
|
|
551
|
+
if (code === CHAR_LEFT_SQUARE_BRACKET) {
|
|
552
|
+
while (eos() !== true && (next = advance())) {
|
|
553
|
+
if (next === CHAR_BACKWARD_SLASH) {
|
|
554
|
+
backslashes = token.backslashes = true;
|
|
555
|
+
advance();
|
|
556
|
+
continue;
|
|
557
|
+
}
|
|
558
|
+
if (next === CHAR_RIGHT_SQUARE_BRACKET) {
|
|
559
|
+
isBracket = token.isBracket = true;
|
|
560
|
+
isGlob = token.isGlob = true;
|
|
561
|
+
finished = true;
|
|
562
|
+
break;
|
|
563
|
+
}
|
|
564
|
+
}
|
|
565
|
+
if (scanToEnd === true) {
|
|
566
|
+
continue;
|
|
567
|
+
}
|
|
568
|
+
break;
|
|
569
|
+
}
|
|
570
|
+
if (opts.nonegate !== true && code === CHAR_EXCLAMATION_MARK && index === start) {
|
|
571
|
+
negated = token.negated = true;
|
|
572
|
+
start++;
|
|
573
|
+
continue;
|
|
574
|
+
}
|
|
575
|
+
if (opts.noparen !== true && code === CHAR_LEFT_PARENTHESES) {
|
|
576
|
+
isGlob = token.isGlob = true;
|
|
577
|
+
if (scanToEnd === true) {
|
|
578
|
+
while (eos() !== true && (code = advance())) {
|
|
579
|
+
if (code === CHAR_LEFT_PARENTHESES) {
|
|
580
|
+
backslashes = token.backslashes = true;
|
|
581
|
+
code = advance();
|
|
582
|
+
continue;
|
|
583
|
+
}
|
|
584
|
+
if (code === CHAR_RIGHT_PARENTHESES) {
|
|
585
|
+
finished = true;
|
|
586
|
+
break;
|
|
587
|
+
}
|
|
588
|
+
}
|
|
589
|
+
continue;
|
|
590
|
+
}
|
|
591
|
+
break;
|
|
592
|
+
}
|
|
593
|
+
if (isGlob === true) {
|
|
594
|
+
finished = true;
|
|
595
|
+
if (scanToEnd === true) {
|
|
596
|
+
continue;
|
|
597
|
+
}
|
|
598
|
+
break;
|
|
599
|
+
}
|
|
600
|
+
}
|
|
601
|
+
if (opts.noext === true) {
|
|
602
|
+
isExtglob = false;
|
|
603
|
+
isGlob = false;
|
|
604
|
+
}
|
|
605
|
+
let base = str;
|
|
606
|
+
let prefix = "";
|
|
607
|
+
let glob = "";
|
|
608
|
+
if (start > 0) {
|
|
609
|
+
prefix = str.slice(0, start);
|
|
610
|
+
str = str.slice(start);
|
|
611
|
+
lastIndex -= start;
|
|
612
|
+
}
|
|
613
|
+
if (base && isGlob === true && lastIndex > 0) {
|
|
614
|
+
base = str.slice(0, lastIndex);
|
|
615
|
+
glob = str.slice(lastIndex);
|
|
616
|
+
} else if (isGlob === true) {
|
|
617
|
+
base = "";
|
|
618
|
+
glob = str;
|
|
619
|
+
} else {
|
|
620
|
+
base = str;
|
|
621
|
+
}
|
|
622
|
+
if (base && base !== "" && base !== "/" && base !== str) {
|
|
623
|
+
if (isPathSeparator(base.charCodeAt(base.length - 1))) {
|
|
624
|
+
base = base.slice(0, -1);
|
|
625
|
+
}
|
|
626
|
+
}
|
|
627
|
+
if (opts.unescape === true) {
|
|
628
|
+
if (glob) glob = utils.removeBackslashes(glob);
|
|
629
|
+
if (base && backslashes === true) {
|
|
630
|
+
base = utils.removeBackslashes(base);
|
|
631
|
+
}
|
|
632
|
+
}
|
|
633
|
+
const state = {
|
|
634
|
+
prefix,
|
|
635
|
+
input,
|
|
636
|
+
start,
|
|
637
|
+
base,
|
|
638
|
+
glob,
|
|
639
|
+
isBrace,
|
|
640
|
+
isBracket,
|
|
641
|
+
isGlob,
|
|
642
|
+
isExtglob,
|
|
643
|
+
isGlobstar,
|
|
644
|
+
negated,
|
|
645
|
+
negatedExtglob
|
|
646
|
+
};
|
|
647
|
+
if (opts.tokens === true) {
|
|
648
|
+
state.maxDepth = 0;
|
|
649
|
+
if (!isPathSeparator(code)) {
|
|
650
|
+
tokens.push(token);
|
|
651
|
+
}
|
|
652
|
+
state.tokens = tokens;
|
|
653
|
+
}
|
|
654
|
+
if (opts.parts === true || opts.tokens === true) {
|
|
655
|
+
let prevIndex;
|
|
656
|
+
for (let idx = 0; idx < slashes.length; idx++) {
|
|
657
|
+
const n = prevIndex ? prevIndex + 1 : start;
|
|
658
|
+
const i = slashes[idx];
|
|
659
|
+
const value = input.slice(n, i);
|
|
660
|
+
if (opts.tokens) {
|
|
661
|
+
if (idx === 0 && start !== 0) {
|
|
662
|
+
tokens[idx].isPrefix = true;
|
|
663
|
+
tokens[idx].value = prefix;
|
|
664
|
+
} else {
|
|
665
|
+
tokens[idx].value = value;
|
|
666
|
+
}
|
|
667
|
+
depth(tokens[idx]);
|
|
668
|
+
state.maxDepth += tokens[idx].depth;
|
|
669
|
+
}
|
|
670
|
+
if (idx !== 0 || value !== "") {
|
|
671
|
+
parts.push(value);
|
|
672
|
+
}
|
|
673
|
+
prevIndex = i;
|
|
674
|
+
}
|
|
675
|
+
if (prevIndex && prevIndex + 1 < input.length) {
|
|
676
|
+
const value = input.slice(prevIndex + 1);
|
|
677
|
+
parts.push(value);
|
|
678
|
+
if (opts.tokens) {
|
|
679
|
+
tokens[tokens.length - 1].value = value;
|
|
680
|
+
depth(tokens[tokens.length - 1]);
|
|
681
|
+
state.maxDepth += tokens[tokens.length - 1].depth;
|
|
682
|
+
}
|
|
683
|
+
}
|
|
684
|
+
state.slashes = slashes;
|
|
685
|
+
state.parts = parts;
|
|
686
|
+
}
|
|
687
|
+
return state;
|
|
688
|
+
};
|
|
689
|
+
module.exports = scan;
|
|
690
|
+
}
|
|
691
|
+
});
|
|
692
|
+
|
|
693
|
+
// node_modules/.pnpm/picomatch@4.0.3/node_modules/picomatch/lib/parse.js
|
|
694
|
+
var require_parse = __commonJS({
|
|
695
|
+
"node_modules/.pnpm/picomatch@4.0.3/node_modules/picomatch/lib/parse.js"(exports, module) {
|
|
696
|
+
"use strict";
|
|
697
|
+
var constants = require_constants();
|
|
698
|
+
var utils = require_utils();
|
|
699
|
+
var {
|
|
700
|
+
MAX_LENGTH,
|
|
701
|
+
POSIX_REGEX_SOURCE,
|
|
702
|
+
REGEX_NON_SPECIAL_CHARS,
|
|
703
|
+
REGEX_SPECIAL_CHARS_BACKREF,
|
|
704
|
+
REPLACEMENTS
|
|
705
|
+
} = constants;
|
|
706
|
+
var expandRange = (args2, options) => {
|
|
707
|
+
if (typeof options.expandRange === "function") {
|
|
708
|
+
return options.expandRange(...args2, options);
|
|
709
|
+
}
|
|
710
|
+
args2.sort();
|
|
711
|
+
const value = `[${args2.join("-")}]`;
|
|
712
|
+
try {
|
|
713
|
+
new RegExp(value);
|
|
714
|
+
} catch (ex) {
|
|
715
|
+
return args2.map((v) => utils.escapeRegex(v)).join("..");
|
|
716
|
+
}
|
|
717
|
+
return value;
|
|
718
|
+
};
|
|
719
|
+
var syntaxError = (type, char) => {
|
|
720
|
+
return `Missing ${type}: "${char}" - use "\\\\${char}" to match literal characters`;
|
|
721
|
+
};
|
|
722
|
+
var parse2 = (input, options) => {
|
|
723
|
+
if (typeof input !== "string") {
|
|
724
|
+
throw new TypeError("Expected a string");
|
|
725
|
+
}
|
|
726
|
+
input = REPLACEMENTS[input] || input;
|
|
727
|
+
const opts = { ...options };
|
|
728
|
+
const max = typeof opts.maxLength === "number" ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;
|
|
729
|
+
let len = input.length;
|
|
730
|
+
if (len > max) {
|
|
731
|
+
throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`);
|
|
732
|
+
}
|
|
733
|
+
const bos = { type: "bos", value: "", output: opts.prepend || "" };
|
|
734
|
+
const tokens = [bos];
|
|
735
|
+
const capture = opts.capture ? "" : "?:";
|
|
736
|
+
const PLATFORM_CHARS = constants.globChars(opts.windows);
|
|
737
|
+
const EXTGLOB_CHARS = constants.extglobChars(PLATFORM_CHARS);
|
|
738
|
+
const {
|
|
739
|
+
DOT_LITERAL,
|
|
740
|
+
PLUS_LITERAL,
|
|
741
|
+
SLASH_LITERAL,
|
|
742
|
+
ONE_CHAR,
|
|
743
|
+
DOTS_SLASH,
|
|
744
|
+
NO_DOT,
|
|
745
|
+
NO_DOT_SLASH,
|
|
746
|
+
NO_DOTS_SLASH,
|
|
747
|
+
QMARK,
|
|
748
|
+
QMARK_NO_DOT,
|
|
749
|
+
STAR,
|
|
750
|
+
START_ANCHOR
|
|
751
|
+
} = PLATFORM_CHARS;
|
|
752
|
+
const globstar = (opts2) => {
|
|
753
|
+
return `(${capture}(?:(?!${START_ANCHOR}${opts2.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`;
|
|
754
|
+
};
|
|
755
|
+
const nodot = opts.dot ? "" : NO_DOT;
|
|
756
|
+
const qmarkNoDot = opts.dot ? QMARK : QMARK_NO_DOT;
|
|
757
|
+
let star = opts.bash === true ? globstar(opts) : STAR;
|
|
758
|
+
if (opts.capture) {
|
|
759
|
+
star = `(${star})`;
|
|
760
|
+
}
|
|
761
|
+
if (typeof opts.noext === "boolean") {
|
|
762
|
+
opts.noextglob = opts.noext;
|
|
763
|
+
}
|
|
764
|
+
const state = {
|
|
765
|
+
input,
|
|
766
|
+
index: -1,
|
|
767
|
+
start: 0,
|
|
768
|
+
dot: opts.dot === true,
|
|
769
|
+
consumed: "",
|
|
770
|
+
output: "",
|
|
771
|
+
prefix: "",
|
|
772
|
+
backtrack: false,
|
|
773
|
+
negated: false,
|
|
774
|
+
brackets: 0,
|
|
775
|
+
braces: 0,
|
|
776
|
+
parens: 0,
|
|
777
|
+
quotes: 0,
|
|
778
|
+
globstar: false,
|
|
779
|
+
tokens
|
|
780
|
+
};
|
|
781
|
+
input = utils.removePrefix(input, state);
|
|
782
|
+
len = input.length;
|
|
783
|
+
const extglobs = [];
|
|
784
|
+
const braces = [];
|
|
785
|
+
const stack = [];
|
|
786
|
+
let prev = bos;
|
|
787
|
+
let value;
|
|
788
|
+
const eos = () => state.index === len - 1;
|
|
789
|
+
const peek = state.peek = (n = 1) => input[state.index + n];
|
|
790
|
+
const advance = state.advance = () => input[++state.index] || "";
|
|
791
|
+
const remaining = () => input.slice(state.index + 1);
|
|
792
|
+
const consume = (value2 = "", num = 0) => {
|
|
793
|
+
state.consumed += value2;
|
|
794
|
+
state.index += num;
|
|
795
|
+
};
|
|
796
|
+
const append = (token) => {
|
|
797
|
+
state.output += token.output != null ? token.output : token.value;
|
|
798
|
+
consume(token.value);
|
|
799
|
+
};
|
|
800
|
+
const negate = () => {
|
|
801
|
+
let count = 1;
|
|
802
|
+
while (peek() === "!" && (peek(2) !== "(" || peek(3) === "?")) {
|
|
803
|
+
advance();
|
|
804
|
+
state.start++;
|
|
805
|
+
count++;
|
|
806
|
+
}
|
|
807
|
+
if (count % 2 === 0) {
|
|
808
|
+
return false;
|
|
809
|
+
}
|
|
810
|
+
state.negated = true;
|
|
811
|
+
state.start++;
|
|
812
|
+
return true;
|
|
813
|
+
};
|
|
814
|
+
const increment = (type) => {
|
|
815
|
+
state[type]++;
|
|
816
|
+
stack.push(type);
|
|
817
|
+
};
|
|
818
|
+
const decrement = (type) => {
|
|
819
|
+
state[type]--;
|
|
820
|
+
stack.pop();
|
|
821
|
+
};
|
|
822
|
+
const push = (tok) => {
|
|
823
|
+
if (prev.type === "globstar") {
|
|
824
|
+
const isBrace = state.braces > 0 && (tok.type === "comma" || tok.type === "brace");
|
|
825
|
+
const isExtglob = tok.extglob === true || extglobs.length && (tok.type === "pipe" || tok.type === "paren");
|
|
826
|
+
if (tok.type !== "slash" && tok.type !== "paren" && !isBrace && !isExtglob) {
|
|
827
|
+
state.output = state.output.slice(0, -prev.output.length);
|
|
828
|
+
prev.type = "star";
|
|
829
|
+
prev.value = "*";
|
|
830
|
+
prev.output = star;
|
|
831
|
+
state.output += prev.output;
|
|
832
|
+
}
|
|
833
|
+
}
|
|
834
|
+
if (extglobs.length && tok.type !== "paren") {
|
|
835
|
+
extglobs[extglobs.length - 1].inner += tok.value;
|
|
836
|
+
}
|
|
837
|
+
if (tok.value || tok.output) append(tok);
|
|
838
|
+
if (prev && prev.type === "text" && tok.type === "text") {
|
|
839
|
+
prev.output = (prev.output || prev.value) + tok.value;
|
|
840
|
+
prev.value += tok.value;
|
|
841
|
+
return;
|
|
842
|
+
}
|
|
843
|
+
tok.prev = prev;
|
|
844
|
+
tokens.push(tok);
|
|
845
|
+
prev = tok;
|
|
846
|
+
};
|
|
847
|
+
const extglobOpen = (type, value2) => {
|
|
848
|
+
const token = { ...EXTGLOB_CHARS[value2], conditions: 1, inner: "" };
|
|
849
|
+
token.prev = prev;
|
|
850
|
+
token.parens = state.parens;
|
|
851
|
+
token.output = state.output;
|
|
852
|
+
const output = (opts.capture ? "(" : "") + token.open;
|
|
853
|
+
increment("parens");
|
|
854
|
+
push({ type, value: value2, output: state.output ? "" : ONE_CHAR });
|
|
855
|
+
push({ type: "paren", extglob: true, value: advance(), output });
|
|
856
|
+
extglobs.push(token);
|
|
857
|
+
};
|
|
858
|
+
const extglobClose = (token) => {
|
|
859
|
+
let output = token.close + (opts.capture ? ")" : "");
|
|
860
|
+
let rest;
|
|
861
|
+
if (token.type === "negate") {
|
|
862
|
+
let extglobStar = star;
|
|
863
|
+
if (token.inner && token.inner.length > 1 && token.inner.includes("/")) {
|
|
864
|
+
extglobStar = globstar(opts);
|
|
865
|
+
}
|
|
866
|
+
if (extglobStar !== star || eos() || /^\)+$/.test(remaining())) {
|
|
867
|
+
output = token.close = `)$))${extglobStar}`;
|
|
868
|
+
}
|
|
869
|
+
if (token.inner.includes("*") && (rest = remaining()) && /^\.[^\\/.]+$/.test(rest)) {
|
|
870
|
+
const expression = parse2(rest, { ...options, fastpaths: false }).output;
|
|
871
|
+
output = token.close = `)${expression})${extglobStar})`;
|
|
872
|
+
}
|
|
873
|
+
if (token.prev.type === "bos") {
|
|
874
|
+
state.negatedExtglob = true;
|
|
875
|
+
}
|
|
876
|
+
}
|
|
877
|
+
push({ type: "paren", extglob: true, value, output });
|
|
878
|
+
decrement("parens");
|
|
879
|
+
};
|
|
880
|
+
if (opts.fastpaths !== false && !/(^[*!]|[/()[\]{}"])/.test(input)) {
|
|
881
|
+
let backslashes = false;
|
|
882
|
+
let output = input.replace(REGEX_SPECIAL_CHARS_BACKREF, (m, esc, chars, first, rest, index) => {
|
|
883
|
+
if (first === "\\") {
|
|
884
|
+
backslashes = true;
|
|
885
|
+
return m;
|
|
886
|
+
}
|
|
887
|
+
if (first === "?") {
|
|
888
|
+
if (esc) {
|
|
889
|
+
return esc + first + (rest ? QMARK.repeat(rest.length) : "");
|
|
890
|
+
}
|
|
891
|
+
if (index === 0) {
|
|
892
|
+
return qmarkNoDot + (rest ? QMARK.repeat(rest.length) : "");
|
|
893
|
+
}
|
|
894
|
+
return QMARK.repeat(chars.length);
|
|
895
|
+
}
|
|
896
|
+
if (first === ".") {
|
|
897
|
+
return DOT_LITERAL.repeat(chars.length);
|
|
898
|
+
}
|
|
899
|
+
if (first === "*") {
|
|
900
|
+
if (esc) {
|
|
901
|
+
return esc + first + (rest ? star : "");
|
|
902
|
+
}
|
|
903
|
+
return star;
|
|
904
|
+
}
|
|
905
|
+
return esc ? m : `\\${m}`;
|
|
906
|
+
});
|
|
907
|
+
if (backslashes === true) {
|
|
908
|
+
if (opts.unescape === true) {
|
|
909
|
+
output = output.replace(/\\/g, "");
|
|
910
|
+
} else {
|
|
911
|
+
output = output.replace(/\\+/g, (m) => {
|
|
912
|
+
return m.length % 2 === 0 ? "\\\\" : m ? "\\" : "";
|
|
913
|
+
});
|
|
914
|
+
}
|
|
915
|
+
}
|
|
916
|
+
if (output === input && opts.contains === true) {
|
|
917
|
+
state.output = input;
|
|
918
|
+
return state;
|
|
919
|
+
}
|
|
920
|
+
state.output = utils.wrapOutput(output, state, options);
|
|
921
|
+
return state;
|
|
922
|
+
}
|
|
923
|
+
while (!eos()) {
|
|
924
|
+
value = advance();
|
|
925
|
+
if (value === "\0") {
|
|
926
|
+
continue;
|
|
927
|
+
}
|
|
928
|
+
if (value === "\\") {
|
|
929
|
+
const next = peek();
|
|
930
|
+
if (next === "/" && opts.bash !== true) {
|
|
931
|
+
continue;
|
|
932
|
+
}
|
|
933
|
+
if (next === "." || next === ";") {
|
|
934
|
+
continue;
|
|
935
|
+
}
|
|
936
|
+
if (!next) {
|
|
937
|
+
value += "\\";
|
|
938
|
+
push({ type: "text", value });
|
|
939
|
+
continue;
|
|
940
|
+
}
|
|
941
|
+
const match2 = /^\\+/.exec(remaining());
|
|
942
|
+
let slashes = 0;
|
|
943
|
+
if (match2 && match2[0].length > 2) {
|
|
944
|
+
slashes = match2[0].length;
|
|
945
|
+
state.index += slashes;
|
|
946
|
+
if (slashes % 2 !== 0) {
|
|
947
|
+
value += "\\";
|
|
948
|
+
}
|
|
949
|
+
}
|
|
950
|
+
if (opts.unescape === true) {
|
|
951
|
+
value = advance();
|
|
952
|
+
} else {
|
|
953
|
+
value += advance();
|
|
954
|
+
}
|
|
955
|
+
if (state.brackets === 0) {
|
|
956
|
+
push({ type: "text", value });
|
|
957
|
+
continue;
|
|
958
|
+
}
|
|
959
|
+
}
|
|
960
|
+
if (state.brackets > 0 && (value !== "]" || prev.value === "[" || prev.value === "[^")) {
|
|
961
|
+
if (opts.posix !== false && value === ":") {
|
|
962
|
+
const inner = prev.value.slice(1);
|
|
963
|
+
if (inner.includes("[")) {
|
|
964
|
+
prev.posix = true;
|
|
965
|
+
if (inner.includes(":")) {
|
|
966
|
+
const idx = prev.value.lastIndexOf("[");
|
|
967
|
+
const pre = prev.value.slice(0, idx);
|
|
968
|
+
const rest2 = prev.value.slice(idx + 2);
|
|
969
|
+
const posix = POSIX_REGEX_SOURCE[rest2];
|
|
970
|
+
if (posix) {
|
|
971
|
+
prev.value = pre + posix;
|
|
972
|
+
state.backtrack = true;
|
|
973
|
+
advance();
|
|
974
|
+
if (!bos.output && tokens.indexOf(prev) === 1) {
|
|
975
|
+
bos.output = ONE_CHAR;
|
|
976
|
+
}
|
|
977
|
+
continue;
|
|
978
|
+
}
|
|
979
|
+
}
|
|
980
|
+
}
|
|
981
|
+
}
|
|
982
|
+
if (value === "[" && peek() !== ":" || value === "-" && peek() === "]") {
|
|
983
|
+
value = `\\${value}`;
|
|
984
|
+
}
|
|
985
|
+
if (value === "]" && (prev.value === "[" || prev.value === "[^")) {
|
|
986
|
+
value = `\\${value}`;
|
|
987
|
+
}
|
|
988
|
+
if (opts.posix === true && value === "!" && prev.value === "[") {
|
|
989
|
+
value = "^";
|
|
990
|
+
}
|
|
991
|
+
prev.value += value;
|
|
992
|
+
append({ value });
|
|
993
|
+
continue;
|
|
994
|
+
}
|
|
995
|
+
if (state.quotes === 1 && value !== '"') {
|
|
996
|
+
value = utils.escapeRegex(value);
|
|
997
|
+
prev.value += value;
|
|
998
|
+
append({ value });
|
|
999
|
+
continue;
|
|
1000
|
+
}
|
|
1001
|
+
if (value === '"') {
|
|
1002
|
+
state.quotes = state.quotes === 1 ? 0 : 1;
|
|
1003
|
+
if (opts.keepQuotes === true) {
|
|
1004
|
+
push({ type: "text", value });
|
|
1005
|
+
}
|
|
1006
|
+
continue;
|
|
1007
|
+
}
|
|
1008
|
+
if (value === "(") {
|
|
1009
|
+
increment("parens");
|
|
1010
|
+
push({ type: "paren", value });
|
|
1011
|
+
continue;
|
|
1012
|
+
}
|
|
1013
|
+
if (value === ")") {
|
|
1014
|
+
if (state.parens === 0 && opts.strictBrackets === true) {
|
|
1015
|
+
throw new SyntaxError(syntaxError("opening", "("));
|
|
1016
|
+
}
|
|
1017
|
+
const extglob = extglobs[extglobs.length - 1];
|
|
1018
|
+
if (extglob && state.parens === extglob.parens + 1) {
|
|
1019
|
+
extglobClose(extglobs.pop());
|
|
1020
|
+
continue;
|
|
1021
|
+
}
|
|
1022
|
+
push({ type: "paren", value, output: state.parens ? ")" : "\\)" });
|
|
1023
|
+
decrement("parens");
|
|
1024
|
+
continue;
|
|
1025
|
+
}
|
|
1026
|
+
if (value === "[") {
|
|
1027
|
+
if (opts.nobracket === true || !remaining().includes("]")) {
|
|
1028
|
+
if (opts.nobracket !== true && opts.strictBrackets === true) {
|
|
1029
|
+
throw new SyntaxError(syntaxError("closing", "]"));
|
|
1030
|
+
}
|
|
1031
|
+
value = `\\${value}`;
|
|
1032
|
+
} else {
|
|
1033
|
+
increment("brackets");
|
|
1034
|
+
}
|
|
1035
|
+
push({ type: "bracket", value });
|
|
1036
|
+
continue;
|
|
1037
|
+
}
|
|
1038
|
+
if (value === "]") {
|
|
1039
|
+
if (opts.nobracket === true || prev && prev.type === "bracket" && prev.value.length === 1) {
|
|
1040
|
+
push({ type: "text", value, output: `\\${value}` });
|
|
1041
|
+
continue;
|
|
1042
|
+
}
|
|
1043
|
+
if (state.brackets === 0) {
|
|
1044
|
+
if (opts.strictBrackets === true) {
|
|
1045
|
+
throw new SyntaxError(syntaxError("opening", "["));
|
|
1046
|
+
}
|
|
1047
|
+
push({ type: "text", value, output: `\\${value}` });
|
|
1048
|
+
continue;
|
|
1049
|
+
}
|
|
1050
|
+
decrement("brackets");
|
|
1051
|
+
const prevValue = prev.value.slice(1);
|
|
1052
|
+
if (prev.posix !== true && prevValue[0] === "^" && !prevValue.includes("/")) {
|
|
1053
|
+
value = `/${value}`;
|
|
1054
|
+
}
|
|
1055
|
+
prev.value += value;
|
|
1056
|
+
append({ value });
|
|
1057
|
+
if (opts.literalBrackets === false || utils.hasRegexChars(prevValue)) {
|
|
1058
|
+
continue;
|
|
1059
|
+
}
|
|
1060
|
+
const escaped = utils.escapeRegex(prev.value);
|
|
1061
|
+
state.output = state.output.slice(0, -prev.value.length);
|
|
1062
|
+
if (opts.literalBrackets === true) {
|
|
1063
|
+
state.output += escaped;
|
|
1064
|
+
prev.value = escaped;
|
|
1065
|
+
continue;
|
|
1066
|
+
}
|
|
1067
|
+
prev.value = `(${capture}${escaped}|${prev.value})`;
|
|
1068
|
+
state.output += prev.value;
|
|
1069
|
+
continue;
|
|
1070
|
+
}
|
|
1071
|
+
if (value === "{" && opts.nobrace !== true) {
|
|
1072
|
+
increment("braces");
|
|
1073
|
+
const open = {
|
|
1074
|
+
type: "brace",
|
|
1075
|
+
value,
|
|
1076
|
+
output: "(",
|
|
1077
|
+
outputIndex: state.output.length,
|
|
1078
|
+
tokensIndex: state.tokens.length
|
|
1079
|
+
};
|
|
1080
|
+
braces.push(open);
|
|
1081
|
+
push(open);
|
|
1082
|
+
continue;
|
|
1083
|
+
}
|
|
1084
|
+
if (value === "}") {
|
|
1085
|
+
const brace = braces[braces.length - 1];
|
|
1086
|
+
if (opts.nobrace === true || !brace) {
|
|
1087
|
+
push({ type: "text", value, output: value });
|
|
1088
|
+
continue;
|
|
1089
|
+
}
|
|
1090
|
+
let output = ")";
|
|
1091
|
+
if (brace.dots === true) {
|
|
1092
|
+
const arr = tokens.slice();
|
|
1093
|
+
const range = [];
|
|
1094
|
+
for (let i = arr.length - 1; i >= 0; i--) {
|
|
1095
|
+
tokens.pop();
|
|
1096
|
+
if (arr[i].type === "brace") {
|
|
1097
|
+
break;
|
|
1098
|
+
}
|
|
1099
|
+
if (arr[i].type !== "dots") {
|
|
1100
|
+
range.unshift(arr[i].value);
|
|
1101
|
+
}
|
|
1102
|
+
}
|
|
1103
|
+
output = expandRange(range, opts);
|
|
1104
|
+
state.backtrack = true;
|
|
1105
|
+
}
|
|
1106
|
+
if (brace.comma !== true && brace.dots !== true) {
|
|
1107
|
+
const out = state.output.slice(0, brace.outputIndex);
|
|
1108
|
+
const toks = state.tokens.slice(brace.tokensIndex);
|
|
1109
|
+
brace.value = brace.output = "\\{";
|
|
1110
|
+
value = output = "\\}";
|
|
1111
|
+
state.output = out;
|
|
1112
|
+
for (const t of toks) {
|
|
1113
|
+
state.output += t.output || t.value;
|
|
1114
|
+
}
|
|
1115
|
+
}
|
|
1116
|
+
push({ type: "brace", value, output });
|
|
1117
|
+
decrement("braces");
|
|
1118
|
+
braces.pop();
|
|
1119
|
+
continue;
|
|
1120
|
+
}
|
|
1121
|
+
if (value === "|") {
|
|
1122
|
+
if (extglobs.length > 0) {
|
|
1123
|
+
extglobs[extglobs.length - 1].conditions++;
|
|
1124
|
+
}
|
|
1125
|
+
push({ type: "text", value });
|
|
1126
|
+
continue;
|
|
1127
|
+
}
|
|
1128
|
+
if (value === ",") {
|
|
1129
|
+
let output = value;
|
|
1130
|
+
const brace = braces[braces.length - 1];
|
|
1131
|
+
if (brace && stack[stack.length - 1] === "braces") {
|
|
1132
|
+
brace.comma = true;
|
|
1133
|
+
output = "|";
|
|
1134
|
+
}
|
|
1135
|
+
push({ type: "comma", value, output });
|
|
1136
|
+
continue;
|
|
1137
|
+
}
|
|
1138
|
+
if (value === "/") {
|
|
1139
|
+
if (prev.type === "dot" && state.index === state.start + 1) {
|
|
1140
|
+
state.start = state.index + 1;
|
|
1141
|
+
state.consumed = "";
|
|
1142
|
+
state.output = "";
|
|
1143
|
+
tokens.pop();
|
|
1144
|
+
prev = bos;
|
|
1145
|
+
continue;
|
|
1146
|
+
}
|
|
1147
|
+
push({ type: "slash", value, output: SLASH_LITERAL });
|
|
1148
|
+
continue;
|
|
1149
|
+
}
|
|
1150
|
+
if (value === ".") {
|
|
1151
|
+
if (state.braces > 0 && prev.type === "dot") {
|
|
1152
|
+
if (prev.value === ".") prev.output = DOT_LITERAL;
|
|
1153
|
+
const brace = braces[braces.length - 1];
|
|
1154
|
+
prev.type = "dots";
|
|
1155
|
+
prev.output += value;
|
|
1156
|
+
prev.value += value;
|
|
1157
|
+
brace.dots = true;
|
|
1158
|
+
continue;
|
|
1159
|
+
}
|
|
1160
|
+
if (state.braces + state.parens === 0 && prev.type !== "bos" && prev.type !== "slash") {
|
|
1161
|
+
push({ type: "text", value, output: DOT_LITERAL });
|
|
1162
|
+
continue;
|
|
1163
|
+
}
|
|
1164
|
+
push({ type: "dot", value, output: DOT_LITERAL });
|
|
1165
|
+
continue;
|
|
1166
|
+
}
|
|
1167
|
+
if (value === "?") {
|
|
1168
|
+
const isGroup = prev && prev.value === "(";
|
|
1169
|
+
if (!isGroup && opts.noextglob !== true && peek() === "(" && peek(2) !== "?") {
|
|
1170
|
+
extglobOpen("qmark", value);
|
|
1171
|
+
continue;
|
|
1172
|
+
}
|
|
1173
|
+
if (prev && prev.type === "paren") {
|
|
1174
|
+
const next = peek();
|
|
1175
|
+
let output = value;
|
|
1176
|
+
if (prev.value === "(" && !/[!=<:]/.test(next) || next === "<" && !/<([!=]|\w+>)/.test(remaining())) {
|
|
1177
|
+
output = `\\${value}`;
|
|
1178
|
+
}
|
|
1179
|
+
push({ type: "text", value, output });
|
|
1180
|
+
continue;
|
|
1181
|
+
}
|
|
1182
|
+
if (opts.dot !== true && (prev.type === "slash" || prev.type === "bos")) {
|
|
1183
|
+
push({ type: "qmark", value, output: QMARK_NO_DOT });
|
|
1184
|
+
continue;
|
|
1185
|
+
}
|
|
1186
|
+
push({ type: "qmark", value, output: QMARK });
|
|
1187
|
+
continue;
|
|
1188
|
+
}
|
|
1189
|
+
if (value === "!") {
|
|
1190
|
+
if (opts.noextglob !== true && peek() === "(") {
|
|
1191
|
+
if (peek(2) !== "?" || !/[!=<:]/.test(peek(3))) {
|
|
1192
|
+
extglobOpen("negate", value);
|
|
1193
|
+
continue;
|
|
1194
|
+
}
|
|
1195
|
+
}
|
|
1196
|
+
if (opts.nonegate !== true && state.index === 0) {
|
|
1197
|
+
negate();
|
|
1198
|
+
continue;
|
|
1199
|
+
}
|
|
1200
|
+
}
|
|
1201
|
+
if (value === "+") {
|
|
1202
|
+
if (opts.noextglob !== true && peek() === "(" && peek(2) !== "?") {
|
|
1203
|
+
extglobOpen("plus", value);
|
|
1204
|
+
continue;
|
|
1205
|
+
}
|
|
1206
|
+
if (prev && prev.value === "(" || opts.regex === false) {
|
|
1207
|
+
push({ type: "plus", value, output: PLUS_LITERAL });
|
|
1208
|
+
continue;
|
|
1209
|
+
}
|
|
1210
|
+
if (prev && (prev.type === "bracket" || prev.type === "paren" || prev.type === "brace") || state.parens > 0) {
|
|
1211
|
+
push({ type: "plus", value });
|
|
1212
|
+
continue;
|
|
1213
|
+
}
|
|
1214
|
+
push({ type: "plus", value: PLUS_LITERAL });
|
|
1215
|
+
continue;
|
|
1216
|
+
}
|
|
1217
|
+
if (value === "@") {
|
|
1218
|
+
if (opts.noextglob !== true && peek() === "(" && peek(2) !== "?") {
|
|
1219
|
+
push({ type: "at", extglob: true, value, output: "" });
|
|
1220
|
+
continue;
|
|
1221
|
+
}
|
|
1222
|
+
push({ type: "text", value });
|
|
1223
|
+
continue;
|
|
1224
|
+
}
|
|
1225
|
+
if (value !== "*") {
|
|
1226
|
+
if (value === "$" || value === "^") {
|
|
1227
|
+
value = `\\${value}`;
|
|
1228
|
+
}
|
|
1229
|
+
const match2 = REGEX_NON_SPECIAL_CHARS.exec(remaining());
|
|
1230
|
+
if (match2) {
|
|
1231
|
+
value += match2[0];
|
|
1232
|
+
state.index += match2[0].length;
|
|
1233
|
+
}
|
|
1234
|
+
push({ type: "text", value });
|
|
1235
|
+
continue;
|
|
1236
|
+
}
|
|
1237
|
+
if (prev && (prev.type === "globstar" || prev.star === true)) {
|
|
1238
|
+
prev.type = "star";
|
|
1239
|
+
prev.star = true;
|
|
1240
|
+
prev.value += value;
|
|
1241
|
+
prev.output = star;
|
|
1242
|
+
state.backtrack = true;
|
|
1243
|
+
state.globstar = true;
|
|
1244
|
+
consume(value);
|
|
1245
|
+
continue;
|
|
1246
|
+
}
|
|
1247
|
+
let rest = remaining();
|
|
1248
|
+
if (opts.noextglob !== true && /^\([^?]/.test(rest)) {
|
|
1249
|
+
extglobOpen("star", value);
|
|
1250
|
+
continue;
|
|
1251
|
+
}
|
|
1252
|
+
if (prev.type === "star") {
|
|
1253
|
+
if (opts.noglobstar === true) {
|
|
1254
|
+
consume(value);
|
|
1255
|
+
continue;
|
|
1256
|
+
}
|
|
1257
|
+
const prior = prev.prev;
|
|
1258
|
+
const before = prior.prev;
|
|
1259
|
+
const isStart = prior.type === "slash" || prior.type === "bos";
|
|
1260
|
+
const afterStar = before && (before.type === "star" || before.type === "globstar");
|
|
1261
|
+
if (opts.bash === true && (!isStart || rest[0] && rest[0] !== "/")) {
|
|
1262
|
+
push({ type: "star", value, output: "" });
|
|
1263
|
+
continue;
|
|
1264
|
+
}
|
|
1265
|
+
const isBrace = state.braces > 0 && (prior.type === "comma" || prior.type === "brace");
|
|
1266
|
+
const isExtglob = extglobs.length && (prior.type === "pipe" || prior.type === "paren");
|
|
1267
|
+
if (!isStart && prior.type !== "paren" && !isBrace && !isExtglob) {
|
|
1268
|
+
push({ type: "star", value, output: "" });
|
|
1269
|
+
continue;
|
|
1270
|
+
}
|
|
1271
|
+
while (rest.slice(0, 3) === "/**") {
|
|
1272
|
+
const after = input[state.index + 4];
|
|
1273
|
+
if (after && after !== "/") {
|
|
1274
|
+
break;
|
|
1275
|
+
}
|
|
1276
|
+
rest = rest.slice(3);
|
|
1277
|
+
consume("/**", 3);
|
|
1278
|
+
}
|
|
1279
|
+
if (prior.type === "bos" && eos()) {
|
|
1280
|
+
prev.type = "globstar";
|
|
1281
|
+
prev.value += value;
|
|
1282
|
+
prev.output = globstar(opts);
|
|
1283
|
+
state.output = prev.output;
|
|
1284
|
+
state.globstar = true;
|
|
1285
|
+
consume(value);
|
|
1286
|
+
continue;
|
|
1287
|
+
}
|
|
1288
|
+
if (prior.type === "slash" && prior.prev.type !== "bos" && !afterStar && eos()) {
|
|
1289
|
+
state.output = state.output.slice(0, -(prior.output + prev.output).length);
|
|
1290
|
+
prior.output = `(?:${prior.output}`;
|
|
1291
|
+
prev.type = "globstar";
|
|
1292
|
+
prev.output = globstar(opts) + (opts.strictSlashes ? ")" : "|$)");
|
|
1293
|
+
prev.value += value;
|
|
1294
|
+
state.globstar = true;
|
|
1295
|
+
state.output += prior.output + prev.output;
|
|
1296
|
+
consume(value);
|
|
1297
|
+
continue;
|
|
1298
|
+
}
|
|
1299
|
+
if (prior.type === "slash" && prior.prev.type !== "bos" && rest[0] === "/") {
|
|
1300
|
+
const end = rest[1] !== void 0 ? "|$" : "";
|
|
1301
|
+
state.output = state.output.slice(0, -(prior.output + prev.output).length);
|
|
1302
|
+
prior.output = `(?:${prior.output}`;
|
|
1303
|
+
prev.type = "globstar";
|
|
1304
|
+
prev.output = `${globstar(opts)}${SLASH_LITERAL}|${SLASH_LITERAL}${end})`;
|
|
1305
|
+
prev.value += value;
|
|
1306
|
+
state.output += prior.output + prev.output;
|
|
1307
|
+
state.globstar = true;
|
|
1308
|
+
consume(value + advance());
|
|
1309
|
+
push({ type: "slash", value: "/", output: "" });
|
|
1310
|
+
continue;
|
|
1311
|
+
}
|
|
1312
|
+
if (prior.type === "bos" && rest[0] === "/") {
|
|
1313
|
+
prev.type = "globstar";
|
|
1314
|
+
prev.value += value;
|
|
1315
|
+
prev.output = `(?:^|${SLASH_LITERAL}|${globstar(opts)}${SLASH_LITERAL})`;
|
|
1316
|
+
state.output = prev.output;
|
|
1317
|
+
state.globstar = true;
|
|
1318
|
+
consume(value + advance());
|
|
1319
|
+
push({ type: "slash", value: "/", output: "" });
|
|
1320
|
+
continue;
|
|
1321
|
+
}
|
|
1322
|
+
state.output = state.output.slice(0, -prev.output.length);
|
|
1323
|
+
prev.type = "globstar";
|
|
1324
|
+
prev.output = globstar(opts);
|
|
1325
|
+
prev.value += value;
|
|
1326
|
+
state.output += prev.output;
|
|
1327
|
+
state.globstar = true;
|
|
1328
|
+
consume(value);
|
|
1329
|
+
continue;
|
|
1330
|
+
}
|
|
1331
|
+
const token = { type: "star", value, output: star };
|
|
1332
|
+
if (opts.bash === true) {
|
|
1333
|
+
token.output = ".*?";
|
|
1334
|
+
if (prev.type === "bos" || prev.type === "slash") {
|
|
1335
|
+
token.output = nodot + token.output;
|
|
1336
|
+
}
|
|
1337
|
+
push(token);
|
|
1338
|
+
continue;
|
|
1339
|
+
}
|
|
1340
|
+
if (prev && (prev.type === "bracket" || prev.type === "paren") && opts.regex === true) {
|
|
1341
|
+
token.output = value;
|
|
1342
|
+
push(token);
|
|
1343
|
+
continue;
|
|
1344
|
+
}
|
|
1345
|
+
if (state.index === state.start || prev.type === "slash" || prev.type === "dot") {
|
|
1346
|
+
if (prev.type === "dot") {
|
|
1347
|
+
state.output += NO_DOT_SLASH;
|
|
1348
|
+
prev.output += NO_DOT_SLASH;
|
|
1349
|
+
} else if (opts.dot === true) {
|
|
1350
|
+
state.output += NO_DOTS_SLASH;
|
|
1351
|
+
prev.output += NO_DOTS_SLASH;
|
|
1352
|
+
} else {
|
|
1353
|
+
state.output += nodot;
|
|
1354
|
+
prev.output += nodot;
|
|
1355
|
+
}
|
|
1356
|
+
if (peek() !== "*") {
|
|
1357
|
+
state.output += ONE_CHAR;
|
|
1358
|
+
prev.output += ONE_CHAR;
|
|
1359
|
+
}
|
|
1360
|
+
}
|
|
1361
|
+
push(token);
|
|
1362
|
+
}
|
|
1363
|
+
while (state.brackets > 0) {
|
|
1364
|
+
if (opts.strictBrackets === true) throw new SyntaxError(syntaxError("closing", "]"));
|
|
1365
|
+
state.output = utils.escapeLast(state.output, "[");
|
|
1366
|
+
decrement("brackets");
|
|
1367
|
+
}
|
|
1368
|
+
while (state.parens > 0) {
|
|
1369
|
+
if (opts.strictBrackets === true) throw new SyntaxError(syntaxError("closing", ")"));
|
|
1370
|
+
state.output = utils.escapeLast(state.output, "(");
|
|
1371
|
+
decrement("parens");
|
|
1372
|
+
}
|
|
1373
|
+
while (state.braces > 0) {
|
|
1374
|
+
if (opts.strictBrackets === true) throw new SyntaxError(syntaxError("closing", "}"));
|
|
1375
|
+
state.output = utils.escapeLast(state.output, "{");
|
|
1376
|
+
decrement("braces");
|
|
1377
|
+
}
|
|
1378
|
+
if (opts.strictSlashes !== true && (prev.type === "star" || prev.type === "bracket")) {
|
|
1379
|
+
push({ type: "maybe_slash", value: "", output: `${SLASH_LITERAL}?` });
|
|
1380
|
+
}
|
|
1381
|
+
if (state.backtrack === true) {
|
|
1382
|
+
state.output = "";
|
|
1383
|
+
for (const token of state.tokens) {
|
|
1384
|
+
state.output += token.output != null ? token.output : token.value;
|
|
1385
|
+
if (token.suffix) {
|
|
1386
|
+
state.output += token.suffix;
|
|
1387
|
+
}
|
|
1388
|
+
}
|
|
1389
|
+
}
|
|
1390
|
+
return state;
|
|
1391
|
+
};
|
|
1392
|
+
parse2.fastpaths = (input, options) => {
|
|
1393
|
+
const opts = { ...options };
|
|
1394
|
+
const max = typeof opts.maxLength === "number" ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;
|
|
1395
|
+
const len = input.length;
|
|
1396
|
+
if (len > max) {
|
|
1397
|
+
throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`);
|
|
1398
|
+
}
|
|
1399
|
+
input = REPLACEMENTS[input] || input;
|
|
1400
|
+
const {
|
|
1401
|
+
DOT_LITERAL,
|
|
1402
|
+
SLASH_LITERAL,
|
|
1403
|
+
ONE_CHAR,
|
|
1404
|
+
DOTS_SLASH,
|
|
1405
|
+
NO_DOT,
|
|
1406
|
+
NO_DOTS,
|
|
1407
|
+
NO_DOTS_SLASH,
|
|
1408
|
+
STAR,
|
|
1409
|
+
START_ANCHOR
|
|
1410
|
+
} = constants.globChars(opts.windows);
|
|
1411
|
+
const nodot = opts.dot ? NO_DOTS : NO_DOT;
|
|
1412
|
+
const slashDot = opts.dot ? NO_DOTS_SLASH : NO_DOT;
|
|
1413
|
+
const capture = opts.capture ? "" : "?:";
|
|
1414
|
+
const state = { negated: false, prefix: "" };
|
|
1415
|
+
let star = opts.bash === true ? ".*?" : STAR;
|
|
1416
|
+
if (opts.capture) {
|
|
1417
|
+
star = `(${star})`;
|
|
1418
|
+
}
|
|
1419
|
+
const globstar = (opts2) => {
|
|
1420
|
+
if (opts2.noglobstar === true) return star;
|
|
1421
|
+
return `(${capture}(?:(?!${START_ANCHOR}${opts2.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`;
|
|
1422
|
+
};
|
|
1423
|
+
const create = (str) => {
|
|
1424
|
+
switch (str) {
|
|
1425
|
+
case "*":
|
|
1426
|
+
return `${nodot}${ONE_CHAR}${star}`;
|
|
1427
|
+
case ".*":
|
|
1428
|
+
return `${DOT_LITERAL}${ONE_CHAR}${star}`;
|
|
1429
|
+
case "*.*":
|
|
1430
|
+
return `${nodot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`;
|
|
1431
|
+
case "*/*":
|
|
1432
|
+
return `${nodot}${star}${SLASH_LITERAL}${ONE_CHAR}${slashDot}${star}`;
|
|
1433
|
+
case "**":
|
|
1434
|
+
return nodot + globstar(opts);
|
|
1435
|
+
case "**/*":
|
|
1436
|
+
return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${ONE_CHAR}${star}`;
|
|
1437
|
+
case "**/*.*":
|
|
1438
|
+
return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`;
|
|
1439
|
+
case "**/.*":
|
|
1440
|
+
return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${DOT_LITERAL}${ONE_CHAR}${star}`;
|
|
1441
|
+
default: {
|
|
1442
|
+
const match2 = /^(.*?)\.(\w+)$/.exec(str);
|
|
1443
|
+
if (!match2) return;
|
|
1444
|
+
const source2 = create(match2[1]);
|
|
1445
|
+
if (!source2) return;
|
|
1446
|
+
return source2 + DOT_LITERAL + match2[2];
|
|
1447
|
+
}
|
|
1448
|
+
}
|
|
1449
|
+
};
|
|
1450
|
+
const output = utils.removePrefix(input, state);
|
|
1451
|
+
let source = create(output);
|
|
1452
|
+
if (source && opts.strictSlashes !== true) {
|
|
1453
|
+
source += `${SLASH_LITERAL}?`;
|
|
1454
|
+
}
|
|
1455
|
+
return source;
|
|
1456
|
+
};
|
|
1457
|
+
module.exports = parse2;
|
|
1458
|
+
}
|
|
1459
|
+
});
|
|
1460
|
+
|
|
1461
|
+
// node_modules/.pnpm/picomatch@4.0.3/node_modules/picomatch/lib/picomatch.js
|
|
1462
|
+
var require_picomatch = __commonJS({
|
|
1463
|
+
"node_modules/.pnpm/picomatch@4.0.3/node_modules/picomatch/lib/picomatch.js"(exports, module) {
|
|
1464
|
+
"use strict";
|
|
1465
|
+
var scan = require_scan();
|
|
1466
|
+
var parse2 = require_parse();
|
|
1467
|
+
var utils = require_utils();
|
|
1468
|
+
var constants = require_constants();
|
|
1469
|
+
var isObject = (val) => val && typeof val === "object" && !Array.isArray(val);
|
|
1470
|
+
var picomatch2 = (glob, options, returnState = false) => {
|
|
1471
|
+
if (Array.isArray(glob)) {
|
|
1472
|
+
const fns = glob.map((input) => picomatch2(input, options, returnState));
|
|
1473
|
+
const arrayMatcher = (str) => {
|
|
1474
|
+
for (const isMatch of fns) {
|
|
1475
|
+
const state2 = isMatch(str);
|
|
1476
|
+
if (state2) return state2;
|
|
1477
|
+
}
|
|
1478
|
+
return false;
|
|
1479
|
+
};
|
|
1480
|
+
return arrayMatcher;
|
|
1481
|
+
}
|
|
1482
|
+
const isState = isObject(glob) && glob.tokens && glob.input;
|
|
1483
|
+
if (glob === "" || typeof glob !== "string" && !isState) {
|
|
1484
|
+
throw new TypeError("Expected pattern to be a non-empty string");
|
|
1485
|
+
}
|
|
1486
|
+
const opts = options || {};
|
|
1487
|
+
const posix = opts.windows;
|
|
1488
|
+
const regex = isState ? picomatch2.compileRe(glob, options) : picomatch2.makeRe(glob, options, false, true);
|
|
1489
|
+
const state = regex.state;
|
|
1490
|
+
delete regex.state;
|
|
1491
|
+
let isIgnored = () => false;
|
|
1492
|
+
if (opts.ignore) {
|
|
1493
|
+
const ignoreOpts = { ...options, ignore: null, onMatch: null, onResult: null };
|
|
1494
|
+
isIgnored = picomatch2(opts.ignore, ignoreOpts, returnState);
|
|
1495
|
+
}
|
|
1496
|
+
const matcher = (input, returnObject = false) => {
|
|
1497
|
+
const { isMatch, match: match2, output } = picomatch2.test(input, regex, options, { glob, posix });
|
|
1498
|
+
const result = { glob, state, regex, posix, input, output, match: match2, isMatch };
|
|
1499
|
+
if (typeof opts.onResult === "function") {
|
|
1500
|
+
opts.onResult(result);
|
|
1501
|
+
}
|
|
1502
|
+
if (isMatch === false) {
|
|
1503
|
+
result.isMatch = false;
|
|
1504
|
+
return returnObject ? result : false;
|
|
1505
|
+
}
|
|
1506
|
+
if (isIgnored(input)) {
|
|
1507
|
+
if (typeof opts.onIgnore === "function") {
|
|
1508
|
+
opts.onIgnore(result);
|
|
1509
|
+
}
|
|
1510
|
+
result.isMatch = false;
|
|
1511
|
+
return returnObject ? result : false;
|
|
1512
|
+
}
|
|
1513
|
+
if (typeof opts.onMatch === "function") {
|
|
1514
|
+
opts.onMatch(result);
|
|
1515
|
+
}
|
|
1516
|
+
return returnObject ? result : true;
|
|
1517
|
+
};
|
|
1518
|
+
if (returnState) {
|
|
1519
|
+
matcher.state = state;
|
|
1520
|
+
}
|
|
1521
|
+
return matcher;
|
|
1522
|
+
};
|
|
1523
|
+
picomatch2.test = (input, regex, options, { glob, posix } = {}) => {
|
|
1524
|
+
if (typeof input !== "string") {
|
|
1525
|
+
throw new TypeError("Expected input to be a string");
|
|
1526
|
+
}
|
|
1527
|
+
if (input === "") {
|
|
1528
|
+
return { isMatch: false, output: "" };
|
|
1529
|
+
}
|
|
1530
|
+
const opts = options || {};
|
|
1531
|
+
const format = opts.format || (posix ? utils.toPosixSlashes : null);
|
|
1532
|
+
let match2 = input === glob;
|
|
1533
|
+
let output = match2 && format ? format(input) : input;
|
|
1534
|
+
if (match2 === false) {
|
|
1535
|
+
output = format ? format(input) : input;
|
|
1536
|
+
match2 = output === glob;
|
|
1537
|
+
}
|
|
1538
|
+
if (match2 === false || opts.capture === true) {
|
|
1539
|
+
if (opts.matchBase === true || opts.basename === true) {
|
|
1540
|
+
match2 = picomatch2.matchBase(input, regex, options, posix);
|
|
1541
|
+
} else {
|
|
1542
|
+
match2 = regex.exec(output);
|
|
1543
|
+
}
|
|
1544
|
+
}
|
|
1545
|
+
return { isMatch: Boolean(match2), match: match2, output };
|
|
1546
|
+
};
|
|
1547
|
+
picomatch2.matchBase = (input, glob, options) => {
|
|
1548
|
+
const regex = glob instanceof RegExp ? glob : picomatch2.makeRe(glob, options);
|
|
1549
|
+
return regex.test(utils.basename(input));
|
|
1550
|
+
};
|
|
1551
|
+
picomatch2.isMatch = (str, patterns, options) => picomatch2(patterns, options)(str);
|
|
1552
|
+
picomatch2.parse = (pattern, options) => {
|
|
1553
|
+
if (Array.isArray(pattern)) return pattern.map((p) => picomatch2.parse(p, options));
|
|
1554
|
+
return parse2(pattern, { ...options, fastpaths: false });
|
|
1555
|
+
};
|
|
1556
|
+
picomatch2.scan = (input, options) => scan(input, options);
|
|
1557
|
+
picomatch2.compileRe = (state, options, returnOutput = false, returnState = false) => {
|
|
1558
|
+
if (returnOutput === true) {
|
|
1559
|
+
return state.output;
|
|
1560
|
+
}
|
|
1561
|
+
const opts = options || {};
|
|
1562
|
+
const prepend = opts.contains ? "" : "^";
|
|
1563
|
+
const append = opts.contains ? "" : "$";
|
|
1564
|
+
let source = `${prepend}(?:${state.output})${append}`;
|
|
1565
|
+
if (state && state.negated === true) {
|
|
1566
|
+
source = `^(?!${source}).*$`;
|
|
1567
|
+
}
|
|
1568
|
+
const regex = picomatch2.toRegex(source, options);
|
|
1569
|
+
if (returnState === true) {
|
|
1570
|
+
regex.state = state;
|
|
1571
|
+
}
|
|
1572
|
+
return regex;
|
|
1573
|
+
};
|
|
1574
|
+
picomatch2.makeRe = (input, options = {}, returnOutput = false, returnState = false) => {
|
|
1575
|
+
if (!input || typeof input !== "string") {
|
|
1576
|
+
throw new TypeError("Expected a non-empty string");
|
|
1577
|
+
}
|
|
1578
|
+
let parsed = { negated: false, fastpaths: true };
|
|
1579
|
+
if (options.fastpaths !== false && (input[0] === "." || input[0] === "*")) {
|
|
1580
|
+
parsed.output = parse2.fastpaths(input, options);
|
|
1581
|
+
}
|
|
1582
|
+
if (!parsed.output) {
|
|
1583
|
+
parsed = parse2(input, options);
|
|
1584
|
+
}
|
|
1585
|
+
return picomatch2.compileRe(parsed, options, returnOutput, returnState);
|
|
1586
|
+
};
|
|
1587
|
+
picomatch2.toRegex = (source, options) => {
|
|
1588
|
+
try {
|
|
1589
|
+
const opts = options || {};
|
|
1590
|
+
return new RegExp(source, opts.flags || (opts.nocase ? "i" : ""));
|
|
1591
|
+
} catch (err) {
|
|
1592
|
+
if (options && options.debug === true) throw err;
|
|
1593
|
+
return /$^/;
|
|
1594
|
+
}
|
|
1595
|
+
};
|
|
1596
|
+
picomatch2.constants = constants;
|
|
1597
|
+
module.exports = picomatch2;
|
|
1598
|
+
}
|
|
1599
|
+
});
|
|
1600
|
+
|
|
1601
|
+
// node_modules/.pnpm/picomatch@4.0.3/node_modules/picomatch/index.js
|
|
1602
|
+
var require_picomatch2 = __commonJS({
|
|
1603
|
+
"node_modules/.pnpm/picomatch@4.0.3/node_modules/picomatch/index.js"(exports, module) {
|
|
1604
|
+
"use strict";
|
|
1605
|
+
var pico = require_picomatch();
|
|
1606
|
+
var utils = require_utils();
|
|
1607
|
+
function picomatch2(glob, options, returnState = false) {
|
|
1608
|
+
if (options && (options.windows === null || options.windows === void 0)) {
|
|
1609
|
+
options = { ...options, windows: utils.isWindows() };
|
|
1610
|
+
}
|
|
1611
|
+
return pico(glob, options, returnState);
|
|
1612
|
+
}
|
|
1613
|
+
Object.assign(picomatch2, pico);
|
|
1614
|
+
module.exports = picomatch2;
|
|
1615
|
+
}
|
|
1616
|
+
});
|
|
1617
|
+
|
|
100
1618
|
// node_modules/.pnpm/ansi-regex@5.0.1/node_modules/ansi-regex/index.js
|
|
101
1619
|
var require_ansi_regex = __commonJS({
|
|
102
1620
|
"node_modules/.pnpm/ansi-regex@5.0.1/node_modules/ansi-regex/index.js"(exports, module) {
|
|
@@ -1511,7 +3029,7 @@ var require_getBorderCharacters = __commonJS({
|
|
|
1511
3029
|
});
|
|
1512
3030
|
|
|
1513
3031
|
// node_modules/.pnpm/table@6.9.0/node_modules/table/dist/src/utils.js
|
|
1514
|
-
var
|
|
3032
|
+
var require_utils2 = __commonJS({
|
|
1515
3033
|
"node_modules/.pnpm/table@6.9.0/node_modules/table/dist/src/utils.js"(exports) {
|
|
1516
3034
|
"use strict";
|
|
1517
3035
|
var __importDefault = exports && exports.__importDefault || function(mod) {
|
|
@@ -1623,7 +3141,7 @@ var require_alignString = __commonJS({
|
|
|
1623
3141
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
1624
3142
|
exports.alignString = void 0;
|
|
1625
3143
|
var string_width_1 = __importDefault(require_string_width());
|
|
1626
|
-
var utils_1 =
|
|
3144
|
+
var utils_1 = require_utils2();
|
|
1627
3145
|
var alignLeft = (subject, width) => {
|
|
1628
3146
|
return subject + " ".repeat(width);
|
|
1629
3147
|
};
|
|
@@ -1776,7 +3294,7 @@ var require_wrapCell = __commonJS({
|
|
|
1776
3294
|
"use strict";
|
|
1777
3295
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
1778
3296
|
exports.wrapCell = void 0;
|
|
1779
|
-
var utils_1 =
|
|
3297
|
+
var utils_1 = require_utils2();
|
|
1780
3298
|
var wrapString_1 = require_wrapString();
|
|
1781
3299
|
var wrapWord_1 = require_wrapWord();
|
|
1782
3300
|
var wrapCell = (cellValue, cellWidth, useWrapWord) => {
|
|
@@ -1818,7 +3336,7 @@ var require_calculateRowHeights = __commonJS({
|
|
|
1818
3336
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
1819
3337
|
exports.calculateRowHeights = void 0;
|
|
1820
3338
|
var calculateCellHeight_1 = require_calculateCellHeight();
|
|
1821
|
-
var utils_1 =
|
|
3339
|
+
var utils_1 = require_utils2();
|
|
1822
3340
|
var calculateRowHeights = (rows, config) => {
|
|
1823
3341
|
const rowHeights = [];
|
|
1824
3342
|
for (const [rowIndex, row] of rows.entries()) {
|
|
@@ -4749,7 +6267,7 @@ var require_makeStreamConfig = __commonJS({
|
|
|
4749
6267
|
"use strict";
|
|
4750
6268
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4751
6269
|
exports.makeStreamConfig = void 0;
|
|
4752
|
-
var utils_1 =
|
|
6270
|
+
var utils_1 = require_utils2();
|
|
4753
6271
|
var validateConfig_1 = require_validateConfig();
|
|
4754
6272
|
var makeColumnsConfig = (columnCount, columns = {}, columnDefault) => {
|
|
4755
6273
|
return Array.from({ length: columnCount }).map((_, index) => {
|
|
@@ -4789,7 +6307,7 @@ var require_mapDataUsingRowHeights = __commonJS({
|
|
|
4789
6307
|
"use strict";
|
|
4790
6308
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4791
6309
|
exports.mapDataUsingRowHeights = exports.padCellVertically = void 0;
|
|
4792
|
-
var utils_1 =
|
|
6310
|
+
var utils_1 = require_utils2();
|
|
4793
6311
|
var wrapCell_1 = require_wrapCell();
|
|
4794
6312
|
var createEmptyStrings = (length) => {
|
|
4795
6313
|
return new Array(length).fill("");
|
|
@@ -4878,7 +6396,7 @@ var require_stringifyTableData = __commonJS({
|
|
|
4878
6396
|
"use strict";
|
|
4879
6397
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4880
6398
|
exports.stringifyTableData = void 0;
|
|
4881
|
-
var utils_1 =
|
|
6399
|
+
var utils_1 = require_utils2();
|
|
4882
6400
|
var stringifyTableData = (rows) => {
|
|
4883
6401
|
return rows.map((cells) => {
|
|
4884
6402
|
return cells.map((cell) => {
|
|
@@ -5153,7 +6671,7 @@ var require_createStream = __commonJS({
|
|
|
5153
6671
|
var padTableData_1 = require_padTableData();
|
|
5154
6672
|
var stringifyTableData_1 = require_stringifyTableData();
|
|
5155
6673
|
var truncateTableData_1 = require_truncateTableData();
|
|
5156
|
-
var utils_1 =
|
|
6674
|
+
var utils_1 = require_utils2();
|
|
5157
6675
|
var prepareData = (data, config) => {
|
|
5158
6676
|
let rows = (0, stringifyTableData_1.stringifyTableData)(data);
|
|
5159
6677
|
rows = (0, truncateTableData_1.truncateTableData)(rows, (0, utils_1.extractTruncates)(config));
|
|
@@ -5240,7 +6758,7 @@ var require_drawTable = __commonJS({
|
|
|
5240
6758
|
var drawBorder_1 = require_drawBorder();
|
|
5241
6759
|
var drawContent_1 = require_drawContent();
|
|
5242
6760
|
var drawRow_1 = require_drawRow();
|
|
5243
|
-
var utils_1 =
|
|
6761
|
+
var utils_1 = require_utils2();
|
|
5244
6762
|
var drawTable = (rows, outputColumnWidths, rowHeights, config) => {
|
|
5245
6763
|
const { drawHorizontalLine, singleLine } = config;
|
|
5246
6764
|
const contents = (0, utils_1.groupBySizes)(rows, rowHeights).map((group, groupIndex) => {
|
|
@@ -5322,7 +6840,7 @@ var require_calculateMaximumColumnWidths = __commonJS({
|
|
|
5322
6840
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5323
6841
|
exports.calculateMaximumColumnWidths = exports.calculateMaximumCellWidth = void 0;
|
|
5324
6842
|
var string_width_1 = __importDefault(require_string_width());
|
|
5325
|
-
var utils_1 =
|
|
6843
|
+
var utils_1 = require_utils2();
|
|
5326
6844
|
var calculateMaximumCellWidth = (cell) => {
|
|
5327
6845
|
return Math.max(...cell.split("\n").map(string_width_1.default));
|
|
5328
6846
|
};
|
|
@@ -5366,7 +6884,7 @@ var require_alignSpanningCell = __commonJS({
|
|
|
5366
6884
|
var mapDataUsingRowHeights_1 = require_mapDataUsingRowHeights();
|
|
5367
6885
|
var padTableData_1 = require_padTableData();
|
|
5368
6886
|
var truncateTableData_1 = require_truncateTableData();
|
|
5369
|
-
var utils_1 =
|
|
6887
|
+
var utils_1 = require_utils2();
|
|
5370
6888
|
var wrapCell_1 = require_wrapCell();
|
|
5371
6889
|
var wrapRangeContent = (rangeConfig, rangeWidth, context) => {
|
|
5372
6890
|
const { topLeft, paddingRight, paddingLeft, truncate, wrapWord, alignment } = rangeConfig;
|
|
@@ -5407,7 +6925,7 @@ var require_calculateSpanningCellWidth = __commonJS({
|
|
|
5407
6925
|
"use strict";
|
|
5408
6926
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5409
6927
|
exports.calculateSpanningCellWidth = void 0;
|
|
5410
|
-
var utils_1 =
|
|
6928
|
+
var utils_1 = require_utils2();
|
|
5411
6929
|
var calculateSpanningCellWidth = (rangeConfig, dependencies) => {
|
|
5412
6930
|
const { columnsConfig, drawVerticalLine } = dependencies;
|
|
5413
6931
|
const { topLeft, bottomRight } = rangeConfig;
|
|
@@ -5433,7 +6951,7 @@ var require_makeRangeConfig = __commonJS({
|
|
|
5433
6951
|
"use strict";
|
|
5434
6952
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5435
6953
|
exports.makeRangeConfig = void 0;
|
|
5436
|
-
var utils_1 =
|
|
6954
|
+
var utils_1 = require_utils2();
|
|
5437
6955
|
var makeRangeConfig = (spanningCellConfig, columnsConfig) => {
|
|
5438
6956
|
var _a;
|
|
5439
6957
|
const { topLeft, bottomRight } = (0, utils_1.calculateRangeCoordinate)(spanningCellConfig);
|
|
@@ -5461,7 +6979,7 @@ var require_spanningCellManager = __commonJS({
|
|
|
5461
6979
|
var alignSpanningCell_1 = require_alignSpanningCell();
|
|
5462
6980
|
var calculateSpanningCellWidth_1 = require_calculateSpanningCellWidth();
|
|
5463
6981
|
var makeRangeConfig_1 = require_makeRangeConfig();
|
|
5464
|
-
var utils_1 =
|
|
6982
|
+
var utils_1 = require_utils2();
|
|
5465
6983
|
var findRangeConfig = (cell, rangeConfigs) => {
|
|
5466
6984
|
return rangeConfigs.find((rangeCoordinate) => {
|
|
5467
6985
|
return (0, utils_1.isCellInRange)(cell, rangeCoordinate);
|
|
@@ -5565,7 +7083,7 @@ var require_validateSpanningCellConfig = __commonJS({
|
|
|
5565
7083
|
"use strict";
|
|
5566
7084
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5567
7085
|
exports.validateSpanningCellConfig = void 0;
|
|
5568
|
-
var utils_1 =
|
|
7086
|
+
var utils_1 = require_utils2();
|
|
5569
7087
|
var inRange = (start, end, value) => {
|
|
5570
7088
|
return start <= value && value <= end;
|
|
5571
7089
|
};
|
|
@@ -5615,7 +7133,7 @@ var require_makeTableConfig = __commonJS({
|
|
|
5615
7133
|
exports.makeTableConfig = void 0;
|
|
5616
7134
|
var calculateMaximumColumnWidths_1 = require_calculateMaximumColumnWidths();
|
|
5617
7135
|
var spanningCellManager_1 = require_spanningCellManager();
|
|
5618
|
-
var utils_1 =
|
|
7136
|
+
var utils_1 = require_utils2();
|
|
5619
7137
|
var validateConfig_1 = require_validateConfig();
|
|
5620
7138
|
var validateSpanningCellConfig_1 = require_validateSpanningCellConfig();
|
|
5621
7139
|
var makeColumnsConfig = (rows, columns, columnDefault, spanningCellConfigs) => {
|
|
@@ -5672,7 +7190,7 @@ var require_validateTableData = __commonJS({
|
|
|
5672
7190
|
"use strict";
|
|
5673
7191
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5674
7192
|
exports.validateTableData = void 0;
|
|
5675
|
-
var utils_1 =
|
|
7193
|
+
var utils_1 = require_utils2();
|
|
5676
7194
|
var validateTableData = (rows) => {
|
|
5677
7195
|
if (!Array.isArray(rows)) {
|
|
5678
7196
|
throw new TypeError("Table data must be an array.");
|
|
@@ -5718,7 +7236,7 @@ var require_table = __commonJS({
|
|
|
5718
7236
|
var padTableData_1 = require_padTableData();
|
|
5719
7237
|
var stringifyTableData_1 = require_stringifyTableData();
|
|
5720
7238
|
var truncateTableData_1 = require_truncateTableData();
|
|
5721
|
-
var utils_1 =
|
|
7239
|
+
var utils_1 = require_utils2();
|
|
5722
7240
|
var validateTableData_1 = require_validateTableData();
|
|
5723
7241
|
var table2 = (data, userConfig = {}) => {
|
|
5724
7242
|
(0, validateTableData_1.validateTableData)(data);
|
|
@@ -6605,6 +8123,7 @@ function loadConfig() {
|
|
|
6605
8123
|
|
|
6606
8124
|
// utils.ts
|
|
6607
8125
|
var import_picocolors = __toESM(require_picocolors(), 1);
|
|
8126
|
+
var import_picomatch = __toESM(require_picomatch2(), 1);
|
|
6608
8127
|
import { execSync as execSync2, execFileSync, spawnSync } from "child_process";
|
|
6609
8128
|
import { existsSync as existsSync2, readSync, openSync, mkdirSync as mkdirSync2, writeFileSync as writeFileSync2, rmSync, lstatSync, readdirSync, readlinkSync } from "fs";
|
|
6610
8129
|
import { basename as basename2, dirname as dirname2, join as join2 } from "path";
|
|
@@ -7052,41 +8571,42 @@ function cpCow(src, dest) {
|
|
|
7052
8571
|
console.error(warn(`Failed to copy ${src}: ${err instanceof Error ? err.message : String(err)}`));
|
|
7053
8572
|
}
|
|
7054
8573
|
}
|
|
7055
|
-
|
|
8574
|
+
var DEFAULT_COPY_PATTERNS = [
|
|
8575
|
+
".env*",
|
|
8576
|
+
".npmrc*",
|
|
8577
|
+
".yarnrc*",
|
|
8578
|
+
".pnpmfile.*",
|
|
8579
|
+
".pnpmrc*",
|
|
8580
|
+
".tool-versions",
|
|
8581
|
+
".node-version",
|
|
8582
|
+
".nvmrc",
|
|
8583
|
+
".ruby-version",
|
|
8584
|
+
".python-version",
|
|
8585
|
+
".mise*.toml",
|
|
8586
|
+
".dir-locals.el",
|
|
8587
|
+
".editorconfig.local"
|
|
8588
|
+
];
|
|
8589
|
+
function getIgnoredFiles(repoPath) {
|
|
7056
8590
|
try {
|
|
7057
8591
|
const output = execFileSync(
|
|
7058
8592
|
"git",
|
|
7059
|
-
["ls-files", "--others", "--ignored", "--exclude-standard"
|
|
8593
|
+
["ls-files", "--others", "--ignored", "--exclude-standard"],
|
|
7060
8594
|
{ cwd: repoPath, encoding: "utf-8" }
|
|
7061
8595
|
);
|
|
7062
|
-
|
|
7063
|
-
const minimal = [];
|
|
7064
|
-
let prev = "";
|
|
7065
|
-
for (const path of paths) {
|
|
7066
|
-
if (prev && path.startsWith(prev + "/")) continue;
|
|
7067
|
-
minimal.push(path);
|
|
7068
|
-
prev = path;
|
|
7069
|
-
}
|
|
7070
|
-
return minimal;
|
|
8596
|
+
return output.split("\n").filter((p) => p.length > 0 && !p.startsWith(".git/"));
|
|
7071
8597
|
} catch {
|
|
7072
8598
|
return [];
|
|
7073
8599
|
}
|
|
7074
8600
|
}
|
|
7075
|
-
|
|
7076
|
-
|
|
7077
|
-
|
|
7078
|
-
|
|
7079
|
-
}
|
|
7080
|
-
|
|
7081
|
-
|
|
7082
|
-
items = items.filter((item) => !isJunkFile(item));
|
|
7083
|
-
if (skipDirs && skipDirs.length > 0) {
|
|
7084
|
-
items = items.filter(
|
|
7085
|
-
(item) => !skipDirs.some((dir) => item.split("/").includes(dir))
|
|
7086
|
-
);
|
|
7087
|
-
}
|
|
8601
|
+
function copyIgnoredFiles(repoPath, worktreePath, patterns) {
|
|
8602
|
+
const raw = patterns ?? DEFAULT_COPY_PATTERNS;
|
|
8603
|
+
if (raw.length === 0) return;
|
|
8604
|
+
const globs = raw.map((p) => p.includes("/") ? p : `**/${p}`);
|
|
8605
|
+
const isMatch = (0, import_picomatch.default)(globs, { dot: true });
|
|
8606
|
+
const allFiles = getIgnoredFiles(repoPath);
|
|
8607
|
+
const items = allFiles.filter((file) => isMatch(file));
|
|
7088
8608
|
if (items.length === 0) return;
|
|
7089
|
-
console.log(dim(`Copying
|
|
8609
|
+
console.log(dim(`Copying config files:`));
|
|
7090
8610
|
for (const item of items) {
|
|
7091
8611
|
console.log(dim(` ${item}`));
|
|
7092
8612
|
const dest = join2(worktreePath, item);
|
|
@@ -7187,12 +8707,9 @@ function newCommand(branchName, fromBranch) {
|
|
|
7187
8707
|
createWorktree(branch, worktreePath, fromBranch);
|
|
7188
8708
|
initSubmodules(worktreePath);
|
|
7189
8709
|
const config = loadConfig();
|
|
8710
|
+
copyIgnoredFiles(mainWorktree, worktreePath, config?.copy);
|
|
7190
8711
|
const jsPm = config?.setup ? null : detectJsPackageManager(mainWorktree);
|
|
7191
8712
|
const pyPm = config?.setup ? null : detectPythonPackageManager(mainWorktree);
|
|
7192
|
-
const skipDirs = [];
|
|
7193
|
-
if (jsPm) skipDirs.push("node_modules");
|
|
7194
|
-
if (pyPm) skipDirs.push(".venv", "venv");
|
|
7195
|
-
copyIgnoredFiles(mainWorktree, worktreePath, skipDirs);
|
|
7196
8713
|
if (jsPm) runPackageManagerInstall(jsPm, worktreePath);
|
|
7197
8714
|
if (pyPm) runPackageManagerInstall(pyPm, worktreePath);
|
|
7198
8715
|
setWorktreeMeta(store, worktreeId, {
|
|
@@ -7306,12 +8823,9 @@ function openBranch(branch, prNumber) {
|
|
|
7306
8823
|
createWorktreeForExistingBranch(branch, worktreePath);
|
|
7307
8824
|
initSubmodules(worktreePath);
|
|
7308
8825
|
const config = loadConfig();
|
|
8826
|
+
copyIgnoredFiles(mainWorktree, worktreePath, config?.copy);
|
|
7309
8827
|
const jsPm = config?.setup ? null : detectJsPackageManager(mainWorktree);
|
|
7310
8828
|
const pyPm = config?.setup ? null : detectPythonPackageManager(mainWorktree);
|
|
7311
|
-
const skipDirs = [];
|
|
7312
|
-
if (jsPm) skipDirs.push("node_modules");
|
|
7313
|
-
if (pyPm) skipDirs.push(".venv", "venv");
|
|
7314
|
-
copyIgnoredFiles(mainWorktree, worktreePath, skipDirs);
|
|
7315
8829
|
if (jsPm) runPackageManagerInstall(jsPm, worktreePath);
|
|
7316
8830
|
if (pyPm) runPackageManagerInstall(pyPm, worktreePath);
|
|
7317
8831
|
setWorktreeMeta(store, worktreeId, {
|
|
@@ -8445,7 +9959,7 @@ function promptChoice() {
|
|
|
8445
9959
|
}
|
|
8446
9960
|
|
|
8447
9961
|
// index.ts
|
|
8448
|
-
var VERSION = "0.
|
|
9962
|
+
var VERSION = "0.5.0";
|
|
8449
9963
|
function printHelp() {
|
|
8450
9964
|
const dim2 = import_picocolors4.default.dim;
|
|
8451
9965
|
const cyan2 = import_picocolors4.default.cyan;
|