@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,50 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Progress } from "../util/progress.js";
7
+ import { FailureDetail } from "./failure-detail.js";
8
+ export type Stats = {
9
+ total: number;
10
+ complete: number;
11
+ failures: number;
12
+ };
13
+ export interface Reporter {
14
+ beginRun(name: string, stats?: Stats, supportsSuites?: boolean): void;
15
+ beginSuite(name: string[], stats?: Stats): void;
16
+ beginTest(name: string, stats?: Stats): void;
17
+ failTest(name: string, detail: FailureDetail): void;
18
+ endRun(stats?: Stats): void;
19
+ failRun(detail: FailureDetail): void;
20
+ }
21
+ export interface Failure {
22
+ suite: string[];
23
+ test: string;
24
+ detail: FailureDetail;
25
+ }
26
+ export declare abstract class ProgressReporter implements Reporter {
27
+ #private;
28
+ private progress;
29
+ private run;
30
+ private suite;
31
+ private failures;
32
+ private lastTitle?;
33
+ constructor(progress: Progress);
34
+ beginRun(name: string, stats: Stats | undefined, supportsSuites?: boolean): void;
35
+ beginSuite(name: string[]): void;
36
+ beginTest(name: string, stats?: Stats): void;
37
+ failTest(name: string, detail: FailureDetail): void;
38
+ abstract failRun(detail: FailureDetail): void;
39
+ endRun(stats?: Stats): void;
40
+ }
41
+ export declare class ConsoleProxyReporter implements Reporter {
42
+ static FLAG: string;
43
+ beginRun(name: string, stats?: Stats): void;
44
+ beginSuite(name: string[], stats?: Stats): void;
45
+ beginTest(name: string, stats?: Stats): void;
46
+ endRun(stats?: Stats): void;
47
+ failTest(name: string, detail: FailureDetail): void;
48
+ failRun(detail: FailureDetail): void;
49
+ }
50
+ //# sourceMappingURL=reporter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reporter.d.ts","sourceRoot":"","sources":["../../../src/testing/reporter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,MAAM,MAAM,KAAK,GAAG;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,WAAW,QAAQ;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACtE,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IAChD,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IAC7C,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC;IACpD,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IAC5B,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC;CACxC;AAED,MAAM,WAAW,OAAO;IACpB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,aAAa,CAAC;CACzB;AAED,8BAAsB,gBAAiB,YAAW,QAAQ;;IAM1C,OAAO,CAAC,QAAQ;IAL5B,OAAO,CAAC,GAAG,CAAM;IACjB,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,QAAQ,CAAoB;IACpC,OAAO,CAAC,SAAS,CAAC,CAAS;gBAEP,QAAQ,EAAE,QAAQ;IAEtC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,SAAS,EAAE,cAAc,UAAO,GAAG,IAAI;IAS7E,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI;IAIhC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI;IAS5C,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa;IAQ5C,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI;IAE7C,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI;CAqC9B;AASD,qBAAa,oBAAqB,YAAW,QAAQ;IACjD,MAAM,CAAC,IAAI,SAAiB;IAE5B,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;IAIpC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,CAAC,EAAE,KAAK;IAIxC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;IAIrC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK;IAIpB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa;IAI5C,OAAO,CAAC,MAAM,EAAE,aAAa;CAGhC"}
@@ -0,0 +1,107 @@
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
+ import { FailureDetail } from "./failure-detail.js";
8
+ class ProgressReporter {
9
+ constructor(progress) {
10
+ this.progress = progress;
11
+ }
12
+ run = "";
13
+ suite = Array();
14
+ failures = Array();
15
+ lastTitle;
16
+ beginRun(name, stats, supportsSuites = true) {
17
+ this.run = name;
18
+ this.suite = [];
19
+ this.failures = [];
20
+ if (!supportsSuites) {
21
+ this.progress.update(this.#summarize(stats));
22
+ }
23
+ }
24
+ beginSuite(name) {
25
+ this.suite = name;
26
+ }
27
+ beginTest(name, stats) {
28
+ const title = process.stdout.isTTY ? this.#formatName(this.suite, name) : this.suite[0];
29
+ if (this.lastTitle !== title) {
30
+ this.lastTitle = title;
31
+ this.progress.update(this.#summarize(stats), title);
32
+ }
33
+ }
34
+ failTest(name, detail) {
35
+ this.failures.push({
36
+ suite: this.suite,
37
+ test: name,
38
+ detail
39
+ });
40
+ }
41
+ endRun(stats) {
42
+ if (this.failures.length) {
43
+ this.progress.failure(this.#summarize(stats));
44
+ this.#dumpFailures();
45
+ } else if (stats && !stats.complete) {
46
+ this.progress.failure("No tests found");
47
+ } else {
48
+ this.progress.success(this.#summarize(stats));
49
+ }
50
+ }
51
+ #summarize(stats) {
52
+ let statStr;
53
+ if (stats) {
54
+ const complete = colors.dim(`${stats.complete}/${stats.total}`);
55
+ const failures = stats.failures ? colors.redBright(` ${stats.failures.toString()} failed`) : "";
56
+ statStr = ` ${complete}${failures}`;
57
+ } else {
58
+ statStr = "";
59
+ }
60
+ return `${colors.bold(this.run)}${statStr}`;
61
+ }
62
+ #dumpFailures() {
63
+ for (let i = 0; i < this.failures.length; i++) {
64
+ const failure = this.failures[i];
65
+ const index = `Failure ${colors.bold((i + 1).toString())} of ${this.failures.length}`;
66
+ process.stdout.write(`
67
+ ${index} ${this.#formatName(failure.suite, failure.test)}
68
+
69
+ `);
70
+ FailureDetail.dump(failure.detail, " ");
71
+ }
72
+ }
73
+ #formatName(suite, test) {
74
+ return `${suite.join(" \u27A1 ")} \u27A1 ${colors.bold(test)}`;
75
+ }
76
+ }
77
+ const actualConsole = console;
78
+ const actualLog = actualConsole.log;
79
+ function proxy(...args) {
80
+ actualLog.call(actualConsole, `${ConsoleProxyReporter.FLAG}${JSON.stringify(args)}`);
81
+ }
82
+ class ConsoleProxyReporter {
83
+ static FLAG = "<<REPORT>> ";
84
+ beginRun(name, stats) {
85
+ proxy("beginRun", name, stats);
86
+ }
87
+ beginSuite(name, stats) {
88
+ proxy("beginSuite", name, stats);
89
+ }
90
+ beginTest(name, stats) {
91
+ proxy("beginTest", name, stats);
92
+ }
93
+ endRun(stats) {
94
+ proxy("endRun", stats);
95
+ }
96
+ failTest(name, detail) {
97
+ proxy("failTest", name, detail);
98
+ }
99
+ failRun(detail) {
100
+ proxy("failRun", detail);
101
+ }
102
+ }
103
+ export {
104
+ ConsoleProxyReporter,
105
+ ProgressReporter
106
+ };
107
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3Rlc3RpbmcvcmVwb3J0ZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCAyMDIyLTIwMjQgTWF0dGVyLmpzIEF1dGhvcnNcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG4gKi9cblxuaW1wb3J0IGNvbG9ycyBmcm9tIFwiYW5zaS1jb2xvcnNcIjtcbmltcG9ydCB7IFByb2dyZXNzIH0gZnJvbSBcIi4uL3V0aWwvcHJvZ3Jlc3MuanNcIjtcbmltcG9ydCB7IEZhaWx1cmVEZXRhaWwgfSBmcm9tIFwiLi9mYWlsdXJlLWRldGFpbC5qc1wiO1xuXG5leHBvcnQgdHlwZSBTdGF0cyA9IHtcbiAgICB0b3RhbDogbnVtYmVyO1xuICAgIGNvbXBsZXRlOiBudW1iZXI7XG4gICAgZmFpbHVyZXM6IG51bWJlcjtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0ZXIge1xuICAgIGJlZ2luUnVuKG5hbWU6IHN0cmluZywgc3RhdHM/OiBTdGF0cywgc3VwcG9ydHNTdWl0ZXM/OiBib29sZWFuKTogdm9pZDtcbiAgICBiZWdpblN1aXRlKG5hbWU6IHN0cmluZ1tdLCBzdGF0cz86IFN0YXRzKTogdm9pZDtcbiAgICBiZWdpblRlc3QobmFtZTogc3RyaW5nLCBzdGF0cz86IFN0YXRzKTogdm9pZDtcbiAgICBmYWlsVGVzdChuYW1lOiBzdHJpbmcsIGRldGFpbDogRmFpbHVyZURldGFpbCk6IHZvaWQ7XG4gICAgZW5kUnVuKHN0YXRzPzogU3RhdHMpOiB2b2lkO1xuICAgIGZhaWxSdW4oZGV0YWlsOiBGYWlsdXJlRGV0YWlsKTogdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGYWlsdXJlIHtcbiAgICBzdWl0ZTogc3RyaW5nW107XG4gICAgdGVzdDogc3RyaW5nO1xuICAgIGRldGFpbDogRmFpbHVyZURldGFpbDtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFByb2dyZXNzUmVwb3J0ZXIgaW1wbGVtZW50cyBSZXBvcnRlciB7XG4gICAgcHJpdmF0ZSBydW4gPSBcIlwiO1xuICAgIHByaXZhdGUgc3VpdGUgPSBBcnJheTxzdHJpbmc+KCk7XG4gICAgcHJpdmF0ZSBmYWlsdXJlcyA9IEFycmF5PEZhaWx1cmU+KCk7XG4gICAgcHJpdmF0ZSBsYXN0VGl0bGU/OiBzdHJpbmc7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHByb2dyZXNzOiBQcm9ncmVzcykge31cblxuICAgIGJlZ2luUnVuKG5hbWU6IHN0cmluZywgc3RhdHM6IFN0YXRzIHwgdW5kZWZpbmVkLCBzdXBwb3J0c1N1aXRlcyA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ydW4gPSBuYW1lO1xuICAgICAgICB0aGlzLnN1aXRlID0gW107XG4gICAgICAgIHRoaXMuZmFpbHVyZXMgPSBbXTtcbiAgICAgICAgaWYgKCFzdXBwb3J0c1N1aXRlcykge1xuICAgICAgICAgICAgdGhpcy5wcm9ncmVzcy51cGRhdGUodGhpcy4jc3VtbWFyaXplKHN0YXRzKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBiZWdpblN1aXRlKG5hbWU6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3VpdGUgPSBuYW1lO1xuICAgIH1cblxuICAgIGJlZ2luVGVzdChuYW1lOiBzdHJpbmcsIHN0YXRzPzogU3RhdHMpOiB2b2lkIHtcbiAgICAgICAgLy8gSWYgbm90IGEgVFRZLCBvbmx5IHVwZGF0ZSBvbmNlIHBlciBzdWl0ZSB0byBrZWVwIHRoZSBsaW5lIGNvdW50IGRvd24gZm9yIGUuZy4gR0ggYWN0aW9uIGxvZ3NcbiAgICAgICAgY29uc3QgdGl0bGUgPSBwcm9jZXNzLnN0ZG91dC5pc1RUWSA/IHRoaXMuI2Zvcm1hdE5hbWUodGhpcy5zdWl0ZSwgbmFtZSkgOiB0aGlzLnN1aXRlWzBdO1xuICAgICAgICBpZiAodGhpcy5sYXN0VGl0bGUgIT09IHRpdGxlKSB7XG4gICAgICAgICAgICB0aGlzLmxhc3RUaXRsZSA9IHRpdGxlO1xuICAgICAgICAgICAgdGhpcy5wcm9ncmVzcy51cGRhdGUodGhpcy4jc3VtbWFyaXplKHN0YXRzKSwgdGl0bGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZmFpbFRlc3QobmFtZTogc3RyaW5nLCBkZXRhaWw6IEZhaWx1cmVEZXRhaWwpIHtcbiAgICAgICAgdGhpcy5mYWlsdXJlcy5wdXNoKHtcbiAgICAgICAgICAgIHN1aXRlOiB0aGlzLnN1aXRlLFxuICAgICAgICAgICAgdGVzdDogbmFtZSxcbiAgICAgICAgICAgIGRldGFpbCxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgYWJzdHJhY3QgZmFpbFJ1bihkZXRhaWw6IEZhaWx1cmVEZXRhaWwpOiB2b2lkO1xuXG4gICAgZW5kUnVuKHN0YXRzPzogU3RhdHMpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZmFpbHVyZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLnByb2dyZXNzLmZhaWx1cmUodGhpcy4jc3VtbWFyaXplKHN0YXRzKSk7XG4gICAgICAgICAgICB0aGlzLiNkdW1wRmFpbHVyZXMoKTtcbiAgICAgICAgfSBlbHNlIGlmIChzdGF0cyAmJiAhc3RhdHMuY29tcGxldGUpIHtcbiAgICAgICAgICAgIHRoaXMucHJvZ3Jlc3MuZmFpbHVyZShcIk5vIHRlc3RzIGZvdW5kXCIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5wcm9ncmVzcy5zdWNjZXNzKHRoaXMuI3N1bW1hcml6ZShzdGF0cykpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgI3N1bW1hcml6ZShzdGF0cz86IFN0YXRzKSB7XG4gICAgICAgIGxldCBzdGF0U3RyO1xuICAgICAgICBpZiAoc3RhdHMpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbXBsZXRlID0gY29sb3JzLmRpbShgJHtzdGF0cy5jb21wbGV0ZX0vJHtzdGF0cy50b3RhbH1gKTtcbiAgICAgICAgICAgIGNvbnN0IGZhaWx1cmVzID0gc3RhdHMuZmFpbHVyZXMgPyBjb2xvcnMucmVkQnJpZ2h0KGAgJHtzdGF0cy5mYWlsdXJlcy50b1N0cmluZygpfSBmYWlsZWRgKSA6IFwiXCI7XG4gICAgICAgICAgICBzdGF0U3RyID0gYCAke2NvbXBsZXRlfSR7ZmFpbHVyZXN9YDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN0YXRTdHIgPSBcIlwiO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGAke2NvbG9ycy5ib2xkKHRoaXMucnVuKX0ke3N0YXRTdHJ9YDtcbiAgICB9XG5cbiAgICAjZHVtcEZhaWx1cmVzKCkge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZmFpbHVyZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGZhaWx1cmUgPSB0aGlzLmZhaWx1cmVzW2ldO1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSBgRmFpbHVyZSAke2NvbG9ycy5ib2xkKChpICsgMSkudG9TdHJpbmcoKSl9IG9mICR7dGhpcy5mYWlsdXJlcy5sZW5ndGh9YDtcbiAgICAgICAgICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKGBcXG4ke2luZGV4fSAke3RoaXMuI2Zvcm1hdE5hbWUoZmFpbHVyZS5zdWl0ZSwgZmFpbHVyZS50ZXN0KX1cXG5cXG5gKTtcblxuICAgICAgICAgICAgRmFpbHVyZURldGFpbC5kdW1wKGZhaWx1cmUuZGV0YWlsLCBcIiAgXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgI2Zvcm1hdE5hbWUoc3VpdGU6IHN0cmluZ1tdLCB0ZXN0OiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIGAke3N1aXRlLmpvaW4oXCIgXHUyN0ExIFwiKX0gXHUyN0ExICR7Y29sb3JzLmJvbGQodGVzdCl9YDtcbiAgICB9XG59XG5cbmNvbnN0IGFjdHVhbENvbnNvbGUgPSBjb25zb2xlO1xuY29uc3QgYWN0dWFsTG9nID0gYWN0dWFsQ29uc29sZS5sb2c7XG5cbmZ1bmN0aW9uIHByb3h5KC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgYWN0dWFsTG9nLmNhbGwoYWN0dWFsQ29uc29sZSwgYCR7Q29uc29sZVByb3h5UmVwb3J0ZXIuRkxBR30ke0pTT04uc3RyaW5naWZ5KGFyZ3MpfWApO1xufVxuXG5leHBvcnQgY2xhc3MgQ29uc29sZVByb3h5UmVwb3J0ZXIgaW1wbGVtZW50cyBSZXBvcnRlciB7XG4gICAgc3RhdGljIEZMQUcgPSBcIjw8UkVQT1JUPj4gXCI7XG5cbiAgICBiZWdpblJ1bihuYW1lOiBzdHJpbmcsIHN0YXRzPzogU3RhdHMpIHtcbiAgICAgICAgcHJveHkoXCJiZWdpblJ1blwiLCBuYW1lLCBzdGF0cyk7XG4gICAgfVxuXG4gICAgYmVnaW5TdWl0ZShuYW1lOiBzdHJpbmdbXSwgc3RhdHM/OiBTdGF0cykge1xuICAgICAgICBwcm94eShcImJlZ2luU3VpdGVcIiwgbmFtZSwgc3RhdHMpO1xuICAgIH1cblxuICAgIGJlZ2luVGVzdChuYW1lOiBzdHJpbmcsIHN0YXRzPzogU3RhdHMpIHtcbiAgICAgICAgcHJveHkoXCJiZWdpblRlc3RcIiwgbmFtZSwgc3RhdHMpO1xuICAgIH1cblxuICAgIGVuZFJ1bihzdGF0cz86IFN0YXRzKSB7XG4gICAgICAgIHByb3h5KFwiZW5kUnVuXCIsIHN0YXRzKTtcbiAgICB9XG5cbiAgICBmYWlsVGVzdChuYW1lOiBzdHJpbmcsIGRldGFpbDogRmFpbHVyZURldGFpbCkge1xuICAgICAgICBwcm94eShcImZhaWxUZXN0XCIsIG5hbWUsIGRldGFpbCk7XG4gICAgfVxuXG4gICAgZmFpbFJ1bihkZXRhaWw6IEZhaWx1cmVEZXRhaWwpIHtcbiAgICAgICAgcHJveHkoXCJmYWlsUnVuXCIsIGRldGFpbCk7XG4gICAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQU1BLE9BQU8sWUFBWTtBQUVuQixTQUFTLHFCQUFxQjtBQXVCdkIsTUFBZSxpQkFBcUM7QUFBQSxFQU12RCxZQUFvQixVQUFvQjtBQUFwQjtBQUFB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
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/testing/reporter.ts"],
4
+ "mappings": "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",
5
+ "names": []
6
+ }
@@ -0,0 +1,22 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Package } from "../util/package.js";
7
+ import { Progress } from "../util/progress.js";
8
+ import { TestOptions } from "./options.js";
9
+ import { Reporter } from "./reporter.js";
10
+ export declare class TestRunner {
11
+ readonly pkg: Package;
12
+ readonly progress: Progress;
13
+ readonly options: TestOptions;
14
+ readonly reporter: Reporter;
15
+ private spec;
16
+ constructor(pkg: Package, progress: Progress, options: TestOptions);
17
+ runNode(format?: "esm" | "cjs"): Promise<void>;
18
+ runWeb(manual?: boolean): Promise<void>;
19
+ loadFiles(format: "esm" | "cjs"): string[];
20
+ private run;
21
+ }
22
+ //# sourceMappingURL=runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../src/testing/runner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAK/C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAoB,QAAQ,EAAE,MAAM,eAAe,CAAC;AAG3D,qBAAa,UAAU;IAKf,QAAQ,CAAC,GAAG,EAAE,OAAO;IACrB,QAAQ,CAAC,QAAQ,EAAE,QAAQ;IAC3B,QAAQ,CAAC,OAAO,EAAE,WAAW;IANjC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,OAAO,CAAC,IAAI,CAAmB;gBAGlB,GAAG,EAAE,OAAO,EACZ,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,WAAW;IA4B3B,OAAO,CAAC,MAAM,GAAE,KAAK,GAAG,KAAa;IAIrC,MAAM,CAAC,MAAM,UAAQ;IAI3B,SAAS,CAAC,MAAM,EAAE,KAAK,GAAG,KAAK;YAuBjB,GAAG;CAMpB"}
@@ -0,0 +1,86 @@
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
+ import debug from "debug";
8
+ import { glob } from "glob";
9
+ import { relative } from "path";
10
+ import { Progress } from "../util/progress.js";
11
+ import { Chip } from "./chip.js";
12
+ import { FailureDetail } from "./failure-detail.js";
13
+ import { listSupportFiles } from "./files.js";
14
+ import { testNode } from "./node.js";
15
+ import { ProgressReporter } from "./reporter.js";
16
+ import { testWeb } from "./web.js";
17
+ class TestRunner {
18
+ constructor(pkg, progress, options) {
19
+ this.pkg = pkg;
20
+ this.progress = progress;
21
+ this.options = options;
22
+ Chip.config = { runner: this };
23
+ this.reporter = new class extends ProgressReporter {
24
+ constructor() {
25
+ super(progress);
26
+ }
27
+ failRun(detail) {
28
+ process.stdout.write("\n");
29
+ FailureDetail.dump(detail);
30
+ process.exit(1);
31
+ }
32
+ }();
33
+ if (options.spec === void 0) {
34
+ this.spec = ["test/**/*Test.ts"];
35
+ } else if (Array.isArray(options.spec)) {
36
+ this.spec = options.spec;
37
+ } else {
38
+ this.spec = [options.spec];
39
+ }
40
+ if (options.debug) {
41
+ debug.enable("mocha:*");
42
+ }
43
+ }
44
+ reporter;
45
+ spec = Array();
46
+ async runNode(format = "esm") {
47
+ await this.run(this.progress, () => testNode(this, format));
48
+ }
49
+ async runWeb(manual = false) {
50
+ await this.run(this.progress, () => testWeb(this, manual));
51
+ }
52
+ loadFiles(format) {
53
+ const tests = [];
54
+ for (let spec of this.spec) {
55
+ spec = spec.replace(/\.ts$/, ".js");
56
+ spec = relative(this.pkg.path, spec);
57
+ if (!spec.startsWith(".") && !spec.startsWith("build/") && !spec.startsWith("dist/")) {
58
+ spec = `build/${format}/${spec}`;
59
+ }
60
+ spec = this.pkg.resolve(spec);
61
+ spec = spec.replace(/\\/g, "/");
62
+ tests.push(...glob.sync(spec));
63
+ }
64
+ if (!tests.length) {
65
+ fatal(`No files match ${this.spec.join(", ")}`);
66
+ }
67
+ return [...listSupportFiles(format), ...tests];
68
+ }
69
+ async run(progress, runner) {
70
+ await runner();
71
+ if (progress.status !== Progress.Status.Success) {
72
+ fatal(`Test ${progress.status.toLowerCase()}, aborting`);
73
+ }
74
+ }
75
+ }
76
+ function fatal(message) {
77
+ process.stderr.write(colors.redBright(`
78
+ ${message}
79
+
80
+ `));
81
+ process.exit(1);
82
+ }
83
+ export {
84
+ TestRunner
85
+ };
86
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3Rlc3RpbmcvcnVubmVyLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgMjAyMi0yMDI0IE1hdHRlci5qcyBBdXRob3JzXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuICovXG5cbmltcG9ydCBjb2xvcnMgZnJvbSBcImFuc2ktY29sb3JzXCI7XG5pbXBvcnQgZGVidWcgZnJvbSBcImRlYnVnXCI7XG5pbXBvcnQgeyBnbG9iIH0gZnJvbSBcImdsb2JcIjtcbmltcG9ydCB7IHJlbGF0aXZlIH0gZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IFBhY2thZ2UgfSBmcm9tIFwiLi4vdXRpbC9wYWNrYWdlLmpzXCI7XG5pbXBvcnQgeyBQcm9ncmVzcyB9IGZyb20gXCIuLi91dGlsL3Byb2dyZXNzLmpzXCI7XG5pbXBvcnQgeyBDaGlwIH0gZnJvbSBcIi4vY2hpcC5qc1wiO1xuaW1wb3J0IHsgRmFpbHVyZURldGFpbCB9IGZyb20gXCIuL2ZhaWx1cmUtZGV0YWlsLmpzXCI7XG5pbXBvcnQgeyBsaXN0U3VwcG9ydEZpbGVzIH0gZnJvbSBcIi4vZmlsZXMuanNcIjtcbmltcG9ydCB7IHRlc3ROb2RlIH0gZnJvbSBcIi4vbm9kZS5qc1wiO1xuaW1wb3J0IHsgVGVzdE9wdGlvbnMgfSBmcm9tIFwiLi9vcHRpb25zLmpzXCI7XG5pbXBvcnQgeyBQcm9ncmVzc1JlcG9ydGVyLCBSZXBvcnRlciB9IGZyb20gXCIuL3JlcG9ydGVyLmpzXCI7XG5pbXBvcnQgeyB0ZXN0V2ViIH0gZnJvbSBcIi4vd2ViLmpzXCI7XG5cbmV4cG9ydCBjbGFzcyBUZXN0UnVubmVyIHtcbiAgICByZWFkb25seSByZXBvcnRlcjogUmVwb3J0ZXI7XG4gICAgcHJpdmF0ZSBzcGVjID0gQXJyYXk8c3RyaW5nPigpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHJlYWRvbmx5IHBrZzogUGFja2FnZSxcbiAgICAgICAgcmVhZG9ubHkgcHJvZ3Jlc3M6IFByb2dyZXNzLFxuICAgICAgICByZWFkb25seSBvcHRpb25zOiBUZXN0T3B0aW9ucyxcbiAgICApIHtcbiAgICAgICAgQ2hpcC5jb25maWcgPSB7IHJ1bm5lcjogdGhpcyB9O1xuXG4gICAgICAgIHRoaXMucmVwb3J0ZXIgPSBuZXcgKGNsYXNzIGV4dGVuZHMgUHJvZ3Jlc3NSZXBvcnRlciB7XG4gICAgICAgICAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgICAgICAgICBzdXBlcihwcm9ncmVzcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvdmVycmlkZSBmYWlsUnVuKGRldGFpbDogRmFpbHVyZURldGFpbCkge1xuICAgICAgICAgICAgICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKFwiXFxuXCIpO1xuICAgICAgICAgICAgICAgIEZhaWx1cmVEZXRhaWwuZHVtcChkZXRhaWwpO1xuICAgICAgICAgICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkoKTtcblxuICAgICAgICBpZiAob3B0aW9ucy5zcGVjID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMuc3BlYyA9IFtcInRlc3QvKiovKlRlc3QudHNcIl07XG4gICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShvcHRpb25zLnNwZWMpKSB7XG4gICAgICAgICAgICB0aGlzLnNwZWMgPSBvcHRpb25zLnNwZWM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNwZWMgPSBbb3B0aW9ucy5zcGVjXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLmRlYnVnKSB7XG4gICAgICAgICAgICBkZWJ1Zy5lbmFibGUoXCJtb2NoYToqXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgcnVuTm9kZShmb3JtYXQ6IFwiZXNtXCIgfCBcImNqc1wiID0gXCJlc21cIikge1xuICAgICAgICBhd2FpdCB0aGlzLnJ1bih0aGlzLnByb2dyZXNzLCAoKSA9PiB0ZXN0Tm9kZSh0aGlzLCBmb3JtYXQpKTtcbiAgICB9XG5cbiAgICBhc3luYyBydW5XZWIobWFudWFsID0gZmFsc2UpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5ydW4odGhpcy5wcm9ncmVzcywgKCkgPT4gdGVzdFdlYih0aGlzLCBtYW51YWwpKTtcbiAgICB9XG5cbiAgICBsb2FkRmlsZXMoZm9ybWF0OiBcImVzbVwiIHwgXCJjanNcIikge1xuICAgICAgICBjb25zdCB0ZXN0cyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBzcGVjIG9mIHRoaXMuc3BlYykge1xuICAgICAgICAgICAgc3BlYyA9IHNwZWMucmVwbGFjZSgvXFwudHMkLywgXCIuanNcIik7XG4gICAgICAgICAgICBzcGVjID0gcmVsYXRpdmUodGhpcy5wa2cucGF0aCwgc3BlYyk7XG4gICAgICAgICAgICBpZiAoIXNwZWMuc3RhcnRzV2l0aChcIi5cIikgJiYgIXNwZWMuc3RhcnRzV2l0aChcImJ1aWxkL1wiKSAmJiAhc3BlYy5zdGFydHNXaXRoKFwiZGlzdC9cIikpIHtcbiAgICAgICAgICAgICAgICBzcGVjID0gYGJ1aWxkLyR7Zm9ybWF0fS8ke3NwZWN9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNwZWMgPSB0aGlzLnBrZy5yZXNvbHZlKHNwZWMpO1xuXG4gICAgICAgICAgICAvLyBHbG9iIG9ubHkgdW5kZXJzdGFuZHMgZm9yd2FyZC1zbGFzaCBhcyBzZXBhcmF0b3IgYmVjYXVzZSByZWFzb25zXG4gICAgICAgICAgICBzcGVjID0gc3BlYy5yZXBsYWNlKC9cXFxcL2csIFwiL1wiKTtcblxuICAgICAgICAgICAgdGVzdHMucHVzaCguLi5nbG9iLnN5bmMoc3BlYykpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0ZXN0cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGZhdGFsKGBObyBmaWxlcyBtYXRjaCAke3RoaXMuc3BlYy5qb2luKFwiLCBcIil9YCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gWy4uLmxpc3RTdXBwb3J0RmlsZXMoZm9ybWF0KSwgLi4udGVzdHNdO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgcnVuKHByb2dyZXNzOiBQcm9ncmVzcywgcnVubmVyOiAoKSA9PiBQcm9taXNlPHZvaWQ+KSB7XG4gICAgICAgIGF3YWl0IHJ1bm5lcigpO1xuICAgICAgICBpZiAocHJvZ3Jlc3Muc3RhdHVzICE9PSBQcm9ncmVzcy5TdGF0dXMuU3VjY2Vzcykge1xuICAgICAgICAgICAgZmF0YWwoYFRlc3QgJHtwcm9ncmVzcy5zdGF0dXMudG9Mb3dlckNhc2UoKX0sIGFib3J0aW5nYCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmZ1bmN0aW9uIGZhdGFsKG1lc3NhZ2U6IHN0cmluZykge1xuICAgIHByb2Nlc3Muc3RkZXJyLndyaXRlKGNvbG9ycy5yZWRCcmlnaHQoYFxcbiR7bWVzc2FnZX1cXG5cXG5gKSk7XG4gICAgcHJvY2Vzcy5leGl0KDEpO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQU1BLE9BQU8sWUFBWTtBQUNuQixPQUFPLFdBQVc7QUFDbEIsU0FBUyxZQUFZO0FBQ3JCLFNBQVMsZ0JBQWdCO0FBRXpCLFNBQVMsZ0JBQWdCO0FBQ3pCLFNBQVMsWUFBWTtBQUNyQixTQUFTLHFCQUFxQjtBQUM5QixTQUFTLHdCQUF3QjtBQUNqQyxTQUFTLGdCQUFnQjtBQUV6QixTQUFTLHdCQUFrQztBQUMzQyxTQUFTLGVBQWU7QUFFakIsTUFBTSxXQUFXO0FBQUEsRUFJcEIsWUFDYSxLQUNBLFVBQ0EsU0FDWDtBQUhXO0FBQ0E7QUFDQTtBQUVULFNBQUssU0FBUyxFQUFFLFFBQVEsS0FBSztBQUU3QixTQUFLLFdBQVcsSUFBSyxjQUFjLGlCQUFpQjtBQUFBLE1BQ2hELGNBQWM7QUFDVixjQUFNLFFBQVE7QUFBQSxNQUNsQjtBQUFBLE1BQ1MsUUFBUSxRQUF1QjtBQUNwQyxnQkFBUSxPQUFPLE1BQU0sSUFBSTtBQUN6QixzQkFBYyxLQUFLLE1BQU07QUFDekIsZ0JBQVEsS0FBSyxDQUFDO0FBQUEsTUFDbEI7QUFBQSxJQUNKLEVBQUc7QUFFSCxRQUFJLFFBQVEsU0FBUyxRQUFXO0FBQzVCLFdBQUssT0FBTyxDQUFDLGtCQUFrQjtBQUFBLElBQ25DLFdBQVcsTUFBTSxRQUFRLFFBQVEsSUFBSSxHQUFHO0FBQ3BDLFdBQUssT0FBTyxRQUFRO0FBQUEsSUFDeEIsT0FBTztBQUNILFdBQUssT0FBTyxDQUFDLFFBQVEsSUFBSTtBQUFBLElBQzdCO0FBRUEsUUFBSSxRQUFRLE9BQU87QUFDZixZQUFNLE9BQU8sU0FBUztBQUFBLElBQzFCO0FBQUEsRUFDSjtBQUFBLEVBaENTO0FBQUEsRUFDRCxPQUFPLE1BQWM7QUFBQSxFQWlDN0IsTUFBTSxRQUFRLFNBQXdCLE9BQU87QUFDekMsVUFBTSxLQUFLLElBQUksS0FBSyxVQUFVLE1BQU0sU0FBUyxNQUFNLE1BQU0sQ0FBQztBQUFBLEVBQzlEO0FBQUEsRUFFQSxNQUFNLE9BQU8sU0FBUyxPQUFPO0FBQ3pCLFVBQU0sS0FBSyxJQUFJLEtBQUssVUFBVSxNQUFNLFFBQVEsTUFBTSxNQUFNLENBQUM7QUFBQSxFQUM3RDtBQUFBLEVBRUEsVUFBVSxRQUF1QjtBQUM3QixVQUFNLFFBQVEsQ0FBQztBQUNmLGFBQVMsUUFBUSxLQUFLLE1BQU07QUFDeEIsYUFBTyxLQUFLLFFBQVEsU0FBUyxLQUFLO0FBQ2xDLGFBQU8sU0FBUyxLQUFLLElBQUksTUFBTSxJQUFJO0FBQ25DLFVBQUksQ0FBQyxLQUFLLFdBQVcsR0FBRyxLQUFLLENBQUMsS0FBSyxXQUFXLFFBQVEsS0FBSyxDQUFDLEtBQUssV0FBVyxPQUFPLEdBQUc7QUFDbEYsZUFBTyxTQUFTLE1BQU0sSUFBSSxJQUFJO0FBQUEsTUFDbEM7QUFDQSxhQUFPLEtBQUssSUFBSSxRQUFRLElBQUk7QUFHNUIsYUFBTyxLQUFLLFFBQVEsT0FBTyxHQUFHO0FBRTlCLFlBQU0sS0FBSyxHQUFHLEtBQUssS0FBSyxJQUFJLENBQUM7QUFBQSxJQUNqQztBQUVBLFFBQUksQ0FBQyxNQUFNLFFBQVE7QUFDZixZQUFNLGtCQUFrQixLQUFLLEtBQUssS0FBSyxJQUFJLENBQUMsRUFBRTtBQUFBLElBQ2xEO0FBRUEsV0FBTyxDQUFDLEdBQUcsaUJBQWlCLE1BQU0sR0FBRyxHQUFHLEtBQUs7QUFBQSxFQUNqRDtBQUFBLEVBRUEsTUFBYyxJQUFJLFVBQW9CLFFBQTZCO0FBQy9ELFVBQU0sT0FBTztBQUNiLFFBQUksU0FBUyxXQUFXLFNBQVMsT0FBTyxTQUFTO0FBQzdDLFlBQU0sUUFBUSxTQUFTLE9BQU8sWUFBWSxDQUFDLFlBQVk7QUFBQSxJQUMzRDtBQUFBLEVBQ0o7QUFDSjtBQUVBLFNBQVMsTUFBTSxTQUFpQjtBQUM1QixVQUFRLE9BQU8sTUFBTSxPQUFPLFVBQVU7QUFBQSxFQUFLLE9BQU87QUFBQTtBQUFBLENBQU0sQ0FBQztBQUN6RCxVQUFRLEtBQUssQ0FBQztBQUNsQjsiLAogICJuYW1lcyI6IFtdCn0K
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/testing/runner.ts"],
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,OAAO,YAAY;AACnB,OAAO,WAAW;AAClB,SAAS,YAAY;AACrB,SAAS,gBAAgB;AAEzB,SAAS,gBAAgB;AACzB,SAAS,YAAY;AACrB,SAAS,qBAAqB;AAC9B,SAAS,wBAAwB;AACjC,SAAS,gBAAgB;AAEzB,SAAS,wBAAkC;AAC3C,SAAS,eAAe;AAEjB,MAAM,WAAW;AAAA,EAIpB,YACa,KACA,UACA,SACX;AAHW;AACA;AACA;AAET,SAAK,SAAS,EAAE,QAAQ,KAAK;AAE7B,SAAK,WAAW,IAAK,cAAc,iBAAiB;AAAA,MAChD,cAAc;AACV,cAAM,QAAQ;AAAA,MAClB;AAAA,MACS,QAAQ,QAAuB;AACpC,gBAAQ,OAAO,MAAM,IAAI;AACzB,sBAAc,KAAK,MAAM;AACzB,gBAAQ,KAAK,CAAC;AAAA,MAClB;AAAA,IACJ,EAAG;AAEH,QAAI,QAAQ,SAAS,QAAW;AAC5B,WAAK,OAAO,CAAC,kBAAkB;AAAA,IACnC,WAAW,MAAM,QAAQ,QAAQ,IAAI,GAAG;AACpC,WAAK,OAAO,QAAQ;AAAA,IACxB,OAAO;AACH,WAAK,OAAO,CAAC,QAAQ,IAAI;AAAA,IAC7B;AAEA,QAAI,QAAQ,OAAO;AACf,YAAM,OAAO,SAAS;AAAA,IAC1B;AAAA,EACJ;AAAA,EAhCS;AAAA,EACD,OAAO,MAAc;AAAA,EAiC7B,MAAM,QAAQ,SAAwB,OAAO;AACzC,UAAM,KAAK,IAAI,KAAK,UAAU,MAAM,SAAS,MAAM,MAAM,CAAC;AAAA,EAC9D;AAAA,EAEA,MAAM,OAAO,SAAS,OAAO;AACzB,UAAM,KAAK,IAAI,KAAK,UAAU,MAAM,QAAQ,MAAM,MAAM,CAAC;AAAA,EAC7D;AAAA,EAEA,UAAU,QAAuB;AAC7B,UAAM,QAAQ,CAAC;AACf,aAAS,QAAQ,KAAK,MAAM;AACxB,aAAO,KAAK,QAAQ,SAAS,KAAK;AAClC,aAAO,SAAS,KAAK,IAAI,MAAM,IAAI;AACnC,UAAI,CAAC,KAAK,WAAW,GAAG,KAAK,CAAC,KAAK,WAAW,QAAQ,KAAK,CAAC,KAAK,WAAW,OAAO,GAAG;AAClF,eAAO,SAAS,MAAM,IAAI,IAAI;AAAA,MAClC;AACA,aAAO,KAAK,IAAI,QAAQ,IAAI;AAG5B,aAAO,KAAK,QAAQ,OAAO,GAAG;AAE9B,YAAM,KAAK,GAAG,KAAK,KAAK,IAAI,CAAC;AAAA,IACjC;AAEA,QAAI,CAAC,MAAM,QAAQ;AACf,YAAM,kBAAkB,KAAK,KAAK,KAAK,IAAI,CAAC,EAAE;AAAA,IAClD;AAEA,WAAO,CAAC,GAAG,iBAAiB,MAAM,GAAG,GAAG,KAAK;AAAA,EACjD;AAAA,EAEA,MAAc,IAAI,UAAoB,QAA6B;AAC/D,UAAM,OAAO;AACb,QAAI,SAAS,WAAW,SAAS,OAAO,SAAS;AAC7C,YAAM,QAAQ,SAAS,OAAO,YAAY,CAAC,YAAY;AAAA,IAC3D;AAAA,EACJ;AACJ;AAEA,SAAS,MAAM,SAAiB;AAC5B,UAAQ,OAAO,MAAM,OAAO,UAAU;AAAA,EAAK,OAAO;AAAA;AAAA,CAAM,CAAC;AACzD,UAAQ,KAAK,CAAC;AAClB;",
5
+ "names": []
6
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import type { TestRunner } from "./runner.js";
7
+ export declare function testWeb(runner: TestRunner, manual: boolean): Promise<void>;
8
+ //# sourceMappingURL=web.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../../../src/testing/web.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAYH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,wBAAsB,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,iBA0ChE"}
@@ -0,0 +1,135 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { build } from "esbuild";
7
+ import express from "express";
8
+ import { writeFile } from "fs/promises";
9
+ import { relative } from "path";
10
+ import { chromium } from "playwright";
11
+ import { Package } from "../util/package.js";
12
+ import { ConsoleProxyReporter } from "./reporter.js";
13
+ async function testWeb(runner, manual) {
14
+ const files = runner.loadFiles("esm");
15
+ const bundlePath = await bundle(files, runner.pkg);
16
+ const server = await new Promise((resolve, reject) => {
17
+ try {
18
+ const server2 = express().use(express.static(Package.workspace.resolve("node_modules"))).use(express.static(Package.workspace.path)).get("/", (_, res) => res.send(buildIndex(bundlePath))).listen(0, "localhost", () => resolve(server2));
19
+ } catch (e) {
20
+ reject(e);
21
+ }
22
+ });
23
+ const addr = server.address();
24
+ let ip = addr.address;
25
+ if (ip.indexOf(":") !== -1) {
26
+ ip = `[${ip}]`;
27
+ }
28
+ const url = `http://${ip}:${addr.port}/`;
29
+ await new Promise((resolve, reject) => {
30
+ server.on("error", reject);
31
+ server.on("close", resolve);
32
+ if (manual) {
33
+ console.log(`Run tests manually at ${url}`);
34
+ } else {
35
+ testInBrowser(url, runner.reporter, runner.options).then(() => {
36
+ server.close(() => {
37
+ resolve();
38
+ });
39
+ }).catch((error) => {
40
+ reject(error);
41
+ });
42
+ }
43
+ });
44
+ }
45
+ async function testInBrowser(url, reporter, options) {
46
+ async function setup() {
47
+ const browser = await chromium.launch();
48
+ const page = await browser.newPage();
49
+ return { browser, page };
50
+ }
51
+ async function run({ browser, page }) {
52
+ await page.goto(url);
53
+ await page.evaluate((options2) => globalThis.MatterTest.auto(options2), options);
54
+ await browser.close();
55
+ }
56
+ await new Promise((resolve, reject) => {
57
+ setup().then((cx) => {
58
+ cx.page.on("console", consoleHandler(reporter));
59
+ cx.page.on("pageerror", (error) => reject(error));
60
+ return cx;
61
+ }).then(run).then(resolve).catch(reject);
62
+ });
63
+ }
64
+ function consoleHandler(reporter) {
65
+ return (message) => {
66
+ const type = message.type();
67
+ switch (type) {
68
+ case "log":
69
+ case "debug":
70
+ case "info":
71
+ case "error":
72
+ case "warn":
73
+ case "trace":
74
+ break;
75
+ default:
76
+ return;
77
+ }
78
+ const text = message.text();
79
+ if (type !== "log" || !text.startsWith(ConsoleProxyReporter.FLAG)) {
80
+ console[type](text);
81
+ return;
82
+ }
83
+ const args = JSON.parse(text.slice(ConsoleProxyReporter.FLAG.length));
84
+ const method = reporter[args[0]];
85
+ if (typeof method !== "function") {
86
+ throw new Error(`Invalid encoded reporter update method ${args[0]}`);
87
+ }
88
+ method.call(reporter, ...args.slice(1));
89
+ };
90
+ }
91
+ function buildIndex(bundlePath) {
92
+ return `<!DOCTYPE html>
93
+ <html>
94
+ <head>
95
+ <title>Matter.js Web Testing</title>
96
+ <link rel="stylesheet" href="mocha/mocha.css">
97
+ </head>
98
+ <body>
99
+ <div id="mocha"><h1><a href="javascript:MatterTest.start()">run tests</a></h1></div>
100
+ <script src="mocha/mocha.js"><\/script>
101
+ <script src="${bundlePath}" type="module"><\/script>
102
+ </body>
103
+ </html>`;
104
+ }
105
+ async function bundle(files, pkg) {
106
+ const entrypointPath = pkg.resolve("build/esm/test-entrypoint.js");
107
+ const bundlePath = pkg.resolve("build/cjs/test-bundle.js");
108
+ const entrypoint = files.map((path) => {
109
+ path = relative(pkg.resolve("build/esm"), path).replace(/\\/g, "/");
110
+ if (!path.startsWith(".")) {
111
+ path = `./${path}`;
112
+ }
113
+ return `import ${JSON.stringify(path)}`;
114
+ }).join("\n");
115
+ await writeFile(pkg.resolve("build/esm/test-entrypoint.js"), entrypoint);
116
+ await build({
117
+ entryPoints: [entrypointPath],
118
+ bundle: true,
119
+ format: "cjs",
120
+ outfile: bundlePath,
121
+ external: ["wtfnode"],
122
+ keepNames: true,
123
+ // This doesn't work...
124
+ // logOverride: {
125
+ // "direct-eval": "silent",
126
+ // },
127
+ // ...so we do this:
128
+ logLevel: "error"
129
+ });
130
+ return pkg.workspace.relative(bundlePath);
131
+ }
132
+ export {
133
+ testWeb
134
+ };
135
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3Rlc3Rpbmcvd2ViLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgMjAyMi0yMDI0IE1hdHRlci5qcyBBdXRob3JzXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuICovXG5cbmltcG9ydCB7IGJ1aWxkIH0gZnJvbSBcImVzYnVpbGRcIjtcbmltcG9ydCBleHByZXNzIGZyb20gXCJleHByZXNzXCI7XG5pbXBvcnQgeyB3cml0ZUZpbGUgfSBmcm9tIFwiZnMvcHJvbWlzZXNcIjtcbmltcG9ydCBodHRwIGZyb20gXCJodHRwXCI7XG5pbXBvcnQgeyBBZGRyZXNzSW5mbyB9IGZyb20gXCJuZXRcIjtcbmltcG9ydCB7IHJlbGF0aXZlIH0gZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IEJyb3dzZXIsIGNocm9taXVtLCBDb25zb2xlTWVzc2FnZSwgUGFnZSB9IGZyb20gXCJwbGF5d3JpZ2h0XCI7XG5pbXBvcnQgeyBQYWNrYWdlIH0gZnJvbSBcIi4uL3V0aWwvcGFja2FnZS5qc1wiO1xuaW1wb3J0IHsgVGVzdE9wdGlvbnMgfSBmcm9tIFwiLi9vcHRpb25zLmpzXCI7XG5pbXBvcnQgeyBDb25zb2xlUHJveHlSZXBvcnRlciwgUmVwb3J0ZXIgfSBmcm9tIFwiLi9yZXBvcnRlci5qc1wiO1xuaW1wb3J0IHR5cGUgeyBUZXN0UnVubmVyIH0gZnJvbSBcIi4vcnVubmVyLmpzXCI7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0ZXN0V2ViKHJ1bm5lcjogVGVzdFJ1bm5lciwgbWFudWFsOiBib29sZWFuKSB7XG4gICAgY29uc3QgZmlsZXMgPSBydW5uZXIubG9hZEZpbGVzKFwiZXNtXCIpO1xuICAgIGNvbnN0IGJ1bmRsZVBhdGggPSBhd2FpdCBidW5kbGUoZmlsZXMsIHJ1bm5lci5wa2cpO1xuXG4gICAgY29uc3Qgc2VydmVyID0gYXdhaXQgbmV3IFByb21pc2U8aHR0cC5TZXJ2ZXI+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHNlcnZlciA9IGV4cHJlc3MoKVxuICAgICAgICAgICAgICAgIC51c2UoZXhwcmVzcy5zdGF0aWMoUGFja2FnZS53b3Jrc3BhY2UucmVzb2x2ZShcIm5vZGVfbW9kdWxlc1wiKSkpXG4gICAgICAgICAgICAgICAgLnVzZShleHByZXNzLnN0YXRpYyhQYWNrYWdlLndvcmtzcGFjZS5wYXRoKSlcbiAgICAgICAgICAgICAgICAuZ2V0KFwiL1wiLCAoXywgcmVzKSA9PiByZXMuc2VuZChidWlsZEluZGV4KGJ1bmRsZVBhdGgpKSlcbiAgICAgICAgICAgICAgICAubGlzdGVuKDAsIFwibG9jYWxob3N0XCIsICgpID0+IHJlc29sdmUoc2VydmVyKSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHJlamVjdChlKTtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgYWRkciA9IHNlcnZlci5hZGRyZXNzKCkgYXMgQWRkcmVzc0luZm87XG4gICAgbGV0IGlwID0gYWRkci5hZGRyZXNzO1xuICAgIGlmIChpcC5pbmRleE9mKFwiOlwiKSAhPT0gLTEpIHtcbiAgICAgICAgaXAgPSBgWyR7aXB9XWA7XG4gICAgfVxuICAgIGNvbnN0IHVybCA9IGBodHRwOi8vJHtpcH06JHthZGRyLnBvcnR9L2A7XG5cbiAgICBhd2FpdCBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIHNlcnZlci5vbihcImVycm9yXCIsIHJlamVjdCk7XG4gICAgICAgIHNlcnZlci5vbihcImNsb3NlXCIsIHJlc29sdmUpO1xuXG4gICAgICAgIGlmIChtYW51YWwpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBSdW4gdGVzdHMgbWFudWFsbHkgYXQgJHt1cmx9YCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0ZXN0SW5Ccm93c2VyKHVybCwgcnVubmVyLnJlcG9ydGVyLCBydW5uZXIub3B0aW9ucylcbiAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHNlcnZlci5jbG9zZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBIbW0gdGhlIGNsb3NlIGV2ZW50IGFib3ZlIGRvZXNuJ3QgZmlyZVxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdGVzdEluQnJvd3Nlcih1cmw6IHN0cmluZywgcmVwb3J0ZXI6IFJlcG9ydGVyLCBvcHRpb25zOiBUZXN0T3B0aW9ucykge1xuICAgIGFzeW5jIGZ1bmN0aW9uIHNldHVwKCkge1xuICAgICAgICBjb25zdCBicm93c2VyID0gYXdhaXQgY2hyb21pdW0ubGF1bmNoKCk7XG4gICAgICAgIGNvbnN0IHBhZ2UgPSBhd2FpdCBicm93c2VyLm5ld1BhZ2UoKTtcbiAgICAgICAgcmV0dXJuIHsgYnJvd3NlciwgcGFnZSB9O1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHJ1bih7IGJyb3dzZXIsIHBhZ2UgfTogeyBicm93c2VyOiBCcm93c2VyOyBwYWdlOiBQYWdlIH0pIHtcbiAgICAgICAgYXdhaXQgcGFnZS5nb3RvKHVybCk7XG4gICAgICAgIGF3YWl0IHBhZ2UuZXZhbHVhdGUob3B0aW9ucyA9PiAoZ2xvYmFsVGhpcyBhcyBhbnkpLk1hdHRlclRlc3QuYXV0byhvcHRpb25zKSwgb3B0aW9ucyk7XG4gICAgICAgIGF3YWl0IGJyb3dzZXIuY2xvc2UoKTtcbiAgICB9XG5cbiAgICBhd2FpdCBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIHNldHVwKClcbiAgICAgICAgICAgIC50aGVuKGN4ID0+IHtcbiAgICAgICAgICAgICAgICBjeC5wYWdlLm9uKFwiY29uc29sZVwiLCBjb25zb2xlSGFuZGxlcihyZXBvcnRlcikpO1xuICAgICAgICAgICAgICAgIGN4LnBhZ2Uub24oXCJwYWdlZXJyb3JcIiwgZXJyb3IgPT4gcmVqZWN0KGVycm9yKSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGN4O1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC50aGVuKHJ1bilcbiAgICAgICAgICAgIC50aGVuKHJlc29sdmUpXG4gICAgICAgICAgICAuY2F0Y2gocmVqZWN0KTtcbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gY29uc29sZUhhbmRsZXIocmVwb3J0ZXI6IFJlcG9ydGVyKSB7XG4gICAgcmV0dXJuIChtZXNzYWdlOiBDb25zb2xlTWVzc2FnZSkgPT4ge1xuICAgICAgICBjb25zdCB0eXBlID0gbWVzc2FnZS50eXBlKCk7XG4gICAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAgICAgY2FzZSBcImxvZ1wiOlxuICAgICAgICAgICAgY2FzZSBcImRlYnVnXCI6XG4gICAgICAgICAgICBjYXNlIFwiaW5mb1wiOlxuICAgICAgICAgICAgY2FzZSBcImVycm9yXCI6XG4gICAgICAgICAgICBjYXNlIFwid2FyblwiOlxuICAgICAgICAgICAgY2FzZSBcInRyYWNlXCI6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdGV4dCA9IG1lc3NhZ2UudGV4dCgpO1xuXG4gICAgICAgIC8vIElmIGl0J3Mgbm90IGFuIGVuY29kZWQgcmVwb3J0ZXIgdXBkYXRlLCB3cml0ZSB0byBub3JtYWwgY29uc29sZVxuICAgICAgICBpZiAodHlwZSAhPT0gXCJsb2dcIiB8fCAhdGV4dC5zdGFydHNXaXRoKENvbnNvbGVQcm94eVJlcG9ydGVyLkZMQUcpKSB7XG4gICAgICAgICAgICBjb25zb2xlW3R5cGVdKHRleHQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSW52b2tlIHJlcG9ydGVyXG4gICAgICAgIGNvbnN0IGFyZ3M6IHN0cmluZ1tdID0gSlNPTi5wYXJzZSh0ZXh0LnNsaWNlKENvbnNvbGVQcm94eVJlcG9ydGVyLkZMQUcubGVuZ3RoKSk7XG4gICAgICAgIGNvbnN0IG1ldGhvZCA9IChyZXBvcnRlciBhcyBhbnkpW2FyZ3NbMF1dO1xuICAgICAgICBpZiAodHlwZW9mIG1ldGhvZCAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZW5jb2RlZCByZXBvcnRlciB1cGRhdGUgbWV0aG9kICR7YXJnc1swXX1gKTtcbiAgICAgICAgfVxuICAgICAgICBtZXRob2QuY2FsbChyZXBvcnRlciwgLi4uYXJncy5zbGljZSgxKSk7XG4gICAgfTtcbn1cblxuZnVuY3Rpb24gYnVpbGRJbmRleChidW5kbGVQYXRoOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gYDwhRE9DVFlQRSBodG1sPlxuPGh0bWw+XG48aGVhZD5cbiAgICA8dGl0bGU+TWF0dGVyLmpzIFdlYiBUZXN0aW5nPC90aXRsZT5cbiAgICA8bGluayByZWw9XCJzdHlsZXNoZWV0XCIgaHJlZj1cIm1vY2hhL21vY2hhLmNzc1wiPlxuPC9oZWFkPlxuPGJvZHk+XG4gICAgPGRpdiBpZD1cIm1vY2hhXCI+PGgxPjxhIGhyZWY9XCJqYXZhc2NyaXB0Ok1hdHRlclRlc3Quc3RhcnQoKVwiPnJ1biB0ZXN0czwvYT48L2gxPjwvZGl2PlxuICAgIDxzY3JpcHQgc3JjPVwibW9jaGEvbW9jaGEuanNcIj48L3NjcmlwdD5cbiAgICA8c2NyaXB0IHNyYz1cIiR7YnVuZGxlUGF0aH1cIiB0eXBlPVwibW9kdWxlXCI+PC9zY3JpcHQ+XG48L2JvZHk+XG48L2h0bWw+YDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gYnVuZGxlKGZpbGVzOiBzdHJpbmdbXSwgcGtnOiBQYWNrYWdlKSB7XG4gICAgY29uc3QgZW50cnlwb2ludFBhdGggPSBwa2cucmVzb2x2ZShcImJ1aWxkL2VzbS90ZXN0LWVudHJ5cG9pbnQuanNcIik7XG4gICAgY29uc3QgYnVuZGxlUGF0aCA9IHBrZy5yZXNvbHZlKFwiYnVpbGQvY2pzL3Rlc3QtYnVuZGxlLmpzXCIpO1xuXG4gICAgY29uc3QgZW50cnlwb2ludCA9IGZpbGVzXG4gICAgICAgIC5tYXAocGF0aCA9PiB7XG4gICAgICAgICAgICBwYXRoID0gcmVsYXRpdmUocGtnLnJlc29sdmUoXCJidWlsZC9lc21cIiksIHBhdGgpLnJlcGxhY2UoL1xcXFwvZywgXCIvXCIpO1xuICAgICAgICAgICAgaWYgKCFwYXRoLnN0YXJ0c1dpdGgoXCIuXCIpKSB7XG4gICAgICAgICAgICAgICAgcGF0aCA9IGAuLyR7cGF0aH1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGBpbXBvcnQgJHtKU09OLnN0cmluZ2lmeShwYXRoKX1gO1xuICAgICAgICB9KVxuICAgICAgICAuam9pbihcIlxcblwiKTtcblxuICAgIC8vIEkgd2FzIHVuYWJsZSB0byBnZXQgZXNidWlsZCB0byByZXNvbHZlIHRoZSBlbnRyeXBvaW50IHVzaW5nIHRoZSBcInN0ZGluXCIgYW5kIFwiYWJzV29ya2luZ0RpclwiIG9wdGlvbnMuICBTbyB3ZSBqdXN0XG4gICAgLy8gd3JpdGUgdG8gZGlza1xuICAgIGF3YWl0IHdyaXRlRmlsZShwa2cucmVzb2x2ZShcImJ1aWxkL2VzbS90ZXN0LWVudHJ5cG9pbnQuanNcIiksIGVudHJ5cG9pbnQpO1xuXG4gICAgYXdhaXQgYnVpbGQoe1xuICAgICAgICBlbnRyeVBvaW50czogW2VudHJ5cG9pbnRQYXRoXSxcbiAgICAgICAgYnVuZGxlOiB0cnVlLFxuICAgICAgICBmb3JtYXQ6IFwiY2pzXCIsXG4gICAgICAgIG91dGZpbGU6IGJ1bmRsZVBhdGgsXG4gICAgICAgIGV4dGVybmFsOiBbXCJ3dGZub2RlXCJdLFxuICAgICAgICBrZWVwTmFtZXM6IHRydWUsXG5cbiAgICAgICAgLy8gVGhpcyBkb2Vzbid0IHdvcmsuLi5cbiAgICAgICAgLy8gbG9nT3ZlcnJpZGU6IHtcbiAgICAgICAgLy8gICAgIFwiZGlyZWN0LWV2YWxcIjogXCJzaWxlbnRcIixcbiAgICAgICAgLy8gfSxcblxuICAgICAgICAvLyAuLi5zbyB3ZSBkbyB0aGlzOlxuICAgICAgICBsb2dMZXZlbDogXCJlcnJvclwiLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHBrZy53b3Jrc3BhY2UucmVsYXRpdmUoYnVuZGxlUGF0aCk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBTUEsU0FBUyxhQUFhO0FBQ3RCLE9BQU8sYUFBYTtBQUNwQixTQUFTLGlCQUFpQjtBQUcxQixTQUFTLGdCQUFnQjtBQUN6QixTQUFrQixnQkFBc0M7QUFDeEQsU0FBUyxlQUFlO0FBRXhCLFNBQVMsNEJBQXNDO0FBRy9DLGVBQXNCLFFBQVEsUUFBb0IsUUFBaUI7QUFDL0QsUUFBTSxRQUFRLE9BQU8sVUFBVSxLQUFLO0FBQ3BDLFFBQU0sYUFBYSxNQUFNLE9BQU8sT0FBTyxPQUFPLEdBQUc7QUFFakQsUUFBTSxTQUFTLE1BQU0sSUFBSSxRQUFxQixDQUFDLFNBQVMsV0FBVztBQUMvRCxRQUFJO0FBQ0EsWUFBTUEsVUFBUyxRQUFRLEVBQ2xCLElBQUksUUFBUSxPQUFPLFFBQVEsVUFBVSxRQUFRLGNBQWMsQ0FBQyxDQUFDLEVBQzdELElBQUksUUFBUSxPQUFPLFFBQVEsVUFBVSxJQUFJLENBQUMsRUFDMUMsSUFBSSxLQUFLLENBQUMsR0FBRyxRQUFRLElBQUksS0FBSyxXQUFXLFVBQVUsQ0FBQyxDQUFDLEVBQ3JELE9BQU8sR0FBRyxhQUFhLE1BQU0sUUFBUUEsT0FBTSxDQUFDO0FBQUEsSUFDckQsU0FBUyxH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
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/testing/web.ts"],
4
+ "mappings": "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",
5
+ "names": ["server", "options"]
6
+ }
@@ -0,0 +1,105 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ // Bootstrap tooling code. Libraries are unavailable here; we may only use 3rd party modules.
8
+ //
9
+ // Also do not use TS as it would require the code invoking bootstrap to do a meta-bootstrap. 🙄
10
+
11
+ import { spawn } from "child_process";
12
+ import { cp, stat } from "fs/promises";
13
+ import { platform } from "os";
14
+ import { dirname, resolve } from "path";
15
+ import { fileURLToPath } from "url";
16
+
17
+ function fatal(why, error) {
18
+ console.error(`Cannot bootstrap matter.js tooling because ${why}.`);
19
+ if (error) {
20
+ console.error(error);
21
+ }
22
+ process.exit(1);
23
+ }
24
+
25
+ async function findFile(name) {
26
+ let dir = dirname(fileURLToPath(import.meta.url));
27
+ while (true) {
28
+ const path = resolve(dir, name);
29
+ try {
30
+ await stat(path);
31
+ return path;
32
+ } catch (e) {
33
+ if (e.code !== "ENOENT") {
34
+ fatal("there was an unexpected error searching the filesystem", e);
35
+ }
36
+ }
37
+
38
+ const nextDir = dirname(dir);
39
+ if (nextDir === dir) {
40
+ break;
41
+ }
42
+
43
+ dir = nextDir;
44
+ }
45
+ }
46
+
47
+ async function bootstrap() {
48
+ try {
49
+ const pkg = await findFile("package.json");
50
+ if (pkg === undefined) {
51
+ fatal("the bootstrap script does not appear to be installed in a package");
52
+ }
53
+
54
+ const path = dirname(pkg);
55
+
56
+ const options = {
57
+ stdio: "inherit",
58
+ cwd: path,
59
+ };
60
+
61
+ if (platform() === "win32") {
62
+ options.shell = true;
63
+ }
64
+
65
+ let esbuild = await findFile("node_modules/.bin/esbuild");
66
+ if (esbuild === undefined) {
67
+ // As a last resort, attempt to rely on the system PATH
68
+ esbuild = "esbuild";
69
+ }
70
+
71
+ await new Promise(resolve => {
72
+ const proc = spawn(
73
+ esbuild,
74
+ ["src/**/*.ts", "--outdir=dist/esm", "--format=esm", "--log-level=warning", "--sourcemap=inline"],
75
+ options,
76
+ );
77
+
78
+ proc.on("error", e => {
79
+ if (e.code === "ENOENT") {
80
+ fatal(
81
+ 'esbuild is not found.\nYou probably need to run "npm install" in the root of the repository',
82
+ );
83
+ }
84
+ fatal("an unexpected error occurred running esbuild", e);
85
+ });
86
+
87
+ proc.on("close", code => {
88
+ if (code === 0) {
89
+ resolve();
90
+ } else {
91
+ fatal(`esbuild existing with code ${code}`);
92
+ }
93
+ });
94
+ });
95
+
96
+ await cp(resolve(path, "src/util/tools-path.cjs"), resolve(path, "dist/esm/util/tools-path.cjs"));
97
+ } catch (e) {
98
+ fatal("an unexpected error occurred", e);
99
+ }
100
+ }
101
+
102
+ // If installed then we assume we're compiled and boostrap is a no-op
103
+ if (!import.meta.url.match(/[\\/]node_modules[\\/]/)) {
104
+ await bootstrap();
105
+ }
@@ -0,0 +1,27 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ /**
7
+ * A high-level docker control API specialized for our purposes.
8
+ */
9
+ export declare class Docker {
10
+ #private;
11
+ run(imageName: string, options?: Docker.RunOptions): AsyncGenerator<string, void, unknown>;
12
+ readFileFromImage(imageName: string, pathInImage: string): Promise<string>;
13
+ resolveGlobFromImage(imageName: string, glob: string): Promise<string[]>;
14
+ buildImage(name: string, path: string): Promise<void>;
15
+ }
16
+ declare namespace Docker {
17
+ interface RunOptions {
18
+ entrypoint?: string | string[];
19
+ args?: string | string[];
20
+ env?: Record<string, string>;
21
+ privileged?: boolean;
22
+ binds?: Record<string, string>;
23
+ network?: "host";
24
+ }
25
+ }
26
+ export {};
27
+ //# sourceMappingURL=docker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docker.d.ts","sourceRoot":"","sources":["../../../src/util/docker.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH;;GAEG;AACH,qBAAa,MAAM;;IAGR,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,UAAU;IAkDnD,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAaxD,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAgBpD,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;CA6B9C;AAED,kBAAU,MAAM,CAAC;IACb,UAAiB,UAAU;QACvB,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;QAC/B,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;QACzB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC7B,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;KACpB;CACJ"}