annil 1.8.2 → 1.9.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.
Files changed (54) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/README.md +1 -1
  3. package/dist/api/DefineComponent/normalizeOptions/computedWatchHandle/index.js +2 -2
  4. package/dist/api/DefineComponent/normalizeOptions/computedWatchHandle/index.js.map +1 -1
  5. package/dist/api/DefineComponent/normalizeOptions/hijackHandle/pagePathCheck.d.ts +2 -0
  6. package/dist/api/DefineComponent/normalizeOptions/hijackHandle/pagePathCheck.js +8 -0
  7. package/dist/api/DefineComponent/normalizeOptions/hijackHandle/pagePathCheck.js.map +1 -0
  8. package/dist/api/DefineComponent/normalizeOptions/index.d.ts +1 -2
  9. package/dist/api/DefineComponent/normalizeOptions/index.js +5 -1
  10. package/dist/api/DefineComponent/normalizeOptions/index.js.map +1 -1
  11. package/dist/api/SubComponent/index.d.ts +7 -1
  12. package/dist/api/SubComponent/index.js.map +1 -1
  13. package/dist/api/{navigateTo.d.ts → wxSugar.d.ts} +1 -0
  14. package/dist/api/{navigateTo.js → wxSugar.js} +10 -1
  15. package/dist/api/wxSugar.js.map +1 -0
  16. package/dist/index.d.ts +2 -2
  17. package/dist/index.js +2 -2
  18. package/dist/index.js.map +1 -1
  19. package/dist/types/Extra.d.ts +3 -0
  20. package/dist/types/Extra.js +2 -0
  21. package/dist/types/Extra.js.map +1 -0
  22. package/dist/utils/_utils.d.ts +2 -2
  23. package/dist/utils/_utils.js +2 -2
  24. package/dist/utils/_utils.js.map +1 -1
  25. package/dist/utils/applyDebounceAndThrottle.d.ts +7 -0
  26. package/dist/utils/applyDebounceAndThrottle.js +28 -0
  27. package/dist/utils/applyDebounceAndThrottle.js.map +1 -0
  28. package/dist/utils/debounce.d.ts +5 -3
  29. package/dist/utils/debounce.js +6 -6
  30. package/dist/utils/debounce.js.map +1 -1
  31. package/dist/utils/{assertNonNullable.d.ts → nonNullable.d.ts} +1 -1
  32. package/dist/utils/{assertNonNullable.js → nonNullable.js} +2 -2
  33. package/dist/utils/nonNullable.js.map +1 -0
  34. package/dist/utils/throttle.js +2 -1
  35. package/dist/utils/throttle.js.map +1 -1
  36. package/package.json +2 -2
  37. package/src/api/DefineComponent/normalizeOptions/computedWatchHandle/index.ts +2 -2
  38. package/src/api/DefineComponent/normalizeOptions/hijackHandle/pagePathCheck.ts +9 -0
  39. package/src/api/DefineComponent/normalizeOptions/index.ts +8 -4
  40. package/src/api/RootComponent/Events/test/normal.test.ts +2 -2
  41. package/src/api/SubComponent/SubComputed/test/normal.test.ts +8 -0
  42. package/src/api/SubComponent/SubData/test/normal.test.ts +7 -1
  43. package/src/api/SubComponent/SubStore/test/normal.test.ts +6 -0
  44. package/src/api/SubComponent/index.ts +3 -2
  45. package/src/api/{navigateTo.ts → wxSugar.ts} +12 -0
  46. package/src/index.ts +2 -1
  47. package/src/types/Extra.ts +1 -1
  48. package/src/utils/_utils.ts +2 -2
  49. package/src/utils/applyDebounceAndThrottle.ts +31 -0
  50. package/src/utils/debounce.ts +8 -6
  51. package/src/utils/{assertNonNullable.ts → nonNullable.ts} +1 -1
  52. package/src/utils/throttle.ts +3 -2
  53. package/dist/api/navigateTo.js.map +0 -1
  54. package/dist/utils/assertNonNullable.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -4,6 +4,25 @@
4
4
 
