Skip to content

Commit 1a5ac15

Browse files
committed
transformTuplesReply can be a BlobStringReply or SimpleStringReply
1 parent bf11c35 commit 1a5ac15

File tree

2 files changed

+16
-12
lines changed

2 files changed

+16
-12
lines changed

packages/client/lib/commands/generic-transformers.ts

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -103,42 +103,46 @@ export const transformNullableDoubleReply = {
103103
3: undefined as unknown as () => DoubleReply | NullReply
104104
};
105105

106-
export function createTransformTuplesReplyFunc(preserve?: any, typeMapping?: TypeMapping) {
107-
return (reply: ArrayReply<BlobStringReply>) => {
108-
return transformTuplesReply(reply, preserve, typeMapping);
106+
export interface Stringable {
107+
toString(): string;
108+
}
109+
110+
export function createTransformTuplesReplyFunc<T extends Stringable>(preserve?: any, typeMapping?: TypeMapping) {
111+
return (reply: ArrayReply<T>) => {
112+
return transformTuplesReply<T>(reply, preserve, typeMapping);
109113
};
110114
}
111115

112-
export function transformTuplesReply(
113-
reply: ArrayReply<BlobStringReply>,
116+
export function transformTuplesReply<T extends Stringable>(
117+
reply: ArrayReply<T>,
114118
preserve?: any,
115119
typeMapping?: TypeMapping
116-
): MapReply<BlobStringReply, BlobStringReply> {
120+
): MapReply<T , T> {
117121
const mapType = typeMapping ? typeMapping[RESP_TYPES.MAP] : undefined;
118122

119123
const inferred = reply as unknown as UnwrapReply<typeof reply>
120124

121125
switch (mapType) {
122126
case Array: {
123-
return reply as unknown as MapReply<BlobStringReply, BlobStringReply>;
127+
return reply as unknown as MapReply<T, T>;
124128
}
125129
case Map: {
126130
const ret = new Map<string, BlobStringReply>;
127131

128132
for (let i = 0; i < inferred.length; i += 2) {
129-
ret.set(inferred[i].toString(), inferred[i + 1]);
133+
ret.set(inferred[i].toString(), inferred[i + 1] as any);
130134
}
131135

132-
return ret as unknown as MapReply<BlobStringReply, BlobStringReply>;;
136+
return ret as unknown as MapReply<T, T>;;
133137
}
134138
default: {
135139
const ret: Record<string, BlobStringReply> = Object.create(null);
136140

137141
for (let i = 0; i < inferred.length; i += 2) {
138-
ret[inferred[i].toString()] = inferred[i + 1];
142+
ret[inferred[i].toString()] = inferred[i + 1] as any;
139143
}
140144

141-
return ret as unknown as MapReply<BlobStringReply, BlobStringReply>;;
145+
return ret as unknown as MapReply<T, T>;;
142146
}
143147
}
144148
}

packages/client/lib/sentinel/commands/SENTINEL_MASTER.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ export default {
66
return ['SENTINEL', 'MASTER', dbname];
77
},
88
transformReply: {
9-
2: transformTuplesReply,
9+
2: transformTuplesReply<BlobStringReply>,
1010
3: undefined as unknown as () => MapReply<BlobStringReply, BlobStringReply>
1111
}
1212
} as const satisfies Command;

0 commit comments

Comments
 (0)