From 4ec2946f4b371a1183ee7108cb1d85d68067d3b3 Mon Sep 17 00:00:00 2001 From: Corey Butler Date: Fri, 27 Nov 2020 17:14:04 -0600 Subject: [PATCH 1/2] Updated dropped dependencies, allowing npm install to function. --- package.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index f6582ddd6..e833d7381 100644 --- a/package.json +++ b/package.json @@ -40,10 +40,10 @@ "babel-plugin-istanbul": "^4.1.5", "babel-preset-env": "^1.6.1", "babel-register": "^6.16.3", - "chai": "^3.5.0", + "chai": "^4.2.0", "chai-as-promised": "^7.1.1", - "chai-iterator": "^1.1.1", - "chai-string": "^1.3.0", + "chai-iterator": "^3.0.2", + "chai-string": "^1.5.0", "codecov": "^3.0.0", "cross-env": "^5.1.3", "form-data": "^2.3.1", @@ -61,10 +61,10 @@ }, "dependencies": { "@mattiasbuelens/web-streams-polyfill": "^0.3.2", - "busboy": "^0.3.0", - "formdata-node": "^1.5.1" + "busboy": "^0.3.1", + "formdata-node": "^2.4.0" }, "peerDependencies": { - "form-data": ">= 2.1.0" + "form-data": ">=3.0.0" } } From 37f9cccee602a691a245a41c492cd4e0076e2608 Mon Sep 17 00:00:00 2001 From: Corey Butler Date: Fri, 27 Nov 2020 17:15:05 -0600 Subject: [PATCH 2/2] Added missing Blob.arrayBuffer and Blob.text methods to be more compliant with CloudFlare workers/browser environments. --- src/blob.js | 42 ++++++++++++++++-------------------------- 1 file changed, 16 insertions(+), 26 deletions(-) diff --git a/src/blob.js b/src/blob.js index b5fa64565..b4b867abc 100644 --- a/src/blob.js +++ b/src/blob.js @@ -1,8 +1,10 @@ // Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js // (MIT licensed) +import { TextDecoder } from 'util' export const BUFFER = Symbol('buffer'); const TYPE = Symbol('type'); +const decoder = new TextDecoder('utf-8') export default class Blob { constructor() { @@ -41,43 +43,31 @@ export default class Blob { this[TYPE] = type; } } - get size() { + get size () { return this[BUFFER].length; } - get type() { + get type () { return this[TYPE]; } - slice() { + arrayBuffer (start = 0, end) { const size = this.size; - const start = arguments[0]; - const end = arguments[1]; - let relativeStart, relativeEnd; - if (start === undefined) { - relativeStart = 0; - } else if (start < 0) { - relativeStart = Math.max(size + start, 0); - } else { - relativeStart = Math.min(start, size); - } - if (end === undefined) { - relativeEnd = size; - } else if (end < 0) { - relativeEnd = Math.max(size + end, 0); - } else { - relativeEnd = Math.min(end, size); - } - const span = Math.max(relativeEnd - relativeStart, 0); + start = start < 0 ? Math.max(size + start, 0) : (start !== 0 ? Math.min(start, size) : start) + end = !end ? size : (size < 0 ? Math.max(size + end, 0) : Math.min(end, size)) - const buffer = this[BUFFER]; - const slicedBuffer = buffer.slice( - relativeStart, - relativeStart + span - ); + const span = Math.max(end - start) + const buffer = this[BUFFER] + return buffer.slice(start, start + span) + } + slice () { + const slicedBuffer = this.arrayBuffer(...arguments) const blob = new Blob([], { type: arguments[2] }); blob[BUFFER] = slicedBuffer; return blob; } + text () { + return decoder.decode(this[BUFFER]).toString() + } } Object.defineProperties(Blob.prototype, {