challenge-algorithms-v2.0-D.../node_modules/@babel/generator/lib/buffer.js.map

1 line
22 KiB
Plaintext

{"version":3,"names":["Buffer","constructor","map","_map","_buf","_str","_appendCount","_last","_queue","_queueCursor","_position","line","column","_sourcePosition","identifierName","undefined","filename","_allocQueue","queue","i","push","char","repeat","_pushQueue","cursor","length","item","_popQueue","Error","get","_flush","result","code","trimRight","decodedMap","getDecoded","resultMap","value","Object","defineProperty","writable","rawMappings","mappings","getRawMappings","append","str","maybeNewline","_append","appendChar","_appendChar","sourcePosition","queueIndentation","queueCursor","sourcePos","String","fromCharCode","_mark","len","position","charCodeAt","indexOf","last","mark","removeTrailingNewline","removeLastSemicolon","getLastChar","getNewlineCount","count","endsWithCharAndNewline","lastCp","hasContent","exactSource","loc","cb","source","prop","_normalizePosition","sourceWithOffset","lineOffset","columnOffset","withSource","pos","target","getCurrentColumn","lastIndex","getCurrentLine"],"sources":["../src/buffer.ts"],"sourcesContent":["import type SourceMap from \"./source-map\";\nimport * as charcodes from \"charcodes\";\n\nexport type Pos = {\n line: number;\n column: number;\n};\nexport type Loc = {\n start?: Pos;\n end?: Pos;\n identifierName?: string;\n filename?: string;\n};\ntype SourcePos = {\n identifierName: string | undefined;\n line: number | undefined;\n column: number | undefined;\n filename: string | undefined;\n};\n\ntype QueueItem = {\n char: number;\n repeat: number;\n line: number | undefined;\n column: number | undefined;\n identifierName: string | undefined;\n filename: string | undefined;\n};\n\nexport default class Buffer {\n constructor(map?: SourceMap | null) {\n this._map = map;\n\n this._allocQueue();\n }\n\n _map: SourceMap = null;\n _buf = \"\";\n _str = \"\";\n _appendCount = 0;\n _last = 0;\n _queue: QueueItem[] = [];\n _queueCursor = 0;\n\n _position = {\n line: 1,\n column: 0,\n };\n _sourcePosition: SourcePos = {\n identifierName: undefined,\n line: undefined,\n column: undefined,\n filename: undefined,\n };\n\n _allocQueue() {\n const queue = this._queue;\n\n for (let i = 0; i < 16; i++) {\n queue.push({\n char: 0,\n repeat: 1,\n line: undefined,\n column: undefined,\n identifierName: undefined,\n filename: \"\",\n });\n }\n }\n\n _pushQueue(\n char: number,\n repeat: number,\n line: number | undefined,\n column: number | undefined,\n identifierName: string | undefined,\n filename: string | undefined,\n ) {\n const cursor = this._queueCursor;\n if (cursor === this._queue.length) {\n this._allocQueue();\n }\n const item = this._queue[cursor];\n item.char = char;\n item.repeat = repeat;\n item.line = line;\n item.column = column;\n item.identifierName = identifierName;\n item.filename = filename;\n\n this._queueCursor++;\n }\n\n _popQueue(): QueueItem {\n if (this._queueCursor === 0) {\n throw new Error(\"Cannot pop from empty queue\");\n }\n return this._queue[--this._queueCursor];\n }\n\n /**\n * Get the final string output from the buffer, along with the sourcemap if one exists.\n */\n\n get() {\n this._flush();\n\n const map = this._map;\n const result = {\n // Whatever trim is used here should not execute a regex against the\n // source string since it may be arbitrarily large after all transformations\n code: (this._buf + this._str).trimRight(),\n // Decoded sourcemap is free to generate.\n decodedMap: map?.getDecoded(),\n\n // Encoding the sourcemap is moderately CPU expensive.\n get map() {\n const resultMap = map ? map.get() : null;\n result.map = resultMap;\n return resultMap;\n },\n set map(value) {\n Object.defineProperty(result, \"map\", { value, writable: true });\n },\n // Retrieving the raw mappings is very memory intensive.\n get rawMappings() {\n const mappings = map?.getRawMappings();\n result.rawMappings = mappings;\n return mappings;\n },\n set rawMappings(value) {\n Object.defineProperty(result, \"rawMappings\", { value, writable: true });\n },\n };\n\n return result;\n }\n\n /**\n * Add a string to the buffer that cannot be reverted.\n */\n\n append(str: string, maybeNewline: boolean): void {\n this._flush();\n\n this._append(str, this._sourcePosition, maybeNewline);\n }\n\n appendChar(char: number): void {\n this._flush();\n this._appendChar(char, 1, this._sourcePosition);\n }\n\n /**\n * Add a string to the buffer than can be reverted.\n */\n queue(char: number): void {\n // Drop trailing spaces when a newline is inserted.\n if (char === charcodes.lineFeed) {\n while (this._queueCursor !== 0) {\n const char = this._queue[this._queueCursor - 1].char;\n if (char !== charcodes.space && char !== charcodes.tab) {\n break;\n }\n\n this._queueCursor--;\n }\n }\n\n const sourcePosition = this._sourcePosition;\n this._pushQueue(\n char,\n 1,\n sourcePosition.line,\n sourcePosition.column,\n sourcePosition.identifierName,\n sourcePosition.filename,\n );\n }\n\n /**\n * Same as queue, but this indentation will never have a sourcmap marker.\n */\n queueIndentation(char: number, repeat: number): void {\n this._pushQueue(char, repeat, undefined, undefined, undefined, undefined);\n }\n\n _flush(): void {\n const queueCursor = this._queueCursor;\n const queue = this._queue;\n for (let i = 0; i < queueCursor; i++) {\n const item: QueueItem = queue[i];\n this._appendChar(item.char, item.repeat, item);\n }\n this._queueCursor = 0;\n }\n\n _appendChar(char: number, repeat: number, sourcePos: SourcePos): void {\n this._last = char;\n\n this._str +=\n repeat > 1\n ? String.fromCharCode(char).repeat(repeat)\n : String.fromCharCode(char);\n\n if (char !== charcodes.lineFeed) {\n this._mark(\n sourcePos.line,\n sourcePos.column,\n sourcePos.identifierName,\n sourcePos.filename,\n );\n this._position.column += repeat;\n } else {\n this._position.line++;\n this._position.column = 0;\n }\n }\n\n _append(str: string, sourcePos: SourcePos, maybeNewline: boolean): void {\n const len = str.length;\n const position = this._position;\n\n this._last = str.charCodeAt(len - 1);\n\n if (++this._appendCount > 4096) {\n +this._str; // Unexplainable huge performance boost. Ref: https://github.com/davidmarkclements/flatstr License: MIT\n this._buf += this._str;\n this._str = str;\n this._appendCount = 0;\n } else {\n this._str += str;\n }\n\n if (!maybeNewline && !this._map) {\n position.column += len;\n return;\n }\n\n const { column, identifierName, filename } = sourcePos;\n let line = sourcePos.line;\n\n // Search for newline chars. We search only for `\\n`, since both `\\r` and\n // `\\r\\n` are normalized to `\\n` during parse. We exclude `\\u2028` and\n // `\\u2029` for performance reasons, they're so uncommon that it's probably\n // ok. It's also unclear how other sourcemap utilities handle them...\n let i = str.indexOf(\"\\n\");\n let last = 0;\n\n // If the string starts with a newline char, then adding a mark is redundant.\n // This catches both \"no newlines\" and \"newline after several chars\".\n if (i !== 0) {\n this._mark(line, column, identifierName, filename);\n }\n\n // Now, find each reamining newline char in the string.\n while (i !== -1) {\n position.line++;\n position.column = 0;\n last = i + 1;\n\n // We mark the start of each line, which happens directly after this newline char\n // unless this is the last char.\n if (last < len) {\n this._mark(++line, 0, identifierName, filename);\n }\n i = str.indexOf(\"\\n\", last);\n }\n position.column += len - last;\n }\n\n _mark(\n line: number | undefined,\n column: number | undefined,\n identifierName: string | undefined,\n filename: string | undefined,\n ): void {\n this._map?.mark(this._position, line, column, identifierName, filename);\n }\n\n removeTrailingNewline(): void {\n const queueCursor = this._queueCursor;\n if (\n queueCursor !== 0 &&\n this._queue[queueCursor - 1].char === charcodes.lineFeed\n ) {\n this._queueCursor--;\n }\n }\n\n removeLastSemicolon(): void {\n const queueCursor = this._queueCursor;\n if (\n queueCursor !== 0 &&\n this._queue[queueCursor - 1].char === charcodes.semicolon\n ) {\n this._queueCursor--;\n }\n }\n\n getLastChar(): number {\n const queueCursor = this._queueCursor;\n return queueCursor !== 0 ? this._queue[queueCursor - 1].char : this._last;\n }\n\n /**\n * This will only detect at most 1 newline after a call to `flush()`,\n * but this has not been found so far, and an accurate count can be achieved if needed later.\n */\n getNewlineCount(): number {\n const queueCursor = this._queueCursor;\n let count = 0;\n if (queueCursor === 0) return this._last === charcodes.lineFeed ? 1 : 0;\n for (let i = queueCursor - 1; i >= 0; i--) {\n if (this._queue[i].char !== charcodes.lineFeed) {\n break;\n }\n count++;\n }\n return count === queueCursor && this._last === charcodes.lineFeed\n ? count + 1\n : count;\n }\n\n /**\n * check if current _last + queue ends with newline, return the character before newline\n *\n * @param {*} ch\n * @memberof Buffer\n */\n endsWithCharAndNewline(): number {\n const queue = this._queue;\n const queueCursor = this._queueCursor;\n if (queueCursor !== 0) {\n // every element in queue is one-length whitespace string\n const lastCp = queue[queueCursor - 1].char;\n if (lastCp !== charcodes.lineFeed) return;\n if (queueCursor > 1) {\n return queue[queueCursor - 2].char;\n } else {\n return this._last;\n }\n }\n // We assume that everything being matched is at most a single token plus some whitespace,\n // which everything currently is, but otherwise we'd have to expand _last or check _buf.\n }\n\n hasContent(): boolean {\n return this._queueCursor !== 0 || !!this._last;\n }\n\n /**\n * Certain sourcemap usecases expect mappings to be more accurate than\n * Babel's generic sourcemap handling allows. For now, we special-case\n * identifiers to allow for the primary cases to work.\n * The goal of this line is to ensure that the map output from Babel will\n * have an exact range on identifiers in the output code. Without this\n * line, Babel would potentially include some number of trailing tokens\n * that are printed after the identifier, but before another location has\n * been assigned.\n * This allows tooling like Rollup and Webpack to more accurately perform\n * their own transformations. Most importantly, this allows the import/export\n * transformations performed by those tools to loose less information when\n * applying their own transformations on top of the code and map results\n * generated by Babel itself.\n *\n * The primary example of this is the snippet:\n *\n * import mod from \"mod\";\n * mod();\n *\n * With this line, there will be one mapping range over \"mod\" and another\n * over \"();\", where previously it would have been a single mapping.\n */\n exactSource(loc: Loc | undefined, cb: () => void) {\n if (!this._map) return cb();\n\n this.source(\"start\", loc);\n\n cb();\n\n this.source(\"end\", loc);\n }\n\n /**\n * Sets a given position as the current source location so generated code after this call\n * will be given this position in the sourcemap.\n */\n\n source(prop: \"start\" | \"end\", loc: Loc | undefined): void {\n if (!this._map) return;\n\n // Since this is called extremely often, we re-use the same _sourcePosition\n // object for the whole lifetime of the buffer.\n this._normalizePosition(prop, loc, 0, 0);\n }\n\n sourceWithOffset(\n prop: \"start\" | \"end\",\n loc: Loc | undefined,\n lineOffset: number,\n columnOffset: number,\n ): void {\n if (!this._map) return;\n\n this._normalizePosition(prop, loc, lineOffset, columnOffset);\n }\n\n /**\n * Call a callback with a specific source location\n */\n\n withSource(prop: \"start\" | \"end\", loc: Loc, cb: () => void): void {\n if (!this._map) return cb();\n\n this.source(prop, loc);\n\n cb();\n }\n\n _normalizePosition(\n prop: \"start\" | \"end\",\n loc: Loc,\n lineOffset: number,\n columnOffset: number,\n ) {\n const pos = loc[prop];\n const target = this._sourcePosition;\n\n target.identifierName =\n (prop === \"start\" && loc.identifierName) || undefined;\n if (pos) {\n target.line = pos.line + lineOffset;\n target.column = pos.column + columnOffset;\n target.filename = loc.filename;\n }\n }\n\n getCurrentColumn(): number {\n const queue = this._queue;\n const queueCursor = this._queueCursor;\n\n let lastIndex = -1;\n let len = 0;\n for (let i = 0; i < queueCursor; i++) {\n const item = queue[i];\n if (item.char === charcodes.lineFeed) {\n lastIndex = len;\n }\n len += item.repeat;\n }\n\n return lastIndex === -1 ? this._position.column + len : len - 1 - lastIndex;\n }\n\n getCurrentLine(): number {\n let count = 0;\n\n const queue = this._queue;\n for (let i = 0; i < this._queueCursor; i++) {\n if (queue[i].char === charcodes.lineFeed) {\n count++;\n }\n }\n\n return this._position.line + count;\n }\n}\n"],"mappings":"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"}