@vue/compat 3.2.29 → 3.2.30

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.
@@ -198,13 +198,15 @@ function looseIndexOf(arr, val) {
198
198
  * @private
199
199
  */
200
200
  const toDisplayString = (val) => {
201
- return val == null
202
- ? ''
203
- : isArray(val) ||
204
- (isObject(val) &&
205
- (val.toString === objectToString || !isFunction(val.toString)))
206
- ? JSON.stringify(val, replacer, 2)
207
- : String(val);
201
+ return isString(val)
202
+ ? val
203
+ : val == null
204
+ ? ''
205
+ : isArray(val) ||
206
+ (isObject(val) &&
207
+ (val.toString === objectToString || !isFunction(val.toString)))
208
+ ? JSON.stringify(val, replacer, 2)
209
+ : String(val);
208
210
  };
209
211
  const replacer = (_key, val) => {
210
212
  // can't use isRef here since @vue/shared has no deps
@@ -278,6 +280,7 @@ const isReservedProp = /*#__PURE__*/ makeMap(
278
280
  'onVnodeBeforeMount,onVnodeMounted,' +
279
281
  'onVnodeBeforeUpdate,onVnodeUpdated,' +
280
282
  'onVnodeBeforeUnmount,onVnodeUnmounted');
283
+ const isBuiltInDirective = /*#__PURE__*/ makeMap('bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo');
281
284
  const cacheStringFunction = (fn) => {
282
285
  const cache = Object.create(null);
283
286
  return ((str) => {
@@ -343,7 +346,6 @@ function warn(msg, ...args) {
343
346
  }
344
347
 
345
348
  let activeEffectScope;
346
- const effectScopeStack = [];
347
349
  class EffectScope {
348
350
  constructor(detached = false) {
349
351
  this.active = true;
@@ -358,11 +360,11 @@ class EffectScope {
358
360
  run(fn) {
359
361
  if (this.active) {
360
362
  try {
361
- this.on();
363
+ activeEffectScope = this;
362
364
  return fn();
363
365
  }
364
366
  finally {
365
- this.off();
367
+ activeEffectScope = this.parent;
366
368
  }
367
369
  }
368
370
  else {
@@ -370,23 +372,24 @@ class EffectScope {
370
372
  }
371
373
  }
372
374
  on() {
373
- if (this.active) {
374
- effectScopeStack.push(this);
375
- activeEffectScope = this;
376
- }
375
+ activeEffectScope = this;
377
376
  }
378
377
  off() {
379
- if (this.active) {
380
- effectScopeStack.pop();
381
- activeEffectScope = effectScopeStack[effectScopeStack.length - 1];
382
- }
378
+ activeEffectScope = this.parent;
383
379
  }
384
380
  stop(fromParent) {
385
381
  if (this.active) {
386
- this.effects.forEach(e => e.stop());
387
- this.cleanups.forEach(cleanup => cleanup());
382
+ let i, l;
383
+ for (i = 0, l = this.effects.length; i < l; i++) {
384
+ this.effects[i].stop();
385
+ }
386
+ for (i = 0, l = this.cleanups.length; i < l; i++) {
387
+ this.cleanups[i]();
388
+ }
388
389
  if (this.scopes) {
389
- this.scopes.forEach(e => e.stop(true));
390
+ for (i = 0, l = this.scopes.length; i < l; i++) {
391
+ this.scopes[i].stop(true);
392
+ }
390
393
  }
391
394
  // nested scope, dereference from parent to avoid memory leaks
392
395
  if (this.parent && !fromParent) {
@@ -404,8 +407,7 @@ class EffectScope {
404
407
  function effectScope(detached) {
405
408
  return new EffectScope(detached);
406
409
  }
407
- function recordEffectScope(effect, scope) {
408
- scope = scope || activeEffectScope;
410
+ function recordEffectScope(effect, scope = activeEffectScope) {
409
411
  if (scope && scope.active) {
410
412
  scope.effects.push(effect);
411
413
  }
@@ -468,7 +470,6 @@ let trackOpBit = 1;
468
470
  * When recursion depth is greater, fall back to using a full cleanup.
469
471
  */
470
472
  const maxMarkerBits = 30;
471
- const effectStack = [];
472
473
  let activeEffect;
473
474
  const ITERATE_KEY = Symbol('iterate' );
474
475
  const MAP_KEY_ITERATE_KEY = Symbol('Map key iterate' );
@@ -478,35 +479,42 @@ class ReactiveEffect {
478
479
  this.scheduler = scheduler;
479
480
  this.active = true;
480
481
  this.deps = [];
482
+ this.parent = undefined;
481
483
  recordEffectScope(this, scope);
482
484
  }
483
485
  run() {
484
486
  if (!this.active) {
485
487
  return this.fn();
486
488
  }
487
- if (!effectStack.length || !effectStack.includes(this)) {
488
- try {
489
- effectStack.push((activeEffect = this));
490
- enableTracking();
491
- trackOpBit = 1 << ++effectTrackDepth;
492
- if (effectTrackDepth <= maxMarkerBits) {
493
- initDepMarkers(this);
494
- }
495
- else {
496
- cleanupEffect(this);
497
- }
498
- return this.fn();
489
+ let parent = activeEffect;
490
+ let lastShouldTrack = shouldTrack;
491
+ while (parent) {
492
+ if (parent === this) {
493
+ return;
499
494
  }
500
- finally {
501
- if (effectTrackDepth <= maxMarkerBits) {
502
- finalizeDepMarkers(this);
503
- }
504
- trackOpBit = 1 << --effectTrackDepth;
505
- resetTracking();
506
- effectStack.pop();
507
- const n = effectStack.length;
508
- activeEffect = n > 0 ? effectStack[n - 1] : undefined;
495
+ parent = parent.parent;
496
+ }
497
+ try {
498
+ this.parent = activeEffect;
499
+ activeEffect = this;
500
+ shouldTrack = true;
501
+ trackOpBit = 1 << ++effectTrackDepth;
502
+ if (effectTrackDepth <= maxMarkerBits) {
503
+ initDepMarkers(this);
509
504
  }
505
+ else {
506
+ cleanupEffect(this);
507
+ }
508
+ return this.fn();
509
+ }
510
+ finally {
511
+ if (effectTrackDepth <= maxMarkerBits) {
512
+ finalizeDepMarkers(this);
513
+ }
514
+ trackOpBit = 1 << --effectTrackDepth;
515
+ activeEffect = this.parent;
516
+ shouldTrack = lastShouldTrack;
517
+ this.parent = undefined;
510
518
  }
511
519
  }
512
520
  stop() {
@@ -554,32 +562,24 @@ function pauseTracking() {
554
562
  trackStack.push(shouldTrack);
555
563
  shouldTrack = false;
556
564
  }
557
- function enableTracking() {
558
- trackStack.push(shouldTrack);
559
- shouldTrack = true;
560
- }
561
565
  function resetTracking() {
562
566
  const last = trackStack.pop();
563
567
  shouldTrack = last === undefined ? true : last;
564
568
  }
565
569
  function track(target, type, key) {
566
- if (!isTracking()) {
567
- return;
568
- }
569
- let depsMap = targetMap.get(target);
570
- if (!depsMap) {
571
- targetMap.set(target, (depsMap = new Map()));
572
- }
573
- let dep = depsMap.get(key);
574
- if (!dep) {
575
- depsMap.set(key, (dep = createDep()));
570
+ if (shouldTrack && activeEffect) {
571
+ let depsMap = targetMap.get(target);
572
+ if (!depsMap) {
573
+ targetMap.set(target, (depsMap = new Map()));
574
+ }
575
+ let dep = depsMap.get(key);
576
+ if (!dep) {
577
+ depsMap.set(key, (dep = createDep()));
578
+ }
579
+ const eventInfo = { effect: activeEffect, target, type, key }
580
+ ;
581
+ trackEffects(dep, eventInfo);
576
582
  }
577
- const eventInfo = { effect: activeEffect, target, type, key }
578
- ;
579
- trackEffects(dep, eventInfo);
580
- }
581
- function isTracking() {
582
- return shouldTrack && activeEffect !== undefined;
583
583
  }
584
584
  function trackEffects(dep, debuggerEventExtraInfo) {
585
585
  let shouldTrack = false;
@@ -1264,13 +1264,10 @@ const toReactive = (value) => isObject(value) ? reactive(value) : value;
1264
1264
  const toReadonly = (value) => isObject(value) ? readonly(value) : value;
1265
1265
 
1266
1266
  function trackRefValue(ref) {
1267
- if (isTracking()) {
1267
+ if (shouldTrack && activeEffect) {
1268
1268
  ref = toRaw(ref);
1269
- if (!ref.dep) {
1270
- ref.dep = createDep();
1271
- }
1272
1269
  {
1273
- trackEffects(ref.dep, {
1270
+ trackEffects(ref.dep || (ref.dep = createDep()), {
1274
1271
  target: ref,
1275
1272
  type: "get" /* GET */,
1276
1273
  key: 'value'
@@ -1292,7 +1289,7 @@ function triggerRefValue(ref, newVal) {
1292
1289
  }
1293
1290
  }
1294
1291
  function isRef(r) {
1295
- return Boolean(r && r.__v_isRef === true);
1292
+ return !!(r && r.__v_isRef === true);
1296
1293
  }
1297
1294
  function ref(value) {
1298
1295
  return createRef(value, false);
@@ -2103,23 +2100,23 @@ const deprecationData = {
2103
2100
  ["GLOBAL_MOUNT" /* GLOBAL_MOUNT */]: {
2104
2101
  message: `The global app bootstrapping API has changed: vm.$mount() and the "el" ` +
2105
2102
  `option have been removed. Use createApp(RootComponent).mount() instead.`,
2106
- link: `https://v3.vuejs.org/guide/migration/global-api.html#mounting-app-instance`
2103
+ link: `https://v3-migration.vuejs.org/breaking-changes/global-api.html#mounting-app-instance`
2107
2104
  },
2108
2105
  ["GLOBAL_MOUNT_CONTAINER" /* GLOBAL_MOUNT_CONTAINER */]: {
2109
2106
  message: `Vue detected directives on the mount container. ` +
2110
2107
  `In Vue 3, the container is no longer considered part of the template ` +
2111
2108
  `and will not be processed/replaced.`,
2112
- link: `https://v3.vuejs.org/guide/migration/mount-changes.html`
2109
+ link: `https://v3-migration.vuejs.org/breaking-changes/mount-changes.html`
2113
2110
  },
2114
2111
  ["GLOBAL_EXTEND" /* GLOBAL_EXTEND */]: {
2115
2112
  message: `Vue.extend() has been removed in Vue 3. ` +
2116
2113
  `Use defineComponent() instead.`,
2117
- link: `https://v3.vuejs.org/api/global-api.html#definecomponent`
2114
+ link: `https://vuejs.org/api/general.html#definecomponent`
2118
2115
  },
2119
2116
  ["GLOBAL_PROTOTYPE" /* GLOBAL_PROTOTYPE */]: {
2120
2117
  message: `Vue.prototype is no longer available in Vue 3. ` +
2121
2118
  `Use app.config.globalProperties instead.`,
2122
- link: `https://v3.vuejs.org/guide/migration/global-api.html#vue-prototype-replaced-by-config-globalproperties`
2119
+ link: `https://v3-migration.vuejs.org/breaking-changes/global-api.html#vue-prototype-replaced-by-config-globalproperties`
2123
2120
  },
2124
2121
  ["GLOBAL_SET" /* GLOBAL_SET */]: {
2125
2122
  message: `Vue.set() has been removed as it is no longer needed in Vue 3. ` +
@@ -2132,7 +2129,7 @@ const deprecationData = {
2132
2129
  ["GLOBAL_OBSERVABLE" /* GLOBAL_OBSERVABLE */]: {
2133
2130
  message: `Vue.observable() has been removed. ` +
2134
2131
  `Use \`import { reactive } from "vue"\` from Composition API instead.`,
2135
- link: `https://v3.vuejs.org/api/basic-reactivity.html`
2132
+ link: `https://vuejs.org/api/reactivity-core.html#reactive`
2136
2133
  },
2137
2134
  ["GLOBAL_PRIVATE_UTIL" /* GLOBAL_PRIVATE_UTIL */]: {
2138
2135
  message: `Vue.util has been removed. Please refactor to avoid its usage ` +
@@ -2151,11 +2148,11 @@ const deprecationData = {
2151
2148
  ["CONFIG_KEY_CODES" /* CONFIG_KEY_CODES */]: {
2152
2149
  message: `config.keyCodes has been removed. ` +
2153
2150
  `In Vue 3, you can directly use the kebab-case key names as v-on modifiers.`,
2154
- link: `https://v3.vuejs.org/guide/migration/keycode-modifiers.html`
2151
+ link: `https://v3-migration.vuejs.org/breaking-changes/keycode-modifiers.html`
2155
2152
  },
2156
2153
  ["CONFIG_PRODUCTION_TIP" /* CONFIG_PRODUCTION_TIP */]: {
2157
2154
  message: `config.productionTip has been removed.`,
2158
- link: `https://v3.vuejs.org/guide/migration/global-api.html#config-productiontip-removed`
2155
+ link: `https://v3-migration.vuejs.org/breaking-changes/global-api.html#config-productiontip-removed`
2159
2156
  },
2160
2157
  ["CONFIG_IGNORED_ELEMENTS" /* CONFIG_IGNORED_ELEMENTS */]: {
2161
2158
  message: () => {
@@ -2168,7 +2165,7 @@ const deprecationData = {
2168
2165
  }
2169
2166
  return msg;
2170
2167
  },
2171
- link: `https://v3.vuejs.org/guide/migration/global-api.html#config-ignoredelements-is-now-config-iscustomelement`
2168
+ link: `https://v3-migration.vuejs.org/breaking-changes/global-api.html#config-ignoredelements-is-now-config-iscustomelement`
2172
2169
  },
2173
2170
  ["CONFIG_WHITESPACE" /* CONFIG_WHITESPACE */]: {
2174
2171
  // this warning is only relevant in the full build when using runtime
@@ -2191,12 +2188,12 @@ const deprecationData = {
2191
2188
  },
2192
2189
  ["INSTANCE_DESTROY" /* INSTANCE_DESTROY */]: {
2193
2190
  message: `vm.$destroy() has been removed. Use app.unmount() instead.`,
2194
- link: `https://v3.vuejs.org/api/application-api.html#unmount`
2191
+ link: `https://vuejs.org/api/application.html#app-unmount`
2195
2192
  },
2196
2193
  ["INSTANCE_EVENT_EMITTER" /* INSTANCE_EVENT_EMITTER */]: {
2197
2194
  message: `vm.$on/$once/$off() have been removed. ` +
2198
2195
  `Use an external event emitter library instead.`,
2199
- link: `https://v3.vuejs.org/guide/migration/events-api.html`
2196
+ link: `https://v3-migration.vuejs.org/breaking-changes/events-api.html`
2200
2197
  },
2201
2198
  ["INSTANCE_EVENT_HOOKS" /* INSTANCE_EVENT_HOOKS */]: {
2202
2199
  message: event => `"${event}" lifecycle events are no longer supported. From templates, ` +
@@ -2204,23 +2201,23 @@ const deprecationData = {
2204
2201
  `should be changed to @vnode-${event.slice(5)}. ` +
2205
2202
  `From JavaScript, use Composition API to dynamically register lifecycle ` +
2206
2203
  `hooks.`,
2207
- link: `https://v3.vuejs.org/guide/migration/vnode-lifecycle-events.html`
2204
+ link: `https://v3-migration.vuejs.org/breaking-changes/vnode-lifecycle-events.html`
2208
2205
  },
2209
2206
  ["INSTANCE_CHILDREN" /* INSTANCE_CHILDREN */]: {
2210
2207
  message: `vm.$children has been removed. Consider refactoring your logic ` +
2211
2208
  `to avoid relying on direct access to child components.`,
2212
- link: `https://v3.vuejs.org/guide/migration/children.html`
2209
+ link: `https://v3-migration.vuejs.org/breaking-changes/children.html`
2213
2210
  },
2214
2211
  ["INSTANCE_LISTENERS" /* INSTANCE_LISTENERS */]: {
2215
2212
  message: `vm.$listeners has been removed. In Vue 3, parent v-on listeners are ` +
2216
2213
  `included in vm.$attrs and it is no longer necessary to separately use ` +
2217
2214
  `v-on="$listeners" if you are already using v-bind="$attrs". ` +
2218
2215
  `(Note: the Vue 3 behavior only applies if this compat config is disabled)`,
2219
- link: `https://v3.vuejs.org/guide/migration/listeners-removed.html`
2216
+ link: `https://v3-migration.vuejs.org/breaking-changes/listeners-removed.html`
2220
2217
  },
2221
2218
  ["INSTANCE_SCOPED_SLOTS" /* INSTANCE_SCOPED_SLOTS */]: {
2222
2219
  message: `vm.$scopedSlots has been removed. Use vm.$slots instead.`,
2223
- link: `https://v3.vuejs.org/guide/migration/slots-unification.html`
2220
+ link: `https://v3-migration.vuejs.org/breaking-changes/slots-unification.html`
2224
2221
  },
2225
2222
  ["INSTANCE_ATTRS_CLASS_STYLE" /* INSTANCE_ATTRS_CLASS_STYLE */]: {
2226
2223
  message: componentName => `Component <${componentName || 'Anonymous'}> has \`inheritAttrs: false\` but is ` +
@@ -2231,17 +2228,17 @@ const deprecationData = {
2231
2228
  `If you are binding $attrs to a non-root element and expecting ` +
2232
2229
  `class/style to fallthrough on root, you will need to now manually bind ` +
2233
2230
  `them on root via :class="$attrs.class".`,
2234
- link: `https://v3.vuejs.org/guide/migration/attrs-includes-class-style.html`
2231
+ link: `https://v3-migration.vuejs.org/breaking-changes/attrs-includes-class-style.html`
2235
2232
  },
2236
2233
  ["OPTIONS_DATA_FN" /* OPTIONS_DATA_FN */]: {
2237
2234
  message: `The "data" option can no longer be a plain object. ` +
2238
2235
  `Always use a function.`,
2239
- link: `https://v3.vuejs.org/guide/migration/data-option.html`
2236
+ link: `https://v3-migration.vuejs.org/breaking-changes/data-option.html`
2240
2237
  },
2241
2238
  ["OPTIONS_DATA_MERGE" /* OPTIONS_DATA_MERGE */]: {
2242
2239
  message: (key) => `Detected conflicting key "${key}" when merging data option values. ` +
2243
2240
  `In Vue 3, data keys are merged shallowly and will override one another.`,
2244
- link: `https://v3.vuejs.org/guide/migration/data-option.html#mixin-merge-behavior-change`
2241
+ link: `https://v3-migration.vuejs.org/breaking-changes/data-option.html#mixin-merge-behavior-change`
2245
2242
  },
2246
2243
  ["OPTIONS_BEFORE_DESTROY" /* OPTIONS_BEFORE_DESTROY */]: {
2247
2244
  message: `\`beforeDestroy\` has been renamed to \`beforeUnmount\`.`
@@ -2255,23 +2252,23 @@ const deprecationData = {
2255
2252
  `If current usage is intended, you can disable the compat behavior and ` +
2256
2253
  `suppress this warning with:` +
2257
2254
  `\n\n configureCompat({ ${"WATCH_ARRAY" /* WATCH_ARRAY */}: false })\n`,
2258
- link: `https://v3.vuejs.org/guide/migration/watch.html`
2255
+ link: `https://v3-migration.vuejs.org/breaking-changes/watch.html`
2259
2256
  },
2260
2257
  ["PROPS_DEFAULT_THIS" /* PROPS_DEFAULT_THIS */]: {
2261
2258
  message: (key) => `props default value function no longer has access to "this". The compat ` +
2262
2259
  `build only offers access to this.$options.` +
2263
2260
  `(found in prop "${key}")`,
2264
- link: `https://v3.vuejs.org/guide/migration/props-default-this.html`
2261
+ link: `https://v3-migration.vuejs.org/breaking-changes/props-default-this.html`
2265
2262
  },
2266
2263
  ["CUSTOM_DIR" /* CUSTOM_DIR */]: {
2267
2264
  message: (legacyHook, newHook) => `Custom directive hook "${legacyHook}" has been removed. ` +
2268
2265
  `Use "${newHook}" instead.`,
2269
- link: `https://v3.vuejs.org/guide/migration/custom-directives.html`
2266
+ link: `https://v3-migration.vuejs.org/breaking-changes/custom-directives.html`
2270
2267
  },
2271
2268
  ["V_ON_KEYCODE_MODIFIER" /* V_ON_KEYCODE_MODIFIER */]: {
2272
2269
  message: `Using keyCode as v-on modifier is no longer supported. ` +
2273
2270
  `Use kebab-case key name modifiers instead.`,
2274
- link: `https://v3.vuejs.org/guide/migration/keycode-modifiers.html`
2271
+ link: `https://v3-migration.vuejs.org/breaking-changes/keycode-modifiers.html`
2275
2272
  },
2276
2273
  ["ATTR_FALSE_VALUE" /* ATTR_FALSE_VALUE */]: {
2277
2274
  message: (name) => `Attribute "${name}" with v-bind value \`false\` will render ` +
@@ -2279,7 +2276,7 @@ const deprecationData = {
2279
2276
  `use \`null\` or \`undefined\` instead. If the usage is intended, ` +
2280
2277
  `you can disable the compat behavior and suppress this warning with:` +
2281
2278
  `\n\n configureCompat({ ${"ATTR_FALSE_VALUE" /* ATTR_FALSE_VALUE */}: false })\n`,
2282
- link: `https://v3.vuejs.org/guide/migration/attribute-coercion.html`
2279
+ link: `https://v3-migration.vuejs.org/breaking-changes/attribute-coercion.html`
2283
2280
  },
2284
2281
  ["ATTR_ENUMERATED_COERCION" /* ATTR_ENUMERATED_COERCION */]: {
2285
2282
  message: (name, value, coerced) => `Enumerated attribute "${name}" with v-bind value \`${value}\` will ` +
@@ -2288,7 +2285,7 @@ const deprecationData = {
2288
2285
  `If the usage is intended, ` +
2289
2286
  `you can disable the compat behavior and suppress this warning with:` +
2290
2287
  `\n\n configureCompat({ ${"ATTR_ENUMERATED_COERCION" /* ATTR_ENUMERATED_COERCION */}: false })\n`,
2291
- link: `https://v3.vuejs.org/guide/migration/attribute-coercion.html`
2288
+ link: `https://v3-migration.vuejs.org/breaking-changes/attribute-coercion.html`
2292
2289
  },
2293
2290
  ["TRANSITION_CLASSES" /* TRANSITION_CLASSES */]: {
2294
2291
  message: `` // this feature cannot be runtime-detected
@@ -2299,7 +2296,7 @@ const deprecationData = {
2299
2296
  `for styling, you can disable the compat behavior and suppress this ` +
2300
2297
  `warning with:` +
2301
2298
  `\n\n configureCompat({ ${"TRANSITION_GROUP_ROOT" /* TRANSITION_GROUP_ROOT */}: false })\n`,
2302
- link: `https://v3.vuejs.org/guide/migration/transition-group.html`
2299
+ link: `https://v3-migration.vuejs.org/breaking-changes/transition-group.html`
2303
2300
  },
2304
2301
  ["COMPONENT_ASYNC" /* COMPONENT_ASYNC */]: {
2305
2302
  message: (comp) => {
@@ -2312,7 +2309,7 @@ const deprecationData = {
2312
2309
  `warning with:` +
2313
2310
  `\n\n configureCompat({ ${"COMPONENT_ASYNC" /* COMPONENT_ASYNC */}: false })\n`);
2314
2311
  },
2315
- link: `https://v3.vuejs.org/guide/migration/async-components.html`
2312
+ link: `https://v3-migration.vuejs.org/breaking-changes/async-components.html`
2316
2313
  },
2317
2314
  ["COMPONENT_FUNCTIONAL" /* COMPONENT_FUNCTIONAL */]: {
2318
2315
  message: (comp) => {
@@ -2323,7 +2320,7 @@ const deprecationData = {
2323
2320
  `components usage have been migrated and its compat behavior has ` +
2324
2321
  `been disabled.`);
2325
2322
  },
2326
- link: `https://v3.vuejs.org/guide/migration/functional-components.html`
2323
+ link: `https://v3-migration.vuejs.org/breaking-changes/functional-components.html`
2327
2324
  },
2328
2325
  ["COMPONENT_V_MODEL" /* COMPONENT_V_MODEL */]: {
2329
2326
  message: (comp) => {
@@ -2340,20 +2337,20 @@ const deprecationData = {
2340
2337
  `to work with v-model should now use the "modelValue" prop and emit the ` +
2341
2338
  `"update:modelValue" event. You can update the usage and then ${configMsg}`);
2342
2339
  },
2343
- link: `https://v3.vuejs.org/guide/migration/v-model.html`
2340
+ link: `https://v3-migration.vuejs.org/breaking-changes/v-model.html`
2344
2341
  },
2345
2342
  ["RENDER_FUNCTION" /* RENDER_FUNCTION */]: {
2346
2343
  message: `Vue 3's render function API has changed. ` +
2347
2344
  `You can opt-in to the new API with:` +
2348
2345
  `\n\n configureCompat({ ${"RENDER_FUNCTION" /* RENDER_FUNCTION */}: false })\n` +
2349
2346
  `\n (This can also be done per-component via the "compatConfig" option.)`,
2350
- link: `https://v3.vuejs.org/guide/migration/render-function-api.html`
2347
+ link: `https://v3-migration.vuejs.org/breaking-changes/render-function-api.html`
2351
2348
  },
2352
2349
  ["FILTERS" /* FILTERS */]: {
2353
2350
  message: `filters have been removed in Vue 3. ` +
2354
2351
  `The "|" symbol will be treated as native JavaScript bitwise OR operator. ` +
2355
2352
  `Use method calls or computed properties instead.`,
2356
- link: `https://v3.vuejs.org/guide/migration/filters.html`
2353
+ link: `https://v3-migration.vuejs.org/breaking-changes/filters.html`
2357
2354
  },
2358
2355
  ["PRIVATE_APIS" /* PRIVATE_APIS */]: {
2359
2356
  message: name => `"${name}" is a Vue 2 private API that no longer exists in Vue 3. ` +
@@ -2421,7 +2418,7 @@ function validateCompatConfig(config, instance) {
2421
2418
  warn$1(`Deprecation config "${key}" is compiler-specific and you are ` +
2422
2419
  `running a runtime-only build of Vue. This deprecation should be ` +
2423
2420
  `configured via compiler options in your build setup instead.\n` +
2424
- `Details: https://v3.vuejs.org/guide/migration/migration-build.html`);
2421
+ `Details: https://v3-migration.vuejs.org/breaking-changes/migration-build.html`);
2425
2422
  }
2426
2423
  }
2427
2424
  else {
@@ -5822,7 +5819,6 @@ return withDirectives(h(comp), [
5822
5819
  [bar, this.y]
5823
5820
  ])
5824
5821
  */
5825
- const isBuiltInDirective = /*#__PURE__*/ makeMap('bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo');
5826
5822
  function validateDirectiveName(name) {
5827
5823
  if (isBuiltInDirective(name)) {
5828
5824
  warn$1('Do not use built-in directive ids as custom directive id: ' + name);
@@ -5957,7 +5953,7 @@ function createCompatVue(createApp, createSingletonApp) {
5957
5953
  return vm;
5958
5954
  }
5959
5955
  }
5960
- Vue.version = `2.6.14-compat:${"3.2.29"}`;
5956
+ Vue.version = `2.6.14-compat:${"3.2.30"}`;
5961
5957
  Vue.config = singletonApp.config;
5962
5958
  Vue.use = (p, ...options) => {
5963
5959
  if (p && isFunction(p.install)) {
@@ -10861,7 +10857,7 @@ function isMemoSame(cached, memo) {
10861
10857
  }
10862
10858
 
10863
10859
  // Core API ------------------------------------------------------------------
10864
- const version = "3.2.29";
10860
+ const version = "3.2.30";
10865
10861
  /**
10866
10862
  * SSR utils for \@vue/server-renderer. Only exposed in cjs builds.
10867
10863
  * @internal