@plugjs/plug 0.0.12 → 0.0.15

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 (238) hide show
  1. package/{types → dist}/assert.d.ts +0 -0
  2. package/dist/async.cjs +20 -19
  3. package/dist/async.cjs.map +1 -1
  4. package/dist/async.d.ts +20 -0
  5. package/dist/async.mjs +18 -17
  6. package/dist/async.mjs.map +1 -1
  7. package/dist/build.cjs +144 -110
  8. package/dist/build.cjs.map +2 -2
  9. package/dist/build.d.ts +12 -0
  10. package/dist/build.mjs +146 -112
  11. package/dist/build.mjs.map +2 -2
  12. package/dist/files.cjs +2 -16
  13. package/dist/files.cjs.map +1 -1
  14. package/{types → dist}/files.d.ts +3 -10
  15. package/dist/files.mjs +3 -17
  16. package/dist/files.mjs.map +1 -1
  17. package/dist/fork.cjs +28 -40
  18. package/dist/fork.cjs.map +1 -1
  19. package/dist/fork.d.ts +36 -0
  20. package/dist/fork.mjs +29 -40
  21. package/dist/fork.mjs.map +1 -1
  22. package/dist/helpers.cjs +61 -63
  23. package/dist/helpers.cjs.map +2 -2
  24. package/dist/helpers.d.ts +21 -0
  25. package/dist/helpers.mjs +61 -64
  26. package/dist/helpers.mjs.map +2 -2
  27. package/dist/index.cjs +3 -2
  28. package/dist/index.cjs.map +1 -1
  29. package/dist/index.d.ts +10 -0
  30. package/dist/index.mjs +3 -2
  31. package/dist/index.mjs.map +1 -1
  32. package/dist/log/colors.cjs +3 -1
  33. package/dist/log/colors.cjs.map +1 -1
  34. package/{types → dist}/log/colors.d.ts +2 -2
  35. package/dist/log/colors.mjs +3 -1
  36. package/dist/log/colors.mjs.map +1 -1
  37. package/{types → dist}/log/emit.d.ts +1 -1
  38. package/{types → dist}/log/levels.d.ts +0 -0
  39. package/dist/log/logger.cjs +4 -0
  40. package/dist/log/logger.cjs.map +1 -1
  41. package/{types → dist}/log/logger.d.ts +4 -1
  42. package/dist/log/logger.mjs +4 -0
  43. package/dist/log/logger.mjs.map +1 -1
  44. package/{types → dist}/log/options.d.ts +1 -1
  45. package/dist/log/report.cjs +4 -13
  46. package/dist/log/report.cjs.map +1 -1
  47. package/{types → dist}/log/report.d.ts +36 -4
  48. package/dist/log/report.mjs +3 -12
  49. package/dist/log/report.mjs.map +1 -1
  50. package/{types → dist}/log/spinner.d.ts +0 -0
  51. package/dist/log.cjs +1 -1
  52. package/dist/log.cjs.map +1 -1
  53. package/{types → dist}/log.d.ts +6 -6
  54. package/dist/log.mjs +2 -2
  55. package/dist/log.mjs.map +1 -1
  56. package/{types → dist}/paths.d.ts +0 -0
  57. package/dist/pipe.cjs +41 -34
  58. package/dist/pipe.cjs.map +1 -1
  59. package/dist/pipe.d.ts +182 -0
  60. package/dist/pipe.mjs +38 -32
  61. package/dist/pipe.mjs.map +1 -1
  62. package/dist/plugs/copy.cjs +15 -25
  63. package/dist/plugs/copy.cjs.map +2 -2
  64. package/dist/plugs/copy.d.ts +28 -0
  65. package/dist/plugs/copy.mjs +15 -17
  66. package/dist/plugs/copy.mjs.map +2 -2
  67. package/{types → dist}/plugs/coverage/analysis.d.ts +2 -2
  68. package/dist/plugs/coverage/report.cjs +4 -2
  69. package/dist/plugs/coverage/report.cjs.map +1 -1
  70. package/{types → dist}/plugs/coverage/report.d.ts +3 -3
  71. package/dist/plugs/coverage/report.mjs +4 -2
  72. package/dist/plugs/coverage/report.mjs.map +1 -1
  73. package/dist/plugs/coverage.cjs +23 -27
  74. package/dist/plugs/coverage.cjs.map +1 -1
  75. package/dist/plugs/coverage.d.ts +49 -0
  76. package/dist/plugs/coverage.mjs +24 -20
  77. package/dist/plugs/coverage.mjs.map +1 -1
  78. package/dist/plugs/debug.cjs +8 -37
  79. package/dist/plugs/debug.cjs.map +1 -1
  80. package/dist/plugs/debug.d.ts +7 -0
  81. package/dist/plugs/debug.mjs +24 -20
  82. package/dist/plugs/debug.mjs.map +1 -1
  83. package/{types → dist}/plugs/esbuild/bundle-locals.d.ts +0 -0
  84. package/{types → dist}/plugs/esbuild/fix-extensions.d.ts +0 -0
  85. package/dist/plugs/esbuild/fix-extensions.mjs +1 -1
  86. package/dist/plugs/esbuild/fix-extensions.mjs.map +1 -1
  87. package/dist/plugs/esbuild.cjs +14 -25
  88. package/dist/plugs/esbuild.cjs.map +1 -1
  89. package/dist/plugs/esbuild.d.ts +18 -0
  90. package/dist/plugs/esbuild.mjs +14 -17
  91. package/dist/plugs/esbuild.mjs.map +1 -1
  92. package/dist/plugs/eslint/runner.cjs +5 -6
  93. package/dist/plugs/eslint/runner.cjs.map +1 -1
  94. package/dist/plugs/eslint/runner.d.ts +8 -0
  95. package/dist/plugs/eslint/runner.mjs +6 -7
  96. package/dist/plugs/eslint/runner.mjs.map +1 -1
  97. package/dist/{task.cjs → plugs/eslint.cjs} +7 -24
  98. package/dist/plugs/eslint.cjs.map +6 -0
  99. package/dist/plugs/eslint.d.ts +34 -0
  100. package/dist/plugs/eslint.mjs +5 -0
  101. package/dist/plugs/eslint.mjs.map +6 -0
  102. package/dist/plugs/exec.cjs +20 -24
  103. package/dist/plugs/exec.cjs.map +1 -1
  104. package/dist/plugs/exec.d.ts +90 -0
  105. package/dist/plugs/exec.mjs +20 -23
  106. package/dist/plugs/exec.mjs.map +1 -1
  107. package/dist/plugs/filter.cjs +9 -19
  108. package/dist/plugs/filter.cjs.map +1 -1
  109. package/dist/plugs/filter.d.ts +29 -0
  110. package/dist/plugs/filter.mjs +10 -12
  111. package/dist/plugs/filter.mjs.map +1 -1
  112. package/dist/plugs/mocha/reporter.cjs +19 -6
  113. package/dist/plugs/mocha/reporter.cjs.map +1 -1
  114. package/{types → dist}/plugs/mocha/reporter.d.ts +0 -2
  115. package/dist/plugs/mocha/reporter.mjs +18 -4
  116. package/dist/plugs/mocha/reporter.mjs.map +1 -1
  117. package/dist/plugs/mocha/runner.cjs +4 -5
  118. package/dist/plugs/mocha/runner.cjs.map +1 -1
  119. package/dist/plugs/mocha/runner.d.ts +8 -0
  120. package/dist/plugs/mocha/runner.mjs +5 -6
  121. package/dist/plugs/mocha/runner.mjs.map +1 -1
  122. package/dist/plugs/mocha.cjs +22 -0
  123. package/dist/plugs/mocha.cjs.map +6 -0
  124. package/{types/plugs/mocha/runner.d.ts → dist/plugs/mocha.d.ts} +9 -8
  125. package/dist/plugs/mocha.mjs +5 -0
  126. package/dist/plugs/mocha.mjs.map +6 -0
  127. package/dist/plugs/rmf.cjs +4 -32
  128. package/dist/plugs/rmf.cjs.map +1 -1
  129. package/dist/plugs/rmf.d.ts +11 -0
  130. package/dist/plugs/rmf.mjs +25 -20
  131. package/dist/plugs/rmf.mjs.map +1 -1
  132. package/{types → dist}/plugs/tsc/compiler.d.ts +1 -1
  133. package/{types → dist}/plugs/tsc/options.d.ts +1 -1
  134. package/{types → dist}/plugs/tsc/report.d.ts +2 -2
  135. package/dist/plugs/tsc/runner.cjs +12 -11
  136. package/dist/plugs/tsc/runner.cjs.map +1 -1
  137. package/dist/plugs/tsc/runner.d.ts +8 -0
  138. package/dist/plugs/tsc/runner.mjs +12 -11
  139. package/dist/plugs/tsc/runner.mjs.map +1 -1
  140. package/dist/plugs/tsc.cjs +7 -0
  141. package/dist/plugs/tsc.cjs.map +6 -0
  142. package/dist/plugs/tsc.d.ts +36 -0
  143. package/dist/plugs/tsc.mjs +15 -0
  144. package/dist/plugs/tsc.mjs.map +6 -0
  145. package/dist/plugs.cjs +3 -5
  146. package/dist/plugs.cjs.map +1 -1
  147. package/dist/plugs.d.ts +10 -0
  148. package/dist/plugs.mjs +3 -5
  149. package/dist/plugs.mjs.map +1 -1
  150. package/dist/types.cjs +19 -0
  151. package/dist/types.cjs.map +6 -0
  152. package/dist/types.d.ts +72 -0
  153. package/dist/types.mjs +1 -0
  154. package/dist/types.mjs.map +6 -0
  155. package/{types → dist}/utils/asyncfs.d.ts +0 -0
  156. package/dist/utils/caller.cjs +8 -11
  157. package/dist/utils/caller.cjs.map +2 -2
  158. package/dist/utils/caller.d.ts +2 -0
  159. package/dist/utils/caller.mjs +8 -11
  160. package/dist/utils/caller.mjs.map +2 -2
  161. package/{types → dist}/utils/match.d.ts +0 -0
  162. package/dist/utils/options.cjs +4 -6
  163. package/dist/utils/options.cjs.map +1 -1
  164. package/dist/utils/options.d.ts +16 -0
  165. package/dist/utils/options.mjs +4 -6
  166. package/dist/utils/options.mjs.map +1 -1
  167. package/{types → dist}/utils/walk.d.ts +2 -2
  168. package/extra/cli.mjs +31 -20
  169. package/extra/ts-loader.mjs +6 -5
  170. package/package.json +10 -10
  171. package/src/async.ts +27 -19
  172. package/src/files.ts +6 -30
  173. package/src/fork.ts +35 -76
  174. package/src/helpers.ts +89 -101
  175. package/src/index.ts +10 -15
  176. package/src/log/colors.ts +4 -3
  177. package/src/log/emit.ts +4 -4
  178. package/src/log/logger.ts +12 -4
  179. package/src/log/options.ts +1 -1
  180. package/src/log/report.ts +10 -24
  181. package/src/log/spinner.ts +3 -3
  182. package/src/log.ts +9 -9
  183. package/src/paths.ts +1 -1
  184. package/src/pipe.ts +191 -178
  185. package/src/plugs/copy.ts +40 -31
  186. package/src/plugs/coverage/analysis.ts +4 -4
  187. package/src/plugs/coverage/report.ts +9 -6
  188. package/src/plugs/coverage.ts +68 -55
  189. package/src/plugs/debug.ts +22 -27
  190. package/src/plugs/esbuild/fix-extensions.ts +2 -2
  191. package/src/plugs/esbuild.ts +42 -46
  192. package/src/plugs/eslint/runner.ts +16 -31
  193. package/src/plugs/eslint.ts +42 -0
  194. package/src/plugs/exec.ts +93 -82
  195. package/src/plugs/filter.ts +42 -27
  196. package/src/plugs/mocha/reporter.ts +19 -5
  197. package/src/plugs/mocha/runner.ts +12 -38
  198. package/src/plugs/mocha.ts +41 -0
  199. package/src/plugs/rmf.ts +21 -25
  200. package/src/plugs/tsc/compiler.ts +1 -1
  201. package/src/plugs/tsc/options.ts +2 -2
  202. package/src/plugs/tsc/report.ts +2 -2
  203. package/src/plugs/tsc/runner.ts +24 -30
  204. package/src/plugs/tsc.ts +45 -0
  205. package/src/plugs.ts +10 -25
  206. package/src/types.ts +123 -0
  207. package/src/utils/caller.ts +11 -22
  208. package/src/utils/options.ts +49 -17
  209. package/src/utils/walk.ts +4 -4
  210. package/dist/run.cjs +0 -90
  211. package/dist/run.cjs.map +0 -6
  212. package/dist/run.mjs +0 -65
  213. package/dist/run.mjs.map +0 -6
  214. package/dist/task.cjs.map +0 -6
  215. package/dist/task.mjs +0 -14
  216. package/dist/task.mjs.map +0 -6
  217. package/src/run.ts +0 -159
  218. package/src/task.ts +0 -26
  219. package/types/async.d.ts +0 -20
  220. package/types/build.d.ts +0 -56
  221. package/types/fork.d.ts +0 -57
  222. package/types/helpers.d.ts +0 -43
  223. package/types/index.d.ts +0 -14
  224. package/types/pipe.d.ts +0 -152
  225. package/types/plugs/copy.d.ts +0 -27
  226. package/types/plugs/coverage.d.ts +0 -46
  227. package/types/plugs/debug.d.ts +0 -14
  228. package/types/plugs/esbuild.d.ts +0 -23
  229. package/types/plugs/eslint/runner.d.ts +0 -22
  230. package/types/plugs/exec.d.ts +0 -90
  231. package/types/plugs/filter.d.ts +0 -23
  232. package/types/plugs/rmf.d.ts +0 -15
  233. package/types/plugs/tsc/runner.d.ts +0 -13
  234. package/types/plugs.d.ts +0 -17
  235. package/types/run.d.ts +0 -89
  236. package/types/task.d.ts +0 -15
  237. package/types/utils/caller.d.ts +0 -7
  238. package/types/utils/options.d.ts +0 -15
