@vielzeug/arsenal 3.0.0 → 26.10.1

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 (518) hide show
  1. package/README.md +2 -2
  2. package/dist/_common/_lruMap.cjs +1 -1
  3. package/dist/_common/_lruMap.cjs.map +1 -1
  4. package/dist/_common/_lruMap.d.ts +1 -1
  5. package/dist/_common/_lruMap.js +1 -17
  6. package/dist/_common/_lruMap.js.map +1 -1
  7. package/dist/_common/_selectorSet.cjs +1 -1
  8. package/dist/_common/_selectorSet.cjs.map +1 -1
  9. package/dist/_common/_selectorSet.js +1 -15
  10. package/dist/_common/_selectorSet.js.map +1 -1
  11. package/dist/_common/unsafePaths.cjs +1 -1
  12. package/dist/_common/unsafePaths.cjs.map +1 -1
  13. package/dist/_common/unsafePaths.d.ts +1 -1
  14. package/dist/_common/unsafePaths.js +1 -12
  15. package/dist/_common/unsafePaths.js.map +1 -1
  16. package/dist/_dev.cjs +1 -1
  17. package/dist/_dev.cjs.map +1 -1
  18. package/dist/_dev.js +1 -5
  19. package/dist/_dev.js.map +1 -1
  20. package/dist/array/chunk.cjs +1 -1
  21. package/dist/array/chunk.cjs.map +1 -1
  22. package/dist/array/chunk.js +1 -9
  23. package/dist/array/chunk.js.map +1 -1
  24. package/dist/array/compact.cjs +1 -1
  25. package/dist/array/compact.cjs.map +1 -1
  26. package/dist/array/compact.js +1 -7
  27. package/dist/array/compact.js.map +1 -1
  28. package/dist/array/compare.cjs +1 -1
  29. package/dist/array/compare.cjs.map +1 -1
  30. package/dist/array/compare.js +1 -18
  31. package/dist/array/compare.js.map +1 -1
  32. package/dist/array/compareBy.cjs +1 -1
  33. package/dist/array/compareBy.cjs.map +1 -1
  34. package/dist/array/compareBy.js +1 -15
  35. package/dist/array/compareBy.js.map +1 -1
  36. package/dist/array/contains.cjs +1 -1
  37. package/dist/array/contains.cjs.map +1 -1
  38. package/dist/array/contains.js +1 -8
  39. package/dist/array/contains.js.map +1 -1
  40. package/dist/array/countBy.cjs +1 -1
  41. package/dist/array/countBy.cjs.map +1 -1
  42. package/dist/array/countBy.js +1 -13
  43. package/dist/array/countBy.js.map +1 -1
  44. package/dist/array/difference.cjs +1 -1
  45. package/dist/array/difference.cjs.map +1 -1
  46. package/dist/array/difference.js +1 -13
  47. package/dist/array/difference.js.map +1 -1
  48. package/dist/array/drop.cjs +1 -1
  49. package/dist/array/drop.cjs.map +1 -1
  50. package/dist/array/drop.js +1 -8
  51. package/dist/array/drop.js.map +1 -1
  52. package/dist/array/dropLast.cjs +1 -1
  53. package/dist/array/dropLast.cjs.map +1 -1
  54. package/dist/array/dropLast.js +1 -8
  55. package/dist/array/dropLast.js.map +1 -1
  56. package/dist/array/filterMap.cjs +1 -1
  57. package/dist/array/filterMap.cjs.map +1 -1
  58. package/dist/array/filterMap.js +1 -12
  59. package/dist/array/filterMap.js.map +1 -1
  60. package/dist/array/first.cjs +1 -1
  61. package/dist/array/first.cjs.map +1 -1
  62. package/dist/array/first.js +1 -7
  63. package/dist/array/first.js.map +1 -1
  64. package/dist/array/groupBy.cjs +1 -1
  65. package/dist/array/groupBy.cjs.map +1 -1
  66. package/dist/array/groupBy.js +1 -13
  67. package/dist/array/groupBy.js.map +1 -1
  68. package/dist/array/index.js +1 -28
  69. package/dist/array/indexBy.cjs +1 -1
  70. package/dist/array/indexBy.cjs.map +1 -1
  71. package/dist/array/indexBy.js +1 -13
  72. package/dist/array/indexBy.js.map +1 -1
  73. package/dist/array/intersection.cjs +1 -1
  74. package/dist/array/intersection.cjs.map +1 -1
  75. package/dist/array/intersection.js +1 -13
  76. package/dist/array/intersection.js.map +1 -1
  77. package/dist/array/last.cjs +1 -1
  78. package/dist/array/last.cjs.map +1 -1
  79. package/dist/array/last.js +1 -7
  80. package/dist/array/last.js.map +1 -1
  81. package/dist/array/partition.cjs +1 -1
  82. package/dist/array/partition.cjs.map +1 -1
  83. package/dist/array/partition.js +1 -9
  84. package/dist/array/partition.js.map +1 -1
  85. package/dist/array/replace.cjs +1 -1
  86. package/dist/array/replace.cjs.map +1 -1
  87. package/dist/array/replace.js +1 -12
  88. package/dist/array/replace.js.map +1 -1
  89. package/dist/array/rotate.cjs +1 -1
  90. package/dist/array/rotate.cjs.map +1 -1
  91. package/dist/array/rotate.js +1 -9
  92. package/dist/array/rotate.js.map +1 -1
  93. package/dist/array/search.cjs +1 -1
  94. package/dist/array/search.cjs.map +1 -1
  95. package/dist/array/search.js +1 -29
  96. package/dist/array/search.js.map +1 -1
  97. package/dist/array/sort.cjs +1 -1
  98. package/dist/array/sort.cjs.map +1 -1
  99. package/dist/array/sort.d.ts +1 -1
  100. package/dist/array/sort.js +1 -14
  101. package/dist/array/sort.js.map +1 -1
  102. package/dist/array/take.cjs +1 -1
  103. package/dist/array/take.cjs.map +1 -1
  104. package/dist/array/take.js +1 -8
  105. package/dist/array/take.js.map +1 -1
  106. package/dist/array/takeLast.cjs +1 -1
  107. package/dist/array/takeLast.cjs.map +1 -1
  108. package/dist/array/takeLast.js +1 -8
  109. package/dist/array/takeLast.js.map +1 -1
  110. package/dist/array/toggle.cjs +1 -1
  111. package/dist/array/toggle.cjs.map +1 -1
  112. package/dist/array/toggle.js +1 -8
  113. package/dist/array/toggle.js.map +1 -1
  114. package/dist/array/union.cjs +1 -1
  115. package/dist/array/union.cjs.map +1 -1
  116. package/dist/array/union.js +1 -8
  117. package/dist/array/union.js.map +1 -1
  118. package/dist/array/uniq.cjs +1 -1
  119. package/dist/array/uniq.cjs.map +1 -1
  120. package/dist/array/uniq.js +1 -8
  121. package/dist/array/uniq.js.map +1 -1
  122. package/dist/array/unzip.cjs +1 -1
  123. package/dist/array/unzip.cjs.map +1 -1
  124. package/dist/array/unzip.js +1 -10
  125. package/dist/array/unzip.js.map +1 -1
  126. package/dist/array/zip.cjs +1 -1
  127. package/dist/array/zip.cjs.map +1 -1
  128. package/dist/array/zip.js +1 -10
  129. package/dist/array/zip.js.map +1 -1
  130. package/dist/arsenal.cjs +1 -1
  131. package/dist/arsenal.cjs.map +1 -1
  132. package/dist/arsenal.iife.js +1 -1
  133. package/dist/arsenal.iife.js.map +1 -1
  134. package/dist/arsenal.js +1 -1
  135. package/dist/arsenal.js.map +1 -1
  136. package/dist/async/abortError.cjs +1 -1
  137. package/dist/async/abortError.cjs.map +1 -1
  138. package/dist/async/abortError.js +1 -7
  139. package/dist/async/abortError.js.map +1 -1
  140. package/dist/async/abortable.cjs +1 -1
  141. package/dist/async/abortable.cjs.map +1 -1
  142. package/dist/async/abortable.d.ts +1 -1
  143. package/dist/async/abortable.js +1 -11
  144. package/dist/async/abortable.js.map +1 -1
  145. package/dist/async/attempt.cjs +1 -1
  146. package/dist/async/attempt.cjs.map +1 -1
  147. package/dist/async/attempt.d.ts +1 -1
  148. package/dist/async/attempt.js +1 -23
  149. package/dist/async/attempt.js.map +1 -1
  150. package/dist/async/backoff.cjs +1 -1
  151. package/dist/async/backoff.cjs.map +1 -1
  152. package/dist/async/backoff.d.ts +1 -1
  153. package/dist/async/backoff.js +1 -7
  154. package/dist/async/backoff.js.map +1 -1
  155. package/dist/async/index.js +1 -10
  156. package/dist/async/parallel.cjs +1 -1
  157. package/dist/async/parallel.cjs.map +1 -1
  158. package/dist/async/parallel.js +1 -24
  159. package/dist/async/parallel.js.map +1 -1
  160. package/dist/async/retry.cjs +1 -1
  161. package/dist/async/retry.cjs.map +1 -1
  162. package/dist/async/retry.d.ts +5 -7
  163. package/dist/async/retry.d.ts.map +1 -1
  164. package/dist/async/retry.js +1 -24
  165. package/dist/async/retry.js.map +1 -1
  166. package/dist/async/sleep.cjs +1 -1
  167. package/dist/async/sleep.cjs.map +1 -1
  168. package/dist/async/sleep.js +1 -15
  169. package/dist/async/sleep.js.map +1 -1
  170. package/dist/async/taskPool.cjs +1 -1
  171. package/dist/async/taskPool.cjs.map +1 -1
  172. package/dist/async/taskPool.js +1 -50
  173. package/dist/async/taskPool.js.map +1 -1
  174. package/dist/async/waitFor.cjs +1 -1
  175. package/dist/async/waitFor.cjs.map +1 -1
  176. package/dist/async/waitFor.js +1 -12
  177. package/dist/async/waitFor.js.map +1 -1
  178. package/dist/cache/cache.cjs +1 -1
  179. package/dist/cache/cache.cjs.map +1 -1
  180. package/dist/cache/cache.js +1 -59
  181. package/dist/cache/cache.js.map +1 -1
  182. package/dist/cache/index.js +1 -3
  183. package/dist/cache/memo.cjs +1 -1
  184. package/dist/cache/memo.cjs.map +1 -1
  185. package/dist/cache/memo.d.ts +1 -1
  186. package/dist/cache/memo.js +1 -37
  187. package/dist/cache/memo.js.map +1 -1
  188. package/dist/encoding/base64url.cjs +2 -0
  189. package/dist/encoding/base64url.cjs.map +1 -0
  190. package/dist/encoding/base64url.d.ts +9 -0
  191. package/dist/encoding/base64url.d.ts.map +1 -0
  192. package/dist/encoding/base64url.js +2 -0
  193. package/dist/encoding/base64url.js.map +1 -0
  194. package/dist/encoding/index.cjs +1 -0
  195. package/dist/encoding/index.d.ts +2 -0
  196. package/dist/encoding/index.d.ts.map +1 -0
  197. package/dist/encoding/index.js +1 -0
  198. package/dist/errors.cjs +1 -1
  199. package/dist/errors.cjs.map +1 -1
  200. package/dist/errors.d.ts +1 -1
  201. package/dist/errors.js +1 -9
  202. package/dist/errors.js.map +1 -1
  203. package/dist/function/assert.cjs +1 -1
  204. package/dist/function/assert.cjs.map +1 -1
  205. package/dist/function/assert.d.ts +1 -0
  206. package/dist/function/assert.d.ts.map +1 -1
  207. package/dist/function/assert.js +1 -7
  208. package/dist/function/assert.js.map +1 -1
  209. package/dist/function/debounce.cjs +1 -1
  210. package/dist/function/debounce.cjs.map +1 -1
  211. package/dist/function/debounce.d.ts +2 -2
  212. package/dist/function/debounce.js +1 -26
  213. package/dist/function/debounce.js.map +1 -1
  214. package/dist/function/index.cjs +1 -1
  215. package/dist/function/index.d.ts +1 -0
  216. package/dist/function/index.d.ts.map +1 -1
  217. package/dist/function/index.js +1 -8
  218. package/dist/function/once.cjs +1 -1
  219. package/dist/function/once.cjs.map +1 -1
  220. package/dist/function/once.d.ts +3 -3
  221. package/dist/function/once.js +1 -10
  222. package/dist/function/once.js.map +1 -1
  223. package/dist/function/pipe.cjs +1 -1
  224. package/dist/function/pipe.cjs.map +1 -1
  225. package/dist/function/pipe.d.ts +1 -1
  226. package/dist/function/pipe.js +1 -9
  227. package/dist/function/pipe.js.map +1 -1
  228. package/dist/function/runAll.cjs +1 -1
  229. package/dist/function/runAll.cjs.map +1 -1
  230. package/dist/function/runAll.js +1 -18
  231. package/dist/function/runAll.js.map +1 -1
  232. package/dist/function/tap.cjs +1 -1
  233. package/dist/function/tap.cjs.map +1 -1
  234. package/dist/function/tap.js +1 -7
  235. package/dist/function/tap.js.map +1 -1
  236. package/dist/function/tapper.cjs +2 -0
  237. package/dist/function/tapper.cjs.map +1 -0
  238. package/dist/function/tapper.d.ts +27 -0
  239. package/dist/function/tapper.d.ts.map +1 -0
  240. package/dist/function/tapper.js +2 -0
  241. package/dist/function/tapper.js.map +1 -0
  242. package/dist/function/throttle.cjs +1 -1
  243. package/dist/function/throttle.cjs.map +1 -1
  244. package/dist/function/throttle.js +1 -35
  245. package/dist/function/throttle.js.map +1 -1
  246. package/dist/guards/combinators.cjs +1 -1
  247. package/dist/guards/combinators.cjs.map +1 -1
  248. package/dist/guards/combinators.d.ts +1 -1
  249. package/dist/guards/combinators.js +1 -16
  250. package/dist/guards/combinators.js.map +1 -1
  251. package/dist/guards/index.js +1 -17
  252. package/dist/guards/isAbortError.cjs +1 -1
  253. package/dist/guards/isAbortError.cjs.map +1 -1
  254. package/dist/guards/isAbortError.d.ts +2 -2
  255. package/dist/guards/isAbortError.js +1 -7
  256. package/dist/guards/isAbortError.js.map +1 -1
  257. package/dist/guards/isDate.cjs +1 -1
  258. package/dist/guards/isDate.cjs.map +1 -1
  259. package/dist/guards/isDate.js +1 -7
  260. package/dist/guards/isDate.js.map +1 -1
  261. package/dist/guards/isDefined.cjs +1 -1
  262. package/dist/guards/isDefined.cjs.map +1 -1
  263. package/dist/guards/isDefined.js +1 -7
  264. package/dist/guards/isDefined.js.map +1 -1
  265. package/dist/guards/isEmpty.cjs +1 -1
  266. package/dist/guards/isEmpty.cjs.map +1 -1
  267. package/dist/guards/isEmpty.js +1 -8
  268. package/dist/guards/isEmpty.js.map +1 -1
  269. package/dist/guards/isEqual.cjs +1 -1
  270. package/dist/guards/isEqual.cjs.map +1 -1
  271. package/dist/guards/isEqual.d.ts +1 -1
  272. package/dist/guards/isEqual.js +1 -33
  273. package/dist/guards/isEqual.js.map +1 -1
  274. package/dist/guards/isError.cjs +1 -1
  275. package/dist/guards/isError.cjs.map +1 -1
  276. package/dist/guards/isError.js +1 -7
  277. package/dist/guards/isError.js.map +1 -1
  278. package/dist/guards/isFunction.cjs +1 -1
  279. package/dist/guards/isFunction.cjs.map +1 -1
  280. package/dist/guards/isFunction.js +1 -7
  281. package/dist/guards/isFunction.js.map +1 -1
  282. package/dist/guards/isMatch.cjs +1 -1
  283. package/dist/guards/isMatch.cjs.map +1 -1
  284. package/dist/guards/isMatch.js +1 -22
  285. package/dist/guards/isMatch.js.map +1 -1
  286. package/dist/guards/isNil.cjs +1 -1
  287. package/dist/guards/isNil.cjs.map +1 -1
  288. package/dist/guards/isNil.js +1 -7
  289. package/dist/guards/isNil.js.map +1 -1
  290. package/dist/guards/isNumber.cjs +1 -1
  291. package/dist/guards/isNumber.cjs.map +1 -1
  292. package/dist/guards/isNumber.js +1 -7
  293. package/dist/guards/isNumber.js.map +1 -1
  294. package/dist/guards/isPlainObject.cjs +1 -1
  295. package/dist/guards/isPlainObject.cjs.map +1 -1
  296. package/dist/guards/isPlainObject.d.ts +1 -1
  297. package/dist/guards/isPlainObject.js +1 -9
  298. package/dist/guards/isPlainObject.js.map +1 -1
  299. package/dist/guards/isPrimitive.cjs +1 -1
  300. package/dist/guards/isPrimitive.cjs.map +1 -1
  301. package/dist/guards/isPrimitive.js +1 -7
  302. package/dist/guards/isPrimitive.js.map +1 -1
  303. package/dist/guards/isPromise.cjs +1 -1
  304. package/dist/guards/isPromise.cjs.map +1 -1
  305. package/dist/guards/isPromise.js +1 -7
  306. package/dist/guards/isPromise.js.map +1 -1
  307. package/dist/guards/isRegex.cjs +1 -1
  308. package/dist/guards/isRegex.cjs.map +1 -1
  309. package/dist/guards/isRegex.js +1 -7
  310. package/dist/guards/isRegex.js.map +1 -1
  311. package/dist/guards/shallowEqual.cjs +1 -1
  312. package/dist/guards/shallowEqual.cjs.map +1 -1
  313. package/dist/guards/shallowEqual.d.ts +3 -3
  314. package/dist/guards/shallowEqual.js +1 -19
  315. package/dist/guards/shallowEqual.js.map +1 -1
  316. package/dist/index.cjs +1 -1
  317. package/dist/index.d.ts +7 -0
  318. package/dist/index.d.ts.map +1 -1
  319. package/dist/index.js +1 -35
  320. package/dist/math/allocate.cjs +1 -1
  321. package/dist/math/allocate.cjs.map +1 -1
  322. package/dist/math/allocate.js +1 -18
  323. package/dist/math/allocate.js.map +1 -1
  324. package/dist/math/average.cjs +1 -1
  325. package/dist/math/average.cjs.map +1 -1
  326. package/dist/math/average.js +1 -8
  327. package/dist/math/average.js.map +1 -1
  328. package/dist/math/clamp.cjs +1 -1
  329. package/dist/math/clamp.cjs.map +1 -1
  330. package/dist/math/clamp.d.ts +6 -6
  331. package/dist/math/clamp.js +1 -7
  332. package/dist/math/clamp.js.map +1 -1
  333. package/dist/math/gcd.cjs +1 -1
  334. package/dist/math/gcd.cjs.map +1 -1
  335. package/dist/math/gcd.d.ts +1 -1
  336. package/dist/math/gcd.js +1 -13
  337. package/dist/math/gcd.js.map +1 -1
  338. package/dist/math/index.js +1 -16
  339. package/dist/math/lcm.cjs +1 -1
  340. package/dist/math/lcm.cjs.map +1 -1
  341. package/dist/math/lcm.js +1 -12
  342. package/dist/math/lcm.js.map +1 -1
  343. package/dist/math/lerp.cjs +1 -1
  344. package/dist/math/lerp.cjs.map +1 -1
  345. package/dist/math/lerp.d.ts +1 -1
  346. package/dist/math/lerp.js +1 -7
  347. package/dist/math/lerp.js.map +1 -1
  348. package/dist/math/linspace.cjs +1 -1
  349. package/dist/math/linspace.cjs.map +1 -1
  350. package/dist/math/linspace.js +1 -11
  351. package/dist/math/linspace.js.map +1 -1
  352. package/dist/math/median.cjs +1 -1
  353. package/dist/math/median.cjs.map +1 -1
  354. package/dist/math/median.js +1 -11
  355. package/dist/math/median.js.map +1 -1
  356. package/dist/math/mod.cjs +1 -1
  357. package/dist/math/mod.cjs.map +1 -1
  358. package/dist/math/mod.d.ts +1 -1
  359. package/dist/math/mod.js +1 -8
  360. package/dist/math/mod.js.map +1 -1
  361. package/dist/math/normalize.cjs +1 -1
  362. package/dist/math/normalize.cjs.map +1 -1
  363. package/dist/math/normalize.js +1 -8
  364. package/dist/math/normalize.js.map +1 -1
  365. package/dist/math/range.cjs +1 -1
  366. package/dist/math/range.cjs.map +1 -1
  367. package/dist/math/range.js +1 -25
  368. package/dist/math/range.js.map +1 -1
  369. package/dist/math/round.cjs +1 -1
  370. package/dist/math/round.cjs.map +1 -1
  371. package/dist/math/round.js +1 -9
  372. package/dist/math/round.js.map +1 -1
  373. package/dist/math/standardDeviation.cjs +1 -1
  374. package/dist/math/standardDeviation.cjs.map +1 -1
  375. package/dist/math/standardDeviation.js +1 -8
  376. package/dist/math/standardDeviation.js.map +1 -1
  377. package/dist/math/sum.cjs +1 -1
  378. package/dist/math/sum.cjs.map +1 -1
  379. package/dist/math/sum.js +1 -11
  380. package/dist/math/sum.js.map +1 -1
  381. package/dist/math/variance.cjs +1 -1
  382. package/dist/math/variance.cjs.map +1 -1
  383. package/dist/math/variance.js +1 -10
  384. package/dist/math/variance.js.map +1 -1
  385. package/dist/object/defaults.cjs +1 -1
  386. package/dist/object/defaults.cjs.map +1 -1
  387. package/dist/object/defaults.d.ts +1 -1
  388. package/dist/object/defaults.js +1 -11
  389. package/dist/object/defaults.js.map +1 -1
  390. package/dist/object/diff.cjs +1 -1
  391. package/dist/object/diff.cjs.map +1 -1
  392. package/dist/object/diff.d.ts +1 -1
  393. package/dist/object/diff.js +1 -26
  394. package/dist/object/diff.js.map +1 -1
  395. package/dist/object/filterValues.cjs +1 -1
  396. package/dist/object/filterValues.cjs.map +1 -1
  397. package/dist/object/filterValues.js +1 -10
  398. package/dist/object/filterValues.js.map +1 -1
  399. package/dist/object/flattenPaths.cjs +1 -1
  400. package/dist/object/flattenPaths.cjs.map +1 -1
  401. package/dist/object/flattenPaths.js +1 -30
  402. package/dist/object/flattenPaths.js.map +1 -1
  403. package/dist/object/getPath.cjs +1 -1
  404. package/dist/object/getPath.cjs.map +1 -1
  405. package/dist/object/getPath.js +1 -25
  406. package/dist/object/getPath.js.map +1 -1
  407. package/dist/object/hash.cjs +1 -1
  408. package/dist/object/hash.cjs.map +1 -1
  409. package/dist/object/hash.d.ts +2 -2
  410. package/dist/object/hash.js +1 -27
  411. package/dist/object/hash.js.map +1 -1
  412. package/dist/object/index.js +1 -15
  413. package/dist/object/invert.cjs +1 -1
  414. package/dist/object/invert.cjs.map +1 -1
  415. package/dist/object/invert.js +1 -10
  416. package/dist/object/invert.js.map +1 -1
  417. package/dist/object/mapKeys.cjs +1 -1
  418. package/dist/object/mapKeys.cjs.map +1 -1
  419. package/dist/object/mapKeys.js +1 -14
  420. package/dist/object/mapKeys.js.map +1 -1
  421. package/dist/object/mapValues.cjs +1 -1
  422. package/dist/object/mapValues.cjs.map +1 -1
  423. package/dist/object/mapValues.js +1 -10
  424. package/dist/object/mapValues.js.map +1 -1
  425. package/dist/object/merge.cjs +1 -1
  426. package/dist/object/merge.cjs.map +1 -1
  427. package/dist/object/merge.js +1 -25
  428. package/dist/object/merge.js.map +1 -1
  429. package/dist/object/omit.cjs +1 -1
  430. package/dist/object/omit.cjs.map +1 -1
  431. package/dist/object/omit.js +1 -10
  432. package/dist/object/omit.js.map +1 -1
  433. package/dist/object/pick.cjs +1 -1
  434. package/dist/object/pick.cjs.map +1 -1
  435. package/dist/object/pick.d.ts +1 -1
  436. package/dist/object/pick.js +1 -10
  437. package/dist/object/pick.js.map +1 -1
  438. package/dist/object/prune.cjs +1 -1
  439. package/dist/object/prune.cjs.map +1 -1
  440. package/dist/object/prune.js +1 -33
  441. package/dist/object/prune.js.map +1 -1
  442. package/dist/object/tryParseJson.cjs +1 -1
  443. package/dist/object/tryParseJson.cjs.map +1 -1
  444. package/dist/object/tryParseJson.js +1 -17
  445. package/dist/object/tryParseJson.js.map +1 -1
  446. package/dist/random/_index.cjs +1 -1
  447. package/dist/random/_index.cjs.map +1 -1
  448. package/dist/random/_index.js +1 -8
  449. package/dist/random/_index.js.map +1 -1
  450. package/dist/random/draw.cjs +1 -1
  451. package/dist/random/draw.cjs.map +1 -1
  452. package/dist/random/draw.js +1 -20
  453. package/dist/random/draw.js.map +1 -1
  454. package/dist/random/index.js +1 -5
  455. package/dist/random/random.cjs +1 -1
  456. package/dist/random/random.cjs.map +1 -1
  457. package/dist/random/random.js +1 -9
  458. package/dist/random/random.js.map +1 -1
  459. package/dist/random/shuffle.cjs +1 -1
  460. package/dist/random/shuffle.cjs.map +1 -1
  461. package/dist/random/shuffle.js +1 -13
  462. package/dist/random/shuffle.js.map +1 -1
  463. package/dist/random/source.cjs +1 -1
  464. package/dist/random/source.cjs.map +1 -1
  465. package/dist/random/source.js +1 -9
  466. package/dist/random/source.js.map +1 -1
  467. package/dist/string/_caseUtils.cjs +1 -1
  468. package/dist/string/_caseUtils.cjs.map +1 -1
  469. package/dist/string/_caseUtils.js +1 -12
  470. package/dist/string/_caseUtils.js.map +1 -1
  471. package/dist/string/camelCase.cjs +1 -1
  472. package/dist/string/camelCase.cjs.map +1 -1
  473. package/dist/string/camelCase.js +1 -8
  474. package/dist/string/camelCase.js.map +1 -1
  475. package/dist/string/escape.cjs +1 -1
  476. package/dist/string/escape.cjs.map +1 -1
  477. package/dist/string/escape.js +1 -14
  478. package/dist/string/escape.js.map +1 -1
  479. package/dist/string/index.js +1 -12
  480. package/dist/string/kebabCase.cjs +1 -1
  481. package/dist/string/kebabCase.cjs.map +1 -1
  482. package/dist/string/kebabCase.js +1 -8
  483. package/dist/string/kebabCase.js.map +1 -1
  484. package/dist/string/padCenter.cjs +1 -1
  485. package/dist/string/padCenter.cjs.map +1 -1
  486. package/dist/string/padCenter.js +1 -9
  487. package/dist/string/padCenter.js.map +1 -1
  488. package/dist/string/pascalCase.cjs +1 -1
  489. package/dist/string/pascalCase.cjs.map +1 -1
  490. package/dist/string/pascalCase.js +1 -8
  491. package/dist/string/pascalCase.js.map +1 -1
  492. package/dist/string/similarity.cjs +1 -1
  493. package/dist/string/similarity.cjs.map +1 -1
  494. package/dist/string/similarity.js +1 -22
  495. package/dist/string/similarity.js.map +1 -1
  496. package/dist/string/snakeCase.cjs +1 -1
  497. package/dist/string/snakeCase.cjs.map +1 -1
  498. package/dist/string/snakeCase.js +1 -8
  499. package/dist/string/snakeCase.js.map +1 -1
  500. package/dist/string/titleCase.cjs +1 -1
  501. package/dist/string/titleCase.cjs.map +1 -1
  502. package/dist/string/titleCase.js +1 -8
  503. package/dist/string/titleCase.js.map +1 -1
  504. package/dist/string/truncate.cjs +1 -1
  505. package/dist/string/truncate.cjs.map +1 -1
  506. package/dist/string/truncate.js +1 -15
  507. package/dist/string/truncate.js.map +1 -1
  508. package/dist/string/unescape.cjs +1 -1
  509. package/dist/string/unescape.cjs.map +1 -1
  510. package/dist/string/unescape.js +1 -14
  511. package/dist/string/unescape.js.map +1 -1
  512. package/dist/string/words.cjs +1 -1
  513. package/dist/string/words.cjs.map +1 -1
  514. package/dist/string/words.js +1 -9
  515. package/dist/string/words.js.map +1 -1
  516. package/dist/types.d.ts +10 -0
  517. package/dist/types.d.ts.map +1 -1
  518. package/package.json +13 -5
