@plugjs/plug 0.0.2 → 0.0.5
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/async.cjs +4 -2
- package/dist/async.cjs.map +1 -1
- package/dist/async.mjs +4 -2
- package/dist/async.mjs.map +1 -1
- package/dist/build.cjs +36 -16
- package/dist/build.cjs.map +2 -2
- package/dist/build.mjs +37 -17
- package/dist/build.mjs.map +2 -2
- package/dist/files.cjs +16 -2
- package/dist/files.cjs.map +1 -1
- package/dist/files.mjs +17 -3
- package/dist/files.mjs.map +1 -1
- package/dist/fork.cjs +7 -7
- package/dist/fork.cjs.map +1 -1
- package/dist/fork.mjs +7 -7
- package/dist/fork.mjs.map +1 -1
- package/dist/helpers.cjs +1 -18
- package/dist/helpers.cjs.map +1 -1
- package/dist/helpers.mjs +1 -17
- package/dist/helpers.mjs.map +1 -1
- package/dist/log/report.cjs +2 -1
- package/dist/log/report.cjs.map +1 -1
- package/dist/log/report.mjs +2 -1
- package/dist/log/report.mjs.map +1 -1
- package/dist/log.cjs +4 -1
- package/dist/log.cjs.map +1 -1
- package/dist/log.mjs +4 -1
- package/dist/log.mjs.map +1 -1
- package/dist/paths.cjs.map +1 -1
- package/dist/paths.mjs.map +1 -1
- package/dist/plugs/copy.cjs +2 -2
- package/dist/plugs/copy.cjs.map +1 -1
- package/dist/plugs/copy.mjs +1 -1
- package/dist/plugs/copy.mjs.map +1 -1
- package/dist/plugs/coverage/analysis.cjs +8 -3
- package/dist/plugs/coverage/analysis.cjs.map +2 -2
- package/dist/plugs/coverage/analysis.mjs +8 -3
- package/dist/plugs/coverage/analysis.mjs.map +2 -2
- package/dist/plugs/coverage/report.cjs +2 -1
- package/dist/plugs/coverage/report.cjs.map +1 -1
- package/dist/plugs/coverage/report.mjs +2 -1
- package/dist/plugs/coverage/report.mjs.map +1 -1
- package/dist/plugs/debug.cjs +6 -6
- package/dist/plugs/debug.cjs.map +1 -1
- package/dist/plugs/debug.mjs +7 -7
- package/dist/plugs/debug.mjs.map +1 -1
- package/dist/plugs/esbuild/fix-extensions.cjs +5 -4
- package/dist/plugs/esbuild/fix-extensions.cjs.map +1 -1
- package/dist/plugs/esbuild/fix-extensions.mjs +4 -3
- package/dist/plugs/esbuild/fix-extensions.mjs.map +1 -1
- package/dist/plugs/esbuild.cjs +34 -4
- package/dist/plugs/esbuild.cjs.map +2 -2
- package/dist/plugs/esbuild.mjs +35 -5
- package/dist/plugs/esbuild.mjs.map +2 -2
- package/dist/plugs/exec.cjs +2 -2
- package/dist/plugs/filter.cjs +2 -3
- package/dist/plugs/filter.cjs.map +1 -1
- package/dist/plugs/filter.mjs +2 -3
- package/dist/plugs/filter.mjs.map +1 -1
- package/dist/plugs/mocha/reporter.cjs +2 -2
- package/dist/plugs/mocha/reporter.cjs.map +1 -1
- package/dist/plugs/mocha/reporter.mjs +1 -1
- package/dist/plugs/mocha/reporter.mjs.map +1 -1
- package/dist/plugs/mocha/runner.cjs +1 -1
- package/dist/plugs/rmf.cjs +53 -0
- package/dist/plugs/rmf.cjs.map +6 -0
- package/dist/plugs/rmf.mjs +28 -0
- package/dist/plugs/rmf.mjs.map +6 -0
- package/dist/plugs/tsc/compiler.cjs +1 -1
- package/dist/plugs/tsc/options.cjs +1 -1
- package/dist/plugs/tsc/report.cjs +1 -1
- package/dist/plugs/tsc/runner.cjs +1 -1
- package/dist/plugs.cjs +1 -0
- package/dist/plugs.cjs.map +1 -1
- package/dist/plugs.mjs +1 -0
- package/dist/plugs.mjs.map +1 -1
- package/dist/run.cjs +3 -3
- package/dist/run.cjs.map +1 -1
- package/dist/run.mjs +3 -3
- package/dist/run.mjs.map +1 -1
- package/dist/utils/asyncfs.cjs +1 -1
- package/dist/utils/match.cjs +1 -1
- package/extra/cli.mjs +29 -20
- package/extra/ts-loader.mjs +10 -3
- package/package.json +4 -4
- package/src/files.ts +36 -4
- package/src/fork.ts +8 -8
- package/src/helpers.ts +4 -33
- package/src/paths.ts +1 -0
- package/src/plugs/copy.ts +1 -1
- package/src/plugs/debug.ts +7 -7
- package/src/plugs/esbuild.ts +69 -10
- package/src/plugs/filter.ts +2 -3
- package/src/plugs/rmf.ts +42 -0
- package/src/plugs.ts +1 -0
- package/src/run.ts +5 -5
- package/types/files.d.ts +14 -3
- package/types/helpers.d.ts +3 -13
- package/types/log/options.d.ts +2 -2
- package/types/plugs/rmf.d.ts +15 -0
- package/types/plugs.d.ts +1 -0
- package/types/run.d.ts +2 -2
- package/types/utils/asyncfs.d.ts +1 -1
package/dist/run.cjs.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/run.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAqB;AACrB,oBAAuB;AACvB,mBAAoC;AACpC,iBAAwF;AACxF,mBAA8F;AAC9F,kBAA+B;AAC/B,qBAA2C;AAC3C,kBAAkC;AAgF3B,IAAM,UAAN,MAA6B;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAIT,YAAY,EAAE,UAAU,UAAU,WAAW,IAAI,GAA2B;AAC1E,SAAK,WAAW;AAChB,SAAK,WAAW;AAChB,SAAK,YAAY;AACjB,SAAK,MAAM,WAAO,sBAAU,QAAQ;AAAA,EACtC;AAAA,EAGA,YAAY,OAA6B;AACvC,SAAK,IAAI,YAAQ,2BAAe,KAAK;AAAA,EACvC;AAAA,EAEA,OAAO,OAAuB;AAC5B,eAAO,yBAAa,OAAO,KAAK,QAAQ;AAAA,EAC1C;AAAA,EAEA,WAAW,OAA+B;AACxC,UAAM,WAAO,uBAAK,GAAG,KAAK;AAC1B,QAAI,CAAE;AAAM,aAAO,KAAK;AAExB,QAAI,KAAK,WAAW,GAAG,GAAG;AACxB,YAAM,WAAW,KAAK,UAAU,CAAC;AACjC,gCAAO,KAAE,6BAAe,QAAQ,GAAG,sBAAsB,mBAAmB;AAC5E,iBAAO,
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAqB;AACrB,oBAAuB;AACvB,mBAAoC;AACpC,iBAAwF;AACxF,mBAA8F;AAC9F,kBAA+B;AAC/B,qBAA2C;AAC3C,kBAAkC;AAgF3B,IAAM,UAAN,MAA6B;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAIT,YAAY,EAAE,UAAU,UAAU,WAAW,IAAI,GAA2B;AAC1E,SAAK,WAAW;AAChB,SAAK,WAAW;AAChB,SAAK,YAAY;AACjB,SAAK,MAAM,WAAO,sBAAU,QAAQ;AAAA,EACtC;AAAA,EAGA,YAAY,OAA6B;AACvC,SAAK,IAAI,YAAQ,2BAAe,KAAK;AAAA,EACvC;AAAA,EAEA,OAAO,OAAuB;AAC5B,eAAO,yBAAa,OAAO,KAAK,QAAQ;AAAA,EAC1C;AAAA,EAEA,WAAW,OAA+B;AACxC,UAAM,WAAO,uBAAK,GAAG,KAAK;AAC1B,QAAI,CAAE;AAAM,aAAO,KAAK;AAExB,QAAI,KAAK,WAAW,GAAG,GAAG;AACxB,YAAM,WAAW,KAAK,UAAU,CAAC;AACjC,gCAAO,KAAE,6BAAe,QAAQ,GAAG,sBAAsB,mBAAmB;AAC5E,iBAAO,kCAAoB,KAAK,UAAU,QAAQ;AAAA,IACpD;AAEA,YAAI,6BAAe,IAAI;AAAG,aAAO;AAEjC,eAAO,sCAAoB,yCAA2B,GAAG,IAAI;AAAA,EAC/D;AAAA,EAIA,MAAM,UAAsC,OAA+B;AACzE,QAAI,OAAO,UAAU,UAAU;AAC7B,aAAO,mBAAM,QAAQ,KAAK,QAAQ,OAAO,GAAG,KAAK,CAAC;AAAA,IACpD,WAAW,OAAO;AAChB,aAAO,mBAAM,QAAQ,KAAK;AAAA,IAC5B,OAAO;AACL,aAAO,mBAAM,QAAQ,KAAK,QAAQ,CAAC;AAAA,IACrC;AAAA,EACF;AAAA,EAEA,KAAK,SAAiB,MAAwD;AAC5E,UAAM,EAAE,QAAQ,SAAS,EAAE,cAAc,QAAQ,EAAE,QAAI,6BAAa,MAAM,CAAC,CAAC;AAE5E,UAAM,UAAU,QAAQ,QAAQ,EAAE,KAAK,YAAY;AACjD,YAAM,UAAU,KAAK,MAAM,aAAa,GAAG;AAC3C,uBAAiB,YAAQ,kBAAK,QAAQ,WAAW,CAAE,MAAM,GAAG,MAAO,GAAG,OAAO,GAAG;AAC9E,gBAAQ,UAAU,IAAI;AAAA,MACxB;AACA,aAAO,QAAQ,MAAM;AAAA,IACvB,CAAC;AAED,WAAO,KAAK,KAAK,OAAO;AAAA,EAC1B;AAAA,EAEA,KAAK,OAAsD;AACzD,WAAO,IAAI,qBAAS,OAAO,IAAI;AAAA,EACjC;AAAA,EAEA,KAAK,MAA0C;AAC7C,UAAM,IAAI,MAAM,wBAAwB,OAAO;AAAA,EACjD;AACF;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/dist/run.mjs
CHANGED
|
@@ -31,11 +31,11 @@ var RunImpl = class {
|
|
|
31
31
|
if (path.startsWith("@")) {
|
|
32
32
|
const relative = path.substring(1);
|
|
33
33
|
assert(!isAbsolutePath(relative), `Path component of "${path}" is absolute`);
|
|
34
|
-
return resolveAbsolutePath(
|
|
34
|
+
return resolveAbsolutePath(this.buildDir, relative);
|
|
35
35
|
}
|
|
36
36
|
if (isAbsolutePath(path))
|
|
37
37
|
return path;
|
|
38
|
-
return resolveAbsolutePath(
|
|
38
|
+
return resolveAbsolutePath(getCurrentWorkingDirectory(), path);
|
|
39
39
|
}
|
|
40
40
|
files(first, ...paths) {
|
|
41
41
|
if (typeof first === "string") {
|
|
@@ -51,7 +51,7 @@ var RunImpl = class {
|
|
|
51
51
|
const promise = Promise.resolve().then(async () => {
|
|
52
52
|
const builder = this.files(directory || ".");
|
|
53
53
|
for await (const file of walk(builder.directory, [glob, ...params], options)) {
|
|
54
|
-
builder.
|
|
54
|
+
builder.unchecked(file);
|
|
55
55
|
}
|
|
56
56
|
return builder.build();
|
|
57
57
|
});
|
package/dist/run.mjs.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/run.ts"],
|
|
4
|
-
"mappings": ";AAAA,SAAS,YAAY;AACrB,SAAS,cAAc;AACvB,SAAS,aAA2B;AACpC,SAAS,cAAc,gBAAgB,iBAAiD;AACxF,SAAuB,4BAA4B,gBAAgB,2BAA2B;AAC9F,SAAe,gBAAgB;AAC/B,SAAuB,oBAAoB;AAC3C,SAAS,YAAyB;AAgF3B,IAAM,UAAN,MAA6B;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAIT,YAAY,EAAE,UAAU,UAAU,WAAW,IAAI,GAA2B;AAC1E,SAAK,WAAW;AAChB,SAAK,WAAW;AAChB,SAAK,YAAY;AACjB,SAAK,MAAM,OAAO,UAAU,QAAQ;AAAA,EACtC;AAAA,EAGA,YAAY,OAA6B;AACvC,SAAK,IAAI,QAAQ,eAAe,KAAK;AAAA,EACvC;AAAA,EAEA,OAAO,OAAuB;AAC5B,WAAO,aAAa,OAAO,KAAK,QAAQ;AAAA,EAC1C;AAAA,EAEA,WAAW,OAA+B;AACxC,UAAM,OAAO,KAAK,GAAG,KAAK;AAC1B,QAAI,CAAE;AAAM,aAAO,KAAK;AAExB,QAAI,KAAK,WAAW,GAAG,GAAG;AACxB,YAAM,WAAW,KAAK,UAAU,CAAC;AACjC,aAAO,CAAE,eAAe,QAAQ,GAAG,sBAAsB,mBAAmB;AAC5E,aAAO,oBAAoB,
|
|
4
|
+
"mappings": ";AAAA,SAAS,YAAY;AACrB,SAAS,cAAc;AACvB,SAAS,aAA2B;AACpC,SAAS,cAAc,gBAAgB,iBAAiD;AACxF,SAAuB,4BAA4B,gBAAgB,2BAA2B;AAC9F,SAAe,gBAAgB;AAC/B,SAAuB,oBAAoB;AAC3C,SAAS,YAAyB;AAgF3B,IAAM,UAAN,MAA6B;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAIT,YAAY,EAAE,UAAU,UAAU,WAAW,IAAI,GAA2B;AAC1E,SAAK,WAAW;AAChB,SAAK,WAAW;AAChB,SAAK,YAAY;AACjB,SAAK,MAAM,OAAO,UAAU,QAAQ;AAAA,EACtC;AAAA,EAGA,YAAY,OAA6B;AACvC,SAAK,IAAI,QAAQ,eAAe,KAAK;AAAA,EACvC;AAAA,EAEA,OAAO,OAAuB;AAC5B,WAAO,aAAa,OAAO,KAAK,QAAQ;AAAA,EAC1C;AAAA,EAEA,WAAW,OAA+B;AACxC,UAAM,OAAO,KAAK,GAAG,KAAK;AAC1B,QAAI,CAAE;AAAM,aAAO,KAAK;AAExB,QAAI,KAAK,WAAW,GAAG,GAAG;AACxB,YAAM,WAAW,KAAK,UAAU,CAAC;AACjC,aAAO,CAAE,eAAe,QAAQ,GAAG,sBAAsB,mBAAmB;AAC5E,aAAO,oBAAoB,KAAK,UAAU,QAAQ;AAAA,IACpD;AAEA,QAAI,eAAe,IAAI;AAAG,aAAO;AAEjC,WAAO,oBAAoB,2BAA2B,GAAG,IAAI;AAAA,EAC/D;AAAA,EAIA,MAAM,UAAsC,OAA+B;AACzE,QAAI,OAAO,UAAU,UAAU;AAC7B,aAAO,MAAM,QAAQ,KAAK,QAAQ,OAAO,GAAG,KAAK,CAAC;AAAA,IACpD,WAAW,OAAO;AAChB,aAAO,MAAM,QAAQ,KAAK;AAAA,IAC5B,OAAO;AACL,aAAO,MAAM,QAAQ,KAAK,QAAQ,CAAC;AAAA,IACrC;AAAA,EACF;AAAA,EAEA,KAAK,SAAiB,MAAwD;AAC5E,UAAM,EAAE,QAAQ,SAAS,EAAE,cAAc,QAAQ,EAAE,IAAI,aAAa,MAAM,CAAC,CAAC;AAE5E,UAAM,UAAU,QAAQ,QAAQ,EAAE,KAAK,YAAY;AACjD,YAAM,UAAU,KAAK,MAAM,aAAa,GAAG;AAC3C,uBAAiB,QAAQ,KAAK,QAAQ,WAAW,CAAE,MAAM,GAAG,MAAO,GAAG,OAAO,GAAG;AAC9E,gBAAQ,UAAU,IAAI;AAAA,MACxB;AACA,aAAO,QAAQ,MAAM;AAAA,IACvB,CAAC;AAED,WAAO,KAAK,KAAK,OAAO;AAAA,EAC1B;AAAA,EAEA,KAAK,OAAsD;AACzD,WAAO,IAAI,SAAS,OAAO,IAAI;AAAA,EACjC;AAAA,EAEA,KAAK,MAA0C;AAC7C,UAAM,IAAI,MAAM,wBAAwB,OAAO;AAAA,EACjD;AACF;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/dist/utils/asyncfs.cjs
CHANGED
|
@@ -60,7 +60,7 @@ __export(asyncfs_exports, {
|
|
|
60
60
|
});
|
|
61
61
|
module.exports = __toCommonJS(asyncfs_exports);
|
|
62
62
|
var import_node_fs = require("node:fs");
|
|
63
|
-
var import_promises = __toESM(require("node:fs/promises")
|
|
63
|
+
var import_promises = __toESM(require("node:fs/promises"));
|
|
64
64
|
var import_node_fs2 = require("node:fs");
|
|
65
65
|
var fs = Object.entries(import_promises.default).reduce((fs2, [key, val]) => {
|
|
66
66
|
if (typeof val === "function") {
|
package/dist/utils/match.cjs
CHANGED
|
@@ -29,7 +29,7 @@ __export(match_exports, {
|
|
|
29
29
|
match: () => match
|
|
30
30
|
});
|
|
31
31
|
module.exports = __toCommonJS(match_exports);
|
|
32
|
-
var import_picomatch = __toESM(require("picomatch")
|
|
32
|
+
var import_picomatch = __toESM(require("picomatch"));
|
|
33
33
|
function match(globs, options = {}) {
|
|
34
34
|
return (0, import_picomatch.default)([...globs], {
|
|
35
35
|
basename: false,
|
package/extra/cli.mjs
CHANGED
|
@@ -4,8 +4,8 @@ import _childProcess from "node:child_process";
|
|
|
4
4
|
import _fs from "node:fs";
|
|
5
5
|
import _path from "node:path";
|
|
6
6
|
import _url from "node:url";
|
|
7
|
-
async function main() {
|
|
8
|
-
const { buildFile, tasks, listOnly } =
|
|
7
|
+
async function main(options2) {
|
|
8
|
+
const { buildFile, tasks, listOnly } = options2;
|
|
9
9
|
if (tasks.length === 0)
|
|
10
10
|
tasks.push("default");
|
|
11
11
|
let build = await import(buildFile);
|
|
@@ -46,8 +46,9 @@ if (process.env.DEBUG_CLI === "true") {
|
|
|
46
46
|
console.log(" Arguments =", process.argv.join(" "));
|
|
47
47
|
console.log(" PID =", process.pid);
|
|
48
48
|
}
|
|
49
|
+
const options = parseCommandLine();
|
|
49
50
|
if (sourceMapsEnabled && typeScriptEnabled) {
|
|
50
|
-
main().then(() => process.exit(0)).catch((error) => {
|
|
51
|
+
main(options).then(() => process.exit(0)).catch((error) => {
|
|
51
52
|
if (!isBuildFailure(error))
|
|
52
53
|
console.log(error);
|
|
53
54
|
process.exit(1);
|
|
@@ -63,9 +64,11 @@ if (sourceMapsEnabled && typeScriptEnabled) {
|
|
|
63
64
|
const loader = _path.resolve(directory, `ts-loader${extension}`);
|
|
64
65
|
execArgv.push(`--experimental-loader=${loader}`, "--no-warnings");
|
|
65
66
|
}
|
|
67
|
+
const env = options.forceEsm ? { __TS_LOADER_FORCE_ESM: process.cwd(), ...process.env } : process.env;
|
|
66
68
|
const child = _childProcess.fork(script, [...process.argv.slice(2)], {
|
|
67
69
|
stdio: ["inherit", "inherit", "inherit", "ipc"],
|
|
68
|
-
execArgv
|
|
70
|
+
execArgv,
|
|
71
|
+
env
|
|
69
72
|
});
|
|
70
73
|
child.on("error", (error) => {
|
|
71
74
|
console.log("Error respawning CLI", error);
|
|
@@ -94,26 +97,28 @@ function isBuildFailure(arg) {
|
|
|
94
97
|
function parseCommandLine() {
|
|
95
98
|
const parsed = _yargs(process.argv.slice(2), {
|
|
96
99
|
configuration: {
|
|
97
|
-
"camel-case-expansion":
|
|
100
|
+
"camel-case-expansion": false,
|
|
98
101
|
"strip-aliased": true,
|
|
99
102
|
"strip-dashed": true
|
|
100
103
|
},
|
|
101
104
|
alias: {
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
105
|
+
"force-esm": ["e"],
|
|
106
|
+
"verbose": ["v"],
|
|
107
|
+
"quiet": ["q"],
|
|
108
|
+
"colors": ["c"],
|
|
109
|
+
"file": ["f"],
|
|
110
|
+
"list": ["l"],
|
|
111
|
+
"help": ["h"]
|
|
108
112
|
},
|
|
109
113
|
string: ["file"],
|
|
110
|
-
boolean: ["help", "colors", "list"],
|
|
114
|
+
boolean: ["help", "colors", "list", "force-esm"],
|
|
111
115
|
count: ["verbose", "quiet"]
|
|
112
116
|
});
|
|
113
117
|
const tasks = [];
|
|
114
118
|
let verbosity = 0;
|
|
115
119
|
let colors = void 0;
|
|
116
120
|
let file = void 0;
|
|
121
|
+
let forceEsm = false;
|
|
117
122
|
let listOnly = false;
|
|
118
123
|
let help = false;
|
|
119
124
|
for (const key in parsed) {
|
|
@@ -130,6 +135,9 @@ function parseCommandLine() {
|
|
|
130
135
|
case "file":
|
|
131
136
|
file = parsed[key];
|
|
132
137
|
break;
|
|
138
|
+
case "force-esm":
|
|
139
|
+
forceEsm = !!parsed[key];
|
|
140
|
+
break;
|
|
133
141
|
case "colors":
|
|
134
142
|
colors = !!parsed[key];
|
|
135
143
|
break;
|
|
@@ -150,12 +158,13 @@ function parseCommandLine() {
|
|
|
150
158
|
plugjs [--options] [... tasks]
|
|
151
159
|
|
|
152
160
|
Options:
|
|
153
|
-
-v --verbose
|
|
154
|
-
-q --quiet
|
|
155
|
-
-c --colors
|
|
156
|
-
-
|
|
157
|
-
-
|
|
158
|
-
-
|
|
161
|
+
-v --verbose Increase logging verbosity
|
|
162
|
+
-q --quiet Decrease logging verbosity
|
|
163
|
+
-c --colors Force colorful output (use "--no-colors" to force plain text)
|
|
164
|
+
-e --force-esm Force our TypeScript loader to interpret ".ts" files as ESM
|
|
165
|
+
-f --file Specify the build file to use (default "./build.[ts/js/...]")
|
|
166
|
+
-l --list Only list the tasks defined by the build, nothing more!
|
|
167
|
+
-h --help Help! You're reading it now!
|
|
159
168
|
|
|
160
169
|
Tasks:
|
|
161
170
|
Any other argument will be treated as a task name. If no task names are
|
|
@@ -197,7 +206,7 @@ function parseCommandLine() {
|
|
|
197
206
|
console.log(`Unable to find build file "./build.[${exts.join("|")}]`);
|
|
198
207
|
process.exit(1);
|
|
199
208
|
}
|
|
200
|
-
return { buildFile, tasks, listOnly };
|
|
209
|
+
return { buildFile, tasks, forceEsm, listOnly };
|
|
201
210
|
}
|
|
202
211
|
function isFile(path) {
|
|
203
212
|
try {
|
|
@@ -211,4 +220,4 @@ export {
|
|
|
211
220
|
isBuildFailure,
|
|
212
221
|
parseCommandLine
|
|
213
222
|
};
|
|
214
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
223
|
+
//# sourceMappingURL=data:application/json;base64,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
|
package/extra/ts-loader.mjs
CHANGED
|
@@ -6,12 +6,12 @@ import _url from "node:url";
|
|
|
6
6
|
const CJS = "commonjs";
|
|
7
7
|
const ESM = "module";
|
|
8
8
|
const _debug = process.env.DEBUG_TS_LOADER === "true";
|
|
9
|
-
function _log(type, ...args) {
|
|
9
|
+
function _log(type, arg, ...args) {
|
|
10
10
|
if (!_debug)
|
|
11
11
|
return;
|
|
12
12
|
const t = type === "module" ? "esm" : type === "commonjs" ? "cjs" : "---";
|
|
13
13
|
const prefix = `[ts-loader|${t}|pid=${process.pid}]`;
|
|
14
|
-
console.log(prefix, ...args);
|
|
14
|
+
console.log(prefix, arg, ...args);
|
|
15
15
|
}
|
|
16
16
|
function _throw(type, message, options = {}) {
|
|
17
17
|
const t = type === "module" ? "esm" : type === "commonjs" ? "cjs" : "---";
|
|
@@ -23,6 +23,13 @@ function _throw(type, message, options = {}) {
|
|
|
23
23
|
throw error;
|
|
24
24
|
}
|
|
25
25
|
const _moduleFormatCache = /* @__PURE__ */ new Map();
|
|
26
|
+
if (process.env.__TS_LOADER_FORCE_ESM) {
|
|
27
|
+
const dir = process.env.__TS_LOADER_FORCE_ESM;
|
|
28
|
+
_log(null, `Forcing ".ts" files from "${dir}" to be interpreted as ESM modules`);
|
|
29
|
+
_moduleFormatCache.set(dir, "module");
|
|
30
|
+
}
|
|
31
|
+
if (_debug)
|
|
32
|
+
process.on("exit", () => _log(null, "Format cache", _moduleFormatCache));
|
|
26
33
|
function _moduleFormat(directory) {
|
|
27
34
|
const type = _moduleFormatCache.get(directory);
|
|
28
35
|
if (type)
|
|
@@ -211,4 +218,4 @@ export {
|
|
|
211
218
|
load,
|
|
212
219
|
resolve
|
|
213
220
|
};
|
|
214
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
221
|
+
//# sourceMappingURL=data:application/json;base64,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
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@plugjs/plug",
|
|
3
|
-
"version": "0.0.
|
|
4
|
-
"type": "
|
|
3
|
+
"version": "0.0.5",
|
|
4
|
+
"type": "commonjs",
|
|
5
5
|
"main": "./dist/index.cjs",
|
|
6
6
|
"module": "./dist/index.mjs",
|
|
7
7
|
"types": "./types/index.d.ts",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
},
|
|
23
23
|
"scripts": {
|
|
24
24
|
"bootstrap": "./bootstrap.sh",
|
|
25
|
-
"build": "node ./extra/cli.mjs",
|
|
25
|
+
"build": "node ./extra/cli.mjs --force-esm",
|
|
26
26
|
"dev": "npx nodemon -e .ts -w ./test -w ./src -x ./runme.sh"
|
|
27
27
|
},
|
|
28
28
|
"author": "",
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"@babel/types": "^7.18.10",
|
|
33
33
|
"@plugjs/cov8-html": "^0.0.1",
|
|
34
34
|
"diff": "^5.1.0",
|
|
35
|
-
"esbuild": "^0.15.
|
|
35
|
+
"esbuild": "^0.15.5",
|
|
36
36
|
"eslint": "^8.22.0",
|
|
37
37
|
"mocha": "^10.0.0",
|
|
38
38
|
"picomatch": "^2.3.1",
|
package/src/files.ts
CHANGED
|
@@ -1,17 +1,34 @@
|
|
|
1
1
|
import { inspect } from 'node:util'
|
|
2
|
-
import {
|
|
2
|
+
import { assert } from './assert.js'
|
|
3
|
+
import { AbsolutePath, assertRelativeChildPath, getAbsoluteParent, isFile, resolveAbsolutePath } from './paths.js'
|
|
3
4
|
import { mkdir, writeFile } from './utils/asyncfs.js'
|
|
4
5
|
|
|
5
6
|
/** The {@link FilesBuilder} interface defines a builder for {@link Files}. */
|
|
6
7
|
export interface FilesBuilder {
|
|
7
8
|
/** The (resolved) directory the {@link Files} will be associated with */
|
|
8
9
|
readonly directory: AbsolutePath
|
|
9
|
-
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Push files into the {@link Files} instance being built **checking for
|
|
13
|
+
* their existance on disk**.
|
|
14
|
+
*
|
|
15
|
+
* This _will_ be slow, use {@link FilesBuilder.unchecked} when absolutely
|
|
16
|
+
* sure the file already exist.
|
|
17
|
+
*/
|
|
10
18
|
add(...files: string[]): this
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Push files into the {@link Files} instance being built without checking
|
|
22
|
+
* they exist on disk _(use with care!)_.
|
|
23
|
+
*/
|
|
24
|
+
unchecked(...files: string[]): this
|
|
25
|
+
|
|
11
26
|
/** Merge orther {@link Files} instance to the {@link Files} being built */
|
|
12
27
|
merge(...files: Files[]): this
|
|
28
|
+
|
|
13
29
|
/** Write a file and add it to the {@link Files} instance being built */
|
|
14
30
|
write(file: string, content: string | Buffer): Promise<AbsolutePath>
|
|
31
|
+
|
|
15
32
|
/** Build and return a {@link Files} instance */
|
|
16
33
|
build(): Files
|
|
17
34
|
}
|
|
@@ -83,6 +100,21 @@ export class Files {
|
|
|
83
100
|
add(...files: string[]): FilesBuilder {
|
|
84
101
|
if (built) throw new Error('FileBuilder "build()" already called')
|
|
85
102
|
|
|
103
|
+
if (typeof files === 'string') files = [ files ]
|
|
104
|
+
for (const file of files) {
|
|
105
|
+
const relative = assertRelativeChildPath(instance.directory, file)
|
|
106
|
+
const resolved = resolveAbsolutePath(instance.directory, file)
|
|
107
|
+
|
|
108
|
+
assert(isFile(resolved), `File "${resolved}" does not exist`)
|
|
109
|
+
set.add(relative)
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
return this
|
|
113
|
+
},
|
|
114
|
+
|
|
115
|
+
unchecked(...files: string[]): FilesBuilder {
|
|
116
|
+
if (built) throw new Error('FileBuilder "build()" already called')
|
|
117
|
+
|
|
86
118
|
if (typeof files === 'string') files = [ files ]
|
|
87
119
|
for (const file of files) {
|
|
88
120
|
const relative = assertRelativeChildPath(instance.directory, file)
|
|
@@ -97,7 +129,7 @@ export class Files {
|
|
|
97
129
|
|
|
98
130
|
for (const files of args) {
|
|
99
131
|
for (const file of files.absolutePaths()) {
|
|
100
|
-
this.
|
|
132
|
+
this.unchecked(file)
|
|
101
133
|
}
|
|
102
134
|
}
|
|
103
135
|
|
|
@@ -111,7 +143,7 @@ export class Files {
|
|
|
111
143
|
|
|
112
144
|
await mkdir(directory, { recursive: true })
|
|
113
145
|
await writeFile(absolute, content)
|
|
114
|
-
this.
|
|
146
|
+
this.unchecked(absolute)
|
|
115
147
|
|
|
116
148
|
return absolute
|
|
117
149
|
},
|
package/src/fork.ts
CHANGED
|
@@ -128,7 +128,7 @@ export abstract class ForkingPlug implements Plug<Files | undefined> {
|
|
|
128
128
|
|
|
129
129
|
child.on('error', (error) => {
|
|
130
130
|
run.log.error('Child process error', error)
|
|
131
|
-
return done
|
|
131
|
+
return done || reject(failure())
|
|
132
132
|
})
|
|
133
133
|
|
|
134
134
|
child.on('message', (message: ForkResult) => {
|
|
@@ -139,21 +139,21 @@ export abstract class ForkingPlug implements Plug<Files | undefined> {
|
|
|
139
139
|
child.on('exit', (code, signal) => {
|
|
140
140
|
if (signal) {
|
|
141
141
|
run.log.error(`Child process exited with signal ${signal}`, $gry(`(pid=${child.pid})`))
|
|
142
|
-
return done
|
|
142
|
+
return done || reject(failure())
|
|
143
143
|
} else if (code !== 0) {
|
|
144
144
|
run.log.error(`Child process exited with code ${code}`, $gry(`(pid=${child.pid})`))
|
|
145
|
-
return done
|
|
145
|
+
return done || reject(failure())
|
|
146
146
|
} else if (! result) {
|
|
147
147
|
run.log.error('Child process exited with no result', $gry(`(pid=${child.pid})`))
|
|
148
|
-
return done
|
|
148
|
+
return done || reject(failure())
|
|
149
149
|
} else if (result.failed) {
|
|
150
150
|
// definitely logged on the child side
|
|
151
|
-
return done
|
|
151
|
+
return done || reject(failure())
|
|
152
152
|
}
|
|
153
153
|
|
|
154
154
|
/* We definitely have a successful result! */
|
|
155
|
-
return resolve(message.filesDir && message.filesList ?
|
|
156
|
-
run.files(message.filesDir).
|
|
155
|
+
return done || resolve(message.filesDir && message.filesList ?
|
|
156
|
+
run.files(message.filesDir).unchecked(...message.filesList).build() :
|
|
157
157
|
undefined)
|
|
158
158
|
})
|
|
159
159
|
|
|
@@ -233,7 +233,7 @@ if ((process.argv[1] === requireFilename(__fileurl)) && (process.send)) {
|
|
|
233
233
|
|
|
234
234
|
/* Create the Plug instance and our Files instance */
|
|
235
235
|
const plug = new Ctor(...constructorArgs) as Plug<Files | undefined>
|
|
236
|
-
const files = run.files(filesDir).
|
|
236
|
+
const files = run.files(filesDir).unchecked(...filesList).build()
|
|
237
237
|
|
|
238
238
|
/* Run and return the result */
|
|
239
239
|
return plug.pipe(files, run)
|
package/src/helpers.ts
CHANGED
|
@@ -27,7 +27,7 @@ export async function rmrf(directory: string): Promise<void> {
|
|
|
27
27
|
return
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
-
log.
|
|
30
|
+
log.notice('Removing directory', $p(dir), 'recursively')
|
|
31
31
|
await rm(dir, { recursive: true })
|
|
32
32
|
}
|
|
33
33
|
|
|
@@ -46,8 +46,8 @@ export function setLogLevel(level: LogLevelString): void {
|
|
|
46
46
|
* Resolve a path into an {@link AbsolutePath}.
|
|
47
47
|
*
|
|
48
48
|
* If the path starts with `@...` it is considered to be relative to the
|
|
49
|
-
*
|
|
50
|
-
*
|
|
49
|
+
* _directory containing the build file where the task was defined_, otherwise
|
|
50
|
+
* it will be relative to the {@link process.cwd | current working directory}.
|
|
51
51
|
*/
|
|
52
52
|
export function resolve(...paths: string[]): AbsolutePath {
|
|
53
53
|
const run = currentRun()
|
|
@@ -60,7 +60,7 @@ export function resolve(...paths: string[]): AbsolutePath {
|
|
|
60
60
|
* Create a new {@link Files} instance.
|
|
61
61
|
*/
|
|
62
62
|
export function files(files: Files): FilesBuilder
|
|
63
|
-
export function files(...paths: string[]): FilesBuilder
|
|
63
|
+
export function files(directory: string, ...paths: string[]): FilesBuilder
|
|
64
64
|
export function files(first: Files | string | undefined, ...paths: string[]): FilesBuilder {
|
|
65
65
|
const run = currentRun()
|
|
66
66
|
assert(run, 'Unable to create files builder outside a running task')
|
|
@@ -114,32 +114,3 @@ export function pipe(files: Files | Promise<Files>): Pipe & Promise<Files> {
|
|
|
114
114
|
assert(run, 'Unable to create pipes outside a running task')
|
|
115
115
|
return run.pipe(files)
|
|
116
116
|
}
|
|
117
|
-
|
|
118
|
-
/** Await for the settlement of all the promises, then return their results. */
|
|
119
|
-
export async function parallel<P extends readonly any[]>(promises: P): Promise<ParallelResult<P>> {
|
|
120
|
-
const settlements = await Promise.allSettled(promises)
|
|
121
|
-
const results: any[] = []
|
|
122
|
-
|
|
123
|
-
let errors = 0
|
|
124
|
-
for (const settlement of settlements) {
|
|
125
|
-
if (settlement.status === 'fulfilled') {
|
|
126
|
-
results.push(settlement.value)
|
|
127
|
-
continue
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
log.error(settlement.reason)
|
|
131
|
-
errors ++
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
assert(! errors, `Parallel execution failed for ${errors} tasks`)
|
|
135
|
-
return results as ParallelResult<P>
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
type ParallelResult<T extends readonly any[]> =
|
|
139
|
-
T extends readonly [ infer First, ...infer Rest ] ?
|
|
140
|
-
[ Awaited<First>, ...ParallelResult<Rest> ] :
|
|
141
|
-
T extends readonly [ infer Only ] ?
|
|
142
|
-
[ Awaited<Only> ] :
|
|
143
|
-
T extends readonly [] ?
|
|
144
|
-
[] :
|
|
145
|
-
never
|
package/src/paths.ts
CHANGED
|
@@ -75,6 +75,7 @@ export function getCurrentWorkingDirectory(): AbsolutePath {
|
|
|
75
75
|
return cwd
|
|
76
76
|
}
|
|
77
77
|
|
|
78
|
+
|
|
78
79
|
/* ========================================================================== *
|
|
79
80
|
* MODULE RESOLUTION FUNCTIONS *
|
|
80
81
|
* ========================================================================== */
|
package/src/plugs/copy.ts
CHANGED
package/src/plugs/debug.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Files } from '../files.js'
|
|
2
|
-
import { $gry, $p, $und
|
|
2
|
+
import { $gry, $p, $und } from '../log.js'
|
|
3
3
|
import { install, Plug } from '../pipe.js'
|
|
4
4
|
import { Run } from '../run.js'
|
|
5
5
|
|
|
@@ -8,14 +8,14 @@ export class Debug implements Plug<Files> {
|
|
|
8
8
|
constructor() {}
|
|
9
9
|
|
|
10
10
|
async pipe(files: Files, run: Run): Promise<Files> {
|
|
11
|
-
log.notice('Debugging', files.length, 'files')
|
|
12
|
-
log.notice('- base dir:', $p(run.resolve('@')))
|
|
13
|
-
log.notice('- build file dir:', $p(run.resolve('.')))
|
|
14
|
-
log.notice('- files dir:', $p(files.directory))
|
|
11
|
+
run.log.notice('Debugging', files.length, 'files')
|
|
12
|
+
run.log.notice('- base dir:', $p(run.resolve('@')))
|
|
13
|
+
run.log.notice('- build file dir:', $p(run.resolve('.')))
|
|
14
|
+
run.log.notice('- files dir:', $p(files.directory))
|
|
15
15
|
if (files.length) {
|
|
16
16
|
const [ path, ...paths ] = files
|
|
17
|
-
log.notice('- relative paths:', $und($gry(path)))
|
|
18
|
-
for (const p of paths) log.notice('- :', $und($gry(p)))
|
|
17
|
+
run.log.notice('- relative paths:', $und($gry(path)))
|
|
18
|
+
for (const p of paths) run.log.notice('- :', $und($gry(p)))
|
|
19
19
|
}
|
|
20
20
|
return files
|
|
21
21
|
}
|
package/src/plugs/esbuild.ts
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
import { build, BuildFailure, BuildOptions, BuildResult, Message, Metafile } from 'esbuild'
|
|
1
|
+
import { build, BuildFailure, BuildOptions, BuildResult, Format, Message, Metafile } from 'esbuild'
|
|
2
|
+
import { basename } from 'node:path'
|
|
2
3
|
import { assert } from '../assert.js'
|
|
3
4
|
import { Files, FilesBuilder } from '../files.js'
|
|
4
|
-
import { $p, ERROR, ReportLevel, ReportRecord, WARN } from '../log.js'
|
|
5
|
-
import { AbsolutePath, resolveAbsolutePath } from '../paths.js'
|
|
5
|
+
import { $p, ERROR, Logger, ReportLevel, ReportRecord, WARN } from '../log.js'
|
|
6
|
+
import { AbsolutePath, getAbsoluteParent, resolveAbsolutePath } from '../paths.js'
|
|
6
7
|
import { install, Plug } from '../pipe.js'
|
|
7
8
|
import { Run } from '../run.js'
|
|
9
|
+
import { readFile } from '../utils/asyncfs.js'
|
|
8
10
|
|
|
9
11
|
export type ESBuildOptions = Omit<BuildOptions, 'absWorkingDir' | 'entryPoints' | 'watch'>
|
|
10
12
|
|
|
@@ -20,20 +22,23 @@ export class ESBuild implements Plug<Files> {
|
|
|
20
22
|
const absWorkingDir = files.directory
|
|
21
23
|
|
|
22
24
|
const options: BuildOptions = {
|
|
23
|
-
/*
|
|
25
|
+
/* Default our platform/target to NodeJS, current major version */
|
|
24
26
|
platform: 'node',
|
|
25
|
-
target: `node${process.versions['node']}`,
|
|
26
|
-
format: 'cjs',
|
|
27
|
-
outbase: absWorkingDir,
|
|
27
|
+
target: `node${process.versions['node'].split('.')[0]}`,
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
/* The default format (if not specified in options) is from package.json */
|
|
30
|
+
format: this._options.format || await _moduleFormat(files.directory, run.log),
|
|
31
|
+
|
|
32
|
+
/* Output bese directory */
|
|
33
|
+
outbase: absWorkingDir,
|
|
30
34
|
|
|
31
|
-
/*
|
|
35
|
+
/* Merge in the caller's options */
|
|
32
36
|
...this._options,
|
|
33
37
|
|
|
34
38
|
/* Always override */
|
|
35
39
|
absWorkingDir,
|
|
36
40
|
entryPoints,
|
|
41
|
+
logLevel: 'silent',
|
|
37
42
|
watch: false,
|
|
38
43
|
}
|
|
39
44
|
|
|
@@ -81,7 +86,7 @@ export class ESBuild implements Plug<Files> {
|
|
|
81
86
|
assert(esbuild, 'ESBuild did not produce any result')
|
|
82
87
|
|
|
83
88
|
for (const file in esbuild.metafile.outputs) {
|
|
84
|
-
builder.
|
|
89
|
+
builder.unchecked(resolveAbsolutePath(absWorkingDir, file))
|
|
85
90
|
}
|
|
86
91
|
|
|
87
92
|
const result = builder.build()
|
|
@@ -126,3 +131,57 @@ declare module '../pipe.js' {
|
|
|
126
131
|
export * from './esbuild/bundle-locals.js'
|
|
127
132
|
export * from './esbuild/check-dependencies.js'
|
|
128
133
|
export * from './esbuild/fix-extensions.js'
|
|
134
|
+
|
|
135
|
+
/* ========================================================================== *
|
|
136
|
+
* DEFAULT MODULE FORMAT FROM PACKAGE.JSON *
|
|
137
|
+
* ========================================================================== */
|
|
138
|
+
|
|
139
|
+
/** Cache for directory to module format as discovered in "package.json" */
|
|
140
|
+
const _moduleFormatCache = new Map<AbsolutePath, Format>()
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* Figures out the _default_ module type for a directory, looking into the
|
|
144
|
+
* `package.json`'s `type` field (either `commonjs` or `module`)
|
|
145
|
+
*/
|
|
146
|
+
async function _moduleFormat(directory: AbsolutePath, log: Logger): Promise<Format> {
|
|
147
|
+
/* Before doing anything else, check our cache */
|
|
148
|
+
const type = _moduleFormatCache.get(directory)
|
|
149
|
+
if (type) return type
|
|
150
|
+
|
|
151
|
+
/* Try to read the "package.json" file from this directory */
|
|
152
|
+
const file = resolveAbsolutePath(directory, 'package.json')
|
|
153
|
+
|
|
154
|
+
try {
|
|
155
|
+
const json = await readFile(file, 'utf-8')
|
|
156
|
+
const data = JSON.parse(json)
|
|
157
|
+
|
|
158
|
+
/* Be liberal in what you accept? Default to CommonJS if none found */
|
|
159
|
+
const type = data.type === 'module' ? 'esm' : 'cjs'
|
|
160
|
+
log.debug(`File "${file}" defines module type as "${data.type}" (${type})`)
|
|
161
|
+
_moduleFormatCache.set(directory, type)
|
|
162
|
+
return type
|
|
163
|
+
} catch (cause: any) {
|
|
164
|
+
/* We _accept_ a couple of errors, file not found, or file is directory */
|
|
165
|
+
if ((cause.code !== 'ENOENT') && (cause.code !== 'EISDIR')) throw cause
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
/*
|
|
169
|
+
* We couldn't find "package.json" in this directory, go up if we can!
|
|
170
|
+
*
|
|
171
|
+
* That said, if we are at a directory called "node_modules" we stop here,
|
|
172
|
+
* as we don't want to inherit the default type from an _importing_ package,
|
|
173
|
+
* into the _imported_ one...
|
|
174
|
+
*/
|
|
175
|
+
const name = basename(directory)
|
|
176
|
+
const parent = getAbsoluteParent(directory)
|
|
177
|
+
|
|
178
|
+
if ((name === 'node_modules') || (parent === directory)) {
|
|
179
|
+
_moduleFormatCache.set(directory, 'cjs') // default
|
|
180
|
+
return 'cjs'
|
|
181
|
+
} else {
|
|
182
|
+
/* We also cache back, on the way up */
|
|
183
|
+
const type = await _moduleFormat(parent, log)
|
|
184
|
+
_moduleFormatCache.set(directory, type)
|
|
185
|
+
return type
|
|
186
|
+
}
|
|
187
|
+
}
|