@matter/tools 0.11.9 → 0.12.0-alpha.0-20241213-fcd71a96d
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/building/project.js +1 -1
- package/dist/cjs/building/project.js.map +1 -1
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/running/cli.d.ts.map +1 -1
- package/dist/cjs/running/cli.js +25 -30
- package/dist/cjs/running/cli.js.map +1 -1
- package/dist/cjs/running/ensure-compiled.d.ts +11 -0
- package/dist/cjs/running/ensure-compiled.d.ts.map +1 -0
- package/dist/cjs/running/ensure-compiled.js +69 -0
- package/dist/cjs/running/ensure-compiled.js.map +6 -0
- package/dist/cjs/util/bootstrap.mjs +10 -8
- package/dist/cjs/util/progress.d.ts +2 -1
- package/dist/cjs/util/progress.d.ts.map +1 -1
- package/dist/cjs/util/progress.js +14 -2
- package/dist/cjs/util/progress.js.map +1 -1
- package/dist/esm/building/project.js +2 -2
- package/dist/esm/building/project.js.map +1 -1
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +2 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/running/cli.d.ts.map +1 -1
- package/dist/esm/running/cli.js +27 -32
- package/dist/esm/running/cli.js.map +1 -1
- package/dist/esm/running/ensure-compiled.d.ts +11 -0
- package/dist/esm/running/ensure-compiled.d.ts.map +1 -0
- package/dist/esm/running/ensure-compiled.js +49 -0
- package/dist/esm/running/ensure-compiled.js.map +6 -0
- package/dist/esm/util/bootstrap.mjs +10 -8
- package/dist/esm/util/progress.d.ts +2 -1
- package/dist/esm/util/progress.d.ts.map +1 -1
- package/dist/esm/util/progress.js +15 -3
- package/dist/esm/util/progress.js.map +1 -1
- package/package.json +6 -1
- package/src/building/project.ts +1 -1
- package/src/index.ts +1 -0
- package/src/running/cli.ts +36 -36
- package/src/running/ensure-compiled.ts +57 -0
- package/src/util/bootstrap.mjs +10 -8
- package/src/util/progress.ts +20 -3
package/dist/esm/running/cli.js
CHANGED
|
@@ -4,15 +4,32 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import { dirname, resolve } from "path";
|
|
7
|
-
import { exit } from "process";
|
|
8
|
-
import {
|
|
9
|
-
import { Graph } from "../building/graph.js";
|
|
10
|
-
import { Project } from "../building/project.js";
|
|
11
|
-
import { Package } from "../util/package.js";
|
|
7
|
+
import { exit, stderr, stdout } from "process";
|
|
8
|
+
import { ensureCompiled } from "./ensure-compiled.js";
|
|
12
9
|
import { executeNode } from "./execute.js";
|
|
13
10
|
async function main(argv = process.argv) {
|
|
14
|
-
let
|
|
15
|
-
argv = argv.slice(
|
|
11
|
+
let directExec = !!process.env.MATTER_DIRECT_EXEC;
|
|
12
|
+
argv = argv.slice(2);
|
|
13
|
+
while (argv[0][0] === "-") {
|
|
14
|
+
const option = argv.shift();
|
|
15
|
+
switch (option) {
|
|
16
|
+
case "--clear":
|
|
17
|
+
console.clear();
|
|
18
|
+
break;
|
|
19
|
+
case "--direct":
|
|
20
|
+
directExec = true;
|
|
21
|
+
break;
|
|
22
|
+
default:
|
|
23
|
+
stderr.write(`Unrecognized option ${option}`);
|
|
24
|
+
break;
|
|
25
|
+
case "--help":
|
|
26
|
+
stdout.write(
|
|
27
|
+
"Usage: matter-run [--clear] [--direct] <SCRIPT> [ARG]...\nRun a Node.js script with source map support and automatic transpilation of TypeScript."
|
|
28
|
+
);
|
|
29
|
+
break;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
let script = argv.shift();
|
|
16
33
|
if (script === void 0 || script === "") {
|
|
17
34
|
console.error("Error: Script name required");
|
|
18
35
|
exit(1);
|
|
@@ -24,35 +41,13 @@ async function main(argv = process.argv) {
|
|
|
24
41
|
} else {
|
|
25
42
|
dir = dirname(script);
|
|
26
43
|
}
|
|
27
|
-
const pkg =
|
|
28
|
-
let format;
|
|
29
|
-
if (!pkg.hasSrc) {
|
|
30
|
-
format = "none";
|
|
31
|
-
} else if (pkg.supportsEsm) {
|
|
32
|
-
format = "esm";
|
|
33
|
-
} else if (pkg.supportsCjs) {
|
|
34
|
-
format = "cjs";
|
|
35
|
-
} else {
|
|
36
|
-
console.error("Error: Could not identify project format");
|
|
37
|
-
exit(2);
|
|
38
|
-
}
|
|
39
|
-
const isDevelopment = !dir.match(/[\\/]node_modules[\\/]/);
|
|
40
|
-
if (isDevelopment && format !== "none") {
|
|
41
|
-
const builder = new Builder();
|
|
42
|
-
const dependencies = await Graph.forProject(dir);
|
|
43
|
-
if (dependencies) {
|
|
44
|
-
await dependencies.build(builder, false);
|
|
45
|
-
} else {
|
|
46
|
-
const project = new Project(pkg);
|
|
47
|
-
await builder.build(project);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
44
|
+
const { format, pkg } = await ensureCompiled(dir);
|
|
50
45
|
if (format !== "none") {
|
|
51
46
|
script = pkg.resolve(
|
|
52
47
|
pkg.relative(script).replace(/\.ts$/, ".js").replace(/^src[\\/]/, `dist/${format}/`)
|
|
53
48
|
);
|
|
54
49
|
}
|
|
55
|
-
if (
|
|
50
|
+
if (directExec) {
|
|
56
51
|
await import(script);
|
|
57
52
|
} else {
|
|
58
53
|
process.on("SIGINT", () => {
|
|
@@ -65,4 +60,4 @@ async function main(argv = process.argv) {
|
|
|
65
60
|
export {
|
|
66
61
|
main
|
|
67
62
|
};
|
|
68
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3J1bm5pbmcvY2xpLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgMjAyMi0yMDI0IE1hdHRlci5qcyBBdXRob3JzXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuICovXG5cbmltcG9ydCB7IGRpcm5hbWUsIHJlc29sdmUgfSBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgZXhpdCwgc3RkZXJyLCBzdGRvdXQgfSBmcm9tIFwicHJvY2Vzc1wiO1xuaW1wb3J0IHsgZW5zdXJlQ29tcGlsZWQgfSBmcm9tIFwiLi9lbnN1cmUtY29tcGlsZWQuanNcIjtcbmltcG9ydCB7IGV4ZWN1dGVOb2RlIH0gZnJvbSBcIi4vZXhlY3V0ZS5qc1wiO1xuXG4vKipcbiAqIEV4ZWN1dGUgYSBzY3JpcHQgaW4gYSBwYWNrYWdlIHRoYXQgY29uZm9ybXMgdG8gbWF0dGVyLmpzIGNvbnZlbnRpb25zLiAgVGhpcyBpcyBwcmltYXJpbHkgdXNlZnVsIHdpdGhpbiBhIG1hdHRlci5qc1xuICogZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgYnV0IHNob3VsZCBhbHNvIHdvcmsgd2hlbiBpbnN0YWxsZWQgdmlhIE5QTS5cbiAqXG4gKiBGaXJzdCB3ZSB0cmFuc2xhdGUgc291cmNlIGZpbGVuYW1lcyB0byB0aGUgdHJhbnNwaWxlZCAqLmpzIGVxdWl2YWxlbnQuXG4gKlxuICogSWYgdGhlIHRhcmdldCBzY3JpcHQgaXMgaW4gYSBwYWNrYWdlIG5vdCBpbnN0YWxsZWQgdmlhIE5QTSB3ZSBidWlsZCB0aGUgcGFja2FnZS4gIElmIHRoZSBwYWNrYWdlIGlzIGFuIE5QTSB3b3Jrc3BhY2VcbiAqIHVuZGVyIGEgdG9wLWxldmVsIHBhY2thZ2Ugd2UgYWxzbyBidWlsZCBkZXBlbmRlbmNpZXMuXG4gKlxuICogV2UgdGhlbiBydW4gdGhlIHNjcmlwdCBpbiBhIGNoaWxkIHByb2Nlc3Mgc28gd2UgY2FuIGVuYWJsZSBzb3VyY2UgbWFwcyB1c2luZyBub2RlIC0tc291cmNlLW1hcHMuICBZb3UgY2FuIGRpc2FibGVcbiAqIHRoaXMgYnkgc2V0dGluZyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgTUFUVEVSX0RJUkVDVF9FWEVDLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbWFpbihhcmd2ID0gcHJvY2Vzcy5hcmd2KSB7XG4gICAgbGV0IGRpcmVjdEV4ZWMgPSAhIXByb2Nlc3MuZW52Lk1BVFRFUl9ESVJFQ1RfRVhFQztcblxuICAgIC8vIERyb3Agbm9kZSBhbmQgbWF0dGVyLXJ1blxuICAgIGFyZ3YgPSBhcmd2LnNsaWNlKDIpO1xuXG4gICAgLy8gUHJvY2VzcyBhcmd1bWVudHMgdG8gbWF0dGVyLXJ1biBpdHNlbGYgKHZlcnkgc2ltcGxlIGFzIG9mIHlldCBzbyBqdXN0IHByb2Nlc3NpbmcgbWFudWFsbHkpXG4gICAgd2hpbGUgKGFyZ3ZbMF1bMF0gPT09IFwiLVwiKSB7XG4gICAgICAgIGNvbnN0IG9wdGlvbiA9IGFyZ3Yuc2hpZnQoKTtcblxuICAgICAgICBzd2l0Y2ggKG9wdGlvbikge1xuICAgICAgICAgICAgY2FzZSBcIi0tY2xlYXJcIjpcbiAgICAgICAgICAgICAgICBjb25zb2xlLmNsZWFyKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgXCItLWRpcmVjdFwiOlxuICAgICAgICAgICAgICAgIGRpcmVjdEV4ZWMgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHN0ZGVyci53cml0ZShgVW5yZWNvZ25pemVkIG9wdGlvbiAke29wdGlvbn1gKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSBcIi0taGVscFwiOlxuICAgICAgICAgICAgICAgIHN0ZG91dC53cml0ZShcbiAgICAgICAgICAgICAgICAgICAgXCJVc2FnZTogbWF0dGVyLXJ1biBbLS1jbGVhcl0gWy0tZGlyZWN0XSA8U0NSSVBUPiBbQVJHXS4uLlxcblJ1biBhIE5vZGUuanMgc2NyaXB0IHdpdGggc291cmNlIG1hcCBzdXBwb3J0IGFuZCBhdXRvbWF0aWMgdHJhbnNwaWxhdGlvbiBvZiBUeXBlU2NyaXB0LlwiLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBFeHRyYWN0IHNjcmlwdCBuYW1lLiAgYXJndiBpcyB0aGVuIHRoZSBzY3JpcHQncyBhcmdzXG4gICAgbGV0IHNjcmlwdCA9IGFyZ3Yuc2hpZnQoKTtcblxuICAgIGlmIChzY3JpcHQgPT09IHVuZGVmaW5lZCB8fCBzY3JpcHQgPT09IFwiXCIpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yOiBTY3JpcHQgbmFtZSByZXF1aXJlZFwiKTtcbiAgICAgICAgZXhpdCgxKTtcbiAgICB9XG5cbiAgICBzY3JpcHQgPSByZXNvbHZlKHNjcmlwdCk7XG4gICAgbGV0IGRpcjtcblxuICAgIGlmIChzY3JpcHQubWF0Y2goL1tcXFxcL11ub2RlX21vZHVsZXNbXFxcXC9dLmJpbltcXFxcL10vKSkge1xuICAgICAgICAvLyBXaGVuIGV4ZWN1dGluZyBhIHNjcmlwdCBsaW5rZWQgdW5kZXIgbm9kZV9tb2R1bGVzLCBzZWFyY2ggZm9yIHRoZSBwcm9qZWN0IGZyb20gY3dkLiAgVGhpcyBvY2N1cnMgd2hlbiBydW5uaW5nXG4gICAgICAgIC8vIHRvb2xpbmcgc3VjaCBhcyBcIm1hdHRlci10ZXN0XCJcbiAgICAgICAgZGlyID0gcHJvY2Vzcy5jd2QoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICAvLyBXaGVuIGV4ZWN1dGluZyBvdXRzaWRlIG9mIG5vZGUgbW9kdWxlcyB3ZSB3YW50IHRvIGJ1aWxkIHRoZSBwcm9qZWN0IGNvbnRhaW5pbmcgdGhlIHNjcmlwdFxuICAgICAgICBkaXIgPSBkaXJuYW1lKHNjcmlwdCk7XG4gICAgfVxuXG4gICAgY29uc3QgeyBmb3JtYXQsIHBrZyB9ID0gYXdhaXQgZW5zdXJlQ29tcGlsZWQoZGlyKTtcblxuICAgIC8vIERldGVybWluZSB0aGUgYWN0dWFsIHNjcmlwdCB0byBydW5cbiAgICBpZiAoZm9ybWF0ICE9PSBcIm5vbmVcIikge1xuICAgICAgICBzY3JpcHQgPSBwa2cucmVzb2x2ZShcbiAgICAgICAgICAgIHBrZ1xuICAgICAgICAgICAgICAgIC5yZWxhdGl2ZShzY3JpcHQpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcLnRzJC8sIFwiLmpzXCIpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL15zcmNbXFxcXC9dLywgYGRpc3QvJHtmb3JtYXR9L2ApLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8vIElmIHdlIHJ1biBpbiB0aGUgc2FtZSBwcm9jZXNzIHdlIGNhbm5vdCBlbmFibGUgc291cmNlIG1hcHMgc28gZGVmYXVsdCBtb2RlIGlzIHRvIGZvcmsuICBIb3dldmVyIGZvciBkZXZlbG9wbWVudFxuICAgIC8vIHB1cnBvc2VzIGl0IGNhbiBiZSB1c2VmdWwgdG8gYXZvaWQgdGhlIGludGVybWVkaWFyeSBwcm9jZXNzLiAgSW4gdGhpcyBjYXNlIHlvdSBjYW4gc2V0IFwiLS1lbmFibGUtc291cmNlLW1hcHNcIlxuICAgIC8vIG1hbnVhbGx5IHRoZW4gc2V0IE1BVFRFUl9ESVJFQ1RfRVhFQ1xuICAgIGlmIChkaXJlY3RFeGVjKSB7XG4gICAgICAgIC8vIFRoaXMgd2lsbCBub3QgdHJhbnNwaWxlIHByb3Blcmx5IHRvIGNvbW1vbmpzIGJ1dCB3ZSBvbmx5IHVzZSB0aGlzIG1vZHVsZSBmcm9tIEVTTSBzbyB0aGF0J3MgT0tcbiAgICAgICAgYXdhaXQgaW1wb3J0KHNjcmlwdCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgLy8gT3VyIGJlaGF2aW9yIGluIHJlc3BvbnNlIHRvIFNJR0lOVCBzaG91bGQgbWlycm9yIHRoZSBjaGlsZCBwcm9jZXNzJ3MuICBTbyBpZ25vcmUgdGhlIHNpZ25hbCBsb2NhbGx5LCBvbmx5XG4gICAgICAgIC8vIHF1aXR0aW5nIG9uY2UgdGhlIGNoaWxkIHByb2Nlc3MgZG9lc1xuICAgICAgICBwcm9jZXNzLm9uKFwiU0lHSU5UXCIsICgpID0+IHt9KTtcbiAgICAgICAgcHJvY2Vzcy5vbihcIlNJR1RFUk1cIiwgKCkgPT4ge30pO1xuXG4gICAgICAgIHByb2Nlc3MuZXhpdENvZGUgPSBhd2FpdCBleGVjdXRlTm9kZShzY3JpcHQsIGFyZ3YpO1xuICAgIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFNQSxTQUFTLFNBQVMsZUFBZTtBQUNqQyxTQUFTLE1BQU0sUUFBUSxjQUFjO0FBQ3JDLFNBQVMsc0JBQXNCO0FBQy9CLFNBQVMsbUJBQW1CO0FBYzVCLGVBQXNCLEtBQUssT0FBTyxRQUFRLE1BQU07QUFDNUMsTUFBSSxhQUFhLENBQUMsQ0FBQyxRQUFRLElBQUk7QUFHL0IsU0FBTyxLQUFLLE1BQU0sQ0FBQztBQUduQixTQUFPLEtBQUssQ0FBQyxFQUFFLENBQUMsTUFBTSxLQUFLO0FBQ3ZCLFVBQU0sU0FBUyxLQUFLLE1BQU07QUFFMUIsWUFBUSxRQUFRO0FBQUEsTUFDWixLQUFLO0FBQ0QsZ0JBQVEsTUFBTTtBQUNkO0FBQUEsTUFFSixLQUFLO0FBQ0QscUJBQWE7QUFDYjtBQUFBLE1BRUo7QUFDSSxlQUFPLE1BQU0sdUJBQXVCLE1BQU0sRUFBRTtBQUM1QztBQUFBLE1BRUosS0FBSztBQUNELGVBQU87QUFBQSxVQUNIO0FBQUEsUUFDSjtBQUNBO0FBQUEsSUFDUjtBQUFBLEVBQ0o7QUFHQSxNQUFJLFNBQVMsS0FBSyxNQUFNO0FBRXhCLE1BQUksV0FBVyxVQUFhLFdBQVcsSUFBSTtBQUN2QyxZQUFRLE1BQU0sNkJBQTZCO0FBQzNDLFNBQUssQ0FBQztBQUFBLEVBQ1Y7QUFFQSxXQUFTLFFBQVEsTUFBTTtBQUN2QixNQUFJO0FBRUosTUFBSSxPQUFPLE1BQU0saUNBQWlDLEdBQUc7QUFHakQsVUFBTSxRQUFRLElBQUk7QUFBQSxFQUN0QixPQUFPO0FBRUgsVUFBTSxRQUFRLE1BQU07QUFBQSxFQUN4QjtBQUVBLFFBQU0sRUFBRSxRQUFRLElBQUksSUFBSSxNQUFNLGVBQWUsR0FBRztBQUdoRCxNQUFJLFdBQVcsUUFBUTtBQUNuQixhQUFTLElBQUk7QUFBQSxNQUNULElBQ0ssU0FBUyxNQUFNLEVBQ2YsUUFBUSxTQUFTLEtBQUssRUFDdEIsUUFBUSxhQUFhLFFBQVEsTUFBTSxHQUFHO0FBQUEsSUFDL0M7QUFBQSxFQUNKO0FBS0EsTUFBSSxZQUFZO0FBRVosVUFBTSxPQUFPO0FBQUEsRUFDakIsT0FBTztBQUdILFlBQVEsR0FBRyxVQUFVLE1BQU07QUFBQSxJQUFDLENBQUM7QUFDN0IsWUFBUSxHQUFHLFdBQVcsTUFBTTtBQUFBLElBQUMsQ0FBQztBQUU5QixZQUFRLFdBQVcsTUFBTSxZQUFZLFFBQVEsSUFBSTtBQUFBLEVBQ3JEO0FBQ0o7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/running/cli.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,SAAS,eAAe;AACjC,SAAS,
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,SAAS,eAAe;AACjC,SAAS,MAAM,QAAQ,cAAc;AACrC,SAAS,sBAAsB;AAC/B,SAAS,mBAAmB;AAc5B,eAAsB,KAAK,OAAO,QAAQ,MAAM;AAC5C,MAAI,aAAa,CAAC,CAAC,QAAQ,IAAI;AAG/B,SAAO,KAAK,MAAM,CAAC;AAGnB,SAAO,KAAK,CAAC,EAAE,CAAC,MAAM,KAAK;AACvB,UAAM,SAAS,KAAK,MAAM;AAE1B,YAAQ,QAAQ;AAAA,MACZ,KAAK;AACD,gBAAQ,MAAM;AACd;AAAA,MAEJ,KAAK;AACD,qBAAa;AACb;AAAA,MAEJ;AACI,eAAO,MAAM,uBAAuB,MAAM,EAAE;AAC5C;AAAA,MAEJ,KAAK;AACD,eAAO;AAAA,UACH;AAAA,QACJ;AACA;AAAA,IACR;AAAA,EACJ;AAGA,MAAI,SAAS,KAAK,MAAM;AAExB,MAAI,WAAW,UAAa,WAAW,IAAI;AACvC,YAAQ,MAAM,6BAA6B;AAC3C,SAAK,CAAC;AAAA,EACV;AAEA,WAAS,QAAQ,MAAM;AACvB,MAAI;AAEJ,MAAI,OAAO,MAAM,iCAAiC,GAAG;AAGjD,UAAM,QAAQ,IAAI;AAAA,EACtB,OAAO;AAEH,UAAM,QAAQ,MAAM;AAAA,EACxB;AAEA,QAAM,EAAE,QAAQ,IAAI,IAAI,MAAM,eAAe,GAAG;AAGhD,MAAI,WAAW,QAAQ;AACnB,aAAS,IAAI;AAAA,MACT,IACK,SAAS,MAAM,EACf,QAAQ,SAAS,KAAK,EACtB,QAAQ,aAAa,QAAQ,MAAM,GAAG;AAAA,IAC/C;AAAA,EACJ;AAKA,MAAI,YAAY;AAEZ,UAAM,OAAO;AAAA,EACjB,OAAO;AAGH,YAAQ,GAAG,UAAU,MAAM;AAAA,IAAC,CAAC;AAC7B,YAAQ,GAAG,WAAW,MAAM;AAAA,IAAC,CAAC;AAE9B,YAAQ,WAAW,MAAM,YAAY,QAAQ,IAAI;AAAA,EACrD;AACJ;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { Package } from "../util/package.js";
|
|
7
|
+
export declare function ensureCompiled(path: string): Promise<{
|
|
8
|
+
pkg: Package;
|
|
9
|
+
format: "esm" | "cjs" | "none";
|
|
10
|
+
}>;
|
|
11
|
+
//# sourceMappingURL=ensure-compiled.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ensure-compiled.d.ts","sourceRoot":"","sources":["../../../src/running/ensure-compiled.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAI7C,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM;;;GAyChD"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { exit } from "process";
|
|
7
|
+
import { fileURLToPath } from "url";
|
|
8
|
+
import { Builder } from "../building/builder.js";
|
|
9
|
+
import { Graph } from "../building/graph.js";
|
|
10
|
+
import { Project } from "../building/project.js";
|
|
11
|
+
import { Package } from "../util/package.js";
|
|
12
|
+
let compilationEnsured;
|
|
13
|
+
async function ensureCompiled(path) {
|
|
14
|
+
if (path.startsWith("file:")) {
|
|
15
|
+
path = fileURLToPath(path);
|
|
16
|
+
}
|
|
17
|
+
const pkg = Package.forPath(path);
|
|
18
|
+
let format;
|
|
19
|
+
if (!pkg.hasSrc) {
|
|
20
|
+
format = "none";
|
|
21
|
+
} else if (pkg.supportsEsm) {
|
|
22
|
+
format = "esm";
|
|
23
|
+
} else if (pkg.supportsCjs) {
|
|
24
|
+
format = "cjs";
|
|
25
|
+
} else {
|
|
26
|
+
console.error("Error: Could not identify project format");
|
|
27
|
+
exit(2);
|
|
28
|
+
}
|
|
29
|
+
if (compilationEnsured == pkg) {
|
|
30
|
+
return { pkg, format };
|
|
31
|
+
}
|
|
32
|
+
const isDevelopment = !path.match(/[\\/]node_modules[\\/]/);
|
|
33
|
+
if (isDevelopment && format !== "none") {
|
|
34
|
+
const builder = new Builder();
|
|
35
|
+
const dependencies = await Graph.forProject(path);
|
|
36
|
+
if (dependencies) {
|
|
37
|
+
await dependencies.build(builder, false);
|
|
38
|
+
} else {
|
|
39
|
+
const project = new Project(pkg);
|
|
40
|
+
await builder.build(project);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
compilationEnsured = pkg;
|
|
44
|
+
return { pkg, format };
|
|
45
|
+
}
|
|
46
|
+
export {
|
|
47
|
+
ensureCompiled
|
|
48
|
+
};
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3J1bm5pbmcvZW5zdXJlLWNvbXBpbGVkLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgMjAyMi0yMDI0IE1hdHRlci5qcyBBdXRob3JzXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuICovXG5cbmltcG9ydCB7IGV4aXQgfSBmcm9tIFwicHJvY2Vzc1wiO1xuaW1wb3J0IHsgZmlsZVVSTFRvUGF0aCB9IGZyb20gXCJ1cmxcIjtcbmltcG9ydCB7IEJ1aWxkZXIgfSBmcm9tIFwiLi4vYnVpbGRpbmcvYnVpbGRlci5qc1wiO1xuaW1wb3J0IHsgR3JhcGggfSBmcm9tIFwiLi4vYnVpbGRpbmcvZ3JhcGguanNcIjtcbmltcG9ydCB7IFByb2plY3QgfSBmcm9tIFwiLi4vYnVpbGRpbmcvcHJvamVjdC5qc1wiO1xuaW1wb3J0IHsgUGFja2FnZSB9IGZyb20gXCIuLi91dGlsL3BhY2thZ2UuanNcIjtcblxubGV0IGNvbXBpbGF0aW9uRW5zdXJlZDogdW5kZWZpbmVkIHwgUGFja2FnZTtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGVuc3VyZUNvbXBpbGVkKHBhdGg6IHN0cmluZykge1xuICAgIGlmIChwYXRoLnN0YXJ0c1dpdGgoXCJmaWxlOlwiKSkge1xuICAgICAgICBwYXRoID0gZmlsZVVSTFRvUGF0aChwYXRoKTtcbiAgICB9XG5cbiAgICBjb25zdCBwa2cgPSBQYWNrYWdlLmZvclBhdGgocGF0aCk7XG5cbiAgICBsZXQgZm9ybWF0OiBcImVzbVwiIHwgXCJjanNcIiB8IFwibm9uZVwiO1xuICAgIGlmICghcGtnLmhhc1NyYykge1xuICAgICAgICBmb3JtYXQgPSBcIm5vbmVcIjtcbiAgICB9IGVsc2UgaWYgKHBrZy5zdXBwb3J0c0VzbSkge1xuICAgICAgICBmb3JtYXQgPSBcImVzbVwiO1xuICAgIH0gZWxzZSBpZiAocGtnLnN1cHBvcnRzQ2pzKSB7XG4gICAgICAgIGZvcm1hdCA9IFwiY2pzXCI7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yOiBDb3VsZCBub3QgaWRlbnRpZnkgcHJvamVjdCBmb3JtYXRcIik7XG4gICAgICAgIGV4aXQoMik7XG4gICAgfVxuXG4gICAgaWYgKGNvbXBpbGF0aW9uRW5zdXJlZCA9PSBwa2cpIHtcbiAgICAgICAgcmV0dXJuIHsgcGtnLCBmb3JtYXQgfTtcbiAgICB9XG5cbiAgICAvLyBJbiBkZXZlbG9wbWVudCB3ZSBjdXJyZW50bHkgYnVpbGQgcGFja2FnZSBhbmQgZGVwZW5kZW5jaWVzIHVuY29uZGl0aW9uYWxseSBiZWZvcmUgcnVubmluZ1xuICAgIGNvbnN0IGlzRGV2ZWxvcG1lbnQgPSAhcGF0aC5tYXRjaCgvW1xcXFwvXW5vZGVfbW9kdWxlc1tcXFxcL10vKTtcbiAgICBpZiAoaXNEZXZlbG9wbWVudCAmJiBmb3JtYXQgIT09IFwibm9uZVwiKSB7XG4gICAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgQnVpbGRlcigpO1xuICAgICAgICBjb25zdCBkZXBlbmRlbmNpZXMgPSBhd2FpdCBHcmFwaC5mb3JQcm9qZWN0KHBhdGgpO1xuICAgICAgICBpZiAoZGVwZW5kZW5jaWVzKSB7XG4gICAgICAgICAgICAvLyBQcm9qZWN0IGlzIGluIGEgd29ya3NwYWNlOyBidWlsZCBhbG9uZyB3aXRoIGRlcGVuZGVuY2llcyBmcm9tIHRoZSBzYW1lIHdvcmtzcGFjZVxuICAgICAgICAgICAgYXdhaXQgZGVwZW5kZW5jaWVzLmJ1aWxkKGJ1aWxkZXIsIGZhbHNlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIFByb2plY3QgaXMgbm90IGluIGEgd29ya3NwYWNlOyBvbmx5IGJ1aWxkIHRoZSBwcm9qZWN0XG4gICAgICAgICAgICBjb25zdCBwcm9qZWN0ID0gbmV3IFByb2plY3QocGtnKTtcbiAgICAgICAgICAgIGF3YWl0IGJ1aWxkZXIuYnVpbGQocHJvamVjdCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb21waWxhdGlvbkVuc3VyZWQgPSBwa2c7XG5cbiAgICByZXR1cm4geyBwa2csIGZvcm1hdCB9O1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQU1BLFNBQVMsWUFBWTtBQUNyQixTQUFTLHFCQUFxQjtBQUM5QixTQUFTLGVBQWU7QUFDeEIsU0FBUyxhQUFhO0FBQ3RCLFNBQVMsZUFBZTtBQUN4QixTQUFTLGVBQWU7QUFFeEIsSUFBSTtBQUVKLGVBQXNCLGVBQWUsTUFBYztBQUMvQyxNQUFJLEtBQUssV0FBVyxPQUFPLEdBQUc7QUFDMUIsV0FBTyxjQUFjLElBQUk7QUFBQSxFQUM3QjtBQUVBLFFBQU0sTUFBTSxRQUFRLFFBQVEsSUFBSTtBQUVoQyxNQUFJO0FBQ0osTUFBSSxDQUFDLElBQUksUUFBUTtBQUNiLGFBQVM7QUFBQSxFQUNiLFdBQVcsSUFBSSxhQUFhO0FBQ3hCLGFBQVM7QUFBQSxFQUNiLFdBQVcsSUFBSSxhQUFhO0FBQ3hCLGFBQVM7QUFBQSxFQUNiLE9BQU87QUFDSCxZQUFRLE1BQU0sMENBQTBDO0FBQ3hELFNBQUssQ0FBQztBQUFBLEVBQ1Y7QUFFQSxNQUFJLHNCQUFzQixLQUFLO0FBQzNCLFdBQU8sRUFBRSxLQUFLLE9BQU87QUFBQSxFQUN6QjtBQUdBLFFBQU0sZ0JBQWdCLENBQUMsS0FBSyxNQUFNLHdCQUF3QjtBQUMxRCxNQUFJLGlCQUFpQixXQUFXLFFBQVE7QUFDcEMsVUFBTSxVQUFVLElBQUksUUFBUTtBQUM1QixVQUFNLGVBQWUsTUFBTSxNQUFNLFdBQVcsSUFBSTtBQUNoRCxRQUFJLGNBQWM7QUFFZCxZQUFNLGFBQWEsTUFBTSxTQUFTLEtBQUs7QUFBQSxJQUMzQyxPQUFPO0FBRUgsWUFBTSxVQUFVLElBQUksUUFBUSxHQUFHO0FBQy9CLFlBQU0sUUFBUSxNQUFNLE9BQU87QUFBQSxJQUMvQjtBQUFBLEVBQ0o7QUFFQSx1QkFBcUI7QUFFckIsU0FBTyxFQUFFLEtBQUssT0FBTztBQUN6QjsiLAogICJuYW1lcyI6IFtdCn0K
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/running/ensure-compiled.ts"],
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,YAAY;AACrB,SAAS,qBAAqB;AAC9B,SAAS,eAAe;AACxB,SAAS,aAAa;AACtB,SAAS,eAAe;AACxB,SAAS,eAAe;AAExB,IAAI;AAEJ,eAAsB,eAAe,MAAc;AAC/C,MAAI,KAAK,WAAW,OAAO,GAAG;AAC1B,WAAO,cAAc,IAAI;AAAA,EAC7B;AAEA,QAAM,MAAM,QAAQ,QAAQ,IAAI;AAEhC,MAAI;AACJ,MAAI,CAAC,IAAI,QAAQ;AACb,aAAS;AAAA,EACb,WAAW,IAAI,aAAa;AACxB,aAAS;AAAA,EACb,WAAW,IAAI,aAAa;AACxB,aAAS;AAAA,EACb,OAAO;AACH,YAAQ,MAAM,0CAA0C;AACxD,SAAK,CAAC;AAAA,EACV;AAEA,MAAI,sBAAsB,KAAK;AAC3B,WAAO,EAAE,KAAK,OAAO;AAAA,EACzB;AAGA,QAAM,gBAAgB,CAAC,KAAK,MAAM,wBAAwB;AAC1D,MAAI,iBAAiB,WAAW,QAAQ;AACpC,UAAM,UAAU,IAAI,QAAQ;AAC5B,UAAM,eAAe,MAAM,MAAM,WAAW,IAAI;AAChD,QAAI,cAAc;AAEd,YAAM,aAAa,MAAM,SAAS,KAAK;AAAA,IAC3C,OAAO;AAEH,YAAM,UAAU,IAAI,QAAQ,GAAG;AAC/B,YAAM,QAAQ,MAAM,OAAO;AAAA,IAC/B;AAAA,EACJ;AAEA,uBAAqB;AAErB,SAAO,EAAE,KAAK,OAAO;AACzB;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -25,13 +25,15 @@ function fatal(why, error) {
|
|
|
25
25
|
async function findFile(name) {
|
|
26
26
|
let dir = dirname(fileURLToPath(import.meta.url));
|
|
27
27
|
while (true) {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
28
|
+
if (!dir.endsWith("/dist/esm")) {
|
|
29
|
+
const path = resolve(dir, name);
|
|
30
|
+
try {
|
|
31
|
+
await stat(path);
|
|
32
|
+
return path;
|
|
33
|
+
} catch (e) {
|
|
34
|
+
if (e.code !== "ENOENT") {
|
|
35
|
+
fatal("there was an unexpected error searching the filesystem", e);
|
|
36
|
+
}
|
|
35
37
|
}
|
|
36
38
|
}
|
|
37
39
|
|
|
@@ -88,7 +90,7 @@ async function bootstrap() {
|
|
|
88
90
|
if (code === 0) {
|
|
89
91
|
resolve();
|
|
90
92
|
} else {
|
|
91
|
-
fatal(`esbuild
|
|
93
|
+
fatal(`esbuild exited with code ${code}`);
|
|
92
94
|
}
|
|
93
95
|
});
|
|
94
96
|
});
|
|
@@ -19,7 +19,8 @@ export declare class Progress {
|
|
|
19
19
|
warn(text: string): void;
|
|
20
20
|
shutdown(): void;
|
|
21
21
|
refresh(): void;
|
|
22
|
-
|
|
22
|
+
subtask(text: string, fn: () => Promise<void>): Promise<void>;
|
|
23
|
+
run<T>(what: string, fn: () => T | Promise<T>): Promise<T>;
|
|
23
24
|
}
|
|
24
25
|
export declare namespace Progress {
|
|
25
26
|
enum Status {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../../src/util/progress.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAmEvC,qBAAa,QAAQ;;IACjB,MAAM,kBAA2B;;
|
|
1
|
+
{"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../../src/util/progress.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAmEvC,qBAAa,QAAQ;;IACjB,MAAM,kBAA2B;;IAWjC,SAAS,CAAC,IAAI,EAAE,OAAO;IAIvB,WAAW,CAAC,IAAI,EAAE,OAAO;IAIzB,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO;IAI9B,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,OAAO,GAAG,OAAO;IAcxD,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;IA0BnC,OAAO,CAAC,IAAI,EAAE,MAAM;IAMpB,OAAO,CAAC,IAAI,EAAE,MAAM;IAMpB,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG;IAO/B,IAAI,CAAC,IAAI,EAAE,MAAM;IAIjB,QAAQ;IAQR,OAAO;IAMD,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC;IA2B7C,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;CAwBtD;AAED,yBAAiB,QAAQ,CAAC;IACtB,KAAY,MAAM;QACd,OAAO,YAAY;QACnB,OAAO,YAAY;QACnB,OAAO,YAAY;QACnB,OAAO,YAAY;KACtB;CACJ"}
|
|
@@ -61,6 +61,7 @@ class Progress {
|
|
|
61
61
|
#refreshInterval;
|
|
62
62
|
#spinnerPosition = 0;
|
|
63
63
|
#spinnerWindow;
|
|
64
|
+
#subtasks = Array();
|
|
64
65
|
constructor() {
|
|
65
66
|
}
|
|
66
67
|
emphasize(text) {
|
|
@@ -103,7 +104,8 @@ class Progress {
|
|
|
103
104
|
if (!this.#ongoingText) {
|
|
104
105
|
return;
|
|
105
106
|
}
|
|
106
|
-
|
|
107
|
+
const subtask = this.#subtasks.length ? colors.dim(` (${colors.dim(this.#subtasks[this.#subtasks.length - 1])})`) : "";
|
|
108
|
+
writeStatus(` ${colors.yellow(this.#spinner)} ${this.#ongoingText}${subtask}`, true);
|
|
107
109
|
}
|
|
108
110
|
success(text) {
|
|
109
111
|
this.status = Progress.Status.Success;
|
|
@@ -137,6 +139,14 @@ class Progress {
|
|
|
137
139
|
this.#writeOngoing();
|
|
138
140
|
}
|
|
139
141
|
}
|
|
142
|
+
async subtask(text, fn) {
|
|
143
|
+
this.#subtasks.push(text);
|
|
144
|
+
try {
|
|
145
|
+
await fn();
|
|
146
|
+
} finally {
|
|
147
|
+
this.#subtasks.pop();
|
|
148
|
+
}
|
|
149
|
+
}
|
|
140
150
|
#updateSpinner() {
|
|
141
151
|
if (!stdout.isTTY) {
|
|
142
152
|
return false;
|
|
@@ -152,13 +162,15 @@ class Progress {
|
|
|
152
162
|
}
|
|
153
163
|
async run(what, fn) {
|
|
154
164
|
this.update(what);
|
|
165
|
+
let result;
|
|
155
166
|
try {
|
|
156
|
-
await fn();
|
|
167
|
+
result = await fn();
|
|
157
168
|
} catch (e) {
|
|
158
169
|
this.failure(what);
|
|
159
170
|
throw e;
|
|
160
171
|
}
|
|
161
172
|
this.success(what);
|
|
173
|
+
return result;
|
|
162
174
|
}
|
|
163
175
|
get #duration() {
|
|
164
176
|
let ms = this.#start ? (/* @__PURE__ */ new Date()).getTime() - this.#start : 0;
|
|
@@ -201,4 +213,4 @@ function filterAnsi(str, len) {
|
|
|
201
213
|
export {
|
|
202
214
|
Progress
|
|
203
215
|
};
|
|
204
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3V0aWwvcHJvZ3Jlc3MudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCAyMDIyLTIwMjQgTWF0dGVyLmpzIEF1dGhvcnNcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG4gKi9cblxuaW1wb3J0IGNvbG9ycyBmcm9tIFwiYW5zaS1jb2xvcnNcIjtcbmltcG9ydCB7IHN0ZGVyciwgc3Rkb3V0IH0gZnJvbSBcInByb2Nlc3NcIjtcbmltcG9ydCB7IFBhY2thZ2UgfSBmcm9tIFwiLi9wYWNrYWdlLmpzXCI7XG5cbmNvbnN0IENMRUFSID0gXCJcXHgxYltLXCI7XG5jb25zdCBTUElOTkVSID0gXCJcdTI1RDBcdTI1RDNcdTI1RDFcdTI1RDJcIjsgLy9cIlx1Mjg1Q1x1MjgxNFx1MjgyMlx1MjhBM1wiOyAvL1tcIlx1MjZBQlx1RkUwRVwiLCBcIlx1MjZBQVx1RkUwRVwiXTsgXCJcdTI4NDhcdTI4MTRcdTI4MjJcdTI4ODFcIjtcbmNvbnN0IFNQSU5ORVJfSU5URVJWQUwgPSAxMDA7XG5cbmZ1bmN0aW9uIHBhY2thZ2VJZGVudGl0eShwa2c6IFBhY2thZ2UpIHtcbiAgICBsZXQgaWRlbnRpdHkgPSBjb2xvcnMuYm9sZChwa2cuanNvbi5uYW1lKTtcbiAgICBpZiAocGtnLmpzb24udmVyc2lvbikge1xuICAgICAgICBpZGVudGl0eSA9IGAke2lkZW50aXR5fUAke3BrZy5qc29uLnZlcnNpb259YDtcbiAgICB9XG4gICAgcmV0dXJuIGlkZW50aXR5O1xufVxuXG4vKipcbiAqIEludGVyY2VwdCB3cml0ZXMgdG8gc3RkZXJyIGFuZCBzdGRvdXQgc28gd2UgY2FuIGVuc3VyZSBvdXIgdXBkYXRlcyBhcHBlYXIgb24gZGlmZmVyZW50IGxpbmVzIGZyb20gb3RoZXIgb3V0cHV0LlxuICovXG5jb25zdCB3cml0ZVN0YXR1cyA9ICgoKSA9PiB7XG4gICAgbGV0IGxhc3RTdGF0dXM6IHVuZGVmaW5lZCB8IHN0cmluZztcbiAgICBsZXQgbmVlZE5ld2xpbmUgPSBmYWxzZTtcblxuICAgIGZ1bmN0aW9uIGludGVyY2VwdChzdHJlYW06IE5vZGVKUy5Xcml0ZVN0cmVhbSkge1xuICAgICAgICBjb25zdCBhY3R1YWxXcml0ZSA9IHN0cmVhbS53cml0ZTtcbiAgICAgICAgc3RyZWFtLndyaXRlID0gKHBheWxvYWQ6IFVpbnQ4QXJyYXkgfCBzdHJpbmcsIC4uLnBhcmFtczogYW55W10pID0+IHtcbiAgICAgICAgICAgIGlmIChsYXN0U3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgYWN0dWFsV3JpdGUuY2FsbChzdHJlYW0sIFwiXFxuXCIpO1xuICAgICAgICAgICAgICAgIGxhc3RTdGF0dXMgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghcGF5bG9hZC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gUmVxdWlyZSBhIG5ld2xpbmUgZm9yIHN0YXR1cyB1cGRhdGVzIGFueSB0aW1lIHRoZSBjdXJzb3IgZG9lcyBub3QgZW5kIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBsaW5lXG4gICAgICAgICAgICBuZWVkTmV3bGluZSA9IHBheWxvYWRbcGF5bG9hZC5sZW5ndGggLSAxXSAhPT0gXCJcXG5cIiAmJiBwYXlsb2FkW3BheWxvYWQubGVuZ3RoIC0gMV0gIT09IFwiXFxyXCI7XG5cbiAgICAgICAgICAgIHJldHVybiBhY3R1YWxXcml0ZS5jYWxsKHN0cmVhbSwgcGF5bG9hZCwgLi4ucGFyYW1zKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBpbnRlcmNlcHQoc3Rkb3V0KTtcbiAgICBpbnRlcmNlcHQoc3RkZXJyKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiB3cml0ZVN0YXR1cyh0ZXh0OiBzdHJpbmcsIHdpbGxPdmVyd3JpdGUgPSBmYWxzZSkge1xuICAgICAgICBjb25zdCBjb2x1bW5zID0gcHJvY2Vzcy5zdGRvdXQuY29sdW1ucztcbiAgICAgICAgaWYgKHdpbGxPdmVyd3JpdGUgJiYgY29sdW1ucyAhPT0gdW5kZWZpbmVkICYmIHRleHQubGVuZ3RoID4gY29sdW1ucyAtIDIpIHtcbiAgICAgICAgICAgIHRleHQgPSBmaWx0ZXJBbnNpKHRleHQsIGNvbHVtbnMgLSAyKSArIFwiXHUyMDI2XCI7XG4gICAgICAgIH1cblxuICAgICAgICB0ZXh0ICs9IHdpbGxPdmVyd3JpdGUgPyBcIlxcclwiIDogXCJcXG5cIjtcbiAgICAgICAgaWYgKHRleHQgPT09IGxhc3RTdGF0dXMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChsYXN0U3RhdHVzKSB7XG4gICAgICAgICAgICBsYXN0U3RhdHVzID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgc3Rkb3V0LndyaXRlKENMRUFSKTtcbiAgICAgICAgfSBlbHNlIGlmIChuZWVkTmV3bGluZSAmJiAhdGV4dC5zdGFydHNXaXRoKFwiXFxuXCIpKSB7XG4gICAgICAgICAgICBzdGRvdXQud3JpdGUoXCJcXG5cIik7XG4gICAgICAgIH1cblxuICAgICAgICBzdGRvdXQud3JpdGUodGV4dCk7XG5cbiAgICAgICAgbGFzdFN0YXR1cyA9IHRleHQ7XG4gICAgfTtcbn0pKCk7XG5cbmV4cG9ydCBjbGFzcyBQcm9ncmVzcyB7XG4gICAgc3RhdHVzID0gUHJvZ3Jlc3MuU3RhdHVzLlN0YXJ0dXA7XG4gICAgI29uZ29pbmdUZXh0Pzogc3RyaW5nO1xuICAgICNzdGFydD86IG51bWJlcjtcbiAgICAjc3Bpbm5lciA9IFwiXHUyOUQ3XCI7XG4gICAgI3JlZnJlc2hJbnRlcnZhbD86IFJldHVyblR5cGU8dHlwZW9mIHNldEludGVydmFsPjtcbiAgICAjc3Bpbm5lclBvc2l0aW9uID0gMDtcbiAgICAjc3Bpbm5lcldpbmRvdz86IG51bWJlcjtcblxuICAgIGNvbnN0cnVjdG9yKCkge31cblxuICAgIGVtcGhhc2l6ZSh0ZXh0OiB1bmtub3duKSB7XG4gICAgICAgIHJldHVybiBjb2xvcnMuYm9sZChgJHt0ZXh0fWApO1xuICAgIH1cblxuICAgIGRlZW1waGFzaXplKHRleHQ6IHVua25vd24pIHtcbiAgICAgICAgcmV0dXJuIGNvbG9ycy5kaW0oYCR7dGV4dH1gKTtcbiAgICB9XG5cbiAgICBza2lwKHdoeTogc3RyaW5nLCBwa2c6IFBhY2thZ2UpIHtcbiAgICAgICAgc3Rkb3V0LndyaXRlKGNvbG9ycy5kaW0oYFNraXAgJHtwYWNrYWdlSWRlbnRpdHkocGtnKX06ICR7d2h5fVxcblxcbmApKTtcbiAgICB9XG5cbiAgICBzdGFydHVwKHdoYXQ6IHN0cmluZywgcGtnT3JPdmVyd3JpdGU/OiBQYWNrYWdlIHwgYm9vbGVhbikge1xuICAgICAgICBpZiAocHJvY2Vzcy5zdGRvdXQuaXNUVFkpIHtcbiAgICAgICAgICAgIHRoaXMuI3VwZGF0ZVNwaW5uZXIoKTtcbiAgICAgICAgICAgIHRoaXMuI3JlZnJlc2hJbnRlcnZhbCA9IHNldEludGVydmFsKHRoaXMucmVmcmVzaC5iaW5kKHRoaXMpLCBTUElOTkVSX0lOVEVSVkFMKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc3RhdHVzID0gUHJvZ3Jlc3MuU3RhdHVzLlN0YXJ0dXA7XG4gICAgICAgIGlmIChwa2dPck92ZXJ3cml0ZSA9PT0gdW5kZWZpbmVkIHx8IHR5cGVvZiBwa2dPck92ZXJ3cml0ZSA9PT0gXCJib29sZWFuXCIpIHtcbiAgICAgICAgICAgIHdyaXRlU3RhdHVzKHdoYXQsIHBrZ09yT3ZlcndyaXRlID8/IHRydWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgd3JpdGVTdGF0dXMoYCR7d2hhdH0gJHtwYWNrYWdlSWRlbnRpdHkocGtnT3JPdmVyd3JpdGUpfWApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlKHRleHQ6IHN0cmluZywgZXh0cmE/OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5zdGF0dXMgPSBQcm9ncmVzcy5TdGF0dXMuT25nb2luZztcbiAgICAgICAgbGV0IGR1cmF0aW9uO1xuICAgICAgICBpZiAodGhpcy4jc3RhcnQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy4jc3RhcnQgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgICAgICAgIGR1cmF0aW9uID0gXCJcIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGR1cmF0aW9uID0gdGhpcy4jZHVyYXRpb247XG4gICAgICAgIH1cbiAgICAgICAgZXh0cmEgPSBleHRyYSA9PT0gdW5kZWZpbmVkID8gXCJcIiA6IGAgJHtleHRyYX1gO1xuICAgICAgICB0aGlzLiNvbmdvaW5nVGV4dCA9IGAke3RleHR9ICR7ZHVyYXRpb259JHtleHRyYX1gO1xuICAgICAgICB0aGlzLiN3cml0ZU9uZ29pbmcoKTtcbiAgICB9XG5cbiAgICAjd3JpdGVPbmdvaW5nKCkge1xuICAgICAgICBpZiAoIXRoaXMuI29uZ29pbmdUZXh0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB3cml0ZVN0YXR1cyhgICAke2NvbG9ycy55ZWxsb3codGhpcy4jc3Bpbm5lcil9ICR7dGhpcy4jb25nb2luZ1RleHR9YCwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgc3VjY2Vzcyh0ZXh0OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5zdGF0dXMgPSBQcm9ncmVzcy5TdGF0dXMuU3VjY2VzcztcbiAgICAgICAgd3JpdGVTdGF0dXMoYCAgJHtjb2xvcnMuZ3JlZW4oXCJcdTI3MTNcIil9ICR7dGV4dH0gJHt0aGlzLiNkdXJhdGlvbn1gKTtcbiAgICAgICAgdGhpcy4jc3RhcnQgPSB0aGlzLiNvbmdvaW5nVGV4dCA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBmYWlsdXJlKHRleHQ6IHN0cmluZykge1xuICAgICAgICB0aGlzLnN0YXR1cyA9IFByb2dyZXNzLlN0YXR1cy5GYWlsdXJlO1xuICAgICAgICB3cml0ZVN0YXR1cyhgICAke2NvbG9ycy5yZWRCcmlnaHQoXCJcdTI3MTdcIil9ICR7dGV4dH0gJHt0aGlzLiNkdXJhdGlvbn1gKTtcbiAgICAgICAgdGhpcy4jc3RhcnQgPSB0aGlzLiNvbmdvaW5nVGV4dCA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBpbmZvKGxhYmVsOiBzdHJpbmcsIHZhbHVlPzogYW55KSB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgbGFiZWwgPSBgJHtjb2xvcnMuZGltKGxhYmVsKX0gJHt2YWx1ZX1gO1xuICAgICAgICB9XG4gICAgICAgIHdyaXRlU3RhdHVzKGAgICR7Y29sb3JzLmRpbShcIlx1MjAyM1wiKX0gJHtsYWJlbH1gKTtcbiAgICB9XG5cbiAgICB3YXJuKHRleHQ6IHN0cmluZykge1xuICAgICAgICBzdGRvdXQud3JpdGUoYCAgICAke2NvbG9ycy55ZWxsb3coXCJXYXJuaW5nOlwiKX0gJHt0ZXh0fVxcbmApO1xuICAgIH1cblxuICAgIHNodXRkb3duKCkge1xuICAgICAgICBpZiAodGhpcy4jcmVmcmVzaEludGVydmFsKSB7XG4gICAgICAgICAgICBjbGVhckludGVydmFsKHRoaXMuI3JlZnJlc2hJbnRlcnZhbCk7XG4gICAgICAgICAgICB0aGlzLiNyZWZyZXNoSW50ZXJ2YWwgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgd3JpdGVTdGF0dXMoXCJcIik7XG4gICAgfVxuXG4gICAgcmVmcmVzaCgpIHtcbiAgICAgICAgaWYgKHRoaXMuI3VwZGF0ZVNwaW5uZXIoKSkge1xuICAgICAgICAgICAgdGhpcy4jd3JpdGVPbmdvaW5nKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAjdXBkYXRlU3Bpbm5lcigpIHtcbiAgICAgICAgaWYgKCFzdGRvdXQuaXNUVFkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHdpbmRvdyA9IE1hdGguZmxvb3IobmV3IERhdGUoKS5nZXRUaW1lKCkgLyBTUElOTkVSX0lOVEVSVkFMKTtcbiAgICAgICAgaWYgKHRoaXMuI3NwaW5uZXJXaW5kb3cgPT09IHdpbmRvdykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuI3NwaW5uZXJXaW5kb3cgPSB3aW5kb3c7XG5cbiAgICAgICAgdGhpcy4jc3Bpbm5lclBvc2l0aW9uID0gKHRoaXMuI3NwaW5uZXJQb3NpdGlvbiArIDEpICUgU1BJTk5FUi5sZW5ndGg7XG4gICAgICAgIHRoaXMuI3NwaW5uZXIgPSBTUElOTkVSW3RoaXMuI3NwaW5uZXJQb3NpdGlvbl07XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgYXN5bmMgcnVuKHdoYXQ6IHN0cmluZywgZm46ICgpID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+KSB7XG4gICAgICAgIHRoaXMudXBkYXRlKHdoYXQpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgZm4oKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgdGhpcy5mYWlsdXJlKHdoYXQpO1xuICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN1Y2Nlc3Mod2hhdCk7XG4gICAgfVxuXG4gICAgZ2V0ICNkdXJhdGlvbigpIHtcbiAgICAgICAgbGV0IG1zID0gdGhpcy4jc3RhcnQgPyBuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIHRoaXMuI3N0YXJ0IDogMDtcbiAgICAgICAgaWYgKG1zIDwgMTAwMCkge1xuICAgICAgICAgICAgbXMgPSBNYXRoLnJvdW5kKG1zIC8gMTApIC8gMTAwO1xuICAgICAgICB9IGVsc2UgaWYgKG1zIDwgMTAwMDApIHtcbiAgICAgICAgICAgIG1zID0gTWF0aC5yb3VuZChtcyAvIDEwMCkgLyAxMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG1zID0gTWF0aC50cnVuYyhtcyAvIDEwMDApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb2xvcnMuZGltLnllbGxvdyhgKCR7bXN9cylgKTtcbiAgICB9XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgUHJvZ3Jlc3Mge1xuICAgIGV4cG9ydCBlbnVtIFN0YXR1cyB7XG4gICAgICAgIFN0YXJ0dXAgPSBcInN0YXJ0dXBcIixcbiAgICAgICAgT25nb2luZyA9IFwib25nb2luZ1wiLFxuICAgICAgICBTdWNjZXNzID0gXCJzdWNjZXNzXCIsXG4gICAgICAgIEZhaWx1cmUgPSBcImZhaWx1cmVcIixcbiAgICB9XG59XG5cbi8vIFNlZSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yNjIzODU1My9ob3ctY2FuLWktdHJ1bmNhdGUtYS1zdHJpbmctdG8tYS1tYXhpbXVtLWxlbmd0aC13aXRob3V0LWJyZWFraW5nLWFuc2ktZXNjYXBlLWNvZFxuLy8gVE9ETyAtIHRoaXMgZnVuY3Rpb24gZG9lc24ndCBzZWVtIGVudGlyZWx5IGNvcnJlY3QsIHN0aWxsIHNlZW1zIHRvIHRydW5jYXRlIHRvbyBtdWNoXG4vLyBDcm9wIHRoZSBsZW5ndGggb2YgbGluZXMsIEFOU0kgZXNjYXBlIGNvZGUgYXdhcmVcbi8vIEFsd2F5cyBvdXRwdXRzIGV2ZXJ5IGVzY2FwZSBjaGFyLCByZWdhcmRsZXNzIG9mIGxlbmd0aCAoc28gd2UgYWx3YXlzIGVuZCB1cCB3aXRoIGEgc2FuZSBzdGF0ZSlcbi8vIFZpc2libGUgY2hhcmFjdGVycyBhcmUgZmlsdGVyZWQgb3V0IG9uY2UgbGVuZ3RoIGlzIGV4Y2VlZGVkXG5mdW5jdGlvbiBmaWx0ZXJBbnNpKHN0cjogc3RyaW5nLCBsZW46IG51bWJlcikge1xuICAgIGlmICghbGVuIHx8IGxlbiA8IDEwKSByZXR1cm4gc3RyOyAvLyBwcm9iYWJseSBub3QgYSB2YWxpZCBjb25zb2xlIC0tIHNlbmQgYmFjayB0aGUgd2hvbGUgbGluZVxuICAgIGxldCBjb3VudCA9IDAsIC8vIG51bWJlciBvZiB2aXNpYmxlIGNoYXJzIG9uIGxpbmUgc28gZmFyXG4gICAgICAgIGVzYyA9IGZhbHNlLCAvLyBpbiBhbiBlc2NhcGUgc2VxdWVuY2VcbiAgICAgICAgbG9uZ2VzYyA9IGZhbHNlOyAvLyBpbiBhIG11bHRpLWNoYXJhY3RlciBlc2NhcGUgc2VxdWVuY2VcbiAgICBsZXQgb3V0cCA9IHRydWU7IC8vIHNob3VsZCBvdXRwdXQgdGhpcyBjaGFyYWN0ZXJcbiAgICByZXR1cm4gc3RyXG4gICAgICAgIC5zcGxpdChcIlwiKVxuICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uIChjKSB7XG4gICAgICAgICAgICAvLyBmaWx0ZXIgY2hhcmFjdGVycy4uLlxuICAgICAgICAgICAgaWYgKGVzYyAmJiAhbG9uZ2VzYyAmJiBjID09IFwiW1wiKSBsb25nZXNjID0gdHJ1ZTsgLy8gaGF2ZSBzZWVuIGFuIGVzY2FwZSwgbm93ICdbJywgc3RhcnQgbXVsdGktY2hhciBlc2NhcGVcbiAgICAgICAgICAgIGlmIChjID09IFwiXFx4MWJcIikgZXNjID0gdHJ1ZTsgLy8gc3RhcnQgb2YgZXNjYXBlIHNlcXVlbmNlXG5cbiAgICAgICAgICAgIG91dHAgPSBjb3VudCA8IGxlbiB8fCBlc2M7IC8vIGlmIGxlbmd0aCBleGNlZWRlZCwgZG9uJ3Qgb3V0cHV0IG5vbi1lc2NhcGUgY2hhcnNcbiAgICAgICAgICAgIGlmICghZXNjICYmICFsb25nZXNjKSBjb3VudCsrOyAvLyBpZiBub3QgaW4gZXNjYXBlLCBjb3VudCB2aXNpYmxlIGNoYXJcblxuICAgICAgICAgICAgaWYgKGVzYyAmJiAhbG9uZ2VzYyAmJiBjICE9IFwiXFx4MWJcIikgZXNjID0gZmFsc2U7IC8vIG91dCBvZiBzaW5nbGUgY2hhciBlc2NhcGVcbiAgICAgICAgICAgIGlmIChsb25nZXNjICYmIGMgIT0gXCJbXCIgJiYgYyA+PSBcIkBcIiAmJiBjIDw9IFwiflwiKSB7XG4gICAgICAgICAgICAgICAgZXNjID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgbG9uZ2VzYyA9IGZhbHNlO1xuICAgICAgICAgICAgfSAvLyBlbmQgb2YgbXVsdGktY2hhciBlc2NhcGVcblxuICAgICAgICAgICAgcmV0dXJuIG91dHA7IC8vIHJlc3VsdCBmb3IgZmlsdGVyXG4gICAgICAgIH0pXG4gICAgICAgIC5qb2luKFwiXCIpOyAvLyBnbHVlIGNoYXJzIGJhY2sgaW50byBzdHJpbmdcbn1cbiJdLAogICJtYXBwaW5ncyI6ICJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFNQSxPQUFPLFlBQVk7QUFDbkIsU0FBUyxRQUFRLGNBQWM7QUFHL0IsTUFBTSxRQUFRO0FBQ2QsTUFBTSxVQUFVO0FBQ2hCLE1BQU0sbUJBQW1CO0FBRXpCLFNBQVMsZ0JBQWdCLEtBQWM7QUFDbkMsTUFBSSxXQUFXLE9BQU8sS0FBSyxJQUFJLEtBQUssSUFBSTtBQUN4QyxNQUFJLElBQUksS0FBSyxTQUFTO0FBQ2xCLGVBQVcsR0FBRyxRQUFRLElBQUksSUFBSSxLQUFLLE9BQU87QUFBQSxFQUM5QztBQUNBLFNBQU87QUFDWDtBQUtBLE1BQU0sZUFBZSxNQUFNO0FBQ3ZCLE1BQUk7QUFDSixNQUFJLGNBQWM7QUFFbEIsV0FBUyxVQUFVLFFBQTRCO0FBQzNDLFVBQU0sY0FBYyxPQUFPO0FBQzNCLFdBQU8sUUFBUSxDQUFDLFlBQWlDLFdBQWtCO0FBQy9ELFVBQUksWUFBWTtBQUNaLG9CQUFZLEtBQUssUUFBUSxJQUFJO0FBQzdCLHFCQUFhO0FBQUEsTUFDakI7QUFFQSxVQUFJLENBQUMsUUFBUSxRQUFRO0FBQ2pCLGVBQU87QUFBQSxNQUNYO0FBR0Esb0JBQWMsUUFBUSxRQUFRLFNBQVMsQ0FBQyxNQUFNLFFBQVEsUUFBUSxRQUFRLFNBQVMsQ0FBQyxNQUFNO0FBRXRGLGFBQU8sWUFBWSxLQUFLLFFBQVEsU0FBUyxHQUFHLE1BQU07QUFBQSxJQUN0RDtBQUFBLEVBQ0o7QUFFQSxZQUFVLE1BQU07QUFDaEIsWUFBVSxNQUFNO0FBRWhCLFNBQU8sU0FBU0EsYUFBWSxNQUFjLGdCQUFnQixPQUFPO0FBQzdELFVBQU0sVUFBVSxRQUFRLE9BQU87QUFDL0IsUUFBSSxpQkFBaUIsWUFBWSxVQUFhLEtBQUssU0FBUyxVQUFVLEdBQUc7QUFDckUsYUFBTyxXQUFXLE1BQU0sVUFBVSxDQUFDLElBQUk7QUFBQSxJQUMzQztBQUVBLFlBQVEsZ0JBQWdCLE9BQU87QUFDL0IsUUFBSSxTQUFTLFlBQVk7QUFDckI7QUFBQSxJQUNKO0FBRUEsUUFBSSxZQUFZO0FBQ1osbUJBQWE7QUFDYixhQUFPLE1BQU0sS0FBSztBQUFBLElBQ3RCLFdBQVcsZUFBZSxDQUFDLEtBQUssV0FBVyxJQUFJLEdBQUc7QUFDOUMsYUFBTyxNQUFNLElBQUk7QUFBQSxJQUNyQjtBQUVBLFdBQU8sTUFBTSxJQUFJO0FBRWpCLGlCQUFhO0FBQUEsRUFDakI7QUFDSixHQUFHO0FBRUksTUFBTSxTQUFTO0FBQUEsRUFDbEIsU0FBUyxTQUFTLE9BQU87QUFBQSxFQUN6QjtBQUFBLEVBQ0E7QUFBQSxFQUNBLFdBQVc7QUFBQSxFQUNYO0FBQUEsRUFDQSxtQkFBbUI7QUFBQSxFQUNuQjtBQUFBLEVBRUEsY0FBYztBQUFBLEVBQUM7QUFBQSxFQUVmLFVBQVUsTUFBZTtBQUNyQixXQUFPLE9BQU8sS0FBSyxHQUFHLElBQUksRUFBRTtBQUFBLEVBQ2hDO0FBQUEsRUFFQSxZQUFZLE1BQWU7QUFDdkIsV0FBTyxPQUFPLElBQUksR0FBRyxJQUFJLEVBQUU7QUFBQSxFQUMvQjtBQUFBLEVBRUEsS0FBSyxLQUFhLEtBQWM7QUFDNUIsV0FBTyxNQUFNLE9BQU8sSUFBSSxRQUFRLGdCQUFnQixHQUFHLENBQUMsS0FBSyxHQUFHO0FBQUE7QUFBQSxDQUFNLENBQUM7QUFBQSxFQUN2RTtBQUFBLEVBRUEsUUFBUSxNQUFjLGdCQUFvQztBQUN0RCxRQUFJLFFBQVEsT0FBTyxPQUFPO0FBQ3RCLFdBQUssZUFBZTtBQUNwQixXQUFLLG1CQUFtQixZQUFZLEtBQUssUUFBUSxLQUFLLElBQUksR0FBRyxnQkFBZ0I7QUFBQSxJQUNqRjtBQUVBLFNBQUssU0FBUyxTQUFTLE9BQU87QUFDOUIsUUFBSSxtQkFBbUIsVUFBYSxPQUFPLG1CQUFtQixXQUFXO0FBQ3JFLGtCQUFZLE1BQU0sa0JBQWtCLElBQUk7QUFBQSxJQUM1QyxPQUFPO0FBQ0gsa0JBQVksR0FBRyxJQUFJLElBQUksZ0JBQWdCLGNBQWMsQ0FBQyxFQUFFO0FBQUEsSUFDNUQ7QUFBQSxFQUNKO0FBQUEsRUFFQSxPQUFPLE1BQWMsT0FBZ0I7QUFDakMsU0FBSyxTQUFTLFNBQVMsT0FBTztBQUM5QixRQUFJO0FBQ0osUUFBSSxLQUFLLFdBQVcsUUFBVztBQUMzQixXQUFLLFVBQVMsb0JBQUksS0FBSyxHQUFFLFFBQVE7QUFDakMsaUJBQVc7QUFBQSxJQUNmLE9BQU87QUFDSCxpQkFBVyxLQUFLO0FBQUEsSUFDcEI7QUFDQSxZQUFRLFVBQVUsU0FBWSxLQUFLLElBQUksS0FBSztBQUM1QyxTQUFLLGVBQWUsR0FBRyxJQUFJLElBQUksUUFBUSxHQUFHLEtBQUs7QUFDL0MsU0FBSyxjQUFjO0FBQUEsRUFDdkI7QUFBQSxFQUVBLGdCQUFnQjtBQUNaLFFBQUksQ0FBQyxLQUFLLGNBQWM7QUFDcEI7QUFBQSxJQUNKO0FBRUEsZ0JBQVksS0FBSyxPQUFPLE9BQU8sS0FBSyxRQUFRLENBQUMsSUFBSSxLQUFLLFlBQVksSUFBSSxJQUFJO0FBQUEsRUFDOUU7QUFBQSxFQUVBLFFBQVEsTUFBYztBQUNsQixTQUFLLFNBQVMsU0FBUyxPQUFPO0FBQzlCLGdCQUFZLEtBQUssT0FBTyxNQUFNLFFBQUcsQ0FBQyxJQUFJLElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRTtBQUM5RCxTQUFLLFNBQVMsS0FBSyxlQUFlO0FBQUEsRUFDdEM7QUFBQSxFQUVBLFFBQVEsTUFBYztBQUNsQixTQUFLLFNBQVMsU0FBUyxPQUFPO0FBQzlCLGdCQUFZLEtBQUssT0FBTyxVQUFVLFFBQUcsQ0FBQyxJQUFJLElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRTtBQUNsRSxTQUFLLFNBQVMsS0FBSyxlQUFlO0FBQUEsRUFDdEM7QUFBQSxFQUVBLEtBQUssT0FBZSxPQUFhO0FBQzdCLFFBQUksT0FBTztBQUNQLGNBQVEsR0FBRyxPQUFPLElBQUksS0FBSyxDQUFDLElBQUksS0FBSztBQUFBLElBQ3pDO0FBQ0EsZ0JBQVksS0FBSyxPQUFPLElBQUksUUFBRyxDQUFDLElBQUksS0FBSyxFQUFFO0FBQUEsRUFDL0M7QUFBQSxFQUVBLEtBQUssTUFBYztBQUNmLFdBQU8sTUFBTSxPQUFPLE9BQU8sT0FBTyxVQUFVLENBQUMsSUFBSSxJQUFJO0FBQUEsQ0FBSTtBQUFBLEVBQzdEO0FBQUEsRUFFQSxXQUFXO0FBQ1AsUUFBSSxLQUFLLGtCQUFrQjtBQUN2QixvQkFBYyxLQUFLLGdCQUFnQjtBQUNuQyxXQUFLLG1CQUFtQjtBQUFBLElBQzVCO0FBQ0EsZ0JBQVksRUFBRTtBQUFBLEVBQ2xCO0FBQUEsRUFFQSxVQUFVO0FBQ04sUUFBSSxLQUFLLGVBQWUsR0FBRztBQUN2QixXQUFLLGNBQWM7QUFBQSxJQUN2QjtBQUFBLEVBQ0o7QUFBQSxFQUVBLGlCQUFpQjtBQUNiLFFBQUksQ0FBQyxPQUFPLE9BQU87QUFDZixhQUFPO0FBQUEsSUFDWDtBQUVBLFVBQU0sU0FBUyxLQUFLLE9BQU0sb0JBQUksS0FBSyxHQUFFLFFBQVEsSUFBSSxnQkFBZ0I7QUFDakUsUUFBSSxLQUFLLG1CQUFtQixRQUFRO0FBQ2hDLGFBQU87QUFBQSxJQUNYO0FBQ0EsU0FBSyxpQkFBaUI7QUFFdEIsU0FBSyxvQkFBb0IsS0FBSyxtQkFBbUIsS0FBSyxRQUFRO0FBQzlELFNBQUssV0FBVyxRQUFRLEtBQUssZ0JBQWdCO0FBRTdDLFdBQU87QUFBQSxFQUNYO0FBQUEsRUFFQSxNQUFNLElBQUksTUFBYyxJQUFnQztBQUNwRCxTQUFLLE9BQU8sSUFBSTtBQUNoQixRQUFJO0FBQ0EsWUFBTSxHQUFHO0FBQUEsSUFDYixTQUFTLEdBQUc7QUFDUixXQUFLLFFBQVEsSUFBSTtBQUNqQixZQUFNO0FBQUEsSUFDVjtBQUNBLFNBQUssUUFBUSxJQUFJO0FBQUEsRUFDckI7QUFBQSxFQUVBLElBQUksWUFBWTtBQUNaLFFBQUksS0FBSyxLQUFLLFVBQVMsb0JBQUksS0FBSyxHQUFFLFFBQVEsSUFBSSxLQUFLLFNBQVM7QUFDNUQsUUFBSSxLQUFLLEtBQU07QUFDWCxXQUFLLEtBQUssTUFBTSxLQUFLLEVBQUUsSUFBSTtBQUFBLElBQy9CLFdBQVcsS0FBSyxLQUFPO0FBQ25CLFdBQUssS0FBSyxNQUFNLEtBQUssR0FBRyxJQUFJO0FBQUEsSUFDaEMsT0FBTztBQUNILFdBQUssS0FBSyxNQUFNLEtBQUssR0FBSTtBQUFBLElBQzdCO0FBQ0EsV0FBTyxPQUFPLElBQUksT0FBTyxJQUFJLEVBQUUsSUFBSTtBQUFBLEVBQ3ZDO0FBQ0o7QUFBQSxDQUVPLENBQVVDLGNBQVY7QUFDSSxNQUFLO0FBQUwsSUFBS0MsWUFBTDtBQUNILElBQUFBLFFBQUEsYUFBVTtBQUNWLElBQUFBLFFBQUEsYUFBVTtBQUNWLElBQUFBLFFBQUEsYUFBVTtBQUNWLElBQUFBLFFBQUEsYUFBVTtBQUFBLEtBSkYsU0FBQUQsVUFBQSxXQUFBQSxVQUFBO0FBQUEsR0FEQztBQWNqQixTQUFTLFdBQVcsS0FBYSxLQUFhO0FBQzFDLE1BQUksQ0FBQyxPQUFPLE1BQU0sR0FBSSxRQUFPO0FBQzdCLE1BQUksUUFBUSxHQUNSLE1BQU0sT0FDTixVQUFVO0FBQ2QsTUFBSSxPQUFPO0FBQ1gsU0FBTyxJQUNGLE1BQU0sRUFBRSxFQUNSLE9BQU8sU0FBVSxHQUFHO0FBRWpCLFFBQUksT0FBTyxDQUFDLFdBQVcsS0FBSyxJQUFLLFdBQVU7QUFDM0MsUUFBSSxLQUFLLE9BQVEsT0FBTTtBQUV2QixXQUFPLFFBQVEsT0FBTztBQUN0QixRQUFJLENBQUMsT0FBTyxDQUFDLFFBQVM7QUFFdEIsUUFBSSxPQUFPLENBQUMsV0FBVyxLQUFLLE9BQVEsT0FBTTtBQUMxQyxRQUFJLFdBQVcsS0FBSyxPQUFPLEtBQUssT0FBTyxLQUFLLEtBQUs7QUFDN0MsWUFBTTtBQUNOLGdCQUFVO0FBQUEsSUFDZDtBQUVBLFdBQU87QUFBQSxFQUNYLENBQUMsRUFDQSxLQUFLLEVBQUU7QUFDaEI7IiwKICAibmFtZXMiOiBbIndyaXRlU3RhdHVzIiwgIlByb2dyZXNzIiwgIlN0YXR1cyJdCn0K
|
|
216
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3V0aWwvcHJvZ3Jlc3MudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCAyMDIyLTIwMjQgTWF0dGVyLmpzIEF1dGhvcnNcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG4gKi9cblxuaW1wb3J0IGNvbG9ycyBmcm9tIFwiYW5zaS1jb2xvcnNcIjtcbmltcG9ydCB7IHN0ZGVyciwgc3Rkb3V0IH0gZnJvbSBcInByb2Nlc3NcIjtcbmltcG9ydCB7IFBhY2thZ2UgfSBmcm9tIFwiLi9wYWNrYWdlLmpzXCI7XG5cbmNvbnN0IENMRUFSID0gXCJcXHgxYltLXCI7XG5jb25zdCBTUElOTkVSID0gXCJcdTI1RDBcdTI1RDNcdTI1RDFcdTI1RDJcIjsgLy9cIlx1Mjg1Q1x1MjgxNFx1MjgyMlx1MjhBM1wiOyAvL1tcIlx1MjZBQlx1RkUwRVwiLCBcIlx1MjZBQVx1RkUwRVwiXTsgXCJcdTI4NDhcdTI4MTRcdTI4MjJcdTI4ODFcIjtcbmNvbnN0IFNQSU5ORVJfSU5URVJWQUwgPSAxMDA7XG5cbmZ1bmN0aW9uIHBhY2thZ2VJZGVudGl0eShwa2c6IFBhY2thZ2UpIHtcbiAgICBsZXQgaWRlbnRpdHkgPSBjb2xvcnMuYm9sZChwa2cuanNvbi5uYW1lKTtcbiAgICBpZiAocGtnLmpzb24udmVyc2lvbikge1xuICAgICAgICBpZGVudGl0eSA9IGAke2lkZW50aXR5fUAke3BrZy5qc29uLnZlcnNpb259YDtcbiAgICB9XG4gICAgcmV0dXJuIGlkZW50aXR5O1xufVxuXG4vKipcbiAqIEludGVyY2VwdCB3cml0ZXMgdG8gc3RkZXJyIGFuZCBzdGRvdXQgc28gd2UgY2FuIGVuc3VyZSBvdXIgdXBkYXRlcyBhcHBlYXIgb24gZGlmZmVyZW50IGxpbmVzIGZyb20gb3RoZXIgb3V0cHV0LlxuICovXG5jb25zdCB3cml0ZVN0YXR1cyA9ICgoKSA9PiB7XG4gICAgbGV0IGxhc3RTdGF0dXM6IHVuZGVmaW5lZCB8IHN0cmluZztcbiAgICBsZXQgbmVlZE5ld2xpbmUgPSBmYWxzZTtcblxuICAgIGZ1bmN0aW9uIGludGVyY2VwdChzdHJlYW06IE5vZGVKUy5Xcml0ZVN0cmVhbSkge1xuICAgICAgICBjb25zdCBhY3R1YWxXcml0ZSA9IHN0cmVhbS53cml0ZTtcbiAgICAgICAgc3RyZWFtLndyaXRlID0gKHBheWxvYWQ6IFVpbnQ4QXJyYXkgfCBzdHJpbmcsIC4uLnBhcmFtczogYW55W10pID0+IHtcbiAgICAgICAgICAgIGlmIChsYXN0U3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgYWN0dWFsV3JpdGUuY2FsbChzdHJlYW0sIFwiXFxuXCIpO1xuICAgICAgICAgICAgICAgIGxhc3RTdGF0dXMgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghcGF5bG9hZC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gUmVxdWlyZSBhIG5ld2xpbmUgZm9yIHN0YXR1cyB1cGRhdGVzIGFueSB0aW1lIHRoZSBjdXJzb3IgZG9lcyBub3QgZW5kIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBsaW5lXG4gICAgICAgICAgICBuZWVkTmV3bGluZSA9IHBheWxvYWRbcGF5bG9hZC5sZW5ndGggLSAxXSAhPT0gXCJcXG5cIiAmJiBwYXlsb2FkW3BheWxvYWQubGVuZ3RoIC0gMV0gIT09IFwiXFxyXCI7XG5cbiAgICAgICAgICAgIHJldHVybiBhY3R1YWxXcml0ZS5jYWxsKHN0cmVhbSwgcGF5bG9hZCwgLi4ucGFyYW1zKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBpbnRlcmNlcHQoc3Rkb3V0KTtcbiAgICBpbnRlcmNlcHQoc3RkZXJyKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiB3cml0ZVN0YXR1cyh0ZXh0OiBzdHJpbmcsIHdpbGxPdmVyd3JpdGUgPSBmYWxzZSkge1xuICAgICAgICBjb25zdCBjb2x1bW5zID0gcHJvY2Vzcy5zdGRvdXQuY29sdW1ucztcbiAgICAgICAgaWYgKHdpbGxPdmVyd3JpdGUgJiYgY29sdW1ucyAhPT0gdW5kZWZpbmVkICYmIHRleHQubGVuZ3RoID4gY29sdW1ucyAtIDIpIHtcbiAgICAgICAgICAgIHRleHQgPSBmaWx0ZXJBbnNpKHRleHQsIGNvbHVtbnMgLSAyKSArIFwiXHUyMDI2XCI7XG4gICAgICAgIH1cblxuICAgICAgICB0ZXh0ICs9IHdpbGxPdmVyd3JpdGUgPyBcIlxcclwiIDogXCJcXG5cIjtcbiAgICAgICAgaWYgKHRleHQgPT09IGxhc3RTdGF0dXMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChsYXN0U3RhdHVzKSB7XG4gICAgICAgICAgICBsYXN0U3RhdHVzID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgc3Rkb3V0LndyaXRlKENMRUFSKTtcbiAgICAgICAgfSBlbHNlIGlmIChuZWVkTmV3bGluZSAmJiAhdGV4dC5zdGFydHNXaXRoKFwiXFxuXCIpKSB7XG4gICAgICAgICAgICBzdGRvdXQud3JpdGUoXCJcXG5cIik7XG4gICAgICAgIH1cblxuICAgICAgICBzdGRvdXQud3JpdGUodGV4dCk7XG5cbiAgICAgICAgbGFzdFN0YXR1cyA9IHRleHQ7XG4gICAgfTtcbn0pKCk7XG5cbmV4cG9ydCBjbGFzcyBQcm9ncmVzcyB7XG4gICAgc3RhdHVzID0gUHJvZ3Jlc3MuU3RhdHVzLlN0YXJ0dXA7XG4gICAgI29uZ29pbmdUZXh0Pzogc3RyaW5nO1xuICAgICNzdGFydD86IG51bWJlcjtcbiAgICAjc3Bpbm5lciA9IFwiXHUyOUQ3XCI7XG4gICAgI3JlZnJlc2hJbnRlcnZhbD86IFJldHVyblR5cGU8dHlwZW9mIHNldEludGVydmFsPjtcbiAgICAjc3Bpbm5lclBvc2l0aW9uID0gMDtcbiAgICAjc3Bpbm5lcldpbmRvdz86IG51bWJlcjtcbiAgICAjc3VidGFza3MgPSBBcnJheTxzdHJpbmc+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgICBlbXBoYXNpemUodGV4dDogdW5rbm93bikge1xuICAgICAgICByZXR1cm4gY29sb3JzLmJvbGQoYCR7dGV4dH1gKTtcbiAgICB9XG5cbiAgICBkZWVtcGhhc2l6ZSh0ZXh0OiB1bmtub3duKSB7XG4gICAgICAgIHJldHVybiBjb2xvcnMuZGltKGAke3RleHR9YCk7XG4gICAgfVxuXG4gICAgc2tpcCh3aHk6IHN0cmluZywgcGtnOiBQYWNrYWdlKSB7XG4gICAgICAgIHN0ZG91dC53cml0ZShjb2xvcnMuZGltKGBTa2lwICR7cGFja2FnZUlkZW50aXR5KHBrZyl9OiAke3doeX1cXG5cXG5gKSk7XG4gICAgfVxuXG4gICAgc3RhcnR1cCh3aGF0OiBzdHJpbmcsIHBrZ09yT3ZlcndyaXRlPzogUGFja2FnZSB8IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKHByb2Nlc3Muc3Rkb3V0LmlzVFRZKSB7XG4gICAgICAgICAgICB0aGlzLiN1cGRhdGVTcGlubmVyKCk7XG4gICAgICAgICAgICB0aGlzLiNyZWZyZXNoSW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCh0aGlzLnJlZnJlc2guYmluZCh0aGlzKSwgU1BJTk5FUl9JTlRFUlZBTCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnN0YXR1cyA9IFByb2dyZXNzLlN0YXR1cy5TdGFydHVwO1xuICAgICAgICBpZiAocGtnT3JPdmVyd3JpdGUgPT09IHVuZGVmaW5lZCB8fCB0eXBlb2YgcGtnT3JPdmVyd3JpdGUgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgICAgICAgICB3cml0ZVN0YXR1cyh3aGF0LCBwa2dPck92ZXJ3cml0ZSA/PyB0cnVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHdyaXRlU3RhdHVzKGAke3doYXR9ICR7cGFja2FnZUlkZW50aXR5KHBrZ09yT3ZlcndyaXRlKX1gKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVwZGF0ZSh0ZXh0OiBzdHJpbmcsIGV4dHJhPzogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuc3RhdHVzID0gUHJvZ3Jlc3MuU3RhdHVzLk9uZ29pbmc7XG4gICAgICAgIGxldCBkdXJhdGlvbjtcbiAgICAgICAgaWYgKHRoaXMuI3N0YXJ0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMuI3N0YXJ0ID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgICAgICAgICBkdXJhdGlvbiA9IFwiXCI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkdXJhdGlvbiA9IHRoaXMuI2R1cmF0aW9uO1xuICAgICAgICB9XG4gICAgICAgIGV4dHJhID0gZXh0cmEgPT09IHVuZGVmaW5lZCA/IFwiXCIgOiBgICR7ZXh0cmF9YDtcbiAgICAgICAgdGhpcy4jb25nb2luZ1RleHQgPSBgJHt0ZXh0fSAke2R1cmF0aW9ufSR7ZXh0cmF9YDtcbiAgICAgICAgdGhpcy4jd3JpdGVPbmdvaW5nKCk7XG4gICAgfVxuXG4gICAgI3dyaXRlT25nb2luZygpIHtcbiAgICAgICAgaWYgKCF0aGlzLiNvbmdvaW5nVGV4dCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc3VidGFzayA9IHRoaXMuI3N1YnRhc2tzLmxlbmd0aFxuICAgICAgICAgICAgPyBjb2xvcnMuZGltKGAgKCR7Y29sb3JzLmRpbSh0aGlzLiNzdWJ0YXNrc1t0aGlzLiNzdWJ0YXNrcy5sZW5ndGggLSAxXSl9KWApXG4gICAgICAgICAgICA6IFwiXCI7XG5cbiAgICAgICAgd3JpdGVTdGF0dXMoYCAgJHtjb2xvcnMueWVsbG93KHRoaXMuI3NwaW5uZXIpfSAke3RoaXMuI29uZ29pbmdUZXh0fSR7c3VidGFza31gLCB0cnVlKTtcbiAgICB9XG5cbiAgICBzdWNjZXNzKHRleHQ6IHN0cmluZykge1xuICAgICAgICB0aGlzLnN0YXR1cyA9IFByb2dyZXNzLlN0YXR1cy5TdWNjZXNzO1xuICAgICAgICB3cml0ZVN0YXR1cyhgICAke2NvbG9ycy5ncmVlbihcIlx1MjcxM1wiKX0gJHt0ZXh0fSAke3RoaXMuI2R1cmF0aW9ufWApO1xuICAgICAgICB0aGlzLiNzdGFydCA9IHRoaXMuI29uZ29pbmdUZXh0ID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGZhaWx1cmUodGV4dDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuc3RhdHVzID0gUHJvZ3Jlc3MuU3RhdHVzLkZhaWx1cmU7XG4gICAgICAgIHdyaXRlU3RhdHVzKGAgICR7Y29sb3JzLnJlZEJyaWdodChcIlx1MjcxN1wiKX0gJHt0ZXh0fSAke3RoaXMuI2R1cmF0aW9ufWApO1xuICAgICAgICB0aGlzLiNzdGFydCA9IHRoaXMuI29uZ29pbmdUZXh0ID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGluZm8obGFiZWw6IHN0cmluZywgdmFsdWU/OiBhbnkpIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICBsYWJlbCA9IGAke2NvbG9ycy5kaW0obGFiZWwpfSAke3ZhbHVlfWA7XG4gICAgICAgIH1cbiAgICAgICAgd3JpdGVTdGF0dXMoYCAgJHtjb2xvcnMuZGltKFwiXHUyMDIzXCIpfSAke2xhYmVsfWApO1xuICAgIH1cblxuICAgIHdhcm4odGV4dDogc3RyaW5nKSB7XG4gICAgICAgIHN0ZG91dC53cml0ZShgICAgICR7Y29sb3JzLnllbGxvdyhcIldhcm5pbmc6XCIpfSAke3RleHR9XFxuYCk7XG4gICAgfVxuXG4gICAgc2h1dGRvd24oKSB7XG4gICAgICAgIGlmICh0aGlzLiNyZWZyZXNoSW50ZXJ2YWwpIHtcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy4jcmVmcmVzaEludGVydmFsKTtcbiAgICAgICAgICAgIHRoaXMuI3JlZnJlc2hJbnRlcnZhbCA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICB3cml0ZVN0YXR1cyhcIlwiKTtcbiAgICB9XG5cbiAgICByZWZyZXNoKCkge1xuICAgICAgICBpZiAodGhpcy4jdXBkYXRlU3Bpbm5lcigpKSB7XG4gICAgICAgICAgICB0aGlzLiN3cml0ZU9uZ29pbmcoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIHN1YnRhc2sodGV4dDogc3RyaW5nLCBmbjogKCkgPT4gUHJvbWlzZTx2b2lkPikge1xuICAgICAgICB0aGlzLiNzdWJ0YXNrcy5wdXNoKHRleHQpO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCBmbigpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgdGhpcy4jc3VidGFza3MucG9wKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAjdXBkYXRlU3Bpbm5lcigpIHtcbiAgICAgICAgaWYgKCFzdGRvdXQuaXNUVFkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHdpbmRvdyA9IE1hdGguZmxvb3IobmV3IERhdGUoKS5nZXRUaW1lKCkgLyBTUElOTkVSX0lOVEVSVkFMKTtcbiAgICAgICAgaWYgKHRoaXMuI3NwaW5uZXJXaW5kb3cgPT09IHdpbmRvdykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuI3NwaW5uZXJXaW5kb3cgPSB3aW5kb3c7XG5cbiAgICAgICAgdGhpcy4jc3Bpbm5lclBvc2l0aW9uID0gKHRoaXMuI3NwaW5uZXJQb3NpdGlvbiArIDEpICUgU1BJTk5FUi5sZW5ndGg7XG4gICAgICAgIHRoaXMuI3NwaW5uZXIgPSBTUElOTkVSW3RoaXMuI3NwaW5uZXJQb3NpdGlvbl07XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgYXN5bmMgcnVuPFQ+KHdoYXQ6IHN0cmluZywgZm46ICgpID0+IFQgfCBQcm9taXNlPFQ+KSB7XG4gICAgICAgIHRoaXMudXBkYXRlKHdoYXQpO1xuICAgICAgICBsZXQgcmVzdWx0OiBUO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmVzdWx0ID0gYXdhaXQgZm4oKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgdGhpcy5mYWlsdXJlKHdoYXQpO1xuICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN1Y2Nlc3Mod2hhdCk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgZ2V0ICNkdXJhdGlvbigpIHtcbiAgICAgICAgbGV0IG1zID0gdGhpcy4jc3RhcnQgPyBuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIHRoaXMuI3N0YXJ0IDogMDtcbiAgICAgICAgaWYgKG1zIDwgMTAwMCkge1xuICAgICAgICAgICAgbXMgPSBNYXRoLnJvdW5kKG1zIC8gMTApIC8gMTAwO1xuICAgICAgICB9IGVsc2UgaWYgKG1zIDwgMTAwMDApIHtcbiAgICAgICAgICAgIG1zID0gTWF0aC5yb3VuZChtcyAvIDEwMCkgLyAxMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG1zID0gTWF0aC50cnVuYyhtcyAvIDEwMDApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb2xvcnMuZGltLnllbGxvdyhgKCR7bXN9cylgKTtcbiAgICB9XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgUHJvZ3Jlc3Mge1xuICAgIGV4cG9ydCBlbnVtIFN0YXR1cyB7XG4gICAgICAgIFN0YXJ0dXAgPSBcInN0YXJ0dXBcIixcbiAgICAgICAgT25nb2luZyA9IFwib25nb2luZ1wiLFxuICAgICAgICBTdWNjZXNzID0gXCJzdWNjZXNzXCIsXG4gICAgICAgIEZhaWx1cmUgPSBcImZhaWx1cmVcIixcbiAgICB9XG59XG5cbi8vIFNlZSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yNjIzODU1My9ob3ctY2FuLWktdHJ1bmNhdGUtYS1zdHJpbmctdG8tYS1tYXhpbXVtLWxlbmd0aC13aXRob3V0LWJyZWFraW5nLWFuc2ktZXNjYXBlLWNvZFxuLy8gVE9ETyAtIHRoaXMgZnVuY3Rpb24gZG9lc24ndCBzZWVtIGVudGlyZWx5IGNvcnJlY3QsIHN0aWxsIHNlZW1zIHRvIHRydW5jYXRlIHRvbyBtdWNoXG4vLyBDcm9wIHRoZSBsZW5ndGggb2YgbGluZXMsIEFOU0kgZXNjYXBlIGNvZGUgYXdhcmVcbi8vIEFsd2F5cyBvdXRwdXRzIGV2ZXJ5IGVzY2FwZSBjaGFyLCByZWdhcmRsZXNzIG9mIGxlbmd0aCAoc28gd2UgYWx3YXlzIGVuZCB1cCB3aXRoIGEgc2FuZSBzdGF0ZSlcbi8vIFZpc2libGUgY2hhcmFjdGVycyBhcmUgZmlsdGVyZWQgb3V0IG9uY2UgbGVuZ3RoIGlzIGV4Y2VlZGVkXG5mdW5jdGlvbiBmaWx0ZXJBbnNpKHN0cjogc3RyaW5nLCBsZW46IG51bWJlcikge1xuICAgIGlmICghbGVuIHx8IGxlbiA8IDEwKSByZXR1cm4gc3RyOyAvLyBwcm9iYWJseSBub3QgYSB2YWxpZCBjb25zb2xlIC0tIHNlbmQgYmFjayB0aGUgd2hvbGUgbGluZVxuICAgIGxldCBjb3VudCA9IDAsIC8vIG51bWJlciBvZiB2aXNpYmxlIGNoYXJzIG9uIGxpbmUgc28gZmFyXG4gICAgICAgIGVzYyA9IGZhbHNlLCAvLyBpbiBhbiBlc2NhcGUgc2VxdWVuY2VcbiAgICAgICAgbG9uZ2VzYyA9IGZhbHNlOyAvLyBpbiBhIG11bHRpLWNoYXJhY3RlciBlc2NhcGUgc2VxdWVuY2VcbiAgICBsZXQgb3V0cCA9IHRydWU7IC8vIHNob3VsZCBvdXRwdXQgdGhpcyBjaGFyYWN0ZXJcbiAgICByZXR1cm4gc3RyXG4gICAgICAgIC5zcGxpdChcIlwiKVxuICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uIChjKSB7XG4gICAgICAgICAgICAvLyBmaWx0ZXIgY2hhcmFjdGVycy4uLlxuICAgICAgICAgICAgaWYgKGVzYyAmJiAhbG9uZ2VzYyAmJiBjID09IFwiW1wiKSBsb25nZXNjID0gdHJ1ZTsgLy8gaGF2ZSBzZWVuIGFuIGVzY2FwZSwgbm93ICdbJywgc3RhcnQgbXVsdGktY2hhciBlc2NhcGVcbiAgICAgICAgICAgIGlmIChjID09IFwiXFx4MWJcIikgZXNjID0gdHJ1ZTsgLy8gc3RhcnQgb2YgZXNjYXBlIHNlcXVlbmNlXG5cbiAgICAgICAgICAgIG91dHAgPSBjb3VudCA8IGxlbiB8fCBlc2M7IC8vIGlmIGxlbmd0aCBleGNlZWRlZCwgZG9uJ3Qgb3V0cHV0IG5vbi1lc2NhcGUgY2hhcnNcbiAgICAgICAgICAgIGlmICghZXNjICYmICFsb25nZXNjKSBjb3VudCsrOyAvLyBpZiBub3QgaW4gZXNjYXBlLCBjb3VudCB2aXNpYmxlIGNoYXJcblxuICAgICAgICAgICAgaWYgKGVzYyAmJiAhbG9uZ2VzYyAmJiBjICE9IFwiXFx4MWJcIikgZXNjID0gZmFsc2U7IC8vIG91dCBvZiBzaW5nbGUgY2hhciBlc2NhcGVcbiAgICAgICAgICAgIGlmIChsb25nZXNjICYmIGMgIT0gXCJbXCIgJiYgYyA+PSBcIkBcIiAmJiBjIDw9IFwiflwiKSB7XG4gICAgICAgICAgICAgICAgZXNjID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgbG9uZ2VzYyA9IGZhbHNlO1xuICAgICAgICAgICAgfSAvLyBlbmQgb2YgbXVsdGktY2hhciBlc2NhcGVcblxuICAgICAgICAgICAgcmV0dXJuIG91dHA7IC8vIHJlc3VsdCBmb3IgZmlsdGVyXG4gICAgICAgIH0pXG4gICAgICAgIC5qb2luKFwiXCIpOyAvLyBnbHVlIGNoYXJzIGJhY2sgaW50byBzdHJpbmdcbn1cbiJdLAogICJtYXBwaW5ncyI6ICJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFNQSxPQUFPLFlBQVk7QUFDbkIsU0FBUyxRQUFRLGNBQWM7QUFHL0IsTUFBTSxRQUFRO0FBQ2QsTUFBTSxVQUFVO0FBQ2hCLE1BQU0sbUJBQW1CO0FBRXpCLFNBQVMsZ0JBQWdCLEtBQWM7QUFDbkMsTUFBSSxXQUFXLE9BQU8sS0FBSyxJQUFJLEtBQUssSUFBSTtBQUN4QyxNQUFJLElBQUksS0FBSyxTQUFTO0FBQ2xCLGVBQVcsR0FBRyxRQUFRLElBQUksSUFBSSxLQUFLLE9BQU87QUFBQSxFQUM5QztBQUNBLFNBQU87QUFDWDtBQUtBLE1BQU0s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
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/util/progress.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,OAAO,YAAY;AACnB,SAAS,QAAQ,cAAc;AAG/B,MAAM,QAAQ;AACd,MAAM,UAAU;AAChB,MAAM,mBAAmB;AAEzB,SAAS,gBAAgB,KAAc;AACnC,MAAI,WAAW,OAAO,KAAK,IAAI,KAAK,IAAI;AACxC,MAAI,IAAI,KAAK,SAAS;AAClB,eAAW,GAAG,QAAQ,IAAI,IAAI,KAAK,OAAO;AAAA,EAC9C;AACA,SAAO;AACX;AAKA,MAAM,eAAe,MAAM;AACvB,MAAI;AACJ,MAAI,cAAc;AAElB,WAAS,UAAU,QAA4B;AAC3C,UAAM,cAAc,OAAO;AAC3B,WAAO,QAAQ,CAAC,YAAiC,WAAkB;AAC/D,UAAI,YAAY;AACZ,oBAAY,KAAK,QAAQ,IAAI;AAC7B,qBAAa;AAAA,MACjB;AAEA,UAAI,CAAC,QAAQ,QAAQ;AACjB,eAAO;AAAA,MACX;AAGA,oBAAc,QAAQ,QAAQ,SAAS,CAAC,MAAM,QAAQ,QAAQ,QAAQ,SAAS,CAAC,MAAM;AAEtF,aAAO,YAAY,KAAK,QAAQ,SAAS,GAAG,MAAM;AAAA,IACtD;AAAA,EACJ;AAEA,YAAU,MAAM;AAChB,YAAU,MAAM;AAEhB,SAAO,SAASA,aAAY,MAAc,gBAAgB,OAAO;AAC7D,UAAM,UAAU,QAAQ,OAAO;AAC/B,QAAI,iBAAiB,YAAY,UAAa,KAAK,SAAS,UAAU,GAAG;AACrE,aAAO,WAAW,MAAM,UAAU,CAAC,IAAI;AAAA,IAC3C;AAEA,YAAQ,gBAAgB,OAAO;AAC/B,QAAI,SAAS,YAAY;AACrB;AAAA,IACJ;AAEA,QAAI,YAAY;AACZ,mBAAa;AACb,aAAO,MAAM,KAAK;AAAA,IACtB,WAAW,eAAe,CAAC,KAAK,WAAW,IAAI,GAAG;AAC9C,aAAO,MAAM,IAAI;AAAA,IACrB;AAEA,WAAO,MAAM,IAAI;AAEjB,iBAAa;AAAA,EACjB;AACJ,GAAG;AAEI,MAAM,SAAS;AAAA,EAClB,SAAS,SAAS,OAAO;AAAA,EACzB;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX;AAAA,EACA,mBAAmB;AAAA,EACnB;AAAA,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["writeStatus", "Progress", "Status"]
|
|
6
6
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@matter/tools",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.12.0-alpha.0-20241213-fcd71a96d",
|
|
4
4
|
"description": "Matter.js tooling",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"scripts": {
|
|
@@ -24,6 +24,11 @@
|
|
|
24
24
|
"types": "./dist/cjs/index.d.ts",
|
|
25
25
|
"default": "./dist/cjs/index.js"
|
|
26
26
|
}
|
|
27
|
+
},
|
|
28
|
+
"./bootstrap": {
|
|
29
|
+
"import": {
|
|
30
|
+
"default": "./src/util/bootstrap.mjs"
|
|
31
|
+
}
|
|
27
32
|
}
|
|
28
33
|
},
|
|
29
34
|
"main": "dist/cjs/index.js",
|
package/src/building/project.ts
CHANGED
|
@@ -107,7 +107,7 @@ export class Project {
|
|
|
107
107
|
return;
|
|
108
108
|
}
|
|
109
109
|
|
|
110
|
-
const declarations = (await this.pkg.glob(`dist/${path}/**/*.d.ts
|
|
110
|
+
const declarations = (await this.pkg.glob(`dist/${path}/**/*.d.{ts,mts,cts}`)).sort();
|
|
111
111
|
for (const file of declarations) {
|
|
112
112
|
apiSha.update(file);
|
|
113
113
|
apiSha.update(await readFile(file));
|
package/src/index.ts
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
export * from "./building/builder.js";
|
|
8
8
|
export * from "./building/graph.js";
|
|
9
9
|
export * from "./building/project.js";
|
|
10
|
+
export * from "./running/ensure-compiled.js";
|
|
10
11
|
export * from "./util/commander.js";
|
|
11
12
|
export * from "./util/file.js";
|
|
12
13
|
export * from "./util/package.js";
|
package/src/running/cli.ts
CHANGED
|
@@ -5,11 +5,8 @@
|
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import { dirname, resolve } from "path";
|
|
8
|
-
import { exit } from "process";
|
|
9
|
-
import {
|
|
10
|
-
import { Graph } from "../building/graph.js";
|
|
11
|
-
import { Project } from "../building/project.js";
|
|
12
|
-
import { Package } from "../util/package.js";
|
|
8
|
+
import { exit, stderr, stdout } from "process";
|
|
9
|
+
import { ensureCompiled } from "./ensure-compiled.js";
|
|
13
10
|
import { executeNode } from "./execute.js";
|
|
14
11
|
|
|
15
12
|
/**
|
|
@@ -25,8 +22,38 @@ import { executeNode } from "./execute.js";
|
|
|
25
22
|
* this by setting the environment variable MATTER_DIRECT_EXEC.
|
|
26
23
|
*/
|
|
27
24
|
export async function main(argv = process.argv) {
|
|
28
|
-
let
|
|
29
|
-
|
|
25
|
+
let directExec = !!process.env.MATTER_DIRECT_EXEC;
|
|
26
|
+
|
|
27
|
+
// Drop node and matter-run
|
|
28
|
+
argv = argv.slice(2);
|
|
29
|
+
|
|
30
|
+
// Process arguments to matter-run itself (very simple as of yet so just processing manually)
|
|
31
|
+
while (argv[0][0] === "-") {
|
|
32
|
+
const option = argv.shift();
|
|
33
|
+
|
|
34
|
+
switch (option) {
|
|
35
|
+
case "--clear":
|
|
36
|
+
console.clear();
|
|
37
|
+
break;
|
|
38
|
+
|
|
39
|
+
case "--direct":
|
|
40
|
+
directExec = true;
|
|
41
|
+
break;
|
|
42
|
+
|
|
43
|
+
default:
|
|
44
|
+
stderr.write(`Unrecognized option ${option}`);
|
|
45
|
+
break;
|
|
46
|
+
|
|
47
|
+
case "--help":
|
|
48
|
+
stdout.write(
|
|
49
|
+
"Usage: matter-run [--clear] [--direct] <SCRIPT> [ARG]...\nRun a Node.js script with source map support and automatic transpilation of TypeScript.",
|
|
50
|
+
);
|
|
51
|
+
break;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// Extract script name. argv is then the script's args
|
|
56
|
+
let script = argv.shift();
|
|
30
57
|
|
|
31
58
|
if (script === undefined || script === "") {
|
|
32
59
|
console.error("Error: Script name required");
|
|
@@ -45,34 +72,7 @@ export async function main(argv = process.argv) {
|
|
|
45
72
|
dir = dirname(script);
|
|
46
73
|
}
|
|
47
74
|
|
|
48
|
-
const pkg =
|
|
49
|
-
|
|
50
|
-
let format: "esm" | "cjs" | "none";
|
|
51
|
-
if (!pkg.hasSrc) {
|
|
52
|
-
format = "none";
|
|
53
|
-
} else if (pkg.supportsEsm) {
|
|
54
|
-
format = "esm";
|
|
55
|
-
} else if (pkg.supportsCjs) {
|
|
56
|
-
format = "cjs";
|
|
57
|
-
} else {
|
|
58
|
-
console.error("Error: Could not identify project format");
|
|
59
|
-
exit(2);
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
// In development we currently build package and dependencies unconditionally before running
|
|
63
|
-
const isDevelopment = !dir.match(/[\\/]node_modules[\\/]/);
|
|
64
|
-
if (isDevelopment && format !== "none") {
|
|
65
|
-
const builder = new Builder();
|
|
66
|
-
const dependencies = await Graph.forProject(dir);
|
|
67
|
-
if (dependencies) {
|
|
68
|
-
// Project is in a workspace; build along with dependencies from the same workspace
|
|
69
|
-
await dependencies.build(builder, false);
|
|
70
|
-
} else {
|
|
71
|
-
// Project is not in a workspace; only build the project
|
|
72
|
-
const project = new Project(pkg);
|
|
73
|
-
await builder.build(project);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
75
|
+
const { format, pkg } = await ensureCompiled(dir);
|
|
76
76
|
|
|
77
77
|
// Determine the actual script to run
|
|
78
78
|
if (format !== "none") {
|
|
@@ -87,7 +87,7 @@ export async function main(argv = process.argv) {
|
|
|
87
87
|
// If we run in the same process we cannot enable source maps so default mode is to fork. However for development
|
|
88
88
|
// purposes it can be useful to avoid the intermediary process. In this case you can set "--enable-source-maps"
|
|
89
89
|
// manually then set MATTER_DIRECT_EXEC
|
|
90
|
-
if (
|
|
90
|
+
if (directExec) {
|
|
91
91
|
// This will not transpile properly to commonjs but we only use this module from ESM so that's OK
|
|
92
92
|
await import(script);
|
|
93
93
|
} else {
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { exit } from "process";
|
|
8
|
+
import { fileURLToPath } from "url";
|
|
9
|
+
import { Builder } from "../building/builder.js";
|
|
10
|
+
import { Graph } from "../building/graph.js";
|
|
11
|
+
import { Project } from "../building/project.js";
|
|
12
|
+
import { Package } from "../util/package.js";
|
|
13
|
+
|
|
14
|
+
let compilationEnsured: undefined | Package;
|
|
15
|
+
|
|
16
|
+
export async function ensureCompiled(path: string) {
|
|
17
|
+
if (path.startsWith("file:")) {
|
|
18
|
+
path = fileURLToPath(path);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
const pkg = Package.forPath(path);
|
|
22
|
+
|
|
23
|
+
let format: "esm" | "cjs" | "none";
|
|
24
|
+
if (!pkg.hasSrc) {
|
|
25
|
+
format = "none";
|
|
26
|
+
} else if (pkg.supportsEsm) {
|
|
27
|
+
format = "esm";
|
|
28
|
+
} else if (pkg.supportsCjs) {
|
|
29
|
+
format = "cjs";
|
|
30
|
+
} else {
|
|
31
|
+
console.error("Error: Could not identify project format");
|
|
32
|
+
exit(2);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
if (compilationEnsured == pkg) {
|
|
36
|
+
return { pkg, format };
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// In development we currently build package and dependencies unconditionally before running
|
|
40
|
+
const isDevelopment = !path.match(/[\\/]node_modules[\\/]/);
|
|
41
|
+
if (isDevelopment && format !== "none") {
|
|
42
|
+
const builder = new Builder();
|
|
43
|
+
const dependencies = await Graph.forProject(path);
|
|
44
|
+
if (dependencies) {
|
|
45
|
+
// Project is in a workspace; build along with dependencies from the same workspace
|
|
46
|
+
await dependencies.build(builder, false);
|
|
47
|
+
} else {
|
|
48
|
+
// Project is not in a workspace; only build the project
|
|
49
|
+
const project = new Project(pkg);
|
|
50
|
+
await builder.build(project);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
compilationEnsured = pkg;
|
|
55
|
+
|
|
56
|
+
return { pkg, format };
|
|
57
|
+
}
|