annil 1.5.3 → 1.5.5

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.
Files changed (43) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +27 -22
  3. package/dist/api/DefineComponent/collectOptionsForComponent.d.ts +3 -2
  4. package/dist/api/DefineComponent/collectOptionsForComponent.js +23 -10
  5. package/dist/api/DefineComponent/collectOptionsForComponent.js.map +1 -1
  6. package/dist/api/RootComponent/Lifetimes/LifetimesOption.d.ts +2 -2
  7. package/dist/api/RootComponent/PageLifetimes/PageLifetimesOption.d.ts +1 -1
  8. package/dist/api/RootComponent/RootComponentDoc.d.ts +5 -18
  9. package/dist/api/RootComponent/index.d.ts +1 -1
  10. package/dist/api/SubComponent/SubLifetimes/SubLifetimesOption.d.ts +2 -2
  11. package/dist/api/SubComponent/SubStore/SubStoreConstraint.js +2 -0
  12. package/dist/api/SubComponent/SubStore/SubStoreConstraint.js.map +1 -0
  13. package/dist/api/SubComponent/SubStore/SubStoreOption.d.ts +2 -2
  14. package/dist/api/SubComponent/index.d.ts +2 -2
  15. package/dist/api/SubComponent/index.js.map +1 -1
  16. package/dist/behaviors/BComputedAndWatch/isEqual.js +1 -1
  17. package/dist/behaviors/BComputedAndWatch/isEqual.js.map +1 -1
  18. package/package.json +1 -1
  19. package/src/api/DefineComponent/collectOptionsForComponent.ts +57 -44
  20. package/src/api/RootComponent/Data/test/normal.test.ts +1 -1
  21. package/src/api/RootComponent/Events/test/normal.test.ts +2 -2
  22. package/src/api/RootComponent/Lifetimes/LifetimesOption.ts +29 -32
  23. package/src/api/RootComponent/Lifetimes/test/error.test.ts +1 -7
  24. package/src/api/RootComponent/Methods/test/mormal.test.ts +1 -1
  25. package/src/api/RootComponent/PageLifetimes/PageLifetimesOption.ts +1 -4
  26. package/src/api/RootComponent/PageLifetimes/test/normal.test.ts +13 -4
  27. package/src/api/RootComponent/RootComponentDoc.ts +10 -22
  28. package/src/api/RootComponent/Watch/test/WtachInject.test.ts +1 -1
  29. package/src/api/RootComponent/index.ts +2 -2
  30. package/src/api/SubComponent/SubData/SubDataConstraint.ts +1 -1
  31. package/src/api/SubComponent/SubInherit/SubInheritConstraint.ts +1 -1
  32. package/src/api/SubComponent/SubInstance/test/normal.test.ts +0 -4
  33. package/src/api/SubComponent/SubLifetimes/SubLifetimesOption.ts +2 -2
  34. package/src/api/SubComponent/SubStore/SubStoreOption.ts +3 -2
  35. package/src/api/SubComponent/SubStore/test/error.test.ts +1 -3
  36. package/src/api/SubComponent/SubStore/test/normal.test.ts +12 -2
  37. package/src/api/SubComponent/SubWatch/test/WatchProperties.test.ts +161 -0
  38. package/src/api/SubComponent/index.ts +3 -4
  39. package/src/behaviors/BComputedAndWatch/isEqual.ts +2 -1
  40. package/dist/api/SubComponent/SubStore/SubDataConstraint.js +0 -2
  41. package/dist/api/SubComponent/SubStore/SubDataConstraint.js.map +0 -1
  42. /package/dist/api/SubComponent/SubStore/{SubDataConstraint.d.ts → SubStoreConstraint.d.ts} +0 -0
  43. /package/src/api/SubComponent/SubStore/{SubDataConstraint.ts → SubStoreConstraint.ts} +0 -0
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.5.5](https://github.com/missannil/annil/compare/v1.5.4...v1.5.5) (2024-01-01)
8
+
9
+
10
+ ### Bug Fixes
11
+
12
+ * 修复isPage错误 ([301366d](https://github.com/missannil/annil/commit/301366d9b30f909c59db727db53847bd789cb144))
13
+
14
+ ## [1.5.4](https://github.com/missannil/annil/compare/v1.5.3...v1.5.4) (2023-12-25)
15
+
16
+
17
+ ### Bug Fixes
18
+
19
+ * isPagecheck ([03f6452](https://github.com/missannil/annil/commit/03f64523dc5f7da32616ec5c0ecfc4f50d4d4b7d))
20
+
7
21
  ## [1.5.3](https://github.com/missannil/annil/compare/v1.5.2...v1.5.3) (2023-12-22)
8
22
 
9
23
 
package/README.md CHANGED
@@ -23,38 +23,40 @@
23
23
 
24
24
  ### 简介
25
25
 
26
- annil(安奈儿)是微信小程序原生开发插件。
26
+ annil(安奈儿)是微信小程序原生开发插件,相较于原生API,使用annil会大大提高开发效率和代码质量。
27
27
 
28
28
  ### 特点
29
29
 
30
- - **新的组件构建API**
30
+ - **组件构建API功能更强大**
31
31
 
32
- 新的组件构建API加入了[computed](./doc/fields/computed.md)、[watch](./doc/fields/watch.md)、[store](./doc/fields/store.md)(基于mobx的全局响应式数据)`等功能,使开发更便捷。
32
+ 新的组件构建API加入了[computed](./doc/demo/computed.md)、[watch](./doc/demo/watch.md)、[store](./doc/demo/store.md)(基于mobx的全局响应式数据)`等功能,使开发更便捷。
33
33
 
34
34
  - **复杂组件解决方案**
35
35
 
36
- 新的组件构建方案(根组件 + 子组件(可选)),组件逻辑与wxml元素(标签)一一对应。解决书写复杂组件时代码逻辑耦合的问题。
36
+ 新的组件构建方案(根组件 + 子组件(可选)),组件逻辑与wxml标签一一对应。解决书写复杂组件时不同组件代码耦合的问题。
37
+ - **专为typescript开发设计**
37
38
 
38
- - **组件类型概念**
39
-
40
- 在使用ts开发时,新的组件构建API返回的类型叫组件文档类型,好比传统组件(UI)库为每个组件书写的使用文档,在做为子组件构建新组件(页面)时,子组件API要求使用者输入组件类型,让使用者知道该定义哪些字段(类型提示)并确保字段值类型正确(类型约束和检测)。这样实现了一个页面中所有子组件之间的类型耦合,无论组件嵌套多少层,无论哪层组件数据类型发生改变,所有相关组件类型都会得到感知。当您修改、重构代码时,只要无类型报错(tsc --noEmit --watch)就不会有运行时报错的心智负担。
39
+ annil是专为TS开发而设计的,通过类型提示、约束、检测,提升开发效率,避免运行时错误的发生。使用js开发时可忽略开发文档中的ts部分。
41
40
 
42
- - **类型约束代码规范**
41
+ - **组件类型概念**
43
42
 
44
- js开发时可以任意`setData`一个未声明变量或通过`this.triggerEvent('name',unknown)`触发组件自定义事件。这是js的特点,但易读性和易维护性差。(ts开发时)API通过类型报错形式对[代码规范](./doc/standard.md)给了强制约束
43
+ 新的组件构建API(DefineComponent)返回的类型叫组件(文档)类型,好比传统组件(UI)库为每个组件书写的使用文档,在做为子组件构建新组件(页面)时,子组件API(SubComponent)要求使用者输入组件类型,在定义选项字段时,会得到类型提示、约束和检测。这样实现了一个页面中所有子组件之间的类型耦合,无论组件嵌套多少层,无论哪层组件数据类型发生改变,所有相关组件类型都会得到感知。当您增改、重构代码时,只要无类型报错(tsc --noEmit --watch)就不会有运行时报错的心智负担。
45
44
 
46
45
  - **高兼容性**
47
46
 
48
- annil提供的API都是原生API的语法糖,不具有强制性和侵入性,开发者可在整个项目中使用,也可只在某处使用。
47
+ annil提供的API都是原生API的语法糖,不具有强制性和侵入性,可渐进性使用或重构代码。
49
48
 
50
49
  - **类型修补**
51
50
 
52
- 官方类型(miniprogram-api-typings)存在更新不及时等问题,annil提供了新的类型方便ts开发,同时会对官方类型库发起PR。
53
- 这些类型都采用ES模块化,不会污染全局类型。
51
+ 官方类型(miniprogram-api-typings)存在更新不及时等问题,annil提供了新的类型方便开发,这些类型都采用ES模块化,不会污染全局类型。
52
+
53
+ - **适配第三方库类型**
54
+
55
+ 第三方组件库一般都是以文档的形式对组件说明,插件提供了泛型[GenerateDoc](./src/types/GenerateDoc.ts),可根据组件文档快速书写组件类型,使第三方组件融入组件构建模型,后续插件会陆续添加原生(Wm)和常用第三方组件库(Vant)类型。
54
56
 
55
- - **适配任何第三方库**
57
+ - **设计思想**
56
58
 
57
- 通过插件提供的泛型[GenerateDoc](./src/types/GenerateDoc.ts)即可根据组件文档生成组件类型,插件也内置了原生和第三方组件库类型。
59
+ 请参考[设计思想](./doc/designIdea.md)
58
60
 
59
61
  ### 安装
60
62
 
@@ -69,6 +71,7 @@ annil(安奈儿)是微信小程序原生开发插件。
69
71
  - 可选
70
72
 
71
73
  ```bash
74
+ # 使用ts开发
72
75
  npm typescript --save-dev
73
76
  ```
74
77
 
@@ -115,18 +118,20 @@ annil(安奈儿)是微信小程序原生开发插件。
115
118
 
116
119
  ### 使用文档
117
120
 
118
- 1. 组件构建API
121
+ - **组件构建API**
119
122
 
120
- [DefineComponent](./doc/api/DefineComponent.md)
123
+ [DefineComponent](./doc/api/DefineComponent.md)
121
124
 
122
- [RootComopnent](./doc/api/RootComopnent.md)
125
+ [RootComopnent](./doc/api/RootComopnent.md)
123
126
 
124
- [SubComponent](./doc/api/SubComponent.md)
127
+ [SubComponent](./doc/api/SubComponent.md)
125
128
 
126
- ### 更新日志
129
+ - **navigateTo**
127
130
 
128
- [CHANGELOG](./CHANGELOG.md)
131
+ [navigateTo](./doc/api/navigateTo.md)
129
132
 
130
- ### 协议
133
+ - 实用类型
131
134
 
132
- [MIT](./LICENSE)
135
+ ### 更新日志
136
+
137
+ [CHANGELOG](./CHANGELOG.md)
@@ -1,5 +1,5 @@
1
1
  import type { Func } from "hry-types/src/Misc/_api";
2
- import type { ComputedCache } from "../../behaviors/BComputedAndWatch/types";
2
+ import type { ComputedCache, Instance } from "../../behaviors/BComputedAndWatch/types";
3
3
  import type { WMComponent } from "../../types/OfficialTypeAlias";
4
4
  import type { ComputedConstraint } from "../RootComponent/Computed/ComputedConstraint";
5
5
  import type { DataConstraint } from "../RootComponent/Data/DataConstraint";
@@ -18,6 +18,7 @@ export type FinalOptionsOfComponent = {
18
18
  __computedInitCache__?: () => ComputedCache;
19
19
  };
20
20
  externalClasses: string[];
21
+ pageLifetimes: PageLifetimesOption<false, object>["pageLifetimes"] & {};
21
22
  isPage?: boolean;
22
23
  options?: WMComponent.Options;
23
24
  properties?: PropertiesConstraint;
@@ -25,6 +26,6 @@ export type FinalOptionsOfComponent = {
25
26
  computed?: ComputedConstraint;
26
27
  watch?: Record<string, Func>;
27
28
  lifetimes?: LifetimesConstraint;
28
- pageLifetimes?: PageLifetimesOption<false, object>["pageLifetimes"];
29
29
  };
30
+ export declare function isPageCheck(isPage: boolean | undefined): (this: Instance) => void;
30
31
  export declare function collectOptionsForComponent(defineComponentOption: DefineComponentOption): FinalOptionsOfComponent;
@@ -4,6 +4,17 @@ import { BStore } from "../../behaviors/BStore";
4
4
  import { INNERMARKER } from "../../utils/InnerMarker";
5
5
  import { isEmptyObject } from "../../utils/isEmptyObject";
6
6
  import { instanceConfig } from "../InstanceInject/instanceConfig";
7
+ export function isPageCheck(isPage) {
8
+ return function () {
9
+ const route = this.route;
10
+ if (route && isPage !== true) {
11
+ throw Error(`页面 /${route} 中, RootComponent构建页面时,isPage字段值应为 true`);
12
+ }
13
+ if (!route && isPage !== false && isPage !== undefined) {
14
+ throw Error(`组件 ${this.is} 中 RootComponent构建组件时,可不写isPage字段或值为 false`);
15
+ }
16
+ };
17
+ }
7
18
  function onLoadReceivedDataHandle(option) {
8
19
  const innerData = option[INNERMARKER.url];
9
20
  if (innerData === undefined)
@@ -27,18 +38,15 @@ function loadReceivedDataHandle(option) {
27
38
  }
28
39
  option[INNERMARKER.url] = INNERMARKER.url;
29
40
  }
30
- function hijack(config, field, before = [], after = []) {
41
+ function hijack(config, field, before) {
31
42
  const originalFunc = config[field];
32
43
  config[field] = function (...args) {
33
44
  before.forEach(func => func.call(this, ...args));
34
45
  originalFunc && originalFunc.apply(this, args);
35
- after.forEach(func => func.call(this, ...args));
36
46
  };
37
47
  return;
38
48
  }
39
49
  function InternalFieldProtection(config, keys) {
40
- if (!config)
41
- return;
42
50
  const methodsConfigKeys = Object.keys(config);
43
51
  for (const key of keys) {
44
52
  if (methodsConfigKeys.includes(key)) {
@@ -60,7 +68,7 @@ function funcOptionsHandle(finalOptionsForComponent, isPage, funcOptions) {
60
68
  }
61
69
  else {
62
70
  !(isEmptyObject(funcOptions.pageLifetimes))
63
- && _funcOptionsHandle(finalOptionsForComponent.pageLifetimes || (finalOptionsForComponent.pageLifetimes = {}), funcOptions.pageLifetimes);
71
+ && _funcOptionsHandle(finalOptionsForComponent.pageLifetimes, funcOptions.pageLifetimes);
64
72
  }
65
73
  funcOptions.lifetimes && _funcOptionsHandle(finalOptionsForComponent.lifetimes || (finalOptionsForComponent.lifetimes = {}), funcOptions.lifetimes);
66
74
  funcOptions.watch && _funcOptionsHandle(finalOptionsForComponent.watch || (finalOptionsForComponent.watch = {}), funcOptions.watch);
@@ -78,12 +86,15 @@ function funcFieldsCollect(options, funcOptions) {
78
86
  function otherFieldsHandle(finalOptions, rootComponentOptions) {
79
87
  for (const key in rootComponentOptions) {
80
88
  const config = rootComponentOptions[key];
81
- if (key === "behaviors" || key === "externalClasses") {
89
+ if (Array.isArray(config) === true) {
82
90
  finalOptions[key].push(...config);
83
91
  }
84
- else {
92
+ else if (typeof config === "object") {
85
93
  Object.assign(finalOptions[key] || (finalOptions[key] = {}), config);
86
94
  }
95
+ else {
96
+ finalOptions[key] = config;
97
+ }
87
98
  }
88
99
  }
89
100
  function eventsHandle(methods, eventsConfig) {
@@ -147,12 +158,13 @@ function merge(target, source) {
147
158
  export function collectOptionsForComponent(defineComponentOption) {
148
159
  const rootComponentOption = defineComponentOption.rootComponent;
149
160
  const subComponentsList = defineComponentOption.subComponents;
150
- const finalOptionsForComponent = merge(instanceConfig.injectInfo || {}, {
161
+ const finalOptionsForComponent = merge(Object.assign({}, instanceConfig.injectInfo), {
151
162
  observers: {},
152
163
  data: {},
153
164
  methods: {},
154
165
  behaviors: [BStore, BComputedAndWatch],
155
166
  externalClasses: [],
167
+ pageLifetimes: {},
156
168
  });
157
169
  const funcOptions = {
158
170
  pageLifetimes: {},
@@ -168,8 +180,9 @@ export function collectOptionsForComponent(defineComponentOption) {
168
180
  funcOptionsHandle(finalOptionsForComponent, rootComponentOption === null || rootComponentOption === void 0 ? void 0 : rootComponentOption.isPage, funcOptions);
169
181
  InternalFieldProtection(finalOptionsForComponent.methods, ["disposer"]);
170
182
  finalOptionsForComponent.isPage
171
- && hijack(finalOptionsForComponent.pageLifetimes || (finalOptionsForComponent.pageLifetimes = {}), "load", [loadReceivedDataHandle], []);
172
- hijack(finalOptionsForComponent.methods, "onLoad", [onLoadReceivedDataHandle], []);
183
+ && hijack(finalOptionsForComponent.pageLifetimes, "load", [loadReceivedDataHandle]);
184
+ hijack(finalOptionsForComponent.methods, "onLoad", [onLoadReceivedDataHandle]);
185
+ hijack(finalOptionsForComponent.lifetimes, "attached", [isPageCheck(rootComponentOption === null || rootComponentOption === void 0 ? void 0 : rootComponentOption.isPage)]);
173
186
  finalOptionsForComponent.isPage
174
187
  && finalOptionsForComponent.options && Reflect.deleteProperty(finalOptionsForComponent.options, "virtualHost");
175
188
  finalOptionsForComponent.behaviors.push(BBeforeCreate);
@@ -1 +1 @@
1
- {"version":3,"file":"collectOptionsForComponent.js","sourceRoot":"","sources":["../../../src/api/DefineComponent/collectOptionsForComponent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"collectOptionsForComponent.js","sourceRoot":"","sources":["../../../src/api/DefineComponent/collectOptionsForComponent.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  import type { LifetimesConstraint } from "./LifetimesConstraint";
2
- export type LifetimesOption<TIsPage extends boolean> = TIsPage extends false ? {
2
+ export type LifetimesOption = {
3
3
  lifetimes?: LifetimesConstraint;
4
- } : unknown;
4
+ };
@@ -3,7 +3,7 @@ import type { ComputeIntersection } from "hry-types/src/Object/ComputeIntersecti
3
3
  import type { WMCompPageLifetimes, WMPageLifetimes } from "../../../types/OfficialTypeAlias";
4
4
  export type PageLifetimesOption<TIsPage extends boolean, PropertiesDoc extends object> = IfExtends<TIsPage, false, {
5
5
  pageLifetimes?: ComputeIntersection<Partial<WMCompPageLifetimes> & {
6
- load?: (props: object) => void;
6
+ load?: (props?: object) => void;
7
7
  }>;
8
8
  }, {
9
9
  pageLifetimes?: ComputeIntersection<Partial<Omit<WMPageLifetimes, "onLoad">> & {
@@ -1,4 +1,4 @@
1
- import type { Func } from "hry-types/src/Misc/Func";
1
+ /// <reference types="miniprogram-api-typings" />
2
2
  import type { WMCompPageLifetimes, WMPageLifetimes } from "../../types/OfficialTypeAlias";
3
3
  import type { LifetimesConstraint } from "./Lifetimes/LifetimesConstraint";
4
4
  type _RootComponentDoc = {
@@ -10,27 +10,14 @@ type _RootComponentDoc = {
10
10
  methods?: object;
11
11
  events?: object;
12
12
  store?: object;
13
- watch?: Record<string, Func>;
13
+ watch?: Record<string, AnyFunction>;
14
14
  lifetimes?: LifetimesConstraint;
15
15
  pageLifetimes?: Partial<WMCompPageLifetimes & {
16
- load: Func;
17
- }>;
16
+ load: AnyFunction;
17
+ }> | Partial<WMPageLifetimes>;
18
18
  externalClasses?: string[];
19
+ export?: () => void;
19
20
  };
20
21
  type _Validator<O, Doc, ErrKeys = Exclude<keyof O, keyof Doc>> = [ErrKeys] extends [never] ? Doc : `错误的字段${ErrKeys & string}`;
21
22
  export type RootComponentDoc<O extends _Validator<O, _RootComponentDoc> = _RootComponentDoc> = O;
22
- type _RootPageDoc = {
23
- isPage?: boolean;
24
- properties?: object;
25
- data?: object;
26
- computed?: object;
27
- customEvents?: object;
28
- methods?: object;
29
- events?: object;
30
- store?: object;
31
- watch?: Record<string, Func>;
32
- lifetimes?: LifetimesConstraint;
33
- pageLifetimes?: Partial<WMPageLifetimes>;
34
- };
35
- export type RootPageDoc<O extends _Validator<O, _RootPageDoc> = _RootPageDoc> = O;
36
23
  export {};
@@ -31,7 +31,7 @@ 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)> & PageLifetimesOption<TIsPage, PropertiesDoc> & LifetimesOption<TIsPage> & WatchOption<ComputedDoc & Required<PropertiesDoc> & DataDoc & StoreDoc & IInjectStore> & Partial<Omit<WMCompOtherOption, "pageLifetimes" | "definitionFilter" | "export" | "observers">> & ObserversOption<ComputedDoc & Required<PropertiesDoc> & DataDoc & StoreDoc & IInjectStore> & ThisType<RootComponentInstance<TIsPage, TMethods, DataDoc, DataDoc & Required<PropertiesDoc> & StoreDoc & ComputedDoc, CustomEventsDoc, 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)> & 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
35
  type RootComponentConstructor<TComponentDocList extends ComponentDoc[]> = {
36
36
  <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
37
  isPage: true;
@@ -1,2 +1,2 @@
1
- import type { WMCompLifetimes } from "../../../types/OfficialTypeAlias";
2
- export type SubLifetimesOption = Partial<WMCompLifetimes>;
1
+ import type { LifetimesOption } from "../../RootComponent/Lifetimes/LifetimesOption";
2
+ export type SubLifetimesOption = LifetimesOption;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=SubStoreConstraint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SubStoreConstraint.js","sourceRoot":"","sources":["../../../../src/api/SubComponent/SubStore/SubStoreConstraint.ts"],"names":[],"mappings":""}
@@ -1,4 +1,4 @@
1
1
  import type { V } from "hry-types";
2
- export type SubStoreOption<TSubStore extends object, legalKeys extends PropertyKey, TPrefix extends string> = {
3
- store?: TSubStore & V.IllegalFieldValidator<TSubStore, legalKeys | `_${TPrefix}_${string}`, 0, "", "与inherit和data字段重复或前缀错误">;
2
+ export type SubStoreOption<TSubStore extends object, legalKeys extends PropertyKey> = {
3
+ store?: TSubStore & V.IllegalFieldValidator<TSubStore, legalKeys, 0, "", "与inherit和data字段重复或前缀错误">;
4
4
  };
@@ -31,10 +31,10 @@ import type { SubMethodsOption } from "./SubMethods/SubMethodsOption";
31
31
  import type { SubObserversOption } from "./SubObservers/SubObserversOption";
32
32
  import type { SubPageLifetimesOption } from "./SubPageLifetimes/SubPageLifetimesOption";
33
33
  import type { CreateSubComponentDoc } from "./SubReturnType/CreateSubComponentDoc";
34
- import type { SubStoreConstraint } from "./SubStore/SubDataConstraint";
34
+ import type { SubStoreConstraint } from "./SubStore/SubStoreConstraint";
35
35
  import type { SubStoreOption } from "./SubStore/SubStoreOption";
36
36
  import type { SubWatchOption } from "./SubWatch/SubWatchOption";
37
- 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> = SubInheritOption<TInherit> & SubDataOption<TSubData, Exclude<keyof CurrentCompDoc["properties"], (keyof InheritDoc)>, Prefix> & SubStoreOption<TSubStore, Exclude<keyof CurrentCompDoc["properties"], (keyof (InheritDoc & SubDataDoc))>, Prefix> & SubComputedOption<TSubComputed, Omit<CurrentCompDoc["properties"], (keyof (InheritDoc & SubDataDoc & SubStoreDoc))>> & SubEventsOption<TEvents, SubEventsDoc, keyof SubEventsConstraint<CurrentCompDoc>> & SubMethodsOption<TSubMethods, Prefix, keyof (CurrentCompDoc["customEvents"] & SubEventsDoc)> & SubPageLifetimesOption<IsPage, RootDoc["properties"] & {}> & SubLifetimesOption & SubWatchOption<SubComputedDoc & SubDataDoc & AllRootDataDoc & SubStoreDoc & IInjectStore> & Partial<Omit<WMCompOtherOption, "pageLifetimes" | "definitionFilter" | "export" | "observers">> & SubObserversOption<SubComputedDoc & SubDataDoc & AllRootDataDoc & SubStoreDoc & IInjectStore> & ThisType<SubInstance<SubMethodsDoc & RootDoc["methods"], TSubData, AllRootDataDoc & SubDataDoc & SubComputedDoc & SubStoreDoc, RootDoc["customEvents"] & {}, SubStoreDoc>>;
37
+ 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> = SubInheritOption<TInherit> & SubDataOption<TSubData, Exclude<keyof CurrentCompDoc["properties"], (keyof InheritDoc)>, Prefix> & SubStoreOption<TSubStore, Exclude<keyof CurrentCompDoc["properties"], (keyof (InheritDoc & SubDataDoc))>> & SubComputedOption<TSubComputed, Omit<CurrentCompDoc["properties"], (keyof (InheritDoc & SubDataDoc & SubStoreDoc))>> & SubEventsOption<TEvents, SubEventsDoc, keyof SubEventsConstraint<CurrentCompDoc>> & SubMethodsOption<TSubMethods, Prefix, keyof (CurrentCompDoc["customEvents"] & SubEventsDoc)> & SubPageLifetimesOption<IsPage, 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"], TSubData, AllRootDataDoc & SubDataDoc & SubComputedDoc & SubStoreDoc, RootDoc["customEvents"] & {}, SubStoreDoc>>;
38
38
  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"]> = {
39
39
  <TInherit extends InheritConstraint<AllRootDataDoc, CurrentCompDoc>, TSubData extends SubDataConstraint<Omit<Required<CurrentCompDoc["properties"]>, keyof InheritDoc>>, TSubStore extends SubStoreConstraint<Omit<Required<CurrentCompDoc["properties"]>, keyof (InheritDoc & SubDataDoc)>>, TEvents extends SubEventsConstraint<CurrentCompDoc>, TSubComputed extends SubComputedConstraint<Omit<Required<CurrentCompDoc["properties"]>, keyof (InheritDoc & SubDataDoc & SubStoreDoc)>> = {}, TSubMethods extends SubMethodsConstraint = {}, InheritDoc extends object = IfExtends<InheritConstraint<AllRootDataDoc, CurrentCompDoc>, TInherit, {}, TInherit>, SubDataDoc extends object = IfExtends<SubDataConstraint<Omit<Required<CurrentCompDoc["properties"]>, keyof InheritDoc>>, TSubData, {}, TSubData>, SubStoreDoc extends object = IfExtends<SubStoreConstraint<Omit<Required<CurrentCompDoc["properties"]>, keyof (InheritDoc & SubDataDoc)>>, TSubStore, {}, {
40
40
  [k in keyof TSubStore]: ReturnType<TSubStore[k] & {}>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/api/SubComponent/index.ts"],"names":[],"mappings":"AAkNA,MAAM,UAAU,YAAY;IAK1B,OAAO,CAAC,CAAC,OAAY,EAAE,EAAE,CAAC,OAAkC,CAAQ,CAAC;AACvE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/api/SubComponent/index.ts"],"names":[],"mappings":"AAiNA,MAAM,UAAU,YAAY;IAK1B,OAAO,CAAC,CAAC,OAAY,EAAE,EAAE,CAAC,OAAkC,CAAQ,CAAC;AACvE,CAAC"}
@@ -5,7 +5,7 @@ function isSameSize(a, b) {
5
5
  return Object.keys(a).length === Object.keys(b).length;
6
6
  }
7
7
  function isSameCode(a, b) {
8
- return a.toString() === b.toString();
8
+ return a.toString().split(" ").join("") === b.toString().split(" ").join("");
9
9
  }
10
10
  function isSameTime(a, b) {
11
11
  return a.getTime() === b.getTime();
@@ -1 +1 @@
1
- {"version":3,"file":"isEqual.js","sourceRoot":"","sources":["../../../src/behaviors/BComputedAndWatch/isEqual.ts"],"names":[],"mappings":"AAEA,SAAS,UAAU,CAAC,CAAS,EAAE,CAAS;IACtC,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjF,CAAC;AAGD,SAAS,UAAU,CAAC,CAAS,EAAE,CAAS;IACtC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AACzD,CAAC;AAGD,SAAS,UAAU,CAAC,CAAW,EAAE,CAAW;IAC1C,OAAO,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;AACvC,CAAC;AAGD,SAAS,UAAU,CAAC,CAAO,EAAE,CAAO;IAClC,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;AACrC,CAAC;AAGD,SAAS,aAAa,CAAC,CAAS,EAAE,CAAS;IACzC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC;AACtD,CAAC;AAQD,MAAM,UAAU,OAAO,CAAC,CAAU,EAAE,CAAU;IAE5C,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC/E,IAAI,OAAO,CAAC,KAAK,UAAU,IAAI,OAAO,CAAC,KAAK,UAAU,EAAE,CAAC;YACvD,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAGD,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,WAAW,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QAC9E,OAAO,KAAK,CAAC;IACf,CAAC;IAGD,IAAI,OAAO,CAAC,KAAK,UAAU,EAAE,CAAC;QAC5B,OAAO,UAAU,CAAC,CAAC,EAAE,CAAa,CAAC,CAAC;IACtC,CAAC;IAGD,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC;QACtB,OAAO,UAAU,CAAC,CAAC,EAAE,CAAS,CAAC,CAAC;IAClC,CAAC;IAGD,IAAI,CAAC,YAAY,MAAM,EAAE,CAAC;QACxB,OAAO,aAAa,CAAC,CAAC,EAAE,CAAW,CAAC,CAAC;IACvC,CAAC;IAGD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAE7B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAE7B,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAExB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBAC7B,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAGD,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"isEqual.js","sourceRoot":"","sources":["../../../src/behaviors/BComputedAndWatch/isEqual.ts"],"names":[],"mappings":"AAEA,SAAS,UAAU,CAAC,CAAS,EAAE,CAAS;IACtC,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjF,CAAC;AAGD,SAAS,UAAU,CAAC,CAAS,EAAE,CAAS;IACtC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AACzD,CAAC;AAGD,SAAS,UAAU,CAAC,CAAW,EAAE,CAAW;IAE1C,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC/E,CAAC;AAGD,SAAS,UAAU,CAAC,CAAO,EAAE,CAAO;IAClC,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;AACrC,CAAC;AAGD,SAAS,aAAa,CAAC,CAAS,EAAE,CAAS;IACzC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC;AACtD,CAAC;AAQD,MAAM,UAAU,OAAO,CAAC,CAAU,EAAE,CAAU;IAE5C,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC/E,IAAI,OAAO,CAAC,KAAK,UAAU,IAAI,OAAO,CAAC,KAAK,UAAU,EAAE,CAAC;YACvD,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAGD,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,WAAW,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QAC9E,OAAO,KAAK,CAAC;IACf,CAAC;IAGD,IAAI,OAAO,CAAC,KAAK,UAAU,EAAE,CAAC;QAC5B,OAAO,UAAU,CAAC,CAAC,EAAE,CAAa,CAAC,CAAC;IACtC,CAAC;IAGD,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC;QACtB,OAAO,UAAU,CAAC,CAAC,EAAE,CAAS,CAAC,CAAC;IAClC,CAAC;IAGD,IAAI,CAAC,YAAY,MAAM,EAAE,CAAC;QACxB,OAAO,aAAa,CAAC,CAAC,EAAE,CAAW,CAAC,CAAC;IACvC,CAAC;IAGD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAE7B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAE7B,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAExB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBAC7B,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAGD,OAAO,IAAI,CAAC;AACd,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "annil",
3
- "version": "1.5.3",
3
+ "version": "1.5.5",
4
4
  "description": "微信小程序(原生开发)插件",
5
5
  "main": "dist/index.js",
6
6
  "types": "src/index.ts",
@@ -42,6 +42,7 @@ export type FinalOptionsOfComponent = {
42
42
  __computedInitCache__?: () => ComputedCache;
43
43
  };
44
44
  externalClasses: string[];
45
+ pageLifetimes: PageLifetimesOption<false, object>["pageLifetimes"] & {};
45
46
  isPage?: boolean;
46
47
  options?: WMComponent.Options;
47
48
  properties?: PropertiesConstraint;
@@ -49,9 +50,29 @@ export type FinalOptionsOfComponent = {
49
50
  computed?: ComputedConstraint;
50
51
  watch?: Record<string, Func>;
51
52
  lifetimes?: LifetimesConstraint;
52
- pageLifetimes?: PageLifetimesOption<false, object>["pageLifetimes"];
53
53
  };
54
54
 
55
+ /**
56
+ * 劫持attached,根据this.route做判断 isPage值是否正确
57
+ */
58
+ export function isPageCheck(isPage: boolean | undefined) {
59
+ return function(this: Instance) {
60
+ const route = (this as PageInstance).route as string | undefined;
61
+ if (route && isPage !== true) {
62
+ // 页面isPage值错误
63
+ throw Error(
64
+ `页面 /${route} 中, RootComponent构建页面时,isPage字段值应为 true`,
65
+ );
66
+ }
67
+ if (!route && isPage !== false && isPage !== undefined) {
68
+ // 组件写了isPage = true
69
+ throw Error(
70
+ `组件 ${this.is} 中 RootComponent构建组件时,可不写isPage字段或值为 false`,
71
+ );
72
+ }
73
+ };
74
+ }
75
+
55
76
  /**
56
77
  * 原生Component会对传入的对象字段匹配的properties字段setData赋值。不符合字段或Page时不会赋值。
57
78
  * 此函数为给实例setData赋值,默认传递值与properties相符(ts类型安全)。
@@ -59,7 +80,7 @@ export type FinalOptionsOfComponent = {
59
80
  * 1. 使用wx.navigateTo传值的。这种情况无内置字段 option[INNERMARKER.url] 等于 undefined
60
81
  * 2. 使用插件提供的navigateTo传值。这种情况 INNERMARKER.url被load周期劫持函数解码后赋值INNERMARKER.url字段为本身,即option[INNERMARKER.url] 等于 INNERMARKER.url
61
82
  */
62
- /* istanbul ignore next: miniprogram-simulate(当前版本 1.6.1) 无法测试页面 */
83
+ /* istanbul ignore next: miniprogram-simulate(当前版本 1.6.1) 无法测试页面生命周期 */
63
84
  function onLoadReceivedDataHandle(
64
85
  this: PageInstance,
65
86
  option: Record<typeof INNERMARKER.url, string>,
@@ -80,32 +101,12 @@ function onLoadReceivedDataHandle(
80
101
 
81
102
  this.setData(option);
82
103
  }
83
- // 类型保护
84
- // function isPageInstance(ins: Instance): ins is PageInstance & InstanceCustomFields {
85
- // return (ins as PageInstance).route !== undefined;
86
- // }
87
- /**
88
- * 验证path是否正确
89
- * @param path - 配置路径
90
- * @returns
91
- */
92
- // function pathCheck(path: string | undefined) {
93
- // return function(this: Instance) {
94
- // if (isPageInstance(this)) {
95
- // const route = this.route;
96
- // if (route !== path) {
97
- // throw Error(
98
- // `[ /${route} ] DefinedComponent的配置字段path值错误,应为: /${route}`,
99
- // );
100
- // }
101
- // }
102
- // };
103
- // }
104
+
104
105
  /**
105
106
  * 针对通过 navigateTo传过来的数据对组件load周期传入数据解析
106
107
  * @param option - option中的url是拼接了encodeURIComponent转码的data对象的,key为INNERMARKER.url
107
108
  */
108
- /* istanbul ignore next: miniprogram-simulate(当前版本 1.6.1) 无法测试页面 */
109
+ /* istanbul ignore next: miniprogram-simulate(当前版本 1.6.1) 无法测试load */
109
110
  function loadReceivedDataHandle(
110
111
  this: PageInstance,
111
112
  option: Record<typeof INNERMARKER.url, string>,
@@ -125,8 +126,12 @@ function loadReceivedDataHandle(
125
126
  /**
126
127
  * 劫持指定配置字段
127
128
  */
128
- /* istanbul ignore next: miniprogram-simulate(当前版本 1.6.1) 无法测试页面 */
129
- function hijack(config: object, field: string, before: Func[] = [], after: Func[] = []) {
129
+ function hijack<T extends FinalOptionsOfComponent[keyof FinalOptionsOfComponent]>(
130
+ config: T,
131
+ field: keyof T,
132
+ before: Func[],
133
+ // after: Func[] = [],
134
+ ) {
130
135
  // @ts-ignore 隐式索引
131
136
  const originalFunc: Func | undefined = config[field];
132
137
 
@@ -136,7 +141,7 @@ function hijack(config: object, field: string, before: Func[] = [], after: Func[
136
141
 
137
142
  originalFunc && originalFunc.apply(this, args);
138
143
 
139
- after.forEach(func => func.call(this, ...args));
144
+ // after.forEach(func => func.call(this, ...args));
140
145
  };
141
146
 
142
147
  return;
@@ -145,9 +150,7 @@ function hijack(config: object, field: string, before: Func[] = [], after: Func[
145
150
  /**
146
151
  * 报错的形式避免输入字段和内部字段冲突,保证config下不包含内部预定字段(列表)
147
152
  */
148
- /* istanbul ignore next: miniprogram-simulate(当前版本 1.6.1) 无法测试页面 */
149
- function InternalFieldProtection(config: object | undefined, keys: string[]) {
150
- if (!config) return;
153
+ function InternalFieldProtection(config: object, keys: string[]) {
151
154
  const methodsConfigKeys = Object.keys(config);
152
155
  for (const key of keys) {
153
156
  if (methodsConfigKeys.includes(key)) {
@@ -174,7 +177,6 @@ function funcOptionsHandle(
174
177
  isPage: boolean | undefined,
175
178
  funcOptions: FuncOptions,
176
179
  ) {
177
- /* istanbul ignore next: miniprogram-simulate(当前版本 1.6.1) 无法测试页面 */
178
180
  if (isPage) {
179
181
  // 页面时 生命周期方法(即 on 开头的方法),(https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/component.html)
180
182
  !(isEmptyObject(funcOptions.pageLifetimes))
@@ -182,7 +184,7 @@ function funcOptionsHandle(
182
184
  } else {
183
185
  // 组件时
184
186
  !(isEmptyObject(funcOptions.pageLifetimes))
185
- && _funcOptionsHandle(finalOptionsForComponent.pageLifetimes ||= {}, funcOptions.pageLifetimes);
187
+ && _funcOptionsHandle(finalOptionsForComponent.pageLifetimes, funcOptions.pageLifetimes);
186
188
  }
187
189
  funcOptions.lifetimes && _funcOptionsHandle(finalOptionsForComponent.lifetimes ||= {}, funcOptions.lifetimes);
188
190
 
@@ -218,12 +220,17 @@ function otherFieldsHandle(
218
220
  for (const key in rootComponentOptions) {
219
221
  // @ts-ignore 隐式索引
220
222
  const config = rootComponentOptions[key];
221
- if (key === "behaviors" || key === "externalClasses") {
222
- // 是不是只有behaviors是数组
223
+ if (Array.isArray(config) === true) {
224
+ // "behaviors" || "externalClasses"是数组
225
+ // @ts-ignore 只有 behaviors 和 externalClasses, 且都默认为[]
223
226
  finalOptions[key].push(...config);
224
- } else {
227
+ } else if (typeof config === "object") {
225
228
  // @ts-ignore 隐式索引
226
229
  Object.assign(finalOptions[key] ||= {}, config);
230
+ } else {
231
+ // 函数字段有 根组件有 `export` 子组件无此字段
232
+ // @ts-ignore 隐式索引
233
+ finalOptions[key] = config;
227
234
  }
228
235
  }
229
236
  }
@@ -345,12 +352,13 @@ export function collectOptionsForComponent(
345
352
  const rootComponentOption = defineComponentOption.rootComponent;
346
353
  const subComponentsList = defineComponentOption.subComponents;
347
354
 
348
- const finalOptionsForComponent: FinalOptionsOfComponent = merge(instanceConfig.injectInfo || {}, {
355
+ const finalOptionsForComponent: FinalOptionsOfComponent = merge({ ...instanceConfig.injectInfo }, {
349
356
  observers: {},
350
357
  data: {},
351
358
  methods: {},
352
359
  behaviors: [BStore, BComputedAndWatch],
353
360
  externalClasses: [],
361
+ pageLifetimes: {},
354
362
  });
355
363
 
356
364
  /**
@@ -369,23 +377,28 @@ export function collectOptionsForComponent(
369
377
  if (subComponentsList && !isEmptyObject(subComponentsList)) {
370
378
  subComponentsHandle(finalOptionsForComponent, subComponentsList, funcOptions);
371
379
  }
372
- // miniprogram-simulate(当前版本 1.6.1) 无法测试页面
373
- /* istanbul ignore next: miniprogram-simulate(当前版本 1.6.1) 无法测试页面 */
380
+
374
381
  funcOptionsHandle(finalOptionsForComponent, rootComponentOption?.isPage, funcOptions);
375
382
 
376
383
  InternalFieldProtection(finalOptionsForComponent.methods, ["disposer"]);
377
384
 
378
385
  // 对页面传入参数进行处理 老框架劫持页面methods.onLoad,新框架劫持页面pageLifetimes.load
379
- /* istanbul ignore next: miniprogram-simulate(当前版本 1.6.1) 无法测试页面 */
386
+
380
387
  finalOptionsForComponent.isPage
381
- && hijack(finalOptionsForComponent.pageLifetimes ||= {}, "load", [loadReceivedDataHandle], []);
388
+ && hijack(finalOptionsForComponent.pageLifetimes, "load", [loadReceivedDataHandle]);
382
389
 
383
- /* istanbul ignore next: miniprogram-simulate(当前版本 1.6.1) 无法测试页面 */
384
- hijack(finalOptionsForComponent.methods, "onLoad", [onLoadReceivedDataHandle], []);
390
+ hijack(
391
+ finalOptionsForComponent.methods,
392
+ "onLoad",
393
+ [onLoadReceivedDataHandle],
394
+ );
385
395
 
386
- // hijack(finalOptionsForComponent.lifetimes!, "attached", [pathCheck(defineComponentOption.path)], []);
396
+ hijack(
397
+ finalOptionsForComponent.lifetimes!,
398
+ "attached",
399
+ [isPageCheck(rootComponentOption?.isPage)],
400
+ );
387
401
 
388
- /* istanbul ignore next: miniprogram-simulate(当前版本 1.6.1) 无法测试页面 */
389
402
  finalOptionsForComponent.isPage
390
403
  // 页面时删除预设的虚拟组件字段
391
404
  && finalOptionsForComponent.options && Reflect.deleteProperty(finalOptionsForComponent.options, "virtualHost");
@@ -8,7 +8,7 @@ type Gender = "male" | "female";
8
8
 
9
9
  const RootDoc = RootComponent()({
10
10
  data: {
11
- gender: <Gender> "male", // 联合字面量
11
+ gender: "male" as Gender, // 联合字面量
12
12
  num: 123,
13
13
  _innernalFields: 123, // 内部字段无法在wxml中使用
14
14
  },
@@ -24,7 +24,7 @@ RootComponent()({
24
24
  });
25
25
 
26
26
  /**
27
- * 2. 没有子组件时,事件参数e可通过WMBaseEventWMCustomEvent(多一个detail类型)定义内部类型。
27
+ * 2. 没有子组件时,事件参数e可通过WMBaseEventWMCustomEvent、Detail、Mark等插件提供的类型快速定义事件类型。
28
28
  */
29
29
  RootComponent()({
30
30
  events: {
@@ -122,7 +122,7 @@ type RootDocExpect = {
122
122
  };
123
123
  };
124
124
 
125
- // 4 返回EventsDoc正常
125
+ // 4 返回EventsDoc
126
126
  Checking<typeof RootDoc, RootDocExpect, Test.Pass>;
127
127
 
128
128
  /**
@@ -1,34 +1,31 @@
1
1
  import type { LifetimesConstraint } from "./LifetimesConstraint";
2
2
 
3
- export type LifetimesOption<TIsPage extends boolean> = TIsPage extends false // 组件开通lifetimes字段
4
- ? {
5
- /**
6
- * 在原生类型上增加了beforeCreate周期
7
- * @example
8
- * ```ts
9
- * RootComponent()({
10
- * lifetimes: {
11
- * beforeCreate(opitons) {
12
- * opitons;//为最终进入Component的配置对象
13
- * },
14
- * created() {
15
- * },
16
- * attached() {
17
- * },
18
- * ready() {
19
- * },
20
- * detached() {
21
- * },
22
- * error(err) {
23
- * err.cause;
24
- * },
25
- * moved() {
26
- * },
27
- * },
28
- * });
29
- * ```
30
- */
31
- lifetimes?: LifetimesConstraint;
32
- }
33
- // 页面关闭lifetimes字段(其实也可以开启)
34
- : unknown;
3
+ export type LifetimesOption = {
4
+ /**
5
+ * 在原生类型上增加了beforeCreate周期
6
+ * @example
7
+ * ```ts
8
+ * RootComponent()({
9
+ * lifetimes: {
10
+ * beforeCreate(opitons) {
11
+ * opitons;//为最终进入Component的配置对象
12
+ * },
13
+ * created() {
14
+ * },
15
+ * attached() {
16
+ * },
17
+ * ready() {
18
+ * },
19
+ * detached() {
20
+ * },
21
+ * error(err) {
22
+ * err.cause;
23
+ * },
24
+ * moved() {
25
+ * },
26
+ * },
27
+ * });
28
+ * ```
29
+ */
30
+ lifetimes?: LifetimesConstraint;
31
+ };
@@ -11,13 +11,7 @@ RootComponent()({
11
11
  err.message;
12
12
  },
13
13
  moved() {},
14
- // @ts-expect-error 1 错误的声明周期字段报错
14
+ // @ts-expect-error 1 错误的生命周期字段报错
15
15
  xxx() {},
16
16
  },
17
17
  });
18
-
19
- RootComponent()({
20
- isPage: true,
21
- // @ts-expect-error 2 页面时未开启此字段
22
- lifetimes: {},
23
- });
@@ -9,7 +9,7 @@ const RootDoc = RootComponent()({
9
9
  num() {
10
10
  return 1;
11
11
  },
12
- str(str: string): string {
12
+ str(str: string) {
13
13
  return str;
14
14
  },
15
15
  },
@@ -6,9 +6,6 @@ export type PageLifetimesOption<TIsPage extends boolean, PropertiesDoc extends o
6
6
  TIsPage,
7
7
  false,
8
8
  {
9
- /**
10
- * 比官方定义新增load周期,发生在页面onLoad事件后
11
- */
12
9
  pageLifetimes?: ComputeIntersection<
13
10
  // 官方组件页面生命周期
14
11
  & Partial<WMCompPageLifetimes>
@@ -17,7 +14,7 @@ export type PageLifetimesOption<TIsPage extends boolean, PropertiesDoc extends o
17
14
  * 周期发生在组件attached之后,页面onLoad之前,要求组件为同步组件
18
15
  * 最低基础库: `3.0.2`
19
16
  */
20
- load?: (props: object) => void;
17
+ load?: (props?: object) => void;
21
18
  }
22
19
  >;
23
20
  },
@@ -7,16 +7,15 @@ import type { Mock_User } from "../../Properties/test/normalRequired.test";
7
7
  * 组件时
8
8
  */
9
9
  RootComponent()({
10
- // 1 官方类型 加入load类型(同步组件时触发)
11
10
  pageLifetimes: {
12
11
  hide() {},
13
12
  resize(size) {
14
13
  Checking<typeof size, WechatMiniprogram.Page.IResizeOption, Test.Pass>;
15
14
  },
16
15
  show() {},
17
- // 新增周期函数
16
+ // 1 glass-easel(最低版本库3.0.2)支持的周期函数
18
17
  load(obj) {
19
- Checking<typeof obj, object, Test.Pass>;
18
+ Checking<typeof obj, object | undefined, Test.Pass>;
20
19
  },
21
20
  },
22
21
  });
@@ -40,7 +39,7 @@ RootComponent()({
40
39
  },
41
40
  // 2 官方是把事件写在methods字段中,更改为写在pageLifetimes字段下
42
41
  pageLifetimes: {
43
- // 3 重写onLoad周期参数props的类型. (propertiesDoc中必传字段去除null后去除可选字段)
42
+ // 3 重写onLoad周期参数props的类型(同页面properties定义类型).
44
43
  onLoad(props) {
45
44
  Checking<
46
45
  typeof props,
@@ -56,5 +55,15 @@ RootComponent()({
56
55
  onHide() {
57
56
  console.log("onHide");
58
57
  },
58
+ // onReady
59
+ // onResize
60
+ // onUnload
61
+ // onPageScroll
62
+ // onPullDownRefresh
63
+ // onReachBottom
64
+ // onShareAppMessage
65
+ // onShareTimeline
66
+ // onTabItemTap
67
+ // ...
59
68
  },
60
69
  });
@@ -1,4 +1,3 @@
1
- import type { Func } from "hry-types/src/Misc/Func";
2
1
  import type { WMCompPageLifetimes, WMPageLifetimes } from "../../types/OfficialTypeAlias";
3
2
  import type { LifetimesConstraint } from "./Lifetimes/LifetimesConstraint";
4
3
 
@@ -11,10 +10,11 @@ type _RootComponentDoc = {
11
10
  methods?: object;
12
11
  events?: object;
13
12
  store?: object;
14
- watch?: Record<string, Func>;
13
+ watch?: Record<string, AnyFunction>;
15
14
  lifetimes?: LifetimesConstraint;
16
- pageLifetimes?: Partial<WMCompPageLifetimes & { load: Func }>;
15
+ pageLifetimes?: Partial<WMCompPageLifetimes & { load: AnyFunction }> | Partial<WMPageLifetimes>;
17
16
  externalClasses?: string[];
17
+ export?: () => void; // behaviors 'wx://component-export' 使用
18
18
  };
19
19
 
20
20
  // 验证key是否合法
@@ -24,32 +24,20 @@ type _Validator<O, Doc, ErrKeys = Exclude<keyof O, keyof Doc>> = [ErrKeys] exten
24
24
  /**
25
25
  * RootComponent Api 返回的类型
26
26
  * ```ts
27
- * RootComponentDoc = {
28
- * isPage?: true;
27
+ * isPage?: boolean;
29
28
  * properties?: object;
30
29
  * data?: object;
31
- * store?:object;
32
30
  * computed?: object;
33
31
  * customEvents?: object;
34
32
  * methods?: object;
35
33
  * events?: object;
34
+ * store?: object;
35
+ * watch?: Record<string, AnyFunction>;
36
+ * lifetimes?: LifetimesConstraint;
37
+ * pageLifetimes?: Partial<WMCompPageLifetimes & { load: AnyFunction }> | Partial<WMPageLifetimes>;
38
+ * export?:AnyFunction
39
+ * externalClasses?: string[];
36
40
  * };
37
41
  * ```
38
42
  */
39
43
  export type RootComponentDoc<O extends _Validator<O, _RootComponentDoc> = _RootComponentDoc> = O;
40
-
41
- type _RootPageDoc = {
42
- isPage?: boolean;
43
- properties?: object;
44
- data?: object;
45
- computed?: object;
46
- customEvents?: object;
47
- methods?: object;
48
- events?: object;
49
- store?: object;
50
- watch?: Record<string, Func>;
51
- lifetimes?: LifetimesConstraint;
52
- pageLifetimes?: Partial<WMPageLifetimes>;
53
- };
54
-
55
- export type RootPageDoc<O extends _Validator<O, _RootPageDoc> = _RootPageDoc> = O;
@@ -1,8 +1,8 @@
1
1
  import { Checking, type Test } from "hry-types";
2
2
  import { RootComponent } from "../..";
3
-
4
3
  /**
5
4
  * watch 只能监控 注入的store字段
5
+ * 注入文件 https://github.com/missannil/annil/blob/main/src/api/InstanceInject/inject.ts
6
6
  */
7
7
  RootComponent()({
8
8
  watch: {
@@ -57,7 +57,7 @@ type RootComponentOptions<
57
57
  & StoreOption<TStore, keyof (PropertiesDoc & DataDoc)>
58
58
  & ComputedOption<TComputed, keyof (PropertiesDoc & DataDoc & StoreDoc)>
59
59
  & PageLifetimesOption<TIsPage, PropertiesDoc>
60
- & LifetimesOption<TIsPage>
60
+ & LifetimesOption
61
61
  & WatchOption<
62
62
  & ComputedDoc
63
63
  & Required<PropertiesDoc>
@@ -65,7 +65,7 @@ type RootComponentOptions<
65
65
  & StoreDoc
66
66
  & IInjectStore
67
67
  >
68
- & Partial<Omit<WMCompOtherOption, "pageLifetimes" | "definitionFilter" | "export" | "observers">>
68
+ & Partial<Omit<WMCompOtherOption, "pageLifetimes" | "definitionFilter" | "observers">>
69
69
  & ObserversOption<
70
70
  & ComputedDoc
71
71
  & Required<PropertiesDoc>
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * 子组件Data字段约束
3
- * @returns 当剩余对象不为空对象,约束对象的key为剩余key,类型为剩余key对应的文档类型或函数返回类型。
3
+ * @returns 当剩余对象不为空对象,约束对象的key为剩余key,类型为剩余key对应的文档类型.
4
4
  */
5
5
  export type SubDataConstraint<
6
6
  TComponentDoc extends object,
@@ -5,7 +5,7 @@ import type { ComponentDoc } from "../../DefineComponent/ReturnType/ComponentDoc
5
5
  type WXMLSign = "wxml";
6
6
 
7
7
  /**
8
- * 子组件inherit字段约束,key为子组件所需key,根组件数据的key或`WXMLSign`。要求根数据类型为子数据类型的子类型。当key的值来自wxml(循环产生的子数据等情况)时用`WXMLSign`表示。
8
+ * 子组件inherit字段约束,key为构建组件所需的properties字段,类型为根组件数据的key或`WXMLSign`。要求根数据类型为子数据类型的子类型。当key的值来自wxml(循环产生的子数据等情况)时用`WXMLSign`表示。
9
9
  * @returns object
10
10
  */
11
11
  export type InheritConstraint<AllRootData extends object, TComponentDoc extends ComponentDoc> = {
@@ -43,9 +43,6 @@ SubComponent<RootDoc, CompDoc>()({
43
43
  data: {
44
44
  aaa_str: "str",
45
45
  },
46
- store: {
47
- _aaa_SubReactive: () => 123,
48
- },
49
46
  computed: {},
50
47
  methods: {
51
48
  aaa_SubM() {},
@@ -68,7 +65,6 @@ SubComponent<RootDoc, CompDoc>()({
68
65
  Cnum: number;
69
66
  // 自身Data
70
67
  aaa_str: "str";
71
- _aaa_SubReactive: 123;
72
68
  } & IInjectData
73
69
  >,
74
70
  Test.Pass
@@ -1,3 +1,3 @@
1
- import type { WMCompLifetimes } from "../../../types/OfficialTypeAlias";
1
+ import type { LifetimesOption } from "../../RootComponent/Lifetimes/LifetimesOption";
2
2
 
3
- export type SubLifetimesOption = Partial<WMCompLifetimes>;
3
+ export type SubLifetimesOption = LifetimesOption;
@@ -1,6 +1,6 @@
1
1
  import type { V } from "hry-types";
2
2
 
3
- export type SubStoreOption<TSubStore extends object, legalKeys extends PropertyKey, TPrefix extends string> = {
3
+ export type SubStoreOption<TSubStore extends object, legalKeys extends PropertyKey> = {
4
4
  /**
5
5
  * 全局响应式数据字段,全局store对应数据变化实例对应数据自动setData。
6
6
  * 约束为组件properties字段去除inherit和data的剩余字段和内部字段
@@ -19,7 +19,8 @@ export type SubStoreOption<TSubStore extends object, legalKeys extends PropertyK
19
19
  & TSubStore
20
20
  & V.IllegalFieldValidator<
21
21
  TSubStore,
22
- legalKeys | `_${TPrefix}_${string}`,
22
+ legalKeys,
23
+ // legalKeys | `_${TPrefix}_${string}`,
23
24
  0,
24
25
  "",
25
26
  "与inherit和data字段重复或前缀错误"
@@ -31,9 +31,7 @@ SubComponent<{
31
31
  aaa_str: () => user.name,
32
32
  // @ts-expect-error 2 与 data 字段重复
33
33
  aaa_num: () => user.age,
34
- // @ts-expect-error 3 内部字段前缀错误
35
- _num: () => user.age,
36
- // @ts-expect-error 4 超出约束字段
34
+ // @ts-expect-error 3 超出约束字段
37
35
  num: () => user.age,
38
36
  },
39
37
  });
@@ -19,7 +19,17 @@ SubComponent<{}, DocA>()({
19
19
  aaa_str: () => user.name,
20
20
 
21
21
  aaa_num: () => user.age,
22
- // 运行内部字段(暂定)
23
- _aaa_ddd: () => user.age,
22
+ // 内部字段
23
+ // _aaa_ddd: () => user.age,
24
+ },
25
+ });
26
+
27
+ SubComponent<{}, DocA, "a">()({
28
+ store: {
29
+ aaaA_str: () => user.name,
30
+
31
+ aaaA_num: () => user.age,
32
+ // 内部字段
33
+ // _aaaA_ddd: () => user.age,
24
34
  },
25
35
  });
@@ -0,0 +1,161 @@
1
+ import { Checking, type Test } from "hry-types";
2
+ import type { ReadonlyDeep } from "hry-types/src/Any/ReadonlyDeep";
3
+ import { type DetailedType, RootComponent, SubComponent } from "../../../..";
4
+ import type { OptionalType } from "../../../RootComponent/Properties/PropertiesConstraint";
5
+ import {
6
+ type Mock_Cart,
7
+ mock_requiredTypes,
8
+ mock_requiredUnion,
9
+ type Mock_User,
10
+ } from "../../../RootComponent/Properties/test/normalRequired.test";
11
+
12
+ const mock_optional = {
13
+ optional_num: {
14
+ type: Number,
15
+ value: 123,
16
+ },
17
+ optional_gender: {
18
+ type: String as DetailedType<"male" | "female">,
19
+ value: "male" as const,
20
+ },
21
+ optional_obj: {
22
+ type: Object as DetailedType<Mock_User>,
23
+ value: {
24
+ id: "id",
25
+ name: "name",
26
+ age: 20,
27
+ },
28
+ },
29
+ optional_objOrNull: {
30
+ type: Object as DetailedType<Mock_User | null>, // 可选类型定义null默认值方可为null
31
+ value: null,
32
+ },
33
+ } satisfies Record<string, OptionalType>;
34
+
35
+ const rootComponent = RootComponent()({
36
+ properties: {
37
+ ...mock_requiredTypes,
38
+ ...mock_requiredUnion,
39
+ ...mock_optional,
40
+ },
41
+ });
42
+
43
+ type Root = typeof rootComponent;
44
+
45
+ /**
46
+ * watch properties字段 深度只读, 必传对象字段newValue去除null
47
+ */
48
+ SubComponent<Root, { properties: { aaa_num: number } }>()({
49
+ watch: {
50
+ // 必传单一字段
51
+ str(newValue, oldValue) {
52
+ Checking<string, typeof newValue, Test.Pass>;
53
+
54
+ Checking<string, typeof oldValue, Test.Pass>;
55
+ },
56
+ num(newValue, oldValue) {
57
+ Checking<number, typeof newValue, Test.Pass>;
58
+
59
+ Checking<number, typeof oldValue, Test.Pass>;
60
+ },
61
+ bool(newValue, oldValue) {
62
+ Checking<boolean, typeof newValue, Test.Pass>;
63
+
64
+ Checking<boolean, typeof oldValue, Test.Pass>;
65
+ },
66
+ arr(newValue, oldValue) {
67
+ newValue; // readonly ReadonlyDeep<unknown>[]
68
+
69
+ oldValue; // readonly ReadonlyDeep<unknown>[]
70
+
71
+ // ts中很多不是错误的错误,写 typeof newValue 结果是错误
72
+ Checking<unknown[], typeof newValue, Test.Fail>;
73
+
74
+ // ts中很多不是错误的错误,写 readonly ReadonlyDeep<unknown>[] 结果是正确的
75
+ Checking<readonly unknown[], readonly ReadonlyDeep<unknown>[], Test.Pass>;
76
+ },
77
+ obj(newValue, oldValue) {
78
+ Checking<object, typeof newValue, Test.Pass>;
79
+
80
+ Checking<object | null, typeof oldValue, Test.Pass>;
81
+ },
82
+ tuple(newValue, oldValue) {
83
+ Checking<readonly [string, number, boolean], typeof newValue, Test.Pass>;
84
+
85
+ Checking<readonly [string, number, boolean], typeof oldValue, Test.Pass>;
86
+ },
87
+ union_str(newValue, oldValue) {
88
+ Checking<"male" | "female", typeof newValue, Test.Pass>;
89
+
90
+ Checking<"male" | "female", typeof oldValue, Test.Pass>;
91
+ },
92
+ union_num(newValue, oldValue) {
93
+ Checking<0 | 1 | 2, typeof newValue, Test.Pass>;
94
+
95
+ Checking<0 | 1 | 2, typeof oldValue, Test.Pass>;
96
+ },
97
+ union_bool(newValue, oldValue) {
98
+ Checking<false | true, typeof newValue, Test.Pass>;
99
+
100
+ Checking<false | true, typeof oldValue, Test.Pass>;
101
+ },
102
+ union_arr(newValue, oldValue) {
103
+ Checking<readonly number[] | readonly string[], typeof newValue, Test.Pass>;
104
+
105
+ Checking<readonly number[] | readonly string[], typeof oldValue, Test.Pass>;
106
+ },
107
+ union_obj(newValue, oldValue) {
108
+ Checking<ReadonlyDeep<Mock_User | Mock_Cart>, typeof newValue, Test.Pass>;
109
+
110
+ Checking<ReadonlyDeep<Mock_User | Mock_Cart | null>, typeof oldValue, Test.Pass>;
111
+ },
112
+ // 必传多类型联合
113
+ union_str_num_bool(newValue, oldValue) {
114
+ Checking<string | number | boolean, typeof newValue, Test.Pass>;
115
+
116
+ Checking<string | number | boolean, typeof oldValue, Test.Pass>;
117
+ },
118
+ union_literalStr_Literalnum(newValue, oldValue) {
119
+ Checking<0 | 1 | 2 | "male" | "female", typeof newValue, Test.Pass>;
120
+
121
+ Checking<0 | 1 | 2 | "male" | "female", typeof oldValue, Test.Pass>;
122
+ },
123
+ union_mockUser_num(newValue, oldValue) {
124
+ Checking<ReadonlyDeep<number | Mock_User>, typeof newValue, Test.Pass>;
125
+
126
+ Checking<ReadonlyDeep<number | Mock_User | null>, typeof oldValue, Test.Pass>;
127
+ },
128
+ // 可选字段
129
+ optional_gender(newValue, oldValue) {
130
+ Checking<"male" | "female", typeof newValue, Test.Pass>;
131
+
132
+ Checking<"male" | "female", typeof oldValue, Test.Pass>;
133
+ },
134
+ optional_num(newValue, oldValue) {
135
+ Checking<number, typeof newValue, Test.Pass>;
136
+
137
+ Checking<number, typeof oldValue, Test.Pass>;
138
+ },
139
+ optional_obj(newValue, oldValue) {
140
+ Checking<ReadonlyDeep<Mock_User>, typeof newValue, Test.Pass>;
141
+
142
+ Checking<ReadonlyDeep<Mock_User | null>, typeof oldValue, Test.Pass>;
143
+ },
144
+ // 对象的二段key
145
+ "optional_obj.age"(newValue, oldValue) {
146
+ Checking<number, typeof newValue, Test.Pass>;
147
+
148
+ Checking<number | undefined, typeof oldValue, Test.Pass>;
149
+ },
150
+ "optional_obj.**"(newValue, oldValue) {
151
+ Checking<ReadonlyDeep<Mock_User>, typeof newValue, Test.Pass>;
152
+
153
+ Checking<ReadonlyDeep<Mock_User | null>, typeof oldValue, Test.Pass>;
154
+ },
155
+ "optional_obj.id"(newValue, oldValue) {
156
+ Checking<string, typeof newValue, Test.Pass>;
157
+
158
+ Checking<string, typeof oldValue, Test.Pass>;
159
+ },
160
+ },
161
+ });
@@ -32,7 +32,7 @@ import type { SubMethodsOption } from "./SubMethods/SubMethodsOption";
32
32
  import type { SubObserversOption } from "./SubObservers/SubObserversOption";
33
33
  import type { SubPageLifetimesOption } from "./SubPageLifetimes/SubPageLifetimesOption";
34
34
  import type { CreateSubComponentDoc } from "./SubReturnType/CreateSubComponentDoc";
35
- import type { SubStoreConstraint } from "./SubStore/SubDataConstraint";
35
+ import type { SubStoreConstraint } from "./SubStore/SubStoreConstraint";
36
36
  import type { SubStoreOption } from "./SubStore/SubStoreOption";
37
37
  import type { SubWatchOption } from "./SubWatch/SubWatchOption";
38
38
 
@@ -63,8 +63,7 @@ type Options<
63
63
  >
64
64
  & SubStoreOption<
65
65
  TSubStore,
66
- Exclude<keyof CurrentCompDoc["properties"], (keyof (InheritDoc & SubDataDoc))>,
67
- Prefix
66
+ Exclude<keyof CurrentCompDoc["properties"], (keyof (InheritDoc & SubDataDoc))>
68
67
  >
69
68
  & SubComputedOption<
70
69
  TSubComputed,
@@ -84,7 +83,7 @@ type Options<
84
83
  & SubStoreDoc
85
84
  & IInjectStore
86
85
  >
87
- & Partial<Omit<WMCompOtherOption, "pageLifetimes" | "definitionFilter" | "export" | "observers">>
86
+ & Partial<Omit<WMCompOtherOption, "pageLifetimes" | "definitionFilter" | "export" | "observers" | "relations">>
88
87
  & SubObserversOption<
89
88
  & SubComputedDoc
90
89
  & SubDataDoc
@@ -11,7 +11,8 @@ function isSameSize(a: object, b: object) {
11
11
 
12
12
  // 定义一个辅助函数,用于判断两个函数的代码是否相同
13
13
  function isSameCode(a: Function, b: Function) {
14
- return a.toString() === b.toString();
14
+ // 去除空格比较函数字符串
15
+ return a.toString().split(" ").join("") === b.toString().split(" ").join("");
15
16
  }
16
17
 
17
18
  // 定义一个辅助函数,用于判断两个日期的时间戳是否相同
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=SubDataConstraint.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SubDataConstraint.js","sourceRoot":"","sources":["../../../../src/api/SubComponent/SubStore/SubDataConstraint.ts"],"names":[],"mappings":""}