]> zoso.dev Git - buffer.git/commitdiff
Add fromArrayView for TypedArrays and DataViews. Fast path for Uint8Array.
authorKoushik Dutta <koushd@gmail.com>
Sat, 7 Dec 2019 00:28:35 +0000 (16:28 -0800)
committerKoushik Dutta <koushd@gmail.com>
Mon, 9 Dec 2019 21:10:00 +0000 (13:10 -0800)
index.js

index 19b0468a0abe20e311c0015cb694415e45fed5a7..cb712b17d1edec5cbd690257250690644eac3fdf 100644 (file)
--- a/index.js
+++ b/index.js
@@ -127,7 +127,7 @@ function from (value, encodingOrOffset, length) {
   }
 
   if (ArrayBuffer.isView(value)) {
-    return fromArrayLike(value)
+    return fromArrayView(value)
   }
 
   if (value == null) {
@@ -269,6 +269,14 @@ function fromArrayLike (array) {
   return buf
 }
 
+function fromArrayView (arrayView) {
+  if (isInstance(arrayView, Uint8Array)) {
+    var copy = Uint8Array.from(arrayView)
+    return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)
+  }
+  return fromArrayLike(arrayView)
+}
+
 function fromArrayBuffer (array, byteOffset, length) {
   if (byteOffset < 0 || array.byteLength < byteOffset) {
     throw new RangeError('"offset" is outside of buffer bounds')