bupkis 0.1.2 → 0.3.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 (198) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/README.md +16 -16
  3. package/dist/commonjs/assertion/assertion-async.d.ts +2 -1
  4. package/dist/commonjs/assertion/assertion-async.d.ts.map +1 -1
  5. package/dist/commonjs/assertion/assertion-async.js +84 -2
  6. package/dist/commonjs/assertion/assertion-async.js.map +1 -1
  7. package/dist/commonjs/assertion/assertion-sync.d.ts +1 -1
  8. package/dist/commonjs/assertion/assertion-sync.d.ts.map +1 -1
  9. package/dist/commonjs/assertion/assertion-sync.js +5 -1
  10. package/dist/commonjs/assertion/assertion-sync.js.map +1 -1
  11. package/dist/commonjs/assertion/assertion-types.d.ts +39 -84
  12. package/dist/commonjs/assertion/assertion-types.d.ts.map +1 -1
  13. package/dist/commonjs/assertion/assertion.d.ts +1 -1
  14. package/dist/commonjs/assertion/assertion.d.ts.map +1 -1
  15. package/dist/commonjs/assertion/assertion.js +1 -14
  16. package/dist/commonjs/assertion/assertion.js.map +1 -1
  17. package/dist/commonjs/assertion/create.d.ts +5 -33
  18. package/dist/commonjs/assertion/create.d.ts.map +1 -1
  19. package/dist/commonjs/assertion/create.js +17 -6
  20. package/dist/commonjs/assertion/create.js.map +1 -1
  21. package/dist/commonjs/assertion/impl/async.d.ts +122 -21
  22. package/dist/commonjs/assertion/impl/async.d.ts.map +1 -1
  23. package/dist/commonjs/assertion/impl/async.js +114 -90
  24. package/dist/commonjs/assertion/impl/async.js.map +1 -1
  25. package/dist/commonjs/assertion/impl/callback.d.ts +104 -0
  26. package/dist/commonjs/assertion/impl/callback.d.ts.map +1 -0
  27. package/dist/commonjs/assertion/impl/callback.js +694 -0
  28. package/dist/commonjs/assertion/impl/callback.js.map +1 -0
  29. package/dist/commonjs/assertion/impl/index.d.ts +1 -1
  30. package/dist/commonjs/assertion/impl/index.d.ts.map +1 -1
  31. package/dist/commonjs/assertion/impl/index.js.map +1 -1
  32. package/dist/commonjs/assertion/impl/sync-esoteric.js +1 -1
  33. package/dist/commonjs/assertion/impl/sync-esoteric.js.map +1 -1
  34. package/dist/commonjs/assertion/impl/sync-parametric.d.ts +37 -34
  35. package/dist/commonjs/assertion/impl/sync-parametric.d.ts.map +1 -1
  36. package/dist/commonjs/assertion/impl/sync-parametric.js +32 -47
  37. package/dist/commonjs/assertion/impl/sync-parametric.js.map +1 -1
  38. package/dist/commonjs/assertion/impl/sync.d.ts +105 -58
  39. package/dist/commonjs/assertion/impl/sync.d.ts.map +1 -1
  40. package/dist/commonjs/assertion/impl/sync.js +4 -1
  41. package/dist/commonjs/assertion/impl/sync.js.map +1 -1
  42. package/dist/commonjs/bootstrap.d.ts +199 -85
  43. package/dist/commonjs/bootstrap.d.ts.map +1 -1
  44. package/dist/commonjs/bootstrap.js +19 -10
  45. package/dist/commonjs/bootstrap.js.map +1 -1
  46. package/dist/commonjs/constant.js +7 -1
  47. package/dist/commonjs/constant.js.map +1 -1
  48. package/dist/commonjs/error.d.ts +32 -5
  49. package/dist/commonjs/error.d.ts.map +1 -1
  50. package/dist/commonjs/error.js +60 -5
  51. package/dist/commonjs/error.js.map +1 -1
  52. package/dist/commonjs/expect.d.ts +130 -3
  53. package/dist/commonjs/expect.d.ts.map +1 -1
  54. package/dist/commonjs/expect.js +116 -1
  55. package/dist/commonjs/expect.js.map +1 -1
  56. package/dist/commonjs/guards.d.ts +45 -20
  57. package/dist/commonjs/guards.d.ts.map +1 -1
  58. package/dist/commonjs/guards.js +56 -40
  59. package/dist/commonjs/guards.js.map +1 -1
  60. package/dist/commonjs/index.d.ts +241 -86
  61. package/dist/commonjs/index.d.ts.map +1 -1
  62. package/dist/commonjs/index.js +44 -42
  63. package/dist/commonjs/index.js.map +1 -1
  64. package/dist/commonjs/metadata.d.ts +1 -27
  65. package/dist/commonjs/metadata.d.ts.map +1 -1
  66. package/dist/commonjs/metadata.js +16 -15
  67. package/dist/commonjs/metadata.js.map +1 -1
  68. package/dist/commonjs/schema.d.ts +76 -33
  69. package/dist/commonjs/schema.d.ts.map +1 -1
  70. package/dist/commonjs/schema.js +77 -34
  71. package/dist/commonjs/schema.js.map +1 -1
  72. package/dist/commonjs/types.d.ts +480 -39
  73. package/dist/commonjs/types.d.ts.map +1 -1
  74. package/dist/commonjs/types.js +12 -2
  75. package/dist/commonjs/types.js.map +1 -1
  76. package/dist/commonjs/util.d.ts +72 -49
  77. package/dist/commonjs/util.d.ts.map +1 -1
  78. package/dist/commonjs/util.js +175 -155
  79. package/dist/commonjs/util.js.map +1 -1
  80. package/dist/commonjs/value-to-schema.d.ts +122 -0
  81. package/dist/commonjs/value-to-schema.d.ts.map +1 -0
  82. package/dist/commonjs/value-to-schema.js +309 -0
  83. package/dist/commonjs/value-to-schema.js.map +1 -0
  84. package/dist/esm/assertion/assertion-async.d.ts +2 -1
  85. package/dist/esm/assertion/assertion-async.d.ts.map +1 -1
  86. package/dist/esm/assertion/assertion-async.js +85 -3
  87. package/dist/esm/assertion/assertion-async.js.map +1 -1
  88. package/dist/esm/assertion/assertion-sync.d.ts +1 -1
  89. package/dist/esm/assertion/assertion-sync.d.ts.map +1 -1
  90. package/dist/esm/assertion/assertion-sync.js +6 -2
  91. package/dist/esm/assertion/assertion-sync.js.map +1 -1
  92. package/dist/esm/assertion/assertion-types.d.ts +39 -84
  93. package/dist/esm/assertion/assertion-types.d.ts.map +1 -1
  94. package/dist/esm/assertion/assertion.d.ts +1 -1
  95. package/dist/esm/assertion/assertion.d.ts.map +1 -1
  96. package/dist/esm/assertion/assertion.js +1 -14
  97. package/dist/esm/assertion/assertion.js.map +1 -1
  98. package/dist/esm/assertion/create.d.ts +5 -33
  99. package/dist/esm/assertion/create.d.ts.map +1 -1
  100. package/dist/esm/assertion/create.js +14 -4
  101. package/dist/esm/assertion/create.js.map +1 -1
  102. package/dist/esm/assertion/impl/async.d.ts +122 -21
  103. package/dist/esm/assertion/impl/async.d.ts.map +1 -1
  104. package/dist/esm/assertion/impl/async.js +113 -89
  105. package/dist/esm/assertion/impl/async.js.map +1 -1
  106. package/dist/esm/assertion/impl/callback.d.ts +104 -0
  107. package/dist/esm/assertion/impl/callback.d.ts.map +1 -0
  108. package/dist/esm/assertion/impl/callback.js +691 -0
  109. package/dist/esm/assertion/impl/callback.js.map +1 -0
  110. package/dist/esm/assertion/impl/index.d.ts +1 -1
  111. package/dist/esm/assertion/impl/index.d.ts.map +1 -1
  112. package/dist/esm/assertion/impl/index.js +1 -1
  113. package/dist/esm/assertion/impl/index.js.map +1 -1
  114. package/dist/esm/assertion/impl/sync-esoteric.js +2 -2
  115. package/dist/esm/assertion/impl/sync-esoteric.js.map +1 -1
  116. package/dist/esm/assertion/impl/sync-parametric.d.ts +37 -34
  117. package/dist/esm/assertion/impl/sync-parametric.d.ts.map +1 -1
  118. package/dist/esm/assertion/impl/sync-parametric.js +32 -47
  119. package/dist/esm/assertion/impl/sync-parametric.js.map +1 -1
  120. package/dist/esm/assertion/impl/sync.d.ts +105 -58
  121. package/dist/esm/assertion/impl/sync.d.ts.map +1 -1
  122. package/dist/esm/assertion/impl/sync.js +3 -1
  123. package/dist/esm/assertion/impl/sync.js.map +1 -1
  124. package/dist/esm/bootstrap.d.ts +199 -85
  125. package/dist/esm/bootstrap.d.ts.map +1 -1
  126. package/dist/esm/bootstrap.js +19 -10
  127. package/dist/esm/bootstrap.js.map +1 -1
  128. package/dist/esm/constant.js +6 -0
  129. package/dist/esm/constant.js.map +1 -1
  130. package/dist/esm/error.d.ts +32 -5
  131. package/dist/esm/error.d.ts.map +1 -1
  132. package/dist/esm/error.js +59 -5
  133. package/dist/esm/error.js.map +1 -1
  134. package/dist/esm/expect.d.ts +130 -3
  135. package/dist/esm/expect.d.ts.map +1 -1
  136. package/dist/esm/expect.js +117 -2
  137. package/dist/esm/expect.js.map +1 -1
  138. package/dist/esm/guards.d.ts +45 -20
  139. package/dist/esm/guards.d.ts.map +1 -1
  140. package/dist/esm/guards.js +48 -31
  141. package/dist/esm/guards.js.map +1 -1
  142. package/dist/esm/index.d.ts +241 -86
  143. package/dist/esm/index.d.ts.map +1 -1
  144. package/dist/esm/index.js +46 -7
  145. package/dist/esm/index.js.map +1 -1
  146. package/dist/esm/metadata.d.ts +1 -27
  147. package/dist/esm/metadata.d.ts.map +1 -1
  148. package/dist/esm/metadata.js +2 -1
  149. package/dist/esm/metadata.js.map +1 -1
  150. package/dist/esm/schema.d.ts +76 -33
  151. package/dist/esm/schema.d.ts.map +1 -1
  152. package/dist/esm/schema.js +77 -34
  153. package/dist/esm/schema.js.map +1 -1
  154. package/dist/esm/types.d.ts +480 -39
  155. package/dist/esm/types.d.ts.map +1 -1
  156. package/dist/esm/types.js +12 -2
  157. package/dist/esm/types.js.map +1 -1
  158. package/dist/esm/util.d.ts +72 -49
  159. package/dist/esm/util.d.ts.map +1 -1
  160. package/dist/esm/util.js +159 -153
  161. package/dist/esm/util.js.map +1 -1
  162. package/dist/esm/value-to-schema.d.ts +122 -0
  163. package/dist/esm/value-to-schema.d.ts.map +1 -0
  164. package/dist/esm/value-to-schema.js +305 -0
  165. package/dist/esm/value-to-schema.js.map +1 -0
  166. package/package.json +94 -17
  167. package/src/assertion/assertion-async.ts +113 -3
  168. package/src/assertion/assertion-sync.ts +5 -2
  169. package/src/assertion/assertion-types.ts +52 -45
  170. package/src/assertion/assertion.ts +2 -17
  171. package/src/assertion/create.ts +16 -65
  172. package/src/assertion/impl/async.ts +132 -92
  173. package/src/assertion/impl/callback.ts +882 -0
  174. package/src/assertion/impl/index.ts +1 -1
  175. package/src/assertion/impl/sync-esoteric.ts +2 -2
  176. package/src/assertion/impl/sync-parametric.ts +41 -49
  177. package/src/assertion/impl/sync.ts +3 -0
  178. package/src/bootstrap.ts +21 -11
  179. package/src/constant.ts +8 -0
  180. package/src/error.ts +75 -4
  181. package/src/expect.ts +275 -20
  182. package/src/guards.ts +74 -69
  183. package/src/index.ts +72 -11
  184. package/src/metadata.ts +3 -4
  185. package/src/schema.ts +80 -36
  186. package/src/types.ts +625 -72
  187. package/src/util.ts +174 -222
  188. package/src/value-to-schema.ts +464 -0
  189. package/dist/commonjs/api.d.ts +0 -93
  190. package/dist/commonjs/api.d.ts.map +0 -1
  191. package/dist/commonjs/api.js +0 -8
  192. package/dist/commonjs/api.js.map +0 -1
  193. package/dist/esm/api.d.ts +0 -93
  194. package/dist/esm/api.d.ts.map +0 -1
  195. package/dist/esm/api.js +0 -7
  196. package/dist/esm/api.js.map +0 -1
  197. package/src/api.ts +0 -149
  198. package/src/schema.md +0 -15
