Skip to content

Commit 31be3da

Browse files
committed
Fix DynamoDBStreamChangeRecordSchema.dynamodb type
Before: // z.infer<typeof DynamoDBStreamChangeRecordSchema> dynamodb: { Keys: Record<string, Record<string, any>>; SizeBytes: number; ApproximateCreationDateTime?: number | undefined; NewImage?: Record<string, any> | undefined; OldImage?: Record<string, any> | undefined; }; After: dynamodb: { Keys: Record<string, Record<string, any>>; SequenceNumber: string; SizeBytes: number; StreamViewType: "NEW_IMAGE" | "OLD_IMAGE" | "NEW_AND_OLD_IMAGES" | "KEYS_ONLY"; ApproximateCreationDateTime?: number | undefined; NewImage?: Record<string, any> | undefined; OldImage?: Record<string, any> | undefined; } | { Keys: Record<string, Record<string, any>>; SizeBytes: number; ApproximateCreationDateTime?: number | undefined; NewImage?: Record<...> | undefined; OldImage?: Record<...> | undefined; }; This converts `unmarshallDynamoDBTransform` to a generic function and specifies the expected type for both usages.
1 parent ec6cf2e commit 31be3da

File tree

1 file changed

+21
-7
lines changed

1 file changed

+21
-7
lines changed

packages/parser/src/schemas/dynamodb.ts

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,18 +19,28 @@ const DynamoDBStreamChangeRecordBaseSchema = z.object({
1919
]),
2020
});
2121

22+
type DynamoDBStreamChangeRecordBase = z.infer<
23+
typeof DynamoDBStreamChangeRecordBaseSchema
24+
>;
25+
2226
const DynamoDBStreamToKinesisChangeRecordSchema =
2327
DynamoDBStreamChangeRecordBaseSchema.omit({
2428
SequenceNumber: true,
2529
StreamViewType: true,
2630
});
2731

28-
const unmarshallDynamoDBTransform = (
29-
object:
30-
| z.infer<typeof DynamoDBStreamChangeRecordBaseSchema>
31-
| z.infer<typeof DynamoDBStreamToKinesisChangeRecordSchema>,
32+
type DynamoDBStreamToKinesisChangeRecord = z.infer<
33+
typeof DynamoDBStreamToKinesisChangeRecordSchema
34+
>;
35+
36+
const unmarshallDynamoDBTransform = <
37+
T extends
38+
| DynamoDBStreamChangeRecordBase
39+
| DynamoDBStreamToKinesisChangeRecord,
40+
>(
41+
object: T,
3242
ctx: z.RefinementCtx
33-
) => {
43+
): T => {
3444
const result = { ...object };
3545

3646
const unmarshallAttributeValue = (
@@ -73,7 +83,11 @@ const unmarshallDynamoDBTransform = (
7383
};
7484

7585
const DynamoDBStreamChangeRecordSchema =
76-
DynamoDBStreamChangeRecordBaseSchema.transform(unmarshallDynamoDBTransform);
86+
DynamoDBStreamChangeRecordBaseSchema.transform(
87+
unmarshallDynamoDBTransform<
88+
DynamoDBStreamChangeRecordBase | DynamoDBStreamToKinesisChangeRecord
89+
>
90+
);
7791

7892
const UserIdentitySchema = z.object({
7993
type: z.enum(['Service']),
@@ -138,7 +152,7 @@ const DynamoDBStreamToKinesisRecordSchema = DynamoDBStreamRecordSchema.extend({
138152
tableName: z.string(),
139153
userIdentity: UserIdentitySchema.nullish(),
140154
dynamodb: DynamoDBStreamToKinesisChangeRecordSchema.transform(
141-
unmarshallDynamoDBTransform
155+
unmarshallDynamoDBTransform<DynamoDBStreamToKinesisChangeRecord>
142156
),
143157
}).omit({
144158
eventVersion: true,

0 commit comments

Comments
 (0)