@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,68 @@
|
|
|
1
|
+
// plugs/eslint/runner.ts
|
|
2
|
+
import { ESLint as RealESLint } from "eslint";
|
|
3
|
+
import { assert, failure } from "../../assert.mjs";
|
|
4
|
+
import { $p, ERROR, NOTICE, WARN } from "../../log.mjs";
|
|
5
|
+
import { getCurrentWorkingDirectory, isDirectory, isFile, resolveAbsolutePath } from "../../paths.mjs";
|
|
6
|
+
import { readFile } from "../../utils/asyncfs.mjs";
|
|
7
|
+
var ESLint = class {
|
|
8
|
+
_options;
|
|
9
|
+
constructor(arg = {}) {
|
|
10
|
+
this._options = typeof arg === "string" ? { configFile: arg } : arg;
|
|
11
|
+
}
|
|
12
|
+
async pipe(files, run) {
|
|
13
|
+
const { directory, configFile } = this._options;
|
|
14
|
+
const cwd = directory ? run.resolve(directory) : getCurrentWorkingDirectory();
|
|
15
|
+
assert(isDirectory(cwd), `ESLint directory ${$p(cwd)} does not exist`);
|
|
16
|
+
const overrideConfigFile = configFile ? run.resolve(configFile) : void 0;
|
|
17
|
+
if (overrideConfigFile) {
|
|
18
|
+
assert(isFile(overrideConfigFile), `ESLint configuration ${$p(overrideConfigFile)} does not exist`);
|
|
19
|
+
}
|
|
20
|
+
const eslint = new RealESLint({ overrideConfigFile, cwd });
|
|
21
|
+
const paths = [...files.absolutePaths()];
|
|
22
|
+
const promises = paths.map(async (filePath) => {
|
|
23
|
+
const code = await readFile(filePath, "utf-8");
|
|
24
|
+
return eslint.lintText(code, { filePath });
|
|
25
|
+
});
|
|
26
|
+
const settlements = await Promise.allSettled(promises);
|
|
27
|
+
const summary = settlements.reduce((summary2, settlement, i) => {
|
|
28
|
+
if (settlement.status === "rejected") {
|
|
29
|
+
run.log.error("Error linting", $p(paths[i]), settlement.reason);
|
|
30
|
+
summary2.failures++;
|
|
31
|
+
return summary2;
|
|
32
|
+
}
|
|
33
|
+
summary2.results.push(...settlement.value);
|
|
34
|
+
return summary2;
|
|
35
|
+
}, {
|
|
36
|
+
results: [],
|
|
37
|
+
failures: 0
|
|
38
|
+
});
|
|
39
|
+
const { results, failures } = summary;
|
|
40
|
+
if (failures)
|
|
41
|
+
throw failure();
|
|
42
|
+
const report = run.report("ESLint Report");
|
|
43
|
+
for (const result of results) {
|
|
44
|
+
const { filePath, source, messages } = result;
|
|
45
|
+
const file = resolveAbsolutePath(getCurrentWorkingDirectory(), filePath);
|
|
46
|
+
for (const record of messages) {
|
|
47
|
+
const {
|
|
48
|
+
severity,
|
|
49
|
+
message,
|
|
50
|
+
ruleId: tags,
|
|
51
|
+
line,
|
|
52
|
+
column,
|
|
53
|
+
endLine = line,
|
|
54
|
+
endColumn = column + 1
|
|
55
|
+
} = record;
|
|
56
|
+
const level = severity === 0 ? NOTICE : severity === 1 ? WARN : ERROR;
|
|
57
|
+
const length = endLine === line ? endColumn - column : endLine > line ? -1 : 1;
|
|
58
|
+
report.add({ level, message, tags, line, column, length, file, source });
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
report.done(this._options.showSources);
|
|
62
|
+
return void 0;
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
export {
|
|
66
|
+
ESLint as default
|
|
67
|
+
};
|
|
68
|
+
//# sourceMappingURL=runner.mjs.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/plugs/eslint/runner.ts"],
|
|
4
|
+
"mappings": ";AAAA,SAAS,UAAU,kBAAkB;AACrC,SAAS,QAAQ,eAAe;AAEhC,SAAS,IAAI,OAAO,QAAQ,YAAY;AACxC,SAAS,4BAA4B,aAAa,QAAQ,2BAA2B;AAGrF,SAAS,gBAAgB;AAezB,IAAqB,SAArB,MAAuD;AAAA,EACpC;AAAA,EAKjB,YAAY,MAA8B,CAAC,GAAG;AAC5C,SAAK,WAAW,OAAO,QAAQ,WAAW,EAAE,YAAY,IAAI,IAAI;AAAA,EAClE;AAAA,EAEA,MAAM,KAAK,OAAc,KAA8B;AACrD,UAAM,EAAE,WAAW,WAAW,IAAI,KAAK;AAEvC,UAAM,MAAM,YAAY,IAAI,QAAQ,SAAS,IAAI,2BAA2B;AAC5E,WAAO,YAAY,GAAG,GAAG,oBAAoB,GAAG,GAAG,kBAAkB;AAErE,UAAM,qBAAqB,aAAa,IAAI,QAAQ,UAAU,IAAI;AAClE,QAAI,oBAAoB;AACtB,aAAO,OAAO,kBAAkB,GAAG,wBAAwB,GAAG,kBAAkB,kBAAkB;AAAA,IACpG;AAGA,UAAM,SAAS,IAAI,WAAW,EAAE,oBAAoB,IAAI,CAAC;AAGzD,UAAM,QAAQ,CAAE,GAAG,MAAM,cAAc,CAAE;AACzC,UAAM,WAAW,MAAM,IAAI,OAAO,aAAa;AAC7C,YAAM,OAAO,MAAM,SAAS,UAAU,OAAO;AAC7C,aAAO,OAAO,SAAS,MAAM,EAAE,SAAS,CAAC;AAAA,IAC3C,CAAC;AAGD,UAAM,cAAc,MAAM,QAAQ,WAAW,QAAQ;AAGrD,UAAM,UAAU,YAAY,OAAO,CAACA,UAAS,YAAY,MAAM;AAE7D,UAAI,WAAW,WAAW,YAAY;AACpC,YAAI,IAAI,MAAM,iBAAiB,GAAG,MAAM,EAAE,GAAG,WAAW,MAAM;AAC9D,QAAAA,SAAQ;AACR,eAAOA;AAAA,MACT;AAGA,MAAAA,SAAQ,QAAQ,KAAK,GAAG,WAAW,KAAK;AACxC,aAAOA;AAAA,IACT,GAAG;AAAA,MACD,SAAS,CAAC;AAAA,MACV,UAAU;AAAA,IACZ,CAAC;AAGD,UAAM,EAAE,SAAS,SAAS,IAAI;AAC9B,QAAI;AAAU,YAAM,QAAQ;AAG5B,UAAM,SAAS,IAAI,OAAO,eAAe;AAGzC,eAAW,UAAU,SAAS;AAC5B,YAAM,EAAE,UAAU,QAAQ,SAAS,IAAI;AACvC,YAAM,OAAO,oBAAoB,2BAA2B,GAAG,QAAQ;AAEvE,iBAAW,UAAU,UAAU;AAC7B,cAAM;AAAA,UACJ;AAAA,UACA;AAAA,UACA,QAAQ;AAAA,UACR;AAAA,UACA;AAAA,UACA,UAAU;AAAA,UACV,YAAY,SAAS;AAAA,QACvB,IAAI;AAGJ,cAAM,QAAQ,aAAa,IAAI,SAAS,aAAa,IAAI,OAAO;AAGhE,cAAM,SAAS,YAAY,OAAO,YAAY,SAAS,UAAU,OAAO,KAAK;AAG7E,eAAO,IAAI,EAAE,OAAO,SAAS,MAAM,MAAM,QAAQ,QAAQ,MAAM,OAAO,CAAC;AAAA,MACzE;AAAA,IACF;AAGA,WAAO,KAAK,KAAK,SAAS,WAAW;AACrC,WAAO;AAAA,EACT;AACF;",
|
|
5
|
+
"names": ["summary"]
|
|
6
|
+
}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
22
|
+
mod
|
|
23
|
+
));
|
|
24
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
25
|
+
|
|
26
|
+
// plugs/exec.ts
|
|
27
|
+
var exec_exports = {};
|
|
28
|
+
__export(exec_exports, {
|
|
29
|
+
Exec: () => Exec,
|
|
30
|
+
exec: () => exec
|
|
31
|
+
});
|
|
32
|
+
module.exports = __toCommonJS(exec_exports);
|
|
33
|
+
var import_node_path = __toESM(require("node:path"), 1);
|
|
34
|
+
var import_node_readline = __toESM(require("node:readline"), 1);
|
|
35
|
+
var import_node_child_process = require("node:child_process");
|
|
36
|
+
var import_assert = require("../assert.cjs");
|
|
37
|
+
var import_async = require("../async.cjs");
|
|
38
|
+
var import_log = require("../log.cjs");
|
|
39
|
+
var import_paths = require("../paths.cjs");
|
|
40
|
+
var import_pipe = require("../pipe.cjs");
|
|
41
|
+
var import_options = require("../utils/options.cjs");
|
|
42
|
+
var Exec = class {
|
|
43
|
+
_cmd;
|
|
44
|
+
_args;
|
|
45
|
+
_options;
|
|
46
|
+
constructor(cmd, ...args) {
|
|
47
|
+
const { params, options } = (0, import_options.parseOptions)(args, {});
|
|
48
|
+
this._cmd = cmd;
|
|
49
|
+
this._args = params;
|
|
50
|
+
this._options = options;
|
|
51
|
+
}
|
|
52
|
+
async pipe(files, run) {
|
|
53
|
+
const { relativePaths = true, ...options } = this._options;
|
|
54
|
+
if (!options.cwd)
|
|
55
|
+
options.cwd = files.directory;
|
|
56
|
+
const params = [...relativePaths ? files : files.absolutePaths()];
|
|
57
|
+
if (options.shell)
|
|
58
|
+
params.forEach((s, i, a) => a[i] = JSON.stringify(s));
|
|
59
|
+
await spawnChild(this._cmd, [...this._args, ...params], options, run);
|
|
60
|
+
return files;
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
function exec(cmd, ...args) {
|
|
64
|
+
const run = (0, import_async.currentRun)();
|
|
65
|
+
(0, import_assert.assert)(run, "Unable to execute commands outside a running task");
|
|
66
|
+
const { params, options } = (0, import_options.parseOptions)(args, {});
|
|
67
|
+
return spawnChild(cmd, params, options, run);
|
|
68
|
+
}
|
|
69
|
+
(0, import_pipe.install)("exec", Exec);
|
|
70
|
+
async function spawnChild(cmd, args, options = {}, run) {
|
|
71
|
+
const {
|
|
72
|
+
env = {},
|
|
73
|
+
shell = false,
|
|
74
|
+
cwd = void 0,
|
|
75
|
+
...extraOptions
|
|
76
|
+
} = options;
|
|
77
|
+
const childCwd = cwd ? run.resolve(cwd) : (0, import_paths.getCurrentWorkingDirectory)();
|
|
78
|
+
(0, import_assert.assert)((0, import_paths.isDirectory)(childCwd), `Current working directory ${(0, import_log.$p)(childCwd)} does not exist`);
|
|
79
|
+
const childPaths = [];
|
|
80
|
+
const baseNodePath = run.resolve("@node_modules", ".bin");
|
|
81
|
+
if ((0, import_paths.isDirectory)(baseNodePath))
|
|
82
|
+
childPaths.push(baseNodePath);
|
|
83
|
+
const buildNodePath = run.resolve("./node_modules", ".bin");
|
|
84
|
+
if ((0, import_paths.isDirectory)(buildNodePath))
|
|
85
|
+
childPaths.push(buildNodePath);
|
|
86
|
+
const extraPath = env.PATH || process.env.PATH;
|
|
87
|
+
if (extraPath)
|
|
88
|
+
childPaths.push(extraPath);
|
|
89
|
+
const PATH = childPaths.join(import_node_path.default.delimiter);
|
|
90
|
+
const __LOG_OPTIONS = JSON.stringify(import_log.logOptions.fork(run.taskName));
|
|
91
|
+
const childEnv = { ...process.env, ...env, PATH, __LOG_OPTIONS };
|
|
92
|
+
const childOptions = {
|
|
93
|
+
...extraOptions,
|
|
94
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
95
|
+
cwd: childCwd,
|
|
96
|
+
env: childEnv,
|
|
97
|
+
shell
|
|
98
|
+
};
|
|
99
|
+
run.log.info("Executing", [cmd, ...args]);
|
|
100
|
+
run.log.info("Execution options", childOptions);
|
|
101
|
+
const child = (0, import_node_child_process.spawn)(cmd, args, childOptions);
|
|
102
|
+
if (child.stdout) {
|
|
103
|
+
const out = import_node_readline.default.createInterface(child.stdout);
|
|
104
|
+
out.on("line", (line) => line ? run.log.notice(line) : run.log.notice("\xA0"));
|
|
105
|
+
}
|
|
106
|
+
if (child.stderr) {
|
|
107
|
+
const err = import_node_readline.default.createInterface(child.stderr);
|
|
108
|
+
err.on("line", (line) => line ? run.log.warn(line) : run.log.warn("\xA0"));
|
|
109
|
+
}
|
|
110
|
+
return new Promise((resolve, reject) => {
|
|
111
|
+
child.on("error", (error) => reject(error));
|
|
112
|
+
child.on("exit", (code, signal) => {
|
|
113
|
+
if (code === 0)
|
|
114
|
+
return resolve();
|
|
115
|
+
if (signal)
|
|
116
|
+
return reject(new Error(`Child process exited with signal ${signal}`));
|
|
117
|
+
if (code)
|
|
118
|
+
return reject(new Error(`Child process exited with code ${code}`));
|
|
119
|
+
reject(new Error("Child process failed for an unknown reason"));
|
|
120
|
+
});
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
124
|
+
0 && (module.exports = {
|
|
125
|
+
Exec,
|
|
126
|
+
exec
|
|
127
|
+
});
|
|
128
|
+
//# sourceMappingURL=exec.cjs.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/plugs/exec.ts"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["path", "reaadline"]
|
|
6
|
+
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
// plugs/exec.ts
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import reaadline from "node:readline";
|
|
4
|
+
import { spawn } from "node:child_process";
|
|
5
|
+
import { assert } from "../assert.mjs";
|
|
6
|
+
import { currentRun } from "../async.mjs";
|
|
7
|
+
import { $p, logOptions } from "../log.mjs";
|
|
8
|
+
import { getCurrentWorkingDirectory, isDirectory } from "../paths.mjs";
|
|
9
|
+
import { install } from "../pipe.mjs";
|
|
10
|
+
import { parseOptions } from "../utils/options.mjs";
|
|
11
|
+
var Exec = class {
|
|
12
|
+
_cmd;
|
|
13
|
+
_args;
|
|
14
|
+
_options;
|
|
15
|
+
constructor(cmd, ...args) {
|
|
16
|
+
const { params, options } = parseOptions(args, {});
|
|
17
|
+
this._cmd = cmd;
|
|
18
|
+
this._args = params;
|
|
19
|
+
this._options = options;
|
|
20
|
+
}
|
|
21
|
+
async pipe(files, run) {
|
|
22
|
+
const { relativePaths = true, ...options } = this._options;
|
|
23
|
+
if (!options.cwd)
|
|
24
|
+
options.cwd = files.directory;
|
|
25
|
+
const params = [...relativePaths ? files : files.absolutePaths()];
|
|
26
|
+
if (options.shell)
|
|
27
|
+
params.forEach((s, i, a) => a[i] = JSON.stringify(s));
|
|
28
|
+
await spawnChild(this._cmd, [...this._args, ...params], options, run);
|
|
29
|
+
return files;
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
function exec(cmd, ...args) {
|
|
33
|
+
const run = currentRun();
|
|
34
|
+
assert(run, "Unable to execute commands outside a running task");
|
|
35
|
+
const { params, options } = parseOptions(args, {});
|
|
36
|
+
return spawnChild(cmd, params, options, run);
|
|
37
|
+
}
|
|
38
|
+
install("exec", Exec);
|
|
39
|
+
async function spawnChild(cmd, args, options = {}, run) {
|
|
40
|
+
const {
|
|
41
|
+
env = {},
|
|
42
|
+
shell = false,
|
|
43
|
+
cwd = void 0,
|
|
44
|
+
...extraOptions
|
|
45
|
+
} = options;
|
|
46
|
+
const childCwd = cwd ? run.resolve(cwd) : getCurrentWorkingDirectory();
|
|
47
|
+
assert(isDirectory(childCwd), `Current working directory ${$p(childCwd)} does not exist`);
|
|
48
|
+
const childPaths = [];
|
|
49
|
+
const baseNodePath = run.resolve("@node_modules", ".bin");
|
|
50
|
+
if (isDirectory(baseNodePath))
|
|
51
|
+
childPaths.push(baseNodePath);
|
|
52
|
+
const buildNodePath = run.resolve("./node_modules", ".bin");
|
|
53
|
+
if (isDirectory(buildNodePath))
|
|
54
|
+
childPaths.push(buildNodePath);
|
|
55
|
+
const extraPath = env.PATH || process.env.PATH;
|
|
56
|
+
if (extraPath)
|
|
57
|
+
childPaths.push(extraPath);
|
|
58
|
+
const PATH = childPaths.join(path.delimiter);
|
|
59
|
+
const __LOG_OPTIONS = JSON.stringify(logOptions.fork(run.taskName));
|
|
60
|
+
const childEnv = { ...process.env, ...env, PATH, __LOG_OPTIONS };
|
|
61
|
+
const childOptions = {
|
|
62
|
+
...extraOptions,
|
|
63
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
64
|
+
cwd: childCwd,
|
|
65
|
+
env: childEnv,
|
|
66
|
+
shell
|
|
67
|
+
};
|
|
68
|
+
run.log.info("Executing", [cmd, ...args]);
|
|
69
|
+
run.log.info("Execution options", childOptions);
|
|
70
|
+
const child = spawn(cmd, args, childOptions);
|
|
71
|
+
if (child.stdout) {
|
|
72
|
+
const out = reaadline.createInterface(child.stdout);
|
|
73
|
+
out.on("line", (line) => line ? run.log.notice(line) : run.log.notice("\xA0"));
|
|
74
|
+
}
|
|
75
|
+
if (child.stderr) {
|
|
76
|
+
const err = reaadline.createInterface(child.stderr);
|
|
77
|
+
err.on("line", (line) => line ? run.log.warn(line) : run.log.warn("\xA0"));
|
|
78
|
+
}
|
|
79
|
+
return new Promise((resolve, reject) => {
|
|
80
|
+
child.on("error", (error) => reject(error));
|
|
81
|
+
child.on("exit", (code, signal) => {
|
|
82
|
+
if (code === 0)
|
|
83
|
+
return resolve();
|
|
84
|
+
if (signal)
|
|
85
|
+
return reject(new Error(`Child process exited with signal ${signal}`));
|
|
86
|
+
if (code)
|
|
87
|
+
return reject(new Error(`Child process exited with code ${code}`));
|
|
88
|
+
reject(new Error("Child process failed for an unknown reason"));
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
export {
|
|
93
|
+
Exec,
|
|
94
|
+
exec
|
|
95
|
+
};
|
|
96
|
+
//# sourceMappingURL=exec.mjs.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/plugs/exec.ts"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
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
|
+
// plugs/filter.ts
|
|
21
|
+
var filter_exports = {};
|
|
22
|
+
__export(filter_exports, {
|
|
23
|
+
Filter: () => Filter
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(filter_exports);
|
|
26
|
+
var import_log = require("../log.cjs");
|
|
27
|
+
var import_paths = require("../paths.cjs");
|
|
28
|
+
var import_pipe = require("../pipe.cjs");
|
|
29
|
+
var import_match = require("../utils/match.cjs");
|
|
30
|
+
var import_options = require("../utils/options.cjs");
|
|
31
|
+
var Filter = class {
|
|
32
|
+
_globs;
|
|
33
|
+
_options;
|
|
34
|
+
constructor(glob, ...args) {
|
|
35
|
+
const { params, options } = (0, import_options.parseOptions)(args, {});
|
|
36
|
+
this._globs = [glob, ...params];
|
|
37
|
+
this._options = options;
|
|
38
|
+
}
|
|
39
|
+
pipe(files, run) {
|
|
40
|
+
const { directory, ...options } = this._options;
|
|
41
|
+
const builder = run.files(directory || files.directory);
|
|
42
|
+
const matcher = (0, import_match.match)(this._globs, options);
|
|
43
|
+
for (const file of files.absolutePaths()) {
|
|
44
|
+
const relative = (0, import_paths.resolveRelativeChildPath)(builder.directory, file);
|
|
45
|
+
if (relative && matcher(relative))
|
|
46
|
+
builder.add(relative);
|
|
47
|
+
}
|
|
48
|
+
const result = builder.build();
|
|
49
|
+
const discarded = files.length - result.length;
|
|
50
|
+
import_log.log.debug("Filtered", result.length, "files (discarded", discarded, "files)");
|
|
51
|
+
return result;
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
(0, import_pipe.install)("filter", Filter);
|
|
55
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
56
|
+
0 && (module.exports = {
|
|
57
|
+
Filter
|
|
58
|
+
});
|
|
59
|
+
//# sourceMappingURL=filter.cjs.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/plugs/filter.ts"],
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,iBAAoB;AACpB,mBAAyC;AACzC,kBAA8B;AAE9B,mBAAoC;AACpC,qBAA2C;AASpC,IAAM,SAAN,MAAoC;AAAA,EACxB;AAAA,EACA;AAAA,EAEjB,YAAY,SAAiB,MAAmC;AAC9D,UAAM,EAAE,QAAQ,QAAQ,QAAI,6BAAa,MAAM,CAAC,CAAC;AACjD,SAAK,SAAS,CAAE,MAAM,GAAG,MAAO;AAChC,SAAK,WAAW;AAAA,EAClB;AAAA,EAEA,KAAK,OAAc,KAAiB;AAClC,UAAM,EAAE,cAAc,QAAQ,IAAI,KAAK;AAEvC,UAAM,UAAU,IAAI,MAAM,aAAa,MAAM,SAAS;AACtD,UAAM,cAAU,oBAAM,KAAK,QAAQ,OAAO;AAE1C,eAAW,QAAQ,MAAM,cAAc,GAAG;AACxC,YAAM,eAAW,uCAAyB,QAAQ,WAAW,IAAI;AACjE,UAAI,YAAY,QAAQ,QAAQ;AAAG,gBAAQ,IAAI,QAAQ;AAAA,IACzD;AAEA,UAAM,SAAS,QAAQ,MAAM;AAC7B,UAAM,YAAY,MAAM,SAAS,OAAO;AACxC,mBAAI,MAAM,YAAY,OAAO,QAAQ,oBAAoB,WAAW,QAAQ;AAE5E,WAAO;AAAA,EACT;AACF;AAAA,IAMA,qBAAQ,UAAU,MAAM;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// plugs/filter.ts
|
|
2
|
+
import { log } from "../log.mjs";
|
|
3
|
+
import { resolveRelativeChildPath } from "../paths.mjs";
|
|
4
|
+
import { install } from "../pipe.mjs";
|
|
5
|
+
import { match } from "../utils/match.mjs";
|
|
6
|
+
import { parseOptions } from "../utils/options.mjs";
|
|
7
|
+
var Filter = class {
|
|
8
|
+
_globs;
|
|
9
|
+
_options;
|
|
10
|
+
constructor(glob, ...args) {
|
|
11
|
+
const { params, options } = parseOptions(args, {});
|
|
12
|
+
this._globs = [glob, ...params];
|
|
13
|
+
this._options = options;
|
|
14
|
+
}
|
|
15
|
+
pipe(files, run) {
|
|
16
|
+
const { directory, ...options } = this._options;
|
|
17
|
+
const builder = run.files(directory || files.directory);
|
|
18
|
+
const matcher = match(this._globs, options);
|
|
19
|
+
for (const file of files.absolutePaths()) {
|
|
20
|
+
const relative = resolveRelativeChildPath(builder.directory, file);
|
|
21
|
+
if (relative && matcher(relative))
|
|
22
|
+
builder.add(relative);
|
|
23
|
+
}
|
|
24
|
+
const result = builder.build();
|
|
25
|
+
const discarded = files.length - result.length;
|
|
26
|
+
log.debug("Filtered", result.length, "files (discarded", discarded, "files)");
|
|
27
|
+
return result;
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
install("filter", Filter);
|
|
31
|
+
export {
|
|
32
|
+
Filter
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=filter.mjs.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/plugs/filter.ts"],
|
|
4
|
+
"mappings": ";AACA,SAAS,WAAW;AACpB,SAAS,gCAAgC;AACzC,SAAS,eAAqB;AAE9B,SAAS,aAA2B;AACpC,SAAuB,oBAAoB;AASpC,IAAM,SAAN,MAAoC;AAAA,EACxB;AAAA,EACA;AAAA,EAEjB,YAAY,SAAiB,MAAmC;AAC9D,UAAM,EAAE,QAAQ,QAAQ,IAAI,aAAa,MAAM,CAAC,CAAC;AACjD,SAAK,SAAS,CAAE,MAAM,GAAG,MAAO;AAChC,SAAK,WAAW;AAAA,EAClB;AAAA,EAEA,KAAK,OAAc,KAAiB;AAClC,UAAM,EAAE,cAAc,QAAQ,IAAI,KAAK;AAEvC,UAAM,UAAU,IAAI,MAAM,aAAa,MAAM,SAAS;AACtD,UAAM,UAAU,MAAM,KAAK,QAAQ,OAAO;AAE1C,eAAW,QAAQ,MAAM,cAAc,GAAG;AACxC,YAAM,WAAW,yBAAyB,QAAQ,WAAW,IAAI;AACjE,UAAI,YAAY,QAAQ,QAAQ;AAAG,gBAAQ,IAAI,QAAQ;AAAA,IACzD;AAEA,UAAM,SAAS,QAAQ,MAAM;AAC7B,UAAM,YAAY,MAAM,SAAS,OAAO;AACxC,QAAI,MAAM,YAAY,OAAO,QAAQ,oBAAoB,WAAW,QAAQ;AAE5E,WAAO;AAAA,EACT;AACF;AAMA,QAAQ,UAAU,MAAM;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
22
|
+
mod
|
|
23
|
+
));
|
|
24
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
25
|
+
|
|
26
|
+
// plugs/mocha/reporter.ts
|
|
27
|
+
var reporter_exports = {};
|
|
28
|
+
__export(reporter_exports, {
|
|
29
|
+
PlugReporter: () => PlugReporter,
|
|
30
|
+
logSymbol: () => logSymbol,
|
|
31
|
+
runSymbol: () => runSymbol
|
|
32
|
+
});
|
|
33
|
+
module.exports = __toCommonJS(reporter_exports);
|
|
34
|
+
var import_mocha = __toESM(require("mocha"), 1);
|
|
35
|
+
var import_diff = require("diff");
|
|
36
|
+
var import_log = require("../../log.cjs");
|
|
37
|
+
var _pending = "\u22EF";
|
|
38
|
+
var _success = "\u2714";
|
|
39
|
+
var _failure = "\u2718";
|
|
40
|
+
var _details = "\u21B3";
|
|
41
|
+
var logSymbol = Symbol();
|
|
42
|
+
var runSymbol = Symbol();
|
|
43
|
+
var PlugReporter = class extends import_mocha.default.reporters.Base {
|
|
44
|
+
constructor(runner, options) {
|
|
45
|
+
super(runner, options);
|
|
46
|
+
const showDiff = !!options.diff;
|
|
47
|
+
const log = options.reporterOptions[logSymbol];
|
|
48
|
+
const failures = [];
|
|
49
|
+
const rootSuite = runner.suite;
|
|
50
|
+
runner.on("suite", (suite) => {
|
|
51
|
+
if (suite === rootSuite)
|
|
52
|
+
return;
|
|
53
|
+
log.notice("");
|
|
54
|
+
log.enter(import_log.NOTICE, `${(0, import_log.$wht)(suite.title)}`);
|
|
55
|
+
});
|
|
56
|
+
runner.on("suite end", () => {
|
|
57
|
+
log.leave();
|
|
58
|
+
});
|
|
59
|
+
runner.on("test", (test) => {
|
|
60
|
+
log.enter(import_log.NOTICE, `${(0, import_log.$blu)(_pending)} ${test.title}`);
|
|
61
|
+
});
|
|
62
|
+
runner.on("test end", (test) => {
|
|
63
|
+
if (test.isPassed()) {
|
|
64
|
+
log.leave(import_log.NOTICE, `${(0, import_log.$grn)(_success)} ${test.title}`);
|
|
65
|
+
} else if (test.isPending()) {
|
|
66
|
+
const tag = (0, import_log.$gry)("[") + (0, import_log.$ylw)("skipped") + (0, import_log.$gry)("]");
|
|
67
|
+
log.leave(import_log.WARN, `${(0, import_log.$ylw)(_pending)} ${test.title} ${tag}`);
|
|
68
|
+
} else if (test.isFailed()) {
|
|
69
|
+
const number = failures.push(test);
|
|
70
|
+
const tag = (0, import_log.$gry)("[") + (0, import_log.$red)("failed") + (0, import_log.$gry)("] [") + (0, import_log.$red)(number) + (0, import_log.$gry)("]");
|
|
71
|
+
log.leave(import_log.ERROR, `${(0, import_log.$red)(_failure)} ${test.title} ${tag}`);
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
runner.once("end", () => {
|
|
75
|
+
try {
|
|
76
|
+
for (let i = 0; i < failures.length; i++) {
|
|
77
|
+
log.notice("");
|
|
78
|
+
const failure = failures[i];
|
|
79
|
+
const titles = [failure.title];
|
|
80
|
+
for (let parent = failure.parent; parent; parent = parent?.parent) {
|
|
81
|
+
if (parent.parent)
|
|
82
|
+
titles.unshift(parent.title);
|
|
83
|
+
}
|
|
84
|
+
log.error(`${(0, import_log.$gry)("Failure [")}${(0, import_log.$red)(i + 1)}${(0, import_log.$gry)("]")}`);
|
|
85
|
+
titles.forEach((title, indent) => {
|
|
86
|
+
log.error(` ${"".padStart(indent * 4)}${(0, import_log.$gry)(_details)} ${(0, import_log.$wht)(title)}`);
|
|
87
|
+
});
|
|
88
|
+
if (failure.err) {
|
|
89
|
+
const message = `${failure.err}`;
|
|
90
|
+
const messageOrStack = failure.err.stack || `${failure.err}`;
|
|
91
|
+
const messageIndex = messageOrStack.indexOf(message);
|
|
92
|
+
const stack = messageOrStack === message ? "" : messageIndex < 0 ? messageOrStack : messageOrStack.substring(messageIndex + message.length);
|
|
93
|
+
const stackLines = stack.split("\n").map((line) => line.trim()).filter((line) => !!line);
|
|
94
|
+
log.enter(import_log.ERROR, "");
|
|
95
|
+
log.error((0, import_log.$red)(message));
|
|
96
|
+
if (showDiff && "actual" in failure.err && "expected" in failure.err) {
|
|
97
|
+
const err = failure.err;
|
|
98
|
+
const actual = err.actual === void 0 ? "[undefined]" : err.actual === null ? "[null]" : err.actual;
|
|
99
|
+
const expected = err.expected === void 0 ? "[undefined]" : err.expected === null ? "[null]" : err.expected;
|
|
100
|
+
const changes = (0, import_diff.diffJson)(actual, expected);
|
|
101
|
+
const diff = changes.map((change) => {
|
|
102
|
+
if (change.removed)
|
|
103
|
+
return (0, import_log.$red)(change.value);
|
|
104
|
+
if (change.added)
|
|
105
|
+
return (0, import_log.$grn)(change.value);
|
|
106
|
+
return (0, import_log.$gry)(change.value);
|
|
107
|
+
}).join("");
|
|
108
|
+
log.enter(import_log.ERROR, `${(0, import_log.$gry)("diff")} ${(0, import_log.$grn)("expected")} ${(0, import_log.$gry)("/")} ${(0, import_log.$red)("actual")}`);
|
|
109
|
+
log.error(diff);
|
|
110
|
+
log.leave();
|
|
111
|
+
}
|
|
112
|
+
stackLines.forEach((line) => log.error(line));
|
|
113
|
+
log.leave();
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
if (runner.stats) {
|
|
117
|
+
log.notice("");
|
|
118
|
+
const { passes, pending, failures: failures2, duration = 0 } = runner.stats;
|
|
119
|
+
const fmt = (n) => n === 1 ? `${n} test` : `${n} tests`;
|
|
120
|
+
if (passes)
|
|
121
|
+
log.notice((0, import_log.$grn)(fmt(passes)), "passing", (0, import_log.$ms)(duration));
|
|
122
|
+
if (pending)
|
|
123
|
+
log.warn((0, import_log.$ylw)(fmt(pending)), "pending");
|
|
124
|
+
if (failures2)
|
|
125
|
+
log.error((0, import_log.$red)(fmt(failures2)), "pending");
|
|
126
|
+
}
|
|
127
|
+
log.notice("");
|
|
128
|
+
} catch (error) {
|
|
129
|
+
log.error("Error rendering Mocha report", error);
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
135
|
+
0 && (module.exports = {
|
|
136
|
+
PlugReporter,
|
|
137
|
+
logSymbol,
|
|
138
|
+
runSymbol
|
|
139
|
+
});
|
|
140
|
+
//# sourceMappingURL=reporter.cjs.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/plugs/mocha/reporter.ts"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["RealMocha", "failures"]
|
|
6
|
+
}
|