@vitest/utils 3.1.0-beta.1 → 3.1.0

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/error.js CHANGED
@@ -8,130 +8,123 @@ import 'loupe';
8
8
  const IS_RECORD_SYMBOL = "@@__IMMUTABLE_RECORD__@@";
9
9
  const IS_COLLECTION_SYMBOL = "@@__IMMUTABLE_ITERABLE__@@";
10
10
  function isImmutable(v) {
11
- return v && (v[IS_COLLECTION_SYMBOL] || v[IS_RECORD_SYMBOL]);
11
+ return v && (v[IS_COLLECTION_SYMBOL] || v[IS_RECORD_SYMBOL]);
12
12
  }
13
13
  const OBJECT_PROTO = Object.getPrototypeOf({});
14
14
  function getUnserializableMessage(err) {
15
- if (err instanceof Error) {
16
- return `<unserializable>: ${err.message}`;
17
- }
18
- if (typeof err === "string") {
19
- return `<unserializable>: ${err}`;
20
- }
21
- return "<unserializable>";
15
+ if (err instanceof Error) {
16
+ return `<unserializable>: ${err.message}`;
17
+ }
18
+ if (typeof err === "string") {
19
+ return `<unserializable>: ${err}`;
20
+ }
21
+ return "<unserializable>";
22
22
  }
