@plugjs/plug 0.0.15 → 0.0.17

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 (127) hide show
  1. package/dist/assert.cjs +18 -38
  2. package/dist/assert.cjs.map +1 -1
  3. package/dist/assert.d.ts +2 -16
  4. package/dist/assert.mjs +17 -32
  5. package/dist/assert.mjs.map +1 -1
  6. package/dist/async.cjs +2 -2
  7. package/dist/async.cjs.map +1 -1
  8. package/dist/async.d.ts +1 -1
  9. package/dist/async.mjs +2 -2
  10. package/dist/async.mjs.map +1 -1
  11. package/dist/build.cjs +20 -72
  12. package/dist/build.cjs.map +2 -2
  13. package/dist/build.d.ts +5 -3
  14. package/dist/build.mjs +22 -74
  15. package/dist/build.mjs.map +2 -2
  16. package/dist/failure.cjs +48 -0
  17. package/dist/failure.cjs.map +6 -0
  18. package/dist/failure.d.ts +13 -0
  19. package/dist/failure.mjs +22 -0
  20. package/dist/failure.mjs.map +6 -0
  21. package/dist/fork.cjs +21 -10
  22. package/dist/fork.cjs.map +1 -1
  23. package/dist/fork.d.ts +19 -1
  24. package/dist/fork.mjs +21 -11
  25. package/dist/fork.mjs.map +1 -1
  26. package/dist/helpers.cjs +8 -40
  27. package/dist/helpers.cjs.map +1 -1
  28. package/dist/helpers.d.ts +23 -3
  29. package/dist/helpers.mjs +8 -40
  30. package/dist/helpers.mjs.map +1 -1
  31. package/dist/index.cjs +16 -0
  32. package/dist/index.cjs.map +1 -1
  33. package/dist/index.d.ts +3 -1
  34. package/dist/index.mjs +7 -0
  35. package/dist/index.mjs.map +1 -1
  36. package/dist/log/logger.cjs +15 -12
  37. package/dist/log/logger.cjs.map +1 -1
  38. package/dist/log/logger.d.ts +2 -0
  39. package/dist/log/logger.mjs +15 -12
  40. package/dist/log/logger.mjs.map +1 -1
  41. package/dist/log/report.cjs +7 -4
  42. package/dist/log/report.cjs.map +1 -1
  43. package/dist/log/report.mjs +7 -4
  44. package/dist/log/report.mjs.map +1 -1
  45. package/dist/log.cjs +3 -0
  46. package/dist/log.cjs.map +1 -1
  47. package/dist/log.mjs +3 -0
  48. package/dist/log.mjs.map +1 -1
  49. package/dist/pipe.cjs +56 -14
  50. package/dist/pipe.cjs.map +1 -1
  51. package/dist/pipe.d.ts +42 -28
  52. package/dist/pipe.mjs +60 -13
  53. package/dist/pipe.mjs.map +1 -1
  54. package/dist/plugs/copy.cjs +1 -1
  55. package/dist/plugs/copy.cjs.map +1 -1
  56. package/dist/plugs/copy.mjs +1 -1
  57. package/dist/plugs/copy.mjs.map +1 -1
  58. package/dist/plugs/coverage.cjs +1 -2
  59. package/dist/plugs/coverage.cjs.map +1 -1
  60. package/dist/plugs/coverage.mjs +1 -2
  61. package/dist/plugs/coverage.mjs.map +1 -1
  62. package/dist/plugs/debug.cjs +6 -1
  63. package/dist/plugs/debug.cjs.map +1 -1
  64. package/dist/plugs/debug.d.ts +1 -1
  65. package/dist/plugs/debug.mjs +7 -2
  66. package/dist/plugs/debug.mjs.map +1 -1
  67. package/dist/plugs/esbuild.mjs.map +1 -1
  68. package/dist/plugs/eslint/runner.cjs +2 -1
  69. package/dist/plugs/eslint/runner.cjs.map +1 -1
  70. package/dist/plugs/eslint/runner.d.ts +1 -1
  71. package/dist/plugs/eslint/runner.mjs +3 -2
  72. package/dist/plugs/eslint/runner.mjs.map +1 -1
  73. package/dist/plugs/eslint.cjs +2 -2
  74. package/dist/plugs/eslint.cjs.map +1 -1
  75. package/dist/plugs/eslint.mjs +1 -1
  76. package/dist/plugs/exec.cjs +1 -1
  77. package/dist/plugs/exec.cjs.map +1 -1
  78. package/dist/plugs/exec.mjs +1 -1
  79. package/dist/plugs/exec.mjs.map +1 -1
  80. package/dist/plugs/mocha/runner.cjs +2 -2
  81. package/dist/plugs/mocha/runner.cjs.map +1 -1
  82. package/dist/plugs/mocha/runner.d.ts +1 -1
  83. package/dist/plugs/mocha/runner.mjs +2 -2
  84. package/dist/plugs/mocha/runner.mjs.map +1 -1
  85. package/dist/plugs/mocha.cjs +2 -2
  86. package/dist/plugs/mocha.cjs.map +1 -1
  87. package/dist/plugs/mocha.mjs +1 -1
  88. package/dist/plugs/rmf.mjs.map +1 -1
  89. package/dist/plugs/tsc/report.cjs.map +1 -1
  90. package/dist/plugs/tsc/report.mjs.map +1 -1
  91. package/dist/plugs/tsc/runner.cjs +3 -6
  92. package/dist/plugs/tsc/runner.cjs.map +2 -2
  93. package/dist/plugs/tsc/runner.mjs +4 -7
  94. package/dist/plugs/tsc/runner.mjs.map +2 -2
  95. package/dist/plugs/tsc.cjs +2 -2
  96. package/dist/plugs/tsc.cjs.map +1 -1
  97. package/dist/plugs/tsc.mjs +1 -1
  98. package/dist/types.d.ts +7 -8
  99. package/dist/utils/asyncfs.cjs.map +1 -1
  100. package/dist/utils/asyncfs.mjs.map +1 -1
  101. package/extra/cli.mjs +1 -1
  102. package/package.json +14 -13
  103. package/src/assert.ts +20 -34
  104. package/src/async.ts +3 -3
  105. package/src/failure.ts +31 -0
  106. package/src/fork.ts +43 -10
  107. package/src/helpers.ts +35 -56
  108. package/src/index.ts +4 -3
  109. package/src/log/logger.ts +22 -16
  110. package/src/log/report.ts +7 -3
  111. package/src/log.ts +4 -0
  112. package/src/pipe.ts +147 -44
  113. package/src/plugs/copy.ts +2 -2
  114. package/src/plugs/coverage/report.ts +1 -1
  115. package/src/plugs/coverage.ts +2 -3
  116. package/src/plugs/debug.ts +11 -4
  117. package/src/plugs/esbuild.ts +1 -1
  118. package/src/plugs/eslint/runner.ts +4 -3
  119. package/src/plugs/eslint.ts +1 -1
  120. package/src/plugs/exec.ts +1 -1
  121. package/src/plugs/mocha/runner.ts +3 -3
  122. package/src/plugs/mocha.ts +1 -1
  123. package/src/plugs/rmf.ts +1 -1
  124. package/src/plugs/tsc/runner.ts +5 -8
  125. package/src/plugs/tsc.ts +1 -1
  126. package/src/types.ts +8 -15
  127. package/src/utils/asyncfs.ts +1 -0
