@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.
- package/LICENSE +201 -0
- package/README.md +100 -0
- package/bin/build.js +10 -0
- package/bin/prepare-chip.js +5 -0
- package/bin/run.js +7 -0
- package/bin/test.js +7 -0
- package/bin/version.js +7 -0
- package/chip/Dockerfile +23 -0
- package/dist/cjs/building/builder.d.ts +35 -0
- package/dist/cjs/building/builder.d.ts.map +1 -0
- package/dist/cjs/building/builder.js +210 -0
- package/dist/cjs/building/builder.js.map +6 -0
- package/dist/cjs/building/cli.d.ts +7 -0
- package/dist/cjs/building/cli.d.ts.map +1 -0
- package/dist/cjs/building/cli.js +100 -0
- package/dist/cjs/building/cli.js.map +6 -0
- package/dist/cjs/building/error.d.ts +16 -0
- package/dist/cjs/building/error.d.ts.map +1 -0
- package/dist/cjs/building/error.js +50 -0
- package/dist/cjs/building/error.js.map +6 -0
- package/dist/cjs/building/graph.d.ts +37 -0
- package/dist/cjs/building/graph.d.ts.map +1 -0
- package/dist/cjs/building/graph.js +222 -0
- package/dist/cjs/building/graph.js.map +6 -0
- package/dist/cjs/building/project.d.ts +56 -0
- package/dist/cjs/building/project.d.ts.map +1 -0
- package/dist/cjs/building/project.js +239 -0
- package/dist/cjs/building/project.js.map +6 -0
- package/dist/cjs/building/tsconfig.d.ts +16 -0
- package/dist/cjs/building/tsconfig.d.ts.map +1 -0
- package/dist/cjs/building/tsconfig.js +70 -0
- package/dist/cjs/building/tsconfig.js.map +6 -0
- package/dist/cjs/building/typescript/context.d.ts +16 -0
- package/dist/cjs/building/typescript/context.d.ts.map +1 -0
- package/dist/cjs/building/typescript/context.js +82 -0
- package/dist/cjs/building/typescript/context.js.map +6 -0
- package/dist/cjs/building/typescript/incremental-compiler.d.ts +10 -0
- package/dist/cjs/building/typescript/incremental-compiler.d.ts.map +1 -0
- package/dist/cjs/building/typescript/incremental-compiler.js +119 -0
- package/dist/cjs/building/typescript/incremental-compiler.js.map +6 -0
- package/dist/cjs/building/typescript/language-service.d.ts +13 -0
- package/dist/cjs/building/typescript/language-service.d.ts.map +1 -0
- package/dist/cjs/building/typescript/language-service.js +109 -0
- package/dist/cjs/building/typescript/language-service.js.map +6 -0
- package/dist/cjs/building/typescript/solution-builder.d.ts +10 -0
- package/dist/cjs/building/typescript/solution-builder.d.ts.map +1 -0
- package/dist/cjs/building/typescript/solution-builder.js +72 -0
- package/dist/cjs/building/typescript/solution-builder.js.map +6 -0
- package/dist/cjs/building/typescript.d.ts +13 -0
- package/dist/cjs/building/typescript.d.ts.map +1 -0
- package/dist/cjs/building/typescript.js +31 -0
- package/dist/cjs/building/typescript.js.map +6 -0
- package/dist/cjs/index.d.ts +15 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +32 -0
- package/dist/cjs/index.js.map +6 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/running/cli.d.ts +19 -0
- package/dist/cjs/running/cli.d.ts.map +1 -0
- package/dist/cjs/running/cli.js +82 -0
- package/dist/cjs/running/cli.js.map +6 -0
- package/dist/cjs/running/execute.d.ts +8 -0
- package/dist/cjs/running/execute.d.ts.map +1 -0
- package/dist/cjs/running/execute.js +82 -0
- package/dist/cjs/running/execute.js.map +6 -0
- package/dist/cjs/testing/chip/pics-file.d.ts +20 -0
- package/dist/cjs/testing/chip/pics-file.d.ts.map +1 -0
- package/dist/cjs/testing/chip/pics-file.js +79 -0
- package/dist/cjs/testing/chip/pics-file.js.map +6 -0
- package/dist/cjs/testing/chip.d.ts +60 -0
- package/dist/cjs/testing/chip.d.ts.map +1 -0
- package/dist/cjs/testing/chip.js +306 -0
- package/dist/cjs/testing/chip.js.map +6 -0
- package/dist/cjs/testing/cli.d.ts +9 -0
- package/dist/cjs/testing/cli.d.ts.map +1 -0
- package/dist/cjs/testing/cli.js +117 -0
- package/dist/cjs/testing/cli.js.map +6 -0
- package/dist/cjs/testing/failure-detail.d.ts +19 -0
- package/dist/cjs/testing/failure-detail.d.ts.map +1 -0
- package/dist/cjs/testing/failure-detail.js +143 -0
- package/dist/cjs/testing/failure-detail.js.map +6 -0
- package/dist/cjs/testing/files.d.ts +8 -0
- package/dist/cjs/testing/files.d.ts.map +1 -0
- package/dist/cjs/testing/files.js +52 -0
- package/dist/cjs/testing/files.js.map +6 -0
- package/dist/cjs/testing/global-declarations.d.ts +38 -0
- package/dist/cjs/testing/global-declarations.d.ts.map +1 -0
- package/dist/cjs/testing/global-declarations.js +8 -0
- package/dist/cjs/testing/global-declarations.js.map +6 -0
- package/dist/cjs/testing/global-definitions.d.ts +7 -0
- package/dist/cjs/testing/global-definitions.d.ts.map +1 -0
- package/dist/cjs/testing/global-definitions.js +50 -0
- package/dist/cjs/testing/global-definitions.js.map +6 -0
- package/dist/cjs/testing/mocha.d.ts +36 -0
- package/dist/cjs/testing/mocha.d.ts.map +1 -0
- package/dist/cjs/testing/mocha.js +155 -0
- package/dist/cjs/testing/mocha.js.map +6 -0
- package/dist/cjs/testing/mocharc.cjs +68 -0
- package/dist/cjs/testing/mocharc.d.cts +7 -0
- package/dist/cjs/testing/mocks/crypto.d.ts +7 -0
- package/dist/cjs/testing/mocks/crypto.d.ts.map +1 -0
- package/dist/cjs/testing/mocks/crypto.js +79 -0
- package/dist/cjs/testing/mocks/crypto.js.map +6 -0
- package/dist/cjs/testing/mocks/environment.d.ts +7 -0
- package/dist/cjs/testing/mocks/environment.d.ts.map +1 -0
- package/dist/cjs/testing/mocks/environment.js +7 -0
- package/dist/cjs/testing/mocks/environment.js.map +6 -0
- package/dist/cjs/testing/mocks/index.d.ts +10 -0
- package/dist/cjs/testing/mocks/index.d.ts.map +1 -0
- package/dist/cjs/testing/mocks/index.js +27 -0
- package/dist/cjs/testing/mocks/index.js.map +6 -0
- package/dist/cjs/testing/mocks/logging.d.ts +28 -0
- package/dist/cjs/testing/mocks/logging.d.ts.map +1 -0
- package/dist/cjs/testing/mocks/logging.js +93 -0
- package/dist/cjs/testing/mocks/logging.js.map +6 -0
- package/dist/cjs/testing/mocks/time.d.ts +88 -0
- package/dist/cjs/testing/mocks/time.d.ts.map +1 -0
- package/dist/cjs/testing/mocks/time.js +250 -0
- package/dist/cjs/testing/mocks/time.js.map +6 -0
- package/dist/cjs/testing/node.d.ts +16 -0
- package/dist/cjs/testing/node.d.ts.map +1 -0
- package/dist/cjs/testing/node.js +108 -0
- package/dist/cjs/testing/node.js.map +6 -0
- package/dist/cjs/testing/options.d.ts +19 -0
- package/dist/cjs/testing/options.d.ts.map +1 -0
- package/dist/cjs/testing/options.js +62 -0
- package/dist/cjs/testing/options.js.map +6 -0
- package/dist/cjs/testing/reporter.d.ts +50 -0
- package/dist/cjs/testing/reporter.d.ts.map +1 -0
- package/dist/cjs/testing/reporter.js +137 -0
- package/dist/cjs/testing/reporter.js.map +6 -0
- package/dist/cjs/testing/runner.d.ts +22 -0
- package/dist/cjs/testing/runner.d.ts.map +1 -0
- package/dist/cjs/testing/runner.js +116 -0
- package/dist/cjs/testing/runner.js.map +6 -0
- package/dist/cjs/testing/web.d.ts +8 -0
- package/dist/cjs/testing/web.d.ts.map +1 -0
- package/dist/cjs/testing/web.js +165 -0
- package/dist/cjs/testing/web.js.map +6 -0
- package/dist/cjs/util/bootstrap.mjs +105 -0
- package/dist/cjs/util/docker.d.ts +27 -0
- package/dist/cjs/util/docker.d.ts.map +1 -0
- package/dist/cjs/util/docker.js +163 -0
- package/dist/cjs/util/docker.js.map +6 -0
- package/dist/cjs/util/errors.d.ts +8 -0
- package/dist/cjs/util/errors.d.ts.map +1 -0
- package/dist/cjs/util/errors.js +55 -0
- package/dist/cjs/util/errors.js.map +6 -0
- package/dist/cjs/util/index.d.ts +8 -0
- package/dist/cjs/util/index.d.ts.map +1 -0
- package/dist/cjs/util/index.js +25 -0
- package/dist/cjs/util/index.js.map +6 -0
- package/dist/cjs/util/node-shims.d.ts +7 -0
- package/dist/cjs/util/node-shims.d.ts.map +1 -0
- package/dist/cjs/util/node-shims.js +12 -0
- package/dist/cjs/util/node-shims.js.map +6 -0
- package/dist/cjs/util/package.d.ts +61 -0
- package/dist/cjs/util/package.d.ts.map +1 -0
- package/dist/cjs/util/package.js +324 -0
- package/dist/cjs/util/package.js.map +6 -0
- package/dist/cjs/util/progress.d.ts +31 -0
- package/dist/cjs/util/progress.d.ts.map +1 -0
- package/dist/cjs/util/progress.js +232 -0
- package/dist/cjs/util/progress.js.map +6 -0
- package/dist/cjs/util/tools-path.cjs +13 -0
- package/dist/cjs/util/tools-path.d.cts +7 -0
- package/dist/cjs/util/trace-unhandled.d.ts +9 -0
- package/dist/cjs/util/trace-unhandled.d.ts.map +1 -0
- package/dist/cjs/util/trace-unhandled.js +48 -0
- package/dist/cjs/util/trace-unhandled.js.map +6 -0
- package/dist/cjs/util/wtf.d.ts +10 -0
- package/dist/cjs/util/wtf.d.ts.map +1 -0
- package/dist/cjs/util/wtf.js +53 -0
- package/dist/cjs/util/wtf.js.map +6 -0
- package/dist/cjs/versioning/cli.d.ts +7 -0
- package/dist/cjs/versioning/cli.d.ts.map +1 -0
- package/dist/cjs/versioning/cli.js +62 -0
- package/dist/cjs/versioning/cli.js.map +6 -0
- package/dist/cjs/versioning/versioner.d.ts +18 -0
- package/dist/cjs/versioning/versioner.d.ts.map +1 -0
- package/dist/cjs/versioning/versioner.js +145 -0
- package/dist/cjs/versioning/versioner.js.map +6 -0
- package/dist/esm/building/builder.d.ts +35 -0
- package/dist/esm/building/builder.d.ts.map +1 -0
- package/dist/esm/building/builder.js +180 -0
- package/dist/esm/building/builder.js.map +6 -0
- package/dist/esm/building/cli.d.ts +7 -0
- package/dist/esm/building/cli.d.ts.map +1 -0
- package/dist/esm/building/cli.js +70 -0
- package/dist/esm/building/cli.js.map +6 -0
- package/dist/esm/building/error.d.ts +16 -0
- package/dist/esm/building/error.d.ts.map +1 -0
- package/dist/esm/building/error.js +30 -0
- package/dist/esm/building/error.js.map +6 -0
- package/dist/esm/building/graph.d.ts +37 -0
- package/dist/esm/building/graph.d.ts.map +1 -0
- package/dist/esm/building/graph.js +192 -0
- package/dist/esm/building/graph.js.map +6 -0
- package/dist/esm/building/project.d.ts +56 -0
- package/dist/esm/building/project.d.ts.map +1 -0
- package/dist/esm/building/project.js +219 -0
- package/dist/esm/building/project.js.map +6 -0
- package/dist/esm/building/tsconfig.d.ts +16 -0
- package/dist/esm/building/tsconfig.d.ts.map +1 -0
- package/dist/esm/building/tsconfig.js +50 -0
- package/dist/esm/building/tsconfig.js.map +6 -0
- package/dist/esm/building/typescript/context.d.ts +16 -0
- package/dist/esm/building/typescript/context.d.ts.map +1 -0
- package/dist/esm/building/typescript/context.js +68 -0
- package/dist/esm/building/typescript/context.js.map +6 -0
- package/dist/esm/building/typescript/incremental-compiler.d.ts +10 -0
- package/dist/esm/building/typescript/incremental-compiler.d.ts.map +1 -0
- package/dist/esm/building/typescript/incremental-compiler.js +99 -0
- package/dist/esm/building/typescript/incremental-compiler.js.map +6 -0
- package/dist/esm/building/typescript/language-service.d.ts +13 -0
- package/dist/esm/building/typescript/language-service.d.ts.map +1 -0
- package/dist/esm/building/typescript/language-service.js +99 -0
- package/dist/esm/building/typescript/language-service.js.map +6 -0
- package/dist/esm/building/typescript/solution-builder.d.ts +10 -0
- package/dist/esm/building/typescript/solution-builder.d.ts.map +1 -0
- package/dist/esm/building/typescript/solution-builder.js +52 -0
- package/dist/esm/building/typescript/solution-builder.js.map +6 -0
- package/dist/esm/building/typescript.d.ts +13 -0
- package/dist/esm/building/typescript.d.ts.map +1 -0
- package/dist/esm/building/typescript.js +11 -0
- package/dist/esm/building/typescript.js.map +6 -0
- package/dist/esm/index.d.ts +15 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +15 -0
- package/dist/esm/index.js.map +6 -0
- package/dist/esm/package.json +3 -0
- package/dist/esm/running/cli.d.ts +19 -0
- package/dist/esm/running/cli.d.ts.map +1 -0
- package/dist/esm/running/cli.js +62 -0
- package/dist/esm/running/cli.js.map +6 -0
- package/dist/esm/running/execute.d.ts +8 -0
- package/dist/esm/running/execute.d.ts.map +1 -0
- package/dist/esm/running/execute.js +52 -0
- package/dist/esm/running/execute.js.map +6 -0
- package/dist/esm/testing/chip/pics-file.d.ts +20 -0
- package/dist/esm/testing/chip/pics-file.d.ts.map +1 -0
- package/dist/esm/testing/chip/pics-file.js +59 -0
- package/dist/esm/testing/chip/pics-file.js.map +6 -0
- package/dist/esm/testing/chip.d.ts +60 -0
- package/dist/esm/testing/chip.d.ts.map +1 -0
- package/dist/esm/testing/chip.js +286 -0
- package/dist/esm/testing/chip.js.map +6 -0
- package/dist/esm/testing/cli.d.ts +9 -0
- package/dist/esm/testing/cli.d.ts.map +1 -0
- package/dist/esm/testing/cli.js +87 -0
- package/dist/esm/testing/cli.js.map +6 -0
- package/dist/esm/testing/failure-detail.d.ts +19 -0
- package/dist/esm/testing/failure-detail.d.ts.map +1 -0
- package/dist/esm/testing/failure-detail.js +113 -0
- package/dist/esm/testing/failure-detail.js.map +6 -0
- package/dist/esm/testing/files.d.ts +8 -0
- package/dist/esm/testing/files.d.ts.map +1 -0
- package/dist/esm/testing/files.js +32 -0
- package/dist/esm/testing/files.js.map +6 -0
- package/dist/esm/testing/global-declarations.d.ts +38 -0
- package/dist/esm/testing/global-declarations.d.ts.map +1 -0
- package/dist/esm/testing/global-declarations.js +7 -0
- package/dist/esm/testing/global-declarations.js.map +6 -0
- package/dist/esm/testing/global-definitions.d.ts +7 -0
- package/dist/esm/testing/global-definitions.d.ts.map +1 -0
- package/dist/esm/testing/global-definitions.js +27 -0
- package/dist/esm/testing/global-definitions.js.map +6 -0
- package/dist/esm/testing/mocha.d.ts +36 -0
- package/dist/esm/testing/mocha.d.ts.map +1 -0
- package/dist/esm/testing/mocha.js +135 -0
- package/dist/esm/testing/mocha.js.map +6 -0
- package/dist/esm/testing/mocharc.cjs +68 -0
- package/dist/esm/testing/mocharc.d.cts +7 -0
- package/dist/esm/testing/mocks/crypto.d.ts +7 -0
- package/dist/esm/testing/mocks/crypto.d.ts.map +1 -0
- package/dist/esm/testing/mocks/crypto.js +59 -0
- package/dist/esm/testing/mocks/crypto.js.map +6 -0
- package/dist/esm/testing/mocks/environment.d.ts +7 -0
- package/dist/esm/testing/mocks/environment.d.ts.map +1 -0
- package/dist/esm/testing/mocks/environment.js +6 -0
- package/dist/esm/testing/mocks/environment.js.map +6 -0
- package/dist/esm/testing/mocks/index.d.ts +10 -0
- package/dist/esm/testing/mocks/index.d.ts.map +1 -0
- package/dist/esm/testing/mocks/index.js +10 -0
- package/dist/esm/testing/mocks/index.js.map +6 -0
- package/dist/esm/testing/mocks/logging.d.ts +28 -0
- package/dist/esm/testing/mocks/logging.d.ts.map +1 -0
- package/dist/esm/testing/mocks/logging.js +63 -0
- package/dist/esm/testing/mocks/logging.js.map +6 -0
- package/dist/esm/testing/mocks/time.d.ts +88 -0
- package/dist/esm/testing/mocks/time.d.ts.map +1 -0
- package/dist/esm/testing/mocks/time.js +230 -0
- package/dist/esm/testing/mocks/time.js.map +6 -0
- package/dist/esm/testing/node.d.ts +16 -0
- package/dist/esm/testing/node.d.ts.map +1 -0
- package/dist/esm/testing/node.js +78 -0
- package/dist/esm/testing/node.js.map +6 -0
- package/dist/esm/testing/options.d.ts +19 -0
- package/dist/esm/testing/options.d.ts.map +1 -0
- package/dist/esm/testing/options.js +42 -0
- package/dist/esm/testing/options.js.map +6 -0
- package/dist/esm/testing/reporter.d.ts +50 -0
- package/dist/esm/testing/reporter.d.ts.map +1 -0
- package/dist/esm/testing/reporter.js +107 -0
- package/dist/esm/testing/reporter.js.map +6 -0
- package/dist/esm/testing/runner.d.ts +22 -0
- package/dist/esm/testing/runner.d.ts.map +1 -0
- package/dist/esm/testing/runner.js +86 -0
- package/dist/esm/testing/runner.js.map +6 -0
- package/dist/esm/testing/web.d.ts +8 -0
- package/dist/esm/testing/web.d.ts.map +1 -0
- package/dist/esm/testing/web.js +135 -0
- package/dist/esm/testing/web.js.map +6 -0
- package/dist/esm/util/bootstrap.mjs +105 -0
- package/dist/esm/util/docker.d.ts +27 -0
- package/dist/esm/util/docker.d.ts.map +1 -0
- package/dist/esm/util/docker.js +133 -0
- package/dist/esm/util/docker.js.map +6 -0
- package/dist/esm/util/errors.d.ts +8 -0
- package/dist/esm/util/errors.d.ts.map +1 -0
- package/dist/esm/util/errors.js +35 -0
- package/dist/esm/util/errors.js.map +6 -0
- package/dist/esm/util/index.d.ts +8 -0
- package/dist/esm/util/index.d.ts.map +1 -0
- package/dist/esm/util/index.js +8 -0
- package/dist/esm/util/index.js.map +6 -0
- package/dist/esm/util/node-shims.d.ts +7 -0
- package/dist/esm/util/node-shims.d.ts.map +1 -0
- package/dist/esm/util/node-shims.js +11 -0
- package/dist/esm/util/node-shims.js.map +6 -0
- package/dist/esm/util/package.d.ts +61 -0
- package/dist/esm/util/package.d.ts.map +1 -0
- package/dist/esm/util/package.js +304 -0
- package/dist/esm/util/package.js.map +6 -0
- package/dist/esm/util/progress.d.ts +31 -0
- package/dist/esm/util/progress.d.ts.map +1 -0
- package/dist/esm/util/progress.js +202 -0
- package/dist/esm/util/progress.js.map +6 -0
- package/dist/esm/util/tools-path.cjs +13 -0
- package/dist/esm/util/tools-path.d.cts +7 -0
- package/dist/esm/util/trace-unhandled.d.ts +9 -0
- package/dist/esm/util/trace-unhandled.d.ts.map +1 -0
- package/dist/esm/util/trace-unhandled.js +18 -0
- package/dist/esm/util/trace-unhandled.js.map +6 -0
- package/dist/esm/util/wtf.d.ts +10 -0
- package/dist/esm/util/wtf.d.ts.map +1 -0
- package/dist/esm/util/wtf.js +23 -0
- package/dist/esm/util/wtf.js.map +6 -0
- package/dist/esm/versioning/cli.d.ts +7 -0
- package/dist/esm/versioning/cli.d.ts.map +1 -0
- package/dist/esm/versioning/cli.js +32 -0
- package/dist/esm/versioning/cli.js.map +6 -0
- package/dist/esm/versioning/versioner.d.ts +18 -0
- package/dist/esm/versioning/versioner.d.ts.map +1 -0
- package/dist/esm/versioning/versioner.js +115 -0
- package/dist/esm/versioning/versioner.js.map +6 -0
- package/package.json +82 -0
- package/src/building/builder.ts +216 -0
- package/src/building/cli.ts +89 -0
- package/src/building/error.ts +29 -0
- package/src/building/graph.ts +251 -0
- package/src/building/project.ts +313 -0
- package/src/building/tsconfig.ts +69 -0
- package/src/building/typescript/context.ts +85 -0
- package/src/building/typescript/incremental-compiler.ts +126 -0
- package/src/building/typescript/language-service.ts +132 -0
- package/src/building/typescript/solution-builder.ts +67 -0
- package/src/building/typescript.ts +15 -0
- package/src/index.ts +15 -0
- package/src/running/cli.ts +95 -0
- package/src/running/execute.ts +63 -0
- package/src/testing/chip/pics-file.ts +71 -0
- package/src/testing/chip/pics.properties +53 -0
- package/src/testing/chip.ts +420 -0
- package/src/testing/cli.ts +122 -0
- package/src/testing/failure-detail.ts +126 -0
- package/src/testing/files.ts +35 -0
- package/src/testing/global-declarations.ts +50 -0
- package/src/testing/global-definitions.ts +35 -0
- package/src/testing/index.html +16 -0
- package/src/testing/mocha.ts +162 -0
- package/src/testing/mocharc.cjs +68 -0
- package/src/testing/mocharc.d.cts +7 -0
- package/src/testing/mocks/crypto.ts +70 -0
- package/src/testing/mocks/environment.ts +7 -0
- package/src/testing/mocks/index.ts +10 -0
- package/src/testing/mocks/logging.ts +99 -0
- package/src/testing/mocks/time.ts +294 -0
- package/src/testing/node.ts +114 -0
- package/src/testing/options.ts +58 -0
- package/src/testing/reporter.ts +144 -0
- package/src/testing/runner.ts +98 -0
- package/src/testing/web.ts +174 -0
- package/src/tsconfig.json +14 -0
- package/src/util/bootstrap.mjs +105 -0
- package/src/util/docker.ts +176 -0
- package/src/util/errors.ts +33 -0
- package/src/util/index.ts +8 -0
- package/src/util/node-shims.ts +13 -0
- package/src/util/package.ts +369 -0
- package/src/util/progress.ts +252 -0
- package/src/util/tools-path.cjs +13 -0
- package/src/util/tools-path.d.cts +7 -0
- package/src/util/trace-unhandled.ts +17 -0
- package/src/util/wtf.ts +25 -0
- package/src/versioning/cli.ts +43 -0
- package/src/versioning/versioner.ts +139 -0
- package/test/testing/mocks/MockTimeTest.ts +113 -0
- package/test/tsconfig.json +15 -0
- package/tsc/tsconfig.app.json +7 -0
- package/tsc/tsconfig.base.json +41 -0
- package/tsc/tsconfig.lib.json +12 -0
- package/tsc/tsconfig.test.json +7 -0
- 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+IGNhbGxiYWNrVG9SZW1vdmUgPT09IGNhbGxiYWNrKTtcbiAgICAgICAgaWYgKGluZGV4ID09PSAtMSkgcmV0dXJuO1xuICAgICAgICBjYWxsYmFja3Muc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9LFxufTtcblxubGV0IHJlaW5zdGFsbFRpbWU6IHVuZGVmaW5lZCB8ICgoKSA9PiB2b2lkKTtcblxuZXhwb3J0IGZ1bmN0aW9uIHRpbWVTZXR1cChUaW1lOiB7IGdldCgpOiB1bmtub3duIH0pIHtcbiAgICByZWFsID0gVGltZS5nZXQoKTtcbiAgICByZWluc3RhbGxUaW1lID0gKCkgPT4gKFRpbWUuZ2V0ID0gKCkgPT4gTW9ja1RpbWUuYWN0aXZlSW1wbGVtZW50YXRpb24pO1xuICAgIHJlaW5zdGFsbFRpbWUoKTtcbn1cblxuT2JqZWN0LmFzc2lnbihnbG9iYWxUaGlzLCB7IE1vY2tUaW1lIH0pO1xuIl0sCiAgIm1hcHBpbmdzIjogIkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVlBLE1BQU0sVUFBVTtBQUFBLEVBU1osWUFDcUIsVUFDQSxZQUNqQixVQUNGO0FBSG1CO0FBQ0E7QUFHakIsUUFBSSxnQkFBZ0IsY0FBYztBQUM5QixXQUFLLFdBQVc7QUFBQSxJQUNwQixPQUFPO0FBQ0gsV0FBSyxXQUFXLE1BQU07QUFDbEIsYUFBSyxZQUFZO0FBQ2pCLGlCQUFTO0FBQUEsTUFDYjtBQUFBLElBQ0o7QUFBQSxFQUNKO0FBQUEsRUFyQkEsT0FBTztBQUFBLEVBQ1AsV0FBVztBQUFBLEVBQ1gsYUFBYTtBQUFBLEVBQ2IsYUFBYTtBQUFBLEVBRWIsWUFBWTtBQUFBLEVBQ0s7QUFBQSxFQWlCakIsUUFBUTtBQUNKLFNBQUssU0FBUyxlQUFlLEtBQUssU0FBUyxNQUFNLElBQUksS0FBSyxZQUFZLEtBQUssUUFBUTtBQUNuRixTQUFLLFlBQVk7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
|
|
@@ -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
|
+
}
|