@overkill-dev/run 0.0.4 → 0.0.5

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.
Files changed (97) hide show
  1. package/assertion-protocol/assertion-evaluation.js +6 -0
  2. package/assertion-protocol/assertion-evaluation.js.map +1 -0
  3. package/assertion-protocol/assertion-node.js +33 -0
  4. package/assertion-protocol/assertion-node.js.map +1 -0
  5. package/assertion-protocol/assertion-reference.js +49 -0
  6. package/assertion-protocol/assertion-reference.js.map +1 -0
  7. package/assertion-protocol/assertions/boolean.js +12 -0
  8. package/assertion-protocol/assertions/boolean.js.map +1 -0
  9. package/assertion-protocol/assertions/collection.js +21 -0
  10. package/assertion-protocol/assertions/collection.js.map +1 -0
  11. package/assertion-protocol/assertions/dispatch.js +47 -0
  12. package/assertion-protocol/assertions/dispatch.js.map +1 -0
  13. package/assertion-protocol/assertions/equality.js +24 -0
  14. package/assertion-protocol/assertions/equality.js.map +1 -0
  15. package/assertion-protocol/assertions/fail.js +8 -0
  16. package/assertion-protocol/assertions/fail.js.map +1 -0
  17. package/assertion-protocol/assertions/numeric.js +43 -0
  18. package/assertion-protocol/assertions/numeric.js.map +1 -0
  19. package/assertion-protocol/assertions/partial.js +17 -0
  20. package/assertion-protocol/assertions/partial.js.map +1 -0
  21. package/assertion-protocol/assertions/presence.js +20 -0
  22. package/assertion-protocol/assertions/presence.js.map +1 -0
  23. package/assertion-protocol/assertions/string.js +33 -0
  24. package/assertion-protocol/assertions/string.js.map +1 -0
  25. package/assertion-protocol/assertions/type-shape.js +43 -0
  26. package/assertion-protocol/assertions/type-shape.js.map +1 -0
  27. package/assertion-protocol/collection-count.js +42 -0
  28. package/assertion-protocol/collection-count.js.map +1 -0
  29. package/assertion-protocol/evaluation.js +170 -0
  30. package/assertion-protocol/evaluation.js.map +1 -0
  31. package/assertion-protocol/partial-matching.js +13 -0
  32. package/assertion-protocol/partial-matching.js.map +1 -0
  33. package/assertion-protocol/source-location.js +76 -0
  34. package/assertion-protocol/source-location.js.map +1 -0
  35. package/assertion-protocol/thrown-error-record.js +17 -0
  36. package/assertion-protocol/thrown-error-record.js.map +1 -0
  37. package/assertion-protocol/thrown-matcher.js +201 -0
  38. package/assertion-protocol/thrown-matcher.js.map +1 -0
  39. package/compare/comparison-result.js +47 -0
  40. package/compare/comparison-result.js.map +1 -0
  41. package/compare/comparison-state.js +20 -0
  42. package/compare/comparison-state.js.map +1 -0
  43. package/compare/comparison.js +78 -0
  44. package/compare/comparison.js.map +1 -0
  45. package/compare/diff-path.js +37 -0
  46. package/compare/diff-path.js.map +1 -0
  47. package/compare/raw-comparison.js +285 -0
  48. package/compare/raw-comparison.js.map +1 -0
  49. package/compare/serialized-value-classification.js +99 -0
  50. package/compare/serialized-value-classification.js.map +1 -0
  51. package/compare/serialized-value-shape.js +12 -0
  52. package/compare/serialized-value-shape.js.map +1 -0
  53. package/compare/serialized-value-state.js +55 -0
  54. package/compare/serialized-value-state.js.map +1 -0
  55. package/compare/serialized-value.js +387 -0
  56. package/compare/serialized-value.js.map +1 -0
  57. package/compare/structured-diff.js +382 -0
  58. package/compare/structured-diff.js.map +1 -0
  59. package/compare/value-classification.js +112 -0
  60. package/compare/value-classification.js.map +1 -0
  61. package/diff/binary-diff.js +49 -0
  62. package/diff/binary-diff.js.map +1 -0
  63. package/diff/string-diff.js +22 -0
  64. package/diff/string-diff.js.map +1 -0
  65. package/engine/assertion-facade.js +361 -0
  66. package/engine/assertion-facade.js.map +1 -0
  67. package/engine/case-execution.js +408 -0
  68. package/engine/case-execution.js.map +1 -0
  69. package/engine/custom-assertion-recording.js +175 -0
  70. package/engine/custom-assertion-recording.js.map +1 -0
  71. package/engine/execution.d.ts +20 -0
  72. package/engine/execution.d.ts.map +1 -0
  73. package/engine/execution.js +323 -0
  74. package/engine/execution.js.map +1 -0
  75. package/engine/identity.js +5 -0
  76. package/engine/identity.js.map +1 -0
  77. package/engine/reporter-event-queue.js +23 -0
  78. package/engine/reporter-event-queue.js.map +1 -0
  79. package/engine/reporter.js +177 -0
  80. package/engine/reporter.js.map +1 -0
  81. package/engine/require-assertion-facade.js +127 -0
  82. package/engine/require-assertion-facade.js.map +1 -0
  83. package/engine/run-result.js +13 -0
  84. package/engine/run-result.js.map +1 -0
  85. package/package.json +8 -3
  86. package/packages/engine/assertion-protocol.entry-point.js +4 -0
  87. package/packages/engine/assertion-protocol.entry-point.js.map +1 -0
  88. package/packages/run/run.entry-point.d.ts +2 -1
  89. package/packages/run/run.entry-point.d.ts.map +1 -1
  90. package/packages/run/run.entry-point.js +1 -0
  91. package/packages/run/run.entry-point.js.map +1 -1
  92. package/readme.md +7 -2
  93. package/run/run.d.ts +87 -36
  94. package/run/run.d.ts.map +1 -1
  95. package/run/run.js +182 -8
  96. package/run/run.js.map +1 -1
  97. package/sbom.cdx.json +22 -5
