]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
fix(compiler-dom): fix duplicated transforms
authorEvan You <yyx990803@gmail.com>
Fri, 7 Feb 2020 19:24:56 +0000 (14:24 -0500)
committerEvan You <yyx990803@gmail.com>
Fri, 7 Feb 2020 19:24:56 +0000 (14:24 -0500)
packages/compiler-dom/src/index.ts
packages/compiler-ssr/src/transforms/ssrTransformComponent.ts

index 273d1f0839d18ef54d3fc6f0fecbcd1540167d6c..07f427e5c1187b0a2045ee28ebb53ce0e5ac92cc 100644 (file)
@@ -6,8 +6,8 @@ import {
   ParserOptions,
   RootNode,
   noopDirectiveTransform,
-  TransformPreset,
-  getBaseTransformPreset
+  NodeTransform,
+  DirectiveTransform
 } from '@vue/compiler-core'
 import { parserOptionsMinimal } from './parserOptionsMinimal'
 import { parserOptionsStandard } from './parserOptionsStandard'
@@ -23,43 +23,30 @@ export const parserOptions = __BROWSER__
   ? parserOptionsMinimal
   : parserOptionsStandard
 
-export function getDOMTransformPreset(
-  prefixIdentifiers?: boolean
-): TransformPreset {
-  const [nodeTransforms, directiveTransforms] = getBaseTransformPreset(
-    prefixIdentifiers
-  )
-  return [
-    [
-      ...nodeTransforms,
-      transformStyle,
-      ...(__DEV__ ? [warnTransitionChildren] : [])
-    ],
-    {
-      ...directiveTransforms,
-      cloak: noopDirectiveTransform,
-      html: transformVHtml,
-      text: transformVText,
-      model: transformModel, // override compiler-core
-      on: transformOn, // override compiler-core
-      show: transformShow
-    }
-  ]
+export const DOMNodeTransforms: NodeTransform[] = [
+  transformStyle,
+  ...(__DEV__ ? [warnTransitionChildren] : [])
+]
+
+export const DOMDirectiveTransforms: Record<string, DirectiveTransform> = {
+  cloak: noopDirectiveTransform,
+  html: transformVHtml,
+  text: transformVText,
+  model: transformModel, // override compiler-core
+  on: transformOn, // override compiler-core
+  show: transformShow
 }
 
 export function compile(
   template: string,
   options: CompilerOptions = {}
 ): CodegenResult {
-  const [nodeTransforms, directiveTransforms] = getDOMTransformPreset(
-    options.prefixIdentifiers
-  )
   return baseCompile(template, {
     ...parserOptions,
     ...options,
-    nodeTransforms: [...nodeTransforms, ...(options.nodeTransforms || [])],
+    nodeTransforms: [...DOMNodeTransforms, ...(options.nodeTransforms || [])],
     directiveTransforms: {
-      ...directiveTransforms,
+      ...DOMDirectiveTransforms,
       ...(options.directiveTransforms || {})
     }
   })
index 500e4ee88bca3d67e6c6f1b7547fbb2a7a3b139d..a9c38c70cfaf7ca5159ff691b1ccde505c50a858 100644 (file)
@@ -16,7 +16,9 @@ import {
   TRANSITION_GROUP,
   createIfStatement,
   createSimpleExpression,
-  getDOMTransformPreset,
+  getBaseTransformPreset,
+  DOMNodeTransforms,
+  DOMDirectiveTransforms,
   createReturnStatement,
   ReturnStatement,
   Namespaces,
@@ -165,9 +167,14 @@ export function ssrProcessComponent(
 
 export const rawOptionsMap = new WeakMap<RootNode, CompilerOptions>()
 
-const [vnodeNodeTransforms, vnodeDirectiveTransforms] = getDOMTransformPreset(
+const [baseNodeTransforms, baseDirectiveTransforms] = getBaseTransformPreset(
   true
 )
+const vnodeNodeTransforms = [...baseNodeTransforms, ...DOMNodeTransforms]
+const vnodeDirectiveTransforms = {
+  ...baseDirectiveTransforms,
+  ...DOMDirectiveTransforms
+}
 
 function createVNodeSlotBranch(
   props: ExpressionNode | undefined,