@plugjs/plug 0.0.2 → 0.0.5

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 (103) hide show
  1. package/dist/async.cjs +4 -2
  2. package/dist/async.cjs.map +1 -1
  3. package/dist/async.mjs +4 -2
  4. package/dist/async.mjs.map +1 -1
  5. package/dist/build.cjs +36 -16
  6. package/dist/build.cjs.map +2 -2
  7. package/dist/build.mjs +37 -17
  8. package/dist/build.mjs.map +2 -2
  9. package/dist/files.cjs +16 -2
  10. package/dist/files.cjs.map +1 -1
  11. package/dist/files.mjs +17 -3
  12. package/dist/files.mjs.map +1 -1
  13. package/dist/fork.cjs +7 -7
  14. package/dist/fork.cjs.map +1 -1
  15. package/dist/fork.mjs +7 -7
  16. package/dist/fork.mjs.map +1 -1
  17. package/dist/helpers.cjs +1 -18
  18. package/dist/helpers.cjs.map +1 -1
  19. package/dist/helpers.mjs +1 -17
  20. package/dist/helpers.mjs.map +1 -1
  21. package/dist/log/report.cjs +2 -1
  22. package/dist/log/report.cjs.map +1 -1
  23. package/dist/log/report.mjs +2 -1
  24. package/dist/log/report.mjs.map +1 -1
  25. package/dist/log.cjs +4 -1
  26. package/dist/log.cjs.map +1 -1
  27. package/dist/log.mjs +4 -1
  28. package/dist/log.mjs.map +1 -1
  29. package/dist/paths.cjs.map +1 -1
  30. package/dist/paths.mjs.map +1 -1
  31. package/dist/plugs/copy.cjs +2 -2
  32. package/dist/plugs/copy.cjs.map +1 -1
  33. package/dist/plugs/copy.mjs +1 -1
  34. package/dist/plugs/copy.mjs.map +1 -1
  35. package/dist/plugs/coverage/analysis.cjs +8 -3
  36. package/dist/plugs/coverage/analysis.cjs.map +2 -2
  37. package/dist/plugs/coverage/analysis.mjs +8 -3
  38. package/dist/plugs/coverage/analysis.mjs.map +2 -2
  39. package/dist/plugs/coverage/report.cjs +2 -1
  40. package/dist/plugs/coverage/report.cjs.map +1 -1
  41. package/dist/plugs/coverage/report.mjs +2 -1
  42. package/dist/plugs/coverage/report.mjs.map +1 -1
  43. package/dist/plugs/debug.cjs +6 -6
  44. package/dist/plugs/debug.cjs.map +1 -1
  45. package/dist/plugs/debug.mjs +7 -7
  46. package/dist/plugs/debug.mjs.map +1 -1
  47. package/dist/plugs/esbuild/fix-extensions.cjs +5 -4
  48. package/dist/plugs/esbuild/fix-extensions.cjs.map +1 -1
  49. package/dist/plugs/esbuild/fix-extensions.mjs +4 -3
  50. package/dist/plugs/esbuild/fix-extensions.mjs.map +1 -1
  51. package/dist/plugs/esbuild.cjs +34 -4
  52. package/dist/plugs/esbuild.cjs.map +2 -2
  53. package/dist/plugs/esbuild.mjs +35 -5
  54. package/dist/plugs/esbuild.mjs.map +2 -2
  55. package/dist/plugs/exec.cjs +2 -2
  56. package/dist/plugs/filter.cjs +2 -3
  57. package/dist/plugs/filter.cjs.map +1 -1
  58. package/dist/plugs/filter.mjs +2 -3
  59. package/dist/plugs/filter.mjs.map +1 -1
  60. package/dist/plugs/mocha/reporter.cjs +2 -2
  61. package/dist/plugs/mocha/reporter.cjs.map +1 -1
  62. package/dist/plugs/mocha/reporter.mjs +1 -1
  63. package/dist/plugs/mocha/reporter.mjs.map +1 -1
  64. package/dist/plugs/mocha/runner.cjs +1 -1
  65. package/dist/plugs/rmf.cjs +53 -0
  66. package/dist/plugs/rmf.cjs.map +6 -0
  67. package/dist/plugs/rmf.mjs +28 -0
  68. package/dist/plugs/rmf.mjs.map +6 -0
  69. package/dist/plugs/tsc/compiler.cjs +1 -1
  70. package/dist/plugs/tsc/options.cjs +1 -1
  71. package/dist/plugs/tsc/report.cjs +1 -1
  72. package/dist/plugs/tsc/runner.cjs +1 -1
  73. package/dist/plugs.cjs +1 -0
  74. package/dist/plugs.cjs.map +1 -1
  75. package/dist/plugs.mjs +1 -0
  76. package/dist/plugs.mjs.map +1 -1
  77. package/dist/run.cjs +3 -3
  78. package/dist/run.cjs.map +1 -1
  79. package/dist/run.mjs +3 -3
  80. package/dist/run.mjs.map +1 -1
  81. package/dist/utils/asyncfs.cjs +1 -1
  82. package/dist/utils/match.cjs +1 -1
  83. package/extra/cli.mjs +29 -20
  84. package/extra/ts-loader.mjs +10 -3
  85. package/package.json +4 -4
  86. package/src/files.ts +36 -4
  87. package/src/fork.ts +8 -8
  88. package/src/helpers.ts +4 -33
  89. package/src/paths.ts +1 -0
  90. package/src/plugs/copy.ts +1 -1
  91. package/src/plugs/debug.ts +7 -7
  92. package/src/plugs/esbuild.ts +69 -10
  93. package/src/plugs/filter.ts +2 -3
  94. package/src/plugs/rmf.ts +42 -0
  95. package/src/plugs.ts +1 -0
  96. package/src/run.ts +5 -5
  97. package/types/files.d.ts +14 -3
  98. package/types/helpers.d.ts +3 -13
  99. package/types/log/options.d.ts +2 -2
  100. package/types/plugs/rmf.d.ts +15 -0
  101. package/types/plugs.d.ts +1 -0
  102. package/types/run.d.ts +2 -2
  103. package/types/utils/asyncfs.d.ts +1 -1
