vue 2.7.2 → 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.
- package/dist/vue.common.dev.js +54 -57
- package/dist/vue.common.prod.js +3 -3
- package/dist/vue.esm.browser.js +54 -57
- package/dist/vue.esm.browser.min.js +3 -3
- package/dist/vue.esm.js +55 -57
- package/dist/vue.js +55 -57
- package/dist/vue.min.js +3 -3
- package/dist/vue.runtime.common.dev.js +54 -57
- package/dist/vue.runtime.common.prod.js +3 -3
- package/dist/vue.runtime.esm.js +55 -57
- package/dist/vue.runtime.js +55 -57
- package/dist/vue.runtime.min.js +3 -3
- package/dist/vue.runtime.mjs +55 -57
- package/package.json +2 -2
- package/packages/compiler-sfc/dist/compiler-sfc.js +50 -53
- package/packages/compiler-sfc/package.json +1 -1
- package/src/core/observer/index.ts +54 -55
- package/src/shared/constants.ts +3 -1
- package/src/v3/reactivity/reactive.ts +13 -2
- package/src/v3/reactivity/ref.ts +6 -2
- package/types/jsx.d.ts +6 -0
package/dist/vue.runtime.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Vue.js v2.7.
|
|
2
|
+
* Vue.js v2.7.3
|
|
3
3
|
* (c) 2014-2022 Evan You
|
|
4
4
|
* Released under the MIT License.
|
|
5
5
|
*/
|
|
@@ -324,7 +324,9 @@ var LIFECYCLE_HOOKS = [
|
|
|
324
324
|
'activated',
|
|
325
325
|
'deactivated',
|
|
326
326
|
'errorCaptured',
|
|
327
|
-
'serverPrefetch'
|
|
327
|
+
'serverPrefetch',
|
|
328
|
+
'renderTracked',
|
|
329
|
+
'renderTriggered'
|
|
328
330
|
];
|
|
329
331
|
|
|
330
332
|
var config = {
|
|
@@ -879,7 +881,7 @@ function makeReactive(target, shallow) {
|
|
|
879
881
|
warn("Target is already a ".concat(existingOb.shallow ? "" : "non-", "shallow reactive object, and cannot be converted to ").concat(shallow ? "" : "non-", "shallow."));
|
|
880
882
|
}
|
|
881
883
|
}
|
|
882
|
-
var ob = observe(target, shallow);
|
|
884
|
+
var ob = observe(target, shallow, isServerRendering() /* ssr mock reactivity */);
|
|
883
885
|
if (process.env.NODE_ENV !== 'production' && !ob) {
|
|
884
886
|
if (target == null || isPrimitive(target)) {
|
|
885
887
|
warn("value cannot be made reactive: ".concat(String(target)));
|
|
@@ -941,7 +943,7 @@ function createRef(rawValue, shallow) {
|
|
|
941
943
|
var ref = {};
|
|
942
944
|
def(ref, RefFlag, true);
|
|
943
945
|
def(ref, "__v_isShallow" /* ReactiveFlags.IS_SHALLOW */, true);
|
|
944
|
-
ref
|
|
946
|
+
def(ref, 'dep', defineReactive(ref, 'value', rawValue, null, shallow, isServerRendering()));
|
|
945
947
|
return ref;
|
|
946
948
|
}
|
|
947
949
|
function triggerRef(ref) {
|
|
@@ -4213,7 +4215,7 @@ var onServerPrefetch = createLifeCycle('serverPrefetch');
|
|
|
4213
4215
|
var onRenderTracked = createLifeCycle('renderTracked');
|
|
4214
4216
|
var onRenderTriggered = createLifeCycle('renderTriggered');
|
|
4215
4217
|
|
|
4216
|
-
var version = '2.7.
|
|
4218
|
+
var version = '2.7.3';
|
|
4217
4219
|
/**
|
|
4218
4220
|
* @internal type is manually declared in <root>/types/v3-define-component.d.ts
|
|
4219
4221
|
*/
|
|
@@ -4231,6 +4233,13 @@ var shouldObserve = true;
|
|
|
4231
4233
|
function toggleObserving(value) {
|
|
4232
4234
|
shouldObserve = value;
|
|
4233
4235
|
}
|
|
4236
|
+
// ssr mock dep
|
|
4237
|
+
var mockDep = {
|
|
4238
|
+
notify: noop,
|
|
4239
|
+
depend: noop,
|
|
4240
|
+
addSub: noop,
|
|
4241
|
+
removeSub: noop
|
|
4242
|
+
};
|
|
4234
4243
|
/**
|
|
4235
4244
|
* Observer class that is attached to each observed
|
|
4236
4245
|
* object. Once attached, the observer converts the target
|
|
@@ -4238,78 +4247,63 @@ function toggleObserving(value) {
|
|
|
4238
4247
|
* collect dependencies and dispatch updates.
|
|
4239
4248
|
*/
|
|
4240
4249
|
var Observer = /** @class */ (function () {
|
|
4241
|
-
function Observer(value, shallow) {
|
|
4250
|
+
function Observer(value, shallow, mock) {
|
|
4242
4251
|
if (shallow === void 0) { shallow = false; }
|
|
4252
|
+
if (mock === void 0) { mock = false; }
|
|
4243
4253
|
this.value = value;
|
|
4244
4254
|
this.shallow = shallow;
|
|
4255
|
+
this.mock = mock;
|
|
4245
4256
|
// this.value = value
|
|
4246
|
-
this.dep = new Dep();
|
|
4257
|
+
this.dep = mock ? mockDep : new Dep();
|
|
4247
4258
|
this.vmCount = 0;
|
|
4248
4259
|
def(value, '__ob__', this);
|
|
4249
4260
|
if (isArray(value)) {
|
|
4250
|
-
if (
|
|
4251
|
-
|
|
4252
|
-
|
|
4253
|
-
|
|
4254
|
-
|
|
4261
|
+
if (!mock) {
|
|
4262
|
+
if (hasProto) {
|
|
4263
|
+
value.__proto__ = arrayMethods;
|
|
4264
|
+
/* eslint-enable no-proto */
|
|
4265
|
+
}
|
|
4266
|
+
else {
|
|
4267
|
+
for (var i = 0, l = arrayKeys.length; i < l; i++) {
|
|
4268
|
+
var key = arrayKeys[i];
|
|
4269
|
+
def(value, key, arrayMethods[key]);
|
|
4270
|
+
}
|
|
4271
|
+
}
|
|
4255
4272
|
}
|
|
4256
4273
|
if (!shallow) {
|
|
4257
4274
|
this.observeArray(value);
|
|
4258
4275
|
}
|
|
4259
4276
|
}
|
|
4260
4277
|
else {
|
|
4261
|
-
|
|
4278
|
+
/**
|
|
4279
|
+
* Walk through all properties and convert them into
|
|
4280
|
+
* getter/setters. This method should only be called when
|
|
4281
|
+
* value type is Object.
|
|
4282
|
+
*/
|
|
4283
|
+
var keys = Object.keys(value);
|
|
4284
|
+
for (var i = 0; i < keys.length; i++) {
|
|
4285
|
+
var key = keys[i];
|
|
4286
|
+
defineReactive(value, key, NO_INIITIAL_VALUE, undefined, shallow, mock);
|
|
4287
|
+
}
|
|
4262
4288
|
}
|
|
4263
4289
|
}
|
|
4264
|
-
/**
|
|
4265
|
-
* Walk through all properties and convert them into
|
|
4266
|
-
* getter/setters. This method should only be called when
|
|
4267
|
-
* value type is Object.
|
|
4268
|
-
*/
|
|
4269
|
-
Observer.prototype.walk = function (obj, shallow) {
|
|
4270
|
-
var keys = Object.keys(obj);
|
|
4271
|
-
for (var i = 0; i < keys.length; i++) {
|
|
4272
|
-
var key = keys[i];
|
|
4273
|
-
defineReactive(obj, key, NO_INIITIAL_VALUE, undefined, shallow);
|
|
4274
|
-
}
|
|
4275
|
-
};
|
|
4276
4290
|
/**
|
|
4277
4291
|
* Observe a list of Array items.
|
|
4278
4292
|
*/
|
|
4279
|
-
Observer.prototype.observeArray = function (
|
|
4280
|
-
for (var i = 0, l =
|
|
4281
|
-
observe(
|
|
4293
|
+
Observer.prototype.observeArray = function (value) {
|
|
4294
|
+
for (var i = 0, l = value.length; i < l; i++) {
|
|
4295
|
+
observe(value[i], false, this.mock);
|
|
4282
4296
|
}
|
|
4283
4297
|
};
|
|
4284
4298
|
return Observer;
|
|
4285
4299
|
}());
|
|
4286
4300
|
// helpers
|
|
4287
|
-
/**
|
|
4288
|
-
* Augment a target Object or Array by intercepting
|
|
4289
|
-
* the prototype chain using __proto__
|
|
4290
|
-
*/
|
|
4291
|
-
function protoAugment(target, src) {
|
|
4292
|
-
/* eslint-disable no-proto */
|
|
4293
|
-
target.__proto__ = src;
|
|
4294
|
-
/* eslint-enable no-proto */
|
|
4295
|
-
}
|
|
4296
|
-
/**
|
|
4297
|
-
* Augment a target Object or Array by defining
|
|
4298
|
-
* hidden properties.
|
|
4299
|
-
*/
|
|
4300
|
-
/* istanbul ignore next */
|
|
4301
|
-
function copyAugment(target, src, keys) {
|
|
4302
|
-
for (var i = 0, l = keys.length; i < l; i++) {
|
|
4303
|
-
var key = keys[i];
|
|
4304
|
-
def(target, key, src[key]);
|
|
4305
|
-
}
|
|
4306
|
-
}
|
|
4307
4301
|
/**
|
|
4308
4302
|
* Attempt to create an observer instance for a value,
|
|
4309
4303
|
* returns the new observer if successfully observed,
|
|
4310
4304
|
* or the existing observer if the value already has one.
|
|
4311
4305
|
*/
|
|
4312
|
-
function observe(value, shallow) {
|
|
4306
|
+
function observe(value, shallow, ssrMockReactivity) {
|
|
4313
4307
|
if (!isObject(value) || isRef(value) || value instanceof VNode) {
|
|
4314
4308
|
return;
|
|
4315
4309
|
}
|
|
@@ -4318,18 +4312,18 @@ function observe(value, shallow) {
|
|
|
4318
4312
|
ob = value.__ob__;
|
|
4319
4313
|
}
|
|
4320
4314
|
else if (shouldObserve &&
|
|
4321
|
-
!isServerRendering() &&
|
|
4315
|
+
(ssrMockReactivity || !isServerRendering()) &&
|
|
4322
4316
|
(isArray(value) || isPlainObject(value)) &&
|
|
4323
4317
|
Object.isExtensible(value) &&
|
|
4324
|
-
!value.__v_skip) {
|
|
4325
|
-
ob = new Observer(value, shallow);
|
|
4318
|
+
!value.__v_skip /* ReactiveFlags.SKIP */) {
|
|
4319
|
+
ob = new Observer(value, shallow, ssrMockReactivity);
|
|
4326
4320
|
}
|
|
4327
4321
|
return ob;
|
|
4328
4322
|
}
|
|
4329
4323
|
/**
|
|
4330
4324
|
* Define a reactive property on an Object.
|
|
4331
4325
|
*/
|
|
4332
|
-
function defineReactive(obj, key, val, customSetter, shallow) {
|
|
4326
|
+
function defineReactive(obj, key, val, customSetter, shallow, mock) {
|
|
4333
4327
|
var dep = new Dep();
|
|
4334
4328
|
var property = Object.getOwnPropertyDescriptor(obj, key);
|
|
4335
4329
|
if (property && property.configurable === false) {
|
|
@@ -4342,7 +4336,7 @@ function defineReactive(obj, key, val, customSetter, shallow) {
|
|
|
4342
4336
|
(val === NO_INIITIAL_VALUE || arguments.length === 2)) {
|
|
4343
4337
|
val = obj[key];
|
|
4344
4338
|
}
|
|
4345
|
-
var childOb = !shallow && observe(val);
|
|
4339
|
+
var childOb = !shallow && observe(val, false, mock);
|
|
4346
4340
|
Object.defineProperty(obj, key, {
|
|
4347
4341
|
enumerable: true,
|
|
4348
4342
|
configurable: true,
|
|
@@ -4390,7 +4384,7 @@ function defineReactive(obj, key, val, customSetter, shallow) {
|
|
|
4390
4384
|
else {
|
|
4391
4385
|
val = newVal;
|
|
4392
4386
|
}
|
|
4393
|
-
childOb = !shallow && observe(newVal);
|
|
4387
|
+
childOb = !shallow && observe(newVal, false, mock);
|
|
4394
4388
|
if (process.env.NODE_ENV !== 'production') {
|
|
4395
4389
|
dep.notify({
|
|
4396
4390
|
type: "set" /* TriggerOpTypes.SET */,
|
|
@@ -4415,16 +4409,20 @@ function set(target, key, val) {
|
|
|
4415
4409
|
process.env.NODE_ENV !== 'production' && warn("Set operation on key \"".concat(key, "\" failed: target is readonly."));
|
|
4416
4410
|
return;
|
|
4417
4411
|
}
|
|
4412
|
+
var ob = target.__ob__;
|
|
4418
4413
|
if (isArray(target) && isValidArrayIndex(key)) {
|
|
4419
4414
|
target.length = Math.max(target.length, key);
|
|
4420
4415
|
target.splice(key, 1, val);
|
|
4416
|
+
// when mocking for SSR, array methods are not hijacked
|
|
4417
|
+
if (!ob.shallow && ob.mock) {
|
|
4418
|
+
observe(val, false, true);
|
|
4419
|
+
}
|
|
4421
4420
|
return val;
|
|
4422
4421
|
}
|
|
4423
4422
|
if (key in target && !(key in Object.prototype)) {
|
|
4424
4423
|
target[key] = val;
|
|
4425
4424
|
return val;
|
|
4426
4425
|
}
|
|
4427
|
-
var ob = target.__ob__;
|
|
4428
4426
|
if (target._isVue || (ob && ob.vmCount)) {
|
|
4429
4427
|
process.env.NODE_ENV !== 'production' &&
|
|
4430
4428
|
warn('Avoid adding reactive properties to a Vue instance or its root $data ' +
|
|
@@ -4435,7 +4433,7 @@ function set(target, key, val) {
|
|
|
4435
4433
|
target[key] = val;
|
|
4436
4434
|
return val;
|
|
4437
4435
|
}
|
|
4438
|
-
defineReactive(ob.value, key, val);
|
|
4436
|
+
defineReactive(ob.value, key, val, undefined, ob.shallow, ob.mock);
|
|
4439
4437
|
if (process.env.NODE_ENV !== 'production') {
|
|
4440
4438
|
ob.dep.notify({
|
|
4441
4439
|
type: "add" /* TriggerOpTypes.ADD */,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vue",
|
|
3
|
-
"version": "2.7.
|
|
3
|
+
"version": "2.7.3",
|
|
4
4
|
"packageManager": "pnpm@7.1.0",
|
|
5
5
|
"description": "Reactive, component-oriented view layer for modern web interfaces.",
|
|
6
6
|
"main": "dist/vue.runtime.common.js",
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
},
|
|
61
61
|
"homepage": "https://github.com/vuejs/vue#readme",
|
|
62
62
|
"dependencies": {
|
|
63
|
-
"@vue/compiler-sfc": "2.7.
|
|
63
|
+
"@vue/compiler-sfc": "2.7.3",
|
|
64
64
|
"csstype": "^3.1.0"
|
|
65
65
|
},
|
|
66
66
|
"devDependencies": {
|
|
@@ -3350,7 +3350,9 @@ const LIFECYCLE_HOOKS = [
|
|
|
3350
3350
|
'activated',
|
|
3351
3351
|
'deactivated',
|
|
3352
3352
|
'errorCaptured',
|
|
3353
|
-
'serverPrefetch'
|
|
3353
|
+
'serverPrefetch',
|
|
3354
|
+
'renderTracked',
|
|
3355
|
+
'renderTriggered'
|
|
3354
3356
|
];
|
|
3355
3357
|
|
|
3356
3358
|
var config = {
|
|
@@ -5189,6 +5191,13 @@ let shouldObserve = true;
|
|
|
5189
5191
|
function toggleObserving(value) {
|
|
5190
5192
|
shouldObserve = value;
|
|
5191
5193
|
}
|
|
5194
|
+
// ssr mock dep
|
|
5195
|
+
const mockDep = {
|
|
5196
|
+
notify: noop,
|
|
5197
|
+
depend: noop,
|
|
5198
|
+
addSub: noop,
|
|
5199
|
+
removeSub: noop
|
|
5200
|
+
};
|
|
5192
5201
|
/**
|
|
5193
5202
|
* Observer class that is attached to each observed
|
|
5194
5203
|
* object. Once attached, the observer converts the target
|
|
@@ -5196,76 +5205,60 @@ function toggleObserving(value) {
|
|
|
5196
5205
|
* collect dependencies and dispatch updates.
|
|
5197
5206
|
*/
|
|
5198
5207
|
class Observer {
|
|
5199
|
-
constructor(value, shallow = false) {
|
|
5208
|
+
constructor(value, shallow = false, mock = false) {
|
|
5200
5209
|
this.value = value;
|
|
5201
5210
|
this.shallow = shallow;
|
|
5211
|
+
this.mock = mock;
|
|
5202
5212
|
// this.value = value
|
|
5203
|
-
this.dep = new Dep();
|
|
5213
|
+
this.dep = mock ? mockDep : new Dep();
|
|
5204
5214
|
this.vmCount = 0;
|
|
5205
5215
|
def(value, '__ob__', this);
|
|
5206
5216
|
if (isArray(value)) {
|
|
5207
|
-
if (
|
|
5208
|
-
|
|
5209
|
-
|
|
5210
|
-
|
|
5211
|
-
|
|
5217
|
+
if (!mock) {
|
|
5218
|
+
if (hasProto) {
|
|
5219
|
+
value.__proto__ = arrayMethods;
|
|
5220
|
+
/* eslint-enable no-proto */
|
|
5221
|
+
}
|
|
5222
|
+
else {
|
|
5223
|
+
for (let i = 0, l = arrayKeys.length; i < l; i++) {
|
|
5224
|
+
const key = arrayKeys[i];
|
|
5225
|
+
def(value, key, arrayMethods[key]);
|
|
5226
|
+
}
|
|
5227
|
+
}
|
|
5212
5228
|
}
|
|
5213
5229
|
if (!shallow) {
|
|
5214
5230
|
this.observeArray(value);
|
|
5215
5231
|
}
|
|
5216
5232
|
}
|
|
5217
5233
|
else {
|
|
5218
|
-
|
|
5219
|
-
|
|
5220
|
-
|
|
5221
|
-
|
|
5222
|
-
|
|
5223
|
-
|
|
5224
|
-
|
|
5225
|
-
|
|
5226
|
-
|
|
5227
|
-
|
|
5228
|
-
for (let i = 0; i < keys.length; i++) {
|
|
5229
|
-
const key = keys[i];
|
|
5230
|
-
defineReactive(obj, key, NO_INIITIAL_VALUE, undefined, shallow);
|
|
5234
|
+
/**
|
|
5235
|
+
* Walk through all properties and convert them into
|
|
5236
|
+
* getter/setters. This method should only be called when
|
|
5237
|
+
* value type is Object.
|
|
5238
|
+
*/
|
|
5239
|
+
const keys = Object.keys(value);
|
|
5240
|
+
for (let i = 0; i < keys.length; i++) {
|
|
5241
|
+
const key = keys[i];
|
|
5242
|
+
defineReactive(value, key, NO_INIITIAL_VALUE, undefined, shallow, mock);
|
|
5243
|
+
}
|
|
5231
5244
|
}
|
|
5232
5245
|
}
|
|
5233
5246
|
/**
|
|
5234
5247
|
* Observe a list of Array items.
|
|
5235
5248
|
*/
|
|
5236
|
-
observeArray(
|
|
5237
|
-
for (let i = 0, l =
|
|
5238
|
-
observe(
|
|
5249
|
+
observeArray(value) {
|
|
5250
|
+
for (let i = 0, l = value.length; i < l; i++) {
|
|
5251
|
+
observe(value[i], false, this.mock);
|
|
5239
5252
|
}
|
|
5240
5253
|
}
|
|
5241
5254
|
}
|
|
5242
5255
|
// helpers
|
|
5243
|
-
/**
|
|
5244
|
-
* Augment a target Object or Array by intercepting
|
|
5245
|
-
* the prototype chain using __proto__
|
|
5246
|
-
*/
|
|
5247
|
-
function protoAugment(target, src) {
|
|
5248
|
-
/* eslint-disable no-proto */
|
|
5249
|
-
target.__proto__ = src;
|
|
5250
|
-
/* eslint-enable no-proto */
|
|
5251
|
-
}
|
|
5252
|
-
/**
|
|
5253
|
-
* Augment a target Object or Array by defining
|
|
5254
|
-
* hidden properties.
|
|
5255
|
-
*/
|
|
5256
|
-
/* istanbul ignore next */
|
|
5257
|
-
function copyAugment(target, src, keys) {
|
|
5258
|
-
for (let i = 0, l = keys.length; i < l; i++) {
|
|
5259
|
-
const key = keys[i];
|
|
5260
|
-
def(target, key, src[key]);
|
|
5261
|
-
}
|
|
5262
|
-
}
|
|
5263
5256
|
/**
|
|
5264
5257
|
* Attempt to create an observer instance for a value,
|
|
5265
5258
|
* returns the new observer if successfully observed,
|
|
5266
5259
|
* or the existing observer if the value already has one.
|
|
5267
5260
|
*/
|
|
5268
|
-
function observe(value, shallow) {
|
|
5261
|
+
function observe(value, shallow, ssrMockReactivity) {
|
|
5269
5262
|
if (!isObject$1(value) || isRef(value) || value instanceof VNode) {
|
|
5270
5263
|
return;
|
|
5271
5264
|
}
|
|
@@ -5274,18 +5267,18 @@ function observe(value, shallow) {
|
|
|
5274
5267
|
ob = value.__ob__;
|
|
5275
5268
|
}
|
|
5276
5269
|
else if (shouldObserve &&
|
|
5277
|
-
!isServerRendering() &&
|
|
5270
|
+
(ssrMockReactivity || !isServerRendering()) &&
|
|
5278
5271
|
(isArray(value) || isPlainObject(value)) &&
|
|
5279
5272
|
Object.isExtensible(value) &&
|
|
5280
|
-
!value.__v_skip) {
|
|
5281
|
-
ob = new Observer(value, shallow);
|
|
5273
|
+
!value.__v_skip /* ReactiveFlags.SKIP */) {
|
|
5274
|
+
ob = new Observer(value, shallow, ssrMockReactivity);
|
|
5282
5275
|
}
|
|
5283
5276
|
return ob;
|
|
5284
5277
|
}
|
|
5285
5278
|
/**
|
|
5286
5279
|
* Define a reactive property on an Object.
|
|
5287
5280
|
*/
|
|
5288
|
-
function defineReactive(obj, key, val, customSetter, shallow) {
|
|
5281
|
+
function defineReactive(obj, key, val, customSetter, shallow, mock) {
|
|
5289
5282
|
const dep = new Dep();
|
|
5290
5283
|
const property = Object.getOwnPropertyDescriptor(obj, key);
|
|
5291
5284
|
if (property && property.configurable === false) {
|
|
@@ -5298,7 +5291,7 @@ function defineReactive(obj, key, val, customSetter, shallow) {
|
|
|
5298
5291
|
(val === NO_INIITIAL_VALUE || arguments.length === 2)) {
|
|
5299
5292
|
val = obj[key];
|
|
5300
5293
|
}
|
|
5301
|
-
let childOb = !shallow && observe(val);
|
|
5294
|
+
let childOb = !shallow && observe(val, false, mock);
|
|
5302
5295
|
Object.defineProperty(obj, key, {
|
|
5303
5296
|
enumerable: true,
|
|
5304
5297
|
configurable: true,
|
|
@@ -5346,7 +5339,7 @@ function defineReactive(obj, key, val, customSetter, shallow) {
|
|
|
5346
5339
|
else {
|
|
5347
5340
|
val = newVal;
|
|
5348
5341
|
}
|
|
5349
|
-
childOb = !shallow && observe(newVal);
|
|
5342
|
+
childOb = !shallow && observe(newVal, false, mock);
|
|
5350
5343
|
if (process.env.NODE_ENV !== 'production') {
|
|
5351
5344
|
dep.notify({
|
|
5352
5345
|
type: "set" /* TriggerOpTypes.SET */,
|
|
@@ -5371,16 +5364,20 @@ function set(target, key, val) {
|
|
|
5371
5364
|
process.env.NODE_ENV !== 'production' && warn$3(`Set operation on key "${key}" failed: target is readonly.`);
|
|
5372
5365
|
return;
|
|
5373
5366
|
}
|
|
5367
|
+
const ob = target.__ob__;
|
|
5374
5368
|
if (isArray(target) && isValidArrayIndex(key)) {
|
|
5375
5369
|
target.length = Math.max(target.length, key);
|
|
5376
5370
|
target.splice(key, 1, val);
|
|
5371
|
+
// when mocking for SSR, array methods are not hijacked
|
|
5372
|
+
if (!ob.shallow && ob.mock) {
|
|
5373
|
+
observe(val, false, true);
|
|
5374
|
+
}
|
|
5377
5375
|
return val;
|
|
5378
5376
|
}
|
|
5379
5377
|
if (key in target && !(key in Object.prototype)) {
|
|
5380
5378
|
target[key] = val;
|
|
5381
5379
|
return val;
|
|
5382
5380
|
}
|
|
5383
|
-
const ob = target.__ob__;
|
|
5384
5381
|
if (target._isVue || (ob && ob.vmCount)) {
|
|
5385
5382
|
process.env.NODE_ENV !== 'production' &&
|
|
5386
5383
|
warn$3('Avoid adding reactive properties to a Vue instance or its root $data ' +
|
|
@@ -5391,7 +5388,7 @@ function set(target, key, val) {
|
|
|
5391
5388
|
target[key] = val;
|
|
5392
5389
|
return val;
|
|
5393
5390
|
}
|
|
5394
|
-
defineReactive(ob.value, key, val);
|
|
5391
|
+
defineReactive(ob.value, key, val, undefined, ob.shallow, ob.mock);
|
|
5395
5392
|
if (process.env.NODE_ENV !== 'production') {
|
|
5396
5393
|
ob.dep.notify({
|
|
5397
5394
|
type: "add" /* TriggerOpTypes.ADD */,
|
|
@@ -13,7 +13,8 @@ import {
|
|
|
13
13
|
isUndef,
|
|
14
14
|
isValidArrayIndex,
|
|
15
15
|
isServerRendering,
|
|
16
|
-
hasChanged
|
|
16
|
+
hasChanged,
|
|
17
|
+
noop
|
|
17
18
|
} from '../util/index'
|
|
18
19
|
import { isReadonly, isRef, TrackOpTypes, TriggerOpTypes } from '../../v3'
|
|
19
20
|
|
|
@@ -31,6 +32,14 @@ export function toggleObserving(value: boolean) {
|
|
|
31
32
|
shouldObserve = value
|
|
32
33
|
}
|
|
33
34
|
|
|
35
|
+
// ssr mock dep
|
|
36
|
+
const mockDep = {
|
|
37
|
+
notify: noop,
|
|
38
|
+
depend: noop,
|
|
39
|
+
addSub: noop,
|
|
40
|
+
removeSub: noop
|
|
41
|
+
} as Dep
|
|
42
|
+
|
|
34
43
|
/**
|
|
35
44
|
* Observer class that is attached to each observed
|
|
36
45
|
* object. Once attached, the observer converts the target
|
|
@@ -41,78 +50,63 @@ export class Observer {
|
|
|
41
50
|
dep: Dep
|
|
42
51
|
vmCount: number // number of vms that have this object as root $data
|
|
43
52
|
|
|
44
|
-
constructor(public value: any, public shallow = false) {
|
|
53
|
+
constructor(public value: any, public shallow = false, public mock = false) {
|
|
45
54
|
// this.value = value
|
|
46
|
-
this.dep = new Dep()
|
|
55
|
+
this.dep = mock ? mockDep : new Dep()
|
|
47
56
|
this.vmCount = 0
|
|
48
57
|
def(value, '__ob__', this)
|
|
49
58
|
if (isArray(value)) {
|
|
50
|
-
if (
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
59
|
+
if (!mock) {
|
|
60
|
+
if (hasProto) {
|
|
61
|
+
/* eslint-disable no-proto */
|
|
62
|
+
;(value as any).__proto__ = arrayMethods
|
|
63
|
+
/* eslint-enable no-proto */
|
|
64
|
+
} else {
|
|
65
|
+
for (let i = 0, l = arrayKeys.length; i < l; i++) {
|
|
66
|
+
const key = arrayKeys[i]
|
|
67
|
+
def(value, key, arrayMethods[key])
|
|
68
|
+
}
|
|
69
|
+
}
|
|
54
70
|
}
|
|
55
71
|
if (!shallow) {
|
|
56
72
|
this.observeArray(value)
|
|
57
73
|
}
|
|
58
74
|
} else {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
const keys = Object.keys(obj)
|
|
70
|
-
for (let i = 0; i < keys.length; i++) {
|
|
71
|
-
const key = keys[i]
|
|
72
|
-
defineReactive(obj, key, NO_INIITIAL_VALUE, undefined, shallow)
|
|
75
|
+
/**
|
|
76
|
+
* Walk through all properties and convert them into
|
|
77
|
+
* getter/setters. This method should only be called when
|
|
78
|
+
* value type is Object.
|
|
79
|
+
*/
|
|
80
|
+
const keys = Object.keys(value)
|
|
81
|
+
for (let i = 0; i < keys.length; i++) {
|
|
82
|
+
const key = keys[i]
|
|
83
|
+
defineReactive(value, key, NO_INIITIAL_VALUE, undefined, shallow, mock)
|
|
84
|
+
}
|
|
73
85
|
}
|
|
74
86
|
}
|
|
75
87
|
|
|
76
88
|
/**
|
|
77
89
|
* Observe a list of Array items.
|
|
78
90
|
*/
|
|
79
|
-
observeArray(
|
|
80
|
-
for (let i = 0, l =
|
|
81
|
-
observe(
|
|
91
|
+
observeArray(value: any[]) {
|
|
92
|
+
for (let i = 0, l = value.length; i < l; i++) {
|
|
93
|
+
observe(value[i], false, this.mock)
|
|
82
94
|
}
|
|
83
95
|
}
|
|
84
96
|
}
|
|
85
97
|
|
|
86
98
|
// helpers
|
|
87
99
|
|
|
88
|
-
/**
|
|
89
|
-
* Augment a target Object or Array by intercepting
|
|
90
|
-
* the prototype chain using __proto__
|
|
91
|
-
*/
|
|
92
|
-
function protoAugment(target, src: Object) {
|
|
93
|
-
/* eslint-disable no-proto */
|
|
94
|
-
target.__proto__ = src
|
|
95
|
-
/* eslint-enable no-proto */
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
/**
|
|
99
|
-
* Augment a target Object or Array by defining
|
|
100
|
-
* hidden properties.
|
|
101
|
-
*/
|
|
102
|
-
/* istanbul ignore next */
|
|
103
|
-
function copyAugment(target: Object, src: Object, keys: Array<string>) {
|
|
104
|
-
for (let i = 0, l = keys.length; i < l; i++) {
|
|
105
|
-
const key = keys[i]
|
|
106
|
-
def(target, key, src[key])
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
|
|
110
100
|
/**
|
|
111
101
|
* Attempt to create an observer instance for a value,
|
|
112
102
|
* returns the new observer if successfully observed,
|
|
113
103
|
* or the existing observer if the value already has one.
|
|
114
104
|
*/
|
|
115
|
-
export function observe(
|
|
105
|
+
export function observe(
|
|
106
|
+
value: any,
|
|
107
|
+
shallow?: boolean,
|
|
108
|
+
ssrMockReactivity?: boolean
|
|
109
|
+
): Observer | void {
|
|
116
110
|
if (!isObject(value) || isRef(value) || value instanceof VNode) {
|
|
117
111
|
return
|
|
118
112
|
}
|
|
@@ -121,12 +115,12 @@ export function observe(value: any, shallow?: boolean): Observer | void {
|
|
|
121
115
|
ob = value.__ob__
|
|
122
116
|
} else if (
|
|
123
117
|
shouldObserve &&
|
|
124
|
-
!isServerRendering() &&
|
|
118
|
+
(ssrMockReactivity || !isServerRendering()) &&
|
|
125
119
|
(isArray(value) || isPlainObject(value)) &&
|
|
126
120
|
Object.isExtensible(value) &&
|
|
127
|
-
!value.__v_skip
|
|
121
|
+
!value.__v_skip /* ReactiveFlags.SKIP */
|
|
128
122
|
) {
|
|
129
|
-
ob = new Observer(value, shallow)
|
|
123
|
+
ob = new Observer(value, shallow, ssrMockReactivity)
|
|
130
124
|
}
|
|
131
125
|
return ob
|
|
132
126
|
}
|
|
@@ -139,7 +133,8 @@ export function defineReactive(
|
|
|
139
133
|
key: string,
|
|
140
134
|
val?: any,
|
|
141
135
|
customSetter?: Function | null,
|
|
142
|
-
shallow?: boolean
|
|
136
|
+
shallow?: boolean,
|
|
137
|
+
mock?: boolean
|
|
143
138
|
) {
|
|
144
139
|
const dep = new Dep()
|
|
145
140
|
|
|
@@ -158,7 +153,7 @@ export function defineReactive(
|
|
|
158
153
|
val = obj[key]
|
|
159
154
|
}
|
|
160
155
|
|
|
161
|
-
let childOb = !shallow && observe(val)
|
|
156
|
+
let childOb = !shallow && observe(val, false, mock)
|
|
162
157
|
Object.defineProperty(obj, key, {
|
|
163
158
|
enumerable: true,
|
|
164
159
|
configurable: true,
|
|
@@ -202,7 +197,7 @@ export function defineReactive(
|
|
|
202
197
|
} else {
|
|
203
198
|
val = newVal
|
|
204
199
|
}
|
|
205
|
-
childOb = !shallow && observe(newVal)
|
|
200
|
+
childOb = !shallow && observe(newVal, false, mock)
|
|
206
201
|
if (__DEV__) {
|
|
207
202
|
dep.notify({
|
|
208
203
|
type: TriggerOpTypes.SET,
|
|
@@ -241,16 +236,20 @@ export function set(
|
|
|
241
236
|
__DEV__ && warn(`Set operation on key "${key}" failed: target is readonly.`)
|
|
242
237
|
return
|
|
243
238
|
}
|
|
239
|
+
const ob = (target as any).__ob__
|
|
244
240
|
if (isArray(target) && isValidArrayIndex(key)) {
|
|
245
241
|
target.length = Math.max(target.length, key)
|
|
246
242
|
target.splice(key, 1, val)
|
|
243
|
+
// when mocking for SSR, array methods are not hijacked
|
|
244
|
+
if (!ob.shallow && ob.mock) {
|
|
245
|
+
observe(val, false, true)
|
|
246
|
+
}
|
|
247
247
|
return val
|
|
248
248
|
}
|
|
249
249
|
if (key in target && !(key in Object.prototype)) {
|
|
250
250
|
target[key] = val
|
|
251
251
|
return val
|
|
252
252
|
}
|
|
253
|
-
const ob = (target as any).__ob__
|
|
254
253
|
if ((target as any)._isVue || (ob && ob.vmCount)) {
|
|
255
254
|
__DEV__ &&
|
|
256
255
|
warn(
|
|
@@ -263,7 +262,7 @@ export function set(
|
|
|
263
262
|
target[key] = val
|
|
264
263
|
return val
|
|
265
264
|
}
|
|
266
|
-
defineReactive(ob.value, key, val)
|
|
265
|
+
defineReactive(ob.value, key, val, undefined, ob.shallow, ob.mock)
|
|
267
266
|
if (__DEV__) {
|
|
268
267
|
ob.dep.notify({
|
|
269
268
|
type: TriggerOpTypes.ADD,
|