@@ -1 +1 @@
1
- {"version":3,"file":"pipe.js","names":[],"sources":["../../src/function/pipe.ts"],"sourcesContent":["import type { Fn } from '../types';\n\ntype FirstParameters<T extends readonly Fn[]> = T extends [infer First extends Fn, ...unknown[]]\n ? Parameters<First>\n : never;\ntype LastReturnType<T extends readonly Fn[]> = T extends [...unknown[], infer Last extends Fn]\n ? ReturnType<Last>\n : never;\n\n/**\n * Pipes multiple functions into a single function. It starts from the leftmost function and proceeds to the right.\n *\n * The TypeScript overload captures the input type from the first function and the output type from the last.\n * Intermediate steps are typed as `unknown` at the call site — TypeScript cannot infer a safe chain across\n * heterogeneous function signatures without explicit overloads for every arity.\n *\n * `pipe()` with no arguments returns an identity function `<T>(x: T) => T`.\n *\n * @example\n * ```ts\n * const add = (x: number) => x + 2;\n * const multiply = (x: number) => x * 3;\n * const subtract = (x: number) => x - 4;\n * const pipedFn = pipe(subtract, multiply, add);\n *\n * pipedFn(5); // ((5-4) * 3) + 2 = 5\n *\n * // Zero-arg identity\n * pipe()(42); // 42\n * ```\n *\n * @param fns - List of functions to be piped.\n * @returns A new function that is the pipe of the input functions.\n */\nexport function pipe(): <T>(x: T) => T;\nexport function pipe<T extends readonly [Fn, ...Fn[]]>(...fns: T): (...args: FirstParameters<T>) => LastReturnType<T>;\nexport function pipe(...fns: Fn[]): Fn {\n if (fns.length === 0) return <T>(x: T): T => x;\n\n const [firstFn, ...restFns] = fns;\n\n return (...args: never[]) =>\n restFns.reduce<unknown>((prev, fn) => (fn as (x: unknown) => unknown)(prev), firstFn(...args));\n}\n"],"mappings":";AAoCA,SAAgB,EAAK,GAAG,GAAe;CACrC,IAAI,EAAI,WAAW,GAAG,QAAW,MAAY;CAE7C,IAAM,CAAC,GAAS,GAAG,KAAW;CAE9B,QAAQ,GAAG,MACT,EAAQ,QAAiB,GAAM,MAAQ,EAA+B,CAAI,GAAG,EAAQ,GAAG,CAAI,CAAC;AACjG"}
1
+ {"version":3,"file":"pipe.js","names":[],"sources":["../../src/function/pipe.ts"],"sourcesContent":["import type { Fn } from '../types';\n\ntype FirstParameters<T extends readonly Fn[]> = T extends [infer First extends Fn, ...unknown[]]\n ? Parameters<First>\n : never;\ntype LastReturnType<T extends readonly Fn[]> = T extends [...unknown[], infer Last extends Fn]\n ? ReturnType<Last>\n : never;\n\n/**\n * Pipes multiple functions into a single function. It starts from the leftmost function and proceeds to the right.\n *\n * The TypeScript overload captures the input type from the first function and the output type from the last.\n * Intermediate steps are typed as `unknown` at the call site: TypeScript cannot infer a safe chain across\n * heterogeneous function signatures without explicit overloads for every arity.\n *\n * `pipe()` with no arguments returns an identity function `<T>(x: T) => T`.\n *\n * @example\n * ```ts\n * const add = (x: number) => x + 2;\n * const multiply = (x: number) => x * 3;\n * const subtract = (x: number) => x - 4;\n * const pipedFn = pipe(subtract, multiply, add);\n *\n * pipedFn(5); // ((5-4) * 3) + 2 = 5\n *\n * // Zero-arg identity\n * pipe()(42); // 42\n * ```\n *\n * @param fns - List of functions to be piped.\n * @returns A new function that is the pipe of the input functions.\n */\nexport function pipe(): <T>(x: T) => T;\nexport function pipe<T extends readonly [Fn, ...Fn[]]>(...fns: T): (...args: FirstParameters<T>) => LastReturnType<T>;\nexport function pipe(...fns: Fn[]): Fn {\n if (fns.length === 0) return <T>(x: T): T => x;\n\n const [firstFn, ...restFns] = fns;\n\n return (...args: never[]) =>\n restFns.reduce<unknown>((prev, fn) => (fn as (x: unknown) => unknown)(prev), firstFn(...args));\n}\n"],"mappings":"AAoCA,SAAgB,KAAK,GAAG,EAAe,CACrC,GAAI,EAAI,SAAW,EAAG,MAAW,IAAY,EAE7C,GAAM,CAAC,EAAS,GAAG,GAAW,EAE9B,OAAQ,GAAG,IACT,EAAQ,QAAiB,EAAM,IAAQ,EAA+B,CAAI,EAAG,EAAQ,GAAG,CAAI,CAAC,CACjG"}
@@ -1,2 +1,2 @@
1
- function e(e,t){let n=[],r=e.length;if(t?.reverse)for(let t=r-1;t>=0;t--)try{e[t]?.()}catch(e){n.push(e)}else for(let t of e)try{t()}catch(e){n.push(e)}if(n.length>0)throw AggregateError(n,`One or more callbacks failed`)}exports.runAll=e;
1
+ function runAll(e,t){let n=[],r=e.length;if(t?.reverse)for(let t=r-1;t>=0;t--)try{e[t]?.()}catch(e){n.push(e)}else for(let t of e)try{t()}catch(e){n.push(e)}if(n.length>0)throw AggregateError(n,`One or more callbacks failed`)}exports.runAll=runAll;
2
2
  //# sourceMappingURL=runAll.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"runAll.cjs","names":[],"sources":["../../src/function/runAll.ts"],"sourcesContent":["/**\n * Runs all functions in `fns`, collecting any thrown errors.\n * - With `reverse: true`, iterates in LIFO order (useful for cleanup/teardown stacks).\n * - Throws an `AggregateError` containing all failures if any function throws.\n *\n * @example\n * ```ts\n * const cleanups = [() => a.dispose(), () => b.dispose()];\n * runAll(cleanups, { reverse: true });\n * ```\n */\nexport function runAll(fns: readonly (() => void)[], opts?: { reverse?: boolean }): void {\n const errors: unknown[] = [];\n const len = fns.length;\n\n if (opts?.reverse) {\n for (let i = len - 1; i >= 0; i--) {\n try {\n fns[i]?.();\n } catch (err) {\n errors.push(err);\n }\n }\n } else {\n for (const fn of fns) {\n try {\n fn();\n } catch (err) {\n errors.push(err);\n }\n }\n }\n\n if (errors.length > 0) {\n throw new AggregateError(errors, 'One or more callbacks failed');\n }\n}\n"],"mappings":"AAWA,SAAgB,EAAO,EAA8B,EAAoC,CACvF,IAAM,EAAoB,CAAC,EACrB,EAAM,EAAI,OAEhB,GAAI,GAAM,QACR,IAAK,IAAI,EAAI,EAAM,EAAG,GAAK,EAAG,IAC5B,GAAI,CACF,EAAI,EAAE,GAAG,CACX,OAAS,EAAK,CACZ,EAAO,KAAK,CAAG,CACjB,MAGF,IAAK,IAAM,KAAM,EACf,GAAI,CACF,EAAG,CACL,OAAS,EAAK,CACZ,EAAO,KAAK,CAAG,CACjB,CAIJ,GAAI,EAAO,OAAS,EAClB,MAAU,eAAe,EAAQ,8BAA8B,CAEnE"}
