wevu 7.0.0 → 7.0.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.
Files changed (36) hide show
  1. package/dist/dev/package.mjs +1 -1
  2. package/dist/dev/router/backNavigation.mjs +1 -1
  3. package/dist/dev/router/createRouter.mjs +55 -14
  4. package/dist/dev/router/createRouter.mjs.map +1 -1
  5. package/dist/dev/router/initialNavigation.mjs +131 -5
  6. package/dist/dev/router/initialNavigation.mjs.map +1 -1
  7. package/dist/dev/router/navigationApi.mjs +1 -1
  8. package/dist/dev/router/navigationResult.mjs +1 -1
  9. package/dist/dev/router/navigationTarget.mjs +2 -2
  10. package/dist/dev/router/navigationTargetHelpers.mjs +1 -1
  11. package/dist/dev/router/types.mjs.map +1 -1
  12. package/dist/dev/router/useRoute.mjs +13 -0
  13. package/dist/dev/router/useRoute.mjs.map +1 -1
  14. package/dist/dev/router.mjs +1 -1
  15. package/dist/dev/routerInternal/snapshots.mjs +3 -1
  16. package/dist/dev/routerInternal/snapshots.mjs.map +1 -1
  17. package/dist/dev/runtime/register/component/lifecycle.mjs +13 -55
  18. package/dist/dev/runtime/register/component/lifecycle.mjs.map +1 -1
  19. package/dist/dev/runtime/register/component/registerDefinition.mjs +19 -21
  20. package/dist/dev/runtime/register/component/registerDefinition.mjs.map +1 -1
  21. package/dist/package.mjs +1 -1
  22. package/dist/router/backNavigation.mjs +1 -1
  23. package/dist/router/createRouter.mjs +1 -1
  24. package/dist/router/initialNavigation.mjs +1 -1
  25. package/dist/router/navigationApi.mjs +1 -1
  26. package/dist/router/navigationResult.mjs +1 -1
  27. package/dist/router/navigationTarget.mjs +1 -1
  28. package/dist/router/navigationTargetHelpers.mjs +1 -1
  29. package/dist/router/types.d.mts +10 -1
  30. package/dist/router/useRoute.mjs +1 -1
  31. package/dist/router.d.mts +2 -2
  32. package/dist/router.mjs +1 -1
  33. package/dist/routerInternal/snapshots.mjs +1 -1
  34. package/dist/runtime/register/component/lifecycle.mjs +1 -1
  35. package/dist/runtime/register/component/registerDefinition.mjs +1 -1
  36. package/package.json +6 -6
