File Explorer

/var/lang/lib/node_modules/npm/node_modules/undici/lib/web/fileapi

This explorer reads the filesystem of the server it runs on, so /workspace/user isn't present here. Browsing and the terminal still work against this server's own disk from /.

filereader.js8.3 KB · 345 lines
'use strict' const {  staticPropertyDescriptors,  readOperation,  fireAProgressEvent} = require('./util')const {  kState,  kError,  kResult,  kEvents,  kAborted} = require('./symbols')const { webidl } = require('../fetch/webidl')const { kEnumerableProperty } = require('../../core/util') class FileReader extends EventTarget {  constructor () {    super()     this[kState] = 'empty'    this[kResult] = null    this[kError] = null    this[kEvents] = {      loadend: null,      error: null,      abort: null,      load: null,      progress: null,      loadstart: null    }  }   /**   * @see https://w3c.github.io/FileAPI/#dfn-readAsArrayBuffer   * @param {import('buffer').Blob} blob   */  readAsArrayBuffer (blob) {    webidl.brandCheck(this, FileReader)     webidl.argumentLengthCheck(arguments, 1, 'FileReader.readAsArrayBuffer')     blob = webidl.converters.Blob(blob, { strict: false })     // The readAsArrayBuffer(blob) method, when invoked,    // must initiate a read operation for blob with ArrayBuffer.    readOperation(this, blob, 'ArrayBuffer')  }   /**   * @see https://w3c.github.io/FileAPI/#readAsBinaryString   * @param {import('buffer').Blob} blob   */  readAsBinaryString (blob) {    webidl.brandCheck(this, FileReader)     webidl.argumentLengthCheck(arguments, 1, 'FileReader.readAsBinaryString')     blob = webidl.converters.Blob(blob, { strict: false })     // The readAsBinaryString(blob) method, when invoked,    // must initiate a read operation for blob with BinaryString.    readOperation(this, blob, 'BinaryString')  }   /**   * @see https://w3c.github.io/FileAPI/#readAsDataText   * @param {import('buffer').Blob} blob   * @param {string?} encoding   */  readAsText (blob, encoding = undefined) {    webidl.brandCheck(this, FileReader)     webidl.argumentLengthCheck(arguments, 1, 'FileReader.readAsText')     blob = webidl.converters.Blob(blob, { strict: false })     if (encoding !== undefined) {      encoding = webidl.converters.DOMString(encoding, 'FileReader.readAsText', 'encoding')    }     // The readAsText(blob, encoding) method, when invoked,    // must initiate a read operation for blob with Text and encoding.    readOperation(this, blob, 'Text', encoding)  }   /**   * @see https://w3c.github.io/FileAPI/#dfn-readAsDataURL   * @param {import('buffer').Blob} blob   */  readAsDataURL (blob) {    webidl.brandCheck(this, FileReader)     webidl.argumentLengthCheck(arguments, 1, 'FileReader.readAsDataURL')     blob = webidl.converters.Blob(blob, { strict: false })     // The readAsDataURL(blob) method, when invoked, must    // initiate a read operation for blob with DataURL.    readOperation(this, blob, 'DataURL')  }   /**   * @see https://w3c.github.io/FileAPI/#dfn-abort   */  abort () {    // 1. If this's state is "empty" or if this's state is    //    "done" set this's result to null and terminate    //    this algorithm.    if (this[kState] === 'empty' || this[kState] === 'done') {      this[kResult] = null      return    }     // 2. If this's state is "loading" set this's state to    //    "done" and set this's result to null.    if (this[kState] === 'loading') {      this[kState] = 'done'      this[kResult] = null    }     // 3. If there are any tasks from this on the file reading    //    task source in an affiliated task queue, then remove    //    those tasks from that task queue.    this[kAborted] = true     // 4. Terminate the algorithm for the read method being processed.    // TODO     // 5. Fire a progress event called abort at this.    fireAProgressEvent('abort', this)     // 6. If this's state is not "loading", fire a progress    //    event called loadend at this.    if (this[kState] !== 'loading') {      fireAProgressEvent('loadend', this)    }  }   /**   * @see https://w3c.github.io/FileAPI/#dom-filereader-readystate   */  get readyState () {    webidl.brandCheck(this, FileReader)     switch (this[kState]) {      case 'empty': return this.EMPTY      case 'loading': return this.LOADING      case 'done': return this.DONE    }  }   /**   * @see https://w3c.github.io/FileAPI/#dom-filereader-result   */  get result () {    webidl.brandCheck(this, FileReader)     // The result attribute’s getter, when invoked, must return    // this's result.    return this[kResult]  }   /**   * @see https://w3c.github.io/FileAPI/#dom-filereader-error   */  get error () {    webidl.brandCheck(this, FileReader)     // The error attribute’s getter, when invoked, must return    // this's error.    return this[kError]  }   get onloadend () {    webidl.brandCheck(this, FileReader)     return this[kEvents].loadend  }   set onloadend (fn) {    webidl.brandCheck(this, FileReader)     if (this[kEvents].loadend) {      this.removeEventListener('loadend', this[kEvents].loadend)    }     if (typeof fn === 'function') {      this[kEvents].loadend = fn      this.addEventListener('loadend', fn)    } else {      this[kEvents].loadend = null    }  }   get onerror () {    webidl.brandCheck(this, FileReader)     return this[kEvents].error  }   set onerror (fn) {    webidl.brandCheck(this, FileReader)     if (this[kEvents].error) {      this.removeEventListener('error', this[kEvents].error)    }     if (typeof fn === 'function') {      this[kEvents].error = fn      this.addEventListener('error', fn)    } else {      this[kEvents].error = null    }  }   get onloadstart () {    webidl.brandCheck(this, FileReader)     return this[kEvents].loadstart  }   set onloadstart (fn) {    webidl.brandCheck(this, FileReader)     if (this[kEvents].loadstart) {      this.removeEventListener('loadstart', this[kEvents].loadstart)    }     if (typeof fn === 'function') {      this[kEvents].loadstart = fn      this.addEventListener('loadstart', fn)    } else {      this[kEvents].loadstart = null    }  }   get onprogress () {    webidl.brandCheck(this, FileReader)     return this[kEvents].progress  }   set onprogress (fn) {    webidl.brandCheck(this, FileReader)     if (this[kEvents].progress) {      this.removeEventListener('progress', this[kEvents].progress)    }     if (typeof fn === 'function') {      this[kEvents].progress = fn      this.addEventListener('progress', fn)    } else {      this[kEvents].progress = null    }  }   get onload () {    webidl.brandCheck(this, FileReader)     return this[kEvents].load  }   set onload (fn) {    webidl.brandCheck(this, FileReader)     if (this[kEvents].load) {      this.removeEventListener('load', this[kEvents].load)    }     if (typeof fn === 'function') {      this[kEvents].load = fn      this.addEventListener('load', fn)    } else {      this[kEvents].load = null    }  }   get onabort () {    webidl.brandCheck(this, FileReader)     return this[kEvents].abort  }   set onabort (fn) {    webidl.brandCheck(this, FileReader)     if (this[kEvents].abort) {      this.removeEventListener('abort', this[kEvents].abort)    }     if (typeof fn === 'function') {      this[kEvents].abort = fn      this.addEventListener('abort', fn)    } else {      this[kEvents].abort = null    }  }} // https://w3c.github.io/FileAPI/#dom-filereader-emptyFileReader.EMPTY = FileReader.prototype.EMPTY = 0// https://w3c.github.io/FileAPI/#dom-filereader-loadingFileReader.LOADING = FileReader.prototype.LOADING = 1// https://w3c.github.io/FileAPI/#dom-filereader-doneFileReader.DONE = FileReader.prototype.DONE = 2 Object.defineProperties(FileReader.prototype, {  EMPTY: staticPropertyDescriptors,  LOADING: staticPropertyDescriptors,  DONE: staticPropertyDescriptors,  readAsArrayBuffer: kEnumerableProperty,  readAsBinaryString: kEnumerableProperty,  readAsText: kEnumerableProperty,  readAsDataURL: kEnumerableProperty,  abort: kEnumerableProperty,  readyState: kEnumerableProperty,  result: kEnumerableProperty,  error: kEnumerableProperty,  onloadstart: kEnumerableProperty,  onprogress: kEnumerableProperty,  onload: kEnumerableProperty,  onabort: kEnumerableProperty,  onerror: kEnumerableProperty,  onloadend: kEnumerableProperty,  [Symbol.toStringTag]: {    value: 'FileReader',    writable: false,    enumerable: false,    configurable: true  }}) Object.defineProperties(FileReader, {  EMPTY: staticPropertyDescriptors,  LOADING: staticPropertyDescriptors,  DONE: staticPropertyDescriptors}) module.exports = {  FileReader}