package/dist/assert.cjs CHANGED
@@ -20,53 +20,33 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
20
20
  // assert.ts
21
21
  var assert_exports = {};
22
22
  __export(assert_exports, {
23
- BuildError: () => BuildError,
24
- BuildFailure: () => BuildFailure,
25
23
  assert: () => assert,
26
- fail: () => fail,
27
- failure: () => failure,
28
- isBuildError: () => isBuildError,
29
- isBuildFailure: () => isBuildFailure
24
+ assertPromises: () => assertPromises
30
25
  });
31
26
  module.exports = __toCommonJS(assert_exports);
32
- var buildError = Symbol.for("plugjs:buildError");
33
- var buildFailure = Symbol.for("plugjs:buildFailure");
34
- function isBuildError(arg) {
35
- return arg && arg[buildError] === buildError;
27
+ var import_failure = require("./failure.cjs");
28
+ async function assertPromises(promises, message) {
29
+ const settlements = await Promise.allSettled(promises);
30
+ const results = [];
31
+ const failures = /* @__PURE__ */ new Set();
32
+ settlements.forEach((settlement) => {
33
+ if (settlement.status === "fulfilled") {
34
+ results.push(settlement.value);
35
+ } else {
36
+ failures.add(settlement.reason);
37
+ }
38
+ });
39
+ if (failures.size)
40
+ throw new import_failure.BuildFailure(message, [...failures]);
41
+ return results;
36
42
  }
37
- function isBuildFailure(arg) {
38
- return arg && arg[buildFailure] === buildFailure;
39
- }
40
- var BuildError = class extends Error {
41
- constructor(message) {
42
- super(message);
43
- Object.defineProperty(this, buildError, { value: buildError });
44
- }
45
- };
46
- var BuildFailure = class extends Error {
47
- constructor() {
48
- super("Build Failure");
49
- Object.defineProperty(this, buildFailure, { value: buildFailure });
50
- }
51
- };
52
43
  function assert(assertion, message) {
53
44
  if (!assertion)
54
- throw new BuildError(message);
55
- }
56
- function fail(message) {
57
- throw new BuildError(message);
58
- }
59
- function failure() {
60
- return new BuildFailure();
45
+ throw new import_failure.BuildFailure(message);
61
46
  }
62
47
  // Annotate the CommonJS export names for ESM import in node:
63
48
  0 && (module.exports = {
64
- BuildError,
65
- BuildFailure,
66
49
  assert,
67
- fail,
68
- failure,
69
- isBuildError,
70
- isBuildFailure
50
+ assertPromises
71
51
  });
72
52
  //# sourceMappingURL=assert.cjs.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/assert.ts"],
4
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,IAAM,aAAa,OAAO,IAAI,mBAAmB;AACjD,IAAM,eAAe,OAAO,IAAI,qBAAqB;AAG9C,SAAS,aAAa,KAA6B;AACxD,SAAO,OAAO,IAAI,gBAAgB;AACpC;AAGO,SAAS,eAAe,KAA+B;AAC5D,SAAO,OAAO,IAAI,kBAAkB;AACtC;AAGO,IAAM,aAAN,cAAyB,MAAM;AAAA,EACpC,YAAY,SAAiB;AAC3B,UAAM,OAAO;AACb,WAAO,eAAe,MAAM,YAAY,EAAE,OAAO,WAAW,CAAC;AAAA,EAC/D;AACF;AAGO,IAAM,eAAN,cAA2B,MAAM;AAAA,EACtC,cAAc;AACZ,UAAM,eAAe;AACrB,WAAO,eAAe,MAAM,cAAc,EAAE,OAAO,aAAa,CAAC;AAAA,EACnE;AACF;AAGO,SAAS,OAAO,WAAgB,SAAoC;AACzE,MAAI,CAAE;AAAW,UAAM,IAAI,WAAW,OAAO;AAC/C;AAGO,SAAS,KAAK,SAAwB;AAC3C,QAAM,IAAI,WAAW,OAAO;AAC9B;AAGO,SAAS,UAAwB;AACtC,SAAO,IAAI,aAAa;AAC1B;",
4
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,qBAA6B;AAG7B,eAAsB,eAAkB,UAA8B,SAA+B;AAEnG,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,IAAI,4BAAa,SAAS,CAAE,GAAG,QAAS,CAAC;AAElE,SAAO;AACT;AAGO,SAAS,OAAO,WAAgB,SAAoC;AACzE,MAAI,CAAE;AAAW,UAAM,IAAI,4BAAa,OAAO;AACjD;",
5
5
  "names": []
6
6
  }
