annil 1.2.2-dev.202312100 → 1.3.0-dev.202312100
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 +7 -0
- package/dist/behaviors/BComputedAndWatch/computedUpdater.js +1 -1
- package/dist/behaviors/BComputedAndWatch/computedUpdater.js.map +1 -1
- package/dist/behaviors/BComputedAndWatch/getPathsValue.d.ts +1 -1
- package/dist/behaviors/BComputedAndWatch/getPathsValue.js +13 -8
- package/dist/behaviors/BComputedAndWatch/getPathsValue.js.map +1 -1
- package/dist/behaviors/BComputedAndWatch/index.js +4 -4
- package/dist/behaviors/BComputedAndWatch/index.js.map +1 -1
- package/dist/behaviors/BComputedAndWatch/types.d.ts +1 -1
- package/package.json +1 -1
- package/src/behaviors/BComputedAndWatch/computedUpdater.ts +2 -1
- package/src/behaviors/BComputedAndWatch/getPathsValue.ts +25 -9
- package/src/behaviors/BComputedAndWatch/index.ts +5 -5
- package/src/behaviors/BComputedAndWatch/types.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,13 @@
|
|
|
4
4
|
|
|
5
5
|
* 解决DetailedType不接收接口类型的错误 ([ae8acbf](https://github.com/missannil/annil/commit/ae8acbfc2e62f99db565c448ad9253aa549e78bb))
|
|
6
6
|
|
|
7
|
+
## [1.3.0-dev.202312100](https://github.com/missannil/annil/compare/v1.2.2-dev.202312100...v1.3.0-dev.202312100) (2023-12-11)
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
### Features
|
|
11
|
+
|
|
12
|
+
* watch支持配置单个字段监控多个数据,但没有类型提示 ([37db28a](https://github.com/missannil/annil/commit/37db28a87a7f3af145a7c141e05d2a3b35e6bcb7))
|
|
13
|
+
|
|
7
14
|
## [1.2.2-dev.202312100](https://github.com/missannil/annil/compare/v1.2.1...v1.2.2-dev.202312100) (2023-12-10)
|
|
8
15
|
|
|
9
16
|
|
|
@@ -6,7 +6,7 @@ export function computedUpdater(isUpdated = false) {
|
|
|
6
6
|
const itemCache = this.__computedCache__[key];
|
|
7
7
|
let changed = false;
|
|
8
8
|
for (const dep of itemCache.dependences) {
|
|
9
|
-
const curVal = getPathsValue.call(this, dep.paths);
|
|
9
|
+
const curVal = getPathsValue.call(this, dep.paths.join("."))[0];
|
|
10
10
|
if (!isEqual(curVal, dep.val)) {
|
|
11
11
|
changed = true;
|
|
12
12
|
break;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"computedUpdater.js","sourceRoot":"","sources":["../../../src/behaviors/BComputedAndWatch/computedUpdater.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,MAAM,UAAU,eAAe,CAAiB,SAAS,GAAG,KAAK;IAK/D,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAGzC,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAC9C,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"computedUpdater.js","sourceRoot":"","sources":["../../../src/behaviors/BComputedAndWatch/computedUpdater.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,MAAM,UAAU,eAAe,CAAiB,SAAS,GAAG,KAAK;IAK/D,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAGzC,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAC9C,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;YAEhD,MAAM,KAAK,GAAG,IAAI,CAAC;YACnB,MAAM,YAAY,GAAG,IAAI,KAAK,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE,EAAE;gBAC7E,GAAG,CAAC,MAAM,EAAE,GAAG;oBACb,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;wBACnB,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;oBAClC,CAAC;oBAED,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBACjC,CAAC;aACF,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAGrD,IAAI,CAAC,OAAO,CAAC;gBACX,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;aACxB,CAAC,CAAC;YAEH,SAAS,GAAG,IAAI,CAAC;YAGjB,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,WAAW,GAAG,cAAc,CAAC;YAGzD,OAAO,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { Instance } from "./types";
|
|
2
|
-
export declare function getPathsValue(this: Instance, paths: string
|
|
2
|
+
export declare function getPathsValue(this: Instance, paths: string): unknown[];
|
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
export function getPathsValue(paths) {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
2
|
+
const valueList = [];
|
|
3
|
+
paths.split(",").forEach(path => {
|
|
4
|
+
const value = path.split(".").reduce((pre, path) => {
|
|
5
|
+
try {
|
|
6
|
+
return pre[path];
|
|
7
|
+
}
|
|
8
|
+
catch (error) {
|
|
9
|
+
return undefined;
|
|
10
|
+
}
|
|
11
|
+
}, this.data);
|
|
12
|
+
valueList.push(value);
|
|
13
|
+
});
|
|
14
|
+
return valueList;
|
|
10
15
|
}
|
|
11
16
|
//# sourceMappingURL=getPathsValue.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getPathsValue.js","sourceRoot":"","sources":["../../../src/behaviors/BComputedAndWatch/getPathsValue.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"getPathsValue.js","sourceRoot":"","sources":["../../../src/behaviors/BComputedAndWatch/getPathsValue.ts"],"names":[],"mappings":"AAQA,MAAM,UAAU,aAAa,CAAiB,KAAa;IACzD,MAAM,SAAS,GAAc,EAAE,CAAC;IAGhC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QAE9B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAQ,EAAE,IAAI,EAAE,EAAE;YAEtD,IAAI,CAAC;gBACH,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC;YACnB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,SAAS,CAAC;YACnB,CAAC;QACH,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -8,7 +8,7 @@ import { isPage } from "./IsPage";
|
|
|
8
8
|
function initWatchOldValue(watchConfig) {
|
|
9
9
|
const watchOldValue = {};
|
|
10
10
|
for (const key in watchConfig) {
|
|
11
|
-
watchOldValue[key] = deepClone(getPathsValue.call(this, key
|
|
11
|
+
watchOldValue[key] = deepClone(getPathsValue.call(this, key));
|
|
12
12
|
}
|
|
13
13
|
return watchOldValue;
|
|
14
14
|
}
|
|
@@ -56,13 +56,13 @@ export const BComputedAndWatch = Behavior({
|
|
|
56
56
|
const observersConfig = options.observers || (options.observers = {});
|
|
57
57
|
for (const key in watchConfig) {
|
|
58
58
|
const watchHadle = watchConfig[key];
|
|
59
|
-
observersConfig[key] = function (newValue) {
|
|
59
|
+
observersConfig[key] = function (...newValue) {
|
|
60
60
|
const watchOldValue = this.__watchOldValue__;
|
|
61
61
|
const oldValue = watchOldValue[key];
|
|
62
|
-
if (
|
|
62
|
+
if (isEqual(newValue, oldValue))
|
|
63
63
|
return;
|
|
64
64
|
watchOldValue[key] = deepClone(newValue);
|
|
65
|
-
watchHadle.call(this, newValue, oldValue);
|
|
65
|
+
watchHadle.call(this, ...newValue, ...oldValue);
|
|
66
66
|
};
|
|
67
67
|
}
|
|
68
68
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/behaviors/BComputedAndWatch/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,SAAS,iBAAiB,CAAiB,WAAmB;IAC5D,MAAM,aAAa,GAAG,EAAE,CAAC;IACzB,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC9B,aAAa,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/behaviors/BComputedAndWatch/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,SAAS,iBAAiB,CAAiB,WAAmB;IAC5D,MAAM,aAAa,GAAG,EAAE,CAAC;IACzB,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC9B,aAAa,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC;AAeD,MAAM,CAAC,MAAM,iBAAiB,GAAG,QAAQ,CAAC;IACxC,gBAAgB,CAAC,OAAgC;QAC/C,MAAM,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC;QAGxC,IAAI,cAAc,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,CAAC;YAErD,OAAO,CAAC,OAAO,KAAf,OAAO,CAAC,OAAO,GAAK,EAAE,EAAC;YAEvB,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;YAGtC,aAAa,CAAC,kBAAkB,GAAG,GAAG,EAAE,CAAC,cAAc,CAAC;YAExD,MAAM,eAAe,GAAG,OAAO,CAAC,SAAS,KAAjB,OAAO,CAAC,SAAS,GAAK,EAAE,CAAA,CAAC;YAEjD,MAAM,YAAY,GAAG,eAAe,CAAC,IAAI,CAAqB,CAAC;YAE/D,eAAe,CAAC,IAAI,CAAC,GAAG;gBACtB,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC;gBAC/C,QAAQ,cAAc,EAAE,CAAC;oBACvB,KAAK,SAAS;wBAEZ,YAAY,IAA+B,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBAEnE,MAAM;oBACR,KAAK,MAAM;wBAGT,MAAM;oBACR,KAAK,KAAK;wBAER,CAAC;4BACC,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;4BAC7C,IAAI,SAAS,EAAE,CAAC;gCAEd,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC;4BACnC,CAAC;iCAAM,CAAC;gCAEN,YAAY,IAA+B,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;4BACrE,CAAC;wBACH,CAAC;wBACD,MAAM;oBACR,KAAK,MAAM;wBACT,CAAC;4BAGC,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;4BAEhC,YAAY,IAA+B,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBACrE,CAAC;wBACD,MAAM;gBACV,CAAC;YACH,CAAC,CAAC;QACJ,CAAC;QAGD,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC;QAClC,IAAI,WAAW,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC;YAE/C,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,KAAf,OAAO,CAAC,OAAO,GAAK,EAAE,CAAA,CAAC;YAG7C,aAAa,CAAC,eAAe,GAAG,GAAG,EAAE,CAAC,WAAW,CAAC;YAElD,MAAM,eAAe,GAAG,OAAO,CAAC,SAAS,KAAjB,OAAO,CAAC,SAAS,GAAK,EAAE,CAAA,CAAC;YACjD,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;gBAC9B,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;gBAGpC,eAAe,CAAC,GAAG,CAAC,GAAG,UAAyB,GAAG,QAAmB;oBACpE,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAkB,CAAC;oBAC9C,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;oBACpC,IAAI,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC;wBAAE,OAAO;oBACxC,aAAa,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;oBAEzC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,QAAQ,EAAE,GAAG,QAAQ,CAAC,CAAC;gBAClD,CAAC,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IACD,SAAS,EAAE;QACT,OAAO;;YAEL,MAAM,WAAW,GAAG,MAAA,IAAI,CAAC,eAAe,oDAAI,CAAC;YAE7C,gBAAgB,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;YAE1C,IAAI,WAAW,EAAE,CAAC;gBAEhB,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YACrE,CAAC;QACH,CAAC;QACD,QAAQ;YACN,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;gBAElB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC;QAEH,CAAC;KACF;CACF,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -16,7 +16,8 @@ export function computedUpdater(this: Instance, isUpdated = false): boolean {
|
|
|
16
16
|
const itemCache = this.__computedCache__[key];
|
|
17
17
|
let changed = false;
|
|
18
18
|
for (const dep of itemCache.dependences) {
|
|
19
|
-
|
|
19
|
+
// getPathsValue返回的是数组
|
|
20
|
+
const curVal = getPathsValue.call(this, dep.paths.join("."))[0];
|
|
20
21
|
|
|
21
22
|
// 检查依赖是否更新
|
|
22
23
|
if (!isEqual(curVal, dep.val)) {
|
|
@@ -1,12 +1,28 @@
|
|
|
1
1
|
import type { Instance } from "./types";
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
3
|
+
/**
|
|
4
|
+
* 获取指定paths的值
|
|
5
|
+
* @param this - 组件实例 Instance
|
|
6
|
+
* @param paths - 支持多字段(用`,`分开) 例如 'obj.xxx,a,b' 监控了3个字段
|
|
7
|
+
* @returns unknown[] 每项对应paths每项的值
|
|
8
|
+
*/
|
|
9
|
+
export function getPathsValue(this: Instance, paths: string) {
|
|
10
|
+
const valueList: unknown[] = [];
|
|
11
|
+
|
|
12
|
+
// ['obj.xxx','a','b'].forEach
|
|
13
|
+
paths.split(",").forEach(path => {
|
|
14
|
+
// path : 'obj.xxx' | 'a' | 'b'
|
|
15
|
+
const value = path.split(".").reduce((pre: any, path) => {
|
|
16
|
+
// pre有可能为undefined|null,比如obj是未初始化的计算属性(undefined),还有可能是properties的对象类型(默认为null)
|
|
17
|
+
try {
|
|
18
|
+
return pre[path];
|
|
19
|
+
} catch (error) {
|
|
20
|
+
return undefined;
|
|
21
|
+
}
|
|
22
|
+
}, this.data);
|
|
23
|
+
|
|
24
|
+
valueList.push(value);
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
return valueList;
|
|
12
28
|
}
|
|
@@ -12,7 +12,7 @@ import type { Instance, WatchOldValue } from "./types";
|
|
|
12
12
|
function initWatchOldValue(this: Instance, watchConfig: object): WatchOldValue {
|
|
13
13
|
const watchOldValue = {};
|
|
14
14
|
for (const key in watchConfig) {
|
|
15
|
-
watchOldValue[key] = deepClone(getPathsValue.call(this, key
|
|
15
|
+
watchOldValue[key] = deepClone(getPathsValue.call(this, key));
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
return watchOldValue;
|
|
@@ -100,14 +100,14 @@ export const BComputedAndWatch = Behavior({
|
|
|
100
100
|
for (const key in watchConfig) {
|
|
101
101
|
const watchHadle = watchConfig[key];
|
|
102
102
|
|
|
103
|
-
|
|
103
|
+
// 在监控多个数据时,参数是多个值
|
|
104
|
+
observersConfig[key] = function(this: Instance, ...newValue: unknown[]) {
|
|
104
105
|
const watchOldValue = this.__watchOldValue__!;
|
|
105
106
|
const oldValue = watchOldValue[key];
|
|
106
|
-
|
|
107
|
-
if ((newValue === undefined) || isEqual(newValue, oldValue)) return;
|
|
107
|
+
if (isEqual(newValue, oldValue)) return;
|
|
108
108
|
watchOldValue[key] = deepClone(newValue);
|
|
109
109
|
|
|
110
|
-
watchHadle.call(this, newValue, oldValue);
|
|
110
|
+
watchHadle.call(this, ...newValue, ...oldValue);
|
|
111
111
|
};
|
|
112
112
|
}
|
|
113
113
|
}
|