Files
NapCatQQ/.pnpm-store/v3/files/56/523a9e4770becad16445d0bbf3a727e0c73546b175825ae6b18daee482b863da8141ae8848896c9ce9856b3e9f33ad55fe11c04e796a68ec465eaa6eb0d1d6
TanTan e311ca3275
Build NapCat Artifacts / Windows Loader Test (push) Canceled after 0s
Build NapCat Artifacts / Type Check & Test (push) Canceled after 0s
Build NapCat Artifacts / Build NapCat.Framework (push) Canceled after 0s
Build NapCat Artifacts / Build NapCat.Shell (push) Canceled after 0s
docs: 仓库链接指向本镜像仓库
2026-11-13 09:25:58 +08:00

72 lines
1.9 KiB
Plaintext

'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
/**
* @fileoverview Utility to convert gitignore patterns to minimatch.
* @author Nicholas C. Zakas
*/
/**
* Converts a gitignore pattern to a minimatch pattern.
* @param {string} pattern The gitignore pattern to convert.
* @returns {string} A minimatch pattern equivalent to `pattern`.
*/
function gitignoreToMinimatch(pattern) {
if (typeof pattern !== "string") {
throw new TypeError("Argument must be a string.");
}
// Special case: Empty string
if (!pattern) {
return pattern;
}
// strip off negation to make life easier
const negated = pattern.startsWith("!");
let patternToTest = negated ? pattern.slice(1) : pattern;
let result = patternToTest;
let leadingSlash = false;
// strip off leading slash
if (patternToTest[0] === "/") {
leadingSlash = true;
result = patternToTest.slice(1);
}
// For the most part, the first character determines what to do
switch (result[0]) {
case "*":
if (patternToTest[1] !== "*") {
result = "**/" + result;
}
break;
default:
if (!leadingSlash && !result.includes("/") || result.endsWith("/")) {
result = "**/" + result;
}
// no further changes if the pattern ends with a wildcard
if (result.endsWith("*") || result.endsWith("?")) {
break;
}
// differentiate between filenames and directory names
if (!/\.[a-z\d_-]+$/.test(result)) {
if (!result.endsWith("/")) {
result += "/";
}
result += "**";
}
}
return negated ? "!" + result : result;
}
exports.gitignoreToMinimatch = gitignoreToMinimatch;