bupkis 0.18.1 → 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 (376) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/package.json +1 -4
  3. package/src/assertion/assertion-types.ts +4 -4
  4. package/src/assertion/impl/sync-parametric.ts +1 -1
  5. package/src/expect.ts +0 -4
  6. package/src/guards.ts +24 -24
  7. package/src/internal-schema.ts +16 -32
  8. package/src/value-to-schema.ts +1 -1
  9. package/dist/assertion/assertion-async.cjs +0 -268
  10. package/dist/assertion/assertion-async.cjs.map +0 -1
  11. package/dist/assertion/assertion-async.d.cts +0 -40
  12. package/dist/assertion/assertion-async.d.cts.map +0 -1
  13. package/dist/assertion/assertion-async.d.ts +0 -40
  14. package/dist/assertion/assertion-async.d.ts.map +0 -1
  15. package/dist/assertion/assertion-async.js +0 -259
  16. package/dist/assertion/assertion-async.js.map +0 -1
  17. package/dist/assertion/assertion-standard-schema-async.cjs +0 -132
  18. package/dist/assertion/assertion-standard-schema-async.cjs.map +0 -1
  19. package/dist/assertion/assertion-standard-schema-async.d.cts +0 -52
  20. package/dist/assertion/assertion-standard-schema-async.d.cts.map +0 -1
  21. package/dist/assertion/assertion-standard-schema-async.d.ts +0 -52
  22. package/dist/assertion/assertion-standard-schema-async.d.ts.map +0 -1
  23. package/dist/assertion/assertion-standard-schema-async.js +0 -128
  24. package/dist/assertion/assertion-standard-schema-async.js.map +0 -1
  25. package/dist/assertion/assertion-standard-schema-sync.cjs +0 -141
  26. package/dist/assertion/assertion-standard-schema-sync.cjs.map +0 -1
  27. package/dist/assertion/assertion-standard-schema-sync.d.cts +0 -52
  28. package/dist/assertion/assertion-standard-schema-sync.d.cts.map +0 -1
  29. package/dist/assertion/assertion-standard-schema-sync.d.ts +0 -52
  30. package/dist/assertion/assertion-standard-schema-sync.d.ts.map +0 -1
  31. package/dist/assertion/assertion-standard-schema-sync.js +0 -137
  32. package/dist/assertion/assertion-standard-schema-sync.js.map +0 -1
  33. package/dist/assertion/assertion-sync.cjs +0 -284
  34. package/dist/assertion/assertion-sync.cjs.map +0 -1
  35. package/dist/assertion/assertion-sync.d.cts +0 -60
  36. package/dist/assertion/assertion-sync.d.cts.map +0 -1
  37. package/dist/assertion/assertion-sync.d.ts +0 -60
  38. package/dist/assertion/assertion-sync.d.ts.map +0 -1
  39. package/dist/assertion/assertion-sync.js +0 -275
  40. package/dist/assertion/assertion-sync.js.map +0 -1
  41. package/dist/assertion/assertion-types.cjs +0 -20
  42. package/dist/assertion/assertion-types.cjs.map +0 -1
  43. package/dist/assertion/assertion-types.d.cts +0 -1086
  44. package/dist/assertion/assertion-types.d.cts.map +0 -1
  45. package/dist/assertion/assertion-types.d.ts +0 -1086
  46. package/dist/assertion/assertion-types.d.ts.map +0 -1
  47. package/dist/assertion/assertion-types.js +0 -19
  48. package/dist/assertion/assertion-types.js.map +0 -1
  49. package/dist/assertion/assertion.cjs +0 -382
  50. package/dist/assertion/assertion.cjs.map +0 -1
  51. package/dist/assertion/assertion.d.cts +0 -109
  52. package/dist/assertion/assertion.d.cts.map +0 -1
  53. package/dist/assertion/assertion.d.ts +0 -109
  54. package/dist/assertion/assertion.d.ts.map +0 -1
  55. package/dist/assertion/assertion.js +0 -375
  56. package/dist/assertion/assertion.js.map +0 -1
  57. package/dist/assertion/create.cjs +0 -148
  58. package/dist/assertion/create.cjs.map +0 -1
  59. package/dist/assertion/create.d.cts +0 -85
  60. package/dist/assertion/create.d.cts.map +0 -1
  61. package/dist/assertion/create.d.ts +0 -85
  62. package/dist/assertion/create.d.ts.map +0 -1
  63. package/dist/assertion/create.js +0 -143
  64. package/dist/assertion/create.js.map +0 -1
  65. package/dist/assertion/format-assertion-failure.cjs +0 -63
  66. package/dist/assertion/format-assertion-failure.cjs.map +0 -1
  67. package/dist/assertion/format-assertion-failure.d.cts +0 -21
  68. package/dist/assertion/format-assertion-failure.d.cts.map +0 -1
  69. package/dist/assertion/format-assertion-failure.d.ts +0 -21
  70. package/dist/assertion/format-assertion-failure.d.ts.map +0 -1
  71. package/dist/assertion/format-assertion-failure.js +0 -59
  72. package/dist/assertion/format-assertion-failure.js.map +0 -1
  73. package/dist/assertion/impl/assertion-util.cjs +0 -68
  74. package/dist/assertion/impl/assertion-util.cjs.map +0 -1
  75. package/dist/assertion/impl/assertion-util.d.cts +0 -36
  76. package/dist/assertion/impl/assertion-util.d.cts.map +0 -1
  77. package/dist/assertion/impl/assertion-util.d.ts +0 -36
  78. package/dist/assertion/impl/assertion-util.d.ts.map +0 -1
  79. package/dist/assertion/impl/assertion-util.js +0 -62
  80. package/dist/assertion/impl/assertion-util.js.map +0 -1
  81. package/dist/assertion/impl/async-iterable.cjs +0 -627
  82. package/dist/assertion/impl/async-iterable.cjs.map +0 -1
  83. package/dist/assertion/impl/async-iterable.d.cts +0 -406
  84. package/dist/assertion/impl/async-iterable.d.cts.map +0 -1
  85. package/dist/assertion/impl/async-iterable.d.ts +0 -406
  86. package/dist/assertion/impl/async-iterable.d.ts.map +0 -1
  87. package/dist/assertion/impl/async-iterable.js +0 -624
  88. package/dist/assertion/impl/async-iterable.js.map +0 -1
  89. package/dist/assertion/impl/async-parametric.cjs +0 -412
  90. package/dist/assertion/impl/async-parametric.cjs.map +0 -1
  91. package/dist/assertion/impl/async-parametric.d.cts +0 -278
  92. package/dist/assertion/impl/async-parametric.d.cts.map +0 -1
  93. package/dist/assertion/impl/async-parametric.d.ts +0 -278
  94. package/dist/assertion/impl/async-parametric.d.ts.map +0 -1
  95. package/dist/assertion/impl/async-parametric.js +0 -409
  96. package/dist/assertion/impl/async-parametric.js.map +0 -1
  97. package/dist/assertion/impl/async.cjs +0 -56
  98. package/dist/assertion/impl/async.cjs.map +0 -1
  99. package/dist/assertion/impl/async.d.cts +0 -179
  100. package/dist/assertion/impl/async.d.cts.map +0 -1
  101. package/dist/assertion/impl/async.d.ts +0 -179
  102. package/dist/assertion/impl/async.d.ts.map +0 -1
  103. package/dist/assertion/impl/async.js +0 -39
  104. package/dist/assertion/impl/async.js.map +0 -1
  105. package/dist/assertion/impl/index.cjs +0 -37
  106. package/dist/assertion/impl/index.cjs.map +0 -1
  107. package/dist/assertion/impl/index.d.cts +0 -21
  108. package/dist/assertion/impl/index.d.cts.map +0 -1
  109. package/dist/assertion/impl/index.d.ts +0 -21
  110. package/dist/assertion/impl/index.d.ts.map +0 -1
  111. package/dist/assertion/impl/index.js +0 -21
  112. package/dist/assertion/impl/index.js.map +0 -1
  113. package/dist/assertion/impl/iteration-util.cjs +0 -297
  114. package/dist/assertion/impl/iteration-util.cjs.map +0 -1
  115. package/dist/assertion/impl/iteration-util.d.cts +0 -12
  116. package/dist/assertion/impl/iteration-util.d.cts.map +0 -1
  117. package/dist/assertion/impl/iteration-util.d.ts +0 -12
  118. package/dist/assertion/impl/iteration-util.d.ts.map +0 -1
  119. package/dist/assertion/impl/iteration-util.js +0 -282
  120. package/dist/assertion/impl/iteration-util.js.map +0 -1
  121. package/dist/assertion/impl/snapshot.cjs +0 -276
  122. package/dist/assertion/impl/snapshot.cjs.map +0 -1
  123. package/dist/assertion/impl/snapshot.d.cts +0 -278
  124. package/dist/assertion/impl/snapshot.d.cts.map +0 -1
  125. package/dist/assertion/impl/snapshot.d.ts +0 -278
  126. package/dist/assertion/impl/snapshot.d.ts.map +0 -1
  127. package/dist/assertion/impl/snapshot.js +0 -273
  128. package/dist/assertion/impl/snapshot.js.map +0 -1
  129. package/dist/assertion/impl/sync-basic.cjs +0 -553
  130. package/dist/assertion/impl/sync-basic.cjs.map +0 -1
  131. package/dist/assertion/impl/sync-basic.d.cts +0 -528
  132. package/dist/assertion/impl/sync-basic.d.cts.map +0 -1
  133. package/dist/assertion/impl/sync-basic.d.ts +0 -528
  134. package/dist/assertion/impl/sync-basic.d.ts.map +0 -1
  135. package/dist/assertion/impl/sync-basic.js +0 -550
  136. package/dist/assertion/impl/sync-basic.js.map +0 -1
  137. package/dist/assertion/impl/sync-collection.cjs +0 -856
  138. package/dist/assertion/impl/sync-collection.cjs.map +0 -1
  139. package/dist/assertion/impl/sync-collection.d.cts +0 -607
  140. package/dist/assertion/impl/sync-collection.d.cts.map +0 -1
  141. package/dist/assertion/impl/sync-collection.d.ts +0 -607
  142. package/dist/assertion/impl/sync-collection.d.ts.map +0 -1
  143. package/dist/assertion/impl/sync-collection.js +0 -850
  144. package/dist/assertion/impl/sync-collection.js.map +0 -1
  145. package/dist/assertion/impl/sync-date.cjs +0 -341
  146. package/dist/assertion/impl/sync-date.cjs.map +0 -1
  147. package/dist/assertion/impl/sync-date.d.cts +0 -209
  148. package/dist/assertion/impl/sync-date.d.cts.map +0 -1
  149. package/dist/assertion/impl/sync-date.d.ts +0 -209
  150. package/dist/assertion/impl/sync-date.d.ts.map +0 -1
  151. package/dist/assertion/impl/sync-date.js +0 -338
  152. package/dist/assertion/impl/sync-date.js.map +0 -1
  153. package/dist/assertion/impl/sync-esoteric.cjs +0 -214
  154. package/dist/assertion/impl/sync-esoteric.cjs.map +0 -1
  155. package/dist/assertion/impl/sync-esoteric.d.cts +0 -191
  156. package/dist/assertion/impl/sync-esoteric.d.cts.map +0 -1
  157. package/dist/assertion/impl/sync-esoteric.d.ts +0 -191
  158. package/dist/assertion/impl/sync-esoteric.d.ts.map +0 -1
  159. package/dist/assertion/impl/sync-esoteric.js +0 -211
  160. package/dist/assertion/impl/sync-esoteric.js.map +0 -1
  161. package/dist/assertion/impl/sync-iterable.cjs +0 -512
  162. package/dist/assertion/impl/sync-iterable.cjs.map +0 -1
  163. package/dist/assertion/impl/sync-iterable.d.cts +0 -334
  164. package/dist/assertion/impl/sync-iterable.d.cts.map +0 -1
  165. package/dist/assertion/impl/sync-iterable.d.ts +0 -334
  166. package/dist/assertion/impl/sync-iterable.d.ts.map +0 -1
  167. package/dist/assertion/impl/sync-iterable.js +0 -509
  168. package/dist/assertion/impl/sync-iterable.js.map +0 -1
  169. package/dist/assertion/impl/sync-parametric.cjs +0 -805
  170. package/dist/assertion/impl/sync-parametric.cjs.map +0 -1
  171. package/dist/assertion/impl/sync-parametric.d.cts +0 -560
  172. package/dist/assertion/impl/sync-parametric.d.cts.map +0 -1
  173. package/dist/assertion/impl/sync-parametric.d.ts +0 -560
  174. package/dist/assertion/impl/sync-parametric.d.ts.map +0 -1
  175. package/dist/assertion/impl/sync-parametric.js +0 -802
  176. package/dist/assertion/impl/sync-parametric.js.map +0 -1
  177. package/dist/assertion/impl/sync.cjs +0 -214
  178. package/dist/assertion/impl/sync.cjs.map +0 -1
  179. package/dist/assertion/impl/sync.d.cts +0 -512
  180. package/dist/assertion/impl/sync.d.cts.map +0 -1
  181. package/dist/assertion/impl/sync.d.ts +0 -512
  182. package/dist/assertion/impl/sync.d.ts.map +0 -1
  183. package/dist/assertion/impl/sync.js +0 -197
  184. package/dist/assertion/impl/sync.js.map +0 -1
  185. package/dist/assertion/index.cjs +0 -38
  186. package/dist/assertion/index.cjs.map +0 -1
  187. package/dist/assertion/index.d.cts +0 -18
  188. package/dist/assertion/index.d.cts.map +0 -1
  189. package/dist/assertion/index.d.ts +0 -18
  190. package/dist/assertion/index.d.ts.map +0 -1
  191. package/dist/assertion/index.js +0 -17
  192. package/dist/assertion/index.js.map +0 -1
  193. package/dist/assertion/slotify.cjs +0 -165
  194. package/dist/assertion/slotify.cjs.map +0 -1
  195. package/dist/assertion/slotify.d.cts +0 -11
  196. package/dist/assertion/slotify.d.cts.map +0 -1
  197. package/dist/assertion/slotify.d.ts +0 -11
  198. package/dist/assertion/slotify.d.ts.map +0 -1
  199. package/dist/assertion/slotify.js +0 -161
  200. package/dist/assertion/slotify.js.map +0 -1
  201. package/dist/bootstrap.cjs +0 -43
  202. package/dist/bootstrap.cjs.map +0 -1
  203. package/dist/bootstrap.d.cts +0 -27
  204. package/dist/bootstrap.d.cts.map +0 -1
  205. package/dist/bootstrap.d.ts +0 -27
  206. package/dist/bootstrap.d.ts.map +0 -1
  207. package/dist/bootstrap.js +0 -40
  208. package/dist/bootstrap.js.map +0 -1
  209. package/dist/constant.cjs +0 -82
  210. package/dist/constant.cjs.map +0 -1
  211. package/dist/constant.d.cts +0 -69
  212. package/dist/constant.d.cts.map +0 -1
  213. package/dist/constant.d.ts +0 -69
  214. package/dist/constant.d.ts.map +0 -1
  215. package/dist/constant.js +0 -79
  216. package/dist/constant.js.map +0 -1
  217. package/dist/diff.cjs +0 -340
  218. package/dist/diff.cjs.map +0 -1
  219. package/dist/diff.d.cts +0 -51
  220. package/dist/diff.d.cts.map +0 -1
  221. package/dist/diff.d.ts +0 -51
  222. package/dist/diff.d.ts.map +0 -1
  223. package/dist/diff.js +0 -334
  224. package/dist/diff.js.map +0 -1
  225. package/dist/error.cjs +0 -204
  226. package/dist/error.cjs.map +0 -1
  227. package/dist/error.d.cts +0 -212
  228. package/dist/error.d.cts.map +0 -1
  229. package/dist/error.d.ts +0 -212
  230. package/dist/error.d.ts.map +0 -1
  231. package/dist/error.js +0 -191
  232. package/dist/error.js.map +0 -1
  233. package/dist/expect.cjs +0 -590
  234. package/dist/expect.cjs.map +0 -1
  235. package/dist/expect.d.cts +0 -138
  236. package/dist/expect.d.cts.map +0 -1
  237. package/dist/expect.d.ts +0 -138
  238. package/dist/expect.d.ts.map +0 -1
  239. package/dist/expect.js +0 -582
  240. package/dist/expect.js.map +0 -1
  241. package/dist/guards.cjs +0 -297
  242. package/dist/guards.cjs.map +0 -1
  243. package/dist/guards.d.cts +0 -231
  244. package/dist/guards.d.cts.map +0 -1
  245. package/dist/guards.d.ts +0 -231
  246. package/dist/guards.d.ts.map +0 -1
  247. package/dist/guards.js +0 -277
  248. package/dist/guards.js.map +0 -1
  249. package/dist/index.cjs +0 -111
  250. package/dist/index.cjs.map +0 -1
  251. package/dist/index.d.cts +0 -448
  252. package/dist/index.d.cts.map +0 -1
  253. package/dist/index.d.ts +0 -448
  254. package/dist/index.d.ts.map +0 -1
  255. package/dist/index.js +0 -71
  256. package/dist/index.js.map +0 -1
  257. package/dist/internal-schema.cjs +0 -253
  258. package/dist/internal-schema.cjs.map +0 -1
  259. package/dist/internal-schema.d.cts +0 -8
  260. package/dist/internal-schema.d.cts.map +0 -1
  261. package/dist/internal-schema.d.ts +0 -8
  262. package/dist/internal-schema.d.ts.map +0 -1
  263. package/dist/internal-schema.js +0 -248
  264. package/dist/internal-schema.js.map +0 -1
  265. package/dist/metadata.cjs +0 -57
  266. package/dist/metadata.cjs.map +0 -1
  267. package/dist/metadata.d.cts +0 -27
  268. package/dist/metadata.d.cts.map +0 -1
  269. package/dist/metadata.d.ts +0 -27
  270. package/dist/metadata.d.ts.map +0 -1
  271. package/dist/metadata.js +0 -54
  272. package/dist/metadata.js.map +0 -1
  273. package/dist/schema.cjs +0 -1522
  274. package/dist/schema.cjs.map +0 -1
  275. package/dist/schema.d.cts +0 -1196
  276. package/dist/schema.d.cts.map +0 -1
  277. package/dist/schema.d.ts +0 -1196
  278. package/dist/schema.d.ts.map +0 -1
  279. package/dist/schema.js +0 -1516
  280. package/dist/schema.js.map +0 -1
  281. package/dist/snapshot/adapter.cjs +0 -31
  282. package/dist/snapshot/adapter.cjs.map +0 -1
  283. package/dist/snapshot/adapter.d.cts +0 -258
  284. package/dist/snapshot/adapter.d.cts.map +0 -1
  285. package/dist/snapshot/adapter.d.ts +0 -258
  286. package/dist/snapshot/adapter.d.ts.map +0 -1
  287. package/dist/snapshot/adapter.js +0 -27
  288. package/dist/snapshot/adapter.js.map +0 -1
  289. package/dist/snapshot/adapters/fallback.cjs +0 -453
  290. package/dist/snapshot/adapters/fallback.cjs.map +0 -1
  291. package/dist/snapshot/adapters/fallback.d.cts +0 -185
  292. package/dist/snapshot/adapters/fallback.d.cts.map +0 -1
  293. package/dist/snapshot/adapters/fallback.d.ts +0 -185
  294. package/dist/snapshot/adapters/fallback.d.ts.map +0 -1
  295. package/dist/snapshot/adapters/fallback.js +0 -446
  296. package/dist/snapshot/adapters/fallback.js.map +0 -1
  297. package/dist/snapshot/adapters/node-test.cjs +0 -301
  298. package/dist/snapshot/adapters/node-test.cjs.map +0 -1
  299. package/dist/snapshot/adapters/node-test.d.cts +0 -131
  300. package/dist/snapshot/adapters/node-test.d.cts.map +0 -1
  301. package/dist/snapshot/adapters/node-test.d.ts +0 -131
  302. package/dist/snapshot/adapters/node-test.d.ts.map +0 -1
  303. package/dist/snapshot/adapters/node-test.js +0 -297
  304. package/dist/snapshot/adapters/node-test.js.map +0 -1
  305. package/dist/snapshot/index.cjs +0 -61
  306. package/dist/snapshot/index.cjs.map +0 -1
  307. package/dist/snapshot/index.d.cts +0 -40
  308. package/dist/snapshot/index.d.cts.map +0 -1
  309. package/dist/snapshot/index.d.ts +0 -40
  310. package/dist/snapshot/index.d.ts.map +0 -1
  311. package/dist/snapshot/index.js +0 -44
  312. package/dist/snapshot/index.js.map +0 -1
  313. package/dist/snapshot/node-version.cjs +0 -49
  314. package/dist/snapshot/node-version.cjs.map +0 -1
  315. package/dist/snapshot/node-version.d.cts +0 -34
  316. package/dist/snapshot/node-version.d.cts.map +0 -1
  317. package/dist/snapshot/node-version.d.ts +0 -34
  318. package/dist/snapshot/node-version.d.ts.map +0 -1
  319. package/dist/snapshot/node-version.js +0 -44
  320. package/dist/snapshot/node-version.js.map +0 -1
  321. package/dist/snapshot/select-adapter.cjs +0 -170
  322. package/dist/snapshot/select-adapter.cjs.map +0 -1
  323. package/dist/snapshot/select-adapter.d.cts +0 -128
  324. package/dist/snapshot/select-adapter.d.cts.map +0 -1
  325. package/dist/snapshot/select-adapter.d.ts +0 -128
  326. package/dist/snapshot/select-adapter.d.ts.map +0 -1
  327. package/dist/snapshot/select-adapter.js +0 -164
  328. package/dist/snapshot/select-adapter.js.map +0 -1
  329. package/dist/snapshot/serializer.cjs +0 -246
  330. package/dist/snapshot/serializer.cjs.map +0 -1
  331. package/dist/snapshot/serializer.d.cts +0 -126
  332. package/dist/snapshot/serializer.d.cts.map +0 -1
  333. package/dist/snapshot/serializer.d.ts +0 -126
  334. package/dist/snapshot/serializer.d.ts.map +0 -1
  335. package/dist/snapshot/serializer.js +0 -238
  336. package/dist/snapshot/serializer.js.map +0 -1
  337. package/dist/standard-schema.cjs +0 -13
  338. package/dist/standard-schema.cjs.map +0 -1
  339. package/dist/standard-schema.d.cts +0 -192
  340. package/dist/standard-schema.d.cts.map +0 -1
  341. package/dist/standard-schema.d.ts +0 -192
  342. package/dist/standard-schema.d.ts.map +0 -1
  343. package/dist/standard-schema.js +0 -12
  344. package/dist/standard-schema.js.map +0 -1
  345. package/dist/types.cjs +0 -22
  346. package/dist/types.cjs.map +0 -1
  347. package/dist/types.d.cts +0 -905
  348. package/dist/types.d.cts.map +0 -1
  349. package/dist/types.d.ts +0 -905
  350. package/dist/types.d.ts.map +0 -1
  351. package/dist/types.js +0 -21
  352. package/dist/types.js.map +0 -1
  353. package/dist/use.cjs +0 -240
  354. package/dist/use.cjs.map +0 -1
  355. package/dist/use.d.cts +0 -8
  356. package/dist/use.d.cts.map +0 -1
  357. package/dist/use.d.ts +0 -8
  358. package/dist/use.d.ts.map +0 -1
  359. package/dist/use.js +0 -236
  360. package/dist/use.js.map +0 -1
  361. package/dist/util.cjs +0 -255
  362. package/dist/util.cjs.map +0 -1
  363. package/dist/util.d.cts +0 -141
  364. package/dist/util.d.cts.map +0 -1
  365. package/dist/util.d.ts +0 -141
  366. package/dist/util.d.ts.map +0 -1
  367. package/dist/util.js +0 -234
  368. package/dist/util.js.map +0 -1
  369. package/dist/value-to-schema.cjs +0 -537
  370. package/dist/value-to-schema.cjs.map +0 -1
  371. package/dist/value-to-schema.d.cts +0 -144
  372. package/dist/value-to-schema.d.cts.map +0 -1
  373. package/dist/value-to-schema.d.ts +0 -144
  374. package/dist/value-to-schema.d.ts.map +0 -1
  375. package/dist/value-to-schema.js +0 -533
  376. package/dist/value-to-schema.js.map +0 -1
