Skip to content

Commit 0f3fe9b

Browse files
authored
BREAKING: Change return type of the streams API to Record (#168)
1 parent be1a987 commit 0f3fe9b

2 files changed

Lines changed: 40 additions & 34 deletions

File tree

stream.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ export interface XId {
77

88
export interface XMessage {
99
xid: XId;
10-
field_values: Map<string, string>;
10+
field_values: Record<string, string>;
1111
}
1212

1313
export interface XKeyId {
@@ -215,15 +215,15 @@ export interface XClaimOpts {
215215
export function parseXMessage(
216216
raw: XReadIdData,
217217
): XMessage {
218-
const fieldValues: Map<string, string> = new Map();
218+
const fieldValues: Record<string, string> = {};
219219
let f: string | undefined = undefined;
220220

221221
let m = 0;
222222
for (const data of raw[1]) {
223223
if (m % 2 === 0) {
224224
f = data;
225225
} else if (f) {
226-
fieldValues.set(f, data);
226+
fieldValues[f] = data;
227227
}
228228
m++;
229229
}

tests/stream_test.ts

Lines changed: 37 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -123,9 +123,10 @@ suite.test("xread", async () => {
123123
{ air: "ball", friend: "table" },
124124
{ elements: 10 },
125125
);
126-
const exampleMap = new Map<string, string>();
127-
exampleMap.set("air", "horn");
128-
exampleMap.set("friend", "fiend");
126+
const exampleMap = {
127+
air: "horn",
128+
friend: "fiend",
129+
};
129130
const c = await client.xadd(key2, [1001, 1], exampleMap, { elements: 10 });
130131
assert(c != null);
131132

@@ -140,17 +141,20 @@ suite.test("xread", async () => {
140141

141142
assert(v != null);
142143

143-
const expectedAnimals = new Map();
144-
expectedAnimals.set("cat", "moo");
145-
expectedAnimals.set("dog", "honk");
146-
expectedAnimals.set("duck", "yodel");
147-
148-
const expectedWeird = new Map();
149-
expectedWeird.set("air", "ball");
150-
expectedWeird.set("friend", "table");
151-
const expectedOdd = new Map();
152-
expectedOdd.set("air", "horn");
153-
expectedOdd.set("friend", "fiend");
144+
const expectedAnimals = {
145+
cat: "moo",
146+
dog: "honk",
147+
duck: "yodel",
148+
};
149+
150+
const expectedWeird = {
151+
air: "ball",
152+
friend: "table",
153+
};
154+
const expectedOdd = {
155+
air: "horn",
156+
friend: "fiend",
157+
};
154158
assertEquals(v, [
155159
{
156160
key,
@@ -246,7 +250,7 @@ suite.test("xreadgroup but no ack", async () => {
246250
assertEquals(actualFirstStream.messages[0].xid, addedId);
247251
assertEquals(actualFirstStream.messages.length, 1);
248252
assertEquals(
249-
actualFirstStream.messages[0].field_values.get("anyfield"),
253+
actualFirstStream.messages[0].field_values["anyfield"],
250254
"anyval",
251255
);
252256

@@ -298,9 +302,10 @@ suite.test("xadd with map then xread", async () => {
298302

299303
assert(v != null);
300304

301-
const expectedMap = new Map();
302-
expectedMap.set("zoo", "theorize");
303-
expectedMap.set("gable", "train");
305+
const expectedMap = {
306+
zoo: "theorize",
307+
gable: "train",
308+
};
304309

305310
assertEquals(v, [
306311
{
@@ -335,9 +340,10 @@ suite.test("xadd with maxlen on map then xread", async () => {
335340

336341
assert(v != null);
337342

338-
const expectedMap = new Map();
339-
expectedMap.set("hop", "4");
340-
expectedMap.set("blip", "5");
343+
const expectedMap = {
344+
hop: "4",
345+
blip: "5",
346+
};
341347

342348
assertEquals(v, [
343349
{ key, messages: [{ xid: addedId, field_values: expectedMap }] },
@@ -387,7 +393,7 @@ suite.test("unique message per consumer", async () => {
387393

388394
assertEquals(data[0].messages.length, 1);
389395

390-
assertEquals(data[0].messages[0].field_values.get("target"), payload);
396+
assertEquals(data[0].messages[0].field_values["target"], payload);
391397
}
392398

393399
await cleanupStream(client, key);
@@ -442,16 +448,16 @@ suite.test("xrange and xrevrange", async () => {
442448
const basicResult = await client.xrange(key, "-", "+");
443449
assertEquals(basicResult.length, 1);
444450
assertEquals(basicResult[0].xid, firstId);
445-
assertEquals(basicResult[0].field_values.get("f"), "v0");
451+
assertEquals(basicResult[0].field_values["f"], "v0");
446452

447453
const secondId = await client.xadd(key, "*", { f: "v1" });
448454
const revResult = await client.xrevrange(key, "+", "-");
449455

450456
assertEquals(revResult.length, 2);
451457
assertEquals(revResult[0].xid, secondId);
452-
assertEquals(revResult[0].field_values.get("f"), "v1");
458+
assertEquals(revResult[0].field_values["f"], "v1");
453459
assertEquals(revResult[1].xid, firstId);
454-
assertEquals(revResult[1].field_values.get("f"), "v0");
460+
assertEquals(revResult[1].field_values["f"], "v0");
455461

456462
// count should limit results
457463
const lim = await client.xrange(key, "-", "+", 1);
@@ -508,11 +514,11 @@ suite.test("xclaim and xpending, all options", async () => {
508514
assertEquals(firstClaimed.messages.length, 2);
509515
assertEquals(
510516
firstClaimed.messages[0].field_values,
511-
new Map(Object.entries({ field: "foo" })),
517+
{ field: "foo" },
512518
);
513519
assertEquals(
514520
firstClaimed.messages[1].field_values,
515-
new Map(Object.entries({ field: "bar" })),
521+
{ field: "bar" },
516522
);
517523

518524
// ACK these messages so we can try XPENDING/XCLAIM
@@ -630,11 +636,11 @@ suite.test("xclaim and xpending, all options", async () => {
630636
assertEquals(thirdClaimed.messages.length, 2);
631637
assertEquals(
632638
thirdClaimed.messages[0].field_values,
633-
new Map(Object.entries({ field: "woof", farm: "chicken" })),
639+
{ field: "woof", farm: "chicken" },
634640
);
635641
assertEquals(
636642
thirdClaimed.messages[1].field_values,
637-
new Map(Object.entries({ field: "bop", farm: "duck" })),
643+
{ field: "bop", farm: "duck" },
638644
);
639645
});
640646
});
@@ -652,11 +658,11 @@ suite.test("xinfo", async () => {
652658
assertEquals(basicStreamInfo.lastGeneratedId, { unixMs: 2, seqNo: 0 });
653659
assertEquals(basicStreamInfo.firstEntry, {
654660
xid: { unixMs: 1, seqNo: 0 },
655-
field_values: new Map(Object.entries({ hello: "no" })),
661+
field_values: { hello: "no" },
656662
});
657663
assertEquals(basicStreamInfo.lastEntry, {
658664
xid: { unixMs: 2, seqNo: 0 },
659-
field_values: new Map(Object.entries({ hello: "yes" })),
665+
field_values: { hello: "yes" },
660666
});
661667

662668
// Let's do an XREADGROUP so that we see some entries in the PEL

0 commit comments

Comments
 (0)