vest 6.0.0 → 6.0.1
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/exports/SuiteSerializer.cjs +45 -1
- package/dist/exports/SuiteSerializer.cjs.map +1 -1
- package/dist/exports/SuiteSerializer.mjs +45 -1
- package/dist/exports/SuiteSerializer.mjs.map +1 -1
- package/dist/exports/classnames.cjs +2 -2
- package/dist/exports/classnames.mjs +2 -2
- package/dist/exports/debounce.cjs +1 -1
- package/dist/exports/debounce.mjs +1 -1
- package/dist/exports/memo.cjs +1 -1
- package/dist/exports/memo.mjs +1 -1
- package/dist/exports/parser.cjs +2 -2
- package/dist/exports/parser.mjs +2 -2
- package/dist/{parser-CLhCAAYG.cjs → parser-DurNd9af.cjs} +2 -2
- package/dist/{parser-CLhCAAYG.cjs.map → parser-DurNd9af.cjs.map} +1 -1
- package/dist/{parser-Ch9qn6Hm.mjs → parser-TvzEAVLQ.mjs} +2 -2
- package/dist/{parser-Ch9qn6Hm.mjs.map → parser-TvzEAVLQ.mjs.map} +1 -1
- package/dist/{vest-CKYaivPf.cjs → vest-Lg6ZJuyu.cjs} +46 -12
- package/dist/vest-Lg6ZJuyu.cjs.map +1 -0
- package/dist/{vest-BEj6iXsK.mjs → vest-WSPRosdH.mjs} +47 -13
- package/dist/vest-WSPRosdH.mjs.map +1 -0
- package/dist/vest.cjs +1 -1
- package/dist/vest.mjs +1 -1
- package/package.json +6 -6
- package/src/core/Runtime.ts +3 -2
- package/src/exports/SuiteSerializer.ts +104 -1
- package/src/exports/__tests__/SuiteSerializer.test.ts +58 -1
- package/src/exports/__tests__/classnames.test.ts +24 -1
- package/src/exports/__tests__/parser.test.ts +23 -1
- package/src/suite/SuiteTypes.ts +15 -5
- package/src/suite/__tests__/runSummary.integration.test.ts +72 -0
- package/src/suite/__tests__/schema.types.test.ts +12 -0
- package/src/suite/useCreateSuiteRunner.ts +62 -41
- package/src/suiteResult/SuiteResultTypes.ts +22 -4
- package/src/suiteResult/selectors/useProduceSuiteSummary.ts +3 -2
- package/src/suiteResult/suiteResult.ts +37 -10
- package/types/{IsolateSuite-DnMtFHBW.d.cts → IsolateSuite-3gZF4eDG.d.mts} +11 -6
- package/types/IsolateSuite-3gZF4eDG.d.mts.map +1 -0
- package/types/{IsolateSuite-JdFYn2DA.d.mts → IsolateSuite-WsmXGGR-.d.cts} +11 -6
- package/types/IsolateSuite-WsmXGGR-.d.cts.map +1 -0
- package/types/{SuiteTypes-DESBCvZ7.d.cts → SuiteTypes-BNCL13HG.d.cts} +8 -7
- package/types/SuiteTypes-BNCL13HG.d.cts.map +1 -0
- package/types/{SuiteTypes-cjI5BA_k.d.mts → SuiteTypes-hg7F7swJ.d.mts} +8 -7
- package/types/SuiteTypes-hg7F7swJ.d.mts.map +1 -0
- package/types/exports/SuiteSerializer.d.cts +2 -2
- package/types/exports/SuiteSerializer.d.mts +2 -2
- package/types/exports/classnames.d.cts +2 -2
- package/types/exports/classnames.d.mts +2 -2
- package/types/exports/debounce.d.cts +1 -1
- package/types/exports/debounce.d.mts +1 -1
- package/types/exports/memo.d.cts +1 -1
- package/types/exports/memo.d.mts +1 -1
- package/types/exports/parser.d.cts +2 -2
- package/types/exports/parser.d.mts +2 -2
- package/types/{parser-BsrjuZ4_.d.cts → parser-DqW8l1IB.d.cts} +2 -2
- package/types/{parser-BsrjuZ4_.d.cts.map → parser-DqW8l1IB.d.cts.map} +1 -1
- package/types/{parser-CqvCfNJR.d.mts → parser-uCTQIcV6.d.mts} +2 -2
- package/types/{parser-CqvCfNJR.d.mts.map → parser-uCTQIcV6.d.mts.map} +1 -1
- package/types/vest.d.cts +2 -2
- package/types/vest.d.mts +2 -2
- package/types/vest.d.ts +2 -2
- package/dist/vest-BEj6iXsK.mjs.map +0 -1
- package/dist/vest-CKYaivPf.cjs.map +0 -1
- package/types/IsolateSuite-DnMtFHBW.d.cts.map +0 -1
- package/types/IsolateSuite-JdFYn2DA.d.mts.map +0 -1
- package/types/SuiteTypes-DESBCvZ7.d.cts.map +0 -1
- package/types/SuiteTypes-cjI5BA_k.d.mts.map +0 -1
|
@@ -5,7 +5,7 @@ let vestjs_runtime = require("vestjs-runtime");
|
|
|
5
5
|
//#region src/exports/SuiteSerializer.ts
|
|
6
6
|
var SuiteSerializer = class SuiteSerializer {
|
|
7
7
|
static serialize(suite) {
|
|
8
|
-
const dump =
|
|
8
|
+
const dump = stripMessageFromPassingTests(suite.dump());
|
|
9
9
|
return vestjs_runtime.IsolateSerializer.serialize(dump, suiteSerializerReplacer);
|
|
10
10
|
}
|
|
11
11
|
static safeDeserialize(serialized) {
|
|
@@ -19,6 +19,50 @@ var SuiteSerializer = class SuiteSerializer {
|
|
|
19
19
|
suite.resume(suiteRoot);
|
|
20
20
|
}
|
|
21
21
|
};
|
|
22
|
+
function stripMessageFromPassingTests(node) {
|
|
23
|
+
return strip(node, /* @__PURE__ */ new WeakMap(), /* @__PURE__ */ new WeakMap(), /* @__PURE__ */ new WeakSet());
|
|
24
|
+
}
|
|
25
|
+
function strip(node, visited, containsPassingMemo, seen) {
|
|
26
|
+
if (!node || typeof node !== "object") return node;
|
|
27
|
+
if (visited.has(node)) return visited.get(node);
|
|
28
|
+
if (!containsPassing(node, seen, containsPassingMemo)) return node;
|
|
29
|
+
if (Array.isArray(node)) {
|
|
30
|
+
const arr = [];
|
|
31
|
+
visited.set(node, arr);
|
|
32
|
+
node.forEach((value) => {
|
|
33
|
+
arr.push(strip(value, visited, containsPassingMemo, seen));
|
|
34
|
+
});
|
|
35
|
+
return arr;
|
|
36
|
+
}
|
|
37
|
+
const root = node;
|
|
38
|
+
const shouldStripMessage = root.testStatus === require_IsolateTestStateMachine.TestStatus.PASSING;
|
|
39
|
+
const clonedNode = {};
|
|
40
|
+
visited.set(node, clonedNode);
|
|
41
|
+
for (const [key, value] of Object.entries(root)) {
|
|
42
|
+
if (shouldStripMessage && key === "message") continue;
|
|
43
|
+
clonedNode[key] = strip(value, visited, containsPassingMemo, seen);
|
|
44
|
+
}
|
|
45
|
+
return clonedNode;
|
|
46
|
+
}
|
|
47
|
+
function containsPassing(node, seen, memo) {
|
|
48
|
+
if (!node || typeof node !== "object") return false;
|
|
49
|
+
if (memo.has(node)) return memo.get(node) ?? false;
|
|
50
|
+
if (seen.has(node)) return true;
|
|
51
|
+
if (node.testStatus === require_IsolateTestStateMachine.TestStatus.PASSING) {
|
|
52
|
+
memo.set(node, true);
|
|
53
|
+
return true;
|
|
54
|
+
}
|
|
55
|
+
seen.add(node);
|
|
56
|
+
const values = Array.isArray(node) ? node : Object.values(node);
|
|
57
|
+
for (const value of values) if (containsPassing(value, seen, memo)) {
|
|
58
|
+
memo.set(node, true);
|
|
59
|
+
seen.delete(node);
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
62
|
+
memo.set(node, false);
|
|
63
|
+
seen.delete(node);
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
22
66
|
function suiteSerializerReplacer(value, key) {
|
|
23
67
|
if (isStatusKey(key)) return getAllowedStatus(value);
|
|
24
68
|
if (DisallowedKeys.has(key)) return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SuiteSerializer.cjs","names":["IsolateSerializer","TestStatus"],"sources":["../../src/exports/SuiteSerializer.ts"],"sourcesContent":["import { CB, Result } from 'vest-utils';\nimport { IsolateSerializer } from 'vestjs-runtime';\n\nimport { TestStatus } from '../core/StateMachines/IsolateTestStateMachine';\nimport { TIsolateSuite } from '../core/isolate/IsolateSuite/IsolateSuite';\nimport { Suite } from '../suite/SuiteTypes';\nimport {\n TFieldName,\n TGroupName,\n TSchema,\n} from '../suiteResult/SuiteResultTypes';\n\ntype Dumpable = {\n dump: CB<TIsolateSuite>;\n};\n\nexport class SuiteSerializer {\n static serialize(suite: Dumpable) {\n const dump =
|
|
1
|
+
{"version":3,"file":"SuiteSerializer.cjs","names":["IsolateSerializer","arr: any[]","TestStatus","clonedNode: Record<string, any>"],"sources":["../../src/exports/SuiteSerializer.ts"],"sourcesContent":["import { CB, Result } from 'vest-utils';\nimport { IsolateSerializer } from 'vestjs-runtime';\n\nimport { TestStatus } from '../core/StateMachines/IsolateTestStateMachine';\nimport { TIsolateSuite } from '../core/isolate/IsolateSuite/IsolateSuite';\nimport { Suite } from '../suite/SuiteTypes';\nimport {\n TFieldName,\n TGroupName,\n TSchema,\n} from '../suiteResult/SuiteResultTypes';\n\ntype Dumpable = {\n dump: CB<TIsolateSuite>;\n};\n\nexport class SuiteSerializer {\n static serialize(suite: Dumpable) {\n const dump = stripMessageFromPassingTests(suite.dump());\n\n return IsolateSerializer.serialize(dump, suiteSerializerReplacer);\n }\n\n static safeDeserialize(\n serialized: string | TIsolateSuite | Record<string, any>,\n ): Result<TIsolateSuite, Error> {\n return IsolateSerializer.safeDeserialize(serialized).map(\n isolate => isolate as TIsolateSuite,\n );\n }\n\n static deserialize(\n serialized: string | TIsolateSuite | Record<string, any>,\n ): TIsolateSuite {\n return SuiteSerializer.safeDeserialize(serialized).unwrap();\n }\n\n static resume<\n F extends TFieldName,\n G extends TGroupName,\n T extends CB,\n S extends TSchema,\n >(\n suite: Suite<F, G, T, S>,\n root: string | TIsolateSuite | Record<string, any>,\n ): void {\n const suiteRoot = SuiteSerializer.deserialize(root);\n\n suite.resume(suiteRoot);\n }\n}\n\nfunction stripMessageFromPassingTests<T>(node: T): T {\n const visited = new WeakMap<object, any>();\n const containsPassingMemo = new WeakMap<object, boolean>();\n const seen = new WeakSet<object>();\n\n return strip(node, visited, containsPassingMemo, seen);\n}\n\n// eslint-disable-next-line complexity, max-statements\nfunction strip<T>(\n node: T,\n visited: WeakMap<object, any>,\n containsPassingMemo: WeakMap<object, boolean>,\n seen: WeakSet<object>,\n): T {\n if (!node || typeof node !== 'object') {\n return node;\n }\n\n if (visited.has(node as object)) {\n return visited.get(node as object);\n }\n\n if (!containsPassing(node, seen, containsPassingMemo)) {\n return node;\n }\n\n if (Array.isArray(node)) {\n const arr: any[] = [];\n visited.set(node, arr);\n\n node.forEach(value => {\n arr.push(strip(value, visited, containsPassingMemo, seen));\n });\n\n return arr as T;\n }\n\n const root = node as Record<string, any>;\n const shouldStripMessage = root.testStatus === TestStatus.PASSING;\n const clonedNode: Record<string, any> = {};\n visited.set(node, clonedNode);\n\n for (const [key, value] of Object.entries(root)) {\n if (shouldStripMessage && key === 'message') {\n continue;\n }\n\n clonedNode[key] = strip(value, visited, containsPassingMemo, seen);\n }\n\n return clonedNode as T;\n}\n\n// `strip` calls this with a shared `seen` set that is expected to be empty\n// at call boundaries. Inside this DFS, revisiting a node (`seen.has(node)`) means\n// we've encountered a cycle currently in-flight, so we conservatively return `true`\n// to avoid suppressing message-stripping while still preventing infinite recursion.\n// This is safe because every path that adds to `seen` removes it (`seen.delete`) on\n// return, and `memo` only stores final computed booleans for completed nodes.\n// eslint-disable-next-line complexity, max-statements\nfunction containsPassing(\n node: unknown,\n seen: WeakSet<object>,\n memo: WeakMap<object, boolean>,\n): boolean {\n if (!node || typeof node !== 'object') {\n return false;\n }\n\n if (memo.has(node)) {\n return memo.get(node) ?? false;\n }\n\n if (seen.has(node)) {\n return true;\n }\n\n if ((node as Record<string, unknown>).testStatus === TestStatus.PASSING) {\n memo.set(node, true);\n return true;\n }\n\n seen.add(node);\n\n const values = Array.isArray(node)\n ? node\n : Object.values(node as Record<string, unknown>);\n\n for (const value of values) {\n if (containsPassing(value, seen, memo)) {\n memo.set(node, true);\n seen.delete(node);\n return true;\n }\n }\n\n memo.set(node, false);\n seen.delete(node);\n\n return false;\n}\n\nfunction suiteSerializerReplacer(value: any, key: string) {\n if (isStatusKey(key)) {\n return getAllowedStatus(value);\n }\n\n if (DisallowedKeys.has(key)) {\n return undefined;\n }\n\n return value;\n}\n\nfunction isStatusKey(key: string): boolean {\n return key === 'testStatus';\n}\n\nfunction getAllowedStatus(value: any): any {\n return AllowedStatuses.has(value) ? value : undefined;\n}\n\nconst AllowedStatuses = new Set([\n TestStatus.FAILED,\n TestStatus.PASSING,\n TestStatus.WARNING,\n]);\n\nconst DisallowedKeys = new Set([\n 'focusMode',\n 'match',\n 'matchAll',\n 'output',\n 'severity',\n 'tests',\n]);\n"],"mappings":";;;;;AAgBA,IAAa,kBAAb,MAAa,gBAAgB;CAC3B,OAAO,UAAU,OAAiB;EAChC,MAAM,OAAO,6BAA6B,MAAM,MAAM,CAAC;AAEvD,SAAOA,iCAAkB,UAAU,MAAM,wBAAwB;;CAGnE,OAAO,gBACL,YAC8B;AAC9B,SAAOA,iCAAkB,gBAAgB,WAAW,CAAC,KACnD,YAAW,QACZ;;CAGH,OAAO,YACL,YACe;AACf,SAAO,gBAAgB,gBAAgB,WAAW,CAAC,QAAQ;;CAG7D,OAAO,OAML,OACA,MACM;EACN,MAAM,YAAY,gBAAgB,YAAY,KAAK;AAEnD,QAAM,OAAO,UAAU;;;AAI3B,SAAS,6BAAgC,MAAY;AAKnD,QAAO,MAAM,sBAJG,IAAI,SAAsB,kBACd,IAAI,SAA0B,kBAC7C,IAAI,SAAiB,CAEoB;;AAIxD,SAAS,MACP,MACA,SACA,qBACA,MACG;AACH,KAAI,CAAC,QAAQ,OAAO,SAAS,SAC3B,QAAO;AAGT,KAAI,QAAQ,IAAI,KAAe,CAC7B,QAAO,QAAQ,IAAI,KAAe;AAGpC,KAAI,CAAC,gBAAgB,MAAM,MAAM,oBAAoB,CACnD,QAAO;AAGT,KAAI,MAAM,QAAQ,KAAK,EAAE;EACvB,MAAMC,MAAa,EAAE;AACrB,UAAQ,IAAI,MAAM,IAAI;AAEtB,OAAK,SAAQ,UAAS;AACpB,OAAI,KAAK,MAAM,OAAO,SAAS,qBAAqB,KAAK,CAAC;IAC1D;AAEF,SAAO;;CAGT,MAAM,OAAO;CACb,MAAM,qBAAqB,KAAK,eAAeC,2CAAW;CAC1D,MAAMC,aAAkC,EAAE;AAC1C,SAAQ,IAAI,MAAM,WAAW;AAE7B,MAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,KAAK,EAAE;AAC/C,MAAI,sBAAsB,QAAQ,UAChC;AAGF,aAAW,OAAO,MAAM,OAAO,SAAS,qBAAqB,KAAK;;AAGpE,QAAO;;AAUT,SAAS,gBACP,MACA,MACA,MACS;AACT,KAAI,CAAC,QAAQ,OAAO,SAAS,SAC3B,QAAO;AAGT,KAAI,KAAK,IAAI,KAAK,CAChB,QAAO,KAAK,IAAI,KAAK,IAAI;AAG3B,KAAI,KAAK,IAAI,KAAK,CAChB,QAAO;AAGT,KAAK,KAAiC,eAAeD,2CAAW,SAAS;AACvE,OAAK,IAAI,MAAM,KAAK;AACpB,SAAO;;AAGT,MAAK,IAAI,KAAK;CAEd,MAAM,SAAS,MAAM,QAAQ,KAAK,GAC9B,OACA,OAAO,OAAO,KAAgC;AAElD,MAAK,MAAM,SAAS,OAClB,KAAI,gBAAgB,OAAO,MAAM,KAAK,EAAE;AACtC,OAAK,IAAI,MAAM,KAAK;AACpB,OAAK,OAAO,KAAK;AACjB,SAAO;;AAIX,MAAK,IAAI,MAAM,MAAM;AACrB,MAAK,OAAO,KAAK;AAEjB,QAAO;;AAGT,SAAS,wBAAwB,OAAY,KAAa;AACxD,KAAI,YAAY,IAAI,CAClB,QAAO,iBAAiB,MAAM;AAGhC,KAAI,eAAe,IAAI,IAAI,CACzB;AAGF,QAAO;;AAGT,SAAS,YAAY,KAAsB;AACzC,QAAO,QAAQ;;AAGjB,SAAS,iBAAiB,OAAiB;AACzC,QAAO,gBAAgB,IAAI,MAAM,GAAG,QAAQ;;AAG9C,MAAM,kBAAkB,IAAI,IAAI;CAC9BA,2CAAW;CACXA,2CAAW;CACXA,2CAAW;CACZ,CAAC;AAEF,MAAM,iBAAiB,IAAI,IAAI;CAC7B;CACA;CACA;CACA;CACA;CACA;CACD,CAAC"}
|
|
@@ -4,7 +4,7 @@ import { IsolateSerializer } from "vestjs-runtime";
|
|
|
4
4
|
//#region src/exports/SuiteSerializer.ts
|
|
5
5
|
var SuiteSerializer = class SuiteSerializer {
|
|
6
6
|
static serialize(suite) {
|
|
7
|
-
const dump =
|
|
7
|
+
const dump = stripMessageFromPassingTests(suite.dump());
|
|
8
8
|
return IsolateSerializer.serialize(dump, suiteSerializerReplacer);
|
|
9
9
|
}
|
|
10
10
|
static safeDeserialize(serialized) {
|
|
@@ -18,6 +18,50 @@ var SuiteSerializer = class SuiteSerializer {
|
|
|
18
18
|
suite.resume(suiteRoot);
|
|
19
19
|
}
|
|
20
20
|
};
|
|
21
|
+
function stripMessageFromPassingTests(node) {
|
|
22
|
+
return strip(node, /* @__PURE__ */ new WeakMap(), /* @__PURE__ */ new WeakMap(), /* @__PURE__ */ new WeakSet());
|
|
23
|
+
}
|
|
24
|
+
function strip(node, visited, containsPassingMemo, seen) {
|
|
25
|
+
if (!node || typeof node !== "object") return node;
|
|
26
|
+
if (visited.has(node)) return visited.get(node);
|
|
27
|
+
if (!containsPassing(node, seen, containsPassingMemo)) return node;
|
|
28
|
+
if (Array.isArray(node)) {
|
|
29
|
+
const arr = [];
|
|
30
|
+
visited.set(node, arr);
|
|
31
|
+
node.forEach((value) => {
|
|
32
|
+
arr.push(strip(value, visited, containsPassingMemo, seen));
|
|
33
|
+
});
|
|
34
|
+
return arr;
|
|
35
|
+
}
|
|
36
|
+
const root = node;
|
|
37
|
+
const shouldStripMessage = root.testStatus === TestStatus.PASSING;
|
|
38
|
+
const clonedNode = {};
|
|
39
|
+
visited.set(node, clonedNode);
|
|
40
|
+
for (const [key, value] of Object.entries(root)) {
|
|
41
|
+
if (shouldStripMessage && key === "message") continue;
|
|
42
|
+
clonedNode[key] = strip(value, visited, containsPassingMemo, seen);
|
|
43
|
+
}
|
|
44
|
+
return clonedNode;
|
|
45
|
+
}
|
|
46
|
+
function containsPassing(node, seen, memo) {
|
|
47
|
+
if (!node || typeof node !== "object") return false;
|
|
48
|
+
if (memo.has(node)) return memo.get(node) ?? false;
|
|
49
|
+
if (seen.has(node)) return true;
|
|
50
|
+
if (node.testStatus === TestStatus.PASSING) {
|
|
51
|
+
memo.set(node, true);
|
|
52
|
+
return true;
|
|
53
|
+
}
|
|
54
|
+
seen.add(node);
|
|
55
|
+
const values = Array.isArray(node) ? node : Object.values(node);
|
|
56
|
+
for (const value of values) if (containsPassing(value, seen, memo)) {
|
|
57
|
+
memo.set(node, true);
|
|
58
|
+
seen.delete(node);
|
|
59
|
+
return true;
|
|
60
|
+
}
|
|
61
|
+
memo.set(node, false);
|
|
62
|
+
seen.delete(node);
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
21
65
|
function suiteSerializerReplacer(value, key) {
|
|
22
66
|
if (isStatusKey(key)) return getAllowedStatus(value);
|
|
23
67
|
if (DisallowedKeys.has(key)) return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SuiteSerializer.mjs","names":[],"sources":["../../src/exports/SuiteSerializer.ts"],"sourcesContent":["import { CB, Result } from 'vest-utils';\nimport { IsolateSerializer } from 'vestjs-runtime';\n\nimport { TestStatus } from '../core/StateMachines/IsolateTestStateMachine';\nimport { TIsolateSuite } from '../core/isolate/IsolateSuite/IsolateSuite';\nimport { Suite } from '../suite/SuiteTypes';\nimport {\n TFieldName,\n TGroupName,\n TSchema,\n} from '../suiteResult/SuiteResultTypes';\n\ntype Dumpable = {\n dump: CB<TIsolateSuite>;\n};\n\nexport class SuiteSerializer {\n static serialize(suite: Dumpable) {\n const dump =
|
|
1
|
+
{"version":3,"file":"SuiteSerializer.mjs","names":["arr: any[]","clonedNode: Record<string, any>"],"sources":["../../src/exports/SuiteSerializer.ts"],"sourcesContent":["import { CB, Result } from 'vest-utils';\nimport { IsolateSerializer } from 'vestjs-runtime';\n\nimport { TestStatus } from '../core/StateMachines/IsolateTestStateMachine';\nimport { TIsolateSuite } from '../core/isolate/IsolateSuite/IsolateSuite';\nimport { Suite } from '../suite/SuiteTypes';\nimport {\n TFieldName,\n TGroupName,\n TSchema,\n} from '../suiteResult/SuiteResultTypes';\n\ntype Dumpable = {\n dump: CB<TIsolateSuite>;\n};\n\nexport class SuiteSerializer {\n static serialize(suite: Dumpable) {\n const dump = stripMessageFromPassingTests(suite.dump());\n\n return IsolateSerializer.serialize(dump, suiteSerializerReplacer);\n }\n\n static safeDeserialize(\n serialized: string | TIsolateSuite | Record<string, any>,\n ): Result<TIsolateSuite, Error> {\n return IsolateSerializer.safeDeserialize(serialized).map(\n isolate => isolate as TIsolateSuite,\n );\n }\n\n static deserialize(\n serialized: string | TIsolateSuite | Record<string, any>,\n ): TIsolateSuite {\n return SuiteSerializer.safeDeserialize(serialized).unwrap();\n }\n\n static resume<\n F extends TFieldName,\n G extends TGroupName,\n T extends CB,\n S extends TSchema,\n >(\n suite: Suite<F, G, T, S>,\n root: string | TIsolateSuite | Record<string, any>,\n ): void {\n const suiteRoot = SuiteSerializer.deserialize(root);\n\n suite.resume(suiteRoot);\n }\n}\n\nfunction stripMessageFromPassingTests<T>(node: T): T {\n const visited = new WeakMap<object, any>();\n const containsPassingMemo = new WeakMap<object, boolean>();\n const seen = new WeakSet<object>();\n\n return strip(node, visited, containsPassingMemo, seen);\n}\n\n// eslint-disable-next-line complexity, max-statements\nfunction strip<T>(\n node: T,\n visited: WeakMap<object, any>,\n containsPassingMemo: WeakMap<object, boolean>,\n seen: WeakSet<object>,\n): T {\n if (!node || typeof node !== 'object') {\n return node;\n }\n\n if (visited.has(node as object)) {\n return visited.get(node as object);\n }\n\n if (!containsPassing(node, seen, containsPassingMemo)) {\n return node;\n }\n\n if (Array.isArray(node)) {\n const arr: any[] = [];\n visited.set(node, arr);\n\n node.forEach(value => {\n arr.push(strip(value, visited, containsPassingMemo, seen));\n });\n\n return arr as T;\n }\n\n const root = node as Record<string, any>;\n const shouldStripMessage = root.testStatus === TestStatus.PASSING;\n const clonedNode: Record<string, any> = {};\n visited.set(node, clonedNode);\n\n for (const [key, value] of Object.entries(root)) {\n if (shouldStripMessage && key === 'message') {\n continue;\n }\n\n clonedNode[key] = strip(value, visited, containsPassingMemo, seen);\n }\n\n return clonedNode as T;\n}\n\n// `strip` calls this with a shared `seen` set that is expected to be empty\n// at call boundaries. Inside this DFS, revisiting a node (`seen.has(node)`) means\n// we've encountered a cycle currently in-flight, so we conservatively return `true`\n// to avoid suppressing message-stripping while still preventing infinite recursion.\n// This is safe because every path that adds to `seen` removes it (`seen.delete`) on\n// return, and `memo` only stores final computed booleans for completed nodes.\n// eslint-disable-next-line complexity, max-statements\nfunction containsPassing(\n node: unknown,\n seen: WeakSet<object>,\n memo: WeakMap<object, boolean>,\n): boolean {\n if (!node || typeof node !== 'object') {\n return false;\n }\n\n if (memo.has(node)) {\n return memo.get(node) ?? false;\n }\n\n if (seen.has(node)) {\n return true;\n }\n\n if ((node as Record<string, unknown>).testStatus === TestStatus.PASSING) {\n memo.set(node, true);\n return true;\n }\n\n seen.add(node);\n\n const values = Array.isArray(node)\n ? node\n : Object.values(node as Record<string, unknown>);\n\n for (const value of values) {\n if (containsPassing(value, seen, memo)) {\n memo.set(node, true);\n seen.delete(node);\n return true;\n }\n }\n\n memo.set(node, false);\n seen.delete(node);\n\n return false;\n}\n\nfunction suiteSerializerReplacer(value: any, key: string) {\n if (isStatusKey(key)) {\n return getAllowedStatus(value);\n }\n\n if (DisallowedKeys.has(key)) {\n return undefined;\n }\n\n return value;\n}\n\nfunction isStatusKey(key: string): boolean {\n return key === 'testStatus';\n}\n\nfunction getAllowedStatus(value: any): any {\n return AllowedStatuses.has(value) ? value : undefined;\n}\n\nconst AllowedStatuses = new Set([\n TestStatus.FAILED,\n TestStatus.PASSING,\n TestStatus.WARNING,\n]);\n\nconst DisallowedKeys = new Set([\n 'focusMode',\n 'match',\n 'matchAll',\n 'output',\n 'severity',\n 'tests',\n]);\n"],"mappings":";;;;AAgBA,IAAa,kBAAb,MAAa,gBAAgB;CAC3B,OAAO,UAAU,OAAiB;EAChC,MAAM,OAAO,6BAA6B,MAAM,MAAM,CAAC;AAEvD,SAAO,kBAAkB,UAAU,MAAM,wBAAwB;;CAGnE,OAAO,gBACL,YAC8B;AAC9B,SAAO,kBAAkB,gBAAgB,WAAW,CAAC,KACnD,YAAW,QACZ;;CAGH,OAAO,YACL,YACe;AACf,SAAO,gBAAgB,gBAAgB,WAAW,CAAC,QAAQ;;CAG7D,OAAO,OAML,OACA,MACM;EACN,MAAM,YAAY,gBAAgB,YAAY,KAAK;AAEnD,QAAM,OAAO,UAAU;;;AAI3B,SAAS,6BAAgC,MAAY;AAKnD,QAAO,MAAM,sBAJG,IAAI,SAAsB,kBACd,IAAI,SAA0B,kBAC7C,IAAI,SAAiB,CAEoB;;AAIxD,SAAS,MACP,MACA,SACA,qBACA,MACG;AACH,KAAI,CAAC,QAAQ,OAAO,SAAS,SAC3B,QAAO;AAGT,KAAI,QAAQ,IAAI,KAAe,CAC7B,QAAO,QAAQ,IAAI,KAAe;AAGpC,KAAI,CAAC,gBAAgB,MAAM,MAAM,oBAAoB,CACnD,QAAO;AAGT,KAAI,MAAM,QAAQ,KAAK,EAAE;EACvB,MAAMA,MAAa,EAAE;AACrB,UAAQ,IAAI,MAAM,IAAI;AAEtB,OAAK,SAAQ,UAAS;AACpB,OAAI,KAAK,MAAM,OAAO,SAAS,qBAAqB,KAAK,CAAC;IAC1D;AAEF,SAAO;;CAGT,MAAM,OAAO;CACb,MAAM,qBAAqB,KAAK,eAAe,WAAW;CAC1D,MAAMC,aAAkC,EAAE;AAC1C,SAAQ,IAAI,MAAM,WAAW;AAE7B,MAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,KAAK,EAAE;AAC/C,MAAI,sBAAsB,QAAQ,UAChC;AAGF,aAAW,OAAO,MAAM,OAAO,SAAS,qBAAqB,KAAK;;AAGpE,QAAO;;AAUT,SAAS,gBACP,MACA,MACA,MACS;AACT,KAAI,CAAC,QAAQ,OAAO,SAAS,SAC3B,QAAO;AAGT,KAAI,KAAK,IAAI,KAAK,CAChB,QAAO,KAAK,IAAI,KAAK,IAAI;AAG3B,KAAI,KAAK,IAAI,KAAK,CAChB,QAAO;AAGT,KAAK,KAAiC,eAAe,WAAW,SAAS;AACvE,OAAK,IAAI,MAAM,KAAK;AACpB,SAAO;;AAGT,MAAK,IAAI,KAAK;CAEd,MAAM,SAAS,MAAM,QAAQ,KAAK,GAC9B,OACA,OAAO,OAAO,KAAgC;AAElD,MAAK,MAAM,SAAS,OAClB,KAAI,gBAAgB,OAAO,MAAM,KAAK,EAAE;AACtC,OAAK,IAAI,MAAM,KAAK;AACpB,OAAK,OAAO,KAAK;AACjB,SAAO;;AAIX,MAAK,IAAI,MAAM,MAAM;AACrB,MAAK,OAAO,KAAK;AAEjB,QAAO;;AAGT,SAAS,wBAAwB,OAAY,KAAa;AACxD,KAAI,YAAY,IAAI,CAClB,QAAO,iBAAiB,MAAM;AAGhC,KAAI,eAAe,IAAI,IAAI,CACzB;AAGF,QAAO;;AAGT,SAAS,YAAY,KAAsB;AACzC,QAAO,QAAQ;;AAGjB,SAAS,iBAAiB,OAAiB;AACzC,QAAO,gBAAgB,IAAI,MAAM,GAAG,QAAQ;;AAG9C,MAAM,kBAAkB,IAAI,IAAI;CAC9B,WAAW;CACX,WAAW;CACX,WAAW;CACZ,CAAC;AAEF,MAAM,iBAAiB,IAAI,IAAI;CAC7B;CACA;CACA;CACA;CACA;CACA;CACD,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
const require_chunk = require('../chunk-CbDLau6x.cjs');
|
|
2
|
-
require('../vest-
|
|
2
|
+
require('../vest-Lg6ZJuyu.cjs');
|
|
3
3
|
require('../IsolateTestStateMachine-BBP3PZx3.cjs');
|
|
4
|
-
const require_parser = require('../parser-
|
|
4
|
+
const require_parser = require('../parser-DurNd9af.cjs');
|
|
5
5
|
let vest_utils = require("vest-utils");
|
|
6
6
|
|
|
7
7
|
//#region src/exports/classnames.ts
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import "../vest-
|
|
1
|
+
import "../vest-WSPRosdH.mjs";
|
|
2
2
|
import "../IsolateTestStateMachine-BejZsTRI.mjs";
|
|
3
|
-
import { t as parse } from "../parser-
|
|
3
|
+
import { t as parse } from "../parser-TvzEAVLQ.mjs";
|
|
4
4
|
import { isFunction, makeBrand } from "vest-utils";
|
|
5
5
|
|
|
6
6
|
//#region src/exports/classnames.ts
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const require_chunk = require('../chunk-CbDLau6x.cjs');
|
|
2
|
-
const require_vest = require('../vest-
|
|
2
|
+
const require_vest = require('../vest-Lg6ZJuyu.cjs');
|
|
3
3
|
require('../IsolateTestStateMachine-BBP3PZx3.cjs');
|
|
4
4
|
let vest_utils = require("vest-utils");
|
|
5
5
|
let vestjs_runtime = require("vestjs-runtime");
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { b as SuiteContext, d as getTestFromAbortSignal, f as registerReconciler } from "../vest-
|
|
1
|
+
import { b as SuiteContext, d as getTestFromAbortSignal, f as registerReconciler } from "../vest-WSPRosdH.mjs";
|
|
2
2
|
import "../IsolateTestStateMachine-BejZsTRI.mjs";
|
|
3
3
|
import { isPromise } from "vest-utils";
|
|
4
4
|
import { Isolate, IsolateSelectors } from "vestjs-runtime";
|
package/dist/exports/memo.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const require_chunk = require('../chunk-CbDLau6x.cjs');
|
|
2
|
-
const require_vest = require('../vest-
|
|
2
|
+
const require_vest = require('../vest-Lg6ZJuyu.cjs');
|
|
3
3
|
require('../IsolateTestStateMachine-BBP3PZx3.cjs');
|
|
4
4
|
let vest_utils = require("vest-utils");
|
|
5
5
|
let vestjs_runtime = require("vestjs-runtime");
|
package/dist/exports/memo.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { f as registerReconciler, v as VestTest, y as createVestIsolate } from "../vest-
|
|
1
|
+
import { f as registerReconciler, v as VestTest, y as createVestIsolate } from "../vest-WSPRosdH.mjs";
|
|
2
2
|
import "../IsolateTestStateMachine-BejZsTRI.mjs";
|
|
3
3
|
import { cache, isNullish, makeResult, unwrap } from "vest-utils";
|
|
4
4
|
import { IsolateSelectors, Walker } from "vestjs-runtime";
|
package/dist/exports/parser.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
require('../vest-
|
|
1
|
+
require('../vest-Lg6ZJuyu.cjs');
|
|
2
2
|
require('../IsolateTestStateMachine-BBP3PZx3.cjs');
|
|
3
|
-
const require_parser = require('../parser-
|
|
3
|
+
const require_parser = require('../parser-DurNd9af.cjs');
|
|
4
4
|
|
|
5
5
|
exports.parse = require_parser.parse;
|
package/dist/exports/parser.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const require_chunk = require('./chunk-CbDLau6x.cjs');
|
|
2
|
-
const require_vest = require('./vest-
|
|
2
|
+
const require_vest = require('./vest-Lg6ZJuyu.cjs');
|
|
3
3
|
let vest_utils = require("vest-utils");
|
|
4
4
|
|
|
5
5
|
//#region src/exports/parser.ts
|
|
@@ -39,4 +39,4 @@ Object.defineProperty(exports, 'parse', {
|
|
|
39
39
|
return parse;
|
|
40
40
|
}
|
|
41
41
|
});
|
|
42
|
-
//# sourceMappingURL=parser-
|
|
42
|
+
//# sourceMappingURL=parser-DurNd9af.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser-
|
|
1
|
+
{"version":3,"file":"parser-DurNd9af.cjs","names":["ErrorStrings","suiteSelectors","testedStorage: Record<string, boolean>"],"sources":["../src/exports/parser.ts"],"sourcesContent":["import {\n hasOwnProperty,\n invariant,\n isNullish,\n isPositive,\n makeBrand,\n} from 'vest-utils';\n\nimport { ErrorStrings } from '../errors/ErrorStrings';\nimport {\n SuiteResult,\n SuiteSummary,\n TFieldName,\n TGroupName,\n TSchema,\n} from '../suiteResult/SuiteResultTypes';\nimport { suiteSelectors } from '../vest';\n\nexport function parse<\n F extends TFieldName,\n G extends TGroupName,\n S extends TSchema,\n>(summary: SuiteSummary<F, G> | SuiteResult<F, G, S>): ParsedVestObject<F> {\n invariant(\n summary && hasOwnProperty(summary, 'valid'),\n ErrorStrings.PARSER_EXPECT_RESULT_OBJECT,\n );\n\n const sel = suiteSelectors(summary);\n\n const testedStorage: Record<string, boolean> = {};\n\n const selectors = {\n invalid: sel.hasErrors,\n pending: sel.isPending,\n tested: isTested,\n untested: isUntested,\n valid: sel.isValid,\n warning: sel.hasWarnings,\n };\n\n return selectors;\n\n // Booleans\n function isTested(fieldName?: F | string): boolean {\n if (isNullish(fieldName)) {\n return isPositive(summary.testCount);\n }\n\n const safeFieldName = makeBrand<TFieldName>(fieldName);\n\n if (hasOwnProperty(testedStorage, safeFieldName)) {\n return testedStorage[safeFieldName];\n }\n\n addFieldToTestedStorage(safeFieldName);\n\n return selectors.tested(safeFieldName as F);\n }\n\n function addFieldToTestedStorage(fieldName: TFieldName): void {\n testedStorage[fieldName] =\n hasOwnProperty(summary.tests, fieldName) &&\n isPositive(summary.tests[fieldName].testCount);\n }\n\n function isUntested(fieldName?: F | string): boolean {\n const safeFieldName = fieldName\n ? makeBrand<TFieldName>(fieldName)\n : undefined;\n\n return !(\n isPositive(summary.testCount) &&\n selectors.tested(safeFieldName as F | undefined)\n );\n }\n}\n\nexport type ParsedVestObject<F extends TFieldName> = {\n valid(fieldName?: F | string): boolean;\n tested(fieldName?: F | string): boolean;\n invalid(fieldName?: F | string): boolean;\n untested(fieldName?: F | string): boolean;\n warning(fieldName?: F | string): boolean;\n pending(fieldName?: F | string): boolean;\n};\n"],"mappings":";;;;;AAkBA,SAAgB,MAId,SAAyE;AACzE,2BACE,0CAA0B,SAAS,QAAQ,EAC3CA,0BAAa,4BACd;CAED,MAAM,MAAMC,4BAAe,QAAQ;CAEnC,MAAMC,gBAAyC,EAAE;CAEjD,MAAM,YAAY;EAChB,SAAS,IAAI;EACb,SAAS,IAAI;EACb,QAAQ;EACR,UAAU;EACV,OAAO,IAAI;EACX,SAAS,IAAI;EACd;AAED,QAAO;CAGP,SAAS,SAAS,WAAiC;AACjD,gCAAc,UAAU,CACtB,mCAAkB,QAAQ,UAAU;EAGtC,MAAM,0CAAsC,UAAU;AAEtD,qCAAmB,eAAe,cAAc,CAC9C,QAAO,cAAc;AAGvB,0BAAwB,cAAc;AAEtC,SAAO,UAAU,OAAO,cAAmB;;CAG7C,SAAS,wBAAwB,WAA6B;AAC5D,gBAAc,4CACG,QAAQ,OAAO,UAAU,+BAC7B,QAAQ,MAAM,WAAW,UAAU;;CAGlD,SAAS,WAAW,WAAiC;EACnD,MAAM,gBAAgB,sCACI,UAAU,GAChC;AAEJ,SAAO,6BACM,QAAQ,UAAU,IAC7B,UAAU,OAAO,cAA+B"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { S as ErrorStrings, _ as suiteSelectors } from "./vest-
|
|
1
|
+
import { S as ErrorStrings, _ as suiteSelectors } from "./vest-WSPRosdH.mjs";
|
|
2
2
|
import { hasOwnProperty, invariant, isNullish, isPositive, makeBrand } from "vest-utils";
|
|
3
3
|
|
|
4
4
|
//#region src/exports/parser.ts
|
|
@@ -33,4 +33,4 @@ function parse(summary) {
|
|
|
33
33
|
|
|
34
34
|
//#endregion
|
|
35
35
|
export { parse as t };
|
|
36
|
-
//# sourceMappingURL=parser-
|
|
36
|
+
//# sourceMappingURL=parser-TvzEAVLQ.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser-
|
|
1
|
+
{"version":3,"file":"parser-TvzEAVLQ.mjs","names":["testedStorage: Record<string, boolean>"],"sources":["../src/exports/parser.ts"],"sourcesContent":["import {\n hasOwnProperty,\n invariant,\n isNullish,\n isPositive,\n makeBrand,\n} from 'vest-utils';\n\nimport { ErrorStrings } from '../errors/ErrorStrings';\nimport {\n SuiteResult,\n SuiteSummary,\n TFieldName,\n TGroupName,\n TSchema,\n} from '../suiteResult/SuiteResultTypes';\nimport { suiteSelectors } from '../vest';\n\nexport function parse<\n F extends TFieldName,\n G extends TGroupName,\n S extends TSchema,\n>(summary: SuiteSummary<F, G> | SuiteResult<F, G, S>): ParsedVestObject<F> {\n invariant(\n summary && hasOwnProperty(summary, 'valid'),\n ErrorStrings.PARSER_EXPECT_RESULT_OBJECT,\n );\n\n const sel = suiteSelectors(summary);\n\n const testedStorage: Record<string, boolean> = {};\n\n const selectors = {\n invalid: sel.hasErrors,\n pending: sel.isPending,\n tested: isTested,\n untested: isUntested,\n valid: sel.isValid,\n warning: sel.hasWarnings,\n };\n\n return selectors;\n\n // Booleans\n function isTested(fieldName?: F | string): boolean {\n if (isNullish(fieldName)) {\n return isPositive(summary.testCount);\n }\n\n const safeFieldName = makeBrand<TFieldName>(fieldName);\n\n if (hasOwnProperty(testedStorage, safeFieldName)) {\n return testedStorage[safeFieldName];\n }\n\n addFieldToTestedStorage(safeFieldName);\n\n return selectors.tested(safeFieldName as F);\n }\n\n function addFieldToTestedStorage(fieldName: TFieldName): void {\n testedStorage[fieldName] =\n hasOwnProperty(summary.tests, fieldName) &&\n isPositive(summary.tests[fieldName].testCount);\n }\n\n function isUntested(fieldName?: F | string): boolean {\n const safeFieldName = fieldName\n ? makeBrand<TFieldName>(fieldName)\n : undefined;\n\n return !(\n isPositive(summary.testCount) &&\n selectors.tested(safeFieldName as F | undefined)\n );\n }\n}\n\nexport type ParsedVestObject<F extends TFieldName> = {\n valid(fieldName?: F | string): boolean;\n tested(fieldName?: F | string): boolean;\n invalid(fieldName?: F | string): boolean;\n untested(fieldName?: F | string): boolean;\n warning(fieldName?: F | string): boolean;\n pending(fieldName?: F | string): boolean;\n};\n"],"mappings":";;;;AAkBA,SAAgB,MAId,SAAyE;AACzE,WACE,WAAW,eAAe,SAAS,QAAQ,EAC3C,aAAa,4BACd;CAED,MAAM,MAAM,eAAe,QAAQ;CAEnC,MAAMA,gBAAyC,EAAE;CAEjD,MAAM,YAAY;EAChB,SAAS,IAAI;EACb,SAAS,IAAI;EACb,QAAQ;EACR,UAAU;EACV,OAAO,IAAI;EACX,SAAS,IAAI;EACd;AAED,QAAO;CAGP,SAAS,SAAS,WAAiC;AACjD,MAAI,UAAU,UAAU,CACtB,QAAO,WAAW,QAAQ,UAAU;EAGtC,MAAM,gBAAgB,UAAsB,UAAU;AAEtD,MAAI,eAAe,eAAe,cAAc,CAC9C,QAAO,cAAc;AAGvB,0BAAwB,cAAc;AAEtC,SAAO,UAAU,OAAO,cAAmB;;CAG7C,SAAS,wBAAwB,WAA6B;AAC5D,gBAAc,aACZ,eAAe,QAAQ,OAAO,UAAU,IACxC,WAAW,QAAQ,MAAM,WAAW,UAAU;;CAGlD,SAAS,WAAW,WAAiC;EACnD,MAAM,gBAAgB,YAClB,UAAsB,UAAU,GAChC;AAEJ,SAAO,EACL,WAAW,QAAQ,UAAU,IAC7B,UAAU,OAAO,cAA+B"}
|
|
@@ -379,16 +379,25 @@ var SummaryBase = class {
|
|
|
379
379
|
}
|
|
380
380
|
};
|
|
381
381
|
var SuiteSummary = class extends SummaryBase {
|
|
382
|
-
|
|
383
|
-
|
|
382
|
+
static {
|
|
383
|
+
_Severity$ERRORS = Severity.ERRORS, _Severity$WARNINGS = Severity.WARNINGS;
|
|
384
|
+
}
|
|
385
|
+
constructor() {
|
|
386
|
+
super();
|
|
384
387
|
this[_Severity$ERRORS] = [];
|
|
385
388
|
this[_Severity$WARNINGS] = [];
|
|
386
389
|
this.groups = {};
|
|
387
390
|
this.tests = {};
|
|
388
391
|
this.valid = null;
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
+
Object.defineProperty(this, "run", {
|
|
393
|
+
configurable: true,
|
|
394
|
+
enumerable: false,
|
|
395
|
+
value: {
|
|
396
|
+
data: void 0,
|
|
397
|
+
time: /* @__PURE__ */ new Date(0)
|
|
398
|
+
},
|
|
399
|
+
writable: true
|
|
400
|
+
});
|
|
392
401
|
}
|
|
393
402
|
};
|
|
394
403
|
|
|
@@ -1230,15 +1239,28 @@ function shouldCountTestRun(testObject) {
|
|
|
1230
1239
|
|
|
1231
1240
|
//#endregion
|
|
1232
1241
|
//#region src/suiteResult/suiteResult.ts
|
|
1233
|
-
function useCreateSuiteResult(schema, outputData, inputData) {
|
|
1242
|
+
function useCreateSuiteResult(schema, outputData, inputData, runTime = /* @__PURE__ */ new Date()) {
|
|
1234
1243
|
return useSuiteResultCache(() => {
|
|
1235
|
-
|
|
1244
|
+
const summary = useProduceSuiteSummary();
|
|
1245
|
+
summary.run = {
|
|
1246
|
+
data: inputData,
|
|
1247
|
+
time: runTime
|
|
1248
|
+
};
|
|
1249
|
+
const result = (0, vest_utils.assign)(constructSuiteResultObject(summary, outputData), {
|
|
1236
1250
|
dump: vestjs_runtime.VestRuntime.persist(vestjs_runtime.VestRuntime.useAvailableRoot),
|
|
1237
1251
|
types: schema ? {
|
|
1238
1252
|
input: inputData,
|
|
1239
1253
|
output: outputData
|
|
1240
1254
|
} : void 0
|
|
1241
1255
|
});
|
|
1256
|
+
const runMeta = Object.freeze({ ...summary.run });
|
|
1257
|
+
Object.defineProperty(result, "run", {
|
|
1258
|
+
configurable: true,
|
|
1259
|
+
enumerable: false,
|
|
1260
|
+
value: runMeta,
|
|
1261
|
+
writable: true
|
|
1262
|
+
});
|
|
1263
|
+
return Object.freeze(result);
|
|
1242
1264
|
});
|
|
1243
1265
|
}
|
|
1244
1266
|
function constructSuiteResultObject(summary, outputData) {
|
|
@@ -2168,21 +2190,23 @@ function getTypedMethods() {
|
|
|
2168
2190
|
function useCreateSuiteRunner(suiteCallback, modifiers, schema) {
|
|
2169
2191
|
const transformedModifiers = useTransformedModifiers(modifiers);
|
|
2170
2192
|
return function runSuite(...args) {
|
|
2193
|
+
const runTime = /* @__PURE__ */ new Date();
|
|
2171
2194
|
const { resolve, promise } = (0, vest_utils.withResolvers)();
|
|
2172
2195
|
const schemaInput = args[0];
|
|
2173
2196
|
const schemaRunResult = shouldRunSchema(schema, transformedModifiers) ? runSchemaWithParse(schema, schemaInput) : void 0;
|
|
2174
2197
|
const callbackInput = getCallbackInput(schemaRunResult, schemaInput);
|
|
2175
2198
|
const callbackArgs = [callbackInput, ...args.slice(1)];
|
|
2176
|
-
|
|
2199
|
+
const runData = callbackInput;
|
|
2200
|
+
const result = (0, vest_utils.assign)(promise, SuiteContext.run({
|
|
2177
2201
|
suiteParams: callbackArgs,
|
|
2178
2202
|
schema,
|
|
2179
2203
|
modifiers: transformedModifiers
|
|
2180
2204
|
}, () => {
|
|
2181
2205
|
useEmit("SUITE_RUN_STARTED");
|
|
2182
2206
|
const useResolver = () => {
|
|
2183
|
-
const result = useCreateSuiteResult(schema, callbackInput,
|
|
2184
|
-
if (!result.isPending()) resolve(result);
|
|
2185
|
-
return result;
|
|
2207
|
+
const result$1 = useCreateSuiteResult(schema, callbackInput, runData, runTime);
|
|
2208
|
+
if (!result$1.isPending()) resolve(result$1);
|
|
2209
|
+
return result$1;
|
|
2186
2210
|
};
|
|
2187
2211
|
return IsolateSuite(useRunSuiteCallback({
|
|
2188
2212
|
args: callbackArgs,
|
|
@@ -2193,6 +2217,16 @@ function useCreateSuiteRunner(suiteCallback, modifiers, schema) {
|
|
|
2193
2217
|
useResolver
|
|
2194
2218
|
}), useResolver).output;
|
|
2195
2219
|
}));
|
|
2220
|
+
Object.defineProperty(result, "run", {
|
|
2221
|
+
configurable: true,
|
|
2222
|
+
enumerable: false,
|
|
2223
|
+
value: Object.freeze({
|
|
2224
|
+
data: runData,
|
|
2225
|
+
time: runTime
|
|
2226
|
+
}),
|
|
2227
|
+
writable: true
|
|
2228
|
+
});
|
|
2229
|
+
return result;
|
|
2196
2230
|
};
|
|
2197
2231
|
}
|
|
2198
2232
|
/**
|
|
@@ -2619,4 +2653,4 @@ Object.defineProperty(exports, 'warn', {
|
|
|
2619
2653
|
return warn;
|
|
2620
2654
|
}
|
|
2621
2655
|
});
|
|
2622
|
-
//# sourceMappingURL=vest-
|
|
2656
|
+
//# sourceMappingURL=vest-Lg6ZJuyu.cjs.map
|