wevu 6.17.0 → 6.17.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 (30) hide show
  1. package/dist/dev/{base-C_Jux3cz.mjs → base-ii6cqKIl.mjs} +2 -2
  2. package/dist/dev/{base-C_Jux3cz.mjs.map → base-ii6cqKIl.mjs.map} +1 -1
  3. package/dist/dev/{computed-DKaBMLFF.mjs → computed-4hT2jDra.mjs} +2 -2
  4. package/dist/dev/{computed-DKaBMLFF.mjs.map → computed-4hT2jDra.mjs.map} +1 -1
  5. package/dist/dev/index.mjs +9 -9
  6. package/dist/dev/internal-reactivity.mjs +5 -5
  7. package/dist/dev/internal-runtime.mjs +3 -3
  8. package/dist/dev/internal-template.mjs +1 -1
  9. package/dist/dev/{ref-Beyx3EmJ.mjs → ref-Bxwe2Kfo.mjs} +5 -5
  10. package/dist/dev/{ref-Beyx3EmJ.mjs.map → ref-Bxwe2Kfo.mjs.map} +1 -1
  11. package/dist/dev/{router-CQIgz5Q_.mjs → router-D6H7HviN.mjs} +2 -2
  12. package/dist/dev/{router-CQIgz5Q_.mjs.map → router-D6H7HviN.mjs.map} +1 -1
  13. package/dist/dev/router.mjs +3 -3
  14. package/dist/dev/{store-Dzij_OWm.mjs → store-7lzhCASj.mjs} +3 -3
  15. package/dist/dev/{store-Dzij_OWm.mjs.map → store-7lzhCASj.mjs.map} +1 -1
  16. package/dist/dev/store.mjs +1 -1
  17. package/dist/dev/{template-QtiM6Ubi.mjs → template-DLHZbQ3E.mjs} +2 -2
  18. package/dist/dev/{template-QtiM6Ubi.mjs.map → template-DLHZbQ3E.mjs.map} +1 -1
  19. package/dist/dev/{templateRef-BxL-pQJJ.mjs → templateRef-i3T-mULF.mjs} +19 -17
  20. package/dist/dev/{templateRef-BxL-pQJJ.mjs.map → templateRef-i3T-mULF.mjs.map} +1 -1
  21. package/dist/dev/{toRefs-BNWU48nG.mjs → toRefs-BVrN7XKZ.mjs} +2 -2
  22. package/dist/dev/{toRefs-BNWU48nG.mjs.map → toRefs-BVrN7XKZ.mjs.map} +1 -1
  23. package/dist/dev/vue-demi.mjs +9 -9
  24. package/dist/dev/{watch-BLUHj_gn.mjs → watch-B46crqgs.mjs} +3 -3
  25. package/dist/dev/{watch-BLUHj_gn.mjs.map → watch-B46crqgs.mjs.map} +1 -1
  26. package/dist/index.mjs +1 -1
  27. package/dist/internal-runtime.mjs +1 -1
  28. package/dist/{templateRef-DpUlTGua.mjs → templateRef-D5DblGpS.mjs} +1 -1
  29. package/dist/vue-demi.mjs +1 -1
  30. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"file":"router-CQIgz5Q_.mjs","names":[],"sources":["../../src/runtime/hooks/register.ts","../../src/runtime/provideStore.ts","../../src/runtime/provideContext.ts","../../src/runtime/register/component/lifecycle/platform.ts","../../src/runtime/provide.ts","../../src/routerInternal/path.ts","../../src/routerInternal/query.ts","../../src/routerInternal/location.ts","../../src/runtime/vueCompat/router.ts"],"sourcesContent":["import type {\n MiniProgramAddToFavoritesOption,\n MiniProgramLaunchOptions,\n MiniProgramMemoryWarningResult,\n MiniProgramPageLifetime,\n MiniProgramPageNotFoundOptions,\n MiniProgramPageResizeOption,\n MiniProgramPageScrollOption,\n MiniProgramSaveExitState,\n MiniProgramShareAppMessageOption,\n MiniProgramTabItemTapOption,\n MiniProgramThemeChangeResult,\n MiniProgramUnhandledRejectionResult,\n} from '../types'\nimport { assertInSetup, ensurePageHookOnInstance, ensurePageShareMenusOnSetup, ensureSinglePageHookOnInstance, pushHook } from './base'\n\nfunction registerHook(name: string, handler: (...args: any[]) => any, options?: { single?: boolean }) {\n pushHook(assertInSetup(name), name, handler as any, options as any)\n}\n\n// 生命周期注册辅助方法:必须在 setup() 同步执行阶段调用\nexport function onLaunch(handler: (options: MiniProgramLaunchOptions) => void) {\n registerHook('onLaunch', handler as any)\n}\n\nexport function onPageNotFound(handler: (options: MiniProgramPageNotFoundOptions) => void) {\n registerHook('onPageNotFound', handler as any)\n}\n\nexport function onUnhandledRejection(handler: (options: MiniProgramUnhandledRejectionResult) => void) {\n registerHook('onUnhandledRejection', handler as any)\n}\n\nexport function onThemeChange(handler: (options: MiniProgramThemeChangeResult) => void) {\n registerHook('onThemeChange', handler as any)\n}\n\nexport function onMemoryWarning(handler: (options: MiniProgramMemoryWarningResult) => void) {\n registerHook('onMemoryWarning', handler as any)\n}\n\nexport function onShow(handler: () => void): void\nexport function onShow(handler: (options: MiniProgramLaunchOptions) => void): void\nexport function onShow(handler: ((options?: any) => void)) {\n registerHook('onShow', handler as any)\n}\n\nexport function onLoad(handler: MiniProgramPageLifetime['onLoad']) {\n registerHook('onLoad', handler as any)\n}\n\nexport function onHide(handler: () => void) {\n registerHook('onHide', handler as any)\n}\n\nexport function onUnload(handler: () => void) {\n registerHook('onUnload', handler as any)\n}\n\nexport function onReady(handler: () => void) {\n registerHook('onReady', handler as any)\n}\n\nexport function onPullDownRefresh(handler: MiniProgramPageLifetime['onPullDownRefresh']) {\n registerHook('onPullDownRefresh', handler as any)\n}\n\nexport function onReachBottom(handler: MiniProgramPageLifetime['onReachBottom']) {\n registerHook('onReachBottom', handler as any)\n}\n\nexport function onPageScroll(handler: (opt: MiniProgramPageScrollOption) => void) {\n const instance = assertInSetup('onPageScroll')\n pushHook(instance, 'onPageScroll', handler as any)\n ensurePageHookOnInstance(instance, 'onPageScroll')\n}\n\nexport function onRouteDone(handler: MiniProgramPageLifetime['onRouteDone'] | ((opt?: unknown) => void)) {\n registerHook('onRouteDone', handler as any)\n}\n\nexport function onTabItemTap(handler: (opt: MiniProgramTabItemTapOption) => void) {\n registerHook('onTabItemTap', handler as any)\n}\n\nexport function onResize(handler: (opt: MiniProgramPageResizeOption) => void) {\n registerHook('onResize', handler as any)\n}\n\nexport function onMoved(handler: () => void) {\n registerHook('onMoved', handler as any)\n}\n\nexport function onAttached(handler: () => void) {\n registerHook('onAttached', handler as any)\n}\n\nexport function onDetached(handler: () => void) {\n registerHook('onDetached', handler as any)\n}\n\nexport function onError(handler: (err: any) => void) {\n registerHook('onError', handler as any)\n}\n\nexport function onSaveExitState(handler: () => MiniProgramSaveExitState) {\n registerHook('onSaveExitState', handler as any, { single: true })\n}\n\nexport function onShareAppMessage(handler: (options: MiniProgramShareAppMessageOption) => Record<string, any> | void) {\n const instance = assertInSetup('onShareAppMessage')\n pushHook(instance, 'onShareAppMessage', handler as any, { single: true } as any)\n ensureSinglePageHookOnInstance(instance, 'onShareAppMessage')\n ensurePageShareMenusOnSetup(instance)\n}\n\nexport function onShareTimeline(handler: MiniProgramPageLifetime['onShareTimeline']) {\n const instance = assertInSetup('onShareTimeline')\n pushHook(instance, 'onShareTimeline', handler as any, { single: true } as any)\n ensureSinglePageHookOnInstance(instance, 'onShareTimeline')\n ensurePageShareMenusOnSetup(instance)\n}\n\nexport function onAddToFavorites(handler: (options: MiniProgramAddToFavoritesOption) => Record<string, any> | void) {\n const instance = assertInSetup('onAddToFavorites')\n pushHook(instance, 'onAddToFavorites', handler as any, { single: true } as any)\n ensureSinglePageHookOnInstance(instance, 'onAddToFavorites')\n}\n","const wevuGlobalProvideStore = new Map<any, any>()\n\n/**\n * 写入全局 provide 存储,供运行时内部与兼容层复用。\n */\nexport function setGlobalProvidedValue<T>(key: any, value: T): void {\n wevuGlobalProvideStore.set(key, value)\n}\n\nexport function hasGlobalProvidedValue(key: any): boolean {\n return wevuGlobalProvideStore.has(key)\n}\n\nexport function getGlobalProvidedValue<T>(key: any): T {\n return wevuGlobalProvideStore.get(key) as T\n}\n","import type { InternalRuntimeState, RuntimeApp } from './types'\nimport {\n WEVU_APP_PROVIDES_KEY,\n WEVU_IS_APP_INSTANCE_KEY,\n WEVU_PARENT_INSTANCE_KEY,\n WEVU_PROVIDES_KEY,\n WEVU_RUNTIME_APP_KEY,\n} from '@weapp-core/constants'\nimport { setGlobalProvidedValue } from './provideStore'\n\nexport function isRuntimeAppInstance(instance: unknown): boolean {\n return Boolean(\n instance\n && typeof instance === 'object'\n && (instance as { [WEVU_IS_APP_INSTANCE_KEY]?: boolean })[WEVU_IS_APP_INSTANCE_KEY] === true,\n )\n}\n\nfunction createProvides(parent?: Record<PropertyKey, any>) {\n return Object.create(parent ?? null) as Record<PropertyKey, any>\n}\n\nfunction getRuntimeAppProvides(runtimeApp: RuntimeApp<any, any, any> | undefined): Record<PropertyKey, any> {\n if (!runtimeApp) {\n return createProvides()\n }\n const existing = runtimeApp[WEVU_APP_PROVIDES_KEY]\n if (existing && typeof existing === 'object') {\n return existing\n }\n const provides = createProvides()\n try {\n Object.defineProperty(runtimeApp, WEVU_APP_PROVIDES_KEY, {\n value: provides,\n configurable: true,\n enumerable: false,\n writable: false,\n })\n }\n catch {\n ;(runtimeApp as any)[WEVU_APP_PROVIDES_KEY] = provides\n }\n return provides\n}\n\nexport function attachInstanceProvides(\n instance: InternalRuntimeState,\n provides: Record<PropertyKey, any>,\n): void {\n try {\n Object.defineProperty(instance, WEVU_PROVIDES_KEY, {\n value: provides,\n configurable: true,\n enumerable: false,\n writable: true,\n })\n }\n catch {\n ;(instance as any)[WEVU_PROVIDES_KEY] = provides\n }\n}\n\nexport function getInstanceProvides(instance: InternalRuntimeState): Record<PropertyKey, any> {\n const existing = instance[WEVU_PROVIDES_KEY]\n if (existing && typeof existing === 'object') {\n return existing\n }\n\n const runtimeApp = instance[WEVU_RUNTIME_APP_KEY]\n const parentProvides = instance[WEVU_PARENT_INSTANCE_KEY]?.[WEVU_PROVIDES_KEY]\n ?? getRuntimeAppProvides(runtimeApp)\n const provides = isRuntimeAppInstance(instance)\n ? getRuntimeAppProvides(runtimeApp)\n : createProvides(parentProvides)\n attachInstanceProvides(instance, provides)\n return provides\n}\n\nexport function ensureRuntimeAppProvides(runtimeApp: RuntimeApp<any, any, any>): Record<PropertyKey, any> {\n return getRuntimeAppProvides(runtimeApp)\n}\n\nexport function setRuntimeAppProvidedValue<T>(runtimeApp: RuntimeApp<any, any, any>, key: any, value: T): void {\n getRuntimeAppProvides(runtimeApp)[key as PropertyKey] = value\n setGlobalProvidedValue(key, value)\n}\n\nexport function attachRuntimeProvideContext(\n instance: InternalRuntimeState,\n runtimeApp: RuntimeApp<any, any, any>,\n parentInstance?: InternalRuntimeState,\n): void {\n const appProvides = getRuntimeAppProvides(runtimeApp)\n const parentProvides = parentInstance?.[WEVU_PROVIDES_KEY] ?? appProvides\n const provides = isRuntimeAppInstance(instance)\n ? appProvides\n : createProvides(parentProvides)\n\n if (parentInstance) {\n try {\n Object.defineProperty(instance, WEVU_PARENT_INSTANCE_KEY, {\n value: parentInstance,\n configurable: true,\n enumerable: false,\n writable: true,\n })\n }\n catch {\n ;(instance as any)[WEVU_PARENT_INSTANCE_KEY] = parentInstance\n }\n }\n\n attachInstanceProvides(instance, provides)\n}\n\nfunction isPrototypeInChain(target: Record<PropertyKey, any>, candidate: Record<PropertyKey, any>) {\n let current = Object.getPrototypeOf(target)\n while (current) {\n if (current === candidate) {\n return true\n }\n current = Object.getPrototypeOf(current)\n }\n return false\n}\n\nexport function attachRuntimeLayoutProvideContext(\n layoutInstance: InternalRuntimeState,\n pageInstance: InternalRuntimeState,\n): void {\n const layoutProvides = getInstanceProvides(layoutInstance)\n const pageProvides = getInstanceProvides(pageInstance)\n if (\n layoutProvides === pageProvides\n || isPrototypeInChain(layoutProvides, pageProvides)\n || isPrototypeInChain(pageProvides, layoutProvides)\n ) {\n return\n }\n\n Object.setPrototypeOf(pageProvides, layoutProvides)\n\n try {\n Object.defineProperty(pageInstance, WEVU_PARENT_INSTANCE_KEY, {\n value: layoutInstance,\n configurable: true,\n enumerable: false,\n writable: true,\n })\n }\n catch {\n ;(pageInstance as any)[WEVU_PARENT_INSTANCE_KEY] = layoutInstance\n }\n}\n","import type { InternalRuntimeState } from '../../../types'\nimport { WEVU_PAGE_SCROLL_HOOK_DEPTH_KEY } from '@weapp-core/constants'\nimport { callHookList } from '../../../hooks'\nimport {\n getCurrentMiniProgramPages,\n getCurrentMiniProgramRuntimeCapabilities,\n getMiniProgramGlobalObject,\n supportsCurrentMiniProgramRuntimeCapability,\n} from '../../../platform'\n\nlet miniProgramGlobalPatched = false\nlet currentPageInstance: InternalRuntimeState | undefined\ntype ShareMenuName = 'shareAppMessage' | 'shareTimeline'\nexport function getCurrentPageInstance() {\n return currentPageInstance\n}\n\nexport function bindCurrentPageInstance(target: InternalRuntimeState) {\n currentPageInstance = target\n}\n\nexport function releaseCurrentPageInstance(target: InternalRuntimeState) {\n if (currentPageInstance === target) {\n currentPageInstance = undefined\n }\n}\n\nexport function runInPageScrollHook<T>(\n target: InternalRuntimeState,\n task: () => T,\n): T {\n const currentDepth = Number((target as any)[WEVU_PAGE_SCROLL_HOOK_DEPTH_KEY] ?? 0)\n ;(target as any)[WEVU_PAGE_SCROLL_HOOK_DEPTH_KEY] = currentDepth + 1\n try {\n return task()\n }\n finally {\n const nextDepth = Number((target as any)[WEVU_PAGE_SCROLL_HOOK_DEPTH_KEY] ?? 1) - 1\n if (nextDepth <= 0) {\n delete (target as any)[WEVU_PAGE_SCROLL_HOOK_DEPTH_KEY]\n }\n else {\n ;(target as any)[WEVU_PAGE_SCROLL_HOOK_DEPTH_KEY] = nextDepth\n }\n }\n}\n\nexport function resolvePageOptions(target: InternalRuntimeState) {\n const direct = (target as any).options\n if (direct && typeof direct === 'object') {\n return direct\n }\n const pages = getCurrentMiniProgramPages()\n const page = pages[pages.length - 1]\n const options = page && typeof page === 'object' ? (page as any).options : undefined\n if (options && typeof options === 'object') {\n return options\n }\n return {}\n}\n\nexport function ensureMiniProgramGlobalPatched() {\n if (miniProgramGlobalPatched) {\n return\n }\n miniProgramGlobalPatched = true\n const miniProgramGlobal = getMiniProgramGlobalObject()\n if (!miniProgramGlobal || typeof miniProgramGlobal !== 'object') {\n return\n }\n if (supportsCurrentMiniProgramRuntimeCapability('pullDownRefreshApi')) {\n const rawStartPullDownRefresh = miniProgramGlobal.startPullDownRefresh as ((...args: any[]) => any) | undefined\n if (typeof rawStartPullDownRefresh === 'function') {\n miniProgramGlobal.startPullDownRefresh = function startPullDownRefreshPatched(...args: any[]) {\n const result = rawStartPullDownRefresh.apply(this, args)\n if (currentPageInstance) {\n callHookList(currentPageInstance, 'onPullDownRefresh', [])\n }\n return result\n }\n }\n }\n if (supportsCurrentMiniProgramRuntimeCapability('pageScrollApi')) {\n const rawPageScrollTo = miniProgramGlobal.pageScrollTo as ((...args: any[]) => any) | undefined\n if (typeof rawPageScrollTo === 'function') {\n miniProgramGlobal.pageScrollTo = function pageScrollToPatched(options: any, ...rest: any[]) {\n const result = rawPageScrollTo.apply(this, [options, ...rest])\n if (currentPageInstance) {\n const pageInstance = currentPageInstance\n runInPageScrollHook(pageInstance, () => {\n callHookList(pageInstance, 'onPageScroll', [options ?? {}])\n })\n }\n return result\n }\n }\n }\n}\n\nexport function ensurePageShareMenus(options: {\n enableOnShareAppMessage: boolean\n enableOnShareTimeline: boolean\n}) {\n const { enableOnShareAppMessage, enableOnShareTimeline } = options\n if (!enableOnShareAppMessage && !enableOnShareTimeline) {\n return\n }\n\n if (!supportsCurrentMiniProgramRuntimeCapability('pageShareMenu')) {\n return\n }\n\n const miniProgramGlobal = getMiniProgramGlobalObject()\n if (!miniProgramGlobal || typeof miniProgramGlobal.showShareMenu !== 'function') {\n return\n }\n\n const runtimeCapabilities = getCurrentMiniProgramRuntimeCapabilities()\n const shouldShowShareAppMessage = runtimeCapabilities.shareTimelineRequiresShareAppMessage\n ? (enableOnShareAppMessage || enableOnShareTimeline)\n : enableOnShareAppMessage\n\n if (!shouldShowShareAppMessage && !enableOnShareTimeline) {\n return\n }\n\n const menus: ShareMenuName[] = []\n if (shouldShowShareAppMessage) {\n menus.push('shareAppMessage')\n }\n if (enableOnShareTimeline) {\n menus.push('shareTimeline')\n }\n\n const payloads = [\n { withShareTicket: true, menus },\n { menus },\n enableOnShareTimeline ? { withShareTicket: true } : undefined,\n enableOnShareTimeline ? {} : undefined,\n undefined,\n ]\n\n for (const payload of payloads) {\n try {\n if (payload === undefined) {\n miniProgramGlobal.showShareMenu()\n }\n else {\n miniProgramGlobal.showShareMenu(payload as any)\n }\n break\n }\n catch {\n // 继续尝试更保守的 payload,兼容不同宿主的 showShareMenu 参数形态。\n }\n }\n}\n","import { getCurrentInstance } from './hooks'\nimport {\n getInstanceProvides,\n isRuntimeAppInstance,\n} from './provideContext'\nimport {\n getGlobalProvidedValue,\n hasGlobalProvidedValue,\n setGlobalProvidedValue,\n} from './provideStore'\n\n// ============================================================================\n// 分层的 provide/inject 机制\n// 用于在组件树内维护依赖注入关系,支持组件与全局两种作用域\n// ============================================================================\n\nexport { setGlobalProvidedValue } from './provideStore'\n\n/**\n * 判断当前是否存在可用的注入上下文。\n *\n * wevu 的依赖注入上下文来自同步 `setup()` 阶段的当前实例。\n */\nexport function hasInjectionContext(): boolean {\n return Boolean(getCurrentInstance())\n}\n\n/**\n * 在组件上下文中向后代注入值(与 Vue 3 行为兼容),若没有当前实例则回落到全局存储。\n *\n * @param key 注入键,可为字符串、Symbol 或对象\n * @param value 提供的值\n *\n * @example\n * ```ts\n * defineComponent({\n * setup() {\n * provide(TOKEN_KEY, { data: 'value' })\n * }\n * })\n * ```\n */\nexport function provide<T>(key: any, value: T): void {\n const instance = getCurrentInstance()\n\n if (instance) {\n getInstanceProvides(instance)[key as PropertyKey] = value\n if (isRuntimeAppInstance(instance)) {\n setGlobalProvidedValue(key, value)\n }\n }\n else {\n // 全局模式:无组件实例时,兼容旧代码和纯函数场景\n setGlobalProvidedValue(key, value)\n }\n}\n\n/**\n * 从祖先组件(或全局存储)读取提供的值。\n *\n * @param key 注入键,需与 provide 使用的键保持一致\n * @param defaultValue 未找到提供者时的默认值\n * @returns 匹配到的值或默认值\n *\n * @example\n * ```ts\n * defineComponent({\n * setup() {\n * const data = inject(TOKEN_KEY)\n * const value = inject('key', 'default')\n * }\n * })\n * ```\n */\nexport function inject<T>(key: any, defaultValue: T): T\nexport function inject<T>(key: any): T | undefined\nexport function inject<T>(key: any, defaultValue?: T): T | undefined {\n const instance = getCurrentInstance()\n\n // 优先尝试基于实例的注入,找不到再回退全局\n if (instance) {\n const provides = getInstanceProvides(instance)\n if (key in provides) {\n return provides[key as PropertyKey] as T\n }\n }\n\n // 兼容性回退:尝试读取全局存储\n if (hasGlobalProvidedValue(key)) {\n return getGlobalProvidedValue(key)\n }\n\n // 使用默认值兜底\n if (arguments.length >= 2) {\n return defaultValue as T\n }\n\n const warn = globalThis.console?.warn\n if (typeof warn === 'function') {\n warn(`wevu.inject:未找到对应 key 的值:${String(key)}`)\n }\n\n return undefined\n}\n\n// ============================================================================\n// 显式的全局 provide/inject API\n// ============================================================================\n\n/**\n * 全局注入值,适用于历史兼容场景。\n *\n * @deprecated 已弃用,仅用于兼容/过渡。推荐优先使用 `provide()`,\n * 在无实例上下文时 `provide()` 会自动回落到全局存储。\n */\nexport function provideGlobal<T>(key: any, value: T): void {\n setGlobalProvidedValue(key, value)\n}\n\n/**\n * 从全局存储读取值,适用于历史兼容场景。\n *\n * @deprecated 已弃用,仅用于兼容/过渡。推荐优先使用 `inject()`,\n * 在无实例上下文时 `inject()` 会自动从全局存储读取。\n */\nexport function injectGlobal<T>(key: any, defaultValue?: T): T {\n if (hasGlobalProvidedValue(key)) {\n return getGlobalProvidedValue(key)\n }\n if (arguments.length >= 2) {\n return defaultValue as T\n }\n throw new Error(`injectGlobal():未找到对应 key 的 provider:${String(key)}`)\n}\n","function normalizePathSegments(path: string): string[] {\n const segments: string[] = []\n for (const segment of path.split('/')) {\n if (!segment || segment === '.') {\n continue\n }\n if (segment === '..') {\n if (segments.length > 0) {\n segments.pop()\n }\n continue\n }\n segments.push(segment)\n }\n return segments\n}\n\nexport function resolvePath(path: string, currentPath: string): string {\n if (!path) {\n return normalizePathSegments(currentPath).join('/')\n }\n\n if (path.startsWith('/')) {\n return normalizePathSegments(path).join('/')\n }\n\n if (path.startsWith('./') || path.startsWith('../')) {\n const baseSegments = normalizePathSegments(currentPath)\n if (baseSegments.length > 0) {\n baseSegments.pop()\n }\n\n for (const segment of path.split('/')) {\n if (!segment || segment === '.') {\n continue\n }\n if (segment === '..') {\n if (baseSegments.length > 0) {\n baseSegments.pop()\n }\n continue\n }\n baseSegments.push(segment)\n }\n\n return baseSegments.join('/')\n }\n\n return normalizePathSegments(path).join('/')\n}\n\nexport function createAbsoluteRoutePath(path: string): string {\n return path ? `/${path}` : '/'\n}\n\nconst DYNAMIC_ROUTE_RE = /(?:^|\\/):/\n\nexport function isDynamicRoutePath(path: string): boolean {\n return DYNAMIC_ROUTE_RE.test(path)\n}\n","import type {\n LocationQuery,\n LocationQueryRaw,\n LocationQueryValue,\n LocationQueryValueRaw,\n RouteParams,\n RouteParamsRaw,\n RouteParamValue,\n RouteParamValueRaw,\n} from '../router'\n\nconst PLUS_RE = /\\+/g\n\nfunction decodeQuerySegment(value: string): string {\n return decodeURIComponent(value.replace(PLUS_RE, ' '))\n}\n\nfunction encodeQuerySegment(value: string): string {\n return encodeURIComponent(value)\n}\n\nfunction pushQueryValue(target: LocationQuery, key: string, value: LocationQueryValue) {\n const previous = target[key]\n if (previous === undefined) {\n target[key] = value\n return\n }\n if (Array.isArray(previous)) {\n previous.push(value)\n return\n }\n target[key] = [previous, value]\n}\n\nfunction pushRouteParamValue(target: RouteParams, key: string, value: RouteParamValue) {\n const previous = target[key]\n if (previous === undefined) {\n target[key] = value\n return\n }\n if (Array.isArray(previous)) {\n previous.push(value)\n return\n }\n target[key] = [previous, value]\n}\n\nfunction normalizeQueryValue(value: LocationQueryValueRaw): LocationQueryValue | undefined {\n if (value === undefined) {\n return undefined\n }\n if (value === null) {\n return null\n }\n return String(value)\n}\n\nexport function normalizeQuery(query: LocationQueryRaw | LocationQuery): LocationQuery {\n const normalized: LocationQuery = {}\n for (const key of Object.keys(query)) {\n const rawValue = (query as Record<string, LocationQueryValueRaw | LocationQueryValueRaw[]>)[key]\n if (Array.isArray(rawValue)) {\n for (const item of rawValue) {\n const next = normalizeQueryValue(item)\n if (next !== undefined) {\n pushQueryValue(normalized, key, next)\n }\n }\n continue\n }\n const next = normalizeQueryValue(rawValue)\n if (next !== undefined) {\n pushQueryValue(normalized, key, next)\n }\n }\n return normalized\n}\n\nfunction normalizeRouteParamValue(value: RouteParamValueRaw): RouteParamValue | undefined {\n if (value === undefined || value === null) {\n return undefined\n }\n return String(value)\n}\n\nexport function normalizeRouteParams(params: RouteParamsRaw | RouteParams): RouteParams {\n const normalized: RouteParams = {}\n for (const key of Object.keys(params)) {\n const rawValue = (params as Record<string, RouteParamValueRaw | RouteParamValueRaw[]>)[key]\n if (Array.isArray(rawValue)) {\n for (const item of rawValue) {\n const next = normalizeRouteParamValue(item)\n if (next !== undefined) {\n pushRouteParamValue(normalized, key, next)\n }\n }\n continue\n }\n const next = normalizeRouteParamValue(rawValue)\n if (next !== undefined) {\n pushRouteParamValue(normalized, key, next)\n }\n }\n return normalized\n}\n\nexport function normalizeHash(rawHash?: string): string {\n if (!rawHash) {\n return ''\n }\n return rawHash.startsWith('#') ? rawHash : `#${rawHash}`\n}\n\nexport function parseQuery(search: string): LocationQuery {\n const normalizedSearch = search.startsWith('?') ? search.slice(1) : search\n const query: LocationQuery = {}\n\n if (!normalizedSearch) {\n return query\n }\n\n for (const segment of normalizedSearch.split('&')) {\n if (!segment) {\n continue\n }\n\n const equalIndex = segment.indexOf('=')\n const rawKey = equalIndex >= 0 ? segment.slice(0, equalIndex) : segment\n if (!rawKey) {\n continue\n }\n\n const key = decodeQuerySegment(rawKey)\n const value = equalIndex >= 0\n ? decodeQuerySegment(segment.slice(equalIndex + 1))\n : null\n\n pushQueryValue(query, key, value)\n }\n\n return query\n}\n\nexport function stringifyQuery(query: LocationQueryRaw | LocationQuery = {}): string {\n const normalizedQuery = normalizeQuery(query)\n const segments: string[] = []\n\n for (const key of Object.keys(normalizedQuery)) {\n const encodedKey = encodeQuerySegment(key)\n const rawValue = normalizedQuery[key]\n\n if (Array.isArray(rawValue)) {\n for (const item of rawValue) {\n if (item === null) {\n segments.push(encodedKey)\n }\n else {\n segments.push(`${encodedKey}=${encodeQuerySegment(item)}`)\n }\n }\n continue\n }\n\n if (rawValue === null) {\n segments.push(encodedKey)\n continue\n }\n\n segments.push(`${encodedKey}=${encodeQuerySegment(rawValue)}`)\n }\n\n return segments.join('&')\n}\n","import type {\n LocationQuery,\n LocationQueryRaw,\n RouteLocationNormalizedLoaded,\n RouteParams,\n RouteQueryStringifier,\n} from '../router'\nimport type { MiniProgramPageLike, RouteResolveCodec } from './types'\nimport { getCurrentMiniProgramPages } from '../runtime/platform'\nimport { getCurrentPageInstance } from '../runtime/register/component/lifecycle/platform'\nimport { createAbsoluteRoutePath, resolvePath } from './path'\nimport { normalizeHash, normalizeQuery, parseQuery, stringifyQuery } from './query'\n\nconst DEFAULT_ROUTE_RESOLVE_CODEC: RouteResolveCodec = {\n parseQuery,\n stringifyQuery,\n}\n\nexport function parsePathInput(\n input: string,\n codec: RouteResolveCodec = DEFAULT_ROUTE_RESOLVE_CODEC,\n): { path: string, query: LocationQuery, hash: string } {\n const hashIndex = input.indexOf('#')\n const withoutHash = hashIndex >= 0 ? input.slice(0, hashIndex) : input\n const hash = hashIndex >= 0 ? normalizeHash(input.slice(hashIndex + 1)) : ''\n const queryIndex = withoutHash.indexOf('?')\n\n if (queryIndex < 0) {\n return {\n path: withoutHash,\n query: {},\n hash,\n }\n }\n\n return {\n path: withoutHash.slice(0, queryIndex),\n query: normalizeQuery(codec.parseQuery(withoutHash.slice(queryIndex + 1))),\n hash,\n }\n}\n\nexport function createRouteLocation(\n path: string,\n query: LocationQuery,\n hash = '',\n name?: string,\n params: RouteParams = {},\n queryStringifier: RouteQueryStringifier = stringifyQuery,\n): RouteLocationNormalizedLoaded {\n const normalizedPath = resolvePath(path, '')\n const queryString = queryStringifier(query)\n const fullPathBase = createAbsoluteRoutePath(normalizedPath)\n const normalizedHash = normalizeHash(hash)\n const fullPath = queryString ? `${fullPathBase}?${queryString}` : fullPathBase\n const location: RouteLocationNormalizedLoaded = {\n path: normalizedPath,\n fullPath: normalizedHash ? `${fullPath}${normalizedHash}` : fullPath,\n query,\n hash: normalizedHash,\n params,\n }\n if (name !== undefined) {\n location.name = name\n }\n\n return location\n}\n\nfunction hasPageRoute(page: MiniProgramPageLike | undefined): page is MiniProgramPageLike {\n return (typeof page?.route === 'string' && page.route.length > 0)\n || (typeof page?.__route__ === 'string' && page.__route__.length > 0)\n}\n\nfunction getCurrentMiniProgramPage(fallbackPage?: MiniProgramPageLike): MiniProgramPageLike | undefined {\n const pages = getCurrentMiniProgramPages() as MiniProgramPageLike[]\n if (Array.isArray(pages) && pages.length > 0) {\n const currentPage = pages[pages.length - 1]\n if (hasPageRoute(currentPage)) {\n return currentPage\n }\n }\n\n const currentPageInstance = getCurrentPageInstance() as MiniProgramPageLike | undefined\n return hasPageRoute(currentPageInstance) ? currentPageInstance : fallbackPage\n}\n\nexport function resolveCurrentRoute(\n queryOverride?: LocationQueryRaw,\n fallbackPage?: MiniProgramPageLike,\n): RouteLocationNormalizedLoaded {\n const currentPage = getCurrentMiniProgramPage(fallbackPage)\n if (!currentPage) {\n return createRouteLocation('', {})\n }\n\n const rawPath = typeof currentPage.route === 'string'\n ? currentPage.route\n : typeof currentPage.__route__ === 'string'\n ? currentPage.__route__\n : ''\n\n const querySource = queryOverride ?? ((currentPage.options ?? {}) as LocationQueryRaw)\n const query = normalizeQuery(querySource)\n return createRouteLocation(rawPath, query, '', undefined, {})\n}\n","import type { SetupContextRouter } from '../types'\nimport { parsePathInput } from '../../routerInternal/location'\nimport { createAbsoluteRoutePath, resolvePath, stringifyQuery } from '../../routerInternal/shared'\nimport { getCurrentSetupContext } from '../hooks'\nimport { getCurrentMiniProgramGlobalRouter } from '../platform'\n\ntype RuntimeRouter = SetupContextRouter\ntype RuntimeRouterMethodName = 'switchTab' | 'reLaunch' | 'redirectTo' | 'navigateTo' | 'navigateBack'\ntype RuntimeRouterAccessor = 'router' | 'pageRouter'\n\nconst RUNTIME_ROUTER_METHODS: RuntimeRouterMethodName[] = ['switchTab', 'reLaunch', 'redirectTo', 'navigateTo', 'navigateBack']\nconst runtimeRouterWrapperCache = new WeakMap<RuntimeRouter, Map<string, RuntimeRouter>>()\n\nfunction isRuntimeRouter(candidate: unknown): candidate is RuntimeRouter {\n if (!candidate || typeof candidate !== 'object') {\n return false\n }\n return RUNTIME_ROUTER_METHODS.every((methodName) => {\n return typeof (candidate as Record<string, any>)[methodName] === 'function'\n })\n}\n\nfunction createGlobalRouterFallback(): RuntimeRouter | undefined {\n return getCurrentMiniProgramGlobalRouter()\n}\n\nfunction resolveBasePathCandidate(candidate: unknown): string | undefined {\n if (typeof candidate !== 'string' || !candidate) {\n return undefined\n }\n const normalized = resolvePath(candidate, '')\n return normalized || undefined\n}\n\nfunction resolveRouterBasePath(\n nativeInstance: Record<string, any>,\n accessor: RuntimeRouterAccessor,\n): string | undefined {\n const candidates = accessor === 'pageRouter'\n ? [nativeInstance.route, nativeInstance.__route__, nativeInstance.is]\n : [nativeInstance.is, nativeInstance.route, nativeInstance.__route__]\n\n for (const candidate of candidates) {\n const resolved = resolveBasePathCandidate(candidate)\n if (resolved) {\n return resolved\n }\n }\n\n return undefined\n}\n\nfunction resolveScopedRouterUrl(url: string, basePath?: string): string {\n if (!basePath || (!url.startsWith('./') && !url.startsWith('../'))) {\n return url\n }\n\n const { path, query, hash } = parsePathInput(url)\n const resolvedPath = createAbsoluteRoutePath(resolvePath(path, basePath))\n const queryString = stringifyQuery(query)\n return `${resolvedPath}${queryString ? `?${queryString}` : ''}${hash}`\n}\n\nfunction createScopedRuntimeRouter(rawRouter: RuntimeRouter, basePath?: string): RuntimeRouter {\n const cacheKey = basePath ?? ''\n const cachedByBasePath = runtimeRouterWrapperCache.get(rawRouter)\n const cachedRouter = cachedByBasePath?.get(cacheKey)\n if (cachedRouter) {\n return cachedRouter\n }\n\n const scopedRouter = Object.create(null) as RuntimeRouter\n for (const methodName of RUNTIME_ROUTER_METHODS) {\n ;(scopedRouter as Record<string, any>)[methodName] = (option: Record<string, any>) => {\n const rawMethod = (rawRouter as Record<string, any>)[methodName]\n if (methodName === 'navigateBack' || !option || typeof option !== 'object') {\n return rawMethod.call(rawRouter, option)\n }\n\n const nextUrl = typeof option.url === 'string'\n ? resolveScopedRouterUrl(option.url, basePath)\n : option.url\n const nextOption = nextUrl === option.url\n ? option\n : { ...option, url: nextUrl }\n return rawMethod.call(rawRouter, nextOption)\n }\n }\n\n const nextCache = cachedByBasePath ?? new Map<string, RuntimeRouter>()\n nextCache.set(cacheKey, scopedRouter)\n runtimeRouterWrapperCache.set(rawRouter, nextCache)\n return scopedRouter\n}\n\nfunction useRuntimeRouterByAccessor(\n primaryAccessor: RuntimeRouterAccessor,\n fallbackAccessor: RuntimeRouterAccessor,\n helperName: 'useNativeRouter' | 'useNativePageRouter',\n): RuntimeRouter {\n const ctx = getCurrentSetupContext<any>()\n if (!ctx?.instance) {\n throw new Error(`${helperName}() 必须在 setup() 的同步阶段调用`)\n }\n\n const nativeInstance = ctx.instance as Record<string, any>\n const basePath = resolveRouterBasePath(nativeInstance, primaryAccessor)\n const primaryRouter = nativeInstance[primaryAccessor]\n if (isRuntimeRouter(primaryRouter)) {\n return createScopedRuntimeRouter(primaryRouter, basePath)\n }\n\n const fallbackRouter = nativeInstance[fallbackAccessor]\n if (isRuntimeRouter(fallbackRouter)) {\n return createScopedRuntimeRouter(fallbackRouter, basePath)\n }\n\n const globalFallbackRouter = createGlobalRouterFallback()\n if (globalFallbackRouter) {\n return createScopedRuntimeRouter(globalFallbackRouter, basePath)\n }\n\n throw new Error('当前运行环境不支持 Router,请升级宿主基础库或检查平台路由能力')\n}\n\n/**\n * 在 setup 中获取与当前组件路径语义一致的原生 Router 对象。\n *\n * - 优先使用实例上的 `this.router`(组件路径语义)。\n * - 不可用时回退到 `this.pageRouter`。\n * - 低版本基础库再回退到宿主全局路由方法。\n *\n * 如需更贴近 Vue Router 的高阶能力(导航守卫、失败类型、统一解析),\n * 推荐改用 `wevu/router` 子入口的 `useRouter()`。\n */\nexport function useNativeRouter(): RuntimeRouter {\n return useRuntimeRouterByAccessor('router', 'pageRouter', 'useNativeRouter')\n}\n\n/**\n * 在 setup 中获取与当前页面路径语义一致的原生 Router 对象。\n *\n * - 优先使用实例上的 `this.pageRouter`(页面路径语义)。\n * - 不可用时回退到 `this.router`。\n * - 低版本基础库再回退到宿主全局路由方法。\n *\n * 如需更贴近 Vue Router 的高阶能力(导航守卫、失败类型、统一解析),\n * 推荐改用 `wevu/router` 子入口的 `useRouter()`。\n */\nexport function useNativePageRouter(): RuntimeRouter {\n return useRuntimeRouterByAccessor('pageRouter', 'router', 'useNativePageRouter')\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"router-D6H7HviN.mjs","names":[],"sources":["../../src/runtime/hooks/register.ts","../../src/runtime/provideStore.ts","../../src/runtime/provideContext.ts","../../src/runtime/register/component/lifecycle/platform.ts","../../src/runtime/provide.ts","../../src/routerInternal/path.ts","../../src/routerInternal/query.ts","../../src/routerInternal/location.ts","../../src/runtime/vueCompat/router.ts"],"sourcesContent":["import type {\n MiniProgramAddToFavoritesOption,\n MiniProgramLaunchOptions,\n MiniProgramMemoryWarningResult,\n MiniProgramPageLifetime,\n MiniProgramPageNotFoundOptions,\n MiniProgramPageResizeOption,\n MiniProgramPageScrollOption,\n MiniProgramSaveExitState,\n MiniProgramShareAppMessageOption,\n MiniProgramTabItemTapOption,\n MiniProgramThemeChangeResult,\n MiniProgramUnhandledRejectionResult,\n} from '../types'\nimport { assertInSetup, ensurePageHookOnInstance, ensurePageShareMenusOnSetup, ensureSinglePageHookOnInstance, pushHook } from './base'\n\nfunction registerHook(name: string, handler: (...args: any[]) => any, options?: { single?: boolean }) {\n pushHook(assertInSetup(name), name, handler as any, options as any)\n}\n\n// 生命周期注册辅助方法:必须在 setup() 同步执行阶段调用\nexport function onLaunch(handler: (options: MiniProgramLaunchOptions) => void) {\n registerHook('onLaunch', handler as any)\n}\n\nexport function onPageNotFound(handler: (options: MiniProgramPageNotFoundOptions) => void) {\n registerHook('onPageNotFound', handler as any)\n}\n\nexport function onUnhandledRejection(handler: (options: MiniProgramUnhandledRejectionResult) => void) {\n registerHook('onUnhandledRejection', handler as any)\n}\n\nexport function onThemeChange(handler: (options: MiniProgramThemeChangeResult) => void) {\n registerHook('onThemeChange', handler as any)\n}\n\nexport function onMemoryWarning(handler: (options: MiniProgramMemoryWarningResult) => void) {\n registerHook('onMemoryWarning', handler as any)\n}\n\nexport function onShow(handler: () => void): void\nexport function onShow(handler: (options: MiniProgramLaunchOptions) => void): void\nexport function onShow(handler: ((options?: any) => void)) {\n registerHook('onShow', handler as any)\n}\n\nexport function onLoad(handler: MiniProgramPageLifetime['onLoad']) {\n registerHook('onLoad', handler as any)\n}\n\nexport function onHide(handler: () => void) {\n registerHook('onHide', handler as any)\n}\n\nexport function onUnload(handler: () => void) {\n registerHook('onUnload', handler as any)\n}\n\nexport function onReady(handler: () => void) {\n registerHook('onReady', handler as any)\n}\n\nexport function onPullDownRefresh(handler: MiniProgramPageLifetime['onPullDownRefresh']) {\n registerHook('onPullDownRefresh', handler as any)\n}\n\nexport function onReachBottom(handler: MiniProgramPageLifetime['onReachBottom']) {\n registerHook('onReachBottom', handler as any)\n}\n\nexport function onPageScroll(handler: (opt: MiniProgramPageScrollOption) => void) {\n const instance = assertInSetup('onPageScroll')\n pushHook(instance, 'onPageScroll', handler as any)\n ensurePageHookOnInstance(instance, 'onPageScroll')\n}\n\nexport function onRouteDone(handler: MiniProgramPageLifetime['onRouteDone'] | ((opt?: unknown) => void)) {\n registerHook('onRouteDone', handler as any)\n}\n\nexport function onTabItemTap(handler: (opt: MiniProgramTabItemTapOption) => void) {\n registerHook('onTabItemTap', handler as any)\n}\n\nexport function onResize(handler: (opt: MiniProgramPageResizeOption) => void) {\n registerHook('onResize', handler as any)\n}\n\nexport function onMoved(handler: () => void) {\n registerHook('onMoved', handler as any)\n}\n\nexport function onAttached(handler: () => void) {\n registerHook('onAttached', handler as any)\n}\n\nexport function onDetached(handler: () => void) {\n registerHook('onDetached', handler as any)\n}\n\nexport function onError(handler: (err: any) => void) {\n registerHook('onError', handler as any)\n}\n\nexport function onSaveExitState(handler: () => MiniProgramSaveExitState) {\n registerHook('onSaveExitState', handler as any, { single: true })\n}\n\nexport function onShareAppMessage(handler: (options: MiniProgramShareAppMessageOption) => Record<string, any> | void) {\n const instance = assertInSetup('onShareAppMessage')\n pushHook(instance, 'onShareAppMessage', handler as any, { single: true } as any)\n ensureSinglePageHookOnInstance(instance, 'onShareAppMessage')\n ensurePageShareMenusOnSetup(instance)\n}\n\nexport function onShareTimeline(handler: MiniProgramPageLifetime['onShareTimeline']) {\n const instance = assertInSetup('onShareTimeline')\n pushHook(instance, 'onShareTimeline', handler as any, { single: true } as any)\n ensureSinglePageHookOnInstance(instance, 'onShareTimeline')\n ensurePageShareMenusOnSetup(instance)\n}\n\nexport function onAddToFavorites(handler: (options: MiniProgramAddToFavoritesOption) => Record<string, any> | void) {\n const instance = assertInSetup('onAddToFavorites')\n pushHook(instance, 'onAddToFavorites', handler as any, { single: true } as any)\n ensureSinglePageHookOnInstance(instance, 'onAddToFavorites')\n}\n","const wevuGlobalProvideStore = new Map<any, any>()\n\n/**\n * 写入全局 provide 存储,供运行时内部与兼容层复用。\n */\nexport function setGlobalProvidedValue<T>(key: any, value: T): void {\n wevuGlobalProvideStore.set(key, value)\n}\n\nexport function hasGlobalProvidedValue(key: any): boolean {\n return wevuGlobalProvideStore.has(key)\n}\n\nexport function getGlobalProvidedValue<T>(key: any): T {\n return wevuGlobalProvideStore.get(key) as T\n}\n","import type { InternalRuntimeState, RuntimeApp } from './types'\nimport {\n WEVU_APP_PROVIDES_KEY,\n WEVU_IS_APP_INSTANCE_KEY,\n WEVU_PARENT_INSTANCE_KEY,\n WEVU_PROVIDES_KEY,\n WEVU_RUNTIME_APP_KEY,\n} from '@weapp-core/constants'\nimport { setGlobalProvidedValue } from './provideStore'\n\nexport function isRuntimeAppInstance(instance: unknown): boolean {\n return Boolean(\n instance\n && typeof instance === 'object'\n && (instance as { [WEVU_IS_APP_INSTANCE_KEY]?: boolean })[WEVU_IS_APP_INSTANCE_KEY] === true,\n )\n}\n\nfunction createProvides(parent?: Record<PropertyKey, any>) {\n return Object.create(parent ?? null) as Record<PropertyKey, any>\n}\n\nfunction getRuntimeAppProvides(runtimeApp: RuntimeApp<any, any, any> | undefined): Record<PropertyKey, any> {\n if (!runtimeApp) {\n return createProvides()\n }\n const existing = runtimeApp[WEVU_APP_PROVIDES_KEY]\n if (existing && typeof existing === 'object') {\n return existing\n }\n const provides = createProvides()\n try {\n Object.defineProperty(runtimeApp, WEVU_APP_PROVIDES_KEY, {\n value: provides,\n configurable: true,\n enumerable: false,\n writable: false,\n })\n }\n catch {\n ;(runtimeApp as any)[WEVU_APP_PROVIDES_KEY] = provides\n }\n return provides\n}\n\nexport function attachInstanceProvides(\n instance: InternalRuntimeState,\n provides: Record<PropertyKey, any>,\n): void {\n try {\n Object.defineProperty(instance, WEVU_PROVIDES_KEY, {\n value: provides,\n configurable: true,\n enumerable: false,\n writable: true,\n })\n }\n catch {\n ;(instance as any)[WEVU_PROVIDES_KEY] = provides\n }\n}\n\nexport function getInstanceProvides(instance: InternalRuntimeState): Record<PropertyKey, any> {\n const existing = instance[WEVU_PROVIDES_KEY]\n if (existing && typeof existing === 'object') {\n return existing\n }\n\n const runtimeApp = instance[WEVU_RUNTIME_APP_KEY]\n const parentProvides = instance[WEVU_PARENT_INSTANCE_KEY]?.[WEVU_PROVIDES_KEY]\n ?? getRuntimeAppProvides(runtimeApp)\n const provides = isRuntimeAppInstance(instance)\n ? getRuntimeAppProvides(runtimeApp)\n : createProvides(parentProvides)\n attachInstanceProvides(instance, provides)\n return provides\n}\n\nexport function ensureRuntimeAppProvides(runtimeApp: RuntimeApp<any, any, any>): Record<PropertyKey, any> {\n return getRuntimeAppProvides(runtimeApp)\n}\n\nexport function setRuntimeAppProvidedValue<T>(runtimeApp: RuntimeApp<any, any, any>, key: any, value: T): void {\n getRuntimeAppProvides(runtimeApp)[key as PropertyKey] = value\n setGlobalProvidedValue(key, value)\n}\n\nexport function attachRuntimeProvideContext(\n instance: InternalRuntimeState,\n runtimeApp: RuntimeApp<any, any, any>,\n parentInstance?: InternalRuntimeState,\n): void {\n const appProvides = getRuntimeAppProvides(runtimeApp)\n const parentProvides = parentInstance?.[WEVU_PROVIDES_KEY] ?? appProvides\n const provides = isRuntimeAppInstance(instance)\n ? appProvides\n : createProvides(parentProvides)\n\n if (parentInstance) {\n try {\n Object.defineProperty(instance, WEVU_PARENT_INSTANCE_KEY, {\n value: parentInstance,\n configurable: true,\n enumerable: false,\n writable: true,\n })\n }\n catch {\n ;(instance as any)[WEVU_PARENT_INSTANCE_KEY] = parentInstance\n }\n }\n\n attachInstanceProvides(instance, provides)\n}\n\nfunction isPrototypeInChain(target: Record<PropertyKey, any>, candidate: Record<PropertyKey, any>) {\n let current = Object.getPrototypeOf(target)\n while (current) {\n if (current === candidate) {\n return true\n }\n current = Object.getPrototypeOf(current)\n }\n return false\n}\n\nexport function attachRuntimeLayoutProvideContext(\n layoutInstance: InternalRuntimeState,\n pageInstance: InternalRuntimeState,\n): void {\n const layoutProvides = getInstanceProvides(layoutInstance)\n const pageProvides = getInstanceProvides(pageInstance)\n if (\n layoutProvides === pageProvides\n || isPrototypeInChain(layoutProvides, pageProvides)\n || isPrototypeInChain(pageProvides, layoutProvides)\n ) {\n return\n }\n\n Object.setPrototypeOf(pageProvides, layoutProvides)\n\n try {\n Object.defineProperty(pageInstance, WEVU_PARENT_INSTANCE_KEY, {\n value: layoutInstance,\n configurable: true,\n enumerable: false,\n writable: true,\n })\n }\n catch {\n ;(pageInstance as any)[WEVU_PARENT_INSTANCE_KEY] = layoutInstance\n }\n}\n","import type { InternalRuntimeState } from '../../../types'\nimport { WEVU_PAGE_SCROLL_HOOK_DEPTH_KEY } from '@weapp-core/constants'\nimport { callHookList } from '../../../hooks'\nimport {\n getCurrentMiniProgramPages,\n getCurrentMiniProgramRuntimeCapabilities,\n getMiniProgramGlobalObject,\n supportsCurrentMiniProgramRuntimeCapability,\n} from '../../../platform'\n\nlet miniProgramGlobalPatched = false\nlet currentPageInstance: InternalRuntimeState | undefined\ntype ShareMenuName = 'shareAppMessage' | 'shareTimeline'\nexport function getCurrentPageInstance() {\n return currentPageInstance\n}\n\nexport function bindCurrentPageInstance(target: InternalRuntimeState) {\n currentPageInstance = target\n}\n\nexport function releaseCurrentPageInstance(target: InternalRuntimeState) {\n if (currentPageInstance === target) {\n currentPageInstance = undefined\n }\n}\n\nexport function runInPageScrollHook<T>(\n target: InternalRuntimeState,\n task: () => T,\n): T {\n const currentDepth = Number((target as any)[WEVU_PAGE_SCROLL_HOOK_DEPTH_KEY] ?? 0)\n ;(target as any)[WEVU_PAGE_SCROLL_HOOK_DEPTH_KEY] = currentDepth + 1\n try {\n return task()\n }\n finally {\n const nextDepth = Number((target as any)[WEVU_PAGE_SCROLL_HOOK_DEPTH_KEY] ?? 1) - 1\n if (nextDepth <= 0) {\n delete (target as any)[WEVU_PAGE_SCROLL_HOOK_DEPTH_KEY]\n }\n else {\n ;(target as any)[WEVU_PAGE_SCROLL_HOOK_DEPTH_KEY] = nextDepth\n }\n }\n}\n\nexport function resolvePageOptions(target: InternalRuntimeState) {\n const direct = (target as any).options\n if (direct && typeof direct === 'object') {\n return direct\n }\n const pages = getCurrentMiniProgramPages()\n const page = pages[pages.length - 1]\n const options = page && typeof page === 'object' ? (page as any).options : undefined\n if (options && typeof options === 'object') {\n return options\n }\n return {}\n}\n\nexport function ensureMiniProgramGlobalPatched() {\n if (miniProgramGlobalPatched) {\n return\n }\n miniProgramGlobalPatched = true\n const miniProgramGlobal = getMiniProgramGlobalObject()\n if (!miniProgramGlobal || typeof miniProgramGlobal !== 'object') {\n return\n }\n if (supportsCurrentMiniProgramRuntimeCapability('pullDownRefreshApi')) {\n const rawStartPullDownRefresh = miniProgramGlobal.startPullDownRefresh as ((...args: any[]) => any) | undefined\n if (typeof rawStartPullDownRefresh === 'function') {\n miniProgramGlobal.startPullDownRefresh = function startPullDownRefreshPatched(...args: any[]) {\n const result = rawStartPullDownRefresh.apply(this, args)\n if (currentPageInstance) {\n callHookList(currentPageInstance, 'onPullDownRefresh', [])\n }\n return result\n }\n }\n }\n if (supportsCurrentMiniProgramRuntimeCapability('pageScrollApi')) {\n const rawPageScrollTo = miniProgramGlobal.pageScrollTo as ((...args: any[]) => any) | undefined\n if (typeof rawPageScrollTo === 'function') {\n miniProgramGlobal.pageScrollTo = function pageScrollToPatched(options: any, ...rest: any[]) {\n const result = rawPageScrollTo.apply(this, [options, ...rest])\n if (currentPageInstance) {\n const pageInstance = currentPageInstance\n runInPageScrollHook(pageInstance, () => {\n callHookList(pageInstance, 'onPageScroll', [options ?? {}])\n })\n }\n return result\n }\n }\n }\n}\n\nexport function ensurePageShareMenus(options: {\n enableOnShareAppMessage: boolean\n enableOnShareTimeline: boolean\n}) {\n const { enableOnShareAppMessage, enableOnShareTimeline } = options\n if (!enableOnShareAppMessage && !enableOnShareTimeline) {\n return\n }\n\n if (!supportsCurrentMiniProgramRuntimeCapability('pageShareMenu')) {\n return\n }\n\n const miniProgramGlobal = getMiniProgramGlobalObject()\n if (!miniProgramGlobal || typeof miniProgramGlobal.showShareMenu !== 'function') {\n return\n }\n\n const runtimeCapabilities = getCurrentMiniProgramRuntimeCapabilities()\n const shouldShowShareAppMessage = runtimeCapabilities.shareTimelineRequiresShareAppMessage\n ? (enableOnShareAppMessage || enableOnShareTimeline)\n : enableOnShareAppMessage\n\n if (!shouldShowShareAppMessage && !enableOnShareTimeline) {\n return\n }\n\n const menus: ShareMenuName[] = []\n if (shouldShowShareAppMessage) {\n menus.push('shareAppMessage')\n }\n if (enableOnShareTimeline) {\n menus.push('shareTimeline')\n }\n\n const payloads = [\n { withShareTicket: true, menus },\n { menus },\n enableOnShareTimeline ? { withShareTicket: true } : undefined,\n enableOnShareTimeline ? {} : undefined,\n undefined,\n ]\n\n for (const payload of payloads) {\n try {\n if (payload === undefined) {\n miniProgramGlobal.showShareMenu()\n }\n else {\n miniProgramGlobal.showShareMenu(payload as any)\n }\n break\n }\n catch {\n // 继续尝试更保守的 payload,兼容不同宿主的 showShareMenu 参数形态。\n }\n }\n}\n","import { getCurrentInstance } from './hooks'\nimport {\n getInstanceProvides,\n isRuntimeAppInstance,\n} from './provideContext'\nimport {\n getGlobalProvidedValue,\n hasGlobalProvidedValue,\n setGlobalProvidedValue,\n} from './provideStore'\n\n// ============================================================================\n// 分层的 provide/inject 机制\n// 用于在组件树内维护依赖注入关系,支持组件与全局两种作用域\n// ============================================================================\n\nexport { setGlobalProvidedValue } from './provideStore'\n\n/**\n * 判断当前是否存在可用的注入上下文。\n *\n * wevu 的依赖注入上下文来自同步 `setup()` 阶段的当前实例。\n */\nexport function hasInjectionContext(): boolean {\n return Boolean(getCurrentInstance())\n}\n\n/**\n * 在组件上下文中向后代注入值(与 Vue 3 行为兼容),若没有当前实例则回落到全局存储。\n *\n * @param key 注入键,可为字符串、Symbol 或对象\n * @param value 提供的值\n *\n * @example\n * ```ts\n * defineComponent({\n * setup() {\n * provide(TOKEN_KEY, { data: 'value' })\n * }\n * })\n * ```\n */\nexport function provide<T>(key: any, value: T): void {\n const instance = getCurrentInstance()\n\n if (instance) {\n getInstanceProvides(instance)[key as PropertyKey] = value\n if (isRuntimeAppInstance(instance)) {\n setGlobalProvidedValue(key, value)\n }\n }\n else {\n // 全局模式:无组件实例时,兼容旧代码和纯函数场景\n setGlobalProvidedValue(key, value)\n }\n}\n\n/**\n * 从祖先组件(或全局存储)读取提供的值。\n *\n * @param key 注入键,需与 provide 使用的键保持一致\n * @param defaultValue 未找到提供者时的默认值\n * @returns 匹配到的值或默认值\n *\n * @example\n * ```ts\n * defineComponent({\n * setup() {\n * const data = inject(TOKEN_KEY)\n * const value = inject('key', 'default')\n * }\n * })\n * ```\n */\nexport function inject<T>(key: any, defaultValue: T): T\nexport function inject<T>(key: any): T | undefined\nexport function inject<T>(key: any, defaultValue?: T): T | undefined {\n const instance = getCurrentInstance()\n\n // 优先尝试基于实例的注入,找不到再回退全局\n if (instance) {\n const provides = getInstanceProvides(instance)\n if (key in provides) {\n return provides[key as PropertyKey] as T\n }\n }\n\n // 兼容性回退:尝试读取全局存储\n if (hasGlobalProvidedValue(key)) {\n return getGlobalProvidedValue(key)\n }\n\n // 使用默认值兜底\n if (arguments.length >= 2) {\n return defaultValue as T\n }\n\n const warn = globalThis.console?.warn\n if (typeof warn === 'function') {\n warn(`wevu.inject:未找到对应 key 的值:${String(key)}`)\n }\n\n return undefined\n}\n\n// ============================================================================\n// 显式的全局 provide/inject API\n// ============================================================================\n\n/**\n * 全局注入值,适用于历史兼容场景。\n *\n * @deprecated 已弃用,仅用于兼容/过渡。推荐优先使用 `provide()`,\n * 在无实例上下文时 `provide()` 会自动回落到全局存储。\n */\nexport function provideGlobal<T>(key: any, value: T): void {\n setGlobalProvidedValue(key, value)\n}\n\n/**\n * 从全局存储读取值,适用于历史兼容场景。\n *\n * @deprecated 已弃用,仅用于兼容/过渡。推荐优先使用 `inject()`,\n * 在无实例上下文时 `inject()` 会自动从全局存储读取。\n */\nexport function injectGlobal<T>(key: any, defaultValue?: T): T {\n if (hasGlobalProvidedValue(key)) {\n return getGlobalProvidedValue(key)\n }\n if (arguments.length >= 2) {\n return defaultValue as T\n }\n throw new Error(`injectGlobal():未找到对应 key 的 provider:${String(key)}`)\n}\n","function normalizePathSegments(path: string): string[] {\n const segments: string[] = []\n for (const segment of path.split('/')) {\n if (!segment || segment === '.') {\n continue\n }\n if (segment === '..') {\n if (segments.length > 0) {\n segments.pop()\n }\n continue\n }\n segments.push(segment)\n }\n return segments\n}\n\nexport function resolvePath(path: string, currentPath: string): string {\n if (!path) {\n return normalizePathSegments(currentPath).join('/')\n }\n\n if (path.startsWith('/')) {\n return normalizePathSegments(path).join('/')\n }\n\n if (path.startsWith('./') || path.startsWith('../')) {\n const baseSegments = normalizePathSegments(currentPath)\n if (baseSegments.length > 0) {\n baseSegments.pop()\n }\n\n for (const segment of path.split('/')) {\n if (!segment || segment === '.') {\n continue\n }\n if (segment === '..') {\n if (baseSegments.length > 0) {\n baseSegments.pop()\n }\n continue\n }\n baseSegments.push(segment)\n }\n\n return baseSegments.join('/')\n }\n\n return normalizePathSegments(path).join('/')\n}\n\nexport function createAbsoluteRoutePath(path: string): string {\n return path ? `/${path}` : '/'\n}\n\nconst DYNAMIC_ROUTE_RE = /(?:^|\\/):/\n\nexport function isDynamicRoutePath(path: string): boolean {\n return DYNAMIC_ROUTE_RE.test(path)\n}\n","import type {\n LocationQuery,\n LocationQueryRaw,\n LocationQueryValue,\n LocationQueryValueRaw,\n RouteParams,\n RouteParamsRaw,\n RouteParamValue,\n RouteParamValueRaw,\n} from '../router'\n\nconst PLUS_RE = /\\+/g\n\nfunction decodeQuerySegment(value: string): string {\n return decodeURIComponent(value.replace(PLUS_RE, ' '))\n}\n\nfunction encodeQuerySegment(value: string): string {\n return encodeURIComponent(value)\n}\n\nfunction pushQueryValue(target: LocationQuery, key: string, value: LocationQueryValue) {\n const previous = target[key]\n if (previous === undefined) {\n target[key] = value\n return\n }\n if (Array.isArray(previous)) {\n previous.push(value)\n return\n }\n target[key] = [previous, value]\n}\n\nfunction pushRouteParamValue(target: RouteParams, key: string, value: RouteParamValue) {\n const previous = target[key]\n if (previous === undefined) {\n target[key] = value\n return\n }\n if (Array.isArray(previous)) {\n previous.push(value)\n return\n }\n target[key] = [previous, value]\n}\n\nfunction normalizeQueryValue(value: LocationQueryValueRaw): LocationQueryValue | undefined {\n if (value === undefined) {\n return undefined\n }\n if (value === null) {\n return null\n }\n return String(value)\n}\n\nexport function normalizeQuery(query: LocationQueryRaw | LocationQuery): LocationQuery {\n const normalized: LocationQuery = {}\n for (const key of Object.keys(query)) {\n const rawValue = (query as Record<string, LocationQueryValueRaw | LocationQueryValueRaw[]>)[key]\n if (Array.isArray(rawValue)) {\n for (const item of rawValue) {\n const next = normalizeQueryValue(item)\n if (next !== undefined) {\n pushQueryValue(normalized, key, next)\n }\n }\n continue\n }\n const next = normalizeQueryValue(rawValue)\n if (next !== undefined) {\n pushQueryValue(normalized, key, next)\n }\n }\n return normalized\n}\n\nfunction normalizeRouteParamValue(value: RouteParamValueRaw): RouteParamValue | undefined {\n if (value === undefined || value === null) {\n return undefined\n }\n return String(value)\n}\n\nexport function normalizeRouteParams(params: RouteParamsRaw | RouteParams): RouteParams {\n const normalized: RouteParams = {}\n for (const key of Object.keys(params)) {\n const rawValue = (params as Record<string, RouteParamValueRaw | RouteParamValueRaw[]>)[key]\n if (Array.isArray(rawValue)) {\n for (const item of rawValue) {\n const next = normalizeRouteParamValue(item)\n if (next !== undefined) {\n pushRouteParamValue(normalized, key, next)\n }\n }\n continue\n }\n const next = normalizeRouteParamValue(rawValue)\n if (next !== undefined) {\n pushRouteParamValue(normalized, key, next)\n }\n }\n return normalized\n}\n\nexport function normalizeHash(rawHash?: string): string {\n if (!rawHash) {\n return ''\n }\n return rawHash.startsWith('#') ? rawHash : `#${rawHash}`\n}\n\nexport function parseQuery(search: string): LocationQuery {\n const normalizedSearch = search.startsWith('?') ? search.slice(1) : search\n const query: LocationQuery = {}\n\n if (!normalizedSearch) {\n return query\n }\n\n for (const segment of normalizedSearch.split('&')) {\n if (!segment) {\n continue\n }\n\n const equalIndex = segment.indexOf('=')\n const rawKey = equalIndex >= 0 ? segment.slice(0, equalIndex) : segment\n if (!rawKey) {\n continue\n }\n\n const key = decodeQuerySegment(rawKey)\n const value = equalIndex >= 0\n ? decodeQuerySegment(segment.slice(equalIndex + 1))\n : null\n\n pushQueryValue(query, key, value)\n }\n\n return query\n}\n\nexport function stringifyQuery(query: LocationQueryRaw | LocationQuery = {}): string {\n const normalizedQuery = normalizeQuery(query)\n const segments: string[] = []\n\n for (const key of Object.keys(normalizedQuery)) {\n const encodedKey = encodeQuerySegment(key)\n const rawValue = normalizedQuery[key]\n\n if (Array.isArray(rawValue)) {\n for (const item of rawValue) {\n if (item === null) {\n segments.push(encodedKey)\n }\n else {\n segments.push(`${encodedKey}=${encodeQuerySegment(item)}`)\n }\n }\n continue\n }\n\n if (rawValue === null) {\n segments.push(encodedKey)\n continue\n }\n\n segments.push(`${encodedKey}=${encodeQuerySegment(rawValue)}`)\n }\n\n return segments.join('&')\n}\n","import type {\n LocationQuery,\n LocationQueryRaw,\n RouteLocationNormalizedLoaded,\n RouteParams,\n RouteQueryStringifier,\n} from '../router'\nimport type { MiniProgramPageLike, RouteResolveCodec } from './types'\nimport { getCurrentMiniProgramPages } from '../runtime/platform'\nimport { getCurrentPageInstance } from '../runtime/register/component/lifecycle/platform'\nimport { createAbsoluteRoutePath, resolvePath } from './path'\nimport { normalizeHash, normalizeQuery, parseQuery, stringifyQuery } from './query'\n\nconst DEFAULT_ROUTE_RESOLVE_CODEC: RouteResolveCodec = {\n parseQuery,\n stringifyQuery,\n}\n\nexport function parsePathInput(\n input: string,\n codec: RouteResolveCodec = DEFAULT_ROUTE_RESOLVE_CODEC,\n): { path: string, query: LocationQuery, hash: string } {\n const hashIndex = input.indexOf('#')\n const withoutHash = hashIndex >= 0 ? input.slice(0, hashIndex) : input\n const hash = hashIndex >= 0 ? normalizeHash(input.slice(hashIndex + 1)) : ''\n const queryIndex = withoutHash.indexOf('?')\n\n if (queryIndex < 0) {\n return {\n path: withoutHash,\n query: {},\n hash,\n }\n }\n\n return {\n path: withoutHash.slice(0, queryIndex),\n query: normalizeQuery(codec.parseQuery(withoutHash.slice(queryIndex + 1))),\n hash,\n }\n}\n\nexport function createRouteLocation(\n path: string,\n query: LocationQuery,\n hash = '',\n name?: string,\n params: RouteParams = {},\n queryStringifier: RouteQueryStringifier = stringifyQuery,\n): RouteLocationNormalizedLoaded {\n const normalizedPath = resolvePath(path, '')\n const queryString = queryStringifier(query)\n const fullPathBase = createAbsoluteRoutePath(normalizedPath)\n const normalizedHash = normalizeHash(hash)\n const fullPath = queryString ? `${fullPathBase}?${queryString}` : fullPathBase\n const location: RouteLocationNormalizedLoaded = {\n path: normalizedPath,\n fullPath: normalizedHash ? `${fullPath}${normalizedHash}` : fullPath,\n query,\n hash: normalizedHash,\n params,\n }\n if (name !== undefined) {\n location.name = name\n }\n\n return location\n}\n\nfunction hasPageRoute(page: MiniProgramPageLike | undefined): page is MiniProgramPageLike {\n return (typeof page?.route === 'string' && page.route.length > 0)\n || (typeof page?.__route__ === 'string' && page.__route__.length > 0)\n}\n\nfunction getCurrentMiniProgramPage(fallbackPage?: MiniProgramPageLike): MiniProgramPageLike | undefined {\n const pages = getCurrentMiniProgramPages() as MiniProgramPageLike[]\n if (Array.isArray(pages) && pages.length > 0) {\n const currentPage = pages[pages.length - 1]\n if (hasPageRoute(currentPage)) {\n return currentPage\n }\n }\n\n const currentPageInstance = getCurrentPageInstance() as MiniProgramPageLike | undefined\n return hasPageRoute(currentPageInstance) ? currentPageInstance : fallbackPage\n}\n\nexport function resolveCurrentRoute(\n queryOverride?: LocationQueryRaw,\n fallbackPage?: MiniProgramPageLike,\n): RouteLocationNormalizedLoaded {\n const currentPage = getCurrentMiniProgramPage(fallbackPage)\n if (!currentPage) {\n return createRouteLocation('', {})\n }\n\n const rawPath = typeof currentPage.route === 'string'\n ? currentPage.route\n : typeof currentPage.__route__ === 'string'\n ? currentPage.__route__\n : ''\n\n const querySource = queryOverride ?? ((currentPage.options ?? {}) as LocationQueryRaw)\n const query = normalizeQuery(querySource)\n return createRouteLocation(rawPath, query, '', undefined, {})\n}\n","import type { SetupContextRouter } from '../types'\nimport { parsePathInput } from '../../routerInternal/location'\nimport { createAbsoluteRoutePath, resolvePath, stringifyQuery } from '../../routerInternal/shared'\nimport { getCurrentSetupContext } from '../hooks'\nimport { getCurrentMiniProgramGlobalRouter } from '../platform'\n\ntype RuntimeRouter = SetupContextRouter\ntype RuntimeRouterMethodName = 'switchTab' | 'reLaunch' | 'redirectTo' | 'navigateTo' | 'navigateBack'\ntype RuntimeRouterAccessor = 'router' | 'pageRouter'\n\nconst RUNTIME_ROUTER_METHODS: RuntimeRouterMethodName[] = ['switchTab', 'reLaunch', 'redirectTo', 'navigateTo', 'navigateBack']\nconst runtimeRouterWrapperCache = new WeakMap<RuntimeRouter, Map<string, RuntimeRouter>>()\n\nfunction isRuntimeRouter(candidate: unknown): candidate is RuntimeRouter {\n if (!candidate || typeof candidate !== 'object') {\n return false\n }\n return RUNTIME_ROUTER_METHODS.every((methodName) => {\n return typeof (candidate as Record<string, any>)[methodName] === 'function'\n })\n}\n\nfunction createGlobalRouterFallback(): RuntimeRouter | undefined {\n return getCurrentMiniProgramGlobalRouter()\n}\n\nfunction resolveBasePathCandidate(candidate: unknown): string | undefined {\n if (typeof candidate !== 'string' || !candidate) {\n return undefined\n }\n const normalized = resolvePath(candidate, '')\n return normalized || undefined\n}\n\nfunction resolveRouterBasePath(\n nativeInstance: Record<string, any>,\n accessor: RuntimeRouterAccessor,\n): string | undefined {\n const candidates = accessor === 'pageRouter'\n ? [nativeInstance.route, nativeInstance.__route__, nativeInstance.is]\n : [nativeInstance.is, nativeInstance.route, nativeInstance.__route__]\n\n for (const candidate of candidates) {\n const resolved = resolveBasePathCandidate(candidate)\n if (resolved) {\n return resolved\n }\n }\n\n return undefined\n}\n\nfunction resolveScopedRouterUrl(url: string, basePath?: string): string {\n if (!basePath || (!url.startsWith('./') && !url.startsWith('../'))) {\n return url\n }\n\n const { path, query, hash } = parsePathInput(url)\n const resolvedPath = createAbsoluteRoutePath(resolvePath(path, basePath))\n const queryString = stringifyQuery(query)\n return `${resolvedPath}${queryString ? `?${queryString}` : ''}${hash}`\n}\n\nfunction createScopedRuntimeRouter(rawRouter: RuntimeRouter, basePath?: string): RuntimeRouter {\n const cacheKey = basePath ?? ''\n const cachedByBasePath = runtimeRouterWrapperCache.get(rawRouter)\n const cachedRouter = cachedByBasePath?.get(cacheKey)\n if (cachedRouter) {\n return cachedRouter\n }\n\n const scopedRouter = Object.create(null) as RuntimeRouter\n for (const methodName of RUNTIME_ROUTER_METHODS) {\n ;(scopedRouter as Record<string, any>)[methodName] = (option: Record<string, any>) => {\n const rawMethod = (rawRouter as Record<string, any>)[methodName]\n if (methodName === 'navigateBack' || !option || typeof option !== 'object') {\n return rawMethod.call(rawRouter, option)\n }\n\n const nextUrl = typeof option.url === 'string'\n ? resolveScopedRouterUrl(option.url, basePath)\n : option.url\n const nextOption = nextUrl === option.url\n ? option\n : { ...option, url: nextUrl }\n return rawMethod.call(rawRouter, nextOption)\n }\n }\n\n const nextCache = cachedByBasePath ?? new Map<string, RuntimeRouter>()\n nextCache.set(cacheKey, scopedRouter)\n runtimeRouterWrapperCache.set(rawRouter, nextCache)\n return scopedRouter\n}\n\nfunction useRuntimeRouterByAccessor(\n primaryAccessor: RuntimeRouterAccessor,\n fallbackAccessor: RuntimeRouterAccessor,\n helperName: 'useNativeRouter' | 'useNativePageRouter',\n): RuntimeRouter {\n const ctx = getCurrentSetupContext<any>()\n if (!ctx?.instance) {\n throw new Error(`${helperName}() 必须在 setup() 的同步阶段调用`)\n }\n\n const nativeInstance = ctx.instance as Record<string, any>\n const basePath = resolveRouterBasePath(nativeInstance, primaryAccessor)\n const primaryRouter = nativeInstance[primaryAccessor]\n if (isRuntimeRouter(primaryRouter)) {\n return createScopedRuntimeRouter(primaryRouter, basePath)\n }\n\n const fallbackRouter = nativeInstance[fallbackAccessor]\n if (isRuntimeRouter(fallbackRouter)) {\n return createScopedRuntimeRouter(fallbackRouter, basePath)\n }\n\n const globalFallbackRouter = createGlobalRouterFallback()\n if (globalFallbackRouter) {\n return createScopedRuntimeRouter(globalFallbackRouter, basePath)\n }\n\n throw new Error('当前运行环境不支持 Router,请升级宿主基础库或检查平台路由能力')\n}\n\n/**\n * 在 setup 中获取与当前组件路径语义一致的原生 Router 对象。\n *\n * - 优先使用实例上的 `this.router`(组件路径语义)。\n * - 不可用时回退到 `this.pageRouter`。\n * - 低版本基础库再回退到宿主全局路由方法。\n *\n * 如需更贴近 Vue Router 的高阶能力(导航守卫、失败类型、统一解析),\n * 推荐改用 `wevu/router` 子入口的 `useRouter()`。\n */\nexport function useNativeRouter(): RuntimeRouter {\n return useRuntimeRouterByAccessor('router', 'pageRouter', 'useNativeRouter')\n}\n\n/**\n * 在 setup 中获取与当前页面路径语义一致的原生 Router 对象。\n *\n * - 优先使用实例上的 `this.pageRouter`(页面路径语义)。\n * - 不可用时回退到 `this.router`。\n * - 低版本基础库再回退到宿主全局路由方法。\n *\n * 如需更贴近 Vue Router 的高阶能力(导航守卫、失败类型、统一解析),\n * 推荐改用 `wevu/router` 子入口的 `useRouter()`。\n */\nexport function useNativePageRouter(): RuntimeRouter {\n return useRuntimeRouterByAccessor('pageRouter', 'router', 'useNativePageRouter')\n}\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { d as reactive } from "./ref-Beyx3EmJ.mjs";
2
- import { c as getCurrentSetupContext, x as readonly } from "./base-C_Jux3cz.mjs";
3
- import { K as onRouteDone, L as onLoad, W as onReady, X as onShow, a as resolveCurrentRoute, c as normalizeRouteParams, d as createAbsoluteRoutePath, f as isDynamicRoutePath, g as injectGlobal, i as parsePathInput, l as parseQuery, n as useNativeRouter$1, o as normalizeHash, p as resolvePath, r as createRouteLocation, s as normalizeQuery, t as useNativePageRouter$1, u as stringifyQuery, v as provideGlobal } from "./router-CQIgz5Q_.mjs";
1
+ import { d as reactive } from "./ref-Bxwe2Kfo.mjs";
2
+ import { c as getCurrentSetupContext, x as readonly } from "./base-ii6cqKIl.mjs";
3
+ import { K as onRouteDone, L as onLoad, W as onReady, X as onShow, a as resolveCurrentRoute, c as normalizeRouteParams, d as createAbsoluteRoutePath, f as isDynamicRoutePath, g as injectGlobal, i as parsePathInput, l as parseQuery, n as useNativeRouter$1, o as normalizeHash, p as resolvePath, r as createRouteLocation, s as normalizeQuery, t as useNativePageRouter$1, u as stringifyQuery, v as provideGlobal } from "./router-D6H7HviN.mjs";
4
4
 
5
5
  //#region src/routerInternal/params.ts
6
6
  const PATH_PARAM_TOKEN_RE = /^:(\w+)(?:\([^)]*\))?([+*?])?$/;
