claudekit-cli 3.31.0-dev.2 → 3.31.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/dist/index.js +40 -1529
- package/package.json +1 -3
package/dist/index.js
CHANGED
|
@@ -15653,1455 +15653,8 @@ var require_extract_zip = __commonJS((exports, module) => {
|
|
|
15653
15653
|
};
|
|
15654
15654
|
});
|
|
15655
15655
|
|
|
15656
|
-
// node_modules/picomatch/lib/constants.js
|
|
15657
|
-
var require_constants = __commonJS((exports, module) => {
|
|
15658
|
-
var WIN_SLASH = "\\\\/";
|
|
15659
|
-
var WIN_NO_SLASH = `[^${WIN_SLASH}]`;
|
|
15660
|
-
var DOT_LITERAL = "\\.";
|
|
15661
|
-
var PLUS_LITERAL = "\\+";
|
|
15662
|
-
var QMARK_LITERAL = "\\?";
|
|
15663
|
-
var SLASH_LITERAL = "\\/";
|
|
15664
|
-
var ONE_CHAR = "(?=.)";
|
|
15665
|
-
var QMARK = "[^/]";
|
|
15666
|
-
var END_ANCHOR = `(?:${SLASH_LITERAL}|$)`;
|
|
15667
|
-
var START_ANCHOR = `(?:^|${SLASH_LITERAL})`;
|
|
15668
|
-
var DOTS_SLASH = `${DOT_LITERAL}{1,2}${END_ANCHOR}`;
|
|
15669
|
-
var NO_DOT = `(?!${DOT_LITERAL})`;
|
|
15670
|
-
var NO_DOTS = `(?!${START_ANCHOR}${DOTS_SLASH})`;
|
|
15671
|
-
var NO_DOT_SLASH = `(?!${DOT_LITERAL}{0,1}${END_ANCHOR})`;
|
|
15672
|
-
var NO_DOTS_SLASH = `(?!${DOTS_SLASH})`;
|
|
15673
|
-
var QMARK_NO_DOT = `[^.${SLASH_LITERAL}]`;
|
|
15674
|
-
var STAR = `${QMARK}*?`;
|
|
15675
|
-
var SEP = "/";
|
|
15676
|
-
var POSIX_CHARS = {
|
|
15677
|
-
DOT_LITERAL,
|
|
15678
|
-
PLUS_LITERAL,
|
|
15679
|
-
QMARK_LITERAL,
|
|
15680
|
-
SLASH_LITERAL,
|
|
15681
|
-
ONE_CHAR,
|
|
15682
|
-
QMARK,
|
|
15683
|
-
END_ANCHOR,
|
|
15684
|
-
DOTS_SLASH,
|
|
15685
|
-
NO_DOT,
|
|
15686
|
-
NO_DOTS,
|
|
15687
|
-
NO_DOT_SLASH,
|
|
15688
|
-
NO_DOTS_SLASH,
|
|
15689
|
-
QMARK_NO_DOT,
|
|
15690
|
-
STAR,
|
|
15691
|
-
START_ANCHOR,
|
|
15692
|
-
SEP
|
|
15693
|
-
};
|
|
15694
|
-
var WINDOWS_CHARS = {
|
|
15695
|
-
...POSIX_CHARS,
|
|
15696
|
-
SLASH_LITERAL: `[${WIN_SLASH}]`,
|
|
15697
|
-
QMARK: WIN_NO_SLASH,
|
|
15698
|
-
STAR: `${WIN_NO_SLASH}*?`,
|
|
15699
|
-
DOTS_SLASH: `${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$)`,
|
|
15700
|
-
NO_DOT: `(?!${DOT_LITERAL})`,
|
|
15701
|
-
NO_DOTS: `(?!(?:^|[${WIN_SLASH}])${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`,
|
|
15702
|
-
NO_DOT_SLASH: `(?!${DOT_LITERAL}{0,1}(?:[${WIN_SLASH}]|$))`,
|
|
15703
|
-
NO_DOTS_SLASH: `(?!${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`,
|
|
15704
|
-
QMARK_NO_DOT: `[^.${WIN_SLASH}]`,
|
|
15705
|
-
START_ANCHOR: `(?:^|[${WIN_SLASH}])`,
|
|
15706
|
-
END_ANCHOR: `(?:[${WIN_SLASH}]|$)`,
|
|
15707
|
-
SEP: "\\"
|
|
15708
|
-
};
|
|
15709
|
-
var POSIX_REGEX_SOURCE = {
|
|
15710
|
-
alnum: "a-zA-Z0-9",
|
|
15711
|
-
alpha: "a-zA-Z",
|
|
15712
|
-
ascii: "\\x00-\\x7F",
|
|
15713
|
-
blank: " \\t",
|
|
15714
|
-
cntrl: "\\x00-\\x1F\\x7F",
|
|
15715
|
-
digit: "0-9",
|
|
15716
|
-
graph: "\\x21-\\x7E",
|
|
15717
|
-
lower: "a-z",
|
|
15718
|
-
print: "\\x20-\\x7E ",
|
|
15719
|
-
punct: "\\-!\"#$%&'()\\*+,./:;<=>?@[\\]^_`{|}~",
|
|
15720
|
-
space: " \\t\\r\\n\\v\\f",
|
|
15721
|
-
upper: "A-Z",
|
|
15722
|
-
word: "A-Za-z0-9_",
|
|
15723
|
-
xdigit: "A-Fa-f0-9"
|
|
15724
|
-
};
|
|
15725
|
-
module.exports = {
|
|
15726
|
-
MAX_LENGTH: 1024 * 64,
|
|
15727
|
-
POSIX_REGEX_SOURCE,
|
|
15728
|
-
REGEX_BACKSLASH: /\\(?![*+?^${}(|)[\]])/g,
|
|
15729
|
-
REGEX_NON_SPECIAL_CHARS: /^[^@![\].,$*+?^{}()|\\/]+/,
|
|
15730
|
-
REGEX_SPECIAL_CHARS: /[-*+?.^${}(|)[\]]/,
|
|
15731
|
-
REGEX_SPECIAL_CHARS_BACKREF: /(\\?)((\W)(\3*))/g,
|
|
15732
|
-
REGEX_SPECIAL_CHARS_GLOBAL: /([-*+?.^${}(|)[\]])/g,
|
|
15733
|
-
REGEX_REMOVE_BACKSLASH: /(?:\[.*?[^\\]\]|\\(?=.))/g,
|
|
15734
|
-
REPLACEMENTS: {
|
|
15735
|
-
__proto__: null,
|
|
15736
|
-
"***": "*",
|
|
15737
|
-
"**/**": "**",
|
|
15738
|
-
"**/**/**": "**"
|
|
15739
|
-
},
|
|
15740
|
-
CHAR_0: 48,
|
|
15741
|
-
CHAR_9: 57,
|
|
15742
|
-
CHAR_UPPERCASE_A: 65,
|
|
15743
|
-
CHAR_LOWERCASE_A: 97,
|
|
15744
|
-
CHAR_UPPERCASE_Z: 90,
|
|
15745
|
-
CHAR_LOWERCASE_Z: 122,
|
|
15746
|
-
CHAR_LEFT_PARENTHESES: 40,
|
|
15747
|
-
CHAR_RIGHT_PARENTHESES: 41,
|
|
15748
|
-
CHAR_ASTERISK: 42,
|
|
15749
|
-
CHAR_AMPERSAND: 38,
|
|
15750
|
-
CHAR_AT: 64,
|
|
15751
|
-
CHAR_BACKWARD_SLASH: 92,
|
|
15752
|
-
CHAR_CARRIAGE_RETURN: 13,
|
|
15753
|
-
CHAR_CIRCUMFLEX_ACCENT: 94,
|
|
15754
|
-
CHAR_COLON: 58,
|
|
15755
|
-
CHAR_COMMA: 44,
|
|
15756
|
-
CHAR_DOT: 46,
|
|
15757
|
-
CHAR_DOUBLE_QUOTE: 34,
|
|
15758
|
-
CHAR_EQUAL: 61,
|
|
15759
|
-
CHAR_EXCLAMATION_MARK: 33,
|
|
15760
|
-
CHAR_FORM_FEED: 12,
|
|
15761
|
-
CHAR_FORWARD_SLASH: 47,
|
|
15762
|
-
CHAR_GRAVE_ACCENT: 96,
|
|
15763
|
-
CHAR_HASH: 35,
|
|
15764
|
-
CHAR_HYPHEN_MINUS: 45,
|
|
15765
|
-
CHAR_LEFT_ANGLE_BRACKET: 60,
|
|
15766
|
-
CHAR_LEFT_CURLY_BRACE: 123,
|
|
15767
|
-
CHAR_LEFT_SQUARE_BRACKET: 91,
|
|
15768
|
-
CHAR_LINE_FEED: 10,
|
|
15769
|
-
CHAR_NO_BREAK_SPACE: 160,
|
|
15770
|
-
CHAR_PERCENT: 37,
|
|
15771
|
-
CHAR_PLUS: 43,
|
|
15772
|
-
CHAR_QUESTION_MARK: 63,
|
|
15773
|
-
CHAR_RIGHT_ANGLE_BRACKET: 62,
|
|
15774
|
-
CHAR_RIGHT_CURLY_BRACE: 125,
|
|
15775
|
-
CHAR_RIGHT_SQUARE_BRACKET: 93,
|
|
15776
|
-
CHAR_SEMICOLON: 59,
|
|
15777
|
-
CHAR_SINGLE_QUOTE: 39,
|
|
15778
|
-
CHAR_SPACE: 32,
|
|
15779
|
-
CHAR_TAB: 9,
|
|
15780
|
-
CHAR_UNDERSCORE: 95,
|
|
15781
|
-
CHAR_VERTICAL_LINE: 124,
|
|
15782
|
-
CHAR_ZERO_WIDTH_NOBREAK_SPACE: 65279,
|
|
15783
|
-
extglobChars(chars) {
|
|
15784
|
-
return {
|
|
15785
|
-
"!": { type: "negate", open: "(?:(?!(?:", close: `))${chars.STAR})` },
|
|
15786
|
-
"?": { type: "qmark", open: "(?:", close: ")?" },
|
|
15787
|
-
"+": { type: "plus", open: "(?:", close: ")+" },
|
|
15788
|
-
"*": { type: "star", open: "(?:", close: ")*" },
|
|
15789
|
-
"@": { type: "at", open: "(?:", close: ")" }
|
|
15790
|
-
};
|
|
15791
|
-
},
|
|
15792
|
-
globChars(win322) {
|
|
15793
|
-
return win322 === true ? WINDOWS_CHARS : POSIX_CHARS;
|
|
15794
|
-
}
|
|
15795
|
-
};
|
|
15796
|
-
});
|
|
15797
|
-
|
|
15798
|
-
// node_modules/picomatch/lib/utils.js
|
|
15799
|
-
var require_utils3 = __commonJS((exports) => {
|
|
15800
|
-
var {
|
|
15801
|
-
REGEX_BACKSLASH,
|
|
15802
|
-
REGEX_REMOVE_BACKSLASH,
|
|
15803
|
-
REGEX_SPECIAL_CHARS,
|
|
15804
|
-
REGEX_SPECIAL_CHARS_GLOBAL
|
|
15805
|
-
} = require_constants();
|
|
15806
|
-
exports.isObject = (val) => val !== null && typeof val === "object" && !Array.isArray(val);
|
|
15807
|
-
exports.hasRegexChars = (str) => REGEX_SPECIAL_CHARS.test(str);
|
|
15808
|
-
exports.isRegexChar = (str) => str.length === 1 && exports.hasRegexChars(str);
|
|
15809
|
-
exports.escapeRegex = (str) => str.replace(REGEX_SPECIAL_CHARS_GLOBAL, "\\$1");
|
|
15810
|
-
exports.toPosixSlashes = (str) => str.replace(REGEX_BACKSLASH, "/");
|
|
15811
|
-
exports.isWindows = () => {
|
|
15812
|
-
if (typeof navigator !== "undefined" && navigator.platform) {
|
|
15813
|
-
const platform10 = navigator.platform.toLowerCase();
|
|
15814
|
-
return platform10 === "win32" || platform10 === "windows";
|
|
15815
|
-
}
|
|
15816
|
-
if (typeof process !== "undefined" && process.platform) {
|
|
15817
|
-
return process.platform === "win32";
|
|
15818
|
-
}
|
|
15819
|
-
return false;
|
|
15820
|
-
};
|
|
15821
|
-
exports.removeBackslashes = (str) => {
|
|
15822
|
-
return str.replace(REGEX_REMOVE_BACKSLASH, (match) => {
|
|
15823
|
-
return match === "\\" ? "" : match;
|
|
15824
|
-
});
|
|
15825
|
-
};
|
|
15826
|
-
exports.escapeLast = (input, char, lastIdx) => {
|
|
15827
|
-
const idx = input.lastIndexOf(char, lastIdx);
|
|
15828
|
-
if (idx === -1)
|
|
15829
|
-
return input;
|
|
15830
|
-
if (input[idx - 1] === "\\")
|
|
15831
|
-
return exports.escapeLast(input, char, idx - 1);
|
|
15832
|
-
return `${input.slice(0, idx)}\\${input.slice(idx)}`;
|
|
15833
|
-
};
|
|
15834
|
-
exports.removePrefix = (input, state = {}) => {
|
|
15835
|
-
let output2 = input;
|
|
15836
|
-
if (output2.startsWith("./")) {
|
|
15837
|
-
output2 = output2.slice(2);
|
|
15838
|
-
state.prefix = "./";
|
|
15839
|
-
}
|
|
15840
|
-
return output2;
|
|
15841
|
-
};
|
|
15842
|
-
exports.wrapOutput = (input, state = {}, options = {}) => {
|
|
15843
|
-
const prepend = options.contains ? "" : "^";
|
|
15844
|
-
const append = options.contains ? "" : "$";
|
|
15845
|
-
let output2 = `${prepend}(?:${input})${append}`;
|
|
15846
|
-
if (state.negated === true) {
|
|
15847
|
-
output2 = `(?:^(?!${output2}).*$)`;
|
|
15848
|
-
}
|
|
15849
|
-
return output2;
|
|
15850
|
-
};
|
|
15851
|
-
exports.basename = (path10, { windows } = {}) => {
|
|
15852
|
-
const segs = path10.split(windows ? /[\\/]/ : "/");
|
|
15853
|
-
const last = segs[segs.length - 1];
|
|
15854
|
-
if (last === "") {
|
|
15855
|
-
return segs[segs.length - 2];
|
|
15856
|
-
}
|
|
15857
|
-
return last;
|
|
15858
|
-
};
|
|
15859
|
-
});
|
|
15860
|
-
|
|
15861
|
-
// node_modules/picomatch/lib/scan.js
|
|
15862
|
-
var require_scan = __commonJS((exports, module) => {
|
|
15863
|
-
var utils = require_utils3();
|
|
15864
|
-
var {
|
|
15865
|
-
CHAR_ASTERISK,
|
|
15866
|
-
CHAR_AT,
|
|
15867
|
-
CHAR_BACKWARD_SLASH,
|
|
15868
|
-
CHAR_COMMA,
|
|
15869
|
-
CHAR_DOT,
|
|
15870
|
-
CHAR_EXCLAMATION_MARK,
|
|
15871
|
-
CHAR_FORWARD_SLASH,
|
|
15872
|
-
CHAR_LEFT_CURLY_BRACE,
|
|
15873
|
-
CHAR_LEFT_PARENTHESES,
|
|
15874
|
-
CHAR_LEFT_SQUARE_BRACKET,
|
|
15875
|
-
CHAR_PLUS,
|
|
15876
|
-
CHAR_QUESTION_MARK,
|
|
15877
|
-
CHAR_RIGHT_CURLY_BRACE,
|
|
15878
|
-
CHAR_RIGHT_PARENTHESES,
|
|
15879
|
-
CHAR_RIGHT_SQUARE_BRACKET
|
|
15880
|
-
} = require_constants();
|
|
15881
|
-
var isPathSeparator = (code2) => {
|
|
15882
|
-
return code2 === CHAR_FORWARD_SLASH || code2 === CHAR_BACKWARD_SLASH;
|
|
15883
|
-
};
|
|
15884
|
-
var depth = (token) => {
|
|
15885
|
-
if (token.isPrefix !== true) {
|
|
15886
|
-
token.depth = token.isGlobstar ? Infinity : 1;
|
|
15887
|
-
}
|
|
15888
|
-
};
|
|
15889
|
-
var scan = (input, options) => {
|
|
15890
|
-
const opts = options || {};
|
|
15891
|
-
const length = input.length - 1;
|
|
15892
|
-
const scanToEnd = opts.parts === true || opts.scanToEnd === true;
|
|
15893
|
-
const slashes = [];
|
|
15894
|
-
const tokens = [];
|
|
15895
|
-
const parts = [];
|
|
15896
|
-
let str = input;
|
|
15897
|
-
let index = -1;
|
|
15898
|
-
let start = 0;
|
|
15899
|
-
let lastIndex = 0;
|
|
15900
|
-
let isBrace = false;
|
|
15901
|
-
let isBracket = false;
|
|
15902
|
-
let isGlob = false;
|
|
15903
|
-
let isExtglob = false;
|
|
15904
|
-
let isGlobstar = false;
|
|
15905
|
-
let braceEscaped = false;
|
|
15906
|
-
let backslashes = false;
|
|
15907
|
-
let negated = false;
|
|
15908
|
-
let negatedExtglob = false;
|
|
15909
|
-
let finished = false;
|
|
15910
|
-
let braces = 0;
|
|
15911
|
-
let prev;
|
|
15912
|
-
let code2;
|
|
15913
|
-
let token = { value: "", depth: 0, isGlob: false };
|
|
15914
|
-
const eos = () => index >= length;
|
|
15915
|
-
const peek = () => str.charCodeAt(index + 1);
|
|
15916
|
-
const advance = () => {
|
|
15917
|
-
prev = code2;
|
|
15918
|
-
return str.charCodeAt(++index);
|
|
15919
|
-
};
|
|
15920
|
-
while (index < length) {
|
|
15921
|
-
code2 = advance();
|
|
15922
|
-
let next;
|
|
15923
|
-
if (code2 === CHAR_BACKWARD_SLASH) {
|
|
15924
|
-
backslashes = token.backslashes = true;
|
|
15925
|
-
code2 = advance();
|
|
15926
|
-
if (code2 === CHAR_LEFT_CURLY_BRACE) {
|
|
15927
|
-
braceEscaped = true;
|
|
15928
|
-
}
|
|
15929
|
-
continue;
|
|
15930
|
-
}
|
|
15931
|
-
if (braceEscaped === true || code2 === CHAR_LEFT_CURLY_BRACE) {
|
|
15932
|
-
braces++;
|
|
15933
|
-
while (eos() !== true && (code2 = advance())) {
|
|
15934
|
-
if (code2 === CHAR_BACKWARD_SLASH) {
|
|
15935
|
-
backslashes = token.backslashes = true;
|
|
15936
|
-
advance();
|
|
15937
|
-
continue;
|
|
15938
|
-
}
|
|
15939
|
-
if (code2 === CHAR_LEFT_CURLY_BRACE) {
|
|
15940
|
-
braces++;
|
|
15941
|
-
continue;
|
|
15942
|
-
}
|
|
15943
|
-
if (braceEscaped !== true && code2 === CHAR_DOT && (code2 = advance()) === CHAR_DOT) {
|
|
15944
|
-
isBrace = token.isBrace = true;
|
|
15945
|
-
isGlob = token.isGlob = true;
|
|
15946
|
-
finished = true;
|
|
15947
|
-
if (scanToEnd === true) {
|
|
15948
|
-
continue;
|
|
15949
|
-
}
|
|
15950
|
-
break;
|
|
15951
|
-
}
|
|
15952
|
-
if (braceEscaped !== true && code2 === CHAR_COMMA) {
|
|
15953
|
-
isBrace = token.isBrace = true;
|
|
15954
|
-
isGlob = token.isGlob = true;
|
|
15955
|
-
finished = true;
|
|
15956
|
-
if (scanToEnd === true) {
|
|
15957
|
-
continue;
|
|
15958
|
-
}
|
|
15959
|
-
break;
|
|
15960
|
-
}
|
|
15961
|
-
if (code2 === CHAR_RIGHT_CURLY_BRACE) {
|
|
15962
|
-
braces--;
|
|
15963
|
-
if (braces === 0) {
|
|
15964
|
-
braceEscaped = false;
|
|
15965
|
-
isBrace = token.isBrace = true;
|
|
15966
|
-
finished = true;
|
|
15967
|
-
break;
|
|
15968
|
-
}
|
|
15969
|
-
}
|
|
15970
|
-
}
|
|
15971
|
-
if (scanToEnd === true) {
|
|
15972
|
-
continue;
|
|
15973
|
-
}
|
|
15974
|
-
break;
|
|
15975
|
-
}
|
|
15976
|
-
if (code2 === CHAR_FORWARD_SLASH) {
|
|
15977
|
-
slashes.push(index);
|
|
15978
|
-
tokens.push(token);
|
|
15979
|
-
token = { value: "", depth: 0, isGlob: false };
|
|
15980
|
-
if (finished === true)
|
|
15981
|
-
continue;
|
|
15982
|
-
if (prev === CHAR_DOT && index === start + 1) {
|
|
15983
|
-
start += 2;
|
|
15984
|
-
continue;
|
|
15985
|
-
}
|
|
15986
|
-
lastIndex = index + 1;
|
|
15987
|
-
continue;
|
|
15988
|
-
}
|
|
15989
|
-
if (opts.noext !== true) {
|
|
15990
|
-
const isExtglobChar = code2 === CHAR_PLUS || code2 === CHAR_AT || code2 === CHAR_ASTERISK || code2 === CHAR_QUESTION_MARK || code2 === CHAR_EXCLAMATION_MARK;
|
|
15991
|
-
if (isExtglobChar === true && peek() === CHAR_LEFT_PARENTHESES) {
|
|
15992
|
-
isGlob = token.isGlob = true;
|
|
15993
|
-
isExtglob = token.isExtglob = true;
|
|
15994
|
-
finished = true;
|
|
15995
|
-
if (code2 === CHAR_EXCLAMATION_MARK && index === start) {
|
|
15996
|
-
negatedExtglob = true;
|
|
15997
|
-
}
|
|
15998
|
-
if (scanToEnd === true) {
|
|
15999
|
-
while (eos() !== true && (code2 = advance())) {
|
|
16000
|
-
if (code2 === CHAR_BACKWARD_SLASH) {
|
|
16001
|
-
backslashes = token.backslashes = true;
|
|
16002
|
-
code2 = advance();
|
|
16003
|
-
continue;
|
|
16004
|
-
}
|
|
16005
|
-
if (code2 === CHAR_RIGHT_PARENTHESES) {
|
|
16006
|
-
isGlob = token.isGlob = true;
|
|
16007
|
-
finished = true;
|
|
16008
|
-
break;
|
|
16009
|
-
}
|
|
16010
|
-
}
|
|
16011
|
-
continue;
|
|
16012
|
-
}
|
|
16013
|
-
break;
|
|
16014
|
-
}
|
|
16015
|
-
}
|
|
16016
|
-
if (code2 === CHAR_ASTERISK) {
|
|
16017
|
-
if (prev === CHAR_ASTERISK)
|
|
16018
|
-
isGlobstar = token.isGlobstar = true;
|
|
16019
|
-
isGlob = token.isGlob = true;
|
|
16020
|
-
finished = true;
|
|
16021
|
-
if (scanToEnd === true) {
|
|
16022
|
-
continue;
|
|
16023
|
-
}
|
|
16024
|
-
break;
|
|
16025
|
-
}
|
|
16026
|
-
if (code2 === CHAR_QUESTION_MARK) {
|
|
16027
|
-
isGlob = token.isGlob = true;
|
|
16028
|
-
finished = true;
|
|
16029
|
-
if (scanToEnd === true) {
|
|
16030
|
-
continue;
|
|
16031
|
-
}
|
|
16032
|
-
break;
|
|
16033
|
-
}
|
|
16034
|
-
if (code2 === CHAR_LEFT_SQUARE_BRACKET) {
|
|
16035
|
-
while (eos() !== true && (next = advance())) {
|
|
16036
|
-
if (next === CHAR_BACKWARD_SLASH) {
|
|
16037
|
-
backslashes = token.backslashes = true;
|
|
16038
|
-
advance();
|
|
16039
|
-
continue;
|
|
16040
|
-
}
|
|
16041
|
-
if (next === CHAR_RIGHT_SQUARE_BRACKET) {
|
|
16042
|
-
isBracket = token.isBracket = true;
|
|
16043
|
-
isGlob = token.isGlob = true;
|
|
16044
|
-
finished = true;
|
|
16045
|
-
break;
|
|
16046
|
-
}
|
|
16047
|
-
}
|
|
16048
|
-
if (scanToEnd === true) {
|
|
16049
|
-
continue;
|
|
16050
|
-
}
|
|
16051
|
-
break;
|
|
16052
|
-
}
|
|
16053
|
-
if (opts.nonegate !== true && code2 === CHAR_EXCLAMATION_MARK && index === start) {
|
|
16054
|
-
negated = token.negated = true;
|
|
16055
|
-
start++;
|
|
16056
|
-
continue;
|
|
16057
|
-
}
|
|
16058
|
-
if (opts.noparen !== true && code2 === CHAR_LEFT_PARENTHESES) {
|
|
16059
|
-
isGlob = token.isGlob = true;
|
|
16060
|
-
if (scanToEnd === true) {
|
|
16061
|
-
while (eos() !== true && (code2 = advance())) {
|
|
16062
|
-
if (code2 === CHAR_LEFT_PARENTHESES) {
|
|
16063
|
-
backslashes = token.backslashes = true;
|
|
16064
|
-
code2 = advance();
|
|
16065
|
-
continue;
|
|
16066
|
-
}
|
|
16067
|
-
if (code2 === CHAR_RIGHT_PARENTHESES) {
|
|
16068
|
-
finished = true;
|
|
16069
|
-
break;
|
|
16070
|
-
}
|
|
16071
|
-
}
|
|
16072
|
-
continue;
|
|
16073
|
-
}
|
|
16074
|
-
break;
|
|
16075
|
-
}
|
|
16076
|
-
if (isGlob === true) {
|
|
16077
|
-
finished = true;
|
|
16078
|
-
if (scanToEnd === true) {
|
|
16079
|
-
continue;
|
|
16080
|
-
}
|
|
16081
|
-
break;
|
|
16082
|
-
}
|
|
16083
|
-
}
|
|
16084
|
-
if (opts.noext === true) {
|
|
16085
|
-
isExtglob = false;
|
|
16086
|
-
isGlob = false;
|
|
16087
|
-
}
|
|
16088
|
-
let base = str;
|
|
16089
|
-
let prefix = "";
|
|
16090
|
-
let glob = "";
|
|
16091
|
-
if (start > 0) {
|
|
16092
|
-
prefix = str.slice(0, start);
|
|
16093
|
-
str = str.slice(start);
|
|
16094
|
-
lastIndex -= start;
|
|
16095
|
-
}
|
|
16096
|
-
if (base && isGlob === true && lastIndex > 0) {
|
|
16097
|
-
base = str.slice(0, lastIndex);
|
|
16098
|
-
glob = str.slice(lastIndex);
|
|
16099
|
-
} else if (isGlob === true) {
|
|
16100
|
-
base = "";
|
|
16101
|
-
glob = str;
|
|
16102
|
-
} else {
|
|
16103
|
-
base = str;
|
|
16104
|
-
}
|
|
16105
|
-
if (base && base !== "" && base !== "/" && base !== str) {
|
|
16106
|
-
if (isPathSeparator(base.charCodeAt(base.length - 1))) {
|
|
16107
|
-
base = base.slice(0, -1);
|
|
16108
|
-
}
|
|
16109
|
-
}
|
|
16110
|
-
if (opts.unescape === true) {
|
|
16111
|
-
if (glob)
|
|
16112
|
-
glob = utils.removeBackslashes(glob);
|
|
16113
|
-
if (base && backslashes === true) {
|
|
16114
|
-
base = utils.removeBackslashes(base);
|
|
16115
|
-
}
|
|
16116
|
-
}
|
|
16117
|
-
const state = {
|
|
16118
|
-
prefix,
|
|
16119
|
-
input,
|
|
16120
|
-
start,
|
|
16121
|
-
base,
|
|
16122
|
-
glob,
|
|
16123
|
-
isBrace,
|
|
16124
|
-
isBracket,
|
|
16125
|
-
isGlob,
|
|
16126
|
-
isExtglob,
|
|
16127
|
-
isGlobstar,
|
|
16128
|
-
negated,
|
|
16129
|
-
negatedExtglob
|
|
16130
|
-
};
|
|
16131
|
-
if (opts.tokens === true) {
|
|
16132
|
-
state.maxDepth = 0;
|
|
16133
|
-
if (!isPathSeparator(code2)) {
|
|
16134
|
-
tokens.push(token);
|
|
16135
|
-
}
|
|
16136
|
-
state.tokens = tokens;
|
|
16137
|
-
}
|
|
16138
|
-
if (opts.parts === true || opts.tokens === true) {
|
|
16139
|
-
let prevIndex;
|
|
16140
|
-
for (let idx = 0;idx < slashes.length; idx++) {
|
|
16141
|
-
const n = prevIndex ? prevIndex + 1 : start;
|
|
16142
|
-
const i = slashes[idx];
|
|
16143
|
-
const value = input.slice(n, i);
|
|
16144
|
-
if (opts.tokens) {
|
|
16145
|
-
if (idx === 0 && start !== 0) {
|
|
16146
|
-
tokens[idx].isPrefix = true;
|
|
16147
|
-
tokens[idx].value = prefix;
|
|
16148
|
-
} else {
|
|
16149
|
-
tokens[idx].value = value;
|
|
16150
|
-
}
|
|
16151
|
-
depth(tokens[idx]);
|
|
16152
|
-
state.maxDepth += tokens[idx].depth;
|
|
16153
|
-
}
|
|
16154
|
-
if (idx !== 0 || value !== "") {
|
|
16155
|
-
parts.push(value);
|
|
16156
|
-
}
|
|
16157
|
-
prevIndex = i;
|
|
16158
|
-
}
|
|
16159
|
-
if (prevIndex && prevIndex + 1 < input.length) {
|
|
16160
|
-
const value = input.slice(prevIndex + 1);
|
|
16161
|
-
parts.push(value);
|
|
16162
|
-
if (opts.tokens) {
|
|
16163
|
-
tokens[tokens.length - 1].value = value;
|
|
16164
|
-
depth(tokens[tokens.length - 1]);
|
|
16165
|
-
state.maxDepth += tokens[tokens.length - 1].depth;
|
|
16166
|
-
}
|
|
16167
|
-
}
|
|
16168
|
-
state.slashes = slashes;
|
|
16169
|
-
state.parts = parts;
|
|
16170
|
-
}
|
|
16171
|
-
return state;
|
|
16172
|
-
};
|
|
16173
|
-
module.exports = scan;
|
|
16174
|
-
});
|
|
16175
|
-
|
|
16176
|
-
// node_modules/picomatch/lib/parse.js
|
|
16177
|
-
var require_parse = __commonJS((exports, module) => {
|
|
16178
|
-
var constants5 = require_constants();
|
|
16179
|
-
var utils = require_utils3();
|
|
16180
|
-
var {
|
|
16181
|
-
MAX_LENGTH,
|
|
16182
|
-
POSIX_REGEX_SOURCE,
|
|
16183
|
-
REGEX_NON_SPECIAL_CHARS,
|
|
16184
|
-
REGEX_SPECIAL_CHARS_BACKREF,
|
|
16185
|
-
REPLACEMENTS
|
|
16186
|
-
} = constants5;
|
|
16187
|
-
var expandRange = (args, options) => {
|
|
16188
|
-
if (typeof options.expandRange === "function") {
|
|
16189
|
-
return options.expandRange(...args, options);
|
|
16190
|
-
}
|
|
16191
|
-
args.sort();
|
|
16192
|
-
const value = `[${args.join("-")}]`;
|
|
16193
|
-
try {
|
|
16194
|
-
new RegExp(value);
|
|
16195
|
-
} catch (ex) {
|
|
16196
|
-
return args.map((v2) => utils.escapeRegex(v2)).join("..");
|
|
16197
|
-
}
|
|
16198
|
-
return value;
|
|
16199
|
-
};
|
|
16200
|
-
var syntaxError = (type, char) => {
|
|
16201
|
-
return `Missing ${type}: "${char}" - use "\\\\${char}" to match literal characters`;
|
|
16202
|
-
};
|
|
16203
|
-
var parse5 = (input, options) => {
|
|
16204
|
-
if (typeof input !== "string") {
|
|
16205
|
-
throw new TypeError("Expected a string");
|
|
16206
|
-
}
|
|
16207
|
-
input = REPLACEMENTS[input] || input;
|
|
16208
|
-
const opts = { ...options };
|
|
16209
|
-
const max = typeof opts.maxLength === "number" ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;
|
|
16210
|
-
let len = input.length;
|
|
16211
|
-
if (len > max) {
|
|
16212
|
-
throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`);
|
|
16213
|
-
}
|
|
16214
|
-
const bos = { type: "bos", value: "", output: opts.prepend || "" };
|
|
16215
|
-
const tokens = [bos];
|
|
16216
|
-
const capture = opts.capture ? "" : "?:";
|
|
16217
|
-
const PLATFORM_CHARS = constants5.globChars(opts.windows);
|
|
16218
|
-
const EXTGLOB_CHARS = constants5.extglobChars(PLATFORM_CHARS);
|
|
16219
|
-
const {
|
|
16220
|
-
DOT_LITERAL,
|
|
16221
|
-
PLUS_LITERAL,
|
|
16222
|
-
SLASH_LITERAL,
|
|
16223
|
-
ONE_CHAR,
|
|
16224
|
-
DOTS_SLASH,
|
|
16225
|
-
NO_DOT,
|
|
16226
|
-
NO_DOT_SLASH,
|
|
16227
|
-
NO_DOTS_SLASH,
|
|
16228
|
-
QMARK,
|
|
16229
|
-
QMARK_NO_DOT,
|
|
16230
|
-
STAR,
|
|
16231
|
-
START_ANCHOR
|
|
16232
|
-
} = PLATFORM_CHARS;
|
|
16233
|
-
const globstar = (opts2) => {
|
|
16234
|
-
return `(${capture}(?:(?!${START_ANCHOR}${opts2.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`;
|
|
16235
|
-
};
|
|
16236
|
-
const nodot = opts.dot ? "" : NO_DOT;
|
|
16237
|
-
const qmarkNoDot = opts.dot ? QMARK : QMARK_NO_DOT;
|
|
16238
|
-
let star = opts.bash === true ? globstar(opts) : STAR;
|
|
16239
|
-
if (opts.capture) {
|
|
16240
|
-
star = `(${star})`;
|
|
16241
|
-
}
|
|
16242
|
-
if (typeof opts.noext === "boolean") {
|
|
16243
|
-
opts.noextglob = opts.noext;
|
|
16244
|
-
}
|
|
16245
|
-
const state = {
|
|
16246
|
-
input,
|
|
16247
|
-
index: -1,
|
|
16248
|
-
start: 0,
|
|
16249
|
-
dot: opts.dot === true,
|
|
16250
|
-
consumed: "",
|
|
16251
|
-
output: "",
|
|
16252
|
-
prefix: "",
|
|
16253
|
-
backtrack: false,
|
|
16254
|
-
negated: false,
|
|
16255
|
-
brackets: 0,
|
|
16256
|
-
braces: 0,
|
|
16257
|
-
parens: 0,
|
|
16258
|
-
quotes: 0,
|
|
16259
|
-
globstar: false,
|
|
16260
|
-
tokens
|
|
16261
|
-
};
|
|
16262
|
-
input = utils.removePrefix(input, state);
|
|
16263
|
-
len = input.length;
|
|
16264
|
-
const extglobs = [];
|
|
16265
|
-
const braces = [];
|
|
16266
|
-
const stack = [];
|
|
16267
|
-
let prev = bos;
|
|
16268
|
-
let value;
|
|
16269
|
-
const eos = () => state.index === len - 1;
|
|
16270
|
-
const peek = state.peek = (n = 1) => input[state.index + n];
|
|
16271
|
-
const advance = state.advance = () => input[++state.index] || "";
|
|
16272
|
-
const remaining = () => input.slice(state.index + 1);
|
|
16273
|
-
const consume = (value2 = "", num = 0) => {
|
|
16274
|
-
state.consumed += value2;
|
|
16275
|
-
state.index += num;
|
|
16276
|
-
};
|
|
16277
|
-
const append = (token) => {
|
|
16278
|
-
state.output += token.output != null ? token.output : token.value;
|
|
16279
|
-
consume(token.value);
|
|
16280
|
-
};
|
|
16281
|
-
const negate = () => {
|
|
16282
|
-
let count = 1;
|
|
16283
|
-
while (peek() === "!" && (peek(2) !== "(" || peek(3) === "?")) {
|
|
16284
|
-
advance();
|
|
16285
|
-
state.start++;
|
|
16286
|
-
count++;
|
|
16287
|
-
}
|
|
16288
|
-
if (count % 2 === 0) {
|
|
16289
|
-
return false;
|
|
16290
|
-
}
|
|
16291
|
-
state.negated = true;
|
|
16292
|
-
state.start++;
|
|
16293
|
-
return true;
|
|
16294
|
-
};
|
|
16295
|
-
const increment = (type) => {
|
|
16296
|
-
state[type]++;
|
|
16297
|
-
stack.push(type);
|
|
16298
|
-
};
|
|
16299
|
-
const decrement = (type) => {
|
|
16300
|
-
state[type]--;
|
|
16301
|
-
stack.pop();
|
|
16302
|
-
};
|
|
16303
|
-
const push2 = (tok) => {
|
|
16304
|
-
if (prev.type === "globstar") {
|
|
16305
|
-
const isBrace = state.braces > 0 && (tok.type === "comma" || tok.type === "brace");
|
|
16306
|
-
const isExtglob = tok.extglob === true || extglobs.length && (tok.type === "pipe" || tok.type === "paren");
|
|
16307
|
-
if (tok.type !== "slash" && tok.type !== "paren" && !isBrace && !isExtglob) {
|
|
16308
|
-
state.output = state.output.slice(0, -prev.output.length);
|
|
16309
|
-
prev.type = "star";
|
|
16310
|
-
prev.value = "*";
|
|
16311
|
-
prev.output = star;
|
|
16312
|
-
state.output += prev.output;
|
|
16313
|
-
}
|
|
16314
|
-
}
|
|
16315
|
-
if (extglobs.length && tok.type !== "paren") {
|
|
16316
|
-
extglobs[extglobs.length - 1].inner += tok.value;
|
|
16317
|
-
}
|
|
16318
|
-
if (tok.value || tok.output)
|
|
16319
|
-
append(tok);
|
|
16320
|
-
if (prev && prev.type === "text" && tok.type === "text") {
|
|
16321
|
-
prev.output = (prev.output || prev.value) + tok.value;
|
|
16322
|
-
prev.value += tok.value;
|
|
16323
|
-
return;
|
|
16324
|
-
}
|
|
16325
|
-
tok.prev = prev;
|
|
16326
|
-
tokens.push(tok);
|
|
16327
|
-
prev = tok;
|
|
16328
|
-
};
|
|
16329
|
-
const extglobOpen = (type, value2) => {
|
|
16330
|
-
const token = { ...EXTGLOB_CHARS[value2], conditions: 1, inner: "" };
|
|
16331
|
-
token.prev = prev;
|
|
16332
|
-
token.parens = state.parens;
|
|
16333
|
-
token.output = state.output;
|
|
16334
|
-
const output2 = (opts.capture ? "(" : "") + token.open;
|
|
16335
|
-
increment("parens");
|
|
16336
|
-
push2({ type, value: value2, output: state.output ? "" : ONE_CHAR });
|
|
16337
|
-
push2({ type: "paren", extglob: true, value: advance(), output: output2 });
|
|
16338
|
-
extglobs.push(token);
|
|
16339
|
-
};
|
|
16340
|
-
const extglobClose = (token) => {
|
|
16341
|
-
let output2 = token.close + (opts.capture ? ")" : "");
|
|
16342
|
-
let rest;
|
|
16343
|
-
if (token.type === "negate") {
|
|
16344
|
-
let extglobStar = star;
|
|
16345
|
-
if (token.inner && token.inner.length > 1 && token.inner.includes("/")) {
|
|
16346
|
-
extglobStar = globstar(opts);
|
|
16347
|
-
}
|
|
16348
|
-
if (extglobStar !== star || eos() || /^\)+$/.test(remaining())) {
|
|
16349
|
-
output2 = token.close = `)$))${extglobStar}`;
|
|
16350
|
-
}
|
|
16351
|
-
if (token.inner.includes("*") && (rest = remaining()) && /^\.[^\\/.]+$/.test(rest)) {
|
|
16352
|
-
const expression = parse5(rest, { ...options, fastpaths: false }).output;
|
|
16353
|
-
output2 = token.close = `)${expression})${extglobStar})`;
|
|
16354
|
-
}
|
|
16355
|
-
if (token.prev.type === "bos") {
|
|
16356
|
-
state.negatedExtglob = true;
|
|
16357
|
-
}
|
|
16358
|
-
}
|
|
16359
|
-
push2({ type: "paren", extglob: true, value, output: output2 });
|
|
16360
|
-
decrement("parens");
|
|
16361
|
-
};
|
|
16362
|
-
if (opts.fastpaths !== false && !/(^[*!]|[/()[\]{}"])/.test(input)) {
|
|
16363
|
-
let backslashes = false;
|
|
16364
|
-
let output2 = input.replace(REGEX_SPECIAL_CHARS_BACKREF, (m2, esc, chars, first, rest, index) => {
|
|
16365
|
-
if (first === "\\") {
|
|
16366
|
-
backslashes = true;
|
|
16367
|
-
return m2;
|
|
16368
|
-
}
|
|
16369
|
-
if (first === "?") {
|
|
16370
|
-
if (esc) {
|
|
16371
|
-
return esc + first + (rest ? QMARK.repeat(rest.length) : "");
|
|
16372
|
-
}
|
|
16373
|
-
if (index === 0) {
|
|
16374
|
-
return qmarkNoDot + (rest ? QMARK.repeat(rest.length) : "");
|
|
16375
|
-
}
|
|
16376
|
-
return QMARK.repeat(chars.length);
|
|
16377
|
-
}
|
|
16378
|
-
if (first === ".") {
|
|
16379
|
-
return DOT_LITERAL.repeat(chars.length);
|
|
16380
|
-
}
|
|
16381
|
-
if (first === "*") {
|
|
16382
|
-
if (esc) {
|
|
16383
|
-
return esc + first + (rest ? star : "");
|
|
16384
|
-
}
|
|
16385
|
-
return star;
|
|
16386
|
-
}
|
|
16387
|
-
return esc ? m2 : `\\${m2}`;
|
|
16388
|
-
});
|
|
16389
|
-
if (backslashes === true) {
|
|
16390
|
-
if (opts.unescape === true) {
|
|
16391
|
-
output2 = output2.replace(/\\/g, "");
|
|
16392
|
-
} else {
|
|
16393
|
-
output2 = output2.replace(/\\+/g, (m2) => {
|
|
16394
|
-
return m2.length % 2 === 0 ? "\\\\" : m2 ? "\\" : "";
|
|
16395
|
-
});
|
|
16396
|
-
}
|
|
16397
|
-
}
|
|
16398
|
-
if (output2 === input && opts.contains === true) {
|
|
16399
|
-
state.output = input;
|
|
16400
|
-
return state;
|
|
16401
|
-
}
|
|
16402
|
-
state.output = utils.wrapOutput(output2, state, options);
|
|
16403
|
-
return state;
|
|
16404
|
-
}
|
|
16405
|
-
while (!eos()) {
|
|
16406
|
-
value = advance();
|
|
16407
|
-
if (value === "\x00") {
|
|
16408
|
-
continue;
|
|
16409
|
-
}
|
|
16410
|
-
if (value === "\\") {
|
|
16411
|
-
const next = peek();
|
|
16412
|
-
if (next === "/" && opts.bash !== true) {
|
|
16413
|
-
continue;
|
|
16414
|
-
}
|
|
16415
|
-
if (next === "." || next === ";") {
|
|
16416
|
-
continue;
|
|
16417
|
-
}
|
|
16418
|
-
if (!next) {
|
|
16419
|
-
value += "\\";
|
|
16420
|
-
push2({ type: "text", value });
|
|
16421
|
-
continue;
|
|
16422
|
-
}
|
|
16423
|
-
const match = /^\\+/.exec(remaining());
|
|
16424
|
-
let slashes = 0;
|
|
16425
|
-
if (match && match[0].length > 2) {
|
|
16426
|
-
slashes = match[0].length;
|
|
16427
|
-
state.index += slashes;
|
|
16428
|
-
if (slashes % 2 !== 0) {
|
|
16429
|
-
value += "\\";
|
|
16430
|
-
}
|
|
16431
|
-
}
|
|
16432
|
-
if (opts.unescape === true) {
|
|
16433
|
-
value = advance();
|
|
16434
|
-
} else {
|
|
16435
|
-
value += advance();
|
|
16436
|
-
}
|
|
16437
|
-
if (state.brackets === 0) {
|
|
16438
|
-
push2({ type: "text", value });
|
|
16439
|
-
continue;
|
|
16440
|
-
}
|
|
16441
|
-
}
|
|
16442
|
-
if (state.brackets > 0 && (value !== "]" || prev.value === "[" || prev.value === "[^")) {
|
|
16443
|
-
if (opts.posix !== false && value === ":") {
|
|
16444
|
-
const inner = prev.value.slice(1);
|
|
16445
|
-
if (inner.includes("[")) {
|
|
16446
|
-
prev.posix = true;
|
|
16447
|
-
if (inner.includes(":")) {
|
|
16448
|
-
const idx = prev.value.lastIndexOf("[");
|
|
16449
|
-
const pre = prev.value.slice(0, idx);
|
|
16450
|
-
const rest2 = prev.value.slice(idx + 2);
|
|
16451
|
-
const posix = POSIX_REGEX_SOURCE[rest2];
|
|
16452
|
-
if (posix) {
|
|
16453
|
-
prev.value = pre + posix;
|
|
16454
|
-
state.backtrack = true;
|
|
16455
|
-
advance();
|
|
16456
|
-
if (!bos.output && tokens.indexOf(prev) === 1) {
|
|
16457
|
-
bos.output = ONE_CHAR;
|
|
16458
|
-
}
|
|
16459
|
-
continue;
|
|
16460
|
-
}
|
|
16461
|
-
}
|
|
16462
|
-
}
|
|
16463
|
-
}
|
|
16464
|
-
if (value === "[" && peek() !== ":" || value === "-" && peek() === "]") {
|
|
16465
|
-
value = `\\${value}`;
|
|
16466
|
-
}
|
|
16467
|
-
if (value === "]" && (prev.value === "[" || prev.value === "[^")) {
|
|
16468
|
-
value = `\\${value}`;
|
|
16469
|
-
}
|
|
16470
|
-
if (opts.posix === true && value === "!" && prev.value === "[") {
|
|
16471
|
-
value = "^";
|
|
16472
|
-
}
|
|
16473
|
-
prev.value += value;
|
|
16474
|
-
append({ value });
|
|
16475
|
-
continue;
|
|
16476
|
-
}
|
|
16477
|
-
if (state.quotes === 1 && value !== '"') {
|
|
16478
|
-
value = utils.escapeRegex(value);
|
|
16479
|
-
prev.value += value;
|
|
16480
|
-
append({ value });
|
|
16481
|
-
continue;
|
|
16482
|
-
}
|
|
16483
|
-
if (value === '"') {
|
|
16484
|
-
state.quotes = state.quotes === 1 ? 0 : 1;
|
|
16485
|
-
if (opts.keepQuotes === true) {
|
|
16486
|
-
push2({ type: "text", value });
|
|
16487
|
-
}
|
|
16488
|
-
continue;
|
|
16489
|
-
}
|
|
16490
|
-
if (value === "(") {
|
|
16491
|
-
increment("parens");
|
|
16492
|
-
push2({ type: "paren", value });
|
|
16493
|
-
continue;
|
|
16494
|
-
}
|
|
16495
|
-
if (value === ")") {
|
|
16496
|
-
if (state.parens === 0 && opts.strictBrackets === true) {
|
|
16497
|
-
throw new SyntaxError(syntaxError("opening", "("));
|
|
16498
|
-
}
|
|
16499
|
-
const extglob = extglobs[extglobs.length - 1];
|
|
16500
|
-
if (extglob && state.parens === extglob.parens + 1) {
|
|
16501
|
-
extglobClose(extglobs.pop());
|
|
16502
|
-
continue;
|
|
16503
|
-
}
|
|
16504
|
-
push2({ type: "paren", value, output: state.parens ? ")" : "\\)" });
|
|
16505
|
-
decrement("parens");
|
|
16506
|
-
continue;
|
|
16507
|
-
}
|
|
16508
|
-
if (value === "[") {
|
|
16509
|
-
if (opts.nobracket === true || !remaining().includes("]")) {
|
|
16510
|
-
if (opts.nobracket !== true && opts.strictBrackets === true) {
|
|
16511
|
-
throw new SyntaxError(syntaxError("closing", "]"));
|
|
16512
|
-
}
|
|
16513
|
-
value = `\\${value}`;
|
|
16514
|
-
} else {
|
|
16515
|
-
increment("brackets");
|
|
16516
|
-
}
|
|
16517
|
-
push2({ type: "bracket", value });
|
|
16518
|
-
continue;
|
|
16519
|
-
}
|
|
16520
|
-
if (value === "]") {
|
|
16521
|
-
if (opts.nobracket === true || prev && prev.type === "bracket" && prev.value.length === 1) {
|
|
16522
|
-
push2({ type: "text", value, output: `\\${value}` });
|
|
16523
|
-
continue;
|
|
16524
|
-
}
|
|
16525
|
-
if (state.brackets === 0) {
|
|
16526
|
-
if (opts.strictBrackets === true) {
|
|
16527
|
-
throw new SyntaxError(syntaxError("opening", "["));
|
|
16528
|
-
}
|
|
16529
|
-
push2({ type: "text", value, output: `\\${value}` });
|
|
16530
|
-
continue;
|
|
16531
|
-
}
|
|
16532
|
-
decrement("brackets");
|
|
16533
|
-
const prevValue = prev.value.slice(1);
|
|
16534
|
-
if (prev.posix !== true && prevValue[0] === "^" && !prevValue.includes("/")) {
|
|
16535
|
-
value = `/${value}`;
|
|
16536
|
-
}
|
|
16537
|
-
prev.value += value;
|
|
16538
|
-
append({ value });
|
|
16539
|
-
if (opts.literalBrackets === false || utils.hasRegexChars(prevValue)) {
|
|
16540
|
-
continue;
|
|
16541
|
-
}
|
|
16542
|
-
const escaped = utils.escapeRegex(prev.value);
|
|
16543
|
-
state.output = state.output.slice(0, -prev.value.length);
|
|
16544
|
-
if (opts.literalBrackets === true) {
|
|
16545
|
-
state.output += escaped;
|
|
16546
|
-
prev.value = escaped;
|
|
16547
|
-
continue;
|
|
16548
|
-
}
|
|
16549
|
-
prev.value = `(${capture}${escaped}|${prev.value})`;
|
|
16550
|
-
state.output += prev.value;
|
|
16551
|
-
continue;
|
|
16552
|
-
}
|
|
16553
|
-
if (value === "{" && opts.nobrace !== true) {
|
|
16554
|
-
increment("braces");
|
|
16555
|
-
const open = {
|
|
16556
|
-
type: "brace",
|
|
16557
|
-
value,
|
|
16558
|
-
output: "(",
|
|
16559
|
-
outputIndex: state.output.length,
|
|
16560
|
-
tokensIndex: state.tokens.length
|
|
16561
|
-
};
|
|
16562
|
-
braces.push(open);
|
|
16563
|
-
push2(open);
|
|
16564
|
-
continue;
|
|
16565
|
-
}
|
|
16566
|
-
if (value === "}") {
|
|
16567
|
-
const brace = braces[braces.length - 1];
|
|
16568
|
-
if (opts.nobrace === true || !brace) {
|
|
16569
|
-
push2({ type: "text", value, output: value });
|
|
16570
|
-
continue;
|
|
16571
|
-
}
|
|
16572
|
-
let output2 = ")";
|
|
16573
|
-
if (brace.dots === true) {
|
|
16574
|
-
const arr = tokens.slice();
|
|
16575
|
-
const range = [];
|
|
16576
|
-
for (let i = arr.length - 1;i >= 0; i--) {
|
|
16577
|
-
tokens.pop();
|
|
16578
|
-
if (arr[i].type === "brace") {
|
|
16579
|
-
break;
|
|
16580
|
-
}
|
|
16581
|
-
if (arr[i].type !== "dots") {
|
|
16582
|
-
range.unshift(arr[i].value);
|
|
16583
|
-
}
|
|
16584
|
-
}
|
|
16585
|
-
output2 = expandRange(range, opts);
|
|
16586
|
-
state.backtrack = true;
|
|
16587
|
-
}
|
|
16588
|
-
if (brace.comma !== true && brace.dots !== true) {
|
|
16589
|
-
const out = state.output.slice(0, brace.outputIndex);
|
|
16590
|
-
const toks = state.tokens.slice(brace.tokensIndex);
|
|
16591
|
-
brace.value = brace.output = "\\{";
|
|
16592
|
-
value = output2 = "\\}";
|
|
16593
|
-
state.output = out;
|
|
16594
|
-
for (const t of toks) {
|
|
16595
|
-
state.output += t.output || t.value;
|
|
16596
|
-
}
|
|
16597
|
-
}
|
|
16598
|
-
push2({ type: "brace", value, output: output2 });
|
|
16599
|
-
decrement("braces");
|
|
16600
|
-
braces.pop();
|
|
16601
|
-
continue;
|
|
16602
|
-
}
|
|
16603
|
-
if (value === "|") {
|
|
16604
|
-
if (extglobs.length > 0) {
|
|
16605
|
-
extglobs[extglobs.length - 1].conditions++;
|
|
16606
|
-
}
|
|
16607
|
-
push2({ type: "text", value });
|
|
16608
|
-
continue;
|
|
16609
|
-
}
|
|
16610
|
-
if (value === ",") {
|
|
16611
|
-
let output2 = value;
|
|
16612
|
-
const brace = braces[braces.length - 1];
|
|
16613
|
-
if (brace && stack[stack.length - 1] === "braces") {
|
|
16614
|
-
brace.comma = true;
|
|
16615
|
-
output2 = "|";
|
|
16616
|
-
}
|
|
16617
|
-
push2({ type: "comma", value, output: output2 });
|
|
16618
|
-
continue;
|
|
16619
|
-
}
|
|
16620
|
-
if (value === "/") {
|
|
16621
|
-
if (prev.type === "dot" && state.index === state.start + 1) {
|
|
16622
|
-
state.start = state.index + 1;
|
|
16623
|
-
state.consumed = "";
|
|
16624
|
-
state.output = "";
|
|
16625
|
-
tokens.pop();
|
|
16626
|
-
prev = bos;
|
|
16627
|
-
continue;
|
|
16628
|
-
}
|
|
16629
|
-
push2({ type: "slash", value, output: SLASH_LITERAL });
|
|
16630
|
-
continue;
|
|
16631
|
-
}
|
|
16632
|
-
if (value === ".") {
|
|
16633
|
-
if (state.braces > 0 && prev.type === "dot") {
|
|
16634
|
-
if (prev.value === ".")
|
|
16635
|
-
prev.output = DOT_LITERAL;
|
|
16636
|
-
const brace = braces[braces.length - 1];
|
|
16637
|
-
prev.type = "dots";
|
|
16638
|
-
prev.output += value;
|
|
16639
|
-
prev.value += value;
|
|
16640
|
-
brace.dots = true;
|
|
16641
|
-
continue;
|
|
16642
|
-
}
|
|
16643
|
-
if (state.braces + state.parens === 0 && prev.type !== "bos" && prev.type !== "slash") {
|
|
16644
|
-
push2({ type: "text", value, output: DOT_LITERAL });
|
|
16645
|
-
continue;
|
|
16646
|
-
}
|
|
16647
|
-
push2({ type: "dot", value, output: DOT_LITERAL });
|
|
16648
|
-
continue;
|
|
16649
|
-
}
|
|
16650
|
-
if (value === "?") {
|
|
16651
|
-
const isGroup = prev && prev.value === "(";
|
|
16652
|
-
if (!isGroup && opts.noextglob !== true && peek() === "(" && peek(2) !== "?") {
|
|
16653
|
-
extglobOpen("qmark", value);
|
|
16654
|
-
continue;
|
|
16655
|
-
}
|
|
16656
|
-
if (prev && prev.type === "paren") {
|
|
16657
|
-
const next = peek();
|
|
16658
|
-
let output2 = value;
|
|
16659
|
-
if (prev.value === "(" && !/[!=<:]/.test(next) || next === "<" && !/<([!=]|\w+>)/.test(remaining())) {
|
|
16660
|
-
output2 = `\\${value}`;
|
|
16661
|
-
}
|
|
16662
|
-
push2({ type: "text", value, output: output2 });
|
|
16663
|
-
continue;
|
|
16664
|
-
}
|
|
16665
|
-
if (opts.dot !== true && (prev.type === "slash" || prev.type === "bos")) {
|
|
16666
|
-
push2({ type: "qmark", value, output: QMARK_NO_DOT });
|
|
16667
|
-
continue;
|
|
16668
|
-
}
|
|
16669
|
-
push2({ type: "qmark", value, output: QMARK });
|
|
16670
|
-
continue;
|
|
16671
|
-
}
|
|
16672
|
-
if (value === "!") {
|
|
16673
|
-
if (opts.noextglob !== true && peek() === "(") {
|
|
16674
|
-
if (peek(2) !== "?" || !/[!=<:]/.test(peek(3))) {
|
|
16675
|
-
extglobOpen("negate", value);
|
|
16676
|
-
continue;
|
|
16677
|
-
}
|
|
16678
|
-
}
|
|
16679
|
-
if (opts.nonegate !== true && state.index === 0) {
|
|
16680
|
-
negate();
|
|
16681
|
-
continue;
|
|
16682
|
-
}
|
|
16683
|
-
}
|
|
16684
|
-
if (value === "+") {
|
|
16685
|
-
if (opts.noextglob !== true && peek() === "(" && peek(2) !== "?") {
|
|
16686
|
-
extglobOpen("plus", value);
|
|
16687
|
-
continue;
|
|
16688
|
-
}
|
|
16689
|
-
if (prev && prev.value === "(" || opts.regex === false) {
|
|
16690
|
-
push2({ type: "plus", value, output: PLUS_LITERAL });
|
|
16691
|
-
continue;
|
|
16692
|
-
}
|
|
16693
|
-
if (prev && (prev.type === "bracket" || prev.type === "paren" || prev.type === "brace") || state.parens > 0) {
|
|
16694
|
-
push2({ type: "plus", value });
|
|
16695
|
-
continue;
|
|
16696
|
-
}
|
|
16697
|
-
push2({ type: "plus", value: PLUS_LITERAL });
|
|
16698
|
-
continue;
|
|
16699
|
-
}
|
|
16700
|
-
if (value === "@") {
|
|
16701
|
-
if (opts.noextglob !== true && peek() === "(" && peek(2) !== "?") {
|
|
16702
|
-
push2({ type: "at", extglob: true, value, output: "" });
|
|
16703
|
-
continue;
|
|
16704
|
-
}
|
|
16705
|
-
push2({ type: "text", value });
|
|
16706
|
-
continue;
|
|
16707
|
-
}
|
|
16708
|
-
if (value !== "*") {
|
|
16709
|
-
if (value === "$" || value === "^") {
|
|
16710
|
-
value = `\\${value}`;
|
|
16711
|
-
}
|
|
16712
|
-
const match = REGEX_NON_SPECIAL_CHARS.exec(remaining());
|
|
16713
|
-
if (match) {
|
|
16714
|
-
value += match[0];
|
|
16715
|
-
state.index += match[0].length;
|
|
16716
|
-
}
|
|
16717
|
-
push2({ type: "text", value });
|
|
16718
|
-
continue;
|
|
16719
|
-
}
|
|
16720
|
-
if (prev && (prev.type === "globstar" || prev.star === true)) {
|
|
16721
|
-
prev.type = "star";
|
|
16722
|
-
prev.star = true;
|
|
16723
|
-
prev.value += value;
|
|
16724
|
-
prev.output = star;
|
|
16725
|
-
state.backtrack = true;
|
|
16726
|
-
state.globstar = true;
|
|
16727
|
-
consume(value);
|
|
16728
|
-
continue;
|
|
16729
|
-
}
|
|
16730
|
-
let rest = remaining();
|
|
16731
|
-
if (opts.noextglob !== true && /^\([^?]/.test(rest)) {
|
|
16732
|
-
extglobOpen("star", value);
|
|
16733
|
-
continue;
|
|
16734
|
-
}
|
|
16735
|
-
if (prev.type === "star") {
|
|
16736
|
-
if (opts.noglobstar === true) {
|
|
16737
|
-
consume(value);
|
|
16738
|
-
continue;
|
|
16739
|
-
}
|
|
16740
|
-
const prior = prev.prev;
|
|
16741
|
-
const before = prior.prev;
|
|
16742
|
-
const isStart = prior.type === "slash" || prior.type === "bos";
|
|
16743
|
-
const afterStar = before && (before.type === "star" || before.type === "globstar");
|
|
16744
|
-
if (opts.bash === true && (!isStart || rest[0] && rest[0] !== "/")) {
|
|
16745
|
-
push2({ type: "star", value, output: "" });
|
|
16746
|
-
continue;
|
|
16747
|
-
}
|
|
16748
|
-
const isBrace = state.braces > 0 && (prior.type === "comma" || prior.type === "brace");
|
|
16749
|
-
const isExtglob = extglobs.length && (prior.type === "pipe" || prior.type === "paren");
|
|
16750
|
-
if (!isStart && prior.type !== "paren" && !isBrace && !isExtglob) {
|
|
16751
|
-
push2({ type: "star", value, output: "" });
|
|
16752
|
-
continue;
|
|
16753
|
-
}
|
|
16754
|
-
while (rest.slice(0, 3) === "/**") {
|
|
16755
|
-
const after = input[state.index + 4];
|
|
16756
|
-
if (after && after !== "/") {
|
|
16757
|
-
break;
|
|
16758
|
-
}
|
|
16759
|
-
rest = rest.slice(3);
|
|
16760
|
-
consume("/**", 3);
|
|
16761
|
-
}
|
|
16762
|
-
if (prior.type === "bos" && eos()) {
|
|
16763
|
-
prev.type = "globstar";
|
|
16764
|
-
prev.value += value;
|
|
16765
|
-
prev.output = globstar(opts);
|
|
16766
|
-
state.output = prev.output;
|
|
16767
|
-
state.globstar = true;
|
|
16768
|
-
consume(value);
|
|
16769
|
-
continue;
|
|
16770
|
-
}
|
|
16771
|
-
if (prior.type === "slash" && prior.prev.type !== "bos" && !afterStar && eos()) {
|
|
16772
|
-
state.output = state.output.slice(0, -(prior.output + prev.output).length);
|
|
16773
|
-
prior.output = `(?:${prior.output}`;
|
|
16774
|
-
prev.type = "globstar";
|
|
16775
|
-
prev.output = globstar(opts) + (opts.strictSlashes ? ")" : "|$)");
|
|
16776
|
-
prev.value += value;
|
|
16777
|
-
state.globstar = true;
|
|
16778
|
-
state.output += prior.output + prev.output;
|
|
16779
|
-
consume(value);
|
|
16780
|
-
continue;
|
|
16781
|
-
}
|
|
16782
|
-
if (prior.type === "slash" && prior.prev.type !== "bos" && rest[0] === "/") {
|
|
16783
|
-
const end = rest[1] !== undefined ? "|$" : "";
|
|
16784
|
-
state.output = state.output.slice(0, -(prior.output + prev.output).length);
|
|
16785
|
-
prior.output = `(?:${prior.output}`;
|
|
16786
|
-
prev.type = "globstar";
|
|
16787
|
-
prev.output = `${globstar(opts)}${SLASH_LITERAL}|${SLASH_LITERAL}${end})`;
|
|
16788
|
-
prev.value += value;
|
|
16789
|
-
state.output += prior.output + prev.output;
|
|
16790
|
-
state.globstar = true;
|
|
16791
|
-
consume(value + advance());
|
|
16792
|
-
push2({ type: "slash", value: "/", output: "" });
|
|
16793
|
-
continue;
|
|
16794
|
-
}
|
|
16795
|
-
if (prior.type === "bos" && rest[0] === "/") {
|
|
16796
|
-
prev.type = "globstar";
|
|
16797
|
-
prev.value += value;
|
|
16798
|
-
prev.output = `(?:^|${SLASH_LITERAL}|${globstar(opts)}${SLASH_LITERAL})`;
|
|
16799
|
-
state.output = prev.output;
|
|
16800
|
-
state.globstar = true;
|
|
16801
|
-
consume(value + advance());
|
|
16802
|
-
push2({ type: "slash", value: "/", output: "" });
|
|
16803
|
-
continue;
|
|
16804
|
-
}
|
|
16805
|
-
state.output = state.output.slice(0, -prev.output.length);
|
|
16806
|
-
prev.type = "globstar";
|
|
16807
|
-
prev.output = globstar(opts);
|
|
16808
|
-
prev.value += value;
|
|
16809
|
-
state.output += prev.output;
|
|
16810
|
-
state.globstar = true;
|
|
16811
|
-
consume(value);
|
|
16812
|
-
continue;
|
|
16813
|
-
}
|
|
16814
|
-
const token = { type: "star", value, output: star };
|
|
16815
|
-
if (opts.bash === true) {
|
|
16816
|
-
token.output = ".*?";
|
|
16817
|
-
if (prev.type === "bos" || prev.type === "slash") {
|
|
16818
|
-
token.output = nodot + token.output;
|
|
16819
|
-
}
|
|
16820
|
-
push2(token);
|
|
16821
|
-
continue;
|
|
16822
|
-
}
|
|
16823
|
-
if (prev && (prev.type === "bracket" || prev.type === "paren") && opts.regex === true) {
|
|
16824
|
-
token.output = value;
|
|
16825
|
-
push2(token);
|
|
16826
|
-
continue;
|
|
16827
|
-
}
|
|
16828
|
-
if (state.index === state.start || prev.type === "slash" || prev.type === "dot") {
|
|
16829
|
-
if (prev.type === "dot") {
|
|
16830
|
-
state.output += NO_DOT_SLASH;
|
|
16831
|
-
prev.output += NO_DOT_SLASH;
|
|
16832
|
-
} else if (opts.dot === true) {
|
|
16833
|
-
state.output += NO_DOTS_SLASH;
|
|
16834
|
-
prev.output += NO_DOTS_SLASH;
|
|
16835
|
-
} else {
|
|
16836
|
-
state.output += nodot;
|
|
16837
|
-
prev.output += nodot;
|
|
16838
|
-
}
|
|
16839
|
-
if (peek() !== "*") {
|
|
16840
|
-
state.output += ONE_CHAR;
|
|
16841
|
-
prev.output += ONE_CHAR;
|
|
16842
|
-
}
|
|
16843
|
-
}
|
|
16844
|
-
push2(token);
|
|
16845
|
-
}
|
|
16846
|
-
while (state.brackets > 0) {
|
|
16847
|
-
if (opts.strictBrackets === true)
|
|
16848
|
-
throw new SyntaxError(syntaxError("closing", "]"));
|
|
16849
|
-
state.output = utils.escapeLast(state.output, "[");
|
|
16850
|
-
decrement("brackets");
|
|
16851
|
-
}
|
|
16852
|
-
while (state.parens > 0) {
|
|
16853
|
-
if (opts.strictBrackets === true)
|
|
16854
|
-
throw new SyntaxError(syntaxError("closing", ")"));
|
|
16855
|
-
state.output = utils.escapeLast(state.output, "(");
|
|
16856
|
-
decrement("parens");
|
|
16857
|
-
}
|
|
16858
|
-
while (state.braces > 0) {
|
|
16859
|
-
if (opts.strictBrackets === true)
|
|
16860
|
-
throw new SyntaxError(syntaxError("closing", "}"));
|
|
16861
|
-
state.output = utils.escapeLast(state.output, "{");
|
|
16862
|
-
decrement("braces");
|
|
16863
|
-
}
|
|
16864
|
-
if (opts.strictSlashes !== true && (prev.type === "star" || prev.type === "bracket")) {
|
|
16865
|
-
push2({ type: "maybe_slash", value: "", output: `${SLASH_LITERAL}?` });
|
|
16866
|
-
}
|
|
16867
|
-
if (state.backtrack === true) {
|
|
16868
|
-
state.output = "";
|
|
16869
|
-
for (const token of state.tokens) {
|
|
16870
|
-
state.output += token.output != null ? token.output : token.value;
|
|
16871
|
-
if (token.suffix) {
|
|
16872
|
-
state.output += token.suffix;
|
|
16873
|
-
}
|
|
16874
|
-
}
|
|
16875
|
-
}
|
|
16876
|
-
return state;
|
|
16877
|
-
};
|
|
16878
|
-
parse5.fastpaths = (input, options) => {
|
|
16879
|
-
const opts = { ...options };
|
|
16880
|
-
const max = typeof opts.maxLength === "number" ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;
|
|
16881
|
-
const len = input.length;
|
|
16882
|
-
if (len > max) {
|
|
16883
|
-
throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`);
|
|
16884
|
-
}
|
|
16885
|
-
input = REPLACEMENTS[input] || input;
|
|
16886
|
-
const {
|
|
16887
|
-
DOT_LITERAL,
|
|
16888
|
-
SLASH_LITERAL,
|
|
16889
|
-
ONE_CHAR,
|
|
16890
|
-
DOTS_SLASH,
|
|
16891
|
-
NO_DOT,
|
|
16892
|
-
NO_DOTS,
|
|
16893
|
-
NO_DOTS_SLASH,
|
|
16894
|
-
STAR,
|
|
16895
|
-
START_ANCHOR
|
|
16896
|
-
} = constants5.globChars(opts.windows);
|
|
16897
|
-
const nodot = opts.dot ? NO_DOTS : NO_DOT;
|
|
16898
|
-
const slashDot = opts.dot ? NO_DOTS_SLASH : NO_DOT;
|
|
16899
|
-
const capture = opts.capture ? "" : "?:";
|
|
16900
|
-
const state = { negated: false, prefix: "" };
|
|
16901
|
-
let star = opts.bash === true ? ".*?" : STAR;
|
|
16902
|
-
if (opts.capture) {
|
|
16903
|
-
star = `(${star})`;
|
|
16904
|
-
}
|
|
16905
|
-
const globstar = (opts2) => {
|
|
16906
|
-
if (opts2.noglobstar === true)
|
|
16907
|
-
return star;
|
|
16908
|
-
return `(${capture}(?:(?!${START_ANCHOR}${opts2.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`;
|
|
16909
|
-
};
|
|
16910
|
-
const create3 = (str) => {
|
|
16911
|
-
switch (str) {
|
|
16912
|
-
case "*":
|
|
16913
|
-
return `${nodot}${ONE_CHAR}${star}`;
|
|
16914
|
-
case ".*":
|
|
16915
|
-
return `${DOT_LITERAL}${ONE_CHAR}${star}`;
|
|
16916
|
-
case "*.*":
|
|
16917
|
-
return `${nodot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`;
|
|
16918
|
-
case "*/*":
|
|
16919
|
-
return `${nodot}${star}${SLASH_LITERAL}${ONE_CHAR}${slashDot}${star}`;
|
|
16920
|
-
case "**":
|
|
16921
|
-
return nodot + globstar(opts);
|
|
16922
|
-
case "**/*":
|
|
16923
|
-
return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${ONE_CHAR}${star}`;
|
|
16924
|
-
case "**/*.*":
|
|
16925
|
-
return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`;
|
|
16926
|
-
case "**/.*":
|
|
16927
|
-
return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${DOT_LITERAL}${ONE_CHAR}${star}`;
|
|
16928
|
-
default: {
|
|
16929
|
-
const match = /^(.*?)\.(\w+)$/.exec(str);
|
|
16930
|
-
if (!match)
|
|
16931
|
-
return;
|
|
16932
|
-
const source2 = create3(match[1]);
|
|
16933
|
-
if (!source2)
|
|
16934
|
-
return;
|
|
16935
|
-
return source2 + DOT_LITERAL + match[2];
|
|
16936
|
-
}
|
|
16937
|
-
}
|
|
16938
|
-
};
|
|
16939
|
-
const output2 = utils.removePrefix(input, state);
|
|
16940
|
-
let source = create3(output2);
|
|
16941
|
-
if (source && opts.strictSlashes !== true) {
|
|
16942
|
-
source += `${SLASH_LITERAL}?`;
|
|
16943
|
-
}
|
|
16944
|
-
return source;
|
|
16945
|
-
};
|
|
16946
|
-
module.exports = parse5;
|
|
16947
|
-
});
|
|
16948
|
-
|
|
16949
|
-
// node_modules/picomatch/lib/picomatch.js
|
|
16950
|
-
var require_picomatch = __commonJS((exports, module) => {
|
|
16951
|
-
var scan = require_scan();
|
|
16952
|
-
var parse5 = require_parse();
|
|
16953
|
-
var utils = require_utils3();
|
|
16954
|
-
var constants5 = require_constants();
|
|
16955
|
-
var isObject = (val) => val && typeof val === "object" && !Array.isArray(val);
|
|
16956
|
-
var picomatch = (glob, options, returnState = false) => {
|
|
16957
|
-
if (Array.isArray(glob)) {
|
|
16958
|
-
const fns = glob.map((input) => picomatch(input, options, returnState));
|
|
16959
|
-
const arrayMatcher = (str) => {
|
|
16960
|
-
for (const isMatch of fns) {
|
|
16961
|
-
const state2 = isMatch(str);
|
|
16962
|
-
if (state2)
|
|
16963
|
-
return state2;
|
|
16964
|
-
}
|
|
16965
|
-
return false;
|
|
16966
|
-
};
|
|
16967
|
-
return arrayMatcher;
|
|
16968
|
-
}
|
|
16969
|
-
const isState = isObject(glob) && glob.tokens && glob.input;
|
|
16970
|
-
if (glob === "" || typeof glob !== "string" && !isState) {
|
|
16971
|
-
throw new TypeError("Expected pattern to be a non-empty string");
|
|
16972
|
-
}
|
|
16973
|
-
const opts = options || {};
|
|
16974
|
-
const posix = opts.windows;
|
|
16975
|
-
const regex2 = isState ? picomatch.compileRe(glob, options) : picomatch.makeRe(glob, options, false, true);
|
|
16976
|
-
const state = regex2.state;
|
|
16977
|
-
delete regex2.state;
|
|
16978
|
-
let isIgnored = () => false;
|
|
16979
|
-
if (opts.ignore) {
|
|
16980
|
-
const ignoreOpts = { ...options, ignore: null, onMatch: null, onResult: null };
|
|
16981
|
-
isIgnored = picomatch(opts.ignore, ignoreOpts, returnState);
|
|
16982
|
-
}
|
|
16983
|
-
const matcher = (input, returnObject = false) => {
|
|
16984
|
-
const { isMatch, match, output: output2 } = picomatch.test(input, regex2, options, { glob, posix });
|
|
16985
|
-
const result = { glob, state, regex: regex2, posix, input, output: output2, match, isMatch };
|
|
16986
|
-
if (typeof opts.onResult === "function") {
|
|
16987
|
-
opts.onResult(result);
|
|
16988
|
-
}
|
|
16989
|
-
if (isMatch === false) {
|
|
16990
|
-
result.isMatch = false;
|
|
16991
|
-
return returnObject ? result : false;
|
|
16992
|
-
}
|
|
16993
|
-
if (isIgnored(input)) {
|
|
16994
|
-
if (typeof opts.onIgnore === "function") {
|
|
16995
|
-
opts.onIgnore(result);
|
|
16996
|
-
}
|
|
16997
|
-
result.isMatch = false;
|
|
16998
|
-
return returnObject ? result : false;
|
|
16999
|
-
}
|
|
17000
|
-
if (typeof opts.onMatch === "function") {
|
|
17001
|
-
opts.onMatch(result);
|
|
17002
|
-
}
|
|
17003
|
-
return returnObject ? result : true;
|
|
17004
|
-
};
|
|
17005
|
-
if (returnState) {
|
|
17006
|
-
matcher.state = state;
|
|
17007
|
-
}
|
|
17008
|
-
return matcher;
|
|
17009
|
-
};
|
|
17010
|
-
picomatch.test = (input, regex2, options, { glob, posix } = {}) => {
|
|
17011
|
-
if (typeof input !== "string") {
|
|
17012
|
-
throw new TypeError("Expected input to be a string");
|
|
17013
|
-
}
|
|
17014
|
-
if (input === "") {
|
|
17015
|
-
return { isMatch: false, output: "" };
|
|
17016
|
-
}
|
|
17017
|
-
const opts = options || {};
|
|
17018
|
-
const format = opts.format || (posix ? utils.toPosixSlashes : null);
|
|
17019
|
-
let match = input === glob;
|
|
17020
|
-
let output2 = match && format ? format(input) : input;
|
|
17021
|
-
if (match === false) {
|
|
17022
|
-
output2 = format ? format(input) : input;
|
|
17023
|
-
match = output2 === glob;
|
|
17024
|
-
}
|
|
17025
|
-
if (match === false || opts.capture === true) {
|
|
17026
|
-
if (opts.matchBase === true || opts.basename === true) {
|
|
17027
|
-
match = picomatch.matchBase(input, regex2, options, posix);
|
|
17028
|
-
} else {
|
|
17029
|
-
match = regex2.exec(output2);
|
|
17030
|
-
}
|
|
17031
|
-
}
|
|
17032
|
-
return { isMatch: Boolean(match), match, output: output2 };
|
|
17033
|
-
};
|
|
17034
|
-
picomatch.matchBase = (input, glob, options) => {
|
|
17035
|
-
const regex2 = glob instanceof RegExp ? glob : picomatch.makeRe(glob, options);
|
|
17036
|
-
return regex2.test(utils.basename(input));
|
|
17037
|
-
};
|
|
17038
|
-
picomatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str);
|
|
17039
|
-
picomatch.parse = (pattern, options) => {
|
|
17040
|
-
if (Array.isArray(pattern))
|
|
17041
|
-
return pattern.map((p) => picomatch.parse(p, options));
|
|
17042
|
-
return parse5(pattern, { ...options, fastpaths: false });
|
|
17043
|
-
};
|
|
17044
|
-
picomatch.scan = (input, options) => scan(input, options);
|
|
17045
|
-
picomatch.compileRe = (state, options, returnOutput = false, returnState = false) => {
|
|
17046
|
-
if (returnOutput === true) {
|
|
17047
|
-
return state.output;
|
|
17048
|
-
}
|
|
17049
|
-
const opts = options || {};
|
|
17050
|
-
const prepend = opts.contains ? "" : "^";
|
|
17051
|
-
const append = opts.contains ? "" : "$";
|
|
17052
|
-
let source = `${prepend}(?:${state.output})${append}`;
|
|
17053
|
-
if (state && state.negated === true) {
|
|
17054
|
-
source = `^(?!${source}).*$`;
|
|
17055
|
-
}
|
|
17056
|
-
const regex2 = picomatch.toRegex(source, options);
|
|
17057
|
-
if (returnState === true) {
|
|
17058
|
-
regex2.state = state;
|
|
17059
|
-
}
|
|
17060
|
-
return regex2;
|
|
17061
|
-
};
|
|
17062
|
-
picomatch.makeRe = (input, options = {}, returnOutput = false, returnState = false) => {
|
|
17063
|
-
if (!input || typeof input !== "string") {
|
|
17064
|
-
throw new TypeError("Expected a non-empty string");
|
|
17065
|
-
}
|
|
17066
|
-
let parsed = { negated: false, fastpaths: true };
|
|
17067
|
-
if (options.fastpaths !== false && (input[0] === "." || input[0] === "*")) {
|
|
17068
|
-
parsed.output = parse5.fastpaths(input, options);
|
|
17069
|
-
}
|
|
17070
|
-
if (!parsed.output) {
|
|
17071
|
-
parsed = parse5(input, options);
|
|
17072
|
-
}
|
|
17073
|
-
return picomatch.compileRe(parsed, options, returnOutput, returnState);
|
|
17074
|
-
};
|
|
17075
|
-
picomatch.toRegex = (source, options) => {
|
|
17076
|
-
try {
|
|
17077
|
-
const opts = options || {};
|
|
17078
|
-
return new RegExp(source, opts.flags || (opts.nocase ? "i" : ""));
|
|
17079
|
-
} catch (err) {
|
|
17080
|
-
if (options && options.debug === true)
|
|
17081
|
-
throw err;
|
|
17082
|
-
return /$^/;
|
|
17083
|
-
}
|
|
17084
|
-
};
|
|
17085
|
-
picomatch.constants = constants5;
|
|
17086
|
-
module.exports = picomatch;
|
|
17087
|
-
});
|
|
17088
|
-
|
|
17089
|
-
// node_modules/picomatch/index.js
|
|
17090
|
-
var require_picomatch2 = __commonJS((exports, module) => {
|
|
17091
|
-
var pico = require_picomatch();
|
|
17092
|
-
var utils = require_utils3();
|
|
17093
|
-
function picomatch(glob, options, returnState = false) {
|
|
17094
|
-
if (options && (options.windows === null || options.windows === undefined)) {
|
|
17095
|
-
options = { ...options, windows: utils.isWindows() };
|
|
17096
|
-
}
|
|
17097
|
-
return pico(glob, options, returnState);
|
|
17098
|
-
}
|
|
17099
|
-
Object.assign(picomatch, pico);
|
|
17100
|
-
module.exports = picomatch;
|
|
17101
|
-
});
|
|
17102
|
-
|
|
17103
15656
|
// node_modules/semver/internal/constants.js
|
|
17104
|
-
var
|
|
15657
|
+
var require_constants = __commonJS((exports, module) => {
|
|
17105
15658
|
var SEMVER_SPEC_VERSION = "2.0.0";
|
|
17106
15659
|
var MAX_LENGTH = 256;
|
|
17107
15660
|
var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;
|
|
@@ -17140,7 +15693,7 @@ var require_re = __commonJS((exports, module) => {
|
|
|
17140
15693
|
MAX_SAFE_COMPONENT_LENGTH,
|
|
17141
15694
|
MAX_SAFE_BUILD_LENGTH,
|
|
17142
15695
|
MAX_LENGTH
|
|
17143
|
-
} =
|
|
15696
|
+
} = require_constants();
|
|
17144
15697
|
var debug = require_debug();
|
|
17145
15698
|
exports = module.exports = {};
|
|
17146
15699
|
var re2 = exports.re = [];
|
|
@@ -17260,7 +15813,7 @@ var require_identifiers = __commonJS((exports, module) => {
|
|
|
17260
15813
|
// node_modules/semver/classes/semver.js
|
|
17261
15814
|
var require_semver = __commonJS((exports, module) => {
|
|
17262
15815
|
var debug = require_debug();
|
|
17263
|
-
var { MAX_LENGTH, MAX_SAFE_INTEGER } =
|
|
15816
|
+
var { MAX_LENGTH, MAX_SAFE_INTEGER } = require_constants();
|
|
17264
15817
|
var { safeRe: re2, t } = require_re();
|
|
17265
15818
|
var parseOptions = require_parse_options();
|
|
17266
15819
|
var { compareIdentifiers } = require_identifiers();
|
|
@@ -17527,7 +16080,7 @@ var require_semver = __commonJS((exports, module) => {
|
|
|
17527
16080
|
});
|
|
17528
16081
|
|
|
17529
16082
|
// node_modules/semver/functions/parse.js
|
|
17530
|
-
var
|
|
16083
|
+
var require_parse = __commonJS((exports, module) => {
|
|
17531
16084
|
var SemVer = require_semver();
|
|
17532
16085
|
var parse5 = (version, options, throwErrors = false) => {
|
|
17533
16086
|
if (version instanceof SemVer) {
|
|
@@ -17547,7 +16100,7 @@ var require_parse2 = __commonJS((exports, module) => {
|
|
|
17547
16100
|
|
|
17548
16101
|
// node_modules/semver/functions/valid.js
|
|
17549
16102
|
var require_valid = __commonJS((exports, module) => {
|
|
17550
|
-
var parse5 =
|
|
16103
|
+
var parse5 = require_parse();
|
|
17551
16104
|
var valid = (version, options) => {
|
|
17552
16105
|
const v2 = parse5(version, options);
|
|
17553
16106
|
return v2 ? v2.version : null;
|
|
@@ -17557,7 +16110,7 @@ var require_valid = __commonJS((exports, module) => {
|
|
|
17557
16110
|
|
|
17558
16111
|
// node_modules/semver/functions/clean.js
|
|
17559
16112
|
var require_clean = __commonJS((exports, module) => {
|
|
17560
|
-
var parse5 =
|
|
16113
|
+
var parse5 = require_parse();
|
|
17561
16114
|
var clean = (version, options) => {
|
|
17562
16115
|
const s = parse5(version.trim().replace(/^[=v]+/, ""), options);
|
|
17563
16116
|
return s ? s.version : null;
|
|
@@ -17585,7 +16138,7 @@ var require_inc = __commonJS((exports, module) => {
|
|
|
17585
16138
|
|
|
17586
16139
|
// node_modules/semver/functions/diff.js
|
|
17587
16140
|
var require_diff = __commonJS((exports, module) => {
|
|
17588
|
-
var parse5 =
|
|
16141
|
+
var parse5 = require_parse();
|
|
17589
16142
|
var diff = (version1, version2) => {
|
|
17590
16143
|
const v1 = parse5(version1, null, true);
|
|
17591
16144
|
const v2 = parse5(version2, null, true);
|
|
@@ -17647,7 +16200,7 @@ var require_patch = __commonJS((exports, module) => {
|
|
|
17647
16200
|
|
|
17648
16201
|
// node_modules/semver/functions/prerelease.js
|
|
17649
16202
|
var require_prerelease = __commonJS((exports, module) => {
|
|
17650
|
-
var parse5 =
|
|
16203
|
+
var parse5 = require_parse();
|
|
17651
16204
|
var prerelease = (version, options) => {
|
|
17652
16205
|
const parsed = parse5(version, options);
|
|
17653
16206
|
return parsed && parsed.prerelease.length ? parsed.prerelease : null;
|
|
@@ -17793,7 +16346,7 @@ var require_cmp = __commonJS((exports, module) => {
|
|
|
17793
16346
|
// node_modules/semver/functions/coerce.js
|
|
17794
16347
|
var require_coerce = __commonJS((exports, module) => {
|
|
17795
16348
|
var SemVer = require_semver();
|
|
17796
|
-
var parse5 =
|
|
16349
|
+
var parse5 = require_parse();
|
|
17797
16350
|
var { safeRe: re2, t } = require_re();
|
|
17798
16351
|
var coerce2 = (version, options) => {
|
|
17799
16352
|
if (version instanceof SemVer) {
|
|
@@ -18023,7 +16576,7 @@ var require_range = __commonJS((exports, module) => {
|
|
|
18023
16576
|
tildeTrimReplace,
|
|
18024
16577
|
caretTrimReplace
|
|
18025
16578
|
} = require_re();
|
|
18026
|
-
var { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } =
|
|
16579
|
+
var { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require_constants();
|
|
18027
16580
|
var isNullSet = (c2) => c2.value === "<0.0.0-0";
|
|
18028
16581
|
var isAny = (c2) => c2.value === "";
|
|
18029
16582
|
var isSatisfiable = (comparators, options) => {
|
|
@@ -18794,10 +17347,10 @@ var require_subset = __commonJS((exports, module) => {
|
|
|
18794
17347
|
// node_modules/semver/index.js
|
|
18795
17348
|
var require_semver2 = __commonJS((exports, module) => {
|
|
18796
17349
|
var internalRe = require_re();
|
|
18797
|
-
var constants5 =
|
|
17350
|
+
var constants5 = require_constants();
|
|
18798
17351
|
var SemVer = require_semver();
|
|
18799
17352
|
var identifiers = require_identifiers();
|
|
18800
|
-
var parse5 =
|
|
17353
|
+
var parse5 = require_parse();
|
|
18801
17354
|
var valid = require_valid();
|
|
18802
17355
|
var clean = require_clean();
|
|
18803
17356
|
var inc = require_inc();
|
|
@@ -36677,7 +35230,7 @@ import { join as join54 } from "node:path";
|
|
|
36677
35230
|
|
|
36678
35231
|
// src/domains/installation/deletion-handler.ts
|
|
36679
35232
|
import { existsSync as existsSync17, lstatSync as lstatSync2, readdirSync, rmSync as rmSync2, rmdirSync, unlinkSync as unlinkSync3 } from "node:fs";
|
|
36680
|
-
import { dirname as dirname6, join as join40,
|
|
35233
|
+
import { dirname as dirname6, join as join40, resolve as resolve6 } from "node:path";
|
|
36681
35234
|
|
|
36682
35235
|
// src/services/file-operations/manifest/manifest-reader.ts
|
|
36683
35236
|
import { join as join39 } from "node:path";
|
|
@@ -36829,7 +35382,6 @@ async function getUninstallManifest(claudeDir, kit) {
|
|
|
36829
35382
|
// src/domains/installation/deletion-handler.ts
|
|
36830
35383
|
init_logger();
|
|
36831
35384
|
var import_fs_extra7 = __toESM(require_lib(), 1);
|
|
36832
|
-
var import_picomatch = __toESM(require_picomatch2(), 1);
|
|
36833
35385
|
function findFileInMetadata(metadata, path10) {
|
|
36834
35386
|
if (!metadata)
|
|
36835
35387
|
return null;
|
|
@@ -36855,44 +35407,6 @@ function shouldDeletePath(path10, metadata) {
|
|
|
36855
35407
|
return true;
|
|
36856
35408
|
return tracked.ownership !== "user";
|
|
36857
35409
|
}
|
|
36858
|
-
function isGlobPattern(pattern) {
|
|
36859
|
-
return pattern.includes("*") || pattern.includes("?") || pattern.includes("{");
|
|
36860
|
-
}
|
|
36861
|
-
function collectFilesRecursively(dir, baseDir) {
|
|
36862
|
-
const results = [];
|
|
36863
|
-
if (!existsSync17(dir))
|
|
36864
|
-
return results;
|
|
36865
|
-
try {
|
|
36866
|
-
const entries = readdirSync(dir, { withFileTypes: true });
|
|
36867
|
-
for (const entry of entries) {
|
|
36868
|
-
const fullPath = join40(dir, entry.name);
|
|
36869
|
-
const relativePath = relative5(baseDir, fullPath);
|
|
36870
|
-
if (entry.isDirectory()) {
|
|
36871
|
-
results.push(...collectFilesRecursively(fullPath, baseDir));
|
|
36872
|
-
} else {
|
|
36873
|
-
results.push(relativePath);
|
|
36874
|
-
}
|
|
36875
|
-
}
|
|
36876
|
-
} catch {}
|
|
36877
|
-
return results;
|
|
36878
|
-
}
|
|
36879
|
-
function expandGlobPatterns(patterns, claudeDir) {
|
|
36880
|
-
const expanded = [];
|
|
36881
|
-
const allFiles = collectFilesRecursively(claudeDir, claudeDir);
|
|
36882
|
-
for (const pattern of patterns) {
|
|
36883
|
-
if (isGlobPattern(pattern)) {
|
|
36884
|
-
const matcher = import_picomatch.default(pattern);
|
|
36885
|
-
const matches = allFiles.filter((file) => matcher(file));
|
|
36886
|
-
expanded.push(...matches);
|
|
36887
|
-
if (matches.length > 0) {
|
|
36888
|
-
logger.debug(`Pattern "${pattern}" matched ${matches.length} files`);
|
|
36889
|
-
}
|
|
36890
|
-
} else {
|
|
36891
|
-
expanded.push(pattern);
|
|
36892
|
-
}
|
|
36893
|
-
}
|
|
36894
|
-
return [...new Set(expanded)];
|
|
36895
|
-
}
|
|
36896
35410
|
var MAX_CLEANUP_ITERATIONS = 50;
|
|
36897
35411
|
function cleanupEmptyDirectories(filePath, claudeDir) {
|
|
36898
35412
|
const normalizedClaudeDir = resolve6(claudeDir);
|
|
@@ -36980,11 +35494,10 @@ async function updateMetadataAfterDeletion(claudeDir, deletedPaths) {
|
|
|
36980
35494
|
}
|
|
36981
35495
|
}
|
|
36982
35496
|
async function handleDeletions(sourceMetadata, claudeDir) {
|
|
36983
|
-
const
|
|
36984
|
-
if (
|
|
35497
|
+
const deletions = sourceMetadata.deletions || [];
|
|
35498
|
+
if (deletions.length === 0) {
|
|
36985
35499
|
return { deletedPaths: [], preservedPaths: [], errors: [] };
|
|
36986
35500
|
}
|
|
36987
|
-
const deletions = expandGlobPatterns(deletionPatterns, claudeDir);
|
|
36988
35501
|
const userMetadata = await readManifest(claudeDir);
|
|
36989
35502
|
const result = { deletedPaths: [], preservedPaths: [], errors: [] };
|
|
36990
35503
|
for (const path10 of deletions) {
|
|
@@ -37028,7 +35541,7 @@ init_logger();
|
|
|
37028
35541
|
init_types2();
|
|
37029
35542
|
var import_fs_extra11 = __toESM(require_lib(), 1);
|
|
37030
35543
|
var import_ignore3 = __toESM(require_ignore(), 1);
|
|
37031
|
-
import { dirname as dirname9, join as join44, relative as
|
|
35544
|
+
import { dirname as dirname9, join as join44, relative as relative6 } from "node:path";
|
|
37032
35545
|
|
|
37033
35546
|
// src/domains/installation/selective-merger.ts
|
|
37034
35547
|
import { stat as stat6 } from "node:fs/promises";
|
|
@@ -37206,7 +35719,7 @@ class SelectiveMerger {
|
|
|
37206
35719
|
init_logger();
|
|
37207
35720
|
var import_fs_extra8 = __toESM(require_lib(), 1);
|
|
37208
35721
|
var import_ignore2 = __toESM(require_ignore(), 1);
|
|
37209
|
-
import { relative as
|
|
35722
|
+
import { relative as relative5 } from "node:path";
|
|
37210
35723
|
import { join as join41 } from "node:path";
|
|
37211
35724
|
|
|
37212
35725
|
// node_modules/@isaacs/balanced-match/dist/esm/index.js
|
|
@@ -38664,7 +37177,7 @@ class FileScanner {
|
|
|
38664
37177
|
const entries = await import_fs_extra8.readdir(dir, { encoding: "utf8" });
|
|
38665
37178
|
for (const entry of entries) {
|
|
38666
37179
|
const fullPath = join41(dir, entry);
|
|
38667
|
-
const relativePath =
|
|
37180
|
+
const relativePath = relative5(baseDir, fullPath);
|
|
38668
37181
|
const normalizedRelativePath = relativePath.replace(/\\/g, "/");
|
|
38669
37182
|
const stats = await import_fs_extra8.lstat(fullPath);
|
|
38670
37183
|
if (stats.isSymbolicLink()) {
|
|
@@ -39532,7 +38045,7 @@ class CopyExecutor {
|
|
|
39532
38045
|
const conflicts = [];
|
|
39533
38046
|
const files = await this.fileScanner.getFiles(sourceDir, sourceDir);
|
|
39534
38047
|
for (const file of files) {
|
|
39535
|
-
const relativePath =
|
|
38048
|
+
const relativePath = relative6(sourceDir, file);
|
|
39536
38049
|
const normalizedRelativePath = relativePath.replace(/\\/g, "/");
|
|
39537
38050
|
const destPath = join44(destDir, relativePath);
|
|
39538
38051
|
if (await import_fs_extra11.pathExists(destPath)) {
|
|
@@ -39554,7 +38067,7 @@ class CopyExecutor {
|
|
|
39554
38067
|
let copiedCount = 0;
|
|
39555
38068
|
let skippedCount = 0;
|
|
39556
38069
|
for (const file of files) {
|
|
39557
|
-
const relativePath =
|
|
38070
|
+
const relativePath = relative6(sourceDir, file);
|
|
39558
38071
|
const normalizedRelativePath = relativePath.replace(/\\/g, "/");
|
|
39559
38072
|
const destPath = join44(destDir, relativePath);
|
|
39560
38073
|
if (this.fileScanner.shouldNeverCopy(normalizedRelativePath)) {
|
|
@@ -39726,7 +38239,7 @@ class FileMerger {
|
|
|
39726
38239
|
|
|
39727
38240
|
// src/domains/migration/legacy-migration.ts
|
|
39728
38241
|
import { readdir as readdir9, stat as stat7 } from "node:fs/promises";
|
|
39729
|
-
import { join as join48, relative as
|
|
38242
|
+
import { join as join48, relative as relative7 } from "node:path";
|
|
39730
38243
|
// src/services/file-operations/manifest/manifest-tracker.ts
|
|
39731
38244
|
import { join as join47 } from "node:path";
|
|
39732
38245
|
|
|
@@ -40100,7 +38613,7 @@ class LegacyMigration {
|
|
|
40100
38613
|
};
|
|
40101
38614
|
const filesInManifest = [];
|
|
40102
38615
|
for (const file of files) {
|
|
40103
|
-
const relativePath =
|
|
38616
|
+
const relativePath = relative7(claudeDir, file).replace(/\\/g, "/");
|
|
40104
38617
|
const manifestEntry = ReleaseManifestLoader.findFile(manifest, relativePath);
|
|
40105
38618
|
if (!manifestEntry) {
|
|
40106
38619
|
preview.userCreated.push(relativePath);
|
|
@@ -40293,7 +38806,7 @@ function buildConflictSummary(fileConflicts, hookConflicts, mcpConflicts) {
|
|
|
40293
38806
|
}
|
|
40294
38807
|
|
|
40295
38808
|
// src/services/file-operations/file-scanner.ts
|
|
40296
|
-
import { join as join49, relative as
|
|
38809
|
+
import { join as join49, relative as relative8, resolve as resolve7 } from "node:path";
|
|
40297
38810
|
init_logger();
|
|
40298
38811
|
var import_fs_extra15 = __toESM(require_lib(), 1);
|
|
40299
38812
|
|
|
@@ -40334,7 +38847,7 @@ class FileScanner2 {
|
|
|
40334
38847
|
const subFiles = await FileScanner2.getFiles(fullPath, basePath);
|
|
40335
38848
|
files.push(...subFiles);
|
|
40336
38849
|
} else if (stats.isFile()) {
|
|
40337
|
-
const relativePath =
|
|
38850
|
+
const relativePath = relative8(basePath, fullPath);
|
|
40338
38851
|
files.push(FileScanner2.toPosixPath(relativePath));
|
|
40339
38852
|
}
|
|
40340
38853
|
}
|
|
@@ -40962,7 +39475,7 @@ init_logger();
|
|
|
40962
39475
|
init_logger();
|
|
40963
39476
|
import { createHash as createHash2 } from "node:crypto";
|
|
40964
39477
|
import { readFile as readFile21, readdir as readdir15, writeFile as writeFile17 } from "node:fs/promises";
|
|
40965
|
-
import { join as join55, relative as
|
|
39478
|
+
import { join as join55, relative as relative9 } from "node:path";
|
|
40966
39479
|
init_types2();
|
|
40967
39480
|
var import_fs_extra20 = __toESM(require_lib(), 1);
|
|
40968
39481
|
|
|
@@ -41068,7 +39581,7 @@ class SkillsManifestManager {
|
|
|
41068
39581
|
const files = await SkillsManifestManager.getAllFiles(dirPath);
|
|
41069
39582
|
files.sort();
|
|
41070
39583
|
for (const file of files) {
|
|
41071
|
-
const relativePath =
|
|
39584
|
+
const relativePath = relative9(dirPath, file);
|
|
41072
39585
|
const content = await readFile21(file);
|
|
41073
39586
|
hash.update(relativePath);
|
|
41074
39587
|
hash.update(content);
|
|
@@ -41803,13 +40316,13 @@ init_logger();
|
|
|
41803
40316
|
|
|
41804
40317
|
// src/domains/skills/customization/comparison-engine.ts
|
|
41805
40318
|
var import_fs_extra25 = __toESM(require_lib(), 1);
|
|
41806
|
-
import { relative as
|
|
40319
|
+
import { relative as relative11 } from "node:path";
|
|
41807
40320
|
|
|
41808
40321
|
// src/domains/skills/customization/hash-calculator.ts
|
|
41809
40322
|
import { createHash as createHash3 } from "node:crypto";
|
|
41810
40323
|
import { createReadStream as createReadStream2 } from "node:fs";
|
|
41811
40324
|
import { readFile as readFile22, readdir as readdir19 } from "node:fs/promises";
|
|
41812
|
-
import { join as join59, relative as
|
|
40325
|
+
import { join as join59, relative as relative10 } from "node:path";
|
|
41813
40326
|
async function getAllFiles(dirPath) {
|
|
41814
40327
|
const files = [];
|
|
41815
40328
|
const entries = await readdir19(dirPath, { withFileTypes: true });
|
|
@@ -41846,7 +40359,7 @@ async function hashDirectory(dirPath) {
|
|
|
41846
40359
|
const files = await getAllFiles(dirPath);
|
|
41847
40360
|
files.sort();
|
|
41848
40361
|
for (const file of files) {
|
|
41849
|
-
const relativePath =
|
|
40362
|
+
const relativePath = relative10(dirPath, file);
|
|
41850
40363
|
const content = await readFile22(file);
|
|
41851
40364
|
hash.update(relativePath);
|
|
41852
40365
|
hash.update(content);
|
|
@@ -41880,8 +40393,8 @@ async function compareDirectories(dir1, dir2) {
|
|
|
41880
40393
|
if (files1.length !== files2.length) {
|
|
41881
40394
|
return true;
|
|
41882
40395
|
}
|
|
41883
|
-
const relFiles1 = files1.map((f3) =>
|
|
41884
|
-
const relFiles2 = files2.map((f3) =>
|
|
40396
|
+
const relFiles1 = files1.map((f3) => relative11(dir1, f3)).sort();
|
|
40397
|
+
const relFiles2 = files2.map((f3) => relative11(dir2, f3)).sort();
|
|
41885
40398
|
if (JSON.stringify(relFiles1) !== JSON.stringify(relFiles2)) {
|
|
41886
40399
|
return true;
|
|
41887
40400
|
}
|
|
@@ -41899,12 +40412,12 @@ async function detectFileChanges(currentSkillPath, baselineSkillPath) {
|
|
|
41899
40412
|
const currentFiles = await getAllFiles(currentSkillPath);
|
|
41900
40413
|
const baselineFiles = await import_fs_extra25.pathExists(baselineSkillPath) ? await getAllFiles(baselineSkillPath) : [];
|
|
41901
40414
|
const currentFileMap = new Map(await Promise.all(currentFiles.map(async (f3) => {
|
|
41902
|
-
const relPath =
|
|
40415
|
+
const relPath = relative11(currentSkillPath, f3);
|
|
41903
40416
|
const hash = await hashFile(f3);
|
|
41904
40417
|
return [relPath, hash];
|
|
41905
40418
|
})));
|
|
41906
40419
|
const baselineFileMap = new Map(await Promise.all(baselineFiles.map(async (f3) => {
|
|
41907
|
-
const relPath =
|
|
40420
|
+
const relPath = relative11(baselineSkillPath, f3);
|
|
41908
40421
|
const hash = await hashFile(f3);
|
|
41909
40422
|
return [relPath, hash];
|
|
41910
40423
|
})));
|
|
@@ -43675,7 +42188,7 @@ init_logger();
|
|
|
43675
42188
|
init_types2();
|
|
43676
42189
|
var import_fs_extra33 = __toESM(require_lib(), 1);
|
|
43677
42190
|
import { rename as rename4, rm as rm7 } from "node:fs/promises";
|
|
43678
|
-
import { join as join70, relative as
|
|
42191
|
+
import { join as join70, relative as relative12 } from "node:path";
|
|
43679
42192
|
async function collectDirsToRename(extractDir, folders) {
|
|
43680
42193
|
const dirsToRename = [];
|
|
43681
42194
|
if (folders.docs !== DEFAULT_FOLDERS.docs) {
|
|
@@ -43729,11 +42242,11 @@ async function renameFolders(dirsToRename, extractDir, options) {
|
|
|
43729
42242
|
let foldersRenamed = 0;
|
|
43730
42243
|
for (const { from, to } of dirsToRename) {
|
|
43731
42244
|
if (options.dryRun) {
|
|
43732
|
-
logger.info(`[dry-run] Would rename: ${
|
|
42245
|
+
logger.info(`[dry-run] Would rename: ${relative12(extractDir, from)} -> ${relative12(extractDir, to)}`);
|
|
43733
42246
|
} else {
|
|
43734
42247
|
try {
|
|
43735
42248
|
await moveAcrossDevices(from, to);
|
|
43736
|
-
logger.debug(`Renamed: ${
|
|
42249
|
+
logger.debug(`Renamed: ${relative12(extractDir, from)} -> ${relative12(extractDir, to)}`);
|
|
43737
42250
|
foldersRenamed++;
|
|
43738
42251
|
} catch (error) {
|
|
43739
42252
|
logger.warning(`Failed to rename ${from}: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
@@ -43747,7 +42260,7 @@ async function renameFolders(dirsToRename, extractDir, options) {
|
|
|
43747
42260
|
init_logger();
|
|
43748
42261
|
init_types2();
|
|
43749
42262
|
import { readFile as readFile26, readdir as readdir23, writeFile as writeFile22 } from "node:fs/promises";
|
|
43750
|
-
import { join as join71, relative as
|
|
42263
|
+
import { join as join71, relative as relative13 } from "node:path";
|
|
43751
42264
|
var TRANSFORMABLE_FILE_PATTERNS = [
|
|
43752
42265
|
".md",
|
|
43753
42266
|
".txt",
|
|
@@ -43827,10 +42340,10 @@ async function transformFileContents(dir, compiledReplacements, options) {
|
|
|
43827
42340
|
}
|
|
43828
42341
|
if (changeCount > 0) {
|
|
43829
42342
|
if (options.dryRun) {
|
|
43830
|
-
logger.debug(`[dry-run] Would update ${
|
|
42343
|
+
logger.debug(`[dry-run] Would update ${relative13(dir, fullPath)}: ${changeCount} replacement(s)`);
|
|
43831
42344
|
} else {
|
|
43832
42345
|
await writeFile22(fullPath, newContent, "utf-8");
|
|
43833
|
-
logger.debug(`Updated ${
|
|
42346
|
+
logger.debug(`Updated ${relative13(dir, fullPath)}: ${changeCount} replacement(s)`);
|
|
43834
42347
|
}
|
|
43835
42348
|
filesChanged++;
|
|
43836
42349
|
replacementsCount += changeCount;
|
|
@@ -45217,7 +43730,7 @@ var import_fs_extra37 = __toESM(require_lib(), 1);
|
|
|
45217
43730
|
// package.json
|
|
45218
43731
|
var package_default = {
|
|
45219
43732
|
name: "claudekit-cli",
|
|
45220
|
-
version: "3.31.0
|
|
43733
|
+
version: "3.31.0",
|
|
45221
43734
|
description: "CLI tool for bootstrapping and updating ClaudeKit projects",
|
|
45222
43735
|
type: "module",
|
|
45223
43736
|
repository: {
|
|
@@ -45283,7 +43796,6 @@ var package_default = {
|
|
|
45283
43796
|
ora: "^8.0.0",
|
|
45284
43797
|
"p-limit": "^7.2.0",
|
|
45285
43798
|
picocolors: "^1.1.1",
|
|
45286
|
-
picomatch: "^4.0.3",
|
|
45287
43799
|
"proper-lockfile": "^4.1.2",
|
|
45288
43800
|
semver: "^7.7.3",
|
|
45289
43801
|
tar: "^7.4.3",
|
|
@@ -45299,7 +43811,6 @@ var package_default = {
|
|
|
45299
43811
|
"@types/diff": "^8.0.0",
|
|
45300
43812
|
"@types/fs-extra": "^11.0.4",
|
|
45301
43813
|
"@types/node": "^22.10.1",
|
|
45302
|
-
"@types/picomatch": "^4.0.2",
|
|
45303
43814
|
"@types/proper-lockfile": "^4.1.4",
|
|
45304
43815
|
"@types/semver": "^7.7.1",
|
|
45305
43816
|
"@types/tar": "^6.1.13",
|