bupkis 0.18.1 → 0.18.3

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 (379) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/package.json +3 -6
  3. package/src/assertion/assertion-sync.ts +1 -1
  4. package/src/assertion/assertion-types.ts +4 -4
  5. package/src/assertion/assertion.ts +11 -6
  6. package/src/assertion/impl/iteration-util.ts +2 -2
  7. package/src/assertion/impl/sync-parametric.ts +1 -1
  8. package/src/expect.ts +1 -5
  9. package/src/guards.ts +24 -24
  10. package/src/internal-schema.ts +16 -32
  11. package/src/value-to-schema.ts +1 -1
  12. package/dist/assertion/assertion-async.cjs +0 -268
  13. package/dist/assertion/assertion-async.cjs.map +0 -1
  14. package/dist/assertion/assertion-async.d.cts +0 -40
  15. package/dist/assertion/assertion-async.d.cts.map +0 -1
  16. package/dist/assertion/assertion-async.d.ts +0 -40
  17. package/dist/assertion/assertion-async.d.ts.map +0 -1
  18. package/dist/assertion/assertion-async.js +0 -259
  19. package/dist/assertion/assertion-async.js.map +0 -1
  20. package/dist/assertion/assertion-standard-schema-async.cjs +0 -132
  21. package/dist/assertion/assertion-standard-schema-async.cjs.map +0 -1
  22. package/dist/assertion/assertion-standard-schema-async.d.cts +0 -52
  23. package/dist/assertion/assertion-standard-schema-async.d.cts.map +0 -1
  24. package/dist/assertion/assertion-standard-schema-async.d.ts +0 -52
  25. package/dist/assertion/assertion-standard-schema-async.d.ts.map +0 -1
  26. package/dist/assertion/assertion-standard-schema-async.js +0 -128
  27. package/dist/assertion/assertion-standard-schema-async.js.map +0 -1
  28. package/dist/assertion/assertion-standard-schema-sync.cjs +0 -141
  29. package/dist/assertion/assertion-standard-schema-sync.cjs.map +0 -1
  30. package/dist/assertion/assertion-standard-schema-sync.d.cts +0 -52
  31. package/dist/assertion/assertion-standard-schema-sync.d.cts.map +0 -1
  32. package/dist/assertion/assertion-standard-schema-sync.d.ts +0 -52
  33. package/dist/assertion/assertion-standard-schema-sync.d.ts.map +0 -1
  34. package/dist/assertion/assertion-standard-schema-sync.js +0 -137
  35. package/dist/assertion/assertion-standard-schema-sync.js.map +0 -1
  36. package/dist/assertion/assertion-sync.cjs +0 -284
  37. package/dist/assertion/assertion-sync.cjs.map +0 -1
  38. package/dist/assertion/assertion-sync.d.cts +0 -60
  39. package/dist/assertion/assertion-sync.d.cts.map +0 -1
  40. package/dist/assertion/assertion-sync.d.ts +0 -60
  41. package/dist/assertion/assertion-sync.d.ts.map +0 -1
  42. package/dist/assertion/assertion-sync.js +0 -275
  43. package/dist/assertion/assertion-sync.js.map +0 -1
  44. package/dist/assertion/assertion-types.cjs +0 -20
  45. package/dist/assertion/assertion-types.cjs.map +0 -1
  46. package/dist/assertion/assertion-types.d.cts +0 -1086
  47. package/dist/assertion/assertion-types.d.cts.map +0 -1
  48. package/dist/assertion/assertion-types.d.ts +0 -1086
  49. package/dist/assertion/assertion-types.d.ts.map +0 -1
  50. package/dist/assertion/assertion-types.js +0 -19
  51. package/dist/assertion/assertion-types.js.map +0 -1
  52. package/dist/assertion/assertion.cjs +0 -382
  53. package/dist/assertion/assertion.cjs.map +0 -1
  54. package/dist/assertion/assertion.d.cts +0 -109
  55. package/dist/assertion/assertion.d.cts.map +0 -1
  56. package/dist/assertion/assertion.d.ts +0 -109
  57. package/dist/assertion/assertion.d.ts.map +0 -1
  58. package/dist/assertion/assertion.js +0 -375
  59. package/dist/assertion/assertion.js.map +0 -1
  60. package/dist/assertion/create.cjs +0 -148
  61. package/dist/assertion/create.cjs.map +0 -1
  62. package/dist/assertion/create.d.cts +0 -85
  63. package/dist/assertion/create.d.cts.map +0 -1
  64. package/dist/assertion/create.d.ts +0 -85
  65. package/dist/assertion/create.d.ts.map +0 -1
  66. package/dist/assertion/create.js +0 -143
  67. package/dist/assertion/create.js.map +0 -1
  68. package/dist/assertion/format-assertion-failure.cjs +0 -63
  69. package/dist/assertion/format-assertion-failure.cjs.map +0 -1
  70. package/dist/assertion/format-assertion-failure.d.cts +0 -21
  71. package/dist/assertion/format-assertion-failure.d.cts.map +0 -1
  72. package/dist/assertion/format-assertion-failure.d.ts +0 -21
  73. package/dist/assertion/format-assertion-failure.d.ts.map +0 -1
  74. package/dist/assertion/format-assertion-failure.js +0 -59
  75. package/dist/assertion/format-assertion-failure.js.map +0 -1
  76. package/dist/assertion/impl/assertion-util.cjs +0 -68
  77. package/dist/assertion/impl/assertion-util.cjs.map +0 -1
  78. package/dist/assertion/impl/assertion-util.d.cts +0 -36
  79. package/dist/assertion/impl/assertion-util.d.cts.map +0 -1
  80. package/dist/assertion/impl/assertion-util.d.ts +0 -36
  81. package/dist/assertion/impl/assertion-util.d.ts.map +0 -1
  82. package/dist/assertion/impl/assertion-util.js +0 -62
  83. package/dist/assertion/impl/assertion-util.js.map +0 -1
  84. package/dist/assertion/impl/async-iterable.cjs +0 -627
  85. package/dist/assertion/impl/async-iterable.cjs.map +0 -1
  86. package/dist/assertion/impl/async-iterable.d.cts +0 -406
  87. package/dist/assertion/impl/async-iterable.d.cts.map +0 -1
  88. package/dist/assertion/impl/async-iterable.d.ts +0 -406
  89. package/dist/assertion/impl/async-iterable.d.ts.map +0 -1
  90. package/dist/assertion/impl/async-iterable.js +0 -624
  91. package/dist/assertion/impl/async-iterable.js.map +0 -1
  92. package/dist/assertion/impl/async-parametric.cjs +0 -412
  93. package/dist/assertion/impl/async-parametric.cjs.map +0 -1
  94. package/dist/assertion/impl/async-parametric.d.cts +0 -278
  95. package/dist/assertion/impl/async-parametric.d.cts.map +0 -1
  96. package/dist/assertion/impl/async-parametric.d.ts +0 -278
  97. package/dist/assertion/impl/async-parametric.d.ts.map +0 -1
  98. package/dist/assertion/impl/async-parametric.js +0 -409
  99. package/dist/assertion/impl/async-parametric.js.map +0 -1
  100. package/dist/assertion/impl/async.cjs +0 -56
  101. package/dist/assertion/impl/async.cjs.map +0 -1
  102. package/dist/assertion/impl/async.d.cts +0 -179
  103. package/dist/assertion/impl/async.d.cts.map +0 -1
  104. package/dist/assertion/impl/async.d.ts +0 -179
  105. package/dist/assertion/impl/async.d.ts.map +0 -1
  106. package/dist/assertion/impl/async.js +0 -39
  107. package/dist/assertion/impl/async.js.map +0 -1
  108. package/dist/assertion/impl/index.cjs +0 -37
  109. package/dist/assertion/impl/index.cjs.map +0 -1
  110. package/dist/assertion/impl/index.d.cts +0 -21
  111. package/dist/assertion/impl/index.d.cts.map +0 -1
  112. package/dist/assertion/impl/index.d.ts +0 -21
  113. package/dist/assertion/impl/index.d.ts.map +0 -1
  114. package/dist/assertion/impl/index.js +0 -21
  115. package/dist/assertion/impl/index.js.map +0 -1
  116. package/dist/assertion/impl/iteration-util.cjs +0 -297
  117. package/dist/assertion/impl/iteration-util.cjs.map +0 -1
  118. package/dist/assertion/impl/iteration-util.d.cts +0 -12
  119. package/dist/assertion/impl/iteration-util.d.cts.map +0 -1
  120. package/dist/assertion/impl/iteration-util.d.ts +0 -12
  121. package/dist/assertion/impl/iteration-util.d.ts.map +0 -1
  122. package/dist/assertion/impl/iteration-util.js +0 -282
  123. package/dist/assertion/impl/iteration-util.js.map +0 -1
  124. package/dist/assertion/impl/snapshot.cjs +0 -276
  125. package/dist/assertion/impl/snapshot.cjs.map +0 -1
  126. package/dist/assertion/impl/snapshot.d.cts +0 -278
  127. package/dist/assertion/impl/snapshot.d.cts.map +0 -1
  128. package/dist/assertion/impl/snapshot.d.ts +0 -278
  129. package/dist/assertion/impl/snapshot.d.ts.map +0 -1
  130. package/dist/assertion/impl/snapshot.js +0 -273
  131. package/dist/assertion/impl/snapshot.js.map +0 -1
  132. package/dist/assertion/impl/sync-basic.cjs +0 -553
  133. package/dist/assertion/impl/sync-basic.cjs.map +0 -1
  134. package/dist/assertion/impl/sync-basic.d.cts +0 -528
  135. package/dist/assertion/impl/sync-basic.d.cts.map +0 -1
  136. package/dist/assertion/impl/sync-basic.d.ts +0 -528
  137. package/dist/assertion/impl/sync-basic.d.ts.map +0 -1
  138. package/dist/assertion/impl/sync-basic.js +0 -550
  139. package/dist/assertion/impl/sync-basic.js.map +0 -1
  140. package/dist/assertion/impl/sync-collection.cjs +0 -856
  141. package/dist/assertion/impl/sync-collection.cjs.map +0 -1
  142. package/dist/assertion/impl/sync-collection.d.cts +0 -607
  143. package/dist/assertion/impl/sync-collection.d.cts.map +0 -1
  144. package/dist/assertion/impl/sync-collection.d.ts +0 -607
  145. package/dist/assertion/impl/sync-collection.d.ts.map +0 -1
  146. package/dist/assertion/impl/sync-collection.js +0 -850
  147. package/dist/assertion/impl/sync-collection.js.map +0 -1
  148. package/dist/assertion/impl/sync-date.cjs +0 -341
  149. package/dist/assertion/impl/sync-date.cjs.map +0 -1
  150. package/dist/assertion/impl/sync-date.d.cts +0 -209
  151. package/dist/assertion/impl/sync-date.d.cts.map +0 -1
  152. package/dist/assertion/impl/sync-date.d.ts +0 -209
  153. package/dist/assertion/impl/sync-date.d.ts.map +0 -1
  154. package/dist/assertion/impl/sync-date.js +0 -338
  155. package/dist/assertion/impl/sync-date.js.map +0 -1
  156. package/dist/assertion/impl/sync-esoteric.cjs +0 -214
  157. package/dist/assertion/impl/sync-esoteric.cjs.map +0 -1
  158. package/dist/assertion/impl/sync-esoteric.d.cts +0 -191
  159. package/dist/assertion/impl/sync-esoteric.d.cts.map +0 -1
  160. package/dist/assertion/impl/sync-esoteric.d.ts +0 -191
  161. package/dist/assertion/impl/sync-esoteric.d.ts.map +0 -1
  162. package/dist/assertion/impl/sync-esoteric.js +0 -211
  163. package/dist/assertion/impl/sync-esoteric.js.map +0 -1
  164. package/dist/assertion/impl/sync-iterable.cjs +0 -512
  165. package/dist/assertion/impl/sync-iterable.cjs.map +0 -1
  166. package/dist/assertion/impl/sync-iterable.d.cts +0 -334
  167. package/dist/assertion/impl/sync-iterable.d.cts.map +0 -1
  168. package/dist/assertion/impl/sync-iterable.d.ts +0 -334
  169. package/dist/assertion/impl/sync-iterable.d.ts.map +0 -1
  170. package/dist/assertion/impl/sync-iterable.js +0 -509
  171. package/dist/assertion/impl/sync-iterable.js.map +0 -1
  172. package/dist/assertion/impl/sync-parametric.cjs +0 -805
  173. package/dist/assertion/impl/sync-parametric.cjs.map +0 -1
  174. package/dist/assertion/impl/sync-parametric.d.cts +0 -560
  175. package/dist/assertion/impl/sync-parametric.d.cts.map +0 -1
  176. package/dist/assertion/impl/sync-parametric.d.ts +0 -560
  177. package/dist/assertion/impl/sync-parametric.d.ts.map +0 -1
  178. package/dist/assertion/impl/sync-parametric.js +0 -802
  179. package/dist/assertion/impl/sync-parametric.js.map +0 -1
  180. package/dist/assertion/impl/sync.cjs +0 -214
  181. package/dist/assertion/impl/sync.cjs.map +0 -1
  182. package/dist/assertion/impl/sync.d.cts +0 -512
  183. package/dist/assertion/impl/sync.d.cts.map +0 -1
  184. package/dist/assertion/impl/sync.d.ts +0 -512
  185. package/dist/assertion/impl/sync.d.ts.map +0 -1
  186. package/dist/assertion/impl/sync.js +0 -197
  187. package/dist/assertion/impl/sync.js.map +0 -1
  188. package/dist/assertion/index.cjs +0 -38
  189. package/dist/assertion/index.cjs.map +0 -1
  190. package/dist/assertion/index.d.cts +0 -18
  191. package/dist/assertion/index.d.cts.map +0 -1
  192. package/dist/assertion/index.d.ts +0 -18
  193. package/dist/assertion/index.d.ts.map +0 -1
  194. package/dist/assertion/index.js +0 -17
  195. package/dist/assertion/index.js.map +0 -1
  196. package/dist/assertion/slotify.cjs +0 -165
  197. package/dist/assertion/slotify.cjs.map +0 -1
  198. package/dist/assertion/slotify.d.cts +0 -11
  199. package/dist/assertion/slotify.d.cts.map +0 -1
  200. package/dist/assertion/slotify.d.ts +0 -11
  201. package/dist/assertion/slotify.d.ts.map +0 -1
  202. package/dist/assertion/slotify.js +0 -161
  203. package/dist/assertion/slotify.js.map +0 -1
  204. package/dist/bootstrap.cjs +0 -43
  205. package/dist/bootstrap.cjs.map +0 -1
  206. package/dist/bootstrap.d.cts +0 -27
  207. package/dist/bootstrap.d.cts.map +0 -1
  208. package/dist/bootstrap.d.ts +0 -27
  209. package/dist/bootstrap.d.ts.map +0 -1
  210. package/dist/bootstrap.js +0 -40
  211. package/dist/bootstrap.js.map +0 -1
  212. package/dist/constant.cjs +0 -82
  213. package/dist/constant.cjs.map +0 -1
  214. package/dist/constant.d.cts +0 -69
  215. package/dist/constant.d.cts.map +0 -1
  216. package/dist/constant.d.ts +0 -69
  217. package/dist/constant.d.ts.map +0 -1
  218. package/dist/constant.js +0 -79
  219. package/dist/constant.js.map +0 -1
  220. package/dist/diff.cjs +0 -340
  221. package/dist/diff.cjs.map +0 -1
  222. package/dist/diff.d.cts +0 -51
  223. package/dist/diff.d.cts.map +0 -1
  224. package/dist/diff.d.ts +0 -51
  225. package/dist/diff.d.ts.map +0 -1
  226. package/dist/diff.js +0 -334
  227. package/dist/diff.js.map +0 -1
  228. package/dist/error.cjs +0 -204
  229. package/dist/error.cjs.map +0 -1
  230. package/dist/error.d.cts +0 -212
  231. package/dist/error.d.cts.map +0 -1
  232. package/dist/error.d.ts +0 -212
  233. package/dist/error.d.ts.map +0 -1
  234. package/dist/error.js +0 -191
  235. package/dist/error.js.map +0 -1
  236. package/dist/expect.cjs +0 -590
  237. package/dist/expect.cjs.map +0 -1
  238. package/dist/expect.d.cts +0 -138
  239. package/dist/expect.d.cts.map +0 -1
  240. package/dist/expect.d.ts +0 -138
  241. package/dist/expect.d.ts.map +0 -1
  242. package/dist/expect.js +0 -582
  243. package/dist/expect.js.map +0 -1
  244. package/dist/guards.cjs +0 -297
  245. package/dist/guards.cjs.map +0 -1
  246. package/dist/guards.d.cts +0 -231
  247. package/dist/guards.d.cts.map +0 -1
  248. package/dist/guards.d.ts +0 -231
  249. package/dist/guards.d.ts.map +0 -1
  250. package/dist/guards.js +0 -277
  251. package/dist/guards.js.map +0 -1
  252. package/dist/index.cjs +0 -111
  253. package/dist/index.cjs.map +0 -1
  254. package/dist/index.d.cts +0 -448
  255. package/dist/index.d.cts.map +0 -1
  256. package/dist/index.d.ts +0 -448
  257. package/dist/index.d.ts.map +0 -1
  258. package/dist/index.js +0 -71
  259. package/dist/index.js.map +0 -1
  260. package/dist/internal-schema.cjs +0 -253
  261. package/dist/internal-schema.cjs.map +0 -1
  262. package/dist/internal-schema.d.cts +0 -8
  263. package/dist/internal-schema.d.cts.map +0 -1
  264. package/dist/internal-schema.d.ts +0 -8
  265. package/dist/internal-schema.d.ts.map +0 -1
  266. package/dist/internal-schema.js +0 -248
  267. package/dist/internal-schema.js.map +0 -1
  268. package/dist/metadata.cjs +0 -57
  269. package/dist/metadata.cjs.map +0 -1
  270. package/dist/metadata.d.cts +0 -27
  271. package/dist/metadata.d.cts.map +0 -1
  272. package/dist/metadata.d.ts +0 -27
  273. package/dist/metadata.d.ts.map +0 -1
  274. package/dist/metadata.js +0 -54
  275. package/dist/metadata.js.map +0 -1
  276. package/dist/schema.cjs +0 -1522
  277. package/dist/schema.cjs.map +0 -1
  278. package/dist/schema.d.cts +0 -1196
  279. package/dist/schema.d.cts.map +0 -1
  280. package/dist/schema.d.ts +0 -1196
  281. package/dist/schema.d.ts.map +0 -1
  282. package/dist/schema.js +0 -1516
  283. package/dist/schema.js.map +0 -1
  284. package/dist/snapshot/adapter.cjs +0 -31
  285. package/dist/snapshot/adapter.cjs.map +0 -1
  286. package/dist/snapshot/adapter.d.cts +0 -258
  287. package/dist/snapshot/adapter.d.cts.map +0 -1
  288. package/dist/snapshot/adapter.d.ts +0 -258
  289. package/dist/snapshot/adapter.d.ts.map +0 -1
  290. package/dist/snapshot/adapter.js +0 -27
  291. package/dist/snapshot/adapter.js.map +0 -1
  292. package/dist/snapshot/adapters/fallback.cjs +0 -453
  293. package/dist/snapshot/adapters/fallback.cjs.map +0 -1
  294. package/dist/snapshot/adapters/fallback.d.cts +0 -185
  295. package/dist/snapshot/adapters/fallback.d.cts.map +0 -1
  296. package/dist/snapshot/adapters/fallback.d.ts +0 -185
  297. package/dist/snapshot/adapters/fallback.d.ts.map +0 -1
  298. package/dist/snapshot/adapters/fallback.js +0 -446
  299. package/dist/snapshot/adapters/fallback.js.map +0 -1
  300. package/dist/snapshot/adapters/node-test.cjs +0 -301
  301. package/dist/snapshot/adapters/node-test.cjs.map +0 -1
  302. package/dist/snapshot/adapters/node-test.d.cts +0 -131
  303. package/dist/snapshot/adapters/node-test.d.cts.map +0 -1
  304. package/dist/snapshot/adapters/node-test.d.ts +0 -131
  305. package/dist/snapshot/adapters/node-test.d.ts.map +0 -1
  306. package/dist/snapshot/adapters/node-test.js +0 -297
  307. package/dist/snapshot/adapters/node-test.js.map +0 -1
  308. package/dist/snapshot/index.cjs +0 -61
  309. package/dist/snapshot/index.cjs.map +0 -1
  310. package/dist/snapshot/index.d.cts +0 -40
  311. package/dist/snapshot/index.d.cts.map +0 -1
  312. package/dist/snapshot/index.d.ts +0 -40
  313. package/dist/snapshot/index.d.ts.map +0 -1
  314. package/dist/snapshot/index.js +0 -44
  315. package/dist/snapshot/index.js.map +0 -1
  316. package/dist/snapshot/node-version.cjs +0 -49
  317. package/dist/snapshot/node-version.cjs.map +0 -1
  318. package/dist/snapshot/node-version.d.cts +0 -34
  319. package/dist/snapshot/node-version.d.cts.map +0 -1
  320. package/dist/snapshot/node-version.d.ts +0 -34
  321. package/dist/snapshot/node-version.d.ts.map +0 -1
  322. package/dist/snapshot/node-version.js +0 -44
  323. package/dist/snapshot/node-version.js.map +0 -1
  324. package/dist/snapshot/select-adapter.cjs +0 -170
  325. package/dist/snapshot/select-adapter.cjs.map +0 -1
  326. package/dist/snapshot/select-adapter.d.cts +0 -128
  327. package/dist/snapshot/select-adapter.d.cts.map +0 -1
  328. package/dist/snapshot/select-adapter.d.ts +0 -128
  329. package/dist/snapshot/select-adapter.d.ts.map +0 -1
  330. package/dist/snapshot/select-adapter.js +0 -164
  331. package/dist/snapshot/select-adapter.js.map +0 -1
  332. package/dist/snapshot/serializer.cjs +0 -246
  333. package/dist/snapshot/serializer.cjs.map +0 -1
  334. package/dist/snapshot/serializer.d.cts +0 -126
  335. package/dist/snapshot/serializer.d.cts.map +0 -1
  336. package/dist/snapshot/serializer.d.ts +0 -126
  337. package/dist/snapshot/serializer.d.ts.map +0 -1
  338. package/dist/snapshot/serializer.js +0 -238
  339. package/dist/snapshot/serializer.js.map +0 -1
  340. package/dist/standard-schema.cjs +0 -13
  341. package/dist/standard-schema.cjs.map +0 -1
  342. package/dist/standard-schema.d.cts +0 -192
  343. package/dist/standard-schema.d.cts.map +0 -1
  344. package/dist/standard-schema.d.ts +0 -192
  345. package/dist/standard-schema.d.ts.map +0 -1
  346. package/dist/standard-schema.js +0 -12
  347. package/dist/standard-schema.js.map +0 -1
  348. package/dist/types.cjs +0 -22
  349. package/dist/types.cjs.map +0 -1
  350. package/dist/types.d.cts +0 -905
  351. package/dist/types.d.cts.map +0 -1
  352. package/dist/types.d.ts +0 -905
  353. package/dist/types.d.ts.map +0 -1
  354. package/dist/types.js +0 -21
  355. package/dist/types.js.map +0 -1
  356. package/dist/use.cjs +0 -240
  357. package/dist/use.cjs.map +0 -1
  358. package/dist/use.d.cts +0 -8
  359. package/dist/use.d.cts.map +0 -1
  360. package/dist/use.d.ts +0 -8
  361. package/dist/use.d.ts.map +0 -1
  362. package/dist/use.js +0 -236
  363. package/dist/use.js.map +0 -1
  364. package/dist/util.cjs +0 -255
  365. package/dist/util.cjs.map +0 -1
  366. package/dist/util.d.cts +0 -141
  367. package/dist/util.d.cts.map +0 -1
  368. package/dist/util.d.ts +0 -141
  369. package/dist/util.d.ts.map +0 -1
  370. package/dist/util.js +0 -234
  371. package/dist/util.js.map +0 -1
  372. package/dist/value-to-schema.cjs +0 -537
  373. package/dist/value-to-schema.cjs.map +0 -1
  374. package/dist/value-to-schema.d.cts +0 -144
  375. package/dist/value-to-schema.d.cts.map +0 -1
  376. package/dist/value-to-schema.d.ts +0 -144
  377. package/dist/value-to-schema.d.ts.map +0 -1
  378. package/dist/value-to-schema.js +0 -533
  379. package/dist/value-to-schema.js.map +0 -1
