@ts-fns/stdlib 0.1.0 → 0.2.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.
- package/dist/array/index.cjs +230 -33
- package/dist/array/index.cjs.map +1 -1
- package/dist/array/index.d.cts +434 -32
- package/dist/array/index.d.cts.map +1 -1
- package/dist/array/index.d.mts +434 -32
- package/dist/array/index.d.mts.map +1 -1
- package/dist/array/index.mjs +216 -18
- package/dist/array/index.mjs.map +1 -1
- package/dist/function/index.cjs +4 -2
- package/dist/function/index.d.cts +128 -13
- package/dist/function/index.d.cts.map +1 -1
- package/dist/function/index.d.mts +128 -13
- package/dist/function/index.d.mts.map +1 -1
- package/dist/function/index.mjs +3 -3
- package/dist/{function-DnI2v0p3.mjs → function-CYHPhQCQ.mjs} +84 -6
- package/dist/function-CYHPhQCQ.mjs.map +1 -0
- package/dist/{function-CB82a2GS.cjs → function-DYPifnmg.cjs} +95 -5
- package/dist/function-DYPifnmg.cjs.map +1 -0
- package/dist/{get-yrs1Kqho.cjs → get-1kqkxPFX.cjs} +20 -8
- package/dist/get-1kqkxPFX.cjs.map +1 -0
- package/dist/{get-CWL_cu6G.mjs → get-Dv6ejLZg.mjs} +21 -3
- package/dist/get-Dv6ejLZg.mjs.map +1 -0
- package/dist/guard/index.cjs +5 -12
- package/dist/guard/index.cjs.map +1 -1
- package/dist/guard/index.d.cts +18 -17
- package/dist/guard/index.d.cts.map +1 -1
- package/dist/guard/index.d.mts +18 -17
- package/dist/guard/index.d.mts.map +1 -1
- package/dist/guard/index.mjs +4 -12
- package/dist/guard/index.mjs.map +1 -1
- package/dist/index-MbdqaUt1.d.cts +54 -0
- package/dist/index-MbdqaUt1.d.cts.map +1 -0
- package/dist/index-k-paNOu4.d.mts +54 -0
- package/dist/index-k-paNOu4.d.mts.map +1 -0
- package/dist/iterator/index.cjs +72 -26
- package/dist/iterator/index.cjs.map +1 -1
- package/dist/iterator/index.d.cts +157 -5
- package/dist/iterator/index.d.cts.map +1 -1
- package/dist/iterator/index.d.mts +157 -5
- package/dist/iterator/index.d.mts.map +1 -1
- package/dist/iterator/index.mjs +66 -24
- package/dist/iterator/index.mjs.map +1 -1
- package/dist/lens/index.cjs +3 -3
- package/dist/lens/index.cjs.map +1 -1
- package/dist/lens/index.mjs +3 -3
- package/dist/lens/index.mjs.map +1 -1
- package/dist/map/index.cjs +88 -1
- package/dist/map/index.cjs.map +1 -1
- package/dist/map/index.d.cts +130 -2
- package/dist/map/index.d.cts.map +1 -1
- package/dist/map/index.d.mts +130 -2
- package/dist/map/index.d.mts.map +1 -1
- package/dist/map/index.mjs +86 -2
- package/dist/map/index.mjs.map +1 -1
- package/dist/number/index.cjs +91 -18
- package/dist/number/index.cjs.map +1 -1
- package/dist/number/index.d.cts +134 -19
- package/dist/number/index.d.cts.map +1 -1
- package/dist/number/index.d.mts +134 -19
- package/dist/number/index.d.mts.map +1 -1
- package/dist/number/index.mjs +91 -18
- package/dist/number/index.mjs.map +1 -1
- package/dist/object/index.cjs +111 -7
- package/dist/object/index.cjs.map +1 -1
- package/dist/object/index.d.cts +186 -26
- package/dist/object/index.d.cts.map +1 -1
- package/dist/object/index.d.mts +186 -26
- package/dist/object/index.d.mts.map +1 -1
- package/dist/object/index.mjs +111 -7
- package/dist/object/index.mjs.map +1 -1
- package/dist/orNull-CJNrTjhQ.cjs +45 -0
- package/dist/orNull-CJNrTjhQ.cjs.map +1 -0
- package/dist/orNull-EeXiCxD4.mjs +34 -0
- package/dist/orNull-EeXiCxD4.mjs.map +1 -0
- package/dist/order/index.cjs +22 -1
- package/dist/order/index.cjs.map +1 -1
- package/dist/order/index.d.cts +2 -2
- package/dist/order/index.d.mts +2 -2
- package/dist/order/index.mjs +22 -1
- package/dist/order/index.mjs.map +1 -1
- package/dist/{order.constants-BWSCg3C7.d.cts → order.constants-DpGY-EDp.d.cts} +4 -1
- package/dist/order.constants-DpGY-EDp.d.cts.map +1 -0
- package/dist/{order.constants-BWSCg3C7.d.mts → order.constants-DpGY-EDp.d.mts} +4 -1
- package/dist/order.constants-DpGY-EDp.d.mts.map +1 -0
- package/dist/purry-DXnhXie9.mjs +22 -0
- package/dist/purry-DXnhXie9.mjs.map +1 -0
- package/dist/purry-Dqp_F64t.cjs +27 -0
- package/dist/purry-Dqp_F64t.cjs.map +1 -0
- package/dist/set/index.cjs +59 -1
- package/dist/set/index.cjs.map +1 -1
- package/dist/set/index.d.cts +151 -2
- package/dist/set/index.d.cts.map +1 -1
- package/dist/set/index.d.mts +151 -2
- package/dist/set/index.d.mts.map +1 -1
- package/dist/set/index.mjs +59 -2
- package/dist/set/index.mjs.map +1 -1
- package/dist/string/index.cjs +289 -15
- package/dist/string/index.cjs.map +1 -1
- package/dist/string/index.d.cts +406 -1
- package/dist/string/index.d.cts.map +1 -1
- package/dist/string/index.d.mts +406 -1
- package/dist/string/index.d.mts.map +1 -1
- package/dist/string/index.mjs +271 -4
- package/dist/string/index.mjs.map +1 -1
- package/dist/tuple/index.cjs +20 -21
- package/dist/tuple/index.cjs.map +1 -1
- package/dist/tuple/index.d.cts +27 -58
- package/dist/tuple/index.d.cts.map +1 -1
- package/dist/tuple/index.d.mts +27 -58
- package/dist/tuple/index.d.mts.map +1 -1
- package/dist/tuple/index.mjs +20 -22
- package/dist/tuple/index.mjs.map +1 -1
- package/package.json +5 -6
- package/dist/function-CB82a2GS.cjs.map +0 -1
- package/dist/function-DnI2v0p3.mjs.map +0 -1
- package/dist/get-CWL_cu6G.mjs.map +0 -1
- package/dist/get-yrs1Kqho.cjs.map +0 -1
- package/dist/index-BJlKyBJH.d.cts +0 -18
- package/dist/index-BJlKyBJH.d.cts.map +0 -1
- package/dist/index-DGrnGMDt.d.mts +0 -18
- package/dist/index-DGrnGMDt.d.mts.map +0 -1
- package/dist/isNotNil-DrF-ohem.cjs +0 -28
- package/dist/isNotNil-DrF-ohem.cjs.map +0 -1
- package/dist/isNotNil-R5f1hC53.mjs +0 -23
- package/dist/isNotNil-R5f1hC53.mjs.map +0 -1
- package/dist/orThrow-V91Jw2lF.mjs +0 -15
- package/dist/orThrow-V91Jw2lF.mjs.map +0 -1
- package/dist/orThrow-ejzcQYAI.cjs +0 -20
- package/dist/orThrow-ejzcQYAI.cjs.map +0 -1
- package/dist/order.constants-BWSCg3C7.d.cts.map +0 -1
- package/dist/order.constants-BWSCg3C7.d.mts.map +0 -1
- package/dist/purry-B2_0DGLV.cjs +0 -28
- package/dist/purry-B2_0DGLV.cjs.map +0 -1
- package/dist/purry-BOWmqwDB.mjs +0 -23
- 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-
|
|
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-
|
|
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-
|
|
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 {
|
|
43
|
+
export { get as t };
|
|
26
44
|
|
|
27
|
-
//# sourceMappingURL=get-
|
|
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"}
|
package/dist/guard/index.cjs
CHANGED
|
@@ -1,12 +1,8 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const
|
|
2
|
+
const require_orNull = require("../orNull-CJNrTjhQ.cjs");
|
|
3
3
|
//#region src/guard/isNull.ts
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
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
|
-
*
|
|
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 =
|
|
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
|
package/dist/guard/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":[],"sources":["../../src/guard/isNull.ts","../../src/guard/isUndefined.ts"],"sourcesContent":["/**\n *
|
|
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"}
|
package/dist/guard/index.d.cts
CHANGED
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
//#region src/guard/isNotNil.d.ts
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
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
|
-
*
|
|
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/
|
|
26
|
+
//#region src/guard/orNull.d.ts
|
|
36
27
|
/**
|
|
37
|
-
*
|
|
28
|
+
* Normalizes nullish values to `null`, leaving all other values unchanged.
|
|
29
|
+
* Equivalent to `value ?? null`.
|
|
38
30
|
*
|
|
39
|
-
* @
|
|
40
|
-
*
|
|
41
|
-
*
|
|
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":";;
|
|
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"}
|
package/dist/guard/index.d.mts
CHANGED
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
//#region src/guard/isNotNil.d.ts
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
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
|
-
*
|
|
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/
|
|
26
|
+
//#region src/guard/orNull.d.ts
|
|
36
27
|
/**
|
|
37
|
-
*
|
|
28
|
+
* Normalizes nullish values to `null`, leaving all other values unchanged.
|
|
29
|
+
* Equivalent to `value ?? null`.
|
|
38
30
|
*
|
|
39
|
-
* @
|
|
40
|
-
*
|
|
41
|
-
*
|
|
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":";;
|
|
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"}
|
package/dist/guard/index.mjs
CHANGED
|
@@ -1,11 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { n as isNotNil, t as orNull } from "../orNull-EeXiCxD4.mjs";
|
|
2
2
|
//#region src/guard/isNull.ts
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
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
|
-
*
|
|
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
|
package/dist/guard/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":[],"sources":["../../src/guard/isNull.ts","../../src/guard/isUndefined.ts"],"sourcesContent":["/**\n *
|
|
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"}
|
package/dist/iterator/index.cjs
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_purry = require("../purry-
|
|
3
|
-
const
|
|
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
|
-
|
|
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" &&
|
|
86
|
-
if (
|
|
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
|