@plugjs/plug 0.0.26 → 0.1.0

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 (270) hide show
  1. package/dist/{failure.cjs → asserts.cjs} +29 -9
  2. package/dist/asserts.cjs.map +6 -0
  3. package/dist/{failure.d.ts → asserts.d.ts} +4 -1
  4. package/dist/asserts.mjs +51 -0
  5. package/dist/asserts.mjs.map +6 -0
  6. package/dist/async.cjs +2 -2
  7. package/dist/async.cjs.map +1 -1
  8. package/dist/async.mjs +2 -2
  9. package/dist/async.mjs.map +1 -1
  10. package/dist/build.cjs +21 -30
  11. package/dist/build.cjs.map +1 -1
  12. package/dist/build.d.ts +2 -13
  13. package/dist/build.mjs +16 -24
  14. package/dist/build.mjs.map +1 -1
  15. package/dist/files.cjs +3 -3
  16. package/dist/files.cjs.map +1 -1
  17. package/dist/files.mjs +1 -1
  18. package/dist/files.mjs.map +1 -1
  19. package/dist/fork.cjs +35 -30
  20. package/dist/fork.cjs.map +1 -1
  21. package/dist/fork.d.ts +6 -3
  22. package/dist/fork.mjs +18 -13
  23. package/dist/fork.mjs.map +1 -1
  24. package/dist/{utils/asyncfs.cjs → fs.cjs} +6 -6
  25. package/dist/{utils/asyncfs.cjs.map → fs.cjs.map} +2 -2
  26. package/dist/{utils/asyncfs.d.ts → fs.d.ts} +1 -1
  27. package/dist/{utils/asyncfs.mjs → fs.mjs} +3 -3
  28. package/dist/{utils/asyncfs.mjs.map → fs.mjs.map} +2 -2
  29. package/dist/helpers.cjs +21 -14
  30. package/dist/helpers.cjs.map +1 -1
  31. package/dist/helpers.d.ts +24 -1
  32. package/dist/helpers.mjs +13 -7
  33. package/dist/helpers.mjs.map +1 -1
  34. package/dist/index.cjs +36 -6
  35. package/dist/index.cjs.map +1 -1
  36. package/dist/index.d.ts +25 -8
  37. package/dist/index.mjs +20 -5
  38. package/dist/index.mjs.map +1 -1
  39. package/dist/{log → logging}/colors.cjs +1 -1
  40. package/dist/{log → logging}/colors.cjs.map +1 -1
  41. package/dist/{log → logging}/colors.d.ts +0 -0
  42. package/dist/{log → logging}/colors.mjs +1 -1
  43. package/dist/{log → logging}/colors.mjs.map +1 -1
  44. package/dist/{log → logging}/emit.cjs +1 -2
  45. package/dist/{log → logging}/emit.cjs.map +2 -2
  46. package/dist/{log → logging}/emit.d.ts +0 -0
  47. package/dist/{log → logging}/emit.mjs +1 -2
  48. package/dist/{log → logging}/emit.mjs.map +2 -2
  49. package/dist/{log → logging}/levels.cjs +1 -1
  50. package/dist/{log → logging}/levels.cjs.map +1 -1
  51. package/dist/{log → logging}/levels.d.ts +0 -0
  52. package/dist/{log → logging}/levels.mjs +1 -1
  53. package/dist/{log → logging}/levels.mjs.map +1 -1
  54. package/dist/{log → logging}/logger.cjs +13 -7
  55. package/dist/logging/logger.cjs.map +6 -0
  56. package/dist/{log → logging}/logger.d.ts +0 -0
  57. package/dist/{log → logging}/logger.mjs +11 -5
  58. package/dist/logging/logger.mjs.map +6 -0
  59. package/dist/{log → logging}/options.cjs +12 -6
  60. package/dist/logging/options.cjs.map +6 -0
  61. package/dist/{log → logging}/options.d.ts +1 -1
  62. package/dist/{log → logging}/options.mjs +12 -6
  63. package/dist/logging/options.mjs.map +6 -0
  64. package/dist/{log → logging}/report.cjs +10 -9
  65. package/dist/{log → logging}/report.cjs.map +2 -2
  66. package/dist/{log → logging}/report.d.ts +0 -0
  67. package/dist/{log → logging}/report.mjs +7 -6
  68. package/dist/{log → logging}/report.mjs.map +2 -2
  69. package/dist/{log → logging}/spinner.cjs +1 -1
  70. package/dist/{log → logging}/spinner.cjs.map +1 -1
  71. package/dist/{log → logging}/spinner.d.ts +0 -0
  72. package/dist/{log → logging}/spinner.mjs +1 -1
  73. package/dist/{log → logging}/spinner.mjs.map +1 -1
  74. package/dist/{log.cjs → logging.cjs} +12 -12
  75. package/dist/{log.cjs.map → logging.cjs.map} +2 -2
  76. package/dist/{log.d.ts → logging.d.ts} +6 -6
  77. package/dist/{log.mjs → logging.mjs} +9 -9
  78. package/dist/{log.mjs.map → logging.mjs.map} +1 -1
  79. package/dist/paths.cjs +5 -5
  80. package/dist/paths.cjs.map +1 -1
  81. package/dist/paths.mjs +1 -1
  82. package/dist/pipe.cjs +10 -13
  83. package/dist/pipe.cjs.map +1 -1
  84. package/dist/pipe.d.ts +6 -12
  85. package/dist/pipe.mjs +6 -9
  86. package/dist/pipe.mjs.map +1 -1
  87. package/dist/plugs/copy.cjs +14 -14
  88. package/dist/plugs/copy.cjs.map +1 -1
  89. package/dist/plugs/copy.d.ts +1 -1
  90. package/dist/plugs/copy.mjs +3 -3
  91. package/dist/plugs/copy.mjs.map +1 -1
  92. package/dist/plugs/debug.cjs +7 -7
  93. package/dist/plugs/debug.cjs.map +1 -1
  94. package/dist/plugs/debug.d.ts +1 -1
  95. package/dist/plugs/debug.mjs +1 -1
  96. package/dist/plugs/edit.cjs +21 -0
  97. package/dist/plugs/edit.cjs.map +6 -0
  98. package/dist/plugs/edit.d.ts +7 -0
  99. package/dist/plugs/edit.mjs +29 -0
  100. package/dist/plugs/edit.mjs.map +6 -0
  101. package/dist/plugs/esbuild/fix-extensions.cjs +4 -4
  102. package/dist/plugs/esbuild/fix-extensions.cjs.map +1 -1
  103. package/dist/plugs/esbuild/fix-extensions.mjs +1 -1
  104. package/dist/plugs/esbuild/fix-extensions.mjs.map +1 -1
  105. package/dist/plugs/esbuild.cjs +19 -14
  106. package/dist/plugs/esbuild.cjs.map +1 -1
  107. package/dist/plugs/esbuild.d.ts +1 -1
  108. package/dist/plugs/esbuild.mjs +8 -3
  109. package/dist/plugs/esbuild.mjs.map +1 -1
  110. package/dist/plugs/exec.cjs +2 -82
  111. package/dist/plugs/exec.cjs.map +2 -2
  112. package/dist/plugs/exec.d.ts +6 -32
  113. package/dist/plugs/exec.mjs +2 -68
  114. package/dist/plugs/exec.mjs.map +1 -1
  115. package/dist/plugs/filter.d.ts +1 -1
  116. package/dist/plugs/rmf.cjs +5 -5
  117. package/dist/plugs/rmf.cjs.map +1 -1
  118. package/dist/plugs/rmf.d.ts +1 -1
  119. package/dist/plugs/rmf.mjs +2 -2
  120. package/dist/plugs/rmf.mjs.map +1 -1
  121. package/dist/plugs.cjs +1 -4
  122. package/dist/plugs.cjs.map +1 -1
  123. package/dist/plugs.d.ts +1 -4
  124. package/dist/plugs.mjs +1 -4
  125. package/dist/plugs.mjs.map +1 -1
  126. package/dist/types.d.ts +1 -1
  127. package/dist/utils/caller.cjs +8 -5
  128. package/dist/utils/caller.cjs.map +1 -1
  129. package/dist/utils/caller.mjs +6 -3
  130. package/dist/utils/caller.mjs.map +1 -1
  131. package/dist/utils/exec.cjs +102 -0
  132. package/dist/utils/exec.cjs.map +6 -0
  133. package/dist/utils/exec.d.ts +15 -0
  134. package/dist/utils/exec.mjs +71 -0
  135. package/dist/utils/exec.mjs.map +6 -0
  136. package/dist/utils/walk.cjs +7 -7
  137. package/dist/utils/walk.cjs.map +1 -1
  138. package/dist/utils/walk.mjs +2 -2
  139. package/dist/utils/walk.mjs.map +1 -1
  140. package/dist/{plugs/tsc.cjs → utils.cjs} +9 -7
  141. package/dist/utils.cjs.map +6 -0
  142. package/dist/utils.d.ts +4 -0
  143. package/dist/utils.mjs +6 -0
  144. package/dist/utils.mjs.map +6 -0
  145. package/extra/cli.mjs +26 -5
  146. package/extra/ts-loader.mjs +2 -2
  147. package/package.json +90 -15
  148. package/src/{assert.ts → asserts.ts} +36 -1
  149. package/src/async.ts +3 -1
  150. package/src/files.ts +1 -1
  151. package/src/fork.ts +19 -11
  152. package/src/{utils/asyncfs.ts → fs.ts} +1 -1
  153. package/src/helpers.ts +40 -8
  154. package/src/index.ts +30 -8
  155. package/src/{log → logging}/colors.ts +0 -0
  156. package/src/{log → logging}/emit.ts +0 -1
  157. package/src/{log → logging}/levels.ts +0 -0
  158. package/src/{log → logging}/logger.ts +13 -4
  159. package/src/{log → logging}/options.ts +11 -7
  160. package/src/{log → logging}/report.ts +10 -9
  161. package/src/{log → logging}/spinner.ts +0 -0
  162. package/src/{log.ts → logging.ts} +7 -7
  163. package/src/paths.ts +1 -1
  164. package/src/pipe.ts +13 -20
  165. package/src/plugs/copy.ts +4 -4
  166. package/src/plugs/debug.ts +2 -2
  167. package/src/plugs/edit.ts +34 -0
  168. package/src/plugs/esbuild/fix-extensions.ts +2 -2
  169. package/src/plugs/esbuild.ts +13 -7
  170. package/src/plugs/exec.ts +8 -129
  171. package/src/plugs/filter.ts +1 -1
  172. package/src/plugs/rmf.ts +3 -3
  173. package/src/plugs.ts +1 -13
  174. package/src/types.ts +1 -1
  175. package/src/utils/caller.ts +6 -3
  176. package/src/utils/exec.ts +112 -0
  177. package/src/utils/walk.ts +3 -3
  178. package/src/utils.ts +4 -0
  179. package/types/{webassembly.d.ts → plugjs.d.ts} +7 -1
  180. package/dist/assert.cjs +0 -52
  181. package/dist/assert.cjs.map +0 -6
  182. package/dist/assert.d.ts +0 -4
  183. package/dist/assert.mjs +0 -26
  184. package/dist/assert.mjs.map +0 -6
  185. package/dist/failure.cjs.map +0 -6
  186. package/dist/failure.mjs +0 -33
  187. package/dist/failure.mjs.map +0 -6
  188. package/dist/log/logger.cjs.map +0 -6
  189. package/dist/log/logger.mjs.map +0 -6
  190. package/dist/log/options.cjs.map +0 -6
  191. package/dist/log/options.mjs.map +0 -6
  192. package/dist/plugs/coverage/analysis.cjs +0 -234
  193. package/dist/plugs/coverage/analysis.cjs.map +0 -6
  194. package/dist/plugs/coverage/analysis.d.ts +0 -104
  195. package/dist/plugs/coverage/analysis.mjs +0 -207
  196. package/dist/plugs/coverage/analysis.mjs.map +0 -6
  197. package/dist/plugs/coverage/report.cjs +0 -218
  198. package/dist/plugs/coverage/report.cjs.map +0 -6
  199. package/dist/plugs/coverage/report.d.ts +0 -53
  200. package/dist/plugs/coverage/report.mjs +0 -203
  201. package/dist/plugs/coverage/report.mjs.map +0 -6
  202. package/dist/plugs/coverage.cjs +0 -137
  203. package/dist/plugs/coverage.cjs.map +0 -6
  204. package/dist/plugs/coverage.d.ts +0 -49
  205. package/dist/plugs/coverage.mjs +0 -120
  206. package/dist/plugs/coverage.mjs.map +0 -6
  207. package/dist/plugs/eslint/runner.cjs +0 -91
  208. package/dist/plugs/eslint/runner.cjs.map +0 -6
  209. package/dist/plugs/eslint/runner.d.ts +0 -8
  210. package/dist/plugs/eslint/runner.mjs +0 -68
  211. package/dist/plugs/eslint/runner.mjs.map +0 -6
  212. package/dist/plugs/eslint.cjs +0 -22
  213. package/dist/plugs/eslint.cjs.map +0 -6
  214. package/dist/plugs/eslint.d.ts +0 -34
  215. package/dist/plugs/eslint.mjs +0 -5
  216. package/dist/plugs/eslint.mjs.map +0 -6
  217. package/dist/plugs/mocha/reporter.cjs +0 -159
  218. package/dist/plugs/mocha/reporter.cjs.map +0 -6
  219. package/dist/plugs/mocha/reporter.d.ts +0 -6
  220. package/dist/plugs/mocha/reporter.mjs +0 -127
  221. package/dist/plugs/mocha/reporter.mjs.map +0 -6
  222. package/dist/plugs/mocha/runner.cjs +0 -82
  223. package/dist/plugs/mocha/runner.cjs.map +0 -6
  224. package/dist/plugs/mocha/runner.d.ts +0 -8
  225. package/dist/plugs/mocha/runner.mjs +0 -53
  226. package/dist/plugs/mocha/runner.mjs.map +0 -6
  227. package/dist/plugs/mocha.cjs +0 -22
  228. package/dist/plugs/mocha.cjs.map +0 -6
  229. package/dist/plugs/mocha.d.ts +0 -37
  230. package/dist/plugs/mocha.mjs +0 -5
  231. package/dist/plugs/mocha.mjs.map +0 -6
  232. package/dist/plugs/tsc/compiler.cjs +0 -74
  233. package/dist/plugs/tsc/compiler.cjs.map +0 -6
  234. package/dist/plugs/tsc/compiler.d.ts +0 -24
  235. package/dist/plugs/tsc/compiler.mjs +0 -43
  236. package/dist/plugs/tsc/compiler.mjs.map +0 -6
  237. package/dist/plugs/tsc/options.cjs +0 -82
  238. package/dist/plugs/tsc/options.cjs.map +0 -6
  239. package/dist/plugs/tsc/options.d.ts +0 -8
  240. package/dist/plugs/tsc/options.mjs +0 -51
  241. package/dist/plugs/tsc/options.mjs.map +0 -6
  242. package/dist/plugs/tsc/report.cjs +0 -90
  243. package/dist/plugs/tsc/report.cjs.map +0 -6
  244. package/dist/plugs/tsc/report.d.ts +0 -5
  245. package/dist/plugs/tsc/report.mjs +0 -59
  246. package/dist/plugs/tsc/report.mjs.map +0 -6
  247. package/dist/plugs/tsc/runner.cjs +0 -124
  248. package/dist/plugs/tsc/runner.cjs.map +0 -6
  249. package/dist/plugs/tsc/runner.d.ts +0 -8
  250. package/dist/plugs/tsc/runner.mjs +0 -95
  251. package/dist/plugs/tsc/runner.mjs.map +0 -6
  252. package/dist/plugs/tsc.cjs.map +0 -6
  253. package/dist/plugs/tsc.d.ts +0 -48
  254. package/dist/plugs/tsc.mjs +0 -5
  255. package/dist/plugs/tsc.mjs.map +0 -6
  256. package/src/failure.ts +0 -43
  257. package/src/plugs/coverage/analysis.ts +0 -400
  258. package/src/plugs/coverage/report.ts +0 -345
  259. package/src/plugs/coverage.ts +0 -213
  260. package/src/plugs/eslint/runner.ts +0 -100
  261. package/src/plugs/eslint.ts +0 -42
  262. package/src/plugs/mocha/reporter.ts +0 -178
  263. package/src/plugs/mocha/runner.ts +0 -66
  264. package/src/plugs/mocha.ts +0 -43
  265. package/src/plugs/tsc/compiler.ts +0 -68
  266. package/src/plugs/tsc/options.ts +0 -100
  267. package/src/plugs/tsc/report.ts +0 -77
  268. package/src/plugs/tsc/runner.ts +0 -133
  269. package/src/plugs/tsc.ts +0 -58
  270. package/types/globals.d.ts +0 -15
