@overkill-dev/doubles 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (178) hide show
  1. package/LICENSE +21 -0
  2. package/assert/assertion-extension.d.ts +65 -0
  3. package/assert/assertion-extension.d.ts.map +1 -0
  4. package/assert/assertion-extension.js +250 -0
  5. package/assert/assertion-extension.js.map +1 -0
  6. package/assertion-protocol/assertion-evaluation.d.ts +13 -0
  7. package/assertion-protocol/assertion-evaluation.d.ts.map +1 -0
  8. package/assertion-protocol/assertion-node-shape.d.ts +71 -0
  9. package/assertion-protocol/assertion-node-shape.d.ts.map +1 -0
  10. package/assertion-protocol/assertion-node.d.ts +97 -0
  11. package/assertion-protocol/assertion-node.d.ts.map +1 -0
  12. package/assertion-protocol/assertion-reference.d.ts +73 -0
  13. package/assertion-protocol/assertion-reference.d.ts.map +1 -0
  14. package/assertion-protocol/assertion-reference.js +49 -0
  15. package/assertion-protocol/assertion-reference.js.map +1 -0
  16. package/assertion-protocol/assertions/boolean.d.ts +11 -0
  17. package/assertion-protocol/assertions/boolean.d.ts.map +1 -0
  18. package/assertion-protocol/assertions/collection.d.ts +22 -0
  19. package/assertion-protocol/assertions/collection.d.ts.map +1 -0
  20. package/assertion-protocol/assertions/equality.d.ts +17 -0
  21. package/assertion-protocol/assertions/equality.d.ts.map +1 -0
  22. package/assertion-protocol/assertions/fail.d.ts +13 -0
  23. package/assertion-protocol/assertions/fail.d.ts.map +1 -0
  24. package/assertion-protocol/assertions/numeric.d.ts +29 -0
  25. package/assertion-protocol/assertions/numeric.d.ts.map +1 -0
  26. package/assertion-protocol/assertions/partial.d.ts +14 -0
  27. package/assertion-protocol/assertions/partial.d.ts.map +1 -0
  28. package/assertion-protocol/assertions/presence.d.ts +17 -0
  29. package/assertion-protocol/assertions/presence.d.ts.map +1 -0
  30. package/assertion-protocol/assertions/string.d.ts +28 -0
  31. package/assertion-protocol/assertions/string.d.ts.map +1 -0
  32. package/assertion-protocol/assertions/type-shape.d.ts +42 -0
  33. package/assertion-protocol/assertions/type-shape.d.ts.map +1 -0
  34. package/assertion-protocol/thrown-error-record.d.ts +8 -0
  35. package/assertion-protocol/thrown-error-record.d.ts.map +1 -0
  36. package/assertion-protocol/thrown-error-record.js +17 -0
  37. package/assertion-protocol/thrown-error-record.js.map +1 -0
  38. package/assertion-protocol/thrown-matcher.d.ts +51 -0
  39. package/assertion-protocol/thrown-matcher.d.ts.map +1 -0
  40. package/assertion-protocol/thrown-matcher.js +186 -0
  41. package/assertion-protocol/thrown-matcher.js.map +1 -0
  42. package/compare/comparison-result.d.ts +25 -0
  43. package/compare/comparison-result.d.ts.map +1 -0
  44. package/compare/comparison-state.d.ts +7 -0
  45. package/compare/comparison-state.d.ts.map +1 -0
  46. package/compare/comparison-state.js +20 -0
  47. package/compare/comparison-state.js.map +1 -0
  48. package/compare/comparison.d.ts +12 -0
  49. package/compare/comparison.d.ts.map +1 -0
  50. package/compare/raw-comparison.d.ts +24 -0
  51. package/compare/raw-comparison.d.ts.map +1 -0
  52. package/compare/raw-comparison.js +285 -0
  53. package/compare/raw-comparison.js.map +1 -0
  54. package/compare/serialized-value-shape.d.ts +143 -0
  55. package/compare/serialized-value-shape.d.ts.map +1 -0
  56. package/compare/serialized-value.d.ts +11 -0
  57. package/compare/serialized-value.d.ts.map +1 -0
  58. package/compare/value-classification.d.ts +26 -0
  59. package/compare/value-classification.d.ts.map +1 -0
  60. package/compare/value-classification.js +110 -0
  61. package/compare/value-classification.js.map +1 -0
  62. package/diff/diff-shape.d.ts +117 -0
  63. package/diff/diff-shape.d.ts.map +1 -0
  64. package/doubles/disposal-symbol.d.ts +3 -0
  65. package/doubles/disposal-symbol.d.ts.map +1 -0
  66. package/doubles/disposal-symbol.js +10 -0
  67. package/doubles/disposal-symbol.js.map +1 -0
  68. package/doubles/double-behavior.d.ts +106 -0
  69. package/doubles/double-behavior.d.ts.map +1 -0
  70. package/doubles/double-behavior.js +257 -0
  71. package/doubles/double-behavior.js.map +1 -0
  72. package/doubles/double-chronology.d.ts +21 -0
  73. package/doubles/double-chronology.d.ts.map +1 -0
  74. package/doubles/double-chronology.js +78 -0
  75. package/doubles/double-chronology.js.map +1 -0
  76. package/doubles/double-history-api.d.ts +33 -0
  77. package/doubles/double-history-api.d.ts.map +1 -0
  78. package/doubles/double-history-api.js +125 -0
  79. package/doubles/double-history-api.js.map +1 -0
  80. package/doubles/double-history-record.d.ts +82 -0
  81. package/doubles/double-history-record.d.ts.map +1 -0
  82. package/doubles/double-history-record.js +65 -0
  83. package/doubles/double-history-record.js.map +1 -0
  84. package/doubles/double-history-store.d.ts +21 -0
  85. package/doubles/double-history-store.d.ts.map +1 -0
  86. package/doubles/double-history-store.js +118 -0
  87. package/doubles/double-history-store.js.map +1 -0
  88. package/doubles/double-history.d.ts +141 -0
  89. package/doubles/double-history.d.ts.map +1 -0
  90. package/doubles/double-history.js +32 -0
  91. package/doubles/double-history.js.map +1 -0
  92. package/doubles/double-iterator-event-types.d.ts +25 -0
  93. package/doubles/double-iterator-event-types.d.ts.map +1 -0
  94. package/doubles/double-iterator-tracking.d.ts +12 -0
  95. package/doubles/double-iterator-tracking.d.ts.map +1 -0
  96. package/doubles/double-iterator-tracking.js +161 -0
  97. package/doubles/double-iterator-tracking.js.map +1 -0
  98. package/doubles/double-rule-arguments.d.ts +18 -0
  99. package/doubles/double-rule-arguments.d.ts.map +1 -0
  100. package/doubles/double-rule-callback.d.ts +40 -0
  101. package/doubles/double-rule-callback.d.ts.map +1 -0
  102. package/doubles/double-rule-callback.js +84 -0
  103. package/doubles/double-rule-callback.js.map +1 -0
  104. package/doubles/double-rule-generator.d.ts +108 -0
  105. package/doubles/double-rule-generator.d.ts.map +1 -0
  106. package/doubles/double-rule-generator.js +37 -0
  107. package/doubles/double-rule-generator.js.map +1 -0
  108. package/doubles/double-rule-types.d.ts +162 -0
  109. package/doubles/double-rule-types.d.ts.map +1 -0
  110. package/doubles/double-rule.d.ts +3 -0
  111. package/doubles/double-rule.d.ts.map +1 -0
  112. package/doubles/double-rule.js +113 -0
  113. package/doubles/double-rule.js.map +1 -0
  114. package/doubles/double-runtime.d.ts +9 -0
  115. package/doubles/double-runtime.d.ts.map +1 -0
  116. package/doubles/double-runtime.js +173 -0
  117. package/doubles/double-runtime.js.map +1 -0
  118. package/doubles/double-signature.d.ts +5 -0
  119. package/doubles/double-signature.d.ts.map +1 -0
  120. package/doubles/double-usage-argument-assertion.d.ts +27 -0
  121. package/doubles/double-usage-argument-assertion.d.ts.map +1 -0
  122. package/doubles/double-usage-argument-assertion.js +202 -0
  123. package/doubles/double-usage-argument-assertion.js.map +1 -0
  124. package/doubles/double-usage-contract.d.ts +29 -0
  125. package/doubles/double-usage-contract.d.ts.map +1 -0
  126. package/doubles/double-usage-contract.js +11 -0
  127. package/doubles/double-usage-contract.js.map +1 -0
  128. package/doubles/double-usage-count-assertion.d.ts +6 -0
  129. package/doubles/double-usage-count-assertion.d.ts.map +1 -0
  130. package/doubles/double-usage-count-assertion.js +73 -0
  131. package/doubles/double-usage-count-assertion.js.map +1 -0
  132. package/doubles/double-usage-disposal-assertion.d.ts +7 -0
  133. package/doubles/double-usage-disposal-assertion.d.ts.map +1 -0
  134. package/doubles/double-usage-disposal-assertion.js +175 -0
  135. package/doubles/double-usage-disposal-assertion.js.map +1 -0
  136. package/doubles/double-usage-inspection.d.ts +22 -0
  137. package/doubles/double-usage-inspection.d.ts.map +1 -0
  138. package/doubles/double-usage-inspection.js +59 -0
  139. package/doubles/double-usage-inspection.js.map +1 -0
  140. package/doubles/double-usage-iterator-assertion.d.ts +7 -0
  141. package/doubles/double-usage-iterator-assertion.d.ts.map +1 -0
  142. package/doubles/double-usage-iterator-assertion.js +124 -0
  143. package/doubles/double-usage-iterator-assertion.js.map +1 -0
  144. package/doubles/double-usage-order-assertion.d.ts +3 -0
  145. package/doubles/double-usage-order-assertion.d.ts.map +1 -0
  146. package/doubles/double-usage-order-assertion.js +91 -0
  147. package/doubles/double-usage-order-assertion.js.map +1 -0
  148. package/doubles/double-usage.d.ts +81 -0
  149. package/doubles/double-usage.d.ts.map +1 -0
  150. package/doubles/double-usage.js +228 -0
  151. package/doubles/double-usage.js.map +1 -0
  152. package/doubles/protocol-disposable-double.d.ts +16 -0
  153. package/doubles/protocol-disposable-double.d.ts.map +1 -0
  154. package/doubles/protocol-disposable-double.js +37 -0
  155. package/doubles/protocol-disposable-double.js.map +1 -0
  156. package/doubles/protocol-double-metadata.d.ts +15 -0
  157. package/doubles/protocol-double-metadata.d.ts.map +1 -0
  158. package/doubles/protocol-double-metadata.js +30 -0
  159. package/doubles/protocol-double-metadata.js.map +1 -0
  160. package/doubles/protocol-double.d.ts +50 -0
  161. package/doubles/protocol-double.d.ts.map +1 -0
  162. package/doubles/protocol-double.js +76 -0
  163. package/doubles/protocol-double.js.map +1 -0
  164. package/doubles/protocol-iterator-double.d.ts +93 -0
  165. package/doubles/protocol-iterator-double.d.ts.map +1 -0
  166. package/doubles/protocol-iterator-double.js +512 -0
  167. package/doubles/protocol-iterator-double.js.map +1 -0
  168. package/doubles/test-double.d.ts +62 -0
  169. package/doubles/test-double.d.ts.map +1 -0
  170. package/doubles/test-double.js +192 -0
  171. package/doubles/test-double.js.map +1 -0
  172. package/package.json +36 -6
  173. package/packages/doubles/doubles.entry-point.d.ts +13 -0
  174. package/packages/doubles/doubles.entry-point.d.ts.map +1 -0
  175. package/packages/doubles/doubles.entry-point.js +5 -0
  176. package/packages/doubles/doubles.entry-point.js.map +1 -0
  177. package/readme.md +423 -5
  178. package/sbom.cdx.json +30 -0
