diff options
Diffstat (limited to 'node_modules/@vue/component-compiler-utils/lib/parse.ts')
| -rw-r--r-- | node_modules/@vue/component-compiler-utils/lib/parse.ts | 112 |
1 files changed, 0 insertions, 112 deletions
diff --git a/node_modules/@vue/component-compiler-utils/lib/parse.ts b/node_modules/@vue/component-compiler-utils/lib/parse.ts deleted file mode 100644 index 8fbd70ee..00000000 --- a/node_modules/@vue/component-compiler-utils/lib/parse.ts +++ /dev/null @@ -1,112 +0,0 @@ -import { - RawSourceMap, - VueTemplateCompiler, - VueTemplateCompilerParseOptions -} from './types' - -const hash = require('hash-sum') -const cache = require('lru-cache')(100) -const { SourceMapGenerator } = require('source-map') - -const splitRE = /\r?\n/g -const emptyRE = /^(?:\/\/)?\s*$/ - -export interface ParseOptions { - source: string - filename?: string - compiler: VueTemplateCompiler - compilerParseOptions?: VueTemplateCompilerParseOptions - sourceRoot?: string - needMap?: boolean -} - -export interface SFCCustomBlock { - type: string - content: string - attrs: { [key: string]: string | true } - start: number - end: number - map?: RawSourceMap -} - -export interface SFCBlock extends SFCCustomBlock { - lang?: string - src?: string - scoped?: boolean - module?: string | boolean -} - -export interface SFCDescriptor { - template: SFCBlock | null - script: SFCBlock | null - styles: SFCBlock[] - customBlocks: SFCCustomBlock[] -} - -export function parse(options: ParseOptions): SFCDescriptor { - const { - source, - filename = '', - compiler, - compilerParseOptions = { pad: 'line' }, - sourceRoot = process.cwd(), - needMap = true - } = options - const cacheKey = hash(filename + source) - let output: SFCDescriptor = 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 - ) - } - if (output.styles) { - output.styles.forEach(style => { - if (!style.src) { - style.map = generateSourceMap( - filename, - source, - style.content, - sourceRoot - ) - } - }) - } - } - cache.set(cacheKey, output) - return output -} - -function generateSourceMap( - filename: string, - source: string, - generated: string, - sourceRoot: string -): RawSourceMap { - const map = new SourceMapGenerator({ - file: filename, - sourceRoot - }) - map.setSourceContent(filename, source) - generated.split(splitRE).forEach((line, index) => { - if (!emptyRE.test(line)) { - map.addMapping({ - source: filename, - original: { - line: index + 1, - column: 0 - }, - generated: { - line: index + 1, - column: 0 - } - }) - } - }) - return map.toJSON() -} |
