bupkis 0.10.4 → 0.11.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/CHANGELOG.md +27 -0
- package/dist/commonjs/assertion/impl/async-parametric.d.ts +2 -17
- package/dist/commonjs/assertion/impl/async-parametric.d.ts.map +1 -1
- package/dist/commonjs/assertion/impl/async-parametric.js +2 -17
- package/dist/commonjs/assertion/impl/async-parametric.js.map +1 -1
- package/dist/commonjs/assertion/impl/async.d.ts +0 -16
- package/dist/commonjs/assertion/impl/async.d.ts.map +1 -1
- package/dist/commonjs/assertion/impl/sync-collection.d.ts +54 -89
- package/dist/commonjs/assertion/impl/sync-collection.d.ts.map +1 -1
- package/dist/commonjs/assertion/impl/sync-collection.js +122 -181
- package/dist/commonjs/assertion/impl/sync-collection.js.map +1 -1
- package/dist/commonjs/assertion/impl/sync-date.d.ts +130 -15
- package/dist/commonjs/assertion/impl/sync-date.d.ts.map +1 -1
- package/dist/commonjs/assertion/impl/sync-date.js +4 -59
- package/dist/commonjs/assertion/impl/sync-date.js.map +1 -1
- package/dist/commonjs/assertion/impl/sync-parametric.d.ts +2 -6
- package/dist/commonjs/assertion/impl/sync-parametric.d.ts.map +1 -1
- package/dist/commonjs/assertion/impl/sync-parametric.js +2 -4
- package/dist/commonjs/assertion/impl/sync-parametric.js.map +1 -1
- package/dist/commonjs/assertion/impl/sync.d.ts +297 -108
- package/dist/commonjs/assertion/impl/sync.d.ts.map +1 -1
- package/dist/commonjs/assertion/impl/sync.js +5 -1
- package/dist/commonjs/assertion/impl/sync.js.map +1 -1
- package/dist/commonjs/bootstrap.d.ts +146 -62
- package/dist/commonjs/bootstrap.d.ts.map +1 -1
- package/dist/commonjs/diff.d.ts.map +1 -1
- package/dist/commonjs/diff.js +103 -24
- package/dist/commonjs/diff.js.map +1 -1
- package/dist/commonjs/index.d.ts +143 -59
- package/dist/commonjs/index.d.ts.map +1 -1
- package/dist/commonjs/schema.d.ts +165 -0
- package/dist/commonjs/schema.d.ts.map +1 -1
- package/dist/commonjs/schema.js +176 -1
- package/dist/commonjs/schema.js.map +1 -1
- package/dist/esm/assertion/impl/async-parametric.d.ts +2 -17
- package/dist/esm/assertion/impl/async-parametric.d.ts.map +1 -1
- package/dist/esm/assertion/impl/async-parametric.js +2 -17
- package/dist/esm/assertion/impl/async-parametric.js.map +1 -1
- package/dist/esm/assertion/impl/async.d.ts +0 -16
- package/dist/esm/assertion/impl/async.d.ts.map +1 -1
- package/dist/esm/assertion/impl/sync-collection.d.ts +54 -89
- package/dist/esm/assertion/impl/sync-collection.d.ts.map +1 -1
- package/dist/esm/assertion/impl/sync-collection.js +122 -181
- package/dist/esm/assertion/impl/sync-collection.js.map +1 -1
- package/dist/esm/assertion/impl/sync-date.d.ts +130 -15
- package/dist/esm/assertion/impl/sync-date.d.ts.map +1 -1
- package/dist/esm/assertion/impl/sync-date.js +4 -59
- package/dist/esm/assertion/impl/sync-date.js.map +1 -1
- package/dist/esm/assertion/impl/sync-parametric.d.ts +2 -6
- package/dist/esm/assertion/impl/sync-parametric.d.ts.map +1 -1
- package/dist/esm/assertion/impl/sync-parametric.js +2 -4
- package/dist/esm/assertion/impl/sync-parametric.js.map +1 -1
- package/dist/esm/assertion/impl/sync.d.ts +297 -108
- package/dist/esm/assertion/impl/sync.d.ts.map +1 -1
- package/dist/esm/assertion/impl/sync.js +6 -2
- package/dist/esm/assertion/impl/sync.js.map +1 -1
- package/dist/esm/bootstrap.d.ts +146 -62
- package/dist/esm/bootstrap.d.ts.map +1 -1
- package/dist/esm/diff.d.ts.map +1 -1
- package/dist/esm/diff.js +103 -24
- package/dist/esm/diff.js.map +1 -1
- package/dist/esm/index.d.ts +143 -59
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/schema.d.ts +165 -0
- package/dist/esm/schema.d.ts.map +1 -1
- package/dist/esm/schema.js +175 -0
- package/dist/esm/schema.js.map +1 -1
- package/package.json +3 -3
- package/src/assertion/impl/async-parametric.ts +2 -17
- package/src/assertion/impl/sync-collection.ts +135 -191
- package/src/assertion/impl/sync-date.ts +37 -105
- package/src/assertion/impl/sync-parametric.ts +2 -4
- package/src/assertion/impl/sync.ts +5 -2
- package/src/diff.ts +122 -29
- package/src/schema.ts +179 -0
package/dist/commonjs/diff.js
CHANGED
|
@@ -15,7 +15,7 @@ const jest_diff_1 = require("jest-diff");
|
|
|
15
15
|
const { isArray } = Array;
|
|
16
16
|
const { max } = Math;
|
|
17
17
|
const { stringify } = JSON;
|
|
18
|
-
const { entries } = Object;
|
|
18
|
+
const { entries, getOwnPropertyNames } = Object;
|
|
19
19
|
/**
|
|
20
20
|
* Extracts actual and expected values from a `ZodError` for meaningful diffs.
|
|
21
21
|
*
|
|
@@ -26,23 +26,69 @@ const { entries } = Object;
|
|
|
26
26
|
*/
|
|
27
27
|
const extractDiffValues = (zodError, subject) => {
|
|
28
28
|
try {
|
|
29
|
-
// Start with the original subject as the actual value
|
|
30
29
|
const actual = subject;
|
|
31
|
-
// Create a copy to modify as the expected value
|
|
32
30
|
let expected = subject != null ? deepClone(subject) : subject;
|
|
33
|
-
// Process each issue to build the expected value
|
|
34
31
|
for (const issue of zodError.issues) {
|
|
35
32
|
try {
|
|
36
|
-
// Filter path to only string/number keys (symbols are rare in practice)
|
|
37
33
|
const filteredPath = issue.path.filter((key) => typeof key === 'string' || typeof key === 'number');
|
|
38
34
|
switch (issue.code) {
|
|
35
|
+
case 'custom': {
|
|
36
|
+
const params = issue.params;
|
|
37
|
+
if (params?.bupkisType === 'missing_key' &&
|
|
38
|
+
filteredPath.length > 0) {
|
|
39
|
+
const missingKey = filteredPath[0];
|
|
40
|
+
if (typeof expected === 'object' && expected !== null) {
|
|
41
|
+
expected = {
|
|
42
|
+
...expected,
|
|
43
|
+
[missingKey]: '<missing>',
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
else if (filteredPath.length > 0) {
|
|
48
|
+
const actualValue = getValueAtPath(actual, filteredPath);
|
|
49
|
+
if (actualValue === undefined) {
|
|
50
|
+
expected = setValueAtPath(expected, filteredPath, '<missing value>');
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
break;
|
|
54
|
+
}
|
|
55
|
+
case 'invalid_format': {
|
|
56
|
+
const actualValue = getValueAtPath(actual, filteredPath);
|
|
57
|
+
let correctedValue = actualValue;
|
|
58
|
+
const regexMatch = issue.message.match(/pattern (.+)/);
|
|
59
|
+
if (regexMatch) {
|
|
60
|
+
correctedValue = `<string matching ${regexMatch[1]}>`;
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
correctedValue = '<string in valid format>';
|
|
64
|
+
}
|
|
65
|
+
expected = setValueAtPath(expected, filteredPath, correctedValue);
|
|
66
|
+
break;
|
|
67
|
+
}
|
|
39
68
|
case 'invalid_type': {
|
|
40
69
|
const correctedValue = createCorrectValueForType(issue.expected, getValueAtPath(actual, filteredPath));
|
|
41
70
|
expected = setValueAtPath(expected, filteredPath, correctedValue);
|
|
42
71
|
break;
|
|
43
72
|
}
|
|
73
|
+
case 'invalid_union': {
|
|
74
|
+
const actualValue = getValueAtPath(actual, filteredPath);
|
|
75
|
+
if (filteredPath.length === 0) {
|
|
76
|
+
if (typeof actualValue === 'object' && actualValue !== null) {
|
|
77
|
+
expected = '<string matching pattern>';
|
|
78
|
+
}
|
|
79
|
+
else if (typeof actualValue === 'string') {
|
|
80
|
+
expected = '<object satisfying schema>';
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
expected = '<value matching union schema>';
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
expected = setValueAtPath(expected, filteredPath, '<value matching union schema>');
|
|
88
|
+
}
|
|
89
|
+
break;
|
|
90
|
+
}
|
|
44
91
|
case 'invalid_value': {
|
|
45
|
-
// For literal/enum errors, use the first valid value
|
|
46
92
|
const correctedValue = issue.values && issue.values.length > 0
|
|
47
93
|
? issue.values[0]
|
|
48
94
|
: '<valid value>';
|
|
@@ -82,7 +128,6 @@ const extractDiffValues = (zodError, subject) => {
|
|
|
82
128
|
break;
|
|
83
129
|
}
|
|
84
130
|
case 'unrecognized_keys': {
|
|
85
|
-
// Remove unrecognized keys from expected
|
|
86
131
|
if (filteredPath.length === 0 &&
|
|
87
132
|
typeof expected === 'object' &&
|
|
88
133
|
expected !== null) {
|
|
@@ -97,21 +142,17 @@ const extractDiffValues = (zodError, subject) => {
|
|
|
97
142
|
break;
|
|
98
143
|
}
|
|
99
144
|
default: {
|
|
100
|
-
// For other error types, just mark that something should be different
|
|
101
|
-
// but don't try to guess what the correct value should be
|
|
102
145
|
break;
|
|
103
146
|
}
|
|
104
147
|
}
|
|
105
148
|
}
|
|
106
149
|
catch {
|
|
107
|
-
// If we can't process an individual issue, continue with others
|
|
108
150
|
continue;
|
|
109
151
|
}
|
|
110
152
|
}
|
|
111
153
|
return { actual, expected };
|
|
112
154
|
}
|
|
113
155
|
catch {
|
|
114
|
-
// If anything goes wrong, return undefined to fall back to pretty error
|
|
115
156
|
return { actual: undefined, expected: undefined };
|
|
116
157
|
}
|
|
117
158
|
};
|
|
@@ -181,7 +222,6 @@ const createCorrectValueForType = (expectedType, actualValue) => {
|
|
|
181
222
|
if (typeof actualValue === 'object') {
|
|
182
223
|
return stringify(actualValue);
|
|
183
224
|
}
|
|
184
|
-
// For primitive types (number, boolean, etc.) - we know it's not an object here
|
|
185
225
|
// eslint-disable-next-line @typescript-eslint/no-base-to-string
|
|
186
226
|
return `${actualValue}`;
|
|
187
227
|
case 'undefined':
|
|
@@ -203,7 +243,23 @@ const customDeepClone = (value) => {
|
|
|
203
243
|
if (isArray(value)) {
|
|
204
244
|
return value.map(customDeepClone);
|
|
205
245
|
}
|
|
206
|
-
|
|
246
|
+
if (value instanceof Error) {
|
|
247
|
+
const cloned = {};
|
|
248
|
+
for (const [key, val] of entries(value)) {
|
|
249
|
+
cloned[key] = customDeepClone(val);
|
|
250
|
+
}
|
|
251
|
+
for (const prop of getOwnPropertyNames(value)) {
|
|
252
|
+
if (!(prop in cloned)) {
|
|
253
|
+
try {
|
|
254
|
+
cloned[prop] = value[prop];
|
|
255
|
+
}
|
|
256
|
+
catch {
|
|
257
|
+
// Skip properties that can't be accessed
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
return cloned;
|
|
262
|
+
}
|
|
207
263
|
const cloned = {};
|
|
208
264
|
for (const [key, val] of entries(value)) {
|
|
209
265
|
cloned[key] = customDeepClone(val);
|
|
@@ -223,7 +279,6 @@ const deepClone = (value) => {
|
|
|
223
279
|
return structuredClone(value);
|
|
224
280
|
}
|
|
225
281
|
catch (error) {
|
|
226
|
-
// Handle DataCloneError for values that can't be cloned (functions, symbols, etc.)
|
|
227
282
|
if (error instanceof Error && error.name === 'DataCloneError') {
|
|
228
283
|
return customDeepClone(value);
|
|
229
284
|
}
|
|
@@ -259,21 +314,45 @@ const setValueAtPath = (obj, path, value) => {
|
|
|
259
314
|
return value;
|
|
260
315
|
}
|
|
261
316
|
if (obj == null) {
|
|
262
|
-
// Need to create the structure
|
|
263
317
|
obj = typeof path[0] === 'number' ? [] : {};
|
|
264
318
|
}
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
319
|
+
if (isArray(obj)) {
|
|
320
|
+
const result = [...obj];
|
|
321
|
+
const [head, ...tail] = path;
|
|
322
|
+
if (head !== undefined) {
|
|
323
|
+
if (tail.length === 0) {
|
|
324
|
+
result[head] = value;
|
|
325
|
+
}
|
|
326
|
+
else {
|
|
327
|
+
result[head] = setValueAtPath(result[head], tail, value);
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
return result;
|
|
331
|
+
}
|
|
332
|
+
else {
|
|
333
|
+
let result;
|
|
334
|
+
if (obj instanceof Error) {
|
|
335
|
+
result = {};
|
|
336
|
+
for (const prop of getOwnPropertyNames(obj)) {
|
|
337
|
+
if (prop !== 'stack') {
|
|
338
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
339
|
+
result[prop] = obj[prop];
|
|
340
|
+
}
|
|
341
|
+
}
|
|
272
342
|
}
|
|
273
343
|
else {
|
|
274
|
-
result
|
|
344
|
+
result = { ...obj };
|
|
345
|
+
}
|
|
346
|
+
const [head, ...tail] = path;
|
|
347
|
+
if (head !== undefined) {
|
|
348
|
+
if (tail.length === 0) {
|
|
349
|
+
result[head] = value;
|
|
350
|
+
}
|
|
351
|
+
else {
|
|
352
|
+
result[head] = setValueAtPath(result[head], tail, value);
|
|
353
|
+
}
|
|
275
354
|
}
|
|
355
|
+
return result;
|
|
276
356
|
}
|
|
277
|
-
return result;
|
|
278
357
|
};
|
|
279
358
|
//# sourceMappingURL=diff.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/diff.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;AAKH,yCAAiC;AAGjC,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;AAC1B,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AACrB,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;AAC3B,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/diff.ts"],"names":[],"mappings":"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"}
|