package/dist/run.cjs.map CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/run.ts"],
4
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAqB;AACrB,oBAAuB;AACvB,mBAAoC;AACpC,iBAAwF;AACxF,mBAA8F;AAC9F,kBAA+B;AAC/B,qBAA2C;AAC3C,kBAAkC;AAgF3B,IAAM,UAAN,MAA6B;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAIT,YAAY,EAAE,UAAU,UAAU,WAAW,IAAI,GAA2B;AAC1E,SAAK,WAAW;AAChB,SAAK,WAAW;AAChB,SAAK,YAAY;AACjB,SAAK,MAAM,WAAO,sBAAU,QAAQ;AAAA,EACtC;AAAA,EAGA,YAAY,OAA6B;AACvC,SAAK,IAAI,YAAQ,2BAAe,KAAK;AAAA,EACvC;AAAA,EAEA,OAAO,OAAuB;AAC5B,eAAO,yBAAa,OAAO,KAAK,QAAQ;AAAA,EAC1C;AAAA,EAEA,WAAW,OAA+B;AACxC,UAAM,WAAO,uBAAK,GAAG,KAAK;AAC1B,QAAI,CAAE;AAAM,aAAO,KAAK;AAExB,QAAI,KAAK,WAAW,GAAG,GAAG;AACxB,YAAM,WAAW,KAAK,UAAU,CAAC;AACjC,gCAAO,KAAE,6BAAe,QAAQ,GAAG,sBAAsB,mBAAmB;AAC5E,iBAAO,sCAAoB,yCAA2B,GAAG,QAAQ;AAAA,IACnE;AAEA,YAAI,6BAAe,IAAI;AAAG,aAAO;AAEjC,eAAO,kCAAoB,KAAK,UAAU,IAAI;AAAA,EAChD;AAAA,EAIA,MAAM,UAAsC,OAA+B;AACzE,QAAI,OAAO,UAAU,UAAU;AAC7B,aAAO,mBAAM,QAAQ,KAAK,QAAQ,OAAO,GAAG,KAAK,CAAC;AAAA,IACpD,WAAW,OAAO;AAChB,aAAO,mBAAM,QAAQ,KAAK;AAAA,IAC5B,OAAO;AACL,aAAO,mBAAM,QAAQ,KAAK,QAAQ,CAAC;AAAA,IACrC;AAAA,EACF;AAAA,EAEA,KAAK,SAAiB,MAAwD;AAC5E,UAAM,EAAE,QAAQ,SAAS,EAAE,cAAc,QAAQ,EAAE,QAAI,6BAAa,MAAM,CAAC,CAAC;AAE5E,UAAM,UAAU,QAAQ,QAAQ,EAAE,KAAK,YAAY;AACjD,YAAM,UAAU,KAAK,MAAM,aAAa,GAAG;AAC3C,uBAAiB,YAAQ,kBAAK,QAAQ,WAAW,CAAE,MAAM,GAAG,MAAO,GAAG,OAAO,GAAG;AAC9E,gBAAQ,IAAI,IAAI;AAAA,MAClB;AACA,aAAO,QAAQ,MAAM;AAAA,IACvB,CAAC;AAED,WAAO,KAAK,KAAK,OAAO;AAAA,EAC1B;AAAA,EAEA,KAAK,OAAsD;AACzD,WAAO,IAAI,qBAAS,OAAO,IAAI;AAAA,EACjC;AAAA,EAEA,KAAK,MAA0C;AAC7C,UAAM,IAAI,MAAM,wBAAwB,OAAO;AAAA,EACjD;AACF;",
4
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAqB;AACrB,oBAAuB;AACvB,mBAAoC;AACpC,iBAAwF;AACxF,mBAA8F;AAC9F,kBAA+B;AAC/B,qBAA2C;AAC3C,kBAAkC;AAgF3B,IAAM,UAAN,MAA6B;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAIT,YAAY,EAAE,UAAU,UAAU,WAAW,IAAI,GAA2B;AAC1E,SAAK,WAAW;AAChB,SAAK,WAAW;AAChB,SAAK,YAAY;AACjB,SAAK,MAAM,WAAO,sBAAU,QAAQ;AAAA,EACtC;AAAA,EAGA,YAAY,OAA6B;AACvC,SAAK,IAAI,YAAQ,2BAAe,KAAK;AAAA,EACvC;AAAA,EAEA,OAAO,OAAuB;AAC5B,eAAO,yBAAa,OAAO,KAAK,QAAQ;AAAA,EAC1C;AAAA,EAEA,WAAW,OAA+B;AACxC,UAAM,WAAO,uBAAK,GAAG,KAAK;AAC1B,QAAI,CAAE;AAAM,aAAO,KAAK;AAExB,QAAI,KAAK,WAAW,GAAG,GAAG;AACxB,YAAM,WAAW,KAAK,UAAU,CAAC;AACjC,gCAAO,KAAE,6BAAe,QAAQ,GAAG,sBAAsB,mBAAmB;AAC5E,iBAAO,kCAAoB,KAAK,UAAU,QAAQ;AAAA,IACpD;AAEA,YAAI,6BAAe,IAAI;AAAG,aAAO;AAEjC,eAAO,sCAAoB,yCAA2B,GAAG,IAAI;AAAA,EAC/D;AAAA,EAIA,MAAM,UAAsC,OAA+B;AACzE,QAAI,OAAO,UAAU,UAAU;AAC7B,aAAO,mBAAM,QAAQ,KAAK,QAAQ,OAAO,GAAG,KAAK,CAAC;AAAA,IACpD,WAAW,OAAO;AAChB,aAAO,mBAAM,QAAQ,KAAK;AAAA,IAC5B,OAAO;AACL,aAAO,mBAAM,QAAQ,KAAK,QAAQ,CAAC;AAAA,IACrC;AAAA,EACF;AAAA,EAEA,KAAK,SAAiB,MAAwD;AAC5E,UAAM,EAAE,QAAQ,SAAS,EAAE,cAAc,QAAQ,EAAE,QAAI,6BAAa,MAAM,CAAC,CAAC;AAE5E,UAAM,UAAU,QAAQ,QAAQ,EAAE,KAAK,YAAY;AACjD,YAAM,UAAU,KAAK,MAAM,aAAa,GAAG;AAC3C,uBAAiB,YAAQ,kBAAK,QAAQ,WAAW,CAAE,MAAM,GAAG,MAAO,GAAG,OAAO,GAAG;AAC9E,gBAAQ,UAAU,IAAI;AAAA,MACxB;AACA,aAAO,QAAQ,MAAM;AAAA,IACvB,CAAC;AAED,WAAO,KAAK,KAAK,OAAO;AAAA,EAC1B;AAAA,EAEA,KAAK,OAAsD;AACzD,WAAO,IAAI,qBAAS,OAAO,IAAI;AAAA,EACjC;AAAA,EAEA,KAAK,MAA0C;AAC7C,UAAM,IAAI,MAAM,wBAAwB,OAAO;AAAA,EACjD;AACF;",
5
5
  "names": []
