From e2886348fd00ce270094dd33735fd1b5df631e38 Mon Sep 17 00:00:00 2001 From: Sam Wilkins Date: Thu, 19 Sep 2019 18:23:24 -0400 Subject: finalized type fixes --- src/extensions/ArrayExtensions.ts | 40 ++++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 19 deletions(-) (limited to 'src/extensions') diff --git a/src/extensions/ArrayExtensions.ts b/src/extensions/ArrayExtensions.ts index ec19117c9..cc17a5207 100644 --- a/src/extensions/ArrayExtensions.ts +++ b/src/extensions/ArrayExtensions.ts @@ -3,7 +3,7 @@ interface Array { predicateBatch(batcher: PredicateBatcherSync): T[][]; predicateBatchAsync(batcher: PredicateBatcherAsync): Promise; batch(batcher: Batcher): T[][]; - batchAsync(batcher: BatcherAsync): Promise; + batchAsync(batcher: Batcher): Promise; batchedForEach(batcher: Batcher, handler: BatchHandlerSync): void; batchedMap(batcher: Batcher, handler: BatchConverterSync): O[]; @@ -38,19 +38,21 @@ interface Interval { } type BatchConverterSync = (batch: I[], context: BatchContext) => O[]; -type BatchHandlerSync = (batch: I[], context: BatchContext) => void; type BatchConverterAsync = (batch: I[], context: BatchContext) => Promise; -type BatchHandlerAsync = (batch: I[], context: BatchContext) => Promise; type BatchConverter = BatchConverterSync | BatchConverterAsync; + +type BatchHandlerSync = (batch: I[], context: BatchContext) => void; +type BatchHandlerAsync = (batch: I[], context: BatchContext) => Promise; type BatchHandler = BatchHandlerSync | BatchHandlerAsync; +type BatcherSync = FixedBatcher | PredicateBatcherSync; +type BatcherAsync = PredicateBatcherAsync; +type Batcher = BatcherSync | BatcherAsync; + type FixedBatcher = { batchSize: number } | { batchCount: number, mode?: typeof module.exports.Mode }; type PredicateBatcherSync = PredicateBatcherCommon & { executor: (element: I, accumulator: A) => ExecutorResult }; -type PredicateBatcherAsync = PredicateBatcherCommon & { executor: (element: I, accumulator: A) => Promise> }; +type PredicateBatcherAsync = PredicateBatcherCommon & { executorAsync: (element: I, accumulator: A) => Promise> }; -type BatcherSync = FixedBatcher | PredicateBatcherSync; -type BatcherAsync = FixedBatcher | PredicateBatcherAsync; -type Batcher = BatcherSync | BatcherAsync; module.exports.Mode = { Balanced: 0, @@ -138,13 +140,13 @@ module.exports.Assign = function () { return batches; }; - Array.prototype.predicateBatchAsync = async function (batcher: PredicateBatcherAsync): Promise { + Array.prototype.predicateBatchAsync = async function (batcher: BatcherAsync): Promise { const batches: T[][] = []; let batch: T[] = []; - const { executor, initial, persistAccumulator } = batcher; + const { executorAsync, initial, persistAccumulator } = batcher; let accumulator: A = initial; for (let element of this) { - const { updated, makeNextBatch } = await executor(element, accumulator); + const { updated, makeNextBatch } = await executorAsync(element, accumulator); accumulator = updated; if (!makeNextBatch) { batch.push(element); @@ -168,15 +170,15 @@ module.exports.Assign = function () { } }; - Array.prototype.batchAsync = async function (batcher: BatcherAsync): Promise { - if ("executor" in batcher) { + Array.prototype.batchAsync = async function (batcher: Batcher): Promise { + if ("executorAsync" in batcher) { return this.predicateBatchAsync(batcher); } else { - return this.fixedBatch(batcher); + return this.batch(batcher); } }; - Array.prototype.batchedForEach = function (batcher: Batcher, handler: BatchHandlerSync): void { + Array.prototype.batchedForEach = function (batcher: BatcherSync, handler: BatchHandlerSync): void { if (this.length) { let completed = 0; const batches = this.batch(batcher); @@ -192,7 +194,7 @@ module.exports.Assign = function () { } }; - Array.prototype.batchedMap = function (batcher: Batcher, handler: BatchConverterSync): O[] { + Array.prototype.batchedMap = function (batcher: BatcherSync, handler: BatchConverterSync): O[] { if (!this.length) { return []; } @@ -211,7 +213,7 @@ module.exports.Assign = function () { return collector; }; - Array.prototype.batchedForEachAsync = async function (batcher: BatcherAsync, handler: BatchHandler): Promise { + Array.prototype.batchedForEachAsync = async function (batcher: Batcher, handler: BatchHandler): Promise { if (this.length) { let completed = 0; const batches = await this.batchAsync(batcher); @@ -227,7 +229,7 @@ module.exports.Assign = function () { } }; - Array.prototype.batchedMapAsync = async function (batcher: BatcherAsync, handler: BatchConverter): Promise { + Array.prototype.batchedMapAsync = async function (batcher: Batcher, handler: BatchConverter): Promise { if (!this.length) { return []; } @@ -246,7 +248,7 @@ module.exports.Assign = function () { return collector; }; - Array.prototype.batchedForEachInterval = async function (batcher: BatcherAsync, handler: BatchHandler, interval: Interval): Promise { + Array.prototype.batchedForEachInterval = async function (batcher: Batcher, handler: BatchHandler, interval: Interval): Promise { if (!this.length) { return; } @@ -276,7 +278,7 @@ module.exports.Assign = function () { }); }; - Array.prototype.batchedMapInterval = async function (batcher: BatcherAsync, handler: BatchConverter, interval: Interval): Promise { + Array.prototype.batchedMapInterval = async function (batcher: Batcher, handler: BatchConverter, interval: Interval): Promise { if (!this.length) { return []; } -- cgit v1.2.3-70-g09d2