From 8961385062bc4933811b90b029aa30142d51c58a Mon Sep 17 00:00:00 2001 From: tsctx <91457664+tsctx@users.noreply.github.com> Date: Thu, 4 Jul 2024 18:27:48 +0900 Subject: [PATCH] update docs, add more test --- README.md | 1 + docs/docs/api/Dispatcher.md | 12 +++++++----- docs/docs/api/Fetch.md | 1 + lib/api/readable.js | 2 +- test/readable.js | 21 +++++++++++++++++++++ 5 files changed, 31 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 4336ef06836..2ac58b6695e 100644 --- a/README.md +++ b/README.md @@ -84,6 +84,7 @@ The `body` mixins are the most common way to format the request/response body. M - [`.arrayBuffer()`](https://fetch.spec.whatwg.org/#dom-body-arraybuffer) - [`.blob()`](https://fetch.spec.whatwg.org/#dom-body-blob) +- [`.bytes()`](https://fetch.spec.whatwg.org/#dom-body-bytes) - [`.json()`](https://fetch.spec.whatwg.org/#dom-body-json) - [`.text()`](https://fetch.spec.whatwg.org/#dom-body-text) diff --git a/docs/docs/api/Dispatcher.md b/docs/docs/api/Dispatcher.md index ecc3cfd61f7..1c153e6a7f2 100644 --- a/docs/docs/api/Dispatcher.md +++ b/docs/docs/api/Dispatcher.md @@ -488,11 +488,13 @@ The `RequestOptions.method` property should not be value `'CONNECT'`. `body` contains the following additional [body mixin](https://fetch.spec.whatwg.org/#body-mixin) methods and properties: -- `text()` -- `json()` -- `arrayBuffer()` -- `body` -- `bodyUsed` +* [`.arrayBuffer()`](https://fetch.spec.whatwg.org/#dom-body-arraybuffer) +* [`.blob()`](https://fetch.spec.whatwg.org/#dom-body-blob) +* [`.bytes()`](https://fetch.spec.whatwg.org/#dom-body-bytes) +* [`.json()`](https://fetch.spec.whatwg.org/#dom-body-json) +* [`.text()`](https://fetch.spec.whatwg.org/#dom-body-text) +* `body` +* `bodyUsed` `body` can not be consumed twice. For example, calling `text()` after `json()` throws `TypeError`. diff --git a/docs/docs/api/Fetch.md b/docs/docs/api/Fetch.md index c3406f128dc..00c349847dc 100644 --- a/docs/docs/api/Fetch.md +++ b/docs/docs/api/Fetch.md @@ -28,6 +28,7 @@ This API is implemented as per the standard, you can find documentation on [MDN] - [`.arrayBuffer()`](https://fetch.spec.whatwg.org/#dom-body-arraybuffer) - [`.blob()`](https://fetch.spec.whatwg.org/#dom-body-blob) +- [`.bytes()`](https://fetch.spec.whatwg.org/#dom-body-bytes) - [`.formData()`](https://fetch.spec.whatwg.org/#dom-body-formdata) - [`.json()`](https://fetch.spec.whatwg.org/#dom-body-json) - [`.text()`](https://fetch.spec.whatwg.org/#dom-body-text) diff --git a/lib/api/readable.js b/lib/api/readable.js index 51be2907856..2a597c006e7 100644 --- a/lib/api/readable.js +++ b/lib/api/readable.js @@ -326,7 +326,7 @@ function chunksConcat (chunks, length) { // fast-path return new Uint8Array(chunks[0]) } - const buffer = new Uint8Array(length) + const buffer = new Uint8Array(Buffer.allocUnsafeSlow(length).buffer) let offset = 0 for (let i = 0; i < chunks.length; ++i) { diff --git a/test/readable.js b/test/readable.js index dd0631daf8b..e6a6ed0dccd 100644 --- a/test/readable.js +++ b/test/readable.js @@ -83,6 +83,27 @@ describe('Readable', () => { t.deepStrictEqual(arrayBuffer, expected) }) + test('.bytes()', async function (t) { + t = tspl(t, { plan: 1 }) + + function resume () { + } + function abort () { + } + const r = new Readable({ resume, abort }) + + r.push(Buffer.from('hello')) + r.push(Buffer.from(' world')) + + process.nextTick(() => { + r.push(null) + }) + + const bytes = await r.bytes() + + t.deepStrictEqual(bytes, new TextEncoder().encode('hello world')) + }) + test('.json()', async function (t) { t = tspl(t, { plan: 1 })