1 | import { toPosixPath } from "furi";
|
2 | import minimatch from "minimatch";
|
3 | import { parseSys as parseNodeScriptUrl } from "node-script-url";
|
4 | import sysPath from "path";
|
5 | export 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 | }
|
51 | export 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==
|