5
5
  * 解决DetailedType不接收接口类型的错误 ([ae8acbf](https://github.com/missannil/annil/commit/ae8acbfc2e62f99db565c448ad9253aa549e78bb))
6
6
 
7
+ ## [1.9.0](https://github.com/missannil/annil/compare/v1.8.3...v1.9.0) (2024-10-23)
8
+
9
+
10
+ ### Features
11
+
12
+ * api/navigateTo 改为wxSugar 增加导出redirectTo ([f5a6141](https://github.com/missannil/annil/commit/f5a61411fa903545de8460052ca3512923905388))
13
+
14
+
15
+ ### Bug Fixes
16
+
17
+ * 增加对DefinedComponent 的 path字段检测(与实例的is比较) ([8460e4e](https://github.com/missannil/annil/commit/8460e4eb29ad21a2df7adf53bffeb4c887a122e9))
18
+
19
+ ## [1.8.3](https://github.com/missannil/annil/compare/v1.8.2...v1.8.3) (2024-09-08)
20
+
21
+
22
+ ### Bug Fixes
23
+
24
+ * 为subComponents内部组件类型增加 prefix_isReady?:boolean 字段。 ([e78041d](https://github.com/missannil/annil/commit/e78041d5f151d71c1d45652b0508aa4c2430ecde))
25
+
7
26
  ## [1.8.2](https://github.com/missannil/annil/compare/v1.8.1...v1.8.2) (2024-09-07)
8
27
 
9
28
 
package/README.md CHANGED
@@ -137,7 +137,7 @@ annil(安奈儿)是微信小程序原生开发插件。她会给您更佳的开
137
137
 
138
138
  - **常用API**
139
139
 
140
- [navigateTo](./doc/api/navigateTo.md)
140
+ [navigateTo](./doc/api/wxSugar.md)
141
141
 
142
142
  - 实用泛型
143
143
 
@@ -3,9 +3,9 @@ import { computedUpdater } from "./computedUpdater";
3
3
  import { getPathsValue } from "./getPathsValue";
4
4
  import { getPropertiesValue } from "./getPropertiesValue";
5
5
  import { initComputedAndGetCache } from "./initComputedAndGetCache";
6
- import { assertNonNullable } from "../../../../utils/assertNonNullable";
7
6
  import { deepClone } from "../../../../utils/deepClone";
8
7
  import { isEmptyObject } from "../../../../utils/isEmptyObject";
8
+ import { nonNullable } from "../../../../utils/nonNullable";
9
9
  function initWatchOldValue(data, watchConfig) {
10
10
  const watchOldValue = {};
11
11
  for (const key in watchConfig) {
@@ -47,7 +47,7 @@ export function computedWatchHandle(options) {
47
47
  // 在监控多个数据时,参数是多个值
48
48
  observersConfig[key] = function (...newValue) {
49
49
  originObserversHandle === null || originObserversHandle === void 0 ? void 0 : originObserversHandle.call(this, ...newValue);
50
- const watchOldValue = assertNonNullable(this.data.__watchOldValue__);
50
+ const watchOldValue = nonNullable(this.data.__watchOldValue__);
51
51
  const oldValue = watchOldValue[key];
52
52
  if (deepEqual(newValue, oldValue))
53
53
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/api/DefineComponent/normalizeOptions/computedWatchHandle/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/api/DefineComponent/normalizeOptions/computedWatchHandle/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { Instance } from "../../../RootComponent/Instance/RootComponentInstance";
2
+ export declare function pagePathCheck(path?: string): (this: Instance) => void;
@@ -0,0 +1,8 @@
1
+ export function pagePathCheck(path) {
2
+ return function () {
3
+ if (path && `/${this.is}` !== path) {
4
+ throw new Error(`页面路径错误,应为 /${this.is}`);
5
+ }
6
+ };
7
+ }
8
+ //# sourceMappingURL=pagePathCheck.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagePathCheck.js","sourceRoot":"","sources":["../../../../../src/api/DefineComponent/normalizeOptions/hijackHandle/pagePathCheck.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,aAAa,CAAC,IAAa;IACzC,OAAO;QACL,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,EAAE,EAAE,KAAK,IAAI,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,cAAc,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
@@ -18,7 +18,6 @@ export type OptionsInnerFields = {
18
18
  __throttleDebounce__?: ThrottleDebounce;
19
19
  };
20
20
  methods: {
21
- disposer?: Record<string, Func>;
22
21
  __computedUpdater__?: Func;
23
22
  };
24
23
  };
@@ -34,7 +33,7 @@ export type FinalOptionsOfComponent = {
34
33
  data: DataConstraint & OptionsInnerFields["data"];
35
34
  observers: Record<string, Func>;
36
35
  behaviors: string[];
37
- methods: MethodsConstraint & OptionsInnerFields["methods"];
36
+ methods: MethodsConstraint;
38
37
  externalClasses: string[];
39
38
  pageLifetimes: PageLifetimesOption<false, object>["pageLifetimes"] & {};
40
39
  isPage: boolean;
@@ -1,6 +1,7 @@
1
1
  import { BBeforeCreate } from "../../../behaviors/BbeforeCreated";
2
2
  import { BStore } from "../../../behaviors/BStore";
3
3
  import { BthrottleDebounce } from "../../../behaviors/BthrottleDebounce";
4
+ import { applyDebounceAndThrottle } from "../../../utils/applyDebounceAndThrottle";
4
5
  import { isEmptyObject } from "../../../utils/isEmptyObject";
5
6
  import { instanceConfig } from "../../InstanceInject/instanceConfig";
6
7
  import { __throttleDebounce__FieldCheck } from "./__throttleDebounce__FieldCheck";
@@ -9,6 +10,7 @@ import { hijack } from "./hijackHandle";
9
10
  import { isPageCheck } from "./hijackHandle/isPageCheck";
10
11
  import { loadReceivedDataHandle } from "./hijackHandle/loadReceivedDataHandle";
11
12
  import { onLoadReceivedDataHandle } from "./hijackHandle/onLoadReceivedDataHandle";
13
+ import { pagePathCheck } from "./hijackHandle/pagePathCheck";
12
14
  import { initStore } from "./initStore";
13
15
  import { injectInfoHandler } from "./injectInfoHandler";
14
16
  import { InternalFieldProtection } from "./internalFieldProtection";
@@ -67,11 +69,13 @@ export function normalizeOptions(defineComponentOption) {
67
69
  }
68
70
  hijack(finalOptionsForComponent.methods, "onLoad", [onLoadReceivedDataHandle]);
69
71
  // 验证isPage字段是否配置正确
70
- hijack(finalOptionsForComponent.lifetimes, "attached", [isPageCheck(rootComponentOption === null || rootComponentOption === void 0 ? void 0 : rootComponentOption.isPage)]);
72
+ hijack(finalOptionsForComponent.lifetimes, "attached", [isPageCheck(rootComponentOption === null || rootComponentOption === void 0 ? void 0 : rootComponentOption.isPage), pagePathCheck(defineComponentOption.path)]);
71
73
  // 页面时删除预设的虚拟组件字段
72
74
  if (finalOptionsForComponent.isPage && finalOptionsForComponent.options) {
73
75
  Reflect.deleteProperty(finalOptionsForComponent.options, "virtualHost");
74
76
  }
77
+ // 处理debounce和throttle前缀的方法(事件)配置
78
+ applyDebounceAndThrottle(finalOptionsForComponent.methods);
75
79
  // 初始化store数据到data并把store配置放入到data的__storeConfig__下为后续使用
76
80
  initStore(finalOptionsForComponent);
77
81
  // 处理computed和watch配置
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/api/DefineComponent/normalizeOptions/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/api/DefineComponent/normalizeOptions/index.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ import type { EmptyObject } from "hry-types/src/Misc/EmptyObject";
3
3
  import type { Func } from "hry-types/src/Misc/Func";
4
4
  import type { RequiredKeys } from "hry-types/src/Object/RequiredKeys";
5
5
  import type { ComputeObject } from "../../types/ComputeObj";
6
+ import type { Extra } from "../../types/Extra";
6
7
  import type { GetComponentPrefix } from "../../types/GetComponentPrefix";
7
8
  import type { InnerFields } from "../../types/InnerData";
8
9
  import type { WMCompOtherOption } from "../../types/OfficialTypeAlias";
@@ -40,7 +41,12 @@ import type { SubWatchOption } from "./SubWatch/SubWatchOption";
40
41
  type Options<RootDoc extends RootComponentType, IsPage extends boolean, CurrentCompDoc extends ComponentType, 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>, {
41
42
  data: ComputeObject<AllRootDataDoc & Replace<SubComputedDoc, Required<CurrentCompDoc["properties"]>> & SubStoreDoc & SubDataDoc & IInjectAllData>;
42
43
  }> & 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>>;
43
- type SubComponentConstructor<TRootDoc extends RootComponentType, TOriginalCompDoc extends ComponentType, TSupplementalPrefix extends string = "", IsPage extends boolean = TRootDoc["isPage"] extends true ? true : false, CurrentPrefix extends string = `${GetComponentPrefix<TOriginalCompDoc>}${Capitalize<TSupplementalPrefix>}`, CurrentCompDoc extends ComponentType = IfExtends<TSupplementalPrefix, "", TOriginalCompDoc, ReplacePrefix<TOriginalCompDoc, CurrentPrefix>>, AllRootDataDoc extends object = Required<TRootDoc["properties"]> & TRootDoc["data"] & TRootDoc["computed"] & TRootDoc["store"]> = <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, {}, {
44
+ type SubComponentConstructor<TRootDoc extends RootComponentType, TOriginalCompDoc extends ComponentType, TSupplementalPrefix extends string = "", IsPage extends boolean = TRootDoc["isPage"] extends true ? true : false, CurrentPrefix extends string = `${GetComponentPrefix<TOriginalCompDoc>}${Capitalize<TSupplementalPrefix>}`, CurrentCompDoc extends ComponentType = IfExtends<TSupplementalPrefix, "", TOriginalCompDoc & {
45
+ properties: Extra<CurrentPrefix>;
46
+ }, // 为文档增加格外字段
47
+ ReplacePrefix<TOriginalCompDoc & {
48
+ properties: Extra<CurrentPrefix>;
49
+ }, CurrentPrefix>>, AllRootDataDoc extends object = Required<TRootDoc["properties"]> & TRootDoc["data"] & TRootDoc["computed"] & TRootDoc["store"]> = <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, {}, {
44
50
  [k in keyof TSubStore]: ReturnType<NonNullable<TSubStore[k]>>;
45
51
  }>, 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<CurrentCompDoc["customEvents"]>, SubEventsDoc, MissingRequiredField>;
46
52
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/api/SubComponent/index.ts"],"names":[],"mappings":"AA2OA;;;GAGG;AACH,MAAM,UAAU,YAAY;IAK1B,8DAA8D;IAC9D,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":"AA4OA;;;GAGG;AACH,MAAM,UAAU,YAAY;IAK1B,8DAA8D;IAC9D,OAAO,CAAC,CAAC,OAAY,EAAE,EAAE,CAAC,OAAkC,CAAQ,CAAC;AACvE,CAAC"}
@@ -17,4 +17,5 @@ type NavigateToOption<T extends PageDoc> = {
17
17
  * navigateTo API 为 wx.navigateTo的语法糖,增加了data字段,最终的url数据拼接了通过encodeURIComponent编码(支持默认忽略的特殊符号)的data字段,在跳转页面的onload中通过decodeURIComponent解析url赋值给实例的data对象。为求使用时更加方便(无需对参数data解析再赋值)。且有ts类型提示。
18
18
  */
19
19
  export declare function navigateTo<TPageDoc extends PageDoc = never>(option: NoInfer<NavigateToOption<TPageDoc>>): Promise<WechatMiniprogram.NavigateToSuccessCallbackResult>;
20
+ export declare function redirectTo<TPageDoc extends PageDoc = never>(option: NoInfer<NavigateToOption<TPageDoc>>): Promise<WechatMiniprogram.GeneralCallbackResult>;
20
21
  export {};
@@ -24,4 +24,13 @@ export function navigateTo(option) {
24
24
  return wx.navigateTo(_encodeURIComponent(option));
25
25
  }
26
26
  }
27
- //# sourceMappingURL=navigateTo.js.map
27
+ export function redirectTo(option) {
28
+ // @ts-ignore 隐式索引
29
+ if (!option.data) {
30
+ return wx.redirectTo(option);
31
+ }
32
+ else {
33
+ return wx.redirectTo(_encodeURIComponent(option));
34
+ }
35
+ }
36
+ //# sourceMappingURL=wxSugar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wxSugar.js","sourceRoot":"","sources":["../../src/api/wxSugar.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAwBnD;;GAEG;AACH,SAAS,mBAAmB,CAC1B,MAAuE;IAEvE,MAAM,MAAM,GAAuB;QACjC,GAAG,EAAE,GAAG,MAAM,CAAC,GAAG,IAAI,WAAW,CAAC,GAAG,IACnC,kBAAkB,CAChB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAE/B,EAAE;KACH,CAAC;IAEF,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAEtC,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEvC,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACvC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CACxB,MAA2C;IAE3C,kBAAkB;IAClB,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACjB,OAAO,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;SAAM,CAAC;QACN,OAAO,EAAE,CAAC,UAAU,CAClB,mBAAmB,CAAC,MAAuD,CAAC,CAC7E,CAAC;IACJ,CAAC;AACH,CAAC;AACD,MAAM,UAAU,UAAU,CACxB,MAA2C;IAE3C,kBAAkB;IAClB,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACjB,OAAO,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;SAAM,CAAC;QACN,OAAO,EAAE,CAAC,UAAU,CAClB,mBAAmB,CAAC,MAAuD,CAAC,CAC7E,CAAC;IACJ,CAAC;AACH,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  import { DefineComponent } from "./api/DefineComponent";
2
2
  import { type IInjectInfo, instanceConfig } from "./api/InstanceInject/instanceConfig";
3
- import { navigateTo } from "./api/navigateTo";
4
3
  import { RootComponent } from "./api/RootComponent";
5
4
  import { SubComponent } from "./api/SubComponent";
5
+ import { navigateTo, redirectTo } from "./api/wxSugar";
6
6
  import type { CreateComponentType } from "./types/CreateComponentType";
7
7
  import type { DetailedType } from "./types/DetailedType";
8
8
  import type { ExtendComponentType } from "./types/ExtendComponentType";
@@ -11,4 +11,4 @@ export * from "./utils/_utils";
11
11
  export type { Bubbles, BubblesCapture, BubblesCaptureComposed, BubblesComposed, Capture, CaptureComposed, Composed, CustomEventsTags, } from "./api/RootComponent/CustomEvents/CustomEventsTag";
12
12
  export type { Vant, Wm } from "./thirdLib";
13
13
  export type { CurrentTargetDataset, Dataset, Detail, Mark, TargetDataset, WMBaseEvent, WMCustomEvent, } from "./types/OfficialTypeAlias";
14
- export { type CreateComponentType, DefineComponent, type DetailedType, type ExtendComponentType, type IInjectInfo, instanceConfig, navigateTo, type ParamsEqual, RootComponent, SubComponent, };
14
+ export { type CreateComponentType, DefineComponent, type DetailedType, type ExtendComponentType, type IInjectInfo, instanceConfig, navigateTo, type ParamsEqual, redirectTo, RootComponent, SubComponent, };
package/dist/index.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import { DefineComponent } from "./api/DefineComponent";
2
2
  import { instanceConfig } from "./api/InstanceInject/instanceConfig";
3
- import { navigateTo } from "./api/navigateTo";
4
3
  import { RootComponent } from "./api/RootComponent";
5
4
  import { SubComponent } from "./api/SubComponent";
5
+ import { navigateTo, redirectTo } from "./api/wxSugar";
6
6
  export * from "./utils/_utils";
7
- export { DefineComponent, instanceConfig, navigateTo, RootComponent, SubComponent, };
7
+ export { DefineComponent, instanceConfig, navigateTo, redirectTo, RootComponent, SubComponent, };
8
8
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAoB,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACvF,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAKlD,cAAc,gBAAgB,CAAC;AAwB/B,OAAO,EAEL,eAAe,EAIf,cAAc,EACd,UAAU,EAEV,aAAa,EACb,YAAY,GACb,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAoB,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACvF,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAKvD,cAAc,gBAAgB,CAAC;AAwB/B,OAAO,EAEL,eAAe,EAIf,cAAc,EACd,UAAU,EAEV,UAAU,EACV,aAAa,EACb,YAAY,GACb,CAAC"}
@@ -0,0 +1,3 @@
1
+ export type Extra<Prefix extends string> = {
2
+ [K in `${Prefix}_isReady`]?: boolean;
3
+ };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Extra.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Extra.js","sourceRoot":"","sources":["../../src/types/Extra.ts"],"names":[],"mappings":""}
@@ -1,7 +1,7 @@
1
- import { assertNonNullable } from "./assertNonNullable";
2
1
  import { debounce } from "./debounce";
3
2
  import { deepClone } from "./deepClone";
4
3
  import { deepEqual } from "./deepEqual";
5
4
  import { isEmptyObject } from "./isEmptyObject";
5
+ import { nonNullable } from "./nonNullable";
6
6
  import { throttle } from "./throttle";
7
- export { assertNonNullable, debounce, deepClone, deepEqual, isEmptyObject, throttle };
7
+ export { debounce, deepClone, deepEqual, isEmptyObject, nonNullable, throttle };
@@ -1,8 +1,8 @@
1
- import { assertNonNullable } from "./assertNonNullable";
2
1
  import { debounce } from "./debounce";
3
2
  import { deepClone } from "./deepClone";
4
3
  import { deepEqual } from "./deepEqual";
5
4
  import { isEmptyObject } from "./isEmptyObject";
5
+ import { nonNullable } from "./nonNullable";
6
6
  import { throttle } from "./throttle";
7
- export { assertNonNullable, debounce, deepClone, deepEqual, isEmptyObject, throttle };
7
+ export { debounce, deepClone, deepEqual, isEmptyObject, nonNullable, throttle };
8
8
  //# sourceMappingURL=_utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_utils.js","sourceRoot":"","sources":["../../src/utils/_utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC"}
1
+ {"version":3,"file":"_utils.js","sourceRoot":"","sources":["../../src/utils/_utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { Func } from "hry-types/src/Misc/Func";
2
+ /**
3
+ * 对象中的函数应用防抖和节流
4
+ * 规则 函数字段已下划线开始的后缀 如 xxx_debounced500 或 sub_xxx_throttled,无效后缀如 _debouncedxxx 不会被处理
5
+ * @param obj
6
+ */
7
+ export declare function applyDebounceAndThrottle(obj: Record<string, Func>): void;
@@ -0,0 +1,28 @@
1
+ import { debounce } from "./debounce";
2
+ import { throttle } from "./throttle";
3
+ /**
4
+ * 对象中的函数应用防抖和节流
5
+ * 规则 函数字段已下划线开始的后缀 如 xxx_debounced500 或 sub_xxx_throttled,无效后缀如 _debouncedxxx 不会被处理
6
+ * @param obj
7
+ */
8
+ export function applyDebounceAndThrottle(obj) {
9
+ for (const [key, value] of Object.entries(obj)) {
10
+ if (!key.includes("_"))
11
+ continue;
12
+ const suffix = key.split("_").at(-1);
13
+ const remaining = suffix.slice(9);
14
+ const delay = remaining === "" ? 300 : Number(remaining);
15
+ if (suffix.startsWith("debounced")) {
16
+ if (!isNaN(delay)) {
17
+ obj[key] = debounce(value, delay);
18
+ }
19
+ continue;
20
+ }
21
+ if (suffix.startsWith("throttled")) {
22
+ if (!isNaN(delay)) {
23
+ obj[key] = throttle(value, delay);
24
+ }
25
+ }
26
+ }
27
+ }
28
+ //# sourceMappingURL=applyDebounceAndThrottle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"applyDebounceAndThrottle.js","sourceRoot":"","sources":["../../src/utils/applyDebounceAndThrottle.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,GAAyB;IAChE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/C,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,SAAS;QACjC,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAW,CAAC;QAE/C,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,KAAK,GAAG,SAAS,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAEzD,IAAI,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;gBAClB,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACpC,CAAC;YACD,SAAS;QACX,CAAC;QAED,IAAI,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;gBAClB,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -1,9 +1,11 @@
1
+ type Callback = (...args: any[]) => any;
1
2
  /**
2
3
  * 防抖函数
3
4
  * 注意 需要在tsconfig.json的types中添加"node",否则NodeJS.Timeout会报错
4
- * 例如 应用在输入框输入时,只有在输入完成并delay后,才会触发搜索,
5
+ * 例如 在input框输入内容时,只有输入停止一段时间(wait)后,才会触发输入事件.
5
6
  * @param func
6
- * @param delay
7
+ * @param wait
7
8
  * @returns
8
9
  */
9
- export declare function debounce<F extends (...args: any[]) => any>(func: F, delay: number): (...args: Parameters<F>) => void;
10
+ export declare function debounce<F extends Callback>(func: F, wait?: number): (...args: Parameters<F>) => void;
11
+ export {};
@@ -1,19 +1,19 @@
1
1
  /**
2
2
  * 防抖函数
3
3
  * 注意 需要在tsconfig.json的types中添加"node",否则NodeJS.Timeout会报错
4
- * 例如 应用在输入框输入时,只有在输入完成并delay后,才会触发搜索,
4
+ * 例如 在input框输入内容时,只有输入停止一段时间(wait)后,才会触发输入事件.
5
5
  * @param func
6
- * @param delay
6
+ * @param wait
7
7
  * @returns
8
8
  */
9
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
10
- export function debounce(func, delay) {
9
+ /* istanbul ignore next */
10
+ export function debounce(func, wait = 300) {
11
11
  let timeoutId = null;
12
- return (...args) => {
12
+ return function (...args) {
13
13
  if (timeoutId) {
14
14
  clearTimeout(timeoutId);
15
15
  }
16
- timeoutId = setTimeout(() => func(...args), delay);
16
+ timeoutId = setTimeout(() => func.call(this, ...args), wait);
17
17
  };
18
18
  }
19
19
  //# sourceMappingURL=debounce.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"debounce.js","sourceRoot":"","sources":["../../src/utils/debounce.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,8DAA8D;AAC9D,MAAM,UAAU,QAAQ,CAAoC,IAAO,EAAE,KAAa;IAChF,IAAI,SAAS,GAA0B,IAAI,CAAC;IAE5C,OAAO,CAAC,GAAG,IAAmB,EAAQ,EAAE;QACtC,IAAI,SAAS,EAAE,CAAC;YACd,YAAY,CAAC,SAAS,CAAC,CAAC;QAC1B,CAAC;QAED,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;IACrD,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"debounce.js","sourceRoot":"","sources":["../../src/utils/debounce.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,2BAA2B;AAC3B,MAAM,UAAU,QAAQ,CAAqB,IAAO,EAAE,IAAI,GAAG,GAAG;IAC9D,IAAI,SAAS,GAA0B,IAAI,CAAC;IAE5C,OAAO,UAAwB,GAAG,IAAmB;QACnD,IAAI,SAAS,EAAE,CAAC;YACd,YAAY,CAAC,SAAS,CAAC,CAAC;QAC1B,CAAC;QAED,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IAC/D,CAAC,CAAC;AACJ,CAAC"}
@@ -4,4 +4,4 @@ import type { IfContains } from "hry-types/src/Any/IfContains";
4
4
  * @param value 类型中必须包含 null 或 undefined
5
5
  * @returns 去除 null 和 undefined 后的类型
6
6
  */
7
- export declare function assertNonNullable<T>(value: IfContains<T, null | undefined, T, "参数类型必须包含 null 或 undefined">): NonNullable<T>;
7
+ export declare function nonNullable<T>(value: IfContains<T, null | undefined, T, "参数类型必须包含 null 或 undefined">): NonNullable<T>;
@@ -3,11 +3,11 @@
3
3
  * @param value 类型中必须包含 null 或 undefined
4
4
  * @returns 去除 null 和 undefined 后的类型
5
5
  */
6
- export function assertNonNullable(value) {
6
+ export function nonNullable(value) {
7
7
  /* istanbul ignore next */
8
8
  if (value === null || value === undefined) {
9
9
  throw new Error(`${value} should not be null or undefined`);
10
10
  }
11
11
  return value;
12
12
  }
13
- //# sourceMappingURL=assertNonNullable.js.map
13
+ //# sourceMappingURL=nonNullable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nonNullable.js","sourceRoot":"","sources":["../../src/utils/nonNullable.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,UAAU,WAAW,CACzB,KAAsE;IAEtE,2BAA2B;IAC3B,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,kCAAkC,CAAC,CAAC;IAC9D,CAAC;IAED,OAAO,KAAuB,CAAC;AACjC,CAAC"}
@@ -5,13 +5,14 @@
5
5
  * @param interval 单位毫秒
6
6
  * @returns
7
7
  */
8
+ /* istanbul ignore next */
8
9
  export function throttle(callback, interval = 200) {
9
10
  let lastCall = 0;
10
11
  return function (...args) {
11
12
  const now = Date.now();
12
13
  if (now - lastCall >= interval) {
13
14
  lastCall = now;
14
- callback(...args);
15
+ callback.call(this, ...args);
15
16
  }
16
17
  };
17
18
  }
@@ -1 +1 @@
1
- {"version":3,"file":"throttle.js","sourceRoot":"","sources":["../../src/utils/throttle.ts"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH,MAAM,UAAU,QAAQ,CAAqB,QAAW,EAAE,QAAQ,GAAG,GAAG;IACtE,IAAI,QAAQ,GAAG,CAAC,CAAC;IAEjB,OAAO,UAAS,GAAG,IAAmB;QACpC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEvB,IAAI,GAAG,GAAG,QAAQ,IAAI,QAAQ,EAAE,CAAC;YAC/B,QAAQ,GAAG,GAAG,CAAC;YAEf,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;QACpB,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"throttle.js","sourceRoot":"","sources":["../../src/utils/throttle.ts"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH,2BAA2B;AAC3B,MAAM,UAAU,QAAQ,CAAqB,QAAW,EAAE,QAAQ,GAAG,GAAG;IACtE,IAAI,QAAQ,GAAG,CAAC,CAAC;IAEjB,OAAO,UAAwB,GAAG,IAAmB;QACnD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEvB,IAAI,GAAG,GAAG,QAAQ,IAAI,QAAQ,EAAE,CAAC;YAC/B,QAAQ,GAAG,GAAG,CAAC;YAEf,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "annil",
3
- "version": "1.8.2",
3
+ "version": "1.9.0",
4
4
  "description": "微信小程序(原生开发)插件",
5
5
  "main": "dist/index.js",
6
6
  "types": "src/index.ts",
@@ -17,7 +17,7 @@
17
17
  "tsc": "tsc --watch",
18
18
  "test": "jest --watch",
19
19
  "build": "tsc -p tsconfig.build.json",
20
- "check": "eslint . --fix --max-warnings 0 && (dprint check || (dprint fmt && exit 1)) "
20
+ "check": "tsc --noEmit && eslint . --fix --max-warnings 0 && (dprint check || (dprint fmt && exit 1)) "
21
21
  },
22
22
  "devDependencies": {
23
23
  "@commitlint/config-conventional": "^17.6.5",
@@ -5,9 +5,9 @@ import { getPathsValue } from "./getPathsValue";
5
5
  import { getPropertiesValue } from "./getPropertiesValue";
6
6
  import { initComputedAndGetCache } from "./initComputedAndGetCache";
7
7
 
8
- import { assertNonNullable } from "../../../../utils/assertNonNullable";
9
8
  import { deepClone } from "../../../../utils/deepClone";
10
9
  import { isEmptyObject } from "../../../../utils/isEmptyObject";
10
+ import { nonNullable } from "../../../../utils/nonNullable";
11
11
  import type { Instance } from "../../../RootComponent/Instance/RootComponentInstance";
12
12
  import type { FinalOptionsOfComponent } from "..";
13
13
 
@@ -68,7 +68,7 @@ export function computedWatchHandle(options: FinalOptionsOfComponent) {
68
68
  observersConfig[key] = function(this: Instance, ...newValue: unknown[]) {
69
69
  originObserversHandle?.call(this, ...newValue);
70
70
 
71
- const watchOldValue = assertNonNullable(this.data.__watchOldValue__);
71
+ const watchOldValue = nonNullable(this.data.__watchOldValue__);
72
72
  const oldValue = watchOldValue[key];
73
73
 
74
74
  if (deepEqual(newValue, oldValue)) return;
@@ -0,0 +1,9 @@
1
+ import type { Instance } from "../../../RootComponent/Instance/RootComponentInstance";
2
+
3
+ export function pagePathCheck(path?: string) {
4
+ return function(this: Instance) {
5
+ if (path && `/${this.is}` !== path) {
6
+ throw new Error(`页面路径错误,应为 /${this.is}`);
7
+ }
8
+ };
9
+ }
@@ -2,6 +2,7 @@ import type { Func } from "hry-types/src/Misc/_api";
2
2
  import { BBeforeCreate } from "../../../behaviors/BbeforeCreated";
3
3
  import { BStore } from "../../../behaviors/BStore";
4
4
  import { BthrottleDebounce } from "../../../behaviors/BthrottleDebounce";
5
+ import { applyDebounceAndThrottle } from "../../../utils/applyDebounceAndThrottle";
5
6
  import { isEmptyObject } from "../../../utils/isEmptyObject";
6
7
  import { instanceConfig } from "../../InstanceInject/instanceConfig";
7
8
  import type { ComputedConstraint } from "../../RootComponent/Computed/ComputedConstraint";
@@ -19,6 +20,7 @@ import { hijack } from "./hijackHandle";
19
20
  import { isPageCheck } from "./hijackHandle/isPageCheck";
20
21
  import { loadReceivedDataHandle } from "./hijackHandle/loadReceivedDataHandle";
21
22
  import { onLoadReceivedDataHandle } from "./hijackHandle/onLoadReceivedDataHandle";
23
+ import { pagePathCheck } from "./hijackHandle/pagePathCheck";
22
24
  import { initStore } from "./initStore";
23
25
  import { injectInfoHandler } from "./injectInfoHandler";
24
26
  import { InternalFieldProtection } from "./internalFieldProtection";
@@ -36,8 +38,6 @@ export type OptionsInnerFields = {
36
38
  __throttleDebounce__?: ThrottleDebounce;
37
39
  };
38
40
  methods: {
39
- disposer?: Record<string, Func>;
40
- // computedHandle加入
41
41
  __computedUpdater__?: Func;
42
42
  };
43
43
  };
@@ -55,7 +55,7 @@ export type FinalOptionsOfComponent = {
55
55
  data: DataConstraint & OptionsInnerFields["data"];
56
56
  observers: Record<string, Func>;
57
57
  behaviors: string[];
58
- methods: MethodsConstraint & OptionsInnerFields["methods"];
58
+ methods: MethodsConstraint;
59
59
  externalClasses: string[];
60
60
  pageLifetimes: PageLifetimesOption<false, object>["pageLifetimes"] & {};
61
61
  isPage: boolean;
@@ -66,6 +66,7 @@ export type FinalOptionsOfComponent = {
66
66
  watch: Record<string, Func>;
67
67
  lifetimes: LifetimesConstraint;
68
68
  };
69
+
69
70
  /**
70
71
  * 把DefineComponentOption转化为原生Component API支持的配置
71
72
  * @param defineComponentOption
@@ -129,7 +130,7 @@ export function normalizeOptions(
129
130
  hijack(
130
131
  finalOptionsForComponent.lifetimes,
131
132
  "attached",
132
- [isPageCheck(rootComponentOption?.isPage)],
133
+ [isPageCheck(rootComponentOption?.isPage), pagePathCheck(defineComponentOption.path)],
133
134
  );
134
135
 
135
136
  // 页面时删除预设的虚拟组件字段
@@ -137,6 +138,9 @@ export function normalizeOptions(
137
138
  Reflect.deleteProperty(finalOptionsForComponent.options, "virtualHost");
138
139
  }
139
140
 
141
+ // 处理debounce和throttle前缀的方法(事件)配置
142
+ applyDebounceAndThrottle(finalOptionsForComponent.methods);
143
+
140
144
  // 初始化store数据到data并把store配置放入到data的__storeConfig__下为后续使用
141
145
  initStore(finalOptionsForComponent);
142
146
 
@@ -10,7 +10,7 @@ import type {
10
10
  WMBaseEvent,
11
11
  WMCustomEvent,
12
12
  } from "../../../../types/OfficialTypeAlias";
13
- import { assertNonNullable } from "../../../../utils/assertNonNullable";
13
+ import { nonNullable } from "../../../../utils/nonNullable";
14
14
  import type { ComponentType } from "../../../DefineComponent/ReturnType/ComponentType";
15
15
  import { RootComponent } from "../..";
16
16
  import type { Bubbles, Capture } from "../../CustomEvents/CustomEventsTag";
@@ -42,7 +42,7 @@ RootComponent()({
42
42
  ) {
43
43
  Checking<typeof e.detail, string, Test.Pass>;
44
44
 
45
- const markData = assertNonNullable(e.mark).markData;
45
+ const markData = nonNullable(e.mark).markData;
46
46
 
47
47
  Checking<typeof markData, { id: string }, Test.Pass>;
48
48
 
@@ -160,3 +160,11 @@ SubComponent<Root, $aaa>()({
160
160
  },
161
161
  },
162
162
  });
163
+ // computed中可写 额外字段 isReady
164
+ SubComponent<{ data: { _num: number } }, $aaa>()({
165
+ computed: {
166
+ aaa_isReady() {
167
+ return true;
168
+ },
169
+ },
170
+ });
@@ -48,7 +48,7 @@ SubComponent<{}, CompDoc>()({
48
48
  },
49
49
  methods: {
50
50
  aaa_1() {
51
- // 4 this.data中的data配置数据
51
+ // 4 this.data中的data配置数据类型应该与文档类型一致,比如aaa_str的类型为"a" | "b"而非string
52
52
  void Checking<
53
53
  typeof this.data,
54
54
  ComputeIntersection<
@@ -80,3 +80,9 @@ SubComponent<{ data: { _num: number } }, CompDoc>()({
80
80
  },
81
81
  },
82
82
  });
83
+ // data中可写 额外字段 isReady
84
+ SubComponent<{ data: { _num: number } }, CompDoc>()({
85
+ data: {
86
+ aaa_isReady: false,
87
+ },
88
+ });
@@ -28,3 +28,9 @@ SubComponent<{}, DocA, "a">()({
28
28
  _aaaA_xxx: () => user.age,
29
29
  },
30
30
  });
31
+ // store中可写 额外字段 isReady
32
+ SubComponent<{ data: { _num: number } }, DocA, "a">()({
33
+ store: {
34
+ aaaA_isReady: () => false,
35
+ },
36
+ });
@@ -3,6 +3,7 @@ import type { EmptyObject } from "hry-types/src/Misc/EmptyObject";
3
3
  import type { Func } from "hry-types/src/Misc/Func";
4
4
  import type { RequiredKeys } from "hry-types/src/Object/RequiredKeys";
5
5
  import type { ComputeObject } from "../../types/ComputeObj";
6
+ import type { Extra } from "../../types/Extra";
6
7
  import type { GetComponentPrefix } from "../../types/GetComponentPrefix";
7
8
  import type { InnerFields } from "../../types/InnerData";
8
9
  import type { WMCompOtherOption } from "../../types/OfficialTypeAlias";
@@ -125,8 +126,8 @@ type SubComponentConstructor<
125
126
  CurrentCompDoc extends ComponentType = IfExtends<
126
127
  TSupplementalPrefix,
127
128
  "",
128
- TOriginalCompDoc,
129
- ReplacePrefix<TOriginalCompDoc, CurrentPrefix>
129
+ TOriginalCompDoc & { properties: Extra<CurrentPrefix> }, // 为文档增加格外字段
130
+ ReplacePrefix<TOriginalCompDoc & { properties: Extra<CurrentPrefix> }, CurrentPrefix> // 为文档增加格外字段
130
131
  >,
131
132
  AllRootDataDoc extends object =
132
133
  // rootDoc中的properties是带有可选的,这是为了给使用者(上层组件)提示,而在自身组件实例中并不存在可选状态,故加了Required,正因加了Required使得最终结果不可能为unknown而是`{}`,满足object约束
@@ -65,3 +65,15 @@ export function navigateTo<TPageDoc extends PageDoc = never>(
65
65
  );
66
66
  }
67
67
  }
68
+ export function redirectTo<TPageDoc extends PageDoc = never>(
69
+ option: NoInfer<NavigateToOption<TPageDoc>>,
70
+ ) {
71
+ // @ts-ignore 隐式索引
72
+ if (!option.data) {
73
+ return wx.redirectTo(option);
74
+ } else {
75
+ return wx.redirectTo(
76
+ _encodeURIComponent(option as NavigateToOption<TPageDoc> & { data: object }),
77
+ );
78
+ }
79
+ }
package/src/index.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  import { DefineComponent } from "./api/DefineComponent";
2
2
  import { type IInjectInfo, instanceConfig } from "./api/InstanceInject/instanceConfig";
3
- import { navigateTo } from "./api/navigateTo";
4
3
  import { RootComponent } from "./api/RootComponent";
5
4
  import { SubComponent } from "./api/SubComponent";
5
+ import { navigateTo, redirectTo } from "./api/wxSugar";
6
6
  import type { CreateComponentType } from "./types/CreateComponentType";
7
7
  import type { DetailedType } from "./types/DetailedType";
8
8
  import type { ExtendComponentType } from "./types/ExtendComponentType";
@@ -40,6 +40,7 @@ export {
40
40
  instanceConfig,
41
41
  navigateTo,
42
42
  type ParamsEqual,
43
+ redirectTo,
43
44
  RootComponent,
44
45
  SubComponent,
45
46
  };
@@ -1 +1 @@
1
- // export type Extra<Prefix extends string> = Record<`${Prefix}_isReady`, boolean>;
1
+ export type Extra<Prefix extends string> = { [K in `${Prefix}_isReady`]?: boolean };
@@ -1,8 +1,8 @@
1
- import { assertNonNullable } from "./assertNonNullable";
2
1
  import { debounce } from "./debounce";
3
2
  import { deepClone } from "./deepClone";
4
3
  import { deepEqual } from "./deepEqual";
5
4
  import { isEmptyObject } from "./isEmptyObject";
5
+ import { nonNullable } from "./nonNullable";
6
6
  import { throttle } from "./throttle";
7
7
 
8
- export { assertNonNullable, debounce, deepClone, deepEqual, isEmptyObject, throttle };
8
+ export { debounce, deepClone, deepEqual, isEmptyObject, nonNullable, throttle };
@@ -0,0 +1,31 @@
1
+ import type { Func } from "hry-types/src/Misc/Func";
2
+ import { debounce } from "./debounce";
3
+ import { throttle } from "./throttle";
4
+
5
+ /**
6
+ * 对象中的函数应用防抖和节流
7
+ * 规则 函数字段已下划线开始的后缀 如 xxx_debounced500 或 sub_xxx_throttled,无效后缀如 _debouncedxxx 不会被处理
8
+ * @param obj
9
+ */
10
+ export function applyDebounceAndThrottle(obj: Record<string, Func>) {
11
+ for (const [key, value] of Object.entries(obj)) {
12
+ if (!key.includes("_")) continue;
13
+ const suffix = key.split("_").at(-1) as string;
14
+
15
+ const remaining = suffix.slice(9);
16
+ const delay = remaining === "" ? 300 : Number(remaining);
17
+
18
+ if (suffix.startsWith("debounced")) {
19
+ if (!isNaN(delay)) {
20
+ obj[key] = debounce(value, delay);
21
+ }
22
+ continue;
23
+ }
24
+
25
+ if (suffix.startsWith("throttled")) {
26
+ if (!isNaN(delay)) {
27
+ obj[key] = throttle(value, delay);
28
+ }
29
+ }
30
+ }
31
+ }
@@ -1,20 +1,22 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ type Callback = (...args: any[]) => any;
1
3
  /**
2
4
  * 防抖函数
3
5
  * 注意 需要在tsconfig.json的types中添加"node",否则NodeJS.Timeout会报错
4
- * 例如 应用在输入框输入时,只有在输入完成并delay后,才会触发搜索,
6
+ * 例如 在input框输入内容时,只有输入停止一段时间(wait)后,才会触发输入事件.
5
7
  * @param func
6
- * @param delay
8
+ * @param wait
7
9
  * @returns
8
10
  */
9
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
10
- export function debounce<F extends (...args: any[]) => any>(func: F, delay: number): (...args: Parameters<F>) => void {
11
+ /* istanbul ignore next */
12
+ export function debounce<F extends Callback>(func: F, wait = 300): (...args: Parameters<F>) => void {
11
13
  let timeoutId: NodeJS.Timeout | null = null;
12
14
 
13
- return (...args: Parameters<F>): void => {
15
+ return function(this: unknown, ...args: Parameters<F>): void {
14
16
  if (timeoutId) {
15
17
  clearTimeout(timeoutId);
16
18
  }
17
19
 
18
- timeoutId = setTimeout(() => func(...args), delay);
20
+ timeoutId = setTimeout(() => func.call(this, ...args), wait);
19
21
  };
20
22
  }
@@ -5,7 +5,7 @@ import type { IfContains } from "hry-types/src/Any/IfContains";
5
5
  * @param value 类型中必须包含 null 或 undefined
6
6
  * @returns 去除 null 和 undefined 后的类型
7
7
  */
8
- export function assertNonNullable<T>(
8
+ export function nonNullable<T>(
9
9
  value: IfContains<T, null | undefined, T, "参数类型必须包含 null 或 undefined">,
10
10
  ): NonNullable<T> {
11
11
  /* istanbul ignore next */
@@ -8,16 +8,17 @@ type Callback = (...args: any[]) => any;
8
8
  * @param interval 单位毫秒
9
9
  * @returns
10
10
  */
11
+ /* istanbul ignore next */
11
12
  export function throttle<F extends Callback>(callback: F, interval = 200): (...args: Parameters<F>) => void {
12
13
  let lastCall = 0;
13
14
 
14
- return function(...args: Parameters<F>) {
15
+ return function(this: unknown, ...args: Parameters<F>) {
15
16
  const now = Date.now();
16
17
 
17
18
  if (now - lastCall >= interval) {
18
19
  lastCall = now;
19
20
 
20
- callback(...args);
21
+ callback.call(this, ...args);
21
22
  }
22
23
  };
23
24
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"navigateTo.js","sourceRoot":"","sources":["../../src/api/navigateTo.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAwBnD;;GAEG;AACH,SAAS,mBAAmB,CAC1B,MAAuE;IAEvE,MAAM,MAAM,GAAuB;QACjC,GAAG,EAAE,GAAG,MAAM,CAAC,GAAG,IAAI,WAAW,CAAC,GAAG,IACnC,kBAAkB,CAChB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAE/B,EAAE;KACH,CAAC;IAEF,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAEtC,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEvC,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACvC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CACxB,MAA2C;IAE3C,kBAAkB;IAClB,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACjB,OAAO,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;SAAM,CAAC;QACN,OAAO,EAAE,CAAC,UAAU,CAClB,mBAAmB,CAAC,MAAuD,CAAC,CAC7E,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"assertNonNullable.js","sourceRoot":"","sources":["../../src/utils/assertNonNullable.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAC/B,KAAsE;IAEtE,2BAA2B;IAC3B,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,kCAAkC,CAAC,CAAC;IAC9D,CAAC;IAED,OAAO,KAAuB,CAAC;AACjC,CAAC"}