package/dist/pipe.cjs.map CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/pipe.ts"],
4
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAuB;AA4BhB,IAAe,OAAf,MAAoC;AAG3C;AAIO,IAAM,WAAN,cAAoD,KAA2B;AAAA,EAC3E;AAAA,EACA;AAAA,EAET,YAAY,OAAuB,KAAU;AAC3C,UAAM;AACN,SAAK,WAAW,QAAQ,QAAQ,KAAK;AACrC,SAAK,OAAO;AAAA,EACd;AAAA,EAEA,KAAkC,KAAmD;AACnF,UAAM,OAAO,OAAO,QAAQ,aAAa,EAAE,MAAM,IAAI,IAAI;AACzD,UAAM,UAAU,KAAK,SAAS,KAAK,CAAC,UAAU;AAC5C,gCAAO,OAAO,kCAAkC;AAChD,aAAO,KAAK,KAAK,OAAO,KAAK,IAAI;AAAA,IACnC,CAAC;AACD,WAAO,IAAI,SAAS,SAAS,KAAK,IAAI;AAAA,EACxC;AAAA,EAEA,KACI,aACA,YACgB;AAClB,WAAO,KAAK,SAAS,KAAK,aAAa,UAAU;AAAA,EACnD;AAAA,EAEA,MACI,YACe;AACjB,WAAO,KAAK,SAAS,MAAM,UAAU;AAAA,EACvC;AAAA,EAEA,QACI,WACU;AACZ,WAAO,KAAK,SAAS,QAAQ,SAAS;AAAA,EACxC;AAAA,EAEA,CAAC,OAAO,eAAe;AACzB;AA+IO,SAAS,QAAmC,MAAgB,MAAe;AAGhF,WAAS,UAAsB,MAA8C;AAE3E,WAAO,KAAK,KAAK,IAAI,KAAK,GAAG,IAAI,CAAQ;AAAA,EAC3C;AAGA,SAAO,eAAe,QAAQ,QAAQ,EAAE,OAAO,KAAK,CAAC;AAGrD,SAAO,eAAe,KAAK,WAAW,MAAM,EAAE,OAAO,OAAO,CAAC;AAC/D;",
4
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,iBAAkC;AAClC,mBAAiG;AAEjG,kBAA4B;AAC5B,kBAAoB;AA+Bb,IAAM,UAAN,MAAc;AAAA,EAMnB,YAEoB,WAEA,UAClB;AAHkB;AAEA;AAElB,SAAK,eAAW,gCAAkB,SAAS;AAC3C,SAAK,UAAM,sBAAU,QAAQ;AAAA,EAC/B;AAAA,EAZgB;AAAA,EAEA;AAAA,EAYhB,QAAQ,SAAiB,OAA+B;AAEtD,QAAI,QAAQ,KAAK,WAAW,GAAG,GAAG;AAEhC,YAAM,aAAa,KAAK,UAAU,CAAC,EAAE,MAAM,eAAG,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AACjE,iBAAO,kCAAoB,KAAK,UAAU,GAAG,YAAY,GAAG,KAAK;AAAA,IACnE;AAGA,QAAI,CAAE;AAAM,iBAAO,yCAA2B;AAG9C,eAAO,sCAAoB,yCAA2B,GAAG,MAAM,GAAG,KAAK;AAAA,EACzE;AACF;AAUA,IAAe,YAAf,MAAyB;AAEzB;AAMO,IAAe,OAAf,cAA4B,UAAU;AAO7C;AAyGO,SAAS,QAGd,MAAY,MAAkB;AAE9B,WAAS,QAAyB,MAAuD;AAEvF,WAAO,KAAK,KAAK,IAAI,KAAK,GAAG,IAAI,CAAC;AAAA,EACpC;AAGA,SAAO,eAAe,MAAM,QAAQ,EAAE,OAAO,KAAK,CAAC;AAGnD,SAAO,eAAe,UAAU,WAAW,MAAM,EAAE,OAAO,KAAK,CAAC;AAClE;AAmBO,SAAS,eACZ,UACA,YACI;AAEN,QAAM,OAAO,cAAc,wBAAY;AAAA,IACrC,eAAe,MAAa;AAC1B,YAAM,YAAY,IAAI;AAAA,IACxB;AAAA,EACF;AAGA,UAAQ,UAAU,IAAI;AACxB;",
5
5
  "names": []
6
6
  }