@@ -0,0 +1,78 @@
1
+ import { createStringHunks } from "../diff/string-diff.js";
2
+ import { comparisonResult, emptyPath, failedResult, passedResult, valueMismatch } from "./comparison-result.js";
3
+ import { compareExactly, comparePartially } from "./raw-comparison.js";
4
+ import { exactStructuredDiff, partialStructuredDiff } from "./structured-diff.js";
5
+ import { serializeValue } from "./serialized-value.js";
6
+
7
+ export function compareEqualValues(actual, expected) {
8
+ return Object.is(actual, expected) ? passedResult(actual, expected) : failedResult(actual, expected, null);
9
+ }
10
+ export function compareStringEquality(actual, expected) {
11
+ if (Object.is(actual, expected)) {
12
+ return passedResult(actual, expected);
13
+ }
14
+ return failedResult(actual, expected, {
15
+ actual,
16
+ expected,
17
+ hunks: createStringHunks(expected, actual),
18
+ kind: 'string'
19
+ });
20
+ }
21
+ export function compareDeepValues(actual, expected) {
22
+ if (compareExactly(actual, expected)) {
23
+ return passedResult(actual, expected);
24
+ }
25
+ const comparison = exactStructuredDiff(actual, expected);
26
+ return comparison.passed ? valueMismatch(actual, expected) : comparison;
27
+ }
28
+ export function comparePartialValue(actual, expected) {
29
+ if (comparePartially(actual, expected)) {
30
+ return passedResult(actual, expected);
31
+ }
32
+ const comparison = partialStructuredDiff(actual, expected);
33
+ return comparison.passed ? valueMismatch(actual, expected) : comparison;
34
+ }
35
+ export function compareArrayContainsPartial(actual, expected) {
36
+ if (!Array.isArray(actual)) {
37
+ return valueMismatch(actual, expected);
38
+ }
39
+ const passed = actual.some(function itemMatches(item) {
40
+ return comparePartially(item, expected);
41
+ });
42
+ return passed
43
+ ? passedResult(actual, expected)
44
+ : failedResult(actual, expected, {
45
+ kind: 'array',
46
+ operations: [
47
+ {
48
+ operation: 'missing-member',
49
+ value: serializeValue(expected)
50
+ }
51
+ ]
52
+ });
53
+ }
54
+ export function compareMembersPartialDeepEqual(actual, expected) {
55
+ if (!Array.isArray(actual) || !Array.isArray(expected)) {
56
+ return valueMismatch(actual, expected);
57
+ }
58
+ const missingMembers = expected.filter(function missingMember(expectedMember) {
59
+ return actual.every(function itemMatches(actualMember) {
60
+ return !comparePartially(actualMember, expectedMember);
61
+ });
62
+ });
63
+ return missingMembers.length === 0
64
+ ? passedResult(actual, expected)
65
+ : failedResult(actual, expected, {
66
+ kind: 'array',
67
+ operations: missingMembers.map(function toMissingMember(member) {
68
+ return {
69
+ operation: 'missing-member',
70
+ value: serializeValue(member)
71
+ };
72
+ })
73
+ });
74
+ }
75
+ export function serializedOutcome(actual, expected, passed) {
76
+ return comparisonResult({ actual, diff: null, expected, passed, path: emptyPath });
77
+ }
78
+ //# sourceMappingURL=comparison.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comparison.js","sourceRoot":"","sources":["../../../../source/compare/comparison.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import { serializeValue } from "./serialized-value.js";
2
+ function serializedKey(key) {
3
+ return typeof key === 'symbol'
4
+ ? { kind: 'symbol', value: key.toString() }
5
+ : { kind: 'string', value: String(key) };
6
+ }
7
+ export function propertySegment(key) {
8
+ return {
9
+ key: serializedKey(key),
10
+ kind: 'property'
11
+ };
12
+ }
13
+ export function indexSegment(index) {
14
+ return { index, kind: 'index' };
15
+ }
16
+ export function byteSegment(offset) {
17
+ return { kind: 'byte', offset };
18
+ }
19
+ export function mapKeySegment(key) {
20
+ return {
21
+ key: serializeValue(key),
22
+ kind: 'map-key'
23
+ };
24
+ }
25
+ export function mapValueSegment(key) {
26
+ return {
27
+ key: serializeValue(key),
28
+ kind: 'map-value'
29
+ };
30
+ }
31
+ export function setValueSegment(value) {
32
+ return {
33
+ kind: 'set-value',
34
+ value: serializeValue(value)
35
+ };
36
+ }
37
+ //# sourceMappingURL=diff-path.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff-path.js","sourceRoot":"","sources":["../../../../source/compare/diff-path.ts"],"names":[],"mappings":"AACA,OAAO,EAA8B,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEnF,SAAS,aAAa,CAAC,GAAgB;IACnC,OAAO,OAAO,GAAG,KAAK,QAAQ;QAC1B,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE;QAC3C,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,GAAgB;IAC5C,OAAO;QACH,GAAG,EAAE,aAAa,CAAC,GAAG,CAAC;QACvB,IAAI,EAAE,UAAU;KACnB,CAAC;AACN,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAa;IACtC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,MAAc;IACtC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAAY;IACtC,OAAO;QACH,GAAG,EAAE,cAAc,CAAC,GAAG,CAAC;QACxB,IAAI,EAAE,SAAS;KAClB,CAAC;AACN,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,GAAY;IACxC,OAAO;QACH,GAAG,EAAE,cAAc,CAAC,GAAG,CAAC;QACxB,IAAI,EAAE,WAAW;KACpB,CAAC;AACN,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAc;IAC1C,OAAO;QACH,IAAI,EAAE,WAAW;QACjB,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC;KAC/B,CAAC;AACN,CAAC"}
@@ -0,0 +1,285 @@
1
+ import { createComparisonState, objectPairStatus } from "./comparison-state.js";
2
+ import { byteSourcePair, isDateValue, isErrorValue, isMapCandidate, isOpaqueIdentityValue, isRegExpValue, isSetCandidate, mapPair, prototypeOf, setPair } from "./value-classification.js";
3
+ function keyText(key) {
4
+ return typeof key === 'symbol' ? key.toString() : String(key);
5
+ }
6
+ function safePropertyDescriptor(value, key) {
7
+ try {
8
+ return Object.getOwnPropertyDescriptor(value, key);
9
+ }
10
+ catch {
11
+ return undefined;
12
+ }
13
+ }
14
+ export function sortedKeys(value) {
15
+ try {
16
+ const descriptors = Object.getOwnPropertyDescriptors(value);
17
+ return Reflect
18
+ .ownKeys(descriptors)
19
+ .filter(function enumerableDataKey(key) {
20
+ const descriptor = Object.getOwnPropertyDescriptor(value, key);
21
+ return descriptor?.enumerable === true;
22
+ })
23
+ .toSorted(function compareKeys(first, second) {
24
+ return keyText(first).localeCompare(keyText(second));
25
+ });
26
+ }
27
+ catch {
28
+ return null;
29
+ }
30
+ }
31
+ export function rawProperty(value, key) {
32
+ const descriptor = safePropertyDescriptor(value, key);
33
+ if (descriptor === undefined || !Object.hasOwn(descriptor, 'value')) {
34
+ return {
35
+ key,
36
+ value: { accessor: true }
37
+ };
38
+ }
39
+ return { key, value: descriptor.value };
40
+ }
41
+ export function bytesFrom(value) {
42
+ if (value instanceof ArrayBuffer) {
43
+ return Array.from(new Uint8Array(value));
44
+ }
45
+ return Array.from(new Uint8Array(value.buffer, value.byteOffset, value.byteLength));
46
+ }
47
+ function compareBytes(actual, expected) {
48
+ const actualBytes = bytesFrom(actual);
49
+ const expectedBytes = bytesFrom(expected);
50
+ return actualBytes.length === expectedBytes.length &&
51
+ actualBytes.every(function sameByte(actualByte, index) {
52
+ return actualByte === expectedBytes[index];
53
+ });
54
+ }
55
+ export function mapEntries(value) {
56
+ return Array.from(value, function toEntry([key, entryValue]) {
57
+ return { key, value: entryValue };
58
+ });
59
+ }
60
+ export function setValues(value) {
61
+ return Array.from(value);
62
+ }
63
+ function primitiveOrFunction(value) {
64
+ return value === null || typeof value !== 'object';
65
+ }
66
+ function compareSeenObjects(actual, expected, state) {
67
+ const pairStatus = objectPairStatus(actual, expected, state);
68
+ if (pairStatus === 'seen') {
69
+ return true;
70
+ }
71
+ return pairStatus === 'topology-mismatch' ? false : null;
72
+ }
73
+ function objectKeyCountMatches(actualKeys, expectedKeys, mode) {
74
+ return mode === 'partial' || actualKeys.length === expectedKeys.length;
75
+ }
76
+ function compareArrays(actual, expected, context) {
77
+ const exactLengthMismatch = context.mode === 'exact' && actual.length !== expected.length;
78
+ const partialLengthMismatch = context.mode === 'partial' && actual.length < expected.length;
79
+ if (exactLengthMismatch || partialLengthMismatch) {
80
+ return false;
81
+ }
82
+ return Array.from({ length: expected.length }).every(function itemMatches(_unusedValue, index) {
83
+ const expectedValue = expected[index];
84
+ return Object.hasOwn(actual, index) === Object.hasOwn(expected, index) &&
85
+ (!Object.hasOwn(expected, index) ||
86
+ context.compare(actual[index], expectedValue, context.state, context.mode));
87
+ });
88
+ }
89
+ function compareObjects(actual, expected, context) {
90
+ const actualKeys = sortedKeys(actual);
91
+ const expectedKeys = sortedKeys(expected);
92
+ if (actualKeys === null || expectedKeys === null) {
93
+ return false;
94
+ }
95
+ return objectKeyCountMatches(actualKeys, expectedKeys, context.mode) &&
96
+ expectedKeys.every(function propertyMatches(expectedKey) {
97
+ return actualKeys.includes(expectedKey) &&
98
+ context.compare(rawProperty(actual, expectedKey).value, rawProperty(expected, expectedKey).value, context.state, context.mode);
99
+ });
100
+ }
101
+ function matchedMapIndex(actualEntries, expectedEntry, matchedActualIndexes, context) {
102
+ return actualEntries.findIndex(function matchesEntry(actualEntry, index) {
103
+ return !matchedActualIndexes.has(index) &&
104
+ context.compare(actualEntry.key, expectedEntry.key, createComparisonState(), 'exact') &&
105
+ context.compare(actualEntry.value, expectedEntry.value, createComparisonState(), context.mode);
106
+ });
107
+ }
108
+ function mapSizeMatches(actualEntries, expectedEntries, mode) {
109
+ return mode === 'partial' || actualEntries.length === expectedEntries.length;
110
+ }
111
+ function compareMaps(actual, expected, context) {
112
+ const actualEntries = mapEntries(actual);
113
+ const expectedEntries = mapEntries(expected);
114
+ const matchedActualIndexes = new Set();
115
+ return mapSizeMatches(actualEntries, expectedEntries, context.mode) &&
116
+ expectedEntries.every(function entryMatches(expectedEntry) {
117
+ const matchIndex = matchedMapIndex(actualEntries, expectedEntry, matchedActualIndexes, context);
118
+ const actualEntry = actualEntries[matchIndex];
119
+ const matched = actualEntry !== undefined &&
120
+ context.compare(actualEntry.key, expectedEntry.key, context.state, 'exact') &&
121
+ context.compare(actualEntry.value, expectedEntry.value, context.state, context.mode);
122
+ if (matched) {
123
+ matchedActualIndexes.add(matchIndex);
124
+ }
125
+ return matched;
126
+ });
127
+ }
128
+ function matchedSetIndex(actualValues, expectedValue, matchedActualIndexes, context) {
129
+ return actualValues.findIndex(function matchesValue(actualValue, index) {
130
+ return !matchedActualIndexes.has(index) &&
131
+ context.compare(actualValue, expectedValue, createComparisonState(), context.mode);
132
+ });
133
+ }
134
+ function setSizeMatches(actualValues, expectedValues, mode) {
135
+ return mode === 'partial' || actualValues.length === expectedValues.length;
136
+ }
137
+ function compareSets(actual, expected, context) {
138
+ const actualValues = setValues(actual);
139
+ const expectedValues = setValues(expected);
140
+ const matchedActualIndexes = new Set();
141
+ return setSizeMatches(actualValues, expectedValues, context.mode) &&
142
+ expectedValues.every(function valueMatches(expectedValue) {
143
+ const matchIndex = matchedSetIndex(actualValues, expectedValue, matchedActualIndexes, context);
144
+ const actualValue = actualValues[matchIndex];
145
+ const matched = context.compare(actualValue, expectedValue, context.state, context.mode);
146
+ if (matched) {
147
+ matchedActualIndexes.add(matchIndex);
148
+ }
149
+ return matched;
150
+ });
151
+ }
152
+ function compareErrors(actual, expected, context) {
153
+ return actual.name === expected.name &&
154
+ actual.message === expected.message &&
155
+ compareObjects(actual, expected, context);
156
+ }
157
+ function firstReferenceResult(comparisons, actual, expected, context) {
158
+ for (const comparison of comparisons) {
159
+ const comparisonResult = comparison(actual, expected, context);
160
+ if (comparisonResult !== null) {
161
+ return comparisonResult;
162
+ }
163
+ }
164
+ return false;
165
+ }
166
+ const exactReferenceComparisons = [
167
+ function compareArrayValues(actual, expected, context) {
168
+ if (!Array.isArray(actual) && !Array.isArray(expected)) {
169
+ return null;
170
+ }
171
+ return Array.isArray(actual) && Array.isArray(expected) && compareArrays(actual, expected, context);
172
+ },
173
+ function compareByteValues(actual, expected) {
174
+ const pair = byteSourcePair(actual, expected);
175
+ return pair === null ? null : compareBytes(pair.actual, pair.expected);
176
+ },
177
+ function compareDateValues(actual, expected) {
178
+ return isDateValue(actual) || isDateValue(expected)
179
+ ? isDateValue(actual) && isDateValue(expected) && Object.is(actual.getTime(), expected.getTime())
180
+ : null;
181
+ },
182
+ function compareRegExpValues(actual, expected) {
183
+ if (!isRegExpValue(actual) && !isRegExpValue(expected)) {
184
+ return null;
185
+ }
186
+ return isRegExpValue(actual) && isRegExpValue(expected) &&
187
+ actual.source === expected.source &&
188
+ actual.flags === expected.flags;
189
+ },
190
+ function compareErrorValues(actual, expected, context) {
191
+ return isErrorValue(actual) || isErrorValue(expected)
192
+ ? isErrorValue(actual) && isErrorValue(expected) && compareErrors(actual, expected, context)
193
+ : null;
194
+ },
195
+ function compareOpaqueValues(actual, expected) {
196
+ return isOpaqueIdentityValue(actual) || isOpaqueIdentityValue(expected) ? false : null;
197
+ },
198
+ function compareMapValues(actual, expected, context) {
199
+ const pair = mapPair(actual, expected);
200
+ return isMapCandidate(actual) || isMapCandidate(expected)
201
+ ? pair !== null && compareMaps(pair.actual, pair.expected, context)
202
+ : null;
203
+ },
204
+ function compareSetValues(actual, expected, context) {
205
+ const pair = setPair(actual, expected);
206
+ return isSetCandidate(actual) || isSetCandidate(expected)
207
+ ? pair !== null && compareSets(pair.actual, pair.expected, context)
208
+ : null;
209
+ },
210
+ function compareObjectValues(actual, expected, context) {
211
+ return prototypeOf(actual) === prototypeOf(expected) &&
212
+ compareObjects(actual, expected, context);
213
+ }
214
+ ];
215
+ const partialReferenceComparisons = [
216
+ function compareArrayValues(actual, expected, context) {
217
+ return Array.isArray(expected)
218
+ ? Array.isArray(actual) && compareArrays(actual, expected, context)
219
+ : null;
220
+ },
221
+ function compareByteValues(actual, expected) {
222
+ const pair = byteSourcePair(actual, expected);
223
+ return pair === null ? null : compareBytes(pair.actual, pair.expected);
224
+ },
225
+ function compareDateValues(actual, expected) {
226
+ return isDateValue(expected)
227
+ ? isDateValue(actual) && Object.is(actual.getTime(), expected.getTime())
228
+ : null;
229
+ },
230
+ function compareRegExpValues(actual, expected) {
231
+ return isRegExpValue(expected)
232
+ ? isRegExpValue(actual) && actual.source === expected.source && actual.flags === expected.flags
233
+ : null;
234
+ },
235
+ function compareErrorValues(actual, expected, context) {
236
+ return isErrorValue(expected)
237
+ ? isErrorValue(actual) && compareErrors(actual, expected, context)
238
+ : null;
239
+ },
240
+ function compareOpaqueValues(actual, expected) {
241
+ return isOpaqueIdentityValue(actual) || isOpaqueIdentityValue(expected) ? false : null;
242
+ },
243
+ function compareMapValues(actual, expected, context) {
244
+ const pair = mapPair(actual, expected);
245
+ return isMapCandidate(expected)
246
+ ? pair !== null && compareMaps(pair.actual, pair.expected, context)
247
+ : null;
248
+ },
249
+ function compareSetValues(actual, expected, context) {
250
+ const pair = setPair(actual, expected);
251
+ return isSetCandidate(expected)
252
+ ? pair !== null && compareSets(pair.actual, pair.expected, context)
253
+ : null;
254
+ },
255
+ compareObjects
256
+ ];
257
+ function isReferenceValue(value) {
258
+ return value !== null && typeof value === 'object';
259
+ }
260
+ function compareReferences(actual, expected, context) {
261
+ const seen = compareSeenObjects(actual, expected, context.state);
262
+ if (seen !== null) {
263
+ return seen;
264
+ }
265
+ const comparisons = context.mode === 'exact' ? exactReferenceComparisons : partialReferenceComparisons;
266
+ return firstReferenceResult(comparisons, actual, expected, context);
267
+ }
268
+ function compareRaw(actual, expected, state, mode) {
269
+ if (Object.is(actual, expected)) {
270
+ return true;
271
+ }
272
+ if (primitiveOrFunction(actual) || primitiveOrFunction(expected)) {
273
+ return false;
274
+ }
275
+ return isReferenceValue(actual) && isReferenceValue(expected)
276
+ ? compareReferences(actual, expected, { compare: compareRaw, mode, state })
277
+ : false;
278
+ }
279
+ export function compareExactly(actual, expected) {
280
+ return compareRaw(actual, expected, createComparisonState(), 'exact');
281
+ }
282
+ export function comparePartially(actual, expected) {
283
+ return compareRaw(actual, expected, createComparisonState(), 'partial');
284
+ }
285
+ //# sourceMappingURL=raw-comparison.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"raw-comparison.js","sourceRoot":"","sources":["../../../../source/compare/raw-comparison.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAwB,MAAM,uBAAuB,CAAC;AACtG,OAAO,EACH,cAAc,EACd,WAAW,EACX,YAAY,EACZ,cAAc,EACd,qBAAqB,EACrB,aAAa,EACb,cAAc,EACd,OAAO,EACP,WAAW,EACX,OAAO,EAEV,MAAM,2BAA2B,CAAC;AAwCnC,SAAS,OAAO,CAAC,GAAgB;IAC7B,OAAO,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAClE,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAqB,EAAE,GAAgB;IACnE,IAAI,CAAC;QACD,OAAO,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,SAAS,CAAC;IACrB,CAAC;AACL,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAqB;IAC5C,IAAI,CAAC;QACD,MAAM,WAAW,GAAG,MAAM,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC;QAE5D,OAAO,OAAO;aACT,OAAO,CAAC,WAAW,CAAC;aACpB,MAAM,CAAC,SAAS,iBAAiB,CAAC,GAAG;YAClC,MAAM,UAAU,GAAG,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAE/D,OAAO,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC;QAC3C,CAAC,CAAC;aACD,QAAQ,CAAC,SAAS,WAAW,CAAC,KAAK,EAAE,MAAM;YACxC,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;IACX,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,IAAI,CAAC;IAChB,CAAC;AACL,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAqB,EAAE,GAAgB;IAC/D,MAAM,UAAU,GAAG,sBAAsB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAEtD,IAAI,UAAU,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE,CAAC;QAClE,OAAO;YACH,GAAG;YACH,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;SAC5B,CAAC;IACN,CAAC;IAED,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAiB;IACvC,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;AACxF,CAAC;AAED,SAAS,YAAY,CAAC,MAAkB,EAAE,QAAoB;IAC1D,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IACtC,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IAE1C,OAAO,WAAW,CAAC,MAAM,KAAK,aAAa,CAAC,MAAM;QAC9C,WAAW,CAAC,KAAK,CAAC,SAAS,QAAQ,CAAC,UAAU,EAAE,KAAK;YACjD,OAAO,UAAU,KAAK,aAAa,CAAC,KAAK,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAoC;IAC3D,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,OAAO,CAAC,CAAE,GAAG,EAAE,UAAU,CAAE;QACzD,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;IACtC,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAA2B;IACjD,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7B,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAc;IACvC,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC;AACvD,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAsB,EAAE,QAAwB,EAAE,KAAsB;IAChG,MAAM,UAAU,GAAG,gBAAgB,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IAE7D,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,UAAU,KAAK,mBAAmB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7D,CAAC;AAED,SAAS,qBAAqB,CAC1B,UAAkC,EAClC,YAAoC,EACpC,IAAoB;IAEpB,OAAO,IAAI,KAAK,SAAS,IAAI,UAAU,CAAC,MAAM,KAAK,YAAY,CAAC,MAAM,CAAC;AAC3E,CAAC;AAED,SAAS,aAAa,CAAC,MAA0B,EAAE,QAA4B,EAAE,OAA0B;IACvG,MAAM,mBAAmB,GAAG,OAAO,CAAC,IAAI,KAAK,OAAO,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,CAAC;IAC1F,MAAM,qBAAqB,GAAG,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;IAE5F,IAAI,mBAAmB,IAAI,qBAAqB,EAAE,CAAC;QAC/C,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,WAAW,CAAC,YAAY,EAAE,KAAK;QACzF,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAEtC,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC;YAClE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC;gBAC5B,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACxF,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,cAAc,CAAC,MAAsB,EAAE,QAAwB,EAAE,OAA0B;IAChG,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IACtC,MAAM,YAAY,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IAE1C,IAAI,UAAU,KAAK,IAAI,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;QAC/C,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,OAAO,qBAAqB,CAAC,UAAU,EAAE,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC;QAChE,YAAY,CAAC,KAAK,CAAC,SAAS,eAAe,CAAC,WAAW;YACnD,OAAO,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC;gBACnC,OAAO,CAAC,OAAO,CACX,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,KAAK,EACtC,WAAW,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,KAAK,EACxC,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,IAAI,CACf,CAAC;QACV,CAAC,CAAC,CAAC;AACX,CAAC;AAED,SAAS,eAAe,CACpB,aAAqC,EACrC,aAA0B,EAC1B,oBAAyC,EACzC,OAA0B;IAE1B,OAAO,aAAa,CAAC,SAAS,CAAC,SAAS,YAAY,CAAC,WAAW,EAAE,KAAK;QACnE,OAAO,CAAC,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC;YACnC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,aAAa,CAAC,GAAG,EAAE,qBAAqB,EAAE,EAAE,OAAO,CAAC;YACrF,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE,qBAAqB,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACvG,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,cAAc,CACnB,aAAqC,EACrC,eAAuC,EACvC,IAAoB;IAEpB,OAAO,IAAI,KAAK,SAAS,IAAI,aAAa,CAAC,MAAM,KAAK,eAAe,CAAC,MAAM,CAAC;AACjF,CAAC;AAED,SAAS,WAAW,CAChB,MAAqC,EACrC,QAAuC,EACvC,OAA0B;IAE1B,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IACzC,MAAM,eAAe,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC7C,MAAM,oBAAoB,GAAG,IAAI,GAAG,EAAU,CAAC;IAE/C,OAAO,cAAc,CAAC,aAAa,EAAE,eAAe,EAAE,OAAO,CAAC,IAAI,CAAC;QAC/D,eAAe,CAAC,KAAK,CAAC,SAAS,YAAY,CAAC,aAAa;YACrD,MAAM,UAAU,GAAG,eAAe,CAAC,aAAa,EAAE,aAAa,EAAE,oBAAoB,EAAE,OAAO,CAAC,CAAC;YAChG,MAAM,WAAW,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;YAC9C,MAAM,OAAO,GAAG,WAAW,KAAK,SAAS;gBACrC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC;gBAC3E,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;YAEzF,IAAI,OAAO,EAAE,CAAC;gBACV,oBAAoB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACzC,CAAC;YAED,OAAO,OAAO,CAAC;QACnB,CAAC,CAAC,CAAC;AACX,CAAC;AAED,SAAS,eAAe,CACpB,YAAgC,EAChC,aAAsB,EACtB,oBAAyC,EACzC,OAA0B;IAE1B,OAAO,YAAY,CAAC,SAAS,CAAC,SAAS,YAAY,CAAC,WAAW,EAAE,KAAK;QAClE,OAAO,CAAC,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC;YACnC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,aAAa,EAAE,qBAAqB,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3F,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,cAAc,CACnB,YAAgC,EAChC,cAAkC,EAClC,IAAoB;IAEpB,OAAO,IAAI,KAAK,SAAS,IAAI,YAAY,CAAC,MAAM,KAAK,cAAc,CAAC,MAAM,CAAC;AAC/E,CAAC;AAED,SAAS,WAAW,CAChB,MAA4B,EAC5B,QAA8B,EAC9B,OAA0B;IAE1B,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,cAAc,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC3C,MAAM,oBAAoB,GAAG,IAAI,GAAG,EAAU,CAAC;IAE/C,OAAO,cAAc,CAAC,YAAY,EAAE,cAAc,EAAE,OAAO,CAAC,IAAI,CAAC;QAC7D,cAAc,CAAC,KAAK,CAAC,SAAS,YAAY,CAAC,aAAa;YACpD,MAAM,UAAU,GAAG,eAAe,CAAC,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,OAAO,CAAC,CAAC;YAC/F,MAAM,WAAW,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;YAC7C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,aAAa,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;YAEzF,IAAI,OAAO,EAAE,CAAC;gBACV,oBAAoB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACzC,CAAC;YAED,OAAO,OAAO,CAAC;QACnB,CAAC,CAAC,CAAC;AACX,CAAC;AAED,SAAS,aAAa,CAClB,MAAa,EACb,QAAe,EACf,OAA0B;IAE1B,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI;QAChC,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,OAAO;QACnC,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,oBAAoB,CACzB,WAA2C,EAC3C,MAAsB,EACtB,QAAwB,EACxB,OAA0B;IAE1B,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACnC,MAAM,gBAAgB,GAAG,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QAE/D,IAAI,gBAAgB,KAAK,IAAI,EAAE,CAAC;YAC5B,OAAO,gBAAgB,CAAC;QAC5B,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,MAAM,yBAAyB,GAAmC;IAC9D,SAAS,kBAAkB,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO;QACjD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrD,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACxG,CAAC;IACD,SAAS,iBAAiB,CAAC,MAAM,EAAE,QAAQ;QACvC,MAAM,IAAI,GAAG,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAE9C,OAAO,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3E,CAAC;IACD,SAAS,iBAAiB,CAAC,MAAM,EAAE,QAAQ;QACvC,OAAO,WAAW,CAAC,MAAM,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC;YAC/C,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;YACjG,CAAC,CAAC,IAAI,CAAC;IACf,CAAC;IACD,SAAS,mBAAmB,CAAC,MAAM,EAAE,QAAQ;QACzC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrD,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,OAAO,aAAa,CAAC,MAAM,CAAC,IAAI,aAAa,CAAC,QAAQ,CAAC;YACnD,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;YACjC,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK,CAAC;IACxC,CAAC;IACD,SAAS,kBAAkB,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO;QACjD,OAAO,YAAY,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC;YACjD,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,IAAI,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC;YAC5F,CAAC,CAAC,IAAI,CAAC;IACf,CAAC;IACD,SAAS,mBAAmB,CAAC,MAAM,EAAE,QAAQ;QACzC,OAAO,qBAAqB,CAAC,MAAM,CAAC,IAAI,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3F,CAAC;IACD,SAAS,gBAAgB,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO;QAC/C,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAEvC,OAAO,cAAc,CAAC,MAAM,CAAC,IAAI,cAAc,CAAC,QAAQ,CAAC;YACrD,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;YACnE,CAAC,CAAC,IAAI,CAAC;IACf,CAAC;IACD,SAAS,gBAAgB,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO;QAC/C,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAEvC,OAAO,cAAc,CAAC,MAAM,CAAC,IAAI,cAAc,CAAC,QAAQ,CAAC;YACrD,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;YACnE,CAAC,CAAC,IAAI,CAAC;IACf,CAAC;IACD,SAAS,mBAAmB,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO;QAClD,OAAO,WAAW,CAAC,MAAM,CAAC,KAAK,WAAW,CAAC,QAAQ,CAAC;YAChD,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC;CACJ,CAAC;AAEF,MAAM,2BAA2B,GAAmC;IAChE,SAAS,kBAAkB,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO;QACjD,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;YAC1B,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC;YACnE,CAAC,CAAC,IAAI,CAAC;IACf,CAAC;IACD,SAAS,iBAAiB,CAAC,MAAM,EAAE,QAAQ;QACvC,MAAM,IAAI,GAAG,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAE9C,OAAO,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3E,CAAC;IACD,SAAS,iBAAiB,CAAC,MAAM,EAAE,QAAQ;QACvC,OAAO,WAAW,CAAC,QAAQ,CAAC;YACxB,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;YACxE,CAAC,CAAC,IAAI,CAAC;IACf,CAAC;IACD,SAAS,mBAAmB,CAAC,MAAM,EAAE,QAAQ;QACzC,OAAO,aAAa,CAAC,QAAQ,CAAC;YAC1B,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK;YAC/F,CAAC,CAAC,IAAI,CAAC;IACf,CAAC;IACD,SAAS,kBAAkB,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO;QACjD,OAAO,YAAY,CAAC,QAAQ,CAAC;YACzB,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC;YAClE,CAAC,CAAC,IAAI,CAAC;IACf,CAAC;IACD,SAAS,mBAAmB,CAAC,MAAM,EAAE,QAAQ;QACzC,OAAO,qBAAqB,CAAC,MAAM,CAAC,IAAI,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3F,CAAC;IACD,SAAS,gBAAgB,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO;QAC/C,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAEvC,OAAO,cAAc,CAAC,QAAQ,CAAC;YAC3B,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;YACnE,CAAC,CAAC,IAAI,CAAC;IACf,CAAC;IACD,SAAS,gBAAgB,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO;QAC/C,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAEvC,OAAO,cAAc,CAAC,QAAQ,CAAC;YAC3B,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;YACnE,CAAC,CAAC,IAAI,CAAC;IACf,CAAC;IACD,cAAc;CACjB,CAAC;AAEF,SAAS,gBAAgB,CAAC,KAAc;IACpC,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC;AACvD,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAsB,EAAE,QAAwB,EAAE,OAA0B;IACnG,MAAM,IAAI,GAAG,kBAAkB,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAEjE,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAChB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,2BAA2B,CAAC;IAEvG,OAAO,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AACxE,CAAC;AAED,SAAS,UAAU,CAAC,MAAe,EAAE,QAAiB,EAAE,KAAsB,EAAE,IAAoB;IAChG,IAAI,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAI,mBAAmB,CAAC,MAAM,CAAC,IAAI,mBAAmB,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/D,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,OAAO,gBAAgB,CAAC,MAAM,CAAC,IAAI,gBAAgB,CAAC,QAAQ,CAAC;QACzD,CAAC,CAAC,iBAAiB,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QAC3E,CAAC,CAAC,KAAK,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAAe,EAAE,QAAiB;IAC7D,OAAO,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE,qBAAqB,EAAE,EAAE,OAAO,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAe,EAAE,QAAiB;IAC/D,OAAO,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE,qBAAqB,EAAE,EAAE,SAAS,CAAC,CAAC;AAC5E,CAAC"}
@@ -0,0 +1,99 @@
1
+ function constructorNameFromPrototype(prototype) {
2
+ if (prototype === null || typeof prototype !== 'object') {
3
+ return 'Object';
4
+ }
5
+ const descriptor = Object.getOwnPropertyDescriptor(prototype, 'constructor');
6
+ const constructorValue = descriptor?.value;
7
+ const name = typeof constructorValue === 'function' ? constructorValue.name : 'Object';
8
+ return name.length === 0 ? '(anonymous)' : name;
9
+ }
10
+ export function constructorName(value) {
11
+ try {
12
+ const prototype = Object.getPrototypeOf(value);
13
+ return constructorNameFromPrototype(prototype);
14
+ }
15
+ catch {
16
+ return 'Unavailable';
17
+ }
18
+ }
19
+ export function prototypeIs(value, prototype) {
20
+ try {
21
+ return Object.getPrototypeOf(value) === prototype;
22
+ }
23
+ catch {
24
+ return false;
25
+ }
26
+ }
27
+ export function isBufferValue(value) {
28
+ try {
29
+ return Buffer.isBuffer(value);
30
+ }
31
+ catch {
32
+ return false;
33
+ }
34
+ }
35
+ export function isArrayBufferView(value) {
36
+ try {
37
+ return ArrayBuffer.isView(value);
38
+ }
39
+ catch {
40
+ return false;
41
+ }
42
+ }
43
+ export function isArrayBufferValue(value) {
44
+ try {
45
+ return value instanceof ArrayBuffer;
46
+ }
47
+ catch {
48
+ return false;
49
+ }
50
+ }
51
+ export function isDateValue(value) {
52
+ try {
53
+ return value instanceof Date;
54
+ }
55
+ catch {
56
+ return false;
57
+ }
58
+ }
59
+ export function isRegExpValue(value) {
60
+ try {
61
+ return value instanceof RegExp;
62
+ }
63
+ catch {
64
+ return false;
65
+ }
66
+ }
67
+ export function isErrorValue(value) {
68
+ try {
69
+ return value instanceof Error;
70
+ }
71
+ catch {
72
+ return false;
73
+ }
74
+ }
75
+ export function isPromiseValue(value) {
76
+ try {
77
+ return value instanceof Promise;
78
+ }
79
+ catch {
80
+ return false;
81
+ }
82
+ }
83
+ export function isWeakMapValue(value) {
84
+ try {
85
+ return value instanceof WeakMap;
86
+ }
87
+ catch {
88
+ return false;
89
+ }
90
+ }
91
+ export function isWeakSetValue(value) {
92
+ try {
93
+ return value instanceof WeakSet;
94
+ }
95
+ catch {
96
+ return false;
97
+ }
98
+ }
99
+ //# sourceMappingURL=serialized-value-classification.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serialized-value-classification.js","sourceRoot":"","sources":["../../../../source/compare/serialized-value-classification.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ const bytesPerKilobyte = 1024;
2
+ const defaultOperandKilobytes = 64;
3
+ const defaultStringKilobytes = 8;
4
+ export const defaultSerializationBudget = {
5
+ arrayEntries: 100,
6
+ depth: 8,
7
+ objectEntries: 100,
8
+ operandBytes: defaultOperandKilobytes * bytesPerKilobyte,
9
+ stringBytes: defaultStringKilobytes * bytesPerKilobyte,
10
+ visitedNodes: 2000
11
+ };
12
+ //# sourceMappingURL=serialized-value-shape.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serialized-value-shape.js","sourceRoot":"","sources":["../../../../source/compare/serialized-value-shape.ts"],"names":[],"mappings":"AA4IA,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAC9B,MAAM,uBAAuB,GAAG,EAAE,CAAC;AACnC,MAAM,sBAAsB,GAAG,CAAC,CAAC;AAEjC,MAAM,CAAC,MAAM,0BAA0B,GAAwB;IAC3D,YAAY,EAAE,GAAG;IACjB,KAAK,EAAE,CAAC;IACR,aAAa,EAAE,GAAG;IAClB,YAAY,EAAE,uBAAuB,GAAG,gBAAgB;IACxD,WAAW,EAAE,sBAAsB,GAAG,gBAAgB;IACtD,YAAY,EAAE,IAAI;CACrB,CAAC"}
@@ -0,0 +1,55 @@
1
+ const nextReferenceIndex = 0;
2
+ const serializedBytesIndex = 1;
3
+ const visitedNodesIndex = 2;
4
+ function counterValue(state, index) {
5
+ return state.counters[index] ?? 0;
6
+ }
7
+ function setCounterValue(state, index, value) {
8
+ const { counters } = state;
9
+ counters[index] = value;
10
+ }
11
+ export function nextReferenceId(state) {
12
+ return counterValue(state, nextReferenceIndex);
13
+ }
14
+ export function truncation(reason, budget) {
15
+ return { budget, reason };
16
+ }
17
+ export function createState(budget) {
18
+ return {
19
+ budget,
20
+ counters: Int32Array.from([1, 0, 0]),
21
+ seen: new WeakMap()
22
+ };
23
+ }
24
+ function estimatedBytes(value) {
25
+ return Buffer.byteLength(JSON.stringify(value), 'utf8');
26
+ }
27
+ export function accountValue(state, value) {
28
+ const visitedNodes = counterValue(state, visitedNodesIndex) + 1;
29
+ setCounterValue(state, visitedNodesIndex, visitedNodes);
30
+ if (visitedNodes > state.budget.visitedNodes) {
31
+ return {
32
+ kind: 'unavailable',
33
+ reason: `visited node budget reached: ${state.budget.visitedNodes}`
34
+ };
35
+ }
36
+ const serializedBytes = counterValue(state, serializedBytesIndex) + estimatedBytes(value);
37
+ setCounterValue(state, serializedBytesIndex, serializedBytes);
38
+ return serializedBytes > state.budget.operandBytes
39
+ ? {
40
+ kind: 'unavailable',
41
+ reason: `serialized byte budget reached: ${state.budget.operandBytes}`
42
+ }
43
+ : value;
44
+ }
45
+ export function referenceFor(state, value) {
46
+ const existing = state.seen.get(value);
47
+ if (existing !== undefined) {
48
+ return existing;
49
+ }
50
+ const nextReference = counterValue(state, nextReferenceIndex);
51
+ state.seen.set(value, nextReference);
52
+ setCounterValue(state, nextReferenceIndex, nextReference + 1);
53
+ return null;
54
+ }
55
+ //# sourceMappingURL=serialized-value-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serialized-value-state.js","sourceRoot":"","sources":["../../../../source/compare/serialized-value-state.ts"],"names":[],"mappings":"AAMA,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAC7B,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAC/B,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAQ5B,SAAS,YAAY,CAAC,KAAyB,EAAE,KAAa;IAC1D,OAAO,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,eAAe,CAAC,KAAyB,EAAE,KAAa,EAAE,KAAa;IAC5E,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAE3B,QAAQ,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAyB;IACrD,OAAO,YAAY,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAyC,EAAE,MAAc;IAChF,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,MAA2B;IACnD,OAAO;QACH,MAAM;QACN,QAAQ,EAAE,UAAU,CAAC,IAAI,CAAC,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,CAAC;QACtC,IAAI,EAAE,IAAI,OAAO,EAAmB;KACvC,CAAC;AACN,CAAC;AAED,SAAS,cAAc,CAAC,KAAsB;IAC1C,OAAO,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAyB,EAAE,KAAsB;IAC1E,MAAM,YAAY,GAAG,YAAY,CAAC,KAAK,EAAE,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAEhE,eAAe,CAAC,KAAK,EAAE,iBAAiB,EAAE,YAAY,CAAC,CAAC;IAExD,IAAI,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;QAC3C,OAAO;YACH,IAAI,EAAE,aAAa;YACnB,MAAM,EAAE,gCAAgC,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE;SACtE,CAAC;IACN,CAAC;IAED,MAAM,eAAe,GAAG,YAAY,CAAC,KAAK,EAAE,oBAAoB,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IAE1F,eAAe,CAAC,KAAK,EAAE,oBAAoB,EAAE,eAAe,CAAC,CAAC;IAE9D,OAAO,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC,YAAY;QAC9C,CAAC,CAAC;YACE,IAAI,EAAE,aAAa;YACnB,MAAM,EAAE,mCAAmC,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE;SACzE;QACD,CAAC,CAAC,KAAK,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAyB,EAAE,KAAc;IAClE,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAEvC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,MAAM,aAAa,GAAG,YAAY,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC;IAE9D,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IACrC,eAAe,CAAC,KAAK,EAAE,kBAAkB,EAAE,aAAa,GAAG,CAAC,CAAC,CAAC;IAE9D,OAAO,IAAI,CAAC;AAChB,CAAC"}