@vue/runtime-core 3.4.18 → 3.4.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @vue/runtime-core v3.4.18
2
+ * @vue/runtime-core v3.4.20
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -188,13 +188,11 @@ const ErrorTypeStrings$1 = {
188
188
  [14]: "scheduler flush. This is likely a Vue internals bug. Please open an issue at https://github.com/vuejs/core ."
189
189
  };
190
190
  function callWithErrorHandling(fn, instance, type, args) {
191
- let res;
192
191
  try {
193
- res = args ? fn(...args) : fn();
192
+ return args ? fn(...args) : fn();
194
193
  } catch (err) {
195
194
  handleError(err, instance, type);
196
195
  }
197
- return res;
198
196
  }
199
197
  function callWithAsyncErrorHandling(fn, instance, type, args) {
200
198
  if (shared.isFunction(fn)) {
@@ -1199,6 +1197,8 @@ const SuspenseImpl = {
1199
1197
  } else {
1200
1198
  if (parentSuspense && parentSuspense.deps > 0) {
1201
1199
  n2.suspense = n1.suspense;
1200
+ n2.suspense.vnode = n2;
1201
+ n2.el = n1.el;
1202
1202
  return;
1203
1203
  }
1204
1204
  patchSuspense(
@@ -2152,7 +2152,6 @@ const BaseTransitionImpl = {
2152
2152
  setup(props, { slots }) {
2153
2153
  const instance = getCurrentInstance();
2154
2154
  const state = useTransitionState();
2155
- let prevTransitionKey;
2156
2155
  return () => {
2157
2156
  const children = slots.default && getTransitionRawChildren(slots.default(), true);
2158
2157
  if (!children || !children.length) {
@@ -2195,18 +2194,7 @@ const BaseTransitionImpl = {
2195
2194
  setTransitionHooks(innerChild, enterHooks);
2196
2195
  const oldChild = instance.subTree;
2197
2196
  const oldInnerChild = oldChild && getKeepAliveChild(oldChild);
2198
- let transitionKeyChanged = false;
2199
- const { getTransitionKey } = innerChild.type;
2200
- if (getTransitionKey) {
2201
- const key = getTransitionKey();
2202
- if (prevTransitionKey === void 0) {
2203
- prevTransitionKey = key;
2204
- } else if (key !== prevTransitionKey) {
2205
- prevTransitionKey = key;
2206
- transitionKeyChanged = true;
2207
- }
2208
- }
2209
- if (oldInnerChild && oldInnerChild.type !== Comment && (!isSameVNodeType(innerChild, oldInnerChild) || transitionKeyChanged)) {
2197
+ if (oldInnerChild && oldInnerChild.type !== Comment && !isSameVNodeType(innerChild, oldInnerChild)) {
2210
2198
  const leavingHooks = resolveTransitionHooks(
2211
2199
  oldInnerChild,
2212
2200
  rawProps,
@@ -4283,8 +4271,16 @@ function validatePropName(key) {
4283
4271
  return false;
4284
4272
  }
4285
4273
  function getType(ctor) {
4286
- const match = ctor && ctor.toString().match(/^\s*(function|class) (\w+)/);
4287
- return match ? match[2] : ctor === null ? "null" : "";
4274
+ if (ctor === null) {
4275
+ return "null";
4276
+ }
4277
+ if (typeof ctor === "function") {
4278
+ return ctor.name || "";
4279
+ } else if (typeof ctor === "object") {
4280
+ const name = ctor.constructor && ctor.constructor.name;
4281
+ return name || "";
4282
+ }
4283
+ return "";
4288
4284
  }
4289
4285
  function isSameType(a, b) {
4290
4286
  return getType(a) === getType(b);
@@ -5081,9 +5077,12 @@ function propHasMismatch(el, key, clientValue, vnode, instance) {
5081
5077
  }
5082
5078
  }
5083
5079
  }
5084
- const cssVars = (_a = instance == null ? void 0 : instance.getCssVars) == null ? void 0 : _a.call(instance);
5085
- for (const key2 in cssVars) {
5086
- expectedMap.set(`--${key2}`, String(cssVars[key2]));
5080
+ const root = instance == null ? void 0 : instance.subTree;
5081
+ if (vnode === root || (root == null ? void 0 : root.type) === Fragment && root.children.includes(vnode)) {
5082
+ const cssVars = (_a = instance == null ? void 0 : instance.getCssVars) == null ? void 0 : _a.call(instance);
5083
+ for (const key2 in cssVars) {
5084
+ expectedMap.set(`--${key2}`, String(cssVars[key2]));
5085
+ }
5087
5086
  }
5088
5087
  if (!isMapEqual(actualMap, expectedMap)) {
5089
5088
  mismatchType = mismatchKey = "style";
@@ -7493,9 +7492,8 @@ const unsetCurrentInstance = () => {
7493
7492
  internalSetCurrentInstance(null);
7494
7493
  };
7495
7494
  const isBuiltInTag = /* @__PURE__ */ shared.makeMap("slot,component");
7496
- function validateComponentName(name, config) {
7497
- const appIsNativeTag = config.isNativeTag || shared.NO;
7498
- if (isBuiltInTag(name) || appIsNativeTag(name)) {
7495
+ function validateComponentName(name, { isNativeTag }) {
7496
+ if (isBuiltInTag(name) || isNativeTag(name)) {
7499
7497
  warn$1(
7500
7498
  "Do not use built-in or reserved HTML elements as component id: " + name
7501
7499
  );
@@ -7790,7 +7788,14 @@ function isClassComponent(value) {
7790
7788
  }
7791
7789
 
7792
7790
  const computed = (getterOrOptions, debugOptions) => {
7793
- return reactivity.computed(getterOrOptions, debugOptions, isInSSRComponentSetup);
7791
+ const c = reactivity.computed(getterOrOptions, debugOptions, isInSSRComponentSetup);
7792
+ {
7793
+ const i = getCurrentInstance();
7794
+ if (i && i.appContext.config.warnRecursiveComputed) {
7795
+ c._warnRecursive = true;
7796
+ }
7797
+ }
7798
+ return c;
7794
7799
  };
7795
7800
 
7796
7801
  function useModel(props, name, options = shared.EMPTY_OBJ) {
@@ -8068,7 +8073,7 @@ function isMemoSame(cached, memo) {
8068
8073
  return true;
8069
8074
  }
8070
8075
 
8071
- const version = "3.4.18";
8076
+ const version = "3.4.20";
8072
8077
  const warn = warn$1 ;
8073
8078
  const ErrorTypeStrings = ErrorTypeStrings$1 ;
8074
8079
  const devtools = devtools$1 ;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @vue/runtime-core v3.4.18
2
+ * @vue/runtime-core v3.4.20
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -78,13 +78,11 @@ const ErrorTypeStrings$1 = {
78
78
  [14]: "scheduler flush. This is likely a Vue internals bug. Please open an issue at https://github.com/vuejs/core ."
79
79
  };
80
80
  function callWithErrorHandling(fn, instance, type, args) {
81
- let res;
82
81
  try {
83
- res = args ? fn(...args) : fn();
82
+ return args ? fn(...args) : fn();
84
83
  } catch (err) {
85
84
  handleError(err, instance, type);
86
85
  }
87
- return res;
88
86
  }
89
87
  function callWithAsyncErrorHandling(fn, instance, type, args) {
90
88
  if (shared.isFunction(fn)) {
@@ -693,6 +691,8 @@ const SuspenseImpl = {
693
691
  } else {
694
692
  if (parentSuspense && parentSuspense.deps > 0) {
695
693
  n2.suspense = n1.suspense;
694
+ n2.suspense.vnode = n2;
695
+ n2.el = n1.el;
696
696
  return;
697
697
  }
698
698
  patchSuspense(
@@ -1563,7 +1563,6 @@ const BaseTransitionImpl = {
1563
1563
  setup(props, { slots }) {
1564
1564
  const instance = getCurrentInstance();
1565
1565
  const state = useTransitionState();
1566
- let prevTransitionKey;
1567
1566
  return () => {
1568
1567
  const children = slots.default && getTransitionRawChildren(slots.default(), true);
1569
1568
  if (!children || !children.length) {
@@ -1596,18 +1595,7 @@ const BaseTransitionImpl = {
1596
1595
  setTransitionHooks(innerChild, enterHooks);
1597
1596
  const oldChild = instance.subTree;
1598
1597
  const oldInnerChild = oldChild && getKeepAliveChild(oldChild);
1599
- let transitionKeyChanged = false;
1600
- const { getTransitionKey } = innerChild.type;
1601
- if (getTransitionKey) {
1602
- const key = getTransitionKey();
1603
- if (prevTransitionKey === void 0) {
1604
- prevTransitionKey = key;
1605
- } else if (key !== prevTransitionKey) {
1606
- prevTransitionKey = key;
1607
- transitionKeyChanged = true;
1608
- }
1609
- }
1610
- if (oldInnerChild && oldInnerChild.type !== Comment && (!isSameVNodeType(innerChild, oldInnerChild) || transitionKeyChanged)) {
1598
+ if (oldInnerChild && oldInnerChild.type !== Comment && !isSameVNodeType(innerChild, oldInnerChild)) {
1611
1599
  const leavingHooks = resolveTransitionHooks(
1612
1600
  oldInnerChild,
1613
1601
  rawProps,
@@ -3337,8 +3325,16 @@ function validatePropName(key) {
3337
3325
  return false;
3338
3326
  }
3339
3327
  function getType(ctor) {
3340
- const match = ctor && ctor.toString().match(/^\s*(function|class) (\w+)/);
3341
- return match ? match[2] : ctor === null ? "null" : "";
3328
+ if (ctor === null) {
3329
+ return "null";
3330
+ }
3331
+ if (typeof ctor === "function") {
3332
+ return ctor.name || "";
3333
+ } else if (typeof ctor === "object") {
3334
+ const name = ctor.constructor && ctor.constructor.name;
3335
+ return name || "";
3336
+ }
3337
+ return "";
3342
3338
  }
3343
3339
  function isSameType(a, b) {
3344
3340
  return getType(a) === getType(b);
@@ -6179,7 +6175,8 @@ function isClassComponent(value) {
6179
6175
  }
6180
6176
 
6181
6177
  const computed = (getterOrOptions, debugOptions) => {
6182
- return reactivity.computed(getterOrOptions, debugOptions, isInSSRComponentSetup);
6178
+ const c = reactivity.computed(getterOrOptions, debugOptions, isInSSRComponentSetup);
6179
+ return c;
6183
6180
  };
6184
6181
 
6185
6182
  function useModel(props, name, options = shared.EMPTY_OBJ) {
@@ -6279,7 +6276,7 @@ function isMemoSame(cached, memo) {
6279
6276
  return true;
6280
6277
  }
6281
6278
 
6282
- const version = "3.4.18";
6279
+ const version = "3.4.20";
6283
6280
  const warn$1 = shared.NOOP;
6284
6281
  const ErrorTypeStrings = ErrorTypeStrings$1 ;
6285
6282
  const devtools = void 0;
@@ -743,16 +743,17 @@ export declare function hasInjectionContext(): boolean;
743
743
  export type PublicProps = VNodeProps & AllowedComponentProps & ComponentCustomProps;
744
744
  type ResolveProps<PropsOrPropOptions, E extends EmitsOptions> = Readonly<PropsOrPropOptions extends ComponentPropsOptions ? ExtractPropTypes<PropsOrPropOptions> : PropsOrPropOptions> & ({} extends E ? {} : EmitsToProps<E>);
745
745
  export type DefineComponent<PropsOrPropOptions = {}, RawBindings = {}, D = {}, C extends ComputedOptions = ComputedOptions, M extends MethodOptions = MethodOptions, Mixin extends ComponentOptionsMixin = ComponentOptionsMixin, Extends extends ComponentOptionsMixin = ComponentOptionsMixin, E extends EmitsOptions = {}, EE extends string = string, PP = PublicProps, Props = ResolveProps<PropsOrPropOptions, E>, Defaults = ExtractDefaultPropTypes<PropsOrPropOptions>, S extends SlotsType = {}> = ComponentPublicInstanceConstructor<CreateComponentPublicInstance<Props, RawBindings, D, C, M, Mixin, Extends, E, PP & Props, Defaults, true, {}, S>> & ComponentOptionsBase<Props, RawBindings, D, C, M, Mixin, Extends, E, EE, Defaults, {}, string, S> & PP;
746
+ export type DefineSetupFnComponent<P extends Record<string, any>, E extends EmitsOptions = {}, S extends SlotsType = SlotsType, Props = P & EmitsToProps<E>, PP = PublicProps> = new (props: Props & PP) => CreateComponentPublicInstance<Props, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, E, PP, {}, false, {}, S>;
746
747
  export declare function defineComponent<Props extends Record<string, any>, E extends EmitsOptions = {}, EE extends string = string, S extends SlotsType = {}>(setup: (props: Props, ctx: SetupContext<E, S>) => RenderFunction | Promise<RenderFunction>, options?: Pick<ComponentOptions, 'name' | 'inheritAttrs'> & {
747
748
  props?: (keyof Props)[];
748
749
  emits?: E | EE[];
749
750
  slots?: S;
750
- }): (props: Props & EmitsToProps<E>) => any;
751
+ }): DefineSetupFnComponent<Props, E, S>;
751
752
  export declare function defineComponent<Props extends Record<string, any>, E extends EmitsOptions = {}, EE extends string = string, S extends SlotsType = {}>(setup: (props: Props, ctx: SetupContext<E, S>) => RenderFunction | Promise<RenderFunction>, options?: Pick<ComponentOptions, 'name' | 'inheritAttrs'> & {
752
753
  props?: ComponentObjectPropsOptions<Props>;
753
754
  emits?: E | EE[];
754
755
  slots?: S;
755
- }): (props: Props & EmitsToProps<E>) => any;
756
+ }): DefineSetupFnComponent<Props, E, S>;
756
757
  export declare function defineComponent<Props = {}, RawBindings = {}, D = {}, C extends ComputedOptions = {}, M extends MethodOptions = {}, Mixin extends ComponentOptionsMixin = ComponentOptionsMixin, Extends extends ComponentOptionsMixin = ComponentOptionsMixin, E extends EmitsOptions = {}, EE extends string = string, S extends SlotsType = {}, I extends ComponentInjectOptions = {}, II extends string = string>(options: ComponentOptionsWithoutProps<Props, RawBindings, D, C, M, Mixin, Extends, E, EE, I, II, S>): DefineComponent<Props, RawBindings, D, C, M, Mixin, Extends, E, EE, PublicProps, ResolveProps<Props, E>, ExtractDefaultPropTypes<Props>, S>;
757
758
  export declare function defineComponent<PropNames extends string, RawBindings, D, C extends ComputedOptions = {}, M extends MethodOptions = {}, Mixin extends ComponentOptionsMixin = ComponentOptionsMixin, Extends extends ComponentOptionsMixin = ComponentOptionsMixin, E extends EmitsOptions = {}, EE extends string = string, S extends SlotsType = {}, I extends ComponentInjectOptions = {}, II extends string = string, Props = Readonly<{
758
759
  [key in PropNames]?: any;
@@ -793,7 +794,7 @@ export interface App<HostElement = any> {
793
794
  }
794
795
  export type OptionMergeFunction = (to: unknown, from: unknown) => any;
795
796
  export interface AppConfig {
796
- readonly isNativeTag?: (tag: string) => boolean;
797
+ readonly isNativeTag: (tag: string) => boolean;
797
798
  performance: boolean;
798
799
  optionMergeStrategies: Record<string, OptionMergeFunction>;
799
800
  globalProperties: ComponentCustomProperties & Record<string, any>;
@@ -808,6 +809,11 @@ export interface AppConfig {
808
809
  * @deprecated use config.compilerOptions.isCustomElement
809
810
  */
810
811
  isCustomElement?: (tag: string) => boolean;
812
+ /**
813
+ * TODO document for 3.5
814
+ * Enable warnings for computed getters that recursively trigger itself.
815
+ */
816
+ warnRecursiveComputed?: boolean;
811
817
  }
812
818
  export interface AppContext {
813
819
  app: App;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @vue/runtime-core v3.4.18
2
+ * @vue/runtime-core v3.4.20
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -188,13 +188,11 @@ const ErrorTypeStrings$1 = {
188
188
  [14]: "scheduler flush. This is likely a Vue internals bug. Please open an issue at https://github.com/vuejs/core ."
189
189
  };
190
190
  function callWithErrorHandling(fn, instance, type, args) {
191
- let res;
192
191
  try {
193
- res = args ? fn(...args) : fn();
192
+ return args ? fn(...args) : fn();
194
193
  } catch (err) {
195
194
  handleError(err, instance, type);
196
195
  }
197
- return res;
198
196
  }
199
197
  function callWithAsyncErrorHandling(fn, instance, type, args) {
200
198
  if (isFunction(fn)) {
@@ -1201,6 +1199,8 @@ const SuspenseImpl = {
1201
1199
  } else {
1202
1200
  if (parentSuspense && parentSuspense.deps > 0) {
1203
1201
  n2.suspense = n1.suspense;
1202
+ n2.suspense.vnode = n2;
1203
+ n2.el = n1.el;
1204
1204
  return;
1205
1205
  }
1206
1206
  patchSuspense(
@@ -2154,7 +2154,6 @@ const BaseTransitionImpl = {
2154
2154
  setup(props, { slots }) {
2155
2155
  const instance = getCurrentInstance();
2156
2156
  const state = useTransitionState();
2157
- let prevTransitionKey;
2158
2157
  return () => {
2159
2158
  const children = slots.default && getTransitionRawChildren(slots.default(), true);
2160
2159
  if (!children || !children.length) {
@@ -2199,18 +2198,7 @@ const BaseTransitionImpl = {
2199
2198
  setTransitionHooks(innerChild, enterHooks);
2200
2199
  const oldChild = instance.subTree;
2201
2200
  const oldInnerChild = oldChild && getKeepAliveChild(oldChild);
2202
- let transitionKeyChanged = false;
2203
- const { getTransitionKey } = innerChild.type;
2204
- if (getTransitionKey) {
2205
- const key = getTransitionKey();
2206
- if (prevTransitionKey === void 0) {
2207
- prevTransitionKey = key;
2208
- } else if (key !== prevTransitionKey) {
2209
- prevTransitionKey = key;
2210
- transitionKeyChanged = true;
2211
- }
2212
- }
2213
- if (oldInnerChild && oldInnerChild.type !== Comment && (!isSameVNodeType(innerChild, oldInnerChild) || transitionKeyChanged)) {
2201
+ if (oldInnerChild && oldInnerChild.type !== Comment && !isSameVNodeType(innerChild, oldInnerChild)) {
2214
2202
  const leavingHooks = resolveTransitionHooks(
2215
2203
  oldInnerChild,
2216
2204
  rawProps,
@@ -4291,8 +4279,16 @@ function validatePropName(key) {
4291
4279
  return false;
4292
4280
  }
4293
4281
  function getType(ctor) {
4294
- const match = ctor && ctor.toString().match(/^\s*(function|class) (\w+)/);
4295
- return match ? match[2] : ctor === null ? "null" : "";
4282
+ if (ctor === null) {
4283
+ return "null";
4284
+ }
4285
+ if (typeof ctor === "function") {
4286
+ return ctor.name || "";
4287
+ } else if (typeof ctor === "object") {
4288
+ const name = ctor.constructor && ctor.constructor.name;
4289
+ return name || "";
4290
+ }
4291
+ return "";
4296
4292
  }
4297
4293
  function isSameType(a, b) {
4298
4294
  return getType(a) === getType(b);
@@ -5099,9 +5095,12 @@ function propHasMismatch(el, key, clientValue, vnode, instance) {
5099
5095
  }
5100
5096
  }
5101
5097
  }
5102
- const cssVars = (_a = instance == null ? void 0 : instance.getCssVars) == null ? void 0 : _a.call(instance);
5103
- for (const key2 in cssVars) {
5104
- expectedMap.set(`--${key2}`, String(cssVars[key2]));
5098
+ const root = instance == null ? void 0 : instance.subTree;
5099
+ if (vnode === root || (root == null ? void 0 : root.type) === Fragment && root.children.includes(vnode)) {
5100
+ const cssVars = (_a = instance == null ? void 0 : instance.getCssVars) == null ? void 0 : _a.call(instance);
5101
+ for (const key2 in cssVars) {
5102
+ expectedMap.set(`--${key2}`, String(cssVars[key2]));
5103
+ }
5105
5104
  }
5106
5105
  if (!isMapEqual(actualMap, expectedMap)) {
5107
5106
  mismatchType = mismatchKey = "style";
@@ -7551,9 +7550,8 @@ const unsetCurrentInstance = () => {
7551
7550
  internalSetCurrentInstance(null);
7552
7551
  };
7553
7552
  const isBuiltInTag = /* @__PURE__ */ makeMap("slot,component");
7554
- function validateComponentName(name, config) {
7555
- const appIsNativeTag = config.isNativeTag || NO;
7556
- if (isBuiltInTag(name) || appIsNativeTag(name)) {
7553
+ function validateComponentName(name, { isNativeTag }) {
7554
+ if (isBuiltInTag(name) || isNativeTag(name)) {
7557
7555
  warn$1(
7558
7556
  "Do not use built-in or reserved HTML elements as component id: " + name
7559
7557
  );
@@ -7862,7 +7860,14 @@ function isClassComponent(value) {
7862
7860
  }
7863
7861
 
7864
7862
  const computed = (getterOrOptions, debugOptions) => {
7865
- return computed$1(getterOrOptions, debugOptions, isInSSRComponentSetup);
7863
+ const c = computed$1(getterOrOptions, debugOptions, isInSSRComponentSetup);
7864
+ if (!!(process.env.NODE_ENV !== "production")) {
7865
+ const i = getCurrentInstance();
7866
+ if (i && i.appContext.config.warnRecursiveComputed) {
7867
+ c._warnRecursive = true;
7868
+ }
7869
+ }
7870
+ return c;
7866
7871
  };
7867
7872
 
7868
7873
  function useModel(props, name, options = EMPTY_OBJ) {
@@ -8140,7 +8145,7 @@ function isMemoSame(cached, memo) {
8140
8145
  return true;
8141
8146
  }
8142
8147
 
8143
- const version = "3.4.18";
8148
+ const version = "3.4.20";
8144
8149
  const warn = !!(process.env.NODE_ENV !== "production") ? warn$1 : NOOP;
8145
8150
  const ErrorTypeStrings = ErrorTypeStrings$1 ;
8146
8151
  const devtools = !!(process.env.NODE_ENV !== "production") || true ? devtools$1 : void 0;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vue/runtime-core",
3
- "version": "3.4.18",
3
+ "version": "3.4.20",
4
4
  "description": "@vue/runtime-core",
5
5
  "main": "index.js",
6
6
  "module": "dist/runtime-core.esm-bundler.js",
@@ -46,7 +46,7 @@
46
46
  },
47
47
  "homepage": "https://github.com/vuejs/core/tree/main/packages/runtime-core#readme",
48
48
  "dependencies": {
49
- "@vue/shared": "3.4.18",
50
- "@vue/reactivity": "3.4.18"
49
+ "@vue/shared": "3.4.20",
50
+ "@vue/reactivity": "3.4.20"
51
51
  }
52
52
  }