@ts-fns/stdlib 0.1.0 → 0.2.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 (135) hide show
  1. package/dist/array/index.cjs +239 -37
  2. package/dist/array/index.cjs.map +1 -1
  3. package/dist/array/index.d.cts +437 -36
  4. package/dist/array/index.d.cts.map +1 -1
  5. package/dist/array/index.d.mts +437 -36
  6. package/dist/array/index.d.mts.map +1 -1
  7. package/dist/array/index.mjs +225 -22
  8. package/dist/array/index.mjs.map +1 -1
  9. package/dist/function/index.cjs +4 -2
  10. package/dist/function/index.d.cts +128 -13
  11. package/dist/function/index.d.cts.map +1 -1
  12. package/dist/function/index.d.mts +128 -13
  13. package/dist/function/index.d.mts.map +1 -1
  14. package/dist/function/index.mjs +3 -3
  15. package/dist/{function-DnI2v0p3.mjs → function-CYHPhQCQ.mjs} +84 -6
  16. package/dist/function-CYHPhQCQ.mjs.map +1 -0
  17. package/dist/{function-CB82a2GS.cjs → function-DYPifnmg.cjs} +95 -5
  18. package/dist/function-DYPifnmg.cjs.map +1 -0
  19. package/dist/{get-yrs1Kqho.cjs → get-1kqkxPFX.cjs} +20 -8
  20. package/dist/get-1kqkxPFX.cjs.map +1 -0
  21. package/dist/{get-CWL_cu6G.mjs → get-Dv6ejLZg.mjs} +21 -3
  22. package/dist/get-Dv6ejLZg.mjs.map +1 -0
  23. package/dist/guard/index.cjs +5 -12
  24. package/dist/guard/index.cjs.map +1 -1
  25. package/dist/guard/index.d.cts +18 -17
  26. package/dist/guard/index.d.cts.map +1 -1
  27. package/dist/guard/index.d.mts +18 -17
  28. package/dist/guard/index.d.mts.map +1 -1
  29. package/dist/guard/index.mjs +4 -12
  30. package/dist/guard/index.mjs.map +1 -1
  31. package/dist/index-MbdqaUt1.d.cts +54 -0
  32. package/dist/index-MbdqaUt1.d.cts.map +1 -0
  33. package/dist/index-k-paNOu4.d.mts +54 -0
  34. package/dist/index-k-paNOu4.d.mts.map +1 -0
  35. package/dist/iterator/index.cjs +72 -26
  36. package/dist/iterator/index.cjs.map +1 -1
  37. package/dist/iterator/index.d.cts +157 -5
  38. package/dist/iterator/index.d.cts.map +1 -1
  39. package/dist/iterator/index.d.mts +157 -5
  40. package/dist/iterator/index.d.mts.map +1 -1
  41. package/dist/iterator/index.mjs +66 -24
  42. package/dist/iterator/index.mjs.map +1 -1
  43. package/dist/lens/index.cjs +3 -3
  44. package/dist/lens/index.cjs.map +1 -1
  45. package/dist/lens/index.mjs +3 -3
  46. package/dist/lens/index.mjs.map +1 -1
  47. package/dist/map/index.cjs +88 -1
  48. package/dist/map/index.cjs.map +1 -1
  49. package/dist/map/index.d.cts +130 -2
  50. package/dist/map/index.d.cts.map +1 -1
  51. package/dist/map/index.d.mts +130 -2
  52. package/dist/map/index.d.mts.map +1 -1
  53. package/dist/map/index.mjs +86 -2
  54. package/dist/map/index.mjs.map +1 -1
  55. package/dist/number/index.cjs +91 -18
  56. package/dist/number/index.cjs.map +1 -1
  57. package/dist/number/index.d.cts +134 -19
  58. package/dist/number/index.d.cts.map +1 -1
  59. package/dist/number/index.d.mts +134 -19
  60. package/dist/number/index.d.mts.map +1 -1
  61. package/dist/number/index.mjs +91 -18
  62. package/dist/number/index.mjs.map +1 -1
  63. package/dist/object/index.cjs +111 -7
  64. package/dist/object/index.cjs.map +1 -1
  65. package/dist/object/index.d.cts +186 -26
  66. package/dist/object/index.d.cts.map +1 -1
  67. package/dist/object/index.d.mts +186 -26
  68. package/dist/object/index.d.mts.map +1 -1
  69. package/dist/object/index.mjs +111 -7
  70. package/dist/object/index.mjs.map +1 -1
  71. package/dist/orNull-CJNrTjhQ.cjs +45 -0
  72. package/dist/orNull-CJNrTjhQ.cjs.map +1 -0
  73. package/dist/orNull-EeXiCxD4.mjs +34 -0
  74. package/dist/orNull-EeXiCxD4.mjs.map +1 -0
  75. package/dist/order/index.cjs +22 -1
  76. package/dist/order/index.cjs.map +1 -1
  77. package/dist/order/index.d.cts +2 -2
  78. package/dist/order/index.d.mts +2 -2
  79. package/dist/order/index.mjs +22 -1
  80. package/dist/order/index.mjs.map +1 -1
  81. package/dist/{order.constants-BWSCg3C7.d.cts → order.constants-DpGY-EDp.d.cts} +4 -1
  82. package/dist/order.constants-DpGY-EDp.d.cts.map +1 -0
  83. package/dist/{order.constants-BWSCg3C7.d.mts → order.constants-DpGY-EDp.d.mts} +4 -1
  84. package/dist/order.constants-DpGY-EDp.d.mts.map +1 -0
  85. package/dist/purry-DXnhXie9.mjs +22 -0
  86. package/dist/purry-DXnhXie9.mjs.map +1 -0
  87. package/dist/purry-Dqp_F64t.cjs +27 -0
  88. package/dist/purry-Dqp_F64t.cjs.map +1 -0
  89. package/dist/set/index.cjs +59 -1
  90. package/dist/set/index.cjs.map +1 -1
  91. package/dist/set/index.d.cts +151 -2
  92. package/dist/set/index.d.cts.map +1 -1
  93. package/dist/set/index.d.mts +151 -2
  94. package/dist/set/index.d.mts.map +1 -1
  95. package/dist/set/index.mjs +59 -2
  96. package/dist/set/index.mjs.map +1 -1
  97. package/dist/string/index.cjs +289 -15
  98. package/dist/string/index.cjs.map +1 -1
  99. package/dist/string/index.d.cts +406 -1
  100. package/dist/string/index.d.cts.map +1 -1
  101. package/dist/string/index.d.mts +406 -1
  102. package/dist/string/index.d.mts.map +1 -1
  103. package/dist/string/index.mjs +271 -4
  104. package/dist/string/index.mjs.map +1 -1
  105. package/dist/tuple/index.cjs +20 -21
  106. package/dist/tuple/index.cjs.map +1 -1
  107. package/dist/tuple/index.d.cts +27 -58
  108. package/dist/tuple/index.d.cts.map +1 -1
  109. package/dist/tuple/index.d.mts +27 -58
  110. package/dist/tuple/index.d.mts.map +1 -1
  111. package/dist/tuple/index.mjs +20 -22
  112. package/dist/tuple/index.mjs.map +1 -1
  113. package/package.json +55 -127
  114. package/dist/function-CB82a2GS.cjs.map +0 -1
  115. package/dist/function-DnI2v0p3.mjs.map +0 -1
  116. package/dist/get-CWL_cu6G.mjs.map +0 -1
  117. package/dist/get-yrs1Kqho.cjs.map +0 -1
  118. package/dist/index-BJlKyBJH.d.cts +0 -18
  119. package/dist/index-BJlKyBJH.d.cts.map +0 -1
  120. package/dist/index-DGrnGMDt.d.mts +0 -18
  121. package/dist/index-DGrnGMDt.d.mts.map +0 -1
  122. package/dist/isNotNil-DrF-ohem.cjs +0 -28
  123. package/dist/isNotNil-DrF-ohem.cjs.map +0 -1
  124. package/dist/isNotNil-R5f1hC53.mjs +0 -23
  125. package/dist/isNotNil-R5f1hC53.mjs.map +0 -1
  126. package/dist/orThrow-V91Jw2lF.mjs +0 -15
  127. package/dist/orThrow-V91Jw2lF.mjs.map +0 -1
  128. package/dist/orThrow-ejzcQYAI.cjs +0 -20
  129. package/dist/orThrow-ejzcQYAI.cjs.map +0 -1
  130. package/dist/order.constants-BWSCg3C7.d.cts.map +0 -1
  131. package/dist/order.constants-BWSCg3C7.d.mts.map +0 -1
  132. package/dist/purry-B2_0DGLV.cjs +0 -28
  133. package/dist/purry-B2_0DGLV.cjs.map +0 -1
  134. package/dist/purry-BOWmqwDB.mjs +0 -23
  135. package/dist/purry-BOWmqwDB.mjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"function-DYPifnmg.cjs","names":["purry","purry"],"sources":["../src/function/orThrow.ts","../src/function/always.ts","../src/function/internal/_compose.ts","../src/function/compose.ts","../src/function/composed.ts","../src/function/identity.ts","../src/function/memoizeOne.ts","../src/function/noop.ts","../src/function/internal/_pipe.ts","../src/function/pipe.ts","../src/function/piped.ts","../src/function/tap.ts","../src/function/unless.ts","../src/function/when.ts"],"sourcesContent":["/**\n * Wraps a function so that an error result is thrown instead of returned.\n *\n * @example\n * ```ts\n * const parse = orThrow((s: string) => (s ? s : new Error('empty')));\n * parse('ok'); // 'ok'\n * parse(''); // throws Error\n * ```\n */\nexport function orThrow(fn: (...args: readonly any[]) => unknown): (...args: readonly unknown[]) => unknown {\n const argLength = fn.length;\n\n const wrappedFn = (...args: readonly unknown[]): unknown => {\n const result = fn(...args);\n if (result instanceof Error) {\n throw result;\n }\n return result;\n };\n\n Object.defineProperty(wrappedFn, 'length', {\n value: argLength,\n });\n\n return wrappedFn;\n}\n","/**\n * Returns a function that always yields the same value, ignoring its arguments.\n *\n * @example\n * ```ts\n * always(42)(); // 42\n * always('hi')(1, 2, 3); // 'hi'\n * ```\n */\nexport function always<T>(value: T): (...args: unknown[]) => T {\n return () => value;\n}\n","export function composeImplementation(input: unknown, ...pipeline: readonly ((value: any) => unknown)[]): any {\n const len = pipeline.length;\n let output: unknown = input;\n for (let i = len - 1; i >= 0; i -= 1) {\n output = pipeline[i]!(output);\n if (Error.isError(output)) {\n return output;\n }\n }\n return output;\n}\n","import type { Err, Fn, Ok } from '../types';\n\nimport { composeImplementation } from './internal/_compose';\n\n/**\n * Composes a value through a sequence of functions from right to left.\n * Functions are listed last-to-first; the rightmost function is applied first.\n * Stops and returns the first error encountered in the pipeline.\n *\n * @example\n * ```ts\n * compose(1, n => n * 2, n => n + 1); // 4\n * compose('a', s => s + '!', s => s.toUpperCase()); // 'A!'\n * ```\n */\nexport function compose<A, B>(input: A, fn1: Fn<Ok<A>, B>): B | Err<A>;\nexport function compose<A, B, C>(input: A, fn2: Fn<Ok<B>, C>, fn1: Fn<Ok<A>, B>): C | Err<A> | Err<B>;\nexport function compose<A, B, C, D>(\n input: A,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): D | Err<A> | Err<B> | Err<C>;\nexport function compose<A, B, C, D, E>(\n input: A,\n fn4: Fn<Ok<D>, E>,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): E | Err<A> | Err<B> | Err<C> | Err<D>;\nexport function compose<A, B, C, D, E, F>(\n input: A,\n fn5: Fn<Ok<E>, F>,\n fn4: Fn<Ok<D>, E>,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | F;\nexport function compose<A, B, C, D, E, F, G>(\n input: A,\n fn6: Fn<Ok<F>, G>,\n fn5: Fn<Ok<E>, F>,\n fn4: Fn<Ok<D>, E>,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | G;\nexport function compose<A, B, C, D, E, F, G, H>(\n input: A,\n fn7: Fn<Ok<G>, H>,\n fn6: Fn<Ok<F>, G>,\n fn5: Fn<Ok<E>, F>,\n fn4: Fn<Ok<D>, E>,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | Err<G> | H;\nexport function compose<A, B, C, D, E, F, G, H, I>(\n input: A,\n fn8: Fn<Ok<H>, I>,\n fn7: Fn<Ok<G>, H>,\n fn6: Fn<Ok<F>, G>,\n fn5: Fn<Ok<E>, F>,\n fn4: Fn<Ok<D>, E>,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | Err<G> | Err<H> | I;\nexport function compose<A, B, C, D, E, F, G, H, I, J>(\n input: A,\n fn9: Fn<Ok<I>, J>,\n fn8: Fn<Ok<H>, I>,\n fn7: Fn<Ok<G>, H>,\n fn6: Fn<Ok<F>, G>,\n fn5: Fn<Ok<E>, F>,\n fn4: Fn<Ok<D>, E>,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | Err<G> | Err<H> | Err<I> | J;\nexport function compose(input: unknown, ...pipeline: readonly ((value: any) => unknown)[]): any {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return composeImplementation(input, ...pipeline);\n}\n","import type { Err, Fn, Ok } from '../types';\n\nimport { composeImplementation } from './internal/_compose';\n\n/**\n * Returns a function that composes a value through a sequence of functions from right to left.\n * Functions are listed last-to-first; the rightmost function is applied first.\n * Stops and returns the first error encountered in the pipeline.\n *\n * @example\n * ```ts\n * composed(n => n * 2, n => n + 1)(1); // 4\n * composed(s => s + '!', s => s.toUpperCase())('a'); // 'A!'\n * ```\n */\nexport function composed<A, B>(fn1: Fn<Ok<A>, B>): (input: A) => B | Err<A>;\nexport function composed<A, B, C>(fn2: Fn<Ok<B>, C>, fn1: Fn<Ok<A>, B>): (input: A) => C | Err<A> | Err<B>;\nexport function composed<A, B, C, D>(\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): (input: A) => D | Err<A> | Err<B> | Err<C>;\nexport function composed<A, B, C, D, E>(\n fn4: Fn<Ok<D>, E>,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): (input: A) => E | Err<A> | Err<B> | Err<C> | Err<D>;\nexport function composed<A, B, C, D, E, F>(\n fn5: Fn<Ok<E>, F>,\n fn4: Fn<Ok<D>, E>,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): (input: A) => Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | F;\nexport function composed<A, B, C, D, E, F, G>(\n fn6: Fn<Ok<F>, G>,\n fn5: Fn<Ok<E>, F>,\n fn4: Fn<Ok<D>, E>,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): (input: A) => Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | G;\nexport function composed<A, B, C, D, E, F, G, H>(\n fn7: Fn<Ok<G>, H>,\n fn6: Fn<Ok<F>, G>,\n fn5: Fn<Ok<E>, F>,\n fn4: Fn<Ok<D>, E>,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): (input: A) => Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | Err<G> | H;\nexport function composed<A, B, C, D, E, F, G, H, I>(\n fn8: Fn<Ok<H>, I>,\n fn7: Fn<Ok<G>, H>,\n fn6: Fn<Ok<F>, G>,\n fn5: Fn<Ok<E>, F>,\n fn4: Fn<Ok<D>, E>,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): (input: A) => Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | Err<G> | Err<H> | I;\nexport function composed<A, B, C, D, E, F, G, H, I, J>(\n fn9: Fn<Ok<I>, J>,\n fn8: Fn<Ok<H>, I>,\n fn7: Fn<Ok<G>, H>,\n fn6: Fn<Ok<F>, G>,\n fn5: Fn<Ok<E>, F>,\n fn4: Fn<Ok<D>, E>,\n fn3: Fn<Ok<C>, D>,\n fn2: Fn<Ok<B>, C>,\n fn1: Fn<Ok<A>, B>,\n): (input: A) => Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | Err<G> | Err<H> | Err<I> | J;\nexport function composed(...pipeline: readonly ((input: unknown) => unknown)[]): (input: unknown) => any {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return (input: unknown) => composeImplementation(input, ...pipeline);\n}\n","/**\n * Returns its argument unchanged.\n *\n * @example\n * ```ts\n * identity(42); // 42\n * identity('hello'); // 'hello'\n * ```\n */\nexport function identity<T>(value: T): T {\n return value;\n}\n","function equalsByRef(first: unknown, second: unknown): boolean {\n if (first === second) {\n return true;\n }\n if (Number.isNaN(first) && Number.isNaN(second)) {\n return true;\n }\n\n return false;\n}\n\nfunction areInputsEqual(newInputs: readonly unknown[], lastInputs: readonly unknown[]): boolean {\n if (newInputs.length !== lastInputs.length) {\n return false;\n }\n\n for (let i = 0; i < newInputs.length; i += 1) {\n if (!equalsByRef(newInputs[i], lastInputs[i])) {\n return false;\n }\n }\n return true;\n}\n\nexport type ArgumentCompareFn<TFunc extends (...args: unknown[]) => unknown> = (\n newArgs: Parameters<TFunc>,\n lastArgs: Parameters<TFunc>,\n) => boolean;\n\nexport type MemoizedFn<TFunc extends (this: unknown, ...args: unknown[]) => unknown> = {\n clear: () => void;\n (this: ThisParameterType<TFunc>, ...args: Parameters<TFunc>): ReturnType<TFunc>;\n};\n\ntype Cache<TFunc extends (this: unknown, ...args: unknown[]) => unknown> = {\n lastArgs: Parameters<TFunc>;\n lastResult: ReturnType<TFunc>;\n lastThis: ThisParameterType<TFunc>;\n};\n\nexport function memoizeOneImplementation<TFunc extends (this: unknown, ...args: unknown[]) => unknown>(\n fn: TFunc,\n argumentCompareFn: ArgumentCompareFn<TFunc>,\n): MemoizedFn<TFunc> {\n let cache: Cache<TFunc> | null = null;\n\n function memoized(this: ThisParameterType<TFunc>, ...newArgs: Parameters<TFunc>): ReturnType<TFunc> {\n if (cache?.lastThis === this && argumentCompareFn(newArgs, cache.lastArgs)) {\n return cache.lastResult;\n }\n\n const lastResult = fn.apply(this, newArgs) as ReturnType<TFunc>;\n cache = {\n lastArgs: newArgs,\n lastResult,\n lastThis: this,\n };\n\n return lastResult;\n }\n\n memoized.clear = () => {\n cache = null;\n };\n\n return memoized;\n}\n\n/**\n * Memoizes a function so that it reuses the last result when called with the same arguments.\n * Uses reference equality to compare arguments.\n *\n * @example\n * ```ts\n * const add = memoizeOne((a: number, b: number) => a + b);\n * add(1, 2); // 3 (computed)\n * add(1, 2); // 3 (cached)\n * add.clear();\n * ```\n */\nexport function memoizeOne<TFunc extends (this: unknown, ...args: unknown[]) => unknown>(fn: TFunc): MemoizedFn<TFunc> {\n return memoizeOneImplementation(fn, areInputsEqual);\n}\n\n/**\n * Like `memoizeOne`, but accepts a custom function for comparing arguments.\n *\n * @example\n * ```ts\n * const fn = memoizeOne.with(\n * (a: { n: number }) => a.n * 2,\n * ([a], [b]) => a.n === b.n,\n * );\n * fn({ n: 1 }); // 2 (computed)\n * fn({ n: 1 }); // 2 (cached, compared by `n`)\n * ```\n */\nmemoizeOne.with = memoizeOneImplementation;\n","/**\n * A function that does nothing.\n *\n * @example\n * ```ts\n * noop(); // void\n * noop(1, 2, 3); // void\n * ```\n */\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function noop(...args: unknown[]): void {\n // noop\n}\n","export function pipeImplementation(input: unknown, ...pipeline: readonly ((value: any) => unknown)[]): any {\n const len = pipeline.length;\n let output: unknown = input;\n for (let i = 0; i < len; i += 1) {\n output = pipeline[i]!(output);\n if (Error.isError(output)) {\n return output;\n }\n }\n return output;\n}\n","import type { Err, Fn, Ok } from '../types';\n\nimport { pipeImplementation } from './internal/_pipe';\n\n/**\n * Pipes a value through a sequence of functions from left to right.\n * Stops and returns the first error encountered in the pipeline.\n *\n * @example\n * ```ts\n * pipe(1, n => n + 1, n => n * 2); // 4\n * pipe('a', s => s.toUpperCase(), s => s + '!'); // 'A!'\n * ```\n */\n// TODO: add up to 9 arguments\nexport function pipe<A, B>(value: A, fn1: Fn<Ok<A>, B>): B | Err<A>;\nexport function pipe<A, B, C>(value: A, fn1: Fn<Ok<A>, B>, fn2: Fn<Ok<B>, C>): C | Err<A> | Err<B>;\nexport function pipe<A, B, C, D>(\n value: A,\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n): D | Err<A> | Err<B> | Err<C>;\nexport function pipe<A, B, C, D, E>(\n value: A,\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n fn4: Fn<Ok<D>, E>,\n): E | Err<A> | Err<B> | Err<C> | Err<D>;\nexport function pipe<A, B, C, D, E, F>(\n value: A,\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n fn4: Fn<Ok<D>, E>,\n fn5: Fn<Ok<E>, F>,\n): Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | F;\nexport function pipe<A, B, C, D, E, F, G>(\n value: A,\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n fn4: Fn<Ok<D>, E>,\n fn5: Fn<Ok<E>, F>,\n fn6: Fn<Ok<F>, G>,\n): Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | G;\nexport function pipe<A, B, C, D, E, F, G, H>(\n value: A,\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n fn4: Fn<Ok<D>, E>,\n fn5: Fn<Ok<E>, F>,\n fn6: Fn<Ok<F>, G>,\n fn7: Fn<Ok<G>, H>,\n): Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | Err<G> | H;\nexport function pipe<A, B, C, D, E, F, G, H, I>(\n value: A,\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n fn4: Fn<Ok<D>, E>,\n fn5: Fn<Ok<E>, F>,\n fn6: Fn<Ok<F>, G>,\n fn7: Fn<Ok<G>, H>,\n fn8: Fn<Ok<H>, I>,\n): Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | Err<G> | Err<H> | I;\nexport function pipe<A, B, C, D, E, F, G, H, I, J>(\n value: A,\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n fn4: Fn<Ok<D>, E>,\n fn5: Fn<Ok<E>, F>,\n fn6: Fn<Ok<F>, G>,\n fn7: Fn<Ok<G>, H>,\n fn8: Fn<Ok<H>, I>,\n fn9: Fn<Ok<I>, J>,\n): Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | Err<G> | Err<H> | Err<I> | J;\nexport function pipe(input: unknown, ...pipeline: readonly ((value: any) => unknown)[]): any {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return pipeImplementation(input, ...pipeline);\n}\n","import type { Err, Fn, Ok } from '../types';\n\nimport { pipeImplementation } from './internal/_pipe';\n\n/**\n * Returns a function that pipes a value through a sequence of functions from left to right.\n * Stops and returns the first error encountered in the pipeline.\n *\n * @example\n * ```ts\n * piped(n => n + 1, n => n * 2)(1); // 4\n * piped(s => s.toUpperCase(), s => s + '!')('a'); // 'A!'\n * ```\n */\nexport function piped<A, B>(fn1: Fn<Ok<A>, B>): (input: A) => B | Err<A>;\nexport function piped<A, B, C>(fn1: Fn<Ok<A>, B>, fn2: Fn<Ok<B>, C>): (input: A) => C | Err<A> | Err<B>;\nexport function piped<A, B, C, D>(\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n): (input: A) => D | Err<A> | Err<B> | Err<C>;\nexport function piped<A, B, C, D, E>(\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n fn4: Fn<Ok<D>, E>,\n): (input: A) => E | Err<A> | Err<B> | Err<C> | Err<D>;\nexport function piped<A, B, C, D, E, F>(\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n fn4: Fn<Ok<D>, E>,\n fn5: Fn<Ok<E>, F>,\n): (input: A) => Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | F;\nexport function piped<A, B, C, D, E, F, G>(\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n fn4: Fn<Ok<D>, E>,\n fn5: Fn<Ok<E>, F>,\n fn6: Fn<Ok<F>, G>,\n): (input: A) => Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | G;\nexport function piped<A, B, C, D, E, F, G, H>(\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n fn4: Fn<Ok<D>, E>,\n fn5: Fn<Ok<E>, F>,\n fn6: Fn<Ok<F>, G>,\n fn7: Fn<Ok<G>, H>,\n): (input: A) => Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | Err<G> | H;\nexport function piped<A, B, C, D, E, F, G, H, I>(\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n fn4: Fn<Ok<D>, E>,\n fn5: Fn<Ok<E>, F>,\n fn6: Fn<Ok<F>, G>,\n fn7: Fn<Ok<G>, H>,\n fn8: Fn<Ok<H>, I>,\n): (input: A) => Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | Err<G> | Err<H> | I;\nexport function piped<A, B, C, D, E, F, G, H, I, J>(\n fn1: Fn<Ok<A>, B>,\n fn2: Fn<Ok<B>, C>,\n fn3: Fn<Ok<C>, D>,\n fn4: Fn<Ok<D>, E>,\n fn5: Fn<Ok<E>, F>,\n fn6: Fn<Ok<F>, G>,\n fn7: Fn<Ok<G>, H>,\n fn8: Fn<Ok<H>, I>,\n fn9: Fn<Ok<I>, J>,\n): (input: A) => Err<A> | Err<B> | Err<C> | Err<D> | Err<E> | Err<F> | Err<G> | Err<H> | Err<I> | J;\nexport function piped(...pipeline: readonly ((input: unknown) => unknown)[]): (input: unknown) => any {\n return (value: unknown): unknown => pipeImplementation(value, ...pipeline);\n}\n","/**\n * Runs a side-effect callback on a value and returns the original value unchanged.\n *\n * @example\n * ```ts\n * tap(console.log)(42); // logs 42, returns 42\n * tap(n => console.log(n * 2))([1, 2, 3]); // logs [2, 4, 6], returns [1, 2, 3]\n * ```\n */\nexport function tap<T>(callbackFn: (data: T) => void): (data: T) => T {\n return (data: T) => {\n callbackFn(data);\n return data;\n };\n}\n","import { purry } from './purry';\n\nfunction unlessImplementation<T>(data: T, predicate: (data: T) => boolean, fn: (data: T) => T): T {\n return predicate(data) ? data : fn(data);\n}\n\n/**\n * Applies a transformation when a predicate is false; otherwise returns the value unchanged.\n *\n * @example\n * ```ts\n * unless(1, n => n > 1, n => n * 10); // 10\n * unless(n => n > 1, n => n * 10)(1); // 10\n * unless(2, n => n > 1, n => n * 10); // 2\n * ```\n */\nexport function unless<T, S extends T>(predicate: (data: T) => data is S, fn: (data: S) => T): (data: T) => T;\nexport function unless<T>(predicate: (data: T) => boolean, fn: (data: T) => T): (data: T) => T;\nexport function unless<T, S extends T>(data: T, predicate: (data: T) => data is S, fn: (data: S) => T): T;\nexport function unless<T>(data: T, predicate: (data: T) => boolean, fn: (data: T) => T): T;\nexport function unless(...args: unknown[]): unknown {\n return purry(unlessImplementation, args);\n}\n","import { purry } from './purry';\n\nfunction whenImplementation<T>(data: T, predicate: (data: T) => boolean, fn: (data: T) => T): T {\n return predicate(data) ? fn(data) : data;\n}\n\n/**\n * Applies a transformation when a predicate is true; otherwise returns the value unchanged.\n *\n * @example\n * ```ts\n * when(2, n => n > 1, n => n * 10); // 20\n * when(n => n > 1, n => n * 10)(2); // 20\n * when(1, n => n > 1, n => n * 10); // 1\n * ```\n */\nexport function when<T, S extends T>(predicate: (data: T) => data is S, fn: (data: S) => T): (data: T) => T;\nexport function when<T>(predicate: (data: T) => boolean, fn: (data: T) => T): (data: T) => T;\nexport function when<T, S extends T>(data: T, predicate: (data: T) => data is S, fn: (data: S) => T): T;\nexport function when<T>(data: T, predicate: (data: T) => boolean, fn: (data: T) => T): T;\nexport function when(...args: unknown[]): unknown {\n return purry(whenImplementation, args);\n}\n"],"mappings":";;;;;;;;;;;;AAUA,SAAgB,QAAQ,IAAoF;CAC1G,MAAM,YAAY,GAAG;CAErB,MAAM,aAAa,GAAG,SAAsC;EAC1D,MAAM,SAAS,GAAG,GAAG,IAAI;EACzB,IAAI,kBAAkB,OACpB,MAAM;EAER,OAAO;CACT;CAEA,OAAO,eAAe,WAAW,UAAU,EACzC,OAAO,UACT,CAAC;CAED,OAAO;AACT;;;;;;;;;;;;ACjBA,SAAgB,OAAU,OAAqC;CAC7D,aAAa;AACf;;;ACXA,SAAgB,sBAAsB,OAAgB,GAAG,UAAqD;CAC5G,MAAM,MAAM,SAAS;CACrB,IAAI,SAAkB;CACtB,KAAK,IAAI,IAAI,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG;EACpC,SAAS,SAAS,EAAE,CAAE,MAAM;EAC5B,IAAI,MAAM,QAAQ,MAAM,GACtB,OAAO;CAEX;CACA,OAAO;AACT;;;ACsEA,SAAgB,QAAQ,OAAgB,GAAG,UAAqD;CAE9F,OAAO,sBAAsB,OAAO,GAAG,QAAQ;AACjD;;;ACVA,SAAgB,SAAS,GAAG,UAA6E;CAEvG,QAAQ,UAAmB,sBAAsB,OAAO,GAAG,QAAQ;AACrE;;;;;;;;;;;;ACnEA,SAAgB,SAAY,OAAa;CACvC,OAAO;AACT;;;ACXA,SAAS,YAAY,OAAgB,QAA0B;CAC7D,IAAI,UAAU,QACZ,OAAO;CAET,IAAI,OAAO,MAAM,KAAK,KAAK,OAAO,MAAM,MAAM,GAC5C,OAAO;CAGT,OAAO;AACT;AAEA,SAAS,eAAe,WAA+B,YAAyC;CAC9F,IAAI,UAAU,WAAW,WAAW,QAClC,OAAO;CAGT,KAAK,IAAI,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK,GACzC,IAAI,CAAC,YAAY,UAAU,IAAI,WAAW,EAAE,GAC1C,OAAO;CAGX,OAAO;AACT;AAkBA,SAAgB,yBACd,IACA,mBACmB;CACnB,IAAI,QAA6B;CAEjC,SAAS,SAAyC,GAAG,SAA+C;EAClG,IAAI,OAAO,aAAa,QAAQ,kBAAkB,SAAS,MAAM,QAAQ,GACvE,OAAO,MAAM;EAGf,MAAM,aAAa,GAAG,MAAM,MAAM,OAAO;EACzC,QAAQ;GACN,UAAU;GACV;GACA,UAAU;EACZ;EAEA,OAAO;CACT;CAEA,SAAS,cAAc;EACrB,QAAQ;CACV;CAEA,OAAO;AACT;;;;;;;;;;;;;AAcA,SAAgB,WAAyE,IAA8B;CACrH,OAAO,yBAAyB,IAAI,cAAc;AACpD;;;;;;;;;;;;;;AAeA,WAAW,OAAO;;;;;;;;;;;;ACvFlB,SAAgB,KAAK,GAAG,MAAuB,CAE/C;;;ACZA,SAAgB,mBAAmB,OAAgB,GAAG,UAAqD;CACzG,MAAM,MAAM,SAAS;CACrB,IAAI,SAAkB;CACtB,KAAK,IAAI,IAAI,GAAG,IAAI,KAAK,KAAK,GAAG;EAC/B,SAAS,SAAS,EAAE,CAAE,MAAM;EAC5B,IAAI,MAAM,QAAQ,MAAM,GACtB,OAAO;CAEX;CACA,OAAO;AACT;;;ACsEA,SAAgB,KAAK,OAAgB,GAAG,UAAqD;CAE3F,OAAO,mBAAmB,OAAO,GAAG,QAAQ;AAC9C;;;ACXA,SAAgB,MAAM,GAAG,UAA6E;CACpG,QAAQ,UAA4B,mBAAmB,OAAO,GAAG,QAAQ;AAC3E;;;;;;;;;;;;ACjEA,SAAgB,IAAO,YAA+C;CACpE,QAAQ,SAAY;EAClB,WAAW,IAAI;EACf,OAAO;CACT;AACF;;;ACZA,SAAS,qBAAwB,MAAS,WAAiC,IAAuB;CAChG,OAAO,UAAU,IAAI,IAAI,OAAO,GAAG,IAAI;AACzC;AAgBA,SAAgB,OAAO,GAAG,MAA0B;CAClD,OAAOA,cAAAA,MAAM,sBAAsB,IAAI;AACzC;;;ACpBA,SAAS,mBAAsB,MAAS,WAAiC,IAAuB;CAC9F,OAAO,UAAU,IAAI,IAAI,GAAG,IAAI,IAAI;AACtC;AAgBA,SAAgB,KAAK,GAAG,MAA0B;CAChD,OAAOC,cAAAA,MAAM,oBAAoB,IAAI;AACvC"}
