You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					74 lines
				
				2.3 KiB
			
		
		
			
		
	
	
					74 lines
				
				2.3 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								import { EventEmitter } from 'events'
							 | 
						||
| 
								 | 
							
								import workerThreads from 'worker_threads'
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								interface ThreadStreamOptions {
							 | 
						||
| 
								 | 
							
								  /**
							 | 
						||
| 
								 | 
							
								   * The size (in bytes) of the buffer.
							 | 
						||
| 
								 | 
							
								   * Must be greater than 4 (i.e. it must at least fit a 4-byte utf-8 char).
							 | 
						||
| 
								 | 
							
								   * 
							 | 
						||
| 
								 | 
							
								   * Default: `4 * 1024 * 1024` = `4194304`
							 | 
						||
| 
								 | 
							
								   */
							 | 
						||
| 
								 | 
							
								  bufferSize?: number,
							 | 
						||
| 
								 | 
							
								  /**
							 | 
						||
| 
								 | 
							
								   * The path to the Worker's main script or module.
							 | 
						||
| 
								 | 
							
								   * Must be either an absolute path or a relative path (i.e. relative to the current working directory) starting with ./ or ../, or a WHATWG URL object using file: or data: protocol.
							 | 
						||
| 
								 | 
							
								   * When using a data: URL, the data is interpreted based on MIME type using the ECMAScript module loader.
							 | 
						||
| 
								 | 
							
								   * 
							 | 
						||
| 
								 | 
							
								   * {@link workerThreads.Worker()}
							 | 
						||
| 
								 | 
							
								   */
							 | 
						||
| 
								 | 
							
								  filename: string | URL,
							 | 
						||
| 
								 | 
							
								  /**
							 | 
						||
| 
								 | 
							
								   * If `true`, write data synchronously; otherwise write data asynchronously.
							 | 
						||
| 
								 | 
							
								   * 
							 | 
						||
| 
								 | 
							
								   * Default: `false`.
							 | 
						||
| 
								 | 
							
								   */
							 | 
						||
| 
								 | 
							
								  sync?: boolean,
							 | 
						||
| 
								 | 
							
								  /**
							 | 
						||
| 
								 | 
							
								   * {@link workerThreads.WorkerOptions.workerData}
							 | 
						||
| 
								 | 
							
								   * 
							 | 
						||
| 
								 | 
							
								   * Default: `{}`
							 | 
						||
| 
								 | 
							
								   */
							 | 
						||
| 
								 | 
							
								  workerData?: any,
							 | 
						||
| 
								 | 
							
								  /**
							 | 
						||
| 
								 | 
							
								   * {@link workerThreads.WorkerOptions}
							 | 
						||
| 
								 | 
							
								   * 
							 | 
						||
| 
								 | 
							
								   * Default: `{}`
							 | 
						||
| 
								 | 
							
								   */
							 | 
						||
| 
								 | 
							
								  workerOpts?: workerThreads.WorkerOptions
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								declare class ThreadStream extends EventEmitter {
							 | 
						||
| 
								 | 
							
								  /**
							 | 
						||
| 
								 | 
							
								   * @param {ThreadStreamOptions} opts 
							 | 
						||
| 
								 | 
							
								   */
							 | 
						||
| 
								 | 
							
								  constructor(opts: ThreadStreamOptions)
							 | 
						||
| 
								 | 
							
								  /**
							 | 
						||
| 
								 | 
							
								   * Write some data to the stream.
							 | 
						||
| 
								 | 
							
								   * 
							 | 
						||
| 
								 | 
							
								   * **Please note that this method should not throw an {Error} if something goes wrong but emit an error event.**
							 | 
						||
| 
								 | 
							
								   * @param {string} data data to write.
							 | 
						||
| 
								 | 
							
								   * @returns {boolean} false if the stream wishes for the calling code to wait for the 'drain' event to be emitted before continuing to write additional data or if it fails to write; otherwise true.
							 | 
						||
| 
								 | 
							
								   */
							 | 
						||
| 
								 | 
							
								  write(data: string): boolean
							 | 
						||
| 
								 | 
							
								  /**
							 | 
						||
| 
								 | 
							
								   * Signal that no more data will be written.
							 | 
						||
| 
								 | 
							
								   * 
							 | 
						||
| 
								 | 
							
								   * **Please note that this method should not throw an {Error} if something goes wrong but emit an error event.**
							 | 
						||
| 
								 | 
							
								   * 
							 | 
						||
| 
								 | 
							
								   * Calling the {@link write()} method after calling {@link end()} will emit an error.
							 | 
						||
| 
								 | 
							
								   */
							 | 
						||
| 
								 | 
							
								  end(): void
							 | 
						||
| 
								 | 
							
								  /**
							 | 
						||
| 
								 | 
							
								   * Flush the stream synchronously.
							 | 
						||
| 
								 | 
							
								   * This method should be called in the shutdown phase to make sure that all data has been flushed.
							 | 
						||
| 
								 | 
							
								   * 
							 | 
						||
| 
								 | 
							
								   * **Please note that this method will throw an {Error} if something goes wrong.**
							 | 
						||
| 
								 | 
							
								   * 
							 | 
						||
| 
								 | 
							
								   * @throws {Error} if the stream is already flushing, if it fails to flush or if it takes more than 10 seconds to flush.
							 | 
						||
| 
								 | 
							
								   */
							 | 
						||
| 
								 | 
							
								  flushSync(): void
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								export = ThreadStream;
							 |