package/dist/expect.cjs DELETED
@@ -1,590 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.createExpectAsyncFunction = createExpectAsyncFunction;
7
- exports.createExpectSyncFunction = createExpectSyncFunction;
8
- exports.createBaseExpect = createBaseExpect;
9
- const debug_1 = __importDefault(require("debug"));
10
- const util_1 = require("util");
11
- const create_js_1 = require("./assertion/create.cjs");
12
- const error_js_1 = require("./error.cjs");
13
- const guards_js_1 = require("./guards.cjs");
14
- const use_js_1 = require("./use.cjs");
15
- const debug = (0, debug_1.default)('bupkis:expect');
16
- /**
17
- * Implementation function that creates an asynchronous expect function with
18
- * optional parent inheritance.
19
- *
20
- * This is the concrete implementation that handles both overload cases for
21
- * Promise-based assertions. It creates an expectAsync function that uses a
22
- * two-phase matching algorithm: first seeking exact phrase matches for optimal
23
- * performance, then falling back to partial matches if needed. The function
24
- * processes negation keywords, combines parent assertions with new ones, and
25
- * ensures all operations are properly awaited.
26
- *
27
- * The matching algorithm prioritizes exact matches to minimize performance
28
- * overhead, but provides flexibility through partial matching when exact
29
- * phrases don't align. This enables natural language flexibility while
30
- * maintaining execution speed for common async assertion patterns.
31
- *
32
- * @remarks
33
- * The function performs async assertion matching in the following order:
34
- *
35
- * 1. Awaits `Promise.resolve()` to ensure the function is always asynchronous
36
- * 2. Processes negation keywords ('not', 'to not') to determine assertion mode
37
- * 3. Combines parent assertions (if provided) with new assertions in execution
38
- * order
39
- * 4. Attempts to parse arguments against each assertion's expected phrase pattern
40
- * using `parseValuesAsync`
41
- * 5. Prioritizes exact phrase matches over partial matches for performance
42
- * 6. Executes the first successful match using {@link executeAsync} or throws an
43
- * error if none found
44
- *
45
- * Performance considerations: The function loops through all available
46
- * assertions for each call, but uses early termination when exact matches are
47
- * found. For performance-critical code, consider using assertion functions with
48
- * fewer total assertions or more specific phrase patterns to reduce matching
49
- * overhead.
50
- *
51
- * All assertion execution is properly awaited to handle Promise-based
52
- * validation logic, error handling, and negation scenarios in asynchronous
53
- * contexts.
54
- * @example
55
- *
56
- * ```typescript
57
- * // Used internally by both public overloads
58
- * const expectAsync1 = createExpectAsyncFunction(assertions); // No parent
59
- * const expectAsync2 = createExpectAsyncFunction(assertions, parent); // With parent
60
- * ```
61
- *
62
- * @param assertions - Array of asynchronous assertion objects to make available
63
- * @param expect - Optional parent expectAsync function to inherit assertions
64
- * from
65
- * @returns Asynchronous expect function that processes natural language
66
- * assertions with Promise support
67
- * @throws {@link AssertionError} When an assertion fails in normal
68
- * (non-negated) mode
69
- * @throws {@link NegatedAssertionError} When a negated assertion fails (e.g.,
70
- * `await expectAsync(promise, 'not to resolve')`)
71
- * @throws {Error} When no matching assertion can be found for the provided
72
- * arguments
73
- * @internal This is the concrete implementation used by the public overloads
74
- * @see {@link createExpectSyncFunction} for creating synchronous expect functions
75
- * @see {@link createAsyncAssertion} for creating individual async assertion objects
76
- * @see {@link ExpectAsync} for the main expectAsync interface
77
- */
78
- function createExpectAsyncFunction(assertions, expect) {
79
- // Combine all assertions once at creation time
80
- const allAssertions = [
81
- ...(expect?.assertions ?? []),
82
- ...assertions,
83
- ];
84
- // Build phrase index for fast dispatch
85
- const phraseIndex = buildPhraseIndex(allAssertions);
86
- debug('ℹ Creating expectAsync function with %d new assertions and %d existing assertions (%d total, %d indexed phrases)', assertions.length, expect?.assertions.length ?? 0, allAssertions.length, phraseIndex.size);
87
- /**
88
- * @function
89
- */
90
- const expectAsyncFunction = async (...args) => {
91
- await Promise.resolve();
92
- const argsMatrix = conjunctify(args);
93
- // First, try all conjunctified argument sets
94
- let foundCount = 0;
95
- for (const args of argsMatrix) {
96
- const { isNegated, processedArgs } = maybeProcessNegation(args);
97
- const candidates = [];
98
- // Use phrase index for O(1) candidate lookup, fall back to full scan
99
- const assertionsToCheck = getCandidateAssertions(processedArgs, phraseIndex, allAssertions);
100
- for (const assertion of assertionsToCheck) {
101
- const parseResult = await assertion.parseValuesAsync(processedArgs);
102
- const { exactMatch, parsedValues, success } = parseResult;
103
- if (success) {
104
- if (exactMatch) {
105
- foundCount++;
106
- await executeAsync(assertion, parsedValues, [...args], expectAsyncFunction, isNegated, parseResult);
107
- break;
108
- }
109
- candidates.push({ assertion, parseResult });
110
- }
111
- }
112
- if (candidates.length) {
113
- const { assertion, parseResult } = candidates[0];
114
- foundCount++;
115
- await executeAsync(assertion,
116
- // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
117
- parseResult.parsedValues, [...args], expectAsyncFunction, isNegated, parseResult);
118
- }
119
- }
120
- if (foundCount >= argsMatrix.length) {
121
- return;
122
- }
123
- // Fallback: if all conjunctified attempts failed and we actually split on "and",
124
- // try different permutations of rejoining the split parts
125
- if (argsMatrix.length > 1) {
126
- const rejoinPermutations = generateRejoinPermutations(argsMatrix, args);
127
- for (const permutation of rejoinPermutations) {
128
- const { isNegated, processedArgs } = maybeProcessNegation(permutation);
129
- const candidates = [];
130
- // Use phrase index for O(1) candidate lookup, fall back to full scan
131
- const assertionsToCheck = getCandidateAssertions(processedArgs, phraseIndex, allAssertions);
132
- for (const assertion of assertionsToCheck) {
133
- const parseResult = await assertion.parseValuesAsync(processedArgs);
134
- const { exactMatch, parsedValues, success } = parseResult;
135
- if (success) {
136
- if (exactMatch) {
137
- await executeAsync(assertion, parsedValues, [...permutation], expectAsyncFunction, isNegated, parseResult);
138
- return;
139
- }
140
- candidates.push({ assertion, parseResult });
141
- }
142
- }
143
- if (candidates.length) {
144
- const { assertion, parseResult } = candidates[0];
145
- await executeAsync(assertion,
146
- // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
147
- parseResult.parsedValues, [...permutation], expectAsyncFunction, isNegated, parseResult);
148
- return;
149
- }
150
- }
151
- }
152
- throwInvalidParametersError(args);
153
- };
154
- return expectAsyncFunction;
155
- }
156
- /**
157
- * Implementation function that creates a synchronous expect function with
158
- * optional parent inheritance.
159
- *
160
- * This is the concrete implementation that handles both overload cases. It
161
- * creates an expect function that uses a two-phase matching algorithm: first
162
- * seeking exact phrase matches for optimal performance, then falling back to
163
- * partial matches if needed. The function processes negation keywords and
164
- * combines parent assertions with new ones.
165
- *
166
- * The matching algorithm prioritizes exact matches to minimize performance
167
- * overhead, but provides flexibility through partial matching when exact
168
- * phrases don't align. This enables natural language flexibility while
169
- * maintaining execution speed for common assertion patterns.
170
- *
171
- * @remarks
172
- * The function performs assertion matching in the following order:
173
- *
174
- * 1. Processes negation keywords ('not', 'to not') to determine assertion mode
175
- * 2. Combines parent assertions (if provided) with new assertions in execution
176
- * order
177
- * 3. Attempts to parse arguments against each assertion's expected phrase pattern
178
- * 4. Prioritizes exact phrase matches over partial matches for performance
179
- * 5. Executes the first successful match or throws an error if none found
180
- *
181
- * Performance considerations: The function loops through all available
182
- * assertions for each call, but uses early termination when exact matches are
183
- * found. For performance-critical code, consider using assertion functions with
184
- * fewer total assertions or more specific phrase patterns to reduce matching
185
- * overhead.
186
- * @example
187
- *
188
- * ```typescript
189
- * // Used internally by both public overloads
190
- * const expect1 = createExpectSyncFunction(assertions); // No parent
191
- * const expect2 = createExpectSyncFunction(assertions, parent); // With parent
192
- * ```
193
- *
194
- * @param assertions - Array of synchronous assertion objects to make available
195
- * @param expect - Optional parent expect function to inherit assertions from
196
- * @returns Synchronous expect function that processes natural language
197
- * assertions
198
- * @throws {@link AssertionError} When an assertion fails in normal
199
- * (non-negated) mode
200
- * @throws {@link NegatedAssertionError} When a negated assertion fails (e.g.,
201
- * `expect(42, 'not to be a number')`)
202
- * @throws {Error} When no matching assertion can be found for the provided
203
- * arguments
204
- * @internal This is the concrete implementation used by the public overloads
205
- * @see {@link createExpectAsyncFunction} for creating asynchronous expect functions
206
- * @see {@link createAssertion} for creating individual assertion objects
207
- * @see {@link Expect} for the main expect interface
208
- */
209
- function createExpectSyncFunction(assertions, expect) {
210
- // Combine all assertions once at creation time
211
- const allAssertions = [
212
- ...(expect?.assertions ?? []),
213
- ...assertions,
214
- ];
215
- // Build phrase index for fast dispatch
216
- const phraseIndex = buildPhraseIndex(allAssertions);
217
- debug('ℹ Creating expect function with %d new assertions and %d existing assertions (%d total, %d indexed phrases)', assertions.length, expect?.assertions.length ?? 0, allAssertions.length, phraseIndex.size);
218
- /**
219
- * @function
220
- */
221
- const expectFunction = (...args) => {
222
- const argsMatrix = conjunctify(args);
223
- // First, try all conjunctified argument sets
224
- let foundCount = 0;
225
- for (const args of argsMatrix) {
226
- const { isNegated, processedArgs } = maybeProcessNegation(args);
227
- const candidates = [];
228
- // Use phrase index for O(1) candidate lookup, fall back to full scan
229
- const assertionsToCheck = getCandidateAssertions(processedArgs, phraseIndex, allAssertions);
230
- for (const assertion of assertionsToCheck) {
231
- const parseResult = assertion.parseValues(processedArgs);
232
- const { exactMatch, parsedValues, success } = parseResult;
233
- if (success) {
234
- if (exactMatch) {
235
- foundCount++;
236
- execute(assertion, parsedValues, [...args], expectFunction, isNegated, parseResult);
237
- break;
238
- }
239
- candidates.push({ assertion, parseResult });
240
- }
241
- }
242
- if (candidates.length) {
243
- const { assertion, parseResult } = candidates[0];
244
- foundCount++;
245
- execute(assertion,
246
- // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
247
- parseResult.parsedValues, [...args], expectFunction, isNegated, parseResult);
248
- }
249
- }
250
- if (foundCount >= argsMatrix.length) {
251
- return;
252
- }
253
- // Fallback: if all conjunctified attempts failed and we actually split on "and",
254
- // try different permutations of rejoining the split parts
255
- if (argsMatrix.length > 1) {
256
- const rejoinPermutations = generateRejoinPermutations(argsMatrix, args);
257
- for (const permutation of rejoinPermutations) {
258
- const { isNegated, processedArgs } = maybeProcessNegation(permutation);
259
- const candidates = [];
260
- // Use phrase index for O(1) candidate lookup, fall back to full scan
261
- const assertionsToCheck = getCandidateAssertions(processedArgs, phraseIndex, allAssertions);
262
- for (const assertion of assertionsToCheck) {
263
- const parseResult = assertion.parseValues(processedArgs);
264
- const { exactMatch, parsedValues, success } = parseResult;
265
- if (success) {
266
- if (exactMatch) {
267
- execute(assertion, parsedValues, [...permutation], expectFunction, isNegated, parseResult);
268
- return;
269
- }
270
- candidates.push({ assertion, parseResult });
271
- }
272
- }
273
- if (candidates.length) {
274
- const { assertion, parseResult } = candidates[0];
275
- execute(assertion,
276
- // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
277
- parseResult.parsedValues, [...permutation], expectFunction, isNegated, parseResult);
278
- return;
279
- }
280
- }
281
- }
282
- throwInvalidParametersError(args);
283
- };
284
- return expectFunction;
285
- }
286
- /**
287
- * Executes an assertion with optional negation logic.
288
- *
289
- * @privateRemarks
290
- * This is here because `Assertion` doesn't know anything about negation and
291
- * probably shouldn't.
292
- * @function
293
- * @param assertion - The assertion to execute
294
- * @param parsedValues - Parsed values for the assertion
295
- * @param args - Original arguments passed to expect
296
- * @param stackStartFn - Function for stack trace management
297
- * @param isNegated - Whether the assertion should be negated
298
- */
299
- const execute = (assertion, parsedValues, args, stackStartFn, isNegated, parseResult) => {
300
- try {
301
- assertion.execute(parsedValues, args, stackStartFn, parseResult);
302
- }
303
- catch (error) {
304
- handleAssertionError(error, assertion, isNegated);
305
- return;
306
- }
307
- if (isNegated) {
308
- throwNegatedAssertionPassedError(assertion, stackStartFn);
309
- }
310
- };
311
- /**
312
- * Executes an assertion with optional negation logic (async version).
313
- *
314
- * @privateRemarks
315
- * This is here because `Assertion` doesn't know anything about negation and
316
- * probably shouldn't.
317
- * @function
318
- * @param assertion - The assertion to execute
319
- * @param parsedValues - Parsed values for the assertion
320
- * @param args - Original arguments passed to expectAsync
321
- * @param stackStartFn - Function for stack trace management
322
- * @param isNegated - Whether the assertion should be negated
323
- */
324
- const executeAsync = async (assertion, parsedValues, args, stackStartFn, isNegated, parseResult) => {
325
- try {
326
- await assertion.executeAsync(parsedValues, args, stackStartFn, parseResult);
327
- }
328
- catch (error) {
329
- handleAssertionError(error, assertion, isNegated);
330
- return;
331
- }
332
- if (isNegated) {
333
- throwNegatedAssertionPassedError(assertion, stackStartFn);
334
- }
335
- };
336
- /**
337
- * Handles errors thrown during assertion execution.
338
- *
339
- * @function
340
- * @param error - The error that was thrown
341
- * @param assertion - The assertion that threw the error
342
- * @param isNegated - Whether the assertion was negated
343
- * @returns Void if error should be swallowed (negated assertion success)
344
- * @throws The original error if it's an AssertionError (non-negated case)
345
- * @throws AssertionImplementationError if error is unexpected
346
- */
347
- const handleAssertionError = (error, assertion, isNegated) => {
348
- if (error_js_1.AssertionError.isAssertionError(error)) {
349
- if (isNegated) {
350
- return;
351
- }
352
- throw error;
353
- }
354
- if (error_js_1.AssertionImplementationError.isAssertionImplementationError(error)) {
355
- throw error;
356
- }
357
- throw new error_js_1.AssertionImplementationError(`Assertion ${assertion} threw a non-AssertionError`, { cause: error });
358
- };
359
- /**
360
- * Throws a NegatedAssertionError when a negated assertion unexpectedly passes.
361
- *
362
- * @function
363
- * @param assertion - The assertion that passed
364
- * @param stackStartFn - Function for stack trace management
365
- */
366
- const throwNegatedAssertionPassedError = (assertion, stackStartFn) => {
367
- throw new error_js_1.NegatedAssertionError({
368
- id: assertion.id,
369
- message: `Expected assertion ${assertion} to fail (due to negation), but it passed`,
370
- stackStartFn,
371
- });
372
- };
373
- /**
374
- * Processes negation keywords in the arguments and returns whether negation is
375
- * requested along with arguments stripped of the leading negation (to enable
376
- * assertion matching).
377
- *
378
- * @function
379
- * @internal
380
- */
381
- const maybeProcessNegation = (args) => {
382
- let isNegated = false;
383
- let processedArgs = args;
384
- // note: args[1] should always be a string
385
- if (args.length >= 2 && (0, guards_js_1.isString)(args[1])) {
386
- const { cleanedPhrase, isNegated: detected } = detectNegation(args[1]);
387
- if (detected) {
388
- isNegated = true;
389
- processedArgs = [args[0], cleanedPhrase, ...args.slice(2)];
390
- }
391
- }
392
- return { isNegated, processedArgs };
393
- };
394
- /**
395
- * Given some args, create a matrix of args based on the presence of the
396
- * conjunction operator ("and").
397
- *
398
- * If no "and" is present, returns the original args wrapped in an array.
399
- *
400
- * @function
401
- */
402
- const conjunctify = (args) => {
403
- let argsMatrix = [args];
404
- if (args.length >= 2) {
405
- // partition args by the string "and"; there may be multiple "and"s
406
- const andIndices = args
407
- .map((arg, index) => (arg === 'and' ? index : -1))
408
- .filter((index) => index !== -1);
409
- if (andIndices.length > 0) {
410
- const parts = [];
411
- let lastIndex = 0;
412
- for (const andIndex of andIndices) {
413
- const partsArgs = lastIndex > 0
414
- ? [args[0], ...args.slice(lastIndex, andIndex)]
415
- : [...args.slice(lastIndex, andIndex)];
416
- parts.push(partsArgs);
417
- lastIndex = andIndex + 1;
418
- }
419
- const finalPartsArgs = [args[0], ...args.slice(lastIndex)];
420
- parts.push(finalPartsArgs);
421
- argsMatrix = parts;
422
- }
423
- }
424
- return argsMatrix;
425
- };
426
- /**
427
- * Generates all possible ways to rejoin args that were split on "and".
428
- *
429
- * This is used as a fallback when conjunctified attempts fail - we try
430
- * different permutations of rejoining the split parts to handle assertions that
431
- * use "and" as part of their phrase (e.g., "to be greater than X and less than
432
- * Y").
433
- *
434
- * @function
435
- * @param argsMatrix The matrix of split arguments
436
- * @param originalArgs The original unsplit arguments
437
- * @returns Array of permutations to try
438
- * @internal
439
- */
440
- const generateRejoinPermutations = (argsMatrix, originalArgs) => {
441
- const permutations = [];
442
- for (let i = 0; i < argsMatrix.length - 1; i++) {
443
- const rejoinedParts = [];
444
- // Add parts before the join point
445
- for (let j = 0; j < i; j++) {
446
- rejoinedParts.push([...argsMatrix[j]]);
447
- }
448
- // Join the two parts at the split point
449
- const leftPart = argsMatrix[i];
450
- const rightPart = argsMatrix[i + 1];
451
- const joinedPart = [...leftPart, 'and', ...rightPart.slice(1)];
452
- rejoinedParts.push(joinedPart);
453
- // Add parts after the join point
454
- for (let j = i + 2; j < argsMatrix.length; j++) {
455
- rejoinedParts.push([...argsMatrix[j]]);
456
- }
457
- if (rejoinedParts.length === 1) {
458
- permutations.push(rejoinedParts[0]);
459
- }
460
- else {
461
- for (const part of rejoinedParts) {
462
- permutations.push(part);
463
- }
464
- }
465
- }
466
- // Also try the original unsplit arguments as the final permutation
467
- permutations.push(originalArgs);
468
- return permutations;
469
- };
470
- /**
471
- * Builds a phrase-keyed index for fast assertion dispatch.
472
- *
473
- * Maps phrase literals to the assertions that use them, enabling O(1) lookup
474
- * instead of O(n) iteration over all assertions during dispatch.
475
- *
476
- * @function
477
- * @param assertions - Array of assertions to index
478
- * @returns Map from phrase string to array of assertions using that phrase
479
- */
480
- const buildPhraseIndex = (assertions) => {
481
- const index = new Map();
482
- for (const assertion of assertions) {
483
- const phrases = assertion.getIndexPhrases();
484
- for (const phrase of phrases) {
485
- const existing = index.get(phrase);
486
- if (existing) {
487
- existing.push(assertion);
488
- }
489
- else {
490
- index.set(phrase, [assertion]);
491
- }
492
- }
493
- }
494
- return index;
495
- };
496
- /**
497
- * Extracts the phrase from processed arguments for index lookup.
498
- *
499
- * Looks at position 1 (subject-first assertions) and position 0 (phrase-first).
500
- * Returns the first string found, or undefined if no phrase is present.
501
- *
502
- * @function
503
- * @param args - Processed arguments (after negation handling)
504
- * @returns The phrase string if found, undefined otherwise
505
- */
506
- const extractPhraseFromArgs = (args) => {
507
- // Most common: subject at 0, phrase at 1
508
- if (args.length > 1 && (0, guards_js_1.isString)(args[1])) {
509
- return args[1];
510
- }
511
- // Less common: phrase at 0
512
- if (args.length > 0 && (0, guards_js_1.isString)(args[0])) {
513
- return args[0];
514
- }
515
- return undefined;
516
- };
517
- /**
518
- * Gets candidate assertions for dispatch using phrase index lookup.
519
- *
520
- * Extracts the phrase from processed arguments and looks it up in the phrase
521
- * index for O(1) candidate retrieval. Falls back to the full assertion list if
522
- * no phrase is found or the phrase isn't indexed.
523
- *
524
- * @function
525
- * @param processedArgs - Arguments after negation processing
526
- * @param phraseIndex - Map from phrase strings to assertion arrays
527
- * @param allAssertions - Complete assertion list for fallback
528
- * @returns Array of candidate assertions to check
529
- */
530
- const getCandidateAssertions = (processedArgs, phraseIndex, allAssertions) => {
531
- const phrase = extractPhraseFromArgs(processedArgs);
532
- return ((phrase !== undefined ? phraseIndex.get(phrase) : undefined) ??
533
- allAssertions);
534
- };
535
- /**
536
- * Throws an error indicating that no valid assertion could be found for the
537
- * provided arguments.
538
- *
539
- * @function
540
- * @param args The arguments that were passed to the expect function
541
- * @internal
542
- */
543
- const throwInvalidParametersError = (args) => {
544
- const inspectedArgs = (0, util_1.inspect)(args, { depth: 1 });
545
- debug('Invalid arguments. No assertion matched: %s', inspectedArgs);
546
- throw new error_js_1.UnknownAssertionError(`Invalid arguments. No assertion matched: ${inspectedArgs}`, { args });
547
- };
548
- /**
549
- * Detects if an assertion phrase starts with "not " and returns the cleaned
550
- * phrase.
551
- *
552
- * @function
553
- * @param phrase - The assertion phrase to check
554
- * @returns Object with `isNegated` flag and `cleanedPhrase`
555
- */
556
- const detectNegation = (phrase) => {
557
- if (phrase.startsWith('not ')) {
558
- return {
559
- cleanedPhrase: phrase.substring(4), // Remove "not "
560
- isNegated: true,
561
- };
562
- }
563
- return {
564
- cleanedPhrase: phrase,
565
- isNegated: false,
566
- };
567
- };
568
- /**
569
- * {@inheritDoc FailFn}
570
- *
571
- * @function
572
- */
573
- const fail = (reason) => {
574
- throw new error_js_1.FailAssertionError({ message: reason });
575
- };
576
- /**
577
- * Used by a {@link UseFn} to create base properties of {@link Expect} or
578
- * {@link ExpectAsync}.
579
- */
580
- function createBaseExpect(syncAssertions, asyncAssertions, type) {
581
- const assertions = type === 'sync' ? syncAssertions : asyncAssertions;
582
- return {
583
- assertions,
584
- createAssertion: create_js_1.createAssertion,
585
- createAsyncAssertion: create_js_1.createAsyncAssertion,
586
- fail,
587
- use: (0, use_js_1.createUse)(syncAssertions, asyncAssertions),
588
- };
589
- }
590
- //# sourceMappingURL=expect.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"expect.js","sourceRoot":"","sources":["../src/expect.ts"],"names":[],"mappings":"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"}