vue 2.7.1 → 2.7.4

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 +133 -61
  2. package/dist/vue.common.prod.js +3 -3
  3. package/dist/vue.esm.browser.js +133 -62
  4. package/dist/vue.esm.browser.min.js +3 -3
  5. package/dist/vue.esm.js +135 -62
  6. package/dist/vue.js +135 -61
  7. package/dist/vue.min.js +3 -3
  8. package/dist/vue.runtime.common.dev.js +133 -61
  9. package/dist/vue.runtime.common.prod.js +3 -3
  10. package/dist/vue.runtime.esm.js +135 -62
  11. package/dist/vue.runtime.js +135 -61
  12. package/dist/vue.runtime.min.js +3 -3
  13. package/dist/vue.runtime.mjs +72 -8604
  14. package/package.json +2 -2
  15. package/packages/compiler-sfc/dist/compiler-sfc.js +56 -55
  16. package/packages/compiler-sfc/package.json +1 -1
  17. package/packages/compiler-sfc/src/parseComponent.ts +9 -1
  18. package/packages/compiler-sfc/test/parseComponent.spec.ts +6 -7
  19. package/src/core/instance/render-helpers/render-static.ts +1 -1
  20. package/src/core/observer/index.ts +54 -55
  21. package/src/core/util/next-tick.ts +2 -1
  22. package/src/core/vdom/modules/directives.ts +2 -2
  23. package/src/shared/constants.ts +3 -1
  24. package/src/v3/apiAsyncComponent.ts +117 -0
  25. package/src/v3/apiWatch.ts +2 -2
  26. package/src/v3/index.ts +6 -0
  27. package/src/v3/reactivity/reactive.ts +13 -2
  28. package/src/v3/reactivity/ref.ts +6 -2
  29. package/types/common.d.ts +6 -0
  30. package/types/index.d.ts +7 -4
  31. package/types/jsx.d.ts +16 -2
  32. package/types/options.d.ts +8 -2
  33. package/types/v3-component-options.d.ts +162 -33
  34. package/types/v3-component-props.d.ts +19 -20
  35. package/types/v3-component-public-instance.d.ts +234 -0
  36. package/types/v3-define-async-component.d.ts +26 -0
  37. package/types/v3-define-component.d.ts +94 -12
  38. package/types/v3-generated.d.ts +26 -1
  39. package/types/v3-setup-context.d.ts +0 -6
  40. package/types/vnode.d.ts +15 -0
  41. package/types/vue.d.ts +17 -10
  42. package/types/v3-component-proxy.d.ts +0 -189
package/dist/vue.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vue.js v2.7.1
2
+ * Vue.js v2.7.4
3
3
  * (c) 2014-2022 Evan You
4
4
  * Released under the MIT License.
5
5
  */
@@ -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) {
@@ -2586,7 +2588,7 @@
2586
2588
  return tree;
2587
2589
  }
2588
2590
  // otherwise, render a fresh tree.