@@ -1 +1 @@
1
- {"version":3,"file":"snapshots.mjs","names":[],"sources":["../../../src/routerInternal/snapshots.ts"],"sourcesContent":["import type {\n LocationQuery,\n RouteLocationNormalizedLoaded,\n RouteLocationRedirectedFrom,\n RouteMeta,\n RouteParams,\n RouteParamsMode,\n RouteQueryStringifier,\n RouteRecordMatched,\n RouteRecordRaw,\n UseRouterOptions,\n} from '../router'\nimport type { RouteRecordNormalized, RouteResolveCodec } from './types'\nimport { createAbsoluteRoutePath, resolvePath } from './path'\nimport { stringifyQuery } from './query'\n\nexport function cloneRouteMeta(meta?: RouteMeta): RouteMeta | undefined {\n if (!meta) {\n return undefined\n }\n return {\n ...meta,\n }\n}\n\nfunction freezeRouteRecordRawSnapshot(routeRecord: RouteRecordRaw): Readonly<RouteRecordRaw> {\n const snapshot: RouteRecordRaw = {\n name: routeRecord.name,\n path: routeRecord.path,\n }\n\n if (routeRecord.meta !== undefined) {\n snapshot.meta = cloneRouteMeta(routeRecord.meta)\n }\n if (Array.isArray(routeRecord.alias)) {\n snapshot.alias = Object.freeze(routeRecord.alias.slice())\n }\n else if (routeRecord.alias !== undefined) {\n snapshot.alias = routeRecord.alias\n }\n if (Array.isArray(routeRecord.beforeEnter)) {\n snapshot.beforeEnter = Object.freeze(routeRecord.beforeEnter.slice())\n }\n else if (routeRecord.beforeEnter !== undefined) {\n snapshot.beforeEnter = routeRecord.beforeEnter\n }\n if (routeRecord.redirect !== undefined) {\n snapshot.redirect = routeRecord.redirect\n }\n\n return Object.freeze(snapshot)\n}\n\nexport function createRouterOptionsSnapshot(\n normalizedTabBarEntries: readonly string[],\n normalizedNamedRoutes: readonly RouteRecordRaw[],\n paramsMode: RouteParamsMode,\n maxRedirects: number,\n routeResolveCodec: RouteResolveCodec,\n rejectOnError: boolean,\n): Readonly<UseRouterOptions> {\n const tabBarEntriesSnapshot = Object.freeze(\n normalizedTabBarEntries.map(path => createAbsoluteRoutePath(path)),\n )\n const routesSnapshot = Object.freeze(\n normalizedNamedRoutes.map(freezeRouteRecordRawSnapshot),\n ) as readonly RouteRecordRaw[]\n\n return Object.freeze({\n tabBarEntries: tabBarEntriesSnapshot,\n routes: routesSnapshot,\n namedRoutes: routesSnapshot,\n paramsMode,\n maxRedirects,\n parseQuery: routeResolveCodec.parseQuery,\n stringifyQuery: routeResolveCodec.stringifyQuery,\n rejectOnError,\n })\n}\n\nexport function normalizeRouteRecordMatched(\n record: RouteRecordNormalized,\n matchedPath?: string,\n): RouteRecordMatched {\n const matchedRecord: RouteRecordMatched = {\n name: record.name,\n path: createAbsoluteRoutePath(record.path),\n }\n const normalizedMatchedPath = typeof matchedPath === 'string' && matchedPath\n ? createAbsoluteRoutePath(resolvePath(matchedPath, ''))\n : undefined\n if (normalizedMatchedPath && normalizedMatchedPath !== matchedRecord.path) {\n matchedRecord.aliasPath = normalizedMatchedPath\n }\n if (record.meta !== undefined) {\n matchedRecord.meta = cloneRouteMeta(record.meta)\n }\n return matchedRecord\n}\n\nexport function cloneRouteRecordMatchedList(matched?: readonly RouteRecordMatched[]): RouteRecordMatched[] | undefined {\n if (!matched) {\n return undefined\n }\n return matched.map(record => ({\n name: record.name,\n path: record.path,\n aliasPath: record.aliasPath,\n meta: cloneRouteMeta(record.meta),\n }))\n}\n\nexport function cloneLocationQuery(query: LocationQuery): LocationQuery {\n const cloned: LocationQuery = {}\n for (const key of Object.keys(query)) {\n const value = query[key]\n cloned[key] = Array.isArray(value) ? value.slice() : value\n }\n return cloned\n}\n\nexport function cloneRouteParams(params: RouteParams): RouteParams {\n const cloned: RouteParams = {}\n for (const key of Object.keys(params)) {\n const value = params[key]\n cloned[key] = Array.isArray(value) ? value.slice() : value\n }\n return cloned\n}\n\nexport function cloneRouteLocationRedirectedFrom(\n redirectedFrom?: RouteLocationRedirectedFrom,\n): RouteLocationRedirectedFrom | undefined {\n if (!redirectedFrom) {\n return undefined\n }\n\n const cloned: RouteLocationRedirectedFrom = {\n path: redirectedFrom.path,\n fullPath: redirectedFrom.fullPath,\n query: cloneLocationQuery(redirectedFrom.query),\n hash: redirectedFrom.hash,\n params: cloneRouteParams(redirectedFrom.params),\n }\n if (redirectedFrom.name !== undefined) {\n cloned.name = redirectedFrom.name\n }\n if (redirectedFrom.meta !== undefined) {\n cloned.meta = cloneRouteMeta(redirectedFrom.meta)\n }\n if (redirectedFrom.href !== undefined) {\n cloned.href = redirectedFrom.href\n }\n if (redirectedFrom.matched !== undefined) {\n cloned.matched = cloneRouteRecordMatchedList(redirectedFrom.matched)\n }\n return cloned\n}\n\nexport function createRedirectedFromSnapshot(route: RouteLocationNormalizedLoaded): RouteLocationRedirectedFrom {\n const snapshot: RouteLocationRedirectedFrom = {\n path: route.path,\n fullPath: route.fullPath,\n query: cloneLocationQuery(route.query),\n hash: route.hash,\n params: cloneRouteParams(route.params),\n }\n if (route.name !== undefined) {\n snapshot.name = route.name\n }\n if (route.meta !== undefined) {\n snapshot.meta = cloneRouteMeta(route.meta)\n }\n if (route.href !== undefined) {\n snapshot.href = route.href\n }\n if (route.matched !== undefined) {\n snapshot.matched = cloneRouteRecordMatchedList(route.matched)\n }\n return snapshot\n}\n\nexport function snapshotRouteLocation(route: RouteLocationNormalizedLoaded): RouteLocationNormalizedLoaded {\n const snapshot: RouteLocationNormalizedLoaded = {\n path: route.path,\n fullPath: route.fullPath,\n query: cloneLocationQuery(route.query),\n hash: route.hash,\n params: cloneRouteParams(route.params),\n }\n if (route.meta !== undefined) {\n snapshot.meta = cloneRouteMeta(route.meta)\n }\n if (route.href !== undefined) {\n snapshot.href = route.href\n }\n if (route.matched !== undefined) {\n snapshot.matched = cloneRouteRecordMatchedList(route.matched)\n }\n if (route.redirectedFrom !== undefined) {\n snapshot.redirectedFrom = cloneRouteLocationRedirectedFrom(route.redirectedFrom)\n }\n if (route.name !== undefined) {\n snapshot.name = route.name\n }\n return snapshot\n}\n\nexport function createNativeRouteUrl(\n target: RouteLocationNormalizedLoaded,\n queryStringifier: RouteQueryStringifier = stringifyQuery,\n): string {\n const basePath = createAbsoluteRoutePath(target.path)\n const queryString = queryStringifier(target.query)\n return queryString ? `${basePath}?${queryString}` : basePath\n}\n\nexport function hasLocationQuery(query: LocationQuery): boolean {\n return Object.keys(query).length > 0\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"snapshots.mjs","names":[],"sources":["../../../src/routerInternal/snapshots.ts"],"sourcesContent":["import type {\n InitialNavigationMode,\n LocationQuery,\n RouteLocationNormalizedLoaded,\n RouteLocationRedirectedFrom,\n RouteMeta,\n RouteParams,\n RouteParamsMode,\n RouteQueryStringifier,\n RouteRecordMatched,\n RouteRecordRaw,\n UseRouterOptions,\n} from '../router'\nimport type { RouteRecordNormalized, RouteResolveCodec } from './types'\nimport { createAbsoluteRoutePath, resolvePath } from './path'\nimport { stringifyQuery } from './query'\n\nexport function cloneRouteMeta(meta?: RouteMeta): RouteMeta | undefined {\n if (!meta) {\n return undefined\n }\n return {\n ...meta,\n }\n}\n\nfunction freezeRouteRecordRawSnapshot(routeRecord: RouteRecordRaw): Readonly<RouteRecordRaw> {\n const snapshot: RouteRecordRaw = {\n name: routeRecord.name,\n path: routeRecord.path,\n }\n\n if (routeRecord.meta !== undefined) {\n snapshot.meta = cloneRouteMeta(routeRecord.meta)\n }\n if (Array.isArray(routeRecord.alias)) {\n snapshot.alias = Object.freeze(routeRecord.alias.slice())\n }\n else if (routeRecord.alias !== undefined) {\n snapshot.alias = routeRecord.alias\n }\n if (Array.isArray(routeRecord.beforeEnter)) {\n snapshot.beforeEnter = Object.freeze(routeRecord.beforeEnter.slice())\n }\n else if (routeRecord.beforeEnter !== undefined) {\n snapshot.beforeEnter = routeRecord.beforeEnter\n }\n if (routeRecord.redirect !== undefined) {\n snapshot.redirect = routeRecord.redirect\n }\n\n return Object.freeze(snapshot)\n}\n\nexport function createRouterOptionsSnapshot(\n normalizedTabBarEntries: readonly string[],\n normalizedNamedRoutes: readonly RouteRecordRaw[],\n paramsMode: RouteParamsMode,\n maxRedirects: number,\n initialNavigationMode: InitialNavigationMode,\n initialNavigationTimeout: number,\n routeResolveCodec: RouteResolveCodec,\n rejectOnError: boolean,\n): Readonly<UseRouterOptions> {\n const tabBarEntriesSnapshot = Object.freeze(\n normalizedTabBarEntries.map(path => createAbsoluteRoutePath(path)),\n )\n const routesSnapshot = Object.freeze(\n normalizedNamedRoutes.map(freezeRouteRecordRawSnapshot),\n ) as readonly RouteRecordRaw[]\n\n return Object.freeze({\n tabBarEntries: tabBarEntriesSnapshot,\n routes: routesSnapshot,\n namedRoutes: routesSnapshot,\n paramsMode,\n maxRedirects,\n initialNavigationMode,\n initialNavigationTimeout,\n parseQuery: routeResolveCodec.parseQuery,\n stringifyQuery: routeResolveCodec.stringifyQuery,\n rejectOnError,\n })\n}\n\nexport function normalizeRouteRecordMatched(\n record: RouteRecordNormalized,\n matchedPath?: string,\n): RouteRecordMatched {\n const matchedRecord: RouteRecordMatched = {\n name: record.name,\n path: createAbsoluteRoutePath(record.path),\n }\n const normalizedMatchedPath = typeof matchedPath === 'string' && matchedPath\n ? createAbsoluteRoutePath(resolvePath(matchedPath, ''))\n : undefined\n if (normalizedMatchedPath && normalizedMatchedPath !== matchedRecord.path) {\n matchedRecord.aliasPath = normalizedMatchedPath\n }\n if (record.meta !== undefined) {\n matchedRecord.meta = cloneRouteMeta(record.meta)\n }\n return matchedRecord\n}\n\nexport function cloneRouteRecordMatchedList(matched?: readonly RouteRecordMatched[]): RouteRecordMatched[] | undefined {\n if (!matched) {\n return undefined\n }\n return matched.map(record => ({\n name: record.name,\n path: record.path,\n aliasPath: record.aliasPath,\n meta: cloneRouteMeta(record.meta),\n }))\n}\n\nexport function cloneLocationQuery(query: LocationQuery): LocationQuery {\n const cloned: LocationQuery = {}\n for (const key of Object.keys(query)) {\n const value = query[key]\n cloned[key] = Array.isArray(value) ? value.slice() : value\n }\n return cloned\n}\n\nexport function cloneRouteParams(params: RouteParams): RouteParams {\n const cloned: RouteParams = {}\n for (const key of Object.keys(params)) {\n const value = params[key]\n cloned[key] = Array.isArray(value) ? value.slice() : value\n }\n return cloned\n}\n\nexport function cloneRouteLocationRedirectedFrom(\n redirectedFrom?: RouteLocationRedirectedFrom,\n): RouteLocationRedirectedFrom | undefined {\n if (!redirectedFrom) {\n return undefined\n }\n\n const cloned: RouteLocationRedirectedFrom = {\n path: redirectedFrom.path,\n fullPath: redirectedFrom.fullPath,\n query: cloneLocationQuery(redirectedFrom.query),\n hash: redirectedFrom.hash,\n params: cloneRouteParams(redirectedFrom.params),\n }\n if (redirectedFrom.name !== undefined) {\n cloned.name = redirectedFrom.name\n }\n if (redirectedFrom.meta !== undefined) {\n cloned.meta = cloneRouteMeta(redirectedFrom.meta)\n }\n if (redirectedFrom.href !== undefined) {\n cloned.href = redirectedFrom.href\n }\n if (redirectedFrom.matched !== undefined) {\n cloned.matched = cloneRouteRecordMatchedList(redirectedFrom.matched)\n }\n return cloned\n}\n\nexport function createRedirectedFromSnapshot(route: RouteLocationNormalizedLoaded): RouteLocationRedirectedFrom {\n const snapshot: RouteLocationRedirectedFrom = {\n path: route.path,\n fullPath: route.fullPath,\n query: cloneLocationQuery(route.query),\n hash: route.hash,\n params: cloneRouteParams(route.params),\n }\n if (route.name !== undefined) {\n snapshot.name = route.name\n }\n if (route.meta !== undefined) {\n snapshot.meta = cloneRouteMeta(route.meta)\n }\n if (route.href !== undefined) {\n snapshot.href = route.href\n }\n if (route.matched !== undefined) {\n snapshot.matched = cloneRouteRecordMatchedList(route.matched)\n }\n return snapshot\n}\n\nexport function snapshotRouteLocation(route: RouteLocationNormalizedLoaded): RouteLocationNormalizedLoaded {\n const snapshot: RouteLocationNormalizedLoaded = {\n path: route.path,\n fullPath: route.fullPath,\n query: cloneLocationQuery(route.query),\n hash: route.hash,\n params: cloneRouteParams(route.params),\n }\n if (route.meta !== undefined) {\n snapshot.meta = cloneRouteMeta(route.meta)\n }\n if (route.href !== undefined) {\n snapshot.href = route.href\n }\n if (route.matched !== undefined) {\n snapshot.matched = cloneRouteRecordMatchedList(route.matched)\n }\n if (route.redirectedFrom !== undefined) {\n snapshot.redirectedFrom = cloneRouteLocationRedirectedFrom(route.redirectedFrom)\n }\n if (route.name !== undefined) {\n snapshot.name = route.name\n }\n return snapshot\n}\n\nexport function createNativeRouteUrl(\n target: RouteLocationNormalizedLoaded,\n queryStringifier: RouteQueryStringifier = stringifyQuery,\n): string {\n const basePath = createAbsoluteRoutePath(target.path)\n const queryString = queryStringifier(target.query)\n return queryString ? `${basePath}?${queryString}` : basePath\n}\n\nexport function hasLocationQuery(query: LocationQuery): boolean {\n return Object.keys(query).length > 0\n}\n"],"mappings":"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"}
@@ -2,48 +2,12 @@ import { callHookList } from "../../hooks/base.mjs";
2
2
  import { bindCurrentPageInstance, ensureMiniProgramGlobalPatched, ensurePageShareMenus, releaseCurrentPageInstance, resolvePageOptions } from "./lifecycle/platform.mjs";
3
3
  import { scheduleTemplateRefUpdate } from "../../templateRefs.mjs";
4
4
  import { enableDeferredSetData, mountRuntimeInstance, setRuntimeSetDataVisibility, teardownRuntimeInstance } from "../runtimeInstance.mjs";
5
- import { getInitialNavigationRunner } from "../../../router/initialNavigation.mjs";
6
- import { isNavigationFailure } from "../../../router/navigationCore.mjs";
5
+ import { cancelInitialNavigation, ensureInitialNavigation } from "../../../router/initialNavigation.mjs";
7
6
  import { notifyRouteStateSync } from "../../../router/routeSync.mjs";
8
7
  import { attachOptionalPageLifecycleHooks } from "./lifecycle/optionalHooks.mjs";
9
8
  import { WEVU_ON_LOAD_CALLED_KEY, WEVU_READY_CALLED_KEY, WEVU_ROUTE_DONE_CALLED_KEY } from "@weapp-core/constants";
10
9
 
11
10
  //#region src/runtime/register/component/lifecycle.ts
12
- const INITIAL_NAVIGATION_PROMISE_KEY = Symbol("wevu.initialNavigationPromise");
13
- const INITIAL_NAVIGATION_START_KEY = Symbol("wevu.startInitialNavigation");
14
- function getInitialNavigationPromise(instance) {
15
- return instance[INITIAL_NAVIGATION_PROMISE_KEY];
16
- }
17
- function ensureInitialNavigation(instance, query, options = {}) {
18
- const existing = getInitialNavigationPromise(instance);
19
- if (existing) {
20
- if (options.start !== false) {
21
- var _INITIAL_NAVIGATION_S;
22
- (_INITIAL_NAVIGATION_S = instance[INITIAL_NAVIGATION_START_KEY]) === null || _INITIAL_NAVIGATION_S === void 0 || _INITIAL_NAVIGATION_S.call(instance, query);
23
- }
24
- return existing;
25
- }
26
- const initialNavigationRunner = getInitialNavigationRunner();
27
- if (!initialNavigationRunner) return;
28
- let resolveInitialNavigation;
29
- let rejectInitialNavigation;
30
- const initialNavigationPromise = new Promise((resolve, reject) => {
31
- resolveInitialNavigation = resolve;
32
- rejectInitialNavigation = reject;
33
- });
34
- instance[INITIAL_NAVIGATION_PROMISE_KEY] = initialNavigationPromise;
35
- let started = false;
36
- instance[INITIAL_NAVIGATION_START_KEY] = (startQuery) => {
37
- if (started) return;
38
- started = true;
39
- initialNavigationRunner(instance, startQuery !== null && startQuery !== void 0 ? startQuery : query).then((result) => {
40
- const shouldMount = !isNavigationFailure(result);
41
- resolveInitialNavigation(shouldMount);
42
- }, rejectInitialNavigation);
43
- };
44
- if (options.start !== false) instance[INITIAL_NAVIGATION_START_KEY](query);
45
- return initialNavigationPromise;
46
- }
47
11
  function createPageLifecycleHooks(options) {
48
12
  const { runtimeApp, watch, setup, userOnLoad, userOnUnload, userOnShow, userOnHide, userOnReady, isPage, enableOnSaveExitState, enableOnPullDownRefresh, enableOnReachBottom, enableOnPageScroll, enableOnRouteDone, enableOnRouteDoneFallback, enableOnTabItemTap, enableOnResize, enableOnShareAppMessage, enableOnShareTimeline, enableOnAddToFavorites, syncWevuPropsFromValues, effectiveOnSaveExitState, effectiveOnPullDownRefresh, effectiveOnReachBottom, effectiveOnPageScroll, effectiveOnRouteDone, effectiveOnTabItemTap, effectiveOnResize, effectiveOnShareAppMessage, effectiveOnShareTimeline, effectiveOnAddToFavorites, hasHook } = options;
49
13
  const flushPageSnapshotIfPossible = (target) => {
@@ -67,16 +31,14 @@ function createPageLifecycleHooks(options) {
67
31
  callHookList(this, "onLoad", args);
68
32
  if (typeof userOnLoad === "function") return userOnLoad.apply(this, args.length ? args : [pageOptions]);
69
33
  };
70
- const initialNavigationPromise = isPage ? ensureInitialNavigation(this, args[0]) : void 0;
71
- if (initialNavigationPromise) {
72
- initialNavigationPromise.then((shouldMount) => {
73
- if (shouldMount) mountPage();
74
- }, () => {});
75
- return initialNavigationPromise;
76
- }
34
+ const initialNavigationPromise = isPage ? ensureInitialNavigation(this, args[0], { onComplete: (shouldMount) => {
35
+ if (shouldMount) mountPage();
36
+ } }) : void 0;
37
+ if (initialNavigationPromise) return initialNavigationPromise;
77
38
  return mountPage();
78
39
  },
79
40
  onUnload(...args) {
41
+ cancelInitialNavigation(this);
80
42
  if (isPage) releaseCurrentPageInstance(this);
81
43
  teardownRuntimeInstance(this);
82
44
  if (typeof userOnUnload === "function") return userOnUnload.apply(this, args);
@@ -133,17 +95,13 @@ function createPageLifecycleHooks(options) {
133
95
  callHookList(this, "onReady", args);
134
96
  if (typeof userOnReady === "function") userOnReady.apply(this, args);
135
97
  };
136
- const initialNavigationPromise = getInitialNavigationPromise(this);
137
- const callReadyHooksAfterInitialNavigation = () => {
138
- if (initialNavigationPromise) {
139
- initialNavigationPromise.then((shouldMount) => {
140
- if (shouldMount) callReadyHooks();
141
- }, () => {});
142
- return;
98
+ const scheduleReadyHooks = () => scheduleTemplateRefUpdate(this, callReadyHooks);
99
+ if (!(isPage ? ensureInitialNavigation(this, void 0, {
100
+ start: false,
101
+ onComplete: (shouldMount) => {
102
+ if (shouldMount) scheduleReadyHooks();
143
103
  }
144
- callReadyHooks();
145
- };
146
- scheduleTemplateRefUpdate(this, callReadyHooksAfterInitialNavigation);
104
+ }) : void 0)) scheduleReadyHooks();
147
105
  return;
148
106
  }
149
107
  if (typeof userOnReady === "function") return userOnReady.apply(this, args);
@@ -176,5 +134,5 @@ function createPageLifecycleHooks(options) {
176
134
  }
177
135
 
178
136
  //#endregion
179
- export { createPageLifecycleHooks, ensureInitialNavigation, getInitialNavigationPromise };
137
+ export { createPageLifecycleHooks };
180
138
  //# sourceMappingURL=lifecycle.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle.mjs","names":[],"sources":["../../../../../src/runtime/register/component/lifecycle.ts"],"sourcesContent":["import type { LocationQueryRaw } from '../../../router/types'\nimport type { MiniProgramPageLike } from '../../../routerInternal/shared'\nimport type { ComponentPropsOptions, ComputedDefinitions, DefineComponentOptions, InternalRuntimeState, MethodDefinitions, RuntimeApp } from '../../types'\nimport type { WatchMap } from '../watch'\nimport {\n WEVU_ON_LOAD_CALLED_KEY,\n WEVU_READY_CALLED_KEY,\n WEVU_ROUTE_DONE_CALLED_KEY,\n} from '@weapp-core/constants'\nimport { getInitialNavigationRunner } from '../../../router/initialNavigation'\nimport { isNavigationFailure } from '../../../router/navigationCore'\nimport { notifyRouteStateSync } from '../../../router/routeSync'\nimport { callHookList } from '../../hooks'\nimport { scheduleTemplateRefUpdate } from '../../templateRefs'\nimport { enableDeferredSetData, mountRuntimeInstance, setRuntimeSetDataVisibility, teardownRuntimeInstance } from '../runtimeInstance'\nimport { attachOptionalPageLifecycleHooks } from './lifecycle/optionalHooks'\nimport { bindCurrentPageInstance, ensureMiniProgramGlobalPatched, ensurePageShareMenus, releaseCurrentPageInstance, resolvePageOptions } from './lifecycle/platform'\n\nconst INITIAL_NAVIGATION_PROMISE_KEY = Symbol('wevu.initialNavigationPromise')\nconst INITIAL_NAVIGATION_START_KEY = Symbol('wevu.startInitialNavigation')\n\nexport function getInitialNavigationPromise(instance: InternalRuntimeState) {\n return (instance as any)[INITIAL_NAVIGATION_PROMISE_KEY] as Promise<boolean> | undefined\n}\n\nexport function ensureInitialNavigation(\n instance: InternalRuntimeState,\n query?: LocationQueryRaw,\n options: { start?: boolean } = {},\n) {\n const existing = getInitialNavigationPromise(instance)\n if (existing) {\n if (options.start !== false) {\n ;(instance as any)[INITIAL_NAVIGATION_START_KEY]?.(query)\n }\n return existing\n }\n const initialNavigationRunner = getInitialNavigationRunner()\n if (!initialNavigationRunner) {\n return undefined\n }\n let resolveInitialNavigation!: (shouldMount: boolean) => void\n let rejectInitialNavigation!: (error: unknown) => void\n const initialNavigationPromise = new Promise<boolean>((resolve, reject) => {\n resolveInitialNavigation = resolve\n rejectInitialNavigation = reject\n })\n ;(instance as any)[INITIAL_NAVIGATION_PROMISE_KEY] = initialNavigationPromise\n let started = false\n ;(instance as any)[INITIAL_NAVIGATION_START_KEY] = (startQuery?: LocationQueryRaw) => {\n if (started) {\n return\n }\n started = true\n void initialNavigationRunner(instance as MiniProgramPageLike, startQuery ?? query)\n .then((result) => {\n const shouldMount = !isNavigationFailure(result)\n resolveInitialNavigation(shouldMount)\n }, rejectInitialNavigation)\n }\n if (options.start !== false) {\n ;(instance as any)[INITIAL_NAVIGATION_START_KEY](query)\n }\n return initialNavigationPromise\n}\n\nexport function createPageLifecycleHooks<D extends object, C extends ComputedDefinitions, M extends MethodDefinitions>(options: {\n runtimeApp: RuntimeApp<D, C, M>\n watch: WatchMap | undefined\n setup: DefineComponentOptions<ComponentPropsOptions, D, C, M>['setup']\n userOnLoad?: any\n userOnUnload?: any\n userOnShow?: any\n userOnHide?: any\n userOnReady?: any\n isPage: boolean\n enableOnSaveExitState: boolean\n enableOnPullDownRefresh: boolean\n enableOnReachBottom: boolean\n enableOnPageScroll: boolean\n enableOnRouteDone: boolean\n enableOnRouteDoneFallback: boolean\n enableOnTabItemTap: boolean\n enableOnResize: boolean\n enableOnShareAppMessage: boolean\n enableOnShareTimeline: boolean\n enableOnAddToFavorites: boolean\n syncWevuPropsFromValues?: (instance: InternalRuntimeState, values: Record<string, unknown> | undefined) => void\n effectiveOnSaveExitState: (...args: any[]) => any\n effectiveOnPullDownRefresh: (...args: any[]) => any\n effectiveOnReachBottom: (...args: any[]) => any\n effectiveOnPageScroll: (...args: any[]) => any\n effectiveOnRouteDone: (...args: any[]) => any\n effectiveOnTabItemTap: (...args: any[]) => any\n effectiveOnResize: (...args: any[]) => any\n effectiveOnShareAppMessage: (...args: any[]) => any\n effectiveOnShareTimeline: (...args: any[]) => any\n effectiveOnAddToFavorites: (...args: any[]) => any\n hasHook: (target: InternalRuntimeState, name: string) => boolean\n}) {\n const {\n runtimeApp,\n watch,\n setup,\n userOnLoad,\n userOnUnload,\n userOnShow,\n userOnHide,\n userOnReady,\n isPage,\n enableOnSaveExitState,\n enableOnPullDownRefresh,\n enableOnReachBottom,\n enableOnPageScroll,\n enableOnRouteDone,\n enableOnRouteDoneFallback,\n enableOnTabItemTap,\n enableOnResize,\n enableOnShareAppMessage,\n enableOnShareTimeline,\n enableOnAddToFavorites,\n syncWevuPropsFromValues,\n effectiveOnSaveExitState,\n effectiveOnPullDownRefresh,\n effectiveOnReachBottom,\n effectiveOnPageScroll,\n effectiveOnRouteDone,\n effectiveOnTabItemTap,\n effectiveOnResize,\n effectiveOnShareAppMessage,\n effectiveOnShareTimeline,\n effectiveOnAddToFavorites,\n hasHook,\n } = options\n const flushPageSnapshotIfPossible = (target: InternalRuntimeState) => {\n ;(target as any).__wevu?.__wevu_flushSetupSnapshotSync?.()\n }\n\n const pageLifecycleHooks: Record<string, any> = {\n onLoad(this: InternalRuntimeState, ...args: any[]) {\n if ((this as any)[WEVU_ON_LOAD_CALLED_KEY]) {\n return\n }\n ;(this as any)[WEVU_ON_LOAD_CALLED_KEY] = true\n const mountPage = () => {\n mountRuntimeInstance(this, runtimeApp, watch, setup)\n const pageOptions = args[0] && typeof args[0] === 'object'\n ? args[0]\n : resolvePageOptions(this)\n syncWevuPropsFromValues?.(this, pageOptions)\n flushPageSnapshotIfPossible(this)\n enableDeferredSetData(this)\n if (isPage) {\n ensurePageShareMenus({\n enableOnShareAppMessage,\n enableOnShareTimeline,\n })\n }\n callHookList(this, 'onLoad', args)\n if (typeof userOnLoad === 'function') {\n return userOnLoad.apply(this, args.length ? args : [pageOptions])\n }\n }\n\n const initialNavigationPromise = isPage\n ? ensureInitialNavigation(this, args[0])\n : undefined\n if (initialNavigationPromise) {\n void initialNavigationPromise.then((shouldMount) => {\n if (shouldMount) {\n mountPage()\n }\n }, () => {})\n return initialNavigationPromise\n }\n return mountPage()\n },\n onUnload(this: InternalRuntimeState, ...args: any[]) {\n if (isPage) {\n releaseCurrentPageInstance(this)\n }\n teardownRuntimeInstance(this)\n if (typeof userOnUnload === 'function') {\n return userOnUnload.apply(this, args)\n }\n },\n onShow(this: InternalRuntimeState, ...args: any[]) {\n if (isPage) {\n ensureMiniProgramGlobalPatched()\n bindCurrentPageInstance(this)\n if (!(this as any)[WEVU_ON_LOAD_CALLED_KEY]) {\n pageLifecycleHooks.onLoad.call(this, resolvePageOptions(this))\n }\n syncWevuPropsFromValues?.(this, resolvePageOptions(this))\n flushPageSnapshotIfPossible(this)\n ensurePageShareMenus({\n enableOnShareAppMessage,\n enableOnShareTimeline,\n })\n ;(this as any)[WEVU_ROUTE_DONE_CALLED_KEY] = false\n }\n setRuntimeSetDataVisibility(this, true)\n if (isPage) {\n notifyRouteStateSync({\n page: this as MiniProgramPageLike,\n source: 'page',\n })\n }\n callHookList(this, 'onShow', args)\n if (typeof userOnShow === 'function') {\n return userOnShow.apply(this, args)\n }\n },\n onHide(this: InternalRuntimeState, ...args: any[]) {\n if (isPage) {\n releaseCurrentPageInstance(this)\n }\n setRuntimeSetDataVisibility(this, false)\n callHookList(this, 'onHide', args)\n if (typeof userOnHide === 'function') {\n return userOnHide.apply(this, args)\n }\n },\n onReady(this: InternalRuntimeState, ...args: any[]) {\n if (isPage) {\n if (!(this as any)[WEVU_ON_LOAD_CALLED_KEY]) {\n pageLifecycleHooks.onLoad.call(this, resolvePageOptions(this))\n }\n syncWevuPropsFromValues?.(this, resolvePageOptions(this))\n flushPageSnapshotIfPossible(this)\n ensurePageShareMenus({\n enableOnShareAppMessage,\n enableOnShareTimeline,\n })\n }\n // 兼容:部分平台/模式可能触发 Page.onReady,而非 Component lifetimes.ready\n if (!(this as any)[WEVU_READY_CALLED_KEY]) {\n ;(this as any)[WEVU_READY_CALLED_KEY] = true\n // 部分 IDE/基础库在首屏场景可能不派发 routeDone,这里做一次延迟兜底。\n // 若平台随后派发了真实 routeDone,会因为 __wevuRouteDoneCalled 判定而跳过补发。\n if (isPage && enableOnRouteDone && enableOnRouteDoneFallback) {\n // eslint-disable-next-line ts/no-this-alias\n const current = this\n setTimeout(() => {\n if (!(current as any)[WEVU_ROUTE_DONE_CALLED_KEY]) {\n pageLifecycleHooks.onRouteDone?.call(current)\n }\n }, 0)\n }\n const callReadyHooks = () => {\n callHookList(this, 'onReady', args)\n if (typeof userOnReady === 'function') {\n userOnReady.apply(this, args)\n }\n }\n const initialNavigationPromise = getInitialNavigationPromise(this)\n const callReadyHooksAfterInitialNavigation = () => {\n if (initialNavigationPromise) {\n void initialNavigationPromise.then((shouldMount) => {\n if (shouldMount) {\n callReadyHooks()\n }\n }, () => {})\n return\n }\n callReadyHooks()\n }\n scheduleTemplateRefUpdate(this, callReadyHooksAfterInitialNavigation)\n return\n }\n if (typeof userOnReady === 'function') {\n return userOnReady.apply(this, args)\n }\n },\n }\n\n attachOptionalPageLifecycleHooks(pageLifecycleHooks, {\n enableOnSaveExitState,\n enableOnPullDownRefresh,\n enableOnReachBottom,\n enableOnPageScroll,\n enableOnRouteDone,\n enableOnTabItemTap,\n enableOnResize,\n enableOnShareAppMessage,\n enableOnShareTimeline,\n enableOnAddToFavorites,\n effectiveOnSaveExitState,\n effectiveOnPullDownRefresh,\n effectiveOnReachBottom,\n effectiveOnPageScroll,\n effectiveOnRouteDone,\n effectiveOnTabItemTap,\n effectiveOnResize,\n effectiveOnShareAppMessage,\n effectiveOnShareTimeline,\n effectiveOnAddToFavorites,\n hasHook,\n })\n\n return pageLifecycleHooks\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"lifecycle.mjs","names":[],"sources":["../../../../../src/runtime/register/component/lifecycle.ts"],"sourcesContent":["import type { MiniProgramPageLike } from '../../../routerInternal/shared'\nimport type { ComponentPropsOptions, ComputedDefinitions, DefineComponentOptions, InternalRuntimeState, MethodDefinitions, RuntimeApp } from '../../types'\nimport type { WatchMap } from '../watch'\nimport {\n WEVU_ON_LOAD_CALLED_KEY,\n WEVU_READY_CALLED_KEY,\n WEVU_ROUTE_DONE_CALLED_KEY,\n} from '@weapp-core/constants'\nimport {\n cancelInitialNavigation,\n ensureInitialNavigation,\n} from '../../../router/initialNavigation'\nimport { notifyRouteStateSync } from '../../../router/routeSync'\nimport { callHookList } from '../../hooks'\nimport { scheduleTemplateRefUpdate } from '../../templateRefs'\nimport { enableDeferredSetData, mountRuntimeInstance, setRuntimeSetDataVisibility, teardownRuntimeInstance } from '../runtimeInstance'\nimport { attachOptionalPageLifecycleHooks } from './lifecycle/optionalHooks'\nimport { bindCurrentPageInstance, ensureMiniProgramGlobalPatched, ensurePageShareMenus, releaseCurrentPageInstance, resolvePageOptions } from './lifecycle/platform'\n\nexport function createPageLifecycleHooks<D extends object, C extends ComputedDefinitions, M extends MethodDefinitions>(options: {\n runtimeApp: RuntimeApp<D, C, M>\n watch: WatchMap | undefined\n setup: DefineComponentOptions<ComponentPropsOptions, D, C, M>['setup']\n userOnLoad?: any\n userOnUnload?: any\n userOnShow?: any\n userOnHide?: any\n userOnReady?: any\n isPage: boolean\n enableOnSaveExitState: boolean\n enableOnPullDownRefresh: boolean\n enableOnReachBottom: boolean\n enableOnPageScroll: boolean\n enableOnRouteDone: boolean\n enableOnRouteDoneFallback: boolean\n enableOnTabItemTap: boolean\n enableOnResize: boolean\n enableOnShareAppMessage: boolean\n enableOnShareTimeline: boolean\n enableOnAddToFavorites: boolean\n syncWevuPropsFromValues?: (instance: InternalRuntimeState, values: Record<string, unknown> | undefined) => void\n effectiveOnSaveExitState: (...args: any[]) => any\n effectiveOnPullDownRefresh: (...args: any[]) => any\n effectiveOnReachBottom: (...args: any[]) => any\n effectiveOnPageScroll: (...args: any[]) => any\n effectiveOnRouteDone: (...args: any[]) => any\n effectiveOnTabItemTap: (...args: any[]) => any\n effectiveOnResize: (...args: any[]) => any\n effectiveOnShareAppMessage: (...args: any[]) => any\n effectiveOnShareTimeline: (...args: any[]) => any\n effectiveOnAddToFavorites: (...args: any[]) => any\n hasHook: (target: InternalRuntimeState, name: string) => boolean\n}) {\n const {\n runtimeApp,\n watch,\n setup,\n userOnLoad,\n userOnUnload,\n userOnShow,\n userOnHide,\n userOnReady,\n isPage,\n enableOnSaveExitState,\n enableOnPullDownRefresh,\n enableOnReachBottom,\n enableOnPageScroll,\n enableOnRouteDone,\n enableOnRouteDoneFallback,\n enableOnTabItemTap,\n enableOnResize,\n enableOnShareAppMessage,\n enableOnShareTimeline,\n enableOnAddToFavorites,\n syncWevuPropsFromValues,\n effectiveOnSaveExitState,\n effectiveOnPullDownRefresh,\n effectiveOnReachBottom,\n effectiveOnPageScroll,\n effectiveOnRouteDone,\n effectiveOnTabItemTap,\n effectiveOnResize,\n effectiveOnShareAppMessage,\n effectiveOnShareTimeline,\n effectiveOnAddToFavorites,\n hasHook,\n } = options\n const flushPageSnapshotIfPossible = (target: InternalRuntimeState) => {\n ;(target as any).__wevu?.__wevu_flushSetupSnapshotSync?.()\n }\n\n const pageLifecycleHooks: Record<string, any> = {\n onLoad(this: InternalRuntimeState, ...args: any[]) {\n if ((this as any)[WEVU_ON_LOAD_CALLED_KEY]) {\n return\n }\n ;(this as any)[WEVU_ON_LOAD_CALLED_KEY] = true\n const mountPage = () => {\n mountRuntimeInstance(this, runtimeApp, watch, setup)\n const pageOptions = args[0] && typeof args[0] === 'object'\n ? args[0]\n : resolvePageOptions(this)\n syncWevuPropsFromValues?.(this, pageOptions)\n flushPageSnapshotIfPossible(this)\n enableDeferredSetData(this)\n if (isPage) {\n ensurePageShareMenus({\n enableOnShareAppMessage,\n enableOnShareTimeline,\n })\n }\n callHookList(this, 'onLoad', args)\n if (typeof userOnLoad === 'function') {\n return userOnLoad.apply(this, args.length ? args : [pageOptions])\n }\n }\n\n const initialNavigationPromise = isPage\n ? ensureInitialNavigation(this as MiniProgramPageLike, args[0], {\n onComplete: (shouldMount) => {\n if (shouldMount) {\n mountPage()\n }\n },\n })\n : undefined\n if (initialNavigationPromise) {\n return initialNavigationPromise\n }\n return mountPage()\n },\n onUnload(this: InternalRuntimeState, ...args: any[]) {\n cancelInitialNavigation(this as MiniProgramPageLike)\n if (isPage) {\n releaseCurrentPageInstance(this)\n }\n teardownRuntimeInstance(this)\n if (typeof userOnUnload === 'function') {\n return userOnUnload.apply(this, args)\n }\n },\n onShow(this: InternalRuntimeState, ...args: any[]) {\n if (isPage) {\n ensureMiniProgramGlobalPatched()\n bindCurrentPageInstance(this)\n if (!(this as any)[WEVU_ON_LOAD_CALLED_KEY]) {\n pageLifecycleHooks.onLoad.call(this, resolvePageOptions(this))\n }\n syncWevuPropsFromValues?.(this, resolvePageOptions(this))\n flushPageSnapshotIfPossible(this)\n ensurePageShareMenus({\n enableOnShareAppMessage,\n enableOnShareTimeline,\n })\n ;(this as any)[WEVU_ROUTE_DONE_CALLED_KEY] = false\n }\n setRuntimeSetDataVisibility(this, true)\n if (isPage) {\n notifyRouteStateSync({\n page: this as MiniProgramPageLike,\n source: 'page',\n })\n }\n callHookList(this, 'onShow', args)\n if (typeof userOnShow === 'function') {\n return userOnShow.apply(this, args)\n }\n },\n onHide(this: InternalRuntimeState, ...args: any[]) {\n if (isPage) {\n releaseCurrentPageInstance(this)\n }\n setRuntimeSetDataVisibility(this, false)\n callHookList(this, 'onHide', args)\n if (typeof userOnHide === 'function') {\n return userOnHide.apply(this, args)\n }\n },\n onReady(this: InternalRuntimeState, ...args: any[]) {\n if (isPage) {\n if (!(this as any)[WEVU_ON_LOAD_CALLED_KEY]) {\n pageLifecycleHooks.onLoad.call(this, resolvePageOptions(this))\n }\n syncWevuPropsFromValues?.(this, resolvePageOptions(this))\n flushPageSnapshotIfPossible(this)\n ensurePageShareMenus({\n enableOnShareAppMessage,\n enableOnShareTimeline,\n })\n }\n // 兼容:部分平台/模式可能触发 Page.onReady,而非 Component lifetimes.ready\n if (!(this as any)[WEVU_READY_CALLED_KEY]) {\n ;(this as any)[WEVU_READY_CALLED_KEY] = true\n // 部分 IDE/基础库在首屏场景可能不派发 routeDone,这里做一次延迟兜底。\n // 若平台随后派发了真实 routeDone,会因为 __wevuRouteDoneCalled 判定而跳过补发。\n if (isPage && enableOnRouteDone && enableOnRouteDoneFallback) {\n // eslint-disable-next-line ts/no-this-alias\n const current = this\n setTimeout(() => {\n if (!(current as any)[WEVU_ROUTE_DONE_CALLED_KEY]) {\n pageLifecycleHooks.onRouteDone?.call(current)\n }\n }, 0)\n }\n const callReadyHooks = () => {\n callHookList(this, 'onReady', args)\n if (typeof userOnReady === 'function') {\n userOnReady.apply(this, args)\n }\n }\n const scheduleReadyHooks = () => scheduleTemplateRefUpdate(this, callReadyHooks)\n const initialNavigationPromise = isPage\n ? ensureInitialNavigation(this as MiniProgramPageLike, undefined, {\n start: false,\n onComplete: (shouldMount) => {\n if (shouldMount) {\n scheduleReadyHooks()\n }\n },\n })\n : undefined\n if (!initialNavigationPromise) {\n scheduleReadyHooks()\n }\n return\n }\n if (typeof userOnReady === 'function') {\n return userOnReady.apply(this, args)\n }\n },\n }\n\n attachOptionalPageLifecycleHooks(pageLifecycleHooks, {\n enableOnSaveExitState,\n enableOnPullDownRefresh,\n enableOnReachBottom,\n enableOnPageScroll,\n enableOnRouteDone,\n enableOnTabItemTap,\n enableOnResize,\n enableOnShareAppMessage,\n enableOnShareTimeline,\n enableOnAddToFavorites,\n effectiveOnSaveExitState,\n effectiveOnPullDownRefresh,\n effectiveOnReachBottom,\n effectiveOnPageScroll,\n effectiveOnRouteDone,\n effectiveOnTabItemTap,\n effectiveOnResize,\n effectiveOnShareAppMessage,\n effectiveOnShareTimeline,\n effectiveOnAddToFavorites,\n hasHook,\n })\n\n return pageLifecycleHooks\n}\n"],"mappings":"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"}
@@ -4,7 +4,7 @@ import { resolveRuntimePageLayoutName, syncRuntimePageLayoutState } from "../../
4
4
  import { getOwnerProxy } from "../../scopedSlots.mjs";
5
5
  import { clearTemplateRefs, scheduleTemplateRefUpdate } from "../../templateRefs.mjs";
6
6
  import { enableDeferredSetData, mountRuntimeInstance, refreshRuntimeInstance, setRuntimeSetDataVisibility, teardownRuntimeInstance } from "../runtimeInstance.mjs";
7
- import { ensureInitialNavigation, getInitialNavigationPromise } from "./lifecycle.mjs";
7
+ import { ensureInitialNavigation } from "../../../router/initialNavigation.mjs";
8
8
  import { registerRuntimeLayoutHosts, unregisterRuntimeLayoutHosts } from "../../layoutBridge.mjs";
9
9
  import { registerNativeComponentDefinition } from "./registerNativeDefinition.mjs";
10
10
  import { WEAPP_VITE_STATEFUL_HMR_BRIDGE_KEY, WEVU_LAYOUT_HOST_BRIDGE_KEY, WEVU_PAGE_LAYOUT_NAME_KEY, WEVU_PAGE_LAYOUT_PROPS_KEY, WEVU_PAGE_LAYOUT_SETTER_KEY, WEVU_PUBLIC_RUNTIME_KEY, WEVU_READY_CALLED_KEY, WEVU_RESOLVE_PUBLIC_INSTANCE_METHOD, WEVU_RUNTIME_KEY, WEVU_RUNTIME_OWNER_ID_KEY, WEVU_SLOT_OWNER_ID_KEY, WEVU_TEMPLATE_REFS_KEY } from "@weapp-core/constants";
@@ -71,14 +71,12 @@ function registerComponentDefinition(options) {
71
71
  task();
72
72
  return;
73
73
  }
74
- const initialNavigationPromise = ensureInitialNavigation(instance, void 0, { start: false });
75
- if (!initialNavigationPromise) {
76
- task();
77
- return;
78
- }
79
- initialNavigationPromise.then((shouldMount) => {
80
- if (shouldMount) task();
81
- }, () => {});
74
+ if (!ensureInitialNavigation(instance, void 0, {
75
+ start: false,
76
+ onComplete: (shouldMount) => {
77
+ if (shouldMount) task();
78
+ }
79
+ })) task();
82
80
  };
83
81
  const ensureReadyRuntime = (instance) => {
84
82
  if (resolveRuntime(instance) || typeof vueLifecycles.mounted !== "function") return;
@@ -189,16 +187,15 @@ function registerComponentDefinition(options) {
189
187
  },
190
188
  ready: function ready(...args) {
191
189
  if (isPage && !this[WEVU_READY_CALLED_KEY]) {
192
- const initialNavigationPromise = ensureInitialNavigation(this, void 0, { start: true });
193
- if (initialNavigationPromise && !this.__wevuInitialNavigationReady) {
194
- initialNavigationPromise.then((shouldMount) => {
195
- if (shouldMount) {
190
+ if (ensureInitialNavigation(this, void 0, {
191
+ start: true,
192
+ onComplete: (shouldMount) => {
193
+ if (shouldMount && !this.__wevuInitialNavigationReady) {
196
194
  this.__wevuInitialNavigationReady = true;
197
195
  componentDefinition.lifetimes.ready.call(this, ...args);
198
196
  }
199
- }, () => {});
200
- return;
201
- }
197
+ }
198
+ }) && !this.__wevuInitialNavigationReady) return;
202
199
  }
203
200
  ensureReadyRuntime(this);
204
201
  if (isPage && typeof pageLifecycleHooks.onReady === "function") {
@@ -206,11 +203,12 @@ function registerComponentDefinition(options) {
206
203
  pageLifecycleHooks.onReady.call(this, ...args);
207
204
  if (!wasReadyCalled) {
208
205
  const callMounted = () => callVueLifecycle(this, "mounted", args);
209
- const initialNavigationPromise = getInitialNavigationPromise(this);
210
- if (initialNavigationPromise) initialNavigationPromise.then((shouldMount) => {
211
- if (shouldMount) callMounted();
212
- }, () => {});
213
- else callMounted();
206
+ if (!ensureInitialNavigation(this, void 0, {
207
+ start: false,
208
+ onComplete: (shouldMount) => {
209
+ if (shouldMount) callMounted();
210
+ }
211
+ })) callMounted();
214
212
  }
215
213
  if (typeof userLifetimes.ready === "function") userLifetimes.ready.apply(this, args);
216
214
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"registerDefinition.mjs","names":[],"sources":["../../../../../src/runtime/register/component/registerDefinition.ts"],"sourcesContent":["import type { LayoutHostBinding } from '../../layoutBridge'\nimport type { TemplateRefBinding } from '../../templateRefs'\nimport type {\n ComponentPropsOptions,\n ComputedDefinitions,\n DefineComponentOptions,\n InternalRuntimeState,\n MethodDefinitions,\n RuntimeApp,\n} from '../../types'\nimport type { WatchMap } from '../watch'\nimport {\n WEAPP_VITE_STATEFUL_HMR_BRIDGE_KEY,\n WEVU_LAYOUT_HOST_BRIDGE_KEY,\n WEVU_PAGE_LAYOUT_NAME_KEY,\n WEVU_PAGE_LAYOUT_PROPS_KEY,\n WEVU_PAGE_LAYOUT_SETTER_KEY,\n WEVU_PUBLIC_RUNTIME_KEY,\n WEVU_READY_CALLED_KEY,\n WEVU_RESOLVE_PUBLIC_INSTANCE_METHOD,\n WEVU_RUNTIME_KEY,\n WEVU_RUNTIME_OWNER_ID_KEY,\n WEVU_SLOT_OWNER_ID_KEY,\n WEVU_TEMPLATE_REFS_KEY,\n} from '@weapp-core/constants'\nimport { callHookList } from '../../hooks'\nimport { registerRuntimeLayoutHosts, unregisterRuntimeLayoutHosts } from '../../layoutBridge'\nimport { resolveRuntimePageLayoutName, syncRuntimePageLayoutState } from '../../pageLayout'\nimport { getMiniProgramRuntimeGlobalObject } from '../../platform'\nimport { getOwnerProxy } from '../../scopedSlots'\nimport { clearTemplateRefs, scheduleTemplateRefUpdate } from '../../templateRefs'\nimport { enableDeferredSetData, mountRuntimeInstance, refreshRuntimeInstance, setRuntimeSetDataVisibility, teardownRuntimeInstance } from '../runtimeInstance'\nimport { ensureInitialNavigation, getInitialNavigationPromise } from './lifecycle'\nimport { registerNativeComponentDefinition } from './registerNativeDefinition'\n\nfunction scheduleOwnerTemplateRefUpdate(target: InternalRuntimeState) {\n const selectOwnerComponent = (target as any).selectOwnerComponent\n if (typeof selectOwnerComponent !== 'function') {\n return\n }\n try {\n const owner = selectOwnerComponent.call(target) as InternalRuntimeState | null | undefined\n if (owner && owner !== target) {\n scheduleTemplateRefUpdate(owner)\n }\n }\n catch {\n // 宿主不支持 owner 查询时保持当前组件生命周期正常执行。\n }\n}\n\nexport function registerComponentDefinition<D extends object, C extends ComputedDefinitions, M extends MethodDefinitions>(options: {\n runtimeApp: RuntimeApp<D, C, M>\n watch: WatchMap | undefined\n setup: DefineComponentOptions<ComponentPropsOptions, D, C, M>['setup']\n restOptions: Record<string, any>\n pageLifecycleHooks: Record<string, any>\n finalObservers: Record<string, any>\n userLifetimes: Record<string, any>\n userPageLifetimes: Record<string, any>\n finalMethods: Record<string, (...args: any[]) => any>\n finalOptions: Record<string, any>\n applyExtraInstanceFields: (instance: InternalRuntimeState) => void\n templateRefs: TemplateRefBinding[] | undefined\n layoutHosts: LayoutHostBinding[] | undefined\n attachWevuPropKeys: (instance: InternalRuntimeState) => void\n setupLifecycle: 'created' | 'attached'\n syncWevuPropsFromInstance: (instance: InternalRuntimeState) => void\n syncWevuPropsFromValues: (instance: InternalRuntimeState, values: Record<string, unknown> | undefined) => void\n directPropsDerivedKeys: string[]\n isPage: boolean\n vueLifecycles: Record<string, unknown>\n getRuntimeOwnerLabel: (instance: InternalRuntimeState) => string\n registerNative?: boolean\n}) {\n const {\n runtimeApp,\n watch,\n setup,\n restOptions,\n pageLifecycleHooks,\n finalObservers,\n userLifetimes,\n userPageLifetimes,\n finalMethods,\n finalOptions,\n applyExtraInstanceFields,\n templateRefs,\n layoutHosts,\n attachWevuPropKeys,\n setupLifecycle,\n syncWevuPropsFromInstance,\n directPropsDerivedKeys,\n isPage,\n vueLifecycles,\n getRuntimeOwnerLabel,\n registerNative = true,\n } = options\n\n const resolveRuntime = (instance: InternalRuntimeState) => {\n const directRuntime = (instance as any).__wevu ?? (instance as any)[WEVU_PUBLIC_RUNTIME_KEY]\n if (directRuntime) {\n return directRuntime\n }\n const runtimeState = (instance as any).$state\n if (runtimeState && typeof runtimeState === 'object') {\n return (runtimeState as any)[WEVU_RUNTIME_KEY]\n }\n return undefined\n }\n\n const resolveLifecycleOwnerId = (instance: InternalRuntimeState) => (instance as any)[WEVU_RUNTIME_OWNER_ID_KEY]\n ?? (instance as any)[WEVU_SLOT_OWNER_ID_KEY]\n ?? (instance as any).data?.[WEVU_SLOT_OWNER_ID_KEY]\n ?? (instance as any).properties?.[WEVU_SLOT_OWNER_ID_KEY]\n\n const resolveLifecycleContext = (instance: InternalRuntimeState) => {\n const runtimeProxy = resolveRuntime(instance)?.proxy\n if (runtimeProxy) {\n return runtimeProxy\n }\n const ownerId = resolveLifecycleOwnerId(instance)\n if (typeof ownerId === 'string' && ownerId) {\n return getOwnerProxy(ownerId) ?? instance\n }\n return instance\n }\n\n const mountMissingRuntime = (instance: InternalRuntimeState) => {\n const existing = resolveRuntime(instance)\n if (existing) {\n return { runtime: existing, mounted: false }\n }\n applyExtraInstanceFields(instance)\n attachWevuPropKeys(instance)\n mountRuntimeInstance(instance, runtimeApp, watch, setup, {\n deferSetData: true,\n snapshotOmitKeys: directPropsDerivedKeys,\n })\n syncWevuPropsFromInstance(instance)\n enableDeferredSetData(instance)\n return { runtime: resolveRuntime(instance), mounted: true }\n }\n\n const callVueLifecycle = (instance: InternalRuntimeState, name: string, args: any[]) => {\n const hook = vueLifecycles[name]\n if (typeof hook === 'function') {\n return hook.apply(resolveLifecycleContext(instance), args)\n }\n return undefined\n }\n\n const deferPageUntilNavigation = (instance: InternalRuntimeState, task: () => void) => {\n if (!isPage) {\n task()\n return\n }\n const initialNavigationPromise = ensureInitialNavigation(instance, undefined, { start: false })\n if (!initialNavigationPromise) {\n task()\n return\n }\n void initialNavigationPromise.then((shouldMount) => {\n if (shouldMount) {\n task()\n }\n }, () => {})\n }\n\n const ensureReadyRuntime = (instance: InternalRuntimeState) => {\n if (resolveRuntime(instance) || typeof vueLifecycles.mounted !== 'function') {\n return\n }\n const result = mountMissingRuntime(instance)\n if (result.mounted) {\n callVueLifecycle(instance, 'created', [])\n callVueLifecycle(instance, 'beforeMount', [])\n }\n }\n\n const pageMethodBridges: Record<string, (...args: any[]) => any> = {}\n const attachRuntimeLayoutHosts = (instance: InternalRuntimeState) => {\n if (!Array.isArray(layoutHosts) || !layoutHosts.length) {\n return\n }\n if ((instance as any)[WEVU_LAYOUT_HOST_BRIDGE_KEY]) {\n return\n }\n const bridge = registerRuntimeLayoutHosts(layoutHosts, instance)\n if (bridge) {\n instance[WEVU_LAYOUT_HOST_BRIDGE_KEY] = bridge\n }\n }\n const attachPageLayoutSetter = (instance: InternalRuntimeState) => {\n if (!isPage) {\n return\n }\n instance[WEVU_PAGE_LAYOUT_SETTER_KEY] = (layout: string | false, props?: Record<string, any>) => {\n const runtimeState = instance.__wevu?.state as Record<string, any> | undefined\n if (!runtimeState || typeof runtimeState !== 'object') {\n return\n }\n runtimeState[WEVU_PAGE_LAYOUT_NAME_KEY] = resolveRuntimePageLayoutName(layout)\n const nextProps = layout === false ? {} : (props ?? {})\n runtimeState[WEVU_PAGE_LAYOUT_PROPS_KEY] = nextProps\n syncRuntimePageLayoutState(instance as Record<string, any>, layout, nextProps)\n }\n }\n if (isPage) {\n const methodBridgeHookNames = ['onPullDownRefresh', 'onReachBottom', 'onShareAppMessage', 'onShareTimeline', 'onAddToFavorites']\n for (const hookName of methodBridgeHookNames) {\n const pageHook = (pageLifecycleHooks as any)[hookName]\n if (typeof pageHook !== 'function') {\n continue\n }\n if (typeof (finalMethods as any)[hookName] === 'function') {\n continue\n }\n pageMethodBridges[hookName] = function pageMethodBridge(this: InternalRuntimeState, ...args: any[]) {\n return pageHook.apply(this, args)\n }\n }\n }\n\n const componentDefinition = {\n ...restOptions,\n ...(isPage ? pageLifecycleHooks : {}),\n observers: finalObservers,\n lifetimes: {\n ...userLifetimes,\n created: function created(this: InternalRuntimeState, ...args: any[]) {\n applyExtraInstanceFields(this)\n if (Array.isArray(templateRefs) && templateRefs.length) {\n Object.defineProperty(this, WEVU_TEMPLATE_REFS_KEY, {\n value: templateRefs,\n configurable: true,\n enumerable: false,\n writable: false,\n })\n }\n attachWevuPropKeys(this)\n const runCreated = () => {\n callVueLifecycle(this, 'beforeCreate', args)\n if (setupLifecycle === 'created') {\n try {\n mountRuntimeInstance(this, runtimeApp, watch, setup, {\n deferSetData: true,\n snapshotOmitKeys: directPropsDerivedKeys,\n })\n }\n catch (error) {\n const label = getRuntimeOwnerLabel(this)\n throw new Error(`[wevu] mount runtime failed in created (${label}): ${error instanceof Error ? error.message : String(error)}`)\n }\n syncWevuPropsFromInstance(this)\n attachPageLayoutSetter(this)\n }\n if (typeof (userLifetimes as any).created === 'function') {\n ;(userLifetimes as any).created.apply(this, args)\n }\n }\n deferPageUntilNavigation(this, runCreated)\n },\n moved: function moved(this: InternalRuntimeState, ...args: any[]) {\n callHookList(this, 'onMoved', args)\n if (typeof (userLifetimes as any).moved === 'function') {\n ;(userLifetimes as any).moved.apply(this, args)\n }\n },\n attached: function attached(this: InternalRuntimeState, ...args: any[]) {\n applyExtraInstanceFields(this)\n if (Array.isArray(templateRefs) && templateRefs.length && !(this as any)[WEVU_TEMPLATE_REFS_KEY]) {\n Object.defineProperty(this, WEVU_TEMPLATE_REFS_KEY, {\n value: templateRefs,\n configurable: true,\n enumerable: false,\n writable: false,\n })\n }\n attachWevuPropKeys(this)\n deferPageUntilNavigation(this, () => {\n if (setupLifecycle !== 'created' || !(this as any).__wevu) {\n try {\n mountRuntimeInstance(this, runtimeApp, watch, setup, {\n deferSetData: true,\n snapshotOmitKeys: directPropsDerivedKeys,\n })\n }\n catch (error) {\n const label = getRuntimeOwnerLabel(this)\n throw new Error(`[wevu] mount runtime failed in attached (${label}): ${error instanceof Error ? error.message : String(error)}`)\n }\n }\n syncWevuPropsFromInstance(this)\n callVueLifecycle(this, 'created', args)\n callVueLifecycle(this, 'beforeMount', args)\n attachPageLayoutSetter(this)\n attachRuntimeLayoutHosts(this)\n enableDeferredSetData(this)\n callHookList(this, 'onAttached', args)\n if (typeof (userLifetimes as any).attached === 'function') {\n ;(userLifetimes as any).attached.apply(this, args)\n }\n })\n },\n ready: function ready(this: InternalRuntimeState, ...args: any[]) {\n if (isPage && !(this as any)[WEVU_READY_CALLED_KEY]) {\n const initialNavigationPromise = ensureInitialNavigation(this, undefined, { start: true })\n if (initialNavigationPromise && !(this as any).__wevuInitialNavigationReady) {\n void initialNavigationPromise.then((shouldMount) => {\n if (shouldMount) {\n ;(this as any).__wevuInitialNavigationReady = true\n componentDefinition.lifetimes.ready.call(this, ...args)\n }\n }, () => {})\n return\n }\n }\n ensureReadyRuntime(this)\n if (isPage && typeof (pageLifecycleHooks as any).onReady === 'function') {\n const wasReadyCalled = Boolean((this as any)[WEVU_READY_CALLED_KEY])\n ;(pageLifecycleHooks as any).onReady.call(this, ...args)\n if (!wasReadyCalled) {\n const callMounted = () => callVueLifecycle(this, 'mounted', args)\n const initialNavigationPromise = getInitialNavigationPromise(this)\n if (initialNavigationPromise) {\n void initialNavigationPromise.then((shouldMount) => {\n if (shouldMount) {\n callMounted()\n }\n }, () => {})\n }\n else {\n callMounted()\n }\n }\n if (typeof (userLifetimes as any).ready === 'function') {\n ;(userLifetimes as any).ready.apply(this, args)\n }\n return\n }\n if (!(this as any)[WEVU_READY_CALLED_KEY]) {\n ;(this as any)[WEVU_READY_CALLED_KEY] = true\n syncWevuPropsFromInstance(this)\n scheduleOwnerTemplateRefUpdate(this)\n scheduleTemplateRefUpdate(this, () => {\n callHookList(this, 'onReady', args)\n callVueLifecycle(this, 'mounted', args)\n if (typeof (userLifetimes as any).ready === 'function') {\n ;(userLifetimes as any).ready.apply(this, args)\n }\n })\n return\n }\n if (typeof (userLifetimes as any).ready === 'function') {\n ;(userLifetimes as any).ready.apply(this, args)\n }\n },\n detached: function detached(this: InternalRuntimeState, ...args: any[]) {\n callVueLifecycle(this, 'beforeUnmount', args)\n callVueLifecycle(this, 'beforeDestroy', args)\n scheduleOwnerTemplateRefUpdate(this)\n callHookList(this, 'onDetached', args)\n if (isPage && typeof (pageLifecycleHooks as any).onUnload === 'function') {\n ;(pageLifecycleHooks as any).onUnload.call(this, ...args)\n if (typeof (userLifetimes as any).detached === 'function') {\n ;(userLifetimes as any).detached.apply(this, args)\n }\n callVueLifecycle(this, 'unmounted', args)\n callVueLifecycle(this, 'destroyed', args)\n return\n }\n clearTemplateRefs(this)\n if (Array.isArray(layoutHosts) && layoutHosts.length && (this as any)[WEVU_LAYOUT_HOST_BRIDGE_KEY]) {\n unregisterRuntimeLayoutHosts(layoutHosts, (this as any)[WEVU_LAYOUT_HOST_BRIDGE_KEY])\n delete (this as any)[WEVU_LAYOUT_HOST_BRIDGE_KEY]\n }\n teardownRuntimeInstance(this)\n callVueLifecycle(this, 'unmounted', args)\n callVueLifecycle(this, 'destroyed', args)\n if (typeof (userLifetimes as any).detached === 'function') {\n ;(userLifetimes as any).detached.apply(this, args)\n }\n },\n error: function error(this: InternalRuntimeState, ...args: any[]) {\n callHookList(this, 'onError', args)\n if (typeof (userLifetimes as any).error === 'function') {\n ;(userLifetimes as any).error.apply(this, args)\n }\n },\n },\n pageLifetimes: {\n ...userPageLifetimes,\n show: function show(this: InternalRuntimeState, ...args: any[]) {\n if (isPage && typeof (pageLifecycleHooks as any).onShow === 'function') {\n ;(pageLifecycleHooks as any).onShow.call(this, ...args)\n if (typeof (userPageLifetimes as any).show === 'function') {\n ;(userPageLifetimes as any).show.apply(this, args)\n }\n return\n }\n setRuntimeSetDataVisibility(this, true)\n callHookList(this, 'onShow', args)\n if (typeof (userPageLifetimes as any).show === 'function') {\n ;(userPageLifetimes as any).show.apply(this, args)\n }\n },\n hide: function hide(this: InternalRuntimeState, ...args: any[]) {\n if (isPage && typeof (pageLifecycleHooks as any).onHide === 'function') {\n ;(pageLifecycleHooks as any).onHide.call(this, ...args)\n if (typeof (userPageLifetimes as any).hide === 'function') {\n ;(userPageLifetimes as any).hide.apply(this, args)\n }\n return\n }\n setRuntimeSetDataVisibility(this, false)\n callHookList(this, 'onHide', args)\n if (typeof (userPageLifetimes as any).hide === 'function') {\n ;(userPageLifetimes as any).hide.apply(this, args)\n }\n },\n resize: function resize(this: InternalRuntimeState, ...args: any[]) {\n if (isPage && typeof (pageLifecycleHooks as any).onResize === 'function') {\n ;(pageLifecycleHooks as any).onResize.call(this, ...args)\n if (typeof (userPageLifetimes as any).resize === 'function') {\n ;(userPageLifetimes as any).resize.apply(this, args)\n }\n return\n }\n callHookList(this, 'onResize', args)\n if (typeof (userPageLifetimes as any).resize === 'function') {\n ;(userPageLifetimes as any).resize.apply(this, args)\n }\n },\n routeDone: function routeDone(this: InternalRuntimeState, ...args: any[]) {\n if (isPage && typeof (pageLifecycleHooks as any).onRouteDone === 'function') {\n ;(pageLifecycleHooks as any).onRouteDone.call(this, ...args)\n if (typeof (userPageLifetimes as any).routeDone === 'function') {\n ;(userPageLifetimes as any).routeDone.apply(this, args)\n }\n return\n }\n callHookList(this, 'onRouteDone', args)\n if (typeof (userPageLifetimes as any).routeDone === 'function') {\n ;(userPageLifetimes as any).routeDone.apply(this, args)\n }\n },\n },\n methods: {\n ...pageMethodBridges,\n ...finalMethods,\n [WEVU_RESOLVE_PUBLIC_INSTANCE_METHOD]: function resolvePublicInstance(this: InternalRuntimeState) {\n const result = mountMissingRuntime(this)\n if (result.mounted) {\n callVueLifecycle(this, 'created', [])\n callVueLifecycle(this, 'beforeMount', [])\n }\n return result.runtime?.proxy\n },\n },\n options: finalOptions,\n }\n if (!registerNative) {\n return componentDefinition\n }\n\n const statefulHmrBridge = getMiniProgramRuntimeGlobalObject()?.[WEAPP_VITE_STATEFUL_HMR_BRIDGE_KEY]\n if (typeof statefulHmrBridge?.trackWevuComponent === 'function') {\n const definition = statefulHmrBridge.trackWevuComponent(componentDefinition, (\n instance: InternalRuntimeState,\n stateSnapshot?: Record<string, any>,\n ) => {\n refreshRuntimeInstance(instance, runtimeApp, watch, setup, {\n snapshotOmitKeys: directPropsDerivedKeys,\n stateSnapshot,\n })\n syncWevuPropsFromInstance(instance)\n attachPageLayoutSetter(instance)\n attachRuntimeLayoutHosts(instance)\n enableDeferredSetData(instance, { rehydrateSetupState: true })\n })\n if (!statefulHmrBridge.isApplying()) {\n registerNativeComponentDefinition(definition, isPage)\n }\n return definition\n }\n registerNativeComponentDefinition(componentDefinition, isPage)\n return componentDefinition\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"registerDefinition.mjs","names":[],"sources":["../../../../../src/runtime/register/component/registerDefinition.ts"],"sourcesContent":["import type { LayoutHostBinding } from '../../layoutBridge'\nimport type { TemplateRefBinding } from '../../templateRefs'\nimport type {\n ComponentPropsOptions,\n ComputedDefinitions,\n DefineComponentOptions,\n InternalRuntimeState,\n MethodDefinitions,\n RuntimeApp,\n} from '../../types'\nimport type { WatchMap } from '../watch'\nimport {\n WEAPP_VITE_STATEFUL_HMR_BRIDGE_KEY,\n WEVU_LAYOUT_HOST_BRIDGE_KEY,\n WEVU_PAGE_LAYOUT_NAME_KEY,\n WEVU_PAGE_LAYOUT_PROPS_KEY,\n WEVU_PAGE_LAYOUT_SETTER_KEY,\n WEVU_PUBLIC_RUNTIME_KEY,\n WEVU_READY_CALLED_KEY,\n WEVU_RESOLVE_PUBLIC_INSTANCE_METHOD,\n WEVU_RUNTIME_KEY,\n WEVU_RUNTIME_OWNER_ID_KEY,\n WEVU_SLOT_OWNER_ID_KEY,\n WEVU_TEMPLATE_REFS_KEY,\n} from '@weapp-core/constants'\nimport {\n ensureInitialNavigation,\n} from '../../../router/initialNavigation'\nimport { callHookList } from '../../hooks'\nimport { registerRuntimeLayoutHosts, unregisterRuntimeLayoutHosts } from '../../layoutBridge'\nimport { resolveRuntimePageLayoutName, syncRuntimePageLayoutState } from '../../pageLayout'\nimport { getMiniProgramRuntimeGlobalObject } from '../../platform'\nimport { getOwnerProxy } from '../../scopedSlots'\nimport { clearTemplateRefs, scheduleTemplateRefUpdate } from '../../templateRefs'\nimport { enableDeferredSetData, mountRuntimeInstance, refreshRuntimeInstance, setRuntimeSetDataVisibility, teardownRuntimeInstance } from '../runtimeInstance'\nimport { registerNativeComponentDefinition } from './registerNativeDefinition'\n\nfunction scheduleOwnerTemplateRefUpdate(target: InternalRuntimeState) {\n const selectOwnerComponent = (target as any).selectOwnerComponent\n if (typeof selectOwnerComponent !== 'function') {\n return\n }\n try {\n const owner = selectOwnerComponent.call(target) as InternalRuntimeState | null | undefined\n if (owner && owner !== target) {\n scheduleTemplateRefUpdate(owner)\n }\n }\n catch {\n // 宿主不支持 owner 查询时保持当前组件生命周期正常执行。\n }\n}\n\nexport function registerComponentDefinition<D extends object, C extends ComputedDefinitions, M extends MethodDefinitions>(options: {\n runtimeApp: RuntimeApp<D, C, M>\n watch: WatchMap | undefined\n setup: DefineComponentOptions<ComponentPropsOptions, D, C, M>['setup']\n restOptions: Record<string, any>\n pageLifecycleHooks: Record<string, any>\n finalObservers: Record<string, any>\n userLifetimes: Record<string, any>\n userPageLifetimes: Record<string, any>\n finalMethods: Record<string, (...args: any[]) => any>\n finalOptions: Record<string, any>\n applyExtraInstanceFields: (instance: InternalRuntimeState) => void\n templateRefs: TemplateRefBinding[] | undefined\n layoutHosts: LayoutHostBinding[] | undefined\n attachWevuPropKeys: (instance: InternalRuntimeState) => void\n setupLifecycle: 'created' | 'attached'\n syncWevuPropsFromInstance: (instance: InternalRuntimeState) => void\n syncWevuPropsFromValues: (instance: InternalRuntimeState, values: Record<string, unknown> | undefined) => void\n directPropsDerivedKeys: string[]\n isPage: boolean\n vueLifecycles: Record<string, unknown>\n getRuntimeOwnerLabel: (instance: InternalRuntimeState) => string\n registerNative?: boolean\n}) {\n const {\n runtimeApp,\n watch,\n setup,\n restOptions,\n pageLifecycleHooks,\n finalObservers,\n userLifetimes,\n userPageLifetimes,\n finalMethods,\n finalOptions,\n applyExtraInstanceFields,\n templateRefs,\n layoutHosts,\n attachWevuPropKeys,\n setupLifecycle,\n syncWevuPropsFromInstance,\n directPropsDerivedKeys,\n isPage,\n vueLifecycles,\n getRuntimeOwnerLabel,\n registerNative = true,\n } = options\n\n const resolveRuntime = (instance: InternalRuntimeState) => {\n const directRuntime = (instance as any).__wevu ?? (instance as any)[WEVU_PUBLIC_RUNTIME_KEY]\n if (directRuntime) {\n return directRuntime\n }\n const runtimeState = (instance as any).$state\n if (runtimeState && typeof runtimeState === 'object') {\n return (runtimeState as any)[WEVU_RUNTIME_KEY]\n }\n return undefined\n }\n\n const resolveLifecycleOwnerId = (instance: InternalRuntimeState) => (instance as any)[WEVU_RUNTIME_OWNER_ID_KEY]\n ?? (instance as any)[WEVU_SLOT_OWNER_ID_KEY]\n ?? (instance as any).data?.[WEVU_SLOT_OWNER_ID_KEY]\n ?? (instance as any).properties?.[WEVU_SLOT_OWNER_ID_KEY]\n\n const resolveLifecycleContext = (instance: InternalRuntimeState) => {\n const runtimeProxy = resolveRuntime(instance)?.proxy\n if (runtimeProxy) {\n return runtimeProxy\n }\n const ownerId = resolveLifecycleOwnerId(instance)\n if (typeof ownerId === 'string' && ownerId) {\n return getOwnerProxy(ownerId) ?? instance\n }\n return instance\n }\n\n const mountMissingRuntime = (instance: InternalRuntimeState) => {\n const existing = resolveRuntime(instance)\n if (existing) {\n return { runtime: existing, mounted: false }\n }\n applyExtraInstanceFields(instance)\n attachWevuPropKeys(instance)\n mountRuntimeInstance(instance, runtimeApp, watch, setup, {\n deferSetData: true,\n snapshotOmitKeys: directPropsDerivedKeys,\n })\n syncWevuPropsFromInstance(instance)\n enableDeferredSetData(instance)\n return { runtime: resolveRuntime(instance), mounted: true }\n }\n\n const callVueLifecycle = (instance: InternalRuntimeState, name: string, args: any[]) => {\n const hook = vueLifecycles[name]\n if (typeof hook === 'function') {\n return hook.apply(resolveLifecycleContext(instance), args)\n }\n return undefined\n }\n\n const deferPageUntilNavigation = (instance: InternalRuntimeState, task: () => void) => {\n if (!isPage) {\n task()\n return\n }\n const initialNavigationPromise = ensureInitialNavigation(instance as any, undefined, {\n start: false,\n onComplete: (shouldMount) => {\n if (shouldMount) {\n task()\n }\n },\n })\n if (!initialNavigationPromise) {\n task()\n }\n }\n\n const ensureReadyRuntime = (instance: InternalRuntimeState) => {\n if (resolveRuntime(instance) || typeof vueLifecycles.mounted !== 'function') {\n return\n }\n const result = mountMissingRuntime(instance)\n if (result.mounted) {\n callVueLifecycle(instance, 'created', [])\n callVueLifecycle(instance, 'beforeMount', [])\n }\n }\n\n const pageMethodBridges: Record<string, (...args: any[]) => any> = {}\n const attachRuntimeLayoutHosts = (instance: InternalRuntimeState) => {\n if (!Array.isArray(layoutHosts) || !layoutHosts.length) {\n return\n }\n if ((instance as any)[WEVU_LAYOUT_HOST_BRIDGE_KEY]) {\n return\n }\n const bridge = registerRuntimeLayoutHosts(layoutHosts, instance)\n if (bridge) {\n instance[WEVU_LAYOUT_HOST_BRIDGE_KEY] = bridge\n }\n }\n const attachPageLayoutSetter = (instance: InternalRuntimeState) => {\n if (!isPage) {\n return\n }\n instance[WEVU_PAGE_LAYOUT_SETTER_KEY] = (layout: string | false, props?: Record<string, any>) => {\n const runtimeState = instance.__wevu?.state as Record<string, any> | undefined\n if (!runtimeState || typeof runtimeState !== 'object') {\n return\n }\n runtimeState[WEVU_PAGE_LAYOUT_NAME_KEY] = resolveRuntimePageLayoutName(layout)\n const nextProps = layout === false ? {} : (props ?? {})\n runtimeState[WEVU_PAGE_LAYOUT_PROPS_KEY] = nextProps\n syncRuntimePageLayoutState(instance as Record<string, any>, layout, nextProps)\n }\n }\n if (isPage) {\n const methodBridgeHookNames = ['onPullDownRefresh', 'onReachBottom', 'onShareAppMessage', 'onShareTimeline', 'onAddToFavorites']\n for (const hookName of methodBridgeHookNames) {\n const pageHook = (pageLifecycleHooks as any)[hookName]\n if (typeof pageHook !== 'function') {\n continue\n }\n if (typeof (finalMethods as any)[hookName] === 'function') {\n continue\n }\n pageMethodBridges[hookName] = function pageMethodBridge(this: InternalRuntimeState, ...args: any[]) {\n return pageHook.apply(this, args)\n }\n }\n }\n\n const componentDefinition = {\n ...restOptions,\n ...(isPage ? pageLifecycleHooks : {}),\n observers: finalObservers,\n lifetimes: {\n ...userLifetimes,\n created: function created(this: InternalRuntimeState, ...args: any[]) {\n applyExtraInstanceFields(this)\n if (Array.isArray(templateRefs) && templateRefs.length) {\n Object.defineProperty(this, WEVU_TEMPLATE_REFS_KEY, {\n value: templateRefs,\n configurable: true,\n enumerable: false,\n writable: false,\n })\n }\n attachWevuPropKeys(this)\n const runCreated = () => {\n callVueLifecycle(this, 'beforeCreate', args)\n if (setupLifecycle === 'created') {\n try {\n mountRuntimeInstance(this, runtimeApp, watch, setup, {\n deferSetData: true,\n snapshotOmitKeys: directPropsDerivedKeys,\n })\n }\n catch (error) {\n const label = getRuntimeOwnerLabel(this)\n throw new Error(`[wevu] mount runtime failed in created (${label}): ${error instanceof Error ? error.message : String(error)}`)\n }\n syncWevuPropsFromInstance(this)\n attachPageLayoutSetter(this)\n }\n if (typeof (userLifetimes as any).created === 'function') {\n ;(userLifetimes as any).created.apply(this, args)\n }\n }\n deferPageUntilNavigation(this, runCreated)\n },\n moved: function moved(this: InternalRuntimeState, ...args: any[]) {\n callHookList(this, 'onMoved', args)\n if (typeof (userLifetimes as any).moved === 'function') {\n ;(userLifetimes as any).moved.apply(this, args)\n }\n },\n attached: function attached(this: InternalRuntimeState, ...args: any[]) {\n applyExtraInstanceFields(this)\n if (Array.isArray(templateRefs) && templateRefs.length && !(this as any)[WEVU_TEMPLATE_REFS_KEY]) {\n Object.defineProperty(this, WEVU_TEMPLATE_REFS_KEY, {\n value: templateRefs,\n configurable: true,\n enumerable: false,\n writable: false,\n })\n }\n attachWevuPropKeys(this)\n deferPageUntilNavigation(this, () => {\n if (setupLifecycle !== 'created' || !(this as any).__wevu) {\n try {\n mountRuntimeInstance(this, runtimeApp, watch, setup, {\n deferSetData: true,\n snapshotOmitKeys: directPropsDerivedKeys,\n })\n }\n catch (error) {\n const label = getRuntimeOwnerLabel(this)\n throw new Error(`[wevu] mount runtime failed in attached (${label}): ${error instanceof Error ? error.message : String(error)}`)\n }\n }\n syncWevuPropsFromInstance(this)\n callVueLifecycle(this, 'created', args)\n callVueLifecycle(this, 'beforeMount', args)\n attachPageLayoutSetter(this)\n attachRuntimeLayoutHosts(this)\n enableDeferredSetData(this)\n callHookList(this, 'onAttached', args)\n if (typeof (userLifetimes as any).attached === 'function') {\n ;(userLifetimes as any).attached.apply(this, args)\n }\n })\n },\n ready: function ready(this: InternalRuntimeState, ...args: any[]) {\n if (isPage && !(this as any)[WEVU_READY_CALLED_KEY]) {\n const initialNavigationPromise = ensureInitialNavigation(this as any, undefined, {\n start: true,\n onComplete: (shouldMount) => {\n if (shouldMount && !(this as any).__wevuInitialNavigationReady) {\n ;(this as any).__wevuInitialNavigationReady = true\n componentDefinition.lifetimes.ready.call(this, ...args)\n }\n },\n })\n if (initialNavigationPromise && !(this as any).__wevuInitialNavigationReady) {\n return\n }\n }\n ensureReadyRuntime(this)\n if (isPage && typeof (pageLifecycleHooks as any).onReady === 'function') {\n const wasReadyCalled = Boolean((this as any)[WEVU_READY_CALLED_KEY])\n ;(pageLifecycleHooks as any).onReady.call(this, ...args)\n if (!wasReadyCalled) {\n const callMounted = () => callVueLifecycle(this, 'mounted', args)\n const initialNavigationPromise = ensureInitialNavigation(this as any, undefined, {\n start: false,\n onComplete: (shouldMount) => {\n if (shouldMount) {\n callMounted()\n }\n },\n })\n if (!initialNavigationPromise) {\n callMounted()\n }\n }\n if (typeof (userLifetimes as any).ready === 'function') {\n ;(userLifetimes as any).ready.apply(this, args)\n }\n return\n }\n if (!(this as any)[WEVU_READY_CALLED_KEY]) {\n ;(this as any)[WEVU_READY_CALLED_KEY] = true\n syncWevuPropsFromInstance(this)\n scheduleOwnerTemplateRefUpdate(this)\n scheduleTemplateRefUpdate(this, () => {\n callHookList(this, 'onReady', args)\n callVueLifecycle(this, 'mounted', args)\n if (typeof (userLifetimes as any).ready === 'function') {\n ;(userLifetimes as any).ready.apply(this, args)\n }\n })\n return\n }\n if (typeof (userLifetimes as any).ready === 'function') {\n ;(userLifetimes as any).ready.apply(this, args)\n }\n },\n detached: function detached(this: InternalRuntimeState, ...args: any[]) {\n callVueLifecycle(this, 'beforeUnmount', args)\n callVueLifecycle(this, 'beforeDestroy', args)\n scheduleOwnerTemplateRefUpdate(this)\n callHookList(this, 'onDetached', args)\n if (isPage && typeof (pageLifecycleHooks as any).onUnload === 'function') {\n ;(pageLifecycleHooks as any).onUnload.call(this, ...args)\n if (typeof (userLifetimes as any).detached === 'function') {\n ;(userLifetimes as any).detached.apply(this, args)\n }\n callVueLifecycle(this, 'unmounted', args)\n callVueLifecycle(this, 'destroyed', args)\n return\n }\n clearTemplateRefs(this)\n if (Array.isArray(layoutHosts) && layoutHosts.length && (this as any)[WEVU_LAYOUT_HOST_BRIDGE_KEY]) {\n unregisterRuntimeLayoutHosts(layoutHosts, (this as any)[WEVU_LAYOUT_HOST_BRIDGE_KEY])\n delete (this as any)[WEVU_LAYOUT_HOST_BRIDGE_KEY]\n }\n teardownRuntimeInstance(this)\n callVueLifecycle(this, 'unmounted', args)\n callVueLifecycle(this, 'destroyed', args)\n if (typeof (userLifetimes as any).detached === 'function') {\n ;(userLifetimes as any).detached.apply(this, args)\n }\n },\n error: function error(this: InternalRuntimeState, ...args: any[]) {\n callHookList(this, 'onError', args)\n if (typeof (userLifetimes as any).error === 'function') {\n ;(userLifetimes as any).error.apply(this, args)\n }\n },\n },\n pageLifetimes: {\n ...userPageLifetimes,\n show: function show(this: InternalRuntimeState, ...args: any[]) {\n if (isPage && typeof (pageLifecycleHooks as any).onShow === 'function') {\n ;(pageLifecycleHooks as any).onShow.call(this, ...args)\n if (typeof (userPageLifetimes as any).show === 'function') {\n ;(userPageLifetimes as any).show.apply(this, args)\n }\n return\n }\n setRuntimeSetDataVisibility(this, true)\n callHookList(this, 'onShow', args)\n if (typeof (userPageLifetimes as any).show === 'function') {\n ;(userPageLifetimes as any).show.apply(this, args)\n }\n },\n hide: function hide(this: InternalRuntimeState, ...args: any[]) {\n if (isPage && typeof (pageLifecycleHooks as any).onHide === 'function') {\n ;(pageLifecycleHooks as any).onHide.call(this, ...args)\n if (typeof (userPageLifetimes as any).hide === 'function') {\n ;(userPageLifetimes as any).hide.apply(this, args)\n }\n return\n }\n setRuntimeSetDataVisibility(this, false)\n callHookList(this, 'onHide', args)\n if (typeof (userPageLifetimes as any).hide === 'function') {\n ;(userPageLifetimes as any).hide.apply(this, args)\n }\n },\n resize: function resize(this: InternalRuntimeState, ...args: any[]) {\n if (isPage && typeof (pageLifecycleHooks as any).onResize === 'function') {\n ;(pageLifecycleHooks as any).onResize.call(this, ...args)\n if (typeof (userPageLifetimes as any).resize === 'function') {\n ;(userPageLifetimes as any).resize.apply(this, args)\n }\n return\n }\n callHookList(this, 'onResize', args)\n if (typeof (userPageLifetimes as any).resize === 'function') {\n ;(userPageLifetimes as any).resize.apply(this, args)\n }\n },\n routeDone: function routeDone(this: InternalRuntimeState, ...args: any[]) {\n if (isPage && typeof (pageLifecycleHooks as any).onRouteDone === 'function') {\n ;(pageLifecycleHooks as any).onRouteDone.call(this, ...args)\n if (typeof (userPageLifetimes as any).routeDone === 'function') {\n ;(userPageLifetimes as any).routeDone.apply(this, args)\n }\n return\n }\n callHookList(this, 'onRouteDone', args)\n if (typeof (userPageLifetimes as any).routeDone === 'function') {\n ;(userPageLifetimes as any).routeDone.apply(this, args)\n }\n },\n },\n methods: {\n ...pageMethodBridges,\n ...finalMethods,\n [WEVU_RESOLVE_PUBLIC_INSTANCE_METHOD]: function resolvePublicInstance(this: InternalRuntimeState) {\n const result = mountMissingRuntime(this)\n if (result.mounted) {\n callVueLifecycle(this, 'created', [])\n callVueLifecycle(this, 'beforeMount', [])\n }\n return result.runtime?.proxy\n },\n },\n options: finalOptions,\n }\n if (!registerNative) {\n return componentDefinition\n }\n\n const statefulHmrBridge = getMiniProgramRuntimeGlobalObject()?.[WEAPP_VITE_STATEFUL_HMR_BRIDGE_KEY]\n if (typeof statefulHmrBridge?.trackWevuComponent === 'function') {\n const definition = statefulHmrBridge.trackWevuComponent(componentDefinition, (\n instance: InternalRuntimeState,\n stateSnapshot?: Record<string, any>,\n ) => {\n refreshRuntimeInstance(instance, runtimeApp, watch, setup, {\n snapshotOmitKeys: directPropsDerivedKeys,\n stateSnapshot,\n })\n syncWevuPropsFromInstance(instance)\n attachPageLayoutSetter(instance)\n attachRuntimeLayoutHosts(instance)\n enableDeferredSetData(instance, { rehydrateSetupState: true })\n })\n if (!statefulHmrBridge.isApplying()) {\n registerNativeComponentDefinition(definition, isPage)\n }\n return definition\n }\n registerNativeComponentDefinition(componentDefinition, isPage)\n return componentDefinition\n}\n"],"mappings":";;;;;;;;;;;;AAqCA,SAAS,+BAA+B,QAA8B;CACpE,MAAM,uBAAwB,OAAe;CAC7C,IAAI,OAAO,yBAAyB,YAClC;CAEF,IAAI;EACF,MAAM,QAAQ,qBAAqB,KAAK,MAAM;EAC9C,IAAI,SAAS,UAAU,QACrB,0BAA0B,KAAK;CAEnC,kBACM,CAEN;AACF;AAEA,SAAgB,4BAA0G,SAuBvH;;CACD,MAAM,EACJ,YACA,OACA,OACA,aACA,oBACA,gBACA,eACA,mBACA,cACA,cACA,0BACA,cACA,aACA,oBACA,gBACA,2BACA,wBACA,QACA,eACA,sBACA,iBAAiB,SACf;CAEJ,MAAM,kBAAkB,aAAmC;;EACzD,MAAM,yBAAiB,SAAiB,+CAAW,SAAiB;EACpE,IAAI,eACF,OAAO;EAET,MAAM,eAAgB,SAAiB;EACvC,IAAI,gBAAgB,OAAO,iBAAiB,UAC1C,OAAQ,aAAqB;CAGjC;CAEA,MAAM,2BAA2B,aAAmC;;mDAAC,SAAiB,mGAChF,SAAiB,yEACjB,SAAiB,oDAAO,6EACxB,SAAiB,sEAAa;CAAsB;CAE1D,MAAM,2BAA2B,aAAmC;;EAClE,MAAM,kCAAe,eAAe,QAAQ,qEAAG;EAC/C,IAAI,cACF,OAAO;EAET,MAAM,UAAU,wBAAwB,QAAQ;EAChD,IAAI,OAAO,YAAY,YAAY,SAAS;;GAC1C,yBAAO,cAAc,OAAO,4DAAK;EACnC;EACA,OAAO;CACT;CAEA,MAAM,uBAAuB,aAAmC;EAC9D,MAAM,WAAW,eAAe,QAAQ;EACxC,IAAI,UACF,OAAO;GAAE,SAAS;GAAU,SAAS;EAAM;EAE7C,yBAAyB,QAAQ;EACjC,mBAAmB,QAAQ;EAC3B,qBAAqB,UAAU,YAAY,OAAO,OAAO;GACvD,cAAc;GACd,kBAAkB;EACpB,CAAC;EACD,0BAA0B,QAAQ;EAClC,sBAAsB,QAAQ;EAC9B,OAAO;GAAE,SAAS,eAAe,QAAQ;GAAG,SAAS;EAAK;CAC5D;CAEA,MAAM,oBAAoB,UAAgC,MAAc,SAAgB;EACtF,MAAM,OAAO,cAAc;EAC3B,IAAI,OAAO,SAAS,YAClB,OAAO,KAAK,MAAM,wBAAwB,QAAQ,GAAG,IAAI;CAG7D;CAEA,MAAM,4BAA4B,UAAgC,SAAqB;EACrF,IAAI,CAAC,QAAQ;GACX,KAAK;GACL;EACF;EASA,IAAI,CAR6B,wBAAwB,UAAiB,QAAW;GACnF,OAAO;GACP,aAAa,gBAAgB;IAC3B,IAAI,aACF,KAAK;GAET;EACF,CAC4B,GAC1B,KAAK;CAET;CAEA,MAAM,sBAAsB,aAAmC;EAC7D,IAAI,eAAe,QAAQ,KAAK,OAAO,cAAc,YAAY,YAC/D;EAGF,IADe,oBAAoB,QAC1B,CAAC,CAAC,SAAS;GAClB,iBAAiB,UAAU,WAAW,CAAC,CAAC;GACxC,iBAAiB,UAAU,eAAe,CAAC,CAAC;EAC9C;CACF;CAEA,MAAM,oBAA6D,CAAC;CACpE,MAAM,4BAA4B,aAAmC;EACnE,IAAI,CAAC,MAAM,QAAQ,WAAW,KAAK,CAAC,YAAY,QAC9C;EAEF,IAAK,SAAiB,8BACpB;EAEF,MAAM,SAAS,2BAA2B,aAAa,QAAQ;EAC/D,IAAI,QACF,SAAS,+BAA+B;CAE5C;CACA,MAAM,0BAA0B,aAAmC;EACjE,IAAI,CAAC,QACH;EAEF,SAAS,gCAAgC,QAAwB,UAAgC;;GAC/F,MAAM,mCAAe,SAAS,4EAAQ;GACtC,IAAI,CAAC,gBAAgB,OAAO,iBAAiB,UAC3C;GAEF,aAAa,6BAA6B,6BAA6B,MAAM;GAC7E,MAAM,YAAY,WAAW,QAAQ,CAAC,IAAK,6CAAS,CAAC;GACrD,aAAa,8BAA8B;GAC3C,2BAA2B,UAAiC,QAAQ,SAAS;EAC/E;CACF;CACA,IAAI,QAEF,KAAK,MAAM,YAAY;EADQ;EAAqB;EAAiB;EAAqB;EAAmB;CAClE,GAAG;EAC5C,MAAM,WAAY,mBAA2B;EAC7C,IAAI,OAAO,aAAa,YACtB;EAEF,IAAI,OAAQ,aAAqB,cAAc,YAC7C;EAEF,kBAAkB,YAAY,SAAS,iBAA6C,GAAG,MAAa;GAClG,OAAO,SAAS,MAAM,MAAM,IAAI;EAClC;CACF;CAGF,MAAM,sBAAsB;EAC1B,GAAG;EACH,GAAI,SAAS,qBAAqB,CAAC;EACnC,WAAW;EACX,WAAW;GACT,GAAG;GACH,SAAS,SAAS,QAAoC,GAAG,MAAa;IACpE,yBAAyB,IAAI;IAC7B,IAAI,MAAM,QAAQ,YAAY,KAAK,aAAa,QAC9C,OAAO,eAAe,MAAM,wBAAwB;KAClD,OAAO;KACP,cAAc;KACd,YAAY;KACZ,UAAU;IACZ,CAAC;IAEH,mBAAmB,IAAI;IACvB,MAAM,mBAAmB;KACvB,iBAAiB,MAAM,gBAAgB,IAAI;KAC3C,IAAI,mBAAmB,WAAW;MAChC,IAAI;OACF,qBAAqB,MAAM,YAAY,OAAO,OAAO;QACnD,cAAc;QACd,kBAAkB;OACpB,CAAC;MACH,SACO,OAAO;OACZ,MAAM,QAAQ,qBAAqB,IAAI;OACvC,MAAM,IAAI,MAAM,2CAA2C,MAAM,KAAK,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,GAAG;MAChI;MACA,0BAA0B,IAAI;MAC9B,uBAAuB,IAAI;KAC7B;KACA,IAAI,OAAQ,cAAsB,YAAY,YAC3C,AAAC,cAAsB,QAAQ,MAAM,MAAM,IAAI;IAEpD;IACA,yBAAyB,MAAM,UAAU;GAC3C;GACA,OAAO,SAAS,MAAkC,GAAG,MAAa;IAChE,aAAa,MAAM,WAAW,IAAI;IAClC,IAAI,OAAQ,cAAsB,UAAU,YACzC,AAAC,cAAsB,MAAM,MAAM,MAAM,IAAI;GAElD;GACA,UAAU,SAAS,SAAqC,GAAG,MAAa;IACtE,yBAAyB,IAAI;IAC7B,IAAI,MAAM,QAAQ,YAAY,KAAK,aAAa,UAAU,CAAE,KAAa,yBACvE,OAAO,eAAe,MAAM,wBAAwB;KAClD,OAAO;KACP,cAAc;KACd,YAAY;KACZ,UAAU;IACZ,CAAC;IAEH,mBAAmB,IAAI;IACvB,yBAAyB,YAAY;KACnC,IAAI,mBAAmB,aAAa,CAAE,KAAa,QACjD,IAAI;MACF,qBAAqB,MAAM,YAAY,OAAO,OAAO;OACnD,cAAc;OACd,kBAAkB;MACpB,CAAC;KACH,SACO,OAAO;MACZ,MAAM,QAAQ,qBAAqB,IAAI;MACvC,MAAM,IAAI,MAAM,4CAA4C,MAAM,KAAK,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,GAAG;KACjI;KAEF,0BAA0B,IAAI;KAC9B,iBAAiB,MAAM,WAAW,IAAI;KACtC,iBAAiB,MAAM,eAAe,IAAI;KAC1C,uBAAuB,IAAI;KAC3B,yBAAyB,IAAI;KAC7B,sBAAsB,IAAI;KAC1B,aAAa,MAAM,cAAc,IAAI;KACrC,IAAI,OAAQ,cAAsB,aAAa,YAC5C,AAAC,cAAsB,SAAS,MAAM,MAAM,IAAI;IAErD,CAAC;GACH;GACA,OAAO,SAAS,MAAkC,GAAG,MAAa;IAChE,IAAI,UAAU,CAAE,KAAa,wBAU3B;SATiC,wBAAwB,MAAa,QAAW;MAC/E,OAAO;MACP,aAAa,gBAAgB;OAC3B,IAAI,eAAe,CAAE,KAAa,8BAA8B;QAC7D,AAAC,KAAa,+BAA+B;QAC9C,oBAAoB,UAAU,MAAM,KAAK,MAAM,GAAG,IAAI;OACxD;MACF;KACF,CAC2B,KAAK,CAAE,KAAa,8BAC7C;IACF;IAEF,mBAAmB,IAAI;IACvB,IAAI,UAAU,OAAQ,mBAA2B,YAAY,YAAY;KACvE,MAAM,iBAAiB,QAAS,KAAa,sBAAsB;KAClE,AAAC,mBAA2B,QAAQ,KAAK,MAAM,GAAG,IAAI;KACvD,IAAI,CAAC,gBAAgB;MACnB,MAAM,oBAAoB,iBAAiB,MAAM,WAAW,IAAI;MAShE,IAAI,CAR6B,wBAAwB,MAAa,QAAW;OAC/E,OAAO;OACP,aAAa,gBAAgB;QAC3B,IAAI,aACF,YAAY;OAEhB;MACF,CAC4B,GAC1B,YAAY;KAEhB;KACA,IAAI,OAAQ,cAAsB,UAAU,YACzC,AAAC,cAAsB,MAAM,MAAM,MAAM,IAAI;KAEhD;IACF;IACA,IAAI,CAAE,KAAa,wBAAwB;KACxC,AAAC,KAAa,yBAAyB;KACxC,0BAA0B,IAAI;KAC9B,+BAA+B,IAAI;KACnC,0BAA0B,YAAY;MACpC,aAAa,MAAM,WAAW,IAAI;MAClC,iBAAiB,MAAM,WAAW,IAAI;MACtC,IAAI,OAAQ,cAAsB,UAAU,YACzC,AAAC,cAAsB,MAAM,MAAM,MAAM,IAAI;KAElD,CAAC;KACD;IACF;IACA,IAAI,OAAQ,cAAsB,UAAU,YACzC,AAAC,cAAsB,MAAM,MAAM,MAAM,IAAI;GAElD;GACA,UAAU,SAAS,SAAqC,GAAG,MAAa;IACtE,iBAAiB,MAAM,iBAAiB,IAAI;IAC5C,iBAAiB,MAAM,iBAAiB,IAAI;IAC5C,+BAA+B,IAAI;IACnC,aAAa,MAAM,cAAc,IAAI;IACrC,IAAI,UAAU,OAAQ,mBAA2B,aAAa,YAAY;KACvE,AAAC,mBAA2B,SAAS,KAAK,MAAM,GAAG,IAAI;KACxD,IAAI,OAAQ,cAAsB,aAAa,YAC5C,AAAC,cAAsB,SAAS,MAAM,MAAM,IAAI;KAEnD,iBAAiB,MAAM,aAAa,IAAI;KACxC,iBAAiB,MAAM,aAAa,IAAI;KACxC;IACF;IACA,kBAAkB,IAAI;IACtB,IAAI,MAAM,QAAQ,WAAW,KAAK,YAAY,UAAW,KAAa,8BAA8B;KAClG,6BAA6B,aAAc,KAAa,4BAA4B;KACpF,OAAQ,KAAa;IACvB;IACA,wBAAwB,IAAI;IAC5B,iBAAiB,MAAM,aAAa,IAAI;IACxC,iBAAiB,MAAM,aAAa,IAAI;IACxC,IAAI,OAAQ,cAAsB,aAAa,YAC5C,AAAC,cAAsB,SAAS,MAAM,MAAM,IAAI;GAErD;GACA,OAAO,SAAS,MAAkC,GAAG,MAAa;IAChE,aAAa,MAAM,WAAW,IAAI;IAClC,IAAI,OAAQ,cAAsB,UAAU,YACzC,AAAC,cAAsB,MAAM,MAAM,MAAM,IAAI;GAElD;EACF;EACA,eAAe;GACb,GAAG;GACH,MAAM,SAAS,KAAiC,GAAG,MAAa;IAC9D,IAAI,UAAU,OAAQ,mBAA2B,WAAW,YAAY;KACrE,AAAC,mBAA2B,OAAO,KAAK,MAAM,GAAG,IAAI;KACtD,IAAI,OAAQ,kBAA0B,SAAS,YAC5C,AAAC,kBAA0B,KAAK,MAAM,MAAM,IAAI;KAEnD;IACF;IACA,4BAA4B,MAAM,IAAI;IACtC,aAAa,MAAM,UAAU,IAAI;IACjC,IAAI,OAAQ,kBAA0B,SAAS,YAC5C,AAAC,kBAA0B,KAAK,MAAM,MAAM,IAAI;GAErD;GACA,MAAM,SAAS,KAAiC,GAAG,MAAa;IAC9D,IAAI,UAAU,OAAQ,mBAA2B,WAAW,YAAY;KACrE,AAAC,mBAA2B,OAAO,KAAK,MAAM,GAAG,IAAI;KACtD,IAAI,OAAQ,kBAA0B,SAAS,YAC5C,AAAC,kBAA0B,KAAK,MAAM,MAAM,IAAI;KAEnD;IACF;IACA,4BAA4B,MAAM,KAAK;IACvC,aAAa,MAAM,UAAU,IAAI;IACjC,IAAI,OAAQ,kBAA0B,SAAS,YAC5C,AAAC,kBAA0B,KAAK,MAAM,MAAM,IAAI;GAErD;GACA,QAAQ,SAAS,OAAmC,GAAG,MAAa;IAClE,IAAI,UAAU,OAAQ,mBAA2B,aAAa,YAAY;KACvE,AAAC,mBAA2B,SAAS,KAAK,MAAM,GAAG,IAAI;KACxD,IAAI,OAAQ,kBAA0B,WAAW,YAC9C,AAAC,kBAA0B,OAAO,MAAM,MAAM,IAAI;KAErD;IACF;IACA,aAAa,MAAM,YAAY,IAAI;IACnC,IAAI,OAAQ,kBAA0B,WAAW,YAC9C,AAAC,kBAA0B,OAAO,MAAM,MAAM,IAAI;GAEvD;GACA,WAAW,SAAS,UAAsC,GAAG,MAAa;IACxE,IAAI,UAAU,OAAQ,mBAA2B,gBAAgB,YAAY;KAC1E,AAAC,mBAA2B,YAAY,KAAK,MAAM,GAAG,IAAI;KAC3D,IAAI,OAAQ,kBAA0B,cAAc,YACjD,AAAC,kBAA0B,UAAU,MAAM,MAAM,IAAI;KAExD;IACF;IACA,aAAa,MAAM,eAAe,IAAI;IACtC,IAAI,OAAQ,kBAA0B,cAAc,YACjD,AAAC,kBAA0B,UAAU,MAAM,MAAM,IAAI;GAE1D;EACF;EACA,SAAS;GACP,GAAG;GACH,GAAG;GACH,CAAC,sCAAsC,SAAS,wBAAkD;;IAChG,MAAM,SAAS,oBAAoB,IAAI;IACvC,IAAI,OAAO,SAAS;KAClB,iBAAiB,MAAM,WAAW,CAAC,CAAC;KACpC,iBAAiB,MAAM,eAAe,CAAC,CAAC;IAC1C;IACA,0BAAO,OAAO,2EAAS;GACzB;EACF;EACA,SAAS;CACX;CACA,IAAI,CAAC,gBACH,OAAO;CAGT,MAAM,6CAAoB,kCAAkC,iFAAI;CAChE,IAAI,8EAAO,kBAAmB,wBAAuB,YAAY;EAC/D,MAAM,aAAa,kBAAkB,mBAAmB,sBACtD,UACA,kBACG;GACH,uBAAuB,UAAU,YAAY,OAAO,OAAO;IACzD,kBAAkB;IAClB;GACF,CAAC;GACD,0BAA0B,QAAQ;GAClC,uBAAuB,QAAQ;GAC/B,yBAAyB,QAAQ;GACjC,sBAAsB,UAAU,EAAE,qBAAqB,KAAK,CAAC;EAC/D,CAAC;EACD,IAAI,CAAC,kBAAkB,WAAW,GAChC,kCAAkC,YAAY,MAAM;EAEtD,OAAO;CACT;CACA,kCAAkC,qBAAqB,MAAM;CAC7D,OAAO;AACT"}
package/dist/package.mjs CHANGED
@@ -1 +1 @@
1
- var e=`7.0.0`;export{e as version};
1
+ var e=`7.0.1`;export{e as version};
@@ -1 +1 @@
1
- import{getCurrentMiniProgramPages as e}from"../runtime/platform.mjs";import{NavigationFailureType as t}from"./types.mjs";import{createNavigationFailure as n,runNavigationGuards as r}from"./navigationCore.mjs";import{resolvePageRoute as i}from"../routerInternal/location.mjs";import{createNavigationRunResult as a}from"./navigationResult.mjs";function o(t,n,r){let a=e(),o=a[a.length-1-t];if(o)return r(i(o).fullPath,n.path)}async function s(e){let{target:i,from:o,nativeRouter:s,beforeEachGuards:c,beforeResolveGuards:l,resolveWithCodec:u}=e,d={mode:`back`,to:i,from:o,nativeRouter:s};for(let e of[c,l]){let s=await r(e,d,u);if(s.status===`failure`)return a(`back`,o,i,s.failure);if(s.status===`redirect`)return a(`back`,o,i,n(t.aborted,i,o,`Redirect is not supported in back navigation guards`))}return a(`back`,o,i)}export{o as resolveBackNavigationTarget,s as runBackNavigationGuards};
1
+ import{getCurrentMiniProgramPages as e}from"../runtime/platform.mjs";import{resolvePageRoute as t}from"../routerInternal/location.mjs";import{NavigationFailureType as n}from"./types.mjs";import{createNavigationFailure as r,runNavigationGuards as i}from"./navigationCore.mjs";import{createNavigationRunResult as a}from"./navigationResult.mjs";function o(n,r,i){let a=e(),o=a[a.length-1-n];if(o)return i(t(o).fullPath,r.path)}async function s(e){let{target:t,from:o,nativeRouter:s,beforeEachGuards:c,beforeResolveGuards:l,resolveWithCodec:u}=e,d={mode:`back`,to:t,from:o,nativeRouter:s};for(let e of[c,l]){let s=await i(e,d,u);if(s.status===`failure`)return a(`back`,o,t,s.failure);if(s.status===`redirect`)return a(`back`,o,t,r(n.aborted,t,o,`Redirect is not supported in back navigation guards`))}return a(`back`,o,t)}export{o as resolveBackNavigationTarget,s as runBackNavigationGuards};
@@ -1 +1 @@
1
- import{getMiniProgramGlobalObject as e}from"../runtime/platform.mjs";import{setActiveRouter as t}from"./instance.mjs";import{registerInitialNavigationRunner as n}from"./initialNavigation.mjs";import{installRouteStateSyncOnNativeRouter as r}from"./routeSync.mjs";import{resolvePath as i}from"../routerInternal/path.mjs";import{parseQuery as a,stringifyQuery as o}from"../routerInternal/query.mjs";import{resolveCurrentRoute as ee}from"../routerInternal/location.mjs";import{resolveNamedRouteLocation as te}from"../routerInternal/params.mjs";import{mergeMatchedRouteMeta as s,resolveMatchedRouteRecord as c}from"../routerInternal/matching.mjs";import{warnDuplicateRouteEntries as l}from"../routerInternal/recordsWarnings.mjs";import{createNamedRouteLookup as u,resolveRouteOptionEntries as d}from"../routerInternal/records.mjs";import{cloneRouteMeta as f,cloneRouteParams as ne,createRouterOptionsSnapshot as re,normalizeRouteRecordMatched as ie,snapshotRouteLocation as p}from"../routerInternal/snapshots.mjs";import{createNavigationResultController as m}from"./navigationResult.mjs";import{runBackNavigationGuards as h}from"./backNavigation.mjs";import{navigateWithTarget as g}from"./navigationTarget.mjs";import{createNavigationApi as _}from"./navigationApi.mjs";import{resolveRouteLocation as v}from"./resolve.mjs";import{createRouteRegistry as y}from"./routeRegistry.mjs";import{createRouteStateController as b,useNativeRouter as x}from"./useRoute.mjs";function S(S={}){var C,w,T,E,D,O;let k=x();r(e());let A=new Set,j=new Set,M=new Set,N=new Set,P=(C=S.maxRedirects)==null?10:C,F=(w=S.paramsMode)==null?`loose`:w,I=(T=S.rejectOnError)==null||T,L={parseQuery:(E=S.parseQuery)==null?a:E,stringifyQuery:(D=S.stringifyQuery)==null?o:D},R=Promise.resolve(),z=d(S);l(z);let B=u(z),V=((O=S.tabBarEntries)==null?[]:O).map(e=>i(e,``)).filter(Boolean),H=new Set(V),U=y(B),W=0,G=re(V,U.getRoutes(),F,P,L,I);function K(e){let t={...e};t.href=t.fullPath;let n=c(t,B);if(n){let e=n.record;t.name===void 0&&(t.name=e.name);let r=s(n.matchedRecords);r!==void 0&&(t.meta=f(r)),n.params&&Object.keys(t.params).length===0&&(t.params=ne(n.params)),t.matched=n.matchedRecords.map((e,t,r)=>{let i=t===r.length-1?n.matchedPath:void 0;return ie(e,i)})}else t.matched=[];return t}function q(e,t){let n=typeof e==`string`?e:te(e,B,F);return K(v(n,t,L))}let J,Y;function ae(e){return e.source===`page`||e.source===`native`&&e.method===`navigateBack`}function oe(e,t){if(W>0||!ae(t)||e.fullPath===J.fullPath)return;let n=p(J);h({target:e,from:n,nativeRouter:k,beforeEachGuards:A,beforeResolveGuards:j,resolveWithCodec:q}).then(e=>Y==null?void 0:Y(e))}J=b({beforeRouteStateSync:oe,resolveRoute:K}).route;function se(e){return q(e,J.path)}let X=m({afterEachHooks:M,errorHandlers:N,nativeRouter:k,rejectOnError:I});Y=X.emitNavigationAfterEach;let Z=_({nativeRouter:k,route:J,routeResolveCodec:L,namedRouteLookup:B,beforeEachGuards:A,beforeResolveGuards:j,maxRedirects:P,tabBarPathSet:H,resolveWithCodec:q,settleNavigationResult:X.settleNavigationResult});async function Q(e){W+=1;try{return await e()}finally{--W}}async function ce(e,t){return Q(async()=>{let n=p(J),r=K(ee(t,e));if(!r.path)return;let i=await g({mode:`push`,target:r,from:n,nativeRouter:k,routeResolveCodec:L,namedRouteLookup:B,beforeEachGuards:A,beforeResolveGuards:j,maxRedirects:P,tabBarPathSet:H,resolveWithCodec:q,executeNative:!1,allowSameLocation:!0});return X.settleNavigationResult(i)})}function le(e){return A.add(e),()=>{A.delete(e)}}function ue(e){return j.add(e),()=>{j.delete(e)}}function de(e){return M.add(e),()=>{M.delete(e)}}function fe(e){return N.add(e),()=>{N.delete(e)}}let $={nativeRouter:k,options:G,currentRoute:J,install(e){var n;t($);let r=e==null||(n=e.config)==null?void 0:n.globalProperties;r&&(r.$router=$)},resolve:se,isReady(){return R},push:e=>Q(()=>Z.push(e)),replace:e=>Q(()=>Z.replace(e)),back:e=>Q(()=>Z.back(e)),go:e=>Q(()=>Z.go(e)),forward:()=>Q(()=>Z.forward()),hasRoute:U.hasRoute,getRoutes:U.getRoutes,addRoute:U.addRoute,removeRoute:U.removeRoute,clearRoutes:U.clearRoutes,beforeEach:le,beforeResolve:ue,afterEach:de,onError:fe};return t($),n($,ce),$}export{S as createRouter};
1
+ import{getMiniProgramGlobalObject as e}from"../runtime/platform.mjs";import{setActiveRouter as t}from"./instance.mjs";import{DEFAULT_INITIAL_NAVIGATION_TIMEOUT as n,registerInitialNavigationRunner as r}from"./initialNavigation.mjs";import{installRouteStateSyncOnNativeRouter as i,notifyRouteStateSync as a}from"./routeSync.mjs";import{resolvePath as o}from"../routerInternal/path.mjs";import{parseQuery as s,stringifyQuery as c}from"../routerInternal/query.mjs";import{resolveCurrentRoute as l}from"../routerInternal/location.mjs";import{resolveNamedRouteLocation as u}from"../routerInternal/params.mjs";import{mergeMatchedRouteMeta as ee,resolveMatchedRouteRecord as te}from"../routerInternal/matching.mjs";import{warnDuplicateRouteEntries as ne}from"../routerInternal/recordsWarnings.mjs";import{createNamedRouteLookup as re,resolveRouteOptionEntries as ie}from"../routerInternal/records.mjs";import{cloneRouteMeta as ae,cloneRouteParams as oe,createRouterOptionsSnapshot as d,normalizeRouteRecordMatched as se,snapshotRouteLocation as f}from"../routerInternal/snapshots.mjs";import{createNavigationResultController as p}from"./navigationResult.mjs";import{resolveBackNavigationTarget as m,runBackNavigationGuards as ce}from"./backNavigation.mjs";import{navigateWithTarget as le}from"./navigationTarget.mjs";import{createNavigationApi as ue}from"./navigationApi.mjs";import{resolveRouteLocation as de}from"./resolve.mjs";import{createRouteRegistry as fe}from"./routeRegistry.mjs";import{createRouteStateController as pe,useNativeRouter as h}from"./useRoute.mjs";function g(g={}){var _,v,y,b,x,S,C;let w=h();i(e());let T=new Set,E=new Set,D=new Set,O=new Set,k=(_=g.maxRedirects)==null?10:_,A=g.initialNavigationMode===`blocking`?`blocking`:`eager`,j=Number.isFinite(g.initialNavigationTimeout)&&((v=g.initialNavigationTimeout)==null?0:v)>0?Math.max(1,Math.trunc(g.initialNavigationTimeout)):n,M=(y=g.paramsMode)==null?`loose`:y,N=(b=g.rejectOnError)==null||b,P={parseQuery:(x=g.parseQuery)==null?s:x,stringifyQuery:(S=g.stringifyQuery)==null?c:S},F=Promise.resolve(),I=ie(g);ne(I);let L=re(I),R=((C=g.tabBarEntries)==null?[]:C).map(e=>o(e,``)).filter(Boolean),z=new Set(R),B=fe(L),V=0,H,U,W,me=d(R,B.getRoutes(),M,k,A,j,P,N);function G(e){let t={...e};t.href=t.fullPath;let n=te(t,L);if(n){let e=n.record;t.name===void 0&&(t.name=e.name);let r=ee(n.matchedRecords);r!==void 0&&(t.meta=ae(r)),n.params&&Object.keys(t.params).length===0&&(t.params=oe(n.params)),t.matched=n.matchedRecords.map((e,t,r)=>{let i=t===r.length-1?n.matchedPath:void 0;return se(e,i)})}else t.matched=[];return t}function K(e,t){let n=typeof e==`string`?e:u(e,L,M);return G(de(n,t,P))}let q,J;function he(e){return e.source===`page`||e.source===`native`&&e.method===`navigateBack`}function ge(e,t){if(V>0||!he(t)||W!==void 0)return;if(U!==void 0){let t=U;if(U=void 0,e.fullPath===t)return}if(e.fullPath===q.fullPath)return;W=e.fullPath;let n=f(q);ce({target:e,from:n,nativeRouter:w,beforeEachGuards:T,beforeResolveGuards:E,resolveWithCodec:K}).then(e=>J==null?void 0:J(e)).finally(()=>{W=void 0})}q=pe({beforeRouteStateSync:ge,resolveRoute:G}).route;function _e(e){return K(e,q.path)}let Y=p({afterEachHooks:D,errorHandlers:O,nativeRouter:w,rejectOnError:N});J=Y.emitNavigationAfterEach;let X=ue({nativeRouter:w,route:q,routeResolveCodec:P,namedRouteLookup:L,beforeEachGuards:T,beforeResolveGuards:E,maxRedirects:k,tabBarPathSet:z,resolveWithCodec:K,settleNavigationResult:Y.settleNavigationResult});async function Z(e,t){let n=q.fullPath;t&&(H=t),V+=1;try{let t=await e();return q.fullPath!==n&&(U=q.fullPath),t}finally{--V,V<=0&&(H=void 0)}}function Q(e){try{return K(e,q.path).fullPath}catch(e){return}}async function ve(e,t,n=()=>!0){return Z(async()=>{let r=f(q),i=G(l(t,e));if(!i.path)return;if(H===i.fullPath){a({route:i,source:`router`});return}let o=await le({mode:`push`,target:i,from:r,nativeRouter:w,routeResolveCodec:P,namedRouteLookup:L,beforeEachGuards:T,beforeResolveGuards:E,maxRedirects:k,tabBarPathSet:z,resolveWithCodec:K,executeNative:!1,allowSameLocation:!0});if(n())return Y.settleNavigationResult(o)})}function ye(e){return T.add(e),()=>{T.delete(e)}}function be(e){return E.add(e),()=>{E.delete(e)}}function xe(e){return D.add(e),()=>{D.delete(e)}}function Se(e){return O.add(e),()=>{O.delete(e)}}let $={nativeRouter:w,options:me,currentRoute:q,install(e){var n;t($);let r=e==null||(n=e.config)==null?void 0:n.globalProperties;r&&(r.$router=$)},resolve:_e,isReady(){return F},push:e=>Z(()=>X.push(e),Q(e)),replace:e=>Z(()=>X.replace(e),Q(e)),back:e=>{var t;return Z(()=>X.back(e),(t=m(e==null?1:e,q,K))==null?void 0:t.fullPath)},go:e=>{var t;return Z(()=>X.go(e),e<0?(t=m(Math.abs(e),q,K))==null?void 0:t.fullPath:void 0)},forward:()=>Z(()=>X.forward()),hasRoute:B.hasRoute,getRoutes:B.getRoutes,addRoute:B.addRoute,removeRoute:B.removeRoute,clearRoutes:B.clearRoutes,beforeEach:ye,beforeResolve:be,afterEach:xe,onError:Se};return t($),r($,ve,j,A),$}export{g as createRouter};
@@ -1 +1 @@
1
- import{getActiveRouter as e}from"./instance.mjs";const t=new WeakMap;function n(e,n){t.set(e,n)}function r(){let n=e();return n?t.get(n):void 0}export{r as getInitialNavigationRunner,n as registerInitialNavigationRunner};
1
+ import{getActiveRouter as e}from"./instance.mjs";import{WEVU_INITIAL_NAVIGATION_TIMEOUT_MARKER as t}from"@weapp-core/constants";const n=1e4,r=new WeakMap,i=new WeakMap;function a(e){return Number.isFinite(e)&&e>0?Math.max(1,Math.trunc(e)):n}function o(e){return{route:typeof e.route==`string`?e.route:void 0,__route__:typeof e.__route__==`string`?e.__route__:void 0,options:e.options&&typeof e.options==`object`?{...e.options}:void 0}}function s(e){if(!(!e||typeof e!=`object`))return Object.fromEntries(Object.entries(e).map(([e,t])=>[e,Array.isArray(t)?[...t]:t]))}function c(e,t,i=n,o=`blocking`){r.set(e,{runner:t,mode:o,timeoutMs:a(i)})}function l(){var t,i;let a=e();return a?(t=(i=r.get(a))==null?void 0:i.timeoutMs)==null?n:t:n}function u(e){return!!(e&&typeof e==`object`&&e.__wevuNavigationFailure)}function d(n,a,c={}){let d=i.get(n);if(d)return c.onComplete&&d.blocking&&d.subscribe(c.onComplete),c.start!==!1&&d.start(a),d.blocking?d.promise:void 0;let f=e(),p=f?r.get(f):void 0,m=p==null?void 0:p.runner;if(!m)return;let h=(p==null?void 0:p.mode)===`blocking`,g=o(n),_=s(a),v=`idle`,y,b=l(),x,S=new Set,C=new Promise(e=>{x=e}),w=(e,t)=>{if(v!==`idle`&&v!==`running`)return;v=e,y!==void 0&&(clearTimeout(y),y=void 0);let n=[...S];S.clear(),m=void 0,g=void 0,_=void 0,x(t),queueMicrotask(()=>{if(v===`allowed`||v===`timed-out`)for(let e of n)e.active&&(e.callback(t),e.active=!1)})},T={promise:C,blocking:h,status:()=>v,subscribe(e){let t={callback:e,active:!0};return v!==`idle`&&v!==`running`?queueMicrotask(()=>{t.active&&(v===`allowed`||v===`timed-out`)&&(e(v===`allowed`||v===`timed-out`),t.active=!1)}):S.add(t),()=>{t.active=!1,S.delete(t)}},start(e){if(v!==`idle`)return;v=`running`,h&&(y=setTimeout(()=>{var e,n;v===`running`&&(console.warn(`${t} initial navigation exceeded ${b}ms; mounting page`,(e=(n=g==null?void 0:g.route)==null?g==null?void 0:g.__route__:n)==null?``:e),w(`timed-out`,!0))},b));let n=g,r=s(e==null?_:e),i=m;if(m=void 0,!i||!n){w(`aborted`,!1);return}i(n,r,()=>v===`running`).then(e=>{let t=u(e);w(t?`aborted`:`allowed`,!t)},()=>{w(`aborted`,!1)})},cancel(){w(`cancelled`,!1)}};return i.set(n,T),c.onComplete&&h&&T.subscribe(c.onComplete),c.start!==!1&&T.start(a),h?C:void 0}function f(e){var t;(t=i.get(e))==null||t.cancel()}export{n as DEFAULT_INITIAL_NAVIGATION_TIMEOUT,f as cancelInitialNavigation,d as ensureInitialNavigation,l as getInitialNavigationTimeout,c as registerInitialNavigationRunner};
@@ -1 +1 @@
1
- import{NavigationFailureType as e}from"./types.mjs";import{createNavigationFailure as t,executeNavigationMethod as n,isNavigationFailure as r}from"./navigationCore.mjs";import{snapshotRouteLocation as i}from"../routerInternal/snapshots.mjs";import{createNavigationRunResult as a}from"./navigationResult.mjs";import{resolveBackNavigationTarget as o,runBackNavigationGuards as s}from"./backNavigation.mjs";import{createForwardNotSupportedFailure as c}from"./navigationTargetHelpers.mjs";import{navigateWithTarget as l}from"./navigationTarget.mjs";function u(u){let{nativeRouter:d,route:f,routeResolveCodec:p,namedRouteLookup:m,beforeEachGuards:h,beforeResolveGuards:g,maxRedirects:_,tabBarPathSet:v,resolveWithCodec:y,settleNavigationResult:b}=u;async function x(n){let r=i(f),o;try{o=y(n,r.path)}catch(n){return b(a(`push`,r,void 0,t(e.unknown,void 0,r,n)))}let s=await l({mode:`push`,target:o,from:r,nativeRouter:d,routeResolveCodec:p,namedRouteLookup:m,beforeEachGuards:h,beforeResolveGuards:g,maxRedirects:_,tabBarPathSet:v,resolveWithCodec:y});return b(s)}async function S(n){let r=i(f),o;try{o=y(n,r.path)}catch(n){return b(a(`replace`,r,void 0,t(e.unknown,void 0,r,n)))}let s=await l({mode:`replace`,target:o,from:r,nativeRouter:d,routeResolveCodec:p,namedRouteLookup:m,beforeEachGuards:h,beforeResolveGuards:g,maxRedirects:_,tabBarPathSet:v,resolveWithCodec:y});return b(s)}async function C(e=1){let t=i(f),c=o(e,t,y),l=await s({target:c,from:t,nativeRouter:d,beforeEachGuards:h,beforeResolveGuards:g,resolveWithCodec:y});if(l.failure)return b(l);let u=await n(d.navigateBack,{delta:e},c,t),p=r(u)?a(`back`,t,c,u):l;return b(p)}async function w(e){if(e<0)return C(Math.abs(e));if(e===0)return;let t=i(f);return b(a(`back`,t,void 0,c(t)))}async function T(){return w(1)}return{push:x,replace:S,back:C,go:w,forward:T}}export{u as createNavigationApi};
1
+ import{snapshotRouteLocation as e}from"../routerInternal/snapshots.mjs";import{NavigationFailureType as t}from"./types.mjs";import{createNavigationFailure as n,executeNavigationMethod as r,isNavigationFailure as i}from"./navigationCore.mjs";import{createNavigationRunResult as a}from"./navigationResult.mjs";import{resolveBackNavigationTarget as o,runBackNavigationGuards as s}from"./backNavigation.mjs";import{createForwardNotSupportedFailure as c}from"./navigationTargetHelpers.mjs";import{navigateWithTarget as l}from"./navigationTarget.mjs";function u(u){let{nativeRouter:d,route:f,routeResolveCodec:p,namedRouteLookup:m,beforeEachGuards:h,beforeResolveGuards:g,maxRedirects:_,tabBarPathSet:v,resolveWithCodec:y,settleNavigationResult:b}=u;async function x(r){let i=e(f),o;try{o=y(r,i.path)}catch(e){return b(a(`push`,i,void 0,n(t.unknown,void 0,i,e)))}let s=await l({mode:`push`,target:o,from:i,nativeRouter:d,routeResolveCodec:p,namedRouteLookup:m,beforeEachGuards:h,beforeResolveGuards:g,maxRedirects:_,tabBarPathSet:v,resolveWithCodec:y});return b(s)}async function S(r){let i=e(f),o;try{o=y(r,i.path)}catch(e){return b(a(`replace`,i,void 0,n(t.unknown,void 0,i,e)))}let s=await l({mode:`replace`,target:o,from:i,nativeRouter:d,routeResolveCodec:p,namedRouteLookup:m,beforeEachGuards:h,beforeResolveGuards:g,maxRedirects:_,tabBarPathSet:v,resolveWithCodec:y});return b(s)}async function C(t=1){let n=e(f),c=o(t,n,y),l=await s({target:c,from:n,nativeRouter:d,beforeEachGuards:h,beforeResolveGuards:g,resolveWithCodec:y});if(l.failure)return b(l);let u=await r(d.navigateBack,{delta:t},c,n),p=i(u)?a(`back`,n,c,u):l;return b(p)}async function w(t){if(t<0)return C(Math.abs(t));if(t===0)return;let n=e(f);return b(a(`back`,n,void 0,c(n)))}async function T(){return w(1)}return{push:x,replace:S,back:C,go:w,forward:T}}export{u as createNavigationApi};
@@ -1 +1 @@
1
- import{runAfterEachHooks as e,runNavigationErrorHooks as t,shouldEmitNavigationError as n}from"./navigationCore.mjs";import{notifyRouteStateSync as r}from"./routeSync.mjs";function i(e,t,n,r){return{mode:e,from:t,to:n,failure:r}}function a(i){let{afterEachHooks:a,errorHandlers:o,nativeRouter:s,rejectOnError:c}=i;async function l(r){if(await e(a,{mode:r.mode,to:r.to,from:r.from,nativeRouter:s,failure:r.failure}),r.failure&&n(r.failure)){var i;await t(o,(i=r.failure.cause)==null?r.failure:i,{mode:r.mode,to:r.to,from:r.from,nativeRouter:s,failure:r.failure})}}function u(e){return c&&n(e)}async function d(e){if(e.failure||r(e.to?{route:e.to,source:`router`}:void 0),await l(e),e.failure&&u(e.failure))throw e.failure;return e.failure}return{emitNavigationAfterEach:l,settleNavigationResult:d}}export{a as createNavigationResultController,i as createNavigationRunResult};
1
+ import{notifyRouteStateSync as e}from"./routeSync.mjs";import{runAfterEachHooks as t,runNavigationErrorHooks as n,shouldEmitNavigationError as r}from"./navigationCore.mjs";function i(e,t,n,r){return{mode:e,from:t,to:n,failure:r}}function a(i){let{afterEachHooks:a,errorHandlers:o,nativeRouter:s,rejectOnError:c}=i;async function l(e){if(await t(a,{mode:e.mode,to:e.to,from:e.from,nativeRouter:s,failure:e.failure}),e.failure&&r(e.failure)){var i;await n(o,(i=e.failure.cause)==null?e.failure:i,{mode:e.mode,to:e.to,from:e.from,nativeRouter:s,failure:e.failure})}}function u(e){return c&&r(e)}async function d(t){if(t.failure||e(t.to?{route:t.to,source:`router`}:void 0),await l(t),t.failure&&u(t.failure))throw t.failure;return t.failure}return{emitNavigationAfterEach:l,settleNavigationResult:d}}export{a as createNavigationResultController,i as createNavigationRunResult};
@@ -1 +1 @@
1
- import{NavigationFailureType as e}from"./types.mjs";import{createNavigationFailure as t,executeNavigationMethod as n,isNavigationFailure as r,runNavigationGuards as i}from"./navigationCore.mjs";import{createAbsoluteRoutePath as a}from"../routerInternal/path.mjs";import{resolveMatchedRouteRecord as o}from"../routerInternal/matching.mjs";import{createNativeRouteUrl as s,hasLocationQuery as c}from"../routerInternal/snapshots.mjs";import{createNavigationRunResult as l}from"./navigationResult.mjs";import{applyRedirectedFrom as u,createDuplicatedFailure as d,createHashOnlyNavigationFailure as f,createTabBarQueryFailure as p,createTooManyRedirectsFailure as m,resolveRouteRecordRedirect as h}from"./navigationTargetHelpers.mjs";async function g(g){let{mode:_,target:v,from:y,nativeRouter:b,routeResolveCodec:x,namedRouteLookup:S,beforeEachGuards:C,beforeResolveGuards:w,maxRedirects:T,tabBarPathSet:E,resolveWithCodec:D,executeNative:O=!0,allowSameLocation:k=!1}=g,A=v,j=_,M=0;for(;;){var N;let g=E.has(A.path);if(s(A,x.stringifyQuery)===s(y,x.stringifyQuery)&&A.hash!==y.hash)return l(j,y,A,f(A,y));if(!k&&(g?A.path===y.path:A.fullPath===y.fullPath))return l(j,y,A,d(A,y));if(g&&c(A.query))return l(j,y,A,p(A,y));let _=await i(C,{mode:j,to:A,from:y,nativeRouter:b},D);if(_.status===`failure`)return l(j,y,A,_.failure);if(_.status===`redirect`){let e=_.target,t=_.replace===!0?`replace`:_.replace===!1?`push`:j;if(e.fullPath!==A.fullPath||t!==j){if(u(e,A),A=e,j=t,M+=1,M>T)return l(j,y,A,m(A,y,T));continue}}let v=o(A,S),P=(N=v==null?void 0:v.matchedRecords)==null?[]:N,F=!1;for(let n of P){if(n.redirect===void 0)continue;let r;try{r=await h(n.redirect,A,y,D)}catch(n){return l(j,y,A,t(e.aborted,A,y,n))}let i=r.replace===!1?`push`:`replace`,a=r.target;if(a.fullPath!==A.fullPath||i!==j){if(u(a,A),A=a,j=i,M+=1,M>T)return l(j,y,A,m(A,y,T));F=!0;break}}if(F)continue;let I=!1;for(let e of P){if(e.beforeEnterGuards.length===0)continue;let t=await i(new Set(e.beforeEnterGuards),{mode:j,to:A,from:y,nativeRouter:b},D);if(t.status===`failure`)return l(j,y,A,t.failure);if(t.status===`redirect`){let e=t.target,n=t.replace===!0?`replace`:t.replace===!1?`push`:j;if(e.fullPath!==A.fullPath||n!==j){if(u(e,A),A=e,j=n,M+=1,M>T)return l(j,y,A,m(A,y,T));I=!0;break}}}if(I)continue;let L=await i(w,{mode:j,to:A,from:y,nativeRouter:b},D);if(L.status===`failure`)return l(j,y,A,L.failure);if(L.status===`redirect`){let e=L.target,t=L.replace===!0?`replace`:L.replace===!1?`push`:j;if(e.fullPath!==A.fullPath||t!==j){if(u(e,A),A=e,j=t,M+=1,M>T)return l(j,y,A,m(A,y,T));continue}}if(!O)return l(j,y,A);if(g){let e=await n(b.switchTab,{url:a(A.path)},A,y);return r(e)?l(j,y,A,e):l(j,y,A)}let R=j===`push`?b.navigateTo:b.redirectTo,z=await n(R,{url:s(A,x.stringifyQuery)},A,y);return r(z)?l(j,y,A,z):l(j,y,A)}}export{g as navigateWithTarget};
1
+ import{createAbsoluteRoutePath as e}from"../routerInternal/path.mjs";import{resolveMatchedRouteRecord as t}from"../routerInternal/matching.mjs";import{createNativeRouteUrl as n,hasLocationQuery as r}from"../routerInternal/snapshots.mjs";import{NavigationFailureType as i}from"./types.mjs";import{createNavigationFailure as a,executeNavigationMethod as o,isNavigationFailure as s,runNavigationGuards as c}from"./navigationCore.mjs";import{createNavigationRunResult as l}from"./navigationResult.mjs";import{applyRedirectedFrom as u,createDuplicatedFailure as d,createHashOnlyNavigationFailure as f,createTabBarQueryFailure as p,createTooManyRedirectsFailure as m,resolveRouteRecordRedirect as h}from"./navigationTargetHelpers.mjs";async function g(g){let{mode:_,target:v,from:y,nativeRouter:b,routeResolveCodec:x,namedRouteLookup:S,beforeEachGuards:C,beforeResolveGuards:w,maxRedirects:T,tabBarPathSet:E,resolveWithCodec:D,executeNative:O=!0,allowSameLocation:k=!1}=g,A=v,j=_,M=0;for(;;){var N;let g=E.has(A.path);if(n(A,x.stringifyQuery)===n(y,x.stringifyQuery)&&A.hash!==y.hash)return l(j,y,A,f(A,y));if(!k&&(g?A.path===y.path:A.fullPath===y.fullPath))return l(j,y,A,d(A,y));if(g&&r(A.query))return l(j,y,A,p(A,y));let _=await c(C,{mode:j,to:A,from:y,nativeRouter:b},D);if(_.status===`failure`)return l(j,y,A,_.failure);if(_.status===`redirect`){let e=_.target,t=_.replace===!0?`replace`:_.replace===!1?`push`:j;if(e.fullPath!==A.fullPath||t!==j){if(u(e,A),A=e,j=t,M+=1,M>T)return l(j,y,A,m(A,y,T));continue}}let v=t(A,S),P=(N=v==null?void 0:v.matchedRecords)==null?[]:N,F=!1;for(let e of P){if(e.redirect===void 0)continue;let t;try{t=await h(e.redirect,A,y,D)}catch(e){return l(j,y,A,a(i.aborted,A,y,e))}let n=t.replace===!1?`push`:`replace`,r=t.target;if(r.fullPath!==A.fullPath||n!==j){if(u(r,A),A=r,j=n,M+=1,M>T)return l(j,y,A,m(A,y,T));F=!0;break}}if(F)continue;let I=!1;for(let e of P){if(e.beforeEnterGuards.length===0)continue;let t=await c(new Set(e.beforeEnterGuards),{mode:j,to:A,from:y,nativeRouter:b},D);if(t.status===`failure`)return l(j,y,A,t.failure);if(t.status===`redirect`){let e=t.target,n=t.replace===!0?`replace`:t.replace===!1?`push`:j;if(e.fullPath!==A.fullPath||n!==j){if(u(e,A),A=e,j=n,M+=1,M>T)return l(j,y,A,m(A,y,T));I=!0;break}}}if(I)continue;let L=await c(w,{mode:j,to:A,from:y,nativeRouter:b},D);if(L.status===`failure`)return l(j,y,A,L.failure);if(L.status===`redirect`){let e=L.target,t=L.replace===!0?`replace`:L.replace===!1?`push`:j;if(e.fullPath!==A.fullPath||t!==j){if(u(e,A),A=e,j=t,M+=1,M>T)return l(j,y,A,m(A,y,T));continue}}if(!O)return l(j,y,A);if(g){let t=await o(b.switchTab,{url:e(A.path)},A,y);return s(t)?l(j,y,A,t):l(j,y,A)}let R=j===`push`?b.navigateTo:b.redirectTo,z=await o(R,{url:n(A,x.stringifyQuery)},A,y);return s(z)?l(j,y,A,z):l(j,y,A)}}export{g as navigateWithTarget};
@@ -1 +1 @@
1
- import{NavigationFailureType as e}from"./types.mjs";import{createNavigationFailure as t,isNavigationRedirectCandidate as n}from"./navigationCore.mjs";import{cloneRouteLocationRedirectedFrom as r,createRedirectedFromSnapshot as i}from"../routerInternal/snapshots.mjs";function a(n,r){return t(e.duplicated,n,r,`Avoided redundant navigation to current location`)}function o(n,r){return t(e.aborted,n,r,`switchTab does not support query parameters`)}function s(n,r,i){return t(e.aborted,n,r,`Navigation redirected more than ${i} times`)}function c(n,r){return t(e.aborted,n,r,`Hash-only navigation is not supported in mini-program router`)}function l(n){return t(e.aborted,void 0,n,`Forward navigation is not supported in mini-program router`)}function u(e,t){e.redirectedFrom=t.redirectedFrom?r(t.redirectedFrom):i(t)}async function d(e,t,r,i){let a=typeof e==`function`?await e(t,r):e;return n(a)?{target:i(a.to,t.path),replace:a.replace}:{target:i(a,t.path),replace:!0}}export{u as applyRedirectedFrom,a as createDuplicatedFailure,l as createForwardNotSupportedFailure,c as createHashOnlyNavigationFailure,o as createTabBarQueryFailure,s as createTooManyRedirectsFailure,d as resolveRouteRecordRedirect};
1
+ import{cloneRouteLocationRedirectedFrom as e,createRedirectedFromSnapshot as t}from"../routerInternal/snapshots.mjs";import{NavigationFailureType as n}from"./types.mjs";import{createNavigationFailure as r,isNavigationRedirectCandidate as i}from"./navigationCore.mjs";function a(e,t){return r(n.duplicated,e,t,`Avoided redundant navigation to current location`)}function o(e,t){return r(n.aborted,e,t,`switchTab does not support query parameters`)}function s(e,t,i){return r(n.aborted,e,t,`Navigation redirected more than ${i} times`)}function c(e,t){return r(n.aborted,e,t,`Hash-only navigation is not supported in mini-program router`)}function l(e){return r(n.aborted,void 0,e,`Forward navigation is not supported in mini-program router`)}function u(n,r){n.redirectedFrom=r.redirectedFrom?e(r.redirectedFrom):t(r)}async function d(e,t,n,r){let a=typeof e==`function`?await e(t,n):e;return i(a)?{target:r(a.to,t.path),replace:a.replace}:{target:r(a,t.path),replace:!0}}export{u as applyRedirectedFrom,a as createDuplicatedFailure,l as createForwardNotSupportedFailure,c as createHashOnlyNavigationFailure,o as createTabBarQueryFailure,s as createTooManyRedirectsFailure,d as resolveRouteRecordRedirect};
@@ -62,6 +62,7 @@ interface NavigationFailure extends Error {
62
62
  readonly cause?: unknown;
63
63
  }
64
64
  type NavigationMode = 'push' | 'replace' | 'back';
65
+ type InitialNavigationMode = 'eager' | 'blocking';
65
66
  interface NavigationRedirect {
66
67
  to: RouteLocationRaw;
67
68
  replace?: boolean;
@@ -123,6 +124,14 @@ interface UseRouterOptions {
123
124
  namedRoutes?: NamedRoutes;
124
125
  paramsMode?: RouteParamsMode;
125
126
  maxRedirects?: number;
127
+ /**
128
+ * 首屏导航守卫模式。默认立即挂载页面,只有明确配置 `blocking` 时才等待守卫完成。
129
+ */
130
+ initialNavigationMode?: InitialNavigationMode;
131
+ /**
132
+ * blocking 首屏导航守卫的最大等待时间(毫秒),超时后放行页面挂载。
133
+ */
134
+ initialNavigationTimeout?: number;
126
135
  parseQuery?: RouteQueryParser;
127
136
  stringifyQuery?: RouteQueryStringifier;
128
137
  /**
@@ -160,4 +169,4 @@ interface AddRoute {
160
169
  (parentName: string, route: RouteRecordRaw): () => void;
161
170
  }
162
171
  //#endregion
163
- export { AddRoute, LocationQuery, LocationQueryRaw, LocationQueryValue, LocationQueryValueRaw, NamedRouteRecord, NamedRoutes, NavigationAfterEach, NavigationAfterEachContext, NavigationErrorContext, NavigationErrorHandler, NavigationFailure, NavigationFailureType, NavigationFailureTypeValue, NavigationGuard, NavigationGuardContext, NavigationGuardResult, NavigationMode, NavigationRedirect, RouteLocationNormalizedLoaded, RouteLocationRaw, RouteLocationRedirectedFrom, RouteMeta, RouteParamValue, RouteParamValueRaw, RouteParams, RouteParamsMode, RouteParamsRaw, RouteQueryParser, RouteQueryStringifier, RouteRecordInput, RouteRecordMatched, RouteRecordRaw, RouteRecordRedirect, RouterNavigation, UseRouterOptions };
172
+ export { AddRoute, InitialNavigationMode, LocationQuery, LocationQueryRaw, LocationQueryValue, LocationQueryValueRaw, NamedRouteRecord, NamedRoutes, NavigationAfterEach, NavigationAfterEachContext, NavigationErrorContext, NavigationErrorHandler, NavigationFailure, NavigationFailureType, NavigationFailureTypeValue, NavigationGuard, NavigationGuardContext, NavigationGuardResult, NavigationMode, NavigationRedirect, RouteLocationNormalizedLoaded, RouteLocationRaw, RouteLocationRedirectedFrom, RouteMeta, RouteParamValue, RouteParamValueRaw, RouteParams, RouteParamsMode, RouteParamsRaw, RouteQueryParser, RouteQueryStringifier, RouteRecordInput, RouteRecordMatched, RouteRecordRaw, RouteRecordRedirect, RouterNavigation, UseRouterOptions };
@@ -1 +1 @@
1
- import{reactive as e}from"../reactivity/reactive.mjs";import{readonly as t}from"../reactivity/readonly.mjs";import{getCurrentSetupContext as n}from"../runtime/hooks/base.mjs";import{onLoad as r,onReady as i,onRouteDone as a,onShow as o,onUnload as s}from"../runtime/hooks/register.mjs";import{getActiveRouter as c}from"./instance.mjs";import{registerRouteStateSyncHandler as l}from"./routeSync.mjs";import{resolveCurrentRoute as u,resolvePageRoute as d}from"../routerInternal/location.mjs";import{cloneLocationQuery as f,cloneRouteLocationRedirectedFrom as p,cloneRouteMeta as m,cloneRouteParams as h,cloneRouteRecordMatchedList as g}from"../routerInternal/snapshots.mjs";import{useNativePageRouter as _,useNativeRouter as v}from"../runtime/vueCompat/router.mjs";import{resolveRouteLocation as y}from"./resolve.mjs";function b(e,t){e.path=t.path,e.fullPath=t.fullPath,e.query=f(t.query),e.hash=t.hash,e.params=h(t.params),t.name===void 0?delete e.name:e.name=t.name,t.meta===void 0?delete e.meta:e.meta=m(t.meta),t.href===void 0?delete e.href:e.href=t.href,t.matched===void 0?delete e.matched:e.matched=g(t.matched),t.redirectedFrom===void 0?delete e.redirectedFrom:e.redirectedFrom=p(t.redirectedFrom)}function x(p={}){var m;let g=n();if(!g)throw Error(`useRoute() 必须在 setup() 的同步阶段调用`);let _=g.instance,v=(m=p.resolveRoute)==null?(e=>{var t,n;return(t=(n=c())==null?void 0:n.resolve(e))==null?e:t}):m,x=v(u(void 0,_)),S=e({path:x.path,fullPath:x.fullPath,query:f(x.query),hash:x.hash,params:h(x.params)});b(S,x);function C(e,t,n){let r=v(t||u(e,_));if(n){var i;(i=p.beforeRouteStateSync)==null||i.call(p,r,n)}b(S,r)}r(e=>{C(e)}),i(()=>{C()}),o(()=>{C()}),a(()=>{C()});let w=l(e=>{if(e!=null&&e.route){C(void 0,e.route,e);return}if(e!=null&&e.page){C(void 0,d(e.page),e);return}if(e!=null&&e.url){C(void 0,y(e.url,S.path),e);return}C(void 0,void 0,e)});return s(()=>{w()}),{route:t(S)}}function S(e={}){return x(e).route}function C(){return v()}function w(){return _()}export{x as createRouteStateController,w as useNativePageRouter,C as useNativeRouter,S as useRoute};
1
+ import{reactive as e}from"../reactivity/reactive.mjs";import{readonly as t}from"../reactivity/readonly.mjs";import{getCurrentMiniProgramPages as n}from"../runtime/platform.mjs";import{getCurrentSetupContext as r}from"../runtime/hooks/base.mjs";import{onLoad as i,onReady as a,onRouteDone as o,onShow as s,onUnload as c}from"../runtime/hooks/register.mjs";import{getActiveRouter as l}from"./instance.mjs";import{registerRouteStateSyncHandler as u}from"./routeSync.mjs";import{resolveCurrentRoute as d,resolvePageRoute as f}from"../routerInternal/location.mjs";import{cloneLocationQuery as p,cloneRouteLocationRedirectedFrom as m,cloneRouteMeta as h,cloneRouteParams as g,cloneRouteRecordMatchedList as _}from"../routerInternal/snapshots.mjs";import{useNativePageRouter as v,useNativeRouter as y}from"../runtime/vueCompat/router.mjs";import{resolveRouteLocation as b}from"./resolve.mjs";function x(e){return typeof e.route==`string`||typeof e.__route__==`string`}function S(e,t,r){if((r==null?void 0:r.source)===`router`||!t)return!0;if(r!=null&&r.page)return r.page===e;let i=n();return i[i.length-1]===e}function C(e,t){e.path=t.path,e.fullPath=t.fullPath,e.query=p(t.query),e.hash=t.hash,e.params=g(t.params),t.name===void 0?delete e.name:e.name=t.name,t.meta===void 0?delete e.meta:e.meta=h(t.meta),t.href===void 0?delete e.href:e.href=t.href,t.matched===void 0?delete e.matched:e.matched=_(t.matched),t.redirectedFrom===void 0?delete e.redirectedFrom:e.redirectedFrom=m(t.redirectedFrom)}function w(m={}){var h;let _=r();if(!_)throw Error(`useRoute() 必须在 setup() 的同步阶段调用`);let v=_.instance,y=(h=m.resolveRoute)==null?(e=>{var t,n;return(t=(n=l())==null?void 0:n.resolve(e))==null?e:t}):h,w=y(d(void 0,v)),T=x(v)||n().includes(v),E=e({path:w.path,fullPath:w.fullPath,query:p(w.query),hash:w.hash,params:g(w.params)});C(E,w);function D(e,t,n){let r=y(t||d(e,v));if(n){var i;(i=m.beforeRouteStateSync)==null||i.call(m,r,n)}C(E,r)}i(e=>{D(e)}),a(()=>{D()}),s(()=>{D()}),o(()=>{D()});let O=u(e=>{if(S(v,T,e)){if(e!=null&&e.route){D(void 0,e.route,e);return}if(e!=null&&e.page){D(void 0,f(e.page),e);return}if(e!=null&&e.url){D(void 0,b(e.url,E.path),e);return}D(void 0,void 0,e)}});return c(()=>{O()}),{route:t(E)}}function T(e={}){return w(e).route}function E(){return y()}function D(){return v()}export{w as createRouteStateController,D as useNativePageRouter,E as useNativeRouter,T as useRoute};