wevu 6.18.7 → 6.19.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_virtual/_@oxc-project_runtime@0.142.0/helpers/esm/defineProperty.mjs +1 -0
- package/dist/_virtual/_@oxc-project_runtime@0.142.0/helpers/esm/toPrimitive.mjs +1 -0
- package/dist/_virtual/_@oxc-project_runtime@0.142.0/helpers/esm/toPropertyKey.mjs +1 -0
- package/dist/_virtual/_@oxc-project_runtime@0.142.0/helpers/esm/typeof.mjs +1 -0
- package/dist/dev/_virtual/_@oxc-project_runtime@0.142.0/helpers/esm/defineProperty.mjs +14 -0
- package/dist/dev/_virtual/_@oxc-project_runtime@0.142.0/helpers/esm/toPrimitive.mjs +16 -0
- package/dist/dev/_virtual/_@oxc-project_runtime@0.142.0/helpers/esm/toPropertyKey.mjs +11 -0
- package/dist/dev/_virtual/_@oxc-project_runtime@0.142.0/helpers/esm/typeof.mjs +12 -0
- package/dist/dev/index.mjs +48 -10
- package/dist/dev/internal-reactivity.mjs +15 -5
- package/dist/dev/internal-runtime.mjs +32 -4
- package/dist/dev/internal-template.mjs +1 -1
- package/dist/dev/package.mjs +6 -0
- package/dist/dev/package.mjs.map +1 -0
- package/dist/dev/reactivity/computed.mjs +49 -0
- package/dist/dev/reactivity/computed.mjs.map +1 -0
- package/dist/dev/reactivity/core.mjs +184 -0
- package/dist/dev/reactivity/core.mjs.map +1 -0
- package/dist/dev/reactivity/reactive/mutation.mjs +12 -0
- package/dist/dev/reactivity/reactive/mutation.mjs.map +1 -0
- package/dist/dev/{computed-BxRsUJgi.mjs → reactivity/reactive/patch.mjs} +8 -49
- package/dist/dev/reactivity/reactive/patch.mjs.map +1 -0
- package/dist/dev/reactivity/reactive/patchState.mjs +138 -0
- package/dist/dev/reactivity/reactive/patchState.mjs.map +1 -0
- package/dist/dev/reactivity/reactive/shallow.mjs +77 -0
- package/dist/dev/reactivity/reactive/shallow.mjs.map +1 -0
- package/dist/dev/reactivity/reactive/shared.mjs +40 -0
- package/dist/dev/reactivity/reactive/shared.mjs.map +1 -0
- package/dist/dev/reactivity/reactive/state.mjs +8 -0
- package/dist/dev/reactivity/reactive/state.mjs.map +1 -0
- package/dist/dev/reactivity/reactive.mjs +213 -0
- package/dist/dev/reactivity/reactive.mjs.map +1 -0
- package/dist/dev/reactivity/readonly.mjs +69 -0
- package/dist/dev/reactivity/readonly.mjs.map +1 -0
- package/dist/dev/reactivity/ref.mjs +97 -0
- package/dist/dev/reactivity/ref.mjs.map +1 -0
- package/dist/dev/reactivity/shallowRef.mjs +71 -0
- package/dist/dev/reactivity/shallowRef.mjs.map +1 -0
- package/dist/dev/{toRefs-D06VmFK2.mjs → reactivity/toRefs.mjs} +4 -3
- package/dist/dev/reactivity/toRefs.mjs.map +1 -0
- package/dist/dev/reactivity/traverse.mjs +40 -0
- package/dist/dev/reactivity/traverse.mjs.map +1 -0
- package/dist/dev/reactivity/watch/helpers.mjs +78 -0
- package/dist/dev/reactivity/watch/helpers.mjs.map +1 -0
- package/dist/dev/reactivity/watch/types.mjs +20 -0
- package/dist/dev/reactivity/watch/types.mjs.map +1 -0
- package/dist/dev/reactivity/watch.mjs +167 -0
- package/dist/dev/reactivity/watch.mjs.map +1 -0
- package/dist/dev/router/backNavigation.mjs +32 -0
- package/dist/dev/router/backNavigation.mjs.map +1 -0
- package/dist/dev/router/createRouter.mjs +179 -0
- package/dist/dev/router/createRouter.mjs.map +1 -0
- package/dist/dev/router/instance.mjs +17 -0
- package/dist/dev/router/instance.mjs.map +1 -0
- package/dist/dev/router/navigationApi.mjs +94 -0
- package/dist/dev/router/navigationApi.mjs.map +1 -0
- package/dist/dev/router/navigationCore.mjs +139 -0
- package/dist/dev/router/navigationCore.mjs.map +1 -0
- package/dist/dev/router/navigationResult.mjs +54 -0
- package/dist/dev/router/navigationResult.mjs.map +1 -0
- package/dist/dev/router/navigationTarget.mjs +122 -0
- package/dist/dev/router/navigationTarget.mjs.map +1 -0
- package/dist/dev/router/navigationTargetHelpers.mjs +38 -0
- package/dist/dev/router/navigationTargetHelpers.mjs.map +1 -0
- package/dist/dev/router/resolve.mjs +29 -0
- package/dist/dev/router/resolve.mjs.map +1 -0
- package/dist/dev/router/routeRegistry.mjs +78 -0
- package/dist/dev/router/routeRegistry.mjs.map +1 -0
- package/dist/dev/router/routeSync.mjs +72 -0
- package/dist/dev/router/routeSync.mjs.map +1 -0
- package/dist/dev/router/types.mjs +11 -0
- package/dist/dev/router/types.mjs.map +1 -0
- package/dist/dev/router/useRoute.mjs +106 -0
- package/dist/dev/router/useRoute.mjs.map +1 -0
- package/dist/dev/router/useRouter.mjs +15 -0
- package/dist/dev/router/useRouter.mjs.map +1 -0
- package/dist/dev/router.mjs +9 -1378
- package/dist/dev/routerInternal/location.mjs +68 -0
- package/dist/dev/routerInternal/location.mjs.map +1 -0
- package/dist/dev/routerInternal/matching.mjs +149 -0
- package/dist/dev/routerInternal/matching.mjs.map +1 -0
- package/dist/dev/routerInternal/params.mjs +95 -0
- package/dist/dev/routerInternal/params.mjs.map +1 -0
- package/dist/dev/routerInternal/path.mjs +42 -0
- package/dist/dev/routerInternal/path.mjs.map +1 -0
- package/dist/dev/routerInternal/query.mjs +113 -0
- package/dist/dev/routerInternal/query.mjs.map +1 -0
- package/dist/dev/routerInternal/records.mjs +173 -0
- package/dist/dev/routerInternal/records.mjs.map +1 -0
- package/dist/dev/routerInternal/recordsWarnings.mjs +49 -0
- package/dist/dev/routerInternal/recordsWarnings.mjs.map +1 -0
- package/dist/dev/routerInternal/snapshots.mjs +126 -0
- package/dist/dev/routerInternal/snapshots.mjs.map +1 -0
- package/dist/dev/runtime/app/computed.mjs +68 -0
- package/dist/dev/runtime/app/computed.mjs.map +1 -0
- package/dist/dev/runtime/app/context.mjs +275 -0
- package/dist/dev/runtime/app/context.mjs.map +1 -0
- package/dist/dev/runtime/app/diagnostics.mjs +34 -0
- package/dist/dev/runtime/app/diagnostics.mjs.map +1 -0
- package/dist/dev/runtime/app/mount.mjs +270 -0
- package/dist/dev/runtime/app/mount.mjs.map +1 -0
- package/dist/dev/runtime/app/pending.mjs +14 -0
- package/dist/dev/runtime/app/pending.mjs.map +1 -0
- package/dist/dev/runtime/app/setData/patchScheduler.mjs +158 -0
- package/dist/dev/runtime/app/setData/patchScheduler.mjs.map +1 -0
- package/dist/dev/runtime/app/setData/payload.mjs +161 -0
- package/dist/dev/runtime/app/setData/payload.mjs.map +1 -0
- package/dist/dev/runtime/app/setData/scheduler.mjs +313 -0
- package/dist/dev/runtime/app/setData/scheduler.mjs.map +1 -0
- package/dist/dev/runtime/app/setData/snapshot.mjs +129 -0
- package/dist/dev/runtime/app/setData/snapshot.mjs.map +1 -0
- package/dist/dev/runtime/app/setDataOptions.mjs +73 -0
- package/dist/dev/runtime/app/setDataOptions.mjs.map +1 -0
- package/dist/dev/runtime/app.mjs +93 -0
- package/dist/dev/runtime/app.mjs.map +1 -0
- package/dist/dev/runtime/bindModel.mjs +92 -0
- package/dist/dev/runtime/bindModel.mjs.map +1 -0
- package/dist/dev/runtime/defaults.mjs +61 -0
- package/dist/dev/runtime/defaults.mjs.map +1 -0
- package/dist/dev/runtime/define/initialComputed.mjs +125 -0
- package/dist/dev/runtime/define/initialComputed.mjs.map +1 -0
- package/dist/dev/runtime/define/options.mjs +169 -0
- package/dist/dev/runtime/define/options.mjs.map +1 -0
- package/dist/dev/runtime/define/optionsApi.mjs +48 -0
- package/dist/dev/runtime/define/optionsApi.mjs.map +1 -0
- package/dist/dev/runtime/define/props.mjs +194 -0
- package/dist/dev/runtime/define/props.mjs.map +1 -0
- package/dist/dev/runtime/define/scopedSlotOptions.mjs +316 -0
- package/dist/dev/runtime/define/scopedSlotOptions.mjs.map +1 -0
- package/dist/dev/runtime/define/setupResult.mjs +78 -0
- package/dist/dev/runtime/define/setupResult.mjs.map +1 -0
- package/dist/dev/runtime/define.mjs +142 -0
- package/dist/dev/runtime/define.mjs.map +1 -0
- package/dist/dev/runtime/diff.mjs +193 -0
- package/dist/dev/runtime/diff.mjs.map +1 -0
- package/dist/dev/runtime/disposables.mjs +81 -0
- package/dist/dev/runtime/disposables.mjs.map +1 -0
- package/dist/dev/runtime/elementIntersectionObserver.mjs +80 -0
- package/dist/dev/runtime/elementIntersectionObserver.mjs.map +1 -0
- package/dist/dev/runtime/emit.mjs +36 -0
- package/dist/dev/runtime/emit.mjs.map +1 -0
- package/dist/dev/{base-CYkvI7w8.mjs → runtime/hooks/base.mjs} +3 -140
- package/dist/dev/runtime/hooks/base.mjs.map +1 -0
- package/dist/dev/runtime/hooks/register.mjs +92 -0
- package/dist/dev/runtime/hooks/register.mjs.map +1 -0
- package/dist/dev/runtime/hooks/vue.mjs +81 -0
- package/dist/dev/runtime/hooks/vue.mjs.map +1 -0
- package/dist/dev/runtime/internal.mjs +18 -0
- package/dist/dev/runtime/internal.mjs.map +1 -0
- package/dist/dev/runtime/intersectionObserver.mjs +46 -0
- package/dist/dev/runtime/intersectionObserver.mjs.map +1 -0
- package/dist/dev/runtime/layoutBridge.mjs +303 -0
- package/dist/dev/runtime/layoutBridge.mjs.map +1 -0
- package/dist/dev/runtime/layoutComponentMatcher.mjs +11 -0
- package/dist/dev/runtime/layoutComponentMatcher.mjs.map +1 -0
- package/dist/dev/runtime/nativeBridge.mjs +21 -0
- package/dist/dev/runtime/nativeBridge.mjs.map +1 -0
- package/dist/dev/runtime/noSetData.mjs +18 -0
- package/dist/dev/runtime/noSetData.mjs.map +1 -0
- package/dist/dev/runtime/pageEnvironment.mjs +100 -0
- package/dist/dev/runtime/pageEnvironment.mjs.map +1 -0
- package/dist/dev/runtime/pageLayout.mjs +71 -0
- package/dist/dev/runtime/pageLayout.mjs.map +1 -0
- package/dist/dev/runtime/pageScroll.mjs +110 -0
- package/dist/dev/runtime/pageScroll.mjs.map +1 -0
- package/dist/dev/runtime/platform.mjs +79 -0
- package/dist/dev/runtime/platform.mjs.map +1 -0
- package/dist/dev/runtime/provide.mjs +71 -0
- package/dist/dev/runtime/provide.mjs.map +1 -0
- package/dist/dev/runtime/provideContext.mjs +101 -0
- package/dist/dev/runtime/provideContext.mjs.map +1 -0
- package/dist/dev/runtime/provideStore.mjs +18 -0
- package/dist/dev/runtime/provideStore.mjs.map +1 -0
- package/dist/dev/runtime/pullDownRefresh.mjs +24 -0
- package/dist/dev/runtime/pullDownRefresh.mjs.map +1 -0
- package/dist/dev/runtime/register/app.mjs +161 -0
- package/dist/dev/runtime/register/app.mjs.map +1 -0
- package/dist/dev/runtime/register/component/features.mjs +43 -0
- package/dist/dev/runtime/register/component/features.mjs.map +1 -0
- package/dist/dev/runtime/register/component/lifecycle/optionalHooks.mjs +64 -0
- package/dist/dev/runtime/register/component/lifecycle/optionalHooks.mjs.map +1 -0
- package/dist/dev/runtime/register/component/lifecycle/platform.mjs +96 -0
- package/dist/dev/runtime/register/component/lifecycle/platform.mjs.map +1 -0
- package/dist/dev/runtime/register/component/lifecycle.mjs +122 -0
- package/dist/dev/runtime/register/component/lifecycle.mjs.map +1 -0
- package/dist/dev/runtime/register/component/methods.mjs +82 -0
- package/dist/dev/runtime/register/component/methods.mjs.map +1 -0
- package/dist/dev/runtime/register/component/options.mjs +204 -0
- package/dist/dev/runtime/register/component/options.mjs.map +1 -0
- package/dist/dev/runtime/register/component/props.mjs +218 -0
- package/dist/dev/runtime/register/component/props.mjs.map +1 -0
- package/dist/dev/runtime/register/component/registerDefinition.mjs +290 -0
- package/dist/dev/runtime/register/component/registerDefinition.mjs.map +1 -0
- package/dist/dev/runtime/register/component.mjs +129 -0
- package/dist/dev/runtime/register/component.mjs.map +1 -0
- package/dist/dev/runtime/register/inline.mjs +145 -0
- package/dist/dev/runtime/register/inline.mjs.map +1 -0
- package/dist/dev/runtime/register/runtimeInstance/methodBridge.mjs +53 -0
- package/dist/dev/runtime/register/runtimeInstance/methodBridge.mjs.map +1 -0
- package/dist/dev/runtime/register/runtimeInstance/provideContext.mjs +34 -0
- package/dist/dev/runtime/register/runtimeInstance/provideContext.mjs.map +1 -0
- package/dist/dev/runtime/register/runtimeInstance/setupContext.mjs +230 -0
- package/dist/dev/runtime/register/runtimeInstance/setupContext.mjs.map +1 -0
- package/dist/dev/runtime/register/runtimeInstance/setupPhase.mjs +166 -0
- package/dist/dev/runtime/register/runtimeInstance/setupPhase.mjs.map +1 -0
- package/dist/dev/runtime/register/runtimeInstance/utils.mjs +122 -0
- package/dist/dev/runtime/register/runtimeInstance/utils.mjs.map +1 -0
- package/dist/dev/runtime/register/runtimeInstance.mjs +441 -0
- package/dist/dev/runtime/register/runtimeInstance.mjs.map +1 -0
- package/dist/dev/runtime/register/setDataFrequencyWarning.mjs +95 -0
- package/dist/dev/runtime/register/setDataFrequencyWarning.mjs.map +1 -0
- package/dist/dev/runtime/register/setup.mjs +22 -0
- package/dist/dev/runtime/register/setup.mjs.map +1 -0
- package/dist/dev/runtime/register/snapshot.mjs +18 -0
- package/dist/dev/runtime/register/snapshot.mjs.map +1 -0
- package/dist/dev/runtime/register/watch.mjs +57 -0
- package/dist/dev/runtime/register/watch.mjs.map +1 -0
- package/dist/dev/runtime/scopedSlots.mjs +115 -0
- package/dist/dev/runtime/scopedSlots.mjs.map +1 -0
- package/dist/dev/runtime/selectorQuery.mjs +49 -0
- package/dist/dev/runtime/selectorQuery.mjs.map +1 -0
- package/dist/dev/runtime/setupTracking.mjs +59 -0
- package/dist/dev/runtime/setupTracking.mjs.map +1 -0
- package/dist/dev/{template-n_iVr0ey.mjs → runtime/template.mjs} +7 -4
- package/dist/dev/runtime/template.mjs.map +1 -0
- package/dist/dev/runtime/templateRefs/helpers.mjs +259 -0
- package/dist/dev/runtime/templateRefs/helpers.mjs.map +1 -0
- package/dist/dev/runtime/templateRefs.mjs +162 -0
- package/dist/dev/runtime/templateRefs.mjs.map +1 -0
- package/dist/dev/runtime/uniAppHost.mjs +119 -0
- package/dist/dev/runtime/uniAppHost.mjs.map +1 -0
- package/dist/dev/runtime/updatePerformance.mjs +41 -0
- package/dist/dev/runtime/updatePerformance.mjs.map +1 -0
- package/dist/dev/runtime/use.mjs +25 -0
- package/dist/dev/runtime/use.mjs.map +1 -0
- package/dist/dev/runtime/vueCompat/context.mjs +25 -0
- package/dist/dev/runtime/vueCompat/context.mjs.map +1 -0
- package/dist/dev/runtime/vueCompat/model.mjs +119 -0
- package/dist/dev/runtime/vueCompat/model.mjs.map +1 -0
- package/dist/dev/runtime/vueCompat/router.mjs +124 -0
- package/dist/dev/runtime/vueCompat/router.mjs.map +1 -0
- package/dist/dev/runtime/vueCompat/templateRef.mjs +37 -0
- package/dist/dev/runtime/vueCompat/templateRef.mjs.map +1 -0
- package/dist/dev/scheduler.mjs +75 -0
- package/dist/dev/scheduler.mjs.map +1 -0
- package/dist/dev/store/actions.mjs +40 -0
- package/dist/dev/store/actions.mjs.map +1 -0
- package/dist/dev/store/base.mjs +56 -0
- package/dist/dev/store/base.mjs.map +1 -0
- package/dist/dev/store/define/optionsStyle.mjs +125 -0
- package/dist/dev/store/define/optionsStyle.mjs.map +1 -0
- package/dist/dev/store/define/setupStyle.mjs +145 -0
- package/dist/dev/store/define/setupStyle.mjs.map +1 -0
- package/dist/dev/store/define/shared.mjs +38 -0
- package/dist/dev/store/define/shared.mjs.map +1 -0
- package/dist/dev/store/define.mjs +23 -0
- package/dist/dev/store/define.mjs.map +1 -0
- package/dist/dev/store/manager.mjs +21 -0
- package/dist/dev/store/manager.mjs.map +1 -0
- package/dist/dev/store/storeToRefs.mjs +29 -0
- package/dist/dev/store/storeToRefs.mjs.map +1 -0
- package/dist/dev/store/utils.mjs +49 -0
- package/dist/dev/store/utils.mjs.map +1 -0
- package/dist/dev/store.mjs +3 -1
- package/dist/dev/utils.mjs +16 -0
- package/dist/dev/utils.mjs.map +1 -0
- package/dist/dev/version.mjs +8 -0
- package/dist/dev/version.mjs.map +1 -0
- package/dist/dev/vue-demi.mjs +48 -168
- package/dist/dev/vue-demi.mjs.map +1 -1
- package/dist/index.d.mts +71 -7
- package/dist/index.mjs +1 -1
- package/dist/internal-reactivity.d.mts +16 -2
- package/dist/internal-reactivity.mjs +1 -1
- package/dist/internal-runtime.d.mts +35 -2
- package/dist/internal-runtime.mjs +1 -1
- package/dist/internal-template.d.mts +1 -1
- package/dist/internal-template.mjs +1 -1
- package/dist/jsx-runtime.d.mts +1 -1
- package/dist/macros/shared.d.mts +81 -0
- package/dist/macros.d.mts +70 -0
- package/dist/package.mjs +1 -0
- package/dist/reactivity/computed.d.mts +21 -0
- package/dist/reactivity/computed.mjs +1 -0
- package/dist/reactivity/core.d.mts +34 -0
- package/dist/reactivity/core.mjs +1 -0
- package/dist/reactivity/index.d.mts +15 -0
- package/dist/reactivity/reactive/mutation.d.mts +21 -0
- package/dist/reactivity/reactive/mutation.mjs +1 -0
- package/dist/reactivity/reactive/patch.d.mts +18 -0
- package/dist/reactivity/reactive/patch.mjs +1 -0
- package/dist/reactivity/reactive/patchState.mjs +1 -0
- package/dist/reactivity/reactive/shallow.d.mts +22 -0
- package/dist/reactivity/reactive/shallow.mjs +1 -0
- package/dist/reactivity/reactive/shared.d.mts +4 -0
- package/dist/reactivity/reactive/shared.mjs +1 -0
- package/dist/reactivity/reactive/state.mjs +1 -0
- package/dist/reactivity/reactive.d.mts +41 -0
- package/dist/reactivity/reactive.mjs +1 -0
- package/dist/reactivity/readonly.d.mts +27 -0
- package/dist/reactivity/readonly.mjs +1 -0
- package/dist/reactivity/ref.d.mts +27 -0
- package/dist/reactivity/ref.mjs +1 -0
- package/dist/reactivity/shallowRef.d.mts +19 -0
- package/dist/reactivity/shallowRef.mjs +1 -0
- package/dist/reactivity/toRefs.d.mts +43 -0
- package/dist/reactivity/toRefs.mjs +1 -0
- package/dist/reactivity/traverse.d.mts +8 -0
- package/dist/reactivity/traverse.mjs +1 -0
- package/dist/reactivity/watch/helpers.mjs +1 -0
- package/dist/reactivity/watch/types.d.mts +43 -0
- package/dist/reactivity/watch/types.mjs +1 -0
- package/dist/reactivity/watch.d.mts +21 -0
- package/dist/reactivity/watch.mjs +1 -0
- package/dist/router/backNavigation.mjs +1 -0
- package/dist/router/createRouter.d.mts +8 -0
- package/dist/router/createRouter.mjs +1 -0
- package/dist/router/instance.mjs +1 -0
- package/dist/router/navigationApi.mjs +1 -0
- package/dist/router/navigationCore.d.mts +6 -0
- package/dist/router/navigationCore.mjs +1 -0
- package/dist/router/navigationResult.mjs +1 -0
- package/dist/router/navigationTarget.mjs +1 -0
- package/dist/router/navigationTargetHelpers.mjs +1 -0
- package/dist/router/resolve.d.mts +6 -0
- package/dist/router/resolve.mjs +1 -0
- package/dist/router/routeRegistry.mjs +1 -0
- package/dist/router/routeSync.d.mts +1 -0
- package/dist/router/routeSync.mjs +1 -0
- package/dist/router/types.d.mts +163 -0
- package/dist/router/types.mjs +1 -0
- package/dist/router/useRoute.d.mts +19 -0
- package/dist/router/useRoute.mjs +1 -0
- package/dist/router/useRouter.d.mts +8 -0
- package/dist/router/useRouter.mjs +1 -0
- package/dist/router.d.mts +9 -204
- package/dist/router.mjs +1 -1
- package/dist/routerInternal/location.mjs +1 -0
- package/dist/routerInternal/matching.mjs +1 -0
- package/dist/routerInternal/params.mjs +1 -0
- package/dist/routerInternal/path.mjs +1 -0
- package/dist/routerInternal/query.d.mts +7 -0
- package/dist/routerInternal/query.mjs +1 -0
- package/dist/routerInternal/records.mjs +1 -0
- package/dist/routerInternal/recordsWarnings.mjs +1 -0
- package/dist/routerInternal/snapshots.mjs +1 -0
- package/dist/routerInternal/types.d.mts +9 -0
- package/dist/runtime/app/computed.mjs +1 -0
- package/dist/runtime/app/context.mjs +1 -0
- package/dist/runtime/app/diagnostics.mjs +1 -0
- package/dist/runtime/app/mount.mjs +1 -0
- package/dist/runtime/app/pending.d.mts +10 -0
- package/dist/runtime/app/pending.mjs +1 -0
- package/dist/runtime/app/setData/patchScheduler.mjs +1 -0
- package/dist/runtime/app/setData/payload.mjs +1 -0
- package/dist/runtime/app/setData/scheduler.mjs +1 -0
- package/dist/runtime/app/setData/snapshot.mjs +1 -0
- package/dist/runtime/app/setDataOptions.mjs +1 -0
- package/dist/runtime/app.d.mts +8 -0
- package/dist/runtime/app.mjs +1 -0
- package/dist/runtime/bindModel.mjs +1 -0
- package/dist/runtime/defaults.d.mts +11 -0
- package/dist/runtime/defaults.mjs +1 -0
- package/dist/runtime/define/initialComputed.mjs +1 -0
- package/dist/runtime/define/options.mjs +1 -0
- package/dist/runtime/define/optionsApi.mjs +1 -0
- package/dist/runtime/define/props.mjs +1 -0
- package/dist/runtime/define/scopedSlotOptions.mjs +1 -0
- package/dist/runtime/define/setupResult.mjs +1 -0
- package/dist/runtime/define.d.mts +105 -0
- package/dist/runtime/define.mjs +1 -0
- package/dist/runtime/diff.mjs +1 -0
- package/dist/runtime/disposables.d.mts +31 -0
- package/dist/runtime/disposables.mjs +1 -0
- package/dist/runtime/elementIntersectionObserver.d.mts +26 -0
- package/dist/runtime/elementIntersectionObserver.mjs +1 -0
- package/dist/runtime/emit.mjs +1 -0
- package/dist/runtime/hooks/base.d.mts +27 -0
- package/dist/runtime/hooks/base.mjs +1 -0
- package/dist/runtime/hooks/register.d.mts +30 -0
- package/dist/runtime/hooks/register.mjs +1 -0
- package/dist/runtime/hooks/vue.d.mts +53 -0
- package/dist/runtime/hooks/vue.mjs +1 -0
- package/dist/runtime/hooks.d.mts +4 -0
- package/dist/runtime/index.d.mts +47 -0
- package/dist/runtime/internal.mjs +1 -0
- package/dist/runtime/intersectionObserver.d.mts +14 -0
- package/dist/runtime/intersectionObserver.mjs +1 -0
- package/dist/runtime/layoutBridge.d.mts +59 -0
- package/dist/runtime/layoutBridge.mjs +1 -0
- package/dist/runtime/layoutComponentMatcher.mjs +1 -0
- package/dist/runtime/nativeBridge.mjs +1 -0
- package/dist/runtime/noSetData.d.mts +5 -0
- package/dist/runtime/noSetData.mjs +1 -0
- package/dist/runtime/pageEnvironment.d.mts +50 -0
- package/dist/runtime/pageEnvironment.mjs +1 -0
- package/dist/runtime/pageLayout.d.mts +26 -0
- package/dist/runtime/pageLayout.mjs +1 -0
- package/dist/runtime/pageScroll.d.mts +29 -0
- package/dist/runtime/pageScroll.mjs +1 -0
- package/dist/runtime/platform.mjs +1 -0
- package/dist/runtime/provide.d.mts +59 -0
- package/dist/runtime/provide.mjs +1 -0
- package/dist/runtime/provideContext.mjs +1 -0
- package/dist/runtime/provideStore.d.mts +7 -0
- package/dist/runtime/provideStore.mjs +1 -0
- package/dist/runtime/pullDownRefresh.d.mts +12 -0
- package/dist/runtime/pullDownRefresh.mjs +1 -0
- package/dist/runtime/register/app.d.mts +14 -0
- package/dist/runtime/register/app.mjs +1 -0
- package/dist/runtime/register/component/features.mjs +1 -0
- package/dist/runtime/register/component/lifecycle/optionalHooks.mjs +1 -0
- package/dist/runtime/register/component/lifecycle/platform.mjs +1 -0
- package/dist/runtime/register/component/lifecycle.mjs +1 -0
- package/dist/runtime/register/component/methods.mjs +1 -0
- package/dist/runtime/register/component/options.mjs +1 -0
- package/dist/runtime/register/component/props.mjs +1 -0
- package/dist/runtime/register/component/registerDefinition.mjs +1 -0
- package/dist/runtime/register/component.d.mts +15 -0
- package/dist/runtime/register/component.mjs +1 -0
- package/dist/runtime/register/inline.d.mts +15 -0
- package/dist/runtime/register/inline.mjs +1 -0
- package/dist/runtime/register/runtimeInstance/methodBridge.mjs +1 -0
- package/dist/runtime/register/runtimeInstance/provideContext.mjs +1 -0
- package/dist/runtime/register/runtimeInstance/setupContext.mjs +1 -0
- package/dist/runtime/register/runtimeInstance/setupPhase.mjs +1 -0
- package/dist/runtime/register/runtimeInstance/utils.mjs +1 -0
- package/dist/runtime/register/runtimeInstance.d.mts +26 -0
- package/dist/runtime/register/runtimeInstance.mjs +1 -0
- package/dist/runtime/register/setDataFrequencyWarning.mjs +1 -0
- package/dist/runtime/register/setup.d.mts +11 -0
- package/dist/runtime/register/setup.mjs +1 -0
- package/dist/runtime/register/snapshot.mjs +1 -0
- package/dist/runtime/register/watch.d.mts +12 -0
- package/dist/runtime/register/watch.mjs +1 -0
- package/dist/runtime/register.d.mts +5 -0
- package/dist/runtime/scopedSlots.mjs +1 -0
- package/dist/runtime/selectorQuery.d.mts +54 -0
- package/dist/runtime/selectorQuery.mjs +1 -0
- package/dist/runtime/setupTracking.mjs +1 -0
- package/dist/{template-DE8e5dj_.d.mts → runtime/template.d.mts} +1 -1
- package/dist/runtime/template.mjs +1 -0
- package/dist/runtime/templateRefTypes.d.mts +7 -0
- package/dist/runtime/templateRefs/helpers.mjs +1 -0
- package/dist/runtime/templateRefs.d.mts +11 -0
- package/dist/runtime/templateRefs.mjs +1 -0
- package/dist/runtime/types/core.d.mts +35 -0
- package/dist/runtime/types/miniprogram.d.mts +80 -0
- package/dist/runtime/types/miniprogramHost.d.mts +44 -0
- package/dist/runtime/types/miniprogramHostSources.d.mts +112 -0
- package/dist/runtime/types/options.d.mts +136 -0
- package/dist/runtime/types/props/propTypes.d.mts +79 -0
- package/dist/runtime/types/props/router.d.mts +51 -0
- package/dist/runtime/types/props/setup.d.mts +96 -0
- package/dist/runtime/types/props.d.mts +4 -0
- package/dist/runtime/types/runtime.d.mts +59 -0
- package/dist/runtime/types/setData.d.mts +220 -0
- package/dist/runtime/types.d.mts +28 -0
- package/dist/runtime/uniAppHost.d.mts +8 -0
- package/dist/runtime/uniAppHost.mjs +1 -0
- package/dist/runtime/updatePerformance.d.mts +13 -0
- package/dist/runtime/updatePerformance.mjs +1 -0
- package/dist/runtime/use.d.mts +13 -0
- package/dist/runtime/use.mjs +1 -0
- package/dist/runtime/vueCompat/context.d.mts +8 -0
- package/dist/runtime/vueCompat/context.mjs +1 -0
- package/dist/runtime/vueCompat/model.d.mts +30 -0
- package/dist/runtime/vueCompat/model.mjs +1 -0
- package/dist/runtime/vueCompat/router.d.mts +28 -0
- package/dist/runtime/vueCompat/router.mjs +1 -0
- package/dist/runtime/vueCompat/templateRef.d.mts +9 -0
- package/dist/runtime/vueCompat/templateRef.mjs +1 -0
- package/dist/runtime/vueCompat.d.mts +5 -0
- package/dist/scheduler.d.mts +4 -0
- package/dist/scheduler.mjs +1 -0
- package/dist/store/actions.mjs +1 -0
- package/dist/store/base.mjs +1 -0
- package/dist/store/define/optionsStyle.mjs +1 -0
- package/dist/store/define/setupStyle.mjs +1 -0
- package/dist/store/define/shared.mjs +1 -0
- package/dist/store/define.d.mts +26 -0
- package/dist/store/define.mjs +1 -0
- package/dist/store/manager.d.mts +8 -0
- package/dist/store/manager.mjs +1 -0
- package/dist/store/storeToRefs.d.mts +13 -0
- package/dist/store/storeToRefs.mjs +1 -0
- package/dist/store/types.d.mts +70 -0
- package/dist/store/utils.mjs +1 -0
- package/dist/store.d.mts +4 -1
- package/dist/store.mjs +1 -1
- package/dist/utils.mjs +1 -0
- package/dist/version.d.mts +4 -0
- package/dist/version.mjs +1 -0
- package/dist/vue-augment.d.mts +6 -0
- package/dist/vue-demi.d.mts +68 -10
- package/dist/vue-demi.mjs +1 -1
- package/dist/vue-types.d.mts +18 -0
- package/dist/weappIntrinsicElements/base.d.mts +22 -0
- package/dist/weappIntrinsicElements/elements/ad-custom.d.mts +13 -0
- package/dist/weappIntrinsicElements/elements/ad.d.mts +16 -0
- package/dist/weappIntrinsicElements/elements/audio.d.mts +20 -0
- package/dist/weappIntrinsicElements/elements/block.d.mts +8 -0
- package/dist/weappIntrinsicElements/elements/button.d.mts +40 -0
- package/dist/weappIntrinsicElements/elements/camera.d.mts +18 -0
- package/dist/weappIntrinsicElements/elements/canvas.d.mts +18 -0
- package/dist/weappIntrinsicElements/elements/checkbox-group.d.mts +13 -0
- package/dist/weappIntrinsicElements/elements/checkbox.d.mts +13 -0
- package/dist/weappIntrinsicElements/elements/cover-image.d.mts +10 -0
- package/dist/weappIntrinsicElements/elements/cover-view.d.mts +10 -0
- package/dist/weappIntrinsicElements/elements/editor.d.mts +22 -0
- package/dist/weappIntrinsicElements/elements/form.d.mts +16 -0
- package/dist/weappIntrinsicElements/elements/functional-page-navigator.d.mts +15 -0
- package/dist/weappIntrinsicElements/elements/icon.d.mts +12 -0
- package/dist/weappIntrinsicElements/elements/image.d.mts +18 -0
- package/dist/weappIntrinsicElements/elements/import.d.mts +10 -0
- package/dist/weappIntrinsicElements/elements/include.d.mts +10 -0
- package/dist/weappIntrinsicElements/elements/input.d.mts +47 -0
- package/dist/weappIntrinsicElements/elements/keyboard-accessory.d.mts +8 -0
- package/dist/weappIntrinsicElements/elements/label.d.mts +10 -0
- package/dist/weappIntrinsicElements/elements/live-player.d.mts +35 -0
- package/dist/weappIntrinsicElements/elements/live-pusher.d.mts +57 -0
- package/dist/weappIntrinsicElements/elements/map.d.mts +105 -0
- package/dist/weappIntrinsicElements/elements/match-media.d.mts +16 -0
- package/dist/weappIntrinsicElements/elements/movable-area.d.mts +26 -0
- package/dist/weappIntrinsicElements/elements/movable-view.d.mts +26 -0
- package/dist/weappIntrinsicElements/elements/navigation-bar.d.mts +15 -0
- package/dist/weappIntrinsicElements/elements/navigator.d.mts +25 -0
- package/dist/weappIntrinsicElements/elements/official-account.d.mts +13 -0
- package/dist/weappIntrinsicElements/elements/open-data.d.mts +15 -0
- package/dist/weappIntrinsicElements/elements/page-container.d.mts +25 -0
- package/dist/weappIntrinsicElements/elements/page-meta.d.mts +23 -0
- package/dist/weappIntrinsicElements/elements/picker-view-column.d.mts +18 -0
- package/dist/weappIntrinsicElements/elements/picker-view.d.mts +18 -0
- package/dist/weappIntrinsicElements/elements/picker.d.mts +23 -0
- package/dist/weappIntrinsicElements/elements/progress.d.mts +21 -0
- package/dist/weappIntrinsicElements/elements/radio-group.d.mts +13 -0
- package/dist/weappIntrinsicElements/elements/radio.d.mts +13 -0
- package/dist/weappIntrinsicElements/elements/rich-text.d.mts +17 -0
- package/dist/weappIntrinsicElements/elements/scroll-view.d.mts +68 -0
- package/dist/weappIntrinsicElements/elements/share-element.d.mts +18 -0
- package/dist/weappIntrinsicElements/elements/slider.d.mts +23 -0
- package/dist/weappIntrinsicElements/elements/slot.d.mts +10 -0
- package/dist/weappIntrinsicElements/elements/swiper-item.d.mts +42 -0
- package/dist/weappIntrinsicElements/elements/swiper.d.mts +42 -0
- package/dist/weappIntrinsicElements/elements/switch.d.mts +14 -0
- package/dist/weappIntrinsicElements/elements/template.d.mts +12 -0
- package/dist/weappIntrinsicElements/elements/text.d.mts +15 -0
- package/dist/weappIntrinsicElements/elements/textarea.d.mts +40 -0
- package/dist/weappIntrinsicElements/elements/video.d.mts +71 -0
- package/dist/weappIntrinsicElements/elements/view.d.mts +13 -0
- package/dist/weappIntrinsicElements/elements/voip-room.d.mts +14 -0
- package/dist/weappIntrinsicElements/elements/web-view.d.mts +13 -0
- package/dist/weappIntrinsicElements.d.mts +153 -0
- package/package.json +6 -6
- package/dist/base-BxKbbKVO.mjs +0 -1
- package/dist/computed-Xoi9XEUx.mjs +0 -1
- package/dist/dev/base-CYkvI7w8.mjs.map +0 -1
- package/dist/dev/computed-BxRsUJgi.mjs.map +0 -1
- package/dist/dev/ref-DRZC3Kc5.mjs +0 -695
- package/dist/dev/ref-DRZC3Kc5.mjs.map +0 -1
- package/dist/dev/rolldown-runtime-BUUfjzRC.mjs +0 -36
- package/dist/dev/router-D0JQfgyN.mjs +0 -754
- package/dist/dev/router-D0JQfgyN.mjs.map +0 -1
- package/dist/dev/router.mjs.map +0 -1
- package/dist/dev/store-HNsiQJ4d.mjs +0 -479
- package/dist/dev/store-HNsiQJ4d.mjs.map +0 -1
- package/dist/dev/template-n_iVr0ey.mjs.map +0 -1
- package/dist/dev/templateRef-BLnYcEH0.mjs +0 -6439
- package/dist/dev/templateRef-BLnYcEH0.mjs.map +0 -1
- package/dist/dev/toRefs-D06VmFK2.mjs.map +0 -1
- package/dist/dev/watch-jrgL5ald.mjs +0 -445
- package/dist/dev/watch-jrgL5ald.mjs.map +0 -1
- package/dist/index-BiHILcmb.d.mts +0 -1215
- package/dist/index-CCET_bCY.d.mts +0 -111
- package/dist/ref-D37CknuD.mjs +0 -1
- package/dist/rolldown-runtime-CenpyGzJ.mjs +0 -1
- package/dist/router-D4W4lEXM.mjs +0 -1
- package/dist/store-eHrHBQiv.mjs +0 -1
- package/dist/template-CNzlwH-E.mjs +0 -1
- package/dist/templateRef-DOTHWzZ5.mjs +0 -1
- package/dist/toRefs-CoytPyo0.mjs +0 -1
- package/dist/traverse-B4Ez44Gd.d.mts +0 -108
- package/dist/vue-types-B3N60cGV.d.mts +0 -757
- package/dist/watch-Bbd-gmEg.mjs +0 -1
- package/dist/weappIntrinsicElements-BgDtC53_.d.mts +0 -1257
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import { getMiniProgramGlobalObject } from "../runtime/platform.mjs";
|
|
2
|
+
import { installRouteStateSyncOnNativeRouter } from "./routeSync.mjs";
|
|
3
|
+
import { resolvePath } from "../routerInternal/path.mjs";
|
|
4
|
+
import { parseQuery, stringifyQuery } from "../routerInternal/query.mjs";
|
|
5
|
+
import { resolveNamedRouteLocation } from "../routerInternal/params.mjs";
|
|
6
|
+
import { mergeMatchedRouteMeta, resolveMatchedRouteRecord } from "../routerInternal/matching.mjs";
|
|
7
|
+
import { warnDuplicateRouteEntries } from "../routerInternal/recordsWarnings.mjs";
|
|
8
|
+
import { createNamedRouteLookup, resolveRouteOptionEntries } from "../routerInternal/records.mjs";
|
|
9
|
+
import { cloneRouteMeta, cloneRouteParams, createRouterOptionsSnapshot, normalizeRouteRecordMatched, snapshotRouteLocation } from "../routerInternal/snapshots.mjs";
|
|
10
|
+
import { createNavigationResultController } from "./navigationResult.mjs";
|
|
11
|
+
import { runBackNavigationGuards } from "./backNavigation.mjs";
|
|
12
|
+
import { setActiveRouter } from "./instance.mjs";
|
|
13
|
+
import { createNavigationApi } from "./navigationApi.mjs";
|
|
14
|
+
import { resolveRouteLocation } from "./resolve.mjs";
|
|
15
|
+
import { createRouteRegistry } from "./routeRegistry.mjs";
|
|
16
|
+
import { createRouteStateController, useNativeRouter } from "./useRoute.mjs";
|
|
17
|
+
|
|
18
|
+
//#region src/router/createRouter.ts
|
|
19
|
+
/**
|
|
20
|
+
* @description 创建高阶路由导航器(对齐 Vue Router 的 createRouter 心智)
|
|
21
|
+
*/
|
|
22
|
+
function createRouter(options = {}) {
|
|
23
|
+
var _options$maxRedirects, _options$paramsMode, _options$rejectOnErro, _options$parseQuery, _options$stringifyQue, _options$tabBarEntrie;
|
|
24
|
+
const nativeRouter = useNativeRouter();
|
|
25
|
+
installRouteStateSyncOnNativeRouter(getMiniProgramGlobalObject());
|
|
26
|
+
const beforeEachGuards = /* @__PURE__ */ new Set();
|
|
27
|
+
const beforeResolveGuards = /* @__PURE__ */ new Set();
|
|
28
|
+
const afterEachHooks = /* @__PURE__ */ new Set();
|
|
29
|
+
const errorHandlers = /* @__PURE__ */ new Set();
|
|
30
|
+
const maxRedirects = (_options$maxRedirects = options.maxRedirects) !== null && _options$maxRedirects !== void 0 ? _options$maxRedirects : 10;
|
|
31
|
+
const paramsMode = (_options$paramsMode = options.paramsMode) !== null && _options$paramsMode !== void 0 ? _options$paramsMode : "loose";
|
|
32
|
+
const rejectOnError = (_options$rejectOnErro = options.rejectOnError) !== null && _options$rejectOnErro !== void 0 ? _options$rejectOnErro : true;
|
|
33
|
+
const routeResolveCodec = {
|
|
34
|
+
parseQuery: (_options$parseQuery = options.parseQuery) !== null && _options$parseQuery !== void 0 ? _options$parseQuery : parseQuery,
|
|
35
|
+
stringifyQuery: (_options$stringifyQue = options.stringifyQuery) !== null && _options$stringifyQue !== void 0 ? _options$stringifyQue : stringifyQuery
|
|
36
|
+
};
|
|
37
|
+
const readyPromise = Promise.resolve();
|
|
38
|
+
const routeEntries = resolveRouteOptionEntries(options);
|
|
39
|
+
warnDuplicateRouteEntries(routeEntries);
|
|
40
|
+
const namedRouteLookup = createNamedRouteLookup(routeEntries);
|
|
41
|
+
const normalizedTabBarEntries = ((_options$tabBarEntrie = options.tabBarEntries) !== null && _options$tabBarEntrie !== void 0 ? _options$tabBarEntrie : []).map((path) => resolvePath(path, "")).filter(Boolean);
|
|
42
|
+
const tabBarPathSet = new Set(normalizedTabBarEntries);
|
|
43
|
+
const routeRegistry = createRouteRegistry(namedRouteLookup);
|
|
44
|
+
let managedNavigationCount = 0;
|
|
45
|
+
const routerOptions = createRouterOptionsSnapshot(normalizedTabBarEntries, routeRegistry.getRoutes(), paramsMode, maxRedirects, routeResolveCodec, rejectOnError);
|
|
46
|
+
function enrichRouteRecordState(routeLocation) {
|
|
47
|
+
const resolved = { ...routeLocation };
|
|
48
|
+
resolved.href = resolved.fullPath;
|
|
49
|
+
const matchedResult = resolveMatchedRouteRecord(resolved, namedRouteLookup);
|
|
50
|
+
if (matchedResult) {
|
|
51
|
+
const matchedRecord = matchedResult.record;
|
|
52
|
+
if (resolved.name === void 0) resolved.name = matchedRecord.name;
|
|
53
|
+
const mergedRouteMeta = mergeMatchedRouteMeta(matchedResult.matchedRecords);
|
|
54
|
+
if (mergedRouteMeta !== void 0) resolved.meta = cloneRouteMeta(mergedRouteMeta);
|
|
55
|
+
if (matchedResult.params && Object.keys(resolved.params).length === 0) resolved.params = cloneRouteParams(matchedResult.params);
|
|
56
|
+
resolved.matched = matchedResult.matchedRecords.map((record, index, records) => {
|
|
57
|
+
const leafMatchedPath = index === records.length - 1 ? matchedResult.matchedPath : void 0;
|
|
58
|
+
return normalizeRouteRecordMatched(record, leafMatchedPath);
|
|
59
|
+
});
|
|
60
|
+
} else resolved.matched = [];
|
|
61
|
+
return resolved;
|
|
62
|
+
}
|
|
63
|
+
function resolveWithCodec(to, currentPath) {
|
|
64
|
+
const rawTo = typeof to === "string" ? to : resolveNamedRouteLocation(to, namedRouteLookup, paramsMode);
|
|
65
|
+
return enrichRouteRecordState(resolveRouteLocation(rawTo, currentPath, routeResolveCodec));
|
|
66
|
+
}
|
|
67
|
+
let route;
|
|
68
|
+
let emitObservedNavigationAfterEach;
|
|
69
|
+
function isExternalBackSync(payload) {
|
|
70
|
+
return payload.source === "page" || payload.source === "native" && payload.method === "navigateBack";
|
|
71
|
+
}
|
|
72
|
+
function beforeRouteStateSync(nextRoute, payload) {
|
|
73
|
+
if (managedNavigationCount > 0 || !isExternalBackSync(payload) || nextRoute.fullPath === route.fullPath) return;
|
|
74
|
+
const from = snapshotRouteLocation(route);
|
|
75
|
+
runBackNavigationGuards({
|
|
76
|
+
target: nextRoute,
|
|
77
|
+
from,
|
|
78
|
+
nativeRouter,
|
|
79
|
+
beforeEachGuards,
|
|
80
|
+
beforeResolveGuards,
|
|
81
|
+
resolveWithCodec
|
|
82
|
+
}).then((result) => {
|
|
83
|
+
return emitObservedNavigationAfterEach === null || emitObservedNavigationAfterEach === void 0 ? void 0 : emitObservedNavigationAfterEach(result);
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
route = createRouteStateController({
|
|
87
|
+
beforeRouteStateSync,
|
|
88
|
+
resolveRoute: enrichRouteRecordState
|
|
89
|
+
}).route;
|
|
90
|
+
function resolve(to) {
|
|
91
|
+
return resolveWithCodec(to, route.path);
|
|
92
|
+
}
|
|
93
|
+
const navigationResultController = createNavigationResultController({
|
|
94
|
+
afterEachHooks,
|
|
95
|
+
errorHandlers,
|
|
96
|
+
nativeRouter,
|
|
97
|
+
rejectOnError
|
|
98
|
+
});
|
|
99
|
+
emitObservedNavigationAfterEach = navigationResultController.emitNavigationAfterEach;
|
|
100
|
+
const navigationApi = createNavigationApi({
|
|
101
|
+
nativeRouter,
|
|
102
|
+
route,
|
|
103
|
+
routeResolveCodec,
|
|
104
|
+
namedRouteLookup,
|
|
105
|
+
beforeEachGuards,
|
|
106
|
+
beforeResolveGuards,
|
|
107
|
+
maxRedirects,
|
|
108
|
+
tabBarPathSet,
|
|
109
|
+
resolveWithCodec,
|
|
110
|
+
settleNavigationResult: navigationResultController.settleNavigationResult
|
|
111
|
+
});
|
|
112
|
+
async function runManagedNavigation(navigation) {
|
|
113
|
+
managedNavigationCount += 1;
|
|
114
|
+
try {
|
|
115
|
+
return await navigation();
|
|
116
|
+
} finally {
|
|
117
|
+
managedNavigationCount -= 1;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
function beforeEach(guard) {
|
|
121
|
+
beforeEachGuards.add(guard);
|
|
122
|
+
return () => {
|
|
123
|
+
beforeEachGuards.delete(guard);
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
function beforeResolve(guard) {
|
|
127
|
+
beforeResolveGuards.add(guard);
|
|
128
|
+
return () => {
|
|
129
|
+
beforeResolveGuards.delete(guard);
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
function afterEach(hook) {
|
|
133
|
+
afterEachHooks.add(hook);
|
|
134
|
+
return () => {
|
|
135
|
+
afterEachHooks.delete(hook);
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
function onError(handler) {
|
|
139
|
+
errorHandlers.add(handler);
|
|
140
|
+
return () => {
|
|
141
|
+
errorHandlers.delete(handler);
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
const router = {
|
|
145
|
+
nativeRouter,
|
|
146
|
+
options: routerOptions,
|
|
147
|
+
currentRoute: route,
|
|
148
|
+
install(app) {
|
|
149
|
+
var _config;
|
|
150
|
+
setActiveRouter(router);
|
|
151
|
+
const globalProperties = app === null || app === void 0 || (_config = app.config) === null || _config === void 0 ? void 0 : _config.globalProperties;
|
|
152
|
+
if (globalProperties) globalProperties.$router = router;
|
|
153
|
+
},
|
|
154
|
+
resolve,
|
|
155
|
+
isReady() {
|
|
156
|
+
return readyPromise;
|
|
157
|
+
},
|
|
158
|
+
push: (to) => runManagedNavigation(() => navigationApi.push(to)),
|
|
159
|
+
replace: (to) => runManagedNavigation(() => navigationApi.replace(to)),
|
|
160
|
+
back: (delta) => runManagedNavigation(() => navigationApi.back(delta)),
|
|
161
|
+
go: (delta) => runManagedNavigation(() => navigationApi.go(delta)),
|
|
162
|
+
forward: () => runManagedNavigation(() => navigationApi.forward()),
|
|
163
|
+
hasRoute: routeRegistry.hasRoute,
|
|
164
|
+
getRoutes: routeRegistry.getRoutes,
|
|
165
|
+
addRoute: routeRegistry.addRoute,
|
|
166
|
+
removeRoute: routeRegistry.removeRoute,
|
|
167
|
+
clearRoutes: routeRegistry.clearRoutes,
|
|
168
|
+
beforeEach,
|
|
169
|
+
beforeResolve,
|
|
170
|
+
afterEach,
|
|
171
|
+
onError
|
|
172
|
+
};
|
|
173
|
+
setActiveRouter(router);
|
|
174
|
+
return router;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
//#endregion
|
|
178
|
+
export { createRouter };
|
|
179
|
+
//# sourceMappingURL=createRouter.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createRouter.mjs","names":[],"sources":["../../../src/router/createRouter.ts"],"sourcesContent":["import type { RouteResolveCodec } from '../routerInternal/shared'\nimport type { NavigationRunResult } from './navigationResult'\nimport type { RouteStateSyncPayload } from './routeSync'\nimport type {\n NavigationAfterEach,\n NavigationErrorHandler,\n NavigationGuard,\n RouteLocationNormalizedLoaded,\n RouteLocationRaw,\n RouterNavigation,\n UseRouterOptions,\n} from './types'\nimport {\n cloneRouteMeta,\n cloneRouteParams,\n createNamedRouteLookup,\n createRouterOptionsSnapshot,\n mergeMatchedRouteMeta,\n normalizeRouteRecordMatched,\n parseQuery,\n resolveMatchedRouteRecord,\n resolveNamedRouteLocation,\n resolvePath,\n resolveRouteOptionEntries,\n snapshotRouteLocation,\n stringifyQuery,\n warnDuplicateRouteEntries,\n} from '../routerInternal/shared'\nimport { getMiniProgramGlobalObject } from '../runtime/platform'\nimport { runBackNavigationGuards } from './backNavigation'\nimport { setActiveRouter } from './instance'\nimport { createNavigationApi } from './navigationApi'\nimport { createNavigationResultController } from './navigationResult'\nimport { resolveRouteLocation } from './resolve'\nimport { createRouteRegistry } from './routeRegistry'\nimport { installRouteStateSyncOnNativeRouter } from './routeSync'\nimport { createRouteStateController, useNativeRouter } from './useRoute'\n\n/**\n * @description 创建高阶路由导航器(对齐 Vue Router 的 createRouter 心智)\n */\nexport function createRouter(options: UseRouterOptions = {}): RouterNavigation {\n const nativeRouter = useNativeRouter()\n installRouteStateSyncOnNativeRouter(getMiniProgramGlobalObject())\n const beforeEachGuards = new Set<NavigationGuard>()\n const beforeResolveGuards = new Set<NavigationGuard>()\n const afterEachHooks = new Set<NavigationAfterEach>()\n const errorHandlers = new Set<NavigationErrorHandler>()\n const maxRedirects = options.maxRedirects ?? 10\n const paramsMode = options.paramsMode ?? 'loose'\n const rejectOnError = options.rejectOnError ?? true\n const routeResolveCodec: RouteResolveCodec = {\n parseQuery: options.parseQuery ?? parseQuery,\n stringifyQuery: options.stringifyQuery ?? stringifyQuery,\n }\n const readyPromise = Promise.resolve()\n const routeEntries = resolveRouteOptionEntries(options)\n warnDuplicateRouteEntries(routeEntries)\n const namedRouteLookup = createNamedRouteLookup(routeEntries)\n const normalizedTabBarEntries = (options.tabBarEntries ?? [])\n .map(path => resolvePath(path, ''))\n .filter(Boolean)\n const tabBarPathSet = new Set(normalizedTabBarEntries)\n const routeRegistry = createRouteRegistry(namedRouteLookup)\n let managedNavigationCount = 0\n const routerOptions = createRouterOptionsSnapshot(\n normalizedTabBarEntries,\n routeRegistry.getRoutes(),\n paramsMode,\n maxRedirects,\n routeResolveCodec,\n rejectOnError,\n )\n\n function enrichRouteRecordState(routeLocation: RouteLocationNormalizedLoaded): RouteLocationNormalizedLoaded {\n const resolved = { ...routeLocation }\n resolved.href = resolved.fullPath\n const matchedResult = resolveMatchedRouteRecord(resolved, namedRouteLookup)\n if (matchedResult) {\n const matchedRecord = matchedResult.record\n if (resolved.name === undefined) {\n resolved.name = matchedRecord.name\n }\n const mergedRouteMeta = mergeMatchedRouteMeta(matchedResult.matchedRecords)\n if (mergedRouteMeta !== undefined) {\n resolved.meta = cloneRouteMeta(mergedRouteMeta)\n }\n if (matchedResult.params && Object.keys(resolved.params).length === 0) {\n resolved.params = cloneRouteParams(matchedResult.params)\n }\n resolved.matched = matchedResult.matchedRecords.map((record, index, records) => {\n const leafMatchedPath = index === records.length - 1\n ? matchedResult.matchedPath\n : undefined\n return normalizeRouteRecordMatched(record, leafMatchedPath)\n })\n }\n else {\n resolved.matched = []\n }\n return resolved\n }\n\n function resolveWithCodec(to: RouteLocationRaw, currentPath: string): RouteLocationNormalizedLoaded {\n const rawTo = typeof to === 'string'\n ? to\n : resolveNamedRouteLocation(to, namedRouteLookup, paramsMode)\n return enrichRouteRecordState(resolveRouteLocation(rawTo, currentPath, routeResolveCodec))\n }\n\n let route: Readonly<RouteLocationNormalizedLoaded>\n let emitObservedNavigationAfterEach: ((result: NavigationRunResult) => Promise<void>) | undefined\n\n function isExternalBackSync(payload: RouteStateSyncPayload): boolean {\n return payload.source === 'page'\n || (payload.source === 'native' && payload.method === 'navigateBack')\n }\n\n function beforeRouteStateSync(\n nextRoute: RouteLocationNormalizedLoaded,\n payload: RouteStateSyncPayload,\n ) {\n if (\n managedNavigationCount > 0\n || !isExternalBackSync(payload)\n || nextRoute.fullPath === route.fullPath\n ) {\n return\n }\n\n const from = snapshotRouteLocation(route)\n void runBackNavigationGuards({\n target: nextRoute,\n from,\n nativeRouter,\n beforeEachGuards,\n beforeResolveGuards,\n resolveWithCodec,\n }).then((result) => {\n return emitObservedNavigationAfterEach?.(result)\n })\n }\n\n const routeController = createRouteStateController({\n beforeRouteStateSync,\n resolveRoute: enrichRouteRecordState,\n })\n route = routeController.route\n\n function resolve(to: RouteLocationRaw): RouteLocationNormalizedLoaded {\n return resolveWithCodec(to, route.path)\n }\n\n const navigationResultController = createNavigationResultController({\n afterEachHooks,\n errorHandlers,\n nativeRouter,\n rejectOnError,\n })\n emitObservedNavigationAfterEach = navigationResultController.emitNavigationAfterEach\n\n const navigationApi = createNavigationApi({\n nativeRouter,\n route,\n routeResolveCodec,\n namedRouteLookup,\n beforeEachGuards,\n beforeResolveGuards,\n maxRedirects,\n tabBarPathSet,\n resolveWithCodec,\n settleNavigationResult: navigationResultController.settleNavigationResult,\n })\n\n async function runManagedNavigation<T>(navigation: () => Promise<T>): Promise<T> {\n managedNavigationCount += 1\n try {\n return await navigation()\n }\n finally {\n managedNavigationCount -= 1\n }\n }\n\n function beforeEach(guard: NavigationGuard): () => void {\n beforeEachGuards.add(guard)\n return () => {\n beforeEachGuards.delete(guard)\n }\n }\n\n function beforeResolve(guard: NavigationGuard): () => void {\n beforeResolveGuards.add(guard)\n return () => {\n beforeResolveGuards.delete(guard)\n }\n }\n\n function afterEach(hook: NavigationAfterEach): () => void {\n afterEachHooks.add(hook)\n return () => {\n afterEachHooks.delete(hook)\n }\n }\n\n function onError(handler: NavigationErrorHandler): () => void {\n errorHandlers.add(handler)\n return () => {\n errorHandlers.delete(handler)\n }\n }\n\n const router: RouterNavigation = {\n nativeRouter,\n options: routerOptions,\n currentRoute: route,\n install(app?: unknown): void {\n setActiveRouter(router)\n const globalProperties = (app as { config?: { globalProperties?: Record<string, unknown> } } | undefined)?.config?.globalProperties\n if (globalProperties) {\n globalProperties.$router = router\n }\n },\n resolve,\n isReady(): Promise<void> {\n return readyPromise\n },\n push: to => runManagedNavigation(() => navigationApi.push(to)),\n replace: to => runManagedNavigation(() => navigationApi.replace(to)),\n back: delta => runManagedNavigation(() => navigationApi.back(delta)),\n go: delta => runManagedNavigation(() => navigationApi.go(delta)),\n forward: () => runManagedNavigation(() => navigationApi.forward()),\n hasRoute: routeRegistry.hasRoute,\n getRoutes: routeRegistry.getRoutes,\n addRoute: routeRegistry.addRoute,\n removeRoute: routeRegistry.removeRoute,\n clearRoutes: routeRegistry.clearRoutes,\n beforeEach,\n beforeResolve,\n afterEach,\n onError,\n }\n\n setActiveRouter(router)\n return router\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { injectGlobal, provideGlobal } from "../runtime/provide.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/router/instance.ts
|
|
4
|
+
const ROUTER_INSTANCE_KEY = Symbol("wevu.router.instance");
|
|
5
|
+
let activeRouter;
|
|
6
|
+
function setActiveRouter(router) {
|
|
7
|
+
activeRouter = router;
|
|
8
|
+
provideGlobal(ROUTER_INSTANCE_KEY, router);
|
|
9
|
+
}
|
|
10
|
+
function getActiveRouter() {
|
|
11
|
+
var _activeRouter;
|
|
12
|
+
return (_activeRouter = activeRouter) !== null && _activeRouter !== void 0 ? _activeRouter : injectGlobal(ROUTER_INSTANCE_KEY, void 0);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
//#endregion
|
|
16
|
+
export { getActiveRouter, setActiveRouter };
|
|
17
|
+
//# sourceMappingURL=instance.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instance.mjs","names":[],"sources":["../../../src/router/instance.ts"],"sourcesContent":["import type { RouterNavigation } from './types'\nimport { injectGlobal, provideGlobal } from '../runtime/provide'\n\nconst ROUTER_INSTANCE_KEY = Symbol('wevu.router.instance')\n\nlet activeRouter: RouterNavigation | undefined\n\nexport function setActiveRouter(router: RouterNavigation) {\n activeRouter = router\n provideGlobal(ROUTER_INSTANCE_KEY, router)\n}\n\nexport function clearActiveRouter() {\n activeRouter = undefined\n provideGlobal(ROUTER_INSTANCE_KEY, undefined)\n}\n\nexport function getActiveRouter() {\n return activeRouter ?? injectGlobal<RouterNavigation | undefined>(ROUTER_INSTANCE_KEY, undefined)\n}\n"],"mappings":";;;AAGA,MAAM,sBAAsB,OAAO,sBAAsB;AAEzD,IAAI;AAEJ,SAAgB,gBAAgB,QAA0B;CACxD,eAAe;CACf,cAAc,qBAAqB,MAAM;AAC3C;AAOA,SAAgB,kBAAkB;;CAChC,wBAAO,qEAAgB,aAA2C,qBAAqB,MAAS;AAClG"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { snapshotRouteLocation } from "../routerInternal/snapshots.mjs";
|
|
2
|
+
import { NavigationFailureType } from "./types.mjs";
|
|
3
|
+
import { createNavigationFailure, executeNavigationMethod, isNavigationFailure } from "./navigationCore.mjs";
|
|
4
|
+
import { createNavigationRunResult } from "./navigationResult.mjs";
|
|
5
|
+
import { resolveBackNavigationTarget, runBackNavigationGuards } from "./backNavigation.mjs";
|
|
6
|
+
import { createForwardNotSupportedFailure } from "./navigationTargetHelpers.mjs";
|
|
7
|
+
import { navigateWithTarget } from "./navigationTarget.mjs";
|
|
8
|
+
|
|
9
|
+
//#region src/router/navigationApi.ts
|
|
10
|
+
function createNavigationApi(options) {
|
|
11
|
+
const { nativeRouter, route, routeResolveCodec, namedRouteLookup, beforeEachGuards, beforeResolveGuards, maxRedirects, tabBarPathSet, resolveWithCodec, settleNavigationResult } = options;
|
|
12
|
+
async function push(to) {
|
|
13
|
+
const from = snapshotRouteLocation(route);
|
|
14
|
+
let target;
|
|
15
|
+
try {
|
|
16
|
+
target = resolveWithCodec(to, from.path);
|
|
17
|
+
} catch (error) {
|
|
18
|
+
return settleNavigationResult(createNavigationRunResult("push", from, void 0, createNavigationFailure(NavigationFailureType.unknown, void 0, from, error)));
|
|
19
|
+
}
|
|
20
|
+
const result = await navigateWithTarget({
|
|
21
|
+
mode: "push",
|
|
22
|
+
target,
|
|
23
|
+
from,
|
|
24
|
+
nativeRouter,
|
|
25
|
+
routeResolveCodec,
|
|
26
|
+
namedRouteLookup,
|
|
27
|
+
beforeEachGuards,
|
|
28
|
+
beforeResolveGuards,
|
|
29
|
+
maxRedirects,
|
|
30
|
+
tabBarPathSet,
|
|
31
|
+
resolveWithCodec
|
|
32
|
+
});
|
|
33
|
+
return settleNavigationResult(result);
|
|
34
|
+
}
|
|
35
|
+
async function replace(to) {
|
|
36
|
+
const from = snapshotRouteLocation(route);
|
|
37
|
+
let target;
|
|
38
|
+
try {
|
|
39
|
+
target = resolveWithCodec(to, from.path);
|
|
40
|
+
} catch (error) {
|
|
41
|
+
return settleNavigationResult(createNavigationRunResult("replace", from, void 0, createNavigationFailure(NavigationFailureType.unknown, void 0, from, error)));
|
|
42
|
+
}
|
|
43
|
+
const result = await navigateWithTarget({
|
|
44
|
+
mode: "replace",
|
|
45
|
+
target,
|
|
46
|
+
from,
|
|
47
|
+
nativeRouter,
|
|
48
|
+
routeResolveCodec,
|
|
49
|
+
namedRouteLookup,
|
|
50
|
+
beforeEachGuards,
|
|
51
|
+
beforeResolveGuards,
|
|
52
|
+
maxRedirects,
|
|
53
|
+
tabBarPathSet,
|
|
54
|
+
resolveWithCodec
|
|
55
|
+
});
|
|
56
|
+
return settleNavigationResult(result);
|
|
57
|
+
}
|
|
58
|
+
async function back(delta = 1) {
|
|
59
|
+
const from = snapshotRouteLocation(route);
|
|
60
|
+
const target = resolveBackNavigationTarget(delta, from, resolveWithCodec);
|
|
61
|
+
const guardResult = await runBackNavigationGuards({
|
|
62
|
+
target,
|
|
63
|
+
from,
|
|
64
|
+
nativeRouter,
|
|
65
|
+
beforeEachGuards,
|
|
66
|
+
beforeResolveGuards,
|
|
67
|
+
resolveWithCodec
|
|
68
|
+
});
|
|
69
|
+
if (guardResult.failure) return settleNavigationResult(guardResult);
|
|
70
|
+
const result = await executeNavigationMethod(nativeRouter.navigateBack, { delta }, target, from);
|
|
71
|
+
const runResult = isNavigationFailure(result) ? createNavigationRunResult("back", from, target, result) : guardResult;
|
|
72
|
+
return settleNavigationResult(runResult);
|
|
73
|
+
}
|
|
74
|
+
async function go(delta) {
|
|
75
|
+
if (delta < 0) return back(Math.abs(delta));
|
|
76
|
+
if (delta === 0) return;
|
|
77
|
+
const from = snapshotRouteLocation(route);
|
|
78
|
+
return settleNavigationResult(createNavigationRunResult("back", from, void 0, createForwardNotSupportedFailure(from)));
|
|
79
|
+
}
|
|
80
|
+
async function forward() {
|
|
81
|
+
return go(1);
|
|
82
|
+
}
|
|
83
|
+
return {
|
|
84
|
+
push,
|
|
85
|
+
replace,
|
|
86
|
+
back,
|
|
87
|
+
go,
|
|
88
|
+
forward
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
//#endregion
|
|
93
|
+
export { createNavigationApi };
|
|
94
|
+
//# sourceMappingURL=navigationApi.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navigationApi.mjs","names":[],"sources":["../../../src/router/navigationApi.ts"],"sourcesContent":["import type {\n NamedRouteLookup,\n RouteResolveCodec,\n} from '../routerInternal/shared'\nimport type { NavigationRunResult } from './navigationResult'\nimport type {\n NavigationFailure,\n NavigationGuard,\n RouteLocationNormalizedLoaded,\n RouteLocationRaw,\n} from './types'\nimport { snapshotRouteLocation } from '../routerInternal/shared'\nimport { resolveBackNavigationTarget, runBackNavigationGuards } from './backNavigation'\nimport {\n createNavigationFailure,\n executeNavigationMethod,\n isNavigationFailure,\n} from './navigationCore'\nimport { createNavigationRunResult } from './navigationResult'\nimport { navigateWithTarget } from './navigationTarget'\nimport { createForwardNotSupportedFailure } from './navigationTargetHelpers'\nimport { NavigationFailureType } from './types'\n\ninterface CreateNavigationApiOptions {\n nativeRouter: Record<string, any>\n route: Readonly<RouteLocationNormalizedLoaded>\n routeResolveCodec: RouteResolveCodec\n namedRouteLookup: NamedRouteLookup\n beforeEachGuards: ReadonlySet<NavigationGuard>\n beforeResolveGuards: ReadonlySet<NavigationGuard>\n maxRedirects: number\n tabBarPathSet: ReadonlySet<string>\n resolveWithCodec: (to: RouteLocationRaw, currentPath: string) => RouteLocationNormalizedLoaded\n settleNavigationResult: (result: NavigationRunResult) => Promise<void | NavigationFailure>\n}\n\nexport function createNavigationApi(options: CreateNavigationApiOptions) {\n const {\n nativeRouter,\n route,\n routeResolveCodec,\n namedRouteLookup,\n beforeEachGuards,\n beforeResolveGuards,\n maxRedirects,\n tabBarPathSet,\n resolveWithCodec,\n settleNavigationResult,\n } = options\n\n async function push(to: RouteLocationRaw): Promise<void | NavigationFailure> {\n const from = snapshotRouteLocation(route)\n let target: RouteLocationNormalizedLoaded\n try {\n target = resolveWithCodec(to, from.path)\n }\n catch (error) {\n return settleNavigationResult(\n createNavigationRunResult(\n 'push',\n from,\n undefined,\n createNavigationFailure(NavigationFailureType.unknown, undefined, from, error),\n ),\n )\n }\n const result = await navigateWithTarget({\n mode: 'push',\n target,\n from,\n nativeRouter,\n routeResolveCodec,\n namedRouteLookup,\n beforeEachGuards,\n beforeResolveGuards,\n maxRedirects,\n tabBarPathSet,\n resolveWithCodec,\n })\n return settleNavigationResult(result)\n }\n\n async function replace(to: RouteLocationRaw): Promise<void | NavigationFailure> {\n const from = snapshotRouteLocation(route)\n let target: RouteLocationNormalizedLoaded\n try {\n target = resolveWithCodec(to, from.path)\n }\n catch (error) {\n return settleNavigationResult(\n createNavigationRunResult(\n 'replace',\n from,\n undefined,\n createNavigationFailure(NavigationFailureType.unknown, undefined, from, error),\n ),\n )\n }\n const result = await navigateWithTarget({\n mode: 'replace',\n target,\n from,\n nativeRouter,\n routeResolveCodec,\n namedRouteLookup,\n beforeEachGuards,\n beforeResolveGuards,\n maxRedirects,\n tabBarPathSet,\n resolveWithCodec,\n })\n return settleNavigationResult(result)\n }\n\n async function back(delta = 1): Promise<void | NavigationFailure> {\n const from = snapshotRouteLocation(route)\n const target = resolveBackNavigationTarget(delta, from, resolveWithCodec)\n const guardResult = await runBackNavigationGuards({\n target,\n from,\n nativeRouter: nativeRouter as any,\n beforeEachGuards,\n beforeResolveGuards,\n resolveWithCodec,\n })\n if (guardResult.failure) {\n return settleNavigationResult(guardResult)\n }\n\n const result = await executeNavigationMethod(\n nativeRouter.navigateBack as (options: Record<string, any>) => unknown,\n { delta },\n target,\n from,\n )\n const runResult = isNavigationFailure(result)\n ? createNavigationRunResult('back', from, target, result)\n : guardResult\n return settleNavigationResult(runResult)\n }\n\n async function go(delta: number): Promise<void | NavigationFailure> {\n if (delta < 0) {\n return back(Math.abs(delta))\n }\n if (delta === 0) {\n return undefined\n }\n const from = snapshotRouteLocation(route)\n return settleNavigationResult(\n createNavigationRunResult(\n 'back',\n from,\n undefined,\n createForwardNotSupportedFailure(from),\n ),\n )\n }\n\n async function forward(): Promise<void | NavigationFailure> {\n return go(1)\n }\n\n return {\n push,\n replace,\n back,\n go,\n forward,\n }\n}\n"],"mappings":";;;;;;;;;AAoCA,SAAgB,oBAAoB,SAAqC;CACvE,MAAM,EACJ,cACA,OACA,mBACA,kBACA,kBACA,qBACA,cACA,eACA,kBACA,2BACE;CAEJ,eAAe,KAAK,IAAyD;EAC3E,MAAM,OAAO,sBAAsB,KAAK;EACxC,IAAI;EACJ,IAAI;GACF,SAAS,iBAAiB,IAAI,KAAK,IAAI;EACzC,SACO,OAAO;GACZ,OAAO,uBACL,0BACE,QACA,MACA,QACA,wBAAwB,sBAAsB,SAAS,QAAW,MAAM,KAAK,CAC/E,CACF;EACF;EACA,MAAM,SAAS,MAAM,mBAAmB;GACtC,MAAM;GACN;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACF,CAAC;EACD,OAAO,uBAAuB,MAAM;CACtC;CAEA,eAAe,QAAQ,IAAyD;EAC9E,MAAM,OAAO,sBAAsB,KAAK;EACxC,IAAI;EACJ,IAAI;GACF,SAAS,iBAAiB,IAAI,KAAK,IAAI;EACzC,SACO,OAAO;GACZ,OAAO,uBACL,0BACE,WACA,MACA,QACA,wBAAwB,sBAAsB,SAAS,QAAW,MAAM,KAAK,CAC/E,CACF;EACF;EACA,MAAM,SAAS,MAAM,mBAAmB;GACtC,MAAM;GACN;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACF,CAAC;EACD,OAAO,uBAAuB,MAAM;CACtC;CAEA,eAAe,KAAK,QAAQ,GAAsC;EAChE,MAAM,OAAO,sBAAsB,KAAK;EACxC,MAAM,SAAS,4BAA4B,OAAO,MAAM,gBAAgB;EACxE,MAAM,cAAc,MAAM,wBAAwB;GAChD;GACA;GACc;GACd;GACA;GACA;EACF,CAAC;EACD,IAAI,YAAY,SACd,OAAO,uBAAuB,WAAW;EAG3C,MAAM,SAAS,MAAM,wBACnB,aAAa,cACb,EAAE,MAAM,GACR,QACA,IACF;EACA,MAAM,YAAY,oBAAoB,MAAM,IACxC,0BAA0B,QAAQ,MAAM,QAAQ,MAAM,IACtD;EACJ,OAAO,uBAAuB,SAAS;CACzC;CAEA,eAAe,GAAG,OAAkD;EAClE,IAAI,QAAQ,GACV,OAAO,KAAK,KAAK,IAAI,KAAK,CAAC;EAE7B,IAAI,UAAU,GACZ;EAEF,MAAM,OAAO,sBAAsB,KAAK;EACxC,OAAO,uBACL,0BACE,QACA,MACA,QACA,iCAAiC,IAAI,CACvC,CACF;CACF;CAEA,eAAe,UAA6C;EAC1D,OAAO,GAAG,CAAC;CACb;CAEA,OAAO;EACL;EACA;EACA;EACA;EACA;CACF;AACF"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { NavigationFailureType } from "./types.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/router/navigationCore.ts
|
|
4
|
+
const DUPLICATED_RE = /already|same|duplicat|重复/;
|
|
5
|
+
const CANCELLED_RE = /cancel|取消/;
|
|
6
|
+
const ABORTED_RE = /abort|interrupt|中断/;
|
|
7
|
+
function normalizeNavigationErrorMessage(error) {
|
|
8
|
+
if (typeof error === "string") return error;
|
|
9
|
+
if (error && typeof error === "object") {
|
|
10
|
+
const message = error.errMsg;
|
|
11
|
+
if (typeof message === "string") return message;
|
|
12
|
+
if (error instanceof Error) return error.message;
|
|
13
|
+
}
|
|
14
|
+
return "";
|
|
15
|
+
}
|
|
16
|
+
function resolveNavigationFailureType(error) {
|
|
17
|
+
const normalizedMessage = normalizeNavigationErrorMessage(error).toLowerCase();
|
|
18
|
+
if (DUPLICATED_RE.test(normalizedMessage)) return NavigationFailureType.duplicated;
|
|
19
|
+
if (CANCELLED_RE.test(normalizedMessage)) return NavigationFailureType.cancelled;
|
|
20
|
+
if (ABORTED_RE.test(normalizedMessage)) return NavigationFailureType.aborted;
|
|
21
|
+
return NavigationFailureType.unknown;
|
|
22
|
+
}
|
|
23
|
+
function createNavigationFailure(type, to, from, cause) {
|
|
24
|
+
const message = normalizeNavigationErrorMessage(cause) || "Navigation failed";
|
|
25
|
+
const error = new Error(message);
|
|
26
|
+
error.__wevuNavigationFailure = true;
|
|
27
|
+
error.type = type;
|
|
28
|
+
error.to = to;
|
|
29
|
+
error.from = from;
|
|
30
|
+
error.cause = cause;
|
|
31
|
+
return error;
|
|
32
|
+
}
|
|
33
|
+
function isNavigationFailure(error, type) {
|
|
34
|
+
if (!error || typeof error !== "object") return false;
|
|
35
|
+
const navigationError = error;
|
|
36
|
+
if (navigationError.__wevuNavigationFailure !== true) return false;
|
|
37
|
+
if (type === void 0) return true;
|
|
38
|
+
return navigationError.type === type;
|
|
39
|
+
}
|
|
40
|
+
function isNavigationRedirectCandidate(value) {
|
|
41
|
+
if (!value || typeof value !== "object") return false;
|
|
42
|
+
return "to" in value;
|
|
43
|
+
}
|
|
44
|
+
function isRouteLocationRawCandidate(value) {
|
|
45
|
+
if (typeof value === "string") return true;
|
|
46
|
+
if (!value || typeof value !== "object") return false;
|
|
47
|
+
const candidate = value;
|
|
48
|
+
return "path" in candidate || "fullPath" in candidate || "query" in candidate || "hash" in candidate || "name" in candidate || "params" in candidate;
|
|
49
|
+
}
|
|
50
|
+
async function runNavigationGuards(guards, context, resolveRoute) {
|
|
51
|
+
for (const guard of guards) try {
|
|
52
|
+
const result = await guard(context.to, context.from, context);
|
|
53
|
+
if (isNavigationFailure(result)) return {
|
|
54
|
+
status: "failure",
|
|
55
|
+
failure: result
|
|
56
|
+
};
|
|
57
|
+
if (result === false) return {
|
|
58
|
+
status: "failure",
|
|
59
|
+
failure: createNavigationFailure(NavigationFailureType.aborted, context.to, context.from, "Navigation aborted by guard")
|
|
60
|
+
};
|
|
61
|
+
if (isNavigationRedirectCandidate(result)) {
|
|
62
|
+
if (!context.to) return {
|
|
63
|
+
status: "failure",
|
|
64
|
+
failure: createNavigationFailure(NavigationFailureType.aborted, context.to, context.from, "Redirect is not supported in back navigation guards")
|
|
65
|
+
};
|
|
66
|
+
return {
|
|
67
|
+
status: "redirect",
|
|
68
|
+
target: resolveRoute(result.to, context.to.path),
|
|
69
|
+
replace: result.replace
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
if (isRouteLocationRawCandidate(result)) {
|
|
73
|
+
if (!context.to) return {
|
|
74
|
+
status: "failure",
|
|
75
|
+
failure: createNavigationFailure(NavigationFailureType.aborted, context.to, context.from, "Redirect is not supported in back navigation guards")
|
|
76
|
+
};
|
|
77
|
+
return {
|
|
78
|
+
status: "redirect",
|
|
79
|
+
target: resolveRoute(result, context.to.path)
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
} catch (error) {
|
|
83
|
+
return {
|
|
84
|
+
status: "failure",
|
|
85
|
+
failure: createNavigationFailure(NavigationFailureType.aborted, context.to, context.from, error)
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
return { status: "continue" };
|
|
89
|
+
}
|
|
90
|
+
function executeNavigationMethod(method, options, to, from) {
|
|
91
|
+
return new Promise((resolve) => {
|
|
92
|
+
let settled = false;
|
|
93
|
+
const finalize = (result) => {
|
|
94
|
+
if (settled) return;
|
|
95
|
+
settled = true;
|
|
96
|
+
resolve(result);
|
|
97
|
+
};
|
|
98
|
+
try {
|
|
99
|
+
const maybePromise = method({
|
|
100
|
+
...options,
|
|
101
|
+
success: () => finalize(),
|
|
102
|
+
fail: (error) => {
|
|
103
|
+
finalize(createNavigationFailure(resolveNavigationFailureType(error), to, from, error));
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
if (maybePromise && typeof maybePromise.then === "function") maybePromise.then(() => finalize(), (error) => finalize(createNavigationFailure(resolveNavigationFailureType(error), to, from, error)));
|
|
107
|
+
} catch (error) {
|
|
108
|
+
finalize(createNavigationFailure(resolveNavigationFailureType(error), to, from, error));
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
async function runAfterEachHooks(hooks, context) {
|
|
113
|
+
for (const hook of hooks) try {
|
|
114
|
+
await hook(context.to, context.from, context.failure, context);
|
|
115
|
+
} catch (_unused) {}
|
|
116
|
+
}
|
|
117
|
+
async function runNavigationErrorHooks(handlers, error, context) {
|
|
118
|
+
for (const handler of handlers) try {
|
|
119
|
+
await handler(error, context);
|
|
120
|
+
} catch (_unused2) {}
|
|
121
|
+
}
|
|
122
|
+
function isNativeFailureLikeError(value) {
|
|
123
|
+
if (!value || typeof value !== "object") return false;
|
|
124
|
+
return typeof value.errMsg === "string";
|
|
125
|
+
}
|
|
126
|
+
function shouldEmitNavigationError(failure) {
|
|
127
|
+
if (failure.type === NavigationFailureType.unknown) return true;
|
|
128
|
+
if (failure.cause instanceof Error) return true;
|
|
129
|
+
if (failure.type === NavigationFailureType.aborted && failure.cause !== void 0) {
|
|
130
|
+
if (typeof failure.cause === "string") return false;
|
|
131
|
+
if (isNativeFailureLikeError(failure.cause)) return false;
|
|
132
|
+
return true;
|
|
133
|
+
}
|
|
134
|
+
return false;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
//#endregion
|
|
138
|
+
export { createNavigationFailure, executeNavigationMethod, isNavigationFailure, isNavigationRedirectCandidate, runAfterEachHooks, runNavigationErrorHooks, runNavigationGuards, shouldEmitNavigationError };
|
|
139
|
+
//# sourceMappingURL=navigationCore.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navigationCore.mjs","names":[],"sources":["../../../src/router/navigationCore.ts"],"sourcesContent":["import type {\n NavigationAfterEach,\n NavigationAfterEachContext,\n NavigationErrorContext,\n NavigationErrorHandler,\n NavigationFailure,\n NavigationFailureTypeValue,\n NavigationGuard,\n NavigationGuardContext,\n NavigationRedirect,\n RouteLocationNormalizedLoaded,\n RouteLocationRaw,\n} from './types'\nimport { NavigationFailureType } from './types'\n\nconst DUPLICATED_RE = /already|same|duplicat|重复/\nconst CANCELLED_RE = /cancel|取消/\nconst ABORTED_RE = /abort|interrupt|中断/\n\nfunction normalizeNavigationErrorMessage(error: unknown): string {\n if (typeof error === 'string') {\n return error\n }\n if (error && typeof error === 'object') {\n const message = (error as Record<string, unknown>).errMsg\n if (typeof message === 'string') {\n return message\n }\n if (error instanceof Error) {\n return error.message\n }\n }\n return ''\n}\n\nfunction resolveNavigationFailureType(error: unknown): NavigationFailureTypeValue {\n const normalizedMessage = normalizeNavigationErrorMessage(error).toLowerCase()\n if (DUPLICATED_RE.test(normalizedMessage)) {\n return NavigationFailureType.duplicated\n }\n if (CANCELLED_RE.test(normalizedMessage)) {\n return NavigationFailureType.cancelled\n }\n if (ABORTED_RE.test(normalizedMessage)) {\n return NavigationFailureType.aborted\n }\n return NavigationFailureType.unknown\n}\n\nexport function createNavigationFailure(\n type: NavigationFailureTypeValue,\n to?: RouteLocationNormalizedLoaded,\n from?: RouteLocationNormalizedLoaded,\n cause?: unknown,\n): NavigationFailure {\n const message = normalizeNavigationErrorMessage(cause) || 'Navigation failed'\n const error = new Error(message) as NavigationFailure\n ;(error as { __wevuNavigationFailure: true }).__wevuNavigationFailure = true\n ;(error as { type: NavigationFailureTypeValue }).type = type\n ;(error as { to?: RouteLocationNormalizedLoaded }).to = to\n ;(error as { from?: RouteLocationNormalizedLoaded }).from = from\n ;(error as { cause?: unknown }).cause = cause\n return error\n}\n\nexport function isNavigationFailure(error: unknown, type?: NavigationFailureTypeValue): error is NavigationFailure {\n if (!error || typeof error !== 'object') {\n return false\n }\n const navigationError = error as Partial<NavigationFailure>\n if (navigationError.__wevuNavigationFailure !== true) {\n return false\n }\n if (type === undefined) {\n return true\n }\n return navigationError.type === type\n}\n\ninterface GuardPipelineContinue {\n status: 'continue'\n}\n\ninterface GuardPipelineFailure {\n status: 'failure'\n failure: NavigationFailure\n}\n\ninterface GuardPipelineRedirect {\n status: 'redirect'\n target: RouteLocationNormalizedLoaded\n replace?: boolean\n}\n\nexport type GuardPipelineResult = GuardPipelineContinue | GuardPipelineFailure | GuardPipelineRedirect\n\nexport function isNavigationRedirectCandidate(value: unknown): value is NavigationRedirect {\n if (!value || typeof value !== 'object') {\n return false\n }\n return 'to' in (value as Record<string, unknown>)\n}\n\nfunction isRouteLocationRawCandidate(value: unknown): value is RouteLocationRaw {\n if (typeof value === 'string') {\n return true\n }\n if (!value || typeof value !== 'object') {\n return false\n }\n const candidate = value as Record<string, unknown>\n return 'path' in candidate\n || 'fullPath' in candidate\n || 'query' in candidate\n || 'hash' in candidate\n || 'name' in candidate\n || 'params' in candidate\n}\n\nexport async function runNavigationGuards(\n guards: ReadonlySet<NavigationGuard>,\n context: NavigationGuardContext,\n resolveRoute: (to: RouteLocationRaw, currentPath: string) => RouteLocationNormalizedLoaded,\n): Promise<GuardPipelineResult> {\n for (const guard of guards) {\n try {\n const result = await guard(context.to, context.from, context)\n if (isNavigationFailure(result)) {\n return {\n status: 'failure',\n failure: result,\n }\n }\n if (result === false) {\n return {\n status: 'failure',\n failure: createNavigationFailure(\n NavigationFailureType.aborted,\n context.to,\n context.from,\n 'Navigation aborted by guard',\n ),\n }\n }\n if (isNavigationRedirectCandidate(result)) {\n if (!context.to) {\n return {\n status: 'failure',\n failure: createNavigationFailure(\n NavigationFailureType.aborted,\n context.to,\n context.from,\n 'Redirect is not supported in back navigation guards',\n ),\n }\n }\n return {\n status: 'redirect',\n target: resolveRoute(result.to, context.to.path),\n replace: result.replace,\n }\n }\n if (isRouteLocationRawCandidate(result)) {\n if (!context.to) {\n return {\n status: 'failure',\n failure: createNavigationFailure(\n NavigationFailureType.aborted,\n context.to,\n context.from,\n 'Redirect is not supported in back navigation guards',\n ),\n }\n }\n return {\n status: 'redirect',\n target: resolveRoute(result, context.to.path),\n }\n }\n }\n catch (error) {\n return {\n status: 'failure',\n failure: createNavigationFailure(NavigationFailureType.aborted, context.to, context.from, error),\n }\n }\n }\n return { status: 'continue' }\n}\n\nexport function executeNavigationMethod(\n method: (options: Record<string, any>) => unknown,\n options: Record<string, any>,\n to?: RouteLocationNormalizedLoaded,\n from?: RouteLocationNormalizedLoaded,\n): Promise<void | NavigationFailure> {\n return new Promise((resolve) => {\n let settled = false\n const finalize = (result?: void | NavigationFailure) => {\n if (settled) {\n return\n }\n settled = true\n resolve(result)\n }\n\n try {\n const maybePromise = method({\n ...options,\n success: () => finalize(),\n fail: (error: unknown) => {\n finalize(createNavigationFailure(resolveNavigationFailureType(error), to, from, error))\n },\n })\n\n if (maybePromise && typeof (maybePromise as PromiseLike<unknown>).then === 'function') {\n ;(maybePromise as PromiseLike<unknown>).then(\n () => finalize(),\n error => finalize(createNavigationFailure(resolveNavigationFailureType(error), to, from, error)),\n )\n }\n }\n catch (error) {\n finalize(createNavigationFailure(resolveNavigationFailureType(error), to, from, error))\n }\n })\n}\n\nexport async function runAfterEachHooks(\n hooks: ReadonlySet<NavigationAfterEach>,\n context: NavigationAfterEachContext,\n) {\n for (const hook of hooks) {\n try {\n await hook(context.to, context.from, context.failure, context)\n }\n catch {\n // 忽略 afterEach hook 的异常,避免影响导航主流程。\n }\n }\n}\n\nexport async function runNavigationErrorHooks(\n handlers: ReadonlySet<NavigationErrorHandler>,\n error: unknown,\n context: NavigationErrorContext,\n) {\n for (const handler of handlers) {\n try {\n await handler(error, context)\n }\n catch {\n // 忽略 onError 回调中的异常,避免影响导航主流程。\n }\n }\n}\n\nfunction isNativeFailureLikeError(value: unknown): boolean {\n if (!value || typeof value !== 'object') {\n return false\n }\n const errMsg = (value as Record<string, unknown>).errMsg\n return typeof errMsg === 'string'\n}\n\nexport function shouldEmitNavigationError(failure: NavigationFailure): boolean {\n if (failure.type === NavigationFailureType.unknown) {\n return true\n }\n if (failure.cause instanceof Error) {\n return true\n }\n if (failure.type === NavigationFailureType.aborted && failure.cause !== undefined) {\n if (typeof failure.cause === 'string') {\n return false\n }\n if (isNativeFailureLikeError(failure.cause)) {\n return false\n }\n return true\n }\n return false\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { notifyRouteStateSync } from "./routeSync.mjs";
|
|
2
|
+
import { runAfterEachHooks, runNavigationErrorHooks, shouldEmitNavigationError } from "./navigationCore.mjs";
|
|
3
|
+
|
|
4
|
+
//#region src/router/navigationResult.ts
|
|
5
|
+
function createNavigationRunResult(mode, from, to, failure) {
|
|
6
|
+
return {
|
|
7
|
+
mode,
|
|
8
|
+
from,
|
|
9
|
+
to,
|
|
10
|
+
failure
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
function createNavigationResultController(options) {
|
|
14
|
+
const { afterEachHooks, errorHandlers, nativeRouter, rejectOnError } = options;
|
|
15
|
+
async function emitNavigationAfterEach(result) {
|
|
16
|
+
await runAfterEachHooks(afterEachHooks, {
|
|
17
|
+
mode: result.mode,
|
|
18
|
+
to: result.to,
|
|
19
|
+
from: result.from,
|
|
20
|
+
nativeRouter,
|
|
21
|
+
failure: result.failure
|
|
22
|
+
});
|
|
23
|
+
if (result.failure && shouldEmitNavigationError(result.failure)) {
|
|
24
|
+
var _result$failure$cause;
|
|
25
|
+
await runNavigationErrorHooks(errorHandlers, (_result$failure$cause = result.failure.cause) !== null && _result$failure$cause !== void 0 ? _result$failure$cause : result.failure, {
|
|
26
|
+
mode: result.mode,
|
|
27
|
+
to: result.to,
|
|
28
|
+
from: result.from,
|
|
29
|
+
nativeRouter,
|
|
30
|
+
failure: result.failure
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
function shouldRejectNavigationFailure(failure) {
|
|
35
|
+
return rejectOnError && shouldEmitNavigationError(failure);
|
|
36
|
+
}
|
|
37
|
+
async function settleNavigationResult(result) {
|
|
38
|
+
if (!result.failure) notifyRouteStateSync(result.to ? {
|
|
39
|
+
route: result.to,
|
|
40
|
+
source: "router"
|
|
41
|
+
} : void 0);
|
|
42
|
+
await emitNavigationAfterEach(result);
|
|
43
|
+
if (result.failure && shouldRejectNavigationFailure(result.failure)) throw result.failure;
|
|
44
|
+
return result.failure;
|
|
45
|
+
}
|
|
46
|
+
return {
|
|
47
|
+
emitNavigationAfterEach,
|
|
48
|
+
settleNavigationResult
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
//#endregion
|
|
53
|
+
export { createNavigationResultController, createNavigationRunResult };
|
|
54
|
+
//# sourceMappingURL=navigationResult.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navigationResult.mjs","names":[],"sources":["../../../src/router/navigationResult.ts"],"sourcesContent":["import type { SetupContextRouter } from '../runtime/types/props'\nimport type {\n NavigationAfterEach,\n NavigationErrorHandler,\n NavigationFailure,\n NavigationMode,\n RouteLocationNormalizedLoaded,\n} from './types'\nimport { runAfterEachHooks, runNavigationErrorHooks, shouldEmitNavigationError } from './navigationCore'\nimport { notifyRouteStateSync } from './routeSync'\n\nexport interface NavigationRunResult {\n mode: NavigationMode\n from: RouteLocationNormalizedLoaded\n to?: RouteLocationNormalizedLoaded\n failure?: NavigationFailure\n}\n\nexport function createNavigationRunResult(\n mode: NavigationMode,\n from: RouteLocationNormalizedLoaded,\n to?: RouteLocationNormalizedLoaded,\n failure?: NavigationFailure,\n): NavigationRunResult {\n return {\n mode,\n from,\n to,\n failure,\n }\n}\n\nexport function createNavigationResultController(options: {\n afterEachHooks: ReadonlySet<NavigationAfterEach>\n errorHandlers: ReadonlySet<NavigationErrorHandler>\n nativeRouter: SetupContextRouter\n rejectOnError: boolean\n}) {\n const {\n afterEachHooks,\n errorHandlers,\n nativeRouter,\n rejectOnError,\n } = options\n\n async function emitNavigationAfterEach(result: NavigationRunResult): Promise<void> {\n await runAfterEachHooks(afterEachHooks, {\n mode: result.mode,\n to: result.to,\n from: result.from,\n nativeRouter,\n failure: result.failure,\n })\n\n if (result.failure && shouldEmitNavigationError(result.failure)) {\n await runNavigationErrorHooks(\n errorHandlers,\n result.failure.cause ?? result.failure,\n {\n mode: result.mode,\n to: result.to,\n from: result.from,\n nativeRouter,\n failure: result.failure,\n },\n )\n }\n }\n\n function shouldRejectNavigationFailure(failure: NavigationFailure): boolean {\n return rejectOnError && shouldEmitNavigationError(failure)\n }\n\n async function settleNavigationResult(result: NavigationRunResult): Promise<void | NavigationFailure> {\n if (!result.failure) {\n notifyRouteStateSync(result.to\n ? {\n route: result.to,\n source: 'router',\n }\n : undefined)\n }\n await emitNavigationAfterEach(result)\n if (result.failure && shouldRejectNavigationFailure(result.failure)) {\n throw result.failure\n }\n return result.failure\n }\n\n return {\n emitNavigationAfterEach,\n settleNavigationResult,\n }\n}\n"],"mappings":";;;;AAkBA,SAAgB,0BACd,MACA,MACA,IACA,SACqB;CACrB,OAAO;EACL;EACA;EACA;EACA;CACF;AACF;AAEA,SAAgB,iCAAiC,SAK9C;CACD,MAAM,EACJ,gBACA,eACA,cACA,kBACE;CAEJ,eAAe,wBAAwB,QAA4C;EACjF,MAAM,kBAAkB,gBAAgB;GACtC,MAAM,OAAO;GACb,IAAI,OAAO;GACX,MAAM,OAAO;GACb;GACA,SAAS,OAAO;EAClB,CAAC;EAED,IAAI,OAAO,WAAW,0BAA0B,OAAO,OAAO,GAAG;;GAC/D,MAAM,wBACJ,wCACA,OAAO,QAAQ,8EAAS,OAAO,SAC/B;IACE,MAAM,OAAO;IACb,IAAI,OAAO;IACX,MAAM,OAAO;IACb;IACA,SAAS,OAAO;GAClB,CACF;EACF;CACF;CAEA,SAAS,8BAA8B,SAAqC;EAC1E,OAAO,iBAAiB,0BAA0B,OAAO;CAC3D;CAEA,eAAe,uBAAuB,QAAgE;EACpG,IAAI,CAAC,OAAO,SACV,qBAAqB,OAAO,KACxB;GACE,OAAO,OAAO;GACd,QAAQ;EACV,IACA,MAAS;EAEf,MAAM,wBAAwB,MAAM;EACpC,IAAI,OAAO,WAAW,8BAA8B,OAAO,OAAO,GAChE,MAAM,OAAO;EAEf,OAAO,OAAO;CAChB;CAEA,OAAO;EACL;EACA;CACF;AACF"}
|