1
+ {"version":3,"file":"runAll.cjs","names":[],"sources":["../../src/function/runAll.ts"],"sourcesContent":["/**\n * Runs all functions in `fns`, collecting any thrown errors.\n * - With `reverse: true`, iterates in LIFO order (useful for cleanup/teardown stacks).\n * - Throws an `AggregateError` containing all failures if any function throws.\n *\n * @example\n * ```ts\n * const cleanups = [() => a.dispose(), () => b.dispose()];\n * runAll(cleanups, { reverse: true });\n * ```\n */\nexport function runAll(fns: readonly (() => void)[], opts?: { reverse?: boolean }): void {\n const errors: unknown[] = [];\n const len = fns.length;\n\n if (opts?.reverse) {\n for (let i = len - 1; i >= 0; i--) {\n try {\n fns[i]?.();\n } catch (err) {\n errors.push(err);\n }\n }\n } else {\n for (const fn of fns) {\n try {\n fn();\n } catch (err) {\n errors.push(err);\n }\n }\n }\n\n if (errors.length > 0) {\n throw new AggregateError(errors, 'One or more callbacks failed');\n }\n}\n"],"mappings":"AAWA,SAAgB,OAAO,EAA8B,EAAoC,CACvF,IAAM,EAAoB,CAAC,EACrB,EAAM,EAAI,OAEhB,GAAI,GAAM,QACR,IAAK,IAAI,EAAI,EAAM,EAAG,GAAK,EAAG,IAC5B,GAAI,CACF,EAAI,EAAE,GAAG,CACX,OAAS,EAAK,CACZ,EAAO,KAAK,CAAG,CACjB,MAGF,IAAK,IAAM,KAAM,EACf,GAAI,CACF,EAAG,CACL,OAAS,EAAK,CACZ,EAAO,KAAK,CAAG,CACjB,CAIJ,GAAI,EAAO,OAAS,EAClB,MAAU,eAAe,EAAQ,8BAA8B,CAEnE"}
@@ -1,19 +1,2 @@
1
- //#region src/function/runAll.ts
2
- function e(e, t) {
3
- let n = [], r = e.length;
4
- if (t?.reverse) for (let t = r - 1; t >= 0; t--) try {
5
- e[t]?.();
6
- } catch (e) {
7
- n.push(e);
8
- }
9
- else for (let t of e) try {
10
- t();
11
- } catch (e) {
12
- n.push(e);
13
- }
14
- if (n.length > 0) throw AggregateError(n, "One or more callbacks failed");
15
- }
16
- //#endregion
17
- export { e as runAll };
18
-
1
+ function runAll(e,t){let n=[],r=e.length;if(t?.reverse)for(let t=r-1;t>=0;t--)try{e[t]?.()}catch(e){n.push(e)}else for(let t of e)try{t()}catch(e){n.push(e)}if(n.length>0)throw AggregateError(n,`One or more callbacks failed`)}export{runAll};
19
2
  //# sourceMappingURL=runAll.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runAll.js","names":[],"sources":["../../src/function/runAll.ts"],"sourcesContent":["/**\n * Runs all functions in `fns`, collecting any thrown errors.\n * - With `reverse: true`, iterates in LIFO order (useful for cleanup/teardown stacks).\n * - Throws an `AggregateError` containing all failures if any function throws.\n *\n * @example\n * ```ts\n * const cleanups = [() => a.dispose(), () => b.dispose()];\n * runAll(cleanups, { reverse: true });\n * ```\n */\nexport function runAll(fns: readonly (() => void)[], opts?: { reverse?: boolean }): void {\n const errors: unknown[] = [];\n const len = fns.length;\n\n if (opts?.reverse) {\n for (let i = len - 1; i >= 0; i--) {\n try {\n fns[i]?.();\n } catch (err) {\n errors.push(err);\n }\n }\n } else {\n for (const fn of fns) {\n try {\n fn();\n } catch (err) {\n errors.push(err);\n }\n }\n }\n\n if (errors.length > 0) {\n throw new AggregateError(errors, 'One or more callbacks failed');\n }\n}\n"],"mappings":";AAWA,SAAgB,EAAO,GAA8B,GAAoC;CACvF,IAAM,IAAoB,CAAC,GACrB,IAAM,EAAI;CAEhB,IAAI,GAAM,SACR,KAAK,IAAI,IAAI,IAAM,GAAG,KAAK,GAAG,KAC5B,IAAI;EACF,EAAI,EAAE,GAAG;CACX,SAAS,GAAK;EACZ,EAAO,KAAK,CAAG;CACjB;MAGF,KAAK,IAAM,KAAM,GACf,IAAI;EACF,EAAG;CACL,SAAS,GAAK;EACZ,EAAO,KAAK,CAAG;CACjB;CAIJ,IAAI,EAAO,SAAS,GAClB,MAAU,eAAe,GAAQ,8BAA8B;AAEnE"}
1
+ {"version":3,"file":"runAll.js","names":[],"sources":["../../src/function/runAll.ts"],"sourcesContent":["/**\n * Runs all functions in `fns`, collecting any thrown errors.\n * - With `reverse: true`, iterates in LIFO order (useful for cleanup/teardown stacks).\n * - Throws an `AggregateError` containing all failures if any function throws.\n *\n * @example\n * ```ts\n * const cleanups = [() => a.dispose(), () => b.dispose()];\n * runAll(cleanups, { reverse: true });\n * ```\n */\nexport function runAll(fns: readonly (() => void)[], opts?: { reverse?: boolean }): void {\n const errors: unknown[] = [];\n const len = fns.length;\n\n if (opts?.reverse) {\n for (let i = len - 1; i >= 0; i--) {\n try {\n fns[i]?.();\n } catch (err) {\n errors.push(err);\n }\n }\n } else {\n for (const fn of fns) {\n try {\n fn();\n } catch (err) {\n errors.push(err);\n }\n }\n }\n\n if (errors.length > 0) {\n throw new AggregateError(errors, 'One or more callbacks failed');\n }\n}\n"],"mappings":"AAWA,SAAgB,OAAO,EAA8B,EAAoC,CACvF,IAAM,EAAoB,CAAC,EACrB,EAAM,EAAI,OAEhB,GAAI,GAAM,QACR,IAAK,IAAI,EAAI,EAAM,EAAG,GAAK,EAAG,IAC5B,GAAI,CACF,EAAI,EAAE,GAAG,CACX,OAAS,EAAK,CACZ,EAAO,KAAK,CAAG,CACjB,MAGF,IAAK,IAAM,KAAM,EACf,GAAI,CACF,EAAG,CACL,OAAS,EAAK,CACZ,EAAO,KAAK,CAAG,CACjB,CAIJ,GAAI,EAAO,OAAS,EAClB,MAAU,eAAe,EAAQ,8BAA8B,CAEnE"}
@@ -1,2 +1,2 @@
1
- function e(e,t){return t(e),e}exports.tap=e;
1
+ function tap(e,t){return t(e),e}exports.tap=tap;
2
2
  //# sourceMappingURL=tap.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"tap.cjs","names":[],"sources":["../../src/function/tap.ts"],"sourcesContent":["/**\n * Executes a side-effect callback and returns the original value.\n */\nexport function tap<T>(value: T, callback: (value: T) => void): T {\n callback(value);\n\n return value;\n}\n"],"mappings":"AAGA,SAAgB,EAAO,EAAU,EAAiC,CAGhE,OAFA,EAAS,CAAK,EAEP,CACT"}
1
+ {"version":3,"file":"tap.cjs","names":[],"sources":["../../src/function/tap.ts"],"sourcesContent":["/**\n * Executes a side-effect callback and returns the original value.\n */\nexport function tap<T>(value: T, callback: (value: T) => void): T {\n callback(value);\n\n return value;\n}\n"],"mappings":"AAGA,SAAgB,IAAO,EAAU,EAAiC,CAGhE,OAFA,EAAS,CAAK,EAEP,CACT"}
@@ -1,8 +1,2 @@
1
- //#region src/function/tap.ts
2
- function e(e, t) {
3
- return t(e), e;
4
- }
5
- //#endregion
6
- export { e as tap };
7
-
1
+ function tap(e,t){return t(e),e}export{tap};
8
2
  //# sourceMappingURL=tap.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tap.js","names":[],"sources":["../../src/function/tap.ts"],"sourcesContent":["/**\n * Executes a side-effect callback and returns the original value.\n */\nexport function tap<T>(value: T, callback: (value: T) => void): T {\n callback(value);\n\n return value;\n}\n"],"mappings":";AAGA,SAAgB,EAAO,GAAU,GAAiC;CAGhE,OAFA,EAAS,CAAK,GAEP;AACT"}
