From 6413672cda5b954785be21c5df0d4cd25c9e1959 Mon Sep 17 00:00:00 2001 From: Roman Geints Date: Tue, 20 Jul 2021 16:53:39 +0300 Subject: [PATCH] Do not polyfill `{Uint8Array,Float64Array}#slice` if it already exists --- src/external/nacl-fast.js | 65 ++++++++++++++++++++------------------- 1 file changed, 34 insertions(+), 31 deletions(-) diff --git a/src/external/nacl-fast.js b/src/external/nacl-fast.js index cb88475..a37ac0c 100644 --- a/src/external/nacl-fast.js +++ b/src/external/nacl-fast.js @@ -3,41 +3,44 @@ // polyfill for TypedArray.prototype.slice() -Uint8Array.prototype.slice = function(start, end) { - var len = this.length; - var relativeStart = start; - var k = (relativeStart < 0) ? max(len + relativeStart, 0) : Math.min(relativeStart, len); - var relativeEnd = (end === undefined) ? len : end; - var final = (relativeEnd < 0) ? max(len + relativeEnd, 0) : Math.min(relativeEnd, len); - var count = final - k; - var c = this.constructor; - var a = new c(count); - var n = 0; - while (k < final) { - a[n] = JSON.parse(JSON.stringify(this[k])); - k++; - n++; +if (!Uint8Array.prototype.slice) { + Uint8Array.prototype.slice = function(start, end) { + var len = this.length; + var relativeStart = start; + var k = (relativeStart < 0) ? Math.max(len + relativeStart, 0) : Math.min(relativeStart, len); + var relativeEnd = (end === undefined) ? len : end; + var final = (relativeEnd < 0) ? Math.max(len + relativeEnd, 0) : Math.min(relativeEnd, len); + var count = final - k; + var c = this.constructor; + var a = new c(count); + var n = 0; + while (k < final) { + a[n] = JSON.parse(JSON.stringify(this[k])); + k++; + n++; + } + return a; } - return a; } - -Float64Array.prototype.slice = function(start, end) { - var len = this.length; - var relativeStart = start; - var k = (relativeStart < 0) ? max(len + relativeStart, 0) : Math.min(relativeStart, len); - var relativeEnd = (end === undefined) ? len : end; - var final = (relativeEnd < 0) ? max(len + relativeEnd, 0) : Math.min(relativeEnd, len); - var count = final - k; - var c = this.constructor; - var a = new c(count); - var n = 0; - while (k < final) { - a[n] = JSON.parse(JSON.stringify(this[k])); - k++; - n++; +if (!Float64Array.prototype.slice) { + Float64Array.prototype.slice = function(start, end) { + var len = this.length; + var relativeStart = start; + var k = (relativeStart < 0) ? Math.max(len + relativeStart, 0) : Math.min(relativeStart, len); + var relativeEnd = (end === undefined) ? len : end; + var final = (relativeEnd < 0) ? Math.max(len + relativeEnd, 0) : Math.min(relativeEnd, len); + var count = final - k; + var c = this.constructor; + var a = new c(count); + var n = 0; + while (k < final) { + a[n] = JSON.parse(JSON.stringify(this[k])); + k++; + n++; + } + return a; } - return a; } // Ported in 2014 by Dmitry Chestnykh and Devi Mandiri.