bupkis 0.7.2 → 0.9.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.
Files changed (215) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +19 -2
  3. package/dist/commonjs/assertion/assertion-async.d.ts.map +1 -1
  4. package/dist/commonjs/assertion/assertion-async.js +37 -7
  5. package/dist/commonjs/assertion/assertion-async.js.map +1 -1
  6. package/dist/commonjs/assertion/assertion-sync.d.ts.map +1 -1
  7. package/dist/commonjs/assertion/assertion-sync.js +32 -8
  8. package/dist/commonjs/assertion/assertion-sync.js.map +1 -1
  9. package/dist/commonjs/assertion/assertion-types.d.ts +37 -31
  10. package/dist/commonjs/assertion/assertion-types.d.ts.map +1 -1
  11. package/dist/commonjs/assertion/assertion-types.js +0 -32
  12. package/dist/commonjs/assertion/assertion-types.js.map +1 -1
  13. package/dist/commonjs/assertion/assertion.d.ts +3 -21
  14. package/dist/commonjs/assertion/assertion.d.ts.map +1 -1
  15. package/dist/commonjs/assertion/assertion.js +42 -27
  16. package/dist/commonjs/assertion/assertion.js.map +1 -1
  17. package/dist/commonjs/assertion/create.d.ts +2 -0
  18. package/dist/commonjs/assertion/create.d.ts.map +1 -1
  19. package/dist/commonjs/assertion/create.js +38 -42
  20. package/dist/commonjs/assertion/create.js.map +1 -1
  21. package/dist/commonjs/assertion/impl/assertion-util.d.ts +16 -4
  22. package/dist/commonjs/assertion/impl/assertion-util.d.ts.map +1 -1
  23. package/dist/commonjs/assertion/impl/assertion-util.js +20 -15
  24. package/dist/commonjs/assertion/impl/assertion-util.js.map +1 -1
  25. package/dist/commonjs/assertion/impl/async-parametric.d.ts +63 -11
  26. package/dist/commonjs/assertion/impl/async-parametric.d.ts.map +1 -1
  27. package/dist/commonjs/assertion/impl/async-parametric.js +89 -52
  28. package/dist/commonjs/assertion/impl/async-parametric.js.map +1 -1
  29. package/dist/commonjs/assertion/impl/async.d.ts +116 -12
  30. package/dist/commonjs/assertion/impl/async.d.ts.map +1 -1
  31. package/dist/commonjs/assertion/impl/async.js +1 -1
  32. package/dist/commonjs/assertion/impl/sync-basic.d.ts.map +1 -1
  33. package/dist/commonjs/assertion/impl/sync-basic.js +6 -4
  34. package/dist/commonjs/assertion/impl/sync-basic.js.map +1 -1
  35. package/dist/commonjs/assertion/impl/sync-collection.d.ts.map +1 -1
  36. package/dist/commonjs/assertion/impl/sync-collection.js +24 -14
  37. package/dist/commonjs/assertion/impl/sync-collection.js.map +1 -1
  38. package/dist/commonjs/assertion/impl/sync-esoteric.d.ts +1 -5
  39. package/dist/commonjs/assertion/impl/sync-esoteric.d.ts.map +1 -1
  40. package/dist/commonjs/assertion/impl/sync-esoteric.js +11 -13
  41. package/dist/commonjs/assertion/impl/sync-esoteric.js.map +1 -1
  42. package/dist/commonjs/assertion/impl/sync-parametric.d.ts +27 -7
  43. package/dist/commonjs/assertion/impl/sync-parametric.d.ts.map +1 -1
  44. package/dist/commonjs/assertion/impl/sync-parametric.js +75 -51
  45. package/dist/commonjs/assertion/impl/sync-parametric.js.map +1 -1
  46. package/dist/commonjs/assertion/impl/sync.d.ts +54 -22
  47. package/dist/commonjs/assertion/impl/sync.d.ts.map +1 -1
  48. package/dist/commonjs/assertion/impl/sync.js +1 -1
  49. package/dist/commonjs/assertion/impl/sync.js.map +1 -1
  50. package/dist/commonjs/assertion/index.d.ts +1 -1
  51. package/dist/commonjs/assertion/index.d.ts.map +1 -1
  52. package/dist/commonjs/assertion/index.js +0 -1
  53. package/dist/commonjs/assertion/index.js.map +1 -1
  54. package/dist/commonjs/assertion/slotify.d.ts +1 -13
  55. package/dist/commonjs/assertion/slotify.d.ts.map +1 -1
  56. package/dist/commonjs/assertion/slotify.js +49 -16
  57. package/dist/commonjs/assertion/slotify.js.map +1 -1
  58. package/dist/commonjs/bootstrap.d.ts +85 -17
  59. package/dist/commonjs/bootstrap.d.ts.map +1 -1
  60. package/dist/commonjs/bootstrap.js +1 -0
  61. package/dist/commonjs/bootstrap.js.map +1 -1
  62. package/dist/commonjs/diff.d.ts +51 -0
  63. package/dist/commonjs/diff.d.ts.map +1 -0
  64. package/dist/commonjs/diff.js +279 -0
  65. package/dist/commonjs/diff.js.map +1 -0
  66. package/dist/commonjs/error.d.ts +37 -18
  67. package/dist/commonjs/error.d.ts.map +1 -1
  68. package/dist/commonjs/error.js +44 -30
  69. package/dist/commonjs/error.js.map +1 -1
  70. package/dist/commonjs/expect.d.ts.map +1 -1
  71. package/dist/commonjs/expect.js +131 -78
  72. package/dist/commonjs/expect.js.map +1 -1
  73. package/dist/commonjs/guards.d.ts +24 -10
  74. package/dist/commonjs/guards.d.ts.map +1 -1
  75. package/dist/commonjs/guards.js +56 -39
  76. package/dist/commonjs/guards.js.map +1 -1
  77. package/dist/commonjs/index.d.ts +85 -17
  78. package/dist/commonjs/index.d.ts.map +1 -1
  79. package/dist/commonjs/internal-schema.d.ts +25 -0
  80. package/dist/commonjs/internal-schema.d.ts.map +1 -0
  81. package/dist/commonjs/internal-schema.js +209 -0
  82. package/dist/commonjs/internal-schema.js.map +1 -0
  83. package/dist/commonjs/schema.d.ts.map +1 -1
  84. package/dist/commonjs/schema.js +3 -2
  85. package/dist/commonjs/schema.js.map +1 -1
  86. package/dist/commonjs/use.js +22 -8
  87. package/dist/commonjs/use.js.map +1 -1
  88. package/dist/commonjs/util.d.ts +1 -0
  89. package/dist/commonjs/util.d.ts.map +1 -1
  90. package/dist/commonjs/util.js +14 -10
  91. package/dist/commonjs/util.js.map +1 -1
  92. package/dist/commonjs/value-to-schema.d.ts +1 -0
  93. package/dist/commonjs/value-to-schema.d.ts.map +1 -1
  94. package/dist/commonjs/value-to-schema.js +19 -12
  95. package/dist/commonjs/value-to-schema.js.map +1 -1
  96. package/dist/esm/assertion/assertion-async.d.ts.map +1 -1
  97. package/dist/esm/assertion/assertion-async.js +37 -7
  98. package/dist/esm/assertion/assertion-async.js.map +1 -1
  99. package/dist/esm/assertion/assertion-sync.d.ts.map +1 -1
  100. package/dist/esm/assertion/assertion-sync.js +32 -8
  101. package/dist/esm/assertion/assertion-sync.js.map +1 -1
  102. package/dist/esm/assertion/assertion-types.d.ts +37 -31
  103. package/dist/esm/assertion/assertion-types.d.ts.map +1 -1
  104. package/dist/esm/assertion/assertion-types.js +1 -31
  105. package/dist/esm/assertion/assertion-types.js.map +1 -1
  106. package/dist/esm/assertion/assertion.d.ts +3 -21
  107. package/dist/esm/assertion/assertion.d.ts.map +1 -1
  108. package/dist/esm/assertion/assertion.js +42 -27
  109. package/dist/esm/assertion/assertion.js.map +1 -1
  110. package/dist/esm/assertion/create.d.ts +2 -0
  111. package/dist/esm/assertion/create.d.ts.map +1 -1
  112. package/dist/esm/assertion/create.js +37 -41
  113. package/dist/esm/assertion/create.js.map +1 -1
  114. package/dist/esm/assertion/impl/assertion-util.d.ts +16 -4
  115. package/dist/esm/assertion/impl/assertion-util.d.ts.map +1 -1
  116. package/dist/esm/assertion/impl/assertion-util.js +20 -15
  117. package/dist/esm/assertion/impl/assertion-util.js.map +1 -1
  118. package/dist/esm/assertion/impl/async-parametric.d.ts +63 -11
  119. package/dist/esm/assertion/impl/async-parametric.d.ts.map +1 -1
  120. package/dist/esm/assertion/impl/async-parametric.js +89 -52
  121. package/dist/esm/assertion/impl/async-parametric.js.map +1 -1
  122. package/dist/esm/assertion/impl/async.d.ts +116 -12
  123. package/dist/esm/assertion/impl/async.d.ts.map +1 -1
  124. package/dist/esm/assertion/impl/async.js +2 -2
  125. package/dist/esm/assertion/impl/async.js.map +1 -1
  126. package/dist/esm/assertion/impl/sync-basic.d.ts.map +1 -1
  127. package/dist/esm/assertion/impl/sync-basic.js +6 -4
  128. package/dist/esm/assertion/impl/sync-basic.js.map +1 -1
  129. package/dist/esm/assertion/impl/sync-collection.d.ts.map +1 -1
  130. package/dist/esm/assertion/impl/sync-collection.js +24 -14
  131. package/dist/esm/assertion/impl/sync-collection.js.map +1 -1
  132. package/dist/esm/assertion/impl/sync-esoteric.d.ts +1 -5
  133. package/dist/esm/assertion/impl/sync-esoteric.d.ts.map +1 -1
  134. package/dist/esm/assertion/impl/sync-esoteric.js +11 -13
  135. package/dist/esm/assertion/impl/sync-esoteric.js.map +1 -1
  136. package/dist/esm/assertion/impl/sync-parametric.d.ts +27 -7
  137. package/dist/esm/assertion/impl/sync-parametric.d.ts.map +1 -1
  138. package/dist/esm/assertion/impl/sync-parametric.js +75 -51
  139. package/dist/esm/assertion/impl/sync-parametric.js.map +1 -1
  140. package/dist/esm/assertion/impl/sync.d.ts +54 -22
  141. package/dist/esm/assertion/impl/sync.d.ts.map +1 -1
  142. package/dist/esm/assertion/impl/sync.js +2 -2
  143. package/dist/esm/assertion/impl/sync.js.map +1 -1
  144. package/dist/esm/assertion/index.d.ts +1 -1
  145. package/dist/esm/assertion/index.d.ts.map +1 -1
  146. package/dist/esm/assertion/index.js +0 -1
  147. package/dist/esm/assertion/index.js.map +1 -1
  148. package/dist/esm/assertion/slotify.d.ts +1 -13
  149. package/dist/esm/assertion/slotify.d.ts.map +1 -1
  150. package/dist/esm/assertion/slotify.js +50 -17
  151. package/dist/esm/assertion/slotify.js.map +1 -1
  152. package/dist/esm/bootstrap.d.ts +85 -17
  153. package/dist/esm/bootstrap.d.ts.map +1 -1
  154. package/dist/esm/bootstrap.js +1 -0
  155. package/dist/esm/bootstrap.js.map +1 -1
  156. package/dist/esm/diff.d.ts +51 -0
  157. package/dist/esm/diff.d.ts.map +1 -0
  158. package/dist/esm/diff.js +273 -0
  159. package/dist/esm/diff.js.map +1 -0
  160. package/dist/esm/error.d.ts +37 -18
  161. package/dist/esm/error.d.ts.map +1 -1
  162. package/dist/esm/error.js +41 -27
  163. package/dist/esm/error.js.map +1 -1
  164. package/dist/esm/expect.d.ts.map +1 -1
  165. package/dist/esm/expect.js +133 -80
  166. package/dist/esm/expect.js.map +1 -1
  167. package/dist/esm/guards.d.ts +24 -10
  168. package/dist/esm/guards.d.ts.map +1 -1
  169. package/dist/esm/guards.js +52 -36
  170. package/dist/esm/guards.js.map +1 -1
  171. package/dist/esm/index.d.ts +85 -17
  172. package/dist/esm/index.d.ts.map +1 -1
  173. package/dist/esm/internal-schema.d.ts +25 -0
  174. package/dist/esm/internal-schema.d.ts.map +1 -0
  175. package/dist/esm/internal-schema.js +203 -0
  176. package/dist/esm/internal-schema.js.map +1 -0
  177. package/dist/esm/schema.d.ts.map +1 -1
  178. package/dist/esm/schema.js +3 -2
  179. package/dist/esm/schema.js.map +1 -1
  180. package/dist/esm/use.js +19 -6
  181. package/dist/esm/use.js.map +1 -1
  182. package/dist/esm/util.d.ts +1 -0
  183. package/dist/esm/util.d.ts.map +1 -1
  184. package/dist/esm/util.js +14 -10
  185. package/dist/esm/util.js.map +1 -1
  186. package/dist/esm/value-to-schema.d.ts +1 -0
  187. package/dist/esm/value-to-schema.d.ts.map +1 -1
  188. package/dist/esm/value-to-schema.js +20 -13
  189. package/dist/esm/value-to-schema.js.map +1 -1
  190. package/package.json +29 -11
  191. package/src/assertion/assertion-async.ts +42 -14
  192. package/src/assertion/assertion-sync.ts +40 -17
  193. package/src/assertion/assertion-types.ts +55 -45
  194. package/src/assertion/assertion.ts +49 -32
  195. package/src/assertion/create.ts +46 -65
  196. package/src/assertion/impl/assertion-util.ts +31 -18
  197. package/src/assertion/impl/async-parametric.ts +93 -52
  198. package/src/assertion/impl/async.ts +2 -2
  199. package/src/assertion/impl/sync-basic.ts +7 -4
  200. package/src/assertion/impl/sync-collection.ts +34 -14
  201. package/src/assertion/impl/sync-esoteric.ts +17 -13
  202. package/src/assertion/impl/sync-parametric.ts +79 -52
  203. package/src/assertion/impl/sync.ts +2 -2
  204. package/src/assertion/index.ts +1 -1
  205. package/src/assertion/slotify.ts +67 -21
  206. package/src/bootstrap.ts +1 -0
  207. package/src/diff.ts +343 -0
  208. package/src/error.ts +66 -31
  209. package/src/expect.ts +195 -129
  210. package/src/guards.ts +74 -48
  211. package/src/internal-schema.ts +246 -0
  212. package/src/schema.ts +4 -2
  213. package/src/use.ts +21 -7
  214. package/src/util.ts +15 -12
  215. package/src/value-to-schema.ts +21 -13
