vue 2.7.0 → 2.7.3

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.
Files changed (42) hide show
  1. package/dist/vue.common.dev.js +88 -75
  2. package/dist/vue.common.prod.js +3 -3
  3. package/dist/vue.esm.browser.js +88 -76
  4. package/dist/vue.esm.browser.min.js +3 -3
  5. package/dist/vue.esm.js +89 -76
  6. package/dist/vue.js +89 -75
  7. package/dist/vue.min.js +3 -3
  8. package/dist/vue.runtime.common.dev.js +88 -75
  9. package/dist/vue.runtime.common.prod.js +3 -3
  10. package/dist/vue.runtime.esm.js +89 -76
  11. package/dist/vue.runtime.js +89 -75
  12. package/dist/vue.runtime.min.js +3 -3
  13. package/dist/vue.runtime.mjs +89 -76
  14. package/package.json +2 -2
  15. package/packages/compiler-sfc/dist/compiler-sfc.js +70 -67
  16. package/packages/compiler-sfc/package.json +1 -1
  17. package/packages/compiler-sfc/src/compileScript.ts +12 -15
  18. package/packages/compiler-sfc/src/parseComponent.ts +6 -1
  19. package/packages/compiler-sfc/src/templateCompilerModules/srcset.ts +1 -1
  20. package/packages/compiler-sfc/test/compileScript.spec.ts +12 -0
  21. package/src/core/observer/index.ts +55 -56
  22. package/src/core/util/next-tick.ts +2 -1
  23. package/src/core/vdom/modules/directives.ts +2 -2
  24. package/src/shared/constants.ts +3 -1
  25. package/src/shared/util.ts +1 -1
  26. package/src/v3/apiSetup.ts +4 -21
  27. package/src/v3/apiWatch.ts +2 -2
  28. package/src/v3/index.ts +1 -0
  29. package/src/v3/reactivity/reactive.ts +13 -2
  30. package/src/v3/reactivity/ref.ts +40 -2
  31. package/types/common.d.ts +6 -0
  32. package/types/index.d.ts +7 -4
  33. package/types/jsx.d.ts +16 -2
  34. package/types/options.d.ts +7 -1
  35. package/types/v3-component-options.d.ts +162 -33
  36. package/types/v3-component-props.d.ts +19 -20
  37. package/types/v3-component-public-instance.d.ts +230 -0
  38. package/types/v3-define-component.d.ts +70 -12
  39. package/types/v3-generated.d.ts +5 -1
  40. package/types/v3-setup-context.d.ts +0 -6
  41. package/types/vnode.d.ts +15 -0
  42. package/types/v3-component-proxy.d.ts +0 -189
package/dist/vue.esm.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vue.js v2.7.0
2
+ * Vue.js v2.7.3
3
3
  * (c) 2014-2022 Evan You
4
4
  * Released under the MIT License.
5
5
  */
@@ -316,7 +316,7 @@ function hasChanged(x, y) {
316
316
  return x === 0 && 1 / x !== 1 / y;
317
317
  }
318
318
  else {
319
- return x === x && y === y;
319
+ return x === x || y === y;
320
320
  }
321
321
  }
322
322
 
@@ -334,7 +334,9 @@ var LIFECYCLE_HOOKS = [
334
334
  'activated',
335
335
  'deactivated',
336
336
  'errorCaptured',
337
- 'serverPrefetch'
337
+ 'serverPrefetch',
338
+ 'renderTracked',
339
+ 'renderTriggered'
338
340
  ];
339
341
 
340
342
  var config = {
@@ -889,7 +891,7 @@ function makeReactive(target, shallow) {
889
891
  warn$2("Target is already a ".concat(existingOb.shallow ? "" : "non-", "shallow reactive object, and cannot be converted to ").concat(shallow ? "" : "non-", "shallow."));
890
892
  }
891
893
  }
