@vue/compiler-sfc
Advanced tools
Comparing version 3.0.0-alpha.0 to 3.0.0-alpha.1
@@ -7,5 +7,5 @@ 'use strict'; | ||
var compilerCore = require('@vue/compiler-core'); | ||
var sourceMap = require('source-map'); | ||
var LRUCache = _interopDefault(require('lru-cache')); | ||
var compilerCore = require('@vue/compiler-core'); | ||
var url = require('url'); | ||
@@ -58,4 +58,4 @@ var consolidate = _interopDefault(require('consolidate')); | ||
const sourceToSFC = new LRUCache(SFC_CACHE_MAX_SIZE); | ||
function parse(source, { sourceMap = true, filename = 'component.vue', sourceRoot = '', pad = false } = {}) { | ||
const sourceKey = source + sourceMap + filename + sourceRoot + pad; | ||
function parse(source, { sourceMap = true, filename = 'component.vue', sourceRoot = '', pad = false, compiler = require('@vue/compiler-dom') } = {}) { | ||
const sourceKey = source + sourceMap + filename + sourceRoot + pad + compiler.parse; | ||
const cache = sourceToSFC.get(sourceKey); | ||
@@ -65,3 +65,3 @@ if (cache) { | ||
} | ||
const sfc = { | ||
const descriptor = { | ||
filename, | ||
@@ -73,5 +73,21 @@ template: null, | ||
}; | ||
const ast = compilerCore.parse(source, { | ||
const errors = []; | ||
const ast = compiler.parse(source, { | ||
// there are no components at SFC parsing level | ||
isNativeTag: () => true, | ||
getTextMode: () => 2 /* RAWTEXT */ | ||
// preserve all whitespaces | ||
isPreTag: () => true, | ||
getTextMode: (tag, _ns, parent) => { | ||
// all top level elements except <template> are parsed as raw text | ||
// containers | ||
if (!parent && tag !== 'template') { | ||
return 2 /* RAWTEXT */; | ||
} | ||
else { | ||
return 0 /* DATA */; | ||
} | ||
}, | ||
onError: e => { | ||
errors.push(e); | ||
} | ||
}); | ||
@@ -87,4 +103,4 @@ ast.children.forEach(node => { | ||
case 'template': | ||
if (!sfc.template) { | ||
sfc.template = createBlock(node, source, pad); | ||
if (!descriptor.template) { | ||
descriptor.template = createBlock(node, source, pad); | ||
} | ||
@@ -96,4 +112,4 @@ else { | ||
case 'script': | ||
if (!sfc.script) { | ||
sfc.script = createBlock(node, source, pad); | ||
if (!descriptor.script) { | ||
descriptor.script = createBlock(node, source, pad); | ||
} | ||
@@ -105,6 +121,6 @@ else { | ||
case 'style': | ||
sfc.styles.push(createBlock(node, source, pad)); | ||
descriptor.styles.push(createBlock(node, source, pad)); | ||
break; | ||
default: | ||
sfc.customBlocks.push(createBlock(node, source, pad)); | ||
descriptor.customBlocks.push(createBlock(node, source, pad)); | ||
break; | ||
@@ -119,8 +135,12 @@ } | ||
}; | ||
genMap(sfc.template); | ||
genMap(sfc.script); | ||
sfc.styles.forEach(genMap); | ||
genMap(descriptor.template); | ||
genMap(descriptor.script); | ||
descriptor.styles.forEach(genMap); | ||
} | ||
sourceToSFC.set(sourceKey, sfc); | ||
return sfc; | ||
const result = { | ||
descriptor, | ||
errors | ||
}; | ||
sourceToSFC.set(sourceKey, result); | ||
return result; | ||
} | ||
@@ -134,8 +154,15 @@ function warnDuplicateBlock(source, filename, node) { | ||
const type = node.tag; | ||
const text = node.children[0]; | ||
const start = node.children[0].loc.start; | ||
const end = node.children[node.children.length - 1].loc.end; | ||
const content = source.slice(start.offset, end.offset); | ||
const loc = { | ||
source: content, | ||
start, | ||
end | ||
}; | ||
const attrs = {}; | ||
const block = { | ||
type, | ||
content: text.content, | ||
loc: text.loc, | ||
content, | ||
loc, | ||
attrs | ||
@@ -142,0 +169,0 @@ }; |
@@ -6,4 +6,6 @@ import { CodegenResult } from '@vue/compiler-core'; | ||
import { LazyResult } from 'postcss'; | ||
import { ParserOptions } from '@vue/compiler-core'; | ||
import { RawSourceMap } from 'source-map'; | ||
import { Result } from 'postcss'; | ||
import { RootNode } from '@vue/compiler-core'; | ||
import { SourceLocation } from '@vue/compiler-core'; | ||
@@ -14,2 +16,3 @@ | ||
} | ||
export { CompilerError } | ||
export { CompilerOptions } | ||
@@ -24,3 +27,3 @@ | ||
export declare function parse(source: string, { sourceMap, filename, sourceRoot, pad }?: SFCParseOptions): SFCDescriptor; | ||
export declare function parse(source: string, { sourceMap, filename, sourceRoot, pad, compiler }?: SFCParseOptions): SFCParseResult; | ||
@@ -52,4 +55,10 @@ declare type PreprocessLang = 'less' | 'sass' | 'scss' | 'styl' | 'stylus'; | ||
pad?: boolean | 'line' | 'space'; | ||
compiler?: TemplateCompiler; | ||
} | ||
declare interface SFCParseResult { | ||
descriptor: SFCDescriptor; | ||
errors: CompilerError[]; | ||
} | ||
export declare interface SFCScriptBlock extends SFCBlock { | ||
@@ -111,4 +120,5 @@ type: 'script'; | ||
compile(template: string, options: CompilerOptions): CodegenResult; | ||
parse(template: string, options: ParserOptions): RootNode; | ||
} | ||
export { } |
{ | ||
"name": "@vue/compiler-sfc", | ||
"version": "3.0.0-alpha.0", | ||
"version": "3.0.0-alpha.1", | ||
"description": "@vue/compiler-sfc", | ||
@@ -30,7 +30,7 @@ "main": "dist/compiler-sfc.cjs.js", | ||
"peerDependencies": { | ||
"vue": "3.0.0-alpha.0" | ||
"vue": "3.0.0-alpha.1" | ||
}, | ||
"dependencies": { | ||
"@vue/compiler-core": "3.0.0-alpha.0", | ||
"@vue/compiler-dom": "3.0.0-alpha.0", | ||
"@vue/compiler-core": "3.0.0-alpha.1", | ||
"@vue/compiler-dom": "3.0.0-alpha.1", | ||
"consolidate": "^0.15.1", | ||
@@ -37,0 +37,0 @@ "hash-sum": "^2.0.0", |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
37539
942
+ Added@vue/compiler-core@3.0.0-alpha.1(transitive)
+ Added@vue/compiler-dom@3.0.0-alpha.1(transitive)
+ Added@vue/reactivity@3.0.0-alpha.1(transitive)
+ Added@vue/runtime-core@3.0.0-alpha.1(transitive)
+ Added@vue/runtime-dom@3.0.0-alpha.1(transitive)
+ Addedvue@3.0.0-alpha.1(transitive)
- Removed@vue/compiler-core@3.0.0-alpha.0(transitive)
- Removed@vue/compiler-dom@3.0.0-alpha.0(transitive)
- Removed@vue/reactivity@3.0.0-alpha.0(transitive)
- Removed@vue/runtime-core@3.0.0-alpha.0(transitive)
- Removed@vue/runtime-dom@3.0.0-alpha.0(transitive)
- Removedvue@3.0.0-alpha.0(transitive)