@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,63 @@
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
+ const TheMockLogger = {
8
+ emitAll: false,
9
+ injectExternalMessage: (source, text) => console.log(formatExternalMessage(source, text))
10
+ };
11
+ function formatExternalMessage(source, text) {
12
+ return ` ${colors.bgCyan.black.bold(` ${source} `)} ${colors.dim(text)}`;
13
+ }
14
+ const LoggerHooks = {
15
+ beforeEach: Array(),
16
+ afterEach: Array()
17
+ };
18
+ function loggerSetup(Logger) {
19
+ Logger.format = "ansi";
20
+ let messageBuffer;
21
+ const defaultLog = Logger.log;
22
+ function passMessage(args) {
23
+ defaultLog.apply(Logger, args);
24
+ }
25
+ function interceptingLogger(...args) {
26
+ let emitAll = TheMockLogger.emitAll;
27
+ if (MatterHooks?.loggerSink) {
28
+ MatterHooks.loggerSink(...args);
29
+ } else if (!emitAll) {
30
+ if (messageBuffer) {
31
+ messageBuffer.push(args);
32
+ } else {
33
+ emitAll = true;
34
+ }
35
+ }
36
+ if (emitAll) {
37
+ passMessage(args);
38
+ }
39
+ }
40
+ TheMockLogger.injectExternalMessage = (source, text) => interceptingLogger(0, formatExternalMessage(source, text));
41
+ Logger.log = interceptingLogger;
42
+ LoggerHooks.beforeEach.push(function() {
43
+ if (!TheMockLogger.emitAll) {
44
+ messageBuffer = [];
45
+ }
46
+ });
47
+ LoggerHooks.afterEach.push((mocha) => {
48
+ if (messageBuffer?.length) {
49
+ if (mocha.suite.ctx.currentTest?.isFailed()) {
50
+ for (const args of messageBuffer) {
51
+ passMessage(args);
52
+ }
53
+ }
54
+ messageBuffer = void 0;
55
+ }
56
+ });
57
+ }
58
+ export {
59
+ LoggerHooks,
60
+ TheMockLogger,
61
+ loggerSetup
62
+ };
63
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3Rlc3RpbmcvbW9ja3MvbG9nZ2luZy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IDIwMjItMjAyNCBNYXR0ZXIuanMgQXV0aG9yc1xuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcbiAqL1xuXG5pbXBvcnQgY29sb3JzIGZyb20gXCJhbnNpLWNvbG9yc1wiO1xuXG5pbnRlcmZhY2UgTG9nZ2VyTGlrZSB7XG4gICAgZm9ybWF0OiBzdHJpbmc7XG4gICAgbG9nKGxldmVsOiBudW1iZXIsIG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTW9ja0xvZ2dlciB7XG4gICAgZW1pdEFsbDogYm9vbGVhbjtcbiAgICBpbmplY3RFeHRlcm5hbE1lc3NhZ2U6IChzb3VyY2U6IHN0cmluZywgdGV4dDogc3RyaW5nKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgY29uc3QgVGhlTW9ja0xvZ2dlcjogTW9ja0xvZ2dlciA9IHtcbiAgICBlbWl0QWxsOiBmYWxzZSxcbiAgICBpbmplY3RFeHRlcm5hbE1lc3NhZ2U6IChzb3VyY2U6IHN0cmluZywgdGV4dDogc3RyaW5nKSA9PiBjb25zb2xlLmxvZyhmb3JtYXRFeHRlcm5hbE1lc3NhZ2Uoc291cmNlLCB0ZXh0KSksXG59O1xuXG5mdW5jdGlvbiBmb3JtYXRFeHRlcm5hbE1lc3NhZ2Uoc291cmNlOiBzdHJpbmcsIHRleHQ6IHN0cmluZykge1xuICAgIHJldHVybiBgICAgICR7Y29sb3JzLmJnQ3lhbi5ibGFjay5ib2xkKGAgJHtzb3VyY2V9IGApfSAke2NvbG9ycy5kaW0odGV4dCl9YDtcbn1cblxuLyoqXG4gKiBUaGVzZSBmdW5jdGlvbnMgYXJlIGludm9rZWQgYnkgYmVmb3JlRWFjaC9hZnRlckVhY2ggaGFuZGxlcnMgaW4gZ2VuZXJhbFNldHVwIGZvciBNb2NoYS5cbiAqXG4gKiBXZSBwbGFjZSB0aGVtIGluIGFuIGFycmF5IGhlcmUgcmF0aGVyIHRoYW4gY2FsbGluZyB0aGUgZ2xvYmFsIGhvb2sgZnVuY3Rpb25zIHNvIHRoYXQgbG9hZCBvcmRlciBkb2Vzbid0IG1hdHRlci4gIFdlXG4gKiB1c2UgYW4gYXJyYXkgc28gdGhhdCBpZiBtdWx0aXBsZSBMb2dnZXIgY2xhc3NlcyBhcmUgY3JlYXRlZCAoZS5nLiBvbmUgZm9yIENKUyBhbmQgb25lIGZvciBFU00pIHdlIGRvbid0IGhhdmUgdG8gd29ycnlcbiAqIGFib3V0IHdoaWNoIGxvZ2dlciBpcyBkb2luZyB0aGUgbG9nZ2luZy5cbiAqL1xuZXhwb3J0IGNvbnN0IExvZ2dlckhvb2tzID0ge1xuICAgIGJlZm9yZUVhY2g6IEFycmF5PChtb2NoYTogTW9jaGEpID0+IHZvaWQ+KCksXG4gICAgYWZ0ZXJFYWNoOiBBcnJheTwobW9jaGE6IE1vY2hhKSA9PiB2b2lkPigpLFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGxvZ2dlclNldHVwKExvZ2dlcjogTG9nZ2VyTGlrZSkge1xuICAgIC8vIEN1cnJlbnRseSBldmVyeXdoZXJlIHdlIHJ1biB0ZXN0cyBzdXBwb3J0cyBBTlNJIGVzY2FwZSBjb2RlcyBmb3JcbiAgICAvLyBjb2xvcml6YXRpb24uICBUaGlzIGluY2x1ZGVzOlxuICAgIC8vXG4gICAgLy8gLSBOb2RlIGNvbnNvbGVcbiAgICAvLyAtIEdpdGh1YiBhY3Rpb25zXG4gICAgLy8gLSBIZWFkbGVzcyBicm93c2VyIC0+IG5vZGUgY29uc29sZVxuICAgIC8vIC0gVlMgY29kZS93ZWJzdG9ybSB0ZXJtaW5hbFxuICAgIC8vXG4gICAgLy8gU2hvdWxkIHRoaXMgYmVjb21lIGEgUElUQSB3ZSBjYW4gYWRkIGFuIG9wdGlvbiB0byBkaXNhYmxlXG4gICAgTG9nZ2VyLmZvcm1hdCA9IFwiYW5zaVwiO1xuXG4gICAgbGV0IG1lc3NhZ2VCdWZmZXI6IFtudW1iZXIsIHN0cmluZ11bXSB8IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IGRlZmF1bHRMb2cgPSBMb2dnZXIubG9nO1xuXG4gICAgZnVuY3Rpb24gcGFzc01lc3NhZ2UoYXJnczogW251bWJlciwgc3RyaW5nXSkge1xuICAgICAgICBkZWZhdWx0TG9nLmFwcGx5KExvZ2dlciwgYXJncyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaW50ZXJjZXB0aW5nTG9nZ2VyKC4uLmFyZ3M6IFtudW1iZXIsIHN0cmluZ10pIHtcbiAgICAgICAgbGV0IGVtaXRBbGwgPSBUaGVNb2NrTG9nZ2VyLmVtaXRBbGw7XG4gICAgICAgIGlmIChNYXR0ZXJIb29rcz8ubG9nZ2VyU2luaykge1xuICAgICAgICAgICAgTWF0dGVySG9va3MubG9nZ2VyU2luayguLi5hcmdzKTtcbiAgICAgICAgfSBlbHNlIGlmICghZW1pdEFsbCkge1xuICAgICAgICAgICAgaWYgKG1lc3NhZ2VCdWZmZXIpIHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlQnVmZmVyLnB1c2goYXJncyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGVtaXRBbGwgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVtaXRBbGwpIHtcbiAgICAgICAgICAgIHBhc3NNZXNzYWdlKGFyZ3MpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgVGhlTW9ja0xvZ2dlci5pbmplY3RFeHRlcm5hbE1lc3NhZ2UgPSAoc291cmNlLCB0ZXh0KSA9PiBpbnRlcmNlcHRpbmdMb2dnZXIoMCwgZm9ybWF0RXh0ZXJuYWxNZXNzYWdlKHNvdXJjZSwgdGV4dCkpO1xuXG4gICAgTG9nZ2VyLmxvZyA9IGludGVyY2VwdGluZ0xvZ2dlcjtcblxuICAgIC8vIERpdmVydCBsb2cgbWVzc2FnZXMgZm9yIHRlc3QgZHVyYXRpb25cbiAgICBMb2dnZXJIb29rcy5iZWZvcmVFYWNoLnB1c2goZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoIVRoZU1vY2tMb2dnZXIuZW1pdEFsbCkge1xuICAgICAgICAgICAgbWVzc2FnZUJ1ZmZlciA9IFtdO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBFbWl0IGxvZyBtZXNzYWdlcyBvbmx5IGlmIHRoZSB0ZXN0IGZhaWxzXG4gICAgTG9nZ2VySG9va3MuYWZ0ZXJFYWNoLnB1c2gobW9jaGEgPT4ge1xuICAgICAgICBpZiAobWVzc2FnZUJ1ZmZlcj8ubGVuZ3RoKSB7XG4gICAgICAgICAgICBpZiAobW9jaGEuc3VpdGUuY3R4LmN1cnJlbnRUZXN0Py5pc0ZhaWxlZCgpKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBhcmdzIG9mIG1lc3NhZ2VCdWZmZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFzc01lc3NhZ2UoYXJncyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbWVzc2FnZUJ1ZmZlciA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQU1BLE9BQU8sWUFBWTtBQVlaLE1BQU0sZ0JBQTRCO0FBQUEsRUFDckMsU0FBUztBQUFBLEVBQ1QsdUJBQXVCLENBQUMsUUFBZ0IsU0FBaUIsUUFBUSxJQUFJLHNCQUFzQixRQUFRLElBQUksQ0FBQztBQUM1RztBQUVBLFNBQVMsc0JBQXNCLFFBQWdCLE1BQWM7QUFDekQsU0FBTyxPQUFPLE9BQU8sT0FBTyxNQUFNLEtBQUssSUFBSSxNQUFNLEdBQUcsQ0FBQyxJQUFJLE9BQU8sSUFBSSxJQUFJLENBQUM7QUFDN0U7QUFTTyxNQUFNLGNBQWM7QUFBQSxFQUN2QixZQUFZLE1BQThCO0FBQUEsRUFDMUMsV0FBVyxNQUE4QjtBQUM3QztBQUVPLFNBQVMsWUFBWSxRQUFvQjtBQVU1QyxTQUFPLFNBQVM7QUFFaEIsTUFBSTtBQUVKLFFBQU0sYUFBYSxPQUFPO0FBRTFCLFdBQVMsWUFBWSxNQUF3QjtBQUN6QyxlQUFXLE1BQU0sUUFBUSxJQUFJO0FBQUEsRUFDakM7QUFFQSxXQUFTLHNCQUFzQixNQUF3QjtBQUNuRCxRQUFJLFVBQVUsY0FBYztBQUM1QixRQUFJLGFBQWEsWUFBWTtBQUN6QixrQkFBWSxXQUFXLEdBQUcsSUFBSTtBQUFBLElBQ2xDLFdBQVcsQ0FBQyxTQUFTO0FBQ2pCLFVBQUksZUFBZTtBQUNmLHNCQUFjLEtBQUssSUFBSTtBQUFBLE1BQzNCLE9BQU87QUFDSCxrQkFBVTtBQUFBLE1BQ2Q7QUFBQSxJQUNKO0FBRUEsUUFBSSxTQUFTO0FBQ1Qsa0JBQVksSUFBSTtBQUFBLElBQ3BCO0FBQUEsRUFDSjtBQUVBLGdCQUFjLHdCQUF3QixDQUFDLFFBQVEsU0FBUyxtQkFBbUIsR0FBRyxzQkFBc0IsUUFBUSxJQUFJLENBQUM7QUFFakgsU0FBTyxNQUFNO0FBR2IsY0FBWSxXQUFXLEtBQUssV0FBWTtBQUNwQyxRQUFJLENBQUMsY0FBYyxTQUFTO0FBQ3hCLHNCQUFnQixDQUFDO0FBQUEsSUFDckI7QUFBQSxFQUNKLENBQUM7QUFHRCxjQUFZLFVBQVUsS0FBSyxXQUFTO0FBQ2hDLFFBQUksZUFBZSxRQUFRO0FBQ3ZCLFVBQUksTUFBTSxNQUFNLElBQUksYUFBYSxTQUFTLEdBQUc7QUFDekMsbUJBQVcsUUFBUSxlQUFlO0FBQzlCLHNCQUFZLElBQUk7QUFBQSxRQUNwQjtBQUFBLE1BQ0o7QUFDQSxzQkFBZ0I7QUFBQSxJQUNwQjtBQUFBLEVBQ0osQ0FBQztBQUNMOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/testing/mocks/logging.ts"],
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,OAAO,YAAY;AAYZ,MAAM,gBAA4B;AAAA,EACrC,SAAS;AAAA,EACT,uBAAuB,CAAC,QAAgB,SAAiB,QAAQ,IAAI,sBAAsB,QAAQ,IAAI,CAAC;AAC5G;AAEA,SAAS,sBAAsB,QAAgB,MAAc;AACzD,SAAO,OAAO,OAAO,OAAO,MAAM,KAAK,IAAI,MAAM,GAAG,CAAC,IAAI,OAAO,IAAI,IAAI,CAAC;AAC7E;AASO,MAAM,cAAc;AAAA,EACvB,YAAY,MAA8B;AAAA,EAC1C,WAAW,MAA8B;AAC7C;AAEO,SAAS,YAAY,QAAoB;AAU5C,SAAO,SAAS;AAEhB,MAAI;AAEJ,QAAM,aAAa,OAAO;AAE1B,WAAS,YAAY,MAAwB;AACzC,eAAW,MAAM,QAAQ,IAAI;AAAA,EACjC;AAEA,WAAS,sBAAsB,MAAwB;AACnD,QAAI,UAAU,cAAc;AAC5B,QAAI,aAAa,YAAY;AACzB,kBAAY,WAAW,GAAG,IAAI;AAAA,IAClC,WAAW,CAAC,SAAS;AACjB,UAAI,eAAe;AACf,sBAAc,KAAK,IAAI;AAAA,MAC3B,OAAO;AACH,kBAAU;AAAA,MACd;AAAA,IACJ;AAEA,QAAI,SAAS;AACT,kBAAY,IAAI;AAAA,IACpB;AAAA,EACJ;AAEA,gBAAc,wBAAwB,CAAC,QAAQ,SAAS,mBAAmB,GAAG,sBAAsB,QAAQ,IAAI,CAAC;AAEjH,SAAO,MAAM;AAGb,cAAY,WAAW,KAAK,WAAY;AACpC,QAAI,CAAC,cAAc,SAAS;AACxB,sBAAgB,CAAC;AAAA,IACrB;AAAA,EACJ,CAAC;AAGD,cAAY,UAAU,KAAK,WAAS;AAChC,QAAI,eAAe,QAAQ;AACvB,UAAI,MAAM,MAAM,IAAI,aAAa,SAAS,GAAG;AACzC,mBAAW,QAAQ,eAAe;AAC9B,sBAAY,IAAI;AAAA,QACpB;AAAA,MACJ;AACA,sBAAgB;AAAA,IACpB;AAAA,EACJ,CAAC;AACL;",
5
+ "names": []
6
+ }
@@ -0,0 +1,88 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ type TimerCallback = () => any;
7
+ type MockTimeLike = typeof MockTime;
8
+ export interface MockTime extends MockTimeLike {
9
+ }
10
+ declare class MockTimer {
11
+ private readonly mockTime;
12
+ private readonly durationMs;
13
+ name: string;
14
+ systemId: number;
15
+ intervalMs: number;
16
+ isPeriodic: boolean;
17
+ isRunning: boolean;
18
+ private readonly callback;
19
+ constructor(mockTime: MockTime, durationMs: number, callback: TimerCallback);
20
+ start(): this;
21
+ stop(): this;
22
+ }
23
+ type InterceptResult<T> = T extends Promise<T> ? {
24
+ resolve: Awaited<T>;
25
+ reject?: undefined;
26
+ } | {
27
+ resolve?: undefined;
28
+ reject: {};
29
+ } : {
30
+ resolve: T;
31
+ reject?: undefined;
32
+ } | {
33
+ resolve?: void;
34
+ reject: {};
35
+ };
36
+ export declare const MockTime: {
37
+ readonly activeImplementation: unknown;
38
+ disable(): void;
39
+ enable(): void;
40
+ reset(time?: number): void;
41
+ now(): Date;
42
+ nowMs(): number;
43
+ getTimer(_name: string, durationMs: number, callback: TimerCallback): MockTimer;
44
+ getPeriodicTimer(_name: string, intervalMs: number, callback: TimerCallback): MockTimer;
45
+ /**
46
+ * Resolve a promise with time dependency.
47
+ *
48
+ * Moves time forward until the promise resolves.
49
+ */
50
+ resolve<T>(promise: PromiseLike<T>): Promise<T>;
51
+ /**
52
+ * Move time forward. Runs tasks scheduled during this interval.
53
+ */
54
+ advance(ms: number): Promise<void>;
55
+ /**
56
+ * Yield to scheduled microtasks. This means that all code paths waiting
57
+ * on resolved promises (including await) will proceed before this method
58
+ * returns.
59
+ */
60
+ yield(): Promise<void>;
61
+ /**
62
+ * Due to its implementation, an older version of yield() would actually
63
+ * yield to microtasks three times. Our tests then depended on this
64
+ * functionality -- one yield could trigger up to three nested awaits.
65
+ *
66
+ * To make this clear, the version of yield() that emulates old behavior
67
+ * is called "yield3".
68
+ */
69
+ yield3(): Promise<void>;
70
+ /**
71
+ * Hook a method and invoke a callback just before the method completes.
72
+ * Unhooks after completion.
73
+ *
74
+ * Handles both synchronous and asynchronous methods. The interceptor
75
+ * should match the async-ness of the intercepted method.
76
+ *
77
+ * The interceptor can optionally access and/or replace the resolve/reject
78
+ * value.
79
+ */
80
+ interceptOnce<NameT extends string, ReturnT, ObjT extends { [N in NameT]: (...args: any) => ReturnT; }>(obj: ObjT, method: NameT, interceptor: (result: InterceptResult<ReturnT>) => void | InterceptResult<ReturnT> | Promise<void> | Promise<InterceptResult<ReturnT>>): void;
81
+ callbackAtTime(atMs: number, callback: TimerCallback): void;
82
+ removeCallback(callbackToRemove: TimerCallback): void;
83
+ };
84
+ export declare function timeSetup(Time: {
85
+ get(): unknown;
86
+ }): void;
87
+ export {};
88
+ //# sourceMappingURL=time.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../../../../src/testing/mocks/time.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,KAAK,aAAa,GAAG,MAAM,GAAG,CAAC;AAE/B,KAAK,YAAY,GAAG,OAAO,QAAQ,CAAC;AACpC,MAAM,WAAW,QAAS,SAAQ,YAAY;CAAG;AAGjD,cAAM,SAAS;IAUP,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAV/B,IAAI,SAAU;IACd,QAAQ,SAAK;IACb,UAAU,SAAK;IACf,UAAU,UAAS;IAEnB,SAAS,UAAS;IAClB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgB;gBAGpB,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,MAAM,EACnC,QAAQ,EAAE,aAAa;IAY3B,KAAK;IAML,IAAI;CAKP;AAYD,KAAK,eAAe,CAAC,CAAC,IAClB,CAAC,SAAS,OAAO,CAAC,CAAC,CAAC,GACd;IAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAAC,MAAM,CAAC,EAAE,SAAS,CAAA;CAAE,GAAG;IAAE,OAAO,CAAC,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,EAAE,CAAA;CAAE,GACjF;IAAE,OAAO,EAAE,CAAC,CAAC;IAAC,MAAM,CAAC,EAAE,SAAS,CAAA;CAAE,GAAG;IAAE,OAAO,CAAC,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,EAAE,CAAA;CAAE,CAAC;AAY9E,eAAO,MAAM,QAAQ;;;;;WAuBV,IAAI;;oBAQK,MAAM,cAAc,MAAM,YAAY,aAAa,GAAG,SAAS;4BAIvD,MAAM,cAAc,MAAM,YAAY,aAAa,GAAG,SAAS;IAIvF;;;;OAIG;YACW,CAAC,WAAW,WAAW,CAAC,CAAC,CAAC;IAwDxC;;OAEG;gBACe,MAAM;IAexB;;;;OAIG;;IAKH;;;;;;;OAOG;;IAOH;;;;;;;;;OASG;kBACW,KAAK,SAAS,MAAM,EAAE,OAAO,EAAE,IAAI,SAAS,GAAG,CAAU,IAAL,KAAK,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,OAAO,GAAE,OAC5F,IAAI,UACD,KAAK,eACA,CACT,MAAM,EAAE,eAAe,CAAC,OAAO,CAAC,KAC/B,IAAI,GAAG,eAAe,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;yBA2CvE,MAAM,YAAY,aAAa;qCAKnB,aAAa;CAKjD,CAAC;AAIF,wBAAgB,SAAS,CAAC,IAAI,EAAE;IAAE,GAAG,IAAI,OAAO,CAAA;CAAE,QAIjD"}
@@ -0,0 +1,230 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ class MockTimer {
7
+ constructor(mockTime, durationMs, callback) {
8
+ this.mockTime = mockTime;
9
+ this.durationMs = durationMs;
10
+ if (this instanceof MockInterval) {
11
+ this.callback = callback;
12
+ } else {
13
+ this.callback = () => {
14
+ this.isRunning = false;
15
+ callback();
16
+ };
17
+ }
18
+ }
19
+ name = "Test";
20
+ systemId = 0;
21
+ intervalMs = 0;
22
+ isPeriodic = false;
23
+ isRunning = false;
24
+ callback;
25
+ start() {
26
+ this.mockTime.callbackAtTime(this.mockTime.nowMs() + this.durationMs, this.callback);
27
+ this.isRunning = true;
28
+ return this;
29
+ }
30
+ stop() {
31
+ this.mockTime.removeCallback(this.callback);
32
+ this.isRunning = false;
33
+ return this;
34
+ }
35
+ }
36
+ class MockInterval extends MockTimer {
37
+ constructor(mockTime, durationMs, callback) {
38
+ const intervalCallback = async () => {
39
+ mockTime.callbackAtTime(mockTime.nowMs() + durationMs, intervalCallback);
40
+ await callback();
41
+ };
42
+ super(mockTime, durationMs, intervalCallback);
43
+ }
44
+ }
45
+ function isAsync(fn) {
46
+ return fn.constructor.name === "AsyncFunction";
47
+ }
48
+ let callbacks = new Array();
49
+ let nowMs = 0;
50
+ let real = void 0;
51
+ let enabled = true;
52
+ const MockTime = {
53
+ get activeImplementation() {
54
+ return enabled ? this : real ?? this;
55
+ },
56
+ disable() {
57
+ enabled = false;
58
+ reinstallTime?.();
59
+ },
60
+ enable() {
61
+ enabled = true;
62
+ reinstallTime?.();
63
+ },
64
+ reset(time = 0) {
65
+ callbacks = [];
66
+ nowMs = time;
67
+ reinstallTime?.();
68
+ },
69
+ now() {
70
+ return new Date(nowMs);
71
+ },
72
+ nowMs() {
73
+ return nowMs;
74
+ },
75
+ getTimer(_name, durationMs, callback) {
76
+ return new MockTimer(this, durationMs, callback);
77
+ },
78
+ getPeriodicTimer(_name, intervalMs, callback) {
79
+ return new MockInterval(this, intervalMs, callback);
80
+ },
81
+ /**
82
+ * Resolve a promise with time dependency.
83
+ *
84
+ * Moves time forward until the promise resolves.
85
+ */
86
+ async resolve(promise) {
87
+ let resolved = false;
88
+ let result;
89
+ let error;
90
+ promise.then(
91
+ (r) => {
92
+ resolved = true;
93
+ result = r;
94
+ },
95
+ (e) => {
96
+ resolved = true;
97
+ error = e;
98
+ }
99
+ );
100
+ let timeAdvanced = 0;
101
+ while (!resolved) {
102
+ await new Promise((resolve) => setTimeout(() => resolve(), 0));
103
+ if (resolved) {
104
+ break;
105
+ }
106
+ if (timeAdvanced > 60 * 60 * 1e3) {
107
+ throw new Error(
108
+ "Mock timeout: Promise did not resolve within one (virtual) hour, probably not going to happen"
109
+ );
110
+ }
111
+ await this.advance(1e3);
112
+ timeAdvanced += 1e3;
113
+ if (resolved) {
114
+ break;
115
+ }
116
+ await this.yield();
117
+ }
118
+ if (error !== void 0) {
119
+ throw error;
120
+ }
121
+ return result;
122
+ },
123
+ /**
124
+ * Move time forward. Runs tasks scheduled during this interval.
125
+ */
126
+ async advance(ms) {
127
+ const newTimeMs = nowMs + ms;
128
+ while (true) {
129
+ if (callbacks.length === 0) break;
130
+ const { atMs, callback } = callbacks[0];
131
+ if (atMs > newTimeMs) break;
132
+ callbacks.shift();
133
+ nowMs = atMs;
134
+ await callback();
135
+ }
136
+ nowMs = newTimeMs;
137
+ },
138
+ /**
139
+ * Yield to scheduled microtasks. This means that all code paths waiting
140
+ * on resolved promises (including await) will proceed before this method
141
+ * returns.
142
+ */
143
+ async yield() {
144
+ await Promise.resolve();
145
+ },
146
+ /**
147
+ * Due to its implementation, an older version of yield() would actually
148
+ * yield to microtasks three times. Our tests then depended on this
149
+ * functionality -- one yield could trigger up to three nested awaits.
150
+ *
151
+ * To make this clear, the version of yield() that emulates old behavior
152
+ * is called "yield3".
153
+ */
154
+ async yield3() {
155
+ await Promise.resolve();
156
+ await Promise.resolve();
157
+ await Promise.resolve();
158
+ },
159
+ /**
160
+ * Hook a method and invoke a callback just before the method completes.
161
+ * Unhooks after completion.
162
+ *
163
+ * Handles both synchronous and asynchronous methods. The interceptor
164
+ * should match the async-ness of the intercepted method.
165
+ *
166
+ * The interceptor can optionally access and/or replace the resolve/reject
167
+ * value.
168
+ */
169
+ interceptOnce(obj, method, interceptor) {
170
+ const original = obj[method];
171
+ if (!original) {
172
+ throw new Error(`Interception method ${method} is not present`);
173
+ }
174
+ let result;
175
+ if (isAsync(interceptor)) {
176
+ obj[method] = async function(...args) {
177
+ try {
178
+ const resolve = await original.apply(this, args);
179
+ result = { resolve };
180
+ } catch (reject) {
181
+ result = { reject };
182
+ } finally {
183
+ obj[method] = original;
184
+ }
185
+ result = await interceptor(result) ?? result;
186
+ if (result.reject) {
187
+ throw result.reject;
188
+ }
189
+ return result.resolve;
190
+ };
191
+ } else {
192
+ obj[method] = function(...args) {
193
+ try {
194
+ const resolve = original.apply(this, args);
195
+ result = { resolve };
196
+ } catch (reject) {
197
+ result = { reject };
198
+ } finally {
199
+ obj[method] = original;
200
+ }
201
+ result = interceptor(result) ?? result;
202
+ if (result.reject) {
203
+ throw result.reject;
204
+ }
205
+ return result.resolve;
206
+ };
207
+ }
208
+ },
209
+ callbackAtTime(atMs, callback) {
210
+ callbacks.push({ atMs, callback });
211
+ callbacks.sort(({ atMs: atMsA }, { atMs: atMsB }) => atMsA - atMsB);
212
+ },
213
+ removeCallback(callbackToRemove) {
214
+ const index = callbacks.findIndex(({ callback }) => callbackToRemove === callback);
215
+ if (index === -1) return;
216
+ callbacks.splice(index, 1);
217
+ }
218
+ };
219
+ let reinstallTime;
220
+ function timeSetup(Time) {
221
+ real = Time.get();
222
+ reinstallTime = () => Time.get = () => MockTime.activeImplementation;
223
+ reinstallTime();
224
+ }
225
+ Object.assign(globalThis, { MockTime });
226
+ export {
227
+ MockTime,
228
+ timeSetup
229
+ };
230
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3Rlc3RpbmcvbW9ja3MvdGltZS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IDIwMjItMjAyNCBNYXR0ZXIuanMgQXV0aG9yc1xuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcbiAqL1xuXG50eXBlIFRpbWVyQ2FsbGJhY2sgPSAoKSA9PiBhbnk7XG5cbnR5cGUgTW9ja1RpbWVMaWtlID0gdHlwZW9mIE1vY2tUaW1lO1xuZXhwb3J0IGludGVyZmFjZSBNb2NrVGltZSBleHRlbmRzIE1vY2tUaW1lTGlrZSB7fVxuXG4vLyBNdXN0IG1hdGNoIG1hdHRlci5qcyBUaW1lciBpbnRlcmZhY2VcbmNsYXNzIE1vY2tUaW1lciB7XG4gICAgbmFtZSA9IFwiVGVzdFwiO1xuICAgIHN5c3RlbUlkID0gMDtcbiAgICBpbnRlcnZhbE1zID0gMDtcbiAgICBpc1BlcmlvZGljID0gZmFsc2U7XG5cbiAgICBpc1J1bm5pbmcgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhbGxiYWNrOiBUaW1lckNhbGxiYWNrO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbW9ja1RpbWU6IE1vY2tUaW1lLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGR1cmF0aW9uTXM6IG51bWJlcixcbiAgICAgICAgY2FsbGJhY2s6IFRpbWVyQ2FsbGJhY2ssXG4gICAgKSB7XG4gICAgICAgIGlmICh0aGlzIGluc3RhbmNlb2YgTW9ja0ludGVydmFsKSB7XG4gICAgICAgICAgICB0aGlzLmNhbGxiYWNrID0gY2FsbGJhY2s7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNhbGxiYWNrID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNSdW5uaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzdGFydCgpIHtcbiAgICAgICAgdGhpcy5tb2NrVGltZS5jYWxsYmFja0F0VGltZSh0aGlzLm1vY2tUaW1lLm5vd01zKCkgKyB0aGlzLmR1cmF0aW9uTXMsIHRoaXMuY2FsbGJhY2spO1xuICAgICAgICB0aGlzLmlzUnVubmluZyA9IHRydWU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHN0b3AoKSB7XG4gICAgICAgIHRoaXMubW9ja1RpbWUucmVtb3ZlQ2FsbGJhY2sodGhpcy5jYWxsYmFjayk7XG4gICAgICAgIHRoaXMuaXNSdW5uaW5nID0gZmFsc2U7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbn1cblxuY2xhc3MgTW9ja0ludGVydmFsIGV4dGVuZHMgTW9ja1RpbWVyIHtcbiAgICBjb25zdHJ1Y3Rvcihtb2NrVGltZTogTW9ja1RpbWUsIGR1cmF0aW9uTXM6IG51bWJlciwgY2FsbGJhY2s6IFRpbWVyQ2FsbGJhY2spIHtcbiAgICAgICAgY29uc3QgaW50ZXJ2YWxDYWxsYmFjayA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIG1vY2tUaW1lLmNhbGxiYWNrQXRUaW1lKG1vY2tUaW1lLm5vd01zKCkgKyBkdXJhdGlvbk1zLCBpbnRlcnZhbENhbGxiYWNrKTtcbiAgICAgICAgICAgIGF3YWl0IGNhbGxiYWNrKCk7XG4gICAgICAgIH07XG4gICAgICAgIHN1cGVyKG1vY2tUaW1lLCBkdXJhdGlvbk1zLCBpbnRlcnZhbENhbGxiYWNrKTtcbiAgICB9XG59XG5cbnR5cGUgSW50ZXJjZXB0UmVzdWx0PFQ+ID1cbiAgICBUIGV4dGVuZHMgUHJvbWlzZTxUPlxuICAgICAgICA/IHsgcmVzb2x2ZTogQXdhaXRlZDxUPjsgcmVqZWN0PzogdW5kZWZpbmVkIH0gfCB7IHJlc29sdmU/OiB1bmRlZmluZWQ7IHJlamVjdDoge30gfVxuICAgICAgICA6IHsgcmVzb2x2ZTogVDsgcmVqZWN0PzogdW5kZWZpbmVkIH0gfCB7IHJlc29sdmU/OiB2b2lkOyByZWplY3Q6IHt9IH07XG5cbmZ1bmN0aW9uIGlzQXN5bmMoZm46ICguLi5hcmdzOiBhbnkpID0+IGFueSk6IGZuIGlzICguLi5hcmdzOiBhbnkpID0+IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIGZuLmNvbnN0cnVjdG9yLm5hbWUgPT09IFwiQXN5bmNGdW5jdGlvblwiO1xufVxuXG5sZXQgY2FsbGJhY2tzID0gbmV3IEFycmF5PHsgYXRNczogbnVtYmVyOyBjYWxsYmFjazogVGltZXJDYWxsYmFjayB9PigpO1xubGV0IG5vd01zID0gMDtcbmxldCByZWFsID0gdW5kZWZpbmVkIGFzIHVua25vd247XG5sZXQgZW5hYmxlZCA9IHRydWU7XG5cbi8vIE11c3QgbWF0Y2ggbWF0dGVyLmpzIFRpbWUgaW50ZXJmYWNlXG5leHBvcnQgY29uc3QgTW9ja1RpbWUgPSB7XG4gICAgZ2V0IGFjdGl2ZUltcGxlbWVudGF0aW9uKCk6IHVua25vd24ge1xuICAgICAgICByZXR1cm4gZW5hYmxlZCA/IHRoaXMgOiAocmVhbCA/PyB0aGlzKTtcbiAgICB9LFxuXG4gICAgZGlzYWJsZSgpIHtcbiAgICAgICAgZW5hYmxlZCA9IGZhbHNlO1xuICAgICAgICByZWluc3RhbGxUaW1lPy4oKTtcbiAgICB9LFxuXG4gICAgZW5hYmxlKCkge1xuICAgICAgICBlbmFibGVkID0gdHJ1ZTtcbiAgICAgICAgcmVpbnN0YWxsVGltZT8uKCk7XG4gICAgfSxcblxuICAgIHJlc2V0KHRpbWUgPSAwKSB7XG4gICAgICAgIGNhbGxiYWNrcyA9IFtdO1xuICAgICAgICBub3dNcyA9IHRpbWU7XG5cbiAgICAgICAgLy8gRW5zdXJlIHRpbWUgcmV2ZXJ0cyB0byBjb3JyZWN0IGltcGxlbWVudGF0aW9uIGFjcm9zcyBzdWl0ZXNcbiAgICAgICAgcmVpbnN0YWxsVGltZT8uKCk7XG4gICAgfSxcblxuICAgIG5vdygpOiBEYXRlIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKG5vd01zKTtcbiAgICB9LFxuXG4gICAgbm93TXMoKSB7XG4gICAgICAgIHJldHVybiBub3dNcztcbiAgICB9LFxuXG4gICAgZ2V0VGltZXIoX25hbWU6IHN0cmluZywgZHVyYXRpb25NczogbnVtYmVyLCBjYWxsYmFjazogVGltZXJDYWxsYmFjayk6IE1vY2tUaW1lciB7XG4gICAgICAgIHJldHVybiBuZXcgTW9ja1RpbWVyKHRoaXMsIGR1cmF0aW9uTXMsIGNhbGxiYWNrKTtcbiAgICB9LFxuXG4gICAgZ2V0UGVyaW9kaWNUaW1lcihfbmFtZTogc3RyaW5nLCBpbnRlcnZhbE1zOiBudW1iZXIsIGNhbGxiYWNrOiBUaW1lckNhbGxiYWNrKTogTW9ja1RpbWVyIHtcbiAgICAgICAgcmV0dXJuIG5ldyBNb2NrSW50ZXJ2YWwodGhpcywgaW50ZXJ2YWxNcywgY2FsbGJhY2spO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBSZXNvbHZlIGEgcHJvbWlzZSB3aXRoIHRpbWUgZGVwZW5kZW5jeS5cbiAgICAgKlxuICAgICAqIE1vdmVzIHRpbWUgZm9yd2FyZCB1bnRpbCB0aGUgcHJvbWlzZSByZXNvbHZlcy5cbiAgICAgKi9cbiAgICBhc3luYyByZXNvbHZlPFQ+KHByb21pc2U6IFByb21pc2VMaWtlPFQ+KSB7XG4gICAgICAgIGxldCByZXNvbHZlZCA9IGZhbHNlO1xuICAgICAgICBsZXQgcmVzdWx0OiBUIHwgdW5kZWZpbmVkO1xuICAgICAgICBsZXQgZXJyb3I6IGFueTtcblxuICAgICAgICBwcm9taXNlLnRoZW4oXG4gICAgICAgICAgICByID0+IHtcbiAgICAgICAgICAgICAgICByZXNvbHZlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gcjtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlID0+IHtcbiAgICAgICAgICAgICAgICByZXNvbHZlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgZXJyb3IgPSBlO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgKTtcblxuICAgICAgICBsZXQgdGltZUFkdmFuY2VkID0gMDtcbiAgICAgICAgd2hpbGUgKCFyZXNvbHZlZCkge1xuICAgICAgICAgICAgLy8gSW50ZXJlc3RpbmdseSwgYSBUaW1lLnlpZWxkKCkgd29ya3MgaW4gYWxtb3N0IGV2ZXJ5IGNhc2UuICBIb3dldmVyLCBvbiBOb2RlIFN1YnRsZUNyeXB0by5kZXJpdmVCaXRzIGhhbmdzXG4gICAgICAgICAgICAvLyBpZiB5b3Ugb25seSB5aWVsZCB2aWEgbWljcm90YXNrLiAgSXQgc2VlbXMgdG8gcmVxdWlyZSB5aWVsZGluZyB2aWEgbWFjcm90YXNrLiAgU28gd2UgdXNlIHNldFRpbWVvdXQgaGVyZS5cbiAgICAgICAgICAgIC8vIFByb2JhYmx5IHJlbGF0ZWQgdG8gZW50cm9weSBjb2xsZWN0aW9uIGJ1dCBJIHRoaW5rIGl0J3Mgc2FmZSB0byBjbGFzc2lmeSBhcyBhIE5vZGUgYnVnLiAgVGVzdGVkIG9uXG4gICAgICAgICAgICAvLyB2ZXJzaW9uIDIwLjExLjBcbiAgICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlPHZvaWQ+KHJlc29sdmUgPT4gc2V0VGltZW91dCgoKSA9PiByZXNvbHZlKCksIDApKTtcblxuICAgICAgICAgICAgaWYgKHJlc29sdmVkKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIElmIHdlJ3ZlIGFkdmFuY2VkIG1vcmUgdGhhbiBvbmUgaG91ciwgYXNzdW1lIHdlJ3ZlIGh1bmdcbiAgICAgICAgICAgIGlmICh0aW1lQWR2YW5jZWQgPiA2MCAqIDYwICogMTAwMCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgXCJNb2NrIHRpbWVvdXQ6IFByb21pc2UgZGlkIG5vdCByZXNvbHZlIHdpdGhpbiBvbmUgKHZpcnR1YWwpIGhvdXIsIHByb2JhYmx5IG5vdCBnb2luZyB0byBoYXBwZW5cIixcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBBZHZhbmNlIHRpbWUgZXhwb25lbnRpYWxseSwgdHJ5aW5nIGZvciBncmFudWxhcml0eSBidXQgYWxzbyBPSyBwZXJmb3JtYW5jZS4gIE5vdGUgdGhhdCB3ZSBhcmUgbm90IG9ubHlcbiAgICAgICAgICAgIC8vIGFkdmFuY2luZyB0aW1lIGJ1dCBhbHNvIHlpZWxkaW5nIGV2ZW50IGxvb3AuICBTbyBpdCdzIHBvc3NpYmxlIGlmIHdlIHJ1biBvdXQgb2YgdGltZSBpdCdzIGp1c3QgYmVjYXVzZVxuICAgICAgICAgICAgLy8gdGhlcmUgd2VyZSB0b28gZmV3IHlpZWxkcyBpbiBvbmUgdmlydHVhbCBob3VyLiAgQXMgZGVzaWduZWQgY3VycmVudGx5IGl0J3MgMzYwIG1hY3JvdGFza3MgYW5kIDM2MFxuICAgICAgICAgICAgLy8gbWljcm90YXNrcyAoMzYwIGxvb3BzIHcvIDEgbWFjcm8tIGFuZCAxIG1pY3JvLXlpZWxkKVxuICAgICAgICAgICAgYXdhaXQgdGhpcy5hZHZhbmNlKDEwMDApO1xuICAgICAgICAgICAgdGltZUFkdmFuY2VkICs9IDEwMDA7XG5cbiAgICAgICAgICAgIGlmIChyZXNvbHZlZCkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnlpZWxkKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXJyb3IgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0IGFzIFQ7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIE1vdmUgdGltZSBmb3J3YXJkLiAgUnVucyB0YXNrcyBzY2hlZHVsZWQgZHVyaW5nIHRoaXMgaW50ZXJ2YWwuXG4gICAgICovXG4gICAgYXN5bmMgYWR2YW5jZShtczogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IG5ld1RpbWVNcyA9IG5vd01zICsgbXM7XG5cbiAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICAgIGlmIChjYWxsYmFja3MubGVuZ3RoID09PSAwKSBicmVhaztcbiAgICAgICAgICAgIGNvbnN0IHsgYXRNcywgY2FsbGJhY2sgfSA9IGNhbGxiYWNrc1swXTtcbiAgICAgICAgICAgIGlmIChhdE1zID4gbmV3VGltZU1zKSBicmVhaztcbiAgICAgICAgICAgIGNhbGxiYWNrcy5zaGlmdCgpO1xuICAgICAgICAgICAgbm93TXMgPSBhdE1zO1xuICAgICAgICAgICAgYXdhaXQgY2FsbGJhY2soKTtcbiAgICAgICAgfVxuXG4gICAgICAgIG5vd01zID0gbmV3VGltZU1zO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBZaWVsZCB0byBzY2hlZHVsZWQgbWljcm90YXNrcy4gIFRoaXMgbWVhbnMgdGhhdCBhbGwgY29kZSBwYXRocyB3YWl0aW5nXG4gICAgICogb24gcmVzb2x2ZWQgcHJvbWlzZXMgKGluY2x1ZGluZyBhd2FpdCkgd2lsbCBwcm9jZWVkIGJlZm9yZSB0aGlzIG1ldGhvZFxuICAgICAqIHJldHVybnMuXG4gICAgICovXG4gICAgYXN5bmMgeWllbGQoKSB7XG4gICAgICAgIGF3YWl0IFByb21pc2UucmVzb2x2ZSgpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBEdWUgdG8gaXRzIGltcGxlbWVudGF0aW9uLCBhbiBvbGRlciB2ZXJzaW9uIG9mIHlpZWxkKCkgd291bGQgYWN0dWFsbHlcbiAgICAgKiB5aWVsZCB0byBtaWNyb3Rhc2tzIHRocmVlIHRpbWVzLiAgT3VyIHRlc3RzIHRoZW4gZGVwZW5kZWQgb24gdGhpc1xuICAgICAqIGZ1bmN0aW9uYWxpdHkgLS0gb25lIHlpZWxkIGNvdWxkIHRyaWdnZXIgdXAgdG8gdGhyZWUgbmVzdGVkIGF3YWl0cy5cbiAgICAgKlxuICAgICAqIFRvIG1ha2UgdGhpcyBjbGVhciwgdGhlIHZlcnNpb24gb2YgeWllbGQoKSB0aGF0IGVtdWxhdGVzIG9sZCBiZWhhdmlvclxuICAgICAqIGlzIGNhbGxlZCBcInlpZWxkM1wiLlxuICAgICAqL1xuICAgIGFzeW5jIHlpZWxkMygpIHtcbiAgICAgICAgYXdhaXQgUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICAgIGF3YWl0IFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgICBhd2FpdCBQcm9taXNlLnJlc29sdmUoKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogSG9vayBhIG1ldGhvZCBhbmQgaW52b2tlIGEgY2FsbGJhY2sganVzdCBiZWZvcmUgdGhlIG1ldGhvZCBjb21wbGV0ZXMuXG4gICAgICogVW5ob29rcyBhZnRlciBjb21wbGV0aW9uLlxuICAgICAqXG4gICAgICogSGFuZGxlcyBib3RoIHN5bmNocm9ub3VzIGFuZCBhc3luY2hyb25vdXMgbWV0aG9kcy4gIFRoZSBpbnRlcmNlcHRvclxuICAgICAqIHNob3VsZCBtYXRjaCB0aGUgYXN5bmMtbmVzcyBvZiB0aGUgaW50ZXJjZXB0ZWQgbWV0aG9kLlxuICAgICAqXG4gICAgICogVGhlIGludGVyY2VwdG9yIGNhbiBvcHRpb25hbGx5IGFjY2VzcyBhbmQvb3IgcmVwbGFjZSB0aGUgcmVzb2x2ZS9yZWplY3RcbiAgICAgKiB2YWx1ZS5cbiAgICAgKi9cbiAgICBpbnRlcmNlcHRPbmNlPE5hbWVUIGV4dGVuZHMgc3RyaW5nLCBSZXR1cm5ULCBPYmpUIGV4dGVuZHMgeyBbTiBpbiBOYW1lVF06ICguLi5hcmdzOiBhbnkpID0+IFJldHVyblQgfT4oXG4gICAgICAgIG9iajogT2JqVCxcbiAgICAgICAgbWV0aG9kOiBOYW1lVCxcbiAgICAgICAgaW50ZXJjZXB0b3I6IChcbiAgICAgICAgICAgIHJlc3VsdDogSW50ZXJjZXB0UmVzdWx0PFJldHVyblQ+LFxuICAgICAgICApID0+IHZvaWQgfCBJbnRlcmNlcHRSZXN1bHQ8UmV0dXJuVD4gfCBQcm9taXNlPHZvaWQ+IHwgUHJvbWlzZTxJbnRlcmNlcHRSZXN1bHQ8UmV0dXJuVD4+LFxuICAgICkge1xuICAgICAgICBjb25zdCBvcmlnaW5hbCA9IG9ialttZXRob2RdO1xuICAgICAgICBpZiAoIW9yaWdpbmFsKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludGVyY2VwdGlvbiBtZXRob2QgJHttZXRob2R9IGlzIG5vdCBwcmVzZW50YCk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHJlc3VsdDogSW50ZXJjZXB0UmVzdWx0PFJldHVyblQ+O1xuICAgICAgICBpZiAoaXNBc3luYyhpbnRlcmNlcHRvcikpIHtcbiAgICAgICAgICAgIG9ialttZXRob2RdID0gYXN5bmMgZnVuY3Rpb24gKHRoaXM6IGFueSwgLi4uYXJnczogYW55KTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2F3YWl0LXRoZW5hYmxlXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc29sdmUgPSBhd2FpdCBvcmlnaW5hbC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0geyByZXNvbHZlIH0gYXMgYW55O1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHJlamVjdCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSB7IHJlamVjdCB9IGFzIGFueTtcbiAgICAgICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgICBvYmpbbWV0aG9kXSA9IG9yaWdpbmFsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXN1bHQgPSAoYXdhaXQgaW50ZXJjZXB0b3IocmVzdWx0KSkgPz8gcmVzdWx0O1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQucmVqZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3VsdC5yZWplY3Q7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQucmVzb2x2ZTtcbiAgICAgICAgICAgIH0gYXMgYW55O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb2JqW21ldGhvZF0gPSBmdW5jdGlvbiAodGhpczogYW55LCAuLi5hcmdzOiBhbnkpOiBhbnkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc29sdmUgPSBvcmlnaW5hbC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0geyByZXNvbHZlIH0gYXMgYW55O1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHJlamVjdCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSB7IHJlamVjdCB9IGFzIGFueTtcbiAgICAgICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgICBvYmpbbWV0aG9kXSA9IG9yaWdpbmFsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXN1bHQgPSAoaW50ZXJjZXB0b3IocmVzdWx0KSBhcyBhbnkpID8/IHJlc3VsdDtcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0LnJlamVjdCkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXN1bHQucmVqZWN0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnJlc29sdmU7XG4gICAgICAgICAgICB9IGFzIGFueTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICBjYWxsYmFja0F0VGltZShhdE1zOiBudW1iZXIsIGNhbGxiYWNrOiBUaW1lckNhbGxiYWNrKSB7XG4gICAgICAgIGNhbGxiYWNrcy5wdXNoKHsgYXRNcywgY2FsbGJhY2sgfSk7XG4gICAgICAgIGNhbGxiYWNrcy5zb3J0KCh7IGF0TXM6IGF0TXNBIH0sIHsgYXRNczogYXRNc0IgfSkgPT4gYXRNc0EgLSBhdE1zQik7XG4gICAgfSxcblxuICAgIHJlbW92ZUNhbGxiYWNrKGNhbGxiYWNrVG9SZW1vdmU6IFRpbWVyQ2FsbGJhY2spIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSBjYWxsYmFja3MuZmluZEluZGV4KCh7IGNhbGxiYWNrIH0pID0+IGNhbGxiYWNrVG9SZW1vdmUgPT09IGNhbGxiYWNrKTtcbiAgICAgICAgaWYgKGluZGV4ID09PSAtMSkgcmV0dXJuO1xuICAgICAgICBjYWxsYmFja3Muc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9LFxufTtcblxubGV0IHJlaW5zdGFsbFRpbWU6IHVuZGVmaW5lZCB8ICgoKSA9PiB2b2lkKTtcblxuZXhwb3J0IGZ1bmN0aW9uIHRpbWVTZXR1cChUaW1lOiB7IGdldCgpOiB1bmtub3duIH0pIHtcbiAgICByZWFsID0gVGltZS5nZXQoKTtcbiAgICByZWluc3RhbGxUaW1lID0gKCkgPT4gKFRpbWUuZ2V0ID0gKCkgPT4gTW9ja1RpbWUuYWN0aXZlSW1wbGVtZW50YXRpb24pO1xuICAgIHJlaW5zdGFsbFRpbWUoKTtcbn1cblxuT2JqZWN0LmFzc2lnbihnbG9iYWxUaGlzLCB7IE1vY2tUaW1lIH0pO1xuIl0sCiAgIm1hcHBpbmdzIjogIkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVlBLE1BQU0sVUFBVTtBQUFBLEVBU1osWUFDcUIsVUFDQSxZQUNqQixVQUNGO0FBSG1CO0FBQ0E7QUFHakIsUUFBSSxnQkFBZ0IsY0FBYztBQUM5QixXQUFLLFdBQVc7QUFBQSxJQUNwQixPQUFPO0FBQ0gsV0FBSyxXQUFXLE1BQU07QUFDbEIsYUFBSyxZQUFZO0FBQ2pCLGlCQUFTO0FBQUEsTUFDYjtBQUFBLElBQ0o7QUFBQSxFQUNKO0FBQUEsRUFyQkEsT0FBTztBQUFBLEVBQ1AsV0FBVztBQUFBLEVBQ1gsYUFBYTtBQUFBLEVBQ2IsYUFBYTtBQUFBLEVBRWIsWUFBWTtBQUFBLEVBQ0s7QUFBQSxFQWlCakIsUUFBUTtBQUNKLFNBQUssU0FBUyxlQUFlLEtBQUssU0FBUyxNQUFNLElBQUksS0FBSyxZQUFZLEtBQUssUUFBUTtBQUNuRixTQUFLLFlBQVk7QUFDakIsV0FBTztBQUFBLEVBQ1g7QUFBQSxFQUVBLE9BQU87QUFDSCxTQUFLLFNBQVMsZUFBZSxLQUFLLFFBQVE7QUFDMUMsU0FBSyxZQUFZO0FBQ2pCLFdBQU87QUFBQSxFQUNYO0FBQ0o7QUFFQSxNQUFNLHFCQUFxQixVQUFVO0FBQUEsRUFDakMsWUFBWSxVQUFvQixZQUFvQixVQUF5QjtBQUN6RSxVQUFNLG1CQUFtQixZQUFZO0FBQ2pDLGVBQVMsZUFBZSxTQUFTLE1BQU0sSUFBSSxZQUFZLGdCQUFnQjtBQUN2RSxZQUFNLFNBQVM7QUFBQSxJQUNuQjtBQUNBLFVBQU0sVUFBVSxZQUFZLGdCQUFnQjtBQUFBLEVBQ2hEO0FBQ0o7QUFPQSxTQUFTLFFBQVEsSUFBaUU7QUFDOUUsU0FBTyxHQUFHLFlBQVksU0FBUztBQUNuQztBQUVBLElBQUksWUFBWSxJQUFJLE1BQWlEO0FBQ3JFLElBQUksUUFBUTtBQUNaLElBQUksT0FBTztBQUNYLElBQUksVUFBVTtBQUdQLE1BQU0sV0FBVztBQUFBLEVBQ3BCLElBQUksdUJBQWdDO0FBQ2hDLFdBQU8sVUFBVSxPQUFRLFFBQVE7QUFBQSxFQUNyQztBQUFBLEVBRUEsVUFBVTtBQUNOLGNBQVU7QUFDVixvQkFBZ0I7QUFBQSxFQUNwQjtBQUFBLEVBRUEsU0FBUztBQUNMLGNBQVU7QUFDVixvQkFBZ0I7QUFBQSxFQUNwQjtBQUFBLEVBRUEsTUFBTSxPQUFPLEdBQUc7QUFDWixnQkFBWSxDQUFDO0FBQ2IsWUFBUTtBQUdSLG9CQUFnQjtBQUFBLEVBQ3BCO0FBQUEsRUFFQSxNQUFZO0FBQ1IsV0FBTyxJQUFJLEtBQUssS0FBSztBQUFBLEVBQ3pCO0FBQUEsRUFFQSxRQUFRO0FBQ0osV0FBTztBQUFBLEVBQ1g7QUFBQSxFQUVBLFNBQVMsT0FBZSxZQUFvQixVQUFvQztBQUM1RSxXQUFPLElBQUksVUFBVSxNQUFNLFlBQVksUUFBUTtBQUFBLEVBQ25EO0FBQUEsRUFFQSxpQkFBaUIsT0FBZSxZQUFvQixVQUFvQztBQUNwRixXQUFPLElBQUksYUFBYSxNQUFNLFlBQVksUUFBUTtBQUFBLEVBQ3REO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT0EsTUFBTSxRQUFXLFNBQXlCO0FBQ3RDLFFBQUksV0FBVztBQUNmLFFBQUk7QUFDSixRQUFJO0FBRUosWUFBUTtBQUFBLE1BQ0osT0FBSztBQUNELG1CQUFXO0FBQ1gsaUJBQVM7QUFBQSxNQUNiO0FBQUEsTUFDQSxPQUFLO0FBQ0QsbUJBQVc7QUFDWCxnQkFBUTtBQUFBLE1BQ1o7QUFBQSxJQUNKO0FBRUEsUUFBSSxlQUFlO0FBQ25CLFdBQU8sQ0FBQyxVQUFVO0FBS2QsWUFBTSxJQUFJLFFBQWMsYUFBVyxXQUFXLE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQztBQUVqRSxVQUFJLFVBQVU7QUFDVjtBQUFBLE1BQ0o7QUFHQSxVQUFJLGVBQWUsS0FBSyxLQUFLLEtBQU07QUFDL0IsY0FBTSxJQUFJO0FBQUEsVUFDTjtBQUFBLFFBQ0o7QUFBQSxNQUNKO0FBTUEsWUFBTSxLQUFLLFFBQVEsR0FBSTtBQUN2QixzQkFBZ0I7QUFFaEIsVUFBSSxVQUFVO0FBQ1Y7QUFBQSxNQUNKO0FBRUEsWUFBTSxLQUFLLE1BQU07QUFBQSxJQUNyQjtBQUVBLFFBQUksVUFBVSxRQUFXO0FBQ3JCLFlBQU07QUFBQSxJQUNWO0FBRUEsV0FBTztBQUFBLEVBQ1g7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtBLE1BQU0sUUFBUSxJQUFZO0FBQ3RCLFVBQU0sWUFBWSxRQUFRO0FBRTFCLFdBQU8sTUFBTTtBQUNULFVBQUksVUFBVSxXQUFXLEVBQUc7QUFDNUIsWUFBTSxFQUFFLE1BQU0sU0FBUyxJQUFJLFVBQVUsQ0FBQztBQUN0QyxVQUFJLE9BQU8sVUFBVztBQUN0QixnQkFBVSxNQUFNO0FBQ2hCLGNBQVE7QUFDUixZQUFNLFNBQVM7QUFBQSxJQUNuQjtBQUVBLFlBQVE7QUFBQSxFQUNaO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT0EsTUFBTSxRQUFRO0FBQ1YsVUFBTSxRQUFRLFFBQVE7QUFBQSxFQUMxQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVVBLE1BQU0sU0FBUztBQUNYLFVBQU0sUUFBUSxRQUFRO0FBQ3RCLFVBQU0sUUFBUSxRQUFRO0FBQ3RCLFVBQU0sUUFBUSxRQUFRO0FBQUEsRUFDMUI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBWUEsY0FDSSxLQUNBLFFBQ0EsYUFHRjtBQUNFLFVBQU0sV0FBVyxJQUFJLE1BQU07QUFDM0IsUUFBSSxDQUFDLFVBQVU7QUFDWCxZQUFNLElBQUksTUFBTSx1QkFBdUIsTUFBTSxpQkFBaUI7QUFBQSxJQUNsRTtBQUNBLFFBQUk7QUFDSixRQUFJLFFBQVEsV0FBVyxHQUFHO0FBQ3RCLFVBQUksTUFBTSxJQUFJLGtCQUE4QixNQUF5QjtBQUNqRSxZQUFJO0FBRUEsZ0JBQU0sVUFBVSxNQUFNLFNBQVMsTUFBTSxNQUFNLElBQUk7QUFDL0MsbUJBQVMsRUFBRSxRQUFRO0FBQUEsUUFDdkIsU0FBUyxRQUFRO0FBQ2IsbUJBQVMsRUFBRSxPQUFPO0FBQUEsUUFDdEIsVUFBRTtBQUNFLGNBQUksTUFBTSxJQUFJO0FBQUEsUUFDbEI7QUFDQSxpQkFBVSxNQUFNLFlBQVksTUFBTSxLQUFNO0FBQ3hDLFlBQUksT0FBTyxRQUFRO0FBQ2YsZ0JBQU0sT0FBTztBQUFBLFFBQ2pCO0FBQ0EsZUFBTyxPQUFPO0FBQUEsTUFDbEI7QUFBQSxJQUNKLE9BQU87QUFDSCxVQUFJLE1BQU0sSUFBSSxZQUF3QixNQUFnQjtBQUNsRCxZQUFJO0FBQ0EsZ0JBQU0sVUFBVSxTQUFTLE1BQU0sTUFBTSxJQUFJO0FBQ3pDLG1CQUFTLEVBQUUsUUFBUTtBQUFBLFFBQ3ZCLFNBQVMsUUFBUTtBQUNiLG1CQUFTLEVBQUUsT0FBTztBQUFBLFFBQ3RCLFVBQUU7QUFDRSxjQUFJLE1BQU0sSUFBSTtBQUFBLFFBQ2xCO0FBQ0EsaUJBQVUsWUFBWSxNQUFNLEtBQWE7QUFDekMsWUFBSSxPQUFPLFFBQVE7QUFDZixnQkFBTSxPQUFPO0FBQUEsUUFDakI7QUFDQSxlQUFPLE9BQU87QUFBQSxNQUNsQjtBQUFBLElBQ0o7QUFBQSxFQUNKO0FBQUEsRUFFQSxlQUFlLE1BQWMsVUFBeUI7QUFDbEQsY0FBVSxLQUFLLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDakMsY0FBVSxLQUFLLENBQUMsRUFBRSxNQUFNLE1BQU0sR0FBRyxFQUFFLE1BQU0sTUFBTSxNQUFNLFFBQVEsS0FBSztBQUFBLEVBQ3RFO0FBQUEsRUFFQSxlQUFlLGtCQUFpQztBQUM1QyxVQUFNLFFBQVEsVUFBVSxVQUFVLENBQUMsRUFBRSxTQUFTLE1BQU0scUJBQXFCLFFBQVE7QUFDakYsUUFBSSxVQUFVLEdBQUk7QUFDbEIsY0FBVSxPQUFPLE9BQU8sQ0FBQztBQUFBLEVBQzdCO0FBQ0o7QUFFQSxJQUFJO0FBRUcsU0FBUyxVQUFVLE1BQTBCO0FBQ2hELFNBQU8sS0FBSyxJQUFJO0FBQ2hCLGtCQUFnQixNQUFPLEtBQUssTUFBTSxNQUFNLFNBQVM7QUFDakQsZ0JBQWM7QUFDbEI7QUFFQSxPQUFPLE9BQU8sWUFBWSxFQUFFLFNBQVMsQ0FBQzsiLAogICJuYW1lcyI6IFtdCn0K
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/testing/mocks/time.ts"],
4
+ "mappings": "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",
5
+ "names": []
6
+ }
@@ -0,0 +1,16 @@
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
+ import "./global-definitions.js";
8
+ export declare function testNode(runner: TestRunner, format: "cjs" | "esm"): Promise<void>;
9
+ export interface Profilerish {
10
+ setGenerateType(value: number): void;
11
+ startProfiling(): void;
12
+ stopProfiling(): {
13
+ export(callback: (error: any, result: string) => any): void;
14
+ };
15
+ }
16
+ //# sourceMappingURL=node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../src/testing/node.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAI9C,OAAO,yBAAyB,CAAC;AAEjC,wBAAsB,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,GAAG,KAAK,iBA+CvE;AAMD,MAAM,WAAW,WAAW;IACxB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,cAAc,IAAI,IAAI,CAAC;IACvB,aAAa,IAAI;QACb,MAAM,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,KAAK,GAAG,GAAG,IAAI,CAAC;KAC/D,CAAC;CACL"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { mkdir, writeFile } from "fs/promises";
7
+ import Mocha from "mocha";
8
+ import { relative } from "path";
9
+ import { adaptReporter, generalSetup } from "./mocha.js";
10
+ import { TestOptions } from "./options.js";
11
+ import { FailureDetail } from "./failure-detail.js";
12
+ import "./global-definitions.js";
13
+ async function testNode(runner, format) {
14
+ process.on("unhandledRejection", (e) => {
15
+ if (process.listenerCount("unhandledRejection") === 1) {
16
+ const error = new Error("Unhandled rejection (ignored by mocha)");
17
+ error.cause = e;
18
+ runner.reporter.failRun(FailureDetail(error));
19
+ }
20
+ });
21
+ const mocha = new Mocha({
22
+ inlineDiffs: true,
23
+ reporter: adaptReporter(Mocha, format.toUpperCase(), runner.reporter)
24
+ });
25
+ generalSetup(mocha);
26
+ TestOptions.apply(mocha, runner.options);
27
+ const files = runner.loadFiles(format);
28
+ files.forEach((path) => {
29
+ path = relative(process.cwd(), path);
30
+ if (path[0] !== ".") {
31
+ path = `./${path}`;
32
+ }
33
+ mocha.addFile(path);
34
+ });
35
+ await mocha.loadFilesAsync();
36
+ const profiler = new Profiler();
37
+ if (runner.options.profile) {
38
+ await profiler.start();
39
+ }
40
+ await new Promise((resolve) => {
41
+ const runner2 = mocha.run(() => resolve(runner2));
42
+ });
43
+ if (runner.options.profile) {
44
+ await profiler.stop(runner.pkg.resolve("build/profiles"));
45
+ }
46
+ }
47
+ class Profiler {
48
+ #profiler;
49
+ async start() {
50
+ this.#profiler = (await import("v8-profiler-next")).default;
51
+ this.#profiler.setGenerateType(1);
52
+ this.#profiler.startProfiling();
53
+ }
54
+ async stop(outputDir) {
55
+ if (!this.#profiler) {
56
+ return;
57
+ }
58
+ const profile = this.#profiler.stopProfiling();
59
+ const result = await new Promise(
60
+ (accept, reject) => profile.export((error, result2) => {
61
+ if (error) {
62
+ reject(error);
63
+ } else if (!result2) {
64
+ reject(new Error("No profile error or result"));
65
+ } else {
66
+ accept(result2);
67
+ }
68
+ })
69
+ );
70
+ await mkdir(outputDir, { recursive: true });
71
+ await writeFile(`${outputDir}/test-${(/* @__PURE__ */ new Date()).toISOString().slice(0, 19)}.cpuprofile`, result);
72
+ this.#profiler = void 0;
73
+ }
74
+ }
75
+ export {
76
+ testNode
77
+ };
78
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3Rlc3Rpbmcvbm9kZS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IDIwMjItMjAyNCBNYXR0ZXIuanMgQXV0aG9yc1xuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcbiAqL1xuXG5pbXBvcnQgeyBta2Rpciwgd3JpdGVGaWxlIH0gZnJvbSBcImZzL3Byb21pc2VzXCI7XG5pbXBvcnQgTW9jaGEgZnJvbSBcIm1vY2hhXCI7XG5pbXBvcnQgeyByZWxhdGl2ZSB9IGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyBhZGFwdFJlcG9ydGVyLCBnZW5lcmFsU2V0dXAgfSBmcm9tIFwiLi9tb2NoYS5qc1wiO1xuaW1wb3J0IHsgVGVzdE9wdGlvbnMgfSBmcm9tIFwiLi9vcHRpb25zLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFRlc3RSdW5uZXIgfSBmcm9tIFwiLi9ydW5uZXIuanNcIjtcblxuLy8gTG9hZCBnbG9iYWxzIHNvIHNldHRpbmdzIGdldCBhcHBsaWVkXG5pbXBvcnQgeyBGYWlsdXJlRGV0YWlsIH0gZnJvbSBcIi4vZmFpbHVyZS1kZXRhaWwuanNcIjtcbmltcG9ydCBcIi4vZ2xvYmFsLWRlZmluaXRpb25zLmpzXCI7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0ZXN0Tm9kZShydW5uZXI6IFRlc3RSdW5uZXIsIGZvcm1hdDogXCJjanNcIiB8IFwiZXNtXCIpIHtcbiAgICAvLyBHcnIgTW9jaGEgKGFzIG9mIDEwLjIuMCkgY2xhc3NpZmllcyBjZXJ0YWluIHVuaGFuZGxlZCByZWplY3Rpb25zIGFzIFwibW9jaGFcIi4gIEZvciBvdGhlcnMsIGl0IHVuaW5zdGFsbHMgaXRzXG4gICAgLy8gdW5oYW5kbGVkIHJlamVjdGlvbiBoYW5kbGVyIGFuZCByZS1lbWl0cyB0aGUgXCJ1bmhhbmRsZWRSZWplY3Rpb25cIiBldmVudC4gIEJ1dCBzaW5jZSBpdCBhbHJlYWR5IGhhbmRsZWQgdGhlIGV2ZW50LFxuICAgIC8vIE5vZGUga25vd3Mgbm90aGluZyBhYm91dCB0aGlzIGFuZCB0aGUgZXZlbnQgZGlzYXBwZWFycyBzaWxlbnRseS5cbiAgICAvL1xuICAgIC8vIFNvIHdlIG11c3QgYWRkIG91ciBvd24gdW5oYW5kbGVkUmVqZWN0aW9uIGhhbmRsZXIsIGJ1dCBvbmx5IHByb2Nlc3MgZXhjZXB0aW9ucyBpZiBNb2NoYSdzIGhhbmRsZXIgaXMgbm90XG4gICAgLy8gaW5zdGFsbGVkLCBiZWNhdXNlIHRoZSBjb2RlIHRoYXQgTW9jaGEgdXNlcyB0byBkZXRlcm1pbmUgaWYgYW4gZXJyb3IgaXMgYSBcIm1vY2hhXCIgZXJyb3IgaXMgbm90IGV4cG9ydGVkLlxuICAgIHByb2Nlc3Mub24oXCJ1bmhhbmRsZWRSZWplY3Rpb25cIiwgZSA9PiB7XG4gICAgICAgIGlmIChwcm9jZXNzLmxpc3RlbmVyQ291bnQoXCJ1bmhhbmRsZWRSZWplY3Rpb25cIikgPT09IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKFwiVW5oYW5kbGVkIHJlamVjdGlvbiAoaWdub3JlZCBieSBtb2NoYSlcIik7XG4gICAgICAgICAgICBlcnJvci5jYXVzZSA9IGU7XG4gICAgICAgICAgICBydW5uZXIucmVwb3J0ZXIuZmFpbFJ1bihGYWlsdXJlRGV0YWlsKGVycm9yKSk7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnN0IG1vY2hhID0gbmV3IE1vY2hhKHtcbiAgICAgICAgaW5saW5lRGlmZnM6IHRydWUsXG4gICAgICAgIHJlcG9ydGVyOiBhZGFwdFJlcG9ydGVyKE1vY2hhLCBmb3JtYXQudG9VcHBlckNhc2UoKSwgcnVubmVyLnJlcG9ydGVyKSxcbiAgICB9KTtcblxuICAgIGdlbmVyYWxTZXR1cChtb2NoYSk7XG5cbiAgICBUZXN0T3B0aW9ucy5hcHBseShtb2NoYSwgcnVubmVyLm9wdGlvbnMpO1xuXG4gICAgY29uc3QgZmlsZXMgPSBydW5uZXIubG9hZEZpbGVzKGZvcm1hdCk7XG4gICAgZmlsZXMuZm9yRWFjaChwYXRoID0+IHtcbiAgICAgICAgcGF0aCA9IHJlbGF0aXZlKHByb2Nlc3MuY3dkKCksIHBhdGgpO1xuICAgICAgICBpZiAocGF0aFswXSAhPT0gXCIuXCIpIHtcbiAgICAgICAgICAgIHBhdGggPSBgLi8ke3BhdGh9YDtcbiAgICAgICAgfVxuICAgICAgICBtb2NoYS5hZGRGaWxlKHBhdGgpO1xuICAgIH0pO1xuXG4gICAgYXdhaXQgbW9jaGEubG9hZEZpbGVzQXN5bmMoKTtcblxuICAgIGNvbnN0IHByb2ZpbGVyID0gbmV3IFByb2ZpbGVyKCk7XG4gICAgaWYgKHJ1bm5lci5vcHRpb25zLnByb2ZpbGUpIHtcbiAgICAgICAgYXdhaXQgcHJvZmlsZXIuc3RhcnQoKTtcbiAgICB9XG5cbiAgICBhd2FpdCBuZXcgUHJvbWlzZTxNb2NoYS5SdW5uZXI+KHJlc29sdmUgPT4ge1xuICAgICAgICBjb25zdCBydW5uZXIgPSBtb2NoYS5ydW4oKCkgPT4gcmVzb2x2ZShydW5uZXIpKTtcbiAgICB9KTtcblxuICAgIGlmIChydW5uZXIub3B0aW9ucy5wcm9maWxlKSB7XG4gICAgICAgIGF3YWl0IHByb2ZpbGVyLnN0b3AocnVubmVyLnBrZy5yZXNvbHZlKFwiYnVpbGQvcHJvZmlsZXNcIikpO1xuICAgIH1cbn1cblxuLy8gV2UgdXNlIHN0cmluZyBjb25jYXRlbmF0aW9uIHRvIHByZXZlbnQgVFMgZnJvbSB0cnlpbmcgdG8gZmluZCBwcm9maWxlciBsaWJyYXJ5IHR5cGVzLiAgSXQgZG9lc24ndCBidWlsZCBvbiBhbGxcbi8vIHBsYXRmb3JtcyB3ZSBzdXBwb3J0IGFuZCBkb2Vzbid0IHByb3ZpZGUgdHlwZSBkZWNsYXJhdGlvbnMgd2hlbiBpdCBkb2Vzbid0IGJ1aWxkXG4vL1xuLy8gVGhpcyBpbnRlcmZhY2UgYWN0cyBhcyBhIHJlcGxhY2VtZW50IGZvciBwcm9wZXIgdHlwZXNcbmV4cG9ydCBpbnRlcmZhY2UgUHJvZmlsZXJpc2gge1xuICAgIHNldEdlbmVyYXRlVHlwZSh2YWx1ZTogbnVtYmVyKTogdm9pZDtcbiAgICBzdGFydFByb2ZpbGluZygpOiB2b2lkO1xuICAgIHN0b3BQcm9maWxpbmcoKToge1xuICAgICAgICBleHBvcnQoY2FsbGJhY2s6IChlcnJvcjogYW55LCByZXN1bHQ6IHN0cmluZykgPT4gYW55KTogdm9pZDtcbiAgICB9O1xufVxuXG4vLyB2OC1wcm9maWxlci1uZXh0IGRvZXNuJ3QgbWFuYWdlIHN3aXRjaGluZyBub2RlIHZlcnNpb25zIHdlbGwuICBMb2FkIGR5bmFtaWNhbGx5IHNvIGl0IGRvZXNuJ3QgaW50ZXJmZXJlIGlmIGl0J3Mgbm90XG4vLyBidWlsdCBhbmQgd2UncmUgbm90IHByb2ZpbGluZ1xuY2xhc3MgUHJvZmlsZXIge1xuICAgICNwcm9maWxlcj86IFByb2ZpbGVyaXNoO1xuXG4gICAgYXN5bmMgc3RhcnQoKSB7XG4gICAgICAgIHRoaXMuI3Byb2ZpbGVyID0gKGF3YWl0IGltcG9ydChcIlwiICsgXCJ2OC1wcm9maWxlci1uZXh0XCIpKS5kZWZhdWx0IGFzIFByb2ZpbGVyaXNoO1xuICAgICAgICB0aGlzLiNwcm9maWxlci5zZXRHZW5lcmF0ZVR5cGUoMSk7XG4gICAgICAgIHRoaXMuI3Byb2ZpbGVyLnN0YXJ0UHJvZmlsaW5nKCk7XG4gICAgfVxuXG4gICAgYXN5bmMgc3RvcChvdXRwdXREaXI6IHN0cmluZykge1xuICAgICAgICBpZiAoIXRoaXMuI3Byb2ZpbGVyKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwcm9maWxlID0gdGhpcy4jcHJvZmlsZXIuc3RvcFByb2ZpbGluZygpO1xuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IG5ldyBQcm9taXNlPHN0cmluZz4oKGFjY2VwdCwgcmVqZWN0KSA9PlxuICAgICAgICAgICAgcHJvZmlsZS5leHBvcnQoKGVycm9yLCByZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihcIk5vIHByb2ZpbGUgZXJyb3Igb3IgcmVzdWx0XCIpKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBhY2NlcHQocmVzdWx0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgKTtcblxuICAgICAgICBhd2FpdCBta2RpcihvdXRwdXREaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgICAgICBhd2FpdCB3cml0ZUZpbGUoYCR7b3V0cHV0RGlyfS90ZXN0LSR7bmV3IERhdGUoKS50b0lTT1N0cmluZygpLnNsaWNlKDAsIDE5KX0uY3B1cHJvZmlsZWAsIHJlc3VsdCk7XG5cbiAgICAgICAgdGhpcy4jcHJvZmlsZXIgPSB1bmRlZmluZWQ7XG4gICAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQU1BLFNBQVMsT0FBTyxpQkFBaUI7QUFDakMsT0FBTyxXQUFXO0FBQ2xCLFNBQVMsZ0JBQWdCO0FBQ3pCLFNBQVMsZUFBZSxvQkFBb0I7QUFDNUMsU0FBUyxtQkFBbUI7QUFJNUIsU0FBUyxxQkFBcUI7QUFDOUIsT0FBTztBQUVQLGVBQXNCLFNBQVMsUUFBb0IsUUFBdUI7QUFPdEUsVUFBUSxHQUFHLHNCQUFzQixPQUFLO0FBQ2xDLFFBQUksUUFBUSxjQUFjLG9CQUFvQixNQUFNLEdBQUc7QUFDbkQsWUFBTSxRQUFRLElBQUksTUFBTSx3Q0FBd0M7QUFDaEUsWUFBTSxRQUFRO0FBQ2QsYUFBTyxTQUFTLFFBQVEsY0FBYyxLQUFLLENBQUM7QUFBQSxJQUNoRDtBQUFBLEVBQ0osQ0FBQztBQUVELFFBQU0sUUFBUSxJQUFJLE1BQU07QUFBQSxJQUNwQixhQUFhO0FBQUEsSUFDYixVQUFVLGNBQWMsT0FBTyxPQUFPLFlBQVksR0FBRyxPQUFPLFFBQVE7QUFBQSxFQUN4RSxDQUFDO0FBRUQsZUFBYSxLQUFLO0FBRWxCLGNBQVksTUFBTSxPQUFPLE9BQU8sT0FBTztBQUV2QyxRQUFNLFFBQVEsT0FBTyxVQUFVLE1BQU07QUFDckMsUUFBTSxRQUFRLFVBQVE7QUFDbEIsV0FBTyxTQUFTLFFBQVEsSUFBSSxHQUFHLElBQUk7QUFDbkMsUUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLO0FBQ2pCLGFBQU8sS0FBSyxJQUFJO0FBQUEsSUFDcEI7QUFDQSxVQUFNLFFBQVEsSUFBSTtBQUFBLEVBQ3RCLENBQUM7QUFFRCxRQUFNLE1BQU0sZUFBZTtBQUUzQixRQUFNLFdBQVcsSUFBSSxTQUFTO0FBQzlCLE1BQUksT0FBTyxRQUFRLFNBQVM7QUFDeEIsVUFBTSxTQUFTLE1BQU07QUFBQSxFQUN6QjtBQUVBLFFBQU0sSUFBSSxRQUFzQixhQUFXO0FBQ3ZDLFVBQU1BLFVBQVMsTUFBTSxJQUFJLE1BQU0sUUFBUUEsT0FBTSxDQUFDO0FBQUEsRUFDbEQsQ0FBQztBQUVELE1BQUksT0FBTyxRQUFRLFNBQVM7QUFDeEIsVUFBTSxTQUFTLEtBQUssT0FBTyxJQUFJLFFBQVEsZ0JBQWdCLENBQUM7QUFBQSxFQUM1RDtBQUNKO0FBZ0JBLE1BQU0sU0FBUztBQUFBLEVBQ1g7QUFBQSxFQUVBLE1BQU0sUUFBUTtBQUNWLFNBQUssYUFBYSxNQUFNLE9BQU8sa0JBQXVCLEdBQUc7QUFDekQsU0FBSyxVQUFVLGdCQUFnQixDQUFDO0FBQ2hDLFNBQUssVUFBVSxlQUFlO0FBQUEsRUFDbEM7QUFBQSxFQUVBLE1BQU0sS0FBSyxXQUFtQjtBQUMxQixRQUFJLENBQUMsS0FBSyxXQUFXO0FBQ2pCO0FBQUEsSUFDSjtBQUVBLFVBQU0sVUFBVSxLQUFLLFVBQVUsY0FBYztBQUU3QyxVQUFNLFNBQVMsTUFBTSxJQUFJO0FBQUEsTUFBZ0IsQ0FBQyxRQUFRLFdBQzlDLFFBQVEsT0FBTyxDQUFDLE9BQU9DLFlBQVc7QUFDOUIsWUFBSSxPQUFPO0FBQ1AsaUJBQU8sS0FBSztBQUFBLFFBQ2hCLFdBQVcsQ0FBQ0EsU0FBUTtBQUNoQixpQkFBTyxJQUFJLE1BQU0sNEJBQTRCLENBQUM7QUFBQSxRQUNsRCxPQUFPO0FBQ0gsaUJBQU9BLE9BQU07QUFBQSxRQUNqQjtBQUFBLE1BQ0osQ0FBQztBQUFBLElBQ0w7QUFFQSxVQUFNLE1BQU0sV0FBVyxFQUFFLFdBQVcsS0FBSyxDQUFDO0FBQzFDLFVBQU0sVUFBVSxHQUFHLFNBQVMsVUFBUyxvQkFBSSxLQUFLLEdBQUUsWUFBWSxFQUFFLE1BQU0sR0FBRyxFQUFFLENBQUMsZUFBZSxNQUFNO0FBRS9GLFNBQUssWUFBWTtBQUFBLEVBQ3JCO0FBQ0o7IiwKICAibmFtZXMiOiBbInJ1bm5lciIsICJyZXN1bHQiXQp9Cg==
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/testing/node.ts"],
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,OAAO,iBAAiB;AACjC,OAAO,WAAW;AAClB,SAAS,gBAAgB;AACzB,SAAS,eAAe,oBAAoB;AAC5C,SAAS,mBAAmB;AAI5B,SAAS,qBAAqB;AAC9B,OAAO;AAEP,eAAsB,SAAS,QAAoB,QAAuB;AAOtE,UAAQ,GAAG,sBAAsB,OAAK;AAClC,QAAI,QAAQ,cAAc,oBAAoB,MAAM,GAAG;AACnD,YAAM,QAAQ,IAAI,MAAM,wCAAwC;AAChE,YAAM,QAAQ;AACd,aAAO,SAAS,QAAQ,cAAc,KAAK,CAAC;AAAA,IAChD;AAAA,EACJ,CAAC;AAED,QAAM,QAAQ,IAAI,MAAM;AAAA,IACpB,aAAa;AAAA,IACb,UAAU,cAAc,OAAO,OAAO,YAAY,GAAG,OAAO,QAAQ;AAAA,EACxE,CAAC;AAED,eAAa,KAAK;AAElB,cAAY,MAAM,OAAO,OAAO,OAAO;AAEvC,QAAM,QAAQ,OAAO,UAAU,MAAM;AACrC,QAAM,QAAQ,UAAQ;AAClB,WAAO,SAAS,QAAQ,IAAI,GAAG,IAAI;AACnC,QAAI,KAAK,CAAC,MAAM,KAAK;AACjB,aAAO,KAAK,IAAI;AAAA,IACpB;AACA,UAAM,QAAQ,IAAI;AAAA,EACtB,CAAC;AAED,QAAM,MAAM,eAAe;AAE3B,QAAM,WAAW,IAAI,SAAS;AAC9B,MAAI,OAAO,QAAQ,SAAS;AACxB,UAAM,SAAS,MAAM;AAAA,EACzB;AAEA,QAAM,IAAI,QAAsB,aAAW;AACvC,UAAMA,UAAS,MAAM,IAAI,MAAM,QAAQA,OAAM,CAAC;AAAA,EAClD,CAAC;AAED,MAAI,OAAO,QAAQ,SAAS;AACxB,UAAM,SAAS,KAAK,OAAO,IAAI,QAAQ,gBAAgB,CAAC;AAAA,EAC5D;AACJ;AAgBA,MAAM,SAAS;AAAA,EACX;AAAA,EAEA,MAAM,QAAQ;AACV,SAAK,aAAa,MAAM,OAAO,kBAAuB,GAAG;AACzD,SAAK,UAAU,gBAAgB,CAAC;AAChC,SAAK,UAAU,eAAe;AAAA,EAClC;AAAA,EAEA,MAAM,KAAK,WAAmB;AAC1B,QAAI,CAAC,KAAK,WAAW;AACjB;AAAA,IACJ;AAEA,UAAM,UAAU,KAAK,UAAU,cAAc;AAE7C,UAAM,SAAS,MAAM,IAAI;AAAA,MAAgB,CAAC,QAAQ,WAC9C,QAAQ,OAAO,CAAC,OAAOC,YAAW;AAC9B,YAAI,OAAO;AACP,iBAAO,KAAK;AAAA,QAChB,WAAW,CAACA,SAAQ;AAChB,iBAAO,IAAI,MAAM,4BAA4B,CAAC;AAAA,QAClD,OAAO;AACH,iBAAOA,OAAM;AAAA,QACjB;AAAA,MACJ,CAAC;AAAA,IACL;AAEA,UAAM,MAAM,WAAW,EAAE,WAAW,KAAK,CAAC;AAC1C,UAAM,UAAU,GAAG,SAAS,UAAS,oBAAI,KAAK,GAAE,YAAY,EAAE,MAAM,GAAG,EAAE,CAAC,eAAe,MAAM;AAE/F,SAAK,YAAY;AAAA,EACrB;AACJ;",
5
+ "names": ["runner", "result"]
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 type TestOptions = {
7
+ spec?: string | string[];
8
+ profile?: boolean;
9
+ grep?: string;
10
+ fgrep?: string;
11
+ invert?: boolean;
12
+ allLogs?: boolean;
13
+ wtf?: boolean;
14
+ debug?: boolean;
15
+ };
16
+ export declare namespace TestOptions {
17
+ function apply(mocha: Mocha, options: TestOptions): void;
18
+ }
19
+ //# sourceMappingURL=options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../src/testing/options.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,MAAM,WAAW,GAAG;IACtB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAqBF,yBAAiB,WAAW,CAAC;IACzB,SAAgB,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,QAmBvD;CACJ"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ function option(options, name) {
7
+ if (options[name] !== void 0 && options[name] !== null) {
8
+ return options[name];
9
+ }
10
+ if (typeof process === "undefined") {
11
+ return;
12
+ }
13
+ return process.env?.["MATTER_" + name.match(/(.[^A-Z]+)/g)?.map((s) => s.toUpperCase()).join("_")];
14
+ }
15
+ var TestOptions;
16
+ ((TestOptions2) => {
17
+ function apply(mocha, options) {
18
+ const grep = option(options, "grep");
19
+ if (grep) {
20
+ mocha.grep(grep);
21
+ }
22
+ const fgrep = option(options, "fgrep");
23
+ if (fgrep) {
24
+ mocha.fgrep(fgrep);
25
+ }
26
+ const invert = option(options, "invert");
27
+ if (invert) {
28
+ mocha.invert();
29
+ }
30
+ const allLogs = option(options, "allLogs");
31
+ if (allLogs) {
32
+ if (typeof MockLogger !== "undefined") {
33
+ MockLogger.emitAll = true;
34
+ }
35
+ }
36
+ }
37
+ TestOptions2.apply = apply;
38
+ })(TestOptions || (TestOptions = {}));
39
+ export {
40
+ TestOptions
41
+ };
42
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3Rlc3Rpbmcvb3B0aW9ucy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IDIwMjItMjAyNCBNYXR0ZXIuanMgQXV0aG9yc1xuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcbiAqL1xuXG5leHBvcnQgdHlwZSBUZXN0T3B0aW9ucyA9IHtcbiAgICBzcGVjPzogc3RyaW5nIHwgc3RyaW5nW107XG4gICAgcHJvZmlsZT86IGJvb2xlYW47XG4gICAgZ3JlcD86IHN0cmluZztcbiAgICBmZ3JlcD86IHN0cmluZztcbiAgICBpbnZlcnQ/OiBib29sZWFuO1xuICAgIGFsbExvZ3M/OiBib29sZWFuO1xuICAgIHd0Zj86IGJvb2xlYW47XG4gICAgZGVidWc/OiBib29sZWFuO1xufTtcblxuZnVuY3Rpb24gb3B0aW9uPFQgZXh0ZW5kcyBrZXlvZiBUZXN0T3B0aW9ucz4ob3B0aW9uczogVGVzdE9wdGlvbnMsIG5hbWU6IFQpIHtcbiAgICBpZiAob3B0aW9uc1tuYW1lXSAhPT0gdW5kZWZpbmVkICYmIG9wdGlvbnNbbmFtZV0gIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIG9wdGlvbnNbbmFtZV07XG4gICAgfVxuXG4gICAgLy8gU3VwcG9ydCBib3RoIG5vZGUgYW5kIGJyb3dzZXJcbiAgICBpZiAodHlwZW9mIHByb2Nlc3MgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHJldHVybiBwcm9jZXNzLmVudj8uW1xuICAgICAgICBcIk1BVFRFUl9cIiArXG4gICAgICAgICAgICBuYW1lXG4gICAgICAgICAgICAgICAgLm1hdGNoKC8oLlteQS1aXSspL2cpXG4gICAgICAgICAgICAgICAgPy5tYXAocyA9PiBzLnRvVXBwZXJDYXNlKCkpXG4gICAgICAgICAgICAgICAgLmpvaW4oXCJfXCIpXG4gICAgXTtcbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBUZXN0T3B0aW9ucyB7XG4gICAgZXhwb3J0IGZ1bmN0aW9uIGFwcGx5KG1vY2hhOiBNb2NoYSwgb3B0aW9uczogVGVzdE9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgZ3JlcCA9IG9wdGlvbihvcHRpb25zLCBcImdyZXBcIik7XG4gICAgICAgIGlmIChncmVwKSB7XG4gICAgICAgICAgICBtb2NoYS5ncmVwKGdyZXApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZncmVwID0gb3B0aW9uKG9wdGlvbnMsIFwiZmdyZXBcIik7XG4gICAgICAgIGlmIChmZ3JlcCkge1xuICAgICAgICAgICAgbW9jaGEuZmdyZXAoZmdyZXApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGludmVydCA9IG9wdGlvbihvcHRpb25zLCBcImludmVydFwiKTtcbiAgICAgICAgaWYgKGludmVydCkge1xuICAgICAgICAgICAgbW9jaGEuaW52ZXJ0KCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYWxsTG9ncyA9IG9wdGlvbihvcHRpb25zLCBcImFsbExvZ3NcIik7XG4gICAgICAgIGlmIChhbGxMb2dzKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIE1vY2tMb2dnZXIgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgICAgICBNb2NrTG9nZ2VyLmVtaXRBbGwgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWlCQSxTQUFTLE9BQW9DLFNBQXNCLE1BQVM7QUFDeEUsTUFBSSxRQUFRLElBQUksTUFBTSxVQUFhLFFBQVEsSUFBSSxNQUFNLE1BQU07QUFDdkQsV0FBTyxRQUFRLElBQUk7QUFBQSxFQUN2QjtBQUdBLE1BQUksT0FBTyxZQUFZLGFBQWE7QUFDaEM7QUFBQSxFQUNKO0FBRUEsU0FBTyxRQUFRLE1BQ1gsWUFDSSxLQUNLLE1BQU0sYUFBYSxHQUNsQixJQUFJLE9BQUssRUFBRSxZQUFZLENBQUMsRUFDekIsS0FBSyxHQUFHLENBQ3JCO0FBQ0o7QUFFTyxJQUFVO0FBQUEsQ0FBVixDQUFVQSxpQkFBVjtBQUNJLFdBQVMsTUFBTSxPQUFjLFNBQXNCO0FBQ3RELFVBQU0sT0FBTyxPQUFPLFNBQVMsTUFBTTtBQUNuQyxRQUFJLE1BQU07QUFDTixZQUFNLEtBQUssSUFBSTtBQUFBLElBQ25CO0FBQ0EsVUFBTSxRQUFRLE9BQU8sU0FBUyxPQUFPO0FBQ3JDLFFBQUksT0FBTztBQUNQLFlBQU0sTUFBTSxLQUFLO0FBQUEsSUFDckI7QUFDQSxVQUFNLFNBQVMsT0FBTyxTQUFTLFFBQVE7QUFDdkMsUUFBSSxRQUFRO0FBQ1IsWUFBTSxPQUFPO0FBQUEsSUFDakI7QUFDQSxVQUFNLFVBQVUsT0FBTyxTQUFTLFNBQVM7QUFDekMsUUFBSSxTQUFTO0FBQ1QsVUFBSSxPQUFPLGVBQWUsYUFBYTtBQUNuQyxtQkFBVyxVQUFVO0FBQUEsTUFDekI7QUFBQSxJQUNKO0FBQUEsRUFDSjtBQW5CTyxFQUFBQSxhQUFTO0FBQUEsR0FESDsiLAogICJuYW1lcyI6IFsiVGVzdE9wdGlvbnMiXQp9Cg==
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/testing/options.ts"],
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAiBA,SAAS,OAAoC,SAAsB,MAAS;AACxE,MAAI,QAAQ,IAAI,MAAM,UAAa,QAAQ,IAAI,MAAM,MAAM;AACvD,WAAO,QAAQ,IAAI;AAAA,EACvB;AAGA,MAAI,OAAO,YAAY,aAAa;AAChC;AAAA,EACJ;AAEA,SAAO,QAAQ,MACX,YACI,KACK,MAAM,aAAa,GAClB,IAAI,OAAK,EAAE,YAAY,CAAC,EACzB,KAAK,GAAG,CACrB;AACJ;AAEO,IAAU;AAAA,CAAV,CAAUA,iBAAV;AACI,WAAS,MAAM,OAAc,SAAsB;AACtD,UAAM,OAAO,OAAO,SAAS,MAAM;AACnC,QAAI,MAAM;AACN,YAAM,KAAK,IAAI;AAAA,IACnB;AACA,UAAM,QAAQ,OAAO,SAAS,OAAO;AACrC,QAAI,OAAO;AACP,YAAM,MAAM,KAAK;AAAA,IACrB;AACA,UAAM,SAAS,OAAO,SAAS,QAAQ;AACvC,QAAI,QAAQ;AACR,YAAM,OAAO;AAAA,IACjB;AACA,UAAM,UAAU,OAAO,SAAS,SAAS;AACzC,QAAI,SAAS;AACT,UAAI,OAAO,eAAe,aAAa;AACnC,mBAAW,UAAU;AAAA,MACzB;AAAA,IACJ;AAAA,EACJ;AAnBO,EAAAA,aAAS;AAAA,GADH;",
5
+ "names": ["TestOptions"]
6
+ }