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,85 @@
1
+ /**
2
+ * Assertion creation factory functions with type-safe sync/async separation.
3
+ *
4
+ * This module provides the core factory functions for creating both synchronous
5
+ * and asynchronous assertions in the Bupkis assertion framework. It implements
6
+ * a dual-creation pattern where `createAssertion()` creates synchronous-only
7
+ * assertions and `createAsyncAssertion()` creates potentially asynchronous
8
+ * assertions, using branded Zod schema types to enforce compile-time safety and
9
+ * prevent accidental mixing of sync and async implementations.
10
+ *
11
+ * The module supports two primary assertion implementation types:
12
+ *
13
+ * - **Schema-based assertions**: Using {@link z.ZodType Zod schemas} for
14
+ * validation
15
+ * - **Function-based assertions**: Using implementation functions that return
16
+ * boolean, void, or Zod schemas for dynamic validation
17
+ *
18
+ * @remarks
19
+ * The factory functions use branded types to distinguish between synchronous
20
+ * and asynchronous schema implementations at compile time. This prevents
21
+ * accidentally passing async schemas to sync assertion creators and vice versa,
22
+ * ensuring type safety throughout the assertion system.
23
+ * @example Creating a synchronous string assertion:
24
+ *
25
+ * ```ts
26
+ * import { createAssertion } from './create.js';
27
+ * import { z } from 'zod';
28
+ *
29
+ * const stringAssertion = createAssertion(['to be a string'], z.string());
30
+ * ```
31
+ *
32
+ * @example Creating an asynchronous Promise resolution assertion:
33
+ *
34
+ * ```ts
35
+ * import { createAsyncAssertion } from './create.js';
36
+ *
37
+ * const promiseAssertion = createAsyncAssertion(
38
+ * ['to resolve'],
39
+ * async (promise) => {
40
+ * try {
41
+ * await promise;
42
+ * return true;
43
+ * } catch {
44
+ * return false;
45
+ * }
46
+ * },
47
+ * );
48
+ * ```
49
+ *
50
+ * @example Creating parameterized assertions:
51
+ *
52
+ * ```ts
53
+ * import { createAssertion } from './create.js';
54
+ * import { z } from 'zod';
55
+ *
56
+ * const greaterThanAssertion = createAssertion(
57
+ * [z.number(), 'to be greater than', z.number()],
58
+ * (subject, expected) => subject > expected,
59
+ * );
60
+ * ```
61
+ *
62
+ * @packageDocumentation
63
+ * @see {@link AssertionParts} for assertion part structure
64
+ * @see {@link AssertionSlots} for processed slot definitions
65
+ * @see {@link AssertionImplSync} for synchronous implementation types
66
+ * @see {@link AssertionImplAsync} for asynchronous implementation types
67
+ */
68
+ import { type CreateAssertionFn, type CreateAsyncAssertionFn } from "./assertion-types.cjs";
69
+ /**
70
+ * {@inheritDoc CreateAssertionFn}
71
+ *
72
+ * @function
73
+ * @throws {TypeError} Invalid assertion implementation type
74
+ * @group Assertion Creation
75
+ */
76
+ export declare const createAssertion: CreateAssertionFn;
77
+ /**
78
+ * {@inheritDoc CreateAsyncAssertionFn}
79
+ *
80
+ * @function
81
+ * @throws {TypeError} Invalid assertion implementation type
82
+ * @group Assertion Creation
83
+ */
84
+ export declare const createAsyncAssertion: CreateAsyncAssertionFn;
85
+ //# sourceMappingURL=create.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/assertion/create.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkEG;AA0BH,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAC5B,8BAA6B;AAG9B;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,EAAE,iBAmC7B,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,EAAE,sBAmClC,CAAC"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Assertion creation factory functions with type-safe sync/async separation.
3
+ *
4
+ * This module provides the core factory functions for creating both synchronous
5
+ * and asynchronous assertions in the Bupkis assertion framework. It implements
6
+ * a dual-creation pattern where `createAssertion()` creates synchronous-only
7
+ * assertions and `createAsyncAssertion()` creates potentially asynchronous
8
+ * assertions, using branded Zod schema types to enforce compile-time safety and
9
+ * prevent accidental mixing of sync and async implementations.
10
+ *
11
+ * The module supports two primary assertion implementation types:
12
+ *
13
+ * - **Schema-based assertions**: Using {@link z.ZodType Zod schemas} for
14
+ * validation
15
+ * - **Function-based assertions**: Using implementation functions that return
16
+ * boolean, void, or Zod schemas for dynamic validation
17
+ *
18
+ * @remarks
19
+ * The factory functions use branded types to distinguish between synchronous
20
+ * and asynchronous schema implementations at compile time. This prevents
21
+ * accidentally passing async schemas to sync assertion creators and vice versa,
22
+ * ensuring type safety throughout the assertion system.
23
+ * @example Creating a synchronous string assertion:
24
+ *
25
+ * ```ts
26
+ * import { createAssertion } from './create.js';
27
+ * import { z } from 'zod';
28
+ *
29
+ * const stringAssertion = createAssertion(['to be a string'], z.string());
30
+ * ```
31
+ *
32
+ * @example Creating an asynchronous Promise resolution assertion:
33
+ *
34
+ * ```ts
35
+ * import { createAsyncAssertion } from './create.js';
36
+ *
37
+ * const promiseAssertion = createAsyncAssertion(
38
+ * ['to resolve'],
39
+ * async (promise) => {
40
+ * try {
41
+ * await promise;
42
+ * return true;
43
+ * } catch {
44
+ * return false;
45
+ * }
46
+ * },
47
+ * );
48
+ * ```
49
+ *
50
+ * @example Creating parameterized assertions:
51
+ *
52
+ * ```ts
53
+ * import { createAssertion } from './create.js';
54
+ * import { z } from 'zod';
55
+ *
56
+ * const greaterThanAssertion = createAssertion(
57
+ * [z.number(), 'to be greater than', z.number()],
58
+ * (subject, expected) => subject > expected,
59
+ * );
60
+ * ```
61
+ *
62
+ * @packageDocumentation
63
+ * @see {@link AssertionParts} for assertion part structure
64
+ * @see {@link AssertionSlots} for processed slot definitions
65
+ * @see {@link AssertionImplSync} for synchronous implementation types
66
+ * @see {@link AssertionImplAsync} for asynchronous implementation types
67
+ */
68
+ import { type CreateAssertionFn, type CreateAsyncAssertionFn } from "./assertion-types.js";
69
+ /**
70
+ * {@inheritDoc CreateAssertionFn}
71
+ *
72
+ * @function
73
+ * @throws {TypeError} Invalid assertion implementation type
74
+ * @group Assertion Creation
75
+ */
76
+ export declare const createAssertion: CreateAssertionFn;
77
+ /**
78
+ * {@inheritDoc CreateAsyncAssertionFn}
79
+ *
80
+ * @function
81
+ * @throws {TypeError} Invalid assertion implementation type
82
+ * @group Assertion Creation
83
+ */
84
+ export declare const createAsyncAssertion: CreateAsyncAssertionFn;
85
+ //# sourceMappingURL=create.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/assertion/create.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkEG;AA0BH,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAC5B,6BAA6B;AAG9B;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,EAAE,iBAmC7B,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,EAAE,sBAmClC,CAAC"}
@@ -0,0 +1,143 @@
1
+ /**
2
+ * Assertion creation factory functions with type-safe sync/async separation.
3
+ *
4
+ * This module provides the core factory functions for creating both synchronous
5
+ * and asynchronous assertions in the Bupkis assertion framework. It implements
6
+ * a dual-creation pattern where `createAssertion()` creates synchronous-only
7
+ * assertions and `createAsyncAssertion()` creates potentially asynchronous
8
+ * assertions, using branded Zod schema types to enforce compile-time safety and
9
+ * prevent accidental mixing of sync and async implementations.
10
+ *
11
+ * The module supports two primary assertion implementation types:
12
+ *
13
+ * - **Schema-based assertions**: Using {@link z.ZodType Zod schemas} for
14
+ * validation
15
+ * - **Function-based assertions**: Using implementation functions that return
16
+ * boolean, void, or Zod schemas for dynamic validation
17
+ *
18
+ * @remarks
19
+ * The factory functions use branded types to distinguish between synchronous
20
+ * and asynchronous schema implementations at compile time. This prevents
21
+ * accidentally passing async schemas to sync assertion creators and vice versa,
22
+ * ensuring type safety throughout the assertion system.
23
+ * @example Creating a synchronous string assertion:
24
+ *
25
+ * ```ts
26
+ * import { createAssertion } from './create.js';
27
+ * import { z } from 'zod';
28
+ *
29
+ * const stringAssertion = createAssertion(['to be a string'], z.string());
30
+ * ```
31
+ *
32
+ * @example Creating an asynchronous Promise resolution assertion:
33
+ *
34
+ * ```ts
35
+ * import { createAsyncAssertion } from './create.js';
36
+ *
37
+ * const promiseAssertion = createAsyncAssertion(
38
+ * ['to resolve'],
39
+ * async (promise) => {
40
+ * try {
41
+ * await promise;
42
+ * return true;
43
+ * } catch {
44
+ * return false;
45
+ * }
46
+ * },
47
+ * );
48
+ * ```
49
+ *
50
+ * @example Creating parameterized assertions:
51
+ *
52
+ * ```ts
53
+ * import { createAssertion } from './create.js';
54
+ * import { z } from 'zod';
55
+ *
56
+ * const greaterThanAssertion = createAssertion(
57
+ * [z.number(), 'to be greater than', z.number()],
58
+ * (subject, expected) => subject > expected,
59
+ * );
60
+ * ```
61
+ *
62
+ * @packageDocumentation
63
+ * @see {@link AssertionParts} for assertion part structure
64
+ * @see {@link AssertionSlots} for processed slot definitions
65
+ * @see {@link AssertionImplSync} for synchronous implementation types
66
+ * @see {@link AssertionImplAsync} for asynchronous implementation types
67
+ */
68
+ import { z } from 'zod';
69
+ import { AssertionImplementationError } from "../error.js";
70
+ import { isFunction, isStandardSchema, isZodType } from "../guards.js";
71
+ import { CreateAssertionInputSchema, CreateAssertionInputSchemaAsync, } from "../internal-schema.js";
72
+ import { BupkisAssertionFunctionAsync, BupkisAssertionSchemaAsync, } from "./assertion-async.js";
73
+ import { BupkisAssertionStandardSchemaAsync } from "./assertion-standard-schema-async.js";
74
+ import { BupkisAssertionStandardSchemaSync } from "./assertion-standard-schema-sync.js";
75
+ import { BupkisAssertionFunctionSync, BupkisAssertionSchemaSync, } from "./assertion-sync.js";
76
+ import { slotify } from "./slotify.js";
77
+ /**
78
+ * {@inheritDoc CreateAssertionFn}
79
+ *
80
+ * @function
81
+ * @throws {TypeError} Invalid assertion implementation type
82
+ * @group Assertion Creation
83
+ */
84
+ export const createAssertion = (parts, impl) => {
85
+ // Validate inputs using Zod schema
86
+ try {
87
+ CreateAssertionInputSchema.parse([parts, impl]);
88
+ }
89
+ catch (err) {
90
+ if (err instanceof z.ZodError) {
91
+ throw new AssertionImplementationError(`Invalid input parameters: ${z.prettifyError(err)}`, { cause: err });
92
+ }
93
+ /* c8 ignore next */
94
+ throw err;
95
+ }
96
+ const slots = slotify(parts);
97
+ if (isZodType(impl)) {
98
+ return new BupkisAssertionSchemaSync(parts, slots, impl);
99
+ }
100
+ else if (isStandardSchema(impl)) {
101
+ return new BupkisAssertionStandardSchemaSync(parts, slots, impl);
102
+ }
103
+ else if (isFunction(impl)) {
104
+ return new BupkisAssertionFunctionSync(parts, slots, impl);
105
+ }
106
+ // should be impossible if CreateAssertionInputSchema is correct
107
+ /* c8 ignore next */
108
+ throw new AssertionImplementationError('Assertion implementation must be a function, Zod schema, or Standard Schema');
109
+ };
110
+ /**
111
+ * {@inheritDoc CreateAsyncAssertionFn}
112
+ *
113
+ * @function
114
+ * @throws {TypeError} Invalid assertion implementation type
115
+ * @group Assertion Creation
116
+ */
117
+ export const createAsyncAssertion = (parts, impl) => {
118
+ // Validate inputs using Zod schema
119
+ try {
120
+ CreateAssertionInputSchemaAsync.parse([parts, impl]);
121
+ }
122
+ catch (err) {
123
+ if (err instanceof z.ZodError) {
124
+ throw new AssertionImplementationError(`Invalid input parameters: ${z.prettifyError(err)}`, { cause: err });
125
+ }
126
+ /* c8 ignore next */
127
+ throw err;
128
+ }
129
+ const slots = slotify(parts);
130
+ if (isZodType(impl)) {
131
+ return new BupkisAssertionSchemaAsync(parts, slots, impl);
132
+ }
133
+ else if (isStandardSchema(impl)) {
134
+ return new BupkisAssertionStandardSchemaAsync(parts, slots, impl);
135
+ }
136
+ else if (isFunction(impl)) {
137
+ return new BupkisAssertionFunctionAsync(parts, slots, impl);
138
+ }
139
+ // should be impossible if CreateAssertionInputSchemaAsync is correct
140
+ /* c8 ignore next */
141
+ throw new AssertionImplementationError('Assertion implementation must be a function, Zod schema, or Standard Schema');
142
+ };
143
+ //# sourceMappingURL=create.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/assertion/create.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ /**
3
+ * Utility for formatting AssertionFailure objects with custom diff support.
4
+ *
5
+ * @packageDocumentation
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.formatAssertionFailure = void 0;
9
+ const diff_js_1 = require("../diff.cjs");
10
+ /**
11
+ * Formats an AssertionFailure into a diff string for error output.
12
+ *
13
+ * Precedence:
14
+ *
15
+ * 1. `diff` property - returned as-is
16
+ * 2. `formatActual`/`formatExpected` - used to serialize values for jest-diff
17
+ * 3. Default - uses jest-diff with raw actual/expected values
18
+ *
19
+ * @function
20
+ * @param failure - The AssertionFailure to format
21
+ * @returns Formatted diff string, or null if no diff can be generated
22
+ */
23
+ const formatAssertionFailure = (failure) => {
24
+ const { actual, diff, diffOptions, expected, formatActual, formatExpected } = failure;
25
+ // Precedence 1: Pre-computed diff string
26
+ if (diff !== undefined) {
27
+ return diff;
28
+ }
29
+ // Need both actual and expected for diff generation
30
+ if (!(0, diff_js_1.shouldGenerateDiff)(actual, expected)) {
31
+ return null;
32
+ }
33
+ // Precedence 2: Custom formatters
34
+ // Wrap in try-catch to provide clearer error messages if formatters throw
35
+ let formattedActual = actual;
36
+ if (formatActual) {
37
+ try {
38
+ formattedActual = formatActual(actual);
39
+ }
40
+ catch (error) {
41
+ throw new Error(`AssertionFailure formatActual threw: ${error instanceof Error ? error.message : String(error)}`, { cause: error });
42
+ }
43
+ }
44
+ let formattedExpected = expected;
45
+ if (formatExpected) {
46
+ try {
47
+ formattedExpected = formatExpected(expected);
48
+ }
49
+ catch (error) {
50
+ throw new Error(`AssertionFailure formatExpected threw: ${error instanceof Error ? error.message : String(error)}`, { cause: error });
51
+ }
52
+ }
53
+ // Precedence 3: Default jest-diff
54
+ return (0, diff_js_1.generateDiff)(formattedExpected, formattedActual, {
55
+ aAnnotation: 'expected',
56
+ bAnnotation: 'actual',
57
+ expand: false,
58
+ includeChangeCounts: true,
59
+ ...diffOptions,
60
+ });
61
+ };
62
+ exports.formatAssertionFailure = formatAssertionFailure;
63
+ //# sourceMappingURL=format-assertion-failure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-assertion-failure.js","sourceRoot":"","sources":["../../src/assertion/format-assertion-failure.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAIH,yCAA8D;AAE9D;;;;;;;;;;;;GAYG;AACI,MAAM,sBAAsB,GAAG,CACpC,OAAyB,EACV,EAAE;IACjB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,cAAc,EAAE,GACzE,OAAO,CAAC;IAEV,yCAAyC;IACzC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,oDAAoD;IACpD,IAAI,CAAC,IAAA,4BAAkB,EAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,kCAAkC;IAClC,0EAA0E;IAC1E,IAAI,eAAe,GAAG,MAAM,CAAC;IAC7B,IAAI,YAAY,EAAE,CAAC;QACjB,IAAI,CAAC;YACH,eAAe,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QACzC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,wCAAwC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAChG,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,iBAAiB,GAAG,QAAQ,CAAC;IACjC,IAAI,cAAc,EAAE,CAAC;QACnB,IAAI,CAAC;YACH,iBAAiB,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,0CAA0C,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAClG,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,kCAAkC;IAClC,OAAO,IAAA,sBAAY,EAAC,iBAAiB,EAAE,eAAe,EAAE;QACtD,WAAW,EAAE,UAAU;QACvB,WAAW,EAAE,QAAQ;QACrB,MAAM,EAAE,KAAK;QACb,mBAAmB,EAAE,IAAI;QACzB,GAAG,WAAW;KACf,CAAC,CAAC;AACL,CAAC,CAAC;AAlDW,QAAA,sBAAsB,0BAkDjC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Utility for formatting AssertionFailure objects with custom diff support.
3
+ *
4
+ * @packageDocumentation
5
+ */
6
+ import type { AssertionFailure } from "./assertion-types.cjs";
7
+ /**
8
+ * Formats an AssertionFailure into a diff string for error output.
9
+ *
10
+ * Precedence:
11
+ *
12
+ * 1. `diff` property - returned as-is
13
+ * 2. `formatActual`/`formatExpected` - used to serialize values for jest-diff
14
+ * 3. Default - uses jest-diff with raw actual/expected values
15
+ *
16
+ * @function
17
+ * @param failure - The AssertionFailure to format
18
+ * @returns Formatted diff string, or null if no diff can be generated
19
+ */
20
+ export declare const formatAssertionFailure: (failure: AssertionFailure) => null | string;
21
+ //# sourceMappingURL=format-assertion-failure.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-assertion-failure.d.ts","sourceRoot":"","sources":["../../src/assertion/format-assertion-failure.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,8BAA6B;AAI7D;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,sBAAsB,GACjC,SAAS,gBAAgB,KACxB,IAAI,GAAG,MAgDT,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Utility for formatting AssertionFailure objects with custom diff support.
3
+ *
4
+ * @packageDocumentation
5
+ */
6
+ import type { AssertionFailure } from "./assertion-types.js";
7
+ /**
8
+ * Formats an AssertionFailure into a diff string for error output.
9
+ *
10
+ * Precedence:
11
+ *
12
+ * 1. `diff` property - returned as-is
13
+ * 2. `formatActual`/`formatExpected` - used to serialize values for jest-diff
14
+ * 3. Default - uses jest-diff with raw actual/expected values
15
+ *
16
+ * @function
17
+ * @param failure - The AssertionFailure to format
18
+ * @returns Formatted diff string, or null if no diff can be generated
19
+ */
20
+ export declare const formatAssertionFailure: (failure: AssertionFailure) => null | string;
21
+ //# sourceMappingURL=format-assertion-failure.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-assertion-failure.d.ts","sourceRoot":"","sources":["../../src/assertion/format-assertion-failure.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,6BAA6B;AAI7D;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,sBAAsB,GACjC,SAAS,gBAAgB,KACxB,IAAI,GAAG,MAgDT,CAAC"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Utility for formatting AssertionFailure objects with custom diff support.
3
+ *
4
+ * @packageDocumentation
5
+ */
6
+ import { generateDiff, shouldGenerateDiff } from "../diff.js";
7
+ /**
8
+ * Formats an AssertionFailure into a diff string for error output.
9
+ *
10
+ * Precedence:
11
+ *
12
+ * 1. `diff` property - returned as-is
13
+ * 2. `formatActual`/`formatExpected` - used to serialize values for jest-diff
14
+ * 3. Default - uses jest-diff with raw actual/expected values
15
+ *
16
+ * @function
17
+ * @param failure - The AssertionFailure to format
18
+ * @returns Formatted diff string, or null if no diff can be generated
19
+ */
20
+ export const formatAssertionFailure = (failure) => {
21
+ const { actual, diff, diffOptions, expected, formatActual, formatExpected } = failure;
22
+ // Precedence 1: Pre-computed diff string
23
+ if (diff !== undefined) {
24
+ return diff;
25
+ }
26
+ // Need both actual and expected for diff generation
27
+ if (!shouldGenerateDiff(actual, expected)) {
28
+ return null;
29
+ }
30
+ // Precedence 2: Custom formatters
31
+ // Wrap in try-catch to provide clearer error messages if formatters throw
32
+ let formattedActual = actual;
33
+ if (formatActual) {
34
+ try {
35
+ formattedActual = formatActual(actual);
36
+ }
37
+ catch (error) {
38
+ throw new Error(`AssertionFailure formatActual threw: ${error instanceof Error ? error.message : String(error)}`, { cause: error });
39
+ }
40
+ }
41
+ let formattedExpected = expected;
42
+ if (formatExpected) {
43
+ try {
44
+ formattedExpected = formatExpected(expected);
45
+ }
46
+ catch (error) {
47
+ throw new Error(`AssertionFailure formatExpected threw: ${error instanceof Error ? error.message : String(error)}`, { cause: error });
48
+ }
49
+ }
50
+ // Precedence 3: Default jest-diff
51
+ return generateDiff(formattedExpected, formattedActual, {
52
+ aAnnotation: 'expected',
53
+ bAnnotation: 'actual',
54
+ expand: false,
55
+ includeChangeCounts: true,
56
+ ...diffOptions,
57
+ });
58
+ };
59
+ //# sourceMappingURL=format-assertion-failure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-assertion-failure.js","sourceRoot":"","sources":["../../src/assertion/format-assertion-failure.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,mBAAmB;AAE9D;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,OAAyB,EACV,EAAE;IACjB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,cAAc,EAAE,GACzE,OAAO,CAAC;IAEV,yCAAyC;IACzC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,oDAAoD;IACpD,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,kCAAkC;IAClC,0EAA0E;IAC1E,IAAI,eAAe,GAAG,MAAM,CAAC;IAC7B,IAAI,YAAY,EAAE,CAAC;QACjB,IAAI,CAAC;YACH,eAAe,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QACzC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,wCAAwC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAChG,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,iBAAiB,GAAG,QAAQ,CAAC;IACjC,IAAI,cAAc,EAAE,CAAC;QACnB,IAAI,CAAC;YACH,iBAAiB,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,0CAA0C,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAClG,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,kCAAkC;IAClC,OAAO,YAAY,CAAC,iBAAiB,EAAE,eAAe,EAAE;QACtD,WAAW,EAAE,UAAU;QACvB,WAAW,EAAE,QAAQ;QACrB,MAAM,EAAE,KAAK;QACb,mBAAmB,EAAE,IAAI;QACzB,GAAG,WAAW;KACf,CAAC,CAAC;AACL,CAAC,CAAC"}
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ /**
3
+ * Utility functions for assertion implementations
4
+ *
5
+ * @internal
6
+ * @packageDocumentation
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.trapError = exports.trapPromiseError = exports.trapAsyncFnError = void 0;
10
+ /**
11
+ * Executes & traps a `Promise` rejected from an async function, capturing the
12
+ * error.
13
+ *
14
+ * @function
15
+ * @param fn The function to execute that may throw an error or return a
16
+ * `Promise`
17
+ * @returns Rejection or whatever was fulfilled
18
+ */
19
+ const trapAsyncFnError = async (fn) => {
20
+ try {
21
+ const result = await fn();
22
+ return { result };
23
+ }
24
+ catch (error) {
25
+ return {
26
+ error: error ?? new TypeError(`Function rejected with undefined: ${fn}`),
27
+ };
28
+ }
29
+ };
30
+ exports.trapAsyncFnError = trapAsyncFnError;
31
+ /**
32
+ * Awaits & traps a Promise, capturing any rejection error.
33
+ *
34
+ * @function
35
+ * @param promise The `Promise` to trap
36
+ * @returns Result object
37
+ */
38
+ const trapPromiseError = async (promise) => {
39
+ try {
40
+ const result = await promise;
41
+ return { result };
42
+ }
43
+ catch (error) {
44
+ return { error: error ?? new TypeError('Promise rejected with undefined') };
45
+ }
46
+ };
47
+ exports.trapPromiseError = trapPromiseError;
48
+ /**
49
+ * Executes & traps a synchronous function that may throw, capturing any thrown
50
+ * error and discarding the result.
51
+ *
52
+ * @remarks
53
+ * Avoids throwing `undefined` for some reason.
54
+ * @function
55
+ * @param fn Function to execute
56
+ * @returns Result object
57
+ */
58
+ const trapError = (fn) => {
59
+ try {
60
+ const result = fn();
61
+ return { result };
62
+ }
63
+ catch (error) {
64
+ return { error: error ?? new TypeError(`Function threw undefined: ${fn}`) };
65
+ }
66
+ };
67
+ exports.trapError = trapError;
68
+ //# sourceMappingURL=assertion-util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assertion-util.js","sourceRoot":"","sources":["../../../src/assertion/impl/assertion-util.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAKH;;;;;;;;GAQG;AACI,MAAM,gBAAgB,GAAG,KAAK,EACnC,EAAiB,EACI,EAAE;IACvB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,EAAE,EAAE,CAAC;QAC1B,OAAO,EAAE,MAAM,EAAE,CAAC;IACpB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,KAAK,EAAE,KAAK,IAAI,IAAI,SAAS,CAAC,qCAAqC,EAAE,EAAE,CAAC;SACzE,CAAC;IACJ,CAAC;AACH,CAAC,CAAC;AAXW,QAAA,gBAAgB,oBAW3B;AAEF;;;;;;GAMG;AACI,MAAM,gBAAgB,GAAG,KAAK,EACnC,OAA6B,EACR,EAAE;IACvB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC;QAC7B,OAAO,EAAE,MAAM,EAAE,CAAC;IACpB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,KAAK,EAAE,KAAK,IAAI,IAAI,SAAS,CAAC,iCAAiC,CAAC,EAAE,CAAC;IAC9E,CAAC;AACH,CAAC,CAAC;AATW,QAAA,gBAAgB,oBAS3B;AAEF;;;;;;;;;GASG;AACI,MAAM,SAAS,GAAG,CAAC,EAAiB,EAAc,EAAE;IACzD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,EAAE,EAAE,CAAC;QACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IACpB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,KAAK,EAAE,KAAK,IAAI,IAAI,SAAS,CAAC,6BAA6B,EAAE,EAAE,CAAC,EAAE,CAAC;IAC9E,CAAC;AACH,CAAC,CAAC;AAPW,QAAA,SAAS,aAOpB"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Utility functions for assertion implementations
3
+ *
4
+ * @internal
5
+ * @packageDocumentation
6
+ */
7
+ /**
8
+ * Executes & traps a `Promise` rejected from an async function, capturing the
9
+ * error.
10
+ *
11
+ * @function
12
+ * @param fn The function to execute that may throw an error or return a
13
+ * `Promise`
14
+ * @returns Rejection or whatever was fulfilled
15
+ */
16
+ export declare const trapAsyncFnError: (fn: () => unknown) => Promise<TrapResult>;
17
+ /**
18
+ * Awaits & traps a Promise, capturing any rejection error.
19
+ *
20
+ * @function
21
+ * @param promise The `Promise` to trap
22
+ * @returns Result object
23
+ */
24
+ export declare const trapPromiseError: (promise: PromiseLike<unknown>) => Promise<TrapResult>;
25
+ /**
26
+ * Executes & traps a synchronous function that may throw, capturing any thrown
27
+ * error and discarding the result.
28
+ *
29
+ * @remarks
30
+ * Avoids throwing `undefined` for some reason.
31
+ * @function
32
+ * @param fn Function to execute
33
+ * @returns Result object
34
+ */
35
+ export declare const trapError: (fn: () => unknown) => TrapResult;
36
+ //# sourceMappingURL=assertion-util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assertion-util.d.ts","sourceRoot":"","sources":["../../../src/assertion/impl/assertion-util.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,GAC3B,IAAI,MAAM,OAAO,KAChB,OAAO,CAAC,UAAU,CASpB,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,GAC3B,SAAS,WAAW,CAAC,OAAO,CAAC,KAC5B,OAAO,CAAC,UAAU,CAOpB,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,SAAS,GAAI,IAAI,MAAM,OAAO,KAAG,UAO7C,CAAC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Utility functions for assertion implementations
3
+ *
4
+ * @internal
5
+ * @packageDocumentation
6
+ */
7
+ /**
8
+ * Executes & traps a `Promise` rejected from an async function, capturing the
9
+ * error.
10
+ *
11
+ * @function
12
+ * @param fn The function to execute that may throw an error or return a
13
+ * `Promise`
14
+ * @returns Rejection or whatever was fulfilled
15
+ */
16
+ export declare const trapAsyncFnError: (fn: () => unknown) => Promise<TrapResult>;
17
+ /**
18
+ * Awaits & traps a Promise, capturing any rejection error.
19
+ *
20
+ * @function
21
+ * @param promise The `Promise` to trap
22
+ * @returns Result object
23
+ */
24
+ export declare const trapPromiseError: (promise: PromiseLike<unknown>) => Promise<TrapResult>;
25
+ /**
26
+ * Executes & traps a synchronous function that may throw, capturing any thrown
27
+ * error and discarding the result.
28
+ *
29
+ * @remarks
30
+ * Avoids throwing `undefined` for some reason.
31
+ * @function
32
+ * @param fn Function to execute
33
+ * @returns Result object
34
+ */
35
+ export declare const trapError: (fn: () => unknown) => TrapResult;
36
+ //# sourceMappingURL=assertion-util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assertion-util.d.ts","sourceRoot":"","sources":["../../../src/assertion/impl/assertion-util.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,GAC3B,IAAI,MAAM,OAAO,KAChB,OAAO,CAAC,UAAU,CASpB,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,GAC3B,SAAS,WAAW,CAAC,OAAO,CAAC,KAC5B,OAAO,CAAC,UAAU,CAOpB,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,SAAS,GAAI,IAAI,MAAM,OAAO,KAAG,UAO7C,CAAC"}