892
- var ob = observe(target, shallow);
894
+ var ob = observe(target, shallow, isServerRendering() /* ssr mock reactivity */);
893
895
  if (process.env.NODE_ENV !== 'production' && !ob) {
894
896
  if (target == null || isPrimitive(target)) {
895
897
  warn$2("value cannot be made reactive: ".concat(String(target)));
@@ -951,7 +953,7 @@ function createRef(rawValue, shallow) {
951
953
  var ref = {};
952
954
  def(ref, RefFlag, true);
953
955
  def(ref, "__v_isShallow" /* ReactiveFlags.IS_SHALLOW */, true);
954
- ref.dep = defineReactive(ref, 'value', rawValue, null, shallow);
956
+ def(ref, 'dep', defineReactive(ref, 'value', rawValue, null, shallow, isServerRendering()));
955
957
  return ref;
956
958
  }
957
959
  function triggerRef(ref) {
@@ -973,6 +975,33 @@ function triggerRef(ref) {
973
975
  function unref(ref) {
974
976
  return isRef(ref) ? ref.value : ref;
975
977
  }
978
+ function proxyRefs(objectWithRefs) {
979
+ if (isReactive(objectWithRefs)) {
980
+ return objectWithRefs;
981
+ }
982
+ var proxy = {};
983
+ var keys = Object.keys(objectWithRefs);
984
+ for (var i = 0; i < keys.length; i++) {
985
+ proxyWithRefUnwrap(proxy, objectWithRefs, keys[i]);
986
+ }
987
+ return proxy;
988
+ }
989
+ function proxyWithRefUnwrap(target, source, key) {
990
+ Object.defineProperty(target, key, {
991
+ enumerable: true,
992
+ configurable: true,
993
+ get: function () { return unref(source[key]); },
994
+ set: function (value) {
995
+ var oldValue = source[key];
996
+ if (isRef(oldValue) && !isRef(value)) {
997
+ oldValue.value = value;
998
+ }
999
+ else {
1000
+ source[key] = value;
1001
+ }
1002
+ }
1003
+ });
1004
+ }
976
1005
  function customRef(factory) {
977
1006
  var dep = new Dep();
978
1007
  var _a = factory(function () {
@@ -1517,7 +1546,9 @@ function initSetup(vm) {
1517
1546
  // exposed for compiled render fn
1518
1547
  var proxy = (vm._setupProxy = {});
1519
1548
  for (var key in setupResult) {
1520
- proxyWithRefUnwrap(proxy, setupResult, key);
1549
+ if (key !== '__sfc') {
1550
+ proxyWithRefUnwrap(proxy, setupResult, key);
1551
+ }
1521
1552
  }
1522
1553
  }
1523
1554
  }
@@ -1526,20 +1557,6 @@ function initSetup(vm) {
1526
1557
  }
1527
1558
  }
1528
1559
  }
1529
- function proxyWithRefUnwrap(target, source, key) {
1530
- Object.defineProperty(target, key, {
1531
- enumerable: true,
1532
- configurable: true,
1533
- get: function () {
1534
- var raw = source[key];
1535
- return isRef(raw) ? raw.value : raw;
1536
- },
1537
- set: function (newVal) {
1538
- var raw = source[key];
1539
- isRef(raw) ? (raw.value = newVal) : (source[key] = newVal);
1540
- }
1541
- });
1542
- }
1543
1560
  function createSetupContext(vm) {
1544
1561
  var exposeCalled = false;
1545
1562
  return {
@@ -4697,7 +4714,7 @@ var onServerPrefetch = createLifeCycle('serverPrefetch');
4697
4714
  var onRenderTracked = createLifeCycle('renderTracked');
4698
4715
  var onRenderTriggered = createLifeCycle('renderTriggered');
4699
4716
 
4700
- var version = '2.7.0';
4717
+ var version = '2.7.3';
4701
4718
  /**
4702
4719
  * @internal type is manually declared in <root>/types/v3-define-component.d.ts
4703
4720
  */
@@ -4715,6 +4732,13 @@ var shouldObserve = true;
4715
4732
  function toggleObserving(value) {
4716
4733
  shouldObserve = value;
4717
4734
  }
4735
+ // ssr mock dep
4736
+ var mockDep = {
4737
+ notify: noop,
4738
+ depend: noop,
4739
+ addSub: noop,
4740
+ removeSub: noop
4741
+ };
4718
4742
  /**
4719
4743
  * Observer class that is attached to each observed
4720
4744
  * object. Once attached, the observer converts the target
@@ -4722,78 +4746,63 @@ function toggleObserving(value) {
4722
4746
  * collect dependencies and dispatch updates.
4723
4747
  */
4724
4748
  var Observer = /** @class */ (function () {
4725
- function Observer(value, shallow) {
4749
+ function Observer(value, shallow, mock) {
4726
4750
  if (shallow === void 0) { shallow = false; }
4751
+ if (mock === void 0) { mock = false; }
4727
4752
  this.value = value;
4728
4753
  this.shallow = shallow;
4754
+ this.mock = mock;
4729
4755
  // this.value = value
4730
- this.dep = new Dep();
4756
+ this.dep = mock ? mockDep : new Dep();
4731
4757
  this.vmCount = 0;
4732
4758
  def(value, '__ob__', this);
4733
4759
  if (isArray(value)) {
4734
- if (hasProto) {
4735
- protoAugment(value, arrayMethods);
4736
- }
4737
- else {
4738
- copyAugment(value, arrayMethods, arrayKeys);
4760
+ if (!mock) {
4761
+ if (hasProto) {
4762
+ value.__proto__ = arrayMethods;
4763
+ /* eslint-enable no-proto */
4764
+ }
4765
+ else {
4766
+ for (var i = 0, l = arrayKeys.length; i < l; i++) {
4767
+ var key = arrayKeys[i];
4768
+ def(value, key, arrayMethods[key]);
4769
+ }
4770
+ }
4739
4771
  }
4740
4772
  if (!shallow) {
4741
4773
  this.observeArray(value);
4742
4774
  }
4743
4775
  }
4744
4776
  else {
4745
- this.walk(value, shallow);
4777
+ /**
4778
+ * Walk through all properties and convert them into
4779
+ * getter/setters. This method should only be called when
4780
+ * value type is Object.
4781
+ */
4782
+ var keys = Object.keys(value);
4783
+ for (var i = 0; i < keys.length; i++) {
4784
+ var key = keys[i];
4785
+ defineReactive(value, key, NO_INIITIAL_VALUE, undefined, shallow, mock);
4786
+ }
4746
4787
  }
4747
4788
  }
4748
- /**
4749
- * Walk through all properties and convert them into
4750
- * getter/setters. This method should only be called when
4751
- * value type is Object.
4752
- */
4753
- Observer.prototype.walk = function (obj, shallow) {
4754
- var keys = Object.keys(obj);
4755
- for (var i = 0; i < keys.length; i++) {
4756
- var key = keys[i];
4757
- defineReactive(obj, key, NO_INIITIAL_VALUE, undefined, shallow);
4758
- }
4759
- };
4760
4789
  /**
4761
4790
  * Observe a list of Array items.
4762
4791
  */
4763
- Observer.prototype.observeArray = function (items) {
4764
- for (var i = 0, l = items.length; i < l; i++) {
4765
- observe(items[i]);
4792
+ Observer.prototype.observeArray = function (value) {
4793
+ for (var i = 0, l = value.length; i < l; i++) {
4794
+ observe(value[i], false, this.mock);
4766
4795
  }
4767
4796
  };
4768
4797
  return Observer;
4769
4798
  }());
4770
4799
  // helpers
4771
- /**
4772
- * Augment a target Object or Array by intercepting
4773
- * the prototype chain using __proto__
4774
- */
4775
- function protoAugment(target, src) {
4776
- /* eslint-disable no-proto */
4777
- target.__proto__ = src;
4778
- /* eslint-enable no-proto */
4779
- }
4780
- /**
4781
- * Augment a target Object or Array by defining
4782
- * hidden properties.
4783
- */
4784
- /* istanbul ignore next */
4785
- function copyAugment(target, src, keys) {
4786
- for (var i = 0, l = keys.length; i < l; i++) {
4787
- var key = keys[i];
4788
- def(target, key, src[key]);
4789
- }
4790
- }
4791
4800
  /**
4792
4801
  * Attempt to create an observer instance for a value,
4793
4802
  * returns the new observer if successfully observed,
4794
4803
  * or the existing observer if the value already has one.
4795
4804
  */
4796
- function observe(value, shallow) {
4805
+ function observe(value, shallow, ssrMockReactivity) {
4797
4806
  if (!isObject(value) || isRef(value) || value instanceof VNode) {
4798
4807
  return;
4799
4808
  }
@@ -4802,18 +4811,18 @@ function observe(value, shallow) {
4802
4811
  ob = value.__ob__;
4803
4812
  }
4804
4813
  else if (shouldObserve &&
4805
- !isServerRendering() &&
4814
+ (ssrMockReactivity || !isServerRendering()) &&
4806
4815
  (isArray(value) || isPlainObject(value)) &&
4807
4816
  Object.isExtensible(value) &&
4808
- !value.__v_skip) {
4809
- ob = new Observer(value, shallow);
4817
+ !value.__v_skip /* ReactiveFlags.SKIP */) {
4818
+ ob = new Observer(value, shallow, ssrMockReactivity);
4810
4819
  }
4811
4820
  return ob;
4812
4821
  }
4813
4822
  /**
4814
4823
  * Define a reactive property on an Object.
4815
4824
  */
4816
- function defineReactive(obj, key, val, customSetter, shallow) {
4825
+ function defineReactive(obj, key, val, customSetter, shallow, mock) {
4817
4826
  var dep = new Dep();
4818
4827
  var property = Object.getOwnPropertyDescriptor(obj, key);
4819
4828
  if (property && property.configurable === false) {
@@ -4826,7 +4835,7 @@ function defineReactive(obj, key, val, customSetter, shallow) {
4826
4835
  (val === NO_INIITIAL_VALUE || arguments.length === 2)) {
4827
4836
  val = obj[key];
4828
4837
  }
4829
- var childOb = !shallow && observe(val);
4838
+ var childOb = !shallow && observe(val, false, mock);
4830
4839
  Object.defineProperty(obj, key, {
4831
4840
  enumerable: true,
4832
4841
  configurable: true,
@@ -4850,7 +4859,7 @@ function defineReactive(obj, key, val, customSetter, shallow) {
4850
4859
  }
4851
4860
  }
4852
4861
  }
4853
- return isRef(value) ? value.value : value;
4862
+ return isRef(value) && !shallow ? value.value : value;
4854
4863
  },
4855
4864
  set: function reactiveSetter(newVal) {
4856
4865
  var value = getter ? getter.call(obj) : val;
@@ -4874,7 +4883,7 @@ function defineReactive(obj, key, val, customSetter, shallow) {
4874
4883
  else {
4875
4884
  val = newVal;
4876
4885
  }
4877
- childOb = !shallow && observe(newVal);
4886
+ childOb = !shallow && observe(newVal, false, mock);
4878
4887
  if (process.env.NODE_ENV !== 'production') {
4879
4888
  dep.notify({
4880
4889
  type: "set" /* TriggerOpTypes.SET */,
@@ -4899,16 +4908,20 @@ function set(target, key, val) {
4899
4908
  process.env.NODE_ENV !== 'production' && warn$2("Set operation on key \"".concat(key, "\" failed: target is readonly."));
4900
4909
  return;
4901
4910
  }
4911
+ var ob = target.__ob__;
4902
4912
  if (isArray(target) && isValidArrayIndex(key)) {
4903
4913
  target.length = Math.max(target.length, key);
4904
4914
  target.splice(key, 1, val);
4915
+ // when mocking for SSR, array methods are not hijacked
4916
+ if (!ob.shallow && ob.mock) {
4917
+ observe(val, false, true);
4918
+ }
4905
4919
  return val;
4906
4920
  }
4907
4921
  if (key in target && !(key in Object.prototype)) {
4908
4922
  target[key] = val;
4909
4923
  return val;
4910
4924
  }
4911
- var ob = target.__ob__;
4912
4925
  if (target._isVue || (ob && ob.vmCount)) {
4913
4926
  process.env.NODE_ENV !== 'production' &&
4914
4927
  warn$2('Avoid adding reactive properties to a Vue instance or its root $data ' +
@@ -4919,7 +4932,7 @@ function set(target, key, val) {
4919
4932
  target[key] = val;
4920
4933
  return val;
4921
4934
  }
4922
- defineReactive(ob.value, key, val);
4935
+ defineReactive(ob.value, key, val, undefined, ob.shallow, ob.mock);
4923
4936
  if (process.env.NODE_ENV !== 'production') {
4924
4937
  ob.dep.notify({
4925
4938
  type: "add" /* TriggerOpTypes.ADD */,
@@ -7053,7 +7066,7 @@ function normalizeDirectives(dirs, vm) {
7053
7066
  }
7054
7067
  res[getRawDirName(dir)] = dir;
7055
7068
  if (vm._setupState && vm._setupState.__sfc) {
7056
- dir.def = resolveAsset(vm, '_setupState', 'v-' + dir.name);
7069
+ dir.def = dir.def || resolveAsset(vm, '_setupState', 'v-' + dir.name);
7057
7070
  }
7058
7071
  dir.def = dir.def || resolveAsset(vm.$options, 'directives', dir.name, true);
7059
7072
  }
@@ -11666,4 +11679,4 @@ function getOuterHTML(el) {
11666
11679
  }
11667
11680
  Vue.compile = compileToFunctions;
11668
11681
 
11669
- export { EffectScope, computed, customRef, Vue as default, defineComponent, del, effectScope, getCurrentInstance, getCurrentScope, h, inject, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, mergeDefaults, nextTick, onActivated, onBeforeMount, onBeforeUnmount, onBeforeUpdate, onDeactivated, onErrorCaptured, onMounted, onRenderTracked, onRenderTriggered, onScopeDispose, onServerPrefetch, onUnmounted, onUpdated, provide, reactive, readonly, ref$1 as ref, set, shallowReactive, shallowReadonly, shallowRef, toRaw, toRef, toRefs, triggerRef, unref, useAttrs, useCssModule, useCssVars, useSlots, version, watch, watchEffect, watchPostEffect, watchSyncEffect };
11682
+ export { EffectScope, computed, customRef, Vue as default, defineComponent, del, effectScope, getCurrentInstance, getCurrentScope, h, inject, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, mergeDefaults, nextTick, onActivated, onBeforeMount, onBeforeUnmount, onBeforeUpdate, onDeactivated, onErrorCaptured, onMounted, onRenderTracked, onRenderTriggered, onScopeDispose, onServerPrefetch, onUnmounted, onUpdated, provide, proxyRefs, reactive, readonly, ref$1 as ref, set, shallowReactive, shallowReadonly, shallowRef, toRaw, toRef, toRefs, triggerRef, unref, useAttrs, useCssModule, useCssVars, useSlots, version, watch, watchEffect, watchPostEffect, watchSyncEffect };
package/dist/vue.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vue.js v2.7.0
2
+ * Vue.js v2.7.3
3
3
  * (c) 2014-2022 Evan You
4
4
  * Released under the MIT License.
5
5
  */
@@ -322,7 +322,7 @@
322
322
  return x === 0 && 1 / x !== 1 / y;
323
323
  }
324
324
  else {
325
- return x === x && y === y;
325
+ return x === x || y === y;
326
326
  }
327
327
  }
328
328
 
@@ -340,7 +340,9 @@
340
340
  'activated',
341
341
  'deactivated',
342
342
  'errorCaptured',
343
- 'serverPrefetch'
343
+ 'serverPrefetch',
344
+ 'renderTracked',
345
+ 'renderTriggered'
344
346
  ];
345
347
 
346
348
  var config = {
@@ -892,7 +894,7 @@
892
894
  warn$2("Target is already a ".concat(existingOb.shallow ? "" : "non-", "shallow reactive object, and cannot be converted to ").concat(shallow ? "" : "non-", "shallow."));
893
895
  }
894
896
  }
895
- var ob = observe(target, shallow);
897
+ var ob = observe(target, shallow, isServerRendering() /* ssr mock reactivity */);
896
898
  if (!ob) {
897
899
  if (target == null || isPrimitive(target)) {
898
900
  warn$2("value cannot be made reactive: ".concat(String(target)));
@@ -954,7 +956,7 @@
954
956
  var ref = {};
955
957
  def(ref, RefFlag, true);
956
958
  def(ref, "__v_isShallow" /* ReactiveFlags.IS_SHALLOW */, true);
957
- ref.dep = defineReactive(ref, 'value', rawValue, null, shallow);
959
+ def(ref, 'dep', defineReactive(ref, 'value', rawValue, null, shallow, isServerRendering()));
958
960
  return ref;
959
961
  }
960
962
  function triggerRef(ref) {
@@ -973,6 +975,33 @@
973
975
  function unref(ref) {
974
976
  return isRef(ref) ? ref.value : ref;
975
977
  }
978
+ function proxyRefs(objectWithRefs) {
979
+ if (isReactive(objectWithRefs)) {
980
+ return objectWithRefs;
981
+ }
982
+ var proxy = {};
983
+ var keys = Object.keys(objectWithRefs);
984
+ for (var i = 0; i < keys.length; i++) {
985
+ proxyWithRefUnwrap(proxy, objectWithRefs, keys[i]);
986
+ }
987
+ return proxy;
988
+ }
989
+ function proxyWithRefUnwrap(target, source, key) {
990
+ Object.defineProperty(target, key, {
991
+ enumerable: true,
992
+ configurable: true,
993
+ get: function () { return unref(source[key]); },
994
+ set: function (value) {
995
+ var oldValue = source[key];
996
+ if (isRef(oldValue) && !isRef(value)) {
997
+ oldValue.value = value;
998
+ }
999
+ else {
1000
+ source[key] = value;
1001
+ }
1002
+ }
1003
+ });
1004
+ }
976
1005
  function customRef(factory) {
977
1006
  var dep = new Dep();
978
1007
  var _a = factory(function () {
@@ -1509,7 +1538,9 @@
1509
1538
  // exposed for compiled render fn
1510
1539
  var proxy = (vm._setupProxy = {});
1511
1540
  for (var key in setupResult) {
1512
- proxyWithRefUnwrap(proxy, setupResult, key);
1541
+ if (key !== '__sfc') {
1542
+ proxyWithRefUnwrap(proxy, setupResult, key);
1543
+ }
1513
1544
  }
1514
1545
  }
1515
1546
  }
@@ -1518,20 +1549,6 @@
1518
1549
  }
1519
1550
  }
1520
1551
  }
1521
- function proxyWithRefUnwrap(target, source, key) {
1522
- Object.defineProperty(target, key, {
1523
- enumerable: true,
1524
- configurable: true,
1525
- get: function () {
1526
- var raw = source[key];
1527
- return isRef(raw) ? raw.value : raw;
1528
- },
1529
- set: function (newVal) {
1530
- var raw = source[key];
1531
- isRef(raw) ? (raw.value = newVal) : (source[key] = newVal);
1532
- }
1533
- });
1534
- }
1535
1552
  function createSetupContext(vm) {
1536
1553
  var exposeCalled = false;
1537
1554
  return {
@@ -4655,7 +4672,7 @@
4655
4672
  var onRenderTracked = createLifeCycle('renderTracked');
4656
4673
  var onRenderTriggered = createLifeCycle('renderTriggered');
4657
4674
 
4658
- var version = '2.7.0';
4675
+ var version = '2.7.3';
4659
4676
  /**
4660
4677
  * @internal type is manually declared in <root>/types/v3-define-component.d.ts
4661
4678
  */
@@ -4673,6 +4690,7 @@
4673
4690
  toRef: toRef,
4674
4691
  toRefs: toRefs,
4675
4692
  unref: unref,
4693
+ proxyRefs: proxyRefs,
4676
4694
  customRef: customRef,
4677
4695
  triggerRef: triggerRef,
4678
4696
  reactive: reactive,
@@ -4730,6 +4748,13 @@
4730
4748
  function toggleObserving(value) {
4731
4749
  shouldObserve = value;
4732
4750
  }
4751
+ // ssr mock dep
4752
+ var mockDep = {
4753
+ notify: noop,
4754
+ depend: noop,
4755
+ addSub: noop,
4756
+ removeSub: noop
4757
+ };
4733
4758
  /**
4734
4759
  * Observer class that is attached to each observed
4735
4760
  * object. Once attached, the observer converts the target
@@ -4737,78 +4762,63 @@
4737
4762
  * collect dependencies and dispatch updates.
4738
4763
  */
4739
4764
  var Observer = /** @class */ (function () {
4740
- function Observer(value, shallow) {
4765
+ function Observer(value, shallow, mock) {
4741
4766
  if (shallow === void 0) { shallow = false; }
4767
+ if (mock === void 0) { mock = false; }
4742
4768
  this.value = value;
4743
4769
  this.shallow = shallow;
4770
+ this.mock = mock;
4744
4771
  // this.value = value
4745
- this.dep = new Dep();
4772
+ this.dep = mock ? mockDep : new Dep();
4746
4773
  this.vmCount = 0;
4747
4774
  def(value, '__ob__', this);
4748
4775
  if (isArray(value)) {
4749
- if (hasProto) {
4750
- protoAugment(value, arrayMethods);
4751
- }
4752
- else {
4753
- copyAugment(value, arrayMethods, arrayKeys);
4776
+ if (!mock) {
4777
+ if (hasProto) {
4778
+ value.__proto__ = arrayMethods;
4779
+ /* eslint-enable no-proto */
4780
+ }
4781
+ else {
4782
+ for (var i = 0, l = arrayKeys.length; i < l; i++) {
4783
+ var key = arrayKeys[i];
4784
+ def(value, key, arrayMethods[key]);
4785
+ }
4786
+ }
4754
4787
  }
4755
4788
  if (!shallow) {
4756
4789
  this.observeArray(value);
4757
4790
  }
4758
4791
  }
4759
4792
  else {
4760
- this.walk(value, shallow);
4793
+ /**
4794
+ * Walk through all properties and convert them into
4795
+ * getter/setters. This method should only be called when
4796
+ * value type is Object.
4797
+ */
4798
+ var keys = Object.keys(value);
4799
+ for (var i = 0; i < keys.length; i++) {
4800
+ var key = keys[i];
4801
+ defineReactive(value, key, NO_INIITIAL_VALUE, undefined, shallow, mock);
4802
+ }
4761
4803
  }
4762
4804
  }
4763
- /**
4764
- * Walk through all properties and convert them into
4765
- * getter/setters. This method should only be called when
4766
- * value type is Object.
4767
- */
4768
- Observer.prototype.walk = function (obj, shallow) {
4769
- var keys = Object.keys(obj);
4770
- for (var i = 0; i < keys.length; i++) {
4771
- var key = keys[i];
4772
- defineReactive(obj, key, NO_INIITIAL_VALUE, undefined, shallow);
4773
- }
4774
- };
4775
4805
  /**
4776
4806
  * Observe a list of Array items.
4777
4807
  */
4778
- Observer.prototype.observeArray = function (items) {
4779
- for (var i = 0, l = items.length; i < l; i++) {
4780
- observe(items[i]);
4808
+ Observer.prototype.observeArray = function (value) {
4809
+ for (var i = 0, l = value.length; i < l; i++) {
4810
+ observe(value[i], false, this.mock);
4781
4811
  }
4782
4812
  };
4783
4813
  return Observer;
4784
4814
  }());
4785
4815
  // helpers
4786
- /**
4787
- * Augment a target Object or Array by intercepting
4788
- * the prototype chain using __proto__
4789
- */
4790
- function protoAugment(target, src) {
4791
- /* eslint-disable no-proto */
4792
- target.__proto__ = src;
4793
- /* eslint-enable no-proto */
4794
- }
4795
- /**
4796
- * Augment a target Object or Array by defining
4797
- * hidden properties.
4798
- */
4799
- /* istanbul ignore next */
4800
- function copyAugment(target, src, keys) {
4801
- for (var i = 0, l = keys.length; i < l; i++) {
4802
- var key = keys[i];
4803
- def(target, key, src[key]);
4804
- }
4805
- }
4806
4816
  /**
4807
4817
  * Attempt to create an observer instance for a value,
4808
4818
  * returns the new observer if successfully observed,
4809
4819
  * or the existing observer if the value already has one.
4810
4820
  */
4811
- function observe(value, shallow) {
4821
+ function observe(value, shallow, ssrMockReactivity) {
4812
4822
  if (!isObject(value) || isRef(value) || value instanceof VNode) {
4813
4823
  return;
4814
4824
  }
@@ -4817,18 +4827,18 @@
4817
4827
  ob = value.__ob__;
4818
4828
  }
4819
4829
  else if (shouldObserve &&
4820
- !isServerRendering() &&
4830
+ (ssrMockReactivity || !isServerRendering()) &&
4821
4831
  (isArray(value) || isPlainObject(value)) &&
4822
4832
  Object.isExtensible(value) &&
4823
- !value.__v_skip) {
4824
- ob = new Observer(value, shallow);
4833
+ !value.__v_skip /* ReactiveFlags.SKIP */) {
4834
+ ob = new Observer(value, shallow, ssrMockReactivity);
4825
4835
  }
4826
4836
  return ob;
4827
4837
  }
4828
4838
  /**
4829
4839
  * Define a reactive property on an Object.
4830
4840
  */
4831
- function defineReactive(obj, key, val, customSetter, shallow) {
4841
+ function defineReactive(obj, key, val, customSetter, shallow, mock) {
4832
4842
  var dep = new Dep();
4833
4843
  var property = Object.getOwnPropertyDescriptor(obj, key);
4834
4844
  if (property && property.configurable === false) {
@@ -4841,7 +4851,7 @@
4841
4851
  (val === NO_INIITIAL_VALUE || arguments.length === 2)) {
4842
4852
  val = obj[key];
4843
4853
  }
4844
- var childOb = !shallow && observe(val);
4854
+ var childOb = !shallow && observe(val, false, mock);
4845
4855
  Object.defineProperty(obj, key, {
4846
4856
  enumerable: true,
4847
4857
  configurable: true,
@@ -4862,7 +4872,7 @@
4862
4872
  }
4863
4873
  }
4864
4874
  }
4865
- return isRef(value) ? value.value : value;
4875
+ return isRef(value) && !shallow ? value.value : value;
4866
4876
  },
4867
4877
  set: function reactiveSetter(newVal) {
4868
4878
  var value = getter ? getter.call(obj) : val;
@@ -4886,7 +4896,7 @@
4886
4896
  else {
4887
4897
  val = newVal;
4888
4898
  }
4889
- childOb = !shallow && observe(newVal);
4899
+ childOb = !shallow && observe(newVal, false, mock);
4890
4900
  {
4891
4901
  dep.notify({
4892
4902
  type: "set" /* TriggerOpTypes.SET */,
@@ -4908,16 +4918,20 @@
4908
4918
  warn$2("Set operation on key \"".concat(key, "\" failed: target is readonly."));
4909
4919
  return;
4910
4920
  }
4921
+ var ob = target.__ob__;
4911
4922
  if (isArray(target) && isValidArrayIndex(key)) {
4912
4923
  target.length = Math.max(target.length, key);
4913
4924
  target.splice(key, 1, val);
4925
+ // when mocking for SSR, array methods are not hijacked
4926
+ if (!ob.shallow && ob.mock) {
4927
+ observe(val, false, true);
4928
+ }
4914
4929
  return val;
4915
4930
  }
4916
4931
  if (key in target && !(key in Object.prototype)) {
4917
4932
  target[key] = val;
4918
4933
  return val;
4919
4934
  }
4920
- var ob = target.__ob__;
4921
4935
  if (target._isVue || (ob && ob.vmCount)) {
4922
4936
  warn$2('Avoid adding reactive properties to a Vue instance or its root $data ' +
4923
4937
  'at runtime - declare it upfront in the data option.');
@@ -4927,7 +4941,7 @@
4927
4941
  target[key] = val;
4928
4942
  return val;
4929
4943
  }
4930
- defineReactive(ob.value, key, val);
4944
+ defineReactive(ob.value, key, val, undefined, ob.shallow, ob.mock);
4931
4945
  {
4932
4946
  ob.dep.notify({
4933
4947
  type: "add" /* TriggerOpTypes.ADD */,
@@ -7050,7 +7064,7 @@
7050
7064
  }
7051
7065
  res[getRawDirName(dir)] = dir;
7052
7066
  if (vm._setupState && vm._setupState.__sfc) {
7053
- dir.def = resolveAsset(vm, '_setupState', 'v-' + dir.name);
7067
+ dir.def = dir.def || resolveAsset(vm, '_setupState', 'v-' + dir.name);
7054
7068
  }
7055
7069
  dir.def = dir.def || resolveAsset(vm.$options, 'directives', dir.name, true);
7056
7070
  }