typetify 2.1.0 → 2.4.0

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 (225) hide show
  1. package/CHANGELOG.md +131 -0
  2. package/README.md +108 -0
  3. package/dist/async/index.js +1 -49
  4. package/dist/async/index.mjs +1 -4
  5. package/dist/chunk-272Z3AXV.js +1 -0
  6. package/dist/chunk-2YRFWQ6M.mjs +1 -0
  7. package/dist/chunk-35CB7HNN.js +1 -0
  8. package/dist/chunk-4JG7CFRK.js +1 -0
  9. package/dist/chunk-5FBZYPQM.mjs +1 -0
  10. package/dist/chunk-5XQRYI2Q.mjs +1 -0
  11. package/dist/chunk-6HA2SN23.js +1 -0
  12. package/dist/chunk-6NWIIOHH.js +1 -0
  13. package/dist/chunk-6WGRWYAD.js +1 -0
  14. package/dist/chunk-7LBL6CYT.js +1 -0
  15. package/dist/chunk-7UMXGQE4.mjs +1 -0
  16. package/dist/chunk-7XHBEA63.js +1 -0
  17. package/dist/chunk-B3R73UK5.mjs +1 -0
  18. package/dist/chunk-BLUG7TSP.js +1 -0
  19. package/dist/chunk-EAHFED6V.mjs +1 -0
  20. package/dist/chunk-EKSHS4DL.mjs +1 -0
  21. package/dist/chunk-F76ECQKE.js +1 -0
  22. package/dist/chunk-FHCBXSNA.js +1 -0
  23. package/dist/chunk-GKOA3XGQ.js +1 -0
  24. package/dist/chunk-GQIJLGEZ.mjs +1 -0
  25. package/dist/chunk-I4YSQ4HB.js +1 -0
  26. package/dist/chunk-JZXLCA2E.mjs +1 -0
  27. package/dist/chunk-M5OMYDI7.mjs +1 -0
  28. package/dist/chunk-MB77QAOC.mjs +1 -0
  29. package/dist/chunk-MPY3WRLG.mjs +1 -0
  30. package/dist/chunk-NENRAPOL.mjs +1 -0
  31. package/dist/chunk-NOW4Q26G.mjs +1 -0
  32. package/dist/chunk-P4UNM7SF.js +1 -0
  33. package/dist/chunk-P5E2JDCX.mjs +1 -0
  34. package/dist/chunk-Q7SUL7MD.js +1 -0
  35. package/dist/chunk-QKNZICUO.mjs +1 -0
  36. package/dist/chunk-RHMANSTA.mjs +1 -0
  37. package/dist/chunk-SF64HETW.js +1 -0
  38. package/dist/chunk-T66YO63J.js +1 -0
  39. package/dist/chunk-TNK6EVQK.mjs +1 -0
  40. package/dist/chunk-TSJFKV3R.js +1 -0
  41. package/dist/chunk-TVCWWECJ.mjs +1 -0
  42. package/dist/chunk-U7MK5AR5.mjs +1 -0
  43. package/dist/chunk-W5I352FJ.js +1 -0
  44. package/dist/chunk-WAT4QJB2.js +1 -0
  45. package/dist/chunk-WCG5ODRX.mjs +1 -0
  46. package/dist/chunk-WDFIRO2J.js +1 -0
  47. package/dist/chunk-WOT6VMZA.js +1 -0
  48. package/dist/chunk-WS743BFA.js +1 -0
  49. package/dist/chunk-WWU7P2L2.mjs +1 -0
  50. package/dist/chunk-XPY5CWKZ.mjs +1 -0
  51. package/dist/collection/index.d.mts +125 -1
  52. package/dist/collection/index.d.ts +125 -1
  53. package/dist/collection/index.js +1 -125
  54. package/dist/collection/index.mjs +1 -4
  55. package/dist/color/index.d.mts +274 -0
  56. package/dist/color/index.d.ts +274 -0
  57. package/dist/color/index.js +1 -0
  58. package/dist/color/index.mjs +1 -0
  59. package/dist/core/index.js +1 -41
  60. package/dist/core/index.mjs +1 -4
  61. package/dist/decorator/index.js +1 -57
  62. package/dist/decorator/index.mjs +1 -4
  63. package/dist/dom/index.d.mts +353 -0
  64. package/dist/dom/index.d.ts +353 -0
  65. package/dist/dom/index.js +1 -0
  66. package/dist/dom/index.mjs +1 -0
  67. package/dist/dx/index.js +1 -53
  68. package/dist/dx/index.mjs +1 -4
  69. package/dist/flow/index.js +1 -50
  70. package/dist/flow/index.mjs +1 -5
  71. package/dist/fn/index.js +1 -37
  72. package/dist/fn/index.mjs +1 -4
  73. package/dist/guards/index.js +1 -233
  74. package/dist/guards/index.mjs +1 -4
  75. package/dist/index.d.mts +482 -410
  76. package/dist/index.d.ts +482 -410
  77. package/dist/index.js +3 -2507
  78. package/dist/index.mjs +3 -1546
  79. package/dist/input/index.js +1 -74
  80. package/dist/input/index.mjs +1 -5
  81. package/dist/iterator/index.js +1 -85
  82. package/dist/iterator/index.mjs +1 -4
  83. package/dist/logic/index.js +1 -201
  84. package/dist/logic/index.mjs +1 -4
  85. package/dist/math/index.js +1 -45
  86. package/dist/math/index.mjs +1 -4
  87. package/dist/narrowing/index.js +1 -141
  88. package/dist/narrowing/index.mjs +1 -4
  89. package/dist/object/index.d.mts +137 -1
  90. package/dist/object/index.d.ts +137 -1
  91. package/dist/object/index.js +1 -113
  92. package/dist/object/index.mjs +1 -4
  93. package/dist/result/index.js +1 -86
  94. package/dist/result/index.mjs +1 -5
  95. package/dist/schema/index.js +1 -110
  96. package/dist/schema/index.mjs +1 -5
  97. package/dist/storage/index.d.mts +197 -0
  98. package/dist/storage/index.d.ts +197 -0
  99. package/dist/storage/index.js +1 -0
  100. package/dist/storage/index.mjs +1 -0
  101. package/dist/string/index.d.mts +201 -1
  102. package/dist/string/index.d.ts +201 -1
  103. package/dist/string/index.js +1 -49
  104. package/dist/string/index.mjs +1 -4
  105. package/dist/typed/index.js +1 -193
  106. package/dist/typed/index.mjs +1 -4
  107. package/package.json +23 -3
  108. package/dist/async/index.js.map +0 -1
  109. package/dist/async/index.mjs.map +0 -1
  110. package/dist/chunk-2LJ6NZ6K.js +0 -108
  111. package/dist/chunk-2LJ6NZ6K.js.map +0 -1
  112. package/dist/chunk-4NXETABV.mjs +0 -116
  113. package/dist/chunk-4NXETABV.mjs.map +0 -1
  114. package/dist/chunk-6ZBTL74K.js +0 -129
  115. package/dist/chunk-6ZBTL74K.js.map +0 -1
  116. package/dist/chunk-7G4ZSMQX.js +0 -470
  117. package/dist/chunk-7G4ZSMQX.js.map +0 -1
  118. package/dist/chunk-CN3GYRJN.mjs +0 -137
  119. package/dist/chunk-CN3GYRJN.mjs.map +0 -1
  120. package/dist/chunk-CNTE6ZVH.js +0 -359
  121. package/dist/chunk-CNTE6ZVH.js.map +0 -1
  122. package/dist/chunk-CWHYQWNU.mjs +0 -224
  123. package/dist/chunk-CWHYQWNU.mjs.map +0 -1
  124. package/dist/chunk-DBENOSTA.js +0 -156
  125. package/dist/chunk-DBENOSTA.js.map +0 -1
  126. package/dist/chunk-DWIG5GF2.js +0 -135
  127. package/dist/chunk-DWIG5GF2.js.map +0 -1
  128. package/dist/chunk-EAUTTWTQ.mjs +0 -231
  129. package/dist/chunk-EAUTTWTQ.mjs.map +0 -1
  130. package/dist/chunk-FEX5C4OH.mjs +0 -1007
  131. package/dist/chunk-FEX5C4OH.mjs.map +0 -1
  132. package/dist/chunk-FN553YPU.js +0 -441
  133. package/dist/chunk-FN553YPU.js.map +0 -1
  134. package/dist/chunk-FT2EK4AM.mjs +0 -420
  135. package/dist/chunk-FT2EK4AM.mjs.map +0 -1
  136. package/dist/chunk-FXWYPHA3.mjs +0 -13
  137. package/dist/chunk-FXWYPHA3.mjs.map +0 -1
  138. package/dist/chunk-GS3PP67B.js +0 -200
  139. package/dist/chunk-GS3PP67B.js.map +0 -1
  140. package/dist/chunk-IGA3VEZM.mjs +0 -503
  141. package/dist/chunk-IGA3VEZM.mjs.map +0 -1
  142. package/dist/chunk-J5LGTIGS.mjs +0 -9
  143. package/dist/chunk-J5LGTIGS.mjs.map +0 -1
  144. package/dist/chunk-JB6UXRKD.mjs +0 -97
  145. package/dist/chunk-JB6UXRKD.mjs.map +0 -1
  146. package/dist/chunk-JQAQV75V.js +0 -561
  147. package/dist/chunk-JQAQV75V.js.map +0 -1
  148. package/dist/chunk-JQHUBZ4M.js +0 -88
  149. package/dist/chunk-JQHUBZ4M.js.map +0 -1
  150. package/dist/chunk-LT7JK7RJ.js +0 -87
  151. package/dist/chunk-LT7JK7RJ.js.map +0 -1
  152. package/dist/chunk-N6IUADIP.mjs +0 -414
  153. package/dist/chunk-N6IUADIP.mjs.map +0 -1
  154. package/dist/chunk-OEJK37LO.mjs +0 -328
  155. package/dist/chunk-OEJK37LO.mjs.map +0 -1
  156. package/dist/chunk-OKB3MS5F.js +0 -547
  157. package/dist/chunk-OKB3MS5F.js.map +0 -1
  158. package/dist/chunk-OPVES6W2.js +0 -16
  159. package/dist/chunk-OPVES6W2.js.map +0 -1
  160. package/dist/chunk-OWNUKWXV.js +0 -291
  161. package/dist/chunk-OWNUKWXV.js.map +0 -1
  162. package/dist/chunk-POD52NJ3.mjs +0 -526
  163. package/dist/chunk-POD52NJ3.mjs.map +0 -1
  164. package/dist/chunk-PQTXSQ4P.js +0 -369
  165. package/dist/chunk-PQTXSQ4P.js.map +0 -1
  166. package/dist/chunk-PZ5AY32C.js +0 -11
  167. package/dist/chunk-PZ5AY32C.js.map +0 -1
  168. package/dist/chunk-QFR7DVAJ.mjs +0 -63
  169. package/dist/chunk-QFR7DVAJ.mjs.map +0 -1
  170. package/dist/chunk-S535LAXW.js +0 -1054
  171. package/dist/chunk-S535LAXW.js.map +0 -1
  172. package/dist/chunk-SGQNLTRK.js +0 -73
  173. package/dist/chunk-SGQNLTRK.js.map +0 -1
  174. package/dist/chunk-SRDWUHDY.mjs +0 -188
  175. package/dist/chunk-SRDWUHDY.mjs.map +0 -1
  176. package/dist/chunk-TXU7NTT4.js +0 -249
  177. package/dist/chunk-TXU7NTT4.js.map +0 -1
  178. package/dist/chunk-TZEWREAC.mjs +0 -277
  179. package/dist/chunk-TZEWREAC.mjs.map +0 -1
  180. package/dist/chunk-V6CWFDIJ.mjs +0 -123
  181. package/dist/chunk-V6CWFDIJ.mjs.map +0 -1
  182. package/dist/chunk-X55EORNF.js +0 -259
  183. package/dist/chunk-X55EORNF.js.map +0 -1
  184. package/dist/chunk-YBJC5WMX.mjs +0 -341
  185. package/dist/chunk-YBJC5WMX.mjs.map +0 -1
  186. package/dist/chunk-YOPAXITF.mjs +0 -75
  187. package/dist/chunk-YOPAXITF.mjs.map +0 -1
  188. package/dist/chunk-ZE4FDBRI.mjs +0 -79
  189. package/dist/chunk-ZE4FDBRI.mjs.map +0 -1
  190. package/dist/collection/index.js.map +0 -1
  191. package/dist/collection/index.mjs.map +0 -1
  192. package/dist/core/index.js.map +0 -1
  193. package/dist/core/index.mjs.map +0 -1
  194. package/dist/decorator/index.js.map +0 -1
  195. package/dist/decorator/index.mjs.map +0 -1
  196. package/dist/dx/index.js.map +0 -1
  197. package/dist/dx/index.mjs.map +0 -1
  198. package/dist/flow/index.js.map +0 -1
  199. package/dist/flow/index.mjs.map +0 -1
  200. package/dist/fn/index.js.map +0 -1
  201. package/dist/fn/index.mjs.map +0 -1
  202. package/dist/guards/index.js.map +0 -1
  203. package/dist/guards/index.mjs.map +0 -1
  204. package/dist/index.js.map +0 -1
  205. package/dist/index.mjs.map +0 -1
  206. package/dist/input/index.js.map +0 -1
  207. package/dist/input/index.mjs.map +0 -1
  208. package/dist/iterator/index.js.map +0 -1
  209. package/dist/iterator/index.mjs.map +0 -1
  210. package/dist/logic/index.js.map +0 -1
  211. package/dist/logic/index.mjs.map +0 -1
  212. package/dist/math/index.js.map +0 -1
  213. package/dist/math/index.mjs.map +0 -1
  214. package/dist/narrowing/index.js.map +0 -1
  215. package/dist/narrowing/index.mjs.map +0 -1
  216. package/dist/object/index.js.map +0 -1
  217. package/dist/object/index.mjs.map +0 -1
  218. package/dist/result/index.js.map +0 -1
  219. package/dist/result/index.mjs.map +0 -1
  220. package/dist/schema/index.js.map +0 -1
  221. package/dist/schema/index.mjs.map +0 -1
  222. package/dist/string/index.js.map +0 -1
  223. package/dist/string/index.mjs.map +0 -1
  224. package/dist/typed/index.js.map +0 -1
  225. package/dist/typed/index.mjs.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/result/index.ts","../src/result/some.ts","../src/result/none.ts","../src/result/mapResult.ts","../src/result/mapOption.ts","../src/result/mapErr.ts","../src/result/andThen.ts","../src/result/orElse.ts","../src/result/match.ts","../src/result/isOk.ts","../src/result/unwrap.ts","../src/result/unwrapOr.ts","../src/result/fromNullable.ts","../src/result/toNullable.ts"],"names":[],"mappings":"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","file":"chunk-CN3GYRJN.mjs","sourcesContent":["export type { Result, Ok, Err, Option, Some, None } from './types'\nexport { ok } from './ok'\nexport { err } from './err'\nexport { some } from './some'\nexport { none } from './none'\nexport { mapResult } from './mapResult'\nexport { mapOption } from './mapOption'\nexport { mapErr } from './mapErr'\nexport { andThen } from './andThen'\nexport { orElse } from './orElse'\nexport { matchResult, matchOption } from './match'\nexport { isOk, isErr } from './isOk'\nexport { unwrap, unwrapOption } from './unwrap'\nexport { unwrapOr, unwrapOptionOr } from './unwrapOr'\nexport { fromNullable } from './fromNullable'\nexport { toNullable } from './toNullable'\n","import type { Some } from './types'\n\n/**\n * Creates a Some option containing a value.\n *\n * @example\n * const option = some(42)\n * option.some // true\n * option.value // 42\n */\nexport function some<T>(value: T): Some<T> {\n return { some: true, value }\n}\n","import type { None } from './types'\n\n/**\n * Creates a None option representing absence of a value.\n *\n * @example\n * const option = none()\n * option.some // false\n */\nexport function none(): None {\n return { some: false }\n}\n","import type { Result } from './types'\nimport { ok } from './ok'\n\n/**\n * Maps a Result's Ok value using a function.\n * If the result is Err, returns it unchanged.\n *\n * @example\n * mapResult(ok(5), n => n * 2) // ok(10)\n * mapResult(err('failed'), n => n * 2) // err('failed')\n */\nexport function mapResult<T, U, E>(\n result: Result<T, E>,\n fn: (value: T) => U\n): Result<U, E> {\n if (result.ok) {\n return ok(fn(result.value))\n }\n return result\n}\n","import type { Option } from './types'\nimport { some } from './some'\n\n/**\n * Maps an Option's Some value using a function.\n * If the option is None, returns it unchanged.\n *\n * @example\n * mapOption(some(5), n => n * 2) // some(10)\n * mapOption(none(), n => n * 2) // none()\n */\nexport function mapOption<T, U>(\n option: Option<T>,\n fn: (value: T) => U\n): Option<U> {\n if (option.some) {\n return some(fn(option.value))\n }\n return option\n}\n","import type { Result } from './types'\nimport { err } from './err'\n\n/**\n * Maps a Result's Err value using a function.\n * If the result is Ok, returns it unchanged.\n *\n * @example\n * mapErr(err('failed'), e => new Error(e)) // err(Error('failed'))\n * mapErr(ok(5), e => new Error(e)) // ok(5)\n */\nexport function mapErr<T, E, F>(\n result: Result<T, E>,\n fn: (error: E) => F\n): Result<T, F> {\n if (!result.ok) {\n return err(fn(result.error))\n }\n return result\n}\n","import type { Result } from './types'\n\n/**\n * Chains a Result-returning function. Also known as flatMap or bind.\n * If the result is Err, returns it unchanged.\n *\n * @example\n * const parseAndDouble = (s: string) =>\n * andThen(safeJsonParse(s), n => ok(n * 2))\n */\nexport function andThen<T, U, E>(\n result: Result<T, E>,\n fn: (value: T) => Result<U, E>\n): Result<U, E> {\n if (result.ok) {\n return fn(result.value)\n }\n return result\n}\n","import type { Result } from './types'\n\n/**\n * Provides a fallback Result if the current one is Err.\n *\n * @example\n * const result = orElse(err('failed'), e => ok('default'))\n */\nexport function orElse<T, E, F>(\n result: Result<T, E>,\n fn: (error: E) => Result<T, F>\n): Result<T, F> {\n if (!result.ok) {\n return fn(result.error)\n }\n return result\n}\n","import type { Result, Option } from './types'\n\n/**\n * Pattern matches on a Result, executing the appropriate handler.\n *\n * @example\n * const message = matchResult(result, {\n * ok: value => `Success: ${value}`,\n * err: error => `Failed: ${error.message}`\n * })\n */\nexport function matchResult<T, E, U>(\n result: Result<T, E>,\n handlers: {\n ok: (value: T) => U\n err: (error: E) => U\n }\n): U {\n if (result.ok) {\n return handlers.ok(result.value)\n }\n return handlers.err(result.error)\n}\n\n/**\n * Pattern matches on an Option, executing the appropriate handler.\n *\n * @example\n * const message = matchOption(option, {\n * some: value => `Found: ${value}`,\n * none: () => 'Not found'\n * })\n */\nexport function matchOption<T, U>(\n option: Option<T>,\n handlers: {\n some: (value: T) => U\n none: () => U\n }\n): U {\n if (option.some) {\n return handlers.some(option.value)\n }\n return handlers.none()\n}\n","import type { Result } from './types'\n\n/**\n * Type guard to check if a Result is Ok.\n *\n * @example\n * if (isOk(result)) {\n * console.log(result.value) // TypeScript knows this is safe\n * }\n */\nexport function isOk<T, E>(result: Result<T, E>): result is { ok: true; value: T; error?: never } {\n return result.ok\n}\n\n/**\n * Type guard to check if a Result is Err.\n *\n * @example\n * if (isErr(result)) {\n * console.log(result.error) // TypeScript knows this is safe\n * }\n */\nexport function isErr<T, E>(result: Result<T, E>): result is { ok: false; value?: never; error: E } {\n return !result.ok\n}\n","import type { Result, Option } from './types'\n\n/**\n * Unwraps a Result, throwing if it's an Err.\n * Use only when you're certain the result is Ok.\n *\n * @example\n * const value = unwrap(ok(42)) // 42\n * const value = unwrap(err('failed')) // throws Error\n */\nexport function unwrap<T, E>(result: Result<T, E>): T {\n if (result.ok) {\n return result.value\n }\n throw result.error instanceof Error\n ? result.error\n : new Error(String(result.error))\n}\n\n/**\n * Unwraps an Option, throwing if it's None.\n * Use only when you're certain the option is Some.\n *\n * @example\n * const value = unwrapOption(some(42)) // 42\n * const value = unwrapOption(none()) // throws Error\n */\nexport function unwrapOption<T>(option: Option<T>): T {\n if (option.some) {\n return option.value\n }\n throw new Error('Called unwrapOption on None')\n}\n","import type { Result, Option } from './types'\n\n/**\n * Unwraps a Result, returning the Ok value or a default.\n *\n * @example\n * unwrapOr(ok(5), 0) // 5\n * unwrapOr(err('failed'), 0) // 0\n */\nexport function unwrapOr<T, E>(result: Result<T, E>, defaultValue: T): T {\n return result.ok ? result.value : defaultValue\n}\n\n/**\n * Unwraps an Option, returning the Some value or a default.\n *\n * @example\n * unwrapOptionOr(some(5), 0) // 5\n * unwrapOptionOr(none(), 0) // 0\n */\nexport function unwrapOptionOr<T>(option: Option<T>, defaultValue: T): T {\n return option.some ? option.value : defaultValue\n}\n","import type { Option } from './types'\nimport { some } from './some'\nimport { none } from './none'\n\n/**\n * Creates an Option from a nullable value.\n * Returns Some if the value is not null/undefined, None otherwise.\n *\n * @example\n * fromNullable(5) // some(5)\n * fromNullable(null) // none()\n * fromNullable(undefined) // none()\n */\nexport function fromNullable<T>(value: T | null | undefined): Option<NonNullable<T>> {\n if (value === null || value === undefined) {\n return none()\n }\n return some(value as NonNullable<T>)\n}\n","import type { Option } from './types'\n\n/**\n * Converts an Option to a nullable value.\n * Returns the value if Some, null if None.\n *\n * @example\n * toNullable(some(5)) // 5\n * toNullable(none()) // null\n */\nexport function toNullable<T>(option: Option<T>): T | null {\n return option.some ? option.value : null\n}\n"]}
