UNPKG

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