diff --git a/package.json b/package.json index 6bbc1aa..607fa1d 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,7 @@ "got": "^14.2.1", "ip-regex": "^5.0.0", "luxon": "^3.4.4", + "multithread-array": "^2.0.0", "p-queue": "^8.0.1", "simple-git": "^3.24.0", "tsx": "^4.7.2", diff --git a/sources/utility.ts b/sources/utility.ts index 5fa81c2..083cbf6 100644 --- a/sources/utility.ts +++ b/sources/utility.ts @@ -1,3 +1,4 @@ +import {SplitElementsIntoSubArrayLength} from 'multithread-array' import type * as Types from './types.js' /** @@ -38,30 +39,21 @@ export function IncludePropertiesInObject(CustomObjectArray: unknown[], CompareO return CustomObjectArray.some(CustomObject => Object.entries(CompareObject).every(([Key, Value]) => CustomObject[Key] === Value)) } -function GroupObjectByNumber(StringOrObject: unknown[], GroupSize: number): unknown[][] { - const SplittedArray = new Array(Math.ceil(StringOrObject.length / GroupSize)) - for (var I = 0; I < SplittedArray.length; I++) { - SplittedArray[I] = StringOrObject.slice(I === 0 ? I : I * GroupSize, (I + 1) * GroupSize > StringOrObject.length ? StringOrObject.length : (I + 1) * GroupSize) - } - - return SplittedArray -} - /** * @name GroupStringsByNumber * @description Groups a RemainingFilenamesArray into subarrays based on a specified group size. A group with latest tag will be separated from others. * @param {Types.RemainingFilenamesArrayType[]} RemainingObjectArray A RemainingFilenamesArray to group. - * @param {number} GroupSize The maximum number of elements in each subarray. + * @param {number} {Count} The maximum number of elements in each subarray. * @returns {Types.RemainingFilenamesArrayType[][]} A RemainingFilenamesArray of subarrays. */ -export function GroupRequestsByNumberWithBranch(RemainingObjectArray: Types.RemainingFilenamesArrayType[], GroupSize: number): Types.RemainingFilenamesArrayType[][] { +export function GroupRequestsByNumberWithBranch(RemainingObjectArray: Types.RemainingFilenamesArrayType[], Count: number): Types.RemainingFilenamesArrayType[][] { if (RemainingObjectArray.every(RemainingObject => RemainingObject.BranchOrTag === RemainingObjectArray[0].BranchOrTag)) { - return GroupObjectByNumber(RemainingObjectArray, GroupSize) as Types.RemainingFilenamesArrayType[][] + return SplitElementsIntoSubArrayLength(RemainingObjectArray, {Count}) as Types.RemainingFilenamesArrayType[][] } const SplittedArray: Types.RemainingFilenamesArrayType[][] = [] - SplittedArray.push(...GroupObjectByNumber(RemainingObjectArray.filter(RemainingObject => RemainingObject.BranchOrTag === 'latest'), GroupSize) as Types.RemainingFilenamesArrayType[][]) - SplittedArray.push(...GroupObjectByNumber(RemainingObjectArray.filter(RemainingObject => RemainingObject.BranchOrTag !== 'latest'), GroupSize) as Types.RemainingFilenamesArrayType[][]) + SplittedArray.push(...SplitElementsIntoSubArrayLength(RemainingObjectArray.filter(RemainingObject => RemainingObject.BranchOrTag === 'latest'), {Count}) as Types.RemainingFilenamesArrayType[][]) + SplittedArray.push(...SplitElementsIntoSubArrayLength(RemainingObjectArray.filter(RemainingObject => RemainingObject.BranchOrTag !== 'latest'), {Count}) as Types.RemainingFilenamesArrayType[][]) return SplittedArray }