@plugjs/plug 0.4.28 → 0.4.29
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 +3 -3
- package/dist/async.cjs.map +1 -1
- package/dist/async.d.ts +1 -1
- package/dist/async.mjs +3 -3
- package/dist/async.mjs.map +1 -1
- package/dist/build.cjs +2 -2
- package/dist/build.cjs.map +1 -1
- package/dist/build.mjs +3 -3
- package/dist/build.mjs.map +1 -1
- package/dist/cli.mjs +1 -1
- package/dist/fork.cjs +1 -1
- package/dist/fork.cjs.map +1 -1
- package/dist/fork.mjs +1 -1
- package/dist/fork.mjs.map +1 -1
- package/dist/helpers.cjs +15 -3
- package/dist/helpers.cjs.map +1 -1
- package/dist/helpers.d.ts +2 -2
- package/dist/helpers.mjs +17 -5
- package/dist/helpers.mjs.map +1 -1
- package/dist/logging/colors.cjs +5 -0
- package/dist/logging/colors.cjs.map +2 -2
- package/dist/logging/colors.d.ts +2 -0
- package/dist/logging/colors.mjs +4 -0
- package/dist/logging/colors.mjs.map +2 -2
- package/dist/logging/report.cjs +3 -3
- package/dist/logging/report.cjs.map +1 -1
- package/dist/logging/report.mjs +5 -5
- package/dist/logging/report.mjs.map +1 -1
- package/dist/logging/spinner.cjs +2 -2
- package/dist/logging/spinner.cjs.map +1 -1
- package/dist/logging/spinner.mjs +3 -3
- package/dist/logging/spinner.mjs.map +1 -1
- package/dist/utils/jsonc.cjs +76 -0
- package/dist/utils/jsonc.cjs.map +6 -0
- package/dist/utils/jsonc.d.ts +17 -0
- package/dist/utils/jsonc.mjs +50 -0
- package/dist/utils/jsonc.mjs.map +6 -0
- package/dist/utils.cjs +2 -0
- package/dist/utils.cjs.map +1 -1
- package/dist/utils.d.ts +1 -0
- package/dist/utils.mjs +1 -0
- package/dist/utils.mjs.map +1 -1
- package/package.json +2 -1
- package/src/async.ts +2 -3
- package/src/build.ts +3 -3
- package/src/fork.ts +1 -1
- package/src/helpers.ts +18 -6
- package/src/logging/colors.ts +11 -0
- package/src/logging/report.ts +5 -5
- package/src/logging/spinner.ts +3 -3
- package/src/utils/jsonc.ts +62 -0
- package/src/utils.ts +1 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/logging/report.ts"],
|
|
4
|
-
"mappings": ";AAAA,SAAS,oBAAoB;AAC7B,SAAS,gBAAgB;AACzB,SAAS,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,YAAY;
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["tag"]
|
|
6
6
|
}
|
package/dist/logging/spinner.cjs
CHANGED
|
@@ -79,9 +79,9 @@ function spin() {
|
|
|
79
79
|
return;
|
|
80
80
|
const pad = "".padStart(_taskLength, " ");
|
|
81
81
|
const names = tasks.map((task2) => (0, import_colors.$t)(task2)).join((0, import_colors.$gry)(", "));
|
|
82
|
-
const task = tasks.length
|
|
82
|
+
const task = (0, import_colors.$plur)(tasks.length, "task", "tasks");
|
|
83
83
|
_nextSpin = ++_nextSpin % _spins.length;
|
|
84
|
-
_output.write(`${zapSpinner}${pad} ${_spins[_nextSpin]} Running ${
|
|
84
|
+
_output.write(`${zapSpinner}${pad} ${_spins[_nextSpin]} Running ${task}: ${(0, import_colors.$gry)(names)}`);
|
|
85
85
|
}
|
|
86
86
|
function setupSpinner() {
|
|
87
87
|
if (_interval)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/logging/spinner.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,mBAA6B;AAC7B,
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,mBAA6B;AAC7B,oBAAsC;AACtC,qBAA2B;AAKpB,IAAM,aAAa;AAK1B,IAAI,UAAU,0BAAW;AACzB,IAAI,UAAU,0BAAW;AACzB,IAAI,UAAU,0BAAW;AACzB,IAAI,WAAW,0BAAW;AAC1B,IAAI,cAAc,0BAAW;AAC7B,0BAAW,GAAG,WAAW,CAAC,EAAE,QAAQ,QAAQ,QAAQ,SAAS,WAAW,MAAM;AAC5E,YAAU;AACV,YAAU;AACV,YAAU;AACV,aAAW;AACX,gBAAc;AACd,eAAa;AACf,CAAC;AAKD,IAAM,SAAS;AAAA,MACb,oBAAK,QAAQ;AAAA;AAAA,MACb,oBAAK,QAAQ;AAAA;AAAA,MACb,oBAAK,QAAQ;AAAA;AAAA,MACb,oBAAK,QAAQ;AAAA;AAAA,MACb,oBAAK,QAAQ;AAAA;AAAA,MACb,oBAAK,QAAQ;AAAA;AAAA,MACb,oBAAK,QAAQ;AAAA;AAAA,MACb,oBAAK,QAAQ;AAAA;AAAA,MACb,oBAAK,QAAQ;AAAA;AAAA,MACb,oBAAK,QAAQ;AAAA;AAAA,MACb,oBAAK,QAAQ;AAAA;AAAA,MACb,oBAAK,QAAQ;AAAA;AACf;AAGA,IAAI,YAAY;AAEhB,IAAI;AAGJ,SAAS,OAAa;AACpB,MAAI,CAAE;AAAS,WAAO,cAAc,SAAS;AAC7C,MAAI,CAAE;AAAU,WAAO,cAAc,SAAS;AAE9C,QAAM,YAAQ,2BAAa;AAC3B,MAAI,CAAE,MAAM;AAAQ;AAEpB,QAAM,MAAM,GAAG,SAAS,aAAa,GAAG;AACxC,QAAM,QAAQ,MAAM,IAAI,CAACA,cAAS,kBAAGA,KAAI,CAAC,EAAE,SAAK,oBAAK,IAAI,CAAC;AAE3D,QAAM,WAAO,qBAAM,MAAM,QAAQ,QAAQ,OAAO;AAEhD,cAAa,EAAG,YAAa,OAAO;AAEpC,UAAQ,MAAM,GAAG,UAAU,GAAG,GAAG,IAAI,OAAO,SAAS,CAAC,aAAa,IAAI,SAAK,oBAAK,KAAK,CAAC,EAAE;AAC3F;AAGO,SAAS,eAAqB;AACnC,MAAI;AAAW,kBAAc,SAAS;AACtC,MAAI,WAAW,YAAa,YAAY,SAAU;AAChD,gBAAY,YAAY,MAAM,GAAG,EAAE,MAAM;AAAA,EAC3C;AACF;",
|
|
5
5
|
"names": ["task"]
|
|
6
6
|
}
|
package/dist/logging/spinner.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// logging/spinner.ts
|
|
2
2
|
import { runningTasks } from "../async.mjs";
|
|
3
|
-
import { $cyn, $gry, $t } from "./colors.mjs";
|
|
3
|
+
import { $cyn, $gry, $plur, $t } from "./colors.mjs";
|
|
4
4
|
import { logOptions } from "./options.mjs";
|
|
5
5
|
var zapSpinner = "\x1B[0G\x1B[2K";
|
|
6
6
|
var _output = logOptions.output;
|
|
@@ -54,9 +54,9 @@ function spin() {
|
|
|
54
54
|
return;
|
|
55
55
|
const pad = "".padStart(_taskLength, " ");
|
|
56
56
|
const names = tasks.map((task2) => $t(task2)).join($gry(", "));
|
|
57
|
-
const task = tasks.length
|
|
57
|
+
const task = $plur(tasks.length, "task", "tasks");
|
|
58
58
|
_nextSpin = ++_nextSpin % _spins.length;
|
|
59
|
-
_output.write(`${zapSpinner}${pad} ${_spins[_nextSpin]} Running ${
|
|
59
|
+
_output.write(`${zapSpinner}${pad} ${_spins[_nextSpin]} Running ${task}: ${$gry(names)}`);
|
|
60
60
|
}
|
|
61
61
|
function setupSpinner() {
|
|
62
62
|
if (_interval)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/logging/spinner.ts"],
|
|
4
|
-
"mappings": ";AAEA,SAAS,oBAAoB;AAC7B,SAAS,MAAM,MAAM,UAAU;
|
|
4
|
+
"mappings": ";AAEA,SAAS,oBAAoB;AAC7B,SAAS,MAAM,MAAM,OAAO,UAAU;AACtC,SAAS,kBAAkB;AAKpB,IAAM,aAAa;AAK1B,IAAI,UAAU,WAAW;AACzB,IAAI,UAAU,WAAW;AACzB,IAAI,UAAU,WAAW;AACzB,IAAI,WAAW,WAAW;AAC1B,IAAI,cAAc,WAAW;AAC7B,WAAW,GAAG,WAAW,CAAC,EAAE,QAAQ,QAAQ,QAAQ,SAAS,WAAW,MAAM;AAC5E,YAAU;AACV,YAAU;AACV,YAAU;AACV,aAAW;AACX,gBAAc;AACd,eAAa;AACf,CAAC;AAKD,IAAM,SAAS;AAAA,EACb,KAAK,QAAQ;AAAA;AAAA,EACb,KAAK,QAAQ;AAAA;AAAA,EACb,KAAK,QAAQ;AAAA;AAAA,EACb,KAAK,QAAQ;AAAA;AAAA,EACb,KAAK,QAAQ;AAAA;AAAA,EACb,KAAK,QAAQ;AAAA;AAAA,EACb,KAAK,QAAQ;AAAA;AAAA,EACb,KAAK,QAAQ;AAAA;AAAA,EACb,KAAK,QAAQ;AAAA;AAAA,EACb,KAAK,QAAQ;AAAA;AAAA,EACb,KAAK,QAAQ;AAAA;AAAA,EACb,KAAK,QAAQ;AAAA;AACf;AAGA,IAAI,YAAY;AAEhB,IAAI;AAGJ,SAAS,OAAa;AACpB,MAAI,CAAE;AAAS,WAAO,cAAc,SAAS;AAC7C,MAAI,CAAE;AAAU,WAAO,cAAc,SAAS;AAE9C,QAAM,QAAQ,aAAa;AAC3B,MAAI,CAAE,MAAM;AAAQ;AAEpB,QAAM,MAAM,GAAG,SAAS,aAAa,GAAG;AACxC,QAAM,QAAQ,MAAM,IAAI,CAACA,UAAS,GAAGA,KAAI,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;AAE3D,QAAM,OAAO,MAAM,MAAM,QAAQ,QAAQ,OAAO;AAEhD,cAAa,EAAG,YAAa,OAAO;AAEpC,UAAQ,MAAM,GAAG,UAAU,GAAG,GAAG,IAAI,OAAO,SAAS,CAAC,aAAa,IAAI,KAAK,KAAK,KAAK,CAAC,EAAE;AAC3F;AAGO,SAAS,eAAqB;AACnC,MAAI;AAAW,kBAAc,SAAS;AACtC,MAAI,WAAW,YAAa,YAAY,SAAU;AAChD,gBAAY,YAAY,MAAM,GAAG,EAAE,MAAM;AAAA,EAC3C;AACF;",
|
|
5
5
|
"names": ["task"]
|
|
6
6
|
}
|
|
@@ -0,0 +1,76 @@
|
|
|
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
|
+
// utils/jsonc.ts
|
|
21
|
+
var jsonc_exports = {};
|
|
22
|
+
__export(jsonc_exports, {
|
|
23
|
+
JsoncError: () => JsoncError,
|
|
24
|
+
parseJsonc: () => parseJsonc
|
|
25
|
+
});
|
|
26
|
+
module.exports = __toCommonJS(jsonc_exports);
|
|
27
|
+
var import_node_os = require("node:os");
|
|
28
|
+
var import_jsonc_parser = require("jsonc-parser");
|
|
29
|
+
var import_colors = require("../logging/colors.cjs");
|
|
30
|
+
var JsoncError = class extends Error {
|
|
31
|
+
constructor(errors) {
|
|
32
|
+
const message = [`Found ${(0, import_colors.$plur)(errors.length, "error", "errors", false)} parsing`];
|
|
33
|
+
for (const { code, line, column } of errors) {
|
|
34
|
+
message.push(` ${code} at line ${line}, column ${column}`);
|
|
35
|
+
}
|
|
36
|
+
super(message.join("\n"));
|
|
37
|
+
this.errors = errors;
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
function parseJsonc(data, options = {}) {
|
|
41
|
+
const { disallowComments = false, allowTrailingComma = true } = options;
|
|
42
|
+
if (!data)
|
|
43
|
+
return void 0;
|
|
44
|
+
const errors = [];
|
|
45
|
+
const result = (0, import_jsonc_parser.parse)(data, errors, {
|
|
46
|
+
disallowComments,
|
|
47
|
+
allowTrailingComma,
|
|
48
|
+
allowEmptyContent: false
|
|
49
|
+
});
|
|
50
|
+
if (errors.length === 0)
|
|
51
|
+
return result;
|
|
52
|
+
const offsets = data.split(import_node_os.EOL).reduce(({ offsets: offsets2, offset }, line) => {
|
|
53
|
+
offset += line.length + import_node_os.EOL.length;
|
|
54
|
+
offsets2.push(offset);
|
|
55
|
+
return { offsets: offsets2, offset };
|
|
56
|
+
}, { offset: 0, offsets: [0] }).offsets;
|
|
57
|
+
function resolveOffset(offset) {
|
|
58
|
+
for (let i = offsets.length - 1; i > 0; i--) {
|
|
59
|
+
const lineOffset = offsets[i];
|
|
60
|
+
if (offset < lineOffset)
|
|
61
|
+
continue;
|
|
62
|
+
return { line: i + 1, column: offset - lineOffset + 1 };
|
|
63
|
+
}
|
|
64
|
+
return { line: 1, column: offset + 1 };
|
|
65
|
+
}
|
|
66
|
+
throw new JsoncError(errors.map((error) => {
|
|
67
|
+
const code = (0, import_jsonc_parser.printParseErrorCode)(error.error);
|
|
68
|
+
return { code, ...resolveOffset(error.offset) };
|
|
69
|
+
}));
|
|
70
|
+
}
|
|
71
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
72
|
+
0 && (module.exports = {
|
|
73
|
+
JsoncError,
|
|
74
|
+
parseJsonc
|
|
75
|
+
});
|
|
76
|
+
//# sourceMappingURL=jsonc.cjs.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/utils/jsonc.ts"],
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAoB;AAEpB,0BAA2C;AAE3C,oBAAsB;AASf,IAAM,aAAN,cAAyB,MAAM;AAAA,EACpC,YAAmB,QAA2D;AAC5E,UAAM,UAAU,CAAE,aAAS,qBAAM,OAAO,QAAQ,SAAS,UAAU,KAAK,CAAC,UAAW;AAEpF,eAAW,EAAE,MAAM,MAAM,OAAO,KAAK,QAAQ;AAC3C,cAAQ,KAAK,KAAK,IAAI,YAAY,IAAI,YAAY,MAAM,EAAE;AAAA,IAC5D;AAEA,UAAM,QAAQ,KAAK,IAAI,CAAC;AAPP;AAAA,EAQnB;AACF;AAEO,SAAS,WACZ,MACA,UAAwB,CAAC,GACxB;AACH,QAAM,EAAE,mBAAmB,OAAO,qBAAqB,KAAK,IAAI;AAEhE,MAAI,CAAE;AAAM,WAAO;AACnB,QAAM,SAAuB,CAAC;AAC9B,QAAM,aAAS,2BAAM,MAAM,QAAQ;AAAA,IACjC;AAAA,IACA;AAAA,IACA,mBAAmB;AAAA,EACrB,CAAC;AAED,MAAI,OAAO,WAAW;AAAG,WAAO;AAEhC,QAAM,UAAU,KAAK,MAAM,kBAAG,EAAE,OAAO,CAAC,EAAE,SAAAA,UAAS,OAAO,GAAG,SAAS;AACpE,cAAU,KAAK,SAAS,mBAAI;AAC5B,IAAAA,SAAQ,KAAK,MAAM;AACnB,WAAO,EAAE,SAAAA,UAAS,OAAO;AAAA,EAC3B,GAAG,EAAE,QAAQ,GAAG,SAAS,CAAE,CAAE,EAAE,CAAC,EAAE;AAElC,WAAS,cAAc,QAAkD;AACvE,aAAS,IAAI,QAAQ,SAAS,GAAG,IAAI,GAAG,KAAK;AAC3C,YAAM,aAAa,QAAQ,CAAC;AAC5B,UAAI,SAAS;AAAY;AACzB,aAAO,EAAE,MAAM,IAAI,GAAG,QAAQ,SAAS,aAAa,EAAE;AAAA,IACxD;AAEA,WAAO,EAAE,MAAM,GAAG,QAAQ,SAAS,EAAE;AAAA,EACvC;AAEA,QAAM,IAAI,WAAW,OAAO,IAAI,CAAC,UAAU;AACzC,UAAM,WAAO,yCAAoB,MAAM,KAAK;AAC5C,WAAO,EAAE,MAAM,GAAG,cAAc,MAAM,MAAM,EAAE;AAAA,EAChD,CAAC,CAAC;AACJ;",
|
|
5
|
+
"names": ["offsets"]
|
|
6
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface JsoncOptions {
|
|
2
|
+
disallowComments?: boolean;
|
|
3
|
+
allowTrailingComma?: boolean;
|
|
4
|
+
}
|
|
5
|
+
export declare class JsoncError extends Error {
|
|
6
|
+
errors: {
|
|
7
|
+
code: string;
|
|
8
|
+
line: number;
|
|
9
|
+
column: number;
|
|
10
|
+
}[];
|
|
11
|
+
constructor(errors: {
|
|
12
|
+
code: string;
|
|
13
|
+
line: number;
|
|
14
|
+
column: number;
|
|
15
|
+
}[]);
|
|
16
|
+
}
|
|
17
|
+
export declare function parseJsonc<T = any>(data: string | null | undefined, options?: JsoncOptions): T;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
// utils/jsonc.ts
|
|
2
|
+
import { EOL } from "node:os";
|
|
3
|
+
import { parse, printParseErrorCode } from "jsonc-parser";
|
|
4
|
+
import { $plur } from "../logging/colors.mjs";
|
|
5
|
+
var JsoncError = class extends Error {
|
|
6
|
+
constructor(errors) {
|
|
7
|
+
const message = [`Found ${$plur(errors.length, "error", "errors", false)} parsing`];
|
|
8
|
+
for (const { code, line, column } of errors) {
|
|
9
|
+
message.push(` ${code} at line ${line}, column ${column}`);
|
|
10
|
+
}
|
|
11
|
+
super(message.join("\n"));
|
|
12
|
+
this.errors = errors;
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
function parseJsonc(data, options = {}) {
|
|
16
|
+
const { disallowComments = false, allowTrailingComma = true } = options;
|
|
17
|
+
if (!data)
|
|
18
|
+
return void 0;
|
|
19
|
+
const errors = [];
|
|
20
|
+
const result = parse(data, errors, {
|
|
21
|
+
disallowComments,
|
|
22
|
+
allowTrailingComma,
|
|
23
|
+
allowEmptyContent: false
|
|
24
|
+
});
|
|
25
|
+
if (errors.length === 0)
|
|
26
|
+
return result;
|
|
27
|
+
const offsets = data.split(EOL).reduce(({ offsets: offsets2, offset }, line) => {
|
|
28
|
+
offset += line.length + EOL.length;
|
|
29
|
+
offsets2.push(offset);
|
|
30
|
+
return { offsets: offsets2, offset };
|
|
31
|
+
}, { offset: 0, offsets: [0] }).offsets;
|
|
32
|
+
function resolveOffset(offset) {
|
|
33
|
+
for (let i = offsets.length - 1; i > 0; i--) {
|
|
34
|
+
const lineOffset = offsets[i];
|
|
35
|
+
if (offset < lineOffset)
|
|
36
|
+
continue;
|
|
37
|
+
return { line: i + 1, column: offset - lineOffset + 1 };
|
|
38
|
+
}
|
|
39
|
+
return { line: 1, column: offset + 1 };
|
|
40
|
+
}
|
|
41
|
+
throw new JsoncError(errors.map((error) => {
|
|
42
|
+
const code = printParseErrorCode(error.error);
|
|
43
|
+
return { code, ...resolveOffset(error.offset) };
|
|
44
|
+
}));
|
|
45
|
+
}
|
|
46
|
+
export {
|
|
47
|
+
JsoncError,
|
|
48
|
+
parseJsonc
|
|
49
|
+
};
|
|
50
|
+
//# sourceMappingURL=jsonc.mjs.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/utils/jsonc.ts"],
|
|
4
|
+
"mappings": ";AAAA,SAAS,WAAW;AAEpB,SAAS,OAAO,2BAA2B;AAE3C,SAAS,aAAa;AASf,IAAM,aAAN,cAAyB,MAAM;AAAA,EACpC,YAAmB,QAA2D;AAC5E,UAAM,UAAU,CAAE,SAAS,MAAM,OAAO,QAAQ,SAAS,UAAU,KAAK,CAAC,UAAW;AAEpF,eAAW,EAAE,MAAM,MAAM,OAAO,KAAK,QAAQ;AAC3C,cAAQ,KAAK,KAAK,IAAI,YAAY,IAAI,YAAY,MAAM,EAAE;AAAA,IAC5D;AAEA,UAAM,QAAQ,KAAK,IAAI,CAAC;AAPP;AAAA,EAQnB;AACF;AAEO,SAAS,WACZ,MACA,UAAwB,CAAC,GACxB;AACH,QAAM,EAAE,mBAAmB,OAAO,qBAAqB,KAAK,IAAI;AAEhE,MAAI,CAAE;AAAM,WAAO;AACnB,QAAM,SAAuB,CAAC;AAC9B,QAAM,SAAS,MAAM,MAAM,QAAQ;AAAA,IACjC;AAAA,IACA;AAAA,IACA,mBAAmB;AAAA,EACrB,CAAC;AAED,MAAI,OAAO,WAAW;AAAG,WAAO;AAEhC,QAAM,UAAU,KAAK,MAAM,GAAG,EAAE,OAAO,CAAC,EAAE,SAAAA,UAAS,OAAO,GAAG,SAAS;AACpE,cAAU,KAAK,SAAS,IAAI;AAC5B,IAAAA,SAAQ,KAAK,MAAM;AACnB,WAAO,EAAE,SAAAA,UAAS,OAAO;AAAA,EAC3B,GAAG,EAAE,QAAQ,GAAG,SAAS,CAAE,CAAE,EAAE,CAAC,EAAE;AAElC,WAAS,cAAc,QAAkD;AACvE,aAAS,IAAI,QAAQ,SAAS,GAAG,IAAI,GAAG,KAAK;AAC3C,YAAM,aAAa,QAAQ,CAAC;AAC5B,UAAI,SAAS;AAAY;AACzB,aAAO,EAAE,MAAM,IAAI,GAAG,QAAQ,SAAS,aAAa,EAAE;AAAA,IACxD;AAEA,WAAO,EAAE,MAAM,GAAG,QAAQ,SAAS,EAAE;AAAA,EACvC;AAEA,QAAM,IAAI,WAAW,OAAO,IAAI,CAAC,UAAU;AACzC,UAAM,OAAO,oBAAoB,MAAM,KAAK;AAC5C,WAAO,EAAE,MAAM,GAAG,cAAc,MAAM,MAAM,EAAE;AAAA,EAChD,CAAC,CAAC;AACJ;",
|
|
5
|
+
"names": ["offsets"]
|
|
6
|
+
}
|
package/dist/utils.cjs
CHANGED
|
@@ -19,6 +19,7 @@ var utils_exports = {};
|
|
|
19
19
|
module.exports = __toCommonJS(utils_exports);
|
|
20
20
|
__reExport(utils_exports, require("./utils/diff.cjs"), module.exports);
|
|
21
21
|
__reExport(utils_exports, require("./utils/exec.cjs"), module.exports);
|
|
22
|
+
__reExport(utils_exports, require("./utils/jsonc.cjs"), module.exports);
|
|
22
23
|
__reExport(utils_exports, require("./utils/match.cjs"), module.exports);
|
|
23
24
|
__reExport(utils_exports, require("./utils/options.cjs"), module.exports);
|
|
24
25
|
__reExport(utils_exports, require("./utils/singleton.cjs"), module.exports);
|
|
@@ -27,6 +28,7 @@ __reExport(utils_exports, require("./utils/walk.cjs"), module.exports);
|
|
|
27
28
|
0 && (module.exports = {
|
|
28
29
|
...require("./utils/diff.cjs"),
|
|
29
30
|
...require("./utils/exec.cjs"),
|
|
31
|
+
...require("./utils/jsonc.cjs"),
|
|
30
32
|
...require("./utils/match.cjs"),
|
|
31
33
|
...require("./utils/options.cjs"),
|
|
32
34
|
...require("./utils/singleton.cjs"),
|
package/dist/utils.cjs.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/utils.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA,0BAAc,6BAAd;AACA,0BAAc,6BADd;AAEA,0BAAc,8BAFd;AAGA,0BAAc,
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA,0BAAc,6BAAd;AACA,0BAAc,6BADd;AAEA,0BAAc,8BAFd;AAGA,0BAAc,8BAHd;AAIA,0BAAc,gCAJd;AAKA,0BAAc,kCALd;AAMA,0BAAc,6BANd;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/dist/utils.d.ts
CHANGED
package/dist/utils.mjs
CHANGED
package/dist/utils.mjs.map
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@plugjs/plug",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.29",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.cjs",
|
|
6
6
|
"module": "./dist/index.mjs",
|
|
@@ -116,6 +116,7 @@
|
|
|
116
116
|
"@plugjs/tsrun": "^0.4.19",
|
|
117
117
|
"@types/node": "<19",
|
|
118
118
|
"esbuild": "^0.19.2",
|
|
119
|
+
"jsonc-parser": "^3.2.0",
|
|
119
120
|
"picomatch": "^2.3.1"
|
|
120
121
|
},
|
|
121
122
|
"devDependencies": {
|
package/src/async.ts
CHANGED
|
@@ -15,15 +15,14 @@ import type { Context } from './pipe'
|
|
|
15
15
|
*/
|
|
16
16
|
export function runAsync<T>(
|
|
17
17
|
context: Context,
|
|
18
|
-
taskName: string,
|
|
19
18
|
callback: () => Promise<T>,
|
|
20
19
|
): Promise<T> {
|
|
21
20
|
return storage.run(context, async () => {
|
|
22
21
|
try {
|
|
23
|
-
tasks.add(taskName)
|
|
22
|
+
tasks.add(context.taskName)
|
|
24
23
|
return await callback()
|
|
25
24
|
} finally {
|
|
26
|
-
tasks.delete(taskName)
|
|
25
|
+
tasks.delete(context.taskName)
|
|
27
26
|
}
|
|
28
27
|
})
|
|
29
28
|
}
|
package/src/build.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { assert } from './asserts'
|
|
2
2
|
import { runAsync } from './async'
|
|
3
|
-
import { $gry, $ms, $p, $t, getLogger, logOptions } from './logging'
|
|
3
|
+
import { $gry, $ms, $p, $plur, $t, getLogger, logOptions } from './logging'
|
|
4
4
|
import { Context, ContextPromises, PipeImpl } from './pipe'
|
|
5
5
|
import { findCaller } from './utils/caller'
|
|
6
6
|
import { getSingleton } from './utils/singleton'
|
|
@@ -134,7 +134,7 @@ class TaskImpl<R extends Result> implements Task<R> {
|
|
|
134
134
|
const now = Date.now()
|
|
135
135
|
|
|
136
136
|
/* Run asynchronously in an asynchronous context */
|
|
137
|
-
const promise = runAsync(context,
|
|
137
|
+
const promise = runAsync(context, async () => {
|
|
138
138
|
return await this._def.call(build) || undefined
|
|
139
139
|
}).then(async (result) => {
|
|
140
140
|
const level = taskName.startsWith('_') ? 'info' : 'notice'
|
|
@@ -205,7 +205,7 @@ export function build<
|
|
|
205
205
|
} catch (error) {
|
|
206
206
|
if (state.fails.size) {
|
|
207
207
|
logger.error('')
|
|
208
|
-
logger.error(state.fails.size,
|
|
208
|
+
logger.error($plur(state.fails.size, 'task', 'tasks'), 'failed:')
|
|
209
209
|
state.fails.forEach((task) => logger.error($gry('*'), $t(task.name)))
|
|
210
210
|
logger.error('')
|
|
211
211
|
}
|
package/src/fork.ts
CHANGED
|
@@ -209,7 +209,7 @@ if ((process.argv[1] === requireFilename(__fileurl)) && (process.send)) {
|
|
|
209
209
|
context.log.debug('Message from parent process for PID', process.pid, message)
|
|
210
210
|
|
|
211
211
|
/* Contextualize this run, and go! */
|
|
212
|
-
const result = runAsync(context,
|
|
212
|
+
const result = runAsync(context, async () => {
|
|
213
213
|
/* Check that we have a proper script file name */
|
|
214
214
|
assert(resolveFile(scriptFile), `Script file ${$p(scriptFile)} not found`)
|
|
215
215
|
const script = await import(scriptFile)
|
package/src/helpers.ts
CHANGED
|
@@ -2,11 +2,11 @@ import { mkdtempSync, readFileSync } from 'node:fs'
|
|
|
2
2
|
import { tmpdir } from 'node:os'
|
|
3
3
|
import { join } from 'node:path'
|
|
4
4
|
|
|
5
|
-
import { assert, assertPromises } from './asserts'
|
|
5
|
+
import { BuildFailure, assert, assertPromises } from './asserts'
|
|
6
6
|
import { requireContext } from './async'
|
|
7
7
|
import { Files } from './files'
|
|
8
8
|
import { rm } from './fs'
|
|
9
|
-
import { $p, log } from './logging'
|
|
9
|
+
import { $gry, $p, $plur, $wht, $ylw, log } from './logging'
|
|
10
10
|
import {
|
|
11
11
|
commonPath,
|
|
12
12
|
getAbsoluteParent,
|
|
@@ -16,6 +16,7 @@ import {
|
|
|
16
16
|
} from './paths'
|
|
17
17
|
import { PipeImpl } from './pipe'
|
|
18
18
|
import { RunBuild } from './plugs/build'
|
|
19
|
+
import { JsoncError, parseJsonc } from './utils'
|
|
19
20
|
import { execChild } from './utils/exec'
|
|
20
21
|
import { parseOptions } from './utils/options'
|
|
21
22
|
import { walk } from './utils/walk'
|
|
@@ -260,11 +261,11 @@ export function exec(
|
|
|
260
261
|
}
|
|
261
262
|
|
|
262
263
|
/**
|
|
263
|
-
* Read and parse a JSON file, throwing an error if not found.
|
|
264
|
+
* Read and parse a JSON/JSONC file, throwing an error if not found.
|
|
264
265
|
*
|
|
265
266
|
* @params file The JSON file to parse
|
|
266
267
|
*/
|
|
267
|
-
export function parseJson(file: string): any {
|
|
268
|
+
export function parseJson(file: string, strict: boolean = false): any {
|
|
268
269
|
const jsonFile = requireContext().resolve(file)
|
|
269
270
|
let jsonText: string
|
|
270
271
|
try {
|
|
@@ -276,8 +277,19 @@ export function parseJson(file: string): any {
|
|
|
276
277
|
}
|
|
277
278
|
|
|
278
279
|
try {
|
|
279
|
-
return
|
|
280
|
+
return parseJsonc(jsonText, {
|
|
281
|
+
disallowComments: strict,
|
|
282
|
+
allowTrailingComma: ! strict,
|
|
283
|
+
})
|
|
280
284
|
} catch (error) {
|
|
281
|
-
|
|
285
|
+
if (error instanceof JsoncError) {
|
|
286
|
+
const errors = error.errors
|
|
287
|
+
log.error(`Found ${$plur(errors.length, 'error', 'errors')} parsing ${$p(jsonFile)}`)
|
|
288
|
+
for (const e of errors) {
|
|
289
|
+
log.error(` ${$wht(e.code)} ${$gry('at line')} ${$ylw(e.line)}${$gry(', column')} ${$ylw(e.column)}`)
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
throw new BuildFailure()
|
|
293
|
+
} else throw error
|
|
282
294
|
}
|
|
283
295
|
}
|
package/src/logging/colors.ts
CHANGED
|
@@ -127,3 +127,14 @@ export function $wht(string: any): string {
|
|
|
127
127
|
export function $und(string: any): string {
|
|
128
128
|
return colorize(und, string)
|
|
129
129
|
}
|
|
130
|
+
|
|
131
|
+
/** Pluralize (not really colors, but peace, love unity and respect). */
|
|
132
|
+
export function $plur(number: number, singular: string, plural: string, colorize: boolean = _colors): string {
|
|
133
|
+
return colorize ?
|
|
134
|
+
number === 1 ?
|
|
135
|
+
`${$ylw(number)} ${singular}` :
|
|
136
|
+
`${$ylw(number)} ${plural}` :
|
|
137
|
+
number === 1 ?
|
|
138
|
+
`${number} ${singular}` :
|
|
139
|
+
`${number} ${plural}`
|
|
140
|
+
}
|
package/src/logging/report.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { BuildFailure } from '../asserts'
|
|
2
2
|
import { readFile } from '../fs'
|
|
3
|
-
import { $blu, $cyn, $gry, $red, $und, $wht, $ylw } from './colors'
|
|
4
|
-
import { ERROR, logLevels, NOTICE, WARN } from './levels'
|
|
5
|
-
import { logOptions } from './options'
|
|
3
|
+
import { $blu, $cyn, $gry, $plur, $red, $und, $wht, $ylw } from './colors'
|
|
6
4
|
import { githubAnnotation } from './github'
|
|
5
|
+
import { ERROR, NOTICE, WARN, logLevels } from './levels'
|
|
6
|
+
import { logOptions } from './options'
|
|
7
7
|
|
|
8
8
|
import type { AbsolutePath } from '../paths'
|
|
9
9
|
import type { LogEmitter } from './emit'
|
|
@@ -427,12 +427,12 @@ export class ReportImpl implements Report {
|
|
|
427
427
|
|
|
428
428
|
const status: any[] = [ 'Found' ]
|
|
429
429
|
if (this.errors) {
|
|
430
|
-
status.push($
|
|
430
|
+
status.push($plur(this.errors, 'error', 'errors'))
|
|
431
431
|
}
|
|
432
432
|
|
|
433
433
|
if (this.warnings) {
|
|
434
434
|
if (this.errors) status.push('and')
|
|
435
|
-
status.push($
|
|
435
|
+
status.push($plur(this.warnings, 'warning', 'warnings'))
|
|
436
436
|
}
|
|
437
437
|
|
|
438
438
|
if (this.errors || this.warnings) {
|
package/src/logging/spinner.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/* coverage ignore file */
|
|
2
2
|
|
|
3
3
|
import { runningTasks } from '../async'
|
|
4
|
-
import { $cyn, $gry, $t } from './colors'
|
|
4
|
+
import { $cyn, $gry, $plur, $t } from './colors'
|
|
5
5
|
import { logOptions } from './options'
|
|
6
6
|
|
|
7
7
|
/* ========================================================================== */
|
|
@@ -60,11 +60,11 @@ function spin(): void {
|
|
|
60
60
|
const pad = ''.padStart(_taskLength, ' ')
|
|
61
61
|
const names = tasks.map((task) => $t(task)).join($gry(', '))
|
|
62
62
|
|
|
63
|
-
const task = tasks.length
|
|
63
|
+
const task = $plur(tasks.length, 'task', 'tasks')
|
|
64
64
|
|
|
65
65
|
_nextSpin = (++ _nextSpin) % _spins.length
|
|
66
66
|
|
|
67
|
-
_output.write(`${zapSpinner}${pad} ${_spins[_nextSpin]} Running ${
|
|
67
|
+
_output.write(`${zapSpinner}${pad} ${_spins[_nextSpin]} Running ${task}: ${$gry(names)}`)
|
|
68
68
|
}
|
|
69
69
|
|
|
70
70
|
/* Start or stop the spinner */
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { EOL } from 'node:os'
|
|
2
|
+
|
|
3
|
+
import { parse, printParseErrorCode } from 'jsonc-parser'
|
|
4
|
+
|
|
5
|
+
import { $plur } from '../logging/colors'
|
|
6
|
+
|
|
7
|
+
import type { ParseError } from 'jsonc-parser'
|
|
8
|
+
|
|
9
|
+
export interface JsoncOptions {
|
|
10
|
+
disallowComments?: boolean;
|
|
11
|
+
allowTrailingComma?: boolean;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export class JsoncError extends Error {
|
|
15
|
+
constructor(public errors: { code: string, line: number, column: number } []) {
|
|
16
|
+
const message = [ `Found ${$plur(errors.length, 'error', 'errors', false)} parsing` ]
|
|
17
|
+
|
|
18
|
+
for (const { code, line, column } of errors) {
|
|
19
|
+
message.push(` ${code} at line ${line}, column ${column}`)
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
super(message.join('\n'))
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export function parseJsonc<T = any>(
|
|
27
|
+
data: string | null | undefined,
|
|
28
|
+
options: JsoncOptions = {},
|
|
29
|
+
): T {
|
|
30
|
+
const { disallowComments = false, allowTrailingComma = true } = options
|
|
31
|
+
|
|
32
|
+
if (! data) return undefined as T
|
|
33
|
+
const errors: ParseError[] = []
|
|
34
|
+
const result = parse(data, errors, {
|
|
35
|
+
disallowComments,
|
|
36
|
+
allowTrailingComma,
|
|
37
|
+
allowEmptyContent: false,
|
|
38
|
+
})
|
|
39
|
+
|
|
40
|
+
if (errors.length === 0) return result
|
|
41
|
+
|
|
42
|
+
const offsets = data.split(EOL).reduce(({ offsets, offset }, line) => {
|
|
43
|
+
offset += line.length + EOL.length
|
|
44
|
+
offsets.push(offset)
|
|
45
|
+
return { offsets, offset }
|
|
46
|
+
}, { offset: 0, offsets: [ 0 ] }).offsets
|
|
47
|
+
|
|
48
|
+
function resolveOffset(offset: number): { line: number, column: number } {
|
|
49
|
+
for (let i = offsets.length - 1; i > 0; i--) {
|
|
50
|
+
const lineOffset = offsets[i]!
|
|
51
|
+
if (offset < lineOffset) continue
|
|
52
|
+
return { line: i + 1, column: offset - lineOffset + 1 }
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
return { line: 1, column: offset + 1 }
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
throw new JsoncError(errors.map((error) => {
|
|
59
|
+
const code = printParseErrorCode(error.error)
|
|
60
|
+
return { code, ...resolveOffset(error.offset) }
|
|
61
|
+
}))
|
|
62
|
+
}
|