๐Ÿš€ Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more โ†’
Socket
Book a DemoInstallSign in
Socket

@aws-lambda-powertools/batch

Package Overview
Dependencies
Maintainers
2
Versions
46
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@aws-lambda-powertools/batch - npm Package Compare versions

Comparing version

to
1.13.0

lib/BasePartialBatchProcessor.d.ts.map

5

./lib/index.js

@@ -22,7 +22,6 @@ "use strict";

__exportStar(require("./BasePartialBatchProcessor"), exports);
__exportStar(require("./BatchProcessorSync"), exports);
__exportStar(require("./BatchProcessor"), exports);
__exportStar(require("./AsyncBatchProcessor"), exports);
__exportStar(require("./processPartialResponseSync"), exports);
__exportStar(require("./processPartialResponse"), exports);
__exportStar(require("./asyncProcessPartialResponse"), exports);
__exportStar(require("./SqsFifoPartialProcessor"), exports);
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDhDQUE0QjtBQUM1QiwyQ0FBeUI7QUFDekIsMENBQXdCO0FBQ3hCLHlEQUF1QztBQUN2Qyw4REFBNEM7QUFDNUMsbURBQWlDO0FBQ2pDLHdEQUFzQztBQUN0QywyREFBeUM7QUFDekMsZ0VBQThDO0FBQzlDLDREQUEwQyJ9

41

lib/BasePartialBatchProcessor.d.ts

@@ -5,5 +5,2 @@ import type { DynamoDBRecord, KinesisStreamRecord, SQSRecord } from 'aws-lambda';

