bupkis 0.18.2 → 1.0.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 (390) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/README.md +1 -1
  3. package/dist/assertion/assertion-async.cjs +268 -0
  4. package/dist/assertion/assertion-async.cjs.map +1 -0
  5. package/dist/assertion/assertion-async.d.cts +40 -0
  6. package/dist/assertion/assertion-async.d.cts.map +1 -0
  7. package/dist/assertion/assertion-async.d.ts +40 -0
  8. package/dist/assertion/assertion-async.d.ts.map +1 -0
  9. package/dist/assertion/assertion-async.js +259 -0
  10. package/dist/assertion/assertion-async.js.map +1 -0
  11. package/dist/assertion/assertion-standard-schema-async.cjs +132 -0
  12. package/dist/assertion/assertion-standard-schema-async.cjs.map +1 -0
  13. package/dist/assertion/assertion-standard-schema-async.d.cts +52 -0
  14. package/dist/assertion/assertion-standard-schema-async.d.cts.map +1 -0
  15. package/dist/assertion/assertion-standard-schema-async.d.ts +52 -0
  16. package/dist/assertion/assertion-standard-schema-async.d.ts.map +1 -0
  17. package/dist/assertion/assertion-standard-schema-async.js +128 -0
  18. package/dist/assertion/assertion-standard-schema-async.js.map +1 -0
  19. package/dist/assertion/assertion-standard-schema-sync.cjs +141 -0
  20. package/dist/assertion/assertion-standard-schema-sync.cjs.map +1 -0
  21. package/dist/assertion/assertion-standard-schema-sync.d.cts +52 -0
  22. package/dist/assertion/assertion-standard-schema-sync.d.cts.map +1 -0
  23. package/dist/assertion/assertion-standard-schema-sync.d.ts +52 -0
  24. package/dist/assertion/assertion-standard-schema-sync.d.ts.map +1 -0
  25. package/dist/assertion/assertion-standard-schema-sync.js +137 -0
  26. package/dist/assertion/assertion-standard-schema-sync.js.map +1 -0
  27. package/dist/assertion/assertion-sync.cjs +281 -0
  28. package/dist/assertion/assertion-sync.cjs.map +1 -0
  29. package/dist/assertion/assertion-sync.d.cts +60 -0
  30. package/dist/assertion/assertion-sync.d.cts.map +1 -0
  31. package/dist/assertion/assertion-sync.d.ts +60 -0
  32. package/dist/assertion/assertion-sync.d.ts.map +1 -0
  33. package/dist/assertion/assertion-sync.js +275 -0
  34. package/dist/assertion/assertion-sync.js.map +1 -0
  35. package/dist/assertion/assertion-types.cjs +20 -0
  36. package/dist/assertion/assertion-types.cjs.map +1 -0
  37. package/dist/assertion/assertion-types.d.cts +1086 -0
  38. package/dist/assertion/assertion-types.d.cts.map +1 -0
  39. package/dist/assertion/assertion-types.d.ts +1086 -0
  40. package/dist/assertion/assertion-types.d.ts.map +1 -0
  41. package/dist/assertion/assertion-types.js +19 -0
  42. package/dist/assertion/assertion-types.js.map +1 -0
  43. package/dist/assertion/assertion.cjs +382 -0
  44. package/dist/assertion/assertion.cjs.map +1 -0
  45. package/dist/assertion/assertion.d.cts +109 -0
  46. package/dist/assertion/assertion.d.cts.map +1 -0
  47. package/dist/assertion/assertion.d.ts +109 -0
  48. package/dist/assertion/assertion.d.ts.map +1 -0
  49. package/dist/assertion/assertion.js +375 -0
  50. package/dist/assertion/assertion.js.map +1 -0
  51. package/dist/assertion/create.cjs +148 -0
  52. package/dist/assertion/create.cjs.map +1 -0
  53. package/dist/assertion/create.d.cts +85 -0
  54. package/dist/assertion/create.d.cts.map +1 -0
  55. package/dist/assertion/create.d.ts +85 -0
  56. package/dist/assertion/create.d.ts.map +1 -0
  57. package/dist/assertion/create.js +143 -0
  58. package/dist/assertion/create.js.map +1 -0
  59. package/dist/assertion/format-assertion-failure.cjs +63 -0
  60. package/dist/assertion/format-assertion-failure.cjs.map +1 -0
  61. package/dist/assertion/format-assertion-failure.d.cts +21 -0
  62. package/dist/assertion/format-assertion-failure.d.cts.map +1 -0
  63. package/dist/assertion/format-assertion-failure.d.ts +21 -0
  64. package/dist/assertion/format-assertion-failure.d.ts.map +1 -0
  65. package/dist/assertion/format-assertion-failure.js +59 -0
  66. package/dist/assertion/format-assertion-failure.js.map +1 -0
  67. package/dist/assertion/impl/assertion-util.cjs +68 -0
  68. package/dist/assertion/impl/assertion-util.cjs.map +1 -0
  69. package/dist/assertion/impl/assertion-util.d.cts +36 -0
  70. package/dist/assertion/impl/assertion-util.d.cts.map +1 -0
  71. package/dist/assertion/impl/assertion-util.d.ts +36 -0
  72. package/dist/assertion/impl/assertion-util.d.ts.map +1 -0
  73. package/dist/assertion/impl/assertion-util.js +62 -0
  74. package/dist/assertion/impl/assertion-util.js.map +1 -0
  75. package/dist/assertion/impl/async-iterable.cjs +627 -0
  76. package/dist/assertion/impl/async-iterable.cjs.map +1 -0
  77. package/dist/assertion/impl/async-iterable.d.cts +406 -0
  78. package/dist/assertion/impl/async-iterable.d.cts.map +1 -0
  79. package/dist/assertion/impl/async-iterable.d.ts +406 -0
  80. package/dist/assertion/impl/async-iterable.d.ts.map +1 -0
  81. package/dist/assertion/impl/async-iterable.js +624 -0
  82. package/dist/assertion/impl/async-iterable.js.map +1 -0
  83. package/dist/assertion/impl/async-parametric.cjs +412 -0
  84. package/dist/assertion/impl/async-parametric.cjs.map +1 -0
  85. package/dist/assertion/impl/async-parametric.d.cts +278 -0
  86. package/dist/assertion/impl/async-parametric.d.cts.map +1 -0
  87. package/dist/assertion/impl/async-parametric.d.ts +278 -0
  88. package/dist/assertion/impl/async-parametric.d.ts.map +1 -0
  89. package/dist/assertion/impl/async-parametric.js +409 -0
  90. package/dist/assertion/impl/async-parametric.js.map +1 -0
  91. package/dist/assertion/impl/async.cjs +56 -0
  92. package/dist/assertion/impl/async.cjs.map +1 -0
  93. package/dist/assertion/impl/async.d.cts +179 -0
  94. package/dist/assertion/impl/async.d.cts.map +1 -0
  95. package/dist/assertion/impl/async.d.ts +179 -0
  96. package/dist/assertion/impl/async.d.ts.map +1 -0
  97. package/dist/assertion/impl/async.js +39 -0
  98. package/dist/assertion/impl/async.js.map +1 -0
  99. package/dist/assertion/impl/index.cjs +37 -0
  100. package/dist/assertion/impl/index.cjs.map +1 -0
  101. package/dist/assertion/impl/index.d.cts +21 -0
  102. package/dist/assertion/impl/index.d.cts.map +1 -0
  103. package/dist/assertion/impl/index.d.ts +21 -0
  104. package/dist/assertion/impl/index.d.ts.map +1 -0
  105. package/dist/assertion/impl/index.js +21 -0
  106. package/dist/assertion/impl/index.js.map +1 -0
  107. package/dist/assertion/impl/iteration-util.cjs +297 -0
  108. package/dist/assertion/impl/iteration-util.cjs.map +1 -0
  109. package/dist/assertion/impl/iteration-util.d.cts +12 -0
  110. package/dist/assertion/impl/iteration-util.d.cts.map +1 -0
  111. package/dist/assertion/impl/iteration-util.d.ts +12 -0
  112. package/dist/assertion/impl/iteration-util.d.ts.map +1 -0
  113. package/dist/assertion/impl/iteration-util.js +282 -0
  114. package/dist/assertion/impl/iteration-util.js.map +1 -0
  115. package/dist/assertion/impl/snapshot.cjs +276 -0
  116. package/dist/assertion/impl/snapshot.cjs.map +1 -0
  117. package/dist/assertion/impl/snapshot.d.cts +278 -0
  118. package/dist/assertion/impl/snapshot.d.cts.map +1 -0
  119. package/dist/assertion/impl/snapshot.d.ts +278 -0
  120. package/dist/assertion/impl/snapshot.d.ts.map +1 -0
  121. package/dist/assertion/impl/snapshot.js +273 -0
  122. package/dist/assertion/impl/snapshot.js.map +1 -0
  123. package/dist/assertion/impl/sync-basic.cjs +553 -0
  124. package/dist/assertion/impl/sync-basic.cjs.map +1 -0
  125. package/dist/assertion/impl/sync-basic.d.cts +528 -0
  126. package/dist/assertion/impl/sync-basic.d.cts.map +1 -0
  127. package/dist/assertion/impl/sync-basic.d.ts +528 -0
  128. package/dist/assertion/impl/sync-basic.d.ts.map +1 -0
  129. package/dist/assertion/impl/sync-basic.js +550 -0
  130. package/dist/assertion/impl/sync-basic.js.map +1 -0
  131. package/dist/assertion/impl/sync-collection.cjs +1424 -0
  132. package/dist/assertion/impl/sync-collection.cjs.map +1 -0
  133. package/dist/assertion/impl/sync-collection.d.cts +922 -0
  134. package/dist/assertion/impl/sync-collection.d.cts.map +1 -0
  135. package/dist/assertion/impl/sync-collection.d.ts +922 -0
  136. package/dist/assertion/impl/sync-collection.d.ts.map +1 -0
  137. package/dist/assertion/impl/sync-collection.js +1418 -0
  138. package/dist/assertion/impl/sync-collection.js.map +1 -0
  139. package/dist/assertion/impl/sync-date.cjs +341 -0
  140. package/dist/assertion/impl/sync-date.cjs.map +1 -0
  141. package/dist/assertion/impl/sync-date.d.cts +209 -0
  142. package/dist/assertion/impl/sync-date.d.cts.map +1 -0
  143. package/dist/assertion/impl/sync-date.d.ts +209 -0
  144. package/dist/assertion/impl/sync-date.d.ts.map +1 -0
  145. package/dist/assertion/impl/sync-date.js +338 -0
  146. package/dist/assertion/impl/sync-date.js.map +1 -0
  147. package/dist/assertion/impl/sync-esoteric.cjs +214 -0
  148. package/dist/assertion/impl/sync-esoteric.cjs.map +1 -0
  149. package/dist/assertion/impl/sync-esoteric.d.cts +191 -0
  150. package/dist/assertion/impl/sync-esoteric.d.cts.map +1 -0
  151. package/dist/assertion/impl/sync-esoteric.d.ts +191 -0
  152. package/dist/assertion/impl/sync-esoteric.d.ts.map +1 -0
  153. package/dist/assertion/impl/sync-esoteric.js +211 -0
  154. package/dist/assertion/impl/sync-esoteric.js.map +1 -0
  155. package/dist/assertion/impl/sync-iterable.cjs +512 -0
  156. package/dist/assertion/impl/sync-iterable.cjs.map +1 -0
  157. package/dist/assertion/impl/sync-iterable.d.cts +334 -0
  158. package/dist/assertion/impl/sync-iterable.d.cts.map +1 -0
  159. package/dist/assertion/impl/sync-iterable.d.ts +334 -0
  160. package/dist/assertion/impl/sync-iterable.d.ts.map +1 -0
  161. package/dist/assertion/impl/sync-iterable.js +509 -0
  162. package/dist/assertion/impl/sync-iterable.js.map +1 -0
  163. package/dist/assertion/impl/sync-parametric.cjs +805 -0
  164. package/dist/assertion/impl/sync-parametric.cjs.map +1 -0
  165. package/dist/assertion/impl/sync-parametric.d.cts +560 -0
  166. package/dist/assertion/impl/sync-parametric.d.cts.map +1 -0
  167. package/dist/assertion/impl/sync-parametric.d.ts +560 -0
  168. package/dist/assertion/impl/sync-parametric.d.ts.map +1 -0
  169. package/dist/assertion/impl/sync-parametric.js +802 -0
  170. package/dist/assertion/impl/sync-parametric.js.map +1 -0
  171. package/dist/assertion/impl/sync.cjs +229 -0
  172. package/dist/assertion/impl/sync.cjs.map +1 -0
  173. package/dist/assertion/impl/sync.d.cts +536 -0
  174. package/dist/assertion/impl/sync.d.cts.map +1 -0
  175. package/dist/assertion/impl/sync.d.ts +536 -0
  176. package/dist/assertion/impl/sync.d.ts.map +1 -0
  177. package/dist/assertion/impl/sync.js +212 -0
  178. package/dist/assertion/impl/sync.js.map +1 -0
  179. package/dist/assertion/index.cjs +38 -0
  180. package/dist/assertion/index.cjs.map +1 -0
  181. package/dist/assertion/index.d.cts +18 -0
  182. package/dist/assertion/index.d.cts.map +1 -0
  183. package/dist/assertion/index.d.ts +18 -0
  184. package/dist/assertion/index.d.ts.map +1 -0
  185. package/dist/assertion/index.js +17 -0
  186. package/dist/assertion/index.js.map +1 -0
  187. package/dist/assertion/slotify.cjs +165 -0
  188. package/dist/assertion/slotify.cjs.map +1 -0
  189. package/dist/assertion/slotify.d.cts +11 -0
  190. package/dist/assertion/slotify.d.cts.map +1 -0
  191. package/dist/assertion/slotify.d.ts +11 -0
  192. package/dist/assertion/slotify.d.ts.map +1 -0
  193. package/dist/assertion/slotify.js +161 -0
  194. package/dist/assertion/slotify.js.map +1 -0
  195. package/dist/bootstrap.cjs +43 -0
  196. package/dist/bootstrap.cjs.map +1 -0
  197. package/dist/bootstrap.d.cts +27 -0
  198. package/dist/bootstrap.d.cts.map +1 -0
  199. package/dist/bootstrap.d.ts +27 -0
  200. package/dist/bootstrap.d.ts.map +1 -0
  201. package/dist/bootstrap.js +40 -0
  202. package/dist/bootstrap.js.map +1 -0
  203. package/dist/constant.cjs +82 -0
  204. package/dist/constant.cjs.map +1 -0
  205. package/dist/constant.d.cts +69 -0
  206. package/dist/constant.d.cts.map +1 -0
  207. package/dist/constant.d.ts +69 -0
  208. package/dist/constant.d.ts.map +1 -0
  209. package/dist/constant.js +79 -0
  210. package/dist/constant.js.map +1 -0
  211. package/dist/diff.cjs +340 -0
  212. package/dist/diff.cjs.map +1 -0
  213. package/dist/diff.d.cts +51 -0
  214. package/dist/diff.d.cts.map +1 -0
  215. package/dist/diff.d.ts +51 -0
  216. package/dist/diff.d.ts.map +1 -0
  217. package/dist/diff.js +334 -0
  218. package/dist/diff.js.map +1 -0
  219. package/dist/error.cjs +194 -0
  220. package/dist/error.cjs.map +1 -0
  221. package/dist/error.d.cts +212 -0
  222. package/dist/error.d.cts.map +1 -0
  223. package/dist/error.d.ts +212 -0
  224. package/dist/error.d.ts.map +1 -0
  225. package/dist/error.js +181 -0
  226. package/dist/error.js.map +1 -0
  227. package/dist/expect.cjs +587 -0
  228. package/dist/expect.cjs.map +1 -0
  229. package/dist/expect.d.cts +138 -0
  230. package/dist/expect.d.cts.map +1 -0
  231. package/dist/expect.d.ts +138 -0
  232. package/dist/expect.d.ts.map +1 -0
  233. package/dist/expect.js +582 -0
  234. package/dist/expect.js.map +1 -0
  235. package/dist/guards.cjs +291 -0
  236. package/dist/guards.cjs.map +1 -0
  237. package/dist/guards.d.cts +225 -0
  238. package/dist/guards.d.cts.map +1 -0
  239. package/dist/guards.d.ts +225 -0
  240. package/dist/guards.d.ts.map +1 -0
  241. package/dist/guards.js +273 -0
  242. package/dist/guards.js.map +1 -0
  243. package/dist/index.cjs +111 -0
  244. package/dist/index.cjs.map +1 -0
  245. package/dist/index.d.cts +460 -0
  246. package/dist/index.d.cts.map +1 -0
  247. package/dist/index.d.ts +460 -0
  248. package/dist/index.d.ts.map +1 -0
  249. package/dist/index.js +71 -0
  250. package/dist/index.js.map +1 -0
  251. package/dist/internal-schema.cjs +234 -0
  252. package/dist/internal-schema.cjs.map +1 -0
  253. package/dist/internal-schema.d.cts +8 -0
  254. package/dist/internal-schema.d.cts.map +1 -0
  255. package/dist/internal-schema.d.ts +8 -0
  256. package/dist/internal-schema.d.ts.map +1 -0
  257. package/dist/internal-schema.js +229 -0
  258. package/dist/internal-schema.js.map +1 -0
  259. package/dist/metadata.cjs +57 -0
  260. package/dist/metadata.cjs.map +1 -0
  261. package/dist/metadata.d.cts +27 -0
  262. package/dist/metadata.d.cts.map +1 -0
  263. package/dist/metadata.d.ts +27 -0
  264. package/dist/metadata.d.ts.map +1 -0
  265. package/dist/metadata.js +54 -0
  266. package/dist/metadata.js.map +1 -0
  267. package/dist/schema.cjs +1522 -0
  268. package/dist/schema.cjs.map +1 -0
  269. package/dist/schema.d.cts +1196 -0
  270. package/dist/schema.d.cts.map +1 -0
  271. package/dist/schema.d.ts +1196 -0
  272. package/dist/schema.d.ts.map +1 -0
  273. package/dist/schema.js +1516 -0
  274. package/dist/schema.js.map +1 -0
  275. package/dist/snapshot/adapter.cjs +29 -0
  276. package/dist/snapshot/adapter.cjs.map +1 -0
  277. package/dist/snapshot/adapter.d.cts +258 -0
  278. package/dist/snapshot/adapter.d.cts.map +1 -0
  279. package/dist/snapshot/adapter.d.ts +258 -0
  280. package/dist/snapshot/adapter.d.ts.map +1 -0
  281. package/dist/snapshot/adapter.js +25 -0
  282. package/dist/snapshot/adapter.js.map +1 -0
  283. package/dist/snapshot/adapters/fallback.cjs +452 -0
  284. package/dist/snapshot/adapters/fallback.cjs.map +1 -0
  285. package/dist/snapshot/adapters/fallback.d.cts +185 -0
  286. package/dist/snapshot/adapters/fallback.d.cts.map +1 -0
  287. package/dist/snapshot/adapters/fallback.d.ts +185 -0
  288. package/dist/snapshot/adapters/fallback.d.ts.map +1 -0
  289. package/dist/snapshot/adapters/fallback.js +445 -0
  290. package/dist/snapshot/adapters/fallback.js.map +1 -0
  291. package/dist/snapshot/adapters/node-test.cjs +297 -0
  292. package/dist/snapshot/adapters/node-test.cjs.map +1 -0
  293. package/dist/snapshot/adapters/node-test.d.cts +131 -0
  294. package/dist/snapshot/adapters/node-test.d.cts.map +1 -0
  295. package/dist/snapshot/adapters/node-test.d.ts +131 -0
  296. package/dist/snapshot/adapters/node-test.d.ts.map +1 -0
  297. package/dist/snapshot/adapters/node-test.js +293 -0
  298. package/dist/snapshot/adapters/node-test.js.map +1 -0
  299. package/dist/snapshot/index.cjs +61 -0
  300. package/dist/snapshot/index.cjs.map +1 -0
  301. package/dist/snapshot/index.d.cts +40 -0
  302. package/dist/snapshot/index.d.cts.map +1 -0
  303. package/dist/snapshot/index.d.ts +40 -0
  304. package/dist/snapshot/index.d.ts.map +1 -0
  305. package/dist/snapshot/index.js +44 -0
  306. package/dist/snapshot/index.js.map +1 -0
  307. package/dist/snapshot/node-version.cjs +49 -0
  308. package/dist/snapshot/node-version.cjs.map +1 -0
  309. package/dist/snapshot/node-version.d.cts +34 -0
  310. package/dist/snapshot/node-version.d.cts.map +1 -0
  311. package/dist/snapshot/node-version.d.ts +34 -0
  312. package/dist/snapshot/node-version.d.ts.map +1 -0
  313. package/dist/snapshot/node-version.js +44 -0
  314. package/dist/snapshot/node-version.js.map +1 -0
  315. package/dist/snapshot/select-adapter.cjs +170 -0
  316. package/dist/snapshot/select-adapter.cjs.map +1 -0
  317. package/dist/snapshot/select-adapter.d.cts +128 -0
  318. package/dist/snapshot/select-adapter.d.cts.map +1 -0
  319. package/dist/snapshot/select-adapter.d.ts +128 -0
  320. package/dist/snapshot/select-adapter.d.ts.map +1 -0
  321. package/dist/snapshot/select-adapter.js +164 -0
  322. package/dist/snapshot/select-adapter.js.map +1 -0
  323. package/dist/snapshot/serializer.cjs +245 -0
  324. package/dist/snapshot/serializer.cjs.map +1 -0
  325. package/dist/snapshot/serializer.d.cts +126 -0
  326. package/dist/snapshot/serializer.d.cts.map +1 -0
  327. package/dist/snapshot/serializer.d.ts +126 -0
  328. package/dist/snapshot/serializer.d.ts.map +1 -0
  329. package/dist/snapshot/serializer.js +237 -0
  330. package/dist/snapshot/serializer.js.map +1 -0
  331. package/dist/standard-schema.cjs +13 -0
  332. package/dist/standard-schema.cjs.map +1 -0
  333. package/dist/standard-schema.d.cts +192 -0
  334. package/dist/standard-schema.d.cts.map +1 -0
  335. package/dist/standard-schema.d.ts +192 -0
  336. package/dist/standard-schema.d.ts.map +1 -0
  337. package/dist/standard-schema.js +12 -0
  338. package/dist/standard-schema.js.map +1 -0
  339. package/dist/types.cjs +22 -0
  340. package/dist/types.cjs.map +1 -0
  341. package/dist/types.d.cts +756 -0
  342. package/dist/types.d.cts.map +1 -0
  343. package/dist/types.d.ts +756 -0
  344. package/dist/types.d.ts.map +1 -0
  345. package/dist/types.js +21 -0
  346. package/dist/types.js.map +1 -0
  347. package/dist/use.cjs +240 -0
  348. package/dist/use.cjs.map +1 -0
  349. package/dist/use.d.cts +8 -0
  350. package/dist/use.d.cts.map +1 -0
  351. package/dist/use.d.ts +8 -0
  352. package/dist/use.d.ts.map +1 -0
  353. package/dist/use.js +236 -0
  354. package/dist/use.js.map +1 -0
  355. package/dist/util.cjs +255 -0
  356. package/dist/util.cjs.map +1 -0
  357. package/dist/util.d.cts +141 -0
  358. package/dist/util.d.cts.map +1 -0
  359. package/dist/util.d.ts +141 -0
  360. package/dist/util.d.ts.map +1 -0
  361. package/dist/util.js +234 -0
  362. package/dist/util.js.map +1 -0
  363. package/dist/value-to-schema.cjs +537 -0
  364. package/dist/value-to-schema.cjs.map +1 -0
  365. package/dist/value-to-schema.d.cts +144 -0
  366. package/dist/value-to-schema.d.cts.map +1 -0
  367. package/dist/value-to-schema.d.ts +144 -0
  368. package/dist/value-to-schema.d.ts.map +1 -0
  369. package/dist/value-to-schema.js +533 -0
  370. package/dist/value-to-schema.js.map +1 -0
  371. package/package.json +24 -21
  372. package/src/assertion/assertion-sync.ts +1 -1
  373. package/src/assertion/assertion-types.ts +4 -8
  374. package/src/assertion/assertion.ts +12 -7
  375. package/src/assertion/format-assertion-failure.ts +2 -0
  376. package/src/assertion/impl/assertion-util.ts +1 -2
  377. package/src/assertion/impl/iteration-util.ts +3 -5
  378. package/src/assertion/impl/sync-collection.ts +633 -7
  379. package/src/assertion/impl/sync.ts +27 -0
  380. package/src/error.ts +13 -22
  381. package/src/expect.ts +1 -1
  382. package/src/guards.ts +8 -14
  383. package/src/internal-schema.ts +4 -8
  384. package/src/metadata.ts +1 -2
  385. package/src/snapshot/adapter.ts +2 -3
  386. package/src/snapshot/adapters/fallback.ts +2 -3
  387. package/src/snapshot/adapters/node-test.ts +14 -20
  388. package/src/snapshot/select-adapter.ts +3 -3
  389. package/src/snapshot/serializer.ts +2 -3
  390. package/src/types.ts +2 -162
