1- import { z , type ZodSchema } from 'zod' ;
1+ import type { ZodSchema , z } from 'zod' ;
2+ import { ParseError } from '../errors.js' ;
23import { DynamoDBStreamSchema } from '../schemas/index.js' ;
4+ import type { DynamoDBStreamEnvelopeResponse } from '../types/envelope.js' ;
35import type { ParsedResult , ParsedResultError } from '../types/index.js' ;
46import { Envelope } from './envelope.js' ;
5- import { ParseError } from '../errors.js' ;
6- import type { DynamoDBStreamEnvelopeResponse } from '../types/envelope.js' ;
77
88/**
99 * DynamoDB Stream Envelope to extract data within NewImage/OldImage
1010 *
1111 * Note: Values are the parsed models. Images' values can also be None, and
1212 * length of the list is the record's amount in the original event.
1313 */
14- export class DynamoDBStreamEnvelope extends Envelope {
15- public static parse < T extends ZodSchema > (
14+ export const DynamoDBStreamEnvelope = {
15+ parse < T extends ZodSchema > (
1616 data : unknown ,
1717 schema : T
1818 ) : DynamoDBStreamEnvelopeResponse < z . infer < T > > [ ] {
1919 const parsedEnvelope = DynamoDBStreamSchema . parse ( data ) ;
2020
2121 return parsedEnvelope . Records . map ( ( record ) => {
2222 return {
23- NewImage : super . parse ( record . dynamodb . NewImage , schema ) ,
24- OldImage : super . parse ( record . dynamodb . OldImage , schema ) ,
23+ NewImage : Envelope . parse ( record . dynamodb . NewImage , schema ) ,
24+ OldImage : Envelope . parse ( record . dynamodb . OldImage , schema ) ,
2525 } ;
2626 } ) ;
27- }
27+ } ,
2828
29- public static safeParse < T extends ZodSchema > (
30- data : unknown ,
31- schema : T
32- ) : ParsedResult {
29+ safeParse < T extends ZodSchema > ( data : unknown , schema : T ) : ParsedResult {
3330 const parsedEnvelope = DynamoDBStreamSchema . safeParse ( data ) ;
3431
3532 if ( ! parsedEnvelope . success ) {
@@ -44,8 +41,14 @@ export class DynamoDBStreamEnvelope extends Envelope {
4441 const parsedLogEvents : DynamoDBStreamEnvelopeResponse < z . infer < T > > [ ] = [ ] ;
4542
4643 for ( const record of parsedEnvelope . data . Records ) {
47- const parsedNewImage = super . safeParse ( record . dynamodb . NewImage , schema ) ;
48- const parsedOldImage = super . safeParse ( record . dynamodb . OldImage , schema ) ;
44+ const parsedNewImage = Envelope . safeParse (
45+ record . dynamodb . NewImage ,
46+ schema
47+ ) ;
48+ const parsedOldImage = Envelope . safeParse (
49+ record . dynamodb . OldImage ,
50+ schema
51+ ) ;
4952 if ( ! parsedNewImage . success || ! parsedOldImage . success ) {
5053 return {
5154 success : false ,
@@ -58,17 +61,16 @@ export class DynamoDBStreamEnvelope extends Envelope {
5861 } ) ,
5962 originalEvent : data ,
6063 } ;
61- } else {
62- parsedLogEvents . push ( {
63- NewImage : parsedNewImage . data ,
64- OldImage : parsedOldImage . data ,
65- } ) ;
6664 }
65+ parsedLogEvents . push ( {
66+ NewImage : parsedNewImage . data ,
67+ OldImage : parsedOldImage . data ,
68+ } ) ;
6769 }
6870
6971 return {
7072 success : true ,
7173 data : parsedLogEvents ,
7274 } ;
73- }
74- }
75+ } ,
76+ } ;
0 commit comments