annil 1.1.1 → 1.2.0-beta.0
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/collectOptionsForComponent.d.ts +2 -2
- package/dist/api/DefineComponent/collectOptionsForComponent.js +24 -28
- package/dist/api/DefineComponent/collectOptionsForComponent.js.map +1 -1
- package/dist/api/DefineComponent/index.d.ts +12 -12
- package/dist/api/DefineComponent/index.js.map +1 -1
- package/dist/api/RootComponent/Computed/ComputedOption.d.ts +2 -2
- package/dist/api/RootComponent/Computed/GetComputedDoc.d.ts +2 -2
- package/dist/api/RootComponent/Computed/test/normal.test.js +5 -12
- package/dist/api/RootComponent/Computed/test/normal.test.js.map +1 -1
- package/dist/api/RootComponent/CustomEvents/CustomEventsOption.d.ts +2 -2
- package/dist/api/RootComponent/Data/DataConstraint.d.ts +1 -1
- package/dist/api/RootComponent/Data/DataOption.d.ts +2 -2
- package/dist/api/RootComponent/Data/GetDataDoc.d.ts +1 -4
- package/dist/api/RootComponent/Data/test/GetDataDoc.test.d.ts +3 -2
- package/dist/api/RootComponent/Data/test/GetDataDoc.test.js +5 -5
- package/dist/api/RootComponent/Data/test/GetDataDoc.test.js.map +1 -1
- package/dist/api/RootComponent/Data/test/normal.test.js.map +1 -1
- package/dist/api/RootComponent/Events/EventsConstraint.d.ts +6 -5
- package/dist/api/RootComponent/Events/EventsOption.d.ts +2 -3
- package/dist/api/RootComponent/Events/test/normal.test.js +1 -1
- package/dist/api/RootComponent/Events/test/normal.test.js.map +1 -1
- package/dist/api/RootComponent/Lifetimes/LifetimesConstraint.d.ts +5 -4
- package/dist/api/RootComponent/Lifetimes/test/error.test.js.map +1 -1
- package/dist/api/RootComponent/PageLifetimes/PageLifetimesOption.d.ts +6 -7
- package/dist/api/RootComponent/PageLifetimes/test/error.test.js +3 -1
- package/dist/api/RootComponent/PageLifetimes/test/error.test.js.map +1 -1
- package/dist/api/RootComponent/PageLifetimes/test/normal.test.js +3 -1
- package/dist/api/RootComponent/PageLifetimes/test/normal.test.js.map +1 -1
- package/dist/api/RootComponent/RootComponentDoc.d.ts +17 -3
- package/dist/api/RootComponent/Store/GeTStoreDoc.d.ts +1 -1
- package/dist/api/RootComponent/Store/StoreOption.d.ts +2 -2
- package/dist/api/RootComponent/Store/test/normal.test.js.map +1 -1
- package/dist/api/RootComponent/Watch/test/WatchProperties.test.js +0 -2
- package/dist/api/RootComponent/Watch/test/WatchProperties.test.js.map +1 -1
- package/dist/api/RootComponent/index.d.ts +9 -10
- package/dist/api/RootComponent/index.js.map +1 -1
- package/dist/api/SubComponent/SubData/SubDataConstraint.d.ts +2 -2
- package/dist/api/SubComponent/SubData/test/normal.test.js +0 -15
- package/dist/api/SubComponent/SubData/test/normal.test.js.map +1 -1
- package/dist/api/SubComponent/SubEvents/SubEventsConstraint.d.ts +2 -2
- package/dist/api/SubComponent/SubEvents/SubEventsOptions.d.ts +2 -2
- package/dist/api/SubComponent/SubEvents/test/error.test.js.map +1 -1
- package/dist/api/SubComponent/SubEvents/test/normal.test.js +20 -0
- package/dist/api/SubComponent/SubEvents/test/normal.test.js.map +1 -1
- package/dist/api/SubComponent/SubInherit/SubInheritConstraint.d.ts +3 -2
- package/dist/api/SubComponent/SubInherit/SubInheritOption.d.ts +3 -0
- package/dist/api/SubComponent/SubInherit/SubInheritOption.js +2 -0
- package/dist/api/SubComponent/SubInherit/SubInheritOption.js.map +1 -0
- package/dist/api/SubComponent/SubInherit/test/error.test.js +1 -1
- package/dist/api/SubComponent/SubInherit/test/error.test.js.map +1 -1
- package/dist/api/SubComponent/SubInherit/test/normal.test.js.map +1 -1
- package/dist/api/SubComponent/SubMethods/SubMethodsOption.d.ts +3 -2
- package/dist/api/SubComponent/SubMethods/test/error.test.js +6 -0
- package/dist/api/SubComponent/SubMethods/test/error.test.js.map +1 -1
- package/dist/api/SubComponent/SubMethods/test/normarl.test.js +3 -3
- package/dist/api/SubComponent/SubMethods/test/normarl.test.js.map +1 -1
- package/dist/api/SubComponent/SubPageLifetimes/SubPageLifetimesOption.d.ts +1 -1
- package/dist/api/SubComponent/SubPageLifetimes/test/error.test.d.ts +0 -1
- package/dist/api/SubComponent/SubPageLifetimes/test/error.test.js +1 -11
- package/dist/api/SubComponent/SubPageLifetimes/test/error.test.js.map +1 -1
- package/dist/api/SubComponent/SubPageLifetimes/test/normal.test.d.ts +0 -1
- package/dist/api/SubComponent/SubPageLifetimes/test/normal.test.js +1 -25
- package/dist/api/SubComponent/SubPageLifetimes/test/normal.test.js.map +1 -1
- package/dist/api/SubComponent/SubStore/SubDataConstraint.d.ts +2 -2
- package/dist/api/SubComponent/SubStore/SubStoreOption.d.ts +1 -1
- package/dist/api/SubComponent/SubStore/test/error.test.js +2 -0
- package/dist/api/SubComponent/SubStore/test/error.test.js.map +1 -1
- package/dist/api/SubComponent/SubStore/test/normal.test.js +1 -0
- package/dist/api/SubComponent/SubStore/test/normal.test.js.map +1 -1
- package/dist/api/SubComponent/SubWatch/SubWatchOption.d.ts +2 -1
- package/dist/api/SubComponent/SubWatch/test/WatchComputed.test.d.ts +1 -0
- package/dist/api/SubComponent/SubWatch/test/WatchComputed.test.js +44 -1
- package/dist/api/SubComponent/SubWatch/test/WatchComputed.test.js.map +1 -1
- package/dist/api/SubComponent/SubWatch/test/error.test.js +10 -2
- package/dist/api/SubComponent/SubWatch/test/error.test.js.map +1 -1
- package/dist/api/SubComponent/index.d.ts +19 -13
- package/dist/api/SubComponent/index.js.map +1 -1
- package/dist/behaviors/BComputedAndWatch/index.js.map +1 -1
- package/dist/behaviors/BComputedAndWatch/types.d.ts +1 -0
- package/dist/behaviors/BStore.js.map +1 -1
- package/dist/behaviors/BbeforeCreated.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/types/OfficialTypeAlias.d.ts +1 -1
- package/dist/types/RemoveInnerData.d.ts +1 -0
- package/dist/types/RemoveInnerData.js +2 -0
- package/dist/types/RemoveInnerData.js.map +1 -0
- package/dist/utils/InnerMarker.js +1 -1
- package/dist/utils/InnerMarker.js.map +1 -1
- package/dist/utils/deepClone.js.map +1 -1
- package/package.json +4 -2
- package/src/api/DefineComponent/collectOptionsForComponent.ts +176 -66
- package/src/api/DefineComponent/index.ts +13 -9
- package/src/api/RootComponent/Computed/ComputedOption.ts +23 -3
- package/src/api/RootComponent/Computed/GetComputedDoc.ts +1 -3
- package/src/api/RootComponent/Computed/test/normal.test.ts +9 -19
- package/src/api/RootComponent/CustomEvents/CustomEventsOption.ts +26 -22
- package/src/api/RootComponent/CustomEvents/test/error.test.ts +5 -5
- package/src/api/RootComponent/CustomEvents/test/normal.test.ts +1 -1
- package/src/api/RootComponent/Data/DataConstraint.ts +1 -1
- package/src/api/RootComponent/Data/DataOption.ts +6 -4
- package/src/api/RootComponent/Data/GetDataDoc.ts +1 -18
- package/src/api/RootComponent/Data/test/GetDataDoc.test.ts +14 -25
- package/src/api/RootComponent/Data/test/error.test.ts +2 -2
- package/src/api/RootComponent/Data/test/normal.test.ts +5 -8
- package/src/api/RootComponent/Events/EventsConstraint.ts +24 -19
- package/src/api/RootComponent/Events/EventsOption.ts +54 -6
- package/src/api/RootComponent/Events/test/normal.test.ts +16 -16
- package/src/api/RootComponent/Instance/test/properties/mormal.test.ts +1 -1
- package/src/api/RootComponent/IsPage/IsPageOption.ts +1 -1
- package/src/api/RootComponent/Lifetimes/LifetimesConstraint.ts +11 -8
- package/src/api/RootComponent/Lifetimes/LifetimesOption.ts +26 -0
- package/src/api/RootComponent/Lifetimes/test/error.test.ts +3 -13
- package/src/api/RootComponent/Lifetimes/test/normal.test.ts +1 -1
- package/src/api/RootComponent/Methods/MethodsOption.ts +3 -0
- package/src/api/RootComponent/PageLifetimes/PageLifetimesOption.ts +21 -10
- package/src/api/RootComponent/PageLifetimes/test/error.test.ts +7 -5
- package/src/api/RootComponent/PageLifetimes/test/normal.test.ts +9 -10
- package/src/api/RootComponent/Properties/PropertiesOption.ts +19 -32
- package/src/api/RootComponent/RootComponentDoc.ts +19 -3
- package/src/api/RootComponent/Store/GeTStoreDoc.ts +1 -1
- package/src/api/RootComponent/Store/StoreOption.ts +14 -2
- package/src/api/RootComponent/Store/test/error.test.ts +5 -5
- package/src/api/RootComponent/Store/test/normal.test.ts +1 -0
- package/src/api/RootComponent/Watch/test/WatchProperties.test.ts +1 -12
- package/src/api/RootComponent/index.ts +20 -19
- package/src/api/SubComponent/SubComputed/SubComputedOption.ts +0 -1
- package/src/api/SubComponent/SubData/SubDataConstraint.ts +2 -3
- package/src/api/SubComponent/SubData/SubDataOption.ts +4 -0
- package/src/api/SubComponent/SubData/test/error.test.ts +1 -1
- package/src/api/SubComponent/SubData/test/normal.test.ts +6 -37
- package/src/api/SubComponent/SubEvents/SubEventsConstraint.ts +7 -2
- package/src/api/SubComponent/SubEvents/SubEventsOptions.ts +7 -2
- package/src/api/SubComponent/SubEvents/test/error.test.ts +5 -4
- package/src/api/SubComponent/SubEvents/test/normal.test.ts +31 -4
- package/src/api/SubComponent/SubInherit/SubInheritConstraint.ts +6 -3
- package/src/api/SubComponent/SubInherit/SubInheritOption.ts +8 -0
- package/src/api/SubComponent/SubInherit/test/error.test.ts +9 -7
- package/src/api/SubComponent/SubInherit/test/normal.test.ts +5 -4
- package/src/api/SubComponent/SubMethods/SubMethodsOption.ts +7 -3
- package/src/api/SubComponent/SubMethods/test/error.test.ts +13 -5
- package/src/api/SubComponent/SubMethods/test/normarl.test.ts +6 -12
- package/src/api/SubComponent/SubPageLifetimes/SubPageLifetimesOption.ts +2 -2
- package/src/api/SubComponent/SubPageLifetimes/test/error.test.ts +1 -32
- package/src/api/SubComponent/SubPageLifetimes/test/normal.test.ts +1 -74
- package/src/api/SubComponent/SubStore/SubDataConstraint.ts +2 -2
- package/src/api/SubComponent/SubStore/SubStoreOption.ts +15 -1
- package/src/api/SubComponent/SubStore/test/error.test.ts +4 -0
- package/src/api/SubComponent/SubStore/test/normal.test.ts +2 -0
- package/src/api/SubComponent/SubWatch/SubWatchOption.ts +2 -1
- package/src/api/SubComponent/SubWatch/test/WatchComputed.test.ts +75 -43
- package/src/api/SubComponent/SubWatch/test/error.test.ts +12 -3
- package/src/api/SubComponent/index.ts +28 -17
- package/src/behaviors/BComputedAndWatch/index.ts +2 -2
- package/src/behaviors/BComputedAndWatch/types.ts +1 -0
- package/src/behaviors/BStore.ts +4 -6
- package/src/behaviors/BbeforeCreated.ts +2 -2
- package/src/index.ts +12 -8
- package/src/types/OfficialTypeAlias.ts +7 -11
- package/src/types/RemoveInnerData.ts +5 -0
- package/src/utils/InnerMarker.ts +1 -1
- package/src/utils/deepClone.ts +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BbeforeCreated.js","sourceRoot":"","sources":["../../src/behaviors/BbeforeCreated.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,aAAa,GAAG,QAAQ,CAAC;IACpC,gBAAgB,CAAC,
|
|
1
|
+
{"version":3,"file":"BbeforeCreated.js","sourceRoot":"","sources":["../../src/behaviors/BbeforeCreated.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,aAAa,GAAG,QAAQ,CAAC;IACpC,gBAAgB,CAAC,OAAgC;QAE/C,MAAM,gBAAgB,GAAG,OAAO,CAAC,SAAU,CAAC,YAAY,CAAC;QAEzD,gBAAgB,IAAI,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAChD,CAAC;CACF,CAAC,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { navigateTo } from "./api/navigateTo";
|
|
2
1
|
import { DefineComponent } from "./api/DefineComponent";
|
|
2
|
+
import { navigateTo } from "./api/navigateTo";
|
|
3
3
|
import { RootComponent } from "./api/RootComponent";
|
|
4
4
|
import { SubComponent } from "./api/SubComponent";
|
|
5
|
-
import type { DetailedType } from "./types/DetailedType";
|
|
6
5
|
import type { ComponentDocExtension } from "./types/ComponentDocExtension";
|
|
6
|
+
import type { DetailedType } from "./types/DetailedType";
|
|
7
7
|
import type { GenerateDoc } from "./types/GenerateDoc";
|
|
8
8
|
import type { ParamsEqual } from "./types/TwoParamsEqual";
|
|
9
9
|
export type { Vant, Wm } from "./thirdLib";
|
|
10
|
-
export type { Dataset, Detail, WMBaseEvent, WMCustomEvent } from "./types/OfficialTypeAlias";
|
|
10
|
+
export type { CurrentTargetDataset, Dataset, Detail, Mark, TargetDataset, WMBaseEvent, WMCustomEvent, } from "./types/OfficialTypeAlias";
|
|
11
11
|
export { type ComponentDocExtension, DefineComponent, type DetailedType, type GenerateDoc, navigateTo, type ParamsEqual, RootComponent, SubComponent, };
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { navigateTo } from "./api/navigateTo";
|
|
2
1
|
import { DefineComponent } from "./api/DefineComponent";
|
|
2
|
+
import { navigateTo } from "./api/navigateTo";
|
|
3
3
|
import { RootComponent } from "./api/RootComponent";
|
|
4
4
|
import { SubComponent } from "./api/SubComponent";
|
|
5
5
|
export { DefineComponent, navigateTo, RootComponent, SubComponent, };
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAiBlD,OAAO,EAEL,eAAe,EAIf,UAAU,EAEV,aAAa,EACb,YAAY,GACb,CAAC"}
|
|
@@ -6,7 +6,7 @@ export type WMTriggerEventOption = WechatMiniprogram.Component.TriggerEventOptio
|
|
|
6
6
|
export type WMCustomEvent<Detail = undefined, Mark extends object = object, CurrentTargetDataset extends object = object, TargetDataset extends object = CurrentTargetDataset> = WechatMiniprogram.CustomEvent<Detail, Mark, CurrentTargetDataset, TargetDataset>;
|
|
7
7
|
export type WMBaseEvent<Mark extends object = object, CurrentTargetDataset extends object = object, TargetDataset extends object = CurrentTargetDataset> = WechatMiniprogram.BaseEvent<Mark, CurrentTargetDataset, TargetDataset>;
|
|
8
8
|
export type Dataset<TCurrentTargetDataset extends object, TargetDataset extends object = TCurrentTargetDataset, Detail = undefined> = WMCustomEvent<Detail, object, TCurrentTargetDataset, TargetDataset>;
|
|
9
|
-
export type Mark<TMark extends object> = WechatMiniprogram.CustomEvent<
|
|
9
|
+
export type Mark<TMark extends object> = Required<WechatMiniprogram.CustomEvent<object, TMark, object, object>>;
|
|
10
10
|
export type Detail<T> = WMCustomEvent<T>;
|
|
11
11
|
export type CurrentTargetDataset<T extends object> = WMCustomEvent<{}, {}, T>;
|
|
12
12
|
export type TargetDataset<TargetDataset extends object> = WMCustomEvent<{}, {}, {}, TargetDataset>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type RemoveInnerData<S extends string> = S extends unknown ? S extends `_${string}` ? never : S : never;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RemoveInnerData.js","sourceRoot":"","sources":["../../src/types/RemoveInnerData.ts"],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InnerMarker.js","sourceRoot":"","sources":["../../src/utils/InnerMarker.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,GAAG,EAAE,
|
|
1
|
+
{"version":3,"file":"InnerMarker.js","sourceRoot":"","sources":["../../src/utils/InnerMarker.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,GAAG,EAAE,WAAkC;CAExC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deepClone.js","sourceRoot":"","sources":["../../src/utils/deepClone.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,SAAS,CAAI,KAAQ;IACnC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;
|
|
1
|
+
{"version":3,"file":"deepClone.js","sourceRoot":"","sources":["../../src/utils/deepClone.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,SAAS,CAAI,KAAQ;IACnC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAM,CAAC;IAEpD,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;IAE3D,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;YACrD,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "annil",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0-beta.0",
|
|
4
4
|
"description": "微信小程序(原生开发)插件",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "src/index.ts",
|
|
@@ -10,12 +10,14 @@
|
|
|
10
10
|
},
|
|
11
11
|
"homepage": "https://github.com/missannil/annil.git",
|
|
12
12
|
"scripts": {
|
|
13
|
-
"test": "jest --watch",
|
|
14
13
|
"coverage": "jest --coverage",
|
|
15
14
|
"prepare": "husky install",
|
|
16
15
|
"lint": "eslint . --fix && npm run fmt",
|
|
17
16
|
"fmt": "dprint fmt",
|
|
17
|
+
"test:jest": "jest --watch",
|
|
18
18
|
"test:type": "tsc --watch",
|
|
19
|
+
"type": "npm run test:type",
|
|
20
|
+
"jest": "npm run test:jest",
|
|
19
21
|
"build": "tsc -p tsconfig.build.json"
|
|
20
22
|
},
|
|
21
23
|
"devDependencies": {
|
|
@@ -4,7 +4,6 @@ import { BComputedAndWatch } from "../../behaviors/BComputedAndWatch";
|
|
|
4
4
|
import { initComputed } from "../../behaviors/BComputedAndWatch/initComputed";
|
|
5
5
|
import type { Instance } from "../../behaviors/BComputedAndWatch/types";
|
|
6
6
|
import { BStore } from "../../behaviors/BStore";
|
|
7
|
-
import { deepClone } from "../../utils/deepClone";
|
|
8
7
|
import { INNERMARKER } from "../../utils/InnerMarker";
|
|
9
8
|
import { isEmptyObject } from "../../utils/isEmptyObject";
|
|
10
9
|
import type { RootComponentTrueOptions } from "../RootComponent";
|
|
@@ -16,72 +15,134 @@ import type {
|
|
|
16
15
|
import type { EventsConstraint } from "../RootComponent/Events/EventsConstraint";
|
|
17
16
|
import type { PageInstance } from "../RootComponent/Instance/RootComponentInstance";
|
|
18
17
|
import type { SubComponentTrueOptions } from "../SubComponent";
|
|
19
|
-
import type {
|
|
18
|
+
import type { FinalOptionsOfComponent, FuncOptions } from ".";
|
|
20
19
|
/**
|
|
21
|
-
* 针对通过 navigateTo
|
|
20
|
+
* 针对通过 navigateTo传过来的数据对页面onLoad周期传入数据解析
|
|
22
21
|
* @param option - option中的url是拼接了encodeURIComponent转码的data对象的,key为INNERMARKER.url
|
|
23
22
|
*/
|
|
24
|
-
/* istanbul ignore next */
|
|
23
|
+
/* istanbul ignore next: miniprogram-simulate(当前版本 1.6.1) 无法测试页面 */
|
|
25
24
|
function onLoadReceivedDataHandle(
|
|
26
25
|
this: PageInstance,
|
|
27
26
|
option: Record<typeof INNERMARKER.url, string>,
|
|
28
27
|
) {
|
|
29
28
|
const innerData: string | undefined = option[INNERMARKER.url];
|
|
30
|
-
//
|
|
29
|
+
// 未使用navigateTo API
|
|
31
30
|
if (innerData === undefined) return;
|
|
32
|
-
const
|
|
31
|
+
const decodeOption = JSON.parse(decodeURIComponent(innerData));
|
|
33
32
|
|
|
34
33
|
// 使用navigateTo
|
|
35
|
-
for (const key in
|
|
36
|
-
option[key] =
|
|
34
|
+
for (const key in decodeOption) {
|
|
35
|
+
option[key] = decodeOption[key];
|
|
37
36
|
}
|
|
38
|
-
|
|
39
|
-
// setData会触发计算属性 继承属性等 。
|
|
40
|
-
this.setData(option as any);
|
|
41
|
-
|
|
42
37
|
delete option[INNERMARKER.url];
|
|
43
38
|
|
|
44
|
-
|
|
39
|
+
// 默认生命周期不会把接收的数据setData,为了更方便setData.注: 此时计算属性还未初始化。
|
|
40
|
+
// this.setData(option);
|
|
45
41
|
}
|
|
46
|
-
|
|
47
42
|
/**
|
|
48
|
-
*
|
|
43
|
+
* 针对通过 navigateTo传过来的数据对组件load周期传入数据解析
|
|
44
|
+
* @param option - option中的url是拼接了encodeURIComponent转码的data对象的,key为INNERMARKER.url
|
|
49
45
|
*/
|
|
50
|
-
/* istanbul ignore next */
|
|
51
|
-
function
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
46
|
+
/* istanbul ignore next: miniprogram-simulate(当前版本 1.6.1) 无法测试页面 */
|
|
47
|
+
// function loadReceivedDataHandle(
|
|
48
|
+
// this: PageInstance,
|
|
49
|
+
// option: Record<typeof INNERMARKER.url, string>,
|
|
50
|
+
// ) {
|
|
51
|
+
// const innerData: string | undefined = option[INNERMARKER.url];
|
|
52
|
+
// // 未使用自定义的navigateTo
|
|
53
|
+
// if (innerData === undefined) return;
|
|
54
|
+
// const decodeOption = JSON.parse(decodeURIComponent(innerData));
|
|
55
|
+
|
|
56
|
+
// // 使用navigateTo
|
|
57
|
+
// for (const key in decodeOption) {
|
|
58
|
+
// option[key] = decodeOption[key];
|
|
59
|
+
// }
|
|
60
|
+
// delete option[INNERMARKER.url];
|
|
61
|
+
// }
|
|
62
|
+
/**
|
|
63
|
+
* 劫持指定配置字段
|
|
64
|
+
*/
|
|
65
|
+
/* istanbul ignore next: miniprogram-simulate(当前版本 1.6.1) 无法测试页面 */
|
|
66
|
+
function hijack(config: object, field: string, before: Func[] = [], after: Func[] = []) {
|
|
67
|
+
const originalFunc: Func | undefined = config[field];
|
|
60
68
|
|
|
61
|
-
|
|
62
|
-
before.forEach(
|
|
63
|
-
func.call(this, props, cloneOpt);
|
|
64
|
-
});
|
|
69
|
+
config[field] = function(...args: any[]) {
|
|
70
|
+
before.forEach(func => func.call(this, ...args));
|
|
65
71
|
|
|
66
|
-
|
|
72
|
+
originalFunc && originalFunc.apply(this, args);
|
|
67
73
|
|
|
68
|
-
after.forEach(
|
|
69
|
-
func.call(this, props, cloneOpt);
|
|
70
|
-
});
|
|
74
|
+
after.forEach(func => func.call(this, ...args));
|
|
71
75
|
};
|
|
76
|
+
|
|
77
|
+
return;
|
|
72
78
|
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* onLoad生命周期劫持函数
|
|
82
|
+
*/
|
|
83
|
+
/* istanbul ignore next: miniprogram-simulate(当前版本 1.6.1) 无法测试页面 */
|
|
84
|
+
// function onLoadHijack(
|
|
85
|
+
// options: FinalOptionsOfComponent,
|
|
86
|
+
// before: Func[],
|
|
87
|
+
// after: Func[] = [],
|
|
88
|
+
// ) {
|
|
89
|
+
// options.methods ||= {};
|
|
90
|
+
|
|
91
|
+
// const cloneOpt = deepClone(options);
|
|
92
|
+
// const originalOnLoad: Func | undefined = options.methods.onLoad;
|
|
93
|
+
|
|
94
|
+
// options.methods.onLoad = function(props: unknown) {
|
|
95
|
+
// before.forEach((func) => {
|
|
96
|
+
// func.call(this, props, cloneOpt);
|
|
97
|
+
// });
|
|
98
|
+
|
|
99
|
+
// originalOnLoad?.call(this, props);
|
|
100
|
+
|
|
101
|
+
// after.forEach((func) => {
|
|
102
|
+
// func.call(this, props, cloneOpt);
|
|
103
|
+
// });
|
|
104
|
+
// };
|
|
105
|
+
// }
|
|
106
|
+
/**
|
|
107
|
+
* 劫持pageLifetimes中的load字段
|
|
108
|
+
*/
|
|
109
|
+
/* istanbul ignore next */
|
|
110
|
+
// function loadHijack(
|
|
111
|
+
// options: FinalOptionsOfComponent,
|
|
112
|
+
// before: Func[],
|
|
113
|
+
// after: Func[] = [],
|
|
114
|
+
// ) {
|
|
115
|
+
// /* istanbul ignore next: miniprogram-simulate(当前版本 1.6.1) 无法测试页面 */
|
|
116
|
+
// options.lifetimes ||= {};
|
|
117
|
+
|
|
118
|
+
// const originalAttached: Func | undefined = options.lifetimes.attached;
|
|
119
|
+
|
|
120
|
+
// options.lifetimes.attached = function() {
|
|
121
|
+
// before.forEach((func) => {
|
|
122
|
+
// func.call(this, options);
|
|
123
|
+
// });
|
|
124
|
+
|
|
125
|
+
// originalAttached?.call(this);
|
|
126
|
+
|
|
127
|
+
// /* istanbul ignore next */
|
|
128
|
+
// after.forEach((func) => {
|
|
129
|
+
// func.call(this, options);
|
|
130
|
+
// });
|
|
131
|
+
// };
|
|
132
|
+
// }
|
|
73
133
|
/**
|
|
74
134
|
* 内部保护字段 即不允许配置的字段名(所有方法下)
|
|
75
135
|
*/
|
|
76
|
-
const INNERFIELDS = ["disposer"];
|
|
136
|
+
// const INNERFIELDS = ["disposer"];
|
|
77
137
|
|
|
78
138
|
/**
|
|
79
|
-
*
|
|
139
|
+
* 报错的形式避免输入字段和内部字段冲突,保证config下不包含内部预定字段(列表)
|
|
80
140
|
*/
|
|
81
|
-
/* istanbul ignore next */
|
|
82
|
-
function InternalFieldProtection(
|
|
83
|
-
|
|
84
|
-
|
|
141
|
+
/* istanbul ignore next: miniprogram-simulate(当前版本 1.6.1) 无法测试页面 */
|
|
142
|
+
function InternalFieldProtection(config: object | undefined, keys: string[]) {
|
|
143
|
+
if (!config) return;
|
|
144
|
+
const methodsConfigKeys = Object.keys(config);
|
|
145
|
+
for (const key of keys) {
|
|
85
146
|
if (methodsConfigKeys.includes(key)) {
|
|
86
147
|
throw Error(`${key}已被内部字段占用`);
|
|
87
148
|
}
|
|
@@ -97,14 +158,16 @@ function _funcConfigHandle(methodsConfig: object, configList: Record<string, Fun
|
|
|
97
158
|
};
|
|
98
159
|
}
|
|
99
160
|
}
|
|
100
|
-
|
|
161
|
+
/**
|
|
162
|
+
* 把函数列表配置放入一个配置中循环一次运行
|
|
163
|
+
*/
|
|
101
164
|
function funcConfigHandle(
|
|
102
|
-
finalOptionsForComponent:
|
|
165
|
+
finalOptionsForComponent: FinalOptionsOfComponent,
|
|
103
166
|
isPage: boolean | undefined,
|
|
104
167
|
funcOptions: FuncOptions,
|
|
105
168
|
) {
|
|
106
169
|
// 测试框架无法测试page情形
|
|
107
|
-
/* istanbul ignore next */
|
|
170
|
+
/* istanbul ignore next: miniprogram-simulate(当前版本 1.6.1) 无法测试页面 */
|
|
108
171
|
if (isPage) {
|
|
109
172
|
// 页面时 生命周期方法(即 on 开头的方法),(https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/component.html)
|
|
110
173
|
funcOptions.pageLifetimes && _funcConfigHandle(finalOptionsForComponent.methods ||= {}, funcOptions.pageLifetimes);
|
|
@@ -136,16 +199,18 @@ function funcFieldsCollect(
|
|
|
136
199
|
}
|
|
137
200
|
}
|
|
138
201
|
|
|
139
|
-
|
|
202
|
+
/**
|
|
203
|
+
* 其他字段加入到componentOptions对应字段配置中
|
|
204
|
+
*/
|
|
140
205
|
function otherFieldsHandle(
|
|
141
|
-
finalOptions:
|
|
206
|
+
finalOptions: FinalOptionsOfComponent,
|
|
142
207
|
rootComponentOptions: RootComponentTrueOptions,
|
|
143
208
|
) {
|
|
144
209
|
for (const key in rootComponentOptions) {
|
|
145
210
|
const config = rootComponentOptions[key];
|
|
146
211
|
if (Array.isArray(config)) {
|
|
147
212
|
// 好像只有behaviors是数组吧.
|
|
148
|
-
/* istanbul ignore next */
|
|
213
|
+
/* istanbul ignore next: miniprogram-simulate(当前版本 1.6.1) 无法测试页面 */
|
|
149
214
|
(finalOptions[key] ||= []).push(...config);
|
|
150
215
|
} else {
|
|
151
216
|
Object.assign(finalOptions[key] ||= {}, config);
|
|
@@ -153,16 +218,16 @@ function otherFieldsHandle(
|
|
|
153
218
|
}
|
|
154
219
|
}
|
|
155
220
|
/**
|
|
156
|
-
* 把events
|
|
221
|
+
* 把events字段放入到componentOptions.methods中
|
|
157
222
|
*/
|
|
158
|
-
function eventsHandle(componentOptions:
|
|
159
|
-
/* istanbul ignore next */
|
|
223
|
+
function eventsHandle(componentOptions: FinalOptionsOfComponent, eventsConfig: EventsConstraint) {
|
|
224
|
+
/* istanbul ignore next: miniprogram-simulate(当前版本 1.6.1) 无法测试页面 */
|
|
160
225
|
componentOptions.methods ||= {};
|
|
161
226
|
|
|
162
227
|
Object.assign(componentOptions.methods, eventsConfig);
|
|
163
228
|
}
|
|
164
229
|
function subComponentsHandle(
|
|
165
|
-
componentOptions:
|
|
230
|
+
componentOptions: FinalOptionsOfComponent,
|
|
166
231
|
subComponents: SubComponentTrueOptions[],
|
|
167
232
|
funcOptions: FuncOptions,
|
|
168
233
|
) {
|
|
@@ -186,10 +251,10 @@ function IsFullCustomEvents(
|
|
|
186
251
|
* 把customEvents字段配置变成函数放入到componentOptions.methods中
|
|
187
252
|
*/
|
|
188
253
|
function customEventsHandle(
|
|
189
|
-
componentOptions:
|
|
254
|
+
componentOptions: FinalOptionsOfComponent,
|
|
190
255
|
customEventsConfig: CustomEventConstraint,
|
|
191
256
|
) {
|
|
192
|
-
/* istanbul ignore next */
|
|
257
|
+
/* istanbul ignore next: miniprogram-simulate(当前版本 1.6.1) 无法测试页面 */
|
|
193
258
|
componentOptions.methods ||= {};
|
|
194
259
|
|
|
195
260
|
for (const key in customEventsConfig) {
|
|
@@ -206,7 +271,49 @@ function customEventsHandle(
|
|
|
206
271
|
}
|
|
207
272
|
}
|
|
208
273
|
}
|
|
274
|
+
/**
|
|
275
|
+
* 触发各个组件的页面load事件
|
|
276
|
+
*/
|
|
277
|
+
/* istanbul ignore next */
|
|
278
|
+
// function triggerCompLoad(this: Instance, props: object) {
|
|
279
|
+
// if (!this.__compLoadList__) return;
|
|
280
|
+
// this.__compLoadList__.forEach((loadFunc) => {
|
|
281
|
+
// loadFunc(props);
|
|
282
|
+
// });
|
|
283
|
+
// }
|
|
284
|
+
/* istanbul ignore next */
|
|
285
|
+
// function getPageInstance(pageId: string): Instance {
|
|
286
|
+
// const pagestack = getCurrentPages() as unknown as Instance[];
|
|
287
|
+
// let pageInstance: Instance;
|
|
288
|
+
// pagestack.some((instance) => {
|
|
289
|
+
// if (instance.getPageId() === pageId) {
|
|
290
|
+
// pageInstance = instance;
|
|
291
|
+
|
|
292
|
+
// return true;
|
|
293
|
+
// }
|
|
294
|
+
|
|
295
|
+
// return false;
|
|
296
|
+
// });
|
|
297
|
+
|
|
298
|
+
// // @ts-ignore pagestack中一定赋值了
|
|
299
|
+
// return pageInstance;
|
|
300
|
+
// }
|
|
301
|
+
/**
|
|
302
|
+
* 收集组件pageLifetimes下的load周期函数到页面实例的__loadFunList__
|
|
303
|
+
*/
|
|
304
|
+
/* istanbul ignore next */
|
|
305
|
+
// function collectLoadLifetimesOfComponent(this: Instance, finalOptionsForComponent: FinalOptionsOfComponent) {
|
|
306
|
+
// const loadFunc = finalOptionsForComponent.pageLifetimes?.load;
|
|
307
|
+
|
|
308
|
+
// console.log(loadFunc, finalOptionsForComponent);
|
|
309
|
+
|
|
310
|
+
// if (!loadFunc) return;
|
|
311
|
+
|
|
312
|
+
// const pageInstance = getPageInstance(this.getPageId());
|
|
313
|
+
// const __compLoadList__: Function[] = (pageInstance.__compLoadList__ ||= []);
|
|
209
314
|
|
|
315
|
+
// __compLoadList__.push(loadFunc.bind(this));
|
|
316
|
+
// }
|
|
210
317
|
/**
|
|
211
318
|
* 收集 rootComponentOptions 配置到 finalOptions 和 funcOptions 中
|
|
212
319
|
* @param finalOptions - 收集配置对象
|
|
@@ -214,7 +321,7 @@ function customEventsHandle(
|
|
|
214
321
|
* @param rootComponentOptions - 被收集的源配置对象
|
|
215
322
|
*/
|
|
216
323
|
function collectRootComponentOption(
|
|
217
|
-
finalOptions:
|
|
324
|
+
finalOptions: FinalOptionsOfComponent,
|
|
218
325
|
funcOptions: FuncOptions,
|
|
219
326
|
rootComponentOptions: RootComponentTrueOptions,
|
|
220
327
|
) {
|
|
@@ -239,11 +346,11 @@ function collectRootComponentOption(
|
|
|
239
346
|
export function collectOptionsForComponent(
|
|
240
347
|
rootComponentOption: RootComponentTrueOptions | undefined,
|
|
241
348
|
subComponentsList: SubComponentTrueOptions[] | undefined,
|
|
242
|
-
):
|
|
243
|
-
const finalOptionsForComponent:
|
|
349
|
+
): FinalOptionsOfComponent {
|
|
350
|
+
const finalOptionsForComponent: FinalOptionsOfComponent = {
|
|
244
351
|
// default options
|
|
245
352
|
options: {
|
|
246
|
-
|
|
353
|
+
addGlobalClass: true, // "styleIsolation": "apply-shared"
|
|
247
354
|
multipleSlots: true,
|
|
248
355
|
pureDataPattern: /^_/,
|
|
249
356
|
virtualHost: true,
|
|
@@ -267,24 +374,27 @@ export function collectOptionsForComponent(
|
|
|
267
374
|
if (subComponentsList && !isEmptyObject(subComponentsList)) {
|
|
268
375
|
subComponentsHandle(finalOptionsForComponent, subComponentsList, funcOptions);
|
|
269
376
|
}
|
|
270
|
-
//
|
|
271
|
-
/* istanbul ignore next */
|
|
272
|
-
|
|
273
|
-
funcConfigHandle(finalOptionsForComponent, rootComponentOption?.isPage, funcOptions);
|
|
274
|
-
}
|
|
377
|
+
// miniprogram-simulate(当前版本 1.6.1) 无法测试页面
|
|
378
|
+
/* istanbul ignore next: miniprogram-simulate(当前版本 1.6.1) 无法测试页面 */
|
|
379
|
+
funcConfigHandle(finalOptionsForComponent, rootComponentOption?.isPage, funcOptions);
|
|
275
380
|
|
|
276
|
-
finalOptionsForComponent.methods && InternalFieldProtection(finalOptionsForComponent.methods);
|
|
381
|
+
finalOptionsForComponent.methods && InternalFieldProtection(finalOptionsForComponent.methods, ["disposer"]);
|
|
277
382
|
|
|
278
|
-
|
|
279
|
-
finalOptionsForComponent.
|
|
383
|
+
/* istanbul ignore next: miniprogram-simulate(当前版本 1.6.1) 无法测试页面 */
|
|
384
|
+
finalOptionsForComponent.methods?.onLoad
|
|
385
|
+
&& hijack(finalOptionsForComponent.methods, "onLoad", [onLoadReceivedDataHandle, initComputed], []);
|
|
280
386
|
|
|
281
|
-
|
|
387
|
+
/* istanbul ignore next: miniprogram-simulate(当前版本 1.6.1) 无法测试页面 */
|
|
388
|
+
finalOptionsForComponent.pageLifetimes?.load
|
|
389
|
+
&& hijack(finalOptionsForComponent.pageLifetimes, "load", [onLoadReceivedDataHandle], []);
|
|
282
390
|
|
|
283
|
-
|
|
284
|
-
/* istanbul ignore next */
|
|
391
|
+
/* istanbul ignore next: miniprogram-simulate(当前版本 1.6.1) 无法测试页面 */
|
|
285
392
|
if (finalOptionsForComponent.isPage) {
|
|
393
|
+
// 页面时删除预设的虚拟组件字段
|
|
286
394
|
Reflect.deleteProperty(finalOptionsForComponent.options!, "virtualHost");
|
|
287
395
|
}
|
|
396
|
+
// BBeforeCreate在最后面,让BeforeCreate生命周期运行在最终建立组件时。
|
|
397
|
+
finalOptionsForComponent.behaviors!.push(BBeforeCreate);
|
|
288
398
|
|
|
289
399
|
return finalOptionsForComponent;
|
|
290
400
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { IfExtends } from "hry-types/src/Any/IfExtends";
|
|
2
2
|
import type { Func } from "hry-types/src/Misc/Func";
|
|
3
|
-
import type { WMComponent
|
|
3
|
+
import type { WMComponent } from "../../types/OfficialTypeAlias";
|
|
4
4
|
|
|
5
5
|
import type { LifetimesConstraint } from "../RootComponent/Lifetimes/LifetimesConstraint";
|
|
6
6
|
import type { RootComponentDoc } from "../RootComponent/RootComponentDoc";
|
|
@@ -12,6 +12,11 @@ import type { RootComponentOption } from "./RootComponent/RootComponentOption";
|
|
|
12
12
|
import type { SubComponentsOption } from "./SubComponents/SubComponentsOption";
|
|
13
13
|
|
|
14
14
|
import type { RootComponentTrueOptions } from "../RootComponent";
|
|
15
|
+
import type { ComputedConstraint } from "../RootComponent/Computed/ComputedConstraint";
|
|
16
|
+
import type { DataConstraint } from "../RootComponent/Data/DataConstraint";
|
|
17
|
+
import type { MethodsConstraint } from "../RootComponent/Methods/MethodsConstraint";
|
|
18
|
+
import type { PageLifetimesOption } from "../RootComponent/PageLifetimes/PageLifetimesOption";
|
|
19
|
+
import type { StoreConstraint } from "../RootComponent/Store/StoreConstraint";
|
|
15
20
|
import { collectOptionsForComponent } from "./collectOptionsForComponent";
|
|
16
21
|
|
|
17
22
|
type Path = `/${string}`;
|
|
@@ -54,23 +59,22 @@ export type FuncOptions = Record<"pageLifetimes" | "lifetimes" | "watch", Record
|
|
|
54
59
|
/**
|
|
55
60
|
* 最终传入原生Component的配置项
|
|
56
61
|
*/
|
|
57
|
-
export type
|
|
62
|
+
export type FinalOptionsOfComponent = {
|
|
58
63
|
isPage?: boolean;
|
|
59
64
|
options?: WMComponent.Options;
|
|
60
65
|
properties?: Record<string, any>;
|
|
61
|
-
data?:
|
|
62
|
-
store?:
|
|
63
|
-
computed?:
|
|
66
|
+
data?: DataConstraint;
|
|
67
|
+
store?: StoreConstraint;
|
|
68
|
+
computed?: ComputedConstraint;
|
|
64
69
|
observers?: Record<string, Func>;
|
|
65
70
|
behaviors?: string[];
|
|
66
|
-
methods?:
|
|
71
|
+
methods?: MethodsConstraint;
|
|
67
72
|
watch?: Record<string, Func>;
|
|
68
73
|
lifetimes?: LifetimesConstraint;
|
|
69
|
-
|
|
70
|
-
};
|
|
74
|
+
} & PageLifetimesOption<false, object>;
|
|
71
75
|
|
|
72
76
|
export const DefineComponent: DefineComponentConstructor = function(options): any {
|
|
73
77
|
Component(
|
|
74
|
-
collectOptionsForComponent(options.rootComponent as RootComponentTrueOptions
|
|
78
|
+
collectOptionsForComponent(options.rootComponent as RootComponentTrueOptions, options.subComponents),
|
|
75
79
|
);
|
|
76
80
|
};
|
|
@@ -2,11 +2,31 @@ import type { DuplicateFieldValidator } from "hry-types/src/Generic/DuplicateFie
|
|
|
2
2
|
|
|
3
3
|
import type { ComputedConstraint } from "./ComputedConstraint";
|
|
4
4
|
|
|
5
|
-
export type ComputedOption<TComputed extends ComputedConstraint,
|
|
5
|
+
export type ComputedOption<TComputed extends ComputedConstraint, CompareKeys extends PropertyKey> = {
|
|
6
6
|
/**
|
|
7
|
-
*
|
|
7
|
+
* computed字段, [类型约束ComputedConstraint](ComputedConstraint.ts)
|
|
8
|
+
* @remarks
|
|
9
|
+
*
|
|
10
|
+
* 函数体内,可通过this.data获取实例其他数据(依赖),setData发生时,若数据(依赖)发生变化则重新运行函数体并setData。
|
|
11
|
+
*
|
|
12
|
+
* 带重复字段检测(与properties、data、store字段比较)
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
*
|
|
16
|
+
* ```ts
|
|
17
|
+
* {
|
|
18
|
+
* data:{
|
|
19
|
+
* count:1
|
|
20
|
+
* },
|
|
21
|
+
* computed:{
|
|
22
|
+
* return this.data.count + 1
|
|
23
|
+
* }
|
|
24
|
+
|
|
25
|
+
* }
|
|
26
|
+
*
|
|
27
|
+
* ```
|
|
8
28
|
*/
|
|
9
29
|
computed?:
|
|
10
30
|
& TComputed
|
|
11
|
-
& DuplicateFieldValidator<TComputed,
|
|
31
|
+
& DuplicateFieldValidator<TComputed, CompareKeys>;
|
|
12
32
|
};
|
|
@@ -5,6 +5,4 @@ import type { ComputedConstraint } from "./ComputedConstraint";
|
|
|
5
5
|
* @param T - ComputedConstraint
|
|
6
6
|
* @returns object
|
|
7
7
|
*/
|
|
8
|
-
export type GetComputedDoc<TComputed extends ComputedConstraint> = TComputed
|
|
9
|
-
? { [k in keyof TComputed]: ReturnType<TComputed[k]> }
|
|
10
|
-
: never;
|
|
8
|
+
export type GetComputedDoc<TComputed extends ComputedConstraint> = { [k in keyof TComputed]: ReturnType<TComputed[k]> };
|
|
@@ -1,12 +1,8 @@
|
|
|
1
1
|
import { Checking, type Test } from "hry-types";
|
|
2
2
|
import type { ReadonlyDeep } from "hry-types/src/Any/_api";
|
|
3
|
-
import type { DetailedType } from "../../../../types/DetailedType";
|
|
4
3
|
import { RootComponent } from "../..";
|
|
5
4
|
import type { Mock_User } from "../../Properties/test/normalRequired.test";
|
|
6
5
|
|
|
7
|
-
/**
|
|
8
|
-
* computed字段约束为 [ComputedConstraint](../ComputedConstraint.ts)
|
|
9
|
-
*/
|
|
10
6
|
const RootDoc = RootComponent()({
|
|
11
7
|
properties: {
|
|
12
8
|
firstName: String,
|
|
@@ -14,10 +10,13 @@ const RootDoc = RootComponent()({
|
|
|
14
10
|
data: {
|
|
15
11
|
lastName: "lastName",
|
|
16
12
|
},
|
|
13
|
+
store: {
|
|
14
|
+
prefix: () => "hry-", // 模拟而已
|
|
15
|
+
},
|
|
17
16
|
computed: {
|
|
18
17
|
fullName() {
|
|
19
|
-
// 1 计算属性字段可以通过this.data 引用properties、data
|
|
20
|
-
return this.data.firstName + this.data.lastName;
|
|
18
|
+
// 1 计算属性字段可以通过this.data 引用properties、data、store字段
|
|
19
|
+
return this.data.prefix + this.data.firstName + this.data.lastName;
|
|
21
20
|
},
|
|
22
21
|
user() {
|
|
23
22
|
return {} as Mock_User;
|
|
@@ -35,12 +34,16 @@ const RootDoc = RootComponent()({
|
|
|
35
34
|
lastName: string;
|
|
36
35
|
fullName: string;
|
|
37
36
|
user: Mock_User;
|
|
37
|
+
prefix: string;
|
|
38
38
|
id_fullName: string;
|
|
39
39
|
readOnly: "str";
|
|
40
40
|
}>,
|
|
41
41
|
Test.Pass
|
|
42
42
|
>;
|
|
43
43
|
|
|
44
|
+
// @ts-expect-error 深度只读 不可赋值
|
|
45
|
+
this.data.user.id = "xxx";
|
|
46
|
+
|
|
44
47
|
return "str";
|
|
45
48
|
},
|
|
46
49
|
},
|
|
@@ -84,16 +87,3 @@ const EmptyComputedFieldDoc = RootComponent()({
|
|
|
84
87
|
});
|
|
85
88
|
|
|
86
89
|
Checking<typeof EmptyComputedFieldDoc, { methods: { M1: () => void } }, Test.Pass>;
|
|
87
|
-
|
|
88
|
-
RootComponent()({
|
|
89
|
-
isPage: true,
|
|
90
|
-
properties: {
|
|
91
|
-
obj: Object as DetailedType<{ name: string; age: number }>,
|
|
92
|
-
},
|
|
93
|
-
computed: {
|
|
94
|
-
age() {
|
|
95
|
-
// 页面实例对象不添加Null,因为计算属性初始化在onLoad之后(即properties已传入时,且不会传入Null)
|
|
96
|
-
return this.data.obj.age;
|
|
97
|
-
},
|
|
98
|
-
},
|
|
99
|
-
});
|