UNPKG

webpack-sources

Version:

Source code handling classes for webpack

48 lines (43 loc) 1.15 kB
/* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ "use strict"; /** * @typedef {object} GeneratedSourceInfo * @property {number=} generatedLine generated line * @property {number=} generatedColumn generated column * @property {string=} source source */ /** * @param {string | undefined} source source * @returns {GeneratedSourceInfo} source info */ const getGeneratedSourceInfo = (source) => { if (source === undefined) { return {}; } const lastLineStart = source.lastIndexOf("\n"); if (lastLineStart === -1) { return { generatedLine: 1, generatedColumn: source.length, source, }; } // Use native indexOf to scan for newlines instead of charCodeAt loops. // This is significantly faster on large sources since indexOf uses // vectorized/native string scanning. let generatedLine = 2; let idx = source.indexOf("\n"); while (idx !== -1 && idx < lastLineStart) { generatedLine++; idx = source.indexOf("\n", idx + 1); } return { generatedLine, generatedColumn: source.length - lastLineStart - 1, source, }; }; module.exports = getGeneratedSourceInfo;