| 127 | } |
| 128 | |
| 129 | export class FileReader { |
| 130 | readonly EMPTY = 0 |
| 131 | readonly LOADING = 1 |
| 132 | readonly DONE = 2 |
| 133 | |
| 134 | error?: Error |
| 135 | onabort?: FileReaderListener |
| 136 | onerror?: FileReaderListener |
| 137 | onload?: FileReaderListener |
| 138 | onloadend?: FileReaderListener |
| 139 | onloadstart?: FileReaderListener |
| 140 | onprogress?: FileReaderListener |
| 141 | readyState = this.EMPTY |
| 142 | result?: NodeBuffer | string |
| 143 | |
| 144 | private readonly emitter = new EventEmitter() |
| 145 | private file?: NodeFile |
| 146 | private fileStream?: NodeFileStream |
| 147 | private format?: ReadFormat |
| 148 | private encoding?: BufferEncoding |
| 149 | private readonly registeredEvents = new Set<FileReaderEventName>() |
| 150 | |
| 151 | nodeChunkedEncoding = false |
| 152 | |
| 153 | addEventListener ( eventName: FileReaderEventName, callback: FileReaderListener ) { |
| 154 | this.emitter.on( eventName, callback ) |
| 155 | } |
| 156 | |
| 157 | removeEventListener ( eventName: FileReaderEventName, callback: FileReaderListener ) { |
| 158 | this.emitter.removeListener( eventName, callback ) |
| 159 | } |
| 160 | |
| 161 | dispatchEvent ( eventName: FileReaderEventName, payload?: FileReaderEventPayload ) { |
| 162 | this.emitter.emit( eventName, payload ) |
| 163 | } |
| 164 | |
| 165 | on ( eventName: string | symbol, listener: ( ...args: any[] ) => void ) { |
| 166 | this.emitter.on( eventName, listener ) |
| 167 | } |
| 168 | |
| 169 | setNodeChunkedEncoding ( value: boolean ) { |
| 170 | this.nodeChunkedEncoding = value |
| 171 | } |
| 172 | |
| 173 | abort () { |
| 174 | if ( this.readyState === this.DONE ) { |
| 175 | return |
| 176 | } |
| 177 | |
| 178 | this.readyState = this.DONE |
| 179 | this.dispatchEvent( 'abort' ) |
| 180 | } |
| 181 | |
| 182 | readAsArrayBuffer ( file: NodeFile ) { |
| 183 | this.readFile( file, 'buffer' ) |
| 184 | } |
| 185 | |
| 186 | readAsBinaryString ( file: NodeFile ) { |
nothing calls this directly
no outgoing calls
no test coverage detected