wevu 6.16.6 → 6.16.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dev/index.mjs +4 -4
- package/dist/dev/{ref-oJCdOWf7.mjs → ref-Dui1TzOR.mjs} +5 -5
- package/dist/dev/{ref-oJCdOWf7.mjs.map → ref-Dui1TzOR.mjs.map} +1 -1
- package/dist/dev/{router-CXNNN43P.mjs → router-DFQw3LKA.mjs} +2 -2
- package/dist/dev/{router-CXNNN43P.mjs.map → router-DFQw3LKA.mjs.map} +1 -1
- package/dist/dev/router.mjs +36 -20
- package/dist/dev/router.mjs.map +1 -1
- package/dist/dev/{src-C2BzhMY6.mjs → src-Bg6AVYQe.mjs} +632 -57
- package/dist/dev/src-Bg6AVYQe.mjs.map +1 -0
- package/dist/dev/{store-BhOds5RF.mjs → store-Brqfb7LU.mjs} +2 -2
- package/dist/dev/{store-BhOds5RF.mjs.map → store-Brqfb7LU.mjs.map} +1 -1
- package/dist/dev/store.mjs +1 -1
- package/dist/dev/vue-demi.mjs +4 -4
- package/dist/index.mjs +1 -1
- package/dist/router.d.mts +4 -1
- package/dist/router.mjs +1 -1
- package/dist/src-C0T_fnDR.mjs +1 -0
- package/dist/vue-demi.mjs +1 -1
- package/package.json +3 -3
- package/dist/dev/src-C2BzhMY6.mjs.map +0 -1
- package/dist/src-BF-e4_0K.mjs +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"src-Bg6AVYQe.mjs","names":["isObject","packageVersion","isPlainObject","isPlainObject","normalizeSetDataValue","AMP_RE","QUOT_RE","NUM_QUOT_RE","APOS_RE","NUM_APOS_RE","LT_RE","GT_RE","decodeWxmlEntities","resolveCurrentPageInstance","getRuntimeOwnerLabel"],"sources":["../../src/reactivity/shallowRef.ts","../../src/reactivity/toRefs.ts","../../src/reactivity/traverse.ts","../../src/runtime/hooks/vue.ts","../../src/reactivity/watch/types.ts","../../src/reactivity/watch/helpers.ts","../../src/reactivity/watch.ts","../../package.json","../../src/version.ts","../../src/utils.ts","../../src/runtime/internal.ts","../../src/runtime/bindModel.ts","../../src/runtime/setupTracking.ts","../../src/runtime/nativeBridge.ts","../../src/runtime/app/computed.ts","../../src/runtime/app/context.ts","../../src/runtime/app/diagnostics.ts","../../src/runtime/noSetData.ts","../../src/runtime/diff.ts","../../src/runtime/app/setData/payload.ts","../../src/runtime/app/setData/snapshot.ts","../../src/runtime/app/setData/patchScheduler.ts","../../src/runtime/app/setData/scheduler.ts","../../src/runtime/app/setDataOptions.ts","../../src/runtime/app/mount.ts","../../src/runtime/defaults.ts","../../src/runtime/register/inline.ts","../../src/runtime/pageLayout.ts","../../src/runtime/scopedSlots.ts","../../src/runtime/templateRefs/helpers.ts","../../src/runtime/templateRefs.ts","../../src/runtime/register/runtimeInstance/setupContext.ts","../../src/runtime/register/runtimeInstance/methodBridge.ts","../../src/runtime/layoutComponentMatcher.ts","../../src/runtime/register/runtimeInstance/provideContext.ts","../../src/runtime/register/setup.ts","../../src/runtime/register/runtimeInstance/setupPhase.ts","../../src/runtime/register/runtimeInstance/utils.ts","../../src/runtime/register/setDataFrequencyWarning.ts","../../src/runtime/register/watch.ts","../../src/runtime/register/runtimeInstance.ts","../../src/runtime/register/app.ts","../../src/runtime/register/component/features.ts","../../src/runtime/register/component/lifecycle/optionalHooks.ts","../../src/runtime/register/component/lifecycle.ts","../../src/runtime/register/component/methods.ts","../../src/runtime/register/component/options.ts","../../src/runtime/register/snapshot.ts","../../src/runtime/register/component/props.ts","../../src/runtime/layoutBridge.ts","../../src/runtime/register/component/registerDefinition.ts","../../src/runtime/register/component.ts","../../src/runtime/app.ts","../../src/runtime/define/props.ts","../../src/runtime/define/scopedSlotOptions.ts","../../src/runtime/define/setupResult.ts","../../src/runtime/define.ts","../../src/runtime/disposables.ts","../../src/runtime/elementIntersectionObserver.ts","../../src/runtime/intersectionObserver.ts","../../src/runtime/pageEnvironment.ts","../../src/runtime/pageScroll.ts","../../src/runtime/pullDownRefresh.ts","../../src/runtime/selectorQuery.ts","../../src/runtime/template.ts","../../src/runtime/updatePerformance.ts","../../src/runtime/use.ts","../../src/runtime/vueCompat/context.ts","../../src/runtime/vueCompat/model.ts","../../src/runtime/vueCompat/templateRef.ts"],"sourcesContent":["import type { Ref } from './ref'\nimport { triggerEffects } from './core'\nimport { customRef, isRef } from './ref'\n\nexport function shallowRef<T>(value: T): Ref<T>\nexport function shallowRef<T>(value: T, defaultValue: T): Ref<T>\n/**\n * 创建一个“浅层” ref:它只在 .value 被整体替换时触发依赖,不会对内部对象做深层响应式处理。\n *\n * @param value 初始值\n * @param defaultValue 传递给 customRef 的默认值,可用于兜底\n * @returns 仅跟踪自身 .value 变更的浅层 ref\n *\n * @example\n * ```ts\n * const state = shallowRef({ count: 0 })\n * state.value = { count: 1 } // 会触发依赖\n * state.value.count++ // 不会触发依赖(内部属性未被深度代理)\n * ```\n */\nexport function shallowRef<T>(value: T, defaultValue?: T): Ref<T> {\n return customRef<T>(\n (track, trigger) => ({\n get() {\n track()\n return value\n },\n set(newValue: T) {\n if (Object.is(value, newValue)) {\n return\n }\n value = newValue\n trigger()\n },\n }),\n defaultValue,\n ) as Ref<T>\n}\n\n/**\n * 判断传入值是否为浅层 ref。\n *\n * @param r 待判断的值\n * @returns 若为浅层 ref 则返回 true\n */\nexport function isShallowRef(r: any): r is Ref<any> {\n // 目前凡是用 customRef 创建的 ref 都视为“浅层”,因为不会递归包装内部属性\n return isRef(r) && typeof r.value !== 'function'\n}\n\n/**\n * 主动触发一次浅层 ref 的更新(无需深度比较)。\n *\n * @param ref 需要触发的 ref\n */\nexport function triggerRef<T>(ref: Ref<T>) {\n // 若未来有专用 trigger 机制可替换,此处作为兼容 API 的占位实现\n if (isRef(ref)) {\n const dep = (ref as any).dep\n if (dep) {\n triggerEffects(dep)\n return\n }\n // 通过重新赋值自身触发依赖\n const value = ref.value\n ref.value = value\n }\n}\n","import type { Ref } from './ref'\nimport { isReactive } from './reactive'\nimport { customRef, isRef } from './ref'\n\n/**\n * 为源响应式对象的单个属性创建 ref,可读可写并与原属性保持同步。\n *\n * @param object 源响应式对象\n * @param key 属性名\n * @returns 指向该属性的 ref\n *\n * @example\n * ```ts\n * const state = reactive({ foo: 1 })\n * const fooRef = toRef(state, 'foo')\n *\n * fooRef.value++\n * console.log(state.foo) // 2\n * ```\n */\nexport function toRef<T extends object, K extends keyof T>(\n object: T,\n key: K,\n): ToRef<T[K]>\nexport function toRef<T extends object, K extends keyof T>(\n object: T,\n key: K,\n defaultValue: T[K],\n): ToRef<T[K]>\nexport function toRef<T extends object, K extends keyof T>(\n object: T,\n key: K,\n defaultValue?: T[K],\n): ToRef<T[K]> {\n const value = object[key]\n\n if (isRef(value)) {\n return value as ToRef<T[K]>\n }\n\n return customRef<T[K]>((track, trigger) => ({\n get() {\n track()\n return object[key]\n },\n set(newValue) {\n ;(object as any)[key] = newValue\n trigger()\n },\n }), defaultValue) as ToRef<T[K]>\n}\n\n/**\n * 将一个响应式对象转换成“同结构的普通对象”,其中每个字段都是指向原对象对应属性的 ref。\n *\n * @param object 待转换的响应式对象\n * @returns 包含若干 ref 的普通对象\n *\n * @example\n * ```ts\n * const state = reactive({ foo: 1, bar: 2 })\n * const stateAsRefs = toRefs(state)\n *\n * stateAsRefs.foo.value++ // 2\n * state.foo // 2\n * ```\n */\nexport function toRefs<T extends object>(object: T): ToRefs<T> {\n if (!isReactive(object)) {\n // eslint-disable-next-line no-console -- 保持与 Vue 类似的非响应式输入警告\n console.warn('toRefs() 需要响应式对象,但收到的是普通对象。')\n }\n\n const result: any = Array.isArray(object) ? Array.from({ length: object.length }) : {}\n\n for (const key in object) {\n result[key] = toRef(object, key)\n }\n\n return result\n}\n\n/**\n * toRefs 返回值的类型辅助\n */\ntype ToRef<T> = T extends Ref<any> ? T : Ref<T>\n\nexport type ToRefs<T extends object> = {\n [K in keyof T]: ToRef<T[K]>\n}\n","import { isObject, isReactive, toRaw } from './reactive'\nimport { ReactiveFlags } from './reactive/shared'\nimport { isRef } from './ref'\n\n/**\n * 深度遍历工具(框架内部依赖收集使用)。\n * @internal\n */\nexport function traverse(value: any, depth: number = Infinity, seen = new Map<object, number>()): any {\n if (depth <= 0 || !isObject(value)) {\n return value\n }\n if (isRef(value)) {\n traverse(value.value, depth - 1, seen)\n return value\n }\n if ((value as any)[ReactiveFlags.SKIP]) {\n return value\n }\n const existingDepth = seen.get(value)\n if (existingDepth !== undefined && existingDepth >= depth) {\n return value\n }\n seen.set(value, depth)\n const nextDepth = depth - 1\n if (Array.isArray(value)) {\n value.forEach(item => traverse(item, nextDepth, seen))\n return value\n }\n if (value instanceof Map) {\n value.forEach(item => traverse(item, nextDepth, seen))\n return value\n }\n if (value instanceof Set) {\n value.forEach(item => traverse(item, nextDepth, seen))\n return value\n }\n const target = isReactive(value) && depth !== Infinity ? toRaw(value) : value\n for (const key in target as any) {\n traverse((value as any)[key], nextDepth, seen)\n }\n return value\n}\n","import type { InternalRuntimeState } from '../types'\nimport {\n WEVU_ON_BEFORE_UPDATE_HOOK,\n WEVU_ON_UPDATED_HOOK,\n} from '@weapp-core/constants'\nimport { assertInSetup, callHookList, pushHook } from './base'\n\n// ============================================================================\n// 与 Vue 3 对齐的生命周期别名\n// 将 Vue 3 的生命周期名称映射到小程序对应的钩子\n// ============================================================================\n\n/**\n * Vue 3 对齐:组件/页面已挂载,映射小程序 onReady\n */\nexport function onMounted(handler: () => void) {\n pushHook(assertInSetup('onMounted'), 'onReady', handler)\n}\n\n/**\n * Vue 3 对齐:组件/页面更新后触发。\n * 小程序没有专用 update 生命周期,这里在每次 setData 完成后调用。\n */\nexport function onUpdated(handler: () => void) {\n pushHook(assertInSetup('onUpdated'), WEVU_ON_UPDATED_HOOK, handler)\n}\n\n/**\n * Vue 3 对齐:卸载前触发。\n * 小程序无 before-unload 生命周期,setup 时同步执行以保持语义。\n */\nexport function onBeforeUnmount(handler: () => void) {\n assertInSetup('onBeforeUnmount')\n // 在 setup 期间立即执行,等价于“已进入挂载流程”\n handler()\n}\n\n/**\n * Vue 3 对齐:组件/页面卸载;映射到页面 onUnload 或组件 detached\n */\nexport function onUnmounted(handler: () => void) {\n pushHook(assertInSetup('onUnmounted'), 'onUnload', handler)\n}\n\n/**\n * Vue 3 对齐:挂载前;setup 时同步触发以模拟 beforeMount 语义\n */\nexport function onBeforeMount(handler: () => void) {\n assertInSetup('onBeforeMount')\n // 在 setup 期间立即执行\n handler()\n}\n\n/**\n * Vue 3 对齐:更新前;在每次 setData 前触发\n */\nexport function onBeforeUpdate(handler: () => void) {\n pushHook(assertInSetup('onBeforeUpdate'), WEVU_ON_BEFORE_UPDATE_HOOK, handler)\n}\n\n/**\n * Vue 3 对齐:错误捕获;映射到小程序 onError\n */\nexport function onErrorCaptured(handler: (err: any, instance: any, info: string) => void) {\n const instance = assertInSetup('onErrorCaptured')\n pushHook(instance, 'onError', (err?: any) => handler(err, instance, ''))\n}\n\n/**\n * Vue 3 对齐:组件激活;映射到小程序 onShow\n */\nexport function onActivated(handler: () => void) {\n pushHook(assertInSetup('onActivated'), 'onShow', handler)\n}\n\n/**\n * Vue 3 对齐:组件失活;映射到小程序 onHide\n */\nexport function onDeactivated(handler: () => void) {\n pushHook(assertInSetup('onDeactivated'), 'onHide', handler)\n}\n\n/**\n * Vue 3 对齐:服务端渲染前置钩子。\n * 小程序无此场景,保留空实现以保持 API 兼容。\n */\nexport function onServerPrefetch(_handler: () => void) {\n // 小程序环境不执行任何逻辑\n assertInSetup('onServerPrefetch')\n}\n\n// 内部更新钩子派发:before/after 阶段统一入口\n/**\n * 派发更新阶段钩子(框架内部调度入口)。\n * @internal\n */\nexport function callUpdateHooks(target: InternalRuntimeState, phase: 'before' | 'after') {\n const hookName = phase === 'before' ? WEVU_ON_BEFORE_UPDATE_HOOK : WEVU_ON_UPDATED_HOOK\n callHookList(target, hookName)\n}\n","import type { ComputedRef } from '../computed'\nimport type { Ref } from '../ref'\n\nexport type OnCleanup = (cleanupFn: () => void) => void\nexport type WatchEffect = (onCleanup: OnCleanup) => void\nexport type WatchSource<T = any> = Ref<T> | ComputedRef<T> | (() => T)\nexport type WatchCallback<V = any, OV = any> = (value: V, oldValue: OV, onCleanup: OnCleanup) => void\nexport type WatchScheduler = (job: () => void, isFirstRun: boolean) => void\nexport type MaybeUndefined<T, Immediate> = Immediate extends true ? T | undefined : T\nexport type MultiWatchSources = (WatchSource<unknown> | object)[]\nexport type MapSources<T, Immediate> = {\n [K in keyof T]: T[K] extends WatchSource<infer V>\n ? MaybeUndefined<V, Immediate>\n : T[K] extends object\n ? MaybeUndefined<T[K], Immediate>\n : never\n}\nexport type WatchSourceValue<S> = S extends WatchSource<infer V>\n ? V\n : S extends object\n ? S\n : never\nexport type WatchSources<T = any>\n = | WatchSource<T>\n | ReadonlyArray<WatchSource<unknown> | object>\n | (T extends object ? T : never)\ntype IsTuple<T extends ReadonlyArray<any>> = number extends T['length'] ? false : true\nexport type WatchMultiSources<T extends ReadonlyArray<WatchSource<unknown> | object>> = IsTuple<T> extends true\n ? { [K in keyof T]: WatchSourceValue<T[K]> }\n : Array<WatchSourceValue<T[number]>>\n\nexport interface WatchEffectOptions {\n flush?: 'pre' | 'post' | 'sync'\n}\n\nexport interface WatchOptions<Immediate extends boolean = false> extends WatchEffectOptions {\n immediate?: Immediate\n deep?: boolean | number\n once?: boolean\n scheduler?: WatchScheduler\n}\n\nexport interface WatchStopHandle {\n (): void\n stop: () => void\n pause: () => void\n resume: () => void\n}\n\nexport type DeepWatchStrategy = 'version' | 'traverse'\n\nlet __deepWatchStrategy: DeepWatchStrategy = 'version'\n\n/**\n * 设置深度 watch 内部策略(测试/框架内部使用)。\n * @internal\n */\nexport function setDeepWatchStrategy(strategy: DeepWatchStrategy) {\n __deepWatchStrategy = strategy\n}\n\n/**\n * 获取深度 watch 内部策略(测试/框架内部使用)。\n * @internal\n */\nexport function getDeepWatchStrategy(): DeepWatchStrategy {\n return __deepWatchStrategy\n}\n","import type { Ref } from '../ref'\nimport type { WatchScheduler, WatchSource, WatchSources } from './types'\nimport { nextTick } from '../../scheduler'\nimport { queueJob } from '../core'\nimport { isReactive, touchReactive } from '../reactive'\nimport { isRef } from '../ref'\nimport { traverse } from '../traverse'\nimport { getDeepWatchStrategy } from './types'\n\ninterface WatchGetterContext {\n getter: () => any\n isMultiSource: boolean\n isReactiveSource: boolean\n}\n\nfunction resolveWatchSource(item: WatchSource<any> | object) {\n if (typeof item === 'function') {\n return (item as () => any)()\n }\n if (isRef(item)) {\n return (item as Ref<any>).value\n }\n if (isReactive(item)) {\n return item\n }\n throw new Error('无效的 watch 源')\n}\n\nexport function createWatchGetter(source: WatchSources<any>): WatchGetterContext {\n const isReactiveSource = isReactive(source)\n const isMultiSource = Array.isArray(source) && !isReactiveSource\n let getter: () => any\n\n if (isMultiSource) {\n const sources = source as ReadonlyArray<WatchSource<any> | object>\n getter = () => sources.map(item => resolveWatchSource(item))\n }\n else if (typeof source === 'function') {\n getter = source as () => any\n }\n else if (isRef(source)) {\n getter = () => (source as Ref<any>).value\n }\n else if (isReactiveSource) {\n getter = () => source as any\n }\n else {\n throw new Error('无效的 watch 源')\n }\n\n return {\n getter,\n isMultiSource,\n isReactiveSource,\n }\n}\n\nexport function applyDeepWatchGetter(\n getter: () => any,\n source: WatchSources<any>,\n isMultiSource: boolean,\n isReactiveSource: boolean,\n deepOption: boolean | number | undefined,\n) {\n const deepDefault = isMultiSource\n ? (source as ReadonlyArray<WatchSource<any> | object>).some(item => isReactive(item))\n : isReactiveSource\n const deep = deepOption ?? deepDefault\n const shouldDeep = deep === true || typeof deep === 'number'\n if (!shouldDeep) {\n return getter\n }\n const depth = typeof deep === 'number' ? deep : (deep ? Infinity : 0)\n return () => {\n const value = getter()\n const strategy = getDeepWatchStrategy()\n if (isMultiSource && Array.isArray(value)) {\n return value.map((item) => {\n if (strategy === 'version' && isReactive(item)) {\n touchReactive(item as any)\n return item\n }\n return traverse(item, depth)\n })\n }\n if (strategy === 'version' && isReactive(value)) {\n touchReactive(value as any)\n return value\n }\n return traverse(value, depth)\n }\n}\n\nexport function dispatchScheduledJob(\n job: () => void,\n flush: 'pre' | 'post' | 'sync',\n isFirstRun: boolean,\n scheduler?: WatchScheduler,\n) {\n if (scheduler) {\n scheduler(job, isFirstRun)\n return\n }\n if (flush === 'sync') {\n job()\n return\n }\n if (flush === 'post') {\n nextTick(() => queueJob(job))\n return\n }\n if (isFirstRun) {\n job()\n }\n else {\n queueJob(job)\n }\n}\n","import type { ReactiveEffect } from './core'\nimport type {\n MapSources,\n MaybeUndefined,\n MultiWatchSources,\n OnCleanup,\n WatchCallback,\n WatchEffect,\n WatchEffectOptions,\n WatchOptions,\n WatchSource,\n WatchSources,\n WatchStopHandle,\n} from './watch/types'\nimport { getCurrentInstance, setCurrentInstance } from '../runtime/hooks'\nimport { effect, onScopeDispose, stop } from './core'\nimport { applyDeepWatchGetter, createWatchGetter, dispatchScheduledJob } from './watch/helpers'\n\nexport type {\n DeepWatchStrategy,\n MapSources,\n MaybeUndefined,\n MultiWatchSources,\n OnCleanup,\n WatchCallback,\n WatchEffect,\n WatchEffectOptions,\n WatchMultiSources,\n WatchOptions,\n WatchScheduler,\n WatchSource,\n WatchSources,\n WatchSourceValue,\n WatchStopHandle,\n} from './watch/types'\nexport { getDeepWatchStrategy, setDeepWatchStrategy } from './watch/types'\n\nexport function watch<T, Immediate extends Readonly<boolean> = false>(\n source: WatchSource<T>,\n cb: WatchCallback<T, MaybeUndefined<T, Immediate>>,\n options?: WatchOptions<Immediate>,\n): WatchStopHandle\nexport function watch<T extends object, Immediate extends Readonly<boolean> = false>(\n source: T extends ReadonlyArray<any> ? never : T,\n cb: WatchCallback<T, MaybeUndefined<T, Immediate>>,\n options?: WatchOptions<Immediate>,\n): WatchStopHandle\nexport function watch<T extends Readonly<MultiWatchSources>, Immediate extends Readonly<boolean> = false>(\n source: readonly [...T] | T,\n cb: WatchCallback<MapSources<T, false>, MapSources<T, Immediate>>,\n options?: WatchOptions<Immediate>,\n): WatchStopHandle\nexport function watch<T extends MultiWatchSources, Immediate extends Readonly<boolean> = false>(\n source: [...T],\n cb: WatchCallback<MapSources<T, false>, MapSources<T, Immediate>>,\n options?: WatchOptions<Immediate>,\n): WatchStopHandle\nexport function watch(\n source: WatchSources<any>,\n cb: WatchCallback,\n options: WatchOptions = {},\n): WatchStopHandle {\n const ownerInstance = getCurrentInstance()\n const watchGetterContext = createWatchGetter(source)\n const getter = applyDeepWatchGetter(\n watchGetterContext.getter,\n source,\n watchGetterContext.isMultiSource,\n watchGetterContext.isReactiveSource,\n options.deep,\n )\n\n let cleanup: (() => void) | undefined\n const onCleanup: OnCleanup = (fn) => {\n cleanup = fn\n }\n\n let oldValue: any\n let runner: ReactiveEffect<any>\n let paused = false\n let pauseToken = 0\n let scheduledToken = pauseToken\n let stopHandle: WatchStopHandle\n const cbWithOnce: WatchCallback = options.once\n ? (value, oldVal, cleanupRegister) => {\n cb(value, oldVal, cleanupRegister)\n stopHandle()\n }\n : cb\n const flush = options.flush ?? 'pre'\n\n const runJob = (token: number) => {\n if (!runner.active || paused || token !== pauseToken) {\n return\n }\n const newValue = runner()\n cleanup?.()\n const previousInstance = getCurrentInstance()\n setCurrentInstance(ownerInstance)\n try {\n cbWithOnce(newValue, oldValue, onCleanup)\n }\n finally {\n setCurrentInstance(previousInstance)\n }\n oldValue = newValue\n }\n const scheduledJob = () => runJob(scheduledToken)\n\n const scheduleJob = (isFirstRun: boolean) => {\n scheduledToken = pauseToken\n dispatchScheduledJob(scheduledJob, flush, isFirstRun, options.scheduler)\n }\n\n runner = effect(() => getter(), {\n scheduler: () => {\n if (paused) {\n return\n }\n scheduleJob(false)\n },\n lazy: true,\n })\n\n const doStop = () => {\n cleanup?.()\n cleanup = undefined\n stop(runner)\n }\n stopHandle = doStop as WatchStopHandle\n stopHandle.stop = doStop\n stopHandle.pause = () => {\n if (!paused) {\n paused = true\n pauseToken += 1\n }\n }\n stopHandle.resume = () => {\n if (!paused || !runner.active) {\n return\n }\n paused = false\n oldValue = runner()\n }\n\n if (options.immediate) {\n runJob(pauseToken)\n }\n else {\n oldValue = runner()\n }\n onScopeDispose(stopHandle)\n return stopHandle\n}\n\n/**\n * watchEffect 注册一个响应式副作用,可选清理函数。\n * 副作用会立即执行,并在依赖变化时重新运行。\n */\nexport function watchEffect(\n effectFn: WatchEffect,\n options: WatchEffectOptions = {},\n): WatchStopHandle {\n const ownerInstance = getCurrentInstance()\n let cleanup: (() => void) | undefined\n const onCleanup: OnCleanup = (fn) => {\n cleanup = fn\n }\n let runner: ReactiveEffect\n let paused = false\n let pauseToken = 0\n let scheduledToken = pauseToken\n const flush = options.flush ?? 'pre'\n\n const runJob = (token: number) => {\n if (!runner.active || paused || token !== pauseToken) {\n return\n }\n runner()\n }\n const scheduledJob = () => runJob(scheduledToken)\n\n const scheduleJob = (isFirstRun: boolean) => {\n scheduledToken = pauseToken\n dispatchScheduledJob(scheduledJob, flush, isFirstRun)\n }\n\n runner = effect(\n () => {\n cleanup?.()\n cleanup = undefined\n const previousInstance = getCurrentInstance()\n setCurrentInstance(ownerInstance)\n try {\n effectFn(onCleanup)\n }\n finally {\n setCurrentInstance(previousInstance)\n }\n },\n {\n lazy: true,\n scheduler: () => {\n if (paused) {\n return\n }\n scheduleJob(false)\n },\n },\n )\n scheduleJob(true)\n\n const doStop = () => {\n cleanup?.()\n cleanup = undefined\n stop(runner)\n }\n const stopHandle = doStop as WatchStopHandle\n stopHandle.stop = doStop\n stopHandle.pause = () => {\n if (!paused) {\n paused = true\n pauseToken += 1\n }\n }\n stopHandle.resume = () => {\n if (!paused || !runner.active) {\n return\n }\n paused = false\n scheduleJob(true)\n }\n onScopeDispose(stopHandle)\n return stopHandle\n}\n\n/**\n * 以后置刷新的方式运行副作用,与 Vue 的 `watchPostEffect()` 兼容。\n */\nexport function watchPostEffect(\n effectFn: WatchEffect,\n options: Omit<WatchEffectOptions, 'flush'> = {},\n): WatchStopHandle {\n return watchEffect(effectFn, {\n ...options,\n flush: 'post',\n })\n}\n\n/**\n * 以同步刷新的方式运行副作用,与 Vue 的 `watchSyncEffect()` 兼容。\n */\nexport function watchSyncEffect(\n effectFn: WatchEffect,\n options: Omit<WatchEffectOptions, 'flush'> = {},\n): WatchStopHandle {\n return watchEffect(effectFn, {\n ...options,\n flush: 'sync',\n })\n}\n","","import { version as packageVersion } from '../package.json'\n\nexport const version = packageVersion\n","export function capitalize(str: string): string {\n if (!str) {\n return ''\n }\n return str.charAt(0).toUpperCase() + str.slice(1)\n}\n\nexport function toPathSegments(path: string): string[] {\n if (!path) {\n return []\n }\n return path\n .split('.')\n .map(segment => segment.trim())\n .filter(Boolean)\n}\n\nexport function hasOwn(source: object, key: PropertyKey) {\n return Object.prototype.hasOwnProperty.call(source, key)\n}\n","export function setComputedValue(\n setters: Record<string, (value: any) => void>,\n key: string,\n value: any,\n) {\n const setter = setters[key]\n if (!setter) {\n throw new Error(`计算属性 \"${key}\" 是只读的`)\n }\n setter(value)\n}\n\nexport function parseModelEventValue(event: any) {\n if (event == null) {\n return event\n }\n if (typeof event === 'object') {\n if ('detail' in event && event.detail && 'value' in event.detail) {\n return event.detail.value\n }\n if ('target' in event && event.target && 'value' in event.target) {\n return event.target.value\n }\n }\n return event\n}\n","import type { ComputedRef } from '../reactivity'\nimport type { ModelBinding, ModelBindingOptions, ModelBindingPayload } from './types'\nimport { isRef } from '../reactivity'\nimport { capitalize, toPathSegments } from '../utils'\nimport { parseModelEventValue, setComputedValue } from './internal'\n\nfunction setWithSegments(\n target: Record<string, any>,\n segments: string[],\n value: any,\n) {\n let current = target\n for (let i = 0; i < segments.length - 1; i++) {\n const key = segments[i]\n if (current[key] == null || typeof current[key] !== 'object') {\n current[key] = {}\n }\n current = current[key]\n }\n current[segments[segments.length - 1]!] = value\n}\n\nfunction setByPath(\n state: Record<string, any>,\n computedRefs: Record<string, ComputedRef<any>>,\n computedSetters: Record<string, (value: any) => void>,\n segments: string[],\n value: any,\n) {\n if (!segments.length) {\n return\n }\n const [head, ...rest] = segments\n if (!rest.length) {\n if (computedRefs[head]) {\n setComputedValue(computedSetters, head, value)\n }\n else {\n const current = state[head]\n if (isRef(current)) {\n current.value = value\n }\n else {\n state[head] = value\n }\n }\n return\n }\n if (computedRefs[head]) {\n setComputedValue(computedSetters, head, value)\n return\n }\n if (state[head] == null || typeof state[head] !== 'object') {\n state[head] = {}\n }\n setWithSegments(state[head], rest, value)\n}\n\nfunction getFromPath(target: any, segments: string[]) {\n return segments.reduce((acc, segment) => {\n if (acc == null) {\n return acc\n }\n return acc[segment]\n }, target)\n}\n\nexport function defaultParser(event: any) {\n return parseModelEventValue(event)\n}\n\nexport function createBindModel(\n publicInstance: Record<string, any>,\n state: Record<string, any>,\n computedRefs: Record<string, ComputedRef<any>>,\n computedSetters: Record<string, (value: any) => void>,\n) {\n const bindModel = <T = any>(path: string, bindingOptions?: ModelBindingOptions<T>): ModelBinding<T> => {\n const segments = toPathSegments(path)\n if (!segments.length) {\n throw new Error('bindModel 需要非空路径')\n }\n const resolveValue = () => getFromPath(publicInstance, segments)\n const assignValue = (value: T) => {\n setByPath(state as Record<string, any>, computedRefs, computedSetters, segments, value)\n }\n const defaultOptions: Required<ModelBindingOptions<T>> = {\n event: 'input',\n valueProp: 'value',\n parser: defaultParser,\n formatter: value => value,\n ...bindingOptions,\n }\n\n return {\n get value() {\n return resolveValue()\n },\n set value(nextValue: T) {\n assignValue(nextValue)\n },\n update(nextValue: T) {\n assignValue(nextValue)\n },\n model<Event extends string = 'input', ValueProp extends string = 'value', Formatted = T>(\n modelOptions?: ModelBindingOptions<T, Event, ValueProp, Formatted>,\n ): ModelBindingPayload<T, Event, ValueProp, Formatted> {\n const merged = {\n ...defaultOptions,\n ...modelOptions,\n } as Required<ModelBindingOptions<T, Event, ValueProp, Formatted>>\n const handlerKey = `on${capitalize(merged.event)}` as `on${Capitalize<Event>}`\n const handler = (event: any) => {\n const parsed = merged.parser(event)\n assignValue(parsed)\n }\n const payload = {\n [merged.valueProp]: merged.formatter(resolveValue()),\n [handlerKey]: handler,\n } as ModelBindingPayload<T, Event, ValueProp, Formatted>\n return payload\n },\n }\n }\n return bindModel\n}\n","import { isReactive, toRaw, touchReactive } from '../reactivity'\nimport { isRef } from '../reactivity/ref'\n\nfunction isPlainObject(value: unknown): value is Record<string, any> {\n if (Object.prototype.toString.call(value) !== '[object Object]') {\n return false\n }\n const proto = Object.getPrototypeOf(value)\n return proto === null || proto === Object.prototype\n}\n\nfunction shouldTraverse(value: unknown): value is Record<string, any> | any[] {\n return Array.isArray(value) || isPlainObject(value)\n}\n\nfunction getTrackableChildren(value: Record<string, any> | any[]) {\n if (Array.isArray(value)) {\n return value\n }\n const children: unknown[] = []\n for (const key of Object.keys(value)) {\n const descriptor = Object.getOwnPropertyDescriptor(value, key)\n if (!descriptor || typeof descriptor.get === 'function') {\n continue\n }\n children.push(descriptor.value)\n }\n return children\n}\n\n/**\n * 判断 setup 返回值是否包含需要额外跟踪的 ref/reactive 源。\n */\nexport function hasTrackableSetupBinding(value: unknown, seen = new WeakSet<object>()): boolean {\n if (isRef(value) || isReactive(value)) {\n return true\n }\n if (!value || typeof value !== 'object') {\n return false\n }\n if (seen.has(value as object)) {\n return false\n }\n seen.add(value as object)\n if (!shouldTraverse(value)) {\n return false\n }\n return getTrackableChildren(value).some(item => hasTrackableSetupBinding(item, seen))\n}\n\n/**\n * 递归触达 setup 返回值中的 ref/reactive,确保异步更新能驱动 setData 调度。\n */\nexport function touchSetupBinding(value: unknown, seen = new WeakSet<object>()) {\n if (isRef(value)) {\n const inner = value.value\n if (isReactive(inner)) {\n touchReactive(inner as any)\n }\n touchSetupBinding(inner, seen)\n return\n }\n if (isReactive(value)) {\n touchReactive(value as any)\n touchSetupBinding(toRaw(value as any), seen)\n return\n }\n if (!value || typeof value !== 'object') {\n return\n }\n if (seen.has(value as object) || !shouldTraverse(value)) {\n return\n }\n seen.add(value as object)\n getTrackableChildren(value).forEach(item => touchSetupBinding(item, seen))\n}\n","const NATIVE_BRIDGE_MARKER = '__wevu_native_bridge__'\n\nexport function markNativeBridgeMethod(method: (...args: any[]) => any) {\n try {\n Object.defineProperty(method, NATIVE_BRIDGE_MARKER, {\n value: true,\n configurable: false,\n enumerable: false,\n writable: false,\n })\n }\n catch {\n ;(method as any)[NATIVE_BRIDGE_MARKER] = true\n }\n}\n\nexport function isNativeBridgeMethod(method: unknown): method is (...args: any[]) => any {\n return typeof method === 'function' && Boolean((method as any)[NATIVE_BRIDGE_MARKER])\n}\n","import type { ComputedRef } from '../../reactivity'\nimport { effect } from '../../reactivity'\nimport { track, trigger } from '../../reactivity/core'\nimport { markAsRef } from '../../reactivity/ref'\n\ninterface ComputedOptions {\n includeComputed: boolean\n setDataStrategy: 'diff' | 'patch'\n}\n\nexport function createComputedAccessors(options: ComputedOptions) {\n const computedRefs: Record<string, ComputedRef<any>> = Object.create(null)\n const computedSetters: Record<string, (value: any) => void> = Object.create(null)\n const dirtyComputedKeys = new Set<string>()\n\n const createTrackedComputed = <T>(\n key: string,\n getter: () => T,\n setter?: (value: T) => void,\n ): ComputedRef<T> => {\n let value: T\n let dirty = true\n let runner!: () => T\n const obj: any = {\n get value() {\n if (dirty) {\n value = runner()\n dirty = false\n }\n track(obj, 'value')\n return value\n },\n set value(nextValue: T) {\n if (!setter) {\n throw new Error('计算属性是只读的')\n }\n setter(nextValue)\n },\n }\n markAsRef(obj)\n runner = effect(getter, {\n lazy: true,\n scheduler: () => {\n if (!dirty) {\n dirty = true\n if (options.setDataStrategy === 'patch' && options.includeComputed) {\n dirtyComputedKeys.add(key)\n }\n trigger(obj, 'value')\n }\n },\n })\n return obj as ComputedRef<T>\n }\n\n const computedProxy = new Proxy(\n {},\n {\n get(_target, key: string | symbol) {\n if (typeof key === 'string' && computedRefs[key]) {\n return computedRefs[key].value\n }\n return undefined\n },\n has(_target, key: string | symbol) {\n return typeof key === 'string' && Boolean(computedRefs[key])\n },\n ownKeys() {\n return Object.keys(computedRefs)\n },\n getOwnPropertyDescriptor(_target, key: string | symbol) {\n if (typeof key === 'string' && computedRefs[key]) {\n return {\n configurable: true,\n enumerable: true,\n value: computedRefs[key].value,\n }\n }\n return undefined\n },\n },\n )\n\n return {\n computedRefs,\n computedSetters,\n dirtyComputedKeys,\n createTrackedComputed,\n computedProxy,\n }\n}\n","import type { WritableComputedOptions } from '../../reactivity'\nimport type { AppConfig, ComponentPublicInstance, ComputedDefinitions, ExtractMethods, MethodDefinitions } from '../types'\nimport {\n WEVU_INLINE_MAP_KEY,\n WEVU_NATIVE_INSTANCE_KEY,\n WEVU_RUNTIME_KEY,\n} from '@weapp-core/constants'\nimport { ref, toRaw, unref } from '../../reactivity'\nimport { hasOwn } from '../../utils'\nimport { setComputedValue } from '../internal'\nimport { isNativeBridgeMethod, markNativeBridgeMethod } from '../nativeBridge'\nimport { createComputedAccessors } from './computed'\n\nexport function createRuntimeContext<D extends object, C extends ComputedDefinitions, M extends MethodDefinitions>(options: {\n state: D\n computedDefs: C\n methodDefs: M\n appConfig: AppConfig\n includeComputed: boolean\n setDataStrategy: 'diff' | 'patch'\n}) {\n const {\n state,\n computedDefs,\n methodDefs,\n appConfig,\n includeComputed,\n setDataStrategy,\n } = options\n\n const boundMethods = {} as ExtractMethods<M>\n const {\n computedRefs,\n computedSetters,\n dirtyComputedKeys,\n createTrackedComputed,\n computedProxy,\n } = createComputedAccessors({ includeComputed, setDataStrategy })\n const setupMethodVersion = ref(0)\n\n const resolveNativeInstance = (target: object, receiver: object) => {\n const rawTarget = toRaw(target as any) as Record<string, any>\n const runtimeRef = rawTarget[WEVU_RUNTIME_KEY]\n const runtimeProxy = runtimeRef?.proxy as Record<string, any> | undefined\n const isBridgeMethod = (\n candidate: object,\n methodName: 'triggerEvent' | 'createSelectorQuery' | 'createIntersectionObserver' | 'setData',\n ) => {\n const candidateMethod = (candidate as any)[methodName]\n return isNativeBridgeMethod(candidateMethod)\n }\n const isValidNativeCandidate = (candidate: unknown) => {\n if (!candidate || typeof candidate !== 'object') {\n return false\n }\n if (candidate === target || candidate === receiver || candidate === runtimeProxy) {\n return false\n }\n if (\n isBridgeMethod(candidate, 'triggerEvent')\n || isBridgeMethod(candidate, 'createSelectorQuery')\n || isBridgeMethod(candidate, 'createIntersectionObserver')\n || isBridgeMethod(candidate, 'setData')\n ) {\n return false\n }\n return true\n }\n const directNative = rawTarget[WEVU_NATIVE_INSTANCE_KEY]\n if (isValidNativeCandidate(directNative)) {\n return directNative as object\n }\n const runtimeNative = runtimeRef?.instance\n if (isValidNativeCandidate(runtimeNative)) {\n return runtimeNative as object\n }\n return undefined\n }\n\n const installNativeMethodBridge = (methodName: string) => {\n if (hasOwn(boundMethods, methodName)) {\n return\n }\n const bridge = (...args: any[]) => {\n const nativeInstance = resolveNativeInstance(state as object, state as object)\n if (!nativeInstance) {\n return undefined\n }\n const nativeMethod = Reflect.get(nativeInstance, methodName)\n if (typeof nativeMethod === 'function') {\n return nativeMethod.apply(nativeInstance, args)\n }\n return undefined\n }\n markNativeBridgeMethod(bridge)\n ;(boundMethods as any)[methodName] = bridge\n }\n\n const publicInstance = new Proxy(state as ComponentPublicInstance<D, C, M>, {\n get(target, key, receiver) {\n if (typeof key === 'string') {\n // setup 返回的方法会在运行时后置注入,读取版本号可确保相关 computed 在方法注入后失效重算。\n void setupMethodVersion.value\n if (key === 'data') {\n return state\n }\n if (key === '$state') {\n return state\n }\n if (key === '$computed') {\n return computedProxy\n }\n if (hasOwn(boundMethods, key)) {\n return boundMethods[key as keyof ExtractMethods<M>]\n }\n if ((computedRefs as any)[key]) {\n return (computedRefs as any)[key].value\n }\n if (hasOwn(appConfig.globalProperties, key)) {\n return (appConfig.globalProperties as any)[key]\n }\n }\n if (!Reflect.has(target, key)) {\n const nativeInstance = resolveNativeInstance(target as object, receiver as object)\n if (nativeInstance && Reflect.has(nativeInstance, key)) {\n const nativeValue = Reflect.get(nativeInstance, key)\n if (typeof nativeValue === 'function') {\n return nativeValue.bind(nativeInstance)\n }\n return nativeValue\n }\n }\n return unref(Reflect.get(target, key, receiver))\n },\n set(target, key, value, receiver) {\n if (typeof key === 'string' && (computedRefs as any)[key]) {\n setComputedValue(computedSetters, key, value)\n return true\n }\n if (Reflect.has(target, key)) {\n return Reflect.set(target, key, value, receiver)\n }\n const nativeInstance = resolveNativeInstance(target as object, receiver as object)\n if (nativeInstance && Reflect.has(nativeInstance, key)) {\n return Reflect.set(nativeInstance, key, value)\n }\n return Reflect.set(target, key, value, receiver)\n },\n has(target, key) {\n if (key === 'data') {\n return true\n }\n if (typeof key === 'string' && ((computedRefs as any)[key] || hasOwn(boundMethods, key))) {\n return true\n }\n const nativeInstance = resolveNativeInstance(target as object, target as object)\n if (nativeInstance && Reflect.has(nativeInstance, key)) {\n return true\n }\n return Reflect.has(target, key)\n },\n ownKeys(target) {\n const keys = new Set<string | symbol>()\n Reflect.ownKeys(target).forEach((key) => {\n keys.add(key as string | symbol)\n })\n Object.keys(boundMethods).forEach(key => keys.add(key))\n Object.keys(computedRefs).forEach(key => keys.add(key))\n return [...keys]\n },\n getOwnPropertyDescriptor(target, key) {\n if (Reflect.has(target, key)) {\n return Object.getOwnPropertyDescriptor(target, key)\n }\n if (typeof key === 'string') {\n if (key === 'data') {\n return {\n configurable: true,\n enumerable: false,\n get() {\n return state\n },\n }\n }\n if ((computedRefs as any)[key]) {\n return {\n configurable: true,\n enumerable: true,\n get() {\n return (computedRefs as any)[key].value\n },\n set(value: any) {\n setComputedValue(computedSetters, key, value)\n },\n }\n }\n if (hasOwn(boundMethods, key)) {\n return {\n configurable: true,\n enumerable: false,\n value: boundMethods[key as keyof ExtractMethods<M>],\n }\n }\n }\n return undefined\n },\n })\n\n Object.keys(methodDefs).forEach((key) => {\n const handler = (methodDefs as any)[key]\n if (typeof handler === 'function') {\n ;(boundMethods as any)[key] = (...args: any[]) => handler.apply(publicInstance, args)\n return\n }\n if (key === WEVU_INLINE_MAP_KEY && handler && typeof handler === 'object') {\n ;(boundMethods as any)[key] = handler\n }\n })\n\n installNativeMethodBridge('triggerEvent')\n installNativeMethodBridge('createSelectorQuery')\n installNativeMethodBridge('createIntersectionObserver')\n installNativeMethodBridge('setData')\n\n Object.keys(computedDefs).forEach((key) => {\n const definition = (computedDefs as any)[key] as ((this: any) => any) | WritableComputedOptions<any>\n if (typeof definition === 'function') {\n computedRefs[key] = createTrackedComputed(key, () => (definition as any).call(publicInstance))\n }\n else {\n const getter = definition.get?.bind(publicInstance)\n if (!getter) {\n throw new Error(`计算属性 \"${key}\" 需要提供 getter`)\n }\n const setter = definition.set?.bind(publicInstance)\n if (setter) {\n computedSetters[key] = setter\n computedRefs[key] = createTrackedComputed(key, getter, setter)\n }\n else {\n computedRefs[key] = createTrackedComputed(key, getter)\n }\n }\n })\n\n return {\n boundMethods,\n computedRefs,\n computedSetters,\n dirtyComputedKeys,\n computedProxy,\n publicInstance,\n touchSetupMethodsVersion() {\n setupMethodVersion.value += 1\n },\n }\n}\n","import type { SetDataDebugInfo } from '../types'\n\nfunction isFallbackReason(reason: SetDataDebugInfo['reason']) {\n return reason !== 'patch' && reason !== 'diff'\n}\n\nexport function createDiagnosticsLogger(mode: 'off' | 'fallback' | 'always') {\n if (mode === 'off') {\n return undefined\n }\n return (info: SetDataDebugInfo) => {\n if (mode === 'fallback' && !isFallbackReason(info.reason)) {\n return\n }\n const bytes = typeof info.bytes === 'number' ? info.bytes : info.estimatedBytes\n const bytesText = typeof bytes === 'number' ? `${bytes}B` : 'unknown'\n const parts = [\n `mode=${info.mode}`,\n `reason=${info.reason}`,\n `pending=${info.pendingPatchKeys}`,\n `keys=${info.payloadKeys}`,\n `bytes=${bytesText}`,\n ]\n if (typeof info.mergedSiblingParents === 'number') {\n parts.push(`mergedParents=${info.mergedSiblingParents}`)\n }\n if (typeof info.computedDirtyKeys === 'number') {\n parts.push(`computedDirty=${info.computedDirtyKeys}`)\n }\n const message = `[wevu:setData] ${parts.join(' ')}`\n if (isFallbackReason(info.reason)) {\n // eslint-disable-next-line no-console\n console.warn(message)\n return\n }\n // eslint-disable-next-line no-console\n console.info(message)\n }\n}\n","const NO_SETDATA: unique symbol = Symbol('wevu.noSetData')\n\nexport function markNoSetData<T extends object>(value: T): T {\n Object.defineProperty(value, NO_SETDATA, {\n value: true,\n configurable: true,\n enumerable: false,\n writable: false,\n })\n return value\n}\n\nexport function isNoSetData(value: unknown): boolean {\n return typeof value === 'object' && value !== null && (value as any)[NO_SETDATA] === true\n}\n","import { getReactiveVersion, isReactive, isRef, toRaw, unref } from '../reactivity'\nimport { hasOwn } from '../utils'\nimport { isNoSetData } from './noSetData'\nimport { hasTrackableSetupBinding } from './setupTracking'\n\nfunction isPlainObject(value: unknown): value is Record<string, any> {\n if (Object.prototype.toString.call(value) !== '[object Object]') {\n return false\n }\n const proto = Object.getPrototypeOf(value)\n return proto === null || proto === Object.prototype\n}\n\nexport interface ToPlainOptions {\n cache?: WeakMap<object, { version: number, value: any }>\n maxDepth?: number\n maxKeys?: number\n _depth?: number\n _budget?: { keys: number }\n}\n\nfunction toPlainInternal(\n value: any,\n seen: WeakMap<object, any>,\n cache: WeakMap<object, { version: number, value: any }> | undefined,\n depth: number,\n budget: { keys: number },\n): any {\n const unwrapped = isRef(value) || (value && typeof value === 'object' && (value as any).__v_isRef === true && 'value' in value)\n ? (value as any).value\n : unref(value)\n if (typeof unwrapped === 'bigint') {\n const asNumber = Number(unwrapped)\n return Number.isSafeInteger(asNumber) ? asNumber : unwrapped.toString()\n }\n if (typeof unwrapped === 'symbol') {\n return unwrapped.toString()\n }\n if (typeof unwrapped === 'function') {\n return undefined\n }\n if (typeof unwrapped !== 'object' || unwrapped === null) {\n return unwrapped\n }\n if ((unwrapped as any).__v_isRef === true && 'value' in unwrapped) {\n return toPlainInternal((unwrapped as any).value, seen, cache, depth, budget)\n }\n if (isNoSetData(unwrapped)) {\n return undefined\n }\n const raw = isReactive(unwrapped) ? toRaw(unwrapped) : unwrapped\n const canUseCache = Boolean(cache) && (isReactive(unwrapped) || !hasTrackableSetupBinding(raw))\n const cacheRef = canUseCache ? cache : undefined\n\n if (depth <= 0 || budget.keys <= 0) {\n return raw\n }\n\n if (cacheRef) {\n const version = getReactiveVersion(raw as any)\n const cached = cacheRef.get(raw)\n if (cached && cached.version === version) {\n return cached.value\n }\n }\n\n if (seen.has(raw)) {\n return seen.get(raw)\n }\n if (raw instanceof Date) {\n return raw.getTime()\n }\n if (raw instanceof RegExp) {\n return raw.toString()\n }\n if (raw instanceof Map) {\n const entries: any[] = []\n seen.set(raw, entries)\n raw.forEach((mapValue, mapKey) => {\n entries.push([\n toPlainInternal(mapKey, seen, undefined, Number.POSITIVE_INFINITY, { keys: Number.POSITIVE_INFINITY }),\n toPlainInternal(mapValue, seen, undefined, Number.POSITIVE_INFINITY, { keys: Number.POSITIVE_INFINITY }),\n ])\n })\n return entries\n }\n if (raw instanceof Set) {\n const values: any[] = []\n seen.set(raw, values)\n raw.forEach((setValue) => {\n values.push(toPlainInternal(setValue, seen, undefined, Number.POSITIVE_INFINITY, { keys: Number.POSITIVE_INFINITY }))\n })\n return values\n }\n if (typeof ArrayBuffer !== 'undefined') {\n if (raw instanceof ArrayBuffer) {\n return raw.byteLength\n }\n if (ArrayBuffer.isView(raw)) {\n const view: any = raw as any\n const iter = view[Symbol.iterator]\n if (typeof iter === 'function') {\n const values = [...view]\n seen.set(raw, values)\n return values.map(item => toPlainInternal(item, seen, undefined, Number.POSITIVE_INFINITY, { keys: Number.POSITIVE_INFINITY }))\n }\n const bytes = [...new Uint8Array(view.buffer, view.byteOffset, view.byteLength)]\n seen.set(raw, bytes)\n return bytes\n }\n }\n if (raw instanceof Error) {\n return {\n name: raw.name,\n message: raw.message,\n }\n }\n if (Array.isArray(raw)) {\n const arr: any[] = []\n seen.set(raw, arr)\n const nextDepth = depth - 1\n for (let index = 0; index < raw.length; index += 1) {\n const next = toPlainInternal(raw[index], seen, cache, nextDepth, budget)\n arr[index] = next === undefined ? null : next\n }\n if (cacheRef) {\n cacheRef.set(raw, { version: getReactiveVersion(raw as any), value: arr })\n }\n return arr\n }\n const output: Record<string, any> = {}\n seen.set(raw, output)\n const nextDepth = depth - 1\n for (const key of Object.keys(raw)) {\n budget.keys -= 1\n if (budget.keys <= 0) {\n break\n }\n const next = toPlainInternal((raw as any)[key], seen, cache, nextDepth, budget)\n if (next !== undefined) {\n output[key] = next\n }\n }\n if (cacheRef) {\n cacheRef.set(raw, { version: getReactiveVersion(raw as any), value: output })\n }\n return output\n}\n\nexport function toPlain(value: any, seen = new WeakMap<object, any>(), options?: ToPlainOptions): any {\n const depth = options?._depth ?? (typeof options?.maxDepth === 'number' ? Math.max(0, Math.floor(options.maxDepth)) : Number.POSITIVE_INFINITY)\n const budget = options?._budget ?? (typeof options?.maxKeys === 'number' ? { keys: Math.max(0, Math.floor(options.maxKeys)) } : { keys: Number.POSITIVE_INFINITY })\n return toPlainInternal(value, seen, options?.cache, depth, budget)\n}\n\ntype DeepEqualCompare = (a: any, b: any) => boolean\n\nfunction isArrayEqual(a: any[], b: any[], compare: DeepEqualCompare): boolean {\n if (a.length !== b.length) {\n return false\n }\n for (let i = 0; i < a.length; i++) {\n if (!compare(a[i], b[i])) {\n return false\n }\n }\n return true\n}\n\nfunction isPlainObjectEqual(a: Record<string, any>, b: Record<string, any>, compare: DeepEqualCompare): boolean {\n const aKeys = Object.keys(a)\n const bKeys = Object.keys(b)\n if (aKeys.length !== bKeys.length) {\n return false\n }\n for (const key of aKeys) {\n if (!hasOwn(b, key)) {\n return false\n }\n if (!compare(a[key], b[key])) {\n return false\n }\n }\n return true\n}\n\nfunction isDeepEqual(a: any, b: any): boolean {\n if (Object.is(a, b)) {\n return true\n }\n if (Array.isArray(a) && Array.isArray(b)) {\n return isArrayEqual(a, b, isDeepEqual)\n }\n if (isPlainObject(a) && isPlainObject(b)) {\n return isPlainObjectEqual(a, b, isDeepEqual)\n }\n return false\n}\n\nfunction normalizeSetDataValue<T>(value: T): T | null {\n return value === undefined ? null : value\n}\n\nfunction assignNestedDiff(\n prev: any,\n next: any,\n path: string,\n output: Record<string, any>,\n) {\n if (isDeepEqual(prev, next)) {\n return\n }\n\n if (isPlainObject(prev) && isPlainObject(next)) {\n for (const key of Object.keys(next)) {\n if (!hasOwn(prev, key)) {\n output[`${path}.${key}`] = normalizeSetDataValue(next[key])\n continue\n }\n assignNestedDiff(prev[key], next[key], `${path}.${key}`, output)\n }\n for (const key of Object.keys(prev)) {\n if (!hasOwn(next, key)) {\n output[`${path}.${key}`] = null\n }\n }\n return\n }\n\n if (Array.isArray(prev) && Array.isArray(next)) {\n if (!isArrayEqual(prev, next, isDeepEqual)) {\n output[path] = normalizeSetDataValue(next)\n }\n return\n }\n\n output[path] = normalizeSetDataValue(next)\n}\n\nexport function diffSnapshots(\n prev: Record<string, any>,\n next: Record<string, any>,\n options?: { skipKeys?: Set<string> },\n): Record<string, any> {\n const diff: Record<string, any> = {}\n const skipKeys = options?.skipKeys\n for (const key of Object.keys(next)) {\n if (skipKeys?.has(key)) {\n continue\n }\n assignNestedDiff(prev[key], next[key], key, diff)\n }\n for (const key of Object.keys(prev)) {\n if (skipKeys?.has(key)) {\n continue\n }\n if (!hasOwn(next, key)) {\n diff[key] = null\n }\n }\n return diff\n}\n","import { hasOwn } from '../../../utils'\n\nexport function collapsePayload(input: Record<string, any>) {\n const keys = Object.keys(input).sort()\n if (keys.length <= 1) {\n return input\n }\n // 折叠后的 payload 会直接传给原生 setData,并可能被微信开发者工具热重载脚本递归遍历。\n // 这里不能使用 Object.create(null),否则运行时内部的 o.hasOwnProperty(...) 会抛错。\n const out: Record<string, any> = {}\n const prefixStack: string[] = []\n for (const key of keys) {\n while (prefixStack.length) {\n const prefix = prefixStack[prefixStack.length - 1]!\n if (key.startsWith(prefix)) {\n break\n }\n prefixStack.pop()\n }\n if (prefixStack.length) {\n continue\n }\n out[key] = input[key]\n prefixStack.push(`${key}.`)\n }\n return out\n}\n\nexport function estimateJsonSize(\n value: any,\n limit: number,\n seen: WeakSet<object>,\n): number {\n if (limit <= 0) {\n return limit + 1\n }\n if (value === null) {\n return 4\n }\n const t = typeof value\n if (t === 'string') {\n // 粗略估算:未计入转义开销;接近阈值时再用 JSON.stringify 校验\n return 2 + value.length\n }\n if (t === 'number') {\n return Number.isFinite(value) ? String(value).length : 4 // 空值占位\n }\n if (t === 'boolean') {\n return value ? 4 : 5\n }\n if (t === 'undefined' || t === 'function' || t === 'symbol') {\n return 4 // 空值占位\n }\n if (t !== 'object') {\n return 4\n }\n\n if (seen.has(value)) {\n return 4\n }\n seen.add(value)\n\n if (Array.isArray(value)) {\n let size = 2 // []\n for (let i = 0; i < value.length; i++) {\n if (i) {\n size += 1\n }\n size += estimateJsonSize(value[i], limit - size, seen)\n if (size > limit) {\n return size\n }\n }\n return size\n }\n\n let size = 2 // {}\n for (const [k, v] of Object.entries(value)) {\n if (size > 2) {\n size += 1\n }\n // 键名部分:\n size += 2 + k.length + 1\n size += estimateJsonSize(v, limit - size, seen)\n if (size > limit) {\n return size\n }\n }\n return size\n}\n\nexport function checkPayloadSize(payload: Record<string, any>, maxPayloadBytes: number) {\n if (maxPayloadBytes === Number.POSITIVE_INFINITY) {\n return { fallback: false as const, estimatedBytes: undefined as number | undefined, bytes: undefined as number | undefined }\n }\n const limit = maxPayloadBytes\n const keyCount = Object.keys(payload).length\n const estimated = estimateJsonSize(payload, limit + 1, new WeakSet())\n if (estimated > limit) {\n return { fallback: true as const, estimatedBytes: estimated, bytes: undefined }\n }\n // 接近阈值时再用 JSON.stringify 精确判断,避免低估导致未降级\n if (estimated >= limit * 0.85 && keyCount > 2) {\n try {\n const bytes = JSON.stringify(payload).length\n return { fallback: bytes > limit, estimatedBytes: estimated, bytes }\n }\n catch {\n return { fallback: false as const, estimatedBytes: estimated, bytes: undefined }\n }\n }\n return { fallback: false as const, estimatedBytes: estimated, bytes: undefined }\n}\n\nexport function mergeSiblingPayload(options: {\n input: Record<string, any>\n entryMap: Map<string, { kind: 'property' | 'array', op: 'set' | 'delete' }>\n getPlainByPath: (path: string) => any\n mergeSiblingThreshold: number\n mergeSiblingSkipArray: boolean\n mergeSiblingMaxParentBytes: number\n mergeSiblingMaxInflationRatio: number\n}) {\n const {\n input,\n entryMap,\n getPlainByPath,\n mergeSiblingThreshold,\n mergeSiblingSkipArray,\n mergeSiblingMaxParentBytes,\n mergeSiblingMaxInflationRatio,\n } = options\n\n if (!mergeSiblingThreshold) {\n return { out: input, merged: 0 }\n }\n\n const keys = Object.keys(input)\n if (keys.length < mergeSiblingThreshold) {\n return { out: input, merged: 0 }\n }\n\n const groups = new Map<string, string[]>()\n const hasDelete = new Set<string>()\n\n for (const key of keys) {\n const entry = entryMap.get(key)\n if (!entry) {\n continue\n }\n if (input[key] === null || entry.op === 'delete') {\n const dot = key.lastIndexOf('.')\n if (dot > 0) {\n hasDelete.add(key.slice(0, dot))\n }\n continue\n }\n const dot = key.lastIndexOf('.')\n if (dot <= 0) {\n continue\n }\n const parent = key.slice(0, dot)\n const list = groups.get(parent) ?? []\n list.push(key)\n groups.set(parent, list)\n }\n\n const parents = [...groups.entries()]\n .filter(([parent, list]) => list.length >= mergeSiblingThreshold && !hasDelete.has(parent))\n .sort((a, b) => b[0].split('.').length - a[0].split('.').length)\n\n if (!parents.length) {\n return { out: input, merged: 0 }\n }\n\n // mergeSiblingPayload 的输出仍然属于对外 payload,必须保持普通对象原型。\n // 后续如果为了“纯字典”语义改成 null-prototype,会重新引入热重载兼容性问题。\n const out: Record<string, any> = {}\n Object.assign(out, input)\n\n let merged = 0\n const valueSizeCache = new WeakMap<object, number>()\n const estimateValueSize = (value: any) => {\n if (value && typeof value === 'object') {\n const cached = valueSizeCache.get(value as object)\n if (cached !== undefined) {\n return cached\n }\n const size = estimateJsonSize(value, Number.POSITIVE_INFINITY, new WeakSet())\n valueSizeCache.set(value as object, size)\n return size\n }\n return estimateJsonSize(value, Number.POSITIVE_INFINITY, new WeakSet())\n }\n const estimateEntryBytes = (key: string, value: any) => {\n // 键名部分:\n return (2 + key.length + 1) + estimateValueSize(value)\n }\n\n for (const [parent, list] of parents) {\n if (hasOwn(out, parent)) {\n continue\n }\n const existingChildren = list.filter(k => hasOwn(out, k))\n if (existingChildren.length < mergeSiblingThreshold) {\n continue\n }\n const parentValue = getPlainByPath(parent)\n if (mergeSiblingSkipArray && Array.isArray(parentValue)) {\n continue\n }\n if (mergeSiblingMaxParentBytes !== Number.POSITIVE_INFINITY) {\n const parentBytes = estimateEntryBytes(parent, parentValue)\n if (parentBytes > mergeSiblingMaxParentBytes) {\n continue\n }\n }\n if (mergeSiblingMaxInflationRatio !== Number.POSITIVE_INFINITY) {\n let childBytes = 0\n for (const child of existingChildren) {\n childBytes += estimateEntryBytes(child, out[child])\n }\n const parentBytes = estimateEntryBytes(parent, parentValue)\n if (parentBytes > childBytes * mergeSiblingMaxInflationRatio) {\n continue\n }\n }\n out[parent] = parentValue\n for (const child of existingChildren) {\n delete out[child]\n }\n merged += 1\n }\n\n return { out, merged }\n}\n","import { isReactive, isRef, toRaw } from '../../../reactivity'\nimport { hasOwn } from '../../../utils'\nimport { toPlain } from '../../diff'\n\nexport function isPlainObjectLike(value: any) {\n if (value == null || typeof value !== 'object') {\n return false\n }\n const proto = Object.getPrototypeOf(value)\n return proto === Object.prototype || proto === null\n}\n\nexport function normalizeSetDataValue<T>(value: T): T | null {\n return value === undefined ? null : value\n}\n\nexport function cloneSnapshotValue<T>(value: T): T {\n if (isRef(value) || (value && typeof value === 'object' && (value as any).__v_isRef === true && 'value' in value)) {\n return cloneSnapshotValue(value.value) as T\n }\n if (Array.isArray(value)) {\n return value.map(item => cloneSnapshotValue(item)) as T\n }\n if (!isPlainObjectLike(value)) {\n return value\n }\n // 这里的快照对象会继续进入 setData / WXML / DevTools 热重载链路。\n // 不能使用 Object.create(null),否则微信运行时内部直接调用 hasOwnProperty 时会报错。\n const out: Record<string, any> = {}\n for (const key of Object.keys(value as Record<string, any>)) {\n out[key] = cloneSnapshotValue((value as Record<string, any>)[key])\n }\n return out as T\n}\n\nexport function isShallowEqualValue(a: any, b: any): boolean {\n if (Object.is(a, b)) {\n return true\n }\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) {\n return false\n }\n for (let i = 0; i < a.length; i++) {\n if (!Object.is(a[i], b[i])) {\n return false\n }\n }\n return true\n }\n if (!isPlainObjectLike(a) || !isPlainObjectLike(b)) {\n return false\n }\n const aKeys = Object.keys(a)\n const bKeys = Object.keys(b)\n if (aKeys.length !== bKeys.length) {\n return false\n }\n for (const k of aKeys) {\n if (!hasOwn(b, k)) {\n return false\n }\n if (!Object.is(a[k], b[k])) {\n return false\n }\n }\n return true\n}\n\nexport function isDeepEqualValue(\n a: any,\n b: any,\n depth: number,\n budget: { keys: number },\n): boolean {\n if (Object.is(a, b)) {\n return true\n }\n if (depth <= 0) {\n return false\n }\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) {\n return false\n }\n for (let i = 0; i < a.length; i++) {\n if (!isDeepEqualValue(a[i], b[i], depth - 1, budget)) {\n return false\n }\n }\n return true\n }\n if (!isPlainObjectLike(a) || !isPlainObjectLike(b)) {\n return false\n }\n const aKeys = Object.keys(a)\n const bKeys = Object.keys(b)\n if (aKeys.length !== bKeys.length) {\n return false\n }\n for (const k of aKeys) {\n budget.keys -= 1\n if (budget.keys <= 0) {\n return false\n }\n if (!hasOwn(b, k)) {\n return false\n }\n if (!isDeepEqualValue(a[k], b[k], depth - 1, budget)) {\n return false\n }\n }\n return true\n}\n\nexport function applySnapshotUpdate(\n snapshot: Record<string, any>,\n path: string,\n value: any,\n op: 'set' | 'delete',\n options?: { cloneValue?: boolean },\n) {\n const cloneValue = options?.cloneValue ?? true\n const segments = path.split('.').filter(Boolean)\n if (!segments.length) {\n return\n }\n let current: any = snapshot\n for (let i = 0; i < segments.length - 1; i++) {\n const key = segments[i]\n if (!hasOwn(current, key) || current[key] == null || typeof current[key] !== 'object') {\n // 中间节点同样会被同步到最新快照并可能参与视图层更新,必须保持普通对象原型。\n current[key] = {}\n }\n current = current[key]\n }\n const leaf = segments[segments.length - 1]!\n if (op === 'delete') {\n try {\n delete current[leaf]\n }\n catch {\n current[leaf] = null\n }\n }\n else {\n current[leaf] = cloneValue ? cloneSnapshotValue(value) : value\n }\n}\n\nexport function collectSnapshot(options: {\n state: Record<string, any>\n computedRefs: Record<string, { value: any }>\n includeComputed: boolean\n shouldIncludeKey: (key: string) => boolean\n plainCache: WeakMap<object, { version: number, value: any }>\n toPlainMaxDepth: number\n toPlainMaxKeys: number\n}) {\n const {\n state,\n computedRefs,\n includeComputed,\n shouldIncludeKey,\n plainCache,\n toPlainMaxDepth,\n toPlainMaxKeys,\n } = options\n const seen = new WeakMap<object, any>()\n // collectSnapshot 的返回值会被 owner snapshot / patch scheduler 复用。\n // 后续维护不要改回 null-prototype 对象,否则热重载下会再次触发 hasOwnProperty 兼容问题。\n const out: Record<string, any> = {}\n const budget = Number.isFinite(toPlainMaxKeys) ? { keys: toPlainMaxKeys } : undefined\n\n const rawState = (isReactive(state) ? toRaw(state as any) : state) as Record<string, any>\n const stateKeys = Object.keys(rawState)\n const computedKeys = includeComputed ? Object.keys(computedRefs) : []\n\n for (const key of stateKeys) {\n if (!shouldIncludeKey(key)) {\n continue\n }\n out[key] = toPlain(rawState[key], seen, { cache: plainCache, maxDepth: toPlainMaxDepth, _budget: budget })\n }\n\n for (const key of computedKeys) {\n if (!shouldIncludeKey(key)) {\n continue\n }\n out[key] = toPlain(computedRefs[key].value, seen, { cache: plainCache, maxDepth: toPlainMaxDepth, _budget: budget })\n }\n\n return out\n}\n","import type { SetDataDebugInfo } from '../../types'\nimport { toPlain } from '../../diff'\nimport { checkPayloadSize, collapsePayload, mergeSiblingPayload } from './payload'\nimport { applySnapshotUpdate, cloneSnapshotValue, isDeepEqualValue, isShallowEqualValue, normalizeSetDataValue } from './snapshot'\n\ninterface PatchEntry {\n kind: 'property' | 'array'\n op: 'set' | 'delete'\n}\n\nexport function runPatchUpdate(options: {\n state: Record<string, any>\n computedRefs: Record<string, { value: any }>\n dirtyComputedKeys: Set<string>\n includeComputed: boolean\n computedCompare: 'reference' | 'shallow' | 'deep'\n computedCompareMaxDepth: number\n computedCompareMaxKeys: number\n currentAdapter: { setData?: (payload: Record<string, any>) => void | Promise<void> }\n shouldIncludeKey: (key: string) => boolean\n maxPatchKeys: number\n maxPayloadBytes: number\n mergeSiblingThreshold: number\n mergeSiblingMaxInflationRatio: number\n mergeSiblingMaxParentBytes: number\n mergeSiblingSkipArray: boolean\n elevateTopKeyThreshold: number\n toPlainMaxDepth: number\n toPlainMaxKeys: number\n plainCache: WeakMap<object, { version: number, value: any }>\n pendingPatches: Map<string, PatchEntry>\n fallbackTopKeys: Set<string>\n latestSnapshot: Record<string, any>\n latestComputedSnapshot: Record<string, any>\n needsFullSnapshot: { value: boolean }\n emitDebug: (info: SetDataDebugInfo) => void\n runDiffUpdate: (reason?: SetDataDebugInfo['reason']) => void\n}) {\n const {\n state,\n computedRefs,\n dirtyComputedKeys,\n includeComputed,\n computedCompare,\n computedCompareMaxDepth,\n computedCompareMaxKeys,\n currentAdapter,\n shouldIncludeKey,\n maxPatchKeys,\n maxPayloadBytes,\n mergeSiblingThreshold,\n mergeSiblingMaxInflationRatio,\n mergeSiblingMaxParentBytes,\n mergeSiblingSkipArray,\n elevateTopKeyThreshold,\n toPlainMaxDepth,\n toPlainMaxKeys,\n plainCache,\n pendingPatches,\n fallbackTopKeys,\n latestSnapshot,\n latestComputedSnapshot,\n needsFullSnapshot,\n emitDebug,\n runDiffUpdate,\n } = options\n\n if (pendingPatches.size > maxPatchKeys) {\n needsFullSnapshot.value = true\n const pendingCount = pendingPatches.size\n pendingPatches.clear()\n dirtyComputedKeys.clear()\n emitDebug({\n mode: 'diff',\n reason: 'maxPatchKeys',\n pendingPatchKeys: pendingCount,\n payloadKeys: 0,\n })\n runDiffUpdate('maxPatchKeys')\n return\n }\n\n const seen = new WeakMap<object, any>()\n const plainByPath = new Map<string, any>()\n const payload: Record<string, any> = Object.create(null)\n const patchEntriesRaw = [...pendingPatches.entries()]\n\n if (Number.isFinite(elevateTopKeyThreshold) && elevateTopKeyThreshold > 0) {\n const counts = new Map<string, number>()\n for (const [path] of patchEntriesRaw) {\n const top = path.split('.', 1)[0]\n counts.set(top, (counts.get(top) ?? 0) + 1)\n }\n for (const [top, count] of counts) {\n if (count >= elevateTopKeyThreshold) {\n fallbackTopKeys.add(top)\n }\n }\n }\n\n const patchEntries = patchEntriesRaw.filter(([path]) => {\n for (const topKey of fallbackTopKeys) {\n if (path === topKey || path.startsWith(`${topKey}.`)) {\n return false\n }\n }\n return true\n })\n const entryMap = new Map(patchEntries)\n pendingPatches.clear()\n\n const getStateValueByPath = (path: string) => {\n const segments = path.split('.').filter(Boolean)\n let current: any = state as any\n for (const seg of segments) {\n if (current == null) {\n return current\n }\n current = current[seg]\n }\n return current\n }\n\n const getPlainByPath = (path: string) => {\n if (plainByPath.has(path)) {\n return plainByPath.get(path)\n }\n const value = normalizeSetDataValue(\n toPlain(getStateValueByPath(path), seen, { cache: plainCache, maxDepth: toPlainMaxDepth, maxKeys: toPlainMaxKeys }),\n )\n plainByPath.set(path, value)\n return value\n }\n\n if (fallbackTopKeys.size) {\n for (const topKey of fallbackTopKeys) {\n if (!shouldIncludeKey(topKey)) {\n continue\n }\n payload[topKey] = getPlainByPath(topKey)\n entryMap.set(topKey, { kind: 'property', op: 'set' })\n }\n fallbackTopKeys.clear()\n }\n\n for (const [path, entry] of patchEntries) {\n const effectiveOp = entry.kind === 'array' ? 'set' : entry.op\n if (effectiveOp === 'delete') {\n payload[path] = null\n continue\n }\n payload[path] = getPlainByPath(path)\n }\n\n let computedDirtyProcessed = 0\n if (includeComputed && dirtyComputedKeys.size) {\n const computedPatch: Record<string, any> = Object.create(null)\n const keys = [...dirtyComputedKeys]\n dirtyComputedKeys.clear()\n computedDirtyProcessed = keys.length\n for (const key of keys) {\n if (!shouldIncludeKey(key)) {\n continue\n }\n const nextValue = toPlain(computedRefs[key].value, seen, { cache: plainCache, maxDepth: toPlainMaxDepth, maxKeys: toPlainMaxKeys })\n const prevValue = latestComputedSnapshot[key]\n const equal = computedCompare === 'deep'\n ? isDeepEqualValue(prevValue, nextValue, computedCompareMaxDepth, { keys: computedCompareMaxKeys })\n : computedCompare === 'shallow'\n ? isShallowEqualValue(prevValue, nextValue)\n : Object.is(prevValue, nextValue)\n if (equal) {\n continue\n }\n computedPatch[key] = normalizeSetDataValue(nextValue)\n latestComputedSnapshot[key] = cloneSnapshotValue(nextValue)\n }\n Object.assign(payload, computedPatch)\n }\n\n let collapsedPayload = collapsePayload(payload)\n let mergedSiblingParents = 0\n if (mergeSiblingThreshold) {\n const mergedResult = mergeSiblingPayload({\n input: collapsedPayload,\n entryMap,\n getPlainByPath,\n mergeSiblingThreshold,\n mergeSiblingSkipArray,\n mergeSiblingMaxParentBytes,\n mergeSiblingMaxInflationRatio,\n })\n mergedSiblingParents = mergedResult.merged\n collapsedPayload = collapsePayload(mergedResult.out)\n }\n const sizeCheck = checkPayloadSize(collapsedPayload, maxPayloadBytes)\n const shouldFallback = sizeCheck.fallback\n emitDebug({\n mode: shouldFallback ? 'diff' : 'patch',\n reason: shouldFallback ? 'maxPayloadBytes' : 'patch',\n pendingPatchKeys: patchEntries.length,\n payloadKeys: Object.keys(collapsedPayload).length,\n mergedSiblingParents: mergedSiblingParents || undefined,\n computedDirtyKeys: computedDirtyProcessed || undefined,\n estimatedBytes: sizeCheck.estimatedBytes,\n bytes: sizeCheck.bytes,\n })\n if (shouldFallback) {\n needsFullSnapshot.value = true\n pendingPatches.clear()\n dirtyComputedKeys.clear()\n runDiffUpdate('maxPayloadBytes')\n return\n }\n if (!Object.keys(collapsedPayload).length) {\n return\n }\n\n // 保持快照同步,确保 patch 模式可安全回退到 diff。\n for (const [path, value] of Object.entries(collapsedPayload)) {\n const entry = entryMap.get(path)\n if (entry) {\n applySnapshotUpdate(latestSnapshot, path, value, entry.kind === 'array' ? 'set' : entry.op, { cloneValue: false })\n }\n else {\n // 计算属性或 diffSnapshots 生成的顶层键。\n applySnapshotUpdate(latestSnapshot, path, value, 'set', { cloneValue: false })\n }\n }\n\n if (typeof currentAdapter.setData === 'function') {\n const result = currentAdapter.setData(collapsedPayload)\n if (result && typeof (result as Promise<any>).then === 'function') {\n ;(result as Promise<any>).catch(() => {})\n }\n }\n emitDebug({\n mode: 'patch',\n reason: 'patch',\n pendingPatchKeys: patchEntries.length,\n payloadKeys: Object.keys(collapsedPayload).length,\n })\n}\n","import type { MutationRecord } from '../../../reactivity'\nimport type { SetDataDebugInfo } from '../../types'\nimport { getReactiveVersion, isReactive, isRef, toRaw } from '../../../reactivity'\nimport { hasOwn } from '../../../utils'\nimport { diffSnapshots, toPlain } from '../../diff'\nimport { hasTrackableSetupBinding } from '../../setupTracking'\nimport { runPatchUpdate } from './patchScheduler'\nimport { collectSnapshot } from './snapshot'\n\nexport function createSetDataScheduler(options: {\n state: Record<string, any>\n computedRefs: Record<string, { value: any }>\n dirtyComputedKeys: Set<string>\n includeComputed: boolean\n setDataStrategy: 'diff' | 'patch'\n computedCompare: 'reference' | 'shallow' | 'deep'\n computedCompareMaxDepth: number\n computedCompareMaxKeys: number\n currentAdapter: { setData?: (payload: Record<string, any>) => void | Promise<void> }\n shouldIncludeKey: (key: string) => boolean\n maxPatchKeys: number\n maxPayloadBytes: number\n mergeSiblingThreshold: number\n mergeSiblingMaxInflationRatio: number\n mergeSiblingMaxParentBytes: number\n mergeSiblingSkipArray: boolean\n elevateTopKeyThreshold: number\n toPlainMaxDepth: number\n toPlainMaxKeys: number\n debug: ((info: SetDataDebugInfo) => void) | undefined\n debugWhen: 'fallback' | 'always'\n debugSampleRate: number\n runTracker: () => void\n isMounted: () => boolean\n}) {\n const {\n state,\n computedRefs,\n dirtyComputedKeys,\n includeComputed,\n setDataStrategy,\n computedCompare,\n computedCompareMaxDepth,\n computedCompareMaxKeys,\n currentAdapter,\n shouldIncludeKey,\n maxPatchKeys,\n maxPayloadBytes,\n mergeSiblingThreshold,\n mergeSiblingMaxInflationRatio,\n mergeSiblingMaxParentBytes,\n mergeSiblingSkipArray,\n elevateTopKeyThreshold,\n toPlainMaxDepth,\n toPlainMaxKeys,\n debug,\n debugWhen,\n debugSampleRate,\n runTracker,\n isMounted,\n } = options\n\n const plainCache = new WeakMap<object, { version: number, value: any }>()\n let latestSnapshot: Record<string, any> = {}\n let latestComputedSnapshot: Record<string, any> = Object.create(null)\n const latestStateTokens = Object.create(null) as Record<string, unknown>\n const latestComputedTokens = Object.create(null) as Record<string, unknown>\n const needsFullSnapshot = { value: setDataStrategy === 'patch' }\n const pendingPatches = new Map<string, { kind: 'property' | 'array', op: 'set' | 'delete' }>()\n const fallbackTopKeys = new Set<string>()\n\n const isPlainObject = (value: unknown): value is Record<string, any> => {\n if (Object.prototype.toString.call(value) !== '[object Object]') {\n return false\n }\n const proto = Object.getPrototypeOf(value)\n return proto === null || proto === Object.prototype\n }\n\n const isDeepEqual = (left: any, right: any): boolean => {\n if (Object.is(left, right)) {\n return true\n }\n if (Array.isArray(left) && Array.isArray(right)) {\n if (left.length !== right.length) {\n return false\n }\n return left.every((item, index) => isDeepEqual(item, right[index]))\n }\n if (isPlainObject(left) && isPlainObject(right)) {\n const leftKeys = Object.keys(left)\n const rightKeys = Object.keys(right)\n if (leftKeys.length !== rightKeys.length) {\n return false\n }\n return leftKeys.every(key => hasOwn(right, key) && isDeepEqual(left[key], right[key]))\n }\n return false\n }\n\n const createValueToken = (value: unknown) => {\n const candidate = isRef(value) ? value.value : value\n if (candidate == null || typeof candidate !== 'object') {\n return candidate\n }\n if (!isReactive(candidate) && hasTrackableSetupBinding(candidate)) {\n return {\n snapshot: toPlain(candidate, new WeakMap(), {\n maxDepth: toPlainMaxDepth,\n maxKeys: toPlainMaxKeys,\n }),\n }\n }\n const raw = isReactive(candidate) ? toRaw(candidate as any) : candidate\n return {\n raw,\n version: getReactiveVersion(raw as any),\n }\n }\n\n const isSameToken = (left: unknown, right: unknown) => {\n if (Object.is(left, right)) {\n return true\n }\n if (\n !left\n || !right\n || typeof left !== 'object'\n || typeof right !== 'object'\n || !hasOwn(left as object, 'raw')\n || !hasOwn(right as object, 'raw')\n ) {\n if (\n left\n && right\n && typeof left === 'object'\n && typeof right === 'object'\n && hasOwn(left as object, 'snapshot')\n && hasOwn(right as object, 'snapshot')\n ) {\n return isDeepEqual((left as any).snapshot, (right as any).snapshot)\n }\n return false\n }\n return (left as any).raw === (right as any).raw && (left as any).version === (right as any).version\n }\n\n const resolveTopKeysByRoot = (root: object) => {\n const matches: string[] = []\n for (const key of Object.keys(state)) {\n if (!shouldIncludeKey(key)) {\n continue\n }\n const value = state[key]\n const candidate = isRef(value) ? value.value : value\n if (!candidate || typeof candidate !== 'object') {\n continue\n }\n if (toRaw(candidate as any) === root) {\n matches.push(key)\n }\n }\n return matches\n }\n\n const emitDebug = (info: SetDataDebugInfo) => {\n if (!debug) {\n return\n }\n const isFallback = info.reason !== 'patch' && info.reason !== 'diff'\n if (debugWhen === 'fallback' && !isFallback) {\n return\n }\n if (debugSampleRate < 1 && Math.random() > debugSampleRate) {\n return\n }\n try {\n debug(info)\n }\n catch {\n // 忽略异常\n }\n }\n\n const collect = () => collectSnapshot({\n state,\n computedRefs,\n includeComputed,\n shouldIncludeKey,\n plainCache,\n toPlainMaxDepth,\n toPlainMaxKeys,\n })\n const collectOwnerSnapshot = () => collectSnapshot({\n state,\n computedRefs,\n includeComputed: true,\n shouldIncludeKey: () => true,\n plainCache,\n toPlainMaxDepth,\n toPlainMaxKeys,\n })\n\n const collectDiffSnapshot = () => {\n const rawState = (isReactive(state) ? toRaw(state as any) : state) as Record<string, any>\n const nextSnapshot: Record<string, any> = { ...latestSnapshot }\n const seen = new WeakMap<object, any>()\n const includedStateKeys = new Set<string>()\n const includedComputedKeys = new Set<string>()\n const replacedTopLevelKeys = new Set<string>()\n\n for (const key of Object.keys(rawState)) {\n if (!shouldIncludeKey(key)) {\n continue\n }\n includedStateKeys.add(key)\n const token = createValueToken(rawState[key])\n const previousToken = latestStateTokens[key]\n if (\n previousToken\n && token\n && typeof previousToken === 'object'\n && typeof token === 'object'\n && hasOwn(previousToken as object, 'raw')\n && hasOwn(token as object, 'raw')\n && Array.isArray((previousToken as any).raw)\n && Array.isArray((token as any).raw)\n && (previousToken as any).raw !== (token as any).raw\n ) {\n replacedTopLevelKeys.add(key)\n }\n if (!isSameToken(previousToken, token) || !hasOwn(latestSnapshot, key)) {\n nextSnapshot[key] = toPlain(rawState[key], seen, {\n cache: plainCache,\n maxDepth: toPlainMaxDepth,\n maxKeys: toPlainMaxKeys,\n })\n }\n latestStateTokens[key] = token\n }\n\n for (const key of Object.keys(latestStateTokens)) {\n if (!includedStateKeys.has(key)) {\n delete latestStateTokens[key]\n if (!includeComputed || !hasOwn(computedRefs, key)) {\n delete nextSnapshot[key]\n }\n }\n }\n\n if (!includeComputed) {\n for (const key of Object.keys(latestComputedTokens)) {\n delete latestComputedTokens[key]\n }\n return {\n snapshot: nextSnapshot,\n replacedTopLevelKeys,\n }\n }\n\n for (const key of Object.keys(computedRefs)) {\n if (!shouldIncludeKey(key)) {\n continue\n }\n includedComputedKeys.add(key)\n const value = computedRefs[key].value\n const token = createValueToken(value)\n if (!isSameToken(latestComputedTokens[key], token) || !hasOwn(latestSnapshot, key)) {\n nextSnapshot[key] = toPlain(value, seen, {\n cache: plainCache,\n maxDepth: toPlainMaxDepth,\n maxKeys: toPlainMaxKeys,\n })\n }\n latestComputedTokens[key] = token\n }\n\n for (const key of Object.keys(latestComputedTokens)) {\n if (!includedComputedKeys.has(key)) {\n delete latestComputedTokens[key]\n if (!hasOwn(rawState, key) || !shouldIncludeKey(key)) {\n delete nextSnapshot[key]\n }\n }\n }\n\n return {\n snapshot: nextSnapshot,\n replacedTopLevelKeys,\n }\n }\n\n const runDiffUpdate = (reason: SetDataDebugInfo['reason'] = 'diff') => {\n const diffCollection = setDataStrategy === 'diff' ? collectDiffSnapshot() : undefined\n const snapshot = diffCollection?.snapshot ?? collect()\n const diff = diffCollection\n ? (() => {\n const fastDiff: Record<string, any> = {}\n for (const key of diffCollection.replacedTopLevelKeys) {\n fastDiff[key] = snapshot[key]\n }\n const baseDiff = diffSnapshots(latestSnapshot, snapshot, {\n skipKeys: diffCollection.replacedTopLevelKeys,\n })\n return {\n ...baseDiff,\n ...fastDiff,\n }\n })()\n : diffSnapshots(latestSnapshot, snapshot)\n latestSnapshot = snapshot\n needsFullSnapshot.value = false\n pendingPatches.clear()\n if (setDataStrategy === 'patch' && includeComputed) {\n latestComputedSnapshot = Object.create(null)\n for (const key of Object.keys(computedRefs)) {\n if (!shouldIncludeKey(key)) {\n continue\n }\n latestComputedSnapshot[key] = snapshot[key]\n }\n dirtyComputedKeys.clear()\n }\n if (!Object.keys(diff).length) {\n return\n }\n if (typeof currentAdapter.setData === 'function') {\n const result = currentAdapter.setData(diff)\n if (result && typeof (result as Promise<any>).then === 'function') {\n ;(result as Promise<any>).catch(() => {})\n }\n }\n emitDebug({\n mode: 'diff',\n reason,\n pendingPatchKeys: 0,\n payloadKeys: Object.keys(diff).length,\n })\n }\n\n const mutationRecorder = (record: MutationRecord, stateRootRaw: object) => {\n if (!isMounted()) {\n return\n }\n if (record.root !== stateRootRaw) {\n const topKeys = resolveTopKeysByRoot(record.root)\n if (topKeys.length) {\n for (const key of topKeys) {\n fallbackTopKeys.add(key)\n }\n }\n return\n }\n if (!record.path) {\n if (Array.isArray(record.fallbackTopKeys) && record.fallbackTopKeys.length) {\n for (const key of record.fallbackTopKeys) {\n fallbackTopKeys.add(key)\n }\n }\n else {\n needsFullSnapshot.value = true\n }\n return\n }\n const topKey = record.path.split('.', 1)[0]\n if (!shouldIncludeKey(topKey)) {\n return\n }\n pendingPatches.set(record.path, { kind: record.kind, op: record.op })\n }\n\n const job = (_stateRootRaw: object) => {\n if (!isMounted()) {\n return\n }\n // 生成快照前刷新依赖(setup 中的 ref / 新增 key)\n runTracker()\n\n if (setDataStrategy === 'patch' && !needsFullSnapshot.value) {\n const hasPatchSignal = pendingPatches.size > 0\n || fallbackTopKeys.size > 0\n || (includeComputed && dirtyComputedKeys.size > 0)\n // setup 返回的 ref/computed 变更不会进入 mutation recorder,patch 信号为空时兜底走 diff。\n if (!hasPatchSignal) {\n runDiffUpdate('diff')\n return\n }\n runPatchUpdate({\n state,\n computedRefs,\n dirtyComputedKeys,\n includeComputed,\n computedCompare,\n computedCompareMaxDepth,\n computedCompareMaxKeys,\n currentAdapter,\n shouldIncludeKey,\n maxPatchKeys,\n maxPayloadBytes,\n mergeSiblingThreshold,\n mergeSiblingMaxInflationRatio,\n mergeSiblingMaxParentBytes,\n mergeSiblingSkipArray,\n elevateTopKeyThreshold,\n toPlainMaxDepth,\n toPlainMaxKeys,\n plainCache,\n pendingPatches,\n fallbackTopKeys,\n latestSnapshot,\n latestComputedSnapshot,\n needsFullSnapshot,\n emitDebug,\n runDiffUpdate,\n })\n }\n else {\n runDiffUpdate(needsFullSnapshot.value ? 'needsFullSnapshot' : 'diff')\n }\n }\n\n const snapshot = () => (setDataStrategy === 'patch' ? collect() : ({ ...latestSnapshot }))\n const cloneLatestSnapshot = () => ({ ...latestSnapshot })\n\n return {\n job,\n mutationRecorder,\n snapshot,\n collectOwnerSnapshot,\n cloneLatestSnapshot,\n getLatestSnapshot: () => latestSnapshot,\n }\n}\n","import type { SetDataSnapshotOptions } from '../types'\nimport { WEVU_GENERIC_SLOT_OWNER_PROP_PREFIX } from '@weapp-core/constants'\n\nexport interface ResolvedSetDataOptions {\n includeComputed: boolean\n suspendWhenHidden: boolean\n setDataStrategy: 'diff' | 'patch'\n maxPatchKeys: number\n maxPayloadBytes: number\n mergeSiblingThreshold: number\n mergeSiblingMaxInflationRatio: number\n mergeSiblingMaxParentBytes: number\n mergeSiblingSkipArray: boolean\n computedCompare: 'reference' | 'shallow' | 'deep'\n computedCompareMaxDepth: number\n computedCompareMaxKeys: number\n prelinkMaxDepth: number | undefined\n prelinkMaxKeys: number | undefined\n debug: SetDataSnapshotOptions['debug']\n diagnostics: 'off' | 'fallback' | 'always'\n debugWhen: 'fallback' | 'always'\n debugSampleRate: number\n elevateTopKeyThreshold: number\n toPlainMaxDepth: number\n toPlainMaxKeys: number\n pickSet: Set<string> | undefined\n omitSet: Set<string> | undefined\n shouldIncludeKey: (key: string) => boolean\n}\n\nexport function resolveSetDataOptions(\n setDataOptions?: SetDataSnapshotOptions,\n): ResolvedSetDataOptions {\n const includeComputed = setDataOptions?.includeComputed ?? true\n const suspendWhenHidden = setDataOptions?.suspendWhenHidden ?? false\n const setDataStrategy = setDataOptions?.strategy ?? 'diff'\n const maxPatchKeys = typeof setDataOptions?.maxPatchKeys === 'number'\n ? Math.max(0, setDataOptions!.maxPatchKeys!)\n : Number.POSITIVE_INFINITY\n const maxPayloadBytes = typeof setDataOptions?.maxPayloadBytes === 'number'\n ? Math.max(0, setDataOptions!.maxPayloadBytes!)\n : Number.POSITIVE_INFINITY\n const mergeSiblingThreshold = typeof setDataOptions?.mergeSiblingThreshold === 'number'\n ? Math.max(2, Math.floor(setDataOptions!.mergeSiblingThreshold!))\n : 0\n const mergeSiblingMaxInflationRatio = typeof setDataOptions?.mergeSiblingMaxInflationRatio === 'number'\n ? Math.max(0, setDataOptions!.mergeSiblingMaxInflationRatio!)\n : 1.25\n const mergeSiblingMaxParentBytes = typeof setDataOptions?.mergeSiblingMaxParentBytes === 'number'\n ? Math.max(0, setDataOptions!.mergeSiblingMaxParentBytes!)\n : Number.POSITIVE_INFINITY\n const mergeSiblingSkipArray = setDataOptions?.mergeSiblingSkipArray ?? true\n const computedCompare = setDataOptions?.computedCompare ?? (setDataStrategy === 'patch' ? 'deep' : 'reference')\n const computedCompareMaxDepth = typeof setDataOptions?.computedCompareMaxDepth === 'number'\n ? Math.max(0, Math.floor(setDataOptions!.computedCompareMaxDepth!))\n : 4\n const computedCompareMaxKeys = typeof setDataOptions?.computedCompareMaxKeys === 'number'\n ? Math.max(0, Math.floor(setDataOptions!.computedCompareMaxKeys!))\n : 200\n const prelinkMaxDepth = setDataOptions?.prelinkMaxDepth\n const prelinkMaxKeys = setDataOptions?.prelinkMaxKeys\n const debug = setDataOptions?.debug\n const diagnostics = setDataOptions?.diagnostics ?? 'off'\n const debugWhen = setDataOptions?.debugWhen ?? 'fallback'\n const debugSampleRate = typeof setDataOptions?.debugSampleRate === 'number'\n ? Math.min(1, Math.max(0, setDataOptions!.debugSampleRate!))\n : 1\n const elevateTopKeyThreshold = typeof setDataOptions?.elevateTopKeyThreshold === 'number'\n ? Math.max(0, Math.floor(setDataOptions!.elevateTopKeyThreshold!))\n : Number.POSITIVE_INFINITY\n const toPlainMaxDepth = typeof setDataOptions?.toPlainMaxDepth === 'number'\n ? Math.max(0, Math.floor(setDataOptions!.toPlainMaxDepth!))\n : Number.POSITIVE_INFINITY\n const toPlainMaxKeys = typeof setDataOptions?.toPlainMaxKeys === 'number'\n ? Math.max(0, Math.floor(setDataOptions!.toPlainMaxKeys!))\n : Number.POSITIVE_INFINITY\n const pickSet = Array.isArray(setDataOptions?.pick) && setDataOptions!.pick!.length > 0\n ? new Set(setDataOptions!.pick)\n : undefined\n const omitSet = Array.isArray(setDataOptions?.omit) && setDataOptions!.omit!.length > 0\n ? new Set(setDataOptions!.omit)\n : undefined\n const shouldIncludeKey = (key: string) => {\n if (pickSet && !pickSet.has(key) && !key.startsWith(WEVU_GENERIC_SLOT_OWNER_PROP_PREFIX)) {\n return false\n }\n if (omitSet && omitSet.has(key)) {\n return false\n }\n return true\n }\n\n return {\n includeComputed,\n suspendWhenHidden,\n setDataStrategy,\n maxPatchKeys,\n maxPayloadBytes,\n mergeSiblingThreshold,\n mergeSiblingMaxInflationRatio,\n mergeSiblingMaxParentBytes,\n mergeSiblingSkipArray,\n computedCompare,\n computedCompareMaxDepth,\n computedCompareMaxKeys,\n prelinkMaxDepth,\n prelinkMaxKeys,\n debug,\n diagnostics,\n debugWhen,\n debugSampleRate,\n elevateTopKeyThreshold,\n toPlainMaxDepth,\n toPlainMaxKeys,\n pickSet,\n omitSet,\n shouldIncludeKey,\n }\n}\n","import type { MutationRecord, WatchOptions, WatchStopHandle } from '../../reactivity'\nimport type {\n AppConfig,\n ComputedDefinitions,\n CreateAppOptions,\n ExtractComputed,\n MethodDefinitions,\n MiniProgramAdapter,\n RuntimeInstance,\n SetDataDebugInfo,\n} from '../types'\nimport {\n WEVU_ATTRS_KEY,\n WEVU_PROPS_KEY,\n} from '@weapp-core/constants'\nimport { addMutationRecorder, effect, isReactive, prelinkReactiveTree, reactive, removeMutationRecorder, shallowReactive, stop, toRaw, touchReactive, watch } from '../../reactivity'\nimport { clearPatchIndices } from '../../reactivity/reactive'\nimport { queueJob } from '../../scheduler'\nimport { hasOwn } from '../../utils'\nimport { createBindModel } from '../bindModel'\nimport { hasTrackableSetupBinding, touchSetupBinding } from '../setupTracking'\nimport { createRuntimeContext } from './context'\nimport { createDiagnosticsLogger } from './diagnostics'\nimport { createSetDataScheduler } from './setData/scheduler'\nimport { resolveSetDataOptions } from './setDataOptions'\n\nfunction createWatchStopHandle(cleanup: () => void, baseHandle?: WatchStopHandle): WatchStopHandle {\n const stopHandle = (() => {\n cleanup()\n }) as WatchStopHandle\n stopHandle.stop = () => stopHandle()\n stopHandle.pause = () => {\n baseHandle?.pause?.()\n }\n stopHandle.resume = () => {\n baseHandle?.resume?.()\n }\n return stopHandle\n}\n\ntype RuntimeInstanceWithSetupMethodsVersion<\n D extends object,\n C extends ComputedDefinitions,\n M extends MethodDefinitions,\n> = RuntimeInstance<D, C, M> & {\n __wevu_touchSetupMethodsVersion?: () => void\n __wevu_flushSetupSnapshotSync?: () => void\n __wevu_collectOwnerSnapshot?: () => Record<string, any>\n __wevu_cloneLatestSnapshot?: () => Record<string, any>\n __wevu_trackSetupReactiveKey?: (key: string) => void\n}\n\nfunction resolveDataOption<D extends object>(data: CreateAppOptions<D, any, any>['data']): D {\n if (typeof data === 'function') {\n return data()\n }\n return (data ?? {}) as D\n}\n\nexport function createRuntimeMount<D extends object, C extends ComputedDefinitions, M extends MethodDefinitions>(options: {\n data: CreateAppOptions<D, C, M>['data']\n resolvedComputed: C\n resolvedMethods: M\n appConfig: AppConfig\n setDataOptions: CreateAppOptions<D, C, M>['setData']\n}) {\n const {\n data,\n resolvedComputed,\n resolvedMethods,\n appConfig,\n setDataOptions,\n } = options\n\n return (adapter?: MiniProgramAdapter): RuntimeInstance<D, C, M> => {\n const rawState = resolveDataOption(data)\n // 预置 props 容器,确保编译器生成的 this.__wevuProps 回退表达式\n // 在 computed 首次求值阶段即可建立响应式依赖。\n if (rawState && typeof rawState === 'object' && !hasOwn(rawState as object, WEVU_PROPS_KEY)) {\n try {\n Object.defineProperty(rawState as object, WEVU_PROPS_KEY, {\n value: shallowReactive(Object.create(null)),\n configurable: true,\n enumerable: false,\n writable: false,\n })\n }\n catch {\n // 若 data 返回对象不可扩展,则跳过预置,后续由 mount 阶段兜底注入。\n }\n }\n const state = reactive(rawState)\n const computedDefs = resolvedComputed\n const methodDefs = resolvedMethods\n\n let mounted = true\n const stopHandles: WatchStopHandle[] = []\n const trackedSetupReactiveKeys = new Set<string>()\n Object.keys(state as any).forEach((key) => {\n const value = (state as any)[key]\n if (hasTrackableSetupBinding(value)) {\n trackedSetupReactiveKeys.add(key)\n }\n })\n\n const {\n includeComputed,\n setDataStrategy,\n maxPatchKeys,\n maxPayloadBytes,\n mergeSiblingThreshold,\n mergeSiblingMaxInflationRatio,\n mergeSiblingMaxParentBytes,\n mergeSiblingSkipArray,\n computedCompare,\n computedCompareMaxDepth,\n computedCompareMaxKeys,\n prelinkMaxDepth,\n prelinkMaxKeys,\n debug,\n diagnostics,\n debugWhen,\n debugSampleRate,\n elevateTopKeyThreshold,\n toPlainMaxDepth,\n toPlainMaxKeys,\n shouldIncludeKey,\n } = resolveSetDataOptions(setDataOptions)\n const diagnosticsLogger = createDiagnosticsLogger(diagnostics)\n const mergedDebug = (debug || diagnosticsLogger)\n ? (info: SetDataDebugInfo) => {\n if (typeof debug === 'function') {\n debug(info)\n }\n diagnosticsLogger?.(info)\n }\n : undefined\n const mergedDebugWhen = diagnostics === 'always'\n ? 'always'\n : debugWhen\n\n const {\n boundMethods,\n computedRefs,\n computedSetters,\n dirtyComputedKeys,\n computedProxy,\n publicInstance,\n touchSetupMethodsVersion,\n } = createRuntimeContext({\n state,\n computedDefs,\n methodDefs,\n appConfig,\n includeComputed,\n setDataStrategy,\n })\n\n const currentAdapter = adapter ?? { setData: () => {} }\n const stateRootRaw = toRaw(state as any) as object\n let tracker: ReturnType<typeof effect> | undefined\n const scheduler = createSetDataScheduler({\n state: state as any,\n computedRefs,\n dirtyComputedKeys,\n includeComputed,\n setDataStrategy,\n computedCompare,\n computedCompareMaxDepth,\n computedCompareMaxKeys,\n currentAdapter,\n shouldIncludeKey,\n maxPatchKeys,\n maxPayloadBytes,\n mergeSiblingThreshold,\n mergeSiblingMaxInflationRatio,\n mergeSiblingMaxParentBytes,\n mergeSiblingSkipArray,\n elevateTopKeyThreshold,\n toPlainMaxDepth,\n toPlainMaxKeys,\n debug: mergedDebug,\n debugWhen: mergedDebugWhen,\n debugSampleRate,\n runTracker: () => tracker?.(),\n isMounted: () => mounted,\n })\n const job = () => scheduler.job(stateRootRaw)\n const mutationRecorder = (record: MutationRecord) => scheduler.mutationRecorder(record, stateRootRaw)\n\n tracker = effect(\n () => {\n // 通过根版本信号跟踪任意状态变化\n touchReactive(state as any)\n // __wevuProps / __wevuAttrs 是非枚举属性,需显式跟踪,\n // 否则 props/attrs 更新不会触发 setData 调度。\n const runtimeProps = (state as any)[WEVU_PROPS_KEY]\n if (isReactive(runtimeProps)) {\n touchReactive(runtimeProps as any)\n }\n const runtimeAttrs = (state as any)[WEVU_ATTRS_KEY]\n if (isReactive(runtimeAttrs)) {\n touchReactive(runtimeAttrs as any)\n }\n // 在 setup 返回的 ref/computedRef 变更不会提升 reactive 根版本:\n // 仅跟踪这些明确注册过的键,避免每轮 flush 扫描整份 state。\n trackedSetupReactiveKeys.forEach((key) => {\n const v = (state as any)[key]\n // setup 返回的组合式对象常常是“普通对象 + 内含 refs/reactive”,\n // 这里递归触达内部响应式源,确保异步更新也能继续驱动 setData。\n touchSetupBinding(v)\n })\n },\n {\n lazy: true,\n scheduler: () => queueJob(job),\n },\n )\n\n job()\n\n stopHandles.push(createWatchStopHandle(() => stop(tracker)))\n if (setDataStrategy === 'patch') {\n prelinkReactiveTree(state as any, { shouldIncludeTopKey: shouldIncludeKey, maxDepth: prelinkMaxDepth, maxKeys: prelinkMaxKeys })\n addMutationRecorder(mutationRecorder)\n stopHandles.push(createWatchStopHandle(() => removeMutationRecorder(mutationRecorder)))\n stopHandles.push(createWatchStopHandle(() => clearPatchIndices(state as any)))\n }\n\n function registerWatch<T>(\n source: (() => T) | Record<string, any>,\n cb: (value: T, oldValue: T) => void,\n watchOptions?: WatchOptions,\n ): WatchStopHandle {\n const stopHandle = watch(source as any, (value: T, oldValue: T) => cb(value, oldValue), watchOptions)\n stopHandles.push(stopHandle)\n return createWatchStopHandle(() => {\n stopHandle()\n const index = stopHandles.indexOf(stopHandle)\n if (index >= 0) {\n stopHandles.splice(index, 1)\n }\n }, stopHandle)\n }\n\n const bindModel = createBindModel(\n publicInstance as any,\n state as any,\n computedRefs,\n computedSetters,\n )\n\n const unmount = () => {\n if (!mounted) {\n return\n }\n mounted = false\n stopHandles.forEach((handle) => {\n try {\n handle()\n }\n catch {\n // 卸载阶段忽略 stop 抛错,确保其余清理继续\n }\n })\n stopHandles.length = 0\n }\n\n const runtimeInstance: RuntimeInstance<D, C, M> = {\n get state() {\n return state\n },\n get proxy() {\n return publicInstance\n },\n get methods() {\n return boundMethods\n },\n get computed() {\n return computedProxy as Readonly<ExtractComputed<C>>\n },\n get adapter() {\n return currentAdapter\n },\n bindModel,\n watch: registerWatch,\n snapshot: () => scheduler.snapshot(),\n unmount,\n }\n\n try {\n Object.defineProperty(runtimeInstance, '__wevu_touchSetupMethodsVersion', {\n value: touchSetupMethodsVersion,\n configurable: true,\n enumerable: false,\n writable: false,\n })\n }\n catch {\n ;(runtimeInstance as RuntimeInstanceWithSetupMethodsVersion<D, C, M>).__wevu_touchSetupMethodsVersion = touchSetupMethodsVersion\n }\n\n try {\n Object.defineProperty(runtimeInstance, '__wevu_flushSetupSnapshotSync', {\n value: job,\n configurable: true,\n enumerable: false,\n writable: false,\n })\n }\n catch {\n ;(runtimeInstance as RuntimeInstanceWithSetupMethodsVersion<D, C, M>).__wevu_flushSetupSnapshotSync = job\n }\n\n try {\n Object.defineProperty(runtimeInstance, '__wevu_collectOwnerSnapshot', {\n value: scheduler.collectOwnerSnapshot,\n configurable: true,\n enumerable: false,\n writable: false,\n })\n }\n catch {\n ;(runtimeInstance as RuntimeInstanceWithSetupMethodsVersion<D, C, M>).__wevu_collectOwnerSnapshot = scheduler.collectOwnerSnapshot\n }\n\n try {\n Object.defineProperty(runtimeInstance, '__wevu_cloneLatestSnapshot', {\n value: scheduler.cloneLatestSnapshot,\n configurable: true,\n enumerable: false,\n writable: false,\n })\n }\n catch {\n ;(runtimeInstance as RuntimeInstanceWithSetupMethodsVersion<D, C, M>).__wevu_cloneLatestSnapshot = scheduler.cloneLatestSnapshot\n }\n\n try {\n Object.defineProperty(runtimeInstance, '__wevu_trackSetupReactiveKey', {\n value: (key: string) => {\n trackedSetupReactiveKeys.add(key)\n },\n configurable: true,\n enumerable: false,\n writable: false,\n })\n }\n catch {\n ;(runtimeInstance as RuntimeInstanceWithSetupMethodsVersion<D, C, M>).__wevu_trackSetupReactiveKey = (key: string) => {\n trackedSetupReactiveKeys.add(key)\n }\n }\n\n return runtimeInstance\n }\n}\n","import type { CreateAppOptions, DefineComponentOptions } from './types'\n\nexport type WevuDefaultsScope = 'app' | 'component'\n\nexport const INTERNAL_DEFAULTS_SCOPE_KEY = '__wevuDefaultsScope'\n\nexport interface WevuDefaults {\n app?: Partial<CreateAppOptions<any, any, any>>\n component?: Partial<DefineComponentOptions<any, any, any, any>>\n}\n\nlet currentDefaults: WevuDefaults = {}\n\nfunction getPlainRecord(value: unknown): Record<string, any> | undefined {\n if (!value || typeof value !== 'object' || Array.isArray(value)) {\n return undefined\n }\n return value as Record<string, any>\n}\n\nfunction mergeDefaults<T extends Record<string, any>>(\n defaults?: Partial<T>,\n options?: Partial<T>,\n) {\n if (!defaults) {\n return options\n }\n if (!options) {\n return defaults\n }\n\n const merged = {\n ...(defaults as Record<string, any>),\n ...(options as Record<string, any>),\n }\n\n const defaultSetData = getPlainRecord((defaults as any).setData)\n const optionSetData = getPlainRecord((options as any).setData)\n if (defaultSetData || optionSetData) {\n merged.setData = {\n ...(defaultSetData ?? {}),\n ...(optionSetData ?? {}),\n }\n }\n\n const defaultOptions = getPlainRecord((defaults as any).options)\n const optionOptions = getPlainRecord((options as any).options)\n if (defaultOptions || optionOptions) {\n merged.options = {\n ...(defaultOptions ?? {}),\n ...(optionOptions ?? {}),\n }\n }\n\n return merged as Partial<T>\n}\n\nfunction mergeWithDefaults<T extends Record<string, any>>(\n defaults: Partial<T> | undefined,\n options: T,\n): T {\n return mergeDefaults(defaults, options) as T\n}\n\nfunction mergeWevuDefaults(base: WevuDefaults, next: WevuDefaults): WevuDefaults {\n return {\n app: mergeDefaults(base.app, next.app),\n component: mergeDefaults(base.component, next.component),\n }\n}\n\nexport function setWevuDefaults(next: WevuDefaults) {\n currentDefaults = mergeWevuDefaults(currentDefaults, next)\n}\n\nexport function resetWevuDefaults() {\n currentDefaults = {}\n}\n\n/**\n * 读取当前默认配置(框架内部使用)。\n * @internal\n */\nexport function resolveWevuDefaults() {\n return currentDefaults\n}\n\n/**\n * 将默认配置应用到 App 选项(框架内部使用)。\n * @internal\n */\nexport function applyWevuAppDefaults<T extends CreateAppOptions<any, any, any>>(options: T): T {\n return mergeWithDefaults(currentDefaults.app as Partial<T> | undefined, options)\n}\n\n/**\n * 将默认配置应用到组件选项(框架内部使用)。\n * @internal\n */\nexport function applyWevuComponentDefaults<T extends DefineComponentOptions<any, any, any, any>>(options: T): T {\n return mergeWithDefaults(currentDefaults.component as Partial<T> | undefined, options)\n}\n","import { isReactive, isRef, reactive } from '../../reactivity'\n\nexport interface InlineExpressionEntry {\n keys: string[]\n indexKeys?: string[]\n scopeResolvers?: Array<InlineExpressionScopeResolver | ((ctx: any, scope: Record<string, any>, event: any) => any) | undefined>\n fn: (ctx: any, scope: Record<string, any>, event: any) => any\n}\n\ninterface InlineExpressionScopeResolver {\n type: 'for-item'\n path: string\n indexKey: string\n}\n\nexport type InlineExpressionMap = Record<string, InlineExpressionEntry>\n\nconst AMP_RE = /&/g\nconst QUOT_RE = /"/g\nconst NUM_QUOT_RE = /"/g\nconst APOS_RE = /'/g\nconst NUM_APOS_RE = /'/g\nconst LT_RE = /</g\nconst GT_RE = />/g\n\nexport function decodeWxmlEntities(value: string) {\n return value\n .replace(AMP_RE, '&')\n .replace(QUOT_RE, '\"')\n .replace(NUM_QUOT_RE, '\"')\n .replace(APOS_RE, '\\'')\n .replace(NUM_APOS_RE, '\\'')\n .replace(LT_RE, '<')\n .replace(GT_RE, '>')\n}\n\nfunction normalizeDatasetIndex(value: unknown): number | undefined {\n if (typeof value === 'number' && Number.isFinite(value)) {\n return value\n }\n if (typeof value === 'string' && value.trim()) {\n const parsed = Number(value)\n if (Number.isFinite(parsed)) {\n return parsed\n }\n }\n return undefined\n}\n\nconst NON_ALNUM_RE = /[^a-z0-9]+/gi\nconst LEADING_TRAILING_DASH_RE = /^-+|-+$/g\n\nfunction normalizeEventToken(value: string): string {\n return value\n .trim()\n .replace(NON_ALNUM_RE, '-')\n .replace(LEADING_TRAILING_DASH_RE, '')\n .toLowerCase()\n}\n\nconst DASH_ALNUM_RE = /-([a-z0-9])/g\n\nfunction resolveEventDatasetKey(baseKey: string, event: any): string | undefined {\n const eventType = typeof event?.type === 'string' ? event.type : ''\n const token = normalizeEventToken(eventType)\n if (!token) {\n return undefined\n }\n const camelToken = token.replace(DASH_ALNUM_RE, (_, ch: string) => ch.toUpperCase())\n if (!camelToken) {\n return undefined\n }\n return `${baseKey}${camelToken[0].toUpperCase()}${camelToken.slice(1)}`\n}\n\nconst DATASET_KEY_ALIASES: Record<string, string[]> = {\n wvEventDetail: ['wd', 'wvEventDetail'],\n wvHandler: ['wh', 'wvHandler'],\n wvInlineId: ['wi', 'wvInlineId'],\n}\n\nfunction resolveDatasetValueByBaseKey(\n dataset: Record<string, any>,\n baseKey: string,\n event: any,\n) {\n const aliasKeys = DATASET_KEY_ALIASES[baseKey] ?? [baseKey]\n for (const aliasKey of aliasKeys) {\n const specificKey = resolveEventDatasetKey(aliasKey, event)\n if (specificKey && dataset?.[specificKey] !== undefined) {\n return dataset[specificKey]\n }\n }\n for (const aliasKey of aliasKeys) {\n if (dataset?.[aliasKey] !== undefined) {\n return dataset[aliasKey]\n }\n }\n return undefined\n}\n\nexport function resolveDatasetEventValue(\n dataset: Record<string, any>,\n baseKey: string,\n event: any,\n): any {\n return resolveDatasetValueByBaseKey(dataset, baseKey, event)\n}\n\nfunction shouldUseDetailPayload(dataset: Record<string, any>, event: any): boolean {\n const flag = resolveDatasetEventValue(dataset, 'wvEventDetail', event)\n return flag === true || flag === 1 || flag === '1' || flag === 'true'\n}\n\nfunction resolveInlineEventArg(event: any, dataset: Record<string, any>): any {\n if (!shouldUseDetailPayload(dataset, event)) {\n return event\n }\n if (!event || typeof event !== 'object' || !('detail' in event)) {\n return undefined\n }\n return (event as any).detail\n}\n\nfunction getByPath(target: any, path: string) {\n if (!path) {\n return undefined\n }\n const segments = path.split('.').filter(Boolean)\n let current = isRef(target) ? target.value : target\n for (const segment of segments) {\n if (isRef(current)) {\n current = current.value\n }\n if (current == null) {\n return undefined\n }\n current = current[segment]\n }\n if (isRef(current)) {\n return current.value\n }\n return current\n}\n\nfunction normalizeResolvedScopeValue(value: any) {\n if (value == null || typeof value !== 'object') {\n return value\n }\n if (isRef(value) || isReactive(value)) {\n return value\n }\n try {\n return reactive(value)\n }\n catch {\n return value\n }\n}\n\nexport function runInlineExpression(\n ctx: any,\n expr: unknown,\n event: any,\n inlineMap?: InlineExpressionMap,\n) {\n const dataset = (event?.currentTarget as any)?.dataset ?? (event?.target as any)?.dataset ?? {}\n const inlineEvent = resolveInlineEventArg(event, dataset)\n const inlineId = resolveDatasetEventValue(dataset, 'wvInlineId', event)\n if (inlineId && inlineMap) {\n const entry = inlineMap[inlineId]\n if (entry && typeof entry.fn === 'function') {\n const scope: Record<string, any> = {}\n const keys = Array.isArray(entry.keys) ? entry.keys : []\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i]\n scope[key] = dataset?.[`wvS${i}`]\n }\n const indexKeys = Array.isArray(entry.indexKeys) ? entry.indexKeys : []\n for (let i = 0; i < indexKeys.length; i += 1) {\n const indexKey = indexKeys[i]\n const indexValue = normalizeDatasetIndex(dataset?.[`wvI${i}`])\n if (indexValue !== undefined) {\n scope[indexKey] = indexValue\n }\n }\n const scopeResolvers = Array.isArray(entry.scopeResolvers) ? entry.scopeResolvers : []\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i]\n const resolver = scopeResolvers[i]\n try {\n let resolved: any\n if (typeof resolver === 'function') {\n resolved = resolver(ctx, scope, inlineEvent)\n }\n else if (resolver && typeof resolver === 'object' && resolver.type === 'for-item') {\n const index = scope[resolver.indexKey]\n const list = getByPath(ctx, resolver.path)\n resolved = list?.[index]\n }\n else {\n continue\n }\n if (resolved !== undefined) {\n scope[key] = normalizeResolvedScopeValue(resolved)\n }\n }\n catch {\n // 解析失败时保持 dataset 快照回退。\n }\n }\n const result = entry.fn(ctx, scope, inlineEvent)\n if (typeof result === 'function') {\n return result.call(ctx, inlineEvent)\n }\n return result\n }\n }\n\n const datasetHandler = resolveDatasetEventValue(dataset, 'wvHandler', event)\n const handlerName = typeof expr === 'string' && expr\n ? expr\n : (typeof datasetHandler === 'string' ? datasetHandler : undefined)\n if (!handlerName) {\n return undefined\n }\n const argsRaw = resolveDatasetEventValue(dataset, 'wvArgs', event)\n let args: any[] = []\n if (Array.isArray(argsRaw)) {\n args = argsRaw\n }\n else if (typeof argsRaw === 'string') {\n try {\n args = JSON.parse(argsRaw)\n }\n catch {\n try {\n args = JSON.parse(decodeWxmlEntities(argsRaw))\n }\n catch {\n args = []\n }\n }\n }\n if (!Array.isArray(args)) {\n args = []\n }\n const resolvedArgs = args.map((item: any) => item === '$event' ? inlineEvent : item)\n const handler = (ctx as any)?.[handlerName]\n if (typeof handler === 'function') {\n return handler.apply(ctx, resolvedArgs)\n }\n return undefined\n}\n","import {\n WEVU_PAGE_LAYOUT_NAME_KEY,\n WEVU_PAGE_LAYOUT_NONE,\n WEVU_PAGE_LAYOUT_PROPS_KEY,\n WEVU_PAGE_LAYOUT_SETTER_KEY,\n} from '@weapp-core/constants'\nimport { reactive, readonly } from '../reactivity'\nimport { getCurrentInstance, getCurrentSetupContext } from './hooks'\nimport { getCurrentMiniProgramPages } from './platform'\nimport { getCurrentPageInstance } from './register/component/lifecycle/platform'\n\ntype PageLayoutSetter = (layout: string | false, props?: Record<string, any>) => void\n\nexport interface WevuPageLayoutMap {}\n\ntype ResolveTypedPageLayoutName = keyof WevuPageLayoutMap extends never\n ? string\n : Extract<keyof WevuPageLayoutMap, string>\n\ntype ResolveTypedPageLayoutProps<Name extends string> = Name extends keyof WevuPageLayoutMap\n ? WevuPageLayoutMap[Name]\n : Record<string, any>\n\ntype PageLayoutNamedState = {\n [Name in ResolveTypedPageLayoutName]: {\n name: Name\n props: ResolveTypedPageLayoutProps<Name>\n }\n}[ResolveTypedPageLayoutName]\n\nexport type PageLayoutState\n = | PageLayoutNamedState\n | {\n name: false\n props: Record<string, any>\n }\n | {\n name: undefined\n props: Record<string, any>\n }\n\ninterface MutablePageLayoutState {\n name: string | false | undefined\n props: Record<string, any>\n}\n\nfunction resolveCurrentPageInstance() {\n const runtimeCurrentPage = getCurrentPageInstance()\n if (runtimeCurrentPage) {\n return runtimeCurrentPage\n }\n const pages = getCurrentMiniProgramPages()\n return pages[pages.length - 1]\n}\n\nfunction normalizeRuntimePageLayoutName(layout: string | undefined) {\n return layout === WEVU_PAGE_LAYOUT_NONE ? false : layout\n}\n\n/**\n * 获取当前页面 layout 状态。\n */\nexport function usePageLayout(): Readonly<PageLayoutState> {\n if (!getCurrentSetupContext()) {\n throw new Error('usePageLayout() 必须在 setup() 的同步阶段调用')\n }\n\n const currentInstance = getCurrentInstance() as Record<string, any> | undefined\n const runtimeState = currentInstance?.__wevu?.state as Record<string, any> | undefined\n const pageLayoutState = reactive<MutablePageLayoutState>({\n name: normalizeRuntimePageLayoutName(runtimeState?.[WEVU_PAGE_LAYOUT_NAME_KEY]) as string | false | undefined,\n props: { ...(runtimeState?.[WEVU_PAGE_LAYOUT_PROPS_KEY] ?? {}) },\n })\n\n if (currentInstance) {\n currentInstance.__wevuPageLayoutState = pageLayoutState\n }\n\n return readonly(pageLayoutState) as Readonly<PageLayoutState>\n}\n\nexport function syncRuntimePageLayoutState(target: Record<string, any>, layout: string | false, props: Record<string, any>) {\n const state = target.__wevuPageLayoutState as MutablePageLayoutState | undefined\n if (!state) {\n return\n }\n state.name = layout\n state.props = { ...props }\n}\n\nexport function syncRuntimePageLayoutStateFromRuntime(target: Record<string, any>) {\n const state = target.__wevuPageLayoutState as MutablePageLayoutState | undefined\n const runtimeState = target.__wevu?.state as Record<string, any> | undefined\n if (!state || !runtimeState) {\n return\n }\n state.name = normalizeRuntimePageLayoutName(runtimeState[WEVU_PAGE_LAYOUT_NAME_KEY]) as string | false | undefined\n state.props = { ...(runtimeState[WEVU_PAGE_LAYOUT_PROPS_KEY] ?? {}) }\n}\n\nexport function setPageLayout(layout: false): void\nexport function setPageLayout<Name extends ResolveTypedPageLayoutName>(layout: Name, props?: ResolveTypedPageLayoutProps<Name>): void\n\n/**\n * 显式切换当前页面使用的 layout。\n */\nexport function setPageLayout(layout: string | false, props?: Record<string, any>): void {\n const currentInstance = getCurrentInstance() as Record<string, any> | undefined\n const directSetter = currentInstance?.[WEVU_PAGE_LAYOUT_SETTER_KEY] as PageLayoutSetter | undefined\n if (typeof directSetter === 'function') {\n directSetter(layout, props)\n return\n }\n\n const currentPage = resolveCurrentPageInstance()\n const pageSetter = currentPage?.[WEVU_PAGE_LAYOUT_SETTER_KEY] as PageLayoutSetter | undefined\n if (typeof pageSetter === 'function') {\n pageSetter(layout, props)\n return\n }\n\n throw new Error('setPageLayout() 未找到当前页面实例。请在页面 setup()、事件回调或当前页面上下文中调用。')\n}\n\nexport function resolveRuntimePageLayoutName(layout: string | false) {\n return layout === false ? WEVU_PAGE_LAYOUT_NONE : layout\n}\n","import type { ComponentPublicInstance, InternalRuntimeState, RuntimeInstance } from './types'\nimport {\n WEVU_GENERIC_SLOT_OWNER_ID_ATTR,\n WEVU_GENERIC_SLOT_OWNER_ID_PROP,\n WEVU_PROPS_KEY,\n WEVU_SLOT_OWNER_ID_KEY,\n WEVU_SLOT_OWNER_ID_PROP,\n} from '@weapp-core/constants'\nimport { toPlain } from './diff'\n\ntype OwnerSubscriber = (snapshot: Record<string, any>, proxy: ComponentPublicInstance<any, any, any> | undefined) => void\n\ninterface OwnerRecord {\n snapshot: Record<string, any>\n proxy?: ComponentPublicInstance<any, any, any>\n subscribers: Set<OwnerSubscriber>\n}\n\ntype RuntimeInstanceWithOwnerSnapshot = RuntimeInstance<any, any, any> & {\n __wevu_collectOwnerSnapshot?: () => Record<string, any>\n __wevu_cloneLatestSnapshot?: () => Record<string, any>\n}\n\nconst ownerStore = new Map<string, OwnerRecord>()\nlet ownerSeed = 0\nlet fallbackSlotOwnerId = ''\n\nexport function allocateOwnerId() {\n ownerSeed += 1\n return `wv${ownerSeed}`\n}\n\nexport function updateOwnerSnapshot(\n ownerId: string,\n snapshot: Record<string, any>,\n proxy: ComponentPublicInstance<any, any, any> | undefined,\n) {\n const record = ownerStore.get(ownerId) ?? { snapshot: {}, proxy, subscribers: new Set() }\n record.snapshot = snapshot\n record.proxy = proxy\n ownerStore.set(ownerId, record)\n if (record.subscribers.size) {\n for (const subscriber of record.subscribers) {\n try {\n subscriber(snapshot, proxy)\n }\n catch {\n // 忽略订阅回调错误\n }\n }\n }\n}\n\nexport function removeOwner(ownerId: string) {\n ownerStore.delete(ownerId)\n}\n\nexport function subscribeOwner(ownerId: string, subscriber: OwnerSubscriber) {\n const record = ownerStore.get(ownerId) ?? { snapshot: {}, proxy: undefined, subscribers: new Set() }\n record.subscribers.add(subscriber)\n ownerStore.set(ownerId, record)\n return () => {\n const current = ownerStore.get(ownerId)\n if (!current) {\n return\n }\n current.subscribers.delete(subscriber)\n }\n}\n\nexport function getOwnerProxy(ownerId: string) {\n return ownerStore.get(ownerId)?.proxy\n}\n\nexport function getOwnerSnapshot(ownerId: string) {\n return ownerStore.get(ownerId)?.snapshot\n}\n\nexport function rememberSlotOwnerId(ownerId: unknown) {\n if (typeof ownerId === 'string' && ownerId) {\n fallbackSlotOwnerId = ownerId\n }\n}\n\nexport function clearFallbackSlotOwnerId() {\n fallbackSlotOwnerId = ''\n}\n\nexport function getFallbackSlotOwnerId() {\n return fallbackSlotOwnerId\n}\n\nexport function resolveOwnerSnapshot(runtime: RuntimeInstance<any, any, any>, options: { full?: boolean } = {}) {\n const runtimeWithOwnerSnapshot = runtime as RuntimeInstanceWithOwnerSnapshot\n const snapshot = options.full && typeof runtimeWithOwnerSnapshot.__wevu_collectOwnerSnapshot === 'function'\n ? runtimeWithOwnerSnapshot.__wevu_collectOwnerSnapshot()\n : typeof runtimeWithOwnerSnapshot.__wevu_cloneLatestSnapshot === 'function'\n ? runtimeWithOwnerSnapshot.__wevu_cloneLatestSnapshot()\n : typeof runtime.snapshot === 'function'\n ? runtime.snapshot()\n : {}\n const proxy = runtime.proxy\n if (!proxy || typeof proxy !== 'object') {\n return snapshot\n }\n const seen = new WeakMap<object, any>()\n for (const key of Reflect.ownKeys(proxy)) {\n if (typeof key !== 'string') {\n continue\n }\n let value: unknown\n try {\n value = (proxy as any)[key]\n }\n catch {\n continue\n }\n if (typeof value === 'function') {\n continue\n }\n const plain = toPlain(value, seen)\n if (plain !== undefined) {\n snapshot[key] = plain\n }\n }\n return snapshot\n}\n\nexport function attachOwnerSnapshot(\n target: InternalRuntimeState,\n runtime: RuntimeInstance<any, any, any>,\n ownerId: string,\n) {\n try {\n ;(runtime.state as any)[WEVU_SLOT_OWNER_ID_KEY] = ownerId\n }\n catch {\n // 忽略写入异常\n }\n try {\n ;(target as any)[WEVU_SLOT_OWNER_ID_KEY] = ownerId\n }\n catch {\n // 忽略写入异常\n }\n const snapshot = resolveOwnerSnapshot(runtime, { full: true })\n const propsSource = (target as any)[WEVU_PROPS_KEY] ?? (target as any).properties\n if (propsSource && typeof propsSource === 'object') {\n for (const [key, value] of Object.entries(propsSource)) {\n snapshot[key] = value\n }\n rememberSlotOwnerId(\n (propsSource as any)[WEVU_SLOT_OWNER_ID_PROP]\n || (propsSource as any)[WEVU_GENERIC_SLOT_OWNER_ID_PROP]\n || (propsSource as any)[WEVU_GENERIC_SLOT_OWNER_ID_ATTR],\n )\n }\n updateOwnerSnapshot(ownerId, snapshot, runtime.proxy)\n}\n","import type { Ref } from '../../reactivity'\nimport type { TemplateRefBinding } from '../templateRefs'\nimport type {\n InternalRuntimeState,\n MiniProgramNodesRef,\n MiniProgramNodesRefFields,\n MiniProgramSelectorQuery,\n} from '../types'\nimport {\n WEVU_EXPOSED_KEY,\n WEVU_PUBLIC_RUNTIME_KEY,\n WEVU_TEMPLATE_REF_MAP_KEY,\n} from '@weapp-core/constants'\nimport { isRef } from '../../reactivity'\nimport { markNoSetData } from '../noSetData'\nimport { getCurrentMiniProgramRuntimeCapabilities, getMiniProgramGlobalObject, supportsCurrentMiniProgramRuntimeCapability } from '../platform'\n\ntype TemplateRefTarget\n = | { type: 'function', fn: (value: any) => void }\n | { type: 'ref', ref: Ref<any> }\n | { type: 'name', name: string }\n | { type: 'skip' }\n\nexport type TemplateRefMap = Map<string, Ref<any>>\n\nexport function isComponentRef(binding: TemplateRefBinding) {\n return binding.kind === 'component'\n}\n\nfunction proxyRefs<T extends Record<string, any>>(target: T): T {\n return new Proxy(target, {\n get(obj, key, receiver) {\n const value = Reflect.get(obj, key, receiver) as unknown\n return isRef(value) ? value.value : value\n },\n set(obj, key, value, receiver) {\n const current = (obj as any)[key]\n if (isRef(current) && !isRef(value)) {\n current.value = value\n return true\n }\n return Reflect.set(obj, key, value, receiver)\n },\n })\n}\n\nfunction getExposeProxy(target: any, exposed: Record<string, any>) {\n const existing = target.__wevuExposeProxy\n if (existing && target.__wevuExposeRaw === exposed) {\n return existing\n }\n const proxy = proxyRefs(exposed)\n try {\n Object.defineProperty(target, '__wevuExposeProxy', {\n value: proxy,\n configurable: true,\n enumerable: false,\n writable: false,\n })\n Object.defineProperty(target, '__wevuExposeRaw', {\n value: exposed,\n configurable: true,\n enumerable: false,\n writable: false,\n })\n }\n catch {\n target.__wevuExposeProxy = proxy\n target.__wevuExposeRaw = exposed\n }\n return proxy\n}\n\nfunction mergeComponentRefValue(\n wrapper: Record<string, any>,\n exposed: unknown,\n) {\n if (!exposed || typeof exposed !== 'object') {\n return wrapper\n }\n const source = exposed as Record<string, any>\n const merged = new Proxy(wrapper, {\n get(target, key, receiver) {\n if (Reflect.has(target, key)) {\n return Reflect.get(target, key, receiver)\n }\n const value = source[key as keyof typeof source]\n if (typeof value === 'function') {\n return value.bind(source)\n }\n return value\n },\n set(target, key, value, receiver) {\n if (Reflect.has(target, key)) {\n return Reflect.set(target, key, value, receiver)\n }\n if (key in source) {\n source[key as keyof typeof source] = value\n return true\n }\n source[key as keyof typeof source] = value\n return true\n },\n has(target, key) {\n return Reflect.has(target, key) || key in source\n },\n ownKeys(target) {\n return [...new Set([...Reflect.ownKeys(target), ...Reflect.ownKeys(source)])]\n },\n getOwnPropertyDescriptor(target, key) {\n if (Reflect.has(target, key)) {\n return Object.getOwnPropertyDescriptor(target, key)\n }\n const descriptor = Object.getOwnPropertyDescriptor(source, key)\n if (!descriptor) {\n return descriptor\n }\n return {\n ...descriptor,\n configurable: true,\n }\n },\n })\n return markNoSetData(merged)\n}\n\nfunction resolveComponentPublicInstance(value: any) {\n if (!value || typeof value !== 'object') {\n return value ?? null\n }\n const instance = value as any\n const exposed = instance[WEVU_EXPOSED_KEY]\n if (exposed && typeof exposed === 'object') {\n return getExposeProxy(instance, exposed as Record<string, any>)\n }\n if (instance[WEVU_PUBLIC_RUNTIME_KEY]?.proxy) {\n return instance[WEVU_PUBLIC_RUNTIME_KEY].proxy\n }\n return value\n}\n\nexport function getTemplateRefMap(target: InternalRuntimeState): TemplateRefMap | undefined {\n return (target as any)[WEVU_TEMPLATE_REF_MAP_KEY] as TemplateRefMap | undefined\n}\n\nexport function updateTemplateRefMapValue(\n refMap: TemplateRefMap | undefined,\n name: string,\n value: any,\n) {\n if (!refMap) {\n return\n }\n const entry = refMap.get(name)\n if (entry) {\n entry.value = value\n }\n}\n\nexport function resolveTemplateRefTarget(\n target: InternalRuntimeState,\n binding: TemplateRefBinding,\n): TemplateRefTarget {\n const proxy = target.__wevu?.proxy ?? target\n let resolved: unknown\n if (binding.get) {\n try {\n resolved = binding.get.call(proxy)\n }\n catch {\n resolved = undefined\n }\n }\n if (resolved == null && binding.name) {\n resolved = binding.name\n }\n if (typeof resolved === 'function') {\n return { type: 'function', fn: resolved as (value: any) => void }\n }\n if (isRef(resolved)) {\n return { type: 'ref', ref: resolved as Ref<any> }\n }\n if (typeof resolved === 'string' && resolved) {\n return { type: 'name', name: resolved }\n }\n if (binding.name) {\n return { type: 'name', name: binding.name }\n }\n return { type: 'skip' }\n}\n\nexport function ensureRefsContainer(target: InternalRuntimeState): Record<string, any> {\n const runtimeState = (target.__wevu?.state ?? target) as Record<string, any>\n const existing = runtimeState.$refs\n if (existing && typeof existing === 'object') {\n return existing as Record<string, any>\n }\n const refs = markNoSetData(Object.create(null))\n Object.defineProperty(runtimeState, '$refs', {\n value: refs,\n configurable: true,\n enumerable: false,\n writable: false,\n })\n return refs\n}\n\nexport function createSelectorQuery(target: InternalRuntimeState): MiniProgramSelectorQuery | null {\n const instance = target as any\n if (instance && typeof instance.createSelectorQuery === 'function') {\n return instance.createSelectorQuery()\n }\n if (!supportsCurrentMiniProgramRuntimeCapability('globalCreateSelectorQuery')) {\n return null\n }\n const miniProgramGlobal = getMiniProgramGlobalObject()\n if (miniProgramGlobal && typeof miniProgramGlobal.createSelectorQuery === 'function') {\n const query = miniProgramGlobal.createSelectorQuery()\n if (!query) {\n return null\n }\n if (getCurrentMiniProgramRuntimeCapabilities().selectorQueryScopeByIn && typeof (query as any).in === 'function') {\n return (query as any).in(instance)\n }\n return query\n }\n return null\n}\n\nfunction runQuery<T>(\n target: InternalRuntimeState,\n selector: string,\n options: { multiple: boolean, index?: number },\n apply: (nodesRef: MiniProgramNodesRef) => void,\n cb?: (value: T | null) => void,\n): Promise<T | null> {\n const query = createSelectorQuery(target)\n if (!query) {\n const fallback = null\n if (cb) {\n cb(fallback)\n }\n return Promise.resolve(fallback)\n }\n const nodesRef = options.multiple ? query.selectAll(selector) : query.select(selector)\n apply(nodesRef)\n return new Promise((resolve) => {\n query.exec((res) => {\n let result: any = Array.isArray(res) ? res[0] : null\n if (options.index != null && Array.isArray(result)) {\n result = result[options.index] ?? null\n }\n if (cb) {\n cb(result ?? null)\n }\n resolve(result ?? null)\n })\n })\n}\n\nfunction createTemplateRefWrapper(\n target: InternalRuntimeState,\n selector: string,\n options: { multiple: boolean, index?: number },\n) {\n const wrapper = {\n selector,\n boundingClientRect: (cb?: (value: any) => void) => {\n return runQuery(target, selector, options, ref => ref.boundingClientRect(), cb)\n },\n scrollOffset: (cb?: (value: any) => void) => {\n return runQuery(target, selector, options, ref => ref.scrollOffset(), cb)\n },\n fields: (fields: MiniProgramNodesRefFields, cb?: (value: any) => void) => {\n return runQuery(target, selector, options, ref => ref.fields(fields as any), cb)\n },\n node: (cb?: (value: any) => void) => {\n return runQuery(target, selector, options, ref => ref.node(), cb)\n },\n }\n return markNoSetData(wrapper)\n}\n\nexport function resolveComponentRefValue(\n target: InternalRuntimeState,\n binding: TemplateRefBinding,\n) {\n const instance = target as any\n if (!instance) {\n return binding.inFor ? markNoSetData([]) : null\n }\n if (binding.inFor) {\n if (typeof instance.selectAllComponents === 'function') {\n const result = instance.selectAllComponents(binding.selector)\n const items = Array.isArray(result) ? result : []\n const merged = items.map((item, index) => {\n const wrapper = createTemplateRefWrapper(target, binding.selector, { multiple: true, index })\n return mergeComponentRefValue(wrapper as Record<string, any>, resolveComponentPublicInstance(item))\n })\n return markNoSetData(merged)\n }\n return markNoSetData([])\n }\n const wrapper = createTemplateRefWrapper(target, binding.selector, { multiple: false })\n if (typeof instance.selectComponent !== 'function') {\n return wrapper\n }\n const result = instance.selectComponent(binding.selector)\n return mergeComponentRefValue(wrapper as Record<string, any>, resolveComponentPublicInstance(result))\n}\n\nexport function buildTemplateRefValue(\n target: InternalRuntimeState,\n binding: TemplateRefBinding,\n result: unknown,\n) {\n if (binding.inFor) {\n const items = Array.isArray(result) ? result : []\n const wrappers = items.map((_, index) => createTemplateRefWrapper(target, binding.selector, { multiple: true, index }))\n return markNoSetData(wrappers)\n }\n if (!result) {\n return null\n }\n return createTemplateRefWrapper(target, binding.selector, { multiple: false })\n}\n","import type { InternalRuntimeState } from './types'\nimport {\n WEVU_READY_CALLED_KEY,\n WEVU_TEMPLATE_REFS_CALLBACKS_KEY,\n WEVU_TEMPLATE_REFS_KEY,\n WEVU_TEMPLATE_REFS_PENDING_KEY,\n} from '@weapp-core/constants'\nimport { nextTick } from '../scheduler'\nimport { markNoSetData } from './noSetData'\nimport {\n buildTemplateRefValue,\n createSelectorQuery,\n ensureRefsContainer,\n getTemplateRefMap,\n isComponentRef,\n resolveComponentRefValue,\n resolveTemplateRefTarget,\n updateTemplateRefMapValue,\n} from './templateRefs/helpers'\n\nexport interface TemplateRefBinding {\n selector: string\n inFor: boolean\n name?: string\n get?: () => unknown\n kind?: 'component' | 'element'\n}\n\ntype TemplateRefUpdateCallback = () => void\n\nexport function updateTemplateRefs(target: InternalRuntimeState, onResolved?: TemplateRefUpdateCallback) {\n const bindings = (target as any)[WEVU_TEMPLATE_REFS_KEY] as TemplateRefBinding[] | undefined\n if (!bindings || !bindings.length) {\n onResolved?.()\n return\n }\n if (!(target as any)[WEVU_READY_CALLED_KEY]) {\n onResolved?.()\n return\n }\n if (!target.__wevu) {\n onResolved?.()\n return\n }\n const templateRefMap = getTemplateRefMap(target)\n const nodeBindings = bindings.filter(binding => !isComponentRef(binding))\n const componentEntries = bindings\n .filter(binding => isComponentRef(binding))\n .map(binding => ({\n binding,\n value: resolveComponentRefValue(target, binding),\n }))\n\n const applyEntries = (entries: Array<{ binding: TemplateRefBinding, value: any }>) => {\n const refsContainer = ensureRefsContainer(target)\n const nameEntries = new Map<string, { values: any[], count: number, hasFor: boolean }>()\n const nextNames = new Set<string>()\n const proxy = target.__wevu?.proxy ?? target\n entries.forEach((entry) => {\n const binding = entry.binding\n const value = entry.value\n const resolved = resolveTemplateRefTarget(target, binding)\n\n if (resolved.type === 'function') {\n if (binding.inFor && Array.isArray(value)) {\n if (value.length) {\n value.forEach(item => resolved.fn.call(proxy, item))\n }\n else {\n resolved.fn.call(proxy, null)\n }\n }\n else {\n resolved.fn.call(proxy, value ?? null)\n }\n return\n }\n\n if (resolved.type === 'ref') {\n resolved.ref.value = value\n return\n }\n\n if (resolved.type === 'name') {\n nextNames.add(resolved.name)\n const entry = nameEntries.get(resolved.name) ?? { values: [], count: 0, hasFor: false }\n entry.count += 1\n entry.hasFor = entry.hasFor || binding.inFor\n if (binding.inFor) {\n if (Array.isArray(value)) {\n entry.values.push(...value)\n }\n }\n else if (value != null) {\n entry.values.push(value)\n }\n nameEntries.set(resolved.name, entry)\n }\n })\n\n for (const [name, entry] of nameEntries) {\n let nextValue: any\n if (!entry.values.length) {\n nextValue = entry.hasFor ? markNoSetData([]) : null\n }\n else if (entry.hasFor || entry.values.length > 1 || entry.count > 1) {\n nextValue = markNoSetData(entry.values)\n }\n else {\n nextValue = entry.values[0]\n }\n refsContainer[name] = nextValue\n updateTemplateRefMapValue(templateRefMap, name, nextValue)\n }\n\n for (const key of Object.keys(refsContainer)) {\n if (!nextNames.has(key)) {\n delete refsContainer[key]\n }\n }\n\n onResolved?.()\n }\n\n if (!nodeBindings.length) {\n applyEntries(componentEntries)\n return\n }\n\n const query = createSelectorQuery(target)\n if (!query) {\n applyEntries(componentEntries)\n return\n }\n\n const nodeEntries: Array<{ binding: TemplateRefBinding }> = []\n for (const binding of nodeBindings) {\n const nodesRef = binding.inFor ? query.selectAll(binding.selector) : query.select(binding.selector)\n nodesRef.boundingClientRect()\n nodeEntries.push({ binding })\n }\n\n query.exec((res) => {\n const entries = nodeEntries.map((entry, index) => {\n const rawResult = Array.isArray(res) ? res[index] : null\n return {\n binding: entry.binding,\n value: buildTemplateRefValue(target, entry.binding, rawResult),\n }\n })\n applyEntries([...componentEntries, ...entries])\n })\n}\n\nexport function scheduleTemplateRefUpdate(target: InternalRuntimeState, onResolved?: TemplateRefUpdateCallback) {\n const bindings = (target as any)[WEVU_TEMPLATE_REFS_KEY] as TemplateRefBinding[] | undefined\n if (!bindings || !bindings.length) {\n onResolved?.()\n return\n }\n if (onResolved) {\n const callbacks = ((target as any)[WEVU_TEMPLATE_REFS_CALLBACKS_KEY] ?? []) as TemplateRefUpdateCallback[]\n callbacks.push(onResolved)\n if (!(target as any)[WEVU_TEMPLATE_REFS_CALLBACKS_KEY]) {\n Object.defineProperty(target, WEVU_TEMPLATE_REFS_CALLBACKS_KEY, {\n value: callbacks,\n configurable: true,\n enumerable: false,\n writable: true,\n })\n }\n }\n if ((target as any)[WEVU_TEMPLATE_REFS_PENDING_KEY]) {\n return\n }\n ;(target as any)[WEVU_TEMPLATE_REFS_PENDING_KEY] = true\n nextTick(() => {\n ;(target as any)[WEVU_TEMPLATE_REFS_PENDING_KEY] = false\n const flushCallbacks = () => {\n const callbacks = (target as any)[WEVU_TEMPLATE_REFS_CALLBACKS_KEY] as TemplateRefUpdateCallback[] | undefined\n if (!callbacks || !callbacks.length) {\n return\n }\n callbacks.splice(0).forEach((cb) => {\n try {\n cb()\n }\n catch {\n // 忽略回调中的异常,避免影响后续更新\n }\n })\n }\n updateTemplateRefs(target, flushCallbacks)\n })\n}\n\nexport function clearTemplateRefs(target: InternalRuntimeState) {\n const bindings = (target as any)[WEVU_TEMPLATE_REFS_KEY] as TemplateRefBinding[] | undefined\n if (!bindings || !bindings.length) {\n return\n }\n const refsContainer = ensureRefsContainer(target)\n const proxy = target.__wevu?.proxy ?? target\n const nextNames = new Set<string>()\n const templateRefMap = getTemplateRefMap(target)\n\n for (const binding of bindings) {\n const resolved = resolveTemplateRefTarget(target, binding)\n const emptyValue = binding.inFor ? markNoSetData([]) : null\n if (resolved.type === 'function') {\n resolved.fn.call(proxy, null)\n continue\n }\n if (resolved.type === 'ref') {\n resolved.ref.value = emptyValue\n continue\n }\n if (resolved.type === 'name') {\n nextNames.add(resolved.name)\n refsContainer[resolved.name] = emptyValue\n updateTemplateRefMapValue(templateRefMap, resolved.name, emptyValue)\n }\n }\n\n for (const key of Object.keys(refsContainer)) {\n if (!nextNames.has(key)) {\n delete refsContainer[key]\n }\n }\n}\n","import type { WatchStopHandle } from '../../../reactivity'\nimport type {\n InternalRuntimeState,\n MiniProgramAdapter,\n MiniProgramIntersectionObserverOptions,\n RuntimeInstance,\n SetupContextNativeInstance,\n TriggerEventOptions,\n} from '../../types'\nimport {\n WEVU_NATIVE_INSTANCE_KEY,\n WEVU_SETUP_CONTEXT_INSTANCE_KEY,\n WEVU_SLOT_NAMES_PROP,\n} from '@weapp-core/constants'\nimport { toRaw } from '../../../reactivity'\nimport { hasOwn } from '../../../utils'\nimport { isNativeBridgeMethod, markNativeBridgeMethod } from '../../nativeBridge'\nimport { markNoSetData } from '../../noSetData'\nimport { getCurrentMiniProgramRuntimeCapabilities, getMiniProgramGlobalObject, supportsCurrentMiniProgramRuntimeCapability } from '../../platform'\n\ntype AdapterWithSetData = Required<MiniProgramAdapter> & {\n __wevu_enableSetData?: () => void\n __wevu_setVisibility?: (visible: boolean) => void\n}\n\nexport type SetupInstanceMethodName = 'triggerEvent' | 'createSelectorQuery' | 'createIntersectionObserver' | 'setData' | 'setUpdatePerformanceListener'\n\nexport const setupInstanceMethodNames: SetupInstanceMethodName[] = [\n 'triggerEvent',\n 'createSelectorQuery',\n 'createIntersectionObserver',\n 'setData',\n 'setUpdatePerformanceListener',\n]\n\nexport function createSetupSlotsFallback() {\n return Object.freeze(Object.create(null)) as Record<string, never>\n}\n\nconst SLOT_RENDER_FN = () => []\n\nfunction normalizeSlotNames(value: unknown): string[] {\n if (Array.isArray(value)) {\n return [...new Set(value.filter((item): item is string => typeof item === 'string' && item.length > 0))]\n }\n if (!value || typeof value !== 'object') {\n return []\n }\n return Object.entries(value as Record<string, unknown>)\n .filter(([, enabled]) => Boolean(enabled))\n .map(([name]) => name)\n}\n\nexport function createSetupSlotsProxy(props: Record<string, any>) {\n if (!hasOwn(props, WEVU_SLOT_NAMES_PROP)) {\n return createSetupSlotsFallback()\n }\n\n const resolveNames = () => normalizeSlotNames(props[WEVU_SLOT_NAMES_PROP])\n const isEnabled = (key: PropertyKey) => typeof key === 'string' && resolveNames().includes(key)\n\n return new Proxy(Object.create(null), {\n get(_target, key) {\n if (isEnabled(key)) {\n return SLOT_RENDER_FN\n }\n return undefined\n },\n has(_target, key) {\n return isEnabled(key)\n },\n ownKeys() {\n return resolveNames()\n },\n getOwnPropertyDescriptor(_target, key) {\n if (!isEnabled(key)) {\n return undefined\n }\n return {\n configurable: true,\n enumerable: true,\n value: SLOT_RENDER_FN,\n }\n },\n set() {\n return false\n },\n deleteProperty() {\n return false\n },\n }) as Record<string, any>\n}\n\nexport function createNoopWatchStopHandle(): WatchStopHandle {\n const stopHandle = (() => {}) as WatchStopHandle\n stopHandle.stop = () => {}\n stopHandle.pause = () => {}\n stopHandle.resume = () => {}\n return stopHandle\n}\n\nexport function safeMarkNoSetData<T extends object>(value: T): T {\n try {\n return markNoSetData(value)\n }\n catch {\n return value\n }\n}\n\nfunction isTriggerEventOptions(value: unknown): value is TriggerEventOptions {\n if (!value || typeof value !== 'object' || Array.isArray(value)) {\n return false\n }\n return (\n hasOwn(value, 'bubbles')\n || hasOwn(value, 'composed')\n || hasOwn(value, 'capturePhase')\n )\n}\n\nexport function normalizeEmitPayload(args: any[]): { detail: any, options: TriggerEventOptions | undefined } {\n if (args.length === 0) {\n return {\n detail: undefined,\n options: undefined,\n }\n }\n\n if (args.length === 1) {\n return {\n detail: args[0],\n options: undefined,\n }\n }\n\n const maybeOptions = args[args.length - 1]\n if (isTriggerEventOptions(maybeOptions)) {\n const detailArgs = args.slice(0, -1)\n return {\n detail: detailArgs.length <= 1 ? detailArgs[0] : detailArgs,\n options: maybeOptions,\n }\n }\n\n return {\n detail: args,\n options: undefined,\n }\n}\n\nfunction resolveRuntimeNativeMethodOwner(\n runtime: RuntimeInstance<any, any, any>,\n target: InternalRuntimeState,\n methodName: SetupInstanceMethodName,\n) {\n const runtimeState = runtime?.state\n const runtimeRawState = runtimeState && typeof runtimeState === 'object'\n ? toRaw(runtimeState as any)\n : undefined\n const runtimeProxy = runtime?.proxy as object | undefined\n const isBridgeMethod = (candidate: object) => {\n const candidateMethod = (candidate as any)[methodName]\n if (typeof candidateMethod !== 'function') {\n return false\n }\n if (isNativeBridgeMethod(candidateMethod)) {\n return true\n }\n const targetMethod = (target as any)[methodName]\n return typeof targetMethod === 'function' && candidateMethod === targetMethod\n }\n const isValidNativeCandidate = (candidate: unknown) => {\n if (!candidate || typeof candidate !== 'object') {\n return false\n }\n if (candidate === target || candidate === runtimeProxy) {\n return false\n }\n if (isBridgeMethod(candidate)) {\n return false\n }\n return typeof (candidate as any)[methodName] === 'function'\n }\n const nativeFromState = runtimeRawState ? (runtimeRawState as any)[WEVU_NATIVE_INSTANCE_KEY] : undefined\n if (isValidNativeCandidate(nativeFromState)) {\n return nativeFromState as InternalRuntimeState\n }\n\n const runtimeInstance = (runtime as any)?.instance\n if (isValidNativeCandidate(runtimeInstance)) {\n return runtimeInstance as InternalRuntimeState\n }\n return undefined\n}\n\nfunction defineSetupInstanceMethod(\n target: Record<string, any>,\n methodName: SetupInstanceMethodName,\n handler: (...args: any[]) => any,\n) {\n markNativeBridgeMethod(handler)\n try {\n Object.defineProperty(target, methodName, {\n value: handler,\n configurable: true,\n enumerable: false,\n writable: true,\n })\n }\n catch {\n ;(target as any)[methodName] = handler\n }\n}\n\nexport function ensureSetupContextInstance(\n target: InternalRuntimeState,\n runtime: RuntimeInstance<any, any, any>,\n) {\n const maybeCached = (target as any)[WEVU_SETUP_CONTEXT_INSTANCE_KEY]\n if (maybeCached && typeof maybeCached === 'object') {\n return maybeCached as SetupContextNativeInstance\n }\n\n const setupInstanceBridge: Record<string, any> = Object.create(null)\n const resolveSetupBridgeOwner = (methodName: SetupInstanceMethodName) => {\n const owner = resolveRuntimeNativeMethodOwner(runtime, target, methodName)\n if (owner) {\n return owner\n }\n const fallbackMethod = (target as any)[methodName]\n if (typeof fallbackMethod === 'function' && !isNativeBridgeMethod(fallbackMethod)) {\n return target\n }\n return undefined\n }\n\n defineSetupInstanceMethod(setupInstanceBridge, 'triggerEvent', (...args: [string, any?, TriggerEventOptions?]) => {\n const [eventName, detail, options] = args\n const nativeOwner = resolveSetupBridgeOwner('triggerEvent')\n if (nativeOwner && typeof (nativeOwner as any).triggerEvent === 'function') {\n if (args.length >= 3) {\n ;(nativeOwner as any).triggerEvent(eventName, detail, options)\n }\n else {\n ;(nativeOwner as any).triggerEvent(eventName, detail)\n }\n }\n })\n\n defineSetupInstanceMethod(setupInstanceBridge, 'createSelectorQuery', () => {\n const nativeOwner = resolveSetupBridgeOwner('createSelectorQuery')\n if (nativeOwner && typeof (nativeOwner as any).createSelectorQuery === 'function') {\n return (nativeOwner as any).createSelectorQuery()\n }\n\n const miniProgramGlobal = getMiniProgramGlobalObject()\n if (\n !supportsCurrentMiniProgramRuntimeCapability('globalCreateSelectorQuery')\n || !miniProgramGlobal\n || typeof miniProgramGlobal.createSelectorQuery !== 'function'\n ) {\n return undefined\n }\n\n const query = miniProgramGlobal.createSelectorQuery()\n if (!query) {\n return query\n }\n if (\n !getCurrentMiniProgramRuntimeCapabilities().selectorQueryScopeByIn\n || typeof query.in !== 'function'\n ) {\n return query\n }\n\n const scopedOwner = resolveRuntimeNativeMethodOwner(runtime, target, 'setData') ?? target\n return query.in(scopedOwner as any)\n })\n\n defineSetupInstanceMethod(\n setupInstanceBridge,\n 'createIntersectionObserver',\n (options?: MiniProgramIntersectionObserverOptions) => {\n const nativeOwner = resolveSetupBridgeOwner('createIntersectionObserver')\n if (nativeOwner && typeof (nativeOwner as any).createIntersectionObserver === 'function') {\n return (nativeOwner as any).createIntersectionObserver(options ?? {})\n }\n\n const miniProgramGlobal = getMiniProgramGlobalObject()\n if (\n !supportsCurrentMiniProgramRuntimeCapability('globalCreateIntersectionObserver')\n || !miniProgramGlobal\n || typeof miniProgramGlobal.createIntersectionObserver !== 'function'\n ) {\n return undefined\n }\n\n const scopedOwner = resolveRuntimeNativeMethodOwner(runtime, target, 'setData') ?? target\n if (getCurrentMiniProgramRuntimeCapabilities().intersectionObserverScopeByParameter) {\n return miniProgramGlobal.createIntersectionObserver(scopedOwner as any, options ?? {})\n }\n return miniProgramGlobal.createIntersectionObserver(options ?? {})\n },\n )\n\n defineSetupInstanceMethod(setupInstanceBridge, 'setData', (payload: Record<string, any>, callback?: () => void) => {\n const nativeOwner = resolveSetupBridgeOwner('setData')\n if (nativeOwner && typeof (nativeOwner as any).setData === 'function') {\n return (nativeOwner as any).setData(payload, callback)\n }\n\n const adapter = runtime?.adapter as AdapterWithSetData | undefined\n const result = typeof adapter?.setData === 'function'\n ? adapter.setData(payload)\n : undefined\n if (typeof callback === 'function') {\n callback()\n }\n return result\n })\n\n defineSetupInstanceMethod(\n setupInstanceBridge,\n 'setUpdatePerformanceListener',\n (listener?: ((result: Record<string, any>) => void)) => {\n const nativeOwner = resolveSetupBridgeOwner('setUpdatePerformanceListener')\n if (nativeOwner && typeof (nativeOwner as any).setUpdatePerformanceListener === 'function') {\n return (nativeOwner as any).setUpdatePerformanceListener(listener)\n }\n return undefined\n },\n )\n\n const setupInstance = safeMarkNoSetData(new Proxy(setupInstanceBridge, {\n get(bridgeTarget, key, receiver) {\n if (Reflect.has(bridgeTarget, key)) {\n return Reflect.get(bridgeTarget, key, receiver)\n }\n const value = (target as any)[key as any]\n if (typeof value === 'function') {\n return value.bind(target)\n }\n return value\n },\n has(bridgeTarget, key) {\n return Reflect.has(bridgeTarget, key) || key in (target as any)\n },\n set(bridgeTarget, key, value) {\n if (Reflect.has(bridgeTarget, key)) {\n // 仅覆写 setup 暴露的 bridge 方法,避免回写原生实例引发递归调用。\n ;(bridgeTarget as any)[key as any] = value\n return true\n }\n ;(target as any)[key as any] = value\n return true\n },\n }) as SetupContextNativeInstance)\n\n try {\n Object.defineProperty(target as Record<string, any>, WEVU_SETUP_CONTEXT_INSTANCE_KEY, {\n value: setupInstance,\n configurable: true,\n enumerable: false,\n writable: true,\n })\n }\n catch {\n ;(target as any)[WEVU_SETUP_CONTEXT_INSTANCE_KEY] = setupInstance\n }\n\n return setupInstance\n}\n","import type { InternalRuntimeState, RuntimeInstance } from '../../types'\nimport type { SetupInstanceMethodName } from './setupContext'\nimport { WEVU_PUBLIC_RUNTIME_KEY } from '@weapp-core/constants'\nimport { setupInstanceMethodNames } from './setupContext'\n\nexport function bridgeRuntimeMethodsToTarget(\n target: InternalRuntimeState,\n runtime: RuntimeInstance<any, any, any>,\n) {\n try {\n const methods = (runtime.methods as unknown) as Record<string, any>\n for (const name of Object.keys(methods)) {\n if (setupInstanceMethodNames.includes(name as SetupInstanceMethodName)) {\n continue\n }\n if (typeof (target as any)[name] !== 'function') {\n ;(target as any)[name] = function bridged(this: any, ...args: any[]) {\n const runtime = this[WEVU_PUBLIC_RUNTIME_KEY]\n const bound = (runtime?.methods as any)?.[name]\n if (typeof bound === 'function') {\n return bound.apply(runtime.proxy, args)\n }\n }\n }\n }\n }\n catch {\n // 桥接过程中若发生错误(如目标被封装)则忽略,避免阻断后续流程\n }\n}\n","import type { InternalRuntimeState } from './types'\n\nexport type RuntimeLayoutComponentMatcher = (\n componentPath: string,\n target: InternalRuntimeState,\n) => boolean\n\nconst DEFAULT_LAYOUT_COMPONENT_PATH_PREFIX = 'layouts/'\n\nlet runtimeLayoutComponentMatcher: RuntimeLayoutComponentMatcher = componentPath =>\n componentPath.startsWith(DEFAULT_LAYOUT_COMPONENT_PATH_PREFIX)\n\n/**\n * 设置运行时 layout 组件判定器,供构建侧未来接入可配置 layout 输出路径。\n *\n * @internal\n */\nexport function setRuntimeLayoutComponentMatcher(matcher: RuntimeLayoutComponentMatcher | undefined) {\n runtimeLayoutComponentMatcher = matcher ?? (componentPath =>\n componentPath.startsWith(DEFAULT_LAYOUT_COMPONENT_PATH_PREFIX))\n}\n\nexport function isRuntimeLayoutComponentTarget(target: InternalRuntimeState): boolean {\n const componentPath = (target as any).is\n return typeof componentPath === 'string'\n && runtimeLayoutComponentMatcher(componentPath, target)\n}\n","import type { InternalRuntimeState, RuntimeApp } from '../../types'\nimport {\n WEVU_PARENT_INSTANCE_KEY,\n WEVU_RUNTIME_APP_KEY,\n} from '@weapp-core/constants'\nimport { isRuntimeLayoutComponentTarget } from '../../layoutComponentMatcher'\nimport { getCurrentMiniProgramPages } from '../../platform'\nimport { attachRuntimeLayoutProvideContext, attachRuntimeProvideContext } from '../../provideContext'\n\nfunction resolveRuntimeParentInstance(target: InternalRuntimeState): InternalRuntimeState | undefined {\n if (isRuntimeLayoutComponentTarget(target)) {\n return undefined\n }\n\n const cached = target[WEVU_PARENT_INSTANCE_KEY]\n if (cached && typeof cached === 'object') {\n return cached\n }\n\n const selectOwnerComponent = (target as any).selectOwnerComponent\n if (typeof selectOwnerComponent === 'function') {\n try {\n const owner = selectOwnerComponent.call(target) as InternalRuntimeState | undefined\n if (owner && owner !== target && typeof owner === 'object' && owner.__wevu) {\n return owner\n }\n }\n catch {\n // 部分宿主或生命周期阶段可能暂不支持 owner 查询,继续使用页面兜底。\n }\n }\n\n const pages = getCurrentMiniProgramPages()\n const currentPage = pages[pages.length - 1] as InternalRuntimeState | undefined\n if (\n currentPage\n && currentPage !== target\n && typeof currentPage === 'object'\n && currentPage.__wevu\n ) {\n return currentPage\n }\n\n return undefined\n}\n\nfunction attachRuntimeLayoutParentContext(target: InternalRuntimeState) {\n if (!isRuntimeLayoutComponentTarget(target)) {\n return\n }\n const pages = getCurrentMiniProgramPages()\n const currentPage = pages[pages.length - 1] as InternalRuntimeState | undefined\n if (\n currentPage\n && currentPage !== target\n && typeof currentPage === 'object'\n && currentPage.__wevu\n ) {\n attachRuntimeLayoutProvideContext(target, currentPage)\n }\n}\n\nexport function attachRuntimeProvideParentContext(\n target: InternalRuntimeState,\n runtimeApp: RuntimeApp<any, any, any>,\n) {\n target[WEVU_RUNTIME_APP_KEY] = runtimeApp\n attachRuntimeProvideContext(target, runtimeApp, resolveRuntimeParentInstance(target))\n attachRuntimeLayoutParentContext(target)\n}\n","type SetupRunner = {\n bivarianceHack: (props: Record<string, any>, ctx: any) => any\n}['bivarianceHack']\n\n/**\n * 执行 setup 函数并注入运行时上下文(框架内部使用)。\n * @internal\n */\nexport function runSetupFunction(\n setup: SetupRunner | undefined,\n props: Record<string, any>,\n context: any,\n): unknown\nexport function runSetupFunction(\n setup: SetupRunner | undefined,\n props: Record<string, any>,\n context: any,\n) {\n if (typeof setup !== 'function') {\n return undefined\n }\n const runtimeContext = context?.runtime ?? {\n methods: Object.create(null),\n state: {},\n proxy: {},\n watch: () => () => {},\n bindModel: () => {},\n }\n if (context) {\n context.runtime = runtimeContext\n }\n const finalContext = {\n ...(context ?? {}),\n runtime: runtimeContext,\n }\n return setup(props, finalContext)\n}\n","import type {\n ComponentPropsOptions,\n ComputedDefinitions,\n DefineAppOptions,\n DefineComponentOptions,\n InternalRuntimeState,\n MethodDefinitions,\n RuntimeInstance,\n} from '../../types'\nimport {\n WEVU_ATTRS_KEY,\n WEVU_EFFECT_SCOPE_KEY,\n WEVU_EXPOSED_KEY,\n WEVU_PROP_KEYS_KEY,\n WEVU_PROPS_KEY,\n} from '@weapp-core/constants'\nimport { effectScope, isReactive, shallowReactive, toRaw } from '../../../reactivity'\nimport { hasOwn } from '../../../utils'\nimport { setCurrentInstance, setCurrentSetupContext } from '../../hooks'\nimport { hasTrackableSetupBinding } from '../../setupTracking'\nimport { runSetupFunction } from '../setup'\nimport {\n createSetupSlotsProxy,\n ensureSetupContextInstance,\n normalizeEmitPayload,\n safeMarkNoSetData,\n} from './setupContext'\n\ntype RuntimeSetupFunction<\n D extends object,\n C extends ComputedDefinitions,\n M extends MethodDefinitions,\n> = DefineComponentOptions<ComponentPropsOptions, D, C, M>['setup']\n | DefineAppOptions<D, C, M>['setup']\n\nexport function runRuntimeSetupPhase<D extends object, C extends ComputedDefinitions, M extends MethodDefinitions>(options: {\n target: InternalRuntimeState\n runtime: RuntimeInstance<D, C, M>\n runtimeWithDefaults: RuntimeInstance<any, any, any>\n runtimeState: Record<string, any>\n runtimeProxy: Record<string, any>\n setup: RuntimeSetupFunction<D, C, M>\n syncRuntimeProps: (props: Record<string, any>, mpProperties: Record<string, any>) => void\n attachRuntimeProxyProps: (state: Record<string, any>, props: Record<string, any>) => void\n}) {\n const {\n target,\n runtime,\n runtimeWithDefaults,\n runtimeState,\n runtimeProxy,\n setup,\n syncRuntimeProps,\n attachRuntimeProxyProps,\n } = options\n\n // 从小程序 properties 提取 props 供 setup 使用,并复用 runtime state 上的 props 容器,\n // 避免 computed 首次求值早于 setup 时丢失依赖。\n const mpProperties = ((target as any).properties || {}) as Record<string, any>\n const runtimeProps = runtimeState && typeof runtimeState === 'object'\n ? ((runtimeState as any)[WEVU_PROPS_KEY] as Record<string, any> | undefined)\n : undefined\n const props = runtimeProps && typeof runtimeProps === 'object'\n ? runtimeProps\n : shallowReactive({}) as Record<string, any>\n syncRuntimeProps(props, mpProperties)\n if (runtimeState && typeof runtimeState === 'object') {\n attachRuntimeProxyProps(runtimeState as Record<string, any>, props)\n }\n try {\n Object.defineProperty(target, WEVU_PROPS_KEY, {\n value: props,\n configurable: true,\n enumerable: false,\n writable: false,\n })\n }\n catch {\n ;(target as any)[WEVU_PROPS_KEY] = props\n }\n\n // 与 Vue 3 对齐:attrs = 非 props 的 attributes。\n // 在小程序场景中,attrs 来源于 instance.properties 中“未声明在 props/properties 的字段”。\n const attrs = shallowReactive(Object.create(null)) as Record<string, any>\n const declaredPropKeys = new Set(\n Array.isArray((target as any)[WEVU_PROP_KEYS_KEY])\n ? ((target as any)[WEVU_PROP_KEYS_KEY] as string[])\n : [],\n )\n const hasRuntimeStateKey = (key: string) => {\n return runtimeState != null\n && typeof runtimeState === 'object'\n && hasOwn(runtimeState as Record<string, unknown>, key)\n }\n const syncAttrsFromProperties = () => {\n const next = ((target as any).properties && typeof (target as any).properties === 'object')\n ? ((target as any).properties as Record<string, unknown>)\n : undefined\n\n for (const existingKey of Object.keys(attrs)) {\n if (\n !next\n || !hasOwn(next, existingKey)\n || declaredPropKeys.has(existingKey)\n || hasRuntimeStateKey(existingKey)\n ) {\n delete attrs[existingKey]\n }\n }\n\n if (!next) {\n return\n }\n\n for (const [key, value] of Object.entries(next)) {\n if (declaredPropKeys.has(key) || hasRuntimeStateKey(key)) {\n continue\n }\n attrs[key] = value\n }\n }\n syncAttrsFromProperties()\n\n try {\n Object.defineProperty(target, WEVU_ATTRS_KEY, {\n value: attrs,\n configurable: true,\n enumerable: false,\n writable: false,\n })\n }\n catch {\n ;(target as any)[WEVU_ATTRS_KEY] = attrs\n }\n\n const setupInstance = ensureSetupContextInstance(target, runtimeWithDefaults)\n const slots = createSetupSlotsProxy(props)\n try {\n Object.defineProperty(runtimeState, '$slots', {\n value: slots,\n configurable: true,\n enumerable: false,\n writable: false,\n })\n }\n catch {\n ;(runtimeState as any).$slots = slots\n }\n\n const context = safeMarkNoSetData({\n // 与 Vue 3 对齐的 ctx.props\n props,\n\n // 现有运行时能力\n runtime: runtimeWithDefaults,\n state: runtimeState,\n proxy: runtimeProxy,\n bindModel: runtime.bindModel.bind(runtimeWithDefaults),\n watch: runtime.watch.bind(runtimeWithDefaults),\n instance: setupInstance,\n\n // 通过小程序 triggerEvent 派发事件,并兼容 Vue 3 的 emit(event, ...args) 形式。\n emit: (event: string, ...args: any[]) => {\n const { detail, options } = normalizeEmitPayload(args)\n setupInstance.triggerEvent(event, detail, options)\n },\n\n // 与 Vue 3 对齐的 expose\n expose: (exposed: Record<string, any>) => {\n target[WEVU_EXPOSED_KEY] = exposed\n },\n\n // 与 Vue 3 对齐的 attrs(小程序中为非 props 属性集合)\n attrs,\n\n // 与 Vue 3 对齐的 slots(由编译期传入的 slot 名元数据驱动)\n slots,\n }) as any\n\n // 仅在同步 setup 执行期间暴露 current instance\n const instanceScope = effectScope(true)\n target[WEVU_EFFECT_SCOPE_KEY] = instanceScope\n setCurrentInstance(target)\n setCurrentSetupContext(context)\n try {\n const result = instanceScope.run(() => runSetupFunction(setup, props, context))\n let methodsChanged = false\n if (result && typeof result === 'object') {\n const runtimeRawState = isReactive(runtime.state)\n ? toRaw(runtime.state)\n : runtime.state\n Object.keys(result).forEach((key) => {\n const val = (result as any)[key]\n if (typeof val === 'function') {\n ;(runtime.methods as any)[key] = (...args: any[]) => (val as any).apply((runtime as any).proxy, args)\n methodsChanged = true\n }\n else {\n if (hasTrackableSetupBinding(val)) {\n ;(runtime as any).__wevu_trackSetupReactiveKey?.(key)\n }\n if (declaredPropKeys.has(key)) {\n let fallbackValue = val\n try {\n Object.defineProperty(runtimeRawState as Record<string, unknown>, key, {\n configurable: true,\n enumerable: false,\n get() {\n const propsSource = (runtimeRawState as any)[WEVU_PROPS_KEY]\n if (propsSource && typeof propsSource === 'object' && hasOwn(propsSource, key)) {\n return (propsSource as any)[key]\n }\n return fallbackValue\n },\n set(next: unknown) {\n fallbackValue = next\n const propsSource = (runtimeRawState as any)[WEVU_PROPS_KEY]\n if (!propsSource || typeof propsSource !== 'object') {\n return\n }\n try {\n ;(propsSource as any)[key] = next\n }\n catch {\n // 忽略异常\n }\n },\n })\n }\n catch {\n ;(runtime.state as any)[key] = val\n }\n return\n }\n ;(runtime.state as any)[key] = val\n }\n })\n }\n if (methodsChanged) {\n ;(runtime as any).__wevu_touchSetupMethodsVersion?.()\n }\n }\n catch (error) {\n instanceScope.stop()\n target[WEVU_EFFECT_SCOPE_KEY] = undefined\n throw error\n }\n finally {\n setCurrentSetupContext(undefined)\n setCurrentInstance(undefined)\n }\n}\n","import type {\n InternalRuntimeState,\n MiniProgramAdapter,\n RuntimeInstance,\n SetupContextNativeInstance,\n} from '../../types'\nimport {\n WEVU_NATIVE_INSTANCE_KEY,\n WEVU_PROPS_KEY,\n WEVU_RUNTIME_KEY,\n WEVU_SETUP_CONTEXT_INSTANCE_KEY,\n} from '@weapp-core/constants'\nimport { hasOwn } from '../../../utils'\nimport { isNativeBridgeMethod } from '../../nativeBridge'\n\nexport type AdapterWithSetData = Required<MiniProgramAdapter> & {\n __wevu_enableSetData?: () => void\n __wevu_setVisibility?: (visible: boolean) => void\n}\n\nexport type NativeSetData = (payload: Record<string, any>) => void | Promise<void> | undefined\n\nexport function attachRuntimeProxyProps(state: Record<string, any>, props: Record<string, any>) {\n try {\n Object.defineProperty(state, WEVU_PROPS_KEY, {\n value: props,\n configurable: true,\n enumerable: false,\n writable: false,\n })\n }\n catch {\n ;(state as any)[WEVU_PROPS_KEY] = props\n }\n}\n\nexport function attachNativeInstanceRef(state: Record<string, any>, instance: InternalRuntimeState) {\n try {\n Object.defineProperty(state, WEVU_NATIVE_INSTANCE_KEY, {\n value: instance,\n configurable: true,\n enumerable: false,\n writable: true,\n })\n }\n catch {\n ;(state as any)[WEVU_NATIVE_INSTANCE_KEY] = instance\n }\n}\n\nexport function attachRuntimeRef(state: Record<string, any>, runtime: RuntimeInstance<any, any, any>) {\n try {\n Object.defineProperty(state, WEVU_RUNTIME_KEY, {\n value: runtime,\n configurable: true,\n enumerable: false,\n writable: true,\n })\n }\n catch {\n ;(state as any)[WEVU_RUNTIME_KEY] = runtime\n }\n}\n\nexport function attachRuntimeInstance(runtime: RuntimeInstance<any, any, any>, instance: InternalRuntimeState) {\n try {\n Object.defineProperty(runtime as Record<string, any>, 'instance', {\n value: instance,\n configurable: true,\n enumerable: false,\n writable: true,\n })\n }\n catch {\n try {\n ;(runtime as Record<string, any>).instance = instance\n }\n catch {\n // 忽略冻结对象写入失败\n }\n }\n}\n\nexport function resolveNativeSetData(instance: InternalRuntimeState) {\n const setupInstance = (instance as any)[WEVU_SETUP_CONTEXT_INSTANCE_KEY] as SetupContextNativeInstance | undefined\n const setupOverride = setupInstance && typeof setupInstance.setData === 'function'\n ? setupInstance.setData\n : undefined\n if (typeof setupOverride === 'function' && !isNativeBridgeMethod(setupOverride)) {\n return setupOverride as NativeSetData\n }\n\n const candidate = (instance as any).setData\n if (typeof candidate !== 'function') {\n return undefined\n }\n if (isNativeBridgeMethod(candidate)) {\n return undefined\n }\n return candidate as NativeSetData\n}\n\nfunction getRuntimeOwnerLabel(instance: InternalRuntimeState) {\n const route = (instance as any).route\n if (typeof route === 'string' && route) {\n return route\n }\n const is = (instance as any).is\n if (typeof is === 'string' && is) {\n return is\n }\n return 'unknown'\n}\n\nexport function callNativeSetData(\n instance: InternalRuntimeState,\n setData: NativeSetData,\n payload: Record<string, any>,\n) {\n try {\n return setData.call(instance, payload)\n }\n catch (error) {\n const owner = getRuntimeOwnerLabel(instance)\n throw new Error(`[wevu] setData failed (${owner}): ${error instanceof Error ? error.message : String(error)}`)\n }\n}\n\nexport function syncRuntimeProps(props: Record<string, any>, mpProperties: Record<string, any>) {\n const currentKeys = Object.keys(props)\n for (const key of currentKeys) {\n if (!hasOwn(mpProperties, key)) {\n try {\n delete props[key]\n }\n catch {\n // 忽略异常\n }\n }\n }\n for (const [key, value] of Object.entries(mpProperties)) {\n props[key] = value\n }\n}\n","import type { SetDataSnapshotOptions } from '../types'\nimport { getCurrentMiniProgramHostConfig, getMiniProgramGlobalObject } from '../platform'\n\ninterface ResolvedHighFrequencyWarningOptions {\n enabled: boolean\n devOnly: boolean\n sampleWindowMs: number\n maxCalls: number\n coolDownMs: number\n warnOnPageScroll: boolean\n pageScrollCoolDownMs: number\n}\n\ninterface CreateHighFrequencyWarningMonitorOptions {\n option: SetDataSnapshotOptions['highFrequencyWarning']\n targetLabel: string\n isInPageScrollHook?: () => boolean\n now?: () => number\n logger?: (message: string) => void\n}\n\nfunction isObject(value: unknown): value is Record<string, any> {\n return !!value && typeof value === 'object' && !Array.isArray(value)\n}\n\n/**\n * 解析 setData 高频告警配置。\n */\nexport function resolveHighFrequencyWarningOptions(\n option: SetDataSnapshotOptions['highFrequencyWarning'],\n): ResolvedHighFrequencyWarningOptions {\n const defaults = {\n devOnly: true,\n sampleWindowMs: 1000,\n maxCalls: 30,\n coolDownMs: 5000,\n warnOnPageScroll: true,\n pageScrollCoolDownMs: 2000,\n }\n\n if (option === undefined || option === false) {\n return {\n ...defaults,\n enabled: false,\n }\n }\n if (option === true) {\n return {\n ...defaults,\n enabled: true,\n }\n }\n if (!isObject(option)) {\n return {\n ...defaults,\n enabled: false,\n }\n }\n return {\n enabled: option.enabled ?? true,\n devOnly: option.devOnly ?? defaults.devOnly,\n sampleWindowMs: typeof option.sampleWindowMs === 'number'\n ? Math.max(100, Math.floor(option.sampleWindowMs))\n : defaults.sampleWindowMs,\n maxCalls: typeof option.maxCalls === 'number'\n ? Math.max(1, Math.floor(option.maxCalls))\n : defaults.maxCalls,\n coolDownMs: typeof option.coolDownMs === 'number'\n ? Math.max(0, Math.floor(option.coolDownMs))\n : defaults.coolDownMs,\n warnOnPageScroll: option.warnOnPageScroll ?? defaults.warnOnPageScroll,\n pageScrollCoolDownMs: typeof option.pageScrollCoolDownMs === 'number'\n ? Math.max(0, Math.floor(option.pageScrollCoolDownMs))\n : defaults.pageScrollCoolDownMs,\n }\n}\n\n/**\n * 判断当前是否为开发态运行环境。\n */\nexport function isDevelopmentRuntime(): boolean {\n const miniProgramHostConfig = getCurrentMiniProgramHostConfig()\n if (miniProgramHostConfig?.debug === true || miniProgramHostConfig?.envVersion === 'develop') {\n return true\n }\n\n const miniProgramGlobal = getMiniProgramGlobalObject()\n try {\n const envVersion = miniProgramGlobal?.getAccountInfoSync?.()?.miniProgram?.envVersion\n if (envVersion === 'develop') {\n return true\n }\n }\n catch {\n // 忽略运行环境不支持 getAccountInfoSync 的异常\n }\n\n return false\n}\n\n/**\n * 创建 setData 高频调用告警监视器。\n */\nexport function createSetDataHighFrequencyWarningMonitor(\n options: CreateHighFrequencyWarningMonitorOptions,\n) {\n const resolved = resolveHighFrequencyWarningOptions(options.option)\n if (!resolved.enabled) {\n return undefined\n }\n\n const isDev = isDevelopmentRuntime()\n if (resolved.devOnly && !isDev) {\n return undefined\n }\n\n const now = options.now ?? (() => Date.now())\n const logger = options.logger ?? ((message: string) => {\n const runtimeConsoleWarn = (globalThis as Record<string, any>)?.console?.warn\n if (typeof runtimeConsoleWarn === 'function') {\n runtimeConsoleWarn(message)\n }\n })\n\n const callTimes: number[] = []\n let lastWarnAt = Number.NEGATIVE_INFINITY\n let lastPageScrollWarnAt = Number.NEGATIVE_INFINITY\n\n return () => {\n const current = now()\n callTimes.push(current)\n\n const windowStart = current - resolved.sampleWindowMs\n while (callTimes.length > 0 && callTimes[0] < windowStart) {\n callTimes.shift()\n }\n\n const inPageScrollHook = options.isInPageScrollHook?.() ?? false\n if (resolved.warnOnPageScroll && inPageScrollHook) {\n if (resolved.pageScrollCoolDownMs <= 0 || current - lastPageScrollWarnAt >= resolved.pageScrollCoolDownMs) {\n lastPageScrollWarnAt = current\n logger(\n `[wevu:setData] 检测到 onPageScroll 回调内调用 setData(${options.targetLabel})。建议改用 IntersectionObserver 监听可见性,或对滚动更新做节流。`,\n )\n }\n }\n\n if (callTimes.length <= resolved.maxCalls) {\n return\n }\n if (resolved.coolDownMs > 0 && current - lastWarnAt < resolved.coolDownMs) {\n return\n }\n lastWarnAt = current\n\n logger(\n `[wevu:setData] 检测到高频 setData 调用:${callTimes.length} 次/${resolved.sampleWindowMs}ms(${options.targetLabel})。建议合并更新或降低调用频率。`,\n )\n }\n}\n","import type { WatchStopHandle } from '../../reactivity'\nimport type {\n ComponentPublicInstance,\n InternalRuntimeState,\n RuntimeInstance,\n} from '../types'\n\ntype WatchHandler = (this: any, value: any, oldValue: any) => void\nexport type WatchDescriptor = WatchHandler | string | {\n handler: WatchHandler | string\n immediate?: boolean\n deep?: boolean\n}\nexport type WatchMap = Record<string, WatchDescriptor>\n\nexport function normalizeWatchDescriptor(\n descriptor: WatchDescriptor,\n runtime: RuntimeInstance<any, any, any>,\n instance: InternalRuntimeState,\n): { handler: WatchHandler, options: any } | undefined {\n if (typeof descriptor === 'function') {\n return {\n handler: descriptor.bind(runtime.proxy),\n options: {},\n }\n }\n\n if (typeof descriptor === 'string') {\n const method = (runtime.methods as any)?.[descriptor] ?? (instance as any)[descriptor]\n if (typeof method === 'function') {\n return {\n handler: method.bind(runtime.proxy),\n options: {},\n }\n }\n return undefined\n }\n\n if (!descriptor || typeof descriptor !== 'object') {\n return undefined\n }\n\n const base = normalizeWatchDescriptor((descriptor as any).handler, runtime, instance)\n if (!base) {\n return undefined\n }\n\n const options: any = {\n ...base.options,\n }\n\n if ((descriptor as any).immediate !== undefined) {\n options.immediate = (descriptor as any).immediate\n }\n if ((descriptor as any).deep !== undefined) {\n options.deep = (descriptor as any).deep\n }\n\n return {\n handler: base.handler,\n options,\n }\n}\n\nexport function createPathGetter(target: ComponentPublicInstance<any, any, any>, path: string) {\n const segments = path.split('.').map(segment => segment.trim()).filter(Boolean)\n if (!segments.length) {\n return () => target\n }\n\n return () => {\n let current: any = target\n for (const segment of segments) {\n if (current == null) {\n return current\n }\n current = current[segment]\n }\n return current\n }\n}\n\nexport function registerWatches(\n runtime: RuntimeInstance<any, any, any>,\n watchMap: WatchMap,\n instance: InternalRuntimeState,\n) {\n const stops: WatchStopHandle[] = []\n const proxy = runtime.proxy\n\n for (const [expression, descriptor] of Object.entries(watchMap)) {\n const normalized = normalizeWatchDescriptor(descriptor as any, runtime, instance)\n if (!normalized) {\n continue\n }\n const getter = createPathGetter(proxy, expression)\n const stopHandle = runtime.watch(getter, normalized.handler, normalized.options)\n stops.push(stopHandle)\n }\n\n return stops\n}\n","import type {\n ComponentPropsOptions,\n ComputedDefinitions,\n DefineAppOptions,\n DefineComponentOptions,\n InternalRuntimeState,\n MethodDefinitions,\n RuntimeApp,\n RuntimeInstance,\n} from '../types'\nimport type { AdapterWithSetData } from './runtimeInstance/utils'\nimport type { WatchMap } from './watch'\nimport {\n WEVU_EFFECT_SCOPE_KEY,\n WEVU_GENERIC_SLOT_OWNER_ID_ATTR,\n WEVU_GENERIC_SLOT_OWNER_ID_PROP,\n WEVU_HOOKS_KEY,\n WEVU_PAGE_LAYOUT_NAME_KEY,\n WEVU_PAGE_LAYOUT_PROPS_KEY,\n WEVU_PAGE_LAYOUT_SETTER_KEY,\n WEVU_PAGE_SCROLL_HOOK_DEPTH_KEY,\n WEVU_PROPS_KEY,\n WEVU_PUBLIC_RUNTIME_KEY,\n WEVU_SLOT_OWNER_ID_KEY,\n WEVU_SLOT_OWNER_ID_PROP,\n WEVU_WATCH_STOPS_KEY,\n} from '@weapp-core/constants'\nimport { hasOwn } from '../../utils'\nimport { callHookList } from '../hooks'\nimport { resolveRuntimePageLayoutName, syncRuntimePageLayoutState } from '../pageLayout'\nimport { allocateOwnerId, attachOwnerSnapshot, rememberSlotOwnerId, removeOwner, resolveOwnerSnapshot, updateOwnerSnapshot } from '../scopedSlots'\nimport { clearTemplateRefs, scheduleTemplateRefUpdate } from '../templateRefs'\nimport { bridgeRuntimeMethodsToTarget } from './runtimeInstance/methodBridge'\nimport { attachRuntimeProvideParentContext } from './runtimeInstance/provideContext'\nimport {\n createNoopWatchStopHandle,\n safeMarkNoSetData,\n} from './runtimeInstance/setupContext'\nimport { runRuntimeSetupPhase } from './runtimeInstance/setupPhase'\nimport {\n\n attachNativeInstanceRef,\n attachRuntimeInstance,\n attachRuntimeProxyProps,\n attachRuntimeRef,\n callNativeSetData,\n resolveNativeSetData,\n syncRuntimeProps,\n} from './runtimeInstance/utils'\nimport { createSetDataHighFrequencyWarningMonitor } from './setDataFrequencyWarning'\nimport { registerWatches } from './watch'\n\ntype RuntimeSetupFunction<\n D extends object,\n C extends ComputedDefinitions,\n M extends MethodDefinitions,\n> = DefineComponentOptions<ComponentPropsOptions, D, C, M>['setup']\n | DefineAppOptions<D, C, M>['setup']\n\ntype RuntimeInstanceWithSyncFlush<\n D extends object,\n C extends ComputedDefinitions,\n M extends MethodDefinitions,\n> = RuntimeInstance<D, C, M> & {\n __wevu_flushSetupSnapshotSync?: () => void\n __wevu_touchSetupMethodsVersion?: () => void\n __wevu_collectOwnerSnapshot?: () => Record<string, any>\n __wevu_cloneLatestSnapshot?: () => Record<string, any>\n __wevu_trackSetupReactiveKey?: (key: string) => void\n}\n\nfunction attachPageLayoutSetter(target: InternalRuntimeState) {\n if (typeof (target as any).route !== 'string' || !(target as any).route) {\n return\n }\n\n target[WEVU_PAGE_LAYOUT_SETTER_KEY] = (layout: string | false, props?: Record<string, any>) => {\n const runtimeState = target.__wevu?.state as Record<string, any> | undefined\n if (!runtimeState || typeof runtimeState !== 'object') {\n return\n }\n\n runtimeState[WEVU_PAGE_LAYOUT_NAME_KEY] = resolveRuntimePageLayoutName(layout)\n const nextProps = layout === false ? {} : (props ?? {})\n runtimeState[WEVU_PAGE_LAYOUT_PROPS_KEY] = nextProps\n syncRuntimePageLayoutState(target as Record<string, any>, layout, nextProps)\n }\n}\n\n/**\n * 挂载运行时实例(框架内部注册流程使用)。\n * @internal\n */\nexport function mountRuntimeInstance<D extends object, C extends ComputedDefinitions, M extends MethodDefinitions>(\n target: InternalRuntimeState,\n runtimeApp: RuntimeApp<D, C, M>,\n watchMap: WatchMap | undefined,\n setup?: RuntimeSetupFunction<D, C, M>,\n options?: { deferSetData?: boolean },\n) {\n if (target.__wevu) {\n return target.__wevu as RuntimeInstance<D, C, M>\n }\n attachRuntimeProvideParentContext(target, runtimeApp as RuntimeApp<any, any, any>)\n safeMarkNoSetData(target)\n const ownerId = allocateOwnerId()\n const suspendWhenHidden = Boolean((runtimeApp as any)?.__wevuSetDataOptions?.suspendWhenHidden)\n const targetLabel = typeof (target as any).route === 'string' && (target as any).route\n ? `page:${(target as any).route}`\n : typeof (target as any).is === 'string' && (target as any).is\n ? `component:${(target as any).is}`\n : 'unknown-target'\n const highFrequencyWarning = createSetDataHighFrequencyWarningMonitor({\n option: (runtimeApp as any)?.__wevuSetDataOptions?.highFrequencyWarning,\n targetLabel,\n isInPageScrollHook: () => Number((target as any)[WEVU_PAGE_SCROLL_HOOK_DEPTH_KEY] ?? 0) > 0,\n })\n const createDeferredAdapter = (instance: InternalRuntimeState): AdapterWithSetData => {\n let pending: Record<string, any> | undefined\n let enabled = false\n const adapter: AdapterWithSetData = {\n setData(payload: Record<string, any>) {\n if (!enabled) {\n pending = {\n ...(pending ?? {}),\n ...payload,\n }\n return undefined\n }\n const setData = resolveNativeSetData(instance)\n if (setData) {\n return callNativeSetData(instance, setData, payload)\n }\n return undefined\n },\n }\n adapter.__wevu_enableSetData = () => {\n enabled = true\n const setData = resolveNativeSetData(instance)\n if (pending && Object.keys(pending).length && setData) {\n const payload = pending\n pending = undefined\n callNativeSetData(instance, setData, payload)\n }\n }\n return adapter\n }\n\n const baseAdapter: AdapterWithSetData = options?.deferSetData\n ? createDeferredAdapter(target)\n : {\n setData(payload: Record<string, any>) {\n const setData = resolveNativeSetData(target)\n if (setData) {\n return callNativeSetData(target, setData, payload)\n }\n return undefined\n },\n }\n let runtimeRef: RuntimeInstance<any, any, any> | undefined\n let visible = true\n let hiddenPendingPayload: Record<string, any> | undefined\n\n const mergePendingPayload = (pending: Record<string, any> | undefined, payload: Record<string, any>) => ({\n ...(pending ?? {}),\n ...payload,\n })\n const refreshOwnerSnapshot = () => {\n if (!runtimeRef) {\n return\n }\n const snapshot = (runtimeRef as RuntimeInstanceWithSyncFlush<D, C, M>).__wevu_cloneLatestSnapshot?.()\n ?? resolveOwnerSnapshot(runtimeRef)\n const propsSource = (target as any)[WEVU_PROPS_KEY] ?? (target as any).properties\n if (propsSource && typeof propsSource === 'object') {\n for (const [key, value] of Object.entries(propsSource)) {\n snapshot[key] = value\n }\n rememberSlotOwnerId(\n (propsSource as any)[WEVU_SLOT_OWNER_ID_PROP]\n || (propsSource as any)[WEVU_GENERIC_SLOT_OWNER_ID_PROP]\n || (propsSource as any)[WEVU_GENERIC_SLOT_OWNER_ID_ATTR],\n )\n }\n updateOwnerSnapshot(ownerId, snapshot, runtimeRef.proxy)\n }\n const refreshFullOwnerSnapshot = () => {\n if (!runtimeRef) {\n return\n }\n const snapshot = resolveOwnerSnapshot(runtimeRef, { full: true })\n const propsSource = (target as any)[WEVU_PROPS_KEY] ?? (target as any).properties\n if (propsSource && typeof propsSource === 'object') {\n for (const [key, value] of Object.entries(propsSource)) {\n snapshot[key] = value\n }\n rememberSlotOwnerId(\n (propsSource as any)[WEVU_SLOT_OWNER_ID_PROP]\n || (propsSource as any)[WEVU_GENERIC_SLOT_OWNER_ID_PROP]\n || (propsSource as any)[WEVU_GENERIC_SLOT_OWNER_ID_ATTR],\n )\n }\n updateOwnerSnapshot(ownerId, snapshot, runtimeRef.proxy)\n }\n const adapter: AdapterWithSetData = {\n ...(baseAdapter as any),\n setData(payload: Record<string, any>) {\n highFrequencyWarning?.()\n if (suspendWhenHidden && !visible) {\n hiddenPendingPayload = mergePendingPayload(hiddenPendingPayload, payload)\n refreshOwnerSnapshot()\n scheduleTemplateRefUpdate(target)\n return undefined\n }\n const result = baseAdapter.setData(payload)\n refreshOwnerSnapshot()\n scheduleTemplateRefUpdate(target)\n return result\n },\n __wevu_setVisibility(nextVisible: boolean) {\n visible = nextVisible\n if (!visible || !hiddenPendingPayload) {\n return undefined\n }\n const payload = hiddenPendingPayload\n hiddenPendingPayload = undefined\n const result = baseAdapter.setData(payload)\n refreshOwnerSnapshot()\n scheduleTemplateRefUpdate(target)\n return result\n },\n }\n\n const runtime = runtimeApp.mount({\n ...(adapter as any),\n })\n runtimeRef = runtime\n attachRuntimeInstance(runtime as RuntimeInstance<any, any, any>, target)\n const runtimeProxy = runtime?.proxy ?? {}\n const runtimeState = runtime?.state ?? {}\n if (runtimeState && typeof runtimeState === 'object') {\n attachRuntimeRef(runtimeState as Record<string, any>, runtime)\n attachNativeInstanceRef(runtimeState as Record<string, any>, target)\n }\n const runtimeComputed = (runtime as any)?.computed ?? Object.create(null)\n // 防护:适配器可能返回不完整的 runtime(或被插件篡改),此处兜底补齐\n if (!runtime?.methods) {\n try {\n ;(runtime as any).methods = Object.create(null)\n }\n catch {\n // 若对象只读则忽略,后续将使用兜底 runtimeMethods\n }\n }\n const runtimeMethods = runtime?.methods ?? Object.create(null)\n const runtimeWatch = (runtime as any)?.watch ?? (() => createNoopWatchStopHandle())\n const runtimeBindModel = (runtime as any)?.bindModel ?? (() => {})\n const runtimeWithDefaults = {\n ...(runtime ?? {}),\n state: runtimeState,\n proxy: runtimeProxy,\n methods: runtimeMethods,\n computed: runtimeComputed,\n watch: runtimeWatch,\n bindModel: runtimeBindModel,\n snapshot: (runtime as any)?.snapshot ?? (() => Object.create(null)),\n unmount: (runtime as any)?.unmount ?? (() => {}),\n } satisfies RuntimeInstance<any, any, any>\n const runtimeWithSyncFlush = runtimeWithDefaults as RuntimeInstanceWithSyncFlush<D, C, M>\n const internalRuntimeFields = {\n __wevu_flushSetupSnapshotSync: (runtime as RuntimeInstanceWithSyncFlush<D, C, M>).__wevu_flushSetupSnapshotSync,\n __wevu_touchSetupMethodsVersion: (runtime as RuntimeInstanceWithSyncFlush<D, C, M>).__wevu_touchSetupMethodsVersion,\n __wevu_collectOwnerSnapshot: (runtime as RuntimeInstanceWithSyncFlush<D, C, M>).__wevu_collectOwnerSnapshot,\n __wevu_cloneLatestSnapshot: (runtime as RuntimeInstanceWithSyncFlush<D, C, M>).__wevu_cloneLatestSnapshot,\n __wevu_trackSetupReactiveKey: (runtime as RuntimeInstanceWithSyncFlush<D, C, M>).__wevu_trackSetupReactiveKey,\n }\n for (const [key, value] of Object.entries(internalRuntimeFields)) {\n if (!value) {\n continue\n }\n Object.defineProperty(runtimeWithDefaults, key, {\n configurable: true,\n enumerable: false,\n value,\n writable: true,\n })\n }\n\n Object.defineProperty(target, WEVU_PUBLIC_RUNTIME_KEY, {\n value: runtimeWithDefaults,\n configurable: true,\n enumerable: false,\n writable: false,\n })\n target.__wevu = runtimeWithDefaults\n attachPageLayoutSetter(target)\n\n attachOwnerSnapshot(target, runtimeWithDefaults as any, ownerId)\n\n if (watchMap) {\n const stops = registerWatches(runtimeWithDefaults, watchMap, target)\n if (stops.length) {\n target[WEVU_WATCH_STOPS_KEY] = stops\n }\n }\n\n if (setup) {\n runRuntimeSetupPhase({\n target,\n runtime,\n runtimeWithDefaults,\n runtimeState: runtimeState as Record<string, any>,\n runtimeProxy: runtimeProxy as Record<string, any>,\n setup,\n syncRuntimeProps,\n attachRuntimeProxyProps,\n })\n if (!hasOwn(runtimeState as Record<string, any>, WEVU_SLOT_OWNER_ID_KEY)) {\n ;(runtimeState as any)[WEVU_SLOT_OWNER_ID_KEY] = ownerId\n }\n runtimeWithSyncFlush.__wevu_flushSetupSnapshotSync?.()\n refreshFullOwnerSnapshot()\n }\n\n // 将 runtime.methods 透传到原生实例,供小程序事件处理直接调用\n bridgeRuntimeMethodsToTarget(target, runtime)\n\n return runtime\n}\n\nexport function enableDeferredSetData(target: InternalRuntimeState) {\n const adapter = (target as any).__wevu?.adapter\n if (adapter && typeof (adapter as any).__wevu_enableSetData === 'function') {\n ;(adapter as any).__wevu_enableSetData()\n }\n}\n\nexport function setRuntimeSetDataVisibility(target: InternalRuntimeState, visible: boolean) {\n const adapter = (target as any).__wevu?.adapter\n if (adapter && typeof (adapter as any).__wevu_setVisibility === 'function') {\n ;(adapter as any).__wevu_setVisibility(visible)\n }\n}\n\n/**\n * 卸载运行时实例(框架内部注册流程使用)。\n * @internal\n */\nexport function teardownRuntimeInstance(target: InternalRuntimeState) {\n const runtime = target.__wevu\n const ownerId = (target as any)[WEVU_SLOT_OWNER_ID_KEY]\n if (ownerId) {\n removeOwner(ownerId)\n }\n clearTemplateRefs(target)\n // 触发卸载钩子(仅在 teardown 首次执行时触发)\n if (runtime && target[WEVU_HOOKS_KEY]) {\n callHookList(target, 'onUnload', [])\n }\n // 清理注册的生命周期钩子\n if (target[WEVU_HOOKS_KEY]) {\n target[WEVU_HOOKS_KEY] = undefined\n }\n const stops = target[WEVU_WATCH_STOPS_KEY]\n if (Array.isArray(stops)) {\n for (const stop of stops) {\n try {\n stop()\n }\n catch {\n // 避免 teardown 中断:单个 stop 失败不阻塞其他清理\n }\n }\n }\n target[WEVU_WATCH_STOPS_KEY] = undefined\n target[WEVU_EFFECT_SCOPE_KEY]?.stop()\n target[WEVU_EFFECT_SCOPE_KEY] = undefined\n if (runtime) {\n runtime.unmount()\n }\n delete target.__wevu\n if (WEVU_PUBLIC_RUNTIME_KEY in target) {\n delete (target as any)[WEVU_PUBLIC_RUNTIME_KEY]\n }\n}\n","import type {\n ComputedDefinitions,\n DefineAppOptions,\n InternalRuntimeState,\n MethodDefinitions,\n MiniProgramAppOptions,\n MiniProgramMemoryWarningResult,\n RuntimeApp,\n} from '../types'\nimport type { WatchMap } from './watch'\nimport {\n WEVU_HOOKS_KEY,\n WEVU_INLINE_HANDLER,\n WEVU_INLINE_MAP_KEY,\n WEVU_IS_APP_INSTANCE_KEY,\n} from '@weapp-core/constants'\nimport { callHookList } from '../hooks'\nimport { getMiniProgramGlobalObject, supportsCurrentMiniProgramRuntimeCapability } from '../platform'\nimport { runInlineExpression } from './inline'\nimport { mountRuntimeInstance } from './runtimeInstance'\n\nconst APP_GLOBAL_LISTENER_STORE_KEY = '__wevuAppGlobalListeners'\nconst MEMORY_WARNING_LISTENER_KEY = '__wevuOnMemoryWarningListener'\n\nfunction bindMemoryWarningListener(target: InternalRuntimeState) {\n const hooks = target[WEVU_HOOKS_KEY] as Record<string, any> | undefined\n const hasMemoryWarningHook = Boolean(hooks?.onMemoryWarning)\n if (!supportsCurrentMiniProgramRuntimeCapability('appMemoryWarningListener')) {\n delete (target as any)[MEMORY_WARNING_LISTENER_KEY]\n return\n }\n const miniProgramGlobal = getMiniProgramGlobalObject()\n const onMemoryWarning = miniProgramGlobal?.onMemoryWarning\n const offMemoryWarning = miniProgramGlobal?.offMemoryWarning\n if (typeof onMemoryWarning !== 'function') {\n return\n }\n\n const existing = (target as any)[MEMORY_WARNING_LISTENER_KEY]\n if (typeof existing === 'function' && typeof offMemoryWarning === 'function') {\n try {\n offMemoryWarning(existing)\n }\n catch {\n // 忽略平台差异导致的取消监听异常\n }\n }\n\n if (!hasMemoryWarningHook) {\n delete (target as any)[MEMORY_WARNING_LISTENER_KEY]\n return\n }\n\n const listener = (result: MiniProgramMemoryWarningResult) => {\n callHookList(target, 'onMemoryWarning', [result])\n }\n ;(target as any)[MEMORY_WARNING_LISTENER_KEY] = listener\n onMemoryWarning(listener)\n}\n\nfunction bindAppGlobalListener(target: InternalRuntimeState, options: {\n hookName: 'onError' | 'onPageNotFound' | 'onUnhandledRejection' | 'onThemeChange'\n onApiName: 'onError' | 'onPageNotFound' | 'onUnhandledRejection' | 'onThemeChange'\n offApiName: 'offError' | 'offPageNotFound' | 'offUnhandledRejection' | 'offThemeChange'\n capabilityName: 'appErrorListener' | 'appPageNotFoundListener' | 'appUnhandledRejectionListener' | 'appThemeChangeListener'\n userHandler?: ((...args: any[]) => any) | undefined\n}) {\n const { hookName, onApiName, offApiName, capabilityName, userHandler } = options\n const hooks = target[WEVU_HOOKS_KEY] as Record<string, any> | undefined\n const hasHook = Boolean(hooks?.[hookName])\n const store = ((target as any)[APP_GLOBAL_LISTENER_STORE_KEY] ??= Object.create(null)) as Record<string, ((...args: any[]) => void) | undefined>\n const existing = store[hookName]\n if (!supportsCurrentMiniProgramRuntimeCapability(capabilityName)) {\n delete store[hookName]\n delete (target as any)[hookName]\n return\n }\n const miniProgramGlobal = getMiniProgramGlobalObject()\n const onApi = miniProgramGlobal?.[onApiName]\n const offApi = miniProgramGlobal?.[offApiName]\n\n if (typeof existing === 'function' && typeof offApi === 'function') {\n try {\n offApi(existing)\n }\n catch {\n // 忽略平台差异导致的取消监听异常\n }\n }\n\n if (!hasHook && typeof userHandler !== 'function') {\n delete store[hookName]\n return\n }\n\n const dispatch = (...args: any[]) => {\n callHookList(target, hookName, args)\n if (typeof userHandler === 'function') {\n userHandler.apply(target, args)\n }\n }\n\n ;(target as any)[hookName] = dispatch\n store[hookName] = dispatch\n\n if (typeof onApi === 'function') {\n onApi(dispatch)\n }\n}\n\nfunction bindAppGlobalListeners(\n target: InternalRuntimeState,\n handlers: {\n onError?: ((...args: any[]) => any) | undefined\n onPageNotFound?: ((...args: any[]) => any) | undefined\n onUnhandledRejection?: ((...args: any[]) => any) | undefined\n onThemeChange?: ((...args: any[]) => any) | undefined\n },\n) {\n bindAppGlobalListener(target, {\n hookName: 'onError',\n onApiName: 'onError',\n offApiName: 'offError',\n capabilityName: 'appErrorListener',\n userHandler: handlers.onError,\n })\n bindAppGlobalListener(target, {\n hookName: 'onPageNotFound',\n onApiName: 'onPageNotFound',\n offApiName: 'offPageNotFound',\n capabilityName: 'appPageNotFoundListener',\n userHandler: handlers.onPageNotFound,\n })\n bindAppGlobalListener(target, {\n hookName: 'onUnhandledRejection',\n onApiName: 'onUnhandledRejection',\n offApiName: 'offUnhandledRejection',\n capabilityName: 'appUnhandledRejectionListener',\n userHandler: handlers.onUnhandledRejection,\n })\n bindAppGlobalListener(target, {\n hookName: 'onThemeChange',\n onApiName: 'onThemeChange',\n offApiName: 'offThemeChange',\n capabilityName: 'appThemeChangeListener',\n userHandler: handlers.onThemeChange,\n })\n}\n\n/**\n * 注册 App 入口(框架内部使用)。\n * @internal\n */\nexport function registerApp<D extends object, C extends ComputedDefinitions, M extends MethodDefinitions>(\n runtimeApp: RuntimeApp<D, C, M>,\n methods: MethodDefinitions,\n watch: WatchMap | undefined,\n setup: DefineAppOptions<D, C, M>['setup'],\n mpOptions: MiniProgramAppOptions,\n) {\n if (typeof App !== 'function') {\n throw new TypeError('createApp 需要全局 App 构造器可用')\n }\n\n const methodNames = Object.keys(methods ?? {})\n const appOptions: Record<string, any> = {\n ...mpOptions,\n }\n\n appOptions.globalData = appOptions.globalData ?? {}\n\n if (!appOptions[WEVU_INLINE_HANDLER]) {\n appOptions[WEVU_INLINE_HANDLER] = function __weapp_vite_inline(this: InternalRuntimeState, event: any) {\n const runtime = (this as any).__wevu\n const ctx = runtime?.proxy ?? this\n const inlineMap = runtime?.methods?.[WEVU_INLINE_MAP_KEY]\n return runInlineExpression(ctx, undefined, event, inlineMap)\n }\n }\n\n const userOnLaunch = appOptions.onLaunch\n const userOnError = appOptions.onError\n const userOnPageNotFound = (appOptions as any).onPageNotFound\n const userOnUnhandledRejection = (appOptions as any).onUnhandledRejection\n const userOnThemeChange = (appOptions as any).onThemeChange\n appOptions.onLaunch = function onLaunch(this: InternalRuntimeState, ...args: any[]) {\n this[WEVU_IS_APP_INSTANCE_KEY] = true\n mountRuntimeInstance(this, runtimeApp, watch, setup)\n bindMemoryWarningListener(this)\n bindAppGlobalListeners(this, {\n onError: userOnError,\n onPageNotFound: userOnPageNotFound,\n onUnhandledRejection: userOnUnhandledRejection,\n onThemeChange: userOnThemeChange,\n })\n callHookList(this, 'onLaunch', args)\n if (typeof userOnLaunch === 'function') {\n userOnLaunch.apply(this, args)\n }\n }\n\n const userOnShow = appOptions.onShow\n appOptions.onShow = function onShow(this: InternalRuntimeState, ...args: any[]) {\n callHookList(this, 'onShow', args)\n if (typeof userOnShow === 'function') {\n userOnShow.apply(this, args)\n }\n }\n\n const userOnHide = appOptions.onHide\n appOptions.onHide = function onHide(this: InternalRuntimeState, ...args: any[]) {\n callHookList(this, 'onHide', args)\n if (typeof userOnHide === 'function') {\n userOnHide.apply(this, args)\n }\n }\n\n delete appOptions.onError\n delete (appOptions as any).onPageNotFound\n delete (appOptions as any).onUnhandledRejection\n delete (appOptions as any).onThemeChange\n\n for (const methodName of methodNames) {\n const userMethod = appOptions[methodName]\n appOptions[methodName] = function runtimeMethod(this: InternalRuntimeState, ...args: any[]) {\n const runtime = this.__wevu\n let result: unknown\n const bound = runtime?.methods?.[methodName]\n if (bound) {\n result = bound.apply(runtime.proxy, args)\n }\n if (typeof userMethod === 'function') {\n return userMethod.apply(this, args)\n }\n return result\n }\n }\n\n App(appOptions)\n}\n","import type { PageFeatures } from '../../types'\n\nexport function resolveComponentFeatures(options: {\n features: PageFeatures\n userOnSaveExitState?: any\n userOnPullDownRefresh?: any\n userOnReachBottom?: any\n userOnPageScroll?: any\n userOnRouteDone?: any\n userOnTabItemTap?: any\n userOnResize?: any\n userOnShareAppMessage?: any\n userOnShareTimeline?: any\n userOnAddToFavorites?: any\n}) {\n const {\n features,\n userOnSaveExitState,\n userOnPullDownRefresh,\n userOnReachBottom,\n userOnPageScroll,\n userOnRouteDone,\n userOnTabItemTap,\n userOnResize,\n userOnShareAppMessage,\n userOnShareTimeline,\n userOnAddToFavorites,\n } = options\n\n const enableOnPullDownRefresh = typeof userOnPullDownRefresh === 'function' || Boolean(features.enableOnPullDownRefresh)\n const enableOnReachBottom = typeof userOnReachBottom === 'function' || Boolean(features.enableOnReachBottom)\n const enableOnPageScroll = typeof userOnPageScroll === 'function' || Boolean(features.enableOnPageScroll)\n const enableOnRouteDone = typeof userOnRouteDone === 'function' || Boolean(features.enableOnRouteDone)\n const enableOnRouteDoneFallback = Boolean(features.enableOnRouteDoneFallback)\n const enableOnTabItemTap = typeof userOnTabItemTap === 'function' || Boolean(features.enableOnTabItemTap)\n const enableOnResize = typeof userOnResize === 'function' || Boolean(features.enableOnResize)\n const enableOnShareTimeline = typeof userOnShareTimeline === 'function' || Boolean(features.enableOnShareTimeline)\n const enableOnShareAppMessage = typeof userOnShareAppMessage === 'function' || Boolean(features.enableOnShareAppMessage)\n const enableOnAddToFavorites = typeof userOnAddToFavorites === 'function' || Boolean(features.enableOnAddToFavorites)\n const enableOnSaveExitState = typeof userOnSaveExitState === 'function' || Boolean(features.enableOnSaveExitState)\n\n const fallbackNoop = () => {}\n\n const effectiveOnSaveExitState = (typeof userOnSaveExitState === 'function'\n ? userOnSaveExitState\n : (() => ({ data: undefined })) as any)\n const effectiveOnPullDownRefresh = typeof userOnPullDownRefresh === 'function' ? userOnPullDownRefresh : fallbackNoop\n const effectiveOnReachBottom = typeof userOnReachBottom === 'function' ? userOnReachBottom : fallbackNoop\n const effectiveOnPageScroll = typeof userOnPageScroll === 'function' ? userOnPageScroll : fallbackNoop\n const effectiveOnRouteDone = typeof userOnRouteDone === 'function' ? userOnRouteDone : fallbackNoop\n const effectiveOnTabItemTap = typeof userOnTabItemTap === 'function' ? userOnTabItemTap : fallbackNoop\n const effectiveOnResize = typeof userOnResize === 'function' ? userOnResize : fallbackNoop\n const effectiveOnShareAppMessage = typeof userOnShareAppMessage === 'function' ? userOnShareAppMessage : (fallbackNoop as any)\n const effectiveOnShareTimeline = typeof userOnShareTimeline === 'function' ? userOnShareTimeline : (fallbackNoop as any)\n const effectiveOnAddToFavorites = (typeof userOnAddToFavorites === 'function' ? userOnAddToFavorites : (() => ({})) as any)\n\n return {\n enableOnPullDownRefresh,\n enableOnReachBottom,\n enableOnPageScroll,\n enableOnRouteDone,\n enableOnRouteDoneFallback,\n enableOnTabItemTap,\n enableOnResize,\n enableOnShareAppMessage,\n enableOnShareTimeline,\n enableOnAddToFavorites,\n enableOnSaveExitState,\n effectiveOnSaveExitState,\n effectiveOnPullDownRefresh,\n effectiveOnReachBottom,\n effectiveOnPageScroll,\n effectiveOnRouteDone,\n effectiveOnTabItemTap,\n effectiveOnResize,\n effectiveOnShareAppMessage,\n effectiveOnShareTimeline,\n effectiveOnAddToFavorites,\n }\n}\n","import type { InternalRuntimeState } from '../../../types'\nimport {\n WEVU_ROUTE_DONE_CALLED_KEY,\n WEVU_ROUTE_DONE_IN_TICK_KEY,\n} from '@weapp-core/constants'\nimport { callHookList, callHookReturn } from '../../../hooks'\nimport { runInPageScrollHook } from './platform'\n\nexport interface OptionalPageLifecycleHookOptions {\n enableOnSaveExitState: boolean\n enableOnPullDownRefresh: boolean\n enableOnReachBottom: boolean\n enableOnPageScroll: boolean\n enableOnRouteDone: boolean\n enableOnTabItemTap: boolean\n enableOnResize: boolean\n enableOnShareAppMessage: boolean\n enableOnShareTimeline: boolean\n enableOnAddToFavorites: boolean\n effectiveOnSaveExitState: (...args: any[]) => any\n effectiveOnPullDownRefresh: (...args: any[]) => any\n effectiveOnReachBottom: (...args: any[]) => any\n effectiveOnPageScroll: (...args: any[]) => any\n effectiveOnRouteDone: (...args: any[]) => any\n effectiveOnTabItemTap: (...args: any[]) => any\n effectiveOnResize: (...args: any[]) => any\n effectiveOnShareAppMessage: (...args: any[]) => any\n effectiveOnShareTimeline: (...args: any[]) => any\n effectiveOnAddToFavorites: (...args: any[]) => any\n hasHook: (target: InternalRuntimeState, name: string) => boolean\n}\n\nexport function attachOptionalPageLifecycleHooks(\n pageLifecycleHooks: Record<string, any>,\n options: OptionalPageLifecycleHookOptions,\n) {\n const {\n enableOnSaveExitState,\n enableOnPullDownRefresh,\n enableOnReachBottom,\n enableOnPageScroll,\n enableOnRouteDone,\n enableOnTabItemTap,\n enableOnResize,\n enableOnShareAppMessage,\n enableOnShareTimeline,\n enableOnAddToFavorites,\n effectiveOnSaveExitState,\n effectiveOnPullDownRefresh,\n effectiveOnReachBottom,\n effectiveOnPageScroll,\n effectiveOnRouteDone,\n effectiveOnTabItemTap,\n effectiveOnResize,\n effectiveOnShareAppMessage,\n effectiveOnShareTimeline,\n effectiveOnAddToFavorites,\n hasHook,\n } = options\n\n if (enableOnSaveExitState) {\n pageLifecycleHooks.onSaveExitState = function onSaveExitState(this: InternalRuntimeState, ...args: any[]) {\n const ret = callHookReturn(this, 'onSaveExitState', args)\n if (ret !== undefined) {\n return ret\n }\n return effectiveOnSaveExitState.apply(this, args)\n }\n }\n if (enableOnPullDownRefresh) {\n pageLifecycleHooks.onPullDownRefresh = function onPullDownRefresh(this: InternalRuntimeState, ...args: any[]) {\n callHookList(this, 'onPullDownRefresh', args)\n if (!hasHook(this, 'onPullDownRefresh')) {\n return effectiveOnPullDownRefresh.apply(this, args)\n }\n }\n }\n if (enableOnReachBottom) {\n pageLifecycleHooks.onReachBottom = function onReachBottom(this: InternalRuntimeState, ...args: any[]) {\n callHookList(this, 'onReachBottom', args)\n if (!hasHook(this, 'onReachBottom')) {\n return effectiveOnReachBottom.apply(this, args)\n }\n }\n }\n if (enableOnPageScroll) {\n pageLifecycleHooks.onPageScroll = function onPageScroll(this: InternalRuntimeState, ...args: any[]) {\n return runInPageScrollHook(this, () => {\n callHookList(this, 'onPageScroll', args)\n if (!hasHook(this, 'onPageScroll')) {\n return effectiveOnPageScroll.apply(this, args)\n }\n })\n }\n }\n if (enableOnRouteDone) {\n pageLifecycleHooks.onRouteDone = function onRouteDone(this: InternalRuntimeState, ...args: any[]) {\n if ((this as any)[WEVU_ROUTE_DONE_IN_TICK_KEY]) {\n return\n }\n ;(this as any)[WEVU_ROUTE_DONE_IN_TICK_KEY] = true\n Promise.resolve().then(() => {\n ;(this as any)[WEVU_ROUTE_DONE_IN_TICK_KEY] = false\n })\n ;(this as any)[WEVU_ROUTE_DONE_CALLED_KEY] = true\n callHookList(this, 'onRouteDone', args)\n if (!hasHook(this, 'onRouteDone')) {\n return effectiveOnRouteDone.apply(this, args)\n }\n }\n }\n if (enableOnTabItemTap) {\n pageLifecycleHooks.onTabItemTap = function onTabItemTap(this: InternalRuntimeState, ...args: any[]) {\n callHookList(this, 'onTabItemTap', args)\n if (!hasHook(this, 'onTabItemTap')) {\n return effectiveOnTabItemTap.apply(this, args)\n }\n }\n }\n if (enableOnResize) {\n pageLifecycleHooks.onResize = function onResize(this: InternalRuntimeState, ...args: any[]) {\n callHookList(this, 'onResize', args)\n if (!hasHook(this, 'onResize')) {\n return effectiveOnResize.apply(this, args)\n }\n }\n }\n if (enableOnShareAppMessage) {\n pageLifecycleHooks.onShareAppMessage = function onShareAppMessage(this: InternalRuntimeState, ...args: any[]) {\n const ret = callHookReturn(this, 'onShareAppMessage', args)\n if (ret !== undefined) {\n return ret\n }\n return effectiveOnShareAppMessage.apply(this, args)\n }\n }\n if (enableOnShareTimeline) {\n pageLifecycleHooks.onShareTimeline = function onShareTimeline(this: InternalRuntimeState, ...args: any[]) {\n const ret = callHookReturn(this, 'onShareTimeline', args)\n if (ret !== undefined) {\n return ret\n }\n return effectiveOnShareTimeline.apply(this, args)\n }\n }\n if (enableOnAddToFavorites) {\n pageLifecycleHooks.onAddToFavorites = function onAddToFavorites(this: InternalRuntimeState, ...args: any[]) {\n const ret = callHookReturn(this, 'onAddToFavorites', args)\n if (ret !== undefined) {\n return ret\n }\n return effectiveOnAddToFavorites.apply(this, args)\n }\n }\n}\n","import type { ComponentPropsOptions, ComputedDefinitions, DefineComponentOptions, InternalRuntimeState, MethodDefinitions, RuntimeApp } from '../../types'\nimport type { WatchMap } from '../watch'\nimport {\n WEVU_ON_LOAD_CALLED_KEY,\n WEVU_READY_CALLED_KEY,\n WEVU_ROUTE_DONE_CALLED_KEY,\n} from '@weapp-core/constants'\nimport { callHookList } from '../../hooks'\nimport { scheduleTemplateRefUpdate } from '../../templateRefs'\nimport { enableDeferredSetData, mountRuntimeInstance, setRuntimeSetDataVisibility, teardownRuntimeInstance } from '../runtimeInstance'\nimport { attachOptionalPageLifecycleHooks } from './lifecycle/optionalHooks'\nimport { bindCurrentPageInstance, ensureMiniProgramGlobalPatched, ensurePageShareMenus, releaseCurrentPageInstance, resolvePageOptions } from './lifecycle/platform'\n\nexport function createPageLifecycleHooks<D extends object, C extends ComputedDefinitions, M extends MethodDefinitions>(options: {\n runtimeApp: RuntimeApp<D, C, M>\n watch: WatchMap | undefined\n setup: DefineComponentOptions<ComponentPropsOptions, D, C, M>['setup']\n userOnLoad?: any\n userOnUnload?: any\n userOnShow?: any\n userOnHide?: any\n userOnReady?: any\n isPage: boolean\n enableOnSaveExitState: boolean\n enableOnPullDownRefresh: boolean\n enableOnReachBottom: boolean\n enableOnPageScroll: boolean\n enableOnRouteDone: boolean\n enableOnRouteDoneFallback: boolean\n enableOnTabItemTap: boolean\n enableOnResize: boolean\n enableOnShareAppMessage: boolean\n enableOnShareTimeline: boolean\n enableOnAddToFavorites: boolean\n effectiveOnSaveExitState: (...args: any[]) => any\n effectiveOnPullDownRefresh: (...args: any[]) => any\n effectiveOnReachBottom: (...args: any[]) => any\n effectiveOnPageScroll: (...args: any[]) => any\n effectiveOnRouteDone: (...args: any[]) => any\n effectiveOnTabItemTap: (...args: any[]) => any\n effectiveOnResize: (...args: any[]) => any\n effectiveOnShareAppMessage: (...args: any[]) => any\n effectiveOnShareTimeline: (...args: any[]) => any\n effectiveOnAddToFavorites: (...args: any[]) => any\n hasHook: (target: InternalRuntimeState, name: string) => boolean\n}) {\n const {\n runtimeApp,\n watch,\n setup,\n userOnLoad,\n userOnUnload,\n userOnShow,\n userOnHide,\n userOnReady,\n isPage,\n enableOnSaveExitState,\n enableOnPullDownRefresh,\n enableOnReachBottom,\n enableOnPageScroll,\n enableOnRouteDone,\n enableOnRouteDoneFallback,\n enableOnTabItemTap,\n enableOnResize,\n enableOnShareAppMessage,\n enableOnShareTimeline,\n enableOnAddToFavorites,\n effectiveOnSaveExitState,\n effectiveOnPullDownRefresh,\n effectiveOnReachBottom,\n effectiveOnPageScroll,\n effectiveOnRouteDone,\n effectiveOnTabItemTap,\n effectiveOnResize,\n effectiveOnShareAppMessage,\n effectiveOnShareTimeline,\n effectiveOnAddToFavorites,\n hasHook,\n } = options\n\n const pageLifecycleHooks: Record<string, any> = {\n onLoad(this: InternalRuntimeState, ...args: any[]) {\n if ((this as any)[WEVU_ON_LOAD_CALLED_KEY]) {\n return\n }\n ;(this as any)[WEVU_ON_LOAD_CALLED_KEY] = true\n mountRuntimeInstance(this, runtimeApp, watch, setup)\n enableDeferredSetData(this)\n if (isPage) {\n ensurePageShareMenus({\n enableOnShareAppMessage,\n enableOnShareTimeline,\n })\n }\n callHookList(this, 'onLoad', args)\n if (typeof userOnLoad === 'function') {\n return userOnLoad.apply(this, args)\n }\n },\n onUnload(this: InternalRuntimeState, ...args: any[]) {\n if (isPage) {\n releaseCurrentPageInstance(this)\n }\n teardownRuntimeInstance(this)\n if (typeof userOnUnload === 'function') {\n return userOnUnload.apply(this, args)\n }\n },\n onShow(this: InternalRuntimeState, ...args: any[]) {\n if (isPage) {\n ensureMiniProgramGlobalPatched()\n bindCurrentPageInstance(this)\n if (!(this as any)[WEVU_ON_LOAD_CALLED_KEY]) {\n pageLifecycleHooks.onLoad.call(this, resolvePageOptions(this))\n }\n ensurePageShareMenus({\n enableOnShareAppMessage,\n enableOnShareTimeline,\n })\n ;(this as any)[WEVU_ROUTE_DONE_CALLED_KEY] = false\n }\n setRuntimeSetDataVisibility(this, true)\n callHookList(this, 'onShow', args)\n if (typeof userOnShow === 'function') {\n return userOnShow.apply(this, args)\n }\n },\n onHide(this: InternalRuntimeState, ...args: any[]) {\n if (isPage) {\n releaseCurrentPageInstance(this)\n }\n setRuntimeSetDataVisibility(this, false)\n callHookList(this, 'onHide', args)\n if (typeof userOnHide === 'function') {\n return userOnHide.apply(this, args)\n }\n },\n onReady(this: InternalRuntimeState, ...args: any[]) {\n if (isPage) {\n if (!(this as any)[WEVU_ON_LOAD_CALLED_KEY]) {\n pageLifecycleHooks.onLoad.call(this, resolvePageOptions(this))\n }\n ensurePageShareMenus({\n enableOnShareAppMessage,\n enableOnShareTimeline,\n })\n }\n // 兼容:部分平台/模式可能触发 Page.onReady,而非 Component lifetimes.ready\n if (!(this as any)[WEVU_READY_CALLED_KEY]) {\n ;(this as any)[WEVU_READY_CALLED_KEY] = true\n // 部分 IDE/基础库在首屏场景可能不派发 routeDone,这里做一次延迟兜底。\n // 若平台随后派发了真实 routeDone,会因为 __wevuRouteDoneCalled 判定而跳过补发。\n if (isPage && enableOnRouteDone && enableOnRouteDoneFallback) {\n // eslint-disable-next-line ts/no-this-alias\n const current = this\n setTimeout(() => {\n if (!(current as any)[WEVU_ROUTE_DONE_CALLED_KEY]) {\n pageLifecycleHooks.onRouteDone?.call(current)\n }\n }, 0)\n }\n scheduleTemplateRefUpdate(this, () => {\n callHookList(this, 'onReady', args)\n if (typeof userOnReady === 'function') {\n userOnReady.apply(this, args)\n }\n })\n return\n }\n if (typeof userOnReady === 'function') {\n return userOnReady.apply(this, args)\n }\n },\n }\n\n attachOptionalPageLifecycleHooks(pageLifecycleHooks, {\n enableOnSaveExitState,\n enableOnPullDownRefresh,\n enableOnReachBottom,\n enableOnPageScroll,\n enableOnRouteDone,\n enableOnTabItemTap,\n enableOnResize,\n enableOnShareAppMessage,\n enableOnShareTimeline,\n enableOnAddToFavorites,\n effectiveOnSaveExitState,\n effectiveOnPullDownRefresh,\n effectiveOnReachBottom,\n effectiveOnPageScroll,\n effectiveOnRouteDone,\n effectiveOnTabItemTap,\n effectiveOnResize,\n effectiveOnShareAppMessage,\n effectiveOnShareTimeline,\n effectiveOnAddToFavorites,\n hasHook,\n })\n\n return pageLifecycleHooks\n}\n","import type { InternalRuntimeState, MethodDefinitions } from '../../types'\nimport {\n WEVU_INLINE_HANDLER,\n WEVU_INLINE_MAP_KEY,\n WEVU_MODEL_HANDLER,\n WEVU_NATIVE_INSTANCE_KEY,\n WEVU_OWNER_HANDLER,\n WEVU_RESERVED_METHOD_PREFIX,\n WEVU_RUNTIME_KEY,\n} from '@weapp-core/constants'\nimport { parseModelEventValue } from '../../internal'\nimport { runInlineExpression } from '../inline'\n\nexport function createComponentMethods(options: {\n userMethods: Record<string, (...args: any[]) => any>\n runtimeMethods: MethodDefinitions\n}) {\n const { userMethods, runtimeMethods } = options\n const finalMethods: Record<string, (...args: any[]) => any> = {\n ...userMethods,\n }\n\n if (!finalMethods[WEVU_INLINE_HANDLER]) {\n finalMethods[WEVU_INLINE_HANDLER] = function __weapp_vite_inline(this: InternalRuntimeState, event: any) {\n const runtime = (this as any).__wevu\n const ctx = runtime?.proxy ?? this\n const inlineMap = runtime?.methods?.[WEVU_INLINE_MAP_KEY]\n return runInlineExpression(ctx, undefined, event, inlineMap)\n }\n }\n\n if (!finalMethods[WEVU_MODEL_HANDLER]) {\n finalMethods[WEVU_MODEL_HANDLER] = function __weapp_vite_model(this: InternalRuntimeState, event: any) {\n const path = event?.currentTarget?.dataset?.wvModel ?? event?.target?.dataset?.wvModel\n if (typeof path !== 'string' || !path) {\n return undefined\n }\n const runtime = (this as any).__wevu\n if (!runtime || typeof runtime.bindModel !== 'function') {\n return undefined\n }\n const value = parseModelEventValue(event)\n try {\n runtime.bindModel(path).update(value)\n }\n catch {\n // 忽略异常\n }\n return undefined\n }\n }\n\n if (!finalMethods[WEVU_OWNER_HANDLER] && typeof (runtimeMethods as any)?.[WEVU_OWNER_HANDLER] === 'function') {\n finalMethods[WEVU_OWNER_HANDLER] = (runtimeMethods as any)[WEVU_OWNER_HANDLER]\n }\n\n const methodNames = Object.keys(runtimeMethods ?? {})\n\n function resolveRuntime(instance: InternalRuntimeState) {\n const directRuntime = (instance as any).__wevu\n if (directRuntime) {\n return directRuntime\n }\n const runtimeState = (instance as any).$state\n if (runtimeState && typeof runtimeState === 'object') {\n return (runtimeState as any)[WEVU_RUNTIME_KEY]\n }\n return undefined\n }\n\n function syncRuntimeNativeInstance(runtime: any, instance: InternalRuntimeState) {\n if (runtime?.proxy === instance) {\n return\n }\n const runtimeProxy = runtime?.proxy as Record<string, any> | undefined\n const isBridgeMethod = (\n methodName: 'triggerEvent' | 'createSelectorQuery' | 'createIntersectionObserver' | 'setData',\n ) => {\n const instanceMethod = (instance as any)[methodName]\n if (typeof instanceMethod !== 'function') {\n return false\n }\n const proxyMethod = runtimeProxy?.[methodName]\n return typeof proxyMethod === 'function' && instanceMethod === proxyMethod\n }\n if (\n isBridgeMethod('triggerEvent')\n || isBridgeMethod('createSelectorQuery')\n || isBridgeMethod('createIntersectionObserver')\n || isBridgeMethod('setData')\n ) {\n return\n }\n const hasNativeApis = typeof (instance as any).triggerEvent === 'function'\n || typeof (instance as any).createSelectorQuery === 'function'\n || typeof (instance as any).createIntersectionObserver === 'function'\n || typeof (instance as any).setData === 'function'\n if (!hasNativeApis) {\n return\n }\n const runtimeState = runtime?.state\n if (!runtimeState || typeof runtimeState !== 'object') {\n return\n }\n if ((instance as any).$state === runtimeState) {\n return\n }\n try {\n Object.defineProperty(runtimeState, WEVU_NATIVE_INSTANCE_KEY, {\n value: instance,\n configurable: true,\n enumerable: false,\n writable: true,\n })\n }\n catch {\n ;(runtimeState as any)[WEVU_NATIVE_INSTANCE_KEY] = instance\n }\n }\n\n for (const methodName of methodNames) {\n if (\n methodName === WEVU_INLINE_MAP_KEY\n || methodName.startsWith(WEVU_RESERVED_METHOD_PREFIX)\n ) {\n continue\n }\n const userMethod = finalMethods[methodName]\n finalMethods[methodName] = function componentMethod(this: InternalRuntimeState, ...args: any[]) {\n const runtime = resolveRuntime(this)\n // 事件/方法实际调用时 this 可能是 DevTools 或平台包装后的实例,\n // 这里实时同步,避免 mounted 时缓存的实例与当前调用实例不一致。\n syncRuntimeNativeInstance(runtime, this)\n let result: unknown\n const bound = runtime?.methods?.[methodName]\n if (bound) {\n result = bound.apply(runtime.proxy, args)\n }\n if (typeof userMethod === 'function') {\n const userResult = userMethod.apply(this, args)\n return userResult === undefined ? result : userResult\n }\n return result\n }\n }\n\n return {\n finalMethods,\n }\n}\n","import type { LayoutHostBinding } from '../../layoutBridge'\nimport type { TemplateRefBinding } from '../../templateRefs'\nimport type { InternalRuntimeState, MiniProgramComponentRawOptions, PageFeatures } from '../../types'\nimport { hasOwn } from '../../../utils'\n\ninterface PreparedComponentOptions {\n userMethods: Record<string, (...args: any[]) => any>\n userLifetimes: Record<string, any>\n userPageLifetimes: Record<string, any>\n userOptions: Record<string, any>\n restOptions: Record<string, any>\n topLevelMethods: Record<string, (...args: any[]) => any>\n templateRefs: TemplateRefBinding[] | undefined\n layoutHosts: LayoutHostBinding[] | undefined\n userObservers: Record<string, any> | undefined\n setupLifecycle: 'created' | 'attached'\n legacyCreated: unknown\n isPage: boolean\n features: PageFeatures\n userOnLoad: any\n userOnUnload: any\n userOnShow: any\n userOnHide: any\n userOnReady: any\n userOnSaveExitState: any\n userOnPullDownRefresh: any\n userOnReachBottom: any\n userOnPageScroll: any\n userOnRouteDone: any\n userOnTabItemTap: any\n userOnResize: any\n userOnShareAppMessage: any\n userOnShareTimeline: any\n userOnAddToFavorites: any\n applyExtraInstanceFields: (instance: InternalRuntimeState) => void\n}\n\nfunction cloneInstanceFieldValue(value: unknown, cache = new WeakMap<object, unknown>()): unknown {\n if (!value || typeof value !== 'object') {\n return value\n }\n if (cache.has(value as object)) {\n return cache.get(value as object)\n }\n if (Array.isArray(value)) {\n const next: unknown[] = []\n cache.set(value, next)\n for (const item of value) {\n next.push(cloneInstanceFieldValue(item, cache))\n }\n return next\n }\n const next: Record<string, unknown> = {}\n cache.set(value as object, next)\n for (const [key, child] of Object.entries(value as Record<string, unknown>)) {\n next[key] = cloneInstanceFieldValue(child, cache)\n }\n return next\n}\n\nexport function getRuntimeOwnerLabel(instance: InternalRuntimeState) {\n const route = (instance as any).route\n if (typeof route === 'string' && route) {\n return route\n }\n const is = (instance as any).is\n if (typeof is === 'string' && is) {\n return is\n }\n return 'unknown'\n}\n\nexport function prepareComponentOptions(mpOptions: MiniProgramComponentRawOptions): PreparedComponentOptions {\n const {\n methods: userMethods = {},\n lifetimes: userLifetimes = {},\n pageLifetimes: userPageLifetimes = {},\n options: userOptions = {},\n ...rest\n } = mpOptions\n\n const userOnLoad = (rest as any).onLoad\n const userOnUnload = (rest as any).onUnload\n const userOnShow = (rest as any).onShow\n const userOnHide = (rest as any).onHide\n const userOnReady = (rest as any).onReady\n const userOnSaveExitState = (rest as any).onSaveExitState\n const userOnPullDownRefresh = (rest as any).onPullDownRefresh\n const userOnReachBottom = (rest as any).onReachBottom\n const userOnPageScroll = (rest as any).onPageScroll\n const userOnRouteDone = (rest as any).onRouteDone\n const userOnTabItemTap = (rest as any).onTabItemTap\n const userOnResize = (rest as any).onResize\n const userOnShareAppMessage = (rest as any).onShareAppMessage\n const userOnShareTimeline = (rest as any).onShareTimeline\n const userOnAddToFavorites = (rest as any).onAddToFavorites\n const features = ((rest as any).features ?? {}) as PageFeatures\n const hasPageOnlyHooks = [\n userOnLoad,\n userOnUnload,\n userOnShow,\n userOnHide,\n userOnReady,\n userOnSaveExitState,\n userOnPullDownRefresh,\n userOnReachBottom,\n userOnPageScroll,\n userOnRouteDone,\n userOnTabItemTap,\n userOnResize,\n userOnShareAppMessage,\n userOnShareTimeline,\n userOnAddToFavorites,\n ].some(hook => typeof hook === 'function')\n const isPage = Boolean((rest as any).__wevu_isPage) || Object.keys(features ?? {}).length > 0 || hasPageOnlyHooks\n\n const restOptions: Record<string, any> = {\n ...(rest as any),\n }\n const preservedInstanceFieldKeys = new Set([\n 'data',\n 'behaviors',\n 'relations',\n 'externalClasses',\n 'options',\n 'properties',\n 'observers',\n 'pureDataPattern',\n 'virtualHost',\n 'definitionFilter',\n 'export',\n '__wevuTemplateRefs',\n '__wevuLayoutHosts',\n 'setupLifecycle',\n 'features',\n '__wevu_isPage',\n ])\n const extraInstanceFieldEntries: Array<[string, unknown]> = []\n for (const [key, value] of Object.entries(restOptions)) {\n if (preservedInstanceFieldKeys.has(key)) {\n continue\n }\n if (typeof value === 'function') {\n continue\n }\n extraInstanceFieldEntries.push([key, value])\n delete restOptions[key]\n }\n\n const applyExtraInstanceFields = (instance: InternalRuntimeState) => {\n if (!extraInstanceFieldEntries.length) {\n return\n }\n for (const [key, value] of extraInstanceFieldEntries) {\n if (hasOwn(instance, key)) {\n continue\n }\n try {\n ;(instance as any)[key] = cloneInstanceFieldValue(value)\n }\n catch {\n // 忽略实例字段注入失败,避免阻断生命周期。\n }\n }\n }\n\n const moveToMethodsExcludes = new Set([\n 'data',\n 'export',\n 'definitionFilter',\n 'onLoad',\n 'onUnload',\n 'onShow',\n 'onHide',\n 'onReady',\n 'onSaveExitState',\n 'onPullDownRefresh',\n 'onReachBottom',\n 'onPageScroll',\n 'onRouteDone',\n 'onTabItemTap',\n 'onResize',\n 'onShareAppMessage',\n 'onShareTimeline',\n 'onAddToFavorites',\n ])\n const topLevelMethods: Record<string, (...args: any[]) => any> = {}\n for (const [key, value] of Object.entries(restOptions)) {\n if (typeof value !== 'function' || moveToMethodsExcludes.has(key)) {\n continue\n }\n topLevelMethods[key] = value as (...args: any[]) => any\n delete restOptions[key]\n }\n const templateRefs = (restOptions as any).__wevuTemplateRefs as TemplateRefBinding[] | undefined\n delete (restOptions as any).__wevuTemplateRefs\n const layoutHosts = (restOptions as any).__wevuLayoutHosts as LayoutHostBinding[] | undefined\n delete (restOptions as any).__wevuLayoutHosts\n const userObservers = (restOptions as any).observers as Record<string, any> | undefined\n const setupLifecycle = (restOptions as any).setupLifecycle === 'created' ? 'created' : 'attached'\n delete (restOptions as any).setupLifecycle\n const legacyCreated = restOptions.created\n delete restOptions.features\n delete restOptions.created\n delete restOptions.onLoad\n delete restOptions.onUnload\n delete restOptions.onShow\n delete restOptions.onHide\n delete restOptions.onReady\n\n return {\n userMethods,\n userLifetimes,\n userPageLifetimes,\n userOptions,\n restOptions,\n topLevelMethods,\n templateRefs,\n layoutHosts,\n userObservers,\n setupLifecycle,\n legacyCreated,\n isPage,\n features,\n userOnLoad,\n userOnUnload,\n userOnShow,\n userOnHide,\n userOnReady,\n userOnSaveExitState,\n userOnPullDownRefresh,\n userOnReachBottom,\n userOnPageScroll,\n userOnRouteDone,\n userOnTabItemTap,\n userOnResize,\n userOnShareAppMessage,\n userOnShareTimeline,\n userOnAddToFavorites,\n applyExtraInstanceFields,\n }\n}\n","import type { InternalRuntimeState } from '../types'\nimport {\n WEVU_PROPS_KEY,\n WEVU_SLOT_OWNER_ID_KEY,\n} from '@weapp-core/constants'\nimport { resolveOwnerSnapshot, updateOwnerSnapshot } from '../scopedSlots'\n\nexport function refreshOwnerSnapshotFromInstance(instance: InternalRuntimeState) {\n const runtime = instance.__wevu\n const ownerId = (instance as any)[WEVU_SLOT_OWNER_ID_KEY]\n if (!runtime || !ownerId || typeof runtime.snapshot !== 'function') {\n return\n }\n const snapshot = resolveOwnerSnapshot(runtime)\n const propsSource = (instance as any)[WEVU_PROPS_KEY] ?? (instance as any).properties\n if (propsSource && typeof propsSource === 'object') {\n for (const [key, value] of Object.entries(propsSource)) {\n snapshot[key] = value\n }\n }\n updateOwnerSnapshot(ownerId, snapshot, runtime.proxy)\n}\n","import type { InternalRuntimeState } from '../../types'\nimport {\n WEVU_ATTRS_KEY,\n WEVU_PENDING_PROP_VALUES_KEY,\n WEVU_PROP_KEYS_KEY,\n WEVU_PROPS_KEY,\n WEVU_SLOT_OWNER_ATTR,\n WEVU_SLOT_OWNER_ID_ATTR,\n} from '@weapp-core/constants'\nimport { hasOwn } from '../../../utils'\nimport { refreshOwnerSnapshotFromInstance } from '../snapshot'\n\nexport function createPropsSync(options: {\n restOptions: Record<string, any>\n userObservers?: Record<string, any>\n}) {\n const { restOptions, userObservers } = options\n const propKeys = restOptions.properties && typeof restOptions.properties === 'object'\n ? Object.keys(restOptions.properties as any)\n : []\n const propKeySet = new Set(propKeys)\n const isInternalDashedSlotKey = (key: string) => key === WEVU_SLOT_OWNER_ATTR || key === WEVU_SLOT_OWNER_ID_ATTR\n\n const attachWevuPropKeys = (instance: InternalRuntimeState) => {\n try {\n Object.defineProperty(instance, WEVU_PROP_KEYS_KEY, {\n value: propKeys,\n configurable: true,\n enumerable: false,\n writable: false,\n })\n }\n catch {\n ;(instance as any)[WEVU_PROP_KEYS_KEY] = propKeys\n }\n }\n\n const syncWevuAttrsFromInstance = (instance: InternalRuntimeState) => {\n const attrsProxy = (instance as any)[WEVU_ATTRS_KEY]\n if (!attrsProxy || typeof attrsProxy !== 'object') {\n return\n }\n const hasRuntimeStateKey = (key: string) => {\n const runtimeState = (instance as any).__wevu?.state\n return runtimeState != null\n && typeof runtimeState === 'object'\n && hasOwn(runtimeState as Record<string, unknown>, key)\n }\n\n const properties = (instance as any).properties\n const next = properties && typeof properties === 'object'\n ? (properties as Record<string, unknown>)\n : undefined\n\n const currentKeys = Object.keys(attrsProxy as any)\n for (const existingKey of currentKeys) {\n if (\n !next\n || !hasOwn(next, existingKey)\n || isInternalDashedSlotKey(existingKey)\n || propKeySet.has(existingKey)\n || hasRuntimeStateKey(existingKey)\n ) {\n try {\n delete (attrsProxy as any)[existingKey]\n }\n catch {\n // 忽略异常\n }\n }\n }\n\n if (!next) {\n refreshOwnerSnapshotFromInstance(instance)\n return\n }\n\n for (const [key, value] of Object.entries(next)) {\n if (isInternalDashedSlotKey(key) || propKeySet.has(key) || hasRuntimeStateKey(key)) {\n continue\n }\n try {\n ;(attrsProxy as any)[key] = value\n }\n catch {\n // 忽略异常\n }\n }\n\n refreshOwnerSnapshotFromInstance(instance)\n }\n\n const syncWevuPropsFromInstance = (instance: InternalRuntimeState) => {\n const propsProxy = (instance as any)[WEVU_PROPS_KEY]\n const properties = (instance as any).properties\n const pendingPropValues = (instance as any)[WEVU_PENDING_PROP_VALUES_KEY] as Record<string, unknown> | undefined\n\n if (propsProxy && typeof propsProxy === 'object' && properties && typeof properties === 'object') {\n const next = properties as any\n const currentKeys = Object.keys(propsProxy as any)\n for (const existingKey of currentKeys) {\n if (isInternalDashedSlotKey(existingKey) || !hasOwn(next, existingKey)) {\n try {\n delete (propsProxy as any)[existingKey]\n }\n catch {\n // 忽略异常\n }\n }\n }\n for (const [k, v] of Object.entries(next)) {\n if (isInternalDashedSlotKey(k)) {\n continue\n }\n const nextValue = pendingPropValues && hasOwn(pendingPropValues, k)\n ? pendingPropValues[k]\n : v\n try {\n ;(propsProxy as any)[k] = nextValue\n }\n catch {\n // 忽略异常\n }\n }\n if (pendingPropValues) {\n for (const [k, v] of Object.entries(pendingPropValues)) {\n if (!isInternalDashedSlotKey(k) && !hasOwn(next, k)) {\n try {\n ;(propsProxy as any)[k] = v\n }\n catch {\n // 忽略异常\n }\n }\n }\n }\n refreshOwnerSnapshotFromInstance(instance)\n }\n if (pendingPropValues) {\n delete (instance as any)[WEVU_PENDING_PROP_VALUES_KEY]\n }\n\n syncWevuAttrsFromInstance(instance)\n }\n\n const syncWevuPropValue = (instance: InternalRuntimeState, key: string, value: unknown) => {\n const propsProxy = (instance as any)[WEVU_PROPS_KEY]\n if (!propsProxy || typeof propsProxy !== 'object' || isInternalDashedSlotKey(key)) {\n return\n }\n try {\n ;(propsProxy as any)[key] = value\n }\n catch {\n // 忽略异常\n }\n const pendingPropValues = ((instance as any)[WEVU_PENDING_PROP_VALUES_KEY] ??= Object.create(null)) as Record<string, unknown>\n pendingPropValues[key] = value\n refreshOwnerSnapshotFromInstance(instance)\n syncWevuAttrsFromInstance(instance)\n }\n\n const injectedObservers: Record<string, any> = {}\n if (propKeys.length) {\n for (const key of propKeys) {\n injectedObservers[key] = function __wevu_prop_observer(this: InternalRuntimeState, newValue: unknown) {\n // 注意:在部分小程序运行时中,observer 回调触发时 `this.properties` 可能尚未更新,\n // 因此这里以 observer 的 newValue 为准写入 propsProxy,避免出现 props 仍为旧值/undefined。\n syncWevuPropValue(this, key, newValue)\n }\n }\n }\n\n const finalObservers: Record<string, any> = {\n ...(userObservers ?? {}),\n }\n for (const [key, injected] of Object.entries(injectedObservers)) {\n const existing = finalObservers[key]\n if (typeof existing === 'function') {\n finalObservers[key] = function chainedObserver(this: InternalRuntimeState, ...args: any[]) {\n existing.apply(this, args)\n injected.apply(this, args)\n }\n }\n else {\n finalObservers[key] = injected\n }\n }\n\n const allObserver = finalObservers['**']\n finalObservers['**'] = function __wevu_observer_all(this: InternalRuntimeState, ...args: any[]) {\n if (typeof allObserver === 'function') {\n allObserver.apply(this, args)\n }\n syncWevuPropsFromInstance(this)\n }\n\n return {\n attachWevuPropKeys,\n syncWevuPropsFromInstance,\n finalObservers,\n }\n}\n","import type { Ref } from '../reactivity'\nimport {\n WEVU_LAYOUT_BRIDGE_PAGE_KEYS,\n WEVU_NATIVE_INSTANCE_KEY,\n WEVU_PUBLIC_RUNTIME_KEY,\n} from '@weapp-core/constants'\nimport { resolveMiniProgramPageKeys } from '@weapp-core/shared'\nimport { isRef } from '../reactivity'\nimport { getCurrentInstance, getCurrentSetupContext, onAttached, onDetached } from './hooks'\nimport { getCurrentMiniProgramPages } from './platform'\nimport { getTemplateRefMap } from './templateRefs/helpers'\n\ntype LayoutBridgeContext = Record<string, any>\ntype LayoutBridgeComponentResolver = (selector: string) => any\ntype LayoutHostMap = Record<string, unknown>\nexport type LayoutBridgeInstance<T = LayoutBridgeContext> = T & {\n selectComponent?: LayoutBridgeComponentResolver\n}\nexport interface LayoutHostBinding {\n key: string\n refName?: string\n selector: string\n kind?: 'component'\n}\ninterface LayoutHostResolveOptions<T = any> {\n context?: T\n fallbackContext?: T\n interval?: number\n retries?: number\n}\n\nconst pageLayoutBridges = new Map<string, Map<string, LayoutBridgeContext>>()\n\nfunction resolveCurrentPageInstance() {\n const pages = getCurrentMiniProgramPages()\n return pages[pages.length - 1]\n}\n\nfunction normalizeSelectors(selectors: string | string[]) {\n return Array.from(new Set(Array.isArray(selectors) ? selectors : [selectors]))\n .filter((selector): selector is string => typeof selector === 'string' && selector.length > 0)\n}\n\nfunction resolvePageKeys(page?: LayoutBridgeContext) {\n return resolveMiniProgramPageKeys(page as Record<string, any> | undefined)\n}\n\nfunction resolvePageFromContext(context?: LayoutBridgeContext) {\n if (context && typeof context.__wevuSetPageLayout === 'function') {\n return context\n }\n return resolveCurrentPageInstance()\n}\n\nfunction resolveNativeLayoutContext(context?: LayoutBridgeContext) {\n if (!context || typeof context !== 'object') {\n return undefined\n }\n\n const runtimeNativeInstance = context[WEVU_PUBLIC_RUNTIME_KEY]?.state?.[WEVU_NATIVE_INSTANCE_KEY]\n if (runtimeNativeInstance && typeof runtimeNativeInstance === 'object') {\n return runtimeNativeInstance as LayoutBridgeContext\n }\n\n const stateNativeInstance = context.$state?.[WEVU_NATIVE_INSTANCE_KEY]\n if (stateNativeInstance && typeof stateNativeInstance === 'object') {\n return stateNativeInstance as LayoutBridgeContext\n }\n\n if (context[WEVU_NATIVE_INSTANCE_KEY] && typeof context[WEVU_NATIVE_INSTANCE_KEY] === 'object') {\n return context[WEVU_NATIVE_INSTANCE_KEY] as LayoutBridgeContext\n }\n\n return context\n}\n\nfunction resolveHostEntry(entry: unknown) {\n if (typeof entry === 'function') {\n return (entry as () => unknown)()\n }\n if (isRef(entry as Ref<unknown>)) {\n return (entry as Ref<unknown>).value\n }\n return entry\n}\n\nfunction findLayoutHostBinding(bindings: LayoutHostBinding[], key: string) {\n return bindings.find(binding => binding.key === key)\n}\n\nfunction safeSelectComponent(target: LayoutBridgeContext | undefined, selector: string) {\n const selectComponent = target?.selectComponent\n if (typeof selectComponent !== 'function') {\n return null\n }\n try {\n return selectComponent.call(target, selector) ?? null\n }\n catch {\n return null\n }\n}\n\nfunction resolveDeclaredLayoutHostFromRefs(\n binding: LayoutHostBinding,\n context: LayoutBridgeContext,\n) {\n if (!binding.refName) {\n return null\n }\n const refMap = getTemplateRefMap(context as any)\n const stateRefs = context[WEVU_PUBLIC_RUNTIME_KEY]?.state?.$refs\n ?? context.__wevu?.state?.$refs\n ?? context.$state?.$refs\n ?? context.$refs\n const refValue = refMap?.get(binding.refName)?.value\n ?? stateRefs?.[binding.refName]\n if (Array.isArray(refValue)) {\n return refValue[0] ?? null\n }\n return refValue ?? null\n}\n\nfunction createDeclaredLayoutHostBridge(bindings: LayoutHostBinding[], context: LayoutBridgeContext) {\n const nativeContext = resolveNativeLayoutContext(context)\n const bridgeBase = nativeContext && typeof nativeContext === 'object'\n ? Object.create(nativeContext)\n : {}\n return Object.assign(bridgeBase, {\n selectComponent(key: string) {\n const binding = findLayoutHostBinding(bindings, key)\n if (!binding) {\n return null\n }\n if (binding.kind === 'component' || !binding.kind) {\n const cachedHost = resolveDeclaredLayoutHostFromRefs(binding, context)\n if (cachedHost) {\n return cachedHost\n }\n return safeSelectComponent(nativeContext, binding.selector)\n ?? safeSelectComponent(resolveCurrentPageInstance(), binding.selector)\n ?? null\n }\n return null\n },\n })\n}\n\n/**\n * 为当前页面注册 layout bridge,使页面或子组件可消费 layout 内部能力。\n */\nexport function registerPageLayoutBridge(\n selectors: string | string[],\n context?: LayoutBridgeContext,\n) {\n const bridgeContext = context ?? getCurrentInstance<LayoutBridgeContext>()\n const page = resolvePageFromContext(bridgeContext)\n const pageKeys = resolvePageKeys(page)\n if (!bridgeContext || !page || pageKeys.length === 0) {\n return false\n }\n\n for (const pageKey of pageKeys) {\n const registry = pageLayoutBridges.get(pageKey) ?? new Map<string, LayoutBridgeContext>()\n for (const selector of normalizeSelectors(selectors)) {\n registry.set(selector, bridgeContext)\n }\n pageLayoutBridges.set(pageKey, registry)\n }\n bridgeContext[WEVU_LAYOUT_BRIDGE_PAGE_KEYS] = pageKeys\n return true\n}\n\n/**\n * 移除当前页面的 layout bridge 注册。\n */\nexport function unregisterPageLayoutBridge(\n selectors: string | string[],\n context?: LayoutBridgeContext,\n) {\n const bridgeContext = context ?? getCurrentInstance<LayoutBridgeContext>()\n const page = resolvePageFromContext(bridgeContext)\n const pageKeys = bridgeContext?.[WEVU_LAYOUT_BRIDGE_PAGE_KEYS] ?? resolvePageKeys(page)\n if (!bridgeContext || !Array.isArray(pageKeys) || pageKeys.length === 0) {\n return false\n }\n\n let removed = false\n for (const pageKey of pageKeys) {\n const registry = pageLayoutBridges.get(pageKey)\n if (!registry) {\n continue\n }\n\n for (const selector of normalizeSelectors(selectors)) {\n if (registry.get(selector) === bridgeContext) {\n registry.delete(selector)\n removed = true\n }\n }\n\n if (registry.size === 0) {\n pageLayoutBridges.delete(pageKey)\n }\n }\n\n delete bridgeContext[WEVU_LAYOUT_BRIDGE_PAGE_KEYS]\n return removed\n}\n\n/**\n * 解析当前页面已注册的 layout bridge,找不到时回退到传入上下文。\n */\nexport function resolveLayoutBridge<T = any>(\n selector: string,\n fallbackContext?: T,\n) {\n const page = resolveCurrentPageInstance() ?? resolvePageFromContext(fallbackContext as LayoutBridgeContext | undefined)\n const bridgeContext = resolvePageKeys(page)\n .map(pageKey => pageLayoutBridges.get(pageKey)?.get(selector))\n .find(Boolean)\n return (bridgeContext ?? fallbackContext ?? getCurrentInstance()) as LayoutBridgeInstance<T> | undefined\n}\n\n/**\n * 解析当前页面 layout 内通过指定 key 暴露的宿主实例。\n */\nexport function resolveLayoutHost<T = any, C = any>(\n key: string,\n options: LayoutHostResolveOptions<C> = {},\n) {\n const context = options.context ?? options.fallbackContext\n const bridge = resolveLayoutBridge<LayoutBridgeContext & C>(key, context as LayoutBridgeContext & C | undefined)\n const host = bridge?.selectComponent?.(key)\n return (host ?? null) as T | null\n}\n\n/**\n * 等待当前页面 layout 宿主实例可用,适合页面初次进入时的异步宿主解析。\n */\nexport function waitForLayoutHost<T = any, C = any>(\n key: string,\n options: LayoutHostResolveOptions<C> = {},\n) {\n const retries = options.retries ?? 20\n const interval = options.interval ?? 16\n const host = resolveLayoutHost<T, C>(key, options)\n if (host || retries <= 0) {\n return Promise.resolve(host)\n }\n return new Promise<T | null>((resolve) => {\n setTimeout(() => {\n resolve(waitForLayoutHost<T, C>(key, {\n ...options,\n retries: retries - 1,\n }))\n }, interval)\n })\n}\n\n/**\n * 在 layout 生命周期内暴露 bridge,使页面或子组件可访问 layout 内部实例。\n */\nexport function useLayoutBridge(\n selectors: string | string[],\n options: {\n resolveComponent?: LayoutBridgeComponentResolver\n } = {},\n) {\n if (!getCurrentSetupContext()) {\n throw new Error('useLayoutBridge() 必须在 setup() 的同步阶段调用')\n }\n\n const context = getCurrentInstance<LayoutBridgeContext>()\n const normalizedSelectors = normalizeSelectors(selectors)\n const resolveComponent = options.resolveComponent\n const nativeContext = resolveNativeLayoutContext(context)\n const bridgeBase = nativeContext && typeof nativeContext === 'object'\n ? Object.create(nativeContext)\n : {}\n const bridge = Object.assign(bridgeBase, {\n selectComponent(selector: string) {\n if (!normalizedSelectors.includes(selector)) {\n return null\n }\n\n const resolvedComponent = resolveComponent?.(selector)\n if (resolvedComponent !== undefined) {\n return resolvedComponent\n }\n\n const nativeContext = resolveNativeLayoutContext(context)\n const directMatch = nativeContext?.selectComponent?.(selector)\n if (directMatch) {\n return directMatch\n }\n\n const currentPage = resolveCurrentPageInstance()\n return currentPage?.selectComponent?.(selector) ?? null\n },\n })\n\n registerPageLayoutBridge(normalizedSelectors, bridge)\n\n onAttached(() => {\n registerPageLayoutBridge(normalizedSelectors, bridge)\n })\n\n onDetached(() => {\n unregisterPageLayoutBridge(normalizedSelectors, bridge)\n })\n}\n\n/**\n * 使用编译期注入的宿主绑定信息,直接从当前 layout 运行时实例解析子组件宿主并注册 bridge。\n */\nexport function registerRuntimeLayoutHosts(\n bindings: LayoutHostBinding[],\n context?: LayoutBridgeContext,\n) {\n if (!bindings.length) {\n return null\n }\n const bridgeContext = context ?? getCurrentInstance<LayoutBridgeContext>()\n if (!bridgeContext) {\n return null\n }\n const bridge = createDeclaredLayoutHostBridge(bindings, bridgeContext)\n registerPageLayoutBridge(bindings.map(binding => binding.key), bridge)\n return bridge\n}\n\n/**\n * 移除运行时自动注册的 layout 宿主 bridge。\n */\nexport function unregisterRuntimeLayoutHosts(\n bindings: LayoutHostBinding[],\n context?: LayoutBridgeContext,\n) {\n if (!bindings.length) {\n return false\n }\n const bridgeContext = context ?? getCurrentInstance<LayoutBridgeContext>()\n if (!bridgeContext) {\n return false\n }\n return unregisterPageLayoutBridge(\n bindings.map(binding => binding.key),\n bridgeContext,\n )\n}\n\n/**\n * 使用 key -> 宿主实例的映射批量暴露 layout 内部宿主,适合 toast/dialog 等共享反馈节点。\n */\nexport function useLayoutHosts(hosts: LayoutHostMap) {\n const selectors = Object.keys(hosts)\n useLayoutBridge(selectors, {\n resolveComponent(key) {\n return resolveHostEntry(hosts[key])\n },\n })\n}\n","import type { LayoutHostBinding } from '../../layoutBridge'\nimport type { TemplateRefBinding } from '../../templateRefs'\nimport type {\n ComponentPropsOptions,\n ComputedDefinitions,\n DefineComponentOptions,\n InternalRuntimeState,\n MethodDefinitions,\n RuntimeApp,\n} from '../../types'\nimport type { WatchMap } from '../watch'\nimport {\n WEVU_LAYOUT_HOST_BRIDGE_KEY,\n WEVU_PAGE_LAYOUT_NAME_KEY,\n WEVU_PAGE_LAYOUT_PROPS_KEY,\n WEVU_PAGE_LAYOUT_SETTER_KEY,\n WEVU_READY_CALLED_KEY,\n WEVU_TEMPLATE_REFS_KEY,\n} from '@weapp-core/constants'\nimport { callHookList } from '../../hooks'\nimport { registerRuntimeLayoutHosts, unregisterRuntimeLayoutHosts } from '../../layoutBridge'\nimport { resolveRuntimePageLayoutName, syncRuntimePageLayoutState } from '../../pageLayout'\nimport { clearTemplateRefs, scheduleTemplateRefUpdate } from '../../templateRefs'\nimport { enableDeferredSetData, mountRuntimeInstance, setRuntimeSetDataVisibility, teardownRuntimeInstance } from '../runtimeInstance'\n\nexport function registerComponentDefinition<D extends object, C extends ComputedDefinitions, M extends MethodDefinitions>(options: {\n runtimeApp: RuntimeApp<D, C, M>\n watch: WatchMap | undefined\n setup: DefineComponentOptions<ComponentPropsOptions, D, C, M>['setup']\n restOptions: Record<string, any>\n pageLifecycleHooks: Record<string, any>\n finalObservers: Record<string, any>\n userLifetimes: Record<string, any>\n userPageLifetimes: Record<string, any>\n finalMethods: Record<string, (...args: any[]) => any>\n finalOptions: Record<string, any>\n applyExtraInstanceFields: (instance: InternalRuntimeState) => void\n templateRefs: TemplateRefBinding[] | undefined\n layoutHosts: LayoutHostBinding[] | undefined\n attachWevuPropKeys: (instance: InternalRuntimeState) => void\n setupLifecycle: 'created' | 'attached'\n syncWevuPropsFromInstance: (instance: InternalRuntimeState) => void\n isPage: boolean\n legacyCreated: unknown\n getRuntimeOwnerLabel: (instance: InternalRuntimeState) => string\n}) {\n const {\n runtimeApp,\n watch,\n setup,\n restOptions,\n pageLifecycleHooks,\n finalObservers,\n userLifetimes,\n userPageLifetimes,\n finalMethods,\n finalOptions,\n applyExtraInstanceFields,\n templateRefs,\n layoutHosts,\n attachWevuPropKeys,\n setupLifecycle,\n syncWevuPropsFromInstance,\n isPage,\n legacyCreated,\n getRuntimeOwnerLabel,\n } = options\n\n const pageMethodBridges: Record<string, (...args: any[]) => any> = {}\n const attachRuntimeLayoutHosts = (instance: InternalRuntimeState) => {\n if (!Array.isArray(layoutHosts) || !layoutHosts.length) {\n return\n }\n if ((instance as any)[WEVU_LAYOUT_HOST_BRIDGE_KEY]) {\n return\n }\n const bridge = registerRuntimeLayoutHosts(layoutHosts, instance)\n if (bridge) {\n instance[WEVU_LAYOUT_HOST_BRIDGE_KEY] = bridge\n }\n }\n const attachPageLayoutSetter = (instance: InternalRuntimeState) => {\n if (!isPage) {\n return\n }\n instance[WEVU_PAGE_LAYOUT_SETTER_KEY] = (layout: string | false, props?: Record<string, any>) => {\n const runtimeState = instance.__wevu?.state as Record<string, any> | undefined\n if (!runtimeState || typeof runtimeState !== 'object') {\n return\n }\n runtimeState[WEVU_PAGE_LAYOUT_NAME_KEY] = resolveRuntimePageLayoutName(layout)\n const nextProps = layout === false ? {} : (props ?? {})\n runtimeState[WEVU_PAGE_LAYOUT_PROPS_KEY] = nextProps\n syncRuntimePageLayoutState(instance as Record<string, any>, layout, nextProps)\n }\n }\n if (isPage) {\n const methodBridgeHookNames = ['onReachBottom', 'onShareAppMessage', 'onShareTimeline', 'onAddToFavorites']\n for (const hookName of methodBridgeHookNames) {\n const pageHook = (pageLifecycleHooks as any)[hookName]\n if (typeof pageHook !== 'function') {\n continue\n }\n if (typeof (finalMethods as any)[hookName] === 'function') {\n continue\n }\n pageMethodBridges[hookName] = function pageMethodBridge(this: InternalRuntimeState, ...args: any[]) {\n return pageHook.apply(this, args)\n }\n }\n }\n\n Component({\n ...restOptions,\n ...pageLifecycleHooks,\n observers: finalObservers,\n lifetimes: {\n ...userLifetimes,\n created: function created(this: InternalRuntimeState, ...args: any[]) {\n applyExtraInstanceFields(this)\n if (Array.isArray(templateRefs) && templateRefs.length) {\n Object.defineProperty(this, WEVU_TEMPLATE_REFS_KEY, {\n value: templateRefs,\n configurable: true,\n enumerable: false,\n writable: false,\n })\n }\n attachWevuPropKeys(this)\n if (setupLifecycle === 'created') {\n try {\n mountRuntimeInstance(this, runtimeApp, watch, setup, { deferSetData: true })\n }\n catch (error) {\n const label = getRuntimeOwnerLabel(this)\n throw new Error(`[wevu] mount runtime failed in created (${label}): ${error instanceof Error ? error.message : String(error)}`)\n }\n syncWevuPropsFromInstance(this)\n attachPageLayoutSetter(this)\n }\n // 兼容:若用户使用旧式 created(非 lifetimes.created),在定义 lifetimes.created 后会被覆盖,这里手动补齐调用\n if (typeof legacyCreated === 'function') {\n legacyCreated.apply(this, args)\n }\n if (typeof (userLifetimes as any).created === 'function') {\n ;(userLifetimes as any).created.apply(this, args)\n }\n },\n moved: function moved(this: InternalRuntimeState, ...args: any[]) {\n callHookList(this, 'onMoved', args)\n if (typeof (userLifetimes as any).moved === 'function') {\n ;(userLifetimes as any).moved.apply(this, args)\n }\n },\n attached: function attached(this: InternalRuntimeState, ...args: any[]) {\n applyExtraInstanceFields(this)\n if (Array.isArray(templateRefs) && templateRefs.length && !(this as any)[WEVU_TEMPLATE_REFS_KEY]) {\n Object.defineProperty(this, WEVU_TEMPLATE_REFS_KEY, {\n value: templateRefs,\n configurable: true,\n enumerable: false,\n writable: false,\n })\n }\n attachWevuPropKeys(this)\n if (setupLifecycle !== 'created' || !(this as any).__wevu) {\n try {\n mountRuntimeInstance(this, runtimeApp, watch, setup)\n }\n catch (error) {\n const label = getRuntimeOwnerLabel(this)\n throw new Error(`[wevu] mount runtime failed in attached (${label}): ${error instanceof Error ? error.message : String(error)}`)\n }\n }\n syncWevuPropsFromInstance(this)\n attachPageLayoutSetter(this)\n attachRuntimeLayoutHosts(this)\n if (setupLifecycle === 'created') {\n enableDeferredSetData(this)\n }\n callHookList(this, 'onAttached', args)\n if (typeof (userLifetimes as any).attached === 'function') {\n ;(userLifetimes as any).attached.apply(this, args)\n }\n },\n ready: function ready(this: InternalRuntimeState, ...args: any[]) {\n if (isPage && typeof (pageLifecycleHooks as any).onReady === 'function') {\n ;(pageLifecycleHooks as any).onReady.call(this, ...args)\n if (typeof (userLifetimes as any).ready === 'function') {\n ;(userLifetimes as any).ready.apply(this, args)\n }\n return\n }\n if (!(this as any)[WEVU_READY_CALLED_KEY]) {\n ;(this as any)[WEVU_READY_CALLED_KEY] = true\n syncWevuPropsFromInstance(this)\n scheduleTemplateRefUpdate(this, () => {\n callHookList(this, 'onReady', args)\n if (typeof (userLifetimes as any).ready === 'function') {\n ;(userLifetimes as any).ready.apply(this, args)\n }\n })\n return\n }\n if (typeof (userLifetimes as any).ready === 'function') {\n ;(userLifetimes as any).ready.apply(this, args)\n }\n },\n detached: function detached(this: InternalRuntimeState, ...args: any[]) {\n callHookList(this, 'onDetached', args)\n if (isPage && typeof (pageLifecycleHooks as any).onUnload === 'function') {\n ;(pageLifecycleHooks as any).onUnload.call(this, ...args)\n if (typeof (userLifetimes as any).detached === 'function') {\n ;(userLifetimes as any).detached.apply(this, args)\n }\n return\n }\n clearTemplateRefs(this)\n if (Array.isArray(layoutHosts) && layoutHosts.length && (this as any)[WEVU_LAYOUT_HOST_BRIDGE_KEY]) {\n unregisterRuntimeLayoutHosts(layoutHosts, (this as any)[WEVU_LAYOUT_HOST_BRIDGE_KEY])\n delete (this as any)[WEVU_LAYOUT_HOST_BRIDGE_KEY]\n }\n teardownRuntimeInstance(this)\n if (typeof (userLifetimes as any).detached === 'function') {\n ;(userLifetimes as any).detached.apply(this, args)\n }\n },\n error: function error(this: InternalRuntimeState, ...args: any[]) {\n callHookList(this, 'onError', args)\n if (typeof (userLifetimes as any).error === 'function') {\n ;(userLifetimes as any).error.apply(this, args)\n }\n },\n },\n pageLifetimes: {\n ...userPageLifetimes,\n show: function show(this: InternalRuntimeState, ...args: any[]) {\n if (isPage && typeof (pageLifecycleHooks as any).onShow === 'function') {\n ;(pageLifecycleHooks as any).onShow.call(this, ...args)\n if (typeof (userPageLifetimes as any).show === 'function') {\n ;(userPageLifetimes as any).show.apply(this, args)\n }\n return\n }\n setRuntimeSetDataVisibility(this, true)\n callHookList(this, 'onShow', args)\n if (typeof (userPageLifetimes as any).show === 'function') {\n ;(userPageLifetimes as any).show.apply(this, args)\n }\n },\n hide: function hide(this: InternalRuntimeState, ...args: any[]) {\n if (isPage && typeof (pageLifecycleHooks as any).onHide === 'function') {\n ;(pageLifecycleHooks as any).onHide.call(this, ...args)\n if (typeof (userPageLifetimes as any).hide === 'function') {\n ;(userPageLifetimes as any).hide.apply(this, args)\n }\n return\n }\n setRuntimeSetDataVisibility(this, false)\n callHookList(this, 'onHide', args)\n if (typeof (userPageLifetimes as any).hide === 'function') {\n ;(userPageLifetimes as any).hide.apply(this, args)\n }\n },\n resize: function resize(this: InternalRuntimeState, ...args: any[]) {\n if (isPage && typeof (pageLifecycleHooks as any).onResize === 'function') {\n ;(pageLifecycleHooks as any).onResize.call(this, ...args)\n if (typeof (userPageLifetimes as any).resize === 'function') {\n ;(userPageLifetimes as any).resize.apply(this, args)\n }\n return\n }\n callHookList(this, 'onResize', args)\n if (typeof (userPageLifetimes as any).resize === 'function') {\n ;(userPageLifetimes as any).resize.apply(this, args)\n }\n },\n routeDone: function routeDone(this: InternalRuntimeState, ...args: any[]) {\n if (isPage && typeof (pageLifecycleHooks as any).onRouteDone === 'function') {\n ;(pageLifecycleHooks as any).onRouteDone.call(this, ...args)\n if (typeof (userPageLifetimes as any).routeDone === 'function') {\n ;(userPageLifetimes as any).routeDone.apply(this, args)\n }\n return\n }\n callHookList(this, 'onRouteDone', args)\n if (typeof (userPageLifetimes as any).routeDone === 'function') {\n ;(userPageLifetimes as any).routeDone.apply(this, args)\n }\n },\n },\n methods: {\n ...pageMethodBridges,\n ...finalMethods,\n },\n options: finalOptions,\n })\n}\n","import type { ComponentPropsOptions, ComputedDefinitions, DefineComponentOptions, InternalRuntimeState, MethodDefinitions, MiniProgramComponentRawOptions, RuntimeApp } from '../types'\nimport type { WatchMap } from './watch'\nimport { WEVU_EXPOSED_KEY, WEVU_HOOKS_KEY } from '@weapp-core/constants'\nimport { resolveComponentFeatures } from './component/features'\nimport { createPageLifecycleHooks } from './component/lifecycle'\nimport { createComponentMethods } from './component/methods'\nimport { getRuntimeOwnerLabel, prepareComponentOptions } from './component/options'\nimport { createPropsSync } from './component/props'\nimport { registerComponentDefinition } from './component/registerDefinition'\n\n/**\n * 注册组件入口(框架内部使用)。\n * @internal\n */\nexport function registerComponent<D extends object, C extends ComputedDefinitions, M extends MethodDefinitions>(\n runtimeApp: RuntimeApp<D, C, M>,\n methods: MethodDefinitions,\n watch: WatchMap | undefined,\n setup: DefineComponentOptions<ComponentPropsOptions, D, C, M>['setup'],\n mpOptions: MiniProgramComponentRawOptions,\n) {\n const {\n userMethods,\n userLifetimes,\n userPageLifetimes,\n userOptions,\n restOptions,\n topLevelMethods,\n templateRefs,\n layoutHosts,\n userObservers,\n setupLifecycle,\n legacyCreated,\n isPage,\n features,\n userOnLoad,\n userOnUnload,\n userOnShow,\n userOnHide,\n userOnReady,\n userOnSaveExitState,\n userOnPullDownRefresh,\n userOnReachBottom,\n userOnPageScroll,\n userOnRouteDone,\n userOnTabItemTap,\n userOnResize,\n userOnShareAppMessage,\n userOnShareTimeline,\n userOnAddToFavorites,\n applyExtraInstanceFields,\n } = prepareComponentOptions(mpOptions)\n\n const {\n enableOnPullDownRefresh,\n enableOnReachBottom,\n enableOnPageScroll,\n enableOnRouteDone,\n enableOnRouteDoneFallback,\n enableOnTabItemTap,\n enableOnResize,\n enableOnShareAppMessage,\n enableOnShareTimeline,\n enableOnAddToFavorites,\n enableOnSaveExitState,\n effectiveOnSaveExitState,\n effectiveOnPullDownRefresh,\n effectiveOnReachBottom,\n effectiveOnPageScroll,\n effectiveOnRouteDone,\n effectiveOnTabItemTap,\n effectiveOnResize,\n effectiveOnShareAppMessage,\n effectiveOnShareTimeline,\n effectiveOnAddToFavorites,\n } = resolveComponentFeatures({\n features,\n userOnSaveExitState,\n userOnPullDownRefresh,\n userOnReachBottom,\n userOnPageScroll,\n userOnRouteDone,\n userOnTabItemTap,\n userOnResize,\n userOnShareAppMessage,\n userOnShareTimeline,\n userOnAddToFavorites,\n })\n\n const hasHook = (target: InternalRuntimeState, name: string) => {\n const hooks = target[WEVU_HOOKS_KEY]\n if (!hooks) {\n return false\n }\n const entry = (hooks as any)[name]\n if (!entry) {\n return false\n }\n if (Array.isArray(entry)) {\n return entry.length > 0\n }\n return typeof entry === 'function'\n }\n\n // 自动对齐 Vue 3 的 expose:\n // - 若用户未提供 component-export 的 export(),默认返回 setup() 中 expose() 写入的 __wevuExposed\n // - 若用户同时提供 export() 与 expose(),则自动浅合并(export() 优先级更高)\n {\n const userExport = (restOptions as any).export\n ;(restOptions as any).export = function __wevu_export(this: InternalRuntimeState) {\n const exposed = (this as any)[WEVU_EXPOSED_KEY] ?? {}\n const base = typeof userExport === 'function' ? userExport.call(this) : {}\n\n if (base && typeof base === 'object' && !Array.isArray(base)) {\n return {\n ...exposed,\n ...base,\n }\n }\n\n // 若用户 export() 返回非对象(理论上不应发生),则保持原返回值;否则回退 exposed\n return base ?? exposed\n }\n }\n\n // 默认启用多 slot 以兼容微信小程序具名插槽写法;用户显式配置时保持原值\n const finalOptions = {\n multipleSlots: (userOptions as any).multipleSlots ?? true,\n ...(userOptions as any),\n }\n\n const { attachWevuPropKeys, syncWevuPropsFromInstance, finalObservers } = createPropsSync({\n restOptions,\n userObservers,\n })\n\n const { finalMethods } = createComponentMethods({\n userMethods: {\n ...topLevelMethods,\n ...userMethods,\n },\n runtimeMethods: methods,\n })\n\n const pageLifecycleHooks = createPageLifecycleHooks({\n runtimeApp,\n watch,\n setup,\n userOnLoad,\n userOnUnload,\n userOnShow,\n userOnHide,\n userOnReady,\n isPage,\n enableOnSaveExitState,\n enableOnPullDownRefresh,\n enableOnReachBottom,\n enableOnPageScroll,\n enableOnRouteDone,\n enableOnRouteDoneFallback,\n enableOnTabItemTap,\n enableOnResize,\n enableOnShareAppMessage,\n enableOnShareTimeline,\n enableOnAddToFavorites,\n effectiveOnSaveExitState,\n effectiveOnPullDownRefresh,\n effectiveOnReachBottom,\n effectiveOnPageScroll,\n effectiveOnRouteDone,\n effectiveOnTabItemTap,\n effectiveOnResize,\n effectiveOnShareAppMessage,\n effectiveOnShareTimeline,\n effectiveOnAddToFavorites,\n hasHook,\n })\n\n registerComponentDefinition({\n runtimeApp,\n watch,\n setup,\n restOptions,\n pageLifecycleHooks,\n finalObservers,\n userLifetimes,\n userPageLifetimes,\n finalMethods,\n finalOptions,\n applyExtraInstanceFields,\n templateRefs,\n layoutHosts,\n attachWevuPropKeys,\n setupLifecycle,\n syncWevuPropsFromInstance,\n isPage,\n legacyCreated,\n getRuntimeOwnerLabel,\n })\n}\n","import type {\n AppConfig,\n ComputedDefinitions,\n CreateAppOptions,\n MethodDefinitions,\n RuntimeApp,\n WevuPlugin,\n} from './types'\nimport { version } from '../version'\nimport { createRuntimeMount } from './app/mount'\nimport { applyWevuAppDefaults, INTERNAL_DEFAULTS_SCOPE_KEY } from './defaults'\nimport { getMiniProgramGlobalObject } from './platform'\nimport { ensureRuntimeAppProvides, setRuntimeAppProvidedValue } from './provideContext'\nimport { registerApp } from './register'\n\nexport function createApp<D extends object, C extends ComputedDefinitions, M extends MethodDefinitions>(\n options: CreateAppOptions<D, C, M>,\n): RuntimeApp<D, C, M> {\n const defaultsScope = (options as any)[INTERNAL_DEFAULTS_SCOPE_KEY] as string | undefined\n const resolvedOptions = defaultsScope === 'component'\n ? options\n : applyWevuAppDefaults(options)\n const {\n [INTERNAL_DEFAULTS_SCOPE_KEY]: _ignoredDefaultsScope,\n data,\n computed: computedOptions,\n methods,\n setData: setDataOptions,\n watch: appWatch,\n setup: appSetup,\n ...mpOptions\n } = resolvedOptions\n const resolvedMethods = methods ?? ({} as M)\n const resolvedComputed = computedOptions ?? ({} as C)\n\n const installedPlugins = new Set<WevuPlugin>()\n const appUnmountCleanups = new Set<() => void>()\n let appUnmounted = false\n const appConfig: AppConfig = { globalProperties: {} }\n const mount = createRuntimeMount<D, C, M>({\n data,\n resolvedComputed,\n resolvedMethods,\n appConfig,\n setDataOptions,\n })\n\n const runtimeApp: RuntimeApp<D, C, M> = {\n mount,\n use(plugin: WevuPlugin, ...options: any[]) {\n if (!plugin || installedPlugins.has(plugin)) {\n return runtimeApp\n }\n installedPlugins.add(plugin)\n if (typeof plugin === 'function') {\n plugin(runtimeApp, ...options)\n }\n else if (typeof plugin.install === 'function') {\n plugin.install(runtimeApp, ...options)\n }\n else {\n throw new TypeError('插件必须是函数,或包含 install 方法的对象')\n }\n return runtimeApp\n },\n provide(key: any, value: any) {\n setRuntimeAppProvidedValue(runtimeApp, key, value)\n return runtimeApp\n },\n onUnmount(cleanup: () => void) {\n if (typeof cleanup !== 'function') {\n throw new TypeError('onUnmount 只接受函数')\n }\n if (appUnmounted) {\n cleanup()\n return runtimeApp\n }\n appUnmountCleanups.add(cleanup)\n return runtimeApp\n },\n unmount() {\n if (appUnmounted) {\n return\n }\n appUnmounted = true\n for (const cleanup of appUnmountCleanups) {\n cleanup()\n }\n appUnmountCleanups.clear()\n },\n config: appConfig,\n version,\n }\n\n const hasGlobalApp = typeof App === 'function'\n\n try {\n ensureRuntimeAppProvides(runtimeApp)\n Object.defineProperty(runtimeApp as Record<string, any>, '__wevuSetDataOptions', {\n value: setDataOptions,\n configurable: true,\n enumerable: false,\n writable: false,\n })\n }\n catch {\n ;(runtimeApp as any).__wevuSetDataOptions = setDataOptions\n }\n\n if (hasGlobalApp) {\n const globalObject = getMiniProgramGlobalObject()\n const appRegisterKey = '__wevuAppRegistered'\n const hasRegistered = globalObject ? Boolean(globalObject[appRegisterKey]) : false\n // 开发者工具/HMR 可能重复执行入口,避免多次 App() 导致 AppService 事件监听累积。\n if (!hasRegistered) {\n if (globalObject) {\n globalObject[appRegisterKey] = true\n }\n // 若检测到全局 App 构造器则自动注册小程序 App\n registerApp<D, C, M>(runtimeApp, (methods ?? {}) as any, appWatch as any, appSetup as any, mpOptions as any)\n }\n }\n\n return runtimeApp\n}\n","import type {\n ComponentPropsOptions,\n MiniProgramComponentPropertyOption,\n MiniProgramComponentShortProperty,\n} from '../types'\nimport {\n WEVU_GENERIC_SLOT_OWNER_DATA_KEY,\n WEVU_GENERIC_SLOT_OWNER_ID_ATTR,\n WEVU_GENERIC_SLOT_OWNER_ID_PROP,\n WEVU_GENERIC_SLOT_OWNER_PROP_PREFIX,\n WEVU_GENERIC_SLOT_OWNER_PROPS_ATTR,\n WEVU_GENERIC_SLOT_PROPS_DATA_KEY,\n WEVU_GENERIC_SLOT_SCOPE_ATTR,\n WEVU_GENERIC_SLOT_SCOPE_PROP,\n WEVU_NATIVE_SLOT_SCOPE_DATA_KEY,\n WEVU_SLOT_NAMES_PROP,\n WEVU_SLOT_OWNER_ID_KEY,\n WEVU_SLOT_OWNER_ID_PROP,\n WEVU_SLOT_OWNER_KEY,\n WEVU_SLOT_PROPS_DATA_KEY,\n WEVU_SLOT_SCOPE_KEY,\n} from '@weapp-core/constants'\nimport { hasOwn } from '../../utils'\nimport { rememberSlotOwnerId } from '../scopedSlots'\n\nconst ALLOW_NULL_PROP_INPUT_KEY = '__wevu_allowNullPropInput'\nconst PUBLIC_ALLOW_NULL_PROP_INPUT_KEY = 'allowNullPropInput'\n\nconst NATIVE_PROPERTY_TYPE_MAP = new Map<unknown, MiniProgramComponentShortProperty | null>([\n [String, String],\n [Number, Number],\n [Boolean, Boolean],\n [Object, Object],\n [Array, Array],\n ['String', String],\n ['Number', Number],\n ['Boolean', Boolean],\n ['Object', Object],\n ['Array', Array],\n [null, null],\n ['null', null],\n ['Null', null],\n])\n\nfunction toNativePropertyType(candidate: unknown) {\n return NATIVE_PROPERTY_TYPE_MAP.get(candidate)\n}\n\nfunction normalizeTypeCandidates(raw: unknown) {\n if (raw === undefined) {\n return []\n }\n const source = Array.isArray(raw) ? raw : [raw]\n const normalized: Array<MiniProgramComponentShortProperty | null> = []\n source.forEach((item) => {\n const mapped = toNativePropertyType(item)\n if (mapped === undefined) {\n return\n }\n if (!normalized.includes(mapped)) {\n normalized.push(mapped)\n }\n })\n const requiredNativeTypes = normalized.filter((item): item is MiniProgramComponentShortProperty => item !== null)\n if (requiredNativeTypes.length > 0) {\n return requiredNativeTypes\n }\n if (normalized.includes(null)) {\n return [null]\n }\n return [null]\n}\n\nfunction applyTypeOptions(target: Record<string, any>, rawType: unknown) {\n const candidates = normalizeTypeCandidates(rawType)\n if (candidates.length === 0) {\n return\n }\n\n target.type = candidates[0]\n if (candidates.length > 1) {\n const optionalTypes: any[] = []\n for (const candidate of candidates.slice(1)) {\n if (!optionalTypes.includes(candidate)) {\n optionalTypes.push(candidate)\n }\n }\n if (optionalTypes.length > 0) {\n target.optionalTypes = optionalTypes\n }\n }\n}\n\nfunction appendOptionalType(target: Record<string, any>, candidate: unknown) {\n if (candidate === undefined || target.type === candidate) {\n return\n }\n const optionalTypes = Array.isArray(target.optionalTypes)\n ? [...target.optionalTypes]\n : []\n if (optionalTypes.includes(candidate)) {\n return\n }\n optionalTypes.push(candidate)\n target.optionalTypes = optionalTypes\n}\n\nfunction normalizeOptionalTypeCandidates(raw: unknown) {\n if (!Array.isArray(raw)) {\n return []\n }\n const normalized: MiniProgramComponentShortProperty[] = []\n raw.forEach((item) => {\n const mapped = toNativePropertyType(item)\n if (mapped === undefined || mapped === null || normalized.includes(mapped)) {\n return\n }\n normalized.push(mapped)\n })\n return normalized\n}\n\nfunction normalizeExplicitPropertyDefinition(\n definition: unknown,\n allowNullPropInput: boolean,\n) {\n if (definition === undefined) {\n return undefined\n }\n if (definition === null) {\n return { type: null }\n }\n if (Array.isArray(definition) || typeof definition === 'function') {\n const propOptions: Record<string, any> = {}\n applyTypeOptions(propOptions, definition)\n if (allowNullPropInput && propOptions.type !== null) {\n appendOptionalType(propOptions, null)\n }\n if (!hasOwn(propOptions, 'type')) {\n propOptions.type = null\n }\n return propOptions\n }\n if (typeof definition !== 'object') {\n return definition\n }\n\n const propOptions: Record<string, any> = {\n ...(definition as Record<string, any>),\n }\n\n if ('type' in propOptions) {\n const normalizedTypes = normalizeTypeCandidates(propOptions.type)\n propOptions.type = normalizedTypes[0] ?? null\n const existingOptionalTypes = normalizeOptionalTypeCandidates(propOptions.optionalTypes)\n for (const candidate of normalizedTypes.slice(1)) {\n if (candidate !== null && !existingOptionalTypes.includes(candidate)) {\n existingOptionalTypes.push(candidate)\n }\n }\n if (existingOptionalTypes.length > 0) {\n propOptions.optionalTypes = existingOptionalTypes\n }\n else {\n delete propOptions.optionalTypes\n }\n }\n\n if (!hasOwn(propOptions, 'type')) {\n propOptions.type = null\n }\n\n if (allowNullPropInput && propOptions.type !== null) {\n appendOptionalType(propOptions, null)\n }\n\n return propOptions\n}\n\nfunction normalizeExplicitProperties(\n properties: MiniProgramComponentPropertyOption,\n allowNullPropInput: boolean,\n) {\n const normalizedProperties: Record<string, any> = {}\n Object.entries(properties).forEach(([key, definition]) => {\n const normalizedDefinition = normalizeExplicitPropertyDefinition(definition, allowNullPropInput)\n if (normalizedDefinition !== undefined) {\n normalizedProperties[key] = normalizedDefinition\n }\n })\n return normalizedProperties\n}\n\nfunction syncSlotOwnerId(this: any, next: unknown) {\n rememberSlotOwnerId(next)\n if (typeof next !== 'string') {\n return\n }\n this?.setData?.({\n [WEVU_SLOT_OWNER_ID_KEY]: next,\n [WEVU_SLOT_OWNER_ID_PROP]: next,\n [WEVU_GENERIC_SLOT_OWNER_ID_PROP]: next,\n [WEVU_GENERIC_SLOT_OWNER_ID_ATTR]: next,\n })\n}\n\nfunction normalizeSlotScopeValue(value: unknown) {\n if (!value || typeof value !== 'object') {\n return {}\n }\n if (!Array.isArray(value)) {\n return value\n }\n const result: Record<string, unknown> = {}\n for (let i = 0; i < value.length; i += 2) {\n const key = value[i]\n if (typeof key === 'string' && key) {\n result[key] = value[i + 1]\n }\n }\n return result\n}\n\nfunction syncNativeSlotScope(this: any, next: unknown) {\n const slotScope = normalizeSlotScopeValue(next)\n const payload: Record<string, unknown> = {\n [WEVU_NATIVE_SLOT_SCOPE_DATA_KEY]: slotScope,\n }\n for (const [key, value] of Object.entries(slotScope)) {\n if (value !== undefined) {\n payload[key] = value\n }\n }\n this?.setData?.(payload)\n}\n\nfunction syncSlotOwnerProps(this: any, next: unknown) {\n const payload: Record<string, unknown> = {\n [WEVU_GENERIC_SLOT_OWNER_PROPS_ATTR]: next,\n }\n const ownerProps = normalizeSlotScopeValue(next)\n payload[WEVU_SLOT_OWNER_KEY] = {\n ...(this?.data?.[WEVU_SLOT_OWNER_KEY] ?? {}),\n ...ownerProps,\n }\n payload[WEVU_GENERIC_SLOT_OWNER_DATA_KEY] = {\n ...(this?.data?.[WEVU_GENERIC_SLOT_OWNER_DATA_KEY] ?? {}),\n ...ownerProps,\n }\n payload[WEVU_SLOT_PROPS_DATA_KEY] = ownerProps\n payload[WEVU_GENERIC_SLOT_PROPS_DATA_KEY] = ownerProps\n for (const [key, value] of Object.entries(ownerProps)) {\n if (value !== undefined) {\n payload[`${WEVU_GENERIC_SLOT_OWNER_PROP_PREFIX}${key}`] = value\n }\n }\n this?.setData?.(payload)\n}\n\nexport function normalizeProps(\n baseOptions: Record<string, any>,\n props?: ComponentPropsOptions,\n explicitProperties?: MiniProgramComponentPropertyOption,\n) {\n const allowNullPropInput = Boolean(\n (baseOptions as any)[ALLOW_NULL_PROP_INPUT_KEY]\n ?? (baseOptions as any)[PUBLIC_ALLOW_NULL_PROP_INPUT_KEY],\n )\n const {\n [ALLOW_NULL_PROP_INPUT_KEY]: _ignoredAllowNullPropInput,\n [PUBLIC_ALLOW_NULL_PROP_INPUT_KEY]: _ignoredPublicAllowNullPropInput,\n ...normalizedBaseOptions\n } = baseOptions\n const baseProperties = (baseOptions as any).properties\n const resolvedExplicit = explicitProperties\n ?? (baseProperties && typeof baseProperties === 'object' ? (baseProperties as any) : undefined)\n const attachInternalProps = (source?: Record<string, any>) => {\n const next = { ...(source ?? {}) }\n if (!hasOwn(next, WEVU_SLOT_OWNER_ID_PROP)) {\n next[WEVU_SLOT_OWNER_ID_PROP] = { type: String, value: '', observer: syncSlotOwnerId }\n }\n if (!hasOwn(next, WEVU_GENERIC_SLOT_OWNER_ID_PROP)) {\n next[WEVU_GENERIC_SLOT_OWNER_ID_PROP] = { type: String, value: '', observer: syncSlotOwnerId }\n }\n if (!hasOwn(next, WEVU_GENERIC_SLOT_OWNER_ID_ATTR)) {\n next[WEVU_GENERIC_SLOT_OWNER_ID_ATTR] = { type: String, value: '', observer: syncSlotOwnerId }\n }\n if (!hasOwn(next, WEVU_GENERIC_SLOT_OWNER_PROPS_ATTR)) {\n next[WEVU_GENERIC_SLOT_OWNER_PROPS_ATTR] = { type: null, value: null, observer: syncSlotOwnerProps }\n }\n if (!hasOwn(next, WEVU_SLOT_SCOPE_KEY)) {\n next[WEVU_SLOT_SCOPE_KEY] = { type: null, value: null, observer: syncNativeSlotScope }\n }\n if (!hasOwn(next, WEVU_GENERIC_SLOT_SCOPE_PROP)) {\n next[WEVU_GENERIC_SLOT_SCOPE_PROP] = { type: null, value: null, observer: syncNativeSlotScope }\n }\n if (!hasOwn(next, WEVU_GENERIC_SLOT_SCOPE_ATTR)) {\n next[WEVU_GENERIC_SLOT_SCOPE_ATTR] = { type: null, value: null, observer: syncNativeSlotScope }\n }\n if (!hasOwn(next, WEVU_SLOT_NAMES_PROP)) {\n next[WEVU_SLOT_NAMES_PROP] = { type: null, value: null }\n }\n return next\n }\n\n if (resolvedExplicit || !props) {\n const {\n properties: _ignored,\n ...rest\n } = normalizedBaseOptions\n const normalizedExplicitProperties = resolvedExplicit\n ? allowNullPropInput\n ? normalizeExplicitProperties(resolvedExplicit as any, allowNullPropInput)\n : (resolvedExplicit as any)\n : undefined\n return {\n ...rest,\n properties: attachInternalProps(normalizedExplicitProperties),\n }\n }\n\n const properties: Record<string, any> = {}\n Object.entries(props).forEach(([key, definition]) => {\n if (definition === undefined) {\n return\n }\n if (definition === null) {\n properties[key] = { type: null }\n return\n }\n if (Array.isArray(definition) || typeof definition === 'function') {\n const propOptions: Record<string, any> = {}\n applyTypeOptions(propOptions, definition)\n if (allowNullPropInput && propOptions.type !== null) {\n appendOptionalType(propOptions, null)\n }\n if (!hasOwn(propOptions, 'type')) {\n propOptions.type = null\n }\n properties[key] = propOptions\n return\n }\n if (typeof definition === 'object') {\n // 在 Vue <script setup> 中,defineModel() 会生成空的 modifiers props。\n if (key.endsWith('Modifiers') && Object.keys(definition).length === 0) {\n properties[key] = { type: Object, value: {} }\n return\n }\n const propOptions: Record<string, any> = {}\n if ('type' in definition && definition.type !== undefined) {\n applyTypeOptions(propOptions, (definition as any).type)\n }\n if (Array.isArray((definition as any).optionalTypes)) {\n const optionalTypes = (definition as any).optionalTypes.map((item: unknown) => toNativePropertyType(item)).filter((item: unknown): item is MiniProgramComponentShortProperty => item !== undefined && item !== null)\n if (optionalTypes.length > 0) {\n const existingOptionalTypes = Array.isArray(propOptions.optionalTypes)\n ? propOptions.optionalTypes as any[]\n : []\n for (const optionalType of optionalTypes) {\n if (optionalType === propOptions.type) {\n continue\n }\n if (!existingOptionalTypes.includes(optionalType)) {\n existingOptionalTypes.push(optionalType)\n }\n }\n if (existingOptionalTypes.length > 0) {\n propOptions.optionalTypes = existingOptionalTypes\n }\n }\n }\n if ('observer' in definition && (typeof (definition as any).observer === 'function' || typeof (definition as any).observer === 'string')) {\n propOptions.observer = (definition as any).observer\n }\n const defaultValue = 'default' in definition ? (definition as any).default : (definition as any).value\n if (defaultValue !== undefined) {\n propOptions.value = typeof defaultValue === 'function' ? (defaultValue as any)() : defaultValue\n }\n if (allowNullPropInput && propOptions.type !== null) {\n appendOptionalType(propOptions, null)\n }\n if (!hasOwn(propOptions, 'type')) {\n propOptions.type = null\n }\n properties[key] = propOptions\n }\n })\n\n return {\n ...normalizedBaseOptions,\n properties: attachInternalProps(properties),\n }\n}\n","/* eslint-disable ts/no-use-before-define */\nimport type { InlineExpressionMap } from '../register/inline'\nimport type { ComputedDefinitions } from '../types'\nimport {\n WEVU_GENERIC_SLOT_OWNER_DATA_KEY,\n WEVU_GENERIC_SLOT_OWNER_ID_ATTR,\n WEVU_GENERIC_SLOT_OWNER_ID_PROP,\n WEVU_GENERIC_SLOT_OWNER_PROP_PREFIX,\n WEVU_GENERIC_SLOT_OWNER_PROPS_ATTR,\n WEVU_GENERIC_SLOT_PROPS_ATTR,\n WEVU_GENERIC_SLOT_PROPS_DATA_ATTR,\n WEVU_GENERIC_SLOT_PROPS_DATA_KEY,\n WEVU_GENERIC_SLOT_PROPS_PROP,\n WEVU_GENERIC_SLOT_SCOPE_ATTR,\n WEVU_GENERIC_SLOT_SCOPE_PROP,\n WEVU_INLINE_MAP_KEY,\n WEVU_OWNER_HANDLER,\n WEVU_SLOT_OWNER_ID_KEY,\n WEVU_SLOT_OWNER_ID_PROP,\n WEVU_SLOT_OWNER_KEY,\n WEVU_SLOT_OWNER_PROXY_KEY,\n WEVU_SLOT_PROPS_DATA_KEY,\n WEVU_SLOT_PROPS_KEY,\n WEVU_SLOT_SCOPE_KEY,\n} from '@weapp-core/constants'\nimport { markRaw } from '../../reactivity'\nimport { hasOwn } from '../../utils'\nimport { cloneSnapshotValue } from '../app/setData/snapshot'\nimport { resolveDatasetEventValue, runInlineExpression } from '../register/inline'\nimport { getFallbackSlotOwnerId, getOwnerProxy, getOwnerSnapshot, rememberSlotOwnerId, subscribeOwner } from '../scopedSlots'\n\nconst AMP_RE = /&/g\nconst QUOT_RE = /"/g\nconst NUM_QUOT_RE = /"/g\nconst APOS_RE = /'/g\nconst NUM_APOS_RE = /'/g\nconst LT_RE = /</g\nconst GT_RE = />/g\nconst OWNER_PROPS_OVERRIDE_KEY = '__wvOwnerPropsOverride'\nconst SLOT_PROPS_OVERRIDE_KEY = '__wvSlotPropsOverride'\nconst SLOT_SCOPE_OVERRIDE_KEY = '__wvSlotScopeOverride'\n\nfunction decodeWxmlEntities(value: string) {\n return value\n .replace(AMP_RE, '&')\n .replace(QUOT_RE, '\"')\n .replace(NUM_QUOT_RE, '\"')\n .replace(APOS_RE, '\\'')\n .replace(NUM_APOS_RE, '\\'')\n .replace(LT_RE, '<')\n .replace(GT_RE, '>')\n}\n\nfunction parseInlineArgs(event: any) {\n const dataset = event?.currentTarget?.dataset ?? event?.target?.dataset ?? {}\n const argsRaw = resolveDatasetEventValue(dataset, 'wvArgs', event)\n let args: any[] = []\n if (Array.isArray(argsRaw)) {\n args = argsRaw\n }\n else if (typeof argsRaw === 'string') {\n try {\n args = JSON.parse(argsRaw)\n }\n catch {\n try {\n args = JSON.parse(decodeWxmlEntities(argsRaw))\n }\n catch {\n args = []\n }\n }\n }\n if (!Array.isArray(args)) {\n args = []\n }\n return args.map((item: any) => item === '$event' ? event : item)\n}\n\nfunction normalizeSlotBindings(value: unknown): Record<string, any> {\n if (!value || typeof value !== 'object') {\n return {}\n }\n if (Array.isArray(value)) {\n const result: Record<string, any> = {}\n for (let i = 0; i < value.length; i += 2) {\n const key = value[i]\n if (typeof key === 'string' && key) {\n result[key] = value[i + 1]\n }\n }\n return result\n }\n return value as Record<string, any>\n}\n\nfunction mergeSlotProps(\n instance: any,\n override?: Record<string, unknown>,\n) {\n if (hasOwn(override ?? {}, WEVU_SLOT_SCOPE_KEY)) {\n instance[SLOT_SCOPE_OVERRIDE_KEY] = (override as any)[WEVU_SLOT_SCOPE_KEY]\n }\n else if (hasOwn(override ?? {}, WEVU_GENERIC_SLOT_SCOPE_PROP)) {\n instance[SLOT_SCOPE_OVERRIDE_KEY] = (override as any)[WEVU_GENERIC_SLOT_SCOPE_PROP]\n }\n else if (hasOwn(override ?? {}, WEVU_GENERIC_SLOT_SCOPE_ATTR)) {\n instance[SLOT_SCOPE_OVERRIDE_KEY] = (override as any)[WEVU_GENERIC_SLOT_SCOPE_ATTR]\n }\n if (hasOwn(override ?? {}, WEVU_SLOT_PROPS_KEY)) {\n instance[SLOT_PROPS_OVERRIDE_KEY] = (override as any)[WEVU_SLOT_PROPS_KEY]\n }\n else if (hasOwn(override ?? {}, WEVU_GENERIC_SLOT_PROPS_PROP)) {\n instance[SLOT_PROPS_OVERRIDE_KEY] = (override as any)[WEVU_GENERIC_SLOT_PROPS_PROP]\n }\n else if (hasOwn(override ?? {}, WEVU_GENERIC_SLOT_PROPS_ATTR)) {\n instance[SLOT_PROPS_OVERRIDE_KEY] = (override as any)[WEVU_GENERIC_SLOT_PROPS_ATTR]\n }\n const scopeSource = hasOwn(override ?? {}, WEVU_SLOT_SCOPE_KEY)\n ? (override as any)[WEVU_SLOT_SCOPE_KEY]\n : hasOwn(override ?? {}, WEVU_GENERIC_SLOT_SCOPE_PROP)\n ? (override as any)[WEVU_GENERIC_SLOT_SCOPE_PROP]\n : hasOwn(override ?? {}, WEVU_GENERIC_SLOT_SCOPE_ATTR)\n ? (override as any)[WEVU_GENERIC_SLOT_SCOPE_ATTR]\n : hasOwn(instance ?? {}, SLOT_SCOPE_OVERRIDE_KEY)\n ? instance[SLOT_SCOPE_OVERRIDE_KEY]\n : instance?.properties?.[WEVU_SLOT_SCOPE_KEY]\n ?? instance?.properties?.[WEVU_GENERIC_SLOT_SCOPE_PROP]\n ?? instance?.properties?.[WEVU_GENERIC_SLOT_SCOPE_ATTR]\n const propsSource = hasOwn(override ?? {}, WEVU_SLOT_PROPS_KEY)\n ? (override as any)[WEVU_SLOT_PROPS_KEY]\n : hasOwn(override ?? {}, WEVU_GENERIC_SLOT_PROPS_PROP)\n ? (override as any)[WEVU_GENERIC_SLOT_PROPS_PROP]\n : hasOwn(override ?? {}, WEVU_GENERIC_SLOT_PROPS_ATTR)\n ? (override as any)[WEVU_GENERIC_SLOT_PROPS_ATTR]\n : hasOwn(instance ?? {}, SLOT_PROPS_OVERRIDE_KEY)\n ? instance[SLOT_PROPS_OVERRIDE_KEY]\n : instance?.properties?.[WEVU_SLOT_PROPS_KEY]\n ?? instance?.properties?.[WEVU_GENERIC_SLOT_PROPS_PROP]\n ?? instance?.properties?.[WEVU_GENERIC_SLOT_PROPS_ATTR]\n const scope = normalizeSlotBindings(scopeSource)\n const slotProps = normalizeSlotBindings(propsSource)\n const merged = { ...scope, ...slotProps }\n syncScopedSlotData(instance, {\n [WEVU_SLOT_PROPS_DATA_KEY]: merged,\n [WEVU_GENERIC_SLOT_PROPS_DATA_KEY]: merged,\n })\n}\n\nfunction resolveOwnerPropsOverride(instance: any, override?: unknown) {\n if (override !== undefined) {\n const ownerProps = normalizeSlotBindings(override)\n instance[OWNER_PROPS_OVERRIDE_KEY] = ownerProps\n return ownerProps\n }\n if (hasOwn(instance ?? {}, OWNER_PROPS_OVERRIDE_KEY)) {\n return normalizeSlotBindings(instance[OWNER_PROPS_OVERRIDE_KEY])\n }\n const properties = instance?.properties\n if (!properties || typeof properties !== 'object') {\n return {}\n }\n return normalizeSlotBindings(properties[WEVU_GENERIC_SLOT_OWNER_PROPS_ATTR])\n}\n\nfunction syncOwnerPropsOverride(instance: any, override?: unknown) {\n const ownerProps = resolveOwnerPropsOverride(instance, override)\n if (!Object.keys(ownerProps).length) {\n return ownerProps\n }\n syncRuntimeState(instance, {\n [WEVU_SLOT_OWNER_KEY]: {\n ...(instance?.__wevu?.state?.[WEVU_SLOT_OWNER_KEY] ?? {}),\n ...ownerProps,\n },\n [WEVU_GENERIC_SLOT_OWNER_DATA_KEY]: {\n ...(instance?.__wevu?.state?.[WEVU_GENERIC_SLOT_OWNER_DATA_KEY] ?? {}),\n ...ownerProps,\n },\n })\n syncNativeData(instance, createScopedSlotOwnerSetDataPayload(ownerProps))\n return ownerProps\n}\n\nfunction syncRuntimeState(instance: any, payload: Record<string, any>) {\n const state = instance?.__wevu?.state\n if (!state || typeof state !== 'object') {\n return\n }\n for (const [key, value] of Object.entries(payload)) {\n try {\n state[key] = value\n }\n catch {\n // 忽略运行时状态同步异常\n }\n }\n}\n\nfunction syncScopedSlotData(instance: any, payload: Record<string, any>) {\n syncRuntimeState(instance, payload)\n if (typeof instance?.setData === 'function') {\n instance.setData(payload)\n }\n}\n\nfunction syncSlotPropsDataSource(instance: any, source: unknown) {\n const slotProps = normalizeSlotBindings(source)\n instance[SLOT_PROPS_OVERRIDE_KEY] = {\n ...normalizeSlotBindings(instance?.[SLOT_PROPS_OVERRIDE_KEY]),\n ...slotProps,\n }\n syncScopedSlotData(instance, {\n [WEVU_SLOT_PROPS_DATA_KEY]: slotProps,\n [WEVU_GENERIC_SLOT_PROPS_DATA_KEY]: slotProps,\n })\n}\n\nfunction syncNativeData(instance: any, payload: Record<string, any>) {\n if (typeof instance?.setData === 'function') {\n instance.setData(payload)\n return\n }\n const data = instance?.data\n if (!data || typeof data !== 'object') {\n return\n }\n Object.assign(data, payload)\n}\n\nfunction assignDefinedBinding(target: Record<string, any>, key: unknown, value: unknown) {\n if (typeof key === 'string' && key && value !== undefined) {\n target[key] = value\n }\n}\n\nfunction mergeDefinedBindings(target: Record<string, any>, value: unknown) {\n const bindings = normalizeSlotBindings(value)\n for (const [key, bindingValue] of Object.entries(bindings)) {\n assignDefinedBinding(target, key, bindingValue)\n }\n}\n\nfunction createScopedSlotOwnerSetDataPayload(ownerSnapshot: Record<string, any>) {\n const payload: Record<string, any> = {\n [WEVU_SLOT_OWNER_KEY]: ownerSnapshot,\n [WEVU_GENERIC_SLOT_OWNER_DATA_KEY]: ownerSnapshot,\n [WEVU_SLOT_PROPS_DATA_KEY]: ownerSnapshot,\n [WEVU_GENERIC_SLOT_PROPS_DATA_KEY]: ownerSnapshot,\n }\n for (const [key, value] of Object.entries(ownerSnapshot)) {\n if (value === undefined) {\n continue\n }\n payload[`${WEVU_SLOT_OWNER_KEY}.${key}`] = value\n payload[`${WEVU_GENERIC_SLOT_OWNER_DATA_KEY}.${key}`] = value\n payload[`${WEVU_GENERIC_SLOT_OWNER_PROP_PREFIX}${key}`] = value\n }\n return payload\n}\n\nfunction resolveMergedSlotPropsData(instance: any, ownerSnapshot: Record<string, any>) {\n const slotProps = {\n ...ownerSnapshot,\n ...normalizeSlotBindings(instance?.[SLOT_SCOPE_OVERRIDE_KEY]),\n ...normalizeSlotBindings(instance?.[SLOT_PROPS_OVERRIDE_KEY]),\n }\n return slotProps\n}\n\nfunction collectScopedSlotOwnerComponentState(instance: any) {\n const owner = typeof instance?.selectOwnerComponent === 'function'\n ? instance.selectOwnerComponent()\n : undefined\n const parent = typeof owner?.selectOwnerComponent === 'function'\n ? owner.selectOwnerComponent()\n : undefined\n const ownerProps: Record<string, any> = {}\n const slotProps: Record<string, any> = {}\n\n const collectSource = (source: any) => {\n if (!source || typeof source !== 'object') {\n return\n }\n mergeDefinedBindings(ownerProps, source[WEVU_SLOT_OWNER_KEY])\n mergeDefinedBindings(ownerProps, source[WEVU_GENERIC_SLOT_OWNER_DATA_KEY])\n mergeDefinedBindings(ownerProps, source[WEVU_GENERIC_SLOT_OWNER_PROPS_ATTR])\n mergeDefinedBindings(slotProps, source[WEVU_SLOT_PROPS_DATA_KEY])\n mergeDefinedBindings(slotProps, source[WEVU_GENERIC_SLOT_PROPS_DATA_KEY])\n mergeDefinedBindings(slotProps, source[WEVU_GENERIC_SLOT_PROPS_DATA_ATTR])\n for (const [key, value] of Object.entries(source)) {\n if (key.startsWith(WEVU_GENERIC_SLOT_OWNER_PROP_PREFIX)) {\n assignDefinedBinding(ownerProps, key.slice(WEVU_GENERIC_SLOT_OWNER_PROP_PREFIX.length), value)\n }\n else if (key.startsWith(`${WEVU_GENERIC_SLOT_PROPS_DATA_ATTR}_`)) {\n mergeDefinedBindings(slotProps, value)\n }\n }\n }\n\n for (const component of [parent, owner]) {\n collectSource(component?.properties)\n collectSource(component?.data)\n collectSource(component)\n }\n\n return {\n ownerProps,\n slotProps,\n }\n}\n\nfunction syncOwnerComponentScopedSlotState(instance: any) {\n const { ownerProps, slotProps } = collectScopedSlotOwnerComponentState(instance)\n const merged = {\n ...slotProps,\n ...ownerProps,\n }\n if (!Object.keys(merged).length) {\n return\n }\n instance[OWNER_PROPS_OVERRIDE_KEY] = {\n ...normalizeSlotBindings(instance[OWNER_PROPS_OVERRIDE_KEY]),\n ...merged,\n }\n syncRuntimeState(instance, {\n [WEVU_SLOT_OWNER_KEY]: {\n ...(instance?.__wevu?.state?.[WEVU_SLOT_OWNER_KEY] ?? {}),\n ...merged,\n },\n [WEVU_GENERIC_SLOT_OWNER_DATA_KEY]: {\n ...(instance?.__wevu?.state?.[WEVU_GENERIC_SLOT_OWNER_DATA_KEY] ?? {}),\n ...merged,\n },\n [WEVU_SLOT_PROPS_DATA_KEY]: merged,\n [WEVU_GENERIC_SLOT_PROPS_DATA_KEY]: merged,\n })\n syncNativeData(instance, createScopedSlotOwnerSetDataPayload(merged))\n}\n\nfunction createScopedSlotComputedContext(instance: any, ownerSnapshot: Record<string, any>, ownerProxy: any) {\n const state = instance?.__wevu?.state\n return new Proxy(Object.create(null), {\n get(_target, key) {\n if (key === WEVU_SLOT_OWNER_PROXY_KEY) {\n return ownerProxy\n }\n if (key === WEVU_SLOT_OWNER_KEY || key === WEVU_GENERIC_SLOT_OWNER_DATA_KEY) {\n return ownerSnapshot\n }\n if (state && typeof state === 'object' && key in state) {\n return state[key as keyof typeof state]\n }\n return instance?.[key as keyof typeof instance]\n },\n has(_target, key) {\n return key === WEVU_SLOT_OWNER_PROXY_KEY\n || key === WEVU_SLOT_OWNER_KEY\n || key === WEVU_GENERIC_SLOT_OWNER_DATA_KEY\n || Boolean(state && typeof state === 'object' && key in state)\n || Boolean(instance && key in instance)\n },\n })\n}\n\nfunction collectScopedSlotComputedDataFromDefs(\n instance: any,\n ownerSnapshot: Record<string, any>,\n ownerProxy: any,\n computedDefs: ComputedDefinitions,\n) {\n const payload: Record<string, any> = {}\n const context = createScopedSlotComputedContext(instance, ownerSnapshot, ownerProxy)\n for (const [key, definition] of Object.entries(computedDefs)) {\n try {\n const getter = typeof definition === 'function' ? definition : definition?.get\n if (typeof getter !== 'function') {\n continue\n }\n const value = getter.call(context)\n if (value !== undefined) {\n payload[key] = cloneSnapshotValue(value)\n }\n }\n catch {\n // 忽略单个计算绑定失败,保持 scoped slot 其他绑定可继续同步。\n }\n }\n return payload\n}\n\nfunction collectScopedSlotComputedData(\n instance: any,\n ownerSnapshot: Record<string, any>,\n ownerProxy: any,\n computedDefs?: ComputedDefinitions,\n) {\n if (computedDefs && typeof computedDefs === 'object') {\n return collectScopedSlotComputedDataFromDefs(instance, ownerSnapshot, ownerProxy, computedDefs)\n }\n const computed = instance?.__wevu?.computed\n if (!computed || typeof computed !== 'object') {\n return {}\n }\n const payload: Record<string, any> = {}\n for (const key of Object.keys(computed)) {\n try {\n const value = computed[key]\n if (value !== undefined) {\n payload[key] = cloneSnapshotValue(value)\n }\n }\n catch {\n // 忽略单个计算绑定失败,保持 scoped slot 其他绑定可继续同步。\n }\n }\n return payload\n}\n\nfunction syncScopedSlotOwnerSnapshot(\n instance: any,\n snapshot: Record<string, any>,\n proxy: any,\n computedDefs?: ComputedDefinitions,\n) {\n const ownerSnapshot = {\n ...cloneSnapshotValue(snapshot || {}),\n ...resolveOwnerPropsOverride(instance),\n }\n const ownerProxy = proxy && typeof proxy === 'object' ? markRaw(proxy) : proxy\n instance[WEVU_SLOT_OWNER_PROXY_KEY] = ownerProxy\n syncRuntimeState(instance, {\n [WEVU_SLOT_OWNER_KEY]: ownerSnapshot,\n [WEVU_SLOT_OWNER_PROXY_KEY]: ownerProxy,\n })\n const flushSetupSnapshot = instance.__wevu?.__wevu_flushSetupSnapshotSync\n if (typeof flushSetupSnapshot === 'function') {\n flushSetupSnapshot()\n }\n const computedPayload = collectScopedSlotComputedData(instance, ownerSnapshot, ownerProxy, computedDefs)\n const mergedOwnerSnapshot = {\n ...ownerSnapshot,\n ...computedPayload,\n }\n for (const [key, value] of Object.entries(computedPayload)) {\n ownerSnapshot[key] = value\n }\n syncRuntimeState(instance, {\n [WEVU_SLOT_OWNER_KEY]: mergedOwnerSnapshot,\n })\n const payload = {\n ...computedPayload,\n ...createScopedSlotOwnerSetDataPayload(mergedOwnerSnapshot),\n }\n const slotPropsData = resolveMergedSlotPropsData(instance, mergedOwnerSnapshot)\n payload[WEVU_SLOT_PROPS_DATA_KEY] = slotPropsData\n payload[WEVU_GENERIC_SLOT_PROPS_DATA_KEY] = slotPropsData\n syncNativeData(instance, payload)\n}\n\nfunction enqueueScopedSlotOwnerSync(\n instance: any,\n snapshot: Record<string, any>,\n proxy: any,\n computedDefs?: ComputedDefinitions,\n) {\n instance.__wvOwnerPendingSnapshot = snapshot\n instance.__wvOwnerPendingProxy = proxy\n if (instance.__wvOwnerSyncTimer) {\n return\n }\n const flush = () => {\n instance.__wvOwnerSyncTimer = undefined\n const pendingSnapshot = instance.__wvOwnerPendingSnapshot\n const pendingProxy = instance.__wvOwnerPendingProxy\n instance.__wvOwnerPendingSnapshot = undefined\n instance.__wvOwnerPendingProxy = undefined\n syncScopedSlotOwnerSnapshot(instance, pendingSnapshot || {}, pendingProxy, computedDefs)\n }\n if (typeof setTimeout === 'function') {\n instance.__wvOwnerSyncTimer = setTimeout(flush, 0)\n }\n else {\n flush()\n }\n}\n\nfunction subscribeScopedSlotOwner(instance: any, ownerId: string, computedDefs?: ComputedDefinitions) {\n if (instance.__wvOwnerIdCurrent === ownerId) {\n return\n }\n if (typeof instance.__wvOwnerUnsub === 'function') {\n instance.__wvOwnerUnsub()\n }\n instance.__wvOwnerUnsub = undefined\n instance.__wvOwnerIdCurrent = ownerId\n if (!ownerId) {\n return\n }\n const updateOwner = (snapshot: Record<string, any>, proxy: any) => {\n enqueueScopedSlotOwnerSync(instance, snapshot, proxy, computedDefs)\n }\n instance.__wvOwnerUnsub = subscribeOwner(ownerId, updateOwner)\n const snapshot = getOwnerSnapshot(ownerId)\n if (snapshot) {\n updateOwner(snapshot, getOwnerProxy(ownerId))\n }\n}\n\nfunction resolveScopedSlotOwnerId(instance: any) {\n const ownOwnerId = resolveScopedSlotOwnOwnerId(instance)\n const resolveCandidate = (...values: unknown[]) => {\n for (const value of values) {\n if (typeof value === 'string' && value && value !== ownOwnerId) {\n rememberSlotOwnerId(value)\n return value\n }\n }\n return ''\n }\n const selfCandidate = (\n instance?.properties?.[WEVU_SLOT_OWNER_ID_KEY]\n || instance?.[WEVU_SLOT_OWNER_ID_KEY]\n )\n const resolveComponentOwnerId = (component: any) => {\n const data = component?.data\n const properties = component?.properties\n return resolveCandidate(\n properties?.[WEVU_GENERIC_SLOT_OWNER_ID_ATTR],\n properties?.[WEVU_GENERIC_SLOT_OWNER_ID_PROP],\n properties?.[WEVU_SLOT_OWNER_ID_PROP],\n properties?.[WEVU_SLOT_OWNER_ID_KEY],\n data?.[WEVU_GENERIC_SLOT_OWNER_ID_ATTR],\n data?.[WEVU_GENERIC_SLOT_OWNER_ID_PROP],\n data?.[WEVU_SLOT_OWNER_ID_PROP],\n data?.[WEVU_SLOT_OWNER_KEY]?.[WEVU_GENERIC_SLOT_OWNER_ID_ATTR],\n data?.[WEVU_SLOT_OWNER_KEY]?.[WEVU_GENERIC_SLOT_OWNER_ID_PROP],\n data?.[WEVU_SLOT_OWNER_KEY]?.[WEVU_SLOT_OWNER_ID_PROP],\n data?.[WEVU_SLOT_OWNER_KEY]?.[WEVU_SLOT_OWNER_ID_KEY],\n data?.[WEVU_SLOT_OWNER_KEY]?.[WEVU_SLOT_OWNER_KEY]?.[WEVU_GENERIC_SLOT_OWNER_ID_ATTR],\n data?.[WEVU_SLOT_OWNER_KEY]?.[WEVU_SLOT_OWNER_KEY]?.[WEVU_GENERIC_SLOT_OWNER_ID_PROP],\n data?.[WEVU_SLOT_OWNER_KEY]?.[WEVU_SLOT_OWNER_KEY]?.[WEVU_SLOT_OWNER_ID_PROP],\n data?.[WEVU_SLOT_OWNER_KEY]?.[WEVU_SLOT_OWNER_KEY]?.[WEVU_SLOT_OWNER_ID_KEY],\n component?.[WEVU_GENERIC_SLOT_OWNER_ID_ATTR],\n component?.[WEVU_GENERIC_SLOT_OWNER_ID_PROP],\n component?.[WEVU_SLOT_OWNER_ID_PROP],\n data?.[WEVU_SLOT_OWNER_ID_KEY],\n component?.[WEVU_SLOT_OWNER_ID_KEY],\n )\n }\n const propertyOwnerId = resolveCandidate(\n instance?.properties?.[WEVU_GENERIC_SLOT_OWNER_ID_ATTR],\n instance?.properties?.[WEVU_GENERIC_SLOT_OWNER_ID_PROP],\n instance?.properties?.[WEVU_SLOT_OWNER_ID_PROP],\n )\n if (propertyOwnerId) {\n return propertyOwnerId\n }\n const owner = typeof instance?.selectOwnerComponent === 'function'\n ? instance.selectOwnerComponent()\n : undefined\n const ownerId = resolveComponentOwnerId(owner)\n if (ownerId) {\n return ownerId\n }\n const parent = typeof owner?.selectOwnerComponent === 'function'\n ? owner.selectOwnerComponent()\n : undefined\n const parentOwnerId = resolveComponentOwnerId(parent)\n if (parentOwnerId) {\n return parentOwnerId\n }\n const directOwnerId = resolveCandidate(selfCandidate)\n if (directOwnerId) {\n return directOwnerId\n }\n const fallbackOwnerId = getFallbackSlotOwnerId()\n return fallbackOwnerId && fallbackOwnerId !== ownOwnerId ? fallbackOwnerId : ''\n}\n\nfunction enqueueScopedSlotOwnerPropertySubscription(\n instance: any,\n ownerId: unknown,\n computedDefs?: ComputedDefinitions,\n) {\n const ownOwnerId = resolveScopedSlotOwnOwnerId(instance)\n if (typeof ownerId !== 'string' || !ownerId || ownerId === ownOwnerId) {\n return\n }\n rememberSlotOwnerId(ownerId)\n enqueueScopedSlotOwnerSubscription(instance, ownerId, {}, computedDefs)\n}\n\nfunction resolveScopedSlotOwnerPropertyCandidate(instance: any, ...values: unknown[]) {\n const ownOwnerId = resolveScopedSlotOwnOwnerId(instance)\n for (const value of values) {\n if (typeof value === 'string' && value && value !== ownOwnerId) {\n return value\n }\n }\n return ''\n}\n\nfunction resolveScopedSlotOwnOwnerId(instance: any) {\n const directOwnerId = instance?.[WEVU_SLOT_OWNER_ID_KEY]\n if (typeof directOwnerId === 'string' && directOwnerId && directOwnerId !== instance?.properties?.[WEVU_SLOT_OWNER_ID_KEY]) {\n return directOwnerId\n }\n return ''\n}\n\nfunction enqueueScopedSlotOwnerSubscription(\n instance: any,\n ownerId: string,\n options: { preservePendingOwnerId?: boolean } = {},\n computedDefs?: ComputedDefinitions,\n) {\n if (\n options.preservePendingOwnerId\n && !ownerId\n && instance.__wvOwnerSubscribeTimer\n && typeof instance.__wvOwnerPendingId === 'string'\n && instance.__wvOwnerPendingId\n ) {\n return\n }\n instance.__wvOwnerPendingId = ownerId\n if (instance.__wvOwnerSubscribeTimer) {\n return\n }\n const flush = () => {\n instance.__wvOwnerSubscribeTimer = undefined\n const pendingOwnerId = instance.__wvOwnerPendingId\n instance.__wvOwnerPendingId = undefined\n subscribeScopedSlotOwner(instance, typeof pendingOwnerId === 'string' ? pendingOwnerId : '', computedDefs)\n }\n if (typeof setTimeout === 'function') {\n instance.__wvOwnerSubscribeTimer = setTimeout(flush, 0)\n }\n else {\n flush()\n }\n}\n\nfunction retryScopedSlotOwnerSubscription(instance: any, computedDefs?: ComputedDefinitions, remaining = 4) {\n if (remaining <= 0 || instance.__wvOwnerIdCurrent) {\n return\n }\n const retry = () => {\n const ownerId = resolveScopedSlotOwnerId(instance)\n if (ownerId) {\n enqueueScopedSlotOwnerSubscription(instance, ownerId, { preservePendingOwnerId: true }, computedDefs)\n return\n }\n retryScopedSlotOwnerSubscription(instance, computedDefs, remaining - 1)\n }\n if (typeof setTimeout === 'function') {\n instance.__wvOwnerRetryTimer = setTimeout(retry, 16)\n }\n else {\n retry()\n }\n}\n\nexport function createScopedSlotOptions(\n overrides?: { computed?: ComputedDefinitions, inlineMap?: InlineExpressionMap },\n) {\n const computedKeys = Object.keys(overrides?.computed ?? {})\n const scopedSlotComputed = overrides?.computed\n const baseOptions = {\n properties: {\n [WEVU_SLOT_OWNER_ID_KEY]: {\n type: String,\n value: '',\n observer(this: any, next: unknown) {\n const ownerId = resolveScopedSlotOwnerPropertyCandidate(\n this,\n this.properties?.[WEVU_GENERIC_SLOT_OWNER_ID_ATTR],\n this.properties?.[WEVU_GENERIC_SLOT_OWNER_ID_PROP],\n this.properties?.[WEVU_SLOT_OWNER_ID_PROP],\n next,\n )\n enqueueScopedSlotOwnerPropertySubscription(this, ownerId, scopedSlotComputed)\n },\n },\n [WEVU_SLOT_OWNER_ID_PROP]: {\n type: String,\n value: '',\n observer(this: any, next: unknown) {\n const ownerId = resolveScopedSlotOwnerPropertyCandidate(\n this,\n next,\n this.properties?.[WEVU_GENERIC_SLOT_OWNER_ID_ATTR],\n this.properties?.[WEVU_GENERIC_SLOT_OWNER_ID_PROP],\n this.properties?.[WEVU_SLOT_OWNER_ID_KEY],\n )\n enqueueScopedSlotOwnerPropertySubscription(this, ownerId, scopedSlotComputed)\n },\n },\n [WEVU_GENERIC_SLOT_OWNER_ID_PROP]: {\n type: String,\n value: '',\n observer(this: any, next: unknown) {\n const ownerId = resolveScopedSlotOwnerPropertyCandidate(\n this,\n next,\n this.properties?.[WEVU_GENERIC_SLOT_OWNER_ID_ATTR],\n this.properties?.[WEVU_SLOT_OWNER_ID_PROP],\n this.properties?.[WEVU_SLOT_OWNER_ID_KEY],\n )\n enqueueScopedSlotOwnerPropertySubscription(this, ownerId, scopedSlotComputed)\n },\n },\n [WEVU_GENERIC_SLOT_OWNER_ID_ATTR]: {\n type: String,\n value: '',\n observer(this: any, next: unknown) {\n const ownerId = resolveScopedSlotOwnerPropertyCandidate(\n this,\n next,\n this.properties?.[WEVU_GENERIC_SLOT_OWNER_ID_PROP],\n this.properties?.[WEVU_SLOT_OWNER_ID_PROP],\n this.properties?.[WEVU_SLOT_OWNER_ID_KEY],\n )\n enqueueScopedSlotOwnerPropertySubscription(this, ownerId, scopedSlotComputed)\n },\n },\n [WEVU_GENERIC_SLOT_OWNER_PROPS_ATTR]: {\n type: null,\n value: null,\n observer(this: any, next: unknown) {\n syncOwnerPropsOverride(this, next)\n if (this.__wvOwnerIdCurrent) {\n const snapshot = getOwnerSnapshot(this.__wvOwnerIdCurrent) ?? {}\n syncScopedSlotOwnerSnapshot(this, snapshot, getOwnerProxy(this.__wvOwnerIdCurrent), scopedSlotComputed)\n }\n },\n },\n [WEVU_SLOT_PROPS_KEY]: {\n type: null,\n value: null,\n observer(this: any, next: unknown) {\n mergeSlotProps(this, { [WEVU_SLOT_PROPS_KEY]: next })\n },\n },\n [WEVU_GENERIC_SLOT_PROPS_PROP]: {\n type: null,\n value: null,\n observer(this: any, next: unknown) {\n mergeSlotProps(this, { [WEVU_GENERIC_SLOT_PROPS_PROP]: next })\n },\n },\n [WEVU_GENERIC_SLOT_PROPS_ATTR]: {\n type: null,\n value: null,\n observer(this: any, next: unknown) {\n mergeSlotProps(this, { [WEVU_GENERIC_SLOT_PROPS_ATTR]: next })\n },\n },\n [WEVU_GENERIC_SLOT_PROPS_DATA_ATTR]: {\n type: null,\n value: null,\n observer(this: any, next: unknown) {\n syncSlotPropsDataSource(this, next)\n },\n },\n [WEVU_SLOT_SCOPE_KEY]: {\n type: null,\n value: null,\n observer(this: any, next: unknown) {\n mergeSlotProps(this, { [WEVU_SLOT_SCOPE_KEY]: next })\n },\n },\n [WEVU_GENERIC_SLOT_SCOPE_PROP]: {\n type: null,\n value: null,\n observer(this: any, next: unknown) {\n mergeSlotProps(this, { [WEVU_GENERIC_SLOT_SCOPE_PROP]: next })\n },\n },\n [WEVU_GENERIC_SLOT_SCOPE_ATTR]: {\n type: null,\n value: null,\n observer(this: any, next: unknown) {\n mergeSlotProps(this, { [WEVU_GENERIC_SLOT_SCOPE_ATTR]: next })\n },\n },\n },\n data: () => {\n const initialData: Record<string, any> = {\n [WEVU_SLOT_OWNER_KEY]: {},\n [WEVU_GENERIC_SLOT_OWNER_DATA_KEY]: {},\n [WEVU_SLOT_PROPS_DATA_KEY]: {},\n [WEVU_GENERIC_SLOT_PROPS_DATA_KEY]: {},\n }\n for (const key of computedKeys) {\n initialData[key] = null\n }\n return initialData\n },\n options: {\n virtualHost: true,\n },\n setData: computedKeys.length\n ? {\n includeComputed: true,\n pick: [\n ...computedKeys,\n WEVU_SLOT_OWNER_KEY,\n WEVU_GENERIC_SLOT_OWNER_DATA_KEY,\n WEVU_SLOT_PROPS_DATA_KEY,\n WEVU_GENERIC_SLOT_PROPS_DATA_KEY,\n ],\n }\n : undefined,\n lifetimes: {\n attached(this: any) {\n const ownerId = resolveScopedSlotOwnerId(this)\n mergeSlotProps(this)\n syncOwnerPropsOverride(this)\n syncOwnerComponentScopedSlotState(this)\n enqueueScopedSlotOwnerSubscription(this, ownerId, { preservePendingOwnerId: true }, scopedSlotComputed)\n if (!ownerId) {\n retryScopedSlotOwnerSubscription(this, scopedSlotComputed)\n }\n },\n ready(this: any) {\n const ownerId = resolveScopedSlotOwnerId(this)\n mergeSlotProps(this)\n syncOwnerPropsOverride(this)\n syncOwnerComponentScopedSlotState(this)\n enqueueScopedSlotOwnerSubscription(this, ownerId, { preservePendingOwnerId: true }, scopedSlotComputed)\n if (!ownerId) {\n retryScopedSlotOwnerSubscription(this, scopedSlotComputed)\n }\n },\n detached(this: any) {\n if (typeof this.__wvOwnerUnsub === 'function') {\n this.__wvOwnerUnsub()\n }\n if (this.__wvOwnerSubscribeTimer && typeof clearTimeout === 'function') {\n clearTimeout(this.__wvOwnerSubscribeTimer)\n }\n if (this.__wvOwnerSyncTimer && typeof clearTimeout === 'function') {\n clearTimeout(this.__wvOwnerSyncTimer)\n }\n if (this.__wvOwnerRetryTimer && typeof clearTimeout === 'function') {\n clearTimeout(this.__wvOwnerRetryTimer)\n }\n this.__wvOwnerUnsub = undefined\n this.__wvOwnerIdCurrent = undefined\n this.__wvOwnerSubscribeTimer = undefined\n this.__wvOwnerPendingId = undefined\n this.__wvOwnerSyncTimer = undefined\n this.__wvOwnerPendingSnapshot = undefined\n this.__wvOwnerPendingProxy = undefined\n this.__wvOwnerRetryTimer = undefined\n this[WEVU_SLOT_OWNER_PROXY_KEY] = undefined\n this[OWNER_PROPS_OVERRIDE_KEY] = undefined\n this[SLOT_PROPS_OVERRIDE_KEY] = undefined\n this[SLOT_SCOPE_OVERRIDE_KEY] = undefined\n },\n },\n methods: {\n [WEVU_OWNER_HANDLER](this: any, event: any) {\n const owner = this[WEVU_SLOT_OWNER_PROXY_KEY]\n const inlineMap = (this as any).__wevu?.methods?.[WEVU_INLINE_MAP_KEY]\n const dataset = event?.currentTarget?.dataset ?? event?.target?.dataset ?? {}\n const inlineId = resolveDatasetEventValue(dataset, 'wvInlineId', event)\n if (inlineId && inlineMap) {\n return runInlineExpression(owner, undefined, event, inlineMap)\n }\n if (!owner) {\n return undefined\n }\n const handlerName = resolveDatasetEventValue(dataset, 'wvHandler', event)\n if (typeof handlerName !== 'string' || !handlerName) {\n return undefined\n }\n const handler = owner?.[handlerName]\n if (typeof handler !== 'function') {\n return undefined\n }\n const args = parseInlineArgs(event)\n return handler.apply(owner, args)\n },\n },\n }\n\n if (overrides?.computed && Object.keys(overrides.computed).length > 0) {\n ;(baseOptions as any).computed = overrides.computed\n }\n if (overrides?.inlineMap && Object.keys(overrides.inlineMap).length > 0) {\n ;(baseOptions as any).methods = {\n ...(baseOptions as any).methods,\n [WEVU_INLINE_MAP_KEY]: overrides.inlineMap,\n }\n }\n\n return baseOptions\n}\n","import {\n WEVU_PROP_KEYS_KEY,\n WEVU_PROPS_KEY,\n} from '@weapp-core/constants'\nimport { isReactive, isRef, toRaw } from '../../reactivity'\nimport { hasOwn } from '../../utils'\nimport { hasTrackableSetupBinding } from '../setupTracking'\n\nfunction isPlainObject(value: unknown): value is Record<string, any> {\n if (Object.prototype.toString.call(value) !== '[object Object]') {\n return false\n }\n const proto = Object.getPrototypeOf(value)\n return proto === null || proto === Object.prototype\n}\n\nexport function shouldExposeInSnapshot(value: unknown): boolean {\n if (value == null) {\n return true\n }\n if (typeof value !== 'object') {\n return true\n }\n if (isRef(value) || isReactive(value)) {\n return true\n }\n if (Array.isArray(value)) {\n return true\n }\n return isPlainObject(value)\n}\n\nexport function applySetupResult(runtime: any, target: any, result: any) {\n const declaredPropKeys = new Set<string>(\n Array.isArray(target?.[WEVU_PROP_KEYS_KEY]) ? target[WEVU_PROP_KEYS_KEY] : [],\n )\n const methods = runtime?.methods ?? Object.create(null)\n const state = runtime?.state ?? Object.create(null)\n const rawState = isReactive(state) ? toRaw(state) : state\n let methodsChanged = false\n if (runtime && !runtime.methods) {\n try {\n runtime.methods = methods\n }\n catch {\n // 个别场景 runtime 可能只读,保持兼容行为。\n }\n }\n if (runtime && !runtime.state) {\n try {\n runtime.state = state\n }\n catch {\n // 个别场景 runtime 可能只读,保持兼容行为。\n }\n }\n Object.keys(result).forEach((key) => {\n const val = (result as any)[key]\n if (typeof val === 'function') {\n ;(methods as any)[key] = (...args: any[]) => (val as any).apply(runtime?.proxy ?? runtime, args)\n methodsChanged = true\n }\n else {\n if (hasTrackableSetupBinding(val)) {\n runtime?.__wevu_trackSetupReactiveKey?.(key)\n }\n if (declaredPropKeys.has(key)) {\n let fallbackValue = val\n try {\n Object.defineProperty(rawState, key, {\n configurable: true,\n enumerable: false,\n get() {\n const propsSource = (rawState as any)[WEVU_PROPS_KEY]\n if (propsSource && typeof propsSource === 'object' && hasOwn(propsSource, key)) {\n return (propsSource as any)[key]\n }\n return fallbackValue\n },\n set(next: unknown) {\n fallbackValue = next\n const propsSource = (rawState as any)[WEVU_PROPS_KEY]\n if (!propsSource || typeof propsSource !== 'object') {\n return\n }\n try {\n ;(propsSource as any)[key] = next\n }\n catch {\n // 忽略异常\n }\n },\n })\n }\n catch {\n ;(state as any)[key] = val\n }\n return\n }\n // 不可序列化的实例不应出现在 setData 快照中。\n if (val === target || !shouldExposeInSnapshot(val)) {\n try {\n Object.defineProperty(rawState, key, {\n value: val,\n configurable: true,\n enumerable: false,\n writable: true,\n })\n }\n catch {\n ;(state as any)[key] = val\n }\n }\n else {\n ;(state as any)[key] = val\n }\n }\n })\n if (runtime) {\n runtime.methods = runtime.methods ?? methods\n runtime.state = runtime.state ?? state\n if (methodsChanged) {\n runtime.__wevu_touchSetupMethodsVersion?.()\n }\n }\n}\n","import type { InlineExpressionMap } from './register/inline'\nimport type {\n ComponentPropsOptions,\n ComponentPublicInstance,\n ComputedDefinitions,\n DefineComponent,\n DefineComponentOptions,\n InferProps,\n MethodDefinitions,\n MiniProgramComponentPropertyOption,\n MiniProgramComponentRawOptions,\n ShallowUnwrapRef,\n} from './types'\nimport { WEVU_SCOPED_SLOT_CREATOR_KEY } from '@weapp-core/constants'\nimport { createApp } from './app'\nimport { applyWevuComponentDefaults, INTERNAL_DEFAULTS_SCOPE_KEY } from './defaults'\nimport { normalizeProps } from './define/props'\nimport { createScopedSlotOptions } from './define/scopedSlotOptions'\nimport { applySetupResult } from './define/setupResult'\nimport { getScopedSlotHostGlobalObject } from './platform'\nimport { registerComponent, runSetupFunction } from './register'\n\nlet scopedSlotCreator: (() => void) | undefined\n\nfunction ensureScopedSlotComponentGlobal() {\n const globalObject = getScopedSlotHostGlobalObject()\n if (!globalObject) {\n return\n }\n const globalRecord = globalObject as Record<string, any>\n if (!globalRecord[WEVU_SCOPED_SLOT_CREATOR_KEY] && scopedSlotCreator) {\n globalRecord[WEVU_SCOPED_SLOT_CREATOR_KEY] = scopedSlotCreator\n }\n}\n\n/**\n * defineComponent 返回的组件定义描述,用于手动注册或高级用法。\n */\nexport interface ComponentDefinition<\n D extends object,\n C extends ComputedDefinitions,\n M extends MethodDefinitions,\n> {\n /**\n * 内部 runtime app(高级能力使用),不对外暴露正式 API。\n * @internal\n */\n __wevu_runtime: import('./types').RuntimeApp<D, C, M>\n\n /**\n * 内部选项快照(高级能力使用),包含 data/computed/methods 等。\n * @internal\n */\n __wevu_options: {\n data: () => D\n computed: C\n methods: M\n setData: import('./types').SetDataSnapshotOptions | undefined\n watch: Record<string, any> | undefined\n setup: ((props: any, ctx: any) => any) | undefined\n mpOptions: MiniProgramComponentRawOptions\n }\n}\n\ntype SetupBindings<S> = Exclude<S, void> extends never ? Record<string, never> : Exclude<S, void>\ntype ResolveProps<P> = P extends ComponentPropsOptions ? InferProps<P> : P\n\nexport interface WevuComponentConstructor<\n Props,\n RawBindings,\n D extends object,\n C extends ComputedDefinitions,\n M extends MethodDefinitions,\n> {\n new (): ComponentPublicInstance<D, C, M, Props> & ShallowUnwrapRef<RawBindings>\n}\n\nexport type WevuDefinedComponent<\n PropsOrPropOptions,\n RawBindings,\n D extends object,\n C extends ComputedDefinitions,\n M extends MethodDefinitions,\n> = DefineComponent<PropsOrPropOptions, RawBindings, D, C, M> & ComponentDefinition<D, C, M>\nexport interface SetupContextWithTypeProps<TypeProps> {\n props: TypeProps\n [key: string]: any\n}\nexport type SetupFunctionWithTypeProps<\n TypeProps,\n> = (\n props: TypeProps,\n ctx: SetupContextWithTypeProps<TypeProps>,\n) => Record<string, any> | void\nexport interface DefineComponentTypePropsOptions<TypeProps> {\n __typeProps: TypeProps\n setup?: SetupFunctionWithTypeProps<TypeProps>\n [key: string]: any\n}\nexport interface DefineComponentWithTypeProps<TypeProps> {\n new (): { $props: TypeProps } & Record<string, any>\n}\n\n/**\n * 按 Vue 3 风格定义一个小程序组件/页面。\n *\n * - 统一注册为 `Component()`\n *\n * @param options 组件定义项\n * @returns 可手动注册的组件定义\n *\n * @example\n * ```ts\n * defineComponent({\n * data: () => ({ count: 0 }),\n * setup() {\n * onMounted(() => console.log('已挂载'))\n * }\n * })\n * ```\n *\n * @example\n * ```ts\n * defineComponent({\n * setup() {\n * onPageScroll(() => {})\n * }\n * })\n * ```\n */\n// @ts-expect-error -- TS2589:__typeProps 签名的重载实例化深度过高。\nexport function defineComponent<\n TypeProps = any,\n>(\n options: DefineComponentTypePropsOptions<TypeProps>,\n): DefineComponentWithTypeProps<TypeProps>\nexport function defineComponent<\n P extends ComponentPropsOptions = ComponentPropsOptions,\n D extends object = Record<string, any>,\n C extends ComputedDefinitions = ComputedDefinitions,\n M extends MethodDefinitions = MethodDefinitions,\n S extends Record<string, any> | void = Record<string, any> | void,\n>(\n options: DefineComponentOptions<P, D, C, M, S>,\n): WevuComponentConstructor<ResolveProps<P>, SetupBindings<S>, D, C, M> & ComponentDefinition<D, C, M>\nexport function defineComponent(\n options: DefineComponentOptions<any, any, any, any, any>,\n): WevuComponentConstructor<Record<string, any>, Record<string, any>, Record<string, any>, ComputedDefinitions, MethodDefinitions>\n & ComponentDefinition<any, any, any> {\n ensureScopedSlotComponentGlobal()\n const resolvedOptions = applyWevuComponentDefaults(options)\n const {\n __typeProps: _typeProps,\n data,\n computed,\n methods,\n setData,\n watch,\n setup,\n props,\n ...mpOptions\n } = resolvedOptions\n\n const runtimeApp = createApp({\n data,\n computed,\n methods,\n setData,\n [INTERNAL_DEFAULTS_SCOPE_KEY]: 'component',\n } as any)\n\n // 对 setup 的包装:注入 props/context 后应用到 runtime/state/methods\n const setupWrapper = typeof setup === 'function'\n ? ((props, ctx) => {\n const result = runSetupFunction(setup as any, props as Record<string, any>, ctx as any) as Record<string, any> | void\n if (result && ctx) {\n applySetupResult((ctx as any).runtime, (ctx as any).instance, result as Record<string, any>)\n }\n return result\n }) satisfies DefineComponentOptions<ComponentPropsOptions, any, any, any, any>['setup']\n : undefined\n\n // 保存供手动注册使用的选项\n const nativeData = typeof data === 'function'\n ? data()\n : data\n const mpOptionsWithProps = normalizeProps(\n nativeData !== undefined\n ? {\n ...mpOptions,\n data: nativeData,\n }\n : mpOptions,\n props,\n )\n\n const componentOptions = {\n data: data as () => Record<string, any>,\n computed: computed as ComputedDefinitions,\n methods: methods as MethodDefinitions,\n setData,\n watch,\n setup: setupWrapper,\n mpOptions: mpOptionsWithProps,\n }\n\n registerComponent(runtimeApp as any, methods ?? {}, watch as any, setupWrapper as any, mpOptionsWithProps as any)\n\n // 返回组件定义,便于外部自行注册\n const definition: ComponentDefinition<any, any, any> = {\n __wevu_runtime: runtimeApp as any,\n __wevu_options: componentOptions as ComponentDefinition<any, any, any>['__wevu_options'],\n }\n\n return definition as unknown as WevuComponentConstructor<\n ResolveProps<ComponentPropsOptions>,\n Record<string, any>,\n Record<string, any>,\n ComputedDefinitions,\n MethodDefinitions\n > & ComponentDefinition<any, any, any>\n}\n\n/**\n * 从 Vue SFC 选项创建 wevu 组件,供 weapp-vite 编译产物直接调用的兼容入口。\n *\n * @param options 组件选项,可能包含小程序特有的 properties\n * @internal\n */\nexport function createWevuComponent<\n P extends ComponentPropsOptions = ComponentPropsOptions,\n D extends object = Record<string, any>,\n C extends ComputedDefinitions = ComputedDefinitions,\n M extends MethodDefinitions = MethodDefinitions,\n>(\n options: DefineComponentOptions<P, D, C, M> & { properties?: MiniProgramComponentPropertyOption },\n): void {\n ensureScopedSlotComponentGlobal()\n const {\n properties,\n props,\n ...restOptions\n } = options\n\n const baseOptions = {\n ...restOptions,\n allowNullPropInput: (restOptions as any).allowNullPropInput ?? true,\n __wevu_allowNullPropInput: true,\n }\n\n // 将 properties 合并到 mpOptions,保持小程序属性定义\n const finalOptions = normalizeProps(baseOptions, props, properties)\n\n // 调用 defineComponent 完成注册\n defineComponent(finalOptions)\n}\n\n/**\n * scoped slot 兼容组件入口(编译产物内部使用)。\n * @internal\n */\nexport function createWevuScopedSlotComponent(\n overrides?: { computed?: ComputedDefinitions, inlineMap?: InlineExpressionMap },\n): void {\n const baseOptions = createScopedSlotOptions(overrides)\n defineComponent(baseOptions as any)\n}\n\nscopedSlotCreator = createWevuScopedSlotComponent\nensureScopedSlotComponentGlobal()\n","import { getCurrentInstance, onDetached, onUnload } from './hooks'\n\nexport type DisposableMethodName\n = | 'dispose'\n | 'abort'\n | 'cancel'\n | 'stop'\n | 'disconnect'\n | 'destroy'\n | 'close'\n\nexport type DisposableObject = Partial<Record<DisposableMethodName, () => void>>\nexport type DisposableLike = (() => void) | DisposableObject\n\nexport interface DisposableBag {\n /**\n * 注册一个清理项,返回“取消注册”函数(不会立即执行清理)。\n */\n add: (target: DisposableLike | null | undefined) => () => void\n /**\n * 立即执行并清空当前 bag 中的全部清理项(幂等)。\n */\n dispose: () => void\n /**\n * 注册 timeout,并在 bag dispose 时自动 clearTimeout。\n */\n setTimeout: (\n handler: (...args: any[]) => void,\n timeout?: number,\n ...args: any[]\n ) => ReturnType<typeof setTimeout>\n /**\n * 注册 interval,并在 bag dispose 时自动 clearInterval。\n */\n setInterval: (\n handler: (...args: any[]) => void,\n timeout?: number,\n ...args: any[]\n ) => ReturnType<typeof setInterval>\n}\n\nconst DISPOSABLE_METHODS: DisposableMethodName[] = [\n 'dispose',\n 'abort',\n 'cancel',\n 'stop',\n 'disconnect',\n 'destroy',\n 'close',\n]\n\nfunction resolveCleanup(target: DisposableLike | null | undefined): (() => void) | undefined {\n if (!target) {\n return undefined\n }\n if (typeof target === 'function') {\n return target\n }\n for (const methodName of DISPOSABLE_METHODS) {\n const candidate = target[methodName]\n if (typeof candidate === 'function') {\n return () => candidate.call(target)\n }\n }\n return undefined\n}\n\n/**\n * 在 setup() 中创建一个“清理袋”,统一管理副作用释放。\n *\n * 典型用法:注册定时器、请求任务、事件监听退订函数,\n * 在页面/组件卸载时自动批量清理,减少内存泄漏风险。\n */\nexport function useDisposables(): DisposableBag {\n if (!getCurrentInstance()) {\n throw new Error('useDisposables() 必须在 setup() 的同步阶段调用')\n }\n\n const cleanupSet = new Set<() => void>()\n let disposed = false\n\n const add: DisposableBag['add'] = (target) => {\n const cleanup = resolveCleanup(target)\n if (!cleanup) {\n return () => {}\n }\n\n if (disposed) {\n try {\n cleanup()\n }\n catch {\n // 忽略清理项自身异常,避免影响后续流程\n }\n return () => {}\n }\n\n cleanupSet.add(cleanup)\n return () => {\n cleanupSet.delete(cleanup)\n }\n }\n\n const dispose = () => {\n if (disposed) {\n return\n }\n disposed = true\n const queue = [...cleanupSet]\n cleanupSet.clear()\n for (const cleanup of queue) {\n try {\n cleanup()\n }\n catch {\n // 忽略单个清理项失败,保证其余清理继续执行\n }\n }\n }\n\n const bagSetTimeout: DisposableBag['setTimeout'] = (handler, timeout, ...args) => {\n const timer = setTimeout(handler, timeout, ...args)\n add(() => {\n clearTimeout(timer)\n })\n return timer\n }\n\n const bagSetInterval: DisposableBag['setInterval'] = (handler, timeout, ...args) => {\n const timer = setInterval(handler, timeout, ...args)\n add(() => {\n clearInterval(timer)\n })\n return timer\n }\n\n onUnload(dispose)\n onDetached(dispose)\n\n return {\n add,\n dispose,\n setTimeout: bagSetTimeout,\n setInterval: bagSetInterval,\n }\n}\n","import type { MaybeRefOrGetter } from '../reactivity'\nimport type {\n InternalRuntimeState,\n MiniProgramIntersectionObserver,\n MiniProgramIntersectionObserverOptions,\n} from './types'\nimport { toValue, watch } from '../reactivity'\nimport { getCurrentInstance, getCurrentSetupContext, onDetached, onMounted, onUnload, onUnmounted } from './hooks'\nimport { getCurrentMiniProgramRuntimeCapabilities, getMiniProgramGlobalObject, supportsCurrentMiniProgramRuntimeCapability } from './platform'\n\nexport type ElementIntersectionObserverCallback<T = unknown> = (result: T) => void\n\nexport interface UseElementIntersectionObserverOptions<T = unknown> {\n context?: InternalRuntimeState | null\n enabled?: MaybeRefOrGetter<boolean>\n observerOptions?: MaybeRefOrGetter<MiniProgramIntersectionObserverOptions>\n onObserve?: ElementIntersectionObserverCallback<T>\n relativeToViewport?: boolean | Record<string, number>\n selector: MaybeRefOrGetter<string | null | undefined>\n}\n\nexport interface UseElementIntersectionObserverReturn {\n disconnect: () => void\n observe: () => MiniProgramIntersectionObserver | null\n readonly observer: MiniProgramIntersectionObserver | null\n}\n\nfunction createObserverFromContext(\n context: InternalRuntimeState,\n options: MiniProgramIntersectionObserverOptions,\n) {\n const nativeContext = context as Record<string, any>\n const creator = nativeContext.createIntersectionObserver\n if (typeof creator === 'function') {\n return creator.call(nativeContext, options) as MiniProgramIntersectionObserver | undefined\n }\n\n if (!supportsCurrentMiniProgramRuntimeCapability('globalCreateIntersectionObserver')) {\n return undefined\n }\n\n const miniProgramGlobal = getMiniProgramGlobalObject()\n const globalCreator = miniProgramGlobal?.createIntersectionObserver\n if (typeof globalCreator !== 'function') {\n return undefined\n }\n\n return getCurrentMiniProgramRuntimeCapabilities().intersectionObserverScopeByParameter\n ? globalCreator.call(miniProgramGlobal, context, options)\n : globalCreator.call(miniProgramGlobal, options)\n}\n\nfunction applyRelativeToViewport(\n observer: MiniProgramIntersectionObserver,\n relativeToViewport: UseElementIntersectionObserverOptions['relativeToViewport'],\n) {\n if (relativeToViewport === false || typeof observer.relativeToViewport !== 'function') {\n return observer\n }\n const margins = relativeToViewport && typeof relativeToViewport === 'object'\n ? relativeToViewport\n : undefined\n return observer.relativeToViewport(margins as any) ?? observer\n}\n\n/**\n * 观察当前组件或页面内的节点可见性,并在卸载时自动断开。\n */\nexport function useElementIntersectionObserver<T = unknown>(\n options: UseElementIntersectionObserverOptions<T>,\n): UseElementIntersectionObserverReturn {\n const context = options.context ?? getCurrentInstance<InternalRuntimeState>()\n if (!context || !getCurrentSetupContext()) {\n throw new Error('useElementIntersectionObserver() 必须在 setup() 的同步阶段调用')\n }\n\n let observer: MiniProgramIntersectionObserver | null = null\n\n const disconnect = () => {\n if (!observer) {\n return\n }\n try {\n observer.disconnect()\n }\n catch {\n // 忽略平台差异导致的断开异常,避免影响页面卸载流程\n }\n observer = null\n }\n\n const observe = () => {\n disconnect()\n\n const selector = toValue(options.selector)\n const enabled = options.enabled == null ? true : toValue(options.enabled)\n if (!enabled || !selector) {\n return null\n }\n\n const nextObserver = createObserverFromContext(\n context,\n toValue(options.observerOptions ?? {}),\n )\n if (!nextObserver || typeof nextObserver.observe !== 'function') {\n return null\n }\n\n observer = applyRelativeToViewport(\n nextObserver,\n options.relativeToViewport ?? true,\n )\n observer.observe(selector, result => options.onObserve?.(result as T))\n return observer\n }\n\n watch(\n () => [\n toValue(options.selector),\n options.enabled == null ? true : toValue(options.enabled),\n toValue(options.observerOptions ?? {}),\n options.relativeToViewport,\n ],\n () => {\n observe()\n },\n {\n deep: true,\n },\n )\n\n onMounted(observe)\n onUnmounted(disconnect)\n onUnload(disconnect)\n onDetached(disconnect)\n\n return {\n disconnect,\n observe,\n get observer() {\n return observer\n },\n }\n}\n","import type {\n InternalRuntimeState,\n MiniProgramIntersectionObserver,\n MiniProgramIntersectionObserverOptions,\n} from './types'\nimport { getCurrentInstance, onDetached, onUnload } from './hooks'\nimport { getCurrentMiniProgramRuntimeCapabilities, getMiniProgramGlobalObject, supportsCurrentMiniProgramRuntimeCapability } from './platform'\n\nexport type UseIntersectionObserverOptions = MiniProgramIntersectionObserverOptions\nexport type UseIntersectionObserverResult = MiniProgramIntersectionObserver\n\nfunction createObserverFromInstance(\n instance: InternalRuntimeState,\n options: UseIntersectionObserverOptions,\n): UseIntersectionObserverResult | undefined {\n const nativeInstance = instance as Record<string, any>\n const creator = nativeInstance.createIntersectionObserver\n if (typeof creator !== 'function') {\n return undefined\n }\n const observer = creator.call(nativeInstance, options)\n return observer as UseIntersectionObserverResult | undefined\n}\n\nfunction createObserverFromGlobal(\n instance: InternalRuntimeState,\n options: UseIntersectionObserverOptions,\n): UseIntersectionObserverResult | undefined {\n if (!supportsCurrentMiniProgramRuntimeCapability('globalCreateIntersectionObserver')) {\n return undefined\n }\n const miniProgramGlobal = getMiniProgramGlobalObject()\n const creator = miniProgramGlobal?.createIntersectionObserver\n if (typeof creator !== 'function') {\n return undefined\n }\n const observer = getCurrentMiniProgramRuntimeCapabilities().intersectionObserverScopeByParameter\n ? creator.call(miniProgramGlobal, instance, options)\n : creator.call(miniProgramGlobal, options)\n return observer as UseIntersectionObserverResult | undefined\n}\n\n/**\n * 在 setup 中创建 IntersectionObserver,并在卸载时自动断开。\n *\n * - 优先使用 `ctx.instance.createIntersectionObserver(options)`。\n * - 不可用时回退到宿主全局对象的 `createIntersectionObserver(...)`。\n */\nexport function useIntersectionObserver(\n options: UseIntersectionObserverOptions = {},\n): UseIntersectionObserverResult {\n const instance = getCurrentInstance()\n if (!instance) {\n throw new Error('useIntersectionObserver() 必须在 setup() 的同步阶段调用')\n }\n\n const observer = createObserverFromInstance(instance, options)\n ?? createObserverFromGlobal(instance, options)\n\n if (!observer || typeof observer.disconnect !== 'function') {\n throw new Error('当前运行环境不支持 IntersectionObserver,请检查基础库版本或平台能力')\n }\n\n let disconnected = false\n const disconnect = () => {\n if (disconnected) {\n return\n }\n disconnected = true\n try {\n observer.disconnect()\n }\n catch {\n // 忽略平台差异导致的断开异常,避免影响页面卸载流程\n }\n }\n\n onUnload(disconnect)\n onDetached(disconnect)\n\n return observer\n}\n","import { computed, ref } from '../reactivity'\nimport { getCurrentSetupContext, onAttached, onShow } from './hooks'\nimport { getCurrentMiniProgramPages, getMiniProgramGlobalObject } from './platform'\n\nexport interface PageStackSnapshot {\n canGoBack: boolean\n currentRoute: string\n stackLength: number\n}\n\nexport interface UsePageStackOptions {\n autoRefresh?: boolean\n}\n\nexport interface NavigationBarMetrics {\n navigationBarHeight: number\n navigationHeight: number\n statusBarHeight: number\n}\n\nexport interface UseNavigationBarMetricsOptions {\n autoRefresh?: boolean\n defaultNavigationBarHeight?: number\n defaultStatusBarHeight?: number\n}\n\ninterface MenuButtonRect {\n height?: number\n top?: number\n}\n\nfunction normalizeRoute(route?: string) {\n return route ? route.split('?')[0]?.replace(/^\\/+/, '') ?? '' : ''\n}\n\n/**\n * 获取当前小程序页面栈的稳定快照。\n */\nexport function getCurrentPageStackSnapshot(): PageStackSnapshot {\n const pages = getCurrentMiniProgramPages()\n const currentPage = pages[pages.length - 1]\n const stackLength = pages.length || 1\n return {\n canGoBack: stackLength > 1,\n currentRoute: normalizeRoute(currentPage?.route),\n stackLength,\n }\n}\n\n/**\n * 在 setup 中跟踪当前小程序页面栈状态。\n */\nexport function usePageStack(options: UsePageStackOptions = {}) {\n if (!getCurrentSetupContext()) {\n throw new Error('usePageStack() 必须在 setup() 的同步阶段调用')\n }\n\n const snapshot = getCurrentPageStackSnapshot()\n const currentRoute = ref(snapshot.currentRoute)\n const stackLength = ref(snapshot.stackLength)\n const canGoBack = computed(() => stackLength.value > 1)\n\n const refresh = () => {\n const nextSnapshot = getCurrentPageStackSnapshot()\n currentRoute.value = nextSnapshot.currentRoute\n stackLength.value = nextSnapshot.stackLength\n }\n\n if (options.autoRefresh ?? true) {\n onAttached(refresh)\n onShow(refresh)\n }\n\n return {\n canGoBack,\n currentRoute,\n refresh,\n stackLength,\n }\n}\n\n/**\n * 计算自定义导航栏所需的状态栏和胶囊占位高度。\n */\nexport function getNavigationBarMetrics(\n options: Omit<UseNavigationBarMetricsOptions, 'autoRefresh'> = {},\n): NavigationBarMetrics {\n const defaultStatusBarHeight = options.defaultStatusBarHeight ?? 20\n const defaultNavigationBarHeight = options.defaultNavigationBarHeight ?? 44\n const miniProgramGlobal = getMiniProgramGlobalObject()\n const systemInfo = typeof miniProgramGlobal?.getSystemInfoSync === 'function'\n ? miniProgramGlobal.getSystemInfoSync()\n : {}\n const statusBarHeight = Number(systemInfo?.statusBarHeight || defaultStatusBarHeight)\n let menuButtonRect: MenuButtonRect | undefined\n\n try {\n menuButtonRect = typeof miniProgramGlobal?.getMenuButtonBoundingClientRect === 'function'\n ? miniProgramGlobal.getMenuButtonBoundingClientRect()\n : undefined\n }\n catch {}\n\n const menuTop = Number(menuButtonRect?.top || 0)\n const menuHeight = Number(menuButtonRect?.height || 0)\n const navigationBarHeight = menuTop > statusBarHeight && menuHeight > 0\n ? (menuTop - statusBarHeight) * 2 + menuHeight\n : defaultNavigationBarHeight\n\n return {\n navigationBarHeight,\n navigationHeight: statusBarHeight + navigationBarHeight,\n statusBarHeight,\n }\n}\n\n/**\n * 在 setup 中跟踪自定义导航栏尺寸。\n */\nexport function useNavigationBarMetrics(options: UseNavigationBarMetricsOptions = {}) {\n if (!getCurrentSetupContext()) {\n throw new Error('useNavigationBarMetrics() 必须在 setup() 的同步阶段调用')\n }\n\n const initialMetrics = getNavigationBarMetrics(options)\n const statusBarHeight = ref(initialMetrics.statusBarHeight)\n const navigationBarHeight = ref(initialMetrics.navigationBarHeight)\n const navigationHeight = computed(() => statusBarHeight.value + navigationBarHeight.value)\n\n const refresh = () => {\n const nextMetrics = getNavigationBarMetrics(options)\n statusBarHeight.value = nextMetrics.statusBarHeight\n navigationBarHeight.value = nextMetrics.navigationBarHeight\n }\n\n if (options.autoRefresh ?? true) {\n onAttached(refresh)\n }\n\n return {\n navigationBarHeight,\n navigationHeight,\n refresh,\n statusBarHeight,\n }\n}\n","import type { MiniProgramPageScrollOption } from './types'\nimport { getCurrentInstance, onDetached, onPageScroll, onUnload } from './hooks'\n\nexport interface UsePageScrollThrottleOptions {\n /**\n * 节流间隔(毫秒),默认 80ms。\n */\n interval?: number\n /**\n * 是否在窗口起始边缘立即触发,默认 true。\n */\n leading?: boolean\n /**\n * 是否在窗口结束边缘补一次回调,默认 true。\n */\n trailing?: boolean\n /**\n * 持续滚动时的最大等待时间(毫秒)。\n * 当 trailing 为 false 时,可用于兜底触发一次回调。\n */\n maxWait?: number\n}\n\nexport type UsePageScrollThrottleStopHandle = () => void\n\nfunction resolvePositiveInterval(interval: number | undefined): number {\n if (typeof interval !== 'number' || !Number.isFinite(interval)) {\n return 80\n }\n return Math.max(0, interval)\n}\n\nfunction resolveMaxWait(maxWait: number | undefined): number | undefined {\n if (typeof maxWait !== 'number' || !Number.isFinite(maxWait)) {\n return undefined\n }\n return Math.max(0, maxWait)\n}\n\n/**\n * 在 setup 中注册节流后的 onPageScroll 监听,并在卸载时自动清理。\n */\nexport function usePageScrollThrottle(\n handler: (opt: MiniProgramPageScrollOption) => void,\n options: UsePageScrollThrottleOptions = {},\n): UsePageScrollThrottleStopHandle {\n if (!getCurrentInstance()) {\n throw new Error('usePageScrollThrottle() 必须在 setup() 的同步阶段调用')\n }\n if (typeof handler !== 'function') {\n throw new TypeError('usePageScrollThrottle() 需要传入回调函数')\n }\n\n const interval = resolvePositiveInterval(options.interval)\n const leading = options.leading ?? true\n const trailing = options.trailing ?? true\n const maxWait = resolveMaxWait(options.maxWait)\n\n let trailingTimer: ReturnType<typeof setTimeout> | undefined\n let maxWaitTimer: ReturnType<typeof setTimeout> | undefined\n let stopped = false\n let lastInvokeTime = 0\n let trailingEvent: MiniProgramPageScrollOption | undefined\n\n const clearTrailingTimer = () => {\n if (!trailingTimer) {\n return\n }\n clearTimeout(trailingTimer)\n trailingTimer = undefined\n }\n\n const clearMaxWaitTimer = () => {\n if (!maxWaitTimer) {\n return\n }\n clearTimeout(maxWaitTimer)\n maxWaitTimer = undefined\n }\n\n const invoke = (event: MiniProgramPageScrollOption) => {\n clearTrailingTimer()\n clearMaxWaitTimer()\n trailingEvent = undefined\n lastInvokeTime = Date.now()\n handler(event)\n }\n\n const flushTrailing = () => {\n const event = trailingEvent\n trailingEvent = undefined\n trailingTimer = undefined\n if (!event || stopped) {\n return\n }\n invoke(event)\n }\n\n const flushMaxWait = () => {\n const event = trailingEvent\n maxWaitTimer = undefined\n if (!event || stopped) {\n return\n }\n invoke(event)\n }\n\n const scheduleTrailing = (now: number) => {\n if (!trailing || trailingTimer) {\n return\n }\n const base = lastInvokeTime === 0 ? now : lastInvokeTime\n const remaining = Math.max(0, interval - (now - base))\n trailingTimer = setTimeout(flushTrailing, remaining)\n }\n\n const scheduleMaxWait = (now: number) => {\n if (typeof maxWait !== 'number' || maxWaitTimer) {\n return\n }\n const base = lastInvokeTime === 0 ? now : lastInvokeTime\n const remaining = maxWait - (now - base)\n if (remaining <= 0) {\n flushMaxWait()\n return\n }\n maxWaitTimer = setTimeout(flushMaxWait, remaining)\n }\n\n const register = (event: MiniProgramPageScrollOption) => {\n if (stopped) {\n return\n }\n\n if (interval === 0) {\n invoke(event)\n return\n }\n\n const now = Date.now()\n trailingEvent = event\n\n if (leading && (lastInvokeTime === 0 || now - lastInvokeTime >= interval)) {\n invoke(event)\n return\n }\n\n if (typeof maxWait === 'number') {\n const base = lastInvokeTime === 0 ? now : lastInvokeTime\n if (now - base >= maxWait) {\n invoke(event)\n return\n }\n }\n\n if (!trailing && typeof maxWait !== 'number') {\n return\n }\n\n scheduleTrailing(now)\n scheduleMaxWait(now)\n }\n\n onPageScroll(register)\n\n const stop = () => {\n if (stopped) {\n return\n }\n stopped = true\n trailingEvent = undefined\n clearTrailingTimer()\n clearMaxWaitTimer()\n }\n\n onUnload(stop)\n onDetached(stop)\n\n return stop\n}\n","import { wpi } from '@wevu/api'\nimport { onPullDownRefresh } from './hooks'\n\nexport type PullDownRefreshHandler = () => void | Promise<void>\n\nexport interface UseAsyncPullDownRefreshOptions {\n onError?: (error: unknown) => void | Promise<void>\n stopPullDownRefresh?: () => unknown | Promise<unknown>\n}\n\n/**\n * 注册下拉刷新回调,并在回调结束后自动停止宿主下拉刷新状态。\n */\nexport function useAsyncPullDownRefresh(\n refresh: PullDownRefreshHandler,\n options: UseAsyncPullDownRefreshOptions = {},\n) {\n onPullDownRefresh(async () => {\n try {\n await refresh()\n }\n catch (error) {\n await options.onError?.(error)\n }\n finally {\n const stop = options.stopPullDownRefresh ?? (() => wpi.stopPullDownRefresh())\n await stop()\n }\n })\n}\n","import type {\n InternalRuntimeState,\n MiniProgramBoundingClientRectResult,\n MiniProgramNodesRefFields,\n MiniProgramScrollOffsetResult,\n MiniProgramSelectorQuery,\n} from './types'\nimport { getCurrentInstance, getCurrentSetupContext } from './hooks'\nimport { createSelectorQuery } from './templateRefs/helpers'\n\nexport interface UseSelectorQueryOptions {\n context?: InternalRuntimeState | null\n}\n\nexport interface UseBoundingClientRectOptions extends UseSelectorQueryOptions {\n all?: boolean\n}\n\nexport interface UseSelectorFieldsOptions extends UseSelectorQueryOptions {\n all?: boolean\n fields: MiniProgramNodesRefFields\n}\n\nexport interface UseScrollOffsetOptions extends UseSelectorQueryOptions {\n all?: boolean\n}\n\nexport interface UseAllBoundingClientRectOptions extends UseSelectorQueryOptions {\n all: true\n}\n\nexport interface UseAllSelectorFieldsOptions extends UseSelectorQueryOptions {\n all: true\n fields: MiniProgramNodesRefFields\n}\n\nexport interface UseAllScrollOffsetOptions extends UseSelectorQueryOptions {\n all: true\n}\n\nfunction resolveSetupContext<T extends InternalRuntimeState>(\n apiName: string,\n context?: T | null,\n): T {\n const resolved = context ?? getCurrentInstance<T>()\n if (!resolved || !getCurrentSetupContext()) {\n throw new Error(`${apiName}() 必须在 setup() 的同步阶段调用`)\n }\n return resolved\n}\n\nfunction runSelectorQuery<T>(\n context: InternalRuntimeState,\n selector: string,\n all: boolean,\n apply: (nodesRef: any) => void,\n): Promise<T | null> {\n const query = createSelectorQuery(context)\n if (!query || !selector) {\n return Promise.resolve(null)\n }\n\n const nodesRef = all ? query.selectAll(selector) : query.select(selector)\n apply(nodesRef)\n\n return new Promise((resolve) => {\n query.exec((res) => {\n const result = Array.isArray(res) ? res[0] : null\n resolve((result ?? null) as T | null)\n })\n })\n}\n\n/**\n * 创建绑定当前小程序实例的选择器查询工厂。\n */\nexport function useSelectorQuery(options: UseSelectorQueryOptions = {}) {\n const context = resolveSetupContext('useSelectorQuery', options.context)\n return (): MiniProgramSelectorQuery | null => createSelectorQuery(context)\n}\n\n/**\n * 创建绑定当前小程序实例的节点布局查询函数。\n */\nexport function useBoundingClientRect(\n options?: UseBoundingClientRectOptions & { all?: false },\n): (selector: string) => Promise<MiniProgramBoundingClientRectResult | null>\nexport function useBoundingClientRect(\n options: UseAllBoundingClientRectOptions,\n): (selector: string) => Promise<MiniProgramBoundingClientRectResult[] | null>\nexport function useBoundingClientRect(options: UseBoundingClientRectOptions = {}) {\n const context = resolveSetupContext('useBoundingClientRect', options.context)\n const all = options.all ?? false\n\n return (selector: string) => runSelectorQuery<\n MiniProgramBoundingClientRectResult | MiniProgramBoundingClientRectResult[]\n >(\n context,\n selector,\n all,\n nodesRef => nodesRef.boundingClientRect(),\n )\n}\n\n/**\n * 创建绑定当前小程序实例的节点字段查询函数。\n */\nexport function useSelectorFields(\n options: UseSelectorFieldsOptions & { all?: false },\n): (selector: string) => Promise<Record<string, any> | null>\nexport function useSelectorFields(\n options: UseAllSelectorFieldsOptions,\n): (selector: string) => Promise<Array<Record<string, any>> | null>\nexport function useSelectorFields(options: UseSelectorFieldsOptions) {\n const context = resolveSetupContext('useSelectorFields', options.context)\n const all = options.all ?? false\n\n return (selector: string) => runSelectorQuery(\n context,\n selector,\n all,\n nodesRef => nodesRef.fields(options.fields),\n )\n}\n\n/**\n * 创建绑定当前小程序实例的滚动位置查询函数。\n */\nexport function useScrollOffset(\n options?: UseScrollOffsetOptions & { all?: false },\n): (selector: string) => Promise<MiniProgramScrollOffsetResult | null>\nexport function useScrollOffset(\n options: UseAllScrollOffsetOptions,\n): (selector: string) => Promise<MiniProgramScrollOffsetResult[] | null>\nexport function useScrollOffset(options: UseScrollOffsetOptions = {}) {\n const context = resolveSetupContext('useScrollOffset', options.context)\n const all = options.all ?? false\n\n return (selector: string) => runSelectorQuery<\n MiniProgramScrollOffsetResult | MiniProgramScrollOffsetResult[]\n >(\n context,\n selector,\n all,\n nodesRef => nodesRef.scrollOffset(),\n )\n}\n","import { unref } from '../reactivity'\n\nconst hyphenateRE = /\\B([A-Z])/g\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","import type { InternalRuntimeState } from './types'\nimport { getCurrentInstance, onDetached, onUnload } from './hooks'\n\nexport type UpdatePerformanceListenerResult = Record<string, any>\nexport type UpdatePerformanceListener = (result: UpdatePerformanceListenerResult) => void\nexport type UseUpdatePerformanceListenerStopHandle = () => void\n\nfunction resolveUpdatePerformanceSetter(\n instance: InternalRuntimeState,\n): ((listener?: UpdatePerformanceListener) => void) | undefined {\n const nativeInstance = instance as Record<string, any>\n const candidate = nativeInstance.setUpdatePerformanceListener\n if (typeof candidate !== 'function') {\n return undefined\n }\n return (listener?: UpdatePerformanceListener) => {\n candidate.call(nativeInstance, listener)\n }\n}\n\n/**\n * 在 setup 中注册更新性能监听,并在卸载时自动清理。\n *\n * - 底层能力:`instance.setUpdatePerformanceListener(listener)`。\n * - 清理策略:卸载时回传 `undefined` 作为监听器,平台不支持时静默降级。\n */\nexport function useUpdatePerformanceListener(\n listener: UpdatePerformanceListener,\n): UseUpdatePerformanceListenerStopHandle {\n const instance = getCurrentInstance()\n if (!instance) {\n throw new Error('useUpdatePerformanceListener() 必须在 setup() 的同步阶段调用')\n }\n if (typeof listener !== 'function') {\n throw new TypeError('useUpdatePerformanceListener() 需要传入监听函数')\n }\n\n const setListener = resolveUpdatePerformanceSetter(instance)\n if (!setListener) {\n throw new Error('当前实例不支持 setUpdatePerformanceListener,请检查基础库版本或组件上下文')\n }\n\n setListener(listener)\n\n let stopped = false\n const stop = () => {\n if (stopped) {\n return\n }\n stopped = true\n try {\n setListener(undefined)\n }\n catch {\n // 忽略平台差异导致的清理异常,避免影响卸载流程\n }\n }\n\n onUnload(stop)\n onDetached(stop)\n\n return stop\n}\n","import type { RuntimeApp, WevuPlugin } from './types'\nimport {\n WEVU_IS_APP_INSTANCE_KEY,\n WEVU_RUNTIME_APP_KEY,\n} from '@weapp-core/constants'\nimport { getCurrentInstance } from './hooks'\n\nfunction resolveCurrentRuntimeApp(): RuntimeApp<any, any, any> {\n const instance = getCurrentInstance() as {\n [WEVU_IS_APP_INSTANCE_KEY]?: boolean\n [WEVU_RUNTIME_APP_KEY]?: RuntimeApp<any, any, any>\n } | undefined\n\n if (instance?.[WEVU_IS_APP_INSTANCE_KEY] && instance[WEVU_RUNTIME_APP_KEY]) {\n return instance[WEVU_RUNTIME_APP_KEY]\n }\n\n throw new Error('defineAppSetup() / use() 只能在 app setup 上下文中调用')\n}\n\n/**\n * 在 `app` 级 `setup()` 中显式获取运行时 app,提供与 `app.use()` / `app.provide()` 对齐的 SFC 写法。\n */\nexport function defineAppSetup<T>(setup: (app: RuntimeApp<any, any, any>) => T): T {\n return setup(resolveCurrentRuntimeApp())\n}\n\n/**\n * 在 `app` 级 `setup()` 中安装插件,提供与 `app.use()` 对齐的 SFC 调用方式。\n */\nexport function use(plugin: WevuPlugin, ...options: any[]) {\n return resolveCurrentRuntimeApp().use(plugin, ...options)\n}\n","import type { SetupContextNativeInstance } from '../types'\nimport { getCurrentSetupContext } from '../hooks'\n\nconst EMPTY_SETUP_SLOTS = Object.freeze(Object.create(null)) as Record<string, never>\n\nexport function useAttrs(): Record<string, any> {\n const ctx = getCurrentSetupContext<any>()\n if (!ctx) {\n throw new Error('useAttrs() 必须在 setup() 的同步阶段调用')\n }\n return ctx.attrs ?? {}\n}\n\nexport function useSlots(): Record<string, any> {\n const ctx = getCurrentSetupContext<any>()\n if (!ctx) {\n throw new Error('useSlots() 必须在 setup() 的同步阶段调用')\n }\n // 小程序场景通过编译期 slot 名元数据恢复可枚举 slots 对象。\n return ctx.slots ?? EMPTY_SETUP_SLOTS\n}\n\nexport function useNativeInstance(): SetupContextNativeInstance {\n const ctx = getCurrentSetupContext<any>()\n if (!ctx?.instance) {\n throw new Error('useNativeInstance() 必须在 setup() 的同步阶段调用')\n }\n return ctx.instance as SetupContextNativeInstance\n}\n","import type { Ref } from '../../reactivity'\nimport type {\n ModelBinding,\n ModelBindingOptions,\n ModelBindingPayload,\n} from '../types'\nimport { customRef } from '../../reactivity/ref'\nimport { capitalize } from '../../utils'\nimport { getCurrentInstance, getCurrentSetupContext } from '../hooks'\n\nexport type ModelModifiers<M extends PropertyKey = string> = Record<M, true | undefined>\nexport type ModelRef<T, M extends PropertyKey = string, G = T, S = T> = Ref<G, S> & [ModelRef<T, M, G, S>, ModelModifiers<M>]\n\nexport interface UseModelOptions<T, M extends PropertyKey = string, G = T, S = T> {\n get?: (value: T, modifiers: ModelModifiers<M>) => G\n set?: (value: S, modifiers: ModelModifiers<M>) => T\n}\n\nconst EMPTY_MODEL_MODIFIERS = Object.freeze(Object.create(null)) as ModelModifiers<any>\n\nfunction resolveModelModifiers<M extends PropertyKey = string>(\n props: Record<string, any>,\n name: string,\n): ModelModifiers<M> {\n const key = name === 'modelValue' ? 'modelModifiers' : `${name}Modifiers`\n const modifiers = props?.[key]\n if (!modifiers || typeof modifiers !== 'object') {\n return EMPTY_MODEL_MODIFIERS as ModelModifiers<M>\n }\n return modifiers as ModelModifiers<M>\n}\n\nfunction attachModelTuple<T, M extends PropertyKey = string, G = T, S = T>(\n model: Ref<G, S>,\n getModifiers: () => ModelModifiers<M>,\n): ModelRef<T, M, G, S> {\n const tupleModel = model as ModelRef<T, M, G, S>\n try {\n Object.defineProperty(tupleModel, Symbol.iterator, {\n configurable: true,\n value: () => {\n let index = 0\n return {\n next: () => {\n if (index === 0) {\n index += 1\n return { value: tupleModel, done: false }\n }\n if (index === 1) {\n index += 1\n return { value: getModifiers(), done: false }\n }\n return { value: undefined, done: true }\n },\n }\n },\n })\n }\n catch {\n // 忽略 defineProperty 失败场景,降级为普通 Ref 返回\n }\n return tupleModel\n}\n\nexport function useModel<T = any, M extends PropertyKey = string>(\n props: Record<string, any>,\n name: string,\n): ModelRef<T, M, T, T>\nexport function useModel<T = any, M extends PropertyKey = string, G = T, S = T>(\n props: Record<string, any>,\n name: string,\n options: UseModelOptions<T, M, G, S>,\n): ModelRef<T, M, G, S>\nexport function useModel<T = any, M extends PropertyKey = string, G = T, S = T>(\n props: Record<string, any>,\n name: string,\n options: UseModelOptions<T, M, G, S> = {},\n): ModelRef<T, M, G, S> {\n const ctx = getCurrentSetupContext<any>()\n if (!ctx) {\n throw new Error('useModel() 必须在 setup() 的同步阶段调用')\n }\n\n const emit: ((event: string, ...args: any[]) => void) | undefined = ctx.emit\n const eventName = `update:${name}`\n const getModifiers = () => resolveModelModifiers<M>(props, name)\n const model = customRef<G>({\n get: () => {\n const rawValue = (props as any)?.[name] as T\n if (!options.get) {\n return rawValue as unknown as G\n }\n return options.get(rawValue, getModifiers())\n },\n set: (value: G) => {\n const nextValue = options.set\n ? options.set(value as unknown as S, getModifiers())\n : (value as unknown as T)\n emit?.(eventName, nextValue)\n },\n })\n return attachModelTuple<T, M, G, S>(model, getModifiers)\n}\n\n/**\n * useBindModel 返回绑定到当前运行时实例的 bindModel。\n * 该方法必须在 setup() 的同步阶段调用。\n */\ntype BindModelWithHelper<\n DefaultEvent extends string = 'input',\n DefaultValueProp extends string = 'value',\n> = (<T = any>(path: string, options?: ModelBindingOptions<T>) => ModelBinding<T>) & {\n model: <T = any, Event extends string = DefaultEvent, ValueProp extends string = DefaultValueProp, Formatted = T>(\n path: string,\n options?: ModelBindingOptions<T, Event, ValueProp, Formatted>,\n ) => ModelBindingPayload<T, Event, ValueProp, Formatted>\n value: <T = any, Event extends string = DefaultEvent, ValueProp extends string = DefaultValueProp, Formatted = T>(\n path: string,\n options?: ModelBindingOptions<T, Event, ValueProp, Formatted>,\n ) => Formatted\n on: <T = any, Event extends string = DefaultEvent, ValueProp extends string = DefaultValueProp, Formatted = T>(\n path: string,\n options?: ModelBindingOptions<T, Event, ValueProp, Formatted>,\n ) => (event: any) => void\n}\n\nexport function useBindModel<\n DefaultEvent extends string = 'input',\n DefaultValueProp extends string = 'value',\n>(defaultOptions?: ModelBindingOptions<any, DefaultEvent, DefaultValueProp, any>) {\n const instance = getCurrentInstance()\n if (!instance?.__wevu || typeof instance.__wevu.bindModel !== 'function') {\n throw new Error('useBindModel() 必须在 setup() 的同步阶段调用')\n }\n const rawBindModel = instance.__wevu.bindModel.bind(instance.__wevu) as <T = any>(\n path: string,\n options?: ModelBindingOptions<T>,\n ) => ModelBinding<T>\n const bindModel: BindModelWithHelper<DefaultEvent, DefaultValueProp> = (<T = any>(path: string, options?: ModelBindingOptions<T>) => {\n if (!defaultOptions) {\n return rawBindModel(path, options)\n }\n const merged = {\n ...(defaultOptions as ModelBindingOptions<T, DefaultEvent, DefaultValueProp, any>),\n ...(options as ModelBindingOptions<T, DefaultEvent, DefaultValueProp, any>),\n } as ModelBindingOptions<T>\n return rawBindModel(path, merged)\n }) as BindModelWithHelper<DefaultEvent, DefaultValueProp>\n\n bindModel.model = (path, options) => bindModel(path).model(options)\n bindModel.value = (path, options) => {\n const merged = { ...defaultOptions, ...options } as ModelBindingOptions<any>\n const valueProp = merged?.valueProp ?? 'value'\n const payload = bindModel.model(path, options) as Record<string, any>\n return payload[valueProp]\n }\n bindModel.on = (path, options) => {\n const merged = { ...defaultOptions, ...options } as ModelBindingOptions<any>\n const eventName = merged?.event ?? 'input'\n const handlerKey = `on${capitalize(eventName)}`\n const payload = bindModel.model(path, options) as Record<string, any>\n return payload[handlerKey]\n }\n\n return bindModel\n}\n\n/**\n * useChangeModel 返回以 change 事件为默认更新事件的 model 绑定助手。\n */\nexport function useChangeModel() {\n const bindModel = useBindModel({ event: 'change' })\n\n return function changeModel<T = any, ValueProp extends string = 'value', Formatted = T>(\n path: string,\n options?: ModelBindingOptions<T, 'change', ValueProp, Formatted>,\n ): ModelBindingPayload<T, 'change', ValueProp, Formatted> {\n return bindModel.model<T, 'change', ValueProp, Formatted>(path, options)\n }\n}\n\nexport function mergeModels<T>(a: T, b: T): T {\n if (a == null) {\n return b\n }\n if (b == null) {\n return a\n }\n if (Array.isArray(a) && Array.isArray(b)) {\n return [...new Set([...a, ...b])] as any\n }\n if (typeof a === 'object' && typeof b === 'object') {\n return { ...(a as any), ...(b as any) }\n }\n return b\n}\n","import type { Ref, ShallowRef } from '../../reactivity'\nimport type { InternalRuntimeState, TemplateRefs } from '../types'\nimport { WEVU_TEMPLATE_REF_MAP_KEY } from '@weapp-core/constants'\nimport { shallowRef } from '../../reactivity'\nimport { getCurrentInstance } from '../hooks'\n\ntype TemplateRefMap = Map<string, Ref<any>>\n\nfunction ensureTemplateRefMap(target: InternalRuntimeState): TemplateRefMap {\n const existing = (target as any)[WEVU_TEMPLATE_REF_MAP_KEY] as TemplateRefMap | undefined\n if (existing) {\n return existing\n }\n const next = new Map<string, Ref<any>>()\n try {\n Object.defineProperty(target, WEVU_TEMPLATE_REF_MAP_KEY, {\n value: next,\n configurable: true,\n enumerable: false,\n writable: false,\n })\n }\n catch {\n ;(target as any)[WEVU_TEMPLATE_REF_MAP_KEY] = next\n }\n return next\n}\n\nexport type TemplateRef<T = unknown> = Readonly<ShallowRef<T | null>>\n\nexport function useTemplateRef<K extends keyof TemplateRefs>(name: K): TemplateRef<TemplateRefs[K]>\nexport function useTemplateRef<T = unknown>(name: string): TemplateRef<T>\nexport function useTemplateRef<T = unknown>(name: string): TemplateRef<T> {\n const instance = getCurrentInstance()\n if (!instance) {\n throw new Error('useTemplateRef() 必须在 setup() 的同步阶段调用')\n }\n const normalized = typeof name === 'string' ? name.trim() : ''\n if (!normalized) {\n throw new Error('useTemplateRef() 需要传入有效的模板 ref 名称')\n }\n const map = ensureTemplateRefMap(instance)\n const existing = map.get(normalized)\n if (existing) {\n return existing as TemplateRef<T>\n }\n const target = shallowRef<T | null>(null)\n map.set(normalized, target)\n return target as TemplateRef<T>\n}\n"],"mappings":"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"}
|