]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
wip: add private api compat flag
authorEvan You <yyx990803@gmail.com>
Thu, 22 Apr 2021 21:50:49 +0000 (17:50 -0400)
committerEvan You <yyx990803@gmail.com>
Thu, 22 Apr 2021 21:50:49 +0000 (17:50 -0400)
packages/runtime-core/src/compat/compatConfig.ts
packages/runtime-core/src/compat/instance.ts
packages/runtime-core/src/compat/renderFn.ts

index 40655111ca2712149b2dd7b1d6b73bf4771457e0..f8a4b52ea10cc2cba3d8ddb134194adb98056e1c 100644 (file)
@@ -58,7 +58,9 @@ export const enum DeprecationTypes {
 
   RENDER_FUNCTION = 'RENDER_FUNCTION',
 
-  FILTERS = 'FILTERS'
+  FILTERS = 'FILTERS',
+
+  PRIVATE_APIS = 'PRIVATE_APIS'
 }
 
 type DeprecationData = {
@@ -404,6 +406,13 @@ const deprecationData: Record<DeprecationTypes, DeprecationData> = {
       `The "|" symbol will be treated as native JavaScript bitwise OR operator. ` +
       `Use method calls or computed properties instead.`,
     link: `https://v3.vuejs.org/guide/migration/filters.html`
+  },
+
+  [DeprecationTypes.PRIVATE_APIS]: {
+    message: name =>
+      `"${name}" is a Vue 2 private API that no longer exists in Vue 3. ` +
+      `If you are seeing this warning only due to a dependency, you can ` +
+      `suppress this warning via { PRIVATE_APIS: 'supress-warning' }.`
   }
 }
 
index b105aafc6da78a75f6286a3609987dab7f571316..208825cca74494e4a99db121bf662a0a9345cf36 100644 (file)
@@ -91,40 +91,44 @@ export function installCompatInstanceProperties(map: PublicPropertiesMap) {
     $off: i => off.bind(null, i),
 
     $children: getCompatChildren,
-    $listeners: getCompatListeners,
+    $listeners: getCompatListeners
+  } as PublicPropertiesMap)
 
-    $vnode: i => i.vnode,
+  if (isCompatEnabled(DeprecationTypes.PRIVATE_APIS, null)) {
+    extend(map, {
+      $vnode: i => i.vnode,
 
-    // inject addtional properties into $options for compat
-    $options: i => {
-      let res = resolveMergedOptions(i)
-      if (res === i.type) res = i.type.__merged = extend({}, res)
-      res.parent = i.proxy!.$parent
-      res.propsData = i.vnode.props
-      return res
-    },
+      // inject addtional properties into $options for compat
+      $options: i => {
+        let res = resolveMergedOptions(i)
+        if (res === i.type) res = i.type.__merged = extend({}, res)
+        res.parent = i.proxy!.$parent
+        res.propsData = i.vnode.props
+        return res
+      },
 
-    // v2 render helpers
-    $createElement: () => compatH,
-    _self: i => i.proxy,
-    _uid: i => i.uid,
-    _c: () => compatH,
-    _o: () => legacyMarkOnce,
-    _n: () => toNumber,
-    _s: () => toDisplayString,
-    _l: () => renderList,
-    _t: i => legacyRenderSlot.bind(null, i),
-    _q: () => looseEqual,
-    _i: () => looseIndexOf,
-    _m: i => legacyRenderStatic.bind(null, i),
-    _f: () => resolveFilter,
-    _k: i => legacyCheckKeyCodes.bind(null, i),
-    _b: () => legacyBindObjectProps,
-    _v: () => createTextVNode,
-    _e: () => createCommentVNode,
-    _u: () => legacyresolveScopedSlots,
-    _g: () => legacyBindObjectListeners,
-    _d: () => legacyBindDynamicKeys,
-    _p: () => legacyPrependModifier
-  } as PublicPropertiesMap)
+      // v2 render helpers
+      $createElement: () => compatH,
+      _self: i => i.proxy,
+      _uid: i => i.uid,
+      _c: () => compatH,
+      _o: () => legacyMarkOnce,
+      _n: () => toNumber,
+      _s: () => toDisplayString,
+      _l: () => renderList,
+      _t: i => legacyRenderSlot.bind(null, i),
+      _q: () => looseEqual,
+      _i: () => looseIndexOf,
+      _m: i => legacyRenderStatic.bind(null, i),
+      _f: () => resolveFilter,
+      _k: i => legacyCheckKeyCodes.bind(null, i),
+      _b: () => legacyBindObjectProps,
+      _v: () => createTextVNode,
+      _e: () => createCommentVNode,
+      _u: () => legacyresolveScopedSlots,
+      _g: () => legacyBindObjectListeners,
+      _d: () => legacyBindDynamicKeys,
+      _p: () => legacyPrependModifier
+    } as PublicPropertiesMap)
+  }
 }
index 5fc574b0ce486ce2aa0821ff0a3fd859e9671750..7f69c64e9f109692b64ee693922f5c24bbcc0eb0 100644 (file)
@@ -310,7 +310,11 @@ function convertLegacySlots(vnode: VNode): VNode {
 
 export function defineLegacyVNodeProperties(vnode: VNode) {
   if (
-    isCompatEnabled(DeprecationTypes.RENDER_FUNCTION, currentRenderingInstance)
+    isCompatEnabled(
+      DeprecationTypes.RENDER_FUNCTION,
+      currentRenderingInstance
+    ) &&
+    isCompatEnabled(DeprecationTypes.PRIVATE_APIS, currentRenderingInstance)
   ) {
     const context = currentRenderingInstance
     const getInstance = () => vnode.component && vnode.component.proxy