annil 1.8.3 → 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.
- package/CHANGELOG.md +12 -0
- package/README.md +1 -1
- package/dist/api/DefineComponent/normalizeOptions/hijackHandle/pagePathCheck.d.ts +2 -0
- package/dist/api/DefineComponent/normalizeOptions/hijackHandle/pagePathCheck.js +8 -0
- package/dist/api/DefineComponent/normalizeOptions/hijackHandle/pagePathCheck.js.map +1 -0
- package/dist/api/DefineComponent/normalizeOptions/index.d.ts +1 -2
- package/dist/api/DefineComponent/normalizeOptions/index.js +5 -1
- package/dist/api/DefineComponent/normalizeOptions/index.js.map +1 -1
- package/dist/api/{navigateTo.d.ts → wxSugar.d.ts} +1 -0
- package/dist/api/{navigateTo.js → wxSugar.js} +10 -1
- package/dist/api/wxSugar.js.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/utils/applyDebounceAndThrottle.d.ts +7 -0
- package/dist/utils/applyDebounceAndThrottle.js +28 -0
- package/dist/utils/applyDebounceAndThrottle.js.map +1 -0
- package/dist/utils/debounce.d.ts +5 -3
- package/dist/utils/debounce.js +6 -6
- package/dist/utils/debounce.js.map +1 -1
- package/dist/utils/throttle.js +2 -1
- package/dist/utils/throttle.js.map +1 -1
- package/package.json +1 -1
- package/src/api/DefineComponent/normalizeOptions/hijackHandle/pagePathCheck.ts +9 -0
- package/src/api/DefineComponent/normalizeOptions/index.ts +8 -4
- package/src/api/{navigateTo.ts → wxSugar.ts} +12 -0
- package/src/index.ts +2 -1
- package/src/utils/applyDebounceAndThrottle.ts +31 -0
- package/src/utils/debounce.ts +8 -6
- package/src/utils/throttle.ts +3 -2
- package/dist/api/navigateTo.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,18 @@
|
|
|
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
|
+
|
|
7
19
|
## [1.8.3](https://github.com/missannil/annil/compare/v1.8.2...v1.8.3) (2024-09-08)
|
|
8
20
|
|
|
9
21
|
|
package/README.md
CHANGED
|
@@ -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
|
|
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":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AASrE,OAAO,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AAClF,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAC;AACnF,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/api/DefineComponent/normalizeOptions/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -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
|
-
|
|
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,
|
|
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,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"}
|
package/dist/utils/debounce.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
type Callback = (...args: any[]) => any;
|
|
1
2
|
/**
|
|
2
3
|
* 防抖函数
|
|
3
4
|
* 注意 需要在tsconfig.json的types中添加"node",否则NodeJS.Timeout会报错
|
|
4
|
-
* 例如
|
|
5
|
+
* 例如 在input框输入内容时,只有输入停止一段时间(wait)后,才会触发输入事件.
|
|
5
6
|
* @param func
|
|
6
|
-
* @param
|
|
7
|
+
* @param wait
|
|
7
8
|
* @returns
|
|
8
9
|
*/
|
|
9
|
-
export declare function debounce<F extends
|
|
10
|
+
export declare function debounce<F extends Callback>(func: F, wait?: number): (...args: Parameters<F>) => void;
|
|
11
|
+
export {};
|
package/dist/utils/debounce.js
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* 防抖函数
|
|
3
3
|
* 注意 需要在tsconfig.json的types中添加"node",否则NodeJS.Timeout会报错
|
|
4
|
-
* 例如
|
|
4
|
+
* 例如 在input框输入内容时,只有输入停止一段时间(wait)后,才会触发输入事件.
|
|
5
5
|
* @param func
|
|
6
|
-
* @param
|
|
6
|
+
* @param wait
|
|
7
7
|
* @returns
|
|
8
8
|
*/
|
|
9
|
-
|
|
10
|
-
export function debounce(func,
|
|
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),
|
|
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":"
|
|
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"}
|
package/dist/utils/throttle.js
CHANGED
|
@@ -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,
|
|
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
|
@@ -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
|
|
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
|
|
|
@@ -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
|
};
|
|
@@ -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
|
+
}
|
package/src/utils/debounce.ts
CHANGED
|
@@ -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
|
-
* 例如
|
|
6
|
+
* 例如 在input框输入内容时,只有输入停止一段时间(wait)后,才会触发输入事件.
|
|
5
7
|
* @param func
|
|
6
|
-
* @param
|
|
8
|
+
* @param wait
|
|
7
9
|
* @returns
|
|
8
10
|
*/
|
|
9
|
-
|
|
10
|
-
export function debounce<F extends
|
|
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),
|
|
20
|
+
timeoutId = setTimeout(() => func.call(this, ...args), wait);
|
|
19
21
|
};
|
|
20
22
|
}
|
package/src/utils/throttle.ts
CHANGED
|
@@ -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"}
|