@matter/testing 0.11.0-alpha.0-20241027-de3c9d280
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 +40 -0
- package/bin/test.js +7 -0
- package/chip/Dockerfile +23 -0
- package/dist/cjs/chip/pics-file.d.ts +20 -0
- package/dist/cjs/chip/pics-file.d.ts.map +1 -0
- package/dist/cjs/chip/pics-file.js +79 -0
- package/dist/cjs/chip/pics-file.js.map +6 -0
- package/dist/cjs/chip.d.ts +60 -0
- package/dist/cjs/chip.d.ts.map +1 -0
- package/dist/cjs/chip.js +306 -0
- package/dist/cjs/chip.js.map +6 -0
- package/dist/cjs/cli.d.ts +9 -0
- package/dist/cjs/cli.d.ts.map +1 -0
- package/dist/cjs/cli.js +115 -0
- package/dist/cjs/cli.js.map +6 -0
- package/dist/cjs/failure-detail.d.ts +19 -0
- package/dist/cjs/failure-detail.d.ts.map +1 -0
- package/dist/cjs/failure-detail.js +143 -0
- package/dist/cjs/failure-detail.js.map +6 -0
- package/dist/cjs/global-declarations.d.ts +38 -0
- package/dist/cjs/global-declarations.d.ts.map +1 -0
- package/dist/cjs/global-declarations.js +8 -0
- package/dist/cjs/global-declarations.js.map +6 -0
- package/dist/cjs/global-definitions.d.ts +7 -0
- package/dist/cjs/global-definitions.d.ts.map +1 -0
- package/dist/cjs/global-definitions.js +50 -0
- package/dist/cjs/global-definitions.js.map +6 -0
- package/dist/cjs/index.d.ts +10 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +27 -0
- package/dist/cjs/index.js.map +6 -0
- package/dist/cjs/mocha.d.ts +36 -0
- package/dist/cjs/mocha.d.ts.map +1 -0
- package/dist/cjs/mocha.js +155 -0
- package/dist/cjs/mocha.js.map +6 -0
- package/dist/cjs/mocharc.cjs +68 -0
- package/dist/cjs/mocharc.d.cts +7 -0
- package/dist/cjs/mocks/crypto.d.ts +7 -0
- package/dist/cjs/mocks/crypto.d.ts.map +1 -0
- package/dist/cjs/mocks/crypto.js +79 -0
- package/dist/cjs/mocks/crypto.js.map +6 -0
- package/dist/cjs/mocks/environment.d.ts +7 -0
- package/dist/cjs/mocks/environment.d.ts.map +1 -0
- package/dist/cjs/mocks/environment.js +7 -0
- package/dist/cjs/mocks/environment.js.map +6 -0
- package/dist/cjs/mocks/index.d.ts +10 -0
- package/dist/cjs/mocks/index.d.ts.map +1 -0
- package/dist/cjs/mocks/index.js +27 -0
- package/dist/cjs/mocks/index.js.map +6 -0
- package/dist/cjs/mocks/logging.d.ts +28 -0
- package/dist/cjs/mocks/logging.d.ts.map +1 -0
- package/dist/cjs/mocks/logging.js +93 -0
- package/dist/cjs/mocks/logging.js.map +6 -0
- package/dist/cjs/mocks/time.d.ts +88 -0
- package/dist/cjs/mocks/time.d.ts.map +1 -0
- package/dist/cjs/mocks/time.js +251 -0
- package/dist/cjs/mocks/time.js.map +6 -0
- package/dist/cjs/node.d.ts +9 -0
- package/dist/cjs/node.d.ts.map +1 -0
- package/dist/cjs/node.js +112 -0
- package/dist/cjs/node.js.map +6 -0
- package/dist/cjs/options.d.ts +19 -0
- package/dist/cjs/options.d.ts.map +1 -0
- package/dist/cjs/options.js +62 -0
- package/dist/cjs/options.js.map +6 -0
- package/dist/cjs/package.json +6 -0
- package/dist/cjs/reporter.d.ts +50 -0
- package/dist/cjs/reporter.d.ts.map +1 -0
- package/dist/cjs/reporter.js +137 -0
- package/dist/cjs/reporter.js.map +6 -0
- package/dist/cjs/runner.d.ts +21 -0
- package/dist/cjs/runner.d.ts.map +1 -0
- package/dist/cjs/runner.js +113 -0
- package/dist/cjs/runner.js.map +6 -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/files.d.ts +7 -0
- package/dist/cjs/util/files.d.ts.map +1 -0
- package/dist/cjs/util/files.js +42 -0
- package/dist/cjs/util/files.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/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/web.d.ts +8 -0
- package/dist/cjs/web.d.ts.map +1 -0
- package/dist/cjs/web.js +165 -0
- package/dist/cjs/web.js.map +6 -0
- package/dist/esm/chip/pics-file.d.ts +20 -0
- package/dist/esm/chip/pics-file.d.ts.map +1 -0
- package/dist/esm/chip/pics-file.js +59 -0
- package/dist/esm/chip/pics-file.js.map +6 -0
- package/dist/esm/chip.d.ts +60 -0
- package/dist/esm/chip.d.ts.map +1 -0
- package/dist/esm/chip.js +286 -0
- package/dist/esm/chip.js.map +6 -0
- package/dist/esm/cli.d.ts +9 -0
- package/dist/esm/cli.d.ts.map +1 -0
- package/dist/esm/cli.js +85 -0
- package/dist/esm/cli.js.map +6 -0
- package/dist/esm/failure-detail.d.ts +19 -0
- package/dist/esm/failure-detail.d.ts.map +1 -0
- package/dist/esm/failure-detail.js +113 -0
- package/dist/esm/failure-detail.js.map +6 -0
- package/dist/esm/global-declarations.d.ts +38 -0
- package/dist/esm/global-declarations.d.ts.map +1 -0
- package/dist/esm/global-declarations.js +7 -0
- package/dist/esm/global-declarations.js.map +6 -0
- package/dist/esm/global-definitions.d.ts +7 -0
- package/dist/esm/global-definitions.d.ts.map +1 -0
- package/dist/esm/global-definitions.js +27 -0
- package/dist/esm/global-definitions.js.map +6 -0
- package/dist/esm/index.d.ts +10 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +10 -0
- package/dist/esm/index.js.map +6 -0
- package/dist/esm/mocha.d.ts +36 -0
- package/dist/esm/mocha.d.ts.map +1 -0
- package/dist/esm/mocha.js +135 -0
- package/dist/esm/mocha.js.map +6 -0
- package/dist/esm/mocharc.cjs +68 -0
- package/dist/esm/mocharc.d.cts +7 -0
- package/dist/esm/mocks/crypto.d.ts +7 -0
- package/dist/esm/mocks/crypto.d.ts.map +1 -0
- package/dist/esm/mocks/crypto.js +59 -0
- package/dist/esm/mocks/crypto.js.map +6 -0
- package/dist/esm/mocks/environment.d.ts +7 -0
- package/dist/esm/mocks/environment.d.ts.map +1 -0
- package/dist/esm/mocks/environment.js +6 -0
- package/dist/esm/mocks/environment.js.map +6 -0
- package/dist/esm/mocks/index.d.ts +10 -0
- package/dist/esm/mocks/index.d.ts.map +1 -0
- package/dist/esm/mocks/index.js +10 -0
- package/dist/esm/mocks/index.js.map +6 -0
- package/dist/esm/mocks/logging.d.ts +28 -0
- package/dist/esm/mocks/logging.d.ts.map +1 -0
- package/dist/esm/mocks/logging.js +63 -0
- package/dist/esm/mocks/logging.js.map +6 -0
- package/dist/esm/mocks/time.d.ts +88 -0
- package/dist/esm/mocks/time.d.ts.map +1 -0
- package/dist/esm/mocks/time.js +231 -0
- package/dist/esm/mocks/time.js.map +6 -0
- package/dist/esm/node.d.ts +9 -0
- package/dist/esm/node.d.ts.map +1 -0
- package/dist/esm/node.js +82 -0
- package/dist/esm/node.js.map +6 -0
- package/dist/esm/options.d.ts +19 -0
- package/dist/esm/options.d.ts.map +1 -0
- package/dist/esm/options.js +42 -0
- package/dist/esm/options.js.map +6 -0
- package/dist/esm/package.json +6 -0
- package/dist/esm/reporter.d.ts +50 -0
- package/dist/esm/reporter.d.ts.map +1 -0
- package/dist/esm/reporter.js +107 -0
- package/dist/esm/reporter.js.map +6 -0
- package/dist/esm/runner.d.ts +21 -0
- package/dist/esm/runner.d.ts.map +1 -0
- package/dist/esm/runner.js +83 -0
- package/dist/esm/runner.js.map +6 -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/files.d.ts +7 -0
- package/dist/esm/util/files.d.ts.map +1 -0
- package/dist/esm/util/files.js +22 -0
- package/dist/esm/util/files.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/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/web.d.ts +8 -0
- package/dist/esm/web.d.ts.map +1 -0
- package/dist/esm/web.js +135 -0
- package/dist/esm/web.js.map +6 -0
- package/package.json +72 -0
- package/src/chip/pics-file.ts +71 -0
- package/src/chip/pics.properties +52 -0
- package/src/chip.ts +420 -0
- package/src/cli.ts +122 -0
- package/src/failure-detail.ts +126 -0
- package/src/global-declarations.ts +50 -0
- package/src/global-definitions.ts +35 -0
- package/src/index.html +16 -0
- package/src/index.ts +10 -0
- package/src/mocha.ts +162 -0
- package/src/mocharc.cjs +68 -0
- package/src/mocharc.d.cts +7 -0
- package/src/mocks/crypto.ts +70 -0
- package/src/mocks/environment.ts +7 -0
- package/src/mocks/index.ts +10 -0
- package/src/mocks/logging.ts +99 -0
- package/src/mocks/time.ts +295 -0
- package/src/node.ts +106 -0
- package/src/options.ts +58 -0
- package/src/reporter.ts +144 -0
- package/src/runner.ts +92 -0
- package/src/tsconfig.json +12 -0
- package/src/util/docker.ts +176 -0
- package/src/util/files.ts +25 -0
- package/src/util/node-shims.ts +13 -0
- package/src/util/trace-unhandled.ts +17 -0
- package/src/util/wtf.ts +25 -0
- package/src/web.ts +174 -0
- package/test/mocks/MockTimeTest.ts +113 -0
- package/test/tsconfig.json +18 -0
- package/tsconfig.json +5 -0
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { Progress } from "#tools";
|
|
7
|
+
import colors from "ansi-colors";
|
|
8
|
+
import debug from "debug";
|
|
9
|
+
import { relative } from "path";
|
|
10
|
+
import { Chip } from "./chip.js";
|
|
11
|
+
import { FailureDetail } from "./failure-detail.js";
|
|
12
|
+
import { testNode } from "./node.js";
|
|
13
|
+
import { ProgressReporter } from "./reporter.js";
|
|
14
|
+
import { listSupportFiles } from "./util/files.js";
|
|
15
|
+
import { testWeb } from "./web.js";
|
|
16
|
+
class TestRunner {
|
|
17
|
+
constructor(pkg, progress, options) {
|
|
18
|
+
this.pkg = pkg;
|
|
19
|
+
this.progress = progress;
|
|
20
|
+
this.options = options;
|
|
21
|
+
Chip.config = { runner: this };
|
|
22
|
+
this.reporter = new class extends ProgressReporter {
|
|
23
|
+
constructor() {
|
|
24
|
+
super(progress);
|
|
25
|
+
}
|
|
26
|
+
failRun(detail) {
|
|
27
|
+
process.stdout.write("\n");
|
|
28
|
+
FailureDetail.dump(detail);
|
|
29
|
+
process.exit(1);
|
|
30
|
+
}
|
|
31
|
+
}();
|
|
32
|
+
if (options.spec === void 0) {
|
|
33
|
+
this.spec = ["test/**/*Test.ts"];
|
|
34
|
+
} else if (Array.isArray(options.spec)) {
|
|
35
|
+
this.spec = options.spec;
|
|
36
|
+
} else {
|
|
37
|
+
this.spec = [options.spec];
|
|
38
|
+
}
|
|
39
|
+
if (options.debug) {
|
|
40
|
+
debug.enable("mocha:*");
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
reporter;
|
|
44
|
+
spec = Array();
|
|
45
|
+
async runNode(format = "esm") {
|
|
46
|
+
await this.run(this.progress, () => testNode(this, format));
|
|
47
|
+
}
|
|
48
|
+
async runWeb(manual = false) {
|
|
49
|
+
await this.run(this.progress, () => testWeb(this, manual));
|
|
50
|
+
}
|
|
51
|
+
async loadFiles(format) {
|
|
52
|
+
const tests = [];
|
|
53
|
+
for (let spec of this.spec) {
|
|
54
|
+
spec = spec.replace(/\.ts$/, ".js");
|
|
55
|
+
spec = relative(this.pkg.path, spec);
|
|
56
|
+
if (!spec.startsWith(".") && !spec.startsWith("build/") && !spec.startsWith("dist/")) {
|
|
57
|
+
spec = `build/${format}/${spec}`;
|
|
58
|
+
}
|
|
59
|
+
tests.push(...await this.pkg.glob(spec));
|
|
60
|
+
}
|
|
61
|
+
if (!tests.length) {
|
|
62
|
+
fatal(`No files match ${this.spec.join(", ")}`);
|
|
63
|
+
}
|
|
64
|
+
return [...listSupportFiles(format), ...tests];
|
|
65
|
+
}
|
|
66
|
+
async run(progress, runner) {
|
|
67
|
+
await runner();
|
|
68
|
+
if (progress.status !== Progress.Status.Success) {
|
|
69
|
+
fatal(`Test ${progress.status.toLowerCase()}, aborting`);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
function fatal(message) {
|
|
74
|
+
process.stderr.write(colors.redBright(`
|
|
75
|
+
${message}
|
|
76
|
+
|
|
77
|
+
`));
|
|
78
|
+
process.exit(1);
|
|
79
|
+
}
|
|
80
|
+
export {
|
|
81
|
+
TestRunner
|
|
82
|
+
};
|
|
83
|
+
//# sourceMappingURL=runner.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/runner.ts"],
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAkB,gBAAgB;AAClC,OAAO,YAAY;AACnB,OAAO,WAAW;AAClB,SAAS,gBAAgB;AACzB,SAAS,YAAY;AACrB,SAAS,qBAAqB;AAC9B,SAAS,gBAAgB;AAEzB,SAAS,wBAAkC;AAC3C,SAAS,wBAAwB;AACjC,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,MAAM,UAAU,QAAuB;AACnC,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;AAEA,YAAM,KAAK,GAAI,MAAM,KAAK,IAAI,KAAK,IAAI,CAAE;AAAA,IAC7C;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,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"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { readdir } from "fs/promises";
|
|
7
|
+
import { Writable } from "stream";
|
|
8
|
+
import Dockerode from "dockerode";
|
|
9
|
+
class Docker {
|
|
10
|
+
#intf = new Dockerode();
|
|
11
|
+
async *run(imageName, options) {
|
|
12
|
+
const { args, createOptions } = configureRun(options);
|
|
13
|
+
let resolve;
|
|
14
|
+
let reject;
|
|
15
|
+
let signal;
|
|
16
|
+
function newSignal() {
|
|
17
|
+
signal = new Promise((newResolve, newReject) => {
|
|
18
|
+
resolve = (text) => {
|
|
19
|
+
newResolve(text);
|
|
20
|
+
newSignal();
|
|
21
|
+
};
|
|
22
|
+
reject = newReject;
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
newSignal();
|
|
26
|
+
const output = new Writable();
|
|
27
|
+
output._write = (chunk, _encoding, done) => {
|
|
28
|
+
resolve(chunk.toString("utf-8"));
|
|
29
|
+
newSignal();
|
|
30
|
+
done();
|
|
31
|
+
};
|
|
32
|
+
this.#intf.run(imageName, args, output, createOptions).then(
|
|
33
|
+
(result) => {
|
|
34
|
+
const statusCode = result?.[0]?.StatusCode;
|
|
35
|
+
if (typeof statusCode !== "number") {
|
|
36
|
+
throw new Error(`Process exit status "${statusCode}" is non-numeric`);
|
|
37
|
+
}
|
|
38
|
+
if (statusCode === 0) {
|
|
39
|
+
resolve(void 0);
|
|
40
|
+
} else {
|
|
41
|
+
reject(new Error(`Process exited with error status "${statusCode}"`));
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
(error) => reject(error)
|
|
45
|
+
);
|
|
46
|
+
while (true) {
|
|
47
|
+
const value = await signal;
|
|
48
|
+
if (value === void 0) {
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
51
|
+
yield value;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
async readFileFromImage(imageName, pathInImage) {
|
|
55
|
+
const output = Array();
|
|
56
|
+
for await (const chunk of this.run(imageName, {
|
|
57
|
+
entrypoint: "/usr/bin/cat",
|
|
58
|
+
args: [pathInImage]
|
|
59
|
+
})) {
|
|
60
|
+
output.push(chunk);
|
|
61
|
+
}
|
|
62
|
+
return output.join("").replace(/\r\n/g, "\n");
|
|
63
|
+
}
|
|
64
|
+
async resolveGlobFromImage(imageName, glob) {
|
|
65
|
+
const output = Array();
|
|
66
|
+
for await (const chunk of this.run(imageName, {
|
|
67
|
+
entrypoint: ["/bin/bash", "-c"],
|
|
68
|
+
args: `ls ${glob}`
|
|
69
|
+
})) {
|
|
70
|
+
output.push(chunk);
|
|
71
|
+
}
|
|
72
|
+
return output.join("").split(/\r?\n/).filter((line) => line !== "");
|
|
73
|
+
}
|
|
74
|
+
async buildImage(name, path) {
|
|
75
|
+
const files = await readdir(path);
|
|
76
|
+
const stream = await this.#intf.buildImage(
|
|
77
|
+
{
|
|
78
|
+
context: path,
|
|
79
|
+
src: files
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
t: name
|
|
83
|
+
}
|
|
84
|
+
);
|
|
85
|
+
await new Promise((resolve, reject) => {
|
|
86
|
+
this.#intf.modem.followProgress(stream, (error, result) => {
|
|
87
|
+
if (error) {
|
|
88
|
+
reject(error);
|
|
89
|
+
}
|
|
90
|
+
const finalMessage = result[result.length - 1];
|
|
91
|
+
const errorMessage = finalMessage?.error ?? finalMessage?.errorDetail?.message;
|
|
92
|
+
if (errorMessage) {
|
|
93
|
+
reject(new Error(errorMessage));
|
|
94
|
+
}
|
|
95
|
+
resolve();
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
function configureRun(options) {
|
|
101
|
+
if (options === void 0) {
|
|
102
|
+
options = {};
|
|
103
|
+
}
|
|
104
|
+
let { args } = options;
|
|
105
|
+
if (args === void 0) {
|
|
106
|
+
args = [];
|
|
107
|
+
} else if (typeof args === "string") {
|
|
108
|
+
args = [args];
|
|
109
|
+
}
|
|
110
|
+
const createOptions = {
|
|
111
|
+
HostConfig: {
|
|
112
|
+
AutoRemove: true
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
const { entrypoint, env, binds, network } = options ?? {};
|
|
116
|
+
if (entrypoint !== void 0) {
|
|
117
|
+
createOptions.Entrypoint = entrypoint;
|
|
118
|
+
}
|
|
119
|
+
if (env) {
|
|
120
|
+
createOptions.Env = Object.entries(env).map(([k, v]) => `${k}=${v}`);
|
|
121
|
+
}
|
|
122
|
+
if (binds) {
|
|
123
|
+
createOptions.HostConfig.Binds = Object.entries(binds).map(([k, v]) => `${k}:${v}`);
|
|
124
|
+
}
|
|
125
|
+
if (network) {
|
|
126
|
+
createOptions.HostConfig.NetworkMode = network;
|
|
127
|
+
}
|
|
128
|
+
return { args, createOptions };
|
|
129
|
+
}
|
|
130
|
+
export {
|
|
131
|
+
Docker
|
|
132
|
+
};
|
|
133
|
+
//# sourceMappingURL=docker.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/util/docker.ts"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../../src/util/files.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,wBAAgB,gBAAgB,CAAC,MAAM,SAAQ,YAe9C"}
|
|
@@ -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 "#tools";
|
|
7
|
+
import { existsSync } from "fs";
|
|
8
|
+
function listSupportFiles(format = "cjs") {
|
|
9
|
+
const files = Array();
|
|
10
|
+
const testing = Package.tools.findPackage("@matter/testing");
|
|
11
|
+
files.push(testing.resolve("dist/esm/global-definitions.js"));
|
|
12
|
+
files.push(testing.resolve("dist/esm/mocks/index.js"));
|
|
13
|
+
const config = new Package().resolve(`build/${format}/test/test.config.js`);
|
|
14
|
+
if (existsSync(config)) {
|
|
15
|
+
files.push(config);
|
|
16
|
+
}
|
|
17
|
+
return files;
|
|
18
|
+
}
|
|
19
|
+
export {
|
|
20
|
+
listSupportFiles
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=files.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/util/files.ts"],
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,eAAe;AACxB,SAAS,kBAAkB;AAEpB,SAAS,iBAAiB,SAAS,OAAO;AAC7C,QAAM,QAAQ,MAAc;AAG5B,QAAM,UAAU,QAAQ,MAAM,YAAY,iBAAiB;AAC3D,QAAM,KAAK,QAAQ,QAAQ,gCAAgC,CAAC;AAC5D,QAAM,KAAK,QAAQ,QAAQ,yBAAyB,CAAC;AAGrD,QAAM,SAAS,IAAI,QAAQ,EAAE,QAAQ,SAAS,MAAM,sBAAsB;AAC1E,MAAI,WAAW,MAAM,GAAG;AACpB,UAAM,KAAK,MAAM;AAAA,EACrB;AAEA,SAAO;AACX;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-shims.d.ts","sourceRoot":"","sources":["../../../src/util/node-shims.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,OAAO,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import "mocha";
|
|
7
|
+
import { webcrypto } from "node:crypto";
|
|
8
|
+
if (globalThis.crypto === void 0) {
|
|
9
|
+
Object.assign(globalThis, { crypto: webcrypto });
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=node-shims.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trace-unhandled.d.ts","sourceRoot":"","sources":["../../../src/util/trace-unhandled.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,cAAc;;CAU1B,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
const traceUnhandled = {
|
|
7
|
+
async initialize() {
|
|
8
|
+
if (!process.argv.includes("--trace-unhandled") && !process.env.MATTER_TRACE_UNHANDLED) {
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
const { register } = await import("trace-unhandled");
|
|
12
|
+
register();
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
export {
|
|
16
|
+
traceUnhandled
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=trace-unhandled.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/util/trace-unhandled.ts"],
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMO,MAAM,iBAAiB;AAAA,EAC1B,MAAM,aAAa;AAEf,QAAI,CAAC,QAAQ,KAAK,SAAS,mBAAmB,KAAK,CAAC,QAAQ,IAAI,wBAAwB;AACpF;AAAA,IACJ;AAEA,UAAM,EAAE,SAAS,IAAI,MAAM,OAAO,iBAAiB;AACnD,aAAS;AAAA,EACb;AACJ;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wtf.d.ts","sourceRoot":"","sources":["../../../src/util/wtf.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,GAAG;;;CAkBf,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
const wtf = {
|
|
7
|
+
async initialize() {
|
|
8
|
+
if (typeof process !== "object" || process?.release?.name !== "node") {
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
if (!process.argv.includes("--wtf") && !process.env.MATTER_WTF) {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
const { dump } = await import("wtfnode");
|
|
15
|
+
this.dump = () => dump();
|
|
16
|
+
},
|
|
17
|
+
dump() {
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
export {
|
|
21
|
+
wtf
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=wtf.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/util/wtf.ts"],
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMO,MAAM,MAAM;AAAA,EACf,MAAM,aAAa;AAEf,QAAI,OAAO,YAAY,YAAY,SAAS,SAAS,SAAS,QAAQ;AAClE;AAAA,IACJ;AAIA,QAAI,CAAC,QAAQ,KAAK,SAAS,OAAO,KAAK,CAAC,QAAQ,IAAI,YAAY;AAC5D;AAAA,IACJ;AAEA,UAAM,EAAE,KAAK,IAAI,MAAM,OAAO,SAAS;AACvC,SAAK,OAAO,MAAM,KAAK;AAAA,EAC3B;AAAA,EAEA,OAAO;AAAA,EAAC;AACZ;",
|
|
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/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"}
|
package/dist/esm/web.js
ADDED
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { Package } from "#tools";
|
|
7
|
+
import { build } from "esbuild";
|
|
8
|
+
import express from "express";
|
|
9
|
+
import { writeFile } from "fs/promises";
|
|
10
|
+
import { relative } from "path";
|
|
11
|
+
import { chromium } from "playwright";
|
|
12
|
+
import { ConsoleProxyReporter } from "./reporter.js";
|
|
13
|
+
async function testWeb(runner, manual) {
|
|
14
|
+
const files = await 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=web.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/web.ts"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["server", "options"]
|
|
6
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@matter/testing",
|
|
3
|
+
"version": "0.11.0-alpha.0-20241027-de3c9d280",
|
|
4
|
+
"description": "Matter.js tooling",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"scripts": {
|
|
7
|
+
"clean": "matter-build clean",
|
|
8
|
+
"build": "matter-build",
|
|
9
|
+
"build-clean": "matter-build --clean",
|
|
10
|
+
"test": "matter-test"
|
|
11
|
+
},
|
|
12
|
+
"bin": {
|
|
13
|
+
"matter-test": "bin/test.js"
|
|
14
|
+
},
|
|
15
|
+
"exports": {
|
|
16
|
+
".": {
|
|
17
|
+
"import": {
|
|
18
|
+
"types": "./dist/esm/index.d.ts",
|
|
19
|
+
"default": "./dist/esm/index.js"
|
|
20
|
+
},
|
|
21
|
+
"require": {
|
|
22
|
+
"types": "./dist/cjs/index.d.ts",
|
|
23
|
+
"default": "./dist/cjs/index.js"
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"main": "dist/cjs/index.js",
|
|
28
|
+
"module": "dist/esm/index.js",
|
|
29
|
+
"types": "dist/esm/index.d.ts",
|
|
30
|
+
"repository": {
|
|
31
|
+
"type": "git",
|
|
32
|
+
"url": "git+https://github.com/project-chip/matter.js.git"
|
|
33
|
+
},
|
|
34
|
+
"author": "matter.js authors",
|
|
35
|
+
"contributors": [
|
|
36
|
+
"Greg Lauckhart <greg@lauckhart.com>"
|
|
37
|
+
],
|
|
38
|
+
"license": "Apache-2.0",
|
|
39
|
+
"bugs": {
|
|
40
|
+
"url": "https://github.com/project-chip/matter.js/issues"
|
|
41
|
+
},
|
|
42
|
+
"homepage": "https://github.com/project-chip/matter.js#readme",
|
|
43
|
+
"imports": {
|
|
44
|
+
"#tools": "@matter/tools"
|
|
45
|
+
},
|
|
46
|
+
"dependencies": {
|
|
47
|
+
"@matter/tools": "0.11.0-alpha.0-20241027-de3c9d280",
|
|
48
|
+
"@types/express": "^4.17.21",
|
|
49
|
+
"chai": "^4.4.1",
|
|
50
|
+
"chai-as-promised": "^7.1.2",
|
|
51
|
+
"dockerode": "^4.0.2",
|
|
52
|
+
"express": "^4.19.2",
|
|
53
|
+
"mocha": "^10.7.3",
|
|
54
|
+
"playwright": "^1.48.1",
|
|
55
|
+
"trace-unhandled": "^2.0.1",
|
|
56
|
+
"wtfnode": "^0.9.3",
|
|
57
|
+
"yargs": "^17.7.2"
|
|
58
|
+
},
|
|
59
|
+
"devDependencies": {
|
|
60
|
+
"typescript": "~5.6.2",
|
|
61
|
+
"@types/dockerode": "^3.3.30",
|
|
62
|
+
"@types/chai": "^4.3.16",
|
|
63
|
+
"@types/chai-as-promised": "^7.1.8",
|
|
64
|
+
"@types/debug": "^4.1.12",
|
|
65
|
+
"@types/mocha": "^10.0.7",
|
|
66
|
+
"@types/wtfnode": "^0.7.3",
|
|
67
|
+
"@types/yargs": "^17.0.33"
|
|
68
|
+
},
|
|
69
|
+
"publishConfig": {
|
|
70
|
+
"access": "public"
|
|
71
|
+
}
|
|
72
|
+
}
|