bupkis 0.18.0 → 0.18.2

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