23
- function serializeValue(val, seen = /* @__PURE__ */ new WeakMap()) {
24
- if (!val || typeof val === "string") {
25
- return val;
26
- }
27
- if (typeof val === "function") {
28
- return `Function<${val.name || "anonymous"}>`;
29
- }
30
- if (typeof val === "symbol") {
31
- return val.toString();
32
- }
33
- if (typeof val !== "object") {
34
- return val;
35
- }
36
- if (isImmutable(val)) {
37
- return serializeValue(val.toJSON(), seen);
38
- }
39
- if (val instanceof Promise || val.constructor && val.constructor.prototype === "AsyncFunction") {
40
- return "Promise";
41
- }
42
- if (typeof Element !== "undefined" && val instanceof Element) {
43
- return val.tagName;
44
- }
45
- if (typeof val.asymmetricMatch === "function") {
46
- return `${val.toString()} ${format(val.sample)}`;
47
- }
48
- if (typeof val.toJSON === "function") {
49
- return serializeValue(val.toJSON(), seen);
50
- }
51
- if (seen.has(val)) {
52
- return seen.get(val);
53
- }
54
- if (Array.isArray(val)) {
55
- const clone = new Array(val.length);
56
- seen.set(val, clone);
57
- val.forEach((e, i) => {
58
- try {
59
- clone[i] = serializeValue(e, seen);
60
- } catch (err) {
61
- clone[i] = getUnserializableMessage(err);
62
- }
63
- });
64
- return clone;
65
- } else {
66
- const clone = /* @__PURE__ */ Object.create(null);
67
- seen.set(val, clone);
68
- let obj = val;
69
- while (obj && obj !== OBJECT_PROTO) {
70
- Object.getOwnPropertyNames(obj).forEach((key) => {
71
- if (key in clone) {
72
- return;
73
- }
74
- try {
75
- clone[key] = serializeValue(val[key], seen);
76
- } catch (err) {
77
- delete clone[key];
78
- clone[key] = getUnserializableMessage(err);
79
- }
80
- });
81
- obj = Object.getPrototypeOf(obj);
82
- }
83
- return clone;
84
- }
23
+ function serializeValue(val, seen = new WeakMap()) {
24
+ if (!val || typeof val === "string") {
25
+ return val;
26
+ }
27
+ if (typeof val === "function") {
28
+ return `Function<${val.name || "anonymous"}>`;
29
+ }
30
+ if (typeof val === "symbol") {
31
+ return val.toString();
32
+ }
33
+ if (typeof val !== "object") {
34
+ return val;
35
+ }
36
+ if (isImmutable(val)) {
37
+ return serializeValue(val.toJSON(), seen);
38
+ }
39
+ if (val instanceof Promise || val.constructor && val.constructor.prototype === "AsyncFunction") {
40
+ return "Promise";
41
+ }
42
+ if (typeof Element !== "undefined" && val instanceof Element) {
43
+ return val.tagName;
44
+ }
45
+ if (typeof val.asymmetricMatch === "function") {
46
+ return `${val.toString()} ${format(val.sample)}`;
47
+ }
48
+ if (typeof val.toJSON === "function") {
49
+ return serializeValue(val.toJSON(), seen);
50
+ }
51
+ if (seen.has(val)) {
52
+ return seen.get(val);
53
+ }
54
+ if (Array.isArray(val)) {
55
+ const clone = new Array(val.length);
56
+ seen.set(val, clone);
57
+ val.forEach((e, i) => {
58
+ try {
59
+ clone[i] = serializeValue(e, seen);
60
+ } catch (err) {
61
+ clone[i] = getUnserializableMessage(err);
62
+ }
63
+ });
64
+ return clone;
65
+ } else {
66
+ const clone = Object.create(null);
67
+ seen.set(val, clone);
68
+ let obj = val;
69
+ while (obj && obj !== OBJECT_PROTO) {
70
+ Object.getOwnPropertyNames(obj).forEach((key) => {
71
+ if (key in clone) {
72
+ return;
73
+ }
74
+ try {
75
+ clone[key] = serializeValue(val[key], seen);
76
+ } catch (err) {
77
+ delete clone[key];
78
+ clone[key] = getUnserializableMessage(err);
79
+ }
80
+ });
81
+ obj = Object.getPrototypeOf(obj);
82
+ }
83
+ return clone;
84
+ }
85
85
  }
86
86
  function normalizeErrorMessage(message) {
87
- return message.replace(/__(vite_ssr_import|vi_import)_\d+__\./g, "");
87
+ return message.replace(/__(vite_ssr_import|vi_import)_\d+__\./g, "");
88
88
  }
89
- function processError(_err, diffOptions, seen = /* @__PURE__ */ new WeakSet()) {
90
- if (!_err || typeof _err !== "object") {
91
- return { message: String(_err) };
92
- }
93
- const err = _err;
94
- if (err.stack) {
95
- err.stackStr = String(err.stack);
96
- }
97
- if (err.name) {
98
- err.nameStr = String(err.name);
99
- }
100
- if (err.showDiff || err.showDiff === void 0 && err.expected !== void 0 && err.actual !== void 0) {
101
- err.diff = printDiffOrStringify(err.actual, err.expected, {
102
- ...diffOptions,
103
- ...err.diffOptions
104
- });
105
- }
106
- if (typeof err.expected !== "string") {
107
- err.expected = stringify(err.expected, 10);
108
- }
109
- if (typeof err.actual !== "string") {
110
- err.actual = stringify(err.actual, 10);
111
- }
112
- try {
113
- if (typeof err.message === "string") {
114
- err.message = normalizeErrorMessage(err.message);
115
- }
116
- } catch {
117
- }
118
- try {
119
- if (!seen.has(err) && typeof err.cause === "object") {
120
- seen.add(err);
121
- err.cause = processError(err.cause, diffOptions, seen);
122
- }
123
- } catch {
124
- }
125
- try {
126
- return serializeValue(err);
127
- } catch (e) {
128
- return serializeValue(
129
- new Error(
130
- `Failed to fully serialize error: ${e == null ? void 0 : e.message}
131
- Inner error message: ${err == null ? void 0 : err.message}`
132
- )
133
- );
134
- }
89
+ function processError(_err, diffOptions, seen = new WeakSet()) {
90
+ if (!_err || typeof _err !== "object") {
91
+ return { message: String(_err) };
92
+ }
93
+ const err = _err;
94
+ if (err.stack) {
95
+ err.stackStr = String(err.stack);
96
+ }
97
+ if (err.name) {
98
+ err.nameStr = String(err.name);
99
+ }
100
+ if (err.showDiff || err.showDiff === undefined && err.expected !== undefined && err.actual !== undefined) {
101
+ err.diff = printDiffOrStringify(err.actual, err.expected, {
102
+ ...diffOptions,
103
+ ...err.diffOptions
104
+ });
105
+ }
106
+ if (typeof err.expected !== "string") {
107
+ err.expected = stringify(err.expected, 10);
108
+ }
109
+ if (typeof err.actual !== "string") {
110
+ err.actual = stringify(err.actual, 10);
111
+ }
112
+ try {
113
+ if (typeof err.message === "string") {
114
+ err.message = normalizeErrorMessage(err.message);
115
+ }
116
+ } catch {}
117
+ try {
118
+ if (!seen.has(err) && typeof err.cause === "object") {
119
+ seen.add(err);
120
+ err.cause = processError(err.cause, diffOptions, seen);
121
+ }
122
+ } catch {}
123
+ try {
124
+ return serializeValue(err);
125
+ } catch (e) {
126
+ return serializeValue(new Error(`Failed to fully serialize error: ${e === null || e === void 0 ? void 0 : e.message}\nInner error message: ${err === null || err === void 0 ? void 0 : err.message}`));
127
+ }
135
128
  }
136
129
 
137
130
  export { processError, serializeValue as serializeError, serializeValue };
package/dist/helpers.d.ts CHANGED
@@ -51,4 +51,5 @@ declare function isNegativeNaN(val: number): boolean;
51
51
  */
52
52
  declare function deepMerge<T extends object = object>(target: T, ...sources: any[]): T;
53
53
 
54
- export { type DeferPromise, assertTypes, clone, createDefer, createSimpleStackTrace, deepClone, deepMerge, getCallLastIndex, getOwnProperties, getType, isNegativeNaN, isObject, isPrimitive, noop, notNullish, objectAttr, parseRegexp, slash, toArray };
54
+ export { assertTypes, clone, createDefer, createSimpleStackTrace, deepClone, deepMerge, getCallLastIndex, getOwnProperties, getType, isNegativeNaN, isObject, isPrimitive, noop, notNullish, objectAttr, parseRegexp, slash, toArray };
55
+ export type { DeferPromise };