| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 | "use strict";Object.defineProperty(exports, "__esModule", { value: true });exports.parse = void 0;const source_map_1 = require("source-map");const hash = require('hash-sum');const cache = new (require('lru-cache'))(100);const splitRE = /\r?\n/g;const emptyRE = /^(?:\/\/)?\s*$/;function parse(options) {    const { source, filename = '', compiler, compilerParseOptions = { pad: 'line' }, sourceRoot = '', needMap = true } = options;    const cacheKey = hash(filename + source + JSON.stringify(compilerParseOptions));    let output = cache.get(cacheKey);    if (output)        return output;    output = compiler.parseComponent(source, compilerParseOptions);    if (needMap) {        if (output.script && !output.script.src) {            output.script.map = generateSourceMap(filename, source, output.script.content, sourceRoot, compilerParseOptions.pad);        }        if (output.styles) {            output.styles.forEach(style => {                if (!style.src) {                    style.map = generateSourceMap(filename, source, style.content, sourceRoot, compilerParseOptions.pad);                }            });        }    }    cache.set(cacheKey, output);    return output;}exports.parse = parse;function generateSourceMap(filename, source, generated, sourceRoot, pad) {    const map = new source_map_1.SourceMapGenerator({        file: filename.replace(/\\/g, '/'),        sourceRoot: sourceRoot.replace(/\\/g, '/')    });    let offset = 0;    if (!pad) {        offset =            source                .split(generated)                .shift()                .split(splitRE).length - 1;    }    map.setSourceContent(filename, source);    generated.split(splitRE).forEach((line, index) => {        if (!emptyRE.test(line)) {            map.addMapping({                source: filename,                original: {                    line: index + 1 + offset,                    column: 0                },                generated: {                    line: index + 1,                    column: 0                }            });        }    });    return JSON.parse(map.toString());}
 |