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.
Files changed (79) hide show
  1. package/README.md +3 -6
  2. package/dist/array/impl/array-utils-creation.d.mts +1 -1
  3. package/dist/array/impl/array-utils-creation.d.mts.map +1 -1
  4. package/dist/array/impl/array-utils-element-access.d.mts +1 -1
  5. package/dist/array/impl/array-utils-element-access.d.mts.map +1 -1
  6. package/dist/array/impl/array-utils-element-access.mjs +10 -13
  7. package/dist/array/impl/array-utils-element-access.mjs.map +1 -1
  8. package/dist/array/impl/array-utils-iterators.d.mts +1 -1
  9. package/dist/array/impl/array-utils-iterators.d.mts.map +1 -1
  10. package/dist/array/impl/array-utils-length-bounded-array-cast.d.mts.map +1 -1
  11. package/dist/array/impl/array-utils-length-bounded-array-cast.mjs +53 -53
  12. package/dist/array/impl/array-utils-length-bounded-array-cast.mjs.map +1 -1
  13. package/dist/array/impl/array-utils-modification.d.mts.map +1 -1
  14. package/dist/array/impl/array-utils-modification.mjs +61 -70
  15. package/dist/array/impl/array-utils-modification.mjs.map +1 -1
  16. package/dist/array/impl/array-utils-reducing-value.d.mts.map +1 -1
  17. package/dist/array/impl/array-utils-reducing-value.mjs +37 -47
  18. package/dist/array/impl/array-utils-reducing-value.mjs.map +1 -1
  19. package/dist/array/impl/array-utils-search.d.mts.map +1 -1
  20. package/dist/array/impl/array-utils-search.mjs +80 -92
  21. package/dist/array/impl/array-utils-search.mjs.map +1 -1
  22. package/dist/array/impl/array-utils-set-op.d.mts +1 -1
  23. package/dist/array/impl/array-utils-set-op.d.mts.map +1 -1
  24. package/dist/array/impl/array-utils-size.d.mts +1 -1
  25. package/dist/array/impl/array-utils-size.d.mts.map +1 -1
  26. package/dist/array/impl/array-utils-slice-clamped.mjs +9 -10
  27. package/dist/array/impl/array-utils-slice-clamped.mjs.map +1 -1
  28. package/dist/array/impl/array-utils-slicing.d.mts +1 -1
  29. package/dist/array/impl/array-utils-slicing.d.mts.map +1 -1
  30. package/dist/array/impl/array-utils-slicing.mjs +20 -32
  31. package/dist/array/impl/array-utils-slicing.mjs.map +1 -1
  32. package/dist/array/impl/array-utils-transformation.d.mts.map +1 -1
  33. package/dist/array/impl/array-utils-transformation.mjs +41 -52
  34. package/dist/array/impl/array-utils-transformation.mjs.map +1 -1
  35. package/dist/array/impl/array-utils-validation.d.mts.map +1 -1
  36. package/dist/array/impl/array-utils-validation.mjs +10 -16
  37. package/dist/array/impl/array-utils-validation.mjs.map +1 -1
  38. package/dist/json/json.mjs +1 -1
  39. package/dist/json/json.mjs.map +1 -1
  40. package/dist/number/branded-types/finite-number.d.mts +6 -3
  41. package/dist/number/branded-types/finite-number.d.mts.map +1 -1
  42. package/dist/number/branded-types/negative-finite-number.d.mts +8 -4
  43. package/dist/number/branded-types/negative-finite-number.d.mts.map +1 -1
  44. package/dist/number/branded-types/negative-int.d.mts +2 -1
  45. package/dist/number/branded-types/negative-int.d.mts.map +1 -1
  46. package/dist/number/branded-types/negative-safe-int.d.mts +2 -1
  47. package/dist/number/branded-types/negative-safe-int.d.mts.map +1 -1
  48. package/dist/number/branded-types/non-negative-finite-number.d.mts +6 -3
  49. package/dist/number/branded-types/non-negative-finite-number.d.mts.map +1 -1
  50. package/dist/number/branded-types/non-positive-finite-number.d.mts +6 -3
  51. package/dist/number/branded-types/non-positive-finite-number.d.mts.map +1 -1
  52. package/dist/number/branded-types/non-zero-finite-number.d.mts +6 -3
  53. package/dist/number/branded-types/non-zero-finite-number.d.mts.map +1 -1
  54. package/dist/number/branded-types/positive-finite-number.d.mts +6 -3
  55. package/dist/number/branded-types/positive-finite-number.d.mts.map +1 -1
  56. package/dist/number/enum/int8.d.mts +26 -13
  57. package/dist/number/enum/int8.d.mts.map +1 -1
  58. package/dist/number/enum/uint8.d.mts +24 -12
  59. package/dist/number/enum/uint8.d.mts.map +1 -1
  60. package/dist/others/if-then.d.mts +1 -1
  61. package/dist/others/if-then.d.mts.map +1 -1
  62. package/dist/string/str.d.mts.map +1 -1
  63. package/dist/string/str.mjs +52 -52
  64. package/dist/string/str.mjs.map +1 -1
  65. package/package.json +4 -4
  66. package/src/array/impl/array-utils-element-access.mts +15 -16
  67. package/src/array/impl/array-utils-length-bounded-array-cast.mts +73 -60
  68. package/src/array/impl/array-utils-modification.mts +96 -94
  69. package/src/array/impl/array-utils-reducing-value.mts +68 -57
  70. package/src/array/impl/array-utils-search.mts +146 -148
  71. package/src/array/impl/array-utils-slice-clamped.mts +16 -14
  72. package/src/array/impl/array-utils-slicing.mts +37 -40
  73. package/src/array/impl/array-utils-transformation.mts +64 -62
  74. package/src/array/impl/array-utils-transformation.test.mts +1 -1
  75. package/src/array/impl/array-utils-validation.mts +18 -20
  76. package/src/collections/iset.test.mts +2 -2
  77. package/src/functional/pipe.test.mts +1 -1
  78. package/src/json/json.mts +1 -1
  79. 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: <E>(array1: readonly E[], array2: readonly E[], equality?: (a: E, b: E) => boolean) => boolean;
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,GAdC,CAAC,UACV,SAAS,CAAC,EAAE,UACZ,SAAS,CAAC,EAAE,aACV,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,OAAO,KAChC,OAUoB,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"}
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: <const Ar extends readonly unknown[]>(array: Ar) => Ar extends NonEmptyTuple<unknown> ? IntersectBrand<PositiveNumber, SizeType.Arr> : SizeType.Arr;
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,SAbQ,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,GASa,CAAC"}
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
- const [array, start, end] = args;
42
- const startClamped = Num.clamp(0, array.length)(start);
43
- const endClamped = Num.clamp(startClamped, array.length)(end);
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: {\n const [array, start, end] = args;\n\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\n case 2: {\n const [start, end] = args;\n\n return (array) => sliceClamped(array, start, end);\n }\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BO,SAAS,gBACX,IAAA,EAOqD;AACxD,EAAA,QAAQ,KAAK,MAAA;AAAQ,IACnB,KAAK,CAAA,EAAG;AACN,MAAA,MAAM,CAAC,KAAA,EAAO,KAAA,EAAO,GAAG,CAAA,GAAI,IAAA;AAE5B,MAAA,MAAM,eAAe,GAAA,CAAI,KAAA,CAAM,GAAG,KAAA,CAAM,MAAM,EAAE,KAAK,CAAA;AAGrD,MAAA,MAAM,aAAa,GAAA,CAAI,KAAA,CAAM,cAAc,KAAA,CAAM,MAAM,EAAE,GAAG,CAAA;AAE5D,MAAA,OAAO,KAAA,CAAM,KAAA,CAAM,YAAA,EAAc,UAAU,CAAA;AAAA,IAC7C;AAAA,IAEA,KAAK,CAAA,EAAG;AACN,MAAA,MAAM,CAAC,KAAA,EAAO,GAAG,CAAA,GAAI,IAAA;AAErB,MAAA,OAAO,CAAC,KAAA,KAAU,YAAA,CAAa,KAAA,EAAO,OAAO,GAAG,CAAA;AAAA,IAClD;AAAA;AAEJ;;;;"}
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: <const Ar extends readonly unknown[]>(array: Ar) => List.Tail<Ar>;
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;AAsB5B;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,QAAQ,CACtB,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,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,GACpB,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,QAAQ,CAAC,CAAC,SAAS,QAAQ,CAAC,MAAM,EAChD,GAAG,EAAE,CAAC,GACL,CAAC,KAAK,CAAC,EAAE,SAAS,SAAS,OAAO,EAAE,EACrC,KAAK,EAAE,EAAE,KACN,CAAC,SAAS,sBAAsB,GACjC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,GACpB,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;AAsB5B;;;;;;;;;;;;;;;;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,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;AAG/E,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,SAAS,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;AAoB1B;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,QAAQ,CACtB,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,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,GACpB,SAAS,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;AAG1B,wBAAgB,QAAQ,CAAC,CAAC,SAAS,QAAQ,CAAC,MAAM,EAChD,GAAG,EAAE,CAAC,GACL,CAAC,KAAK,CAAC,EAAE,SAAS,SAAS,OAAO,EAAE,EACrC,KAAK,EAAE,EAAE,KACN,CAAC,SAAS,sBAAsB,GACjC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,GACpB,SAAS,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;AAsB1B;;;;GAIG;AACH,eAAO,MAAM,IAAI,SA1QU,EAAE,SAAS,SAAS,OAAO,EAAE,SAC/C,EAAE,KACR,IAAI,CAAC,IAAI,CAAC,EAAE,CAwQS,CAAC;AAEzB;;;;GAIG;AACH,eAAO,MAAM,IAAI,aAAO,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
- const [array, num] = args;
53
- return sliceClamped(array, 0, num);
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
- const [array, num] = args;
65
- return sliceClamped(array, Uint32.sub(size(array), num), size(array));
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
- const [array, num] = args;
77
- return sliceClamped(array, num, size(array));
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
- const [array, num] = args;
89
- return sliceClamped(array, 0, Uint32.sub(size(array), num));
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: {\n const [array, num] = args;\n\n return sliceClamped(array, 0, num);\n }\n\n case 1: {\n const [num] = args;\n\n return (array) => take(array, num);\n }\n }\n}\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 const [array, num] = args;\n\n return sliceClamped(array, Uint32.sub(size(array), num), size(array));\n }\n\n case 1: {\n const [num] = args;\n\n return (array) => takeLast(array, num);\n }\n }\n}\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 const [array, num] = args;\n\n return sliceClamped(array, num, size(array));\n }\n\n case 1: {\n const [num] = args;\n\n return (array) => skip(array, num);\n }\n }\n}\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 const [array, num] = args;\n\n return sliceClamped(array, 0, Uint32.sub(size(array), num));\n }\n\n case 1: {\n const [num] = args;\n\n return (array) => skipLast(array, num);\n }\n }\n}\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,EAAG;AACN,MAAA,MAAM,CAAC,KAAA,EAAO,GAAG,CAAA,GAAI,IAAA;AAErB,MAAA,OAAO,YAAA,CAAa,KAAA,EAAO,CAAA,EAAG,GAAG,CAAA;AAAA,IACnC;AAAA,IAEA,KAAK,CAAA,EAAG;AACN,MAAA,MAAM,CAAC,GAAG,CAAA,GAAI,IAAA;AAEd,MAAA,OAAO,CAAC,KAAA,KAAU,IAAA,CAAK,KAAA,EAAO,GAAG,CAAA;AAAA,IACnC;AAAA;AAEJ;AA6CO,SAAS,YACX,IAAA,EAGqD;AACxD,EAAA,QAAQ,KAAK,MAAA;AAAQ,IACnB,KAAK,CAAA,EAAG;AACN,MAAA,MAAM,CAAC,KAAA,EAAO,GAAG,CAAA,GAAI,IAAA;AAErB,MAAA,OAAO,YAAA,CAAa,KAAA,EAAO,MAAA,CAAO,GAAA,CAAI,IAAA,CAAK,KAAK,CAAA,EAAG,GAAG,CAAA,EAAG,IAAA,CAAK,KAAK,CAAC,CAAA;AAAA,IACtE;AAAA,IAEA,KAAK,CAAA,EAAG;AACN,MAAA,MAAM,CAAC,GAAG,CAAA,GAAI,IAAA;AAEd,MAAA,OAAO,CAAC,KAAA,KAAU,QAAA,CAAS,KAAA,EAAO,GAAG,CAAA;AAAA,IACvC;AAAA;AAEJ;AAoCO,SAAS,QACX,IAAA,EACqD;AACxD,EAAA,QAAQ,KAAK,MAAA;AAAQ,IACnB,KAAK,CAAA,EAAG;AACN,MAAA,MAAM,CAAC,KAAA,EAAO,GAAG,CAAA,GAAI,IAAA;AAErB,MAAA,OAAO,YAAA,CAAa,KAAA,EAAO,GAAA,EAAK,IAAA,CAAK,KAAK,CAAC,CAAA;AAAA,IAC7C;AAAA,IAEA,KAAK,CAAA,EAAG;AACN,MAAA,MAAM,CAAC,GAAG,CAAA,GAAI,IAAA;AAEd,MAAA,OAAO,CAAC,KAAA,KAAU,IAAA,CAAK,KAAA,EAAO,GAAG,CAAA;AAAA,IACnC;AAAA;AAEJ;AAsCO,SAAS,YACX,IAAA,EAGqD;AACxD,EAAA,QAAQ,KAAK,MAAA;AAAQ,IACnB,KAAK,CAAA,EAAG;AACN,MAAA,MAAM,CAAC,KAAA,EAAO,GAAG,CAAA,GAAI,IAAA;AAErB,MAAA,OAAO,YAAA,CAAa,OAAO,CAAA,EAAG,MAAA,CAAO,IAAI,IAAA,CAAK,KAAK,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA,IAC5D;AAAA,IAEA,KAAK,CAAA,EAAG;AACN,MAAA,MAAM,CAAC,GAAG,CAAA,GAAI,IAAA;AAEd,MAAA,OAAO,CAAC,KAAA,KAAU,QAAA,CAAS,KAAA,EAAO,GAAG,CAAA;AAAA,IACvC;AAAA;AAEJ;AAOO,MAAM,IAAA,GAAO;AAOb,MAAM,IAAA,GAAO;;;;"}
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":"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"}
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
- const [array, reducer, init] = args;
64
- const mut_result = castMutable(
65
- newArray(asPositiveUint32(array.length + 1), init)
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
- const [array, predicate] = args;
107
- return array.filter((a, i) => predicate(a, asUint32(i)));
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
- const [array, predicate] = args;
119
- return array.filter((a, i) => !predicate(a, asUint32(i)));
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
- const [array, depth] = args;
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) => flat(array, depth);
141
+ return (array) => flatImpl(array, depth);
151
142
  }
152
143
  if (arrayOrDepth === void 0) {
153
- return (array) => flat(array, 1);
144
+ return (array) => flatImpl(array, 1);
154
145
  }
155
146
  return arrayOrDepth.flat();
156
147
  }
157
148
  case 0:
158
- return (array) => flat(array, 1);
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
- const [array, chunkSize] = args;
177
- return chunkSize < 2 ? [] : (
178
- // eslint-disable-next-line total-functions/no-partial-division
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]