6
6
  }
package/dist/run.mjs CHANGED
@@ -31,11 +31,11 @@ var RunImpl = class {
31
31
  if (path.startsWith("@")) {
32
32
  const relative = path.substring(1);
33
33
  assert(!isAbsolutePath(relative), `Path component of "${path}" is absolute`);
34
- return resolveAbsolutePath(getCurrentWorkingDirectory(), relative);
34
+ return resolveAbsolutePath(this.buildDir, relative);
35
35
  }
36
36
  if (isAbsolutePath(path))
37
37
  return path;
38
- return resolveAbsolutePath(this.buildDir, path);
38
+ return resolveAbsolutePath(getCurrentWorkingDirectory(), path);
39
39
  }
40
40
  files(first, ...paths) {
41
41
  if (typeof first === "string") {
@@ -51,7 +51,7 @@ var RunImpl = class {
51
51
  const promise = Promise.resolve().then(async () => {
52
52
  const builder = this.files(directory || ".");
53
53
  for await (const file of walk(builder.directory, [glob, ...params], options)) {
54
- builder.add(file);
54
+ builder.unchecked(file);
55
55
  }
56
56
  return builder.build();
57
57
  });
package/dist/run.mjs.map CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/run.ts"],
4
- "mappings": ";AAAA,SAAS,YAAY;AACrB,SAAS,cAAc;AACvB,SAAS,aAA2B;AACpC,SAAS,cAAc,gBAAgB,iBAAiD;AACxF,SAAuB,4BAA4B,gBAAgB,2BAA2B;AAC9F,SAAe,gBAAgB;AAC/B,SAAuB,oBAAoB;AAC3C,SAAS,YAAyB;AAgF3B,IAAM,UAAN,MAA6B;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAIT,YAAY,EAAE,UAAU,UAAU,WAAW,IAAI,GAA2B;AAC1E,SAAK,WAAW;AAChB,SAAK,WAAW;AAChB,SAAK,YAAY;AACjB,SAAK,MAAM,OAAO,UAAU,QAAQ;AAAA,EACtC;AAAA,EAGA,YAAY,OAA6B;AACvC,SAAK,IAAI,QAAQ,eAAe,KAAK;AAAA,EACvC;AAAA,EAEA,OAAO,OAAuB;AAC5B,WAAO,aAAa,OAAO,KAAK,QAAQ;AAAA,EAC1C;AAAA,EAEA,WAAW,OAA+B;AACxC,UAAM,OAAO,KAAK,GAAG,KAAK;AAC1B,QAAI,CAAE;AAAM,aAAO,KAAK;AAExB,QAAI,KAAK,WAAW,GAAG,GAAG;AACxB,YAAM,WAAW,KAAK,UAAU,CAAC;AACjC,aAAO,CAAE,eAAe,QAAQ,GAAG,sBAAsB,mBAAmB;AAC5E,aAAO,oBAAoB,2BAA2B,GAAG,QAAQ;AAAA,IACnE;AAEA,QAAI,eAAe,IAAI;AAAG,aAAO;AAEjC,WAAO,oBAAoB,KAAK,UAAU,IAAI;AAAA,EAChD;AAAA,EAIA,MAAM,UAAsC,OAA+B;AACzE,QAAI,OAAO,UAAU,UAAU;AAC7B,aAAO,MAAM,QAAQ,KAAK,QAAQ,OAAO,GAAG,KAAK,CAAC;AAAA,IACpD,WAAW,OAAO;AAChB,aAAO,MAAM,QAAQ,KAAK;AAAA,IAC5B,OAAO;AACL,aAAO,MAAM,QAAQ,KAAK,QAAQ,CAAC;AAAA,IACrC;AAAA,EACF;AAAA,EAEA,KAAK,SAAiB,MAAwD;AAC5E,UAAM,EAAE,QAAQ,SAAS,EAAE,cAAc,QAAQ,EAAE,IAAI,aAAa,MAAM,CAAC,CAAC;AAE5E,UAAM,UAAU,QAAQ,QAAQ,EAAE,KAAK,YAAY;AACjD,YAAM,UAAU,KAAK,MAAM,aAAa,GAAG;AAC3C,uBAAiB,QAAQ,KAAK,QAAQ,WAAW,CAAE,MAAM,GAAG,MAAO,GAAG,OAAO,GAAG;AAC9E,gBAAQ,IAAI,IAAI;AAAA,MAClB;AACA,aAAO,QAAQ,MAAM;AAAA,IACvB,CAAC;AAED,WAAO,KAAK,KAAK,OAAO;AAAA,EAC1B;AAAA,EAEA,KAAK,OAAsD;AACzD,WAAO,IAAI,SAAS,OAAO,IAAI;AAAA,EACjC;AAAA,EAEA,KAAK,MAA0C;AAC7C,UAAM,IAAI,MAAM,wBAAwB,OAAO;AAAA,EACjD;AACF;",
4
+ "mappings": ";AAAA,SAAS,YAAY;AACrB,SAAS,cAAc;AACvB,SAAS,aAA2B;AACpC,SAAS,cAAc,gBAAgB,iBAAiD;AACxF,SAAuB,4BAA4B,gBAAgB,2BAA2B;AAC9F,SAAe,gBAAgB;AAC/B,SAAuB,oBAAoB;AAC3C,SAAS,YAAyB;AAgF3B,IAAM,UAAN,MAA6B;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAIT,YAAY,EAAE,UAAU,UAAU,WAAW,IAAI,GAA2B;AAC1E,SAAK,WAAW;AAChB,SAAK,WAAW;AAChB,SAAK,YAAY;AACjB,SAAK,MAAM,OAAO,UAAU,QAAQ;AAAA,EACtC;AAAA,EAGA,YAAY,OAA6B;AACvC,SAAK,IAAI,QAAQ,eAAe,KAAK;AAAA,EACvC;AAAA,EAEA,OAAO,OAAuB;AAC5B,WAAO,aAAa,OAAO,KAAK,QAAQ;AAAA,EAC1C;AAAA,EAEA,WAAW,OAA+B;AACxC,UAAM,OAAO,KAAK,GAAG,KAAK;AAC1B,QAAI,CAAE;AAAM,aAAO,KAAK;AAExB,QAAI,KAAK,WAAW,GAAG,GAAG;AACxB,YAAM,WAAW,KAAK,UAAU,CAAC;AACjC,aAAO,CAAE,eAAe,QAAQ,GAAG,sBAAsB,mBAAmB;AAC5E,aAAO,oBAAoB,KAAK,UAAU,QAAQ;AAAA,IACpD;AAEA,QAAI,eAAe,IAAI;AAAG,aAAO;AAEjC,WAAO,oBAAoB,2BAA2B,GAAG,IAAI;AAAA,EAC/D;AAAA,EAIA,MAAM,UAAsC,OAA+B;AACzE,QAAI,OAAO,UAAU,UAAU;AAC7B,aAAO,MAAM,QAAQ,KAAK,QAAQ,OAAO,GAAG,KAAK,CAAC;AAAA,IACpD,WAAW,OAAO;AAChB,aAAO,MAAM,QAAQ,KAAK;AAAA,IAC5B,OAAO;AACL,aAAO,MAAM,QAAQ,KAAK,QAAQ,CAAC;AAAA,IACrC;AAAA,EACF;AAAA,EAEA,KAAK,SAAiB,MAAwD;AAC5E,UAAM,EAAE,QAAQ,SAAS,EAAE,cAAc,QAAQ,EAAE,IAAI,aAAa,MAAM,CAAC,CAAC;AAE5E,UAAM,UAAU,QAAQ,QAAQ,EAAE,KAAK,YAAY;AACjD,YAAM,UAAU,KAAK,MAAM,aAAa,GAAG;AAC3C,uBAAiB,QAAQ,KAAK,QAAQ,WAAW,CAAE,MAAM,GAAG,MAAO,GAAG,OAAO,GAAG;AAC9E,gBAAQ,UAAU,IAAI;AAAA,MACxB;AACA,aAAO,QAAQ,MAAM;AAAA,IACvB,CAAC;AAED,WAAO,KAAK,KAAK,OAAO;AAAA,EAC1B;AAAA,EAEA,KAAK,OAAsD;AACzD,WAAO,IAAI,SAAS,OAAO,IAAI;AAAA,EACjC;AAAA,EAEA,KAAK,MAA0C;AAC7C,UAAM,IAAI,MAAM,wBAAwB,OAAO;AAAA,EACjD;AACF;",
5
5
  "names": []
6
6
  }
@@ -60,7 +60,7 @@ __export(asyncfs_exports, {
60
60
  });
61
61
  module.exports = __toCommonJS(asyncfs_exports);
62
62
  var import_node_fs = require("node:fs");
63
- var import_promises = __toESM(require("node:fs/promises"), 1);
63
+ var import_promises = __toESM(require("node:fs/promises"));
64
64
  var import_node_fs2 = require("node:fs");
65
65
  var fs = Object.entries(import_promises.default).reduce((fs2, [key, val]) => {
66
66
  if (typeof val === "function") {
@@ -29,7 +29,7 @@ __export(match_exports, {
29
29
  match: () => match
30
30
  });
31
31
  module.exports = __toCommonJS(match_exports);
32
- var import_picomatch = __toESM(require("picomatch"), 1);
32
+ var import_picomatch = __toESM(require("picomatch"));
33
33
  function match(globs, options = {}) {
34
34
  return (0, import_picomatch.default)([...globs], {
35
35
  basename: false,
package/extra/cli.mjs CHANGED
@@ -4,8 +4,8 @@ import _childProcess from "node:child_process";
4
4
  import _fs from "node:fs";
5
5
  import _path from "node:path";
6
6
  import _url from "node:url";
7
- async function main() {
8
- const { buildFile, tasks, listOnly } = parseCommandLine();
7
+ async function main(options2) {
8
+ const { buildFile, tasks, listOnly } = options2;
9
9
  if (tasks.length === 0)
10
10
  tasks.push("default");
11
11
  let build = await import(buildFile);
@@ -46,8 +46,9 @@ if (process.env.DEBUG_CLI === "true") {
46
46
  console.log(" Arguments =", process.argv.join(" "));
47
47
  console.log(" PID =", process.pid);
48
48
  }
49
+ const options = parseCommandLine();
49
50
  if (sourceMapsEnabled && typeScriptEnabled) {
50
- main().then(() => process.exit(0)).catch((error) => {
51
+ main(options).then(() => process.exit(0)).catch((error) => {
51
52
  if (!isBuildFailure(error))
52
53
  console.log(error);
53
54
  process.exit(1);
@@ -63,9 +64,11 @@ if (sourceMapsEnabled && typeScriptEnabled) {
63
64
  const loader = _path.resolve(directory, `ts-loader${extension}`);
64
65
  execArgv.push(`--experimental-loader=${loader}`, "--no-warnings");
65
66
  }
67
+ const env = options.forceEsm ? { __TS_LOADER_FORCE_ESM: process.cwd(), ...process.env } : process.env;
66
68
  const child = _childProcess.fork(script, [...process.argv.slice(2)], {
67
69
  stdio: ["inherit", "inherit", "inherit", "ipc"],
68
- execArgv
70
+ execArgv,
71
+ env
69
72
  });
70
73
  child.on("error", (error) => {
71
74
  console.log("Error respawning CLI", error);
@@ -94,26 +97,28 @@ function isBuildFailure(arg) {
94
97
  function parseCommandLine() {
95
98
  const parsed = _yargs(process.argv.slice(2), {
96
99
  configuration: {
97
- "camel-case-expansion": true,
100
+ "camel-case-expansion": false,
98
101
  "strip-aliased": true,
99
102
  "strip-dashed": true
100
103
  },
101
104
  alias: {
102
- verbose: ["v"],
103
- quiet: ["q"],
104
- colors: ["c"],
105
- file: ["f"],
106
- list: ["l"],
107
- help: ["h"]
105
+ "force-esm": ["e"],
106
+ "verbose": ["v"],
107
+ "quiet": ["q"],
108
+ "colors": ["c"],
109
+ "file": ["f"],
110
+ "list": ["l"],
111
+ "help": ["h"]
108
112
  },
109
113
  string: ["file"],
110
- boolean: ["help", "colors", "list"],
114
+ boolean: ["help", "colors", "list", "force-esm"],
111
115
  count: ["verbose", "quiet"]
112
116
  });
113
117
  const tasks = [];
114
118
  let verbosity = 0;
115
119
  let colors = void 0;
116
120
  let file = void 0;
121
+ let forceEsm = false;
117
122
  let listOnly = false;
118
123
  let help = false;
119
124
  for (const key in parsed) {
@@ -130,6 +135,9 @@ function parseCommandLine() {
130
135
  case "file":
131
136
  file = parsed[key];
132
137
  break;
138
+ case "force-esm":
139
+ forceEsm = !!parsed[key];
140
+ break;
133
141
  case "colors":
134
142
  colors = !!parsed[key];
135
143
  break;
@@ -150,12 +158,13 @@ function parseCommandLine() {
150
158
  plugjs [--options] [... tasks]
151
159
 
152
160
  Options:
153
- -v --verbose Increase logging verbosity
154
- -q --quiet Decrease logging verbosity
155
- -c --colors Force colorful output (use "--no-colors" to force plain text)
156
- -f --file Specify the build file to use (default "./build.[ts/js/...]")
157
- -l --list Only list the tasks defined by the build, nothing more!
158
- -h --help Help! You're reading it now!
161
+ -v --verbose Increase logging verbosity
162
+ -q --quiet Decrease logging verbosity
163
+ -c --colors Force colorful output (use "--no-colors" to force plain text)
164
+ -e --force-esm Force our TypeScript loader to interpret ".ts" files as ESM
165
+ -f --file Specify the build file to use (default "./build.[ts/js/...]")
166
+ -l --list Only list the tasks defined by the build, nothing more!
167
+ -h --help Help! You're reading it now!
159
168
 
160
169
  Tasks:
161
170
  Any other argument will be treated as a task name. If no task names are
@@ -197,7 +206,7 @@ function parseCommandLine() {
197
206
  console.log(`Unable to find build file "./build.[${exts.join("|")}]`);
198
207
  process.exit(1);
199
208
  }
200
- return { buildFile, tasks, listOnly };
209
+ return { buildFile, tasks, forceEsm, listOnly };
201
210
  }
202
211
  function isFile(path) {
203
212
  try {
@@ -211,4 +220,4 @@ export {
211
220
  isBuildFailure,
212
221
  parseCommandLine
213
222
  };
214
- //# sourceMappingURL=data:application/json;base64,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
223
+ //# sourceMappingURL=data:application/json;base64,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
@@ -6,12 +6,12 @@ import _url from "node:url";
6
6
  const CJS = "commonjs";
7
7
  const ESM = "module";
8
8
  const _debug = process.env.DEBUG_TS_LOADER === "true";
9
- function _log(type, ...args) {
9
+ function _log(type, arg, ...args) {
10
10
  if (!_debug)
11
11
  return;
12
12
  const t = type === "module" ? "esm" : type === "commonjs" ? "cjs" : "---";
13
13
  const prefix = `[ts-loader|${t}|pid=${process.pid}]`;
14
- console.log(prefix, ...args);
14
+ console.log(prefix, arg, ...args);
15
15
  }
16
16
  function _throw(type, message, options = {}) {
17
17
  const t = type === "module" ? "esm" : type === "commonjs" ? "cjs" : "---";
@@ -23,6 +23,13 @@ function _throw(type, message, options = {}) {
23
23
  throw error;
24
24
  }
25
25
  const _moduleFormatCache = /* @__PURE__ */ new Map();
26
+ if (process.env.__TS_LOADER_FORCE_ESM) {
27
+ const dir = process.env.__TS_LOADER_FORCE_ESM;
28
+ _log(null, `Forcing ".ts" files from "${dir}" to be interpreted as ESM modules`);
29
+ _moduleFormatCache.set(dir, "module");
30
+ }
31
+ if (_debug)
32
+ process.on("exit", () => _log(null, "Format cache", _moduleFormatCache));
26
33
  function _moduleFormat(directory) {
27
34
  const type = _moduleFormatCache.get(directory);
28
35
  if (type)
@@ -211,4 +218,4 @@ export {
211
218
  load,
212
219
  resolve
213
220
  };
214
- //# sourceMappingURL=data:application/json;base64,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
221
+ //# sourceMappingURL=data:application/json;base64,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
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@plugjs/plug",
3
- "version": "0.0.2",
4
- "type": "module",
3
+ "version": "0.0.5",
4
+ "type": "commonjs",
5
5
  "main": "./dist/index.cjs",
6
6
  "module": "./dist/index.mjs",
7
7
  "types": "./types/index.d.ts",
@@ -22,7 +22,7 @@
22
22
  },
23
23
  "scripts": {
24
24
  "bootstrap": "./bootstrap.sh",
25
- "build": "node ./extra/cli.mjs",
25
+ "build": "node ./extra/cli.mjs --force-esm",
26
26
  "dev": "npx nodemon -e .ts -w ./test -w ./src -x ./runme.sh"
27
27
  },
28
28
  "author": "",
@@ -32,7 +32,7 @@
32
32
  "@babel/types": "^7.18.10",
33
33
  "@plugjs/cov8-html": "^0.0.1",
34
34
  "diff": "^5.1.0",
35
- "esbuild": "^0.15.4",
35
+ "esbuild": "^0.15.5",
36
36
  "eslint": "^8.22.0",
37
37
  "mocha": "^10.0.0",
38
38
  "picomatch": "^2.3.1",
package/src/files.ts CHANGED
@@ -1,17 +1,34 @@
1
1
  import { inspect } from 'node:util'
2
- import { AbsolutePath, assertRelativeChildPath, getAbsoluteParent, resolveAbsolutePath } from './paths.js'
2
+ import { assert } from './assert.js'
3
+ import { AbsolutePath, assertRelativeChildPath, getAbsoluteParent, isFile, resolveAbsolutePath } from './paths.js'
3
4
  import { mkdir, writeFile } from './utils/asyncfs.js'
4
5
 
5
6
  /** The {@link FilesBuilder} interface defines a builder for {@link Files}. */
6
7
  export interface FilesBuilder {
7
8
  /** The (resolved) directory the {@link Files} will be associated with */
8
9
  readonly directory: AbsolutePath
9
- /** Push files into the {@link Files} instance being built */
10
+
11
+ /**
12
+ * Push files into the {@link Files} instance being built **checking for
13
+ * their existance on disk**.
14
+ *
15
+ * This _will_ be slow, use {@link FilesBuilder.unchecked} when absolutely
16
+ * sure the file already exist.
17
+ */
10
18
  add(...files: string[]): this
19
+
20
+ /**
21
+ * Push files into the {@link Files} instance being built without checking
22
+ * they exist on disk _(use with care!)_.
23
+ */
24
+ unchecked(...files: string[]): this
25
+
11
26
  /** Merge orther {@link Files} instance to the {@link Files} being built */
12
27
  merge(...files: Files[]): this
28
+
13
29
  /** Write a file and add it to the {@link Files} instance being built */
14
30
  write(file: string, content: string | Buffer): Promise<AbsolutePath>
31
+
15
32
  /** Build and return a {@link Files} instance */
16
33
  build(): Files
17
34
  }
@@ -83,6 +100,21 @@ export class Files {
83
100
  add(...files: string[]): FilesBuilder {
84
101
  if (built) throw new Error('FileBuilder "build()" already called')
85
102
 
103
+ if (typeof files === 'string') files = [ files ]
104
+ for (const file of files) {
105
+ const relative = assertRelativeChildPath(instance.directory, file)
106
+ const resolved = resolveAbsolutePath(instance.directory, file)
107
+
108
+ assert(isFile(resolved), `File "${resolved}" does not exist`)
109
+ set.add(relative)
110
+ }
111
+
112
+ return this
113
+ },
114
+
115
+ unchecked(...files: string[]): FilesBuilder {
116
+ if (built) throw new Error('FileBuilder "build()" already called')
117
+
86
118
  if (typeof files === 'string') files = [ files ]
87
119
  for (const file of files) {
88
120
  const relative = assertRelativeChildPath(instance.directory, file)
@@ -97,7 +129,7 @@ export class Files {
97
129
 
98
130
  for (const files of args) {
99
131
  for (const file of files.absolutePaths()) {
100
- this.add(file)
132
+ this.unchecked(file)
101
133
  }
102
134
  }
103
135
 
@@ -111,7 +143,7 @@ export class Files {
111
143
 
112
144
  await mkdir(directory, { recursive: true })
113
145
  await writeFile(absolute, content)
114
- this.add(absolute)
146
+ this.unchecked(absolute)
115
147
 
116
148
  return absolute
117
149
  },
package/src/fork.ts CHANGED
@@ -128,7 +128,7 @@ export abstract class ForkingPlug implements Plug<Files | undefined> {
128
128
 
129
129
  child.on('error', (error) => {
130
130
  run.log.error('Child process error', error)
131
- return done ? reject(failure()) : void 0
131
+ return done || reject(failure())
132
132
  })
133
133
 
134
134
  child.on('message', (message: ForkResult) => {
@@ -139,21 +139,21 @@ export abstract class ForkingPlug implements Plug<Files | undefined> {
139
139
  child.on('exit', (code, signal) => {
140
140
  if (signal) {
141
141
  run.log.error(`Child process exited with signal ${signal}`, $gry(`(pid=${child.pid})`))
142
- return done ? reject(failure()) : void 0
142
+ return done || reject(failure())
143
143
  } else if (code !== 0) {
144
144
  run.log.error(`Child process exited with code ${code}`, $gry(`(pid=${child.pid})`))
145
- return done ? reject(failure()) : void 0
145
+ return done || reject(failure())
146
146
  } else if (! result) {
147
147
  run.log.error('Child process exited with no result', $gry(`(pid=${child.pid})`))
148
- return done ? reject(failure()) : void 0
148
+ return done || reject(failure())
149
149
  } else if (result.failed) {
150
150
  // definitely logged on the child side
151
- return done ? reject(failure()) : void 0
151
+ return done || reject(failure())
152
152
  }
153
153
 
154
154
  /* We definitely have a successful result! */
155
- return resolve(message.filesDir && message.filesList ?
156
- run.files(message.filesDir).add(...message.filesList).build() :
155
+ return done || resolve(message.filesDir && message.filesList ?
156
+ run.files(message.filesDir).unchecked(...message.filesList).build() :
157
157
  undefined)
158
158
  })
159
159
 
@@ -233,7 +233,7 @@ if ((process.argv[1] === requireFilename(__fileurl)) && (process.send)) {
233
233
 
234
234
  /* Create the Plug instance and our Files instance */
235
235
  const plug = new Ctor(...constructorArgs) as Plug<Files | undefined>
236
- const files = run.files(filesDir).add(...filesList).build()
236
+ const files = run.files(filesDir).unchecked(...filesList).build()
237
237
 
238
238
  /* Run and return the result */
239
239
  return plug.pipe(files, run)
package/src/helpers.ts CHANGED
@@ -27,7 +27,7 @@ export async function rmrf(directory: string): Promise<void> {
27
27
  return
28
28
  }
29
29
 
30
- log.info('Removing', $p(dir))
30
+ log.notice('Removing directory', $p(dir), 'recursively')
31
31
  await rm(dir, { recursive: true })
32
32
  }
33
33
 
@@ -46,8 +46,8 @@ export function setLogLevel(level: LogLevelString): void {
46
46
  * Resolve a path into an {@link AbsolutePath}.
47
47
  *
48
48
  * If the path starts with `@...` it is considered to be relative to the
49
- * {@link process.cwd | current working directory}, otherwise it will be
50
- * resolved against the build file where the task was originally defined in.
49
+ * _directory containing the build file where the task was defined_, otherwise
50
+ * it will be relative to the {@link process.cwd | current working directory}.
51
51
  */
52
52
  export function resolve(...paths: string[]): AbsolutePath {
53
53
  const run = currentRun()
@@ -60,7 +60,7 @@ export function resolve(...paths: string[]): AbsolutePath {
60
60
  * Create a new {@link Files} instance.
61
61
  */
62
62
  export function files(files: Files): FilesBuilder
63
- export function files(...paths: string[]): FilesBuilder
63
+ export function files(directory: string, ...paths: string[]): FilesBuilder
64
64
  export function files(first: Files | string | undefined, ...paths: string[]): FilesBuilder {
65
65
  const run = currentRun()
66
66
  assert(run, 'Unable to create files builder outside a running task')
@@ -114,32 +114,3 @@ export function pipe(files: Files | Promise<Files>): Pipe & Promise<Files> {
114
114
  assert(run, 'Unable to create pipes outside a running task')
115
115
  return run.pipe(files)
116
116
  }
117
-
118
- /** Await for the settlement of all the promises, then return their results. */
119
- export async function parallel<P extends readonly any[]>(promises: P): Promise<ParallelResult<P>> {
120
- const settlements = await Promise.allSettled(promises)
121
- const results: any[] = []
122
-
123
- let errors = 0
124
- for (const settlement of settlements) {
125
- if (settlement.status === 'fulfilled') {
126
- results.push(settlement.value)
127
- continue
128
- }
129
-
130
- log.error(settlement.reason)
131
- errors ++
132
- }
133
-
134
- assert(! errors, `Parallel execution failed for ${errors} tasks`)
135
- return results as ParallelResult<P>
136
- }
137
-
138
- type ParallelResult<T extends readonly any[]> =
139
- T extends readonly [ infer First, ...infer Rest ] ?
140
- [ Awaited<First>, ...ParallelResult<Rest> ] :
141
- T extends readonly [ infer Only ] ?
142
- [ Awaited<Only> ] :
143
- T extends readonly [] ?
144
- [] :
145
- never
package/src/paths.ts CHANGED
@@ -75,6 +75,7 @@ export function getCurrentWorkingDirectory(): AbsolutePath {
75
75
  return cwd
76
76
  }
77
77
 
78
+
78
79
  /* ========================================================================== *
79
80
  * MODULE RESOLUTION FUNCTIONS *
80
81
  * ========================================================================== */
package/src/plugs/copy.ts CHANGED
@@ -74,7 +74,7 @@ export class Copy implements Plug<Files> {
74
74
  }
75
75
 
76
76
  /* Record this file */
77
- builder.add(relative)
77
+ builder.unchecked(relative)
78
78
  }
79
79
 
80
80
  const result = builder.build()
@@ -1,5 +1,5 @@
1
1
  import { Files } from '../files.js'
2
- import { $gry, $p, $und, log } from '../log.js'
2
+ import { $gry, $p, $und } from '../log.js'
3
3
  import { install, Plug } from '../pipe.js'
4
4
  import { Run } from '../run.js'
5
5
 
@@ -8,14 +8,14 @@ export class Debug implements Plug<Files> {
8
8
  constructor() {}
9
9
 
10
10
  async pipe(files: Files, run: Run): Promise<Files> {
11
- log.notice('Debugging', files.length, 'files')
12
- log.notice('- base dir:', $p(run.resolve('@')))
13
- log.notice('- build file dir:', $p(run.resolve('.')))
14
- log.notice('- files dir:', $p(files.directory))
11
+ run.log.notice('Debugging', files.length, 'files')
12
+ run.log.notice('- base dir:', $p(run.resolve('@')))
13
+ run.log.notice('- build file dir:', $p(run.resolve('.')))
14
+ run.log.notice('- files dir:', $p(files.directory))
15
15
  if (files.length) {
16
16
  const [ path, ...paths ] = files
17
- log.notice('- relative paths:', $und($gry(path)))
18
- for (const p of paths) log.notice('- :', $und($gry(p)))
17
+ run.log.notice('- relative paths:', $und($gry(path)))
18
+ for (const p of paths) run.log.notice('- :', $und($gry(p)))
19
19
  }
20
20
  return files
21
21
  }
@@ -1,10 +1,12 @@
1
- import { build, BuildFailure, BuildOptions, BuildResult, Message, Metafile } from 'esbuild'
1
+ import { build, BuildFailure, BuildOptions, BuildResult, Format, Message, Metafile } from 'esbuild'
2
+ import { basename } from 'node:path'
2
3
  import { assert } from '../assert.js'
3
4
  import { Files, FilesBuilder } from '../files.js'
4
- import { $p, ERROR, ReportLevel, ReportRecord, WARN } from '../log.js'
5
- import { AbsolutePath, resolveAbsolutePath } from '../paths.js'
5
+ import { $p, ERROR, Logger, ReportLevel, ReportRecord, WARN } from '../log.js'
6
+ import { AbsolutePath, getAbsoluteParent, resolveAbsolutePath } from '../paths.js'
6
7
  import { install, Plug } from '../pipe.js'
7
8
  import { Run } from '../run.js'
9
+ import { readFile } from '../utils/asyncfs.js'
8
10
 
9
11
  export type ESBuildOptions = Omit<BuildOptions, 'absWorkingDir' | 'entryPoints' | 'watch'>
10
12
 
@@ -20,20 +22,23 @@ export class ESBuild implements Plug<Files> {
20
22
  const absWorkingDir = files.directory
21
23
 
22
24
  const options: BuildOptions = {
23
- /* Defaults */
25
+ /* Default our platform/target to NodeJS, current major version */
24
26
  platform: 'node',
25
- target: `node${process.versions['node']}`,
26
- format: 'cjs',
27
- outbase: absWorkingDir,
27
+ target: `node${process.versions['node'].split('.')[0]}`,
28
28
 
29
- logLevel: 'silent',
29
+ /* The default format (if not specified in options) is from package.json */
30
+ format: this._options.format || await _moduleFormat(files.directory, run.log),
31
+
32
+ /* Output bese directory */
33
+ outbase: absWorkingDir,
30
34
 
31
- /* Our options */
35
+ /* Merge in the caller's options */
32
36
  ...this._options,
33
37
 
34
38
  /* Always override */
35
39
  absWorkingDir,
36
40
  entryPoints,
41
+ logLevel: 'silent',
37
42
  watch: false,
38
43
  }
39
44
 
@@ -81,7 +86,7 @@ export class ESBuild implements Plug<Files> {
81
86
  assert(esbuild, 'ESBuild did not produce any result')
82
87
 
83
88
  for (const file in esbuild.metafile.outputs) {
84
- builder.add(resolveAbsolutePath(absWorkingDir, file))
89
+ builder.unchecked(resolveAbsolutePath(absWorkingDir, file))
85
90
  }
86
91
 
87
92
  const result = builder.build()
@@ -126,3 +131,57 @@ declare module '../pipe.js' {
126
131
  export * from './esbuild/bundle-locals.js'
127
132
  export * from './esbuild/check-dependencies.js'
128
133
  export * from './esbuild/fix-extensions.js'
134
+
135
+ /* ========================================================================== *
136
+ * DEFAULT MODULE FORMAT FROM PACKAGE.JSON *
137
+ * ========================================================================== */
138
+
139
+ /** Cache for directory to module format as discovered in "package.json" */
140
+ const _moduleFormatCache = new Map<AbsolutePath, Format>()
141
+
142
+ /**
143
+ * Figures out the _default_ module type for a directory, looking into the
144
+ * `package.json`'s `type` field (either `commonjs` or `module`)
145
+ */
146
+ async function _moduleFormat(directory: AbsolutePath, log: Logger): Promise<Format> {
147
+ /* Before doing anything else, check our cache */
148
+ const type = _moduleFormatCache.get(directory)
149
+ if (type) return type
150
+
151
+ /* Try to read the "package.json" file from this directory */
152
+ const file = resolveAbsolutePath(directory, 'package.json')
153
+
154
+ try {
155
+ const json = await readFile(file, 'utf-8')
156
+ const data = JSON.parse(json)
157
+
158
+ /* Be liberal in what you accept? Default to CommonJS if none found */
159
+ const type = data.type === 'module' ? 'esm' : 'cjs'
160
+ log.debug(`File "${file}" defines module type as "${data.type}" (${type})`)
161
+ _moduleFormatCache.set(directory, type)
162
+ return type
163
+ } catch (cause: any) {
164
+ /* We _accept_ a couple of errors, file not found, or file is directory */
165
+ if ((cause.code !== 'ENOENT') && (cause.code !== 'EISDIR')) throw cause
166
+ }
167
+
168
+ /*
169
+ * We couldn't find "package.json" in this directory, go up if we can!
170
+ *
171
+ * That said, if we are at a directory called "node_modules" we stop here,
172
+ * as we don't want to inherit the default type from an _importing_ package,
173
+ * into the _imported_ one...
174
+ */
175
+ const name = basename(directory)
176
+ const parent = getAbsoluteParent(directory)
177
+
178
+ if ((name === 'node_modules') || (parent === directory)) {
179
+ _moduleFormatCache.set(directory, 'cjs') // default
180
+ return 'cjs'
181
+ } else {
182
+ /* We also cache back, on the way up */
183
+ const type = await _moduleFormat(parent, log)
184
+ _moduleFormatCache.set(directory, type)
185
+ return type
186
+ }
187
+ }