@@ -1,359 +0,0 @@
1
- 'use strict';
2
-
3
- var chunkPZ5AY32C_js = require('./chunk-PZ5AY32C.js');
4
-
5
- // src/collection/index.ts
6
- var collection_exports = {};
7
- chunkPZ5AY32C_js.__export(collection_exports, {
8
- chunk: () => chunk,
9
- compact: () => compact,
10
- countBy: () => countBy,
11
- difference: () => difference,
12
- drop: () => drop,
13
- dropWhile: () => dropWhile,
14
- findLast: () => findLast,
15
- first: () => first,
16
- flatten: () => flatten,
17
- groupBy: () => groupBy,
18
- head: () => head,
19
- indexBy: () => indexBy,
20
- init: () => init,
21
- intersection: () => intersection,
22
- last: () => last,
23
- maxBy: () => maxBy,
24
- minBy: () => minBy,
25
- partition: () => partition,
26
- range: () => range,
27
- sample: () => sample,
28
- shuffle: () => shuffle,
29
- sortBy: () => sortBy,
30
- sumBy: () => sumBy,
31
- tail: () => tail,
32
- take: () => take,
33
- takeWhile: () => takeWhile,
34
- unique: () => unique,
35
- unzip: () => unzip,
36
- zip: () => zip
37
- });
38
-
39
- // src/collection/unique.ts
40
- function unique(array, keyFn) {
41
- if (!keyFn) {
42
- return [...new Set(array)];
43
- }
44
- const seen = /* @__PURE__ */ new Set();
45
- const result = [];
46
- for (const item of array) {
47
- const key = keyFn(item);
48
- if (!seen.has(key)) {
49
- seen.add(key);
50
- result.push(item);
51
- }
52
- }
53
- return result;
54
- }
55
-
56
- // src/collection/groupBy.ts
57
- function groupBy(array, keyFn) {
58
- const result = {};
59
- for (const item of array) {
60
- const key = keyFn(item);
61
- if (!(key in result)) {
62
- result[key] = [];
63
- }
64
- result[key].push(item);
65
- }
66
- return result;
67
- }
68
-
69
- // src/collection/indexBy.ts
70
- function indexBy(array, keyFn) {
71
- const result = {};
72
- for (const item of array) {
73
- const key = keyFn(item);
74
- result[key] = item;
75
- }
76
- return result;
77
- }
78
-
79
- // src/collection/partition.ts
80
- function partition(array, predicate) {
81
- const pass = [];
82
- const fail = [];
83
- for (const item of array) {
84
- if (predicate(item)) {
85
- pass.push(item);
86
- } else {
87
- fail.push(item);
88
- }
89
- }
90
- return [pass, fail];
91
- }
92
-
93
- // src/collection/chunk.ts
94
- function chunk(array, size) {
95
- if (size <= 0) {
96
- throw new Error("Chunk size must be greater than 0");
97
- }
98
- const result = [];
99
- for (let i = 0; i < array.length; i += size) {
100
- result.push(array.slice(i, i + size));
101
- }
102
- return result;
103
- }
104
-
105
- // src/collection/compact.ts
106
- function compact(array) {
107
- return array.filter((item) => item !== null && item !== void 0);
108
- }
109
-
110
- // src/collection/flatten.ts
111
- function flatten(array) {
112
- const result = [];
113
- for (const item of array) {
114
- if (Array.isArray(item)) {
115
- result.push(...item);
116
- } else {
117
- result.push(item);
118
- }
119
- }
120
- return result;
121
- }
122
-
123
- // src/collection/sortBy.ts
124
- function sortBy(array, keyFn, order = "asc") {
125
- const sorted = [...array].sort((a, b) => {
126
- const keyA = keyFn(a);
127
- const keyB = keyFn(b);
128
- if (keyA < keyB) return -1;
129
- if (keyA > keyB) return 1;
130
- return 0;
131
- });
132
- return order === "desc" ? sorted.reverse() : sorted;
133
- }
134
-
135
- // src/collection/first.ts
136
- function first(array) {
137
- return array[0];
138
- }
139
-
140
- // src/collection/last.ts
141
- function last(array) {
142
- return array[array.length - 1];
143
- }
144
-
145
- // src/collection/range.ts
146
- function range(start, end, step = 1) {
147
- if (step === 0) {
148
- throw new Error("Step cannot be 0");
149
- }
150
- const result = [];
151
- if (step > 0) {
152
- for (let i = start; i < end; i += step) {
153
- result.push(i);
154
- }
155
- } else {
156
- for (let i = start; i > end; i += step) {
157
- result.push(i);
158
- }
159
- }
160
- return result;
161
- }
162
-
163
- // src/collection/shuffle.ts
164
- function shuffle(array) {
165
- const result = [...array];
166
- for (let i = result.length - 1; i > 0; i--) {
167
- const j = Math.floor(Math.random() * (i + 1));
168
- const temp = result[i];
169
- result[i] = result[j];
170
- result[j] = temp;
171
- }
172
- return result;
173
- }
174
-
175
- // src/collection/sample.ts
176
- function sample(array) {
177
- if (array.length === 0) {
178
- return void 0;
179
- }
180
- const index = Math.floor(Math.random() * array.length);
181
- return array[index];
182
- }
183
-
184
- // src/collection/zip.ts
185
- function zip(a, b) {
186
- const length = Math.min(a.length, b.length);
187
- const result = [];
188
- for (let i = 0; i < length; i++) {
189
- result.push([a[i], b[i]]);
190
- }
191
- return result;
192
- }
193
-
194
- // src/collection/unzip.ts
195
- function unzip(array) {
196
- const a = [];
197
- const b = [];
198
- for (const [first2, second] of array) {
199
- a.push(first2);
200
- b.push(second);
201
- }
202
- return [a, b];
203
- }
204
-
205
- // src/collection/difference.ts
206
- function difference(a, b) {
207
- const setB = new Set(b);
208
- return a.filter((item) => !setB.has(item));
209
- }
210
-
211
- // src/collection/intersection.ts
212
- function intersection(a, b) {
213
- const setB = new Set(b);
214
- return a.filter((item) => setB.has(item));
215
- }
216
-
217
- // src/collection/take.ts
218
- function take(arr, n) {
219
- if (n <= 0) return [];
220
- return arr.slice(0, n);
221
- }
222
-
223
- // src/collection/drop.ts
224
- function drop(arr, n) {
225
- if (n <= 0) return [...arr];
226
- return arr.slice(n);
227
- }
228
-
229
- // src/collection/takeWhile.ts
230
- function takeWhile(arr, predicate) {
231
- const result = [];
232
- for (let i = 0; i < arr.length; i++) {
233
- const item = arr[i];
234
- if (!predicate(item, i)) break;
235
- result.push(item);
236
- }
237
- return result;
238
- }
239
-
240
- // src/collection/dropWhile.ts
241
- function dropWhile(arr, predicate) {
242
- let startIndex = 0;
243
- for (let i = 0; i < arr.length; i++) {
244
- if (!predicate(arr[i], i)) {
245
- startIndex = i;
246
- break;
247
- }
248
- startIndex = arr.length;
249
- }
250
- return arr.slice(startIndex);
251
- }
252
-
253
- // src/collection/findLast.ts
254
- function findLast(arr, predicate) {
255
- for (let i = arr.length - 1; i >= 0; i--) {
256
- const item = arr[i];
257
- if (predicate(item, i)) return item;
258
- }
259
- return void 0;
260
- }
261
-
262
- // src/collection/countBy.ts
263
- function countBy(arr, fn) {
264
- const result = {};
265
- for (const item of arr) {
266
- const key = fn(item);
267
- result[key] = (result[key] ?? 0) + 1;
268
- }
269
- return result;
270
- }
271
-
272
- // src/collection/maxBy.ts
273
- function maxBy(arr, fn) {
274
- if (arr.length === 0) return void 0;
275
- let maxItem = arr[0];
276
- let maxValue = fn(maxItem);
277
- for (let i = 1; i < arr.length; i++) {
278
- const item = arr[i];
279
- const value = fn(item);
280
- if (value > maxValue) {
281
- maxValue = value;
282
- maxItem = item;
283
- }
284
- }
285
- return maxItem;
286
- }
287
-
288
- // src/collection/minBy.ts
289
- function minBy(arr, fn) {
290
- if (arr.length === 0) return void 0;
291
- let minItem = arr[0];
292
- let minValue = fn(minItem);
293
- for (let i = 1; i < arr.length; i++) {
294
- const item = arr[i];
295
- const value = fn(item);
296
- if (value < minValue) {
297
- minValue = value;
298
- minItem = item;
299
- }
300
- }
301
- return minItem;
302
- }
303
-
304
- // src/collection/sumBy.ts
305
- function sumBy(arr, fn) {
306
- let sum = 0;
307
- for (const item of arr) {
308
- sum += fn(item);
309
- }
310
- return sum;
311
- }
312
-
313
- // src/collection/head.ts
314
- function head(arr) {
315
- return arr[0];
316
- }
317
-
318
- // src/collection/tail.ts
319
- function tail(arr) {
320
- return arr.slice(1);
321
- }
322
-
323
- // src/collection/init.ts
324
- function init(arr) {
325
- return arr.slice(0, -1);
326
- }
327
-
328
- exports.chunk = chunk;
329
- exports.collection_exports = collection_exports;
330
- exports.compact = compact;
331
- exports.countBy = countBy;
332
- exports.difference = difference;
333
- exports.drop = drop;
334
- exports.dropWhile = dropWhile;
335
- exports.findLast = findLast;
336
- exports.first = first;
337
- exports.flatten = flatten;
338
- exports.groupBy = groupBy;
339
- exports.head = head;
340
- exports.indexBy = indexBy;
341
- exports.init = init;
342
- exports.intersection = intersection;
343
- exports.last = last;
344
- exports.maxBy = maxBy;
345
- exports.minBy = minBy;
346
- exports.partition = partition;
347
- exports.range = range;
348
- exports.sample = sample;
349
- exports.shuffle = shuffle;
350
- exports.sortBy = sortBy;
351
- exports.sumBy = sumBy;
352
- exports.tail = tail;
353
- exports.take = take;
354
- exports.takeWhile = takeWhile;
355
- exports.unique = unique;
356
- exports.unzip = unzip;
357
- exports.zip = zip;
358
- //# sourceMappingURL=chunk-CNTE6ZVH.js.map
359
- //# sourceMappingURL=chunk-CNTE6ZVH.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/collection/index.ts","../src/collection/unique.ts","../src/collection/groupBy.ts","../src/collection/indexBy.ts","../src/collection/partition.ts","../src/collection/chunk.ts","../src/collection/compact.ts","../src/collection/flatten.ts","../src/collection/sortBy.ts","../src/collection/first.ts","../src/collection/last.ts","../src/collection/range.ts","../src/collection/shuffle.ts","../src/collection/sample.ts","../src/collection/zip.ts","../src/collection/unzip.ts","../src/collection/difference.ts","../src/collection/intersection.ts","../src/collection/take.ts","../src/collection/drop.ts","../src/collection/takeWhile.ts","../src/collection/dropWhile.ts","../src/collection/findLast.ts","../src/collection/countBy.ts","../src/collection/maxBy.ts","../src/collection/minBy.ts","../src/collection/sumBy.ts","../src/collection/head.ts","../src/collection/tail.ts","../src/collection/init.ts"],"names":["__export","first"],"mappings":";;;;;AAAA,IAAA,kBAAA,GAAA;AAAAA,yBAAA,CAAA,kBAAA,EAAA;AAAA,EAAA,KAAA,EAAA,MAAA,KAAA;AAAA,EAAA,OAAA,EAAA,MAAA,OAAA;AAAA,EAAA,OAAA,EAAA,MAAA,OAAA;AAAA,EAAA,UAAA,EAAA,MAAA,UAAA;AAAA,EAAA,IAAA,EAAA,MAAA,IAAA;AAAA,EAAA,SAAA,EAAA,MAAA,SAAA;AAAA,EAAA,QAAA,EAAA,MAAA,QAAA;AAAA,EAAA,KAAA,EAAA,MAAA,KAAA;AAAA,EAAA,OAAA,EAAA,MAAA,OAAA;AAAA,EAAA,OAAA,EAAA,MAAA,OAAA;AAAA,EAAA,IAAA,EAAA,MAAA,IAAA;AAAA,EAAA,OAAA,EAAA,MAAA,OAAA;AAAA,EAAA,IAAA,EAAA,MAAA,IAAA;AAAA,EAAA,YAAA,EAAA,MAAA,YAAA;AAAA,EAAA,IAAA,EAAA,MAAA,IAAA;AAAA,EAAA,KAAA,EAAA,MAAA,KAAA;AAAA,EAAA,KAAA,EAAA,MAAA,KAAA;AAAA,EAAA,SAAA,EAAA,MAAA,SAAA;AAAA,EAAA,KAAA,EAAA,MAAA,KAAA;AAAA,EAAA,MAAA,EAAA,MAAA,MAAA;AAAA,EAAA,OAAA,EAAA,MAAA,OAAA;AAAA,EAAA,MAAA,EAAA,MAAA,MAAA;AAAA,EAAA,KAAA,EAAA,MAAA,KAAA;AAAA,EAAA,IAAA,EAAA,MAAA,IAAA;AAAA,EAAA,IAAA,EAAA,MAAA,IAAA;AAAA,EAAA,SAAA,EAAA,MAAA,SAAA;AAAA,EAAA,MAAA,EAAA,MAAA,MAAA;AAAA,EAAA,KAAA,EAAA,MAAA,KAAA;AAAA,EAAA,GAAA,EAAA,MAAA;AAAA,CAAA,CAAA;;;ACaO,SAAS,MAAA,CACd,OACA,KAAA,EACK;AACL,EAAA,IAAI,CAAC,KAAA,EAAO;AACV,IAAA,OAAO,CAAC,GAAG,IAAI,GAAA,CAAI,KAAK,CAAC,CAAA;AAAA,EAC3B;AAEA,EAAA,MAAM,IAAA,uBAAW,GAAA,EAAO;AACxB,EAAA,MAAM,SAAc,EAAC;AAErB,EAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,IAAA,MAAM,GAAA,GAAM,MAAM,IAAI,CAAA;AACtB,IAAA,IAAI,CAAC,IAAA,CAAK,GAAA,CAAI,GAAG,CAAA,EAAG;AAClB,MAAA,IAAA,CAAK,IAAI,GAAG,CAAA;AACZ,MAAA,MAAA,CAAO,KAAK,IAAI,CAAA;AAAA,IAClB;AAAA,EACF;AAEA,EAAA,OAAO,MAAA;AACT;;;ACrBO,SAAS,OAAA,CACd,OACA,KAAA,EACgB;AAChB,EAAA,MAAM,SAAS,EAAC;AAEhB,EAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,IAAA,MAAM,GAAA,GAAM,MAAM,IAAI,CAAA;AACtB,IAAA,IAAI,EAAE,OAAO,MAAA,CAAA,EAAS;AACpB,MAAA,MAAA,CAAO,GAAG,IAAI,EAAC;AAAA,IACjB;AACA,IAAA,MAAA,CAAO,GAAG,CAAA,CAAE,IAAA,CAAK,IAAI,CAAA;AAAA,EACvB;AAEA,EAAA,OAAO,MAAA;AACT;;;ACfO,SAAS,OAAA,CACd,OACA,KAAA,EACc;AACd,EAAA,MAAM,SAAS,EAAC;AAEhB,EAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,IAAA,MAAM,GAAA,GAAM,MAAM,IAAI,CAAA;AACtB,IAAA,MAAA,CAAO,GAAG,CAAA,GAAI,IAAA;AAAA,EAChB;AAEA,EAAA,OAAO,MAAA;AACT;;;AChBO,SAAS,SAAA,CACd,OACA,SAAA,EACY;AACZ,EAAA,MAAM,OAAY,EAAC;AACnB,EAAA,MAAM,OAAY,EAAC;AAEnB,EAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,IAAA,IAAI,SAAA,CAAU,IAAI,CAAA,EAAG;AACnB,MAAA,IAAA,CAAK,KAAK,IAAI,CAAA;AAAA,IAChB,CAAA,MAAO;AACL,MAAA,IAAA,CAAK,KAAK,IAAI,CAAA;AAAA,IAChB;AAAA,EACF;AAEA,EAAA,OAAO,CAAC,MAAM,IAAI,CAAA;AACpB;;;ACjBO,SAAS,KAAA,CAAS,OAAqB,IAAA,EAAqB;AACjE,EAAA,IAAI,QAAQ,CAAA,EAAG;AACb,IAAA,MAAM,IAAI,MAAM,mCAAmC,CAAA;AAAA,EACrD;AAEA,EAAA,MAAM,SAAgB,EAAC;AAEvB,EAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,MAAA,EAAQ,KAAK,IAAA,EAAM;AAC3C,IAAA,MAAA,CAAO,KAAK,KAAA,CAAM,KAAA,CAAM,CAAA,EAAG,CAAA,GAAI,IAAI,CAAC,CAAA;AAAA,EACtC;AAEA,EAAA,OAAO,MAAA;AACT;;;ACXO,SAAS,QAAW,KAAA,EAA+C;AACxE,EAAA,OAAO,MAAM,MAAA,CAAO,CAAC,SAAoB,IAAA,KAAS,IAAA,IAAQ,SAAS,MAAS,CAAA;AAC9E;;;ACHO,SAAS,QAAW,KAAA,EAA2C;AACpE,EAAA,MAAM,SAAc,EAAC;AAErB,EAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA,EAAG;AACvB,MAAA,MAAA,CAAO,IAAA,CAAK,GAAG,IAAI,CAAA;AAAA,IACrB,CAAA,MAAO;AACL,MAAA,MAAA,CAAO,KAAK,IAAS,CAAA;AAAA,IACvB;AAAA,EACF;AAEA,EAAA,OAAO,MAAA;AACT;;;ACXO,SAAS,MAAA,CACd,KAAA,EACA,KAAA,EACA,KAAA,GAAwB,KAAA,EACnB;AACL,EAAA,MAAM,MAAA,GAAS,CAAC,GAAG,KAAK,EAAE,IAAA,CAAK,CAAC,GAAG,CAAA,KAAM;AACvC,IAAA,MAAM,IAAA,GAAO,MAAM,CAAC,CAAA;AACpB,IAAA,MAAM,IAAA,GAAO,MAAM,CAAC,CAAA;AAEpB,IAAA,IAAI,IAAA,GAAO,MAAM,OAAO,EAAA;AACxB,IAAA,IAAI,IAAA,GAAO,MAAM,OAAO,CAAA;AACxB,IAAA,OAAO,CAAA;AAAA,EACT,CAAC,CAAA;AAED,EAAA,OAAO,KAAA,KAAU,MAAA,GAAS,MAAA,CAAO,OAAA,EAAQ,GAAI,MAAA;AAC/C;;;AChBO,SAAS,MAAS,KAAA,EAAoC;AAC3D,EAAA,OAAO,MAAM,CAAC,CAAA;AAChB;;;ACFO,SAAS,KAAQ,KAAA,EAAoC;AAC1D,EAAA,OAAO,KAAA,CAAM,KAAA,CAAM,MAAA,GAAS,CAAC,CAAA;AAC/B;;;ACFO,SAAS,KAAA,CAAM,KAAA,EAAe,GAAA,EAAa,IAAA,GAAe,CAAA,EAAa;AAC5E,EAAA,IAAI,SAAS,CAAA,EAAG;AACd,IAAA,MAAM,IAAI,MAAM,kBAAkB,CAAA;AAAA,EACpC;AAEA,EAAA,MAAM,SAAmB,EAAC;AAE1B,EAAA,IAAI,OAAO,CAAA,EAAG;AACZ,IAAA,KAAA,IAAS,CAAA,GAAI,KAAA,EAAO,CAAA,GAAI,GAAA,EAAK,KAAK,IAAA,EAAM;AACtC,MAAA,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,IACf;AAAA,EACF,CAAA,MAAO;AACL,IAAA,KAAA,IAAS,CAAA,GAAI,KAAA,EAAO,CAAA,GAAI,GAAA,EAAK,KAAK,IAAA,EAAM;AACtC,MAAA,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,IACf;AAAA,EACF;AAEA,EAAA,OAAO,MAAA;AACT;;;ACjBO,SAAS,QAAW,KAAA,EAA0B;AACnD,EAAA,MAAM,MAAA,GAAS,CAAC,GAAG,KAAK,CAAA;AAExB,EAAA,KAAA,IAAS,IAAI,MAAA,CAAO,MAAA,GAAS,CAAA,EAAG,CAAA,GAAI,GAAG,CAAA,EAAA,EAAK;AAC1C,IAAA,MAAM,IAAI,IAAA,CAAK,KAAA,CAAM,KAAK,MAAA,EAAO,IAAK,IAAI,CAAA,CAAE,CAAA;AAC5C,IAAA,MAAM,IAAA,GAAO,OAAO,CAAC,CAAA;AACrB,IAAA,MAAA,CAAO,CAAC,CAAA,GAAI,MAAA,CAAO,CAAC,CAAA;AACpB,IAAA,MAAA,CAAO,CAAC,CAAA,GAAI,IAAA;AAAA,EACd;AAEA,EAAA,OAAO,MAAA;AACT;;;ACZO,SAAS,OAAU,KAAA,EAAoC;AAC5D,EAAA,IAAI,KAAA,CAAM,WAAW,CAAA,EAAG;AACtB,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,MAAM,QAAQ,IAAA,CAAK,KAAA,CAAM,KAAK,MAAA,EAAO,GAAI,MAAM,MAAM,CAAA;AACrD,EAAA,OAAO,MAAM,KAAK,CAAA;AACpB;;;ACNO,SAAS,GAAA,CAAU,GAAiB,CAAA,EAA2B;AACpE,EAAA,MAAM,SAAS,IAAA,CAAK,GAAA,CAAI,CAAA,CAAE,MAAA,EAAQ,EAAE,MAAM,CAAA;AAC1C,EAAA,MAAM,SAAmB,EAAC;AAE1B,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,EAAQ,CAAA,EAAA,EAAK;AAC/B,IAAA,MAAA,CAAO,IAAA,CAAK,CAAC,CAAA,CAAE,CAAC,GAAI,CAAA,CAAE,CAAC,CAAE,CAAC,CAAA;AAAA,EAC5B;AAEA,EAAA,OAAO,MAAA;AACT;;;ACVO,SAAS,MAAY,KAAA,EAAiD;AAC3E,EAAA,MAAM,IAAS,EAAC;AAChB,EAAA,MAAM,IAAS,EAAC;AAEhB,EAAA,KAAA,MAAW,CAACC,MAAAA,EAAO,MAAM,CAAA,IAAK,KAAA,EAAO;AACnC,IAAA,CAAA,CAAE,KAAKA,MAAK,CAAA;AACZ,IAAA,CAAA,CAAE,KAAK,MAAM,CAAA;AAAA,EACf;AAEA,EAAA,OAAO,CAAC,GAAG,CAAC,CAAA;AACd;;;ACVO,SAAS,UAAA,CAAc,GAAiB,CAAA,EAAsB;AACnE,EAAA,MAAM,IAAA,GAAO,IAAI,GAAA,CAAI,CAAC,CAAA;AACtB,EAAA,OAAO,CAAA,CAAE,OAAO,CAAC,IAAA,KAAS,CAAC,IAAA,CAAK,GAAA,CAAI,IAAI,CAAC,CAAA;AAC3C;;;ACHO,SAAS,YAAA,CAAgB,GAAiB,CAAA,EAAsB;AACrE,EAAA,MAAM,IAAA,GAAO,IAAI,GAAA,CAAI,CAAC,CAAA;AACtB,EAAA,OAAO,EAAE,MAAA,CAAO,CAAC,SAAS,IAAA,CAAK,GAAA,CAAI,IAAI,CAAC,CAAA;AAC1C;;;ACHO,SAAS,IAAA,CAAQ,KAAmB,CAAA,EAAgB;AACzD,EAAA,IAAI,CAAA,IAAK,CAAA,EAAG,OAAO,EAAC;AACpB,EAAA,OAAO,GAAA,CAAI,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA;AACvB;;;ACHO,SAAS,IAAA,CAAQ,KAAmB,CAAA,EAAgB;AACzD,EAAA,IAAI,CAAA,IAAK,CAAA,EAAG,OAAO,CAAC,GAAG,GAAG,CAAA;AAC1B,EAAA,OAAO,GAAA,CAAI,MAAM,CAAC,CAAA;AACpB;;;ACHO,SAAS,SAAA,CACd,KACA,SAAA,EACK;AACL,EAAA,MAAM,SAAc,EAAC;AACrB,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,GAAA,CAAI,QAAQ,CAAA,EAAA,EAAK;AACnC,IAAA,MAAM,IAAA,GAAO,IAAI,CAAC,CAAA;AAClB,IAAA,IAAI,CAAC,SAAA,CAAU,IAAA,EAAM,CAAC,CAAA,EAAG;AACzB,IAAA,MAAA,CAAO,KAAK,IAAI,CAAA;AAAA,EAClB;AACA,EAAA,OAAO,MAAA;AACT;;;ACXO,SAAS,SAAA,CACd,KACA,SAAA,EACK;AACL,EAAA,IAAI,UAAA,GAAa,CAAA;AACjB,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,GAAA,CAAI,QAAQ,CAAA,EAAA,EAAK;AACnC,IAAA,IAAI,CAAC,SAAA,CAAU,GAAA,CAAI,CAAC,CAAA,EAAI,CAAC,CAAA,EAAG;AAC1B,MAAA,UAAA,GAAa,CAAA;AACb,MAAA;AAAA,IACF;AACA,IAAA,UAAA,GAAa,GAAA,CAAI,MAAA;AAAA,EACnB;AACA,EAAA,OAAO,GAAA,CAAI,MAAM,UAAU,CAAA;AAC7B;;;ACbO,SAAS,QAAA,CACd,KACA,SAAA,EACe;AACf,EAAA,KAAA,IAAS,IAAI,GAAA,CAAI,MAAA,GAAS,CAAA,EAAG,CAAA,IAAK,GAAG,CAAA,EAAA,EAAK;AACxC,IAAA,MAAM,IAAA,GAAO,IAAI,CAAC,CAAA;AAClB,IAAA,IAAI,SAAA,CAAU,IAAA,EAAM,CAAC,CAAA,EAAG,OAAO,IAAA;AAAA,EACjC;AACA,EAAA,OAAO,MAAA;AACT;;;ACNO,SAAS,OAAA,CACd,KACA,EAAA,EAC6B;AAC7B,EAAA,MAAM,SAAsC,EAAC;AAC7C,EAAA,KAAA,MAAW,QAAQ,GAAA,EAAK;AACtB,IAAA,MAAM,GAAA,GAAM,GAAG,IAAI,CAAA;AACnB,IAAA,MAAA,CAAO,GAAG,CAAA,GAAA,CAAK,MAAA,CAAO,GAAG,KAAK,CAAA,IAAK,CAAA;AAAA,EACrC;AACA,EAAA,OAAO,MAAA;AACT;;;ACXO,SAAS,KAAA,CACd,KACA,EAAA,EACe;AACf,EAAA,IAAI,GAAA,CAAI,MAAA,KAAW,CAAA,EAAG,OAAO,MAAA;AAE7B,EAAA,IAAI,OAAA,GAAU,IAAI,CAAC,CAAA;AACnB,EAAA,IAAI,QAAA,GAAW,GAAG,OAAO,CAAA;AAEzB,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,GAAA,CAAI,QAAQ,CAAA,EAAA,EAAK;AACnC,IAAA,MAAM,IAAA,GAAO,IAAI,CAAC,CAAA;AAClB,IAAA,MAAM,KAAA,GAAQ,GAAG,IAAI,CAAA;AACrB,IAAA,IAAI,QAAQ,QAAA,EAAU;AACpB,MAAA,QAAA,GAAW,KAAA;AACX,MAAA,OAAA,GAAU,IAAA;AAAA,IACZ;AAAA,EACF;AAEA,EAAA,OAAO,OAAA;AACT;;;ACnBO,SAAS,KAAA,CACd,KACA,EAAA,EACe;AACf,EAAA,IAAI,GAAA,CAAI,MAAA,KAAW,CAAA,EAAG,OAAO,MAAA;AAE7B,EAAA,IAAI,OAAA,GAAU,IAAI,CAAC,CAAA;AACnB,EAAA,IAAI,QAAA,GAAW,GAAG,OAAO,CAAA;AAEzB,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,GAAA,CAAI,QAAQ,CAAA,EAAA,EAAK;AACnC,IAAA,MAAM,IAAA,GAAO,IAAI,CAAC,CAAA;AAClB,IAAA,MAAM,KAAA,GAAQ,GAAG,IAAI,CAAA;AACrB,IAAA,IAAI,QAAQ,QAAA,EAAU;AACpB,MAAA,QAAA,GAAW,KAAA;AACX,MAAA,OAAA,GAAU,IAAA;AAAA,IACZ;AAAA,EACF;AAEA,EAAA,OAAO,OAAA;AACT;;;ACnBO,SAAS,KAAA,CACd,KACA,EAAA,EACQ;AACR,EAAA,IAAI,GAAA,GAAM,CAAA;AACV,EAAA,KAAA,MAAW,QAAQ,GAAA,EAAK;AACtB,IAAA,GAAA,IAAO,GAAG,IAAI,CAAA;AAAA,EAChB;AACA,EAAA,OAAO,GAAA;AACT;;;ACVO,SAAS,KAAQ,GAAA,EAAkC;AACxD,EAAA,OAAO,IAAI,CAAC,CAAA;AACd;;;ACFO,SAAS,KAAQ,GAAA,EAAwB;AAC9C,EAAA,OAAO,GAAA,CAAI,MAAM,CAAC,CAAA;AACpB;;;ACFO,SAAS,KAAQ,GAAA,EAAwB;AAC9C,EAAA,OAAO,GAAA,CAAI,KAAA,CAAM,CAAA,EAAG,EAAE,CAAA;AACxB","file":"chunk-CNTE6ZVH.js","sourcesContent":["export { unique } from './unique'\nexport { groupBy } from './groupBy'\nexport { indexBy } from './indexBy'\nexport { partition } from './partition'\nexport { chunk } from './chunk'\nexport { compact } from './compact'\nexport { flatten } from './flatten'\nexport { sortBy } from './sortBy'\nexport { first } from './first'\nexport { last } from './last'\nexport { range } from './range'\nexport { shuffle } from './shuffle'\nexport { sample } from './sample'\nexport { zip } from './zip'\nexport { unzip } from './unzip'\nexport { difference } from './difference'\nexport { intersection } from './intersection'\nexport { take } from './take'\nexport { drop } from './drop'\nexport { takeWhile } from './takeWhile'\nexport { dropWhile } from './dropWhile'\nexport { findLast } from './findLast'\nexport { countBy } from './countBy'\nexport { maxBy } from './maxBy'\nexport { minBy } from './minBy'\nexport { sumBy } from './sumBy'\nexport { head } from './head'\nexport { tail } from './tail'\nexport { init } from './init'\n","/**\n * Returns an array with unique values.\n * Optionally accepts a key function to determine uniqueness.\n *\n * @example\n * unique([1, 2, 2, 3]) // [1, 2, 3]\n * unique([{ id: 1 }, { id: 1 }, { id: 2 }], item => item.id) // [{ id: 1 }, { id: 2 }]\n */\nexport function unique<T>(array: readonly T[]): T[]\nexport function unique<T, K>(\n array: readonly T[],\n keyFn: (item: T) => K\n): T[]\nexport function unique<T, K>(\n array: readonly T[],\n keyFn?: (item: T) => K\n): T[] {\n if (!keyFn) {\n return [...new Set(array)]\n }\n\n const seen = new Set<K>()\n const result: T[] = []\n\n for (const item of array) {\n const key = keyFn(item)\n if (!seen.has(key)) {\n seen.add(key)\n result.push(item)\n }\n }\n\n return result\n}\n","/**\n * Groups array elements by a key function.\n *\n * @example\n * const users = [\n * { name: 'Alice', role: 'admin' },\n * { name: 'Bob', role: 'user' },\n * { name: 'Charlie', role: 'admin' },\n * ]\n * groupBy(users, user => user.role)\n * // { admin: [{ name: 'Alice', ... }, { name: 'Charlie', ... }], user: [{ name: 'Bob', ... }] }\n */\nexport function groupBy<T, K extends PropertyKey>(\n array: readonly T[],\n keyFn: (item: T) => K\n): Record<K, T[]> {\n const result = {} as Record<K, T[]>\n\n for (const item of array) {\n const key = keyFn(item)\n if (!(key in result)) {\n result[key] = []\n }\n result[key].push(item)\n }\n\n return result\n}\n","/**\n * Creates an object indexed by a key function.\n * If multiple items have the same key, the last one wins.\n *\n * @example\n * const users = [\n * { id: 1, name: 'Alice' },\n * { id: 2, name: 'Bob' },\n * ]\n * indexBy(users, user => user.id)\n * // { 1: { id: 1, name: 'Alice' }, 2: { id: 2, name: 'Bob' } }\n */\nexport function indexBy<T, K extends PropertyKey>(\n array: readonly T[],\n keyFn: (item: T) => K\n): Record<K, T> {\n const result = {} as Record<K, T>\n\n for (const item of array) {\n const key = keyFn(item)\n result[key] = item\n }\n\n return result\n}\n","/**\n * Splits an array into two arrays based on a predicate.\n * First array contains items that pass, second contains items that fail.\n *\n * @example\n * const [evens, odds] = partition([1, 2, 3, 4], n => n % 2 === 0)\n * // evens: [2, 4], odds: [1, 3]\n */\nexport function partition<T>(\n array: readonly T[],\n predicate: (item: T) => boolean\n): [T[], T[]] {\n const pass: T[] = []\n const fail: T[] = []\n\n for (const item of array) {\n if (predicate(item)) {\n pass.push(item)\n } else {\n fail.push(item)\n }\n }\n\n return [pass, fail]\n}\n","/**\n * Splits an array into chunks of the specified size.\n *\n * @example\n * chunk([1, 2, 3, 4, 5], 2)\n * // [[1, 2], [3, 4], [5]]\n */\nexport function chunk<T>(array: readonly T[], size: number): T[][] {\n if (size <= 0) {\n throw new Error('Chunk size must be greater than 0')\n }\n\n const result: T[][] = []\n\n for (let i = 0; i < array.length; i += size) {\n result.push(array.slice(i, i + size))\n }\n\n return result\n}\n","/**\n * Removes null and undefined values from an array.\n * Properly narrows the type.\n *\n * @example\n * compact([1, null, 2, undefined, 3])\n * // [1, 2, 3] with type number[]\n */\nexport function compact<T>(array: readonly (T | null | undefined)[]): T[] {\n return array.filter((item): item is T => item !== null && item !== undefined)\n}\n","/**\n * Flattens an array one level deep.\n *\n * @example\n * flatten([[1, 2], [3, 4], [5]])\n * // [1, 2, 3, 4, 5]\n */\nexport function flatten<T>(array: readonly (T | readonly T[])[]): T[] {\n const result: T[] = []\n\n for (const item of array) {\n if (Array.isArray(item)) {\n result.push(...item)\n } else {\n result.push(item as T)\n }\n }\n\n return result\n}\n","/**\n * Sorts an array by a key function. Returns a new array.\n *\n * @example\n * const users = [{ name: 'Bob' }, { name: 'Alice' }]\n * sortBy(users, user => user.name)\n * // [{ name: 'Alice' }, { name: 'Bob' }]\n */\nexport function sortBy<T>(\n array: readonly T[],\n keyFn: (item: T) => string | number,\n order: 'asc' | 'desc' = 'asc'\n): T[] {\n const sorted = [...array].sort((a, b) => {\n const keyA = keyFn(a)\n const keyB = keyFn(b)\n\n if (keyA < keyB) return -1\n if (keyA > keyB) return 1\n return 0\n })\n\n return order === 'desc' ? sorted.reverse() : sorted\n}\n","/**\n * Returns the first element of an array, or undefined if empty.\n *\n * @example\n * first([1, 2, 3]) // 1\n * first([]) // undefined\n */\nexport function first<T>(array: readonly T[]): T | undefined {\n return array[0]\n}\n","/**\n * Returns the last element of an array, or undefined if empty.\n *\n * @example\n * last([1, 2, 3]) // 3\n * last([]) // undefined\n */\nexport function last<T>(array: readonly T[]): T | undefined {\n return array[array.length - 1]\n}\n","/**\n * Creates an array of numbers from start to end (exclusive).\n *\n * @example\n * range(0, 5) // [0, 1, 2, 3, 4]\n * range(1, 10, 2) // [1, 3, 5, 7, 9]\n */\nexport function range(start: number, end: number, step: number = 1): number[] {\n if (step === 0) {\n throw new Error('Step cannot be 0')\n }\n\n const result: number[] = []\n\n if (step > 0) {\n for (let i = start; i < end; i += step) {\n result.push(i)\n }\n } else {\n for (let i = start; i > end; i += step) {\n result.push(i)\n }\n }\n\n return result\n}\n","/**\n * Returns a new array with elements randomly shuffled.\n * Uses Fisher-Yates algorithm.\n *\n * @example\n * shuffle([1, 2, 3, 4, 5])\n * // [3, 1, 5, 2, 4] (random order)\n */\nexport function shuffle<T>(array: readonly T[]): T[] {\n const result = [...array]\n\n for (let i = result.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1))\n const temp = result[i]\n result[i] = result[j]!\n result[j] = temp!\n }\n\n return result\n}\n","/**\n * Returns a random element from an array.\n *\n * @example\n * sample([1, 2, 3, 4, 5]) // random element\n * sample([]) // undefined\n */\nexport function sample<T>(array: readonly T[]): T | undefined {\n if (array.length === 0) {\n return undefined\n }\n\n const index = Math.floor(Math.random() * array.length)\n return array[index]\n}\n","/**\n * Zips two arrays together into an array of tuples.\n * Stops at the shorter array.\n *\n * @example\n * zip([1, 2, 3], ['a', 'b', 'c'])\n * // [[1, 'a'], [2, 'b'], [3, 'c']]\n */\nexport function zip<A, B>(a: readonly A[], b: readonly B[]): [A, B][] {\n const length = Math.min(a.length, b.length)\n const result: [A, B][] = []\n\n for (let i = 0; i < length; i++) {\n result.push([a[i]!, b[i]!])\n }\n\n return result\n}\n","/**\n * Unzips an array of tuples into two arrays.\n *\n * @example\n * unzip([[1, 'a'], [2, 'b'], [3, 'c']])\n * // [[1, 2, 3], ['a', 'b', 'c']]\n */\nexport function unzip<A, B>(array: readonly (readonly [A, B])[]): [A[], B[]] {\n const a: A[] = []\n const b: B[] = []\n\n for (const [first, second] of array) {\n a.push(first)\n b.push(second)\n }\n\n return [a, b]\n}\n","/**\n * Returns elements in the first array that are not in the second.\n *\n * @example\n * difference([1, 2, 3, 4], [2, 4])\n * // [1, 3]\n */\nexport function difference<T>(a: readonly T[], b: readonly T[]): T[] {\n const setB = new Set(b)\n return a.filter((item) => !setB.has(item))\n}\n","/**\n * Returns elements that exist in both arrays.\n *\n * @example\n * intersection([1, 2, 3], [2, 3, 4])\n * // [2, 3]\n */\nexport function intersection<T>(a: readonly T[], b: readonly T[]): T[] {\n const setB = new Set(b)\n return a.filter((item) => setB.has(item))\n}\n","/**\n * Returns the first n elements of an array.\n *\n * @example\n * take([1, 2, 3, 4, 5], 3) // [1, 2, 3]\n * take([1, 2], 5) // [1, 2]\n */\nexport function take<T>(arr: readonly T[], n: number): T[] {\n if (n <= 0) return []\n return arr.slice(0, n)\n}\n","/**\n * Returns all but the first n elements of an array.\n *\n * @example\n * drop([1, 2, 3, 4, 5], 2) // [3, 4, 5]\n * drop([1, 2], 5) // []\n */\nexport function drop<T>(arr: readonly T[], n: number): T[] {\n if (n <= 0) return [...arr]\n return arr.slice(n)\n}\n","/**\n * Returns elements from the beginning of an array while the predicate returns true.\n *\n * @example\n * takeWhile([1, 2, 3, 4, 1], n => n < 3) // [1, 2]\n * takeWhile([5, 1, 2], n => n < 3) // []\n */\nexport function takeWhile<T>(\n arr: readonly T[],\n predicate: (item: T, index: number) => boolean\n): T[] {\n const result: T[] = []\n for (let i = 0; i < arr.length; i++) {\n const item = arr[i]!\n if (!predicate(item, i)) break\n result.push(item)\n }\n return result\n}\n","/**\n * Drops elements from the beginning of an array while the predicate returns true.\n *\n * @example\n * dropWhile([1, 2, 3, 4, 1], n => n < 3) // [3, 4, 1]\n * dropWhile([5, 1, 2], n => n < 3) // [5, 1, 2]\n */\nexport function dropWhile<T>(\n arr: readonly T[],\n predicate: (item: T, index: number) => boolean\n): T[] {\n let startIndex = 0\n for (let i = 0; i < arr.length; i++) {\n if (!predicate(arr[i]!, i)) {\n startIndex = i\n break\n }\n startIndex = arr.length\n }\n return arr.slice(startIndex)\n}\n","/**\n * Returns the last element in an array that satisfies the predicate.\n *\n * @example\n * findLast([1, 2, 3, 4], n => n % 2 === 0) // 4\n * findLast([1, 3, 5], n => n % 2 === 0) // undefined\n */\nexport function findLast<T>(\n arr: readonly T[],\n predicate: (item: T, index: number) => boolean\n): T | undefined {\n for (let i = arr.length - 1; i >= 0; i--) {\n const item = arr[i]!\n if (predicate(item, i)) return item\n }\n return undefined\n}\n","/**\n * Creates an object counting occurrences of each key returned by the function.\n *\n * @example\n * countBy([1, 2, 3, 4, 5], n => n % 2 === 0 ? 'even' : 'odd')\n * // { odd: 3, even: 2 }\n *\n * countBy(['one', 'two', 'three'], s => s.length)\n * // { 3: 2, 5: 1 }\n */\nexport function countBy<T>(\n arr: readonly T[],\n fn: (item: T) => PropertyKey\n): Record<PropertyKey, number> {\n const result: Record<PropertyKey, number> = {}\n for (const item of arr) {\n const key = fn(item)\n result[key] = (result[key] ?? 0) + 1\n }\n return result\n}\n","/**\n * Returns the element with the maximum value according to the function.\n *\n * @example\n * maxBy([{ age: 20 }, { age: 30 }, { age: 25 }], u => u.age)\n * // { age: 30 }\n *\n * maxBy([], u => u.age) // undefined\n */\nexport function maxBy<T>(\n arr: readonly T[],\n fn: (item: T) => number\n): T | undefined {\n if (arr.length === 0) return undefined\n\n let maxItem = arr[0]!\n let maxValue = fn(maxItem)\n\n for (let i = 1; i < arr.length; i++) {\n const item = arr[i]!\n const value = fn(item)\n if (value > maxValue) {\n maxValue = value\n maxItem = item\n }\n }\n\n return maxItem\n}\n","/**\n * Returns the element with the minimum value according to the function.\n *\n * @example\n * minBy([{ age: 20 }, { age: 30 }, { age: 25 }], u => u.age)\n * // { age: 20 }\n *\n * minBy([], u => u.age) // undefined\n */\nexport function minBy<T>(\n arr: readonly T[],\n fn: (item: T) => number\n): T | undefined {\n if (arr.length === 0) return undefined\n\n let minItem = arr[0]!\n let minValue = fn(minItem)\n\n for (let i = 1; i < arr.length; i++) {\n const item = arr[i]!\n const value = fn(item)\n if (value < minValue) {\n minValue = value\n minItem = item\n }\n }\n\n return minItem\n}\n","/**\n * Sums the values returned by the function for each element.\n *\n * @example\n * sumBy([{ price: 10 }, { price: 20 }, { price: 30 }], item => item.price)\n * // 60\n *\n * sumBy([], item => item.price) // 0\n */\nexport function sumBy<T>(\n arr: readonly T[],\n fn: (item: T) => number\n): number {\n let sum = 0\n for (const item of arr) {\n sum += fn(item)\n }\n return sum\n}\n","/**\n * Returns the first element of an array, or undefined if empty.\n * Alias for first().\n *\n * @example\n * head([1, 2, 3]) // 1\n * head([]) // undefined\n */\nexport function head<T>(arr: readonly T[]): T | undefined {\n return arr[0]\n}\n","/**\n * Returns all elements except the first.\n *\n * @example\n * tail([1, 2, 3]) // [2, 3]\n * tail([1]) // []\n * tail([]) // []\n */\nexport function tail<T>(arr: readonly T[]): T[] {\n return arr.slice(1)\n}\n","/**\n * Returns all elements except the last.\n *\n * @example\n * init([1, 2, 3]) // [1, 2]\n * init([1]) // []\n * init([]) // []\n */\nexport function init<T>(arr: readonly T[]): T[] {\n return arr.slice(0, -1)\n}\n"]}
@@ -1,224 +0,0 @@
1
- import { __export } from './chunk-J5LGTIGS.mjs';
2
-
3
- // src/narrowing/index.ts
4
- var narrowing_exports = {};
5
- __export(narrowing_exports, {
6
- allOf: () => allOf,
7
- arrayOf: () => arrayOf,
8
- assertCondition: () => assertCondition,
9
- assertDefined: () => assertDefined,
10
- assertNotNull: () => assertNotNull,
11
- assertType: () => assertType,
12
- chainNullable: () => chainNullable,
13
- createAssertion: () => createAssertion,
14
- createDiscriminantGuard: () => createDiscriminantGuard,
15
- excludeNull: () => excludeNull,
16
- excludeNullish: () => excludeNullish,
17
- excludeUndefined: () => excludeUndefined,
18
- exhaustiveCheck: () => exhaustiveCheck,
19
- filterBy: () => filterBy,
20
- filterByGuard: () => filterByGuard,
21
- filterByRefinement: () => filterByRefinement,
22
- filterDefined: () => filterDefined,
23
- filterDefinedFn: () => filterDefinedFn,
24
- filterTruthy: () => filterTruthy,
25
- filterTruthyFn: () => filterTruthyFn,
26
- literal: () => literal,
27
- mapNullable: () => mapNullable,
28
- narrowUnion: () => narrowUnion,
29
- not: () => not,
30
- nullable: () => nullable,
31
- objectOf: () => objectOf,
32
- oneOf: () => oneOf,
33
- optional: () => optional,
34
- partitionByGuard: () => partitionByGuard,
35
- refine: () => refine,
36
- switchUnion: () => switchUnion,
37
- withDefault: () => withDefault,
38
- withDefaultLazy: () => withDefaultLazy
39
- });
40
-
41
- // src/narrowing/filterDefined.ts
42
- function filterDefined(array) {
43
- return array.filter(
44
- (item) => item !== null && item !== void 0
45
- );
46
- }
47
- function filterDefinedFn() {
48
- return (array) => filterDefined(array);
49
- }
50
-
51
- // src/narrowing/filterTruthy.ts
52
- function filterTruthy(array) {
53
- return array.filter((item) => Boolean(item));
54
- }
55
- function filterTruthyFn() {
56
- return (array) => filterTruthy(array);
57
- }
58
-
59
- // src/narrowing/filterByGuard.ts
60
- function filterByGuard(array, guard) {
61
- return array.filter(guard);
62
- }
63
- function filterByRefinement(array, refinement) {
64
- return array.filter(refinement);
65
- }
66
- function filterBy(guard) {
67
- return (array) => filterByGuard(array, guard);
68
- }
69
- function partitionByGuard(array, guard) {
70
- const matches = [];
71
- const nonMatches = [];
72
- for (const item of array) {
73
- if (guard(item)) {
74
- matches.push(item);
75
- } else {
76
- nonMatches.push(item);
77
- }
78
- }
79
- return [matches, nonMatches];
80
- }
81
-
82
- // src/narrowing/assertType.ts
83
- function assertType(value, guard, message) {
84
- if (!guard(value)) {
85
- if (typeof message === "function") {
86
- throw message();
87
- }
88
- throw new TypeError(message ?? `Type assertion failed`);
89
- }
90
- }
91
- function assertDefined(value, message) {
92
- if (value === null || value === void 0) {
93
- throw new TypeError(message ?? "Expected value to be defined");
94
- }
95
- }
96
- function assertNotNull(value, message) {
97
- if (value === null) {
98
- throw new TypeError(message ?? "Expected value to not be null");
99
- }
100
- }
101
- function assertCondition(condition, message) {
102
- if (!condition) {
103
- throw new TypeError(message ?? "Assertion failed");
104
- }
105
- }
106
- function createAssertion(guard, defaultMessage) {
107
- return (value, message) => {
108
- assertType(value, guard, message ?? defaultMessage);
109
- };
110
- }
111
-
112
- // src/narrowing/narrowUnion.ts
113
- function narrowUnion(value, key, expected) {
114
- return value[key] === expected;
115
- }
116
- function createDiscriminantGuard() {
117
- return (key, value) => {
118
- return (obj) => obj[key] === value;
119
- };
120
- }
121
- function switchUnion(value, key, handlers) {
122
- const discriminant = value[key];
123
- const handler = handlers[discriminant];
124
- return handler(value);
125
- }
126
- function exhaustiveCheck(value, message) {
127
- throw new Error(
128
- message ?? `Exhaustive check failed: unexpected value ${JSON.stringify(value)}`
129
- );
130
- }
131
-
132
- // src/narrowing/excludeNull.ts
133
- function excludeNull(value, message) {
134
- if (value === null) {
135
- throw new Error(message ?? "Unexpected null value");
136
- }
137
- return value;
138
- }
139
- function excludeUndefined(value, message) {
140
- if (value === void 0) {
141
- throw new Error(message ?? "Unexpected undefined value");
142
- }
143
- return value;
144
- }
145
- function excludeNullish(value, message) {
146
- if (value === null || value === void 0) {
147
- throw new Error(message ?? "Unexpected null or undefined value");
148
- }
149
- return value;
150
- }
151
- function withDefault(value, defaultValue) {
152
- return value ?? defaultValue;
153
- }
154
- function withDefaultLazy(value, factory) {
155
- return value ?? factory();
156
- }
157
- function mapNullable(value, fn) {
158
- if (value === null) return null;
159
- if (value === void 0) return void 0;
160
- return fn(value);
161
- }
162
- function chainNullable(value, ...fns) {
163
- let result = value;
164
- for (const fn of fns) {
165
- if (result === null || result === void 0) {
166
- return result;
167
- }
168
- result = fn(result);
169
- }
170
- return result;
171
- }
172
-
173
- // src/narrowing/refine.ts
174
- function refine(guard1, ...guards) {
175
- return ((value) => {
176
- if (!guard1(value)) return false;
177
- for (const guard of guards) {
178
- if (!guard(value)) return false;
179
- }
180
- return true;
181
- });
182
- }
183
- function oneOf(...guards) {
184
- return ((value) => {
185
- return guards.some((guard) => guard(value));
186
- });
187
- }
188
- function allOf(...guards) {
189
- return ((value) => {
190
- return guards.every((guard) => guard(value));
191
- });
192
- }
193
- function not(guard) {
194
- return ((value) => !guard(value));
195
- }
196
- function arrayOf(guard) {
197
- return (value) => {
198
- return Array.isArray(value) && value.every(guard);
199
- };
200
- }
201
- function objectOf(shape) {
202
- return (value) => {
203
- if (typeof value !== "object" || value === null) return false;
204
- const obj = value;
205
- return Object.entries(shape).every(([key, guard]) => guard(obj[key]));
206
- };
207
- }
208
- function literal(expected) {
209
- return (value) => value === expected;
210
- }
211
- function optional(guard) {
212
- return (value) => {
213
- return value === void 0 || guard(value);
214
- };
215
- }
216
- function nullable(guard) {
217
- return (value) => {
218
- return value === null || guard(value);
219
- };
220
- }
221
-
222
- export { allOf, arrayOf, assertCondition, assertDefined, assertNotNull, assertType, chainNullable, createAssertion, createDiscriminantGuard, excludeNull, excludeNullish, excludeUndefined, exhaustiveCheck, filterBy, filterByGuard, filterByRefinement, filterDefined, filterDefinedFn, filterTruthy, filterTruthyFn, literal, mapNullable, narrowUnion, narrowing_exports, not, nullable, objectOf, oneOf, optional, partitionByGuard, refine, switchUnion, withDefault, withDefaultLazy };
223
- //# sourceMappingURL=chunk-CWHYQWNU.mjs.map
224
- //# sourceMappingURL=chunk-CWHYQWNU.mjs.map