UNPKG

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