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,237 @@
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
+ const { entries, getOwnPropertyNames } = Object;
15
+ const { isArray } = Array;
16
+ import stringify from 'json-stable-stringify';
17
+ import { isA, isError } from "../guards.js";
18
+ /**
19
+ * Default JSON replacer that handles non-JSON types.
20
+ *
21
+ * Converts JavaScript-specific types into JSON-serializable representations:
22
+ *
23
+ * - Functions: omitted (`undefined`)
24
+ * - Symbols: converted to string
25
+ * - BigInt: converted to string with `n` suffix
26
+ * - `undefined`: converted to string `'undefined'`
27
+ * - RegExp: converted to string representation
28
+ * - Date: converted to ISO string
29
+ * - Error: converted to object with name, message, and other properties
30
+ * - Map: converted to `{ __type: 'Map', entries: [...] }`
31
+ * - Set: converted to `{ __type: 'Set', values: [...] }`
32
+ *
33
+ * @example
34
+ *
35
+ * ```typescript
36
+ * defaultReplacer(Symbol('test')); // 'Symbol(test)'
37
+ * defaultReplacer(42n); // '42n'
38
+ * defaultReplacer(() => {}); // undefined (omitted)
39
+ * ```
40
+ *
41
+ * @function
42
+ * @param value - Value to convert
43
+ * @returns Converted value, or `undefined` to omit
44
+ */
45
+ const defaultReplacer = (value) => {
46
+ // Functions are omitted
47
+ if (typeof value === 'function' || value === undefined) {
48
+ return undefined;
49
+ }
50
+ // Symbols converted to string
51
+ if (typeof value === 'symbol') {
52
+ return value.toString();
53
+ }
54
+ // BigInt converted to string with suffix
55
+ if (typeof value === 'bigint') {
56
+ return `${value.toString()}n`;
57
+ }
58
+ if (isA(value, RegExp)) {
59
+ return value.toString();
60
+ }
61
+ if (isA(value, Date)) {
62
+ return value.toISOString();
63
+ }
64
+ if (isError(value)) {
65
+ const errorProps = {
66
+ message: value.message,
67
+ name: value.name,
68
+ };
69
+ // Include other enumerable properties
70
+ for (const prop of getOwnPropertyNames(value)) {
71
+ if (prop !== 'stack') {
72
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
73
+ errorProps[prop] = value[prop];
74
+ }
75
+ }
76
+ return errorProps;
77
+ }
78
+ // Map to array of entries
79
+ if (isA(value, Map)) {
80
+ return {
81
+ __type: 'Map',
82
+ entries: [...value.entries()],
83
+ };
84
+ }
85
+ // Set to array
86
+ if (isA(value, Set)) {
87
+ return {
88
+ __type: 'Set',
89
+ values: [...value.values()],
90
+ };
91
+ }
92
+ return value;
93
+ };
94
+ /**
95
+ * Detects and marks circular references in an object graph, and applies
96
+ * replacer for special types.
97
+ *
98
+ * Uses a WeakSet to track visited objects without holding strong references.
99
+ * Circular references are replaced with the string `'[Circular]'`.
100
+ *
101
+ * @example
102
+ *
103
+ * ```typescript
104
+ * const obj: any = { a: 1 };
105
+ * obj.self = obj;
106
+ * detectCircular(obj, defaultReplacer); // { a: 1, self: '[Circular]' }
107
+ * ```
108
+ *
109
+ * @function
110
+ * @param value - Value to process
111
+ * @param replacer - Function to transform values
112
+ * @returns Value with circular references replaced and special types converted
113
+ */
114
+ const detectCircular = (value, replacer) => {
115
+ const seen = new WeakSet();
116
+ /**
117
+ * @function
118
+ */
119
+ const visit = (val) => {
120
+ // Apply replacer first (handles special types)
121
+ const replaced = replacer(val);
122
+ // If replacer returned something different, use it
123
+ if (replaced !== val) {
124
+ // If replaced is an object, we need to visit it recursively
125
+ if (typeof replaced === 'object' && replaced !== null) {
126
+ val = replaced;
127
+ }
128
+ else {
129
+ // Primitive or special transformation, return as-is
130
+ return replaced;
131
+ }
132
+ }
133
+ // Primitives can't be circular
134
+ if (typeof val !== 'object' || val === null) {
135
+ return val;
136
+ }
137
+ // Check if we've seen this object before
138
+ if (seen.has(val)) {
139
+ return '[Circular]';
140
+ }
141
+ // Mark as seen
142
+ seen.add(val);
143
+ // Handle arrays
144
+ if (isArray(val)) {
145
+ return val.map((item) => visit(item));
146
+ }
147
+ // Handle plain objects
148
+ const result = {};
149
+ for (const [key, value] of entries(val)) {
150
+ const visited = visit(value);
151
+ // Only include if not undefined (functions are omitted)
152
+ if (visited !== undefined) {
153
+ result[key] = visited;
154
+ }
155
+ }
156
+ return result;
157
+ };
158
+ return visit(value);
159
+ };
160
+ /**
161
+ * Default serializer using JSON.stringify with custom handling.
162
+ *
163
+ * This serializer provides robust handling of JavaScript values including:
164
+ *
165
+ * - Circular reference detection
166
+ * - Non-JSON type conversion
167
+ * - Optional key sorting for deterministic output
168
+ * - Custom replacer support
169
+ *
170
+ * The output is formatted with 2-space indentation for readability.
171
+ *
172
+ * @example
173
+ *
174
+ * ```typescript
175
+ * const obj = { b: 2, a: 1, date: new Date('2025-01-01') };
176
+ * defaultSerializer(obj, { sortKeys: true });
177
+ * // Returns:
178
+ * // {
179
+ * // "a": 1,
180
+ * // "b": 2,
181
+ * // "date": "2025-01-01T00:00:00.000Z"
182
+ * // }
183
+ * ```
184
+ *
185
+ * @example
186
+ *
187
+ * ```typescript
188
+ * const circular: any = { a: 1 };
189
+ * circular.self = circular;
190
+ * defaultSerializer(circular);
191
+ * // Returns:
192
+ * // {
193
+ * // "a": 1,
194
+ * // "self": "[Circular]"
195
+ * // }
196
+ * ```
197
+ *
198
+ * @function
199
+ * @param value - Value to serialize
200
+ * @param options - Serialization options
201
+ * @returns JSON string representation
202
+ */
203
+ export const defaultSerializer = (value, options = {}) => {
204
+ const { replacer = defaultReplacer } = options;
205
+ // Handle circular references and apply replacer
206
+ const processed = detectCircular(value, replacer);
207
+ // Don't pass replacer to stringify - it's already been applied
208
+ return String(stringify(processed, { space: 2 }));
209
+ };
210
+ /**
211
+ * Serializer compatible with node:test's snapshot format.
212
+ *
213
+ * This is currently an alias for {@link defaultSerializer}, but exists as a
214
+ * separate export to allow for future node:test-specific customization.
215
+ *
216
+ * @example
217
+ *
218
+ * ```typescript
219
+ * import test from 'node:test';
220
+ * import { nodeTestCompatibleSerializer } from 'bupkis/snapshot';
221
+ *
222
+ * test('my test', (t) => {
223
+ * const data = { foo: 'bar' };
224
+ * expect(data, 'to match snapshot', t, {
225
+ * serializer: nodeTestCompatibleSerializer,
226
+ * });
227
+ * });
228
+ * ```
229
+ *
230
+ * @function
231
+ * @param value - Value to serialize
232
+ * @returns JSON string representation
233
+ */
234
+ export const nodeTestCompatibleSerializer = (value) =>
235
+ // Node:test expects the same format as our default serializer
236
+ defaultSerializer(value);
237
+ //# 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,13 @@
1
+ "use strict";
2
+ /**
3
+ * Standard Schema v1 specification types.
4
+ *
5
+ * These types define the Standard Schema interface that enables
6
+ * interoperability between different validation libraries (Zod, Valibot,
7
+ * ArkType, etc.).
8
+ *
9
+ * @packageDocumentation
10
+ * @see {@link https://standardschema.dev | Standard Schema Specification}
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ //# sourceMappingURL=standard-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"standard-schema.js","sourceRoot":"","sources":["../src/standard-schema.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG"}
@@ -0,0 +1,192 @@
1
+ /**
2
+ * Standard Schema v1 specification types.
3
+ *
4
+ * These types define the Standard Schema interface that enables
5
+ * interoperability between different validation libraries (Zod, Valibot,
6
+ * ArkType, etc.).
7
+ *
8
+ * @packageDocumentation
9
+ * @see {@link https://standardschema.dev | Standard Schema Specification}
10
+ */
11
+ /**
12
+ * The Standard Schema interface.
13
+ *
14
+ * This is the primary interface that validation libraries implement to be
15
+ * Standard Schema compliant. The interface is designed to be minimal and
16
+ * non-invasive, tucked behind the `~standard` property to avoid API conflicts.
17
+ *
18
+ * @template Input - The input type accepted by the schema
19
+ * @template Output - The output type produced after successful validation
20
+ */
21
+ export interface StandardSchemaV1<Input = unknown, Output = Input> {
22
+ /**
23
+ * The Standard Schema properties.
24
+ *
25
+ * This property uses a tilde prefix to:
26
+ *
27
+ * - Avoid conflicts with existing library APIs
28
+ * - De-prioritize in IDE autocomplete (tilde sorts after alphanumeric)
29
+ * - Signal special/internal nature of the property
30
+ */
31
+ readonly '~standard': StandardSchemaV1.Props<Input, Output>;
32
+ }
33
+ export declare namespace StandardSchemaV1 {
34
+ /**
35
+ * The result interface if validation fails.
36
+ *
37
+ * Contains an array of issues describing what went wrong during validation.
38
+ */
39
+ interface FailureResult {
40
+ /**
41
+ * The issues of failed validation.
42
+ *
43
+ * Always present and non-empty when validation fails.
44
+ */
45
+ readonly issues: ReadonlyArray<Issue>;
46
+ }
47
+ /**
48
+ * Infers the input type of a Standard Schema.
49
+ *
50
+ * Utility type for extracting the input type from a schema instance.
51
+ *
52
+ * @template Schema - The Standard Schema to extract the input type from
53
+ */
54
+ type InferInput<Schema extends StandardSchemaV1> = NonNullable<Schema['~standard']['types']>['input'];
55
+ /**
56
+ * Infers the output type of a Standard Schema.
57
+ *
58
+ * Utility type for extracting the output type from a schema instance.
59
+ *
60
+ * @template Schema - The Standard Schema to extract the output type from
61
+ */
62
+ type InferOutput<Schema extends StandardSchemaV1> = NonNullable<Schema['~standard']['types']>['output'];
63
+ /**
64
+ * The issue interface of the failure output.
65
+ *
66
+ * Describes a single validation problem, including a human-readable message
67
+ * and optional path to the problematic value in nested structures.
68
+ */
69
+ interface Issue {
70
+ /**
71
+ * The error message of the issue.
72
+ *
73
+ * Human-readable description of what validation rule was violated.
74
+ */
75
+ readonly message: string;
76
+ /**
77
+ * The path of the issue, if any.
78
+ *
79
+ * For nested structures, indicates where in the object/array hierarchy the
80
+ * validation failed. Can contain property keys or path segment objects.
81
+ */
82
+ readonly path?: ReadonlyArray<PathSegment | PropertyKey> | undefined;
83
+ }
84
+ /**
85
+ * The path segment interface of the issue.
86
+ *
87
+ * Allows path elements to carry additional metadata beyond just the key.
88
+ */
89
+ interface PathSegment {
90
+ /**
91
+ * The key representing a path segment.
92
+ *
93
+ * Can be a string, number, or symbol identifying the path component.
94
+ */
95
+ readonly key: PropertyKey;
96
+ }
97
+ /**
98
+ * The Standard Schema properties interface.
99
+ *
100
+ * Contains the actual validation logic and metadata required by the spec.
101
+ *
102
+ * @template Input - The input type accepted by the schema
103
+ * @template Output - The output type produced after successful validation
104
+ */
105
+ interface Props<Input = unknown, Output = Input> {
106
+ /**
107
+ * Inferred types associated with the schema.
108
+ *
109
+ * Optional property that allows TypeScript type inference for the schema.
110
+ * Not all libraries may provide this.
111
+ */
112
+ readonly types?: Types<Input, Output> | undefined;
113
+ /**
114
+ * Validates unknown input values.
115
+ *
116
+ * This function performs validation and returns either a success result
117
+ * with the validated/transformed data, or a failure result with validation
118
+ * issues. May return a Promise for async validation.
119
+ *
120
+ * @param value - The unknown value to validate
121
+ * @returns Result object or Promise resolving to result object
122
+ */
123
+ readonly validate: (value: unknown) => Promise<Result<Output>> | Result<Output>;
124
+ /**
125
+ * The vendor name of the schema library.
126
+ *
127
+ * Examples: 'zod', 'valibot', 'arktype', 'yup', etc.
128
+ */
129
+ readonly vendor: string;
130
+ /**
131
+ * The version number of the standard.
132
+ *
133
+ * Currently only version 1 is defined. Future versions will increment this
134
+ * number to maintain backward compatibility.
135
+ */
136
+ readonly version: 1;
137
+ }
138
+ /**
139
+ * The result interface of the validate function.
140
+ *
141
+ * A discriminated union that represents either successful or failed
142
+ * validation.
143
+ */
144
+ type Result<Output> = FailureResult | SuccessResult<Output>;
145
+ /**
146
+ * The result interface if validation succeeds.
147
+ *
148
+ * Contains the validated/transformed output value and explicitly sets
149
+ * `issues` to undefined to distinguish from failure results.
150
+ *
151
+ * @template Output - The output type after successful validation
152
+ */
153
+ interface SuccessResult<Output> {
154
+ /**
155
+ * The non-existent issues.
156
+ *
157
+ * Explicitly undefined to create a discriminated union with FailureResult.
158
+ */
159
+ readonly issues?: undefined;
160
+ /**
161
+ * The typed output value.
162
+ *
163
+ * This may be the same as the input or a transformed version, depending on
164
+ * the schema's validation logic.
165
+ */
166
+ readonly value: Output;
167
+ }
168
+ /**
169
+ * The Standard Schema types interface.
170
+ *
171
+ * Provides TypeScript type information for schemas that support type
172
+ * inference.
173
+ *
174
+ * @template Input - The input type of the schema
175
+ * @template Output - The output type of the schema
176
+ */
177
+ interface Types<Input = unknown, Output = Input> {
178
+ /**
179
+ * The input type of the schema.
180
+ *
181
+ * The type of values that can be passed to the validate function.
182
+ */
183
+ readonly input: Input;
184
+ /**
185
+ * The output type of the schema.
186
+ *
187
+ * The type of values produced after successful validation.
188
+ */
189
+ readonly output: Output;
190
+ }
191
+ }
192
+ //# sourceMappingURL=standard-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"standard-schema.d.ts","sourceRoot":"","sources":["../src/standard-schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;;;;;;;;GASG;AACH,MAAM,WAAW,gBAAgB,CAAC,KAAK,GAAG,OAAO,EAAE,MAAM,GAAG,KAAK;IAC/D;;;;;;;;OAQG;IACH,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;CAC7D;AAGD,MAAM,CAAC,OAAO,WAAW,gBAAgB,CAAC;IACxC;;;;OAIG;IACH,UAAiB,aAAa;QAC5B;;;;WAIG;QACH,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;KACvC;IAED;;;;;;OAMG;IACH,KAAY,UAAU,CAAC,MAAM,SAAS,gBAAgB,IAAI,WAAW,CACnE,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAC7B,CAAC,OAAO,CAAC,CAAC;IAEX;;;;;;OAMG;IACH,KAAY,WAAW,CAAC,MAAM,SAAS,gBAAgB,IAAI,WAAW,CACpE,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAC7B,CAAC,QAAQ,CAAC,CAAC;IAEZ;;;;;OAKG;IACH,UAAiB,KAAK;QACpB;;;;WAIG;QACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QAEzB;;;;;WAKG;QACH,QAAQ,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC,WAAW,GAAG,WAAW,CAAC,GAAG,SAAS,CAAC;KACtE;IAED;;;;OAIG;IACH,UAAiB,WAAW;QAC1B;;;;WAIG;QACH,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC;KAC3B;IAED;;;;;;;OAOG;IACH,UAAiB,KAAK,CAAC,KAAK,GAAG,OAAO,EAAE,MAAM,GAAG,KAAK;QACpD;;;;;WAKG;QACH,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;QAElD;;;;;;;;;WASG;QACH,QAAQ,CAAC,QAAQ,EAAE,CACjB,KAAK,EAAE,OAAO,KACX,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QAE9C;;;;WAIG;QACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QAExB;;;;;WAKG;QACH,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;KACrB;IAED;;;;;OAKG;IACH,KAAY,MAAM,CAAC,MAAM,IAAI,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IAEnE;;;;;;;OAOG;IACH,UAAiB,aAAa,CAAC,MAAM;QACnC;;;;WAIG;QACH,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC;QAE5B;;;;;WAKG;QACH,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;KACxB;IAED;;;;;;;;OAQG;IACH,UAAiB,KAAK,CAAC,KAAK,GAAG,OAAO,EAAE,MAAM,GAAG,KAAK;QACpD;;;;WAIG;QACH,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;QAEtB;;;;WAIG;QACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;KACzB;CACF"}
@@ -0,0 +1,192 @@
1
+ /**
2
+ * Standard Schema v1 specification types.
3
+ *
4
+ * These types define the Standard Schema interface that enables
5
+ * interoperability between different validation libraries (Zod, Valibot,
6
+ * ArkType, etc.).
7
+ *
8
+ * @packageDocumentation
9
+ * @see {@link https://standardschema.dev | Standard Schema Specification}
10
+ */
11
+ /**
12
+ * The Standard Schema interface.
13
+ *
14
+ * This is the primary interface that validation libraries implement to be
15
+ * Standard Schema compliant. The interface is designed to be minimal and
16
+ * non-invasive, tucked behind the `~standard` property to avoid API conflicts.
17
+ *
18
+ * @template Input - The input type accepted by the schema
19
+ * @template Output - The output type produced after successful validation
20
+ */
21
+ export interface StandardSchemaV1<Input = unknown, Output = Input> {
22
+ /**
23
+ * The Standard Schema properties.
24
+ *
25
+ * This property uses a tilde prefix to:
26
+ *
27
+ * - Avoid conflicts with existing library APIs
28
+ * - De-prioritize in IDE autocomplete (tilde sorts after alphanumeric)
29
+ * - Signal special/internal nature of the property
30
+ */
31
+ readonly '~standard': StandardSchemaV1.Props<Input, Output>;
32
+ }
33
+ export declare namespace StandardSchemaV1 {
34
+ /**
35
+ * The result interface if validation fails.
36
+ *
37
+ * Contains an array of issues describing what went wrong during validation.
38
+ */
39
+ interface FailureResult {
40
+ /**
41
+ * The issues of failed validation.
42
+ *
43
+ * Always present and non-empty when validation fails.
44
+ */
45
+ readonly issues: ReadonlyArray<Issue>;
46
+ }
47
+ /**
48
+ * Infers the input type of a Standard Schema.
49
+ *
50
+ * Utility type for extracting the input type from a schema instance.
51
+ *
52
+ * @template Schema - The Standard Schema to extract the input type from
53
+ */
54
+ type InferInput<Schema extends StandardSchemaV1> = NonNullable<Schema['~standard']['types']>['input'];
55
+ /**
56
+ * Infers the output type of a Standard Schema.
57
+ *
58
+ * Utility type for extracting the output type from a schema instance.
59
+ *
60
+ * @template Schema - The Standard Schema to extract the output type from
61
+ */
62
+ type InferOutput<Schema extends StandardSchemaV1> = NonNullable<Schema['~standard']['types']>['output'];
63
+ /**
64
+ * The issue interface of the failure output.
65
+ *
66
+ * Describes a single validation problem, including a human-readable message
67
+ * and optional path to the problematic value in nested structures.
68
+ */
69
+ interface Issue {
70
+ /**
71
+ * The error message of the issue.
72
+ *
73
+ * Human-readable description of what validation rule was violated.
74
+ */
75
+ readonly message: string;
76
+ /**
77
+ * The path of the issue, if any.
78
+ *
79
+ * For nested structures, indicates where in the object/array hierarchy the
80
+ * validation failed. Can contain property keys or path segment objects.
81
+ */
82
+ readonly path?: ReadonlyArray<PathSegment | PropertyKey> | undefined;
83
+ }
84
+ /**
85
+ * The path segment interface of the issue.
86
+ *
87
+ * Allows path elements to carry additional metadata beyond just the key.
88
+ */
89
+ interface PathSegment {
90
+ /**
91
+ * The key representing a path segment.
92
+ *
93
+ * Can be a string, number, or symbol identifying the path component.
94
+ */
95
+ readonly key: PropertyKey;
96
+ }
97
+ /**
98
+ * The Standard Schema properties interface.
99
+ *
100
+ * Contains the actual validation logic and metadata required by the spec.
101
+ *
102
+ * @template Input - The input type accepted by the schema
103
+ * @template Output - The output type produced after successful validation
104
+ */
105
+ interface Props<Input = unknown, Output = Input> {
106
+ /**
107
+ * Inferred types associated with the schema.
108
+ *
109
+ * Optional property that allows TypeScript type inference for the schema.
110
+ * Not all libraries may provide this.
111
+ */
112
+ readonly types?: Types<Input, Output> | undefined;
113
+ /**
114
+ * Validates unknown input values.
115
+ *
116
+ * This function performs validation and returns either a success result
117
+ * with the validated/transformed data, or a failure result with validation
118
+ * issues. May return a Promise for async validation.
119
+ *
120
+ * @param value - The unknown value to validate
121
+ * @returns Result object or Promise resolving to result object
122
+ */
123
+ readonly validate: (value: unknown) => Promise<Result<Output>> | Result<Output>;
124
+ /**
125
+ * The vendor name of the schema library.
126
+ *
127
+ * Examples: 'zod', 'valibot', 'arktype', 'yup', etc.
128
+ */
129
+ readonly vendor: string;
130
+ /**
131
+ * The version number of the standard.
132
+ *
133
+ * Currently only version 1 is defined. Future versions will increment this
134
+ * number to maintain backward compatibility.
135
+ */
136
+ readonly version: 1;
137
+ }
138
+ /**
139
+ * The result interface of the validate function.
140
+ *
141
+ * A discriminated union that represents either successful or failed
142
+ * validation.
143
+ */
144
+ type Result<Output> = FailureResult | SuccessResult<Output>;
145
+ /**
146
+ * The result interface if validation succeeds.
147
+ *
148
+ * Contains the validated/transformed output value and explicitly sets
149
+ * `issues` to undefined to distinguish from failure results.
150
+ *
151
+ * @template Output - The output type after successful validation
152
+ */
153
+ interface SuccessResult<Output> {
154
+ /**
155
+ * The non-existent issues.
156
+ *
157
+ * Explicitly undefined to create a discriminated union with FailureResult.
158
+ */
159
+ readonly issues?: undefined;
160
+ /**
161
+ * The typed output value.
162
+ *
163
+ * This may be the same as the input or a transformed version, depending on
164
+ * the schema's validation logic.
165
+ */
166
+ readonly value: Output;
167
+ }
168
+ /**
169
+ * The Standard Schema types interface.
170
+ *
171
+ * Provides TypeScript type information for schemas that support type
172
+ * inference.
173
+ *
174
+ * @template Input - The input type of the schema
175
+ * @template Output - The output type of the schema
176
+ */
177
+ interface Types<Input = unknown, Output = Input> {
178
+ /**
179
+ * The input type of the schema.
180
+ *
181
+ * The type of values that can be passed to the validate function.
182
+ */
183
+ readonly input: Input;
184
+ /**
185
+ * The output type of the schema.
186
+ *
187
+ * The type of values produced after successful validation.
188
+ */
189
+ readonly output: Output;
190
+ }
191
+ }
192
+ //# sourceMappingURL=standard-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"standard-schema.d.ts","sourceRoot":"","sources":["../src/standard-schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;;;;;;;;GASG;AACH,MAAM,WAAW,gBAAgB,CAAC,KAAK,GAAG,OAAO,EAAE,MAAM,GAAG,KAAK;IAC/D;;;;;;;;OAQG;IACH,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;CAC7D;AAGD,MAAM,CAAC,OAAO,WAAW,gBAAgB,CAAC;IACxC;;;;OAIG;IACH,UAAiB,aAAa;QAC5B;;;;WAIG;QACH,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;KACvC;IAED;;;;;;OAMG;IACH,KAAY,UAAU,CAAC,MAAM,SAAS,gBAAgB,IAAI,WAAW,CACnE,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAC7B,CAAC,OAAO,CAAC,CAAC;IAEX;;;;;;OAMG;IACH,KAAY,WAAW,CAAC,MAAM,SAAS,gBAAgB,IAAI,WAAW,CACpE,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAC7B,CAAC,QAAQ,CAAC,CAAC;IAEZ;;;;;OAKG;IACH,UAAiB,KAAK;QACpB;;;;WAIG;QACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QAEzB;;;;;WAKG;QACH,QAAQ,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC,WAAW,GAAG,WAAW,CAAC,GAAG,SAAS,CAAC;KACtE;IAED;;;;OAIG;IACH,UAAiB,WAAW;QAC1B;;;;WAIG;QACH,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC;KAC3B;IAED;;;;;;;OAOG;IACH,UAAiB,KAAK,CAAC,KAAK,GAAG,OAAO,EAAE,MAAM,GAAG,KAAK;QACpD;;;;;WAKG;QACH,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;QAElD;;;;;;;;;WASG;QACH,QAAQ,CAAC,QAAQ,EAAE,CACjB,KAAK,EAAE,OAAO,KACX,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QAE9C;;;;WAIG;QACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QAExB;;;;;WAKG;QACH,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;KACrB;IAED;;;;;OAKG;IACH,KAAY,MAAM,CAAC,MAAM,IAAI,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IAEnE;;;;;;;OAOG;IACH,UAAiB,aAAa,CAAC,MAAM;QACnC;;;;WAIG;QACH,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC;QAE5B;;;;;WAKG;QACH,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;KACxB;IAED;;;;;;;;OAQG;IACH,UAAiB,KAAK,CAAC,KAAK,GAAG,OAAO,EAAE,MAAM,GAAG,KAAK;QACpD;;;;WAIG;QACH,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;QAEtB;;;;WAIG;QACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;KACzB;CACF"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Standard Schema v1 specification types.
3
+ *
4
+ * These types define the Standard Schema interface that enables
5
+ * interoperability between different validation libraries (Zod, Valibot,
6
+ * ArkType, etc.).
7
+ *
8
+ * @packageDocumentation
9
+ * @see {@link https://standardschema.dev | Standard Schema Specification}
10
+ */
11
+ export {};
12
+ //# sourceMappingURL=standard-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"standard-schema.js","sourceRoot":"","sources":["../src/standard-schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}