annil 1.6.1 → 1.6.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/CHANGELOG.md +14 -0
- package/dist/api/DefineComponent/assignOptions/computedWatchHandle/computedUpdater.js +4 -4
- package/dist/api/DefineComponent/assignOptions/computedWatchHandle/computedUpdater.js.map +1 -1
- package/dist/api/DefineComponent/assignOptions/computedWatchHandle/data-tracer.d.ts +3 -0
- package/dist/api/DefineComponent/assignOptions/computedWatchHandle/data-tracer.js +16 -8
- package/dist/api/DefineComponent/assignOptions/computedWatchHandle/data-tracer.js.map +1 -1
- package/dist/api/DefineComponent/assignOptions/computedWatchHandle/index.js +2 -2
- package/dist/api/DefineComponent/assignOptions/computedWatchHandle/index.js.map +1 -1
- package/dist/api/DefineComponent/assignOptions/computedWatchHandle/initComputedAndGetCache.d.ts +12 -0
- package/dist/api/DefineComponent/assignOptions/computedWatchHandle/{initComputed.js → initComputedAndGetCache.js} +17 -26
- package/dist/api/DefineComponent/assignOptions/computedWatchHandle/initComputedAndGetCache.js.map +1 -0
- package/dist/api/DefineComponent/assignOptions/index.d.ts +1 -1
- package/dist/api/DefineComponent/assignOptions/index.js +0 -8
- package/dist/api/DefineComponent/assignOptions/index.js.map +1 -1
- package/dist/api/InstanceInject/instanceConfig.d.ts +5 -2
- package/dist/api/InstanceInject/instanceConfig.js.map +1 -1
- package/dist/api/RootComponent/Instance/RootComponentInstance.d.ts +3 -6
- package/dist/api/RootComponent/Observers/ObserversOption.d.ts +2 -3
- package/dist/api/RootComponent/Watch/WatchOption.d.ts +2 -3
- package/dist/api/RootComponent/index.d.ts +2 -2
- package/package.json +1 -1
- package/src/api/DefineComponent/assignOptions/computedWatchHandle/computedUpdater.ts +5 -4
- package/src/api/DefineComponent/assignOptions/computedWatchHandle/data-tracer.ts +20 -16
- package/src/api/DefineComponent/assignOptions/computedWatchHandle/index.ts +9 -5
- package/src/api/DefineComponent/assignOptions/computedWatchHandle/{initComputed.ts → initComputedAndGetCache.ts} +38 -57
- package/src/api/DefineComponent/assignOptions/index.ts +13 -13
- package/src/api/InstanceInject/instanceConfig.ts +11 -2
- package/src/api/RootComponent/Computed/test/normal.test.ts +16 -16
- package/src/api/RootComponent/CustomEvents/test/normal.test.ts +0 -19
- package/src/api/RootComponent/Data/test/normal.test.ts +5 -36
- package/src/api/RootComponent/Instance/RootComponentInstance.ts +4 -5
- package/src/api/RootComponent/Instance/test/properties/mormal.test.ts +9 -4
- package/src/api/RootComponent/Observers/ObserversOption.ts +8 -11
- package/src/api/RootComponent/Observers/test/normal.test.ts +2 -3
- package/src/api/RootComponent/Properties/test/normalEmpty.test.ts +5 -6
- package/src/api/RootComponent/Properties/test/normalOptional.test.ts +4 -4
- package/src/api/RootComponent/Properties/test/normalRequired.test.ts +4 -4
- package/src/api/RootComponent/Watch/WatchOption.ts +17 -23
- package/src/api/RootComponent/Watch/test/WatchComputed.test.ts +4 -4
- package/src/api/RootComponent/Watch/test/WatchData.test.ts +4 -5
- package/src/api/RootComponent/Watch/test/WatchProperties.test.ts +13 -23
- package/src/api/RootComponent/index.ts +2 -2
- package/src/api/SubComponent/SubComputed/test/normal.test.ts +6 -6
- package/src/api/SubComponent/SubData/test/normal.test.ts +5 -5
- package/src/api/SubComponent/SubInstance/test/normal.test.ts +4 -4
- package/src/api/SubComponent/SubWatch/test/WatchProperties.test.ts +13 -23
- package/src/api/SubComponent/SubWatch/test/WatchRootData.test.ts +10 -11
- package/dist/api/DefineComponent/assignOptions/computedWatchHandle/initComputed.d.ts +0 -12
- package/dist/api/DefineComponent/assignOptions/computedWatchHandle/initComputed.js.map +0 -1
- package/src/api/RootComponent/Instance/test/cloneData/error.test.ts +0 -31
- package/src/api/RootComponent/Instance/test/cloneData/normal.test.ts +0 -53
- package/src/api/SubComponent/SubInstance/test/cloneData/error.test.ts +0 -22
- package/src/api/SubComponent/SubInstance/test/cloneData/normal.test.ts +0 -73
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,20 @@
|
|
|
4
4
|
|
|
5
5
|
* 解决DetailedType不接收接口类型的错误 ([ae8acbf](https://github.com/missannil/annil/commit/ae8acbfc2e62f99db565c448ad9253aa549e78bb))
|
|
6
6
|
|
|
7
|
+
## [1.6.3](https://github.com/missannil/annil/compare/v1.6.2...v1.6.3) (2024-02-05)
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
### Bug Fixes
|
|
11
|
+
|
|
12
|
+
* 计算属性优化 ([2479d08](https://github.com/missannil/annil/commit/2479d08720b2e69782c063b5fde394f0fa35d28a))
|
|
13
|
+
|
|
14
|
+
## [1.6.2](https://github.com/missannil/annil/compare/v1.6.1...v1.6.2) (2024-02-03)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
### Bug Fixes
|
|
18
|
+
|
|
19
|
+
* 去除this.data、observer参数,watch参数的readonlyDeep类型 ([4df6fd1](https://github.com/missannil/annil/commit/4df6fd117e573980293e609dc422c2d5f4a91c32))
|
|
20
|
+
|
|
7
21
|
## [1.6.1](https://github.com/missannil/annil/compare/v1.6.0...v1.6.1) (2024-02-02)
|
|
8
22
|
|
|
9
23
|
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { deepProxy } from "./data-tracer";
|
|
1
|
+
import { deepProxy, getProxyOriginalValue } from "./data-tracer";
|
|
3
2
|
import { getPathsValue } from "./getPathsValue";
|
|
4
3
|
import { isEqual } from "./isEqual";
|
|
5
4
|
export function computedUpdater(isUpdated = false) {
|
|
@@ -15,9 +14,10 @@ export function computedUpdater(isUpdated = false) {
|
|
|
15
14
|
}
|
|
16
15
|
if (changed) {
|
|
17
16
|
const newDependences = [];
|
|
18
|
-
|
|
17
|
+
let newValue = itemCache.method.call({ data: deepProxy(this.data, newDependences) });
|
|
18
|
+
newValue = getProxyOriginalValue(newValue);
|
|
19
19
|
this.setData({
|
|
20
|
-
[key]:
|
|
20
|
+
[key]: newValue,
|
|
21
21
|
});
|
|
22
22
|
isUpdated = true;
|
|
23
23
|
this.data.__computedCache__[key].dependences = newDependences;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"computedUpdater.js","sourceRoot":"","sources":["../../../../../src/api/DefineComponent/assignOptions/computedWatchHandle/computedUpdater.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"computedUpdater.js","sourceRoot":"","sources":["../../../../../src/api/DefineComponent/assignOptions/computedWatchHandle/computedUpdater.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,MAAM,UAAU,eAAe,CAAiB,SAAS,GAAG,KAAK;IAC/D,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;QACnD,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC;YAExC,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAGhE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC9B,OAAO,GAAG,IAAI,CAAC;gBAEf,MAAM;YACR,CAAC;QACH,CAAC;QACD,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,cAAc,GAAyB,EAAE,CAAC;YAChD,IAAI,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC;YAGrF,QAAQ,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;YAE3C,IAAI,CAAC,OAAO,CAAC;gBACX,CAAC,GAAG,CAAC,EAAE,QAAQ;aAChB,CAAC,CAAC;YAEH,SAAS,GAAG,IAAI,CAAC;YAGjB,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,WAAW,GAAG,cAAc,CAAC;YAG9D,OAAO,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -1,2 +1,5 @@
|
|
|
1
1
|
import type { ComputedDependence } from "./computedUpdater";
|
|
2
2
|
export declare function deepProxy(data: object, dependences: ComputedDependence[], basePath?: string[]): object;
|
|
3
|
+
export declare function getProxyOriginalValue<T extends {
|
|
4
|
+
__original__?: string;
|
|
5
|
+
}>(value: T): unknown;
|
|
@@ -2,18 +2,18 @@ import { deepClone } from "../../../../utils/deepClone";
|
|
|
2
2
|
export function deepProxy(data, dependences, basePath = []) {
|
|
3
3
|
const handler = {
|
|
4
4
|
get(target, prop) {
|
|
5
|
+
if (prop === "__original__") {
|
|
6
|
+
return target;
|
|
7
|
+
}
|
|
5
8
|
const val = target[prop];
|
|
9
|
+
if ((val !== undefined) && (!Object.prototype.hasOwnProperty.call(target, prop) || typeof val === "function")) {
|
|
10
|
+
return val.bind(target);
|
|
11
|
+
}
|
|
6
12
|
if (basePath.length !== 0) {
|
|
7
|
-
|
|
8
|
-
if (lastDependences.paths.toString() === basePath.toString()) {
|
|
9
|
-
dependences.pop();
|
|
10
|
-
}
|
|
13
|
+
dependences.pop();
|
|
11
14
|
}
|
|
12
15
|
const curPath = basePath.concat(prop);
|
|
13
|
-
dependences.push({ paths: curPath, val
|
|
14
|
-
if (!Object.prototype.hasOwnProperty.call(target, prop) || typeof val === "function") {
|
|
15
|
-
return typeof val === "function" ? val.bind(target) : val;
|
|
16
|
-
}
|
|
16
|
+
dependences.push({ paths: curPath, val });
|
|
17
17
|
if (typeof val !== "object" || val === null)
|
|
18
18
|
return val;
|
|
19
19
|
return deepProxy(val, dependences, curPath);
|
|
@@ -24,4 +24,12 @@ export function deepProxy(data, dependences, basePath = []) {
|
|
|
24
24
|
};
|
|
25
25
|
return new Proxy(data, handler);
|
|
26
26
|
}
|
|
27
|
+
export function getProxyOriginalValue(value) {
|
|
28
|
+
if (typeof value !== "object" || value === null || !value.__original__) {
|
|
29
|
+
return value;
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
return deepClone(value.__original__);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
27
35
|
//# sourceMappingURL=data-tracer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-tracer.js","sourceRoot":"","sources":["../../../../../src/api/DefineComponent/assignOptions/computedWatchHandle/data-tracer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAGxD,MAAM,UAAU,SAAS,CACvB,IAAY,EACZ,WAAiC,EACjC,WAAqB,EAAE;IAEvB,MAAM,OAAO,GAAG;QACd,GAAG,CAAmB,MAAS,EAAE,IAAsB;YACrD,
|
|
1
|
+
{"version":3,"file":"data-tracer.js","sourceRoot":"","sources":["../../../../../src/api/DefineComponent/assignOptions/computedWatchHandle/data-tracer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAGxD,MAAM,UAAU,SAAS,CACvB,IAAY,EACZ,WAAiC,EACjC,WAAqB,EAAE;IAEvB,MAAM,OAAO,GAAG;QACd,GAAG,CAAmB,MAAS,EAAE,IAAsB;YACrD,IAAI,IAAI,KAAK,cAAc,EAAE,CAAC;gBAC5B,OAAO,MAAM,CAAC;YAChB,CAAC;YACD,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YAGzB,IAAI,CAAC,GAAG,KAAK,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,OAAO,GAAG,KAAK,UAAU,CAAC,EAAE,CAAC;gBAE9G,OAAQ,GAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACxC,CAAC;YAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,WAAW,CAAC,GAAG,EAAE,CAAC;YACpB,CAAC;YACD,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAEtC,WAAW,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;YAG1C,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI;gBAAE,OAAO,GAAG,CAAC;YAExD,OAAO,SAAS,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;QAC9C,CAAC;QACD,GAAG,CAAC,OAAe,EAAE,IAAY;YAC/B,MAAM,KAAK,CAAC,GAAG,IAAI,QAAQ,CAAC,CAAC;QAC/B,CAAC;KACF,CAAC;IAEF,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAsC,KAAQ;IACjF,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QACvE,OAAO,KAAK,CAAC;IACf,CAAC;SAAM,CAAC;QACN,OAAO,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACvC,CAAC;AACH,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { computedUpdater } from "./computedUpdater";
|
|
2
2
|
import { getPathsValue } from "./getPathsValue";
|
|
3
3
|
import { getPropertiesValue } from "./getPropertiesValue";
|
|
4
|
-
import {
|
|
4
|
+
import { initComputedAndGetCache } from "./initComputedAndGetCache";
|
|
5
5
|
import { isEqual } from "./isEqual";
|
|
6
6
|
import { deepClone } from "../../../../utils/deepClone";
|
|
7
7
|
import { isEmptyObject } from "../../../../utils/isEmptyObject";
|
|
@@ -16,7 +16,7 @@ export function computedWatchHandle(options) {
|
|
|
16
16
|
const computedConfig = options.computed;
|
|
17
17
|
const rawPropertiesValue = getPropertiesValue(options.properties);
|
|
18
18
|
if (computedConfig && !isEmptyObject(computedConfig)) {
|
|
19
|
-
const __computedInitCache__ =
|
|
19
|
+
const __computedInitCache__ = initComputedAndGetCache(options, computedConfig, Object.assign(Object.assign({}, options.data), rawPropertiesValue));
|
|
20
20
|
options.data.__computedCache__ = __computedInitCache__;
|
|
21
21
|
options.methods.__computedUpdater__ = computedUpdater;
|
|
22
22
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/api/DefineComponent/assignOptions/computedWatchHandle/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/api/DefineComponent/assignOptions/computedWatchHandle/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAKhE,SAAS,iBAAiB,CAAC,IAAqC,EAAE,WAAmB;IACnF,MAAM,aAAa,GAAG,EAAE,CAAC;IACzB,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAM9B,aAAa,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC;AACD,MAAM,UAAU,mBAAmB,CAAC,OAAgC;IAElE,MAAM,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC;IACxC,MAAM,kBAAkB,GAAG,kBAAkB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAClE,IAAI,cAAc,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,CAAC;QAGrD,MAAM,qBAAqB,GAAG,uBAAuB,CAAC,OAAO,EAAE,cAAc,kCACxE,OAAO,CAAC,IAAI,GACZ,kBAAkB,EACrB,CAAC;QAGH,OAAO,CAAC,IAAI,CAAC,iBAAiB,GAAG,qBAAqB,CAAC;QAGvD,OAAO,CAAC,OAAO,CAAC,mBAAmB,GAAG,eAAe,CAAC;IACxD,CAAC;IACD,MAAM,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC;IAE1C,MAAM,YAAY,GAAG,eAAe,CAAC,IAAI,CAAqB,CAAC;IAE/D,eAAe,CAAC,IAAI,CAAC,GAAG;;QAEtB,MAAA,IAAI,CAAC,mBAAmB,oDAAI,CAAC;QAE7B,YAAY,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC,CAAC;IAGF,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC;IAElC,IAAI,WAAW,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QAE1B,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,iCAAM,IAAI,GAAK,kBAAkB,GAAI,WAAW,CAAC,CAAC;QAE5F,MAAM,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC;QAC1C,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;YAC9B,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;YACpC,MAAM,qBAAqB,GAAG,eAAe,CAAC,GAAG,CAAqB,CAAC;YAGvE,eAAe,CAAC,GAAG,CAAC,GAAG,UAAyB,GAAG,QAAmB;gBACpE,qBAAqB,IAAI,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,QAAQ,CAAC,CAAC;gBAEvE,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAkB,CAAC;gBACnD,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;gBAEpC,IAAI,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC;oBAAE,OAAO;gBACxC,aAAa,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;gBAEzC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,QAAQ,EAAE,GAAG,QAAQ,CAAC,CAAC;YAClD,CAAC,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC"}
|
package/dist/api/DefineComponent/assignOptions/computedWatchHandle/initComputedAndGetCache.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Func } from "hry-types/src/Misc/Func";
|
|
2
|
+
import type { FinalOptionsOfComponent } from "..";
|
|
3
|
+
import type { ComputedDependence } from "./computedUpdater";
|
|
4
|
+
type ItemCache = {
|
|
5
|
+
dependences: ComputedDependence[];
|
|
6
|
+
method: Func;
|
|
7
|
+
value: unknown;
|
|
8
|
+
};
|
|
9
|
+
type ComputedId = string;
|
|
10
|
+
export type ComputedCache = Record<ComputedId, ItemCache>;
|
|
11
|
+
export declare function initComputedAndGetCache(options: FinalOptionsOfComponent, computedConfig: Record<string, Func>, initAllData: Record<string, unknown>, uninitedkeys?: string[], computedCache?: ComputedCache): ComputedCache;
|
|
12
|
+
export {};
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { deepProxy } from "./data-tracer";
|
|
1
|
+
import { deepProxy, getProxyOriginalValue } from "./data-tracer";
|
|
3
2
|
function isValidDependences(dependences, computedKeys) {
|
|
4
3
|
for (const { paths: path, val } of dependences) {
|
|
5
4
|
if ((val === undefined) && computedKeys.includes(path[0])) {
|
|
@@ -8,20 +7,6 @@ function isValidDependences(dependences, computedKeys) {
|
|
|
8
7
|
}
|
|
9
8
|
return true;
|
|
10
9
|
}
|
|
11
|
-
export function getItemCache(initAllData, computedKeys, computedFunc) {
|
|
12
|
-
const dependences = [];
|
|
13
|
-
const initValue = computedFunc.call({ data: deepProxy(initAllData, dependences) });
|
|
14
|
-
if (isValidDependences(dependences, computedKeys)) {
|
|
15
|
-
return {
|
|
16
|
-
dependences: uniqueDependences(dependences),
|
|
17
|
-
method: computedFunc,
|
|
18
|
-
value: deepClone(initValue),
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
else {
|
|
22
|
-
return false;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
10
|
function uniqueDependences(dependences) {
|
|
26
11
|
if (dependences.length === 1)
|
|
27
12
|
return dependences;
|
|
@@ -41,23 +26,29 @@ function uniqueDependences(dependences) {
|
|
|
41
26
|
}
|
|
42
27
|
return dependences;
|
|
43
28
|
}
|
|
44
|
-
export function
|
|
29
|
+
export function initComputedAndGetCache(options, computedConfig, initAllData, uninitedkeys = Object.keys(computedConfig), computedCache = {}) {
|
|
45
30
|
for (const key of uninitedkeys) {
|
|
46
|
-
const
|
|
31
|
+
const computedFunc = computedConfig[key];
|
|
32
|
+
const dependences = [];
|
|
33
|
+
let initValue = computedFunc.call({ data: deepProxy(initAllData, dependences) });
|
|
47
34
|
uninitedkeys = uninitedkeys.filter(ele => ele !== key);
|
|
48
|
-
if (
|
|
49
|
-
|
|
35
|
+
if (isValidDependences(dependences, uninitedkeys)) {
|
|
36
|
+
initValue = getProxyOriginalValue(initValue);
|
|
37
|
+
options.data[key] = initValue;
|
|
38
|
+
initAllData[key] = initValue;
|
|
39
|
+
computedCache[key] = {
|
|
40
|
+
dependences: uniqueDependences(dependences),
|
|
41
|
+
method: computedFunc,
|
|
42
|
+
value: initValue,
|
|
43
|
+
};
|
|
50
44
|
}
|
|
51
45
|
else {
|
|
52
|
-
|
|
53
|
-
dataOpt[key] = itemCache.value;
|
|
54
|
-
initAllData[key] = itemCache.value;
|
|
55
|
-
computedCache[key] = itemCache;
|
|
46
|
+
uninitedkeys.push(key);
|
|
56
47
|
}
|
|
57
48
|
}
|
|
58
49
|
if (uninitedkeys.length === 0) {
|
|
59
50
|
return computedCache;
|
|
60
51
|
}
|
|
61
|
-
return
|
|
52
|
+
return initComputedAndGetCache(options, computedConfig, initAllData, uninitedkeys, computedCache);
|
|
62
53
|
}
|
|
63
|
-
//# sourceMappingURL=
|
|
54
|
+
//# sourceMappingURL=initComputedAndGetCache.js.map
|
package/dist/api/DefineComponent/assignOptions/computedWatchHandle/initComputedAndGetCache.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"initComputedAndGetCache.js","sourceRoot":"","sources":["../../../../../src/api/DefineComponent/assignOptions/computedWatchHandle/initComputedAndGetCache.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAejE,SAAS,kBAAkB,CAAC,WAAiC,EAAE,YAAsB;IACnF,KAAK,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,WAAW,EAAE,CAAC;QAC/C,IAAI,CAAC,GAAG,KAAK,SAAS,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1D,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAGD,OAAO,IAAI,CAAC;AACd,CAAC;AAWD,SAAS,iBAAiB,CAAC,WAAiC;IAC1D,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,WAAW,CAAC;IACjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5C,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QACvD,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChD,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;YACrD,IAAI,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBAElC,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAEzB,OAAO,iBAAiB,CAAC,WAAW,CAAC,CAAC;YACxC,CAAC;YACD,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAElC,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAEzB,OAAO,iBAAiB,CAAC,WAAW,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC;AAWD,MAAM,UAAU,uBAAuB,CACrC,OAAgC,EAChC,cAAoC,EACpC,WAAoC,EACpC,eAAyB,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,EACpD,gBAA+B,EAAE;IAEjC,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAC/B,MAAM,YAAY,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;QACzC,MAAM,WAAW,GAAyB,EAAE,CAAC;QAE7C,IAAI,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;QAGjF,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;QAGvD,IAAI,kBAAkB,CAAC,WAAW,EAAE,YAAY,CAAC,EAAE,CAAC;YAClD,SAAS,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;YAG7C,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;YAG9B,WAAW,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;YAE7B,aAAa,CAAC,GAAG,CAAC,GAAG;gBACnB,WAAW,EAAE,iBAAiB,CAAC,WAAW,CAAC;gBAC3C,MAAM,EAAE,YAAY;gBACpB,KAAK,EAAE,SAAS;aACjB,CAAC;QACJ,CAAC;aAAM,CAAC;YAEN,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,aAAa,CAAC;IACvB,CAAC;IAGD,OAAO,uBAAuB,CAAC,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC;AACpG,CAAC"}
|
|
@@ -9,7 +9,7 @@ import type { PageLifetimesOption } from "../../RootComponent/PageLifetimes/Page
|
|
|
9
9
|
import type { PropertiesConstraint } from "../../RootComponent/Properties/PropertiesConstraint";
|
|
10
10
|
import type { StoreConstraint } from "../../RootComponent/Store/StoreConstraint";
|
|
11
11
|
import type { DefineComponentOption } from "..";
|
|
12
|
-
import type { ComputedCache } from "./computedWatchHandle/
|
|
12
|
+
import type { ComputedCache } from "./computedWatchHandle/initComputedAndGetCache";
|
|
13
13
|
type InstanceInnerFields = {
|
|
14
14
|
data: OptionsInnerFields["data"];
|
|
15
15
|
disposer: Record<string, Func>;
|
|
@@ -17,13 +17,6 @@ export function isPageCheck(isPage) {
|
|
|
17
17
|
}
|
|
18
18
|
};
|
|
19
19
|
}
|
|
20
|
-
function addCloneDataToInstance() {
|
|
21
|
-
this.cloneData = new Proxy(this.data, {
|
|
22
|
-
get: (target, key) => {
|
|
23
|
-
return deepClone(target)[key];
|
|
24
|
-
},
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
20
|
function onLoadReceivedDataHandle(option) {
|
|
28
21
|
const innerData = option[INNERMARKER.url];
|
|
29
22
|
if (innerData === undefined)
|
|
@@ -200,7 +193,6 @@ export function assignOptions(defineComponentOption) {
|
|
|
200
193
|
&& hijack(finalOptionsForComponent.pageLifetimes, "load", [loadReceivedDataHandle]);
|
|
201
194
|
hijack(finalOptionsForComponent.methods, "onLoad", [onLoadReceivedDataHandle]);
|
|
202
195
|
hijack(finalOptionsForComponent.lifetimes, "attached", [isPageCheck(rootComponentOption === null || rootComponentOption === void 0 ? void 0 : rootComponentOption.isPage)]);
|
|
203
|
-
hijack(finalOptionsForComponent.lifetimes, "created", [addCloneDataToInstance]);
|
|
204
196
|
finalOptionsForComponent.isPage
|
|
205
197
|
&& finalOptionsForComponent.options && Reflect.deleteProperty(finalOptionsForComponent.options, "virtualHost");
|
|
206
198
|
initStore(finalOptionsForComponent);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/api/DefineComponent/assignOptions/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAGlE,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAmBrE,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAG5D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAuDxC,MAAM,UAAU,WAAW,CAAC,MAA2B;IACrD,OAAO;QACL,MAAM,KAAK,GAAI,IAAqB,CAAC,KAA2B,CAAC;QACjE,IAAI,KAAK,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YAE7B,MAAM,KAAK,CACT,OAAO,KAAK,yCAAyC,CACtD,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,KAAK,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YAEvD,MAAM,KAAK,CACT,MAAM,IAAI,CAAC,EAAE,6CAA6C,CAC3D,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/api/DefineComponent/assignOptions/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { IfEquals } from "hry-types/src/Any/IfEquals";
|
|
2
|
+
import type { ComputeIntersection } from "hry-types/src/Object/ComputeIntersection";
|
|
1
3
|
import type { ReturnTypeInObject } from "hry-types/src/Object/ReturnTypeInObject";
|
|
2
4
|
import type { WMComponentOption } from "../../types/OfficialTypeAlias";
|
|
3
5
|
import type { DataConstraint } from "../RootComponent/Data/DataConstraint";
|
|
@@ -12,8 +14,9 @@ interface BaseInjectInfo {
|
|
|
12
14
|
}
|
|
13
15
|
export interface IInjectInfo extends BaseInjectInfo {
|
|
14
16
|
}
|
|
15
|
-
export type
|
|
16
|
-
|
|
17
|
+
export type IInjectAllData = IfEquals<{}, injectData & IInjectStore, {}, ComputeIntersection<injectData & IInjectStore>>;
|
|
18
|
+
type injectData = DataConstraint extends IInjectInfo["data"] ? {} : IInjectInfo["data"];
|
|
19
|
+
export type IInjectStore = StoreConstraint extends IInjectInfo["store"] ? {} : ReturnTypeInObject<IInjectInfo["store"]>;
|
|
17
20
|
export type IInjectMethods = IInjectInfo["methods"];
|
|
18
21
|
declare class InstanceConfig {
|
|
19
22
|
private info;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instanceConfig.js","sourceRoot":"","sources":["../../../src/api/InstanceInject/instanceConfig.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"instanceConfig.js","sourceRoot":"","sources":["../../../src/api/InstanceInject/instanceConfig.ts"],"names":[],"mappings":"AAwCA,MAAM,cAAc;IAApB;QACU,SAAI,GAAiC,EAAE,CAAC;IAOlD,CAAC;IANC,IAAW,UAAU;QACnB,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;IAC9B,CAAC;IACM,aAAa,CAAC,IAA6B;QAChD,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IACxC,CAAC;CACF;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC"}
|
|
@@ -1,21 +1,18 @@
|
|
|
1
|
-
import type { ReadonlyDeep } from "hry-types/src/Any/_api";
|
|
2
1
|
import type { IfExtends } from "hry-types/src/Any/IfExtends";
|
|
3
2
|
import type { ComputeIntersection } from "hry-types/src/Object/ComputeIntersection";
|
|
4
3
|
import type { IReactionDisposer } from "mobx";
|
|
5
4
|
import type { Assign } from "../../../types/Assign";
|
|
6
5
|
import type { ComputeObject } from "../../../types/ComputeObj";
|
|
7
6
|
import type { WMComponentInstance, WMInstanceMethods, WMPageInstance } from "../../../types/OfficialTypeAlias";
|
|
8
|
-
import type {
|
|
7
|
+
import type { IInjectAllData, IInjectMethods } from "../../InstanceInject/instanceConfig";
|
|
9
8
|
import type { CustomEventMethods } from "./CustomEventMethods";
|
|
10
9
|
import type { CustomSetData } from "./CustomSetData";
|
|
11
|
-
export type RootComponentInstance<TIsPage extends boolean, TMethods extends object, TDataForSetData extends object, AllData extends object, CustomEventsDoc extends object, StoreDoc extends object, instanceData = ComputeObject<Assign<
|
|
10
|
+
export type RootComponentInstance<TIsPage extends boolean, TMethods extends object, TDataForSetData extends object, AllData extends object, CustomEventsDoc extends object, StoreDoc extends object, instanceData = ComputeObject<Assign<IInjectAllData, ComputeIntersection<AllData>>>> = IfExtends<false, TIsPage, WMComponentInstance, WMPageInstance> & Omit<WMInstanceMethods<{}>, "setData"> & CustomSetData<TDataForSetData> & IfExtends<{}, StoreDoc, unknown, {
|
|
12
11
|
disposer: {
|
|
13
12
|
[k in keyof StoreDoc]: IReactionDisposer;
|
|
14
13
|
};
|
|
15
14
|
}> & Assign<IInjectMethods, TMethods & CustomEventMethods<CustomEventsDoc>> & {
|
|
16
|
-
data:
|
|
17
|
-
} & {
|
|
18
|
-
cloneData: ComputeObject<Assign<IInjectData, ComputeIntersection<AllData>>>;
|
|
15
|
+
data: instanceData;
|
|
19
16
|
};
|
|
20
17
|
export type ComponentInstance = RootComponentInstance<false, {}, {}, {}, {}, {}>;
|
|
21
18
|
export type PageInstance = RootComponentInstance<true, {}, {}, {}, {}, {}>;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type { ReadonlyDeep } from "hry-types/src/Any/_api";
|
|
2
1
|
import type { IfExtends } from "hry-types/src/Any/IfExtends";
|
|
3
2
|
import type { IsPureObject } from "hry-types/src/Any/IsPureObject";
|
|
4
3
|
import type { NoInfer } from "hry-types/src/Generic/NoInfer";
|
|
@@ -8,11 +7,11 @@ type getLastKeys<T extends string> = T extends `${string}.${infer L}` ? L : neve
|
|
|
8
7
|
type AddFieldsOfObject<TWatchData extends object, _WatchKeys extends keyof TWatchData, secondKeys extends string = {
|
|
9
8
|
[k in _WatchKeys]: IsPureObject<Exclude<TWatchData[k], null>> extends true ? `${k & string}.${(keyof Exclude<TWatchData[k], null>) & string}` | `${k & string}.**` : never;
|
|
10
9
|
}[_WatchKeys]> = {
|
|
11
|
-
[k in secondKeys]?: (newValue:
|
|
10
|
+
[k in secondKeys]?: (newValue: IfExtends<getLastKeys<k>, "**", TWatchData[getFirstKeys<k>], NonNullable<(Exclude<TWatchData[getFirstKeys<k>], null>)[getLastKeys<k>]>>) => void;
|
|
12
11
|
};
|
|
13
12
|
export type ObserversOption<TWatchData extends object, _WatchKeys extends keyof TWatchData = keyof TWatchData> = {
|
|
14
13
|
observers?: IfExtends<{}, TWatchData, EmptyObject, NoInfer<{
|
|
15
|
-
[k in _WatchKeys | "**"]?: (newValue: k extends keyof TWatchData ?
|
|
14
|
+
[k in _WatchKeys | "**"]?: (newValue: k extends keyof TWatchData ? TWatchData[k] : unknown) => void;
|
|
16
15
|
} & {
|
|
17
16
|
[k in _WatchKeys as never]: unknown;
|
|
18
17
|
} & AddFieldsOfObject<TWatchData, _WatchKeys>>>;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type { ReadonlyDeep } from "hry-types/src/Any/_api";
|
|
2
1
|
import type { IfExtends } from "hry-types/src/Any/IfExtends";
|
|
3
2
|
import type { IsPureObject } from "hry-types/src/Any/IsPureObject";
|
|
4
3
|
import type { NoInfer } from "hry-types/src/Generic/NoInfer";
|
|
@@ -8,11 +7,11 @@ type getLastKeys<T extends string> = T extends `${string}.${infer L}` ? L : neve
|
|
|
8
7
|
type AddFieldsOfObject<TWatchData extends object, _WatchKeys extends keyof TWatchData, secondKeys extends string = {
|
|
9
8
|
[k in _WatchKeys]: IsPureObject<Exclude<TWatchData[k], null>> extends true ? `${k & string}.${(keyof Exclude<TWatchData[k], null>) & string}` | `${k & string}.**` : never;
|
|
10
9
|
}[_WatchKeys]> = {
|
|
11
|
-
[k in secondKeys]?: (newValue:
|
|
10
|
+
[k in secondKeys]?: (newValue: IfExtends<getLastKeys<k>, "**", Exclude<TWatchData[getFirstKeys<k>], null>, NonNullable<(Exclude<TWatchData[getFirstKeys<k>], null>)[getLastKeys<k>]>>, oldValue: IfExtends<getLastKeys<k>, "**", TWatchData[getFirstKeys<k>], (Exclude<TWatchData[getFirstKeys<k>], null>)[getLastKeys<k>]>) => void;
|
|
12
11
|
};
|
|
13
12
|
export type WatchOption<TWatchData extends object, _WatchKeys extends keyof TWatchData = keyof TWatchData> = {
|
|
14
13
|
watch?: IfExtends<{}, TWatchData, EmptyObject, NoInfer<{
|
|
15
|
-
[k in _WatchKeys]?: (newValue:
|
|
14
|
+
[k in _WatchKeys]?: (newValue: Exclude<TWatchData[k], null>, oldValue: TWatchData[k]) => void;
|
|
16
15
|
} & {
|
|
17
16
|
[k in _WatchKeys as never]: unknown;
|
|
18
17
|
} & AddFieldsOfObject<TWatchData, _WatchKeys>>>;
|
|
@@ -5,7 +5,7 @@ import type { ComputeIntersection } from "hry-types/src/Object/_api";
|
|
|
5
5
|
import type { ComputeObject } from "../../types/ComputeObj";
|
|
6
6
|
import type { WMCompOtherOption } from "../../types/OfficialTypeAlias";
|
|
7
7
|
import type { ComponentDoc } from "../DefineComponent/ReturnType/ComponentDoc";
|
|
8
|
-
import type {
|
|
8
|
+
import type { IInjectAllData, IInjectStore } from "../InstanceInject/instanceConfig";
|
|
9
9
|
import type { ComputedConstraint } from "./Computed/ComputedConstraint";
|
|
10
10
|
import type { ComputedOption } from "./Computed/ComputedOption";
|
|
11
11
|
import type { GetComputedDoc } from "./Computed/GetComputedDoc";
|
|
@@ -32,7 +32,7 @@ import type { StoreConstraint } from "./Store/StoreConstraint";
|
|
|
32
32
|
import type { StoreOption } from "./Store/StoreOption";
|
|
33
33
|
import type { WatchOption } from "./Watch/WatchOption";
|
|
34
34
|
type RootComponentOptions<TEvents extends object, TIsPage extends boolean, TCustomEvents extends CustomEventConstraint, TMethods extends MethodsConstraint, TProperties extends PropertiesConstraint, TData extends object, TStore extends StoreConstraint, TComputed extends Record<string, Func>, EventsDoc extends object, CustomEventsDoc extends object, PropertiesDoc extends object, DataDoc extends object, StoreDoc extends object, ComputedDoc extends object> = MethodsOption<TMethods, keyof (EventsDoc & CustomEventsDoc)> & PropertiesOption<TProperties> & IsPageOption<TIsPage> & EventsOption<TEvents> & CustomEventsOption<TCustomEvents, keyof EventsDoc> & DataOption<TData, keyof PropertiesDoc> & StoreOption<TStore, keyof (PropertiesDoc & DataDoc)> & ComputedOption<TComputed, keyof (PropertiesDoc & DataDoc & StoreDoc), {
|
|
35
|
-
data: ComputeObject<DataDoc & Required<PropertiesDoc> & StoreDoc & ComputedDoc &
|
|
35
|
+
data: ComputeObject<DataDoc & Required<PropertiesDoc> & StoreDoc & ComputedDoc & IInjectAllData>;
|
|
36
36
|
}> & PageLifetimesOption<TIsPage, PropertiesDoc> & LifetimesOption & WatchOption<ComputedDoc & Required<PropertiesDoc> & DataDoc & StoreDoc & IInjectStore> & Partial<Omit<WMCompOtherOption, "pageLifetimes" | "definitionFilter" | "observers">> & ObserversOption<ComputedDoc & Required<PropertiesDoc> & DataDoc & StoreDoc & IInjectStore> & ThisType<RootComponentInstance<TIsPage, TMethods, DataDoc, DataDoc & Required<PropertiesDoc> & StoreDoc & ComputedDoc, CustomEventsDoc, StoreDoc>>;
|
|
37
37
|
type RootComponentConstructor<TComponentDocList extends ComponentDoc[]> = {
|
|
38
38
|
<TEvents extends EventsConstraint<TComponentDocList>, TIsPage extends boolean = false, const TProperties extends PropertiesConstraint = {}, TData extends object = {}, TStore extends StoreConstraint = {}, TComputed extends ComputedConstraint = {}, TCustomEvents extends IfExtends<TIsPage, false, CustomEventConstraint, EmptyObject> = {}, TMethods extends MethodsConstraint = {}, EventsDoc extends object = IfExtends<EventsConstraint<TComponentDocList>, TEvents, {}, TEvents>, CustomEventsDoc extends object = GetCustomEventDoc<TCustomEvents>, PropertiesDoc extends object = GetPropertiesDoc<TProperties, TIsPage>, DataDoc extends object = TData, StoreDoc extends object = GetStoreDoc<TStore>, ComputedDoc extends object = GetComputedDoc<TComputed>>(options: RootComponentOptions<TEvents, TIsPage, TCustomEvents, TMethods, TProperties, TData, TStore, TComputed, EventsDoc, CustomEventsDoc, PropertiesDoc, DataDoc, StoreDoc, ComputedDoc>): ComputeIntersection<IfExtends<TIsPage, false, {}, {
|
package/package.json
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { deepClone } from "../../../../utils/deepClone";
|
|
2
1
|
import type { Instance } from "..";
|
|
3
|
-
import { deepProxy } from "./data-tracer";
|
|
2
|
+
import { deepProxy, getProxyOriginalValue } from "./data-tracer";
|
|
4
3
|
import { getPathsValue } from "./getPathsValue";
|
|
5
4
|
|
|
6
5
|
import { isEqual } from "./isEqual";
|
|
@@ -23,11 +22,13 @@ export function computedUpdater(this: Instance, isUpdated = false): boolean {
|
|
|
23
22
|
}
|
|
24
23
|
if (changed) {
|
|
25
24
|
const newDependences: ComputedDependence[] = [];
|
|
26
|
-
|
|
25
|
+
let newValue = itemCache.method.call({ data: deepProxy(this.data, newDependences) });
|
|
27
26
|
|
|
28
27
|
// 更新值不会立即再次进入**函数,而是当前**函数运行完毕后触发**函数,
|
|
28
|
+
newValue = getProxyOriginalValue(newValue);
|
|
29
|
+
|
|
29
30
|
this.setData({
|
|
30
|
-
[key]:
|
|
31
|
+
[key]: newValue,
|
|
31
32
|
});
|
|
32
33
|
|
|
33
34
|
isUpdated = true;
|
|
@@ -8,28 +8,24 @@ export function deepProxy(
|
|
|
8
8
|
): object {
|
|
9
9
|
const handler = {
|
|
10
10
|
get<T extends object>(target: T, prop: keyof T & string) {
|
|
11
|
+
if (prop === "__original__") {
|
|
12
|
+
return target;
|
|
13
|
+
}
|
|
11
14
|
const val = target[prop];
|
|
12
|
-
|
|
15
|
+
|
|
16
|
+
// val不为undefined(依赖还为初始化的其他计算属性)且非自身属性或函数不再返回代理。 (如 this.data.arr.slice(),slice不属于自身属性,小程序允许data子字段为函数的情况,也不代理)
|
|
17
|
+
if ((val !== undefined) && (!Object.prototype.hasOwnProperty.call(target, prop) || typeof val === "function")) {
|
|
18
|
+
// val有不是函数的情况么?
|
|
19
|
+
return (val as Function).bind(target);
|
|
20
|
+
}
|
|
21
|
+
// 依赖长度不为0时径依赖去重(只留最后一个路径),比如 return this.data.obj.user.name 去重得到的是最后1个路径 ['obj','user','name'] , 不去重则3个依赖路径了 ['obj'], ['obj','user'],['obj','user','name'],在这里去重效率高些,外部去重时还要再次遍历
|
|
13
22
|
if (basePath.length !== 0) {
|
|
14
|
-
|
|
15
|
-
const lastDependences = dependences[dependences.length - 1]; // 倒数第一个是当前依赖。2022 at(-1)
|
|
16
|
-
// 只留最后一个路径。比如 return this.data.obj.user.name 得到的是最后1个路径 ['obj','user','name'] 减少无效依赖,提高性能。 而非3个 ['obj'], ['obj','user'],['obj','user','name']
|
|
17
|
-
if (lastDependences.paths.toString() === basePath.toString()) {
|
|
18
|
-
// console.log('删除', lastDependences)
|
|
19
|
-
dependences.pop();
|
|
20
|
-
}
|
|
23
|
+
dependences.pop();
|
|
21
24
|
}
|
|
22
25
|
const curPath = basePath.concat(prop);
|
|
23
26
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
dependences.push({ paths: curPath, val: deepClone(val) });
|
|
27
|
+
dependences.push({ paths: curPath, val });
|
|
27
28
|
|
|
28
|
-
// 自身方法或原型属性不代理
|
|
29
|
-
if (!Object.prototype.hasOwnProperty.call(target, prop) || typeof val === "function") {
|
|
30
|
-
// 原型链上的属性不代理,函数加bind。如 this.data.arr.slice() this.data.arr.forEach(...)
|
|
31
|
-
return typeof val === "function" ? val.bind(target) : val;
|
|
32
|
-
}
|
|
33
29
|
// 非对象不代理
|
|
34
30
|
if (typeof val !== "object" || val === null) return val;
|
|
35
31
|
|
|
@@ -42,3 +38,11 @@ export function deepProxy(
|
|
|
42
38
|
|
|
43
39
|
return new Proxy(data, handler);
|
|
44
40
|
}
|
|
41
|
+
|
|
42
|
+
export function getProxyOriginalValue<T extends { __original__?: string }>(value: T): unknown {
|
|
43
|
+
if (typeof value !== "object" || value === null || !value.__original__) {
|
|
44
|
+
return value;
|
|
45
|
+
} else {
|
|
46
|
+
return deepClone(value.__original__);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
@@ -2,7 +2,7 @@ import type { Func } from "hry-types/src/Misc/Func";
|
|
|
2
2
|
import { computedUpdater } from "./computedUpdater";
|
|
3
3
|
import { getPathsValue } from "./getPathsValue";
|
|
4
4
|
import { getPropertiesValue } from "./getPropertiesValue";
|
|
5
|
-
import {
|
|
5
|
+
import { initComputedAndGetCache } from "./initComputedAndGetCache";
|
|
6
6
|
import { isEqual } from "./isEqual";
|
|
7
7
|
|
|
8
8
|
import { deepClone } from "../../../../utils/deepClone";
|
|
@@ -25,25 +25,29 @@ function initWatchOldValue(data: FinalOptionsOfComponent["data"], watchConfig: o
|
|
|
25
25
|
return watchOldValue;
|
|
26
26
|
}
|
|
27
27
|
export function computedWatchHandle(options: FinalOptionsOfComponent) {
|
|
28
|
-
//
|
|
28
|
+
// 计算属性初始化和首次依赖收集
|
|
29
29
|
const computedConfig = options.computed;
|
|
30
30
|
const rawPropertiesValue = getPropertiesValue(options.properties);
|
|
31
31
|
if (computedConfig && !isEmptyObject(computedConfig)) {
|
|
32
32
|
// 此时store已经初始化数据到data了
|
|
33
33
|
|
|
34
|
-
const __computedInitCache__ =
|
|
34
|
+
const __computedInitCache__ = initComputedAndGetCache(options, computedConfig, {
|
|
35
|
+
...options.data,
|
|
36
|
+
...rawPropertiesValue,
|
|
37
|
+
});
|
|
35
38
|
|
|
39
|
+
// 缓存放入data中
|
|
36
40
|
options.data.__computedCache__ = __computedInitCache__;
|
|
37
41
|
|
|
42
|
+
// 计算属性更新函数放入methods中 要做冲突判断,避免用户定义了同名methods字段
|
|
38
43
|
options.methods.__computedUpdater__ = computedUpdater;
|
|
39
|
-
// // 把计算属性缓存从方法中带入到实例中,在created周期加入实例后删除
|
|
40
|
-
// methodOpt.__computedInitCache__ = () => computedCache;
|
|
41
44
|
}
|
|
42
45
|
const observersConfig = options.observers;
|
|
43
46
|
// 通过observers加入`**`字段来触发计算属性更新
|
|
44
47
|
const originalFunc = observersConfig["**"] as Func | undefined;
|
|
45
48
|
|
|
46
49
|
observersConfig["**"] = function(this: Instance): undefined {
|
|
50
|
+
// 任何setData都会触发计算属性更新(可能依赖数据并没变化)
|
|
47
51
|
this.__computedUpdater__?.();
|
|
48
52
|
|
|
49
53
|
originalFunc && originalFunc.call(this);
|