@plugjs/plug 0.3.5 → 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 (119) hide show
  1. package/dist/asserts.cjs +10 -12
  2. package/dist/asserts.cjs.map +1 -1
  3. package/dist/asserts.d.ts +1 -2
  4. package/dist/asserts.mjs +9 -10
  5. package/dist/asserts.mjs.map +1 -1
  6. package/dist/async.cjs +5 -20
  7. package/dist/async.cjs.map +2 -2
  8. package/dist/async.mjs +5 -20
  9. package/dist/async.mjs.map +2 -2
  10. package/dist/build.cjs +113 -64
  11. package/dist/build.cjs.map +2 -2
  12. package/dist/build.d.ts +9 -7
  13. package/dist/build.mjs +110 -63
  14. package/dist/build.mjs.map +2 -2
  15. package/dist/cli.d.mts +12 -0
  16. package/dist/cli.mjs +266 -0
  17. package/dist/cli.mjs.map +6 -0
  18. package/dist/files.cjs +5 -3
  19. package/dist/files.cjs.map +1 -1
  20. package/dist/files.d.ts +2 -1
  21. package/dist/files.mjs +11 -4
  22. package/dist/files.mjs.map +1 -1
  23. package/dist/fork.cjs +30 -12
  24. package/dist/fork.cjs.map +1 -1
  25. package/dist/fork.d.ts +10 -0
  26. package/dist/fork.mjs +31 -13
  27. package/dist/fork.mjs.map +1 -1
  28. package/dist/helpers.cjs +32 -13
  29. package/dist/helpers.cjs.map +2 -2
  30. package/dist/helpers.d.ts +12 -0
  31. package/dist/helpers.mjs +37 -14
  32. package/dist/helpers.mjs.map +2 -2
  33. package/dist/index.cjs +5 -0
  34. package/dist/index.cjs.map +1 -1
  35. package/dist/index.d.ts +2 -1
  36. package/dist/index.mjs +4 -1
  37. package/dist/index.mjs.map +1 -1
  38. package/dist/logging/emit.cjs +4 -4
  39. package/dist/logging/emit.cjs.map +1 -1
  40. package/dist/logging/emit.mjs +4 -4
  41. package/dist/logging/emit.mjs.map +1 -1
  42. package/dist/logging/logger.cjs +43 -2
  43. package/dist/logging/logger.cjs.map +1 -1
  44. package/dist/logging/logger.d.ts +36 -3
  45. package/dist/logging/logger.mjs +43 -3
  46. package/dist/logging/logger.mjs.map +1 -1
  47. package/dist/logging/options.cjs +8 -12
  48. package/dist/logging/options.cjs.map +1 -1
  49. package/dist/logging/options.d.ts +44 -1
  50. package/dist/logging/options.mjs +8 -12
  51. package/dist/logging/options.mjs.map +1 -1
  52. package/dist/logging.cjs +14 -3
  53. package/dist/logging.cjs.map +1 -1
  54. package/dist/logging.d.ts +2 -0
  55. package/dist/logging.mjs +13 -3
  56. package/dist/logging.mjs.map +1 -1
  57. package/dist/plugs/build.cjs +63 -0
  58. package/dist/plugs/build.cjs.map +6 -0
  59. package/dist/plugs/build.d.ts +13 -0
  60. package/dist/plugs/build.mjs +37 -0
  61. package/dist/plugs/build.mjs.map +6 -0
  62. package/dist/plugs/debug.cjs +7 -9
  63. package/dist/plugs/debug.cjs.map +1 -1
  64. package/dist/plugs/debug.mjs +8 -10
  65. package/dist/plugs/debug.mjs.map +1 -1
  66. package/dist/types.cjs +12 -0
  67. package/dist/types.cjs.map +1 -1
  68. package/dist/types.d.ts +35 -9
  69. package/dist/types.mjs +5 -0
  70. package/dist/types.mjs.map +2 -2
  71. package/dist/utils/diff.cjs +1 -4
  72. package/dist/utils/diff.cjs.map +1 -1
  73. package/dist/utils/diff.mjs +1 -4
  74. package/dist/utils/diff.mjs.map +1 -1
  75. package/dist/utils/exec.cjs +5 -12
  76. package/dist/utils/exec.cjs.map +2 -2
  77. package/dist/utils/exec.d.ts +0 -2
  78. package/dist/utils/exec.mjs +6 -13
  79. package/dist/utils/exec.mjs.map +1 -1
  80. package/dist/utils/{types.cjs → singleton.cjs} +14 -13
  81. package/dist/utils/singleton.cjs.map +6 -0
  82. package/dist/utils/singleton.d.ts +12 -0
  83. package/dist/utils/singleton.mjs +13 -0
  84. package/dist/utils/singleton.mjs.map +6 -0
  85. package/dist/utils.cjs +2 -2
  86. package/dist/utils.cjs.map +1 -1
  87. package/dist/utils.d.ts +1 -1
  88. package/dist/utils.mjs +1 -1
  89. package/package.json +7 -9
  90. package/src/asserts.ts +10 -12
  91. package/src/async.ts +6 -29
  92. package/src/build.ts +169 -106
  93. package/{extra/plug.mts → src/cli.mts} +115 -141
  94. package/src/files.ts +14 -6
  95. package/src/fork.ts +42 -16
  96. package/src/helpers.ts +56 -5
  97. package/src/index.ts +2 -1
  98. package/src/logging/emit.ts +4 -4
  99. package/src/logging/logger.ts +60 -7
  100. package/src/logging/options.ts +9 -14
  101. package/src/logging.ts +20 -5
  102. package/src/plugs/build.ts +45 -0
  103. package/src/plugs/debug.ts +10 -9
  104. package/src/types.ts +54 -23
  105. package/src/utils/diff.ts +1 -6
  106. package/src/utils/exec.ts +6 -20
  107. package/src/utils/singleton.ts +19 -0
  108. package/src/utils.ts +1 -1
  109. package/cli/plug.mjs +0 -1385
  110. package/cli/ts-loader.mjs +0 -275
  111. package/cli/tsrun.mjs +0 -1204
  112. package/dist/utils/types.cjs.map +0 -6
  113. package/dist/utils/types.d.ts +0 -4
  114. package/dist/utils/types.mjs +0 -12
  115. package/dist/utils/types.mjs.map +0 -6
  116. package/extra/ts-loader.mts +0 -546
  117. package/extra/tsrun.mts +0 -127
  118. package/extra/utils.ts +0 -150
  119. package/src/utils/types.ts +0 -11