1
+ {"version":3,"file":"tap.js","names":[],"sources":["../../src/function/tap.ts"],"sourcesContent":["/**\n * Executes a side-effect callback and returns the original value.\n */\nexport function tap<T>(value: T, callback: (value: T) => void): T {\n callback(value);\n\n return value;\n}\n"],"mappings":"AAGA,SAAgB,IAAO,EAAU,EAAiC,CAGhE,OAFA,EAAS,CAAK,EAEP,CACT"}
@@ -0,0 +1,2 @@
1
+ var noop=()=>{};function tapper(){let e=new Set;return{clear(){e.clear()},emit(t){if(e.size!==0)for(let n of[...e])try{n(t)}catch{}},get size(){return e.size},tap(t,n){let r=n?.signal;if(r?.aborted)return noop;e.add(t);let detach=()=>{e.delete(t),r?.removeEventListener(`abort`,detach)};return r?.addEventListener(`abort`,detach,{once:!0}),detach}}}exports.tapper=tapper;
2
+ //# sourceMappingURL=tapper.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tapper.cjs","names":[],"sources":["../../src/function/tapper.ts"],"sourcesContent":["import type { Unsubscribe } from '../types';\n\nconst noop = (): void => {};\n\n/** Shared runtime-observation hub used by `tap()` methods across `@vielzeug/*` packages. */\nexport interface Tapper<Event> {\n /** Remove all handlers (call from `dispose()`). */\n clear(): void;\n /** Deliver an event to every handler. Handler errors are swallowed; zero cost when idle. */\n emit(event: Event): void;\n /** Number of registered handlers. */\n readonly size: number;\n /** Register a handler; auto-detaches when `signal` aborts. Returns an unsubscribe function. */\n tap(handler: (event: Event) => void, options?: { readonly signal?: AbortSignal }): Unsubscribe;\n}\n\n/**\n * Minimal tapper hub: a handler set with swallow-on-error dispatch, optional\n * `AbortSignal` auto-detach, and a zero-overhead guard when no handlers exist.\n *\n * @example\n * ```ts\n * const tappers = tapper<MyEvent>();\n * const unsubscribe = tappers.tap((event) => console.debug(event), { signal });\n * tappers.emit({ type: 'started' });\n * ```\n */\nexport function tapper<Event>(): Tapper<Event> {\n const handlers = new Set<(event: Event) => void>();\n\n return {\n clear(): void {\n handlers.clear();\n },\n emit(event: Event): void {\n if (handlers.size === 0) return;\n for (const handler of [...handlers]) {\n try {\n handler(event);\n } catch {\n // Observability must never affect package behavior.\n }\n }\n },\n get size(): number {\n return handlers.size;\n },\n tap(handler: (event: Event) => void, options?: { readonly signal?: AbortSignal }): Unsubscribe {\n const signal = options?.signal;\n if (signal?.aborted) return noop;\n\n handlers.add(handler);\n\n const detach = (): void => {\n handlers.delete(handler);\n signal?.removeEventListener('abort', detach);\n };\n\n signal?.addEventListener('abort', detach, { once: true });\n\n return detach;\n },\n };\n}\n"],"mappings":"AAEA,IAAM,SAAmB,CAAC,EAyB1B,SAAgB,QAA+B,CAC7C,IAAM,EAAW,IAAI,IAErB,MAAO,CACL,OAAc,CACZ,EAAS,MAAM,CACjB,EACA,KAAK,EAAoB,CACnB,KAAS,OAAS,EACtB,IAAK,IAAM,IAAW,CAAC,GAAG,CAAQ,EAChC,GAAI,CACF,EAAQ,CAAK,CACf,MAAQ,CAER,CAEJ,EACA,IAAI,MAAe,CACjB,OAAO,EAAS,IAClB,EACA,IAAI,EAAiC,EAA0D,CAC7F,IAAM,EAAS,GAAS,OACxB,GAAI,GAAQ,QAAS,OAAO,KAE5B,EAAS,IAAI,CAAO,EAEpB,IAAM,WAAqB,CACzB,EAAS,OAAO,CAAO,EACvB,GAAQ,oBAAoB,QAAS,MAAM,CAC7C,EAIA,OAFA,GAAQ,iBAAiB,QAAS,OAAQ,CAAE,KAAM,EAAK,CAAC,EAEjD,MACT,CACF,CACF"}
@@ -0,0 +1,27 @@
1
+ import type { Unsubscribe } from '../types';
2
+ /** Shared runtime-observation hub used by `tap()` methods across `@vielzeug/*` packages. */
3
+ export interface Tapper<Event> {
4
+ /** Remove all handlers (call from `dispose()`). */
5
+ clear(): void;
6
+ /** Deliver an event to every handler. Handler errors are swallowed; zero cost when idle. */
7
+ emit(event: Event): void;
8
+ /** Number of registered handlers. */
9
+ readonly size: number;
10
+ /** Register a handler; auto-detaches when `signal` aborts. Returns an unsubscribe function. */
11
+ tap(handler: (event: Event) => void, options?: {
12
+ readonly signal?: AbortSignal;
13
+ }): Unsubscribe;
14
+ }
15
+ /**
16
+ * Minimal tapper hub: a handler set with swallow-on-error dispatch, optional
17
+ * `AbortSignal` auto-detach, and a zero-overhead guard when no handlers exist.
18
+ *
19
+ * @example
20
+ * ```ts
21
+ * const tappers = tapper<MyEvent>();
22
+ * const unsubscribe = tappers.tap((event) => console.debug(event), { signal });
23
+ * tappers.emit({ type: 'started' });
24
+ * ```
25
+ */
26
+ export declare function tapper<Event>(): Tapper<Event>;
27
+ //# sourceMappingURL=tapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tapper.d.ts","sourceRoot":"","sources":["../../src/function/tapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAI5C,4FAA4F;AAC5F,MAAM,WAAW,MAAM,CAAC,KAAK;IAC3B,mDAAmD;IACnD,KAAK,IAAI,IAAI,CAAC;IACd,4FAA4F;IAC5F,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACzB,qCAAqC;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,+FAA+F;IAC/F,GAAG,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,EAAE,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,WAAW,CAAC;CAChG;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC,CAoC7C"}
@@ -0,0 +1,2 @@
1
+ var noop=()=>{};function tapper(){let e=new Set;return{clear(){e.clear()},emit(t){if(e.size!==0)for(let n of[...e])try{n(t)}catch{}},get size(){return e.size},tap(t,n){let r=n?.signal;if(r?.aborted)return noop;e.add(t);let detach=()=>{e.delete(t),r?.removeEventListener(`abort`,detach)};return r?.addEventListener(`abort`,detach,{once:!0}),detach}}}export{tapper};
2
+ //# sourceMappingURL=tapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tapper.js","names":[],"sources":["../../src/function/tapper.ts"],"sourcesContent":["import type { Unsubscribe } from '../types';\n\nconst noop = (): void => {};\n\n/** Shared runtime-observation hub used by `tap()` methods across `@vielzeug/*` packages. */\nexport interface Tapper<Event> {\n /** Remove all handlers (call from `dispose()`). */\n clear(): void;\n /** Deliver an event to every handler. Handler errors are swallowed; zero cost when idle. */\n emit(event: Event): void;\n /** Number of registered handlers. */\n readonly size: number;\n /** Register a handler; auto-detaches when `signal` aborts. Returns an unsubscribe function. */\n tap(handler: (event: Event) => void, options?: { readonly signal?: AbortSignal }): Unsubscribe;\n}\n\n/**\n * Minimal tapper hub: a handler set with swallow-on-error dispatch, optional\n * `AbortSignal` auto-detach, and a zero-overhead guard when no handlers exist.\n *\n * @example\n * ```ts\n * const tappers = tapper<MyEvent>();\n * const unsubscribe = tappers.tap((event) => console.debug(event), { signal });\n * tappers.emit({ type: 'started' });\n * ```\n */\nexport function tapper<Event>(): Tapper<Event> {\n const handlers = new Set<(event: Event) => void>();\n\n return {\n clear(): void {\n handlers.clear();\n },\n emit(event: Event): void {\n if (handlers.size === 0) return;\n for (const handler of [...handlers]) {\n try {\n handler(event);\n } catch {\n // Observability must never affect package behavior.\n }\n }\n },\n get size(): number {\n return handlers.size;\n },\n tap(handler: (event: Event) => void, options?: { readonly signal?: AbortSignal }): Unsubscribe {\n const signal = options?.signal;\n if (signal?.aborted) return noop;\n\n handlers.add(handler);\n\n const detach = (): void => {\n handlers.delete(handler);\n signal?.removeEventListener('abort', detach);\n };\n\n signal?.addEventListener('abort', detach, { once: true });\n\n return detach;\n },\n };\n}\n"],"mappings":"AAEA,IAAM,SAAmB,CAAC,EAyB1B,SAAgB,QAA+B,CAC7C,IAAM,EAAW,IAAI,IAErB,MAAO,CACL,OAAc,CACZ,EAAS,MAAM,CACjB,EACA,KAAK,EAAoB,CACnB,KAAS,OAAS,EACtB,IAAK,IAAM,IAAW,CAAC,GAAG,CAAQ,EAChC,GAAI,CACF,EAAQ,CAAK,CACf,MAAQ,CAER,CAEJ,EACA,IAAI,MAAe,CACjB,OAAO,EAAS,IAClB,EACA,IAAI,EAAiC,EAA0D,CAC7F,IAAM,EAAS,GAAS,OACxB,GAAI,GAAQ,QAAS,OAAO,KAE5B,EAAS,IAAI,CAAO,EAEpB,IAAM,WAAqB,CACzB,EAAS,OAAO,CAAO,EACvB,GAAQ,oBAAoB,QAAS,MAAM,CAC7C,EAIA,OAFA,GAAQ,iBAAiB,QAAS,OAAQ,CAAE,KAAM,EAAK,CAAC,EAEjD,MACT,CACF,CACF"}
@@ -1,2 +1,2 @@
1
- function e(e,t=700,n={leading:!0,trailing:!1}){let r=n.leading??!0,i=n.trailing??!1,a,o=-1/0,s,c,l=()=>{a!==void 0&&(clearTimeout(a),a=void 0)},u=e=>{a=setTimeout(p,e)},d=t=>{if(o=t,l(),!s)return;let n=s;return s=void 0,c=e(...n),c},f=e=>t-(e-o),p=()=>{let e=Date.now();s&&f(e)<=0?d(e):s?u(f(e)):l()};return Object.assign((...e)=>{let t=Date.now();o===-1/0&&!r&&(o=t),s=e;let n=f(t);return n<=0?d(t):(i&&!a&&u(n),c)},{cancel:()=>{l(),s=void 0,o=-1/0},flush:()=>{if(s)return d(Date.now())},pending:()=>s!==void 0||a!==void 0})}exports.throttle=e;
1
+ function throttle(e,t=700,n={leading:!0,trailing:!1}){let r=n.leading??!0,i=n.trailing??!1,a,o=-1/0,s,c,clearTimer=()=>{a!==void 0&&(clearTimeout(a),a=void 0)},scheduleTimer=e=>{a=setTimeout(timerExpired,e)},invoke=t=>{if(o=t,clearTimer(),!s)return;let n=s;return s=void 0,c=e(...n),c},remaining=e=>t-(e-o),timerExpired=()=>{let e=Date.now();s&&remaining(e)<=0?invoke(e):s?scheduleTimer(remaining(e)):clearTimer()};return Object.assign((...e)=>{let t=Date.now();o===-1/0&&!r&&(o=t),s=e;let n=remaining(t);return n<=0?invoke(t):(i&&!a&&scheduleTimer(n),c)},{cancel:()=>{clearTimer(),s=void 0,o=-1/0},flush:()=>{if(s)return invoke(Date.now())},pending:()=>s!==void 0||a!==void 0})}exports.throttle=throttle;
2
2
  //# sourceMappingURL=throttle.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"throttle.cjs","names":[],"sources":["../../src/function/throttle.ts"],"sourcesContent":["import type { Fn } from '../types';\n\nexport type ThrottleOptions = {\n leading?: boolean; // invoke at the start of the window\n trailing?: boolean; // invoke at the end with the last args\n};\n\nexport type Throttled<T extends Fn> = ((...args: Parameters<T>) => ReturnType<T> | undefined) & {\n cancel(): void;\n flush(): ReturnType<T> | undefined;\n pending(): boolean; // whether there's a pending call that flush() would execute\n};\n\n/**\n * Throttles a function. By default, only the leading edge fires.\n * Pass `{ trailing: true }` to also invoke at the end of the throttle window.\n *\n * @example\n * ```ts\n * const fn = () => { ... };\n * const t = throttle(fn, 700);\n * const withTrailing = throttle(fn, 700, { trailing: true });\n * ```\n */\nexport function throttle<T extends Fn>(\n fn: T,\n delay = 700,\n options: ThrottleOptions = { leading: true, trailing: false },\n): Throttled<T> {\n const leading = options.leading ?? true;\n const trailing = options.trailing ?? false;\n\n let timerId: ReturnType<typeof setTimeout> | undefined;\n let lastInvokeTime = -Infinity;\n let lastArgs: Parameters<T> | undefined;\n let lastResult: ReturnType<T> | undefined;\n\n const clearTimer = () => {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n timerId = undefined;\n }\n };\n\n const scheduleTimer = (delayMs: number) => {\n timerId = setTimeout(timerExpired, delayMs);\n };\n\n const invoke = (now: number) => {\n lastInvokeTime = now;\n clearTimer();\n\n if (!lastArgs) return undefined;\n\n const args = lastArgs;\n\n lastArgs = undefined;\n lastResult = fn(...args) as ReturnType<T>;\n\n return lastResult;\n };\n\n const remaining = (now: number) => delay - (now - lastInvokeTime);\n\n const timerExpired = () => {\n const now = Date.now();\n\n if (lastArgs && remaining(now) <= 0) {\n // trailing edge invoke\n invoke(now);\n } else if (lastArgs) {\n // reschedule until a window elapses\n scheduleTimer(remaining(now));\n } else {\n clearTimer();\n }\n };\n\n return Object.assign(\n (...args: Parameters<T>): ReturnType<T> | undefined => {\n const now = Date.now();\n\n if (lastInvokeTime === -Infinity && !leading) {\n // If leading is false, start the window now but don't invoke immediately\n lastInvokeTime = now;\n }\n\n lastArgs = args;\n\n const rem = remaining(now);\n\n if (rem <= 0) {\n // Window elapsed: invoke now\n return invoke(now);\n } else if (trailing && !timerId) {\n // Schedule trailing call if not already scheduled\n scheduleTimer(rem);\n }\n\n return lastResult;\n },\n {\n cancel: () => {\n clearTimer();\n lastArgs = undefined;\n lastInvokeTime = -Infinity;\n },\n flush: (): ReturnType<T> | undefined => {\n if (!lastArgs) return undefined;\n\n return invoke(Date.now());\n },\n // Pending if a trailing call is scheduled OR there are queued args.\n pending: () => lastArgs !== undefined || timerId !== undefined,\n },\n );\n}\n"],"mappings":"AAwBA,SAAgB,EACd,EACA,EAAQ,IACR,EAA2B,CAAE,QAAS,GAAM,SAAU,EAAM,EAC9C,CACd,IAAM,EAAU,EAAQ,SAAW,GAC7B,EAAW,EAAQ,UAAY,GAEjC,EACA,EAAiB,KACjB,EACA,EAEE,MAAmB,CACnB,IAAY,IAAA,KACd,aAAa,CAAO,EACpB,EAAU,IAAA,GAEd,EAEM,EAAiB,GAAoB,CACzC,EAAU,WAAW,EAAc,CAAO,CAC5C,EAEM,EAAU,GAAgB,CAI9B,GAHA,EAAiB,EACjB,EAAW,EAEP,CAAC,EAAU,OAEf,IAAM,EAAO,EAKb,MAHA,GAAW,IAAA,GACX,EAAa,EAAG,GAAG,CAAI,EAEhB,CACT,EAEM,EAAa,GAAgB,GAAS,EAAM,GAE5C,MAAqB,CACzB,IAAM,EAAM,KAAK,IAAI,EAEjB,GAAY,EAAU,CAAG,GAAK,EAEhC,EAAO,CAAG,EACD,EAET,EAAc,EAAU,CAAG,CAAC,EAE5B,EAAW,CAEf,EAEA,OAAO,OAAO,QACX,GAAG,IAAmD,CACrD,IAAM,EAAM,KAAK,IAAI,EAEjB,IAAmB,MAAa,CAAC,IAEnC,EAAiB,GAGnB,EAAW,EAEX,IAAM,EAAM,EAAU,CAAG,EAUzB,OARI,GAAO,EAEF,EAAO,CAAG,GACR,GAAY,CAAC,GAEtB,EAAc,CAAG,EAGZ,EACT,EACA,CACE,WAAc,CACZ,EAAW,EACX,EAAW,IAAA,GACX,EAAiB,IACnB,EACA,UAAwC,CACjC,KAEL,OAAO,EAAO,KAAK,IAAI,CAAC,CAC1B,EAEA,YAAe,IAAa,IAAA,IAAa,IAAY,IAAA,EACvD,CACF,CACF"}
1
+ {"version":3,"file":"throttle.cjs","names":[],"sources":["../../src/function/throttle.ts"],"sourcesContent":["import type { Fn } from '../types';\n\nexport type ThrottleOptions = {\n leading?: boolean; // invoke at the start of the window\n trailing?: boolean; // invoke at the end with the last args\n};\n\nexport type Throttled<T extends Fn> = ((...args: Parameters<T>) => ReturnType<T> | undefined) & {\n cancel(): void;\n flush(): ReturnType<T> | undefined;\n pending(): boolean; // whether there's a pending call that flush() would execute\n};\n\n/**\n * Throttles a function. By default, only the leading edge fires.\n * Pass `{ trailing: true }` to also invoke at the end of the throttle window.\n *\n * @example\n * ```ts\n * const fn = () => { ... };\n * const t = throttle(fn, 700);\n * const withTrailing = throttle(fn, 700, { trailing: true });\n * ```\n */\nexport function throttle<T extends Fn>(\n fn: T,\n delay = 700,\n options: ThrottleOptions = { leading: true, trailing: false },\n): Throttled<T> {\n const leading = options.leading ?? true;\n const trailing = options.trailing ?? false;\n\n let timerId: ReturnType<typeof setTimeout> | undefined;\n let lastInvokeTime = -Infinity;\n let lastArgs: Parameters<T> | undefined;\n let lastResult: ReturnType<T> | undefined;\n\n const clearTimer = () => {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n timerId = undefined;\n }\n };\n\n const scheduleTimer = (delayMs: number) => {\n timerId = setTimeout(timerExpired, delayMs);\n };\n\n const invoke = (now: number) => {\n lastInvokeTime = now;\n clearTimer();\n\n if (!lastArgs) return undefined;\n\n const args = lastArgs;\n\n lastArgs = undefined;\n lastResult = fn(...args) as ReturnType<T>;\n\n return lastResult;\n };\n\n const remaining = (now: number) => delay - (now - lastInvokeTime);\n\n const timerExpired = () => {\n const now = Date.now();\n\n if (lastArgs && remaining(now) <= 0) {\n // trailing edge invoke\n invoke(now);\n } else if (lastArgs) {\n // reschedule until a window elapses\n scheduleTimer(remaining(now));\n } else {\n clearTimer();\n }\n };\n\n return Object.assign(\n (...args: Parameters<T>): ReturnType<T> | undefined => {\n const now = Date.now();\n\n if (lastInvokeTime === -Infinity && !leading) {\n // If leading is false, start the window now but don't invoke immediately\n lastInvokeTime = now;\n }\n\n lastArgs = args;\n\n const rem = remaining(now);\n\n if (rem <= 0) {\n // Window elapsed: invoke now\n return invoke(now);\n } else if (trailing && !timerId) {\n // Schedule trailing call if not already scheduled\n scheduleTimer(rem);\n }\n\n return lastResult;\n },\n {\n cancel: () => {\n clearTimer();\n lastArgs = undefined;\n lastInvokeTime = -Infinity;\n },\n flush: (): ReturnType<T> | undefined => {\n if (!lastArgs) return undefined;\n\n return invoke(Date.now());\n },\n // Pending if a trailing call is scheduled OR there are queued args.\n pending: () => lastArgs !== undefined || timerId !== undefined,\n },\n );\n}\n"],"mappings":"AAwBA,SAAgB,SACd,EACA,EAAQ,IACR,EAA2B,CAAE,QAAS,GAAM,SAAU,EAAM,EAC9C,CACd,IAAM,EAAU,EAAQ,SAAW,GAC7B,EAAW,EAAQ,UAAY,GAEjC,EACA,EAAiB,KACjB,EACA,EAEE,eAAmB,CACnB,IAAY,IAAA,KACd,aAAa,CAAO,EACpB,EAAU,IAAA,GAEd,EAEM,cAAiB,GAAoB,CACzC,EAAU,WAAW,aAAc,CAAO,CAC5C,EAEM,OAAU,GAAgB,CAI9B,GAHA,EAAiB,EACjB,WAAW,EAEP,CAAC,EAAU,OAEf,IAAM,EAAO,EAKb,MAHA,GAAW,IAAA,GACX,EAAa,EAAG,GAAG,CAAI,EAEhB,CACT,EAEM,UAAa,GAAgB,GAAS,EAAM,GAE5C,iBAAqB,CACzB,IAAM,EAAM,KAAK,IAAI,EAEjB,GAAY,UAAU,CAAG,GAAK,EAEhC,OAAO,CAAG,EACD,EAET,cAAc,UAAU,CAAG,CAAC,EAE5B,WAAW,CAEf,EAEA,OAAO,OAAO,QACX,GAAG,IAAmD,CACrD,IAAM,EAAM,KAAK,IAAI,EAEjB,IAAmB,MAAa,CAAC,IAEnC,EAAiB,GAGnB,EAAW,EAEX,IAAM,EAAM,UAAU,CAAG,EAUzB,OARI,GAAO,EAEF,OAAO,CAAG,GACR,GAAY,CAAC,GAEtB,cAAc,CAAG,EAGZ,EACT,EACA,CACE,WAAc,CACZ,WAAW,EACX,EAAW,IAAA,GACX,EAAiB,IACnB,EACA,UAAwC,CACjC,KAEL,OAAO,OAAO,KAAK,IAAI,CAAC,CAC1B,EAEA,YAAe,IAAa,IAAA,IAAa,IAAY,IAAA,EACvD,CACF,CACF"}
@@ -1,36 +1,2 @@
1
- //#region src/function/throttle.ts
2
- function e(e, t = 700, n = {
3
- leading: !0,
4
- trailing: !1
5
- }) {
6
- let r = n.leading ?? !0, i = n.trailing ?? !1, a, o = -Infinity, s, c, l = () => {
7
- a !== void 0 && (clearTimeout(a), a = void 0);
8
- }, u = (e) => {
9
- a = setTimeout(p, e);
10
- }, d = (t) => {
11
- if (o = t, l(), !s) return;
12
- let n = s;
13
- return s = void 0, c = e(...n), c;
14
- }, f = (e) => t - (e - o), p = () => {
15
- let e = Date.now();
16
- s && f(e) <= 0 ? d(e) : s ? u(f(e)) : l();
17
- };
18
- return Object.assign((...e) => {
19
- let t = Date.now();
20
- o === -Infinity && !r && (o = t), s = e;
21
- let n = f(t);
22
- return n <= 0 ? d(t) : (i && !a && u(n), c);
23
- }, {
24
- cancel: () => {
25
- l(), s = void 0, o = -Infinity;
26
- },
27
- flush: () => {
28
- if (s) return d(Date.now());
29
- },
30
- pending: () => s !== void 0 || a !== void 0
31
- });
32
- }
33
- //#endregion
34
- export { e as throttle };
35
-
1
+ function throttle(e,t=700,n={leading:!0,trailing:!1}){let r=n.leading??!0,i=n.trailing??!1,a,o=-1/0,s,c,clearTimer=()=>{a!==void 0&&(clearTimeout(a),a=void 0)},scheduleTimer=e=>{a=setTimeout(timerExpired,e)},invoke=t=>{if(o=t,clearTimer(),!s)return;let n=s;return s=void 0,c=e(...n),c},remaining=e=>t-(e-o),timerExpired=()=>{let e=Date.now();s&&remaining(e)<=0?invoke(e):s?scheduleTimer(remaining(e)):clearTimer()};return Object.assign((...e)=>{let t=Date.now();o===-1/0&&!r&&(o=t),s=e;let n=remaining(t);return n<=0?invoke(t):(i&&!a&&scheduleTimer(n),c)},{cancel:()=>{clearTimer(),s=void 0,o=-1/0},flush:()=>{if(s)return invoke(Date.now())},pending:()=>s!==void 0||a!==void 0})}export{throttle};
36
2
  //# sourceMappingURL=throttle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"throttle.js","names":[],"sources":["../../src/function/throttle.ts"],"sourcesContent":["import type { Fn } from '../types';\n\nexport type ThrottleOptions = {\n leading?: boolean; // invoke at the start of the window\n trailing?: boolean; // invoke at the end with the last args\n};\n\nexport type Throttled<T extends Fn> = ((...args: Parameters<T>) => ReturnType<T> | undefined) & {\n cancel(): void;\n flush(): ReturnType<T> | undefined;\n pending(): boolean; // whether there's a pending call that flush() would execute\n};\n\n/**\n * Throttles a function. By default, only the leading edge fires.\n * Pass `{ trailing: true }` to also invoke at the end of the throttle window.\n *\n * @example\n * ```ts\n * const fn = () => { ... };\n * const t = throttle(fn, 700);\n * const withTrailing = throttle(fn, 700, { trailing: true });\n * ```\n */\nexport function throttle<T extends Fn>(\n fn: T,\n delay = 700,\n options: ThrottleOptions = { leading: true, trailing: false },\n): Throttled<T> {\n const leading = options.leading ?? true;\n const trailing = options.trailing ?? false;\n\n let timerId: ReturnType<typeof setTimeout> | undefined;\n let lastInvokeTime = -Infinity;\n let lastArgs: Parameters<T> | undefined;\n let lastResult: ReturnType<T> | undefined;\n\n const clearTimer = () => {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n timerId = undefined;\n }\n };\n\n const scheduleTimer = (delayMs: number) => {\n timerId = setTimeout(timerExpired, delayMs);\n };\n\n const invoke = (now: number) => {\n lastInvokeTime = now;\n clearTimer();\n\n if (!lastArgs) return undefined;\n\n const args = lastArgs;\n\n lastArgs = undefined;\n lastResult = fn(...args) as ReturnType<T>;\n\n return lastResult;\n };\n\n const remaining = (now: number) => delay - (now - lastInvokeTime);\n\n const timerExpired = () => {\n const now = Date.now();\n\n if (lastArgs && remaining(now) <= 0) {\n // trailing edge invoke\n invoke(now);\n } else if (lastArgs) {\n // reschedule until a window elapses\n scheduleTimer(remaining(now));\n } else {\n clearTimer();\n }\n };\n\n return Object.assign(\n (...args: Parameters<T>): ReturnType<T> | undefined => {\n const now = Date.now();\n\n if (lastInvokeTime === -Infinity && !leading) {\n // If leading is false, start the window now but don't invoke immediately\n lastInvokeTime = now;\n }\n\n lastArgs = args;\n\n const rem = remaining(now);\n\n if (rem <= 0) {\n // Window elapsed: invoke now\n return invoke(now);\n } else if (trailing && !timerId) {\n // Schedule trailing call if not already scheduled\n scheduleTimer(rem);\n }\n\n return lastResult;\n },\n {\n cancel: () => {\n clearTimer();\n lastArgs = undefined;\n lastInvokeTime = -Infinity;\n },\n flush: (): ReturnType<T> | undefined => {\n if (!lastArgs) return undefined;\n\n return invoke(Date.now());\n },\n // Pending if a trailing call is scheduled OR there are queued args.\n pending: () => lastArgs !== undefined || timerId !== undefined,\n },\n );\n}\n"],"mappings":";AAwBA,SAAgB,EACd,GACA,IAAQ,KACR,IAA2B;CAAE,SAAS;CAAM,UAAU;AAAM,GAC9C;CACd,IAAM,IAAU,EAAQ,WAAW,IAC7B,IAAW,EAAQ,YAAY,IAEjC,GACA,IAAiB,WACjB,GACA,GAEE,UAAmB;EACvB,AAAI,MAAY,KAAA,MACd,aAAa,CAAO,GACpB,IAAU,KAAA;CAEd,GAEM,KAAiB,MAAoB;EACzC,IAAU,WAAW,GAAc,CAAO;CAC5C,GAEM,KAAU,MAAgB;EAI9B,IAHA,IAAiB,GACjB,EAAW,GAEP,CAAC,GAAU;EAEf,IAAM,IAAO;EAKb,OAHA,IAAW,KAAA,GACX,IAAa,EAAG,GAAG,CAAI,GAEhB;CACT,GAEM,KAAa,MAAgB,KAAS,IAAM,IAE5C,UAAqB;EACzB,IAAM,IAAM,KAAK,IAAI;EAErB,AAAI,KAAY,EAAU,CAAG,KAAK,IAEhC,EAAO,CAAG,IACD,IAET,EAAc,EAAU,CAAG,CAAC,IAE5B,EAAW;CAEf;CAEA,OAAO,OAAO,QACX,GAAG,MAAmD;EACrD,IAAM,IAAM,KAAK,IAAI;EAOrB,AALI,MAAmB,aAAa,CAAC,MAEnC,IAAiB,IAGnB,IAAW;EAEX,IAAM,IAAM,EAAU,CAAG;EAUzB,OARI,KAAO,IAEF,EAAO,CAAG,KACR,KAAY,CAAC,KAEtB,EAAc,CAAG,GAGZ;CACT,GACA;EACE,cAAc;GAGZ,AAFA,EAAW,GACX,IAAW,KAAA,GACX,IAAiB;EACnB;EACA,aAAwC;GACjC,OAEL,OAAO,EAAO,KAAK,IAAI,CAAC;EAC1B;EAEA,eAAe,MAAa,KAAA,KAAa,MAAY,KAAA;CACvD,CACF;AACF"}
