UNPKG

9.32 kBJavaScriptView Raw
1import { toPosixPath } from "furi";
2import minimatch from "minimatch";
3import { parseSys as parseNodeScriptUrl } from "node-script-url";
4import sysPath from "path";
5export function fromGlob(options) {
6 let basePath;
7 if (options.base !== undefined) {
8 basePath = toPosixPath(options.base.href);
9 }
10 const matches = [];
11 const patterns = [...options.patterns];
12 for (const pattern of patterns) {
13 let absPattern;
14 let type;
15 if (pattern.startsWith("!")) {
16 absPattern = pattern.substr(1);
17 type = "negative";
18 }
19 else {
20 absPattern = pattern;
21 type = "positive";
22 }
23 const resolvedPattern = basePath !== undefined ? sysPath.resolve(basePath, absPattern) : absPattern;
24 matches.push({
25 type,
26 regexp: minimatch.makeRe(resolvedPattern, { dot: true }),
27 });
28 // Fix bad wildstar conversion to RegExp
29 if (absPattern.startsWith("**/")) {
30 const patternTail = absPattern.substr("**/".length);
31 const resolvedPattern = basePath !== undefined ? sysPath.resolve(basePath, patternTail) : patternTail;
32 matches.push({
33 type,
34 regexp: minimatch.makeRe(resolvedPattern, { dot: true }),
35 });
36 }
37 }
38 return function filter(info) {
39 if (!isRegularFile(info)) {
40 return false;
41 }
42 const posixPath = toPosixPath(info.url);
43 for (const match of matches) {
44 if (match.regexp.test(posixPath)) {
45 return match.type === "positive";
46 }
47 }
48 return false;
49 };
50}
51export function isRegularFile(info) {
52 return parseNodeScriptUrl(info.url).isFileUrl;
53}
54// function inCwd(info: ModuleInfo): boolean {
55// const scriptUrl: ParsedScriptUrl = parseNodeScriptUrl(info.url);
56// if (!scriptUrl.isFileUrl) {
57// return false;
58// }
59// const cwdFuri: string = fromSysPath(sysPath.resolve(process.cwd())).href;
60// return isDescendantOf(scriptUrl.url, cwdFuri);
61// }
62// function isDescendantOf(curUrl: string, ancestorUrl: string): boolean {
63// const cur: ReadonlyArray<string> = new url.URL(curUrl).pathname.split("/");
64// const ancestor: ReadonlyArray<string> = new url.URL(ancestorUrl).pathname.split("/");
65// for (const [i, segment] of ancestor.entries()) {
66// if (cur[i] !== segment) {
67// return false;
68// }
69// }
70// return true;
71// }
72
73//# sourceMappingURL=data:application/json;charset=utf8;base64,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aEQsQ0FBQztBQUVELDhDQUE4QztBQUM5QyxxRUFBcUU7QUFDckUsZ0NBQWdDO0FBQ2hDLG9CQUFvQjtBQUNwQixNQUFNO0FBQ04sOEVBQThFO0FBQzlFLG1EQUFtRDtBQUNuRCxJQUFJO0FBRUosMEVBQTBFO0FBQzFFLGdGQUFnRjtBQUNoRiwwRkFBMEY7QUFDMUYscURBQXFEO0FBQ3JELGdDQUFnQztBQUNoQyxzQkFBc0I7QUFDdEIsUUFBUTtBQUNSLE1BQU07QUFDTixpQkFBaUI7QUFDakIsSUFBSSIsImZpbGUiOiJmaWx0ZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0b1Bvc2l4UGF0aCB9IGZyb20gXCJmdXJpXCI7XG5pbXBvcnQgbWluaW1hdGNoIGZyb20gXCJtaW5pbWF0Y2hcIjtcbmltcG9ydCB7IHBhcnNlU3lzIGFzIHBhcnNlTm9kZVNjcmlwdFVybCB9IGZyb20gXCJub2RlLXNjcmlwdC11cmxcIjtcbmltcG9ydCBzeXNQYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgdXJsIGZyb20gXCJ1cmxcIjtcblxuZXhwb3J0IGludGVyZmFjZSBNb2R1bGVJbmZvIHtcbiAgdXJsOiBzdHJpbmc7XG4gIGlzTW9kdWxlPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IHR5cGUgQ292ZXJhZ2VGaWx0ZXIgPSAoaW5mbzogTW9kdWxlSW5mbykgPT4gYm9vbGVhbjtcblxuZXhwb3J0IGludGVyZmFjZSBGcm9tR2xvYk9wdGlvbnMge1xuICBwYXR0ZXJuczogUmVhZG9ubHlBcnJheTxzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBCYXNlIGZpbGUgVVJMIGZvciByZWxhdGl2ZSBwYXR0ZXJucy5cbiAgICovXG4gIGJhc2U/OiB1cmwuVVJMO1xufVxuXG5pbnRlcmZhY2UgRnVyaU1hdGNoIHtcbiAgdHlwZTogXCJuZWdhdGl2ZVwiIHwgXCJwb3NpdGl2ZVwiO1xuICByZWdleHA6IFJlZ0V4cDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb21HbG9iKG9wdGlvbnM6IEZyb21HbG9iT3B0aW9ucyk6IENvdmVyYWdlRmlsdGVyIHtcbiAgbGV0IGJhc2VQYXRoOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGlmIChvcHRpb25zLmJhc2UgIT09IHVuZGVmaW5lZCkge1xuICAgIGJhc2VQYXRoID0gdG9Qb3NpeFBhdGgob3B0aW9ucy5iYXNlLmhyZWYpO1xuICB9XG5cbiAgY29uc3QgbWF0Y2hlczogRnVyaU1hdGNoW10gPSBbXTtcbiAgY29uc3QgcGF0dGVybnM6IFJlYWRvbmx5QXJyYXk8c3RyaW5nPiA9IFsuLi5vcHRpb25zLnBhdHRlcm5zXTtcbiAgZm9yIChjb25zdCBwYXR0ZXJuIG9mIHBhdHRlcm5zKSB7XG4gICAgbGV0IGFic1BhdHRlcm46IHN0cmluZztcbiAgICBsZXQgdHlwZTogXCJuZWdhdGl2ZVwiIHwgXCJwb3NpdGl2ZVwiO1xuICAgIGlmIChwYXR0ZXJuLnN0YXJ0c1dpdGgoXCIhXCIpKSB7XG4gICAgICBhYnNQYXR0ZXJuID0gcGF0dGVybi5zdWJzdHIoMSk7XG4gICAgICB0eXBlID0gXCJuZWdhdGl2ZVwiO1xuICAgIH0gZWxzZSB7XG4gICAgICBhYnNQYXR0ZXJuID0gcGF0dGVybjtcbiAgICAgIHR5cGUgPSBcInBvc2l0aXZlXCI7XG4gICAgfVxuICAgIGNvbnN0IHJlc29sdmVkUGF0dGVybjogc3RyaW5nID0gYmFzZVBhdGggIT09IHVuZGVmaW5lZCA/IHN5c1BhdGgucmVzb2x2ZShiYXNlUGF0aCwgYWJzUGF0dGVybikgOiBhYnNQYXR0ZXJuO1xuICAgIG1hdGNoZXMucHVzaCh7XG4gICAgICB0eXBlLFxuICAgICAgcmVnZXhwOiBtaW5pbWF0Y2gubWFrZVJlKHJlc29sdmVkUGF0dGVybiwge2RvdDogdHJ1ZX0pLFxuICAgIH0pO1xuICAgIC8vIEZpeCBiYWQgd2lsZHN0YXIgY29udmVyc2lvbiB0byBSZWdFeHBcbiAgICBpZiAoYWJzUGF0dGVybi5zdGFydHNXaXRoKFwiKiovXCIpKSB7XG4gICAgICBjb25zdCBwYXR0ZXJuVGFpbDogc3RyaW5nID0gYWJzUGF0dGVybi5zdWJzdHIoXCIqKi9cIi5sZW5ndGgpO1xuICAgICAgY29uc3QgcmVzb2x2ZWRQYXR0ZXJuOiBzdHJpbmcgPSBiYXNlUGF0aCAhPT0gdW5kZWZpbmVkID8gc3lzUGF0aC5yZXNvbHZlKGJhc2VQYXRoLCBwYXR0ZXJuVGFpbCkgOiBwYXR0ZXJuVGFpbDtcbiAgICAgIG1hdGNoZXMucHVzaCh7XG4gICAgICAgIHR5cGUsXG4gICAgICAgIHJlZ2V4cDogbWluaW1hdGNoLm1ha2VSZShyZXNvbHZlZFBhdHRlcm4sIHtkb3Q6IHRydWV9KSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiBmaWx0ZXIoaW5mbzogTW9kdWxlSW5mbyk6IGJvb2xlYW4ge1xuICAgIGlmICghaXNSZWd1bGFyRmlsZShpbmZvKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBwb3NpeFBhdGg6IHN0cmluZyA9IHRvUG9zaXhQYXRoKGluZm8udXJsKTtcbiAgICBmb3IgKGNvbnN0IG1hdGNoIG9mIG1hdGNoZXMpIHtcbiAgICAgIGlmIChtYXRjaC5yZWdleHAudGVzdChwb3NpeFBhdGgpKSB7XG4gICAgICAgIHJldHVybiBtYXRjaC50eXBlID09PSBcInBvc2l0aXZlXCI7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUmVndWxhckZpbGUoaW5mbzogTW9kdWxlSW5mbyk6IGJvb2xlYW4ge1xuICByZXR1cm4gcGFyc2VOb2RlU2NyaXB0VXJsKGluZm8udXJsKS5pc0ZpbGVVcmw7XG59XG5cbi8vIGZ1bmN0aW9uIGluQ3dkKGluZm86IE1vZHVsZUluZm8pOiBib29sZWFuIHtcbi8vICAgY29uc3Qgc2NyaXB0VXJsOiBQYXJzZWRTY3JpcHRVcmwgPSBwYXJzZU5vZGVTY3JpcHRVcmwoaW5mby51cmwpO1xuLy8gICBpZiAoIXNjcmlwdFVybC5pc0ZpbGVVcmwpIHtcbi8vICAgICByZXR1cm4gZmFsc2U7XG4vLyAgIH1cbi8vICAgY29uc3QgY3dkRnVyaTogc3RyaW5nID0gZnJvbVN5c1BhdGgoc3lzUGF0aC5yZXNvbHZlKHByb2Nlc3MuY3dkKCkpKS5ocmVmO1xuLy8gICByZXR1cm4gaXNEZXNjZW5kYW50T2Yoc2NyaXB0VXJsLnVybCwgY3dkRnVyaSk7XG4vLyB9XG5cbi8vIGZ1bmN0aW9uIGlzRGVzY2VuZGFudE9mKGN1clVybDogc3RyaW5nLCBhbmNlc3RvclVybDogc3RyaW5nKTogYm9vbGVhbiB7XG4vLyAgIGNvbnN0IGN1cjogUmVhZG9ubHlBcnJheTxzdHJpbmc+ID0gbmV3IHVybC5VUkwoY3VyVXJsKS5wYXRobmFtZS5zcGxpdChcIi9cIik7XG4vLyAgIGNvbnN0IGFuY2VzdG9yOiBSZWFkb25seUFycmF5PHN0cmluZz4gPSBuZXcgdXJsLlVSTChhbmNlc3RvclVybCkucGF0aG5hbWUuc3BsaXQoXCIvXCIpO1xuLy8gICBmb3IgKGNvbnN0IFtpLCBzZWdtZW50XSBvZiBhbmNlc3Rvci5lbnRyaWVzKCkpIHtcbi8vICAgICBpZiAoY3VyW2ldICE9PSBzZWdtZW50KSB7XG4vLyAgICAgICByZXR1cm4gZmFsc2U7XG4vLyAgICAgfVxuLy8gICB9XG4vLyAgIHJldHVybiB0cnVlO1xuLy8gfVxuIl0sInNvdXJjZVJvb3QiOiIifQ==