@@ -1,4 +1,4 @@
1
- const require_purry = require("./purry-B2_0DGLV.cjs");
1
+ const require_purry = require("./purry-Dqp_F64t.cjs");
2
2
  const require_errors = require("./errors-O-d_Vemi.cjs");
3
3
  //#region src/object/get.ts
4
4
  function getImplementation(obj, key) {
@@ -13,6 +13,15 @@ function getOrImplementation(obj, key, defaultValue) {
13
13
  function getOr(...args) {
14
14
  return require_purry.purry(getOrImplementation, args);
15
15
  }
16
+ /**
17
+ * Like `get`, but returns a default value when the property is missing or nullish.
18
+ *
19
+ * @example
20
+ * ```ts
21
+ * get.or('name', 'Unknown', { name: 'John' }); // 'John'
22
+ * get.or('age', 0)({ name: 'John' }); // 0
23
+ * ```
24
+ */
16
25
  get.or = getOr;
17
26
  function getAssertImplementation(obj, key) {
18
27
  return obj[key];
@@ -20,6 +29,15 @@ function getAssertImplementation(obj, key) {
20
29
  function getAssert(...args) {
21
30
  return require_purry.purry(getAssertImplementation, args);
22
31
  }
32
+ /**
33
+ * Like `get`, but returns the property value directly without wrapping missing values in a `NotFoundError`.
34
+ *
35
+ * @example
36
+ * ```ts
37
+ * get.assert('name', { name: 'John' }); // 'John'
38
+ * get.assert('age')({ name: 'John' }); // undefined
39
+ * ```
40
+ */
23
41
  get.assert = getAssert;
24
42
  //#endregion
25
43
  Object.defineProperty(exports, "get", {
@@ -28,11 +46,5 @@ Object.defineProperty(exports, "get", {
28
46
  return get;
29
47
  }
30
48
  });
31
- Object.defineProperty(exports, "getAssert", {
32
- enumerable: true,
33
- get: function() {
34
- return getAssert;
35
- }
36
- });
37
49
 
38
- //# sourceMappingURL=get-yrs1Kqho.cjs.map
50
+ //# sourceMappingURL=get-1kqkxPFX.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-1kqkxPFX.cjs","names":["NotFoundError","purry"],"sources":["../src/object/get.ts"],"sourcesContent":["import { NotFoundError } from '../errors';\nimport { purry } from '../function/purry';\n\nfunction getImplementation<Obj extends object, Key extends keyof Obj>(\n obj: Obj,\n key: Key,\n): NonNullable<Obj[Key]> | NotFoundError {\n return obj[key] ?? new NotFoundError(`Obj.get() :: Property ${String(key)} not found in object`);\n}\n\n/**\n * Gets a property from an object by key.\n * Returns a not-found error when the property is missing or nullish.\n *\n * @example\n * ```ts\n * get('name', { name: 'John' }); // 'John'\n * get('age')({ name: 'John' }); // NotFoundError\n * ```\n */\nexport function get<Obj extends object, Key extends keyof Obj>(\n key: Key,\n): (obj: Obj) => NonNullable<Obj[Key]> | NotFoundError;\nexport function get<Obj extends object, Key extends keyof Obj>(\n obj: Obj,\n key: Key,\n): NonNullable<Obj[Key]> | NotFoundError;\nexport function get(...args: unknown[]): unknown {\n return purry(getImplementation, args);\n}\n\nfunction getOrImplementation<Obj extends object, Key extends keyof Obj>(\n obj: Obj,\n key: Key,\n defaultValue: NonNullable<Obj[Key]>,\n): Obj[Key] {\n return obj[key] ?? defaultValue;\n}\n\nfunction getOr<Obj extends object, Key extends keyof Obj>(\n obj: Obj,\n key: Key,\n defaultValue: NonNullable<Obj[Key]>,\n): Obj[Key];\nfunction getOr(...args: unknown[]): unknown {\n return purry(getOrImplementation, args);\n}\n\n/**\n * Like `get`, but returns a default value when the property is missing or nullish.\n *\n * @example\n * ```ts\n * get.or('name', 'Unknown', { name: 'John' }); // 'John'\n * get.or('age', 0)({ name: 'John' }); // 0\n * ```\n */\nget.or = getOr;\n\nfunction getAssertImplementation<Obj extends object, Key extends keyof Obj>(obj: Obj, key: Key): Obj[Key] {\n return obj[key];\n}\n\nfunction getAssert<Obj extends object, Key extends keyof Obj>(key: Key): (obj: Obj) => NonNullable<Obj[Key]>;\nfunction getAssert<Obj extends object, Key extends keyof Obj>(obj: Obj, key: Key): NonNullable<Obj[Key]>;\nfunction getAssert(...args: unknown[]): unknown {\n return purry(getAssertImplementation, args);\n}\n\n/**\n * Like `get`, but returns the property value directly without wrapping missing values in a `NotFoundError`.\n *\n * @example\n * ```ts\n * get.assert('name', { name: 'John' }); // 'John'\n * get.assert('age')({ name: 'John' }); // undefined\n * ```\n */\nget.assert = getAssert;\n"],"mappings":";;;AAGA,SAAS,kBACP,KACA,KACuC;CACvC,OAAO,IAAI,QAAQ,IAAIA,eAAAA,cAAc,yBAAyB,OAAO,GAAG,EAAE,qBAAqB;AACjG;AAmBA,SAAgB,IAAI,GAAG,MAA0B;CAC/C,OAAOC,cAAAA,MAAM,mBAAmB,IAAI;AACtC;AAEA,SAAS,oBACP,KACA,KACA,cACU;CACV,OAAO,IAAI,QAAQ;AACrB;AAOA,SAAS,MAAM,GAAG,MAA0B;CAC1C,OAAOA,cAAAA,MAAM,qBAAqB,IAAI;AACxC;;;;;;;;;;AAWA,IAAI,KAAK;AAET,SAAS,wBAAmE,KAAU,KAAoB;CACxG,OAAO,IAAI;AACb;AAIA,SAAS,UAAU,GAAG,MAA0B;CAC9C,OAAOA,cAAAA,MAAM,yBAAyB,IAAI;AAC5C;;;;;;;;;;AAWA,IAAI,SAAS"}
@@ -1,4 +1,4 @@
1
- import { t as purry } from "./purry-BOWmqwDB.mjs";
1
+ import { t as purry } from "./purry-DXnhXie9.mjs";
2
2
  import { i as NotFoundError } from "./errors-Dw1kitu_.mjs";
3
3
  //#region src/object/get.ts
4
4
  function getImplementation(obj, key) {
@@ -13,6 +13,15 @@ function getOrImplementation(obj, key, defaultValue) {
13
13
  function getOr(...args) {
14
14
  return purry(getOrImplementation, args);
15
15
  }
16
+ /**
17
+ * Like `get`, but returns a default value when the property is missing or nullish.
18
+ *
19
+ * @example
20
+ * ```ts
21
+ * get.or('name', 'Unknown', { name: 'John' }); // 'John'
22
+ * get.or('age', 0)({ name: 'John' }); // 0
23
+ * ```
24
+ */
16
25
  get.or = getOr;
17
26
  function getAssertImplementation(obj, key) {
18
27
  return obj[key];
@@ -20,8 +29,17 @@ function getAssertImplementation(obj, key) {
20
29
  function getAssert(...args) {
21
30
  return purry(getAssertImplementation, args);
22
31
  }
32
+ /**
33
+ * Like `get`, but returns the property value directly without wrapping missing values in a `NotFoundError`.
34
+ *
35
+ * @example
36
+ * ```ts
37
+ * get.assert('name', { name: 'John' }); // 'John'
38
+ * get.assert('age')({ name: 'John' }); // undefined
39
+ * ```
40
+ */
23
41
  get.assert = getAssert;
24
42
  //#endregion
25
- export { getAssert as n, get as t };
43
+ export { get as t };
26
44
 
27
- //# sourceMappingURL=get-CWL_cu6G.mjs.map
45
+ //# sourceMappingURL=get-Dv6ejLZg.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-Dv6ejLZg.mjs","names":[],"sources":["../src/object/get.ts"],"sourcesContent":["import { NotFoundError } from '../errors';\nimport { purry } from '../function/purry';\n\nfunction getImplementation<Obj extends object, Key extends keyof Obj>(\n obj: Obj,\n key: Key,\n): NonNullable<Obj[Key]> | NotFoundError {\n return obj[key] ?? new NotFoundError(`Obj.get() :: Property ${String(key)} not found in object`);\n}\n\n/**\n * Gets a property from an object by key.\n * Returns a not-found error when the property is missing or nullish.\n *\n * @example\n * ```ts\n * get('name', { name: 'John' }); // 'John'\n * get('age')({ name: 'John' }); // NotFoundError\n * ```\n */\nexport function get<Obj extends object, Key extends keyof Obj>(\n key: Key,\n): (obj: Obj) => NonNullable<Obj[Key]> | NotFoundError;\nexport function get<Obj extends object, Key extends keyof Obj>(\n obj: Obj,\n key: Key,\n): NonNullable<Obj[Key]> | NotFoundError;\nexport function get(...args: unknown[]): unknown {\n return purry(getImplementation, args);\n}\n\nfunction getOrImplementation<Obj extends object, Key extends keyof Obj>(\n obj: Obj,\n key: Key,\n defaultValue: NonNullable<Obj[Key]>,\n): Obj[Key] {\n return obj[key] ?? defaultValue;\n}\n\nfunction getOr<Obj extends object, Key extends keyof Obj>(\n obj: Obj,\n key: Key,\n defaultValue: NonNullable<Obj[Key]>,\n): Obj[Key];\nfunction getOr(...args: unknown[]): unknown {\n return purry(getOrImplementation, args);\n}\n\n/**\n * Like `get`, but returns a default value when the property is missing or nullish.\n *\n * @example\n * ```ts\n * get.or('name', 'Unknown', { name: 'John' }); // 'John'\n * get.or('age', 0)({ name: 'John' }); // 0\n * ```\n */\nget.or = getOr;\n\nfunction getAssertImplementation<Obj extends object, Key extends keyof Obj>(obj: Obj, key: Key): Obj[Key] {\n return obj[key];\n}\n\nfunction getAssert<Obj extends object, Key extends keyof Obj>(key: Key): (obj: Obj) => NonNullable<Obj[Key]>;\nfunction getAssert<Obj extends object, Key extends keyof Obj>(obj: Obj, key: Key): NonNullable<Obj[Key]>;\nfunction getAssert(...args: unknown[]): unknown {\n return purry(getAssertImplementation, args);\n}\n\n/**\n * Like `get`, but returns the property value directly without wrapping missing values in a `NotFoundError`.\n *\n * @example\n * ```ts\n * get.assert('name', { name: 'John' }); // 'John'\n * get.assert('age')({ name: 'John' }); // undefined\n * ```\n */\nget.assert = getAssert;\n"],"mappings":";;;AAGA,SAAS,kBACP,KACA,KACuC;CACvC,OAAO,IAAI,QAAQ,IAAI,cAAc,yBAAyB,OAAO,GAAG,EAAE,qBAAqB;AACjG;AAmBA,SAAgB,IAAI,GAAG,MAA0B;CAC/C,OAAO,MAAM,mBAAmB,IAAI;AACtC;AAEA,SAAS,oBACP,KACA,KACA,cACU;CACV,OAAO,IAAI,QAAQ;AACrB;AAOA,SAAS,MAAM,GAAG,MAA0B;CAC1C,OAAO,MAAM,qBAAqB,IAAI;AACxC;;;;;;;;;;AAWA,IAAI,KAAK;AAET,SAAS,wBAAmE,KAAU,KAAoB;CACxG,OAAO,IAAI;AACb;AAIA,SAAS,UAAU,GAAG,MAA0B;CAC9C,OAAO,MAAM,yBAAyB,IAAI;AAC5C;;;;;;;;;;AAWA,IAAI,SAAS"}
@@ -1,12 +1,8 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_isNotNil = require("../isNotNil-DrF-ohem.cjs");
2
+ const require_orNull = require("../orNull-CJNrTjhQ.cjs");
3
3
  //#region src/guard/isNull.ts
4
4
  /**
5
- * Check whether a value is strictly `null`.
6
- *
7
- * @category Guard
8
- * @param value - The value to check.
9
- * @returns `true` if `value` is `null`; otherwise `false`.
5
+ * Checks whether a value is strictly `null`.
10
6
  *
11
7
  * @example
12
8
  * ```ts
@@ -20,11 +16,7 @@ function isNull(value) {
20
16
  //#endregion
21
17
  //#region src/guard/isUndefined.ts
22
18
  /**
23
- * Check whether a value is strictly `undefined`.
24
- *
25
- * @category Guard
26
- * @param value - The value to check.
27
- * @returns `true` if `value` is `undefined`; otherwise `false`.
19
+ * Checks whether a value is strictly `undefined`.
28
20
  *
29
21
  * @example
30
22
  * ```ts
@@ -36,8 +28,9 @@ function isUndefined(value) {
36
28
  return value === void 0;
37
29
  }
38
30
  //#endregion
39
- exports.isNotNil = require_isNotNil.isNotNil;
31
+ exports.isNotNil = require_orNull.isNotNil;
40
32
  exports.isNull = isNull;
41
33
  exports.isUndefined = isUndefined;
34
+ exports.orNull = require_orNull.orNull;
42
35
 
43
36
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":[],"sources":["../../src/guard/isNull.ts","../../src/guard/isUndefined.ts"],"sourcesContent":["/**\n * Check whether a value is strictly `null`.\n *\n * @category Guard\n * @param value - The value to check.\n * @returns `true` if `value` is `null`; otherwise `false`.\n *\n * @example\n * ```ts\n * isNull(null); // true\n * isNull(undefined); // false\n * ```\n */\nexport function isNull<T>(value: T): value is T & null {\n return value === null;\n}\n","/**\n * Check whether a value is strictly `undefined`.\n *\n * @category Guard\n * @param value - The value to check.\n * @returns `true` if `value` is `undefined`; otherwise `false`.\n *\n * @example\n * ```ts\n * isUndefined(undefined); // true\n * isUndefined(null); // false\n * ```\n */\nexport function isUndefined<T>(value: T): value is T & undefined {\n return value === undefined;\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAaA,SAAgB,OAAU,OAA6B;CACrD,OAAO,UAAU;AACnB;;;;;;;;;;;;;;;;ACFA,SAAgB,YAAe,OAAkC;CAC/D,OAAO,UAAU,KAAA;AACnB"}
1
+ {"version":3,"file":"index.cjs","names":[],"sources":["../../src/guard/isNull.ts","../../src/guard/isUndefined.ts"],"sourcesContent":["/**\n * Checks whether a value is strictly `null`.\n *\n * @example\n * ```ts\n * isNull(null); // true\n * isNull(undefined); // false\n * ```\n */\nexport function isNull<T>(value: T): value is T & null {\n return value === null;\n}\n","/**\n * Checks whether a value is strictly `undefined`.\n *\n * @example\n * ```ts\n * isUndefined(undefined); // true\n * isUndefined(null); // false\n * ```\n */\nexport function isUndefined<T>(value: T): value is T & undefined {\n return value === undefined;\n}\n"],"mappings":";;;;;;;;;;;;AASA,SAAgB,OAAU,OAA6B;CACrD,OAAO,UAAU;AACnB;;;;;;;;;;;;ACFA,SAAgB,YAAe,OAAkC;CAC/D,OAAO,UAAU,KAAA;AACnB"}
@@ -1,11 +1,6 @@
1
1
  //#region src/guard/isNotNil.d.ts
2
2
  /**
3
- * Check whether a value is not nullish (`null` nor `undefined`), using loose inequality (`!= null`).
4
- * Narrows the type to {@link NonNullable}.
5
- *
6
- * @category Guard
7
- * @param value - The value to check.
8
- * @returns `true` if `value` is neither `null` nor `undefined`; otherwise `false`.
3
+ * Checks whether a value is neither `null` nor `undefined`.
9
4
  *
10
5
  * @example
11
6
  * ```ts
@@ -18,11 +13,7 @@ declare function isNotNil<T>(value: T): value is NonNullable<T>;
18
13
  //#endregion
19
14
  //#region src/guard/isNull.d.ts
20
15
  /**
21
- * Check whether a value is strictly `null`.
22
- *
23
- * @category Guard
24
- * @param value - The value to check.
25
- * @returns `true` if `value` is `null`; otherwise `false`.
16
+ * Checks whether a value is strictly `null`.
26
17
  *
27
18
  * @example
28
19
  * ```ts
@@ -32,13 +23,23 @@ declare function isNotNil<T>(value: T): value is NonNullable<T>;
32
23
  */
33
24
  declare function isNull<T>(value: T): value is T & null;
34
25
  //#endregion
35
- //#region src/guard/isUndefined.d.ts
26
+ //#region src/guard/orNull.d.ts
36
27
  /**
37
- * Check whether a value is strictly `undefined`.
28
+ * Normalizes nullish values to `null`, leaving all other values unchanged.
29
+ * Equivalent to `value ?? null`.
38
30
  *
39
- * @category Guard
40
- * @param value - The value to check.
41
- * @returns `true` if `value` is `undefined`; otherwise `false`.
31
+ * @example
32
+ * ```ts
33
+ * orNull(0); // 0
34
+ * orNull(undefined); // null
35
+ * orNull(null); // null
36
+ * ```
37
+ */
38
+ declare function orNull<T>(value: T | null | undefined): NonNullable<T> | null;
39
+ //#endregion
40
+ //#region src/guard/isUndefined.d.ts
41
+ /**
42
+ * Checks whether a value is strictly `undefined`.
42
43
  *
43
44
  * @example
44
45
  * ```ts
@@ -48,5 +49,5 @@ declare function isNull<T>(value: T): value is T & null;
48
49
  */
49
50
  declare function isUndefined<T>(value: T): value is T & undefined;
50
51
  //#endregion
51
- export { isNotNil, isNull, isUndefined };
52
+ export { isNotNil, isNull, isUndefined, orNull };
52
53
  //# sourceMappingURL=index.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","names":[],"sources":["../../src/guard/isNotNil.ts","../../src/guard/isNull.ts","../../src/guard/isUndefined.ts"],"mappings":";;AAeA;;;;;;;;;;;;;;iBAAgB,QAAA,IAAY,KAAA,EAAO,CAAA,GAAI,KAAA,IAAS,WAAA,CAAY,CAAA;;;;AAA5D;;;;;;;;;;;;iBCFgB,MAAA,IAAU,KAAA,EAAO,CAAA,GAAI,KAAA,IAAS,CAAC;;;;ADE/C;;;;;;;;;;;;iBEFgB,WAAA,IAAe,KAAA,EAAO,CAAA,GAAI,KAAA,IAAS,CAAC"}
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../../src/guard/isNotNil.ts","../../src/guard/isNull.ts","../../src/guard/orNull.ts","../../src/guard/isUndefined.ts"],"mappings":";;AAUA;;;;;;;;;iBAAgB,QAAA,IAAY,KAAA,EAAO,CAAA,GAAI,KAAA,IAAS,WAAA,CAAY,CAAA;;;;AAA5D;;;;;;;;iBCDgB,MAAA,IAAU,KAAA,EAAO,CAAA,GAAI,KAAA,IAAS,CAAC;;;;ADC/C;;;;;;;;;;iBECgB,MAAA,IAAU,KAAA,EAAO,CAAA,sBAAuB,WAAA,CAAY,CAAA;;;;AFDpE;;;;;;;;iBGDgB,WAAA,IAAe,KAAA,EAAO,CAAA,GAAI,KAAA,IAAS,CAAC"}
@@ -1,11 +1,6 @@
1
1
  //#region src/guard/isNotNil.d.ts
2
2
  /**
3
- * Check whether a value is not nullish (`null` nor `undefined`), using loose inequality (`!= null`).
4
- * Narrows the type to {@link NonNullable}.
5
- *
6
- * @category Guard
7
- * @param value - The value to check.
8
- * @returns `true` if `value` is neither `null` nor `undefined`; otherwise `false`.
3
+ * Checks whether a value is neither `null` nor `undefined`.
9
4
  *
10
5
  * @example
11
6
  * ```ts
@@ -18,11 +13,7 @@ declare function isNotNil<T>(value: T): value is NonNullable<T>;
18
13
  //#endregion
19
14
  //#region src/guard/isNull.d.ts
20
15
  /**
21
- * Check whether a value is strictly `null`.
22
- *
23
- * @category Guard
24
- * @param value - The value to check.
25
- * @returns `true` if `value` is `null`; otherwise `false`.
16
+ * Checks whether a value is strictly `null`.
26
17
  *
27
18
  * @example
28
19
  * ```ts
@@ -32,13 +23,23 @@ declare function isNotNil<T>(value: T): value is NonNullable<T>;
32
23
  */
33
24
  declare function isNull<T>(value: T): value is T & null;
34
25
  //#endregion
35
- //#region src/guard/isUndefined.d.ts
26
+ //#region src/guard/orNull.d.ts
36
27
  /**
37
- * Check whether a value is strictly `undefined`.
28
+ * Normalizes nullish values to `null`, leaving all other values unchanged.
29
+ * Equivalent to `value ?? null`.
38
30
  *
39
- * @category Guard
40
- * @param value - The value to check.
41
- * @returns `true` if `value` is `undefined`; otherwise `false`.
31
+ * @example
32
+ * ```ts
33
+ * orNull(0); // 0
34
+ * orNull(undefined); // null
35
+ * orNull(null); // null
36
+ * ```
37
+ */
38
+ declare function orNull<T>(value: T | null | undefined): NonNullable<T> | null;
39
+ //#endregion
40
+ //#region src/guard/isUndefined.d.ts
41
+ /**
42
+ * Checks whether a value is strictly `undefined`.
42
43
  *
43
44
  * @example
44
45
  * ```ts
@@ -48,5 +49,5 @@ declare function isNull<T>(value: T): value is T & null;
48
49
  */
49
50
  declare function isUndefined<T>(value: T): value is T & undefined;
50
51
  //#endregion
51
- export { isNotNil, isNull, isUndefined };
52
+ export { isNotNil, isNull, isUndefined, orNull };
52
53
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../../src/guard/isNotNil.ts","../../src/guard/isNull.ts","../../src/guard/isUndefined.ts"],"mappings":";;AAeA;;;;;;;;;;;;;;iBAAgB,QAAA,IAAY,KAAA,EAAO,CAAA,GAAI,KAAA,IAAS,WAAA,CAAY,CAAA;;;;AAA5D;;;;;;;;;;;;iBCFgB,MAAA,IAAU,KAAA,EAAO,CAAA,GAAI,KAAA,IAAS,CAAC;;;;ADE/C;;;;;;;;;;;;iBEFgB,WAAA,IAAe,KAAA,EAAO,CAAA,GAAI,KAAA,IAAS,CAAC"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../src/guard/isNotNil.ts","../../src/guard/isNull.ts","../../src/guard/orNull.ts","../../src/guard/isUndefined.ts"],"mappings":";;AAUA;;;;;;;;;iBAAgB,QAAA,IAAY,KAAA,EAAO,CAAA,GAAI,KAAA,IAAS,WAAA,CAAY,CAAA;;;;AAA5D;;;;;;;;iBCDgB,MAAA,IAAU,KAAA,EAAO,CAAA,GAAI,KAAA,IAAS,CAAC;;;;ADC/C;;;;;;;;;;iBECgB,MAAA,IAAU,KAAA,EAAO,CAAA,sBAAuB,WAAA,CAAY,CAAA;;;;AFDpE;;;;;;;;iBGDgB,WAAA,IAAe,KAAA,EAAO,CAAA,GAAI,KAAA,IAAS,CAAC"}
@@ -1,11 +1,7 @@
1
- import { t as isNotNil } from "../isNotNil-R5f1hC53.mjs";
1
+ import { n as isNotNil, t as orNull } from "../orNull-EeXiCxD4.mjs";
2
2
  //#region src/guard/isNull.ts
3
3
  /**
4
- * Check whether a value is strictly `null`.
5
- *
6
- * @category Guard
7
- * @param value - The value to check.
8
- * @returns `true` if `value` is `null`; otherwise `false`.
4
+ * Checks whether a value is strictly `null`.
9
5
  *
10
6
  * @example
11
7
  * ```ts
@@ -19,11 +15,7 @@ function isNull(value) {
19
15
  //#endregion
20
16
  //#region src/guard/isUndefined.ts
21
17
  /**
22
- * Check whether a value is strictly `undefined`.
23
- *
24
- * @category Guard
25
- * @param value - The value to check.
26
- * @returns `true` if `value` is `undefined`; otherwise `false`.
18
+ * Checks whether a value is strictly `undefined`.
27
19
  *
28
20
  * @example
29
21
  * ```ts
@@ -35,6 +27,6 @@ function isUndefined(value) {
35
27
  return value === void 0;
36
28
  }
37
29
  //#endregion
38
- export { isNotNil, isNull, isUndefined };
30
+ export { isNotNil, isNull, isUndefined, orNull };
39
31
 
40
32
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../src/guard/isNull.ts","../../src/guard/isUndefined.ts"],"sourcesContent":["/**\n * Check whether a value is strictly `null`.\n *\n * @category Guard\n * @param value - The value to check.\n * @returns `true` if `value` is `null`; otherwise `false`.\n *\n * @example\n * ```ts\n * isNull(null); // true\n * isNull(undefined); // false\n * ```\n */\nexport function isNull<T>(value: T): value is T & null {\n return value === null;\n}\n","/**\n * Check whether a value is strictly `undefined`.\n *\n * @category Guard\n * @param value - The value to check.\n * @returns `true` if `value` is `undefined`; otherwise `false`.\n *\n * @example\n * ```ts\n * isUndefined(undefined); // true\n * isUndefined(null); // false\n * ```\n */\nexport function isUndefined<T>(value: T): value is T & undefined {\n return value === undefined;\n}\n"],"mappings":";;;;;;;;;;;;;;;AAaA,SAAgB,OAAU,OAA6B;CACrD,OAAO,UAAU;AACnB;;;;;;;;;;;;;;;;ACFA,SAAgB,YAAe,OAAkC;CAC/D,OAAO,UAAU,KAAA;AACnB"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../src/guard/isNull.ts","../../src/guard/isUndefined.ts"],"sourcesContent":["/**\n * Checks whether a value is strictly `null`.\n *\n * @example\n * ```ts\n * isNull(null); // true\n * isNull(undefined); // false\n * ```\n */\nexport function isNull<T>(value: T): value is T & null {\n return value === null;\n}\n","/**\n * Checks whether a value is strictly `undefined`.\n *\n * @example\n * ```ts\n * isUndefined(undefined); // true\n * isUndefined(null); // false\n * ```\n */\nexport function isUndefined<T>(value: T): value is T & undefined {\n return value === undefined;\n}\n"],"mappings":";;;;;;;;;;;AASA,SAAgB,OAAU,OAA6B;CACrD,OAAO,UAAU;AACnB;;;;;;;;;;;;ACFA,SAAgB,YAAe,OAAkC;CAC/D,OAAO,UAAU,KAAA;AACnB"}
@@ -0,0 +1,54 @@
1
+ import { i as Order } from "./order.constants-DpGY-EDp.cjs";
2
+
3
+ //#region src/order/breakTie.d.ts
4
+ declare function breakTieImplementation(order: Order, other: Order): Order;
5
+ /**
6
+ * Resolves a tie by returning `other` when `order` is equal; otherwise returns `order`.
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * breakTie(0, 1); // 1
11
+ * breakTie(-1, 1); // -1
12
+ * breakTie(1)(0); // 1
13
+ * ```
14
+ */
15
+ declare function breakTie(other: Order): (order: Order) => Order;
16
+ declare function breakTie(order: Order, other: Order): Order;
17
+ //#endregion
18
+ //#region src/order/compare.d.ts
19
+ /**
20
+ * Compares two order values and returns their relative ordering.
21
+ *
22
+ * @example
23
+ * ```ts
24
+ * compare(-1, 1); // throws NotYetImplementedError
25
+ * ```
26
+ */
27
+ declare function compare(left: Order, right: Order): Order;
28
+ //#endregion
29
+ //#region src/order/negate.d.ts
30
+ /**
31
+ * Flips an order value: less-than becomes greater-than and vice versa; equal stays equal.
32
+ *
33
+ * @example
34
+ * ```ts
35
+ * negate(-1); // 1
36
+ * negate(0); // 0
37
+ * negate(1); // -1
38
+ * ```
39
+ */
40
+ declare function negate(order: Order): Order;
41
+ //#endregion
42
+ //#region src/order/reverse.d.ts
43
+ /**
44
+ * Reverses an orderer by negating its result.
45
+ *
46
+ * @example
47
+ * ```ts
48
+ * reverse((a, b) => (a < b ? -1 : a > b ? 1 : 0))(2, 1); // 1
49
+ * ```
50
+ */
51
+ declare function reverse<T>(orderer: (left: T, right: T) => Order): (left: T, right: T) => Order;
52
+ //#endregion
53
+ export { breakTieImplementation as a, breakTie as i, negate as n, compare as r, reverse as t };
54
+ //# sourceMappingURL=index-MbdqaUt1.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-MbdqaUt1.d.cts","names":[],"sources":["../src/order/breakTie.ts","../src/order/compare.ts","../src/order/negate.ts","../src/order/reverse.ts"],"mappings":";;;iBAIgB,sBAAA,CAAuB,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAA,GAAQ,KAAA;;AAApE;;;;;;;;;iBAegB,QAAA,CAAS,KAAA,EAAO,KAAA,IAAS,KAAA,EAAO,KAAA,KAAU,KAAA;AAAA,iBAC1C,QAAA,CAAS,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAA,GAAQ,KAAA;;;;;AAhBtD;;;;;;iBCcgB,OAAA,CAAQ,IAAA,EAAM,KAAA,EAAO,KAAA,EAAO,KAAA,GAAQ,KAAA;;;;;ADdpD;;;;;;;;iBEWgB,MAAA,CAAO,KAAA,EAAO,KAAA,GAAQ,KAAK;;;;;AFX3C;;;;;;iBGOgB,OAAA,IAAW,OAAA,GAAU,IAAA,EAAM,CAAA,EAAG,KAAA,EAAO,CAAA,KAAM,KAAA,IAAS,IAAA,EAAM,CAAA,EAAG,KAAA,EAAO,CAAA,KAAM,KAAA"}
@@ -0,0 +1,54 @@
1
+ import { i as Order } from "./order.constants-DpGY-EDp.mjs";
2
+
3
+ //#region src/order/breakTie.d.ts
4
+ declare function breakTieImplementation(order: Order, other: Order): Order;
5
+ /**
6
+ * Resolves a tie by returning `other` when `order` is equal; otherwise returns `order`.
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * breakTie(0, 1); // 1
11
+ * breakTie(-1, 1); // -1
12
+ * breakTie(1)(0); // 1
13
+ * ```
14
+ */
15
+ declare function breakTie(other: Order): (order: Order) => Order;
16
+ declare function breakTie(order: Order, other: Order): Order;
17
+ //#endregion
18
+ //#region src/order/compare.d.ts
19
+ /**
20
+ * Compares two order values and returns their relative ordering.
21
+ *
22
+ * @example
23
+ * ```ts
24
+ * compare(-1, 1); // throws NotYetImplementedError
25
+ * ```
26
+ */
27
+ declare function compare(left: Order, right: Order): Order;
28
+ //#endregion
29
+ //#region src/order/negate.d.ts
30
+ /**
31
+ * Flips an order value: less-than becomes greater-than and vice versa; equal stays equal.
32
+ *
33
+ * @example
34
+ * ```ts
35
+ * negate(-1); // 1
36
+ * negate(0); // 0
37
+ * negate(1); // -1
38
+ * ```
39
+ */
40
+ declare function negate(order: Order): Order;
41
+ //#endregion
42
+ //#region src/order/reverse.d.ts
43
+ /**
44
+ * Reverses an orderer by negating its result.
45
+ *
46
+ * @example
47
+ * ```ts
48
+ * reverse((a, b) => (a < b ? -1 : a > b ? 1 : 0))(2, 1); // 1
49
+ * ```
50
+ */
51
+ declare function reverse<T>(orderer: (left: T, right: T) => Order): (left: T, right: T) => Order;
52
+ //#endregion
53
+ export { breakTieImplementation as a, breakTie as i, negate as n, compare as r, reverse as t };
54
+ //# sourceMappingURL=index-k-paNOu4.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-k-paNOu4.d.mts","names":[],"sources":["../src/order/breakTie.ts","../src/order/compare.ts","../src/order/negate.ts","../src/order/reverse.ts"],"mappings":";;;iBAIgB,sBAAA,CAAuB,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAA,GAAQ,KAAA;;AAApE;;;;;;;;;iBAegB,QAAA,CAAS,KAAA,EAAO,KAAA,IAAS,KAAA,EAAO,KAAA,KAAU,KAAA;AAAA,iBAC1C,QAAA,CAAS,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAA,GAAQ,KAAA;;;;;AAhBtD;;;;;;iBCcgB,OAAA,CAAQ,IAAA,EAAM,KAAA,EAAO,KAAA,EAAO,KAAA,GAAQ,KAAA;;;;;ADdpD;;;;;;;;iBEWgB,MAAA,CAAO,KAAA,EAAO,KAAA,GAAQ,KAAK;;;;;AFX3C;;;;;;iBGOgB,OAAA,IAAW,OAAA,GAAU,IAAA,EAAM,CAAA,EAAG,KAAA,EAAO,CAAA,KAAM,KAAA,IAAS,IAAA,EAAM,CAAA,EAAG,KAAA,EAAO,CAAA,KAAM,KAAA"}
@@ -1,8 +1,12 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_purry = require("../purry-B2_0DGLV.cjs");
3
- const require_isNotNil = require("../isNotNil-DrF-ohem.cjs");
2
+ const require_purry = require("../purry-Dqp_F64t.cjs");
3
+ const require_orNull = require("../orNull-CJNrTjhQ.cjs");
4
4
  //#region src/iterator/_globalAliases.ts
5
- const { from } = Iterator;
5
+ /**
6
+ * Creates an iterator from an iterable or iterator object.
7
+ * @function
8
+ */
9
+ const from = Iterator.from;
6
10
  //#endregion
7
11
  //#region src/iterator/drop.ts
8
12
  function dropImplementation(iter, limit) {
@@ -33,29 +37,9 @@ function filter(...args) {
33
37
  return require_purry.purry(filterImplementation, args);
34
38
  }
35
39
  //#endregion
36
- //#region src/guard/orNull.ts
37
- /**
38
- * Normalize nullish values to `null`, leaving all other values unchanged.
39
- * Equivalent to `value ?? null`.
40
- *
41
- * @category Guard
42
- * @param value - A value that may be `null` or `undefined`.
43
- * @returns `null` when `value` is `null` or `undefined`; otherwise `value` with `null` and `undefined` removed from its type.
44
- *
45
- * @example
46
- * ```ts
47
- * orNull(0); // 0
48
- * orNull(undefined); // null
49
- * orNull(null); // null
50
- * ```
51
- */
52
- function orNull(value) {
53
- return value ?? null;
54
- }
55
- //#endregion
56
40
  //#region src/iterator/find.ts
57
41
  function findImplementation(data, predicate) {
58
- return orNull(data.find(predicate));
42
+ return require_orNull.orNull(data.find(predicate));
59
43
  }
60
44
  function find(...args) {
61
45
  return require_purry.purry(findImplementation, args);
@@ -69,6 +53,17 @@ function flatMap(...args) {
69
53
  return require_purry.purry(flatMapImplementation, args);
70
54
  }
71
55
  //#endregion
56
+ //#region src/iterator/forEach.ts
57
+ function forEachImplementation(data, fn) {
58
+ return data.map((value, index) => {
59
+ fn(value, index);
60
+ return value;
61
+ });
62
+ }
63
+ function forEach(...args) {
64
+ return require_purry.purry(forEachImplementation, args);
65
+ }
66
+ //#endregion
72
67
  //#region src/iterator/map.ts
73
68
  function mapImplementation(data, fn) {
74
69
  return data.map(fn);
@@ -82,8 +77,8 @@ function rangeWithOptsImplementation(start, end, option) {
82
77
  if (start === Infinity || start === -Infinity) throw new RangeError(`range() start argument cannot be ${start}`);
83
78
  if (Number.isNaN(start)) throw new RangeError(`range() start argument cannot be NaN`);
84
79
  if (Number.isNaN(end)) throw new RangeError(`range() end argument cannot be NaN`);
85
- if (typeof start === "bigint" && require_isNotNil.isNotNil(option.step) && typeof option.step !== "bigint") throw new RangeError(`range() option.step argument must be of the same type as start`);
86
- if (require_isNotNil.isNotNil(option.step) && option.step <= 0) {
80
+ if (typeof start === "bigint" && require_orNull.isNotNil(option.step) && typeof option.step !== "bigint") throw new RangeError(`range() option.step argument must be of the same type as start`);
81
+ if (require_orNull.isNotNil(option.step) && option.step <= 0) {
87
82
  if (option.step < 1) throw new RangeError(`Arr.range() :: ${option.step} must be a positive integer`);
88
83
  }
89
84
  const { inclusive = false } = option;
@@ -144,11 +139,59 @@ function take(...args) {
144
139
  return require_purry.purry(takeImplementation, args);
145
140
  }
146
141
  //#endregion
142
+ //#region src/iterator/unique.ts
143
+ /**
144
+ * Returns an iterator with duplicate values removed.
145
+ * Keeps the first occurrence of each value.
146
+ *
147
+ * @example
148
+ * ```ts
149
+ * unique([1, 2, 2, 3].values()).toArray(); // [1, 2, 3]
150
+ * unique([].values()).toArray(); // []
151
+ * ```
152
+ */
153
+ function unique(data) {
154
+ const set = /* @__PURE__ */ new Set();
155
+ return data.filter((value) => {
156
+ if (set.has(value)) return false;
157
+ set.add(value);
158
+ return true;
159
+ });
160
+ }
161
+ //#endregion
162
+ //#region src/iterator/uniqueBy.ts
163
+ function uniqueByImplementation(data, mapFn) {
164
+ const set = /* @__PURE__ */ new Set();
165
+ return data.filter((value) => {
166
+ const key = mapFn(value);
167
+ if (set.has(key)) return false;
168
+ set.add(key);
169
+ return true;
170
+ });
171
+ }
172
+ function uniqueBy(...args) {
173
+ return require_purry.purry(uniqueByImplementation, args);
174
+ }
175
+ //#endregion
176
+ //#region src/iterator/uniqueWith.ts
177
+ function uniqueWithImplementation(data, isEqual) {
178
+ let indexCounter = 0;
179
+ const withIndex = data.map((value) => [value, indexCounter++]);
180
+ return withIndex.filter(([value, index]) => {
181
+ const [, foundIndex] = withIndex.find(([otherValue, otherIndex]) => index === otherIndex || isEqual(value, otherValue)) ?? [null, -1];
182
+ return index === foundIndex;
183
+ }).map(([v, _i]) => v);
184
+ }
185
+ function uniqueWith(...args) {
186
+ return require_purry.purry(uniqueWithImplementation, args);
187
+ }
188
+ //#endregion
147
189
  exports.drop = drop;
148
190
  exports.every = every;
149
191
  exports.filter = filter;
150
192
  exports.find = find;
151
193
  exports.flatMap = flatMap;
194
+ exports.forEach = forEach;
152
195
  exports.from = from;
153
196
  exports.map = map;
154
197
  exports.range = range;
@@ -156,5 +199,8 @@ exports.rangeWithOpts = rangeWithOpts;
156
199
  exports.reduce = reduce;
157
200
  exports.some = some;
158
201
  exports.take = take;
202
+ exports.unique = unique;
203
+ exports.uniqueBy = uniqueBy;
204
+ exports.uniqueWith = uniqueWith;
159
205
 
160
206
  //# sourceMappingURL=index.cjs.map