@plugjs/plug 0.4.0 → 0.4.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/dist/asserts.cjs +1 -1
- package/dist/asserts.cjs.map +1 -1
- package/dist/asserts.mjs +1 -1
- package/dist/asserts.mjs.map +1 -1
- package/dist/async.cjs +5 -20
- package/dist/async.cjs.map +2 -2
- package/dist/async.mjs +5 -20
- package/dist/async.mjs.map +2 -2
- package/dist/build.cjs +95 -70
- package/dist/build.cjs.map +2 -2
- package/dist/build.d.ts +6 -8
- package/dist/build.mjs +92 -67
- package/dist/build.mjs.map +2 -2
- package/dist/cli.mjs +1 -1
- package/dist/files.cjs +5 -3
- package/dist/files.cjs.map +1 -1
- package/dist/files.d.ts +2 -1
- package/dist/files.mjs +11 -4
- package/dist/files.mjs.map +1 -1
- package/dist/helpers.cjs +3 -4
- package/dist/helpers.cjs.map +1 -1
- package/dist/helpers.mjs +3 -4
- package/dist/helpers.mjs.map +1 -1
- package/dist/logging/options.cjs +3 -10
- package/dist/logging/options.cjs.map +1 -1
- package/dist/logging/options.d.ts +44 -1
- package/dist/logging/options.mjs +3 -10
- package/dist/logging/options.mjs.map +1 -1
- package/dist/plugs/build.cjs +4 -7
- package/dist/plugs/build.cjs.map +1 -1
- package/dist/plugs/build.mjs +2 -5
- package/dist/plugs/build.mjs.map +1 -1
- package/dist/plugs/debug.cjs +7 -9
- package/dist/plugs/debug.cjs.map +1 -1
- package/dist/plugs/debug.mjs +8 -10
- package/dist/plugs/debug.mjs.map +1 -1
- package/dist/types.cjs +12 -0
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.ts +33 -9
- package/dist/types.mjs +5 -0
- package/dist/types.mjs.map +2 -2
- package/dist/utils/diff.cjs +1 -4
- package/dist/utils/diff.cjs.map +1 -1
- package/dist/utils/diff.mjs +1 -4
- package/dist/utils/diff.mjs.map +1 -1
- package/dist/utils/{types.cjs → singleton.cjs} +14 -13
- package/dist/utils/singleton.cjs.map +6 -0
- package/dist/utils/singleton.d.ts +12 -0
- package/dist/utils/singleton.mjs +13 -0
- package/dist/utils/singleton.mjs.map +6 -0
- package/dist/utils.cjs +2 -2
- package/dist/utils.cjs.map +1 -1
- package/dist/utils.d.ts +1 -1
- package/dist/utils.mjs +1 -1
- package/package.json +1 -1
- package/src/asserts.ts +1 -1
- package/src/async.ts +6 -29
- package/src/build.ts +151 -117
- package/src/files.ts +14 -6
- package/src/helpers.ts +3 -4
- package/src/logging/options.ts +4 -13
- package/src/plugs/build.ts +2 -15
- package/src/plugs/debug.ts +10 -9
- package/src/types.ts +52 -23
- package/src/utils/diff.ts +1 -6
- package/src/utils/singleton.ts +19 -0
- package/src/utils.ts +1 -1
- package/dist/utils/types.cjs.map +0 -6
- package/dist/utils/types.d.ts +0 -4
- package/dist/utils/types.mjs +0 -12
- package/dist/utils/types.mjs.map +0 -6
- package/src/utils/types.ts +0 -11
package/dist/asserts.cjs
CHANGED
|
@@ -27,7 +27,7 @@ __export(asserts_exports, {
|
|
|
27
27
|
});
|
|
28
28
|
module.exports = __toCommonJS(asserts_exports);
|
|
29
29
|
var import_github = require("./logging/github.cjs");
|
|
30
|
-
var buildFailure = Symbol.for("plugjs:
|
|
30
|
+
var buildFailure = Symbol.for("plugjs:plug:types:BuildFailure");
|
|
31
31
|
var BuildFailure = class extends Error {
|
|
32
32
|
errors;
|
|
33
33
|
/** Construct a {@link BuildFailure} */
|
package/dist/asserts.cjs.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/asserts.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,oBAAiC;AAGjC,IAAM,eAAe,OAAO,IAAI,
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,oBAAiC;AAGjC,IAAM,eAAe,OAAO,IAAI,gCAAgC;AAGzD,IAAM,eAAN,cAA2B,MAAM;AAAA,EAC7B;AAAA;AAAA,EAGT,YAAY,SAA8B,SAAgB,CAAC,GAAG;AAC5D,UAAM,WAAW,EAAE;AAGnB,QAAI,SAAS;AACX,0CAAiB,EAAE,MAAM,SAAS,OAAO,gBAAgB,GAAG,OAAO;AAAA,IACrE;AAGA,UAAM,kBAAkB,MAAM,YAAY;AAC1C,QAAI,OAAO;AAAQ,WAAK,SAAS,OAAO,OAAO,CAAE,GAAG,MAAO,CAAC;AAAA,EAC9D;AAAA,EAEA,OAAO,OAAqB;AAC1B,WAAO,IAAI,aAAa,QAAW,CAAC,CAAC;AAAA,EACvC;AAAA,EAEA,OAAO,YAAY,SAA+B;AAChD,WAAO,IAAI,aAAa,SAAS,CAAC,CAAC;AAAA,EACrC;AAAA,EAEA,OAAO,WAAW,QAA6B;AAC7C,WAAO,IAAI,aAAa,QAAW,MAAM;AAAA,EAC3C;AAAA,EAEA,QAAQ,OAAO,WAAW,EAAE,UAAwB;AAClD,WAAO,YAAY,SAAS,YAAY,MAAM;AAAA,EAChD;AAAA,EAEA,OAAO;AACL,IAAC,KAAK,UAAkB,YAAY,IAAI;AACxC,SAAK,UAAU,OAAO,KAAK;AAAA,EAC7B;AACF;AAGA,eAAsB,eAAkB,UAA4C;AAElF,QAAM,cAAc,MAAM,QAAQ,WAAW,QAAQ;AAGrD,QAAM,UAAe,CAAC;AACtB,QAAM,WAAW,oBAAI,IAAS;AAE9B,cAAY,QAAQ,CAAC,eAAe;AAClC,QAAI,WAAW,WAAW,aAAa;AACrC,cAAQ,KAAK,WAAW,KAAK;AAAA,IAC/B,OAAO;AACL,eAAS,IAAI,WAAW,MAAM;AAAA,IAChC;AAAA,EACF,CAAC;AAGD,MAAI,SAAS;AAAM,UAAM,aAAa,WAAW,CAAE,GAAG,QAAS,CAAC;AAEhE,SAAO;AACT;AAGO,SAAS,OAAO,WAAgB,SAAoC;AACzE,MAAI,CAAE;AAAW,UAAM,aAAa,YAAY,OAAO;AACzD;AAGO,SAAS,KAAK,SAAwB;AAC3C,QAAM,aAAa,YAAY,OAAO;AACxC;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/dist/asserts.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// asserts.ts
|
|
2
2
|
import { githubAnnotation } from "./logging/github.mjs";
|
|
3
|
-
var buildFailure = Symbol.for("plugjs:
|
|
3
|
+
var buildFailure = Symbol.for("plugjs:plug:types:BuildFailure");
|
|
4
4
|
var BuildFailure = class extends Error {
|
|
5
5
|
errors;
|
|
6
6
|
/** Construct a {@link BuildFailure} */
|
package/dist/asserts.mjs.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/asserts.ts"],
|
|
4
|
-
"mappings": ";AAIA,SAAS,wBAAwB;AAGjC,IAAM,eAAe,OAAO,IAAI,
|
|
4
|
+
"mappings": ";AAIA,SAAS,wBAAwB;AAGjC,IAAM,eAAe,OAAO,IAAI,gCAAgC;AAGzD,IAAM,eAAN,cAA2B,MAAM;AAAA,EAC7B;AAAA;AAAA,EAGT,YAAY,SAA8B,SAAgB,CAAC,GAAG;AAC5D,UAAM,WAAW,EAAE;AAGnB,QAAI,SAAS;AACX,uBAAiB,EAAE,MAAM,SAAS,OAAO,gBAAgB,GAAG,OAAO;AAAA,IACrE;AAGA,UAAM,kBAAkB,MAAM,YAAY;AAC1C,QAAI,OAAO;AAAQ,WAAK,SAAS,OAAO,OAAO,CAAE,GAAG,MAAO,CAAC;AAAA,EAC9D;AAAA,EAEA,OAAO,OAAqB;AAC1B,WAAO,IAAI,aAAa,QAAW,CAAC,CAAC;AAAA,EACvC;AAAA,EAEA,OAAO,YAAY,SAA+B;AAChD,WAAO,IAAI,aAAa,SAAS,CAAC,CAAC;AAAA,EACrC;AAAA,EAEA,OAAO,WAAW,QAA6B;AAC7C,WAAO,IAAI,aAAa,QAAW,MAAM;AAAA,EAC3C;AAAA,EAEA,QAAQ,OAAO,WAAW,EAAE,UAAwB;AAClD,WAAO,YAAY,SAAS,YAAY,MAAM;AAAA,EAChD;AAAA,EAEA,OAAO;AACL,IAAC,KAAK,UAAkB,YAAY,IAAI;AACxC,SAAK,UAAU,OAAO,KAAK;AAAA,EAC7B;AACF;AAGA,eAAsB,eAAkB,UAA4C;AAElF,QAAM,cAAc,MAAM,QAAQ,WAAW,QAAQ;AAGrD,QAAM,UAAe,CAAC;AACtB,QAAM,WAAW,oBAAI,IAAS;AAE9B,cAAY,QAAQ,CAAC,eAAe;AAClC,QAAI,WAAW,WAAW,aAAa;AACrC,cAAQ,KAAK,WAAW,KAAK;AAAA,IAC/B,OAAO;AACL,eAAS,IAAI,WAAW,MAAM;AAAA,IAChC;AAAA,EACF,CAAC;AAGD,MAAI,SAAS;AAAM,UAAM,aAAa,WAAW,CAAE,GAAG,QAAS,CAAC;AAEhE,SAAO;AACT;AAGO,SAAS,OAAO,WAAgB,SAAoC;AACzE,MAAI,CAAE;AAAW,UAAM,aAAa,YAAY,OAAO;AACzD;AAGO,SAAS,KAAK,SAAwB;AAC3C,QAAM,aAAa,YAAY,OAAO;AACxC;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/dist/async.cjs
CHANGED
|
@@ -28,6 +28,7 @@ __export(async_exports, {
|
|
|
28
28
|
module.exports = __toCommonJS(async_exports);
|
|
29
29
|
var import_node_async_hooks = require("node:async_hooks");
|
|
30
30
|
var import_asserts = require("./asserts.cjs");
|
|
31
|
+
var import_singleton = require("./utils/singleton.cjs");
|
|
31
32
|
function runAsync(context, taskName, callback) {
|
|
32
33
|
return storage.run(context, async () => {
|
|
33
34
|
try {
|
|
@@ -49,26 +50,10 @@ function requireContext() {
|
|
|
49
50
|
function runningTasks() {
|
|
50
51
|
return [...tasks].sort();
|
|
51
52
|
}
|
|
52
|
-
var storageKey = Symbol.for("plugjs
|
|
53
|
-
var tasksKey = Symbol.for("plugjs
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
if (!storage2) {
|
|
57
|
-
storage2 = new import_node_async_hooks.AsyncLocalStorage();
|
|
58
|
-
globalThis[storageKey] = storage2;
|
|
59
|
-
}
|
|
60
|
-
return storage2;
|
|
61
|
-
}
|
|
62
|
-
function getTasks() {
|
|
63
|
-
let tasks2 = globalThis[tasksKey];
|
|
64
|
-
if (!tasks2) {
|
|
65
|
-
tasks2 = /* @__PURE__ */ new Set();
|
|
66
|
-
globalThis[tasksKey] = tasks2;
|
|
67
|
-
}
|
|
68
|
-
return tasks2;
|
|
69
|
-
}
|
|
70
|
-
var storage = getStorage();
|
|
71
|
-
var tasks = getTasks();
|
|
53
|
+
var storageKey = Symbol.for("plugjs:plug:singleton:contextStorage");
|
|
54
|
+
var tasksKey = Symbol.for("plugjs:plug:singleton:runningTasksStorage");
|
|
55
|
+
var storage = (0, import_singleton.getSingleton)(storageKey, () => new import_node_async_hooks.AsyncLocalStorage());
|
|
56
|
+
var tasks = (0, import_singleton.getSingleton)(tasksKey, () => /* @__PURE__ */ new Set());
|
|
72
57
|
// Annotate the CommonJS export names for ESM import in node:
|
|
73
58
|
0 && (module.exports = {
|
|
74
59
|
currentContext,
|
package/dist/async.cjs.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/async.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,8BAAkC;AAElC,qBAAuB;
|
|
5
|
-
"names": [
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,8BAAkC;AAElC,qBAAuB;AACvB,uBAA6B;AAYtB,SAAS,SACZ,SACA,UACA,UACU;AACZ,SAAO,QAAQ,IAAI,SAAS,YAAY;AACtC,QAAI;AACF,YAAM,IAAI,QAAQ;AAClB,aAAO,MAAM,SAAS;AAAA,IACxB,UAAE;AACA,YAAM,OAAO,QAAQ;AAAA,IACvB;AAAA,EACF,CAAC;AACH;AAMO,SAAS,iBAAsC;AACpD,SAAO,QAAQ,SAAS;AAC1B;AAMO,SAAS,iBAA0B;AACxC,QAAM,UAAU,QAAQ,SAAS;AACjC,6BAAO,SAAS,oCAAoC;AACpD,SAAO;AACT;AAKO,SAAS,eAAyB;AACvC,SAAO,CAAE,GAAG,KAAM,EAAE,KAAK;AAC3B;AAOA,IAAM,aAAa,OAAO,IAAI,sCAAsC;AACpE,IAAM,WAAW,OAAO,IAAI,2CAA2C;AAEvE,IAAM,cAAU,+BAAa,YAAY,MAAM,IAAI,0CAA2B,CAAC;AAC/E,IAAM,YAAQ,+BAAa,UAAU,MAAM,oBAAI,IAAY,CAAC;",
|
|
5
|
+
"names": []
|
|
6
6
|
}
|
package/dist/async.mjs
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// async.ts
|
|
2
2
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
3
3
|
import { assert } from "./asserts.mjs";
|
|
4
|
+
import { getSingleton } from "./utils/singleton.mjs";
|
|
4
5
|
function runAsync(context, taskName, callback) {
|
|
5
6
|
return storage.run(context, async () => {
|
|
6
7
|
try {
|
|
@@ -22,26 +23,10 @@ function requireContext() {
|
|
|
22
23
|
function runningTasks() {
|
|
23
24
|
return [...tasks].sort();
|
|
24
25
|
}
|
|
25
|
-
var storageKey = Symbol.for("plugjs
|
|
26
|
-
var tasksKey = Symbol.for("plugjs
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
if (!storage2) {
|
|
30
|
-
storage2 = new AsyncLocalStorage();
|
|
31
|
-
globalThis[storageKey] = storage2;
|
|
32
|
-
}
|
|
33
|
-
return storage2;
|
|
34
|
-
}
|
|
35
|
-
function getTasks() {
|
|
36
|
-
let tasks2 = globalThis[tasksKey];
|
|
37
|
-
if (!tasks2) {
|
|
38
|
-
tasks2 = /* @__PURE__ */ new Set();
|
|
39
|
-
globalThis[tasksKey] = tasks2;
|
|
40
|
-
}
|
|
41
|
-
return tasks2;
|
|
42
|
-
}
|
|
43
|
-
var storage = getStorage();
|
|
44
|
-
var tasks = getTasks();
|
|
26
|
+
var storageKey = Symbol.for("plugjs:plug:singleton:contextStorage");
|
|
27
|
+
var tasksKey = Symbol.for("plugjs:plug:singleton:runningTasksStorage");
|
|
28
|
+
var storage = getSingleton(storageKey, () => new AsyncLocalStorage());
|
|
29
|
+
var tasks = getSingleton(tasksKey, () => /* @__PURE__ */ new Set());
|
|
45
30
|
export {
|
|
46
31
|
currentContext,
|
|
47
32
|
requireContext,
|
package/dist/async.mjs.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/async.ts"],
|
|
4
|
-
"mappings": ";AAAA,SAAS,yBAAyB;AAElC,SAAS,cAAc;
|
|
5
|
-
"names": [
|
|
4
|
+
"mappings": ";AAAA,SAAS,yBAAyB;AAElC,SAAS,cAAc;AACvB,SAAS,oBAAoB;AAYtB,SAAS,SACZ,SACA,UACA,UACU;AACZ,SAAO,QAAQ,IAAI,SAAS,YAAY;AACtC,QAAI;AACF,YAAM,IAAI,QAAQ;AAClB,aAAO,MAAM,SAAS;AAAA,IACxB,UAAE;AACA,YAAM,OAAO,QAAQ;AAAA,IACvB;AAAA,EACF,CAAC;AACH;AAMO,SAAS,iBAAsC;AACpD,SAAO,QAAQ,SAAS;AAC1B;AAMO,SAAS,iBAA0B;AACxC,QAAM,UAAU,QAAQ,SAAS;AACjC,SAAO,SAAS,oCAAoC;AACpD,SAAO;AACT;AAKO,SAAS,eAAyB;AACvC,SAAO,CAAE,GAAG,KAAM,EAAE,KAAK;AAC3B;AAOA,IAAM,aAAa,OAAO,IAAI,sCAAsC;AACpE,IAAM,WAAW,OAAO,IAAI,2CAA2C;AAEvE,IAAM,UAAU,aAAa,YAAY,MAAM,IAAI,kBAA2B,CAAC;AAC/E,IAAM,QAAQ,aAAa,UAAU,MAAM,oBAAI,IAAY,CAAC;",
|
|
5
|
+
"names": []
|
|
6
6
|
}
|
package/dist/build.cjs
CHANGED
|
@@ -32,109 +32,116 @@ var import_async = require("./async.cjs");
|
|
|
32
32
|
var import_logging = require("./logging.cjs");
|
|
33
33
|
var import_pipe = require("./pipe.cjs");
|
|
34
34
|
var import_caller = require("./utils/caller.cjs");
|
|
35
|
-
var
|
|
36
|
-
|
|
37
|
-
|
|
35
|
+
var import_singleton = require("./utils/singleton.cjs");
|
|
36
|
+
var import_types = require("./types.cjs");
|
|
37
|
+
var taskCallMarker = Symbol.for("plugjs:plug:types:TaskCall");
|
|
38
|
+
function isTaskCall(something) {
|
|
39
|
+
return something[taskCallMarker] === taskCallMarker;
|
|
38
40
|
}
|
|
39
|
-
function
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
41
|
+
function merge(a, b) {
|
|
42
|
+
return Object.assign(/* @__PURE__ */ Object.create(null), a, b);
|
|
43
|
+
}
|
|
44
|
+
function makeState(state) {
|
|
45
|
+
const {
|
|
46
|
+
cache = /* @__PURE__ */ new Map(),
|
|
47
|
+
fails = /* @__PURE__ */ new Set(),
|
|
48
|
+
stack = [],
|
|
49
|
+
tasks = {},
|
|
50
|
+
props = {}
|
|
51
|
+
} = state;
|
|
52
|
+
return { cache, fails, stack, tasks, props };
|
|
53
|
+
}
|
|
54
|
+
var lastIdKey = Symbol.for("plugjs:plug:singleton:taskId");
|
|
55
|
+
var taskId = (0, import_singleton.getSingleton)(lastIdKey, () => ({ id: 0 }));
|
|
56
|
+
var TaskImpl = class {
|
|
57
|
+
constructor(name, buildFile, _def, _tasks, _props) {
|
|
58
|
+
this.name = name;
|
|
59
|
+
this.buildFile = buildFile;
|
|
60
|
+
this._def = _def;
|
|
61
|
+
this.tasks = _tasks;
|
|
62
|
+
this.props = _props;
|
|
63
|
+
}
|
|
64
|
+
before = [];
|
|
65
|
+
after = [];
|
|
66
|
+
id = ++taskId.id;
|
|
67
|
+
props;
|
|
68
|
+
tasks;
|
|
69
|
+
async invoke(state, taskName) {
|
|
70
|
+
(0, import_asserts.assert)(!state.stack.includes(this), `Recursion detected calling ${(0, import_logging.$t)(taskName)}`);
|
|
71
|
+
const cached = state.cache.get(this);
|
|
43
72
|
if (cached)
|
|
44
73
|
return cached;
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
74
|
+
state = makeState({
|
|
75
|
+
props: merge(this.props, state.props),
|
|
76
|
+
tasks: merge(this.tasks, state.tasks),
|
|
77
|
+
stack: [...state.stack, this],
|
|
78
|
+
cache: state.cache,
|
|
79
|
+
fails: state.fails
|
|
80
|
+
});
|
|
81
|
+
const context = new import_pipe.Context(this.buildFile, taskName);
|
|
52
82
|
const build2 = new Proxy({}, {
|
|
53
|
-
get(_, name) {
|
|
54
|
-
if (name in
|
|
83
|
+
get: (_, name) => {
|
|
84
|
+
if (name in state.tasks) {
|
|
55
85
|
return () => {
|
|
56
|
-
const promise2 =
|
|
86
|
+
const promise2 = state.tasks[name].invoke(state, name);
|
|
57
87
|
return new import_pipe.PipeImpl(context, promise2);
|
|
58
88
|
};
|
|
59
|
-
} else if (name in
|
|
60
|
-
return
|
|
89
|
+
} else if (name in state.props) {
|
|
90
|
+
return state.props[name];
|
|
61
91
|
}
|
|
62
92
|
}
|
|
63
93
|
});
|
|
64
|
-
for (const before of
|
|
94
|
+
for (const before of this.before)
|
|
65
95
|
await before.invoke(state, before.name);
|
|
66
96
|
context.log.info("Running...");
|
|
67
97
|
const now = Date.now();
|
|
68
98
|
const promise = (0, import_async.runAsync)(context, taskName, async () => {
|
|
69
|
-
return await _def.call(build2) || void 0;
|
|
99
|
+
return await this._def.call(build2) || void 0;
|
|
70
100
|
}).then(async (result) => {
|
|
71
101
|
const level = taskName.startsWith("_") ? "info" : "notice";
|
|
72
102
|
context.log[level](`Success ${(0, import_logging.$ms)(Date.now() - now)}`);
|
|
73
103
|
return result;
|
|
74
104
|
}).catch((error) => {
|
|
75
|
-
fails.add(
|
|
105
|
+
state.fails.add(this);
|
|
76
106
|
throw context.log.fail(`Failure ${(0, import_logging.$ms)(Date.now() - now)}`, error);
|
|
77
107
|
}).finally(async () => {
|
|
78
108
|
await import_pipe.ContextPromises.wait(context);
|
|
79
109
|
}).then(async (result) => {
|
|
80
|
-
for (const after of
|
|
110
|
+
for (const after of this.after)
|
|
81
111
|
await after.invoke(state, after.name);
|
|
82
112
|
return result;
|
|
83
113
|
});
|
|
84
|
-
cache.set(
|
|
114
|
+
state.cache.set(this, promise);
|
|
85
115
|
return promise;
|
|
86
116
|
}
|
|
87
|
-
|
|
88
|
-
const state = {
|
|
89
|
-
cache: /* @__PURE__ */ new Map(),
|
|
90
|
-
stack: [],
|
|
91
|
-
props: Object.assign({}, props, overrideProps),
|
|
92
|
-
fails: /* @__PURE__ */ new Set(),
|
|
93
|
-
tasks
|
|
94
|
-
};
|
|
95
|
-
return invoke(state, _name);
|
|
96
|
-
}, { buildFile, tasks, props, invoke, before: [], after: [] });
|
|
97
|
-
Object.defineProperty(task, taskMarker, { value: true });
|
|
98
|
-
Object.defineProperty(task, "name", { value: _name });
|
|
99
|
-
return task;
|
|
100
|
-
}
|
|
101
|
-
var buildMarker = Symbol.for("plugjs:isBuild");
|
|
117
|
+
};
|
|
102
118
|
function build(def) {
|
|
103
119
|
const buildFile = (0, import_caller.findCaller)(build);
|
|
104
120
|
const tasks = {};
|
|
105
121
|
const props = {};
|
|
106
122
|
for (const [key, val] of Object.entries(def)) {
|
|
107
123
|
let len = 0;
|
|
108
|
-
if (
|
|
109
|
-
tasks[key] = val;
|
|
124
|
+
if (isTaskCall(val)) {
|
|
125
|
+
tasks[key] = val.task;
|
|
110
126
|
len = key.length;
|
|
111
127
|
} else if (typeof val === "string") {
|
|
112
128
|
props[key] = val;
|
|
113
129
|
} else if (typeof val === "function") {
|
|
114
|
-
tasks[key] =
|
|
130
|
+
tasks[key] = new TaskImpl(key, buildFile, val, tasks, props);
|
|
115
131
|
len = key.length;
|
|
116
132
|
}
|
|
117
133
|
if (len > import_logging.logOptions.taskLength)
|
|
118
134
|
import_logging.logOptions.taskLength = len;
|
|
119
135
|
}
|
|
120
|
-
const
|
|
136
|
+
const start = async function start2(callback, overrideProps = {}) {
|
|
137
|
+
const state = makeState({ tasks, props: merge(props, overrideProps) });
|
|
121
138
|
const logger = (0, import_logging.getLogger)();
|
|
122
|
-
const state = {
|
|
123
|
-
cache: /* @__PURE__ */ new Map(),
|
|
124
|
-
props: Object.assign({}, props, overrideProps),
|
|
125
|
-
fails: /* @__PURE__ */ new Set(),
|
|
126
|
-
stack: [],
|
|
127
|
-
tasks
|
|
128
|
-
};
|
|
129
139
|
logger.notice("Starting...");
|
|
130
140
|
const now = Date.now();
|
|
131
141
|
try {
|
|
132
|
-
|
|
133
|
-
const task = tasks[name];
|
|
134
|
-
(0, import_asserts.assert)(task, `Task ${(0, import_logging.$t)(name)} not found in build ${(0, import_logging.$p)(buildFile)}`);
|
|
135
|
-
await task.invoke(state, name);
|
|
136
|
-
}
|
|
142
|
+
const result = await callback(state);
|
|
137
143
|
logger.notice(`Build successful ${(0, import_logging.$ms)(Date.now() - now)}`);
|
|
144
|
+
return result;
|
|
138
145
|
} catch (error) {
|
|
139
146
|
if (state.fails.size) {
|
|
140
147
|
logger.error("");
|
|
@@ -145,40 +152,58 @@ function build(def) {
|
|
|
145
152
|
throw logger.fail(`Build failed ${(0, import_logging.$ms)(Date.now() - now)}`, error);
|
|
146
153
|
}
|
|
147
154
|
};
|
|
148
|
-
const
|
|
149
|
-
|
|
155
|
+
const invoke = async function invoke2(taskNames, overrideProps = {}) {
|
|
156
|
+
await start(async (state) => {
|
|
157
|
+
for (const name of taskNames) {
|
|
158
|
+
const task = tasks[name];
|
|
159
|
+
(0, import_asserts.assert)(task, `Task ${(0, import_logging.$t)(name)} not found in build ${(0, import_logging.$p)(buildFile)}`);
|
|
160
|
+
await task.invoke(state, name);
|
|
161
|
+
}
|
|
162
|
+
}, overrideProps);
|
|
163
|
+
};
|
|
164
|
+
const callables = {};
|
|
165
|
+
for (const [name, task] of Object.entries(tasks)) {
|
|
166
|
+
const callable = async (overrideProps) => start(async (state) => task.invoke(state, name), overrideProps);
|
|
167
|
+
callables[name] = Object.defineProperties(callable, {
|
|
168
|
+
[taskCallMarker]: { value: taskCallMarker },
|
|
169
|
+
"task": { value: task },
|
|
170
|
+
"name": { value: name }
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
const compiled = merge(props, callables);
|
|
174
|
+
Object.defineProperty(compiled, import_types.buildMarker, { value: invoke });
|
|
150
175
|
return compiled;
|
|
151
176
|
}
|
|
152
177
|
function isBuild(build2) {
|
|
153
|
-
return build2 && typeof build2[buildMarker] === "function";
|
|
178
|
+
return build2 && typeof build2[import_types.buildMarker] === "function";
|
|
154
179
|
}
|
|
155
180
|
function invokeTasks(build2, tasks, props) {
|
|
156
|
-
if (build2
|
|
157
|
-
return build2[buildMarker](tasks, props);
|
|
181
|
+
if (isBuild(build2)) {
|
|
182
|
+
return build2[import_types.buildMarker](tasks, props);
|
|
158
183
|
} else {
|
|
159
184
|
throw new TypeError("Invalid build instance");
|
|
160
185
|
}
|
|
161
186
|
}
|
|
162
187
|
function hookBefore(build2, taskName, hooks) {
|
|
163
|
-
const
|
|
164
|
-
(0, import_asserts.assert)(
|
|
188
|
+
const taskCall = build2[taskName];
|
|
189
|
+
(0, import_asserts.assert)(isTaskCall(taskCall), `Task "${(0, import_logging.$t)(taskName)}" not found in build`);
|
|
165
190
|
for (const hook of hooks) {
|
|
166
191
|
const beforeHook = build2[hook];
|
|
167
|
-
(0, import_asserts.assert)(
|
|
168
|
-
if (task.before.includes(beforeHook))
|
|
192
|
+
(0, import_asserts.assert)(isTaskCall(beforeHook), `Task "${(0, import_logging.$t)(hook)}" to hook before "${(0, import_logging.$t)(taskName)}" not found in build`);
|
|
193
|
+
if (taskCall.task.before.includes(beforeHook.task))
|
|
169
194
|
continue;
|
|
170
|
-
task.before.push(beforeHook);
|
|
195
|
+
taskCall.task.before.push(beforeHook.task);
|
|
171
196
|
}
|
|
172
197
|
}
|
|
173
198
|
function hookAfter(build2, taskName, hooks) {
|
|
174
|
-
const
|
|
175
|
-
(0, import_asserts.assert)(
|
|
199
|
+
const taskCall = build2[taskName];
|
|
200
|
+
(0, import_asserts.assert)(isTaskCall(taskCall), `Task "${(0, import_logging.$t)(taskName)}" not found in build`);
|
|
176
201
|
for (const hook of hooks) {
|
|
177
202
|
const afterHook = build2[hook];
|
|
178
|
-
(0, import_asserts.assert)(
|
|
179
|
-
if (task.after.includes(afterHook))
|
|
203
|
+
(0, import_asserts.assert)(isTaskCall(afterHook), `Task "${(0, import_logging.$t)(hook)}" to hook after "${(0, import_logging.$t)(taskName)}" not found in build`);
|
|
204
|
+
if (taskCall.task.after.includes(afterHook.task))
|
|
180
205
|
continue;
|
|
181
|
-
task.after.push(afterHook);
|
|
206
|
+
taskCall.task.after.push(afterHook.task);
|
|
182
207
|
}
|
|
183
208
|
}
|
|
184
209
|
// Annotate the CommonJS export names for ESM import in node:
|
package/dist/build.cjs.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/build.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAuB;AACvB,mBAAyB;AACzB,qBAAyD;AACzD,kBAAmD;AACnD,oBAA2B;
|
|
5
|
-
"names": ["
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["build", "promise", "start", "invoke"]
|
|
6
6
|
}
|
package/dist/build.d.ts
CHANGED
|
@@ -1,13 +1,11 @@
|
|
|
1
|
-
import type { Build,
|
|
1
|
+
import type { Build, BuildProps, BuildDef, ThisBuild, BuildTasks } from './types';
|
|
2
2
|
/** Compile a {@link BuildDef | build definition} into a {@link Build} */
|
|
3
3
|
export declare function build<D extends BuildDef, B extends ThisBuild<D>>(def: D & ThisType<B>): Build<D>;
|
|
4
4
|
/** Check if the specified build is actually a {@link Build} */
|
|
5
5
|
export declare function isBuild(build: any): build is Build<Record<string, any>>;
|
|
6
6
|
/** Invoke a number of tasks in a {@link Build} */
|
|
7
|
-
export declare function invokeTasks(build:
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
export declare function
|
|
12
|
-
export declare function hookAfter<B extends Build, T extends keyof B>(build: B, taskName: string & T & TaskNames<B>, hooks: (string & Exclude<TaskNames<B>, T>)[]): void;
|
|
13
|
-
export {};
|
|
7
|
+
export declare function invokeTasks<B extends Build>(build: B, tasks: readonly BuildTasks<B>[], props?: BuildProps<B>): Promise<void>;
|
|
8
|
+
/** Make sure that the specified hooks run _before_ the given tasks */
|
|
9
|
+
export declare function hookBefore<B extends Build, T extends keyof B>(build: B, taskName: string & T & BuildTasks<B>, hooks: readonly (string & Exclude<BuildTasks<B>, T>)[]): void;
|
|
10
|
+
/** Make sure that the specified hooks run _after_ the given tasks */
|
|
11
|
+
export declare function hookAfter<B extends Build, T extends keyof B>(build: B, taskName: string & T & BuildTasks<B>, hooks: readonly (string & Exclude<BuildTasks<B>, T>)[]): void;
|