@plugjs/plug 0.0.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 (264) hide show
  1. package/LICENSE.md +211 -0
  2. package/NOTICE.md +13 -0
  3. package/README.md +7 -0
  4. package/dist/assert.cjs +72 -0
  5. package/dist/assert.cjs.map +6 -0
  6. package/dist/assert.mjs +41 -0
  7. package/dist/assert.mjs.map +6 -0
  8. package/dist/async.cjs +58 -0
  9. package/dist/async.cjs.map +6 -0
  10. package/dist/async.mjs +30 -0
  11. package/dist/async.mjs.map +6 -0
  12. package/dist/build.cjs +136 -0
  13. package/dist/build.cjs.map +6 -0
  14. package/dist/build.mjs +110 -0
  15. package/dist/build.mjs.map +6 -0
  16. package/dist/files.cjs +113 -0
  17. package/dist/files.cjs.map +6 -0
  18. package/dist/files.mjs +88 -0
  19. package/dist/files.mjs.map +6 -0
  20. package/dist/fork.cjs +177 -0
  21. package/dist/fork.cjs.map +6 -0
  22. package/dist/fork.mjs +151 -0
  23. package/dist/fork.mjs.map +6 -0
  24. package/dist/helpers.cjs +129 -0
  25. package/dist/helpers.cjs.map +6 -0
  26. package/dist/helpers.mjs +97 -0
  27. package/dist/helpers.mjs.map +6 -0
  28. package/dist/index.cjs +25 -0
  29. package/dist/index.cjs.map +6 -0
  30. package/dist/index.mjs +7 -0
  31. package/dist/index.mjs.map +6 -0
  32. package/dist/log/colors.cjs +129 -0
  33. package/dist/log/colors.cjs.map +6 -0
  34. package/dist/log/colors.mjs +93 -0
  35. package/dist/log/colors.mjs.map +6 -0
  36. package/dist/log/emit.cjs +109 -0
  37. package/dist/log/emit.cjs.map +6 -0
  38. package/dist/log/emit.mjs +83 -0
  39. package/dist/log/emit.mjs.map +6 -0
  40. package/dist/log/levels.cjs +75 -0
  41. package/dist/log/levels.cjs.map +6 -0
  42. package/dist/log/levels.mjs +41 -0
  43. package/dist/log/levels.mjs.map +6 -0
  44. package/dist/log/logger.cjs +129 -0
  45. package/dist/log/logger.cjs.map +6 -0
  46. package/dist/log/logger.mjs +104 -0
  47. package/dist/log/logger.mjs.map +6 -0
  48. package/dist/log/options.cjs +149 -0
  49. package/dist/log/options.cjs.map +6 -0
  50. package/dist/log/options.mjs +124 -0
  51. package/dist/log/options.mjs.map +6 -0
  52. package/dist/log/report.cjs +284 -0
  53. package/dist/log/report.cjs.map +6 -0
  54. package/dist/log/report.mjs +259 -0
  55. package/dist/log/report.mjs.map +6 -0
  56. package/dist/log/spinner.cjs +83 -0
  57. package/dist/log/spinner.cjs.map +6 -0
  58. package/dist/log/spinner.mjs +57 -0
  59. package/dist/log/spinner.mjs.map +6 -0
  60. package/dist/log.cjs +71 -0
  61. package/dist/log.cjs.map +6 -0
  62. package/dist/log.mjs +45 -0
  63. package/dist/log.mjs.map +6 -0
  64. package/dist/paths.cjs +158 -0
  65. package/dist/paths.cjs.map +6 -0
  66. package/dist/paths.mjs +122 -0
  67. package/dist/paths.mjs.map +6 -0
  68. package/dist/pipe.cjs +71 -0
  69. package/dist/pipe.cjs.map +6 -0
  70. package/dist/pipe.mjs +44 -0
  71. package/dist/pipe.mjs.map +6 -0
  72. package/dist/plugs/copy.cjs +95 -0
  73. package/dist/plugs/copy.cjs.map +6 -0
  74. package/dist/plugs/copy.mjs +64 -0
  75. package/dist/plugs/copy.mjs.map +6 -0
  76. package/dist/plugs/coverage/analysis.cjs +229 -0
  77. package/dist/plugs/coverage/analysis.cjs.map +6 -0
  78. package/dist/plugs/coverage/analysis.mjs +202 -0
  79. package/dist/plugs/coverage/analysis.mjs.map +6 -0
  80. package/dist/plugs/coverage/report.cjs +215 -0
  81. package/dist/plugs/coverage/report.cjs.map +6 -0
  82. package/dist/plugs/coverage/report.mjs +200 -0
  83. package/dist/plugs/coverage/report.mjs.map +6 -0
  84. package/dist/plugs/coverage.cjs +142 -0
  85. package/dist/plugs/coverage.cjs.map +6 -0
  86. package/dist/plugs/coverage.mjs +117 -0
  87. package/dist/plugs/coverage.mjs.map +6 -0
  88. package/dist/plugs/debug.cjs +50 -0
  89. package/dist/plugs/debug.cjs.map +6 -0
  90. package/dist/plugs/debug.mjs +25 -0
  91. package/dist/plugs/debug.mjs.map +6 -0
  92. package/dist/plugs/esbuild/bundle-locals.cjs +51 -0
  93. package/dist/plugs/esbuild/bundle-locals.cjs.map +6 -0
  94. package/dist/plugs/esbuild/bundle-locals.mjs +26 -0
  95. package/dist/plugs/esbuild/bundle-locals.mjs.map +6 -0
  96. package/dist/plugs/esbuild/check-dependencies.cjs +140 -0
  97. package/dist/plugs/esbuild/check-dependencies.cjs.map +6 -0
  98. package/dist/plugs/esbuild/check-dependencies.mjs +115 -0
  99. package/dist/plugs/esbuild/check-dependencies.mjs.map +6 -0
  100. package/dist/plugs/esbuild/fix-extensions.cjs +91 -0
  101. package/dist/plugs/esbuild/fix-extensions.cjs.map +6 -0
  102. package/dist/plugs/esbuild/fix-extensions.mjs +60 -0
  103. package/dist/plugs/esbuild/fix-extensions.mjs.map +6 -0
  104. package/dist/plugs/esbuild.cjs +109 -0
  105. package/dist/plugs/esbuild.cjs.map +6 -0
  106. package/dist/plugs/esbuild.mjs +83 -0
  107. package/dist/plugs/esbuild.mjs.map +6 -0
  108. package/dist/plugs/eslint/runner.cjs +91 -0
  109. package/dist/plugs/eslint/runner.cjs.map +6 -0
  110. package/dist/plugs/eslint/runner.mjs +68 -0
  111. package/dist/plugs/eslint/runner.mjs.map +6 -0
  112. package/dist/plugs/exec.cjs +128 -0
  113. package/dist/plugs/exec.cjs.map +6 -0
  114. package/dist/plugs/exec.mjs +96 -0
  115. package/dist/plugs/exec.mjs.map +6 -0
  116. package/dist/plugs/filter.cjs +59 -0
  117. package/dist/plugs/filter.cjs.map +6 -0
  118. package/dist/plugs/filter.mjs +34 -0
  119. package/dist/plugs/filter.mjs.map +6 -0
  120. package/dist/plugs/mocha/reporter.cjs +140 -0
  121. package/dist/plugs/mocha/reporter.cjs.map +6 -0
  122. package/dist/plugs/mocha/reporter.mjs +107 -0
  123. package/dist/plugs/mocha/reporter.mjs.map +6 -0
  124. package/dist/plugs/mocha/runner.cjs +73 -0
  125. package/dist/plugs/mocha/runner.cjs.map +6 -0
  126. package/dist/plugs/mocha/runner.mjs +44 -0
  127. package/dist/plugs/mocha/runner.mjs.map +6 -0
  128. package/dist/plugs/tsc/compiler.cjs +74 -0
  129. package/dist/plugs/tsc/compiler.cjs.map +6 -0
  130. package/dist/plugs/tsc/compiler.mjs +43 -0
  131. package/dist/plugs/tsc/compiler.mjs.map +6 -0
  132. package/dist/plugs/tsc/options.cjs +82 -0
  133. package/dist/plugs/tsc/options.cjs.map +6 -0
  134. package/dist/plugs/tsc/options.mjs +51 -0
  135. package/dist/plugs/tsc/options.mjs.map +6 -0
  136. package/dist/plugs/tsc/report.cjs +90 -0
  137. package/dist/plugs/tsc/report.cjs.map +6 -0
  138. package/dist/plugs/tsc/report.mjs +59 -0
  139. package/dist/plugs/tsc/report.mjs.map +6 -0
  140. package/dist/plugs/tsc/runner.cjs +101 -0
  141. package/dist/plugs/tsc/runner.cjs.map +6 -0
  142. package/dist/plugs/tsc/runner.mjs +72 -0
  143. package/dist/plugs/tsc/runner.mjs.map +6 -0
  144. package/dist/plugs.cjs +31 -0
  145. package/dist/plugs.cjs.map +6 -0
  146. package/dist/plugs.mjs +13 -0
  147. package/dist/plugs.mjs.map +6 -0
  148. package/dist/run.cjs +95 -0
  149. package/dist/run.cjs.map +6 -0
  150. package/dist/run.mjs +70 -0
  151. package/dist/run.mjs.map +6 -0
  152. package/dist/task.cjs +39 -0
  153. package/dist/task.cjs.map +6 -0
  154. package/dist/task.mjs +14 -0
  155. package/dist/task.mjs.map +6 -0
  156. package/dist/utils/asyncfs.cjs +143 -0
  157. package/dist/utils/asyncfs.cjs.map +6 -0
  158. package/dist/utils/asyncfs.mjs +83 -0
  159. package/dist/utils/asyncfs.mjs.map +6 -0
  160. package/dist/utils/caller.cjs +59 -0
  161. package/dist/utils/caller.cjs.map +6 -0
  162. package/dist/utils/caller.mjs +34 -0
  163. package/dist/utils/caller.mjs.map +6 -0
  164. package/dist/utils/match.cjs +69 -0
  165. package/dist/utils/match.cjs.map +6 -0
  166. package/dist/utils/match.mjs +38 -0
  167. package/dist/utils/match.mjs.map +6 -0
  168. package/dist/utils/options.cjs +41 -0
  169. package/dist/utils/options.cjs.map +6 -0
  170. package/dist/utils/options.mjs +16 -0
  171. package/dist/utils/options.mjs.map +6 -0
  172. package/dist/utils/walk.cjs +104 -0
  173. package/dist/utils/walk.cjs.map +6 -0
  174. package/dist/utils/walk.mjs +79 -0
  175. package/dist/utils/walk.mjs.map +6 -0
  176. package/extra/cli.mjs +212 -0
  177. package/extra/ts-loader.mjs +214 -0
  178. package/extra/webassembly.d.ts +11 -0
  179. package/package.json +57 -0
  180. package/src/assert.ts +47 -0
  181. package/src/async.ts +50 -0
  182. package/src/files.ts +129 -0
  183. package/src/fork.ts +263 -0
  184. package/src/helpers.ts +145 -0
  185. package/src/index.ts +20 -0
  186. package/src/log/colors.ts +119 -0
  187. package/src/log/emit.ts +125 -0
  188. package/src/log/levels.ts +65 -0
  189. package/src/log/logger.ts +171 -0
  190. package/src/log/options.ts +199 -0
  191. package/src/log/report.ts +433 -0
  192. package/src/log/spinner.ts +70 -0
  193. package/src/log.ts +68 -0
  194. package/src/paths.ts +213 -0
  195. package/src/pipe.ts +231 -0
  196. package/src/plugs/copy.ts +113 -0
  197. package/src/plugs/coverage/analysis.ts +395 -0
  198. package/src/plugs/coverage/report.ts +337 -0
  199. package/src/plugs/coverage.ts +194 -0
  200. package/src/plugs/debug.ts +35 -0
  201. package/src/plugs/esbuild/bundle-locals.ts +33 -0
  202. package/src/plugs/esbuild/check-dependencies.ts +158 -0
  203. package/src/plugs/esbuild/fix-extensions.ts +108 -0
  204. package/src/plugs/esbuild.ts +128 -0
  205. package/src/plugs/eslint/runner.ts +112 -0
  206. package/src/plugs/exec.ts +215 -0
  207. package/src/plugs/filter.ts +56 -0
  208. package/src/plugs/mocha/reporter.ts +152 -0
  209. package/src/plugs/mocha/runner.ts +77 -0
  210. package/src/plugs/tsc/compiler.ts +66 -0
  211. package/src/plugs/tsc/options.ts +97 -0
  212. package/src/plugs/tsc/report.ts +74 -0
  213. package/src/plugs/tsc/runner.ts +100 -0
  214. package/src/plugs.ts +33 -0
  215. package/src/run.ts +160 -0
  216. package/src/task.ts +26 -0
  217. package/src/utils/asyncfs.ts +82 -0
  218. package/src/utils/caller.ts +45 -0
  219. package/src/utils/match.ts +286 -0
  220. package/src/utils/options.ts +22 -0
  221. package/src/utils/walk.ts +136 -0
  222. package/types/assert.d.ts +18 -0
  223. package/types/async.d.ts +20 -0
  224. package/types/build.d.ts +56 -0
  225. package/types/files.d.ts +44 -0
  226. package/types/fork.d.ts +57 -0
  227. package/types/helpers.d.ts +49 -0
  228. package/types/index.d.ts +14 -0
  229. package/types/log/colors.d.ts +25 -0
  230. package/types/log/emit.d.ts +14 -0
  231. package/types/log/levels.d.ts +52 -0
  232. package/types/log/logger.d.ts +31 -0
  233. package/types/log/options.d.ts +40 -0
  234. package/types/log/report.d.ts +64 -0
  235. package/types/log/spinner.d.ts +2 -0
  236. package/types/log.d.ts +10 -0
  237. package/types/paths.d.ts +76 -0
  238. package/types/pipe.d.ts +152 -0
  239. package/types/plugs/copy.d.ts +27 -0
  240. package/types/plugs/coverage/analysis.d.ts +104 -0
  241. package/types/plugs/coverage/report.d.ts +53 -0
  242. package/types/plugs/coverage.d.ts +46 -0
  243. package/types/plugs/debug.d.ts +14 -0
  244. package/types/plugs/esbuild/bundle-locals.d.ts +6 -0
  245. package/types/plugs/esbuild/check-dependencies.d.ts +12 -0
  246. package/types/plugs/esbuild/fix-extensions.d.ts +29 -0
  247. package/types/plugs/esbuild.d.ts +24 -0
  248. package/types/plugs/eslint/runner.d.ts +22 -0
  249. package/types/plugs/exec.d.ts +90 -0
  250. package/types/plugs/filter.d.ts +23 -0
  251. package/types/plugs/mocha/reporter.d.ts +8 -0
  252. package/types/plugs/mocha/runner.d.ts +34 -0
  253. package/types/plugs/tsc/compiler.d.ts +24 -0
  254. package/types/plugs/tsc/options.d.ts +8 -0
  255. package/types/plugs/tsc/report.d.ts +5 -0
  256. package/types/plugs/tsc/runner.d.ts +13 -0
  257. package/types/plugs.d.ts +16 -0
  258. package/types/run.d.ts +89 -0
  259. package/types/task.d.ts +15 -0
  260. package/types/utils/asyncfs.d.ts +37 -0
  261. package/types/utils/caller.d.ts +7 -0
  262. package/types/utils/match.d.ts +216 -0
  263. package/types/utils/options.d.ts +15 -0
  264. package/types/utils/walk.d.ts +28 -0
