wevu 7.0.3 → 7.0.4
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/dist/dev/package.mjs +1 -1
- package/dist/dev/router/routeSync.mjs +8 -2
- package/dist/dev/router/routeSync.mjs.map +1 -1
- package/dist/dev/router/useRoute.mjs +14 -7
- package/dist/dev/router/useRoute.mjs.map +1 -1
- package/dist/dev/runtime/register/runtimeInstance/setupContext.mjs +15 -1
- package/dist/dev/runtime/register/runtimeInstance/setupContext.mjs.map +1 -1
- package/dist/fetch.d.mts +4 -4
- package/dist/jsx-runtime.d.mts +4 -5
- package/dist/macros/shared.d.mts +14 -15
- package/dist/macros.d.mts +22 -22
- package/dist/package.mjs +1 -1
- package/dist/reactivity/computed.d.mts +8 -9
- package/dist/reactivity/core.d.mts +14 -15
- package/dist/reactivity/reactive/mutation.d.mts +6 -7
- package/dist/reactivity/reactive/patch.d.mts +4 -5
- package/dist/reactivity/reactive/shallow.d.mts +3 -4
- package/dist/reactivity/reactive/shared.d.mts +2 -3
- package/dist/reactivity/reactive.d.mts +6 -6
- package/dist/reactivity/readonly.d.mts +7 -8
- package/dist/reactivity/ref.d.mts +14 -15
- package/dist/reactivity/shallowRef.d.mts +5 -6
- package/dist/reactivity/toRefs.d.mts +5 -6
- package/dist/reactivity/traverse.d.mts +2 -3
- package/dist/reactivity/watch/types.d.mts +18 -19
- package/dist/reactivity/watch.d.mts +8 -8
- package/dist/router/createRouter.d.mts +2 -3
- package/dist/router/navigationCore.d.mts +3 -4
- package/dist/router/resolve.d.mts +2 -3
- package/dist/router/routeSync.mjs +1 -1
- package/dist/router/types.d.mts +38 -39
- package/dist/router/useRoute.d.mts +5 -6
- package/dist/router/useRoute.mjs +1 -1
- package/dist/router/useRouter.d.mts +2 -3
- package/dist/routerInternal/query.d.mts +3 -4
- package/dist/routerInternal/types.d.mts +2 -3
- package/dist/runtime/app/pending.d.mts +3 -4
- package/dist/runtime/app.d.mts +2 -3
- package/dist/runtime/css.d.mts +3 -4
- package/dist/runtime/defaults.d.mts +5 -6
- package/dist/runtime/define.d.mts +15 -16
- package/dist/runtime/disposables.d.mts +6 -7
- package/dist/runtime/elementIntersectionObserver.d.mts +5 -6
- package/dist/runtime/hooks/base.d.mts +7 -8
- package/dist/runtime/hooks/register.d.mts +26 -27
- package/dist/runtime/hooks/vue.d.mts +12 -13
- package/dist/runtime/intersectionObserver.d.mts +4 -5
- package/dist/runtime/jsxIsland.d.mts +19 -20
- package/dist/runtime/layoutBridge.d.mts +12 -13
- package/dist/runtime/noSetData.d.mts +3 -4
- package/dist/runtime/pageEnvironment.d.mts +9 -10
- package/dist/runtime/pageLayout.d.mts +9 -10
- package/dist/runtime/pageScroll.d.mts +4 -5
- package/dist/runtime/provide.d.mts +7 -7
- package/dist/runtime/provideStore.d.mts +2 -3
- package/dist/runtime/pullDownRefresh.d.mts +4 -5
- package/dist/runtime/register/app.d.mts +2 -3
- package/dist/runtime/register/component.d.mts +2 -3
- package/dist/runtime/register/inline.d.mts +3 -4
- package/dist/runtime/register/runtimeInstance/setupContext.mjs +1 -1
- package/dist/runtime/register/runtimeInstance.d.mts +4 -5
- package/dist/runtime/register/setup.d.mts +2 -3
- package/dist/runtime/register/watch.d.mts +3 -4
- package/dist/runtime/selectorQuery.d.mts +15 -16
- package/dist/runtime/template.d.mts +4 -5
- package/dist/runtime/templateRefTypes.d.mts +2 -1
- package/dist/runtime/templateRefs.d.mts +2 -3
- package/dist/runtime/types/core.d.mts +9 -10
- package/dist/runtime/types/miniprogram.d.mts +10 -10
- package/dist/runtime/types/miniprogramHost.d.mts +41 -41
- package/dist/runtime/types/miniprogramHostSources.d.mts +21 -22
- package/dist/runtime/types/options.d.mts +6 -7
- package/dist/runtime/types/props/propTypes.d.mts +16 -17
- package/dist/runtime/types/props/router.d.mts +13 -14
- package/dist/runtime/types/props/setup.d.mts +7 -8
- package/dist/runtime/types/runtime.d.mts +7 -8
- package/dist/runtime/types/setData.d.mts +3 -4
- package/dist/runtime/types.d.mts +8 -8
- package/dist/runtime/uniAppHost.d.mts +2 -3
- package/dist/runtime/updatePerformance.d.mts +5 -6
- package/dist/runtime/use.d.mts +3 -4
- package/dist/runtime/vueCompat/context.d.mts +4 -5
- package/dist/runtime/vueCompat/model.d.mts +9 -10
- package/dist/runtime/vueCompat/router.d.mts +3 -4
- package/dist/runtime/vueCompat/templateRef.d.mts +4 -5
- package/dist/scheduler.d.mts +2 -3
- package/dist/store/define.d.mts +3 -4
- package/dist/store/manager.d.mts +2 -3
- package/dist/store/storeToRefs.d.mts +3 -4
- package/dist/store/types.d.mts +10 -11
- package/dist/version.d.mts +2 -3
- package/dist/vue-augment.d.mts +2 -1
- package/dist/vue-demi.d.mts +5 -5
- package/dist/vue-types.d.mts +2 -2
- package/dist/weappIntrinsicElements/base.d.mts +12 -13
- package/dist/weappIntrinsicElements/elements/ad-custom.d.mts +2 -3
- package/dist/weappIntrinsicElements/elements/ad.d.mts +2 -3
- package/dist/weappIntrinsicElements/elements/audio.d.mts +2 -3
- package/dist/weappIntrinsicElements/elements/block.d.mts +2 -3
- package/dist/weappIntrinsicElements/elements/button.d.mts +2 -3
- package/dist/weappIntrinsicElements/elements/camera.d.mts +2 -3
- package/dist/weappIntrinsicElements/elements/canvas.d.mts +2 -3
- package/dist/weappIntrinsicElements/elements/checkbox-group.d.mts +2 -3
- package/dist/weappIntrinsicElements/elements/checkbox.d.mts +2 -3
- package/dist/weappIntrinsicElements/elements/cover-image.d.mts +2 -3
- package/dist/weappIntrinsicElements/elements/cover-view.d.mts +2 -3
- package/dist/weappIntrinsicElements/elements/editor.d.mts +2 -3
- package/dist/weappIntrinsicElements/elements/form.d.mts +2 -3
- package/dist/weappIntrinsicElements/elements/functional-page-navigator.d.mts +2 -3
- package/dist/weappIntrinsicElements/elements/icon.d.mts +2 -3
- package/dist/weappIntrinsicElements/elements/image.d.mts +2 -3
- package/dist/weappIntrinsicElements/elements/import.d.mts +2 -3
- package/dist/weappIntrinsicElements/elements/include.d.mts +2 -3
- package/dist/weappIntrinsicElements/elements/input.d.mts +2 -3
- package/dist/weappIntrinsicElements/elements/keyboard-accessory.d.mts +2 -3
- package/dist/weappIntrinsicElements/elements/label.d.mts +2 -3
- package/dist/weappIntrinsicElements/elements/live-player.d.mts +2 -3
- package/dist/weappIntrinsicElements/elements/live-pusher.d.mts +2 -3
- package/dist/weappIntrinsicElements/elements/map.d.mts +2 -3
- package/dist/weappIntrinsicElements/elements/match-media.d.mts +2 -3
- package/dist/weappIntrinsicElements/elements/movable-area.d.mts +2 -3
- package/dist/weappIntrinsicElements/elements/movable-view.d.mts +2 -3
- package/dist/weappIntrinsicElements/elements/navigation-bar.d.mts +2 -3
- package/dist/weappIntrinsicElements/elements/navigator.d.mts +2 -3
- package/dist/weappIntrinsicElements/elements/official-account.d.mts +2 -3
- package/dist/weappIntrinsicElements/elements/open-data.d.mts +2 -3
- package/dist/weappIntrinsicElements/elements/page-container.d.mts +2 -3
- package/dist/weappIntrinsicElements/elements/page-meta.d.mts +2 -3
- package/dist/weappIntrinsicElements/elements/picker-view-column.d.mts +2 -3
- package/dist/weappIntrinsicElements/elements/picker-view.d.mts +2 -3
- package/dist/weappIntrinsicElements/elements/picker.d.mts +2 -3
- package/dist/weappIntrinsicElements/elements/progress.d.mts +2 -3
- package/dist/weappIntrinsicElements/elements/radio-group.d.mts +2 -3
- package/dist/weappIntrinsicElements/elements/radio.d.mts +2 -3
- package/dist/weappIntrinsicElements/elements/rich-text.d.mts +2 -3
- package/dist/weappIntrinsicElements/elements/scroll-view.d.mts +2 -3
- package/dist/weappIntrinsicElements/elements/share-element.d.mts +2 -3
- package/dist/weappIntrinsicElements/elements/slider.d.mts +2 -3
- package/dist/weappIntrinsicElements/elements/slot.d.mts +2 -3
- package/dist/weappIntrinsicElements/elements/swiper-item.d.mts +2 -3
- package/dist/weappIntrinsicElements/elements/swiper.d.mts +2 -3
- package/dist/weappIntrinsicElements/elements/switch.d.mts +2 -3
- package/dist/weappIntrinsicElements/elements/template.d.mts +2 -3
- package/dist/weappIntrinsicElements/elements/text.d.mts +2 -3
- package/dist/weappIntrinsicElements/elements/textarea.d.mts +2 -3
- package/dist/weappIntrinsicElements/elements/video.d.mts +2 -3
- package/dist/weappIntrinsicElements/elements/view.d.mts +2 -3
- package/dist/weappIntrinsicElements/elements/voip-room.d.mts +2 -3
- package/dist/weappIntrinsicElements/elements/web-view.d.mts +2 -3
- package/dist/weappIntrinsicElements.d.mts +5 -5
- package/package.json +2 -2
package/dist/dev/package.mjs
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { getCurrentMiniProgramPages } from "../runtime/platform.mjs";
|
|
2
|
+
|
|
1
3
|
//#region src/router/routeSync.ts
|
|
2
4
|
const ROUTE_SYNC_NATIVE_METHODS = [
|
|
3
5
|
"switchTab",
|
|
@@ -19,7 +21,7 @@ function notifyRouteStateSync(payload) {
|
|
|
19
21
|
handler(payload);
|
|
20
22
|
} catch (_unused) {}
|
|
21
23
|
}
|
|
22
|
-
function createNativeRouteStateSyncPayload(methodName, option) {
|
|
24
|
+
function createNativeRouteStateSyncPayload(methodName, option, sourcePage) {
|
|
23
25
|
if (methodName === "navigateBack") return {
|
|
24
26
|
method: methodName,
|
|
25
27
|
source: "native"
|
|
@@ -28,12 +30,14 @@ function createNativeRouteStateSyncPayload(methodName, option) {
|
|
|
28
30
|
const url = option.url;
|
|
29
31
|
if (typeof url === "string") return {
|
|
30
32
|
method: methodName,
|
|
33
|
+
page: sourcePage,
|
|
31
34
|
source: "native",
|
|
32
35
|
url
|
|
33
36
|
};
|
|
34
37
|
}
|
|
35
38
|
return {
|
|
36
39
|
method: methodName,
|
|
40
|
+
page: sourcePage,
|
|
37
41
|
source: "native"
|
|
38
42
|
};
|
|
39
43
|
}
|
|
@@ -46,11 +50,13 @@ function installRouteStateSyncOnNativeRouter(nativeRouter) {
|
|
|
46
50
|
const original = router[methodName];
|
|
47
51
|
if (typeof original !== "function") continue;
|
|
48
52
|
router[methodName] = function routeStateSyncNativeRouterMethod(option, ...args) {
|
|
53
|
+
const pages = getCurrentMiniProgramPages();
|
|
54
|
+
const sourcePage = pages[pages.length - 1];
|
|
49
55
|
let synced = false;
|
|
50
56
|
const syncRouteState = () => {
|
|
51
57
|
if (synced) return;
|
|
52
58
|
synced = true;
|
|
53
|
-
notifyRouteStateSync(createNativeRouteStateSyncPayload(methodName, option));
|
|
59
|
+
notifyRouteStateSync(createNativeRouteStateSyncPayload(methodName, option, sourcePage));
|
|
54
60
|
};
|
|
55
61
|
const nextOption = option && typeof option === "object" ? {
|
|
56
62
|
...option,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routeSync.mjs","names":[],"sources":["../../../src/router/routeSync.ts"],"sourcesContent":["import type { MiniProgramPageLike } from '../routerInternal/shared'\nimport type { RouteLocationNormalizedLoaded } from './types'\n\nexport interface RouteStateSyncPayload {\n page?: MiniProgramPageLike\n route?: RouteLocationNormalizedLoaded\n url?: string\n source?: 'native' | 'page' | 'router'\n method?: NativeRouterMethodName\n}\n\ntype RouteStateSyncHandler = (payload?: RouteStateSyncPayload) => void\ntype NativeRouterMethodName = 'switchTab' | 'reLaunch' | 'redirectTo' | 'navigateTo' | 'navigateBack'\n\nconst ROUTE_SYNC_NATIVE_METHODS: readonly NativeRouterMethodName[] = ['switchTab', 'reLaunch', 'redirectTo', 'navigateTo', 'navigateBack']\nconst routeStateSyncHandlers = new Set<RouteStateSyncHandler>()\nconst patchedNativeRouters = new WeakSet<Record<string, any>>()\n\nexport function registerRouteStateSyncHandler(handler: RouteStateSyncHandler): () => void {\n routeStateSyncHandlers.add(handler)\n return () => {\n routeStateSyncHandlers.delete(handler)\n }\n}\n\nexport function notifyRouteStateSync(payload?: RouteStateSyncPayload) {\n for (const handler of routeStateSyncHandlers) {\n try {\n handler(payload)\n }\n catch {\n // 忽略单个 route 订阅者异常,避免阻塞原生导航成功回调。\n }\n }\n}\n\nfunction createNativeRouteStateSyncPayload(methodName: NativeRouterMethodName
|
|
1
|
+
{"version":3,"file":"routeSync.mjs","names":[],"sources":["../../../src/router/routeSync.ts"],"sourcesContent":["import type { MiniProgramPageLike } from '../routerInternal/shared'\nimport type { RouteLocationNormalizedLoaded } from './types'\nimport { getCurrentMiniProgramPages } from '../runtime/platform'\n\nexport interface RouteStateSyncPayload {\n page?: MiniProgramPageLike\n route?: RouteLocationNormalizedLoaded\n url?: string\n source?: 'native' | 'page' | 'router'\n method?: NativeRouterMethodName\n}\n\ntype RouteStateSyncHandler = (payload?: RouteStateSyncPayload) => void\ntype NativeRouterMethodName = 'switchTab' | 'reLaunch' | 'redirectTo' | 'navigateTo' | 'navigateBack'\n\nconst ROUTE_SYNC_NATIVE_METHODS: readonly NativeRouterMethodName[] = ['switchTab', 'reLaunch', 'redirectTo', 'navigateTo', 'navigateBack']\nconst routeStateSyncHandlers = new Set<RouteStateSyncHandler>()\nconst patchedNativeRouters = new WeakSet<Record<string, any>>()\n\nexport function registerRouteStateSyncHandler(handler: RouteStateSyncHandler): () => void {\n routeStateSyncHandlers.add(handler)\n return () => {\n routeStateSyncHandlers.delete(handler)\n }\n}\n\nexport function notifyRouteStateSync(payload?: RouteStateSyncPayload) {\n for (const handler of routeStateSyncHandlers) {\n try {\n handler(payload)\n }\n catch {\n // 忽略单个 route 订阅者异常,避免阻塞原生导航成功回调。\n }\n }\n}\n\nfunction createNativeRouteStateSyncPayload(\n methodName: NativeRouterMethodName,\n option: unknown,\n sourcePage: MiniProgramPageLike | undefined,\n): RouteStateSyncPayload | undefined {\n if (methodName === 'navigateBack') {\n return {\n method: methodName,\n source: 'native',\n }\n }\n if (option && typeof option === 'object') {\n const url = (option as Record<string, unknown>).url\n if (typeof url === 'string') {\n return {\n method: methodName,\n page: sourcePage,\n source: 'native',\n url,\n }\n }\n }\n return {\n method: methodName,\n page: sourcePage,\n source: 'native',\n }\n}\n\nexport function installRouteStateSyncOnNativeRouter(nativeRouter: unknown) {\n if (!nativeRouter || typeof nativeRouter !== 'object') {\n return\n }\n const router = nativeRouter as Record<string, any>\n if (patchedNativeRouters.has(router)) {\n return\n }\n patchedNativeRouters.add(router)\n\n for (const methodName of ROUTE_SYNC_NATIVE_METHODS) {\n const original = router[methodName]\n if (typeof original !== 'function') {\n continue\n }\n\n router[methodName] = function routeStateSyncNativeRouterMethod(this: unknown, option?: unknown, ...args: any[]) {\n const pages = getCurrentMiniProgramPages() as MiniProgramPageLike[]\n const sourcePage = pages[pages.length - 1]\n let synced = false\n const syncRouteState = () => {\n if (synced) {\n return\n }\n synced = true\n notifyRouteStateSync(createNativeRouteStateSyncPayload(methodName, option, sourcePage))\n }\n\n const nextOption = option && typeof option === 'object'\n ? {\n ...(option as Record<string, any>),\n success: (...successArgs: any[]) => {\n syncRouteState()\n const originalSuccess = (option as Record<string, any>).success\n return typeof originalSuccess === 'function'\n ? originalSuccess(...successArgs)\n : undefined\n },\n }\n : option\n\n const result = original.call(this, nextOption, ...args)\n if (result && typeof (result as PromiseLike<unknown>).then === 'function') {\n ;(result as PromiseLike<unknown>).then(syncRouteState, () => {})\n }\n return result\n }\n }\n}\n"],"mappings":";;;AAeA,MAAM,4BAA+D;CAAC;CAAa;CAAY;CAAc;CAAc;AAAc;AACzI,MAAM,yCAAyB,IAAI,IAA2B;AAC9D,MAAM,uCAAuB,IAAI,QAA6B;AAE9D,SAAgB,8BAA8B,SAA4C;CACxF,uBAAuB,IAAI,OAAO;CAClC,aAAa;EACX,uBAAuB,OAAO,OAAO;CACvC;AACF;AAEA,SAAgB,qBAAqB,SAAiC;CACpE,KAAK,MAAM,WAAW,wBACpB,IAAI;EACF,QAAQ,OAAO;CACjB,kBACM,CAEN;AAEJ;AAEA,SAAS,kCACP,YACA,QACA,YACmC;CACnC,IAAI,eAAe,gBACjB,OAAO;EACL,QAAQ;EACR,QAAQ;CACV;CAEF,IAAI,UAAU,OAAO,WAAW,UAAU;EACxC,MAAM,MAAO,OAAmC;EAChD,IAAI,OAAO,QAAQ,UACjB,OAAO;GACL,QAAQ;GACR,MAAM;GACN,QAAQ;GACR;EACF;CAEJ;CACA,OAAO;EACL,QAAQ;EACR,MAAM;EACN,QAAQ;CACV;AACF;AAEA,SAAgB,oCAAoC,cAAuB;CACzE,IAAI,CAAC,gBAAgB,OAAO,iBAAiB,UAC3C;CAEF,MAAM,SAAS;CACf,IAAI,qBAAqB,IAAI,MAAM,GACjC;CAEF,qBAAqB,IAAI,MAAM;CAE/B,KAAK,MAAM,cAAc,2BAA2B;EAClD,MAAM,WAAW,OAAO;EACxB,IAAI,OAAO,aAAa,YACtB;EAGF,OAAO,cAAc,SAAS,iCAAgD,QAAkB,GAAG,MAAa;GAC9G,MAAM,QAAQ,2BAA2B;GACzC,MAAM,aAAa,MAAM,MAAM,SAAS;GACxC,IAAI,SAAS;GACb,MAAM,uBAAuB;IAC3B,IAAI,QACF;IAEF,SAAS;IACT,qBAAqB,kCAAkC,YAAY,QAAQ,UAAU,CAAC;GACxF;GAEA,MAAM,aAAa,UAAU,OAAO,WAAW,WAC3C;IACE,GAAI;IACJ,UAAU,GAAG,gBAAuB;KAClC,eAAe;KACf,MAAM,kBAAmB,OAA+B;KACxD,OAAO,OAAO,oBAAoB,aAC9B,gBAAgB,GAAG,WAAW,IAC9B;IACN;GACF,IACA;GAEJ,MAAM,SAAS,SAAS,KAAK,MAAM,YAAY,GAAG,IAAI;GACtD,IAAI,UAAU,OAAQ,OAAgC,SAAS,YAC5D,AAAC,OAAgC,KAAK,sBAAsB,CAAC,CAAC;GAEjE,OAAO;EACT;CACF;AACF"}
|
|
@@ -9,17 +9,23 @@ import { resolveCurrentRoute, resolvePageRoute } from "../routerInternal/locatio
|
|
|
9
9
|
import { cloneLocationQuery, cloneRouteLocationRedirectedFrom, cloneRouteMeta, cloneRouteParams, cloneRouteRecordMatchedList } from "../routerInternal/snapshots.mjs";
|
|
10
10
|
import { useNativePageRouter as useNativePageRouter$1, useNativeRouter as useNativeRouter$1 } from "../runtime/vueCompat/router.mjs";
|
|
11
11
|
import { resolveRouteLocation } from "./resolve.mjs";
|
|
12
|
+
import { WEVU_NATIVE_INSTANCE_KEY } from "@weapp-core/constants";
|
|
12
13
|
|
|
13
14
|
//#region src/router/useRoute.ts
|
|
14
15
|
function isPageLikeInstance(instance) {
|
|
15
16
|
return typeof instance.route === "string" || typeof instance.__route__ === "string";
|
|
16
17
|
}
|
|
18
|
+
function resolveRouteControllerInstance(instance) {
|
|
19
|
+
const nativeInstance = instance[WEVU_NATIVE_INSTANCE_KEY];
|
|
20
|
+
return nativeInstance && typeof nativeInstance === "object" ? nativeInstance : instance;
|
|
21
|
+
}
|
|
17
22
|
function shouldSyncRouteStateForInstance(instance, isPageController, payload) {
|
|
18
23
|
if ((payload === null || payload === void 0 ? void 0 : payload.source) === "router") return true;
|
|
19
24
|
if (!isPageController) return true;
|
|
20
|
-
|
|
25
|
+
const routeControllerInstance = resolveRouteControllerInstance(instance);
|
|
26
|
+
if (payload === null || payload === void 0 ? void 0 : payload.page) return payload.page === routeControllerInstance;
|
|
21
27
|
const pages = getCurrentMiniProgramPages();
|
|
22
|
-
return pages[pages.length - 1] ===
|
|
28
|
+
return pages[pages.length - 1] === routeControllerInstance;
|
|
23
29
|
}
|
|
24
30
|
function applyRouteState(routeState, nextRoute) {
|
|
25
31
|
routeState.path = nextRoute.path;
|
|
@@ -43,12 +49,13 @@ function createRouteStateController(options = {}) {
|
|
|
43
49
|
const setupContext = getCurrentSetupContext();
|
|
44
50
|
if (!setupContext) throw new Error("useRoute() 必须在 setup() 的同步阶段调用");
|
|
45
51
|
const fallbackPage = setupContext.instance;
|
|
52
|
+
const initialRouteControllerInstance = resolveRouteControllerInstance(fallbackPage);
|
|
46
53
|
const resolveRoute = (_options$resolveRoute = options.resolveRoute) !== null && _options$resolveRoute !== void 0 ? _options$resolveRoute : ((route) => {
|
|
47
54
|
var _getActiveRouter$reso, _getActiveRouter;
|
|
48
55
|
return (_getActiveRouter$reso = (_getActiveRouter = getActiveRouter()) === null || _getActiveRouter === void 0 ? void 0 : _getActiveRouter.resolve(route)) !== null && _getActiveRouter$reso !== void 0 ? _getActiveRouter$reso : route;
|
|
49
56
|
});
|
|
50
57
|
const currentRoute = resolveRoute(resolveCurrentRoute(void 0, fallbackPage));
|
|
51
|
-
const isPageController = isPageLikeInstance(
|
|
58
|
+
const isPageController = isPageLikeInstance(initialRouteControllerInstance) || getCurrentMiniProgramPages().includes(initialRouteControllerInstance);
|
|
52
59
|
const routeState = reactive({
|
|
53
60
|
path: currentRoute.path,
|
|
54
61
|
fullPath: currentRoute.fullPath,
|
|
@@ -83,14 +90,14 @@ function createRouteStateController(options = {}) {
|
|
|
83
90
|
syncRoute(void 0, payload.route, payload);
|
|
84
91
|
return;
|
|
85
92
|
}
|
|
86
|
-
if (payload === null || payload === void 0 ? void 0 : payload.page) {
|
|
87
|
-
syncRoute(void 0, resolvePageRoute(payload.page), payload);
|
|
88
|
-
return;
|
|
89
|
-
}
|
|
90
93
|
if (payload === null || payload === void 0 ? void 0 : payload.url) {
|
|
91
94
|
syncRoute(void 0, resolveRouteLocation(payload.url, routeState.path), payload);
|
|
92
95
|
return;
|
|
93
96
|
}
|
|
97
|
+
if (payload === null || payload === void 0 ? void 0 : payload.page) {
|
|
98
|
+
syncRoute(void 0, resolvePageRoute(payload.page), payload);
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
94
101
|
syncRoute(void 0, void 0, payload);
|
|
95
102
|
});
|
|
96
103
|
onUnload(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRoute.mjs","names":["useNativeRouterInternal","useNativePageRouterInternal"],"sources":["../../../src/router/useRoute.ts"],"sourcesContent":["import type { MiniProgramPageLifetime } from '../runtime/types'\nimport type { SetupContextRouter } from '../runtime/types/props'\nimport type { RouteStateSyncPayload } from './routeSync'\nimport type { LocationQueryRaw, RouteLocationNormalizedLoaded } from './types'\nimport { reactive, readonly } from '../reactivity'\nimport { cloneLocationQuery, cloneRouteLocationRedirectedFrom, cloneRouteMeta, cloneRouteParams, cloneRouteRecordMatchedList, resolveCurrentRoute, resolvePageRoute } from '../routerInternal/shared'\nimport { getCurrentSetupContext, onLoad, onReady, onRouteDone, onShow, onUnload } from '../runtime/hooks'\nimport { getCurrentMiniProgramPages } from '../runtime/platform'\nimport {\n useNativePageRouter as useNativePageRouterInternal,\n useNativeRouter as useNativeRouterInternal,\n} from '../runtime/vueCompat'\nimport { getActiveRouter } from './instance'\nimport { resolveRouteLocation } from './resolve'\nimport { registerRouteStateSyncHandler } from './routeSync'\n\nexport interface UseRouteOptions {\n resolveRoute?: (route: RouteLocationNormalizedLoaded) => RouteLocationNormalizedLoaded\n}\n\ninterface RouteStateControllerOptions extends UseRouteOptions {\n beforeRouteStateSync?: (\n nextRoute: RouteLocationNormalizedLoaded,\n payload: RouteStateSyncPayload,\n ) => void\n}\n\nexport interface RouteStateController {\n route: Readonly<RouteLocationNormalizedLoaded>\n}\n\nfunction isPageLikeInstance(instance: Record<string, any>): boolean {\n return typeof instance.route === 'string' || typeof instance.__route__ === 'string'\n}\n\nfunction shouldSyncRouteStateForInstance(\n instance: Record<string, any>,\n isPageController: boolean,\n payload: RouteStateSyncPayload | undefined,\n): boolean {\n if (payload?.source === 'router') {\n return true\n }\n\n // 页面级 route controller 只处理当前页面的广播,避免 DevTools 在 onUnload/onShow\n // 交错时让隐藏页面重复执行导航守卫。组件级 controller 仍接收全局同步。\n if (!isPageController) {\n return true\n }\n\n if (payload?.page) {\n return payload.page ===
|
|
1
|
+
{"version":3,"file":"useRoute.mjs","names":["useNativeRouterInternal","useNativePageRouterInternal"],"sources":["../../../src/router/useRoute.ts"],"sourcesContent":["import type { MiniProgramPageLifetime } from '../runtime/types'\nimport type { SetupContextRouter } from '../runtime/types/props'\nimport type { RouteStateSyncPayload } from './routeSync'\nimport type { LocationQueryRaw, RouteLocationNormalizedLoaded } from './types'\nimport { WEVU_NATIVE_INSTANCE_KEY } from '@weapp-core/constants'\nimport { reactive, readonly } from '../reactivity'\nimport { cloneLocationQuery, cloneRouteLocationRedirectedFrom, cloneRouteMeta, cloneRouteParams, cloneRouteRecordMatchedList, resolveCurrentRoute, resolvePageRoute } from '../routerInternal/shared'\nimport { getCurrentSetupContext, onLoad, onReady, onRouteDone, onShow, onUnload } from '../runtime/hooks'\nimport { getCurrentMiniProgramPages } from '../runtime/platform'\nimport {\n useNativePageRouter as useNativePageRouterInternal,\n useNativeRouter as useNativeRouterInternal,\n} from '../runtime/vueCompat'\nimport { getActiveRouter } from './instance'\nimport { resolveRouteLocation } from './resolve'\nimport { registerRouteStateSyncHandler } from './routeSync'\n\nexport interface UseRouteOptions {\n resolveRoute?: (route: RouteLocationNormalizedLoaded) => RouteLocationNormalizedLoaded\n}\n\ninterface RouteStateControllerOptions extends UseRouteOptions {\n beforeRouteStateSync?: (\n nextRoute: RouteLocationNormalizedLoaded,\n payload: RouteStateSyncPayload,\n ) => void\n}\n\nexport interface RouteStateController {\n route: Readonly<RouteLocationNormalizedLoaded>\n}\n\nfunction isPageLikeInstance(instance: Record<string, any>): boolean {\n return typeof instance.route === 'string' || typeof instance.__route__ === 'string'\n}\n\nfunction resolveRouteControllerInstance(instance: Record<string, any>): Record<string, any> {\n const nativeInstance = instance[WEVU_NATIVE_INSTANCE_KEY]\n return nativeInstance && typeof nativeInstance === 'object'\n ? nativeInstance\n : instance\n}\n\nfunction shouldSyncRouteStateForInstance(\n instance: Record<string, any>,\n isPageController: boolean,\n payload: RouteStateSyncPayload | undefined,\n): boolean {\n if (payload?.source === 'router') {\n return true\n }\n\n // 页面级 route controller 只处理当前页面的广播,避免 DevTools 在 onUnload/onShow\n // 交错时让隐藏页面重复执行导航守卫。组件级 controller 仍接收全局同步。\n if (!isPageController) {\n return true\n }\n\n const routeControllerInstance = resolveRouteControllerInstance(instance)\n if (payload?.page) {\n return payload.page === routeControllerInstance\n }\n\n const pages = getCurrentMiniProgramPages()\n return pages[pages.length - 1] === routeControllerInstance\n}\n\nfunction applyRouteState(\n routeState: RouteLocationNormalizedLoaded,\n nextRoute: RouteLocationNormalizedLoaded,\n) {\n routeState.path = nextRoute.path\n routeState.fullPath = nextRoute.fullPath\n routeState.query = cloneLocationQuery(nextRoute.query)\n routeState.hash = nextRoute.hash\n routeState.params = cloneRouteParams(nextRoute.params)\n if (nextRoute.name === undefined) {\n delete (routeState as Partial<RouteLocationNormalizedLoaded>).name\n }\n else {\n routeState.name = nextRoute.name\n }\n if (nextRoute.meta === undefined) {\n delete (routeState as Partial<RouteLocationNormalizedLoaded>).meta\n }\n else {\n routeState.meta = cloneRouteMeta(nextRoute.meta)\n }\n if (nextRoute.href === undefined) {\n delete (routeState as Partial<RouteLocationNormalizedLoaded>).href\n }\n else {\n routeState.href = nextRoute.href\n }\n if (nextRoute.matched === undefined) {\n delete (routeState as Partial<RouteLocationNormalizedLoaded>).matched\n }\n else {\n routeState.matched = cloneRouteRecordMatchedList(nextRoute.matched)\n }\n if (nextRoute.redirectedFrom === undefined) {\n delete (routeState as Partial<RouteLocationNormalizedLoaded>).redirectedFrom\n }\n else {\n routeState.redirectedFrom = cloneRouteLocationRedirectedFrom(nextRoute.redirectedFrom)\n }\n}\n\nexport function createRouteStateController(options: RouteStateControllerOptions = {}): RouteStateController {\n const setupContext = getCurrentSetupContext()\n if (!setupContext) {\n throw new Error('useRoute() 必须在 setup() 的同步阶段调用')\n }\n\n const fallbackPage = setupContext.instance\n const initialRouteControllerInstance = resolveRouteControllerInstance(fallbackPage)\n const resolveRoute = options.resolveRoute\n ?? ((route: RouteLocationNormalizedLoaded) => getActiveRouter()?.resolve(route) ?? route)\n const currentRoute = resolveRoute(resolveCurrentRoute(undefined, fallbackPage))\n const isPageController = isPageLikeInstance(initialRouteControllerInstance)\n || getCurrentMiniProgramPages().includes(initialRouteControllerInstance)\n const routeState = reactive<RouteLocationNormalizedLoaded>({\n path: currentRoute.path,\n fullPath: currentRoute.fullPath,\n query: cloneLocationQuery(currentRoute.query),\n hash: currentRoute.hash,\n params: cloneRouteParams(currentRoute.params),\n })\n applyRouteState(routeState, currentRoute)\n\n function syncRoute(\n queryOverride?: LocationQueryRaw,\n routeOverride?: RouteLocationNormalizedLoaded,\n payload?: RouteStateSyncPayload,\n ) {\n const nextRoute = routeOverride\n ? resolveRoute(routeOverride)\n : resolveRoute(resolveCurrentRoute(queryOverride, fallbackPage))\n if (payload) {\n options.beforeRouteStateSync?.(nextRoute, payload)\n }\n applyRouteState(routeState, nextRoute)\n }\n\n onLoad((query: Parameters<NonNullable<MiniProgramPageLifetime['onLoad']>>[0]) => {\n syncRoute(query as unknown as LocationQueryRaw)\n })\n onReady(() => {\n syncRoute()\n })\n onShow(() => {\n syncRoute()\n })\n onRouteDone(() => {\n syncRoute()\n })\n const unregisterRouteStateSync = registerRouteStateSyncHandler((payload) => {\n if (!shouldSyncRouteStateForInstance(fallbackPage, isPageController, payload)) {\n return\n }\n if (payload?.route) {\n syncRoute(undefined, payload.route, payload)\n return\n }\n if (payload?.url) {\n syncRoute(undefined, resolveRouteLocation(payload.url, routeState.path), payload)\n return\n }\n if (payload?.page) {\n syncRoute(undefined, resolvePageRoute(payload.page), payload)\n return\n }\n syncRoute(undefined, undefined, payload)\n })\n onUnload(() => {\n unregisterRouteStateSync()\n })\n\n return {\n route: readonly(routeState) as Readonly<RouteLocationNormalizedLoaded>,\n }\n}\n\nexport function useRoute(options: UseRouteOptions = {}): Readonly<RouteLocationNormalizedLoaded> {\n return createRouteStateController(options).route\n}\n\n/**\n * @description 获取当前组件路径语义的原生 Router\n */\nexport function useNativeRouter(): SetupContextRouter {\n return useNativeRouterInternal()\n}\n\n/**\n * @description 获取当前页面路径语义的原生 Page Router\n */\nexport function useNativePageRouter(): SetupContextRouter {\n return useNativePageRouterInternal()\n}\n"],"mappings":"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"}
|
|
@@ -120,6 +120,20 @@ function ensureSetupContextInstance(target, runtime) {
|
|
|
120
120
|
const maybeCached = target[WEVU_SETUP_CONTEXT_INSTANCE_KEY];
|
|
121
121
|
if (maybeCached && typeof maybeCached === "object") return maybeCached;
|
|
122
122
|
const setupInstanceBridge = Object.create(null);
|
|
123
|
+
try {
|
|
124
|
+
Object.defineProperty(setupInstanceBridge, WEVU_NATIVE_INSTANCE_KEY, {
|
|
125
|
+
configurable: true,
|
|
126
|
+
enumerable: false,
|
|
127
|
+
get() {
|
|
128
|
+
const runtimeState = runtime === null || runtime === void 0 ? void 0 : runtime.state;
|
|
129
|
+
const rawRuntimeState = runtimeState && typeof runtimeState === "object" ? toRaw(runtimeState) : void 0;
|
|
130
|
+
const nativeInstance = rawRuntimeState === null || rawRuntimeState === void 0 ? void 0 : rawRuntimeState[WEVU_NATIVE_INSTANCE_KEY];
|
|
131
|
+
return nativeInstance && typeof nativeInstance === "object" ? nativeInstance : target;
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
} catch (_unused4) {
|
|
135
|
+
setupInstanceBridge[WEVU_NATIVE_INSTANCE_KEY] = target;
|
|
136
|
+
}
|
|
123
137
|
const resolvePublicValue = (key) => {
|
|
124
138
|
var _WEVU_PROPS_KEY, _ref;
|
|
125
139
|
const runtimeProxy = runtime === null || runtime === void 0 ? void 0 : runtime.proxy;
|
|
@@ -221,7 +235,7 @@ function ensureSetupContextInstance(target, runtime) {
|
|
|
221
235
|
enumerable: false,
|
|
222
236
|
writable: true
|
|
223
237
|
});
|
|
224
|
-
} catch (
|
|
238
|
+
} catch (_unused5) {
|
|
225
239
|
target[WEVU_SETUP_CONTEXT_INSTANCE_KEY] = setupInstance;
|
|
226
240
|
}
|
|
227
241
|
return setupInstance;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setupContext.mjs","names":[],"sources":["../../../../../src/runtime/register/runtimeInstance/setupContext.ts"],"sourcesContent":["import type { WatchStopHandle } from '../../../reactivity'\nimport type {\n InternalRuntimeState,\n MiniProgramAdapter,\n MiniProgramIntersectionObserverOptions,\n RuntimeInstance,\n SetupContextNativeInstance,\n TriggerEventOptions,\n} from '../../types'\nimport {\n WEVU_NATIVE_INSTANCE_KEY,\n WEVU_PROPS_KEY,\n WEVU_SETUP_CONTEXT_INSTANCE_KEY,\n WEVU_SLOT_NAMES_PROP,\n} from '@weapp-core/constants'\nimport { toRaw } from '../../../reactivity'\nimport { hasOwn } from '../../../utils'\nimport { isNativeBridgeMethod, markNativeBridgeMethod } from '../../nativeBridge'\nimport { markNoSetData } from '../../noSetData'\nimport { getCurrentMiniProgramRuntimeCapabilities, getMiniProgramGlobalObject, supportsCurrentMiniProgramRuntimeCapability } from '../../platform'\n\nexport { normalizeEmitPayload } from '../../emit'\n\ntype AdapterWithSetData = Required<MiniProgramAdapter> & {\n __wevu_enableSetData?: () => void\n __wevu_setVisibility?: (visible: boolean) => void\n}\n\nexport type SetupInstanceMethodName = 'triggerEvent' | 'createSelectorQuery' | 'createIntersectionObserver' | 'setData' | 'setUpdatePerformanceListener'\n\nexport const setupInstanceMethodNames: SetupInstanceMethodName[] = [\n 'triggerEvent',\n 'createSelectorQuery',\n 'createIntersectionObserver',\n 'setData',\n 'setUpdatePerformanceListener',\n]\n\nexport function createSetupSlotsFallback() {\n return Object.freeze(Object.create(null)) as Record<string, never>\n}\n\nconst SLOT_RENDER_FN = () => []\n\nfunction normalizeSlotNames(value: unknown): string[] {\n if (Array.isArray(value)) {\n return [...new Set(value.filter((item): item is string => typeof item === 'string' && item.length > 0))]\n }\n if (!value || typeof value !== 'object') {\n return []\n }\n return Object.entries(value as Record<string, unknown>)\n .filter(([, enabled]) => Boolean(enabled))\n .map(([name]) => name)\n}\n\nexport function createSetupSlotsProxy(props: Record<string, any>) {\n if (!hasOwn(props, WEVU_SLOT_NAMES_PROP)) {\n return createSetupSlotsFallback()\n }\n\n const resolveNames = () => normalizeSlotNames(props[WEVU_SLOT_NAMES_PROP])\n const isEnabled = (key: PropertyKey) => typeof key === 'string' && resolveNames().includes(key)\n\n return new Proxy(Object.create(null), {\n get(_target, key) {\n if (isEnabled(key)) {\n return SLOT_RENDER_FN\n }\n return undefined\n },\n has(_target, key) {\n return isEnabled(key)\n },\n ownKeys() {\n return resolveNames()\n },\n getOwnPropertyDescriptor(_target, key) {\n if (!isEnabled(key)) {\n return undefined\n }\n return {\n configurable: true,\n enumerable: true,\n value: SLOT_RENDER_FN,\n }\n },\n set() {\n return false\n },\n deleteProperty() {\n return false\n },\n }) as Record<string, any>\n}\n\nexport function attachRuntimeSlots(runtimeState: Record<string, any>, props: Record<string, any>) {\n const slots = createSetupSlotsProxy(props)\n try {\n Object.defineProperty(runtimeState, '$slots', {\n value: slots,\n configurable: true,\n enumerable: false,\n writable: false,\n })\n }\n catch {\n runtimeState.$slots = slots\n }\n return slots\n}\n\nexport function createNoopWatchStopHandle(): WatchStopHandle {\n const stopHandle = (() => {}) as WatchStopHandle\n stopHandle.stop = () => {}\n stopHandle.pause = () => {}\n stopHandle.resume = () => {}\n return stopHandle\n}\n\nexport function safeMarkNoSetData<T extends object>(value: T): T {\n try {\n return markNoSetData(value)\n }\n catch {\n return value\n }\n}\n\nfunction resolveRuntimeNativeMethodOwner(\n runtime: RuntimeInstance<any, any, any>,\n target: InternalRuntimeState,\n methodName: SetupInstanceMethodName,\n) {\n const runtimeState = runtime?.state\n const runtimeRawState = runtimeState && typeof runtimeState === 'object'\n ? toRaw(runtimeState as any)\n : undefined\n const runtimeProxy = runtime?.proxy as object | undefined\n const isBridgeMethod = (candidate: object) => {\n const candidateMethod = (candidate as any)[methodName]\n if (typeof candidateMethod !== 'function') {\n return false\n }\n if (isNativeBridgeMethod(candidateMethod)) {\n return true\n }\n const targetMethod = (target as any)[methodName]\n return typeof targetMethod === 'function' && candidateMethod === targetMethod\n }\n const isValidNativeCandidate = (candidate: unknown) => {\n if (!candidate || typeof candidate !== 'object') {\n return false\n }\n if (candidate === target || candidate === runtimeProxy) {\n return false\n }\n if (isBridgeMethod(candidate)) {\n return false\n }\n return typeof (candidate as any)[methodName] === 'function'\n }\n const nativeFromState = runtimeRawState ? (runtimeRawState as any)[WEVU_NATIVE_INSTANCE_KEY] : undefined\n if (isValidNativeCandidate(nativeFromState)) {\n return nativeFromState as InternalRuntimeState\n }\n\n const runtimeInstance = (runtime as any)?.instance\n if (isValidNativeCandidate(runtimeInstance)) {\n return runtimeInstance as InternalRuntimeState\n }\n return undefined\n}\n\nfunction defineSetupInstanceMethod(\n target: Record<string, any>,\n methodName: SetupInstanceMethodName,\n handler: (...args: any[]) => any,\n) {\n markNativeBridgeMethod(handler)\n try {\n Object.defineProperty(target, methodName, {\n value: handler,\n configurable: true,\n enumerable: false,\n writable: true,\n })\n }\n catch {\n ;(target as any)[methodName] = handler\n }\n}\n\nexport function ensureSetupContextInstance(\n target: InternalRuntimeState,\n runtime: RuntimeInstance<any, any, any>,\n) {\n const maybeCached = (target as any)[WEVU_SETUP_CONTEXT_INSTANCE_KEY]\n if (maybeCached && typeof maybeCached === 'object') {\n return maybeCached as SetupContextNativeInstance\n }\n\n const setupInstanceBridge: Record<string, any> = Object.create(null)\n const resolvePublicValue = (key: PropertyKey) => {\n const runtimeProxy = runtime?.proxy as Record<PropertyKey, any> | undefined\n if (runtimeProxy && Reflect.has(runtimeProxy, key)) {\n return {\n found: true,\n value: Reflect.get(runtimeProxy, key),\n }\n }\n const runtimeProps = (runtime?.state as any)?.[WEVU_PROPS_KEY]\n ?? (target as any)[WEVU_PROPS_KEY]\n if (runtimeProps && typeof runtimeProps === 'object' && hasOwn(runtimeProps, key)) {\n return {\n found: true,\n value: Reflect.get(runtimeProps, key),\n }\n }\n return { found: false, value: undefined }\n }\n const resolveSetupBridgeOwner = (methodName: SetupInstanceMethodName) => {\n const owner = resolveRuntimeNativeMethodOwner(runtime, target, methodName)\n if (owner) {\n return owner\n }\n const fallbackMethod = (target as any)[methodName]\n if (typeof fallbackMethod === 'function' && !isNativeBridgeMethod(fallbackMethod)) {\n return target\n }\n return undefined\n }\n\n defineSetupInstanceMethod(setupInstanceBridge, 'triggerEvent', (...args: [string, any?, TriggerEventOptions?]) => {\n const [eventName, detail, options] = args\n const nativeOwner = resolveSetupBridgeOwner('triggerEvent')\n if (nativeOwner && typeof (nativeOwner as any).triggerEvent === 'function') {\n if (args.length >= 3) {\n ;(nativeOwner as any).triggerEvent(eventName, detail, options)\n }\n else {\n ;(nativeOwner as any).triggerEvent(eventName, detail)\n }\n }\n })\n\n defineSetupInstanceMethod(setupInstanceBridge, 'createSelectorQuery', () => {\n const nativeOwner = resolveSetupBridgeOwner('createSelectorQuery')\n if (nativeOwner && typeof (nativeOwner as any).createSelectorQuery === 'function') {\n return (nativeOwner as any).createSelectorQuery()\n }\n\n const miniProgramGlobal = getMiniProgramGlobalObject()\n if (\n !supportsCurrentMiniProgramRuntimeCapability('globalCreateSelectorQuery')\n || !miniProgramGlobal\n || typeof miniProgramGlobal.createSelectorQuery !== 'function'\n ) {\n return undefined\n }\n\n const query = miniProgramGlobal.createSelectorQuery()\n if (!query) {\n return query\n }\n if (\n !getCurrentMiniProgramRuntimeCapabilities().selectorQueryScopeByIn\n || typeof query.in !== 'function'\n ) {\n return query\n }\n\n const scopedOwner = resolveRuntimeNativeMethodOwner(runtime, target, 'setData') ?? target\n return query.in(scopedOwner as any)\n })\n\n defineSetupInstanceMethod(\n setupInstanceBridge,\n 'createIntersectionObserver',\n (options?: MiniProgramIntersectionObserverOptions) => {\n const nativeOwner = resolveSetupBridgeOwner('createIntersectionObserver')\n if (nativeOwner && typeof (nativeOwner as any).createIntersectionObserver === 'function') {\n return (nativeOwner as any).createIntersectionObserver(options ?? {})\n }\n\n const miniProgramGlobal = getMiniProgramGlobalObject()\n if (\n !supportsCurrentMiniProgramRuntimeCapability('globalCreateIntersectionObserver')\n || !miniProgramGlobal\n || typeof miniProgramGlobal.createIntersectionObserver !== 'function'\n ) {\n return undefined\n }\n\n const scopedOwner = resolveRuntimeNativeMethodOwner(runtime, target, 'setData') ?? target\n if (getCurrentMiniProgramRuntimeCapabilities().intersectionObserverScopeByParameter) {\n return miniProgramGlobal.createIntersectionObserver(scopedOwner as any, options ?? {})\n }\n return miniProgramGlobal.createIntersectionObserver(options ?? {})\n },\n )\n\n defineSetupInstanceMethod(setupInstanceBridge, 'setData', (payload: Record<string, any>, callback?: () => void) => {\n const nativeOwner = resolveSetupBridgeOwner('setData')\n if (nativeOwner && typeof (nativeOwner as any).setData === 'function') {\n return (nativeOwner as any).setData(payload, callback)\n }\n\n const adapter = runtime?.adapter as AdapterWithSetData | undefined\n const result = typeof adapter?.setData === 'function'\n ? adapter.setData(payload)\n : undefined\n if (typeof callback === 'function') {\n callback()\n }\n return result\n })\n\n defineSetupInstanceMethod(\n setupInstanceBridge,\n 'setUpdatePerformanceListener',\n (listener?: ((result: Record<string, any>) => void)) => {\n const nativeOwner = resolveSetupBridgeOwner('setUpdatePerformanceListener')\n if (nativeOwner && typeof (nativeOwner as any).setUpdatePerformanceListener === 'function') {\n return (nativeOwner as any).setUpdatePerformanceListener(listener)\n }\n return undefined\n },\n )\n\n const setupInstance = safeMarkNoSetData(new Proxy(setupInstanceBridge, {\n get(bridgeTarget, key, receiver) {\n if (Reflect.has(bridgeTarget, key)) {\n return Reflect.get(bridgeTarget, key, receiver)\n }\n if (key === '$el') {\n return resolveRuntimeNativeMethodOwner(runtime, target, 'setData') ?? target\n }\n if (key === 'renderRoot' || key === 'shadowRoot') {\n const nativeOwner = resolveRuntimeNativeMethodOwner(runtime, target, 'setData') ?? target\n return (nativeOwner as any)[key]\n }\n const publicValue = resolvePublicValue(key)\n if (publicValue.found) {\n return publicValue.value\n }\n const value = (target as any)[key as any]\n if (typeof value === 'function') {\n return value.bind(target)\n }\n return value\n },\n has(bridgeTarget, key) {\n return Reflect.has(bridgeTarget, key) || resolvePublicValue(key).found || key in (target as any)\n },\n set(bridgeTarget, key, value) {\n if (Reflect.has(bridgeTarget, key)) {\n // 仅覆写 setup 暴露的 bridge 方法,避免回写原生实例引发递归调用。\n ;(bridgeTarget as any)[key as any] = value\n return true\n }\n ;(target as any)[key as any] = value\n return true\n },\n }) as SetupContextNativeInstance)\n\n try {\n Object.defineProperty(target as Record<string, any>, WEVU_SETUP_CONTEXT_INSTANCE_KEY, {\n value: setupInstance,\n configurable: true,\n enumerable: false,\n writable: true,\n })\n }\n catch {\n ;(target as any)[WEVU_SETUP_CONTEXT_INSTANCE_KEY] = setupInstance\n }\n\n return setupInstance\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"setupContext.mjs","names":[],"sources":["../../../../../src/runtime/register/runtimeInstance/setupContext.ts"],"sourcesContent":["import type { WatchStopHandle } from '../../../reactivity'\nimport type {\n InternalRuntimeState,\n MiniProgramAdapter,\n MiniProgramIntersectionObserverOptions,\n RuntimeInstance,\n SetupContextNativeInstance,\n TriggerEventOptions,\n} from '../../types'\nimport {\n WEVU_NATIVE_INSTANCE_KEY,\n WEVU_PROPS_KEY,\n WEVU_SETUP_CONTEXT_INSTANCE_KEY,\n WEVU_SLOT_NAMES_PROP,\n} from '@weapp-core/constants'\nimport { toRaw } from '../../../reactivity'\nimport { hasOwn } from '../../../utils'\nimport { isNativeBridgeMethod, markNativeBridgeMethod } from '../../nativeBridge'\nimport { markNoSetData } from '../../noSetData'\nimport { getCurrentMiniProgramRuntimeCapabilities, getMiniProgramGlobalObject, supportsCurrentMiniProgramRuntimeCapability } from '../../platform'\n\nexport { normalizeEmitPayload } from '../../emit'\n\ntype AdapterWithSetData = Required<MiniProgramAdapter> & {\n __wevu_enableSetData?: () => void\n __wevu_setVisibility?: (visible: boolean) => void\n}\n\nexport type SetupInstanceMethodName = 'triggerEvent' | 'createSelectorQuery' | 'createIntersectionObserver' | 'setData' | 'setUpdatePerformanceListener'\n\nexport const setupInstanceMethodNames: SetupInstanceMethodName[] = [\n 'triggerEvent',\n 'createSelectorQuery',\n 'createIntersectionObserver',\n 'setData',\n 'setUpdatePerformanceListener',\n]\n\nexport function createSetupSlotsFallback() {\n return Object.freeze(Object.create(null)) as Record<string, never>\n}\n\nconst SLOT_RENDER_FN = () => []\n\nfunction normalizeSlotNames(value: unknown): string[] {\n if (Array.isArray(value)) {\n return [...new Set(value.filter((item): item is string => typeof item === 'string' && item.length > 0))]\n }\n if (!value || typeof value !== 'object') {\n return []\n }\n return Object.entries(value as Record<string, unknown>)\n .filter(([, enabled]) => Boolean(enabled))\n .map(([name]) => name)\n}\n\nexport function createSetupSlotsProxy(props: Record<string, any>) {\n if (!hasOwn(props, WEVU_SLOT_NAMES_PROP)) {\n return createSetupSlotsFallback()\n }\n\n const resolveNames = () => normalizeSlotNames(props[WEVU_SLOT_NAMES_PROP])\n const isEnabled = (key: PropertyKey) => typeof key === 'string' && resolveNames().includes(key)\n\n return new Proxy(Object.create(null), {\n get(_target, key) {\n if (isEnabled(key)) {\n return SLOT_RENDER_FN\n }\n return undefined\n },\n has(_target, key) {\n return isEnabled(key)\n },\n ownKeys() {\n return resolveNames()\n },\n getOwnPropertyDescriptor(_target, key) {\n if (!isEnabled(key)) {\n return undefined\n }\n return {\n configurable: true,\n enumerable: true,\n value: SLOT_RENDER_FN,\n }\n },\n set() {\n return false\n },\n deleteProperty() {\n return false\n },\n }) as Record<string, any>\n}\n\nexport function attachRuntimeSlots(runtimeState: Record<string, any>, props: Record<string, any>) {\n const slots = createSetupSlotsProxy(props)\n try {\n Object.defineProperty(runtimeState, '$slots', {\n value: slots,\n configurable: true,\n enumerable: false,\n writable: false,\n })\n }\n catch {\n runtimeState.$slots = slots\n }\n return slots\n}\n\nexport function createNoopWatchStopHandle(): WatchStopHandle {\n const stopHandle = (() => {}) as WatchStopHandle\n stopHandle.stop = () => {}\n stopHandle.pause = () => {}\n stopHandle.resume = () => {}\n return stopHandle\n}\n\nexport function safeMarkNoSetData<T extends object>(value: T): T {\n try {\n return markNoSetData(value)\n }\n catch {\n return value\n }\n}\n\nfunction resolveRuntimeNativeMethodOwner(\n runtime: RuntimeInstance<any, any, any>,\n target: InternalRuntimeState,\n methodName: SetupInstanceMethodName,\n) {\n const runtimeState = runtime?.state\n const runtimeRawState = runtimeState && typeof runtimeState === 'object'\n ? toRaw(runtimeState as any)\n : undefined\n const runtimeProxy = runtime?.proxy as object | undefined\n const isBridgeMethod = (candidate: object) => {\n const candidateMethod = (candidate as any)[methodName]\n if (typeof candidateMethod !== 'function') {\n return false\n }\n if (isNativeBridgeMethod(candidateMethod)) {\n return true\n }\n const targetMethod = (target as any)[methodName]\n return typeof targetMethod === 'function' && candidateMethod === targetMethod\n }\n const isValidNativeCandidate = (candidate: unknown) => {\n if (!candidate || typeof candidate !== 'object') {\n return false\n }\n if (candidate === target || candidate === runtimeProxy) {\n return false\n }\n if (isBridgeMethod(candidate)) {\n return false\n }\n return typeof (candidate as any)[methodName] === 'function'\n }\n const nativeFromState = runtimeRawState ? (runtimeRawState as any)[WEVU_NATIVE_INSTANCE_KEY] : undefined\n if (isValidNativeCandidate(nativeFromState)) {\n return nativeFromState as InternalRuntimeState\n }\n\n const runtimeInstance = (runtime as any)?.instance\n if (isValidNativeCandidate(runtimeInstance)) {\n return runtimeInstance as InternalRuntimeState\n }\n return undefined\n}\n\nfunction defineSetupInstanceMethod(\n target: Record<string, any>,\n methodName: SetupInstanceMethodName,\n handler: (...args: any[]) => any,\n) {\n markNativeBridgeMethod(handler)\n try {\n Object.defineProperty(target, methodName, {\n value: handler,\n configurable: true,\n enumerable: false,\n writable: true,\n })\n }\n catch {\n ;(target as any)[methodName] = handler\n }\n}\n\nexport function ensureSetupContextInstance(\n target: InternalRuntimeState,\n runtime: RuntimeInstance<any, any, any>,\n) {\n const maybeCached = (target as any)[WEVU_SETUP_CONTEXT_INSTANCE_KEY]\n if (maybeCached && typeof maybeCached === 'object') {\n return maybeCached as SetupContextNativeInstance\n }\n\n const setupInstanceBridge: Record<string, any> = Object.create(null)\n try {\n Object.defineProperty(setupInstanceBridge, WEVU_NATIVE_INSTANCE_KEY, {\n configurable: true,\n enumerable: false,\n get() {\n const runtimeState = runtime?.state\n const rawRuntimeState = runtimeState && typeof runtimeState === 'object'\n ? toRaw(runtimeState as any)\n : undefined\n const nativeInstance = rawRuntimeState?.[WEVU_NATIVE_INSTANCE_KEY]\n return nativeInstance && typeof nativeInstance === 'object'\n ? nativeInstance\n : target\n },\n })\n }\n catch {\n setupInstanceBridge[WEVU_NATIVE_INSTANCE_KEY] = target\n }\n const resolvePublicValue = (key: PropertyKey) => {\n const runtimeProxy = runtime?.proxy as Record<PropertyKey, any> | undefined\n if (runtimeProxy && Reflect.has(runtimeProxy, key)) {\n return {\n found: true,\n value: Reflect.get(runtimeProxy, key),\n }\n }\n const runtimeProps = (runtime?.state as any)?.[WEVU_PROPS_KEY]\n ?? (target as any)[WEVU_PROPS_KEY]\n if (runtimeProps && typeof runtimeProps === 'object' && hasOwn(runtimeProps, key)) {\n return {\n found: true,\n value: Reflect.get(runtimeProps, key),\n }\n }\n return { found: false, value: undefined }\n }\n const resolveSetupBridgeOwner = (methodName: SetupInstanceMethodName) => {\n const owner = resolveRuntimeNativeMethodOwner(runtime, target, methodName)\n if (owner) {\n return owner\n }\n const fallbackMethod = (target as any)[methodName]\n if (typeof fallbackMethod === 'function' && !isNativeBridgeMethod(fallbackMethod)) {\n return target\n }\n return undefined\n }\n\n defineSetupInstanceMethod(setupInstanceBridge, 'triggerEvent', (...args: [string, any?, TriggerEventOptions?]) => {\n const [eventName, detail, options] = args\n const nativeOwner = resolveSetupBridgeOwner('triggerEvent')\n if (nativeOwner && typeof (nativeOwner as any).triggerEvent === 'function') {\n if (args.length >= 3) {\n ;(nativeOwner as any).triggerEvent(eventName, detail, options)\n }\n else {\n ;(nativeOwner as any).triggerEvent(eventName, detail)\n }\n }\n })\n\n defineSetupInstanceMethod(setupInstanceBridge, 'createSelectorQuery', () => {\n const nativeOwner = resolveSetupBridgeOwner('createSelectorQuery')\n if (nativeOwner && typeof (nativeOwner as any).createSelectorQuery === 'function') {\n return (nativeOwner as any).createSelectorQuery()\n }\n\n const miniProgramGlobal = getMiniProgramGlobalObject()\n if (\n !supportsCurrentMiniProgramRuntimeCapability('globalCreateSelectorQuery')\n || !miniProgramGlobal\n || typeof miniProgramGlobal.createSelectorQuery !== 'function'\n ) {\n return undefined\n }\n\n const query = miniProgramGlobal.createSelectorQuery()\n if (!query) {\n return query\n }\n if (\n !getCurrentMiniProgramRuntimeCapabilities().selectorQueryScopeByIn\n || typeof query.in !== 'function'\n ) {\n return query\n }\n\n const scopedOwner = resolveRuntimeNativeMethodOwner(runtime, target, 'setData') ?? target\n return query.in(scopedOwner as any)\n })\n\n defineSetupInstanceMethod(\n setupInstanceBridge,\n 'createIntersectionObserver',\n (options?: MiniProgramIntersectionObserverOptions) => {\n const nativeOwner = resolveSetupBridgeOwner('createIntersectionObserver')\n if (nativeOwner && typeof (nativeOwner as any).createIntersectionObserver === 'function') {\n return (nativeOwner as any).createIntersectionObserver(options ?? {})\n }\n\n const miniProgramGlobal = getMiniProgramGlobalObject()\n if (\n !supportsCurrentMiniProgramRuntimeCapability('globalCreateIntersectionObserver')\n || !miniProgramGlobal\n || typeof miniProgramGlobal.createIntersectionObserver !== 'function'\n ) {\n return undefined\n }\n\n const scopedOwner = resolveRuntimeNativeMethodOwner(runtime, target, 'setData') ?? target\n if (getCurrentMiniProgramRuntimeCapabilities().intersectionObserverScopeByParameter) {\n return miniProgramGlobal.createIntersectionObserver(scopedOwner as any, options ?? {})\n }\n return miniProgramGlobal.createIntersectionObserver(options ?? {})\n },\n )\n\n defineSetupInstanceMethod(setupInstanceBridge, 'setData', (payload: Record<string, any>, callback?: () => void) => {\n const nativeOwner = resolveSetupBridgeOwner('setData')\n if (nativeOwner && typeof (nativeOwner as any).setData === 'function') {\n return (nativeOwner as any).setData(payload, callback)\n }\n\n const adapter = runtime?.adapter as AdapterWithSetData | undefined\n const result = typeof adapter?.setData === 'function'\n ? adapter.setData(payload)\n : undefined\n if (typeof callback === 'function') {\n callback()\n }\n return result\n })\n\n defineSetupInstanceMethod(\n setupInstanceBridge,\n 'setUpdatePerformanceListener',\n (listener?: ((result: Record<string, any>) => void)) => {\n const nativeOwner = resolveSetupBridgeOwner('setUpdatePerformanceListener')\n if (nativeOwner && typeof (nativeOwner as any).setUpdatePerformanceListener === 'function') {\n return (nativeOwner as any).setUpdatePerformanceListener(listener)\n }\n return undefined\n },\n )\n\n const setupInstance = safeMarkNoSetData(new Proxy(setupInstanceBridge, {\n get(bridgeTarget, key, receiver) {\n if (Reflect.has(bridgeTarget, key)) {\n return Reflect.get(bridgeTarget, key, receiver)\n }\n if (key === '$el') {\n return resolveRuntimeNativeMethodOwner(runtime, target, 'setData') ?? target\n }\n if (key === 'renderRoot' || key === 'shadowRoot') {\n const nativeOwner = resolveRuntimeNativeMethodOwner(runtime, target, 'setData') ?? target\n return (nativeOwner as any)[key]\n }\n const publicValue = resolvePublicValue(key)\n if (publicValue.found) {\n return publicValue.value\n }\n const value = (target as any)[key as any]\n if (typeof value === 'function') {\n return value.bind(target)\n }\n return value\n },\n has(bridgeTarget, key) {\n return Reflect.has(bridgeTarget, key) || resolvePublicValue(key).found || key in (target as any)\n },\n set(bridgeTarget, key, value) {\n if (Reflect.has(bridgeTarget, key)) {\n // 仅覆写 setup 暴露的 bridge 方法,避免回写原生实例引发递归调用。\n ;(bridgeTarget as any)[key as any] = value\n return true\n }\n ;(target as any)[key as any] = value\n return true\n },\n }) as SetupContextNativeInstance)\n\n try {\n Object.defineProperty(target as Record<string, any>, WEVU_SETUP_CONTEXT_INSTANCE_KEY, {\n value: setupInstance,\n configurable: true,\n enumerable: false,\n writable: true,\n })\n }\n catch {\n ;(target as any)[WEVU_SETUP_CONTEXT_INSTANCE_KEY] = setupInstance\n }\n\n return setupInstance\n}\n"],"mappings":"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"}
|
package/dist/fetch.d.mts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { WeapiMiniProgramRequestMethod } from "@wevu/api";
|
|
2
2
|
import { RequestGlobalsFetchInit as WevuFetchInit, fetch } from "@wevu/web-apis/fetch";
|
|
3
3
|
//#region src/fetch.d.ts
|
|
4
|
-
type WevuFetchInput = Parameters<typeof import('@wevu/web-apis/fetch').fetch>[0];
|
|
5
|
-
type MiniProgramRequestMethod = WeapiMiniProgramRequestMethod;
|
|
6
|
-
type WxRequestMethod = MiniProgramRequestMethod;
|
|
4
|
+
export type WevuFetchInput = Parameters<typeof import('@wevu/web-apis/fetch').fetch>[0];
|
|
5
|
+
export type MiniProgramRequestMethod = WeapiMiniProgramRequestMethod;
|
|
6
|
+
export type WxRequestMethod = MiniProgramRequestMethod;
|
|
7
7
|
//#endregion
|
|
8
|
-
export {
|
|
8
|
+
export { type WevuFetchInit, fetch };
|
package/dist/jsx-runtime.d.mts
CHANGED
|
@@ -2,9 +2,9 @@ import { MiniProgramIntrinsicElements } from "./weappIntrinsicElements.mjs";
|
|
|
2
2
|
import { WevuJsxVNode } from "./runtime/jsxIsland.mjs";
|
|
3
3
|
import { GlobalComponents } from "wevu";
|
|
4
4
|
//#region src/jsx-runtime.d.ts
|
|
5
|
-
type WevuJsxChild = WevuJsxElement | WevuJsxElement[];
|
|
6
|
-
type WevuJsxElement = WevuJsxVNode | boolean | null | number | string | undefined;
|
|
7
|
-
declare namespace JSX {
|
|
5
|
+
export type WevuJsxChild = WevuJsxElement | WevuJsxElement[];
|
|
6
|
+
export type WevuJsxElement = WevuJsxVNode | boolean | null | number | string | undefined;
|
|
7
|
+
export declare namespace JSX {
|
|
8
8
|
type Element = WevuJsxElement;
|
|
9
9
|
interface ElementClass {
|
|
10
10
|
$props: Record<string, any>;
|
|
@@ -17,5 +17,4 @@ declare namespace JSX {
|
|
|
17
17
|
}
|
|
18
18
|
interface IntrinsicElements extends GlobalComponents, MiniProgramIntrinsicElements {}
|
|
19
19
|
}
|
|
20
|
-
//#endregion
|
|
21
|
-
export { JSX, WevuJsxChild, WevuJsxElement };
|
|
20
|
+
//#endregion
|
package/dist/macros/shared.d.mts
CHANGED
|
@@ -5,29 +5,29 @@ import { ComputedDefinitions, MethodDefinitions } from "../runtime/types/core.mj
|
|
|
5
5
|
import { DefineComponentOptions } from "../runtime/types/options.mjs";
|
|
6
6
|
import "../runtime/index.mjs";
|
|
7
7
|
//#region src/macros/shared.d.ts
|
|
8
|
-
type Prettify<T> = { [K in keyof T]: T[K]; } & {};
|
|
8
|
+
export type Prettify<T> = { [K in keyof T]: T[K]; } & {};
|
|
9
9
|
type IfAny<T, Y, N> = 0 extends 1 & T ? Y : N;
|
|
10
10
|
type ComponentObjectPropsOptions = ComponentPropsOptions;
|
|
11
11
|
type ExtractPropTypes<P extends ComponentObjectPropsOptions> = InferProps<P>;
|
|
12
|
-
type DefineProps<T, BKeys extends keyof T> = Readonly<T> & { readonly [K in BKeys]-?: boolean; };
|
|
13
|
-
type BooleanKey<T, K extends keyof T = keyof T> = K extends any ? T[K] extends boolean | undefined ? T[K] extends never | undefined ? never : K : never : never;
|
|
14
|
-
type DefinePropsFromArray<PropNames extends string = string> = Prettify<Readonly<{ [key in PropNames]?: any; }>>;
|
|
15
|
-
type DefinePropsFromOptions<PP extends ComponentObjectPropsOptions = ComponentObjectPropsOptions> = Prettify<Readonly<ExtractPropTypes<PP>>>;
|
|
12
|
+
export type DefineProps<T, BKeys extends keyof T> = Readonly<T> & { readonly [K in BKeys]-?: boolean; };
|
|
13
|
+
export type BooleanKey<T, K extends keyof T = keyof T> = K extends any ? T[K] extends boolean | undefined ? T[K] extends never | undefined ? never : K : never : never;
|
|
14
|
+
export type DefinePropsFromArray<PropNames extends string = string> = Prettify<Readonly<{ [key in PropNames]?: any; }>>;
|
|
15
|
+
export type DefinePropsFromOptions<PP extends ComponentObjectPropsOptions = ComponentObjectPropsOptions> = Prettify<Readonly<ExtractPropTypes<PP>>>;
|
|
16
16
|
type NotUndefined<T> = T extends undefined ? never : T;
|
|
17
17
|
type MappedOmit<T, K extends keyof any> = { [P in keyof T as P extends K ? never : P]: T[P]; };
|
|
18
|
-
type InferDefaults<T> = { [K in keyof T]?: InferDefault<T, T[K]>; };
|
|
18
|
+
export type InferDefaults<T> = { [K in keyof T]?: InferDefault<T, T[K]>; };
|
|
19
19
|
type NativeType = null | undefined | number | string | boolean | symbol | ((...args: any[]) => any);
|
|
20
20
|
type InferDefault<P, T> = ((props: P) => T & {}) | (T extends NativeType ? T : never);
|
|
21
|
-
type PropsWithDefaults<T, Defaults extends InferDefaults<T>, BKeys extends keyof T> = T extends unknown ? Readonly<MappedOmit<T, keyof Defaults>> & { readonly [K in keyof Defaults as K extends keyof T ? K : never]-?: K extends keyof T ? Defaults[K] extends undefined ? IfAny<Defaults[K], NotUndefined<T[K]>, T[K]> : NotUndefined<T[K]> : never; } & { readonly [K in BKeys]-?: K extends keyof Defaults ? Defaults[K] extends undefined ? boolean | undefined : boolean : boolean; } : never;
|
|
22
|
-
type UnionToIntersection<U> = (U extends any ? (arg: U) => any : never) extends ((arg: infer I) => any) ? I : never;
|
|
21
|
+
export type PropsWithDefaults<T, Defaults extends InferDefaults<T>, BKeys extends keyof T> = T extends unknown ? Readonly<MappedOmit<T, keyof Defaults>> & { readonly [K in keyof Defaults as K extends keyof T ? K : never]-?: K extends keyof T ? Defaults[K] extends undefined ? IfAny<Defaults[K], NotUndefined<T[K]>, T[K]> : NotUndefined<T[K]> : never; } & { readonly [K in BKeys]-?: K extends keyof Defaults ? Defaults[K] extends undefined ? boolean | undefined : boolean : boolean; } : never;
|
|
22
|
+
export type UnionToIntersection<U> = (U extends any ? (arg: U) => any : never) extends ((arg: infer I) => any) ? I : never;
|
|
23
23
|
type ScriptSetupTriggerEventOptions = HostMiniProgramTriggerEventOptions;
|
|
24
24
|
type EmitArgsWithTriggerEventOptions<Args extends any[]> = Args extends [] ? [] | [detail: undefined, options: ScriptSetupTriggerEventOptions] : Args | [...args: Args, options: ScriptSetupTriggerEventOptions];
|
|
25
25
|
type ObjectEmitsOptions = Record<string, ((...args: any[]) => any) | null>;
|
|
26
|
-
type EmitsOptions = ObjectEmitsOptions | string[];
|
|
27
|
-
type EmitFn<Options = ObjectEmitsOptions, Event extends keyof Options = keyof Options> = Options extends Array<infer V> ? (event: V, ...args: any[]) => void : {} extends Options ? (event: string, ...args: any[]) => void : UnionToIntersection<{ [K in Event]: Options[K] extends ((...args: infer Args) => any) ? (event: K, ...args: EmitArgsWithTriggerEventOptions<Args>) => void : Options[K] extends any[] ? (event: K, ...args: EmitArgsWithTriggerEventOptions<Options[K]>) => void : (event: K, ...args: any[]) => void; }[Event]>;
|
|
28
|
-
type ComponentTypeEmits = ((...args: any[]) => any) | Record<string, any>;
|
|
26
|
+
export type EmitsOptions = ObjectEmitsOptions | string[];
|
|
27
|
+
export type EmitFn<Options = ObjectEmitsOptions, Event extends keyof Options = keyof Options> = Options extends Array<infer V> ? (event: V, ...args: any[]) => void : {} extends Options ? (event: string, ...args: any[]) => void : UnionToIntersection<{ [K in Event]: Options[K] extends ((...args: infer Args) => any) ? (event: K, ...args: EmitArgsWithTriggerEventOptions<Args>) => void : Options[K] extends any[] ? (event: K, ...args: EmitArgsWithTriggerEventOptions<Options[K]>) => void : (event: K, ...args: any[]) => void; }[Event]>;
|
|
28
|
+
export type ComponentTypeEmits = ((...args: any[]) => any) | Record<string, any>;
|
|
29
29
|
type RecordToUnion<T extends Record<string, any>> = T[keyof T];
|
|
30
|
-
type ShortEmits<T extends Record<string, any>> = UnionToIntersection<RecordToUnion<{ [K in keyof T]: (evt: K, ...args: EmitArgsWithTriggerEventOptions<T[K]>) => void; }>>;
|
|
30
|
+
export type ShortEmits<T extends Record<string, any>> = UnionToIntersection<RecordToUnion<{ [K in keyof T]: (evt: K, ...args: EmitArgsWithTriggerEventOptions<T[K]>) => void; }>>;
|
|
31
31
|
type ScriptSetupNativePropertyOption = HostMiniProgramComponentPropertyOption;
|
|
32
32
|
type ScriptSetupNativeMethodOption = HostMiniProgramComponentMethodOption;
|
|
33
33
|
type ScriptSetupNativeBehaviorOption = HostMiniProgramComponentEmptyArray;
|
|
@@ -39,7 +39,7 @@ type ScriptSetupPropertyObserver<TProperty extends HostMiniProgramComponentAllPr
|
|
|
39
39
|
type ScriptSetupNativeProperties<D extends object, P extends ScriptSetupNativePropertyOption, M extends ScriptSetupNativeMethodOption> = { [K in keyof P]: ScriptSetupPropertyObserver<P[K], ScriptSetupNativeInstance<D, P, M>>; };
|
|
40
40
|
type ScriptSetupNativeMethods<D extends object, P extends ScriptSetupNativePropertyOption, M extends ScriptSetupNativeMethodOption> = M & ThisType<ScriptSetupNativeInstance<D, P, M>>;
|
|
41
41
|
type RemoveIndexSignature<T> = { [K in keyof T as string extends K ? never : number extends K ? never : symbol extends K ? never : K]: T[K]; };
|
|
42
|
-
type ScriptSetupDefineOptions<D extends object = Record<string, any>, C extends ComputedDefinitions = ComputedDefinitions, M extends MethodDefinitions = MethodDefinitions, P extends ScriptSetupNativePropertyOption = ScriptSetupNativePropertyOption> = Omit<RemoveIndexSignature<DefineComponentOptions<ComponentPropsOptions, D, C, M>>, 'props' | 'options' | 'data' | 'methods'> & {
|
|
42
|
+
export type ScriptSetupDefineOptions<D extends object = Record<string, any>, C extends ComputedDefinitions = ComputedDefinitions, M extends MethodDefinitions = MethodDefinitions, P extends ScriptSetupNativePropertyOption = ScriptSetupNativePropertyOption> = Omit<RemoveIndexSignature<DefineComponentOptions<ComponentPropsOptions, D, C, M>>, 'props' | 'options' | 'data' | 'methods'> & {
|
|
43
43
|
/**
|
|
44
44
|
* props 必须通过 defineProps() 声明。
|
|
45
45
|
*/
|
|
@@ -77,5 +77,4 @@ type ScriptSetupDefineOptions<D extends object = Record<string, any>, C extends
|
|
|
77
77
|
*/
|
|
78
78
|
setupLifecycle?: 'created' | 'attached';
|
|
79
79
|
};
|
|
80
|
-
//#endregion
|
|
81
|
-
export { BooleanKey, ComponentTypeEmits, DefineProps, DefinePropsFromArray, DefinePropsFromOptions, EmitFn, EmitsOptions, InferDefaults, Prettify, PropsWithDefaults, ScriptSetupDefineOptions, ShortEmits, UnionToIntersection };
|
|
80
|
+
//#endregion
|
package/dist/macros.d.mts
CHANGED
|
@@ -9,50 +9,50 @@ import { BooleanKey, ComponentTypeEmits, DefineProps, DefinePropsFromArray, Defi
|
|
|
9
9
|
/**
|
|
10
10
|
* defineProps 声明(类型层宏)。
|
|
11
11
|
*/
|
|
12
|
-
declare function defineProps<PropNames extends string = string>(props: PropNames[]): DefinePropsFromArray<PropNames>;
|
|
13
|
-
declare function defineProps<PP extends ComponentPropsOptions = ComponentPropsOptions>(props: PP): DefinePropsFromOptions<PP>;
|
|
14
|
-
declare function defineProps<TypeProps>(): DefineProps<TypeProps, BooleanKey<TypeProps>>;
|
|
12
|
+
export declare function defineProps<PropNames extends string = string>(props: PropNames[]): DefinePropsFromArray<PropNames>;
|
|
13
|
+
export declare function defineProps<PP extends ComponentPropsOptions = ComponentPropsOptions>(props: PP): DefinePropsFromOptions<PP>;
|
|
14
|
+
export declare function defineProps<TypeProps>(): DefineProps<TypeProps, BooleanKey<TypeProps>>;
|
|
15
15
|
/**
|
|
16
16
|
* withDefaults 为 defineProps 声明默认值(类型层)。
|
|
17
17
|
*/
|
|
18
|
-
declare function withDefaults<T, BKeys extends keyof T, Defaults extends InferDefaults<T>>(props: DefineProps<T, BKeys>, defaults: Defaults): PropsWithDefaults<T, Defaults, BKeys>;
|
|
18
|
+
export declare function withDefaults<T, BKeys extends keyof T, Defaults extends InferDefaults<T>>(props: DefineProps<T, BKeys>, defaults: Defaults): PropsWithDefaults<T, Defaults, BKeys>;
|
|
19
19
|
/**
|
|
20
20
|
* defineEmits 声明(类型层宏)。
|
|
21
21
|
*/
|
|
22
|
-
declare function defineEmits<EE extends string = string>(emits?: EE[]): EmitFn<EE[]>;
|
|
23
|
-
declare function defineEmits<E extends EmitsOptions = EmitsOptions>(emits?: E): EmitFn<E>;
|
|
24
|
-
declare function defineEmits<T extends ComponentTypeEmits>(): T extends ((...args: any[]) => any) ? T : ShortEmits<T>;
|
|
22
|
+
export declare function defineEmits<EE extends string = string>(emits?: EE[]): EmitFn<EE[]>;
|
|
23
|
+
export declare function defineEmits<E extends EmitsOptions = EmitsOptions>(emits?: E): EmitFn<E>;
|
|
24
|
+
export declare function defineEmits<T extends ComponentTypeEmits>(): T extends ((...args: any[]) => any) ? T : ShortEmits<T>;
|
|
25
25
|
/**
|
|
26
26
|
* defineExpose 向父级 ref 暴露成员(仅类型层)。
|
|
27
27
|
*/
|
|
28
|
-
declare function defineExpose<T extends Record<string, any> = Record<string, any>>(exposed?: T): void;
|
|
28
|
+
export declare function defineExpose<T extends Record<string, any> = Record<string, any>>(exposed?: T): void;
|
|
29
29
|
/**
|
|
30
30
|
* defineOptions 设置 `<script setup>` 组件选项(仅类型层)。
|
|
31
31
|
*/
|
|
32
|
-
declare function defineOptions<D extends object = Record<string, any>, C extends ComputedDefinitions = ComputedDefinitions, M extends MethodDefinitions = MethodDefinitions, P extends HostMiniProgramComponentPropertyOption = HostMiniProgramComponentPropertyOption>(options?: ScriptSetupDefineOptions<D, C, M, P>): void;
|
|
33
|
-
declare function defineOptions<D extends object = Record<string, any>, C extends ComputedDefinitions = ComputedDefinitions, M extends MethodDefinitions = MethodDefinitions, P extends HostMiniProgramComponentPropertyOption = HostMiniProgramComponentPropertyOption>(options?: () => ScriptSetupDefineOptions<D, C, M, P> | Promise<ScriptSetupDefineOptions<D, C, M, P>>): void;
|
|
32
|
+
export declare function defineOptions<D extends object = Record<string, any>, C extends ComputedDefinitions = ComputedDefinitions, M extends MethodDefinitions = MethodDefinitions, P extends HostMiniProgramComponentPropertyOption = HostMiniProgramComponentPropertyOption>(options?: ScriptSetupDefineOptions<D, C, M, P>): void;
|
|
33
|
+
export declare function defineOptions<D extends object = Record<string, any>, C extends ComputedDefinitions = ComputedDefinitions, M extends MethodDefinitions = MethodDefinitions, P extends HostMiniProgramComponentPropertyOption = HostMiniProgramComponentPropertyOption>(options?: () => ScriptSetupDefineOptions<D, C, M, P> | Promise<ScriptSetupDefineOptions<D, C, M, P>>): void;
|
|
34
34
|
/**
|
|
35
35
|
* defineSlots 声明 slots 类型(仅类型层)。
|
|
36
36
|
*/
|
|
37
|
-
declare function defineSlots<T extends Record<string, any> = Record<string, any>>(): T;
|
|
38
|
-
type PageLayoutMeta = string | false | {
|
|
37
|
+
export declare function defineSlots<T extends Record<string, any> = Record<string, any>>(): T;
|
|
38
|
+
export type PageLayoutMeta = string | false | {
|
|
39
39
|
name: string;
|
|
40
40
|
props?: Record<string, unknown>;
|
|
41
41
|
};
|
|
42
|
-
interface PageMeta {
|
|
42
|
+
export interface PageMeta {
|
|
43
43
|
layout?: PageLayoutMeta;
|
|
44
44
|
[key: string]: unknown;
|
|
45
45
|
}
|
|
46
46
|
/**
|
|
47
47
|
* definePageMeta 声明页面级元信息(仅类型层)。
|
|
48
48
|
*/
|
|
49
|
-
declare function definePageMeta(meta: PageMeta): void;
|
|
49
|
+
export declare function definePageMeta(meta: PageMeta): void;
|
|
50
50
|
/**
|
|
51
51
|
* defineModel 声明 v-model 绑定(类型层宏)。
|
|
52
52
|
*/
|
|
53
|
-
type DefineModelModifiers<M extends PropertyKey = string> = Record<M, true | undefined>;
|
|
54
|
-
type ModelRef<T, M extends PropertyKey = string, G = T, S = T> = Ref<G, S> & [ModelRef<T, M, G, S>, DefineModelModifiers<M>];
|
|
55
|
-
interface DefineModelTransformOptions<T, M extends PropertyKey = string, G = T, S = T> {
|
|
53
|
+
export type DefineModelModifiers<M extends PropertyKey = string> = Record<M, true | undefined>;
|
|
54
|
+
export type ModelRef<T, M extends PropertyKey = string, G = T, S = T> = Ref<G, S> & [ModelRef<T, M, G, S>, DefineModelModifiers<M>];
|
|
55
|
+
export interface DefineModelTransformOptions<T, M extends PropertyKey = string, G = T, S = T> {
|
|
56
56
|
get?: (value: T, modifiers: DefineModelModifiers<M>) => G;
|
|
57
57
|
set?: (value: S, modifiers: DefineModelModifiers<M>) => T;
|
|
58
58
|
}
|
|
@@ -62,9 +62,9 @@ type DefineModelRequiredOptions<T> = {
|
|
|
62
62
|
} | {
|
|
63
63
|
required: true;
|
|
64
64
|
};
|
|
65
|
-
declare function defineModel<T = any, M extends PropertyKey = string, G = T, S = T>(options: DefineModelBaseOptions<T, M, G, S> & DefineModelRequiredOptions<T>): ModelRef<T, M, G, S>;
|
|
66
|
-
declare function defineModel<T = any, M extends PropertyKey = string, G = T, S = T>(name: string, options: DefineModelBaseOptions<T, M, G, S> & DefineModelRequiredOptions<T>): ModelRef<T, M, G, S>;
|
|
67
|
-
declare function defineModel<T = any, M extends PropertyKey = string, G = T, S = T>(options?: DefineModelBaseOptions<T | undefined, M, G | undefined, S | undefined>): ModelRef<T | undefined, M, G | undefined, S | undefined>;
|
|
68
|
-
declare function defineModel<T = any, M extends PropertyKey = string, G = T, S = T>(name?: string, options?: DefineModelBaseOptions<T | undefined, M, G | undefined, S | undefined>): ModelRef<T | undefined, M, G | undefined, S | undefined>;
|
|
65
|
+
export declare function defineModel<T = any, M extends PropertyKey = string, G = T, S = T>(options: DefineModelBaseOptions<T, M, G, S> & DefineModelRequiredOptions<T>): ModelRef<T, M, G, S>;
|
|
66
|
+
export declare function defineModel<T = any, M extends PropertyKey = string, G = T, S = T>(name: string, options: DefineModelBaseOptions<T, M, G, S> & DefineModelRequiredOptions<T>): ModelRef<T, M, G, S>;
|
|
67
|
+
export declare function defineModel<T = any, M extends PropertyKey = string, G = T, S = T>(options?: DefineModelBaseOptions<T | undefined, M, G | undefined, S | undefined>): ModelRef<T | undefined, M, G | undefined, S | undefined>;
|
|
68
|
+
export declare function defineModel<T = any, M extends PropertyKey = string, G = T, S = T>(name?: string, options?: DefineModelBaseOptions<T | undefined, M, G | undefined, S | undefined>): ModelRef<T | undefined, M, G | undefined, S | undefined>;
|
|
69
69
|
//#endregion
|
|
70
|
-
export {
|
|
70
|
+
export type { ComponentTypeEmits, EmitFn, EmitsOptions };
|
package/dist/package.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var e=`7.0.
|
|
1
|
+
var e=`7.0.4`;export{e as version};
|
|
@@ -1,21 +1,20 @@
|
|
|
1
1
|
import { Ref } from "./ref.mjs";
|
|
2
2
|
//#region src/reactivity/computed.d.ts
|
|
3
|
-
type ComputedGetter<T> = () => T;
|
|
4
|
-
type ComputedSetter<T> = (value: T) => void;
|
|
3
|
+
export type ComputedGetter<T> = () => T;
|
|
4
|
+
export type ComputedSetter<T> = (value: T) => void;
|
|
5
5
|
interface BaseComputedRef<T, S = T> extends Ref<T, S> {
|
|
6
6
|
[key: symbol]: any;
|
|
7
7
|
}
|
|
8
|
-
interface ComputedRef<T = any> extends BaseComputedRef<T> {
|
|
8
|
+
export interface ComputedRef<T = any> extends BaseComputedRef<T> {
|
|
9
9
|
readonly value: T;
|
|
10
10
|
}
|
|
11
|
-
interface WritableComputedRef<T, S = T> extends BaseComputedRef<T, S> {
|
|
11
|
+
export interface WritableComputedRef<T, S = T> extends BaseComputedRef<T, S> {
|
|
12
12
|
value: T;
|
|
13
13
|
}
|
|
14
|
-
interface WritableComputedOptions<T> {
|
|
14
|
+
export interface WritableComputedOptions<T> {
|
|
15
15
|
get: ComputedGetter<T>;
|
|
16
16
|
set: ComputedSetter<T>;
|
|
17
17
|
}
|
|
18
|
-
declare function computed<T>(getter: ComputedGetter<T>): ComputedRef<T>;
|
|
19
|
-
declare function computed<T>(options: WritableComputedOptions<T>): WritableComputedRef<T>;
|
|
20
|
-
//#endregion
|
|
21
|
-
export { ComputedGetter, ComputedRef, ComputedSetter, WritableComputedOptions, WritableComputedRef, computed };
|
|
18
|
+
export declare function computed<T>(getter: ComputedGetter<T>): ComputedRef<T>;
|
|
19
|
+
export declare function computed<T>(options: WritableComputedOptions<T>): WritableComputedRef<T>;
|
|
20
|
+
//#endregion
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
//#region src/reactivity/core.d.ts
|
|
2
|
-
type EffectScheduler = () => void;
|
|
3
|
-
type Dep = Set<ReactiveEffect>;
|
|
4
|
-
interface ReactiveEffect<T = any> {
|
|
2
|
+
export type EffectScheduler = () => void;
|
|
3
|
+
export type Dep = Set<ReactiveEffect>;
|
|
4
|
+
export interface ReactiveEffect<T = any> {
|
|
5
5
|
(): T;
|
|
6
6
|
deps: Dep[];
|
|
7
7
|
scheduler?: EffectScheduler;
|
|
@@ -10,25 +10,24 @@ interface ReactiveEffect<T = any> {
|
|
|
10
10
|
_fn: () => T;
|
|
11
11
|
onStop?: () => void;
|
|
12
12
|
}
|
|
13
|
-
declare function startBatch(): void;
|
|
14
|
-
declare function endBatch(): void;
|
|
15
|
-
declare function batch<T>(fn: () => T): T;
|
|
16
|
-
declare function stop(runner: ReactiveEffect): void;
|
|
17
|
-
interface EffectScope {
|
|
13
|
+
export declare function startBatch(): void;
|
|
14
|
+
export declare function endBatch(): void;
|
|
15
|
+
export declare function batch<T>(fn: () => T): T;
|
|
16
|
+
export declare function stop(runner: ReactiveEffect): void;
|
|
17
|
+
export interface EffectScope {
|
|
18
18
|
active: boolean;
|
|
19
19
|
effects: ReactiveEffect[];
|
|
20
20
|
cleanups: (() => void)[];
|
|
21
21
|
run: <T>(fn: () => T) => T | undefined;
|
|
22
22
|
stop: () => void;
|
|
23
23
|
}
|
|
24
|
-
declare function effectScope(detached?: boolean): EffectScope;
|
|
25
|
-
declare function getCurrentScope(): EffectScope | undefined;
|
|
26
|
-
declare function onScopeDispose(fn: () => void): void;
|
|
27
|
-
interface EffectOptions {
|
|
24
|
+
export declare function effectScope(detached?: boolean): EffectScope;
|
|
25
|
+
export declare function getCurrentScope(): EffectScope | undefined;
|
|
26
|
+
export declare function onScopeDispose(fn: () => void): void;
|
|
27
|
+
export interface EffectOptions {
|
|
28
28
|
scheduler?: EffectScheduler;
|
|
29
29
|
lazy?: boolean;
|
|
30
30
|
onStop?: () => void;
|
|
31
31
|
}
|
|
32
|
-
declare function effect<T = any>(fn: () => T, options?: EffectOptions): ReactiveEffect<T>;
|
|
33
|
-
//#endregion
|
|
34
|
-
export { Dep, EffectOptions, EffectScheduler, EffectScope, ReactiveEffect, batch, effect, effectScope, endBatch, getCurrentScope, onScopeDispose, startBatch, stop };
|
|
32
|
+
export declare function effect<T = any>(fn: () => T, options?: EffectOptions): ReactiveEffect<T>;
|
|
33
|
+
//#endregion
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
//#region src/reactivity/reactive/mutation.d.ts
|
|
2
|
-
type MutationOp = 'set' | 'delete';
|
|
3
|
-
type MutationKind = 'property' | 'array';
|
|
4
|
-
interface MutationRecord {
|
|
2
|
+
export type MutationOp = 'set' | 'delete';
|
|
3
|
+
export type MutationKind = 'property' | 'array';
|
|
4
|
+
export interface MutationRecord {
|
|
5
5
|
root: object;
|
|
6
6
|
kind: MutationKind;
|
|
7
7
|
op: MutationOp;
|
|
@@ -15,7 +15,6 @@ interface MutationRecord {
|
|
|
15
15
|
fallbackTopKeys?: string[];
|
|
16
16
|
}
|
|
17
17
|
type MutationRecorder = (record: MutationRecord) => void;
|
|
18
|
-
declare function addMutationRecorder(recorder: MutationRecorder): void;
|
|
19
|
-
declare function removeMutationRecorder(recorder: MutationRecorder): void;
|
|
20
|
-
//#endregion
|
|
21
|
-
export { MutationKind, MutationOp, MutationRecord, addMutationRecorder, removeMutationRecorder };
|
|
18
|
+
export declare function addMutationRecorder(recorder: MutationRecorder): void;
|
|
19
|
+
export declare function removeMutationRecorder(recorder: MutationRecorder): void;
|
|
20
|
+
//#endregion
|