2589
- tree = cached[index] = this.$options.staticRenderFns[index].call(this._renderProxy, null, this // for render fns generated for functional component templates
2591
+ tree = cached[index] = this.$options.staticRenderFns[index].call(this._renderProxy, this._c, this // for render fns generated for functional component templates
2590
2592
  );
2591
2593
  markStatic$1(tree, "__static__".concat(index), false);
2592
2594
  return tree;
@@ -4371,8 +4373,8 @@
4371
4373
  else {
4372
4374
  // pre
4373
4375
  watcher.update = function () {
4374
- if (instance && instance === currentInstance) {
4375
- // pre-watcher triggered inside setup()
4376
+ if (instance && instance === currentInstance && !instance._isMounted) {
4377
+ // pre-watcher triggered before
4376
4378
  var buffer = instance._preWatchers || (instance._preWatchers = []);
4377
4379
  if (buffer.indexOf(watcher) < 0)
4378
4380
  buffer.push(watcher);
@@ -4632,6 +4634,78 @@
4632
4634
  });
4633
4635
  }
4634
4636
 
4637
+ /**
4638
+ * v3-compatible async component API.
4639
+ * @internal the type is manually declared in <root>/types/v3-define-async-component.d.ts
4640
+ * because it relies on existing manual types
4641
+ */
4642
+ function defineAsyncComponent(source) {
4643
+ if (isFunction(source)) {
4644
+ source = { loader: source };
4645
+ }
4646
+ var loader = source.loader, loadingComponent = source.loadingComponent, errorComponent = source.errorComponent, _a = source.delay, delay = _a === void 0 ? 200 : _a, timeout = source.timeout, // undefined = never times out
4647
+ _b = source.suspensible, // undefined = never times out
4648
+ suspensible = _b === void 0 ? false : _b, // in Vue 3 default is true
4649
+ userOnError = source.onError;
4650
+ if (suspensible) {
4651
+ warn$2("The suspensiblbe option for async components is not supported in Vue2. It is ignored.");
4652
+ }
4653
+ var pendingRequest = null;
4654
+ var retries = 0;
4655
+ var retry = function () {
4656
+ retries++;
4657
+ pendingRequest = null;
4658
+ return load();
4659
+ };
4660
+ var load = function () {
4661
+ var thisRequest;
4662
+ return (pendingRequest ||
4663
+ (thisRequest = pendingRequest =
4664
+ loader()
4665
+ .catch(function (err) {
4666
+ err = err instanceof Error ? err : new Error(String(err));
4667
+ if (userOnError) {
4668
+ return new Promise(function (resolve, reject) {
4669
+ var userRetry = function () { return resolve(retry()); };
4670
+ var userFail = function () { return reject(err); };
4671
+ userOnError(err, userRetry, userFail, retries + 1);
4672
+ });
4673
+ }
4674
+ else {
4675
+ throw err;
4676
+ }
4677
+ })
4678
+ .then(function (comp) {
4679
+ if (thisRequest !== pendingRequest && pendingRequest) {
4680
+ return pendingRequest;
4681
+ }
4682
+ if (!comp) {
4683
+ warn$2("Async component loader resolved to undefined. " +
4684
+ "If you are using retry(), make sure to return its return value.");
4685
+ }
4686
+ // interop module default
4687
+ if (comp &&
4688
+ (comp.__esModule || comp[Symbol.toStringTag] === 'Module')) {
4689
+ comp = comp.default;
4690
+ }
4691
+ if (comp && !isObject(comp) && !isFunction(comp)) {
4692
+ throw new Error("Invalid async component load result: ".concat(comp));
4693
+ }
4694
+ return comp;
4695
+ })));
4696
+ };
4697
+ return function () {
4698
+ var component = load();
4699
+ return {
4700
+ component: component,
4701
+ delay: delay,
4702
+ timeout: timeout,
4703
+ error: errorComponent,
4704
+ loading: loadingComponent
4705
+ };
4706
+ };
4707
+ }
4708
+
4635
4709
  function createLifeCycle(hookName) {
4636
4710
  return function (fn, target) {
4637
4711
  if (target === void 0) { target = currentInstance; }
@@ -4670,7 +4744,10 @@
4670
4744
  var onRenderTracked = createLifeCycle('renderTracked');
4671
4745
  var onRenderTriggered = createLifeCycle('renderTriggered');
4672
4746
 
4673
- var version = '2.7.1';
4747
+ /**
4748
+ * Note: also update dist/vue.runtime.mjs when adding new exports to this file.
4749
+ */
4750
+ var version = '2.7.4';
4674
4751
  /**
4675
4752
  * @internal type is manually declared in <root>/types/v3-define-component.d.ts
4676
4753
  */
@@ -4722,6 +4799,7 @@
4722
4799
  del: del,
4723
4800
  useCssModule: useCssModule,
4724
4801
  useCssVars: useCssVars,
4802
+ defineAsyncComponent: defineAsyncComponent,
4725
4803
  onBeforeMount: onBeforeMount,
4726
4804
  onMounted: onMounted,
4727
4805
  onBeforeUpdate: onBeforeUpdate,
@@ -4746,6 +4824,13 @@
4746
4824
  function toggleObserving(value) {
4747
4825
  shouldObserve = value;
4748
4826
  }
4827
+ // ssr mock dep
4828
+ var mockDep = {
4829
+ notify: noop,
4830
+ depend: noop,
4831
+ addSub: noop,
4832
+ removeSub: noop
4833
+ };
4749
4834
  /**
4750
4835
  * Observer class that is attached to each observed
4751
4836
  * object. Once attached, the observer converts the target
@@ -4753,78 +4838,63 @@
4753
4838
  * collect dependencies and dispatch updates.
4754
4839
  */
4755
4840
  var Observer = /** @class */ (function () {
4756
- function Observer(value, shallow) {
4841
+ function Observer(value, shallow, mock) {
4757
4842
  if (shallow === void 0) { shallow = false; }
4843
+ if (mock === void 0) { mock = false; }
4758
4844
  this.value = value;
4759
4845
  this.shallow = shallow;
4846
+ this.mock = mock;
4760
4847
  // this.value = value
4761
- this.dep = new Dep();
4848
+ this.dep = mock ? mockDep : new Dep();
4762
4849
  this.vmCount = 0;
4763
4850
  def(value, '__ob__', this);
4764
4851
  if (isArray(value)) {
4765
- if (hasProto) {
4766
- protoAugment(value, arrayMethods);
4767
- }
4768
- else {
4769
- copyAugment(value, arrayMethods, arrayKeys);
4852
+ if (!mock) {
4853
+ if (hasProto) {
4854
+ value.__proto__ = arrayMethods;
4855
+ /* eslint-enable no-proto */
4856
+ }
4857
+ else {
4858
+ for (var i = 0, l = arrayKeys.length; i < l; i++) {
4859
+ var key = arrayKeys[i];
4860
+ def(value, key, arrayMethods[key]);
4861
+ }
4862
+ }
4770
4863
  }
4771
4864
  if (!shallow) {
4772
4865
  this.observeArray(value);
4773
4866
  }
4774
4867
  }
4775
4868
  else {
4776
- this.walk(value, shallow);
4869
+ /**
4870
+ * Walk through all properties and convert them into
4871
+ * getter/setters. This method should only be called when
4872
+ * value type is Object.
4873
+ */
4874
+ var keys = Object.keys(value);
4875
+ for (var i = 0; i < keys.length; i++) {
4876
+ var key = keys[i];
4877
+ defineReactive(value, key, NO_INIITIAL_VALUE, undefined, shallow, mock);
4878
+ }
4777
4879
  }
4778
4880
  }
4779
- /**
4780
- * Walk through all properties and convert them into
4781
- * getter/setters. This method should only be called when
4782
- * value type is Object.
4783
- */
4784
- Observer.prototype.walk = function (obj, shallow) {
4785
- var keys = Object.keys(obj);
4786
- for (var i = 0; i < keys.length; i++) {
4787
- var key = keys[i];
4788
- defineReactive(obj, key, NO_INIITIAL_VALUE, undefined, shallow);
4789
- }
4790
- };
4791
4881
  /**
4792
4882
  * Observe a list of Array items.
4793
4883
  */
4794
- Observer.prototype.observeArray = function (items) {
4795
- for (var i = 0, l = items.length; i < l; i++) {
4796
- observe(items[i]);
4884
+ Observer.prototype.observeArray = function (value) {
4885
+ for (var i = 0, l = value.length; i < l; i++) {
4886
+ observe(value[i], false, this.mock);
4797
4887
  }
4798
4888
  };
4799
4889
  return Observer;
4800
4890
  }());
4801
4891
  // helpers
4802
- /**
4803
- * Augment a target Object or Array by intercepting
4804
- * the prototype chain using __proto__
4805
- */
4806
- function protoAugment(target, src) {
4807
- /* eslint-disable no-proto */
4808
- target.__proto__ = src;
4809
- /* eslint-enable no-proto */
4810
- }
4811
- /**
4812
- * Augment a target Object or Array by defining
4813
- * hidden properties.
4814
- */
4815
- /* istanbul ignore next */
4816
- function copyAugment(target, src, keys) {
4817
- for (var i = 0, l = keys.length; i < l; i++) {
4818
- var key = keys[i];
4819
- def(target, key, src[key]);
4820
- }
4821
- }
4822
4892
  /**
4823
4893
  * Attempt to create an observer instance for a value,
4824
4894
  * returns the new observer if successfully observed,
4825
4895
  * or the existing observer if the value already has one.
4826
4896
  */
4827
- function observe(value, shallow) {
4897
+ function observe(value, shallow, ssrMockReactivity) {
4828
4898
  if (!isObject(value) || isRef(value) || value instanceof VNode) {
4829
4899
  return;
4830
4900
  }
@@ -4833,18 +4903,18 @@
4833
4903
  ob = value.__ob__;
4834
4904
  }
4835
4905
  else if (shouldObserve &&
4836
- !isServerRendering() &&
4906
+ (ssrMockReactivity || !isServerRendering()) &&
4837
4907
  (isArray(value) || isPlainObject(value)) &&
4838
4908
  Object.isExtensible(value) &&
4839
- !value.__v_skip) {
4840
- ob = new Observer(value, shallow);
4909
+ !value.__v_skip /* ReactiveFlags.SKIP */) {
4910
+ ob = new Observer(value, shallow, ssrMockReactivity);
4841
4911
  }
4842
4912
  return ob;
4843
4913
  }
4844
4914
  /**
4845
4915
  * Define a reactive property on an Object.
4846
4916
  */
4847
- function defineReactive(obj, key, val, customSetter, shallow) {
4917
+ function defineReactive(obj, key, val, customSetter, shallow, mock) {
4848
4918
  var dep = new Dep();
4849
4919
  var property = Object.getOwnPropertyDescriptor(obj, key);
4850
4920
  if (property && property.configurable === false) {
@@ -4857,7 +4927,7 @@
4857
4927
  (val === NO_INIITIAL_VALUE || arguments.length === 2)) {
4858
4928
  val = obj[key];
4859
4929
  }
4860
- var childOb = !shallow && observe(val);
4930
+ var childOb = !shallow && observe(val, false, mock);
4861
4931
  Object.defineProperty(obj, key, {
4862
4932
  enumerable: true,
4863
4933
  configurable: true,
@@ -4902,7 +4972,7 @@
4902
4972
  else {
4903
4973
  val = newVal;
4904
4974
  }
4905
- childOb = !shallow && observe(newVal);
4975
+ childOb = !shallow && observe(newVal, false, mock);
4906
4976
  {
4907
4977
  dep.notify({
4908
4978
  type: "set" /* TriggerOpTypes.SET */,
@@ -4924,16 +4994,20 @@
4924
4994
  warn$2("Set operation on key \"".concat(key, "\" failed: target is readonly."));
4925
4995
  return;
4926
4996
  }
4997
+ var ob = target.__ob__;
4927
4998
  if (isArray(target) && isValidArrayIndex(key)) {
4928
4999
  target.length = Math.max(target.length, key);
4929
5000
  target.splice(key, 1, val);
5001
+ // when mocking for SSR, array methods are not hijacked
5002
+ if (ob && !ob.shallow && ob.mock) {
5003
+ observe(val, false, true);
5004
+ }
4930
5005
  return val;
4931
5006
  }
4932
5007
  if (key in target && !(key in Object.prototype)) {
4933
5008
  target[key] = val;
4934
5009
  return val;
4935
5010
  }
4936
- var ob = target.__ob__;
4937
5011
  if (target._isVue || (ob && ob.vmCount)) {
4938
5012
  warn$2('Avoid adding reactive properties to a Vue instance or its root $data ' +
4939
5013
  'at runtime - declare it upfront in the data option.');
@@ -4943,7 +5017,7 @@
4943
5017
  target[key] = val;
4944
5018
  return val;
4945
5019
  }
4946
- defineReactive(ob.value, key, val);
5020
+ defineReactive(ob.value, key, val, undefined, ob.shallow, ob.mock);
4947
5021
  {
4948
5022
  ob.dep.notify({
4949
5023
  type: "add" /* TriggerOpTypes.ADD */,
@@ -7066,7 +7140,7 @@
7066
7140
  }
7067
7141
  res[getRawDirName(dir)] = dir;
7068
7142
  if (vm._setupState && vm._setupState.__sfc) {
7069
- dir.def = resolveAsset(vm, '_setupState', 'v-' + dir.name);
7143
+ dir.def = dir.def || resolveAsset(vm, '_setupState', 'v-' + dir.name);
7070
7144
  }
7071
7145
  dir.def = dir.def || resolveAsset(vm.$options, 'directives', dir.name, true);
7072
7146
  }