@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,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import "./global-declarations.js";
|
|
7
|
+
export * from "./chip.js";
|
|
8
|
+
export * from "./mocharc.cjs";
|
|
9
|
+
export * from "./util/wtf.js";
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,0BAA0B,CAAC;AAClC,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import "./global-declarations.js";
|
|
7
|
+
export * from "./chip.js";
|
|
8
|
+
export * from "./mocharc.cjs";
|
|
9
|
+
export * from "./util/wtf.js";
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import type MochaType from "mocha";
|
|
7
|
+
import { Reporter } from "./reporter.js";
|
|
8
|
+
export declare function generalSetup(mocha: MochaType): void;
|
|
9
|
+
export declare function adaptReporter(Mocha: typeof MochaType, title: string, reporter: Reporter): {
|
|
10
|
+
new (runner: Mocha.Runner): {
|
|
11
|
+
readonly translatedStats: {
|
|
12
|
+
total: number;
|
|
13
|
+
complete: number;
|
|
14
|
+
failures: number;
|
|
15
|
+
};
|
|
16
|
+
stats: MochaType.Stats;
|
|
17
|
+
failures: MochaType.Test[];
|
|
18
|
+
runner: MochaType.Runner;
|
|
19
|
+
epilogue(): void;
|
|
20
|
+
done?(failures: number, fn?: ((failures: number) => void) | undefined): void;
|
|
21
|
+
};
|
|
22
|
+
consoleLog: (...data: any[]) => void;
|
|
23
|
+
color(type: string, str: string): string;
|
|
24
|
+
generateDiff(actual: string, expected: string): string;
|
|
25
|
+
list(failures: MochaType.Test[]): void;
|
|
26
|
+
useColors: boolean;
|
|
27
|
+
inlineDiffs: boolean;
|
|
28
|
+
readonly colors: MochaType.reporters.Base.ColorMap;
|
|
29
|
+
readonly symbols: MochaType.reporters.Base.SymbolMap;
|
|
30
|
+
readonly window: {
|
|
31
|
+
width: number;
|
|
32
|
+
};
|
|
33
|
+
cursor: typeof MochaType.reporters.Base.cursor;
|
|
34
|
+
};
|
|
35
|
+
export declare function browserSetup(mocha: BrowserMocha): void;
|
|
36
|
+
//# sourceMappingURL=mocha.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mocha.d.ts","sourceRoot":"","sources":["../../src/mocha.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,SAAS,MAAM,OAAO,CAAC;AAInC,OAAO,EAAwB,QAAQ,EAAE,MAAM,eAAe,CAAC;AAG/D,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,QAkE5C;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ;iBAM5D,KAAK,CAAC,MAAM;;;;;;;;;;;;iBA0EquiB,GAAG;;;;;;;;;;;;EA1B/wiB;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,YAAY,QAuB/C"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { FailureDetail } from "./failure-detail.js";
|
|
7
|
+
import { LoggerHooks } from "./mocks/logging.js";
|
|
8
|
+
import { TestOptions } from "./options.js";
|
|
9
|
+
import { ConsoleProxyReporter } from "./reporter.js";
|
|
10
|
+
import { wtf } from "./util/wtf.js";
|
|
11
|
+
function generalSetup(mocha) {
|
|
12
|
+
const Base = mocha.constructor.reporters.Base;
|
|
13
|
+
Base.colors["diff added inline"] = "97;42;48;5;22";
|
|
14
|
+
Base.colors["diff removed inline"] = "97;41;48;5;52";
|
|
15
|
+
async function onlyLogFailure(fn) {
|
|
16
|
+
if (!MatterHooks) {
|
|
17
|
+
throw new Error("Matter hooks not loaded");
|
|
18
|
+
}
|
|
19
|
+
const logs = Array();
|
|
20
|
+
const existingSink = MatterHooks.loggerSink;
|
|
21
|
+
try {
|
|
22
|
+
MatterHooks.loggerSink = (_, message) => {
|
|
23
|
+
logs.push(message);
|
|
24
|
+
};
|
|
25
|
+
return await fn();
|
|
26
|
+
} catch (e) {
|
|
27
|
+
process.stdout.write(logs.join("\n"));
|
|
28
|
+
throw e;
|
|
29
|
+
} finally {
|
|
30
|
+
MatterHooks.loggerSink = existingSink;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
function filterLogs(hook) {
|
|
34
|
+
const actual = mocha.suite[hook];
|
|
35
|
+
mocha.suite[hook] = function(fn) {
|
|
36
|
+
return actual.call(this, async function(...args) {
|
|
37
|
+
return await onlyLogFailure(() => fn.apply(this, args));
|
|
38
|
+
});
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
filterLogs("beforeAll");
|
|
42
|
+
filterLogs("afterAll");
|
|
43
|
+
filterLogs("beforeEach");
|
|
44
|
+
filterLogs("afterEach");
|
|
45
|
+
const actualBeforeAll = mocha.suite.beforeAll;
|
|
46
|
+
mocha.suite.beforeAll = function(...args) {
|
|
47
|
+
MockTime.reset();
|
|
48
|
+
return actualBeforeAll.apply(this, args);
|
|
49
|
+
};
|
|
50
|
+
mocha.suite.beforeEach(() => {
|
|
51
|
+
for (const hook of LoggerHooks.beforeEach) {
|
|
52
|
+
hook(mocha);
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
mocha.suite.afterEach(() => {
|
|
56
|
+
for (const hook of LoggerHooks.afterEach) {
|
|
57
|
+
hook(mocha);
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
FailureDetail.diff = Base.generateDiff.bind(Base);
|
|
61
|
+
}
|
|
62
|
+
function adaptReporter(Mocha2, title, reporter) {
|
|
63
|
+
const RUNNER = Mocha2.Runner.constants;
|
|
64
|
+
let logs = Array();
|
|
65
|
+
class MochaReporter extends Mocha2.reporters.Base {
|
|
66
|
+
constructor(runner) {
|
|
67
|
+
super(runner);
|
|
68
|
+
runner.once(RUNNER.EVENT_RUN_BEGIN, () => {
|
|
69
|
+
if (!MatterHooks) {
|
|
70
|
+
throw new Error("Matter hooks not loaded");
|
|
71
|
+
}
|
|
72
|
+
MatterHooks.loggerSink = (_, message) => {
|
|
73
|
+
logs.push(message);
|
|
74
|
+
};
|
|
75
|
+
reporter.beginRun(title, this.translatedStats);
|
|
76
|
+
});
|
|
77
|
+
runner.on(RUNNER.EVENT_SUITE_BEGIN, (suite) => {
|
|
78
|
+
reporter.beginSuite(suite.titlePath(), this.translatedStats);
|
|
79
|
+
});
|
|
80
|
+
runner.on(RUNNER.EVENT_TEST_BEGIN, (test) => {
|
|
81
|
+
logs = test.logs = [];
|
|
82
|
+
reporter.beginTest(test.title, this.translatedStats);
|
|
83
|
+
});
|
|
84
|
+
runner.on(RUNNER.EVENT_TEST_FAIL, (test, error) => {
|
|
85
|
+
const logs2 = test.logs;
|
|
86
|
+
reporter.failTest(test.title, FailureDetail(error, logs2));
|
|
87
|
+
wtf.dump();
|
|
88
|
+
});
|
|
89
|
+
runner.once(RUNNER.EVENT_RUN_END, () => {
|
|
90
|
+
if (!MatterHooks) {
|
|
91
|
+
throw new Error("Matter hooks not loaded");
|
|
92
|
+
}
|
|
93
|
+
MatterHooks.loggerSink = void 0;
|
|
94
|
+
reporter.endRun(this.translatedStats);
|
|
95
|
+
wtf.dump();
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
get translatedStats() {
|
|
99
|
+
return {
|
|
100
|
+
total: this.runner.total,
|
|
101
|
+
complete: this.stats.tests,
|
|
102
|
+
failures: this.stats.failures
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return MochaReporter;
|
|
107
|
+
}
|
|
108
|
+
function browserSetup(mocha) {
|
|
109
|
+
mocha.setup("bdd");
|
|
110
|
+
globalThis.MatterTest = {
|
|
111
|
+
// Starts Mocha (called by clicking link)
|
|
112
|
+
start: () => {
|
|
113
|
+
const root = document.querySelector("#mocha");
|
|
114
|
+
if (root) {
|
|
115
|
+
root.innerHTML = "";
|
|
116
|
+
}
|
|
117
|
+
return mocha.run();
|
|
118
|
+
},
|
|
119
|
+
// Start Mocha, proxying reporting through console to Playwright and completing once Mocha has finished
|
|
120
|
+
auto: async function(options) {
|
|
121
|
+
TestOptions.apply(mocha, options);
|
|
122
|
+
mocha.reporter(adaptReporter(Mocha, "Web", new ConsoleProxyReporter()));
|
|
123
|
+
return new Promise((accept) => {
|
|
124
|
+
const runner = this.start();
|
|
125
|
+
runner.on("end", accept);
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
export {
|
|
131
|
+
adaptReporter,
|
|
132
|
+
browserSetup,
|
|
133
|
+
generalSetup
|
|
134
|
+
};
|
|
135
|
+
//# sourceMappingURL=mocha.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/mocha.ts"],
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAQA,SAAS,qBAAqB;AAC9B,SAAS,mBAAmB;AAC5B,SAAS,mBAAmB;AAC5B,SAAS,4BAAsC;AAC/C,SAAS,WAAW;AAEb,SAAS,aAAa,OAAkB;AAC3C,QAAM,OAAQ,MAAM,YAAiC,UAAU;AAG/D,OAAK,OAAO,mBAAmB,IAAI;AAGnC,OAAK,OAAO,qBAAqB,IAAI;AAIrC,iBAAe,eAAe,IAAe;AACzC,QAAI,CAAC,aAAa;AACd,YAAM,IAAI,MAAM,yBAAyB;AAAA,IAC7C;AAEA,UAAM,OAAO,MAAc;AAC3B,UAAM,eAAe,YAAY;AACjC,QAAI;AACA,kBAAY,aAAa,CAAC,GAAG,YAAY;AACrC,aAAK,KAAK,OAAO;AAAA,MACrB;AACA,aAAO,MAAM,GAAG;AAAA,IACpB,SAAS,GAAG;AACR,cAAQ,OAAO,MAAM,KAAK,KAAK,IAAI,CAAC;AACpC,YAAM;AAAA,IACV,UAAE;AACE,kBAAY,aAAa;AAAA,IAC7B;AAAA,EACJ;AAEA,WAAS,WAAW,MAA6D;AAC7E,UAAM,SAAS,MAAM,MAAM,IAAI;AAC/B,UAAM,MAAM,IAAI,IAAI,SAAqB,IAAgB;AACrD,aAAO,OAAO,KAAK,MAAM,kBAA8B,MAAW;AAC9D,eAAO,MAAM,eAAe,MAAM,GAAG,MAAM,MAAM,IAAI,CAAC;AAAA,MAC1D,CAAC;AAAA,IACL;AAAA,EACJ;AAEA,aAAW,WAAW;AACtB,aAAW,UAAU;AACrB,aAAW,YAAY;AACvB,aAAW,WAAW;AAItB,QAAM,kBAAkB,MAAM,MAAM;AACpC,QAAM,MAAM,YAAY,YAAkC,MAAW;AACjE,aAAS,MAAM;AACf,WAAO,gBAAgB,MAAM,MAAM,IAAI;AAAA,EAC3C;AAEA,QAAM,MAAM,WAAW,MAAM;AACzB,eAAW,QAAQ,YAAY,YAAY;AACvC,WAAK,KAAK;AAAA,IACd;AAAA,EACJ,CAAC;AAED,QAAM,MAAM,UAAU,MAAM;AACxB,eAAW,QAAQ,YAAY,WAAW;AACtC,WAAK,KAAK;AAAA,IACd;AAAA,EACJ,CAAC;AAED,gBAAc,OAAO,KAAK,aAAa,KAAK,IAAI;AACpD;AAEO,SAAS,cAAcA,QAAyB,OAAe,UAAoB;AACtF,QAAM,SAASA,OAAM,OAAO;AAE5B,MAAI,OAAO,MAAc;AAAA,EAEzB,MAAM,sBAAsBA,OAAM,UAAU,KAAK;AAAA,IAC7C,YAAY,QAAsB;AAC9B,YAAM,MAAM;AAEZ,aAAO,KAAK,OAAO,iBAAiB,MAAM;AACtC,YAAI,CAAC,aAAa;AACd,gBAAM,IAAI,MAAM,yBAAyB;AAAA,QAC7C;AACA,oBAAY,aAAa,CAAC,GAAG,YAAY;AACrC,eAAK,KAAK,OAAO;AAAA,QACrB;AACA,iBAAS,SAAS,OAAO,KAAK,eAAe;AAAA,MACjD,CAAC;AAED,aAAO,GAAG,OAAO,mBAAmB,WAAS;AACzC,iBAAS,WAAW,MAAM,UAAU,GAAG,KAAK,eAAe;AAAA,MAC/D,CAAC;AAED,aAAO,GAAG,OAAO,kBAAkB,UAAQ;AACvC,eAAQ,KAAa,OAAO,CAAC;AAC7B,iBAAS,UAAU,KAAK,OAAO,KAAK,eAAe;AAAA,MACvD,CAAC;AAED,aAAO,GAAG,OAAO,iBAAiB,CAAC,MAAM,UAAU;AAC/C,cAAMC,QAAQ,KAAa;AAC3B,iBAAS,SAAS,KAAK,OAAO,cAAc,OAAOA,KAAI,CAAC;AACxD,YAAI,KAAK;AAAA,MACb,CAAC;AAED,aAAO,KAAK,OAAO,eAAe,MAAM;AACpC,YAAI,CAAC,aAAa;AACd,gBAAM,IAAI,MAAM,yBAAyB;AAAA,QAC7C;AACA,oBAAY,aAAa;AACzB,iBAAS,OAAO,KAAK,eAAe;AACpC,YAAI,KAAK;AAAA,MACb,CAAC;AAAA,IACL;AAAA,IAEA,IAAI,kBAAkB;AAClB,aAAO;AAAA,QACH,OAAO,KAAK,OAAO;AAAA,QACnB,UAAU,KAAK,MAAM;AAAA,QACrB,UAAU,KAAK,MAAM;AAAA,MACzB;AAAA,IACJ;AAAA,EACJ;AAEA,SAAO;AACX;AAEO,SAAS,aAAa,OAAqB;AAC9C,QAAM,MAAM,KAAK;AAEjB,EAAC,WAAmB,aAAa;AAAA;AAAA,IAE7B,OAAO,MAAM;AACT,YAAM,OAAO,SAAS,cAAc,QAAQ;AAC5C,UAAI,MAAM;AACN,aAAK,YAAY;AAAA,MACrB;AACA,aAAO,MAAM,IAAI;AAAA,IACrB;AAAA;AAAA,IAGA,MAAM,eAAgB,SAAsB;AACxC,kBAAY,MAAM,OAAO,OAAO;AAChC,YAAM,SAAS,cAAc,OAAO,OAAO,IAAI,qBAAqB,CAAC,CAAC;AACtE,aAAO,IAAI,QAAc,YAAU;AAC/B,cAAM,SAAS,KAAK,MAAM;AAC1B,eAAO,GAAG,OAAO,MAAM;AAAA,MAC3B,CAAC;AAAA,IACL;AAAA,EACJ;AACJ;",
|
|
5
|
+
"names": ["Mocha", "logs"]
|
|
6
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
// This file configures mocha for "buildless" dev execution. May be useful for running tests in IDE with Mocha support.
|
|
8
|
+
// Utilize by importing into .mocharc.cjs as a sibling of package.json in the package to test
|
|
9
|
+
|
|
10
|
+
// Required for Node < 19 (see node-shims.ts)
|
|
11
|
+
const webcrypto = require("node:crypto").webcrypto;
|
|
12
|
+
if (globalThis.crypto === undefined) {
|
|
13
|
+
Object.assign(globalThis, { crypto: webcrypto });
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
function mocharc(format = "cjs") {
|
|
17
|
+
const { resolve } = require("path");
|
|
18
|
+
const cli = require("mocha/lib/cli/cli");
|
|
19
|
+
const listSupportFiles = require("./util/files.js").listSupportFiles;
|
|
20
|
+
|
|
21
|
+
const TOOLS = resolve(__dirname, "../../../tools");
|
|
22
|
+
|
|
23
|
+
const testJs = `build/${format}/test`;
|
|
24
|
+
const defaultSpec = `${testJs}/**/*Test.js`;
|
|
25
|
+
|
|
26
|
+
// Build. Ideally we'd import build code but it's asynchronous and mocharc isn't. So instead build in a separate
|
|
27
|
+
// process
|
|
28
|
+
const spawnSync = require("child_process").spawnSync;
|
|
29
|
+
const result = spawnSync(`${TOOLS}/bin/build.js`, [format], { stdio: "inherit" });
|
|
30
|
+
if (result.error) {
|
|
31
|
+
console.error(result.error);
|
|
32
|
+
process.exit(-1);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// Hook Mocha so we can futz with args
|
|
36
|
+
const main = cli.main;
|
|
37
|
+
cli.main = function (argv, args) {
|
|
38
|
+
const spec = args._;
|
|
39
|
+
|
|
40
|
+
// Remove wildcard test selection if there's an input file
|
|
41
|
+
if (spec.length > 1 && spec[spec.length - 1] === defaultSpec) {
|
|
42
|
+
spec.length = spec.length - 1;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// Map input files to the compiled test
|
|
46
|
+
for (let i = 0; i < spec.length; i++) {
|
|
47
|
+
let path = spec[i];
|
|
48
|
+
|
|
49
|
+
// Convenience - map src/ file to test equivalent
|
|
50
|
+
path = path.replace(/src\/(.*)(\.[jt]s)/, "test/$1Test$2");
|
|
51
|
+
|
|
52
|
+
// Map ts files to compiled equivalent
|
|
53
|
+
path = path.replace(/test\/(.*)\.ts/, `${testJs}/$1.js`);
|
|
54
|
+
|
|
55
|
+
spec[i] = path;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
main.call(this, argv, args);
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
return {
|
|
62
|
+
inlineDiffs: true,
|
|
63
|
+
file: listSupportFiles(format),
|
|
64
|
+
spec: [defaultSpec],
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
module.exports.mocharc = mocharc;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../../src/mocks/crypto.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAwDH,wBAAgB,WAAW,CAAC,MAAM,EAAE,GAAG,QAStC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
const subtle = globalThis.crypto.subtle;
|
|
7
|
+
const TheCrypto = {
|
|
8
|
+
getRandomData: (length) => {
|
|
9
|
+
const bytes = new Uint8Array(length);
|
|
10
|
+
return bytes;
|
|
11
|
+
},
|
|
12
|
+
async pbkdf2(secret, salt, iteration, keyLength) {
|
|
13
|
+
const key = await subtle.importKey("raw", secret, "PBKDF2", false, ["deriveBits"]);
|
|
14
|
+
const bits = await subtle.deriveBits(
|
|
15
|
+
{
|
|
16
|
+
name: "PBKDF2",
|
|
17
|
+
hash: "SHA-256",
|
|
18
|
+
salt,
|
|
19
|
+
iterations: iteration
|
|
20
|
+
},
|
|
21
|
+
key,
|
|
22
|
+
keyLength * 8
|
|
23
|
+
);
|
|
24
|
+
return new Uint8Array(bits);
|
|
25
|
+
},
|
|
26
|
+
async hkdf(secret, salt, info, length = 16) {
|
|
27
|
+
const key = await subtle.importKey("raw", secret, "HKDF", false, ["deriveBits"]);
|
|
28
|
+
return new Uint8Array(
|
|
29
|
+
await subtle.deriveBits(
|
|
30
|
+
{
|
|
31
|
+
name: "HKDF",
|
|
32
|
+
hash: "SHA-256",
|
|
33
|
+
salt,
|
|
34
|
+
info
|
|
35
|
+
},
|
|
36
|
+
key,
|
|
37
|
+
length
|
|
38
|
+
)
|
|
39
|
+
);
|
|
40
|
+
},
|
|
41
|
+
verify() {
|
|
42
|
+
return;
|
|
43
|
+
},
|
|
44
|
+
mock: true
|
|
45
|
+
};
|
|
46
|
+
function cryptoSetup(Crypto) {
|
|
47
|
+
try {
|
|
48
|
+
Crypto.get();
|
|
49
|
+
} catch (e) {
|
|
50
|
+
if (e.constructor.name !== "NoProviderError") {
|
|
51
|
+
throw e;
|
|
52
|
+
}
|
|
53
|
+
Crypto.get = () => TheCrypto;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
export {
|
|
57
|
+
cryptoSetup
|
|
58
|
+
};
|
|
59
|
+
//# sourceMappingURL=crypto.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/mocks/crypto.ts"],
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,MAAM,SAAS,WAAW,OAAO;AAOjC,MAAM,YAAY;AAAA,EACd,eAAe,CAAC,WAAmB;AAE/B,UAAM,QAAQ,IAAI,WAAW,MAAM;AAEnC,WAAO;AAAA,EACX;AAAA,EAEA,MAAM,OAAO,QAAoB,MAAkB,WAAmB,WAAmB;AACrF,UAAM,MAAM,MAAM,OAAO,UAAU,OAAO,QAAQ,UAAU,OAAO,CAAC,YAAY,CAAC;AACjF,UAAM,OAAO,MAAM,OAAO;AAAA,MACtB;AAAA,QACI,MAAM;AAAA,QACN,MAAM;AAAA,QACN;AAAA,QACA,YAAY;AAAA,MAChB;AAAA,MACA;AAAA,MACA,YAAY;AAAA,IAChB;AACA,WAAO,IAAI,WAAW,IAAI;AAAA,EAC9B;AAAA,EAEA,MAAM,KAAK,QAAoB,MAAkB,MAAkB,SAAiB,IAAI;AACpF,UAAM,MAAM,MAAM,OAAO,UAAU,OAAO,QAAQ,QAAQ,OAAO,CAAC,YAAY,CAAC;AAC/E,WAAO,IAAI;AAAA,MACP,MAAM,OAAO;AAAA,QACT;AAAA,UACI,MAAM;AAAA,UACN,MAAM;AAAA,UACN;AAAA,UACA;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,SAAS;AAEL;AAAA,EACJ;AAAA,EAEA,MAAM;AACV;AAEO,SAAS,YAAY,QAAa;AACrC,MAAI;AACA,WAAO,IAAI;AAAA,EACf,SAAS,GAAG;AACR,QAAK,EAAY,YAAY,SAAS,mBAAmB;AACrD,YAAM;AAAA,IACV;AACA,WAAO,MAAM,MAAM;AAAA,EACvB;AACJ;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../../../src/mocks/environment.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mocks/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,kBAAkB,CAAC;AAC1B,OAAO,cAAc,CAAC;AACtB,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
interface LoggerLike {
|
|
7
|
+
format: string;
|
|
8
|
+
log(level: number, message: string): void;
|
|
9
|
+
}
|
|
10
|
+
export interface MockLogger {
|
|
11
|
+
emitAll: boolean;
|
|
12
|
+
injectExternalMessage: (source: string, text: string) => void;
|
|
13
|
+
}
|
|
14
|
+
export declare const TheMockLogger: MockLogger;
|
|
15
|
+
/**
|
|
16
|
+
* These functions are invoked by beforeEach/afterEach handlers in generalSetup for Mocha.
|
|
17
|
+
*
|
|
18
|
+
* We place them in an array here rather than calling the global hook functions so that load order doesn't matter. We
|
|
19
|
+
* use an array so that if multiple Logger classes are created (e.g. one for CJS and one for ESM) we don't have to worry
|
|
20
|
+
* about which logger is doing the logging.
|
|
21
|
+
*/
|
|
22
|
+
export declare const LoggerHooks: {
|
|
23
|
+
beforeEach: ((mocha: Mocha) => void)[];
|
|
24
|
+
afterEach: ((mocha: Mocha) => void)[];
|
|
25
|
+
};
|
|
26
|
+
export declare function loggerSetup(Logger: LoggerLike): void;
|
|
27
|
+
export {};
|
|
28
|
+
//# sourceMappingURL=logging.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logging.d.ts","sourceRoot":"","sources":["../../../src/mocks/logging.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,UAAU,UAAU;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7C;AAED,MAAM,WAAW,UAAU;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,qBAAqB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACjE;AAED,eAAO,MAAM,aAAa,EAAE,UAG3B,CAAC;AAMF;;;;;;GAMG;AACH,eAAO,MAAM,WAAW;yBACM,KAAK,KAAK,IAAI;wBACf,KAAK,KAAK,IAAI;CAC1C,CAAC;AAEF,wBAAgB,WAAW,CAAC,MAAM,EAAE,UAAU,QA2D7C"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import colors from "ansi-colors";
|
|
7
|
+
const TheMockLogger = {
|
|
8
|
+
emitAll: false,
|
|
9
|
+
injectExternalMessage: (source, text) => console.log(formatExternalMessage(source, text))
|
|
10
|
+
};
|
|
11
|
+
function formatExternalMessage(source, text) {
|
|
12
|
+
return ` ${colors.bgCyan.black.bold(` ${source} `)} ${colors.dim(text)}`;
|
|
13
|
+
}
|
|
14
|
+
const LoggerHooks = {
|
|
15
|
+
beforeEach: Array(),
|
|
16
|
+
afterEach: Array()
|
|
17
|
+
};
|
|
18
|
+
function loggerSetup(Logger) {
|
|
19
|
+
Logger.format = "ansi";
|
|
20
|
+
let messageBuffer;
|
|
21
|
+
const defaultLog = Logger.log;
|
|
22
|
+
function passMessage(args) {
|
|
23
|
+
defaultLog.apply(Logger, args);
|
|
24
|
+
}
|
|
25
|
+
function interceptingLogger(...args) {
|
|
26
|
+
let emitAll = TheMockLogger.emitAll;
|
|
27
|
+
if (MatterHooks?.loggerSink) {
|
|
28
|
+
MatterHooks.loggerSink(...args);
|
|
29
|
+
} else if (!emitAll) {
|
|
30
|
+
if (messageBuffer) {
|
|
31
|
+
messageBuffer.push(args);
|
|
32
|
+
} else {
|
|
33
|
+
emitAll = true;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
if (emitAll) {
|
|
37
|
+
passMessage(args);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
TheMockLogger.injectExternalMessage = (source, text) => interceptingLogger(0, formatExternalMessage(source, text));
|
|
41
|
+
Logger.log = interceptingLogger;
|
|
42
|
+
LoggerHooks.beforeEach.push(function() {
|
|
43
|
+
if (!TheMockLogger.emitAll) {
|
|
44
|
+
messageBuffer = [];
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
LoggerHooks.afterEach.push((mocha) => {
|
|
48
|
+
if (messageBuffer?.length) {
|
|
49
|
+
if (mocha.suite.ctx.currentTest?.isFailed()) {
|
|
50
|
+
for (const args of messageBuffer) {
|
|
51
|
+
passMessage(args);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
messageBuffer = void 0;
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
export {
|
|
59
|
+
LoggerHooks,
|
|
60
|
+
TheMockLogger,
|
|
61
|
+
loggerSetup
|
|
62
|
+
};
|
|
63
|
+
//# sourceMappingURL=logging.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/mocks/logging.ts"],
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,OAAO,YAAY;AAYZ,MAAM,gBAA4B;AAAA,EACrC,SAAS;AAAA,EACT,uBAAuB,CAAC,QAAgB,SAAiB,QAAQ,IAAI,sBAAsB,QAAQ,IAAI,CAAC;AAC5G;AAEA,SAAS,sBAAsB,QAAgB,MAAc;AACzD,SAAO,OAAO,OAAO,OAAO,MAAM,KAAK,IAAI,MAAM,GAAG,CAAC,IAAI,OAAO,IAAI,IAAI,CAAC;AAC7E;AASO,MAAM,cAAc;AAAA,EACvB,YAAY,MAA8B;AAAA,EAC1C,WAAW,MAA8B;AAC7C;AAEO,SAAS,YAAY,QAAoB;AAU5C,SAAO,SAAS;AAEhB,MAAI;AAEJ,QAAM,aAAa,OAAO;AAE1B,WAAS,YAAY,MAAwB;AACzC,eAAW,MAAM,QAAQ,IAAI;AAAA,EACjC;AAEA,WAAS,sBAAsB,MAAwB;AACnD,QAAI,UAAU,cAAc;AAC5B,QAAI,aAAa,YAAY;AACzB,kBAAY,WAAW,GAAG,IAAI;AAAA,IAClC,WAAW,CAAC,SAAS;AACjB,UAAI,eAAe;AACf,sBAAc,KAAK,IAAI;AAAA,MAC3B,OAAO;AACH,kBAAU;AAAA,MACd;AAAA,IACJ;AAEA,QAAI,SAAS;AACT,kBAAY,IAAI;AAAA,IACpB;AAAA,EACJ;AAEA,gBAAc,wBAAwB,CAAC,QAAQ,SAAS,mBAAmB,GAAG,sBAAsB,QAAQ,IAAI,CAAC;AAEjH,SAAO,MAAM;AAGb,cAAY,WAAW,KAAK,WAAY;AACpC,QAAI,CAAC,cAAc,SAAS;AACxB,sBAAgB,CAAC;AAAA,IACrB;AAAA,EACJ,CAAC;AAGD,cAAY,UAAU,KAAK,WAAS;AAChC,QAAI,eAAe,QAAQ;AACvB,UAAI,MAAM,MAAM,IAAI,aAAa,SAAS,GAAG;AACzC,mBAAW,QAAQ,eAAe;AAC9B,sBAAY,IAAI;AAAA,QACpB;AAAA,MACJ;AACA,sBAAgB;AAAA,IACpB;AAAA,EACJ,CAAC;AACL;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
type TimerCallback = () => any;
|
|
7
|
+
type MockTimeLike = typeof MockTime;
|
|
8
|
+
export interface MockTime extends MockTimeLike {
|
|
9
|
+
}
|
|
10
|
+
declare class MockTimer {
|
|
11
|
+
private readonly mockTime;
|
|
12
|
+
private readonly durationMs;
|
|
13
|
+
name: string;
|
|
14
|
+
systemId: number;
|
|
15
|
+
intervalMs: number;
|
|
16
|
+
isPeriodic: boolean;
|
|
17
|
+
isRunning: boolean;
|
|
18
|
+
private readonly callback;
|
|
19
|
+
constructor(mockTime: MockTime, durationMs: number, callback: TimerCallback);
|
|
20
|
+
start(): this;
|
|
21
|
+
stop(): this;
|
|
22
|
+
}
|
|
23
|
+
type InterceptResult<T> = T extends Promise<T> ? {
|
|
24
|
+
resolve: Awaited<T>;
|
|
25
|
+
reject?: undefined;
|
|
26
|
+
} | {
|
|
27
|
+
resolve?: undefined;
|
|
28
|
+
reject: {};
|
|
29
|
+
} : {
|
|
30
|
+
resolve: T;
|
|
31
|
+
reject?: undefined;
|
|
32
|
+
} | {
|
|
33
|
+
resolve?: void;
|
|
34
|
+
reject: {};
|
|
35
|
+
};
|
|
36
|
+
export declare const MockTime: {
|
|
37
|
+
readonly activeImplementation: unknown;
|
|
38
|
+
disable(): void;
|
|
39
|
+
enable(): void;
|
|
40
|
+
reset(time?: number): void;
|
|
41
|
+
now(): Date;
|
|
42
|
+
nowMs(): number;
|
|
43
|
+
getTimer(_name: string, durationMs: number, callback: TimerCallback): MockTimer;
|
|
44
|
+
getPeriodicTimer(_name: string, intervalMs: number, callback: TimerCallback): MockTimer;
|
|
45
|
+
/**
|
|
46
|
+
* Resolve a promise with time dependency.
|
|
47
|
+
*
|
|
48
|
+
* Moves time forward until the promise resolves.
|
|
49
|
+
*/
|
|
50
|
+
resolve<T>(promise: PromiseLike<T>): Promise<T>;
|
|
51
|
+
/**
|
|
52
|
+
* Move time forward. Runs tasks scheduled during this interval.
|
|
53
|
+
*/
|
|
54
|
+
advance(ms: number): Promise<void>;
|
|
55
|
+
/**
|
|
56
|
+
* Yield to scheduled microtasks. This means that all code paths waiting
|
|
57
|
+
* on resolved promises (including await) will proceed before this method
|
|
58
|
+
* returns.
|
|
59
|
+
*/
|
|
60
|
+
yield(): Promise<void>;
|
|
61
|
+
/**
|
|
62
|
+
* Due to its implementation, an older version of yield() would actually
|
|
63
|
+
* yield to microtasks three times. Our tests then depended on this
|
|
64
|
+
* functionality -- one yield could trigger up to three nested awaits.
|
|
65
|
+
*
|
|
66
|
+
* To make this clear, the version of yield() that emulates old behavior
|
|
67
|
+
* is called "yield3".
|
|
68
|
+
*/
|
|
69
|
+
yield3(): Promise<void>;
|
|
70
|
+
/**
|
|
71
|
+
* Hook a method and invoke a callback just before the method completes.
|
|
72
|
+
* Unhooks after completion.
|
|
73
|
+
*
|
|
74
|
+
* Handles both synchronous and asynchronous methods. The interceptor
|
|
75
|
+
* should match the async-ness of the intercepted method.
|
|
76
|
+
*
|
|
77
|
+
* The interceptor can optionally access and/or replace the resolve/reject
|
|
78
|
+
* value.
|
|
79
|
+
*/
|
|
80
|
+
interceptOnce<NameT extends string, ReturnT, ObjT extends { [N in NameT]: (...args: any) => ReturnT; }>(obj: ObjT, method: NameT, interceptor: (result: InterceptResult<ReturnT>) => void | InterceptResult<ReturnT> | Promise<void> | Promise<InterceptResult<ReturnT>>): void;
|
|
81
|
+
callbackAtTime(atMs: number, callback: TimerCallback): void;
|
|
82
|
+
removeCallback(callbackToRemove: TimerCallback): void;
|
|
83
|
+
};
|
|
84
|
+
export declare function timeSetup(Time: {
|
|
85
|
+
get(): unknown;
|
|
86
|
+
}): void;
|
|
87
|
+
export {};
|
|
88
|
+
//# sourceMappingURL=time.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../../../src/mocks/time.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,KAAK,aAAa,GAAG,MAAM,GAAG,CAAC;AAE/B,KAAK,YAAY,GAAG,OAAO,QAAQ,CAAC;AACpC,MAAM,WAAW,QAAS,SAAQ,YAAY;CAAG;AAGjD,cAAM,SAAS;IAUP,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAV/B,IAAI,SAAU;IACd,QAAQ,SAAK;IACb,UAAU,SAAK;IACf,UAAU,UAAS;IAEnB,SAAS,UAAS;IAClB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgB;gBAGpB,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,MAAM,EACnC,QAAQ,EAAE,aAAa;IAY3B,KAAK;IAML,IAAI;CAKP;AAYD,KAAK,eAAe,CAAC,CAAC,IAClB,CAAC,SAAS,OAAO,CAAC,CAAC,CAAC,GACd;IAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAAC,MAAM,CAAC,EAAE,SAAS,CAAA;CAAE,GAAG;IAAE,OAAO,CAAC,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,EAAE,CAAA;CAAE,GACjF;IAAE,OAAO,EAAE,CAAC,CAAC;IAAC,MAAM,CAAC,EAAE,SAAS,CAAA;CAAE,GAAG;IAAE,OAAO,CAAC,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,EAAE,CAAA;CAAE,CAAC;AAY9E,eAAO,MAAM,QAAQ;;;;;WAuBV,IAAI;;oBAQK,MAAM,cAAc,MAAM,YAAY,aAAa,GAAG,SAAS;4BAIvD,MAAM,cAAc,MAAM,YAAY,aAAa,GAAG,SAAS;IAIvF;;;;OAIG;YACW,CAAC,WAAW,WAAW,CAAC,CAAC,CAAC;IAwDxC;;OAEG;gBACe,MAAM;IAexB;;;;OAIG;;IAKH;;;;;;;OAOG;;IAOH;;;;;;;;;OASG;kBACW,KAAK,SAAS,MAAM,EAAE,OAAO,EAAE,IAAI,SAAS,GAAG,CAAU,IAAL,KAAK,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,OAAO,GAAE,OAC5F,IAAI,UACD,KAAK,eACA,CACT,MAAM,EAAE,eAAe,CAAC,OAAO,CAAC,KAC/B,IAAI,GAAG,eAAe,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;yBA2CvE,MAAM,YAAY,aAAa;qCAKnB,aAAa;CAKjD,CAAC;AAIF,wBAAgB,SAAS,CAAC,IAAI,EAAE;IAAE,GAAG,IAAI,OAAO,CAAA;CAAE,QAKjD"}
|