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,245 @@
1
+ "use strict";
2
+ /**
3
+ * Serialization utilities for converting values to snapshot strings.
4
+ *
5
+ * Provides default serialization logic that handles:
6
+ *
7
+ * - Circular references
8
+ * - Non-JSON types (Functions, Symbols, BigInt, etc.)
9
+ * - Error objects
10
+ * - Map and Set collections
11
+ * - Key sorting for deterministic output
12
+ *
13
+ * @packageDocumentation
14
+ */
15
+ var __importDefault = (this && this.__importDefault) || function (mod) {
16
+ return (mod && mod.__esModule) ? mod : { "default": mod };
17
+ };
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.nodeTestCompatibleSerializer = exports.defaultSerializer = void 0;
20
+ const { entries, getOwnPropertyNames } = Object;
21
+ const { isArray } = Array;
22
+ const json_stable_stringify_1 = __importDefault(require("json-stable-stringify"));
23
+ const guards_js_1 = require("../guards.cjs");
24
+ /**
25
+ * Default JSON replacer that handles non-JSON types.
26
+ *
27
+ * Converts JavaScript-specific types into JSON-serializable representations:
28
+ *
29
+ * - Functions: omitted (`undefined`)
30
+ * - Symbols: converted to string
31
+ * - BigInt: converted to string with `n` suffix
32
+ * - `undefined`: converted to string `'undefined'`
33
+ * - RegExp: converted to string representation
34
+ * - Date: converted to ISO string
35
+ * - Error: converted to object with name, message, and other properties
36
+ * - Map: converted to `{ __type: 'Map', entries: [...] }`
37
+ * - Set: converted to `{ __type: 'Set', values: [...] }`
38
+ *
39
+ * @example
40
+ *
41
+ * ```typescript
42
+ * defaultReplacer(Symbol('test')); // 'Symbol(test)'
43
+ * defaultReplacer(42n); // '42n'
44
+ * defaultReplacer(() => {}); // undefined (omitted)
45
+ * ```
46
+ *
47
+ * @function
48
+ * @param value - Value to convert
49
+ * @returns Converted value, or `undefined` to omit
50
+ */
51
+ const defaultReplacer = (value) => {
52
+ // Functions are omitted
53
+ if (typeof value === 'function' || value === undefined) {
54
+ return undefined;
55
+ }
56
+ // Symbols converted to string
57
+ if (typeof value === 'symbol') {
58
+ return value.toString();
59
+ }
60
+ // BigInt converted to string with suffix
61
+ if (typeof value === 'bigint') {
62
+ return `${value.toString()}n`;
63
+ }
64
+ if ((0, guards_js_1.isA)(value, RegExp)) {
65
+ return value.toString();
66
+ }
67
+ if ((0, guards_js_1.isA)(value, Date)) {
68
+ return value.toISOString();
69
+ }
70
+ if ((0, guards_js_1.isError)(value)) {
71
+ const errorProps = {
72
+ message: value.message,
73
+ name: value.name,
74
+ };
75
+ // Include other enumerable properties
76
+ for (const prop of getOwnPropertyNames(value)) {
77
+ if (prop !== 'stack') {
78
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
79
+ errorProps[prop] = value[prop];
80
+ }
81
+ }
82
+ return errorProps;
83
+ }
84
+ // Map to array of entries
85
+ if ((0, guards_js_1.isA)(value, Map)) {
86
+ return {
87
+ __type: 'Map',
88
+ entries: [...value.entries()],
89
+ };
90
+ }
91
+ // Set to array
92
+ if ((0, guards_js_1.isA)(value, Set)) {
93
+ return {
94
+ __type: 'Set',
95
+ values: [...value.values()],
96
+ };
97
+ }
98
+ return value;
99
+ };
100
+ /**
101
+ * Detects and marks circular references in an object graph, and applies
102
+ * replacer for special types.
103
+ *
104
+ * Uses a WeakSet to track visited objects without holding strong references.
105
+ * Circular references are replaced with the string `'[Circular]'`.
106
+ *
107
+ * @example
108
+ *
109
+ * ```typescript
110
+ * const obj: any = { a: 1 };
111
+ * obj.self = obj;
112
+ * detectCircular(obj, defaultReplacer); // { a: 1, self: '[Circular]' }
113
+ * ```
114
+ *
115
+ * @function
116
+ * @param value - Value to process
117
+ * @param replacer - Function to transform values
118
+ * @returns Value with circular references replaced and special types converted
119
+ */
120
+ const detectCircular = (value, replacer) => {
121
+ const seen = new WeakSet();
122
+ /**
123
+ * @function
124
+ */
125
+ const visit = (val) => {
126
+ // Apply replacer first (handles special types)
127
+ const replaced = replacer(val);
128
+ // If replacer returned something different, use it
129
+ if (replaced !== val) {
130
+ // If replaced is an object, we need to visit it recursively
131
+ if (typeof replaced === 'object' && replaced !== null) {
132
+ val = replaced;
133
+ }
134
+ else {
135
+ // Primitive or special transformation, return as-is
136
+ return replaced;
137
+ }
138
+ }
139
+ // Primitives can't be circular
140
+ if (typeof val !== 'object' || val === null) {
141
+ return val;
142
+ }
143
+ // Check if we've seen this object before
144
+ if (seen.has(val)) {
145
+ return '[Circular]';
146
+ }
147
+ // Mark as seen
148
+ seen.add(val);
149
+ // Handle arrays
150
+ if (isArray(val)) {
151
+ return val.map((item) => visit(item));
152
+ }
153
+ // Handle plain objects
154
+ const result = {};
155
+ for (const [key, value] of entries(val)) {
156
+ const visited = visit(value);
157
+ // Only include if not undefined (functions are omitted)
158
+ if (visited !== undefined) {
159
+ result[key] = visited;
160
+ }
161
+ }
162
+ return result;
163
+ };
164
+ return visit(value);
165
+ };
166
+ /**
167
+ * Default serializer using JSON.stringify with custom handling.
168
+ *
169
+ * This serializer provides robust handling of JavaScript values including:
170
+ *
171
+ * - Circular reference detection
172
+ * - Non-JSON type conversion
173
+ * - Optional key sorting for deterministic output
174
+ * - Custom replacer support
175
+ *
176
+ * The output is formatted with 2-space indentation for readability.
177
+ *
178
+ * @example
179
+ *
180
+ * ```typescript
181
+ * const obj = { b: 2, a: 1, date: new Date('2025-01-01') };
182
+ * defaultSerializer(obj, { sortKeys: true });
183
+ * // Returns:
184
+ * // {
185
+ * // "a": 1,
186
+ * // "b": 2,
187
+ * // "date": "2025-01-01T00:00:00.000Z"
188
+ * // }
189
+ * ```
190
+ *
191
+ * @example
192
+ *
193
+ * ```typescript
194
+ * const circular: any = { a: 1 };
195
+ * circular.self = circular;
196
+ * defaultSerializer(circular);
197
+ * // Returns:
198
+ * // {
199
+ * // "a": 1,
200
+ * // "self": "[Circular]"
201
+ * // }
202
+ * ```
203
+ *
204
+ * @function
205
+ * @param value - Value to serialize
206
+ * @param options - Serialization options
207
+ * @returns JSON string representation
208
+ */
209
+ const defaultSerializer = (value, options = {}) => {
210
+ const { replacer = defaultReplacer } = options;
211
+ // Handle circular references and apply replacer
212
+ const processed = detectCircular(value, replacer);
213
+ // Don't pass replacer to stringify - it's already been applied
214
+ return String((0, json_stable_stringify_1.default)(processed, { space: 2 }));
215
+ };
216
+ exports.defaultSerializer = defaultSerializer;
217
+ /**
218
+ * Serializer compatible with node:test's snapshot format.
219
+ *
220
+ * This is currently an alias for {@link defaultSerializer}, but exists as a
221
+ * separate export to allow for future node:test-specific customization.
222
+ *
223
+ * @example
224
+ *
225
+ * ```typescript
226
+ * import test from 'node:test';
227
+ * import { nodeTestCompatibleSerializer } from 'bupkis/snapshot';
228
+ *
229
+ * test('my test', (t) => {
230
+ * const data = { foo: 'bar' };
231
+ * expect(data, 'to match snapshot', t, {
232
+ * serializer: nodeTestCompatibleSerializer,
233
+ * });
234
+ * });
235
+ * ```
236
+ *
237
+ * @function
238
+ * @param value - Value to serialize
239
+ * @returns JSON string representation
240
+ */
241
+ const nodeTestCompatibleSerializer = (value) =>
242
+ // Node:test expects the same format as our default serializer
243
+ (0, exports.defaultSerializer)(value);
244
+ exports.nodeTestCompatibleSerializer = nodeTestCompatibleSerializer;
245
+ //# sourceMappingURL=serializer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializer.js","sourceRoot":"","sources":["../../src/snapshot/serializer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,126 @@
1
+ /**
2
+ * Serialization utilities for converting values to snapshot strings.
3
+ *
4
+ * Provides default serialization logic that handles:
5
+ *
6
+ * - Circular references
7
+ * - Non-JSON types (Functions, Symbols, BigInt, etc.)
8
+ * - Error objects
9
+ * - Map and Set collections
10
+ * - Key sorting for deterministic output
11
+ *
12
+ * @packageDocumentation
13
+ */
14
+ /**
15
+ * Options for the default serializer.
16
+ */
17
+ export interface SerializerOptions {
18
+ /**
19
+ * Maximum depth for nested objects.
20
+ *
21
+ * Deeper objects will be replaced with `[Object]` or `[Array]`.
22
+ *
23
+ * @default Infinity
24
+ */
25
+ depth?: number;
26
+ /**
27
+ * Custom replacer for non-serializable values.
28
+ *
29
+ * This function is called for each value during serialization and can
30
+ * transform or filter values before they're converted to JSON.
31
+ *
32
+ * @example
33
+ *
34
+ * ```typescript
35
+ * replacer: (value) => {
36
+ * // Redact secrets
37
+ * if (typeof value === 'object' && value && 'password' in value) {
38
+ * return { ...value, password: '[REDACTED]' };
39
+ * }
40
+ * return value;
41
+ * };
42
+ * ```
43
+ *
44
+ * @param value - The value to process
45
+ * @returns The transformed value, or `undefined` to omit
46
+ */
47
+ replacer?: (value: unknown) => unknown;
48
+ /**
49
+ * Whether to sort object keys alphabetically.
50
+ *
51
+ * This ensures deterministic output regardless of property insertion order.
52
+ *
53
+ * @default true
54
+ */
55
+ sortKeys?: boolean;
56
+ }
57
+ /**
58
+ * Default serializer using JSON.stringify with custom handling.
59
+ *
60
+ * This serializer provides robust handling of JavaScript values including:
61
+ *
62
+ * - Circular reference detection
63
+ * - Non-JSON type conversion
64
+ * - Optional key sorting for deterministic output
65
+ * - Custom replacer support
66
+ *
67
+ * The output is formatted with 2-space indentation for readability.
68
+ *
69
+ * @example
70
+ *
71
+ * ```typescript
72
+ * const obj = { b: 2, a: 1, date: new Date('2025-01-01') };
73
+ * defaultSerializer(obj, { sortKeys: true });
74
+ * // Returns:
75
+ * // {
76
+ * // "a": 1,
77
+ * // "b": 2,
78
+ * // "date": "2025-01-01T00:00:00.000Z"
79
+ * // }
80
+ * ```
81
+ *
82
+ * @example
83
+ *
84
+ * ```typescript
85
+ * const circular: any = { a: 1 };
86
+ * circular.self = circular;
87
+ * defaultSerializer(circular);
88
+ * // Returns:
89
+ * // {
90
+ * // "a": 1,
91
+ * // "self": "[Circular]"
92
+ * // }
93
+ * ```
94
+ *
95
+ * @function
96
+ * @param value - Value to serialize
97
+ * @param options - Serialization options
98
+ * @returns JSON string representation
99
+ */
100
+ export declare const defaultSerializer: (value: unknown, options?: SerializerOptions) => string;
101
+ /**
102
+ * Serializer compatible with node:test's snapshot format.
103
+ *
104
+ * This is currently an alias for {@link defaultSerializer}, but exists as a
105
+ * separate export to allow for future node:test-specific customization.
106
+ *
107
+ * @example
108
+ *
109
+ * ```typescript
110
+ * import test from 'node:test';
111
+ * import { nodeTestCompatibleSerializer } from 'bupkis/snapshot';
112
+ *
113
+ * test('my test', (t) => {
114
+ * const data = { foo: 'bar' };
115
+ * expect(data, 'to match snapshot', t, {
116
+ * serializer: nodeTestCompatibleSerializer,
117
+ * });
118
+ * });
119
+ * ```
120
+ *
121
+ * @function
122
+ * @param value - Value to serialize
123
+ * @returns JSON string representation
124
+ */
125
+ export declare const nodeTestCompatibleSerializer: (value: unknown) => string;
126
+ //# sourceMappingURL=serializer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializer.d.ts","sourceRoot":"","sources":["../../src/snapshot/serializer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AASH;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;IAEvC;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAsKD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,eAAO,MAAM,iBAAiB,GAC5B,OAAO,OAAO,EACd,UAAS,iBAAsB,KAC9B,MAOF,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,4BAA4B,GAAI,OAAO,OAAO,KAAG,MAEpC,CAAC"}
@@ -0,0 +1,126 @@
1
+ /**
2
+ * Serialization utilities for converting values to snapshot strings.
3
+ *
4
+ * Provides default serialization logic that handles:
5
+ *
6
+ * - Circular references
7
+ * - Non-JSON types (Functions, Symbols, BigInt, etc.)
8
+ * - Error objects
9
+ * - Map and Set collections
10
+ * - Key sorting for deterministic output
11
+ *
12
+ * @packageDocumentation
13
+ */
14
+ /**
15
+ * Options for the default serializer.
16
+ */
17
+ export interface SerializerOptions {
18
+ /**
19
+ * Maximum depth for nested objects.
20
+ *
21
+ * Deeper objects will be replaced with `[Object]` or `[Array]`.
22
+ *
23
+ * @default Infinity
24
+ */
25
+ depth?: number;
26
+ /**
27
+ * Custom replacer for non-serializable values.
28
+ *
29
+ * This function is called for each value during serialization and can
30
+ * transform or filter values before they're converted to JSON.
31
+ *
32
+ * @example
33
+ *
34
+ * ```typescript
35
+ * replacer: (value) => {
36
+ * // Redact secrets
37
+ * if (typeof value === 'object' && value && 'password' in value) {
38
+ * return { ...value, password: '[REDACTED]' };
39
+ * }
40
+ * return value;
41
+ * };
42
+ * ```
43
+ *
44
+ * @param value - The value to process
45
+ * @returns The transformed value, or `undefined` to omit
46
+ */
47
+ replacer?: (value: unknown) => unknown;
48
+ /**
49
+ * Whether to sort object keys alphabetically.
50
+ *
51
+ * This ensures deterministic output regardless of property insertion order.
52
+ *
53
+ * @default true
54
+ */
55
+ sortKeys?: boolean;
56
+ }
57
+ /**
58
+ * Default serializer using JSON.stringify with custom handling.
59
+ *
60
+ * This serializer provides robust handling of JavaScript values including:
61
+ *
62
+ * - Circular reference detection
63
+ * - Non-JSON type conversion
64
+ * - Optional key sorting for deterministic output
65
+ * - Custom replacer support
66
+ *
67
+ * The output is formatted with 2-space indentation for readability.
68
+ *
69
+ * @example
70
+ *
71
+ * ```typescript
72
+ * const obj = { b: 2, a: 1, date: new Date('2025-01-01') };
73
+ * defaultSerializer(obj, { sortKeys: true });
74
+ * // Returns:
75
+ * // {
76
+ * // "a": 1,
77
+ * // "b": 2,
78
+ * // "date": "2025-01-01T00:00:00.000Z"
79
+ * // }
80
+ * ```
81
+ *
82
+ * @example
83
+ *
84
+ * ```typescript
85
+ * const circular: any = { a: 1 };
86
+ * circular.self = circular;
87
+ * defaultSerializer(circular);
88
+ * // Returns:
89
+ * // {
90
+ * // "a": 1,
91
+ * // "self": "[Circular]"
92
+ * // }
93
+ * ```
94
+ *
95
+ * @function
96
+ * @param value - Value to serialize
97
+ * @param options - Serialization options
98
+ * @returns JSON string representation
99
+ */
100
+ export declare const defaultSerializer: (value: unknown, options?: SerializerOptions) => string;
101
+ /**
102
+ * Serializer compatible with node:test's snapshot format.
103
+ *
104
+ * This is currently an alias for {@link defaultSerializer}, but exists as a
105
+ * separate export to allow for future node:test-specific customization.
106
+ *
107
+ * @example
108
+ *
109
+ * ```typescript
110
+ * import test from 'node:test';
111
+ * import { nodeTestCompatibleSerializer } from 'bupkis/snapshot';
112
+ *
113
+ * test('my test', (t) => {
114
+ * const data = { foo: 'bar' };
115
+ * expect(data, 'to match snapshot', t, {
116
+ * serializer: nodeTestCompatibleSerializer,
117
+ * });
118
+ * });
119
+ * ```
120
+ *
121
+ * @function
122
+ * @param value - Value to serialize
123
+ * @returns JSON string representation
124
+ */
125
+ export declare const nodeTestCompatibleSerializer: (value: unknown) => string;
126
+ //# sourceMappingURL=serializer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializer.d.ts","sourceRoot":"","sources":["../../src/snapshot/serializer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AASH;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;IAEvC;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAsKD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,eAAO,MAAM,iBAAiB,GAC5B,OAAO,OAAO,EACd,UAAS,iBAAsB,KAC9B,MAOF,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,4BAA4B,GAAI,OAAO,OAAO,KAAG,MAEpC,CAAC"}