@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.
Files changed (72) hide show
  1. package/dist/asserts.cjs +1 -1
  2. package/dist/asserts.cjs.map +1 -1
  3. package/dist/asserts.mjs +1 -1
  4. package/dist/asserts.mjs.map +1 -1
  5. package/dist/async.cjs +5 -20
  6. package/dist/async.cjs.map +2 -2
  7. package/dist/async.mjs +5 -20
  8. package/dist/async.mjs.map +2 -2
  9. package/dist/build.cjs +95 -70
  10. package/dist/build.cjs.map +2 -2
  11. package/dist/build.d.ts +6 -8
  12. package/dist/build.mjs +92 -67
  13. package/dist/build.mjs.map +2 -2
  14. package/dist/cli.mjs +1 -1
  15. package/dist/files.cjs +5 -3
  16. package/dist/files.cjs.map +1 -1
  17. package/dist/files.d.ts +2 -1
  18. package/dist/files.mjs +11 -4
  19. package/dist/files.mjs.map +1 -1
  20. package/dist/helpers.cjs +3 -4
  21. package/dist/helpers.cjs.map +1 -1
  22. package/dist/helpers.mjs +3 -4
  23. package/dist/helpers.mjs.map +1 -1
  24. package/dist/logging/options.cjs +3 -10
  25. package/dist/logging/options.cjs.map +1 -1
  26. package/dist/logging/options.d.ts +44 -1
  27. package/dist/logging/options.mjs +3 -10
  28. package/dist/logging/options.mjs.map +1 -1
  29. package/dist/plugs/build.cjs +4 -7
  30. package/dist/plugs/build.cjs.map +1 -1
  31. package/dist/plugs/build.mjs +2 -5
  32. package/dist/plugs/build.mjs.map +1 -1
  33. package/dist/plugs/debug.cjs +7 -9
  34. package/dist/plugs/debug.cjs.map +1 -1
  35. package/dist/plugs/debug.mjs +8 -10
  36. package/dist/plugs/debug.mjs.map +1 -1
  37. package/dist/types.cjs +12 -0
  38. package/dist/types.cjs.map +1 -1
  39. package/dist/types.d.ts +33 -9
  40. package/dist/types.mjs +5 -0
  41. package/dist/types.mjs.map +2 -2
  42. package/dist/utils/diff.cjs +1 -4
  43. package/dist/utils/diff.cjs.map +1 -1
  44. package/dist/utils/diff.mjs +1 -4
  45. package/dist/utils/diff.mjs.map +1 -1
  46. package/dist/utils/{types.cjs → singleton.cjs} +14 -13
  47. package/dist/utils/singleton.cjs.map +6 -0
  48. package/dist/utils/singleton.d.ts +12 -0
  49. package/dist/utils/singleton.mjs +13 -0
  50. package/dist/utils/singleton.mjs.map +6 -0
  51. package/dist/utils.cjs +2 -2
  52. package/dist/utils.cjs.map +1 -1
  53. package/dist/utils.d.ts +1 -1
  54. package/dist/utils.mjs +1 -1
  55. package/package.json +1 -1
  56. package/src/asserts.ts +1 -1
  57. package/src/async.ts +6 -29
  58. package/src/build.ts +151 -117
  59. package/src/files.ts +14 -6
  60. package/src/helpers.ts +3 -4
  61. package/src/logging/options.ts +4 -13
  62. package/src/plugs/build.ts +2 -15
  63. package/src/plugs/debug.ts +10 -9
  64. package/src/types.ts +52 -23
  65. package/src/utils/diff.ts +1 -6
  66. package/src/utils/singleton.ts +19 -0
  67. package/src/utils.ts +1 -1
  68. package/dist/utils/types.cjs.map +0 -6
  69. package/dist/utils/types.d.ts +0 -4
  70. package/dist/utils/types.mjs +0 -12
  71. package/dist/utils/types.mjs.map +0 -6
  72. 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:buildFailure");
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} */
@@ -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,qBAAqB;AAG9C,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;",
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:buildFailure");
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} */
@@ -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,qBAAqB;AAG9C,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;",
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.plug.async.storage");
53
- var tasksKey = Symbol.for("plugjs.plug.async.tasks");
54
- function getStorage() {
55
- let storage2 = globalThis[storageKey];
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,
@@ -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;AAYhB,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;AAaA,IAAM,aAAa,OAAO,IAAI,2BAA2B;AACzD,IAAM,WAAW,OAAO,IAAI,yBAAyB;AAErD,SAAS,aAAyC;AAChD,MAAIA,WAA6C,WAAY,UAAU;AACvE,MAAI,CAAEA,UAAS;AACb,IAAAA,WAAU,IAAI,0CAA2B;AACxC,IAAO,WAAY,UAAU,IAAIA;AAAA,EACpC;AACA,SAAOA;AACT;AAEA,SAAS,WAAwB;AAC/B,MAAIC,SAA4B,WAAY,QAAQ;AACpD,MAAI,CAAEA,QAAO;AACX,IAAAA,SAAQ,oBAAI;AACX,IAAO,WAAY,QAAQ,IAAIA;AAAA,EAClC;AACA,SAAOA;AACT;AAEA,IAAM,UAAU,WAAW;AAC3B,IAAM,QAAQ,SAAS;",
5
- "names": ["storage", "tasks"]
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.plug.async.storage");
26
- var tasksKey = Symbol.for("plugjs.plug.async.tasks");
27
- function getStorage() {
28
- let storage2 = globalThis[storageKey];
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,
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/async.ts"],
4
- "mappings": ";AAAA,SAAS,yBAAyB;AAElC,SAAS,cAAc;AAYhB,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;AAaA,IAAM,aAAa,OAAO,IAAI,2BAA2B;AACzD,IAAM,WAAW,OAAO,IAAI,yBAAyB;AAErD,SAAS,aAAyC;AAChD,MAAIA,WAA6C,WAAY,UAAU;AACvE,MAAI,CAAEA,UAAS;AACb,IAAAA,WAAU,IAAI,kBAA2B;AACxC,IAAO,WAAY,UAAU,IAAIA;AAAA,EACpC;AACA,SAAOA;AACT;AAEA,SAAS,WAAwB;AAC/B,MAAIC,SAA4B,WAAY,QAAQ;AACpD,MAAI,CAAEA,QAAO;AACX,IAAAA,SAAQ,oBAAI;AACX,IAAO,WAAY,QAAQ,IAAIA;AAAA,EAClC;AACA,SAAOA;AACT;AAEA,IAAM,UAAU,WAAW;AAC3B,IAAM,QAAQ,SAAS;",
5
- "names": ["storage", "tasks"]
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 taskMarker = Symbol.for("plugjs:isTask");
36
- function isTask(something) {
37
- return something[taskMarker] === true;
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 makeTask(buildFile, tasks, props, _def, _name) {
40
- async function invoke(state, taskName) {
41
- (0, import_asserts.assert)(!state.stack.includes(task), `Recursion detected calling ${(0, import_logging.$t)(taskName)}`);
42
- const cached = state.cache.get(task);
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
- const props2 = Object.assign({}, task.props, state.props);
46
- const tasks2 = Object.assign({}, task.tasks, state.tasks);
47
- const stack = [...state.stack, task];
48
- const cache = state.cache;
49
- const fails = state.fails;
50
- state = { stack, cache, fails, tasks: tasks2, props: props2 };
51
- const context = new import_pipe.Context(task.buildFile, taskName);
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 tasks2) {
83
+ get: (_, name) => {
84
+ if (name in state.tasks) {
55
85
  return () => {
56
- const promise2 = tasks2[name].invoke(state, name);
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 props2) {
60
- return props2[name];
89
+ } else if (name in state.props) {
90
+ return state.props[name];
61
91
  }
62
92
  }
63
93
  });
64
- for (const before of task.before)
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(task);
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 task.after)
110
+ for (const after of this.after)
81
111
  await after.invoke(state, after.name);
82
112
  return result;
83
113
  });
84
- cache.set(task, promise);
114
+ state.cache.set(this, promise);
85
115
  return promise;
86
116
  }
