@plugjs/plug 0.3.5 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. package/dist/asserts.cjs +10 -12
  2. package/dist/asserts.cjs.map +1 -1
  3. package/dist/asserts.d.ts +1 -2
  4. package/dist/asserts.mjs +9 -10
  5. package/dist/asserts.mjs.map +1 -1
  6. package/dist/async.cjs +5 -20
  7. package/dist/async.cjs.map +2 -2
  8. package/dist/async.mjs +5 -20
  9. package/dist/async.mjs.map +2 -2
  10. package/dist/build.cjs +113 -64
  11. package/dist/build.cjs.map +2 -2
  12. package/dist/build.d.ts +9 -7
  13. package/dist/build.mjs +110 -63
  14. package/dist/build.mjs.map +2 -2
  15. package/dist/cli.d.mts +12 -0
  16. package/dist/cli.mjs +266 -0
  17. package/dist/cli.mjs.map +6 -0
  18. package/dist/files.cjs +5 -3
  19. package/dist/files.cjs.map +1 -1
  20. package/dist/files.d.ts +2 -1
  21. package/dist/files.mjs +11 -4
  22. package/dist/files.mjs.map +1 -1
  23. package/dist/fork.cjs +30 -12
  24. package/dist/fork.cjs.map +1 -1
  25. package/dist/fork.d.ts +10 -0
  26. package/dist/fork.mjs +31 -13
  27. package/dist/fork.mjs.map +1 -1
  28. package/dist/helpers.cjs +32 -13
  29. package/dist/helpers.cjs.map +2 -2
  30. package/dist/helpers.d.ts +12 -0
  31. package/dist/helpers.mjs +37 -14
  32. package/dist/helpers.mjs.map +2 -2
  33. package/dist/index.cjs +5 -0
  34. package/dist/index.cjs.map +1 -1
  35. package/dist/index.d.ts +2 -1
  36. package/dist/index.mjs +4 -1
  37. package/dist/index.mjs.map +1 -1
  38. package/dist/logging/emit.cjs +4 -4
  39. package/dist/logging/emit.cjs.map +1 -1
  40. package/dist/logging/emit.mjs +4 -4
  41. package/dist/logging/emit.mjs.map +1 -1
  42. package/dist/logging/logger.cjs +43 -2
  43. package/dist/logging/logger.cjs.map +1 -1
  44. package/dist/logging/logger.d.ts +36 -3
  45. package/dist/logging/logger.mjs +43 -3
  46. package/dist/logging/logger.mjs.map +1 -1
  47. package/dist/logging/options.cjs +8 -12
  48. package/dist/logging/options.cjs.map +1 -1
  49. package/dist/logging/options.d.ts +44 -1
  50. package/dist/logging/options.mjs +8 -12
  51. package/dist/logging/options.mjs.map +1 -1
  52. package/dist/logging.cjs +14 -3
  53. package/dist/logging.cjs.map +1 -1
  54. package/dist/logging.d.ts +2 -0
  55. package/dist/logging.mjs +13 -3
  56. package/dist/logging.mjs.map +1 -1
  57. package/dist/plugs/build.cjs +63 -0
  58. package/dist/plugs/build.cjs.map +6 -0
  59. package/dist/plugs/build.d.ts +13 -0
  60. package/dist/plugs/build.mjs +37 -0
  61. package/dist/plugs/build.mjs.map +6 -0
  62. package/dist/plugs/debug.cjs +7 -9
  63. package/dist/plugs/debug.cjs.map +1 -1
  64. package/dist/plugs/debug.mjs +8 -10
  65. package/dist/plugs/debug.mjs.map +1 -1
  66. package/dist/types.cjs +12 -0
  67. package/dist/types.cjs.map +1 -1
  68. package/dist/types.d.ts +35 -9
  69. package/dist/types.mjs +5 -0
  70. package/dist/types.mjs.map +2 -2
  71. package/dist/utils/diff.cjs +1 -4
  72. package/dist/utils/diff.cjs.map +1 -1
  73. package/dist/utils/diff.mjs +1 -4
  74. package/dist/utils/diff.mjs.map +1 -1
  75. package/dist/utils/exec.cjs +5 -12
  76. package/dist/utils/exec.cjs.map +2 -2
  77. package/dist/utils/exec.d.ts +0 -2
  78. package/dist/utils/exec.mjs +6 -13
  79. package/dist/utils/exec.mjs.map +1 -1
  80. package/dist/utils/{types.cjs → singleton.cjs} +14 -13
  81. package/dist/utils/singleton.cjs.map +6 -0
  82. package/dist/utils/singleton.d.ts +12 -0
  83. package/dist/utils/singleton.mjs +13 -0
  84. package/dist/utils/singleton.mjs.map +6 -0
  85. package/dist/utils.cjs +2 -2
  86. package/dist/utils.cjs.map +1 -1
  87. package/dist/utils.d.ts +1 -1
  88. package/dist/utils.mjs +1 -1
  89. package/package.json +7 -9
  90. package/src/asserts.ts +10 -12
  91. package/src/async.ts +6 -29
  92. package/src/build.ts +169 -106
  93. package/{extra/plug.mts → src/cli.mts} +115 -141
  94. package/src/files.ts +14 -6
  95. package/src/fork.ts +42 -16
  96. package/src/helpers.ts +56 -5
  97. package/src/index.ts +2 -1
  98. package/src/logging/emit.ts +4 -4
  99. package/src/logging/logger.ts +60 -7
  100. package/src/logging/options.ts +9 -14
  101. package/src/logging.ts +20 -5
  102. package/src/plugs/build.ts +45 -0
  103. package/src/plugs/debug.ts +10 -9
  104. package/src/types.ts +54 -23
  105. package/src/utils/diff.ts +1 -6
  106. package/src/utils/exec.ts +6 -20
  107. package/src/utils/singleton.ts +19 -0
  108. package/src/utils.ts +1 -1
  109. package/cli/plug.mjs +0 -1385
  110. package/cli/ts-loader.mjs +0 -275
  111. package/cli/tsrun.mjs +0 -1204
  112. package/dist/utils/types.cjs.map +0 -6
  113. package/dist/utils/types.d.ts +0 -4
  114. package/dist/utils/types.mjs +0 -12
  115. package/dist/utils/types.mjs.map +0 -6
  116. package/extra/ts-loader.mts +0 -546
  117. package/extra/tsrun.mts +0 -127
  118. package/extra/utils.ts +0 -150
  119. package/src/utils/types.ts +0 -11