package/dist/assert.d.ts CHANGED
@@ -1,18 +1,4 @@
1
- /** Check if the specified argument is a {@link BuildError} */
2
- export declare function isBuildError(arg: any): arg is BuildError;
3
- /** Check if the specified argument is a {@link BuildFailure} */
4
- export declare function isBuildFailure(arg: any): arg is BuildFailure;
5
- /** An error produced in our build, with proper inspection for logging */
6
- export declare class BuildError extends Error {
7
- constructor(message: string);
8
- }
9
- /** A {@link BuildFailure} represents an error _already logged_ in our build. */
10
- export declare class BuildFailure extends Error {
11
- constructor();
12
- }
1
+ /** Await and assert that all specified promises were fulfilled */
2
+ export declare function assertPromises<T>(promises: (T | Promise<T>)[], message: string): Promise<T[]>;
13
3
  /** Asserts something as _truthy_ and fail the build if not */
14
4
  export declare function assert(assertion: any, message: string): asserts assertion;
15
- /** Throw a {@link BuildError} (an {@link Error} printed nicely) */
16
- export declare function fail(message: string): never;
17
- /** Return a non-logged {@link BuildFailure} */
18
- export declare function failure(): BuildFailure;
package/dist/assert.mjs CHANGED
@@ -1,41 +1,26 @@
1
1
  // assert.ts