1
+ {"version":3,"file":"throttle.js","names":[],"sources":["../../src/function/throttle.ts"],"sourcesContent":["import type { Fn } from '../types';\n\nexport type ThrottleOptions = {\n leading?: boolean; // invoke at the start of the window\n trailing?: boolean; // invoke at the end with the last args\n};\n\nexport type Throttled<T extends Fn> = ((...args: Parameters<T>) => ReturnType<T> | undefined) & {\n cancel(): void;\n flush(): ReturnType<T> | undefined;\n pending(): boolean; // whether there's a pending call that flush() would execute\n};\n\n/**\n * Throttles a function. By default, only the leading edge fires.\n * Pass `{ trailing: true }` to also invoke at the end of the throttle window.\n *\n * @example\n * ```ts\n * const fn = () => { ... };\n * const t = throttle(fn, 700);\n * const withTrailing = throttle(fn, 700, { trailing: true });\n * ```\n */\nexport function throttle<T extends Fn>(\n fn: T,\n delay = 700,\n options: ThrottleOptions = { leading: true, trailing: false },\n): Throttled<T> {\n const leading = options.leading ?? true;\n const trailing = options.trailing ?? false;\n\n let timerId: ReturnType<typeof setTimeout> | undefined;\n let lastInvokeTime = -Infinity;\n let lastArgs: Parameters<T> | undefined;\n let lastResult: ReturnType<T> | undefined;\n\n const clearTimer = () => {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n timerId = undefined;\n }\n };\n\n const scheduleTimer = (delayMs: number) => {\n timerId = setTimeout(timerExpired, delayMs);\n };\n\n const invoke = (now: number) => {\n lastInvokeTime = now;\n clearTimer();\n\n if (!lastArgs) return undefined;\n\n const args = lastArgs;\n\n lastArgs = undefined;\n lastResult = fn(...args) as ReturnType<T>;\n\n return lastResult;\n };\n\n const remaining = (now: number) => delay - (now - lastInvokeTime);\n\n const timerExpired = () => {\n const now = Date.now();\n\n if (lastArgs && remaining(now) <= 0) {\n // trailing edge invoke\n invoke(now);\n } else if (lastArgs) {\n // reschedule until a window elapses\n scheduleTimer(remaining(now));\n } else {\n clearTimer();\n }\n };\n\n return Object.assign(\n (...args: Parameters<T>): ReturnType<T> | undefined => {\n const now = Date.now();\n\n if (lastInvokeTime === -Infinity && !leading) {\n // If leading is false, start the window now but don't invoke immediately\n lastInvokeTime = now;\n }\n\n lastArgs = args;\n\n const rem = remaining(now);\n\n if (rem <= 0) {\n // Window elapsed: invoke now\n return invoke(now);\n } else if (trailing && !timerId) {\n // Schedule trailing call if not already scheduled\n scheduleTimer(rem);\n }\n\n return lastResult;\n },\n {\n cancel: () => {\n clearTimer();\n lastArgs = undefined;\n lastInvokeTime = -Infinity;\n },\n flush: (): ReturnType<T> | undefined => {\n if (!lastArgs) return undefined;\n\n return invoke(Date.now());\n },\n // Pending if a trailing call is scheduled OR there are queued args.\n pending: () => lastArgs !== undefined || timerId !== undefined,\n },\n );\n}\n"],"mappings":"AAwBA,SAAgB,SACd,EACA,EAAQ,IACR,EAA2B,CAAE,QAAS,GAAM,SAAU,EAAM,EAC9C,CACd,IAAM,EAAU,EAAQ,SAAW,GAC7B,EAAW,EAAQ,UAAY,GAEjC,EACA,EAAiB,KACjB,EACA,EAEE,eAAmB,CACnB,IAAY,IAAA,KACd,aAAa,CAAO,EACpB,EAAU,IAAA,GAEd,EAEM,cAAiB,GAAoB,CACzC,EAAU,WAAW,aAAc,CAAO,CAC5C,EAEM,OAAU,GAAgB,CAI9B,GAHA,EAAiB,EACjB,WAAW,EAEP,CAAC,EAAU,OAEf,IAAM,EAAO,EAKb,MAHA,GAAW,IAAA,GACX,EAAa,EAAG,GAAG,CAAI,EAEhB,CACT,EAEM,UAAa,GAAgB,GAAS,EAAM,GAE5C,iBAAqB,CACzB,IAAM,EAAM,KAAK,IAAI,EAEjB,GAAY,UAAU,CAAG,GAAK,EAEhC,OAAO,CAAG,EACD,EAET,cAAc,UAAU,CAAG,CAAC,EAE5B,WAAW,CAEf,EAEA,OAAO,OAAO,QACX,GAAG,IAAmD,CACrD,IAAM,EAAM,KAAK,IAAI,EAEjB,IAAmB,MAAa,CAAC,IAEnC,EAAiB,GAGnB,EAAW,EAEX,IAAM,EAAM,UAAU,CAAG,EAUzB,OARI,GAAO,EAEF,OAAO,CAAG,GACR,GAAY,CAAC,GAEtB,cAAc,CAAG,EAGZ,EACT,EACA,CACE,WAAc,CACZ,WAAW,EACX,EAAW,IAAA,GACX,EAAiB,IACnB,EACA,UAAwC,CACjC,KAEL,OAAO,OAAO,KAAK,IAAI,CAAC,CAC1B,EAEA,YAAe,IAAa,IAAA,IAAa,IAAY,IAAA,EACvD,CACF,CACF"}
@@ -1,2 +1,2 @@
1
- function e(...e){return t=>e.every(e=>e(t))}function t(...e){return t=>e.some(e=>e(t))}function n(...e){return t=>e.every(e=>!e(t))}function r(e){return t=>!e(t)}exports.allOf=e,exports.anyOf=t,exports.noneOf=n,exports.not=r;
1
+ function allOf(...e){return t=>e.every(e=>e(t))}function anyOf(...e){return t=>e.some(e=>e(t))}function noneOf(...e){return t=>e.every(e=>!e(t))}function not(e){return t=>!e(t)}exports.allOf=allOf,exports.anyOf=anyOf,exports.noneOf=noneOf,exports.not=not;
2
2
  //# sourceMappingURL=combinators.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"combinators.cjs","names":[],"sources":["../../src/guards/combinators.ts"],"sourcesContent":["import type { Predicate } from '../types';\n\n/**\n * Returns a predicate that is `true` only when every provided predicate is `true`.\n *\n * With zero predicates, returns `true` for all values (vacuous truth).\n *\n * @example\n * ```ts\n * const isPositiveEven = allOf(\n * (n) => n > 0,\n * (n) => n % 2 === 0,\n * );\n * [1, 2, 3, 4].filter(isPositiveEven); // [2, 4]\n * ```\n */\nexport function allOf<T>(...predicates: Predicate<T>[]): Predicate<T> {\n return (value) => predicates.every((predicate) => predicate(value));\n}\n\n/**\n * Returns a predicate that is `true` when at least one provided predicate is `true`.\n *\n * With zero predicates, returns `false` for all values (vacuous falsity).\n *\n * @example\n * ```ts\n * [1, 2, 3, 4].filter(anyOf((n) => n === 1, (n) => n === 3)); // [1, 3]\n * ```\n */\nexport function anyOf<T>(...predicates: Predicate<T>[]): Predicate<T> {\n return (value) => predicates.some((predicate) => predicate(value));\n}\n\n/**\n * Returns a predicate that is `true` when none of the provided predicates match.\n * With a single predicate this is equivalent to logical NOT.\n *\n * With zero predicates, returns `true` for all values (nothing fails — vacuous truth).\n *\n * @example\n * ```ts\n * [1, 2, 3, 4].filter(noneOf((n) => n % 2 === 0)); // [1, 3]\n * ```\n */\nexport function noneOf<T>(...predicates: Predicate<T>[]): Predicate<T> {\n return (value) => predicates.every((predicate) => !predicate(value));\n}\n\n/**\n * Returns a predicate that negates the given predicate.\n *\n * @example\n * ```ts\n * [1, 2, 3, 4].filter(not((n) => n % 2 === 0)); // [1, 3]\n * ```\n */\nexport function not<T>(predicate: Predicate<T>): Predicate<T> {\n return (value) => !predicate(value);\n}\n"],"mappings":"AAgBA,SAAgB,EAAS,GAAG,EAA0C,CACpE,MAAQ,IAAU,EAAW,MAAO,GAAc,EAAU,CAAK,CAAC,CACpE,CAYA,SAAgB,EAAS,GAAG,EAA0C,CACpE,MAAQ,IAAU,EAAW,KAAM,GAAc,EAAU,CAAK,CAAC,CACnE,CAaA,SAAgB,EAAU,GAAG,EAA0C,CACrE,MAAQ,IAAU,EAAW,MAAO,GAAc,CAAC,EAAU,CAAK,CAAC,CACrE,CAUA,SAAgB,EAAO,EAAuC,CAC5D,MAAQ,IAAU,CAAC,EAAU,CAAK,CACpC"}
1
+ {"version":3,"file":"combinators.cjs","names":[],"sources":["../../src/guards/combinators.ts"],"sourcesContent":["import type { Predicate } from '../types';\n\n/**\n * Returns a predicate that is `true` only when every provided predicate is `true`.\n *\n * With zero predicates, returns `true` for all values (vacuous truth).\n *\n * @example\n * ```ts\n * const isPositiveEven = allOf(\n * (n) => n > 0,\n * (n) => n % 2 === 0,\n * );\n * [1, 2, 3, 4].filter(isPositiveEven); // [2, 4]\n * ```\n */\nexport function allOf<T>(...predicates: Predicate<T>[]): Predicate<T> {\n return (value) => predicates.every((predicate) => predicate(value));\n}\n\n/**\n * Returns a predicate that is `true` when at least one provided predicate is `true`.\n *\n * With zero predicates, returns `false` for all values (vacuous falsity).\n *\n * @example\n * ```ts\n * [1, 2, 3, 4].filter(anyOf((n) => n === 1, (n) => n === 3)); // [1, 3]\n * ```\n */\nexport function anyOf<T>(...predicates: Predicate<T>[]): Predicate<T> {\n return (value) => predicates.some((predicate) => predicate(value));\n}\n\n/**\n * Returns a predicate that is `true` when none of the provided predicates match.\n * With a single predicate this is equivalent to logical NOT.\n *\n * With zero predicates, returns `true` for all values (nothing fails: vacuous truth).\n *\n * @example\n * ```ts\n * [1, 2, 3, 4].filter(noneOf((n) => n % 2 === 0)); // [1, 3]\n * ```\n */\nexport function noneOf<T>(...predicates: Predicate<T>[]): Predicate<T> {\n return (value) => predicates.every((predicate) => !predicate(value));\n}\n\n/**\n * Returns a predicate that negates the given predicate.\n *\n * @example\n * ```ts\n * [1, 2, 3, 4].filter(not((n) => n % 2 === 0)); // [1, 3]\n * ```\n */\nexport function not<T>(predicate: Predicate<T>): Predicate<T> {\n return (value) => !predicate(value);\n}\n"],"mappings":"AAgBA,SAAgB,MAAS,GAAG,EAA0C,CACpE,MAAQ,IAAU,EAAW,MAAO,GAAc,EAAU,CAAK,CAAC,CACpE,CAYA,SAAgB,MAAS,GAAG,EAA0C,CACpE,MAAQ,IAAU,EAAW,KAAM,GAAc,EAAU,CAAK,CAAC,CACnE,CAaA,SAAgB,OAAU,GAAG,EAA0C,CACrE,MAAQ,IAAU,EAAW,MAAO,GAAc,CAAC,EAAU,CAAK,CAAC,CACrE,CAUA,SAAgB,IAAO,EAAuC,CAC5D,MAAQ,IAAU,CAAC,EAAU,CAAK,CACpC"}
@@ -29,7 +29,7 @@ export declare function anyOf<T>(...predicates: Predicate<T>[]): Predicate<T>;
29
29
  * Returns a predicate that is `true` when none of the provided predicates match.
