@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,192 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import mapWorkspaces from "@npmcli/map-workspaces";
|
|
7
|
+
import colors from "ansi-colors";
|
|
8
|
+
import { JsonNotFoundError, Package } from "../util/package.js";
|
|
9
|
+
import { Progress } from "../util/progress.js";
|
|
10
|
+
import { InternalBuildError } from "./error.js";
|
|
11
|
+
import { BUILD_INFO_LOCATION, Project } from "./project.js";
|
|
12
|
+
class Graph {
|
|
13
|
+
constructor(nodes) {
|
|
14
|
+
this.nodes = nodes;
|
|
15
|
+
}
|
|
16
|
+
get(name) {
|
|
17
|
+
const node = this.nodes.find((node2) => node2.pkg.name === name);
|
|
18
|
+
if (node === void 0) {
|
|
19
|
+
throw new Error(`Cannot locate package "${name}"`);
|
|
20
|
+
}
|
|
21
|
+
return node;
|
|
22
|
+
}
|
|
23
|
+
static async load(pkg = Package.workspace) {
|
|
24
|
+
const nodeMap = await this.#loadNodes(pkg.workspace);
|
|
25
|
+
return await this.#createGraph(Object.values(nodeMap));
|
|
26
|
+
}
|
|
27
|
+
static async forProject(path) {
|
|
28
|
+
let workspace;
|
|
29
|
+
try {
|
|
30
|
+
workspace = Package.workspaceFor(path);
|
|
31
|
+
} catch (e) {
|
|
32
|
+
if (e instanceof JsonNotFoundError) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
throw e;
|
|
36
|
+
}
|
|
37
|
+
const nodeMap = await this.#loadNodes(workspace);
|
|
38
|
+
const rootPkg = new Package({ path });
|
|
39
|
+
const rootNode = nodeMap[rootPkg.json.name];
|
|
40
|
+
if (!rootNode) {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
const nodes = /* @__PURE__ */ new Set();
|
|
44
|
+
function addNode(node) {
|
|
45
|
+
if (nodes.has(node)) {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
nodes.add(node);
|
|
49
|
+
for (const dependency of node.dependencies) {
|
|
50
|
+
addNode(dependency);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
addNode(rootNode);
|
|
54
|
+
return await this.#createGraph([...nodes]);
|
|
55
|
+
}
|
|
56
|
+
// TODO - parallelization will be trivial except need to update Progress
|
|
57
|
+
// to support display of multiple simultaneous tasks
|
|
58
|
+
async build(builder, showSkipped = true) {
|
|
59
|
+
const toBuild = new Set(this.nodes);
|
|
60
|
+
for (const node of this.nodes) {
|
|
61
|
+
await builder.configure(node.project);
|
|
62
|
+
}
|
|
63
|
+
while (toBuild.size) {
|
|
64
|
+
let node;
|
|
65
|
+
nodes: for (node of toBuild) {
|
|
66
|
+
for (const dep of node.dependencies) {
|
|
67
|
+
if (dep.isDirty) {
|
|
68
|
+
continue nodes;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
break;
|
|
72
|
+
}
|
|
73
|
+
if (!node) {
|
|
74
|
+
throw new Error("Internal logic error: No unbuilt project has fully built dependencies");
|
|
75
|
+
}
|
|
76
|
+
if (node.isDirty || builder.unconditional) {
|
|
77
|
+
await builder.build(node.project);
|
|
78
|
+
node.info.timestamp = (/* @__PURE__ */ new Date()).toISOString();
|
|
79
|
+
} else if (showSkipped) {
|
|
80
|
+
new Progress().skip("Up to date", node.pkg);
|
|
81
|
+
}
|
|
82
|
+
toBuild.delete(node);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
display() {
|
|
86
|
+
for (const node of this.nodes) {
|
|
87
|
+
const progress = node.pkg.start("Node");
|
|
88
|
+
progress.info("path", node.pkg.path);
|
|
89
|
+
progress.info("modified", formatTime(node.modifyTime));
|
|
90
|
+
progress.info("built", formatTime(node.info.timestamp ?? 0));
|
|
91
|
+
progress.info("dirty", node.isDirty ? colors.dim.red("yes") : colors.dim.green("no"));
|
|
92
|
+
progress.info("dependencies", node.dependencies.map(formatDep).join(", "));
|
|
93
|
+
progress.shutdown();
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
static async #createGraph(nodes) {
|
|
97
|
+
const graph = new Graph(nodes);
|
|
98
|
+
await Promise.all(
|
|
99
|
+
graph.nodes.map(async (node) => {
|
|
100
|
+
if (node.pkg.hasFile(BUILD_INFO_LOCATION)) {
|
|
101
|
+
node.info = await node.pkg.readJson(BUILD_INFO_LOCATION);
|
|
102
|
+
}
|
|
103
|
+
node.modifyTime = await node.pkg.lastModified("package.json", "src", "test");
|
|
104
|
+
return node;
|
|
105
|
+
})
|
|
106
|
+
);
|
|
107
|
+
const stack = Array();
|
|
108
|
+
function findCircular(node) {
|
|
109
|
+
if (stack.indexOf(node) !== -1) {
|
|
110
|
+
stack.push(node);
|
|
111
|
+
throw new InternalBuildError(`Circular dependency: ${stack.map(formatDep).join(" \u25B8 ")}`);
|
|
112
|
+
}
|
|
113
|
+
stack.push(node);
|
|
114
|
+
for (const dep of node.dependencies) {
|
|
115
|
+
findCircular(dep);
|
|
116
|
+
}
|
|
117
|
+
stack.pop();
|
|
118
|
+
}
|
|
119
|
+
for (const node of graph.nodes) {
|
|
120
|
+
findCircular(node);
|
|
121
|
+
}
|
|
122
|
+
return graph;
|
|
123
|
+
}
|
|
124
|
+
static async #loadNodes(workspace) {
|
|
125
|
+
const workspaces = await mapWorkspaces({ pkg: workspace.json, cwd: workspace.path });
|
|
126
|
+
const nodeMap = {};
|
|
127
|
+
const allDeps = {};
|
|
128
|
+
for (const path of workspaces.values()) {
|
|
129
|
+
const pkg = new Package({ path });
|
|
130
|
+
allDeps[pkg.json.name] = pkg.dependencies;
|
|
131
|
+
nodeMap[pkg.json.name] = {
|
|
132
|
+
pkg,
|
|
133
|
+
project: new Project(pkg),
|
|
134
|
+
dependencies: [],
|
|
135
|
+
info: {},
|
|
136
|
+
modifyTime: 0,
|
|
137
|
+
get buildTime() {
|
|
138
|
+
return this.info.timestamp ? new Date(this.info.timestamp).getTime() : 0;
|
|
139
|
+
},
|
|
140
|
+
get isDirty() {
|
|
141
|
+
return this.modifyTime > this.buildTime || !!this.dependencies.find(
|
|
142
|
+
(dep) => dep.isDirty || dep.buildTime > this.buildTime && (dep.info.apiSha === void 0 || dep.info.apiSha !== this.info.dependencyApiShas?.[dep.pkg.name])
|
|
143
|
+
);
|
|
144
|
+
},
|
|
145
|
+
// This version of dirty should only be used after building all dependencies. If this project is
|
|
146
|
+
// unmodified and the SHA of the type definitions of the target project is also unmodified then we do
|
|
147
|
+
// not need to build
|
|
148
|
+
get prebuildDirty() {
|
|
149
|
+
if (this.modifyTime > this.buildTime) {
|
|
150
|
+
return true;
|
|
151
|
+
}
|
|
152
|
+
const depShas = this.info.dependencyApiShas;
|
|
153
|
+
if (typeof depShas !== "object") {
|
|
154
|
+
return this.isDirty;
|
|
155
|
+
}
|
|
156
|
+
for (const dep of this.dependencies) {
|
|
157
|
+
const depSha = depShas[dep.pkg.name];
|
|
158
|
+
if (depSha === void 0 || depSha !== dep.info.apiSha) {
|
|
159
|
+
return true;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
return false;
|
|
163
|
+
}
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
for (const name in allDeps) {
|
|
167
|
+
for (const dep of allDeps[name]) {
|
|
168
|
+
const depNode = nodeMap[dep];
|
|
169
|
+
if (depNode && depNode !== nodeMap[name]) {
|
|
170
|
+
nodeMap[name].dependencies.push(depNode);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
return nodeMap;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
function formatTime(time) {
|
|
178
|
+
if (!time) {
|
|
179
|
+
return colors.dim.red("never");
|
|
180
|
+
}
|
|
181
|
+
if (typeof time === "string") {
|
|
182
|
+
time = new Date(time).getTime();
|
|
183
|
+
}
|
|
184
|
+
return new Date(time - (/* @__PURE__ */ new Date()).getTimezoneOffset()).toISOString().split(".")[0].replace("T", " ");
|
|
185
|
+
}
|
|
186
|
+
function formatDep(node) {
|
|
187
|
+
return node.pkg.name.replace(/^@(?:project-chip|matter\.js)\//, "");
|
|
188
|
+
}
|
|
189
|
+
export {
|
|
190
|
+
Graph
|
|
191
|
+
};
|
|
192
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2J1aWxkaW5nL2dyYXBoLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgMjAyMi0yMDI0IE1hdHRlci5qcyBBdXRob3JzXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuICovXG5cbmltcG9ydCBtYXBXb3Jrc3BhY2VzIGZyb20gXCJAbnBtY2xpL21hcC13b3Jrc3BhY2VzXCI7XG5pbXBvcnQgY29sb3JzIGZyb20gXCJhbnNpLWNvbG9yc1wiO1xuaW1wb3J0IHsgSnNvbk5vdEZvdW5kRXJyb3IsIFBhY2thZ2UgfSBmcm9tIFwiLi4vdXRpbC9wYWNrYWdlLmpzXCI7XG5pbXBvcnQgeyBQcm9ncmVzcyB9IGZyb20gXCIuLi91dGlsL3Byb2dyZXNzLmpzXCI7XG5pbXBvcnQgeyBCdWlsZGVyIH0gZnJvbSBcIi4vYnVpbGRlci5qc1wiO1xuaW1wb3J0IHsgSW50ZXJuYWxCdWlsZEVycm9yIH0gZnJvbSBcIi4vZXJyb3IuanNcIjtcbmltcG9ydCB7IEJVSUxEX0lORk9fTE9DQVRJT04sIEJ1aWxkSW5mb3JtYXRpb24sIFByb2plY3QgfSBmcm9tIFwiLi9wcm9qZWN0LmpzXCI7XG5cbi8qKlxuICogR3JhcGggb2YgZGVwZW5kZW5jaWVzIGZvciB3b3Jrc3BhY2UgcGFja2FnZXMuXG4gKlxuICogV2UgdXNlIHRoaXMgaW5mb3JtYXRpb24gdG8gZGV0ZXJtaW5lIHdoaWNoIHBhY2thZ2VzIGFyZSBcImRpcnR5XCIgYW5kIG5lZWQgcmVidWlsZC4gIEluIHRoZSBmdXR1cmUgd2UgY2FuIGFsc28gdXNlIGZvclxuICogcGFyYWxsZWwgYnVpbGQsIG9ubHkgdHJpY2t5IHBhcnQgdGhlcmUgaXMgc2hvd2luZyBzdGF0dXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBHcmFwaCB7XG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKHJlYWRvbmx5IG5vZGVzOiBHcmFwaC5Ob2RlW10pIHt9XG5cbiAgICBnZXQobmFtZTogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IG5vZGUgPSB0aGlzLm5vZGVzLmZpbmQobm9kZSA9PiBub2RlLnBrZy5uYW1lID09PSBuYW1lKTtcbiAgICAgICAgaWYgKG5vZGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgbG9jYXRlIHBhY2thZ2UgXCIke25hbWV9XCJgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbm9kZTtcbiAgICB9XG5cbiAgICBzdGF0aWMgYXN5bmMgbG9hZChwa2cgPSBQYWNrYWdlLndvcmtzcGFjZSkge1xuICAgICAgICBjb25zdCBub2RlTWFwID0gYXdhaXQgdGhpcy4jbG9hZE5vZGVzKHBrZy53b3Jrc3BhY2UpO1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy4jY3JlYXRlR3JhcGgoT2JqZWN0LnZhbHVlcyhub2RlTWFwKSk7XG4gICAgfVxuXG4gICAgc3RhdGljIGFzeW5jIGZvclByb2plY3QocGF0aDogc3RyaW5nKTogUHJvbWlzZTxHcmFwaCB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBsZXQgd29ya3NwYWNlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgd29ya3NwYWNlID0gUGFja2FnZS53b3Jrc3BhY2VGb3IocGF0aCk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgSnNvbk5vdEZvdW5kRXJyb3IpIHtcbiAgICAgICAgICAgICAgICAvLyBQcm9qZWN0IGlzIG5vdCBpbiBhIHdvcmtzcGFjZVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBub2RlTWFwID0gYXdhaXQgdGhpcy4jbG9hZE5vZGVzKHdvcmtzcGFjZSk7XG5cbiAgICAgICAgY29uc3Qgcm9vdFBrZyA9IG5ldyBQYWNrYWdlKHsgcGF0aDogcGF0aCB9KTtcbiAgICAgICAgY29uc3Qgcm9vdE5vZGUgPSBub2RlTWFwW3Jvb3RQa2cuanNvbi5uYW1lXTtcbiAgICAgICAgaWYgKCFyb290Tm9kZSkge1xuICAgICAgICAgICAgLy8gUHJvamVjdCByZXNpZGVzIHVuZGVyIGEgd29ya3NwYWNlIGJ1dCBpcyBub3QgcGFydCBvZiB0aGUgd29ya3NwYWNlXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBub2RlcyA9IG5ldyBTZXQ8R3JhcGguTm9kZT4oKTtcbiAgICAgICAgZnVuY3Rpb24gYWRkTm9kZShub2RlOiBHcmFwaC5Ob2RlKSB7XG4gICAgICAgICAgICBpZiAobm9kZXMuaGFzKG5vZGUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbm9kZXMuYWRkKG5vZGUpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBkZXBlbmRlbmN5IG9mIG5vZGUuZGVwZW5kZW5jaWVzKSB7XG4gICAgICAgICAgICAgICAgYWRkTm9kZShkZXBlbmRlbmN5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGFkZE5vZGUocm9vdE5vZGUpO1xuXG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLiNjcmVhdGVHcmFwaChbLi4ubm9kZXNdKTtcbiAgICB9XG5cbiAgICAvLyBUT0RPIC0gcGFyYWxsZWxpemF0aW9uIHdpbGwgYmUgdHJpdmlhbCBleGNlcHQgbmVlZCB0byB1cGRhdGUgUHJvZ3Jlc3NcbiAgICAvLyB0byBzdXBwb3J0IGRpc3BsYXkgb2YgbXVsdGlwbGUgc2ltdWx0YW5lb3VzIHRhc2tzXG4gICAgYXN5bmMgYnVpbGQoYnVpbGRlcjogQnVpbGRlciwgc2hvd1NraXBwZWQgPSB0cnVlKSB7XG4gICAgICAgIGNvbnN0IHRvQnVpbGQgPSBuZXcgU2V0KHRoaXMubm9kZXMpO1xuXG4gICAgICAgIC8vIFdlIGNvbmZpZ3VyZSBlYWNoIGJ1aWxkIGJlZm9yZSBidWlsZGluZyBzbyB0aGF0IGFueSBnZW5lcmF0ZWQgZmlsZXMgYXJlIGluIHBsYWNlIGJlZm9yZSB3ZSBpbml0aWF0ZSB0aGUgYnVpbGRcbiAgICAgICAgZm9yIChjb25zdCBub2RlIG9mIHRoaXMubm9kZXMpIHtcbiAgICAgICAgICAgIGF3YWl0IGJ1aWxkZXIuY29uZmlndXJlKG5vZGUucHJvamVjdCk7XG4gICAgICAgIH1cblxuICAgICAgICB3aGlsZSAodG9CdWlsZC5zaXplKSB7XG4gICAgICAgICAgICBsZXQgbm9kZTtcblxuICAgICAgICAgICAgbm9kZXM6IGZvciAobm9kZSBvZiB0b0J1aWxkKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBkZXAgb2Ygbm9kZS5kZXBlbmRlbmNpZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRlcC5pc0RpcnR5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZSBub2RlcztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFub2RlKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW50ZXJuYWwgbG9naWMgZXJyb3I6IE5vIHVuYnVpbHQgcHJvamVjdCBoYXMgZnVsbHkgYnVpbHQgZGVwZW5kZW5jaWVzXCIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobm9kZS5pc0RpcnR5IHx8IGJ1aWxkZXIudW5jb25kaXRpb25hbCkge1xuICAgICAgICAgICAgICAgIGF3YWl0IGJ1aWxkZXIuYnVpbGQobm9kZS5wcm9qZWN0KTtcbiAgICAgICAgICAgICAgICBub2RlLmluZm8udGltZXN0YW1wID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChzaG93U2tpcHBlZCkge1xuICAgICAgICAgICAgICAgIG5ldyBQcm9ncmVzcygpLnNraXAoXCJVcCB0byBkYXRlXCIsIG5vZGUucGtnKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdG9CdWlsZC5kZWxldGUobm9kZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNwbGF5KCkge1xuICAgICAgICBmb3IgKGNvbnN0IG5vZGUgb2YgdGhpcy5ub2Rlcykge1xuICAgICAgICAgICAgY29uc3QgcHJvZ3Jlc3MgPSBub2RlLnBrZy5zdGFydChcIk5vZGVcIik7XG4gICAgICAgICAgICBwcm9ncmVzcy5pbmZvKFwicGF0aFwiLCBub2RlLnBrZy5wYXRoKTtcbiAgICAgICAgICAgIHByb2dyZXNzLmluZm8oXCJtb2RpZmllZFwiLCBmb3JtYXRUaW1lKG5vZGUubW9kaWZ5VGltZSkpO1xuICAgICAgICAgICAgcHJvZ3Jlc3MuaW5mbyhcImJ1aWx0XCIsIGZvcm1hdFRpbWUobm9kZS5pbmZvLnRpbWVzdGFtcCA/PyAwKSk7XG4gICAgICAgICAgICBwcm9ncmVzcy5pbmZvKFwiZGlydHlcIiwgbm9kZS5pc0RpcnR5ID8gY29sb3JzLmRpbS5yZWQoXCJ5ZXNcIikgOiBjb2xvcnMuZGltLmdyZWVuKFwibm9cIikpO1xuICAgICAgICAgICAgcHJvZ3Jlc3MuaW5mbyhcImRlcGVuZGVuY2llc1wiLCBub2RlLmRlcGVuZGVuY2llcy5tYXAoZm9ybWF0RGVwKS5qb2luKFwiLCBcIikpO1xuICAgICAgICAgICAgcHJvZ3Jlc3Muc2h1dGRvd24oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHN0YXRpYyBhc3luYyAjY3JlYXRlR3JhcGgobm9kZXM6IEdyYXBoLk5vZGVbXSkge1xuICAgICAgICBjb25zdCBncmFwaCA9IG5ldyBHcmFwaChub2Rlcyk7XG5cbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgICAgICBncmFwaC5ub2Rlcy5tYXAoYXN5bmMgbm9kZSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKG5vZGUucGtnLmhhc0ZpbGUoQlVJTERfSU5GT19MT0NBVElPTikpIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5pbmZvID0gYXdhaXQgbm9kZS5wa2cucmVhZEpzb24oQlVJTERfSU5GT19MT0NBVElPTik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbm9kZS5tb2RpZnlUaW1lID0gYXdhaXQgbm9kZS5wa2cubGFzdE1vZGlmaWVkKFwicGFja2FnZS5qc29uXCIsIFwic3JjXCIsIFwidGVzdFwiKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBub2RlO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3Qgc3RhY2sgPSBBcnJheTxHcmFwaC5Ob2RlPigpO1xuICAgICAgICBmdW5jdGlvbiBmaW5kQ2lyY3VsYXIobm9kZTogR3JhcGguTm9kZSkge1xuICAgICAgICAgICAgaWYgKHN0YWNrLmluZGV4T2Yobm9kZSkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgc3RhY2sucHVzaChub2RlKTtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxCdWlsZEVycm9yKGBDaXJjdWxhciBkZXBlbmRlbmN5OiAke3N0YWNrLm1hcChmb3JtYXREZXApLmpvaW4oXCIgXHUyNUI4IFwiKX1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN0YWNrLnB1c2gobm9kZSk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGRlcCBvZiBub2RlLmRlcGVuZGVuY2llcykge1xuICAgICAgICAgICAgICAgIGZpbmRDaXJjdWxhcihkZXApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3RhY2sucG9wKCk7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChjb25zdCBub2RlIG9mIGdyYXBoLm5vZGVzKSB7XG4gICAgICAgICAgICBmaW5kQ2lyY3VsYXIobm9kZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZ3JhcGg7XG4gICAgfVxuXG4gICAgc3RhdGljIGFzeW5jICNsb2FkTm9kZXMod29ya3NwYWNlOiBQYWNrYWdlKSB7XG4gICAgICAgIGNvbnN0IHdvcmtzcGFjZXMgPSBhd2FpdCBtYXBXb3Jrc3BhY2VzKHsgcGtnOiB3b3Jrc3BhY2UuanNvbiwgY3dkOiB3b3Jrc3BhY2UucGF0aCB9KTtcblxuICAgICAgICBjb25zdCBub2RlTWFwID0ge30gYXMgUmVjb3JkPHN0cmluZywgR3JhcGguTm9kZT47XG4gICAgICAgIGNvbnN0IGFsbERlcHMgPSB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT47XG4gICAgICAgIGZvciAoY29uc3QgcGF0aCBvZiB3b3Jrc3BhY2VzLnZhbHVlcygpKSB7XG4gICAgICAgICAgICBjb25zdCBwa2cgPSBuZXcgUGFja2FnZSh7IHBhdGg6IHBhdGggfSk7XG4gICAgICAgICAgICBhbGxEZXBzW3BrZy5qc29uLm5hbWVdID0gcGtnLmRlcGVuZGVuY2llcztcbiAgICAgICAgICAgIG5vZGVNYXBbcGtnLmpzb24ubmFtZV0gPSB7XG4gICAgICAgICAgICAgICAgcGtnLFxuICAgICAgICAgICAgICAgIHByb2plY3Q6IG5ldyBQcm9qZWN0KHBrZyksXG4gICAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzOiBbXSxcbiAgICAgICAgICAgICAgICBpbmZvOiB7fSxcbiAgICAgICAgICAgICAgICBtb2RpZnlUaW1lOiAwLFxuXG4gICAgICAgICAgICAgICAgZ2V0IGJ1aWxkVGltZSgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaW5mby50aW1lc3RhbXAgPyBuZXcgRGF0ZSh0aGlzLmluZm8udGltZXN0YW1wKS5nZXRUaW1lKCkgOiAwO1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBnZXQgaXNEaXJ0eSgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW9kaWZ5VGltZSA+IHRoaXMuYnVpbGRUaW1lIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAhIXRoaXMuZGVwZW5kZW5jaWVzLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcC5pc0RpcnR5IHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZXAuYnVpbGRUaW1lID4gdGhpcy5idWlsZFRpbWUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZXAuaW5mby5hcGlTaGEgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcC5pbmZvLmFwaVNoYSAhPT0gdGhpcy5pbmZvLmRlcGVuZGVuY3lBcGlTaGFzPy5bZGVwLnBrZy5uYW1lXSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICAvLyBUaGlzIHZlcnNpb24gb2YgZGlydHkgc2hvdWxkIG9ubHkgYmUgdXNlZCBhZnRlciBidWlsZGluZyBhbGwgZGVwZW5kZW5jaWVzLiAgSWYgdGhpcyBwcm9qZWN0IGlzXG4gICAgICAgICAgICAgICAgLy8gdW5tb2RpZmllZCBhbmQgdGhlIFNIQSBvZiB0aGUgdHlwZSBkZWZpbml0aW9ucyBvZiB0aGUgdGFyZ2V0IHByb2plY3QgaXMgYWxzbyB1bm1vZGlmaWVkIHRoZW4gd2UgZG9cbiAgICAgICAgICAgICAgICAvLyBub3QgbmVlZCB0byBidWlsZFxuICAgICAgICAgICAgICAgIGdldCBwcmVidWlsZERpcnR5KCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5tb2RpZnlUaW1lID4gdGhpcy5idWlsZFRpbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRlcFNoYXMgPSB0aGlzLmluZm8uZGVwZW5kZW5jeUFwaVNoYXM7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZGVwU2hhcyAhPT0gXCJvYmplY3RcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNEaXJ0eTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGRlcCBvZiB0aGlzLmRlcGVuZGVuY2llcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVwU2hhID0gZGVwU2hhc1tkZXAucGtnLm5hbWVdO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRlcFNoYSA9PT0gdW5kZWZpbmVkIHx8IGRlcFNoYSAhPT0gZGVwLmluZm8uYXBpU2hhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBuYW1lIGluIGFsbERlcHMpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZGVwIG9mIGFsbERlcHNbbmFtZV0pIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkZXBOb2RlID0gbm9kZU1hcFtkZXBdO1xuXG4gICAgICAgICAgICAgICAgLy8gTm90ZSAtLSBhbGxvdyBub2RlcyB0byByZWZlcmVuY2UgdGhlbXNlbHZlcywgc2VlbXMgdG8gYmUgbmVjZXNzYXJ5IG9uIHRvb2xzIGZvciB1c2Ugb2YgdHNjXG4gICAgICAgICAgICAgICAgaWYgKGRlcE5vZGUgJiYgZGVwTm9kZSAhPT0gbm9kZU1hcFtuYW1lXSkge1xuICAgICAgICAgICAgICAgICAgICBub2RlTWFwW25hbWVdLmRlcGVuZGVuY2llcy5wdXNoKGRlcE5vZGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBub2RlTWFwO1xuICAgIH1cbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBHcmFwaCB7XG4gICAgZXhwb3J0IGludGVyZmFjZSBOb2RlIHtcbiAgICAgICAgcGtnOiBQYWNrYWdlO1xuICAgICAgICBwcm9qZWN0OiBQcm9qZWN0O1xuICAgICAgICBkZXBlbmRlbmNpZXM6IE5vZGVbXTtcbiAgICAgICAgYnVpbGRUaW1lOiBudW1iZXI7XG4gICAgICAgIGluZm86IEJ1aWxkSW5mb3JtYXRpb247XG4gICAgICAgIG1vZGlmeVRpbWU6IG51bWJlcjtcbiAgICAgICAgaXNEaXJ0eTogYm9vbGVhbjtcbiAgICAgICAgcHJlYnVpbGREaXJ0eTogYm9vbGVhbjtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGZvcm1hdFRpbWUodGltZTogbnVtYmVyIHwgc3RyaW5nKSB7XG4gICAgaWYgKCF0aW1lKSB7XG4gICAgICAgIHJldHVybiBjb2xvcnMuZGltLnJlZChcIm5ldmVyXCIpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHRpbWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgdGltZSA9IG5ldyBEYXRlKHRpbWUpLmdldFRpbWUoKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBEYXRlKHRpbWUgLSBuZXcgRGF0ZSgpLmdldFRpbWV6b25lT2Zmc2V0KCkpLnRvSVNPU3RyaW5nKCkuc3BsaXQoXCIuXCIpWzBdLnJlcGxhY2UoXCJUXCIsIFwiIFwiKTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0RGVwKG5vZGU6IEdyYXBoLk5vZGUpIHtcbiAgICByZXR1cm4gbm9kZS5wa2cubmFtZS5yZXBsYWNlKC9eQCg/OnByb2plY3QtY2hpcHxtYXR0ZXJcXC5qcylcXC8vLCBcIlwiKTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFN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
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/building/graph.ts"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["node"]
|
|
6
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { Hash } from "crypto";
|
|
7
|
+
import { Format } from "esbuild";
|
|
8
|
+
import { Package } from "../util/package.js";
|
|
9
|
+
import { Progress } from "../util/progress.js";
|
|
10
|
+
export declare const BUILD_INFO_LOCATION = "build/info.json";
|
|
11
|
+
export interface BuildInformation {
|
|
12
|
+
/**
|
|
13
|
+
* Time of last build. Compared to source files to determine whether build is dirty.
|
|
14
|
+
*/
|
|
15
|
+
timestamp?: string;
|
|
16
|
+
/**
|
|
17
|
+
* API signature. Used by dependents to determine whether they need to rebuild after we do.
|
|
18
|
+
*/
|
|
19
|
+
apiSha?: string;
|
|
20
|
+
/**
|
|
21
|
+
* API signature of each dependency. Compared to apiSha of each dependency during dirty detection.
|
|
22
|
+
*/
|
|
23
|
+
dependencyApiShas?: Record<string, string>;
|
|
24
|
+
}
|
|
25
|
+
export declare class Project {
|
|
26
|
+
#private;
|
|
27
|
+
pkg: Package;
|
|
28
|
+
constructor(source?: Package | string);
|
|
29
|
+
buildSource(format: Format): Promise<void>;
|
|
30
|
+
buildTests(format: Format): Promise<void>;
|
|
31
|
+
clean(): Promise<void>;
|
|
32
|
+
/**
|
|
33
|
+
* Installs declaration files into specified directory. Also computes SHA-1 hash for all files that we use to
|
|
34
|
+
* detect "public API changes".
|
|
35
|
+
*
|
|
36
|
+
* Note we use cp to traverse filesystem, detect changes, locate source maps and compute API SHA. A little
|
|
37
|
+
* convoluted but works. When you correct for a node 20/windows bug.
|
|
38
|
+
*/
|
|
39
|
+
installDeclarationFormats(formats: Iterable<string>, apiSha?: Hash): Promise<void>;
|
|
40
|
+
get hasDeclarations(): boolean;
|
|
41
|
+
installDeclarations(apiSha?: Hash): Promise<void>;
|
|
42
|
+
recordBuildInfo(info: BuildInformation): Promise<void>;
|
|
43
|
+
configure(progress: Progress): Promise<Project.Config | undefined>;
|
|
44
|
+
}
|
|
45
|
+
export declare namespace Project {
|
|
46
|
+
interface Context {
|
|
47
|
+
project: Project;
|
|
48
|
+
progress: Progress;
|
|
49
|
+
}
|
|
50
|
+
interface Config {
|
|
51
|
+
startup?: (context: Context) => Promise<void>;
|
|
52
|
+
before?: (context: Context) => Promise<void>;
|
|
53
|
+
after?: (context: Context) => Promise<void>;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=project.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../../src/building/project.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAoB,MAAM,EAAE,MAAM,SAAS,CAAC;AAMnD,OAAO,EAAe,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,eAAO,MAAM,mBAAmB,oBAAoB,CAAC;AAErD,MAAM,WAAW,gBAAgB;IAC7B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9C;AAED,qBAAa,OAAO;;IAChB,GAAG,EAAE,OAAO,CAAC;gBAID,MAAM,GAAE,OAAO,GAAG,MAAY;IAYpC,WAAW,CAAC,MAAM,EAAE,MAAM;IAK1B,UAAU,CAAC,MAAM,EAAE,MAAM;IA2BzB,KAAK;IAMX;;;;;;OAMG;IACG,yBAAyB,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,EAAE,IAAI;IAsFxE,IAAI,eAAe,YAElB;IAEK,mBAAmB,CAAC,MAAM,CAAC,EAAE,IAAI;IAYjC,eAAe,CAAC,IAAI,EAAE,gBAAgB;IAMtC,SAAS,CAAC,QAAQ,EAAE,QAAQ;CA8FrC;AAED,yBAAiB,OAAO,CAAC;IACrB,UAAiB,OAAO;QACpB,OAAO,EAAE,OAAO,CAAC;QACjB,QAAQ,EAAE,QAAQ,CAAC;KACtB;IAED,UAAiB,MAAM;QACnB,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QAC9C,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7C,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;KAC/C;CACJ"}
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { build as esbuild } from "esbuild";
|
|
7
|
+
import { cp, mkdir, readFile, rm, stat, symlink, writeFile } from "fs/promises";
|
|
8
|
+
import { glob } from "glob";
|
|
9
|
+
import { platform } from "os";
|
|
10
|
+
import { dirname, join, relative } from "path";
|
|
11
|
+
import { ignoreError } from "../util/errors.js";
|
|
12
|
+
import { CONFIG_PATH, Package } from "../util/package.js";
|
|
13
|
+
const BUILD_INFO_LOCATION = "build/info.json";
|
|
14
|
+
class Project {
|
|
15
|
+
pkg;
|
|
16
|
+
#config;
|
|
17
|
+
#configured;
|
|
18
|
+
constructor(source = ".") {
|
|
19
|
+
if (typeof source === "string") {
|
|
20
|
+
this.pkg = new Package({ path: source });
|
|
21
|
+
} else {
|
|
22
|
+
this.pkg = source;
|
|
23
|
+
}
|
|
24
|
+
if (!this.pkg.hasSrc) {
|
|
25
|
+
throw new Error(`Found package ${this.pkg.json.name} but no src directory is present`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
async buildSource(format) {
|
|
29
|
+
await this.#build(format, "src", `dist/${format}`);
|
|
30
|
+
await this.#configureFormat("dist", format, true);
|
|
31
|
+
}
|
|
32
|
+
async buildTests(format) {
|
|
33
|
+
if (this.pkg.hasDirectory("test")) {
|
|
34
|
+
await this.#build(format, "test", `build/${format}/test`);
|
|
35
|
+
}
|
|
36
|
+
const src = `dist/${format}`;
|
|
37
|
+
const dest = `build/${format}/src`;
|
|
38
|
+
try {
|
|
39
|
+
const destPath = this.pkg.resolve(dest);
|
|
40
|
+
await mkdir(dirname(destPath), { recursive: true });
|
|
41
|
+
await ignoreError("EEXIST", async () => await symlink(this.pkg.resolve(src), destPath));
|
|
42
|
+
} catch (e) {
|
|
43
|
+
if (e.code === "EPERM" && platform() === "win32") {
|
|
44
|
+
await cp(this.pkg.resolve(src), this.pkg.resolve(dest), {
|
|
45
|
+
recursive: true,
|
|
46
|
+
force: true
|
|
47
|
+
});
|
|
48
|
+
} else {
|
|
49
|
+
throw e;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
await this.#configureFormat("build", format, false);
|
|
53
|
+
}
|
|
54
|
+
async clean() {
|
|
55
|
+
for (const dir of ["build", "dist"]) {
|
|
56
|
+
await rm(this.pkg.resolve(dir), { recursive: true, force: true });
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Installs declaration files into specified directory. Also computes SHA-1 hash for all files that we use to
|
|
61
|
+
* detect "public API changes".
|
|
62
|
+
*
|
|
63
|
+
* Note we use cp to traverse filesystem, detect changes, locate source maps and compute API SHA. A little
|
|
64
|
+
* convoluted but works. When you correct for a node 20/windows bug.
|
|
65
|
+
*/
|
|
66
|
+
async installDeclarationFormats(formats, apiSha) {
|
|
67
|
+
const srcMaps = Array();
|
|
68
|
+
let firstPass = true;
|
|
69
|
+
const src = this.pkg.resolve("build/types/src");
|
|
70
|
+
for (const format of formats) {
|
|
71
|
+
await cp(src, this.pkg.resolve(`dist/${format}`), {
|
|
72
|
+
recursive: true,
|
|
73
|
+
force: true,
|
|
74
|
+
filter: async (source, destination) => {
|
|
75
|
+
const sourceStat = await stat(source);
|
|
76
|
+
if (!sourceStat.isFile()) {
|
|
77
|
+
return true;
|
|
78
|
+
}
|
|
79
|
+
const destinationMtime = (await ignoreError("ENOENT", () => stat(destination)))?.mtimeMs;
|
|
80
|
+
if (destinationMtime !== void 0) {
|
|
81
|
+
const sourceMtime = sourceStat.mtimeMs;
|
|
82
|
+
if (destinationMtime >= sourceMtime) {
|
|
83
|
+
return false;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
if (source.endsWith(".d.ts.map")) {
|
|
87
|
+
if (firstPass) {
|
|
88
|
+
if (source.startsWith("\\\\?\\")) {
|
|
89
|
+
source = source.slice(4);
|
|
90
|
+
}
|
|
91
|
+
srcMaps.push(source);
|
|
92
|
+
}
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
if (apiSha) {
|
|
96
|
+
apiSha.update(await readFile(source));
|
|
97
|
+
}
|
|
98
|
+
return true;
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
firstPass = false;
|
|
102
|
+
}
|
|
103
|
+
for (const filename of srcMaps) {
|
|
104
|
+
let map = await readFile(filename);
|
|
105
|
+
let pos = map.indexOf('"sources":["../');
|
|
106
|
+
if (pos === -1) {
|
|
107
|
+
throw new Error(
|
|
108
|
+
`Could not find sources position in declaration map ${filename}, format may have changed`
|
|
109
|
+
);
|
|
110
|
+
}
|
|
111
|
+
pos += 12;
|
|
112
|
+
map = map.copyWithin(pos, pos + 3).subarray(0, map.length - 3);
|
|
113
|
+
const pathRelativeToDest = relative(src, filename);
|
|
114
|
+
for (const format of formats) {
|
|
115
|
+
await writeFile(join(join(this.pkg.resolve(`dist/${format}`), pathRelativeToDest)), map);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
get hasDeclarations() {
|
|
120
|
+
return this.pkg.hasDirectory("build/types");
|
|
121
|
+
}
|
|
122
|
+
async installDeclarations(apiSha) {
|
|
123
|
+
await mkdir(this.pkg.resolve("dist"), { recursive: true });
|
|
124
|
+
const formats = /* @__PURE__ */ new Set();
|
|
125
|
+
if (this.pkg.supportsEsm) {
|
|
126
|
+
formats.add("esm");
|
|
127
|
+
}
|
|
128
|
+
if (this.pkg.supportsCjs) {
|
|
129
|
+
formats.add("cjs");
|
|
130
|
+
}
|
|
131
|
+
await this.installDeclarationFormats(formats, apiSha);
|
|
132
|
+
}
|
|
133
|
+
async recordBuildInfo(info) {
|
|
134
|
+
await mkdir(this.pkg.resolve("build"), { recursive: true });
|
|
135
|
+
info.timestamp = (/* @__PURE__ */ new Date()).toISOString();
|
|
136
|
+
await writeFile(this.pkg.resolve(BUILD_INFO_LOCATION), JSON.stringify(info, void 0, 4));
|
|
137
|
+
}
|
|
138
|
+
async configure(progress) {
|
|
139
|
+
if (this.#configured) {
|
|
140
|
+
return this.#config;
|
|
141
|
+
}
|
|
142
|
+
if (!this.pkg.hasConfig) {
|
|
143
|
+
return {};
|
|
144
|
+
}
|
|
145
|
+
const configPath = this.pkg.resolve(CONFIG_PATH);
|
|
146
|
+
const outfile = configPath.replace(/\\/g, "/").replace("/src/", "/build/").replace(/\.ts$/, ".js");
|
|
147
|
+
await esbuild({
|
|
148
|
+
entryPoints: [configPath],
|
|
149
|
+
outfile,
|
|
150
|
+
sourcemap: true
|
|
151
|
+
});
|
|
152
|
+
this.#config = await import(`file://${outfile}`);
|
|
153
|
+
this.#configured = true;
|
|
154
|
+
if (this.#config?.startup) {
|
|
155
|
+
await this.#config?.startup({
|
|
156
|
+
project: this,
|
|
157
|
+
progress
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
return this.#config;
|
|
161
|
+
}
|
|
162
|
+
async #build(format, indir, outdir) {
|
|
163
|
+
const entryPoints = await this.#targetsOf(indir, outdir, "ts", "js");
|
|
164
|
+
const configPath = this.pkg.resolve(CONFIG_PATH);
|
|
165
|
+
for (const entry of entryPoints) {
|
|
166
|
+
if (entry.in === configPath) {
|
|
167
|
+
continue;
|
|
168
|
+
}
|
|
169
|
+
entry.out = entry.out.replace(/\.[jt]s$/, "");
|
|
170
|
+
}
|
|
171
|
+
await esbuild({
|
|
172
|
+
entryPoints,
|
|
173
|
+
outdir: this.pkg.path,
|
|
174
|
+
format,
|
|
175
|
+
sourcemap: true,
|
|
176
|
+
sourcesContent: false,
|
|
177
|
+
absWorkingDir: dirname(this.pkg.resolve(indir)),
|
|
178
|
+
// This is necessary to downlevel "using"
|
|
179
|
+
target: "es2022",
|
|
180
|
+
logOverride: {
|
|
181
|
+
"direct-eval": "silent"
|
|
182
|
+
}
|
|
183
|
+
});
|
|
184
|
+
for (const entry of await this.#targetsOf(indir, outdir, "cjs", "mjs", "d.cts", "d.mts")) {
|
|
185
|
+
await cp(entry.in, entry.out);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
async #configureFormat(dir, format, isDist) {
|
|
189
|
+
let { imports } = this.pkg.json;
|
|
190
|
+
if (isDist && typeof imports === "object") {
|
|
191
|
+
imports = { ...imports };
|
|
192
|
+
for (const key in imports) {
|
|
193
|
+
const value = imports[key];
|
|
194
|
+
if (typeof value === "string") {
|
|
195
|
+
imports[key] = value.replace(/^\.\/src\//, "./");
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
const path = this.pkg.resolve(`${dir}/${format}/package.json`);
|
|
200
|
+
const json = {
|
|
201
|
+
type: format === "cjs" ? "commonjs" : "module",
|
|
202
|
+
imports
|
|
203
|
+
};
|
|
204
|
+
await writeFile(path, JSON.stringify(json, void 0, 4));
|
|
205
|
+
}
|
|
206
|
+
async #targetsOf(indir, outdir, ...extensions) {
|
|
207
|
+
indir = this.pkg.resolve(indir).replace(/\\/g, "/");
|
|
208
|
+
outdir = this.pkg.resolve(outdir).replace(/\\/g, "/");
|
|
209
|
+
return (await glob(extensions.map((ext) => `${indir}/**/*.${ext}`))).map((file) => ({
|
|
210
|
+
in: file,
|
|
211
|
+
out: `${outdir}/${file.slice(indir.length + 1)}`
|
|
212
|
+
}));
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
export {
|
|
216
|
+
BUILD_INFO_LOCATION,
|
|
217
|
+
Project
|
|
218
|
+
};
|
|
219
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2J1aWxkaW5nL3Byb2plY3QudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCAyMDIyLTIwMjQgTWF0dGVyLmpzIEF1dGhvcnNcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG4gKi9cblxuaW1wb3J0IHsgSGFzaCB9IGZyb20gXCJjcnlwdG9cIjtcbmltcG9ydCB7IGJ1aWxkIGFzIGVzYnVpbGQsIEZvcm1hdCB9IGZyb20gXCJlc2J1aWxkXCI7XG5pbXBvcnQgeyBjcCwgbWtkaXIsIHJlYWRGaWxlLCBybSwgc3RhdCwgc3ltbGluaywgd3JpdGVGaWxlIH0gZnJvbSBcImZzL3Byb21pc2VzXCI7XG5pbXBvcnQgeyBnbG9iIH0gZnJvbSBcImdsb2JcIjtcbmltcG9ydCB7IHBsYXRmb3JtIH0gZnJvbSBcIm9zXCI7XG5pbXBvcnQgeyBkaXJuYW1lLCBqb2luLCByZWxhdGl2ZSB9IGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyBpZ25vcmVFcnJvciB9IGZyb20gXCIuLi91dGlsL2Vycm9ycy5qc1wiO1xuaW1wb3J0IHsgQ09ORklHX1BBVEgsIFBhY2thZ2UgfSBmcm9tIFwiLi4vdXRpbC9wYWNrYWdlLmpzXCI7XG5pbXBvcnQgeyBQcm9ncmVzcyB9IGZyb20gXCIuLi91dGlsL3Byb2dyZXNzLmpzXCI7XG5cbmV4cG9ydCBjb25zdCBCVUlMRF9JTkZPX0xPQ0FUSU9OID0gXCJidWlsZC9pbmZvLmpzb25cIjtcblxuZXhwb3J0IGludGVyZmFjZSBCdWlsZEluZm9ybWF0aW9uIHtcbiAgICAvKipcbiAgICAgKiBUaW1lIG9mIGxhc3QgYnVpbGQuICBDb21wYXJlZCB0byBzb3VyY2UgZmlsZXMgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYnVpbGQgaXMgZGlydHkuXG4gICAgICovXG4gICAgdGltZXN0YW1wPzogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQVBJIHNpZ25hdHVyZS4gIFVzZWQgYnkgZGVwZW5kZW50cyB0byBkZXRlcm1pbmUgd2hldGhlciB0aGV5IG5lZWQgdG8gcmVidWlsZCBhZnRlciB3ZSBkby5cbiAgICAgKi9cbiAgICBhcGlTaGE/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBBUEkgc2lnbmF0dXJlIG9mIGVhY2ggZGVwZW5kZW5jeS4gIENvbXBhcmVkIHRvIGFwaVNoYSBvZiBlYWNoIGRlcGVuZGVuY3kgZHVyaW5nIGRpcnR5IGRldGVjdGlvbi5cbiAgICAgKi9cbiAgICBkZXBlbmRlbmN5QXBpU2hhcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG59XG5cbmV4cG9ydCBjbGFzcyBQcm9qZWN0IHtcbiAgICBwa2c6IFBhY2thZ2U7XG4gICAgI2NvbmZpZz86IFByb2plY3QuQ29uZmlnO1xuICAgICNjb25maWd1cmVkPzogYm9vbGVhbjtcblxuICAgIGNvbnN0cnVjdG9yKHNvdXJjZTogUGFja2FnZSB8IHN0cmluZyA9IFwiLlwiKSB7XG4gICAgICAgIGlmICh0eXBlb2Ygc291cmNlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICB0aGlzLnBrZyA9IG5ldyBQYWNrYWdlKHsgcGF0aDogc291cmNlIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5wa2cgPSBzb3VyY2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMucGtnLmhhc1NyYykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGb3VuZCBwYWNrYWdlICR7dGhpcy5wa2cuanNvbi5uYW1lfSBidXQgbm8gc3JjIGRpcmVjdG9yeSBpcyBwcmVzZW50YCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyBidWlsZFNvdXJjZShmb3JtYXQ6IEZvcm1hdCkge1xuICAgICAgICBhd2FpdCB0aGlzLiNidWlsZChmb3JtYXQsIFwic3JjXCIsIGBkaXN0LyR7Zm9ybWF0fWApO1xuICAgICAgICBhd2FpdCB0aGlzLiNjb25maWd1cmVGb3JtYXQoXCJkaXN0XCIsIGZvcm1hdCwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgYXN5bmMgYnVpbGRUZXN0cyhmb3JtYXQ6IEZvcm1hdCkge1xuICAgICAgICBpZiAodGhpcy5wa2cuaGFzRGlyZWN0b3J5KFwidGVzdFwiKSkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy4jYnVpbGQoZm9ybWF0LCBcInRlc3RcIiwgYGJ1aWxkLyR7Zm9ybWF0fS90ZXN0YCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzcmMgPSBgZGlzdC8ke2Zvcm1hdH1gO1xuICAgICAgICBjb25zdCBkZXN0ID0gYGJ1aWxkLyR7Zm9ybWF0fS9zcmNgO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBkZXN0UGF0aCA9IHRoaXMucGtnLnJlc29sdmUoZGVzdCk7XG4gICAgICAgICAgICBhd2FpdCBta2RpcihkaXJuYW1lKGRlc3RQYXRoKSwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgICAgICAgICBhd2FpdCBpZ25vcmVFcnJvcihcIkVFWElTVFwiLCBhc3luYyAoKSA9PiBhd2FpdCBzeW1saW5rKHRoaXMucGtnLnJlc29sdmUoc3JjKSwgZGVzdFBhdGgpKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgaWYgKChlIGFzIGFueSkuY29kZSA9PT0gXCJFUEVSTVwiICYmIHBsYXRmb3JtKCkgPT09IFwid2luMzJcIikge1xuICAgICAgICAgICAgICAgIC8vIElmIGRldmVsb3BlciBtb2RlIGlzIG5vdCBlbmFibGVkLCB3ZSBjYW4ndCBjcmVhdGUgYSBzeW1saW5rXG4gICAgICAgICAgICAgICAgLy8gb24gV2luZG93cy4gIENvcHkgaW5zdGVhZFxuICAgICAgICAgICAgICAgIGF3YWl0IGNwKHRoaXMucGtnLnJlc29sdmUoc3JjKSwgdGhpcy5wa2cucmVzb2x2ZShkZXN0KSwge1xuICAgICAgICAgICAgICAgICAgICByZWN1cnNpdmU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGZvcmNlOiB0cnVlLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHRoaXMuI2NvbmZpZ3VyZUZvcm1hdChcImJ1aWxkXCIsIGZvcm1hdCwgZmFsc2UpO1xuICAgIH1cblxuICAgIGFzeW5jIGNsZWFuKCkge1xuICAgICAgICBmb3IgKGNvbnN0IGRpciBvZiBbXCJidWlsZFwiLCBcImRpc3RcIl0pIHtcbiAgICAgICAgICAgIGF3YWl0IHJtKHRoaXMucGtnLnJlc29sdmUoZGlyKSwgeyByZWN1cnNpdmU6IHRydWUsIGZvcmNlOiB0cnVlIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5zdGFsbHMgZGVjbGFyYXRpb24gZmlsZXMgaW50byBzcGVjaWZpZWQgZGlyZWN0b3J5LiAgQWxzbyBjb21wdXRlcyBTSEEtMSBoYXNoIGZvciBhbGwgZmlsZXMgdGhhdCB3ZSB1c2UgdG9cbiAgICAgKiBkZXRlY3QgXCJwdWJsaWMgQVBJIGNoYW5nZXNcIi5cbiAgICAgKlxuICAgICAqIE5vdGUgd2UgdXNlIGNwIHRvIHRyYXZlcnNlIGZpbGVzeXN0ZW0sIGRldGVjdCBjaGFuZ2VzLCBsb2NhdGUgc291cmNlIG1hcHMgYW5kIGNvbXB1dGUgQVBJIFNIQS4gIEEgbGl0dGxlXG4gICAgICogY29udm9sdXRlZCBidXQgd29ya3MuICBXaGVuIHlvdSBjb3JyZWN0IGZvciBhIG5vZGUgMjAvd2luZG93cyBidWcuXG4gICAgICovXG4gICAgYXN5bmMgaW5zdGFsbERlY2xhcmF0aW9uRm9ybWF0cyhmb3JtYXRzOiBJdGVyYWJsZTxzdHJpbmc+LCBhcGlTaGE/OiBIYXNoKSB7XG4gICAgICAgIGNvbnN0IHNyY01hcHMgPSBBcnJheTxzdHJpbmc+KCk7XG4gICAgICAgIGxldCBmaXJzdFBhc3MgPSB0cnVlO1xuXG4gICAgICAgIGNvbnN0IHNyYyA9IHRoaXMucGtnLnJlc29sdmUoXCJidWlsZC90eXBlcy9zcmNcIik7XG5cbiAgICAgICAgZm9yIChjb25zdCBmb3JtYXQgb2YgZm9ybWF0cykge1xuICAgICAgICAgICAgYXdhaXQgY3Aoc3JjLCB0aGlzLnBrZy5yZXNvbHZlKGBkaXN0LyR7Zm9ybWF0fWApLCB7XG4gICAgICAgICAgICAgICAgcmVjdXJzaXZlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGZvcmNlOiB0cnVlLFxuXG4gICAgICAgICAgICAgICAgZmlsdGVyOiBhc3luYyAoc291cmNlLCBkZXN0aW5hdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzb3VyY2VTdGF0ID0gYXdhaXQgc3RhdChzb3VyY2UpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXNvdXJjZVN0YXQuaXNGaWxlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gSWdub3JlIGZpbGVzIHRoYXQgYXJlIHVuY2hhbmdlZFxuICAgICAgICAgICAgICAgICAgICBjb25zdCBkZXN0aW5hdGlvbk10aW1lID0gKGF3YWl0IGlnbm9yZUVycm9yKFwiRU5PRU5UXCIsICgpID0+IHN0YXQoZGVzdGluYXRpb24pKSk/Lm10aW1lTXM7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkZXN0aW5hdGlvbk10aW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNvdXJjZU10aW1lID0gc291cmNlU3RhdC5tdGltZU1zO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRlc3RpbmF0aW9uTXRpbWUgPj0gc291cmNlTXRpbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBXZSBwcm9jZXNzIHNvdXJjZSBtYXBzIGJlbG93XG4gICAgICAgICAgICAgICAgICAgIGlmIChzb3VyY2UuZW5kc1dpdGgoXCIuZC50cy5tYXBcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaXJzdFBhc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc291cmNlLnN0YXJ0c1dpdGgoXCJcXFxcXFxcXD9cXFxcXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5vZGUgMjAgcHJlZml4ZXMgdGhlIHBhdGggd2l0aCBhYm92ZSBvbiBXaW5kb3dzIGFuZCByZWxhdGl2ZSgpIGNhbid0IGhhbmRsZSBpdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8ganVzdCBzdHJpcCBvZmZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlID0gc291cmNlLnNsaWNlKDQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNNYXBzLnB1c2goc291cmNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSBoYXNoIGlmIHByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgIGlmIChhcGlTaGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwaVNoYS51cGRhdGUoYXdhaXQgcmVhZEZpbGUoc291cmNlKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIC8vIE9ubHkgbmVlZCB0byBjb2xsZWN0IHNvdXJjZSBtYXBzIGFuZCB1cGRhdGUgaGFzaCBvbiBmaXJzdCBwYXNzXG4gICAgICAgICAgICBmaXJzdFBhc3MgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIHlvdSBzcGVjaWZ5IC0tc291cmNlUm9vdCwgdHNjIGp1c3Qgc3RpY2tzIHdoYXRldmVyIHRoZSBzdHJpbmcgaXMgZGlyZWN0bHkgaW50byB0aGUgZmlsZS4gIE5vdCB2ZXJ5IHVzZWZ1bFxuICAgICAgICAvLyB1bmxlc3MgeW91IGhhdmUgbm8gaGllcmFyY2h5IG9yIHVzZSBhYnNvbHV0ZSBwYXRocy4uLlxuICAgICAgICAvL1xuICAgICAgICAvLyBXZSBkaXN0cmlidXRlIHR5cGVzIGZvciBzcmMgb25lIGxldmVsIGhpZ2hlciB0aGFuIHdlIGdlbmVyYXRlIHRoZW0gKGRpc3QvZXNtIHZzIGJ1aWxkL3R5cGVzL3NyYykgc28gdGhlIHBhdGhzXG4gICAgICAgIC8vIGVuZCB1cCBpbmNvcnJlY3QuXG4gICAgICAgIC8vXG4gICAgICAgIC8vIFNvLi4uICBSZXdyaXRlIHRoZSBwYXRocyBpbiBhbGwgc291cmNlIG1hcHMgdW5kZXIgc3JjLy4gIERvIHRoaXMgZGlyZWN0bHkgb24gYnVmZmVyIGZvciBtYXJnaW5hbCBwZXJmb3JtYW5jZVxuICAgICAgICAvLyB3aW4uXG4gICAgICAgIGZvciAoY29uc3QgZmlsZW5hbWUgb2Ygc3JjTWFwcykge1xuICAgICAgICAgICAgLy8gTG9hZCBtYXAgYXMgYmluYXJ5XG4gICAgICAgICAgICBsZXQgbWFwID0gYXdhaXQgcmVhZEZpbGUoZmlsZW5hbWUpO1xuXG4gICAgICAgICAgICAvLyBGaW5kIGtleSB0ZXh0XG4gICAgICAgICAgICBsZXQgcG9zID0gbWFwLmluZGV4T2YoJ1wic291cmNlc1wiOltcIi4uLycpO1xuICAgICAgICAgICAgaWYgKHBvcyA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgIGBDb3VsZCBub3QgZmluZCBzb3VyY2VzIHBvc2l0aW9uIGluIGRlY2xhcmF0aW9uIG1hcCAke2ZpbGVuYW1lfSwgZm9ybWF0IG1heSBoYXZlIGNoYW5nZWRgLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIG1vdmUgdG8gLi4vXG4gICAgICAgICAgICBwb3MgKz0gMTI7XG5cbiAgICAgICAgICAgIC8vIFNoaWZ0IGV2ZXJ5dGhpbmcgbGVmdCBieSB0aHJlZVxuICAgICAgICAgICAgbWFwID0gbWFwLmNvcHlXaXRoaW4ocG9zLCBwb3MgKyAzKS5zdWJhcnJheSgwLCBtYXAubGVuZ3RoIC0gMyk7XG5cbiAgICAgICAgICAgIC8vIFdyaXRlIHRvIG5ldyBsb2NhdGlvbnNcbiAgICAgICAgICAgIGNvbnN0IHBhdGhSZWxhdGl2ZVRvRGVzdCA9IHJlbGF0aXZlKHNyYywgZmlsZW5hbWUpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBmb3JtYXQgb2YgZm9ybWF0cykge1xuICAgICAgICAgICAgICAgIGF3YWl0IHdyaXRlRmlsZShqb2luKGpvaW4odGhpcy5wa2cucmVzb2x2ZShgZGlzdC8ke2Zvcm1hdH1gKSwgcGF0aFJlbGF0aXZlVG9EZXN0KSksIG1hcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXQgaGFzRGVjbGFyYXRpb25zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wa2cuaGFzRGlyZWN0b3J5KFwiYnVpbGQvdHlwZXNcIik7XG4gICAgfVxuXG4gICAgYXN5bmMgaW5zdGFsbERlY2xhcmF0aW9ucyhhcGlTaGE/OiBIYXNoKSB7XG4gICAgICAgIGF3YWl0IG1rZGlyKHRoaXMucGtnLnJlc29sdmUoXCJkaXN0XCIpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICAgICAgY29uc3QgZm9ybWF0cyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgICBpZiAodGhpcy5wa2cuc3VwcG9ydHNFc20pIHtcbiAgICAgICAgICAgIGZvcm1hdHMuYWRkKFwiZXNtXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnBrZy5zdXBwb3J0c0Nqcykge1xuICAgICAgICAgICAgZm9ybWF0cy5hZGQoXCJjanNcIik7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgdGhpcy5pbnN0YWxsRGVjbGFyYXRpb25Gb3JtYXRzKGZvcm1hdHMsIGFwaVNoYSk7XG4gICAgfVxuXG4gICAgYXN5bmMgcmVjb3JkQnVpbGRJbmZvKGluZm86IEJ1aWxkSW5mb3JtYXRpb24pIHtcbiAgICAgICAgYXdhaXQgbWtkaXIodGhpcy5wa2cucmVzb2x2ZShcImJ1aWxkXCIpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICAgICAgaW5mby50aW1lc3RhbXAgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCk7XG4gICAgICAgIGF3YWl0IHdyaXRlRmlsZSh0aGlzLnBrZy5yZXNvbHZlKEJVSUxEX0lORk9fTE9DQVRJT04pLCBKU09OLnN0cmluZ2lmeShpbmZvLCB1bmRlZmluZWQsIDQpKTtcbiAgICB9XG5cbiAgICBhc3luYyBjb25maWd1cmUocHJvZ3Jlc3M6IFByb2dyZXNzKSB7XG4gICAgICAgIGlmICh0aGlzLiNjb25maWd1cmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy4jY29uZmlnO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLnBrZy5oYXNDb25maWcpIHtcbiAgICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNvbmZpZ1BhdGggPSB0aGlzLnBrZy5yZXNvbHZlKENPTkZJR19QQVRIKTtcblxuICAgICAgICBjb25zdCBvdXRmaWxlID0gY29uZmlnUGF0aC5yZXBsYWNlKC9cXFxcL2csIFwiL1wiKS5yZXBsYWNlKFwiL3NyYy9cIiwgXCIvYnVpbGQvXCIpLnJlcGxhY2UoL1xcLnRzJC8sIFwiLmpzXCIpO1xuICAgICAgICBhd2FpdCBlc2J1aWxkKHtcbiAgICAgICAgICAgIGVudHJ5UG9pbnRzOiBbY29uZmlnUGF0aF0sXG4gICAgICAgICAgICBvdXRmaWxlLFxuICAgICAgICAgICAgc291cmNlbWFwOiB0cnVlLFxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLiNjb25maWcgPSAoYXdhaXQgaW1wb3J0KGBmaWxlOi8vJHtvdXRmaWxlfWApKSBhcyBQcm9qZWN0LkNvbmZpZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy4jY29uZmlndXJlZCA9IHRydWU7XG5cbiAgICAgICAgaWYgKHRoaXMuI2NvbmZpZz8uc3RhcnR1cCkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy4jY29uZmlnPy5zdGFydHVwKHtcbiAgICAgICAgICAgICAgICBwcm9qZWN0OiB0aGlzLFxuICAgICAgICAgICAgICAgIHByb2dyZXNzLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy4jY29uZmlnO1xuICAgIH1cblxuICAgIGFzeW5jICNidWlsZChmb3JtYXQ6IEZvcm1hdCwgaW5kaXI6IHN0cmluZywgb3V0ZGlyOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgZW50cnlQb2ludHMgPSBhd2FpdCB0aGlzLiN0YXJnZXRzT2YoaW5kaXIsIG91dGRpciwgXCJ0c1wiLCBcImpzXCIpO1xuXG4gICAgICAgIGNvbnN0IGNvbmZpZ1BhdGggPSB0aGlzLnBrZy5yZXNvbHZlKENPTkZJR19QQVRIKTtcbiAgICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyeVBvaW50cykge1xuICAgICAgICAgICAgaWYgKGVudHJ5LmluID09PSBjb25maWdQYXRoKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbnRyeS5vdXQgPSBlbnRyeS5vdXQucmVwbGFjZSgvXFwuW2p0XXMkLywgXCJcIik7XG4gICAgICAgIH1cblxuICAgICAgICBhd2FpdCBlc2J1aWxkKHtcbiAgICAgICAgICAgIGVudHJ5UG9pbnRzLFxuICAgICAgICAgICAgb3V0ZGlyOiB0aGlzLnBrZy5wYXRoLFxuICAgICAgICAgICAgZm9ybWF0LFxuICAgICAgICAgICAgc291cmNlbWFwOiB0cnVlLFxuICAgICAgICAgICAgc291cmNlc0NvbnRlbnQ6IGZhbHNlLFxuICAgICAgICAgICAgYWJzV29ya2luZ0RpcjogZGlybmFtZSh0aGlzLnBrZy5yZXNvbHZlKGluZGlyKSksXG5cbiAgICAgICAgICAgIC8vIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIGRvd25sZXZlbCBcInVzaW5nXCJcbiAgICAgICAgICAgIHRhcmdldDogXCJlczIwMjJcIixcblxuICAgICAgICAgICAgbG9nT3ZlcnJpZGU6IHtcbiAgICAgICAgICAgICAgICBcImRpcmVjdC1ldmFsXCI6IFwic2lsZW50XCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcblxuICAgICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGF3YWl0IHRoaXMuI3RhcmdldHNPZihpbmRpciwgb3V0ZGlyLCBcImNqc1wiLCBcIm1qc1wiLCBcImQuY3RzXCIsIFwiZC5tdHNcIikpIHtcbiAgICAgICAgICAgIGF3YWl0IGNwKGVudHJ5LmluLCBlbnRyeS5vdXQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgI2NvbmZpZ3VyZUZvcm1hdChkaXI6IHN0cmluZywgZm9ybWF0OiBGb3JtYXQsIGlzRGlzdDogYm9vbGVhbikge1xuICAgICAgICAvLyBCdWlsZCBpbXBvcnQgbWFwXG4gICAgICAgIGxldCB7IGltcG9ydHMgfSA9IHRoaXMucGtnLmpzb247XG4gICAgICAgIGlmIChpc0Rpc3QgJiYgdHlwZW9mIGltcG9ydHMgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICAgIGltcG9ydHMgPSB7IC4uLmltcG9ydHMgfTtcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIGltcG9ydHMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGltcG9ydHNba2V5XTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgICAgIGltcG9ydHNba2V5XSA9IHZhbHVlLnJlcGxhY2UoL15cXC5cXC9zcmNcXC8vLCBcIi4vXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFdyaXRlIHBhY2thZ2UuanNvblxuICAgICAgICBjb25zdCBwYXRoID0gdGhpcy5wa2cucmVzb2x2ZShgJHtkaXJ9LyR7Zm9ybWF0fS9wYWNrYWdlLmpzb25gKTtcbiAgICAgICAgY29uc3QganNvbjogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7XG4gICAgICAgICAgICB0eXBlOiBmb3JtYXQgPT09IFwiY2pzXCIgPyBcImNvbW1vbmpzXCIgOiBcIm1vZHVsZVwiLFxuICAgICAgICAgICAgaW1wb3J0cyxcbiAgICAgICAgfTtcbiAgICAgICAgYXdhaXQgd3JpdGVGaWxlKHBhdGgsIEpTT04uc3RyaW5naWZ5KGpzb24sIHVuZGVmaW5lZCwgNCkpO1xuICAgIH1cblxuICAgIGFzeW5jICN0YXJnZXRzT2YoaW5kaXI6IHN0cmluZywgb3V0ZGlyOiBzdHJpbmcsIC4uLmV4dGVuc2lvbnM6IHN0cmluZ1tdKSB7XG4gICAgICAgIGluZGlyID0gdGhpcy5wa2cucmVzb2x2ZShpbmRpcikucmVwbGFjZSgvXFxcXC9nLCBcIi9cIik7XG4gICAgICAgIG91dGRpciA9IHRoaXMucGtnLnJlc29sdmUob3V0ZGlyKS5yZXBsYWNlKC9cXFxcL2csIFwiL1wiKTtcblxuICAgICAgICByZXR1cm4gKGF3YWl0IGdsb2IoZXh0ZW5zaW9ucy5tYXAoZXh0ID0+IGAke2luZGlyfS8qKi8qLiR7ZXh0fWApKSkubWFwKGZpbGUgPT4gKHtcbiAgICAgICAgICAgIGluOiBmaWxlLFxuICAgICAgICAgICAgb3V0OiBgJHtvdXRkaXJ9LyR7ZmlsZS5zbGljZShpbmRpci5sZW5ndGggKyAxKX1gLFxuICAgICAgICB9KSk7XG4gICAgfVxufVxuXG5leHBvcnQgbmFtZXNwYWNlIFByb2plY3Qge1xuICAgIGV4cG9ydCBpbnRlcmZhY2UgQ29udGV4dCB7XG4gICAgICAgIHByb2plY3Q6IFByb2plY3Q7XG4gICAgICAgIHByb2dyZXNzOiBQcm9ncmVzcztcbiAgICB9XG5cbiAgICBleHBvcnQgaW50ZXJmYWNlIENvbmZpZyB7XG4gICAgICAgIHN0YXJ0dXA/OiAoY29udGV4dDogQ29udGV4dCkgPT4gUHJvbWlzZTx2b2lkPjtcbiAgICAgICAgYmVmb3JlPzogKGNvbnRleHQ6IENvbnRleHQpID0+IFByb21pc2U8dm9pZD47XG4gICAgICAgIGFmdGVyPzogKGNvbnRleHQ6IENvbnRleHQpID0+IFByb21pc2U8dm9pZD47XG4gICAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQU9BLFNBQVMsU0FBUyxlQUF1QjtBQUN6QyxTQUFTLElBQUksT0FBTyxVQUFVLElBQUksTUFBTSxTQUFTLGlCQUFpQjtBQUNsRSxTQUFTLFlBQVk7QUFDckIsU0FBUyxnQkFBZ0I7QUFDekIsU0FBUyxTQUFTLE1BQU0sZ0JBQWdCO0FBQ3hDLFNBQVMsbUJBQW1CO0FBQzVCLFNBQVMsYUFBYSxlQUFlO0FBRzlCLE1BQU0sc0JBQXNCO0FBbUI1QixNQUFNLFFBQVE7QUFBQSxFQUNqQjtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFFQSxZQUFZLFNBQTJCLEtBQUs7QUFDeEMsUUFBSSxPQUFPLFdBQVcsVUFBVTtBQUM1QixXQUFLLE1BQU0sSUFBSSxRQUFRLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFBQSxJQUMzQyxPQUFPO0FBQ0gsV0FBSyxNQUFNO0FBQUEsSUFDZjtBQUVBLFFBQUksQ0FBQyxLQUFLLElBQUksUUFBUTtBQUNsQixZQUFNLElBQUksTUFBTSxpQkFBaUIsS0FBSyxJQUFJLEtBQUssSUFBSSxrQ0FBa0M7QUFBQSxJQUN6RjtBQUFBLEVBQ0o7QUFBQSxFQUVBLE1BQU0sWUFBWSxRQUFnQjtBQUM5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
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/building/project.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 { Graph } from "./graph.js";
|
|
7
|
+
/**
|
|
8
|
+
* Unfortunately typescript's "project references" are redundant with package.json dependencies. We don't use them for
|
|
9
|
+
* build but there are still some advantages to maintaining them so we just ensure they're in sync during workspace
|
|
10
|
+
* builds.
|
|
11
|
+
*
|
|
12
|
+
* One discussion on the topic: https://github.com/microsoft/TypeScript/issues/25376
|
|
13
|
+
*/
|
|
14
|
+
export declare function syncAllTsconfigs(graph: Graph): Promise<void>;
|
|
15
|
+
export declare function syncPackageTsconfigs(graph: Graph, node: Graph.Node): Promise<void>;
|
|
16
|
+
//# sourceMappingURL=tsconfig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tsconfig.d.ts","sourceRoot":"","sources":["../../../src/building/tsconfig.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,KAAK,iBAelD;AAMD,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,iBAGxE"}
|