2
- var buildError = Symbol.for("plugjs:buildError");
3
- var buildFailure = Symbol.for("plugjs:buildFailure");
4
- function isBuildError(arg) {
5
- return arg && arg[buildError] === buildError;
2
+ import { BuildFailure } from "./failure.mjs";
3
+ async function assertPromises(promises, message) {
4
+ const settlements = await Promise.allSettled(promises);
5
+ const results = [];
6
+ const failures = /* @__PURE__ */ new Set();
7
+ settlements.forEach((settlement) => {
8
+ if (settlement.status === "fulfilled") {
9
+ results.push(settlement.value);
10
+ } else {
11
+ failures.add(settlement.reason);
12
+ }
13
+ });
14
+ if (failures.size)
15
+ throw new BuildFailure(message, [...failures]);
16
+ return results;
6
17
  }
7
- function isBuildFailure(arg) {
8
- return arg && arg[buildFailure] === buildFailure;
9
- }
10
- var BuildError = class extends Error {
11
- constructor(message) {
12
- super(message);
13
- Object.defineProperty(this, buildError, { value: buildError });
14
- }
15
- };
16
- var BuildFailure = class extends Error {
17
- constructor() {
18
- super("Build Failure");
19
- Object.defineProperty(this, buildFailure, { value: buildFailure });
20
- }
21
- };
22
18
  function assert(assertion, message) {
23
19
  if (!assertion)
24
- throw new BuildError(message);
25
- }
26
- function fail(message) {
27
- throw new BuildError(message);
28
- }
29
- function failure() {
30
- return new BuildFailure();
20
+ throw new BuildFailure(message);
31
21
  }
32
22
  export {
33
- BuildError,
34
- BuildFailure,
35
23
  assert,
36
- fail,
37
- failure,
38
- isBuildError,
39
- isBuildFailure
24
+ assertPromises
40
25
  };
41
26
  //# sourceMappingURL=assert.mjs.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/assert.ts"],
4
- "mappings": ";AAIA,IAAM,aAAa,OAAO,IAAI,mBAAmB;AACjD,IAAM,eAAe,OAAO,IAAI,qBAAqB;AAG9C,SAAS,aAAa,KAA6B;AACxD,SAAO,OAAO,IAAI,gBAAgB;AACpC;AAGO,SAAS,eAAe,KAA+B;AAC5D,SAAO,OAAO,IAAI,kBAAkB;AACtC;AAGO,IAAM,aAAN,cAAyB,MAAM;AAAA,EACpC,YAAY,SAAiB;AAC3B,UAAM,OAAO;AACb,WAAO,eAAe,MAAM,YAAY,EAAE,OAAO,WAAW,CAAC;AAAA,EAC/D;AACF;AAGO,IAAM,eAAN,cAA2B,MAAM;AAAA,EACtC,cAAc;AACZ,UAAM,eAAe;AACrB,WAAO,eAAe,MAAM,cAAc,EAAE,OAAO,aAAa,CAAC;AAAA,EACnE;AACF;AAGO,SAAS,OAAO,WAAgB,SAAoC;AACzE,MAAI,CAAE;AAAW,UAAM,IAAI,WAAW,OAAO;AAC/C;AAGO,SAAS,KAAK,SAAwB;AAC3C,QAAM,IAAI,WAAW,OAAO;AAC9B;AAGO,SAAS,UAAwB;AACtC,SAAO,IAAI,aAAa;AAC1B;",
4
+ "mappings": ";AAIA,SAAS,oBAAoB;AAG7B,eAAsB,eAAkB,UAA8B,SAA+B;AAEnG,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,IAAI,aAAa,SAAS,CAAE,GAAG,QAAS,CAAC;AAElE,SAAO;AACT;AAGO,SAAS,OAAO,WAAgB,SAAoC;AACzE,MAAI,CAAE;AAAW,UAAM,IAAI,aAAa,OAAO;AACjD;",
5
5
  "names": []
6
6
  }
package/dist/async.cjs CHANGED
@@ -27,7 +27,6 @@ __export(async_exports, {
27
27
  });
28
28
  module.exports = __toCommonJS(async_exports);
29
29
  var import_node_async_hooks = require("node:async_hooks");
