@vue/reactivity 3.2.35 → 3.2.38

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.
@@ -303,7 +303,7 @@ function trigger(target, type, key, newValue, oldValue, oldTarget) {
303
303
  return;
304
304
  }
305
305
  let deps = [];
306
- if (type === "clear" /* CLEAR */) {
306
+ if (type === "clear" /* TriggerOpTypes.CLEAR */) {
307
307
  // collection being cleared
308
308
  // trigger all effects for target
309
309
  deps = [...depsMap.values()];
@@ -322,7 +322,7 @@ function trigger(target, type, key, newValue, oldValue, oldTarget) {
322
322
  }
323
323
  // also run for iteration key on ADD | DELETE | Map.SET
324
324
  switch (type) {
325
- case "add" /* ADD */:
325
+ case "add" /* TriggerOpTypes.ADD */:
326
326
  if (!shared.isArray(target)) {
327
327
  deps.push(depsMap.get(ITERATE_KEY));
328
328
  if (shared.isMap(target)) {
@@ -334,7 +334,7 @@ function trigger(target, type, key, newValue, oldValue, oldTarget) {
334
334
  deps.push(depsMap.get('length'));
335
335
  }
336
336
  break;
337
- case "delete" /* DELETE */:
337
+ case "delete" /* TriggerOpTypes.DELETE */:
338
338
  if (!shared.isArray(target)) {
339
339
  deps.push(depsMap.get(ITERATE_KEY));
340
340
  if (shared.isMap(target)) {
@@ -342,7 +342,7 @@ function trigger(target, type, key, newValue, oldValue, oldTarget) {
342
342
  }
343
343
  }
344
344
  break;
345
- case "set" /* SET */:
345
+ case "set" /* TriggerOpTypes.SET */:
346
346
  if (shared.isMap(target)) {
347
347
  deps.push(depsMap.get(ITERATE_KEY));
348
348
  }
@@ -419,7 +419,7 @@ function createArrayInstrumentations() {
419
419
  instrumentations[key] = function (...args) {
420
420
  const arr = toRaw(this);
421
421
  for (let i = 0, l = this.length; i < l; i++) {
422
- track(arr, "get" /* GET */, i + '');
422
+ track(arr, "get" /* TrackOpTypes.GET */, i + '');
423
423
  }
424
424
  // we run the method using the original args first (which may be reactive)
425
425
  const res = arr[key](...args);
@@ -444,16 +444,16 @@ function createArrayInstrumentations() {
444
444
  }
445
445
  function createGetter(isReadonly = false, shallow = false) {
446
446
  return function get(target, key, receiver) {
447
- if (key === "__v_isReactive" /* IS_REACTIVE */) {
447
+ if (key === "__v_isReactive" /* ReactiveFlags.IS_REACTIVE */) {
448
448
  return !isReadonly;
449
449
  }
450
- else if (key === "__v_isReadonly" /* IS_READONLY */) {
450
+ else if (key === "__v_isReadonly" /* ReactiveFlags.IS_READONLY */) {
451
451
  return isReadonly;
452
452
  }
453
- else if (key === "__v_isShallow" /* IS_SHALLOW */) {
453
+ else if (key === "__v_isShallow" /* ReactiveFlags.IS_SHALLOW */) {
454
454
  return shallow;
455
455
  }
456
- else if (key === "__v_raw" /* RAW */ &&
456
+ else if (key === "__v_raw" /* ReactiveFlags.RAW */ &&
457
457
  receiver ===
458
458
  (isReadonly
459
459
  ? shallow
@@ -473,7 +473,7 @@ function createGetter(isReadonly = false, shallow = false) {
473
473
  return res;
474
474
  }
475
475
  if (!isReadonly) {
476
- track(target, "get" /* GET */, key);
476
+ track(target, "get" /* TrackOpTypes.GET */, key);
477
477
  }
478
478
  if (shallow) {
479
479
  return res;
@@ -499,10 +499,10 @@ function createSetter(shallow = false) {
499
499
  if (isReadonly(oldValue) && isRef(oldValue) && !isRef(value)) {
500
500
  return false;
501
501
  }
502
- if (!shallow && !isReadonly(value)) {
503
- if (!isShallow(value)) {
504
- value = toRaw(value);
502
+ if (!shallow) {
503
+ if (!isShallow(value) && !isReadonly(value)) {
505
504
  oldValue = toRaw(oldValue);
505
+ value = toRaw(value);
506
506
  }
507
507
  if (!shared.isArray(target) && isRef(oldValue) && !isRef(value)) {
508
508
  oldValue.value = value;
@@ -516,10 +516,10 @@ function createSetter(shallow = false) {
516
516
  // don't trigger if target is something up in the prototype chain of original
517
517
  if (target === toRaw(receiver)) {
518
518
  if (!hadKey) {
519
- trigger(target, "add" /* ADD */, key, value);
519
+ trigger(target, "add" /* TriggerOpTypes.ADD */, key, value);
520
520
  }
521
521
  else if (shared.hasChanged(value, oldValue)) {
522
- trigger(target, "set" /* SET */, key, value, oldValue);
522
+ trigger(target, "set" /* TriggerOpTypes.SET */, key, value, oldValue);
523
523
  }
524
524
  }
525
525
  return result;
@@ -530,19 +530,19 @@ function deleteProperty(target, key) {
530
530
  const oldValue = target[key];
531
531
  const result = Reflect.deleteProperty(target, key);
532
532
  if (result && hadKey) {
533
- trigger(target, "delete" /* DELETE */, key, undefined, oldValue);
533
+ trigger(target, "delete" /* TriggerOpTypes.DELETE */, key, undefined, oldValue);
534
534
  }
535
535
  return result;
536
536
  }
537
537
  function has(target, key) {
538
538
  const result = Reflect.has(target, key);
539
539
  if (!shared.isSymbol(key) || !builtInSymbols.has(key)) {
540
- track(target, "has" /* HAS */, key);
540
+ track(target, "has" /* TrackOpTypes.HAS */, key);
541
541
  }
542
542
  return result;
543
543
  }
544
544
  function ownKeys(target) {
545
- track(target, "iterate" /* ITERATE */, shared.isArray(target) ? 'length' : ITERATE_KEY);
545
+ track(target, "iterate" /* TrackOpTypes.ITERATE */, shared.isArray(target) ? 'length' : ITERATE_KEY);
546
546
  return Reflect.ownKeys(target);
547
547
  }
548
548
  const mutableHandlers = {
@@ -583,14 +583,14 @@ const getProto = (v) => Reflect.getPrototypeOf(v);
583
583
  function get$1(target, key, isReadonly = false, isShallow = false) {
584
584
  // #1772: readonly(reactive(Map)) should return readonly + reactive version
585
585
  // of the value
586
- target = target["__v_raw" /* RAW */];
586
+ target = target["__v_raw" /* ReactiveFlags.RAW */];
587
587
  const rawTarget = toRaw(target);
588
588
  const rawKey = toRaw(key);
589
589
  if (!isReadonly) {
590
590
  if (key !== rawKey) {
591
- track(rawTarget, "get" /* GET */, key);
591
+ track(rawTarget, "get" /* TrackOpTypes.GET */, key);
592
592
  }
593
- track(rawTarget, "get" /* GET */, rawKey);
593
+ track(rawTarget, "get" /* TrackOpTypes.GET */, rawKey);
594
594
  }
595
595
  const { has } = getProto(rawTarget);
596
596
  const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;
@@ -607,22 +607,22 @@ function get$1(target, key, isReadonly = false, isShallow = false) {
607
607
  }
608
608
  }
609
609
  function has$1(key, isReadonly = false) {
610
- const target = this["__v_raw" /* RAW */];
610
+ const target = this["__v_raw" /* ReactiveFlags.RAW */];
611
611
  const rawTarget = toRaw(target);
612
612
  const rawKey = toRaw(key);
613
613
  if (!isReadonly) {
614
614
  if (key !== rawKey) {
615
- track(rawTarget, "has" /* HAS */, key);
615
+ track(rawTarget, "has" /* TrackOpTypes.HAS */, key);
616
616
  }
617
- track(rawTarget, "has" /* HAS */, rawKey);
617
+ track(rawTarget, "has" /* TrackOpTypes.HAS */, rawKey);
618
618
  }
619
619
  return key === rawKey
620
620
  ? target.has(key)
621
621
  : target.has(key) || target.has(rawKey);
622
622
  }
623
623
  function size(target, isReadonly = false) {
624
- target = target["__v_raw" /* RAW */];
625
- !isReadonly && track(toRaw(target), "iterate" /* ITERATE */, ITERATE_KEY);
624
+ target = target["__v_raw" /* ReactiveFlags.RAW */];
625
+ !isReadonly && track(toRaw(target), "iterate" /* TrackOpTypes.ITERATE */, ITERATE_KEY);
626
626
  return Reflect.get(target, 'size', target);
627
627
  }
628
628
  function add(value) {
@@ -632,7 +632,7 @@ function add(value) {
632
632
  const hadKey = proto.has.call(target, value);
633
633
  if (!hadKey) {
634
634
  target.add(value);
635
- trigger(target, "add" /* ADD */, value, value);
635
+ trigger(target, "add" /* TriggerOpTypes.ADD */, value, value);
636
636
  }
637
637
  return this;
638
638
  }
@@ -651,10 +651,10 @@ function set$1(key, value) {
651
651
  const oldValue = get.call(target, key);
652
652
  target.set(key, value);
653
653
  if (!hadKey) {
654
- trigger(target, "add" /* ADD */, key, value);
654
+ trigger(target, "add" /* TriggerOpTypes.ADD */, key, value);
655
655
  }
656
656
  else if (shared.hasChanged(value, oldValue)) {
657
- trigger(target, "set" /* SET */, key, value, oldValue);
657
+ trigger(target, "set" /* TriggerOpTypes.SET */, key, value, oldValue);
658
658
  }
659
659
  return this;
660
660
  }
@@ -673,7 +673,7 @@ function deleteEntry(key) {
673
673
  // forward the operation before queueing reactions
674
674
  const result = target.delete(key);
675
675
  if (hadKey) {
676
- trigger(target, "delete" /* DELETE */, key, undefined, oldValue);
676
+ trigger(target, "delete" /* TriggerOpTypes.DELETE */, key, undefined, oldValue);
677
677
  }
678
678
  return result;
679
679
  }
@@ -687,17 +687,17 @@ function clear() {
687
687
  // forward the operation before queueing reactions
688
688
  const result = target.clear();
689
689
  if (hadItems) {
690
- trigger(target, "clear" /* CLEAR */, undefined, undefined, oldTarget);
690
+ trigger(target, "clear" /* TriggerOpTypes.CLEAR */, undefined, undefined, oldTarget);
691
691
  }
692
692
  return result;
693
693
  }
694
694
  function createForEach(isReadonly, isShallow) {
695
695
  return function forEach(callback, thisArg) {
696
696
  const observed = this;
697
- const target = observed["__v_raw" /* RAW */];
697
+ const target = observed["__v_raw" /* ReactiveFlags.RAW */];
698
698
  const rawTarget = toRaw(target);
699
699
  const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;
700
- !isReadonly && track(rawTarget, "iterate" /* ITERATE */, ITERATE_KEY);
700
+ !isReadonly && track(rawTarget, "iterate" /* TrackOpTypes.ITERATE */, ITERATE_KEY);
701
701
  return target.forEach((value, key) => {
702
702
  // important: make sure the callback is
703
703
  // 1. invoked with the reactive map as `this` and 3rd arg
@@ -708,7 +708,7 @@ function createForEach(isReadonly, isShallow) {
708
708
  }
709
709
  function createIterableMethod(method, isReadonly, isShallow) {
710
710
  return function (...args) {
711
- const target = this["__v_raw" /* RAW */];
711
+ const target = this["__v_raw" /* ReactiveFlags.RAW */];
712
712
  const rawTarget = toRaw(target);
713
713
  const targetIsMap = shared.isMap(rawTarget);
714
714
  const isPair = method === 'entries' || (method === Symbol.iterator && targetIsMap);
@@ -716,7 +716,7 @@ function createIterableMethod(method, isReadonly, isShallow) {
716
716
  const innerIterator = target[method](...args);
717
717
  const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;
718
718
  !isReadonly &&
719
- track(rawTarget, "iterate" /* ITERATE */, isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY);
719
+ track(rawTarget, "iterate" /* TrackOpTypes.ITERATE */, isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY);
720
720
  // return a wrapped iterator which returns observed versions of the
721
721
  // values emitted from the real iterator
722
722
  return {
@@ -743,7 +743,7 @@ function createReadonlyMethod(type) {
743
743
  const key = args[0] ? `on key "${args[0]}" ` : ``;
744
744
  console.warn(`${shared.capitalize(type)} operation ${key}failed: target is readonly.`, toRaw(this));
745
745
  }
746
- return type === "delete" /* DELETE */ ? false : this;
746
+ return type === "delete" /* TriggerOpTypes.DELETE */ ? false : this;
747
747
  };
748
748
  }
749
749
  function createInstrumentations() {
@@ -785,10 +785,10 @@ function createInstrumentations() {
785
785
  has(key) {
786
786
  return has$1.call(this, key, true);
787
787
  },
788
- add: createReadonlyMethod("add" /* ADD */),
789
- set: createReadonlyMethod("set" /* SET */),
790
- delete: createReadonlyMethod("delete" /* DELETE */),
791
- clear: createReadonlyMethod("clear" /* CLEAR */),
788
+ add: createReadonlyMethod("add" /* TriggerOpTypes.ADD */),
789
+ set: createReadonlyMethod("set" /* TriggerOpTypes.SET */),
790
+ delete: createReadonlyMethod("delete" /* TriggerOpTypes.DELETE */),
791
+ clear: createReadonlyMethod("clear" /* TriggerOpTypes.CLEAR */),
792
792
  forEach: createForEach(true, false)
793
793
  };
794
794
  const shallowReadonlyInstrumentations = {
@@ -801,10 +801,10 @@ function createInstrumentations() {
801
801
  has(key) {
802
802
  return has$1.call(this, key, true);
803
803
  },
804
- add: createReadonlyMethod("add" /* ADD */),
805
- set: createReadonlyMethod("set" /* SET */),
806
- delete: createReadonlyMethod("delete" /* DELETE */),
807
- clear: createReadonlyMethod("clear" /* CLEAR */),
804
+ add: createReadonlyMethod("add" /* TriggerOpTypes.ADD */),
805
+ set: createReadonlyMethod("set" /* TriggerOpTypes.SET */),
806
+ delete: createReadonlyMethod("delete" /* TriggerOpTypes.DELETE */),
807
+ clear: createReadonlyMethod("clear" /* TriggerOpTypes.CLEAR */),
808
808
  forEach: createForEach(true, true)
809
809
  };
810
810
  const iteratorMethods = ['keys', 'values', 'entries', Symbol.iterator];
@@ -831,13 +831,13 @@ function createInstrumentationGetter(isReadonly, shallow) {
831
831
  ? readonlyInstrumentations
832
832
  : mutableInstrumentations;
833
833
  return (target, key, receiver) => {
834
- if (key === "__v_isReactive" /* IS_REACTIVE */) {
834
+ if (key === "__v_isReactive" /* ReactiveFlags.IS_REACTIVE */) {
835
835
  return !isReadonly;
836
836
  }
837
- else if (key === "__v_isReadonly" /* IS_READONLY */) {
837
+ else if (key === "__v_isReadonly" /* ReactiveFlags.IS_READONLY */) {
838
838
  return isReadonly;
839
839
  }
840
- else if (key === "__v_raw" /* RAW */) {
840
+ else if (key === "__v_raw" /* ReactiveFlags.RAW */) {
841
841
  return target;
842
842
  }
843
843
  return Reflect.get(shared.hasOwn(instrumentations, key) && key in target
@@ -877,19 +877,19 @@ function targetTypeMap(rawType) {
877
877
  switch (rawType) {
878
878
  case 'Object':
879
879
  case 'Array':
880
- return 1 /* COMMON */;
880
+ return 1 /* TargetType.COMMON */;
881
881
  case 'Map':
882
882
  case 'Set':
883
883
  case 'WeakMap':
884
884
  case 'WeakSet':
885
- return 2 /* COLLECTION */;
885
+ return 2 /* TargetType.COLLECTION */;
886
886
  default:
887
- return 0 /* INVALID */;
887
+ return 0 /* TargetType.INVALID */;
888
888
  }
889
889
  }
890
890
  function getTargetType(value) {
891
- return value["__v_skip" /* SKIP */] || !Object.isExtensible(value)
892
- ? 0 /* INVALID */
891
+ return value["__v_skip" /* ReactiveFlags.SKIP */] || !Object.isExtensible(value)
892
+ ? 0 /* TargetType.INVALID */
893
893
  : targetTypeMap(shared.toRawType(value));
894
894
  }
895
895
  function reactive(target) {
@@ -932,8 +932,8 @@ function createReactiveObject(target, isReadonly, baseHandlers, collectionHandle
932
932
  }
933
933
  // target is already a Proxy, return it.
934
934
  // exception: calling readonly() on a reactive object
935
- if (target["__v_raw" /* RAW */] &&
936
- !(isReadonly && target["__v_isReactive" /* IS_REACTIVE */])) {
935
+ if (target["__v_raw" /* ReactiveFlags.RAW */] &&
936
+ !(isReadonly && target["__v_isReactive" /* ReactiveFlags.IS_REACTIVE */])) {
937
937
  return target;
938
938
  }
939
939
  // target already has corresponding Proxy
@@ -943,34 +943,34 @@ function createReactiveObject(target, isReadonly, baseHandlers, collectionHandle
943
943
  }
944
944
  // only specific value types can be observed.
945
945
  const targetType = getTargetType(target);
946
- if (targetType === 0 /* INVALID */) {
946
+ if (targetType === 0 /* TargetType.INVALID */) {
947
947
  return target;
948
948
  }
949
- const proxy = new Proxy(target, targetType === 2 /* COLLECTION */ ? collectionHandlers : baseHandlers);
949
+ const proxy = new Proxy(target, targetType === 2 /* TargetType.COLLECTION */ ? collectionHandlers : baseHandlers);
950
950
  proxyMap.set(target, proxy);
951
951
  return proxy;
952
952
  }
953
953
  function isReactive(value) {
954
954
  if (isReadonly(value)) {
955
- return isReactive(value["__v_raw" /* RAW */]);
955
+ return isReactive(value["__v_raw" /* ReactiveFlags.RAW */]);
956
956
  }
957
- return !!(value && value["__v_isReactive" /* IS_REACTIVE */]);
957
+ return !!(value && value["__v_isReactive" /* ReactiveFlags.IS_REACTIVE */]);
958
958
  }
959
959
  function isReadonly(value) {
960
- return !!(value && value["__v_isReadonly" /* IS_READONLY */]);
960
+ return !!(value && value["__v_isReadonly" /* ReactiveFlags.IS_READONLY */]);
961
961
  }
962
962
  function isShallow(value) {
963
- return !!(value && value["__v_isShallow" /* IS_SHALLOW */]);
963
+ return !!(value && value["__v_isShallow" /* ReactiveFlags.IS_SHALLOW */]);
964
964
  }
965
965
  function isProxy(value) {
966
966
  return isReactive(value) || isReadonly(value);
967
967
  }
968
968
  function toRaw(observed) {
969
- const raw = observed && observed["__v_raw" /* RAW */];
969
+ const raw = observed && observed["__v_raw" /* ReactiveFlags.RAW */];
970
970
  return raw ? toRaw(raw) : observed;
971
971
  }
972
972
  function markRaw(value) {
973
- shared.def(value, "__v_skip" /* SKIP */, true);
973
+ shared.def(value, "__v_skip" /* ReactiveFlags.SKIP */, true);
974
974
  return value;
975
975
  }
976
976
  const toReactive = (value) => shared.isObject(value) ? reactive(value) : value;
@@ -982,7 +982,7 @@ function trackRefValue(ref) {
982
982
  {
983
983
  trackEffects(ref.dep || (ref.dep = createDep()), {
984
984
  target: ref,
985
- type: "get" /* GET */,
985
+ type: "get" /* TrackOpTypes.GET */,
986
986
  key: 'value'
987
987
  });
988
988
  }
@@ -994,7 +994,7 @@ function triggerRefValue(ref, newVal) {
994
994
  {
995
995
  triggerEffects(ref.dep, {
996
996
  target: ref,
997
- type: "set" /* SET */,
997
+ type: "set" /* TriggerOpTypes.SET */,
998
998
  key: 'value',
999
999
  newValue: newVal
1000
1000
  });
@@ -1029,10 +1029,11 @@ class RefImpl {
1029
1029
  return this._value;
1030
1030
  }
1031
1031
  set value(newVal) {
1032
- newVal = this.__v_isShallow ? newVal : toRaw(newVal);
1032
+ const useDirectValue = this.__v_isShallow || isShallow(newVal) || isReadonly(newVal);
1033
+ newVal = useDirectValue ? newVal : toRaw(newVal);
1033
1034
  if (shared.hasChanged(newVal, this._rawValue)) {
1034
1035
  this._rawValue = newVal;
1035
- this._value = this.__v_isShallow ? newVal : toReactive(newVal);
1036
+ this._value = useDirectValue ? newVal : toReactive(newVal);
1036
1037
  triggerRefValue(this, newVal);
1037
1038
  }
1038
1039
  }
@@ -1111,11 +1112,13 @@ function toRef(object, key, defaultValue) {
1111
1112
  : new ObjectRefImpl(object, key, defaultValue);
1112
1113
  }
1113
1114
 
1115
+ var _a;
1114
1116
  class ComputedRefImpl {
1115
1117
  constructor(getter, _setter, isReadonly, isSSR) {
1116
1118
  this._setter = _setter;
1117
1119
  this.dep = undefined;
1118
1120
  this.__v_isRef = true;
1121
+ this[_a] = false;
1119
1122
  this._dirty = true;
1120
1123
  this.effect = new ReactiveEffect(getter, () => {
1121
1124
  if (!this._dirty) {
@@ -1125,7 +1128,7 @@ class ComputedRefImpl {
1125
1128
  });
1126
1129
  this.effect.computed = this;
1127
1130
  this.effect.active = this._cacheable = !isSSR;
1128
- this["__v_isReadonly" /* IS_READONLY */] = isReadonly;
1131
+ this["__v_isReadonly" /* ReactiveFlags.IS_READONLY */] = isReadonly;
1129
1132
  }
1130
1133
  get value() {
1131
1134
  // the computed ref may get wrapped by other proxies e.g. readonly() #3376
@@ -1141,6 +1144,7 @@ class ComputedRefImpl {
1141
1144
  this._setter(newValue);
1142
1145
  }
1143
1146
  }
1147
+ _a = "__v_isReadonly" /* ReactiveFlags.IS_READONLY */;
1144
1148
  function computed(getterOrOptions, debugOptions, isSSR = false) {
1145
1149
  let getter;
1146
1150
  let setter;
@@ -1164,7 +1168,7 @@ function computed(getterOrOptions, debugOptions, isSSR = false) {
1164
1168
  return cRef;
1165
1169
  }
1166
1170
 
1167
- var _a;
1171
+ var _a$1;
1168
1172
  const tick = /*#__PURE__*/ Promise.resolve();
1169
1173
  const queue = [];
1170
1174
  let queued = false;
@@ -1187,7 +1191,7 @@ class DeferredComputedRefImpl {
1187
1191
  this.dep = undefined;
1188
1192
  this._dirty = true;
1189
1193
  this.__v_isRef = true;
1190
- this[_a] = true;
1194
+ this[_a$1] = true;
1191
1195
  let compareTarget;
1192
1196
  let hasCompareTarget = false;
1193
1197
  let scheduled = false;
@@ -1234,7 +1238,7 @@ class DeferredComputedRefImpl {
1234
1238
  return toRaw(this)._get();
1235
1239
  }
1236
1240
  }
1237
- _a = "__v_isReadonly" /* IS_READONLY */;
1241
+ _a$1 = "__v_isReadonly" /* ReactiveFlags.IS_READONLY */;
1238
1242
  function deferredComputed(getter) {
1239
1243
  return new DeferredComputedRefImpl(getter);
1240
1244
  }