@@ -0,0 +1,624 @@
1
+ // do not remove; otherwise zshy will not resolve the .d.ts file; it must be referenced directly
2
+ // eslint-disable-next-line @typescript-eslint/triple-slash-reference
3
+ /// <reference path="./shims.d.ts" />
4
+ /**
5
+ * Iterable assertions for asynchronous iterables and iterators.
6
+ *
7
+ * These assertions test async iterables using the **async iteration protocol**
8
+ * (`Symbol.asyncIterator`), including async generators, Node.js Readable
9
+ * streams, and Web ReadableStreams.
10
+ *
11
+ * @packageDocumentation
12
+ * @groupDescription Async Iterable Assertions
13
+ * Assertions for asynchronous iterables and iterators using the async iteration protocol.
14
+ *
15
+ * @showGroup
16
+ */
17
+ import { inspect } from 'node:util';
18
+ import { z } from 'zod';
19
+ import { AsyncIterableOrIteratorSchema, ConstructibleSchema, NonNegativeIntegerSchema, UnknownSchema, } from "../../schema.js";
20
+ import { valueToSchema, valueToSchemaOptionsForDeepEqual, valueToSchemaOptionsForSatisfies, } from "../../value-to-schema.js";
21
+ import { createAsyncAssertion } from "../create.js";
22
+ import { collectAsync, countAsync, iterateFullyAsync, toAsyncIterator, } from "./iteration-util.js";
23
+ // =============================================================================
24
+ // 'to yield' assertions - check if ANY item matches
25
+ // =============================================================================
26
+ /**
27
+ * Asserts that an async iterable yields a value satisfying the expected shape.
28
+ *
29
+ * Uses partial/satisfy semantics (like `'to satisfy'`). The assertion passes if
30
+ * ANY yielded value matches the expected shape.
31
+ *
32
+ * @example
33
+ *
34
+ * ```ts
35
+ * await expectAsync(asyncGenerator(), 'to yield', 'value'); // passes
36
+ * await expectAsync(nodeReadable, 'to emit', 'chunk'); // passes
37
+ * await expectAsync(response.body, 'to yield value satisfying', {
38
+ * data: 'test',
39
+ * }); // Web Stream
40
+ * ```
41
+ *
42
+ * @group Async Iterable Assertions
43
+ * @bupkisAnchor async-iterable-to-yield-any
44
+ * @bupkisAssertionCategory iterable
45
+ */
46
+ export const asyncIterableYieldsAssertion = createAsyncAssertion([
47
+ AsyncIterableOrIteratorSchema,
48
+ ['to yield', 'to emit', 'to yield value satisfying'],
49
+ UnknownSchema,
50
+ ], async (subject, expected) => {
51
+ const iterator = toAsyncIterator(subject);
52
+ const schema = valueToSchema(expected, valueToSchemaOptionsForSatisfies);
53
+ let next = await iterator.next();
54
+ while (!next.done) {
55
+ if (schema.safeParse(next.value).success) {
56
+ return; // success - found a matching value
57
+ }
58
+ next = await iterator.next();
59
+ }
60
+ return {
61
+ message: `Expected async iterable to yield a value satisfying ${inspect(expected)}, but none matched`,
62
+ };
63
+ });
64
+ /**
65
+ * Asserts that an async iterable yields a value exhaustively matching the
66
+ * expected value.
67
+ *
68
+ * Uses deep equality semantics (like `'to equal'`). Extra properties on yielded
69
+ * values cause failure.
70
+ *
71
+ * @example
72
+ *
73
+ * ```ts
74
+ * await expectAsync(asyncGen(), 'to yield value exhaustively satisfying', {
75
+ * a: 1,
76
+ * }); // passes if { a: 1 } exactly is yielded
77
+ * ```
78
+ *
79
+ * @group Async Iterable Assertions
80
+ * @bupkisAnchor async-iterable-to-yield-value-exhaustively-satisfying-any
81
+ * @bupkisAssertionCategory iterable
82
+ */
83
+ export const asyncIterableYieldsExhaustivelyAssertion = createAsyncAssertion([
84
+ AsyncIterableOrIteratorSchema,
85
+ 'to yield value exhaustively satisfying',
86
+ UnknownSchema,
87
+ ], async (subject, expected) => {
88
+ const iterator = toAsyncIterator(subject);
89
+ const schema = valueToSchema(expected, valueToSchemaOptionsForDeepEqual);
90
+ let next = await iterator.next();
91
+ while (!next.done) {
92
+ if (schema.safeParse(next.value).success) {
93
+ return; // success - found an exact match
94
+ }
95
+ next = await iterator.next();
96
+ }
97
+ return {
98
+ message: `Expected async iterable to yield a value exhaustively satisfying ${inspect(expected)}, but none matched`,
99
+ };
100
+ });
101
+ // =============================================================================
102
+ // 'to yield items satisfying' - ALL items must match
103
+ // =============================================================================
104
+ /**
105
+ * Asserts that ALL yielded values individually satisfy the expected shape.
106
+ *
107
+ * Uses partial/satisfy semantics. Every item yielded must match.
108
+ *
109
+ * @example
110
+ *
111
+ * ```ts
112
+ * await expectAsync(asyncGen(), 'to yield items satisfying', {
113
+ * type: 'data',
114
+ * });
115
+ * ```
116
+ *
117
+ * @group Async Iterable Assertions
118
+ * @bupkisAnchor async-iterable-to-yield-items-satisfying-any
119
+ * @bupkisAssertionCategory iterable
120
+ */
121
+ export const asyncIterableYieldsItemsSatisfyingAssertion = createAsyncAssertion([AsyncIterableOrIteratorSchema, 'to yield items satisfying', UnknownSchema], async (subject, expected) => {
122
+ const iterator = toAsyncIterator(subject);
123
+ const schema = valueToSchema(expected, valueToSchemaOptionsForSatisfies);
124
+ let index = 0;
125
+ let next = await iterator.next();
126
+ while (!next.done) {
127
+ const result = schema.safeParse(next.value);
128
+ if (!result.success) {
129
+ return {
130
+ message: `Expected all items to satisfy ${inspect(expected)}, but item at index ${index} did not match: ${inspect(next.value)}`,
131
+ };
132
+ }
133
+ index++;
134
+ next = await iterator.next();
135
+ }
136
+ });
137
+ /**
138
+ * Asserts that ALL yielded values individually match with deep equality.
139
+ *
140
+ * Uses strict equality semantics. Every item yielded must exactly match.
141
+ *
142
+ * @example
143
+ *
144
+ * ```ts
145
+ * await expectAsync(asyncGen(), 'to yield items exhaustively satisfying', {
146
+ * a: 1,
147
+ * });
148
+ * ```
149
+ *
150
+ * @group Async Iterable Assertions
151
+ * @bupkisAnchor async-iterable-to-yield-items-exhaustively-satisfying-any
152
+ * @bupkisAssertionCategory iterable
153
+ */
154
+ export const asyncIterableYieldsItemsExhaustivelyAssertion = createAsyncAssertion([
155
+ AsyncIterableOrIteratorSchema,
156
+ 'to yield items exhaustively satisfying',
157
+ UnknownSchema,
158
+ ], async (subject, expected) => {
159
+ const iterator = toAsyncIterator(subject);
160
+ const schema = valueToSchema(expected, valueToSchemaOptionsForDeepEqual);
161
+ let index = 0;
162
+ let next = await iterator.next();
163
+ while (!next.done) {
164
+ const result = schema.safeParse(next.value);
165
+ if (!result.success) {
166
+ return {
167
+ message: `Expected all items to exhaustively satisfy ${inspect(expected)}, but item at index ${index} did not match: ${inspect(next.value)}`,
168
+ };
169
+ }
170
+ index++;
171
+ next = await iterator.next();
172
+ }
173
+ });
174
+ // =============================================================================
175
+ // First/Last assertions
176
+ // =============================================================================
177
+ /**
178
+ * Asserts that the first yielded value satisfies the expected shape.
179
+ *
180
+ * Uses partial/satisfy semantics.
181
+ *
182
+ * @example
183
+ *
184
+ * ```ts
185
+ * await expectAsync(asyncGen(), 'to yield first', { type: 'header' });
186
+ * ```
187
+ *
188
+ * @group Async Iterable Assertions
189
+ * @bupkisAnchor async-iterable-to-yield-first-any
190
+ * @bupkisAssertionCategory iterable
191
+ */
192
+ export const asyncIterableYieldsFirstAssertion = createAsyncAssertion([
193
+ AsyncIterableOrIteratorSchema,
194
+ ['to yield first', 'to yield first satisfying'],
195
+ UnknownSchema,
196
+ ], async (subject, expected) => {
197
+ const iterator = toAsyncIterator(subject);
198
+ const result = await iterator.next();
199
+ if (result.done) {
200
+ return {
201
+ message: 'Expected async iterable to yield at least one value, but it was empty',
202
+ };
203
+ }
204
+ const schema = valueToSchema(expected, valueToSchemaOptionsForSatisfies);
205
+ if (!schema.safeParse(result.value).success) {
206
+ return {
207
+ message: `Expected first yielded value to satisfy ${inspect(expected)}, but got ${inspect(result.value)}`,
208
+ };
209
+ }
210
+ });
211
+ /**
212
+ * Asserts that the first yielded value exhaustively matches.
213
+ *
214
+ * Uses deep equality semantics.
215
+ *
216
+ * @example
217
+ *
218
+ * ```ts
219
+ * await expectAsync(asyncGen(), 'to yield first exhaustively satisfying', {
220
+ * a: 1,
221
+ * });
222
+ * ```
223
+ *
224
+ * @group Async Iterable Assertions
225
+ * @bupkisAnchor async-iterable-to-yield-first-exhaustively-satisfying-any
226
+ * @bupkisAssertionCategory iterable
227
+ */
228
+ export const asyncIterableYieldsFirstExhaustivelyAssertion = createAsyncAssertion([
229
+ AsyncIterableOrIteratorSchema,
230
+ 'to yield first exhaustively satisfying',
231
+ UnknownSchema,
232
+ ], async (subject, expected) => {
233
+ const iterator = toAsyncIterator(subject);
234
+ const result = await iterator.next();
235
+ if (result.done) {
236
+ return {
237
+ message: 'Expected async iterable to yield at least one value, but it was empty',
238
+ };
239
+ }
240
+ const schema = valueToSchema(expected, valueToSchemaOptionsForDeepEqual);
241
+ if (!schema.safeParse(result.value).success) {
242
+ return {
243
+ message: `Expected first yielded value to exhaustively satisfy ${inspect(expected)}, but got ${inspect(result.value)}`,
244
+ };
245
+ }
246
+ });
247
+ /**
248
+ * Asserts that the last yielded value satisfies the expected shape.
249
+ *
250
+ * Uses partial/satisfy semantics. Note: fully consumes the async iterator.
251
+ *
252
+ * @example
253
+ *
254
+ * ```ts
255
+ * await expectAsync(asyncGen(), 'to yield last', { type: 'footer' });
256
+ * ```
257
+ *
258
+ * @group Async Iterable Assertions
259
+ * @bupkisAnchor async-iterable-to-yield-last-any
260
+ * @bupkisAssertionCategory iterable
261
+ */
262
+ export const asyncIterableYieldsLastAssertion = createAsyncAssertion([
263
+ AsyncIterableOrIteratorSchema,
264
+ ['to yield last', 'to yield last satisfying'],
265
+ UnknownSchema,
266
+ ], async (subject, expected) => {
267
+ const { hasValue, lastValue } = await iterateFullyAsync(subject);
268
+ if (!hasValue) {
269
+ return {
270
+ message: 'Expected async iterable to yield at least one value, but it was empty',
271
+ };
272
+ }
273
+ const schema = valueToSchema(expected, valueToSchemaOptionsForSatisfies);
274
+ if (!schema.safeParse(lastValue).success) {
275
+ return {
276
+ message: `Expected last yielded value to satisfy ${inspect(expected)}, but got ${inspect(lastValue)}`,
277
+ };
278
+ }
279
+ });
280
+ /**
281
+ * Asserts that the last yielded value exhaustively matches.
282
+ *
283
+ * Uses deep equality semantics. Note: fully consumes the async iterator.
284
+ *
285
+ * @example
286
+ *
287
+ * ```ts
288
+ * await expectAsync(asyncGen(), 'to yield last exhaustively satisfying', {
289
+ * b: 2,
290
+ * });
291
+ * ```
292
+ *
293
+ * @group Async Iterable Assertions
294
+ * @bupkisAnchor async-iterable-to-yield-last-exhaustively-satisfying-any
295
+ * @bupkisAssertionCategory iterable
296
+ */
297
+ export const asyncIterableYieldsLastExhaustivelyAssertion = createAsyncAssertion([
298
+ AsyncIterableOrIteratorSchema,
299
+ 'to yield last exhaustively satisfying',
300
+ UnknownSchema,
301
+ ], async (subject, expected) => {
302
+ const { hasValue, lastValue } = await iterateFullyAsync(subject);
303
+ if (!hasValue) {
304
+ return {
305
+ message: 'Expected async iterable to yield at least one value, but it was empty',
306
+ };
307
+ }
308
+ const schema = valueToSchema(expected, valueToSchemaOptionsForDeepEqual);
309
+ if (!schema.safeParse(lastValue).success) {
310
+ return {
311
+ message: `Expected last yielded value to exhaustively satisfy ${inspect(expected)}, but got ${inspect(lastValue)}`,
312
+ };
313
+ }
314
+ });
315
+ // =============================================================================
316
+ // Cardinality assertions
317
+ // =============================================================================
318
+ /**
319
+ * Asserts that an async iterable yields exactly the specified count of values.
320
+ *
321
+ * @example
322
+ *
323
+ * ```ts
324
+ * await expectAsync(asyncGen(), 'to yield count', 5);
325
+ * ```
326
+ *
327
+ * @group Async Iterable Assertions
328
+ * @bupkisAnchor async-iterable-to-yield-count-number
329
+ * @bupkisAssertionCategory iterable
330
+ */
331
+ export const asyncIterableYieldsCountAssertion = createAsyncAssertion([AsyncIterableOrIteratorSchema, 'to yield count', NonNegativeIntegerSchema], async (subject, expectedCount) => {
332
+ const actual = await countAsync(subject);
333
+ if (actual !== expectedCount) {
334
+ return {
335
+ actual,
336
+ expected: expectedCount,
337
+ message: `Expected async iterable to yield ${expectedCount} value(s), but yielded ${actual}`,
338
+ };
339
+ }
340
+ });
341
+ /**
342
+ * Asserts that an async iterable yields at least the specified count of values.
343
+ *
344
+ * @example
345
+ *
346
+ * ```ts
347
+ * await expectAsync(asyncGen(), 'to yield at least', 3);
348
+ * ```
349
+ *
350
+ * @group Async Iterable Assertions
351
+ * @bupkisAnchor async-iterable-to-yield-at-least-number
352
+ * @bupkisAssertionCategory iterable
353
+ */
354
+ export const asyncIterableYieldsAtLeastAssertion = createAsyncAssertion([
355
+ AsyncIterableOrIteratorSchema,
356
+ 'to yield at least',
357
+ NonNegativeIntegerSchema,
358
+ ], async (subject, minCount) => {
359
+ const actual = await countAsync(subject);
360
+ if (actual < minCount) {
361
+ return {
362
+ actual,
363
+ expected: `at least ${minCount}`,
364
+ message: `Expected async iterable to yield at least ${minCount} value(s), but yielded ${actual}`,
365
+ };
366
+ }
367
+ });
368
+ /**
369
+ * Asserts that an async iterable yields at most the specified count of values.
370
+ *
371
+ * @example
372
+ *
373
+ * ```ts
374
+ * await expectAsync(asyncGen(), 'to yield at most', 10);
375
+ * ```
376
+ *
377
+ * @group Async Iterable Assertions
378
+ * @bupkisAnchor async-iterable-to-yield-at-most-number
379
+ * @bupkisAssertionCategory iterable
380
+ */
381
+ export const asyncIterableYieldsAtMostAssertion = createAsyncAssertion([AsyncIterableOrIteratorSchema, 'to yield at most', NonNegativeIntegerSchema], async (subject, maxCount) => {
382
+ const actual = await countAsync(subject);
383
+ if (actual > maxCount) {
384
+ return {
385
+ actual,
386
+ expected: `at most ${maxCount}`,
387
+ message: `Expected async iterable to yield at most ${maxCount} value(s), but yielded ${actual}`,
388
+ };
389
+ }
390
+ });
391
+ /**
392
+ * Asserts that an async iterable yields nothing (is empty).
393
+ *
394
+ * @remarks
395
+ * Use `'not to be an empty iterable'` or `'to yield at least', 1` for non-empty
396
+ * assertions.
397
+ * @example
398
+ *
399
+ * ```ts
400
+ * await expectAsync(emptyAsyncGen(), 'to be an empty iterable');
401
+ * ```
402
+ *
403
+ * @group Async Iterable Assertions
404
+ * @bupkisAnchor async-iterable-to-be-an-empty-iterable
405
+ * @bupkisAssertionCategory iterable
406
+ */
407
+ export const asyncIterableEmptyAssertion = createAsyncAssertion([AsyncIterableOrIteratorSchema, 'to be an empty iterable'], async (subject) => {
408
+ const iterator = toAsyncIterator(subject);
409
+ const result = await iterator.next();
410
+ if (!result.done) {
411
+ return {
412
+ message: `Expected async iterable to be empty, but it yielded at least one value: ${inspect(result.value)}`,
413
+ };
414
+ }
415
+ });
416
+ // =============================================================================
417
+ // Sequence/Collection assertions
418
+ // =============================================================================
419
+ /**
420
+ * Asserts that an async iterable yields exactly the specified values in order.
421
+ *
422
+ * Uses deep equality semantics. The iterable must yield the exact same number
423
+ * of values in the exact same order.
424
+ *
425
+ * @example
426
+ *
427
+ * ```ts
428
+ * await expectAsync(asyncGen(), 'to yield exactly', [1, 2, 3]);
429
+ * ```
430
+ *
431
+ * @group Async Iterable Assertions
432
+ * @bupkisAnchor async-iterable-to-yield-exactly-array
433
+ * @bupkisAssertionCategory iterable
434
+ */
435
+ export const asyncIterableYieldsExactlyAssertion = createAsyncAssertion([AsyncIterableOrIteratorSchema, 'to yield exactly', z.array(UnknownSchema)], async (subject, expected) => {
436
+ const actual = await collectAsync(subject);
437
+ const schema = valueToSchema(expected, valueToSchemaOptionsForDeepEqual);
438
+ return { schema, subject: actual };
439
+ });
440
+ /**
441
+ * Asserts that an async iterable yields values that satisfy the expected
442
+ * sequence.
443
+ *
444
+ * Uses satisfy/partial matching semantics on the collected array.
445
+ *
446
+ * @example
447
+ *
448
+ * ```ts
449
+ * await expectAsync(asyncGen(), 'to yield sequence satisfying', [
450
+ * { type: 'start' },
451
+ * { type: 'end' },
452
+ * ]);
453
+ * ```
454
+ *
455
+ * @group Async Iterable Assertions
456
+ * @bupkisAnchor async-iterable-to-yield-sequence-satisfying-array
457
+ * @bupkisAssertionCategory iterable
458
+ */
459
+ export const asyncIterableYieldsSequenceSatisfyingAssertion = createAsyncAssertion([
460
+ AsyncIterableOrIteratorSchema,
461
+ ['to yield sequence satisfying', 'to yield array satisfying'],
462
+ z.array(UnknownSchema),
463
+ ], async (subject, expected) => {
464
+ const actual = await collectAsync(subject);
465
+ const schema = valueToSchema(expected, valueToSchemaOptionsForSatisfies);
466
+ return { schema, subject: actual };
467
+ });
468
+ // =============================================================================
469
+ // Completion/Error assertions (async-only)
470
+ // =============================================================================
471
+ /**
472
+ * Asserts that an async iterable completes without throwing.
473
+ *
474
+ * Fully consumes the iterator and verifies no error is thrown during iteration.
475
+ *
476
+ * @example
477
+ *
478
+ * ```ts
479
+ * await expectAsync(asyncGenerator(), 'to complete'); // passes if no error
480
+ * await expectAsync(nodeReadable, 'to finish'); // passes if stream ends cleanly
481
+ * ```
482
+ *
483
+ * @group Async Iterable Assertions
484
+ * @bupkisAnchor async-iterable-to-complete
485
+ * @bupkisAssertionCategory iterable
486
+ */
487
+ export const asyncIterableCompletesAssertion = createAsyncAssertion([AsyncIterableOrIteratorSchema, ['to complete', 'to finish']], async (subject) => {
488
+ const { completed, error } = await iterateFullyAsync(subject);
489
+ if (!completed) {
490
+ return {
491
+ message: `Expected async iterable to complete, but it rejected with: ${inspect(error)}`,
492
+ };
493
+ }
494
+ });
495
+ /**
496
+ * Asserts that an async iterable rejects during iteration.
497
+ *
498
+ * @example
499
+ *
500
+ * ```ts
501
+ * await expectAsync(failingStream, 'to reject'); // passes if iteration rejects
502
+ * await expectAsync(failingStream, 'to be rejected'); // alias
503
+ * ```
504
+ *
505
+ * @group Async Iterable Assertions
506
+ * @bupkisAnchor async-iterable-to-reject
507
+ * @bupkisAssertionCategory iterable
508
+ */
509
+ export const asyncIterableRejectsAssertion = createAsyncAssertion([AsyncIterableOrIteratorSchema, ['to reject', 'to be rejected']], async (subject) => {
510
+ const { completed } = await iterateFullyAsync(subject);
511
+ if (completed) {
512
+ return {
513
+ message: 'Expected async iterable to reject, but it completed successfully',
514
+ };
515
+ }
516
+ });
517
+ /**
518
+ * Asserts that an async iterable rejects with a specific error type.
519
+ *
520
+ * @example
521
+ *
522
+ * ```ts
523
+ * await expectAsync(failingStream, 'to reject with a', TypeError);
524
+ * await expectAsync(failingStream, 'to reject with an', Error);
525
+ * ```
526
+ *
527
+ * @group Async Iterable Assertions
528
+ * @bupkisAnchor async-iterable-to-reject-with-a-constructor
529
+ * @bupkisAssertionCategory iterable
530
+ */
531
+ export const asyncIterableRejectsWithTypeAssertion = createAsyncAssertion([
532
+ AsyncIterableOrIteratorSchema,
533
+ ['to reject with a', 'to reject with an'],
534
+ ConstructibleSchema,
535
+ ], async (subject, expectedType) => {
536
+ const { completed, error } = await iterateFullyAsync(subject);
537
+ if (completed) {
538
+ return {
539
+ message: `Expected async iterable to reject with ${expectedType.name}, but it completed successfully`,
540
+ };
541
+ }
542
+ if (!(error instanceof expectedType)) {
543
+ return {
544
+ message: `Expected async iterable to reject with ${expectedType.name}, but got ${inspect(error)}`,
545
+ };
546
+ }
547
+ });
548
+ /**
549
+ * Asserts that an async iterable rejects with an error satisfying a shape.
550
+ *
551
+ * @example
552
+ *
553
+ * ```ts
554
+ * await expectAsync(failingStream, 'to reject with error satisfying', {
555
+ * message: 'Connection failed',
556
+ * });
557
+ * await expectAsync(
558
+ * failingStream,
559
+ * 'to be rejected with error satisfying',
560
+ * {
561
+ * code: 'ECONNREFUSED',
562
+ * },
563
+ * );
564
+ * ```
565
+ *
566
+ * @group Async Iterable Assertions
567
+ * @bupkisAnchor async-iterable-to-reject-with-error-satisfying-any
568
+ * @bupkisAssertionCategory iterable
569
+ */
570
+ export const asyncIterableRejectsWithErrorSatisfyingAssertion = createAsyncAssertion([
571
+ AsyncIterableOrIteratorSchema,
572
+ [
573
+ 'to reject with error satisfying',
574
+ 'to be rejected with error satisfying',
575
+ ],
576
+ UnknownSchema,
577
+ ], async (subject, expectedShape) => {
578
+ const { completed, error } = await iterateFullyAsync(subject);
579
+ if (completed) {
580
+ return {
581
+ message: `Expected async iterable to reject with error satisfying ${inspect(expectedShape)}, but it completed successfully`,
582
+ };
583
+ }
584
+ const schema = valueToSchema(expectedShape, valueToSchemaOptionsForSatisfies);
585
+ if (!schema.safeParse(error).success) {
586
+ return {
587
+ message: `Expected async iterable to reject with error satisfying ${inspect(expectedShape)}, but got ${inspect(error)}`,
588
+ };
589
+ }
590
+ });
591
+ // =============================================================================
592
+ // Export all async iterable assertions as a tuple
593
+ // =============================================================================
594
+ /**
595
+ * All asynchronous iterable assertions bundled as a tuple for convenient
596
+ * registration.
597
+ */
598
+ export const AsyncIterableAssertions = [
599
+ // 'to yield' - any item matches
600
+ asyncIterableYieldsAssertion,
601
+ asyncIterableYieldsExhaustivelyAssertion,
602
+ // 'to yield items' - all items must match
603
+ asyncIterableYieldsItemsSatisfyingAssertion,
604
+ asyncIterableYieldsItemsExhaustivelyAssertion,
605
+ // First/last assertions
606
+ asyncIterableYieldsFirstAssertion,
607
+ asyncIterableYieldsFirstExhaustivelyAssertion,
608
+ asyncIterableYieldsLastAssertion,
609
+ asyncIterableYieldsLastExhaustivelyAssertion,
610
+ // Cardinality
611
+ asyncIterableYieldsCountAssertion,
612
+ asyncIterableYieldsAtLeastAssertion,
613
+ asyncIterableYieldsAtMostAssertion,
614
+ asyncIterableEmptyAssertion,
615
+ // Sequence
616
+ asyncIterableYieldsExactlyAssertion,
617
+ asyncIterableYieldsSequenceSatisfyingAssertion,
618
+ // Completion/error (async-only)
619
+ asyncIterableCompletesAssertion,
620
+ asyncIterableRejectsAssertion,
621
+ asyncIterableRejectsWithTypeAssertion,
622
+ asyncIterableRejectsWithErrorSatisfyingAssertion,
623
+ ];
624
+ //# sourceMappingURL=async-iterable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async-iterable.js","sourceRoot":"","sources":["../../../src/assertion/impl/async-iterable.ts"],"names":[],"mappings":"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"}