Skip to content

Commit deb71cf

Browse files
committed
--wip-- [skip ci]
1 parent c0b4986 commit deb71cf

1 file changed

Lines changed: 5 additions & 7 deletions

File tree

docs/v5-to-v6.md

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,32 +18,30 @@ Those are now aligned to return the proper types. For more details on protocol t
1818

1919
## Stabilized APIs
2020
In v5, some command transforms were unstable under RESP3. In v6, those commands are stabilized and normalized:
21+
These stabilization changes are RESP3-only: RESP2 transforms are unchanged.
22+
They are breaking only for clients using RESP3 (including v5 users who explicitly opted into RESP3, and v6 users on the new default RESP3).
2123

2224
| Package | Command | Return type change | Notes |
2325
|---|---|---|---|
2426
| `@redis/client` | `HOTKEYS GET` | `ReplyUnion -> HotkeysGetReply \| null` | RESP3 reply now normalized to stable structured output. |
25-
| `@redis/client` | `MODULE LIST` | `ModuleListReply -> ModuleListReply` | Static type is unchanged; RESP3 map-like payload is normalized to `{ name, ver }` entries. |
2627
| `@redis/client` | `XREAD` | `ReplyUnion -> StreamsMessagesReply \| null` | RESP3 reply is normalized to v4/v5-compatible stream list shape. |
2728
| `@redis/client` | `XREADGROUP` | `ReplyUnion -> StreamsMessagesReply \| null` | RESP3 reply is normalized to v4/v5-compatible stream list shape. |
2829
| `@redis/search` | `FT.AGGREGATE` | `ReplyUnion -> AggregateReply` | RESP3 map/array variants normalized to aggregate reply shape. |
2930
| `@redis/search` | `FT.AGGREGATE WITHCURSOR` | `ReplyUnion -> AggregateWithCursorReply` | Cursor + results are normalized for RESP3. |
30-
| `@redis/search` | `FT.CURSOR READ` | `ReplyUnion -> AggregateWithCursorReply` | Inherits `FT.AGGREGATE WITHCURSOR` transform changes. |
31+
| `@redis/search` | `FT.CURSOR READ` | `ReplyUnion -> AggregateWithCursorReply` | RESP3 cursor-read map/array wrapper variants are normalized to a stable `{ total, results, cursor }` reply shape. |
3132
| `@redis/search` | `FT.SEARCH` | `ReplyUnion -> SearchReply` | RESP3 map-like payload normalized to `{ total, documents }`. |
3233
| `@redis/search` | `FT.SEARCH NOCONTENT` | `ReplyUnion -> SearchNoContentReply` | RESP3 normalized through `FT.SEARCH` then projected to ids. |
3334
| `@redis/search` | `FT.SPELLCHECK` | `ReplyUnion -> SpellCheckReply` | RESP3 result/suggestion map variants normalized. |
3435
| `@redis/search` | `FT.HYBRID` | `ReplyUnion -> HybridSearchResult` | RESP3 map-like payload normalized to hybrid result object. |
3536
| `@redis/search` | `FT.INFO` | `ReplyUnion -> InfoReply` | RESP3 map-like payload normalized to stable info object shape. |
3637
| `@redis/search` | `FT.PROFILE SEARCH` | `ReplyUnion -> ProfileReplyResp2` | RESP3 profile/results wrappers normalized (Redis 7.4/8 layouts). |
3738
| `@redis/search` | `FT.PROFILE AGGREGATE` | `ReplyUnion -> ProfileReplyResp2` | RESP3 profile/results wrappers normalized (Redis 7.4/8 layouts). |
38-
| `@redis/search` | `FT.CONFIG GET` | `Record<string, string \| null> -> Record<string, string \| null>` | Static type is unchanged; map-like RESP3 payload is now normalized correctly. |
3939
| `@redis/time-series` | `TS.INFO` | `ReplyUnion -> InfoReply` | RESP3 map/array variants normalized to `InfoReply`. |
4040
| `@redis/time-series` | `TS.INFO DEBUG` | `ReplyUnion -> InfoDebugReply` | RESP3 `keySelfName`/`chunks` payload normalized. |
4141
| `@redis/time-series` | `TS.MRANGE GROUPBY` | `{ sources: Array<string>; samples: Array<{ timestamp: number; value: number }> } -> { samples: Array<{ timestamp: number; value: number }> }` | `sources` removed from RESP3 grouped reply. |
42-
| `@redis/time-series` | `TS.MREVRANGE GROUPBY` | `{ sources: Array<string>; samples: Array<{ timestamp: number; value: number }> } -> { samples: Array<{ timestamp: number; value: number }> }` | Inherits `TS.MRANGE GROUPBY` transform changes. |
43-
| `@redis/time-series` | `TS.MRANGE SELECTED_LABELS` | `Record<string, { labels: Record<string, string \| null>; samples: Array<{ timestamp: number; value: number }> }> -> Record<string, { labels: Record<string, string \| null>; samples: Array<{ timestamp: number; value: number }> }>` | Static type is unchanged; tuple extraction fixed for RESP3 selected-labels payload. |
44-
| `@redis/time-series` | `TS.MREVRANGE SELECTED_LABELS` | `Record<string, { labels: Record<string, string \| null>; samples: Array<{ timestamp: number; value: number }> }> -> Record<string, { labels: Record<string, string \| null>; samples: Array<{ timestamp: number; value: number }> }>` | Inherits `TS.MRANGE SELECTED_LABELS` transform changes. |
42+
| `@redis/time-series` | `TS.MREVRANGE GROUPBY` | `{ sources: Array<string>; samples: Array<{ timestamp: number; value: number }> } -> { samples: Array<{ timestamp: number; value: number }> }` | In RESP3 grouped reverse-range replies, `sources` is removed and output now includes only `{ samples }`. |
4543
| `@redis/time-series` | `TS.MRANGE SELECTED_LABELS GROUPBY` | `{ labels: Record<string, string \| null>; sources: Array<string>; samples: Array<{ timestamp: number; value: number }> } -> { labels: Record<string, string \| null>; samples: Array<{ timestamp: number; value: number }> }` | `sources` removed from RESP3 selected-labels grouped reply. |
46-
| `@redis/time-series` | `TS.MREVRANGE SELECTED_LABELS GROUPBY` | `{ labels: Record<string, string \| null>; sources: Array<string>; samples: Array<{ timestamp: number; value: number }> } -> { labels: Record<string, string \| null>; samples: Array<{ timestamp: number; value: number }> }` | Inherits `TS.MRANGE SELECTED_LABELS GROUPBY` transform changes. |
44+
| `@redis/time-series` | `TS.MREVRANGE SELECTED_LABELS GROUPBY` | `{ labels: Record<string, string \| null>; sources: Array<string>; samples: Array<{ timestamp: number; value: number }> } -> { labels: Record<string, string \| null>; samples: Array<{ timestamp: number; value: number }> }` | In RESP3 selected-labels grouped reverse-range replies, `sources` is removed and output now includes `{ labels, samples }`. |
4745

4846
## Object Prototype Normalization
4947
In v6, object-like replies are normalized to plain objects (`{}` / `Object.defineProperties({}, ...)`) instead of null-prototype objects (`Object.create(null)`).

0 commit comments

Comments
 (0)