@@ -0,0 +1,79 @@
1
+ // utils/walk.ts
2
+ import { basename, join } from "node:path";
3
+ import { $p, log } from "../log.mjs";
4
+ import { resolveAbsolutePath } from "../paths.mjs";
5
+ import { readdir, stat } from "./asyncfs.mjs";
6
+ import { match } from "./match.mjs";
7
+ function walk(directory, globs, options = {}) {
8
+ const {
9
+ maxDepth = Infinity,
10
+ followSymlinks = true,
11
+ allowNodeModules = false,
12
+ ...opts
13
+ } = options;
14
+ const onDirectory = (dir) => {
15
+ if (dir === directory)
16
+ return true;
17
+ const name = basename(dir);
18
+ if (name === "node_modules")
19
+ return !!allowNodeModules;
20
+ if (name.startsWith("."))
21
+ return !!opts.dot;
22
+ return true;
23
+ };
24
+ const positiveMatcher = match(globs, opts);
25
+ log.debug("Walking directory", $p(directory), { globs, options });
26
+ return walker({
27
+ directory,
28
+ relative: "",
29
+ matcher: positiveMatcher,
30
+ onDirectory,
31
+ followSymlinks,
32
+ maxDepth,
33
+ depth: 0
34
+ });
35
+ }
36
+ async function* walker(args) {
37
+ const {
38
+ directory,
39
+ relative,
40
+ matcher: positiveMatcher,
41
+ onDirectory,
42
+ followSymlinks,
43
+ maxDepth,
44
+ depth
45
+ } = args;
46
+ const dir = resolveAbsolutePath(directory, relative);
47
+ if (!onDirectory(dir))
48
+ return;
49
+ log.trace("Reading directory", $p(dir));
50
+ const dirents = await readdir(dir, { withFileTypes: true }).catch((error) => {
51
+ if (error.code !== "ENOENT")
52
+ throw error;
53
+ log.warn("Directory", $p(dir), "not found");
54
+ return [];
55
+ });
56
+ for (const dirent of dirents) {
57
+ const path = join(relative, dirent.name);
58
+ if (dirent.isFile() && positiveMatcher(path))
59
+ yield path;
60
+ else if (dirent.isDirectory() && depth < maxDepth) {
61
+ const children = walker({ ...args, relative: path, depth: depth + 1 });
62
+ for await (const child of children)
63
+ yield child;
64
+ } else if (dirent.isSymbolicLink() && followSymlinks) {
65
+ const info = await stat(join(directory, path));
66
+ if (info.isFile() && positiveMatcher(path))
67
+ yield path;
68
+ else if (info.isDirectory() && depth < maxDepth) {
69
+ const children = walker({ ...args, relative: path, depth: depth + 1 });
70
+ for await (const child of children)
71
+ yield child;
72
+ }
73
+ }
74
+ }
75
+ }
76
+ export {
77
+ walk
78
+ };
79
+ //# sourceMappingURL=walk.mjs.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/utils/walk.ts"],
4
+ "mappings": ";AAAA,SAAS,UAAU,YAAY;AAC/B,SAAS,IAAI,WAAW;AACxB,SAAuB,2BAA2B;AAClD,SAAS,SAAS,YAAY;AAC9B,SAAS,aAA2B;AA8B7B,SAAS,KACZ,WACA,OACA,UAAuB,CAAC,GACU;AACpC,QAAM;AAAA,IACJ,WAAW;AAAA,IACX,iBAAiB;AAAA,IACjB,mBAAmB;AAAA,OAChB;AAAA,EACL,IAAI;AAGJ,QAAM,cAAc,CAAC,QAA+B;AAGlD,QAAI,QAAQ;AAAW,aAAO;AAC9B,UAAM,OAAO,SAAS,GAAG;AACzB,QAAI,SAAS;AAAgB,aAAO,CAAC,CAAC;AACtC,QAAI,KAAK,WAAW,GAAG;AAAG,aAAO,CAAC,CAAC,KAAK;AACxC,WAAO;AAAA,EACT;AAGA,QAAM,kBAAkB,MAAM,OAAO,IAAI;AAGzC,MAAI,MAAM,qBAAqB,GAAG,SAAS,GAAG,EAAE,OAAO,QAAQ,CAAC;AAChE,SAAO,OAAO;AAAA,IACZ;AAAA,IACA,UAAU;AAAA,IACV,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO;AAAA,EACT,CAAC;AACH;AAiBA,gBAAgB,OAAO,MAA2D;AAChF,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AAGJ,QAAM,MAAM,oBAAoB,WAAW,QAAQ;AACnD,MAAI,CAAE,YAAY,GAAG;AAAG;AACxB,MAAI,MAAM,qBAAqB,GAAG,GAAG,CAAC;AACtC,QAAM,UAAU,MAAM,QAAQ,KAAK,EAAE,eAAe,KAAK,CAAC,EAAE,MAAM,CAAC,UAAU;AAC3E,QAAI,MAAM,SAAS;AAAU,YAAM;AACnC,QAAI,KAAK,aAAa,GAAG,GAAG,GAAG,WAAW;AAC1C,WAAO,CAAC;AAAA,EACV,CAAC;AAGD,aAAW,UAAU,SAAS;AAC5B,UAAM,OAAO,KAAK,UAAU,OAAO,IAAI;AAGvC,QAAI,OAAO,OAAO,KAAK,gBAAgB,IAAI;AAAG,YAAM;AAAA,aAG3C,OAAO,YAAY,KAAM,QAAQ,UAAW;AACnD,YAAM,WAAW,OAAO,EAAE,GAAG,MAAM,UAAU,MAAM,OAAO,QAAQ,EAAE,CAAC;AACrE,uBAAiB,SAAS;AAAU,cAAM;AAAA,IAG5C,WAAW,OAAO,eAAe,KAAK,gBAAgB;AACpD,YAAM,OAAO,MAAM,KAAK,KAAK,WAAW,IAAI,CAAC;AAG7C,UAAI,KAAK,OAAO,KAAK,gBAAgB,IAAI;AAAG,cAAM;AAAA,eAGzC,KAAK,YAAY,KAAM,QAAQ,UAAW;AACjD,cAAM,WAAW,OAAO,EAAE,GAAG,MAAM,UAAU,MAAM,OAAO,QAAQ,EAAE,CAAC;AACrE,yBAAiB,SAAS;AAAU,gBAAM;AAAA,MAC5C;AAAA,IACF;AAAA,EACF;AACF;",
5
+ "names": []
6
+ }
package/extra/cli.mjs ADDED
@@ -0,0 +1,212 @@
1
+ #!/usr/bin/env node
2
+ import _yargs from "yargs-parser";
3
+ import _childProcess from "node:child_process";
4
+ import _fs from "node:fs";
5
+ import _path from "node:path";
6
+ import _url from "node:url";
7
+ async function main() {
8
+ const { buildFile, tasks, listOnly } = parseCommandLine();
9
+ if (tasks.length === 0)
10
+ tasks.push("default");
11
+ const build = (await import(buildFile)).default;
12
+ if (!isBuild(build)) {
13
+ console.log("Build file did not export a proper build");
14
+ console.log();
15
+ console.log('- If using CommonJS export your build as "module.exports"');
16
+ console.log(" e.g.: module.exports = build({ ... })");
17
+ console.log();
18
+ console.log('- If using ESM modules export your build as "default"');
19
+ console.log(" e.g.: export default build({ ... })");
20
+ console.log();
21
+ process.exit(1);
22
+ }
23
+ for (const task of tasks) {
24
+ if (task in build)
25
+ continue;
26
+ console.log(`Build file does not contain task "${task}"`);
27
+ process.exit(1);
28
+ }
29
+ if (listOnly) {
30
+ console.log("Build file tasks\n- " + Object.keys(build).sort().join("\n- "));
31
+ } else {
32
+ let run;
33
+ for (const task of tasks) {
34
+ run = await build[task](run);
35
+ }
36
+ }
37
+ }
38
+ const sourceMapsEnabled = process.execArgv.indexOf("--enable-source-maps") >= 0;
39
+ const tsLoaderMarker = Symbol.for("plugjs:tsLoader");
40
+ const typeScriptEnabled = globalThis[tsLoaderMarker] === tsLoaderMarker;
41
+ if (process.env.DEBUG_CLI === "true") {
42
+ console.log("SourceMaps enabled =", sourceMapsEnabled);
43
+ console.log("TypeScript enabled =", typeScriptEnabled);
44
+ console.log(" Arguments =", process.argv.join(" "));
45
+ console.log(" PID =", process.pid);
46
+ }
47
+ if (sourceMapsEnabled && typeScriptEnabled) {
48
+ main().then(() => process.exit(0)).catch((error) => {
49
+ if (!isBuildFailure(error))
50
+ console.log(error);
51
+ process.exit(1);
52
+ });
53
+ } else {
54
+ const script = _url.fileURLToPath(import.meta.url);
55
+ const execArgv = [...process.execArgv];
56
+ if (!sourceMapsEnabled)
57
+ execArgv.push("--enable-source-maps");
58
+ if (!typeScriptEnabled) {
59
+ const directory = _path.dirname(script);
60
+ const extension = _path.extname(script);
61
+ const loader = _path.resolve(directory, `ts-loader${extension}`);
62
+ execArgv.push(`--experimental-loader=${loader}`, "--no-warnings");
63
+ }
64
+ const child = _childProcess.fork(script, [...process.argv.slice(2)], {
65
+ stdio: ["inherit", "inherit", "inherit", "ipc"],
66
+ execArgv
67
+ });
68
+ child.on("error", (error) => {
69
+ console.log("Error respawning CLI", error);
70
+ process.exit(1);
71
+ });
72
+ child.on("exit", (code, signal) => {
73
+ if (signal) {
74
+ console.log(`CLI process exited with signal ${signal}`);
75
+ process.exit(1);
76
+ } else if (typeof code !== "number") {
77
+ console.log("CLI process failed for an unknown reason");
78
+ process.exit(1);
79
+ } else {
80
+ process.exit(code);
81
+ }
82
+ });
83
+ }
84
+ const buildMarker = Symbol.for("plugjs:isBuild");
85
+ const buildFailure = Symbol.for("plugjs:buildFailure");
86
+ function isBuild(build) {
87
+ return build && build[buildMarker] === buildMarker;
88
+ }
89
+ function isBuildFailure(arg) {
90
+ return arg && arg[buildFailure] === buildFailure;
91
+ }
92
+ function parseCommandLine() {
93
+ const parsed = _yargs(process.argv.slice(2), {
94
+ configuration: {
95
+ "camel-case-expansion": true,
96
+ "strip-aliased": true,
97
+ "strip-dashed": true
98
+ },
99
+ alias: {
100
+ verbose: ["v"],
101
+ quiet: ["q"],
102
+ colors: ["c"],
103
+ file: ["f"],
104
+ list: ["l"],
105
+ help: ["h"]
106
+ },
107
+ string: ["file"],
108
+ boolean: ["help", "colors", "list"],
109
+ count: ["verbose", "quiet"]
110
+ });
111
+ const tasks = [];
112
+ let verbosity = 0;
113
+ let colors = void 0;
114
+ let file = void 0;
115
+ let listOnly = false;
116
+ let help = false;
117
+ for (const key in parsed) {
118
+ switch (key) {
119
+ case "_":
120
+ tasks.push(...parsed[key].map((s) => `${s}`));
121
+ break;
122
+ case "verbose":
123
+ verbosity = verbosity + parsed[key];
124
+ break;
125
+ case "quiet":
126
+ verbosity = verbosity - parsed[key];
127
+ break;
128
+ case "file":
129
+ file = parsed[key];
130
+ break;
131
+ case "colors":
132
+ colors = !!parsed[key];
133
+ break;
134
+ case "list":
135
+ listOnly = !!parsed[key];
136
+ break;
137
+ case "help":
138
+ help = !!parsed[key];
139
+ break;
140
+ default:
141
+ console.log(`Unsupported option "${key}" (try "--help")`);
142
+ process.exit(1);
143
+ }
144
+ }
145
+ if (help) {
146
+ console.log(`Usage:
147
+
148
+ plugjs [--options] [... tasks]
149
+
150
+ Options:
151
+ -v --verbose Increase logging verbosity
152
+ -q --quiet Decrease logging verbosity
153
+ -c --colors Force colorful output (use "--no-colors" to force plain text)
154
+ -f --file Specify the build file to use (default "./build.[ts/js/...]")
155
+ -l --list Only list the tasks defined by the build, nothing more!
156
+ -h --help Help! You're reading it now!
157
+
158
+ Tasks:
159
+ Any other argument will be treated as a task name. If no task names are
160
+ specified, the "default" task will be executed.
161
+ `);
162
+ process.exit(1);
163
+ }
164
+ if (colors !== void 0)
165
+ process.env.LOG_COLORS = `${colors}`;
166
+ if (verbosity) {
167
+ const levels = ["TRACE", "DEBUG", "INFO", "NOTICE", "WARN", "ERROR", "OFF"];
168
+ let level = levels.indexOf("NOTICE") - verbosity;
169
+ if (level >= levels.length)
170
+ level = levels.length - 1;
171
+ else if (level < 0)
172
+ level = 0;
173
+ process.env.LOG_LEVEL = levels[level];
174
+ }
175
+ const exts = ["ts", "mts", "mjs", "js", "mjs", "cjs"];
176
+ let buildFile = void 0;
177
+ if (file) {
178
+ const absolute = _path.resolve(file);
179
+ if (!isFile(absolute)) {
180
+ console.log(`Specified build file "${file}" was not found`);
181
+ process.exit(1);
182
+ } else {
183
+ buildFile = absolute;
184
+ }
185
+ } else {
186
+ for (const ext of exts) {
187
+ const absolute = _path.resolve(`build.${ext}`);
188
+ if (!isFile(absolute))
189
+ continue;
190
+ buildFile = absolute;
191
+ break;
192
+ }
193
+ }
194
+ if (!buildFile) {
195
+ console.log(`Unable to find build file "./build.[${exts.join("|")}]`);
196
+ process.exit(1);
197
+ }
198
+ return { buildFile, tasks, listOnly };
199
+ }
200
+ function isFile(path) {
201
+ try {
202
+ return _fs.statSync(path).isFile();
203
+ } catch (error) {
204
+ return false;
205
+ }
206
+ }
207
+ export {
208
+ isBuild,
209
+ isBuildFailure,
210
+ parseCommandLine
211
+ };
212
+ //# sourceMappingURL=data:application/json;base64,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
@@ -0,0 +1,214 @@
1
+ import _esbuild from "esbuild";
2
+ import _fs from "node:fs";
3
+ import _module from "node:module";
4
+ import _path from "node:path";
5
+ import _url from "node:url";
6
+ const CJS = "commonjs";
7
+ const ESM = "module";
8
+ const _debug = process.env.DEBUG_TS_LOADER === "true";
9
+ function _log(type, ...args) {
10
+ if (!_debug)
11
+ return;
12
+ const t = type === "module" ? "esm" : type === "commonjs" ? "cjs" : "---";
13
+ const prefix = `[ts-loader|${t}|pid=${process.pid}]`;
14
+ console.log(prefix, ...args);
15
+ }
16
+ function _throw(type, message, options = {}) {
17
+ const t = type === "module" ? "esm" : type === "commonjs" ? "cjs" : "---";
18
+ const prefix = `[ts-loader|${t}|pid=${process.pid}]`;
19
+ const { start = _throw, ...extra } = options;
20
+ const error = new Error(`${prefix} ${message}`);
21
+ Error.captureStackTrace(error, start);
22
+ Object.assign(error, extra);
23
+ throw error;
24
+ }
25
+ const _moduleFormatCache = /* @__PURE__ */ new Map();
26
+ function _moduleFormat(directory) {
27
+ const type = _moduleFormatCache.get(directory);
28
+ if (type)
29
+ return type;
30
+ const file = _path.resolve(directory, "package.json");
31
+ try {
32
+ const json = _fs.readFileSync(file, "utf-8");
33
+ const data = JSON.parse(json);
34
+ const type2 = data.type === "module" ? ESM : CJS;
35
+ _log(null, `File "${file}" defines module type as "${data.type}" (${type2})`);
36
+ _moduleFormatCache.set(directory, type2);
37
+ return type2;
38
+ } catch (cause) {
39
+ if (cause.code !== "ENOENT" && cause.code !== "EISDIR") {
40
+ _throw(null, `Unable to read or parse "${file}"`, { cause, start: _moduleFormat });
41
+ }
42
+ }
43
+ const name = _path.basename(directory);
44
+ const parent = _path.dirname(directory);
45
+ if (name === "node_modules" || parent === directory) {
46
+ _moduleFormatCache.set(directory, CJS);
47
+ return CJS;
48
+ } else {
49
+ const type2 = _moduleFormat(parent);
50
+ _moduleFormatCache.set(directory, type2);
51
+ return type2;
52
+ }
53
+ }
54
+ function _isFile(path) {
55
+ try {
56
+ return _fs.statSync(path).isFile();
57
+ } catch (error) {
58
+ return false;
59
+ }
60
+ }
61
+ function _isDirectory(path) {
62
+ try {
63
+ return _fs.statSync(path).isDirectory();
64
+ } catch (error) {
65
+ return false;
66
+ }
67
+ }
68
+ function _esbReport(kind, messages = []) {
69
+ const output = process.stderr;
70
+ const options = { color: !!output.isTTY, terminalWidth: output.columns || 80 };
71
+ const array = _esbuild.formatMessagesSync(messages, { kind, ...options });
72
+ array.forEach((message) => output.write(`${message}
73
+ `));
74
+ }
75
+ function _esbTranpile(filename, type) {
76
+ _log(type, `Transpiling "${filename}`);
77
+ const [format, __fileurl] = type === ESM ? ["esm", "import.meta.url"] : ["cjs", "__filename"];
78
+ const options = {
79
+ sourcefile: filename,
80
+ format,
81
+ loader: "ts",
82
+ sourcemap: "inline",
83
+ sourcesContent: false,
84
+ platform: "node",
85
+ logLevel: "silent",
86
+ target: `node${process.versions["node"]}`,
87
+ define: { __fileurl }
88
+ };
89
+ if (_debug) {
90
+ options.banner = `console.log(\`[ts-loader|${format}]: Loaded "\${${__fileurl}}"\`);`;
91
+ }
92
+ let result;
93
+ try {
94
+ const source = _fs.readFileSync(filename, "utf-8");
95
+ result = _esbuild.transformSync(source, options);
96
+ } catch (cause) {
97
+ _esbReport("error", cause.errors);
98
+ _esbReport("warning", cause.warnings);
99
+ _throw(type, `ESBuild error transpiling "${filename}"`, { cause, start: _esbTranpile });
100
+ }
101
+ if (_debug)
102
+ _esbReport("warning", result.warnings);
103
+ return result.code;
104
+ }
105
+ const resolve = (specifier, context, nextResolve) => {
106
+ _log(ESM, `Resolving "${specifier}" from "${context.parentURL}"`);
107
+ if (!specifier.match(/^\.\.?\//))
108
+ return nextResolve(specifier, context);
109
+ const parentURL = context.parentURL;
110
+ if (!parentURL)
111
+ return nextResolve(specifier, context);
112
+ if (!parentURL.startsWith("file:"))
113
+ return nextResolve(specifier, context);
114
+ if (!parentURL.match(/\.m?ts$/))
115
+ return nextResolve(specifier, context);
116
+ const url = new URL(specifier, parentURL).href;
117
+ const path = _url.fileURLToPath(url);
118
+ if (_isFile(path)) {
119
+ _log(ESM, `Positive match for "${specifier}" as "${path}" (1)`);
120
+ return nextResolve(specifier, context);
121
+ }
122
+ const match = specifier.match(/(.*)(\.[mc]?js$)/);
123
+ if (match) {
124
+ const [, base, ext] = match;
125
+ const tsspecifier = base + ext.replace("js", "ts");
126
+ const tsurl = new URL(tsspecifier, parentURL).href;
127
+ const tspath = _url.fileURLToPath(tsurl);
128
+ if (_isFile(tspath)) {
129
+ _log(ESM, `Positive match for "${specifier}" as "${tspath}" (2)`);
130
+ return nextResolve(tsspecifier, context);
131
+ }
132
+ }
133
+ if (_isFile(`${path}.ts`)) {
134
+ _log(ESM, `Positive match for "${specifier}.ts" as "${path}.ts" (3)`);
135
+ return nextResolve(`${specifier}.ts`, context);
136
+ }
137
+ if (_isDirectory(path)) {
138
+ const file = _path.resolve(path, "index.ts");
139
+ const spec = _path.join(specifier, "index.ts");
140
+ if (_isFile(file)) {
141
+ _log(ESM, `Positive match for "${spec}" as "${file}" (4)`);
142
+ return nextResolve(spec, context);
143
+ }
144
+ }
145
+ return nextResolve(specifier, context);
146
+ };
147
+ const load = (url, context, nextLoad) => {
148
+ var _a;
149
+ _log(ESM, `Attempting to load "${url}"`);
150
+ if (!url.startsWith("file:"))
151
+ return nextLoad(url, context);
152
+ const ext = (_a = url.match(/\.[cm]?ts$/)) == null ? void 0 : _a[0];
153
+ if (!ext)
154
+ return nextLoad(url, context);
155
+ if (ext === ".cts")
156
+ return { format: "commonjs" };
157
+ const filename = _url.fileURLToPath(url);
158
+ if (ext === ".ts") {
159
+ const format = _moduleFormat(_path.dirname(filename));
160
+ if (format === CJS)
161
+ return { format: "commonjs" };
162
+ }
163
+ const source = _esbTranpile(filename, ESM);
164
+ return { source, format: "module", shortCircuit: true };
165
+ };
166
+ const loader = (module, filename) => {
167
+ _log(ESM, `Attempting to load "${filename}"`);
168
+ const ext = _path.extname(filename);
169
+ if (ext === ".ts") {
170
+ const format = _moduleFormat(_path.dirname(filename));
171
+ if (format === ESM) {
172
+ _throw(CJS, `Must use import to load ES Module: ${filename}`, { code: "ERR_REQUIRE_ESM" });
173
+ }
174
+ } else if (ext !== ".cts") {
175
+ _throw(CJS, `Unsupported filename "${filename}"`);
176
+ }
177
+ const source = _esbTranpile(filename, CJS);
178
+ try {
179
+ module._compile(source, filename);
180
+ } catch (cause) {
181
+ _throw(CJS, `Error compiling module "${filename}"`, { cause });
182
+ }
183
+ };
184
+ _module._extensions[".ts"] = _module._extensions[".cts"] = loader;
185
+ const _oldResolveFilename = _module._resolveFilename;
186
+ _module._resolveFilename = function(request, parent, ...args) {
187
+ try {
188
+ return _oldResolveFilename.call(this, request, parent, ...args);
189
+ } catch (error) {
190
+ if (error.code !== "MODULE_NOT_FOUND")
191
+ throw error;
192
+ const match = request.match(/(.*)(\.[mc]?js$)/);
193
+ if (parent && match) {
194
+ const [, name, ext] = match;
195
+ const tsrequest = name + ext.replace("js", "ts");
196
+ try {
197
+ const result = _oldResolveFilename.call(this, tsrequest, parent, ...args);
198
+ _log("commonjs", `Resolution for "${request}" intercepted as "${tsrequest}`);
199
+ return result;
200
+ } catch (discard) {
201
+ throw error;
202
+ }
203
+ }
204
+ throw error;
205
+ }
206
+ };
207
+ const tsLoaderMarker = Symbol.for("plugjs:tsLoader");
208
+ globalThis[tsLoaderMarker] = tsLoaderMarker;
209
+ _log(null, `Installing loader from "${import.meta.url}"`);
210
+ export {
211
+ load,
212
+ resolve
213
+ };
214
+ //# sourceMappingURL=data:application/json;base64,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
@@ -0,0 +1,11 @@
1
+ /// <reference no-default-lib="true"/>
2
+
3
+ /*
4
+ * Type definition for `WebAssembly`. This is normally provided to TypeScript
5
+ * by `lib.dom.d.ts`, and is not defined by Node's own types.
6
+ *
7
+ * https://github.com/evanw/esbuild/issues/2388
8
+ */
9
+ declare namespace WebAssembly {
10
+ interface Module {} // for esbuild types
11
+ }
package/package.json ADDED
@@ -0,0 +1,57 @@
1
+ {
2
+ "name": "@plugjs/plug",
3
+ "version": "0.0.1",
4
+ "type": "module",
5
+ "main": "./dist/index.cjs",
6
+ "module": "./dist/index.mjs",
7
+ "types": "./types/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "require": {
11
+ "types": "./types/index.d.ts",
12
+ "default": "./dist/index.cjs"
13
+ },
14
+ "import": {
15
+ "types": "./types/index.d.ts",
16
+ "default": "./dist/index.mjs"
17
+ }
18
+ }
19
+ },
20
+ "bin": {
21
+ "plug": "./extra/cli.mjs"
22
+ },
23
+ "scripts": {
24
+ "bootstrap": "./bootstrap.sh",
25
+ "build": "node ./extra/cli.mjs",
26
+ "dev": "npx nodemon -e .ts -w ./test -w ./src -x ./runme.sh"
27
+ },
28
+ "author": "",
29
+ "license": "ISC",
30
+ "dependencies": {
31
+ "@babel/parser": "^7.18.11",
32
+ "@babel/types": "^7.18.10",
33
+ "@plugjs/cov8-html": "^0.0.1",
34
+ "diff": "^5.1.0",
35
+ "esbuild": "^0.15.4",
36
+ "eslint": "^8.22.0",
37
+ "mocha": "^10.0.0",
38
+ "picomatch": "^2.3.1",
39
+ "source-map": "^0.7.4",
40
+ "typescript": "^4.7.4",
41
+ "yargs-parser": "^21.1.1"
42
+ },
43
+ "devDependencies": {
44
+ "@types/chai": "^4.3.3",
45
+ "@types/diff": "^5.0.2",
46
+ "@types/eslint": "^8.4.5",
47
+ "@types/mocha": "^9.1.1",
48
+ "@types/ms": "^0.7.31",
49
+ "@types/node": "<17",
50
+ "@types/picomatch": "^2.3.0",
51
+ "@types/yargs-parser": "^21.0.0",
52
+ "@typescript-eslint/eslint-plugin": "^5.33.1",
53
+ "@typescript-eslint/parser": "^5.33.1",
54
+ "chai": "^4.3.6",
55
+ "eslint-config-google": "^0.14.0"
56
+ }
57
+ }
package/src/assert.ts ADDED
@@ -0,0 +1,47 @@
1
+ /* ========================================================================== *
2
+ * BUILD FAILURES *
3
+ * ========================================================================== */
4
+
5
+ const buildError = Symbol.for('plugjs:buildError')
6
+ const buildFailure = Symbol.for('plugjs:buildFailure')
7
+
8
+ /** Check if the specified argument is a {@link BuildError} */
9
+ export function isBuildError(arg: any): arg is BuildError {
10
+ return arg && arg[buildError] === buildError
11
+ }
12
+
13
+ /** Check if the specified argument is a {@link BuildFailure} */
14
+ export function isBuildFailure(arg: any): arg is BuildFailure {
15
+ return arg && arg[buildFailure] === buildFailure
16
+ }
17
+
18
+ /** An error produced in our build, with proper inspection for logging */
19
+ export class BuildError extends Error {
20
+ constructor(message: string) {
21
+ super(message)
22
+ Object.defineProperty(this, buildError, { value: buildError })
23
+ }
24
+ }
25
+
26
+ /** A {@link BuildFailure} represents an error _already logged_ in our build. */
27
+ export class BuildFailure extends Error {
28
+ constructor() {
29
+ super('Build Failure')
30
+ Object.defineProperty(this, buildFailure, { value: buildFailure })
31
+ }
32
+ }
33
+
34
+ /** Asserts something as _truthy_ and fail the build if not */
35
+ export function assert(assertion: any, message: string): asserts assertion {
36
+ if (! assertion) throw new BuildError(message)
37
+ }
38
+
39
+ /** Throw a {@link BuildError} (an {@link Error} printed nicely) */
40
+ export function fail(message: string): never {
41
+ throw new BuildError(message)
42
+ }
43
+
44
+ /** Return a non-logged {@link BuildFailure} */
45
+ export function failure(): BuildFailure {
46
+ return new BuildFailure()
47
+ }