wevu 7.2.1 → 7.3.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/README.md +6 -0
- package/dist/dev/_virtual/{_@oxc-project_runtime@0.150.0 → _@oxc-project_runtime@0.151.0}/helpers/esm/defineProperty.mjs +1 -1
- package/dist/dev/_virtual/{_@oxc-project_runtime@0.150.0 → _@oxc-project_runtime@0.151.0}/helpers/esm/toPrimitive.mjs +1 -1
- package/dist/dev/_virtual/{_@oxc-project_runtime@0.150.0 → _@oxc-project_runtime@0.151.0}/helpers/esm/toPropertyKey.mjs +1 -1
- package/dist/dev/_virtual/{_@oxc-project_runtime@0.150.0 → _@oxc-project_runtime@0.151.0}/helpers/esm/typeof.mjs +1 -1
- package/dist/dev/api/vitest/setup.d.mts +1 -0
- package/dist/dev/api/vitest.d.mts +1 -0
- package/dist/dev/api.d.mts +1 -0
- package/dist/dev/compiler.d.mts +1 -0
- package/dist/dev/fetch.d.mts +9 -0
- package/dist/dev/index.d.mts +72 -0
- package/dist/dev/internal-reactivity.d.mts +18 -0
- package/dist/dev/internal-runtime.d.mts +45 -0
- package/dist/dev/internal-runtime.mjs +3 -2
- package/dist/dev/internal-template.d.mts +2 -0
- package/dist/dev/jsxTypes.d.mts +9 -0
- package/dist/dev/macros/shared.d.mts +83 -0
- package/dist/dev/macros.d.mts +71 -0
- package/dist/dev/package.mjs +1 -1
- package/dist/dev/reactivity/asyncDerivation.d.mts +41 -0
- package/dist/dev/reactivity/asyncDerivation.mjs +8 -10
- package/dist/dev/reactivity/asyncDerivation.mjs.map +1 -1
- package/dist/dev/reactivity/computed.d.mts +25 -0
- package/dist/dev/reactivity/core.d.mts +35 -0
- package/dist/dev/reactivity/core.mjs +5 -8
- package/dist/dev/reactivity/core.mjs.map +1 -1
- package/dist/dev/reactivity/index.d.mts +16 -0
- package/dist/dev/reactivity/reactive/mutation.d.mts +21 -0
- package/dist/dev/reactivity/reactive/patch.d.mts +18 -0
- package/dist/dev/reactivity/reactive/patch.mjs +3 -3
- package/dist/dev/reactivity/reactive/patch.mjs.map +1 -1
- package/dist/dev/reactivity/reactive/patchState.mjs +4 -8
- package/dist/dev/reactivity/reactive/patchState.mjs.map +1 -1
- package/dist/dev/reactivity/reactive/shallow.d.mts +22 -0
- package/dist/dev/reactivity/reactive/shared.d.mts +4 -0
- package/dist/dev/reactivity/reactive/shared.mjs +1 -2
- package/dist/dev/reactivity/reactive/shared.mjs.map +1 -1
- package/dist/dev/reactivity/reactive.d.mts +42 -0
- package/dist/dev/reactivity/reactive.mjs +5 -10
- package/dist/dev/reactivity/reactive.mjs.map +1 -1
- package/dist/dev/reactivity/readonly.d.mts +27 -0
- package/dist/dev/reactivity/ref.d.mts +27 -0
- package/dist/dev/reactivity/ref.mjs +2 -2
- package/dist/dev/reactivity/ref.mjs.map +1 -1
- package/dist/dev/reactivity/shallowRef.d.mts +19 -0
- package/dist/dev/reactivity/shallowRef.mjs +1 -1
- package/dist/dev/reactivity/shallowRef.mjs.map +1 -1
- package/dist/dev/reactivity/toRefs.d.mts +43 -0
- package/dist/dev/reactivity/traverse.d.mts +8 -0
- package/dist/dev/reactivity/watch/helpers.mjs +1 -1
- package/dist/dev/reactivity/watch/helpers.mjs.map +1 -1
- package/dist/dev/reactivity/watch/types.d.mts +43 -0
- package/dist/dev/reactivity/watch.d.mts +22 -0
- package/dist/dev/reactivity/watch.mjs +6 -8
- package/dist/dev/reactivity/watch.mjs.map +1 -1
- package/dist/dev/router/auto-routes.d.mts +8 -0
- package/dist/dev/router/createRouter.d.mts +9 -0
- package/dist/dev/router/createRouter.mjs +17 -24
- package/dist/dev/router/createRouter.mjs.map +1 -1
- package/dist/dev/router/initialNavigation.mjs +18 -16
- package/dist/dev/router/initialNavigation.mjs.map +1 -1
- package/dist/dev/router/instance.mjs +1 -2
- package/dist/dev/router/instance.mjs.map +1 -1
- package/dist/dev/router/navigationCore.d.mts +7 -0
- package/dist/dev/router/navigationCore.mjs +2 -2
- package/dist/dev/router/navigationCore.mjs.map +1 -1
- package/dist/dev/router/navigationResult.mjs +7 -10
- package/dist/dev/router/navigationResult.mjs.map +1 -1
- package/dist/dev/router/navigationTarget.mjs +1 -3
- package/dist/dev/router/navigationTarget.mjs.map +1 -1
- package/dist/dev/router/resolve.d.mts +7 -0
- package/dist/dev/router/resolve.mjs +3 -4
- package/dist/dev/router/resolve.mjs.map +1 -1
- package/dist/dev/router/routeRegistry.mjs +1 -1
- package/dist/dev/router/routeRegistry.mjs.map +1 -1
- package/dist/dev/router/routeSync.d.mts +2 -0
- package/dist/dev/router/routeSync.mjs +1 -1
- package/dist/dev/router/routeSync.mjs.map +1 -1
- package/dist/dev/router/types.d.mts +267 -0
- package/dist/dev/router/useRoute.d.mts +20 -0
- package/dist/dev/router/useRoute.mjs +12 -19
- package/dist/dev/router/useRoute.mjs.map +1 -1
- package/dist/dev/router/useRouter.d.mts +9 -0
- package/dist/dev/router.d.mts +26 -0
- package/dist/dev/routerInternal/location.d.mts +2 -0
- package/dist/dev/routerInternal/location.mjs +2 -3
- package/dist/dev/routerInternal/location.mjs.map +1 -1
- package/dist/dev/routerInternal/matching.d.mts +2 -0
- package/dist/dev/routerInternal/params.d.mts +2 -0
- package/dist/dev/routerInternal/params.mjs +2 -3
- package/dist/dev/routerInternal/params.mjs.map +1 -1
- package/dist/dev/routerInternal/query.d.mts +7 -0
- package/dist/dev/routerInternal/records.d.mts +2 -0
- package/dist/dev/routerInternal/records.mjs +1 -1
- package/dist/dev/routerInternal/records.mjs.map +1 -1
- package/dist/dev/routerInternal/recordsWarnings.d.mts +2 -0
- package/dist/dev/routerInternal/recordsWarnings.mjs +1 -2
- package/dist/dev/routerInternal/recordsWarnings.mjs.map +1 -1
- package/dist/dev/routerInternal/shared.d.mts +9 -0
- package/dist/dev/routerInternal/snapshots.d.mts +2 -0
- package/dist/dev/routerInternal/types.d.mts +9 -0
- package/dist/dev/runtime/app/context.mjs +13 -26
- package/dist/dev/runtime/app/context.mjs.map +1 -1
- package/dist/dev/runtime/app/diagnostics.mjs +2 -4
- package/dist/dev/runtime/app/diagnostics.mjs.map +1 -1
- package/dist/dev/runtime/app/mount.mjs +27 -33
- package/dist/dev/runtime/app/mount.mjs.map +1 -1
- package/dist/dev/runtime/app/pending.d.mts +10 -0
- package/dist/dev/runtime/app/setData/commitTracker.d.mts +13 -0
- package/dist/dev/runtime/app/setData/commitTracker.mjs +5 -9
- package/dist/dev/runtime/app/setData/commitTracker.mjs.map +1 -1
- package/dist/dev/runtime/app/setData/patchScheduler.mjs +2 -4
- package/dist/dev/runtime/app/setData/patchScheduler.mjs.map +1 -1
- package/dist/dev/runtime/app/setData/payload.mjs +2 -3
- package/dist/dev/runtime/app/setData/payload.mjs.map +1 -1
- package/dist/dev/runtime/app/setData/scheduler.d.mts +51 -0
- package/dist/dev/runtime/app/setData/scheduler.mjs +7 -9
- package/dist/dev/runtime/app/setData/scheduler.mjs.map +1 -1
- package/dist/dev/runtime/app/setData/snapshot.mjs +5 -6
- package/dist/dev/runtime/app/setData/snapshot.mjs.map +1 -1
- package/dist/dev/runtime/app/setDataOptions.mjs +26 -27
- package/dist/dev/runtime/app/setDataOptions.mjs.map +1 -1
- package/dist/dev/runtime/app.d.mts +8 -0
- package/dist/dev/runtime/app.mjs +9 -9
- package/dist/dev/runtime/app.mjs.map +1 -1
- package/dist/dev/runtime/bindingManifest.mjs +6 -14
- package/dist/dev/runtime/bindingManifest.mjs.map +1 -1
- package/dist/dev/runtime/capabilities.d.mts +78 -0
- package/dist/dev/runtime/capabilities.mjs.map +1 -1
- package/dist/dev/runtime/css.d.mts +14 -0
- package/dist/dev/runtime/css.mjs +4 -8
- package/dist/dev/runtime/css.mjs.map +1 -1
- package/dist/dev/runtime/defaults.d.mts +12 -0
- package/dist/dev/runtime/defaults.mjs +4 -4
- package/dist/dev/runtime/defaults.mjs.map +1 -1
- package/dist/dev/runtime/define/initialComputed.mjs +5 -5
- package/dist/dev/runtime/define/initialComputed.mjs.map +1 -1
- package/dist/dev/runtime/define/options.mjs +10 -12
- package/dist/dev/runtime/define/options.mjs.map +1 -1
- package/dist/dev/runtime/define/props.mjs +4 -5
- package/dist/dev/runtime/define/props.mjs.map +1 -1
- package/dist/dev/runtime/define/scopedSlotOptions.mjs +43 -61
- package/dist/dev/runtime/define/scopedSlotOptions.mjs.map +1 -1
- package/dist/dev/runtime/define/setupResult.mjs +17 -28
- package/dist/dev/runtime/define/setupResult.mjs.map +1 -1
- package/dist/dev/runtime/define.d.mts +118 -0
- package/dist/dev/runtime/define.mjs +9 -12
- package/dist/dev/runtime/define.mjs.map +1 -1
- package/dist/dev/runtime/diff.mjs +9 -11
- package/dist/dev/runtime/diff.mjs.map +1 -1
- package/dist/dev/runtime/disposables.d.mts +31 -0
- package/dist/dev/runtime/disposables.mjs +2 -2
- package/dist/dev/runtime/disposables.mjs.map +1 -1
- package/dist/dev/runtime/elementIntersectionObserver.d.mts +26 -0
- package/dist/dev/runtime/elementIntersectionObserver.mjs +16 -24
- package/dist/dev/runtime/elementIntersectionObserver.mjs.map +1 -1
- package/dist/dev/runtime/features/inlineEvents.d.mts +7 -0
- package/dist/dev/runtime/features/inlineEvents.mjs +2 -3
- package/dist/dev/runtime/features/inlineEvents.mjs.map +1 -1
- package/dist/dev/runtime/features/jsxIslands.d.mts +7 -0
- package/dist/dev/runtime/features/jsxIslands.mjs +20 -0
- package/dist/dev/runtime/features/jsxIslands.mjs.map +1 -0
- package/dist/dev/runtime/features/layout.d.mts +7 -0
- package/dist/dev/runtime/features/layout.mjs +2 -3
- package/dist/dev/runtime/features/layout.mjs.map +1 -1
- package/dist/dev/runtime/features/patchStrategy.d.mts +7 -0
- package/dist/dev/runtime/features/publicLayout.d.mts +24 -0
- package/dist/dev/runtime/features/publicLayout.mjs +2 -6
- package/dist/dev/runtime/features/publicLayout.mjs.map +1 -1
- package/dist/dev/runtime/features/scopedSlots.d.mts +23 -0
- package/dist/dev/runtime/features/scopedSlots.mjs +5 -9
- package/dist/dev/runtime/features/scopedSlots.mjs.map +1 -1
- package/dist/dev/runtime/features/setDataHighFrequencyWarning.d.mts +7 -0
- package/dist/dev/runtime/features/templateRefs.d.mts +7 -0
- package/dist/dev/runtime/features/templateRefs.mjs +1 -1
- package/dist/dev/runtime/features/templateRefs.mjs.map +1 -1
- package/dist/dev/runtime/hooks/base.d.mts +27 -0
- package/dist/dev/runtime/hooks/base.mjs +21 -32
- package/dist/dev/runtime/hooks/base.mjs.map +1 -1
- package/dist/dev/runtime/hooks/register.d.mts +30 -0
- package/dist/dev/runtime/hooks/vue.d.mts +52 -0
- package/dist/dev/runtime/hooks.d.mts +4 -0
- package/dist/dev/runtime/index.d.mts +46 -0
- package/dist/dev/runtime/inlineDataset.mjs +1 -2
- package/dist/dev/runtime/inlineDataset.mjs.map +1 -1
- package/dist/dev/runtime/intersectionObserver.d.mts +14 -0
- package/dist/dev/runtime/intersectionObserver.mjs +6 -6
- package/dist/dev/runtime/intersectionObserver.mjs.map +1 -1
- package/dist/dev/runtime/jsxIsland.d.mts +37 -0
- package/dist/dev/runtime/jsxIsland.mjs +16 -33
- package/dist/dev/runtime/jsxIsland.mjs.map +1 -1
- package/dist/dev/runtime/layoutBridge.d.mts +55 -0
- package/dist/dev/runtime/layoutBridge.mjs +32 -62
- package/dist/dev/runtime/layoutBridge.mjs.map +1 -1
- package/dist/dev/runtime/nativeBridge.mjs +1 -1
- package/dist/dev/runtime/nativeBridge.mjs.map +1 -1
- package/dist/dev/runtime/navigationLifecycle.mjs +24 -0
- package/dist/dev/runtime/navigationLifecycle.mjs.map +1 -0
- package/dist/dev/runtime/noSetData.d.mts +5 -0
- package/dist/dev/runtime/pageEnvironment.d.mts +50 -0
- package/dist/dev/runtime/pageEnvironment.mjs +15 -18
- package/dist/dev/runtime/pageEnvironment.mjs.map +1 -1
- package/dist/dev/runtime/pageLayout.d.mts +25 -0
- package/dist/dev/runtime/pageLayout.mjs +7 -11
- package/dist/dev/runtime/pageLayout.mjs.map +1 -1
- package/dist/dev/runtime/pageScroll.d.mts +29 -0
- package/dist/dev/runtime/pageScroll.mjs +2 -3
- package/dist/dev/runtime/pageScroll.mjs.map +1 -1
- package/dist/dev/runtime/platform/current.mjs +12 -0
- package/dist/dev/runtime/platform/current.mjs.map +1 -0
- package/dist/dev/runtime/platform/generic.mjs +36 -0
- package/dist/dev/runtime/platform/generic.mjs.map +1 -0
- package/dist/dev/runtime/platform/globals.mjs +29 -0
- package/dist/dev/runtime/platform/globals.mjs.map +1 -0
- package/dist/dev/runtime/platform.mjs +15 -60
- package/dist/dev/runtime/platform.mjs.map +1 -1
- package/dist/dev/runtime/provide.d.mts +60 -0
- package/dist/dev/runtime/provideContext.mjs +7 -9
- package/dist/dev/runtime/provideContext.mjs.map +1 -1
- package/dist/dev/runtime/provideStore.d.mts +7 -0
- package/dist/dev/runtime/publicRuntime.d.mts +22 -0
- package/dist/dev/runtime/publicRuntime.mjs +4 -0
- package/dist/dev/runtime/publicRuntime.mjs.map +1 -1
- package/dist/dev/runtime/pullDownRefresh.d.mts +12 -0
- package/dist/dev/runtime/pullDownRefresh.mjs +2 -4
- package/dist/dev/runtime/pullDownRefresh.mjs.map +1 -1
- package/dist/dev/runtime/register/app.d.mts +14 -0
- package/dist/dev/runtime/register/app.mjs +18 -19
- package/dist/dev/runtime/register/app.mjs.map +1 -1
- package/dist/dev/runtime/register/component/alipay.mjs +9 -18
- package/dist/dev/runtime/register/component/alipay.mjs.map +1 -1
- package/dist/dev/runtime/register/component/alipayRegistration.mjs +60 -0
- package/dist/dev/runtime/register/component/alipayRegistration.mjs.map +1 -0
- package/dist/dev/runtime/register/component/lifecycle/platform.mjs +8 -9
- package/dist/dev/runtime/register/component/lifecycle/platform.mjs.map +1 -1
- package/dist/dev/runtime/register/component/lifecycle.mjs +7 -12
- package/dist/dev/runtime/register/component/lifecycle.mjs.map +1 -1
- package/dist/dev/runtime/register/component/methods.mjs +13 -18
- package/dist/dev/runtime/register/component/methods.mjs.map +1 -1
- package/dist/dev/runtime/register/component/options.mjs +3 -4
- package/dist/dev/runtime/register/component/options.mjs.map +1 -1
- package/dist/dev/runtime/register/component/props.mjs +25 -31
- package/dist/dev/runtime/register/component/props.mjs.map +1 -1
- package/dist/dev/runtime/register/component/registerDefinition.mjs +18 -40
- package/dist/dev/runtime/register/component/registerDefinition.mjs.map +1 -1
- package/dist/dev/runtime/register/component/registerNativeDefinition.mjs +18 -60
- package/dist/dev/runtime/register/component/registerNativeDefinition.mjs.map +1 -1
- package/dist/dev/runtime/register/component.d.mts +17 -0
- package/dist/dev/runtime/register/component.mjs +3 -5
- package/dist/dev/runtime/register/component.mjs.map +1 -1
- package/dist/dev/runtime/register/inline.d.mts +15 -0
- package/dist/dev/runtime/register/inline.mjs +8 -10
- package/dist/dev/runtime/register/inline.mjs.map +1 -1
- package/dist/dev/runtime/register/runtimeInstance/methodBridge.mjs +7 -8
- package/dist/dev/runtime/register/runtimeInstance/methodBridge.mjs.map +1 -1
- package/dist/dev/runtime/register/runtimeInstance/provideContext.mjs +1 -1
- package/dist/dev/runtime/register/runtimeInstance/provideContext.mjs.map +1 -1
- package/dist/dev/runtime/register/runtimeInstance/setupContext.mjs +25 -34
- package/dist/dev/runtime/register/runtimeInstance/setupContext.mjs.map +1 -1
- package/dist/dev/runtime/register/runtimeInstance/setupPhase.mjs +6 -13
- package/dist/dev/runtime/register/runtimeInstance/setupPhase.mjs.map +1 -1
- package/dist/dev/runtime/register/runtimeInstance/setupSnapshot.mjs +2 -2
- package/dist/dev/runtime/register/runtimeInstance/setupSnapshot.mjs.map +1 -1
- package/dist/dev/runtime/register/runtimeInstance/utils.mjs +9 -9
- package/dist/dev/runtime/register/runtimeInstance/utils.mjs.map +1 -1
- package/dist/dev/runtime/register/runtimeInstance.d.mts +26 -0
- package/dist/dev/runtime/register/runtimeInstance.mjs +74 -100
- package/dist/dev/runtime/register/runtimeInstance.mjs.map +1 -1
- package/dist/dev/runtime/register/setDataFrequencyWarning.mjs +12 -15
- package/dist/dev/runtime/register/setDataFrequencyWarning.mjs.map +1 -1
- package/dist/dev/runtime/register/setup.d.mts +11 -0
- package/dist/dev/runtime/register/setup.mjs +2 -3
- package/dist/dev/runtime/register/setup.mjs.map +1 -1
- package/dist/dev/runtime/register/snapshot.mjs +1 -4
- package/dist/dev/runtime/register/snapshot.mjs.map +1 -1
- package/dist/dev/runtime/register/watch.d.mts +12 -0
- package/dist/dev/runtime/register/watch.mjs +3 -5
- package/dist/dev/runtime/register/watch.mjs.map +1 -1
- package/dist/dev/runtime/register.d.mts +5 -0
- package/dist/dev/runtime/scopedSlots.mjs +14 -21
- package/dist/dev/runtime/scopedSlots.mjs.map +1 -1
- package/dist/dev/runtime/selectorQuery.d.mts +54 -0
- package/dist/dev/runtime/selectorQuery.mjs +5 -9
- package/dist/dev/runtime/selectorQuery.mjs.map +1 -1
- package/dist/dev/runtime/template.d.mts +6 -0
- package/dist/dev/runtime/template.mjs +1 -1
- package/dist/dev/runtime/template.mjs.map +1 -1
- package/dist/dev/runtime/templateRefTypes.d.mts +12 -0
- package/dist/dev/runtime/templateRefs/helpers.mjs +14 -24
- package/dist/dev/runtime/templateRefs/helpers.mjs.map +1 -1
- package/dist/dev/runtime/templateRefs.mjs +8 -15
- package/dist/dev/runtime/templateRefs.mjs.map +1 -1
- package/dist/dev/runtime/types/core.d.mts +35 -0
- package/dist/dev/runtime/types/miniprogram.d.mts +84 -0
- package/dist/dev/runtime/types/miniprogramHost.d.mts +45 -0
- package/dist/dev/runtime/types/miniprogramHostSources.d.mts +112 -0
- package/dist/dev/runtime/types/options.d.mts +138 -0
- package/dist/dev/runtime/types/props/propTypes.d.mts +79 -0
- package/dist/dev/runtime/types/props/router.d.mts +51 -0
- package/dist/dev/runtime/types/props/setup.d.mts +96 -0
- package/dist/dev/runtime/types/props.d.mts +4 -0
- package/dist/dev/runtime/types/runtime.d.mts +59 -0
- package/dist/dev/runtime/types/setData.d.mts +237 -0
- package/dist/dev/runtime/types.d.mts +29 -0
- package/dist/dev/runtime/uniAppHost.d.mts +8 -0
- package/dist/dev/runtime/uniAppHost.mjs +6 -14
- package/dist/dev/runtime/uniAppHost.mjs.map +1 -1
- package/dist/dev/runtime/updatePerformance.d.mts +13 -0
- package/dist/dev/runtime/updatePerformance.mjs +1 -1
- package/dist/dev/runtime/updatePerformance.mjs.map +1 -1
- package/dist/dev/runtime/use.d.mts +13 -0
- package/dist/dev/runtime/use.mjs +1 -1
- package/dist/dev/runtime/use.mjs.map +1 -1
- package/dist/dev/runtime/vueCompat/context.d.mts +8 -0
- package/dist/dev/runtime/vueCompat/context.mjs +3 -5
- package/dist/dev/runtime/vueCompat/context.mjs.map +1 -1
- package/dist/dev/runtime/vueCompat/model.d.mts +30 -0
- package/dist/dev/runtime/vueCompat/model.mjs +9 -13
- package/dist/dev/runtime/vueCompat/model.mjs.map +1 -1
- package/dist/dev/runtime/vueCompat/router.d.mts +29 -0
- package/dist/dev/runtime/vueCompat/router.mjs +4 -4
- package/dist/dev/runtime/vueCompat/router.mjs.map +1 -1
- package/dist/dev/runtime/vueCompat/templateRef.d.mts +9 -0
- package/dist/dev/runtime/vueCompat/templateRef.mjs +1 -1
- package/dist/dev/runtime/vueCompat/templateRef.mjs.map +1 -1
- package/dist/dev/runtime/vueCompat.d.mts +5 -0
- package/dist/dev/scheduler.d.mts +4 -0
- package/dist/dev/scheduler.mjs +3 -4
- package/dist/dev/scheduler.mjs.map +1 -1
- package/dist/dev/store/base.mjs +1 -2
- package/dist/dev/store/base.mjs.map +1 -1
- package/dist/dev/store/define/create.mjs +11 -22
- package/dist/dev/store/define/create.mjs.map +1 -1
- package/dist/dev/store/define.d.mts +8 -0
- package/dist/dev/store/define.mjs +1 -1
- package/dist/dev/store/define.mjs.map +1 -1
- package/dist/dev/store/manager.d.mts +16 -0
- package/dist/dev/store/storeToRefs.d.mts +11 -0
- package/dist/dev/store/types.d.mts +106 -0
- package/dist/dev/store/view.mjs +1 -1
- package/dist/dev/store/view.mjs.map +1 -1
- package/dist/dev/store.d.mts +5 -0
- package/dist/dev/version.d.mts +4 -0
- package/dist/dev/vue-augment.d.mts +8 -0
- package/dist/dev/vue-demi.d.mts +87 -0
- package/dist/dev/vue-types.d.mts +19 -0
- package/dist/dev/web-apis.d.mts +3 -0
- package/dist/internal-runtime.d.mts +2 -1
- package/dist/internal-runtime.mjs +1 -1
- package/dist/package.mjs +1 -1
- package/dist/reactivity/asyncDerivation.mjs +1 -1
- package/dist/reactivity/core.mjs +1 -1
- package/dist/reactivity/reactive/patch.mjs +1 -1
- package/dist/reactivity/reactive/patchState.mjs +1 -1
- package/dist/reactivity/reactive/shared.mjs +1 -1
- package/dist/reactivity/reactive.mjs +1 -1
- package/dist/reactivity/ref.mjs +1 -1
- package/dist/reactivity/shallowRef.mjs +1 -1
- package/dist/reactivity/watch/helpers.mjs +1 -1
- package/dist/reactivity/watch.mjs +1 -1
- package/dist/router/createRouter.mjs +1 -1
- package/dist/router/initialNavigation.mjs +1 -1
- package/dist/router/instance.mjs +1 -1
- package/dist/router/navigationCore.mjs +1 -1
- package/dist/router/navigationResult.mjs +1 -1
- package/dist/router/navigationTarget.mjs +1 -1
- package/dist/router/resolve.mjs +1 -1
- package/dist/router/routeRegistry.mjs +1 -1
- package/dist/router/routeSync.mjs +1 -1
- package/dist/router/useRoute.mjs +1 -1
- package/dist/routerInternal/location.mjs +1 -1
- package/dist/routerInternal/params.mjs +1 -1
- package/dist/routerInternal/records.mjs +1 -1
- package/dist/routerInternal/recordsWarnings.mjs +1 -1
- package/dist/runtime/app/context.mjs +1 -1
- package/dist/runtime/app/diagnostics.mjs +1 -1
- package/dist/runtime/app/mount.mjs +1 -1
- package/dist/runtime/app/setData/commitTracker.mjs +1 -1
- package/dist/runtime/app/setData/patchScheduler.mjs +1 -1
- package/dist/runtime/app/setData/payload.mjs +1 -1
- package/dist/runtime/app/setData/scheduler.mjs +1 -1
- package/dist/runtime/app/setData/snapshot.mjs +1 -1
- package/dist/runtime/app/setDataOptions.mjs +1 -1
- package/dist/runtime/app.mjs +1 -1
- package/dist/runtime/bindingManifest.mjs +1 -1
- package/dist/runtime/capabilities.d.mts +4 -1
- package/dist/runtime/css.mjs +1 -1
- package/dist/runtime/defaults.mjs +1 -1
- package/dist/runtime/define/initialComputed.mjs +1 -1
- package/dist/runtime/define/options.mjs +1 -1
- package/dist/runtime/define/props.mjs +1 -1
- package/dist/runtime/define/scopedSlotOptions.mjs +1 -1
- package/dist/runtime/define/setupResult.mjs +1 -1
- package/dist/runtime/define.mjs +1 -1
- package/dist/runtime/diff.mjs +1 -1
- package/dist/runtime/disposables.mjs +1 -1
- package/dist/runtime/elementIntersectionObserver.mjs +1 -1
- package/dist/runtime/features/inlineEvents.mjs +1 -1
- package/dist/runtime/features/jsxIslands.d.mts +6 -0
- package/dist/runtime/features/jsxIslands.mjs +1 -0
- package/dist/runtime/features/layout.mjs +1 -1
- package/dist/runtime/features/publicLayout.mjs +1 -1
- package/dist/runtime/features/scopedSlots.mjs +1 -1
- package/dist/runtime/features/templateRefs.mjs +1 -1
- package/dist/runtime/hooks/base.mjs +1 -1
- package/dist/runtime/inlineDataset.mjs +1 -1
- package/dist/runtime/intersectionObserver.mjs +1 -1
- package/dist/runtime/jsxIsland.mjs +1 -1
- package/dist/runtime/layoutBridge.mjs +1 -1
- package/dist/runtime/nativeBridge.mjs +1 -1
- package/dist/runtime/navigationLifecycle.mjs +1 -0
- package/dist/runtime/pageEnvironment.mjs +1 -1
- package/dist/runtime/pageLayout.mjs +1 -1
- package/dist/runtime/pageScroll.mjs +1 -1
- package/dist/runtime/platform/current.mjs +1 -0
- package/dist/runtime/platform/generic.mjs +1 -0
- package/dist/runtime/platform/globals.mjs +1 -0
- package/dist/runtime/platform.mjs +1 -1
- package/dist/runtime/provideContext.mjs +1 -1
- package/dist/runtime/publicRuntime.mjs +1 -1
- package/dist/runtime/pullDownRefresh.mjs +1 -1
- package/dist/runtime/register/app.mjs +1 -1
- package/dist/runtime/register/component/alipay.mjs +1 -1
- package/dist/runtime/register/component/alipayRegistration.mjs +1 -0
- package/dist/runtime/register/component/lifecycle/platform.mjs +1 -1
- package/dist/runtime/register/component/lifecycle.mjs +1 -1
- package/dist/runtime/register/component/methods.mjs +1 -1
- package/dist/runtime/register/component/options.mjs +1 -1
- package/dist/runtime/register/component/props.mjs +1 -1
- package/dist/runtime/register/component/registerDefinition.mjs +1 -1
- package/dist/runtime/register/component/registerNativeDefinition.mjs +1 -1
- package/dist/runtime/register/component.mjs +1 -1
- package/dist/runtime/register/inline.mjs +1 -1
- package/dist/runtime/register/runtimeInstance/methodBridge.mjs +1 -1
- package/dist/runtime/register/runtimeInstance/provideContext.mjs +1 -1
- package/dist/runtime/register/runtimeInstance/setupContext.mjs +1 -1
- package/dist/runtime/register/runtimeInstance/setupPhase.mjs +1 -1
- package/dist/runtime/register/runtimeInstance/setupSnapshot.mjs +1 -1
- package/dist/runtime/register/runtimeInstance/utils.mjs +1 -1
- package/dist/runtime/register/runtimeInstance.mjs +1 -1
- package/dist/runtime/register/setDataFrequencyWarning.mjs +1 -1
- package/dist/runtime/register/setup.mjs +1 -1
- package/dist/runtime/register/snapshot.mjs +1 -1
- package/dist/runtime/register/watch.mjs +1 -1
- package/dist/runtime/scopedSlots.mjs +1 -1
- package/dist/runtime/selectorQuery.mjs +1 -1
- package/dist/runtime/template.mjs +1 -1
- package/dist/runtime/templateRefs/helpers.mjs +1 -1
- package/dist/runtime/templateRefs.mjs +1 -1
- package/dist/runtime/uniAppHost.mjs +1 -1
- package/dist/runtime/updatePerformance.mjs +1 -1
- package/dist/runtime/use.mjs +1 -1
- package/dist/runtime/vueCompat/context.mjs +1 -1
- package/dist/runtime/vueCompat/model.mjs +1 -1
- package/dist/runtime/vueCompat/router.mjs +1 -1
- package/dist/runtime/vueCompat/templateRef.mjs +1 -1
- package/dist/scheduler.mjs +1 -1
- package/dist/store/base.mjs +1 -1
- package/dist/store/define/create.mjs +1 -1
- package/dist/store/define.mjs +1 -1
- package/dist/store/view.mjs +1 -1
- package/package.json +7 -7
- /package/dist/_virtual/{_@oxc-project_runtime@0.150.0 → _@oxc-project_runtime@0.151.0}/helpers/esm/defineProperty.mjs +0 -0
- /package/dist/_virtual/{_@oxc-project_runtime@0.150.0 → _@oxc-project_runtime@0.151.0}/helpers/esm/toPrimitive.mjs +0 -0
- /package/dist/_virtual/{_@oxc-project_runtime@0.150.0 → _@oxc-project_runtime@0.151.0}/helpers/esm/toPropertyKey.mjs +0 -0
- /package/dist/_virtual/{_@oxc-project_runtime@0.150.0 → _@oxc-project_runtime@0.151.0}/helpers/esm/typeof.mjs +0 -0
|
@@ -28,7 +28,7 @@ function createRouteRegistry(namedRouteLookup) {
|
|
|
28
28
|
const parentRouteName = typeof parentNameOrRoute === "string" ? parentNameOrRoute : void 0;
|
|
29
29
|
const parentRouteRecord = parentRouteName ? namedRouteLookup.recordByName.get(parentRouteName) : void 0;
|
|
30
30
|
if (parentRouteName && !parentRouteRecord) throw new Error(`Parent route "${parentRouteName}" is not defined in createRouter({ routes | namedRoutes })`);
|
|
31
|
-
const routeRecords = flattenNamedRouteRecords([route], parentRouteRecord
|
|
31
|
+
const routeRecords = flattenNamedRouteRecords([route], parentRouteRecord?.path, parentRouteName, parentRouteRecord?.aliasPaths, void 0, "addRoute");
|
|
32
32
|
if (routeRecords.length === 0) throw new Error("Route name and path are required when adding a named route");
|
|
33
33
|
const addedRoutes = [];
|
|
34
34
|
for (const routeRecord of routeRecords) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routeRegistry.mjs","names":[],"sources":["../../../src/router/routeRegistry.ts"],"sourcesContent":["import type {\n NamedRouteLookup,\n RouteRecordNormalized,\n} from '../routerInternal/shared'\nimport type { AddRoute, RouteRecordRaw } from './types'\nimport {\n assertValidAddRouteInput,\n cloneRouteMeta,\n collectRouteNamesForRemoval,\n createAbsoluteRoutePath,\n createNamedRouteNameByStaticPath,\n flattenNamedRouteRecords,\n normalizeRouteRecordRaw,\n warnRouteConfig,\n} from '../routerInternal/shared'\n\nfunction normalizeRouteRecordForOutput(record: RouteRecordNormalized): RouteRecordRaw {\n const normalizedRoute: RouteRecordRaw = {\n name: record.name,\n path: record.path ? `/${record.path}` : '/',\n }\n if (record.meta !== undefined) {\n normalizedRoute.meta = cloneRouteMeta(record.meta)\n }\n if (record.aliasPaths.length === 1) {\n normalizedRoute.alias = createAbsoluteRoutePath(record.aliasPaths[0])\n }\n else if (record.aliasPaths.length > 1) {\n normalizedRoute.alias = record.aliasPaths.map(aliasPath => createAbsoluteRoutePath(aliasPath))\n }\n if (record.beforeEnterGuards.length === 1) {\n normalizedRoute.beforeEnter = record.beforeEnterGuards[0]\n }\n else if (record.beforeEnterGuards.length > 1) {\n normalizedRoute.beforeEnter = record.beforeEnterGuards.slice()\n }\n if (record.redirect !== undefined) {\n normalizedRoute.redirect = record.redirect\n }\n return normalizedRoute\n}\n\nexport function createRouteRegistry(namedRouteLookup: NamedRouteLookup) {\n const hasRoute = (name: string) => namedRouteLookup.recordByName.has(name)\n const getRoutes = (): readonly RouteRecordRaw[] =>\n Array.from(namedRouteLookup.recordByName.values(), normalizeRouteRecordForOutput)\n\n const addRoute: AddRoute = ((parentNameOrRoute: string | RouteRecordRaw, maybeRoute?: RouteRecordRaw) => {\n const route = typeof parentNameOrRoute === 'string'\n ? maybeRoute\n : parentNameOrRoute\n if (!route) {\n throw new Error('Route record is required when adding a child route')\n }\n assertValidAddRouteInput(route)\n\n const parentRouteName = typeof parentNameOrRoute === 'string'\n ? parentNameOrRoute\n : undefined\n const parentRouteRecord = parentRouteName\n ? namedRouteLookup.recordByName.get(parentRouteName)\n : undefined\n if (parentRouteName && !parentRouteRecord) {\n throw new Error(`Parent route \"${parentRouteName}\" is not defined in createRouter({ routes | namedRoutes })`)\n }\n\n const routeRecords = flattenNamedRouteRecords(\n [route],\n parentRouteRecord?.path,\n parentRouteName,\n parentRouteRecord?.aliasPaths,\n undefined,\n 'addRoute',\n )\n if (routeRecords.length === 0) {\n throw new Error('Route name and path are required when adding a named route')\n }\n const addedRoutes: RouteRecordNormalized[] = []\n for (const routeRecord of routeRecords) {\n const normalizedRoute = normalizeRouteRecordRaw(routeRecord.route, routeRecord.parentName)\n if (!normalizedRoute) {\n continue\n }\n const existingRoute = namedRouteLookup.recordByName.get(normalizedRoute.name)\n if (existingRoute) {\n const namesToRemove = collectRouteNamesForRemoval(existingRoute.name, namedRouteLookup.recordByName)\n for (const routeName of namesToRemove) {\n namedRouteLookup.recordByName.delete(routeName)\n }\n warnRouteConfig(\n `addRoute() replaced existing route \"${normalizedRoute.name}\" (${createAbsoluteRoutePath(existingRoute.path)} -> ${createAbsoluteRoutePath(normalizedRoute.path)}) and removed ${namesToRemove.size - 1} nested route(s)`,\n )\n }\n namedRouteLookup.recordByName.set(normalizedRoute.name, normalizedRoute)\n addedRoutes.push(normalizedRoute)\n }\n namedRouteLookup.nameByStaticPath = createNamedRouteNameByStaticPath(namedRouteLookup.recordByName)\n\n return () => {\n let changed = false\n for (const addedRoute of addedRoutes) {\n const currentRoute = namedRouteLookup.recordByName.get(addedRoute.name)\n if (currentRoute === addedRoute) {\n namedRouteLookup.recordByName.delete(addedRoute.name)\n changed = true\n }\n }\n if (changed) {\n namedRouteLookup.nameByStaticPath = createNamedRouteNameByStaticPath(namedRouteLookup.recordByName)\n }\n }\n }) as AddRoute\n\n function removeRoute(name: string): void {\n const namesToRemove = collectRouteNamesForRemoval(name, namedRouteLookup.recordByName)\n if (namesToRemove.size === 0) {\n return\n }\n\n let changed = false\n for (const routeName of namesToRemove) {\n changed = namedRouteLookup.recordByName.delete(routeName) || changed\n }\n if (changed) {\n namedRouteLookup.nameByStaticPath = createNamedRouteNameByStaticPath(namedRouteLookup.recordByName)\n }\n }\n\n function clearRoutes(): void {\n namedRouteLookup.recordByName.clear()\n namedRouteLookup.nameByStaticPath.clear()\n }\n\n return {\n hasRoute,\n getRoutes,\n addRoute,\n removeRoute,\n clearRoutes,\n }\n}\n"],"mappings":";;;;;;;AAgBA,SAAS,8BAA8B,QAA+C;CACpF,MAAM,kBAAkC;EACtC,MAAM,OAAO;EACb,MAAM,OAAO,OAAO,IAAI,OAAO,SAAS;CAC1C;CACA,IAAI,OAAO,SAAS,QAClB,gBAAgB,OAAO,eAAe,OAAO,IAAI;CAEnD,IAAI,OAAO,WAAW,WAAW,GAC/B,gBAAgB,QAAQ,wBAAwB,OAAO,WAAW,EAAE;MAEjE,IAAI,OAAO,WAAW,SAAS,GAClC,gBAAgB,QAAQ,OAAO,WAAW,KAAI,cAAa,wBAAwB,SAAS,CAAC;CAE/F,IAAI,OAAO,kBAAkB,WAAW,GACtC,gBAAgB,cAAc,OAAO,kBAAkB;MAEpD,IAAI,OAAO,kBAAkB,SAAS,GACzC,gBAAgB,cAAc,OAAO,kBAAkB,MAAM;CAE/D,IAAI,OAAO,aAAa,QACtB,gBAAgB,WAAW,OAAO;CAEpC,OAAO;AACT;AAEA,SAAgB,oBAAoB,kBAAoC;CACtE,MAAM,YAAY,SAAiB,iBAAiB,aAAa,IAAI,IAAI;CACzE,MAAM,kBACJ,MAAM,KAAK,iBAAiB,aAAa,OAAO,GAAG,6BAA6B;CAElF,MAAM,aAAuB,mBAA4C,eAAgC;EACvG,MAAM,QAAQ,OAAO,sBAAsB,WACvC,aACA;EACJ,IAAI,CAAC,OACH,MAAM,IAAI,MAAM,oDAAoD;EAEtE,yBAAyB,KAAK;EAE9B,MAAM,kBAAkB,OAAO,sBAAsB,WACjD,oBACA;EACJ,MAAM,oBAAoB,kBACtB,iBAAiB,aAAa,IAAI,eAAe,IACjD;EACJ,IAAI,mBAAmB,CAAC,mBACtB,MAAM,IAAI,MAAM,iBAAiB,gBAAgB,2DAA2D;EAG9G,MAAM,eAAe,yBACnB,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"routeRegistry.mjs","names":[],"sources":["../../../src/router/routeRegistry.ts"],"sourcesContent":["import type {\n NamedRouteLookup,\n RouteRecordNormalized,\n} from '../routerInternal/shared'\nimport type { AddRoute, RouteRecordRaw } from './types'\nimport {\n assertValidAddRouteInput,\n cloneRouteMeta,\n collectRouteNamesForRemoval,\n createAbsoluteRoutePath,\n createNamedRouteNameByStaticPath,\n flattenNamedRouteRecords,\n normalizeRouteRecordRaw,\n warnRouteConfig,\n} from '../routerInternal/shared'\n\nfunction normalizeRouteRecordForOutput(record: RouteRecordNormalized): RouteRecordRaw {\n const normalizedRoute: RouteRecordRaw = {\n name: record.name,\n path: record.path ? `/${record.path}` : '/',\n }\n if (record.meta !== undefined) {\n normalizedRoute.meta = cloneRouteMeta(record.meta)\n }\n if (record.aliasPaths.length === 1) {\n normalizedRoute.alias = createAbsoluteRoutePath(record.aliasPaths[0])\n }\n else if (record.aliasPaths.length > 1) {\n normalizedRoute.alias = record.aliasPaths.map(aliasPath => createAbsoluteRoutePath(aliasPath))\n }\n if (record.beforeEnterGuards.length === 1) {\n normalizedRoute.beforeEnter = record.beforeEnterGuards[0]\n }\n else if (record.beforeEnterGuards.length > 1) {\n normalizedRoute.beforeEnter = record.beforeEnterGuards.slice()\n }\n if (record.redirect !== undefined) {\n normalizedRoute.redirect = record.redirect\n }\n return normalizedRoute\n}\n\nexport function createRouteRegistry(namedRouteLookup: NamedRouteLookup) {\n const hasRoute = (name: string) => namedRouteLookup.recordByName.has(name)\n const getRoutes = (): readonly RouteRecordRaw[] =>\n Array.from(namedRouteLookup.recordByName.values(), normalizeRouteRecordForOutput)\n\n const addRoute: AddRoute = ((parentNameOrRoute: string | RouteRecordRaw, maybeRoute?: RouteRecordRaw) => {\n const route = typeof parentNameOrRoute === 'string'\n ? maybeRoute\n : parentNameOrRoute\n if (!route) {\n throw new Error('Route record is required when adding a child route')\n }\n assertValidAddRouteInput(route)\n\n const parentRouteName = typeof parentNameOrRoute === 'string'\n ? parentNameOrRoute\n : undefined\n const parentRouteRecord = parentRouteName\n ? namedRouteLookup.recordByName.get(parentRouteName)\n : undefined\n if (parentRouteName && !parentRouteRecord) {\n throw new Error(`Parent route \"${parentRouteName}\" is not defined in createRouter({ routes | namedRoutes })`)\n }\n\n const routeRecords = flattenNamedRouteRecords(\n [route],\n parentRouteRecord?.path,\n parentRouteName,\n parentRouteRecord?.aliasPaths,\n undefined,\n 'addRoute',\n )\n if (routeRecords.length === 0) {\n throw new Error('Route name and path are required when adding a named route')\n }\n const addedRoutes: RouteRecordNormalized[] = []\n for (const routeRecord of routeRecords) {\n const normalizedRoute = normalizeRouteRecordRaw(routeRecord.route, routeRecord.parentName)\n if (!normalizedRoute) {\n continue\n }\n const existingRoute = namedRouteLookup.recordByName.get(normalizedRoute.name)\n if (existingRoute) {\n const namesToRemove = collectRouteNamesForRemoval(existingRoute.name, namedRouteLookup.recordByName)\n for (const routeName of namesToRemove) {\n namedRouteLookup.recordByName.delete(routeName)\n }\n warnRouteConfig(\n `addRoute() replaced existing route \"${normalizedRoute.name}\" (${createAbsoluteRoutePath(existingRoute.path)} -> ${createAbsoluteRoutePath(normalizedRoute.path)}) and removed ${namesToRemove.size - 1} nested route(s)`,\n )\n }\n namedRouteLookup.recordByName.set(normalizedRoute.name, normalizedRoute)\n addedRoutes.push(normalizedRoute)\n }\n namedRouteLookup.nameByStaticPath = createNamedRouteNameByStaticPath(namedRouteLookup.recordByName)\n\n return () => {\n let changed = false\n for (const addedRoute of addedRoutes) {\n const currentRoute = namedRouteLookup.recordByName.get(addedRoute.name)\n if (currentRoute === addedRoute) {\n namedRouteLookup.recordByName.delete(addedRoute.name)\n changed = true\n }\n }\n if (changed) {\n namedRouteLookup.nameByStaticPath = createNamedRouteNameByStaticPath(namedRouteLookup.recordByName)\n }\n }\n }) as AddRoute\n\n function removeRoute(name: string): void {\n const namesToRemove = collectRouteNamesForRemoval(name, namedRouteLookup.recordByName)\n if (namesToRemove.size === 0) {\n return\n }\n\n let changed = false\n for (const routeName of namesToRemove) {\n changed = namedRouteLookup.recordByName.delete(routeName) || changed\n }\n if (changed) {\n namedRouteLookup.nameByStaticPath = createNamedRouteNameByStaticPath(namedRouteLookup.recordByName)\n }\n }\n\n function clearRoutes(): void {\n namedRouteLookup.recordByName.clear()\n namedRouteLookup.nameByStaticPath.clear()\n }\n\n return {\n hasRoute,\n getRoutes,\n addRoute,\n removeRoute,\n clearRoutes,\n }\n}\n"],"mappings":"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"}
|
|
@@ -19,7 +19,7 @@ function registerRouteStateSyncHandler(handler) {
|
|
|
19
19
|
function notifyRouteStateSync(payload) {
|
|
20
20
|
for (const handler of routeStateSyncHandlers) try {
|
|
21
21
|
handler(payload);
|
|
22
|
-
} catch
|
|
22
|
+
} catch {}
|
|
23
23
|
}
|
|
24
24
|
function createNativeRouteStateSyncPayload(methodName, option, sourcePage) {
|
|
25
25
|
if (methodName === "navigateBack") return {
|
|
@@ -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'\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,
|
|
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,QACM,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"}
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
import { SetupContextRouter, TypedRouterTabBarUrl } from "../runtime/types/props/router.mjs";
|
|
2
|
+
import "../runtime/types/props.mjs";
|
|
3
|
+
import { WevuNamedRouteMap } from "../router.mjs";
|
|
4
|
+
//#region src/router/types.d.ts
|
|
5
|
+
export type LocationQueryValue = string | null;
|
|
6
|
+
export type LocationQueryValueRaw = LocationQueryValue | number | boolean | undefined;
|
|
7
|
+
export type LocationQuery = Record<string, LocationQueryValue | LocationQueryValue[]>;
|
|
8
|
+
export type LocationQueryRaw = Record<string, LocationQueryValueRaw | LocationQueryValueRaw[]>;
|
|
9
|
+
export type RouteParamValue = string;
|
|
10
|
+
export type RouteParamValueRaw = RouteParamValue | number | boolean | null | undefined;
|
|
11
|
+
export type RouteParams = Record<string, RouteParamValue | RouteParamValue[]>;
|
|
12
|
+
export type RouteParamsRaw = Record<string, RouteParamValueRaw | RouteParamValueRaw[]>;
|
|
13
|
+
export type RouteParamsMode = 'loose' | 'strict';
|
|
14
|
+
export type RouteQueryParser = (search: string) => LocationQueryRaw | LocationQuery;
|
|
15
|
+
export type RouteQueryStringifier = (query: LocationQueryRaw | LocationQuery) => string;
|
|
16
|
+
export type RouteMeta = Record<string, unknown>;
|
|
17
|
+
export interface WevuNamedRouteDefinition {
|
|
18
|
+
readonly path: string;
|
|
19
|
+
readonly meta: RouteMeta;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* 显式选择不收窄名称和元信息的兼容路由模式。
|
|
23
|
+
*/
|
|
24
|
+
export type WevuBroadRouteMap = Record<string, WevuNamedRouteDefinition>;
|
|
25
|
+
type DeclaredRouteName<TRouteMap extends object> = Extract<keyof TRouteMap, string>;
|
|
26
|
+
type IsBroadRouteMap<TRouteMap extends object> = [DeclaredRouteName<TRouteMap>] extends [never] ? true : string extends DeclaredRouteName<TRouteMap> ? true : false;
|
|
27
|
+
export type WevuRouteName<TRouteMap extends object = WevuNamedRouteMap> = IsBroadRouteMap<TRouteMap> extends true ? string : DeclaredRouteName<TRouteMap>;
|
|
28
|
+
export type WevuNamedRoutePath<TRouteMap extends object, TName extends WevuRouteName<TRouteMap>> = IsBroadRouteMap<TRouteMap> extends true ? string : TName extends keyof TRouteMap ? TRouteMap[TName] extends {
|
|
29
|
+
readonly path: infer TPath extends string;
|
|
30
|
+
} ? TPath : never : never;
|
|
31
|
+
export type WevuNamedRouteMeta<TRouteMap extends object, TName extends WevuRouteName<TRouteMap>> = IsBroadRouteMap<TRouteMap> extends true ? RouteMeta : TName extends keyof TRouteMap ? TRouteMap[TName] extends {
|
|
32
|
+
readonly meta: infer TMeta extends RouteMeta;
|
|
33
|
+
} ? TMeta : never : never;
|
|
34
|
+
type StrictRouteRecordMeta<TRouteMap extends object, TName extends WevuRouteName<TRouteMap>> = keyof WevuNamedRouteMeta<TRouteMap, TName> extends never ? Record<string, never> : WevuNamedRouteMeta<TRouteMap, TName>;
|
|
35
|
+
interface RouteLocationRawCommon {
|
|
36
|
+
query?: LocationQueryRaw;
|
|
37
|
+
hash?: string;
|
|
38
|
+
params?: RouteParamsRaw;
|
|
39
|
+
}
|
|
40
|
+
export type RouteLocationNamedRaw<TRouteMap extends object = WevuNamedRouteMap, TName extends WevuRouteName<TRouteMap> = WevuRouteName<TRouteMap>> = RouteLocationRawCommon & {
|
|
41
|
+
name: TName;
|
|
42
|
+
path?: never;
|
|
43
|
+
fullPath?: never;
|
|
44
|
+
};
|
|
45
|
+
type RouteLocationPathRaw = RouteLocationRawCommon & {
|
|
46
|
+
name?: never;
|
|
47
|
+
path?: string;
|
|
48
|
+
fullPath?: string;
|
|
49
|
+
};
|
|
50
|
+
type BroadRouteLocationRaw = string | RouteLocationRawCommon & {
|
|
51
|
+
path?: string;
|
|
52
|
+
fullPath?: string;
|
|
53
|
+
name?: string;
|
|
54
|
+
};
|
|
55
|
+
export type RouteLocationRaw<TRouteMap extends object = WevuNamedRouteMap> = IsBroadRouteMap<TRouteMap> extends true ? BroadRouteLocationRaw : string | RouteLocationPathRaw | { [TName in WevuRouteName<TRouteMap>]: RouteLocationNamedRaw<TRouteMap, TName>; }[WevuRouteName<TRouteMap>];
|
|
56
|
+
interface RouteLocationNormalizedBase<TRouteMap extends object> {
|
|
57
|
+
path: string;
|
|
58
|
+
fullPath: string;
|
|
59
|
+
query: LocationQuery;
|
|
60
|
+
hash: string;
|
|
61
|
+
href?: string;
|
|
62
|
+
matched?: readonly RouteRecordMatched<TRouteMap>[];
|
|
63
|
+
redirectedFrom?: RouteLocationRedirectedFrom<TRouteMap>;
|
|
64
|
+
params: RouteParams;
|
|
65
|
+
}
|
|
66
|
+
type RouteLocationNormalizedUnnamed<TRouteMap extends object> = RouteLocationNormalizedBase<TRouteMap> & {
|
|
67
|
+
name?: undefined;
|
|
68
|
+
meta?: RouteMeta;
|
|
69
|
+
};
|
|
70
|
+
type BroadRouteLocationNormalizedLoaded<TRouteMap extends object> = RouteLocationNormalizedBase<TRouteMap> & {
|
|
71
|
+
name?: string;
|
|
72
|
+
meta?: RouteMeta;
|
|
73
|
+
};
|
|
74
|
+
export type RouteLocationNormalizedByName<TRouteMap extends object, TName extends WevuRouteName<TRouteMap>> = TName extends WevuRouteName<TRouteMap> ? IsBroadRouteMap<TRouteMap> extends true ? (RouteLocationNormalizedBase<TRouteMap> & {
|
|
75
|
+
name: TName;
|
|
76
|
+
meta?: RouteMeta;
|
|
77
|
+
}) : (RouteLocationNormalizedBase<TRouteMap> & {
|
|
78
|
+
name: TName;
|
|
79
|
+
meta: WevuNamedRouteMeta<TRouteMap, TName>;
|
|
80
|
+
}) : never;
|
|
81
|
+
export type RouteLocationNormalizedLoaded<TRouteMap extends object = WevuNamedRouteMap> = IsBroadRouteMap<TRouteMap> extends true ? BroadRouteLocationNormalizedLoaded<WevuBroadRouteMap> : RouteLocationNormalizedUnnamed<TRouteMap> | { [TName in WevuRouteName<TRouteMap>]: RouteLocationNormalizedByName<TRouteMap, TName>; }[WevuRouteName<TRouteMap>];
|
|
82
|
+
interface RouteLocationRedirectedFromBase<TRouteMap extends object> {
|
|
83
|
+
path: string;
|
|
84
|
+
fullPath: string;
|
|
85
|
+
query: LocationQuery;
|
|
86
|
+
hash: string;
|
|
87
|
+
href?: string;
|
|
88
|
+
matched?: readonly RouteRecordMatched<TRouteMap>[];
|
|
89
|
+
params: RouteParams;
|
|
90
|
+
}
|
|
91
|
+
type RouteLocationRedirectedFromByName<TRouteMap extends object, TName extends WevuRouteName<TRouteMap>> = IsBroadRouteMap<TRouteMap> extends true ? (RouteLocationRedirectedFromBase<TRouteMap> & {
|
|
92
|
+
name: TName;
|
|
93
|
+
meta?: RouteMeta;
|
|
94
|
+
}) : (RouteLocationRedirectedFromBase<TRouteMap> & {
|
|
95
|
+
name: TName;
|
|
96
|
+
meta: WevuNamedRouteMeta<TRouteMap, TName>;
|
|
97
|
+
});
|
|
98
|
+
export type RouteLocationRedirectedFrom<TRouteMap extends object = WevuNamedRouteMap> = IsBroadRouteMap<TRouteMap> extends true ? (RouteLocationRedirectedFromBase<WevuBroadRouteMap> & {
|
|
99
|
+
name?: string;
|
|
100
|
+
meta?: RouteMeta;
|
|
101
|
+
}) : (RouteLocationRedirectedFromBase<TRouteMap> & {
|
|
102
|
+
name?: undefined;
|
|
103
|
+
meta?: RouteMeta;
|
|
104
|
+
} | { [TName in WevuRouteName<TRouteMap>]: RouteLocationRedirectedFromByName<TRouteMap, TName>; }[WevuRouteName<TRouteMap>]);
|
|
105
|
+
export declare const NavigationFailureType: {
|
|
106
|
+
readonly unknown: 1;
|
|
107
|
+
readonly aborted: 4;
|
|
108
|
+
readonly cancelled: 8;
|
|
109
|
+
readonly duplicated: 16;
|
|
110
|
+
};
|
|
111
|
+
export type NavigationFailureTypeValue = (typeof NavigationFailureType)[keyof typeof NavigationFailureType];
|
|
112
|
+
export interface NavigationFailure<TRouteMap extends object = WevuNamedRouteMap> extends Error {
|
|
113
|
+
readonly __wevuNavigationFailure: true;
|
|
114
|
+
readonly type: NavigationFailureTypeValue;
|
|
115
|
+
readonly to?: RouteLocationNormalizedLoaded<TRouteMap>;
|
|
116
|
+
readonly from?: RouteLocationNormalizedLoaded<TRouteMap>;
|
|
117
|
+
readonly cause?: unknown;
|
|
118
|
+
}
|
|
119
|
+
export type NavigationMode = 'push' | 'replace' | 'back';
|
|
120
|
+
export type InitialNavigationMode = 'eager' | 'blocking';
|
|
121
|
+
export interface NavigationRedirect<TRouteMap extends object = WevuNamedRouteMap> {
|
|
122
|
+
to: RouteLocationRaw<TRouteMap>;
|
|
123
|
+
replace?: boolean;
|
|
124
|
+
}
|
|
125
|
+
export type RouteRecordRedirect<TRouteMap extends object = WevuNamedRouteMap> = RouteLocationRaw<TRouteMap> | NavigationRedirect<TRouteMap> | ((to: RouteLocationNormalizedLoaded<TRouteMap>, from: RouteLocationNormalizedLoaded<TRouteMap>) => RouteLocationRaw<TRouteMap> | NavigationRedirect<TRouteMap> | Promise<RouteLocationRaw<TRouteMap> | NavigationRedirect<TRouteMap>>);
|
|
126
|
+
interface RouteRecordCommon<TRouteMap extends object> {
|
|
127
|
+
alias?: string | readonly string[];
|
|
128
|
+
beforeEnter?: NavigationGuard<TRouteMap> | readonly NavigationGuard<TRouteMap>[];
|
|
129
|
+
redirect?: RouteRecordRedirect<TRouteMap>;
|
|
130
|
+
}
|
|
131
|
+
type BroadRouteRecordInput<TRouteMap extends object> = RouteRecordCommon<TRouteMap> & {
|
|
132
|
+
name?: string;
|
|
133
|
+
path: string;
|
|
134
|
+
meta?: RouteMeta;
|
|
135
|
+
children?: readonly RouteRecordInput<TRouteMap>[];
|
|
136
|
+
};
|
|
137
|
+
type StrictRouteRecordInputByName<TRouteMap extends object, TName extends WevuRouteName<TRouteMap>> = RouteRecordCommon<TRouteMap> & {
|
|
138
|
+
name: TName;
|
|
139
|
+
path: WevuNamedRoutePath<TRouteMap, TName>;
|
|
140
|
+
meta: StrictRouteRecordMeta<TRouteMap, TName>;
|
|
141
|
+
children?: readonly RouteRecordInput<TRouteMap>[];
|
|
142
|
+
};
|
|
143
|
+
export type RouteRecordInput<TRouteMap extends object = WevuNamedRouteMap> = IsBroadRouteMap<TRouteMap> extends true ? BroadRouteRecordInput<TRouteMap> : { [TName in WevuRouteName<TRouteMap>]: StrictRouteRecordInputByName<TRouteMap, TName>; }[WevuRouteName<TRouteMap>];
|
|
144
|
+
type BroadRouteRecordRaw<TRouteMap extends object> = RouteRecordCommon<TRouteMap> & {
|
|
145
|
+
name: string;
|
|
146
|
+
path: string;
|
|
147
|
+
meta?: RouteMeta;
|
|
148
|
+
children?: readonly RouteRecordRaw<TRouteMap>[];
|
|
149
|
+
};
|
|
150
|
+
type StrictRouteRecordRawByName<TRouteMap extends object, TName extends WevuRouteName<TRouteMap>> = RouteRecordCommon<TRouteMap> & {
|
|
151
|
+
name: TName;
|
|
152
|
+
path: WevuNamedRoutePath<TRouteMap, TName>;
|
|
153
|
+
meta: StrictRouteRecordMeta<TRouteMap, TName>;
|
|
154
|
+
children?: readonly RouteRecordRaw<TRouteMap>[];
|
|
155
|
+
};
|
|
156
|
+
export type RouteRecordRaw<TRouteMap extends object = WevuNamedRouteMap> = IsBroadRouteMap<TRouteMap> extends true ? BroadRouteRecordRaw<TRouteMap> : { [TName in WevuRouteName<TRouteMap>]: StrictRouteRecordRawByName<TRouteMap, TName>; }[WevuRouteName<TRouteMap>];
|
|
157
|
+
export type NamedRouteRecord<TRouteMap extends object = WevuNamedRouteMap> = RouteRecordRaw<TRouteMap> extends (infer TRoute) ? TRoute extends {
|
|
158
|
+
name: string;
|
|
159
|
+
path: string;
|
|
160
|
+
} ? Pick<TRoute, 'name' | 'path'> : never : never;
|
|
161
|
+
export type NamedRoutes<TRouteMap extends object = WevuNamedRouteMap> = IsBroadRouteMap<TRouteMap> extends true ? Readonly<Record<string, string>> | readonly RouteRecordRaw<TRouteMap>[] : readonly RouteRecordRaw<TRouteMap>[];
|
|
162
|
+
export type RouteRecordMatched<TRouteMap extends object = WevuNamedRouteMap> = IsBroadRouteMap<TRouteMap> extends true ? {
|
|
163
|
+
name: string;
|
|
164
|
+
path: string;
|
|
165
|
+
aliasPath?: string;
|
|
166
|
+
meta?: RouteMeta;
|
|
167
|
+
} : { [TName in WevuRouteName<TRouteMap>]: {
|
|
168
|
+
name: TName;
|
|
169
|
+
path: string;
|
|
170
|
+
aliasPath?: string;
|
|
171
|
+
meta: WevuNamedRouteMeta<TRouteMap, TName>;
|
|
172
|
+
}; }[WevuRouteName<TRouteMap>];
|
|
173
|
+
export type NavigationGuardResult<TRouteMap extends object = WevuNamedRouteMap> = void | boolean | NavigationFailure<TRouteMap> | RouteLocationRaw<TRouteMap> | NavigationRedirect<TRouteMap>;
|
|
174
|
+
export type NavigationGuard<TRouteMap extends object = WevuNamedRouteMap> = (to: RouteLocationNormalizedLoaded<TRouteMap> | undefined, from: RouteLocationNormalizedLoaded<TRouteMap>, context?: NavigationGuardContext<TRouteMap>) => NavigationGuardResult<TRouteMap> | Promise<NavigationGuardResult<TRouteMap>>;
|
|
175
|
+
export type NavigationAfterEach<TRouteMap extends object = WevuNamedRouteMap> = (to: RouteLocationNormalizedLoaded<TRouteMap> | undefined, from: RouteLocationNormalizedLoaded<TRouteMap>, failure?: NavigationFailure<TRouteMap>, context?: NavigationAfterEachContext<TRouteMap>) => void | Promise<void>;
|
|
176
|
+
export interface NavigationGuardContext<TRouteMap extends object = WevuNamedRouteMap> {
|
|
177
|
+
readonly mode: NavigationMode;
|
|
178
|
+
readonly to?: RouteLocationNormalizedLoaded<TRouteMap>;
|
|
179
|
+
readonly from: RouteLocationNormalizedLoaded<TRouteMap>;
|
|
180
|
+
readonly nativeRouter: SetupContextRouter;
|
|
181
|
+
}
|
|
182
|
+
export interface NavigationAfterEachContext<TRouteMap extends object = WevuNamedRouteMap> {
|
|
183
|
+
readonly mode: NavigationMode;
|
|
184
|
+
readonly to?: RouteLocationNormalizedLoaded<TRouteMap>;
|
|
185
|
+
readonly from: RouteLocationNormalizedLoaded<TRouteMap>;
|
|
186
|
+
readonly nativeRouter: SetupContextRouter;
|
|
187
|
+
readonly failure?: NavigationFailure<TRouteMap>;
|
|
188
|
+
}
|
|
189
|
+
export interface NavigationErrorContext<TRouteMap extends object = WevuNamedRouteMap> {
|
|
190
|
+
readonly mode: NavigationMode;
|
|
191
|
+
readonly to?: RouteLocationNormalizedLoaded<TRouteMap>;
|
|
192
|
+
readonly from: RouteLocationNormalizedLoaded<TRouteMap>;
|
|
193
|
+
readonly nativeRouter: SetupContextRouter;
|
|
194
|
+
readonly failure: NavigationFailure<TRouteMap>;
|
|
195
|
+
}
|
|
196
|
+
export type NavigationErrorHandler<TRouteMap extends object = WevuNamedRouteMap> = (error: unknown, context: NavigationErrorContext<TRouteMap>) => void | Promise<void>;
|
|
197
|
+
export interface UseRouterOptions<TRouteMap extends object = WevuNamedRouteMap> {
|
|
198
|
+
tabBarEntries?: readonly (TypedRouterTabBarUrl | string)[];
|
|
199
|
+
/**
|
|
200
|
+
* Vue Router 对齐入口:推荐使用 `routes`
|
|
201
|
+
*/
|
|
202
|
+
routes?: readonly RouteRecordInput<TRouteMap>[];
|
|
203
|
+
/**
|
|
204
|
+
* 兼容入口:支持对象 map 或路由记录数组
|
|
205
|
+
*/
|
|
206
|
+
namedRoutes?: NamedRoutes<TRouteMap>;
|
|
207
|
+
paramsMode?: RouteParamsMode;
|
|
208
|
+
maxRedirects?: number;
|
|
209
|
+
/**
|
|
210
|
+
* 首屏导航守卫模式。默认立即挂载页面,只有明确配置 `blocking` 时才等待守卫完成。
|
|
211
|
+
*/
|
|
212
|
+
initialNavigationMode?: InitialNavigationMode;
|
|
213
|
+
/**
|
|
214
|
+
* blocking 首屏导航守卫的最大等待时间(毫秒),超时后放行页面挂载。
|
|
215
|
+
*/
|
|
216
|
+
initialNavigationTimeout?: number;
|
|
217
|
+
parseQuery?: RouteQueryParser;
|
|
218
|
+
stringifyQuery?: RouteQueryStringifier;
|
|
219
|
+
/**
|
|
220
|
+
* 异常型导航失败时是否以 Promise reject 抛出失败对象。
|
|
221
|
+
*
|
|
222
|
+
* - `true`:更贴近 Vue Router 心智(默认)
|
|
223
|
+
* - `false`:始终以返回值形式携带失败对象
|
|
224
|
+
*/
|
|
225
|
+
rejectOnError?: boolean;
|
|
226
|
+
}
|
|
227
|
+
export type RouterResolve<TRouteMap extends object = WevuNamedRouteMap> = IsBroadRouteMap<TRouteMap> extends true ? (to: RouteLocationRaw<TRouteMap>) => RouteLocationNormalizedLoaded<TRouteMap> : {
|
|
228
|
+
<TName extends WevuRouteName<TRouteMap>>(to: RouteLocationNamedRaw<TRouteMap, TName>): RouteLocationNormalizedByName<TRouteMap, TName>;
|
|
229
|
+
(to: RouteLocationRaw<TRouteMap>): RouteLocationNormalizedLoaded<TRouteMap>;
|
|
230
|
+
};
|
|
231
|
+
export interface AddRoute<TRouteMap extends object = WevuNamedRouteMap> {
|
|
232
|
+
(route: RouteRecordRaw<TRouteMap>): () => void;
|
|
233
|
+
(parentName: WevuRouteName<TRouteMap>, route: RouteRecordRaw<TRouteMap>): () => void;
|
|
234
|
+
}
|
|
235
|
+
export interface RouterNavigation<TRouteMap extends object = WevuNamedRouteMap> {
|
|
236
|
+
readonly nativeRouter: SetupContextRouter;
|
|
237
|
+
readonly options: Readonly<UseRouterOptions<TRouteMap>>;
|
|
238
|
+
readonly currentRoute: Readonly<RouteLocationNormalizedLoaded<TRouteMap>>;
|
|
239
|
+
install: (app?: unknown) => void;
|
|
240
|
+
resolve: RouterResolve<TRouteMap>;
|
|
241
|
+
isReady: () => Promise<void>;
|
|
242
|
+
push: (to: RouteLocationRaw<TRouteMap>) => Promise<void | NavigationFailure<TRouteMap>>;
|
|
243
|
+
replace: (to: RouteLocationRaw<TRouteMap>) => Promise<void | NavigationFailure<TRouteMap>>;
|
|
244
|
+
back: (delta?: number) => Promise<void | NavigationFailure<TRouteMap>>;
|
|
245
|
+
go: (delta: number) => Promise<void | NavigationFailure<TRouteMap>>;
|
|
246
|
+
forward: () => Promise<void | NavigationFailure<TRouteMap>>;
|
|
247
|
+
hasRoute: (name: WevuRouteName<TRouteMap>) => boolean;
|
|
248
|
+
getRoutes: () => readonly RouteRecordRaw<TRouteMap>[];
|
|
249
|
+
addRoute: AddRoute<TRouteMap>;
|
|
250
|
+
removeRoute: (name: WevuRouteName<TRouteMap>) => void;
|
|
251
|
+
clearRoutes: () => void;
|
|
252
|
+
beforeEach: (guard: NavigationGuard<TRouteMap>) => () => void;
|
|
253
|
+
beforeResolve: (guard: NavigationGuard<TRouteMap>) => () => void;
|
|
254
|
+
afterEach: (hook: NavigationAfterEach<TRouteMap>) => () => void;
|
|
255
|
+
onError: (handler: NavigationErrorHandler<TRouteMap>) => () => void;
|
|
256
|
+
}
|
|
257
|
+
export type WevuAutoRoute<TRouteMap extends object = WevuNamedRouteMap> = IsBroadRouteMap<TRouteMap> extends true ? {
|
|
258
|
+
readonly name: string;
|
|
259
|
+
readonly path: string;
|
|
260
|
+
readonly meta: RouteMeta;
|
|
261
|
+
} : { [TName in WevuRouteName<TRouteMap>]: {
|
|
262
|
+
readonly name: TName;
|
|
263
|
+
readonly path: WevuNamedRoutePath<TRouteMap, TName>;
|
|
264
|
+
readonly meta: StrictRouteRecordMeta<TRouteMap, TName>;
|
|
265
|
+
}; }[WevuRouteName<TRouteMap>];
|
|
266
|
+
//#endregion
|
|
267
|
+
//# sourceMappingURL=types.d.mts.map
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { SetupContextRouter } from "../runtime/types/props/router.mjs";
|
|
2
|
+
import "../runtime/types/props.mjs";
|
|
3
|
+
import { RouteLocationNormalizedLoaded } from "./types.mjs";
|
|
4
|
+
import "./routeSync.mjs";
|
|
5
|
+
import { WevuNamedRouteMap } from "../router.mjs";
|
|
6
|
+
//#region src/router/useRoute.d.ts
|
|
7
|
+
export interface UseRouteOptions<TRouteMap extends object = WevuNamedRouteMap> {
|
|
8
|
+
resolveRoute?: (route: RouteLocationNormalizedLoaded<TRouteMap>) => RouteLocationNormalizedLoaded<TRouteMap>;
|
|
9
|
+
}
|
|
10
|
+
export declare function useRoute<TRouteMap extends object = WevuNamedRouteMap>(options?: UseRouteOptions<NoInfer<TRouteMap>>): Readonly<RouteLocationNormalizedLoaded<TRouteMap>>;
|
|
11
|
+
/**
|
|
12
|
+
* @description 获取当前组件路径语义的原生 Router
|
|
13
|
+
*/
|
|
14
|
+
export declare function useNativeRouter(): SetupContextRouter;
|
|
15
|
+
/**
|
|
16
|
+
* @description 获取当前页面路径语义的原生 Page Router
|
|
17
|
+
*/
|
|
18
|
+
export declare function useNativePageRouter(): SetupContextRouter;
|
|
19
|
+
//#endregion
|
|
20
|
+
//# sourceMappingURL=useRoute.d.mts.map
|
|
@@ -3,11 +3,11 @@ import { readonly } from "../reactivity/readonly.mjs";
|
|
|
3
3
|
import { getCurrentMiniProgramPages } from "../runtime/platform.mjs";
|
|
4
4
|
import { getCurrentSetupContext } from "../runtime/hooks/base.mjs";
|
|
5
5
|
import { onLoad, onReady, onRouteDone, onShow, onUnload } from "../runtime/hooks/register.mjs";
|
|
6
|
-
import { getActiveRouter } from "./instance.mjs";
|
|
7
6
|
import { registerRouteStateSyncHandler } from "./routeSync.mjs";
|
|
8
7
|
import { resolveCurrentRoute, resolvePageRoute } from "../routerInternal/location.mjs";
|
|
9
8
|
import { cloneLocationQuery, cloneRouteLocationRedirectedFrom, cloneRouteMeta, cloneRouteParams, cloneRouteRecordMatchedList } from "../routerInternal/snapshots.mjs";
|
|
10
9
|
import { useNativePageRouter as useNativePageRouter$1, useNativeRouter as useNativeRouter$1 } from "../runtime/vueCompat/router.mjs";
|
|
10
|
+
import { getActiveRouter } from "./instance.mjs";
|
|
11
11
|
import { resolveRouteLocation } from "./resolve.mjs";
|
|
12
12
|
import { WEVU_NATIVE_INSTANCE_KEY } from "@weapp-core/constants";
|
|
13
13
|
|
|
@@ -20,10 +20,10 @@ function resolveRouteControllerInstance(instance) {
|
|
|
20
20
|
return nativeInstance && typeof nativeInstance === "object" ? nativeInstance : instance;
|
|
21
21
|
}
|
|
22
22
|
function shouldSyncRouteStateForInstance(instance, isPageController, payload) {
|
|
23
|
-
if (
|
|
23
|
+
if (payload?.source === "router") return true;
|
|
24
24
|
if (!isPageController) return true;
|
|
25
25
|
const routeControllerInstance = resolveRouteControllerInstance(instance);
|
|
26
|
-
if (payload
|
|
26
|
+
if (payload?.page) return payload.page === routeControllerInstance;
|
|
27
27
|
const pages = getCurrentMiniProgramPages();
|
|
28
28
|
return pages[pages.length - 1] === routeControllerInstance;
|
|
29
29
|
}
|
|
@@ -45,13 +45,9 @@ function applyRouteState(routeState, nextRoute) {
|
|
|
45
45
|
else routeState.redirectedFrom = cloneRouteLocationRedirectedFrom(nextRoute.redirectedFrom);
|
|
46
46
|
}
|
|
47
47
|
function createRouteStateController(options = {}) {
|
|
48
|
-
var _options$resolveRoute;
|
|
49
48
|
const setupContext = getCurrentSetupContext();
|
|
50
|
-
const fallbackPage =
|
|
51
|
-
const resolveRoute =
|
|
52
|
-
var _getActiveRouter$reso, _getActiveRouter;
|
|
53
|
-
return (_getActiveRouter$reso = (_getActiveRouter = getActiveRouter()) === null || _getActiveRouter === void 0 ? void 0 : _getActiveRouter.resolve(route)) !== null && _getActiveRouter$reso !== void 0 ? _getActiveRouter$reso : route;
|
|
54
|
-
});
|
|
49
|
+
const fallbackPage = setupContext?.instance && typeof setupContext.instance === "object" ? setupContext.instance : void 0;
|
|
50
|
+
const resolveRoute = options.resolveRoute ?? ((route) => getActiveRouter()?.resolve(route) ?? route);
|
|
55
51
|
const currentRoute = resolveRoute(resolveCurrentRoute(void 0, fallbackPage));
|
|
56
52
|
const routeState = reactive({
|
|
57
53
|
path: currentRoute.path,
|
|
@@ -63,23 +59,20 @@ function createRouteStateController(options = {}) {
|
|
|
63
59
|
applyRouteState(routeState, currentRoute);
|
|
64
60
|
function syncRoute(queryOverride, routeOverride, payload) {
|
|
65
61
|
const nextRoute = routeOverride ? resolveRoute(routeOverride) : resolveRoute(resolveCurrentRoute(queryOverride, fallbackPage));
|
|
66
|
-
if (payload)
|
|
67
|
-
var _options$beforeRouteS;
|
|
68
|
-
(_options$beforeRouteS = options.beforeRouteStateSync) === null || _options$beforeRouteS === void 0 || _options$beforeRouteS.call(options, nextRoute, payload);
|
|
69
|
-
}
|
|
62
|
+
if (payload) options.beforeRouteStateSync?.(nextRoute, payload);
|
|
70
63
|
applyRouteState(routeState, nextRoute);
|
|
71
64
|
}
|
|
72
65
|
if (!fallbackPage) {
|
|
73
66
|
registerRouteStateSyncHandler((payload) => {
|
|
74
|
-
if (payload
|
|
67
|
+
if (payload?.route) {
|
|
75
68
|
syncRoute(void 0, payload.route, payload);
|
|
76
69
|
return;
|
|
77
70
|
}
|
|
78
|
-
if (payload
|
|
71
|
+
if (payload?.url) {
|
|
79
72
|
syncRoute(void 0, resolveRouteLocation(payload.url, routeState.path), payload);
|
|
80
73
|
return;
|
|
81
74
|
}
|
|
82
|
-
if (payload
|
|
75
|
+
if (payload?.page) {
|
|
83
76
|
syncRoute(void 0, resolvePageRoute(payload.page), payload);
|
|
84
77
|
return;
|
|
85
78
|
}
|
|
@@ -104,15 +97,15 @@ function createRouteStateController(options = {}) {
|
|
|
104
97
|
});
|
|
105
98
|
const unregisterRouteStateSync = registerRouteStateSyncHandler((payload) => {
|
|
106
99
|
if (!shouldSyncRouteStateForInstance(pageInstance, isPageController, payload)) return;
|
|
107
|
-
if (payload
|
|
100
|
+
if (payload?.route) {
|
|
108
101
|
syncRoute(void 0, payload.route, payload);
|
|
109
102
|
return;
|
|
110
103
|
}
|
|
111
|
-
if (payload
|
|
104
|
+
if (payload?.url) {
|
|
112
105
|
syncRoute(void 0, resolveRouteLocation(payload.url, routeState.path), payload);
|
|
113
106
|
return;
|
|
114
107
|
}
|
|
115
|
-
if (payload
|
|
108
|
+
if (payload?.page) {
|
|
116
109
|
syncRoute(void 0, resolvePageRoute(payload.page), payload);
|
|
117
110
|
return;
|
|
118
111
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRoute.mjs","names":["runtimeOptions","useNativeRouterInternal","useNativePageRouterInternal"],"sources":["../../../src/router/useRoute.ts"],"sourcesContent":["import type { WevuNamedRouteMap } from '../router'\nimport type { MiniProgramPageLike } from '../routerInternal/types'\nimport 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<TRouteMap extends object = WevuNamedRouteMap> {\n resolveRoute?: (\n route: RouteLocationNormalizedLoaded<TRouteMap>,\n ) => RouteLocationNormalizedLoaded<TRouteMap>\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<{ instance?: unknown }>()\n const fallbackPage = setupContext?.instance && typeof setupContext.instance === 'object'\n ? setupContext.instance as MiniProgramPageLike & Record<string, unknown>\n : undefined\n const resolveRoute = options.resolveRoute\n ?? ((route: RouteLocationNormalizedLoaded) => getActiveRouter()?.resolve(route) ?? route)\n const currentRoute = resolveRoute(resolveCurrentRoute(undefined, fallbackPage))\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 if (!fallbackPage) {\n const unregisterRouteStateSync = registerRouteStateSyncHandler((payload) => {\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 void unregisterRouteStateSync\n return {\n route: readonly(routeState) as Readonly<RouteLocationNormalizedLoaded>,\n }\n }\n\n const pageInstance = fallbackPage\n const initialRouteControllerInstance = resolveRouteControllerInstance(pageInstance)\n const isPageController = isPageLikeInstance(initialRouteControllerInstance)\n || getCurrentMiniProgramPages().includes(initialRouteControllerInstance)\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(pageInstance, 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<TRouteMap extends object = WevuNamedRouteMap>(\n options: UseRouteOptions<NoInfer<TRouteMap>> = {},\n): Readonly<RouteLocationNormalizedLoaded<TRouteMap>> {\n // 路由表泛型只收窄公开快照;状态同步仍复用同一个运行时控制器。\n const runtimeOptions = options as unknown as UseRouteOptions\n const route = createRouteStateController(runtimeOptions).route\n return route as unknown as Readonly<RouteLocationNormalizedLoaded<TRouteMap>>\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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"}
|
|
1
|
+
{"version":3,"file":"useRoute.mjs","names":["runtimeOptions","useNativeRouterInternal","useNativePageRouterInternal"],"sources":["../../../src/router/useRoute.ts"],"sourcesContent":["import type { WevuNamedRouteMap } from '../router'\nimport type { MiniProgramPageLike } from '../routerInternal/types'\nimport 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<TRouteMap extends object = WevuNamedRouteMap> {\n resolveRoute?: (\n route: RouteLocationNormalizedLoaded<TRouteMap>,\n ) => RouteLocationNormalizedLoaded<TRouteMap>\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<{ instance?: unknown }>()\n const fallbackPage = setupContext?.instance && typeof setupContext.instance === 'object'\n ? setupContext.instance as MiniProgramPageLike & Record<string, unknown>\n : undefined\n const resolveRoute = options.resolveRoute\n ?? ((route: RouteLocationNormalizedLoaded) => getActiveRouter()?.resolve(route) ?? route)\n const currentRoute = resolveRoute(resolveCurrentRoute(undefined, fallbackPage))\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 if (!fallbackPage) {\n const unregisterRouteStateSync = registerRouteStateSyncHandler((payload) => {\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 void unregisterRouteStateSync\n return {\n route: readonly(routeState) as Readonly<RouteLocationNormalizedLoaded>,\n }\n }\n\n const pageInstance = fallbackPage\n const initialRouteControllerInstance = resolveRouteControllerInstance(pageInstance)\n const isPageController = isPageLikeInstance(initialRouteControllerInstance)\n || getCurrentMiniProgramPages().includes(initialRouteControllerInstance)\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(pageInstance, 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<TRouteMap extends object = WevuNamedRouteMap>(\n options: UseRouteOptions<NoInfer<TRouteMap>> = {},\n): Readonly<RouteLocationNormalizedLoaded<TRouteMap>> {\n // 路由表泛型只收窄公开快照;状态同步仍复用同一个运行时控制器。\n const runtimeOptions = options as unknown as UseRouteOptions\n const route = createRouteStateController(runtimeOptions).route\n return route as unknown as Readonly<RouteLocationNormalizedLoaded<TRouteMap>>\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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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { RouterNavigation } from "./types.mjs";
|
|
2
|
+
import { WevuNamedRouteMap } from "../router.mjs";
|
|
3
|
+
//#region src/router/useRouter.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* @description 获取当前已创建的路由实例。
|
|
6
|
+
*/
|
|
7
|
+
export declare function useRouter<TRouteMap extends object = WevuNamedRouteMap>(): RouterNavigation<TRouteMap>;
|
|
8
|
+
//#endregion
|
|
9
|
+
//# sourceMappingURL=useRouter.d.mts.map
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { RouterNavigateToOption, RouterReLaunchOption, RouterRedirectToOption, RouterSwitchTabOption, SetupContextRouter, TypedRouterTabBarUrl, TypedRouterUrl, WevuTypedRouterRouteMap } from "./runtime/types/props/router.mjs";
|
|
2
|
+
import "./runtime/types/props.mjs";
|
|
3
|
+
import { parseQuery, stringifyQuery } from "./routerInternal/query.mjs";
|
|
4
|
+
import "./routerInternal/shared.mjs";
|
|
5
|
+
import { AddRoute, InitialNavigationMode, LocationQuery, LocationQueryRaw, LocationQueryValue, LocationQueryValueRaw, NamedRouteRecord, NamedRoutes, NavigationAfterEach, NavigationAfterEachContext, NavigationErrorContext, NavigationErrorHandler, NavigationFailure, NavigationFailureType, NavigationFailureTypeValue, NavigationGuard, NavigationGuardContext, NavigationGuardResult, NavigationMode, NavigationRedirect, RouteLocationNamedRaw, RouteLocationNormalizedByName, RouteLocationNormalizedLoaded, RouteLocationRaw, RouteLocationRedirectedFrom, RouteMeta, RouteParamValue, RouteParamValueRaw, RouteParams, RouteParamsMode, RouteParamsRaw, RouteQueryParser, RouteQueryStringifier, RouteRecordInput, RouteRecordMatched, RouteRecordRaw, RouteRecordRedirect, RouterNavigation, RouterResolve, UseRouterOptions, WevuAutoRoute, WevuBroadRouteMap, WevuNamedRouteDefinition, WevuNamedRouteMeta, WevuNamedRoutePath, WevuRouteName } from "./router/types.mjs";
|
|
6
|
+
import { createRouter } from "./router/createRouter.mjs";
|
|
7
|
+
import { createNavigationFailure, isNavigationFailure } from "./router/navigationCore.mjs";
|
|
8
|
+
import { resolveRouteLocation } from "./router/resolve.mjs";
|
|
9
|
+
import { UseRouteOptions, useNativePageRouter, useNativeRouter, useRoute } from "./router/useRoute.mjs";
|
|
10
|
+
import { useRouter } from "./router/useRouter.mjs";
|
|
11
|
+
import { StaticPageDeclaration, StaticPageDeclaration as StaticPageDeclaration$1, StaticRouteValue } from "@wevu/compiler/page-route";
|
|
12
|
+
//#region src/router.d.ts
|
|
13
|
+
/**
|
|
14
|
+
* 由 weapp-vite 生成的项目级命名路由声明会扩展此接口。
|
|
15
|
+
*/
|
|
16
|
+
export interface WevuNamedRouteMap {}
|
|
17
|
+
/**
|
|
18
|
+
* definePage 声明页面命名路由(仅编译期宏,无运行时实现)。
|
|
19
|
+
*
|
|
20
|
+
* `name` 必须是应用内唯一的非空静态字符串,`meta` 仅支持有限 JSON 对象。
|
|
21
|
+
* 参数只接受 `name` 与 `meta`;页面布局继续使用 `definePageMeta`,页面路径由构建工具推导。
|
|
22
|
+
*/
|
|
23
|
+
export declare function definePage(route: StaticPageDeclaration$1): void;
|
|
24
|
+
//#endregion
|
|
25
|
+
export { type AddRoute, type InitialNavigationMode, type LocationQuery, type LocationQueryRaw, type LocationQueryValue, type LocationQueryValueRaw, type NamedRouteRecord, type NamedRoutes, type NavigationAfterEach, type NavigationAfterEachContext, type NavigationErrorContext, type NavigationErrorHandler, type NavigationFailure, NavigationFailureType, type NavigationFailureTypeValue, type NavigationGuard, type NavigationGuardContext, type NavigationGuardResult, type NavigationMode, type NavigationRedirect, type RouteLocationNamedRaw, type RouteLocationNormalizedByName, type RouteLocationNormalizedLoaded, type RouteLocationRaw, type RouteLocationRedirectedFrom, type RouteMeta, type RouteParamValue, type RouteParamValueRaw, type RouteParams, type RouteParamsMode, type RouteParamsRaw, type RouteQueryParser, type RouteQueryStringifier, type RouteRecordInput, type RouteRecordMatched, type RouteRecordRaw, type RouteRecordRedirect, type RouterNavigateToOption, type RouterNavigation, type RouterReLaunchOption, type RouterRedirectToOption, type RouterResolve, type RouterSwitchTabOption, type SetupContextRouter, type StaticPageDeclaration, type StaticRouteValue, type TypedRouterTabBarUrl, type TypedRouterUrl, type UseRouteOptions, type UseRouterOptions, type WevuAutoRoute, type WevuBroadRouteMap, type WevuNamedRouteDefinition, type WevuNamedRouteMeta, type WevuNamedRoutePath, type WevuRouteName, type WevuTypedRouterRouteMap, createNavigationFailure, createRouter, isNavigationFailure, parseQuery, resolveRouteLocation, stringifyQuery, useNativePageRouter, useNativeRouter, useRoute, useRouter };
|
|
26
|
+
//# sourceMappingURL=router.d.mts.map
|
|
@@ -41,7 +41,7 @@ function createRouteLocation(path, query, hash = "", name, params = {}, queryStr
|
|
|
41
41
|
return location;
|
|
42
42
|
}
|
|
43
43
|
function hasPageRoute(page) {
|
|
44
|
-
return typeof
|
|
44
|
+
return typeof page?.route === "string" && page.route.length > 0 || typeof page?.__route__ === "string" && page.__route__.length > 0;
|
|
45
45
|
}
|
|
46
46
|
function getCurrentMiniProgramPage(fallbackPage) {
|
|
47
47
|
const pages = getCurrentMiniProgramPages();
|
|
@@ -53,10 +53,9 @@ function getCurrentMiniProgramPage(fallbackPage) {
|
|
|
53
53
|
return hasPageRoute(currentPageInstance) ? currentPageInstance : fallbackPage;
|
|
54
54
|
}
|
|
55
55
|
function resolvePageRoute(page, queryOverride) {
|
|
56
|
-
var _page$options;
|
|
57
56
|
if (!page) return createRouteLocation("", {});
|
|
58
57
|
const rawPath = typeof page.route === "string" ? page.route : typeof page.__route__ === "string" ? page.__route__ : "";
|
|
59
|
-
const querySource = queryOverride
|
|
58
|
+
const querySource = queryOverride ?? page.options ?? {};
|
|
60
59
|
return createRouteLocation(rawPath, normalizeQuery(querySource), "", void 0, {});
|
|
61
60
|
}
|
|
62
61
|
function resolveCurrentRoute(queryOverride, fallbackPage) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"location.mjs","names":[],"sources":["../../../src/routerInternal/location.ts"],"sourcesContent":["import type {\n LocationQuery,\n LocationQueryRaw,\n RouteLocationNormalizedLoaded,\n RouteParams,\n RouteQueryStringifier,\n} from '../router'\nimport type { MiniProgramPageLike, RouteResolveCodec } from './types'\nimport { getCurrentMiniProgramPages } from '../runtime/platform'\nimport { getCurrentPageInstance } from '../runtime/register/component/lifecycle/platform'\nimport { createAbsoluteRoutePath, resolvePath } from './path'\nimport { normalizeHash, normalizeQuery, parseQuery, stringifyQuery } from './query'\n\nconst DEFAULT_ROUTE_RESOLVE_CODEC: RouteResolveCodec = {\n parseQuery,\n stringifyQuery,\n}\n\nexport function parsePathInput(\n input: string,\n codec: RouteResolveCodec = DEFAULT_ROUTE_RESOLVE_CODEC,\n): { path: string, query: LocationQuery, hash: string } {\n const hashIndex = input.indexOf('#')\n const withoutHash = hashIndex >= 0 ? input.slice(0, hashIndex) : input\n const hash = hashIndex >= 0 ? normalizeHash(input.slice(hashIndex + 1)) : ''\n const queryIndex = withoutHash.indexOf('?')\n\n if (queryIndex < 0) {\n return {\n path: withoutHash,\n query: {},\n hash,\n }\n }\n\n return {\n path: withoutHash.slice(0, queryIndex),\n query: normalizeQuery(codec.parseQuery(withoutHash.slice(queryIndex + 1))),\n hash,\n }\n}\n\nexport function createRouteLocation(\n path: string,\n query: LocationQuery,\n hash = '',\n name?: string,\n params: RouteParams = {},\n queryStringifier: RouteQueryStringifier = stringifyQuery,\n): RouteLocationNormalizedLoaded {\n const normalizedPath = resolvePath(path, '')\n const queryString = queryStringifier(query)\n const fullPathBase = createAbsoluteRoutePath(normalizedPath)\n const normalizedHash = normalizeHash(hash)\n const fullPath = queryString ? `${fullPathBase}?${queryString}` : fullPathBase\n const location: RouteLocationNormalizedLoaded = {\n path: normalizedPath,\n fullPath: normalizedHash ? `${fullPath}${normalizedHash}` : fullPath,\n query,\n hash: normalizedHash,\n params,\n }\n if (name !== undefined) {\n location.name = name\n }\n\n return location\n}\n\nfunction hasPageRoute(page: MiniProgramPageLike | undefined): page is MiniProgramPageLike {\n return (typeof page?.route === 'string' && page.route.length > 0)\n || (typeof page?.__route__ === 'string' && page.__route__.length > 0)\n}\n\nfunction getCurrentMiniProgramPage(fallbackPage?: MiniProgramPageLike): MiniProgramPageLike | undefined {\n const pages = getCurrentMiniProgramPages() as MiniProgramPageLike[]\n if (Array.isArray(pages) && pages.length > 0) {\n const currentPage = pages[pages.length - 1]\n if (hasPageRoute(currentPage)) {\n return currentPage\n }\n }\n\n const currentPageInstance = getCurrentPageInstance() as MiniProgramPageLike | undefined\n return hasPageRoute(currentPageInstance) ? currentPageInstance : fallbackPage\n}\n\nexport function resolvePageRoute(\n page: MiniProgramPageLike | undefined,\n queryOverride?: LocationQueryRaw,\n): RouteLocationNormalizedLoaded {\n if (!page) {\n return createRouteLocation('', {})\n }\n\n const rawPath = typeof page.route === 'string'\n ? page.route\n : typeof page.__route__ === 'string'\n ? page.__route__\n : ''\n\n const querySource = queryOverride ?? ((page.options ?? {}) as LocationQueryRaw)\n const query = normalizeQuery(querySource)\n return createRouteLocation(rawPath, query, '', undefined, {})\n}\n\nexport function resolveCurrentRoute(\n queryOverride?: LocationQueryRaw,\n fallbackPage?: MiniProgramPageLike,\n): RouteLocationNormalizedLoaded {\n const currentPage = getCurrentMiniProgramPage(fallbackPage)\n return resolvePageRoute(currentPage, queryOverride)\n}\n"],"mappings":";;;;;;AAaA,MAAM,8BAAiD;CACrD;CACA;AACF;AAEA,SAAgB,eACd,OACA,QAA2B,6BAC2B;CACtD,MAAM,YAAY,MAAM,QAAQ,GAAG;CACnC,MAAM,cAAc,aAAa,IAAI,MAAM,MAAM,GAAG,SAAS,IAAI;CACjE,MAAM,OAAO,aAAa,IAAI,cAAc,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI;CAC1E,MAAM,aAAa,YAAY,QAAQ,GAAG;CAE1C,IAAI,aAAa,GACf,OAAO;EACL,MAAM;EACN,OAAO,CAAC;EACR;CACF;CAGF,OAAO;EACL,MAAM,YAAY,MAAM,GAAG,UAAU;EACrC,OAAO,eAAe,MAAM,WAAW,YAAY,MAAM,aAAa,CAAC,CAAC,CAAC;EACzE;CACF;AACF;AAEA,SAAgB,oBACd,MACA,OACA,OAAO,IACP,MACA,SAAsB,CAAC,GACvB,mBAA0C,gBACX;CAC/B,MAAM,iBAAiB,YAAY,MAAM,EAAE;CAC3C,MAAM,cAAc,iBAAiB,KAAK;CAC1C,MAAM,eAAe,wBAAwB,cAAc;CAC3D,MAAM,iBAAiB,cAAc,IAAI;CACzC,MAAM,WAAW,cAAc,GAAG,aAAa,GAAG,gBAAgB;CAClE,MAAM,WAA0C;EAC9C,MAAM;EACN,UAAU,iBAAiB,GAAG,WAAW,mBAAmB;EAC5D;EACA,MAAM;EACN;CACF;CACA,IAAI,SAAS,QACX,SAAS,OAAO;CAGlB,OAAO;AACT;AAEA,SAAS,aAAa,MAAoE;CACxF,OAAQ,
|
|
1
|
+
{"version":3,"file":"location.mjs","names":[],"sources":["../../../src/routerInternal/location.ts"],"sourcesContent":["import type {\n LocationQuery,\n LocationQueryRaw,\n RouteLocationNormalizedLoaded,\n RouteParams,\n RouteQueryStringifier,\n} from '../router'\nimport type { MiniProgramPageLike, RouteResolveCodec } from './types'\nimport { getCurrentMiniProgramPages } from '../runtime/platform'\nimport { getCurrentPageInstance } from '../runtime/register/component/lifecycle/platform'\nimport { createAbsoluteRoutePath, resolvePath } from './path'\nimport { normalizeHash, normalizeQuery, parseQuery, stringifyQuery } from './query'\n\nconst DEFAULT_ROUTE_RESOLVE_CODEC: RouteResolveCodec = {\n parseQuery,\n stringifyQuery,\n}\n\nexport function parsePathInput(\n input: string,\n codec: RouteResolveCodec = DEFAULT_ROUTE_RESOLVE_CODEC,\n): { path: string, query: LocationQuery, hash: string } {\n const hashIndex = input.indexOf('#')\n const withoutHash = hashIndex >= 0 ? input.slice(0, hashIndex) : input\n const hash = hashIndex >= 0 ? normalizeHash(input.slice(hashIndex + 1)) : ''\n const queryIndex = withoutHash.indexOf('?')\n\n if (queryIndex < 0) {\n return {\n path: withoutHash,\n query: {},\n hash,\n }\n }\n\n return {\n path: withoutHash.slice(0, queryIndex),\n query: normalizeQuery(codec.parseQuery(withoutHash.slice(queryIndex + 1))),\n hash,\n }\n}\n\nexport function createRouteLocation(\n path: string,\n query: LocationQuery,\n hash = '',\n name?: string,\n params: RouteParams = {},\n queryStringifier: RouteQueryStringifier = stringifyQuery,\n): RouteLocationNormalizedLoaded {\n const normalizedPath = resolvePath(path, '')\n const queryString = queryStringifier(query)\n const fullPathBase = createAbsoluteRoutePath(normalizedPath)\n const normalizedHash = normalizeHash(hash)\n const fullPath = queryString ? `${fullPathBase}?${queryString}` : fullPathBase\n const location: RouteLocationNormalizedLoaded = {\n path: normalizedPath,\n fullPath: normalizedHash ? `${fullPath}${normalizedHash}` : fullPath,\n query,\n hash: normalizedHash,\n params,\n }\n if (name !== undefined) {\n location.name = name\n }\n\n return location\n}\n\nfunction hasPageRoute(page: MiniProgramPageLike | undefined): page is MiniProgramPageLike {\n return (typeof page?.route === 'string' && page.route.length > 0)\n || (typeof page?.__route__ === 'string' && page.__route__.length > 0)\n}\n\nfunction getCurrentMiniProgramPage(fallbackPage?: MiniProgramPageLike): MiniProgramPageLike | undefined {\n const pages = getCurrentMiniProgramPages() as MiniProgramPageLike[]\n if (Array.isArray(pages) && pages.length > 0) {\n const currentPage = pages[pages.length - 1]\n if (hasPageRoute(currentPage)) {\n return currentPage\n }\n }\n\n const currentPageInstance = getCurrentPageInstance() as MiniProgramPageLike | undefined\n return hasPageRoute(currentPageInstance) ? currentPageInstance : fallbackPage\n}\n\nexport function resolvePageRoute(\n page: MiniProgramPageLike | undefined,\n queryOverride?: LocationQueryRaw,\n): RouteLocationNormalizedLoaded {\n if (!page) {\n return createRouteLocation('', {})\n }\n\n const rawPath = typeof page.route === 'string'\n ? page.route\n : typeof page.__route__ === 'string'\n ? page.__route__\n : ''\n\n const querySource = queryOverride ?? ((page.options ?? {}) as LocationQueryRaw)\n const query = normalizeQuery(querySource)\n return createRouteLocation(rawPath, query, '', undefined, {})\n}\n\nexport function resolveCurrentRoute(\n queryOverride?: LocationQueryRaw,\n fallbackPage?: MiniProgramPageLike,\n): RouteLocationNormalizedLoaded {\n const currentPage = getCurrentMiniProgramPage(fallbackPage)\n return resolvePageRoute(currentPage, queryOverride)\n}\n"],"mappings":";;;;;;AAaA,MAAM,8BAAiD;CACrD;CACA;AACF;AAEA,SAAgB,eACd,OACA,QAA2B,6BAC2B;CACtD,MAAM,YAAY,MAAM,QAAQ,GAAG;CACnC,MAAM,cAAc,aAAa,IAAI,MAAM,MAAM,GAAG,SAAS,IAAI;CACjE,MAAM,OAAO,aAAa,IAAI,cAAc,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI;CAC1E,MAAM,aAAa,YAAY,QAAQ,GAAG;CAE1C,IAAI,aAAa,GACf,OAAO;EACL,MAAM;EACN,OAAO,CAAC;EACR;CACF;CAGF,OAAO;EACL,MAAM,YAAY,MAAM,GAAG,UAAU;EACrC,OAAO,eAAe,MAAM,WAAW,YAAY,MAAM,aAAa,CAAC,CAAC,CAAC;EACzE;CACF;AACF;AAEA,SAAgB,oBACd,MACA,OACA,OAAO,IACP,MACA,SAAsB,CAAC,GACvB,mBAA0C,gBACX;CAC/B,MAAM,iBAAiB,YAAY,MAAM,EAAE;CAC3C,MAAM,cAAc,iBAAiB,KAAK;CAC1C,MAAM,eAAe,wBAAwB,cAAc;CAC3D,MAAM,iBAAiB,cAAc,IAAI;CACzC,MAAM,WAAW,cAAc,GAAG,aAAa,GAAG,gBAAgB;CAClE,MAAM,WAA0C;EAC9C,MAAM;EACN,UAAU,iBAAiB,GAAG,WAAW,mBAAmB;EAC5D;EACA,MAAM;EACN;CACF;CACA,IAAI,SAAS,QACX,SAAS,OAAO;CAGlB,OAAO;AACT;AAEA,SAAS,aAAa,MAAoE;CACxF,OAAQ,OAAO,MAAM,UAAU,YAAY,KAAK,MAAM,SAAS,KACzD,OAAO,MAAM,cAAc,YAAY,KAAK,UAAU,SAAS;AACvE;AAEA,SAAS,0BAA0B,cAAqE;CACtG,MAAM,QAAQ,2BAA2B;CACzC,IAAI,MAAM,QAAQ,KAAK,KAAK,MAAM,SAAS,GAAG;EAC5C,MAAM,cAAc,MAAM,MAAM,SAAS;EACzC,IAAI,aAAa,WAAW,GAC1B,OAAO;CAEX;CAEA,MAAM,sBAAsB,uBAAuB;CACnD,OAAO,aAAa,mBAAmB,IAAI,sBAAsB;AACnE;AAEA,SAAgB,iBACd,MACA,eAC+B;CAC/B,IAAI,CAAC,MACH,OAAO,oBAAoB,IAAI,CAAC,CAAC;CAGnC,MAAM,UAAU,OAAO,KAAK,UAAU,WAClC,KAAK,QACL,OAAO,KAAK,cAAc,WACxB,KAAK,YACL;CAEN,MAAM,cAAc,iBAAmB,KAAK,WAAW,CAAC;CAExD,OAAO,oBAAoB,SADb,eAAe,WACW,GAAG,IAAI,QAAW,CAAC,CAAC;AAC9D;AAEA,SAAgB,oBACd,eACA,cAC+B;CAE/B,OAAO,iBADa,0BAA0B,YACZ,GAAG,aAAa;AACpD"}
|