@plugjs/plug 0.0.1
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/LICENSE.md +211 -0
- package/NOTICE.md +13 -0
- package/README.md +7 -0
- package/dist/assert.cjs +72 -0
- package/dist/assert.cjs.map +6 -0
- package/dist/assert.mjs +41 -0
- package/dist/assert.mjs.map +6 -0
- package/dist/async.cjs +58 -0
- package/dist/async.cjs.map +6 -0
- package/dist/async.mjs +30 -0
- package/dist/async.mjs.map +6 -0
- package/dist/build.cjs +136 -0
- package/dist/build.cjs.map +6 -0
- package/dist/build.mjs +110 -0
- package/dist/build.mjs.map +6 -0
- package/dist/files.cjs +113 -0
- package/dist/files.cjs.map +6 -0
- package/dist/files.mjs +88 -0
- package/dist/files.mjs.map +6 -0
- package/dist/fork.cjs +177 -0
- package/dist/fork.cjs.map +6 -0
- package/dist/fork.mjs +151 -0
- package/dist/fork.mjs.map +6 -0
- package/dist/helpers.cjs +129 -0
- package/dist/helpers.cjs.map +6 -0
- package/dist/helpers.mjs +97 -0
- package/dist/helpers.mjs.map +6 -0
- package/dist/index.cjs +25 -0
- package/dist/index.cjs.map +6 -0
- package/dist/index.mjs +7 -0
- package/dist/index.mjs.map +6 -0
- package/dist/log/colors.cjs +129 -0
- package/dist/log/colors.cjs.map +6 -0
- package/dist/log/colors.mjs +93 -0
- package/dist/log/colors.mjs.map +6 -0
- package/dist/log/emit.cjs +109 -0
- package/dist/log/emit.cjs.map +6 -0
- package/dist/log/emit.mjs +83 -0
- package/dist/log/emit.mjs.map +6 -0
- package/dist/log/levels.cjs +75 -0
- package/dist/log/levels.cjs.map +6 -0
- package/dist/log/levels.mjs +41 -0
- package/dist/log/levels.mjs.map +6 -0
- package/dist/log/logger.cjs +129 -0
- package/dist/log/logger.cjs.map +6 -0
- package/dist/log/logger.mjs +104 -0
- package/dist/log/logger.mjs.map +6 -0
- package/dist/log/options.cjs +149 -0
- package/dist/log/options.cjs.map +6 -0
- package/dist/log/options.mjs +124 -0
- package/dist/log/options.mjs.map +6 -0
- package/dist/log/report.cjs +284 -0
- package/dist/log/report.cjs.map +6 -0
- package/dist/log/report.mjs +259 -0
- package/dist/log/report.mjs.map +6 -0
- package/dist/log/spinner.cjs +83 -0
- package/dist/log/spinner.cjs.map +6 -0
- package/dist/log/spinner.mjs +57 -0
- package/dist/log/spinner.mjs.map +6 -0
- package/dist/log.cjs +71 -0
- package/dist/log.cjs.map +6 -0
- package/dist/log.mjs +45 -0
- package/dist/log.mjs.map +6 -0
- package/dist/paths.cjs +158 -0
- package/dist/paths.cjs.map +6 -0
- package/dist/paths.mjs +122 -0
- package/dist/paths.mjs.map +6 -0
- package/dist/pipe.cjs +71 -0
- package/dist/pipe.cjs.map +6 -0
- package/dist/pipe.mjs +44 -0
- package/dist/pipe.mjs.map +6 -0
- package/dist/plugs/copy.cjs +95 -0
- package/dist/plugs/copy.cjs.map +6 -0
- package/dist/plugs/copy.mjs +64 -0
- package/dist/plugs/copy.mjs.map +6 -0
- package/dist/plugs/coverage/analysis.cjs +229 -0
- package/dist/plugs/coverage/analysis.cjs.map +6 -0
- package/dist/plugs/coverage/analysis.mjs +202 -0
- package/dist/plugs/coverage/analysis.mjs.map +6 -0
- package/dist/plugs/coverage/report.cjs +215 -0
- package/dist/plugs/coverage/report.cjs.map +6 -0
- package/dist/plugs/coverage/report.mjs +200 -0
- package/dist/plugs/coverage/report.mjs.map +6 -0
- package/dist/plugs/coverage.cjs +142 -0
- package/dist/plugs/coverage.cjs.map +6 -0
- package/dist/plugs/coverage.mjs +117 -0
- package/dist/plugs/coverage.mjs.map +6 -0
- package/dist/plugs/debug.cjs +50 -0
- package/dist/plugs/debug.cjs.map +6 -0
- package/dist/plugs/debug.mjs +25 -0
- package/dist/plugs/debug.mjs.map +6 -0
- package/dist/plugs/esbuild/bundle-locals.cjs +51 -0
- package/dist/plugs/esbuild/bundle-locals.cjs.map +6 -0
- package/dist/plugs/esbuild/bundle-locals.mjs +26 -0
- package/dist/plugs/esbuild/bundle-locals.mjs.map +6 -0
- package/dist/plugs/esbuild/check-dependencies.cjs +140 -0
- package/dist/plugs/esbuild/check-dependencies.cjs.map +6 -0
- package/dist/plugs/esbuild/check-dependencies.mjs +115 -0
- package/dist/plugs/esbuild/check-dependencies.mjs.map +6 -0
- package/dist/plugs/esbuild/fix-extensions.cjs +91 -0
- package/dist/plugs/esbuild/fix-extensions.cjs.map +6 -0
- package/dist/plugs/esbuild/fix-extensions.mjs +60 -0
- package/dist/plugs/esbuild/fix-extensions.mjs.map +6 -0
- package/dist/plugs/esbuild.cjs +109 -0
- package/dist/plugs/esbuild.cjs.map +6 -0
- package/dist/plugs/esbuild.mjs +83 -0
- package/dist/plugs/esbuild.mjs.map +6 -0
- package/dist/plugs/eslint/runner.cjs +91 -0
- package/dist/plugs/eslint/runner.cjs.map +6 -0
- package/dist/plugs/eslint/runner.mjs +68 -0
- package/dist/plugs/eslint/runner.mjs.map +6 -0
- package/dist/plugs/exec.cjs +128 -0
- package/dist/plugs/exec.cjs.map +6 -0
- package/dist/plugs/exec.mjs +96 -0
- package/dist/plugs/exec.mjs.map +6 -0
- package/dist/plugs/filter.cjs +59 -0
- package/dist/plugs/filter.cjs.map +6 -0
- package/dist/plugs/filter.mjs +34 -0
- package/dist/plugs/filter.mjs.map +6 -0
- package/dist/plugs/mocha/reporter.cjs +140 -0
- package/dist/plugs/mocha/reporter.cjs.map +6 -0
- package/dist/plugs/mocha/reporter.mjs +107 -0
- package/dist/plugs/mocha/reporter.mjs.map +6 -0
- package/dist/plugs/mocha/runner.cjs +73 -0
- package/dist/plugs/mocha/runner.cjs.map +6 -0
- package/dist/plugs/mocha/runner.mjs +44 -0
- package/dist/plugs/mocha/runner.mjs.map +6 -0
- package/dist/plugs/tsc/compiler.cjs +74 -0
- package/dist/plugs/tsc/compiler.cjs.map +6 -0
- package/dist/plugs/tsc/compiler.mjs +43 -0
- package/dist/plugs/tsc/compiler.mjs.map +6 -0
- package/dist/plugs/tsc/options.cjs +82 -0
- package/dist/plugs/tsc/options.cjs.map +6 -0
- package/dist/plugs/tsc/options.mjs +51 -0
- package/dist/plugs/tsc/options.mjs.map +6 -0
- package/dist/plugs/tsc/report.cjs +90 -0
- package/dist/plugs/tsc/report.cjs.map +6 -0
- package/dist/plugs/tsc/report.mjs +59 -0
- package/dist/plugs/tsc/report.mjs.map +6 -0
- package/dist/plugs/tsc/runner.cjs +101 -0
- package/dist/plugs/tsc/runner.cjs.map +6 -0
- package/dist/plugs/tsc/runner.mjs +72 -0
- package/dist/plugs/tsc/runner.mjs.map +6 -0
- package/dist/plugs.cjs +31 -0
- package/dist/plugs.cjs.map +6 -0
- package/dist/plugs.mjs +13 -0
- package/dist/plugs.mjs.map +6 -0
- package/dist/run.cjs +95 -0
- package/dist/run.cjs.map +6 -0
- package/dist/run.mjs +70 -0
- package/dist/run.mjs.map +6 -0
- package/dist/task.cjs +39 -0
- package/dist/task.cjs.map +6 -0
- package/dist/task.mjs +14 -0
- package/dist/task.mjs.map +6 -0
- package/dist/utils/asyncfs.cjs +143 -0
- package/dist/utils/asyncfs.cjs.map +6 -0
- package/dist/utils/asyncfs.mjs +83 -0
- package/dist/utils/asyncfs.mjs.map +6 -0
- package/dist/utils/caller.cjs +59 -0
- package/dist/utils/caller.cjs.map +6 -0
- package/dist/utils/caller.mjs +34 -0
- package/dist/utils/caller.mjs.map +6 -0
- package/dist/utils/match.cjs +69 -0
- package/dist/utils/match.cjs.map +6 -0
- package/dist/utils/match.mjs +38 -0
- package/dist/utils/match.mjs.map +6 -0
- package/dist/utils/options.cjs +41 -0
- package/dist/utils/options.cjs.map +6 -0
- package/dist/utils/options.mjs +16 -0
- package/dist/utils/options.mjs.map +6 -0
- package/dist/utils/walk.cjs +104 -0
- package/dist/utils/walk.cjs.map +6 -0
- package/dist/utils/walk.mjs +79 -0
- package/dist/utils/walk.mjs.map +6 -0
- package/extra/cli.mjs +212 -0
- package/extra/ts-loader.mjs +214 -0
- package/extra/webassembly.d.ts +11 -0
- package/package.json +57 -0
- package/src/assert.ts +47 -0
- package/src/async.ts +50 -0
- package/src/files.ts +129 -0
- package/src/fork.ts +263 -0
- package/src/helpers.ts +145 -0
- package/src/index.ts +20 -0
- package/src/log/colors.ts +119 -0
- package/src/log/emit.ts +125 -0
- package/src/log/levels.ts +65 -0
- package/src/log/logger.ts +171 -0
- package/src/log/options.ts +199 -0
- package/src/log/report.ts +433 -0
- package/src/log/spinner.ts +70 -0
- package/src/log.ts +68 -0
- package/src/paths.ts +213 -0
- package/src/pipe.ts +231 -0
- package/src/plugs/copy.ts +113 -0
- package/src/plugs/coverage/analysis.ts +395 -0
- package/src/plugs/coverage/report.ts +337 -0
- package/src/plugs/coverage.ts +194 -0
- package/src/plugs/debug.ts +35 -0
- package/src/plugs/esbuild/bundle-locals.ts +33 -0
- package/src/plugs/esbuild/check-dependencies.ts +158 -0
- package/src/plugs/esbuild/fix-extensions.ts +108 -0
- package/src/plugs/esbuild.ts +128 -0
- package/src/plugs/eslint/runner.ts +112 -0
- package/src/plugs/exec.ts +215 -0
- package/src/plugs/filter.ts +56 -0
- package/src/plugs/mocha/reporter.ts +152 -0
- package/src/plugs/mocha/runner.ts +77 -0
- package/src/plugs/tsc/compiler.ts +66 -0
- package/src/plugs/tsc/options.ts +97 -0
- package/src/plugs/tsc/report.ts +74 -0
- package/src/plugs/tsc/runner.ts +100 -0
- package/src/plugs.ts +33 -0
- package/src/run.ts +160 -0
- package/src/task.ts +26 -0
- package/src/utils/asyncfs.ts +82 -0
- package/src/utils/caller.ts +45 -0
- package/src/utils/match.ts +286 -0
- package/src/utils/options.ts +22 -0
- package/src/utils/walk.ts +136 -0
- package/types/assert.d.ts +18 -0
- package/types/async.d.ts +20 -0
- package/types/build.d.ts +56 -0
- package/types/files.d.ts +44 -0
- package/types/fork.d.ts +57 -0
- package/types/helpers.d.ts +49 -0
- package/types/index.d.ts +14 -0
- package/types/log/colors.d.ts +25 -0
- package/types/log/emit.d.ts +14 -0
- package/types/log/levels.d.ts +52 -0
- package/types/log/logger.d.ts +31 -0
- package/types/log/options.d.ts +40 -0
- package/types/log/report.d.ts +64 -0
- package/types/log/spinner.d.ts +2 -0
- package/types/log.d.ts +10 -0
- package/types/paths.d.ts +76 -0
- package/types/pipe.d.ts +152 -0
- package/types/plugs/copy.d.ts +27 -0
- package/types/plugs/coverage/analysis.d.ts +104 -0
- package/types/plugs/coverage/report.d.ts +53 -0
- package/types/plugs/coverage.d.ts +46 -0
- package/types/plugs/debug.d.ts +14 -0
- package/types/plugs/esbuild/bundle-locals.d.ts +6 -0
- package/types/plugs/esbuild/check-dependencies.d.ts +12 -0
- package/types/plugs/esbuild/fix-extensions.d.ts +29 -0
- package/types/plugs/esbuild.d.ts +24 -0
- package/types/plugs/eslint/runner.d.ts +22 -0
- package/types/plugs/exec.d.ts +90 -0
- package/types/plugs/filter.d.ts +23 -0
- package/types/plugs/mocha/reporter.d.ts +8 -0
- package/types/plugs/mocha/runner.d.ts +34 -0
- package/types/plugs/tsc/compiler.d.ts +24 -0
- package/types/plugs/tsc/options.d.ts +8 -0
- package/types/plugs/tsc/report.d.ts +5 -0
- package/types/plugs/tsc/runner.d.ts +13 -0
- package/types/plugs.d.ts +16 -0
- package/types/run.d.ts +89 -0
- package/types/task.d.ts +15 -0
- package/types/utils/asyncfs.d.ts +37 -0
- package/types/utils/caller.d.ts +7 -0
- package/types/utils/match.d.ts +216 -0
- package/types/utils/options.d.ts +15 -0
- package/types/utils/walk.d.ts +28 -0
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
// utils/walk.ts
|
|
2
|
+
import { basename, join } from "node:path";
|
|
3
|
+
import { $p, log } from "../log.mjs";
|
|
4
|
+
import { resolveAbsolutePath } from "../paths.mjs";
|
|
5
|
+
import { readdir, stat } from "./asyncfs.mjs";
|
|
6
|
+
import { match } from "./match.mjs";
|
|
7
|
+
function walk(directory, globs, options = {}) {
|
|
8
|
+
const {
|
|
9
|
+
maxDepth = Infinity,
|
|
10
|
+
followSymlinks = true,
|
|
11
|
+
allowNodeModules = false,
|
|
12
|
+
...opts
|
|
13
|
+
} = options;
|
|
14
|
+
const onDirectory = (dir) => {
|
|
15
|
+
if (dir === directory)
|
|
16
|
+
return true;
|
|
17
|
+
const name = basename(dir);
|
|
18
|
+
if (name === "node_modules")
|
|
19
|
+
return !!allowNodeModules;
|
|
20
|
+
if (name.startsWith("."))
|
|
21
|
+
return !!opts.dot;
|
|
22
|
+
return true;
|
|
23
|
+
};
|
|
24
|
+
const positiveMatcher = match(globs, opts);
|
|
25
|
+
log.debug("Walking directory", $p(directory), { globs, options });
|
|
26
|
+
return walker({
|
|
27
|
+
directory,
|
|
28
|
+
relative: "",
|
|
29
|
+
matcher: positiveMatcher,
|
|
30
|
+
onDirectory,
|
|
31
|
+
followSymlinks,
|
|
32
|
+
maxDepth,
|
|
33
|
+
depth: 0
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
async function* walker(args) {
|
|
37
|
+
const {
|
|
38
|
+
directory,
|
|
39
|
+
relative,
|
|
40
|
+
matcher: positiveMatcher,
|
|
41
|
+
onDirectory,
|
|
42
|
+
followSymlinks,
|
|
43
|
+
maxDepth,
|
|
44
|
+
depth
|
|
45
|
+
} = args;
|
|
46
|
+
const dir = resolveAbsolutePath(directory, relative);
|
|
47
|
+
if (!onDirectory(dir))
|
|
48
|
+
return;
|
|
49
|
+
log.trace("Reading directory", $p(dir));
|
|
50
|
+
const dirents = await readdir(dir, { withFileTypes: true }).catch((error) => {
|
|
51
|
+
if (error.code !== "ENOENT")
|
|
52
|
+
throw error;
|
|
53
|
+
log.warn("Directory", $p(dir), "not found");
|
|
54
|
+
return [];
|
|
55
|
+
});
|
|
56
|
+
for (const dirent of dirents) {
|
|
57
|
+
const path = join(relative, dirent.name);
|
|
58
|
+
if (dirent.isFile() && positiveMatcher(path))
|
|
59
|
+
yield path;
|
|
60
|
+
else if (dirent.isDirectory() && depth < maxDepth) {
|
|
61
|
+
const children = walker({ ...args, relative: path, depth: depth + 1 });
|
|
62
|
+
for await (const child of children)
|
|
63
|
+
yield child;
|
|
64
|
+
} else if (dirent.isSymbolicLink() && followSymlinks) {
|
|
65
|
+
const info = await stat(join(directory, path));
|
|
66
|
+
if (info.isFile() && positiveMatcher(path))
|
|
67
|
+
yield path;
|
|
68
|
+
else if (info.isDirectory() && depth < maxDepth) {
|
|
69
|
+
const children = walker({ ...args, relative: path, depth: depth + 1 });
|
|
70
|
+
for await (const child of children)
|
|
71
|
+
yield child;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
export {
|
|
77
|
+
walk
|
|
78
|
+
};
|
|
79
|
+
//# sourceMappingURL=walk.mjs.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/utils/walk.ts"],
|
|
4
|
+
"mappings": ";AAAA,SAAS,UAAU,YAAY;AAC/B,SAAS,IAAI,WAAW;AACxB,SAAuB,2BAA2B;AAClD,SAAS,SAAS,YAAY;AAC9B,SAAS,aAA2B;AA8B7B,SAAS,KACZ,WACA,OACA,UAAuB,CAAC,GACU;AACpC,QAAM;AAAA,IACJ,WAAW;AAAA,IACX,iBAAiB;AAAA,IACjB,mBAAmB;AAAA,OAChB;AAAA,EACL,IAAI;AAGJ,QAAM,cAAc,CAAC,QAA+B;AAGlD,QAAI,QAAQ;AAAW,aAAO;AAC9B,UAAM,OAAO,SAAS,GAAG;AACzB,QAAI,SAAS;AAAgB,aAAO,CAAC,CAAC;AACtC,QAAI,KAAK,WAAW,GAAG;AAAG,aAAO,CAAC,CAAC,KAAK;AACxC,WAAO;AAAA,EACT;AAGA,QAAM,kBAAkB,MAAM,OAAO,IAAI;AAGzC,MAAI,MAAM,qBAAqB,GAAG,SAAS,GAAG,EAAE,OAAO,QAAQ,CAAC;AAChE,SAAO,OAAO;AAAA,IACZ;AAAA,IACA,UAAU;AAAA,IACV,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO;AAAA,EACT,CAAC;AACH;AAiBA,gBAAgB,OAAO,MAA2D;AAChF,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AAGJ,QAAM,MAAM,oBAAoB,WAAW,QAAQ;AACnD,MAAI,CAAE,YAAY,GAAG;AAAG;AACxB,MAAI,MAAM,qBAAqB,GAAG,GAAG,CAAC;AACtC,QAAM,UAAU,MAAM,QAAQ,KAAK,EAAE,eAAe,KAAK,CAAC,EAAE,MAAM,CAAC,UAAU;AAC3E,QAAI,MAAM,SAAS;AAAU,YAAM;AACnC,QAAI,KAAK,aAAa,GAAG,GAAG,GAAG,WAAW;AAC1C,WAAO,CAAC;AAAA,EACV,CAAC;AAGD,aAAW,UAAU,SAAS;AAC5B,UAAM,OAAO,KAAK,UAAU,OAAO,IAAI;AAGvC,QAAI,OAAO,OAAO,KAAK,gBAAgB,IAAI;AAAG,YAAM;AAAA,aAG3C,OAAO,YAAY,KAAM,QAAQ,UAAW;AACnD,YAAM,WAAW,OAAO,EAAE,GAAG,MAAM,UAAU,MAAM,OAAO,QAAQ,EAAE,CAAC;AACrE,uBAAiB,SAAS;AAAU,cAAM;AAAA,IAG5C,WAAW,OAAO,eAAe,KAAK,gBAAgB;AACpD,YAAM,OAAO,MAAM,KAAK,KAAK,WAAW,IAAI,CAAC;AAG7C,UAAI,KAAK,OAAO,KAAK,gBAAgB,IAAI;AAAG,cAAM;AAAA,eAGzC,KAAK,YAAY,KAAM,QAAQ,UAAW;AACjD,cAAM,WAAW,OAAO,EAAE,GAAG,MAAM,UAAU,MAAM,OAAO,QAAQ,EAAE,CAAC;AACrE,yBAAiB,SAAS;AAAU,gBAAM;AAAA,MAC5C;AAAA,IACF;AAAA,EACF;AACF;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
package/extra/cli.mjs
ADDED
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import _yargs from "yargs-parser";
|
|
3
|
+
import _childProcess from "node:child_process";
|
|
4
|
+
import _fs from "node:fs";
|
|
5
|
+
import _path from "node:path";
|
|
6
|
+
import _url from "node:url";
|
|
7
|
+
async function main() {
|
|
8
|
+
const { buildFile, tasks, listOnly } = parseCommandLine();
|
|
9
|
+
if (tasks.length === 0)
|
|
10
|
+
tasks.push("default");
|
|
11
|
+
const build = (await import(buildFile)).default;
|
|
12
|
+
if (!isBuild(build)) {
|
|
13
|
+
console.log("Build file did not export a proper build");
|
|
14
|
+
console.log();
|
|
15
|
+
console.log('- If using CommonJS export your build as "module.exports"');
|
|
16
|
+
console.log(" e.g.: module.exports = build({ ... })");
|
|
17
|
+
console.log();
|
|
18
|
+
console.log('- If using ESM modules export your build as "default"');
|
|
19
|
+
console.log(" e.g.: export default build({ ... })");
|
|
20
|
+
console.log();
|
|
21
|
+
process.exit(1);
|
|
22
|
+
}
|
|
23
|
+
for (const task of tasks) {
|
|
24
|
+
if (task in build)
|
|
25
|
+
continue;
|
|
26
|
+
console.log(`Build file does not contain task "${task}"`);
|
|
27
|
+
process.exit(1);
|
|
28
|
+
}
|
|
29
|
+
if (listOnly) {
|
|
30
|
+
console.log("Build file tasks\n- " + Object.keys(build).sort().join("\n- "));
|
|
31
|
+
} else {
|
|
32
|
+
let run;
|
|
33
|
+
for (const task of tasks) {
|
|
34
|
+
run = await build[task](run);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
const sourceMapsEnabled = process.execArgv.indexOf("--enable-source-maps") >= 0;
|
|
39
|
+
const tsLoaderMarker = Symbol.for("plugjs:tsLoader");
|
|
40
|
+
const typeScriptEnabled = globalThis[tsLoaderMarker] === tsLoaderMarker;
|
|
41
|
+
if (process.env.DEBUG_CLI === "true") {
|
|
42
|
+
console.log("SourceMaps enabled =", sourceMapsEnabled);
|
|
43
|
+
console.log("TypeScript enabled =", typeScriptEnabled);
|
|
44
|
+
console.log(" Arguments =", process.argv.join(" "));
|
|
45
|
+
console.log(" PID =", process.pid);
|
|
46
|
+
}
|
|
47
|
+
if (sourceMapsEnabled && typeScriptEnabled) {
|
|
48
|
+
main().then(() => process.exit(0)).catch((error) => {
|
|
49
|
+
if (!isBuildFailure(error))
|
|
50
|
+
console.log(error);
|
|
51
|
+
process.exit(1);
|
|
52
|
+
});
|
|
53
|
+
} else {
|
|
54
|
+
const script = _url.fileURLToPath(import.meta.url);
|
|
55
|
+
const execArgv = [...process.execArgv];
|
|
56
|
+
if (!sourceMapsEnabled)
|
|
57
|
+
execArgv.push("--enable-source-maps");
|
|
58
|
+
if (!typeScriptEnabled) {
|
|
59
|
+
const directory = _path.dirname(script);
|
|
60
|
+
const extension = _path.extname(script);
|
|
61
|
+
const loader = _path.resolve(directory, `ts-loader${extension}`);
|
|
62
|
+
execArgv.push(`--experimental-loader=${loader}`, "--no-warnings");
|
|
63
|
+
}
|
|
64
|
+
const child = _childProcess.fork(script, [...process.argv.slice(2)], {
|
|
65
|
+
stdio: ["inherit", "inherit", "inherit", "ipc"],
|
|
66
|
+
execArgv
|
|
67
|
+
});
|
|
68
|
+
child.on("error", (error) => {
|
|
69
|
+
console.log("Error respawning CLI", error);
|
|
70
|
+
process.exit(1);
|
|
71
|
+
});
|
|
72
|
+
child.on("exit", (code, signal) => {
|
|
73
|
+
if (signal) {
|
|
74
|
+
console.log(`CLI process exited with signal ${signal}`);
|
|
75
|
+
process.exit(1);
|
|
76
|
+
} else if (typeof code !== "number") {
|
|
77
|
+
console.log("CLI process failed for an unknown reason");
|
|
78
|
+
process.exit(1);
|
|
79
|
+
} else {
|
|
80
|
+
process.exit(code);
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
const buildMarker = Symbol.for("plugjs:isBuild");
|
|
85
|
+
const buildFailure = Symbol.for("plugjs:buildFailure");
|
|
86
|
+
function isBuild(build) {
|
|
87
|
+
return build && build[buildMarker] === buildMarker;
|
|
88
|
+
}
|
|
89
|
+
function isBuildFailure(arg) {
|
|
90
|
+
return arg && arg[buildFailure] === buildFailure;
|
|
91
|
+
}
|
|
92
|
+
function parseCommandLine() {
|
|
93
|
+
const parsed = _yargs(process.argv.slice(2), {
|
|
94
|
+
configuration: {
|
|
95
|
+
"camel-case-expansion": true,
|
|
96
|
+
"strip-aliased": true,
|
|
97
|
+
"strip-dashed": true
|
|
98
|
+
},
|
|
99
|
+
alias: {
|
|
100
|
+
verbose: ["v"],
|
|
101
|
+
quiet: ["q"],
|
|
102
|
+
colors: ["c"],
|
|
103
|
+
file: ["f"],
|
|
104
|
+
list: ["l"],
|
|
105
|
+
help: ["h"]
|
|
106
|
+
},
|
|
107
|
+
string: ["file"],
|
|
108
|
+
boolean: ["help", "colors", "list"],
|
|
109
|
+
count: ["verbose", "quiet"]
|
|
110
|
+
});
|
|
111
|
+
const tasks = [];
|
|
112
|
+
let verbosity = 0;
|
|
113
|
+
let colors = void 0;
|
|
114
|
+
let file = void 0;
|
|
115
|
+
let listOnly = false;
|
|
116
|
+
let help = false;
|
|
117
|
+
for (const key in parsed) {
|
|
118
|
+
switch (key) {
|
|
119
|
+
case "_":
|
|
120
|
+
tasks.push(...parsed[key].map((s) => `${s}`));
|
|
121
|
+
break;
|
|
122
|
+
case "verbose":
|
|
123
|
+
verbosity = verbosity + parsed[key];
|
|
124
|
+
break;
|
|
125
|
+
case "quiet":
|
|
126
|
+
verbosity = verbosity - parsed[key];
|
|
127
|
+
break;
|
|
128
|
+
case "file":
|
|
129
|
+
file = parsed[key];
|
|
130
|
+
break;
|
|
131
|
+
case "colors":
|
|
132
|
+
colors = !!parsed[key];
|
|
133
|
+
break;
|
|
134
|
+
case "list":
|
|
135
|
+
listOnly = !!parsed[key];
|
|
136
|
+
break;
|
|
137
|
+
case "help":
|
|
138
|
+
help = !!parsed[key];
|
|
139
|
+
break;
|
|
140
|
+
default:
|
|
141
|
+
console.log(`Unsupported option "${key}" (try "--help")`);
|
|
142
|
+
process.exit(1);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
if (help) {
|
|
146
|
+
console.log(`Usage:
|
|
147
|
+
|
|
148
|
+
plugjs [--options] [... tasks]
|
|
149
|
+
|
|
150
|
+
Options:
|
|
151
|
+
-v --verbose Increase logging verbosity
|
|
152
|
+
-q --quiet Decrease logging verbosity
|
|
153
|
+
-c --colors Force colorful output (use "--no-colors" to force plain text)
|
|
154
|
+
-f --file Specify the build file to use (default "./build.[ts/js/...]")
|
|
155
|
+
-l --list Only list the tasks defined by the build, nothing more!
|
|
156
|
+
-h --help Help! You're reading it now!
|
|
157
|
+
|
|
158
|
+
Tasks:
|
|
159
|
+
Any other argument will be treated as a task name. If no task names are
|
|
160
|
+
specified, the "default" task will be executed.
|
|
161
|
+
`);
|
|
162
|
+
process.exit(1);
|
|
163
|
+
}
|
|
164
|
+
if (colors !== void 0)
|
|
165
|
+
process.env.LOG_COLORS = `${colors}`;
|
|
166
|
+
if (verbosity) {
|
|
167
|
+
const levels = ["TRACE", "DEBUG", "INFO", "NOTICE", "WARN", "ERROR", "OFF"];
|
|
168
|
+
let level = levels.indexOf("NOTICE") - verbosity;
|
|
169
|
+
if (level >= levels.length)
|
|
170
|
+
level = levels.length - 1;
|
|
171
|
+
else if (level < 0)
|
|
172
|
+
level = 0;
|
|
173
|
+
process.env.LOG_LEVEL = levels[level];
|
|
174
|
+
}
|
|
175
|
+
const exts = ["ts", "mts", "mjs", "js", "mjs", "cjs"];
|
|
176
|
+
let buildFile = void 0;
|
|
177
|
+
if (file) {
|
|
178
|
+
const absolute = _path.resolve(file);
|
|
179
|
+
if (!isFile(absolute)) {
|
|
180
|
+
console.log(`Specified build file "${file}" was not found`);
|
|
181
|
+
process.exit(1);
|
|
182
|
+
} else {
|
|
183
|
+
buildFile = absolute;
|
|
184
|
+
}
|
|
185
|
+
} else {
|
|
186
|
+
for (const ext of exts) {
|
|
187
|
+
const absolute = _path.resolve(`build.${ext}`);
|
|
188
|
+
if (!isFile(absolute))
|
|
189
|
+
continue;
|
|
190
|
+
buildFile = absolute;
|
|
191
|
+
break;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
if (!buildFile) {
|
|
195
|
+
console.log(`Unable to find build file "./build.[${exts.join("|")}]`);
|
|
196
|
+
process.exit(1);
|
|
197
|
+
}
|
|
198
|
+
return { buildFile, tasks, listOnly };
|
|
199
|
+
}
|
|
200
|
+
function isFile(path) {
|
|
201
|
+
try {
|
|
202
|
+
return _fs.statSync(path).isFile();
|
|
203
|
+
} catch (error) {
|
|
204
|
+
return false;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
export {
|
|
208
|
+
isBuild,
|
|
209
|
+
isBuildFailure,
|
|
210
|
+
parseCommandLine
|
|
211
|
+
};
|
|
212
|
+
//# sourceMappingURL=data:application/json;base64,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
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
import _esbuild from "esbuild";
|
|
2
|
+
import _fs from "node:fs";
|
|
3
|
+
import _module from "node:module";
|
|
4
|
+
import _path from "node:path";
|
|
5
|
+
import _url from "node:url";
|
|
6
|
+
const CJS = "commonjs";
|
|
7
|
+
const ESM = "module";
|
|
8
|
+
const _debug = process.env.DEBUG_TS_LOADER === "true";
|
|
9
|
+
function _log(type, ...args) {
|
|
10
|
+
if (!_debug)
|
|
11
|
+
return;
|
|
12
|
+
const t = type === "module" ? "esm" : type === "commonjs" ? "cjs" : "---";
|
|
13
|
+
const prefix = `[ts-loader|${t}|pid=${process.pid}]`;
|
|
14
|
+
console.log(prefix, ...args);
|
|
15
|
+
}
|
|
16
|
+
function _throw(type, message, options = {}) {
|
|
17
|
+
const t = type === "module" ? "esm" : type === "commonjs" ? "cjs" : "---";
|
|
18
|
+
const prefix = `[ts-loader|${t}|pid=${process.pid}]`;
|
|
19
|
+
const { start = _throw, ...extra } = options;
|
|
20
|
+
const error = new Error(`${prefix} ${message}`);
|
|
21
|
+
Error.captureStackTrace(error, start);
|
|
22
|
+
Object.assign(error, extra);
|
|
23
|
+
throw error;
|
|
24
|
+
}
|
|
25
|
+
const _moduleFormatCache = /* @__PURE__ */ new Map();
|
|
26
|
+
function _moduleFormat(directory) {
|
|
27
|
+
const type = _moduleFormatCache.get(directory);
|
|
28
|
+
if (type)
|
|
29
|
+
return type;
|
|
30
|
+
const file = _path.resolve(directory, "package.json");
|
|
31
|
+
try {
|
|
32
|
+
const json = _fs.readFileSync(file, "utf-8");
|
|
33
|
+
const data = JSON.parse(json);
|
|
34
|
+
const type2 = data.type === "module" ? ESM : CJS;
|
|
35
|
+
_log(null, `File "${file}" defines module type as "${data.type}" (${type2})`);
|
|
36
|
+
_moduleFormatCache.set(directory, type2);
|
|
37
|
+
return type2;
|
|
38
|
+
} catch (cause) {
|
|
39
|
+
if (cause.code !== "ENOENT" && cause.code !== "EISDIR") {
|
|
40
|
+
_throw(null, `Unable to read or parse "${file}"`, { cause, start: _moduleFormat });
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
const name = _path.basename(directory);
|
|
44
|
+
const parent = _path.dirname(directory);
|
|
45
|
+
if (name === "node_modules" || parent === directory) {
|
|
46
|
+
_moduleFormatCache.set(directory, CJS);
|
|
47
|
+
return CJS;
|
|
48
|
+
} else {
|
|
49
|
+
const type2 = _moduleFormat(parent);
|
|
50
|
+
_moduleFormatCache.set(directory, type2);
|
|
51
|
+
return type2;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
function _isFile(path) {
|
|
55
|
+
try {
|
|
56
|
+
return _fs.statSync(path).isFile();
|
|
57
|
+
} catch (error) {
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
function _isDirectory(path) {
|
|
62
|
+
try {
|
|
63
|
+
return _fs.statSync(path).isDirectory();
|
|
64
|
+
} catch (error) {
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
function _esbReport(kind, messages = []) {
|
|
69
|
+
const output = process.stderr;
|
|
70
|
+
const options = { color: !!output.isTTY, terminalWidth: output.columns || 80 };
|
|
71
|
+
const array = _esbuild.formatMessagesSync(messages, { kind, ...options });
|
|
72
|
+
array.forEach((message) => output.write(`${message}
|
|
73
|
+
`));
|
|
74
|
+
}
|
|
75
|
+
function _esbTranpile(filename, type) {
|
|
76
|
+
_log(type, `Transpiling "${filename}`);
|
|
77
|
+
const [format, __fileurl] = type === ESM ? ["esm", "import.meta.url"] : ["cjs", "__filename"];
|
|
78
|
+
const options = {
|
|
79
|
+
sourcefile: filename,
|
|
80
|
+
format,
|
|
81
|
+
loader: "ts",
|
|
82
|
+
sourcemap: "inline",
|
|
83
|
+
sourcesContent: false,
|
|
84
|
+
platform: "node",
|
|
85
|
+
logLevel: "silent",
|
|
86
|
+
target: `node${process.versions["node"]}`,
|
|
87
|
+
define: { __fileurl }
|
|
88
|
+
};
|
|
89
|
+
if (_debug) {
|
|
90
|
+
options.banner = `console.log(\`[ts-loader|${format}]: Loaded "\${${__fileurl}}"\`);`;
|
|
91
|
+
}
|
|
92
|
+
let result;
|
|
93
|
+
try {
|
|
94
|
+
const source = _fs.readFileSync(filename, "utf-8");
|
|
95
|
+
result = _esbuild.transformSync(source, options);
|
|
96
|
+
} catch (cause) {
|
|
97
|
+
_esbReport("error", cause.errors);
|
|
98
|
+
_esbReport("warning", cause.warnings);
|
|
99
|
+
_throw(type, `ESBuild error transpiling "${filename}"`, { cause, start: _esbTranpile });
|
|
100
|
+
}
|
|
101
|
+
if (_debug)
|
|
102
|
+
_esbReport("warning", result.warnings);
|
|
103
|
+
return result.code;
|
|
104
|
+
}
|
|
105
|
+
const resolve = (specifier, context, nextResolve) => {
|
|
106
|
+
_log(ESM, `Resolving "${specifier}" from "${context.parentURL}"`);
|
|
107
|
+
if (!specifier.match(/^\.\.?\//))
|
|
108
|
+
return nextResolve(specifier, context);
|
|
109
|
+
const parentURL = context.parentURL;
|
|
110
|
+
if (!parentURL)
|
|
111
|
+
return nextResolve(specifier, context);
|
|
112
|
+
if (!parentURL.startsWith("file:"))
|
|
113
|
+
return nextResolve(specifier, context);
|
|
114
|
+
if (!parentURL.match(/\.m?ts$/))
|
|
115
|
+
return nextResolve(specifier, context);
|
|
116
|
+
const url = new URL(specifier, parentURL).href;
|
|
117
|
+
const path = _url.fileURLToPath(url);
|
|
118
|
+
if (_isFile(path)) {
|
|
119
|
+
_log(ESM, `Positive match for "${specifier}" as "${path}" (1)`);
|
|
120
|
+
return nextResolve(specifier, context);
|
|
121
|
+
}
|
|
122
|
+
const match = specifier.match(/(.*)(\.[mc]?js$)/);
|
|
123
|
+
if (match) {
|
|
124
|
+
const [, base, ext] = match;
|
|
125
|
+
const tsspecifier = base + ext.replace("js", "ts");
|
|
126
|
+
const tsurl = new URL(tsspecifier, parentURL).href;
|
|
127
|
+
const tspath = _url.fileURLToPath(tsurl);
|
|
128
|
+
if (_isFile(tspath)) {
|
|
129
|
+
_log(ESM, `Positive match for "${specifier}" as "${tspath}" (2)`);
|
|
130
|
+
return nextResolve(tsspecifier, context);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
if (_isFile(`${path}.ts`)) {
|
|
134
|
+
_log(ESM, `Positive match for "${specifier}.ts" as "${path}.ts" (3)`);
|
|
135
|
+
return nextResolve(`${specifier}.ts`, context);
|
|
136
|
+
}
|
|
137
|
+
if (_isDirectory(path)) {
|
|
138
|
+
const file = _path.resolve(path, "index.ts");
|
|
139
|
+
const spec = _path.join(specifier, "index.ts");
|
|
140
|
+
if (_isFile(file)) {
|
|
141
|
+
_log(ESM, `Positive match for "${spec}" as "${file}" (4)`);
|
|
142
|
+
return nextResolve(spec, context);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
return nextResolve(specifier, context);
|
|
146
|
+
};
|
|
147
|
+
const load = (url, context, nextLoad) => {
|
|
148
|
+
var _a;
|
|
149
|
+
_log(ESM, `Attempting to load "${url}"`);
|
|
150
|
+
if (!url.startsWith("file:"))
|
|
151
|
+
return nextLoad(url, context);
|
|
152
|
+
const ext = (_a = url.match(/\.[cm]?ts$/)) == null ? void 0 : _a[0];
|
|
153
|
+
if (!ext)
|
|
154
|
+
return nextLoad(url, context);
|
|
155
|
+
if (ext === ".cts")
|
|
156
|
+
return { format: "commonjs" };
|
|
157
|
+
const filename = _url.fileURLToPath(url);
|
|
158
|
+
if (ext === ".ts") {
|
|
159
|
+
const format = _moduleFormat(_path.dirname(filename));
|
|
160
|
+
if (format === CJS)
|
|
161
|
+
return { format: "commonjs" };
|
|
162
|
+
}
|
|
163
|
+
const source = _esbTranpile(filename, ESM);
|
|
164
|
+
return { source, format: "module", shortCircuit: true };
|
|
165
|
+
};
|
|
166
|
+
const loader = (module, filename) => {
|
|
167
|
+
_log(ESM, `Attempting to load "${filename}"`);
|
|
168
|
+
const ext = _path.extname(filename);
|
|
169
|
+
if (ext === ".ts") {
|
|
170
|
+
const format = _moduleFormat(_path.dirname(filename));
|
|
171
|
+
if (format === ESM) {
|
|
172
|
+
_throw(CJS, `Must use import to load ES Module: ${filename}`, { code: "ERR_REQUIRE_ESM" });
|
|
173
|
+
}
|
|
174
|
+
} else if (ext !== ".cts") {
|
|
175
|
+
_throw(CJS, `Unsupported filename "${filename}"`);
|
|
176
|
+
}
|
|
177
|
+
const source = _esbTranpile(filename, CJS);
|
|
178
|
+
try {
|
|
179
|
+
module._compile(source, filename);
|
|
180
|
+
} catch (cause) {
|
|
181
|
+
_throw(CJS, `Error compiling module "${filename}"`, { cause });
|
|
182
|
+
}
|
|
183
|
+
};
|
|
184
|
+
_module._extensions[".ts"] = _module._extensions[".cts"] = loader;
|
|
185
|
+
const _oldResolveFilename = _module._resolveFilename;
|
|
186
|
+
_module._resolveFilename = function(request, parent, ...args) {
|
|
187
|
+
try {
|
|
188
|
+
return _oldResolveFilename.call(this, request, parent, ...args);
|
|
189
|
+
} catch (error) {
|
|
190
|
+
if (error.code !== "MODULE_NOT_FOUND")
|
|
191
|
+
throw error;
|
|
192
|
+
const match = request.match(/(.*)(\.[mc]?js$)/);
|
|
193
|
+
if (parent && match) {
|
|
194
|
+
const [, name, ext] = match;
|
|
195
|
+
const tsrequest = name + ext.replace("js", "ts");
|
|
196
|
+
try {
|
|
197
|
+
const result = _oldResolveFilename.call(this, tsrequest, parent, ...args);
|
|
198
|
+
_log("commonjs", `Resolution for "${request}" intercepted as "${tsrequest}`);
|
|
199
|
+
return result;
|
|
200
|
+
} catch (discard) {
|
|
201
|
+
throw error;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
throw error;
|
|
205
|
+
}
|
|
206
|
+
};
|
|
207
|
+
const tsLoaderMarker = Symbol.for("plugjs:tsLoader");
|
|
208
|
+
globalThis[tsLoaderMarker] = tsLoaderMarker;
|
|
209
|
+
_log(null, `Installing loader from "${import.meta.url}"`);
|
|
210
|
+
export {
|
|
211
|
+
load,
|
|
212
|
+
resolve
|
|
213
|
+
};
|
|
214
|
+
//# sourceMappingURL=data:application/json;base64,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
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/// <reference no-default-lib="true"/>
|
|
2
|
+
|
|
3
|
+
/*
|
|
4
|
+
* Type definition for `WebAssembly`. This is normally provided to TypeScript
|
|
5
|
+
* by `lib.dom.d.ts`, and is not defined by Node's own types.
|
|
6
|
+
*
|
|
7
|
+
* https://github.com/evanw/esbuild/issues/2388
|
|
8
|
+
*/
|
|
9
|
+
declare namespace WebAssembly {
|
|
10
|
+
interface Module {} // for esbuild types
|
|
11
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@plugjs/plug",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"main": "./dist/index.cjs",
|
|
6
|
+
"module": "./dist/index.mjs",
|
|
7
|
+
"types": "./types/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"require": {
|
|
11
|
+
"types": "./types/index.d.ts",
|
|
12
|
+
"default": "./dist/index.cjs"
|
|
13
|
+
},
|
|
14
|
+
"import": {
|
|
15
|
+
"types": "./types/index.d.ts",
|
|
16
|
+
"default": "./dist/index.mjs"
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
"bin": {
|
|
21
|
+
"plug": "./extra/cli.mjs"
|
|
22
|
+
},
|
|
23
|
+
"scripts": {
|
|
24
|
+
"bootstrap": "./bootstrap.sh",
|
|
25
|
+
"build": "node ./extra/cli.mjs",
|
|
26
|
+
"dev": "npx nodemon -e .ts -w ./test -w ./src -x ./runme.sh"
|
|
27
|
+
},
|
|
28
|
+
"author": "",
|
|
29
|
+
"license": "ISC",
|
|
30
|
+
"dependencies": {
|
|
31
|
+
"@babel/parser": "^7.18.11",
|
|
32
|
+
"@babel/types": "^7.18.10",
|
|
33
|
+
"@plugjs/cov8-html": "^0.0.1",
|
|
34
|
+
"diff": "^5.1.0",
|
|
35
|
+
"esbuild": "^0.15.4",
|
|
36
|
+
"eslint": "^8.22.0",
|
|
37
|
+
"mocha": "^10.0.0",
|
|
38
|
+
"picomatch": "^2.3.1",
|
|
39
|
+
"source-map": "^0.7.4",
|
|
40
|
+
"typescript": "^4.7.4",
|
|
41
|
+
"yargs-parser": "^21.1.1"
|
|
42
|
+
},
|
|
43
|
+
"devDependencies": {
|
|
44
|
+
"@types/chai": "^4.3.3",
|
|
45
|
+
"@types/diff": "^5.0.2",
|
|
46
|
+
"@types/eslint": "^8.4.5",
|
|
47
|
+
"@types/mocha": "^9.1.1",
|
|
48
|
+
"@types/ms": "^0.7.31",
|
|
49
|
+
"@types/node": "<17",
|
|
50
|
+
"@types/picomatch": "^2.3.0",
|
|
51
|
+
"@types/yargs-parser": "^21.0.0",
|
|
52
|
+
"@typescript-eslint/eslint-plugin": "^5.33.1",
|
|
53
|
+
"@typescript-eslint/parser": "^5.33.1",
|
|
54
|
+
"chai": "^4.3.6",
|
|
55
|
+
"eslint-config-google": "^0.14.0"
|
|
56
|
+
}
|
|
57
|
+
}
|
package/src/assert.ts
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/* ========================================================================== *
|
|
2
|
+
* BUILD FAILURES *
|
|
3
|
+
* ========================================================================== */
|
|
4
|
+
|
|
5
|
+
const buildError = Symbol.for('plugjs:buildError')
|
|
6
|
+
const buildFailure = Symbol.for('plugjs:buildFailure')
|
|
7
|
+
|
|
8
|
+
/** Check if the specified argument is a {@link BuildError} */
|
|
9
|
+
export function isBuildError(arg: any): arg is BuildError {
|
|
10
|
+
return arg && arg[buildError] === buildError
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/** Check if the specified argument is a {@link BuildFailure} */
|
|
14
|
+
export function isBuildFailure(arg: any): arg is BuildFailure {
|
|
15
|
+
return arg && arg[buildFailure] === buildFailure
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/** An error produced in our build, with proper inspection for logging */
|
|
19
|
+
export class BuildError extends Error {
|
|
20
|
+
constructor(message: string) {
|
|
21
|
+
super(message)
|
|
22
|
+
Object.defineProperty(this, buildError, { value: buildError })
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/** A {@link BuildFailure} represents an error _already logged_ in our build. */
|
|
27
|
+
export class BuildFailure extends Error {
|
|
28
|
+
constructor() {
|
|
29
|
+
super('Build Failure')
|
|
30
|
+
Object.defineProperty(this, buildFailure, { value: buildFailure })
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/** Asserts something as _truthy_ and fail the build if not */
|
|
35
|
+
export function assert(assertion: any, message: string): asserts assertion {
|
|
36
|
+
if (! assertion) throw new BuildError(message)
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/** Throw a {@link BuildError} (an {@link Error} printed nicely) */
|
|
40
|
+
export function fail(message: string): never {
|
|
41
|
+
throw new BuildError(message)
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/** Return a non-logged {@link BuildFailure} */
|
|
45
|
+
export function failure(): BuildFailure {
|
|
46
|
+
return new BuildFailure()
|
|
47
|
+
}
|