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