@matter/tools 0.11.0-alpha.0-20241005-e3e4e4a7a

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 (414) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +100 -0
  3. package/bin/build.js +10 -0
  4. package/bin/prepare-chip.js +5 -0
  5. package/bin/run.js +7 -0
  6. package/bin/test.js +7 -0
  7. package/bin/version.js +7 -0
  8. package/chip/Dockerfile +23 -0
  9. package/dist/cjs/building/builder.d.ts +35 -0
  10. package/dist/cjs/building/builder.d.ts.map +1 -0
  11. package/dist/cjs/building/builder.js +210 -0
  12. package/dist/cjs/building/builder.js.map +6 -0
  13. package/dist/cjs/building/cli.d.ts +7 -0
  14. package/dist/cjs/building/cli.d.ts.map +1 -0
  15. package/dist/cjs/building/cli.js +100 -0
  16. package/dist/cjs/building/cli.js.map +6 -0
  17. package/dist/cjs/building/error.d.ts +16 -0
  18. package/dist/cjs/building/error.d.ts.map +1 -0
  19. package/dist/cjs/building/error.js +50 -0
  20. package/dist/cjs/building/error.js.map +6 -0
  21. package/dist/cjs/building/graph.d.ts +37 -0
  22. package/dist/cjs/building/graph.d.ts.map +1 -0
  23. package/dist/cjs/building/graph.js +222 -0
  24. package/dist/cjs/building/graph.js.map +6 -0
  25. package/dist/cjs/building/project.d.ts +56 -0
  26. package/dist/cjs/building/project.d.ts.map +1 -0
  27. package/dist/cjs/building/project.js +239 -0
  28. package/dist/cjs/building/project.js.map +6 -0
  29. package/dist/cjs/building/tsconfig.d.ts +16 -0
  30. package/dist/cjs/building/tsconfig.d.ts.map +1 -0
  31. package/dist/cjs/building/tsconfig.js +70 -0
  32. package/dist/cjs/building/tsconfig.js.map +6 -0
  33. package/dist/cjs/building/typescript/context.d.ts +16 -0
  34. package/dist/cjs/building/typescript/context.d.ts.map +1 -0
  35. package/dist/cjs/building/typescript/context.js +82 -0
  36. package/dist/cjs/building/typescript/context.js.map +6 -0
  37. package/dist/cjs/building/typescript/incremental-compiler.d.ts +10 -0
  38. package/dist/cjs/building/typescript/incremental-compiler.d.ts.map +1 -0
  39. package/dist/cjs/building/typescript/incremental-compiler.js +119 -0
  40. package/dist/cjs/building/typescript/incremental-compiler.js.map +6 -0
  41. package/dist/cjs/building/typescript/language-service.d.ts +13 -0
  42. package/dist/cjs/building/typescript/language-service.d.ts.map +1 -0
  43. package/dist/cjs/building/typescript/language-service.js +109 -0
  44. package/dist/cjs/building/typescript/language-service.js.map +6 -0
  45. package/dist/cjs/building/typescript/solution-builder.d.ts +10 -0
  46. package/dist/cjs/building/typescript/solution-builder.d.ts.map +1 -0
  47. package/dist/cjs/building/typescript/solution-builder.js +72 -0
  48. package/dist/cjs/building/typescript/solution-builder.js.map +6 -0
  49. package/dist/cjs/building/typescript.d.ts +13 -0
  50. package/dist/cjs/building/typescript.d.ts.map +1 -0
  51. package/dist/cjs/building/typescript.js +31 -0
  52. package/dist/cjs/building/typescript.js.map +6 -0
  53. package/dist/cjs/index.d.ts +15 -0
  54. package/dist/cjs/index.d.ts.map +1 -0
  55. package/dist/cjs/index.js +32 -0
  56. package/dist/cjs/index.js.map +6 -0
  57. package/dist/cjs/package.json +3 -0
  58. package/dist/cjs/running/cli.d.ts +19 -0
  59. package/dist/cjs/running/cli.d.ts.map +1 -0
  60. package/dist/cjs/running/cli.js +82 -0
  61. package/dist/cjs/running/cli.js.map +6 -0
  62. package/dist/cjs/running/execute.d.ts +8 -0
  63. package/dist/cjs/running/execute.d.ts.map +1 -0
  64. package/dist/cjs/running/execute.js +82 -0
  65. package/dist/cjs/running/execute.js.map +6 -0
  66. package/dist/cjs/testing/chip/pics-file.d.ts +20 -0
  67. package/dist/cjs/testing/chip/pics-file.d.ts.map +1 -0
  68. package/dist/cjs/testing/chip/pics-file.js +79 -0
  69. package/dist/cjs/testing/chip/pics-file.js.map +6 -0
  70. package/dist/cjs/testing/chip.d.ts +60 -0
  71. package/dist/cjs/testing/chip.d.ts.map +1 -0
  72. package/dist/cjs/testing/chip.js +306 -0
  73. package/dist/cjs/testing/chip.js.map +6 -0
  74. package/dist/cjs/testing/cli.d.ts +9 -0
  75. package/dist/cjs/testing/cli.d.ts.map +1 -0
  76. package/dist/cjs/testing/cli.js +117 -0
  77. package/dist/cjs/testing/cli.js.map +6 -0
  78. package/dist/cjs/testing/failure-detail.d.ts +19 -0
  79. package/dist/cjs/testing/failure-detail.d.ts.map +1 -0
  80. package/dist/cjs/testing/failure-detail.js +143 -0
  81. package/dist/cjs/testing/failure-detail.js.map +6 -0
  82. package/dist/cjs/testing/files.d.ts +8 -0
  83. package/dist/cjs/testing/files.d.ts.map +1 -0
  84. package/dist/cjs/testing/files.js +52 -0
  85. package/dist/cjs/testing/files.js.map +6 -0
  86. package/dist/cjs/testing/global-declarations.d.ts +38 -0
  87. package/dist/cjs/testing/global-declarations.d.ts.map +1 -0
  88. package/dist/cjs/testing/global-declarations.js +8 -0
  89. package/dist/cjs/testing/global-declarations.js.map +6 -0
  90. package/dist/cjs/testing/global-definitions.d.ts +7 -0
  91. package/dist/cjs/testing/global-definitions.d.ts.map +1 -0
  92. package/dist/cjs/testing/global-definitions.js +50 -0
  93. package/dist/cjs/testing/global-definitions.js.map +6 -0
  94. package/dist/cjs/testing/mocha.d.ts +36 -0
  95. package/dist/cjs/testing/mocha.d.ts.map +1 -0
  96. package/dist/cjs/testing/mocha.js +155 -0
  97. package/dist/cjs/testing/mocha.js.map +6 -0
  98. package/dist/cjs/testing/mocharc.cjs +68 -0
  99. package/dist/cjs/testing/mocharc.d.cts +7 -0
  100. package/dist/cjs/testing/mocks/crypto.d.ts +7 -0
  101. package/dist/cjs/testing/mocks/crypto.d.ts.map +1 -0
  102. package/dist/cjs/testing/mocks/crypto.js +79 -0
  103. package/dist/cjs/testing/mocks/crypto.js.map +6 -0
  104. package/dist/cjs/testing/mocks/environment.d.ts +7 -0
  105. package/dist/cjs/testing/mocks/environment.d.ts.map +1 -0
  106. package/dist/cjs/testing/mocks/environment.js +7 -0
  107. package/dist/cjs/testing/mocks/environment.js.map +6 -0
  108. package/dist/cjs/testing/mocks/index.d.ts +10 -0
  109. package/dist/cjs/testing/mocks/index.d.ts.map +1 -0
  110. package/dist/cjs/testing/mocks/index.js +27 -0
  111. package/dist/cjs/testing/mocks/index.js.map +6 -0
  112. package/dist/cjs/testing/mocks/logging.d.ts +28 -0
  113. package/dist/cjs/testing/mocks/logging.d.ts.map +1 -0
  114. package/dist/cjs/testing/mocks/logging.js +93 -0
  115. package/dist/cjs/testing/mocks/logging.js.map +6 -0
  116. package/dist/cjs/testing/mocks/time.d.ts +88 -0
  117. package/dist/cjs/testing/mocks/time.d.ts.map +1 -0
  118. package/dist/cjs/testing/mocks/time.js +250 -0
  119. package/dist/cjs/testing/mocks/time.js.map +6 -0
  120. package/dist/cjs/testing/node.d.ts +16 -0
  121. package/dist/cjs/testing/node.d.ts.map +1 -0
  122. package/dist/cjs/testing/node.js +108 -0
  123. package/dist/cjs/testing/node.js.map +6 -0
  124. package/dist/cjs/testing/options.d.ts +19 -0
  125. package/dist/cjs/testing/options.d.ts.map +1 -0
  126. package/dist/cjs/testing/options.js +62 -0
  127. package/dist/cjs/testing/options.js.map +6 -0
  128. package/dist/cjs/testing/reporter.d.ts +50 -0
  129. package/dist/cjs/testing/reporter.d.ts.map +1 -0
  130. package/dist/cjs/testing/reporter.js +137 -0
  131. package/dist/cjs/testing/reporter.js.map +6 -0
  132. package/dist/cjs/testing/runner.d.ts +22 -0
  133. package/dist/cjs/testing/runner.d.ts.map +1 -0
  134. package/dist/cjs/testing/runner.js +116 -0
  135. package/dist/cjs/testing/runner.js.map +6 -0
  136. package/dist/cjs/testing/web.d.ts +8 -0
  137. package/dist/cjs/testing/web.d.ts.map +1 -0
  138. package/dist/cjs/testing/web.js +165 -0
  139. package/dist/cjs/testing/web.js.map +6 -0
  140. package/dist/cjs/util/bootstrap.mjs +105 -0
  141. package/dist/cjs/util/docker.d.ts +27 -0
  142. package/dist/cjs/util/docker.d.ts.map +1 -0
  143. package/dist/cjs/util/docker.js +163 -0
  144. package/dist/cjs/util/docker.js.map +6 -0
  145. package/dist/cjs/util/errors.d.ts +8 -0
  146. package/dist/cjs/util/errors.d.ts.map +1 -0
  147. package/dist/cjs/util/errors.js +55 -0
  148. package/dist/cjs/util/errors.js.map +6 -0
  149. package/dist/cjs/util/index.d.ts +8 -0
  150. package/dist/cjs/util/index.d.ts.map +1 -0
  151. package/dist/cjs/util/index.js +25 -0
  152. package/dist/cjs/util/index.js.map +6 -0
  153. package/dist/cjs/util/node-shims.d.ts +7 -0
  154. package/dist/cjs/util/node-shims.d.ts.map +1 -0
  155. package/dist/cjs/util/node-shims.js +12 -0
  156. package/dist/cjs/util/node-shims.js.map +6 -0
  157. package/dist/cjs/util/package.d.ts +61 -0
  158. package/dist/cjs/util/package.d.ts.map +1 -0
  159. package/dist/cjs/util/package.js +324 -0
  160. package/dist/cjs/util/package.js.map +6 -0
  161. package/dist/cjs/util/progress.d.ts +31 -0
  162. package/dist/cjs/util/progress.d.ts.map +1 -0
  163. package/dist/cjs/util/progress.js +232 -0
  164. package/dist/cjs/util/progress.js.map +6 -0
  165. package/dist/cjs/util/tools-path.cjs +13 -0
  166. package/dist/cjs/util/tools-path.d.cts +7 -0
  167. package/dist/cjs/util/trace-unhandled.d.ts +9 -0
  168. package/dist/cjs/util/trace-unhandled.d.ts.map +1 -0
  169. package/dist/cjs/util/trace-unhandled.js +48 -0
  170. package/dist/cjs/util/trace-unhandled.js.map +6 -0
  171. package/dist/cjs/util/wtf.d.ts +10 -0
  172. package/dist/cjs/util/wtf.d.ts.map +1 -0
  173. package/dist/cjs/util/wtf.js +53 -0
  174. package/dist/cjs/util/wtf.js.map +6 -0
  175. package/dist/cjs/versioning/cli.d.ts +7 -0
  176. package/dist/cjs/versioning/cli.d.ts.map +1 -0
  177. package/dist/cjs/versioning/cli.js +62 -0
  178. package/dist/cjs/versioning/cli.js.map +6 -0
  179. package/dist/cjs/versioning/versioner.d.ts +18 -0
  180. package/dist/cjs/versioning/versioner.d.ts.map +1 -0
  181. package/dist/cjs/versioning/versioner.js +145 -0
  182. package/dist/cjs/versioning/versioner.js.map +6 -0
  183. package/dist/esm/building/builder.d.ts +35 -0
  184. package/dist/esm/building/builder.d.ts.map +1 -0
  185. package/dist/esm/building/builder.js +180 -0
  186. package/dist/esm/building/builder.js.map +6 -0
  187. package/dist/esm/building/cli.d.ts +7 -0
  188. package/dist/esm/building/cli.d.ts.map +1 -0
  189. package/dist/esm/building/cli.js +70 -0
  190. package/dist/esm/building/cli.js.map +6 -0
  191. package/dist/esm/building/error.d.ts +16 -0
  192. package/dist/esm/building/error.d.ts.map +1 -0
  193. package/dist/esm/building/error.js +30 -0
  194. package/dist/esm/building/error.js.map +6 -0
  195. package/dist/esm/building/graph.d.ts +37 -0
  196. package/dist/esm/building/graph.d.ts.map +1 -0
  197. package/dist/esm/building/graph.js +192 -0
  198. package/dist/esm/building/graph.js.map +6 -0
  199. package/dist/esm/building/project.d.ts +56 -0
  200. package/dist/esm/building/project.d.ts.map +1 -0
  201. package/dist/esm/building/project.js +219 -0
  202. package/dist/esm/building/project.js.map +6 -0
  203. package/dist/esm/building/tsconfig.d.ts +16 -0
  204. package/dist/esm/building/tsconfig.d.ts.map +1 -0
  205. package/dist/esm/building/tsconfig.js +50 -0
  206. package/dist/esm/building/tsconfig.js.map +6 -0
  207. package/dist/esm/building/typescript/context.d.ts +16 -0
  208. package/dist/esm/building/typescript/context.d.ts.map +1 -0
  209. package/dist/esm/building/typescript/context.js +68 -0
  210. package/dist/esm/building/typescript/context.js.map +6 -0
  211. package/dist/esm/building/typescript/incremental-compiler.d.ts +10 -0
  212. package/dist/esm/building/typescript/incremental-compiler.d.ts.map +1 -0
  213. package/dist/esm/building/typescript/incremental-compiler.js +99 -0
  214. package/dist/esm/building/typescript/incremental-compiler.js.map +6 -0
  215. package/dist/esm/building/typescript/language-service.d.ts +13 -0
  216. package/dist/esm/building/typescript/language-service.d.ts.map +1 -0
  217. package/dist/esm/building/typescript/language-service.js +99 -0
  218. package/dist/esm/building/typescript/language-service.js.map +6 -0
  219. package/dist/esm/building/typescript/solution-builder.d.ts +10 -0
  220. package/dist/esm/building/typescript/solution-builder.d.ts.map +1 -0
  221. package/dist/esm/building/typescript/solution-builder.js +52 -0
  222. package/dist/esm/building/typescript/solution-builder.js.map +6 -0
  223. package/dist/esm/building/typescript.d.ts +13 -0
  224. package/dist/esm/building/typescript.d.ts.map +1 -0
  225. package/dist/esm/building/typescript.js +11 -0
  226. package/dist/esm/building/typescript.js.map +6 -0
  227. package/dist/esm/index.d.ts +15 -0
  228. package/dist/esm/index.d.ts.map +1 -0
  229. package/dist/esm/index.js +15 -0
  230. package/dist/esm/index.js.map +6 -0
  231. package/dist/esm/package.json +3 -0
  232. package/dist/esm/running/cli.d.ts +19 -0
  233. package/dist/esm/running/cli.d.ts.map +1 -0
  234. package/dist/esm/running/cli.js +62 -0
  235. package/dist/esm/running/cli.js.map +6 -0
  236. package/dist/esm/running/execute.d.ts +8 -0
  237. package/dist/esm/running/execute.d.ts.map +1 -0
  238. package/dist/esm/running/execute.js +52 -0
  239. package/dist/esm/running/execute.js.map +6 -0
  240. package/dist/esm/testing/chip/pics-file.d.ts +20 -0
  241. package/dist/esm/testing/chip/pics-file.d.ts.map +1 -0
  242. package/dist/esm/testing/chip/pics-file.js +59 -0
  243. package/dist/esm/testing/chip/pics-file.js.map +6 -0
  244. package/dist/esm/testing/chip.d.ts +60 -0
  245. package/dist/esm/testing/chip.d.ts.map +1 -0
  246. package/dist/esm/testing/chip.js +286 -0
  247. package/dist/esm/testing/chip.js.map +6 -0
  248. package/dist/esm/testing/cli.d.ts +9 -0
  249. package/dist/esm/testing/cli.d.ts.map +1 -0
  250. package/dist/esm/testing/cli.js +87 -0
  251. package/dist/esm/testing/cli.js.map +6 -0
  252. package/dist/esm/testing/failure-detail.d.ts +19 -0
  253. package/dist/esm/testing/failure-detail.d.ts.map +1 -0
  254. package/dist/esm/testing/failure-detail.js +113 -0
  255. package/dist/esm/testing/failure-detail.js.map +6 -0
  256. package/dist/esm/testing/files.d.ts +8 -0
  257. package/dist/esm/testing/files.d.ts.map +1 -0
  258. package/dist/esm/testing/files.js +32 -0
  259. package/dist/esm/testing/files.js.map +6 -0
  260. package/dist/esm/testing/global-declarations.d.ts +38 -0
  261. package/dist/esm/testing/global-declarations.d.ts.map +1 -0
  262. package/dist/esm/testing/global-declarations.js +7 -0
  263. package/dist/esm/testing/global-declarations.js.map +6 -0
  264. package/dist/esm/testing/global-definitions.d.ts +7 -0
  265. package/dist/esm/testing/global-definitions.d.ts.map +1 -0
  266. package/dist/esm/testing/global-definitions.js +27 -0
  267. package/dist/esm/testing/global-definitions.js.map +6 -0
  268. package/dist/esm/testing/mocha.d.ts +36 -0
  269. package/dist/esm/testing/mocha.d.ts.map +1 -0
  270. package/dist/esm/testing/mocha.js +135 -0
  271. package/dist/esm/testing/mocha.js.map +6 -0
  272. package/dist/esm/testing/mocharc.cjs +68 -0
  273. package/dist/esm/testing/mocharc.d.cts +7 -0
  274. package/dist/esm/testing/mocks/crypto.d.ts +7 -0
  275. package/dist/esm/testing/mocks/crypto.d.ts.map +1 -0
  276. package/dist/esm/testing/mocks/crypto.js +59 -0
  277. package/dist/esm/testing/mocks/crypto.js.map +6 -0
  278. package/dist/esm/testing/mocks/environment.d.ts +7 -0
  279. package/dist/esm/testing/mocks/environment.d.ts.map +1 -0
  280. package/dist/esm/testing/mocks/environment.js +6 -0
  281. package/dist/esm/testing/mocks/environment.js.map +6 -0
  282. package/dist/esm/testing/mocks/index.d.ts +10 -0
  283. package/dist/esm/testing/mocks/index.d.ts.map +1 -0
  284. package/dist/esm/testing/mocks/index.js +10 -0
  285. package/dist/esm/testing/mocks/index.js.map +6 -0
  286. package/dist/esm/testing/mocks/logging.d.ts +28 -0
  287. package/dist/esm/testing/mocks/logging.d.ts.map +1 -0
  288. package/dist/esm/testing/mocks/logging.js +63 -0
  289. package/dist/esm/testing/mocks/logging.js.map +6 -0
  290. package/dist/esm/testing/mocks/time.d.ts +88 -0
  291. package/dist/esm/testing/mocks/time.d.ts.map +1 -0
  292. package/dist/esm/testing/mocks/time.js +230 -0
  293. package/dist/esm/testing/mocks/time.js.map +6 -0
  294. package/dist/esm/testing/node.d.ts +16 -0
  295. package/dist/esm/testing/node.d.ts.map +1 -0
  296. package/dist/esm/testing/node.js +78 -0
  297. package/dist/esm/testing/node.js.map +6 -0
  298. package/dist/esm/testing/options.d.ts +19 -0
  299. package/dist/esm/testing/options.d.ts.map +1 -0
  300. package/dist/esm/testing/options.js +42 -0
  301. package/dist/esm/testing/options.js.map +6 -0
  302. package/dist/esm/testing/reporter.d.ts +50 -0
  303. package/dist/esm/testing/reporter.d.ts.map +1 -0
  304. package/dist/esm/testing/reporter.js +107 -0
  305. package/dist/esm/testing/reporter.js.map +6 -0
  306. package/dist/esm/testing/runner.d.ts +22 -0
  307. package/dist/esm/testing/runner.d.ts.map +1 -0
  308. package/dist/esm/testing/runner.js +86 -0
  309. package/dist/esm/testing/runner.js.map +6 -0
  310. package/dist/esm/testing/web.d.ts +8 -0
  311. package/dist/esm/testing/web.d.ts.map +1 -0
  312. package/dist/esm/testing/web.js +135 -0
  313. package/dist/esm/testing/web.js.map +6 -0
  314. package/dist/esm/util/bootstrap.mjs +105 -0
  315. package/dist/esm/util/docker.d.ts +27 -0
  316. package/dist/esm/util/docker.d.ts.map +1 -0
  317. package/dist/esm/util/docker.js +133 -0
  318. package/dist/esm/util/docker.js.map +6 -0
  319. package/dist/esm/util/errors.d.ts +8 -0
  320. package/dist/esm/util/errors.d.ts.map +1 -0
  321. package/dist/esm/util/errors.js +35 -0
  322. package/dist/esm/util/errors.js.map +6 -0
  323. package/dist/esm/util/index.d.ts +8 -0
  324. package/dist/esm/util/index.d.ts.map +1 -0
  325. package/dist/esm/util/index.js +8 -0
  326. package/dist/esm/util/index.js.map +6 -0
  327. package/dist/esm/util/node-shims.d.ts +7 -0
  328. package/dist/esm/util/node-shims.d.ts.map +1 -0
  329. package/dist/esm/util/node-shims.js +11 -0
  330. package/dist/esm/util/node-shims.js.map +6 -0
  331. package/dist/esm/util/package.d.ts +61 -0
  332. package/dist/esm/util/package.d.ts.map +1 -0
  333. package/dist/esm/util/package.js +304 -0
  334. package/dist/esm/util/package.js.map +6 -0
  335. package/dist/esm/util/progress.d.ts +31 -0
  336. package/dist/esm/util/progress.d.ts.map +1 -0
  337. package/dist/esm/util/progress.js +202 -0
  338. package/dist/esm/util/progress.js.map +6 -0
  339. package/dist/esm/util/tools-path.cjs +13 -0
  340. package/dist/esm/util/tools-path.d.cts +7 -0
  341. package/dist/esm/util/trace-unhandled.d.ts +9 -0
  342. package/dist/esm/util/trace-unhandled.d.ts.map +1 -0
  343. package/dist/esm/util/trace-unhandled.js +18 -0
  344. package/dist/esm/util/trace-unhandled.js.map +6 -0
  345. package/dist/esm/util/wtf.d.ts +10 -0
  346. package/dist/esm/util/wtf.d.ts.map +1 -0
  347. package/dist/esm/util/wtf.js +23 -0
  348. package/dist/esm/util/wtf.js.map +6 -0
  349. package/dist/esm/versioning/cli.d.ts +7 -0
  350. package/dist/esm/versioning/cli.d.ts.map +1 -0
  351. package/dist/esm/versioning/cli.js +32 -0
  352. package/dist/esm/versioning/cli.js.map +6 -0
  353. package/dist/esm/versioning/versioner.d.ts +18 -0
  354. package/dist/esm/versioning/versioner.d.ts.map +1 -0
  355. package/dist/esm/versioning/versioner.js +115 -0
  356. package/dist/esm/versioning/versioner.js.map +6 -0
  357. package/package.json +82 -0
  358. package/src/building/builder.ts +216 -0
  359. package/src/building/cli.ts +89 -0
  360. package/src/building/error.ts +29 -0
  361. package/src/building/graph.ts +251 -0
  362. package/src/building/project.ts +313 -0
  363. package/src/building/tsconfig.ts +69 -0
  364. package/src/building/typescript/context.ts +85 -0
  365. package/src/building/typescript/incremental-compiler.ts +126 -0
  366. package/src/building/typescript/language-service.ts +132 -0
  367. package/src/building/typescript/solution-builder.ts +67 -0
  368. package/src/building/typescript.ts +15 -0
  369. package/src/index.ts +15 -0
  370. package/src/running/cli.ts +95 -0
  371. package/src/running/execute.ts +63 -0
  372. package/src/testing/chip/pics-file.ts +71 -0
  373. package/src/testing/chip/pics.properties +53 -0
  374. package/src/testing/chip.ts +420 -0
  375. package/src/testing/cli.ts +122 -0
  376. package/src/testing/failure-detail.ts +126 -0
  377. package/src/testing/files.ts +35 -0
  378. package/src/testing/global-declarations.ts +50 -0
  379. package/src/testing/global-definitions.ts +35 -0
  380. package/src/testing/index.html +16 -0
  381. package/src/testing/mocha.ts +162 -0
  382. package/src/testing/mocharc.cjs +68 -0
  383. package/src/testing/mocharc.d.cts +7 -0
  384. package/src/testing/mocks/crypto.ts +70 -0
  385. package/src/testing/mocks/environment.ts +7 -0
  386. package/src/testing/mocks/index.ts +10 -0
  387. package/src/testing/mocks/logging.ts +99 -0
  388. package/src/testing/mocks/time.ts +294 -0
  389. package/src/testing/node.ts +114 -0
  390. package/src/testing/options.ts +58 -0
  391. package/src/testing/reporter.ts +144 -0
  392. package/src/testing/runner.ts +98 -0
  393. package/src/testing/web.ts +174 -0
  394. package/src/tsconfig.json +14 -0
  395. package/src/util/bootstrap.mjs +105 -0
  396. package/src/util/docker.ts +176 -0
  397. package/src/util/errors.ts +33 -0
  398. package/src/util/index.ts +8 -0
  399. package/src/util/node-shims.ts +13 -0
  400. package/src/util/package.ts +369 -0
  401. package/src/util/progress.ts +252 -0
  402. package/src/util/tools-path.cjs +13 -0
  403. package/src/util/tools-path.d.cts +7 -0
  404. package/src/util/trace-unhandled.ts +17 -0
  405. package/src/util/wtf.ts +25 -0
  406. package/src/versioning/cli.ts +43 -0
  407. package/src/versioning/versioner.ts +139 -0
  408. package/test/testing/mocks/MockTimeTest.ts +113 -0
  409. package/test/tsconfig.json +15 -0
  410. package/tsc/tsconfig.app.json +7 -0
  411. package/tsc/tsconfig.base.json +41 -0
  412. package/tsc/tsconfig.lib.json +12 -0
  413. package/tsc/tsconfig.test.json +7 -0
  414. package/tsconfig.json +5 -0
