diff options
Diffstat (limited to 'school/node_modules/jsdom/lib/jsdom/living/file-api/FileReader-impl.js')
-rw-r--r-- | school/node_modules/jsdom/lib/jsdom/living/file-api/FileReader-impl.js | 130 |
1 files changed, 0 insertions, 130 deletions
diff --git a/school/node_modules/jsdom/lib/jsdom/living/file-api/FileReader-impl.js b/school/node_modules/jsdom/lib/jsdom/living/file-api/FileReader-impl.js deleted file mode 100644 index 9ade893..0000000 --- a/school/node_modules/jsdom/lib/jsdom/living/file-api/FileReader-impl.js +++ /dev/null @@ -1,130 +0,0 @@ -"use strict"; - -const whatwgEncoding = require("whatwg-encoding"); -const MIMEType = require("whatwg-mimetype"); -const DOMException = require("domexception/webidl2js-wrapper"); -const EventTargetImpl = require("../events/EventTarget-impl").implementation; -const ProgressEvent = require("../generated/ProgressEvent"); -const { setupForSimpleEventAccessors } = require("../helpers/create-event-accessor"); -const { fireAnEvent } = require("../helpers/events"); -const { copyToArrayBufferInNewRealm } = require("../helpers/binary-data"); - -const READY_STATES = Object.freeze({ - EMPTY: 0, - LOADING: 1, - DONE: 2 -}); - -const events = ["loadstart", "progress", "load", "abort", "error", "loadend"]; - -class FileReaderImpl extends EventTargetImpl { - constructor(globalObject, args, privateData) { - super(globalObject, args, privateData); - - this.error = null; - this.readyState = READY_STATES.EMPTY; - this.result = null; - - this._globalObject = globalObject; - this._ownerDocument = globalObject.document; - this._terminated = false; - } - - readAsArrayBuffer(file) { - this._readFile(file, "buffer"); - } - readAsBinaryString(file) { - this._readFile(file, "binaryString"); - } - readAsDataURL(file) { - this._readFile(file, "dataURL"); - } - readAsText(file, encoding) { - this._readFile(file, "text", whatwgEncoding.labelToName(encoding) || "UTF-8"); - } - - abort() { - if (this.readyState === READY_STATES.EMPTY || this.readyState === READY_STATES.DONE) { - this.result = null; - return; - } - - if (this.readyState === READY_STATES.LOADING) { - this.readyState = READY_STATES.DONE; - this.result = null; - } - - this._terminated = true; - this._fireProgressEvent("abort"); - this._fireProgressEvent("loadend"); - } - - _fireProgressEvent(name, props) { - fireAnEvent(name, this, ProgressEvent, props); - } - - _readFile(file, format, encoding) { - if (this.readyState === READY_STATES.LOADING) { - throw DOMException.create(this._globalObject, [ - "The object is in an invalid state.", - "InvalidStateError" - ]); - } - - this.readyState = READY_STATES.LOADING; - - setImmediate(() => { - if (this._terminated) { - this._terminated = false; - return; - } - - this._fireProgressEvent("loadstart"); - - let data = file._buffer; - if (!data) { - data = Buffer.alloc(0); - } - this._fireProgressEvent("progress", { - lengthComputable: !isNaN(file.size), - total: file.size, - loaded: data.length - }); - - setImmediate(() => { - if (this._terminated) { - this._terminated = false; - return; - } - - switch (format) { - case "binaryString": { - this.result = data.toString("binary"); - break; - } - case "dataURL": { - // Spec seems very unclear here; see https://github.com/w3c/FileAPI/issues/104. - const contentType = MIMEType.parse(file.type) || "application/octet-stream"; - this.result = `data:${contentType};base64,${data.toString("base64")}`; - break; - } - case "text": { - this.result = whatwgEncoding.decode(data, encoding); - break; - } - case "buffer": - default: { - this.result = copyToArrayBufferInNewRealm(data, this._globalObject); - break; - } - } - this.readyState = READY_STATES.DONE; - this._fireProgressEvent("load"); - this._fireProgressEvent("loadend"); - }); - }); - } -} -setupForSimpleEventAccessors(FileReaderImpl.prototype, events); - -exports.implementation = FileReaderImpl; |