ts-data-forge 12.2.0 → 12.2.2
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/README.md +3 -6
- package/dist/array/impl/array-utils-creation.d.mts +1 -1
- package/dist/array/impl/array-utils-creation.d.mts.map +1 -1
- package/dist/array/impl/array-utils-element-access.d.mts +1 -1
- package/dist/array/impl/array-utils-element-access.d.mts.map +1 -1
- package/dist/array/impl/array-utils-element-access.mjs +10 -13
- package/dist/array/impl/array-utils-element-access.mjs.map +1 -1
- package/dist/array/impl/array-utils-iterators.d.mts +1 -1
- package/dist/array/impl/array-utils-iterators.d.mts.map +1 -1
- package/dist/array/impl/array-utils-length-bounded-array-cast.d.mts.map +1 -1
- package/dist/array/impl/array-utils-length-bounded-array-cast.mjs +53 -53
- package/dist/array/impl/array-utils-length-bounded-array-cast.mjs.map +1 -1
- package/dist/array/impl/array-utils-modification.d.mts.map +1 -1
- package/dist/array/impl/array-utils-modification.mjs +61 -70
- package/dist/array/impl/array-utils-modification.mjs.map +1 -1
- package/dist/array/impl/array-utils-reducing-value.d.mts.map +1 -1
- package/dist/array/impl/array-utils-reducing-value.mjs +37 -47
- package/dist/array/impl/array-utils-reducing-value.mjs.map +1 -1
- package/dist/array/impl/array-utils-search.d.mts.map +1 -1
- package/dist/array/impl/array-utils-search.mjs +80 -92
- package/dist/array/impl/array-utils-search.mjs.map +1 -1
- package/dist/array/impl/array-utils-set-op.d.mts +1 -1
- package/dist/array/impl/array-utils-set-op.d.mts.map +1 -1
- package/dist/array/impl/array-utils-size.d.mts +1 -1
- package/dist/array/impl/array-utils-size.d.mts.map +1 -1
- package/dist/array/impl/array-utils-slice-clamped.mjs +9 -10
- package/dist/array/impl/array-utils-slice-clamped.mjs.map +1 -1
- package/dist/array/impl/array-utils-slicing.d.mts +1 -1
- package/dist/array/impl/array-utils-slicing.d.mts.map +1 -1
- package/dist/array/impl/array-utils-slicing.mjs +20 -32
- package/dist/array/impl/array-utils-slicing.mjs.map +1 -1
- package/dist/array/impl/array-utils-transformation.d.mts.map +1 -1
- package/dist/array/impl/array-utils-transformation.mjs +41 -52
- package/dist/array/impl/array-utils-transformation.mjs.map +1 -1
- package/dist/array/impl/array-utils-validation.d.mts.map +1 -1
- package/dist/array/impl/array-utils-validation.mjs +10 -16
- package/dist/array/impl/array-utils-validation.mjs.map +1 -1
- package/dist/json/json.mjs +1 -1
- package/dist/json/json.mjs.map +1 -1
- package/dist/number/branded-types/finite-number.d.mts +6 -3
- package/dist/number/branded-types/finite-number.d.mts.map +1 -1
- package/dist/number/branded-types/negative-finite-number.d.mts +8 -4
- package/dist/number/branded-types/negative-finite-number.d.mts.map +1 -1
- package/dist/number/branded-types/negative-int.d.mts +2 -1
- package/dist/number/branded-types/negative-int.d.mts.map +1 -1
- package/dist/number/branded-types/negative-safe-int.d.mts +2 -1
- package/dist/number/branded-types/negative-safe-int.d.mts.map +1 -1
- package/dist/number/branded-types/non-negative-finite-number.d.mts +6 -3
- package/dist/number/branded-types/non-negative-finite-number.d.mts.map +1 -1
- package/dist/number/branded-types/non-positive-finite-number.d.mts +6 -3
- package/dist/number/branded-types/non-positive-finite-number.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-finite-number.d.mts +6 -3
- package/dist/number/branded-types/non-zero-finite-number.d.mts.map +1 -1
- package/dist/number/branded-types/positive-finite-number.d.mts +6 -3
- package/dist/number/branded-types/positive-finite-number.d.mts.map +1 -1
- package/dist/number/enum/int8.d.mts +26 -13
- package/dist/number/enum/int8.d.mts.map +1 -1
- package/dist/number/enum/uint8.d.mts +24 -12
- package/dist/number/enum/uint8.d.mts.map +1 -1
- package/dist/others/if-then.d.mts +1 -1
- package/dist/others/if-then.d.mts.map +1 -1
- package/dist/string/str.d.mts.map +1 -1
- package/dist/string/str.mjs +52 -52
- package/dist/string/str.mjs.map +1 -1
- package/package.json +4 -4
- package/src/array/impl/array-utils-element-access.mts +15 -16
- package/src/array/impl/array-utils-length-bounded-array-cast.mts +73 -60
- package/src/array/impl/array-utils-modification.mts +96 -94
- package/src/array/impl/array-utils-reducing-value.mts +68 -57
- package/src/array/impl/array-utils-search.mts +146 -148
- package/src/array/impl/array-utils-slice-clamped.mts +16 -14
- package/src/array/impl/array-utils-slicing.mts +37 -40
- package/src/array/impl/array-utils-transformation.mts +64 -62
- package/src/array/impl/array-utils-transformation.test.mts +1 -1
- package/src/array/impl/array-utils-validation.mts +18 -20
- package/src/collections/iset.test.mts +2 -2
- package/src/functional/pipe.test.mts +1 -1
- package/src/json/json.mts +1 -1
- package/src/string/str.mts +74 -61
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"array-utils-search.mjs","sources":["../../../src/array/impl/array-utils-search.mts"],"sourcesContent":["import { expectType } from '../../expect-type.mjs';\nimport { Optional, pipe } from '../../functional/index.mjs';\nimport { asUint32 } from '../../number/index.mjs';\nimport {\n type ArgArrayIndexWithNegative,\n type ArrayIndex,\n type SizeType,\n} from '../../types.mjs';\n\n/**\n * Finds the first element that satisfies a predicate.\n *\n * @example\n *\n * ```ts\n * const users = [\n * { id: 1, name: 'Ada' },\n * { id: 2, name: 'Grace' },\n * ] as const;\n *\n * const found = Arr.find(users, (user) => user.id === 2);\n *\n * const missing = Arr.find<Readonly<{ id: number }>>((user) => user.id === 3)(\n * users,\n * );\n *\n * assert.deepStrictEqual(found, Optional.some({ id: 2, name: 'Grace' }));\n *\n * assert.deepStrictEqual(missing, Optional.none);\n * ```\n */\nexport function find<E, F extends E>(\n array: readonly E[],\n predicate: (value: E, index: SizeType.Arr, arr: readonly E[]) => value is F,\n): Optional<F>;\n\nexport function find<const Ar extends readonly unknown[]>(\n array: Ar,\n predicate: (value: Ar[number], index: ArrayIndex<Ar>, arr: Ar) => boolean,\n): Optional<Ar[number]>;\n\nexport function find<E>(\n predicate: (value: E, index: SizeType.Arr, arr: readonly E[]) => boolean,\n): (array: readonly E[]) => Optional<E>;\n\nexport function find<E>(\n ...args:\n | readonly [\n array: readonly E[],\n predicate: (\n value: E,\n index: SizeType.Arr,\n arr: readonly E[],\n ) => boolean,\n ]\n | readonly [\n predicate: (\n value: E,\n index: SizeType.Arr,\n arr: readonly E[],\n ) => boolean,\n ]\n): Optional<E> | ((array: readonly E[]) => Optional<E>) {\n switch (args.length) {\n case 2: {\n const [array, predicate] = args;\n\n const foundIndex = array.findIndex(\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n predicate as () => boolean,\n );\n\n expectType<\n Parameters<typeof array.findIndex>[0],\n (value: E, index: number, arr: readonly E[]) => unknown\n >('=');\n\n expectType<\n typeof predicate,\n (value: E, index: SizeType.Arr, arr: readonly E[]) => boolean\n >('=');\n\n return foundIndex === -1\n ? Optional.none\n : // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n Optional.some(array[foundIndex]!);\n }\n\n case 1: {\n const [predicate] = args;\n\n expectType<\n typeof predicate,\n (value: E, index: SizeType.Arr, arr: readonly E[]) => boolean\n >('=');\n\n return (array) => find(array, predicate);\n }\n }\n}\n\n/**\n * Finds the last element that satisfies a predicate.\n *\n * @example\n *\n * ```ts\n * const numbers = [1, 3, 2, 4, 5] as const;\n *\n * const lastEven = Arr.findLast(numbers, (n) => n % 2 === 0);\n *\n * const none = Arr.findLast<number>((n) => n > 10)(numbers);\n *\n * assert.deepStrictEqual(lastEven, Optional.some(4));\n *\n * assert.deepStrictEqual(none, Optional.none);\n * ```\n */\nexport function findLast<E, F extends E>(\n array: readonly E[],\n predicate: (value: E, index: SizeType.Arr, arr: readonly E[]) => value is F,\n): Optional<F>;\n\nexport function findLast<const Ar extends readonly unknown[]>(\n array: Ar,\n predicate: (value: Ar[number], index: ArrayIndex<Ar>, arr: Ar) => boolean,\n): Optional<Ar[number]>;\n\nexport function findLast<E>(\n predicate: (value: E, index: SizeType.Arr, arr: readonly E[]) => boolean,\n): (array: readonly E[]) => Optional<E>;\n\nexport function findLast<E>(\n ...args:\n | readonly [\n array: readonly E[],\n predicate: (\n value: E,\n index: SizeType.Arr,\n arr: readonly E[],\n ) => boolean,\n ]\n | readonly [\n predicate: (\n value: E,\n index: SizeType.Arr,\n arr: readonly E[],\n ) => boolean,\n ]\n): Optional<E> | ((array: readonly E[]) => Optional<E>) {\n switch (args.length) {\n case 2: {\n const [array, predicate] = args;\n\n const foundIndex = array.findLastIndex(\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n predicate as () => boolean,\n );\n\n expectType<\n Parameters<typeof array.findIndex>[0],\n (value: E, index: number, arr: readonly E[]) => unknown\n >('=');\n\n expectType<\n typeof predicate,\n (value: E, index: SizeType.Arr, arr: readonly E[]) => boolean\n >('=');\n\n return foundIndex === -1\n ? Optional.none\n : // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n Optional.some(array[foundIndex]!);\n }\n\n case 1: {\n const [predicate] = args;\n\n expectType<\n typeof predicate,\n (value: E, index: SizeType.Arr, arr: readonly E[]) => boolean\n >('=');\n\n return (array) => findLast(array, predicate);\n }\n }\n}\n\n/**\n * Finds the index of the first element that satisfies a predicate.\n *\n * @example\n *\n * ```ts\n * const letters = ['a', 'b', 'c'] as const;\n *\n * const indexOfB = Arr.findIndex(letters, (letter) => letter === 'b');\n *\n * const indexOfMissing = Arr.findIndex<string>((letter) => letter === 'z')(\n * letters,\n * );\n *\n * assert.isTrue(indexOfB === 1);\n *\n * assert.isTrue(indexOfMissing === -1);\n * ```\n */\nexport function findIndex<const Ar extends readonly unknown[]>(\n array: Ar,\n predicate: (value: Ar[number], index: ArrayIndex<Ar>, arr: Ar) => boolean,\n): ArrayIndex<Ar> | -1;\n\nexport function findIndex<E>(\n predicate: (value: E, index: SizeType.Arr, arr: readonly E[]) => boolean,\n): (array: readonly E[]) => SizeType.Arr | -1;\n\nexport function findIndex<E>(\n ...args:\n | readonly [\n array: readonly E[],\n predicate: (\n value: E,\n index: SizeType.Arr,\n arr: readonly E[],\n ) => boolean,\n ]\n | readonly [\n predicate: (\n value: E,\n index: SizeType.Arr,\n arr: readonly E[],\n ) => boolean,\n ]\n): SizeType.Arr | ((array: readonly E[]) => SizeType.Arr | -1) | -1 {\n switch (args.length) {\n case 2: {\n const [array, predicate] = args;\n\n return pipe(\n array.findIndex(\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n predicate as (value: E, index: number) => boolean,\n ),\n ).map((idx) => (idx >= 0 ? asUint32(idx) : -1)).value;\n }\n\n case 1: {\n const [predicate] = args;\n\n return (array) => findIndex(array, predicate);\n }\n }\n}\n\n/**\n * Finds the index of the last element that satisfies a predicate.\n *\n * @example\n *\n * ```ts\n * const letters = ['a', 'b', 'c', 'b'] as const;\n *\n * const lastIndexOfB = Arr.findLastIndex(letters, (letter) => letter === 'b');\n *\n * const notFound = Arr.findLastIndex<string>((letter) => letter === 'z')(\n * letters,\n * );\n *\n * assert.isTrue(lastIndexOfB === 3);\n *\n * assert.isTrue(notFound === -1);\n * ```\n */\nexport function findLastIndex<const Ar extends readonly unknown[]>(\n array: Ar,\n predicate: (value: Ar[number], index: ArrayIndex<Ar>, arr: Ar) => boolean,\n): ArrayIndex<Ar> | -1;\n\nexport function findLastIndex<E>(\n predicate: (value: E, index: SizeType.Arr, arr: readonly E[]) => boolean,\n): (array: readonly E[]) => SizeType.Arr | -1;\n\nexport function findLastIndex<E>(\n ...args:\n | readonly [\n array: readonly E[],\n predicate: (\n value: E,\n index: SizeType.Arr,\n arr: readonly E[],\n ) => boolean,\n ]\n | readonly [\n predicate: (\n value: E,\n index: SizeType.Arr,\n arr: readonly E[],\n ) => boolean,\n ]\n): SizeType.Arr | ((array: readonly E[]) => SizeType.Arr | -1) | -1 {\n switch (args.length) {\n case 2: {\n const [array, predicate] = args;\n\n return pipe(\n array.findLastIndex(\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n predicate as (value: E, index: number) => boolean,\n ),\n ).map((idx) => (idx >= 0 ? asUint32(idx) : -1)).value;\n }\n\n case 1: {\n const [predicate] = args;\n\n return (array) => findLastIndex(array, predicate);\n }\n }\n}\n\n/**\n * Gets the index of a value in an array.\n *\n * @example\n *\n * ```ts\n * const fruits = ['apple', 'banana', 'orange', 'banana'] as readonly string[];\n *\n * const indexOfBanana = Arr.indexOf(fruits, 'banana');\n *\n * const indexOfGrape = Arr.indexOf(fruits, 'grape');\n *\n * // Curried version\n * const findApple = Arr.indexOf('apple');\n *\n * const indexOfApple = findApple(fruits);\n *\n * console.log(indexOfBanana); // => 1\n *\n * console.log(indexOfGrape); // => -1\n *\n * console.log(indexOfApple); // => 0\n * ```\n */\nexport function indexOf<const Ar extends readonly unknown[]>(\n array: Ar,\n searchElement: Ar[number],\n): ArrayIndex<Ar> | -1;\n\nexport function indexOf<E>(\n searchElement: E,\n): (array: readonly E[]) => SizeType.Arr | -1;\n\nexport function indexOf<E>(\n ...args:\n | readonly [array: readonly E[], searchElement: E]\n | readonly [searchElement: E]\n): SizeType.Arr | ((array: readonly E[]) => SizeType.Arr | -1) | -1 {\n switch (args.length) {\n case 2: {\n const [array, searchElement] = args;\n\n const index = array.indexOf(searchElement);\n\n return index !== -1 ? asUint32(index) : -1;\n }\n\n case 1: {\n const [searchElement] = args;\n\n return (array) => indexOf(array, searchElement);\n }\n }\n}\n\n/**\n * Gets the index of a value in an array, starting from a specified index.\n *\n * @example\n *\n * ```ts\n * const fruits = ['apple', 'banana', 'orange', 'banana'] as readonly string[];\n *\n * // Search for 'banana' starting from index 1\n * const firstBanana = Arr.indexOfFrom(fruits, 'banana', 1);\n *\n * // Search for 'banana' starting from index 2\n * const secondBanana = Arr.indexOfFrom(fruits, 'banana', 2);\n *\n * // Element not found\n * const notFound = Arr.indexOfFrom(fruits, 'grape', 0);\n *\n * // Curried version\n * const findBananaFrom2 = Arr.indexOfFrom('banana', 2);\n *\n * const index = findBananaFrom2(fruits);\n *\n * console.log(firstBanana); // => 1\n *\n * console.log(secondBanana); // => 3\n *\n * console.log(notFound); // => -1\n *\n * console.log(index); // => 3\n * ```\n */\nexport function indexOfFrom<const Ar extends readonly unknown[]>(\n array: Ar,\n searchElement: Ar[number],\n fromIndex: ArgArrayIndexWithNegative<Ar>,\n): ArrayIndex<Ar> | -1;\n\nexport function indexOfFrom<E>(\n searchElement: E,\n fromIndex: SizeType.ArgArrWithNegative,\n): (array: readonly E[]) => SizeType.Arr | -1;\n\nexport function indexOfFrom<E>(\n ...args:\n | readonly [\n array: readonly E[],\n searchElement: E,\n fromIndex: SizeType.ArgArrWithNegative,\n ]\n | readonly [searchElement: E, fromIndex: SizeType.ArgArrWithNegative]\n): SizeType.Arr | ((array: readonly E[]) => SizeType.Arr | -1) | -1 {\n switch (args.length) {\n case 3: {\n const [array, searchElement, fromIndex] = args;\n\n const index = array.indexOf(searchElement, fromIndex);\n\n return index !== -1 ? asUint32(index) : -1;\n }\n\n case 2: {\n const [searchElement, fromIndex] = args;\n\n return (array) => indexOfFrom(array, searchElement, fromIndex);\n }\n }\n}\n\n/**\n * Gets the last index of a value in an array.\n *\n * @example\n *\n * ```ts\n * const fruits = ['apple', 'banana', 'orange', 'banana'] as readonly string[];\n *\n * const lastBanana = Arr.lastIndexOf(fruits, 'banana');\n *\n * const lastApple = Arr.lastIndexOf(fruits, 'apple');\n *\n * const notFound = Arr.lastIndexOf(fruits, 'grape');\n *\n * // Curried version\n * const findLastBanana = Arr.lastIndexOf('banana');\n *\n * const index = findLastBanana(fruits);\n *\n * console.log(lastBanana); // => 3\n *\n * console.log(lastApple); // => 0\n *\n * console.log(notFound); // => -1\n *\n * console.log(index); // => 3\n * ```\n */\nexport function lastIndexOf<const Ar extends readonly unknown[]>(\n array: Ar,\n searchElement: Ar[number],\n): ArrayIndex<Ar> | -1;\n\nexport function lastIndexOf<E>(\n searchElement: E,\n): (array: readonly E[]) => SizeType.Arr | -1;\n\nexport function lastIndexOf<E>(\n ...args:\n | readonly [array: readonly E[], searchElement: E]\n | readonly [searchElement: E]\n): SizeType.Arr | ((array: readonly E[]) => SizeType.Arr | -1) | -1 {\n switch (args.length) {\n case 2: {\n const [array, searchElement] = args;\n\n const index = array.lastIndexOf(searchElement);\n\n return index !== -1 ? asUint32(index) : -1;\n }\n\n case 1: {\n const [searchElement] = args;\n\n return (array) => lastIndexOf(array, searchElement);\n }\n }\n}\n\n/**\n * Gets the last index of a value in an array, starting from a specified index.\n *\n * @example\n *\n * ```ts\n * const fruits = ['apple', 'banana', 'orange', 'banana', 'grape'] as const;\n *\n * // Search backwards for 'banana' from index 3\n * const lastBananaFrom3 = Arr.lastIndexOfFrom(fruits, 'banana', 3);\n *\n * // Search backwards for 'banana' from index 2\n * const lastBananaFrom2 = Arr.lastIndexOfFrom(fruits, 'banana', 2);\n *\n * // Element not found\n * const notFound = Arr.lastIndexOfFrom(fruits, 'grape', 2);\n *\n * // Curried version\n * const findBananaFrom3 = Arr.lastIndexOfFrom('banana', 3);\n *\n * const index = findBananaFrom3(fruits);\n *\n * console.log(lastBananaFrom3); // => 3\n *\n * console.log(lastBananaFrom2); // => 1\n *\n * console.log(notFound); // => -1\n *\n * console.log(index); // => 3\n * ```\n */\nexport function lastIndexOfFrom<const Ar extends readonly unknown[]>(\n array: Ar,\n searchElement: Ar[number],\n fromIndex: ArgArrayIndexWithNegative<Ar>,\n): ArrayIndex<Ar> | -1;\n\nexport function lastIndexOfFrom<E>(\n searchElement: E,\n fromIndex: SizeType.ArgArrWithNegative,\n): (array: readonly E[]) => SizeType.Arr | -1;\n\nexport function lastIndexOfFrom<E>(\n ...args:\n | readonly [\n array: readonly E[],\n searchElement: E,\n fromIndex: SizeType.ArgArrWithNegative,\n ]\n | readonly [searchElement: E, fromIndex: SizeType.ArgArrWithNegative]\n): SizeType.Arr | ((array: readonly E[]) => SizeType.Arr | -1) | -1 {\n switch (args.length) {\n case 3: {\n const [array, searchElement, fromIndex] = args;\n\n const index = array.lastIndexOf(searchElement, fromIndex);\n\n return index !== -1 ? asUint32(index) : -1;\n }\n\n case 2: {\n const [searchElement, fromIndex] = args;\n\n return (array) => lastIndexOfFrom(array, searchElement, fromIndex);\n }\n }\n}\n"],"names":["Optional.none","Optional.some"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"array-utils-search.mjs","sources":["../../../src/array/impl/array-utils-search.mts"],"sourcesContent":["import { expectType } from '../../expect-type.mjs';\nimport { Optional, pipe } from '../../functional/index.mjs';\nimport { asUint32 } from '../../number/index.mjs';\nimport {\n type ArgArrayIndexWithNegative,\n type ArrayIndex,\n type SizeType,\n} from '../../types.mjs';\n\n/**\n * Finds the first element that satisfies a predicate.\n *\n * @example\n *\n * ```ts\n * const users = [\n * { id: 1, name: 'Ada' },\n * { id: 2, name: 'Grace' },\n * ] as const;\n *\n * const found = Arr.find(users, (user) => user.id === 2);\n *\n * const missing = Arr.find<Readonly<{ id: number }>>((user) => user.id === 3)(\n * users,\n * );\n *\n * assert.deepStrictEqual(found, Optional.some({ id: 2, name: 'Grace' }));\n *\n * assert.deepStrictEqual(missing, Optional.none);\n * ```\n */\nexport function find<E, F extends E>(\n array: readonly E[],\n predicate: (value: E, index: SizeType.Arr, arr: readonly E[]) => value is F,\n): Optional<F>;\n\nexport function find<const Ar extends readonly unknown[]>(\n array: Ar,\n predicate: (value: Ar[number], index: ArrayIndex<Ar>, arr: Ar) => boolean,\n): Optional<Ar[number]>;\n\nexport function find<E>(\n predicate: (value: E, index: SizeType.Arr, arr: readonly E[]) => boolean,\n): (array: readonly E[]) => Optional<E>;\n\nexport function find<E>(\n ...args:\n | readonly [\n array: readonly E[],\n predicate: (\n value: E,\n index: SizeType.Arr,\n arr: readonly E[],\n ) => boolean,\n ]\n | readonly [\n predicate: (\n value: E,\n index: SizeType.Arr,\n arr: readonly E[],\n ) => boolean,\n ]\n): Optional<E> | ((array: readonly E[]) => Optional<E>) {\n switch (args.length) {\n case 2:\n return findImpl(...args);\n\n case 1:\n return (array) => findImpl(array, ...args);\n }\n}\n\nconst findImpl = <E,>(\n array: readonly E[],\n predicate: (value: E, index: SizeType.Arr, arr: readonly E[]) => boolean,\n): Optional<E> => {\n const foundIndex = array.findIndex(\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n predicate as () => boolean,\n );\n\n expectType<\n Parameters<typeof array.findIndex>[0],\n (value: E, index: number, arr: readonly E[]) => unknown\n >('=');\n\n expectType<\n typeof predicate,\n (value: E, index: SizeType.Arr, arr: readonly E[]) => boolean\n >('=');\n\n return foundIndex === -1\n ? Optional.none\n : // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n Optional.some(array[foundIndex]!);\n};\n\n/**\n * Finds the last element that satisfies a predicate.\n *\n * @example\n *\n * ```ts\n * const numbers = [1, 3, 2, 4, 5] as const;\n *\n * const lastEven = Arr.findLast(numbers, (n) => n % 2 === 0);\n *\n * const none = Arr.findLast<number>((n) => n > 10)(numbers);\n *\n * assert.deepStrictEqual(lastEven, Optional.some(4));\n *\n * assert.deepStrictEqual(none, Optional.none);\n * ```\n */\nexport function findLast<E, F extends E>(\n array: readonly E[],\n predicate: (value: E, index: SizeType.Arr, arr: readonly E[]) => value is F,\n): Optional<F>;\n\nexport function findLast<const Ar extends readonly unknown[]>(\n array: Ar,\n predicate: (value: Ar[number], index: ArrayIndex<Ar>, arr: Ar) => boolean,\n): Optional<Ar[number]>;\n\nexport function findLast<E>(\n predicate: (value: E, index: SizeType.Arr, arr: readonly E[]) => boolean,\n): (array: readonly E[]) => Optional<E>;\n\nexport function findLast<E>(\n ...args:\n | readonly [\n array: readonly E[],\n predicate: (\n value: E,\n index: SizeType.Arr,\n arr: readonly E[],\n ) => boolean,\n ]\n | readonly [\n predicate: (\n value: E,\n index: SizeType.Arr,\n arr: readonly E[],\n ) => boolean,\n ]\n): Optional<E> | ((array: readonly E[]) => Optional<E>) {\n switch (args.length) {\n case 2:\n return findLastImpl(...args);\n\n case 1:\n return (array) => findLastImpl(array, ...args);\n }\n}\n\nconst findLastImpl = <E,>(\n array: readonly E[],\n predicate: (value: E, index: SizeType.Arr, arr: readonly E[]) => boolean,\n): Optional<E> => {\n const foundIndex = array.findLastIndex(\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n predicate as () => boolean,\n );\n\n expectType<\n Parameters<typeof array.findIndex>[0],\n (value: E, index: number, arr: readonly E[]) => unknown\n >('=');\n\n expectType<\n typeof predicate,\n (value: E, index: SizeType.Arr, arr: readonly E[]) => boolean\n >('=');\n\n return foundIndex === -1\n ? Optional.none\n : // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n Optional.some(array[foundIndex]!);\n};\n\n/**\n * Finds the index of the first element that satisfies a predicate.\n *\n * @example\n *\n * ```ts\n * const letters = ['a', 'b', 'c'] as const;\n *\n * const indexOfB = Arr.findIndex(letters, (letter) => letter === 'b');\n *\n * const indexOfMissing = Arr.findIndex<string>((letter) => letter === 'z')(\n * letters,\n * );\n *\n * assert.isTrue(indexOfB === 1);\n *\n * assert.isTrue(indexOfMissing === -1);\n * ```\n */\nexport function findIndex<const Ar extends readonly unknown[]>(\n array: Ar,\n predicate: (value: Ar[number], index: ArrayIndex<Ar>, arr: Ar) => boolean,\n): ArrayIndex<Ar> | -1;\n\nexport function findIndex<E>(\n predicate: (value: E, index: SizeType.Arr, arr: readonly E[]) => boolean,\n): (array: readonly E[]) => SizeType.Arr | -1;\n\nexport function findIndex<E>(\n ...args:\n | readonly [\n array: readonly E[],\n predicate: (\n value: E,\n index: SizeType.Arr,\n arr: readonly E[],\n ) => boolean,\n ]\n | readonly [\n predicate: (\n value: E,\n index: SizeType.Arr,\n arr: readonly E[],\n ) => boolean,\n ]\n): SizeType.Arr | ((array: readonly E[]) => SizeType.Arr | -1) | -1 {\n switch (args.length) {\n case 2:\n return findIndexImpl(...args);\n\n case 1:\n return (array) => findIndexImpl(array, ...args);\n }\n}\n\nconst findIndexImpl = <E,>(\n array: readonly E[],\n predicate: (value: E, index: SizeType.Arr, arr: readonly E[]) => boolean,\n): SizeType.Arr | -1 =>\n pipe(\n array.findIndex(\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n predicate as (value: E, index: number) => boolean,\n ),\n ).map((idx) => (idx >= 0 ? asUint32(idx) : -1)).value;\n\n/**\n * Finds the index of the last element that satisfies a predicate.\n *\n * @example\n *\n * ```ts\n * const letters = ['a', 'b', 'c', 'b'] as const;\n *\n * const lastIndexOfB = Arr.findLastIndex(letters, (letter) => letter === 'b');\n *\n * const notFound = Arr.findLastIndex<string>((letter) => letter === 'z')(\n * letters,\n * );\n *\n * assert.isTrue(lastIndexOfB === 3);\n *\n * assert.isTrue(notFound === -1);\n * ```\n */\nexport function findLastIndex<const Ar extends readonly unknown[]>(\n array: Ar,\n predicate: (value: Ar[number], index: ArrayIndex<Ar>, arr: Ar) => boolean,\n): ArrayIndex<Ar> | -1;\n\nexport function findLastIndex<E>(\n predicate: (value: E, index: SizeType.Arr, arr: readonly E[]) => boolean,\n): (array: readonly E[]) => SizeType.Arr | -1;\n\nexport function findLastIndex<E>(\n ...args:\n | readonly [\n array: readonly E[],\n predicate: (\n value: E,\n index: SizeType.Arr,\n arr: readonly E[],\n ) => boolean,\n ]\n | readonly [\n predicate: (\n value: E,\n index: SizeType.Arr,\n arr: readonly E[],\n ) => boolean,\n ]\n): SizeType.Arr | ((array: readonly E[]) => SizeType.Arr | -1) | -1 {\n switch (args.length) {\n case 2:\n return findLastIndexImpl(...args);\n\n case 1:\n return (array) => findLastIndexImpl(array, ...args);\n }\n}\n\nconst findLastIndexImpl = <E,>(\n array: readonly E[],\n predicate: (value: E, index: SizeType.Arr, arr: readonly E[]) => boolean,\n): SizeType.Arr | -1 =>\n pipe(\n array.findLastIndex(\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n predicate as (value: E, index: number) => boolean,\n ),\n ).map((idx) => (idx >= 0 ? asUint32(idx) : -1)).value;\n\n/**\n * Gets the index of a value in an array.\n *\n * @example\n *\n * ```ts\n * const fruits = ['apple', 'banana', 'orange', 'banana'] as readonly string[];\n *\n * const indexOfBanana = Arr.indexOf(fruits, 'banana');\n *\n * const indexOfGrape = Arr.indexOf(fruits, 'grape');\n *\n * // Curried version\n * const findApple = Arr.indexOf('apple');\n *\n * const indexOfApple = findApple(fruits);\n *\n * console.log(indexOfBanana); // => 1\n *\n * console.log(indexOfGrape); // => -1\n *\n * console.log(indexOfApple); // => 0\n * ```\n */\nexport function indexOf<const Ar extends readonly unknown[]>(\n array: Ar,\n searchElement: Ar[number],\n): ArrayIndex<Ar> | -1;\n\nexport function indexOf<E>(\n searchElement: E,\n): (array: readonly E[]) => SizeType.Arr | -1;\n\nexport function indexOf<E>(\n ...args:\n | readonly [array: readonly E[], searchElement: E]\n | readonly [searchElement: E]\n): SizeType.Arr | ((array: readonly E[]) => SizeType.Arr | -1) | -1 {\n switch (args.length) {\n case 2:\n return indexOfImpl(...args);\n\n case 1:\n return (array) => indexOfImpl(array, ...args);\n }\n}\n\nconst indexOfImpl = <E,>(\n array: readonly E[],\n searchElement: E,\n): SizeType.Arr | -1 => {\n const index = array.indexOf(searchElement);\n\n return index !== -1 ? asUint32(index) : -1;\n};\n\n/**\n * Gets the index of a value in an array, starting from a specified index.\n *\n * @example\n *\n * ```ts\n * const fruits = ['apple', 'banana', 'orange', 'banana'] as readonly string[];\n *\n * // Search for 'banana' starting from index 1\n * const firstBanana = Arr.indexOfFrom(fruits, 'banana', 1);\n *\n * // Search for 'banana' starting from index 2\n * const secondBanana = Arr.indexOfFrom(fruits, 'banana', 2);\n *\n * // Element not found\n * const notFound = Arr.indexOfFrom(fruits, 'grape', 0);\n *\n * // Curried version\n * const findBananaFrom2 = Arr.indexOfFrom('banana', 2);\n *\n * const index = findBananaFrom2(fruits);\n *\n * console.log(firstBanana); // => 1\n *\n * console.log(secondBanana); // => 3\n *\n * console.log(notFound); // => -1\n *\n * console.log(index); // => 3\n * ```\n */\nexport function indexOfFrom<const Ar extends readonly unknown[]>(\n array: Ar,\n searchElement: Ar[number],\n fromIndex: ArgArrayIndexWithNegative<Ar>,\n): ArrayIndex<Ar> | -1;\n\nexport function indexOfFrom<E>(\n searchElement: E,\n fromIndex: SizeType.ArgArrWithNegative,\n): (array: readonly E[]) => SizeType.Arr | -1;\n\nexport function indexOfFrom<E>(\n ...args:\n | readonly [\n array: readonly E[],\n searchElement: E,\n fromIndex: SizeType.ArgArrWithNegative,\n ]\n | readonly [searchElement: E, fromIndex: SizeType.ArgArrWithNegative]\n): SizeType.Arr | ((array: readonly E[]) => SizeType.Arr | -1) | -1 {\n switch (args.length) {\n case 3:\n return indexOfFromImpl(...args);\n\n case 2:\n return (array) => indexOfFromImpl(array, ...args);\n }\n}\n\nconst indexOfFromImpl = <E,>(\n array: readonly E[],\n searchElement: E,\n fromIndex: SizeType.ArgArrWithNegative,\n): SizeType.Arr | -1 => {\n const index = array.indexOf(searchElement, fromIndex);\n\n return index !== -1 ? asUint32(index) : -1;\n};\n\n/**\n * Gets the last index of a value in an array.\n *\n * @example\n *\n * ```ts\n * const fruits = ['apple', 'banana', 'orange', 'banana'] as readonly string[];\n *\n * const lastBanana = Arr.lastIndexOf(fruits, 'banana');\n *\n * const lastApple = Arr.lastIndexOf(fruits, 'apple');\n *\n * const notFound = Arr.lastIndexOf(fruits, 'grape');\n *\n * // Curried version\n * const findLastBanana = Arr.lastIndexOf('banana');\n *\n * const index = findLastBanana(fruits);\n *\n * console.log(lastBanana); // => 3\n *\n * console.log(lastApple); // => 0\n *\n * console.log(notFound); // => -1\n *\n * console.log(index); // => 3\n * ```\n */\nexport function lastIndexOf<const Ar extends readonly unknown[]>(\n array: Ar,\n searchElement: Ar[number],\n): ArrayIndex<Ar> | -1;\n\nexport function lastIndexOf<E>(\n searchElement: E,\n): (array: readonly E[]) => SizeType.Arr | -1;\n\nexport function lastIndexOf<E>(\n ...args:\n | readonly [array: readonly E[], searchElement: E]\n | readonly [searchElement: E]\n): SizeType.Arr | ((array: readonly E[]) => SizeType.Arr | -1) | -1 {\n switch (args.length) {\n case 2:\n return lastIndexOfImpl(...args);\n\n case 1:\n return (array) => lastIndexOfImpl(array, ...args);\n }\n}\n\nconst lastIndexOfImpl = <E,>(\n array: readonly E[],\n searchElement: E,\n): SizeType.Arr | -1 => {\n const index = array.lastIndexOf(searchElement);\n\n return index !== -1 ? asUint32(index) : -1;\n};\n\n/**\n * Gets the last index of a value in an array, starting from a specified index.\n *\n * @example\n *\n * ```ts\n * const fruits = ['apple', 'banana', 'orange', 'banana', 'grape'] as const;\n *\n * // Search backwards for 'banana' from index 3\n * const lastBananaFrom3 = Arr.lastIndexOfFrom(fruits, 'banana', 3);\n *\n * // Search backwards for 'banana' from index 2\n * const lastBananaFrom2 = Arr.lastIndexOfFrom(fruits, 'banana', 2);\n *\n * // Element not found\n * const notFound = Arr.lastIndexOfFrom(fruits, 'grape', 2);\n *\n * // Curried version\n * const findBananaFrom3 = Arr.lastIndexOfFrom('banana', 3);\n *\n * const index = findBananaFrom3(fruits);\n *\n * console.log(lastBananaFrom3); // => 3\n *\n * console.log(lastBananaFrom2); // => 1\n *\n * console.log(notFound); // => -1\n *\n * console.log(index); // => 3\n * ```\n */\nexport function lastIndexOfFrom<const Ar extends readonly unknown[]>(\n array: Ar,\n searchElement: Ar[number],\n fromIndex: ArgArrayIndexWithNegative<Ar>,\n): ArrayIndex<Ar> | -1;\n\nexport function lastIndexOfFrom<E>(\n searchElement: E,\n fromIndex: SizeType.ArgArrWithNegative,\n): (array: readonly E[]) => SizeType.Arr | -1;\n\nexport function lastIndexOfFrom<E>(\n ...args:\n | readonly [\n array: readonly E[],\n searchElement: E,\n fromIndex: SizeType.ArgArrWithNegative,\n ]\n | readonly [searchElement: E, fromIndex: SizeType.ArgArrWithNegative]\n): SizeType.Arr | ((array: readonly E[]) => SizeType.Arr | -1) | -1 {\n switch (args.length) {\n case 3:\n return lastIndexOfFromImpl(...args);\n\n case 2:\n return (array) => lastIndexOfFromImpl(array, ...args);\n }\n}\n\nconst lastIndexOfFromImpl = <E,>(\n array: readonly E[],\n searchElement: E,\n fromIndex: SizeType.ArgArrWithNegative,\n): SizeType.Arr | -1 => {\n const index = array.lastIndexOf(searchElement, fromIndex);\n\n return index !== -1 ? asUint32(index) : -1;\n};\n"],"names":["Optional.none","Optional.some"],"mappings":"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"}
|
|
@@ -22,7 +22,7 @@ export declare const eq: <E>(array1: readonly E[], array2: readonly E[], equalit
|
|
|
22
22
|
*
|
|
23
23
|
* @see {@link eq}
|
|
24
24
|
*/
|
|
25
|
-
export declare const equal:
|
|
25
|
+
export declare const equal: typeof eq;
|
|
26
26
|
/**
|
|
27
27
|
* Checks if the first array is a subset of the second array.
|
|
28
28
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"array-utils-set-op.d.mts","sourceRoot":"","sources":["../../../src/array/impl/array-utils-set-op.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAE/C;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,EAAE,GAAI,CAAC,UACV,SAAS,CAAC,EAAE,UACZ,SAAS,CAAC,EAAE,aACV,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,OAAO,KAChC,OAG8C,CAAC;AAElD;;;;GAIG;AACH,eAAO,MAAM,KAAK,
|
|
1
|
+
{"version":3,"file":"array-utils-set-op.d.mts","sourceRoot":"","sources":["../../../src/array/impl/array-utils-set-op.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAE/C;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,EAAE,GAAI,CAAC,UACV,SAAS,CAAC,EAAE,UACZ,SAAS,CAAC,EAAE,aACV,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,OAAO,KAChC,OAG8C,CAAC;AAElD;;;;GAIG;AACH,eAAO,MAAM,KAAK,WAAK,CAAC;AAExB;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,QAAQ,GAAI,EAAE,SAAS,SAAS,EAAE,EAAE,SAAS,SAAS,GAAG,EAAE,UAC9D,SAAS,EAAE,EAAE,UACb,SAAS,EAAE,EAAE,KACpB,OAIA,CAAC;AAEJ;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,UAAU,GAAI,EAAE,SAAS,SAAS,EAAE,EAAE,SAAS,SAAS,GAAG,EAAE,UAChE,SAAS,EAAE,EAAE,UACb,SAAS,EAAE,EAAE,KACpB,OAAmC,CAAC;AAEvC;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,eAAe,GAC1B,EAAE,SAAS,SAAS,EACpB,EAAE,SAAS,SAAS,GAAG,EAAE,UAEjB,SAAS,EAAE,EAAE,UACb,SAAS,EAAE,EAAE,KACpB,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC,EAE+C,CAAC;AAErE;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,SAAS,UACvC,SAAS,CAAC,EAAE,UACZ,SAAS,CAAC,EAAE,KACnB,SAAS,CAAC,EAA+C,CAAC;AAE7D;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,sBAAsB,GAAI,CAAC,SAAS,MAAM,eACxC,SAAS,CAAC,EAAE,eACZ,SAAS,CAAC,EAAE,KACxB,SAAS,CAAC,EAoCZ,CAAC"}
|
|
@@ -25,5 +25,5 @@ export declare const size: <const Ar extends readonly unknown[]>(array: Ar) => A
|
|
|
25
25
|
*
|
|
26
26
|
* @see {@link size}
|
|
27
27
|
*/
|
|
28
|
-
export declare const length:
|
|
28
|
+
export declare const length: typeof size;
|
|
29
29
|
//# sourceMappingURL=array-utils-size.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"array-utils-size.d.mts","sourceRoot":"","sources":["../../../src/array/impl/array-utils-size.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,cAAc,EACpB,MAAM,eAAe,CAAC;AACvB;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEhD,eAAO,MAAM,IAAI,GAAI,KAAK,CAAC,EAAE,SAAS,SAAS,OAAO,EAAE,SAC/C,EAAE,KACR,EAAE,SAAS,aAAa,CAAC,OAAO,CAAC,GAChC,cAAc,CAAC,cAAc,EAAE,QAAQ,CAAC,GAAG,CAAC,GAC5C,QAAQ,CAAC,GAEU,CAAC;AAExB;;;;GAIG;AACH,eAAO,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"array-utils-size.d.mts","sourceRoot":"","sources":["../../../src/array/impl/array-utils-size.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,cAAc,EACpB,MAAM,eAAe,CAAC;AACvB;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEhD,eAAO,MAAM,IAAI,GAAI,KAAK,CAAC,EAAE,SAAS,SAAS,OAAO,EAAE,SAC/C,EAAE,KACR,EAAE,SAAS,aAAa,CAAC,OAAO,CAAC,GAChC,cAAc,CAAC,cAAc,EAAE,QAAQ,CAAC,GAAG,CAAC,GAC5C,QAAQ,CAAC,GAEU,CAAC;AAExB;;;;GAIG;AACH,eAAO,MAAM,MAAM,aAAO,CAAC"}
|
|
@@ -37,18 +37,17 @@ import '../../number/refined-number-utils.mjs';
|
|
|
37
37
|
|
|
38
38
|
function sliceClamped(...args) {
|
|
39
39
|
switch (args.length) {
|
|
40
|
-
case 3:
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
return array.slice(startClamped, endClamped);
|
|
45
|
-
}
|
|
46
|
-
case 2: {
|
|
47
|
-
const [start, end] = args;
|
|
48
|
-
return (array) => sliceClamped(array, start, end);
|
|
49
|
-
}
|
|
40
|
+
case 3:
|
|
41
|
+
return sliceClampedImpl(...args);
|
|
42
|
+
case 2:
|
|
43
|
+
return (array) => sliceClampedImpl(array, ...args);
|
|
50
44
|
}
|
|
51
45
|
}
|
|
46
|
+
const sliceClampedImpl = (array, start, end) => {
|
|
47
|
+
const startClamped = Num.clamp(0, array.length)(start);
|
|
48
|
+
const endClamped = Num.clamp(startClamped, array.length)(end);
|
|
49
|
+
return array.slice(startClamped, endClamped);
|
|
50
|
+
};
|
|
52
51
|
|
|
53
52
|
export { sliceClamped };
|
|
54
53
|
//# sourceMappingURL=array-utils-slice-clamped.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"array-utils-slice-clamped.mjs","sources":["../../../src/array/impl/array-utils-slice-clamped.mts"],"sourcesContent":["import { Num } from '../../number/index.mjs';\nimport { type ArgArrayIndexWithNegative, type SizeType } from '../../types.mjs';\n\n/**\n * Slices an array with automatically clamped start and end indices.\n *\n * @example\n *\n * ```ts\n * const letters = ['a', 'b', 'c', 'd', 'e'] as readonly string[];\n *\n * const lastThree = Arr.sliceClamped(letters, -3, 10);\n *\n * const middleTwo = Arr.sliceClamped(1, 3)(letters);\n *\n * assert.deepStrictEqual(lastThree, ['a', 'b', 'c', 'd', 'e']);\n *\n * assert.deepStrictEqual(middleTwo, ['b', 'c']);\n * ```\n */\nexport function sliceClamped<const Ar extends readonly unknown[]>(\n array: Ar,\n start: ArgArrayIndexWithNegative<Ar>,\n end: ArgArrayIndexWithNegative<Ar>,\n): readonly Ar[number][];\n\nexport function sliceClamped(\n start: SizeType.ArgArrWithNegative,\n end: SizeType.ArgArrWithNegative,\n): <E>(array: readonly E[]) => readonly E[];\n\nexport function sliceClamped<E>(\n ...args:\n | readonly [\n readonly E[],\n SizeType.ArgArrWithNegative,\n SizeType.ArgArrWithNegative,\n ]\n | readonly [SizeType.ArgArrWithNegative, SizeType.ArgArrWithNegative]\n): readonly E[] | ((array: readonly E[]) => readonly E[]) {\n switch (args.length) {\n case 3
|
|
1
|
+
{"version":3,"file":"array-utils-slice-clamped.mjs","sources":["../../../src/array/impl/array-utils-slice-clamped.mts"],"sourcesContent":["import { Num } from '../../number/index.mjs';\nimport { type ArgArrayIndexWithNegative, type SizeType } from '../../types.mjs';\n\n/**\n * Slices an array with automatically clamped start and end indices.\n *\n * @example\n *\n * ```ts\n * const letters = ['a', 'b', 'c', 'd', 'e'] as readonly string[];\n *\n * const lastThree = Arr.sliceClamped(letters, -3, 10);\n *\n * const middleTwo = Arr.sliceClamped(1, 3)(letters);\n *\n * assert.deepStrictEqual(lastThree, ['a', 'b', 'c', 'd', 'e']);\n *\n * assert.deepStrictEqual(middleTwo, ['b', 'c']);\n * ```\n */\nexport function sliceClamped<const Ar extends readonly unknown[]>(\n array: Ar,\n start: ArgArrayIndexWithNegative<Ar>,\n end: ArgArrayIndexWithNegative<Ar>,\n): readonly Ar[number][];\n\nexport function sliceClamped(\n start: SizeType.ArgArrWithNegative,\n end: SizeType.ArgArrWithNegative,\n): <E>(array: readonly E[]) => readonly E[];\n\nexport function sliceClamped<E>(\n ...args:\n | readonly [\n readonly E[],\n SizeType.ArgArrWithNegative,\n SizeType.ArgArrWithNegative,\n ]\n | readonly [SizeType.ArgArrWithNegative, SizeType.ArgArrWithNegative]\n): readonly E[] | ((array: readonly E[]) => readonly E[]) {\n switch (args.length) {\n case 3:\n return sliceClampedImpl(...args);\n\n case 2:\n return (array) => sliceClampedImpl(array, ...args);\n }\n}\n\nconst sliceClampedImpl = <E,>(\n array: readonly E[],\n start: SizeType.ArgArrWithNegative,\n end: SizeType.ArgArrWithNegative,\n): readonly E[] => {\n const startClamped = Num.clamp(0, array.length)(start);\n\n // Ensure endClamped is not less than startClamped.\n const endClamped = Num.clamp(startClamped, array.length)(end);\n\n return array.slice(startClamped, endClamped);\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BO,SAAS,gBACX,IAAA,EAOqD;AACxD,EAAA,QAAQ,KAAK,MAAA;AAAQ,IACnB,KAAK,CAAA;AACH,MAAA,OAAO,gBAAA,CAAiB,GAAG,IAAI,CAAA;AAAA,IAEjC,KAAK,CAAA;AACH,MAAA,OAAO,CAAC,KAAA,KAAU,gBAAA,CAAiB,KAAA,EAAO,GAAG,IAAI,CAAA;AAAA;AAEvD;AAEA,MAAM,gBAAA,GAAmB,CACvB,KAAA,EACA,KAAA,EACA,GAAA,KACiB;AACjB,EAAA,MAAM,eAAe,GAAA,CAAI,KAAA,CAAM,GAAG,KAAA,CAAM,MAAM,EAAE,KAAK,CAAA;AAGrD,EAAA,MAAM,aAAa,GAAA,CAAI,KAAA,CAAM,cAAc,KAAA,CAAM,MAAM,EAAE,GAAG,CAAA;AAE5D,EAAA,OAAO,KAAA,CAAM,KAAA,CAAM,YAAA,EAAc,UAAU,CAAA;AAC7C,CAAA;;;;"}
|
|
@@ -127,7 +127,7 @@ export declare function skipLast<N extends SizeType.ArgArr>(num: N): <const Ar e
|
|
|
127
127
|
*
|
|
128
128
|
* @see {@link tail}
|
|
129
129
|
*/
|
|
130
|
-
export declare const rest:
|
|
130
|
+
export declare const rest: typeof tail;
|
|
131
131
|
/**
|
|
132
132
|
* Alias for `skip`.
|
|
133
133
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"array-utils-slicing.d.mts","sourceRoot":"","sources":["../../../src/array/impl/array-utils-slicing.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,IAAI,EACT,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,sBAAsB,EAC5B,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAKhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,eAAO,MAAM,IAAI,GAAI,KAAK,CAAC,EAAE,SAAS,SAAS,OAAO,EAAE,SAC/C,EAAE,KACR,IAAI,CAAC,IAAI,CAAC,EAAE,CAE6B,CAAC;AAE7C;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,OAAO,GAAI,KAAK,CAAC,EAAE,SAAS,SAAS,OAAO,EAAE,SAClD,EAAE,KACR,IAAI,CAAC,OAAO,CAAC,EAAE,CAEyD,CAAC;AAE5E;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,IAAI,CAClB,KAAK,CAAC,EAAE,SAAS,SAAS,OAAO,EAAE,EACnC,CAAC,SAAS,QAAQ,CAAC,MAAM,EAEzB,KAAK,EAAE,EAAE,EACT,GAAG,EAAE,CAAC,GACL,CAAC,SAAS,sBAAsB,GAC/B,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,GAChB,CAAC,SAAS,QAAQ,CAAC,cAAc,GAC/B,EAAE,SAAS,aAAa,CAAC,OAAO,CAAC,GAC/B,aAAa,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GACzB,SAAS,EAAE,CAAC,MAAM,CAAC,EAAE,GACvB,SAAS,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;AAE5B,wBAAgB,IAAI,CAAC,CAAC,SAAS,QAAQ,CAAC,MAAM,EAC5C,GAAG,EAAE,CAAC,GACL,CAAC,KAAK,CAAC,EAAE,SAAS,SAAS,OAAO,EAAE,EACrC,KAAK,EAAE,EAAE,KACN,CAAC,SAAS,sBAAsB,GACjC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,GAChB,CAAC,SAAS,QAAQ,CAAC,cAAc,GAC/B,EAAE,SAAS,aAAa,CAAC,OAAO,CAAC,GAC/B,aAAa,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GACzB,SAAS,EAAE,CAAC,MAAM,CAAC,EAAE,GACvB,SAAS,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"array-utils-slicing.d.mts","sourceRoot":"","sources":["../../../src/array/impl/array-utils-slicing.mts"],"names":[],"mappings":"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"}
|
|
@@ -48,52 +48,40 @@ const butLast = (array) => (
|
|
|
48
48
|
);
|
|
49
49
|
function take(...args) {
|
|
50
50
|
switch (args.length) {
|
|
51
|
-
case 2:
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
case 1: {
|
|
56
|
-
const [num] = args;
|
|
57
|
-
return (array) => take(array, num);
|
|
58
|
-
}
|
|
51
|
+
case 2:
|
|
52
|
+
return takeImpl(...args);
|
|
53
|
+
case 1:
|
|
54
|
+
return (array) => takeImpl(array, ...args);
|
|
59
55
|
}
|
|
60
56
|
}
|
|
57
|
+
const takeImpl = (array, num) => sliceClamped(array, 0, num);
|
|
61
58
|
function takeLast(...args) {
|
|
62
59
|
switch (args.length) {
|
|
63
|
-
case 2:
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
case 1: {
|
|
68
|
-
const [num] = args;
|
|
69
|
-
return (array) => takeLast(array, num);
|
|
70
|
-
}
|
|
60
|
+
case 2:
|
|
61
|
+
return takeLastImpl(...args);
|
|
62
|
+
case 1:
|
|
63
|
+
return (array) => takeLastImpl(array, ...args);
|
|
71
64
|
}
|
|
72
65
|
}
|
|
66
|
+
const takeLastImpl = (array, num) => sliceClamped(array, Uint32.sub(size(array), num), size(array));
|
|
73
67
|
function skip(...args) {
|
|
74
68
|
switch (args.length) {
|
|
75
|
-
case 2:
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
case 1: {
|
|
80
|
-
const [num] = args;
|
|
81
|
-
return (array) => skip(array, num);
|
|
82
|
-
}
|
|
69
|
+
case 2:
|
|
70
|
+
return skipImpl(...args);
|
|
71
|
+
case 1:
|
|
72
|
+
return (array) => skipImpl(array, ...args);
|
|
83
73
|
}
|
|
84
74
|
}
|
|
75
|
+
const skipImpl = (array, num) => sliceClamped(array, num, size(array));
|
|
85
76
|
function skipLast(...args) {
|
|
86
77
|
switch (args.length) {
|
|
87
|
-
case 2:
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
case 1: {
|
|
92
|
-
const [num] = args;
|
|
93
|
-
return (array) => skipLast(array, num);
|
|
94
|
-
}
|
|
78
|
+
case 2:
|
|
79
|
+
return skipLastImpl(...args);
|
|
80
|
+
case 1:
|
|
81
|
+
return (array) => skipLastImpl(array, ...args);
|
|
95
82
|
}
|
|
96
83
|
}
|
|
84
|
+
const skipLastImpl = (array, num) => sliceClamped(array, 0, Uint32.sub(size(array), num));
|
|
97
85
|
const rest = tail;
|
|
98
86
|
const drop = skip;
|
|
99
87
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"array-utils-slicing.mjs","sources":["../../../src/array/impl/array-utils-slicing.mts"],"sourcesContent":["import {\n type List,\n type NonEmptyArray,\n type NonEmptyTuple,\n type StructuralPrefixLength,\n} from 'ts-type-forge';\nimport { Uint32 } from '../../number/index.mjs';\nimport { type SizeType } from '../../types.mjs';\nimport { size } from './array-utils-size.mjs';\nimport { sliceClamped } from './array-utils-slice-clamped.mjs';\nimport { isEmpty } from './array-utils-validation.mjs';\n\n/**\n * Returns all elements of an array except the first one.\n *\n * @example\n *\n * ```ts\n * {\n * const scientists = ['Ada', 'Grace', 'Katherine'] as const;\n *\n * const remainder = Arr.tail(scientists);\n *\n * assert.deepStrictEqual(remainder, ['Grace', 'Katherine']);\n *\n * assert.isTrue(remainder.length === 2);\n * }\n *\n * {\n * const values = [1, 2, 3] as const;\n *\n * const remainder = Arr.rest(values);\n *\n * const emptyRemainder = Arr.rest([1] as const);\n *\n * assert.deepStrictEqual(remainder, [2, 3] as const);\n *\n * assert.deepStrictEqual(emptyRemainder, [] as const);\n * }\n * ```\n */\nexport const tail = <const Ar extends readonly unknown[]>(\n array: Ar,\n): List.Tail<Ar> =>\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n array.slice(1) as unknown as List.Tail<Ar>;\n\n/**\n * Returns all elements of an array except the last one.\n *\n * @example\n *\n * ```ts\n * const queue = ['task-1', 'task-2', 'task-3'] as const;\n *\n * const withoutLast = Arr.butLast(queue);\n *\n * assert.deepStrictEqual(withoutLast, ['task-1', 'task-2']);\n *\n * assert.isTrue(withoutLast.length === 2);\n * ```\n */\nexport const butLast = <const Ar extends readonly unknown[]>(\n array: Ar,\n): List.ButLast<Ar> =>\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n (isEmpty(array) ? [] : array.slice(0, -1)) as unknown as List.ButLast<Ar>;\n\n/**\n * Takes the first N elements from an array.\n *\n * @example\n *\n * ```ts\n * const values = [1, 2, 3, 4] as const;\n *\n * const firstTwo = Arr.take(values, 2);\n *\n * const firstThree = Arr.take(3)(values);\n *\n * assert.deepStrictEqual(firstTwo, [1, 2]);\n *\n * assert.deepStrictEqual(firstThree, [1, 2, 3]);\n * ```\n */\nexport function take<\n const Ar extends readonly unknown[],\n N extends SizeType.ArgArr,\n>(\n array: Ar,\n num: N,\n): N extends StructuralPrefixLength\n ? List.Take<N, Ar>\n : N extends SizeType.ArgArrPositive\n ? Ar extends NonEmptyTuple<unknown>\n ? NonEmptyArray<Ar[number]>\n : readonly Ar[number][]\n : readonly Ar[number][];\n\nexport function take<N extends SizeType.ArgArr>(\n num: N,\n): <const Ar extends readonly unknown[]>(\n array: Ar,\n) => N extends StructuralPrefixLength\n ? List.Take<N, Ar>\n : N extends SizeType.ArgArrPositive\n ? Ar extends NonEmptyTuple<unknown>\n ? NonEmptyArray<Ar[number]>\n : readonly Ar[number][]\n : readonly Ar[number][];\n\nexport function take<E>(\n ...args:\n | readonly [array: readonly E[], num: SizeType.ArgArr]\n | readonly [num: SizeType.ArgArr]\n): readonly E[] | ((array: readonly E[]) => readonly E[]) {\n switch (args.length) {\n case 2
|
|
1
|
+
{"version":3,"file":"array-utils-slicing.mjs","sources":["../../../src/array/impl/array-utils-slicing.mts"],"sourcesContent":["import {\n type List,\n type NonEmptyArray,\n type NonEmptyTuple,\n type StructuralPrefixLength,\n} from 'ts-type-forge';\nimport { Uint32 } from '../../number/index.mjs';\nimport { type SizeType } from '../../types.mjs';\nimport { size } from './array-utils-size.mjs';\nimport { sliceClamped } from './array-utils-slice-clamped.mjs';\nimport { isEmpty } from './array-utils-validation.mjs';\n\n/**\n * Returns all elements of an array except the first one.\n *\n * @example\n *\n * ```ts\n * {\n * const scientists = ['Ada', 'Grace', 'Katherine'] as const;\n *\n * const remainder = Arr.tail(scientists);\n *\n * assert.deepStrictEqual(remainder, ['Grace', 'Katherine']);\n *\n * assert.isTrue(remainder.length === 2);\n * }\n *\n * {\n * const values = [1, 2, 3] as const;\n *\n * const remainder = Arr.rest(values);\n *\n * const emptyRemainder = Arr.rest([1] as const);\n *\n * assert.deepStrictEqual(remainder, [2, 3] as const);\n *\n * assert.deepStrictEqual(emptyRemainder, [] as const);\n * }\n * ```\n */\nexport const tail = <const Ar extends readonly unknown[]>(\n array: Ar,\n): List.Tail<Ar> =>\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n array.slice(1) as unknown as List.Tail<Ar>;\n\n/**\n * Returns all elements of an array except the last one.\n *\n * @example\n *\n * ```ts\n * const queue = ['task-1', 'task-2', 'task-3'] as const;\n *\n * const withoutLast = Arr.butLast(queue);\n *\n * assert.deepStrictEqual(withoutLast, ['task-1', 'task-2']);\n *\n * assert.isTrue(withoutLast.length === 2);\n * ```\n */\nexport const butLast = <const Ar extends readonly unknown[]>(\n array: Ar,\n): List.ButLast<Ar> =>\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n (isEmpty(array) ? [] : array.slice(0, -1)) as unknown as List.ButLast<Ar>;\n\n/**\n * Takes the first N elements from an array.\n *\n * @example\n *\n * ```ts\n * const values = [1, 2, 3, 4] as const;\n *\n * const firstTwo = Arr.take(values, 2);\n *\n * const firstThree = Arr.take(3)(values);\n *\n * assert.deepStrictEqual(firstTwo, [1, 2]);\n *\n * assert.deepStrictEqual(firstThree, [1, 2, 3]);\n * ```\n */\nexport function take<\n const Ar extends readonly unknown[],\n N extends SizeType.ArgArr,\n>(\n array: Ar,\n num: N,\n): N extends StructuralPrefixLength\n ? List.Take<N, Ar>\n : N extends SizeType.ArgArrPositive\n ? Ar extends NonEmptyTuple<unknown>\n ? NonEmptyArray<Ar[number]>\n : readonly Ar[number][]\n : readonly Ar[number][];\n\nexport function take<N extends SizeType.ArgArr>(\n num: N,\n): <const Ar extends readonly unknown[]>(\n array: Ar,\n) => N extends StructuralPrefixLength\n ? List.Take<N, Ar>\n : N extends SizeType.ArgArrPositive\n ? Ar extends NonEmptyTuple<unknown>\n ? NonEmptyArray<Ar[number]>\n : readonly Ar[number][]\n : readonly Ar[number][];\n\nexport function take<E>(\n ...args:\n | readonly [array: readonly E[], num: SizeType.ArgArr]\n | readonly [num: SizeType.ArgArr]\n): readonly E[] | ((array: readonly E[]) => readonly E[]) {\n switch (args.length) {\n case 2:\n return takeImpl(...args);\n\n case 1:\n return (array) => takeImpl(array, ...args);\n }\n}\n\nconst takeImpl = <E,>(\n array: readonly E[],\n num: SizeType.ArgArr,\n): readonly E[] => sliceClamped(array, 0, num);\n\n/**\n * Takes the last N elements from an array.\n *\n * @example\n *\n * ```ts\n * const values = [1, 2, 3, 4] as const;\n *\n * const lastTwo = Arr.takeLast(values, 2);\n *\n * const lastThree = Arr.takeLast(3)(values);\n *\n * assert.deepStrictEqual(lastTwo, [3, 4]);\n *\n * assert.deepStrictEqual(lastThree, [2, 3, 4]);\n * ```\n */\nexport function takeLast<\n const Ar extends readonly unknown[],\n N extends SizeType.ArgArr,\n>(\n array: Ar,\n num: N,\n): N extends StructuralPrefixLength\n ? List.TakeLast<N, Ar>\n : N extends SizeType.ArgArrPositive\n ? Ar extends NonEmptyTuple<unknown>\n ? NonEmptyArray<Ar[number]>\n : readonly Ar[number][]\n : readonly Ar[number][];\n\nexport function takeLast<N extends SizeType.ArgArr>(\n num: N,\n): <const Ar extends readonly unknown[]>(\n array: Ar,\n) => N extends StructuralPrefixLength\n ? List.TakeLast<N, Ar>\n : N extends SizeType.ArgArrPositive\n ? Ar extends NonEmptyTuple<unknown>\n ? NonEmptyArray<Ar[number]>\n : readonly Ar[number][]\n : readonly Ar[number][];\n\nexport function takeLast<E>(\n ...args:\n | readonly [array: readonly E[], num: SizeType.ArgArr]\n | readonly [num: SizeType.ArgArr]\n): readonly E[] | ((array: readonly E[]) => readonly E[]) {\n switch (args.length) {\n case 2:\n return takeLastImpl(...args);\n\n case 1:\n return (array) => takeLastImpl(array, ...args);\n }\n}\n\nconst takeLastImpl = <E,>(\n array: readonly E[],\n num: SizeType.ArgArr,\n): readonly E[] =>\n sliceClamped(array, Uint32.sub(size(array), num), size(array));\n\n/**\n * Skips the first N elements of an array.\n *\n * @example\n *\n * ```ts\n * const values = ['a', 'b', 'c', 'd'] as const;\n *\n * const withoutFirstTwo = Arr.skip(values, 2);\n *\n * const withoutFirstThree = Arr.skip(3)(values);\n *\n * assert.deepStrictEqual(withoutFirstTwo, ['c', 'd']);\n *\n * assert.deepStrictEqual(withoutFirstThree, ['d']);\n * ```\n */\nexport function skip<\n const Ar extends readonly unknown[],\n N extends SizeType.ArgArr,\n>(\n array: Ar,\n num: N,\n): N extends StructuralPrefixLength ? List.Skip<N, Ar> : readonly Ar[number][];\n\n// curried version\nexport function skip<N extends SizeType.ArgArr>(\n num: N,\n): <const Ar extends readonly unknown[]>(\n array: Ar,\n) => N extends StructuralPrefixLength\n ? List.Skip<N, Ar>\n : readonly Ar[number][];\n\nexport function skip<E>(\n ...args: readonly [readonly E[], SizeType.ArgArr] | readonly [SizeType.ArgArr]\n): readonly E[] | ((array: readonly E[]) => readonly E[]) {\n switch (args.length) {\n case 2:\n return skipImpl(...args);\n\n case 1:\n return (array) => skipImpl(array, ...args);\n }\n}\n\nconst skipImpl = <E,>(\n array: readonly E[],\n num: SizeType.ArgArr,\n): readonly E[] => sliceClamped(array, num, size(array));\n\n/**\n * Skips the last N elements of an array.\n *\n * @example\n *\n * ```ts\n * const values = ['a', 'b', 'c', 'd'] as const;\n *\n * const withoutLastTwo = Arr.skipLast(values, 2);\n *\n * const withoutLastThree = Arr.skipLast(3)(values);\n *\n * assert.deepStrictEqual(withoutLastTwo, ['a', 'b']);\n *\n * assert.deepStrictEqual(withoutLastThree, ['a']);\n * ```\n */\nexport function skipLast<\n const Ar extends readonly unknown[],\n N extends SizeType.ArgArr,\n>(\n array: Ar,\n num: N,\n): N extends StructuralPrefixLength\n ? List.SkipLast<N, Ar>\n : readonly Ar[number][];\n\n// curried version\nexport function skipLast<N extends SizeType.ArgArr>(\n num: N,\n): <const Ar extends readonly unknown[]>(\n array: Ar,\n) => N extends StructuralPrefixLength\n ? List.SkipLast<N, Ar>\n : readonly Ar[number][];\n\nexport function skipLast<E>(\n ...args:\n | readonly [array: readonly E[], num: SizeType.ArgArr]\n | readonly [num: SizeType.ArgArr]\n): readonly E[] | ((array: readonly E[]) => readonly E[]) {\n switch (args.length) {\n case 2:\n return skipLastImpl(...args);\n\n case 1:\n return (array) => skipLastImpl(array, ...args);\n }\n}\n\nconst skipLastImpl = <E,>(\n array: readonly E[],\n num: SizeType.ArgArr,\n): readonly E[] => sliceClamped(array, 0, Uint32.sub(size(array), num));\n\n/**\n * Alias for `tail`.\n *\n * @see {@link tail}\n */\nexport const rest = tail;\n\n/**\n * Alias for `skip`.\n *\n * @see {@link skip}\n */\nexport const drop = skip;\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCO,MAAM,OAAO,CAClB,KAAA;AAAA;AAAA,EAGA,KAAA,CAAM,MAAM,CAAC;AAAA;AAiBR,MAAM,UAAU,CACrB,KAAA;AAAA;AAAA,EAGC,OAAA,CAAQ,KAAK,CAAA,GAAI,KAAK,KAAA,CAAM,KAAA,CAAM,GAAG,EAAE;AAAA;AA6CnC,SAAS,QACX,IAAA,EAGqD;AACxD,EAAA,QAAQ,KAAK,MAAA;AAAQ,IACnB,KAAK,CAAA;AACH,MAAA,OAAO,QAAA,CAAS,GAAG,IAAI,CAAA;AAAA,IAEzB,KAAK,CAAA;AACH,MAAA,OAAO,CAAC,KAAA,KAAU,QAAA,CAAS,KAAA,EAAO,GAAG,IAAI,CAAA;AAAA;AAE/C;AAEA,MAAM,WAAW,CACf,KAAA,EACA,QACiB,YAAA,CAAa,KAAA,EAAO,GAAG,GAAG,CAAA;AA6CtC,SAAS,YACX,IAAA,EAGqD;AACxD,EAAA,QAAQ,KAAK,MAAA;AAAQ,IACnB,KAAK,CAAA;AACH,MAAA,OAAO,YAAA,CAAa,GAAG,IAAI,CAAA;AAAA,IAE7B,KAAK,CAAA;AACH,MAAA,OAAO,CAAC,KAAA,KAAU,YAAA,CAAa,KAAA,EAAO,GAAG,IAAI,CAAA;AAAA;AAEnD;AAEA,MAAM,YAAA,GAAe,CACnB,KAAA,EACA,GAAA,KAEA,aAAa,KAAA,EAAO,MAAA,CAAO,GAAA,CAAI,IAAA,CAAK,KAAK,CAAA,EAAG,GAAG,CAAA,EAAG,IAAA,CAAK,KAAK,CAAC,CAAA;AAoCxD,SAAS,QACX,IAAA,EACqD;AACxD,EAAA,QAAQ,KAAK,MAAA;AAAQ,IACnB,KAAK,CAAA;AACH,MAAA,OAAO,QAAA,CAAS,GAAG,IAAI,CAAA;AAAA,IAEzB,KAAK,CAAA;AACH,MAAA,OAAO,CAAC,KAAA,KAAU,QAAA,CAAS,KAAA,EAAO,GAAG,IAAI,CAAA;AAAA;AAE/C;AAEA,MAAM,QAAA,GAAW,CACf,KAAA,EACA,GAAA,KACiB,aAAa,KAAA,EAAO,GAAA,EAAK,IAAA,CAAK,KAAK,CAAC,CAAA;AAsChD,SAAS,YACX,IAAA,EAGqD;AACxD,EAAA,QAAQ,KAAK,MAAA;AAAQ,IACnB,KAAK,CAAA;AACH,MAAA,OAAO,YAAA,CAAa,GAAG,IAAI,CAAA;AAAA,IAE7B,KAAK,CAAA;AACH,MAAA,OAAO,CAAC,KAAA,KAAU,YAAA,CAAa,KAAA,EAAO,GAAG,IAAI,CAAA;AAAA;AAEnD;AAEA,MAAM,YAAA,GAAe,CACnB,KAAA,EACA,GAAA,KACiB,YAAA,CAAa,KAAA,EAAO,CAAA,EAAG,MAAA,CAAO,GAAA,CAAI,IAAA,CAAK,KAAK,CAAA,EAAG,GAAG,CAAC,CAAA;AAO/D,MAAM,IAAA,GAAO;AAOb,MAAM,IAAA,GAAO;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"array-utils-transformation.d.mts","sourceRoot":"","sources":["../../../src/array/impl/array-utils-transformation.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,IAAI,EACT,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,WAAW,EAEhB,KAAK,SAAS,EACd,KAAK,oBAAoB,EACzB,KAAK,YAAY,EAClB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AAInD,OAAO,EACL,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,QAAQ,EACd,MAAM,iBAAiB,CAAC;AAKzB;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,GAAG,CAAC,KAAK,CAAC,EAAE,SAAS,SAAS,OAAO,EAAE,EAAE,CAAC,EACxD,KAAK,EAAE,EAAE,EACT,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,EAAE,CAAC,KAAK,CAAC,GACjD,QAAQ,CAAC;KAAG,CAAC,IAAI,MAAM,EAAE,GAAG,CAAC;CAAE,CAAC,CAAC;AAGpC,wBAAgB,GAAG,CAAC,CAAC,EAAE,CAAC,EACtB,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,GACtC,CAAC,KAAK,CAAC,EAAE,SAAS,SAAS,CAAC,EAAE,EAC/B,KAAK,EAAE,EAAE,KACN,QAAQ,CAAC;KAAG,CAAC,IAAI,MAAM,EAAE,GAAG,CAAC;CAAE,CAAC,CAAC;AAuBtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,IAAI,CAAC,KAAK,CAAC,EAAE,SAAS,SAAS,OAAO,EAAE,EAAE,CAAC,EACzD,KAAK,EAAE,EAAE,EACT,OAAO,EAAE,CACP,WAAW,EAAE,CAAC,EACd,YAAY,EAAE,EAAE,CAAC,MAAM,CAAC,EACxB,YAAY,EAAE,UAAU,CAAC,EAAE,CAAC,KACzB,CAAC,EACN,IAAI,EAAE,CAAC,GACN,aAAa,CAAC,CAAC,CAAC,CAAC;AAEpB,wBAAgB,IAAI,CAAC,CAAC,EAAE,CAAC,EACvB,OAAO,EAAE,CAAC,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,EAC3E,IAAI,EAAE,CAAC,GACN,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,KAAK,aAAa,CAAC,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"array-utils-transformation.d.mts","sourceRoot":"","sources":["../../../src/array/impl/array-utils-transformation.mts"],"names":[],"mappings":"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"}
|
|
@@ -59,24 +59,23 @@ function map(...args) {
|
|
|
59
59
|
}
|
|
60
60
|
function scan(...args) {
|
|
61
61
|
switch (args.length) {
|
|
62
|
-
case 3:
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
);
|
|
67
|
-
let mut_acc = init;
|
|
68
|
-
for (const [index, value] of array.entries()) {
|
|
69
|
-
mut_acc = reducer(mut_acc, value, asUint32(index));
|
|
70
|
-
mut_result[index + 1] = mut_acc;
|
|
71
|
-
}
|
|
72
|
-
return mut_result;
|
|
73
|
-
}
|
|
74
|
-
case 2: {
|
|
75
|
-
const [reducer, init] = args;
|
|
76
|
-
return (array) => scan(array, reducer, init);
|
|
77
|
-
}
|
|
62
|
+
case 3:
|
|
63
|
+
return scanImpl(...args);
|
|
64
|
+
case 2:
|
|
65
|
+
return (array) => scanImpl(array, ...args);
|
|
78
66
|
}
|
|
79
67
|
}
|
|
68
|
+
const scanImpl = (array, reducer, init) => {
|
|
69
|
+
const mut_result = castMutable(
|
|
70
|
+
newArray(asPositiveUint32(array.length + 1), init)
|
|
71
|
+
);
|
|
72
|
+
let mut_acc = init;
|
|
73
|
+
for (const [index, value] of array.entries()) {
|
|
74
|
+
mut_acc = reducer(mut_acc, value, asUint32(index));
|
|
75
|
+
mut_result[index + 1] = mut_acc;
|
|
76
|
+
}
|
|
77
|
+
return mut_result;
|
|
78
|
+
};
|
|
80
79
|
const toReversed = (array) => (
|
|
81
80
|
// eslint-disable-next-line total-functions/no-unsafe-type-assertion
|
|
82
81
|
array.toReversed()
|
|
@@ -102,28 +101,22 @@ function toSortedBy(array, comparatorValueMapper, comparator) {
|
|
|
102
101
|
}
|
|
103
102
|
function filter(...args) {
|
|
104
103
|
switch (args.length) {
|
|
105
|
-
case 2:
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
case 1: {
|
|
110
|
-
const [predicate] = args;
|
|
111
|
-
return (array) => filter(array, predicate);
|
|
112
|
-
}
|
|
104
|
+
case 2:
|
|
105
|
+
return filterImpl(...args);
|
|
106
|
+
case 1:
|
|
107
|
+
return (array) => filterImpl(array, ...args);
|
|
113
108
|
}
|
|
114
109
|
}
|
|
110
|
+
const filterImpl = (array, predicate) => array.filter((a, i) => predicate(a, asUint32(i)));
|
|
115
111
|
function filterNot(...args) {
|
|
116
112
|
switch (args.length) {
|
|
117
|
-
case 2:
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
case 1: {
|
|
122
|
-
const [predicate] = args;
|
|
123
|
-
return (array) => filterNot(array, predicate);
|
|
124
|
-
}
|
|
113
|
+
case 2:
|
|
114
|
+
return filterNotImpl(...args);
|
|
115
|
+
case 1:
|
|
116
|
+
return (array) => filterNotImpl(array, ...args);
|
|
125
117
|
}
|
|
126
118
|
}
|
|
119
|
+
const filterNotImpl = (array, predicate) => array.filter((a, i) => !predicate(a, asUint32(i)));
|
|
127
120
|
const uniq = (array) => (
|
|
128
121
|
// eslint-disable-next-line total-functions/no-unsafe-type-assertion
|
|
129
122
|
Array.from(new Set(array))
|
|
@@ -139,25 +132,24 @@ const uniqBy = (array, mapFn) => {
|
|
|
139
132
|
};
|
|
140
133
|
function flat(...args) {
|
|
141
134
|
switch (args.length) {
|
|
142
|
-
case 2:
|
|
143
|
-
|
|
144
|
-
return array.flat(depth);
|
|
145
|
-
}
|
|
135
|
+
case 2:
|
|
136
|
+
return flatImpl(...args);
|
|
146
137
|
case 1: {
|
|
147
138
|
const [arrayOrDepth] = args;
|
|
148
139
|
if (typeof arrayOrDepth === "number") {
|
|
149
140
|
const depth = arrayOrDepth;
|
|
150
|
-
return (array) =>
|
|
141
|
+
return (array) => flatImpl(array, depth);
|
|
151
142
|
}
|
|
152
143
|
if (arrayOrDepth === void 0) {
|
|
153
|
-
return (array) =>
|
|
144
|
+
return (array) => flatImpl(array, 1);
|
|
154
145
|
}
|
|
155
146
|
return arrayOrDepth.flat();
|
|
156
147
|
}
|
|
157
148
|
case 0:
|
|
158
|
-
return (array) =>
|
|
149
|
+
return (array) => flatImpl(array, 1);
|
|
159
150
|
}
|
|
160
151
|
}
|
|
152
|
+
const flatImpl = (array, depth) => array.flat(depth);
|
|
161
153
|
function flatMap(...args) {
|
|
162
154
|
switch (args.length) {
|
|
163
155
|
case 2: {
|
|
@@ -172,21 +164,18 @@ function flatMap(...args) {
|
|
|
172
164
|
}
|
|
173
165
|
function partition(...args) {
|
|
174
166
|
switch (args.length) {
|
|
175
|
-
case 2:
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
seq(asUint32(Math.ceil(array.length / chunkSize))).map(
|
|
180
|
-
(i) => array.slice(chunkSize * i, chunkSize * (i + 1))
|
|
181
|
-
)
|
|
182
|
-
);
|
|
183
|
-
}
|
|
184
|
-
case 1: {
|
|
185
|
-
const [chunkSize] = args;
|
|
186
|
-
return (array) => partition(array, chunkSize);
|
|
187
|
-
}
|
|
167
|
+
case 2:
|
|
168
|
+
return partitionImpl(...args);
|
|
169
|
+
case 1:
|
|
170
|
+
return (array) => partitionImpl(array, ...args);
|
|
188
171
|
}
|
|
189
172
|
}
|
|
173
|
+
const partitionImpl = (array, chunkSize) => chunkSize < 2 ? [] : (
|
|
174
|
+
// eslint-disable-next-line total-functions/no-partial-division
|
|
175
|
+
seq(asUint32(Math.ceil(array.length / chunkSize))).map(
|
|
176
|
+
(i) => array.slice(chunkSize * i, chunkSize * (i + 1))
|
|
177
|
+
)
|
|
178
|
+
);
|
|
190
179
|
const concat = (array1, array2) => (
|
|
191
180
|
// eslint-disable-next-line total-functions/no-unsafe-type-assertion
|
|
192
181
|
[...array1, ...array2]
|