UNPKG

@aws-lambda-powertools/parser

Version:
91 lines (90 loc) 3.55 kB
"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;