From 82d44f4909faebe0ce425e7645e5ea0136645c7f Mon Sep 17 00:00:00 2001 From: Yagiz Nizipli Date: Fri, 18 Nov 2022 18:32:57 -0500 Subject: [PATCH 1/3] util: add isArrayBufferDetached method --- doc/api/util.md | 21 +++++++++++++++++++++ lib/internal/util/types.js | 13 ++++++++++++- lib/internal/webstreams/readablestream.js | 6 +++--- lib/internal/webstreams/util.js | 17 ++--------------- src/node_types.cc | 13 +++++++++++++ test/parallel/test-util-types.js | 2 +- typings/internalBinding/types.d.ts | 1 + 7 files changed, 53 insertions(+), 20 deletions(-) diff --git a/doc/api/util.md b/doc/api/util.md index 69549ebd0da993..6d3ed728e2888a 100644 --- a/doc/api/util.md +++ b/doc/api/util.md @@ -2024,6 +2024,27 @@ util.types.isAnyArrayBuffer(new ArrayBuffer()); // Returns true util.types.isAnyArrayBuffer(new SharedArrayBuffer()); // Returns true ``` +### `util.types.isArrayBufferDetached(value)` + + + +* `value` {any} +* Returns: {boolean} + +Returns `true` if the value is a built-in [`ArrayBuffer`][] and +is detached. Detached arrays have a byte length of 0, which prevents +JavaScript from ever accessing underlying backing store. + +For example, we can end up with a detached buffer when using a BYOB +(bring your own buffer) on a ReadableStream. + +```js +util.types.isArrayBufferDetached(null); // Returns false +util.types.isArrayBufferDetached(new ArrayBuffer()); // Returns false +``` + ### `util.types.isArrayBufferView(value)`