@@ -18,8 +18,12 @@ import {
18
18
  FunctionSchema,
19
19
  WrappedPromiseLikeSchema,
20
20
  } from '../../schema.js';
21
- import { valueToSchema } from '../../util.js';
21
+ import {
22
+ valueToSchema,
23
+ valueToSchemaOptionsForSatisfies,
24
+ } from '../../value-to-schema.js';
22
25
  import { createAsyncAssertion } from '../create.js';
26
+ import { CallbackAsyncAssertions } from './callback.js';
23
27
 
24
28
  const trapAsyncFnError = async (fn: () => unknown) => {
25
29
  try {
@@ -37,15 +41,18 @@ const trapPromiseError = async (promise: PromiseLike<unknown>) => {
37
41
  }
38
42
  };
39
43
 
40
- export const AsyncAssertions = [
44
+ export const PromiseAssertions = [
41
45
  createAsyncAssertion(
42
46
  [FunctionSchema, ['to resolve', 'to fulfill']],
43
47
  async (subject) => {
44
48
  try {
45
49
  await subject();
46
- return true;
47
50
  } catch {
48
- return false;
51
+ return {
52
+ actual: 'function rejected',
53
+ expected: 'function to fulfill',
54
+ message: 'Expected function to fulfill, but it rejected instead',
55
+ };
49
56
  }
50
57
  },
51
58
  ),
@@ -54,33 +61,38 @@ export const AsyncAssertions = [
54
61
  async (subject) => {
55
62
  try {
56
63
  await subject;
57
- return true;
58
64
  } catch {
59
- return false;
65
+ return {
66
+ actual: 'promise rejected',
67
+ expected: 'promise to not reject',
68
+ message: 'Expected promise to fulfill, but it rejected instead',
69
+ };
60
70
  }
61
71
  },
62
72
  ),
63
73
 
64
74
  // Non-parameterized "to reject" assertions
65
75
  createAsyncAssertion([FunctionSchema, 'to reject'], async (subject) => {
66
- let rejected = false;
67
76
  try {
68
77
  await subject();
69
- } catch {
70
- rejected = true;
71
- }
72
- return rejected;
78
+ return {
79
+ actual: 'function fulfilled',
80
+ expected: 'function to reject',
81
+ message: 'Expected function to reject, but it fulfilled instead',
82
+ };
83
+ } catch {}
73
84
  }),
74
85
  createAsyncAssertion(
75
86
  [WrappedPromiseLikeSchema, 'to reject'],
76
87
  async (subject) => {
77
- let rejected = false;
78
88
  try {
79
89
  await subject;
80
- } catch {
81
- rejected = true;
82
- }
83
- return rejected;
90
+ return {
91
+ actual: 'function fulfilled',
92
+ expected: 'function to reject',
93
+ message: 'Expected function to reject, but it fulfilled instead',
94
+ };
95
+ } catch {}
84
96
  },
85
97
  ),
86
98
  // Parameterized "to reject" with class constructor
@@ -113,66 +125,91 @@ export const AsyncAssertions = [
113
125
  createAsyncAssertion(
114
126
  [
115
127
  FunctionSchema,
116
- ['to reject with'],
128
+ ['to reject with error satisfying'],
117
129
  z.union([z.string(), z.instanceof(RegExp), z.looseObject({})]),
118
130
  ],
119
131
  async (subject, param) => {
120
132
  const error = await trapAsyncFnError(subject);
121
133
  if (!error) {
122
- return false;
134
+ return {
135
+ actual: 'function fulfilled',
136
+ expect: 'function to reject',
137
+ message: 'Expected function to reject, but it fulfilled instead',
138
+ };
123
139
  }
124
140
 
141
+ let schema: undefined | z.ZodType;
142
+ // TODO: can valueToSchema handle the first two conditional branches?
125
143
  if (isString(param)) {
126
- return z
127
- .object({
144
+ schema = z
145
+ .looseObject({
128
146
  message: z.coerce.string().pipe(z.literal(param)),
129
147
  })
130
- .or(z.coerce.string().pipe(z.literal(param)))
131
- .safeParse(error).success;
148
+ .or(z.coerce.string().pipe(z.literal(param)));
132
149
  } else if (isA(param, RegExp)) {
133
- return z
134
- .object({
150
+ schema = z
151
+ .looseObject({
135
152
  message: z.coerce.string().regex(param),
136
153
  })
137
- .or(z.coerce.string().regex(param))
138
- .safeParse(error).success;
154
+ .or(z.coerce.string().regex(param));
139
155
  } else if (isNonNullObject(param)) {
140
- return valueToSchema(param, { strict: false }).safeParse(error).success;
141
- } else {
142
- throw new TypeError(`Invalid parameter schema: ${inspect(param)}`);
156
+ schema = valueToSchema(param, valueToSchemaOptionsForSatisfies);
157
+ }
158
+ /* c8 ignore next 5 */
159
+ if (!schema) {
160
+ throw new TypeError(
161
+ `Invalid parameter schema: ${inspect(param, { depth: 2 })}`,
162
+ );
163
+ }
164
+
165
+ const result = schema.safeParse(error);
166
+ if (!result.success) {
167
+ return result.error;
143
168
  }
144
169
  },
145
170
  ),
146
171
  createAsyncAssertion(
147
172
  [
148
173
  WrappedPromiseLikeSchema,
149
- ['to reject with'],
174
+ ['to reject with error satisfying'],
150
175
  z.union([z.string(), z.instanceof(RegExp), z.looseObject({})]),
151
176
  ],
152
177
  async (subject, param) => {
153
178
  const error = await trapPromiseError(subject);
154
179
  if (!error) {
155
- return false;
180
+ return {
181
+ actual: 'promise fulfilled',
182
+ expect: 'promise to reject',
183
+ message: 'Expected promise to reject, but it fulfilled instead',
184
+ };
156
185
  }
157
-
186
+ let schema: undefined | z.ZodType;
187
+ // TODO: can valueToSchema handle the first two conditional branches?
158
188
  if (isString(param)) {
159
- return z
160
- .object({
189
+ schema = z
190
+ .looseObject({
161
191
  message: z.coerce.string().pipe(z.literal(param)),
162
192
  })
163
- .or(z.coerce.string().pipe(z.literal(param)))
164
- .safeParse(error).success;
193
+ .or(z.coerce.string().pipe(z.literal(param)));
165
194
  } else if (isA(param, RegExp)) {
166
- return z
167
- .object({
195
+ schema = z
196
+ .looseObject({
168
197
  message: z.coerce.string().regex(param),
169
198
  })
170
- .or(z.coerce.string().regex(param))
171
- .safeParse(error).success;
199
+ .or(z.coerce.string().regex(param));
172
200
  } else if (isNonNullObject(param)) {
173
- return valueToSchema(param, { strict: false }).safeParse(error).success;
174
- } else {
175
- throw new TypeError(`Invalid parameter schema: ${inspect(param)}`);
201
+ schema = valueToSchema(param, valueToSchemaOptionsForSatisfies);
202
+ }
203
+ /* c8 ignore next 5 */
204
+ if (!schema) {
205
+ throw new TypeError(
206
+ `Invalid parameter schema: ${inspect(param, { depth: 2 })}`,
207
+ );
208
+ }
209
+
210
+ const result = schema.safeParse(error);
211
+ if (!result.success) {
212
+ return result.error;
176
213
  }
177
214
  },
178
215
  ),
@@ -180,7 +217,7 @@ export const AsyncAssertions = [
180
217
  createAsyncAssertion(
181
218
  [
182
219
  WrappedPromiseLikeSchema,
183
- ['to fulfill with value satisfying', 'to resolve to value satisfying'],
220
+ ['to fulfill with value satisfying', 'to resolve with value satisfying'],
184
221
  z.union([z.string(), z.instanceof(RegExp), z.looseObject({})]),
185
222
  ],
186
223
  async (promise, param) => {
@@ -196,35 +233,33 @@ export const AsyncAssertions = [
196
233
  )}`,
197
234
  };
198
235
  }
236
+ let schema: undefined | z.ZodType;
237
+ // TODO: can valueToSchema handle the first two conditional branches?
199
238
  if (isString(param)) {
200
- return z
201
- .object({
239
+ schema = z
240
+ .looseObject({
202
241
  message: z.coerce.string().pipe(z.literal(param)),
203
242
  })
204
- .or(z.coerce.string().pipe(z.literal(param)))
205
- .safeParse(value).success;
243
+ .or(z.coerce.string().pipe(z.literal(param)));
206
244
  } else if (isA(param, RegExp)) {
207
- return z
208
- .object({
245
+ schema = z
246
+ .looseObject({
209
247
  message: z.coerce.string().regex(param),
210
248
  })
211
- .or(z.coerce.string().regex(param))
212
- .safeParse(value).success;
249
+ .or(z.coerce.string().regex(param));
213
250
  } else if (isNonNullObject(param)) {
214
- const schema = valueToSchema(param);
215
- const result = schema.safeParse(value);
216
- if (!result.success) {
217
- return {
218
- actual: value,
219
- expected: param,
220
- message: `Expected resolved value to satisfy schema ${inspect(
221
- param,
222
- )}, but it does not`,
223
- };
224
- }
225
- return true;
226
- } else {
227
- throw new TypeError(`Invalid parameter schema: ${inspect(param)}`);
251
+ schema = valueToSchema(param, valueToSchemaOptionsForSatisfies);
252
+ }
253
+ /* c8 ignore next 5 */
254
+ if (!schema) {
255
+ throw new TypeError(
256
+ `Invalid parameter schema: ${inspect(param, { depth: 2 })}`,
257
+ );
258
+ }
259
+
260
+ const result = schema.safeParse(value);
261
+ if (!result.success) {
262
+ return result.error;
228
263
  }
229
264
  },
230
265
  ),
@@ -232,7 +267,7 @@ export const AsyncAssertions = [
232
267
  createAsyncAssertion(
233
268
  [
234
269
  FunctionSchema,
235
- ['to fulfill with value satisfying', 'to resolve to value satisfying'],
270
+ ['to fulfill with value satisfying', 'to resolve with value satisfying'],
236
271
  z.union([z.string(), z.instanceof(RegExp), z.looseObject({})]),
237
272
  ],
238
273
  async (subject, param) => {
@@ -241,44 +276,49 @@ export const AsyncAssertions = [
241
276
  value = await subject();
242
277
  } catch (err) {
243
278
  return {
244
- actual: err,
245
- expect: 'function to not throw',
246
- message: `Expected function to not throw, but it threw ${inspect(
279
+ actual: 'function rejected',
280
+ expect: 'function to fulfill',
281
+ message: `Expected function to fulfill, but it rejected with ${inspect(
247
282
  err,
248
283
  )}`,
249
284
  };
250
285
  }
251
286
 
287
+ let schema: undefined | z.ZodType;
288
+ // TODO: can valueToSchema handle the first two conditional branches?
252
289
  if (isString(param)) {
253
- return z
254
- .object({
290
+ schema = z
291
+ .looseObject({
255
292
  message: z.coerce.string().pipe(z.literal(param)),
256
293
  })
257
- .or(z.coerce.string().pipe(z.literal(param)))
258
- .safeParse(value).success;
294
+ .or(z.coerce.string().pipe(z.literal(param)));
259
295
  } else if (isA(param, RegExp)) {
260
- return z
261
- .object({
296
+ schema = z
297
+ .looseObject({
262
298
  message: z.coerce.string().regex(param),
263
299
  })
264
- .or(z.coerce.string().regex(param))
265
- .safeParse(value).success;
300
+ .or(z.coerce.string().regex(param));
266
301
  } else if (isNonNullObject(param)) {
267
- const schema = valueToSchema(param);
268
- const result = schema.safeParse(value);
269
- if (!result.success) {
270
- return {
271
- actual: value,
272
- expected: param,
273
- message: `Expected resolved value to satisfy schema ${inspect(
274
- param,
275
- )}, but it does not`,
276
- };
277
- }
278
- return true;
279
- } else {
280
- throw new TypeError(`Invalid parameter schema: ${inspect(param)}`);
302
+ schema = valueToSchema(param, valueToSchemaOptionsForSatisfies);
303
+ }
304
+ /* c8 ignore next 5 */
305
+ if (!schema) {
306
+ throw new TypeError(
307
+ `Invalid parameter schema: ${inspect(param, { depth: 2 })}`,
308
+ );
309
+ }
310
+
311
+ const result = schema.safeParse(value);
312
+ if (!result.success) {
313
+ return result.error;
281
314
  }
282
315
  },
283
316
  ),
284
317
  ] as const;
318
+
319
+ export const AsyncAssertions = [
320
+ ...PromiseAssertions,
321
+ ...CallbackAsyncAssertions,
322
+ ] as const;
323
+
324
+ export { CallbackAsyncAssertions };