@@ -0,0 +1,186 @@
1
+ function assertNonEmptyItems(items, message) {
2
+ if (items.length === 0) {
3
+ throw new TypeError(message);
4
+ }
5
+ }
6
+ function isExactThrownMatcher(matcher) {
7
+ return Object.hasOwn(matcher, 'exact');
8
+ }
9
+ function expectedAction(kind) {
10
+ return kind === 'throws' ? 'throw' : 'reject';
11
+ }
12
+ function missingThrownValueChild(input) {
13
+ return {
14
+ actual: false,
15
+ check: 'true',
16
+ location: input.location,
17
+ message: `Expected function to ${expectedAction(input.kind)}.`,
18
+ source: input.source
19
+ };
20
+ }
21
+ function expectedMatcherChild(input) {
22
+ if (input.check === 'equal') {
23
+ return {
24
+ actual: input.actual,
25
+ check: input.check,
26
+ expected: input.expected,
27
+ location: input.location,
28
+ message: input.message,
29
+ source: input.source
30
+ };
31
+ }
32
+ return {
33
+ actual: input.actual,
34
+ check: input.check,
35
+ expected: input.expected,
36
+ location: input.location,
37
+ message: input.message,
38
+ source: input.source
39
+ };
40
+ }
41
+ function matchMatcherChild(input) {
42
+ return {
43
+ actual: input.actual,
44
+ check: input.check,
45
+ location: input.location,
46
+ message: input.message,
47
+ pattern: input.pattern,
48
+ source: input.source
49
+ };
50
+ }
51
+ function errorCode(error) {
52
+ return Reflect.get(error, 'code');
53
+ }
54
+ function matcherHas(matcher, key) {
55
+ return Object.hasOwn(matcher, key);
56
+ }
57
+ function errorInstanceChild(input, value, label) {
58
+ return expectedMatcherChild({
59
+ actual: value,
60
+ check: 'instance-of',
61
+ expected: Error,
62
+ location: input.location,
63
+ message: `Expected ${label} to be an Error.`,
64
+ source: input.source
65
+ });
66
+ }
67
+ function typeMatcherChildren(input, matcher, value, label) {
68
+ return matcherHas(matcher, 'type')
69
+ ? [
70
+ expectedMatcherChild({
71
+ actual: value,
72
+ check: 'instance-of',
73
+ expected: matcher.type,
74
+ location: input.location,
75
+ message: `Expected ${label} to be an instance of the constructor.`,
76
+ source: input.source
77
+ })
78
+ ]
79
+ : [];
80
+ }
81
+ function messageMatcherChildren(input, matcher, value, label) {
82
+ if (matcherHas(matcher, 'message')) {
83
+ return matcher.message instanceof RegExp
84
+ ? [
85
+ matchMatcherChild({
86
+ actual: value.message,
87
+ check: 'match',
88
+ location: input.location,
89
+ message: `Expected ${label} message to match the pattern.`,
90
+ pattern: matcher.message,
91
+ source: input.source
92
+ })
93
+ ]
94
+ : [
95
+ expectedMatcherChild({
96
+ actual: value.message,
97
+ check: 'equal',
98
+ expected: matcher.message,
99
+ location: input.location,
100
+ message: `Expected ${label} message to equal the string.`,
101
+ source: input.source
102
+ })
103
+ ];
104
+ }
105
+ return [];
106
+ }
107
+ function codeMatcherChildren(input, matcher, value, label) {
108
+ return matcherHas(matcher, 'code')
109
+ ? [
110
+ expectedMatcherChild({
111
+ actual: errorCode(value),
112
+ check: 'equal',
113
+ expected: matcher.code,
114
+ location: input.location,
115
+ message: `Expected ${label} code to equal the string.`,
116
+ source: input.source
117
+ })
118
+ ]
119
+ : [];
120
+ }
121
+ function nameMatcherChildren(input, matcher, value, label) {
122
+ return matcherHas(matcher, 'name')
123
+ ? [
124
+ expectedMatcherChild({
125
+ actual: value.name,
126
+ check: 'equal',
127
+ expected: matcher.name,
128
+ location: input.location,
129
+ message: `Expected ${label} name to equal the string.`,
130
+ source: input.source
131
+ })
132
+ ]
133
+ : [];
134
+ }
135
+ function causeMatcherChildren(input) {
136
+ return matcherHas(input.matcher, 'cause')
137
+ ? input.childrenForMatcher(input.assertion, input.matcher.cause, input.value.cause, `${input.label} cause`)
138
+ : [];
139
+ }
140
+ function structuredErrorChildren(input) {
141
+ if (!(input.value instanceof Error)) {
142
+ return [errorInstanceChild(input.assertion, input.value, input.label)];
143
+ }
144
+ const errorInput = {
145
+ ...input,
146
+ value: input.value
147
+ };
148
+ return [
149
+ errorInstanceChild(input.assertion, input.value, input.label),
150
+ ...typeMatcherChildren(input.assertion, input.matcher, input.value, input.label),
151
+ ...messageMatcherChildren(input.assertion, input.matcher, input.value, input.label),
152
+ ...codeMatcherChildren(input.assertion, input.matcher, input.value, input.label),
153
+ ...nameMatcherChildren(input.assertion, input.matcher, input.value, input.label),
154
+ ...causeMatcherChildren(errorInput)
155
+ ];
156
+ }
157
+ const matcherChildren = function createMatcherChildren(input, matcher, value, label) {
158
+ return isExactThrownMatcher(matcher)
159
+ ? [
160
+ expectedMatcherChild({
161
+ actual: value,
162
+ check: 'equal',
163
+ expected: matcher.exact,
164
+ location: input.location,
165
+ message: `Expected ${label} to equal the exact matcher.`,
166
+ source: input.source
167
+ })
168
+ ]
169
+ : structuredErrorChildren({
170
+ assertion: input,
171
+ childrenForMatcher: createMatcherChildren,
172
+ label,
173
+ matcher,
174
+ value
175
+ });
176
+ };
177
+ export function thrownMatcherChildren(input) {
178
+ const expectedStatus = input.kind === 'throws' ? 'threw' : 'rejected';
179
+ const children = input.observation.status === expectedStatus
180
+ ? matcherChildren(input, input.matcher, input.observation.value, 'thrown value')
181
+ : [missingThrownValueChild(input)];
182
+ assertNonEmptyItems(children, 'Expected thrown matcher assertion to create children.');
183
+ return children;
184
+ }
185
+
186
+ //# sourceMappingURL=thrown-matcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"thrown-matcher.js","sourceRoot":"","sources":["../../../../source/assertion-protocol/thrown-matcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import type { Diff, DiffPathSegment } from '../diff/diff-shape.ts';
2
+ import { type SerializedValue } from './serialized-value.ts';
3
+ export type ComparisonResult = {
4
+ readonly actual: SerializedValue;
5
+ readonly diff: Diff | null;
6
+ readonly expected: SerializedValue;
7
+ readonly passed: boolean;
8
+ readonly path: readonly DiffPathSegment[];
9
+ };
10
+ type ComparisonResultInput = {
11
+ readonly actual: unknown;
12
+ readonly diff: Diff | null;
13
+ readonly expected: unknown;
14
+ readonly passed: boolean;
15
+ readonly path: readonly DiffPathSegment[];
16
+ };
17
+ export declare const emptyPath: readonly DiffPathSegment[];
18
+ export declare function firstDiffPath(diff: Diff | null): readonly DiffPathSegment[];
19
+ export declare function comparisonResult(input: ComparisonResultInput): ComparisonResult;
20
+ export declare function passedResult(actual: unknown, expected: unknown): ComparisonResult;
21
+ export declare function failedResult(actual: unknown, expected: unknown, diff: Diff | null): ComparisonResult;
22
+ export declare function serializedValueDiff(actual: unknown, expected: unknown): Diff;
23
+ export declare function valueMismatch(actual: unknown, expected: unknown): ComparisonResult;
24
+ export {};
25
+ //# sourceMappingURL=comparison-result.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comparison-result.d.ts","sourceRoot":"","sources":["../../../../source/compare/comparison-result.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAER,IAAI,EACJ,eAAe,EAIlB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,KAAK,eAAe,EAAkB,MAAM,uBAAuB,CAAC;AAE7E,MAAM,MAAM,gBAAgB,GAAG;IAC3B,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,SAAS,eAAe,EAAE,CAAC;CAC7C,CAAC;AAEF,KAAK,qBAAqB,GAAG;IACzB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,SAAS,eAAe,EAAE,CAAC;CAC7C,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,SAAS,eAAe,EAAO,CAAC;AAoBxD,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,eAAe,EAAE,CAQ3E;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,gBAAgB,CAQ/E;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,GAAG,gBAAgB,CAEjF;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,gBAAgB,CAEpG;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI,CAM5E;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,GAAG,gBAAgB,CAElF"}
@@ -0,0 +1,7 @@
1
+ export type ComparisonState = {
2
+ readonly actualToExpected: WeakMap<WeakKey, WeakKey>;
3
+ readonly expectedToActual: WeakMap<WeakKey, WeakKey>;
4
+ };
5
+ export declare function createComparisonState(): ComparisonState;
6
+ export declare function objectPairStatus(actual: WeakKey, expected: WeakKey, state: ComparisonState): 'new' | 'seen' | 'topology-mismatch';
7
+ //# sourceMappingURL=comparison-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comparison-state.d.ts","sourceRoot":"","sources":["../../../../source/compare/comparison-state.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GAAG;IAC1B,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACrD,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;CACxD,CAAC;AAEF,wBAAgB,qBAAqB,IAAI,eAAe,CAKvD;AAED,wBAAgB,gBAAgB,CAC5B,MAAM,EAAE,OAAO,EACf,QAAQ,EAAE,OAAO,EACjB,KAAK,EAAE,eAAe,GACvB,KAAK,GAAG,MAAM,GAAG,mBAAmB,CAgBtC"}
@@ -0,0 +1,20 @@
1
+ export function createComparisonState() {
2
+ return {
3
+ actualToExpected: new WeakMap(),
4
+ expectedToActual: new WeakMap()
5
+ };
6
+ }
7
+ export function objectPairStatus(actual, expected, state) {
8
+ const previousExpected = state.actualToExpected.get(actual);
9
+ const previousActual = state.expectedToActual.get(expected);
10
+ if (previousExpected === expected && previousActual === actual) {
11
+ return 'seen';
12
+ }
13
+ if (previousExpected !== undefined || previousActual !== undefined) {
14
+ return 'topology-mismatch';
15
+ }
16
+ state.actualToExpected.set(actual, expected);
17
+ state.expectedToActual.set(expected, actual);
18
+ return 'new';
19
+ }
20
+ //# sourceMappingURL=comparison-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comparison-state.js","sourceRoot":"","sources":["../../../../source/compare/comparison-state.ts"],"names":[],"mappings":"AAKA,MAAM,UAAU,qBAAqB;IACjC,OAAO;QACH,gBAAgB,EAAE,IAAI,OAAO,EAAoB;QACjD,gBAAgB,EAAE,IAAI,OAAO,EAAoB;KACpD,CAAC;AACN,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC5B,MAAe,EACf,QAAiB,EACjB,KAAsB;IAEtB,MAAM,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5D,MAAM,cAAc,GAAG,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAE5D,IAAI,gBAAgB,KAAK,QAAQ,IAAI,cAAc,KAAK,MAAM,EAAE,CAAC;QAC7D,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,IAAI,gBAAgB,KAAK,SAAS,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjE,OAAO,mBAAmB,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC7C,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAE7C,OAAO,KAAK,CAAC;AACjB,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { Diff } from '../diff/diff-shape.ts';
2
+ import { type ComparisonResult as StructuredComparisonResult } from './comparison-result.ts';
3
+ export type ComparisonResult = StructuredComparisonResult;
4
+ export declare const serializedValueDiff: (actual: unknown, expected: unknown) => Diff;
5
+ export declare function compareEqualValues(actual: unknown, expected: unknown): ComparisonResult;
6
+ export declare function compareStringEquality(actual: string, expected: string): ComparisonResult;
7
+ export declare function compareDeepValues(actual: unknown, expected: unknown): ComparisonResult;
8
+ export declare function comparePartialValue(actual: unknown, expected: unknown): ComparisonResult;
9
+ export declare function compareArrayContainsPartial(actual: unknown, expected: unknown): ComparisonResult;
10
+ export declare function compareMembersPartialDeepEqual(actual: unknown, expected: unknown): ComparisonResult;
11
+ export declare function serializedOutcome(actual: unknown, expected: unknown, passed: boolean): ComparisonResult;
12
+ //# sourceMappingURL=comparison.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comparison.d.ts","sourceRoot":"","sources":["../../../../source/compare/comparison.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAOH,KAAK,gBAAgB,IAAI,0BAA0B,EACtD,MAAM,wBAAwB,CAAC;AAKhC,MAAM,MAAM,gBAAgB,GAAG,0BAA0B,CAAC;AAE1D,eAAO,MAAM,mBAAmB,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,KAAK,IAAgC,CAAC;AAE3G,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,GAAG,gBAAgB,CAEvF;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CAWxF;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,GAAG,gBAAgB,CAQtF;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,GAAG,gBAAgB,CAQxF;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,GAAG,gBAAgB,CAoBhG;AAED,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,GAAG,gBAAgB,CAsBnG;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,gBAAgB,CAEvG"}
@@ -0,0 +1,24 @@
1
+ import { type ByteSource } from './value-classification.ts';
2
+ type BinaryReference = ArrayBuffer | ArrayBufferView;
3
+ type BuiltInReference = Date | Error | Promise<unknown> | RegExp;
4
+ type CollectionReference = ReadonlyMap<unknown, unknown> | ReadonlySet<unknown>;
5
+ type WeakCollectionReference = WeakMap<Record<string, unknown>, unknown> | WeakSet<Record<string, unknown>>;
6
+ type StrongReference = BinaryReference | BuiltInReference | CollectionReference;
7
+ type ReferenceValue = Readonly<Record<string, unknown>> | StrongReference | WeakCollectionReference;
8
+ export type RawProperty = {
9
+ readonly key: PropertyKey;
10
+ readonly value: unknown;
11
+ };
12
+ export type RawMapEntry = {
13
+ readonly key: unknown;
14
+ readonly value: unknown;
15
+ };
16
+ export declare function sortedKeys(value: ReferenceValue): readonly PropertyKey[] | null;
17
+ export declare function rawProperty(value: ReferenceValue, key: PropertyKey): RawProperty;
18
+ export declare function bytesFrom(value: ByteSource): readonly number[];
19
+ export declare function mapEntries(value: ReadonlyMap<unknown, unknown>): readonly RawMapEntry[];
20
+ export declare function setValues(value: ReadonlySet<unknown>): readonly unknown[];
21
+ export declare function compareExactly(actual: unknown, expected: unknown): boolean;
22
+ export declare function comparePartially(actual: unknown, expected: unknown): boolean;
23
+ export {};
24
+ //# sourceMappingURL=raw-comparison.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"raw-comparison.d.ts","sourceRoot":"","sources":["../../../../source/compare/raw-comparison.ts"],"names":[],"mappings":"AACA,OAAO,EAWH,KAAK,UAAU,EAClB,MAAM,2BAA2B,CAAC;AAEnC,KAAK,eAAe,GAAG,WAAW,GAAG,eAAe,CAAC;AACrD,KAAK,gBAAgB,GAAG,IAAI,GAAG,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC;AACjE,KAAK,mBAAmB,GAAG,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;AAChF,KAAK,uBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAC5G,KAAK,eAAe,GAAG,eAAe,GAAG,gBAAgB,GAAG,mBAAmB,CAAC;AAChF,KAAK,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,eAAe,GAAG,uBAAuB,CAAC;AAEpG,MAAM,MAAM,WAAW,GAAG;IACtB,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACtB,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CAC3B,CAAC;AAmCF,wBAAgB,UAAU,CAAC,KAAK,EAAE,cAAc,GAAG,SAAS,WAAW,EAAE,GAAG,IAAI,CAiB/E;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,EAAE,WAAW,GAAG,WAAW,CAWhF;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS,MAAM,EAAE,CAM9D;AAYD,wBAAgB,UAAU,CAAC,KAAK,EAAE,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,SAAS,WAAW,EAAE,CAIvF;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,SAAS,OAAO,EAAE,CAEzE;AAoTD,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAE1E;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAE5E"}
@@ -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":"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"}