90 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			90 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /*
 | |
| 	MIT License http://www.opensource.org/licenses/mit-license.php
 | |
| 	Author Tobias Koppers @sokra
 | |
| */
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| /**
 | |
|  * @typedef {object} MapOptions
 | |
|  * @property {boolean=} columns need columns?
 | |
|  * @property {boolean=} module is module
 | |
|  */
 | |
| 
 | |
| /**
 | |
|  * @typedef {object} RawSourceMap
 | |
|  * @property {number} version version
 | |
|  * @property {string[]} sources sources
 | |
|  * @property {string[]} names names
 | |
|  * @property {string=} sourceRoot source root
 | |
|  * @property {string[]=} sourcesContent sources content
 | |
|  * @property {string} mappings mappings
 | |
|  * @property {string} file file
 | |
|  * @property {string=} debugId debug id
 | |
|  * @property {number[]=} ignoreList ignore list
 | |
|  */
 | |
| 
 | |
| /** @typedef {string | Buffer} SourceValue */
 | |
| 
 | |
| /**
 | |
|  * @typedef {object} SourceAndMap
 | |
|  * @property {SourceValue} source source
 | |
|  * @property {RawSourceMap | null} map map
 | |
|  */
 | |
| 
 | |
| /**
 | |
|  * @typedef {object} HashLike
 | |
|  * @property {(data: string | Buffer, inputEncoding?: string) => HashLike} update make hash update
 | |
|  * @property {(encoding?: string) => string | Buffer} digest get hash digest
 | |
|  */
 | |
| 
 | |
| class Source {
 | |
| 	/**
 | |
| 	 * @returns {SourceValue} source
 | |
| 	 */
 | |
| 	source() {
 | |
| 		throw new Error("Abstract");
 | |
| 	}
 | |
| 
 | |
| 	buffer() {
 | |
| 		const source = this.source();
 | |
| 		if (Buffer.isBuffer(source)) return source;
 | |
| 		return Buffer.from(source, "utf8");
 | |
| 	}
 | |
| 
 | |
| 	size() {
 | |
| 		return this.buffer().length;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * @param {MapOptions=} options map options
 | |
| 	 * @returns {RawSourceMap | null} map
 | |
| 	 */
 | |
| 	// eslint-disable-next-line no-unused-vars
 | |
| 	map(options) {
 | |
| 		return null;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * @param {MapOptions=} options map options
 | |
| 	 * @returns {SourceAndMap} source and map
 | |
| 	 */
 | |
| 	sourceAndMap(options) {
 | |
| 		return {
 | |
| 			source: this.source(),
 | |
| 			map: this.map(options),
 | |
| 		};
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * @param {HashLike} hash hash
 | |
| 	 * @returns {void}
 | |
| 	 */
 | |
| 	// eslint-disable-next-line no-unused-vars
 | |
| 	updateHash(hash) {
 | |
| 		throw new Error("Abstract");
 | |
| 	}
 | |
| }
 | |
| 
 | |
| module.exports = Source;
 |