@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.
package/dist/vue.cjs.js CHANGED
@@ -414,13 +414,15 @@ function looseIndexOf(arr, val) {
414
414
  * @private
415
415
  */
416
416
  const toDisplayString = (val) => {
417
- return val == null
418
- ? ''
419
- : isArray(val) ||
420
- (isObject(val) &&
421
- (val.toString === objectToString || !isFunction(val.toString)))
422
- ? JSON.stringify(val, replacer, 2)
423
- : String(val);
417
+ return isString(val)
418
+ ? val
419
+ : val == null
420
+ ? ''
421
+ : isArray(val) ||
422
+ (isObject(val) &&
423
+ (val.toString === objectToString || !isFunction(val.toString)))
424
+ ? JSON.stringify(val, replacer, 2)
425
+ : String(val);
424
426
  };
425
427
  const replacer = (_key, val) => {
426
428
  // can't use isRef here since @vue/shared has no deps
@@ -494,6 +496,7 @@ const isReservedProp = /*#__PURE__*/ makeMap(
494
496
  'onVnodeBeforeMount,onVnodeMounted,' +
495
497
  'onVnodeBeforeUpdate,onVnodeUpdated,' +
496
498
  'onVnodeBeforeUnmount,onVnodeUnmounted');
499
+ const isBuiltInDirective = /*#__PURE__*/ makeMap('bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo');
497
500
  const cacheStringFunction = (fn) => {
498
501
  const cache = Object.create(null);
499
502
  return ((str) => {
@@ -559,7 +562,6 @@ function warn(msg, ...args) {
559
562
  }
560
563
 
561
564
  let activeEffectScope;
562
- const effectScopeStack = [];
563
565
  class EffectScope {
564
566
  constructor(detached = false) {
565
567
  this.active = true;
@@ -574,11 +576,11 @@ class EffectScope {
574
576
  run(fn) {
575
577
  if (this.active) {
576
578
  try {
577
- this.on();
579
+ activeEffectScope = this;
578
580
  return fn();
579
581
  }
580
582
  finally {
581
- this.off();
583
+ activeEffectScope = this.parent;
582
584
  }
583
585
  }
584
586
  else {
@@ -586,23 +588,24 @@ class EffectScope {
586
588
  }
587
589
  }
588
590
  on() {
589
- if (this.active) {
590
- effectScopeStack.push(this);
591
- activeEffectScope = this;
592
- }
591
+ activeEffectScope = this;
593
592
  }
594
593
  off() {
595
- if (this.active) {
596
- effectScopeStack.pop();
597
- activeEffectScope = effectScopeStack[effectScopeStack.length - 1];
598
- }
594
+ activeEffectScope = this.parent;
599
595
  }
600
596
  stop(fromParent) {
601
597
  if (this.active) {
602
- this.effects.forEach(e => e.stop());
603
- this.cleanups.forEach(cleanup => cleanup());
598
+ let i, l;
599
+ for (i = 0, l = this.effects.length; i < l; i++) {
600
+ this.effects[i].stop();
601
+ }
602
+ for (i = 0, l = this.cleanups.length; i < l; i++) {
603
+ this.cleanups[i]();
604
+ }
604
605
  if (this.scopes) {
605
- this.scopes.forEach(e => e.stop(true));
606
+ for (i = 0, l = this.scopes.length; i < l; i++) {
607
+ this.scopes[i].stop(true);
608
+ }
606
609
  }
607
610
  // nested scope, dereference from parent to avoid memory leaks
608
611
  if (this.parent && !fromParent) {
@@ -620,8 +623,7 @@ class EffectScope {
620
623
  function effectScope(detached) {
621
624
  return new EffectScope(detached);
622
625
  }
623
- function recordEffectScope(effect, scope) {
624
- scope = scope || activeEffectScope;
626
+ function recordEffectScope(effect, scope = activeEffectScope) {
625
627
  if (scope && scope.active) {
626
628
  scope.effects.push(effect);
627
629
  }
@@ -684,7 +686,6 @@ let trackOpBit = 1;
684
686
  * When recursion depth is greater, fall back to using a full cleanup.
685
687
  */
686
688
  const maxMarkerBits = 30;
687
- const effectStack = [];
688
689
  let activeEffect;
689
690
  const ITERATE_KEY = Symbol('iterate' );
690
691
  const MAP_KEY_ITERATE_KEY = Symbol('Map key iterate' );
@@ -694,35 +695,42 @@ class ReactiveEffect {
694
695
  this.scheduler = scheduler;
695
696
  this.active = true;
696
697
  this.deps = [];
698
+ this.parent = undefined;
697
699
  recordEffectScope(this, scope);
698
700
  }
699
701
  run() {
700
702
  if (!this.active) {
701
703
  return this.fn();
702
704
  }
703
- if (!effectStack.length || !effectStack.includes(this)) {
704
- try {
705
- effectStack.push((activeEffect = this));
706
- enableTracking();
707
- trackOpBit = 1 << ++effectTrackDepth;
708
- if (effectTrackDepth <= maxMarkerBits) {
709
- initDepMarkers(this);
710
- }
711
- else {
712
- cleanupEffect(this);
713
- }
714
- return this.fn();
705
+ let parent = activeEffect;
706
+ let lastShouldTrack = shouldTrack;
707
+ while (parent) {
708
+ if (parent === this) {
709
+ return;
715
710
  }
716
- finally {
717
- if (effectTrackDepth <= maxMarkerBits) {
718
- finalizeDepMarkers(this);
719
- }
720
- trackOpBit = 1 << --effectTrackDepth;
721
- resetTracking();
722
- effectStack.pop();
723
- const n = effectStack.length;
724
- activeEffect = n > 0 ? effectStack[n - 1] : undefined;
711
+ parent = parent.parent;
712
+ }
713
+ try {
714
+ this.parent = activeEffect;
715
+ activeEffect = this;
716
+ shouldTrack = true;
717
+ trackOpBit = 1 << ++effectTrackDepth;
718
+ if (effectTrackDepth <= maxMarkerBits) {
719
+ initDepMarkers(this);
725
720
  }
721
+ else {
722
+ cleanupEffect(this);
723
+ }
724
+ return this.fn();
725
+ }
726
+ finally {
727
+ if (effectTrackDepth <= maxMarkerBits) {
728
+ finalizeDepMarkers(this);
729
+ }
730
+ trackOpBit = 1 << --effectTrackDepth;
731
+ activeEffect = this.parent;
732
+ shouldTrack = lastShouldTrack;
733
+ this.parent = undefined;
726
734
  }
727
735
  }
728
736
  stop() {
@@ -770,32 +778,24 @@ function pauseTracking() {
770
778
  trackStack.push(shouldTrack);
771
779
  shouldTrack = false;
772
780
  }
773
- function enableTracking() {
774
- trackStack.push(shouldTrack);
775
- shouldTrack = true;
776
- }
777
781
  function resetTracking() {
778
782
  const last = trackStack.pop();
779
783
  shouldTrack = last === undefined ? true : last;
780
784
  }
781
785
  function track(target, type, key) {
782
- if (!isTracking()) {
783
- return;
784
- }
785
- let depsMap = targetMap.get(target);
786
- if (!depsMap) {
787
- targetMap.set(target, (depsMap = new Map()));
788
- }
789
- let dep = depsMap.get(key);
790
- if (!dep) {
791
- depsMap.set(key, (dep = createDep()));
786
+ if (shouldTrack && activeEffect) {
787
+ let depsMap = targetMap.get(target);
788
+ if (!depsMap) {
789
+ targetMap.set(target, (depsMap = new Map()));
790
+ }
791
+ let dep = depsMap.get(key);
792
+ if (!dep) {
793
+ depsMap.set(key, (dep = createDep()));
794
+ }
795
+ const eventInfo = { effect: activeEffect, target, type, key }
796
+ ;
797
+ trackEffects(dep, eventInfo);
792
798
  }
793
- const eventInfo = { effect: activeEffect, target, type, key }
794
- ;
795
- trackEffects(dep, eventInfo);
796
- }
797
- function isTracking() {
798
- return shouldTrack && activeEffect !== undefined;
799
799
  }
800
800
  function trackEffects(dep, debuggerEventExtraInfo) {
801
801
  let shouldTrack = false;
@@ -1480,13 +1480,10 @@ const toReactive = (value) => isObject(value) ? reactive(value) : value;
1480
1480
  const toReadonly = (value) => isObject(value) ? readonly(value) : value;
1481
1481
 
1482
1482
  function trackRefValue(ref) {
1483
- if (isTracking()) {
1483
+ if (shouldTrack && activeEffect) {
1484
1484
  ref = toRaw(ref);
1485
- if (!ref.dep) {
1486
- ref.dep = createDep();
1487
- }
1488
1485
  {
1489
- trackEffects(ref.dep, {
1486
+ trackEffects(ref.dep || (ref.dep = createDep()), {
1490
1487
  target: ref,
1491
1488
  type: "get" /* GET */,
1492
1489
  key: 'value'
@@ -1508,7 +1505,7 @@ function triggerRefValue(ref, newVal) {
1508
1505
  }
1509
1506
  }
1510
1507
  function isRef(r) {
1511
- return Boolean(r && r.__v_isRef === true);
1508
+ return !!(r && r.__v_isRef === true);
1512
1509
  }
1513
1510
  function ref(value) {
1514
1511
  return createRef(value, false);
@@ -2319,23 +2316,23 @@ const deprecationData = {
2319
2316
  ["GLOBAL_MOUNT" /* GLOBAL_MOUNT */]: {
2320
2317
  message: `The global app bootstrapping API has changed: vm.$mount() and the "el" ` +
2321
2318
  `option have been removed. Use createApp(RootComponent).mount() instead.`,
2322
- link: `https://v3.vuejs.org/guide/migration/global-api.html#mounting-app-instance`
2319
+ link: `https://v3-migration.vuejs.org/breaking-changes/global-api.html#mounting-app-instance`
2323
2320
  },
2324
2321
  ["GLOBAL_MOUNT_CONTAINER" /* GLOBAL_MOUNT_CONTAINER */]: {
2325
2322
  message: `Vue detected directives on the mount container. ` +
2326
2323
  `In Vue 3, the container is no longer considered part of the template ` +
2327
2324
  `and will not be processed/replaced.`,
2328
- link: `https://v3.vuejs.org/guide/migration/mount-changes.html`
2325
+ link: `https://v3-migration.vuejs.org/breaking-changes/mount-changes.html`
2329
2326
  },
2330
2327
  ["GLOBAL_EXTEND" /* GLOBAL_EXTEND */]: {
2331
2328
  message: `Vue.extend() has been removed in Vue 3. ` +
2332
2329
  `Use defineComponent() instead.`,
2333
- link: `https://v3.vuejs.org/api/global-api.html#definecomponent`
2330
+ link: `https://vuejs.org/api/general.html#definecomponent`
2334
2331
  },
2335
2332
  ["GLOBAL_PROTOTYPE" /* GLOBAL_PROTOTYPE */]: {
2336
2333
  message: `Vue.prototype is no longer available in Vue 3. ` +
2337
2334
  `Use app.config.globalProperties instead.`,
2338
- link: `https://v3.vuejs.org/guide/migration/global-api.html#vue-prototype-replaced-by-config-globalproperties`
2335
+ link: `https://v3-migration.vuejs.org/breaking-changes/global-api.html#vue-prototype-replaced-by-config-globalproperties`
2339
2336
  },
2340
2337
  ["GLOBAL_SET" /* GLOBAL_SET */]: {
2341
2338
  message: `Vue.set() has been removed as it is no longer needed in Vue 3. ` +
@@ -2348,7 +2345,7 @@ const deprecationData = {
2348
2345
  ["GLOBAL_OBSERVABLE" /* GLOBAL_OBSERVABLE */]: {
2349
2346
  message: `Vue.observable() has been removed. ` +
2350
2347
  `Use \`import { reactive } from "vue"\` from Composition API instead.`,
2351
- link: `https://v3.vuejs.org/api/basic-reactivity.html`
2348
+ link: `https://vuejs.org/api/reactivity-core.html#reactive`
2352
2349
  },
2353
2350
  ["GLOBAL_PRIVATE_UTIL" /* GLOBAL_PRIVATE_UTIL */]: {
2354
2351
  message: `Vue.util has been removed. Please refactor to avoid its usage ` +
@@ -2367,11 +2364,11 @@ const deprecationData = {
2367
2364
  ["CONFIG_KEY_CODES" /* CONFIG_KEY_CODES */]: {
2368
2365
  message: `config.keyCodes has been removed. ` +
2369
2366
  `In Vue 3, you can directly use the kebab-case key names as v-on modifiers.`,
2370
- link: `https://v3.vuejs.org/guide/migration/keycode-modifiers.html`
2367
+ link: `https://v3-migration.vuejs.org/breaking-changes/keycode-modifiers.html`
2371
2368
  },
2372
2369
  ["CONFIG_PRODUCTION_TIP" /* CONFIG_PRODUCTION_TIP */]: {
2373
2370
  message: `config.productionTip has been removed.`,
2374
- link: `https://v3.vuejs.org/guide/migration/global-api.html#config-productiontip-removed`
2371
+ link: `https://v3-migration.vuejs.org/breaking-changes/global-api.html#config-productiontip-removed`
2375
2372
  },
2376
2373
  ["CONFIG_IGNORED_ELEMENTS" /* CONFIG_IGNORED_ELEMENTS */]: {
2377
2374
  message: () => {
@@ -2384,7 +2381,7 @@ const deprecationData = {
2384
2381
  }
2385
2382
  return msg;
2386
2383
  },
2387
- link: `https://v3.vuejs.org/guide/migration/global-api.html#config-ignoredelements-is-now-config-iscustomelement`
2384
+ link: `https://v3-migration.vuejs.org/breaking-changes/global-api.html#config-ignoredelements-is-now-config-iscustomelement`
2388
2385
  },
2389
2386
  ["CONFIG_WHITESPACE" /* CONFIG_WHITESPACE */]: {
2390
2387
  // this warning is only relevant in the full build when using runtime
@@ -2407,12 +2404,12 @@ const deprecationData = {
2407
2404
  },
2408
2405
  ["INSTANCE_DESTROY" /* INSTANCE_DESTROY */]: {
2409
2406
  message: `vm.$destroy() has been removed. Use app.unmount() instead.`,
2410
- link: `https://v3.vuejs.org/api/application-api.html#unmount`
2407
+ link: `https://vuejs.org/api/application.html#app-unmount`
2411
2408
  },
2412
2409
  ["INSTANCE_EVENT_EMITTER" /* INSTANCE_EVENT_EMITTER */]: {
2413
2410
  message: `vm.$on/$once/$off() have been removed. ` +
2414
2411
  `Use an external event emitter library instead.`,
2415
- link: `https://v3.vuejs.org/guide/migration/events-api.html`
2412
+ link: `https://v3-migration.vuejs.org/breaking-changes/events-api.html`
2416
2413
  },
2417
2414
  ["INSTANCE_EVENT_HOOKS" /* INSTANCE_EVENT_HOOKS */]: {
2418
2415
  message: event => `"${event}" lifecycle events are no longer supported. From templates, ` +
@@ -2420,23 +2417,23 @@ const deprecationData = {
2420
2417
  `should be changed to @vnode-${event.slice(5)}. ` +
2421
2418
  `From JavaScript, use Composition API to dynamically register lifecycle ` +
2422
2419
  `hooks.`,
2423
- link: `https://v3.vuejs.org/guide/migration/vnode-lifecycle-events.html`
2420
+ link: `https://v3-migration.vuejs.org/breaking-changes/vnode-lifecycle-events.html`
2424
2421
  },
2425
2422
  ["INSTANCE_CHILDREN" /* INSTANCE_CHILDREN */]: {
2426
2423
  message: `vm.$children has been removed. Consider refactoring your logic ` +
2427
2424
  `to avoid relying on direct access to child components.`,
2428
- link: `https://v3.vuejs.org/guide/migration/children.html`
2425
+ link: `https://v3-migration.vuejs.org/breaking-changes/children.html`
2429
2426
  },
2430
2427
  ["INSTANCE_LISTENERS" /* INSTANCE_LISTENERS */]: {
2431
2428
  message: `vm.$listeners has been removed. In Vue 3, parent v-on listeners are ` +
2432
2429
  `included in vm.$attrs and it is no longer necessary to separately use ` +
2433
2430
  `v-on="$listeners" if you are already using v-bind="$attrs". ` +
2434
2431
  `(Note: the Vue 3 behavior only applies if this compat config is disabled)`,
2435
- link: `https://v3.vuejs.org/guide/migration/listeners-removed.html`
2432
+ link: `https://v3-migration.vuejs.org/breaking-changes/listeners-removed.html`
2436
2433
  },
2437
2434
  ["INSTANCE_SCOPED_SLOTS" /* INSTANCE_SCOPED_SLOTS */]: {
2438
2435
  message: `vm.$scopedSlots has been removed. Use vm.$slots instead.`,
2439
- link: `https://v3.vuejs.org/guide/migration/slots-unification.html`
2436
+ link: `https://v3-migration.vuejs.org/breaking-changes/slots-unification.html`
2440
2437
  },
2441
2438
  ["INSTANCE_ATTRS_CLASS_STYLE" /* INSTANCE_ATTRS_CLASS_STYLE */]: {
2442
2439
  message: componentName => `Component <${componentName || 'Anonymous'}> has \`inheritAttrs: false\` but is ` +
@@ -2447,17 +2444,17 @@ const deprecationData = {
2447
2444
  `If you are binding $attrs to a non-root element and expecting ` +
2448
2445
  `class/style to fallthrough on root, you will need to now manually bind ` +
2449
2446
  `them on root via :class="$attrs.class".`,
2450
- link: `https://v3.vuejs.org/guide/migration/attrs-includes-class-style.html`
2447
+ link: `https://v3-migration.vuejs.org/breaking-changes/attrs-includes-class-style.html`
2451
2448
  },
2452
2449
  ["OPTIONS_DATA_FN" /* OPTIONS_DATA_FN */]: {
2453
2450
  message: `The "data" option can no longer be a plain object. ` +
2454
2451
  `Always use a function.`,
2455
- link: `https://v3.vuejs.org/guide/migration/data-option.html`
2452
+ link: `https://v3-migration.vuejs.org/breaking-changes/data-option.html`
2456
2453
  },
2457
2454
  ["OPTIONS_DATA_MERGE" /* OPTIONS_DATA_MERGE */]: {
2458
2455
  message: (key) => `Detected conflicting key "${key}" when merging data option values. ` +
2459
2456
  `In Vue 3, data keys are merged shallowly and will override one another.`,
2460
- link: `https://v3.vuejs.org/guide/migration/data-option.html#mixin-merge-behavior-change`
2457
+ link: `https://v3-migration.vuejs.org/breaking-changes/data-option.html#mixin-merge-behavior-change`
2461
2458
  },
2462
2459
  ["OPTIONS_BEFORE_DESTROY" /* OPTIONS_BEFORE_DESTROY */]: {
2463
2460
  message: `\`beforeDestroy\` has been renamed to \`beforeUnmount\`.`
@@ -2471,23 +2468,23 @@ const deprecationData = {
2471
2468
  `If current usage is intended, you can disable the compat behavior and ` +
2472
2469
  `suppress this warning with:` +
2473
2470
  `\n\n configureCompat({ ${"WATCH_ARRAY" /* WATCH_ARRAY */}: false })\n`,
2474
- link: `https://v3.vuejs.org/guide/migration/watch.html`
2471
+ link: `https://v3-migration.vuejs.org/breaking-changes/watch.html`
2475
2472
  },
2476
2473
  ["PROPS_DEFAULT_THIS" /* PROPS_DEFAULT_THIS */]: {
2477
2474
  message: (key) => `props default value function no longer has access to "this". The compat ` +
2478
2475
  `build only offers access to this.$options.` +
2479
2476
  `(found in prop "${key}")`,
2480
- link: `https://v3.vuejs.org/guide/migration/props-default-this.html`
2477
+ link: `https://v3-migration.vuejs.org/breaking-changes/props-default-this.html`
2481
2478
  },
2482
2479
  ["CUSTOM_DIR" /* CUSTOM_DIR */]: {
2483
2480
  message: (legacyHook, newHook) => `Custom directive hook "${legacyHook}" has been removed. ` +
2484
2481
  `Use "${newHook}" instead.`,
2485
- link: `https://v3.vuejs.org/guide/migration/custom-directives.html`
2482
+ link: `https://v3-migration.vuejs.org/breaking-changes/custom-directives.html`
2486
2483
  },
2487
2484
  ["V_ON_KEYCODE_MODIFIER" /* V_ON_KEYCODE_MODIFIER */]: {
2488
2485
  message: `Using keyCode as v-on modifier is no longer supported. ` +
2489
2486
  `Use kebab-case key name modifiers instead.`,
2490
- link: `https://v3.vuejs.org/guide/migration/keycode-modifiers.html`
2487
+ link: `https://v3-migration.vuejs.org/breaking-changes/keycode-modifiers.html`
2491
2488
  },
2492
2489
  ["ATTR_FALSE_VALUE" /* ATTR_FALSE_VALUE */]: {
2493
2490
  message: (name) => `Attribute "${name}" with v-bind value \`false\` will render ` +
@@ -2495,7 +2492,7 @@ const deprecationData = {
2495
2492
  `use \`null\` or \`undefined\` instead. If the usage is intended, ` +
2496
2493
  `you can disable the compat behavior and suppress this warning with:` +
2497
2494
  `\n\n configureCompat({ ${"ATTR_FALSE_VALUE" /* ATTR_FALSE_VALUE */}: false })\n`,
2498
- link: `https://v3.vuejs.org/guide/migration/attribute-coercion.html`
2495
+ link: `https://v3-migration.vuejs.org/breaking-changes/attribute-coercion.html`
2499
2496
  },
2500
2497
  ["ATTR_ENUMERATED_COERCION" /* ATTR_ENUMERATED_COERCION */]: {
2501
2498
  message: (name, value, coerced) => `Enumerated attribute "${name}" with v-bind value \`${value}\` will ` +
@@ -2504,7 +2501,7 @@ const deprecationData = {
2504
2501
  `If the usage is intended, ` +
2505
2502
  `you can disable the compat behavior and suppress this warning with:` +
2506
2503
  `\n\n configureCompat({ ${"ATTR_ENUMERATED_COERCION" /* ATTR_ENUMERATED_COERCION */}: false })\n`,
2507
- link: `https://v3.vuejs.org/guide/migration/attribute-coercion.html`
2504
+ link: `https://v3-migration.vuejs.org/breaking-changes/attribute-coercion.html`
2508
2505
  },
2509
2506
  ["TRANSITION_CLASSES" /* TRANSITION_CLASSES */]: {
2510
2507
  message: `` // this feature cannot be runtime-detected
@@ -2515,7 +2512,7 @@ const deprecationData = {
2515
2512
  `for styling, you can disable the compat behavior and suppress this ` +
2516
2513
  `warning with:` +
2517
2514
  `\n\n configureCompat({ ${"TRANSITION_GROUP_ROOT" /* TRANSITION_GROUP_ROOT */}: false })\n`,
2518
- link: `https://v3.vuejs.org/guide/migration/transition-group.html`
2515
+ link: `https://v3-migration.vuejs.org/breaking-changes/transition-group.html`
2519
2516
  },
2520
2517
  ["COMPONENT_ASYNC" /* COMPONENT_ASYNC */]: {
2521
2518
  message: (comp) => {
@@ -2528,7 +2525,7 @@ const deprecationData = {
2528
2525
  `warning with:` +
2529
2526
  `\n\n configureCompat({ ${"COMPONENT_ASYNC" /* COMPONENT_ASYNC */}: false })\n`);
2530
2527
  },
2531
- link: `https://v3.vuejs.org/guide/migration/async-components.html`
2528
+ link: `https://v3-migration.vuejs.org/breaking-changes/async-components.html`
2532
2529
  },
2533
2530
  ["COMPONENT_FUNCTIONAL" /* COMPONENT_FUNCTIONAL */]: {
2534
2531
  message: (comp) => {
@@ -2539,7 +2536,7 @@ const deprecationData = {
2539
2536
  `components usage have been migrated and its compat behavior has ` +
2540
2537
  `been disabled.`);
2541
2538
  },
2542
- link: `https://v3.vuejs.org/guide/migration/functional-components.html`
2539
+ link: `https://v3-migration.vuejs.org/breaking-changes/functional-components.html`
2543
2540
  },
2544
2541
  ["COMPONENT_V_MODEL" /* COMPONENT_V_MODEL */]: {
2545
2542
  message: (comp) => {
@@ -2556,20 +2553,20 @@ const deprecationData = {
2556
2553
  `to work with v-model should now use the "modelValue" prop and emit the ` +
2557
2554
  `"update:modelValue" event. You can update the usage and then ${configMsg}`);
2558
2555
  },
2559
- link: `https://v3.vuejs.org/guide/migration/v-model.html`
2556
+ link: `https://v3-migration.vuejs.org/breaking-changes/v-model.html`
2560
2557
  },
2561
2558
  ["RENDER_FUNCTION" /* RENDER_FUNCTION */]: {
2562
2559
  message: `Vue 3's render function API has changed. ` +
2563
2560
  `You can opt-in to the new API with:` +
2564
2561
  `\n\n configureCompat({ ${"RENDER_FUNCTION" /* RENDER_FUNCTION */}: false })\n` +
2565
2562
  `\n (This can also be done per-component via the "compatConfig" option.)`,
2566
- link: `https://v3.vuejs.org/guide/migration/render-function-api.html`
2563
+ link: `https://v3-migration.vuejs.org/breaking-changes/render-function-api.html`
2567
2564
  },
2568
2565
  ["FILTERS" /* FILTERS */]: {
2569
2566
  message: `filters have been removed in Vue 3. ` +
2570
2567
  `The "|" symbol will be treated as native JavaScript bitwise OR operator. ` +
2571
2568
  `Use method calls or computed properties instead.`,
2572
- link: `https://v3.vuejs.org/guide/migration/filters.html`
2569
+ link: `https://v3-migration.vuejs.org/breaking-changes/filters.html`
2573
2570
  },
2574
2571
  ["PRIVATE_APIS" /* PRIVATE_APIS */]: {
2575
2572
  message: name => `"${name}" is a Vue 2 private API that no longer exists in Vue 3. ` +
@@ -2637,7 +2634,7 @@ function validateCompatConfig(config, instance) {
2637
2634
  warn$1(`Deprecation config "${key}" is compiler-specific and you are ` +
2638
2635
  `running a runtime-only build of Vue. This deprecation should be ` +
2639
2636
  `configured via compiler options in your build setup instead.\n` +
2640
- `Details: https://v3.vuejs.org/guide/migration/migration-build.html`);
2637
+ `Details: https://v3-migration.vuejs.org/breaking-changes/migration-build.html`);
2641
2638
  }
2642
2639
  }
2643
2640
  else {
@@ -6055,7 +6052,6 @@ return withDirectives(h(comp), [
6055
6052
  [bar, this.y]
6056
6053
  ])
6057
6054
  */
6058
- const isBuiltInDirective = /*#__PURE__*/ makeMap('bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo');
6059
6055
  function validateDirectiveName(name) {
6060
6056
  if (isBuiltInDirective(name)) {
6061
6057
  warn$1('Do not use built-in directive ids as custom directive id: ' + name);
@@ -6190,7 +6186,7 @@ function createCompatVue(createApp, createSingletonApp) {
6190
6186
  return vm;
6191
6187
  }
6192
6188
  }
6193
- Vue.version = `2.6.14-compat:${"3.2.29"}`;
6189
+ Vue.version = `2.6.14-compat:${"3.2.30"}`;
6194
6190
  Vue.config = singletonApp.config;
6195
6191
  Vue.use = (p, ...options) => {
6196
6192
  if (p && isFunction(p.install)) {
@@ -11098,7 +11094,7 @@ function isMemoSame(cached, memo) {
11098
11094
  }
11099
11095
 
11100
11096
  // Core API ------------------------------------------------------------------
11101
- const version = "3.2.29";
11097
+ const version = "3.2.30";
11102
11098
  const _ssrUtils = {
11103
11099
  createComponentInstance,
11104
11100
  setupComponent,
@@ -13648,13 +13644,13 @@ const deprecationData$1 = {
13648
13644
  message: `Platform-native elements with "is" prop will no longer be ` +
13649
13645
  `treated as components in Vue 3 unless the "is" value is explicitly ` +
13650
13646
  `prefixed with "vue:".`,
13651
- link: `https://v3.vuejs.org/guide/migration/custom-elements-interop.html`
13647
+ link: `https://v3-migration.vuejs.org/breaking-changes/custom-elements-interop.html`
13652
13648
  },
13653
13649
  ["COMPILER_V_BIND_SYNC" /* COMPILER_V_BIND_SYNC */]: {
13654
13650
  message: key => `.sync modifier for v-bind has been removed. Use v-model with ` +
13655
13651
  `argument instead. \`v-bind:${key}.sync\` should be changed to ` +
13656
13652
  `\`v-model:${key}\`.`,
13657
- link: `https://v3.vuejs.org/guide/migration/v-model.html`
13653
+ link: `https://v3-migration.vuejs.org/breaking-changes/v-model.html`
13658
13654
  },
13659
13655
  ["COMPILER_V_BIND_PROP" /* COMPILER_V_BIND_PROP */]: {
13660
13656
  message: `.prop modifier for v-bind has been removed and no longer necessary. ` +
@@ -13666,11 +13662,11 @@ const deprecationData$1 = {
13666
13662
  `that appears before v-bind in the case of conflict. ` +
13667
13663
  `To retain 2.x behavior, move v-bind to make it the first attribute. ` +
13668
13664
  `You can also suppress this warning if the usage is intended.`,
13669
- link: `https://v3.vuejs.org/guide/migration/v-bind.html`
13665
+ link: `https://v3-migration.vuejs.org/breaking-changes/v-bind.html`
13670
13666
  },
13671
13667
  ["COMPILER_V_ON_NATIVE" /* COMPILER_V_ON_NATIVE */]: {
13672
13668
  message: `.native modifier for v-on has been removed as is no longer necessary.`,
13673
- link: `https://v3.vuejs.org/guide/migration/v-on-native-modifier-removed.html`
13669
+ link: `https://v3-migration.vuejs.org/breaking-changes/v-on-native-modifier-removed.html`
13674
13670
  },
13675
13671
  ["COMPILER_V_IF_V_FOR_PRECEDENCE" /* COMPILER_V_IF_V_FOR_PRECEDENCE */]: {
13676
13672
  message: `v-if / v-for precedence when used on the same element has changed ` +
@@ -13678,7 +13674,7 @@ const deprecationData$1 = {
13678
13674
  `access to v-for scope variables. It is best to avoid the ambiguity ` +
13679
13675
  `with <template> tags or use a computed property that filters v-for ` +
13680
13676
  `data source.`,
13681
- link: `https://v3.vuejs.org/guide/migration/v-if-v-for.html`
13677
+ link: `https://v3-migration.vuejs.org/breaking-changes/v-if-v-for.html`
13682
13678
  },
13683
13679
  ["COMPILER_NATIVE_TEMPLATE" /* COMPILER_NATIVE_TEMPLATE */]: {
13684
13680
  message: `<template> with no special directives will render as a native template ` +
@@ -13686,13 +13682,13 @@ const deprecationData$1 = {
13686
13682
  },
13687
13683
  ["COMPILER_INLINE_TEMPLATE" /* COMPILER_INLINE_TEMPLATE */]: {
13688
13684
  message: `"inline-template" has been removed in Vue 3.`,
13689
- link: `https://v3.vuejs.org/guide/migration/inline-template-attribute.html`
13685
+ link: `https://v3-migration.vuejs.org/breaking-changes/inline-template-attribute.html`
13690
13686
  },
13691
13687
  ["COMPILER_FILTER" /* COMPILER_FILTERS */]: {
13692
13688
  message: `filters have been removed in Vue 3. ` +
13693
13689
  `The "|" symbol will be treated as native JavaScript bitwise OR operator. ` +
13694
13690
  `Use method calls or computed properties instead.`,
13695
- link: `https://v3.vuejs.org/guide/migration/filters.html`
13691
+ link: `https://v3-migration.vuejs.org/breaking-changes/filters.html`
13696
13692
  }
13697
13693
  };
13698
13694
  function getCompatValue(key, context) {
@@ -17659,7 +17655,7 @@ function buildProps(node, context, props = node.props, ssr = false) {
17659
17655
  }
17660
17656
  }
17661
17657
  }
17662
- else {
17658
+ else if (!isBuiltInDirective(name)) {
17663
17659
  // no built-in transform, this is a user custom directive.
17664
17660
  runtimeDirectives.push(prop);
17665
17661
  // custom dirs may use beforeUpdate so they need to force blocks