87
- const task = Object.assign((overrideProps = {}) => {
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 (isTask(val)) {
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] = makeTask(buildFile, tasks, props, val, 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 invoke = async function invoke2(taskNames, overrideProps = {}) {
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
- for (const name of taskNames) {
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 compiled = Object.assign(/* @__PURE__ */ Object.create(null), props, tasks);
149
- Object.defineProperty(compiled, buildMarker, { value: invoke });
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 && typeof build2 === "object" && buildMarker in build2 && typeof build2[buildMarker] === "function") {
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 task = build2[taskName];
164
- (0, import_asserts.assert)(isTask(task), `Task "${(0, import_logging.$t)(taskName)}" not found in build`);
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)(isTask(beforeHook), `Task "${(0, import_logging.$t)(hook)}" to hook before "${(0, import_logging.$t)(taskName)}" not found in build`);
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 task = build2[taskName];
175
- (0, import_asserts.assert)(isTask(task), `Task "${(0, import_logging.$t)(taskName)}" not found in build`);
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)(isTask(afterHook), `Task "${(0, import_logging.$t)(hook)}" to hook after "${(0, import_logging.$t)(taskName)}" not found in build`);
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:
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/build.ts"],
4
- "mappings": "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",
5
- "names": ["props", "tasks", "build", "promise", "invoke"]
4
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAuB;AACvB,mBAAyB;AACzB,qBAAyD;AACzD,kBAAmD;AACnD,oBAA2B;AAC3B,uBAA6B;AAC7B,mBAA4B;AAwB5B,IAAM,iBAAiB,OAAO,IAAI,4BAA4B;AAG9D,SAAS,WAAW,WAAuC;AACzD,SAAO,UAAU,cAAc,MAAM;AACvC;AAGA,SAAS,MAAY,GAAM,GAAa;AACtC,SAAO,OAAO,OAAO,uBAAO,OAAO,IAAI,GAAG,GAAG,CAAC;AAChD;AAGA,SAAS,UAAU,OAMT;AACR,QAAM;AAAA,IACJ,QAAQ,oBAAI,IAAI;AAAA,IAChB,QAAQ,oBAAI,IAAI;AAAA,IAChB,QAAQ,CAAC;AAAA,IACT,QAAQ,CAAC;AAAA,IACT,QAAQ,CAAC;AAAA,EACX,IAAI;AAEJ,SAAO,EAAE,OAAO,OAAO,OAAO,OAAO,MAAM;AAC7C;AAMA,IAAM,YAAY,OAAO,IAAI,8BAA8B;AAC3D,IAAM,aAAS,+BAAa,WAAW,OAAO,EAAE,IAAI,EAAE,EAAE;AAExD,IAAM,WAAN,MAAoD;AAAA,EAQlD,YACoB,MACA,WACC,MACjB,QACA,QACF;AALkB;AACA;AACC;AAInB,SAAK,QAAQ;AACb,SAAK,QAAQ;AAAA,EACf;AAAA,EAhBgB,SAAyB,CAAC;AAAA,EAC1B,QAAwB,CAAC;AAAA,EACzB,KAAa,EAAG,OAAO;AAAA,EAEvC;AAAA,EACA;AAAA,EAaA,MAAM,OAAO,OAAc,UAA8B;AACvD,+BAAO,CAAE,MAAM,MAAM,SAAS,IAAI,GAAG,kCAA8B,mBAAG,QAAQ,GAAG;AAGjF,UAAM,SAAS,MAAM,MAAM,IAAI,IAAI;AACnC,QAAI;AAAQ,aAAO;AAGnB,YAAQ,UAAU;AAAA,MAChB,OAAO,MAAM,KAAK,OAAO,MAAM,KAAK;AAAA,MACpC,OAAO,MAAM,KAAK,OAAO,MAAM,KAAK;AAAA,MACpC,OAAO,CAAE,GAAG,MAAM,OAAO,IAAK;AAAA,MAC9B,OAAO,MAAM;AAAA,MACb,OAAO,MAAM;AAAA,IACf,CAAC;AAGD,UAAM,UAAU,IAAI,oBAAQ,KAAK,WAAW,QAAQ;AAGpD,UAAMA,SAAQ,IAAI,MAAM,CAAC,GAAG;AAAA,MAC1B,KAAK,CAAC,GAAQ,SAA+C;AAE3D,YAAI,QAAQ,MAAM,OAAO;AACvB,iBAAO,MAAY;AACjB,kBAAMC,WAAW,MAAc,MAAM,IAAI,EAAG,OAAO,OAAO,IAAI;AAC9D,mBAAO,IAAI,qBAAS,SAASA,QAAO;AAAA,UACtC;AAAA,QACF,WAAW,QAAQ,MAAM,OAAO;AAC9B,iBAAQ,MAAc,MAAM,IAAI;AAAA,QAClC;AAAA,MACF;AAAA,IACF,CAAC;AAGD,eAAW,UAAU,KAAK;AAAQ,YAAM,OAAO,OAAO,OAAO,OAAO,IAAI;AAGxE,YAAQ,IAAI,KAAK,YAAY;AAC7B,UAAM,MAAM,KAAK,IAAI;AAGrB,UAAM,cAAU,uBAAS,SAAS,UAAU,YAAY;AACtD,aAAO,MAAM,KAAK,KAAK,KAAKD,MAAK,KAAK;AAAA,IACxC,CAAC,EAAE,KAAK,OAAO,WAAW;AACxB,YAAM,QAAQ,SAAS,WAAW,GAAG,IAAI,SAAS;AAClD,cAAQ,IAAI,KAAK,EAAE,eAAW,oBAAI,KAAK,IAAI,IAAI,GAAG,GAAG;AACrD,aAAO;AAAA,IACT,CAAC,EAAE,MAAM,CAAC,UAAU;AAClB,YAAM,MAAM,IAAI,IAAI;AACpB,YAAM,QAAQ,IAAI,KAAK,eAAW,oBAAI,KAAK,IAAI,IAAI,GAAG,KAAK,KAAK;AAAA,IAClE,CAAC,EAAE,QAAQ,YAAY;AACrB,YAAM,4BAAgB,KAAK,OAAO;AAAA,IACpC,CAAC,EAAE,KAAK,OAAO,WAAW;AACxB,iBAAW,SAAS,KAAK;AAAO,cAAM,MAAM,OAAO,OAAO,MAAM,IAAI;AACpE,aAAO;AAAA,IACT,CAAC;AAGD,UAAM,MAAM,IAAI,MAAM,OAAO;AAC7B,WAAO;AAAA,EACT;AACF;AAOO,SAAS,MAEd,KAAgC;AAChC,QAAM,gBAAY,0BAAW,KAAK;AAClC,QAAM,QAA8B,CAAC;AACrC,QAAM,QAAgC,CAAC;AAGvC,aAAW,CAAE,KAAK,GAAI,KAAK,OAAO,QAAQ,GAAG,GAAG;AAC9C,QAAI,MAAM;AACV,QAAI,WAAW,GAAG,GAAG;AACnB,YAAM,GAAG,IAAI,IAAI;AACjB,YAAM,IAAI;AAAA,IACZ,WAAW,OAAO,QAAQ,UAAU;AAClC,YAAM,GAAG,IAAI;AAAA,IACf,WAAW,OAAO,QAAQ,YAAY;AACpC,YAAM,GAAG,IAAI,IAAI,SAAS,KAAK,WAAW,KAAK,OAAO,KAAK;AAE3D,YAAM,IAAI;AAAA,IACZ;AAIA,QAAI,MAAM,0BAAW;AAAY,gCAAW,aAAa;AAAA,EAC3D;AAGA,QAAM,QAAQ,eAAeE,OACzB,UACA,gBAAoD,CAAC,GAC3C;AAEZ,UAAM,QAAQ,UAAU,EAAE,OAAO,OAAO,MAAM,OAAO,aAAa,EAAE,CAAC;AACrE,UAAM,aAAS,0BAAU;AACzB,WAAO,OAAO,aAAa;AAC3B,UAAM,MAAM,KAAK,IAAI;AAErB,QAAI;AACF,YAAM,SAAS,MAAM,SAAS,KAAK;AACnC,aAAO,OAAO,wBAAoB,oBAAI,KAAK,IAAI,IAAI,GAAG,GAAG;AACzD,aAAO;AAAA,IACT,SAAS,OAAP;AACA,UAAI,MAAM,MAAM,MAAM;AACpB,eAAO,MAAM,EAAE;AACf,eAAO,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,SAAS,IAAI,SAAS,SAAS,SAAS;AACnF,cAAM,MAAM,QAAQ,CAAC,SAAS,OAAO,UAAM,qBAAK,GAAG,OAAG,mBAAG,KAAK,IAAI,CAAC,CAAC;AACpE,eAAO,MAAM,EAAE;AAAA,MACjB;AACA,YAAM,OAAO,KAAK,oBAAgB,oBAAI,KAAK,IAAI,IAAI,GAAG,KAAK,KAAK;AAAA,IAClE;AAAA,EACF;AAGA,QAAM,SAAS,eAAeC,QAC1B,WACA,gBAAoD,CAAC,GACxC;AACf,UAAM,MAAM,OAAO,UAAgC;AACjD,iBAAW,QAAQ,WAAW;AAC5B,cAAM,OAAO,MAAM,IAAI;AACvB,mCAAO,MAAM,YAAQ,mBAAG,IAAI,4BAAwB,mBAAG,SAAS,GAAG;AACnE,cAAM,KAAK,OAAO,OAAO,IAAI;AAAA,MAC/B;AAAA,IACF,GAAG,aAAa;AAAA,EAClB;AAGA,QAAM,YAAsC,CAAC;AAC7C,aAAW,CAAE,MAAM,IAAK,KAAK,OAAO,QAAQ,KAAK,GAAG;AAElD,UAAM,WAAW,OAAO,kBACtB,MAAM,OAAO,UACX,KAAK,OAAO,OAAO,IAAI,GAAG,aAAa;AAG3C,cAAU,IAAI,IAAI,OAAO,iBAAiB,UAAU;AAAA,MAClD,CAAC,cAAc,GAAG,EAAE,OAAO,eAAe;AAAA,MAC1C,QAAQ,EAAE,OAAO,KAAK;AAAA,MACtB,QAAQ,EAAE,OAAO,KAAK;AAAA,IACxB,CAAC;AAAA,EACH;AAGA,QAAM,WAAW,MAAM,OAAO,SAAS;AACvC,SAAO,eAAe,UAAU,0BAAa,EAAE,OAAO,OAAO,CAAC;AAC9D,SAAO;AACT;AAGO,SAAS,QAAQH,QAAiD;AACvE,SAAOA,UAAS,OAAOA,OAAM,wBAAW,MAAM;AAChD;AAGO,SAAS,YACZA,QACA,OACA,OACa;AACf,MAAI,QAAQA,MAAK,GAAG;AAClB,WAAOA,OAAM,wBAAW,EAAE,OAAO,KAAK;AAAA,EACxC,OAAO;AACL,UAAM,IAAI,UAAU,wBAAwB;AAAA,EAC9C;AACF;AAOO,SAAS,WACZA,QACA,UACA,OACI;AACN,QAAM,WAAWA,OAAM,QAAQ;AAC/B,6BAAO,WAAW,QAAQ,GAAG,aAAS,mBAAG,QAAQ,uBAAuB;AAExE,aAAW,QAAQ,OAAO;AACxB,UAAM,aAAaA,OAAM,IAAI;AAC7B,+BAAO,WAAW,UAAU,GAAG,aAAS,mBAAG,IAAI,0BAAsB,mBAAG,QAAQ,uBAAuB;AACvG,QAAI,SAAS,KAAK,OAAO,SAAS,WAAW,IAAI;AAAG;AACpD,aAAS,KAAK,OAAO,KAAK,WAAW,IAAI;AAAA,EAC3C;AACF;AAGO,SAAS,UACZA,QACA,UACA,OACI;AACN,QAAM,WAAWA,OAAM,QAAQ;AAC/B,6BAAO,WAAW,QAAQ,GAAG,aAAS,mBAAG,QAAQ,uBAAuB;AAExE,aAAW,QAAQ,OAAO;AACxB,UAAM,YAAYA,OAAM,IAAI;AAC5B,+BAAO,WAAW,SAAS,GAAG,aAAS,mBAAG,IAAI,yBAAqB,mBAAG,QAAQ,uBAAuB;AACrG,QAAI,SAAS,KAAK,MAAM,SAAS,UAAU,IAAI;AAAG;AAClD,aAAS,KAAK,MAAM,KAAK,UAAU,IAAI;AAAA,EACzC;AACF;",
5
+ "names": ["build", "promise", "start", "invoke"]
6
6
  }
package/dist/build.d.ts CHANGED
@@ -1,13 +1,11 @@
1
- import type { Build, BuildDef, Task, ThisBuild } from './types';
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: Build, tasks: string[], props?: Record<string, string>): Promise<void>;
8
- type TaskNames<B extends Build> = keyof {
9
- [name in keyof B as B[name] extends Task ? name : never]: any;
10
- };
11
- export declare function hookBefore<B extends Build, T extends keyof B>(build: B, taskName: string & T & TaskNames<B>, hooks: (string & Exclude<TaskNames<B>, T>)[]): void;
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;