package/dist/pipe.d.ts ADDED
@@ -0,0 +1,182 @@
1
+ import type { Files } from './files';
2
+ import { Logger } from './log';
3
+ import { AbsolutePath } from './paths';
4
+ /** A convenience type indicating what can be returned by a {@link Plug}. */
5
+ export declare type PlugResult = Files | undefined | void;
6
+ /**
7
+ * The {@link Plug} interface describes _build plugin_.
8
+ *
9
+ * A {@link Plug} receives a {@link Files} instance in its input (for example
10
+ * a list of _source `.ts` files_) and optionally produces a possibly different
11
+ * list (for example the _compiled `.js` files_).
12
+ */
13
+ export interface Plug<T extends PlugResult> {
14
+ pipe(files: Files, context: Context): T | Promise<T>;
15
+ }
16
+ /** A type identifying a {@link Plug} as a `function` */
17
+ export declare type PlugFunction<T extends PlugResult> = Plug<T>['pipe'];
18
+ /**
19
+ * The {@link Context} class defines the context in which a {@link Plug}
20
+ * is invoked.
21
+ */
22
+ export declare class Context {
23
+ /** The absolute file name where the task was defined. */
24
+ readonly buildFile: AbsolutePath;
25
+ /** The _name_ of the task associated with this {@link Context}. */
26
+ readonly taskName: string;
27
+ /** The directory of the file where the task was defined (convenience). */
28
+ readonly buildDir: AbsolutePath;
29
+ /** The {@link Logger} associated with this instance. */
30
+ readonly log: Logger;
31
+ constructor(
32
+ /** The absolute file name where the task was defined. */
33
+ buildFile: AbsolutePath,
34
+ /** The _name_ of the task associated with this {@link Context}. */
35
+ taskName: string);
36
+ resolve(path: string, ...paths: string[]): AbsolutePath;
37
+ }
38
+ /**
39
+ * A class that will be extended by {@link Pipe} where {@link install} will
40
+ * add prototype properties from installed {@link Plug}s
41
+ */
42
+ declare abstract class PipeProto {
43
+ abstract plug(plug: Plug<PlugResult>): Pipe | Promise<undefined>;
44
+ }
45
+ /**
46
+ * The {@link Pipe} abstract defines processing pipeline where multiple
47
+ * {@link Plug}s can transform lists of {@link Files}.
48
+ */
49
+ export declare abstract class Pipe extends PipeProto {
50
+ abstract plug(plug: Plug<Files>): Pipe;
51
+ abstract plug(plug: PlugFunction<Files>): Pipe;
52
+ abstract plug(plug: Plug<void | undefined>): Promise<undefined>;
53
+ abstract plug(plug: PlugFunction<void | undefined>): Promise<undefined>;
54
+ abstract run(): Promise<Files>;
55
+ }
56
+ /** The names which can be installed as direct plugs. */
57
+ export declare type PlugName = string & Exclude<keyof Pipe, 'plug' | 'run'>;
58
+ /** The parameters of the plug extension with the given name */
59
+ export declare type PipeParameters<Name extends PlugName> = PipeOverloads<Name>['args'];
60
+ /** Extract arguments and return types from function overloads. */
61
+ declare type PipeOverloads<Name extends PlugName> = Pipe[Name] extends {
62
+ (...args: infer A0): infer R0;
63
+ (...args: infer A1): infer R1;
64
+ (...args: infer A2): infer R2;
65
+ (...args: infer A3): infer R3;
66
+ (...args: infer A4): infer R4;
67
+ } ? (R0 extends (Pipe | Promise<undefined>) ? {
68
+ args: A0;
69
+ ret: R0;
70
+ } : never) | (R1 extends (Pipe | Promise<undefined>) ? {
71
+ args: A1;
72
+ ret: R1;
73
+ } : never) | (R2 extends (Pipe | Promise<undefined>) ? {
74
+ args: A2;
75
+ ret: R2;
76
+ } : never) | (R3 extends (Pipe | Promise<undefined>) ? {
77
+ args: A3;
78
+ ret: R3;
79
+ } : never) | (R4 extends (Pipe | Promise<undefined>) ? {
80
+ args: A4;
81
+ ret: R4;
82
+ } : never) : Pipe[Name] extends {
83
+ (...args: infer A0): infer R0;
84
+ (...args: infer A1): infer R1;
85
+ (...args: infer A2): infer R2;
86
+ (...args: infer A3): infer R3;
87
+ } ? (R0 extends (Pipe | Promise<undefined>) ? {
88
+ args: A0;
89
+ ret: R0;
90
+ } : never) | (R1 extends (Pipe | Promise<undefined>) ? {
91
+ args: A1;
92
+ ret: R1;
93
+ } : never) | (R2 extends (Pipe | Promise<undefined>) ? {
94
+ args: A2;
95
+ ret: R2;
96
+ } : never) | (R3 extends (Pipe | Promise<undefined>) ? {
97
+ args: A3;
98
+ ret: R3;
99
+ } : never) : Pipe[Name] extends {
100
+ (...args: infer A0): infer R0;
101
+ (...args: infer A1): infer R1;
102
+ (...args: infer A2): infer R2;
103
+ } ? (R0 extends (Pipe | Promise<undefined>) ? {
104
+ args: A0;
105
+ ret: R0;
106
+ } : never) | (R1 extends (Pipe | Promise<undefined>) ? {
107
+ args: A1;
108
+ ret: R1;
109
+ } : never) | (R2 extends (Pipe | Promise<undefined>) ? {
110
+ args: A2;
111
+ ret: R2;
112
+ } : never) : Pipe[Name] extends {
113
+ (...args: infer A0): infer R0;
114
+ (...args: infer A1): infer R1;
115
+ } ? (R0 extends (Pipe | Promise<undefined>) ? {
116
+ args: A0;
117
+ ret: R0;
118
+ } : never) | (R1 extends (Pipe | Promise<undefined>) ? {
119
+ args: A1;
120
+ ret: R1;
121
+ } : never) : Pipe[Name] extends {
122
+ (...args: infer A0): infer R0;
123
+ } ? (R0 extends (Pipe | Promise<undefined>) ? {
124
+ args: A0;
125
+ ret: R0;
126
+ } : never) : never;
127
+ /** The parameters of the plug extension with the given name */
128
+ declare type PipeResult<Name extends PlugName> = PipeOverloads<Name>['ret'];
129
+ /**
130
+ * A type defining the correct constructor for a {@link Plug}, inferring
131
+ * argument types and instance type from the definitions in {@link Pipe}.
132
+ */
133
+ declare type PlugConstructor<Name extends PlugName> = PipeResult<Name> extends Pipe ? new (...args: PipeParameters<Name>) => Plug<Files> : PipeResult<Name> extends Promise<undefined> ? new (...args: PipeParameters<Name>) => Plug<void | undefined> : PipeResult<Name> extends (Pipe | Promise<undefined>) ? new (...args: PipeParameters<Name>) => Plug<Files | void | undefined> : never;
134
+ /**
135
+ * Install a {@link Plug} into our {@link Pipe} prototype.
136
+ *
137
+ * This allows our shorthand syntax for well-defined plugs such as:
138
+ *
139
+ * ```
140
+ * find('./src', '*.ts').write('./target')
141
+ * // Nicer and easier than...
142
+ * find('./src', '*.ts').plug(new Write('./target'))
143
+ * ```
144
+ *
145
+ * Use this alongside interface merging like:
146
+ *
147
+ * ```
148
+ * declare module '@plugjs/plug/pipe' {
149
+ * export interface Pipe {
150
+ * write(): Pipe
151
+ * }
152
+ * }
153
+ *
154
+ * install('write', class Write implements Plug {
155
+ * constructorg(...args: PipeParams<'write'>) {
156
+ * // here `args` is automatically inferred by whatever was declared above
157
+ * }
158
+ *
159
+ * // ... the plug implementation lives here
160
+ * })
161
+ * ```
162
+ */
163
+ export declare function install<Name extends PlugName, Ctor extends PlugConstructor<Name>>(name: Name, ctor: Ctor): void;
164
+ /**
165
+ * Install a _forking_ {@link Plug} in the {@link Pipe}, in other words
166
+ * execute the plug in a separate process.
167
+ *
168
+ * As a contract, if the _last non-null_ parameter of the constructor is an
169
+ * object and contains the key `coverageDir`, the process will be forked with
170
+ * the approptiately resolved `NODE_V8_COVERAGE` environment variable.
171
+ *
172
+ * Also, forking plugs require some special attention:
173
+ *
174
+ * * plug functions are not supported, only classes implementing the
175
+ * {@link Plug} interface can be used with this.
176
+ *
177
+ * * the class itself _MUST_ be exported as the _default_ export for the
178
+ * `scriptFile` specified below. This is to simplify interoperability between
179
+ * CommonJS and ESM modules as we use dynamic `import(...)` statements.
180
+ */
181
+ export declare function installForking<Name extends PlugName>(plugName: Name, scriptFile: AbsolutePath): void;
182
+ export {};
package/dist/pipe.mjs CHANGED
@@ -1,44 +1,50 @@
1
1
  // pipe.ts
