diff options
Diffstat (limited to 'node_modules/@babel/generator/lib/buffer.js')
| -rw-r--r-- | node_modules/@babel/generator/lib/buffer.js | 244 |
1 files changed, 244 insertions, 0 deletions
diff --git a/node_modules/@babel/generator/lib/buffer.js b/node_modules/@babel/generator/lib/buffer.js new file mode 100644 index 0000000..05b5279 --- /dev/null +++ b/node_modules/@babel/generator/lib/buffer.js @@ -0,0 +1,244 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; +const spaceIndents = []; +for (let i = 0; i < 32; i++) { + spaceIndents.push(" ".repeat(i * 2)); +} +class Buffer { + constructor(map, indentChar) { + this._map = null; + this._buf = ""; + this._str = ""; + this._appendCount = 0; + this._last = 0; + this._canMarkIdName = true; + this._indentChar = ""; + this._queuedChar = 0; + this._position = { + line: 1, + column: 0 + }; + this._sourcePosition = { + identifierName: undefined, + identifierNamePos: undefined, + line: undefined, + column: undefined, + filename: undefined + }; + this._map = map; + this._indentChar = indentChar; + } + get() { + const { + _map, + _last + } = this; + if (this._queuedChar !== 32) { + this._flush(); + } + const code = _last === 10 ? (this._buf + this._str).trimRight() : this._buf + this._str; + if (_map === null) { + return { + code: code, + decodedMap: undefined, + map: null, + rawMappings: undefined + }; + } + const result = { + code: code, + decodedMap: _map.getDecoded(), + get __mergedMap() { + return this.map; + }, + get map() { + const resultMap = _map.get(); + result.map = resultMap; + return resultMap; + }, + set map(value) { + Object.defineProperty(result, "map", { + value, + writable: true + }); + }, + get rawMappings() { + const mappings = _map.getRawMappings(); + result.rawMappings = mappings; + return mappings; + }, + set rawMappings(value) { + Object.defineProperty(result, "rawMappings", { + value, + writable: true + }); + } + }; + return result; + } + append(str, maybeNewline) { + this._flush(); + this._append(str, maybeNewline); + } + appendChar(char) { + this._flush(); + this._appendChar(char, 1, true); + } + queue(char) { + this._flush(); + this._queuedChar = char; + } + _flush() { + const queuedChar = this._queuedChar; + if (queuedChar !== 0) { + this._appendChar(queuedChar, 1, true); + this._queuedChar = 0; + } + } + _appendChar(char, repeat, useSourcePos) { + this._last = char; + if (char === -1) { + const indent = repeat >= 64 ? this._indentChar.repeat(repeat) : spaceIndents[repeat / 2]; + this._str += indent; + } else { + this._str += repeat > 1 ? String.fromCharCode(char).repeat(repeat) : String.fromCharCode(char); + } + const isSpace = char === 32; + const position = this._position; + if (char !== 10) { + if (this._map) { + const sourcePos = this._sourcePosition; + if (useSourcePos && sourcePos) { + this._map.mark(position, sourcePos.line, sourcePos.column, isSpace ? undefined : sourcePos.identifierName, isSpace ? undefined : sourcePos.identifierNamePos, sourcePos.filename); + if (!isSpace && this._canMarkIdName) { + sourcePos.identifierName = undefined; + sourcePos.identifierNamePos = undefined; + } + } else { + this._map.mark(position); + } + } + position.column += repeat; + } else { + position.line++; + position.column = 0; + } + } + _append(str, maybeNewline) { + const len = str.length; + const position = this._position; + const sourcePos = this._sourcePosition; + this._last = -1; + if (++this._appendCount > 4096) { + +this._str; + this._buf += this._str; + this._str = str; + this._appendCount = 0; + } else { + this._str += str; + } + const hasMap = this._map !== null; + if (!maybeNewline && !hasMap) { + position.column += len; + return; + } + const { + column, + identifierName, + identifierNamePos, + filename + } = sourcePos; + let line = sourcePos.line; + if ((identifierName != null || identifierNamePos != null) && this._canMarkIdName) { + sourcePos.identifierName = undefined; + sourcePos.identifierNamePos = undefined; + } + let i = str.indexOf("\n"); + let last = 0; + if (hasMap && i !== 0) { + this._map.mark(position, line, column, identifierName, identifierNamePos, filename); + } + while (i !== -1) { + position.line++; + position.column = 0; + last = i + 1; + if (last < len && line !== undefined) { + line++; + if (hasMap) { + this._map.mark(position, line, 0, undefined, undefined, filename); + } + } + i = str.indexOf("\n", last); + } + position.column += len - last; + } + removeLastSemicolon() { + if (this._queuedChar === 59) { + this._queuedChar = 0; + } + } + getLastChar(checkQueue) { + if (!checkQueue) { + return this._last; + } + const queuedChar = this._queuedChar; + return queuedChar !== 0 ? queuedChar : this._last; + } + getNewlineCount() { + return this._queuedChar === 0 && this._last === 10 ? 1 : 0; + } + hasContent() { + return this._last !== 0; + } + exactSource(loc, cb) { + if (!this._map) { + cb(); + return; + } + this.source("start", loc); + const identifierName = loc.identifierName; + const sourcePos = this._sourcePosition; + if (identifierName != null) { + this._canMarkIdName = false; + sourcePos.identifierName = identifierName; + } + cb(); + if (identifierName != null) { + this._canMarkIdName = true; + sourcePos.identifierName = undefined; + sourcePos.identifierNamePos = undefined; + } + this.source("end", loc); + } + source(prop, loc) { + if (!this._map) return; + this._normalizePosition(prop, loc, 0); + } + sourceWithOffset(prop, loc, columnOffset) { + if (!this._map) return; + this._normalizePosition(prop, loc, columnOffset); + } + _normalizePosition(prop, loc, columnOffset) { + this._flush(); + const pos = loc[prop]; + const target = this._sourcePosition; + if (pos) { + target.line = pos.line; + target.column = Math.max(pos.column + columnOffset, 0); + target.filename = loc.filename; + } + } + getCurrentColumn() { + return this._position.column + (this._queuedChar ? 1 : 0); + } + getCurrentLine() { + return this._position.line; + } +} +exports.default = Buffer; + +//# sourceMappingURL=buffer.js.map |