@@ -1,218 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
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
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
-
20
- // plugs/coverage/report.ts
21
- var report_exports = {};
22
- __export(report_exports, {
23
- COVERAGE_IGNORED: () => COVERAGE_IGNORED,
24
- COVERAGE_SKIPPED: () => COVERAGE_SKIPPED,
25
- coverageReport: () => coverageReport
26
- });
27
- module.exports = __toCommonJS(report_exports);
28
- var import_node_url = require("node:url");
29
- var import_types = require("@babel/types");
30
- var import_parser = require("@babel/parser");
31
- var import_log = require("../../log.cjs");
32
- var import_asyncfs = require("../../utils/asyncfs.cjs");
33
- var COVERAGE_SKIPPED = -2;
34
- var COVERAGE_IGNORED = -1;
35
- var ignoreRegexp = /(coverage|istanbul)\s+ignore\s+(test|if|else|try|catch|finally|next)(\s|$)/g;
36
- async function coverageReport(analyser, sourceFiles, log) {
37
- const results = {};
38
- const nodes = {
39
- coveredNodes: 0,
40
- missingNodes: 0,
41
- ignoredNodes: 0,
42
- totalNodes: 0,
43
- coverage: 0
44
- };
45
- for (const file of sourceFiles) {
46
- const url = (0, import_node_url.pathToFileURL)(file).toString();
47
- const code = await (0, import_asyncfs.readFile)(file, "utf-8");
48
- const tree = (0, import_parser.parse)(code, {
49
- allowImportExportEverywhere: true,
50
- allowAwaitOutsideFunction: true,
51
- allowReturnOutsideFunction: true,
52
- allowSuperOutsideMethod: true,
53
- allowUndeclaredExports: true,
54
- attachComment: true,
55
- errorRecovery: false,
56
- sourceType: "unambiguous",
57
- sourceFilename: file,
58
- startLine: 1,
59
- startColumn: 0,
60
- plugins: ["typescript"],
61
- strictMode: false,
62
- ranges: false,
63
- tokens: false,
64
- createParenthesizedExpressions: true
65
- });
66
- const codeCoverage = new Array(code.length).fill(0);
67
- const nodeCoverage = {
68
- coveredNodes: 0,
69
- missingNodes: 0,
70
- ignoredNodes: 0,
71
- totalNodes: 0,
72
- coverage: 0
73
- };
74
- const setCodeCoverage = (node, coverage, recursive) => {
75
- if (!node)
76
- return;
77
- if (Array.isArray(node)) {
78
- for (const n of node)
79
- setCodeCoverage(n, coverage, recursive);
80
- return;
81
- }
82
- if (node.start != null && node.end != null) {
83
- for (let i = node.start; i < node.end; i++) {
84
- codeCoverage[i] = coverage;
85
- }
86
- }
87
- if (coverage == COVERAGE_IGNORED) {
88
- nodeCoverage.ignoredNodes++;
89
- } else if (coverage === 0) {
90
- nodeCoverage.missingNodes++;
91
- } else if (coverage > 0) {
92
- nodeCoverage.coveredNodes++;
93
- }
94
- if (!recursive)
95
- return;
96
- const keys = import_types.VISITOR_KEYS[node.type] || [];
97
- for (const key of keys) {
98
- const value = node[key];
99
- if (Array.isArray(value)) {
100
- for (const child of value) {
101
- setCodeCoverage(child, coverage, true);
102
- }
103
- } else if (value) {
104
- setCodeCoverage(value, coverage, true);
105
- }
106
- }
107
- };
108
- const visitChildren = (node, depth) => {
109
- const keys = import_types.VISITOR_KEYS[node.type] || [];
110
- for (const key of keys) {
111
- const children = node[key];
112
- if (Array.isArray(children)) {
113
- for (const child of children) {
114
- if (child)
115
- visitNode(child, depth + 1);
116
- }
117
- } else if (children) {
118
- visitNode(children, depth + 1);
119
- }
120
- }
121
- };
122
- const maybeIgnoreNode = (condition, node, depth) => {
123
- if (condition) {
124
- setCodeCoverage(node, COVERAGE_IGNORED, true);
125
- } else if (node) {
126
- visitNode(node, depth);
127
- }
128
- };
129
- const visitNode = (node, depth) => {
130
- var _a, _b;
131
- log.trace("-".padStart(depth * 2 + 1, " "), node.type, `${(_a = node.loc) == null ? void 0 : _a.start.line}:${(_b = node.loc) == null ? void 0 : _b.start.column}`);
132
- if ((0, import_types.isFile)(node))
133
- return visitChildren(node, depth);
134
- if ((0, import_types.isProgram)(node))
135
- return visitChildren(node, depth);
136
- const ignores = [];
137
- for (const comment of node.leadingComments || []) {
138
- for (const match of comment.value.matchAll(ignoreRegexp)) {
139
- ignores.push(match[2]);
140
- }
141
- }
142
- if (ignores.includes("next"))
143
- return setCodeCoverage(node, COVERAGE_IGNORED, true);
144
- if ((0, import_types.isTypeScript)(node)) {
145
- if ((0, import_types.isTSDeclareMethod)(node))
146
- return setCodeCoverage(node, COVERAGE_SKIPPED, true);
147
- if ((0, import_types.isTSTypeReference)(node))
148
- return setCodeCoverage(node, COVERAGE_SKIPPED, true);
149
- if ((0, import_types.isDeclaration)(node))
150
- return setCodeCoverage(node, COVERAGE_SKIPPED, true);
151
- setCodeCoverage(node, COVERAGE_SKIPPED, false);
152
- return visitChildren(node, depth);
153
- }
154
- if ((0, import_types.isExportDeclaration)(node) && node.exportKind === "type") {
155
- return setCodeCoverage(node, COVERAGE_SKIPPED, true);
156
- }
157
- if ((0, import_types.isImportDeclaration)(node) && node.importKind === "type") {
158
- return setCodeCoverage(node, COVERAGE_SKIPPED, true);
159
- }
160
- let coverage = 0;
161
- if (node.loc) {
162
- const { line, column } = node.loc.start;
163
- const c = analyser.coverage(url, line, column);
164
- if (c == null)
165
- log.warn(`No coverage for ${node.type} at ${(0, import_log.$p)(file)}:${line}:${column}`);
166
- else
167
- coverage = c;
168
- }
169
- setCodeCoverage(node, coverage, false);
170
- if ((0, import_types.isIfStatement)(node)) {
171
- maybeIgnoreNode(ignores.includes("test"), node.test, depth + 1);
172
- maybeIgnoreNode(ignores.includes("if"), node.consequent, depth + 1);
173
- maybeIgnoreNode(ignores.includes("else"), node.alternate, depth + 1);
174
- return;
175
- }
176
- if ((0, import_types.isTryStatement)(node)) {
177
- maybeIgnoreNode(ignores.includes("try"), node.block, depth + 1);
178
- maybeIgnoreNode(ignores.includes("catch"), node.handler, depth + 1);
179
- maybeIgnoreNode(ignores.includes("finally"), node.finalizer, depth + 1);
180
- return;
181
- }
182
- visitChildren(node, depth);
183
- };
184
- codeCoverage.fill(COVERAGE_SKIPPED);
185
- setCodeCoverage(tree.program.directives, 0, true);
186
- setCodeCoverage(tree.program.body, 0, true);
187
- nodeCoverage.coveredNodes = 0;
188
- nodeCoverage.missingNodes = 0;
189
- nodeCoverage.ignoredNodes = 0;
190
- visitChildren(tree.program, -1);
191
- updateNodeCoverageResult(nodeCoverage);
192
- nodes.coveredNodes += nodeCoverage.coveredNodes;
193
- nodes.missingNodes += nodeCoverage.missingNodes;
194
- nodes.ignoredNodes += nodeCoverage.ignoredNodes;
195
- nodes.totalNodes += nodeCoverage.totalNodes;
196
- results[file] = { code, codeCoverage, nodeCoverage };
197
- }
198
- updateNodeCoverageResult(nodes);
199
- return { results, nodes };
200
- }
201
- function updateNodeCoverageResult(result) {
202
- const { coveredNodes, missingNodes, ignoredNodes } = result;
203
- const totalNodes = result.totalNodes = coveredNodes + missingNodes + ignoredNodes;
204
- if (totalNodes === 0) {
205
- result.coverage = 100;
206
- } else if (totalNodes - ignoredNodes) {
207
- result.coverage = Math.floor(100 * coveredNodes / (totalNodes - ignoredNodes));
208
- } else {
209
- result.coverage = 0;
210
- }
211
- }
212
- // Annotate the CommonJS export names for ESM import in node:
213
- 0 && (module.exports = {
214
- COVERAGE_IGNORED,
215
- COVERAGE_SKIPPED,
216
- coverageReport
217
- });
218
- //# sourceMappingURL=report.cjs.map
@@ -1,6 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/plugs/coverage/report.ts"],
4
- "mappings": "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",
5
- "names": []
6
- }
@@ -1,53 +0,0 @@
1
- import type { Logger } from '../../log';
2
- import type { AbsolutePath } from '../../paths';
3
- import type { CoverageAnalyser } from './analysis';
4
- /**
5
- * A constant indicating that coverage was skipped (is irrelevant, for e.g.
6
- * comment or typescript definition nodes)
7
- */
8
- export declare const COVERAGE_SKIPPED = -2;
9
- /**
10
- * A constant indicating that coverage was intentionally ignored because of a
11
- * specific "coverage ignore ..." comment
12
- */
13
- export declare const COVERAGE_IGNORED = -1;
14
- /** Node coverage summary */
15
- export interface NodeCoverageResult {
16
- /** Number of _covered_ nodes (good!) */
17
- coveredNodes: number;
18
- /** Number of nodes with _no coverage_ (bad!) */
19
- missingNodes: number;
20
- /** Number of nodes ignored by comments like `coverage ignore xxx` */
21
- ignoredNodes: number;
22
- /** Total number of nodes (sum of `covered`, `missing` and `ignored`) */
23
- totalNodes: number;
24
- /** Percentage of code coverage (covered as a % of total - ignored nodes)*/
25
- coverage: number;
26
- }
27
- /** Per-file coverage result */
28
- export interface CoverageResult {
29
- /** The actual code this coverage is for */
30
- code: string;
31
- /**
32
- * Per _character_ coverage report:
33
- * - `-2`: coverage skipped (comments, typescript declarations, ...)
34
- * - `-1`: coverage ignored (when using `coverage ignore xxx`)
35
- * - `0`: no coverage collected for this character
36
- * - _any number greater than zero_: number of times this was covered
37
- */
38
- codeCoverage: number[];
39
- /** Node coverage summary */
40
- nodeCoverage: NodeCoverageResult;
41
- }
42
- /** Aggregation of {@link CoverageResult} over all files */
43
- export declare type CoverageResults = Record<AbsolutePath, CoverageResult>;
44
- /** Our coverage report, per file */
45
- export interface CoverageReport {
46
- results: CoverageResults;
47
- nodes: NodeCoverageResult;
48
- }
49
- /**
50
- * Analyse coverage for the specified source files, using the data from the
51
- * specified coverage files and produce a {@link CoverageReport}.
52
- */
53
- export declare function coverageReport(analyser: CoverageAnalyser, sourceFiles: AbsolutePath[], log: Logger): Promise<CoverageReport>;
@@ -1,203 +0,0 @@
1
- // plugs/coverage/report.ts
2
- import { pathToFileURL } from "node:url";
3
- import {
4
- isDeclaration,
5
- isExportDeclaration,
6
- isFile,
7
- isIfStatement,
8
- isImportDeclaration,
9
- isProgram,
10
- isTryStatement,
11
- isTSDeclareMethod,
12
- isTSTypeReference,
13
- isTypeScript,
14
- VISITOR_KEYS
15
- } from "@babel/types";
16
- import { parse } from "@babel/parser";
17
- import { $p } from "../../log.mjs";
18
- import { readFile } from "../../utils/asyncfs.mjs";
19
- var COVERAGE_SKIPPED = -2;
20
- var COVERAGE_IGNORED = -1;
21
- var ignoreRegexp = /(coverage|istanbul)\s+ignore\s+(test|if|else|try|catch|finally|next)(\s|$)/g;
22
- async function coverageReport(analyser, sourceFiles, log) {
23
- const results = {};
24
- const nodes = {
25
- coveredNodes: 0,
26
- missingNodes: 0,
27
- ignoredNodes: 0,
28
- totalNodes: 0,
29
- coverage: 0
30
- };
31
- for (const file of sourceFiles) {
32
- const url = pathToFileURL(file).toString();
33
- const code = await readFile(file, "utf-8");
34
- const tree = parse(code, {
35
- allowImportExportEverywhere: true,
36
- allowAwaitOutsideFunction: true,
37
- allowReturnOutsideFunction: true,
38
- allowSuperOutsideMethod: true,
39
- allowUndeclaredExports: true,
40
- attachComment: true,
41
- errorRecovery: false,
42
- sourceType: "unambiguous",
43
- sourceFilename: file,
44
- startLine: 1,
45
- startColumn: 0,
46
- plugins: ["typescript"],
47
- strictMode: false,
48
- ranges: false,
49
- tokens: false,
50
- createParenthesizedExpressions: true
51
- });
52
- const codeCoverage = new Array(code.length).fill(0);
53
- const nodeCoverage = {
54
- coveredNodes: 0,
55
- missingNodes: 0,
56
- ignoredNodes: 0,
57
- totalNodes: 0,
58
- coverage: 0
59
- };
60
- const setCodeCoverage = (node, coverage, recursive) => {
61
- if (!node)
62
- return;
63
- if (Array.isArray(node)) {
64
- for (const n of node)
65
- setCodeCoverage(n, coverage, recursive);
66
- return;
67
- }
68
- if (node.start != null && node.end != null) {
69
- for (let i = node.start; i < node.end; i++) {
70
- codeCoverage[i] = coverage;
71
- }
72
- }
73
- if (coverage == COVERAGE_IGNORED) {
74
- nodeCoverage.ignoredNodes++;
75
- } else if (coverage === 0) {
76
- nodeCoverage.missingNodes++;
77
- } else if (coverage > 0) {
78
- nodeCoverage.coveredNodes++;
79
- }
80
- if (!recursive)
81
- return;
82
- const keys = VISITOR_KEYS[node.type] || [];
83
- for (const key of keys) {
84
- const value = node[key];
85
- if (Array.isArray(value)) {
86
- for (const child of value) {
87
- setCodeCoverage(child, coverage, true);
88
- }
89
- } else if (value) {
90
- setCodeCoverage(value, coverage, true);
91
- }
92
- }
93
- };
94
- const visitChildren = (node, depth) => {
95
- const keys = VISITOR_KEYS[node.type] || [];
96
- for (const key of keys) {
97
- const children = node[key];
98
- if (Array.isArray(children)) {
99
- for (const child of children) {
100
- if (child)
101
- visitNode(child, depth + 1);
102
- }
103
- } else if (children) {
104
- visitNode(children, depth + 1);
105
- }
106
- }
107
- };
108
- const maybeIgnoreNode = (condition, node, depth) => {
109
- if (condition) {
110
- setCodeCoverage(node, COVERAGE_IGNORED, true);
111
- } else if (node) {
112
- visitNode(node, depth);
113
- }
114
- };
115
- const visitNode = (node, depth) => {
116
- var _a, _b;
117
- log.trace("-".padStart(depth * 2 + 1, " "), node.type, `${(_a = node.loc) == null ? void 0 : _a.start.line}:${(_b = node.loc) == null ? void 0 : _b.start.column}`);
118
- if (isFile(node))
119
- return visitChildren(node, depth);
120
- if (isProgram(node))
121
- return visitChildren(node, depth);
122
- const ignores = [];
123
- for (const comment of node.leadingComments || []) {
124
- for (const match of comment.value.matchAll(ignoreRegexp)) {
125
- ignores.push(match[2]);
126
- }
127
- }
128
- if (ignores.includes("next"))
129
- return setCodeCoverage(node, COVERAGE_IGNORED, true);
130
- if (isTypeScript(node)) {
131
- if (isTSDeclareMethod(node))
132
- return setCodeCoverage(node, COVERAGE_SKIPPED, true);
133
- if (isTSTypeReference(node))
134
- return setCodeCoverage(node, COVERAGE_SKIPPED, true);
135
- if (isDeclaration(node))
136
- return setCodeCoverage(node, COVERAGE_SKIPPED, true);
137
- setCodeCoverage(node, COVERAGE_SKIPPED, false);
138
- return visitChildren(node, depth);
139
- }
140
- if (isExportDeclaration(node) && node.exportKind === "type") {
141
- return setCodeCoverage(node, COVERAGE_SKIPPED, true);
142
- }
143
- if (isImportDeclaration(node) && node.importKind === "type") {
144
- return setCodeCoverage(node, COVERAGE_SKIPPED, true);
145
- }
146
- let coverage = 0;
147
- if (node.loc) {
148
- const { line, column } = node.loc.start;
149
- const c = analyser.coverage(url, line, column);
150
- if (c == null)
151
- log.warn(`No coverage for ${node.type} at ${$p(file)}:${line}:${column}`);
152
- else
153
- coverage = c;
154
- }
155
- setCodeCoverage(node, coverage, false);
156
- if (isIfStatement(node)) {
157
- maybeIgnoreNode(ignores.includes("test"), node.test, depth + 1);
158
- maybeIgnoreNode(ignores.includes("if"), node.consequent, depth + 1);
159
- maybeIgnoreNode(ignores.includes("else"), node.alternate, depth + 1);
160
- return;
161
- }
162
- if (isTryStatement(node)) {
163
- maybeIgnoreNode(ignores.includes("try"), node.block, depth + 1);
164
- maybeIgnoreNode(ignores.includes("catch"), node.handler, depth + 1);
165
- maybeIgnoreNode(ignores.includes("finally"), node.finalizer, depth + 1);
166
- return;
167
- }
168
- visitChildren(node, depth);
169
- };
170
- codeCoverage.fill(COVERAGE_SKIPPED);
171
- setCodeCoverage(tree.program.directives, 0, true);
172
- setCodeCoverage(tree.program.body, 0, true);
173
- nodeCoverage.coveredNodes = 0;
174
- nodeCoverage.missingNodes = 0;
175
- nodeCoverage.ignoredNodes = 0;
176
- visitChildren(tree.program, -1);
177
- updateNodeCoverageResult(nodeCoverage);
178
- nodes.coveredNodes += nodeCoverage.coveredNodes;
179
- nodes.missingNodes += nodeCoverage.missingNodes;
180
- nodes.ignoredNodes += nodeCoverage.ignoredNodes;
181
- nodes.totalNodes += nodeCoverage.totalNodes;
182
- results[file] = { code, codeCoverage, nodeCoverage };
183
- }
184
- updateNodeCoverageResult(nodes);
185
- return { results, nodes };
186
- }
187
- function updateNodeCoverageResult(result) {
188
- const { coveredNodes, missingNodes, ignoredNodes } = result;
189
- const totalNodes = result.totalNodes = coveredNodes + missingNodes + ignoredNodes;
190
- if (totalNodes === 0) {
191
- result.coverage = 100;
192
- } else if (totalNodes - ignoredNodes) {
193
- result.coverage = Math.floor(100 * coveredNodes / (totalNodes - ignoredNodes));
194
- } else {
195
- result.coverage = 0;
196
- }
197
- }
198
- export {
199
- COVERAGE_IGNORED,
200
- COVERAGE_SKIPPED,
201
- coverageReport
202
- };
203
- //# sourceMappingURL=report.mjs.map
@@ -1,6 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/plugs/coverage/report.ts"],
4
- "mappings": "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",
5
- "names": []
6
- }
@@ -1,137 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __copyProps = (to, from, except, desc) => {
7
- if (from && typeof from === "object" || typeof from === "function") {
8
- for (let key of __getOwnPropNames(from))
9
- if (!__hasOwnProp.call(to, key) && key !== except)
10
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
11
- }
12
- return to;
13
- };
14
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
15
-
16
- // plugs/coverage.ts
17
- var coverage_exports = {};
18
- module.exports = __toCommonJS(coverage_exports);
19
- var import_node_path = require("node:path");
20
- var import_cov8_html = require("@plugjs/cov8-html");
21
- var import_files = require("../files.cjs");
22
- var import_log = require("../log.cjs");
23
- var import_paths = require("../paths.cjs");
24
- var import_pipe = require("../pipe.cjs");
25
- var import_walk = require("../utils/walk.cjs");
26
- var import_analysis = require("./coverage/analysis.cjs");
27
- var import_report = require("./coverage/report.cjs");
28
- (0, import_pipe.install)("coverage", class Coverage {
29
- constructor(_coverageDir, _options = {}) {
30
- this._coverageDir = _coverageDir;
31
- this._options = _options;
32
- }
33
- async pipe(files, context) {
34
- const coverageDir = context.resolve(this._coverageDir);
35
- const coverageFiles = [];
36
- for await (const file of (0, import_walk.walk)(coverageDir, ["coverage-*.json"])) {
37
- coverageFiles.push((0, import_paths.resolveAbsolutePath)(coverageDir, file));
38
- }
39
- if (coverageFiles.length === 0) {
40
- throw context.log.fail(`No coverage files found in ${(0, import_log.$p)(coverageDir)}`);
41
- }
42
- const sourceFiles = [...files.absolutePaths()];
43
- const ms1 = Date.now();
44
- const analyser = await (0, import_analysis.createAnalyser)(
45
- sourceFiles,
46
- coverageFiles,
47
- this._options.sourceMapBias || "least_upper_bound",
48
- context.log
49
- );
50
- context.log.info("Parsed", coverageFiles.length, "coverage files", (0, import_log.$ms)(Date.now() - ms1));
51
- const ms2 = Date.now();
52
- const report = await (0, import_report.coverageReport)(analyser, sourceFiles, context.log);
53
- context.log.info("Analysed", sourceFiles.length, "source files", (0, import_log.$ms)(Date.now() - ms2));
54
- analyser.destroy();
55
- const {
56
- minimumCoverage = 50,
57
- minimumFileCoverage = minimumCoverage,
58
- optimalCoverage = Math.round((100 + minimumCoverage) / 2),
59
- optimalFileCoverage = Math.round((100 + minimumFileCoverage) / 2)
60
- } = this._options;
61
- let max = 0;
62
- for (const file in report) {
63
- if (file.length > max)
64
- max = file.length;
65
- }
66
- let maxLength = 0;
67
- for (const file in report.results) {
68
- if (file.length > maxLength)
69
- maxLength = file.length;
70
- }
71
- let fileErrors = 0;
72
- let fileWarnings = 0;
73
- const _report = context.log.report("Coverage report");
74
- for (const [_file, result] of Object.entries(report.results)) {
75
- const { coverage, totalNodes } = result.nodeCoverage;
76
- const file = _file;
77
- if (totalNodes === 0) {
78
- _report.annotate(import_log.NOTICE, file, "n/a");
79
- } else if (coverage < minimumFileCoverage) {
80
- _report.annotate(import_log.ERROR, file, `${coverage} %`);
81
- fileErrors++;
82
- } else if (coverage < optimalFileCoverage) {
83
- _report.annotate(import_log.WARN, file, `${coverage} %`);
84
- fileWarnings++;
85
- } else {
86
- _report.annotate(import_log.NOTICE, file, `${coverage} %`);
87
- }
88
- }
89
- if (report.nodes.coverage < minimumCoverage) {
90
- const message = `${(0, import_log.$red)(`${report.nodes.coverage}%`)} does not meet minimum coverage ${(0, import_log.$gry)(`(${minimumCoverage}%)`)}`;
91
- _report.add({ level: import_log.ERROR, message });
92
- } else if (report.nodes.coverage < optimalCoverage) {
93
- const message = `${(0, import_log.$ylw)(`${report.nodes.coverage}%`)} does not meet optimal coverage ${(0, import_log.$gry)(`(${optimalCoverage}%)`)}`;
94
- _report.add({ level: import_log.WARN, message });
95
- }
96
- if (fileErrors) {
97
- const message = `${(0, import_log.$red)(fileErrors)} files do not meet minimum file coverage ${(0, import_log.$gry)(`(${minimumFileCoverage}%)`)}`;
98
- _report.add({ level: import_log.ERROR, message });
99
- }
100
- if (fileWarnings) {
101
- const message = `${(0, import_log.$ylw)(fileWarnings)} files do not meet optimal file coverage ${(0, import_log.$gry)(`(${optimalFileCoverage}%)`)}`;
102
- _report.add({ level: import_log.WARN, message });
103
- }
104
- if (this._options.reportDir == null)
105
- return _report.done(false);
106
- const reportDir = context.resolve(this._options.reportDir);
107
- const builder = import_files.Files.builder(reportDir);
108
- const date = new Date().toISOString();
109
- const thresholds = {
110
- minimumCoverage,
111
- minimumFileCoverage,
112
- optimalCoverage,
113
- optimalFileCoverage
114
- };
115
- await builder.write("report.json", JSON.stringify({ ...report, thresholds, date }));
116
- await builder.write("index.html", import_cov8_html.html);
117
- const results = {};
118
- for (const [rel, abs] of files.pathMappings()) {
119
- results[rel] = report.results[abs];
120
- }
121
- const tree = {};
122
- for (const relative of Object.keys(results)) {
123
- const directories = relative.split(import_node_path.sep);
124
- const file = directories.pop();
125
- let node = tree;
126
- for (const dir of directories) {
127
- node = node[dir] = node[dir] || {};
128
- }
129
- node[file] = relative;
130
- }
131
- const jsonp = JSON.stringify({ ...report, results, thresholds, tree, date });
132
- await builder.write("report.js", `${import_cov8_html.initFunction}(${jsonp});`);
133
- _report.done(false);
134
- return builder.build();
135
- }
136
- });
137
- //# sourceMappingURL=coverage.cjs.map
@@ -1,6 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/plugs/coverage.ts"],
4
- "mappings": ";;;;;;;;;;;;;;;;AAAA;AAAA;AAAA,uBAAoB;AAEpB,uBAAmC;AAEnC,mBAAsB;AACtB,iBAA+D;AAC/D,mBAAoC;AACpC,kBAAwB;AACxB,kBAAqB;AACrB,sBAA+B;AAC/B,oBAA+B;AAAA,IA8D/B,qBAAQ,YAAY,MAAM,SAA4C;AAAA,EAEpE,YACqB,cACA,WAA2C,CAAC,GAC/D;AAFmB;AACA;AAAA,EAClB;AAAA,EAEH,MAAM,KAAK,OAAc,SAA8C;AACrE,UAAM,cAAc,QAAQ,QAAQ,KAAK,YAAY;AACrD,UAAM,gBAAgC,CAAC;AACvC,qBAAiB,YAAQ,kBAAK,aAAa,CAAE,iBAAkB,CAAC,GAAG;AACjE,oBAAc,SAAK,kCAAoB,aAAa,IAAI,CAAC;AAAA,IAC3D;AAEA,QAAI,cAAc,WAAW,GAAG;AAC9B,YAAM,QAAQ,IAAI,KAAK,kCAA8B,eAAG,WAAW,GAAG;AAAA,IACxE;AAEA,UAAM,cAAc,CAAE,GAAG,MAAM,cAAc,CAAE;AAE/C,UAAM,MAAM,KAAK,IAAI;AACrB,UAAM,WAAW,UAAM;AAAA,MACnB;AAAA,MACA;AAAA,MACA,KAAK,SAAS,iBAAiB;AAAA,MAC/B,QAAQ;AAAA,IACZ;AACA,YAAQ,IAAI,KAAK,UAAU,cAAc,QAAQ,sBAAkB,gBAAI,KAAK,IAAI,IAAI,GAAG,CAAC;AAExF,UAAM,MAAM,KAAK,IAAI;AACrB,UAAM,SAAS,UAAM,8BAAe,UAAU,aAAa,QAAQ,GAAG;AACtE,YAAQ,IAAI,KAAK,YAAY,YAAY,QAAQ,oBAAgB,gBAAI,KAAK,IAAI,IAAI,GAAG,CAAC;AAEtF,aAAS,QAAQ;AAEjB,UAAM;AAAA,MACJ,kBAAkB;AAAA,MAClB,sBAAsB;AAAA,MACtB,kBAAkB,KAAK,OAAO,MAAM,mBAAmB,CAAC;AAAA,MACxD,sBAAsB,KAAK,OAAO,MAAM,uBAAuB,CAAC;AAAA,IAClE,IAAI,KAAK;AAET,QAAI,MAAM;AACV,eAAW,QAAQ,QAAQ;AACzB,UAAI,KAAK,SAAS;AAAK,cAAM,KAAK;AAAA,IACpC;AAEA,QAAI,YAAY;AAChB,eAAW,QAAQ,OAAO,SAAS;AACjC,UAAI,KAAK,SAAS;AAAW,oBAAY,KAAK;AAAA,IAChD;AAEA,QAAI,aAAa;AACjB,QAAI,eAAe;AACnB,UAAM,UAAU,QAAQ,IAAI,OAAO,iBAAiB;AAEpD,eAAW,CAAE,OAAO,MAAO,KAAK,OAAO,QAAQ,OAAO,OAAO,GAAG;AAC9D,YAAM,EAAE,UAAU,WAAW,IAAI,OAAO;AACxC,YAAM,OAAO;AAEb,UAAI,eAAe,GAAG;AACpB,gBAAQ,SAAS,mBAAQ,MAAM,KAAK;AAAA,MACtC,WAAW,WAAW,qBAAqB;AACzC,gBAAQ,SAAS,kBAAO,MAAM,GAAG,YAAY;AAC7C;AAAA,MACF,WAAW,WAAW,qBAAqB;AACzC,gBAAQ,SAAS,iBAAM,MAAM,GAAG,YAAY;AAC5C;AAAA,MACF,OAAO;AACL,gBAAQ,SAAS,mBAAQ,MAAM,GAAG,YAAY;AAAA,MAChD;AAAA,IACF;AAEA,QAAI,OAAO,MAAM,WAAW,iBAAiB;AAC3C,YAAM,UAAU,OAAG,iBAAK,GAAG,OAAO,MAAM,WAAW,wCAAoC,iBAAK,IAAI,mBAAmB;AACnH,cAAQ,IAAI,EAAE,OAAO,kBAAO,QAAQ,CAAC;AAAA,IACvC,WAAW,OAAO,MAAM,WAAW,iBAAiB;AAClD,YAAM,UAAU,OAAG,iBAAK,GAAG,OAAO,MAAM,WAAW,wCAAoC,iBAAK,IAAI,mBAAmB;AACnH,cAAQ,IAAI,EAAE,OAAO,iBAAM,QAAQ,CAAC;AAAA,IACtC;AAEA,QAAI,YAAY;AACd,YAAM,UAAU,OAAG,iBAAK,UAAU,iDAA6C,iBAAK,IAAI,uBAAuB;AAC/G,cAAQ,IAAI,EAAE,OAAO,kBAAO,QAAQ,CAAC;AAAA,IACvC;AACA,QAAI,cAAc;AAChB,YAAM,UAAU,OAAG,iBAAK,YAAY,iDAA6C,iBAAK,IAAI,uBAAuB;AACjH,cAAQ,IAAI,EAAE,OAAO,iBAAM,QAAQ,CAAC;AAAA,IACtC;AAGA,QAAI,KAAK,SAAS,aAAa;AAAM,aAAO,QAAQ,KAAK,KAAK;AAG9D,UAAM,YAAY,QAAQ,QAAQ,KAAK,SAAS,SAAS;AACzD,UAAM,UAAU,mBAAM,QAAQ,SAAS;AAGvC,UAAM,OAAO,IAAI,KAAK,EAAE,YAAY;AACpC,UAAM,aAAa;AAAA,MACjB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAGA,UAAM,QAAQ,MAAM,eAAe,KAAK,UAAU,EAAE,GAAG,QAAQ,YAAY,KAAK,CAAC,CAAC;AAGlF,UAAM,QAAQ,MAAM,cAAc,qBAAI;AAGtC,UAAM,UAA0C,CAAC;AACjD,eAAW,CAAE,KAAK,GAAI,KAAK,MAAM,aAAa,GAAG;AAC/C,cAAQ,OAAO,OAAO,QAAQ;AAAA,IAChC;AAEA,UAAM,OAA4B,CAAC;AACnC,eAAW,YAAY,OAAO,KAAK,OAAO,GAAG;AAC3C,YAAM,cAAc,SAAS,MAAM,oBAAG;AACtC,YAAM,OAAO,YAAY,IAAI;AAE7B,UAAI,OAAO;AACX,iBAAW,OAAO,aAAa;AAC7B,eAAO,KAAK,OAAO,KAAK,QAAQ,CAAC;AAAA,MACnC;AAEA,WAAK,QAAQ;AAAA,IACf;AAEA,UAAM,QAAQ,KAAK,UAAU,EAAE,GAAG,QAAQ,SAAS,YAAY,MAAM,KAAK,CAAC;AAC3E,UAAM,QAAQ,MAAM,aAAa,GAAG,iCAAgB,SAAS;AAG7D,YAAQ,KAAK,KAAK;AAGlB,WAAO,QAAQ,MAAM;AAAA,EACvB;AACF,CAAC;",
5
- "names": []
6
- }