annil 1.5.14 → 1.6.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/assignOptions/index.d.ts +1 -0
- package/dist/api/DefineComponent/assignOptions/index.js +8 -0
- package/dist/api/DefineComponent/assignOptions/index.js.map +1 -1
- package/dist/api/RootComponent/Computed/ComputedOption.d.ts +2 -2
- package/dist/api/RootComponent/CustomEvents/CustomEventsOption.d.ts +2 -2
- package/dist/api/RootComponent/Data/DataOption.d.ts +2 -2
- package/dist/api/RootComponent/Instance/RootComponentInstance.d.ts +5 -2
- package/dist/api/RootComponent/Methods/MethodsOption.d.ts +2 -2
- package/dist/api/RootComponent/Properties/PropertiesOption.d.ts +2 -2
- package/dist/api/RootComponent/Store/StoreOption.d.ts +2 -2
- package/dist/api/RootComponent/index.d.ts +4 -2
- package/dist/api/RootComponent/index.js.map +1 -1
- package/dist/api/SubComponent/SubComputed/SubComputedOption.d.ts +3 -3
- package/dist/api/SubComponent/SubData/SubDataOption.d.ts +3 -4
- package/dist/api/SubComponent/SubEvents/SubEventsOptions.d.ts +2 -2
- package/dist/api/SubComponent/SubInherit/SubInheritOption.d.ts +2 -2
- package/dist/api/SubComponent/SubMethods/SubMethodsOption.d.ts +2 -2
- package/dist/api/SubComponent/SubStore/SubStoreOption.d.ts +3 -4
- package/dist/api/SubComponent/index.d.ts +4 -5
- package/dist/api/SubComponent/index.js.map +1 -1
- package/package.json +4 -6
- package/src/api/DefineComponent/assignOptions/index.ts +14 -1
- package/src/api/RootComponent/Computed/ComputedOption.ts +6 -1
- package/src/api/RootComponent/Computed/GetComputedDoc.ts +3 -1
- package/src/api/RootComponent/Computed/test/error.test.ts +2 -2
- package/src/api/RootComponent/Computed/test/normal.test.ts +13 -11
- package/src/api/RootComponent/CustomEvents/CustomEventsOption.ts +3 -3
- package/src/api/RootComponent/Data/DataOption.ts +2 -2
- package/src/api/RootComponent/Data/test/normal.test.ts +2 -0
- package/src/api/RootComponent/Instance/RootComponentInstance.ts +4 -1
- package/src/api/RootComponent/Instance/test/cloneData/error.test.ts +31 -0
- package/src/api/RootComponent/Instance/test/cloneData/normal.test.ts +53 -0
- package/src/api/RootComponent/Methods/MethodsOption.ts +2 -2
- package/src/api/RootComponent/Properties/PropertiesOption.ts +2 -2
- package/src/api/RootComponent/Properties/test/normalRequired.test.ts +3 -3
- package/src/api/RootComponent/Store/StoreOption.ts +2 -2
- package/src/api/RootComponent/index.ts +6 -2
- package/src/api/SubComponent/SubComputed/SubComputedOption.ts +3 -3
- package/src/api/SubComponent/SubComputed/test/error.test.ts +3 -2
- package/src/api/SubComponent/SubData/SubDataOption.ts +4 -5
- package/src/api/SubComponent/SubData/test/normal.test.ts +0 -11
- package/src/api/SubComponent/SubEvents/SubEventsOptions.ts +2 -2
- package/src/api/SubComponent/SubInherit/SubInheritOption.ts +2 -2
- package/src/api/SubComponent/SubInstance/test/cloneData/error.test.ts +22 -0
- package/src/api/SubComponent/SubInstance/test/cloneData/normal.test.ts +73 -0
- package/src/api/SubComponent/SubMethods/SubMethodsOption.ts +2 -2
- package/src/api/SubComponent/SubStore/SubStoreOption.ts +4 -5
- package/src/api/SubComponent/SubStore/test/error.test.ts +0 -5
- package/src/api/SubComponent/SubStore/test/normal.test.ts +1 -8
- package/src/api/SubComponent/index.ts +32 -21
- package/src/types/Extra.ts +1 -1
- package/dist/types/Extra.d.ts +0 -1
- package/dist/types/Extra.js +0 -2
- package/dist/types/Extra.js.map +0 -1
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.0](https://github.com/missannil/annil/compare/v1.5.15...v1.6.0) (2024-02-01)
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
### Features
|
|
11
|
+
|
|
12
|
+
* 组件实例增加cloneData字段 ([a2bc52d](https://github.com/missannil/annil/commit/a2bc52de20649a735ec860cdaae2bb411028b5fe))
|
|
13
|
+
|
|
14
|
+
## [1.5.15](https://github.com/missannil/annil/compare/v1.5.14...v1.5.15) (2024-01-15)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
### Bug Fixes
|
|
18
|
+
|
|
19
|
+
* subComputed约束 去除默认{} ([054cb48](https://github.com/missannil/annil/commit/054cb482cdc6c84e820d69d163b9cafe0c01de81))
|
|
20
|
+
|
|
7
21
|
## [1.5.14](https://github.com/missannil/annil/compare/v1.5.13...v1.5.14) (2024-01-15)
|
|
8
22
|
|
|
9
23
|
|
|
@@ -13,6 +13,7 @@ import type { ComputedCache } from "./computedWatchHandle/initComputed";
|
|
|
13
13
|
type InstanceInnerFields = {
|
|
14
14
|
data: OptionsInnerFields["data"];
|
|
15
15
|
disposer: Record<string, Func>;
|
|
16
|
+
cloneData: OptionsInnerFields["data"];
|
|
16
17
|
} & OptionsInnerFields["methods"];
|
|
17
18
|
export type Instance = (ComponentInstance | PageInstance) & InstanceInnerFields;
|
|
18
19
|
export type FuncOptions = Record<"pageLifetimes" | "lifetimes" | "watch" | "observers", Record<string, Func[]>>;
|
|
@@ -17,6 +17,13 @@ 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
|
+
}
|
|
20
27
|
function onLoadReceivedDataHandle(option) {
|
|
21
28
|
const innerData = option[INNERMARKER.url];
|
|
22
29
|
if (innerData === undefined)
|
|
@@ -193,6 +200,7 @@ export function assignOptions(defineComponentOption) {
|
|
|
193
200
|
&& hijack(finalOptionsForComponent.pageLifetimes, "load", [loadReceivedDataHandle]);
|
|
194
201
|
hijack(finalOptionsForComponent.methods, "onLoad", [onLoadReceivedDataHandle]);
|
|
195
202
|
hijack(finalOptionsForComponent.lifetimes, "attached", [isPageCheck(rootComponentOption === null || rootComponentOption === void 0 ? void 0 : rootComponentOption.isPage)]);
|
|
203
|
+
hijack(finalOptionsForComponent.lifetimes, "created", [addCloneDataToInstance]);
|
|
196
204
|
finalOptionsForComponent.isPage
|
|
197
205
|
&& finalOptionsForComponent.options && Reflect.deleteProperty(finalOptionsForComponent.options, "virtualHost");
|
|
198
206
|
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;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/api/DefineComponent/assignOptions/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { DuplicateFieldValidator } from "hry-types/src/Generic/DuplicateFieldValidator";
|
|
2
2
|
import type { ComputedConstraint } from "./ComputedConstraint";
|
|
3
|
-
export type ComputedOption<TComputed extends ComputedConstraint, CompareKeys extends PropertyKey> = {
|
|
4
|
-
computed?: TComputed & DuplicateFieldValidator<TComputed, CompareKeys>;
|
|
3
|
+
export type ComputedOption<TComputed extends ComputedConstraint, CompareKeys extends PropertyKey, Instance extends object> = {
|
|
4
|
+
computed?: TComputed & ThisType<Instance> & DuplicateFieldValidator<TComputed, CompareKeys>;
|
|
5
5
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { G } from "hry-types";
|
|
2
2
|
import type { CustomEventConstraint } from "./CustomEventConstraint";
|
|
3
3
|
export type CustomEventsOption<TCustomEvents extends CustomEventConstraint, EventsKeys extends PropertyKey> = {
|
|
4
|
-
customEvents?: TCustomEvents &
|
|
4
|
+
customEvents?: TCustomEvents & G.IllegalFieldValidator<TCustomEvents, "bubbles" | "composed" | "capturePhase", 1, "options"> & G.DuplicateFieldValidator<TCustomEvents, EventsKeys, "与events字段重复">;
|
|
5
5
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { G } from "hry-types";
|
|
2
2
|
export type DataOption<TData extends object, PropertiesKeys extends PropertyKey> = {
|
|
3
|
-
data?: TData &
|
|
3
|
+
data?: TData & G.DuplicateFieldValidator<TData, PropertiesKeys, "与properties字段重复">;
|
|
4
4
|
};
|
|
@@ -3,16 +3,19 @@ import type { IfExtends } from "hry-types/src/Any/IfExtends";
|
|
|
3
3
|
import type { ComputeIntersection } from "hry-types/src/Object/ComputeIntersection";
|
|
4
4
|
import type { IReactionDisposer } from "mobx";
|
|
5
5
|
import type { Assign } from "../../../types/Assign";
|
|
6
|
+
import type { ComputeObject } from "../../../types/ComputeObj";
|
|
6
7
|
import type { WMComponentInstance, WMInstanceMethods, WMPageInstance } from "../../../types/OfficialTypeAlias";
|
|
7
8
|
import type { IInjectData, IInjectMethods } from "../../InstanceInject/instanceConfig";
|
|
8
9
|
import type { CustomEventMethods } from "./CustomEventMethods";
|
|
9
10
|
import type { CustomSetData } from "./CustomSetData";
|
|
10
|
-
export type RootComponentInstance<TIsPage extends boolean, TMethods extends object, TDataForSetData extends object, AllData extends object, CustomEventsDoc extends object, StoreDoc extends object
|
|
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<IInjectData, ComputeIntersection<AllData>>>> = IfExtends<false, TIsPage, WMComponentInstance, WMPageInstance> & Omit<WMInstanceMethods<{}>, "setData"> & CustomSetData<TDataForSetData> & IfExtends<{}, StoreDoc, unknown, {
|
|
11
12
|
disposer: {
|
|
12
13
|
[k in keyof StoreDoc]: IReactionDisposer;
|
|
13
14
|
};
|
|
14
15
|
}> & Assign<IInjectMethods, TMethods & CustomEventMethods<CustomEventsDoc>> & {
|
|
15
|
-
data: ReadonlyDeep<
|
|
16
|
+
data: ReadonlyDeep<instanceData>;
|
|
17
|
+
} & {
|
|
18
|
+
cloneData: ComputeObject<Assign<IInjectData, ComputeIntersection<AllData>>>;
|
|
16
19
|
};
|
|
17
20
|
export type ComponentInstance = RootComponentInstance<false, {}, {}, {}, {}, {}>;
|
|
18
21
|
export type PageInstance = RootComponentInstance<true, {}, {}, {}, {}, {}>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { G } from "hry-types";
|
|
2
2
|
import type { MethodsConstraint } from "./MethodsConstraint";
|
|
3
3
|
export type MethodsOption<TMethods extends MethodsConstraint, DuplicateField extends PropertyKey> = {
|
|
4
|
-
methods?: TMethods &
|
|
4
|
+
methods?: TMethods & G.DuplicateFieldValidator<TMethods, DuplicateField>;
|
|
5
5
|
};
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { G } from "hry-types";
|
|
2
2
|
import type { Validators } from "../../../types/Validators";
|
|
3
3
|
import type { PropertiesConstraint } from "./PropertiesConstraint";
|
|
4
4
|
import type { PropertiesValueValidator } from "./PropertiesValueValidator";
|
|
5
5
|
export type PropertiesOption<TProperties extends PropertiesConstraint> = {
|
|
6
6
|
properties?: TProperties & Validators<[
|
|
7
7
|
PropertiesValueValidator<TProperties>,
|
|
8
|
-
|
|
8
|
+
G.IllegalFieldValidator<TProperties, "value" | "type" | "optionalTypes", 1>
|
|
9
9
|
]>;
|
|
10
10
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { G } from "hry-types";
|
|
2
2
|
import type { StoreConstraint } from "./StoreConstraint";
|
|
3
3
|
export type StoreOption<TStore extends StoreConstraint, TDuplicateKeys extends PropertyKey> = {
|
|
4
|
-
store?: TStore &
|
|
4
|
+
store?: TStore & G.DuplicateFieldValidator<TStore, TDuplicateKeys, "字段重复">;
|
|
5
5
|
};
|
|
@@ -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 { IInjectStore } from "../InstanceInject/instanceConfig";
|
|
8
|
+
import type { IInjectData, 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";
|
|
@@ -31,7 +31,9 @@ import type { GetStoreDoc } from "./Store/GeTStoreDoc";
|
|
|
31
31
|
import type { StoreConstraint } from "./Store/StoreConstraint";
|
|
32
32
|
import type { StoreOption } from "./Store/StoreOption";
|
|
33
33
|
import type { WatchOption } from "./Watch/WatchOption";
|
|
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)
|
|
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 & IInjectData>;
|
|
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>>;
|
|
35
37
|
type RootComponentConstructor<TComponentDocList extends ComponentDoc[]> = {
|
|
36
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, {}, {
|
|
37
39
|
isPage: true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/api/RootComponent/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/api/RootComponent/index.ts"],"names":[],"mappings":"AA2IA,MAAM,UAAU,aAAa;IAM3B,OAAO,CAAC,OAAY,EAAE,EAAE,CAAC,OAAO,CAAC;AACnC,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export type SubComputedOption<TComputed extends object, legal extends
|
|
3
|
-
computed?: TComputed &
|
|
1
|
+
import type { G } from "hry-types";
|
|
2
|
+
export type SubComputedOption<TComputed extends object, legal extends PropertyKey> = {
|
|
3
|
+
computed?: TComputed & G.IllegalFieldValidator<TComputed, legal, 0, "", "重复或无效的字段">;
|
|
4
4
|
};
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
data?: TSubData & V.IllegalFieldValidator<TSubData, legalKeys | InnerFields<TPrefix>, 0, "", "子组件无需此字段或与Inherit字段重复">;
|
|
1
|
+
import type { G } from "hry-types";
|
|
2
|
+
export type SubDataOption<TSubData extends object, legalKeys extends PropertyKey> = {
|
|
3
|
+
data?: TSubData & G.IllegalFieldValidator<TSubData, legalKeys, 0, "", "子组件无需此字段或与Inherit字段重复">;
|
|
5
4
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { G } from "hry-types";
|
|
2
2
|
export type SubEventsOption<TSubEvents, SubEventsDoc extends object, legalKeys extends PropertyKey> = {
|
|
3
|
-
events?: TSubEvents &
|
|
3
|
+
events?: TSubEvents & G.IllegalFieldValidator<SubEventsDoc, legalKeys>;
|
|
4
4
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { G } from "hry-types";
|
|
2
2
|
export type SubInheritOption<TInherit extends object, legalKeys extends PropertyKey> = {
|
|
3
|
-
inherit?: TInherit &
|
|
3
|
+
inherit?: TInherit & G.IllegalFieldValidator<TInherit, legalKeys, 0, "">;
|
|
4
4
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { G } from "hry-types";
|
|
2
2
|
import type { PrefixValidator } from "hry-types/src/Generic/PrefixValidator";
|
|
3
3
|
import type { SubMethodsConstraint } from "./SubMethodsConstraint";
|
|
4
4
|
export type SubMethodsOption<TSubMethods extends SubMethodsConstraint, TPrefix extends string, ExcludedKeys extends PropertyKey> = {
|
|
5
|
-
methods?: TSubMethods & PrefixValidator<TSubMethods, TPrefix> &
|
|
5
|
+
methods?: TSubMethods & PrefixValidator<TSubMethods, TPrefix> & G.DuplicateFieldValidator<TSubMethods, ExcludedKeys>;
|
|
6
6
|
};
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
store?: TSubStore & V.IllegalFieldValidator<TSubStore, legalKeys | InnerFields<TPrefix>, 0, "", "与inherit和data字段重复或前缀错误">;
|
|
1
|
+
import type { G } from "hry-types";
|
|
2
|
+
export type SubStoreOption<TSubStore extends object, legalKeys extends PropertyKey> = {
|
|
3
|
+
store?: TSubStore & G.IllegalFieldValidator<TSubStore, legalKeys, 0, "", "与inherit和data字段重复或前缀错误">;
|
|
5
4
|
};
|
|
@@ -5,7 +5,6 @@ import type { GetComponentPrefix } from "../../types/GetComponentPrefix";
|
|
|
5
5
|
import type { ReplacePrefix } from "../../types/ReplacePrefix";
|
|
6
6
|
import type { ComponentDoc } from "../DefineComponent/ReturnType/ComponentDoc";
|
|
7
7
|
import type { Func } from "hry-types/src/Misc/Func";
|
|
8
|
-
import type { Extra } from "../../types/Extra";
|
|
9
8
|
import type { InnerFields } from "../../types/InnerData";
|
|
10
9
|
import type { WMCompOtherOption } from "../../types/OfficialTypeAlias";
|
|
11
10
|
import type { Replace } from "../../types/Replace";
|
|
@@ -37,11 +36,11 @@ import type { CreateSubComponentDoc } from "./SubReturnType/CreateSubComponentDo
|
|
|
37
36
|
import type { SubStoreConstraint } from "./SubStore/SubStoreConstraint";
|
|
38
37
|
import type { SubStoreOption } from "./SubStore/SubStoreOption";
|
|
39
38
|
import type { SubWatchOption } from "./SubWatch/SubWatchOption";
|
|
40
|
-
type Options<RootDoc extends RootComponentDoc, IsPage extends boolean, CurrentCompDoc extends ComponentDoc, Prefix extends string, AllRootDataDoc extends object, TInherit extends object, TSubData extends object, TSubStore extends object, TSubComputed extends object, TEvents extends object, TSubMethods extends SubMethodsConstraint, InheritDoc extends object, SubDataDoc extends object, SubStoreDoc extends object, SubComputedDoc extends object, SubEventsDoc extends object, SubMethodsDoc extends object
|
|
39
|
+
type Options<RootDoc extends RootComponentDoc, IsPage extends boolean, CurrentCompDoc extends ComponentDoc, Prefix extends string, AllRootDataDoc extends object, TInherit extends object, TSubData extends object, TSubStore extends object, TSubComputed extends object, TEvents extends object, TSubMethods extends SubMethodsConstraint, InheritDoc extends object, SubDataDoc extends object, SubStoreDoc extends object, SubComputedDoc extends object, SubEventsDoc extends object, SubMethodsDoc extends object, CompDocKeys extends PropertyKey = keyof CurrentCompDoc["properties"]> = SubInheritOption<TInherit, CompDocKeys> & SubDataOption<TSubData, Exclude<CompDocKeys, (keyof InheritDoc)> | InnerFields<Prefix>> & SubStoreOption<TSubStore, Exclude<CompDocKeys, (keyof (InheritDoc & SubDataDoc))> | InnerFields<Prefix>> & SubComputedOption<TSubComputed, Exclude<CompDocKeys, (keyof (InheritDoc & SubDataDoc & SubStoreDoc))> | InnerFields<Prefix>> & SubEventsOption<TEvents, SubEventsDoc, keyof SubEventsConstraint<CurrentCompDoc>> & SubMethodsOption<TSubMethods, Prefix, keyof (CurrentCompDoc["customEvents"] & SubEventsDoc)> & SubPageLifetimesOption<IsPage, NonNullable<RootDoc["properties"]>> & SubLifetimesOption & SubWatchOption<SubComputedDoc & SubDataDoc & AllRootDataDoc & SubStoreDoc & IInjectStore> & Partial<Omit<WMCompOtherOption, "pageLifetimes" | "definitionFilter" | "export" | "observers" | "relations">> & SubObserversOption<SubComputedDoc & SubDataDoc & AllRootDataDoc & SubStoreDoc & IInjectStore> & ThisType<SubInstance<SubMethodsDoc & RootDoc["methods"], Replace<SubDataDoc, Required<CurrentCompDoc["properties"]>>, AllRootDataDoc & Replace<SubDataDoc & SubComputedDoc & SubStoreDoc, Required<CurrentCompDoc["properties"]>>, NonNullable<RootDoc["customEvents"]>, SubStoreDoc>>;
|
|
41
40
|
type SubComponentConstructor<TRootDoc extends RootComponentDoc, TOriginalCompDoc extends ComponentDoc, TSupplementalPrefix extends string = "", IsPage extends boolean = TRootDoc["isPage"] extends true ? true : false, CurrentPrefix extends string = `${GetComponentPrefix<TOriginalCompDoc>}${Capitalize<TSupplementalPrefix>}`, CurrentCompDoc extends ComponentDoc = IfExtends<TSupplementalPrefix, "", TOriginalCompDoc, ReplacePrefix<TOriginalCompDoc, CurrentPrefix>>, AllRootDataDoc extends object = Required<TRootDoc["properties"]> & TRootDoc["data"] & TRootDoc["computed"] & TRootDoc["store"]> = {
|
|
42
|
-
<TInherit extends InheritConstraint<AllRootDataDoc, CurrentCompDoc>, TSubData extends SubDataConstraint<Omit<Required<CurrentCompDoc["properties"]>, keyof InheritDoc> &
|
|
43
|
-
[k in keyof TSubStore]: ReturnType<TSubStore[k]
|
|
44
|
-
}>, SubComputedDoc extends object = IfExtends<SubComputedConstraint<Omit<Required<CurrentCompDoc["properties"]>, keyof (InheritDoc & SubDataDoc & SubStoreDoc)>>, TSubComputed, {}, GetSubComputedDoc<TSubComputed>>, SubEventsDoc extends object = IfExtends<SubEventsConstraint<CurrentCompDoc>, TEvents, {}, TEvents>, SubMethodsDoc extends object = TSubMethods, MissingRequiredField extends PropertyKey = Exclude<RequiredKeys<CurrentCompDoc["properties"]
|
|
41
|
+
<TInherit extends InheritConstraint<AllRootDataDoc, CurrentCompDoc>, TSubData extends SubDataConstraint<Omit<Required<CurrentCompDoc["properties"]>, keyof InheritDoc> & Record<InnerFields<CurrentPrefix>, unknown>>, TSubStore extends SubStoreConstraint<Omit<Required<CurrentCompDoc["properties"]>, keyof (InheritDoc & SubDataDoc)> & Record<InnerFields<CurrentPrefix>, unknown>>, TEvents extends SubEventsConstraint<CurrentCompDoc>, TSubComputed extends SubComputedConstraint<Omit<Required<CurrentCompDoc["properties"]>, keyof (InheritDoc & SubDataDoc & SubStoreDoc)> & Record<InnerFields<CurrentPrefix>, unknown>>, TSubMethods extends SubMethodsConstraint = {}, InheritDoc extends object = IfExtends<InheritConstraint<AllRootDataDoc, CurrentCompDoc>, TInherit, {}, TInherit>, SubDataDoc extends object = IfExtends<SubDataConstraint<Omit<Required<CurrentCompDoc["properties"]>, keyof InheritDoc> & Record<InnerFields<CurrentPrefix>, unknown>>, TSubData, {}, TSubData>, SubStoreDoc extends object = IfExtends<SubStoreConstraint<Omit<Required<CurrentCompDoc["properties"]>, keyof (InheritDoc & SubDataDoc)> & Record<InnerFields<CurrentPrefix>, unknown>>, TSubStore, {}, {
|
|
42
|
+
[k in keyof TSubStore]: ReturnType<NonNullable<TSubStore[k]>>;
|
|
43
|
+
}>, SubComputedDoc extends object = IfExtends<SubComputedConstraint<Omit<Required<CurrentCompDoc["properties"]>, keyof (InheritDoc & SubDataDoc & SubStoreDoc)> & Record<InnerFields<CurrentPrefix>, unknown>>, TSubComputed, {}, GetSubComputedDoc<TSubComputed>>, SubEventsDoc extends object = IfExtends<SubEventsConstraint<CurrentCompDoc>, TEvents, {}, TEvents>, SubMethodsDoc extends object = TSubMethods, MissingRequiredField extends PropertyKey = Exclude<RequiredKeys<NonNullable<CurrentCompDoc["properties"]>>, keyof (InheritDoc & SubDataDoc & SubStoreDoc & IfExtends<SubComputedConstraint<Omit<Required<CurrentCompDoc["properties"]>, keyof (InheritDoc & SubDataDoc & SubStoreDoc)>>, TSubComputed, {}, GetSubComputedDoc<TSubComputed>>)>>(options: Options<TRootDoc, IsPage, CurrentCompDoc, CurrentPrefix, AllRootDataDoc, TInherit, TSubData, TSubStore, TSubComputed, TEvents, TSubMethods, InheritDoc, SubDataDoc, SubStoreDoc, SubComputedDoc, SubEventsDoc, SubMethodsDoc>): CreateSubComponentDoc<NonNullable<TOriginalCompDoc["customEvents"]>, SubEventsDoc, MissingRequiredField>;
|
|
45
44
|
};
|
|
46
45
|
export declare function SubComponent<RootDoc extends RootComponentDoc, CompDoc extends ComponentDoc, Prefix extends string = "">(): IfExtends<EmptyObject, CompDoc, (opt: EmptyObject) => never, SubComponentConstructor<RootDoc, CompDoc, Prefix>>;
|
|
47
46
|
export type SubComponentTrueOptions = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/api/SubComponent/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/api/SubComponent/index.ts"],"names":[],"mappings":"AAyOA,MAAM,UAAU,YAAY;IAK1B,OAAO,CAAC,CAAC,OAAY,EAAE,EAAE,CAAC,OAAkC,CAAQ,CAAC;AACvE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "annil",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.6.0",
|
|
4
4
|
"description": "微信小程序(原生开发)插件",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "src/index.ts",
|
|
@@ -14,10 +14,8 @@
|
|
|
14
14
|
"prepare": "husky install",
|
|
15
15
|
"lint": "eslint . --fix && npm run fmt",
|
|
16
16
|
"fmt": "dprint fmt",
|
|
17
|
-
"
|
|
18
|
-
"
|
|
19
|
-
"type": "npm run test:type",
|
|
20
|
-
"jest": "npm run test:jest",
|
|
17
|
+
"type": "tsc --watch",
|
|
18
|
+
"jest": "jest --watch",
|
|
21
19
|
"build": "tsc -p tsconfig.build.json"
|
|
22
20
|
},
|
|
23
21
|
"devDependencies": {
|
|
@@ -28,6 +26,7 @@
|
|
|
28
26
|
"commitlint": "^17.6.5",
|
|
29
27
|
"eslint": "^8.54.0",
|
|
30
28
|
"eslint-plugin-tsdoc": "^0.2.17",
|
|
29
|
+
"hry-types": "^0.18.1",
|
|
31
30
|
"husky": "^8.0.3",
|
|
32
31
|
"jest": "^29.7.0",
|
|
33
32
|
"jest-environment-jsdom": "^29.7.0",
|
|
@@ -54,7 +53,6 @@
|
|
|
54
53
|
"author": "missannil",
|
|
55
54
|
"license": "MIT",
|
|
56
55
|
"peerDependencies": {
|
|
57
|
-
"hry-types": "^0.17.0",
|
|
58
56
|
"miniprogram-api-typings": "^3.12.2"
|
|
59
57
|
}
|
|
60
58
|
}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import type { Func } from "hry-types/src/Misc/_api";
|
|
2
2
|
import { BBeforeCreate } from "../../../behaviors/BbeforeCreated";
|
|
3
|
-
|
|
4
3
|
import type { Assign } from "../../../types/Assign";
|
|
5
4
|
import type { WMComponent } from "../../../types/OfficialTypeAlias";
|
|
6
5
|
import { deepClone } from "../../../utils/deepClone";
|
|
@@ -34,6 +33,7 @@ import { initStore } from "./initStore";
|
|
|
34
33
|
type InstanceInnerFields = {
|
|
35
34
|
data: OptionsInnerFields["data"];
|
|
36
35
|
disposer: Record<string, Func>;
|
|
36
|
+
cloneData: OptionsInnerFields["data"];
|
|
37
37
|
} & OptionsInnerFields["methods"];
|
|
38
38
|
|
|
39
39
|
export type Instance =
|
|
@@ -101,6 +101,13 @@ export function isPageCheck(isPage: boolean | undefined) {
|
|
|
101
101
|
};
|
|
102
102
|
}
|
|
103
103
|
|
|
104
|
+
function addCloneDataToInstance(this: Instance) {
|
|
105
|
+
this.cloneData = new Proxy(this.data, {
|
|
106
|
+
get: <T extends object>(target: T, key: keyof T) => {
|
|
107
|
+
return deepClone(target)[key];
|
|
108
|
+
},
|
|
109
|
+
});
|
|
110
|
+
}
|
|
104
111
|
/**
|
|
105
112
|
* 原生Component会对传入的对象字段匹配的properties字段setData赋值。不符合字段或Page时不会赋值。
|
|
106
113
|
* 此函数为给实例setData赋值,默认传递值与properties相符(ts类型安全)。
|
|
@@ -439,6 +446,12 @@ export function assignOptions(
|
|
|
439
446
|
[isPageCheck(rootComponentOption?.isPage)],
|
|
440
447
|
);
|
|
441
448
|
|
|
449
|
+
hijack(
|
|
450
|
+
finalOptionsForComponent.lifetimes!,
|
|
451
|
+
"created",
|
|
452
|
+
[addCloneDataToInstance],
|
|
453
|
+
);
|
|
454
|
+
|
|
442
455
|
// 页面时删除预设的虚拟组件字段
|
|
443
456
|
finalOptionsForComponent.isPage
|
|
444
457
|
&& finalOptionsForComponent.options && Reflect.deleteProperty(finalOptionsForComponent.options, "virtualHost");
|
|
@@ -2,7 +2,11 @@ import type { DuplicateFieldValidator } from "hry-types/src/Generic/DuplicateFie
|
|
|
2
2
|
|
|
3
3
|
import type { ComputedConstraint } from "./ComputedConstraint";
|
|
4
4
|
|
|
5
|
-
export type ComputedOption<
|
|
5
|
+
export type ComputedOption<
|
|
6
|
+
TComputed extends ComputedConstraint,
|
|
7
|
+
CompareKeys extends PropertyKey,
|
|
8
|
+
Instance extends object,
|
|
9
|
+
> = {
|
|
6
10
|
/**
|
|
7
11
|
* computed字段, [类型约束ComputedConstraint](ComputedConstraint.ts)
|
|
8
12
|
* @remarks
|
|
@@ -28,5 +32,6 @@ export type ComputedOption<TComputed extends ComputedConstraint, CompareKeys ext
|
|
|
28
32
|
*/
|
|
29
33
|
computed?:
|
|
30
34
|
& TComputed
|
|
35
|
+
& ThisType<Instance>
|
|
31
36
|
& DuplicateFieldValidator<TComputed, CompareKeys>;
|
|
32
37
|
};
|
|
@@ -5,4 +5,6 @@ import type { ComputedConstraint } from "./ComputedConstraint";
|
|
|
5
5
|
* @param T - ComputedConstraint
|
|
6
6
|
* @returns object
|
|
7
7
|
*/
|
|
8
|
-
export type GetComputedDoc<TComputed extends ComputedConstraint> = {
|
|
8
|
+
export type GetComputedDoc<TComputed extends ComputedConstraint> = {
|
|
9
|
+
[k in keyof TComputed]: ReturnType<TComputed[k]>;
|
|
10
|
+
};
|
|
@@ -10,6 +10,7 @@ const RootDoc = RootComponent()({
|
|
|
10
10
|
},
|
|
11
11
|
data: {
|
|
12
12
|
lastName: "lastName",
|
|
13
|
+
mock_User: {} as Mock_User,
|
|
13
14
|
},
|
|
14
15
|
store: {
|
|
15
16
|
prefix: () => "hry-", // 模拟而已
|
|
@@ -30,17 +31,18 @@ const RootDoc = RootComponent()({
|
|
|
30
31
|
// 3 this.data 类型是深度只读的
|
|
31
32
|
Checking<
|
|
32
33
|
typeof this.data,
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
34
|
+
{
|
|
35
|
+
firstName: string;
|
|
36
|
+
lastName: string;
|
|
37
|
+
mock_User: Mock_User;
|
|
38
|
+
fullName: string;
|
|
39
|
+
user: Mock_User;
|
|
40
|
+
prefix: string;
|
|
41
|
+
id_fullName: string;
|
|
42
|
+
readOnly: "str";
|
|
43
|
+
injectStr: string;
|
|
44
|
+
injectTheme: "light" | "dark" | undefined;
|
|
45
|
+
},
|
|
44
46
|
Test.Pass
|
|
45
47
|
>;
|
|
46
48
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { G } from "hry-types";
|
|
2
2
|
import type { CustomEventConstraint } from "./CustomEventConstraint";
|
|
3
3
|
|
|
4
4
|
export type CustomEventsOption<
|
|
@@ -36,6 +36,6 @@ export type CustomEventsOption<
|
|
|
36
36
|
*/
|
|
37
37
|
customEvents?:
|
|
38
38
|
& TCustomEvents
|
|
39
|
-
&
|
|
40
|
-
&
|
|
39
|
+
& G.IllegalFieldValidator<TCustomEvents, "bubbles" | "composed" | "capturePhase", 1, "options">
|
|
40
|
+
& G.DuplicateFieldValidator<TCustomEvents, EventsKeys, "与events字段重复">;
|
|
41
41
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { G } from "hry-types";
|
|
2
2
|
|
|
3
3
|
export type DataOption<TData extends object, PropertiesKeys extends PropertyKey> = {
|
|
4
4
|
/**
|
|
@@ -17,5 +17,5 @@ export type DataOption<TData extends object, PropertiesKeys extends PropertyKey>
|
|
|
17
17
|
*/
|
|
18
18
|
data?:
|
|
19
19
|
& TData
|
|
20
|
-
&
|
|
20
|
+
& G.DuplicateFieldValidator<TData, PropertiesKeys, "与properties字段重复">;
|
|
21
21
|
};
|
|
@@ -4,6 +4,7 @@ import type { ComputeIntersection } from "hry-types/src/Object/ComputeIntersecti
|
|
|
4
4
|
import type { IReactionDisposer } from "mobx";
|
|
5
5
|
|
|
6
6
|
import type { Assign } from "../../../types/Assign";
|
|
7
|
+
import type { ComputeObject } from "../../../types/ComputeObj";
|
|
7
8
|
import type { WMComponentInstance, WMInstanceMethods, WMPageInstance } from "../../../types/OfficialTypeAlias";
|
|
8
9
|
import type { IInjectData, IInjectMethods } from "../../InstanceInject/instanceConfig";
|
|
9
10
|
import type { CustomEventMethods } from "./CustomEventMethods";
|
|
@@ -15,6 +16,7 @@ export type RootComponentInstance<
|
|
|
15
16
|
AllData extends object,
|
|
16
17
|
CustomEventsDoc extends object,
|
|
17
18
|
StoreDoc extends object,
|
|
19
|
+
instanceData = ComputeObject<Assign<IInjectData, ComputeIntersection<AllData>>>,
|
|
18
20
|
> =
|
|
19
21
|
// 官方实例属性is options dataset等
|
|
20
22
|
& IfExtends<false, TIsPage, WMComponentInstance, WMPageInstance>
|
|
@@ -26,7 +28,8 @@ export type RootComponentInstance<
|
|
|
26
28
|
disposer: { [k in keyof StoreDoc]: IReactionDisposer };
|
|
27
29
|
}>
|
|
28
30
|
& Assign<IInjectMethods, TMethods & CustomEventMethods<CustomEventsDoc>>
|
|
29
|
-
& { data: ReadonlyDeep<
|
|
31
|
+
& { data: ReadonlyDeep<instanceData> }
|
|
32
|
+
& { cloneData: ComputeObject<Assign<IInjectData, ComputeIntersection<AllData>>> };
|
|
30
33
|
|
|
31
34
|
export type ComponentInstance = RootComponentInstance<false, {}, {}, {}, {}, {}>;
|
|
32
35
|
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { DetailedType } from "../../../../..";
|
|
2
|
+
import { RootComponent } from "../../..";
|
|
3
|
+
|
|
4
|
+
interface User {
|
|
5
|
+
readonly id: number;
|
|
6
|
+
readonly name: string;
|
|
7
|
+
slected: boolean;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
RootComponent()({
|
|
11
|
+
properties: {
|
|
12
|
+
num: Number,
|
|
13
|
+
user: Object as DetailedType<User>,
|
|
14
|
+
},
|
|
15
|
+
data: {
|
|
16
|
+
str: "123",
|
|
17
|
+
arr: [{}] as User[],
|
|
18
|
+
},
|
|
19
|
+
|
|
20
|
+
methods: {
|
|
21
|
+
M1() {
|
|
22
|
+
const cloneData = this.cloneData;
|
|
23
|
+
|
|
24
|
+
// @ts-expect-error 尽管cloneData去除了readonly,user.id属性依然是readonly
|
|
25
|
+
cloneData.user!.id = 1;
|
|
26
|
+
|
|
27
|
+
// @ts-expect-error arr[0].name属性依然是readonly
|
|
28
|
+
cloneData.arr[0].name = "zhao";
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
});
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { Checking, type Test } from "hry-types";
|
|
2
|
+
import type { _ReadonlyDeep } from "hry-types/src/Any/_api";
|
|
3
|
+
import type { DetailedType } from "../../../../..";
|
|
4
|
+
import { RootComponent } from "../../..";
|
|
5
|
+
|
|
6
|
+
interface User {
|
|
7
|
+
readonly id: number;
|
|
8
|
+
readonly name: string;
|
|
9
|
+
slected: boolean;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
RootComponent()({
|
|
13
|
+
properties: {
|
|
14
|
+
num: Number,
|
|
15
|
+
obj: Object as DetailedType<User>,
|
|
16
|
+
},
|
|
17
|
+
data: {
|
|
18
|
+
str: "123",
|
|
19
|
+
arr: [{}] as User[],
|
|
20
|
+
},
|
|
21
|
+
|
|
22
|
+
methods: {
|
|
23
|
+
M1() {
|
|
24
|
+
Checking<
|
|
25
|
+
typeof this.data,
|
|
26
|
+
_ReadonlyDeep<
|
|
27
|
+
{
|
|
28
|
+
injectTheme: "dark" | "light" | undefined;
|
|
29
|
+
injectStr: string;
|
|
30
|
+
str: string;
|
|
31
|
+
arr: User[];
|
|
32
|
+
num: number;
|
|
33
|
+
obj: User | null;
|
|
34
|
+
}
|
|
35
|
+
>,
|
|
36
|
+
Test.Pass
|
|
37
|
+
>;
|
|
38
|
+
|
|
39
|
+
Checking<
|
|
40
|
+
typeof this.cloneData,
|
|
41
|
+
{
|
|
42
|
+
injectTheme: "dark" | "light" | undefined;
|
|
43
|
+
injectStr: string;
|
|
44
|
+
str: string;
|
|
45
|
+
arr: User[];
|
|
46
|
+
num: number;
|
|
47
|
+
obj: User | null;
|
|
48
|
+
},
|
|
49
|
+
Test.Pass
|
|
50
|
+
>;
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { G } from "hry-types";
|
|
2
2
|
|
|
3
3
|
import type { MethodsConstraint } from "./MethodsConstraint";
|
|
4
4
|
|
|
@@ -11,5 +11,5 @@ export type MethodsOption<
|
|
|
11
11
|
*/
|
|
12
12
|
methods?:
|
|
13
13
|
& TMethods
|
|
14
|
-
&
|
|
14
|
+
& G.DuplicateFieldValidator<TMethods, DuplicateField>;
|
|
15
15
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { G } from "hry-types";
|
|
2
2
|
import type { Validators } from "../../../types/Validators";
|
|
3
3
|
import type { PropertiesConstraint } from "./PropertiesConstraint";
|
|
4
4
|
import type { PropertiesValueValidator } from "./PropertiesValueValidator";
|
|
@@ -21,6 +21,6 @@ export type PropertiesOption<
|
|
|
21
21
|
& Validators<[
|
|
22
22
|
PropertiesValueValidator<TProperties>,
|
|
23
23
|
// 放在最后一个,正常返回不是unknown 而是Record<string,unknown>
|
|
24
|
-
|
|
24
|
+
G.IllegalFieldValidator<TProperties, "value" | "type" | "optionalTypes", 1>,
|
|
25
25
|
]>;
|
|
26
26
|
};
|
|
@@ -9,10 +9,10 @@ import type { RequiredSingle, RequiredType, RequiredUnion } from "../PropertiesC
|
|
|
9
9
|
/**
|
|
10
10
|
* 共用测试对象类型
|
|
11
11
|
*/
|
|
12
|
-
export
|
|
13
|
-
id: string;
|
|
12
|
+
export interface Mock_User {
|
|
13
|
+
readonly id: string;
|
|
14
14
|
age?: number;
|
|
15
|
-
}
|
|
15
|
+
}
|
|
16
16
|
|
|
17
17
|
/**
|
|
18
18
|
* 共用测试对象类型
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { G } from "hry-types";
|
|
2
2
|
import type { StoreConstraint } from "./StoreConstraint";
|
|
3
3
|
|
|
4
4
|
export type StoreOption<TStore extends StoreConstraint, TDuplicateKeys extends PropertyKey> = {
|
|
@@ -16,5 +16,5 @@ export type StoreOption<TStore extends StoreConstraint, TDuplicateKeys extends P
|
|
|
16
16
|
*/
|
|
17
17
|
store?:
|
|
18
18
|
& TStore
|
|
19
|
-
&
|
|
19
|
+
& G.DuplicateFieldValidator<TStore, TDuplicateKeys, "字段重复">;
|
|
20
20
|
};
|
|
@@ -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 { IInjectStore } from "../InstanceInject/instanceConfig";
|
|
8
|
+
import type { IInjectData, 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";
|
|
@@ -55,7 +55,11 @@ type RootComponentOptions<
|
|
|
55
55
|
& CustomEventsOption<TCustomEvents, keyof EventsDoc>
|
|
56
56
|
& DataOption<TData, keyof PropertiesDoc>
|
|
57
57
|
& StoreOption<TStore, keyof (PropertiesDoc & DataDoc)>
|
|
58
|
-
& ComputedOption<
|
|
58
|
+
& ComputedOption<
|
|
59
|
+
TComputed,
|
|
60
|
+
keyof (PropertiesDoc & DataDoc & StoreDoc),
|
|
61
|
+
{ data: ComputeObject<DataDoc & Required<PropertiesDoc> & StoreDoc & ComputedDoc & IInjectData> }
|
|
62
|
+
>
|
|
59
63
|
& PageLifetimesOption<TIsPage, PropertiesDoc>
|
|
60
64
|
& LifetimesOption
|
|
61
65
|
& WatchOption<
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { G } from "hry-types";
|
|
2
2
|
export type SubComputedOption<
|
|
3
3
|
TComputed extends object,
|
|
4
|
-
legal extends
|
|
4
|
+
legal extends PropertyKey,
|
|
5
5
|
> = {
|
|
6
6
|
computed?:
|
|
7
7
|
& TComputed
|
|
8
|
-
&
|
|
8
|
+
& G.IllegalFieldValidator<TComputed, legal, 0, "", "重复或无效的字段">;
|
|
9
9
|
};
|
|
@@ -22,7 +22,7 @@ type OnlyPropsCompDoc = ComponentDoc<{
|
|
|
22
22
|
};
|
|
23
23
|
}>;
|
|
24
24
|
|
|
25
|
-
// 2 去除inhrit和data
|
|
25
|
+
// 2 去除inhrit和data字段后无组件字段约束时,只可写内部字段
|
|
26
26
|
SubComponent<{}, OnlyPropsCompDoc>()({
|
|
27
27
|
inherit: {
|
|
28
28
|
aaa_str: "wxml",
|
|
@@ -31,8 +31,9 @@ SubComponent<{}, OnlyPropsCompDoc>()({
|
|
|
31
31
|
aaa_num: 123,
|
|
32
32
|
},
|
|
33
33
|
computed: {
|
|
34
|
-
// @ts-expect-error ⚠️"重复或无效的字段"⚠️
|
|
35
34
|
_aaa_xxx() {},
|
|
35
|
+
// @ts-expect-error 只可写内部字段
|
|
36
|
+
aaa_yyy() {},
|
|
36
37
|
},
|
|
37
38
|
});
|
|
38
39
|
|
|
@@ -1,16 +1,15 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type { InnerFields } from "../../../types/InnerData";
|
|
1
|
+
import type { G } from "hry-types";
|
|
3
2
|
|
|
4
|
-
export type SubDataOption<TSubData extends object, legalKeys extends PropertyKey
|
|
3
|
+
export type SubDataOption<TSubData extends object, legalKeys extends PropertyKey> = {
|
|
5
4
|
/**
|
|
6
5
|
* 可写子组件所需数据和内部公共数据
|
|
7
6
|
* 非法字段检测和与Inherit字段的重复检测
|
|
8
7
|
*/
|
|
9
8
|
data?:
|
|
10
9
|
& TSubData
|
|
11
|
-
&
|
|
10
|
+
& G.IllegalFieldValidator<
|
|
12
11
|
TSubData,
|
|
13
|
-
legalKeys
|
|
12
|
+
legalKeys,
|
|
14
13
|
0,
|
|
15
14
|
"",
|
|
16
15
|
"子组件无需此字段或与Inherit字段重复"
|
|
@@ -39,17 +39,6 @@ SubComponent<{ data: { _num: number } }, CompDoc>()({
|
|
|
39
39
|
},
|
|
40
40
|
});
|
|
41
41
|
|
|
42
|
-
//
|
|
43
|
-
SubComponent<{ data: { _num: number } }, CompDoc>()({
|
|
44
|
-
inherit: {
|
|
45
|
-
aaa_str: "wxml",
|
|
46
|
-
},
|
|
47
|
-
data: {
|
|
48
|
-
// 4 可写isReady 特许字段 ExtraFields
|
|
49
|
-
aaa_isReady: false,
|
|
50
|
-
},
|
|
51
|
-
});
|
|
52
|
-
|
|
53
42
|
SubComponent<{}, CompDoc>()({
|
|
54
43
|
data: {
|
|
55
44
|
aaa_str: "a",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { G } from "hry-types";
|
|
2
2
|
|
|
3
3
|
export type SubEventsOption<TSubEvents, SubEventsDoc extends object, legalKeys extends PropertyKey> = {
|
|
4
4
|
/**
|
|
@@ -8,5 +8,5 @@ export type SubEventsOption<TSubEvents, SubEventsDoc extends object, legalKeys e
|
|
|
8
8
|
*/
|
|
9
9
|
events?:
|
|
10
10
|
& TSubEvents
|
|
11
|
-
&
|
|
11
|
+
& G.IllegalFieldValidator<SubEventsDoc, legalKeys>;
|
|
12
12
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { G } from "hry-types";
|
|
2
2
|
|
|
3
3
|
export type SubInheritOption<TInherit extends object, legalKeys extends PropertyKey> = {
|
|
4
4
|
/**
|
|
@@ -8,7 +8,7 @@ export type SubInheritOption<TInherit extends object, legalKeys extends Property
|
|
|
8
8
|
*/
|
|
9
9
|
inherit?:
|
|
10
10
|
& TInherit
|
|
11
|
-
&
|
|
11
|
+
& G.IllegalFieldValidator<
|
|
12
12
|
TInherit,
|
|
13
13
|
legalKeys,
|
|
14
14
|
0,
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { View } from "../../../../../thirdLib/wm";
|
|
2
|
+
import type { RootComponentDoc } from "../../../../RootComponent/RootComponentDoc";
|
|
3
|
+
import { SubComponent } from "../../..";
|
|
4
|
+
|
|
5
|
+
type RootDoc = RootComponentDoc<{
|
|
6
|
+
events: {
|
|
7
|
+
RootE1: () => string;
|
|
8
|
+
};
|
|
9
|
+
}>;
|
|
10
|
+
|
|
11
|
+
// 实例中只存在RootDoc和自身的methods字段
|
|
12
|
+
SubComponent<RootDoc, View>()({
|
|
13
|
+
lifetimes: {
|
|
14
|
+
created() {
|
|
15
|
+
// @ts-expect-error 不存在的方法 (Root事件方法不可调用)
|
|
16
|
+
this.RootE1;
|
|
17
|
+
|
|
18
|
+
// @ts-expect-error 不存在的方法
|
|
19
|
+
this.otherMethods();
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
});
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { Checking, type Test } from "hry-types";
|
|
2
|
+
import type { ComponentDoc } from "../../../../DefineComponent/ReturnType/ComponentDoc";
|
|
3
|
+
import type { Mock_User } from "../../../../RootComponent/Properties/test/normalRequired.test";
|
|
4
|
+
import type { RootComponentDoc } from "../../../../RootComponent/RootComponentDoc";
|
|
5
|
+
import { SubComponent } from "../../..";
|
|
6
|
+
|
|
7
|
+
type RootDoc = RootComponentDoc<{
|
|
8
|
+
properties: {
|
|
9
|
+
Pstr: string;
|
|
10
|
+
Pobj: Mock_User | null;
|
|
11
|
+
PoptionalObj?: Mock_User;
|
|
12
|
+
};
|
|
13
|
+
data: {
|
|
14
|
+
Dnum: number;
|
|
15
|
+
};
|
|
16
|
+
computed: {
|
|
17
|
+
Cnum: number;
|
|
18
|
+
};
|
|
19
|
+
methods: {
|
|
20
|
+
RootM: () => number;
|
|
21
|
+
};
|
|
22
|
+
customEvents: {
|
|
23
|
+
RootCus: string;
|
|
24
|
+
};
|
|
25
|
+
events: {
|
|
26
|
+
RootE1: () => string;
|
|
27
|
+
};
|
|
28
|
+
}>;
|
|
29
|
+
|
|
30
|
+
type CompDoc = ComponentDoc<{
|
|
31
|
+
properties: {
|
|
32
|
+
aaa_str: string;
|
|
33
|
+
};
|
|
34
|
+
customEvents: {
|
|
35
|
+
aaa_num: number;
|
|
36
|
+
};
|
|
37
|
+
}>;
|
|
38
|
+
|
|
39
|
+
SubComponent<RootDoc, CompDoc>()({
|
|
40
|
+
data: {
|
|
41
|
+
aaa_str: "str",
|
|
42
|
+
_aaa_num: 123,
|
|
43
|
+
},
|
|
44
|
+
computed: {
|
|
45
|
+
_aaa_isReady() {
|
|
46
|
+
return false;
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
|
|
50
|
+
lifetimes: {
|
|
51
|
+
created() {
|
|
52
|
+
Checking<
|
|
53
|
+
typeof this.cloneData,
|
|
54
|
+
{
|
|
55
|
+
// inheritData
|
|
56
|
+
injectTheme: "dark" | "light" | undefined;
|
|
57
|
+
injectStr: string;
|
|
58
|
+
// RootData
|
|
59
|
+
Pstr: string;
|
|
60
|
+
Pobj: Mock_User | null;
|
|
61
|
+
PoptionalObj: Mock_User;
|
|
62
|
+
Dnum: number;
|
|
63
|
+
Cnum: number;
|
|
64
|
+
// 自身Data类型与CompDoc类型相同
|
|
65
|
+
aaa_str: string;
|
|
66
|
+
_aaa_isReady: boolean;
|
|
67
|
+
_aaa_num: number;
|
|
68
|
+
},
|
|
69
|
+
Test.Pass
|
|
70
|
+
>;
|
|
71
|
+
},
|
|
72
|
+
},
|
|
73
|
+
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { G } from "hry-types";
|
|
2
2
|
import type { PrefixValidator } from "hry-types/src/Generic/PrefixValidator";
|
|
3
3
|
import type { SubMethodsConstraint } from "./SubMethodsConstraint";
|
|
4
4
|
|
|
@@ -13,5 +13,5 @@ export type SubMethodsOption<
|
|
|
13
13
|
methods?:
|
|
14
14
|
& TSubMethods
|
|
15
15
|
& PrefixValidator<TSubMethods, TPrefix>
|
|
16
|
-
&
|
|
16
|
+
& G.DuplicateFieldValidator<TSubMethods, ExcludedKeys>;
|
|
17
17
|
};
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type { InnerFields } from "../../../types/InnerData";
|
|
1
|
+
import type { G } from "hry-types";
|
|
3
2
|
|
|
4
|
-
export type SubStoreOption<TSubStore extends object, legalKeys extends PropertyKey
|
|
3
|
+
export type SubStoreOption<TSubStore extends object, legalKeys extends PropertyKey> = {
|
|
5
4
|
/**
|
|
6
5
|
* 全局响应式数据字段,全局store对应数据变化实例对应数据自动setData。
|
|
7
6
|
* 约束为组件properties字段去除inherit和data的剩余字段和内部字段
|
|
@@ -18,10 +17,10 @@ export type SubStoreOption<TSubStore extends object, legalKeys extends PropertyK
|
|
|
18
17
|
*/
|
|
19
18
|
store?:
|
|
20
19
|
& TSubStore
|
|
21
|
-
&
|
|
20
|
+
& G.IllegalFieldValidator<
|
|
22
21
|
TSubStore,
|
|
23
22
|
// legalKeys,
|
|
24
|
-
legalKeys
|
|
23
|
+
legalKeys,
|
|
25
24
|
0,
|
|
26
25
|
"",
|
|
27
26
|
"与inherit和data字段重复或前缀错误"
|
|
@@ -25,7 +25,6 @@ SubComponent<{
|
|
|
25
25
|
},
|
|
26
26
|
data: {
|
|
27
27
|
aaa_num: 20,
|
|
28
|
-
aaa_isReady: false,
|
|
29
28
|
},
|
|
30
29
|
store: {
|
|
31
30
|
// @ts-expect-error 1 与 inherit 字段重复
|
|
@@ -34,9 +33,5 @@ SubComponent<{
|
|
|
34
33
|
aaa_num: () => user.age,
|
|
35
34
|
// @ts-expect-error 3 超出约束字段
|
|
36
35
|
num: () => user.age,
|
|
37
|
-
// @ts-expect-error 4 于data字段重复
|
|
38
|
-
aaa_isReady() {
|
|
39
|
-
return false;
|
|
40
|
-
},
|
|
41
36
|
},
|
|
42
37
|
});
|
|
@@ -25,13 +25,6 @@ SubComponent<{}, DocA>()({
|
|
|
25
25
|
SubComponent<{}, DocA, "a">()({
|
|
26
26
|
store: {
|
|
27
27
|
// 2 可写内部字段
|
|
28
|
-
|
|
29
|
-
},
|
|
30
|
-
});
|
|
31
|
-
|
|
32
|
-
SubComponent<{}, DocA, "a">()({
|
|
33
|
-
store: {
|
|
34
|
-
// 3 可写特许字段
|
|
35
|
-
aaaA_isReady: () => false,
|
|
28
|
+
_aaaA_xxx: () => user.age,
|
|
36
29
|
},
|
|
37
30
|
});
|
|
@@ -6,7 +6,7 @@ import type { ReplacePrefix } from "../../types/ReplacePrefix";
|
|
|
6
6
|
import type { ComponentDoc } from "../DefineComponent/ReturnType/ComponentDoc";
|
|
7
7
|
|
|
8
8
|
import type { Func } from "hry-types/src/Misc/Func";
|
|
9
|
-
|
|
9
|
+
|
|
10
10
|
import type { InnerFields } from "../../types/InnerData";
|
|
11
11
|
import type { WMCompOtherOption } from "../../types/OfficialTypeAlias";
|
|
12
12
|
import type { Replace } from "../../types/Replace";
|
|
@@ -57,28 +57,28 @@ type Options<
|
|
|
57
57
|
SubComputedDoc extends object,
|
|
58
58
|
SubEventsDoc extends object,
|
|
59
59
|
SubMethodsDoc extends object,
|
|
60
|
+
CompDocKeys extends PropertyKey = keyof CurrentCompDoc["properties"],
|
|
60
61
|
> =
|
|
61
|
-
& SubInheritOption<TInherit,
|
|
62
|
+
& SubInheritOption<TInherit, CompDocKeys>
|
|
62
63
|
& SubDataOption<
|
|
63
64
|
TSubData,
|
|
64
|
-
|
|
65
|
-
Prefix
|
|
65
|
+
// 合法的配置
|
|
66
|
+
Exclude<CompDocKeys, (keyof InheritDoc)> | InnerFields<Prefix>
|
|
66
67
|
>
|
|
67
68
|
& SubStoreOption<
|
|
68
69
|
TSubStore,
|
|
69
|
-
|
|
70
|
-
Prefix
|
|
70
|
+
// 合法的配置
|
|
71
|
+
Exclude<CompDocKeys, (keyof (InheritDoc & SubDataDoc))> | InnerFields<Prefix>
|
|
71
72
|
>
|
|
72
73
|
& SubComputedOption<
|
|
73
74
|
TSubComputed,
|
|
74
|
-
// AllRootDataDoc & SubDataDoc & SubDataDoc & SubComputedDoc,
|
|
75
75
|
// 合法的配置
|
|
76
|
-
|
|
76
|
+
Exclude<CompDocKeys, (keyof (InheritDoc & SubDataDoc & SubStoreDoc))> | InnerFields<Prefix>
|
|
77
77
|
>
|
|
78
78
|
// 无需与根组件的events字段重复检测,因为根组件多了bubbles字段,一定不会重复
|
|
79
79
|
& SubEventsOption<TEvents, SubEventsDoc, keyof SubEventsConstraint<CurrentCompDoc>>
|
|
80
80
|
& SubMethodsOption<TSubMethods, Prefix, keyof (CurrentCompDoc["customEvents"] & SubEventsDoc)>
|
|
81
|
-
& SubPageLifetimesOption<IsPage, RootDoc["properties"]
|
|
81
|
+
& SubPageLifetimesOption<IsPage, NonNullable<RootDoc["properties"]>>
|
|
82
82
|
& SubLifetimesOption
|
|
83
83
|
& SubWatchOption<
|
|
84
84
|
& SubComputedDoc
|
|
@@ -100,7 +100,7 @@ type Options<
|
|
|
100
100
|
SubMethodsDoc & RootDoc["methods"],
|
|
101
101
|
Replace<SubDataDoc, Required<CurrentCompDoc["properties"]>>,
|
|
102
102
|
AllRootDataDoc & Replace<SubDataDoc & SubComputedDoc & SubStoreDoc, Required<CurrentCompDoc["properties"]>>,
|
|
103
|
-
RootDoc["customEvents"]
|
|
103
|
+
NonNullable<RootDoc["customEvents"]>,
|
|
104
104
|
SubStoreDoc
|
|
105
105
|
>
|
|
106
106
|
>;
|
|
@@ -131,38 +131,49 @@ type SubComponentConstructor<
|
|
|
131
131
|
TInherit extends InheritConstraint<AllRootDataDoc, CurrentCompDoc>,
|
|
132
132
|
TSubData extends SubDataConstraint<
|
|
133
133
|
& Omit<Required<CurrentCompDoc["properties"]>, keyof InheritDoc>
|
|
134
|
-
& Extra<CurrentPrefix> // 加入特许字段 isReady
|
|
135
134
|
& Record<InnerFields<CurrentPrefix>, unknown> // 内部字段
|
|
136
135
|
>,
|
|
137
136
|
TSubStore extends SubStoreConstraint<
|
|
138
|
-
& Omit<Required<CurrentCompDoc["properties"]
|
|
137
|
+
& Omit<Required<CurrentCompDoc["properties"]>, keyof (InheritDoc & SubDataDoc)>
|
|
139
138
|
& Record<InnerFields<CurrentPrefix>, unknown> // 内部字段
|
|
140
139
|
>,
|
|
141
140
|
TEvents extends SubEventsConstraint<CurrentCompDoc>,
|
|
142
141
|
// 加默认值计算字段无提示且需要手写返回类型,不加watch无法对computed监控
|
|
143
142
|
TSubComputed extends SubComputedConstraint<
|
|
144
|
-
& Omit<
|
|
145
|
-
|
|
143
|
+
& Omit<
|
|
144
|
+
Required<CurrentCompDoc["properties"]>,
|
|
145
|
+
keyof (InheritDoc & SubDataDoc & SubStoreDoc)
|
|
146
|
+
>
|
|
146
147
|
& Record<InnerFields<CurrentPrefix>, unknown> // 内部字段
|
|
147
|
-
|
|
148
|
+
>,
|
|
148
149
|
TSubMethods extends SubMethodsConstraint = {},
|
|
149
150
|
InheritDoc extends object = IfExtends<InheritConstraint<AllRootDataDoc, CurrentCompDoc>, TInherit, {}, TInherit>,
|
|
150
151
|
SubDataDoc extends object = IfExtends<
|
|
151
|
-
SubDataConstraint<
|
|
152
|
+
SubDataConstraint<
|
|
153
|
+
& Omit<Required<CurrentCompDoc["properties"]>, keyof InheritDoc>
|
|
154
|
+
& Record<InnerFields<CurrentPrefix>, unknown>
|
|
155
|
+
>,
|
|
152
156
|
TSubData,
|
|
153
157
|
{},
|
|
154
158
|
TSubData
|
|
155
159
|
>,
|
|
156
160
|
SubStoreDoc extends object = IfExtends<
|
|
157
|
-
SubStoreConstraint<
|
|
161
|
+
SubStoreConstraint<
|
|
162
|
+
& Omit<Required<CurrentCompDoc["properties"]>, keyof (InheritDoc & SubDataDoc)>
|
|
163
|
+
& Record<InnerFields<CurrentPrefix>, unknown>
|
|
164
|
+
>,
|
|
158
165
|
TSubStore,
|
|
159
166
|
{},
|
|
160
|
-
{ [k in keyof TSubStore]: ReturnType<TSubStore[k]
|
|
167
|
+
{ [k in keyof TSubStore]: ReturnType<NonNullable<TSubStore[k]>> }
|
|
161
168
|
>,
|
|
162
169
|
// 无效的计算
|
|
163
170
|
SubComputedDoc extends object = IfExtends<
|
|
164
171
|
SubComputedConstraint<
|
|
165
|
-
Omit<
|
|
172
|
+
& Omit<
|
|
173
|
+
Required<CurrentCompDoc["properties"]>,
|
|
174
|
+
keyof (InheritDoc & SubDataDoc & SubStoreDoc)
|
|
175
|
+
>
|
|
176
|
+
& Record<InnerFields<CurrentPrefix>, unknown> // 内部字段
|
|
166
177
|
>,
|
|
167
178
|
TSubComputed,
|
|
168
179
|
{},
|
|
@@ -177,7 +188,7 @@ type SubComponentConstructor<
|
|
|
177
188
|
SubMethodsDoc extends object = TSubMethods,
|
|
178
189
|
// 缺失的必传字段(配置中inhrit,data,computed的字段不包含的必传字段)
|
|
179
190
|
MissingRequiredField extends PropertyKey = Exclude<
|
|
180
|
-
RequiredKeys<CurrentCompDoc["properties"]
|
|
191
|
+
RequiredKeys<NonNullable<CurrentCompDoc["properties"]>>,
|
|
181
192
|
keyof (
|
|
182
193
|
& InheritDoc
|
|
183
194
|
& SubDataDoc
|
|
@@ -213,7 +224,7 @@ type SubComponentConstructor<
|
|
|
213
224
|
SubEventsDoc,
|
|
214
225
|
SubMethodsDoc
|
|
215
226
|
>,
|
|
216
|
-
): CreateSubComponentDoc<TOriginalCompDoc["customEvents"]
|
|
227
|
+
): CreateSubComponentDoc<NonNullable<TOriginalCompDoc["customEvents"]>, SubEventsDoc, MissingRequiredField>;
|
|
217
228
|
};
|
|
218
229
|
|
|
219
230
|
/**
|
package/src/types/Extra.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export type Extra<Prefix extends string> = Record<`${Prefix}_isReady`, boolean>;
|
|
1
|
+
// export type Extra<Prefix extends string> = Record<`${Prefix}_isReady`, boolean>;
|
package/dist/types/Extra.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export type Extra<Prefix extends string> = Record<`${Prefix}_isReady`, boolean>;
|
package/dist/types/Extra.js
DELETED
package/dist/types/Extra.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Extra.js","sourceRoot":"","sources":["../../src/types/Extra.ts"],"names":[],"mappings":""}
|