@tutao/otest 3.115.2
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/dist/Assertion.d.ts +31 -0
- package/dist/Assertion.js +177 -0
- package/dist/TestResult.d.ts +25 -0
- package/dist/TestResult.js +1 -0
- package/dist/fancy.d.ts +12 -0
- package/dist/fancy.js +17 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +2 -0
- package/dist/otest.d.ts +33 -0
- package/dist/otest.js +200 -0
- package/dist/tsbuildinfo +1 -0
- package/package.json +32 -0
- package/tsconfig.json +14 -0
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { TestResult } from "./TestResult.js";
|
|
2
|
+
export type AssertionDescriber = (description: string) => void;
|
|
3
|
+
interface Class<T> {
|
|
4
|
+
new (...args: any[]): T;
|
|
5
|
+
}
|
|
6
|
+
export declare class Assertion<T> {
|
|
7
|
+
private readonly actual;
|
|
8
|
+
private readonly testResult;
|
|
9
|
+
constructor(actual: T, testResult: TestResult);
|
|
10
|
+
deepEquals(expected: T): AssertionDescriber;
|
|
11
|
+
equals(expected: T | null | undefined): AssertionDescriber;
|
|
12
|
+
notDeepEquals(value: T): AssertionDescriber;
|
|
13
|
+
notEquals(value: T | null | undefined): AssertionDescriber;
|
|
14
|
+
satisfies(check: (value: T) => {
|
|
15
|
+
pass: boolean;
|
|
16
|
+
message: string;
|
|
17
|
+
}): (userMessage: string) => void;
|
|
18
|
+
asyncSatisfies(check: (value: T) => Promise<{
|
|
19
|
+
pass: boolean;
|
|
20
|
+
message: string;
|
|
21
|
+
}>): Promise<(userMessage: string) => void>;
|
|
22
|
+
notSatisfies(check: (value: T) => {
|
|
23
|
+
pass: boolean;
|
|
24
|
+
message: string;
|
|
25
|
+
}): (userMessage: string) => void;
|
|
26
|
+
throws(errorDescription: string | ErrorConstructor | Class<any>): AssertionDescriber;
|
|
27
|
+
asyncThrows(errorDescription: string | ErrorConstructor | Class<any>): Promise<AssertionDescriber>;
|
|
28
|
+
private addError;
|
|
29
|
+
private errorName;
|
|
30
|
+
}
|
|
31
|
+
export {};
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
const noop = () => { };
|
|
2
|
+
class AssertionError extends Error {
|
|
3
|
+
}
|
|
4
|
+
function xor(a, b) {
|
|
5
|
+
return (a && !b) || (b && !a);
|
|
6
|
+
}
|
|
7
|
+
function isArguments(a) {
|
|
8
|
+
if ("callee" in a) {
|
|
9
|
+
for (const i in a)
|
|
10
|
+
if (i === "callee")
|
|
11
|
+
return false;
|
|
12
|
+
return true;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
function errorMatchesDescription(e, errorDescription) {
|
|
16
|
+
if (e == null)
|
|
17
|
+
return false;
|
|
18
|
+
// make ts shut up, we know what we are doing here, we are ✨ professionals ✨ here
|
|
19
|
+
const erased = e;
|
|
20
|
+
return ((typeof errorDescription === "string" && typeof erased.message === "string" && erased.message === errorDescription) ||
|
|
21
|
+
e instanceof errorDescription);
|
|
22
|
+
}
|
|
23
|
+
var asString;
|
|
24
|
+
if (typeof process !== "undefined") {
|
|
25
|
+
const { inspect } = await import("node:util");
|
|
26
|
+
asString = function (thing) {
|
|
27
|
+
return inspect(thing);
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
asString = function (thing) {
|
|
32
|
+
return JSON.stringify(thing);
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
export class Assertion {
|
|
36
|
+
actual;
|
|
37
|
+
testResult;
|
|
38
|
+
constructor(actual, testResult) {
|
|
39
|
+
this.actual = actual;
|
|
40
|
+
this.testResult = testResult;
|
|
41
|
+
}
|
|
42
|
+
deepEquals(expected) {
|
|
43
|
+
if (!deepEqual(this.actual, expected)) {
|
|
44
|
+
return this.addError(`expected "${asString(this.actual)}" to be deep equal to "${asString(expected)}"`);
|
|
45
|
+
}
|
|
46
|
+
return noop;
|
|
47
|
+
}
|
|
48
|
+
equals(expected) {
|
|
49
|
+
if (this.actual !== expected) {
|
|
50
|
+
return this.addError(`expected "${asString(this.actual)}" to be equal to "${asString(expected)}"`);
|
|
51
|
+
}
|
|
52
|
+
return noop;
|
|
53
|
+
}
|
|
54
|
+
notDeepEquals(value) {
|
|
55
|
+
if (deepEqual(this.actual, value)) {
|
|
56
|
+
return this.addError(`expected to "${asString(this.actual)}" NOT deep equal to "${asString(value)}"`);
|
|
57
|
+
}
|
|
58
|
+
return noop;
|
|
59
|
+
}
|
|
60
|
+
notEquals(value) {
|
|
61
|
+
if (this.actual === value) {
|
|
62
|
+
return this.addError(`expected "${asString(this.actual)}" to NOT be equal to "${asString(value)}"`);
|
|
63
|
+
}
|
|
64
|
+
return noop;
|
|
65
|
+
}
|
|
66
|
+
satisfies(check) {
|
|
67
|
+
const result = check(this.actual);
|
|
68
|
+
if (!result.pass) {
|
|
69
|
+
return this.addError(`expected "${asString(this.actual)}" to satisfy condition: "${result.message}"`);
|
|
70
|
+
}
|
|
71
|
+
return noop;
|
|
72
|
+
}
|
|
73
|
+
async asyncSatisfies(check) {
|
|
74
|
+
const result = await check(this.actual);
|
|
75
|
+
if (!result.pass) {
|
|
76
|
+
return this.addError(`expected "${asString(this.actual)}" to satisfy condition: "${result.message}"`);
|
|
77
|
+
}
|
|
78
|
+
return noop;
|
|
79
|
+
}
|
|
80
|
+
notSatisfies(check) {
|
|
81
|
+
const result = check(this.actual);
|
|
82
|
+
if (result.pass) {
|
|
83
|
+
return this.addError(`expected "${asString(this.actual)}" to NOT satisfy condition: "${result.message}"`);
|
|
84
|
+
}
|
|
85
|
+
return noop;
|
|
86
|
+
}
|
|
87
|
+
throws(errorDescription) {
|
|
88
|
+
if (typeof this.actual !== "function") {
|
|
89
|
+
throw new Error(`Value for throws() call is not a function! ${errorDescription}`);
|
|
90
|
+
}
|
|
91
|
+
try {
|
|
92
|
+
this.actual();
|
|
93
|
+
return this.addError(`Expected to be thrown: ${this.errorName(errorDescription)} but nothing was thrown`);
|
|
94
|
+
}
|
|
95
|
+
catch (e) {
|
|
96
|
+
if (errorMatchesDescription(e, errorDescription)) {
|
|
97
|
+
return noop;
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
return this.addError(`Expected to be thrown: ${this.errorName(errorDescription)} but instead was thrown: ${this.errorName(e)}`);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
async asyncThrows(errorDescription) {
|
|
105
|
+
if (typeof this.actual !== "function") {
|
|
106
|
+
throw new Error(`Value for throws() call is not a function! ${errorDescription}`);
|
|
107
|
+
}
|
|
108
|
+
try {
|
|
109
|
+
await this.actual();
|
|
110
|
+
return this.addError(`Expected to be thrown: ${this.errorName(errorDescription)} but nothing was thrown`);
|
|
111
|
+
}
|
|
112
|
+
catch (e) {
|
|
113
|
+
if (errorMatchesDescription(e, errorDescription)) {
|
|
114
|
+
return noop;
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
return this.addError(`Expected to be thrown: ${this.errorName(errorDescription)} but instead was thrown: ${this.errorName(e)}`);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
addError(assertionDescription) {
|
|
122
|
+
const testError = { error: new AssertionError(assertionDescription), userMessage: null };
|
|
123
|
+
this.testResult.errors.push(testError);
|
|
124
|
+
return (userMessage) => {
|
|
125
|
+
testError.userMessage = userMessage;
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
errorName(error) {
|
|
129
|
+
return typeof error === "string" ? error : typeof error === "function" ? error.name : String(error);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* modified deepEquals from ospec is only needed as long as we use custom classes (TypeRef) and Date is not properly handled
|
|
134
|
+
*/
|
|
135
|
+
function deepEqual(a, b) {
|
|
136
|
+
if (a === b)
|
|
137
|
+
return true;
|
|
138
|
+
if (xor(a === null, b === null) || xor(a === undefined, b === undefined))
|
|
139
|
+
return false;
|
|
140
|
+
if (typeof a === "object" && typeof b === "object") {
|
|
141
|
+
const aIsArgs = isArguments(a), bIsArgs = isArguments(b);
|
|
142
|
+
if (a.length === b.length && ((a instanceof Array && b instanceof Array) || (aIsArgs && bIsArgs))) {
|
|
143
|
+
const aKeys = Object.getOwnPropertyNames(a), bKeys = Object.getOwnPropertyNames(b);
|
|
144
|
+
if (aKeys.length !== bKeys.length)
|
|
145
|
+
return false;
|
|
146
|
+
for (let i = 0; i < aKeys.length; i++) {
|
|
147
|
+
if (!Object.hasOwn(b, aKeys[i]) || !deepEqual(a[aKeys[i]], b[aKeys[i]]))
|
|
148
|
+
return false;
|
|
149
|
+
}
|
|
150
|
+
return true;
|
|
151
|
+
}
|
|
152
|
+
if (a instanceof Date && b instanceof Date)
|
|
153
|
+
return a.getTime() === b.getTime();
|
|
154
|
+
if (a instanceof Object && b instanceof Object && !aIsArgs && !bIsArgs) {
|
|
155
|
+
for (let i in a) {
|
|
156
|
+
if (!(i in b) || !deepEqual(a[i], b[i]))
|
|
157
|
+
return false;
|
|
158
|
+
}
|
|
159
|
+
for (let i in b) {
|
|
160
|
+
if (!(i in a))
|
|
161
|
+
return false;
|
|
162
|
+
}
|
|
163
|
+
return true;
|
|
164
|
+
}
|
|
165
|
+
// @ts-ignore: we would need to include all @types/node for this to work or import it explicitly. Should probably be rewritten for all typed arrays.
|
|
166
|
+
if (typeof Buffer === "function" && a instanceof Buffer && b instanceof Buffer) {
|
|
167
|
+
for (let i = 0; i < a.length; i++) {
|
|
168
|
+
if (a[i] !== b[i])
|
|
169
|
+
return false;
|
|
170
|
+
}
|
|
171
|
+
return true;
|
|
172
|
+
}
|
|
173
|
+
if (a.valueOf() === b.valueOf())
|
|
174
|
+
return true;
|
|
175
|
+
}
|
|
176
|
+
return false;
|
|
177
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export interface TestError {
|
|
2
|
+
error: Error;
|
|
3
|
+
userMessage: string | null;
|
|
4
|
+
}
|
|
5
|
+
export interface TestResult {
|
|
6
|
+
name: string;
|
|
7
|
+
skipped: boolean;
|
|
8
|
+
errors: TestError[];
|
|
9
|
+
timeout: number | null;
|
|
10
|
+
}
|
|
11
|
+
export interface RunResult {
|
|
12
|
+
filter?: string | undefined;
|
|
13
|
+
passedTests: {
|
|
14
|
+
path: string[];
|
|
15
|
+
result: TestResult;
|
|
16
|
+
}[];
|
|
17
|
+
failingTests: {
|
|
18
|
+
path: string[];
|
|
19
|
+
result: TestResult;
|
|
20
|
+
}[];
|
|
21
|
+
skippedTests: {
|
|
22
|
+
path: string[];
|
|
23
|
+
result: TestResult;
|
|
24
|
+
}[];
|
|
25
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/fancy.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare const ansiSequences: Readonly<{
|
|
2
|
+
redFg: "\u001B[31m";
|
|
3
|
+
greenBg: "\u001B[42m";
|
|
4
|
+
redBg: "\u001B[41m";
|
|
5
|
+
yellowBg: "\u001B[43m";
|
|
6
|
+
reset: "\u001B[0m";
|
|
7
|
+
bold: "\u001B[0;1m";
|
|
8
|
+
faint: "\u001B[0;2m";
|
|
9
|
+
}>;
|
|
10
|
+
type CodeValues = typeof ansiSequences[keyof typeof ansiSequences];
|
|
11
|
+
export declare function fancy(text: string, code: CodeValues): string;
|
|
12
|
+
export {};
|
package/dist/fancy.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export const ansiSequences = Object.freeze({
|
|
2
|
+
redFg: "\x1b[31m",
|
|
3
|
+
greenBg: "\x1b[42m",
|
|
4
|
+
redBg: "\x1b[41m",
|
|
5
|
+
yellowBg: "\x1b[43m",
|
|
6
|
+
reset: "\x1b[0m",
|
|
7
|
+
bold: "\x1b[0;1m",
|
|
8
|
+
faint: "\x1b[0;2m",
|
|
9
|
+
});
|
|
10
|
+
export function fancy(text, code) {
|
|
11
|
+
if (typeof process !== "undefined" && process.stdout.isTTY) {
|
|
12
|
+
return `${code}${text}${ansiSequences.reset}`;
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
return text;
|
|
16
|
+
}
|
|
17
|
+
}
|
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
package/dist/otest.d.ts
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { Assertion } from "./Assertion.js";
|
|
2
|
+
import { RunResult, TestResult } from "./TestResult.js";
|
|
3
|
+
declare class OTestmpl {
|
|
4
|
+
private static readonly DEFAULT_TIMEOUT_MS;
|
|
5
|
+
private taskTree;
|
|
6
|
+
private currentSpec;
|
|
7
|
+
currentTest: TestResult | null;
|
|
8
|
+
spec(name: string, definition: () => void): void;
|
|
9
|
+
test(name: string, task: (() => Promise<void>) | (() => void)): void;
|
|
10
|
+
check<T>(value: T): Assertion<T>;
|
|
11
|
+
before(task: () => Promise<void> | void): void;
|
|
12
|
+
after(task: () => Promise<void> | void): void;
|
|
13
|
+
beforeEach(task: () => Promise<void> | void): void;
|
|
14
|
+
afterEach(task: () => Promise<void> | void): void;
|
|
15
|
+
run({ filter }?: {
|
|
16
|
+
filter?: string;
|
|
17
|
+
}): Promise<RunResult>;
|
|
18
|
+
private runSpec;
|
|
19
|
+
printReport(result: RunResult): void;
|
|
20
|
+
terminateProcess(result: RunResult): void;
|
|
21
|
+
runTest(test: Test): Promise<TestResult>;
|
|
22
|
+
timeout(ms: number): void;
|
|
23
|
+
}
|
|
24
|
+
interface Test {
|
|
25
|
+
name: string;
|
|
26
|
+
task(): Promise<void> | void;
|
|
27
|
+
}
|
|
28
|
+
export type CallableOTest = OTestmpl & {
|
|
29
|
+
(name: string, definition: () => Promise<void> | void): void;
|
|
30
|
+
<T>(actual: T): Assertion<T>;
|
|
31
|
+
};
|
|
32
|
+
declare const _default: CallableOTest;
|
|
33
|
+
export default _default;
|
package/dist/otest.js
ADDED
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
import { ansiSequences, fancy } from "./fancy.js";
|
|
2
|
+
import { Assertion } from "./Assertion.js";
|
|
3
|
+
class OTestmpl {
|
|
4
|
+
static DEFAULT_TIMEOUT_MS = 200;
|
|
5
|
+
taskTree = { name: "O", specs: [], tests: [], before: [], after: [], beforeEach: [], afterEach: [] };
|
|
6
|
+
currentSpec = this.taskTree;
|
|
7
|
+
currentTest = null;
|
|
8
|
+
spec(name, definition) {
|
|
9
|
+
const previousCurrentSpec = this.currentSpec;
|
|
10
|
+
const newSpec = (this.currentSpec = {
|
|
11
|
+
name,
|
|
12
|
+
tests: [],
|
|
13
|
+
specs: [],
|
|
14
|
+
before: [],
|
|
15
|
+
after: [],
|
|
16
|
+
beforeEach: [],
|
|
17
|
+
afterEach: [],
|
|
18
|
+
});
|
|
19
|
+
Object.defineProperty(definition, "name", { value: name, writable: false });
|
|
20
|
+
definition();
|
|
21
|
+
this.currentSpec = previousCurrentSpec;
|
|
22
|
+
this.currentSpec.specs.push(newSpec);
|
|
23
|
+
}
|
|
24
|
+
test(name, task) {
|
|
25
|
+
Object.defineProperty(task, "name", { value: name, writable: false });
|
|
26
|
+
this.currentSpec.tests.push({ name, task });
|
|
27
|
+
}
|
|
28
|
+
check(value) {
|
|
29
|
+
if (this.currentTest == null) {
|
|
30
|
+
throw new Error("Assertion outside of running test!");
|
|
31
|
+
}
|
|
32
|
+
return new Assertion(value, this.currentTest);
|
|
33
|
+
}
|
|
34
|
+
before(task) {
|
|
35
|
+
this.currentSpec.before.push(task);
|
|
36
|
+
}
|
|
37
|
+
after(task) {
|
|
38
|
+
this.currentSpec.after.push(task);
|
|
39
|
+
}
|
|
40
|
+
beforeEach(task) {
|
|
41
|
+
this.currentSpec.beforeEach.push(task);
|
|
42
|
+
}
|
|
43
|
+
afterEach(task) {
|
|
44
|
+
this.currentSpec.afterEach.push(task);
|
|
45
|
+
}
|
|
46
|
+
async run({ filter } = {}) {
|
|
47
|
+
const runResult = { passedTests: [], failingTests: [], skippedTests: [] };
|
|
48
|
+
function processSpecResult(spec, path) {
|
|
49
|
+
const pathNames = path.map((s) => s.name).concat(spec.name);
|
|
50
|
+
for (const test of spec.testResults) {
|
|
51
|
+
if (test.errors.length) {
|
|
52
|
+
runResult.failingTests.push({ path: pathNames, result: test });
|
|
53
|
+
}
|
|
54
|
+
else if (test.skipped) {
|
|
55
|
+
runResult.skippedTests.push({ path: pathNames, result: test });
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
runResult.passedTests.push({ path: pathNames, result: test });
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
for (const subspec of spec.specResults) {
|
|
62
|
+
processSpecResult(subspec, [...path, spec]);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
const topSpecResult = await this.runSpec(this.currentSpec, [], filter ?? "");
|
|
66
|
+
processSpecResult(topSpecResult, []);
|
|
67
|
+
return runResult;
|
|
68
|
+
}
|
|
69
|
+
async runSpec(spec, path, filter) {
|
|
70
|
+
const newPath = [...path, spec];
|
|
71
|
+
const newPathSerialized = newPath.map((s) => s.name).join(" > ");
|
|
72
|
+
console.log(fancy("SPEC", ansiSequences.greenBg), newPathSerialized);
|
|
73
|
+
for (const before of spec.before) {
|
|
74
|
+
await before();
|
|
75
|
+
}
|
|
76
|
+
const specMatches = filter === "" || spec.name.includes(filter);
|
|
77
|
+
const result = {
|
|
78
|
+
name: spec.name,
|
|
79
|
+
specResults: await promiseMap(spec.specs, (nestedSpec) => this.runSpec(nestedSpec, newPath, specMatches ? "" : filter)),
|
|
80
|
+
testResults: await promiseMap(spec.tests, async (test) => {
|
|
81
|
+
if (specMatches || test.name.includes(filter)) {
|
|
82
|
+
const allBeforeEach = [...path.flatMap((s) => s.beforeEach), ...spec.beforeEach];
|
|
83
|
+
for (const beforeEach of allBeforeEach) {
|
|
84
|
+
await beforeEach();
|
|
85
|
+
}
|
|
86
|
+
console.log(" ", fancy("TEST", ansiSequences.greenBg), test.name);
|
|
87
|
+
const testResult = await this.runTest(test);
|
|
88
|
+
const allAfterEach = [...path.flatMap((s) => s.afterEach), ...spec.afterEach];
|
|
89
|
+
for (const afterEach of allAfterEach) {
|
|
90
|
+
await afterEach();
|
|
91
|
+
}
|
|
92
|
+
return testResult;
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
console.log(" ", fancy("SKIP", ansiSequences.yellowBg), fancy(test.name, ansiSequences.faint));
|
|
96
|
+
return { name: test.name, errors: [], timeout: null, skipped: true };
|
|
97
|
+
}
|
|
98
|
+
}),
|
|
99
|
+
};
|
|
100
|
+
for (const after of spec.after) {
|
|
101
|
+
await after();
|
|
102
|
+
}
|
|
103
|
+
return result;
|
|
104
|
+
}
|
|
105
|
+
printReport(result) {
|
|
106
|
+
console.log(`
|
|
107
|
+
|
|
108
|
+
${fancy("TEST FINISHED", ansiSequences.bold)}
|
|
109
|
+
|
|
110
|
+
${result.filter ? `filter: "${result.filter}"` : ""}
|
|
111
|
+
|
|
112
|
+
${fancy("passing", ansiSequences.greenBg)}: ${result.passedTests.length} ${fancy("failing", ansiSequences.redBg)}: ${result.failingTests.length} ${fancy("skipped", ansiSequences.yellowBg)}: ${result.skippedTests.length}`, "\n");
|
|
113
|
+
for (const test of result.failingTests) {
|
|
114
|
+
console.error(fancy("FAIL", ansiSequences.redBg), test.path.join(" > "), "|", test.result.name);
|
|
115
|
+
for (const error of test.result.errors) {
|
|
116
|
+
if (error.userMessage) {
|
|
117
|
+
console.error(fancy(error.userMessage, ansiSequences.redFg));
|
|
118
|
+
}
|
|
119
|
+
console.error(error.error);
|
|
120
|
+
console.log();
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
terminateProcess(result) {
|
|
125
|
+
if (typeof process !== "undefined") {
|
|
126
|
+
process.exit(result.failingTests.length ? 1 : 0);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
async runTest(test) {
|
|
130
|
+
const currentTestResult = (this.currentTest = { name: test.name, errors: [], timeout: null, skipped: false });
|
|
131
|
+
let testResolved = false;
|
|
132
|
+
async function startTimeoutTask() {
|
|
133
|
+
await new Promise((resolve) => {
|
|
134
|
+
if (currentTestResult.timeout == null)
|
|
135
|
+
throw new Error("timeout not set while running timeout task!");
|
|
136
|
+
setTimeout(resolve, currentTestResult.timeout);
|
|
137
|
+
});
|
|
138
|
+
if (!testResolved) {
|
|
139
|
+
throw new Error("timed out!");
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
async function runTask() {
|
|
143
|
+
try {
|
|
144
|
+
const p = test.task();
|
|
145
|
+
currentTestResult.timeout = currentTestResult.timeout ?? OTestmpl.DEFAULT_TIMEOUT_MS;
|
|
146
|
+
await p;
|
|
147
|
+
}
|
|
148
|
+
finally {
|
|
149
|
+
testResolved = true;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
try {
|
|
153
|
+
// run task and timeout in parallel, if timeout counter comes first, we are timeout out
|
|
154
|
+
// the test task should set the timeout immediately or we will not pick it up.
|
|
155
|
+
await Promise.race([runTask(), startTimeoutTask()]);
|
|
156
|
+
}
|
|
157
|
+
catch (e) {
|
|
158
|
+
currentTestResult.errors.push({ error: wrapError(e), userMessage: null });
|
|
159
|
+
}
|
|
160
|
+
finally {
|
|
161
|
+
this.currentTest = null;
|
|
162
|
+
}
|
|
163
|
+
return currentTestResult;
|
|
164
|
+
}
|
|
165
|
+
timeout(ms) {
|
|
166
|
+
if (this.currentTest === null) {
|
|
167
|
+
throw new Error("timeout() call outside of test");
|
|
168
|
+
}
|
|
169
|
+
else if (this.currentTest.timeout != null) {
|
|
170
|
+
throw new Error(`timeout is already set! ${this.currentTest}`);
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
this.currentTest.timeout = ms;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
function wrapError(e) {
|
|
178
|
+
return e instanceof Error ? e : new Error(String(e));
|
|
179
|
+
}
|
|
180
|
+
async function promiseMap(array, mapper) {
|
|
181
|
+
const result = [];
|
|
182
|
+
for (const el of array) {
|
|
183
|
+
result.push(await mapper(el));
|
|
184
|
+
}
|
|
185
|
+
return result;
|
|
186
|
+
}
|
|
187
|
+
const otest = new OTestmpl();
|
|
188
|
+
function o(item, definition) {
|
|
189
|
+
// we need to do these tricks otherwise "this" reference will be lost
|
|
190
|
+
const oo = o;
|
|
191
|
+
if (typeof definition === "undefined") {
|
|
192
|
+
return oo.check(item);
|
|
193
|
+
}
|
|
194
|
+
else {
|
|
195
|
+
oo.test(item, definition);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
Object.assign(o, otest);
|
|
199
|
+
Object.setPrototypeOf(o, Object.getPrototypeOf(otest));
|
|
200
|
+
export default o;
|
package/dist/tsbuildinfo
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"program":{"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/typescript/lib/lib.es2023.d.ts","../../../node_modules/typescript/lib/lib.esnext.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../../../node_modules/typescript/lib/lib.scripthost.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/typescript/lib/lib.es2022.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2023.array.d.ts","../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/typescript/lib/lib.esnext.full.d.ts","../lib/TestResult.ts","../lib/Assertion.ts","../lib/fancy.ts","../lib/otest.ts","../lib/index.ts","../../../node_modules/@types/aws-lambda/handler.d.ts","../../../node_modules/@types/aws-lambda/common/api-gateway.d.ts","../../../node_modules/@types/aws-lambda/common/cloudfront.d.ts","../../../node_modules/@types/aws-lambda/trigger/alb.d.ts","../../../node_modules/@types/aws-lambda/trigger/api-gateway-proxy.d.ts","../../../node_modules/@types/aws-lambda/trigger/api-gateway-authorizer.d.ts","../../../node_modules/@types/aws-lambda/trigger/appsync-resolver.d.ts","../../../node_modules/@types/aws-lambda/trigger/autoscaling.d.ts","../../../node_modules/@types/aws-lambda/trigger/cloudformation-custom-resource.d.ts","../../../node_modules/@types/aws-lambda/trigger/cdk-custom-resource.d.ts","../../../node_modules/@types/aws-lambda/trigger/cloudfront-request.d.ts","../../../node_modules/@types/aws-lambda/trigger/cloudfront-response.d.ts","../../../node_modules/@types/aws-lambda/trigger/eventbridge.d.ts","../../../node_modules/@types/aws-lambda/trigger/cloudwatch-events.d.ts","../../../node_modules/@types/aws-lambda/trigger/cloudwatch-logs.d.ts","../../../node_modules/@types/aws-lambda/trigger/codecommit.d.ts","../../../node_modules/@types/aws-lambda/trigger/codebuild-cloudwatch-state.d.ts","../../../node_modules/@types/aws-lambda/trigger/codepipeline.d.ts","../../../node_modules/@types/aws-lambda/trigger/codepipeline-cloudwatch-action.d.ts","../../../node_modules/@types/aws-lambda/trigger/codepipeline-cloudwatch-pipeline.d.ts","../../../node_modules/@types/aws-lambda/trigger/codepipeline-cloudwatch-stage.d.ts","../../../node_modules/@types/aws-lambda/trigger/codepipeline-cloudwatch.d.ts","../../../node_modules/@types/aws-lambda/trigger/connect-contact-flow.d.ts","../../../node_modules/@types/aws-lambda/trigger/dynamodb-stream.d.ts","../../../node_modules/@types/aws-lambda/trigger/iot.d.ts","../../../node_modules/@types/aws-lambda/trigger/kinesis-firehose-transformation.d.ts","../../../node_modules/@types/aws-lambda/trigger/kinesis-stream.d.ts","../../../node_modules/@types/aws-lambda/trigger/lex.d.ts","../../../node_modules/@types/aws-lambda/trigger/lex-v2.d.ts","../../../node_modules/@types/aws-lambda/trigger/s3.d.ts","../../../node_modules/@types/aws-lambda/trigger/s3-batch.d.ts","../../../node_modules/@types/aws-lambda/trigger/ses.d.ts","../../../node_modules/@types/aws-lambda/trigger/sns.d.ts","../../../node_modules/@types/aws-lambda/trigger/sqs.d.ts","../../../node_modules/@types/aws-lambda/trigger/msk.d.ts","../../../node_modules/@types/aws-lambda/trigger/self-managed-kafka.d.ts","../../../node_modules/@types/aws-lambda/trigger/secretsmanager.d.ts","../../../node_modules/@types/aws-lambda/trigger/s3-event-notification.d.ts","../../../node_modules/@types/aws-lambda/trigger/amplify-resolver.d.ts","../../../node_modules/@types/aws-lambda/index.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/assert/strict.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/dns/promises.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/dom-events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/readline/promises.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/stream/promises.d.ts","../../../node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/@types/node/stream/web.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/test.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/timers/promises.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/globals.global.d.ts","../../../node_modules/@types/node/index.d.ts","../../../node_modules/@types/better-sqlite3/index.d.ts","../../../node_modules/@types/connect/index.d.ts","../../../node_modules/@types/body-parser/index.d.ts","../../../node_modules/@types/btoa-lite/index.d.ts","../../../node_modules/@types/keyv/index.d.ts","../../../node_modules/@types/http-cache-semantics/index.d.ts","../../../node_modules/@types/responselike/index.d.ts","../../../node_modules/@types/cacheable-request/index.d.ts","../../../node_modules/@types/trusted-types/index.d.ts","../../../node_modules/@types/dompurify/index.d.ts","../../../node_modules/@types/estree/index.d.ts","../../../node_modules/@types/mime/index.d.ts","../../../node_modules/@types/send/index.d.ts","../../../node_modules/@types/range-parser/index.d.ts","../../../node_modules/@types/qs/index.d.ts","../../../node_modules/@types/express-serve-static-core/index.d.ts","../../../node_modules/@types/http-errors/index.d.ts","../../../node_modules/@types/serve-static/index.d.ts","../../../node_modules/@types/express/index.d.ts","../../../node_modules/@types/fs-extra/index.d.ts","../../../node_modules/@types/json-schema/index.d.ts","../../../node_modules/@types/jsonwebtoken/index.d.ts","../../../node_modules/@types/linkifyjs/index.d.ts","../../../node_modules/@types/lru-cache/index.d.ts","../../../node_modules/@types/luxon/src/zone.d.ts","../../../node_modules/@types/luxon/src/misc.d.ts","../../../node_modules/@types/luxon/src/duration.d.ts","../../../node_modules/@types/luxon/src/interval.d.ts","../../../node_modules/@types/luxon/src/datetime.d.ts","../../../node_modules/@types/luxon/src/info.d.ts","../../../node_modules/@types/luxon/src/settings.d.ts","../../../node_modules/@types/luxon/src/luxon.d.ts","../../../node_modules/@types/luxon/index.d.ts","../../../node_modules/@types/minimist/index.d.ts","../../../node_modules/@types/mithril/index.d.ts","../../../node_modules/@types/node-forge/index.d.ts","../../../node_modules/@types/normalize-package-data/index.d.ts","../../../node_modules/@types/prop-types/index.d.ts","../../../node_modules/@types/ps-tree/index.d.ts","../../../node_modules/@types/qrcode-svg/index.d.ts","../../../node_modules/@types/react/ts5.0/global.d.ts","../../../node_modules/@types/scheduler/tracing.d.ts","../../../node_modules/@types/react/ts5.0/index.d.ts","../../../node_modules/@types/resolve/index.d.ts","../../../node_modules/@types/scheduler/index.d.ts","../../../node_modules/@types/semver/classes/semver.d.ts","../../../node_modules/@types/semver/functions/parse.d.ts","../../../node_modules/@types/semver/functions/valid.d.ts","../../../node_modules/@types/semver/functions/clean.d.ts","../../../node_modules/@types/semver/functions/inc.d.ts","../../../node_modules/@types/semver/functions/diff.d.ts","../../../node_modules/@types/semver/functions/major.d.ts","../../../node_modules/@types/semver/functions/minor.d.ts","../../../node_modules/@types/semver/functions/patch.d.ts","../../../node_modules/@types/semver/functions/prerelease.d.ts","../../../node_modules/@types/semver/functions/compare.d.ts","../../../node_modules/@types/semver/functions/rcompare.d.ts","../../../node_modules/@types/semver/functions/compare-loose.d.ts","../../../node_modules/@types/semver/functions/compare-build.d.ts","../../../node_modules/@types/semver/functions/sort.d.ts","../../../node_modules/@types/semver/functions/rsort.d.ts","../../../node_modules/@types/semver/functions/gt.d.ts","../../../node_modules/@types/semver/functions/lt.d.ts","../../../node_modules/@types/semver/functions/eq.d.ts","../../../node_modules/@types/semver/functions/neq.d.ts","../../../node_modules/@types/semver/functions/gte.d.ts","../../../node_modules/@types/semver/functions/lte.d.ts","../../../node_modules/@types/semver/functions/cmp.d.ts","../../../node_modules/@types/semver/functions/coerce.d.ts","../../../node_modules/@types/semver/classes/comparator.d.ts","../../../node_modules/@types/semver/classes/range.d.ts","../../../node_modules/@types/semver/functions/satisfies.d.ts","../../../node_modules/@types/semver/ranges/max-satisfying.d.ts","../../../node_modules/@types/semver/ranges/min-satisfying.d.ts","../../../node_modules/@types/semver/ranges/to-comparators.d.ts","../../../node_modules/@types/semver/ranges/min-version.d.ts","../../../node_modules/@types/semver/ranges/valid.d.ts","../../../node_modules/@types/semver/ranges/outside.d.ts","../../../node_modules/@types/semver/ranges/gtr.d.ts","../../../node_modules/@types/semver/ranges/ltr.d.ts","../../../node_modules/@types/semver/ranges/intersects.d.ts","../../../node_modules/@types/semver/ranges/simplify.d.ts","../../../node_modules/@types/semver/ranges/subset.d.ts","../../../node_modules/@types/semver/internals/identifiers.d.ts","../../../node_modules/@types/semver/index.d.ts","../../../node_modules/@types/systemjs/index.d.ts","../../../node_modules/@types/which/index.d.ts","../../../node_modules/@types/winreg/index.d.ts","../../../node_modules/@types/yauzl/index.d.ts"],"fileInfos":[{"version":"6a6b471e7e43e15ef6f8fe617a22ce4ecb0e34efa6c3dfcfe7cebd392bcca9d2","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","dc48272d7c333ccf58034c0026162576b7d50ea0e69c3b9292f803fc20720fd5","27147504487dc1159369da4f4da8a26406364624fa9bc3db632f7d94a5bae2c3","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","5514e54f17d6d74ecefedc73c504eadffdeda79c7ea205cf9febead32d45c4bc","f4e736d6c8d69ae5b3ab0ddfcaa3dc365c3e76909d6660af5b4e979b3934ac20","eeeb3aca31fbadef8b82502484499dfd1757204799a6f5b33116201c810676ec",{"version":"fcd3ecc9f764f06f4d5c467677f4f117f6abf49dee6716283aa204ff1162498b","affectsGlobalScope":true},{"version":"9a60b92bca4c1257db03b349d58e63e4868cfc0d1c8d0ba60c2dbc63f4e6c9f6","affectsGlobalScope":true},{"version":"c5c5565225fce2ede835725a92a28ece149f83542aa4866cfb10290bff7b8996","affectsGlobalScope":true},{"version":"7d2dbc2a0250400af0809b0ad5f84686e84c73526de931f84560e483eb16b03c","affectsGlobalScope":true},{"version":"f296963760430fb65b4e5d91f0ed770a91c6e77455bacf8fa23a1501654ede0e","affectsGlobalScope":true},{"version":"5114a95689b63f96b957e00216bc04baf9e1a1782aa4d8ee7e5e9acbf768e301","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"ab22100fdd0d24cfc2cc59d0a00fc8cf449830d9c4030dc54390a46bd562e929","affectsGlobalScope":true},{"version":"f7bd636ae3a4623c503359ada74510c4005df5b36de7f23e1db8a5c543fd176b","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"0c20f4d2358eb679e4ae8a4432bdd96c857a2960fd6800b21ec4008ec59d60ea","affectsGlobalScope":true},{"version":"36ae84ccc0633f7c0787bc6108386c8b773e95d3b052d9464a99cd9b8795fbec","affectsGlobalScope":true},{"version":"82d0d8e269b9eeac02c3bd1c9e884e85d483fcb2cd168bccd6bc54df663da031","affectsGlobalScope":true},{"version":"b8deab98702588840be73d67f02412a2d45a417a3c097b2e96f7f3a42ac483d1","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"376d554d042fb409cb55b5cbaf0b2b4b7e669619493c5d18d5fa8bd67273f82a","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"c4138a3dd7cd6cf1f363ca0f905554e8d81b45844feea17786cdf1626cb8ea06","affectsGlobalScope":true},{"version":"6ff3e2452b055d8f0ec026511c6582b55d935675af67cdb67dd1dc671e8065df","affectsGlobalScope":true},{"version":"03de17b810f426a2f47396b0b99b53a82c1b60e9cba7a7edda47f9bb077882f4","affectsGlobalScope":true},{"version":"8184c6ddf48f0c98429326b428478ecc6143c27f79b79e85740f17e6feb090f1","affectsGlobalScope":true},{"version":"261c4d2cf86ac5a89ad3fb3fafed74cbb6f2f7c1d139b0540933df567d64a6ca","affectsGlobalScope":true},{"version":"6af1425e9973f4924fca986636ac19a0cf9909a7e0d9d3009c349e6244e957b6","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"15a630d6817718a2ddd7088c4f83e4673fde19fa992d2eae2cf51132a302a5d3","affectsGlobalScope":true},{"version":"b7e9f95a7387e3f66be0ed6db43600c49cec33a3900437ce2fd350d9b7cb16f2","affectsGlobalScope":true},{"version":"01e0ee7e1f661acedb08b51f8a9b7d7f959e9cdb6441360f06522cc3aea1bf2e","affectsGlobalScope":true},{"version":"ac17a97f816d53d9dd79b0d235e1c0ed54a8cc6a0677e9a3d61efb480b2a3e4e","affectsGlobalScope":true},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true},{"version":"ec0104fee478075cb5171e5f4e3f23add8e02d845ae0165bfa3f1099241fa2aa","affectsGlobalScope":true},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true},{"version":"9cc66b0513ad41cb5f5372cca86ef83a0d37d1c1017580b7dace3ea5661836df","affectsGlobalScope":true},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true},{"version":"709efdae0cb5df5f49376cde61daacc95cdd44ae4671da13a540da5088bf3f30","affectsGlobalScope":true},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true},{"version":"61ed9b6d07af959e745fb11f9593ecd743b279418cc8a99448ea3cd5f3b3eb22","affectsGlobalScope":true},{"version":"038a2f66a34ee7a9c2fbc3584c8ab43dff2995f8c68e3f566f4c300d2175e31e","affectsGlobalScope":true},{"version":"4fa6ed14e98aa80b91f61b9805c653ee82af3502dc21c9da5268d3857772ca05","affectsGlobalScope":true},{"version":"f5c92f2c27b06c1a41b88f6db8299205aee52c2a2943f7ed29bd585977f254e8","affectsGlobalScope":true},{"version":"b7feb7967c6c6003e11f49efa8f5de989484e0a6ba2e5a6c41b55f8b8bd85dba","affectsGlobalScope":true},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true},{"version":"b9ea5778ff8b50d7c04c9890170db34c26a5358cccba36844fe319f50a43a61a","affectsGlobalScope":true},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true},{"version":"50d53ccd31f6667aff66e3d62adf948879a3a16f05d89882d1188084ee415bbc","affectsGlobalScope":true},{"version":"25de46552b782d43cb7284df22fe2a265de387cf0248b747a7a1b647d81861f6","affectsGlobalScope":true},{"version":"307c8b7ebbd7f23a92b73a4c6c0a697beca05b06b036c23a34553e5fe65e4fdc","affectsGlobalScope":true},{"version":"189c0703923150aa30673fa3de411346d727cc44a11c75d05d7cf9ef095daa22","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},"7823c8aa42d88e6cb454fe7dc56996c6fd174b28a9f050e9bdea1c25b7d114ea",{"version":"2cf4b723e38db7440d5a7682be050d7ee8a96e7f4db4c43435ad4b7d8b557754","signature":"7fd3448a617e682c297f64b207a34644c00d36817cc154398ce3fadde1ff7578"},{"version":"34bada9ee1c229dfa80e0a077c3b1a6627c1df32c90768f2bda61197bbc07ff2","signature":"9ed172941fe4ae5eaacf0efab6d801b532a719d4c4936a6f12339c5d18a8d00e"},{"version":"e97b1229e2e92b48b4cfb7cb67befcfa88d81f26eca569eccf18520e3bb1a60d","signature":"06ca2757e9b8428e4aef7b5fb0e1919b20656958b0e839639296a127b6baad1b"},{"version":"6a7177c6b9bd471311f56056701dd44d3a756016aa62465f258348e392b4736f","signature":"3f84f2fada773e2b7cd866fd5e685380b6d15de75ca81a7d17d08dc15e45bc6a"},{"version":"22dd6906f3030bd9307dbe35eb0eef4003619b1dc45e3906d70f68e8b3ec6ef3","signature":"1b4e375fce179191e3403f530a0e1e2c31150c16ae4e1c09f5b38e31be93c711"},"6d1675231de1aa366144f91852cddb2eb3cad8d9f2e7e48f4e5e0031e7046ddc","178e031da1bee8c7e17ab757a54a323cee2df905d5f773dd56bbed8fd961507e","429d2e0d28ec8be13ebc5e0b389f34e0622d435c88ec5efe408c4d82e17f37c9","c4951307bc0d26d8140078b703aa551cd99c7ebf7d0f061b940f945294092544","21357c060d45aba2c04692d2e8edadcdad55a1bc670a23bdd2f30df3609aebd7","7305cccc01f462295be680ae8955284e7182e34102256e2af2d21ec924bc87a0","bd6cd4ae039cc123778bd665d1711665415b18edde58fdc8ca3610e5ff84182a","7610667ce4bd02233d7a835421940ca46289379b8d2020d876fb07450ea7c9f0","024235aa9a227784ec0538357848002fbb72159402d509d8812ef01976e19601","4205ae686b67d9dea3bff36ff28888ebfd278ca09ce45b66918a6420b26a09cc","e1cbed9c85c64b60f2b90cf6e7202772ce188c5b8e07654586817c057e9f9878","18fafd1fe99336faa296fe06fd2524a3aeadedd4c3216f62765d81f2a3e25faa","ad5939fcb0c3db887f55a55284a9d7672c1a6f747d083751b614b2f0ed34b611","4194cc6e823aa830a71c733b18d0de1c29323b102c6460e9fe835ac5f8b8a9ba","d41fc839a5e7d701a650fb2e4bc4459e9f153fc3fe7ec177c8097045ee4a781e","03cbb5e7689ffb56bbad83c57fcdf93caa5487accef54d46d018dcb4a639fc56","79d8345c6699dfb150ff7a6f25f9f8e021e910a918d1845693cb57f75c0907cc","3bece6921563f4e54bc2df65cf717af50a08d240643aae97e62be89398e9f551","d4024ee334e09af152ef76a9ae69beadcb8122c571a24e22c0af5eebdf262674","35dab1ad567e85f302c22d2fd17eed02036960a3fe7859282b8e8bd76269d2d8","61e15f0b53a20c764f3f2ccb1dea1596df6f08647506cca60ba2e14766af155c","b90396a0443f2d750522a7a80baac6199c98e5020daa989b4db3e7961211e45c","33cd886d997d97dde6985bae1cecb82e9c10b73a97d802cfc51a0b808a076305","6917f343a2c49dad74524964ed9b95669d607ffb2a5c49ab08abc88467003f3c","b56a007227b15830defe9d287ed08542920f7532a1626da7ba1b093e74410b51","8968128308ce6e149e3203e6da9875a14c5ce32a54d9064e5b1c9e71a058dd2c","088934177c5403bc768f34e77a7b11e72da64f2eb54b4a63ecabfb5f0b3a7cb3","0e2d221e01a12320c649f4b35f82595a9855f91ec317056042b820d5ba996d78","29861fc86ecb9d29f4bebbedd363c1fcba95e9fa037bdc907679103a0b2f92a6","1bf8998f1a1af4df0ba8d6406cc3c27c7798d2795c5643aa544c66beb43f2211","c6c4fca907399a221f26df661f039a9cc476ea029d564a394eab7ab6934f8c28","b579033d07b744a3a04be9c2dd1142ae4aeb4caec27653735ad68f89cb809c32","052334a2b7d4c892dddcb74e66e3e359b04bb4545263fdb30beda17eef5646b3","fb8aebad66729980040dcf5ec38b723a4abb2336db77e51b1d642f73a81291b4","be2ef927cbcf4cdfcc9fe3431559cc713f92da3d5f5703721119193cbe00cc90","0ab58f6e76659ccb195a40d4cfe0b60a1ff5844f04b29e177a58a571f98b3cc3","35c3631308ca05a1cac7a31b6a3d2a68442cdd2315adfb476d0461dea2cac030","256d2eed83c1e05fc9b18694f07f7b74da266bed410c6d392e3236ab36cdd0da","a11e632652142faae963fda7aa5a33442e7d6b42bc5001dd730d18bada756982","7a9f2202d130b97affcc758a5f97804946a4e875ed17fac1ec4c8bb392567c34","587f13f1e8157bd8cec0adda0de4ef558bb8573daa9d518d1e2af38e87ecc91f","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"0bd9543cd8fc0959c76fb8f4f5a26626c2ed62ef4be98fd857bce268066db0a2","affectsGlobalScope":true},{"version":"bce910d9164785c9f0d4dcea4be359f5f92130c7c7833dea6138ab1db310a1f9","affectsGlobalScope":true},"7a435e0c814f58f23e9a0979045ec0ef5909aac95a70986e8bcce30c27dff228",{"version":"c81c51f43e343b6d89114b17341fb9d381c4ccbb25e0ee77532376052c801ba7","affectsGlobalScope":true},"db71be322f07f769200108aa19b79a75dd19a187c9dca2a30c4537b233aa2863","57135ce61976a8b1dadd01bb412406d1805b90db6e8ecb726d0d78e0b5f76050",{"version":"49479e21a040c0177d1b1bc05a124c0383df7a08a0726ad4d9457619642e875a","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","f302f3a47d7758f67f2afc753b9375d6504dde05d2e6ecdb1df50abbb131fc89","3690133deae19c8127c5505fcb67b04bdc9eb053796008538a9b9abbb70d85aa","5b1c0a23f464f894e7c2b2b6c56df7b9afa60ed48c5345f8618d389a636b2108","be2b092f2765222757c6441b86c53a5ea8dfed47bbc43eab4c5fe37942c866b3","8e6b05abc98adba15e1ac78e137c64576c74002e301d682e66feb77a23907ab8","1ca735bb3d407b2af4fbee7665f3a0a83be52168c728cc209755060ba7ed67bd",{"version":"8d74c73e21579ffe9f77ce969bc0317470c63797bd4719c8895a60ce6ae6a263","affectsGlobalScope":true},{"version":"6b526a5ec4a401ca7c26cfe6a48e641d8f30af76673bad3b06a1b4504594a960","affectsGlobalScope":true},"7a2ba0c9af860ac3e77b35ed01fd96d15986f17aa22fe40f188ae556fb1070df","765f9f91293be0c057d5bf2b59494e1eac70efae55ff1c27c6e47c359bc889d2","55709608060f77965c270ac10ac646286589f1bd1cb174fff1778a2dd9a7ef31","3122a3f1136508a27a229e0e4e2848299028300ffa11d0cdfe99df90c492fe20","42b40e40f2a358cda332456214fad311e1806a6abf3cebaaac72496e07556642","354612fe1d49ecc9551ea3a27d94eef2887b64ef4a71f72ca444efe0f2f0ba80",{"version":"ac0c77cd7db52b3c278bdd1452ce754014835493d05b84535f46854fdc2063b2","affectsGlobalScope":true},"b9f36877501f2ce0e276e993c93cd2cf325e78d0409ec4612b1eb9d6a537e60b","5e2b91328a540a0933ab5c2203f4358918e6f0fe7505d22840a891a6117735f1","3abc3512fa04aa0230f59ea1019311fd8667bd935d28306311dccc8b17e79d5d",{"version":"14a50dafe3f45713f7f27cb6320dff07c6ac31678f07959c2134260061bf91ff","affectsGlobalScope":true},{"version":"19da7150ca062323b1db6311a6ef058c9b0a39cc64d836b5e9b75d301869653b","affectsGlobalScope":true},"1349077576abb41f0e9c78ec30762ff75b710208aff77f5fdcc6a8c8ce6289dd","e2ce82603102b5c0563f59fb40314cc1ff95a4d521a66ad14146e130ea80d89c","a3e0395220255a350aa9c6d56f882bfcb5b85c19fddf5419ec822cf22246a26d","c27b01e8ddff5cd280711af5e13aecd9a3228d1c256ea797dd64f8fdec5f7df5","898840e876dfd21843db9f2aa6ae38ba2eab550eb780ff62b894b9fbfebfae6b","c58642af30c06a8e250d248a747ceb045af9a92d8cab22478d80c3bef276bfd5","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff","785e5be57d4f20f290a20e7b0c6263f6c57fd6e51283050756cef07d6d651c68","44b8b584a338b190a59f4f6929d072431950c7bd92ec2694821c11bce180c8a5","164deb2409ac5f4da3cd139dbcee7f7d66753d90363a4d7e2db8d8874f272270",{"version":"ffc62d73b4fa10ca8c59f8802df88efefe447025730a24ee977b60adedc5bf37","affectsGlobalScope":true},{"version":"ab294c4b7279318ee2a8fdf681305457ecc05970c94108d304933f18823eeac1","affectsGlobalScope":true},"ad08154d9602429522cac965a715fde27d421d69b24756c5d291877dda75353e","5bc85813bfcb6907cc3a960fec8734a29d7884e0e372515147720c5991b8bc22","812b25f798033c202baedf386a1ccc41f9191b122f089bffd10fdccce99fba11","993325544790073f77e945bee046d53988c0bc3ac5695c9cf8098166feb82661",{"version":"4d06f3abc2a6aae86f1be39e397372f74fb6e7964f594d645926b4a3419cc15d","affectsGlobalScope":true},{"version":"0e08c360c9b5961ecb0537b703e253842b3ded53151ee07024148219b61a8baf","affectsGlobalScope":true},"2ce2210032ccaff7710e2abf6a722e62c54960458e73e356b6a365c93ab6ca66","92db194ef7d208d5e4b6242a3434573fd142a621ff996d84cc9dbba3553277d0","16a3080e885ed52d4017c902227a8d0d8daf723d062bec9e45627c6fdcd6699b","1ca6858a0cbcd74d7db72d7b14c5360a928d1d16748a55ecfa6bfaff8b83071b",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"ebf3434b09c527078aa74139ff367fffa64fea32a01d6c06fb0a69b0ecadf43e","741f7e2e98ea15b8ac788fba0ad97531b802eccd4f3c4c7786287350bbf5f732","6d829824ead8999f87b6df21200df3c6150391b894b4e80662caa462bd48d073","afc559c1b93df37c25aef6b3dfa2d64325b0e112e887ee18bf7e6f4ec383fc90","acbb182621c18e2bb48d82c5a4ee3a7d47b4f5db5c6986f8594fdd1432c88dd4","fec943fdb3275eb6e006b35e04a8e2e99e9adf3f4b969ddf15315ac7575a93e4","cab425b5559edac18327eb2c3c0f47e7e9f71b667290b7689faafd28aac69eae","3cfb0cb51cc2c2e1b313d7c4df04dbf7e5bda0a133c6b309bf6af77cf614b971","f992cd6cc0bcbaa4e6c810468c90f2d8595f8c6c3cf050c806397d3de8585562",{"version":"3c150a2e1758724811db3bdc5c773421819343b1627714e09f29b1f40a5dfb26","affectsGlobalScope":true},"035c0274e5c2ee060c1ebecca5e0583a74bb1af7b3f3273d1a1145232390dd4d","bee89e1eb6425eb49894f3f25e4562dc2564e84e5aa7610b7e13d8ecddf8f5db","84e3bbd6f80983d468260fdbfeeb431cc81f7ea98d284d836e4d168e36875e86","aad5ffa61406b8e19524738fcf0e6fda8b3485bba98626268fdf252d1b2b630a","16d51f964ec125ad2024cf03f0af444b3bc3ec3614d9345cc54d09bab45c9a4c","ba601641fac98c229ccd4a303f747de376d761babb33229bb7153bed9356c9cc",{"version":"352fc8497a30bc806d7defa0043d85802e5f35a7688731ee9a21456f5cb32a94","affectsGlobalScope":true},"f463d61cf39c3a6a5f96cdf7adfdb72a0b1d663f7b5d5b6dd042adba835430c2","f7a9cb83c8fbc081a8b605880d191e0d0527cde2c1b2b2b623beca8f0203a2cd","43cdd474c5aa3340da4816bb8f1ae7f3b1bcf9e70d997afc36a0f2c432378c84","ed19da84b7dbf00952ad0b98ce5c194f1903bcf7c94d8103e8e0d63b271543ae","dca41e86e89dfb2e85e6935260250f02eb6683b86c2fa16bec729ddd1bcd9b4b","d0133f914f4c8324bc6c6f850669988a48d6d89f6261bd67ad46aed708bb9fe2","75c89ac70b003cc63123b21c47102fef2d4288d609c26f3c701bf4cc51a868f4","6d727c1f6a7122c04e4f7c164c5e6f460c21ada618856894cdaa6ac25e95f38c","45938045285af93edb0065d83c44410e18b34fd1285b5ce46e025a46d5042a46","52ed17fe2c0a4bb27a4f13e99234b3d1f364dc27f9bd7964946d5ec62792a0cc","8730165f29194af5ede515a69201c6e744ac1fd19baf6c10d4dbb6e2bba82969","735c5063be074ef29f3af5470aed320f1832a4ac538a1e7168a82aa6e68595a2","51d8d20e9fc612a8ef908dbfb1e36e90a9b6be8d0a2166659e6f123445626446","ed4be5a31cd8dbb8e31ccde91e7b8c1552eb191c4787d19ed028763577674772","d40e7cb322841e538e686b8a39f05e8b3e0b6d5b7c6687efa69f0cbf9124c4ec","c5641bb951da5d5252e7d8a806ec3c84f42555b5bd6a0879dbf1c7df1b8bd850","8606f6b3214dea6bd5006d18d8d1c8a1e4af96cc33a4fbda106ae8db64422332","209e814e8e71aec74f69686a9506dd7610b97ab59dcee9446266446f72a76d05",{"version":"da17e2d8dbd3a5df4341f970ad3b8edde08fdb260a64fa17a4989674315b86f6","affectsGlobalScope":true},"56da7aaa11467d3d38454029fc243b90a743dce8344eb063263bf038a3a7c3a6","6fa0008bf91a4cc9c8963bace4bba0bd6865cbfa29c3e3ccc461155660fb113a","6a386ff939f180ae8ef064699d8b7b6e62bc2731a62d7fbf5e02589383838dea","4ec9d340a4b31d571bafaf4e09e747793ad99fe57117cca8ecbac2abc1dcd3cb","84063cb4682d54b1b83b6cf88430e33e647d57afe29237c4c414196b7ae33ea8",{"version":"549df62b64a71004aee17685b445a8289013daf96246ce4d9b087d13d7a27a61","affectsGlobalScope":true},"f5a8b384f182b3851cec3596ccc96cb7464f8d3469f48c74bf2befb782a19de5",{"version":"5cb0d591c5212eef7cd84241d0bfc1d37cc87f2fe4a76c5eacf26ade6571f72e","affectsGlobalScope":true},"8baa5d0febc68db886c40bf341e5c90dc215a90cd64552e47e8184be6b7e3358","7ccce4adb23a87a044c257685613126b47160f6975b224cea5f6af36c7f37514","2b93035328f7778d200252681c1d86285d501ed424825a18f81e4c3028aa51d9","2ac9c8332c5f8510b8bdd571f8271e0f39b0577714d5e95c1e79a12b2616f069","42c21aa963e7b86fa00801d96e88b36803188018d5ad91db2a9101bccd40b3ff","d31eb848cdebb4c55b4893b335a7c0cca95ad66dee13cbb7d0893810c0a9c301","b9f96255e1048ed2ea33ec553122716f0e57fc1c3ad778e9aa15f5b46547bd23","7a9e0a564fee396cacf706523b5aeed96e04c6b871a8bebefad78499fbffc5bc","906c751ef5822ec0dadcea2f0e9db64a33fb4ee926cc9f7efa38afe5d5371b2a","5387c049e9702f2d2d7ece1a74836a14b47fbebe9bbeb19f94c580a37c855351","c68391fb9efad5d99ff332c65b1606248c4e4a9f1dd9a087204242b56c7126d6","e9cf02252d3a0ced987d24845dcb1f11c1be5541f17e5daa44c6de2d18138d0c","e8b02b879754d85f48489294f99147aeccc352c760d95a6fe2b6e49cd400b2fe","9f6908ab3d8a86c68b86e38578afc7095114e66b2fc36a2a96e9252aac3998e0","0eedb2344442b143ddcd788f87096961cd8572b64f10b4afc3356aa0460171c6","71405cc70f183d029cc5018375f6c35117ffdaf11846c35ebf85ee3956b1b2a6","c68baff4d8ba346130e9753cefe2e487a16731bf17e05fdacc81e8c9a26aae9d","2cd15528d8bb5d0453aa339b4b52e0696e8b07e790c153831c642c3dea5ac8af","479d622e66283ffa9883fbc33e441f7fc928b2277ff30aacbec7b7761b4e9579","ade307876dc5ca267ca308d09e737b611505e015c535863f22420a11fffc1c54","f8cdefa3e0dee639eccbe9794b46f90291e5fd3989fcba60d2f08fde56179fb9","86c5a62f99aac7053976e317dbe9acb2eaf903aaf3d2e5bb1cafe5c2df7b37a8","2b300954ce01a8343866f737656e13243e86e5baef51bd0631b21dcef1f6e954","a2d409a9ffd872d6b9d78ead00baa116bbc73cfa959fce9a2f29d3227876b2a1","b288936f560cd71f4a6002953290de9ff8dfbfbf37f5a9391be5c83322324898","61178a781ef82e0ff54f9430397e71e8f365fc1e3725e0e5346f2de7b0d50dfa","6a6ccb37feb3aad32d9be026a3337db195979cd5727a616fc0f557e974101a54","c649ea79205c029a02272ef55b7ab14ada0903db26144d2205021f24727ac7a3","38e2b02897c6357bbcff729ef84c736727b45cc152abe95a7567caccdfad2a1d","d6610ea7e0b1a7686dba062a1e5544dd7d34140f4545305b7c6afaebfb348341","3dee35db743bdba2c8d19aece7ac049bde6fa587e195d86547c882784e6ba34c","b15e55c5fa977c2f25ca0b1db52cfa2d1fd4bf0baf90a8b90d4a7678ca462ff1","f41d30972724714763a2698ae949fbc463afb203b5fa7c4ad7e4de0871129a17","843dd7b6a7c6269fd43827303f5cbe65c1fecabc30b4670a50d5a15d57daeeb9","f06d8b8567ee9fd799bf7f806efe93b67683ef24f4dea5b23ef12edff4434d9d","6017384f697ff38bc3ef6a546df5b230c3c31329db84cbfe686c83bec011e2b2","e1a5b30d9248549ca0c0bb1d653bafae20c64c4aa5928cc4cd3017b55c2177b0","a593632d5878f17295bd53e1c77f27bf4c15212822f764a2bfc1702f4b413fa0","a868a534ba1c2ca9060b8a13b0ffbbbf78b4be7b0ff80d8c75b02773f7192c29","da7545aba8f54a50fde23e2ede00158dc8112560d934cee58098dfb03aae9b9d","34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","a1a261624efb3a00ff346b13580f70f3463b8cdcc58b60f5793ff11785d52cab",{"version":"ccfb041f2f384c73f64b08c9cb99d49cbdcc00ff0c25b7f186abe866638e48da","affectsGlobalScope":true},"9cbfee0d2998dc92715f33d94e0cf9650b5e07f74cb40331dcccbbeaf4f36872",{"version":"ee2e7495a6e4820c7317ab889a61e868425f65d1c3f9de0cc91ab5bd1657de90","affectsGlobalScope":true},"65dfa4bc49ccd1355789abb6ae215b302a5b050fdee9651124fe7e826f33113c"],"root":[[65,69]],"options":{"composite":true,"module":99,"outDir":"./","rootDir":"../lib","skipLibCheck":true,"strict":true,"target":99,"tsBuildInfoFile":"./tsbuildinfo"},"fileIdsList":[[157],[70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,157],[70,157],[70,76,157],[70,71,74,157],[70,71,157],[70,78,157],[70,72,157],[82,157],[70,88,89,90,157],[70,82,157],[157,163],[130,157,163,165],[126,130,156,157,163,168,169,170],[130,157,163],[157,172],[126,130,157,163,176,177,178],[157,166,178,179,181],[128,157,163],[120,157,163],[126,157,163],[157,195],[157,188,190,191,196],[157,189,192],[157,188,189],[157,190,192],[157,188,189,190,191,192,193,194],[157,188],[110,157],[114,157],[115,120,148,157],[116,126,128,135,145,156,157],[116,117,126,135,157],[118,157],[119,120,128,136,157],[120,145,153,157],[121,123,126,135,157],[122,157],[123,124,157],[126,157],[125,126,157],[126,128,129,145,156,157],[126,128,129,142,145,148,157],[112,157],[123,126,130,135,145,156,157],[126,128,130,131,135,145,153,156,157],[130,132,145,153,156,157],[110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],[126,133,157],[134,156,157],[123,126,135,145,157],[136,157],[137,157],[114,138,157],[112,139,155,157],[140,157],[141,157],[126,142,143,157],[142,144,157,159],[115,126,145,146,147,148,157],[115,145,147,157],[145,146,157],[148,157],[149,157],[145,157],[126,151,152,157],[151,152,157],[120,135,145,153,157],[154,157],[135,155,157],[115,130,141,156,157],[120,157],[145,157,158],[157,159],[157,160],[112,115,120,126,129,138,145,156,157,159],[145,157,161],[157,201,204,205],[130,145,157,163],[157,209,248],[157,209,233,248],[157,248],[157,209],[157,209,234,248],[157,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247],[157,234,248],[128,145,157,163,175],[130,157,163,175,180],[126,145,157,163],[65,157],[65,68,157],[65,66,67,157],[65],[65,68],[65,66]],"referencedMap":[[71,1],[72,1],[70,1],[109,2],[73,3],[108,4],[75,5],[74,6],[76,3],[77,3],[79,7],[78,3],[80,8],[81,8],[83,9],[84,3],[86,9],[85,3],[88,3],[89,3],[90,3],[91,10],[87,3],[92,3],[93,3],[82,3],[94,3],[95,3],[96,3],[98,3],[97,3],[104,3],[100,3],[107,11],[99,3],[106,3],[105,3],[101,3],[102,3],[103,3],[164,12],[166,13],[167,1],[171,14],[165,15],[173,16],[174,1],[179,17],[182,18],[183,19],[169,1],[180,1],[184,1],[185,20],[168,21],[186,1],[187,1],[196,22],[192,23],[190,24],[193,25],[191,26],[195,27],[189,1],[194,28],[188,1],[175,1],[197,1],[198,1],[199,12],[110,29],[111,29],[114,30],[115,31],[116,32],[117,33],[118,34],[119,35],[120,36],[121,37],[122,38],[123,39],[124,39],[127,40],[125,41],[126,40],[128,42],[129,43],[113,44],[162,1],[130,45],[131,46],[132,47],[163,48],[133,49],[134,50],[135,51],[136,52],[137,53],[138,54],[139,55],[140,56],[141,57],[142,58],[143,58],[144,59],[145,60],[147,61],[146,62],[148,63],[149,64],[150,65],[151,66],[152,67],[153,68],[154,69],[155,70],[156,71],[157,72],[158,73],[159,74],[160,75],[112,76],[161,77],[200,1],[201,1],[202,1],[203,1],[178,1],[177,1],[204,1],[206,78],[207,1],[170,79],[208,1],[205,1],[233,80],[234,81],[209,82],[212,82],[231,80],[232,80],[222,80],[221,83],[219,80],[214,80],[227,80],[225,80],[229,80],[213,80],[226,80],[230,80],[215,80],[216,80],[228,80],[210,80],[217,80],[218,80],[220,80],[224,80],[235,84],[223,80],[211,80],[248,85],[247,1],[242,84],[244,86],[243,84],[236,84],[237,84],[239,84],[241,84],[245,86],[246,86],[238,86],[240,86],[176,87],[181,88],[249,1],[172,1],[250,1],[251,1],[252,89],[62,1],[63,1],[12,1],[13,1],[17,1],[16,1],[2,1],[18,1],[19,1],[20,1],[21,1],[22,1],[23,1],[24,1],[25,1],[3,1],[4,1],[29,1],[26,1],[27,1],[28,1],[30,1],[31,1],[32,1],[5,1],[33,1],[34,1],[35,1],[36,1],[6,1],[40,1],[37,1],[38,1],[39,1],[41,1],[7,1],[42,1],[47,1],[48,1],[43,1],[44,1],[45,1],[46,1],[8,1],[52,1],[49,1],[50,1],[51,1],[53,1],[9,1],[54,1],[55,1],[56,1],[59,1],[57,1],[58,1],[60,1],[10,1],[1,1],[11,1],[64,1],[61,1],[15,1],[14,1],[66,90],[65,1],[67,1],[69,91],[68,92]],"exportedModulesMap":[[71,1],[72,1],[70,1],[109,2],[73,3],[108,4],[75,5],[74,6],[76,3],[77,3],[79,7],[78,3],[80,8],[81,8],[83,9],[84,3],[86,9],[85,3],[88,3],[89,3],[90,3],[91,10],[87,3],[92,3],[93,3],[82,3],[94,3],[95,3],[96,3],[98,3],[97,3],[104,3],[100,3],[107,11],[99,3],[106,3],[105,3],[101,3],[102,3],[103,3],[164,12],[166,13],[167,1],[171,14],[165,15],[173,16],[174,1],[179,17],[182,18],[183,19],[169,1],[180,1],[184,1],[185,20],[168,21],[186,1],[187,1],[196,22],[192,23],[190,24],[193,25],[191,26],[195,27],[189,1],[194,28],[188,1],[175,1],[197,1],[198,1],[199,12],[110,29],[111,29],[114,30],[115,31],[116,32],[117,33],[118,34],[119,35],[120,36],[121,37],[122,38],[123,39],[124,39],[127,40],[125,41],[126,40],[128,42],[129,43],[113,44],[162,1],[130,45],[131,46],[132,47],[163,48],[133,49],[134,50],[135,51],[136,52],[137,53],[138,54],[139,55],[140,56],[141,57],[142,58],[143,58],[144,59],[145,60],[147,61],[146,62],[148,63],[149,64],[150,65],[151,66],[152,67],[153,68],[154,69],[155,70],[156,71],[157,72],[158,73],[159,74],[160,75],[112,76],[161,77],[200,1],[201,1],[202,1],[203,1],[178,1],[177,1],[204,1],[206,78],[207,1],[170,79],[208,1],[205,1],[233,80],[234,81],[209,82],[212,82],[231,80],[232,80],[222,80],[221,83],[219,80],[214,80],[227,80],[225,80],[229,80],[213,80],[226,80],[230,80],[215,80],[216,80],[228,80],[210,80],[217,80],[218,80],[220,80],[224,80],[235,84],[223,80],[211,80],[248,85],[247,1],[242,84],[244,86],[243,84],[236,84],[237,84],[239,84],[241,84],[245,86],[246,86],[238,86],[240,86],[176,87],[181,88],[249,1],[172,1],[250,1],[251,1],[252,89],[62,1],[63,1],[12,1],[13,1],[17,1],[16,1],[2,1],[18,1],[19,1],[20,1],[21,1],[22,1],[23,1],[24,1],[25,1],[3,1],[4,1],[29,1],[26,1],[27,1],[28,1],[30,1],[31,1],[32,1],[5,1],[33,1],[34,1],[35,1],[36,1],[6,1],[40,1],[37,1],[38,1],[39,1],[41,1],[7,1],[42,1],[47,1],[48,1],[43,1],[44,1],[45,1],[46,1],[8,1],[52,1],[49,1],[50,1],[51,1],[53,1],[9,1],[54,1],[55,1],[56,1],[59,1],[57,1],[58,1],[60,1],[10,1],[1,1],[11,1],[64,1],[61,1],[15,1],[14,1],[66,93],[69,94],[68,95]],"semanticDiagnosticsPerFile":[71,72,70,109,73,108,75,74,76,77,79,78,80,81,83,84,86,85,88,89,90,91,87,92,93,82,94,95,96,98,97,104,100,107,99,106,105,101,102,103,164,166,167,171,165,173,174,179,182,183,169,180,184,185,168,186,187,196,192,190,193,191,195,189,194,188,175,197,198,199,110,111,114,115,116,117,118,119,120,121,122,123,124,127,125,126,128,129,113,162,130,131,132,163,133,134,135,136,137,138,139,140,141,142,143,144,145,147,146,148,149,150,151,152,153,154,155,156,157,158,159,160,112,161,200,201,202,203,178,177,204,206,207,170,208,205,233,234,209,212,231,232,222,221,219,214,227,225,229,213,226,230,215,216,228,210,217,218,220,224,235,223,211,248,247,242,244,243,236,237,239,241,245,246,238,240,176,181,249,172,250,251,252,62,63,12,13,17,16,2,18,19,20,21,22,23,24,25,3,4,29,26,27,28,30,31,32,5,33,34,35,36,6,40,37,38,39,41,7,42,47,48,43,44,45,46,8,52,49,50,51,53,9,54,55,56,59,57,58,60,10,1,11,64,61,15,14,66,65,67,69,68],"latestChangedDtsFile":"./index.d.ts"},"version":"5.0.4"}
|
package/package.json
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name" : "@tutao/otest",
|
|
3
|
+
"version" : "3.115.2",
|
|
4
|
+
"license" : "GPL-3.0",
|
|
5
|
+
"description" : "little test runner",
|
|
6
|
+
"main" : "./dist/index.js",
|
|
7
|
+
"repository" : {
|
|
8
|
+
"type" : "git",
|
|
9
|
+
"url" : "https://github.com/tutao/tutanota.git",
|
|
10
|
+
"directory" : "packages/otest"
|
|
11
|
+
},
|
|
12
|
+
"scripts" : {
|
|
13
|
+
"prepublishOnly" : "npm run build",
|
|
14
|
+
"build" : "npx tsc -b"
|
|
15
|
+
},
|
|
16
|
+
"author" : "",
|
|
17
|
+
"dependencies" : {},
|
|
18
|
+
"type" : "module",
|
|
19
|
+
"files" : [
|
|
20
|
+
"dist/*",
|
|
21
|
+
"README.md",
|
|
22
|
+
"LICENSE.txt",
|
|
23
|
+
"tsconfig.json"
|
|
24
|
+
],
|
|
25
|
+
"devDependencies" : {
|
|
26
|
+
"typescript" : "5.0.3"
|
|
27
|
+
},
|
|
28
|
+
"publishConfig" : {
|
|
29
|
+
"access" : "public",
|
|
30
|
+
"registry" : "https://registry.npmjs.org/"
|
|
31
|
+
}
|
|
32
|
+
}
|
package/tsconfig.json
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"include": ["lib/*"],
|
|
3
|
+
"compilerOptions": {
|
|
4
|
+
"target": "esnext",
|
|
5
|
+
"module": "esnext",
|
|
6
|
+
"strict": true,
|
|
7
|
+
"skipLibCheck": true,
|
|
8
|
+
"outDir": "dist",
|
|
9
|
+
"incremental": true,
|
|
10
|
+
"composite": true,
|
|
11
|
+
"rootDir": "lib",
|
|
12
|
+
"tsBuildInfoFile": "dist/tsbuildinfo"
|
|
13
|
+
}
|
|
14
|
+
}
|