package/dist/asserts.cjs CHANGED
@@ -23,15 +23,11 @@ __export(asserts_exports, {
23
23
  BuildFailure: () => BuildFailure,
24
24
  assert: () => assert,
25
25
  assertPromises: () => assertPromises,
26
- fail: () => fail,
27
- isBuildFailure: () => isBuildFailure
26
+ fail: () => fail
28
27
  });
29
28
  module.exports = __toCommonJS(asserts_exports);
30
29
  var import_github = require("./logging/github.cjs");
31
- var buildFailure = Symbol.for("plugjs:buildFailure");
32
- function isBuildFailure(arg) {
33
- return arg && arg[buildFailure] === buildFailure;
34
- }
30
+ var buildFailure = Symbol.for("plugjs:plug:types:BuildFailure");
35
31
  var BuildFailure = class extends Error {
36
32
  errors;
37
33
  /** Construct a {@link BuildFailure} */
@@ -43,10 +39,6 @@ var BuildFailure = class extends Error {
43
39
  Error.captureStackTrace(this, BuildFailure);
44
40
  if (errors.length)
45
41
  this.errors = Object.freeze([...errors]);
46
- Object.defineProperties(this, {
47
- [buildFailure]: { value: buildFailure },
48
- "name": { value: "BuildFailure" }
49
- });
50
42
  }
51
43
  static fail() {
52
44
  return new BuildFailure(void 0, []);
@@ -57,6 +49,13 @@ var BuildFailure = class extends Error {
57
49
  static withErrors(errors) {
58
50
  return new BuildFailure(void 0, errors);
59
51
  }
52
+ static [Symbol.hasInstance](instance) {
53
+ return instance && instance[buildFailure] === buildFailure;
54
+ }
55
+ static {
56
+ this.prototype[buildFailure] = buildFailure;
57
+ this.prototype.name = this.name;
58
+ }
60
59
  };
61
60
  async function assertPromises(promises) {
62
61
  const settlements = await Promise.allSettled(promises);
@@ -85,7 +84,6 @@ function fail(message) {
85
84
  BuildFailure,
86
85
  assert,
87
86
  assertPromises,
88
- fail,
89
- isBuildFailure
87
+ fail
90
88
  });
91
89
  //# sourceMappingURL=asserts.cjs.map
@@ -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;AAAA;AAIA,oBAAiC;AAGjC,IAAM,eAAe,OAAO,IAAI,qBAAqB;AAG9C,SAAS,eAAe,KAA+B;AAC5D,SAAO,OAAO,IAAI,YAAY,MAAM;AACtC;AAGO,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;AAG5D,WAAO,iBAAiB,MAAM;AAAA,MAC5B,CAAC,YAAY,GAAG,EAAE,OAAO,aAAa;AAAA,MACtC,QAAQ,EAAE,OAAO,eAAe;AAAA,IAClC,CAAC;AAAA,EACH;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;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.d.ts CHANGED
@@ -1,5 +1,3 @@
1
- /** Check if the specified argument is a {@link BuildFailure} */
2
- export declare function isBuildFailure(arg: any): arg is BuildFailure;
3
1
  /** A {@link BuildFailure} represents an error _already logged_ in our build. */
4
2
  export declare class BuildFailure extends Error {
5
3
  readonly errors?: readonly any[] | undefined;
@@ -8,6 +6,7 @@ export declare class BuildFailure extends Error {
8
6
  static fail(): BuildFailure;
9
7
  static withMessage(message: string): BuildFailure;
10
8
  static withErrors(errors: any[]): BuildFailure;
9
+ static [Symbol.hasInstance](instance: any): boolean;
11
10
  }
12
11
  /** Await and assert that all specified promises were fulfilled */
13
12
  export declare function assertPromises<T>(promises: (T | Promise<T>)[]): Promise<T[]>;
package/dist/asserts.mjs CHANGED
@@ -1,9 +1,6 @@
1
1
  // asserts.ts
2
2
  import { githubAnnotation } from "./logging/github.mjs";
3
- var buildFailure = Symbol.for("plugjs:buildFailure");
4
- function isBuildFailure(arg) {
5
- return arg && arg[buildFailure] === buildFailure;
6
- }
3
+ var buildFailure = Symbol.for("plugjs:plug:types:BuildFailure");
7
4
  var BuildFailure = class extends Error {
8
5
  errors;
9
6
  /** Construct a {@link BuildFailure} */
@@ -15,10 +12,6 @@ var BuildFailure = class extends Error {
15
12
  Error.captureStackTrace(this, BuildFailure);
16
13
  if (errors.length)
17
14
  this.errors = Object.freeze([...errors]);
18
- Object.defineProperties(this, {
19
- [buildFailure]: { value: buildFailure },
20
- "name": { value: "BuildFailure" }
21
- });
22
15
  }
23
16
  static fail() {
24
17
  return new BuildFailure(void 0, []);
@@ -29,6 +22,13 @@ var BuildFailure = class extends Error {
29
22
  static withErrors(errors) {
30
23
  return new BuildFailure(void 0, errors);
31
24
  }
25
+ static [Symbol.hasInstance](instance) {
26
+ return instance && instance[buildFailure] === buildFailure;
27
+ }
28
+ static {
29
+ this.prototype[buildFailure] = buildFailure;
30
+ this.prototype.name = this.name;
31
+ }
32
32
  };
33
33
  async function assertPromises(promises) {
34
34
  const settlements = await Promise.allSettled(promises);
@@ -56,7 +56,6 @@ export {
56
56
  BuildFailure,
57
57
  assert,
58
58
  assertPromises,
59
- fail,
60
- isBuildFailure
59
+ fail
61
60
  };
62
61
  //# sourceMappingURL=asserts.mjs.map
@@ -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,SAAS,eAAe,KAA+B;AAC5D,SAAO,OAAO,IAAI,YAAY,MAAM;AACtC;AAGO,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;AAG5D,WAAO,iBAAiB,MAAM;AAAA,MAC5B,CAAC,YAAY,GAAG,EAAE,OAAO,aAAa;AAAA,MACtC,QAAQ,EAAE,OAAO,eAAe;AAAA,IAClC,CAAC;AAAA,EACH;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;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
@@ -22,7 +22,9 @@ var build_exports = {};
22
22
  __export(build_exports, {
23
23
  build: () => build,
24
24
  hookAfter: () => hookAfter,
25
- hookBefore: () => hookBefore
25
+ hookBefore: () => hookBefore,
26
+ invokeTasks: () => invokeTasks,
27
+ isBuild: () => isBuild
26
28
  });
27
29
  module.exports = __toCommonJS(build_exports);
28
30
  var import_asserts = require("./asserts.cjs");
@@ -30,139 +32,186 @@ var import_async = require("./async.cjs");
30
32
  var import_logging = require("./logging.cjs");
31
33
  var import_pipe = require("./pipe.cjs");
32
34
  var import_caller = require("./utils/caller.cjs");
33
- var taskMarker = Symbol.for("plugjs:isTask");
34
- function isTask(something) {
35
- 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;
36
40
  }
37
- function makeTask(buildFile, tasks, props, _def, _name) {
38
- async function invoke(state, taskName) {
39
- (0, import_asserts.assert)(!state.stack.includes(task), `Recursion detected calling ${(0, import_logging.$t)(taskName)}`);
40
- 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);
41
72
  if (cached)
42
73
  return cached;
43
- const props2 = Object.assign({}, task.props, state.props);
44
- const tasks2 = Object.assign({}, task.tasks, state.tasks);
45
- const stack = [...state.stack, task];
46
- const cache = state.cache;
47
- state = { stack, cache, tasks: tasks2, props: props2 };
48
- 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);
49
82
  const build2 = new Proxy({}, {
50
- get(_, name) {
51
- if (name in tasks2) {
83
+ get: (_, name) => {
84
+ if (name in state.tasks) {
52
85
  return () => {
53
- const promise2 = tasks2[name].invoke(state, name);
86
+ const promise2 = state.tasks[name].invoke(state, name);
54
87
  return new import_pipe.PipeImpl(context, promise2);
55
88
  };
56
- } else if (name in props2) {
57
- return props2[name];
89
+ } else if (name in state.props) {
90
+ return state.props[name];
58
91
  }
59
92
  }
60
93
  });
61
- for (const before of task.before)
94
+ for (const before of this.before)
62
95
  await before.invoke(state, before.name);
63
96
  context.log.info("Running...");
64
97
  const now = Date.now();
65
98
  const promise = (0, import_async.runAsync)(context, taskName, async () => {
66
- return await _def.call(build2) || void 0;
99
+ return await this._def.call(build2) || void 0;
67
100
  }).then(async (result) => {
68
101
  const level = taskName.startsWith("_") ? "info" : "notice";
69
102
  context.log[level](`Success ${(0, import_logging.$ms)(Date.now() - now)}`);
70
103
  return result;
71
104
  }).catch((error) => {
105
+ state.fails.add(this);
72
106
  throw context.log.fail(`Failure ${(0, import_logging.$ms)(Date.now() - now)}`, error);
73
107
  }).finally(async () => {
74
108
  await import_pipe.ContextPromises.wait(context);
75
109
  }).then(async (result) => {
76
- for (const after of task.after)
110
+ for (const after of this.after)
77
111
  await after.invoke(state, after.name);
78
112
  return result;
79
113
  });
80
- cache.set(task, promise);
114
+ state.cache.set(this, promise);
81
115
  return promise;
82
116
  }
83
- const task = Object.assign((overrideProps = {}) => {
84
- const state = {
85
- cache: /* @__PURE__ */ new Map(),
86
- stack: [],
87
- props: Object.assign({}, props, overrideProps),
88
- tasks
89
- };
90
- return invoke(state, _name);
91
- }, { buildFile, tasks, props, invoke, before: [], after: [] });
92
- Object.defineProperty(task, taskMarker, { value: true });
93
- Object.defineProperty(task, "name", { value: _name });
94
- return task;
95
- }
96
- var buildMarker = Symbol.for("plugjs:isBuild");
117
+ };
97
118
  function build(def) {
98
119
  const buildFile = (0, import_caller.findCaller)(build);
99
120
  const tasks = {};
100
121
  const props = {};
101
122
  for (const [key, val] of Object.entries(def)) {
102
123
  let len = 0;
103
- if (isTask(val)) {
104
- tasks[key] = val;
124
+ if (isTaskCall(val)) {
125
+ tasks[key] = val.task;
105
126
  len = key.length;
106
127
  } else if (typeof val === "string") {
107
128
  props[key] = val;
108
129
  } else if (typeof val === "function") {
109
- tasks[key] = makeTask(buildFile, tasks, props, val, key);
130
+ tasks[key] = new TaskImpl(key, buildFile, val, tasks, props);
110
131
  len = key.length;
111
132
  }
112
133
  if (len > import_logging.logOptions.taskLength)
113
134
  import_logging.logOptions.taskLength = len;
114
135
  }
115
- const invoke = async function invoke2(taskNames, overrideProps = {}) {
136
+ const start = async function start2(callback, overrideProps = {}) {
137
+ const state = makeState({ tasks, props: merge(props, overrideProps) });
116
138
  const logger = (0, import_logging.getLogger)();
117
- const state = {
118
- cache: /* @__PURE__ */ new Map(),
119
- stack: [],
120
- props: Object.assign({}, props, overrideProps),
121
- tasks
122
- };
123
139
  logger.notice("Starting...");
124
140
  const now = Date.now();
125
141
  try {
142
+ const result = await callback(state);
143
+ logger.notice(`Build successful ${(0, import_logging.$ms)(Date.now() - now)}`);
144
+ return result;
145
+ } catch (error) {
146
+ if (state.fails.size) {
147
+ logger.error("");
148
+ logger.error(state.fails.size, state.fails.size === 1 ? "task" : "tasks", "failed:");
149
+ state.fails.forEach((task) => logger.error((0, import_logging.$gry)("*"), (0, import_logging.$t)(task.name)));
150
+ logger.error("");
151
+ }
152
+ throw logger.fail(`Build failed ${(0, import_logging.$ms)(Date.now() - now)}`, error);
153
+ }
154
+ };
155
+ const invoke = async function invoke2(taskNames, overrideProps = {}) {
156
+ await start(async (state) => {
126
157
  for (const name of taskNames) {
127
158
  const task = tasks[name];
128
159
  (0, import_asserts.assert)(task, `Task ${(0, import_logging.$t)(name)} not found in build ${(0, import_logging.$p)(buildFile)}`);
129
160
  await task.invoke(state, name);
130
161
  }
131
- logger.notice(`Build successful ${(0, import_logging.$ms)(Date.now() - now)}`);
132
- } catch (error) {
133
- throw logger.fail(`Build failed ${(0, import_logging.$ms)(Date.now() - now)}`, error);
134
- }
162
+ }, overrideProps);
135
163
  };
136
- const compiled = Object.assign({}, props, tasks);
137
- Object.defineProperty(compiled, buildMarker, { value: invoke });
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 });
138
175
  return compiled;
139
176
  }
177
+ function isBuild(build2) {
178
+ return build2 && typeof build2[import_types.buildMarker] === "function";
179
+ }
180
+ function invokeTasks(build2, tasks, props) {
181
+ if (isBuild(build2)) {
182
+ return build2[import_types.buildMarker](tasks, props);
183
+ } else {
184
+ throw new TypeError("Invalid build instance");
185
+ }
186
+ }
140
187
  function hookBefore(build2, taskName, hooks) {
141
- const task = build2[taskName];
142
- (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`);
143
190
  for (const hook of hooks) {
144
191
  const beforeHook = build2[hook];
145
- (0, import_asserts.assert)(isTask(beforeHook), `Task "${(0, import_logging.$t)(hook)}" to hook before "${(0, import_logging.$t)(taskName)}" not found in build`);
146
- 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))
147
194
  continue;
148
- task.before.push(beforeHook);
195
+ taskCall.task.before.push(beforeHook.task);
149
196
  }
150
197
  }
151
198
  function hookAfter(build2, taskName, hooks) {
152
- const task = build2[taskName];
153
- (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`);
154
201
  for (const hook of hooks) {
155
202
  const afterHook = build2[hook];
156
- (0, import_asserts.assert)(isTask(afterHook), `Task "${(0, import_logging.$t)(hook)}" to hook after "${(0, import_logging.$t)(taskName)}" not found in build`);
157
- 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))
158
205
  continue;
159
- task.after.push(afterHook);
206
+ taskCall.task.after.push(afterHook.task);
160
207
  }
161
208
  }
162
209
  // Annotate the CommonJS export names for ESM import in node:
163
210
  0 && (module.exports = {
164
211
  build,
165
212
  hookAfter,
166
- hookBefore
213
+ hookBefore,
214
+ invokeTasks,
215
+ isBuild
167
216
  });
168
217
  //# sourceMappingURL=build.cjs.map
@@ -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,qBAAuB;AACvB,mBAAyB;AACzB,qBAAmD;AACnD,kBAAmD;AACnD,oBAA2B;AAqB3B,IAAM,aAAa,OAAO,IAAI,eAAe;AAG7C,SAAS,OAAO,WAAmC;AACjD,SAAO,UAAU,UAAU,MAAM;AACnC;AAGA,SAAS,SACL,WACA,OACA,OACA,MACA,OACI;AAEN,iBAAe,OAAO,OAAc,UAAmC;AACrE,+BAAO,CAAE,MAAM,MAAM,SAAS,IAAI,GAAG,kCAA8B,mBAAG,QAAQ,GAAG;AAGjF,UAAM,SAAS,MAAM,MAAM,IAAI,IAAI;AACnC,QAAI;AAAQ,aAAO;AAGnB,UAAMA,SAAgC,OAAO,OAAO,CAAC,GAAG,KAAK,OAAO,MAAM,KAAK;AAC/E,UAAMC,SAA8B,OAAO,OAAO,CAAC,GAAG,KAAK,OAAO,MAAM,KAAK;AAC7E,UAAM,QAAQ,CAAE,GAAG,MAAM,OAAO,IAAK;AACrC,UAAM,QAAQ,MAAM;AACpB,YAAQ,EAAE,OAAO,OAAO,OAAAA,QAAO,OAAAD,OAAM;AAGrC,UAAM,UAAU,IAAI,oBAAQ,KAAK,WAAW,QAAQ;AAGpD,UAAME,SAAQ,IAAI,MAAM,CAAC,GAAG;AAAA,MAC1B,IAAI,GAAQ,MAA4C;AAEtD,YAAI,QAAQD,QAAO;AACjB,iBAAO,MAAY;AACjB,kBAAME,WAAUF,OAAM,IAAI,EAAG,OAAO,OAAO,IAAI;AAC/C,mBAAO,IAAI,qBAAS,SAASE,QAAO;AAAA,UACtC;AAAA,QACF,WAAW,QAAQH,QAAO;AACxB,iBAAOA,OAAM,IAAI;AAAA,QACnB;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,KAAKE,MAAK,KAAK;AAAA,IACnC,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,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,IAAI,MAAM,OAAO;AACvB,WAAO;AAAA,EACT;AAGA,QAAM,OAAa,OAAO,OAAO,CAAC,gBAAuB,CAAC,MAAM;AAC9D,UAAM,QAAe;AAAA,MACnB,OAAO,oBAAI,IAA2B;AAAA,MACtC,OAAO,CAAC;AAAA,MACR,OAAO,OAAO,OAAO,CAAC,GAAG,OAAO,aAAa;AAAA,MAC7C;AAAA,IACF;AACA,WAAO,OAAO,OAAO,KAAK;AAAA,EAC5B,GAAG,EAAE,WAAW,OAAO,OAAO,QAAQ,QAAQ,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC;AAG7D,SAAO,eAAe,MAAM,YAAY,EAAE,OAAO,KAAK,CAAC;AACvD,SAAO,eAAe,MAAM,QAAQ,EAAE,OAAO,MAAM,CAAC;AACpD,SAAO;AACT;AAYA,IAAM,cAAc,OAAO,IAAI,gBAAgB;AAGxC,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,OAAO,GAAG,GAAG;AACf,YAAM,GAAG,IAAI;AACb,YAAM,IAAI;AAAA,IACZ,WAAW,OAAO,QAAQ,UAAU;AAClC,YAAM,GAAG,IAAI;AAAA,IACf,WAAW,OAAO,QAAQ,YAAY;AACpC,YAAM,GAAG,IAAI,SAAS,WAAW,OAAO,OAAO,KAAK,GAAG;AACvD,YAAM,IAAI;AAAA,IACZ;AAIA,QAAI,MAAM,0BAAW;AAAY,gCAAW,aAAa;AAAA,EAC3D;AAGA,QAAM,SAAS,eAAeE,QAC1B,WACA,gBAAoD,CAAC,GACxC;AAEf,UAAM,aAAS,0BAAU;AACzB,UAAM,QAAQ;AAAA,MACZ,OAAO,oBAAI,IAA2B;AAAA,MACtC,OAAO,CAAC;AAAA,MACR,OAAO,OAAO,OAAO,CAAC,GAAG,OAAO,aAAa;AAAA,MAC7C;AAAA,IACF;AAGA,WAAO,OAAO,aAAa;AAC3B,UAAM,MAAM,KAAK,IAAI;AAErB,QAAI;AAEF,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;AACA,aAAO,OAAO,wBAAoB,oBAAI,KAAK,IAAI,IAAI,GAAG,GAAG;AAAA,IAC3D,SAAS,OAAP;AACA,YAAM,OAAO,KAAK,oBAAgB,oBAAI,KAAK,IAAI,IAAI,GAAG,KAAK,KAAK;AAAA,IAClE;AAAA,EACF;AAGA,QAAM,WAAW,OAAO,OAAO,CAAC,GAAG,OAAO,KAAK;AAG/C,SAAO,eAAe,UAAU,aAAa,EAAE,OAAO,OAAO,CAAC;AAG9D,SAAO;AACT;AAUO,SAAS,WACZF,QACA,UACA,OACI;AACN,QAAM,OAAOA,OAAM,QAAQ;AAC3B,6BAAO,OAAO,IAAI,GAAG,aAAS,mBAAG,QAAQ,uBAAuB;AAEhE,aAAW,QAAQ,OAAO;AACxB,UAAM,aAAaA,OAAM,IAAI;AAC7B,+BAAO,OAAO,UAAU,GAAG,aAAS,mBAAG,IAAI,0BAAsB,mBAAG,QAAQ,uBAAuB;AACnG,QAAI,KAAK,OAAO,SAAS,UAAU;AAAG;AACtC,SAAK,OAAO,KAAK,UAAU;AAAA,EAC7B;AACF;AAEO,SAAS,UACZA,QACA,UACA,OACI;AACN,QAAM,OAAOA,OAAM,QAAQ;AAC3B,6BAAO,OAAO,IAAI,GAAG,aAAS,mBAAG,QAAQ,uBAAuB;AAEhE,aAAW,QAAQ,OAAO;AACxB,UAAM,YAAYA,OAAM,IAAI;AAC5B,+BAAO,OAAO,SAAS,GAAG,aAAS,mBAAG,IAAI,yBAAqB,mBAAG,QAAQ,uBAAuB;AACjG,QAAI,KAAK,MAAM,SAAS,SAAS;AAAG;AACpC,SAAK,MAAM,KAAK,SAAS;AAAA,EAC3B;AACF;",
5
- "names": ["props", "tasks", "build", "promise", "invoke"]
4
+ "mappings": "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",
5
+ "names": ["build", "promise", "start", "invoke"]
6
6
  }
package/dist/build.d.ts CHANGED
@@ -1,9 +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
- type TaskNames<B extends Build> = keyof {
5
- [name in keyof B as B[name] extends Task ? name : never]: any;
6
- };
7
- 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;
8
- 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;
9
- export {};
4
+ /** Check if the specified build is actually a {@link Build} */
5
+ export declare function isBuild(build: any): build is Build<Record<string, any>>;
6
+ /** Invoke a number of tasks in a {@link Build} */
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;