123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- /*
- MIT License http://www.opensource.org/licenses/mit-license.php
- Author Tobias Koppers @sokra
- */
- "use strict";
- const streamChunksOfRawSource = require("./helpers/streamChunksOfRawSource");
- const Source = require("./Source");
- class RawSource extends Source {
- constructor(value, convertToString = false) {
- super();
- const isBuffer = Buffer.isBuffer(value);
- if (!isBuffer && typeof value !== "string") {
- throw new TypeError("argument 'value' must be either string of Buffer");
- }
- this._valueIsBuffer = !convertToString && isBuffer;
- this._value = convertToString && isBuffer ? undefined : value;
- this._valueAsBuffer = isBuffer ? value : undefined;
- this._valueAsString = isBuffer ? undefined : value;
- }
- isBuffer() {
- return this._valueIsBuffer;
- }
- source() {
- if (this._value === undefined) {
- this._value = this._valueAsBuffer.toString("utf-8");
- }
- return this._value;
- }
- buffer() {
- if (this._valueAsBuffer === undefined) {
- this._valueAsBuffer = Buffer.from(this._value, "utf-8");
- }
- return this._valueAsBuffer;
- }
- map(options) {
- return null;
- }
- /**
- * @param {object} options options
- * @param {function(string, number, number, number, number, number, number): void} onChunk called for each chunk of code
- * @param {function(number, string, string)} onSource called for each source
- * @param {function(number, string)} onName called for each name
- * @returns {void}
- */
- streamChunks(options, onChunk, onSource, onName) {
- if (this._value === undefined) {
- this._value = Buffer.from(this._valueAsBuffer, "utf-8");
- }
- if (this._valueAsString === undefined) {
- this._valueAsString =
- typeof this._value === "string"
- ? this._value
- : this._value.toString("utf-8");
- }
- return streamChunksOfRawSource(
- this._valueAsString,
- onChunk,
- onSource,
- onName,
- !!(options && options.finalSource)
- );
- }
- updateHash(hash) {
- if (this._valueAsBuffer === undefined) {
- this._valueAsBuffer = Buffer.from(this._value, "utf-8");
- }
- hash.update("RawSource");
- hash.update(this._valueAsBuffer);
- }
- }
- module.exports = RawSource;
|