@@ -1,533 +0,0 @@
1
- import { z } from 'zod';
2
- import { SatisfactionError } from "./error.js";
3
- import { isExpectItExecutor, isNonNullObject, isObject, isPromiseLike, isString, isZodType, } from "./guards.js";
4
- import { RegExpSchema, WrappedPromiseLikeSchema } from "./schema.js";
5
- const { isNaN } = Number;
6
- const { entries, freeze, hasOwn, keys } = Object;
7
- const { isArray } = Array;
8
- /**
9
- * Recursively converts an arbitrary value to a Zod v4 schema that would
10
- * validate values with the same structure.
11
- *
12
- * This function analyzes the runtime value and generates a corresponding Zod
13
- * schema that captures the value's structure and type information. It handles
14
- * primitives, objects, arrays, functions, and various built-in types, with
15
- * support for circular reference detection.
16
- *
17
- * @example
18
- *
19
- * ```typescript
20
- * // Primitive types
21
- * valueToSchema('hello'); // z.string()
22
- * valueToSchema(42); // z.number()
23
- * valueToSchema(true); // z.boolean()
24
- *
25
- * // Objects
26
- * valueToSchema({ name: 'John', age: 30 });
27
- * // z.object({ name: z.string(), age: z.number() })
28
- *
29
- * // Arrays
30
- * valueToSchema(['a', 'b', 'c']); // z.array(z.string())
31
- * valueToSchema([1, 'mixed']); // z.array(z.union([z.number(), z.string()]))
32
- *
33
- * // Nested structures
34
- * valueToSchema({ users: [{ name: 'John' }] });
35
- * // z.object({ users: z.array(z.object({ name: z.string() })) })
36
- * ```
37
- *
38
- * @function
39
- * @param value - The value to convert to a schema
40
- * @param options - Configuration options for schema generation
41
- * @param visited - Internal WeakSet for circular reference detection
42
- * @returns A Zod schema that validates values matching the input's structure.
43
- * This value is unfortunately untyped due to the complexity involved. But the
44
- * schema works!
45
- */
46
- export const valueToSchema = (value, options = {}, visited = new WeakSet()) => {
47
- const { _currentDepth = 0, literalEmptyArrays = false, literalEmptyObjects = false, literalPrimitives = false, literalRegExp = false, literalTuples = false, maxDepth = 10, noMixedArrays = false, permissivePropertyCheck = false, strict = false, } = options;
48
- // Prevent infinite recursion
49
- if (_currentDepth >= maxDepth) {
50
- return z.unknown();
51
- }
52
- // Handle primitives
53
- if (value === null) {
54
- return z.null();
55
- }
56
- if (value === undefined) {
57
- return literalPrimitives
58
- ? z.custom((val) => val === undefined, {
59
- message: 'Expected undefined',
60
- })
61
- : z.undefined();
62
- }
63
- if (isNaN(value)) {
64
- return z.nan();
65
- }
66
- if (value === Infinity || value === -Infinity) {
67
- return z.literal(value);
68
- }
69
- const valueType = typeof value;
70
- switch (valueType) {
71
- case 'bigint':
72
- return literalPrimitives ? z.literal(value) : z.bigint();
73
- case 'boolean':
74
- return literalPrimitives ? z.literal(value) : z.boolean();
75
- case 'function':
76
- // Check if this is an ExpectItExecutor
77
- if (isExpectItExecutor(value)) {
78
- // Only allow nested assertions when strict is false (e.g., "to satisfy" semantics)
79
- if (strict) {
80
- throw new SatisfactionError('ExpectItExecutor (expect.it) functions are not allowed in strict mode. ' +
81
- 'Use "to satisfy" assertions for nested expectations.');
82
- }
83
- // Return a schema that executes the ExpectItExecutor when validated
84
- return z.custom((subject) => {
85
- try {
86
- value(subject);
87
- return true;
88
- }
89
- catch {
90
- return false;
91
- }
92
- }, {
93
- message: 'Failed expect.it assertion',
94
- });
95
- }
96
- return z.function();
97
- case 'number':
98
- return literalPrimitives ? z.literal(value) : z.number();
99
- case 'string':
100
- return literalPrimitives ? z.literal(value) : z.string();
101
- case 'symbol':
102
- return z.symbol();
103
- }
104
- // Handle objects
105
- if (typeof value === 'object' && value !== null) {
106
- // Check for circular references
107
- if (visited.has(value)) {
108
- // Return a recursive schema reference or unknown for circular refs
109
- return z.unknown();
110
- }
111
- visited.add(value);
112
- try {
113
- // Handle built-in object types
114
- if (value instanceof Date) {
115
- // Check if it's a valid date
116
- if (isNaN(value.getTime())) {
117
- // For invalid dates, use a literal or custom validator
118
- return z.custom((val) => val instanceof Date && isNaN(val.getTime()), {
119
- message: 'Expected an invalid Date',
120
- });
121
- }
122
- return z.date();
123
- }
124
- if (value instanceof RegExp) {
125
- if (literalRegExp) {
126
- return RegExpSchema;
127
- }
128
- return z.coerce.string().regex(value);
129
- }
130
- if (value instanceof Map) {
131
- if (literalPrimitives) {
132
- const expectedMap = value;
133
- const expectedEntries = [...expectedMap.entries()];
134
- const entrySchemas = expectedEntries.map(([k, v]) => ({
135
- key: valueToSchema(k, { ...options, _currentDepth: _currentDepth + 1 }, visited),
136
- value: valueToSchema(v, { ...options, _currentDepth: _currentDepth + 1 }, visited),
137
- }));
138
- return z.custom((val) => {
139
- if (!(val instanceof Map)) {
140
- return false;
141
- }
142
- if (val.size !== expectedMap.size) {
143
- return false;
144
- }
145
- const actualEntries = [...val.entries()];
146
- for (let i = 0; i < expectedEntries.length; i++) {
147
- const [_expectedKey, _expectedValue] = expectedEntries[i];
148
- const actualEntry = actualEntries.find(([ak]) => {
149
- const keySchema = entrySchemas[i].key;
150
- return keySchema.safeParse(ak).success;
151
- });
152
- if (!actualEntry) {
153
- return false;
154
- }
155
- const valueSchema = entrySchemas[i].value;
156
- if (!valueSchema.safeParse(actualEntry[1]).success) {
157
- return false;
158
- }
159
- }
160
- return true;
161
- }, {
162
- message: `Expected Map with ${expectedMap.size} entries matching the expected structure`,
163
- });
164
- }
165
- return z.instanceof(Map);
166
- }
167
- if (value instanceof Set) {
168
- if (literalPrimitives) {
169
- const expectedSet = value;
170
- const expectedValues = [...expectedSet.values()];
171
- const valueSchemas = expectedValues.map((v) => valueToSchema(v, { ...options, _currentDepth: _currentDepth + 1 }, visited));
172
- return z.custom((val) => {
173
- if (!(val instanceof Set)) {
174
- return false;
175
- }
176
- if (val.size !== expectedSet.size) {
177
- return false;
178
- }
179
- const actualValues = [...val.values()];
180
- for (let i = 0; i < expectedValues.length; i++) {
181
- const schema = valueSchemas[i];
182
- const found = actualValues.some((av) => schema.safeParse(av).success);
183
- if (!found) {
184
- return false;
185
- }
186
- }
187
- return true;
188
- }, {
189
- message: `Expected Set with ${expectedSet.size} values matching the expected structure`,
190
- });
191
- }
192
- return z.instanceof(Set);
193
- }
194
- if (value instanceof WeakMap) {
195
- return z.instanceof(WeakMap);
196
- }
197
- if (value instanceof WeakSet) {
198
- return z.instanceof(WeakSet);
199
- }
200
- if (value instanceof Error) {
201
- return z.instanceof(Error);
202
- }
203
- if (isPromiseLike(value)) {
204
- return WrappedPromiseLikeSchema;
205
- }
206
- // Handle arrays
207
- if (isArray(value)) {
208
- // For arrays, we need to preserve undefined values while allowing
209
- // other elements to use the original literalPrimitives setting
210
- const filteredValue = value; // Always process all elements
211
- if (filteredValue.length === 0) {
212
- // When literalEmptyArrays is false, empty arrays match any array
213
- if (!literalEmptyArrays) {
214
- return z.array(z.unknown());
215
- }
216
- // For literal empty arrays, use z.tuple() if literalTuples is enabled
217
- if (literalTuples) {
218
- return z.tuple([]);
219
- }
220
- return z.array(z.never());
221
- }
222
- const elementSchemas = filteredValue.map((item) => {
223
- // Use literal mode for undefined values to preserve them exactly,
224
- // but use the original setting for other values
225
- const itemLiteralPrimitives = item === undefined ? true : literalPrimitives;
226
- return valueToSchema(item, {
227
- ...options,
228
- _currentDepth: _currentDepth + 1,
229
- literalPrimitives: itemLiteralPrimitives,
230
- // Disable permissive property check for array elements to avoid
231
- // conflicts in union schemas (permissive z.any() would accept
232
- // array elements meant for other branches)
233
- permissivePropertyCheck: false,
234
- }, visited);
235
- });
236
- // Use z.tuple() if literalTuples is enabled
237
- if (literalTuples) {
238
- return z.tuple(elementSchemas);
239
- }
240
- if (!noMixedArrays) {
241
- // Helper function to generate structural keys for schemas
242
- /**
243
- * @function
244
- */
245
- const getSchemaKey = (zodType) => {
246
- const schema = zodType;
247
- if (isZodType(schema, 'literal')) {
248
- return `${schema.constructor.name}:${String(schema.def.values)}`;
249
- }
250
- if (isZodType(schema, 'array')) {
251
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
252
- const elementKey = getSchemaKey(schema.def.element);
253
- return `ZodArray<${elementKey}>`;
254
- }
255
- if (isZodType(schema, 'object')) {
256
- // For objects, create a key based on the property keys and their types
257
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
258
- const shape = schema.def.shape;
259
- const shapeKeys = keys(shape)
260
- .sort()
261
- .map((key) => {
262
- const propSchema = shape[key];
263
- return `${key}:${getSchemaKey(propSchema)}`;
264
- });
265
- return `ZodObject<{${shapeKeys.join(',')}}>`;
266
- }
267
- if (isZodType(schema, 'union')) {
268
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
269
- const optionKeys = schema.def.options
270
- .map((option) => getSchemaKey(option))
271
- .sort();
272
- return `ZodUnion<[${optionKeys.join(',')}]>`;
273
- }
274
- // For other types, use the constructor name
275
- return schema.constructor.name;
276
- };
277
- const seenSchemaKeys = new Set();
278
- const uniqueSchemas = [];
279
- for (const schema of elementSchemas) {
280
- const schemaKey = getSchemaKey(schema);
281
- if (!seenSchemaKeys.has(schemaKey)) {
282
- seenSchemaKeys.add(schemaKey);
283
- uniqueSchemas.push(schema);
284
- }
285
- }
286
- if (uniqueSchemas.length === 1) {
287
- return z.array(uniqueSchemas[0]);
288
- }
289
- else {
290
- return z.array(z.union(uniqueSchemas));
291
- }
292
- }
293
- else {
294
- // Use the first element's schema for all elements
295
- return z.array(elementSchemas[0]);
296
- }
297
- }
298
- // Handle plain objects
299
- if (isNonNullObject(value)) {
300
- const schemaShape = {};
301
- const undefinedKeys = [];
302
- // Handle __proto__ specially - Zod ignores it in z.object() shapes,
303
- // so we validate it separately via superRefine
304
- let protoSchema = null;
305
- if (hasOwn(value, '__proto__')) {
306
- const protoValue = value['__proto__'];
307
- protoSchema = valueToSchema(protoValue, { ...options, _currentDepth: _currentDepth + 1 }, visited);
308
- }
309
- for (const [key, val] of entries(value)) {
310
- if (isString(key)) {
311
- // Skip __proto__ - handled separately since Zod ignores it in object shapes
312
- if (key === '__proto__') {
313
- continue;
314
- }
315
- // Skip undefined values unless we're in literalPrimitives mode
316
- // This prevents objects with only undefined values from matching any object
317
- if (val === undefined && !literalPrimitives) {
318
- continue;
319
- }
320
- if (val === undefined && literalPrimitives) {
321
- // Track keys that should have undefined values
322
- undefinedKeys.push(key);
323
- schemaShape[key] = z.undefined();
324
- }
325
- else {
326
- schemaShape[key] = valueToSchema(val, {
327
- ...options,
328
- _currentDepth: _currentDepth + 1,
329
- }, visited);
330
- }
331
- }
332
- }
333
- // When permissivePropertyCheck is enabled, use a custom validator that
334
- // checks properties via `in` operator. This allows validating properties
335
- // on any value type (functions, arrays, etc.) not just plain objects.
336
- if (permissivePropertyCheck && !strict) {
337
- const capturedSchemaShape = schemaShape;
338
- const capturedProtoSchema = protoSchema;
339
- const capturedUndefinedKeys = undefinedKeys;
340
- return z.any().superRefine((val, ctx) => {
341
- // Can't use `in` operator on primitives
342
- if (val == null ||
343
- (typeof val !== 'object' && typeof val !== 'function')) {
344
- ctx.addIssue({
345
- code: 'custom',
346
- message: `Expected a value with properties, but received ${val === null ? 'null' : typeof val}`,
347
- });
348
- return;
349
- }
350
- // Check __proto__ if expected
351
- // Cast is safe - we've verified val is object or function above
352
- const valAsObject = val;
353
- if (capturedProtoSchema) {
354
- if (!hasOwn(valAsObject, '__proto__')) {
355
- ctx.addIssue({
356
- code: 'custom',
357
- message: 'Expected property "__proto__" to exist',
358
- path: ['__proto__'],
359
- });
360
- }
361
- else {
362
- const actualProto = val['__proto__'];
363
- const protoResult = capturedProtoSchema.safeParse(actualProto);
364
- if (!protoResult.success) {
365
- for (const issue of protoResult.error.issues) {
366
- ctx.addIssue({
367
- ...issue,
368
- path: ['__proto__', ...issue.path],
369
- });
370
- }
371
- }
372
- }
373
- }
374
- // Check each expected property
375
- for (const [key, schema] of entries(capturedSchemaShape)) {
376
- if (!(key in val)) {
377
- ctx.addIssue({
378
- code: 'custom',
379
- message: `Expected property "${key}" to exist`,
380
- path: [key],
381
- });
382
- continue;
383
- }
384
- // Property access can throw for reserved properties on strict mode
385
- // functions (e.g., 'arguments', 'caller', 'callee')
386
- let propValue;
387
- try {
388
- propValue = val[key];
389
- }
390
- catch {
391
- ctx.addIssue({
392
- code: 'custom',
393
- message: `Property "${key}" exists but cannot be accessed`,
394
- path: [key],
395
- });
396
- continue;
397
- }
398
- const result = schema.safeParse(propValue);
399
- if (!result.success) {
400
- for (const issue of result.error.issues) {
401
- ctx.addIssue({
402
- ...issue,
403
- path: [key, ...issue.path],
404
- });
405
- }
406
- }
407
- }
408
- // Check undefined keys exist with undefined value
409
- for (const key of capturedUndefinedKeys) {
410
- if (!hasOwn(valAsObject, key)) {
411
- ctx.addIssue({
412
- code: 'custom',
413
- message: `Expected property "${key}" to exist with value undefined`,
414
- path: [key],
415
- });
416
- }
417
- }
418
- });
419
- }
420
- // Create the base object schema (standard Zod object validation)
421
- const baseSchema = strict
422
- ? z.strictObject(schemaShape)
423
- : z.looseObject(schemaShape);
424
- // When __proto__ is present, we MUST use z.custom() because Zod strips
425
- // __proto__ before it reaches superRefine. z.custom() receives the raw input.
426
- if (protoSchema) {
427
- const capturedProtoSchema = protoSchema;
428
- const capturedUndefinedKeys = undefinedKeys;
429
- const needsUndefinedValidation = capturedUndefinedKeys.length > 0 && literalPrimitives;
430
- return z.custom((val) => {
431
- if (typeof val !== 'object' || val === null) {
432
- return false;
433
- }
434
- // Validate __proto__ BEFORE Zod can strip it
435
- if (!hasOwn(val, '__proto__')) {
436
- return false;
437
- }
438
- const actualProto = val['__proto__'];
439
- if (!capturedProtoSchema.safeParse(actualProto).success) {
440
- return false;
441
- }
442
- // Validate the rest of the object via the base schema
443
- if (!baseSchema.safeParse(val).success) {
444
- return false;
445
- }
446
- // Validate undefined keys if needed
447
- if (needsUndefinedValidation) {
448
- for (const key of capturedUndefinedKeys) {
449
- if (!hasOwn(val, key)) {
450
- return false;
451
- }
452
- }
453
- }
454
- return true;
455
- }, {
456
- message: 'Expected object to have own "__proto__" property',
457
- });
458
- }
459
- // Apply refinements for undefined keys (no __proto__ case)
460
- const needsUndefinedKeyValidation = undefinedKeys.length > 0 && literalPrimitives;
461
- if (needsUndefinedKeyValidation) {
462
- return baseSchema.superRefine((data, ctx) => {
463
- if (typeof data !== 'object' || data === null) {
464
- ctx.addIssue({
465
- code: 'custom',
466
- message: 'Expected an object',
467
- });
468
- return;
469
- }
470
- const obj = data;
471
- // Validate undefined keys exist
472
- for (const key of undefinedKeys) {
473
- if (!hasOwn(obj, key)) {
474
- ctx.addIssue({
475
- code: 'custom',
476
- message: `Expected property "${key}" to exist with value undefined`,
477
- path: [key],
478
- });
479
- }
480
- }
481
- });
482
- }
483
- // Check if this is an empty object and literalEmptyObjects is enabled
484
- if (keys(schemaShape).length === 0 && literalEmptyObjects) {
485
- // Create a schema that only matches empty objects
486
- return z.custom((val) => isObject(val) && keys(val).length === 0, {
487
- message: 'Expected an empty object with no own properties',
488
- });
489
- }
490
- return baseSchema;
491
- }
492
- // Handle other object types (ArrayBuffer, etc.)
493
- return z.custom((val) => typeof val === 'object' && val !== null, { message: 'Expected an object' });
494
- }
495
- finally {
496
- visited.delete(value);
497
- }
498
- }
499
- // Fallback for unknown types
500
- return z.unknown();
501
- };
502
- /**
503
- * Predefined options for {@link valueToSchema} optimized for object satisfaction
504
- * checks.
505
- *
506
- * Uses literal primitives and tuples for exact matching while allowing extra
507
- * properties.
508
- */
509
- export const valueToSchemaOptionsForSatisfies = freeze({
510
- literalEmptyArrays: false,
511
- literalEmptyObjects: true,
512
- literalPrimitives: true,
513
- literalRegExp: false,
514
- literalTuples: true,
515
- permissivePropertyCheck: true,
516
- strict: false,
517
- });
518
- /**
519
- * Predefined options for {@link valueToSchema} optimized for deep equality
520
- * checks.
521
- *
522
- * Uses literal primitives, regexp, and tuples with strict validation for exact
523
- * matching.
524
- */
525
- export const valueToSchemaOptionsForDeepEqual = freeze({
526
- literalEmptyArrays: true,
527
- literalEmptyObjects: true,
528
- literalPrimitives: true,
529
- literalRegExp: true,
530
- literalTuples: true,
531
- strict: true,
532
- });
533
- //# sourceMappingURL=value-to-schema.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"value-to-schema.js","sourceRoot":"","sources":["../src/value-to-schema.ts"],"names":[],"mappings":"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"}