import type { EventSourceDataClassTypes, PartialItemFailureResponse, PartialItemFailures } from './types';
/**
* Process batch and partially report failed items
*/
declare abstract class BasePartialBatchProcessor extends BasePartialProcessor {

@@ -17,48 +14,11 @@ COLLECTOR_MAPPING: {

eventType: keyof typeof EventType;
/**
* Initializes base batch processing class
* @param eventType Whether this is SQS, DynamoDB stream, or Kinesis data stream event
*/
constructor(eventType: keyof typeof EventType);
/**
* Report messages to be deleted in case of partial failures
*/
clean(): void;
/**
* Collects identifiers of failed items for a DynamoDB stream
* @returns list of identifiers for failed items
*/
collectDynamoDBFailures(): PartialItemFailures[];
/**
* Collects identifiers of failed items for a Kinesis stream
* @returns list of identifiers for failed items
*/
collectKinesisFailures(): PartialItemFailures[];
/**
* Collects identifiers of failed items for an SQS batch
* @returns list of identifiers for failed items
*/
collectSqsFailures(): PartialItemFailures[];
/**
* Determines whether all records in a batch failed to process
* @returns true if all records resulted in exception results
*/
entireBatchFailed(): boolean;
/**
* Collects identifiers for failed batch items
* @returns formatted messages to use in batch deletion
*/
getMessagesToReport(): PartialItemFailures[];
/**
* Determines if any records failed to process
* @returns true if any records resulted in exception
*/
hasMessagesToReport(): boolean;
/**
* Remove results from previous execution
*/
prepare(): void;
/**
* @returns Batch items that failed processing, if any
*/
response(): PartialItemFailureResponse;

@@ -68,1 +28,2 @@ toBatchType(record: EventSourceDataClassTypes, eventType: keyof typeof EventType): SQSRecord | KinesisStreamRecord | DynamoDBRecord;

export { BasePartialBatchProcessor };
//# sourceMappingURL=BasePartialBatchProcessor.d.ts.map

@@ -7,10 +7,3 @@ "use strict";

const errors_1 = require("./errors");
/**
* Process batch and partially report failed items
*/
class BasePartialBatchProcessor extends BasePartialProcessor_1.BasePartialProcessor {
/**
* Initializes base batch processing class
* @param eventType Whether this is SQS, DynamoDB stream, or Kinesis data stream event
*/
constructor(eventType) {

@@ -26,5 +19,2 @@ super();

}
/**
* Report messages to be deleted in case of partial failures
*/
clean() {

@@ -35,5 +25,3 @@ if (!this.hasMessagesToReport()) {

if (this.entireBatchFailed()) {
throw new errors_1.BatchProcessingError('All records failed processing. ' +
this.exceptions.length +
' individual errors logged separately below.', this.exceptions);
throw new errors_1.FullBatchFailureError(this.errors);
}

@@ -43,6 +31,2 @@ const messages = this.getMessagesToReport();

}
/**
* Collects identifiers of failed items for a DynamoDB stream
* @returns list of identifiers for failed items
*/
collectDynamoDBFailures() {

@@ -58,6 +42,2 @@ const failures = [];

}
/**
* Collects identifiers of failed items for a Kinesis stream
* @returns list of identifiers for failed items
*/
collectKinesisFailures() {

@@ -71,6 +51,2 @@ const failures = [];

}
/**
* Collects identifiers of failed items for an SQS batch
* @returns list of identifiers for failed items
*/
collectSqsFailures() {

@@ -84,35 +60,17 @@ const failures = [];

}
/**
* Determines whether all records in a batch failed to process
* @returns true if all records resulted in exception results
*/
entireBatchFailed() {
return this.exceptions.length == this.records.length;
return this.errors.length == this.records.length;
}
/**
* Collects identifiers for failed batch items
* @returns formatted messages to use in batch deletion
*/
getMessagesToReport() {
return this.COLLECTOR_MAPPING[this.eventType]();
}
/**
* Determines if any records failed to process
* @returns true if any records resulted in exception
*/
hasMessagesToReport() {
return this.failureMessages.length != 0;
}
/**
* Remove results from previous execution
*/
prepare() {
this.successMessages.length = 0;
this.failureMessages.length = 0;
this.exceptions.length = 0;
this.errors.length = 0;
this.batchResponse = constants_1.DEFAULT_RESPONSE;
}
/**
* @returns Batch items that failed processing, if any
*/
response() {

@@ -126,2 +84,1 @@ return this.batchResponse;

exports.BasePartialBatchProcessor = BasePartialBatchProcessor;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFzZVBhcnRpYWxCYXRjaFByb2Nlc3Nvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9CYXNlUGFydGlhbEJhdGNoUHJvY2Vzc29yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUtBLGlFQUE4RDtBQUM5RCwyQ0FBOEU7QUFDOUUscUNBQWdEO0FBT2hEOztHQUVHO0FBQ0gsTUFBZSx5QkFBMEIsU0FBUSwyQ0FBb0I7SUFPbkU7OztPQUdHO0lBQ0gsWUFBbUIsU0FBaUM7UUFDbEQsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQixJQUFJLENBQUMsYUFBYSxHQUFHLDRCQUFnQixDQUFDO1FBQ3RDLElBQUksQ0FBQyxpQkFBaUIsR0FBRztZQUN2QixDQUFDLHFCQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQ2hELENBQUMscUJBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtZQUNuRSxDQUFDLHFCQUFTLENBQUMsZUFBZSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFO1NBQ2xFLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLO1FBQ1YsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxFQUFFO1lBQy9CLE9BQU87U0FDUjtRQUVELElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQUU7WUFDNUIsTUFBTSxJQUFJLDZCQUFvQixDQUM1QixpQ0FBaUM7Z0JBQy9CLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTTtnQkFDdEIsNkNBQTZDLEVBQy9DLElBQUksQ0FBQyxVQUFVLENBQ2hCLENBQUM7U0FDSDtRQUVELE1BQU0sUUFBUSxHQUEwQixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUNuRSxJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLENBQUM7SUFDdkQsQ0FBQztJQUVEOzs7T0FHRztJQUNJLHVCQUF1QjtRQUM1QixNQUFNLFFBQVEsR0FBMEIsRUFBRSxDQUFDO1FBRTNDLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN0QyxNQUFNLEtBQUssR0FBSSxHQUFzQixDQUFDLFFBQVEsRUFBRSxjQUFjLENBQUM7WUFDL0QsSUFBSSxLQUFLLEVBQUU7Z0JBQ1QsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO2FBQzFDO1NBQ0Y7UUFFRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksc0JBQXNCO1FBQzNCLE1BQU0sUUFBUSxHQUEwQixFQUFFLENBQUM7UUFFM0MsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3RDLE1BQU0sS0FBSyxHQUFJLEdBQTJCLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQztZQUNsRSxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7U0FDMUM7UUFFRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksa0JBQWtCO1FBQ3ZCLE1BQU0sUUFBUSxHQUEwQixFQUFFLENBQUM7UUFFM0MsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3RDLE1BQU0sS0FBSyxHQUFJLEdBQWlCLENBQUMsU0FBUyxDQUFDO1lBQzNDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztTQUMxQztRQUVELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRDs7O09BR0c7SUFDSSxpQkFBaUI7UUFDdEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztJQUN2RCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksbUJBQW1CO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO0lBQ2xELENBQUM7SUFFRDs7O09BR0c7SUFDSSxtQkFBbUI7UUFDeEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksT0FBTztRQUNaLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxhQUFhLEdBQUcsNEJBQWdCLENBQUM7SUFDeEMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksUUFBUTtRQUNiLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBRU0sV0FBVyxDQUNoQixNQUFpQyxFQUNqQyxTQUFpQztRQUVqQyxPQUFPLDhCQUFrQixDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9DLENBQUM7Q0FDRjtBQUVRLDhEQUF5QiJ9
import type { BaseRecord, BatchProcessingOptions, EventSourceDataClassTypes, FailureResponse, ResultType, SuccessResponse } from './types';
/**
* Abstract class for batch processors.
*/
declare abstract class BasePartialProcessor {
exceptions: Error[];
errors: Error[];
failureMessages: EventSourceDataClassTypes[];

@@ -12,57 +9,14 @@ handler: CallableFunction;

successMessages: EventSourceDataClassTypes[];
/**
* Initializes base processor class
*/
constructor();
/**
* Call instance's handler for each record
* @returns List of processed records
*/
asyncProcess(): Promise<(SuccessResponse | FailureResponse)[]>;
/**
* Process a record with an asyncronous handler
*
* @param record Record to be processed
*/
abstract asyncProcessRecord(record: BaseRecord): Promise<SuccessResponse | FailureResponse>;
/**
* Clean class instance after processing
*/
abstract clean(): void;
/**
* Keeps track of batch records that failed processing
* @param record record that failed processing
* @param exception exception that was thrown
* @returns FailureResponse object with ["fail", exception, original record]
*/
failureHandler(record: EventSourceDataClassTypes, exception: Error): FailureResponse;
/**
* Prepare class instance before processing
*/
abstract prepare(): void;
/**
* Call instance's handler for each record
* @returns List of processed records
*/
process(): (SuccessResponse | FailureResponse)[];
/**
* Process a record with the handler
* @param record Record to be processed
*/
abstract processRecord(record: BaseRecord): SuccessResponse | FailureResponse;
/**
* Set class instance attributes before execution
* @param records List of records to be processed
* @param handler CallableFunction to process entries of "records"
* @returns this object
*/
process(): Promise<(SuccessResponse | FailureResponse)[]>;
abstract processRecord(record: BaseRecord): Promise<SuccessResponse | FailureResponse>;
abstract processRecordSync(record: BaseRecord): SuccessResponse | FailureResponse;
processSync(): (SuccessResponse | FailureResponse)[];
register(records: BaseRecord[], handler: CallableFunction, options?: BatchProcessingOptions): BasePartialProcessor;
/**
* Keeps track of batch records that were processed successfully
* @param record record that succeeded processing
* @param result result from record handler
* @returns SuccessResponse object with ["success", result, original record]
*/
successHandler(record: EventSourceDataClassTypes, result: ResultType): SuccessResponse;
}
export { BasePartialProcessor };
//# sourceMappingURL=BasePartialProcessor.d.ts.map
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.BasePartialProcessor = void 0;
/**
* Abstract class for batch processors.
*/
class BasePartialProcessor {
/**
* Initializes base processor class
*/
constructor() {
this.successMessages = [];
this.failureMessages = [];
this.exceptions = [];
this.errors = [];
this.records = [];
this.handler = new Function();
}
/**
* Call instance's handler for each record
* @returns List of processed records
*/
async asyncProcess() {
/**
* If this is an sync processor, user should have called process instead,
* so we call the method early to throw the error early thus failing fast.
*/
if (this.constructor.name === 'BatchProcessor') {
await this.asyncProcessRecord(this.records[0]);
failureHandler(record, exception) {
const entry = ['fail', exception.message, record];
this.errors.push(exception);
this.failureMessages.push(record);
return entry;
}
async process() {
if (this.constructor.name === 'BatchProcessorSync') {
await this.processRecord(this.records[0]);
}
this.prepare();
const processingPromises = this.records.map((record) => this.asyncProcessRecord(record));
const processingPromises = this.records.map((record) => this.processRecord(record));
const processedRecords = await Promise.all(processingPromises);

@@ -36,25 +28,5 @@ this.clean();

}
/**
* Keeps track of batch records that failed processing
* @param record record that failed processing
* @param exception exception that was thrown
* @returns FailureResponse object with ["fail", exception, original record]
*/
failureHandler(record, exception) {
const entry = ['fail', exception.message, record];
this.exceptions.push(exception);
this.failureMessages.push(record);
return entry;
}
/**
* Call instance's handler for each record
* @returns List of processed records
*/
process() {
/**
* If this is an async processor, user should have called processAsync instead,
* so we call the method early to throw the error early thus failing fast.
*/
if (this.constructor.name === 'AsyncBatchProcessor') {
this.processRecord(this.records[0]);
processSync() {
if (this.constructor.name === 'BatchProcessor') {
this.processRecordSync(this.records[0]);
}

@@ -64,3 +36,3 @@ this.prepare();

for (const record of this.records) {
processedRecords.push(this.processRecord(record));
processedRecords.push(this.processRecordSync(record));
}

@@ -70,8 +42,2 @@ this.clean();

}
/**
* Set class instance attributes before execution
* @param records List of records to be processed
* @param handler CallableFunction to process entries of "records"
* @returns this object
*/
register(records, handler, options) {

@@ -85,8 +51,2 @@ this.records = records;

}
/**
* Keeps track of batch records that were processed successfully
* @param record record that succeeded processing
* @param result result from record handler
* @returns SuccessResponse object with ["success", result, original record]
*/
successHandler(record, result) {

@@ -99,2 +59,1 @@ const entry = ['success', result, record];

exports.BasePartialProcessor = BasePartialProcessor;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFzZVBhcnRpYWxQcm9jZXNzb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvQmFzZVBhcnRpYWxQcm9jZXNzb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBU0E7O0dBRUc7QUFDSCxNQUFlLG9CQUFvQjtJQWFqQzs7T0FFRztJQUNIO1FBQ0UsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7O09BR0c7SUFDSSxLQUFLLENBQUMsWUFBWTtRQUN2Qjs7O1dBR0c7UUFDSCxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxLQUFLLGdCQUFnQixFQUFFO1lBQzlDLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNoRDtRQUNELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUVmLE1BQU0sa0JBQWtCLEdBQ3RCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUVoRSxNQUFNLGdCQUFnQixHQUNwQixNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUV4QyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFYixPQUFPLGdCQUFnQixDQUFDO0lBQzFCLENBQUM7SUFnQkQ7Ozs7O09BS0c7SUFDSSxjQUFjLENBQ25CLE1BQWlDLEVBQ2pDLFNBQWdCO1FBRWhCLE1BQU0sS0FBSyxHQUFvQixDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ25FLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRWxDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQU9EOzs7T0FHRztJQUNJLE9BQU87UUFDWjs7O1dBR0c7UUFDSCxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxLQUFLLHFCQUFxQixFQUFFO1lBQ25ELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3JDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRWYsTUFBTSxnQkFBZ0IsR0FBMEMsRUFBRSxDQUFDO1FBQ25FLEtBQUssTUFBTSxNQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNqQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1NBQ25EO1FBRUQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRWIsT0FBTyxnQkFBZ0IsQ0FBQztJQUMxQixDQUFDO0lBVUQ7Ozs7O09BS0c7SUFDSSxRQUFRLENBQ2IsT0FBcUIsRUFDckIsT0FBeUIsRUFDekIsT0FBZ0M7UUFFaEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFFdkIsSUFBSSxPQUFPLEVBQUU7WUFDWCxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztTQUN4QjtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksY0FBYyxDQUNuQixNQUFpQyxFQUNqQyxNQUFrQjtRQUVsQixNQUFNLEtBQUssR0FBb0IsQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRWxDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztDQUNGO0FBRVEsb0RBQW9CIn0=
import { BasePartialBatchProcessor } from './BasePartialBatchProcessor';
import type { BaseRecord, FailureResponse, SuccessResponse } from './types';
/**
* Process native partial responses from SQS, Kinesis Data Streams, and DynamoDB
*/
declare class BatchProcessor extends BasePartialBatchProcessor {
asyncProcessRecord(_record: BaseRecord): Promise<SuccessResponse | FailureResponse>;
/**
* Process a record with instance's handler
* @param record Batch record to be processed
* @returns response of success or failure
*/
processRecord(record: BaseRecord): SuccessResponse | FailureResponse;
processRecord(record: BaseRecord): Promise<SuccessResponse | FailureResponse>;
processRecordSync(_record: BaseRecord): SuccessResponse | FailureResponse;
}
export { BatchProcessor };
//# sourceMappingURL=BatchProcessor.d.ts.map

@@ -5,18 +5,8 @@ "use strict";

const BasePartialBatchProcessor_1 = require("./BasePartialBatchProcessor");
/**
* Process native partial responses from SQS, Kinesis Data Streams, and DynamoDB
*/
const errors_1 = require("./errors");
class BatchProcessor extends BasePartialBatchProcessor_1.BasePartialBatchProcessor {
async asyncProcessRecord(_record) {
throw new Error('Not implemented. Use process() instead.');
}
/**
* Process a record with instance's handler
* @param record Batch record to be processed
* @returns response of success or failure
*/
processRecord(record) {
async processRecord(record) {
try {
const data = this.toBatchType(record, this.eventType);
const result = this.handler(data, this.options);
const result = await this.handler(data, this.options?.context);
return this.successHandler(record, result);

@@ -28,4 +18,6 @@ }

}
processRecordSync(_record) {
throw new errors_1.BatchProcessingError('Not implemented. Use asyncProcess() instead.');
}
}
exports.BatchProcessor = BatchProcessor;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmF0Y2hQcm9jZXNzb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvQmF0Y2hQcm9jZXNzb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkVBQXdFO0FBR3hFOztHQUVHO0FBQ0gsTUFBTSxjQUFlLFNBQVEscURBQXlCO0lBQzdDLEtBQUssQ0FBQyxrQkFBa0IsQ0FDN0IsT0FBbUI7UUFFbkIsTUFBTSxJQUFJLEtBQUssQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksYUFBYSxDQUFDLE1BQWtCO1FBQ3JDLElBQUk7WUFDRixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDdEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBRWhELE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDNUM7UUFBQyxPQUFPLEtBQUssRUFBRTtZQUNkLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsS0FBYyxDQUFDLENBQUM7U0FDcEQ7SUFDSCxDQUFDO0NBQ0Y7QUFFUSx3Q0FBYyJ9

@@ -1,2 +0,2 @@

import { DynamoDBRecord, KinesisStreamRecord, SQSRecord } from 'aws-lambda';
import type { DynamoDBRecord, KinesisStreamRecord, SQSRecord } from 'aws-lambda';
import type { PartialItemFailureResponse, EventSourceDataClassTypes } from './types';

@@ -15,1 +15,2 @@ declare const EventType: {

export { EventType, DEFAULT_RESPONSE, DATA_CLASS_MAPPING };
//# sourceMappingURL=constants.d.ts.map

@@ -20,2 +20,1 @@ "use strict";

exports.DATA_CLASS_MAPPING = DATA_CLASS_MAPPING;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFNQSxNQUFNLFNBQVMsR0FBRztJQUNoQixHQUFHLEVBQUUsS0FBSztJQUNWLGtCQUFrQixFQUFFLG9CQUFvQjtJQUN4QyxlQUFlLEVBQUUsaUJBQWlCO0NBQzFCLENBQUM7QUFjRiw4QkFBUztBQVpsQixNQUFNLGdCQUFnQixHQUErQjtJQUNuRCxpQkFBaUIsRUFBRSxFQUFFO0NBQ3RCLENBQUM7QUFVa0IsNENBQWdCO0FBUnBDLE1BQU0sa0JBQWtCLEdBQUc7SUFDekIsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxNQUFpQyxFQUFFLEVBQUUsQ0FBQyxNQUFtQjtJQUMzRSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsTUFBaUMsRUFBRSxFQUFFLENBQ3BFLE1BQTZCO0lBQy9CLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsTUFBaUMsRUFBRSxFQUFFLENBQ2pFLE1BQXdCO0NBQzNCLENBQUM7QUFFb0MsZ0RBQWtCIn0=

@@ -1,28 +0,15 @@

/**
* Base error type for batch processing
* All errors thrown by major failures extend this base class
*/
declare class BaseBatchProcessingError extends Error {
childErrors: Error[];
msg: string;
constructor(msg: string, childErrors: Error[]);
/**
* Generates a list of errors that were generated by the major failure
* @returns Formatted string listing all the errors that occurred
*
* @example
* When all batch records fail to be processed, this will generate a string like:
* All records failed processing. 3 individual errors logged separately below.
* ,Failed to process record.
* ,Failed to process record.
* ,Failed to process record.
*/
formatErrors(parentErrorString: string): string;
declare class BatchProcessingError extends Error {
constructor(message: string);
}
/**
* When all batch records failed to be processed
*/
declare class BatchProcessingError extends BaseBatchProcessingError {
constructor(msg: string, childErrors: Error[]);
declare class FullBatchFailureError extends BatchProcessingError {
recordErrors: Error[];
constructor(childErrors: Error[]);
}
export { BaseBatchProcessingError, BatchProcessingError };
declare class SqsFifoShortCircuitError extends BatchProcessingError {
constructor();
}
declare class UnexpectedBatchTypeError extends BatchProcessingError {
constructor();
}
export { BatchProcessingError, FullBatchFailureError, SqsFifoShortCircuitError, UnexpectedBatchTypeError, };
//# sourceMappingURL=errors.d.ts.map
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.BatchProcessingError = exports.BaseBatchProcessingError = void 0;
/**
* Base error type for batch processing
* All errors thrown by major failures extend this base class
*/
class BaseBatchProcessingError extends Error {
constructor(msg, childErrors) {
super(msg);
this.msg = msg;
this.childErrors = childErrors;
exports.UnexpectedBatchTypeError = exports.SqsFifoShortCircuitError = exports.FullBatchFailureError = exports.BatchProcessingError = void 0;
const constants_1 = require("./constants");
class BatchProcessingError extends Error {
constructor(message) {
super(message);
this.name = 'BatchProcessingError';
}
/**
* Generates a list of errors that were generated by the major failure
* @returns Formatted string listing all the errors that occurred
*
* @example
* When all batch records fail to be processed, this will generate a string like:
* All records failed processing. 3 individual errors logged separately below.
* ,Failed to process record.
* ,Failed to process record.
* ,Failed to process record.
*/
formatErrors(parentErrorString) {
const errorList = [parentErrorString + '\n'];
for (const error of this.childErrors) {
errorList.push(error.message + '\n');
}
return '\n' + errorList;
}
exports.BatchProcessingError = BatchProcessingError;
class FullBatchFailureError extends BatchProcessingError {
constructor(childErrors) {
super('All records failed processing. See individual errors below.');
this.recordErrors = childErrors;
this.name = 'FullBatchFailureError';
}
}
exports.BaseBatchProcessingError = BaseBatchProcessingError;
/**
* When all batch records failed to be processed
*/
class BatchProcessingError extends BaseBatchProcessingError {
constructor(msg, childErrors) {
super(msg, childErrors);
const parentErrorString = this.message;
this.message = this.formatErrors(parentErrorString);
exports.FullBatchFailureError = FullBatchFailureError;
class SqsFifoShortCircuitError extends BatchProcessingError {
constructor() {
super('A previous record failed processing. The remaining records were not processed to avoid out-of-order delivery.');
this.name = 'SqsFifoShortCircuitError';
}
}
exports.BatchProcessingError = BatchProcessingError;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7O0dBR0c7QUFDSCxNQUFNLHdCQUF5QixTQUFRLEtBQUs7SUFLMUMsWUFBbUIsR0FBVyxFQUFFLFdBQW9CO1FBQ2xELEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNYLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7SUFDakMsQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSSxZQUFZLENBQUMsaUJBQXlCO1FBQzNDLE1BQU0sU0FBUyxHQUFhLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFFdkQsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3BDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsQ0FBQztTQUN0QztRQUVELE9BQU8sSUFBSSxHQUFHLFNBQVMsQ0FBQztJQUMxQixDQUFDO0NBQ0Y7QUFhUSw0REFBd0I7QUFYakM7O0dBRUc7QUFDSCxNQUFNLG9CQUFxQixTQUFRLHdCQUF3QjtJQUN6RCxZQUFtQixHQUFXLEVBQUUsV0FBb0I7UUFDbEQsS0FBSyxDQUFDLEdBQUcsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUN4QixNQUFNLGlCQUFpQixHQUFXLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDL0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDdEQsQ0FBQztDQUNGO0FBRWtDLG9EQUFvQiJ9
exports.SqsFifoShortCircuitError = SqsFifoShortCircuitError;
class UnexpectedBatchTypeError extends BatchProcessingError {
constructor() {
super(`Unexpected batch type. Possible values are: ${Object.values(constants_1.EventType).join(', ')}`);
this.name = 'UnexpectedBatchTypeError';
}
}
exports.UnexpectedBatchTypeError = UnexpectedBatchTypeError;

@@ -6,6 +6,7 @@ export * from './constants';

export * from './BasePartialBatchProcessor';
export * from './BatchProcessorSync';
export * from './BatchProcessor';
export * from './AsyncBatchProcessor';
export * from './processPartialResponseSync';
export * from './processPartialResponse';
export * from './asyncProcessPartialResponse';
export * from './SqsFifoPartialProcessor';
//# sourceMappingURL=index.d.ts.map

@@ -22,7 +22,6 @@ "use strict";

__exportStar(require("./BasePartialBatchProcessor"), exports);
__exportStar(require("./BatchProcessorSync"), exports);
__exportStar(require("./BatchProcessor"), exports);
__exportStar(require("./AsyncBatchProcessor"), exports);
__exportStar(require("./processPartialResponseSync"), exports);
__exportStar(require("./processPartialResponse"), exports);
__exportStar(require("./asyncProcessPartialResponse"), exports);
__exportStar(require("./SqsFifoPartialProcessor"), exports);
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDhDQUE0QjtBQUM1QiwyQ0FBeUI7QUFDekIsMENBQXdCO0FBQ3hCLHlEQUF1QztBQUN2Qyw4REFBNEM7QUFDNUMsbURBQWlDO0FBQ2pDLHdEQUFzQztBQUN0QywyREFBeUM7QUFDekMsZ0VBQThDO0FBQzlDLDREQUEwQyJ9
import { BasePartialBatchProcessor } from './BasePartialBatchProcessor';
import type { BaseRecord, BatchProcessingOptions, PartialItemFailureResponse } from './types';
/**
* Higher level function to handle batch event processing
* @param event Lambda's original event
* @param recordHandler Callable function to process each record from the batch
* @param processor Batch processor to handle partial failure cases
* @returns Lambda Partial Batch Response
*/
declare const processPartialResponse: (event: {
Records: BaseRecord[];
}, recordHandler: CallableFunction, processor: BasePartialBatchProcessor, options?: BatchProcessingOptions) => PartialItemFailureResponse;
}, recordHandler: CallableFunction, processor: BasePartialBatchProcessor, options?: BatchProcessingOptions) => Promise<PartialItemFailureResponse>;
export { processPartialResponse };
//# sourceMappingURL=processPartialResponse.d.ts.map
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.processPartialResponse = void 0;
const constants_1 = require("./constants");
/**
* Higher level function to handle batch event processing
* @param event Lambda's original event
* @param recordHandler Callable function to process each record from the batch
* @param processor Batch processor to handle partial failure cases
* @returns Lambda Partial Batch Response
*/
const processPartialResponse = (event, recordHandler, processor, options) => {
if (!event.Records) {
const eventTypes = Object.values(constants_1.EventType).toString();
throw new Error('Failed to convert event to record batch for processing.\nPlease ensure batch event is a valid ' +
eventTypes +
' event.');
const errors_1 = require("./errors");
const processPartialResponse = async (event, recordHandler, processor, options) => {
if (!event.Records || !Array.isArray(event.Records)) {
throw new errors_1.UnexpectedBatchTypeError();
}
processor.register(event.Records, recordHandler, options);
processor.process();
await processor.process();
return processor.response();
};
exports.processPartialResponse = processPartialResponse;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzc1BhcnRpYWxSZXNwb25zZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9wcm9jZXNzUGFydGlhbFJlc3BvbnNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLDJDQUF3QztBQU94Qzs7Ozs7O0dBTUc7QUFDSCxNQUFNLHNCQUFzQixHQUFHLENBQzdCLEtBQWdDLEVBQ2hDLGFBQStCLEVBQy9CLFNBQW9DLEVBQ3BDLE9BQWdDLEVBQ0osRUFBRTtJQUM5QixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRTtRQUNsQixNQUFNLFVBQVUsR0FBVyxNQUFNLENBQUMsTUFBTSxDQUFDLHFCQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMvRCxNQUFNLElBQUksS0FBSyxDQUNiLGdHQUFnRztZQUM5RixVQUFVO1lBQ1YsU0FBUyxDQUNaLENBQUM7S0FDSDtJQUVELFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFMUQsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBRXBCLE9BQU8sU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQzlCLENBQUMsQ0FBQztBQUVPLHdEQUFzQiJ9

@@ -1,23 +0,9 @@

import { BatchProcessor } from './BatchProcessor';
import { BatchProcessorSync } from './BatchProcessorSync';
import type { FailureResponse, SuccessResponse } from './types';
/**
* Process native partial responses from SQS FIFO queues
* Stops processing records when the first record fails
* The remaining records are reported as failed items
*/
declare class SqsFifoPartialProcessor extends BatchProcessor {
declare class SqsFifoPartialProcessor extends BatchProcessorSync {
constructor();
/**
* Call instance's handler for each record.
* When the first failed message is detected, the process is short-circuited
* And the remaining messages are reported as failed items
*/
process(): (SuccessResponse | FailureResponse)[];
/**
* Starting from the first failure index, fail all remaining messages and append them to the result list
* @param firstFailureIndex Index of first message that failed
* @param result List of success and failure responses with remaining messages failed
*/
processSync(): (SuccessResponse | FailureResponse)[];
shortCircuitProcessing(firstFailureIndex: number, processedRecords: (SuccessResponse | FailureResponse)[]): (SuccessResponse | FailureResponse)[];
}
export { SqsFifoPartialProcessor };
//# sourceMappingURL=SqsFifoPartialProcessor.d.ts.map
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.SqsFifoPartialProcessor = void 0;
const BatchProcessor_1 = require("./BatchProcessor");
const BatchProcessorSync_1 = require("./BatchProcessorSync");
const constants_1 = require("./constants");
/**
* Process native partial responses from SQS FIFO queues
* Stops processing records when the first record fails
* The remaining records are reported as failed items
*/
class SqsFifoPartialProcessor extends BatchProcessor_1.BatchProcessor {
const errors_1 = require("./errors");
class SqsFifoPartialProcessor extends BatchProcessorSync_1.BatchProcessorSync {
constructor() {
super(constants_1.EventType.SQS);
}
/**
* Call instance's handler for each record.
* When the first failed message is detected, the process is short-circuited
* And the remaining messages are reported as failed items
*/
process() {
processSync() {
this.prepare();

@@ -25,8 +16,6 @@ const processedRecords = [];

for (const record of this.records) {
// If we have any failed messages, it means the last message failed
// We should then short circuit the process and fail remaining messages
if (this.failureMessages.length != 0) {
return this.shortCircuitProcessing(currentIndex, processedRecords);
}
processedRecords.push(this.processRecord(record));
processedRecords.push(this.processRecordSync(record));
currentIndex++;

@@ -37,7 +26,2 @@ }

}
/**
* Starting from the first failure index, fail all remaining messages and append them to the result list
* @param firstFailureIndex Index of first message that failed
* @param result List of success and failure responses with remaining messages failed
*/
shortCircuitProcessing(firstFailureIndex, processedRecords) {

@@ -47,3 +31,3 @@ const remainingRecords = this.records.slice(firstFailureIndex);

const data = this.toBatchType(record, this.eventType);
processedRecords.push(this.failureHandler(data, new Error('A previous record failed processing')));
processedRecords.push(this.failureHandler(data, new errors_1.SqsFifoShortCircuitError()));
}

@@ -55,2 +39,1 @@ this.clean();

exports.SqsFifoPartialProcessor = SqsFifoPartialProcessor;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3FzRmlmb1BhcnRpYWxQcm9jZXNzb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvU3FzRmlmb1BhcnRpYWxQcm9jZXNzb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscURBQWtEO0FBQ2xELDJDQUF3QztBQUd4Qzs7OztHQUlHO0FBQ0gsTUFBTSx1QkFBd0IsU0FBUSwrQkFBYztJQUNsRDtRQUNFLEtBQUssQ0FBQyxxQkFBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksT0FBTztRQUNaLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUVmLE1BQU0sZ0JBQWdCLEdBQTBDLEVBQUUsQ0FBQztRQUNuRSxJQUFJLFlBQVksR0FBRyxDQUFDLENBQUM7UUFDckIsS0FBSyxNQUFNLE1BQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2pDLG1FQUFtRTtZQUNuRSx1RUFBdUU7WUFDdkUsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7Z0JBQ3BDLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLFlBQVksRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO2FBQ3BFO1lBRUQsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUNsRCxZQUFZLEVBQUUsQ0FBQztTQUNoQjtRQUVELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUViLE9BQU8sZ0JBQWdCLENBQUM7SUFDMUIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxzQkFBc0IsQ0FDM0IsaUJBQXlCLEVBQ3pCLGdCQUF1RDtRQUV2RCxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFFL0QsS0FBSyxNQUFNLE1BQU0sSUFBSSxnQkFBZ0IsRUFBRTtZQUNyQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDdEQsZ0JBQWdCLENBQUMsSUFBSSxDQUNuQixJQUFJLENBQUMsY0FBYyxDQUNqQixJQUFJLEVBQ0osSUFBSSxLQUFLLENBQUMscUNBQXFDLENBQUMsQ0FDakQsQ0FDRixDQUFDO1NBQ0g7UUFFRCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFYixPQUFPLGdCQUFnQixDQUFDO0lBQzFCLENBQUM7Q0FDRjtBQUVRLDBEQUF1QiJ9

@@ -1,2 +0,2 @@

import { Context, DynamoDBRecord, KinesisStreamRecord, SQSRecord } from 'aws-lambda';
import type { Context, DynamoDBRecord, KinesisStreamRecord, SQSRecord } from 'aws-lambda';
type BatchProcessingOptions = {

@@ -20,1 +20,2 @@ context: Context;

export type { BatchProcessingOptions, BaseRecord, EventSourceDataClassTypes, ResultType, SuccessResponse, FailureResponse, PartialItemFailures, PartialItemFailureResponse, };
//# sourceMappingURL=types.d.ts.map
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
{
"name": "@aws-lambda-powertools/batch",
"version": "1.12.1-beta",
"version": "1.13.0",
"description": "The batch processing package for the Powertools for AWS Lambda (TypeScript) library.",

@@ -5,0 +5,0 @@ "author": {

@@ -63,5 +63,5 @@ # Powertools for AWS Lambda (TypeScript) - Batch Processing Utility <!-- omit in toc -->

import {
BatchProcessor,
BatchProcessorSync,
EventType,
processPartialResponse,
processPartialResponseSync,
} from '@aws-lambda-powertools/batch';

@@ -76,3 +76,3 @@ import { Logger } from '@aws-lambda-powertools/logger';

const processor = new BatchProcessor(EventType.SQS);
const processor = new BatchProcessorSync(EventType.SQS);
const logger = new Logger();

@@ -92,3 +92,3 @@

): Promise<SQSBatchResponse> => {
return processPartialResponse(event, recordHandler, processor, {
return processPartialResponseSync(event, recordHandler, processor, {
context,

@@ -106,5 +106,5 @@ });

import {
BatchProcessor,
BatchProcessorSync,
EventType,
processPartialResponse,
processPartialResponseSync,
} from '@aws-lambda-powertools/batch';

@@ -119,3 +119,3 @@ import { Logger } from '@aws-lambda-powertools/logger';

const processor = new BatchProcessor(EventType.KinesisDataStreams);
const processor = new BatchProcessorSync(EventType.KinesisDataStreams);
const logger = new Logger();

@@ -133,3 +133,3 @@

): Promise<KinesisStreamBatchResponse> => {
return processPartialResponse(event, recordHandler, processor, {
return processPartialResponseSync(event, recordHandler, processor, {
context,

@@ -142,9 +142,9 @@ });

When using DynamoDB Streams as a Lambda event source, you can use the `BatchProcessor` with the `EventType.DynamoDBStreams` to process the records. The response will be a `DynamoDBBatchResponse` which contains a list of items that failed to be processed.
When using DynamoDB Streams as a Lambda event source, you can use the `BatchProcessorSync` with the `EventType.DynamoDBStreams` to process the records. The response will be a `DynamoDBBatchResponse` which contains a list of items that failed to be processed.
```ts
import {
BatchProcessor,
BatchProcessorSync,
EventType,
processPartialResponse,
processPartialResponseSync,
} from '@aws-lambda-powertools/batch';

@@ -159,3 +159,3 @@ import { Logger } from '@aws-lambda-powertools/logger';

const processor = new BatchProcessor(EventType.DynamoDBStreams);
const processor = new BatchProcessorSync(EventType.DynamoDBStreams);
const logger = new Logger();

@@ -178,3 +178,3 @@

): Promise<DynamoDBBatchResponse> => {
return processPartialResponse(event, recordHandler, processor, {
return processPartialResponseSync(event, recordHandler, processor, {
context,

@@ -187,9 +187,9 @@ });

If your use case allows you to process multiple records at the same time without conflicting with each other, you can use the `AsyncBatchProcessor` to process records asynchronously. This will create an array of promises that will be resolved once all records have been processed.
If your use case allows you to process multiple records at the same time without conflicting with each other, you can use the `BatchProcessor` to process records asynchronously. This will create an array of promises that will be resolved once all records have been processed.
```ts
import {
AsyncBatchProcessor,
BatchProcessor,
EventType,
asyncProcessPartialResponse,
processPartialResponse,
} from '@aws-lambda-powertools/batch';

@@ -204,3 +204,3 @@ import axios from 'axios'; // axios is an external dependency

const processor = new AsyncBatchProcessor(EventType.SQS);
const processor = new BatchProcessor(EventType.SQS);

@@ -219,3 +219,3 @@ const recordHandler = async (record: SQSRecord): Promise<number> => {

): Promise<SQSBatchResponse> => {
return await asyncProcessPartialResponse(event, recordHandler, processor, {
return await processPartialResponse(event, recordHandler, processor, {
context,

@@ -260,2 +260,3 @@ });

* [Certible](https://www.certible.com/)
* [tecRacer GmbH & Co. KG](https://www.tecracer.com/)

@@ -262,0 +263,0 @@ ### Sharing your work