2
- import { assert } from "./assert.mjs";
3
- var Pipe = class {
4
- };
5
- var PipeImpl = class extends Pipe {
6
- #promise;
7
- #run;
8
- constructor(start, run) {
9
- super();
10
- this.#promise = Promise.resolve(start);
11
- this.#run = run;
12
- }
13
- plug(arg) {
14
- const plug = typeof arg === "function" ? { pipe: arg } : arg;
15
- const promise = this.#promise.then((files) => {
16
- assert(files, "Pipe can not be further extended");
17
- return plug.pipe(files, this.#run);
18
- });
19
- return new PipeImpl(promise, this.#run);
20
- }
21
- then(onfulfilled, onrejected) {
22
- return this.#promise.then(onfulfilled, onrejected);
23
- }
24
- catch(onrejected) {
25
- return this.#promise.catch(onrejected);
2
+ import { getLogger } from "./log.mjs";
3
+ import { getAbsoluteParent, getCurrentWorkingDirectory, resolveAbsolutePath } from "./paths.mjs";
4
+ import { ForkingPlug } from "./fork.mjs";
5
+ import { sep } from "path";
6
+ var Context = class {
7
+ constructor(buildFile, taskName) {
8
+ this.buildFile = buildFile;
9
+ this.taskName = taskName;
10
+ this.buildDir = getAbsoluteParent(buildFile);
11
+ this.log = getLogger(taskName);
26
12
  }
27
- finally(onfinally) {
28
- return this.#promise.finally(onfinally);
13
+ buildDir;
14
+ log;
15
+ resolve(path, ...paths) {
16
+ if (path && path.startsWith("@")) {
17
+ const components = path.substring(1).split(sep).filter((s) => !!s);
18
+ return resolveAbsolutePath(this.buildDir, ...components, ...paths);
19
+ }
20
+ if (!path)
21
+ return getCurrentWorkingDirectory();
22
+ return resolveAbsolutePath(getCurrentWorkingDirectory(), path, ...paths);
29
23
  }
30
- [Symbol.toStringTag] = "Pipe";
24
+ };
25
+ var PipeProto = class {
26
+ };
27
+ var Pipe = class extends PipeProto {
31
28
  };
32
29
  function install(name, ctor) {
33
- function create(...args) {
30
+ function plug(...args) {
34
31
  return this.plug(new ctor(...args));
35
32
  }
36
- Object.defineProperty(create, "name", { value: name });
37
- Object.defineProperty(Pipe.prototype, name, { value: create });
33
+ Object.defineProperty(plug, "name", { value: name });
34
+ Object.defineProperty(PipeProto.prototype, name, { value: plug });
35
+ }
36
+ function installForking(plugName, scriptFile) {
37
+ const ctor = class extends ForkingPlug {
38
+ constructor(...args) {
39
+ super(scriptFile, args);
40
+ }
41
+ };
42
+ install(plugName, ctor);
38
43
  }
39
44
  export {
45
+ Context,
40
46
  Pipe,
41
- PipeImpl,
42
- install
47
+ install,
48
+ installForking
43
49
  };
44
50
  //# sourceMappingURL=pipe.mjs.map
package/dist/pipe.mjs.map CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/pipe.ts"],
4
- "mappings": ";AAAA,SAAS,cAAc;AA4BhB,IAAe,OAAf,MAAoC;AAG3C;AAIO,IAAM,WAAN,cAAoD,KAA2B;AAAA,EAC3E;AAAA,EACA;AAAA,EAET,YAAY,OAAuB,KAAU;AAC3C,UAAM;AACN,SAAK,WAAW,QAAQ,QAAQ,KAAK;AACrC,SAAK,OAAO;AAAA,EACd;AAAA,EAEA,KAAkC,KAAmD;AACnF,UAAM,OAAO,OAAO,QAAQ,aAAa,EAAE,MAAM,IAAI,IAAI;AACzD,UAAM,UAAU,KAAK,SAAS,KAAK,CAAC,UAAU;AAC5C,aAAO,OAAO,kCAAkC;AAChD,aAAO,KAAK,KAAK,OAAO,KAAK,IAAI;AAAA,IACnC,CAAC;AACD,WAAO,IAAI,SAAS,SAAS,KAAK,IAAI;AAAA,EACxC;AAAA,EAEA,KACI,aACA,YACgB;AAClB,WAAO,KAAK,SAAS,KAAK,aAAa,UAAU;AAAA,EACnD;AAAA,EAEA,MACI,YACe;AACjB,WAAO,KAAK,SAAS,MAAM,UAAU;AAAA,EACvC;AAAA,EAEA,QACI,WACU;AACZ,WAAO,KAAK,SAAS,QAAQ,SAAS;AAAA,EACxC;AAAA,EAEA,CAAC,OAAO,eAAe;AACzB;AA+IO,SAAS,QAAmC,MAAgB,MAAe;AAGhF,WAAS,UAAsB,MAA8C;AAE3E,WAAO,KAAK,KAAK,IAAI,KAAK,GAAG,IAAI,CAAQ;AAAA,EAC3C;AAGA,SAAO,eAAe,QAAQ,QAAQ,EAAE,OAAO,KAAK,CAAC;AAGrD,SAAO,eAAe,KAAK,WAAW,MAAM,EAAE,OAAO,OAAO,CAAC;AAC/D;",
4
+ "mappings": ";AACA,SAAS,iBAAyB;AAClC,SAAuB,mBAAmB,4BAA4B,2BAA2B;AAEjG,SAAS,mBAAmB;AAC5B,SAAS,WAAW;AA+Bb,IAAM,UAAN,MAAc;AAAA,EAMnB,YAEoB,WAEA,UAClB;AAHkB;AAEA;AAElB,SAAK,WAAW,kBAAkB,SAAS;AAC3C,SAAK,MAAM,UAAU,QAAQ;AAAA,EAC/B;AAAA,EAZgB;AAAA,EAEA;AAAA,EAYhB,QAAQ,SAAiB,OAA+B;AAEtD,QAAI,QAAQ,KAAK,WAAW,GAAG,GAAG;AAEhC,YAAM,aAAa,KAAK,UAAU,CAAC,EAAE,MAAM,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AACjE,aAAO,oBAAoB,KAAK,UAAU,GAAG,YAAY,GAAG,KAAK;AAAA,IACnE;AAGA,QAAI,CAAE;AAAM,aAAO,2BAA2B;AAG9C,WAAO,oBAAoB,2BAA2B,GAAG,MAAM,GAAG,KAAK;AAAA,EACzE;AACF;AAUA,IAAe,YAAf,MAAyB;AAEzB;AAMO,IAAe,OAAf,cAA4B,UAAU;AAO7C;AAyGO,SAAS,QAGd,MAAY,MAAkB;AAE9B,WAAS,QAAyB,MAAuD;AAEvF,WAAO,KAAK,KAAK,IAAI,KAAK,GAAG,IAAI,CAAC;AAAA,EACpC;AAGA,SAAO,eAAe,MAAM,QAAQ,EAAE,OAAO,KAAK,CAAC;AAGnD,SAAO,eAAe,UAAU,WAAW,MAAM,EAAE,OAAO,KAAK,CAAC;AAClE;AAmBO,SAAS,eACZ,UACA,YACI;AAEN,QAAM,OAAO,cAAc,YAAY;AAAA,IACrC,eAAe,MAAa;AAC1B,YAAM,YAAY,IAAI;AAAA,IACxB;AAAA,EACF;AAGA,UAAQ,UAAU,IAAI;AACxB;",
5
5
  "names": []
6
6
  }
@@ -3,10 +3,6 @@ var __defProp = Object.defineProperty;
3
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
6
  var __copyProps = (to, from, except, desc) => {
11
7
  if (from && typeof from === "object" || typeof from === "function") {
12
8
  for (let key of __getOwnPropNames(from))
@@ -19,57 +15,55 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
19
15
 
20
16
  // plugs/copy.ts
21
17
  var copy_exports = {};
22
- __export(copy_exports, {
23
- Copy: () => Copy
24
- });
25
18
  module.exports = __toCommonJS(copy_exports);
26
19
  var import_assert = require("../assert.cjs");
20
+ var import_files = require("../files.cjs");
27
21
  var import_log = require("../log.cjs");
28
22
  var import_paths = require("../paths.cjs");
29
23
  var import_pipe = require("../pipe.cjs");
30
24
  var import_asyncfs = require("../utils/asyncfs.cjs");
31
- var Copy = class {
25
+ (0, import_pipe.install)("copy", class Copy {
32
26
  constructor(_directory, _options = {}) {
33
27
  this._directory = _directory;
34
28
  this._options = _options;
35
29
  }
36
- async pipe(files, run) {
30
+ async pipe(files, context) {
37
31
  const { mode, dirMode, overwrite, rename = (s) => s } = this._options;
38
32
  const flags = overwrite ? import_asyncfs.fsConstants.COPYFILE_EXCL : 0;
39
33
  const dmode = parseMode(dirMode);
40
34
  const fmode = parseMode(mode);
41
- const builder = run.files(this._directory);
35
+ const directory = context.resolve(this._directory);
36
+ const builder = import_files.Files.builder(directory);
42
37
  for (const [relative, absolute] of files.pathMappings()) {
43
38
  const target = (0, import_paths.resolveAbsolutePath)(builder.directory, rename(relative));
44
39
  if (target === absolute) {
45
- run.log.warn("Cowardly refusing to copy same file", (0, import_log.$p)(absolute));
40
+ context.log.warn("Cowardly refusing to copy same file", (0, import_log.$p)(absolute));
46
41
  continue;
47
42
  }
48
- const directory = (0, import_paths.getAbsoluteParent)(target);
49
- const firstParent = await (0, import_asyncfs.mkdir)(directory, { recursive: true });
43
+ const directory2 = (0, import_paths.getAbsoluteParent)(target);
44
+ const firstParent = await (0, import_asyncfs.mkdir)(directory2, { recursive: true });
50
45
  if (firstParent && dmode !== void 0) {
51
46
  (0, import_paths.assertAbsolutePath)(firstParent);
52
- for (let dir = directory; ; dir = (0, import_paths.getAbsoluteParent)(dir)) {
53
- run.log.trace(`Setting mode ${stringifyMode(dmode)} for directory`, (0, import_log.$p)(dir));
47
+ for (let dir = directory2; ; dir = (0, import_paths.getAbsoluteParent)(dir)) {
48
+ context.log.trace(`Setting mode ${stringifyMode(dmode)} for directory`, (0, import_log.$p)(dir));
54
49
  await (0, import_asyncfs.chmod)(dir, dmode);
55
50
  if (dir === firstParent)
56
51
  break;
57
52
  }
58
53
  }
59
- run.log.trace(`Copying "${(0, import_log.$p)(absolute)}" to "${(0, import_log.$p)(target)}"`);
54
+ context.log.trace(`Copying "${(0, import_log.$p)(absolute)}" to "${(0, import_log.$p)(target)}"`);
60
55
  await (0, import_asyncfs.copyFile)(absolute, target, flags);
61
56
  if (fmode !== void 0) {
62
- run.log.trace(`Setting mode ${stringifyMode(fmode)} for file`, (0, import_log.$p)(target));
57
+ context.log.trace(`Setting mode ${stringifyMode(fmode)} for file`, (0, import_log.$p)(target));
63
58
  await (0, import_asyncfs.chmod)(target, fmode);
64
59
  }
65
- builder.unchecked(relative);
60
+ builder.add(relative);
66
61
  }
67
62
  const result = builder.build();
68
- run.log.info("Copied", result.length, "files to", (0, import_log.$p)(builder.directory));
63
+ context.log.info("Copied", result.length, "files to", (0, import_log.$p)(builder.directory));
69
64
  return result;
70
65
  }
71
- };
72
- (0, import_pipe.install)("copy", Copy);
66
+ });
73
67
  function parseMode(mode) {
74
68
  if (mode === void 0)
75
69
  return void 0;
@@ -82,8 +76,4 @@ function parseMode(mode) {
82
76
  function stringifyMode(mode) {
83
77
  return mode.toString(8).padStart(4, "0");
84
78
  }
85
- // Annotate the CommonJS export names for ESM import in node:
86
- 0 && (module.exports = {
87
- Copy
88
- });
89
79
  //# sourceMappingURL=copy.cjs.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/plugs/copy.ts"],
4
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAuB;AAEvB,iBAAmB;AACnB,mBAA2E;AAC3E,kBAA8B;AAE9B,qBAAoD;AAe7C,IAAM,OAAN,MAAkC;AAAA,EAEvC,YACqB,YACA,WAAwB,CAAC,GAC5C;AAFmB;AACA;AAAA,EAClB;AAAA,EAEH,MAAM,KAAK,OAAc,KAA0B;AAEjD,UAAM,EAAE,MAAM,SAAS,WAAW,SAAS,CAAC,MAAc,EAAE,IAAI,KAAK;AACrE,UAAM,QAAQ,YAAY,2BAAY,gBAAgB;AACtD,UAAM,QAAQ,UAAU,OAAO;AAC/B,UAAM,QAAQ,UAAU,IAAI;AAG5B,UAAM,UAAU,IAAI,MAAM,KAAK,UAAU;AAGzC,eAAW,CAAE,UAAU,QAAS,KAAK,MAAM,aAAa,GAAG;AAGzD,YAAM,aAAS,kCAAoB,QAAQ,WAAW,OAAO,QAAQ,CAAC;AAGtE,UAAI,WAAW,UAAU;AACvB,YAAI,IAAI,KAAK,2CAAuC,eAAG,QAAQ,CAAC;AAChE;AAAA,MACF;AAGA,YAAM,gBAAY,gCAAkB,MAAM;AAC1C,YAAM,cAAc,UAAM,sBAAM,WAAW,EAAE,WAAW,KAAK,CAAC;AAG9D,UAAI,eAAgB,UAAU,QAAY;AACxC,6CAAmB,WAAW;AAC9B,iBAAS,MAAM,aAAa,UAAM,gCAAkB,GAAG,GAAG;AACxD,cAAI,IAAI,MAAM,gBAAgB,cAAc,KAAK,uBAAmB,eAAG,GAAG,CAAC;AAC3E,oBAAM,sBAAM,KAAK,KAAK;AACtB,cAAI,QAAQ;AAAa;AAAA,QAC3B;AAAA,MACF;AAGA,UAAI,IAAI,MAAM,gBAAY,eAAG,QAAQ,cAAU,eAAG,MAAM,IAAI;AAC5D,gBAAM,yBAAS,UAAU,QAAQ,KAAK;AAGtC,UAAI,UAAU,QAAW;AACvB,YAAI,IAAI,MAAM,gBAAgB,cAAc,KAAK,kBAAc,eAAG,MAAM,CAAC;AACzE,kBAAM,sBAAM,QAAQ,KAAK;AAAA,MAC3B;AAGA,cAAQ,UAAU,QAAQ;AAAA,IAC5B;AAEA,UAAM,SAAS,QAAQ,MAAM;AAC7B,QAAI,IAAI,KAAK,UAAU,OAAO,QAAQ,gBAAY,eAAG,QAAQ,SAAS,CAAC;AACvE,WAAO;AAAA,EACT;AACF;AAAA,IAMA,qBAAQ,QAAQ,IAAI;AAapB,SAAS,UAAU,MAAuD;AACxE,MAAI,SAAS;AAAW,WAAO;AAC/B,MAAI,OAAO,SAAS;AAAU,WAAO;AACrC,QAAM,SAAS,SAAS,MAAM,CAAC;AAC/B,4BAAO,CAAE,MAAM,MAAM,GAAG,iBAAiB,OAAO;AAChD,SAAO;AACT;AAEA,SAAS,cAAc,MAAsB;AAC3C,SAAO,KAAK,SAAS,CAAC,EAAE,SAAS,GAAG,GAAG;AACzC;",
5
- "names": []
4
+ "mappings": ";;;;;;;;;;;;;;;;AAAA;AAAA;AAAA,oBAAuB;AACvB,mBAAsB;AACtB,iBAAmB;AACnB,mBAA2E;AAC3E,kBAAuD;AACvD,qBAAoD;AAAA,IAqCpD,qBAAQ,QAAQ,MAAM,KAA4B;AAAA,EAEhD,YACqB,YACA,WAAwB,CAAC,GAC5C;AAFmB;AACA;AAAA,EAClB;AAAA,EAEH,MAAM,KAAK,OAAc,SAAkC;AAEzD,UAAM,EAAE,MAAM,SAAS,WAAW,SAAS,CAAC,MAAc,EAAE,IAAI,KAAK;AACrE,UAAM,QAAQ,YAAY,2BAAY,gBAAgB;AACtD,UAAM,QAAQ,UAAU,OAAO;AAC/B,UAAM,QAAQ,UAAU,IAAI;AAG5B,UAAM,YAAY,QAAQ,QAAQ,KAAK,UAAU;AACjD,UAAM,UAAU,mBAAM,QAAQ,SAAS;AAGvC,eAAW,CAAE,UAAU,QAAS,KAAK,MAAM,aAAa,GAAG;AAGzD,YAAM,aAAS,kCAAoB,QAAQ,WAAW,OAAO,QAAQ,CAAC;AAGtE,UAAI,WAAW,UAAU;AACvB,gBAAQ,IAAI,KAAK,2CAAuC,eAAG,QAAQ,CAAC;AACpE;AAAA,MACF;AAGA,YAAMA,iBAAY,gCAAkB,MAAM;AAC1C,YAAM,cAAc,UAAM,sBAAMA,YAAW,EAAE,WAAW,KAAK,CAAC;AAG9D,UAAI,eAAgB,UAAU,QAAY;AACxC,6CAAmB,WAAW;AAC9B,iBAAS,MAAMA,cAAa,UAAM,gCAAkB,GAAG,GAAG;AACxD,kBAAQ,IAAI,MAAM,gBAAgB,cAAc,KAAK,uBAAmB,eAAG,GAAG,CAAC;AAC/E,oBAAM,sBAAM,KAAK,KAAK;AACtB,cAAI,QAAQ;AAAa;AAAA,QAC3B;AAAA,MACF;AAGA,cAAQ,IAAI,MAAM,gBAAY,eAAG,QAAQ,cAAU,eAAG,MAAM,IAAI;AAChE,gBAAM,yBAAS,UAAU,QAAQ,KAAK;AAGtC,UAAI,UAAU,QAAW;AACvB,gBAAQ,IAAI,MAAM,gBAAgB,cAAc,KAAK,kBAAc,eAAG,MAAM,CAAC;AAC7E,kBAAM,sBAAM,QAAQ,KAAK;AAAA,MAC3B;AAGA,cAAQ,IAAI,QAAQ;AAAA,IACtB;AAEA,UAAM,SAAS,QAAQ,MAAM;AAC7B,YAAQ,IAAI,KAAK,UAAU,OAAO,QAAQ,gBAAY,eAAG,QAAQ,SAAS,CAAC;AAC3E,WAAO;AAAA,EACT;AACF,CAAC;AAMD,SAAS,UAAU,MAAuD;AACxE,MAAI,SAAS;AAAW,WAAO;AAC/B,MAAI,OAAO,SAAS;AAAU,WAAO;AACrC,QAAM,SAAS,SAAS,MAAM,CAAC;AAC/B,4BAAO,CAAE,MAAM,MAAM,GAAG,iBAAiB,OAAO;AAChD,SAAO;AACT;AAEA,SAAS,cAAc,MAAsB;AAC3C,SAAO,KAAK,SAAS,CAAC,EAAE,SAAS,GAAG,GAAG;AACzC;",
5
+ "names": ["directory"]
6
6
  }
@@ -0,0 +1,28 @@
1
+ /** Options for copying files */
2
+ export interface CopyOptions {
3
+ /** Whether to allow overwriting or not (default `false`). */
4
+ overwrite?: boolean;
5
+ /** If specified, use this `mode` (octal string) when creating files. */
6
+ mode?: string | number;
7
+ /** If specified, use this `mode` (octal string) when creating directories. */
8
+ dirMode?: string | number;
9
+ /** If specified, this function will be invoked to rename files. */
10
+ rename?: (relative: string) => string;
11
+ }
12
+ declare module '../pipe' {
13
+ interface Pipe {
14
+ /**
15
+ * Copy the curent {@link Files} to a different directory
16
+ *
17
+ * @param directory The target directory where files will be copied to
18
+ */
19
+ copy(directory: string): Pipe;
20
+ /**
21
+ * Copy the curent {@link Files} to a different directory
22
+ *
23
+ * @param directory The target directory where files will be copied to
24
+ * @param options Extra {@link CopyOptions | options} for the copy operation
25
+ */
26
+ copy(directory: string, options: CopyOptions): Pipe;
27
+ }
28
+ }
@@ -1,51 +1,52 @@
1
1
  // plugs/copy.ts
2
2
  import { assert } from "../assert.mjs";
3
+ import { Files } from "../files.mjs";
3
4
  import { $p } from "../log.mjs";
4
5
  import { assertAbsolutePath, getAbsoluteParent, resolveAbsolutePath } from "../paths.mjs";
5
6
  import { install } from "../pipe.mjs";
6
7
  import { chmod, copyFile, fsConstants, mkdir } from "../utils/asyncfs.mjs";
7
- var Copy = class {
8
+ install("copy", class Copy {
8
9
  constructor(_directory, _options = {}) {
9
10
  this._directory = _directory;
10
11
  this._options = _options;
11
12
  }
12
- async pipe(files, run) {
13
+ async pipe(files, context) {
13
14
  const { mode, dirMode, overwrite, rename = (s) => s } = this._options;
14
15
  const flags = overwrite ? fsConstants.COPYFILE_EXCL : 0;
15
16
  const dmode = parseMode(dirMode);
16
17
  const fmode = parseMode(mode);
17
- const builder = run.files(this._directory);
18
+ const directory = context.resolve(this._directory);
19
+ const builder = Files.builder(directory);
18
20
  for (const [relative, absolute] of files.pathMappings()) {
19
21
  const target = resolveAbsolutePath(builder.directory, rename(relative));
20
22
  if (target === absolute) {
21
- run.log.warn("Cowardly refusing to copy same file", $p(absolute));
23
+ context.log.warn("Cowardly refusing to copy same file", $p(absolute));
22
24
  continue;
23
25
  }
24
- const directory = getAbsoluteParent(target);
25
- const firstParent = await mkdir(directory, { recursive: true });
26
+ const directory2 = getAbsoluteParent(target);
27
+ const firstParent = await mkdir(directory2, { recursive: true });
26
28
  if (firstParent && dmode !== void 0) {
27
29
  assertAbsolutePath(firstParent);
28
- for (let dir = directory; ; dir = getAbsoluteParent(dir)) {
29
- run.log.trace(`Setting mode ${stringifyMode(dmode)} for directory`, $p(dir));
30
+ for (let dir = directory2; ; dir = getAbsoluteParent(dir)) {
31
+ context.log.trace(`Setting mode ${stringifyMode(dmode)} for directory`, $p(dir));
30
32
  await chmod(dir, dmode);
31
33
  if (dir === firstParent)
32
34
  break;
33
35
  }
34
36
  }
35
- run.log.trace(`Copying "${$p(absolute)}" to "${$p(target)}"`);
37
+ context.log.trace(`Copying "${$p(absolute)}" to "${$p(target)}"`);
36
38
  await copyFile(absolute, target, flags);
37
39
  if (fmode !== void 0) {
38
- run.log.trace(`Setting mode ${stringifyMode(fmode)} for file`, $p(target));
40
+ context.log.trace(`Setting mode ${stringifyMode(fmode)} for file`, $p(target));
39
41
  await chmod(target, fmode);
40
42
  }
41
- builder.unchecked(relative);
43
+ builder.add(relative);
42
44
  }
43
45
  const result = builder.build();
44
- run.log.info("Copied", result.length, "files to", $p(builder.directory));
46
+ context.log.info("Copied", result.length, "files to", $p(builder.directory));
45
47
  return result;
46
48
  }
47
- };
48
- install("copy", Copy);
49
+ });
49
50
  function parseMode(mode) {
50
51
  if (mode === void 0)
51
52
  return void 0;
@@ -58,7 +59,4 @@ function parseMode(mode) {
58
59
  function stringifyMode(mode) {
59
60
  return mode.toString(8).padStart(4, "0");
60
61
  }
61
- export {
62
- Copy
63
- };
64
62
  //# sourceMappingURL=copy.mjs.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/plugs/copy.ts"],
4
- "mappings": ";AAAA,SAAS,cAAc;AAEvB,SAAS,UAAU;AACnB,SAAS,oBAAoB,mBAAmB,2BAA2B;AAC3E,SAAS,eAAqB;AAE9B,SAAS,OAAO,UAAU,aAAa,aAAa;AAe7C,IAAM,OAAN,MAAkC;AAAA,EAEvC,YACqB,YACA,WAAwB,CAAC,GAC5C;AAFmB;AACA;AAAA,EAClB;AAAA,EAEH,MAAM,KAAK,OAAc,KAA0B;AAEjD,UAAM,EAAE,MAAM,SAAS,WAAW,SAAS,CAAC,MAAc,EAAE,IAAI,KAAK;AACrE,UAAM,QAAQ,YAAY,YAAY,gBAAgB;AACtD,UAAM,QAAQ,UAAU,OAAO;AAC/B,UAAM,QAAQ,UAAU,IAAI;AAG5B,UAAM,UAAU,IAAI,MAAM,KAAK,UAAU;AAGzC,eAAW,CAAE,UAAU,QAAS,KAAK,MAAM,aAAa,GAAG;AAGzD,YAAM,SAAS,oBAAoB,QAAQ,WAAW,OAAO,QAAQ,CAAC;AAGtE,UAAI,WAAW,UAAU;AACvB,YAAI,IAAI,KAAK,uCAAuC,GAAG,QAAQ,CAAC;AAChE;AAAA,MACF;AAGA,YAAM,YAAY,kBAAkB,MAAM;AAC1C,YAAM,cAAc,MAAM,MAAM,WAAW,EAAE,WAAW,KAAK,CAAC;AAG9D,UAAI,eAAgB,UAAU,QAAY;AACxC,2BAAmB,WAAW;AAC9B,iBAAS,MAAM,aAAa,MAAM,kBAAkB,GAAG,GAAG;AACxD,cAAI,IAAI,MAAM,gBAAgB,cAAc,KAAK,mBAAmB,GAAG,GAAG,CAAC;AAC3E,gBAAM,MAAM,KAAK,KAAK;AACtB,cAAI,QAAQ;AAAa;AAAA,QAC3B;AAAA,MACF;AAGA,UAAI,IAAI,MAAM,YAAY,GAAG,QAAQ,UAAU,GAAG,MAAM,IAAI;AAC5D,YAAM,SAAS,UAAU,QAAQ,KAAK;AAGtC,UAAI,UAAU,QAAW;AACvB,YAAI,IAAI,MAAM,gBAAgB,cAAc,KAAK,cAAc,GAAG,MAAM,CAAC;AACzE,cAAM,MAAM,QAAQ,KAAK;AAAA,MAC3B;AAGA,cAAQ,UAAU,QAAQ;AAAA,IAC5B;AAEA,UAAM,SAAS,QAAQ,MAAM;AAC7B,QAAI,IAAI,KAAK,UAAU,OAAO,QAAQ,YAAY,GAAG,QAAQ,SAAS,CAAC;AACvE,WAAO;AAAA,EACT;AACF;AAMA,QAAQ,QAAQ,IAAI;AAapB,SAAS,UAAU,MAAuD;AACxE,MAAI,SAAS;AAAW,WAAO;AAC/B,MAAI,OAAO,SAAS;AAAU,WAAO;AACrC,QAAM,SAAS,SAAS,MAAM,CAAC;AAC/B,SAAO,CAAE,MAAM,MAAM,GAAG,iBAAiB,OAAO;AAChD,SAAO;AACT;AAEA,SAAS,cAAc,MAAsB;AAC3C,SAAO,KAAK,SAAS,CAAC,EAAE,SAAS,GAAG,GAAG;AACzC;",
5
- "names": []
4
+ "mappings": ";AAAA,SAAS,cAAc;AACvB,SAAS,aAAa;AACtB,SAAS,UAAU;AACnB,SAAS,oBAAoB,mBAAmB,2BAA2B;AAC3E,SAAS,eAA8C;AACvD,SAAS,OAAO,UAAU,aAAa,aAAa;AAqCpD,QAAQ,QAAQ,MAAM,KAA4B;AAAA,EAEhD,YACqB,YACA,WAAwB,CAAC,GAC5C;AAFmB;AACA;AAAA,EAClB;AAAA,EAEH,MAAM,KAAK,OAAc,SAAkC;AAEzD,UAAM,EAAE,MAAM,SAAS,WAAW,SAAS,CAAC,MAAc,EAAE,IAAI,KAAK;AACrE,UAAM,QAAQ,YAAY,YAAY,gBAAgB;AACtD,UAAM,QAAQ,UAAU,OAAO;AAC/B,UAAM,QAAQ,UAAU,IAAI;AAG5B,UAAM,YAAY,QAAQ,QAAQ,KAAK,UAAU;AACjD,UAAM,UAAU,MAAM,QAAQ,SAAS;AAGvC,eAAW,CAAE,UAAU,QAAS,KAAK,MAAM,aAAa,GAAG;AAGzD,YAAM,SAAS,oBAAoB,QAAQ,WAAW,OAAO,QAAQ,CAAC;AAGtE,UAAI,WAAW,UAAU;AACvB,gBAAQ,IAAI,KAAK,uCAAuC,GAAG,QAAQ,CAAC;AACpE;AAAA,MACF;AAGA,YAAMA,aAAY,kBAAkB,MAAM;AAC1C,YAAM,cAAc,MAAM,MAAMA,YAAW,EAAE,WAAW,KAAK,CAAC;AAG9D,UAAI,eAAgB,UAAU,QAAY;AACxC,2BAAmB,WAAW;AAC9B,iBAAS,MAAMA,cAAa,MAAM,kBAAkB,GAAG,GAAG;AACxD,kBAAQ,IAAI,MAAM,gBAAgB,cAAc,KAAK,mBAAmB,GAAG,GAAG,CAAC;AAC/E,gBAAM,MAAM,KAAK,KAAK;AACtB,cAAI,QAAQ;AAAa;AAAA,QAC3B;AAAA,MACF;AAGA,cAAQ,IAAI,MAAM,YAAY,GAAG,QAAQ,UAAU,GAAG,MAAM,IAAI;AAChE,YAAM,SAAS,UAAU,QAAQ,KAAK;AAGtC,UAAI,UAAU,QAAW;AACvB,gBAAQ,IAAI,MAAM,gBAAgB,cAAc,KAAK,cAAc,GAAG,MAAM,CAAC;AAC7E,cAAM,MAAM,QAAQ,KAAK;AAAA,MAC3B;AAGA,cAAQ,IAAI,QAAQ;AAAA,IACtB;AAEA,UAAM,SAAS,QAAQ,MAAM;AAC7B,YAAQ,IAAI,KAAK,UAAU,OAAO,QAAQ,YAAY,GAAG,QAAQ,SAAS,CAAC;AAC3E,WAAO;AAAA,EACT;AACF,CAAC;AAMD,SAAS,UAAU,MAAuD;AACxE,MAAI,SAAS;AAAW,WAAO;AAC/B,MAAI,OAAO,SAAS;AAAU,WAAO;AACrC,QAAM,SAAS,SAAS,MAAM,CAAC;AAC/B,SAAO,CAAE,MAAM,MAAM,GAAG,iBAAiB,OAAO;AAChD,SAAO;AACT;AAEA,SAAS,cAAc,MAAsB;AAC3C,SAAO,KAAK,SAAS,CAAC,EAAE,SAAS,GAAG,GAAG;AACzC;",
5
+ "names": ["directory"]
6
6
  }
@@ -1,6 +1,6 @@
1
1
  import { RawSourceMap } from 'source-map';
2
- import { Logger } from '../../log.js';
3
- import { AbsolutePath } from '../../paths.js';
2
+ import { Logger } from '../../log';
3
+ import { AbsolutePath } from '../../paths';
4
4
  /** Coverage range */
5
5
  export interface V8CoveredRange {
6
6
  /** The offset in the script of the first character covered */
@@ -25,8 +25,8 @@ __export(report_exports, {
25
25
  coverageReport: () => coverageReport
26
26
  });
27
27
  module.exports = __toCommonJS(report_exports);
28
- var import_parser = require("@babel/parser");
29
28
  var import_types = require("@babel/types");
29
+ var import_parser = require("@babel/parser");
30
30
  var import_node_url = require("node:url");
31
31
  var import_log = require("../../log.cjs");
32
32
  var import_asyncfs = require("../../utils/asyncfs.cjs");
@@ -201,7 +201,9 @@ async function coverageReport(analyser, sourceFiles, log) {
201
201
  function updateNodeCoverageResult(result) {
202
202
  const { coveredNodes, missingNodes, ignoredNodes } = result;
203
203
  const totalNodes = result.totalNodes = coveredNodes + missingNodes + ignoredNodes;
204
- if (totalNodes - ignoredNodes) {
204
+ if (totalNodes === 0) {
205
+ result.coverage = 100;
206
+ } else if (totalNodes - ignoredNodes) {
205
207
  result.coverage = Math.floor(100 * coveredNodes / (totalNodes - ignoredNodes));
206
208
  } else {
207
209
  result.coverage = 0;
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/plugs/coverage/report.ts"],
4
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,oBAAsB;AACtB,mBAYO;AACP,sBAA8B;AAC9B,iBAA2B;AAE3B,qBAAyB;AAWlB,IAAM,mBAAmB;AAMzB,IAAM,mBAAmB;AAiDhC,IAAM,eAAe;AAUrB,eAAsB,eAClB,UACA,aACA,KACuB;AAEzB,QAAM,UAA2B,CAAC;AAClC,QAAM,QAA4B;AAAA,IAChC,cAAc;AAAA,IACd,cAAc;AAAA,IACd,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAQA,aAAW,QAAQ,aAAa;AAE9B,UAAM,UAAM,+BAAc,IAAI,EAAE,SAAS;AACzC,UAAM,OAAO,UAAM,yBAAS,MAAM,OAAO;AAEzC,UAAM,WAAO,qBAAM,MAAM;AAAA,MACvB,6BAA6B;AAAA,MAC7B,2BAA2B;AAAA,MAC3B,4BAA4B;AAAA,MAC5B,yBAAyB;AAAA,MACzB,wBAAwB;AAAA,MACxB,eAAe;AAAA,MACf,eAAe;AAAA,MACf,YAAY;AAAA,MACZ,gBAAgB;AAAA,MAChB,WAAW;AAAA,MACX,aAAa;AAAA,MACb,SAAS,CAAE,YAAa;AAAA,MACxB,YAAY;AAAA,MACZ,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,gCAAgC;AAAA,IAClC,CAAC;AAED,UAAM,eAAyB,IAAI,MAAM,KAAK,MAAM,EAAE,KAAK,CAAC;AAC5D,UAAM,eAAmC;AAAA,MACvC,cAAc;AAAA,MACd,cAAc;AAAA,MACd,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,UAAU;AAAA,IACZ;AAGA,UAAM,kBAAkB,CACpB,MACA,UACA,cACO;AACT,UAAI,CAAE;AAAM;AAEZ,UAAI,MAAM,QAAQ,IAAI,GAAG;AACvB,mBAAW,KAAK;AAAM,0BAAgB,GAAG,UAAU,SAAS;AAC5D;AAAA,MACF;AAEA,UAAK,KAAK,SAAS,QAAU,KAAK,OAAO,MAAO;AAC9C,iBAAS,IAAI,KAAK,OAAO,IAAI,KAAK,KAAK,KAAM;AAC3C,uBAAa,KAAK;AAAA,QACpB;AAAA,MACF;AAEA,UAAI,YAAY,kBAAkB;AAChC,qBAAa;AAAA,MACf,WAAW,aAAa,GAAG;AACzB,qBAAa;AAAA,MACf,WAAW,WAAW,GAAG;AACvB,qBAAa;AAAA,MACf;AAEA,UAAI,CAAE;AAAW;AAEjB,YAAM,OAAO,0BAAa,KAAK,SAAS,CAAC;AACzC,iBAAW,OAAO,MAAM;AACtB,cAAM,QAA8B,KAAM;AAC1C,YAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,qBAAW,SAAS,OAAO;AACzB,4BAAgB,OAAO,UAAU,IAAI;AAAA,UACvC;AAAA,QACF,WAAW,OAAO;AAChB,0BAAgB,OAAO,UAAU,IAAI;AAAA,QACvC;AAAA,MACF;AAAA,IACF;AAGA,UAAM,gBAAgB,CAAC,MAAY,UAAwB;AACzD,YAAM,OAAO,0BAAa,KAAK,SAAS,CAAC;AACzC,iBAAW,OAAO,MAAM;AACtB,cAAM,WAAiD,KAAM;AAC7D,YAAI,MAAM,QAAQ,QAAQ,GAAG;AAC3B,qBAAW,SAAS,UAAU;AAC5B,gBAAI;AAAO,wBAAU,OAAO,QAAQ,CAAC;AAAA,UACvC;AAAA,QACF,WAAW,UAAU;AACnB,oBAAU,UAAU,QAAQ,CAAC;AAAA,QAC/B;AAAA,MACF;AAAA,IACF;AAGA,UAAM,kBAAkB,CACpB,WACA,MACA,UACO;AACT,UAAI,WAAW;AACb,wBAAgB,MAAM,kBAAkB,IAAI;AAAA,MAC9C,WAAW,MAAM;AACf,kBAAU,MAAM,KAAK;AAAA,MACvB;AAAA,IACF;AAGA,UAAM,YAAY,CAAC,MAAY,UAAwB;AA3N3D;AA6NM,UAAI,MAAM,IAAI,SAAU,QAAQ,IAAK,GAAG,GAAG,GAAG,KAAK,MAAM,IAAG,UAAK,QAAL,mBAAU,MAAM,SAAQ,UAAK,QAAL,mBAAU,MAAM,QAAQ;AAG5G,cAAI,qBAAO,IAAI;AAAG,eAAO,cAAc,MAAM,KAAK;AAClD,cAAI,wBAAU,IAAI;AAAG,eAAO,cAAc,MAAM,KAAK;AAGrD,YAAM,UAA4B,CAAC;AACnC,iBAAW,WAAW,KAAK,mBAAmB,CAAC,GAAG;AAChD,mBAAW,SAAS,QAAQ,MAAM,SAAS,YAAY,GAAG;AACxD,kBAAQ,KAAK,MAAM,EAAoB;AAAA,QACzC;AAAA,MACF;AAGA,UAAI,QAAQ,SAAS,MAAM;AAAG,eAAO,gBAAgB,MAAM,kBAAkB,IAAI;AAGjF,cAAI,2BAAa,IAAI,GAAG;AACtB,gBAAI,gCAAkB,IAAI;AAAG,iBAAO,gBAAgB,MAAM,kBAAkB,IAAI;AAChF,gBAAI,gCAAkB,IAAI;AAAG,iBAAO,gBAAgB,MAAM,kBAAkB,IAAI;AAChF,gBAAI,4BAAc,IAAI;AAAG,iBAAO,gBAAgB,MAAM,kBAAkB,IAAI;AAG5E,wBAAgB,MAAM,kBAAkB,KAAK;AAC7C,eAAO,cAAc,MAAM,KAAK;AAAA,MAClC;AAGA,cAAI,kCAAoB,IAAI,KAAM,KAAK,eAAe,QAAS;AAC7D,eAAO,gBAAgB,MAAM,kBAAkB,IAAI;AAAA,MACrD;AAEA,cAAI,kCAAoB,IAAI,KAAM,KAAK,eAAe,QAAS;AAC7D,eAAO,gBAAgB,MAAM,kBAAkB,IAAI;AAAA,MACrD;AAGA,UAAI,WAAW;AACf,UAAI,KAAK,KAAK;AACZ,cAAM,EAAE,MAAM,OAAO,IAAI,KAAK,IAAI;AAClC,cAAM,IAAI,SAAS,SAAS,KAAK,MAAM,MAAM;AAC7C,YAAI,KAAK;AAAM,cAAI,KAAK,mBAAmB,KAAK,eAAW,eAAG,IAAI,KAAK,QAAQ,QAAQ;AAAA;AAClF,qBAAW;AAAA,MAClB;AAGA,sBAAgB,MAAM,UAAU,KAAK;AAGrC,cAAI,4BAAc,IAAI,GAAG;AACvB,wBAAgB,QAAQ,SAAS,MAAM,GAAG,KAAK,MAAM,QAAQ,CAAC;AAC9D,wBAAgB,QAAQ,SAAS,IAAI,GAAG,KAAK,YAAY,QAAQ,CAAC;AAClE,wBAAgB,QAAQ,SAAS,MAAM,GAAG,KAAK,WAAW,QAAQ,CAAC;AACnE;AAAA,MACF;AAGA,cAAI,6BAAe,IAAI,GAAG;AACxB,wBAAgB,QAAQ,SAAS,KAAK,GAAG,KAAK,OAAO,QAAQ,CAAC;AAC9D,wBAAgB,QAAQ,SAAS,OAAO,GAAG,KAAK,SAAS,QAAQ,CAAC;AAClE,wBAAgB,QAAQ,SAAS,SAAS,GAAG,KAAK,WAAW,QAAQ,CAAC;AACtE;AAAA,MACF;AAGA,oBAAc,MAAM,KAAK;AAAA,IAC3B;AAGA,iBAAa,KAAK,gBAAgB;AAClC,oBAAgB,KAAK,QAAQ,YAAY,GAAG,IAAI;AAChD,oBAAgB,KAAK,QAAQ,MAAM,GAAG,IAAI;AAG1C,iBAAa,eAAe;AAC5B,iBAAa,eAAe;AAC5B,iBAAa,eAAe;AAG5B,kBAAc,KAAK,SAAS,EAAE;AAW9B,6BAAyB,YAAY;AAErC,UAAM,gBAAgB,aAAa;AACnC,UAAM,gBAAgB,aAAa;AACnC,UAAM,gBAAgB,aAAa;AACnC,UAAM,cAAc,aAAa;AAGjC,YAAQ,QAAQ,EAAE,MAAM,cAAc,aAAa;AAAA,EACrD;AAGA,2BAAyB,KAAK;AAC9B,SAAO,EAAE,SAAS,MAAM;AAC1B;AAEA,SAAS,yBAAyB,QAAkC;AAClE,QAAM,EAAE,cAAc,cAAc,aAAa,IAAI;AACrD,QAAM,aAAa,OAAO,aAAa,eAAe,eAAe;AACrE,MAAI,aAAa,cAAc;AAC7B,WAAO,WAAW,KAAK,MAAO,MAAM,gBAAiB,aAAa,aAAa;AAAA,EACjF,OAAO;AACL,WAAO,WAAW;AAAA,EACpB;AACF;",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
@@ -1,6 +1,6 @@
1
- import { Logger } from '../../log.js';
2
- import { AbsolutePath } from '../../paths.js';
3
- import { CoverageAnalyser } from './analysis.js';
1
+ import { Logger } from '../../log';
2
+ import { AbsolutePath } from '../../paths';
3
+ import { CoverageAnalyser } from './analysis';
4
4
  /**
5
5
  * A constant indicating that coverage was skipped (is irrelevant, for e.g.
6
6
  * comment or typescript definition nodes)
@@ -1,5 +1,4 @@
1
1
  // plugs/coverage/report.ts
2
- import { parse } from "@babel/parser";
3
2
  import {
4
3
  isDeclaration,
5
4
  isExportDeclaration,
@@ -13,6 +12,7 @@ import {
13
12
  isTypeScript,
14
13
  VISITOR_KEYS
15
14
  } from "@babel/types";
15
+ import { parse } from "@babel/parser";
16
16
  import { pathToFileURL } from "node:url";
17
17
  import { $p } from "../../log.mjs";
18
18
  import { readFile } from "../../utils/asyncfs.mjs";
@@ -187,7 +187,9 @@ async function coverageReport(analyser, sourceFiles, log) {
187
187
  function updateNodeCoverageResult(result) {
188
188
  const { coveredNodes, missingNodes, ignoredNodes } = result;
189
189
  const totalNodes = result.totalNodes = coveredNodes + missingNodes + ignoredNodes;
190
- if (totalNodes - ignoredNodes) {
190
+ if (totalNodes === 0) {
191
+ result.coverage = 100;
192
+ } else if (totalNodes - ignoredNodes) {
191
193
  result.coverage = Math.floor(100 * coveredNodes / (totalNodes - ignoredNodes));
192
194
  } else {
193
195
  result.coverage = 0;
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/plugs/coverage/report.ts"],
4
- "mappings": "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",
4
+ "mappings": ";AACA;AAAA,EACW;AAAA,EACT;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,OACK;AAEP,SAAS,aAAa;AACtB,SAAS,qBAAqB;AAC9B,SAAS,UAAkB;AAE3B,SAAS,gBAAgB;AAWlB,IAAM,mBAAmB;AAMzB,IAAM,mBAAmB;AAiDhC,IAAM,eAAe;AAUrB,eAAsB,eAClB,UACA,aACA,KACuB;AAEzB,QAAM,UAA2B,CAAC;AAClC,QAAM,QAA4B;AAAA,IAChC,cAAc;AAAA,IACd,cAAc;AAAA,IACd,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,UAAU;AAAA,EACZ;AAQA,aAAW,QAAQ,aAAa;AAE9B,UAAM,MAAM,cAAc,IAAI,EAAE,SAAS;AACzC,UAAM,OAAO,MAAM,SAAS,MAAM,OAAO;AAEzC,UAAM,OAAO,MAAM,MAAM;AAAA,MACvB,6BAA6B;AAAA,MAC7B,2BAA2B;AAAA,MAC3B,4BAA4B;AAAA,MAC5B,yBAAyB;AAAA,MACzB,wBAAwB;AAAA,MACxB,eAAe;AAAA,MACf,eAAe;AAAA,MACf,YAAY;AAAA,MACZ,gBAAgB;AAAA,MAChB,WAAW;AAAA,MACX,aAAa;AAAA,MACb,SAAS,CAAE,YAAa;AAAA,MACxB,YAAY;AAAA,MACZ,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,gCAAgC;AAAA,IAClC,CAAC;AAED,UAAM,eAAyB,IAAI,MAAM,KAAK,MAAM,EAAE,KAAK,CAAC;AAC5D,UAAM,eAAmC;AAAA,MACvC,cAAc;AAAA,MACd,cAAc;AAAA,MACd,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,UAAU;AAAA,IACZ;AAGA,UAAM,kBAAkB,CACpB,MACA,UACA,cACO;AACT,UAAI,CAAE;AAAM;AAEZ,UAAI,MAAM,QAAQ,IAAI,GAAG;AACvB,mBAAW,KAAK;AAAM,0BAAgB,GAAG,UAAU,SAAS;AAC5D;AAAA,MACF;AAEA,UAAK,KAAK,SAAS,QAAU,KAAK,OAAO,MAAO;AAC9C,iBAAS,IAAI,KAAK,OAAO,IAAI,KAAK,KAAK,KAAM;AAC3C,uBAAa,KAAK;AAAA,QACpB;AAAA,MACF;AAEA,UAAI,YAAY,kBAAkB;AAChC,qBAAa;AAAA,MACf,WAAW,aAAa,GAAG;AACzB,qBAAa;AAAA,MACf,WAAW,WAAW,GAAG;AACvB,qBAAa;AAAA,MACf;AAEA,UAAI,CAAE;AAAW;AAEjB,YAAM,OAAO,aAAa,KAAK,SAAS,CAAC;AACzC,iBAAW,OAAO,MAAM;AACtB,cAAM,QAA8B,KAAM;AAC1C,YAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,qBAAW,SAAS,OAAO;AACzB,4BAAgB,OAAO,UAAU,IAAI;AAAA,UACvC;AAAA,QACF,WAAW,OAAO;AAChB,0BAAgB,OAAO,UAAU,IAAI;AAAA,QACvC;AAAA,MACF;AAAA,IACF;AAGA,UAAM,gBAAgB,CAAC,MAAY,UAAwB;AACzD,YAAM,OAAO,aAAa,KAAK,SAAS,CAAC;AACzC,iBAAW,OAAO,MAAM;AACtB,cAAM,WAAiD,KAAM;AAC7D,YAAI,MAAM,QAAQ,QAAQ,GAAG;AAC3B,qBAAW,SAAS,UAAU;AAC5B,gBAAI;AAAO,wBAAU,OAAO,QAAQ,CAAC;AAAA,UACvC;AAAA,QACF,WAAW,UAAU;AACnB,oBAAU,UAAU,QAAQ,CAAC;AAAA,QAC/B;AAAA,MACF;AAAA,IACF;AAGA,UAAM,kBAAkB,CACpB,WACA,MACA,UACO;AACT,UAAI,WAAW;AACb,wBAAgB,MAAM,kBAAkB,IAAI;AAAA,MAC9C,WAAW,MAAM;AACf,kBAAU,MAAM,KAAK;AAAA,MACvB;AAAA,IACF;AAGA,UAAM,YAAY,CAAC,MAAY,UAAwB;AA5N3D;AA8NM,UAAI,MAAM,IAAI,SAAU,QAAQ,IAAK,GAAG,GAAG,GAAG,KAAK,MAAM,IAAG,UAAK,QAAL,mBAAU,MAAM,SAAQ,UAAK,QAAL,mBAAU,MAAM,QAAQ;AAG5G,UAAI,OAAO,IAAI;AAAG,eAAO,cAAc,MAAM,KAAK;AAClD,UAAI,UAAU,IAAI;AAAG,eAAO,cAAc,MAAM,KAAK;AAGrD,YAAM,UAA4B,CAAC;AACnC,iBAAW,WAAW,KAAK,mBAAmB,CAAC,GAAG;AAChD,mBAAW,SAAS,QAAQ,MAAM,SAAS,YAAY,GAAG;AACxD,kBAAQ,KAAK,MAAM,EAAoB;AAAA,QACzC;AAAA,MACF;AAGA,UAAI,QAAQ,SAAS,MAAM;AAAG,eAAO,gBAAgB,MAAM,kBAAkB,IAAI;AAGjF,UAAI,aAAa,IAAI,GAAG;AACtB,YAAI,kBAAkB,IAAI;AAAG,iBAAO,gBAAgB,MAAM,kBAAkB,IAAI;AAChF,YAAI,kBAAkB,IAAI;AAAG,iBAAO,gBAAgB,MAAM,kBAAkB,IAAI;AAChF,YAAI,cAAc,IAAI;AAAG,iBAAO,gBAAgB,MAAM,kBAAkB,IAAI;AAG5E,wBAAgB,MAAM,kBAAkB,KAAK;AAC7C,eAAO,cAAc,MAAM,KAAK;AAAA,MAClC;AAGA,UAAI,oBAAoB,IAAI,KAAM,KAAK,eAAe,QAAS;AAC7D,eAAO,gBAAgB,MAAM,kBAAkB,IAAI;AAAA,MACrD;AAEA,UAAI,oBAAoB,IAAI,KAAM,KAAK,eAAe,QAAS;AAC7D,eAAO,gBAAgB,MAAM,kBAAkB,IAAI;AAAA,MACrD;AAGA,UAAI,WAAW;AACf,UAAI,KAAK,KAAK;AACZ,cAAM,EAAE,MAAM,OAAO,IAAI,KAAK,IAAI;AAClC,cAAM,IAAI,SAAS,SAAS,KAAK,MAAM,MAAM;AAC7C,YAAI,KAAK;AAAM,cAAI,KAAK,mBAAmB,KAAK,WAAW,GAAG,IAAI,KAAK,QAAQ,QAAQ;AAAA;AAClF,qBAAW;AAAA,MAClB;AAGA,sBAAgB,MAAM,UAAU,KAAK;AAGrC,UAAI,cAAc,IAAI,GAAG;AACvB,wBAAgB,QAAQ,SAAS,MAAM,GAAG,KAAK,MAAM,QAAQ,CAAC;AAC9D,wBAAgB,QAAQ,SAAS,IAAI,GAAG,KAAK,YAAY,QAAQ,CAAC;AAClE,wBAAgB,QAAQ,SAAS,MAAM,GAAG,KAAK,WAAW,QAAQ,CAAC;AACnE;AAAA,MACF;AAGA,UAAI,eAAe,IAAI,GAAG;AACxB,wBAAgB,QAAQ,SAAS,KAAK,GAAG,KAAK,OAAO,QAAQ,CAAC;AAC9D,wBAAgB,QAAQ,SAAS,OAAO,GAAG,KAAK,SAAS,QAAQ,CAAC;AAClE,wBAAgB,QAAQ,SAAS,SAAS,GAAG,KAAK,WAAW,QAAQ,CAAC;AACtE;AAAA,MACF;AAGA,oBAAc,MAAM,KAAK;AAAA,IAC3B;AAGA,iBAAa,KAAK,gBAAgB;AAClC,oBAAgB,KAAK,QAAQ,YAAY,GAAG,IAAI;AAChD,oBAAgB,KAAK,QAAQ,MAAM,GAAG,IAAI;AAG1C,iBAAa,eAAe;AAC5B,iBAAa,eAAe;AAC5B,iBAAa,eAAe;AAG5B,kBAAc,KAAK,SAAS,EAAE;AAW9B,6BAAyB,YAAY;AAErC,UAAM,gBAAgB,aAAa;AACnC,UAAM,gBAAgB,aAAa;AACnC,UAAM,gBAAgB,aAAa;AACnC,UAAM,cAAc,aAAa;AAGjC,YAAQ,QAAQ,EAAE,MAAM,cAAc,aAAa;AAAA,EACrD;AAGA,2BAAyB,KAAK;AAC9B,SAAO,EAAE,SAAS,MAAM;AAC1B;AAEA,SAAS,yBAAyB,QAAkC;AAClE,QAAM,EAAE,cAAc,cAAc,aAAa,IAAI;AACrD,QAAM,aAAa,OAAO,aAAa,eAAe,eAAe;AACrE,MAAI,eAAe,GAAG;AACpB,WAAO,WAAW;AAAA,EACpB,WAAW,aAAa,cAAc;AACpC,WAAO,WAAW,KAAK,MAAO,MAAM,gBAAiB,aAAa,aAAa;AAAA,EACjF,OAAO;AACL,WAAO,WAAW;AAAA,EACpB;AACF;",
5
5
  "names": []
6
6
  }