30
- var import_assert = require("./assert.cjs");
31
30
  function runAsync(context, taskName, callback) {
32
31
  return storage.run(context, async () => {
33
32
  try {
@@ -43,7 +42,8 @@ function currentContext() {
43
42
  }
44
43
  function requireContext() {
45
44
  const context = storage.getStore();
46
- (0, import_assert.assert)(context, "Unable to retrieve current context");
45
+ if (!context)
46
+ throw new Error("Unable to retrieve current context");
47
47
  return context;
48
48
  }
49
49
  function runningTasks() {
@@ -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;AAClC,oBAAuB;AAWhB,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,4BAAO,SAAS,oCAAoC;AACpD,SAAO;AACT;AAKO,SAAS,eAAyB;AACvC,SAAO,CAAE,GAAG,KAAM,EAAE,KAAK;AAC3B;AAMA,IAAM,UAAU,IAAI,0CAA2B;AAC/C,IAAM,QAAQ,oBAAI;",
4
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,8BAAkC;AAU3B,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,MAAI,CAAE;AAAS,UAAM,IAAI,MAAM,oCAAoC;AACnE,SAAO;AACT;AAKO,SAAS,eAAyB;AACvC,SAAO,CAAE,GAAG,KAAM,EAAE,KAAK;AAC3B;AAMA,IAAM,UAAU,IAAI,0CAA2B;AAC/C,IAAM,QAAQ,oBAAI;",
5
5
  "names": []
6
6
  }
package/dist/async.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Context } from './pipe';
1
+ import type { Context } from './pipe';
2
2
  /**
3
3
  * Run the specified `callback` associating the specified {@link Context} and task
4
4
  * name with the current asynchronous invocation context.
package/dist/async.mjs CHANGED
@@ -1,6 +1,5 @@
1
1
  // async.ts
2
2
  import { AsyncLocalStorage } from "node:async_hooks";
3
- import { assert } from "./assert.mjs";
4
3
  function runAsync(context, taskName, callback) {
5
4
  return storage.run(context, async () => {
6
5
  try {
@@ -16,7 +15,8 @@ function currentContext() {
16
15
  }
17
16
  function requireContext() {
18
17
  const context = storage.getStore();
19
- assert(context, "Unable to retrieve current context");
18
+ if (!context)
19
+ throw new Error("Unable to retrieve current context");
20
20
  return context;
21
21
  }
22
22
  function runningTasks() {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/async.ts"],
4
- "mappings": ";AAAA,SAAS,yBAAyB;AAClC,SAAS,cAAc;AAWhB,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;AAMA,IAAM,UAAU,IAAI,kBAA2B;AAC/C,IAAM,QAAQ,oBAAI;",
4
+ "mappings": ";AAEA,SAAS,yBAAyB;AAU3B,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,MAAI,CAAE;AAAS,UAAM,IAAI,MAAM,oCAAoC;AACnE,SAAO;AACT;AAKO,SAAS,eAAyB;AACvC,SAAO,CAAE,GAAG,KAAM,EAAE,KAAK;AAC3B;AAMA,IAAM,UAAU,IAAI,kBAA2B;AAC/C,IAAM,QAAQ,oBAAI;",
5
5
  "names": []
6
6
  }
package/dist/build.cjs CHANGED
@@ -21,7 +21,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
21
21
  var build_exports = {};
22
22
  __export(build_exports, {
23
23
  build: () => build,
24
- call: () => call
24
+ invoke: () => invoke
25
25
  });
26
26
  module.exports = __toCommonJS(build_exports);
27
27
  var import_assert = require("./assert.cjs");
@@ -30,41 +30,6 @@ var import_log = require("./log.cjs");
30
30
  var import_pipe = require("./pipe.cjs");
31
31
  var import_caller = require("./utils/caller.cjs");
32
32
  var import_options = require("./utils/options.cjs");
33
- var PipeImpl = class extends import_pipe.Pipe {
34
- constructor(_promise, _promises, _context) {
35
- super();
36
- this._promise = _promise;
37
- this._promises = _promises;
38
- this._context = _context;
39
- _promises.add(_promise);
40
- }
41
- [Symbol.toStringTag] = "PipeImpl";
42
- then(onfulfilled, onrejected) {
43
- return this._promise.then(onfulfilled, onrejected);
44
- }
45
- catch(onrejected) {
46
- return this._promise.catch(onrejected);
47
- }
48
- finally(onfinally) {
49
- return this._promise.finally(onfinally);
50
- }
51
- plug(arg) {
52
- const plug = typeof arg === "function" ? { pipe: arg } : arg;
53
- const promise = this._promise.then(async (files) => {
54
- (0, import_assert.assert)(files, "Unable to extend Pipe");
55
- const result = await plug.pipe(files, this._context);
56
- (0, import_assert.assert)(result, "Plug did not return a Files instance");
57
- return result;
58
- });
59
- return new PipeImpl(promise, this._promises, this._context);
60
- }
61
- async run() {
62
- return this._promise.then((whaps) => {
63
- (0, import_assert.assert)(whaps, "Unable to run Pipe");
64
- return whaps;
65
- });
66
- }
67
- };
68
33
  var TaskImpl = class {
69
34
  constructor(buildFile, tasks, props, _def) {
70
35
  this.buildFile = buildFile;
@@ -72,7 +37,7 @@ var TaskImpl = class {
72
37
  this.props = props;
73
38
  this._def = _def;
74
39
  }
75
- call(state, taskName) {
40
+ invoke(state, taskName) {
76
41
  (0, import_assert.assert)(!state.stack.includes(this), `Recursion detected calling ${(0, import_log.$t)(taskName)}`);
77
42
  const cached = state.cache.get(this);
78
43
  if (cached)
@@ -81,15 +46,14 @@ var TaskImpl = class {
81
46
  const tasks = Object.assign({}, this.tasks, state.tasks);
82
47
  const stack = [...state.stack, this];
83
48
  const cache = state.cache;
84
- const promises = /* @__PURE__ */ new Set();
85
49
  const context = new import_pipe.Context(this.buildFile, taskName);
86
50
  const build2 = new Proxy({}, {
87
51
  get(_, name) {
88
52
  if (name in tasks) {
89
53
  return () => {
90
54
  const state2 = { stack, cache, tasks, props };
91
- const promise2 = tasks[name].call(state2, name);
92
- return new PipeImpl(promise2, promises, context);
55
+ const promise2 = tasks[name].invoke(state2, name);
56
+ return new import_pipe.Pipe(context, promise2);
93
57
  };
94
58
  } else if (name in props) {
95
59
  return props[name];
@@ -99,30 +63,15 @@ var TaskImpl = class {
99
63
  context.log.info("Running...");
100
64
  const now = Date.now();
101
65
  const promise = (0, import_async.runAsync)(context, taskName, async () => {
102
- try {
103
- let result = await this._def.call(build2);
104
- if (result && "run" in result)
105
- result = await result.run();
106
- return result || void 0;
107
- } finally {
108
- const settlements = await Promise.allSettled([...promises]);
109
- const errors = /* @__PURE__ */ new Set();
110
- for (const settlement of settlements) {
111
- if (settlement.status === "fulfilled")
112
- continue;
113
- if (!(0, import_assert.isBuildFailure)(settlement.reason)) {
114
- errors.add(settlement.reason);
115
- }
116
- }
117
- for (const error of errors)
118
- context.log.error(error);
119
- }
66
+ const result = await this._def.call(build2) || void 0;
67
+ const promises = (0, import_pipe.getContextPromises)(context);
68
+ await (0, import_assert.assertPromises)([...promises], "Error awaiting task pipes");
69
+ return result;
120
70
  }).then((result) => {
121
71
  context.log.notice(`Success ${(0, import_log.$ms)(Date.now() - now)}`);
122
72
  return result;
123
73
  }).catch((error) => {
124
- context.log.error(`Failure ${(0, import_log.$ms)(Date.now() - now)}`, error);
125
- throw (0, import_assert.failure)();
74
+ throw context.log.fail(`Failure ${(0, import_log.$ms)(Date.now() - now)}`, error);
126
75
  });
127
76
  cache.set(this, promise);
128
77
  return promise;
@@ -147,7 +96,7 @@ function build(def) {
147
96
  if (len > import_log.logOptions.taskLength)
148
97
  import_log.logOptions.taskLength = len;
149
98
  }
150
- const call2 = async function call3(taskNames, overrideProps = {}) {
99
+ const invoke2 = async function invoke3(taskNames, overrideProps = {}) {
151
100
  const logger = (0, import_log.getLogger)("");
152
101
  const state = {
153
102
  cache: /* @__PURE__ */ new Map(),
@@ -160,31 +109,30 @@ function build(def) {
160
109
  try {
161
110
  for (const taskName of taskNames) {
162
111
  if (taskName in tasks) {
163
- await tasks[taskName].call(state, taskName);
112
+ await tasks[taskName].invoke(state, taskName);
164
113
  } else {
165
- (0, import_assert.fail)(`Task ${(0, import_log.$t)(taskName)} not found in build`);
114
+ throw logger.fail(`Task ${(0, import_log.$t)(taskName)} not found in build`);
166
115
  }
167
116
  }
168
117
  logger.notice(`Build successful ${(0, import_log.$ms)(Date.now() - now)}`);
169
118
  } catch (error) {
170
- logger.error(`Build failed ${(0, import_log.$ms)(Date.now() - now)}`, error);
171
- throw (0, import_assert.failure)();
119
+ throw logger.fail(`Build failed ${(0, import_log.$ms)(Date.now() - now)}`, error);
172
120
  }
173
121
  };
174
122
  const compiled = Object.assign({}, props, tasks);
175
- Object.defineProperty(compiled, buildMarker, { value: call2 });
123
+ Object.defineProperty(compiled, buildMarker, { value: invoke2 });
176
124
  return compiled;
177
125
  }
178
- function call(build2, ...args) {
126
+ function invoke(build2, ...args) {
179
127
  const { params: tasks, options: props } = (0, import_options.parseOptions)(args, {});
180
- const call2 = build2[buildMarker];
181
- if (typeof call2 !== "function")
182
- (0, import_assert.fail)("Unknown build type");
183
- return call2(tasks, props);
128
+ const invoke2 = build2[buildMarker];
129
+ if (typeof invoke2 !== "function")
130
+ import_log.log.fail("Unknown build type");
131
+ return invoke2(tasks, props);
184
132
  }
185
133
  // Annotate the CommonJS export names for ESM import in node:
186
134
  0 && (module.exports = {
187
135
  build,
188
- call
136
+ invoke
189
137
  });
190
138
  //# sourceMappingURL=build.cjs.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/build.ts"],
4
- "mappings": "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",
5
- "names": ["build", "state", "promise", "call"]
4
+ "mappings": "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",
5
+ "names": ["build", "state", "promise", "invoke"]
6
6
  }
package/dist/build.d.ts CHANGED
@@ -1,12 +1,14 @@
1
- import type { Build, BuildDef, Props, ThisBuild } from './types';
1
+ import type { Build, BuildDef, Task, ThisBuild } 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
  /** Internal type identifying all _task names_ in a {@link Build} */
5
- declare type TaskNames<B extends Build> = string & keyof B & (B extends Build<BuildDef, infer Tasks, Props> ? keyof Tasks : never);
5
+ declare type TaskNames<B extends Build> = string & keyof {
6
+ [k in keyof B as B[k] extends Task ? k : never]?: B[k];
7
+ };
6
8
  /** Internal type identifying all _property names_ in a {@link Build} */
7
9
  declare type OverrideProps<B extends Build> = {
8
10
  [k in keyof B as B[k] extends string ? k : never]?: string;
9
11
  };
10
12
  /** Serially invoke tasks in a {@link Build} optionally overriding properties */
11
- export declare function call<B extends Build>(build: B, ...args: [...taskNames: [TaskNames<B>, ...TaskNames<B>[]]] | [...taskNames: [TaskNames<B>, ...TaskNames<B>[]], options: OverrideProps<B>]): Promise<void>;
13
+ export declare function invoke<B extends Build>(build: B, ...args: [...taskNames: [TaskNames<B>, ...TaskNames<B>[]]] | [...taskNames: [TaskNames<B>, ...TaskNames<B>[]], options: OverrideProps<B>]): Promise<void>;
12
14
  export {};
package/dist/build.mjs CHANGED
@@ -1,45 +1,10 @@
1
1
  // build.ts
2
- import { assert, fail, failure, isBuildFailure } from "./assert.mjs";
2
+ import { assert, assertPromises } from "./assert.mjs";
3
3
  import { runAsync } from "./async.mjs";
4
- import { $ms, $t, getLogger, logOptions } from "./log.mjs";
5
- import { Context, Pipe } from "./pipe.mjs";
4
+ import { $ms, $t, getLogger, log, logOptions } from "./log.mjs";
5
+ import { Context, getContextPromises, Pipe } from "./pipe.mjs";
6
6
  import { findCaller } from "./utils/caller.mjs";
7
7
  import { parseOptions } from "./utils/options.mjs";
8
- var PipeImpl = class extends Pipe {
9
- constructor(_promise, _promises, _context) {
10
- super();
11
- this._promise = _promise;
12
- this._promises = _promises;
13
- this._context = _context;
14
- _promises.add(_promise);
15
- }
16
- [Symbol.toStringTag] = "PipeImpl";
17
- then(onfulfilled, onrejected) {
18
- return this._promise.then(onfulfilled, onrejected);
19
- }
20
- catch(onrejected) {
21
- return this._promise.catch(onrejected);
22
- }
23
- finally(onfinally) {
24
- return this._promise.finally(onfinally);
25
- }
26
- plug(arg) {
27
- const plug = typeof arg === "function" ? { pipe: arg } : arg;
28
- const promise = this._promise.then(async (files) => {
29
- assert(files, "Unable to extend Pipe");
30
- const result = await plug.pipe(files, this._context);
31
- assert(result, "Plug did not return a Files instance");
32
- return result;
33
- });
34
- return new PipeImpl(promise, this._promises, this._context);
35
- }
36
- async run() {
37
- return this._promise.then((whaps) => {
38
- assert(whaps, "Unable to run Pipe");
39
- return whaps;
40
- });
41
- }
42
- };
43
8
  var TaskImpl = class {
44
9
  constructor(buildFile, tasks, props, _def) {
45
10
  this.buildFile = buildFile;
@@ -47,7 +12,7 @@ var TaskImpl = class {
47
12
  this.props = props;
48
13
  this._def = _def;
49
14
  }
50
- call(state, taskName) {
15
+ invoke(state, taskName) {
51
16
  assert(!state.stack.includes(this), `Recursion detected calling ${$t(taskName)}`);
52
17
  const cached = state.cache.get(this);
53
18
  if (cached)
@@ -56,15 +21,14 @@ var TaskImpl = class {
56
21
  const tasks = Object.assign({}, this.tasks, state.tasks);
57
22
  const stack = [...state.stack, this];
58
23
  const cache = state.cache;
59
- const promises = /* @__PURE__ */ new Set();
60
24
  const context = new Context(this.buildFile, taskName);
61
25
  const build2 = new Proxy({}, {
62
26
  get(_, name) {
63
27
  if (name in tasks) {
64
28
  return () => {
65
29
  const state2 = { stack, cache, tasks, props };
66
- const promise2 = tasks[name].call(state2, name);
67
- return new PipeImpl(promise2, promises, context);
30
+ const promise2 = tasks[name].invoke(state2, name);
31
+ return new Pipe(context, promise2);
68
32
  };
69
33
  } else if (name in props) {
70
34
  return props[name];
@@ -74,30 +38,15 @@ var TaskImpl = class {
74
38
  context.log.info("Running...");
75
39
  const now = Date.now();
76
40
  const promise = runAsync(context, taskName, async () => {
77
- try {
78
- let result = await this._def.call(build2);
79
- if (result && "run" in result)
80
- result = await result.run();
81
- return result || void 0;
82
- } finally {
83
- const settlements = await Promise.allSettled([...promises]);
84
- const errors = /* @__PURE__ */ new Set();
85
- for (const settlement of settlements) {
86
- if (settlement.status === "fulfilled")
87
- continue;
88
- if (!isBuildFailure(settlement.reason)) {
89
- errors.add(settlement.reason);
90
- }
91
- }
92
- for (const error of errors)
93
- context.log.error(error);
94
- }
41
+ const result = await this._def.call(build2) || void 0;
42
+ const promises = getContextPromises(context);
43
+ await assertPromises([...promises], "Error awaiting task pipes");
44
+ return result;
95
45
  }).then((result) => {
96
46
  context.log.notice(`Success ${$ms(Date.now() - now)}`);
97
47
  return result;
98
48
  }).catch((error) => {
99
- context.log.error(`Failure ${$ms(Date.now() - now)}`, error);
100
- throw failure();
49
+ throw context.log.fail(`Failure ${$ms(Date.now() - now)}`, error);
101
50
  });
102
51
  cache.set(this, promise);
103
52
  return promise;
@@ -122,7 +71,7 @@ function build(def) {
122
71
  if (len > logOptions.taskLength)
123
72
  logOptions.taskLength = len;
124
73
  }
125
- const call2 = async function call3(taskNames, overrideProps = {}) {
74
+ const invoke2 = async function invoke3(taskNames, overrideProps = {}) {
126
75
  const logger = getLogger("");
127
76
  const state = {
128
77
  cache: /* @__PURE__ */ new Map(),
@@ -135,30 +84,29 @@ function build(def) {
135
84
  try {
136
85
  for (const taskName of taskNames) {
137
86
  if (taskName in tasks) {
138
- await tasks[taskName].call(state, taskName);
87
+ await tasks[taskName].invoke(state, taskName);
139
88
  } else {
140
- fail(`Task ${$t(taskName)} not found in build`);
89
+ throw logger.fail(`Task ${$t(taskName)} not found in build`);
141
90
  }
142
91
  }
143
92
  logger.notice(`Build successful ${$ms(Date.now() - now)}`);
144
93
  } catch (error) {
145
- logger.error(`Build failed ${$ms(Date.now() - now)}`, error);
146
- throw failure();
94
+ throw logger.fail(`Build failed ${$ms(Date.now() - now)}`, error);
147
95
  }
148
96
  };
149
97
  const compiled = Object.assign({}, props, tasks);
150
- Object.defineProperty(compiled, buildMarker, { value: call2 });
98
+ Object.defineProperty(compiled, buildMarker, { value: invoke2 });
151
99
  return compiled;
152
100
  }
153
- function call(build2, ...args) {
101
+ function invoke(build2, ...args) {
154
102
  const { params: tasks, options: props } = parseOptions(args, {});
155
- const call2 = build2[buildMarker];
156
- if (typeof call2 !== "function")
157
- fail("Unknown build type");
158
- return call2(tasks, props);
103
+ const invoke2 = build2[buildMarker];
104
+ if (typeof invoke2 !== "function")
105
+ log.fail("Unknown build type");
106
+ return invoke2(tasks, props);
159
107
  }
160
108
  export {
161
109
  build,
162
- call
110
+ invoke
163
111
  };
164
112
  //# sourceMappingURL=build.mjs.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/build.ts"],
4
- "mappings": "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",
5
- "names": ["build", "state", "promise", "call"]
4
+ "mappings": "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",
5
+ "names": ["build", "state", "promise", "invoke"]
6
6
  }