diff --git a/packages/compiler-core/__tests__/parse.spec.ts b/packages/compiler-core/__tests__/parse.spec.ts
index 72885c224..037e9377f 100644
--- a/packages/compiler-core/__tests__/parse.spec.ts
+++ b/packages/compiler-core/__tests__/parse.spec.ts
@@ -1,5 +1,5 @@
import { ParserOptions } from '../src/options'
-import { parse, TextModes } from '../src/parse'
+import { baseParse, TextModes } from '../src/parse'
import { ErrorCodes } from '../src/errors'
import {
CommentNode,
@@ -16,7 +16,7 @@ import {
describe('compiler: parse', () => {
describe('Text', () => {
test('simple text', () => {
- const ast = parse('some text')
+ const ast = baseParse('some text')
const text = ast.children[0] as TextNode
expect(text).toStrictEqual({
@@ -31,7 +31,7 @@ describe('compiler: parse', () => {
})
test('simple text with invalid end tag', () => {
- const ast = parse('some text', {
+ const ast = baseParse('some text', {
onError: () => {}
})
const text = ast.children[0] as TextNode
@@ -48,7 +48,7 @@ describe('compiler: parse', () => {
})
test('text with interpolation', () => {
- const ast = parse('some {{ foo + bar }} text')
+ const ast = baseParse('some {{ foo + bar }} text')
const text1 = ast.children[0] as TextNode
const text2 = ast.children[2] as TextNode
@@ -73,7 +73,7 @@ describe('compiler: parse', () => {
})
test('text with interpolation which has `<`', () => {
- const ast = parse('some {{ ad }} text')
+ const ast = baseParse('some {{ ad }} text')
const text1 = ast.children[0] as TextNode
const text2 = ast.children[2] as TextNode
@@ -98,7 +98,7 @@ describe('compiler: parse', () => {
})
test('text with mix of tags and interpolations', () => {
- const ast = parse('some {{ foo < bar + foo }} text')
+ const ast = baseParse('some {{ foo < bar + foo }} text')
const text1 = ast.children[0] as TextNode
const text2 = (ast.children[1] as ElementNode).children![1] as TextNode
@@ -123,7 +123,7 @@ describe('compiler: parse', () => {
})
test('lonly "<" don\'t separate nodes', () => {
- const ast = parse('a < b', {
+ const ast = baseParse('a < b', {
onError: err => {
if (err.code !== ErrorCodes.INVALID_FIRST_CHARACTER_OF_TAG_NAME) {
throw err
@@ -144,7 +144,7 @@ describe('compiler: parse', () => {
})
test('lonly "{{" don\'t separate nodes', () => {
- const ast = parse('a {{ b', {
+ const ast = baseParse('a {{ b', {
onError: error => {
if (error.code !== ErrorCodes.X_MISSING_INTERPOLATION_END) {
throw error
@@ -166,7 +166,7 @@ describe('compiler: parse', () => {
test('HTML entities compatibility in text (https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state).', () => {
const spy = jest.fn()
- const ast = parse('&ersand;', {
+ const ast = baseParse('&ersand;', {
namedCharacterReferences: { amp: '&' },
onError: spy
})
@@ -195,7 +195,7 @@ describe('compiler: parse', () => {
test('HTML entities compatibility in attribute (https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state).', () => {
const spy = jest.fn()
- const ast = parse(
+ const ast = baseParse(
'
',
{
namedCharacterReferences: { amp: '&', 'amp;': '&' },
@@ -248,7 +248,7 @@ describe('compiler: parse', () => {
test('Some control character reference should be replaced.', () => {
const spy = jest.fn()
- const ast = parse('', { onError: spy })
+ const ast = baseParse('', { onError: spy })
const text = ast.children[0] as TextNode
expect(text).toStrictEqual({
@@ -275,7 +275,7 @@ describe('compiler: parse', () => {
describe('Interpolation', () => {
test('simple interpolation', () => {
- const ast = parse('{{message}}')
+ const ast = baseParse('{{message}}')
const interpolation = ast.children[0] as InterpolationNode
expect(interpolation).toStrictEqual({
@@ -300,7 +300,7 @@ describe('compiler: parse', () => {
})
test('it can have tag-like notation', () => {
- const ast = parse('{{ a {
})
test('it can have tag-like notation (2)', () => {
- const ast = parse('{{ ad }}')
+ const ast = baseParse('{{ ad }}')
const interpolation1 = ast.children[0] as InterpolationNode
const interpolation2 = ast.children[1] as InterpolationNode
@@ -371,7 +371,7 @@ describe('compiler: parse', () => {
})
test('it can have tag-like notation (3)', () => {
- const ast = parse('{{ "
" }}')
+ const ast = baseParse('{{ "
" }}')
const element = ast.children[0] as ElementNode
const interpolation = element.children[0] as InterpolationNode
@@ -398,7 +398,7 @@ describe('compiler: parse', () => {
})
test('custom delimiters', () => {
- const ast = parse('\n` +
`
\n` +
` \n` +
@@ -1513,11 +1513,11 @@ describe('compiler: parse', () => {
test('invalid html', () => {
expect(() => {
- parse(`
\n\n
\n`)
+ baseParse(`
\n\n
\n`)
}).toThrow('Element is missing end tag.')
const spy = jest.fn()
- const ast = parse(`
\n\n
\n`, {
+ const ast = baseParse(`
\n\n
\n`, {
onError: spy
})
@@ -1552,7 +1552,7 @@ describe('compiler: parse', () => {
})
test('parse with correct location info', () => {
- const [foo, bar, but, baz] = parse(
+ const [foo, bar, but, baz] = baseParse(
`
foo
is {{ bar }} but {{ baz }}`.trim()
@@ -1588,7 +1588,7 @@ foo
describe('namedCharacterReferences option', () => {
test('use the given map', () => {
- const ast: any = parse('&∪︀', {
+ const ast: any = baseParse('&∪︀', {
namedCharacterReferences: {
'cups;': '\u222A\uFE00' // UNION with serifs
},
@@ -1603,18 +1603,18 @@ foo
describe('whitespace management', () => {
it('should remove whitespaces at start/end inside an element', () => {
- const ast = parse(`
`)
+ const ast = baseParse(`
`)
expect((ast.children[0] as ElementNode).children.length).toBe(1)
})
it('should remove whitespaces w/ newline between elements', () => {
- const ast = parse(`
\n
\n
`)
+ const ast = baseParse(`
\n
\n
`)
expect(ast.children.length).toBe(3)
expect(ast.children.every(c => c.type === NodeTypes.ELEMENT)).toBe(true)
})
it('should remove whitespaces adjacent to comments', () => {
- const ast = parse(`
\n
`)
+ const ast = baseParse(`
\n
`)
expect(ast.children.length).toBe(3)
expect(ast.children[0].type).toBe(NodeTypes.ELEMENT)
expect(ast.children[1].type).toBe(NodeTypes.COMMENT)
@@ -1622,7 +1622,7 @@ foo
})
it('should remove whitespaces w/ newline between comments and elements', () => {
- const ast = parse(`
\n \n
`)
+ const ast = baseParse(`
\n \n
`)
expect(ast.children.length).toBe(3)
expect(ast.children[0].type).toBe(NodeTypes.ELEMENT)
expect(ast.children[1].type).toBe(NodeTypes.COMMENT)
@@ -1630,7 +1630,7 @@ foo
})
it('should NOT remove whitespaces w/ newline between interpolations', () => {
- const ast = parse(`{{ foo }} \n {{ bar }}`)
+ const ast = baseParse(`{{ foo }} \n {{ bar }}`)
expect(ast.children.length).toBe(3)
expect(ast.children[0].type).toBe(NodeTypes.INTERPOLATION)
expect(ast.children[1]).toMatchObject({
@@ -1641,7 +1641,7 @@ foo
})
it('should NOT remove whitespaces w/o newline between elements', () => {
- const ast = parse(`
`)
+ const ast = baseParse(`
`)
expect(ast.children.length).toBe(5)
expect(ast.children.map(c => c.type)).toMatchObject([
NodeTypes.ELEMENT,
@@ -1653,7 +1653,7 @@ foo
})
it('should condense consecutive whitespaces in text', () => {
- const ast = parse(` foo \n bar baz `)
+ const ast = baseParse(` foo \n bar baz `)
expect((ast.children[0] as TextNode).content).toBe(` foo bar baz `)
})
})
@@ -2716,7 +2716,7 @@ foo
),
() => {
const spy = jest.fn()
- const ast = parse(code, {
+ const ast = baseParse(code, {
getNamespace: (tag, parent) => {
const ns = parent ? parent.ns : Namespaces.HTML
if (ns === Namespaces.HTML) {
diff --git a/packages/compiler-core/__tests__/transform.spec.ts b/packages/compiler-core/__tests__/transform.spec.ts
index fb67a5d1f..2e1c1e803 100644
--- a/packages/compiler-core/__tests__/transform.spec.ts
+++ b/packages/compiler-core/__tests__/transform.spec.ts
@@ -1,4 +1,4 @@
-import { parse } from '../src/parse'
+import { baseParse } from '../src/parse'
import { transform, NodeTransform } from '../src/transform'
import {
ElementNode,
@@ -26,7 +26,7 @@ import { PatchFlags } from '@vue/shared'
describe('compiler: transform', () => {
test('context state', () => {
- const ast = parse(`
hello {{ world }}
`)
+ const ast = baseParse(`
hello {{ world }}
`)
// manually store call arguments because context is mutable and shared
// across calls
@@ -72,7 +72,7 @@ describe('compiler: transform', () => {
})
test('context.replaceNode', () => {
- const ast = parse(`
`)
+ const ast = baseParse(`
`)
const plugin: NodeTransform = (node, context) => {
if (node.type === NodeTypes.ELEMENT && node.tag === 'div') {
// change the node to
@@ -106,7 +106,7 @@ describe('compiler: transform', () => {
})
test('context.removeNode', () => {
- const ast = parse(`
hello
`)
+ const ast = baseParse(`
hello
`)
const c1 = ast.children[0]
const c2 = ast.children[2]
@@ -132,7 +132,7 @@ describe('compiler: transform', () => {
})
test('context.removeNode (prev sibling)', () => {
- const ast = parse(`
`)
+ const ast = baseParse(`
`)
const c1 = ast.children[0]
const c2 = ast.children[2]
@@ -159,7 +159,7 @@ describe('compiler: transform', () => {
})
test('context.removeNode (next sibling)', () => {
- const ast = parse(`
`)
+ const ast = baseParse(`
`)
const c1 = ast.children[0]
const d1 = ast.children[1]
@@ -186,7 +186,7 @@ describe('compiler: transform', () => {
})
test('context.hoist', () => {
- const ast = parse(`
`)
+ const ast = baseParse(`
`)
const hoisted: ExpressionNode[] = []
const mock: NodeTransform = (node, context) => {
if (node.type === NodeTypes.ELEMENT) {
@@ -204,7 +204,7 @@ describe('compiler: transform', () => {
})
test('onError option', () => {
- const ast = parse(`
`)
+ const ast = baseParse(`
`)
const loc = ast.children[0].loc
const plugin: NodeTransform = (node, context) => {
context.onError(
@@ -225,20 +225,20 @@ describe('compiler: transform', () => {
})
test('should inject toString helper for interpolations', () => {
- const ast = parse(`{{ foo }}`)
+ const ast = baseParse(`{{ foo }}`)
transform(ast, {})
expect(ast.helpers).toContain(TO_STRING)
})
test('should inject createVNode and Comment for comments', () => {
- const ast = parse(``)
+ const ast = baseParse(``)
transform(ast, {})
expect(ast.helpers).toContain(CREATE_COMMENT)
})
describe('root codegenNode', () => {
function transformWithCodegen(template: string) {
- const ast = parse(template)
+ const ast = baseParse(template)
transform(ast, {
nodeTransforms: [
transformIf,
diff --git a/packages/compiler-core/__tests__/transforms/hoistStatic.spec.ts b/packages/compiler-core/__tests__/transforms/hoistStatic.spec.ts
index b00584851..3989805ee 100644
--- a/packages/compiler-core/__tests__/transforms/hoistStatic.spec.ts
+++ b/packages/compiler-core/__tests__/transforms/hoistStatic.spec.ts
@@ -1,5 +1,5 @@
import {
- parse,
+ baseParse as parse,
transform,
NodeTypes,
generate,
diff --git a/packages/compiler-core/__tests__/transforms/transformElement.spec.ts b/packages/compiler-core/__tests__/transforms/transformElement.spec.ts
index 17ee4724f..92e2b3460 100644
--- a/packages/compiler-core/__tests__/transforms/transformElement.spec.ts
+++ b/packages/compiler-core/__tests__/transforms/transformElement.spec.ts
@@ -1,4 +1,9 @@
-import { CompilerOptions, parse, transform, ErrorCodes } from '../../src'
+import {
+ CompilerOptions,
+ baseParse as parse,
+ transform,
+ ErrorCodes
+} from '../../src'
import {
RESOLVE_COMPONENT,
CREATE_VNODE,
diff --git a/packages/compiler-core/__tests__/transforms/transformExpressions.spec.ts b/packages/compiler-core/__tests__/transforms/transformExpressions.spec.ts
index 09f6ecbff..6f1f280bd 100644
--- a/packages/compiler-core/__tests__/transforms/transformExpressions.spec.ts
+++ b/packages/compiler-core/__tests__/transforms/transformExpressions.spec.ts
@@ -1,5 +1,5 @@
import {
- parse,
+ baseParse as parse,
transform,
ElementNode,
DirectiveNode,
diff --git a/packages/compiler-core/__tests__/transforms/transformSlotOutlet.spec.ts b/packages/compiler-core/__tests__/transforms/transformSlotOutlet.spec.ts
index 1e6a4b541..1bcd52d0e 100644
--- a/packages/compiler-core/__tests__/transforms/transformSlotOutlet.spec.ts
+++ b/packages/compiler-core/__tests__/transforms/transformSlotOutlet.spec.ts
@@ -1,6 +1,6 @@
import {
CompilerOptions,
- parse,
+ baseParse as parse,
transform,
ElementNode,
NodeTypes,
diff --git a/packages/compiler-core/__tests__/transforms/transformText.spec.ts b/packages/compiler-core/__tests__/transforms/transformText.spec.ts
index d11f4b615..ab5341c32 100644
--- a/packages/compiler-core/__tests__/transforms/transformText.spec.ts
+++ b/packages/compiler-core/__tests__/transforms/transformText.spec.ts
@@ -1,6 +1,6 @@
import {
CompilerOptions,
- parse,
+ baseParse as parse,
transform,
NodeTypes,
generate,
diff --git a/packages/compiler-core/__tests__/transforms/vBind.spec.ts b/packages/compiler-core/__tests__/transforms/vBind.spec.ts
index 2f1c9aba7..d2fa15ef8 100644
--- a/packages/compiler-core/__tests__/transforms/vBind.spec.ts
+++ b/packages/compiler-core/__tests__/transforms/vBind.spec.ts
@@ -1,5 +1,5 @@
import {
- parse,
+ baseParse as parse,
transform,
ElementNode,
ObjectExpression,
diff --git a/packages/compiler-core/__tests__/transforms/vFor.spec.ts b/packages/compiler-core/__tests__/transforms/vFor.spec.ts
index 93b6bc903..05fc61470 100644
--- a/packages/compiler-core/__tests__/transforms/vFor.spec.ts
+++ b/packages/compiler-core/__tests__/transforms/vFor.spec.ts
@@ -1,4 +1,4 @@
-import { parse } from '../../src/parse'
+import { baseParse as parse } from '../../src/parse'
import { transform } from '../../src/transform'
import { transformIf } from '../../src/transforms/vIf'
import { transformFor } from '../../src/transforms/vFor'
diff --git a/packages/compiler-core/__tests__/transforms/vIf.spec.ts b/packages/compiler-core/__tests__/transforms/vIf.spec.ts
index 7e3470234..f50ad6629 100644
--- a/packages/compiler-core/__tests__/transforms/vIf.spec.ts
+++ b/packages/compiler-core/__tests__/transforms/vIf.spec.ts
@@ -1,4 +1,4 @@
-import { parse } from '../../src/parse'
+import { baseParse as parse } from '../../src/parse'
import { transform } from '../../src/transform'
import { transformIf } from '../../src/transforms/vIf'
import { transformElement } from '../../src/transforms/transformElement'
diff --git a/packages/compiler-core/__tests__/transforms/vModel.spec.ts b/packages/compiler-core/__tests__/transforms/vModel.spec.ts
index c2ce8dae3..5f2721f8d 100644
--- a/packages/compiler-core/__tests__/transforms/vModel.spec.ts
+++ b/packages/compiler-core/__tests__/transforms/vModel.spec.ts
@@ -1,5 +1,5 @@
import {
- parse,
+ baseParse as parse,
transform,
generate,
ElementNode,
diff --git a/packages/compiler-core/__tests__/transforms/vOn.spec.ts b/packages/compiler-core/__tests__/transforms/vOn.spec.ts
index 57b7c4f89..7dfe92a00 100644
--- a/packages/compiler-core/__tests__/transforms/vOn.spec.ts
+++ b/packages/compiler-core/__tests__/transforms/vOn.spec.ts
@@ -1,5 +1,5 @@
import {
- parse,
+ baseParse as parse,
transform,
ElementNode,
ObjectExpression,
diff --git a/packages/compiler-core/__tests__/transforms/vOnce.spec.ts b/packages/compiler-core/__tests__/transforms/vOnce.spec.ts
index 5d2a2a05f..1c9f9ace9 100644
--- a/packages/compiler-core/__tests__/transforms/vOnce.spec.ts
+++ b/packages/compiler-core/__tests__/transforms/vOnce.spec.ts
@@ -1,5 +1,5 @@
import {
- parse,
+ baseParse as parse,
transform,
NodeTypes,
generate,
diff --git a/packages/compiler-core/__tests__/transforms/vSlot.spec.ts b/packages/compiler-core/__tests__/transforms/vSlot.spec.ts
index bf48b6cba..56be19aad 100644
--- a/packages/compiler-core/__tests__/transforms/vSlot.spec.ts
+++ b/packages/compiler-core/__tests__/transforms/vSlot.spec.ts
@@ -1,6 +1,6 @@
import {
CompilerOptions,
- parse,
+ baseParse as parse,
transform,
generate,
ElementNode,
diff --git a/packages/compiler-core/src/compile.ts b/packages/compiler-core/src/compile.ts
index d6214137c..7699dae8d 100644
--- a/packages/compiler-core/src/compile.ts
+++ b/packages/compiler-core/src/compile.ts
@@ -1,5 +1,5 @@
import { CompilerOptions } from './options'
-import { parse } from './parse'
+import { baseParse } from './parse'
import { transform } from './transform'
import { generate, CodegenResult } from './codegen'
import { RootNode } from './ast'
@@ -43,7 +43,7 @@ export function baseCompile(
onError(createCompilerError(ErrorCodes.X_SCOPE_ID_NOT_SUPPORTED))
}
- const ast = isString(template) ? parse(template, options) : template
+ const ast = isString(template) ? baseParse(template, options) : template
transform(ast, {
...options,
prefixIdentifiers,
diff --git a/packages/compiler-core/src/index.ts b/packages/compiler-core/src/index.ts
index 723fe8c3b..78a1dd3e3 100644
--- a/packages/compiler-core/src/index.ts
+++ b/packages/compiler-core/src/index.ts
@@ -7,7 +7,7 @@ export {
TransformOptions,
CodegenOptions
} from './options'
-export { parse, TextModes } from './parse'
+export { baseParse, TextModes } from './parse'
export {
transform,
createStructuralDirectiveTransform,
diff --git a/packages/compiler-core/src/parse.ts b/packages/compiler-core/src/parse.ts
index fa31036dd..b9b37953b 100644
--- a/packages/compiler-core/src/parse.ts
+++ b/packages/compiler-core/src/parse.ts
@@ -66,7 +66,10 @@ interface ParserContext {
inPre: boolean
}
-export function parse(content: string, options: ParserOptions = {}): RootNode {
+export function baseParse(
+ content: string,
+ options: ParserOptions = {}
+): RootNode {
const context = createParserContext(content, options)
const start = getCursor(context)
diff --git a/packages/compiler-dom/__tests__/parse.spec.ts b/packages/compiler-dom/__tests__/parse.spec.ts
index 52f142e11..e10cf2555 100644
--- a/packages/compiler-dom/__tests__/parse.spec.ts
+++ b/packages/compiler-dom/__tests__/parse.spec.ts
@@ -1,5 +1,5 @@
import {
- parse,
+ baseParse as parse,
NodeTypes,
ElementNode,
TextNode,
diff --git a/packages/compiler-dom/__tests__/transforms/transformStyle.spec.ts b/packages/compiler-dom/__tests__/transforms/transformStyle.spec.ts
index 5c568c271..aabe94d4c 100644
--- a/packages/compiler-dom/__tests__/transforms/transformStyle.spec.ts
+++ b/packages/compiler-dom/__tests__/transforms/transformStyle.spec.ts
@@ -1,5 +1,5 @@
import {
- parse,
+ baseParse as parse,
transform,
CompilerOptions,
ElementNode,
diff --git a/packages/compiler-dom/__tests__/transforms/vCloak.spec.ts b/packages/compiler-dom/__tests__/transforms/vCloak.spec.ts
index 955dde731..03d7f7169 100644
--- a/packages/compiler-dom/__tests__/transforms/vCloak.spec.ts
+++ b/packages/compiler-dom/__tests__/transforms/vCloak.spec.ts
@@ -1,5 +1,5 @@
import {
- parse,
+ baseParse as parse,
transform,
ElementNode,
CallExpression
diff --git a/packages/compiler-dom/__tests__/transforms/vHtml.spec.ts b/packages/compiler-dom/__tests__/transforms/vHtml.spec.ts
index 12d3d6b32..7d81fcb4f 100644
--- a/packages/compiler-dom/__tests__/transforms/vHtml.spec.ts
+++ b/packages/compiler-dom/__tests__/transforms/vHtml.spec.ts
@@ -1,5 +1,5 @@
import {
- parse,
+ baseParse as parse,
transform,
PlainElementNode,
CompilerOptions
diff --git a/packages/compiler-dom/__tests__/transforms/vModel.spec.ts b/packages/compiler-dom/__tests__/transforms/vModel.spec.ts
index 393b62d91..a70e117ad 100644
--- a/packages/compiler-dom/__tests__/transforms/vModel.spec.ts
+++ b/packages/compiler-dom/__tests__/transforms/vModel.spec.ts
@@ -1,4 +1,9 @@
-import { parse, transform, CompilerOptions, generate } from '@vue/compiler-core'
+import {
+ baseParse as parse,
+ transform,
+ CompilerOptions,
+ generate
+} from '@vue/compiler-core'
import { transformModel } from '../../src/transforms/vModel'
import { transformElement } from '../../../compiler-core/src/transforms/transformElement'
import { DOMErrorCodes } from '../../src/errors'
diff --git a/packages/compiler-dom/__tests__/transforms/vOn.spec.ts b/packages/compiler-dom/__tests__/transforms/vOn.spec.ts
index 20001b491..806c80fed 100644
--- a/packages/compiler-dom/__tests__/transforms/vOn.spec.ts
+++ b/packages/compiler-dom/__tests__/transforms/vOn.spec.ts
@@ -1,5 +1,5 @@
import {
- parse,
+ baseParse as parse,
transform,
CompilerOptions,
ElementNode,
diff --git a/packages/compiler-dom/__tests__/transforms/vShow.spec.ts b/packages/compiler-dom/__tests__/transforms/vShow.spec.ts
index 3bac6bbe5..3c70741cb 100644
--- a/packages/compiler-dom/__tests__/transforms/vShow.spec.ts
+++ b/packages/compiler-dom/__tests__/transforms/vShow.spec.ts
@@ -1,4 +1,9 @@
-import { parse, transform, generate, CompilerOptions } from '@vue/compiler-core'
+import {
+ baseParse as parse,
+ transform,
+ generate,
+ CompilerOptions
+} from '@vue/compiler-core'
import { transformElement } from '../../../compiler-core/src/transforms/transformElement'
import { transformShow } from '../../src/transforms/vShow'
import { DOMErrorCodes } from '../../src/errors'
diff --git a/packages/compiler-dom/__tests__/transforms/vText.spec.ts b/packages/compiler-dom/__tests__/transforms/vText.spec.ts
index ef27ec509..83f052cbd 100644
--- a/packages/compiler-dom/__tests__/transforms/vText.spec.ts
+++ b/packages/compiler-dom/__tests__/transforms/vText.spec.ts
@@ -1,5 +1,5 @@
import {
- parse,
+ baseParse as parse,
transform,
PlainElementNode,
CompilerOptions
diff --git a/packages/compiler-dom/src/index.ts b/packages/compiler-dom/src/index.ts
index 0c42dfee1..8bbc774c2 100644
--- a/packages/compiler-dom/src/index.ts
+++ b/packages/compiler-dom/src/index.ts
@@ -1,8 +1,10 @@
import {
baseCompile,
+ baseParse,
CompilerOptions,
CodegenResult,
- isBuiltInType
+ isBuiltInType,
+ ParserOptions
} from '@vue/compiler-core'
import { parserOptionsMinimal } from './parserOptionsMinimal'
import { parserOptionsStandard } from './parserOptionsStandard'
@@ -15,13 +17,15 @@ import { transformOn } from './transforms/vOn'
import { transformShow } from './transforms/vShow'
import { TRANSITION, TRANSITION_GROUP } from './runtimeHelpers'
+const parserOptions = __BROWSER__ ? parserOptionsMinimal : parserOptionsStandard
+
export function compile(
template: string,
options: CompilerOptions = {}
): CodegenResult {
return baseCompile(template, {
+ ...parserOptions,
...options,
- ...(__BROWSER__ ? parserOptionsMinimal : parserOptionsStandard),
nodeTransforms: [transformStyle, ...(options.nodeTransforms || [])],
directiveTransforms: {
cloak: transformCloak,
@@ -42,4 +46,11 @@ export function compile(
})
}
+export function parse(template: string, options: ParserOptions = {}) {
+ return baseParse(template, {
+ ...parserOptions,
+ ...options
+ })
+}
+
export * from '@vue/compiler-core'
diff --git a/packages/compiler-sfc/__tests__/compileTemplate.spec.ts b/packages/compiler-sfc/__tests__/compileTemplate.spec.ts
index c6e0df029..03a32ba0f 100644
--- a/packages/compiler-sfc/__tests__/compileTemplate.spec.ts
+++ b/packages/compiler-sfc/__tests__/compileTemplate.spec.ts
@@ -23,7 +23,7 @@ body
`,
{ filename: 'example.vue', sourceMap: true }
- ).template as SFCTemplateBlock
+ ).descriptor.template as SFCTemplateBlock
const result = compileTemplate({
filename: 'example.vue',
@@ -35,10 +35,10 @@ body
})
test('warn missing preprocessor', () => {
- const template = parse(`
\n\n`, {
+ const template = parse(`
hi\n`, {
filename: 'example.vue',
sourceMap: true
- }).template as SFCTemplateBlock
+ }).descriptor.template as SFCTemplateBlock
const result = compileTemplate({
filename: 'example.vue',
@@ -70,10 +70,10 @@ test('source map', () => {
`
-
+
`,
{ filename: 'example.vue', sourceMap: true }
- ).template as SFCTemplateBlock
+ ).descriptor.template as SFCTemplateBlock
const result = compileTemplate({
filename: 'example.vue',
@@ -86,7 +86,7 @@ test('source map', () => {
test('template errors', () => {
const result = compileTemplate({
filename: 'example.vue',
- source: `
`
})
expect(result.errors).toMatchSnapshot()
@@ -100,7 +100,7 @@ test('preprocessor errors', () => {
`,
{ filename: 'example.vue', sourceMap: true }
- ).template as SFCTemplateBlock
+ ).descriptor.template as SFCTemplateBlock
const result = compileTemplate({
filename: 'example.vue',
diff --git a/packages/compiler-sfc/__tests__/parse.spec.ts b/packages/compiler-sfc/__tests__/parse.spec.ts
index a3bd86b7b..6a4534c11 100644
--- a/packages/compiler-sfc/__tests__/parse.spec.ts
+++ b/packages/compiler-sfc/__tests__/parse.spec.ts
@@ -1,5 +1,6 @@
import { parse } from '../src'
import { mockWarn } from '@vue/runtime-test'
+import { baseParse, baseCompile } from '@vue/compiler-core'
describe('compiler:sfc', () => {
mockWarn()
@@ -7,13 +8,14 @@ describe('compiler:sfc', () => {
describe('source map', () => {
test('style block', () => {
const style = parse(`\n`)
- .styles[0]
+ .descriptor.styles[0]
// TODO need to actually test this with SourceMapConsumer
expect(style.map).not.toBeUndefined()
})
test('script block', () => {
- const script = parse(`\n`).script
+ const script = parse(`\n`)
+ .descriptor.script
// TODO need to actually test this with SourceMapConsumer
expect(script!.map).not.toBeUndefined()
})
@@ -30,12 +32,12 @@ export default {}
`
- const padFalse = parse(content.trim(), { pad: false })
+ const padFalse = parse(content.trim(), { pad: false }).descriptor
expect(padFalse.template!.content).toBe('\n
\n')
expect(padFalse.script!.content).toBe('\nexport default {}\n')
expect(padFalse.styles[0].content).toBe('\nh1 { color: red }\n')
- const padTrue = parse(content.trim(), { pad: true })
+ const padTrue = parse(content.trim(), { pad: true }).descriptor
expect(padTrue.script!.content).toBe(
Array(3 + 1).join('//\n') + '\nexport default {}\n'
)
@@ -43,7 +45,7 @@ h1 { color: red }
Array(6 + 1).join('\n') + '\nh1 { color: red }\n'
)
- const padLine = parse(content.trim(), { pad: 'line' })
+ const padLine = parse(content.trim(), { pad: 'line' }).descriptor
expect(padLine.script!.content).toBe(
Array(3 + 1).join('//\n') + '\nexport default {}\n'
)
@@ -51,7 +53,7 @@ h1 { color: red }
Array(6 + 1).join('\n') + '\nh1 { color: red }\n'
)
- const padSpace = parse(content.trim(), { pad: 'space' })
+ const padSpace = parse(content.trim(), { pad: 'space' }).descriptor
expect(padSpace.script!.content).toBe(
`
\n\n\n