| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- /*
- 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
- */
- /**
- * @typedef {object} ClearCacheOptions
- * @property {boolean=} maps drop cached source maps (default `true`)
- * @property {boolean=} source drop cached source/buffer copies (default `true`)
- * @property {boolean=} parsedMap drop the parsed object form of cached source maps on `SourceMapSource` instances (default `false` — re-parsing JSON is significantly more expensive than `toString`). Only takes effect when a serialized form (buffer or string) is also retained, so the data remains recoverable.
- */
- class Source {
- /**
- * @returns {SourceValue} source
- */
- source() {
- throw new Error("Abstract");
- }
- /**
- * @returns {Buffer} buffer
- */
- buffer() {
- const source = this.source();
- if (Buffer.isBuffer(source)) return source;
- return Buffer.from(source, "utf8");
- }
- /**
- * @returns {Buffer[]} buffers
- */
- buffers() {
- return [this.buffer()];
- }
- /**
- * @returns {number} size
- */
- 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");
- }
- /**
- * Release cached data held by this source. clearCache is a memory
- * hint: it never affects correctness or output, only how expensive
- * the next read is. Subclasses override; the base is a no-op so
- * every Source supports the call. Composite sources always recurse
- * into wrapped sources. When the same child is reachable via several
- * parents (e.g. modules shared across webpack chunks), pass a shared
- * `visited` WeakSet so each subtree is walked at most once.
- * Not safe to call concurrently with source/map/sourceAndMap/
- * streamChunks/updateHash on the same instance.
- * @param {ClearCacheOptions=} options selectors
- * @param {WeakSet<Source>=} visited de-duplication set shared across calls
- * @returns {void}
- */
- // eslint-disable-next-line no-unused-vars
- clearCache(options, visited) {}
- }
- module.exports = Source;
|