@aws-lambda-powertools/parser
Version:
The parser package for the Powertools for AWS Lambda (TypeScript) library.
91 lines (90 loc) • 3.55 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.KinesisDynamoDBStreamSchema = exports.KinesisDataStreamSchema = exports.KinesisDataStreamRecordPayload = exports.KinesisDataStreamRecord = void 0;
const zod_1 = require("zod");
const index_js_1 = require("../helpers/index.js");
const dynamodb_js_1 = require("./dynamodb.js");
const KinesisDataStreamRecordPayload = zod_1.z.object({
kinesisSchemaVersion: zod_1.z.string(),
partitionKey: zod_1.z.string(),
sequenceNumber: zod_1.z.string(),
approximateArrivalTimestamp: zod_1.z.number(),
data: (0, index_js_1.Base64Encoded)(zod_1.z.any()),
});
exports.KinesisDataStreamRecordPayload = KinesisDataStreamRecordPayload;
const KinesisDataStreamRecord = zod_1.z.object({
eventSource: zod_1.z.literal('aws:kinesis'),
eventVersion: zod_1.z.string(),
eventID: zod_1.z.string(),
eventName: zod_1.z.literal('aws:kinesis:record'),
awsRegion: zod_1.z.string(),
invokeIdentityArn: zod_1.z.string(),
eventSourceARN: zod_1.z.string(),
kinesis: KinesisDataStreamRecordPayload,
});
exports.KinesisDataStreamRecord = KinesisDataStreamRecord;
const KinesisDynamoDBStreamSchema = zod_1.z.object({
Records: zod_1.z.array(KinesisDataStreamRecord.extend({
kinesis: KinesisDataStreamRecordPayload.extend({
data: (0, index_js_1.Base64Encoded)(zod_1.z.any()).pipe(dynamodb_js_1.DynamoDBStreamToKinesisRecord),
}),
})),
});
exports.KinesisDynamoDBStreamSchema = KinesisDynamoDBStreamSchema;
/**
* Zod schema for Kinesis Data Stream event
*
* @example
* ```json
* {
* "Records": [
* {
* "kinesis": {
* "kinesisSchemaVersion": "1.0",
* "partitionKey": "1",
* "sequenceNumber": "49590338271490256608559692538361571095921575989136588898",
* "data": "SGVsbG8sIHRoaXMgaXMgYSB0ZXN0Lg==",
* "approximateArrivalTimestamp": 1607497475.000
* },
* "eventSource": "aws:kinesis",
* "eventVersion": "1.0",
* "eventID": "shardId-000000000006:49590338271490256608559692538361571095921575989136588898",
* "eventName": "aws:kinesis:record",
* "invokeIdentityArn": "arn:aws:iam::123456789012:role/lambda-kinesis-role",
* "awsRegion": "us-east-1",
* "eventSourceARN": "arn:aws:kinesis:us-east-1:123456789012:stream/lambda-stream"
* }
* ],
* "window": {
* "start": "2020-12-09T07:04:00Z",
* "end": "2020-12-09T07:06:00Z"
* },
* "state": {
* "1": 282,
* "2": 715
* },
* "shardId": "shardId-000000000006",
* "eventSourceARN": "arn:aws:kinesis:us-east-1:123456789012:stream/lambda-stream",
* "isFinalInvokeForWindow": false,
* "isWindowTerminatedEarly": false
* }
*```
* @see {@link KinesisDataStreamEvent | `KinesisDataStreamEvent`}
* @see {@link https://docs.aws.amazon.com/lambda/latest/dg/services-kinesis-windows.html#streams-tumbling-processing}
*
*/
const KinesisDataStreamSchema = zod_1.z.object({
Records: zod_1.z.array(KinesisDataStreamRecord).min(1),
window: zod_1.z
.object({
start: zod_1.z.iso.datetime(),
end: zod_1.z.iso.datetime(),
})
.optional(),
state: zod_1.z.record(zod_1.z.string(), zod_1.z.unknown()).optional(),
shardId: zod_1.z.string().optional(),
eventSourceARN: zod_1.z.string().optional(),
isFinalInvokeForWindow: zod_1.z.boolean().optional(),
isWindowTerminatedEarly: zod_1.z.boolean().optional(),
});
exports.KinesisDataStreamSchema = KinesisDataStreamSchema;