30
30
  * With a single predicate this is equivalent to logical NOT.
31
31
  *
32
- * With zero predicates, returns `true` for all values (nothing fails — vacuous truth).
32
+ * With zero predicates, returns `true` for all values (nothing fails: vacuous truth).
33
33
  *
34
34
  * @example
35
35
  * ```ts
@@ -1,17 +1,2 @@
1
- //#region src/guards/combinators.ts
2
- function e(...e) {
3
- return (t) => e.every((e) => e(t));
4
- }
5
- function t(...e) {
6
- return (t) => e.some((e) => e(t));
7
- }
8
- function n(...e) {
9
- return (t) => e.every((e) => !e(t));
10
- }
11
- function r(e) {
12
- return (t) => !e(t);
13
- }
14
- //#endregion
15
- export { e as allOf, t as anyOf, n as noneOf, r as not };
16
-
1
+ function allOf(...e){return t=>e.every(e=>e(t))}function anyOf(...e){return t=>e.some(e=>e(t))}function noneOf(...e){return t=>e.every(e=>!e(t))}function not(e){return t=>!e(t)}export{allOf,anyOf,noneOf,not};
17
2
  //# sourceMappingURL=combinators.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"combinators.js","names":[],"sources":["../../src/guards/combinators.ts"],"sourcesContent":["import type { Predicate } from '../types';\n\n/**\n * Returns a predicate that is `true` only when every provided predicate is `true`.\n *\n * With zero predicates, returns `true` for all values (vacuous truth).\n *\n * @example\n * ```ts\n * const isPositiveEven = allOf(\n * (n) => n > 0,\n * (n) => n % 2 === 0,\n * );\n * [1, 2, 3, 4].filter(isPositiveEven); // [2, 4]\n * ```\n */\nexport function allOf<T>(...predicates: Predicate<T>[]): Predicate<T> {\n return (value) => predicates.every((predicate) => predicate(value));\n}\n\n/**\n * Returns a predicate that is `true` when at least one provided predicate is `true`.\n *\n * With zero predicates, returns `false` for all values (vacuous falsity).\n *\n * @example\n * ```ts\n * [1, 2, 3, 4].filter(anyOf((n) => n === 1, (n) => n === 3)); // [1, 3]\n * ```\n */\nexport function anyOf<T>(...predicates: Predicate<T>[]): Predicate<T> {\n return (value) => predicates.some((predicate) => predicate(value));\n}\n\n/**\n * Returns a predicate that is `true` when none of the provided predicates match.\n * With a single predicate this is equivalent to logical NOT.\n *\n * With zero predicates, returns `true` for all values (nothing fails — vacuous truth).\n *\n * @example\n * ```ts\n * [1, 2, 3, 4].filter(noneOf((n) => n % 2 === 0)); // [1, 3]\n * ```\n */\nexport function noneOf<T>(...predicates: Predicate<T>[]): Predicate<T> {\n return (value) => predicates.every((predicate) => !predicate(value));\n}\n\n/**\n * Returns a predicate that negates the given predicate.\n *\n * @example\n * ```ts\n * [1, 2, 3, 4].filter(not((n) => n % 2 === 0)); // [1, 3]\n * ```\n */\nexport function not<T>(predicate: Predicate<T>): Predicate<T> {\n return (value) => !predicate(value);\n}\n"],"mappings":";AAgBA,SAAgB,EAAS,GAAG,GAA0C;CACpE,QAAQ,MAAU,EAAW,OAAO,MAAc,EAAU,CAAK,CAAC;AACpE;AAYA,SAAgB,EAAS,GAAG,GAA0C;CACpE,QAAQ,MAAU,EAAW,MAAM,MAAc,EAAU,CAAK,CAAC;AACnE;AAaA,SAAgB,EAAU,GAAG,GAA0C;CACrE,QAAQ,MAAU,EAAW,OAAO,MAAc,CAAC,EAAU,CAAK,CAAC;AACrE;AAUA,SAAgB,EAAO,GAAuC;CAC5D,QAAQ,MAAU,CAAC,EAAU,CAAK;AACpC"}
1
+ {"version":3,"file":"combinators.js","names":[],"sources":["../../src/guards/combinators.ts"],"sourcesContent":["import type { Predicate } from '../types';\n\n/**\n * Returns a predicate that is `true` only when every provided predicate is `true`.\n *\n * With zero predicates, returns `true` for all values (vacuous truth).\n *\n * @example\n * ```ts\n * const isPositiveEven = allOf(\n * (n) => n > 0,\n * (n) => n % 2 === 0,\n * );\n * [1, 2, 3, 4].filter(isPositiveEven); // [2, 4]\n * ```\n */\nexport function allOf<T>(...predicates: Predicate<T>[]): Predicate<T> {\n return (value) => predicates.every((predicate) => predicate(value));\n}\n\n/**\n * Returns a predicate that is `true` when at least one provided predicate is `true`.\n *\n * With zero predicates, returns `false` for all values (vacuous falsity).\n *\n * @example\n * ```ts\n * [1, 2, 3, 4].filter(anyOf((n) => n === 1, (n) => n === 3)); // [1, 3]\n * ```\n */\nexport function anyOf<T>(...predicates: Predicate<T>[]): Predicate<T> {\n return (value) => predicates.some((predicate) => predicate(value));\n}\n\n/**\n * Returns a predicate that is `true` when none of the provided predicates match.\n * With a single predicate this is equivalent to logical NOT.\n *\n * With zero predicates, returns `true` for all values (nothing fails: vacuous truth).\n *\n * @example\n * ```ts\n * [1, 2, 3, 4].filter(noneOf((n) => n % 2 === 0)); // [1, 3]\n * ```\n */\nexport function noneOf<T>(...predicates: Predicate<T>[]): Predicate<T> {\n return (value) => predicates.every((predicate) => !predicate(value));\n}\n\n/**\n * Returns a predicate that negates the given predicate.\n *\n * @example\n * ```ts\n * [1, 2, 3, 4].filter(not((n) => n % 2 === 0)); // [1, 3]\n * ```\n */\nexport function not<T>(predicate: Predicate<T>): Predicate<T> {\n return (value) => !predicate(value);\n}\n"],"mappings":"AAgBA,SAAgB,MAAS,GAAG,EAA0C,CACpE,MAAQ,IAAU,EAAW,MAAO,GAAc,EAAU,CAAK,CAAC,CACpE,CAYA,SAAgB,MAAS,GAAG,EAA0C,CACpE,MAAQ,IAAU,EAAW,KAAM,GAAc,EAAU,CAAK,CAAC,CACnE,CAaA,SAAgB,OAAU,GAAG,EAA0C,CACrE,MAAQ,IAAU,EAAW,MAAO,GAAc,CAAC,EAAU,CAAK,CAAC,CACrE,CAUA,SAAgB,IAAO,EAAuC,CAC5D,MAAQ,IAAU,CAAC,EAAU,CAAK,CACpC"}
@@ -1,17 +1 @@
1
- import { isEqual as e } from "./isEqual.js";
2
- import { allOf as t, anyOf as n, noneOf as r, not as i } from "./combinators.js";
3
- import { isAbortError as a } from "./isAbortError.js";
4
- import { isDate as o } from "./isDate.js";
5
- import { isDefined as s } from "./isDefined.js";
6
- import { isPlainObject as c } from "./isPlainObject.js";
7
- import { isEmpty as l } from "./isEmpty.js";
8
- import { isError as u } from "./isError.js";
9
- import { isFunction as d } from "./isFunction.js";
10
- import { isMatch as f } from "./isMatch.js";
11
- import { isNil as p } from "./isNil.js";
12
- import { isNumber as m } from "./isNumber.js";
13
- import { isPrimitive as h } from "./isPrimitive.js";
14
- import { isPromise as g } from "./isPromise.js";
15
- import { isRegex as _ } from "./isRegex.js";
16
- import { shallowEqual as v } from "./shallowEqual.js";
17
- export { t as allOf, n as anyOf, a as isAbortError, o as isDate, s as isDefined, l as isEmpty, e as isEqual, u as isError, d as isFunction, f as isMatch, p as isNil, m as isNumber, c as isPlainObject, h as isPrimitive, g as isPromise, _ as isRegex, r as noneOf, i as not, v as shallowEqual };
1
+ import{isEqual as e}from"./isEqual.js";import{allOf as t,anyOf as n,noneOf as r,not as i}from"./combinators.js";import{isAbortError as a}from"./isAbortError.js";import{isDate as o}from"./isDate.js";import{isDefined as s}from"./isDefined.js";import{isPlainObject as c}from"./isPlainObject.js";import{isEmpty as l}from"./isEmpty.js";import{isError as u}from"./isError.js";import{isFunction as d}from"./isFunction.js";import{isMatch as f}from"./isMatch.js";import{isNil as p}from"./isNil.js";import{isNumber as m}from"./isNumber.js";import{isPrimitive as h}from"./isPrimitive.js";import{isPromise as g}from"./isPromise.js";import{isRegex as _}from"./isRegex.js";import{shallowEqual as v}from"./shallowEqual.js";export{t as allOf,n as anyOf,a as isAbortError,o as isDate,s as isDefined,l as isEmpty,e as isEqual,u as isError,d as isFunction,f as isMatch,p as isNil,m as isNumber,c as isPlainObject,h as isPrimitive,g as isPromise,_ as isRegex,r as noneOf,i as not,v as shallowEqual};
@@ -1,2 +1,2 @@
1
- function e(e){return e instanceof Error&&e.name===`AbortError`}exports.isAbortError=e;
1
+ function isAbortError(e){return e instanceof Error&&e.name===`AbortError`}exports.isAbortError=isAbortError;
2
2
  //# sourceMappingURL=isAbortError.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"isAbortError.cjs","names":[],"sources":["../../src/guards/isAbortError.ts"],"sourcesContent":["/**\n * Returns `true` if the given value is an `AbortError` — i.e. an `Error` whose\n * `name` is `'AbortError'`, as thrown by `AbortController` / `AbortSignal`.\n *\n * @example\n * ```ts\n * try {\n * await fetch(url, { signal });\n * } catch (err) {\n * if (isAbortError(err)) return; // request was cancelled — ignore\n * throw err;\n * }\n * ```\n *\n * @param value - The value to test.\n * @returns `true` when `value` is an `Error` with `name === 'AbortError'`.\n */\nexport function isAbortError(value: unknown): value is Error {\n return value instanceof Error && value.name === 'AbortError';\n}\n"],"mappings":"AAiBA,SAAgB,EAAa,EAAgC,CAC3D,OAAO,aAAiB,OAAS,EAAM,OAAS,YAClD"}