@@ -1,5 +1,5 @@
1
- import { C as effect, d as reactive, g as touchReactive, l as isReactive, n as isRef, w as effectScope, y as toRaw } from "./ref-Beyx3EmJ.mjs";
2
- import { t as computed } from "./computed-DKaBMLFF.mjs";
1
+ import { C as effect, d as reactive, g as touchReactive, l as isReactive, n as isRef, w as effectScope, y as toRaw } from "./ref-Bxwe2Kfo.mjs";
2
+ import { t as computed } from "./computed-4hT2jDra.mjs";
3
3
 
4
4
  //#region src/store/actions.ts
5
5
  function wrapAction(store, name, action, actionSubs) {
@@ -472,4 +472,4 @@ function storeToRefs(store) {
472
472
 
473
473
  //#endregion
474
474
  export { defineStore as n, createStore as r, storeToRefs as t };
475
- //# sourceMappingURL=store-Dzij_OWm.mjs.map
475
+ //# sourceMappingURL=store-7lzhCASj.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"store-Dzij_OWm.mjs","names":[],"sources":["../../src/store/actions.ts","../../src/store/utils.ts","../../src/store/base.ts","../../src/store/define/shared.ts","../../src/store/define/optionsStyle.ts","../../src/store/define/setupStyle.ts","../../src/store/manager.ts","../../src/store/define.ts","../../src/store/storeToRefs.ts"],"sourcesContent":["import type { ActionSubscriber } from './types'\n\nexport function wrapAction<TStore extends Record<string, any>>(\n store: TStore,\n name: string,\n action: (...args: any[]) => any,\n actionSubs: Set<ActionSubscriber<TStore>>,\n) {\n return function wrapped(this: any, ...args: any[]) {\n const afterCbs: Array<(r: any) => void> = []\n const errorCbs: Array<(e: any) => void> = []\n const after = (cb: (r: any) => void) => afterCbs.push(cb)\n const onError = (cb: (e: any) => void) => errorCbs.push(cb)\n actionSubs.forEach((sub) => {\n try {\n sub({ name, store, args, after, onError })\n }\n catch {\n // 捕获订阅者回调内部的异常,避免单个监听器出错影响其他订阅和原始 action 执行链\n }\n })\n let res: any\n try {\n res = action.apply(store, args)\n }\n catch (e) {\n errorCbs.forEach(cb => cb(e))\n throw e\n }\n const finalize = (r: any) => {\n afterCbs.forEach(cb => cb(r))\n return r\n }\n if (res && typeof (res as Promise<any>).then === 'function') {\n return (res as Promise<any>).then(\n r => finalize(r),\n (e) => {\n errorCbs.forEach(cb => cb(e))\n return Promise.reject(e)\n },\n )\n }\n return finalize(res)\n }\n}\n","export function isObject(val: unknown): val is object {\n return typeof val === 'object' && val !== null\n}\n\nexport function isPlainObject(val: unknown): val is Record<string, any> {\n if (!isObject(val)) {\n return false\n }\n const proto = Object.getPrototypeOf(val)\n return proto === Object.prototype || proto === null\n}\n\nexport function mergeShallow(target: Record<string, any>, patch: Record<string, any>) {\n for (const k in patch) {\n target[k] = patch[k]\n }\n}\n\nexport function cloneDeep<T>(value: T): T {\n if (Array.isArray(value)) {\n return value.map(item => cloneDeep(item)) as T\n }\n if (isPlainObject(value)) {\n const result: Record<string, any> = {}\n for (const key in value) {\n result[key] = cloneDeep((value as any)[key])\n }\n return result as T\n }\n return value\n}\n\nexport function resetObject(target: Record<string, any>, snapshot: Record<string, any> | any[]) {\n if (Array.isArray(target) && Array.isArray(snapshot)) {\n target.length = 0\n snapshot.forEach((item, index) => {\n target[index] = cloneDeep(item)\n })\n return\n }\n if (!isObject(snapshot)) {\n return\n }\n for (const key in target) {\n if (!(key in snapshot)) {\n delete target[key]\n }\n }\n for (const key in snapshot) {\n const snapValue = (snapshot as any)[key]\n const currentValue = target[key]\n if (Array.isArray(snapValue) && Array.isArray(currentValue)) {\n resetObject(currentValue, snapValue)\n continue\n }\n if (isPlainObject(snapValue) && isPlainObject(currentValue)) {\n resetObject(currentValue, snapValue)\n continue\n }\n target[key] = cloneDeep(snapValue)\n }\n}\n","import type { ActionSubscriber, MutationType, SubscriptionCallback } from './types'\nimport { isObject, mergeShallow } from './utils'\n\nexport function createBaseApi<S extends Record<string, any>>(\n id: string,\n stateObj: S | undefined,\n notify: (type: MutationType) => void,\n resetImpl?: () => void,\n) {\n const api: any = {\n $id: id,\n }\n Object.defineProperty(api, '$state', {\n get() {\n return stateObj\n },\n set(v: any) {\n if (stateObj && isObject(v)) {\n mergeShallow(stateObj, v)\n notify('patch object')\n }\n },\n })\n api.$patch = (patch: Record<string, any> | ((state: S) => void)) => {\n if (!stateObj) {\n if (typeof patch === 'function') {\n patch(api as S)\n notify('patch function')\n }\n else {\n mergeShallow(api as any, patch)\n notify('patch object')\n }\n return\n }\n if (typeof patch === 'function') {\n patch(stateObj)\n notify('patch function')\n }\n else {\n mergeShallow(stateObj, patch)\n notify('patch object')\n }\n }\n if (resetImpl) {\n api.$reset = () => resetImpl()\n }\n const subs = new Set<SubscriptionCallback<S>>()\n api.$subscribe = (cb: SubscriptionCallback<S>, _opts?: { detached?: boolean }) => {\n subs.add(cb)\n return () => subs.delete(cb)\n }\n const actionSubs = new Set<ActionSubscriber<any>>()\n api.$onAction = (cb: ActionSubscriber<any>) => {\n actionSubs.add(cb)\n return () => actionSubs.delete(cb)\n }\n return { api, subs, actionSubs }\n}\n","import type { MutationType, SubscriptionCallback } from '../types'\nimport { isReactive, isRef, toRaw } from '../../reactivity'\nimport { cloneDeep } from '../utils'\n\nconst hasOwn = Object.prototype.hasOwnProperty\n\nexport function isTrackableRef(value: unknown) {\n return isRef(value) && hasOwn.call(value, 'dep')\n}\n\nexport function snapshotValue(value: unknown) {\n if (isReactive(value)) {\n return cloneDeep(toRaw(value as any))\n }\n if (isTrackableRef(value)) {\n return cloneDeep((value as any).value)\n }\n return cloneDeep(value)\n}\n\nexport function createSafeNotifier<S>(\n storeId: string,\n subs: Set<SubscriptionCallback<S>>,\n getState: () => S,\n) {\n let notifying = false\n return (type: MutationType) => {\n if (notifying) {\n return\n }\n notifying = true\n try {\n const state = getState()\n subs.forEach((cb) => {\n try {\n cb({ type, storeId }, state)\n }\n catch {}\n })\n }\n finally {\n notifying = false\n }\n }\n}\n","import { computed, effect, reactive, toRaw, touchReactive } from '../../reactivity'\nimport { wrapAction } from '../actions'\nimport { createBaseApi } from '../base'\nimport { cloneDeep, resetObject } from '../utils'\nimport { createSafeNotifier } from './shared'\n\nexport function createOptionsStyleStore(id: string, options: any, manager: any) {\n const rawState = options.state ? options.state() : {}\n const state = reactive(rawState)\n const initialSnapshot = cloneDeep(toRaw(rawState))\n let notify: (type: any) => void = () => {}\n const base = createBaseApi<typeof state>(id, state, t => notify(t), () => {\n resetObject(state as any, initialSnapshot)\n notify('patch object')\n })\n\n let isPatching = false\n const rawPatch = base.api.$patch\n base.api.$patch = (patch: Partial<typeof state> | ((nextState: typeof state) => void)) => {\n isPatching = true\n try {\n rawPatch(patch as any)\n }\n finally {\n isPatching = false\n }\n }\n if (typeof base.api.$reset === 'function') {\n const rawReset = base.api.$reset\n base.api.$reset = () => {\n isPatching = true\n try {\n rawReset()\n }\n finally {\n isPatching = false\n }\n }\n }\n\n notify = createSafeNotifier(id, base.subs, () => state as any)\n\n const store: Record<string, any> = {}\n for (const key of Object.getOwnPropertyNames(base.api)) {\n const d = Object.getOwnPropertyDescriptor(base.api, key)\n if (d) {\n if (key === '$state') {\n Object.defineProperty(store, key, {\n enumerable: d.enumerable,\n configurable: d.configurable,\n get() {\n return (base.api as any).$state\n },\n set(v: any) {\n isPatching = true\n try {\n ;(base.api as any).$state = v\n }\n finally {\n isPatching = false\n }\n },\n })\n }\n else {\n Object.defineProperty(store, key, d)\n }\n }\n }\n\n const getterDefs = options.getters ?? {}\n Object.keys(getterDefs).forEach((key) => {\n const getter = (getterDefs as any)[key]\n if (typeof getter === 'function') {\n const c = computed(() => getter.call(store, state))\n Object.defineProperty(store, key, {\n enumerable: true,\n configurable: true,\n get() {\n return c.value\n },\n })\n }\n })\n\n const actionDefs = options.actions ?? {}\n Object.keys(actionDefs).forEach((key) => {\n const act = (actionDefs as any)[key]\n if (typeof act === 'function') {\n const wrapped = wrapAction(store as any, key, (...args: any[]) => {\n return act.apply(store as any, args)\n }, base.actionSubs)\n store[key] = wrapped\n }\n })\n\n Object.keys(state).forEach((k) => {\n Object.defineProperty(store, k, {\n enumerable: true,\n configurable: true,\n get() {\n return (state as any)[k]\n },\n set(v: any) {\n ;(state as any)[k] = v\n },\n })\n })\n\n let initialized = false\n let dispatchingDirect = false\n effect(() => {\n touchReactive(state)\n if (!initialized) {\n initialized = true\n return\n }\n if (isPatching || dispatchingDirect) {\n return\n }\n dispatchingDirect = true\n try {\n notify('direct')\n }\n finally {\n dispatchingDirect = false\n }\n })\n\n const plugins = manager?._plugins ?? []\n for (const plugin of plugins) {\n try {\n plugin({ store })\n }\n catch {}\n }\n\n return store\n}\n","import { effect, isReactive, isRef, touchReactive } from '../../reactivity'\nimport { wrapAction } from '../actions'\nimport { createBaseApi } from '../base'\nimport { cloneDeep, resetObject } from '../utils'\nimport { createSafeNotifier, isTrackableRef, snapshotValue } from './shared'\n\nexport function createSetupStyleStore(id: string, setupFactory: () => Record<string, any>, manager: any) {\n const result = setupFactory()\n let notify: (type: any) => void = () => {}\n const initialSnapshot = new Map<string, any>()\n Object.keys(result).forEach((k) => {\n const val = (result as any)[k]\n if (typeof val === 'function' || k.startsWith('$')) {\n return\n }\n if (isRef(val) && !isTrackableRef(val)) {\n return\n }\n initialSnapshot.set(k, snapshotValue(val))\n })\n\n let instance: Record<string, any> = {}\n const resetImpl = () => {\n initialSnapshot.forEach((snapValue, key) => {\n const current = (instance as any)[key]\n if (isTrackableRef(current)) {\n current.value = cloneDeep(snapValue)\n return\n }\n if (isReactive(current)) {\n resetObject(current as any, snapValue)\n return\n }\n if (isRef(current)) {\n return\n }\n ;(instance as any)[key] = cloneDeep(snapValue)\n })\n notify('patch object')\n }\n\n const base = createBaseApi<any>(id, undefined, t => notify(t), resetImpl)\n let isPatching = false\n const rawPatch = base.api.$patch\n base.api.$patch = (patch: Record<string, any> | ((state: any) => void)) => {\n isPatching = true\n try {\n rawPatch(patch)\n }\n finally {\n isPatching = false\n }\n }\n if (typeof base.api.$reset === 'function') {\n const rawReset = base.api.$reset\n base.api.$reset = () => {\n isPatching = true\n try {\n rawReset()\n }\n finally {\n isPatching = false\n }\n }\n }\n\n instance = { ...result }\n notify = createSafeNotifier(id, base.subs, () => instance)\n\n // 将 setup 返回值与基础 API 合并,同时保留每个 getter/setter 的描述符,避免覆写访问器行为\n for (const key of Object.getOwnPropertyNames(base.api)) {\n const d = Object.getOwnPropertyDescriptor(base.api, key)\n if (d) {\n if (key === '$state') {\n Object.defineProperty(instance, key, {\n enumerable: d.enumerable,\n configurable: d.configurable,\n get() {\n return (base.api as any).$state\n },\n set(v: any) {\n isPatching = true\n try {\n ;(base.api as any).$state = v\n }\n finally {\n isPatching = false\n }\n },\n })\n }\n else {\n Object.defineProperty(instance, key, d)\n }\n }\n }\n\n const directSources: any[] = []\n Object.keys(result).forEach((k) => {\n const val = (result as any)[k]\n if (typeof val === 'function' && !k.startsWith('$')) {\n ;(instance as any)[k] = wrapAction(instance, k, val, base.actionSubs)\n return\n }\n if (isTrackableRef(val)) {\n directSources.push(val)\n return\n }\n if (isReactive(val)) {\n directSources.push(val)\n return\n }\n if (isRef(val)) {\n return\n }\n if (!k.startsWith('$')) {\n let innerValue = val\n Object.defineProperty(instance, k, {\n enumerable: true,\n configurable: true,\n get() {\n return innerValue\n },\n set(next: any) {\n innerValue = next\n if (!isPatching) {\n notify('direct')\n }\n },\n })\n }\n })\n\n let dispatchingDirect = false\n if (directSources.length > 0) {\n let initialized = false\n effect(() => {\n directSources.forEach((source) => {\n if (isTrackableRef(source)) {\n void source.value\n }\n else {\n touchReactive(source)\n }\n })\n if (!initialized) {\n initialized = true\n return\n }\n if (isPatching || dispatchingDirect) {\n return\n }\n dispatchingDirect = true\n try {\n notify('direct')\n }\n finally {\n dispatchingDirect = false\n }\n })\n }\n\n const plugins = manager?._plugins ?? []\n for (const plugin of plugins) {\n try {\n plugin({ store: instance })\n }\n catch {}\n }\n\n return instance\n}\n","import type { StoreManager } from './types'\n\n/**\n * @description 创建 store 管理器(插件与共享实例入口)\n */\nexport function createStore(): StoreManager {\n const manager: StoreManager = {\n _stores: new Map(),\n _plugins: [],\n install(_app: any) {\n // 小程序场景不需要注册全局插件入口,这里保留 API 但不执行任何操作\n },\n use(plugin: (context: { store: any }) => void) {\n if (typeof plugin === 'function') {\n manager._plugins.push(plugin)\n }\n return manager\n },\n }\n ;(createStore as any)._instance = manager\n return manager\n}\n","import type {\n ActionSubscriber,\n DefineStoreOptions,\n StoreGetters,\n StoreManager,\n StoreSubscribeOptions,\n SubscriptionCallback,\n} from './types'\nimport { effectScope } from '../reactivity'\nimport { createOptionsStyleStore } from './define/optionsStyle'\nimport { createSetupStyleStore } from './define/setupStyle'\nimport { createStore } from './manager'\n\ntype SetupDefinition<T> = () => T\n\n/**\n * @description 定义一个 setup 风格的 store\n */\nexport function defineStore<T extends Record<string, any>>(id: string, setup: SetupDefinition<T>): () => T & {\n $id: string\n $patch: (patch: Record<string, any> | ((state: any) => void)) => void\n $reset: () => void\n $subscribe: (cb: SubscriptionCallback<any>, opts?: StoreSubscribeOptions) => () => void\n $onAction: (cb: ActionSubscriber<any>) => () => void\n}\n/**\n * @description 定义一个 options 风格的 store\n */\nexport function defineStore<S extends Record<string, any>, G extends Record<string, any>, A extends Record<string, any>>(\n id: string,\n options: DefineStoreOptions<S, G, A>,\n): () => S & StoreGetters<G> & A & {\n $id: string\n $state: S\n $patch: (patch: Partial<S> | ((state: S) => void)) => void\n $reset: () => void\n $subscribe: (cb: SubscriptionCallback<S>, opts?: StoreSubscribeOptions) => () => void\n $onAction: (cb: ActionSubscriber<S & StoreGetters<G> & A>) => () => void\n}\nexport function defineStore(id: string, setupOrOptions: any) {\n let instance: any\n let created = false\n const manager = (createStore as any)._instance as StoreManager | undefined\n\n return function useStore(): any {\n if (created && instance) {\n return instance\n }\n created = true\n\n const storeScope = effectScope(true)\n instance = storeScope.run(() => {\n return typeof setupOrOptions === 'function'\n ? createSetupStyleStore(id, setupOrOptions, manager)\n : createOptionsStyleStore(id, setupOrOptions as DefineStoreOptions<any, any, any>, manager)\n })\n\n return instance\n }\n}\n","import type { Ref } from '../reactivity'\nimport { computed, isRef } from '../reactivity'\n\n/**\n * @description storeToRefs 返回类型推导\n */\nexport type StoreToRefsResult<T extends Record<string, any>> = {\n [K in keyof T]:\n T[K] extends (...args: any[]) => any\n ? T[K]\n : T[K] extends Ref<infer V>\n ? Ref<V>\n : Ref<T[K]>\n}\n\n/**\n * @description 将 store 状态转换为 Ref\n */\nexport function storeToRefs<T extends Record<string, any>>(store: T): StoreToRefsResult<T> {\n const result: Record<string, any> = {}\n for (const key in store) {\n const value = (store as any)[key]\n if (typeof value === 'function') {\n result[key] = value\n continue\n }\n if (isRef(value)) {\n result[key] = value\n }\n else {\n result[key] = computed({\n get: () => (store as any)[key],\n set: (v: any) => {\n ;(store as any)[key] = v\n },\n })\n }\n }\n return result as StoreToRefsResult<T>\n}\n"],"mappings":";;;;AAEA,SAAgB,WACd,OACA,MACA,QACA,YACA;CACA,OAAO,SAAS,QAAmB,GAAG,MAAa;EACjD,MAAM,WAAoC,CAAC;EAC3C,MAAM,WAAoC,CAAC;EAC3C,MAAM,SAAS,OAAyB,SAAS,KAAK,EAAE;EACxD,MAAM,WAAW,OAAyB,SAAS,KAAK,EAAE;EAC1D,WAAW,SAAS,QAAQ;GAC1B,IAAI;IACF,IAAI;KAAE;KAAM;KAAO;KAAM;KAAO;IAAQ,CAAC;GAC3C,kBACM,CAEN;EACF,CAAC;EACD,IAAI;EACJ,IAAI;GACF,MAAM,OAAO,MAAM,OAAO,IAAI;EAChC,SACO,GAAG;GACR,SAAS,SAAQ,OAAM,GAAG,CAAC,CAAC;GAC5B,MAAM;EACR;EACA,MAAM,YAAY,MAAW;GAC3B,SAAS,SAAQ,OAAM,GAAG,CAAC,CAAC;GAC5B,OAAO;EACT;EACA,IAAI,OAAO,OAAQ,IAAqB,SAAS,YAC/C,OAAQ,IAAqB,MAC3B,MAAK,SAAS,CAAC,IACd,MAAM;GACL,SAAS,SAAQ,OAAM,GAAG,CAAC,CAAC;GAC5B,OAAO,QAAQ,OAAO,CAAC;EACzB,CACF;EAEF,OAAO,SAAS,GAAG;CACrB;AACF;;;;AC5CA,SAAgB,SAAS,KAA6B;CACpD,OAAO,OAAO,QAAQ,YAAY,QAAQ;AAC5C;AAEA,SAAgB,cAAc,KAA0C;CACtE,IAAI,CAAC,SAAS,GAAG,GACf,OAAO;CAET,MAAM,QAAQ,OAAO,eAAe,GAAG;CACvC,OAAO,UAAU,OAAO,aAAa,UAAU;AACjD;AAEA,SAAgB,aAAa,QAA6B,OAA4B;CACpF,KAAK,MAAM,KAAK,OACd,OAAO,KAAK,MAAM;AAEtB;AAEA,SAAgB,UAAa,OAAa;CACxC,IAAI,MAAM,QAAQ,KAAK,GACrB,OAAO,MAAM,KAAI,SAAQ,UAAU,IAAI,CAAC;CAE1C,IAAI,cAAc,KAAK,GAAG;EACxB,MAAM,SAA8B,CAAC;EACrC,KAAK,MAAM,OAAO,OAChB,OAAO,OAAO,UAAW,MAAc,IAAI;EAE7C,OAAO;CACT;CACA,OAAO;AACT;AAEA,SAAgB,YAAY,QAA6B,UAAuC;CAC9F,IAAI,MAAM,QAAQ,MAAM,KAAK,MAAM,QAAQ,QAAQ,GAAG;EACpD,OAAO,SAAS;EAChB,SAAS,SAAS,MAAM,UAAU;GAChC,OAAO,SAAS,UAAU,IAAI;EAChC,CAAC;EACD;CACF;CACA,IAAI,CAAC,SAAS,QAAQ,GACpB;CAEF,KAAK,MAAM,OAAO,QAChB,IAAI,EAAE,OAAO,WACX,OAAO,OAAO;CAGlB,KAAK,MAAM,OAAO,UAAU;EAC1B,MAAM,YAAa,SAAiB;EACpC,MAAM,eAAe,OAAO;EAC5B,IAAI,MAAM,QAAQ,SAAS,KAAK,MAAM,QAAQ,YAAY,GAAG;GAC3D,YAAY,cAAc,SAAS;GACnC;EACF;EACA,IAAI,cAAc,SAAS,KAAK,cAAc,YAAY,GAAG;GAC3D,YAAY,cAAc,SAAS;GACnC;EACF;EACA,OAAO,OAAO,UAAU,SAAS;CACnC;AACF;;;;AC1DA,SAAgB,cACd,IACA,UACA,QACA,WACA;CACA,MAAM,MAAW,EACf,KAAK,GACP;CACA,OAAO,eAAe,KAAK,UAAU;EACnC,MAAM;GACJ,OAAO;EACT;EACA,IAAI,GAAQ;GACV,IAAI,YAAY,SAAS,CAAC,GAAG;IAC3B,aAAa,UAAU,CAAC;IACxB,OAAO,cAAc;GACvB;EACF;CACF,CAAC;CACD,IAAI,UAAU,UAAsD;EAClE,IAAI,CAAC,UAAU;GACb,IAAI,OAAO,UAAU,YAAY;IAC/B,MAAM,GAAQ;IACd,OAAO,gBAAgB;GACzB,OACK;IACH,aAAa,KAAY,KAAK;IAC9B,OAAO,cAAc;GACvB;GACA;EACF;EACA,IAAI,OAAO,UAAU,YAAY;GAC/B,MAAM,QAAQ;GACd,OAAO,gBAAgB;EACzB,OACK;GACH,aAAa,UAAU,KAAK;GAC5B,OAAO,cAAc;EACvB;CACF;CACA,IAAI,WACF,IAAI,eAAe,UAAU;CAE/B,MAAM,uBAAO,IAAI,IAA6B;CAC9C,IAAI,cAAc,IAA6B,UAAmC;EAChF,KAAK,IAAI,EAAE;EACX,aAAa,KAAK,OAAO,EAAE;CAC7B;CACA,MAAM,6BAAa,IAAI,IAA2B;CAClD,IAAI,aAAa,OAA8B;EAC7C,WAAW,IAAI,EAAE;EACjB,aAAa,WAAW,OAAO,EAAE;CACnC;CACA,OAAO;EAAE;EAAK;EAAM;CAAW;AACjC;;;;ACtDA,MAAM,SAAS,OAAO,UAAU;AAEhC,SAAgB,eAAe,OAAgB;CAC7C,OAAO,MAAM,KAAK,KAAK,OAAO,KAAK,OAAO,KAAK;AACjD;AAEA,SAAgB,cAAc,OAAgB;CAC5C,IAAI,WAAW,KAAK,GAClB,OAAO,UAAU,MAAM,KAAY,CAAC;CAEtC,IAAI,eAAe,KAAK,GACtB,OAAO,UAAW,MAAc,KAAK;CAEvC,OAAO,UAAU,KAAK;AACxB;AAEA,SAAgB,mBACd,SACA,MACA,UACA;CACA,IAAI,YAAY;CAChB,QAAQ,SAAuB;EAC7B,IAAI,WACF;EAEF,YAAY;EACZ,IAAI;GACF,MAAM,QAAQ,SAAS;GACvB,KAAK,SAAS,OAAO;IACnB,IAAI;KACF,GAAG;MAAE;MAAM;KAAQ,GAAG,KAAK;IAC7B,kBACM,CAAC;GACT,CAAC;EACH,UACQ;GACN,YAAY;EACd;CACF;AACF;;;;ACtCA,SAAgB,wBAAwB,IAAY,SAAc,SAAc;;CAC9E,MAAM,WAAW,QAAQ,QAAQ,QAAQ,MAAM,IAAI,CAAC;CACpD,MAAM,QAAQ,SAAS,QAAQ;CAC/B,MAAM,kBAAkB,UAAU,MAAM,QAAQ,CAAC;CACjD,IAAI,eAAoC,CAAC;CACzC,MAAM,OAAO,cAA4B,IAAI,QAAO,MAAK,OAAO,CAAC,SAAS;EACxE,YAAY,OAAc,eAAe;EACzC,OAAO,cAAc;CACvB,CAAC;CAED,IAAI,aAAa;CACjB,MAAM,WAAW,KAAK,IAAI;CAC1B,KAAK,IAAI,UAAU,UAAuE;EACxF,aAAa;EACb,IAAI;GACF,SAAS,KAAY;EACvB,UACQ;GACN,aAAa;EACf;CACF;CACA,IAAI,OAAO,KAAK,IAAI,WAAW,YAAY;EACzC,MAAM,WAAW,KAAK,IAAI;EAC1B,KAAK,IAAI,eAAe;GACtB,aAAa;GACb,IAAI;IACF,SAAS;GACX,UACQ;IACN,aAAa;GACf;EACF;CACF;CAEA,SAAS,mBAAmB,IAAI,KAAK,YAAY,KAAY;CAE7D,MAAM,QAA6B,CAAC;CACpC,KAAK,MAAM,OAAO,OAAO,oBAAoB,KAAK,GAAG,GAAG;EACtD,MAAM,IAAI,OAAO,yBAAyB,KAAK,KAAK,GAAG;EACvD,IAAI,GACF,IAAI,QAAQ,UACV,OAAO,eAAe,OAAO,KAAK;GAChC,YAAY,EAAE;GACd,cAAc,EAAE;GAChB,MAAM;IACJ,OAAQ,KAAK,IAAY;GAC3B;GACA,IAAI,GAAQ;IACV,aAAa;IACb,IAAI;KACD,AAAC,KAAK,IAAY,SAAS;IAC9B,UACQ;KACN,aAAa;IACf;GACF;EACF,CAAC;OAGD,OAAO,eAAe,OAAO,KAAK,CAAC;CAGzC;CAEA,MAAM,iCAAa,QAAQ,sEAAW,CAAC;CACvC,OAAO,KAAK,UAAU,CAAC,CAAC,SAAS,QAAQ;EACvC,MAAM,SAAU,WAAmB;EACnC,IAAI,OAAO,WAAW,YAAY;GAChC,MAAM,IAAI,eAAe,OAAO,KAAK,OAAO,KAAK,CAAC;GAClD,OAAO,eAAe,OAAO,KAAK;IAChC,YAAY;IACZ,cAAc;IACd,MAAM;KACJ,OAAO,EAAE;IACX;GACF,CAAC;EACH;CACF,CAAC;CAED,MAAM,iCAAa,QAAQ,sEAAW,CAAC;CACvC,OAAO,KAAK,UAAU,CAAC,CAAC,SAAS,QAAQ;EACvC,MAAM,MAAO,WAAmB;EAChC,IAAI,OAAO,QAAQ,YAIjB,MAAM,OAHU,WAAW,OAAc,MAAM,GAAG,SAAgB;GAChE,OAAO,IAAI,MAAM,OAAc,IAAI;EACrC,GAAG,KAAK,UACW;CAEvB,CAAC;CAED,OAAO,KAAK,KAAK,CAAC,CAAC,SAAS,MAAM;EAChC,OAAO,eAAe,OAAO,GAAG;GAC9B,YAAY;GACZ,cAAc;GACd,MAAM;IACJ,OAAQ,MAAc;GACxB;GACA,IAAI,GAAQ;IACT,AAAC,MAAc,KAAK;GACvB;EACF,CAAC;CACH,CAAC;CAED,IAAI,cAAc;CAClB,IAAI,oBAAoB;CACxB,aAAa;EACX,cAAc,KAAK;EACnB,IAAI,CAAC,aAAa;GAChB,cAAc;GACd;EACF;EACA,IAAI,cAAc,mBAChB;EAEF,oBAAoB;EACpB,IAAI;GACF,OAAO,QAAQ;EACjB,UACQ;GACN,oBAAoB;EACtB;CACF,CAAC;CAED,MAAM,iFAAU,QAAS,yEAAY,CAAC;CACtC,KAAK,MAAM,UAAU,SACnB,IAAI;EACF,OAAO,EAAE,MAAM,CAAC;CAClB,kBACM,CAAC;CAGT,OAAO;AACT;;;;ACpIA,SAAgB,sBAAsB,IAAY,cAAyC,SAAc;;CACvG,MAAM,SAAS,aAAa;CAC5B,IAAI,eAAoC,CAAC;CACzC,MAAM,kCAAkB,IAAI,IAAiB;CAC7C,OAAO,KAAK,MAAM,CAAC,CAAC,SAAS,MAAM;EACjC,MAAM,MAAO,OAAe;EAC5B,IAAI,OAAO,QAAQ,cAAc,EAAE,WAAW,GAAG,GAC/C;EAEF,IAAI,MAAM,GAAG,KAAK,CAAC,eAAe,GAAG,GACnC;EAEF,gBAAgB,IAAI,GAAG,cAAc,GAAG,CAAC;CAC3C,CAAC;CAED,IAAI,WAAgC,CAAC;CACrC,MAAM,kBAAkB;EACtB,gBAAgB,SAAS,WAAW,QAAQ;GAC1C,MAAM,UAAW,SAAiB;GAClC,IAAI,eAAe,OAAO,GAAG;IAC3B,QAAQ,QAAQ,UAAU,SAAS;IACnC;GACF;GACA,IAAI,WAAW,OAAO,GAAG;IACvB,YAAY,SAAgB,SAAS;IACrC;GACF;GACA,IAAI,MAAM,OAAO,GACf;GAED,AAAC,SAAiB,OAAO,UAAU,SAAS;EAC/C,CAAC;EACD,OAAO,cAAc;CACvB;CAEA,MAAM,OAAO,cAAmB,IAAI,SAAW,MAAK,OAAO,CAAC,GAAG,SAAS;CACxE,IAAI,aAAa;CACjB,MAAM,WAAW,KAAK,IAAI;CAC1B,KAAK,IAAI,UAAU,UAAwD;EACzE,aAAa;EACb,IAAI;GACF,SAAS,KAAK;EAChB,UACQ;GACN,aAAa;EACf;CACF;CACA,IAAI,OAAO,KAAK,IAAI,WAAW,YAAY;EACzC,MAAM,WAAW,KAAK,IAAI;EAC1B,KAAK,IAAI,eAAe;GACtB,aAAa;GACb,IAAI;IACF,SAAS;GACX,UACQ;IACN,aAAa;GACf;EACF;CACF;CAEA,WAAW,EAAE,GAAG,OAAO;CACvB,SAAS,mBAAmB,IAAI,KAAK,YAAY,QAAQ;CAGzD,KAAK,MAAM,OAAO,OAAO,oBAAoB,KAAK,GAAG,GAAG;EACtD,MAAM,IAAI,OAAO,yBAAyB,KAAK,KAAK,GAAG;EACvD,IAAI,GACF,IAAI,QAAQ,UACV,OAAO,eAAe,UAAU,KAAK;GACnC,YAAY,EAAE;GACd,cAAc,EAAE;GAChB,MAAM;IACJ,OAAQ,KAAK,IAAY;GAC3B;GACA,IAAI,GAAQ;IACV,aAAa;IACb,IAAI;KACD,AAAC,KAAK,IAAY,SAAS;IAC9B,UACQ;KACN,aAAa;IACf;GACF;EACF,CAAC;OAGD,OAAO,eAAe,UAAU,KAAK,CAAC;CAG5C;CAEA,MAAM,gBAAuB,CAAC;CAC9B,OAAO,KAAK,MAAM,CAAC,CAAC,SAAS,MAAM;EACjC,MAAM,MAAO,OAAe;EAC5B,IAAI,OAAO,QAAQ,cAAc,CAAC,EAAE,WAAW,GAAG,GAAG;GAClD,AAAC,SAAiB,KAAK,WAAW,UAAU,GAAG,KAAK,KAAK,UAAU;GACpE;EACF;EACA,IAAI,eAAe,GAAG,GAAG;GACvB,cAAc,KAAK,GAAG;GACtB;EACF;EACA,IAAI,WAAW,GAAG,GAAG;GACnB,cAAc,KAAK,GAAG;GACtB;EACF;EACA,IAAI,MAAM,GAAG,GACX;EAEF,IAAI,CAAC,EAAE,WAAW,GAAG,GAAG;GACtB,IAAI,aAAa;GACjB,OAAO,eAAe,UAAU,GAAG;IACjC,YAAY;IACZ,cAAc;IACd,MAAM;KACJ,OAAO;IACT;IACA,IAAI,MAAW;KACb,aAAa;KACb,IAAI,CAAC,YACH,OAAO,QAAQ;IAEnB;GACF,CAAC;EACH;CACF,CAAC;CAED,IAAI,oBAAoB;CACxB,IAAI,cAAc,SAAS,GAAG;EAC5B,IAAI,cAAc;EAClB,aAAa;GACX,cAAc,SAAS,WAAW;IAChC,IAAI,eAAe,MAAM,GACvB,AAAK,OAAO;SAGZ,cAAc,MAAM;GAExB,CAAC;GACD,IAAI,CAAC,aAAa;IAChB,cAAc;IACd;GACF;GACA,IAAI,cAAc,mBAChB;GAEF,oBAAoB;GACpB,IAAI;IACF,OAAO,QAAQ;GACjB,UACQ;IACN,oBAAoB;GACtB;EACF,CAAC;CACH;CAEA,MAAM,iFAAU,QAAS,yEAAY,CAAC;CACtC,KAAK,MAAM,UAAU,SACnB,IAAI;EACF,OAAO,EAAE,OAAO,SAAS,CAAC;CAC5B,kBACM,CAAC;CAGT,OAAO;AACT;;;;;;;ACtKA,SAAgB,cAA4B;CAC1C,MAAM,UAAwB;EAC5B,yBAAS,IAAI,IAAI;EACjB,UAAU,CAAC;EACX,QAAQ,MAAW,CAEnB;EACA,IAAI,QAA2C;GAC7C,IAAI,OAAO,WAAW,YACpB,QAAQ,SAAS,KAAK,MAAM;GAE9B,OAAO;EACT;CACF;CACC,AAAC,YAAoB,YAAY;CAClC,OAAO;AACT;;;;ACkBA,SAAgB,YAAY,IAAY,gBAAqB;CAC3D,IAAI;CACJ,IAAI,UAAU;CACd,MAAM,UAAW,YAAoB;CAErC,OAAO,SAAS,WAAgB;EAC9B,IAAI,WAAW,UACb,OAAO;EAET,UAAU;EAGV,WADmB,YAAY,IACX,CAAC,CAAC,UAAU;GAC9B,OAAO,OAAO,mBAAmB,aAC7B,sBAAsB,IAAI,gBAAgB,OAAO,IACjD,wBAAwB,IAAI,gBAAqD,OAAO;EAC9F,CAAC;EAED,OAAO;CACT;AACF;;;;;;;ACzCA,SAAgB,YAA2C,OAAgC;CACzF,MAAM,SAA8B,CAAC;CACrC,KAAK,MAAM,OAAO,OAAO;EACvB,MAAM,QAAS,MAAc;EAC7B,IAAI,OAAO,UAAU,YAAY;GAC/B,OAAO,OAAO;GACd;EACF;EACA,IAAI,MAAM,KAAK,GACb,OAAO,OAAO;OAGd,OAAO,OAAO,SAAS;GACrB,WAAY,MAAc;GAC1B,MAAM,MAAW;IACd,AAAC,MAAc,OAAO;GACzB;EACF,CAAC;CAEL;CACA,OAAO;AACT"}
1
+ {"version":3,"file":"store-7lzhCASj.mjs","names":[],"sources":["../../src/store/actions.ts","../../src/store/utils.ts","../../src/store/base.ts","../../src/store/define/shared.ts","../../src/store/define/optionsStyle.ts","../../src/store/define/setupStyle.ts","../../src/store/manager.ts","../../src/store/define.ts","../../src/store/storeToRefs.ts"],"sourcesContent":["import type { ActionSubscriber } from './types'\n\nexport function wrapAction<TStore extends Record<string, any>>(\n store: TStore,\n name: string,\n action: (...args: any[]) => any,\n actionSubs: Set<ActionSubscriber<TStore>>,\n) {\n return function wrapped(this: any, ...args: any[]) {\n const afterCbs: Array<(r: any) => void> = []\n const errorCbs: Array<(e: any) => void> = []\n const after = (cb: (r: any) => void) => afterCbs.push(cb)\n const onError = (cb: (e: any) => void) => errorCbs.push(cb)\n actionSubs.forEach((sub) => {\n try {\n sub({ name, store, args, after, onError })\n }\n catch {\n // 捕获订阅者回调内部的异常,避免单个监听器出错影响其他订阅和原始 action 执行链\n }\n })\n let res: any\n try {\n res = action.apply(store, args)\n }\n catch (e) {\n errorCbs.forEach(cb => cb(e))\n throw e\n }\n const finalize = (r: any) => {\n afterCbs.forEach(cb => cb(r))\n return r\n }\n if (res && typeof (res as Promise<any>).then === 'function') {\n return (res as Promise<any>).then(\n r => finalize(r),\n (e) => {\n errorCbs.forEach(cb => cb(e))\n return Promise.reject(e)\n },\n )\n }\n return finalize(res)\n }\n}\n","export function isObject(val: unknown): val is object {\n return typeof val === 'object' && val !== null\n}\n\nexport function isPlainObject(val: unknown): val is Record<string, any> {\n if (!isObject(val)) {\n return false\n }\n const proto = Object.getPrototypeOf(val)\n return proto === Object.prototype || proto === null\n}\n\nexport function mergeShallow(target: Record<string, any>, patch: Record<string, any>) {\n for (const k in patch) {\n target[k] = patch[k]\n }\n}\n\nexport function cloneDeep<T>(value: T): T {\n if (Array.isArray(value)) {\n return value.map(item => cloneDeep(item)) as T\n }\n if (isPlainObject(value)) {\n const result: Record<string, any> = {}\n for (const key in value) {\n result[key] = cloneDeep((value as any)[key])\n }\n return result as T\n }\n return value\n}\n\nexport function resetObject(target: Record<string, any>, snapshot: Record<string, any> | any[]) {\n if (Array.isArray(target) && Array.isArray(snapshot)) {\n target.length = 0\n snapshot.forEach((item, index) => {\n target[index] = cloneDeep(item)\n })\n return\n }\n if (!isObject(snapshot)) {\n return\n }\n for (const key in target) {\n if (!(key in snapshot)) {\n delete target[key]\n }\n }\n for (const key in snapshot) {\n const snapValue = (snapshot as any)[key]\n const currentValue = target[key]\n if (Array.isArray(snapValue) && Array.isArray(currentValue)) {\n resetObject(currentValue, snapValue)\n continue\n }\n if (isPlainObject(snapValue) && isPlainObject(currentValue)) {\n resetObject(currentValue, snapValue)\n continue\n }\n target[key] = cloneDeep(snapValue)\n }\n}\n","import type { ActionSubscriber, MutationType, SubscriptionCallback } from './types'\nimport { isObject, mergeShallow } from './utils'\n\nexport function createBaseApi<S extends Record<string, any>>(\n id: string,\n stateObj: S | undefined,\n notify: (type: MutationType) => void,\n resetImpl?: () => void,\n) {\n const api: any = {\n $id: id,\n }\n Object.defineProperty(api, '$state', {\n get() {\n return stateObj\n },\n set(v: any) {\n if (stateObj && isObject(v)) {\n mergeShallow(stateObj, v)\n notify('patch object')\n }\n },\n })\n api.$patch = (patch: Record<string, any> | ((state: S) => void)) => {\n if (!stateObj) {\n if (typeof patch === 'function') {\n patch(api as S)\n notify('patch function')\n }\n else {\n mergeShallow(api as any, patch)\n notify('patch object')\n }\n return\n }\n if (typeof patch === 'function') {\n patch(stateObj)\n notify('patch function')\n }\n else {\n mergeShallow(stateObj, patch)\n notify('patch object')\n }\n }\n if (resetImpl) {\n api.$reset = () => resetImpl()\n }\n const subs = new Set<SubscriptionCallback<S>>()\n api.$subscribe = (cb: SubscriptionCallback<S>, _opts?: { detached?: boolean }) => {\n subs.add(cb)\n return () => subs.delete(cb)\n }\n const actionSubs = new Set<ActionSubscriber<any>>()\n api.$onAction = (cb: ActionSubscriber<any>) => {\n actionSubs.add(cb)\n return () => actionSubs.delete(cb)\n }\n return { api, subs, actionSubs }\n}\n","import type { MutationType, SubscriptionCallback } from '../types'\nimport { isReactive, isRef, toRaw } from '../../reactivity'\nimport { cloneDeep } from '../utils'\n\nconst hasOwn = Object.prototype.hasOwnProperty\n\nexport function isTrackableRef(value: unknown) {\n return isRef(value) && hasOwn.call(value, 'dep')\n}\n\nexport function snapshotValue(value: unknown) {\n if (isReactive(value)) {\n return cloneDeep(toRaw(value as any))\n }\n if (isTrackableRef(value)) {\n return cloneDeep((value as any).value)\n }\n return cloneDeep(value)\n}\n\nexport function createSafeNotifier<S>(\n storeId: string,\n subs: Set<SubscriptionCallback<S>>,\n getState: () => S,\n) {\n let notifying = false\n return (type: MutationType) => {\n if (notifying) {\n return\n }\n notifying = true\n try {\n const state = getState()\n subs.forEach((cb) => {\n try {\n cb({ type, storeId }, state)\n }\n catch {}\n })\n }\n finally {\n notifying = false\n }\n }\n}\n","import { computed, effect, reactive, toRaw, touchReactive } from '../../reactivity'\nimport { wrapAction } from '../actions'\nimport { createBaseApi } from '../base'\nimport { cloneDeep, resetObject } from '../utils'\nimport { createSafeNotifier } from './shared'\n\nexport function createOptionsStyleStore(id: string, options: any, manager: any) {\n const rawState = options.state ? options.state() : {}\n const state = reactive(rawState)\n const initialSnapshot = cloneDeep(toRaw(rawState))\n let notify: (type: any) => void = () => {}\n const base = createBaseApi<typeof state>(id, state, t => notify(t), () => {\n resetObject(state as any, initialSnapshot)\n notify('patch object')\n })\n\n let isPatching = false\n const rawPatch = base.api.$patch\n base.api.$patch = (patch: Partial<typeof state> | ((nextState: typeof state) => void)) => {\n isPatching = true\n try {\n rawPatch(patch as any)\n }\n finally {\n isPatching = false\n }\n }\n if (typeof base.api.$reset === 'function') {\n const rawReset = base.api.$reset\n base.api.$reset = () => {\n isPatching = true\n try {\n rawReset()\n }\n finally {\n isPatching = false\n }\n }\n }\n\n notify = createSafeNotifier(id, base.subs, () => state as any)\n\n const store: Record<string, any> = {}\n for (const key of Object.getOwnPropertyNames(base.api)) {\n const d = Object.getOwnPropertyDescriptor(base.api, key)\n if (d) {\n if (key === '$state') {\n Object.defineProperty(store, key, {\n enumerable: d.enumerable,\n configurable: d.configurable,\n get() {\n return (base.api as any).$state\n },\n set(v: any) {\n isPatching = true\n try {\n ;(base.api as any).$state = v\n }\n finally {\n isPatching = false\n }\n },\n })\n }\n else {\n Object.defineProperty(store, key, d)\n }\n }\n }\n\n const getterDefs = options.getters ?? {}\n Object.keys(getterDefs).forEach((key) => {\n const getter = (getterDefs as any)[key]\n if (typeof getter === 'function') {\n const c = computed(() => getter.call(store, state))\n Object.defineProperty(store, key, {\n enumerable: true,\n configurable: true,\n get() {\n return c.value\n },\n })\n }\n })\n\n const actionDefs = options.actions ?? {}\n Object.keys(actionDefs).forEach((key) => {\n const act = (actionDefs as any)[key]\n if (typeof act === 'function') {\n const wrapped = wrapAction(store as any, key, (...args: any[]) => {\n return act.apply(store as any, args)\n }, base.actionSubs)\n store[key] = wrapped\n }\n })\n\n Object.keys(state).forEach((k) => {\n Object.defineProperty(store, k, {\n enumerable: true,\n configurable: true,\n get() {\n return (state as any)[k]\n },\n set(v: any) {\n ;(state as any)[k] = v\n },\n })\n })\n\n let initialized = false\n let dispatchingDirect = false\n effect(() => {\n touchReactive(state)\n if (!initialized) {\n initialized = true\n return\n }\n if (isPatching || dispatchingDirect) {\n return\n }\n dispatchingDirect = true\n try {\n notify('direct')\n }\n finally {\n dispatchingDirect = false\n }\n })\n\n const plugins = manager?._plugins ?? []\n for (const plugin of plugins) {\n try {\n plugin({ store })\n }\n catch {}\n }\n\n return store\n}\n","import { effect, isReactive, isRef, touchReactive } from '../../reactivity'\nimport { wrapAction } from '../actions'\nimport { createBaseApi } from '../base'\nimport { cloneDeep, resetObject } from '../utils'\nimport { createSafeNotifier, isTrackableRef, snapshotValue } from './shared'\n\nexport function createSetupStyleStore(id: string, setupFactory: () => Record<string, any>, manager: any) {\n const result = setupFactory()\n let notify: (type: any) => void = () => {}\n const initialSnapshot = new Map<string, any>()\n Object.keys(result).forEach((k) => {\n const val = (result as any)[k]\n if (typeof val === 'function' || k.startsWith('$')) {\n return\n }\n if (isRef(val) && !isTrackableRef(val)) {\n return\n }\n initialSnapshot.set(k, snapshotValue(val))\n })\n\n let instance: Record<string, any> = {}\n const resetImpl = () => {\n initialSnapshot.forEach((snapValue, key) => {\n const current = (instance as any)[key]\n if (isTrackableRef(current)) {\n current.value = cloneDeep(snapValue)\n return\n }\n if (isReactive(current)) {\n resetObject(current as any, snapValue)\n return\n }\n if (isRef(current)) {\n return\n }\n ;(instance as any)[key] = cloneDeep(snapValue)\n })\n notify('patch object')\n }\n\n const base = createBaseApi<any>(id, undefined, t => notify(t), resetImpl)\n let isPatching = false\n const rawPatch = base.api.$patch\n base.api.$patch = (patch: Record<string, any> | ((state: any) => void)) => {\n isPatching = true\n try {\n rawPatch(patch)\n }\n finally {\n isPatching = false\n }\n }\n if (typeof base.api.$reset === 'function') {\n const rawReset = base.api.$reset\n base.api.$reset = () => {\n isPatching = true\n try {\n rawReset()\n }\n finally {\n isPatching = false\n }\n }\n }\n\n instance = { ...result }\n notify = createSafeNotifier(id, base.subs, () => instance)\n\n // 将 setup 返回值与基础 API 合并,同时保留每个 getter/setter 的描述符,避免覆写访问器行为\n for (const key of Object.getOwnPropertyNames(base.api)) {\n const d = Object.getOwnPropertyDescriptor(base.api, key)\n if (d) {\n if (key === '$state') {\n Object.defineProperty(instance, key, {\n enumerable: d.enumerable,\n configurable: d.configurable,\n get() {\n return (base.api as any).$state\n },\n set(v: any) {\n isPatching = true\n try {\n ;(base.api as any).$state = v\n }\n finally {\n isPatching = false\n }\n },\n })\n }\n else {\n Object.defineProperty(instance, key, d)\n }\n }\n }\n\n const directSources: any[] = []\n Object.keys(result).forEach((k) => {\n const val = (result as any)[k]\n if (typeof val === 'function' && !k.startsWith('$')) {\n ;(instance as any)[k] = wrapAction(instance, k, val, base.actionSubs)\n return\n }\n if (isTrackableRef(val)) {\n directSources.push(val)\n return\n }\n if (isReactive(val)) {\n directSources.push(val)\n return\n }\n if (isRef(val)) {\n return\n }\n if (!k.startsWith('$')) {\n let innerValue = val\n Object.defineProperty(instance, k, {\n enumerable: true,\n configurable: true,\n get() {\n return innerValue\n },\n set(next: any) {\n innerValue = next\n if (!isPatching) {\n notify('direct')\n }\n },\n })\n }\n })\n\n let dispatchingDirect = false\n if (directSources.length > 0) {\n let initialized = false\n effect(() => {\n directSources.forEach((source) => {\n if (isTrackableRef(source)) {\n void source.value\n }\n else {\n touchReactive(source)\n }\n })\n if (!initialized) {\n initialized = true\n return\n }\n if (isPatching || dispatchingDirect) {\n return\n }\n dispatchingDirect = true\n try {\n notify('direct')\n }\n finally {\n dispatchingDirect = false\n }\n })\n }\n\n const plugins = manager?._plugins ?? []\n for (const plugin of plugins) {\n try {\n plugin({ store: instance })\n }\n catch {}\n }\n\n return instance\n}\n","import type { StoreManager } from './types'\n\n/**\n * @description 创建 store 管理器(插件与共享实例入口)\n */\nexport function createStore(): StoreManager {\n const manager: StoreManager = {\n _stores: new Map(),\n _plugins: [],\n install(_app: any) {\n // 小程序场景不需要注册全局插件入口,这里保留 API 但不执行任何操作\n },\n use(plugin: (context: { store: any }) => void) {\n if (typeof plugin === 'function') {\n manager._plugins.push(plugin)\n }\n return manager\n },\n }\n ;(createStore as any)._instance = manager\n return manager\n}\n","import type {\n ActionSubscriber,\n DefineStoreOptions,\n StoreGetters,\n StoreManager,\n StoreSubscribeOptions,\n SubscriptionCallback,\n} from './types'\nimport { effectScope } from '../reactivity'\nimport { createOptionsStyleStore } from './define/optionsStyle'\nimport { createSetupStyleStore } from './define/setupStyle'\nimport { createStore } from './manager'\n\ntype SetupDefinition<T> = () => T\n\n/**\n * @description 定义一个 setup 风格的 store\n */\nexport function defineStore<T extends Record<string, any>>(id: string, setup: SetupDefinition<T>): () => T & {\n $id: string\n $patch: (patch: Record<string, any> | ((state: any) => void)) => void\n $reset: () => void\n $subscribe: (cb: SubscriptionCallback<any>, opts?: StoreSubscribeOptions) => () => void\n $onAction: (cb: ActionSubscriber<any>) => () => void\n}\n/**\n * @description 定义一个 options 风格的 store\n */\nexport function defineStore<S extends Record<string, any>, G extends Record<string, any>, A extends Record<string, any>>(\n id: string,\n options: DefineStoreOptions<S, G, A>,\n): () => S & StoreGetters<G> & A & {\n $id: string\n $state: S\n $patch: (patch: Partial<S> | ((state: S) => void)) => void\n $reset: () => void\n $subscribe: (cb: SubscriptionCallback<S>, opts?: StoreSubscribeOptions) => () => void\n $onAction: (cb: ActionSubscriber<S & StoreGetters<G> & A>) => () => void\n}\nexport function defineStore(id: string, setupOrOptions: any) {\n let instance: any\n let created = false\n const manager = (createStore as any)._instance as StoreManager | undefined\n\n return function useStore(): any {\n if (created && instance) {\n return instance\n }\n created = true\n\n const storeScope = effectScope(true)\n instance = storeScope.run(() => {\n return typeof setupOrOptions === 'function'\n ? createSetupStyleStore(id, setupOrOptions, manager)\n : createOptionsStyleStore(id, setupOrOptions as DefineStoreOptions<any, any, any>, manager)\n })\n\n return instance\n }\n}\n","import type { Ref } from '../reactivity'\nimport { computed, isRef } from '../reactivity'\n\n/**\n * @description storeToRefs 返回类型推导\n */\nexport type StoreToRefsResult<T extends Record<string, any>> = {\n [K in keyof T]:\n T[K] extends (...args: any[]) => any\n ? T[K]\n : T[K] extends Ref<infer V>\n ? Ref<V>\n : Ref<T[K]>\n}\n\n/**\n * @description 将 store 状态转换为 Ref\n */\nexport function storeToRefs<T extends Record<string, any>>(store: T): StoreToRefsResult<T> {\n const result: Record<string, any> = {}\n for (const key in store) {\n const value = (store as any)[key]\n if (typeof value === 'function') {\n result[key] = value\n continue\n }\n if (isRef(value)) {\n result[key] = value\n }\n else {\n result[key] = computed({\n get: () => (store as any)[key],\n set: (v: any) => {\n ;(store as any)[key] = v\n },\n })\n }\n }\n return result as StoreToRefsResult<T>\n}\n"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- import { n as defineStore, r as createStore, t as storeToRefs } from "./store-Dzij_OWm.mjs";
1
+ import { n as defineStore, r as createStore, t as storeToRefs } from "./store-7lzhCASj.mjs";
2
2
 
3
3
  export { createStore, defineStore, storeToRefs };
@@ -1,4 +1,4 @@
1
- import { o as unref } from "./ref-Beyx3EmJ.mjs";
1
+ import { o as unref } from "./ref-Bxwe2Kfo.mjs";
2
2
 
3
3
  //#region src/runtime/template.ts
4
4
  const hyphenateRE = /\B([A-Z])/g;
@@ -88,4 +88,4 @@ function resolvePropValue(target, key, fallback, preferProps = false) {
88
88
 
89
89
  //#endregion
90
90
  export { normalizeStyle as n, resolvePropValue as r, normalizeClass as t };
91
- //# sourceMappingURL=template-QtiM6Ubi.mjs.map
91
+ //# sourceMappingURL=template-DLHZbQ3E.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"template-QtiM6Ubi.mjs","names":[],"sources":["../../src/runtime/template.ts"],"sourcesContent":["import { unref } from '../reactivity'\n\nconst hyphenateRE = /\\B([A-Z])/g\n\nfunction hasOwnProperty(target: object, key: string) {\n return Object.prototype.hasOwnProperty.call(target, key)\n}\n\nfunction hyphenate(value: string) {\n if (!value) {\n return ''\n }\n if (value.startsWith('--')) {\n return value\n }\n return value.replace(hyphenateRE, '-$1').toLowerCase()\n}\n\nfunction appendStyle(base: string, part: string) {\n if (!part) {\n return base\n }\n if (!base) {\n return part\n }\n let next = base\n if (!next.endsWith(';')) {\n next += ';'\n }\n const normalized = part.startsWith(';') ? part.slice(1) : part\n return next + normalized\n}\n\nfunction stringifyStyle(value: Record<string, any>) {\n let res = ''\n for (const key of Object.keys(value)) {\n const raw = unref(value[key])\n if (raw == null) {\n continue\n }\n const name = hyphenate(key)\n if (Array.isArray(raw)) {\n for (const itemValue of raw) {\n const item = unref(itemValue)\n if (item == null) {\n continue\n }\n res = appendStyle(res, `${name}:${item}`)\n }\n }\n else {\n res = appendStyle(res, `${name}:${raw}`)\n }\n }\n return res\n}\n\nexport function normalizeStyle(value: any): string {\n const unwrapped = unref(value)\n if (unwrapped == null) {\n return ''\n }\n if (typeof unwrapped === 'string') {\n return unwrapped\n }\n if (Array.isArray(unwrapped)) {\n let res = ''\n for (const item of unwrapped) {\n const normalized = normalizeStyle(item)\n if (normalized) {\n res = appendStyle(res, normalized)\n }\n }\n return res\n }\n if (typeof unwrapped === 'object') {\n return stringifyStyle(unwrapped)\n }\n return ''\n}\n\nexport function normalizeClass(value: any): string {\n const unwrapped = unref(value)\n let res = ''\n if (!unwrapped) {\n return res\n }\n if (typeof unwrapped === 'string') {\n return unwrapped\n }\n if (Array.isArray(unwrapped)) {\n for (const item of unwrapped) {\n const normalized = normalizeClass(item)\n if (normalized) {\n res += `${normalized} `\n }\n }\n return res.trim()\n }\n if (typeof unwrapped === 'object') {\n for (const key of Object.keys(unwrapped)) {\n if (unref(unwrapped[key])) {\n res += `${key} `\n }\n }\n return res.trim()\n }\n return res\n}\n\nexport function resolvePropValue(target: any, key: string, fallback: any, preferProps = false) {\n if (target == null) {\n return fallback\n }\n const propsObject = unref(target.__wevuProps)\n if (key === 'data') {\n if (propsObject != null && (propsObject[key] !== undefined || hasOwnProperty(propsObject, key))) {\n return propsObject[key]\n }\n return key in target ? target[key] : fallback\n }\n const hasPropsValue = propsObject != null\n && (propsObject[key] !== undefined || hasOwnProperty(propsObject, key))\n if (preferProps) {\n if (hasPropsValue) {\n return propsObject[key]\n }\n if (key in target) {\n return target[key]\n }\n return fallback\n }\n const stateObject = unref(target.$state)\n if (stateObject != null && hasOwnProperty(stateObject, key)) {\n return target[key]\n }\n if (hasPropsValue) {\n return propsObject[key]\n }\n if (!(key in target)) {\n return fallback\n }\n return target[key]\n}\n"],"mappings":";;;AAEA,MAAM,cAAc;AAEpB,SAAS,eAAe,QAAgB,KAAa;CACnD,OAAO,OAAO,UAAU,eAAe,KAAK,QAAQ,GAAG;AACzD;AAEA,SAAS,UAAU,OAAe;CAChC,IAAI,CAAC,OACH,OAAO;CAET,IAAI,MAAM,WAAW,IAAI,GACvB,OAAO;CAET,OAAO,MAAM,QAAQ,aAAa,KAAK,CAAC,CAAC,YAAY;AACvD;AAEA,SAAS,YAAY,MAAc,MAAc;CAC/C,IAAI,CAAC,MACH,OAAO;CAET,IAAI,CAAC,MACH,OAAO;CAET,IAAI,OAAO;CACX,IAAI,CAAC,KAAK,SAAS,GAAG,GACpB,QAAQ;CAEV,MAAM,aAAa,KAAK,WAAW,GAAG,IAAI,KAAK,MAAM,CAAC,IAAI;CAC1D,OAAO,OAAO;AAChB;AAEA,SAAS,eAAe,OAA4B;CAClD,IAAI,MAAM;CACV,KAAK,MAAM,OAAO,OAAO,KAAK,KAAK,GAAG;EACpC,MAAM,MAAM,MAAM,MAAM,IAAI;EAC5B,IAAI,OAAO,MACT;EAEF,MAAM,OAAO,UAAU,GAAG;EAC1B,IAAI,MAAM,QAAQ,GAAG,GACnB,KAAK,MAAM,aAAa,KAAK;GAC3B,MAAM,OAAO,MAAM,SAAS;GAC5B,IAAI,QAAQ,MACV;GAEF,MAAM,YAAY,KAAK,GAAG,KAAK,GAAG,MAAM;EAC1C;OAGA,MAAM,YAAY,KAAK,GAAG,KAAK,GAAG,KAAK;CAE3C;CACA,OAAO;AACT;AAEA,SAAgB,eAAe,OAAoB;CACjD,MAAM,YAAY,MAAM,KAAK;CAC7B,IAAI,aAAa,MACf,OAAO;CAET,IAAI,OAAO,cAAc,UACvB,OAAO;CAET,IAAI,MAAM,QAAQ,SAAS,GAAG;EAC5B,IAAI,MAAM;EACV,KAAK,MAAM,QAAQ,WAAW;GAC5B,MAAM,aAAa,eAAe,IAAI;GACtC,IAAI,YACF,MAAM,YAAY,KAAK,UAAU;EAErC;EACA,OAAO;CACT;CACA,IAAI,OAAO,cAAc,UACvB,OAAO,eAAe,SAAS;CAEjC,OAAO;AACT;AAEA,SAAgB,eAAe,OAAoB;CACjD,MAAM,YAAY,MAAM,KAAK;CAC7B,IAAI,MAAM;CACV,IAAI,CAAC,WACH,OAAO;CAET,IAAI,OAAO,cAAc,UACvB,OAAO;CAET,IAAI,MAAM,QAAQ,SAAS,GAAG;EAC5B,KAAK,MAAM,QAAQ,WAAW;GAC5B,MAAM,aAAa,eAAe,IAAI;GACtC,IAAI,YACF,OAAO,GAAG,WAAW;EAEzB;EACA,OAAO,IAAI,KAAK;CAClB;CACA,IAAI,OAAO,cAAc,UAAU;EACjC,KAAK,MAAM,OAAO,OAAO,KAAK,SAAS,GACrC,IAAI,MAAM,UAAU,IAAI,GACtB,OAAO,GAAG,IAAI;EAGlB,OAAO,IAAI,KAAK;CAClB;CACA,OAAO;AACT;AAEA,SAAgB,iBAAiB,QAAa,KAAa,UAAe,cAAc,OAAO;CAC7F,IAAI,UAAU,MACZ,OAAO;CAET,MAAM,cAAc,MAAM,OAAO,WAAW;CAC5C,IAAI,QAAQ,QAAQ;EAClB,IAAI,eAAe,SAAS,YAAY,SAAS,UAAa,eAAe,aAAa,GAAG,IAC3F,OAAO,YAAY;EAErB,OAAO,OAAO,SAAS,OAAO,OAAO;CACvC;CACA,MAAM,gBAAgB,eAAe,SAC/B,YAAY,SAAS,UAAa,eAAe,aAAa,GAAG;CACvE,IAAI,aAAa;EACf,IAAI,eACF,OAAO,YAAY;EAErB,IAAI,OAAO,QACT,OAAO,OAAO;EAEhB,OAAO;CACT;CACA,MAAM,cAAc,MAAM,OAAO,MAAM;CACvC,IAAI,eAAe,QAAQ,eAAe,aAAa,GAAG,GACxD,OAAO,OAAO;CAEhB,IAAI,eACF,OAAO,YAAY;CAErB,IAAI,EAAE,OAAO,SACX,OAAO;CAET,OAAO,OAAO;AAChB"}
1
+ {"version":3,"file":"template-DLHZbQ3E.mjs","names":[],"sources":["../../src/runtime/template.ts"],"sourcesContent":["import { unref } from '../reactivity'\n\nconst hyphenateRE = /\\B([A-Z])/g\n\nfunction hasOwnProperty(target: object, key: string) {\n return Object.prototype.hasOwnProperty.call(target, key)\n}\n\nfunction hyphenate(value: string) {\n if (!value) {\n return ''\n }\n if (value.startsWith('--')) {\n return value\n }\n return value.replace(hyphenateRE, '-$1').toLowerCase()\n}\n\nfunction appendStyle(base: string, part: string) {\n if (!part) {\n return base\n }\n if (!base) {\n return part\n }\n let next = base\n if (!next.endsWith(';')) {\n next += ';'\n }\n const normalized = part.startsWith(';') ? part.slice(1) : part\n return next + normalized\n}\n\nfunction stringifyStyle(value: Record<string, any>) {\n let res = ''\n for (const key of Object.keys(value)) {\n const raw = unref(value[key])\n if (raw == null) {\n continue\n }\n const name = hyphenate(key)\n if (Array.isArray(raw)) {\n for (const itemValue of raw) {\n const item = unref(itemValue)\n if (item == null) {\n continue\n }\n res = appendStyle(res, `${name}:${item}`)\n }\n }\n else {\n res = appendStyle(res, `${name}:${raw}`)\n }\n }\n return res\n}\n\nexport function normalizeStyle(value: any): string {\n const unwrapped = unref(value)\n if (unwrapped == null) {\n return ''\n }\n if (typeof unwrapped === 'string') {\n return unwrapped\n }\n if (Array.isArray(unwrapped)) {\n let res = ''\n for (const item of unwrapped) {\n const normalized = normalizeStyle(item)\n if (normalized) {\n res = appendStyle(res, normalized)\n }\n }\n return res\n }\n if (typeof unwrapped === 'object') {\n return stringifyStyle(unwrapped)\n }\n return ''\n}\n\nexport function normalizeClass(value: any): string {\n const unwrapped = unref(value)\n let res = ''\n if (!unwrapped) {\n return res\n }\n if (typeof unwrapped === 'string') {\n return unwrapped\n }\n if (Array.isArray(unwrapped)) {\n for (const item of unwrapped) {\n const normalized = normalizeClass(item)\n if (normalized) {\n res += `${normalized} `\n }\n }\n return res.trim()\n }\n if (typeof unwrapped === 'object') {\n for (const key of Object.keys(unwrapped)) {\n if (unref(unwrapped[key])) {\n res += `${key} `\n }\n }\n return res.trim()\n }\n return res\n}\n\nexport function resolvePropValue(target: any, key: string, fallback: any, preferProps = false) {\n if (target == null) {\n return fallback\n }\n const propsObject = unref(target.__wevuProps)\n if (key === 'data') {\n if (propsObject != null && (propsObject[key] !== undefined || hasOwnProperty(propsObject, key))) {\n return propsObject[key]\n }\n return key in target ? target[key] : fallback\n }\n const hasPropsValue = propsObject != null\n && (propsObject[key] !== undefined || hasOwnProperty(propsObject, key))\n if (preferProps) {\n if (hasPropsValue) {\n return propsObject[key]\n }\n if (key in target) {\n return target[key]\n }\n return fallback\n }\n const stateObject = unref(target.$state)\n if (stateObject != null && hasOwnProperty(stateObject, key)) {\n return target[key]\n }\n if (hasPropsValue) {\n return propsObject[key]\n }\n if (!(key in target)) {\n return fallback\n }\n return target[key]\n}\n"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
- import { A as track, C as effect, N as nextTick, P as queueJob, a as toValue, b as addMutationRecorder, d as reactive, g as touchReactive, h as prelinkReactiveTree, i as ref, j as trigger, k as stop, l as isReactive, m as clearPatchIndices, n as isRef, o as unref, p as shallowReactive, r as markAsRef, s as getReactiveVersion, t as customRef, w as effectScope, x as removeMutationRecorder, y as toRaw } from "./ref-Beyx3EmJ.mjs";
2
- import { t as computed } from "./computed-DKaBMLFF.mjs";
3
- import { _ as getScopedSlotHostGlobalObject, c as getCurrentSetupContext, d as setCurrentSetupContext, g as getMiniProgramGlobalObject, h as getCurrentMiniProgramRuntimeCapabilities, l as pushHook, m as getCurrentMiniProgramPages, n as callHookList, p as getCurrentMiniProgramHostConfig, r as callHookReturn, s as getCurrentInstance, t as assertInSetup, u as setCurrentInstance, v as supportsCurrentMiniProgramRuntimeCapability, x as readonly } from "./base-C_Jux3cz.mjs";
4
- import { l as shallowRef, t as watch } from "./watch-BLUHj_gn.mjs";
5
- import { C as releaseCurrentPageInstance, D as attachRuntimeProvideContext, E as attachRuntimeLayoutProvideContext, H as onPullDownRefresh, M as onAttached, N as onDetached, O as ensureRuntimeAppProvides, S as getCurrentPageInstance, T as runInPageScrollHook, V as onPageScroll, X as onShow, b as ensureMiniProgramGlobalPatched, et as onUnload, k as setRuntimeAppProvidedValue, w as resolvePageOptions, x as ensurePageShareMenus, y as bindCurrentPageInstance } from "./router-CQIgz5Q_.mjs";
1
+ import { A as track, C as effect, N as nextTick, P as queueJob, a as toValue, b as addMutationRecorder, d as reactive, g as touchReactive, h as prelinkReactiveTree, i as ref, j as trigger, k as stop, l as isReactive, m as clearPatchIndices, n as isRef, o as unref, p as shallowReactive, r as markAsRef, s as getReactiveVersion, t as customRef, w as effectScope, x as removeMutationRecorder, y as toRaw } from "./ref-Bxwe2Kfo.mjs";
2
+ import { t as computed } from "./computed-4hT2jDra.mjs";
3
+ import { _ as getScopedSlotHostGlobalObject, c as getCurrentSetupContext, d as setCurrentSetupContext, g as getMiniProgramGlobalObject, h as getCurrentMiniProgramRuntimeCapabilities, l as pushHook, m as getCurrentMiniProgramPages, n as callHookList, p as getCurrentMiniProgramHostConfig, r as callHookReturn, s as getCurrentInstance, t as assertInSetup, u as setCurrentInstance, v as supportsCurrentMiniProgramRuntimeCapability, x as readonly } from "./base-ii6cqKIl.mjs";
4
+ import { l as shallowRef, t as watch } from "./watch-B46crqgs.mjs";
5
+ import { C as releaseCurrentPageInstance, D as attachRuntimeProvideContext, E as attachRuntimeLayoutProvideContext, H as onPullDownRefresh, M as onAttached, N as onDetached, O as ensureRuntimeAppProvides, S as getCurrentPageInstance, T as runInPageScrollHook, V as onPageScroll, X as onShow, b as ensureMiniProgramGlobalPatched, et as onUnload, k as setRuntimeAppProvidedValue, w as resolvePageOptions, x as ensurePageShareMenus, y as bindCurrentPageInstance } from "./router-D6H7HviN.mjs";
6
6
  import { WEVU_ATTRS_KEY, WEVU_EFFECT_SCOPE_KEY, WEVU_EXPOSED_KEY, WEVU_FUNCTION_PROP_PATHS_KEY, WEVU_HOOKS_KEY, WEVU_INLINE_HANDLER, WEVU_INLINE_MAP_KEY, WEVU_IS_APP_INSTANCE_KEY, WEVU_LAYOUT_BRIDGE_PAGE_KEYS, WEVU_LAYOUT_HOST_BRIDGE_KEY, WEVU_MODEL_HANDLER, WEVU_NATIVE_INSTANCE_KEY, WEVU_ON_BEFORE_UPDATE_HOOK, WEVU_ON_LOAD_CALLED_KEY, WEVU_ON_UPDATED_HOOK, WEVU_OWNER_HANDLER, WEVU_PAGE_LAYOUT_NAME_KEY, WEVU_PAGE_LAYOUT_NONE, WEVU_PAGE_LAYOUT_PROPS_KEY, WEVU_PAGE_LAYOUT_SETTER_KEY, WEVU_PAGE_SCROLL_HOOK_DEPTH_KEY, WEVU_PARENT_INSTANCE_KEY, WEVU_PENDING_PROP_VALUES_KEY, WEVU_PROPS_ALIASES_KEY, WEVU_PROPS_DERIVED_KEYS_KEY, WEVU_PROPS_KEY, WEVU_PROP_KEYS_KEY, WEVU_PUBLIC_RUNTIME_KEY, WEVU_READY_CALLED_KEY, WEVU_RESERVED_METHOD_PREFIX, WEVU_ROUTE_DONE_CALLED_KEY, WEVU_ROUTE_DONE_IN_TICK_KEY, WEVU_RUNTIME_APP_KEY, WEVU_RUNTIME_KEY, WEVU_SCOPED_SLOT_CREATOR_KEY, WEVU_SCOPED_SLOT_OWNER_SEED_KEY, WEVU_SCOPED_SLOT_OWNER_STORE_KEY, WEVU_SETUP_CONTEXT_INSTANCE_KEY, WEVU_SETUP_STATE_KEY, WEVU_SLOT_NAMES_PROP, WEVU_SLOT_OWNER_ID_KEY, WEVU_SLOT_OWNER_ID_PROP, WEVU_SLOT_OWNER_KEY, WEVU_SLOT_OWNER_PROXY_KEY, WEVU_SLOT_PROPS_DATA_KEY, WEVU_SLOT_PROPS_KEY, WEVU_SLOT_SCOPE_KEY, WEVU_TEMPLATE_REFS_CALLBACKS_KEY, WEVU_TEMPLATE_REFS_KEY, WEVU_TEMPLATE_REFS_PENDING_KEY, WEVU_TEMPLATE_REF_MAP_KEY, WEVU_WATCH_STOPS_KEY } from "@weapp-core/constants";
7
7
  import { resolveMiniProgramPageKeys } from "@weapp-core/shared";
8
8
  import { wpi } from "@wevu/api";
@@ -84,7 +84,7 @@ function callUpdateHooks(target, phase) {
84
84
 
85
85
  //#endregion
86
86
  //#region package.json
87
- var version$1 = "6.17.0";
87
+ var version$1 = "6.17.1";
88
88
 
89
89
  //#endregion
90
90
  //#region src/version.ts
@@ -1257,7 +1257,7 @@ function createSetDataScheduler(options) {
1257
1257
  const resolveTopKeysByRoot = (root) => {
1258
1258
  const matches = [];
1259
1259
  const rawSetupState = setupState && typeof setupState === "object" ? isReactive(setupState) ? toRaw(setupState) : setupState : void 0;
1260
- for (const key of new Set([...Object.keys(state), ...rawSetupState ? Object.keys(rawSetupState) : []])) {
1260
+ for (const key of /* @__PURE__ */ new Set([...Object.keys(state), ...rawSetupState ? Object.keys(rawSetupState) : []])) {
1261
1261
  if (!shouldIncludeSnapshotKey(key)) continue;
1262
1262
  const value = rawSetupState && hasOwn(rawSetupState, key) ? rawSetupState[key] : state[key];
1263
1263
  const candidate = isRef(value) ? value.value : value;
@@ -1317,7 +1317,7 @@ function createSetDataScheduler(options) {
1317
1317
  const includedStateKeys = /* @__PURE__ */ new Set();
1318
1318
  const includedComputedKeys = /* @__PURE__ */ new Set();
1319
1319
  const replacedTopLevelKeys = /* @__PURE__ */ new Set();
1320
- for (const key of new Set([...Object.keys(rawState), ...rawSetupState ? Object.keys(rawSetupState) : []])) {
1320
+ for (const key of /* @__PURE__ */ new Set([...Object.keys(rawState), ...rawSetupState ? Object.keys(rawSetupState) : []])) {
1321
1321
  if (!shouldIncludeSnapshotKey(key)) continue;
1322
1322
  includedStateKeys.add(key);
1323
1323
  const source = rawSetupState && hasOwn(rawSetupState, key) ? rawSetupState : rawState;
@@ -2216,7 +2216,7 @@ function mergeComponentRefValue(wrapper, exposed) {
2216
2216
  return Reflect.has(target, key) || key in source;
2217
2217
  },
2218
2218
  ownKeys(target) {
2219
- return [...new Set([...Reflect.ownKeys(target), ...Reflect.ownKeys(source)])];
2219
+ return [.../* @__PURE__ */ new Set([...Reflect.ownKeys(target), ...Reflect.ownKeys(source)])];
2220
2220
  },
2221
2221
  getOwnPropertyDescriptor(target, key) {
2222
2222
  if (Reflect.has(target, key)) return Object.getOwnPropertyDescriptor(target, key);
@@ -3989,7 +3989,7 @@ function prepareComponentOptions(mpOptions) {
3989
3989
  ].some((hook) => typeof hook === "function");
3990
3990
  const isPage = Boolean(rest.__wevu_isPage) || Object.keys(features !== null && features !== void 0 ? features : {}).length > 0 || hasPageOnlyHooks;
3991
3991
  const restOptions = { ...rest };
3992
- const preservedInstanceFieldKeys = new Set([
3992
+ const preservedInstanceFieldKeys = /* @__PURE__ */ new Set([
3993
3993
  "data",
3994
3994
  "behaviors",
3995
3995
  "relations",
@@ -4025,7 +4025,7 @@ function prepareComponentOptions(mpOptions) {
4025
4025
  } catch (_unused) {}
4026
4026
  }
4027
4027
  };
4028
- const moveToMethodsExcludes = new Set([
4028
+ const moveToMethodsExcludes = /* @__PURE__ */ new Set([
4029
4029
  "data",
4030
4030
  "export",
4031
4031
  "definitionFilter",
@@ -4127,7 +4127,7 @@ function createPropsSync(options) {
4127
4127
  const aliasEntries = Object.entries(propsAliases !== null && propsAliases !== void 0 ? propsAliases : {}).filter(([alias, propName]) => alias && propName);
4128
4128
  const aliasKeySet = new Set(aliasEntries.map(([alias]) => alias));
4129
4129
  const directPropsDerivedKeys = [...propsDerivedKeySet].filter((key) => propKeySet.has(key) && !aliasKeySet.has(key));
4130
- const templateRuntimePropKeys = new Set([
4130
+ const templateRuntimePropKeys = /* @__PURE__ */ new Set([
4131
4131
  WEVU_SLOT_NAMES_PROP,
4132
4132
  WEVU_SLOT_OWNER_ID_PROP,
4133
4133
  WEVU_SLOT_SCOPE_KEY
@@ -4388,7 +4388,8 @@ function resolveDeclaredLayoutHostFromRefs(binding, context) {
4388
4388
  }
4389
4389
  function createDeclaredLayoutHostBridge(bindings, context) {
4390
4390
  const nativeContext = resolveNativeLayoutContext(context);
4391
- return Object.assign(nativeContext && typeof nativeContext === "object" ? Object.create(nativeContext) : {}, { selectComponent(key) {
4391
+ const bridgeBase = nativeContext && typeof nativeContext === "object" ? Object.create(nativeContext) : {};
4392
+ return Object.assign(bridgeBase, { selectComponent(key) {
4392
4393
  const binding = findLayoutHostBinding(bindings, key);
4393
4394
  if (!binding) return null;
4394
4395
  if (binding.kind === "component" || !binding.kind) {
@@ -4486,7 +4487,8 @@ function useLayoutBridge(selectors, options = {}) {
4486
4487
  const normalizedSelectors = normalizeSelectors(selectors);
4487
4488
  const resolveComponent = options.resolveComponent;
4488
4489
  const nativeContext = resolveNativeLayoutContext(context);
4489
- const bridge = Object.assign(nativeContext && typeof nativeContext === "object" ? Object.create(nativeContext) : {}, { selectComponent(selector) {
4490
+ const bridgeBase = nativeContext && typeof nativeContext === "object" ? Object.create(nativeContext) : {};
4491
+ const bridge = Object.assign(bridgeBase, { selectComponent(selector) {
4490
4492
  var _nativeContext$select, _currentPage$selectCo, _currentPage$selectCo2;
4491
4493
  if (!normalizedSelectors.includes(selector)) return null;
4492
4494
  const resolvedComponent = resolveComponent === null || resolveComponent === void 0 ? void 0 : resolveComponent(selector);
@@ -5031,7 +5033,7 @@ function resolveNativeInitialData(data, computed, setData) {
5031
5033
  //#region src/runtime/define/props.ts
5032
5034
  const ALLOW_NULL_PROP_INPUT_KEY = "__wevu_allowNullPropInput";
5033
5035
  const PUBLIC_ALLOW_NULL_PROP_INPUT_KEY = "allowNullPropInput";
5034
- const NATIVE_PROPERTY_TYPE_MAP = new Map([
5036
+ const NATIVE_PROPERTY_TYPE_MAP = /* @__PURE__ */ new Map([
5035
5037
  [String, String],
5036
5038
  [Number, Number],
5037
5039
  [Boolean, Boolean],
@@ -6257,7 +6259,7 @@ function useChangeModel() {
6257
6259
  function mergeModels(a, b) {
6258
6260
  if (a == null) return b;
6259
6261
  if (b == null) return a;
6260
- if (Array.isArray(a) && Array.isArray(b)) return [...new Set([...a, ...b])];
6262
+ if (Array.isArray(a) && Array.isArray(b)) return [.../* @__PURE__ */ new Set([...a, ...b])];
6261
6263
  if (typeof a === "object" && typeof b === "object") return {
6262
6264
  ...a,
6263
6265
  ...b
@@ -6298,4 +6300,4 @@ function useTemplateRef(name) {
6298
6300
 
6299
6301
  //#endregion
6300
6302
  export { version as $, registerPageLayoutBridge as A, mountRuntimeInstance as B, useElementIntersectionObserver as C, defineComponent as D, createWevuScopedSlotComponent as E, unregisterRuntimeLayoutHosts as F, setPageLayout as G, teardownRuntimeInstance as H, useLayoutBridge as I, usePageLayout as J, syncRuntimePageLayoutState as K, useLayoutHosts as L, resolveLayoutBridge as M, resolveLayoutHost as N, createApp as O, unregisterPageLayoutBridge as P, markNoSetData as Q, waitForLayoutHost as R, useIntersectionObserver as S, createWevuComponent as T, runSetupFunction as U, setRuntimeSetDataVisibility as V, resolveRuntimePageLayoutName as W, setWevuDefaults as X, resetWevuDefaults as Y, isNoSetData as Z, usePageScrollThrottle as _, useModel as a, onDeactivated as at, useNavigationBarMetrics as b, useSlots as c, onServerPrefetch as ct, useUpdatePerformanceListener as d, callUpdateHooks as et, useBoundingClientRect as f, useAsyncPullDownRefresh as g, useSelectorQuery as h, useChangeModel as i, onBeforeUpdate as it, registerRuntimeLayoutHosts as j, registerComponent as k, defineAppSetup as l, onUnmounted as lt, useSelectorFields as m, mergeModels as n, onBeforeMount as nt, useAttrs as o, onErrorCaptured as ot, useScrollOffset as p, syncRuntimePageLayoutStateFromRuntime as q, useBindModel as r, onBeforeUnmount as rt, useNativeInstance as s, onMounted as st, useTemplateRef as t, onActivated as tt, use as u, onUpdated as ut, getCurrentPageStackSnapshot as v, useDisposables as w, usePageStack as x, getNavigationBarMetrics as y, registerApp as z };
6301
- //# sourceMappingURL=templateRef-BxL-pQJJ.mjs.map
6303
+ //# sourceMappingURL=templateRef-i3T-mULF.mjs.map