@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
@@ -279,6 +281,7 @@ const isReservedProp = /*#__PURE__*/ makeMap(
279
281
  'onVnodeBeforeMount,onVnodeMounted,' +
280
282
  'onVnodeBeforeUpdate,onVnodeUpdated,' +
281
283
  'onVnodeBeforeUnmount,onVnodeUnmounted');
284
+ const isBuiltInDirective = /*#__PURE__*/ makeMap('bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo');
282
285
  const cacheStringFunction = (fn) => {
283
286
  const cache = Object.create(null);
284
287
  return ((str) => {
@@ -344,7 +347,6 @@ function warn(msg, ...args) {
344
347
  }
345
348
 
346
349
  let activeEffectScope;
347
- const effectScopeStack = [];
348
350
  class EffectScope {
349
351
  constructor(detached = false) {
350
352
  this.active = true;
@@ -359,11 +361,11 @@ class EffectScope {
359
361
  run(fn) {
360
362
  if (this.active) {
361
363
  try {
362
- this.on();
364
+ activeEffectScope = this;
363
365
  return fn();
364
366
  }
365
367
  finally {
366
- this.off();
368
+ activeEffectScope = this.parent;
367
369
  }
368
370
  }
369
371
  else if ((process.env.NODE_ENV !== 'production')) {
@@ -371,23 +373,24 @@ class EffectScope {
371
373
  }
372
374
  }
373
375
  on() {
374
- if (this.active) {
375
- effectScopeStack.push(this);
376
- activeEffectScope = this;
377
- }
376
+ activeEffectScope = this;
378
377
  }
379
378
  off() {
380
- if (this.active) {
381
- effectScopeStack.pop();
382
- activeEffectScope = effectScopeStack[effectScopeStack.length - 1];
383
- }
379
+ activeEffectScope = this.parent;
384
380
  }
385
381
  stop(fromParent) {
386
382
  if (this.active) {
387
- this.effects.forEach(e => e.stop());
388
- this.cleanups.forEach(cleanup => cleanup());
383
+ let i, l;
384
+ for (i = 0, l = this.effects.length; i < l; i++) {
385
+ this.effects[i].stop();
386
+ }
387
+ for (i = 0, l = this.cleanups.length; i < l; i++) {
388
+ this.cleanups[i]();
389
+ }
389
390
  if (this.scopes) {
390
- this.scopes.forEach(e => e.stop(true));
391
+ for (i = 0, l = this.scopes.length; i < l; i++) {
392
+ this.scopes[i].stop(true);
393
+ }
391
394
  }
392
395
  // nested scope, dereference from parent to avoid memory leaks
393
396
  if (this.parent && !fromParent) {
@@ -405,8 +408,7 @@ class EffectScope {
405
408
  function effectScope(detached) {
406
409
  return new EffectScope(detached);
407
410
  }
408
- function recordEffectScope(effect, scope) {
409
- scope = scope || activeEffectScope;
411
+ function recordEffectScope(effect, scope = activeEffectScope) {
410
412
  if (scope && scope.active) {
411
413
  scope.effects.push(effect);
412
414
  }
@@ -469,7 +471,6 @@ let trackOpBit = 1;
469
471
  * When recursion depth is greater, fall back to using a full cleanup.
470
472
  */
471
473
  const maxMarkerBits = 30;
472
- const effectStack = [];
473
474
  let activeEffect;
474
475
  const ITERATE_KEY = Symbol((process.env.NODE_ENV !== 'production') ? 'iterate' : '');
475
476
  const MAP_KEY_ITERATE_KEY = Symbol((process.env.NODE_ENV !== 'production') ? 'Map key iterate' : '');
@@ -479,35 +480,42 @@ class ReactiveEffect {
479
480
  this.scheduler = scheduler;
480
481
  this.active = true;
481
482
  this.deps = [];
483
+ this.parent = undefined;
482
484
  recordEffectScope(this, scope);
483
485
  }
484
486
  run() {
485
487
  if (!this.active) {
486
488
  return this.fn();
487
489
  }
488
- if (!effectStack.length || !effectStack.includes(this)) {
489
- try {
490
- effectStack.push((activeEffect = this));
491
- enableTracking();
492
- trackOpBit = 1 << ++effectTrackDepth;
493
- if (effectTrackDepth <= maxMarkerBits) {
494
- initDepMarkers(this);
495
- }
496
- else {
497
- cleanupEffect(this);
498
- }
499
- return this.fn();
490
+ let parent = activeEffect;
491
+ let lastShouldTrack = shouldTrack;
492
+ while (parent) {
493
+ if (parent === this) {
494
+ return;
500
495
  }
501
- finally {
502
- if (effectTrackDepth <= maxMarkerBits) {
503
- finalizeDepMarkers(this);
504
- }
505
- trackOpBit = 1 << --effectTrackDepth;
506
- resetTracking();
507
- effectStack.pop();
508
- const n = effectStack.length;
509
- activeEffect = n > 0 ? effectStack[n - 1] : undefined;
496
+ parent = parent.parent;
497
+ }
498
+ try {
499
+ this.parent = activeEffect;
500
+ activeEffect = this;
501
+ shouldTrack = true;
502
+ trackOpBit = 1 << ++effectTrackDepth;
503
+ if (effectTrackDepth <= maxMarkerBits) {
504
+ initDepMarkers(this);
510
505
  }
506
+ else {
507
+ cleanupEffect(this);
508
+ }
509
+ return this.fn();
510
+ }
511
+ finally {
512
+ if (effectTrackDepth <= maxMarkerBits) {
513
+ finalizeDepMarkers(this);
514
+ }
515
+ trackOpBit = 1 << --effectTrackDepth;
516
+ activeEffect = this.parent;
517
+ shouldTrack = lastShouldTrack;
518
+ this.parent = undefined;
511
519
  }
512
520
  }
513
521
  stop() {
@@ -555,33 +563,25 @@ function pauseTracking() {
555
563
  trackStack.push(shouldTrack);
556
564
  shouldTrack = false;
557
565
  }
558
- function enableTracking() {
559
- trackStack.push(shouldTrack);
560
- shouldTrack = true;
561
- }
562
566
  function resetTracking() {
563
567
  const last = trackStack.pop();
564
568
  shouldTrack = last === undefined ? true : last;
565
569
  }
566
570
  function track(target, type, key) {
567
- if (!isTracking()) {
568
- return;
569
- }
570
- let depsMap = targetMap.get(target);
571
- if (!depsMap) {
572
- targetMap.set(target, (depsMap = new Map()));
573
- }
574
- let dep = depsMap.get(key);
575
- if (!dep) {
576
- depsMap.set(key, (dep = createDep()));
571
+ if (shouldTrack && activeEffect) {
572
+ let depsMap = targetMap.get(target);
573
+ if (!depsMap) {
574
+ targetMap.set(target, (depsMap = new Map()));
575
+ }
576
+ let dep = depsMap.get(key);
577
+ if (!dep) {
578
+ depsMap.set(key, (dep = createDep()));
579
+ }
580
+ const eventInfo = (process.env.NODE_ENV !== 'production')
581
+ ? { effect: activeEffect, target, type, key }
582
+ : undefined;
583
+ trackEffects(dep, eventInfo);
577
584
  }
578
- const eventInfo = (process.env.NODE_ENV !== 'production')
579
- ? { effect: activeEffect, target, type, key }
580
- : undefined;
581
- trackEffects(dep, eventInfo);
582
- }
583
- function isTracking() {
584
- return shouldTrack && activeEffect !== undefined;
585
585
  }
586
586
  function trackEffects(dep, debuggerEventExtraInfo) {
587
587
  let shouldTrack = false;
@@ -1274,20 +1274,17 @@ const toReactive = (value) => isObject(value) ? reactive(value) : value;
1274
1274
  const toReadonly = (value) => isObject(value) ? readonly(value) : value;
1275
1275
 
1276
1276
  function trackRefValue(ref) {
1277
- if (isTracking()) {
1277
+ if (shouldTrack && activeEffect) {
1278
1278
  ref = toRaw(ref);
1279
- if (!ref.dep) {
1280
- ref.dep = createDep();
1281
- }
1282
1279
  if ((process.env.NODE_ENV !== 'production')) {
1283
- trackEffects(ref.dep, {
1280
+ trackEffects(ref.dep || (ref.dep = createDep()), {
1284
1281
  target: ref,
1285
1282
  type: "get" /* GET */,
1286
1283
  key: 'value'
1287
1284
  });
1288
1285
  }
1289
1286
  else {
1290
- trackEffects(ref.dep);
1287
+ trackEffects(ref.dep || (ref.dep = createDep()));
1291
1288
  }
1292
1289
  }
1293
1290
  }
@@ -1308,7 +1305,7 @@ function triggerRefValue(ref, newVal) {
1308
1305
  }
1309
1306
  }
1310
1307
  function isRef(r) {
1311
- return Boolean(r && r.__v_isRef === true);
1308
+ return !!(r && r.__v_isRef === true);
1312
1309
  }
1313
1310
  function ref(value) {
1314
1311
  return createRef(value, false);
@@ -2127,23 +2124,23 @@ const deprecationData = {
2127
2124
  ["GLOBAL_MOUNT" /* GLOBAL_MOUNT */]: {
2128
2125
  message: `The global app bootstrapping API has changed: vm.$mount() and the "el" ` +
2129
2126
  `option have been removed. Use createApp(RootComponent).mount() instead.`,
2130
- link: `https://v3.vuejs.org/guide/migration/global-api.html#mounting-app-instance`
2127
+ link: `https://v3-migration.vuejs.org/breaking-changes/global-api.html#mounting-app-instance`
2131
2128
  },
2132
2129
  ["GLOBAL_MOUNT_CONTAINER" /* GLOBAL_MOUNT_CONTAINER */]: {
2133
2130
  message: `Vue detected directives on the mount container. ` +
2134
2131
  `In Vue 3, the container is no longer considered part of the template ` +
2135
2132
  `and will not be processed/replaced.`,
2136
- link: `https://v3.vuejs.org/guide/migration/mount-changes.html`
2133
+ link: `https://v3-migration.vuejs.org/breaking-changes/mount-changes.html`
2137
2134
  },
2138
2135
  ["GLOBAL_EXTEND" /* GLOBAL_EXTEND */]: {
2139
2136
  message: `Vue.extend() has been removed in Vue 3. ` +
2140
2137
  `Use defineComponent() instead.`,
2141
- link: `https://v3.vuejs.org/api/global-api.html#definecomponent`
2138
+ link: `https://vuejs.org/api/general.html#definecomponent`
2142
2139
  },
2143
2140
  ["GLOBAL_PROTOTYPE" /* GLOBAL_PROTOTYPE */]: {
2144
2141
  message: `Vue.prototype is no longer available in Vue 3. ` +
2145
2142
  `Use app.config.globalProperties instead.`,
2146
- link: `https://v3.vuejs.org/guide/migration/global-api.html#vue-prototype-replaced-by-config-globalproperties`
2143
+ link: `https://v3-migration.vuejs.org/breaking-changes/global-api.html#vue-prototype-replaced-by-config-globalproperties`
2147
2144
  },
2148
2145
  ["GLOBAL_SET" /* GLOBAL_SET */]: {
2149
2146
  message: `Vue.set() has been removed as it is no longer needed in Vue 3. ` +
@@ -2156,7 +2153,7 @@ const deprecationData = {
2156
2153
  ["GLOBAL_OBSERVABLE" /* GLOBAL_OBSERVABLE */]: {
2157
2154
  message: `Vue.observable() has been removed. ` +
2158
2155
  `Use \`import { reactive } from "vue"\` from Composition API instead.`,
2159
- link: `https://v3.vuejs.org/api/basic-reactivity.html`
2156
+ link: `https://vuejs.org/api/reactivity-core.html#reactive`
2160
2157
  },
2161
2158
  ["GLOBAL_PRIVATE_UTIL" /* GLOBAL_PRIVATE_UTIL */]: {
2162
2159
  message: `Vue.util has been removed. Please refactor to avoid its usage ` +
@@ -2175,11 +2172,11 @@ const deprecationData = {
2175
2172
  ["CONFIG_KEY_CODES" /* CONFIG_KEY_CODES */]: {
2176
2173
  message: `config.keyCodes has been removed. ` +
2177
2174
  `In Vue 3, you can directly use the kebab-case key names as v-on modifiers.`,
2178
- link: `https://v3.vuejs.org/guide/migration/keycode-modifiers.html`
2175
+ link: `https://v3-migration.vuejs.org/breaking-changes/keycode-modifiers.html`
2179
2176
  },
2180
2177
  ["CONFIG_PRODUCTION_TIP" /* CONFIG_PRODUCTION_TIP */]: {
2181
2178
  message: `config.productionTip has been removed.`,
2182
- link: `https://v3.vuejs.org/guide/migration/global-api.html#config-productiontip-removed`
2179
+ link: `https://v3-migration.vuejs.org/breaking-changes/global-api.html#config-productiontip-removed`
2183
2180
  },
2184
2181
  ["CONFIG_IGNORED_ELEMENTS" /* CONFIG_IGNORED_ELEMENTS */]: {
2185
2182
  message: () => {
@@ -2192,7 +2189,7 @@ const deprecationData = {
2192
2189
  }
2193
2190
  return msg;
2194
2191
  },
2195
- link: `https://v3.vuejs.org/guide/migration/global-api.html#config-ignoredelements-is-now-config-iscustomelement`
2192
+ link: `https://v3-migration.vuejs.org/breaking-changes/global-api.html#config-ignoredelements-is-now-config-iscustomelement`
2196
2193
  },
2197
2194
  ["CONFIG_WHITESPACE" /* CONFIG_WHITESPACE */]: {
2198
2195
  // this warning is only relevant in the full build when using runtime
@@ -2215,12 +2212,12 @@ const deprecationData = {
2215
2212
  },
2216
2213
  ["INSTANCE_DESTROY" /* INSTANCE_DESTROY */]: {
2217
2214
  message: `vm.$destroy() has been removed. Use app.unmount() instead.`,
2218
- link: `https://v3.vuejs.org/api/application-api.html#unmount`
2215
+ link: `https://vuejs.org/api/application.html#app-unmount`
2219
2216
  },
2220
2217
  ["INSTANCE_EVENT_EMITTER" /* INSTANCE_EVENT_EMITTER */]: {
2221
2218
  message: `vm.$on/$once/$off() have been removed. ` +
2222
2219
  `Use an external event emitter library instead.`,
2223
- link: `https://v3.vuejs.org/guide/migration/events-api.html`
2220
+ link: `https://v3-migration.vuejs.org/breaking-changes/events-api.html`
2224
2221
  },
2225
2222
  ["INSTANCE_EVENT_HOOKS" /* INSTANCE_EVENT_HOOKS */]: {
2226
2223
  message: event => `"${event}" lifecycle events are no longer supported. From templates, ` +
@@ -2228,23 +2225,23 @@ const deprecationData = {
2228
2225
  `should be changed to @vnode-${event.slice(5)}. ` +
2229
2226
  `From JavaScript, use Composition API to dynamically register lifecycle ` +
2230
2227
  `hooks.`,
2231
- link: `https://v3.vuejs.org/guide/migration/vnode-lifecycle-events.html`
2228
+ link: `https://v3-migration.vuejs.org/breaking-changes/vnode-lifecycle-events.html`
2232
2229
  },
2233
2230
  ["INSTANCE_CHILDREN" /* INSTANCE_CHILDREN */]: {
2234
2231
  message: `vm.$children has been removed. Consider refactoring your logic ` +
2235
2232
  `to avoid relying on direct access to child components.`,
2236
- link: `https://v3.vuejs.org/guide/migration/children.html`
2233
+ link: `https://v3-migration.vuejs.org/breaking-changes/children.html`
2237
2234
  },
2238
2235
  ["INSTANCE_LISTENERS" /* INSTANCE_LISTENERS */]: {
2239
2236
  message: `vm.$listeners has been removed. In Vue 3, parent v-on listeners are ` +
2240
2237
  `included in vm.$attrs and it is no longer necessary to separately use ` +
2241
2238
  `v-on="$listeners" if you are already using v-bind="$attrs". ` +
2242
2239
  `(Note: the Vue 3 behavior only applies if this compat config is disabled)`,
2243
- link: `https://v3.vuejs.org/guide/migration/listeners-removed.html`
2240
+ link: `https://v3-migration.vuejs.org/breaking-changes/listeners-removed.html`
2244
2241
  },
2245
2242
  ["INSTANCE_SCOPED_SLOTS" /* INSTANCE_SCOPED_SLOTS */]: {
2246
2243
  message: `vm.$scopedSlots has been removed. Use vm.$slots instead.`,
2247
- link: `https://v3.vuejs.org/guide/migration/slots-unification.html`
2244
+ link: `https://v3-migration.vuejs.org/breaking-changes/slots-unification.html`
2248
2245
  },
2249
2246
  ["INSTANCE_ATTRS_CLASS_STYLE" /* INSTANCE_ATTRS_CLASS_STYLE */]: {
2250
2247
  message: componentName => `Component <${componentName || 'Anonymous'}> has \`inheritAttrs: false\` but is ` +
@@ -2255,17 +2252,17 @@ const deprecationData = {
2255
2252
  `If you are binding $attrs to a non-root element and expecting ` +
2256
2253
  `class/style to fallthrough on root, you will need to now manually bind ` +
2257
2254
  `them on root via :class="$attrs.class".`,
2258
- link: `https://v3.vuejs.org/guide/migration/attrs-includes-class-style.html`
2255
+ link: `https://v3-migration.vuejs.org/breaking-changes/attrs-includes-class-style.html`
2259
2256
  },
2260
2257
  ["OPTIONS_DATA_FN" /* OPTIONS_DATA_FN */]: {
2261
2258
  message: `The "data" option can no longer be a plain object. ` +
2262
2259
  `Always use a function.`,
2263
- link: `https://v3.vuejs.org/guide/migration/data-option.html`
2260
+ link: `https://v3-migration.vuejs.org/breaking-changes/data-option.html`
2264
2261
  },
2265
2262
  ["OPTIONS_DATA_MERGE" /* OPTIONS_DATA_MERGE */]: {
2266
2263
  message: (key) => `Detected conflicting key "${key}" when merging data option values. ` +
2267
2264
  `In Vue 3, data keys are merged shallowly and will override one another.`,
2268
- link: `https://v3.vuejs.org/guide/migration/data-option.html#mixin-merge-behavior-change`
2265
+ link: `https://v3-migration.vuejs.org/breaking-changes/data-option.html#mixin-merge-behavior-change`
2269
2266
  },
2270
2267
  ["OPTIONS_BEFORE_DESTROY" /* OPTIONS_BEFORE_DESTROY */]: {
2271
2268
  message: `\`beforeDestroy\` has been renamed to \`beforeUnmount\`.`
@@ -2279,23 +2276,23 @@ const deprecationData = {
2279
2276
  `If current usage is intended, you can disable the compat behavior and ` +
2280
2277
  `suppress this warning with:` +
2281
2278
  `\n\n configureCompat({ ${"WATCH_ARRAY" /* WATCH_ARRAY */}: false })\n`,
2282
- link: `https://v3.vuejs.org/guide/migration/watch.html`
2279
+ link: `https://v3-migration.vuejs.org/breaking-changes/watch.html`
2283
2280
  },
2284
2281
  ["PROPS_DEFAULT_THIS" /* PROPS_DEFAULT_THIS */]: {
2285
2282
  message: (key) => `props default value function no longer has access to "this". The compat ` +
2286
2283
  `build only offers access to this.$options.` +
2287
2284
  `(found in prop "${key}")`,
2288
- link: `https://v3.vuejs.org/guide/migration/props-default-this.html`
2285
+ link: `https://v3-migration.vuejs.org/breaking-changes/props-default-this.html`
2289
2286
  },
2290
2287
  ["CUSTOM_DIR" /* CUSTOM_DIR */]: {
2291
2288
  message: (legacyHook, newHook) => `Custom directive hook "${legacyHook}" has been removed. ` +
2292
2289
  `Use "${newHook}" instead.`,
2293
- link: `https://v3.vuejs.org/guide/migration/custom-directives.html`
2290
+ link: `https://v3-migration.vuejs.org/breaking-changes/custom-directives.html`
2294
2291
  },
2295
2292
  ["V_ON_KEYCODE_MODIFIER" /* V_ON_KEYCODE_MODIFIER */]: {
2296
2293
  message: `Using keyCode as v-on modifier is no longer supported. ` +
2297
2294
  `Use kebab-case key name modifiers instead.`,
2298
- link: `https://v3.vuejs.org/guide/migration/keycode-modifiers.html`
2295
+ link: `https://v3-migration.vuejs.org/breaking-changes/keycode-modifiers.html`
2299
2296
  },
2300
2297
  ["ATTR_FALSE_VALUE" /* ATTR_FALSE_VALUE */]: {
2301
2298
  message: (name) => `Attribute "${name}" with v-bind value \`false\` will render ` +
@@ -2303,7 +2300,7 @@ const deprecationData = {
2303
2300
  `use \`null\` or \`undefined\` instead. If the usage is intended, ` +
2304
2301
  `you can disable the compat behavior and suppress this warning with:` +
2305
2302
  `\n\n configureCompat({ ${"ATTR_FALSE_VALUE" /* ATTR_FALSE_VALUE */}: false })\n`,
2306
- link: `https://v3.vuejs.org/guide/migration/attribute-coercion.html`
2303
+ link: `https://v3-migration.vuejs.org/breaking-changes/attribute-coercion.html`
2307
2304
  },
2308
2305
  ["ATTR_ENUMERATED_COERCION" /* ATTR_ENUMERATED_COERCION */]: {
2309
2306
  message: (name, value, coerced) => `Enumerated attribute "${name}" with v-bind value \`${value}\` will ` +
@@ -2312,7 +2309,7 @@ const deprecationData = {
2312
2309
  `If the usage is intended, ` +
2313
2310
  `you can disable the compat behavior and suppress this warning with:` +
2314
2311
  `\n\n configureCompat({ ${"ATTR_ENUMERATED_COERCION" /* ATTR_ENUMERATED_COERCION */}: false })\n`,
2315
- link: `https://v3.vuejs.org/guide/migration/attribute-coercion.html`
2312
+ link: `https://v3-migration.vuejs.org/breaking-changes/attribute-coercion.html`
2316
2313
  },
2317
2314
  ["TRANSITION_CLASSES" /* TRANSITION_CLASSES */]: {
2318
2315
  message: `` // this feature cannot be runtime-detected
@@ -2323,7 +2320,7 @@ const deprecationData = {
2323
2320
  `for styling, you can disable the compat behavior and suppress this ` +
2324
2321
  `warning with:` +
2325
2322
  `\n\n configureCompat({ ${"TRANSITION_GROUP_ROOT" /* TRANSITION_GROUP_ROOT */}: false })\n`,
2326
- link: `https://v3.vuejs.org/guide/migration/transition-group.html`
2323
+ link: `https://v3-migration.vuejs.org/breaking-changes/transition-group.html`
2327
2324
  },
2328
2325
  ["COMPONENT_ASYNC" /* COMPONENT_ASYNC */]: {
2329
2326
  message: (comp) => {
@@ -2336,7 +2333,7 @@ const deprecationData = {
2336
2333
  `warning with:` +
2337
2334
  `\n\n configureCompat({ ${"COMPONENT_ASYNC" /* COMPONENT_ASYNC */}: false })\n`);
2338
2335
  },
2339
- link: `https://v3.vuejs.org/guide/migration/async-components.html`
2336
+ link: `https://v3-migration.vuejs.org/breaking-changes/async-components.html`
2340
2337
  },
2341
2338
  ["COMPONENT_FUNCTIONAL" /* COMPONENT_FUNCTIONAL */]: {
2342
2339
  message: (comp) => {
@@ -2347,7 +2344,7 @@ const deprecationData = {
2347
2344
  `components usage have been migrated and its compat behavior has ` +
2348
2345
  `been disabled.`);
2349
2346
  },
2350
- link: `https://v3.vuejs.org/guide/migration/functional-components.html`
2347
+ link: `https://v3-migration.vuejs.org/breaking-changes/functional-components.html`
2351
2348
  },
2352
2349
  ["COMPONENT_V_MODEL" /* COMPONENT_V_MODEL */]: {
2353
2350
  message: (comp) => {
@@ -2364,20 +2361,20 @@ const deprecationData = {
2364
2361
  `to work with v-model should now use the "modelValue" prop and emit the ` +
2365
2362
  `"update:modelValue" event. You can update the usage and then ${configMsg}`);
2366
2363
  },
2367
- link: `https://v3.vuejs.org/guide/migration/v-model.html`
2364
+ link: `https://v3-migration.vuejs.org/breaking-changes/v-model.html`
2368
2365
  },
2369
2366
  ["RENDER_FUNCTION" /* RENDER_FUNCTION */]: {
2370
2367
  message: `Vue 3's render function API has changed. ` +
2371
2368
  `You can opt-in to the new API with:` +
2372
2369
  `\n\n configureCompat({ ${"RENDER_FUNCTION" /* RENDER_FUNCTION */}: false })\n` +
2373
2370
  `\n (This can also be done per-component via the "compatConfig" option.)`,
2374
- link: `https://v3.vuejs.org/guide/migration/render-function-api.html`
2371
+ link: `https://v3-migration.vuejs.org/breaking-changes/render-function-api.html`
2375
2372
  },
2376
2373
  ["FILTERS" /* FILTERS */]: {
2377
2374
  message: `filters have been removed in Vue 3. ` +
2378
2375
  `The "|" symbol will be treated as native JavaScript bitwise OR operator. ` +
2379
2376
  `Use method calls or computed properties instead.`,
2380
- link: `https://v3.vuejs.org/guide/migration/filters.html`
2377
+ link: `https://v3-migration.vuejs.org/breaking-changes/filters.html`
2381
2378
  },
2382
2379
  ["PRIVATE_APIS" /* PRIVATE_APIS */]: {
2383
2380
  message: name => `"${name}" is a Vue 2 private API that no longer exists in Vue 3. ` +
@@ -2448,7 +2445,7 @@ function validateCompatConfig(config, instance) {
2448
2445
  warn$1(`Deprecation config "${key}" is compiler-specific and you are ` +
2449
2446
  `running a runtime-only build of Vue. This deprecation should be ` +
2450
2447
  `configured via compiler options in your build setup instead.\n` +
2451
- `Details: https://v3.vuejs.org/guide/migration/migration-build.html`);
2448
+ `Details: https://v3-migration.vuejs.org/breaking-changes/migration-build.html`);
2452
2449
  }
2453
2450
  }
2454
2451
  else {
@@ -5879,7 +5876,6 @@ return withDirectives(h(comp), [
5879
5876
  [bar, this.y]
5880
5877
  ])
5881
5878
  */
5882
- const isBuiltInDirective = /*#__PURE__*/ makeMap('bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo');
5883
5879
  function validateDirectiveName(name) {
5884
5880
  if (isBuiltInDirective(name)) {
5885
5881
  warn$1('Do not use built-in directive ids as custom directive id: ' + name);
@@ -6014,7 +6010,7 @@ function createCompatVue(createApp, createSingletonApp) {
6014
6010
  return vm;
6015
6011
  }
6016
6012
  }
6017
- Vue.version = `2.6.14-compat:${"3.2.29"}`;
6013
+ Vue.version = `2.6.14-compat:${"3.2.30"}`;
6018
6014
  Vue.config = singletonApp.config;
6019
6015
  Vue.use = (p, ...options) => {
6020
6016
  if (p && isFunction(p.install)) {
@@ -11002,7 +10998,7 @@ function isMemoSame(cached, memo) {
11002
10998
  }
11003
10999
 
11004
11000
  // Core API ------------------------------------------------------------------
11005
- const version = "3.2.29";
11001
+ const version = "3.2.30";
11006
11002
  const _ssrUtils = {
11007
11003
  createComponentInstance,
11008
11004
  setupComponent,