1
+ {"version":3,"file":"isAbortError.cjs","names":[],"sources":["../../src/guards/isAbortError.ts"],"sourcesContent":["/**\n * Returns `true` if the given value is an `AbortError`: i.e. an `Error` whose\n * `name` is `'AbortError'`, as thrown by `AbortController` / `AbortSignal`.\n *\n * @example\n * ```ts\n * try {\n * await fetch(url, { signal });\n * } catch (err) {\n * if (isAbortError(err)) return; // request was cancelled: ignore\n * throw err;\n * }\n * ```\n *\n * @param value - The value to test.\n * @returns `true` when `value` is an `Error` with `name === 'AbortError'`.\n */\nexport function isAbortError(value: unknown): value is Error {\n return value instanceof Error && value.name === 'AbortError';\n}\n"],"mappings":"AAiBA,SAAgB,aAAa,EAAgC,CAC3D,OAAO,aAAiB,OAAS,EAAM,OAAS,YAClD"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Returns `true` if the given value is an `AbortError` — i.e. an `Error` whose
2
+ * Returns `true` if the given value is an `AbortError`: i.e. an `Error` whose
3
3
  * `name` is `'AbortError'`, as thrown by `AbortController` / `AbortSignal`.
4
4
  *
5
5
  * @example
@@ -7,7 +7,7 @@
7
7
  * try {
8
8
  * await fetch(url, { signal });
9
9
  * } catch (err) {
10
- * if (isAbortError(err)) return; // request was cancelled — ignore
10
+ * if (isAbortError(err)) return; // request was cancelled: ignore
11
11
  * throw err;
12
12
  * }
13
13
  * ```
@@ -1,8 +1,2 @@
1
- //#region src/guards/isAbortError.ts
2
- function e(e) {
3
- return e instanceof Error && e.name === "AbortError";
4
- }
5
- //#endregion
6
- export { e as isAbortError };
7
-
1
+ function isAbortError(e){return e instanceof Error&&e.name===`AbortError`}export{isAbortError};
8
2
  //# sourceMappingURL=isAbortError.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"isAbortError.js","names":[],"sources":["../../src/guards/isAbortError.ts"],"sourcesContent":["/**\n * Returns `true` if the given value is an `AbortError` — i.e. an `Error` whose\n * `name` is `'AbortError'`, as thrown by `AbortController` / `AbortSignal`.\n *\n * @example\n * ```ts\n * try {\n * await fetch(url, { signal });\n * } catch (err) {\n * if (isAbortError(err)) return; // request was cancelled — ignore\n * throw err;\n * }\n * ```\n *\n * @param value - The value to test.\n * @returns `true` when `value` is an `Error` with `name === 'AbortError'`.\n */\nexport function isAbortError(value: unknown): value is Error {\n return value instanceof Error && value.name === 'AbortError';\n}\n"],"mappings":";AAiBA,SAAgB,EAAa,GAAgC;CAC3D,OAAO,aAAiB,SAAS,EAAM,SAAS;AAClD"}
1
+ {"version":3,"file":"isAbortError.js","names":[],"sources":["../../src/guards/isAbortError.ts"],"sourcesContent":["/**\n * Returns `true` if the given value is an `AbortError`: i.e. an `Error` whose\n * `name` is `'AbortError'`, as thrown by `AbortController` / `AbortSignal`.\n *\n * @example\n * ```ts\n * try {\n * await fetch(url, { signal });\n * } catch (err) {\n * if (isAbortError(err)) return; // request was cancelled: ignore\n * throw err;\n * }\n * ```\n *\n * @param value - The value to test.\n * @returns `true` when `value` is an `Error` with `name === 'AbortError'`.\n */\nexport function isAbortError(value: unknown): value is Error {\n return value instanceof Error && value.name === 'AbortError';\n}\n"],"mappings":"AAiBA,SAAgB,aAAa,EAAgC,CAC3D,OAAO,aAAiB,OAAS,EAAM,OAAS,YAClD"}
@@ -1,2 +1,2 @@
1
- function e(e){return e instanceof Date&&!Number.isNaN(e.getTime())}exports.isDate=e;
1
+ function isDate(e){return e instanceof Date&&!Number.isNaN(e.getTime())}exports.isDate=isDate;
2
2
  //# sourceMappingURL=isDate.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"isDate.cjs","names":[],"sources":["../../src/guards/isDate.ts"],"sourcesContent":["/**\n * Determines if the passed value is a valid Date Object.\n *\n * @example\n * ```ts\n * isDate(new Date()); // true\n * isDate(123); // false\n * ```\n *\n * @param arg - The argument to be checked.\n *\n * @returns `true` if the value is a valid Date object, else `false`.\n */\nexport function isDate(arg: unknown): arg is Date {\n return arg instanceof Date && !Number.isNaN(arg.getTime());\n}\n"],"mappings":"AAaA,SAAgB,EAAO,EAA2B,CAChD,OAAO,aAAe,MAAQ,CAAC,OAAO,MAAM,EAAI,QAAQ,CAAC,CAC3D"}
1
+ {"version":3,"file":"isDate.cjs","names":[],"sources":["../../src/guards/isDate.ts"],"sourcesContent":["/**\n * Determines if the passed value is a valid Date Object.\n *\n * @example\n * ```ts\n * isDate(new Date()); // true\n * isDate(123); // false\n * ```\n *\n * @param arg - The argument to be checked.\n *\n * @returns `true` if the value is a valid Date object, else `false`.\n */\nexport function isDate(arg: unknown): arg is Date {\n return arg instanceof Date && !Number.isNaN(arg.getTime());\n}\n"],"mappings":"AAaA,SAAgB,OAAO,EAA2B,CAChD,OAAO,aAAe,MAAQ,CAAC,OAAO,MAAM,EAAI,QAAQ,CAAC,CAC3D"}
@@ -1,8 +1,2 @@
1
- //#region src/guards/isDate.ts
2
- function e(e) {
3
- return e instanceof Date && !Number.isNaN(e.getTime());
4
- }
5
- //#endregion
6
- export { e as isDate };
7
-
1
+ function isDate(e){return e instanceof Date&&!Number.isNaN(e.getTime())}export{isDate};
8
2
  //# sourceMappingURL=isDate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"isDate.js","names":[],"sources":["../../src/guards/isDate.ts"],"sourcesContent":["/**\n * Determines if the passed value is a valid Date Object.\n *\n * @example\n * ```ts\n * isDate(new Date()); // true\n * isDate(123); // false\n * ```\n *\n * @param arg - The argument to be checked.\n *\n * @returns `true` if the value is a valid Date object, else `false`.\n */\nexport function isDate(arg: unknown): arg is Date {\n return arg instanceof Date && !Number.isNaN(arg.getTime());\n}\n"],"mappings":";AAaA,SAAgB,EAAO,GAA2B;CAChD,OAAO,aAAe,QAAQ,CAAC,OAAO,MAAM,EAAI,QAAQ,CAAC;AAC3D"}
1
+ {"version":3,"file":"isDate.js","names":[],"sources":["../../src/guards/isDate.ts"],"sourcesContent":["/**\n * Determines if the passed value is a valid Date Object.\n *\n * @example\n * ```ts\n * isDate(new Date()); // true\n * isDate(123); // false\n * ```\n *\n * @param arg - The argument to be checked.\n *\n * @returns `true` if the value is a valid Date object, else `false`.\n */\nexport function isDate(arg: unknown): arg is Date {\n return arg instanceof Date && !Number.isNaN(arg.getTime());\n}\n"],"mappings":"AAaA,SAAgB,OAAO,EAA2B,CAChD,OAAO,aAAe,MAAQ,CAAC,OAAO,MAAM,EAAI,QAAQ,CAAC,CAC3D"}
@@ -1,2 +1,2 @@
1
- function e(e){return e!==void 0}exports.isDefined=e;
1
+ function isDefined(e){return e!==void 0}exports.isDefined=isDefined;
2
2
  //# sourceMappingURL=isDefined.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"isDefined.cjs","names":[],"sources":["../../src/guards/isDefined.ts"],"sourcesContent":["/**\n * Checks if a value is defined (not `undefined`).\n *\n * @example\n * ```ts\n * isDefined(123); // true\n * isDefined(undefined); // false\n * isDefined('hello world'); // true\n * isDefined({}); // true\n * isDefined([]); // true\n * isDefined(null); // true\n * ```\n *\n * @param arg - The value to check.\n *\n * @returns `true` if the value is defined, else `false`.\n */\nexport function isDefined<T>(arg: T | undefined): arg is T {\n return arg !== undefined;\n}\n"],"mappings":"AAiBA,SAAgB,EAAa,EAA8B,CACzD,OAAO,IAAQ,IAAA,EACjB"}
1
+ {"version":3,"file":"isDefined.cjs","names":[],"sources":["../../src/guards/isDefined.ts"],"sourcesContent":["/**\n * Checks if a value is defined (not `undefined`).\n *\n * @example\n * ```ts\n * isDefined(123); // true\n * isDefined(undefined); // false\n * isDefined('hello world'); // true\n * isDefined({}); // true\n * isDefined([]); // true\n * isDefined(null); // true\n * ```\n *\n * @param arg - The value to check.\n *\n * @returns `true` if the value is defined, else `false`.\n */\nexport function isDefined<T>(arg: T | undefined): arg is T {\n return arg !== undefined;\n}\n"],"mappings":"AAiBA,SAAgB,UAAa,EAA8B,CACzD,OAAO,IAAQ,IAAA,EACjB"}
@@ -1,8 +1,2 @@
1
- //#region src/guards/isDefined.ts
2
- function e(e) {
3
- return e !== void 0;
4
- }
5
- //#endregion
6
- export { e as isDefined };
7
-
1
+ function isDefined(e){return e!==void 0}export{isDefined};
8
2
  //# sourceMappingURL=isDefined.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"isDefined.js","names":[],"sources":["../../src/guards/isDefined.ts"],"sourcesContent":["/**\n * Checks if a value is defined (not `undefined`).\n *\n * @example\n * ```ts\n * isDefined(123); // true\n * isDefined(undefined); // false\n * isDefined('hello world'); // true\n * isDefined({}); // true\n * isDefined([]); // true\n * isDefined(null); // true\n * ```\n *\n * @param arg - The value to check.\n *\n * @returns `true` if the value is defined, else `false`.\n */\nexport function isDefined<T>(arg: T | undefined): arg is T {\n return arg !== undefined;\n}\n"],"mappings":";AAiBA,SAAgB,EAAa,GAA8B;CACzD,OAAO,MAAQ,KAAA;AACjB"}
1
+ {"version":3,"file":"isDefined.js","names":[],"sources":["../../src/guards/isDefined.ts"],"sourcesContent":["/**\n * Checks if a value is defined (not `undefined`).\n *\n * @example\n * ```ts\n * isDefined(123); // true\n * isDefined(undefined); // false\n * isDefined('hello world'); // true\n * isDefined({}); // true\n * isDefined([]); // true\n * isDefined(null); // true\n * ```\n *\n * @param arg - The value to check.\n *\n * @returns `true` if the value is defined, else `false`.\n */\nexport function isDefined<T>(arg: T | undefined): arg is T {\n return arg !== undefined;\n}\n"],"mappings":"AAiBA,SAAgB,UAAa,EAA8B,CACzD,OAAO,IAAQ,IAAA,EACjB"}
@@ -1,2 +1,2 @@
1
- const e=require("./isPlainObject.cjs");function t(t){return t==null||t===``?!0:Array.isArray(t)?t.length===0:t instanceof Map||t instanceof Set?t.size===0:e.isPlainObject(t)?Object.keys(t).length===0:!1}exports.isEmpty=t;
1
+ const e=require("./isPlainObject.cjs");function isEmpty(t){return t==null||t===``?!0:Array.isArray(t)?t.length===0:t instanceof Map||t instanceof Set?t.size===0:e.isPlainObject(t)?Object.keys(t).length===0:!1}exports.isEmpty=isEmpty;
2
2
  //# sourceMappingURL=isEmpty.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"isEmpty.cjs","names":[],"sources":["../../src/guards/isEmpty.ts"],"sourcesContent":["import { isPlainObject } from './isPlainObject';\n\n/**\n * Checks if the given argument is empty.\n *\n * @example\n * ```ts\n * isEmpty(null); // true\n * isEmpty(undefined); // true\n * isEmpty([]); // true\n * isEmpty({}); // true\n * isEmpty(''); // true\n * isEmpty(0); // false\n * isEmpty(123); // false\n * isEmpty('abc'); // false\n * isEmpty([1, 2, 3]); // false\n * isEmpty({ a: 1, b: 2 }); // false\n * ```\n *\n * @param arg - The argument to be checked.\n *\n * @returns `true` if all arguments are `null`, `undefined`, `{}`, `[]`, or empty strings. Otherwise, it returns `false`.\n */\nexport function isEmpty(arg: unknown): boolean {\n if (arg === null || arg === undefined || arg === '') return true;\n\n if (Array.isArray(arg)) return arg.length === 0;\n\n if (arg instanceof Map || arg instanceof Set) return arg.size === 0;\n\n if (isPlainObject(arg)) return Object.keys(arg).length === 0;\n\n return false;\n}\n"],"mappings":"uCAuBA,SAAgB,EAAQ,EAAuB,CAS7C,OARI,GAAQ,MAA6B,IAAQ,GAAW,GAExD,MAAM,QAAQ,CAAG,EAAU,EAAI,SAAW,EAE1C,aAAe,KAAO,aAAe,IAAY,EAAI,OAAS,EAE9D,EAAA,cAAc,CAAG,EAAU,OAAO,KAAK,CAAG,CAAC,CAAC,SAAW,EAEpD,EACT"}
1
+ {"version":3,"file":"isEmpty.cjs","names":[],"sources":["../../src/guards/isEmpty.ts"],"sourcesContent":["import { isPlainObject } from './isPlainObject';\n\n/**\n * Checks if the given argument is empty.\n *\n * @example\n * ```ts\n * isEmpty(null); // true\n * isEmpty(undefined); // true\n * isEmpty([]); // true\n * isEmpty({}); // true\n * isEmpty(''); // true\n * isEmpty(0); // false\n * isEmpty(123); // false\n * isEmpty('abc'); // false\n * isEmpty([1, 2, 3]); // false\n * isEmpty({ a: 1, b: 2 }); // false\n * ```\n *\n * @param arg - The argument to be checked.\n *\n * @returns `true` if all arguments are `null`, `undefined`, `{}`, `[]`, or empty strings. Otherwise, it returns `false`.\n */\nexport function isEmpty(arg: unknown): boolean {\n if (arg === null || arg === undefined || arg === '') return true;\n\n if (Array.isArray(arg)) return arg.length === 0;\n\n if (arg instanceof Map || arg instanceof Set) return arg.size === 0;\n\n if (isPlainObject(arg)) return Object.keys(arg).length === 0;\n\n return false;\n}\n"],"mappings":"uCAuBA,SAAgB,QAAQ,EAAuB,CAS7C,OARI,GAAQ,MAA6B,IAAQ,GAAW,GAExD,MAAM,QAAQ,CAAG,EAAU,EAAI,SAAW,EAE1C,aAAe,KAAO,aAAe,IAAY,EAAI,OAAS,EAE9D,EAAA,cAAc,CAAG,EAAU,OAAO,KAAK,CAAG,CAAC,CAAC,SAAW,EAEpD,EACT"}
@@ -1,9 +1,2 @@
1
- import { isPlainObject as e } from "./isPlainObject.js";
2
- //#region src/guards/isEmpty.ts
3
- function t(t) {
4
- return t == null || t === "" ? !0 : Array.isArray(t) ? t.length === 0 : t instanceof Map || t instanceof Set ? t.size === 0 : e(t) ? Object.keys(t).length === 0 : !1;
5
- }
6
- //#endregion
7
- export { t as isEmpty };
8
-
1
+ import{isPlainObject as e}from"./isPlainObject.js";function isEmpty(t){return t==null||t===``?!0:Array.isArray(t)?t.length===0:t instanceof Map||t instanceof Set?t.size===0:e(t)?Object.keys(t).length===0:!1}export{isEmpty};
9
2
  //# sourceMappingURL=isEmpty.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"isEmpty.js","names":[],"sources":["../../src/guards/isEmpty.ts"],"sourcesContent":["import { isPlainObject } from './isPlainObject';\n\n/**\n * Checks if the given argument is empty.\n *\n * @example\n * ```ts\n * isEmpty(null); // true\n * isEmpty(undefined); // true\n * isEmpty([]); // true\n * isEmpty({}); // true\n * isEmpty(''); // true\n * isEmpty(0); // false\n * isEmpty(123); // false\n * isEmpty('abc'); // false\n * isEmpty([1, 2, 3]); // false\n * isEmpty({ a: 1, b: 2 }); // false\n * ```\n *\n * @param arg - The argument to be checked.\n *\n * @returns `true` if all arguments are `null`, `undefined`, `{}`, `[]`, or empty strings. Otherwise, it returns `false`.\n */\nexport function isEmpty(arg: unknown): boolean {\n if (arg === null || arg === undefined || arg === '') return true;\n\n if (Array.isArray(arg)) return arg.length === 0;\n\n if (arg instanceof Map || arg instanceof Set) return arg.size === 0;\n\n if (isPlainObject(arg)) return Object.keys(arg).length === 0;\n\n return false;\n}\n"],"mappings":";;AAuBA,SAAgB,EAAQ,GAAuB;CAS7C,OARI,KAAQ,QAA6B,MAAQ,KAAW,KAExD,MAAM,QAAQ,CAAG,IAAU,EAAI,WAAW,IAE1C,aAAe,OAAO,aAAe,MAAY,EAAI,SAAS,IAE9D,EAAc,CAAG,IAAU,OAAO,KAAK,CAAG,CAAC,CAAC,WAAW,IAEpD;AACT"}
1
+ {"version":3,"file":"isEmpty.js","names":[],"sources":["../../src/guards/isEmpty.ts"],"sourcesContent":["import { isPlainObject } from './isPlainObject';\n\n/**\n * Checks if the given argument is empty.\n *\n * @example\n * ```ts\n * isEmpty(null); // true\n * isEmpty(undefined); // true\n * isEmpty([]); // true\n * isEmpty({}); // true\n * isEmpty(''); // true\n * isEmpty(0); // false\n * isEmpty(123); // false\n * isEmpty('abc'); // false\n * isEmpty([1, 2, 3]); // false\n * isEmpty({ a: 1, b: 2 }); // false\n * ```\n *\n * @param arg - The argument to be checked.\n *\n * @returns `true` if all arguments are `null`, `undefined`, `{}`, `[]`, or empty strings. Otherwise, it returns `false`.\n */\nexport function isEmpty(arg: unknown): boolean {\n if (arg === null || arg === undefined || arg === '') return true;\n\n if (Array.isArray(arg)) return arg.length === 0;\n\n if (arg instanceof Map || arg instanceof Set) return arg.size === 0;\n\n if (isPlainObject(arg)) return Object.keys(arg).length === 0;\n\n return false;\n}\n"],"mappings":"mDAuBA,SAAgB,QAAQ,EAAuB,CAS7C,OARI,GAAQ,MAA6B,IAAQ,GAAW,GAExD,MAAM,QAAQ,CAAG,EAAU,EAAI,SAAW,EAE1C,aAAe,KAAO,aAAe,IAAY,EAAI,OAAS,EAE9D,EAAc,CAAG,EAAU,OAAO,KAAK,CAAG,CAAC,CAAC,SAAW,EAEpD,EACT"}
@@ -1,2 +1,2 @@
1
- function e(e,n){return t(e,n,new WeakMap)}function t(e,n,r){if(e===n)return!0;if(e==null||n==null||typeof e!=typeof n||typeof e!=`object`||typeof n!=`object`)return!1;if(r.has(e))return r.get(e)===n;if(r.set(e,n),Array.isArray(e)||Array.isArray(n))return!Array.isArray(e)||!Array.isArray(n)||e.length!==n.length?!1:e.every((e,i)=>t(e,n[i],r));if(e instanceof Date&&n instanceof Date)return e.getTime()===n.getTime();if(e instanceof Map&&n instanceof Map){if(e.size!==n.size)return!1;for(let[i,a]of e)if(!n.has(i)||!t(a,n.get(i),r))return!1;return!0}if(e instanceof Set&&n instanceof Set){if(e.size!==n.size)return!1;let i=[...n];for(let a of e)if(typeof a==`string`||typeof a==`number`||typeof a==`boolean`||a==null){if(!n.has(a))return!1}else if(!i.some(e=>t(a,e,r)))return!1;return!0}if(e instanceof RegExp||n instanceof RegExp)return e instanceof RegExp&&n instanceof RegExp&&e.source===n.source&&e.flags===n.flags;if(e instanceof Map||n instanceof Map||e instanceof Set||n instanceof Set)return!1;let i=Object.keys(e),a=Object.keys(n);if(i.length!==a.length)return!1;for(let a of i)if(!Object.hasOwn(n,a)||!t(e[a],n[a],r))return!1;return!0}exports.isEqual=e;
1
+ function isEqual(e,t){return safeIsEqual(e,t,new WeakMap)}function safeIsEqual(e,t,n){if(e===t)return!0;if(e==null||t==null||typeof e!=typeof t||typeof e!=`object`||typeof t!=`object`)return!1;if(n.has(e))return n.get(e)===t;if(n.set(e,t),Array.isArray(e)||Array.isArray(t))return!Array.isArray(e)||!Array.isArray(t)||e.length!==t.length?!1:e.every((e,r)=>safeIsEqual(e,t[r],n));if(e instanceof Date&&t instanceof Date)return e.getTime()===t.getTime();if(e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(let[r,i]of e)if(!t.has(r)||!safeIsEqual(i,t.get(r),n))return!1;return!0}if(e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;let r=[...t];for(let i of e)if(typeof i==`string`||typeof i==`number`||typeof i==`boolean`||i==null){if(!t.has(i))return!1}else if(!r.some(e=>safeIsEqual(i,e,n)))return!1;return!0}if(e instanceof RegExp||t instanceof RegExp)return e instanceof RegExp&&t instanceof RegExp&&e.source===t.source&&e.flags===t.flags;if(e instanceof Map||t instanceof Map||e instanceof Set||t instanceof Set)return!1;let r=Object.keys(e),i=Object.keys(t);if(r.length!==i.length)return!1;for(let i of r)if(!Object.hasOwn(t,i)||!safeIsEqual(e[i],t[i],n))return!1;return!0}exports.isEqual=isEqual;
2
2
  //# sourceMappingURL=isEqual.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"isEqual.cjs","names":[],"sources":["../../src/guards/isEqual.ts"],"sourcesContent":["/**\n * Recursively compares two values for deep equality.\n * Supports plain objects, arrays, `Date`, `Map`, `Set`, `RegExp`, and circular references.\n *\n * Uses `===` for the primitive comparison, so `isEqual(NaN, NaN)` is `false` and\n * `isEqual(0, -0)` is `true` — the opposite of `shallowEqual`, which uses `Object.is` and\n * treats `NaN` as equal to itself and `-0` as distinct from `0`.\n *\n * For one-level-deep reference equality, use `shallowEqual` instead.\n *\n * @example\n * ```ts\n * isEqual([1, 2, 3], [1, 2, 3]); // true\n * isEqual({ a: { b: 2 } }, { a: { b: 2 } }); // true\n * isEqual(new Date('2023-01-01'), new Date('2023-01-01')); // true\n * isEqual(new Map([['k', 1]]), new Map([['k', 1]])); // true\n * ```\n *\n * @param a - First value to compare.\n * @param b - Second value to compare.\n * @returns `true` if the values are deeply equal.\n */\nexport function isEqual(a: unknown, b: unknown): boolean {\n return safeIsEqual(a, b, new WeakMap());\n}\n\nfunction safeIsEqual(a: unknown, b: unknown, visited: WeakMap<object, object>): boolean {\n // Check for strict equality (handles primitives and references)\n if (a === b) return true;\n\n // If either is null or not an object, they're not equal\n if (a == null || b == null || typeof a !== typeof b || typeof a !== 'object' || typeof b !== 'object') return false;\n\n // Check for circular references\n // We only track 'a' because if 'a' is cyclical, 'b' must also be cyclic to be equal\n if (visited.has(a as object)) {\n return visited.get(a as object) === b;\n }\n\n visited.set(a as object, b as object);\n\n // Array comparison\n if (Array.isArray(a) || Array.isArray(b)) {\n if (!Array.isArray(a) || !Array.isArray(b) || a.length !== b.length) return false;\n\n return a.every((item, idx) => safeIsEqual(item, b[idx], visited));\n }\n\n // Date comparison\n if (a instanceof Date && b instanceof Date) {\n return a.getTime() === b.getTime();\n }\n\n // Map comparison\n if (a instanceof Map && b instanceof Map) {\n if (a.size !== b.size) return false;\n\n for (const [k, v] of a) {\n if (!b.has(k) || !safeIsEqual(v, b.get(k), visited)) return false;\n }\n\n return true;\n }\n\n // Set comparison — fast path for primitive values, deep for objects\n if (a instanceof Set && b instanceof Set) {\n if (a.size !== b.size) return false;\n\n const bItems = [...b];\n\n for (const v of a) {\n // O(1) path for primitives — avoid the O(n) .some() scan\n if (typeof v === 'string' || typeof v === 'number' || typeof v === 'boolean' || v === null || v === undefined) {\n if (!b.has(v)) return false;\n } else if (!bItems.some((bv) => safeIsEqual(v, bv, visited))) {\n return false;\n }\n }\n\n return true;\n }\n\n // RegExp comparison\n if (a instanceof RegExp || b instanceof RegExp) {\n return a instanceof RegExp && b instanceof RegExp && a.source === b.source && a.flags === b.flags;\n }\n\n // Cross-type guards: Map/Set vs plain objects are never equal\n if (a instanceof Map || b instanceof Map) return false;\n\n if (a instanceof Set || b instanceof Set) return false;\n\n // Object comparison\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n\n if (keysA.length !== keysB.length) return false;\n\n for (const key of keysA) {\n if (\n !Object.hasOwn(b, key) ||\n !safeIsEqual((a as Record<string, unknown>)[key], (b as Record<string, unknown>)[key], visited)\n )\n return false;\n }\n\n return true;\n}\n"],"mappings":"AAsBA,SAAgB,EAAQ,EAAY,EAAqB,CACvD,OAAO,EAAY,EAAG,EAAG,IAAI,OAAS,CACxC,CAEA,SAAS,EAAY,EAAY,EAAY,EAA2C,CAEtF,GAAI,IAAM,EAAG,MAAO,GAGpB,GAAI,GAAK,MAAQ,GAAK,MAAQ,OAAO,GAAM,OAAO,GAAK,OAAO,GAAM,UAAY,OAAO,GAAM,SAAU,MAAO,GAI9G,GAAI,EAAQ,IAAI,CAAW,EACzB,OAAO,EAAQ,IAAI,CAAW,IAAM,EAMtC,GAHA,EAAQ,IAAI,EAAa,CAAW,EAGhC,MAAM,QAAQ,CAAC,GAAK,MAAM,QAAQ,CAAC,EAGrC,MAFI,CAAC,MAAM,QAAQ,CAAC,GAAK,CAAC,MAAM,QAAQ,CAAC,GAAK,EAAE,SAAW,EAAE,OAAe,GAErE,EAAE,OAAO,EAAM,IAAQ,EAAY,EAAM,EAAE,GAAM,CAAO,CAAC,EAIlE,GAAI,aAAa,MAAQ,aAAa,KACpC,OAAO,EAAE,QAAQ,IAAM,EAAE,QAAQ,EAInC,GAAI,aAAa,KAAO,aAAa,IAAK,CACxC,GAAI,EAAE,OAAS,EAAE,KAAM,MAAO,GAE9B,IAAK,GAAM,CAAC,EAAG,KAAM,EACnB,GAAI,CAAC,EAAE,IAAI,CAAC,GAAK,CAAC,EAAY,EAAG,EAAE,IAAI,CAAC,EAAG,CAAO,EAAG,MAAO,GAG9D,MAAO,EACT,CAGA,GAAI,aAAa,KAAO,aAAa,IAAK,CACxC,GAAI,EAAE,OAAS,EAAE,KAAM,MAAO,GAE9B,IAAM,EAAS,CAAC,GAAG,CAAC,EAEpB,IAAK,IAAM,KAAK,EAEd,GAAI,OAAO,GAAM,UAAY,OAAO,GAAM,UAAY,OAAO,GAAM,WAAa,GAAM,KAChF,IAAA,CAAC,EAAE,IAAI,CAAC,EAAG,MAAO,EAAA,MACjB,GAAI,CAAC,EAAO,KAAM,GAAO,EAAY,EAAG,EAAI,CAAO,CAAC,EACzD,MAAO,GAIX,MAAO,EACT,CAGA,GAAI,aAAa,QAAU,aAAa,OACtC,OAAO,aAAa,QAAU,aAAa,QAAU,EAAE,SAAW,EAAE,QAAU,EAAE,QAAU,EAAE,MAM9F,GAFI,aAAa,KAAO,aAAa,KAEjC,aAAa,KAAO,aAAa,IAAK,MAAO,GAGjD,IAAM,EAAQ,OAAO,KAAK,CAAC,EACrB,EAAQ,OAAO,KAAK,CAAC,EAE3B,GAAI,EAAM,SAAW,EAAM,OAAQ,MAAO,GAE1C,IAAK,IAAM,KAAO,EAChB,GACE,CAAC,OAAO,OAAO,EAAG,CAAG,GACrB,CAAC,EAAa,EAA8B,GAAO,EAA8B,GAAM,CAAO,EAE9F,MAAO,GAGX,MAAO,EACT"}
1
+ {"version":3,"file":"isEqual.cjs","names":[],"sources":["../../src/guards/isEqual.ts"],"sourcesContent":["/**\n * Recursively compares two values for deep equality.\n * Supports plain objects, arrays, `Date`, `Map`, `Set`, `RegExp`, and circular references.\n *\n * Uses `===` for the primitive comparison, so `isEqual(NaN, NaN)` is `false` and\n * `isEqual(0, -0)` is `true`: the opposite of `shallowEqual`, which uses `Object.is` and\n * treats `NaN` as equal to itself and `-0` as distinct from `0`.\n *\n * For one-level-deep reference equality, use `shallowEqual` instead.\n *\n * @example\n * ```ts\n * isEqual([1, 2, 3], [1, 2, 3]); // true\n * isEqual({ a: { b: 2 } }, { a: { b: 2 } }); // true\n * isEqual(new Date('2023-01-01'), new Date('2023-01-01')); // true\n * isEqual(new Map([['k', 1]]), new Map([['k', 1]])); // true\n * ```\n *\n * @param a - First value to compare.\n * @param b - Second value to compare.\n * @returns `true` if the values are deeply equal.\n */\nexport function isEqual(a: unknown, b: unknown): boolean {\n return safeIsEqual(a, b, new WeakMap());\n}\n\nfunction safeIsEqual(a: unknown, b: unknown, visited: WeakMap<object, object>): boolean {\n // Check for strict equality (handles primitives and references)\n if (a === b) return true;\n\n // If either is null or not an object, they're not equal\n if (a == null || b == null || typeof a !== typeof b || typeof a !== 'object' || typeof b !== 'object') return false;\n\n // Check for circular references\n // We only track 'a' because if 'a' is cyclical, 'b' must also be cyclic to be equal\n if (visited.has(a as object)) {\n return visited.get(a as object) === b;\n }\n\n visited.set(a as object, b as object);\n\n // Array comparison\n if (Array.isArray(a) || Array.isArray(b)) {\n if (!Array.isArray(a) || !Array.isArray(b) || a.length !== b.length) return false;\n\n return a.every((item, idx) => safeIsEqual(item, b[idx], visited));\n }\n\n // Date comparison\n if (a instanceof Date && b instanceof Date) {\n return a.getTime() === b.getTime();\n }\n\n // Map comparison\n if (a instanceof Map && b instanceof Map) {\n if (a.size !== b.size) return false;\n\n for (const [k, v] of a) {\n if (!b.has(k) || !safeIsEqual(v, b.get(k), visited)) return false;\n }\n\n return true;\n }\n\n // Set comparison: fast path for primitive values, deep for objects\n if (a instanceof Set && b instanceof Set) {\n if (a.size !== b.size) return false;\n\n const bItems = [...b];\n\n for (const v of a) {\n // O(1) path for primitives: avoid the O(n) .some() scan\n if (typeof v === 'string' || typeof v === 'number' || typeof v === 'boolean' || v === null || v === undefined) {\n if (!b.has(v)) return false;\n } else if (!bItems.some((bv) => safeIsEqual(v, bv, visited))) {\n return false;\n }\n }\n\n return true;\n }\n\n // RegExp comparison\n if (a instanceof RegExp || b instanceof RegExp) {\n return a instanceof RegExp && b instanceof RegExp && a.source === b.source && a.flags === b.flags;\n }\n\n // Cross-type guards: Map/Set vs plain objects are never equal\n if (a instanceof Map || b instanceof Map) return false;\n\n if (a instanceof Set || b instanceof Set) return false;\n\n // Object comparison\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n\n if (keysA.length !== keysB.length) return false;\n\n for (const key of keysA) {\n if (\n !Object.hasOwn(b, key) ||\n !safeIsEqual((a as Record<string, unknown>)[key], (b as Record<string, unknown>)[key], visited)\n )\n return false;\n }\n\n return true;\n}\n"],"mappings":"AAsBA,SAAgB,QAAQ,EAAY,EAAqB,CACvD,OAAO,YAAY,EAAG,EAAG,IAAI,OAAS,CACxC,CAEA,SAAS,YAAY,EAAY,EAAY,EAA2C,CAEtF,GAAI,IAAM,EAAG,MAAO,GAGpB,GAAI,GAAK,MAAQ,GAAK,MAAQ,OAAO,GAAM,OAAO,GAAK,OAAO,GAAM,UAAY,OAAO,GAAM,SAAU,MAAO,GAI9G,GAAI,EAAQ,IAAI,CAAW,EACzB,OAAO,EAAQ,IAAI,CAAW,IAAM,EAMtC,GAHA,EAAQ,IAAI,EAAa,CAAW,EAGhC,MAAM,QAAQ,CAAC,GAAK,MAAM,QAAQ,CAAC,EAGrC,MAFI,CAAC,MAAM,QAAQ,CAAC,GAAK,CAAC,MAAM,QAAQ,CAAC,GAAK,EAAE,SAAW,EAAE,OAAe,GAErE,EAAE,OAAO,EAAM,IAAQ,YAAY,EAAM,EAAE,GAAM,CAAO,CAAC,EAIlE,GAAI,aAAa,MAAQ,aAAa,KACpC,OAAO,EAAE,QAAQ,IAAM,EAAE,QAAQ,EAInC,GAAI,aAAa,KAAO,aAAa,IAAK,CACxC,GAAI,EAAE,OAAS,EAAE,KAAM,MAAO,GAE9B,IAAK,GAAM,CAAC,EAAG,KAAM,EACnB,GAAI,CAAC,EAAE,IAAI,CAAC,GAAK,CAAC,YAAY,EAAG,EAAE,IAAI,CAAC,EAAG,CAAO,EAAG,MAAO,GAG9D,MAAO,EACT,CAGA,GAAI,aAAa,KAAO,aAAa,IAAK,CACxC,GAAI,EAAE,OAAS,EAAE,KAAM,MAAO,GAE9B,IAAM,EAAS,CAAC,GAAG,CAAC,EAEpB,IAAK,IAAM,KAAK,EAEd,GAAI,OAAO,GAAM,UAAY,OAAO,GAAM,UAAY,OAAO,GAAM,WAAa,GAAM,KAChF,IAAA,CAAC,EAAE,IAAI,CAAC,EAAG,MAAO,EAAA,MACjB,GAAI,CAAC,EAAO,KAAM,GAAO,YAAY,EAAG,EAAI,CAAO,CAAC,EACzD,MAAO,GAIX,MAAO,EACT,CAGA,GAAI,aAAa,QAAU,aAAa,OACtC,OAAO,aAAa,QAAU,aAAa,QAAU,EAAE,SAAW,EAAE,QAAU,EAAE,QAAU,EAAE,MAM9F,GAFI,aAAa,KAAO,aAAa,KAEjC,aAAa,KAAO,aAAa,IAAK,MAAO,GAGjD,IAAM,EAAQ,OAAO,KAAK,CAAC,EACrB,EAAQ,OAAO,KAAK,CAAC,EAE3B,GAAI,EAAM,SAAW,EAAM,OAAQ,MAAO,GAE1C,IAAK,IAAM,KAAO,EAChB,GACE,CAAC,OAAO,OAAO,EAAG,CAAG,GACrB,CAAC,YAAa,EAA8B,GAAO,EAA8B,GAAM,CAAO,EAE9F,MAAO,GAGX,MAAO,EACT"}
@@ -3,7 +3,7 @@
3
3
  * Supports plain objects, arrays, `Date`, `Map`, `Set`, `RegExp`, and circular references.
4
4
  *
5
5
  * Uses `===` for the primitive comparison, so `isEqual(NaN, NaN)` is `false` and
6
- * `isEqual(0, -0)` is `true` — the opposite of `shallowEqual`, which uses `Object.is` and
6
+ * `isEqual(0, -0)` is `true`: the opposite of `shallowEqual`, which uses `Object.is` and
7
7
  * treats `NaN` as equal to itself and `-0` as distinct from `0`.
8
8
  *
9
9
  * For one-level-deep reference equality, use `shallowEqual` instead.
@@ -1,34 +1,2 @@
1
- //#region src/guards/isEqual.ts
2
- function e(e, n) {
3
- return t(e, n, /* @__PURE__ */ new WeakMap());
4
- }
5
- function t(e, n, r) {
6
- if (e === n) return !0;
7
- if (e == null || n == null || typeof e != typeof n || typeof e != "object" || typeof n != "object") return !1;
8
- if (r.has(e)) return r.get(e) === n;
9
- if (r.set(e, n), Array.isArray(e) || Array.isArray(n)) return !Array.isArray(e) || !Array.isArray(n) || e.length !== n.length ? !1 : e.every((e, i) => t(e, n[i], r));
10
- if (e instanceof Date && n instanceof Date) return e.getTime() === n.getTime();
11
- if (e instanceof Map && n instanceof Map) {
12
- if (e.size !== n.size) return !1;
13
- for (let [i, a] of e) if (!n.has(i) || !t(a, n.get(i), r)) return !1;
14
- return !0;
15
- }
16
- if (e instanceof Set && n instanceof Set) {
17
- if (e.size !== n.size) return !1;
18
- let i = [...n];
19
- for (let a of e) if (typeof a == "string" || typeof a == "number" || typeof a == "boolean" || a == null) {
20
- if (!n.has(a)) return !1;
21
- } else if (!i.some((e) => t(a, e, r))) return !1;
22
- return !0;
23
- }
24
- if (e instanceof RegExp || n instanceof RegExp) return e instanceof RegExp && n instanceof RegExp && e.source === n.source && e.flags === n.flags;
25
- if (e instanceof Map || n instanceof Map || e instanceof Set || n instanceof Set) return !1;
26
- let i = Object.keys(e), a = Object.keys(n);
27
- if (i.length !== a.length) return !1;
28
- for (let a of i) if (!Object.hasOwn(n, a) || !t(e[a], n[a], r)) return !1;
29
- return !0;
30
- }
31
- //#endregion
32
- export { e as isEqual };
33
-
1
+ function isEqual(e,t){return safeIsEqual(e,t,new WeakMap)}function safeIsEqual(e,t,n){if(e===t)return!0;if(e==null||t==null||typeof e!=typeof t||typeof e!=`object`||typeof t!=`object`)return!1;if(n.has(e))return n.get(e)===t;if(n.set(e,t),Array.isArray(e)||Array.isArray(t))return!Array.isArray(e)||!Array.isArray(t)||e.length!==t.length?!1:e.every((e,r)=>safeIsEqual(e,t[r],n));if(e instanceof Date&&t instanceof Date)return e.getTime()===t.getTime();if(e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(let[r,i]of e)if(!t.has(r)||!safeIsEqual(i,t.get(r),n))return!1;return!0}if(e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;let r=[...t];for(let i of e)if(typeof i==`string`||typeof i==`number`||typeof i==`boolean`||i==null){if(!t.has(i))return!1}else if(!r.some(e=>safeIsEqual(i,e,n)))return!1;return!0}if(e instanceof RegExp||t instanceof RegExp)return e instanceof RegExp&&t instanceof RegExp&&e.source===t.source&&e.flags===t.flags;if(e instanceof Map||t instanceof Map||e instanceof Set||t instanceof Set)return!1;let r=Object.keys(e),i=Object.keys(t);if(r.length!==i.length)return!1;for(let i of r)if(!Object.hasOwn(t,i)||!safeIsEqual(e[i],t[i],n))return!1;return!0}export{isEqual};
34
2
  //# sourceMappingURL=isEqual.js.map