@@ -1,8 +1,8 @@
1
1
  import createDebug from 'debug';
2
2
  import { inspect } from 'util';
3
3
  import { createAssertion, createAsyncAssertion } from './assertion/create.js';
4
- import { AssertionError, FailAssertionError, NegatedAssertionError, UnknownAssertionError, } from './error.js';
5
- import { isAssertionFailure, isString } from './guards.js';
4
+ import { AssertionError, AssertionImplementationError, FailAssertionError, NegatedAssertionError, UnknownAssertionError, } from './error.js';
5
+ import { isString } from './guards.js';
6
6
  import { createUse } from './use.js';
7
7
  const debug = createDebug('bupkis:expect');
8
8
  /**
@@ -69,27 +69,33 @@ const debug = createDebug('bupkis:expect');
69
69
  */
70
70
  export function createExpectAsyncFunction(assertions, expect) {
71
71
  debug('ℹ Creating expectAsync function with %d new assertions and %d existing assertions (%d total)', assertions.length, expect?.assertions.length ?? 0, assertions.length + (expect?.assertions.length ?? 0));
72
+ /**
73
+ * @function
74
+ */
72
75
  const expectAsyncFunction = async (...args) => {
73
76
  await Promise.resolve();
74
- const [isNegated, processedArgs] = maybeProcessNegation(args);
75
- const candidates = [];
76
- for (const assertion of [...(expect?.assertions ?? []), ...assertions]) {
77
- const parseResult = await assertion.parseValuesAsync(processedArgs);
78
- const { exactMatch, parsedValues, success } = parseResult;
79
- if (success) {
80
- if (exactMatch) {
81
- return executeAsync(assertion, parsedValues, [...args], expectAsyncFunction, isNegated, parseResult);
77
+ const argsMatrix = conjunctify(args);
78
+ for (const args of argsMatrix) {
79
+ const { isNegated, processedArgs } = maybeProcessNegation(args);
80
+ const candidates = [];
81
+ for (const assertion of [...(expect?.assertions ?? []), ...assertions]) {
82
+ const parseResult = await assertion.parseValuesAsync(processedArgs);
83
+ const { exactMatch, parsedValues, success } = parseResult;
84
+ if (success) {
85
+ if (exactMatch) {
86
+ return executeAsync(assertion, parsedValues, [...args], expectAsyncFunction, isNegated, parseResult);
87
+ }
88
+ candidates.push({ assertion, parseResult });
82
89
  }
83
- candidates.push({ assertion, parseResult });
84
90
  }
91
+ if (candidates.length) {
92
+ const { assertion, parseResult } = candidates[0];
93
+ return executeAsync(assertion,
94
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
95
+ parseResult.parsedValues, [...args], expectAsyncFunction, isNegated, parseResult);
96
+ }
97
+ throwInvalidParametersError(args);
85
98
  }
86
- if (candidates.length) {
87
- const { assertion, parseResult } = candidates[0];
88
- return executeAsync(assertion,
89
- // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
90
- parseResult.parsedValues, [...args], expectAsyncFunction, isNegated, parseResult);
91
- }
92
- throwInvalidParametersError(args);
93
99
  };
94
100
  return expectAsyncFunction;
95
101
  }
@@ -148,26 +154,32 @@ export function createExpectAsyncFunction(assertions, expect) {
148
154
  */
149
155
  export function createExpectSyncFunction(assertions, expect) {
150
156
  debug('ℹ Creating expect function with %d new assertions and %d existing assertions (%d total)', assertions.length, expect?.assertions.length ?? 0, assertions.length + (expect?.assertions.length ?? 0));
157
+ /**
158
+ * @function
159
+ */
151
160
  const expectFunction = (...args) => {
152
- const [isNegated, processedArgs] = maybeProcessNegation(args);
153
- const candidates = [];
154
- for (const assertion of [...(expect?.assertions ?? []), ...assertions]) {
155
- const parseResult = assertion.parseValues(processedArgs);
156
- const { exactMatch, parsedValues, success } = parseResult;
157
- if (success) {
158
- if (exactMatch) {
159
- return execute(assertion, parsedValues, [...args], expectFunction, isNegated, parseResult);
161
+ const argsMatrix = conjunctify(args);
162
+ for (const args of argsMatrix) {
163
+ const { isNegated, processedArgs } = maybeProcessNegation(args);
164
+ const candidates = [];
165
+ for (const assertion of [...(expect?.assertions ?? []), ...assertions]) {
166
+ const parseResult = assertion.parseValues(processedArgs);
167
+ const { exactMatch, parsedValues, success } = parseResult;
168
+ if (success) {
169
+ if (exactMatch) {
170
+ return execute(assertion, parsedValues, [...args], expectFunction, isNegated, parseResult);
171
+ }
172
+ candidates.push({ assertion, parseResult });
160
173
  }
161
- candidates.push({ assertion, parseResult });
162
174
  }
175
+ if (candidates.length) {
176
+ const { assertion, parseResult } = candidates[0];
177
+ return execute(assertion,
178
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
179
+ parseResult.parsedValues, [...args], expectFunction, isNegated, parseResult);
180
+ }
181
+ throwInvalidParametersError(args);
163
182
  }
164
- if (candidates.length) {
165
- const { assertion, parseResult } = candidates[0];
166
- return execute(assertion,
167
- // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
168
- parseResult.parsedValues, [...args], expectFunction, isNegated, parseResult);
169
- }
170
- throwInvalidParametersError(args);
171
183
  };
172
184
  return expectFunction;
173
185
  }
@@ -177,6 +189,7 @@ export function createExpectSyncFunction(assertions, expect) {
177
189
  * @privateRemarks
178
190
  * This is here because `Assertion` doesn't know anything about negation and
179
191
  * probably shouldn't.
192
+ * @function
180
193
  * @param assertion - The assertion to execute
181
194
  * @param parsedValues - Parsed values for the assertion
182
195
  * @param args - Original arguments passed to expect
@@ -184,39 +197,37 @@ export function createExpectSyncFunction(assertions, expect) {
184
197
  * @param isNegated - Whether the assertion should be negated
185
198
  */
186
199
  const execute = (assertion, parsedValues, args, stackStartFn, isNegated, parseResult) => {
187
- if (!isNegated) {
188
- return assertion.execute(parsedValues, args, stackStartFn, parseResult);
189
- }
190
- try {
191
- const result = assertion.execute(parsedValues, args, stackStartFn, parseResult);
192
- if (isAssertionFailure(result)) {
193
- throw new NegatedAssertionError({
194
- actual: result.actual,
195
- expected: result.expected,
196
- message: result.message ??
197
- `Expected assertion ${assertion} to fail (due to negation), but it passed`,
198
- stackStartFn,
199
- });
200
+ if (isNegated) {
201
+ // negation logic
202
+ try {
203
+ assertion.execute(parsedValues, args, stackStartFn, parseResult);
204
+ }
205
+ catch (error) {
206
+ // success!
207
+ if (AssertionError.isAssertionError(error)) {
208
+ return;
209
+ }
210
+ if (AssertionImplementationError.isAssertionImplementationError(error)) {
211
+ throw error;
212
+ }
213
+ throw new AssertionImplementationError(`Assertion ${assertion} threw a non-AssertionError`, { cause: error });
200
214
  }
201
- // If we reach here, the assertion passed but we expected it to fail
215
+ // if we reach here, then the assertion passed when it should have failed, so:
202
216
  throw new NegatedAssertionError({
203
- message: `Expected assertion to fail (due to negation), but it passed: ${assertion}`,
217
+ message: `Expected assertion ${assertion} to fail (due to negation), but it passed`,
204
218
  stackStartFn,
205
219
  });
206
220
  }
207
- catch (error) {
208
- // Check if this is the negation error we just threw
209
- if (NegatedAssertionError.isNegatedAssertionError(error)) {
210
- // This is our negation error, re-throw it
211
- throw error;
221
+ else {
222
+ try {
223
+ assertion.execute(parsedValues, args, stackStartFn, parseResult);
212
224
  }
213
- if (AssertionError.isAssertionError(error)) {
214
- // The assertion failed as expected for negation - this is success
215
- return;
225
+ catch (error) {
226
+ if (AssertionError.isAssertionError(error)) {
227
+ throw error;
228
+ }
229
+ throw new AssertionImplementationError(`Assertion ${assertion} threw a non-AssertionError`, { cause: error });
216
230
  }
217
- debug('Non-assertion error thrown during negated assertion: %O', error);
218
- // Re-throw non-assertion errors (like TypeErrors, etc.)
219
- throw error;
220
231
  }
221
232
  };
222
233
  /**
@@ -225,6 +236,7 @@ const execute = (assertion, parsedValues, args, stackStartFn, isNegated, parseRe
225
236
  * @privateRemarks
226
237
  * This is here because `Assertion` doesn't know anything about negation and
227
238
  * probably shouldn't.
239
+ * @function
228
240
  * @param assertion - The assertion to execute
229
241
  * @param parsedValues - Parsed values for the assertion
230
242
  * @param args - Original arguments passed to expectAsync
@@ -232,30 +244,34 @@ const execute = (assertion, parsedValues, args, stackStartFn, isNegated, parseRe
232
244
  * @param isNegated - Whether the assertion should be negated
233
245
  */
234
246
  const executeAsync = async (assertion, parsedValues, args, stackStartFn, isNegated, parseResult) => {
235
- if (!isNegated) {
236
- return assertion.executeAsync(parsedValues, args, stackStartFn, parseResult);
237
- }
238
- try {
239
- await assertion.executeAsync(parsedValues, args, stackStartFn, parseResult);
240
- // If we reach here, the assertion passed but we expected it to fail
247
+ if (isNegated) {
248
+ // negation logic
249
+ try {
250
+ await assertion.executeAsync(parsedValues, args, stackStartFn, parseResult);
251
+ }
252
+ catch (error) {
253
+ // success!
254
+ if (AssertionError.isAssertionError(error)) {
255
+ return;
256
+ }
257
+ throw new AssertionImplementationError(`Assertion ${assertion} threw a non-AssertionError`, { cause: error });
258
+ }
259
+ // if we reach here, then the assertion passed when it should have failed, so:
241
260
  throw new NegatedAssertionError({
242
- message: `Expected assertion to fail (due to negation), but it passed: ${assertion}`,
261
+ message: `Expected assertion ${assertion} to fail (due to negation), but it passed`,
243
262
  stackStartFn,
244
263
  });
245
264
  }
246
- catch (error) {
247
- // Check if this is the negation error we just threw
248
- if (NegatedAssertionError.isNegatedAssertionError(error)) {
249
- // This is our negation error, re-throw it
250
- throw error;
265
+ else {
266
+ try {
267
+ await assertion.executeAsync(parsedValues, args, stackStartFn, parseResult);
251
268
  }
252
- if (AssertionError.isAssertionError(error)) {
253
- // The assertion failed as expected for negation - this is success
254
- return;
269
+ catch (error) {
270
+ if (AssertionError.isAssertionError(error)) {
271
+ throw error;
272
+ }
273
+ throw new AssertionImplementationError(`Assertion ${assertion} threw a non-AssertionError`, { cause: error });
255
274
  }
256
- debug('Non-assertion error thrown during negated async assertion: %O', error);
257
- // Re-throw non-assertion errors (like TypeErrors, etc.)
258
- throw error;
259
275
  }
260
276
  };
261
277
  /**
@@ -263,11 +279,13 @@ const executeAsync = async (assertion, parsedValues, args, stackStartFn, isNegat
263
279
  * requested along with arguments stripped of the leading negation (to enable
264
280
  * assertion matching).
265
281
  *
282
+ * @function
266
283
  * @internal
267
284
  */
268
285
  const maybeProcessNegation = (args) => {
269
286
  let isNegated = false;
270
287
  let processedArgs = args;
288
+ // note: args[1] should always be a string
271
289
  if (args.length >= 2 && isString(args[1])) {
272
290
  const { cleanedPhrase, isNegated: detected } = detectNegation(args[1]);
273
291
  if (detected) {
@@ -275,12 +293,44 @@ const maybeProcessNegation = (args) => {
275
293
  processedArgs = [args[0], cleanedPhrase, ...args.slice(2)];
276
294
  }
277
295
  }
278
- return [isNegated, processedArgs];
296
+ return { isNegated, processedArgs };
297
+ };
298
+ /**
299
+ * Given some args, create a matrix of args based on the presence of the
300
+ * conjunction operator ("and").
301
+ *
302
+ * If no "and" is present, returns the original args wrapped in an array.
303
+ *
304
+ * @function
305
+ */
306
+ const conjunctify = (args) => {
307
+ let argsMatrix = [args];
308
+ if (args.length >= 2) {
309
+ // partition args by the string "and"; there may be multiple "and"s
310
+ const andIndices = args
311
+ .map((arg, index) => (arg === 'and' ? index : -1))
312
+ .filter((index) => index !== -1);
313
+ if (andIndices.length > 0) {
314
+ const parts = [];
315
+ let lastIndex = 0;
316
+ for (const andIndex of andIndices) {
317
+ const partsArgs = lastIndex > 0
318
+ ? [args[0], ...args.slice(lastIndex, andIndex)]
319
+ : [...args.slice(lastIndex, andIndex)];
320
+ parts.push(partsArgs);
321
+ lastIndex = andIndex + 1;
322
+ }
323
+ parts.push([args[0], ...args.slice(lastIndex)]);
324
+ argsMatrix = parts;
325
+ }
326
+ }
327
+ return argsMatrix;
279
328
  };
280
329
  /**
281
330
  * Throws an error indicating that no valid assertion could be found for the
282
331
  * provided arguments.
283
332
  *
333
+ * @function
284
334
  * @param args The arguments that were passed to the expect function
285
335
  * @internal
286
336
  */
@@ -293,6 +343,7 @@ const throwInvalidParametersError = (args) => {
293
343
  * Detects if an assertion phrase starts with "not " and returns the cleaned
294
344
  * phrase.
295
345
  *
346
+ * @function
296
347
  * @param phrase - The assertion phrase to check
297
348
  * @returns Object with `isNegated` flag and `cleanedPhrase`
298
349
  */
@@ -309,7 +360,9 @@ const detectNegation = (phrase) => {
309
360
  };
310
361
  };
311
362
  /**
312
- * {@inheritdoc FailFn}
363
+ * {@inheritDoc FailFn}
364
+ *
365
+ * @function
313
366
  */
314
367
  const fail = (reason) => {
315
368
  throw new FailAssertionError({ message: reason });
@@ -1 +1 @@
1
- {"version":3,"file":"expect.js","sourceRoot":"","sources":["../../src/expect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"expect.js","sourceRoot":"","sources":["../../src/expect.ts"],"names":[],"mappings":"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"}
@@ -15,9 +15,9 @@
15
15
  *
16
16
  * @packageDocumentation
17
17
  */
18
- import { type Primitive } from 'type-fest';
19
- import { z } from 'zod/v4';
20
- import type { Constructor, ExpectItExecutor, ZodTypeMap } from './types.js';
18
+ import { type z } from 'zod/v4';
19
+ import type { PhraseLiteralChoice } from './assertion/assertion-types.js';
20
+ import type { Constructor, ExpectItExecutor, PhraseLiteral, ZodTypeMap } from './types.js';
21
21
  /**
22
22
  * Returns `true` if the given value looks like a Zod v4 schema, determined by
23
23
  * the presence of an internal {@link z.core.$ZodTypeDef} field.
@@ -44,6 +44,7 @@ export declare function isZodType(value: unknown): value is z.ZodType;
44
44
  /**
45
45
  * Type guard for a plain object.
46
46
  *
47
+ * @function
47
48
  * @param value Value to test
48
49
  * @returns `true` if the value is a plain object, `false` otherwise
49
50
  */
@@ -51,6 +52,7 @@ export declare const isObject: (value: unknown) => value is NonNullable<object>;
51
52
  /**
52
53
  * Returns `true` if the given value is a {@link z.ZodPromise} schema.
53
54
  *
55
+ * @function
54
56
  * @param value - Value to test
55
57
  * @returns `true` if the value is a `ZodPromise` schema; `false` otherwise
56
58
  */
@@ -58,6 +60,7 @@ export declare const isZodPromise: (value: unknown) => value is z.ZodPromise;
58
60
  /**
59
61
  * Checks if a value is "promise-like", meaning it is a "thenable" object.
60
62
  *
63
+ * @function
61
64
  * @param value - Value to test
62
65
  * @returns `true` if the value is promise-like, `false` otherwise
63
66
  */
@@ -74,6 +77,7 @@ export declare const isPromiseLike: (value: unknown) => value is PromiseLike<unk
74
77
  * This may be the only way we can determine, at runtime, if a function is a
75
78
  * constructor without actually calling it. I am unsure if this only works for
76
79
  * classes.
80
+ * @function
77
81
  * @param fn - Function to test
78
82
  * @returns Whether the function is constructable
79
83
  */
@@ -81,6 +85,7 @@ export declare const isConstructible: (fn: unknown) => fn is Constructor;
81
85
  /**
82
86
  * Type guard for a boolean value
83
87
  *
88
+ * @function
84
89
  * @param value Value to check
85
90
  * @returns `true` if the value is a boolean, `false` otherwise
86
91
  */
@@ -88,6 +93,7 @@ export declare const isBoolean: (value: unknown) => value is boolean;
88
93
  /**
89
94
  * Type guard for a function value
90
95
  *
96
+ * @function
91
97
  * @param value Value to check
92
98
  * @returns `true` if the value is a function, `false` otherwise
93
99
  */
@@ -95,6 +101,7 @@ export declare const isFunction: (value: unknown) => value is (...args: any[]) =
95
101
  /**
96
102
  * Type guard for a string value
97
103
  *
104
+ * @function
98
105
  * @param value Value to check
99
106
  * @returns `true` if the value is a string, `false` otherwise
100
107
  */
@@ -102,28 +109,32 @@ export declare const isString: (value: unknown) => value is string;
102
109
  /**
103
110
  * Type guard for a non-null object value
104
111
  *
112
+ * @function
105
113
  * @param value Value to check
106
114
  * @returns `true` if the value is an object and not null, `false` otherwise
107
115
  */
108
116
  export declare const isNonNullObject: (value: unknown) => value is object;
109
- /**
110
- * Type guard for a null or non-object value
111
- *
112
- * @param value Value to check
113
- * @returns `true` if the value is null or not an object, `false` otherwise
114
- */
115
- export declare const isNullOrNonObject: (value: unknown) => value is null | Primitive;
116
117
  /**
117
118
  * Type guard for a valid WeakKey (object, function, or symbol).
118
119
  *
119
120
  * WeakMaps and WeakSets can only use objects (including functions) or symbols
120
121
  * as keys, not primitives like strings, numbers, booleans, null, or undefined.
121
122
  *
123
+ * @function
122
124
  * @param value Value to check
123
125
  * @returns `true` if the value is a valid WeakKey (object, function, or
124
126
  * symbol), `false` otherwise
125
127
  */
126
128
  export declare const isWeakKey: (value: unknown) => value is WeakKey;
129
+ /**
130
+ * Type guard for a {@link PhraseLiteral} or {@link PhraseLiteralChoice}.
131
+ *
132
+ * @function
133
+ * @param value Value to check
134
+ * @returns `true` if the value is a `PhraseLiteral` or `PhraseLiteralChoice`,
135
+ * `false` otherwise
136
+ */
137
+ export declare const isPhrase: (value: unknown) => value is PhraseLiteral | PhraseLiteralChoice;
127
138
  /**
128
139
  * Generic type guard for instanceof checks.
129
140
  *
@@ -143,6 +154,7 @@ export declare const isWeakKey: (value: unknown) => value is WeakKey;
143
154
  * ```
144
155
  *
145
156
  * @template T - The constructor type to check against
157
+ * @function
146
158
  * @param value - Value to test
147
159
  * @param ctor - Constructor function to check instanceof
148
160
  * @returns `true` if the value is an instance of the constructor, `false`
@@ -169,6 +181,7 @@ export declare const isA: <T extends Constructor>(value: unknown, ctor: T) => va
169
181
  * }
170
182
  * ```
171
183
  *
184
+ * @function
172
185
  * @param value - Value to test
173
186
  * @returns `true` if the value is an Error instance, `false` otherwise
174
187
  */
@@ -194,6 +207,7 @@ export declare const isError: (value: unknown) => value is Error;
194
207
  * ```
195
208
  *
196
209
  * @template Subject - The subject type that the executor function operates on
210
+ * @function
197
211
  * @param value - Value to test
198
212
  * @returns `true` if the value is an ExpectItExecutor function, `false`
199
213
  * otherwise
@@ -1 +1 @@
1
- {"version":3,"file":"guards.d.ts","sourceRoot":"","sources":["../../src/guards.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAO3B,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAI5E;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,UAAU,EAClD,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,CAAC,GACN,KAAK,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;AAC1B;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC;AAkB9D;;;;;GAKG;AACH,eAAO,MAAM,QAAQ,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,WAAW,CAAC,MAAM,CAEpE,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,YAAY,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,CAAC,CAAC,UAC5B,CAAC;AAE9B;;;;;GAKG;AACH,eAAO,MAAM,aAAa,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,WAAW,CAAC,OAAO,CAIpD,CAAC;AAExB;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,eAAe,GAAI,IAAI,OAAO,KAAG,EAAE,IAAI,WAYnD,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,SAAS,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,OACxB,CAAC;AAE7B;;;;;GAKG;AACH,eAAO,MAAM,UAAU,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAC5C,CAAC;AA6B9B;;;;;GAKG;AACH,eAAO,MAAM,QAAQ,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,MACxB,CAAC;AAE5B;;;;;GAKG;AACH,eAAO,MAAM,eAAe,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,MACb,CAAC;AAE9C;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,IAAI,GAAG,SACtB,CAAC;AAE9C;;;;;;;;;GASG;AACH,eAAO,MAAM,SAAS,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,OAGzB,CAAC;AAyB5B;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,GAAG,GAAI,CAAC,SAAS,WAAW,EACvC,OAAO,OAAO,EACd,MAAM,CAAC,KACN,KAAK,IAAI,YAAY,CAAC,CAAC,CAEzB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,OAAO,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,KAA0B,CAAC;AAE7E;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,kBAAkB,GAAI,OAAO,SAAS,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,UAAU,EACzE,OAAO,OAAO,KACb,KAAK,IAAI,gBAAgB,CAAC,OAAO,CAEnC,CAAC"}
1
+ {"version":3,"file":"guards.d.ts","sourceRoot":"","sources":["../../src/guards.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,KAAK,EAEV,mBAAmB,EACpB,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EAEV,WAAW,EACX,gBAAgB,EAChB,aAAa,EACb,UAAU,EACX,MAAM,YAAY,CAAC;AAMpB;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,UAAU,EAClD,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,CAAC,GACN,KAAK,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;AAE1B;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC;AAsB9D;;;;;;GAMG;AACH,eAAO,MAAM,QAAQ,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,WAAW,CAAC,MAAM,CAEpE,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,CAAC,CAAC,UAC5B,CAAC;AAE9B;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,WAAW,CAAC,OAAO,CAIpD,CAAC;AAExB;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,eAAe,GAAI,IAAI,OAAO,KAAG,EAAE,IAAI,WAYnD,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,OACxB,CAAC;AAE7B;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAC5C,CAAC;AAE9B;;;;;;GAMG;AACH,eAAO,MAAM,QAAQ,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,MACxB,CAAC;AAE5B;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,MACb,CAAC;AAE9C;;;;;;;;;;GAUG;AACH,eAAO,MAAM,SAAS,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,OAGzB,CAAC;AA2B5B;;;;;;;GAOG;AACH,eAAO,MAAM,QAAQ,GACnB,OAAO,OAAO,KACb,KAAK,IAAI,aAAa,GAAG,mBAC4B,CAAC;AAEzD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,GAAG,GAAI,CAAC,SAAS,WAAW,EACvC,OAAO,OAAO,EACd,MAAM,CAAC,KACN,KAAK,IAAI,YAAY,CAAC,CAAC,CAEzB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,OAAO,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,KAA0B,CAAC;AAE7E;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,kBAAkB,GAAI,OAAO,SAAS,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,UAAU,EACzE,OAAO,OAAO,KACb,KAAK,IAAI,gBAAgB,CAAC,OAAO,CAEnC,CAAC"}