@@ -1,16 +1,14 @@
1
1
  // utils/exec.ts
2
+ import { spawn } from "node:child_process";
2
3
  import path from "node:path";
3
4
  import readline from "node:readline";
4
- import { fork as forkProcess, spawn as spawnProcess } from "node:child_process";
5
5
  import { assert, BuildFailure } from "../asserts.mjs";
6
- import { $p, logOptions } from "../logging.mjs";
6
+ import { $p } from "../logging.mjs";
7
7
  import { getCurrentWorkingDirectory, resolveDirectory } from "../paths.mjs";
8
8
  async function execChild(cmd, args, options = {}, context) {
9
9
  const {
10
10
  env = {},
11
11
  // default empty environment
12
- fork = false,
13
- // by default do not fork
14
12
  shell = false,
15
13
  // by default do not use a shell
16
14
  cwd = void 0,
@@ -21,7 +19,6 @@ async function execChild(cmd, args, options = {}, context) {
21
19
  } = options;
22
20
  const childCwd = cwd ? context.resolve(cwd) : getCurrentWorkingDirectory();
23
21
  assert(resolveDirectory(childCwd), `Current working directory ${$p(childCwd)} does not exist`);
24
- assert(!(fork && shell), 'Options "fork" and "shell" can not coexist');
25
22
  const childPaths = [];
26
23
  const baseNodePath = context.resolve("@node_modules", ".bin");
27
24
  if (resolveDirectory(baseNodePath))
@@ -33,20 +30,19 @@ async function execChild(cmd, args, options = {}, context) {
33
30
  if (extraPath)
34
31
  childPaths.push(extraPath);
35
32
  const PATH = childPaths.join(path.delimiter);
36
- const logForkEnv = logOptions.forkEnv(context.taskName, 4);
37
- const childEnv = { ...process.env, ...env, ...logForkEnv, PATH };
33
+ const childEnv = { ...process.env, ...env, PATH };
38
34
  if (coverageDir)
39
35
  childEnv.NODE_V8_COVERAGE = context.resolve(coverageDir);
40
36
  const childOptions = {
41
37
  ...extraOptions,
42
- stdio: ["ignore", "pipe", "pipe", "ipc", "pipe"],
38
+ stdio: ["ignore", "pipe", "pipe"],
43
39
  cwd: childCwd,
44
40
  env: childEnv,
45
41
  shell
46
42
  };
47
- context.log.info(fork ? "Forking" : "Executing", [cmd, ...args]);
43
+ context.log.info("Executing", [cmd, ...args]);
48
44
  context.log.debug("Child process options", childOptions);
49
- const child = fork ? forkProcess(cmd, args, childOptions) : spawnProcess(cmd, args, childOptions);
45
+ const child = spawn(cmd, args, childOptions);
50
46
  try {
51
47
  context.log.info("Child process PID", child.pid);
52
48
  if (child.stdout) {
@@ -57,9 +53,6 @@ async function execChild(cmd, args, options = {}, context) {
57
53
  const err = readline.createInterface(child.stderr);
58
54
  err.on("line", (line) => context.log.warn(line || "\xA0"));
59
55
  }
60
- if (child.stdio[4]) {
61
- child.stdio[4].on("data", (data) => logOptions.output.write(data));
62
- }
63
56
  } catch (error) {
64
57
  child.kill();
65
58
  throw error;
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/utils/exec.ts"],
4
- "mappings": ";AAAA,OAAO,UAAU;AACjB,OAAO,cAAc;AACrB,SAAS,QAAQ,aAAa,SAAS,oBAAoB;AAE3D,SAAS,QAAQ,oBAAoB;AACrC,SAAS,IAAI,kBAAkB;AAC/B,SAAS,4BAA4B,wBAAwB;AAoB7D,eAAsB,UAClB,KACA,MACA,UAA4B,CAAC,GAC7B,SACa;AACf,QAAM;AAAA,IACJ,MAAM,CAAC;AAAA;AAAA,IACP,OAAO;AAAA;AAAA,IACP,QAAQ;AAAA;AAAA,IACR,MAAM;AAAA;AAAA,IACN;AAAA;AAAA,IACA,GAAG;AAAA,EACL,IAAI;AAEJ,QAAM,WAAW,MAAM,QAAQ,QAAQ,GAAG,IAAI,2BAA2B;AACzE,SAAO,iBAAiB,QAAQ,GAAG,6BAA6B,GAAG,QAAQ,kBAAkB;AAG7F,SAAO,EAAE,QAAQ,QAAQ,4CAA4C;AAGrE,QAAM,aAA6B,CAAC;AAGpC,QAAM,eAAe,QAAQ,QAAQ,iBAAiB,MAAM;AAC5D,MAAI,iBAAiB,YAAY;AAAG,eAAW,KAAK,YAAY;AAGhE,QAAM,gBAAgB,QAAQ,QAAQ,kBAAkB,MAAM;AAC9D,MAAI,iBAAiB,aAAa;AAAG,eAAW,KAAK,aAAa;AAGlE,QAAM,YAAY,IAAI,QAAQ,QAAQ,IAAI;AAC1C,MAAI;AAAW,eAAW,KAAK,SAAS;AAGxC,QAAM,OAAO,WAAW,KAAK,KAAK,SAAS;AAC3C,QAAM,aAAa,WAAW,QAAQ,QAAQ,UAAU,CAAC;AACzD,QAAM,WAAmC,EAAE,GAAG,QAAQ,KAAK,GAAG,KAAK,GAAG,YAAY,KAAK;AAGvF,MAAI;AAAa,aAAS,mBAAmB,QAAQ,QAAQ,WAAW;AAGxE,QAAM,eAA6B;AAAA,IACjC,GAAG;AAAA,IACH,OAAO,CAAE,UAAU,QAAQ,QAAQ,OAAO,MAAO;AAAA,IACjD,KAAK;AAAA,IACL,KAAK;AAAA,IACL;AAAA,EACF;AAGA,UAAQ,IAAI,KAAK,OAAO,YAAY,aAAa,CAAE,KAAK,GAAG,IAAK,CAAC;AACjE,UAAQ,IAAI,MAAM,yBAAyB,YAAY;AAEvD,QAAM,QAAQ,OACZ,YAAY,KAAK,MAAM,YAAY,IACnC,aAAa,KAAK,MAAM,YAAY;AAEtC,MAAI;AACF,YAAQ,IAAI,KAAK,qBAAqB,MAAM,GAAG;AAG/C,QAAI,MAAM,QAAQ;AAChB,YAAM,MAAM,SAAS,gBAAgB,MAAM,MAAM;AACjD,UAAI,GAAG,QAAQ,CAAC,SAAS,QAAQ,IAAI,OAAO,QAAQ,MAAQ,CAAC;AAAA,IAC/D;AAGA,QAAI,MAAM,QAAQ;AAChB,YAAM,MAAM,SAAS,gBAAgB,MAAM,MAAM;AACjD,UAAI,GAAG,QAAQ,CAAC,SAAS,QAAQ,IAAI,KAAK,QAAO,MAAQ,CAAC;AAAA,IAC5D;AAGA,QAAI,MAAM,MAAM,CAAC,GAAG;AAClB,YAAM,MAAM,CAAC,EAAE,GAAG,QAAQ,CAAC,SAAS,WAAW,OAAO,MAAM,IAAI,CAAC;AAAA,IACnE;AAAA,EACF,SAAS,OAAP;AAEA,UAAM,KAAK;AACX,UAAM;AAAA,EACR;AAGA,SAAO,IAAI,QAAc,CAAC,SAAS,WAAW;AAC5C,UAAM,GAAG,SAAS,CAAC,UAAU,OAAO,KAAK,CAAC;AAC1C,UAAM,GAAG,QAAQ,CAAC,MAAM,WAAW;AACjC,UAAI,SAAS;AAAG,eAAO,QAAQ;AAC/B,UAAI;AAAQ,eAAO,OAAO,aAAa,YAAY,oCAAoC,QAAQ,CAAC;AAChG,UAAI;AAAM,eAAO,OAAO,aAAa,YAAY,kCAAkC,MAAM,CAAC;AAC1F,aAAO,aAAa,YAAY,4CAA4C,CAAC;AAAA,IAC/E,CAAC;AAAA,EACH,CAAC;AACH;",
4
+ "mappings": ";AAAA,SAAS,aAAa;AACtB,OAAO,UAAU;AACjB,OAAO,cAAc;AAErB,SAAS,QAAQ,oBAAoB;AACrC,SAAS,UAAU;AACnB,SAAS,4BAA4B,wBAAwB;AAkB7D,eAAsB,UAClB,KACA,MACA,UAA4B,CAAC,GAC7B,SACa;AACf,QAAM;AAAA,IACJ,MAAM,CAAC;AAAA;AAAA,IACP,QAAQ;AAAA;AAAA,IACR,MAAM;AAAA;AAAA,IACN;AAAA;AAAA,IACA,GAAG;AAAA,EACL,IAAI;AAEJ,QAAM,WAAW,MAAM,QAAQ,QAAQ,GAAG,IAAI,2BAA2B;AACzE,SAAO,iBAAiB,QAAQ,GAAG,6BAA6B,GAAG,QAAQ,kBAAkB;AAG7F,QAAM,aAA6B,CAAC;AAGpC,QAAM,eAAe,QAAQ,QAAQ,iBAAiB,MAAM;AAC5D,MAAI,iBAAiB,YAAY;AAAG,eAAW,KAAK,YAAY;AAGhE,QAAM,gBAAgB,QAAQ,QAAQ,kBAAkB,MAAM;AAC9D,MAAI,iBAAiB,aAAa;AAAG,eAAW,KAAK,aAAa;AAGlE,QAAM,YAAY,IAAI,QAAQ,QAAQ,IAAI;AAC1C,MAAI;AAAW,eAAW,KAAK,SAAS;AAGxC,QAAM,OAAO,WAAW,KAAK,KAAK,SAAS;AAC3C,QAAM,WAAmC,EAAE,GAAG,QAAQ,KAAK,GAAG,KAAK,KAAK;AAGxE,MAAI;AAAa,aAAS,mBAAmB,QAAQ,QAAQ,WAAW;AAGxE,QAAM,eAA6B;AAAA,IACjC,GAAG;AAAA,IACH,OAAO,CAAE,UAAU,QAAQ,MAAO;AAAA,IAClC,KAAK;AAAA,IACL,KAAK;AAAA,IACL;AAAA,EACF;AAGA,UAAQ,IAAI,KAAK,aAAa,CAAE,KAAK,GAAG,IAAK,CAAC;AAC9C,UAAQ,IAAI,MAAM,yBAAyB,YAAY;AAEvD,QAAM,QAAQ,MAAM,KAAK,MAAM,YAAY;AAE3C,MAAI;AACF,YAAQ,IAAI,KAAK,qBAAqB,MAAM,GAAG;AAG/C,QAAI,MAAM,QAAQ;AAChB,YAAM,MAAM,SAAS,gBAAgB,MAAM,MAAM;AACjD,UAAI,GAAG,QAAQ,CAAC,SAAS,QAAQ,IAAI,OAAO,QAAQ,MAAQ,CAAC;AAAA,IAC/D;AAGA,QAAI,MAAM,QAAQ;AAChB,YAAM,MAAM,SAAS,gBAAgB,MAAM,MAAM;AACjD,UAAI,GAAG,QAAQ,CAAC,SAAS,QAAQ,IAAI,KAAK,QAAO,MAAQ,CAAC;AAAA,IAC5D;AAAA,EACF,SAAS,OAAP;AAEA,UAAM,KAAK;AACX,UAAM;AAAA,EACR;AAGA,SAAO,IAAI,QAAc,CAAC,SAAS,WAAW;AAC5C,UAAM,GAAG,SAAS,CAAC,UAAU,OAAO,KAAK,CAAC;AAC1C,UAAM,GAAG,QAAQ,CAAC,MAAM,WAAW;AACjC,UAAI,SAAS;AAAG,eAAO,QAAQ;AAC/B,UAAI;AAAQ,eAAO,OAAO,aAAa,YAAY,oCAAoC,QAAQ,CAAC;AAChG,UAAI;AAAM,eAAO,OAAO,aAAa,YAAY,kCAAkC,MAAM,CAAC;AAC1F,aAAO,aAAa,YAAY,4CAA4C,CAAC;AAAA,IAC/E,CAAC;AAAA,EACH,CAAC;AACH;",
5
5
  "names": []
6
6
  }
@@ -17,21 +17,22 @@ var __copyProps = (to, from, except, desc) => {
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
 
20
- // utils/types.ts
21
- var types_exports = {};
22
- __export(types_exports, {
23
- getTypeOf: () => getTypeOf
20
+ // utils/singleton.ts
21
+ var singleton_exports = {};
22
+ __export(singleton_exports, {
23
+ getSingleton: () => getSingleton
24
24
  });
25
- module.exports = __toCommonJS(types_exports);
26
- function getTypeOf(what) {
27
- if (Array.isArray(what))
28
- return "array";
29
- if (what === null)
30
- return "null";
31
- return typeof what;
25
+ module.exports = __toCommonJS(singleton_exports);
26
+ function getSingleton(symbol, factory) {
27
+ const anyGlobalThis = globalThis;
28
+ if (anyGlobalThis[symbol])
29
+ return anyGlobalThis[symbol];
30
+ const value = factory();
31
+ Object.defineProperty(anyGlobalThis, symbol, { value });
32
+ return value;
32
33
  }
33
34
  // Annotate the CommonJS export names for ESM import in node:
34
35
  0 && (module.exports = {
35
- getTypeOf
36
+ getSingleton
36
37
  });
37
- //# sourceMappingURL=types.cjs.map
38
+ //# sourceMappingURL=singleton.cjs.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/utils/singleton.ts"],
4
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAWO,SAAS,aAAgB,QAAgB,SAAqB;AACnE,QAAM,gBAAgB;AACtB,MAAI,cAAc,MAAM;AAAG,WAAO,cAAc,MAAM;AAEtD,QAAM,QAAQ,QAAQ;AACtB,SAAO,eAAe,eAAe,QAAQ,EAAE,MAAM,CAAC;AACtD,SAAO;AACT;",
5
+ "names": []
6
+ }
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Get the instance of a _singleton_ variable.
3
+ *
4
+ * Sometimes we need unique instances _per process_ (for example our async
5
+ * context). The problem is that the code might get called from two (or three)
6
+ * different versions of this file: the .cjs transpiled code, the .mjs
7
+ * transpiled one, or the .ts dynamically transpiled by our dynamic loader.
8
+ *
9
+ * A _singleton_ associates an instance with a symbol in `globalThis` and ensure
10
+ * there is only _one_ instance per process (per `globalThis`).
11
+ */
12
+ export declare function getSingleton<T>(symbol: symbol, factory: () => T): T;
@@ -0,0 +1,13 @@
1
+ // utils/singleton.ts
2
+ function getSingleton(symbol, factory) {
3
+ const anyGlobalThis = globalThis;
4
+ if (anyGlobalThis[symbol])
5
+ return anyGlobalThis[symbol];
6
+ const value = factory();
7
+ Object.defineProperty(anyGlobalThis, symbol, { value });
8
+ return value;
9
+ }
10
+ export {
11
+ getSingleton
12
+ };
13
+ //# sourceMappingURL=singleton.mjs.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/utils/singleton.ts"],
4
+ "mappings": ";AAWO,SAAS,aAAgB,QAAgB,SAAqB;AACnE,QAAM,gBAAgB;AACtB,MAAI,cAAc,MAAM;AAAG,WAAO,cAAc,MAAM;AAEtD,QAAM,QAAQ,QAAQ;AACtB,SAAO,eAAe,eAAe,QAAQ,EAAE,MAAM,CAAC;AACtD,SAAO;AACT;",
5
+ "names": []
6
+ }
package/dist/utils.cjs CHANGED
@@ -21,7 +21,7 @@ __reExport(utils_exports, require("./utils/diff.cjs"), module.exports);
21
21
  __reExport(utils_exports, require("./utils/exec.cjs"), module.exports);
22
22
  __reExport(utils_exports, require("./utils/match.cjs"), module.exports);
23
23
  __reExport(utils_exports, require("./utils/options.cjs"), module.exports);
24
- __reExport(utils_exports, require("./utils/types.cjs"), module.exports);
24
+ __reExport(utils_exports, require("./utils/singleton.cjs"), module.exports);
25
25
  __reExport(utils_exports, require("./utils/walk.cjs"), module.exports);
26
26
  // Annotate the CommonJS export names for ESM import in node:
27
27
  0 && (module.exports = {
@@ -29,7 +29,7 @@ __reExport(utils_exports, require("./utils/walk.cjs"), module.exports);
29
29
  ...require("./utils/exec.cjs"),
30
30
  ...require("./utils/match.cjs"),
31
31
  ...require("./utils/options.cjs"),
32
- ...require("./utils/types.cjs"),
32
+ ...require("./utils/singleton.cjs"),
33
33
  ...require("./utils/walk.cjs")
34
34
  });
35
35
  //# sourceMappingURL=utils.cjs.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/utils.ts"],
4
- "mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA,0BAAc,6BAAd;AACA,0BAAc,6BADd;AAEA,0BAAc,8BAFd;AAGA,0BAAc,gCAHd;AAIA,0BAAc,8BAJd;AAKA,0BAAc,6BALd;",
4
+ "mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA,0BAAc,6BAAd;AACA,0BAAc,6BADd;AAEA,0BAAc,8BAFd;AAGA,0BAAc,gCAHd;AAIA,0BAAc,kCAJd;AAKA,0BAAc,6BALd;",
5
5
  "names": []
6
6
  }
package/dist/utils.d.ts CHANGED
@@ -2,5 +2,5 @@ export * from './utils/diff';
2
2
  export * from './utils/exec';
3
3
  export * from './utils/match';
4
4
  export * from './utils/options';
5
- export * from './utils/types';
5
+ export * from './utils/singleton';
6
6
  export * from './utils/walk';
package/dist/utils.mjs CHANGED
@@ -3,6 +3,6 @@ export * from "./utils/diff.mjs";
3
3
  export * from "./utils/exec.mjs";
4
4
  export * from "./utils/match.mjs";
5
5
  export * from "./utils/options.mjs";
6
- export * from "./utils/types.mjs";
6
+ export * from "./utils/singleton.mjs";
7
7
  export * from "./utils/walk.mjs";
8
8
  //# sourceMappingURL=utils.mjs.map
package/package.json CHANGED
@@ -1,10 +1,13 @@
1
1
  {
2
2
  "name": "@plugjs/plug",
3
- "version": "0.3.5",
3
+ "version": "0.4.1",
4
4
  "type": "module",
5
5
  "main": "./dist/index.cjs",
6
6
  "module": "./dist/index.mjs",
7
7
  "types": "./dist/index.d.ts",
8
+ "bin": {
9
+ "plug": "./dist/cli.mjs"
10
+ },
8
11
  "exports": {
9
12
  ".": {
10
13
  "require": {
@@ -97,21 +100,16 @@
97
100
  }
98
101
  }
99
102
  },
100
- "bin": {
101
- "plug": "./cli/plug.mjs",
102
- "tsrun": "./cli/tsrun.mjs"
103
- },
104
103
  "author": "Juit Developers <developers@juit.com>",
105
104
  "license": "Apache-2.0",
106
105
  "dependencies": {
106
+ "@plugjs/tsrun": "^0.4.0",
107
107
  "@types/node": "<19",
108
- "esbuild": "^0.17.16",
108
+ "esbuild": "^0.17.17",
109
109
  "picomatch": "^2.3.1"
110
110
  },
111
111
  "devDependencies": {
112
- "@types/picomatch": "^2.3.0",
113
- "@types/yargs-parser": "^21.0.0",
114
- "yargs-parser": "^21.1.1"
112
+ "@types/picomatch": "^2.3.0"
115
113
  },
116
114
  "files": [
117
115
  "*.md",
package/src/asserts.ts CHANGED
@@ -5,12 +5,7 @@
5
5
  import { githubAnnotation } from './logging/github'
6
6
 
7
7
  /** A symbol marking {@link BuildFailure} instances */
8
- const buildFailure = Symbol.for('plugjs:buildFailure')
9
-
10
- /** Check if the specified argument is a {@link BuildFailure} */
11
- export function isBuildFailure(arg: any): arg is BuildFailure {
12
- return arg && arg[buildFailure] === buildFailure
13
- }
8
+ const buildFailure = Symbol.for('plugjs:plug:types:BuildFailure')
14
9
 
15
10
  /** A {@link BuildFailure} represents an error _already logged_ in our build. */
16
11
  export class BuildFailure extends Error {
@@ -28,12 +23,6 @@ export class BuildFailure extends Error {
28
23
  /* Basic error setup: stack and errors */
29
24
  Error.captureStackTrace(this, BuildFailure)
30
25
  if (errors.length) this.errors = Object.freeze([ ...errors ])
31
-
32
- /* Other properties: marker and name */
33
- Object.defineProperties(this, {
34
- [buildFailure]: { value: buildFailure },
35
- 'name': { value: 'BuildFailure' },
36
- })
37
26
  }
38
27
 
39
28
  static fail(): BuildFailure {
@@ -47,6 +36,15 @@ export class BuildFailure extends Error {
47
36
  static withErrors(errors: any[]): BuildFailure {
48
37
  return new BuildFailure(undefined, errors)
49
38
  }
39
+
40
+ static [Symbol.hasInstance](instance: any): boolean {
41
+ return instance && instance[buildFailure] === buildFailure
42
+ }
43
+
44
+ static {
45
+ (this.prototype as any)[buildFailure] = buildFailure
46
+ this.prototype.name = this.name
47
+ }
50
48
  }
51
49
 
52
50
  /** Await and assert that all specified promises were fulfilled */
package/src/async.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import { AsyncLocalStorage } from 'node:async_hooks'
2
2
 
3
3
  import { assert } from './asserts'
4
+ import { getSingleton } from './utils/singleton'
4
5
 
5
6
  import type { Context } from './pipe'
6
7
 
@@ -56,33 +57,9 @@ export function runningTasks(): string[] {
56
57
  * INTERNALS *
57
58
  * ========================================================================== */
58
59
 
59
- /*
60
- * Storage and task names must be unique _per process_. We might get called
61
- * from two (or three) different versions of this file: the .cjs transpiled one,
62
- * the .mjs transpiled one (or the .ts dynamically transpiled by ts-loader).
63
- * In all these cases, we must return the _same_ object, so we store those as
64
- * a global variables associated with a couple of global symbols
65
- */
66
- const storageKey = Symbol.for('plugjs.plug.async.storage')
67
- const tasksKey = Symbol.for('plugjs.plug.async.tasks')
68
-
69
- function getStorage(): AsyncLocalStorage<Context> {
70
- let storage: AsyncLocalStorage<Context> = (<any> globalThis)[storageKey]
71
- if (! storage) {
72
- storage = new AsyncLocalStorage<Context>()
73
- ;(<any> globalThis)[storageKey] = storage
74
- }
75
- return storage
76
- }
77
-
78
- function getTasks(): Set<string> {
79
- let tasks: Set<string> = (<any> globalThis)[tasksKey]
80
- if (! tasks) {
81
- tasks = new Set<string>
82
- ;(<any> globalThis)[tasksKey] = tasks
83
- }
84
- return tasks
85
- }
60
+ /* Storage and task names must be unique _per process_ */
61
+ const storageKey = Symbol.for('plugjs:plug:singleton:contextStorage')
62
+ const tasksKey = Symbol.for('plugjs:plug:singleton:runningTasksStorage')
86
63
 
87
- const storage = getStorage()
88
- const tasks = getTasks()
64
+ const storage = getSingleton(storageKey, () => new AsyncLocalStorage<Context>())
65
+ const tasks = getSingleton(tasksKey, () => new Set<string>())