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
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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"}