Skip to content

Commit 62b11f1

Browse files
authored
Merge pull request #51 from msgpack/simplify_decode_arg
simplify type of decode()'s first arg; ArrayLike<number> includes Uint8Array, anyway
2 parents e4b4e78 + 96e1152 commit 62b11f1

File tree

4 files changed

+16
-17
lines changed

4 files changed

+16
-17
lines changed

README.md

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,11 @@ npm install @msgpack/msgpack
4646

4747
It encodes `data` and returns a byte array as `Uint8Array`.
4848

49-
### `decode(buffer: ArrayLike<number> | Uint8Array, options?: DecodeOptions): unknown`
49+
### `decode(buffer: ArrayLike<number>, options?: DecodeOptions): unknown`
5050

51-
It decodes `buffer` in a byte buffer and returns decoded data as `uknown`.
51+
It decodes `buffer` encoded as MessagePack, and returns a decoded object as `uknown`.
52+
53+
`buffer` must be an array of bytes, which is typically `Uint8Array`.
5254

5355
#### DecodeOptions
5456

@@ -63,19 +65,19 @@ maxExtLength | number | `4_294_967_295` (UINT32_MAX)
6365

6466
You can use `max${Type}Length` to limit the length of each type decoded.
6567

66-
### `decodeAsync(stream: AsyncIterable<Uint8Array | ArrayLike<number>> | ReadableStream<Uint8Array | ArrayLike<number>>, options?: DecodeAsyncOptions): Promise<unknown>`
68+
### `decodeAsync(stream: AsyncIterable<ArrayLike<number>> | ReadableStream<ArrayLike<number>>, options?: DecodeAsyncOptions): Promise<unknown>`
6769

6870
It decodes `stream` in an async iterable of byte arrays and returns decoded data as `uknown` wrapped in `Promise`. This function works asyncronously.
6971

7072
Note that `decodeAsync()` acceps the same options as `decode()`.
7173

72-
### `decodeArrayStream(stream: AsyncIterable<Uint8Array | ArrayLike<number>> | ReadableStream<Uint8Array | ArrayLike<number>>, options?: DecodeAsyncOptions): AsyncIterable<unknown>`
74+
### `decodeArrayStream(stream: AsyncIterable< ArrayLike<number>> | ReadableStream<ArrayLike<number>>, options?: DecodeAsyncOptions): AsyncIterable<unknown>`
7375

7476
It is alike to `decodeAsync()`, but only accepts an array of items as the input `stream`, and emits the decoded item one by one.
7577

7678
It throws errors when the input is not an array.
7779

78-
### `decodeStream(stream: AsyncIterable<Uint8Array | ArrayLike<number>> | ReadableStream<Uint8Array | ArrayLike<number>>, options?: DecodeAsyncOptions): AsyncIterable<unknown>`
80+
### `decodeStream(stream: AsyncIterable<ArrayLike<number>> | ReadableStream<ArrayLike<number>>, options?: DecodeAsyncOptions): AsyncIterable<unknown>`
7981

8082
It is like to `decodeAsync()` and `decodeArrayStream()`, but the input `stream` consists of independent MessagePack items.
8183

src/Decoder.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -68,13 +68,13 @@ export class Decoder {
6868
readonly maxExtLength = DEFAULT_MAX_LENGTH,
6969
) {}
7070

71-
setBuffer(buffer: ArrayLike<number> | Uint8Array): void {
71+
setBuffer(buffer: ArrayLike<number>): void {
7272
this.bytes = ensureUint8Array(buffer);
7373
this.view = createDataView(this.bytes);
7474
this.pos = 0;
7575
}
7676

77-
appendBuffer(buffer: Uint8Array | ArrayLike<number>) {
77+
appendBuffer(buffer: ArrayLike<number>) {
7878
if (this.headByte === HEAD_BYTE_REQUIRED && !this.hasRemaining()) {
7979
this.setBuffer(buffer);
8080
} else {
@@ -105,7 +105,7 @@ export class Decoder {
105105
return object;
106106
}
107107

108-
async decodeOneAsync(stream: AsyncIterable<ArrayLike<number> | Uint8Array>): Promise<unknown> {
108+
async decodeOneAsync(stream: AsyncIterable<ArrayLike<number>>): Promise<unknown> {
109109
let decoded = false;
110110
let object: unknown;
111111
for await (const buffer of stream) {
@@ -140,7 +140,7 @@ export class Decoder {
140140
);
141141
}
142142

143-
async *decodeStream(stream: AsyncIterable<ArrayLike<number> | Uint8Array>) {
143+
async *decodeStream(stream: AsyncIterable<ArrayLike<number>>) {
144144
for await (const buffer of stream) {
145145
this.appendBuffer(buffer);
146146

@@ -159,7 +159,7 @@ export class Decoder {
159159
}
160160
}
161161

162-
async *decodeArrayStream(stream: AsyncIterable<ArrayLike<number> | Uint8Array>) {
162+
async *decodeArrayStream(stream: AsyncIterable<ArrayLike<number>>) {
163163
let headerParsed = false;
164164
let decoded = false;
165165
let itemsLeft = 0;

src/decode.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,7 @@ export type DecodeOptions = Partial<
3535

3636
export const defaultDecodeOptions: DecodeOptions = {};
3737

38-
export function decode(
39-
buffer: ReadonlyArray<number> | Uint8Array,
40-
options: DecodeOptions = defaultDecodeOptions,
41-
): unknown {
38+
export function decode(buffer: ArrayLike<number>, options: DecodeOptions = defaultDecodeOptions): unknown {
4239
const decoder = new Decoder(
4340
options.extensionCodec,
4441
options.maxStrLength,

src/decodeAsync.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ export type DecodeAsyncOptions = DecodeOptions;
66
export const defaultDecodeAsyncOptions = defaultDecodeOptions;
77

88
export async function decodeAsync(
9-
streamLike: ReadableStreamLike<Uint8Array | ArrayLike<number>>,
9+
streamLike: ReadableStreamLike<ArrayLike<number>>,
1010
options: DecodeAsyncOptions = defaultDecodeOptions,
1111
): Promise<unknown> {
1212
const stream = ensureAsyncIterabe(streamLike);
@@ -23,7 +23,7 @@ export async function decodeAsync(
2323
}
2424

2525
export function decodeArrayStream(
26-
streamLike: ReadableStreamLike<Uint8Array | ArrayLike<number>>,
26+
streamLike: ReadableStreamLike<ArrayLike<number>>,
2727
options: DecodeAsyncOptions = defaultDecodeOptions,
2828
) {
2929
const stream = ensureAsyncIterabe(streamLike);
@@ -41,7 +41,7 @@ export function decodeArrayStream(
4141
}
4242

4343
export function decodeStream(
44-
streamLike: ReadableStreamLike<Uint8Array | ArrayLike<number>>,
44+
streamLike: ReadableStreamLike<ArrayLike<number>>,
4545
options: DecodeAsyncOptions = defaultDecodeOptions,
4646
) {
4747
const stream = ensureAsyncIterabe(streamLike);

0 commit comments

Comments
 (0)