@@ -0,0 +1,286 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { parse } from "path";
7
+ import { Docker } from "../util/docker.js";
8
+ import { Package } from "../util/package.js";
9
+ import { PicsFile } from "./chip/pics-file.js";
10
+ var Constants;
11
+ ((Constants2) => {
12
+ Constants2.chip = "/connectedhomeip";
13
+ Constants2.chipTool = `${Constants2.chip}/scripts/tests/chipyaml/chiptool.py`;
14
+ Constants2.yamlTests = `${Constants2.chip}/src/app/tests/suites/certification`;
15
+ Constants2.pythonTests = `${Constants2.chip}/src/python_testing`;
16
+ Constants2.python = ["/usr/bin/env", "-S", "python3", "-B"];
17
+ Constants2.pythonRunner = `${Constants2.chip}/scripts/tests/run_python_test.py`;
18
+ Constants2.pics = "/matter.js/packages/tools/build/pics.properties";
19
+ Constants2.chipPics = "/connectedhomeip/src/app/tests/suites/certification/ci-pics-values";
20
+ Constants2.buildTimeout = 6e5;
21
+ Constants2.defaultTimeout = 6e4;
22
+ Constants2.dockerBuildPath = "chip";
23
+ Constants2.dockerName = "matterjs-chip";
24
+ })(Constants || (Constants = {}));
25
+ const State = {
26
+ configured: false,
27
+ options: void 0,
28
+ docker: void 0,
29
+ yamlTests: Array(),
30
+ pythonTests: Array()
31
+ };
32
+ const Config = {
33
+ set options(options) {
34
+ State.options = options;
35
+ },
36
+ get runner() {
37
+ const runner = State.options?.runner;
38
+ if (runner === void 0) {
39
+ throw new Error("No test runner configured");
40
+ }
41
+ return runner;
42
+ },
43
+ async docker() {
44
+ if (State.docker) {
45
+ return State.docker;
46
+ }
47
+ const docker = new Docker();
48
+ const { progress } = Config.runner;
49
+ await progress.run(
50
+ `Build ${progress.emphasize("CHIP image")}`,
51
+ () => docker.buildImage(Constants.dockerName, Package.tools.resolve(Constants.dockerBuildPath))
52
+ );
53
+ State.docker = docker;
54
+ return docker;
55
+ }
56
+ };
57
+ const Chip = {
58
+ /**
59
+ * Configure CHIP testing. Invoke prior to use of other methods.
60
+ */
61
+ set config(config) {
62
+ Config.options = config;
63
+ },
64
+ /**
65
+ * Initialize. This must run before defining tests to enable test definition via globs.
66
+ */
67
+ async initialize() {
68
+ await initialize();
69
+ },
70
+ /**
71
+ * Define YAML tests. This is a declarative CHIP test defined in a YAML file.
72
+ */
73
+ yaml(testee, includeGlob, excludeGlob) {
74
+ let tests = filterWithGlob(State.yamlTests, includeGlob);
75
+ if (excludeGlob !== void 0) {
76
+ tests = filterWithGlob(tests, excludeGlob, true);
77
+ }
78
+ if (tests.length === 0) {
79
+ throw new Error(`YAML test glob ${includeGlob} matched no tests`);
80
+ }
81
+ for (const file of tests) {
82
+ implementTest(testee, {
83
+ name: parse(file).base,
84
+ command: [Constants.pythonRunner, file],
85
+ // TODO - complete argument set
86
+ args: {
87
+ "--pics-file": Constants.pics,
88
+ "--discriminator": "1234",
89
+ "--passcode": "20202021"
90
+ }
91
+ });
92
+ }
93
+ },
94
+ /**
95
+ * Define a "python" test. This is a CHIP test implemented as a python script.
96
+ */
97
+ python(testee, tester, excludeGlob) {
98
+ if (typeof tester === "string") {
99
+ tester = {
100
+ name: tester
101
+ };
102
+ } else {
103
+ tester = { ...tester };
104
+ }
105
+ tester.args = {
106
+ "--commissioning-method": "on-network",
107
+ "--PICS": Constants.pics,
108
+ "--discriminator": "1234",
109
+ "--passcode": "20202021",
110
+ ...tester.args
111
+ };
112
+ let files = filterWithGlob(State.pythonTests, tester.name, false);
113
+ if (excludeGlob !== void 0) {
114
+ files = filterWithGlob(files, excludeGlob, true);
115
+ }
116
+ if (files.length === 0) {
117
+ throw new Error(`Python test glob ${tester.name} matched no tests`);
118
+ }
119
+ for (const file of files) {
120
+ const name = parse(file).name;
121
+ implementTest(testee, { ...tester, name, command: [file] });
122
+ }
123
+ }
124
+ };
125
+ let containerInitializerInstalled = false;
126
+ function implementTest(testee, tester) {
127
+ if (!containerInitializerInstalled) {
128
+ containerInitializerInstalled = true;
129
+ before(async function() {
130
+ this.timeout(Constants.buildTimeout);
131
+ await initialize();
132
+ });
133
+ }
134
+ it(tester.description ?? tester.name, async () => {
135
+ await testee.setup();
136
+ await testee.start();
137
+ try {
138
+ await invokeTester(tester);
139
+ } finally {
140
+ try {
141
+ await testee.stop();
142
+ } catch (e) {
143
+ console.warn("Error stopping test subject", e);
144
+ }
145
+ }
146
+ }).timeout(tester.timeout ?? Constants.defaultTimeout);
147
+ }
148
+ async function invokeTester(tester) {
149
+ const docker = await Config.docker();
150
+ const args = Array();
151
+ if (tester.command) {
152
+ args.push(...tester.command);
153
+ }
154
+ if (tester.args) {
155
+ args.push(...Object.entries(tester.args).flat());
156
+ }
157
+ const output = docker.run(Constants.dockerName, {
158
+ args,
159
+ env: tester.environment,
160
+ binds: {
161
+ [Package.workspace.path]: "/matter.js"
162
+ },
163
+ network: "host"
164
+ });
165
+ await translateTestOutput(Config.runner, output);
166
+ }
167
+ function deansify(text) {
168
+ return text.replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g, "");
169
+ }
170
+ async function translateTestOutput(runner, output) {
171
+ let testCount = 0;
172
+ let capture = Array();
173
+ let partial;
174
+ function reportFailures() {
175
+ let testName;
176
+ let testLogs;
177
+ for (const line of capture) {
178
+ const subtestBoundary = deansify(line).match(/\*{5} (Test Step \d+|Test Failure) : (.*)/);
179
+ if (subtestBoundary) {
180
+ if (subtestBoundary[1] === "Test Failure") {
181
+ if (testName === void 0) {
182
+ continue;
183
+ }
184
+ runner.reporter.failTest(testName, {
185
+ message: subtestBoundary[2],
186
+ logs: testLogs?.join("\n")
187
+ });
188
+ } else {
189
+ testName = subtestBoundary[2];
190
+ testLogs = [];
191
+ }
192
+ } else if (testLogs) {
193
+ const appOut = line.match(/^.* APP {2}OUT {2}: (.*)$/);
194
+ if (appOut) {
195
+ testLogs.push(appOut[1]);
196
+ continue;
197
+ }
198
+ const testOut = line.match(/(\d{4}-\d\d-\d\d) .*(\d\d:\d\d:\d\d\.\d\d\d) - TEST OUT {2}: (.*)$/);
199
+ if (testOut) {
200
+ if (deansify(testOut[3]).match(/^(?:✗ \d+.\d+ms$|\s+\d+\. Running )/)) {
201
+ continue;
202
+ }
203
+ const date = testOut[1];
204
+ const time = testOut[2];
205
+ const message = testOut[3].replace(" ", "").replace(/\t/g, " ");
206
+ testLogs.push(`CHIP ${date} ${time} ${message}`);
207
+ continue;
208
+ }
209
+ testLogs.push(line);
210
+ }
211
+ }
212
+ }
213
+ function processLine(line) {
214
+ MockLogger.injectExternalMessage("CHIP", line);
215
+ line = line.trim();
216
+ const plain = deansify(line);
217
+ const testBoundary = plain.match(
218
+ /^\d{4}-\d\d-\d\d \d\d:\d\d:\d\d\.\d{3} [A-Z ]{7} ([a-zA-Z0-9_]+)\s+- (Starting test|(?:Completed|FAILED) in \d+\.\d+ seconds)$/
219
+ );
220
+ if (testBoundary) {
221
+ if (testBoundary[2].startsWith("Start")) {
222
+ testCount++;
223
+ capture = [];
224
+ runner.reporter.beginRun(testBoundary[1], void 0, false);
225
+ } else if (testBoundary[2].startsWith("Completed")) {
226
+ runner.reporter.endRun();
227
+ } else {
228
+ reportFailures();
229
+ runner.reporter.endRun();
230
+ }
231
+ }
232
+ capture.push(line);
233
+ }
234
+ for await (const chunk of output) {
235
+ const lines = chunk.split("\n");
236
+ if (partial) {
237
+ lines[0] = partial + lines[0];
238
+ }
239
+ partial = lines.pop();
240
+ for (const line of lines) {
241
+ processLine(line);
242
+ }
243
+ }
244
+ if (partial !== void 0) {
245
+ processLine(partial);
246
+ }
247
+ }
248
+ async function initialize() {
249
+ if (State.configured) {
250
+ return;
251
+ }
252
+ await Config.docker();
253
+ await configurePics();
254
+ await configureYaml();
255
+ await configurePython();
256
+ State.configured = true;
257
+ }
258
+ async function configurePics() {
259
+ const docker = await Config.docker();
260
+ const ciPics = await docker.readFileFromImage(Constants.dockerName, Constants.chipPics);
261
+ const pics = new PicsFile(ciPics, true);
262
+ const overrides = new PicsFile(Package.tools.resolve("src/testing/chip/pics.properties"));
263
+ pics.patch(overrides);
264
+ pics.save(Package.tools.resolve("build/pics.properties"));
265
+ }
266
+ async function configureYaml() {
267
+ const docker = await Config.docker();
268
+ const tests = await docker.resolveGlobFromImage(Constants.dockerName, `${Constants.yamlTests}/Test_*.yaml`);
269
+ State.yamlTests.push(...tests);
270
+ }
271
+ async function configurePython() {
272
+ const docker = await Config.docker();
273
+ const tests = (await docker.resolveGlobFromImage(Constants.dockerName, `${Constants.pythonTests}/*.py`)).filter(
274
+ (name) => name.match(/(?:TC_|Test)[^/]\.py$/)
275
+ );
276
+ State.pythonTests.push(...tests);
277
+ }
278
+ function filterWithGlob(list, glob, invert = false) {
279
+ const globPattern = glob.replace(/\*/g, "[^\\/]+");
280
+ const pattern = new RegExp(`^.*/(?:Test_TC_|TC|Test)${globPattern}\\.(?:py|yaml)$`);
281
+ return list.filter((s) => !!s.match(pattern) === !invert);
282
+ }
283
+ export {
284
+ Chip
285
+ };
286
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3Rlc3RpbmcvY2hpcC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IDIwMjItMjAyNCBNYXR0ZXIuanMgQXV0aG9yc1xuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcbiAqL1xuXG5pbXBvcnQgeyBwYXJzZSB9IGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyBEb2NrZXIgfSBmcm9tIFwiLi4vdXRpbC9kb2NrZXIuanNcIjtcbmltcG9ydCB7IFBhY2thZ2UgfSBmcm9tIFwiLi4vdXRpbC9wYWNrYWdlLmpzXCI7XG5pbXBvcnQgeyBQaWNzRmlsZSB9IGZyb20gXCIuL2NoaXAvcGljcy1maWxlLmpzXCI7XG5pbXBvcnQgeyB0eXBlIFRlc3RSdW5uZXIgfSBmcm9tIFwiLi9ydW5uZXIuanNcIjtcblxuLyoqXG4gKiBQYXRoIGNvbmZpZ3VyYXRpb24uXG4gKi9cbm5hbWVzcGFjZSBDb25zdGFudHMge1xuICAgIGV4cG9ydCBjb25zdCBjaGlwID0gXCIvY29ubmVjdGVkaG9tZWlwXCI7XG4gICAgZXhwb3J0IGNvbnN0IGNoaXBUb29sID0gYCR7Y2hpcH0vc2NyaXB0cy90ZXN0cy9jaGlweWFtbC9jaGlwdG9vbC5weWA7XG4gICAgZXhwb3J0IGNvbnN0IHlhbWxUZXN0cyA9IGAke2NoaXB9L3NyYy9hcHAvdGVzdHMvc3VpdGVzL2NlcnRpZmljYXRpb25gO1xuICAgIGV4cG9ydCBjb25zdCBweXRob25UZXN0cyA9IGAke2NoaXB9L3NyYy9weXRob25fdGVzdGluZ2A7XG4gICAgZXhwb3J0IGNvbnN0IHB5dGhvbiA9IFtcIi91c3IvYmluL2VudlwiLCBcIi1TXCIsIFwicHl0aG9uM1wiLCBcIi1CXCJdO1xuICAgIGV4cG9ydCBjb25zdCBweXRob25SdW5uZXIgPSBgJHtjaGlwfS9zY3JpcHRzL3Rlc3RzL3J1bl9weXRob25fdGVzdC5weWA7XG5cbiAgICBleHBvcnQgY29uc3QgcGljcyA9IFwiL21hdHRlci5qcy9wYWNrYWdlcy90b29scy9idWlsZC9waWNzLnByb3BlcnRpZXNcIjtcbiAgICBleHBvcnQgY29uc3QgY2hpcFBpY3MgPSBcIi9jb25uZWN0ZWRob21laXAvc3JjL2FwcC90ZXN0cy9zdWl0ZXMvY2VydGlmaWNhdGlvbi9jaS1waWNzLXZhbHVlc1wiO1xuICAgIGV4cG9ydCBjb25zdCBidWlsZFRpbWVvdXQgPSA2MDBfMDAwO1xuICAgIGV4cG9ydCBjb25zdCBkZWZhdWx0VGltZW91dCA9IDYwXzAwMDtcbiAgICBleHBvcnQgY29uc3QgZG9ja2VyQnVpbGRQYXRoID0gXCJjaGlwXCI7XG4gICAgZXhwb3J0IGNvbnN0IGRvY2tlck5hbWUgPSBcIm1hdHRlcmpzLWNoaXBcIjtcbn1cblxuLyoqXG4gKiBJbnRlcm5hbCBzdGF0ZS5cbiAqL1xuY29uc3QgU3RhdGUgPSB7XG4gICAgY29uZmlndXJlZDogZmFsc2UsXG4gICAgb3B0aW9uczogdW5kZWZpbmVkIGFzIENoaXAuT3B0aW9ucyB8IHVuZGVmaW5lZCxcbiAgICBkb2NrZXI6IHVuZGVmaW5lZCBhcyBEb2NrZXIgfCB1bmRlZmluZWQsXG4gICAgeWFtbFRlc3RzOiBBcnJheTxzdHJpbmc+KCksXG4gICAgcHl0aG9uVGVzdHM6IEFycmF5PHN0cmluZz4oKSxcbn07XG5cbi8qKlxuICogSW50ZXJuYWwgY29uZmlndXJhdGlvbiBtYW5hZ2VtZW50LlxuICovXG5jb25zdCBDb25maWcgPSB7XG4gICAgc2V0IG9wdGlvbnMob3B0aW9uczogQ2hpcC5PcHRpb25zKSB7XG4gICAgICAgIFN0YXRlLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIH0sXG5cbiAgICBnZXQgcnVubmVyKCkge1xuICAgICAgICBjb25zdCBydW5uZXIgPSBTdGF0ZS5vcHRpb25zPy5ydW5uZXI7XG5cbiAgICAgICAgaWYgKHJ1bm5lciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyB0ZXN0IHJ1bm5lciBjb25maWd1cmVkXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJ1bm5lcjtcbiAgICB9LFxuXG4gICAgYXN5bmMgZG9ja2VyKCkge1xuICAgICAgICBpZiAoU3RhdGUuZG9ja2VyKSB7XG4gICAgICAgICAgICByZXR1cm4gU3RhdGUuZG9ja2VyO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZG9ja2VyID0gbmV3IERvY2tlcigpO1xuXG4gICAgICAgIGNvbnN0IHsgcHJvZ3Jlc3MgfSA9IENvbmZpZy5ydW5uZXI7XG5cbiAgICAgICAgYXdhaXQgcHJvZ3Jlc3MucnVuKGBCdWlsZCAke3Byb2dyZXNzLmVtcGhhc2l6ZShcIkNISVAgaW1hZ2VcIil9YCwgKCkgPT5cbiAgICAgICAgICAgIGRvY2tlci5idWlsZEltYWdlKENvbnN0YW50cy5kb2NrZXJOYW1lLCBQYWNrYWdlLnRvb2xzLnJlc29sdmUoQ29uc3RhbnRzLmRvY2tlckJ1aWxkUGF0aCkpLFxuICAgICAgICApO1xuXG4gICAgICAgIFN0YXRlLmRvY2tlciA9IGRvY2tlcjtcblxuICAgICAgICByZXR1cm4gZG9ja2VyO1xuICAgIH0sXG59O1xuXG4vKipcbiAqIENISVAgdGVzdGluZyBjb250cm9sbGVyLiAgXCJDSElQIHRlc3RzXCIgYXJlIG9mZmljaWFsIHRlc3RzIGltcGxlbWVudGVkIGluIHRoZSBjb25uZWN0ZWRob21laXAgcmVwb3NpdG9yeS5cbiAqL1xuZXhwb3J0IGNvbnN0IENoaXAgPSB7XG4gICAgLyoqXG4gICAgICogQ29uZmlndXJlIENISVAgdGVzdGluZy4gIEludm9rZSBwcmlvciB0byB1c2Ugb2Ygb3RoZXIgbWV0aG9kcy5cbiAgICAgKi9cbiAgICBzZXQgY29uZmlnKGNvbmZpZzogQ2hpcC5PcHRpb25zKSB7XG4gICAgICAgIENvbmZpZy5vcHRpb25zID0gY29uZmlnO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBJbml0aWFsaXplLiAgVGhpcyBtdXN0IHJ1biBiZWZvcmUgZGVmaW5pbmcgdGVzdHMgdG8gZW5hYmxlIHRlc3QgZGVmaW5pdGlvbiB2aWEgZ2xvYnMuXG4gICAgICovXG4gICAgYXN5bmMgaW5pdGlhbGl6ZSgpIHtcbiAgICAgICAgYXdhaXQgaW5pdGlhbGl6ZSgpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBEZWZpbmUgWUFNTCB0ZXN0cy4gIFRoaXMgaXMgYSBkZWNsYXJhdGl2ZSBDSElQIHRlc3QgZGVmaW5lZCBpbiBhIFlBTUwgZmlsZS5cbiAgICAgKi9cbiAgICB5YW1sKHRlc3RlZTogQ2hpcC5UZXN0ZWUsIGluY2x1ZGVHbG9iOiBzdHJpbmcsIGV4Y2x1ZGVHbG9iPzogc3RyaW5nKSB7XG4gICAgICAgIGxldCB0ZXN0cyA9IGZpbHRlcldpdGhHbG9iKFN0YXRlLnlhbWxUZXN0cywgaW5jbHVkZUdsb2IpO1xuICAgICAgICBpZiAoZXhjbHVkZUdsb2IgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGVzdHMgPSBmaWx0ZXJXaXRoR2xvYih0ZXN0cywgZXhjbHVkZUdsb2IsIHRydWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRlc3RzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBZQU1MIHRlc3QgZ2xvYiAke2luY2x1ZGVHbG9ifSBtYXRjaGVkIG5vIHRlc3RzYCk7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IGZpbGUgb2YgdGVzdHMpIHtcbiAgICAgICAgICAgIGltcGxlbWVudFRlc3QodGVzdGVlLCB7XG4gICAgICAgICAgICAgICAgbmFtZTogcGFyc2UoZmlsZSkuYmFzZSxcblxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6IFtDb25zdGFudHMucHl0aG9uUnVubmVyLCBmaWxlXSxcblxuICAgICAgICAgICAgICAgIC8vIFRPRE8gLSBjb21wbGV0ZSBhcmd1bWVudCBzZXRcbiAgICAgICAgICAgICAgICBhcmdzOiB7XG4gICAgICAgICAgICAgICAgICAgIFwiLS1waWNzLWZpbGVcIjogQ29uc3RhbnRzLnBpY3MsXG4gICAgICAgICAgICAgICAgICAgIFwiLS1kaXNjcmltaW5hdG9yXCI6IFwiMTIzNFwiLFxuICAgICAgICAgICAgICAgICAgICBcIi0tcGFzc2NvZGVcIjogXCIyMDIwMjAyMVwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBEZWZpbmUgYSBcInB5dGhvblwiIHRlc3QuICBUaGlzIGlzIGEgQ0hJUCB0ZXN0IGltcGxlbWVudGVkIGFzIGEgcHl0aG9uIHNjcmlwdC5cbiAgICAgKi9cbiAgICBweXRob24odGVzdGVlOiBDaGlwLlRlc3RlZSwgdGVzdGVyOiBDaGlwLlRlc3RTZWxlY3Rpb24sIGV4Y2x1ZGVHbG9iPzogc3RyaW5nKSB7XG4gICAgICAgIGlmICh0eXBlb2YgdGVzdGVyID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICB0ZXN0ZXIgPSB7XG4gICAgICAgICAgICAgICAgbmFtZTogdGVzdGVyLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRlc3RlciA9IHsgLi4udGVzdGVyIH07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUT0RPIC0gY29tcGxldGUgYXJndW1lbnRzXG4gICAgICAgIHRlc3Rlci5hcmdzID0ge1xuICAgICAgICAgICAgXCItLWNvbW1pc3Npb25pbmctbWV0aG9kXCI6IFwib24tbmV0d29ya1wiLFxuICAgICAgICAgICAgXCItLVBJQ1NcIjogQ29uc3RhbnRzLnBpY3MsXG4gICAgICAgICAgICBcIi0tZGlzY3JpbWluYXRvclwiOiBcIjEyMzRcIixcbiAgICAgICAgICAgIFwiLS1wYXNzY29kZVwiOiBcIjIwMjAyMDIxXCIsXG4gICAgICAgICAgICAuLi50ZXN0ZXIuYXJncyxcbiAgICAgICAgfTtcblxuICAgICAgICBsZXQgZmlsZXMgPSBmaWx0ZXJXaXRoR2xvYihTdGF0ZS5weXRob25UZXN0cywgdGVzdGVyLm5hbWUsIGZhbHNlKTtcbiAgICAgICAgaWYgKGV4Y2x1ZGVHbG9iICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGZpbGVzID0gZmlsdGVyV2l0aEdsb2IoZmlsZXMsIGV4Y2x1ZGVHbG9iLCB0cnVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmaWxlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgUHl0aG9uIHRlc3QgZ2xvYiAke3Rlc3Rlci5uYW1lfSBtYXRjaGVkIG5vIHRlc3RzYCk7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IG5hbWUgPSBwYXJzZShmaWxlKS5uYW1lO1xuICAgICAgICAgICAgaW1wbGVtZW50VGVzdCh0ZXN0ZWUsIHsgLi4udGVzdGVyLCBuYW1lLCBjb21tYW5kOiBbZmlsZV0gfSk7XG4gICAgICAgIH1cbiAgICB9LFxufTtcblxubGV0IGNvbnRhaW5lckluaXRpYWxpemVySW5zdGFsbGVkID0gZmFsc2U7XG5cbmZ1bmN0aW9uIGltcGxlbWVudFRlc3QodGVzdGVlOiBDaGlwLlRlc3RlZSwgdGVzdGVyOiBDaGlwLlRlc3Rlcikge1xuICAgIGlmICghY29udGFpbmVySW5pdGlhbGl6ZXJJbnN0YWxsZWQpIHtcbiAgICAgICAgY29udGFpbmVySW5pdGlhbGl6ZXJJbnN0YWxsZWQgPSB0cnVlO1xuICAgICAgICBiZWZvcmUoYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdGhpcy50aW1lb3V0KENvbnN0YW50cy5idWlsZFRpbWVvdXQpO1xuICAgICAgICAgICAgYXdhaXQgaW5pdGlhbGl6ZSgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpdCh0ZXN0ZXIuZGVzY3JpcHRpb24gPz8gdGVzdGVyLm5hbWUsIGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgdGVzdGVlLnNldHVwKCk7XG4gICAgICAgIGF3YWl0IHRlc3RlZS5zdGFydCgpO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCBpbnZva2VUZXN0ZXIodGVzdGVyKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGVzdGVlLnN0b3AoKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXCJFcnJvciBzdG9wcGluZyB0ZXN0IHN1YmplY3RcIiwgZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KS50aW1lb3V0KHRlc3Rlci50aW1lb3V0ID8/IENvbnN0YW50cy5kZWZhdWx0VGltZW91dCk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGludm9rZVRlc3Rlcih0ZXN0ZXI6IENoaXAuVGVzdGVyKSB7XG4gICAgY29uc3QgZG9ja2VyID0gYXdhaXQgQ29uZmlnLmRvY2tlcigpO1xuXG4gICAgY29uc3QgYXJncyA9IEFycmF5PHN0cmluZz4oKTtcbiAgICBpZiAodGVzdGVyLmNvbW1hbmQpIHtcbiAgICAgICAgYXJncy5wdXNoKC4uLnRlc3Rlci5jb21tYW5kKTtcbiAgICB9XG4gICAgaWYgKHRlc3Rlci5hcmdzKSB7XG4gICAgICAgIGFyZ3MucHVzaCguLi5PYmplY3QuZW50cmllcyh0ZXN0ZXIuYXJncykuZmxhdCgpKTtcbiAgICB9XG5cbiAgICAvLyBUT0RPIC0gZGVmaW5lIGRvY2tlciBuZXR3b3JrIHRvIG1hdGNoIENISVAncyB0ZXN0aW5nIGluZnJhc3RydWN0dXJlXG4gICAgY29uc3Qgb3V0cHV0ID0gZG9ja2VyLnJ1bihDb25zdGFudHMuZG9ja2VyTmFtZSwge1xuICAgICAgICBhcmdzLFxuICAgICAgICBlbnY6IHRlc3Rlci5lbnZpcm9ubWVudCxcbiAgICAgICAgYmluZHM6IHtcbiAgICAgICAgICAgIFtQYWNrYWdlLndvcmtzcGFjZS5wYXRoXTogXCIvbWF0dGVyLmpzXCIsXG4gICAgICAgIH0sXG4gICAgICAgIG5ldHdvcms6IFwiaG9zdFwiLFxuICAgIH0pO1xuXG4gICAgYXdhaXQgdHJhbnNsYXRlVGVzdE91dHB1dChDb25maWcucnVubmVyLCBvdXRwdXQpO1xufVxuXG5leHBvcnQgbmFtZXNwYWNlIENoaXAge1xuICAgIC8qKlxuICAgICAqIFRoZSB0ZXN0IHN1YmplY3QuXG4gICAgICovXG4gICAgZXhwb3J0IGludGVyZmFjZSBUZXN0ZWUge1xuICAgICAgICBzZXR1cCgpOiBQcm9taXNlPHZvaWQ+O1xuICAgICAgICBzdGFydCgpOiBQcm9taXNlPHZvaWQ+O1xuICAgICAgICBzdG9wKCk6IFByb21pc2U8dm9pZD47XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIHRlc3QgaW1wbGVtZW50YXRpb24uXG4gICAgICovXG4gICAgZXhwb3J0IHR5cGUgVGVzdFNlbGVjdGlvbiA9IFRlc3RlciB8IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIENvbmZpZ3VyYXRpb24gcmVxdWlyZWQgZnJvbSB0ZXN0aW5nIHByb2dyYW0uXG4gICAgICovXG4gICAgZXhwb3J0IGludGVyZmFjZSBPcHRpb25zIHtcbiAgICAgICAgcnVubmVyOiBUZXN0UnVubmVyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERldGFpbHMgb2YgaG93IHRvIHJ1biBhIHNwZWNpZmljIHRlc3QuXG4gICAgICovXG4gICAgZXhwb3J0IGludGVyZmFjZSBUZXN0ZXIge1xuICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgICAgICBjb21tYW5kPzogc3RyaW5nW107XG4gICAgICAgIGFyZ3M/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICAgICAgICB0aW1lb3V0PzogbnVtYmVyO1xuICAgICAgICBlbnZpcm9ubWVudD86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gICAgfVxufVxuXG5leHBvcnQgdHlwZSBDaGlwID0gdHlwZW9mIENoaXA7XG5cbi8qKlxuICogU3RyaXAgQU5TSSBlc2NhcGUgY29kZXMgZnJvbSBhIHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gZGVhbnNpZnkodGV4dDogc3RyaW5nKSB7XG4gICAgLy8gQ3JlZGl0IHRvIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzI1MjQ1NzE2L3JlbW92ZS1hbGwtYW5zaS1jb2xvcnMtc3R5bGVzLWZyb20tc3RyaW5nc1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb250cm9sLXJlZ2V4XG4gICAgcmV0dXJuIHRleHQucmVwbGFjZSgvW1xcdTAwMWJcXHUwMDliXVtbKCkjOz9dKig/OlswLTldezEsNH0oPzo7WzAtOV17MCw0fSkqKT9bMC05QS1PUlpjZi1ucXJ5PT48XS9nLCBcIlwiKTtcbn1cblxuLy8gVE9ETyAtIGNhbiBzaW1wbGlmeSBiZWNhdXNlIHdlJ3ZlIHJlbW92ZWQgdHdvIGxheWVycyBvZiBDSElQIGV4dHJhY3Rpb24uXG4vL1xuLy8gVE9ETyAtIEFkYXB0YXRpb24gdG8gc3VwcG9ydCBib3RoIHB5dGhvbiBhbmQgeWFtbCB0ZXN0c1xuYXN5bmMgZnVuY3Rpb24gdHJhbnNsYXRlVGVzdE91dHB1dChydW5uZXI6IFRlc3RSdW5uZXIsIG91dHB1dDogQXN5bmNJdGVyYWJsZTxzdHJpbmc+KSB7XG4gICAgbGV0IHRlc3RDb3VudCA9IDA7XG5cbiAgICBsZXQgY2FwdHVyZSA9IEFycmF5PHN0cmluZz4oKTtcblxuICAgIGxldCBwYXJ0aWFsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICAvKipcbiAgICAgKiBFeHRyYWN0IGZhaWx1cmUgZGV0YWlscyBmcm9tIHRoZSB0ZXN0IHJ1bm5lcidzIG91dHB1dCBzcGhhZ2hldHRpLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJlcG9ydEZhaWx1cmVzKCkge1xuICAgICAgICBsZXQgdGVzdE5hbWU6IHVuZGVmaW5lZCB8IHN0cmluZztcbiAgICAgICAgbGV0IHRlc3RMb2dzOiB1bmRlZmluZWQgfCBzdHJpbmdbXTtcbiAgICAgICAgZm9yIChjb25zdCBsaW5lIG9mIGNhcHR1cmUpIHtcbiAgICAgICAgICAgIGNvbnN0IHN1YnRlc3RCb3VuZGFyeSA9IGRlYW5zaWZ5KGxpbmUpLm1hdGNoKC9cXCp7NX0gKFRlc3QgU3RlcCBcXGQrfFRlc3QgRmFpbHVyZSkgOiAoLiopLyk7XG4gICAgICAgICAgICBpZiAoc3VidGVzdEJvdW5kYXJ5KSB7XG4gICAgICAgICAgICAgICAgaWYgKHN1YnRlc3RCb3VuZGFyeVsxXSA9PT0gXCJUZXN0IEZhaWx1cmVcIikge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGVzdE5hbWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcnVubmVyLnJlcG9ydGVyLmZhaWxUZXN0KHRlc3ROYW1lLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBzdWJ0ZXN0Qm91bmRhcnlbMl0sXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2dzOiB0ZXN0TG9ncz8uam9pbihcIlxcblwiKSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGVzdE5hbWUgPSBzdWJ0ZXN0Qm91bmRhcnlbMl07XG4gICAgICAgICAgICAgICAgICAgIHRlc3RMb2dzID0gW107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmICh0ZXN0TG9ncykge1xuICAgICAgICAgICAgICAgIC8vIEV4dHJhY3QgbWF0dGVyLmpzIGxvZ3NcbiAgICAgICAgICAgICAgICBjb25zdCBhcHBPdXQgPSBsaW5lLm1hdGNoKC9eLiogQVBQIHsyfU9VVCB7Mn06ICguKikkLyk7XG4gICAgICAgICAgICAgICAgaWYgKGFwcE91dCkge1xuICAgICAgICAgICAgICAgICAgICB0ZXN0TG9ncy5wdXNoKGFwcE91dFsxXSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIEV4dHJhY3QgZGlhZ25vc3RpY3MgZnJvbSB0aGUgdGVzdCBmcmFtZXdvcmtcbiAgICAgICAgICAgICAgICBjb25zdCB0ZXN0T3V0ID0gbGluZS5tYXRjaCgvKFxcZHs0fS1cXGRcXGQtXFxkXFxkKSAuKihcXGRcXGQ6XFxkXFxkOlxcZFxcZFxcLlxcZFxcZFxcZCkgLSBURVNUIE9VVCB7Mn06ICguKikkLyk7XG4gICAgICAgICAgICAgICAgaWYgKHRlc3RPdXQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRlYW5zaWZ5KHRlc3RPdXRbM10pLm1hdGNoKC9eKD86XHUyNzE3IFxcZCsuXFxkK21zJHxcXHMrXFxkK1xcLiBSdW5uaW5nICkvKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBkYXRlID0gdGVzdE91dFsxXTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGltZSA9IHRlc3RPdXRbMl07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSB0ZXN0T3V0WzNdLnJlcGxhY2UoXCJcXHRcXHQgICAgXCIsIFwiXCIpLnJlcGxhY2UoL1xcdC9nLCBcIiAgXCIpO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIFRlc3Qgc3VpdGUgbG9ncyBkYXRlIGFuZCB0aW1lIG9mIHJlcG9ydCBwbHVzIHRpbWUgb2YgbG9nIG1lc3NhZ2UuICBXZSBvbmx5IGNhcmUgYWJvdXQgdGhlIHNlY29uZFxuICAgICAgICAgICAgICAgICAgICAvLyB0aW1lIHNvIGlnbm9yZSB0aGUgZmlyc3RcbiAgICAgICAgICAgICAgICAgICAgdGVzdExvZ3MucHVzaChgQ0hJUCAke2RhdGV9ICR7dGltZX0gJHttZXNzYWdlfWApO1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBXZSBkb24ndCByZWNvZ25pemUgdGhlIGxpbmU7IHBhc3MgYXMtaXNcbiAgICAgICAgICAgICAgICB0ZXN0TG9ncy5wdXNoKGxpbmUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJvY2VzcyB0ZXN0IHN1aXRlIG91dHB1dC5cbiAgICAgKlxuICAgICAqIFVuZm9ydHVuYXRlbHkgcnVuX3Rlc3Rfc3VpdGUucHkgaGlkZXMgbW9zdCBvdXRwdXQgdW5sZXNzIHRoZSB0ZXN0IGNyYXNoZXMgc28gd2UgY2FuJ3QgY291bnQgc3VidGVzdHMgcmVsaWFibHlcbiAgICAgKiB3aXRob3V0IFBSIG9yIHJlcGxhY2luZyB3aXRoIG91ciBvd24gdGhpbmcuICBUaGUgaW5kaXZpZHVhbCB0ZXN0IHJ1bm5lcnMgZG8gcmVwb3J0IHRoaXMgdGhvdWdoIHNvIHdlIGNhbiByZXBvcnRcbiAgICAgKiBwZXItdGVzdCBpbmZvcm1hdGlvbiBmcm9tIGZhaWx1cmUgb3V0cHV0LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHByb2Nlc3NMaW5lKGxpbmU6IHN0cmluZykge1xuICAgICAgICAvLyBJbmplY3QgdGhlIG1lc3NhZ2UgaW50byBvdXIgbG9nIHN0cmVhbVxuICAgICAgICBNb2NrTG9nZ2VyLmluamVjdEV4dGVybmFsTWVzc2FnZShcIkNISVBcIiwgbGluZSk7XG5cbiAgICAgICAgbGluZSA9IGxpbmUudHJpbSgpO1xuICAgICAgICBjb25zdCBwbGFpbiA9IGRlYW5zaWZ5KGxpbmUpO1xuICAgICAgICBjb25zdCB0ZXN0Qm91bmRhcnkgPSBwbGFpbi5tYXRjaChcbiAgICAgICAgICAgIC9eXFxkezR9LVxcZFxcZC1cXGRcXGQgXFxkXFxkOlxcZFxcZDpcXGRcXGRcXC5cXGR7M30gW0EtWiBdezd9IChbYS16QS1aMC05X10rKVxccystIChTdGFydGluZyB0ZXN0fCg/OkNvbXBsZXRlZHxGQUlMRUQpIGluIFxcZCtcXC5cXGQrIHNlY29uZHMpJC8sXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKHRlc3RCb3VuZGFyeSkge1xuICAgICAgICAgICAgaWYgKHRlc3RCb3VuZGFyeVsyXS5zdGFydHNXaXRoKFwiU3RhcnRcIikpIHtcbiAgICAgICAgICAgICAgICB0ZXN0Q291bnQrKztcbiAgICAgICAgICAgICAgICBjYXB0dXJlID0gW107XG4gICAgICAgICAgICAgICAgcnVubmVyLnJlcG9ydGVyLmJlZ2luUnVuKHRlc3RCb3VuZGFyeVsxXSwgdW5kZWZpbmVkLCBmYWxzZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRlc3RCb3VuZGFyeVsyXS5zdGFydHNXaXRoKFwiQ29tcGxldGVkXCIpKSB7XG4gICAgICAgICAgICAgICAgcnVubmVyLnJlcG9ydGVyLmVuZFJ1bigpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXBvcnRGYWlsdXJlcygpO1xuICAgICAgICAgICAgICAgIHJ1bm5lci5yZXBvcnRlci5lbmRSdW4oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNhcHR1cmUucHVzaChsaW5lKTtcbiAgICB9XG5cbiAgICBmb3IgYXdhaXQgKGNvbnN0IGNodW5rIG9mIG91dHB1dCkge1xuICAgICAgICBjb25zdCBsaW5lcyA9IGNodW5rLnNwbGl0KFwiXFxuXCIpO1xuICAgICAgICBpZiAocGFydGlhbCkge1xuICAgICAgICAgICAgbGluZXNbMF0gPSBwYXJ0aWFsICsgbGluZXNbMF07XG4gICAgICAgIH1cblxuICAgICAgICBwYXJ0aWFsID0gbGluZXMucG9wKCk7XG5cbiAgICAgICAgZm9yIChjb25zdCBsaW5lIG9mIGxpbmVzKSB7XG4gICAgICAgICAgICBwcm9jZXNzTGluZShsaW5lKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwYXJ0aWFsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcHJvY2Vzc0xpbmUocGFydGlhbCk7XG4gICAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBpbml0aWFsaXplKCkge1xuICAgIGlmIChTdGF0ZS5jb25maWd1cmVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBhd2FpdCBDb25maWcuZG9ja2VyKCk7XG4gICAgYXdhaXQgY29uZmlndXJlUGljcygpO1xuICAgIGF3YWl0IGNvbmZpZ3VyZVlhbWwoKTtcbiAgICBhd2FpdCBjb25maWd1cmVQeXRob24oKTtcblxuICAgIFN0YXRlLmNvbmZpZ3VyZWQgPSB0cnVlO1xufVxuXG5hc3luYyBmdW5jdGlvbiBjb25maWd1cmVQaWNzKCkge1xuICAgIGNvbnN0IGRvY2tlciA9IGF3YWl0IENvbmZpZy5kb2NrZXIoKTtcbiAgICBjb25zdCBjaVBpY3MgPSBhd2FpdCBkb2NrZXIucmVhZEZpbGVGcm9tSW1hZ2UoQ29uc3RhbnRzLmRvY2tlck5hbWUsIENvbnN0YW50cy5jaGlwUGljcyk7XG4gICAgY29uc3QgcGljcyA9IG5ldyBQaWNzRmlsZShjaVBpY3MsIHRydWUpO1xuXG4gICAgY29uc3Qgb3ZlcnJpZGVzID0gbmV3IFBpY3NGaWxlKFBhY2thZ2UudG9vbHMucmVzb2x2ZShcInNyYy90ZXN0aW5nL2NoaXAvcGljcy5wcm9wZXJ0aWVzXCIpKTtcbiAgICBwaWNzLnBhdGNoKG92ZXJyaWRlcyk7XG5cbiAgICBwaWNzLnNhdmUoUGFja2FnZS50b29scy5yZXNvbHZlKFwiYnVpbGQvcGljcy5wcm9wZXJ0aWVzXCIpKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gY29uZmlndXJlWWFtbCgpIHtcbiAgICBjb25zdCBkb2NrZXIgPSBhd2FpdCBDb25maWcuZG9ja2VyKCk7XG5cbiAgICBjb25zdCB0ZXN0cyA9IGF3YWl0IGRvY2tlci5yZXNvbHZlR2xvYkZyb21JbWFnZShDb25zdGFudHMuZG9ja2VyTmFtZSwgYCR7Q29uc3RhbnRzLnlhbWxUZXN0c30vVGVzdF8qLnlhbWxgKTtcblxuICAgIFN0YXRlLnlhbWxUZXN0cy5wdXNoKC4uLnRlc3RzKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gY29uZmlndXJlUHl0aG9uKCkge1xuICAgIGNvbnN0IGRvY2tlciA9IGF3YWl0IENvbmZpZy5kb2NrZXIoKTtcblxuICAgIGNvbnN0IHRlc3RzID0gKGF3YWl0IGRvY2tlci5yZXNvbHZlR2xvYkZyb21JbWFnZShDb25zdGFudHMuZG9ja2VyTmFtZSwgYCR7Q29uc3RhbnRzLnB5dGhvblRlc3RzfS8qLnB5YCkpLmZpbHRlcihcbiAgICAgICAgbmFtZSA9PiBuYW1lLm1hdGNoKC8oPzpUQ198VGVzdClbXi9dXFwucHkkLyksXG4gICAgKTtcblxuICAgIFN0YXRlLnB5dGhvblRlc3RzLnB1c2goLi4udGVzdHMpO1xufVxuXG5mdW5jdGlvbiBmaWx0ZXJXaXRoR2xvYihsaXN0OiBzdHJpbmdbXSwgZ2xvYjogc3RyaW5nLCBpbnZlcnQgPSBmYWxzZSkge1xuICAgIGNvbnN0IGdsb2JQYXR0ZXJuID0gZ2xvYi5yZXBsYWNlKC9cXCovZywgXCJbXlxcXFwvXStcIik7XG4gICAgY29uc3QgcGF0dGVybiA9IG5ldyBSZWdFeHAoYF4uKi8oPzpUZXN0X1RDX3xUQ3xUZXN0KSR7Z2xvYlBhdHRlcm59XFxcXC4oPzpweXx5YW1sKSRgKTtcbiAgICByZXR1cm4gbGlzdC5maWx0ZXIocyA9PiAhIXMubWF0Y2gocGF0dGVybikgPT09ICFpbnZlcnQpO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQU1BLFNBQVMsYUFBYTtBQUN0QixTQUFTLGNBQWM7QUFDdkIsU0FBUyxlQUFlO0FBQ3hCLFNBQVMsZ0JBQWdCO0FBTXpCLElBQVU7QUFBQSxDQUFWLENBQVVBLGVBQVY7QUFDVyxFQUFNQSxXQUFBLE9BQU87QUFDYixFQUFNQSxXQUFBLFdBQVcsR0FBR0EsV0FBQSxJQUFJO0FBQ3hCLEVBQU1BLFdBQUEsWUFBWSxHQUFHQSxXQUFBLElBQUk7QUFDekIsRUFBTUEsV0FBQSxjQUFjLEdBQUdBLFdBQUEsSUFBSTtB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
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/testing/chip.ts"],
4
+ "mappings": "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",
5
+ "names": ["Constants"]
6
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import "../util/node-shims.js";
7
+ import "./global-definitions.js";
8
+ export declare function main(argv?: string[]): Promise<void>;
9
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../../src/testing/cli.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,uBAAuB,CAAC;AAC/B,OAAO,yBAAyB,CAAC;AAiBjC,wBAAsB,IAAI,CAAC,IAAI,WAAe,iBAiG7C"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import "../util/node-shims.js";
7
+ import "./global-definitions.js";
8
+ import yargs from "yargs";
9
+ import { hideBin } from "yargs/helpers";
10
+ import { Builder } from "../building/builder.js";
11
+ import { Graph } from "../building/graph.js";
12
+ import { Project } from "../building/project.js";
13
+ import { TestRunner } from "./runner.js";
14
+ var TestType = /* @__PURE__ */ ((TestType2) => {
15
+ TestType2["esm"] = "esm";
16
+ TestType2["cjs"] = "cjs";
17
+ TestType2["web"] = "web";
18
+ return TestType2;
19
+ })(TestType || {});
20
+ Error.stackTraceLimit = 50;
21
+ async function main(argv = process.argv) {
22
+ const testTypes = /* @__PURE__ */ new Set();
23
+ let manual = false;
24
+ const args = await yargs(hideBin(argv)).usage("Runs tests in packages adhering to matter.js standards.").option("prefix", {
25
+ alias: "p",
26
+ default: ".",
27
+ type: "string",
28
+ describe: "specify directory of package to test"
29
+ }).option("web", {
30
+ alias: "w",
31
+ default: false,
32
+ type: "boolean",
33
+ describe: "enable web tests in default test mode"
34
+ }).option("spec", {
35
+ type: "array",
36
+ string: true,
37
+ describe: "One or more paths of tests to run",
38
+ default: "./test/**/*Test.ts"
39
+ }).option("all-logs", { type: "boolean", describe: "Emit log messages in real time" }).option("debug", { type: "boolean", describe: "Enable Mocha debugging" }).option("environment", { alias: "e", type: "string", describe: "Select named test environment" }).option("fgrep", { alias: "f", type: "string", describe: "Only run tests matching this string" }).option("force-exit", { type: "boolean", describe: "Force Node to exit after tests complete" }).option("grep", { alias: "g", type: "string", describe: "Only run tests matching this regexp" }).option("invert", { alias: "i", type: "boolean", describe: "Inverts --grep and --fgrep matches" }).option("profile", { type: "boolean", describe: "Write profiling data to build/profiles (node only)" }).option("wtf", { type: "boolean", describe: "Enlist wtfnode to detect test leaks" }).option("trace-unhandled", { type: "boolean", describe: "Detail unhandled rejections with trace-unhandled" }).command("*", "run all supported test types").command("esm", "run tests on node (ES6 modules)", () => testTypes.add("esm" /* esm */)).command("cjs", "run tests on node (CommonJS modules)", () => testTypes.add("cjs" /* cjs */)).command("web", "run tests in web browser", () => testTypes.add("web" /* web */)).command("manual", "start test server and print URL for manual testing", () => {
40
+ testTypes.add("web" /* web */);
41
+ manual = true;
42
+ }).strict().argv;
43
+ let packageLocation = args.prefix;
44
+ if (packageLocation === "." && args.spec) {
45
+ const firstSpec = Array.isArray(args.spec) ? args.spec[0] : args.spec;
46
+ packageLocation = firstSpec;
47
+ }
48
+ const project = new Project(packageLocation);
49
+ process.chdir(project.pkg.path);
50
+ if (!testTypes.size) {
51
+ if (project.pkg.supportsEsm) {
52
+ testTypes.add("esm" /* esm */);
53
+ }
54
+ if (project.pkg.supportsCjs) {
55
+ testTypes.add("cjs" /* cjs */);
56
+ }
57
+ if (args.web) {
58
+ testTypes.add("web" /* web */);
59
+ }
60
+ }
61
+ const builder = new Builder();
62
+ const dependencies = await Graph.forProject(packageLocation);
63
+ if (dependencies) {
64
+ await dependencies.build(builder, false);
65
+ } else {
66
+ await builder.build(project);
67
+ }
68
+ const progress = project.pkg.start("Testing");
69
+ const runner = new TestRunner(project.pkg, progress, args);
70
+ if (testTypes.has("esm" /* esm */)) {
71
+ await runner.runNode("esm");
72
+ }
73
+ if (testTypes.has("cjs" /* cjs */)) {
74
+ await runner.runNode("cjs");
75
+ }
76
+ if (testTypes.has("web" /* web */)) {
77
+ await runner.runWeb(manual);
78
+ }
79
+ progress.shutdown();
80
+ if (args.forceExit) {
81
+ process.exit(0);
82
+ }
83
+ }
84
+ export {
85
+ main
86
+ };
87
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3Rlc3RpbmcvY2xpLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgMjAyMi0yMDI0IE1hdHRlci5qcyBBdXRob3JzXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuICovXG5cbmltcG9ydCBcIi4uL3V0aWwvbm9kZS1zaGltcy5qc1wiO1xuaW1wb3J0IFwiLi9nbG9iYWwtZGVmaW5pdGlvbnMuanNcIjtcblxuaW1wb3J0IHlhcmdzIGZyb20gXCJ5YXJnc1wiO1xuaW1wb3J0IHsgaGlkZUJpbiB9IGZyb20gXCJ5YXJncy9oZWxwZXJzXCI7XG5pbXBvcnQgeyBCdWlsZGVyIH0gZnJvbSBcIi4uL2J1aWxkaW5nL2J1aWxkZXIuanNcIjtcbmltcG9ydCB7IEdyYXBoIH0gZnJvbSBcIi4uL2J1aWxkaW5nL2dyYXBoLmpzXCI7XG5pbXBvcnQgeyBQcm9qZWN0IH0gZnJvbSBcIi4uL2J1aWxkaW5nL3Byb2plY3QuanNcIjtcbmltcG9ydCB7IFRlc3RSdW5uZXIgfSBmcm9tIFwiLi9ydW5uZXIuanNcIjtcblxuZW51bSBUZXN0VHlwZSB7XG4gICAgZXNtID0gXCJlc21cIixcbiAgICBjanMgPSBcImNqc1wiLFxuICAgIHdlYiA9IFwid2ViXCIsXG59XG5cbkVycm9yLnN0YWNrVHJhY2VMaW1pdCA9IDUwO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbWFpbihhcmd2ID0gcHJvY2Vzcy5hcmd2KSB7XG4gICAgY29uc3QgdGVzdFR5cGVzID0gbmV3IFNldDxUZXN0VHlwZT4oKTtcblxuICAgIGxldCBtYW51YWwgPSBmYWxzZTtcblxuICAgIGNvbnN0IGFyZ3MgPSBhd2FpdCB5YXJncyhoaWRlQmluKGFyZ3YpKVxuICAgICAgICAudXNhZ2UoXCJSdW5zIHRlc3RzIGluIHBhY2thZ2VzIGFkaGVyaW5nIHRvIG1hdHRlci5qcyBzdGFuZGFyZHMuXCIpXG4gICAgICAgIC5vcHRpb24oXCJwcmVmaXhcIiwge1xuICAgICAgICAgICAgYWxpYXM6IFwicFwiLFxuICAgICAgICAgICAgZGVmYXVsdDogXCIuXCIsXG4gICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgZGVzY3JpYmU6IFwic3BlY2lmeSBkaXJlY3Rvcnkgb2YgcGFja2FnZSB0byB0ZXN0XCIsXG4gICAgICAgIH0pXG4gICAgICAgIC5vcHRpb24oXCJ3ZWJcIiwge1xuICAgICAgICAgICAgYWxpYXM6IFwid1wiLFxuICAgICAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgICAgIGRlc2NyaWJlOiBcImVuYWJsZSB3ZWIgdGVzdHMgaW4gZGVmYXVsdCB0ZXN0IG1vZGVcIixcbiAgICAgICAgfSlcbiAgICAgICAgLm9wdGlvbihcInNwZWNcIiwge1xuICAgICAgICAgICAgdHlwZTogXCJhcnJheVwiLFxuICAgICAgICAgICAgc3RyaW5nOiB0cnVlLFxuICAgICAgICAgICAgZGVzY3JpYmU6IFwiT25lIG9yIG1vcmUgcGF0aHMgb2YgdGVzdHMgdG8gcnVuXCIsXG4gICAgICAgICAgICBkZWZhdWx0OiBcIi4vdGVzdC8qKi8qVGVzdC50c1wiLFxuICAgICAgICB9KVxuICAgICAgICAub3B0aW9uKFwiYWxsLWxvZ3NcIiwgeyB0eXBlOiBcImJvb2xlYW5cIiwgZGVzY3JpYmU6IFwiRW1pdCBsb2cgbWVzc2FnZXMgaW4gcmVhbCB0aW1lXCIgfSlcbiAgICAgICAgLm9wdGlvbihcImRlYnVnXCIsIHsgdHlwZTogXCJib29sZWFuXCIsIGRlc2NyaWJlOiBcIkVuYWJsZSBNb2NoYSBkZWJ1Z2dpbmdcIiB9KVxuICAgICAgICAub3B0aW9uKFwiZW52aXJvbm1lbnRcIiwgeyBhbGlhczogXCJlXCIsIHR5cGU6IFwic3RyaW5nXCIsIGRlc2NyaWJlOiBcIlNlbGVjdCBuYW1lZCB0ZXN0IGVudmlyb25tZW50XCIgfSlcbiAgICAgICAgLm9wdGlvbihcImZncmVwXCIsIHsgYWxpYXM6IFwiZlwiLCB0eXBlOiBcInN0cmluZ1wiLCBkZXNjcmliZTogXCJPbmx5IHJ1biB0ZXN0cyBtYXRjaGluZyB0aGlzIHN0cmluZ1wiIH0pXG4gICAgICAgIC5vcHRpb24oXCJmb3JjZS1leGl0XCIsIHsgdHlwZTogXCJib29sZWFuXCIsIGRlc2NyaWJlOiBcIkZvcmNlIE5vZGUgdG8gZXhpdCBhZnRlciB0ZXN0cyBjb21wbGV0ZVwiIH0pXG4gICAgICAgIC5vcHRpb24oXCJncmVwXCIsIHsgYWxpYXM6IFwiZ1wiLCB0eXBlOiBcInN0cmluZ1wiLCBkZXNjcmliZTogXCJPbmx5IHJ1biB0ZXN0cyBtYXRjaGluZyB0aGlzIHJlZ2V4cFwiIH0pXG4gICAgICAgIC5vcHRpb24oXCJpbnZlcnRcIiwgeyBhbGlhczogXCJpXCIsIHR5cGU6IFwiYm9vbGVhblwiLCBkZXNjcmliZTogXCJJbnZlcnRzIC0tZ3JlcCBhbmQgLS1mZ3JlcCBtYXRjaGVzXCIgfSlcbiAgICAgICAgLm9wdGlvbihcInByb2ZpbGVcIiwgeyB0eXBlOiBcImJvb2xlYW5cIiwgZGVzY3JpYmU6IFwiV3JpdGUgcHJvZmlsaW5nIGRhdGEgdG8gYnVpbGQvcHJvZmlsZXMgKG5vZGUgb25seSlcIiB9KVxuICAgICAgICAub3B0aW9uKFwid3RmXCIsIHsgdHlwZTogXCJib29sZWFuXCIsIGRlc2NyaWJlOiBcIkVubGlzdCB3dGZub2RlIHRvIGRldGVjdCB0ZXN0IGxlYWtzXCIgfSlcbiAgICAgICAgLm9wdGlvbihcInRyYWNlLXVuaGFuZGxlZFwiLCB7IHR5cGU6IFwiYm9vbGVhblwiLCBkZXNjcmliZTogXCJEZXRhaWwgdW5oYW5kbGVkIHJlamVjdGlvbnMgd2l0aCB0cmFjZS11bmhhbmRsZWRcIiB9KVxuICAgICAgICAuY29tbWFuZChcIipcIiwgXCJydW4gYWxsIHN1cHBvcnRlZCB0ZXN0IHR5cGVzXCIpXG4gICAgICAgIC5jb21tYW5kKFwiZXNtXCIsIFwicnVuIHRlc3RzIG9uIG5vZGUgKEVTNiBtb2R1bGVzKVwiLCAoKSA9PiB0ZXN0VHlwZXMuYWRkKFRlc3RUeXBlLmVzbSkpXG4gICAgICAgIC5jb21tYW5kKFwiY2pzXCIsIFwicnVuIHRlc3RzIG9uIG5vZGUgKENvbW1vbkpTIG1vZHVsZXMpXCIsICgpID0+IHRlc3RUeXBlcy5hZGQoVGVzdFR5cGUuY2pzKSlcbiAgICAgICAgLmNvbW1hbmQoXCJ3ZWJcIiwgXCJydW4gdGVzdHMgaW4gd2ViIGJyb3dzZXJcIiwgKCkgPT4gdGVzdFR5cGVzLmFkZChUZXN0VHlwZS53ZWIpKVxuICAgICAgICAuY29tbWFuZChcIm1hbnVhbFwiLCBcInN0YXJ0IHRlc3Qgc2VydmVyIGFuZCBwcmludCBVUkwgZm9yIG1hbnVhbCB0ZXN0aW5nXCIsICgpID0+IHtcbiAgICAgICAgICAgIHRlc3RUeXBlcy5hZGQoVGVzdFR5cGUud2ViKTtcbiAgICAgICAgICAgIG1hbnVhbCA9IHRydWU7XG4gICAgICAgIH0pXG4gICAgICAgIC5zdHJpY3QoKS5hcmd2O1xuXG4gICAgLy8gSWYgc3BlYyBzcGVjaWZpZWQgYW5kIHByZWZpeCBpcyBkZWZhdWx0LCB1c2UgdGhlIHNwZWMgZmlsZSB0byBsb2NhdGUgdGhlIHBhY2thZ2VcbiAgICBsZXQgcGFja2FnZUxvY2F0aW9uID0gYXJncy5wcmVmaXg7XG4gICAgaWYgKHBhY2thZ2VMb2NhdGlvbiA9PT0gXCIuXCIgJiYgYXJncy5zcGVjKSB7XG4gICAgICAgIGNvbnN0IGZpcnN0U3BlYyA9IEFycmF5LmlzQXJyYXkoYXJncy5zcGVjKSA/IGFyZ3Muc3BlY1swXSA6IGFyZ3Muc3BlYztcbiAgICAgICAgcGFja2FnZUxvY2F0aW9uID0gZmlyc3RTcGVjO1xuICAgIH1cblxuICAgIGNvbnN0IHByb2plY3QgPSBuZXcgUHJvamVjdChwYWNrYWdlTG9jYXRpb24pO1xuXG4gICAgcHJvY2Vzcy5jaGRpcihwcm9qZWN0LnBrZy5wYXRoKTtcblxuICAgIC8vIElmIG5vIHRlc3QgdHlwZXMgYXJlIHNwZWNpZmllZCBleHBsaWNpdGx5LCBydW4gYWxsIGVuYWJsZWQgdHlwZXNcbiAgICBpZiAoIXRlc3RUeXBlcy5zaXplKSB7XG4gICAgICAgIGlmIChwcm9qZWN0LnBrZy5zdXBwb3J0c0VzbSkge1xuICAgICAgICAgICAgdGVzdFR5cGVzLmFkZChUZXN0VHlwZS5lc20pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwcm9qZWN0LnBrZy5zdXBwb3J0c0Nqcykge1xuICAgICAgICAgICAgdGVzdFR5cGVzLmFkZChUZXN0VHlwZS5janMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhcmdzLndlYikge1xuICAgICAgICAgICAgdGVzdFR5cGVzLmFkZChUZXN0VHlwZS53ZWIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgYnVpbGRlciA9IG5ldyBCdWlsZGVyKCk7XG4gICAgY29uc3QgZGVwZW5kZW5jaWVzID0gYXdhaXQgR3JhcGguZm9yUHJvamVjdChwYWNrYWdlTG9jYXRpb24pO1xuICAgIGlmIChkZXBlbmRlbmNpZXMpIHtcbiAgICAgICAgYXdhaXQgZGVwZW5kZW5jaWVzLmJ1aWxkKGJ1aWxkZXIsIGZhbHNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBhd2FpdCBidWlsZGVyLmJ1aWxkKHByb2plY3QpO1xuICAgIH1cblxuICAgIGNvbnN0IHByb2dyZXNzID0gcHJvamVjdC5wa2cuc3RhcnQoXCJUZXN0aW5nXCIpO1xuICAgIGNvbnN0IHJ1bm5lciA9IG5ldyBUZXN0UnVubmVyKHByb2plY3QucGtnLCBwcm9ncmVzcywgYXJncyk7XG5cbiAgICBpZiAodGVzdFR5cGVzLmhhcyhUZXN0VHlwZS5lc20pKSB7XG4gICAgICAgIGF3YWl0IHJ1bm5lci5ydW5Ob2RlKFwiZXNtXCIpO1xuICAgIH1cblxuICAgIGlmICh0ZXN0VHlwZXMuaGFzKFRlc3RUeXBlLmNqcykpIHtcbiAgICAgICAgYXdhaXQgcnVubmVyLnJ1bk5vZGUoXCJjanNcIik7XG4gICAgfVxuXG4gICAgaWYgKHRlc3RUeXBlcy5oYXMoVGVzdFR5cGUud2ViKSkge1xuICAgICAgICBhd2FpdCBydW5uZXIucnVuV2ViKG1hbnVhbCk7XG4gICAgfVxuXG4gICAgcHJvZ3Jlc3Muc2h1dGRvd24oKTtcblxuICAgIGlmIChhcmdzLmZvcmNlRXhpdCkge1xuICAgICAgICBwcm9jZXNzLmV4aXQoMCk7XG4gICAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQU1BLE9BQU87QUFDUCxPQUFPO0FBRVAsT0FBTyxXQUFXO0FBQ2xCLFNBQVMsZUFBZTtBQUN4QixTQUFTLGVBQWU7QUFDeEIsU0FBUyxhQUFhO0FBQ3RCLFNBQVMsZUFBZTtBQUN4QixTQUFTLGtCQUFrQjtBQUUzQixJQUFLLFdBQUwsa0JBQUtBLGNBQUw7QUFDSSxFQUFBQSxVQUFBLFNBQU07QUFDTixFQUFBQSxVQUFBLFNBQU07QUFDTixFQUFBQSxVQUFBLFNBQU07QUFITCxTQUFBQTtBQUFBLEdBQUE7QUFNTCxNQUFNLGtCQUFrQjtBQUV4QixlQUFzQixLQUFLLE9BQU8sUUFBUSxNQUFNO0FBQzVDLFFBQU0sWUFBWSxvQkFBSSxJQUFjO0FBRXBDLE1BQUksU0FBUztBQUViLFFBQU0sT0FBTyxNQUFNLE1BQU0sUUFBUSxJQUFJLENBQUMsRUFDakMsTUFBTSx5REFBeUQsRUFDL0QsT0FBTyxVQUFVO0FBQUEsSUFDZCxPQUFPO0FBQUEsSUFDUCxTQUFTO0FBQUEsSUFDVCxNQUFNO0FBQUEsSUFDTixVQUFVO0FBQUEsRUFDZCxDQUFDLEVBQ0EsT0FBTyxPQUFPO0FBQUEsSUFDWCxPQUFPO0FBQUEsSUFDUCxTQUFTO0FBQUEsSUFDVCxNQUFNO0FBQUEsSUFDTixVQUFVO0FBQUEsRUFDZCxDQUFDLEVBQ0EsT0FBTyxRQUFRO0FBQUEsSUFDWixNQUFNO0FBQUEsSUFDTixRQUFRO0FBQUEsSUFDUixVQUFVO0FBQUEsSUFDVixTQUFTO0FBQUEsRUFDYixDQUFDLEVBQ0EsT0FBTyxZQUFZLEVBQUUsTUFBTSxXQUFXLFVBQVUsaUNBQWlDLENBQUMsRUFDbEYsT0FB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
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/testing/cli.ts"],
4
+ "mappings": "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",
5
+ "names": ["TestType"]
6
+ }
@@ -0,0 +1,19 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export interface FailureDetail {
7
+ message: string;
8
+ stack?: string;
9
+ diff?: string;
10
+ logs?: string;
11
+ cause?: FailureDetail;
12
+ errors?: FailureDetail[];
13
+ }
14
+ export declare function FailureDetail(error: any, logs?: string[]): FailureDetail;
15
+ export declare namespace FailureDetail {
16
+ function dump(failure: FailureDetail, prefix?: string): void;
17
+ let diff: undefined | ((actual: string, expected: string) => string);
18
+ }
19
+ //# sourceMappingURL=failure-detail.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"failure-detail.d.ts","sourceRoot":"","sources":["../../../src/testing/failure-detail.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,WAAW,aAAa;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,MAAM,CAAC,EAAE,aAAa,EAAE,CAAC;CAC5B;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,iBAgCxD;AAED,yBAAiB,aAAa,CAAC;IAC3B,SAAgB,IAAI,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,GAAE,MAAW,QA2B/D;IAEM,IAAI,IAAI,EAAE,SAAS,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC;CAC/E"}
@@ -0,0 +1,113 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import colors from "ansi-colors";
7
+ function FailureDetail(error, logs) {
8
+ let diff;
9
+ const { message, stack, cause, errors } = parseError(error);
10
+ if (error.expected && error.actual) {
11
+ if (FailureDetail.diff === void 0) {
12
+ diff = "(no diff implementation installed)";
13
+ } else {
14
+ diff = FailureDetail.diff(error.actual.toString(), error.expected.toString());
15
+ diff = diff.trim().replace(/^ {6}/gms, "");
16
+ }
17
+ }
18
+ const result = { message };
19
+ if (diff) {
20
+ result.diff = diff;
21
+ }
22
+ if (stack) {
23
+ result.stack = stack;
24
+ }
25
+ if (logs?.length) {
26
+ result.logs = logs.join("\n");
27
+ }
28
+ if (cause) {
29
+ result.cause = cause;
30
+ }
31
+ if (errors) {
32
+ result.errors = errors;
33
+ }
34
+ return result;
35
+ }
36
+ ((FailureDetail2) => {
37
+ function dump(failure, prefix = "") {
38
+ process.stdout.write(colors.redBright(`${prefix}${failure.message}
39
+
40
+ `));
41
+ if (failure.diff) {
42
+ process.stdout.write(`${prefix} ${failure.diff.replace(/\n/gm, "\n ")}
43
+
44
+ `);
45
+ }
46
+ if (failure.stack) {
47
+ process.stdout.write(`${prefix}${colors.dim(failure.stack.replace(/\n/gm, `
48
+ ${prefix}`))}
49
+
50
+ `);
51
+ }
52
+ if (failure.cause) {
53
+ process.stdout.write(`${prefix}Caused by:
54
+
55
+ `);
56
+ dump(failure.cause, prefix);
57
+ }
58
+ if (failure.errors?.length) {
59
+ let num = 0;
60
+ for (const cause of failure.errors) {
61
+ process.stdout.write(`${prefix}Cause #${++num}:
62
+
63
+ `);
64
+ dump(cause, `${prefix} `);
65
+ }
66
+ }
67
+ if (failure.logs) {
68
+ process.stdout.write(` ${failure.logs.replace(/\n/gm, "\n ")}
69
+
70
+ `);
71
+ }
72
+ }
73
+ FailureDetail2.dump = dump;
74
+ })(FailureDetail || (FailureDetail = {}));
75
+ function parseError(error) {
76
+ let message, stack, cause, errors;
77
+ if (error === void 0 || error === null) {
78
+ message = `(error is ${error})`;
79
+ } else {
80
+ message = error.message;
81
+ }
82
+ if (error.stack) {
83
+ let lines = error.stack.trim().split("\n");
84
+ if (!message) {
85
+ message = lines[0];
86
+ }
87
+ lines = lines.filter((line) => line.match(/:\d+:\d+\)?/));
88
+ if (lines.length) {
89
+ stack = lines.map((line) => line.trim()).join("\n");
90
+ }
91
+ } else if (error.message) {
92
+ message = error.message;
93
+ } else {
94
+ message = error.toString();
95
+ }
96
+ message = message.trim().replace(/Error: /, "");
97
+ if (message.endsWith(":")) {
98
+ message = message.slice(0, message.length - 1);
99
+ }
100
+ const errorCause = error.cause;
101
+ if (errorCause) {
102
+ cause = FailureDetail(errorCause);
103
+ }
104
+ const errorErrors = error.errors;
105
+ if (Array.isArray(errorErrors)) {
106
+ errors = errorErrors.map((e) => FailureDetail(e));
107
+ }
108
+ return { message, stack, cause, errors };
109
+ }
110
+ export {
111
+ FailureDetail
112
+ };
113
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3Rlc3RpbmcvZmFpbHVyZS1kZXRhaWwudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCAyMDIyLTIwMjQgTWF0dGVyLmpzIEF1dGhvcnNcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG4gKi9cblxuaW1wb3J0IGNvbG9ycyBmcm9tIFwiYW5zaS1jb2xvcnNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBGYWlsdXJlRGV0YWlsIHtcbiAgICBtZXNzYWdlOiBzdHJpbmc7XG4gICAgc3RhY2s/OiBzdHJpbmc7XG4gICAgZGlmZj86IHN0cmluZztcbiAgICBsb2dzPzogc3RyaW5nO1xuICAgIGNhdXNlPzogRmFpbHVyZURldGFpbDtcbiAgICBlcnJvcnM/OiBGYWlsdXJlRGV0YWlsW107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBGYWlsdXJlRGV0YWlsKGVycm9yOiBhbnksIGxvZ3M/OiBzdHJpbmdbXSkge1xuICAgIGxldCBkaWZmOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCB7IG1lc3NhZ2UsIHN0YWNrLCBjYXVzZSwgZXJyb3JzIH0gPSBwYXJzZUVycm9yKGVycm9yKTtcblxuICAgIGlmIChlcnJvci5leHBlY3RlZCAmJiBlcnJvci5hY3R1YWwpIHtcbiAgICAgICAgaWYgKEZhaWx1cmVEZXRhaWwuZGlmZiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBkaWZmID0gXCIobm8gZGlmZiBpbXBsZW1lbnRhdGlvbiBpbnN0YWxsZWQpXCI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkaWZmID0gRmFpbHVyZURldGFpbC5kaWZmKGVycm9yLmFjdHVhbC50b1N0cmluZygpLCBlcnJvci5leHBlY3RlZC50b1N0cmluZygpKTtcbiAgICAgICAgICAgIGRpZmYgPSBkaWZmLnRyaW0oKS5yZXBsYWNlKC9eIHs2fS9nbXMsIFwiXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0geyBtZXNzYWdlIH0gYXMgRmFpbHVyZURldGFpbDtcbiAgICBpZiAoZGlmZikge1xuICAgICAgICByZXN1bHQuZGlmZiA9IGRpZmY7XG4gICAgfVxuICAgIGlmIChzdGFjaykge1xuICAgICAgICByZXN1bHQuc3RhY2sgPSBzdGFjaztcbiAgICB9XG4gICAgaWYgKGxvZ3M/Lmxlbmd0aCkge1xuICAgICAgICByZXN1bHQubG9ncyA9IGxvZ3Muam9pbihcIlxcblwiKTtcbiAgICB9XG4gICAgaWYgKGNhdXNlKSB7XG4gICAgICAgIHJlc3VsdC5jYXVzZSA9IGNhdXNlO1xuICAgIH1cbiAgICBpZiAoZXJyb3JzKSB7XG4gICAgICAgIHJlc3VsdC5lcnJvcnMgPSBlcnJvcnM7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBGYWlsdXJlRGV0YWlsIHtcbiAgICBleHBvcnQgZnVuY3Rpb24gZHVtcChmYWlsdXJlOiBGYWlsdXJlRGV0YWlsLCBwcmVmaXg6IHN0cmluZyA9IFwiXCIpIHtcbiAgICAgICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoY29sb3JzLnJlZEJyaWdodChgJHtwcmVmaXh9JHtmYWlsdXJlLm1lc3NhZ2V9XFxuXFxuYCkpO1xuXG4gICAgICAgIGlmIChmYWlsdXJlLmRpZmYpIHtcbiAgICAgICAgICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKGAke3ByZWZpeH0gICAgJHtmYWlsdXJlLmRpZmYucmVwbGFjZSgvXFxuL2dtLCBcIlxcbiAgICAgIFwiKX1cXG5cXG5gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmYWlsdXJlLnN0YWNrKSB7XG4gICAgICAgICAgICBwcm9jZXNzLnN0ZG91dC53cml0ZShgJHtwcmVmaXh9JHtjb2xvcnMuZGltKGZhaWx1cmUuc3RhY2sucmVwbGFjZSgvXFxuL2dtLCBgXFxuJHtwcmVmaXh9YCkpfVxcblxcbmApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZhaWx1cmUuY2F1c2UpIHtcbiAgICAgICAgICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKGAke3ByZWZpeH1DYXVzZWQgYnk6XFxuXFxuYCk7XG4gICAgICAgICAgICBkdW1wKGZhaWx1cmUuY2F1c2UsIHByZWZpeCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZmFpbHVyZS5lcnJvcnM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgbGV0IG51bSA9IDA7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNhdXNlIG9mIGZhaWx1cmUuZXJyb3JzKSB7XG4gICAgICAgICAgICAgICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoYCR7cHJlZml4fUNhdXNlICMkeysrbnVtfTpcXG5cXG5gKTtcbiAgICAgICAgICAgICAgICBkdW1wKGNhdXNlLCBgJHtwcmVmaXh9ICBgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmYWlsdXJlLmxvZ3MpIHtcbiAgICAgICAgICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKGAgICR7ZmFpbHVyZS5sb2dzLnJlcGxhY2UoL1xcbi9nbSwgXCJcXG4gIFwiKX1cXG5cXG5gKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGV4cG9ydCBsZXQgZGlmZjogdW5kZWZpbmVkIHwgKChhY3R1YWw6IHN0cmluZywgZXhwZWN0ZWQ6IHN0cmluZykgPT4gc3RyaW5nKTtcbn1cblxuZnVuY3Rpb24gcGFyc2VFcnJvcihlcnJvcjogRXJyb3IpIHtcbiAgICBsZXQgbWVzc2FnZSwgc3RhY2ssIGNhdXNlOiBGYWlsdXJlRGV0YWlsIHwgdW5kZWZpbmVkLCBlcnJvcnM6IEZhaWx1cmVEZXRhaWxbXSB8IHVuZGVmaW5lZDtcblxuICAgIGlmIChlcnJvciA9PT0gdW5kZWZpbmVkIHx8IGVycm9yID09PSBudWxsKSB7XG4gICAgICAgIG1lc3NhZ2UgPSBgKGVycm9yIGlzICR7ZXJyb3J9KWA7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbWVzc2FnZSA9IGVycm9yLm1lc3NhZ2U7XG4gICAgfVxuXG4gICAgaWYgKGVycm9yLnN0YWNrKSB7XG4gICAgICAgIGxldCBsaW5lcyA9IGVycm9yLnN0YWNrLnRyaW0oKS5zcGxpdChcIlxcblwiKTtcbiAgICAgICAgaWYgKCFtZXNzYWdlKSB7XG4gICAgICAgICAgICBtZXNzYWdlID0gbGluZXNbMF07XG4gICAgICAgIH1cbiAgICAgICAgbGluZXMgPSBsaW5lcy5maWx0ZXIobGluZSA9PiBsaW5lLm1hdGNoKC86XFxkKzpcXGQrXFwpPy8pKTtcbiAgICAgICAgaWYgKGxpbmVzLmxlbmd0aCkge1xuICAgICAgICAgICAgc3RhY2sgPSBsaW5lcy5tYXAobGluZSA9PiBsaW5lLnRyaW0oKSkuam9pbihcIlxcblwiKTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZXJyb3IubWVzc2FnZSkge1xuICAgICAgICBtZXNzYWdlID0gZXJyb3IubWVzc2FnZTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBtZXNzYWdlID0gZXJyb3IudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICBtZXNzYWdlID0gbWVzc2FnZS50cmltKCkucmVwbGFjZSgvRXJyb3I6IC8sIFwiXCIpO1xuXG4gICAgaWYgKG1lc3NhZ2UuZW5kc1dpdGgoXCI6XCIpKSB7XG4gICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnNsaWNlKDAsIG1lc3NhZ2UubGVuZ3RoIC0gMSk7XG4gICAgfVxuXG4gICAgY29uc3QgZXJyb3JDYXVzZSA9IGVycm9yLmNhdXNlO1xuICAgIGlmIChlcnJvckNhdXNlKSB7XG4gICAgICAgIGNhdXNlID0gRmFpbHVyZURldGFpbChlcnJvckNhdXNlKTtcbiAgICB9XG5cbiAgICBjb25zdCBlcnJvckVycm9ycyA9IChlcnJvciBhcyBBZ2dyZWdhdGVFcnJvcikuZXJyb3JzO1xuICAgIGlmIChBcnJheS5pc0FycmF5KGVycm9yRXJyb3JzKSkge1xuICAgICAgICBlcnJvcnMgPSBlcnJvckVycm9ycy5tYXAoZSA9PiBGYWlsdXJlRGV0YWlsKGUpKTtcbiAgICB9XG5cbiAgICByZXR1cm4geyBtZXNzYWdlLCBzdGFjaywgY2F1c2UsIGVycm9ycyB9O1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQU1BLE9BQU8sWUFBWTtBQVdaLFNBQVMsY0FBYyxPQUFZLE1BQWlCO0FBQ3ZELE1BQUk7QUFFSixRQUFNLEVBQUUsU0FBUyxPQUFPLE9BQU8sT0FBTyxJQUFJLFdBQVcsS0FBSztBQUUxRCxNQUFJLE1BQU0sWUFBWSxNQUFNLFFBQVE7QUFDaEMsUUFBSSxjQUFjLFNBQVMsUUFBVztBQUNsQyxhQUFPO0FBQUEsSUFDWCxPQUFPO0FBQ0gsYUFBTyxjQUFjLEtBQUssTUFBTSxPQUFPLFNBQVMsR0FBRyxNQUFNLFNBQVMsU0FBUyxDQUFDO0FBQzVFLGFBQU8sS0FBSyxLQUFLLEVBQUUsUUFBUSxZQUFZLEVBQUU7QUFBQSxJQUM3QztBQUFBLEVBQ0o7QUFFQSxRQUFNLFNBQVMsRUFBRSxRQUFRO0FBQ3pCLE1BQUksTUFBTTtBQUNOLFdBQU8sT0FBTztBQUFBLEVBQ2xCO0FBQ0EsTUFBSSxPQUFPO0FBQ1AsV0FBTyxRQUFRO0FBQUEsRUFDbkI7QUFDQSxNQUFJLE1BQU0sUUFBUTtBQUNkLFdBQU8sT0FBTyxLQUFLLEtBQUssSUFBSTtBQUFBLEVBQ2hDO0FBQ0EsTUFBSSxPQUFPO0FBQ1AsV0FBTyxRQUFRO0FBQUEsRUFDbkI7QUFDQSxNQUFJLFFBQVE7QUFDUixXQUFPLFNBQVM7QUFBQSxFQUNwQjtBQUVBLFNBQU87QUFDWDtBQUFBLENBRU8sQ0FBVUEsbUJBQVY7QUFDSSxXQUFTLEtBQUssU0FBd0IsU0FBaUIsSUFBSTtBQUM5RCxZQUFRLE9BQU8sTUFBTSxPQUFPLFVBQVUsR0FBRyxNQUFNLEdBQUcsUUFBUSxPQUFPO0FBQUE7QUFBQSxDQUFNLENBQUM7QUFFeEUsUUFBSSxRQUFRLE1BQU07QUFDZCxjQUFRLE9BQU8sTUFBTSxHQUFHLE1BQU0sT0FBTyxRQUFRLEtBQUssUUFBUSxRQUFRLFVBQVUsQ0FBQztBQUFBO0FBQUEsQ0FBTTtBQUFBLElBQ3ZGO0FBRUEsUUFBSSxRQUFRLE9BQU87QUFDZixjQUFRLE9BQU8sTUFBTSxHQUFHLE1BQU0sR0FBRyxPQUFPLElBQUksUUFBUSxNQUFNLFFBQVEsUUFBUTtBQUFBLEVBQUssTUFBTSxFQUFFLENBQUMsQ0FBQztBQUFBO0FBQUEsQ0FBTTtBQUFBLElBQ25HO0FBRUEsUUFBSSxRQUFRLE9BQU87QUFDZixjQUFRLE9BQU8sTUFBTSxHQUFHLE1BQU07QUFBQTtBQUFBLENBQWdCO0FBQzlDLFdBQUssUUFBUSxPQUFPLE1BQU07QUFBQSxJQUM5QjtBQUVBLFFBQUksUUFBUSxRQUFRLFFBQVE7QUFDeEIsVUFBSSxNQUFNO0FBQ1YsaUJBQVcsU0FBUyxRQUFRLFFBQVE7QUFDaEMsZ0JBQVEsT0FBTyxNQUFNLEdBQUcsTUFBTSxVQUFVLEVBQUUsR0FBRztBQUFBO0FBQUEsQ0FBTztBQUNwRCxhQUFLLE9BQU8sR0FBRyxNQUFNLElBQUk7QUFBQSxNQUM3QjtBQUFBLElBQ0o7QUFFQSxRQUFJLFFBQVEsTUFBTTtBQUNkLGNBQVEsT0FBTyxNQUFNLEtBQUssUUFBUSxLQUFLLFFBQVEsUUFBUSxNQUFNLENBQUM7QUFBQTtBQUFBLENBQU07QUFBQSxJQUN4RTtBQUFBLEVBQ0o7QUEzQk8sRUFBQUEsZUFBUztBQUFBLEdBREg7QUFpQ2pCLFNBQVMsV0FBVyxPQUFjO0FBQzlCLE1BQUksU0FBUyxPQUFPLE9BQWtDO0FBRXRELE1BQUksVUFBVSxVQUFhLFVBQVUsTUFBTTtBQUN2QyxjQUFVLGFBQWEsS0FBSztBQUFBLEVBQ2hDLE9BQU87QUFDSCxjQUFVLE1BQU07QUFBQSxFQUNwQjtBQUVBLE1BQUksTUFBTSxPQUFPO0FBQ2IsUUFBSSxRQUFRLE1BQU0sTUFBTSxLQUFLLEVBQUUsTUFBTSxJQUFJO0FBQ3pDLFFBQUksQ0FBQyxTQUFTO0FBQ1YsZ0JBQVUsTUFBTSxDQUFDO0FBQUEsSUFDckI7QUFDQSxZQUFRLE1BQU0sT0FBTyxVQUFRLEtBQUssTUFBTSxhQUFhLENBQUM7QUFDdEQsUUFBSSxNQUFNLFFBQVE7QUFDZCxjQUFRLE1BQU0sSUFBSSxVQUFRLEtBQUssS0FBSyxDQUFDLEVBQUUsS0FBSyxJQUFJO0FBQUEsSUFDcEQ7QUFBQSxFQUNKLFdBQVcsTUFBTSxTQUFTO0FBQ3RCLGNBQVUsTUFBTTtBQUFBLEVBQ3BCLE9BQU87QUFDSCxjQUFVLE1BQU0sU0FBUztBQUFBLEVBQzdCO0FBRUEsWUFBVSxRQUFRLEtBQUssRUFBRSxRQUFRLFdBQVcsRUFBRTtBQUU5QyxNQUFJLFFBQVEsU0FBUyxHQUFHLEdBQUc7QUFDdkIsY0FBVSxRQUFRLE1BQU0sR0FBRyxRQUFRLFNBQVMsQ0FBQztBQUFBLEVBQ2pEO0FBRUEsUUFBTSxhQUFhLE1BQU07QUFDekIsTUFBSSxZQUFZO0FBQ1osWUFBUSxjQUFjLFVBQVU7QUFBQSxFQUNwQztBQUVBLFFBQU0sY0FBZSxNQUF5QjtBQUM5QyxNQUFJLE1BQU0sUUFBUSxXQUFXLEdBQUc7QUFDNUIsYUFBUyxZQUFZLElBQUksT0FBSyxjQUFjLENBQUMsQ0FBQztBQUFBLEVBQ2xEO0FBRUEsU0FBTyxFQUFFLFNBQVMsT0FBTyxPQUFPLE9BQU87QUFDM0M7IiwKICAibmFtZXMiOiBbIkZhaWx1cmVEZXRhaWwiXQp9Cg==
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/testing/failure-detail.ts"],
4
+ "mappings": "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",
5
+ "names": ["FailureDetail"]
6
+ }