@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
package/dist/build.mjs
ADDED
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
// build.ts
|
|
2
|
+
import { assert, fail, failure } from "./assert.mjs";
|
|
3
|
+
import { runAsync } from "./async.mjs";
|
|
4
|
+
import { $gry, $ms, $t, logOptions } from "./log.mjs";
|
|
5
|
+
import { getAbsoluteParent } from "./paths.mjs";
|
|
6
|
+
import { PipeImpl } from "./pipe.mjs";
|
|
7
|
+
import { RunImpl } from "./run.mjs";
|
|
8
|
+
import { TaskImpl } from "./task.mjs";
|
|
9
|
+
import { findCaller } from "./utils/caller.mjs";
|
|
10
|
+
var buildMarker = Symbol.for("plugjs:isBuild");
|
|
11
|
+
function isBuild(build2) {
|
|
12
|
+
return build2 && build2[buildMarker] === buildMarker;
|
|
13
|
+
}
|
|
14
|
+
function build(definition) {
|
|
15
|
+
const buildFile = findCaller(build).file;
|
|
16
|
+
const buildDir = getAbsoluteParent(buildFile);
|
|
17
|
+
const tasks = {};
|
|
18
|
+
const context = { buildFile, buildDir, tasks };
|
|
19
|
+
const result = {};
|
|
20
|
+
for (const name in definition) {
|
|
21
|
+
const def = definition[name];
|
|
22
|
+
const task = "task" in def ? def.task : new TaskImpl(context, def);
|
|
23
|
+
const call = async (run) => {
|
|
24
|
+
if (!run)
|
|
25
|
+
run = run = new BuildRun(buildDir, buildFile, tasks);
|
|
26
|
+
assert(run instanceof BuildRun, "Incompatible Run specified");
|
|
27
|
+
run.log.notice("Starting build...");
|
|
28
|
+
const now = Date.now();
|
|
29
|
+
try {
|
|
30
|
+
await run.call(name);
|
|
31
|
+
run.log.notice("Build completed", $ms(Date.now() - now));
|
|
32
|
+
return run;
|
|
33
|
+
} catch (error) {
|
|
34
|
+
const failures = run.failures;
|
|
35
|
+
if (failures.length) {
|
|
36
|
+
const message = `${failures.length === 1 ? "task" : "tasks"}`;
|
|
37
|
+
const names = failures.map((task2) => $t(task2)).join($gry(", "));
|
|
38
|
+
run.log.error(failures.length, message, "failed:", names);
|
|
39
|
+
}
|
|
40
|
+
run.log.error(`Build failed ${$ms(Date.now() - now)}`, error);
|
|
41
|
+
throw failure();
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
Object.defineProperty(call, "name", { enumerable: true, value: name });
|
|
45
|
+
if (name.length > logOptions.taskLength) {
|
|
46
|
+
logOptions.taskLength = name.length;
|
|
47
|
+
}
|
|
48
|
+
result[name] = Object.assign(call, { task });
|
|
49
|
+
tasks[name] = task;
|
|
50
|
+
}
|
|
51
|
+
Object.defineProperty(result, buildMarker, { value: buildMarker });
|
|
52
|
+
return result;
|
|
53
|
+
}
|
|
54
|
+
var BuildRun = class extends RunImpl {
|
|
55
|
+
constructor(buildDir, buildFile, _tasks, _stack = [], _cache = /* @__PURE__ */ new Map(), _failures = /* @__PURE__ */ new Set(), taskName = "") {
|
|
56
|
+
super({ taskName, buildDir, buildFile });
|
|
57
|
+
this._tasks = _tasks;
|
|
58
|
+
this._stack = _stack;
|
|
59
|
+
this._cache = _cache;
|
|
60
|
+
this._failures = _failures;
|
|
61
|
+
}
|
|
62
|
+
get failures() {
|
|
63
|
+
return [...this._failures].sort();
|
|
64
|
+
}
|
|
65
|
+
call(name) {
|
|
66
|
+
const task = this._tasks[name];
|
|
67
|
+
if (!task)
|
|
68
|
+
fail(`Task "${$t(name)}" does not exist`);
|
|
69
|
+
assert(!this._stack.includes(task), `Circular dependency running task "${$t(name)}"`);
|
|
70
|
+
const cached = this._cache.get(task);
|
|
71
|
+
if (cached)
|
|
72
|
+
return cached;
|
|
73
|
+
const childRun = new BuildRun(
|
|
74
|
+
task.context.buildDir,
|
|
75
|
+
task.context.buildFile,
|
|
76
|
+
{ ...task.context.tasks, ...this._tasks },
|
|
77
|
+
[...this._stack, task],
|
|
78
|
+
this._cache,
|
|
79
|
+
this._failures,
|
|
80
|
+
name
|
|
81
|
+
);
|
|
82
|
+
const promise = runAsync(childRun, name, () => childRun._run(name, task));
|
|
83
|
+
this._cache.set(task, promise);
|
|
84
|
+
return promise;
|
|
85
|
+
}
|
|
86
|
+
async _run(name, task) {
|
|
87
|
+
const now = Date.now();
|
|
88
|
+
this.log.notice(`Starting task ${$t(name)}...`);
|
|
89
|
+
const thisBuild = {};
|
|
90
|
+
for (const name2 in this._tasks) {
|
|
91
|
+
thisBuild[name2] = () => {
|
|
92
|
+
return new PipeImpl(this.call(name2), this);
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
try {
|
|
96
|
+
const result = await task.call(thisBuild, this);
|
|
97
|
+
this.log.notice(`Task ${$t(name)} completed`, $ms(Date.now() - now));
|
|
98
|
+
return result;
|
|
99
|
+
} catch (error) {
|
|
100
|
+
this.log.error(`Task ${$t(name)} failed ${$ms(Date.now() - now)}`, error);
|
|
101
|
+
this._failures.add(name);
|
|
102
|
+
throw failure();
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
export {
|
|
107
|
+
build,
|
|
108
|
+
isBuild
|
|
109
|
+
};
|
|
110
|
+
//# sourceMappingURL=build.mjs.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/build.ts"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["build", "task", "name"]
|
|
6
|
+
}
|
package/dist/files.cjs
ADDED
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// files.ts
|
|
21
|
+
var files_exports = {};
|
|
22
|
+
__export(files_exports, {
|
|
23
|
+
Files: () => Files
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(files_exports);
|
|
26
|
+
var import_node_util = require("node:util");
|
|
27
|
+
var import_paths = require("./paths.cjs");
|
|
28
|
+
var import_asyncfs = require("./utils/asyncfs.cjs");
|
|
29
|
+
var Files = class {
|
|
30
|
+
_directory;
|
|
31
|
+
_files;
|
|
32
|
+
constructor(directory) {
|
|
33
|
+
this._directory = directory;
|
|
34
|
+
this._files = [];
|
|
35
|
+
}
|
|
36
|
+
get directory() {
|
|
37
|
+
return this._directory;
|
|
38
|
+
}
|
|
39
|
+
get length() {
|
|
40
|
+
return this._files.length;
|
|
41
|
+
}
|
|
42
|
+
*[Symbol.iterator]() {
|
|
43
|
+
for (const file of this._files)
|
|
44
|
+
yield file;
|
|
45
|
+
}
|
|
46
|
+
*absolutePaths() {
|
|
47
|
+
for (const file of this)
|
|
48
|
+
yield (0, import_paths.resolveAbsolutePath)(this._directory, file);
|
|
49
|
+
}
|
|
50
|
+
*pathMappings() {
|
|
51
|
+
for (const file of this)
|
|
52
|
+
yield [file, (0, import_paths.resolveAbsolutePath)(this._directory, file)];
|
|
53
|
+
}
|
|
54
|
+
[import_node_util.inspect.custom]() {
|
|
55
|
+
const self = this;
|
|
56
|
+
return new class Files {
|
|
57
|
+
directory = self._directory;
|
|
58
|
+
files = [...self._files];
|
|
59
|
+
}();
|
|
60
|
+
}
|
|
61
|
+
static builder(arg) {
|
|
62
|
+
const directory = typeof arg === "string" ? arg : arg.directory;
|
|
63
|
+
const set = typeof arg === "string" ? /* @__PURE__ */ new Set() : new Set(arg._files);
|
|
64
|
+
const instance = new Files(directory);
|
|
65
|
+
let built = false;
|
|
66
|
+
return {
|
|
67
|
+
directory: instance.directory,
|
|
68
|
+
add(...files) {
|
|
69
|
+
if (built)
|
|
70
|
+
throw new Error('FileBuilder "build()" already called');
|
|
71
|
+
if (typeof files === "string")
|
|
72
|
+
files = [files];
|
|
73
|
+
for (const file of files) {
|
|
74
|
+
const relative = (0, import_paths.assertRelativeChildPath)(instance.directory, file);
|
|
75
|
+
set.add(relative);
|
|
76
|
+
}
|
|
77
|
+
return this;
|
|
78
|
+
},
|
|
79
|
+
merge(...args) {
|
|
80
|
+
if (built)
|
|
81
|
+
throw new Error('FileBuilder "build()" already called');
|
|
82
|
+
for (const files of args) {
|
|
83
|
+
for (const file of files.absolutePaths()) {
|
|
84
|
+
this.add(file);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return this;
|
|
88
|
+
},
|
|
89
|
+
async write(file, content) {
|
|
90
|
+
const relative = (0, import_paths.assertRelativeChildPath)(instance.directory, file);
|
|
91
|
+
const absolute = (0, import_paths.resolveAbsolutePath)(instance.directory, relative);
|
|
92
|
+
const directory2 = (0, import_paths.getAbsoluteParent)(absolute);
|
|
93
|
+
await (0, import_asyncfs.mkdir)(directory2, { recursive: true });
|
|
94
|
+
await (0, import_asyncfs.writeFile)(absolute, content);
|
|
95
|
+
this.add(absolute);
|
|
96
|
+
return absolute;
|
|
97
|
+
},
|
|
98
|
+
build() {
|
|
99
|
+
if (built)
|
|
100
|
+
throw new Error('FileBuilder "build()" already called');
|
|
101
|
+
built = true;
|
|
102
|
+
instance._files.push(...set);
|
|
103
|
+
instance._files.sort();
|
|
104
|
+
return instance;
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
110
|
+
0 && (module.exports = {
|
|
111
|
+
Files
|
|
112
|
+
});
|
|
113
|
+
//# sourceMappingURL=files.cjs.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/files.ts"],
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAwB;AACxB,mBAA8F;AAC9F,qBAAiC;AAoB1B,IAAM,QAAN,MAAY;AAAA,EACR;AAAA,EACA;AAAA,EAMT,YAAY,WAAyB;AACnC,SAAK,aAAa;AAClB,SAAK,SAAS,CAAC;AAAA,EACjB;AAAA,EAGA,IAAI,YAA0B;AAC5B,WAAO,KAAK;AAAA,EACd;AAAA,EAGA,IAAI,SAAiB;AACnB,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA,EAGA,EAAG,OAAO,YAA+B;AACvC,eAAW,QAAQ,KAAK;AAAQ,YAAM;AAAA,EACxC;AAAA,EAGA,CAAE,gBAAyC;AACzC,eAAW,QAAQ;AAAM,gBAAM,kCAAoB,KAAK,YAAY,IAAI;AAAA,EAC1E;AAAA,EAGA,CAAE,eAAwE;AACxE,eAAW,QAAQ;AAAM,YAAM,CAAE,UAAM,kCAAoB,KAAK,YAAY,IAAI,CAAE;AAAA,EACpF;AAAA,EAGA,CAAC,yBAAQ,UAAe;AACtB,UAAM,OAAO;AACb,WAAO,IAAI,MAAM,MAAM;AAAA,MACrB,YAAY,KAAK;AAAA,MACjB,QAAQ,CAAE,GAAG,KAAK,MAAO;AAAA,IAC3B;AAAA,EACF;AAAA,EAKA,OAAO,QAAQ,KAAyC;AACtD,UAAM,YAAY,OAAO,QAAQ,WAAW,MAAM,IAAI;AACtD,UAAM,MAAM,OAAO,QAAQ,WAAW,oBAAI,IAAY,IAAI,IAAI,IAAI,IAAI,MAAM;AAE5E,UAAM,WAAW,IAAI,MAAM,SAAS;AACpC,QAAI,QAAQ;AAEZ,WAAO;AAAA,MACL,WAAW,SAAS;AAAA,MAEpB,OAAO,OAA+B;AACpC,YAAI;AAAO,gBAAM,IAAI,MAAM,sCAAsC;AAEjE,YAAI,OAAO,UAAU;AAAU,kBAAQ,CAAE,KAAM;AAC/C,mBAAW,QAAQ,OAAO;AACxB,gBAAM,eAAW,sCAAwB,SAAS,WAAW,IAAI;AACjE,cAAI,IAAI,QAAQ;AAAA,QAClB;AAEA,eAAO;AAAA,MACT;AAAA,MAEA,SAAS,MAA6B;AACpC,YAAI;AAAO,gBAAM,IAAI,MAAM,sCAAsC;AAEjE,mBAAW,SAAS,MAAM;AACxB,qBAAW,QAAQ,MAAM,cAAc,GAAG;AACxC,iBAAK,IAAI,IAAI;AAAA,UACf;AAAA,QACF;AAEA,eAAO;AAAA,MACT;AAAA,MAEA,MAAM,MAAM,MAAc,SAAiD;AACzE,cAAM,eAAW,sCAAwB,SAAS,WAAW,IAAI;AACjE,cAAM,eAAW,kCAAoB,SAAS,WAAW,QAAQ;AACjE,cAAMA,iBAAY,gCAAkB,QAAQ;AAE5C,kBAAM,sBAAMA,YAAW,EAAE,WAAW,KAAK,CAAC;AAC1C,kBAAM,0BAAU,UAAU,OAAO;AACjC,aAAK,IAAI,QAAQ;AAEjB,eAAO;AAAA,MACT;AAAA,MAEA,QAAe;AACb,YAAI;AAAO,gBAAM,IAAI,MAAM,sCAAsC;AAEjE,gBAAQ;AACR,iBAAS,OAAO,KAAK,GAAG,GAAG;AAC3B,iBAAS,OAAO,KAAK;AACrB,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AACF;",
|
|
5
|
+
"names": ["directory"]
|
|
6
|
+
}
|
package/dist/files.mjs
ADDED
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
// files.ts
|
|
2
|
+
import { inspect } from "node:util";
|
|
3
|
+
import { assertRelativeChildPath, getAbsoluteParent, resolveAbsolutePath } from "./paths.mjs";
|
|
4
|
+
import { mkdir, writeFile } from "./utils/asyncfs.mjs";
|
|
5
|
+
var Files = class {
|
|
6
|
+
_directory;
|
|
7
|
+
_files;
|
|
8
|
+
constructor(directory) {
|
|
9
|
+
this._directory = directory;
|
|
10
|
+
this._files = [];
|
|
11
|
+
}
|
|
12
|
+
get directory() {
|
|
13
|
+
return this._directory;
|
|
14
|
+
}
|
|
15
|
+
get length() {
|
|
16
|
+
return this._files.length;
|
|
17
|
+
}
|
|
18
|
+
*[Symbol.iterator]() {
|
|
19
|
+
for (const file of this._files)
|
|
20
|
+
yield file;
|
|
21
|
+
}
|
|
22
|
+
*absolutePaths() {
|
|
23
|
+
for (const file of this)
|
|
24
|
+
yield resolveAbsolutePath(this._directory, file);
|
|
25
|
+
}
|
|
26
|
+
*pathMappings() {
|
|
27
|
+
for (const file of this)
|
|
28
|
+
yield [file, resolveAbsolutePath(this._directory, file)];
|
|
29
|
+
}
|
|
30
|
+
[inspect.custom]() {
|
|
31
|
+
const self = this;
|
|
32
|
+
return new class Files {
|
|
33
|
+
directory = self._directory;
|
|
34
|
+
files = [...self._files];
|
|
35
|
+
}();
|
|
36
|
+
}
|
|
37
|
+
static builder(arg) {
|
|
38
|
+
const directory = typeof arg === "string" ? arg : arg.directory;
|
|
39
|
+
const set = typeof arg === "string" ? /* @__PURE__ */ new Set() : new Set(arg._files);
|
|
40
|
+
const instance = new Files(directory);
|
|
41
|
+
let built = false;
|
|
42
|
+
return {
|
|
43
|
+
directory: instance.directory,
|
|
44
|
+
add(...files) {
|
|
45
|
+
if (built)
|
|
46
|
+
throw new Error('FileBuilder "build()" already called');
|
|
47
|
+
if (typeof files === "string")
|
|
48
|
+
files = [files];
|
|
49
|
+
for (const file of files) {
|
|
50
|
+
const relative = assertRelativeChildPath(instance.directory, file);
|
|
51
|
+
set.add(relative);
|
|
52
|
+
}
|
|
53
|
+
return this;
|
|
54
|
+
},
|
|
55
|
+
merge(...args) {
|
|
56
|
+
if (built)
|
|
57
|
+
throw new Error('FileBuilder "build()" already called');
|
|
58
|
+
for (const files of args) {
|
|
59
|
+
for (const file of files.absolutePaths()) {
|
|
60
|
+
this.add(file);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return this;
|
|
64
|
+
},
|
|
65
|
+
async write(file, content) {
|
|
66
|
+
const relative = assertRelativeChildPath(instance.directory, file);
|
|
67
|
+
const absolute = resolveAbsolutePath(instance.directory, relative);
|
|
68
|
+
const directory2 = getAbsoluteParent(absolute);
|
|
69
|
+
await mkdir(directory2, { recursive: true });
|
|
70
|
+
await writeFile(absolute, content);
|
|
71
|
+
this.add(absolute);
|
|
72
|
+
return absolute;
|
|
73
|
+
},
|
|
74
|
+
build() {
|
|
75
|
+
if (built)
|
|
76
|
+
throw new Error('FileBuilder "build()" already called');
|
|
77
|
+
built = true;
|
|
78
|
+
instance._files.push(...set);
|
|
79
|
+
instance._files.sort();
|
|
80
|
+
return instance;
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
export {
|
|
86
|
+
Files
|
|
87
|
+
};
|
|
88
|
+
//# sourceMappingURL=files.mjs.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/files.ts"],
|
|
4
|
+
"mappings": ";AAAA,SAAS,eAAe;AACxB,SAAuB,yBAAyB,mBAAmB,2BAA2B;AAC9F,SAAS,OAAO,iBAAiB;AAoB1B,IAAM,QAAN,MAAY;AAAA,EACR;AAAA,EACA;AAAA,EAMT,YAAY,WAAyB;AACnC,SAAK,aAAa;AAClB,SAAK,SAAS,CAAC;AAAA,EACjB;AAAA,EAGA,IAAI,YAA0B;AAC5B,WAAO,KAAK;AAAA,EACd;AAAA,EAGA,IAAI,SAAiB;AACnB,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA,EAGA,EAAG,OAAO,YAA+B;AACvC,eAAW,QAAQ,KAAK;AAAQ,YAAM;AAAA,EACxC;AAAA,EAGA,CAAE,gBAAyC;AACzC,eAAW,QAAQ;AAAM,YAAM,oBAAoB,KAAK,YAAY,IAAI;AAAA,EAC1E;AAAA,EAGA,CAAE,eAAwE;AACxE,eAAW,QAAQ;AAAM,YAAM,CAAE,MAAM,oBAAoB,KAAK,YAAY,IAAI,CAAE;AAAA,EACpF;AAAA,EAGA,CAAC,QAAQ,UAAe;AACtB,UAAM,OAAO;AACb,WAAO,IAAI,MAAM,MAAM;AAAA,MACrB,YAAY,KAAK;AAAA,MACjB,QAAQ,CAAE,GAAG,KAAK,MAAO;AAAA,IAC3B;AAAA,EACF;AAAA,EAKA,OAAO,QAAQ,KAAyC;AACtD,UAAM,YAAY,OAAO,QAAQ,WAAW,MAAM,IAAI;AACtD,UAAM,MAAM,OAAO,QAAQ,WAAW,oBAAI,IAAY,IAAI,IAAI,IAAI,IAAI,MAAM;AAE5E,UAAM,WAAW,IAAI,MAAM,SAAS;AACpC,QAAI,QAAQ;AAEZ,WAAO;AAAA,MACL,WAAW,SAAS;AAAA,MAEpB,OAAO,OAA+B;AACpC,YAAI;AAAO,gBAAM,IAAI,MAAM,sCAAsC;AAEjE,YAAI,OAAO,UAAU;AAAU,kBAAQ,CAAE,KAAM;AAC/C,mBAAW,QAAQ,OAAO;AACxB,gBAAM,WAAW,wBAAwB,SAAS,WAAW,IAAI;AACjE,cAAI,IAAI,QAAQ;AAAA,QAClB;AAEA,eAAO;AAAA,MACT;AAAA,MAEA,SAAS,MAA6B;AACpC,YAAI;AAAO,gBAAM,IAAI,MAAM,sCAAsC;AAEjE,mBAAW,SAAS,MAAM;AACxB,qBAAW,QAAQ,MAAM,cAAc,GAAG;AACxC,iBAAK,IAAI,IAAI;AAAA,UACf;AAAA,QACF;AAEA,eAAO;AAAA,MACT;AAAA,MAEA,MAAM,MAAM,MAAc,SAAiD;AACzE,cAAM,WAAW,wBAAwB,SAAS,WAAW,IAAI;AACjE,cAAM,WAAW,oBAAoB,SAAS,WAAW,QAAQ;AACjE,cAAMA,aAAY,kBAAkB,QAAQ;AAE5C,cAAM,MAAMA,YAAW,EAAE,WAAW,KAAK,CAAC;AAC1C,cAAM,UAAU,UAAU,OAAO;AACjC,aAAK,IAAI,QAAQ;AAEjB,eAAO;AAAA,MACT;AAAA,MAEA,QAAe;AACb,YAAI;AAAO,gBAAM,IAAI,MAAM,sCAAsC;AAEjE,gBAAQ;AACR,iBAAS,OAAO,KAAK,GAAG,GAAG;AAC3B,iBAAS,OAAO,KAAK;AACrB,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AACF;",
|
|
5
|
+
"names": ["directory"]
|
|
6
|
+
}
|
package/dist/fork.cjs
ADDED
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// fork.ts
|
|
21
|
+
var fork_exports = {};
|
|
22
|
+
__export(fork_exports, {
|
|
23
|
+
ForkingPlug: () => ForkingPlug,
|
|
24
|
+
installForking: () => installForking
|
|
25
|
+
});
|
|
26
|
+
module.exports = __toCommonJS(fork_exports);
|
|
27
|
+
var import_node_child_process = require("node:child_process");
|
|
28
|
+
var import_assert = require("./assert.cjs");
|
|
29
|
+
var import_async = require("./async.cjs");
|
|
30
|
+
var import_log = require("./log.cjs");
|
|
31
|
+
var import_paths = require("./paths.cjs");
|
|
32
|
+
var import_pipe = require("./pipe.cjs");
|
|
33
|
+
var import_run = require("./run.cjs");
|
|
34
|
+
function installForking(plugName, scriptFile) {
|
|
35
|
+
const ctor = class extends ForkingPlug {
|
|
36
|
+
constructor(...args) {
|
|
37
|
+
super(scriptFile, args);
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
(0, import_pipe.install)(plugName, ctor);
|
|
41
|
+
}
|
|
42
|
+
var ForkingPlug = class {
|
|
43
|
+
constructor(_scriptFile, _arguments) {
|
|
44
|
+
this._scriptFile = _scriptFile;
|
|
45
|
+
this._arguments = _arguments;
|
|
46
|
+
}
|
|
47
|
+
pipe(files, run) {
|
|
48
|
+
const message = {
|
|
49
|
+
scriptFile: this._scriptFile,
|
|
50
|
+
constructorArgs: this._arguments,
|
|
51
|
+
taskName: run.taskName,
|
|
52
|
+
buildFile: run.buildFile,
|
|
53
|
+
buildDir: run.buildDir,
|
|
54
|
+
filesDir: files.directory,
|
|
55
|
+
filesList: [...files.absolutePaths()],
|
|
56
|
+
logOpts: import_log.logOptions.fork(run.taskName)
|
|
57
|
+
};
|
|
58
|
+
const script = (0, import_paths.requireFilename)(__filename);
|
|
59
|
+
run.log.debug("About to fork plug from", (0, import_log.$p)(script));
|
|
60
|
+
const env = { ...process.env };
|
|
61
|
+
for (let i = this._arguments.length - 1; i >= 0; i--) {
|
|
62
|
+
if (this._arguments[i] == null)
|
|
63
|
+
continue;
|
|
64
|
+
if (typeof this._arguments[i] === "object") {
|
|
65
|
+
if (typeof this._arguments[i].coverageDir === "string") {
|
|
66
|
+
const dir = env.NODE_V8_COVERAGE = run.resolve(this._arguments[i].coverageDir);
|
|
67
|
+
run.log.debug("Forked process will produce coverage in", (0, import_log.$p)(dir));
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
const child = (0, import_node_child_process.fork)(script, {
|
|
72
|
+
stdio: ["ignore", "inherit", "inherit", "ipc"],
|
|
73
|
+
env
|
|
74
|
+
});
|
|
75
|
+
run.log.info("Running", (0, import_log.$p)(script), (0, import_log.$gry)(`(pid=${child.pid})`));
|
|
76
|
+
let done = false;
|
|
77
|
+
return new Promise((resolve, reject) => {
|
|
78
|
+
let result = void 0;
|
|
79
|
+
child.on("error", (error) => {
|
|
80
|
+
run.log.error("Child process error", error);
|
|
81
|
+
return done ? reject((0, import_assert.failure)()) : void 0;
|
|
82
|
+
});
|
|
83
|
+
child.on("message", (message2) => {
|
|
84
|
+
run.log.debug("Message from child process", message2);
|
|
85
|
+
result = message2;
|
|
86
|
+
});
|
|
87
|
+
child.on("exit", (code, signal) => {
|
|
88
|
+
if (signal) {
|
|
89
|
+
run.log.error(`Child process exited with signal ${signal}`, (0, import_log.$gry)(`(pid=${child.pid})`));
|
|
90
|
+
return done ? reject((0, import_assert.failure)()) : void 0;
|
|
91
|
+
} else if (code !== 0) {
|
|
92
|
+
run.log.error(`Child process exited with code ${code}`, (0, import_log.$gry)(`(pid=${child.pid})`));
|
|
93
|
+
return done ? reject((0, import_assert.failure)()) : void 0;
|
|
94
|
+
} else if (!result) {
|
|
95
|
+
run.log.error("Child process exited with no result", (0, import_log.$gry)(`(pid=${child.pid})`));
|
|
96
|
+
return done ? reject((0, import_assert.failure)()) : void 0;
|
|
97
|
+
} else if (result.failed) {
|
|
98
|
+
return done ? reject((0, import_assert.failure)()) : void 0;
|
|
99
|
+
}
|
|
100
|
+
return resolve(message.filesDir && message.filesList ? run.files(message.filesDir).add(...message.filesList).build() : void 0);
|
|
101
|
+
});
|
|
102
|
+
try {
|
|
103
|
+
const result2 = child.send(message, (error) => {
|
|
104
|
+
if (error) {
|
|
105
|
+
run.log.error("Error sending message to child process (callback failure)", error);
|
|
106
|
+
reject((0, import_assert.failure)());
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
if (!result2) {
|
|
110
|
+
run.log.error("Error sending message to child process (send returned false)");
|
|
111
|
+
reject((0, import_assert.failure)());
|
|
112
|
+
}
|
|
113
|
+
} catch (error) {
|
|
114
|
+
run.log.error("Error sending message to child process (exception caught)", error);
|
|
115
|
+
reject((0, import_assert.failure)());
|
|
116
|
+
}
|
|
117
|
+
}).finally(() => done = true);
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
if (process.argv[1] === (0, import_paths.requireFilename)(__filename) && process.send) {
|
|
121
|
+
const timeout = setTimeout(() => {
|
|
122
|
+
console.error("Mocha not initialized in 5 seconds");
|
|
123
|
+
process.exit(2);
|
|
124
|
+
}, 5e3);
|
|
125
|
+
process.on("message", (message) => {
|
|
126
|
+
clearTimeout(timeout);
|
|
127
|
+
const {
|
|
128
|
+
scriptFile,
|
|
129
|
+
constructorArgs,
|
|
130
|
+
taskName,
|
|
131
|
+
buildFile,
|
|
132
|
+
buildDir,
|
|
133
|
+
filesDir,
|
|
134
|
+
filesList,
|
|
135
|
+
logOpts
|
|
136
|
+
} = message;
|
|
137
|
+
Object.assign(import_log.logOptions, logOpts);
|
|
138
|
+
const run = new import_run.RunImpl({ buildDir, buildFile, taskName });
|
|
139
|
+
run.log.debug("Message from parent process", message);
|
|
140
|
+
const result = (0, import_async.runAsync)(run, taskName, async () => {
|
|
141
|
+
(0, import_assert.assert)((0, import_paths.isFile)(scriptFile), `Script file ${(0, import_log.$p)(scriptFile)} not found`);
|
|
142
|
+
const script = await import(scriptFile);
|
|
143
|
+
(0, import_assert.assert)(
|
|
144
|
+
typeof script.default === "function",
|
|
145
|
+
`Script ${(0, import_log.$p)(scriptFile)} does not export a default constructor`
|
|
146
|
+
);
|
|
147
|
+
const Ctor = script.default;
|
|
148
|
+
const plug = new Ctor(...constructorArgs);
|
|
149
|
+
const files = run.files(filesDir).add(...filesList).build();
|
|
150
|
+
return plug.pipe(files, run);
|
|
151
|
+
});
|
|
152
|
+
const promise = result.then((result2) => {
|
|
153
|
+
const message2 = result2 ? { failed: false, filesDir: result2.directory, filesList: [...result2.absolutePaths()] } : { failed: false };
|
|
154
|
+
return new Promise((resolve, reject) => {
|
|
155
|
+
process.send(message2, (err) => err ? reject(err) : resolve());
|
|
156
|
+
});
|
|
157
|
+
}, (error) => {
|
|
158
|
+
run.log.error(error);
|
|
159
|
+
return new Promise((resolve, reject) => {
|
|
160
|
+
process.send({ failed: true }, (err) => err ? reject(err) : resolve());
|
|
161
|
+
});
|
|
162
|
+
});
|
|
163
|
+
promise.then(() => {
|
|
164
|
+
run.log.debug("Forked plug exiting");
|
|
165
|
+
process.exit(0);
|
|
166
|
+
}, (error) => {
|
|
167
|
+
run.log.error("Error sending message back to parent process", error);
|
|
168
|
+
process.exit(1);
|
|
169
|
+
});
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
173
|
+
0 && (module.exports = {
|
|
174
|
+
ForkingPlug,
|
|
175
|
+
installForking
|
|
176
|
+
});
|
|
177
|
+
//# sourceMappingURL=fork.cjs.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/fork.ts"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["message", "result"]
|
|
6
|
+
}
|
package/dist/fork.mjs
ADDED
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
// fork.ts
|
|
2
|
+
import { fork } from "node:child_process";
|
|
3
|
+
import { assert, failure } from "./assert.mjs";
|
|
4
|
+
import { runAsync } from "./async.mjs";
|
|
5
|
+
import { $gry, $p, logOptions } from "./log.mjs";
|
|
6
|
+
import { isFile, requireFilename } from "./paths.mjs";
|
|
7
|
+
import { install } from "./pipe.mjs";
|
|
8
|
+
import { RunImpl } from "./run.mjs";
|
|
9
|
+
function installForking(plugName, scriptFile) {
|
|
10
|
+
const ctor = class extends ForkingPlug {
|
|
11
|
+
constructor(...args) {
|
|
12
|
+
super(scriptFile, args);
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
install(plugName, ctor);
|
|
16
|
+
}
|
|
17
|
+
var ForkingPlug = class {
|
|
18
|
+
constructor(_scriptFile, _arguments) {
|
|
19
|
+
this._scriptFile = _scriptFile;
|
|
20
|
+
this._arguments = _arguments;
|
|
21
|
+
}
|
|
22
|
+
pipe(files, run) {
|
|
23
|
+
const message = {
|
|
24
|
+
scriptFile: this._scriptFile,
|
|
25
|
+
constructorArgs: this._arguments,
|
|
26
|
+
taskName: run.taskName,
|
|
27
|
+
buildFile: run.buildFile,
|
|
28
|
+
buildDir: run.buildDir,
|
|
29
|
+
filesDir: files.directory,
|
|
30
|
+
filesList: [...files.absolutePaths()],
|
|
31
|
+
logOpts: logOptions.fork(run.taskName)
|
|
32
|
+
};
|
|
33
|
+
const script = requireFilename(import.meta.url);
|
|
34
|
+
run.log.debug("About to fork plug from", $p(script));
|
|
35
|
+
const env = { ...process.env };
|
|
36
|
+
for (let i = this._arguments.length - 1; i >= 0; i--) {
|
|
37
|
+
if (this._arguments[i] == null)
|
|
38
|
+
continue;
|
|
39
|
+
if (typeof this._arguments[i] === "object") {
|
|
40
|
+
if (typeof this._arguments[i].coverageDir === "string") {
|
|
41
|
+
const dir = env.NODE_V8_COVERAGE = run.resolve(this._arguments[i].coverageDir);
|
|
42
|
+
run.log.debug("Forked process will produce coverage in", $p(dir));
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
const child = fork(script, {
|
|
47
|
+
stdio: ["ignore", "inherit", "inherit", "ipc"],
|
|
48
|
+
env
|
|
49
|
+
});
|
|
50
|
+
run.log.info("Running", $p(script), $gry(`(pid=${child.pid})`));
|
|
51
|
+
let done = false;
|
|
52
|
+
return new Promise((resolve, reject) => {
|
|
53
|
+
let result = void 0;
|
|
54
|
+
child.on("error", (error) => {
|
|
55
|
+
run.log.error("Child process error", error);
|
|
56
|
+
return done ? reject(failure()) : void 0;
|
|
57
|
+
});
|
|
58
|
+
child.on("message", (message2) => {
|
|
59
|
+
run.log.debug("Message from child process", message2);
|
|
60
|
+
result = message2;
|
|
61
|
+
});
|
|
62
|
+
child.on("exit", (code, signal) => {
|
|
63
|
+
if (signal) {
|
|
64
|
+
run.log.error(`Child process exited with signal ${signal}`, $gry(`(pid=${child.pid})`));
|
|
65
|
+
return done ? reject(failure()) : void 0;
|
|
66
|
+
} else if (code !== 0) {
|
|
67
|
+
run.log.error(`Child process exited with code ${code}`, $gry(`(pid=${child.pid})`));
|
|
68
|
+
return done ? reject(failure()) : void 0;
|
|
69
|
+
} else if (!result) {
|
|
70
|
+
run.log.error("Child process exited with no result", $gry(`(pid=${child.pid})`));
|
|
71
|
+
return done ? reject(failure()) : void 0;
|
|
72
|
+
} else if (result.failed) {
|
|
73
|
+
return done ? reject(failure()) : void 0;
|
|
74
|
+
}
|
|
75
|
+
return resolve(message.filesDir && message.filesList ? run.files(message.filesDir).add(...message.filesList).build() : void 0);
|
|
76
|
+
});
|
|
77
|
+
try {
|
|
78
|
+
const result2 = child.send(message, (error) => {
|
|
79
|
+
if (error) {
|
|
80
|
+
run.log.error("Error sending message to child process (callback failure)", error);
|
|
81
|
+
reject(failure());
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
if (!result2) {
|
|
85
|
+
run.log.error("Error sending message to child process (send returned false)");
|
|
86
|
+
reject(failure());
|
|
87
|
+
}
|
|
88
|
+
} catch (error) {
|
|
89
|
+
run.log.error("Error sending message to child process (exception caught)", error);
|
|
90
|
+
reject(failure());
|
|
91
|
+
}
|
|
92
|
+
}).finally(() => done = true);
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
if (process.argv[1] === requireFilename(import.meta.url) && process.send) {
|
|
96
|
+
const timeout = setTimeout(() => {
|
|
97
|
+
console.error("Mocha not initialized in 5 seconds");
|
|
98
|
+
process.exit(2);
|
|
99
|
+
}, 5e3);
|
|
100
|
+
process.on("message", (message) => {
|
|
101
|
+
clearTimeout(timeout);
|
|
102
|
+
const {
|
|
103
|
+
scriptFile,
|
|
104
|
+
constructorArgs,
|
|
105
|
+
taskName,
|
|
106
|
+
buildFile,
|
|
107
|
+
buildDir,
|
|
108
|
+
filesDir,
|
|
109
|
+
filesList,
|
|
110
|
+
logOpts
|
|
111
|
+
} = message;
|
|
112
|
+
Object.assign(logOptions, logOpts);
|
|
113
|
+
const run = new RunImpl({ buildDir, buildFile, taskName });
|
|
114
|
+
run.log.debug("Message from parent process", message);
|
|
115
|
+
const result = runAsync(run, taskName, async () => {
|
|
116
|
+
assert(isFile(scriptFile), `Script file ${$p(scriptFile)} not found`);
|
|
117
|
+
const script = await import(scriptFile);
|
|
118
|
+
assert(
|
|
119
|
+
typeof script.default === "function",
|
|
120
|
+
`Script ${$p(scriptFile)} does not export a default constructor`
|
|
121
|
+
);
|
|
122
|
+
const Ctor = script.default;
|
|
123
|
+
const plug = new Ctor(...constructorArgs);
|
|
124
|
+
const files = run.files(filesDir).add(...filesList).build();
|
|
125
|
+
return plug.pipe(files, run);
|
|
126
|
+
});
|
|
127
|
+
const promise = result.then((result2) => {
|
|
128
|
+
const message2 = result2 ? { failed: false, filesDir: result2.directory, filesList: [...result2.absolutePaths()] } : { failed: false };
|
|
129
|
+
return new Promise((resolve, reject) => {
|
|
130
|
+
process.send(message2, (err) => err ? reject(err) : resolve());
|
|
131
|
+
});
|
|
132
|
+
}, (error) => {
|
|
133
|
+
run.log.error(error);
|
|
134
|
+
return new Promise((resolve, reject) => {
|
|
135
|
+
process.send({ failed: true }, (err) => err ? reject(err) : resolve());
|
|
136
|
+
});
|
|
137
|
+
});
|
|
138
|
+
promise.then(() => {
|
|
139
|
+
run.log.debug("Forked plug exiting");
|
|
140
|
+
process.exit(0);
|
|
141
|
+
}, (error) => {
|
|
142
|
+
run.log.error("Error sending message back to parent process", error);
|
|
143
|
+
process.exit(1);
|
|
144
|
+
});
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
export {
|
|
148
|
+
ForkingPlug,
|
|
149
|
+
installForking
|
|
150
|
+
};
|
|
151
|
+
//# sourceMappingURL=fork.mjs.map
|