wevu 7.3.0 → 7.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (262) hide show
  1. package/README.md +2 -0
  2. package/dist/dev/_virtual/{_@oxc-project_runtime@0.151.0 → _@oxc-project_runtime@0.153.0}/helpers/esm/defineProperty.mjs +1 -1
  3. package/dist/dev/_virtual/{_@oxc-project_runtime@0.151.0 → _@oxc-project_runtime@0.153.0}/helpers/esm/toPrimitive.mjs +1 -1
  4. package/dist/dev/_virtual/{_@oxc-project_runtime@0.151.0 → _@oxc-project_runtime@0.153.0}/helpers/esm/toPropertyKey.mjs +1 -1
  5. package/dist/dev/_virtual/{_@oxc-project_runtime@0.151.0 → _@oxc-project_runtime@0.153.0}/helpers/esm/typeof.mjs +1 -1
  6. package/dist/dev/package.mjs +1 -1
  7. package/dist/dev/reactivity/core.mjs +1 -1
  8. package/dist/dev/reactivity/ref.mjs +1 -1
  9. package/dist/dev/router/initialNavigation.mjs +4 -1
  10. package/dist/dev/router/initialNavigation.mjs.map +1 -1
  11. package/dist/dev/router/scrollRestoration/adapters.mjs +86 -0
  12. package/dist/dev/router/scrollRestoration/adapters.mjs.map +1 -0
  13. package/dist/dev/router/scrollRestoration/controller.mjs +148 -0
  14. package/dist/dev/router/scrollRestoration/controller.mjs.map +1 -0
  15. package/dist/dev/router/scrollRestoration/host.mjs +76 -0
  16. package/dist/dev/router/scrollRestoration/host.mjs.map +1 -0
  17. package/dist/dev/router/scrollRestoration/index.mjs +156 -0
  18. package/dist/dev/router/scrollRestoration/index.mjs.map +1 -0
  19. package/dist/dev/router.mjs +4 -1
  20. package/dist/dev/runtime/app/diagnostics.mjs +5 -1
  21. package/dist/dev/runtime/app/diagnostics.mjs.map +1 -1
  22. package/dist/dev/runtime/app/mount.mjs +8 -3
  23. package/dist/dev/runtime/app/mount.mjs.map +1 -1
  24. package/dist/dev/runtime/app/setData/commitTracker.mjs +39 -4
  25. package/dist/dev/runtime/app/setData/commitTracker.mjs.map +1 -1
  26. package/dist/dev/runtime/app/setData/observation.mjs +109 -0
  27. package/dist/dev/runtime/app/setData/observation.mjs.map +1 -0
  28. package/dist/dev/runtime/app/setData/scheduler.mjs +12 -1
  29. package/dist/dev/runtime/app/setData/scheduler.mjs.map +1 -1
  30. package/dist/dev/runtime/app/setDataOptions.mjs +1 -0
  31. package/dist/dev/runtime/app/setDataOptions.mjs.map +1 -1
  32. package/dist/dev/runtime/define/initialComputed.mjs +13 -12
  33. package/dist/dev/runtime/define/initialComputed.mjs.map +1 -1
  34. package/dist/dev/runtime/define/props.mjs +5 -1
  35. package/dist/dev/runtime/define/props.mjs.map +1 -1
  36. package/dist/dev/runtime/define/scopedSlotOptions.mjs +2 -1
  37. package/dist/dev/runtime/define/scopedSlotOptions.mjs.map +1 -1
  38. package/dist/dev/runtime/define.mjs +1 -1
  39. package/dist/dev/runtime/define.mjs.map +1 -1
  40. package/dist/dev/runtime/features/scopedSlots.mjs.map +1 -1
  41. package/dist/dev/runtime/hooks/base.mjs +1 -13
  42. package/dist/dev/runtime/hooks/base.mjs.map +1 -1
  43. package/dist/dev/runtime/hooks/pageScroll.mjs +41 -0
  44. package/dist/dev/runtime/hooks/pageScroll.mjs.map +1 -0
  45. package/dist/dev/runtime/hooks/register.mjs +2 -1
  46. package/dist/dev/runtime/hooks/register.mjs.map +1 -1
  47. package/dist/dev/runtime/register/component/lifecycle/optionalHooks.mjs +2 -5
  48. package/dist/dev/runtime/register/component/lifecycle/optionalHooks.mjs.map +1 -1
  49. package/dist/dev/runtime/register/component/lifecycle/platform.mjs +8 -20
  50. package/dist/dev/runtime/register/component/lifecycle/platform.mjs.map +1 -1
  51. package/dist/dev/runtime/register/component/props.mjs +14 -4
  52. package/dist/dev/runtime/register/component/props.mjs.map +1 -1
  53. package/dist/dev/runtime/register/component/registerDefinition.mjs +30 -17
  54. package/dist/dev/runtime/register/component/registerDefinition.mjs.map +1 -1
  55. package/dist/dev/runtime/register/component.mjs +2 -1
  56. package/dist/dev/runtime/register/component.mjs.map +1 -1
  57. package/dist/dev/runtime/register/runtimeInstance/methodBridge.mjs +14 -7
  58. package/dist/dev/runtime/register/runtimeInstance/methodBridge.mjs.map +1 -1
  59. package/dist/dev/runtime/register/runtimeInstance/nativeDeclaration.mjs +78 -0
  60. package/dist/dev/runtime/register/runtimeInstance/nativeDeclaration.mjs.map +1 -0
  61. package/dist/dev/runtime/register/runtimeInstance/provideContext.mjs +52 -8
  62. package/dist/dev/runtime/register/runtimeInstance/provideContext.mjs.map +1 -1
  63. package/dist/dev/runtime/register/runtimeInstance/setupPhase.mjs +7 -2
  64. package/dist/dev/runtime/register/runtimeInstance/setupPhase.mjs.map +1 -1
  65. package/dist/dev/runtime/register/runtimeInstance/utils.mjs.map +1 -1
  66. package/dist/dev/runtime/register/runtimeInstance.mjs +60 -19
  67. package/dist/dev/runtime/register/runtimeInstance.mjs.map +1 -1
  68. package/dist/fetch.mjs +1 -1
  69. package/dist/internal-template.mjs +1 -1
  70. package/dist/package.mjs +1 -1
  71. package/dist/reactivity/core.mjs +1 -1
  72. package/dist/reactivity/reactive/patch.mjs +1 -1
  73. package/dist/reactivity/reactive/patchState.mjs +1 -1
  74. package/dist/reactivity/ref.mjs +1 -1
  75. package/dist/reactivity/watch/helpers.mjs +1 -1
  76. package/dist/router/initialNavigation.mjs +1 -1
  77. package/dist/router/scrollRestoration/adapters.d.mts +7 -0
  78. package/dist/router/scrollRestoration/adapters.mjs +1 -0
  79. package/dist/router/scrollRestoration/controller.d.mts +7 -0
  80. package/dist/router/scrollRestoration/controller.mjs +1 -0
  81. package/dist/router/scrollRestoration/host.d.mts +3 -0
  82. package/dist/router/scrollRestoration/host.mjs +1 -0
  83. package/dist/router/scrollRestoration/index.d.mts +8 -0
  84. package/dist/router/scrollRestoration/index.mjs +1 -0
  85. package/dist/router/scrollRestoration/types.d.mts +60 -0
  86. package/dist/router/useRoute.mjs +1 -1
  87. package/dist/router.d.mts +5 -1
  88. package/dist/router.mjs +1 -1
  89. package/dist/routerInternal/matching.mjs +1 -1
  90. package/dist/routerInternal/params.mjs +1 -1
  91. package/dist/routerInternal/path.mjs +1 -1
  92. package/dist/routerInternal/query.mjs +1 -1
  93. package/dist/routerInternal/records.mjs +1 -1
  94. package/dist/runtime/app/context.mjs +1 -1
  95. package/dist/runtime/app/diagnostics.mjs +1 -1
  96. package/dist/runtime/app/mount.mjs +1 -1
  97. package/dist/runtime/app/setData/commitTracker.d.mts +2 -1
  98. package/dist/runtime/app/setData/commitTracker.mjs +1 -1
  99. package/dist/runtime/app/setData/observation.d.mts +12 -0
  100. package/dist/runtime/app/setData/observation.mjs +1 -0
  101. package/dist/runtime/app/setData/scheduler.d.mts +1 -0
  102. package/dist/runtime/app/setData/scheduler.mjs +1 -1
  103. package/dist/runtime/app/setDataOptions.mjs +1 -1
  104. package/dist/runtime/define/initialComputed.mjs +1 -1
  105. package/dist/runtime/define/props.mjs +1 -1
  106. package/dist/runtime/define/scopedSlotOptions.mjs +1 -1
  107. package/dist/runtime/define.mjs +1 -1
  108. package/dist/runtime/diff.mjs +1 -1
  109. package/dist/runtime/features/publicLayout.mjs +1 -1
  110. package/dist/runtime/features/scopedSlots.d.mts +2 -1
  111. package/dist/runtime/hooks/base.mjs +1 -1
  112. package/dist/runtime/hooks/pageScroll.mjs +1 -0
  113. package/dist/runtime/hooks/register.mjs +1 -1
  114. package/dist/runtime/jsxIsland.mjs +1 -1
  115. package/dist/runtime/pageLayout.mjs +1 -1
  116. package/dist/runtime/pageScroll.mjs +1 -1
  117. package/dist/runtime/register/component/alipayRegistration.mjs +1 -1
  118. package/dist/runtime/register/component/lifecycle/optionalHooks.mjs +1 -1
  119. package/dist/runtime/register/component/lifecycle/platform.mjs +1 -1
  120. package/dist/runtime/register/component/lifecycle.mjs +1 -1
  121. package/dist/runtime/register/component/props.mjs +1 -1
  122. package/dist/runtime/register/component/registerDefinition.mjs +1 -1
  123. package/dist/runtime/register/component/registerNativeDefinition.mjs +1 -1
  124. package/dist/runtime/register/component.mjs +1 -1
  125. package/dist/runtime/register/runtimeInstance/methodBridge.mjs +1 -1
  126. package/dist/runtime/register/runtimeInstance/nativeDeclaration.mjs +1 -0
  127. package/dist/runtime/register/runtimeInstance/provideContext.mjs +1 -1
  128. package/dist/runtime/register/runtimeInstance/setupPhase.mjs +1 -1
  129. package/dist/runtime/register/runtimeInstance.d.mts +8 -4
  130. package/dist/runtime/register/runtimeInstance.mjs +1 -1
  131. package/dist/runtime/setupTracking.mjs +1 -1
  132. package/dist/runtime/templateRefs.mjs +1 -1
  133. package/dist/runtime/types/runtime.d.mts +1 -0
  134. package/dist/runtime/types/setData.d.mts +30 -0
  135. package/dist/scheduler.mjs +1 -1
  136. package/dist/web-apis.mjs +1 -1
  137. package/package.json +10 -9
  138. package/dist/dev/api/vitest/setup.d.mts +0 -1
  139. package/dist/dev/api/vitest.d.mts +0 -1
  140. package/dist/dev/api.d.mts +0 -1
  141. package/dist/dev/compiler.d.mts +0 -1
  142. package/dist/dev/fetch.d.mts +0 -9
  143. package/dist/dev/index.d.mts +0 -72
  144. package/dist/dev/internal-reactivity.d.mts +0 -18
  145. package/dist/dev/internal-runtime.d.mts +0 -45
  146. package/dist/dev/internal-template.d.mts +0 -2
  147. package/dist/dev/jsxTypes.d.mts +0 -9
  148. package/dist/dev/macros/shared.d.mts +0 -83
  149. package/dist/dev/macros.d.mts +0 -71
  150. package/dist/dev/reactivity/asyncDerivation.d.mts +0 -41
  151. package/dist/dev/reactivity/computed.d.mts +0 -25
  152. package/dist/dev/reactivity/core.d.mts +0 -35
  153. package/dist/dev/reactivity/index.d.mts +0 -16
  154. package/dist/dev/reactivity/reactive/mutation.d.mts +0 -21
  155. package/dist/dev/reactivity/reactive/patch.d.mts +0 -18
  156. package/dist/dev/reactivity/reactive/shallow.d.mts +0 -22
  157. package/dist/dev/reactivity/reactive/shared.d.mts +0 -4
  158. package/dist/dev/reactivity/reactive.d.mts +0 -42
  159. package/dist/dev/reactivity/readonly.d.mts +0 -27
  160. package/dist/dev/reactivity/ref.d.mts +0 -27
  161. package/dist/dev/reactivity/shallowRef.d.mts +0 -19
  162. package/dist/dev/reactivity/toRefs.d.mts +0 -43
  163. package/dist/dev/reactivity/traverse.d.mts +0 -8
  164. package/dist/dev/reactivity/watch/types.d.mts +0 -43
  165. package/dist/dev/reactivity/watch.d.mts +0 -22
  166. package/dist/dev/router/auto-routes.d.mts +0 -8
  167. package/dist/dev/router/createRouter.d.mts +0 -9
  168. package/dist/dev/router/navigationCore.d.mts +0 -7
  169. package/dist/dev/router/resolve.d.mts +0 -7
  170. package/dist/dev/router/routeSync.d.mts +0 -2
  171. package/dist/dev/router/types.d.mts +0 -267
  172. package/dist/dev/router/useRoute.d.mts +0 -20
  173. package/dist/dev/router/useRouter.d.mts +0 -9
  174. package/dist/dev/router.d.mts +0 -26
  175. package/dist/dev/routerInternal/location.d.mts +0 -2
  176. package/dist/dev/routerInternal/matching.d.mts +0 -2
  177. package/dist/dev/routerInternal/params.d.mts +0 -2
  178. package/dist/dev/routerInternal/query.d.mts +0 -7
  179. package/dist/dev/routerInternal/records.d.mts +0 -2
  180. package/dist/dev/routerInternal/recordsWarnings.d.mts +0 -2
  181. package/dist/dev/routerInternal/shared.d.mts +0 -9
  182. package/dist/dev/routerInternal/snapshots.d.mts +0 -2
  183. package/dist/dev/routerInternal/types.d.mts +0 -9
  184. package/dist/dev/runtime/app/pending.d.mts +0 -10
  185. package/dist/dev/runtime/app/setData/commitTracker.d.mts +0 -13
  186. package/dist/dev/runtime/app/setData/scheduler.d.mts +0 -51
  187. package/dist/dev/runtime/app.d.mts +0 -8
  188. package/dist/dev/runtime/capabilities.d.mts +0 -78
  189. package/dist/dev/runtime/css.d.mts +0 -14
  190. package/dist/dev/runtime/defaults.d.mts +0 -12
  191. package/dist/dev/runtime/define.d.mts +0 -118
  192. package/dist/dev/runtime/disposables.d.mts +0 -31
  193. package/dist/dev/runtime/elementIntersectionObserver.d.mts +0 -26
  194. package/dist/dev/runtime/features/inlineEvents.d.mts +0 -7
  195. package/dist/dev/runtime/features/jsxIslands.d.mts +0 -7
  196. package/dist/dev/runtime/features/layout.d.mts +0 -7
  197. package/dist/dev/runtime/features/patchStrategy.d.mts +0 -7
  198. package/dist/dev/runtime/features/publicLayout.d.mts +0 -24
  199. package/dist/dev/runtime/features/scopedSlots.d.mts +0 -23
  200. package/dist/dev/runtime/features/setDataHighFrequencyWarning.d.mts +0 -7
  201. package/dist/dev/runtime/features/templateRefs.d.mts +0 -7
  202. package/dist/dev/runtime/hooks/base.d.mts +0 -27
  203. package/dist/dev/runtime/hooks/register.d.mts +0 -30
  204. package/dist/dev/runtime/hooks/vue.d.mts +0 -52
  205. package/dist/dev/runtime/hooks.d.mts +0 -4
  206. package/dist/dev/runtime/index.d.mts +0 -46
  207. package/dist/dev/runtime/intersectionObserver.d.mts +0 -14
  208. package/dist/dev/runtime/jsxIsland.d.mts +0 -37
  209. package/dist/dev/runtime/layoutBridge.d.mts +0 -55
  210. package/dist/dev/runtime/noSetData.d.mts +0 -5
  211. package/dist/dev/runtime/pageEnvironment.d.mts +0 -50
  212. package/dist/dev/runtime/pageLayout.d.mts +0 -25
  213. package/dist/dev/runtime/pageScroll.d.mts +0 -29
  214. package/dist/dev/runtime/provide.d.mts +0 -60
  215. package/dist/dev/runtime/provideStore.d.mts +0 -7
  216. package/dist/dev/runtime/publicRuntime.d.mts +0 -22
  217. package/dist/dev/runtime/pullDownRefresh.d.mts +0 -12
  218. package/dist/dev/runtime/register/app.d.mts +0 -14
  219. package/dist/dev/runtime/register/component.d.mts +0 -17
  220. package/dist/dev/runtime/register/inline.d.mts +0 -15
  221. package/dist/dev/runtime/register/runtimeInstance.d.mts +0 -26
  222. package/dist/dev/runtime/register/setup.d.mts +0 -11
  223. package/dist/dev/runtime/register/watch.d.mts +0 -12
  224. package/dist/dev/runtime/register.d.mts +0 -5
  225. package/dist/dev/runtime/selectorQuery.d.mts +0 -54
  226. package/dist/dev/runtime/template.d.mts +0 -6
  227. package/dist/dev/runtime/templateRefTypes.d.mts +0 -12
  228. package/dist/dev/runtime/types/core.d.mts +0 -35
  229. package/dist/dev/runtime/types/miniprogram.d.mts +0 -84
  230. package/dist/dev/runtime/types/miniprogramHost.d.mts +0 -45
  231. package/dist/dev/runtime/types/miniprogramHostSources.d.mts +0 -112
  232. package/dist/dev/runtime/types/options.d.mts +0 -138
  233. package/dist/dev/runtime/types/props/propTypes.d.mts +0 -79
  234. package/dist/dev/runtime/types/props/router.d.mts +0 -51
  235. package/dist/dev/runtime/types/props/setup.d.mts +0 -96
  236. package/dist/dev/runtime/types/props.d.mts +0 -4
  237. package/dist/dev/runtime/types/runtime.d.mts +0 -59
  238. package/dist/dev/runtime/types/setData.d.mts +0 -237
  239. package/dist/dev/runtime/types.d.mts +0 -29
  240. package/dist/dev/runtime/uniAppHost.d.mts +0 -8
  241. package/dist/dev/runtime/updatePerformance.d.mts +0 -13
  242. package/dist/dev/runtime/use.d.mts +0 -13
  243. package/dist/dev/runtime/vueCompat/context.d.mts +0 -8
  244. package/dist/dev/runtime/vueCompat/model.d.mts +0 -30
  245. package/dist/dev/runtime/vueCompat/router.d.mts +0 -29
  246. package/dist/dev/runtime/vueCompat/templateRef.d.mts +0 -9
  247. package/dist/dev/runtime/vueCompat.d.mts +0 -5
  248. package/dist/dev/scheduler.d.mts +0 -4
  249. package/dist/dev/store/define.d.mts +0 -8
  250. package/dist/dev/store/manager.d.mts +0 -16
  251. package/dist/dev/store/storeToRefs.d.mts +0 -11
  252. package/dist/dev/store/types.d.mts +0 -106
  253. package/dist/dev/store.d.mts +0 -5
  254. package/dist/dev/version.d.mts +0 -4
  255. package/dist/dev/vue-augment.d.mts +0 -8
  256. package/dist/dev/vue-demi.d.mts +0 -87
  257. package/dist/dev/vue-types.d.mts +0 -19
  258. package/dist/dev/web-apis.d.mts +0 -3
  259. /package/dist/_virtual/{_@oxc-project_runtime@0.151.0 → _@oxc-project_runtime@0.153.0}/helpers/esm/defineProperty.mjs +0 -0
  260. /package/dist/_virtual/{_@oxc-project_runtime@0.151.0 → _@oxc-project_runtime@0.153.0}/helpers/esm/toPrimitive.mjs +0 -0
  261. /package/dist/_virtual/{_@oxc-project_runtime@0.151.0 → _@oxc-project_runtime@0.153.0}/helpers/esm/toPropertyKey.mjs +0 -0
  262. /package/dist/_virtual/{_@oxc-project_runtime@0.151.0 → _@oxc-project_runtime@0.153.0}/helpers/esm/typeof.mjs +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"runtimeInstance.mjs","names":["effectScope","createEffectScope"],"sources":["../../../../src/runtime/register/runtimeInstance.ts"],"sourcesContent":["import type { SetDataAdapterSettlement, SetDataAdapterSettler, SetDataPayload } from '../app/setData/commitTracker'\nimport type {\n ComponentPropsOptions,\n ComputedDefinitions,\n DefineAppOptions,\n DefineComponentOptions,\n InternalRuntimeState,\n MethodDefinitions,\n RuntimeApp,\n RuntimeInstance,\n SetDataSnapshotOptions,\n} from '../types'\nimport type { AdapterWithSetData } from './runtimeInstance/utils'\nimport type { WatchMap } from './watch'\nimport {\n WEAPP_VITE_STATEFUL_HMR_BRIDGE_KEY,\n WEVU_EFFECT_SCOPE_KEY,\n WEVU_EXPOSED_KEY,\n WEVU_HOOKS_KEY,\n WEVU_HOST_COMMIT_PROMISE_KEY,\n WEVU_ON_BEFORE_UNMOUNT_HOOK,\n WEVU_PAGE_SCROLL_HOOK_DEPTH_KEY,\n WEVU_PROPS_DERIVED_KEYS_KEY,\n WEVU_PUBLIC_RUNTIME_KEY,\n WEVU_SETUP_CONTEXT_INSTANCE_KEY,\n WEVU_SLOT_OWNER_ID_KEY,\n WEVU_WATCH_STOPS_KEY,\n} from '@weapp-core/constants'\nimport { effectScope as createEffectScope, isReactive, isRef } from '../../reactivity'\nimport { observeSetDataCompletion } from '../app/setData/commitTracker'\nimport { applySnapshotUpdate, isDeepEqualValue } from '../app/setData/snapshot'\nimport {\n isSetDataHighFrequencyWarningRequested,\n requireRuntimeCapability,\n runtimeCapabilityRegistry,\n} from '../capabilities'\nimport { callHookList } from '../hooks'\nimport { getMiniProgramRuntimeGlobalObject } from '../platform'\nimport { runTeardownSteps } from '../teardown'\nimport { bridgeRuntimeMethodsToTarget } from './runtimeInstance/methodBridge'\nimport { attachRuntimeProvideParentContext } from './runtimeInstance/provideContext'\nimport {\n attachRuntimeSlots,\n createNoopWatchStopHandle,\n safeMarkNoSetData,\n} from './runtimeInstance/setupContext'\nimport { runRuntimeSetupPhase } from './runtimeInstance/setupPhase'\nimport { restoreReactiveSetupSnapshot } from './runtimeInstance/setupSnapshot'\nimport {\n attachNativeInstanceRef,\n attachRuntimeInstance,\n attachRuntimeRef,\n callNativeSetData,\n ensureRuntimeProps,\n resolveNativeSetData,\n} from './runtimeInstance/utils'\nimport { registerWatches } from './watch'\n\nconst initialReactiveSetupSnapshots = new WeakMap<object, Record<string, unknown>>()\n\nfunction cloneInitialSnapshotValue(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(cloneInitialSnapshotValue(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] = cloneInitialSnapshotValue(child, cache)\n }\n return next\n}\nfunction mergeBufferedSetDataPayload(\n buffered: SetDataPayload | undefined,\n incoming: SetDataPayload,\n): SetDataPayload {\n const merged = buffered ?? {}\n for (const [path, value] of Object.entries(incoming)) {\n let ancestorPath: string | undefined\n for (const candidate of Object.keys(merged)) {\n if (path.startsWith(`${candidate}.`)) {\n ancestorPath = candidate\n break\n }\n }\n if (ancestorPath) {\n const holder: Record<string, unknown> = { value: merged[ancestorPath] }\n applySnapshotUpdate(\n holder,\n `value.${path.slice(ancestorPath.length + 1)}`,\n value,\n 'set',\n { cloneValue: false, clonedParents: new WeakSet<object>() },\n )\n merged[ancestorPath] = holder.value\n continue\n }\n const descendantPrefix = `${path}.`\n for (const candidate of Object.keys(merged)) {\n if (candidate.startsWith(descendantPrefix)) {\n delete merged[candidate]\n }\n }\n merged[path] = value\n }\n return merged\n}\n\nfunction resolveInitialSnapshotFromNativeData(\n target: InternalRuntimeState,\n omitKeys?: string[],\n extraEntries?: Record<string, unknown>,\n) {\n const data = (target as any).data\n if ((!data || typeof data !== 'object') && (!extraEntries || !Object.keys(extraEntries).length)) {\n return undefined\n }\n const omitSet = Array.isArray(omitKeys) && omitKeys.length\n ? new Set(omitKeys)\n : undefined\n const snapshot: Record<string, any> = {}\n if (data && typeof data === 'object') {\n for (const [key, value] of Object.entries(data as Record<string, unknown>)) {\n if (omitSet?.has(key)) {\n continue\n }\n snapshot[key] = cloneInitialSnapshotValue(value)\n }\n }\n if (extraEntries) {\n for (const [key, value] of Object.entries(extraEntries)) {\n if (omitSet?.has(key)) {\n continue\n }\n snapshot[key] = cloneInitialSnapshotValue(value)\n }\n }\n return snapshot\n}\n\nfunction hasTemplateRuntimeBindings(runtimeApp: RuntimeApp<any, any, any>) {\n return Boolean((runtimeApp as any)?.__wevuHasTemplateRuntimeBindings)\n}\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_trackSetupReactiveKey?: (key: string) => void\n __wevu_cloneDispatchedSnapshot?: () => Record<string, any>\n}\n\ninterface BufferedSetDataSettlement {\n settle: SetDataAdapterSettler\n next: BufferedSetDataSettlement | undefined\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, snapshotOmitKeys?: string[] },\n) {\n if (target.__wevu) {\n return target.__wevu as RuntimeInstance<D, C, M>\n }\n const runtimeSetDataOptions = (\n runtimeApp as typeof runtimeApp & { __wevuSetDataOptions?: SetDataSnapshotOptions }\n ).__wevuSetDataOptions\n const hasScopedSlotBindings = hasTemplateRuntimeBindings(runtimeApp)\n const scopedSlotHooks = hasScopedSlotBindings\n ? requireRuntimeCapability('scopedSlots', 'mountRuntimeInstance(scoped-slot bindings)')\n : undefined\n const scopedSlotState = scopedSlotHooks?.prepareMount(target)\n const templateRefBindings = target.__wevuTemplateRefs\n if (Array.isArray(templateRefBindings) && templateRefBindings.length) {\n requireRuntimeCapability('templateRefs', 'mountRuntimeInstance(template refs)')\n }\n const highFrequencyWarningRequested = isSetDataHighFrequencyWarningRequested(\n runtimeSetDataOptions?.highFrequencyWarning,\n )\n const highFrequencyWarningHooks = highFrequencyWarningRequested\n ? requireRuntimeCapability('setDataHighFrequencyWarning', 'mountRuntimeInstance(setData.highFrequencyWarning)')\n : undefined\n attachRuntimeProvideParentContext(target, runtimeApp as RuntimeApp<any, any, any>)\n safeMarkNoSetData(target)\n const suspendWhenHidden = Boolean(runtimeSetDataOptions?.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 = highFrequencyWarningHooks?.createMonitor({\n option: runtimeSetDataOptions?.highFrequencyWarning,\n targetLabel,\n isInPageScrollHook: () => Number((target as any)[WEVU_PAGE_SCROLL_HOOK_DEPTH_KEY] ?? 0) > 0,\n })\n let visible = true\n let enabled = !options?.deferSetData\n let disposed = false\n let dispatchGeneration = 0\n let pendingPayload: SetDataPayload | undefined\n let pendingSettlementHead: BufferedSetDataSettlement | undefined\n let pendingSettlementTail: BufferedSetDataSettlement | undefined\n let pendingRawCallbacks: Array<() => void> = []\n const ownsHostCommit = !(WEVU_HOST_COMMIT_PROMISE_KEY in target)\n let pendingHostCommits = 0\n let hostCommitFailed = false\n let hostCommitCause: unknown\n let hostCommitPromise: Promise<void> | undefined\n let resolveHostCommit: (() => void) | undefined\n let rejectHostCommit: ((cause: unknown) => void) | undefined\n\n const resetHostCommitFailure = () => {\n if (!pendingHostCommits && !pendingPayload && !hostCommitPromise) {\n hostCommitFailed = false\n hostCommitCause = undefined\n }\n }\n const flushHostCommitWaiter = () => {\n if (pendingHostCommits || pendingPayload) {\n return\n }\n if (hostCommitFailed) {\n rejectHostCommit?.(hostCommitCause)\n }\n else {\n resolveHostCommit?.()\n }\n hostCommitPromise = undefined\n resolveHostCommit = undefined\n rejectHostCommit = undefined\n }\n const beginHostCommit = () => {\n if (ownsHostCommit) {\n pendingHostCommits += 1\n }\n }\n const finishHostCommit = (settlement: SetDataAdapterSettlement = 'committed', cause?: unknown) => {\n if (!ownsHostCommit || disposed) {\n return\n }\n if (settlement === 'failed' && !hostCommitFailed) {\n hostCommitFailed = true\n hostCommitCause = cause\n }\n pendingHostCommits -= 1\n flushHostCommitWaiter()\n }\n const failHostCommit = (cause: unknown) => finishHostCommit('failed', cause)\n if (ownsHostCommit) {\n Object.defineProperty(target, WEVU_HOST_COMMIT_PROMISE_KEY, {\n configurable: true,\n enumerable: false,\n get: () => {\n if (!pendingHostCommits && !pendingPayload) {\n return hostCommitFailed ? Promise.reject(hostCommitCause) : undefined\n }\n // 只有实例 $nextTick 消费宿主屏障时才创建 Promise。\n hostCommitPromise ??= new Promise<void>((resolve, reject) => {\n resolveHostCommit = resolve\n rejectHostCommit = reject\n })\n return hostCommitPromise\n },\n })\n }\n\n const refreshOwnerSnapshot = () => {\n if (scopedSlotState) {\n runtimeCapabilityRegistry.scopedSlots?.refresh(target, scopedSlotState)\n }\n }\n const completeSuccessfulSetData = () => {\n if (disposed) {\n return\n }\n const bindings = target.__wevuTemplateRefs\n if (!runtimeCapabilityRegistry.templateRefs && (!Array.isArray(bindings) || !bindings.length)) {\n if (ownsHostCommit) {\n finishHostCommit()\n }\n return\n }\n requireRuntimeCapability(\n 'templateRefs',\n 'mountRuntimeInstance(template ref completion)',\n ).schedule(\n target,\n ownsHostCommit ? finishHostCommit : undefined,\n target,\n ownsHostCommit ? failHostCommit : undefined,\n )\n }\n const syncNativeOwnerId = () => {\n if (scopedSlotState) {\n scopedSlotHooks?.syncNativeOwnerId(target, scopedSlotState)\n }\n }\n const appendPendingSettlement = (settle: SetDataAdapterSettler) => {\n const record: BufferedSetDataSettlement = {\n settle,\n next: undefined,\n }\n if (pendingSettlementTail) {\n pendingSettlementTail.next = record\n }\n else {\n pendingSettlementHead = record\n }\n pendingSettlementTail = record\n }\n const settlePendingRecords = (\n first: BufferedSetDataSettlement | undefined,\n settlement: SetDataAdapterSettlement,\n cause?: unknown,\n ) => {\n let current = first\n let isFirst = true\n while (current) {\n const next = current.next\n current.next = undefined\n if (settlement === 'failed' && !isFirst) {\n current.settle('abandoned')\n }\n else {\n current.settle(settlement, cause)\n }\n current = next\n isFirst = false\n }\n }\n const dispatchPhysicalSetData = (\n payload: SetDataPayload,\n settle: SetDataAdapterSettler,\n ) => {\n const generation = dispatchGeneration\n beginHostCommit()\n refreshOwnerSnapshot()\n observeSetDataCompletion({\n invoke: (callback) => {\n const setData = resolveNativeSetData(target)\n if (!setData) {\n callback()\n return undefined\n }\n return callNativeSetData(target, setData, payload, callback)\n },\n completion: 'callback',\n settle: (settlement, cause) => {\n if (disposed || generation !== dispatchGeneration) {\n return\n }\n if (settlement !== 'committed') {\n finishHostCommit(settlement, cause)\n settle(settlement, cause)\n return\n }\n // 物理提交已成功,但实例屏障仍需等待原始回调;回调失败不能回滚快照账本。\n try {\n settle(settlement, cause)\n }\n catch (error) {\n finishHostCommit('failed', error)\n throw error\n }\n completeSuccessfulSetData()\n },\n })\n }\n const flushPendingSetData = () => {\n if (!pendingPayload) {\n return\n }\n const payload = pendingPayload\n const settlements = pendingSettlementHead\n const rawCallbacks = pendingRawCallbacks\n pendingPayload = undefined\n pendingSettlementHead = undefined\n pendingSettlementTail = undefined\n pendingRawCallbacks = []\n dispatchPhysicalSetData(payload, (settlement, cause) => {\n if (settlement === 'committed') {\n try {\n for (const callback of rawCallbacks) {\n callback()\n }\n }\n finally {\n settlePendingRecords(settlements, settlement, cause)\n }\n return\n }\n settlePendingRecords(settlements, settlement, cause)\n })\n }\n const abandonPendingSetData = () => {\n const settlements = pendingSettlementHead\n pendingPayload = undefined\n pendingSettlementHead = undefined\n pendingSettlementTail = undefined\n pendingRawCallbacks = []\n settlePendingRecords(settlements, 'abandoned')\n flushHostCommitWaiter()\n }\n const bufferPayload = (payload: SetDataPayload) => {\n resetHostCommitFailure()\n pendingPayload = mergeBufferedSetDataPayload(pendingPayload, payload)\n }\n\n const adapter: AdapterWithSetData = {\n setData(payload: Record<string, any>, callback?: () => void) {\n highFrequencyWarning?.()\n if (!enabled || (suspendWhenHidden && !visible)) {\n bufferPayload(payload)\n if (callback) {\n pendingRawCallbacks.push(callback)\n }\n refreshOwnerSnapshot()\n return undefined\n }\n\n refreshOwnerSnapshot()\n resetHostCommitFailure()\n beginHostCommit()\n const setData = resolveNativeSetData(target)\n if (!setData) {\n try {\n callback?.()\n }\n catch (cause) {\n finishHostCommit('failed', cause)\n throw cause\n }\n completeSuccessfulSetData()\n return undefined\n }\n\n let invoking = true\n let callbackCalled = false\n let returnIsAuthoritative = false\n let successHandled = false\n const handleFailure = (cause: unknown) => {\n if (successHandled) {\n return\n }\n successHandled = true\n finishHostCommit('failed', cause)\n }\n const handleSuccess = () => {\n if (successHandled) {\n return\n }\n successHandled = true\n completeSuccessfulSetData()\n }\n const nativeCallback = () => {\n try {\n callback?.()\n }\n catch (cause) {\n handleFailure(cause)\n throw cause\n }\n if (invoking) {\n callbackCalled = true\n return\n }\n if (!returnIsAuthoritative) {\n handleSuccess()\n }\n }\n let result: void | Promise<void>\n try {\n result = callNativeSetData(target, setData, payload, nativeCallback)\n }\n catch (cause) {\n handleFailure(cause)\n throw cause\n }\n invoking = false\n returnIsAuthoritative = Boolean(result && typeof result.then === 'function')\n if (result && typeof result.then === 'function') {\n return result.then(\n () => {\n handleSuccess()\n },\n (cause) => {\n handleFailure(cause)\n throw cause\n },\n )\n }\n if (callbackCalled) {\n handleSuccess()\n }\n return result\n },\n __wevu_dispatchSetData(payload, settle) {\n highFrequencyWarning?.()\n if (disposed) {\n settle('abandoned')\n return\n }\n if (!enabled || (suspendWhenHidden && !visible)) {\n bufferPayload(payload)\n appendPendingSettlement(settle)\n refreshOwnerSnapshot()\n return\n }\n resetHostCommitFailure()\n dispatchPhysicalSetData(payload, settle)\n },\n __wevu_enableSetData(discardPending = false) {\n enabled = true\n if (discardPending) {\n abandonPendingSetData()\n return\n }\n flushPendingSetData()\n },\n __wevu_setVisibility(nextVisible: boolean) {\n visible = nextVisible\n if (visible && enabled) {\n flushPendingSetData()\n }\n },\n __wevu_disposeSetData() {\n if (disposed) {\n return\n }\n disposed = true\n dispatchGeneration += 1\n pendingPayload = undefined\n pendingSettlementHead = undefined\n pendingSettlementTail = undefined\n pendingRawCallbacks = []\n pendingHostCommits = 0\n hostCommitFailed = false\n hostCommitCause = undefined\n flushHostCommitWaiter()\n if (ownsHostCommit) {\n Reflect.deleteProperty(target, WEVU_HOST_COMMIT_PROMISE_KEY)\n }\n },\n }\n\n const baseMountAdapter = {\n ...adapter,\n }\n Object.defineProperty(baseMountAdapter, '__wevu_reportSetDataError', {\n configurable: true,\n enumerable: false,\n value: (error: Error) => {\n callHookList(target, 'onError', [error])\n },\n writable: false,\n })\n Object.defineProperty(baseMountAdapter, '__wevu_targetLabel', {\n configurable: true,\n enumerable: false,\n value: targetLabel,\n writable: false,\n })\n const targetProperties = (target as any).properties\n if (targetProperties && typeof targetProperties === 'object') {\n Object.defineProperty(baseMountAdapter, '__wevu_initialProps', {\n configurable: true,\n enumerable: false,\n value: targetProperties,\n writable: false,\n })\n }\n if (Array.isArray(options?.snapshotOmitKeys) && options.snapshotOmitKeys.length) {\n Object.defineProperty(baseMountAdapter, '__wevu_snapshotOmitKeys', {\n configurable: true,\n enumerable: false,\n value: options.snapshotOmitKeys,\n writable: false,\n })\n }\n const initialSnapshot = resolveInitialSnapshotFromNativeData(\n target,\n options?.snapshotOmitKeys,\n )\n if (initialSnapshot && Object.keys(initialSnapshot).length) {\n Object.defineProperty(baseMountAdapter, '__wevu_initialSnapshot', {\n configurable: true,\n enumerable: false,\n value: initialSnapshot,\n writable: false,\n })\n }\n if (scopedSlotState) {\n Object.defineProperty(baseMountAdapter, '__wevu_initialState', {\n configurable: true,\n enumerable: false,\n value: { [WEVU_SLOT_OWNER_ID_KEY]: scopedSlotState.ownerId },\n writable: false,\n })\n }\n const shouldDeferInitialSnapshot = Boolean(options?.deferSetData)\n || Boolean(setup)\n || Boolean(targetProperties && typeof targetProperties === 'object' && Object.keys(targetProperties).length > 0)\n if (shouldDeferInitialSnapshot) {\n Object.defineProperty(baseMountAdapter, '__wevu_deferInitialSnapshot', {\n configurable: true,\n enumerable: false,\n value: true,\n writable: false,\n })\n }\n const runtime = runtimeApp.mount(baseMountAdapter)\n attachRuntimeInstance(runtime as RuntimeInstance<any, any, any>, target)\n const runtimeProxy = runtime?.proxy ?? {}\n const runtimeState = runtime?.state ?? {}\n const runtimeSetupState = runtime?.setupState ?? Object.create(null)\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 setupState: runtimeSetupState,\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 Object.defineProperty(runtimeWithDefaults, '__wevu_initialRuntimeSnapshot', {\n configurable: true,\n enumerable: false,\n value: cloneInitialSnapshotValue(runtimeState),\n writable: false,\n })\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_trackSetupReactiveKey: (runtime as RuntimeInstanceWithSyncFlush<D, C, M>).__wevu_trackSetupReactiveKey,\n __wevu_cloneDispatchedSnapshot: (runtime as RuntimeInstanceWithSyncFlush<D, C, M>).__wevu_cloneDispatchedSnapshot,\n [WEVU_PROPS_DERIVED_KEYS_KEY]: (runtime as any)[WEVU_PROPS_DERIVED_KEYS_KEY],\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 const runtimeProps = ensureRuntimeProps(target, runtimeState as Record<string, any>)\n attachRuntimeSlots(runtimeState as Record<string, any>, runtimeProps)\n\n if (scopedSlotState) {\n scopedSlotHooks?.attachMount(target, runtimeWithDefaults, scopedSlotState, Boolean(options?.deferSetData))\n }\n syncNativeOwnerId()\n\n const watchStops = watchMap\n ? registerWatches(runtimeWithDefaults, watchMap, target, {\n deferMissingSourceBaseline: Boolean(setup),\n })\n : []\n if (watchStops.length) {\n target[WEVU_WATCH_STOPS_KEY] = watchStops\n }\n\n if (setup) {\n try {\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 })\n if (typeof getMiniProgramRuntimeGlobalObject()?.[WEAPP_VITE_STATEFUL_HMR_BRIDGE_KEY]?.trackWevuComponent === 'function') {\n const initialReactiveSetupSnapshot: Record<string, unknown> = {}\n for (const [key, value] of Object.entries(runtimeWithDefaults.setupState ?? {})) {\n if (isReactive(value)) {\n initialReactiveSetupSnapshot[key] = cloneInitialSnapshotValue(value)\n }\n }\n initialReactiveSetupSnapshots.set(runtimeWithDefaults, initialReactiveSetupSnapshot)\n }\n if (!options?.deferSetData) {\n runtimeWithSyncFlush.__wevu_flushSetupSnapshotSync?.()\n }\n if (!options?.deferSetData) {\n refreshOwnerSnapshot()\n }\n for (const stop of watchStops) {\n stop.resume()\n }\n }\n catch (error) {\n try {\n // eslint-disable-next-line ts/no-use-before-define -- setup 失败后复用统一 teardown 回滚已安装运行时\n teardownRuntimeInstance(target, { skipHooks: true })\n }\n catch {\n // setup 异常优先,回滚异常不能覆盖原始失败。\n }\n throw error\n }\n }\n else if (\n !options?.deferSetData\n && (target as any).properties\n && typeof (target as any).properties === 'object'\n && Object.keys((target as any).properties).length > 0\n ) {\n runtimeWithSyncFlush.__wevu_flushSetupSnapshotSync?.()\n refreshOwnerSnapshot()\n }\n\n // 将 runtime.methods 透传到原生实例,供小程序事件处理直接调用\n bridgeRuntimeMethodsToTarget(target, runtime)\n\n return runtime\n}\n\nfunction preserveRuntimeFacadeIdentity<D extends object, C extends ComputedDefinitions, M extends MethodDefinitions>(\n target: InternalRuntimeState,\n previousRuntime: RuntimeInstance<D, C, M>,\n nextRuntime: RuntimeInstance<D, C, M>,\n) {\n for (const key of Reflect.ownKeys(previousRuntime)) {\n if (!Reflect.has(nextRuntime, key)) {\n const descriptor = Reflect.getOwnPropertyDescriptor(previousRuntime, key)\n if (descriptor?.configurable) {\n Reflect.deleteProperty(previousRuntime, key)\n }\n }\n }\n for (const key of Reflect.ownKeys(nextRuntime)) {\n const descriptor = Reflect.getOwnPropertyDescriptor(nextRuntime, key)\n if (!descriptor) {\n continue\n }\n try {\n Reflect.defineProperty(previousRuntime, key, descriptor)\n }\n catch {\n try {\n ;(previousRuntime as any)[key] = (nextRuntime as any)[key]\n }\n catch {\n // 宿主包装对象仍持有旧 runtime 时,保留无法覆盖的只读字段。\n }\n }\n }\n attachRuntimeRef(previousRuntime.state as Record<string, any>, previousRuntime)\n const nextInitialSetupSnapshot = initialReactiveSetupSnapshots.get(nextRuntime)\n if (nextInitialSetupSnapshot) {\n initialReactiveSetupSnapshots.set(previousRuntime, nextInitialSetupSnapshot)\n }\n target.__wevu = previousRuntime\n Object.defineProperty(target, WEVU_PUBLIC_RUNTIME_KEY, {\n value: previousRuntime,\n configurable: true,\n enumerable: false,\n writable: false,\n })\n return previousRuntime\n}\n\nfunction createRuntimeStateSnapshot(\n runtime: RuntimeInstance<any, any, any>,\n nativeData: Record<string, any> | undefined,\n preferredState?: Record<string, any>,\n) {\n const runtimeState = runtime.state as Record<string, any>\n const setupState = runtime.setupState as Record<string, any> | undefined\n const snapshot: Record<string, any> = {}\n for (const key of Object.keys(nativeData ?? {})) {\n if (!Object.prototype.hasOwnProperty.call(runtimeState, key)) {\n continue\n }\n const setupBinding = setupState?.[key]\n if (setupState && Object.prototype.hasOwnProperty.call(setupState, key) && !isRef(setupBinding) && !isReactive(setupBinding)) {\n continue\n }\n if (preferredState && Object.prototype.hasOwnProperty.call(preferredState, key)) {\n snapshot[key] = cloneInitialSnapshotValue(preferredState[key])\n continue\n }\n snapshot[key] = cloneInitialSnapshotValue(isRef(setupBinding) ? setupBinding.value : runtimeState[key])\n }\n return snapshot\n}\n\nfunction syncRuntimeStateFromNativeData(\n target: InternalRuntimeState,\n options?: { includeSetupState?: boolean, nativeData?: Record<string, any>, initialSetupState?: Record<string, unknown> },\n) {\n const runtime = target.__wevu\n const runtimeState = runtime?.state as Record<string, any> | undefined\n const setupState = runtime?.setupState as Record<string, any> | undefined\n const nativeData = options?.nativeData ?? (target as any).data as Record<string, any> | undefined\n if (!runtimeState || typeof runtimeState !== 'object' || !nativeData || typeof nativeData !== 'object') {\n return\n }\n const initialRuntimeSnapshot = (runtime as any)?.__wevu_initialRuntimeSnapshot as Record<string, any> | undefined\n for (const [key, value] of Object.entries(nativeData)) {\n if (!key || key === 'undefined') {\n continue\n }\n if (Object.prototype.hasOwnProperty.call(runtimeState, key)) {\n try {\n const setupBinding = setupState?.[key]\n const runtimeValue = cloneInitialSnapshotValue(value)\n if (setupState && Object.prototype.hasOwnProperty.call(setupState, key)) {\n // 普通 setup 值来自当前代码;仅 ref/reactive 绑定承接宿主状态。\n if (!options?.includeSetupState || (!isRef(setupBinding) && !isReactive(setupBinding))) {\n continue\n }\n }\n if (\n !options?.includeSetupState\n && initialRuntimeSnapshot\n && Object.prototype.hasOwnProperty.call(initialRuntimeSnapshot, key)\n && !isDeepEqualValue(runtimeState[key], initialRuntimeSnapshot[key], 20, { keys: 10_000 })\n ) {\n continue\n }\n if (\n !options?.includeSetupState\n && initialRuntimeSnapshot\n && !Object.prototype.hasOwnProperty.call(initialRuntimeSnapshot, key)\n ) {\n continue\n }\n if (isRef(setupBinding)) {\n setupBinding.value = runtimeValue\n continue\n }\n if (isReactive(setupBinding) && runtimeValue && typeof runtimeValue === 'object') {\n restoreReactiveSetupSnapshot(setupBinding, runtimeValue, options?.initialSetupState?.[key])\n continue\n }\n runtimeState[key] = runtimeValue\n }\n catch {\n // DevTools 热更新期间可能带入响应式 state 拒绝写入的临时 data key,跳过即可。\n }\n }\n }\n}\n\nexport function enableDeferredSetData(\n target: InternalRuntimeState,\n options?: { rehydrateSetupState?: boolean },\n) {\n const adapter = target.__wevu?.adapter as AdapterWithSetData | undefined\n syncRuntimeStateFromNativeData(target, {\n includeSetupState: options?.rehydrateSetupState,\n })\n adapter?.__wevu_enableSetData?.(true)\n ;(target as any).__wevu?.__wevu_flushSetupSnapshotSync?.()\n}\n\nexport function setRuntimeSetDataVisibility(target: InternalRuntimeState, visible: boolean) {\n const adapter = target.__wevu?.adapter as AdapterWithSetData | undefined\n adapter?.__wevu_setVisibility?.(visible)\n}\n\n/**\n * 卸载运行时实例(框架内部注册流程使用)。\n * @internal\n */\nexport function teardownRuntimeInstance(target: InternalRuntimeState, options?: { skipHooks?: boolean }) {\n const runtime = target.__wevu\n\n const stops = target[WEVU_WATCH_STOPS_KEY]\n const effectScope = target[WEVU_EFFECT_SCOPE_KEY]\n\n runTeardownSteps([\n () => {\n if (!options?.skipHooks && runtime && target[WEVU_HOOKS_KEY]?.[WEVU_ON_BEFORE_UNMOUNT_HOOK]) {\n if (effectScope?.active) {\n effectScope.run(() => callHookList(target, WEVU_ON_BEFORE_UNMOUNT_HOOK))\n }\n else {\n const teardownScope = createEffectScope(true)\n runTeardownSteps([\n () => teardownScope.run(() => callHookList(target, WEVU_ON_BEFORE_UNMOUNT_HOOK)),\n () => teardownScope.stop(),\n ])\n }\n }\n },\n () => runtimeCapabilityRegistry.scopedSlots?.teardown(target),\n () => {\n if (Array.isArray(target.__wevuTemplateRefs) && target.__wevuTemplateRefs.length > 0) {\n requireRuntimeCapability('templateRefs', 'teardownRuntimeInstance(template refs)').clear(target)\n }\n },\n () => {\n // 触发卸载钩子(仅在 teardown 首次执行时触发)\n if (!options?.skipHooks && runtime && target[WEVU_HOOKS_KEY]) {\n callHookList(target, 'onUnload', [])\n }\n },\n () => {\n // 清理注册的生命周期钩子\n if (target[WEVU_HOOKS_KEY]) {\n target[WEVU_HOOKS_KEY] = undefined\n }\n },\n () => {\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 },\n () => {\n target[WEVU_WATCH_STOPS_KEY] = undefined\n },\n () => {\n effectScope?.stop()\n },\n () => {\n target[WEVU_EFFECT_SCOPE_KEY] = undefined\n },\n () => runtime?.unmount(),\n () => {\n const adapter = runtime?.adapter as AdapterWithSetData | undefined\n adapter?.__wevu_disposeSetData?.()\n },\n () => {\n delete (target as any)[WEVU_SETUP_CONTEXT_INSTANCE_KEY]\n delete (target as any)[WEVU_EXPOSED_KEY]\n },\n () => {\n delete target.__wevu\n },\n () => {\n if (WEVU_PUBLIC_RUNTIME_KEY in target) {\n delete (target as any)[WEVU_PUBLIC_RUNTIME_KEY]\n }\n },\n ])\n}\n\n/**\n * 重建运行时实例,同时保持宿主包装对象持有的 runtime facade 身份稳定。\n * @internal\n */\nexport function refreshRuntimeInstance<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?: { snapshotOmitKeys?: string[], stateSnapshot?: Record<string, any> },\n) {\n const previousRuntime = target.__wevu as RuntimeInstance<D, C, M> | undefined\n const initialSetupState = previousRuntime ? initialReactiveSetupSnapshots.get(previousRuntime) : undefined\n const previousRuntimeState = previousRuntime\n ? createRuntimeStateSnapshot(previousRuntime, (target as any).data, options?.stateSnapshot)\n : undefined\n teardownRuntimeInstance(target, { skipHooks: true })\n const nextRuntime = mountRuntimeInstance(target, runtimeApp, watchMap, setup, {\n deferSetData: true,\n snapshotOmitKeys: options?.snapshotOmitKeys,\n })\n const stateSnapshot = previousRuntimeState ?? (options?.stateSnapshot\n ? createRuntimeStateSnapshot(nextRuntime, options.stateSnapshot, options.stateSnapshot)\n : undefined)\n if (stateSnapshot) {\n const nativeData = (target as any).data\n if (nativeData && typeof nativeData === 'object') {\n Object.assign(nativeData, cloneInitialSnapshotValue(stateSnapshot))\n }\n syncRuntimeStateFromNativeData(target, {\n includeSetupState: true,\n nativeData: stateSnapshot,\n initialSetupState,\n })\n }\n if (!previousRuntime || previousRuntime === nextRuntime) {\n return nextRuntime\n }\n return preserveRuntimeFacadeIdentity(target, previousRuntime, nextRuntime)\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AA0DA,MAAM,gDAAgC,IAAI,QAAyC;AAEnF,SAAS,0BAA0B,OAAgB,wBAAQ,IAAI,QAAyB,GAAY;CAClG,IAAI,CAAC,SAAS,OAAO,UAAU,UAC7B,OAAO;CAET,IAAI,MAAM,IAAI,KAAe,GAC3B,OAAO,MAAM,IAAI,KAAe;CAElC,IAAI,MAAM,QAAQ,KAAK,GAAG;EACxB,MAAM,OAAkB,CAAC;EACzB,MAAM,IAAI,OAAO,IAAI;EACrB,KAAK,MAAM,QAAQ,OACjB,KAAK,KAAK,0BAA0B,MAAM,KAAK,CAAC;EAElD,OAAO;CACT;CACA,MAAM,OAAgC,CAAC;CACvC,MAAM,IAAI,OAAiB,IAAI;CAC/B,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,KAAgC,GACxE,KAAK,OAAO,0BAA0B,OAAO,KAAK;CAEpD,OAAO;AACT;AACA,SAAS,4BACP,UACA,UACgB;CAChB,MAAM,SAAS,YAAY,CAAC;CAC5B,KAAK,MAAM,CAAC,MAAM,UAAU,OAAO,QAAQ,QAAQ,GAAG;EACpD,IAAI;EACJ,KAAK,MAAM,aAAa,OAAO,KAAK,MAAM,GACxC,IAAI,KAAK,WAAW,GAAG,UAAU,EAAE,GAAG;GACpC,eAAe;GACf;EACF;EAEF,IAAI,cAAc;GAChB,MAAM,SAAkC,EAAE,OAAO,OAAO,cAAc;GACtE,oBACE,QACA,SAAS,KAAK,MAAM,aAAa,SAAS,CAAC,KAC3C,OACA,OACA;IAAE,YAAY;IAAO,+BAAe,IAAI,QAAgB;GAAE,CAC5D;GACA,OAAO,gBAAgB,OAAO;GAC9B;EACF;EACA,MAAM,mBAAmB,GAAG,KAAK;EACjC,KAAK,MAAM,aAAa,OAAO,KAAK,MAAM,GACxC,IAAI,UAAU,WAAW,gBAAgB,GACvC,OAAO,OAAO;EAGlB,OAAO,QAAQ;CACjB;CACA,OAAO;AACT;AAEA,SAAS,qCACP,QACA,UACA,cACA;CACA,MAAM,OAAQ,OAAe;CAC7B,KAAK,CAAC,QAAQ,OAAO,SAAS,cAAc,CAAC,gBAAgB,CAAC,OAAO,KAAK,YAAY,CAAC,CAAC,SACtF;CAEF,MAAM,UAAU,MAAM,QAAQ,QAAQ,KAAK,SAAS,SAChD,IAAI,IAAI,QAAQ,IAChB;CACJ,MAAM,WAAgC,CAAC;CACvC,IAAI,QAAQ,OAAO,SAAS,UAC1B,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,IAA+B,GAAG;EAC1E,IAAI,SAAS,IAAI,GAAG,GAClB;EAEF,SAAS,OAAO,0BAA0B,KAAK;CACjD;CAEF,IAAI,cACF,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,YAAY,GAAG;EACvD,IAAI,SAAS,IAAI,GAAG,GAClB;EAEF,SAAS,OAAO,0BAA0B,KAAK;CACjD;CAEF,OAAO;AACT;AAEA,SAAS,2BAA2B,YAAuC;CACzE,OAAO,QAAS,YAAoB,gCAAgC;AACtE;;;;;AA6BA,SAAgB,qBACd,QACA,YACA,UACA,OACA,SACA;CACA,IAAI,OAAO,QACT,OAAO,OAAO;CAEhB,MAAM,wBACJ,WACA;CAEF,MAAM,kBADwB,2BAA2B,UACb,IACxC,yBAAyB,eAAe,4CAA4C,IACpF;CACJ,MAAM,kBAAkB,iBAAiB,aAAa,MAAM;CAC5D,MAAM,sBAAsB,OAAO;CACnC,IAAI,MAAM,QAAQ,mBAAmB,KAAK,oBAAoB,QAC5D,yBAAyB,gBAAgB,qCAAqC;CAKhF,MAAM,4BAHgC,uCACpC,uBAAuB,oBAEqC,IAC1D,yBAAyB,+BAA+B,oDAAoD,IAC5G;CACJ,kCAAkC,QAAQ,UAAuC;CACjF,kBAAkB,MAAM;CACxB,MAAM,oBAAoB,QAAQ,uBAAuB,iBAAiB;CAC1E,MAAM,cAAc,OAAQ,OAAe,UAAU,YAAa,OAAe,QAC7E,QAAS,OAAe,UACxB,OAAQ,OAAe,OAAO,YAAa,OAAe,KACxD,aAAc,OAAe,OAC7B;CACN,MAAM,uBAAuB,2BAA2B,cAAc;EACpE,QAAQ,uBAAuB;EAC/B;EACA,0BAA0B,OAAQ,OAAe,oCAAoC,CAAC,IAAI;CAC5F,CAAC;CACD,IAAI,UAAU;CACd,IAAI,UAAU,CAAC,SAAS;CACxB,IAAI,WAAW;CACf,IAAI,qBAAqB;CACzB,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI,sBAAyC,CAAC;CAC9C,MAAM,iBAAiB,EAAE,gCAAgC;CACzD,IAAI,qBAAqB;CACzB,IAAI,mBAAmB;CACvB,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CAEJ,MAAM,+BAA+B;EACnC,IAAI,CAAC,sBAAsB,CAAC,kBAAkB,CAAC,mBAAmB;GAChE,mBAAmB;GACnB,kBAAkB;EACpB;CACF;CACA,MAAM,8BAA8B;EAClC,IAAI,sBAAsB,gBACxB;EAEF,IAAI,kBACF,mBAAmB,eAAe;OAGlC,oBAAoB;EAEtB,oBAAoB;EACpB,oBAAoB;EACpB,mBAAmB;CACrB;CACA,MAAM,wBAAwB;EAC5B,IAAI,gBACF,sBAAsB;CAE1B;CACA,MAAM,oBAAoB,aAAuC,aAAa,UAAoB;EAChG,IAAI,CAAC,kBAAkB,UACrB;EAEF,IAAI,eAAe,YAAY,CAAC,kBAAkB;GAChD,mBAAmB;GACnB,kBAAkB;EACpB;EACA,sBAAsB;EACtB,sBAAsB;CACxB;CACA,MAAM,kBAAkB,UAAmB,iBAAiB,UAAU,KAAK;CAC3E,IAAI,gBACF,OAAO,eAAe,QAAQ,8BAA8B;EAC1D,cAAc;EACd,YAAY;EACZ,WAAW;GACT,IAAI,CAAC,sBAAsB,CAAC,gBAC1B,OAAO,mBAAmB,QAAQ,OAAO,eAAe,IAAI;GAG9D,0CAAsB,IAAI,SAAe,SAAS,WAAW;IAC3D,oBAAoB;IACpB,mBAAmB;GACrB,CAAC;GACD,OAAO;EACT;CACF,CAAC;CAGH,MAAM,6BAA6B;EACjC,IAAI,iBACF,0BAA0B,aAAa,QAAQ,QAAQ,eAAe;CAE1E;CACA,MAAM,kCAAkC;EACtC,IAAI,UACF;EAEF,MAAM,WAAW,OAAO;EACxB,IAAI,CAAC,0BAA0B,iBAAiB,CAAC,MAAM,QAAQ,QAAQ,KAAK,CAAC,SAAS,SAAS;GAC7F,IAAI,gBACF,iBAAiB;GAEnB;EACF;EACA,yBACE,gBACA,+CACF,CAAC,CAAC,SACA,QACA,iBAAiB,mBAAmB,QACpC,QACA,iBAAiB,iBAAiB,MACpC;CACF;CACA,MAAM,0BAA0B;EAC9B,IAAI,iBACF,iBAAiB,kBAAkB,QAAQ,eAAe;CAE9D;CACA,MAAM,2BAA2B,WAAkC;EACjE,MAAM,SAAoC;GACxC;GACA,MAAM;EACR;EACA,IAAI,uBACF,sBAAsB,OAAO;OAG7B,wBAAwB;EAE1B,wBAAwB;CAC1B;CACA,MAAM,wBACJ,OACA,YACA,UACG;EACH,IAAI,UAAU;EACd,IAAI,UAAU;EACd,OAAO,SAAS;GACd,MAAM,OAAO,QAAQ;GACrB,QAAQ,OAAO;GACf,IAAI,eAAe,YAAY,CAAC,SAC9B,QAAQ,OAAO,WAAW;QAG1B,QAAQ,OAAO,YAAY,KAAK;GAElC,UAAU;GACV,UAAU;EACZ;CACF;CACA,MAAM,2BACJ,SACA,WACG;EACH,MAAM,aAAa;EACnB,gBAAgB;EAChB,qBAAqB;EACrB,yBAAyB;GACvB,SAAS,aAAa;IACpB,MAAM,UAAU,qBAAqB,MAAM;IAC3C,IAAI,CAAC,SAAS;KACZ,SAAS;KACT;IACF;IACA,OAAO,kBAAkB,QAAQ,SAAS,SAAS,QAAQ;GAC7D;GACA,YAAY;GACZ,SAAS,YAAY,UAAU;IAC7B,IAAI,YAAY,eAAe,oBAC7B;IAEF,IAAI,eAAe,aAAa;KAC9B,iBAAiB,YAAY,KAAK;KAClC,OAAO,YAAY,KAAK;KACxB;IACF;IAEA,IAAI;KACF,OAAO,YAAY,KAAK;IAC1B,SACO,OAAO;KACZ,iBAAiB,UAAU,KAAK;KAChC,MAAM;IACR;IACA,0BAA0B;GAC5B;EACF,CAAC;CACH;CACA,MAAM,4BAA4B;EAChC,IAAI,CAAC,gBACH;EAEF,MAAM,UAAU;EAChB,MAAM,cAAc;EACpB,MAAM,eAAe;EACrB,iBAAiB;EACjB,wBAAwB;EACxB,wBAAwB;EACxB,sBAAsB,CAAC;EACvB,wBAAwB,UAAU,YAAY,UAAU;GACtD,IAAI,eAAe,aAAa;IAC9B,IAAI;KACF,KAAK,MAAM,YAAY,cACrB,SAAS;IAEb,UACQ;KACN,qBAAqB,aAAa,YAAY,KAAK;IACrD;IACA;GACF;GACA,qBAAqB,aAAa,YAAY,KAAK;EACrD,CAAC;CACH;CACA,MAAM,8BAA8B;EAClC,MAAM,cAAc;EACpB,iBAAiB;EACjB,wBAAwB;EACxB,wBAAwB;EACxB,sBAAsB,CAAC;EACvB,qBAAqB,aAAa,WAAW;EAC7C,sBAAsB;CACxB;CACA,MAAM,iBAAiB,YAA4B;EACjD,uBAAuB;EACvB,iBAAiB,4BAA4B,gBAAgB,OAAO;CACtE;CA2IA,MAAM,mBAAmB;EAxIvB,QAAQ,SAA8B,UAAuB;GAC3D,uBAAuB;GACvB,IAAI,CAAC,WAAY,qBAAqB,CAAC,SAAU;IAC/C,cAAc,OAAO;IACrB,IAAI,UACF,oBAAoB,KAAK,QAAQ;IAEnC,qBAAqB;IACrB;GACF;GAEA,qBAAqB;GACrB,uBAAuB;GACvB,gBAAgB;GAChB,MAAM,UAAU,qBAAqB,MAAM;GAC3C,IAAI,CAAC,SAAS;IACZ,IAAI;KACF,WAAW;IACb,SACO,OAAO;KACZ,iBAAiB,UAAU,KAAK;KAChC,MAAM;IACR;IACA,0BAA0B;IAC1B;GACF;GAEA,IAAI,WAAW;GACf,IAAI,iBAAiB;GACrB,IAAI,wBAAwB;GAC5B,IAAI,iBAAiB;GACrB,MAAM,iBAAiB,UAAmB;IACxC,IAAI,gBACF;IAEF,iBAAiB;IACjB,iBAAiB,UAAU,KAAK;GAClC;GACA,MAAM,sBAAsB;IAC1B,IAAI,gBACF;IAEF,iBAAiB;IACjB,0BAA0B;GAC5B;GACA,MAAM,uBAAuB;IAC3B,IAAI;KACF,WAAW;IACb,SACO,OAAO;KACZ,cAAc,KAAK;KACnB,MAAM;IACR;IACA,IAAI,UAAU;KACZ,iBAAiB;KACjB;IACF;IACA,IAAI,CAAC,uBACH,cAAc;GAElB;GACA,IAAI;GACJ,IAAI;IACF,SAAS,kBAAkB,QAAQ,SAAS,SAAS,cAAc;GACrE,SACO,OAAO;IACZ,cAAc,KAAK;IACnB,MAAM;GACR;GACA,WAAW;GACX,wBAAwB,QAAQ,UAAU,OAAO,OAAO,SAAS,UAAU;GAC3E,IAAI,UAAU,OAAO,OAAO,SAAS,YACnC,OAAO,OAAO,WACN;IACJ,cAAc;GAChB,IACC,UAAU;IACT,cAAc,KAAK;IACnB,MAAM;GACR,CACF;GAEF,IAAI,gBACF,cAAc;GAEhB,OAAO;EACT;EACA,uBAAuB,SAAS,QAAQ;GACtC,uBAAuB;GACvB,IAAI,UAAU;IACZ,OAAO,WAAW;IAClB;GACF;GACA,IAAI,CAAC,WAAY,qBAAqB,CAAC,SAAU;IAC/C,cAAc,OAAO;IACrB,wBAAwB,MAAM;IAC9B,qBAAqB;IACrB;GACF;GACA,uBAAuB;GACvB,wBAAwB,SAAS,MAAM;EACzC;EACA,qBAAqB,iBAAiB,OAAO;GAC3C,UAAU;GACV,IAAI,gBAAgB;IAClB,sBAAsB;IACtB;GACF;GACA,oBAAoB;EACtB;EACA,qBAAqB,aAAsB;GACzC,UAAU;GACV,IAAI,WAAW,SACb,oBAAoB;EAExB;EACA,wBAAwB;GACtB,IAAI,UACF;GAEF,WAAW;GACX,sBAAsB;GACtB,iBAAiB;GACjB,wBAAwB;GACxB,wBAAwB;GACxB,sBAAsB,CAAC;GACvB,qBAAqB;GACrB,mBAAmB;GACnB,kBAAkB;GAClB,sBAAsB;GACtB,IAAI,gBACF,QAAQ,eAAe,QAAQ,4BAA4B;EAE/D;CAKF;CACA,OAAO,eAAe,kBAAkB,6BAA6B;EACnE,cAAc;EACd,YAAY;EACZ,QAAQ,UAAiB;GACvB,aAAa,QAAQ,WAAW,CAAC,KAAK,CAAC;EACzC;EACA,UAAU;CACZ,CAAC;CACD,OAAO,eAAe,kBAAkB,sBAAsB;EAC5D,cAAc;EACd,YAAY;EACZ,OAAO;EACP,UAAU;CACZ,CAAC;CACD,MAAM,mBAAoB,OAAe;CACzC,IAAI,oBAAoB,OAAO,qBAAqB,UAClD,OAAO,eAAe,kBAAkB,uBAAuB;EAC7D,cAAc;EACd,YAAY;EACZ,OAAO;EACP,UAAU;CACZ,CAAC;CAEH,IAAI,MAAM,QAAQ,SAAS,gBAAgB,KAAK,QAAQ,iBAAiB,QACvE,OAAO,eAAe,kBAAkB,2BAA2B;EACjE,cAAc;EACd,YAAY;EACZ,OAAO,QAAQ;EACf,UAAU;CACZ,CAAC;CAEH,MAAM,kBAAkB,qCACtB,QACA,SAAS,gBACX;CACA,IAAI,mBAAmB,OAAO,KAAK,eAAe,CAAC,CAAC,QAClD,OAAO,eAAe,kBAAkB,0BAA0B;EAChE,cAAc;EACd,YAAY;EACZ,OAAO;EACP,UAAU;CACZ,CAAC;CAEH,IAAI,iBACF,OAAO,eAAe,kBAAkB,uBAAuB;EAC7D,cAAc;EACd,YAAY;EACZ,OAAO,GAAG,yBAAyB,gBAAgB,QAAQ;EAC3D,UAAU;CACZ,CAAC;CAKH,IAHmC,QAAQ,SAAS,YAAY,KAC3D,QAAQ,KAAK,KACb,QAAQ,oBAAoB,OAAO,qBAAqB,YAAY,OAAO,KAAK,gBAAgB,CAAC,CAAC,SAAS,CAAC,GAE/G,OAAO,eAAe,kBAAkB,+BAA+B;EACrE,cAAc;EACd,YAAY;EACZ,OAAO;EACP,UAAU;CACZ,CAAC;CAEH,MAAM,UAAU,WAAW,MAAM,gBAAgB;CACjD,sBAAsB,SAA2C,MAAM;CACvE,MAAM,eAAe,SAAS,SAAS,CAAC;CACxC,MAAM,eAAe,SAAS,SAAS,CAAC;CACxC,MAAM,oBAAoB,SAAS,cAAc,OAAO,OAAO,IAAI;CACnE,IAAI,gBAAgB,OAAO,iBAAiB,UAAU;EACpD,iBAAiB,cAAqC,OAAO;EAC7D,wBAAwB,cAAqC,MAAM;CACrE;CACA,MAAM,kBAAmB,SAAiB,YAAY,OAAO,OAAO,IAAI;CAExE,IAAI,CAAC,SAAS,SACZ,IAAI;EACD,AAAC,QAAgB,UAAU,OAAO,OAAO,IAAI;CAChD,QACM,CAEN;CAEF,MAAM,iBAAiB,SAAS,WAAW,OAAO,OAAO,IAAI;CAC7D,MAAM,eAAgB,SAAiB,gBAAgB,0BAA0B;CACjF,MAAM,mBAAoB,SAAiB,oBAAoB,CAAC;CAChE,MAAM,sBAAsB;EAC1B,GAAI,WAAW,CAAC;EAChB,OAAO;EACP,YAAY;EACZ,OAAO;EACP,SAAS;EACT,UAAU;EACV,OAAO;EACP,WAAW;EACX,UAAW,SAAiB,mBAAmB,OAAO,OAAO,IAAI;EACjE,SAAU,SAAiB,kBAAkB,CAAC;CAChD;CACA,OAAO,eAAe,qBAAqB,iCAAiC;EAC1E,cAAc;EACd,YAAY;EACZ,OAAO,0BAA0B,YAAY;EAC7C,UAAU;CACZ,CAAC;CACD,MAAM,uBAAuB;CAC7B,MAAM,wBAAwB;EAC5B,+BAAgC,QAAkD;EAClF,iCAAkC,QAAkD;EACpF,8BAA+B,QAAkD;EACjF,gCAAiC,QAAkD;GAClF,8BAA+B,QAAgB;CAClD;CACA,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,qBAAqB,GAAG;EAChE,IAAI,CAAC,OACH;EAEF,OAAO,eAAe,qBAAqB,KAAK;GAC9C,cAAc;GACd,YAAY;GACZ;GACA,UAAU;EACZ,CAAC;CACH;CAEA,OAAO,eAAe,QAAQ,yBAAyB;EACrD,OAAO;EACP,cAAc;EACd,YAAY;EACZ,UAAU;CACZ,CAAC;CACD,OAAO,SAAS;CAChB,MAAM,eAAe,mBAAmB,QAAQ,YAAmC;CACnF,mBAAmB,cAAqC,YAAY;CAEpE,IAAI,iBACF,iBAAiB,YAAY,QAAQ,qBAAqB,iBAAiB,QAAQ,SAAS,YAAY,CAAC;CAE3G,kBAAkB;CAElB,MAAM,aAAa,WACf,gBAAgB,qBAAqB,UAAU,QAAQ,EACrD,4BAA4B,QAAQ,KAAK,EAC3C,CAAC,IACD,CAAC;CACL,IAAI,WAAW,QACb,OAAO,wBAAwB;CAGjC,IAAI,OACF,IAAI;EACF,qBAAqB;GACnB;GACA;GACA;GACc;GACA;GACd;EACF,CAAC;EACD,IAAI,OAAO,kCAAkC,CAAC,GAAG,mCAAmC,EAAE,uBAAuB,YAAY;GACvH,MAAM,+BAAwD,CAAC;GAC/D,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,oBAAoB,cAAc,CAAC,CAAC,GAC5E,IAAI,WAAW,KAAK,GAClB,6BAA6B,OAAO,0BAA0B,KAAK;GAGvE,8BAA8B,IAAI,qBAAqB,4BAA4B;EACrF;EACA,IAAI,CAAC,SAAS,cACZ,qBAAqB,gCAAgC;EAEvD,IAAI,CAAC,SAAS,cACZ,qBAAqB;EAEvB,KAAK,MAAM,QAAQ,YACjB,KAAK,OAAO;CAEhB,SACO,OAAO;EACZ,IAAI;GAEF,wBAAwB,QAAQ,EAAE,WAAW,KAAK,CAAC;EACrD,QACM,CAEN;EACA,MAAM;CACR;MAEG,IACH,CAAC,SAAS,gBACN,OAAe,cAChB,OAAQ,OAAe,eAAe,YACtC,OAAO,KAAM,OAAe,UAAU,CAAC,CAAC,SAAS,GACpD;EACA,qBAAqB,gCAAgC;EACrD,qBAAqB;CACvB;CAGA,6BAA6B,QAAQ,OAAO;CAE5C,OAAO;AACT;AAEA,SAAS,8BACP,QACA,iBACA,aACA;CACA,KAAK,MAAM,OAAO,QAAQ,QAAQ,eAAe,GAC/C,IAAI,CAAC,QAAQ,IAAI,aAAa,GAAG,GAE/B;MADmB,QAAQ,yBAAyB,iBAAiB,GACxD,CAAC,EAAE,cACd,QAAQ,eAAe,iBAAiB,GAAG;CAC7C;CAGJ,KAAK,MAAM,OAAO,QAAQ,QAAQ,WAAW,GAAG;EAC9C,MAAM,aAAa,QAAQ,yBAAyB,aAAa,GAAG;EACpE,IAAI,CAAC,YACH;EAEF,IAAI;GACF,QAAQ,eAAe,iBAAiB,KAAK,UAAU;EACzD,QACM;GACJ,IAAI;IACD,AAAC,gBAAwB,OAAQ,YAAoB;GACxD,QACM,CAEN;EACF;CACF;CACA,iBAAiB,gBAAgB,OAA8B,eAAe;CAC9E,MAAM,2BAA2B,8BAA8B,IAAI,WAAW;CAC9E,IAAI,0BACF,8BAA8B,IAAI,iBAAiB,wBAAwB;CAE7E,OAAO,SAAS;CAChB,OAAO,eAAe,QAAQ,yBAAyB;EACrD,OAAO;EACP,cAAc;EACd,YAAY;EACZ,UAAU;CACZ,CAAC;CACD,OAAO;AACT;AAEA,SAAS,2BACP,SACA,YACA,gBACA;CACA,MAAM,eAAe,QAAQ;CAC7B,MAAM,aAAa,QAAQ;CAC3B,MAAM,WAAgC,CAAC;CACvC,KAAK,MAAM,OAAO,OAAO,KAAK,cAAc,CAAC,CAAC,GAAG;EAC/C,IAAI,CAAC,OAAO,UAAU,eAAe,KAAK,cAAc,GAAG,GACzD;EAEF,MAAM,eAAe,aAAa;EAClC,IAAI,cAAc,OAAO,UAAU,eAAe,KAAK,YAAY,GAAG,KAAK,CAAC,MAAM,YAAY,KAAK,CAAC,WAAW,YAAY,GACzH;EAEF,IAAI,kBAAkB,OAAO,UAAU,eAAe,KAAK,gBAAgB,GAAG,GAAG;GAC/E,SAAS,OAAO,0BAA0B,eAAe,IAAI;GAC7D;EACF;EACA,SAAS,OAAO,0BAA0B,MAAM,YAAY,IAAI,aAAa,QAAQ,aAAa,IAAI;CACxG;CACA,OAAO;AACT;AAEA,SAAS,+BACP,QACA,SACA;CACA,MAAM,UAAU,OAAO;CACvB,MAAM,eAAe,SAAS;CAC9B,MAAM,aAAa,SAAS;CAC5B,MAAM,aAAa,SAAS,cAAe,OAAe;CAC1D,IAAI,CAAC,gBAAgB,OAAO,iBAAiB,YAAY,CAAC,cAAc,OAAO,eAAe,UAC5F;CAEF,MAAM,yBAA0B,SAAiB;CACjD,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,UAAU,GAAG;EACrD,IAAI,CAAC,OAAO,QAAQ,aAClB;EAEF,IAAI,OAAO,UAAU,eAAe,KAAK,cAAc,GAAG,GACxD,IAAI;GACF,MAAM,eAAe,aAAa;GAClC,MAAM,eAAe,0BAA0B,KAAK;GACpD,IAAI,cAAc,OAAO,UAAU,eAAe,KAAK,YAAY,GAAG,GAEpE;QAAI,CAAC,SAAS,qBAAsB,CAAC,MAAM,YAAY,KAAK,CAAC,WAAW,YAAY,GAClF;GACF;GAEF,IACE,CAAC,SAAS,qBACP,0BACA,OAAO,UAAU,eAAe,KAAK,wBAAwB,GAAG,KAChE,CAAC,iBAAiB,aAAa,MAAM,uBAAuB,MAAM,IAAI,EAAE,MAAM,IAAO,CAAC,GAEzF;GAEF,IACE,CAAC,SAAS,qBACP,0BACA,CAAC,OAAO,UAAU,eAAe,KAAK,wBAAwB,GAAG,GAEpE;GAEF,IAAI,MAAM,YAAY,GAAG;IACvB,aAAa,QAAQ;IACrB;GACF;GACA,IAAI,WAAW,YAAY,KAAK,gBAAgB,OAAO,iBAAiB,UAAU;IAChF,6BAA6B,cAAc,cAAc,SAAS,oBAAoB,IAAI;IAC1F;GACF;GACA,aAAa,OAAO;EACtB,QACM,CAEN;CAEJ;AACF;AAEA,SAAgB,sBACd,QACA,SACA;CACA,MAAM,UAAU,OAAO,QAAQ;CAC/B,+BAA+B,QAAQ,EACrC,mBAAmB,SAAS,oBAC9B,CAAC;CACD,SAAS,uBAAuB,IAAI;CACnC,AAAC,OAAe,QAAQ,gCAAgC;AAC3D;AAEA,SAAgB,4BAA4B,QAA8B,SAAkB;CAE1F,CADgB,OAAO,QAAQ,QACxB,EAAE,uBAAuB,OAAO;AACzC;;;;;AAMA,SAAgB,wBAAwB,QAA8B,SAAmC;CACvG,MAAM,UAAU,OAAO;CAEvB,MAAM,QAAQ,OAAO;CACrB,MAAMA,gBAAc,OAAO;CAE3B,iBAAiB;QACT;GACJ,IAAI,CAAC,SAAS,aAAa,WAAW,OAAO,eAAe,GAAG,8BAA8B;IAC3F,IAAIA,eAAa,QACf,cAAY,UAAU,aAAa,QAAQ,2BAA2B,CAAC;SAEpE;KACH,MAAM,gBAAgBC,YAAkB,IAAI;KAC5C,iBAAiB,OACT,cAAc,UAAU,aAAa,QAAQ,2BAA2B,CAAC,SACzE,cAAc,KAAK,CAC3B,CAAC;IACH;GACF;EACF;QACM,0BAA0B,aAAa,SAAS,MAAM;QACtD;GACJ,IAAI,MAAM,QAAQ,OAAO,kBAAkB,KAAK,OAAO,mBAAmB,SAAS,GACjF,yBAAyB,gBAAgB,wCAAwC,CAAC,CAAC,MAAM,MAAM;EAEnG;QACM;GAEJ,IAAI,CAAC,SAAS,aAAa,WAAW,OAAO,iBAC3C,aAAa,QAAQ,YAAY,CAAC,CAAC;EAEvC;QACM;GAEJ,IAAI,OAAO,iBACT,OAAO,kBAAkB;EAE7B;QACM;GACJ,IAAI,MAAM,QAAQ,KAAK,GACrB,KAAK,MAAM,QAAQ,OACjB,IAAI;IACF,KAAK;GACP,QACM,CAEN;EAGN;QACM;GACJ,OAAO,wBAAwB;EACjC;QACM;GACJ,eAAa,KAAK;EACpB;QACM;GACJ,OAAO,yBAAyB;EAClC;QACM,SAAS,QAAQ;QACjB;GAEJ,CADgB,SAAS,QAClB,EAAE,wBAAwB;EACnC;QACM;GACJ,OAAQ,OAAe;GACvB,OAAQ,OAAe;EACzB;QACM;GACJ,OAAO,OAAO;EAChB;QACM;GACJ,IAAI,2BAA2B,QAC7B,OAAQ,OAAe;EAE3B;CACF,CAAC;AACH;;;;;AAMA,SAAgB,uBACd,QACA,YACA,UACA,OACA,SACA;CACA,MAAM,kBAAkB,OAAO;CAC/B,MAAM,oBAAoB,kBAAkB,8BAA8B,IAAI,eAAe,IAAI;CACjG,MAAM,uBAAuB,kBACzB,2BAA2B,iBAAkB,OAAe,MAAM,SAAS,aAAa,IACxF;CACJ,wBAAwB,QAAQ,EAAE,WAAW,KAAK,CAAC;CACnD,MAAM,cAAc,qBAAqB,QAAQ,YAAY,UAAU,OAAO;EAC5E,cAAc;EACd,kBAAkB,SAAS;CAC7B,CAAC;CACD,MAAM,gBAAgB,yBAAyB,SAAS,gBACpD,2BAA2B,aAAa,QAAQ,eAAe,QAAQ,aAAa,IACpF;CACJ,IAAI,eAAe;EACjB,MAAM,aAAc,OAAe;EACnC,IAAI,cAAc,OAAO,eAAe,UACtC,OAAO,OAAO,YAAY,0BAA0B,aAAa,CAAC;EAEpE,+BAA+B,QAAQ;GACrC,mBAAmB;GACnB,YAAY;GACZ;EACF,CAAC;CACH;CACA,IAAI,CAAC,mBAAmB,oBAAoB,aAC1C,OAAO;CAET,OAAO,8BAA8B,QAAQ,iBAAiB,WAAW;AAC3E"}
1
+ {"version":3,"file":"runtimeInstance.mjs","names":["effectScope","createEffectScope"],"sources":["../../../../src/runtime/register/runtimeInstance.ts"],"sourcesContent":["import type { SetDataAdapterSettlement, SetDataAdapterSettler, SetDataPayload } from '../app/setData/commitTracker'\nimport type { PhysicalSetDataObserver } from '../app/setData/observation'\nimport type {\n ComponentPropsOptions,\n ComputedDefinitions,\n DefineAppOptions,\n DefineComponentOptions,\n InternalRuntimeState,\n MethodDefinitions,\n RuntimeApp,\n RuntimeInstance,\n SetDataSnapshotOptions,\n} from '../types'\nimport type { AdapterWithSetData } from './runtimeInstance/utils'\nimport type { WatchMap } from './watch'\nimport {\n WEAPP_VITE_STATEFUL_HMR_BRIDGE_KEY,\n WEVU_EFFECT_SCOPE_KEY,\n WEVU_EXPOSED_KEY,\n WEVU_HOOKS_KEY,\n WEVU_HOST_COMMIT_PROMISE_KEY,\n WEVU_ON_BEFORE_UNMOUNT_HOOK,\n WEVU_PAGE_SCROLL_HOOK_DEPTH_KEY,\n WEVU_PARENT_INSTANCE_KEY,\n WEVU_PROPS_DERIVED_KEYS_KEY,\n WEVU_PROVIDES_KEY,\n WEVU_PUBLIC_RUNTIME_KEY,\n WEVU_RUNTIME_APP_KEY,\n WEVU_SETUP_CONTEXT_INSTANCE_KEY,\n WEVU_SLOT_OWNER_ID_KEY,\n WEVU_WATCH_STOPS_KEY,\n} from '@weapp-core/constants'\nimport { effectScope as createEffectScope, isReactive, isRef } from '../../reactivity'\nimport { observeSetDataCompletion } from '../app/setData/commitTracker'\nimport { observePhysicalDispatch } from '../app/setData/observation'\nimport { applySnapshotUpdate, isDeepEqualValue } from '../app/setData/snapshot'\nimport {\n isSetDataHighFrequencyWarningRequested,\n requireRuntimeCapability,\n runtimeCapabilityRegistry,\n} from '../capabilities'\nimport { callHookList } from '../hooks'\nimport { isRuntimeLayoutComponentTarget } from '../layoutComponentMatcher'\nimport { getMiniProgramRuntimeGlobalObject } from '../platform'\nimport { runTeardownSteps } from '../teardown'\nimport { bridgeRuntimeMethodsToTarget } from './runtimeInstance/methodBridge'\nimport { releaseNativeDeclaration } from './runtimeInstance/nativeDeclaration'\nimport { attachRuntimeProvideParentContext } from './runtimeInstance/provideContext'\nimport {\n attachRuntimeSlots,\n createNoopWatchStopHandle,\n safeMarkNoSetData,\n} from './runtimeInstance/setupContext'\nimport { runRuntimeSetupPhase } from './runtimeInstance/setupPhase'\nimport { restoreReactiveSetupSnapshot } from './runtimeInstance/setupSnapshot'\nimport {\n attachNativeInstanceRef,\n attachRuntimeInstance,\n attachRuntimeRef,\n callNativeSetData,\n ensureRuntimeProps,\n resolveNativeSetData,\n} from './runtimeInstance/utils'\nimport { registerWatches } from './watch'\n\ntype ImportMetaWithEnv = ImportMeta & { env?: { PLATFORM?: string, PROD?: boolean } }\n\nconst initialReactiveSetupSnapshots = new WeakMap<object, Record<string, unknown>>()\n\nfunction cloneInitialSnapshotValue(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(cloneInitialSnapshotValue(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] = cloneInitialSnapshotValue(child, cache)\n }\n return next\n}\nfunction mergeBufferedSetDataPayload(\n buffered: SetDataPayload | undefined,\n incoming: SetDataPayload,\n): SetDataPayload {\n const merged = buffered ?? {}\n for (const [path, value] of Object.entries(incoming)) {\n let ancestorPath: string | undefined\n for (const candidate of Object.keys(merged)) {\n if (path.startsWith(`${candidate}.`)) {\n ancestorPath = candidate\n break\n }\n }\n if (ancestorPath) {\n const holder: Record<string, unknown> = { value: merged[ancestorPath] }\n applySnapshotUpdate(\n holder,\n `value.${path.slice(ancestorPath.length + 1)}`,\n value,\n 'set',\n { cloneValue: false, clonedParents: new WeakSet<object>() },\n )\n merged[ancestorPath] = holder.value\n continue\n }\n const descendantPrefix = `${path}.`\n for (const candidate of Object.keys(merged)) {\n if (candidate.startsWith(descendantPrefix)) {\n delete merged[candidate]\n }\n }\n merged[path] = value\n }\n return merged\n}\n\nfunction resolveInitialSnapshotFromNativeData(\n target: InternalRuntimeState,\n omitKeys?: string[],\n extraEntries?: Record<string, unknown>,\n) {\n const data = (target as any).data\n if ((!data || typeof data !== 'object') && (!extraEntries || !Object.keys(extraEntries).length)) {\n return undefined\n }\n const omitSet = Array.isArray(omitKeys) && omitKeys.length\n ? new Set(omitKeys)\n : undefined\n const snapshot: Record<string, any> = {}\n if (data && typeof data === 'object') {\n for (const [key, value] of Object.entries(data as Record<string, unknown>)) {\n if (omitSet?.has(key)) {\n continue\n }\n snapshot[key] = cloneInitialSnapshotValue(value)\n }\n }\n if (extraEntries) {\n for (const [key, value] of Object.entries(extraEntries)) {\n if (omitSet?.has(key)) {\n continue\n }\n snapshot[key] = cloneInitialSnapshotValue(value)\n }\n }\n return snapshot\n}\n\nfunction hasTemplateRuntimeBindings(runtimeApp: RuntimeApp<any, any, any>) {\n return Boolean((runtimeApp as any)?.__wevuHasTemplateRuntimeBindings)\n}\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_trackSetupReactiveKey?: (key: string) => void\n __wevu_cloneDispatchedSnapshot?: () => Record<string, any>\n}\n\ninterface BufferedSetDataSettlement {\n settle: SetDataAdapterSettler\n next: BufferedSetDataSettlement | undefined\n}\n\ninterface RuntimeMountOptions {\n deferSetData?: boolean\n snapshotOmitKeys?: string[]\n attached?: boolean\n layoutParent?: InternalRuntimeState\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?: RuntimeMountOptions,\n): RuntimeInstance<D, C, M> {\n if (target.__wevu) {\n // 经典 HMR 可能复用宿主页面实例并重新执行页面脚本。此时旧 runtime\n // 仍然存在,但它绑定的是上一轮模块创建的 runtimeApp;继续直接返回会\n // 让新脚本闭包更新一份未被旧 tracker 订阅的 setup 状态。通过统一刷新\n // 路径重建响应式绑定,同时保留宿主实例和已提交的数据快照。\n // 只在应用明确为生产构建时裁剪;未提供 Vite env 的消费者保留刷新兼容。\n if ((import.meta as ImportMetaWithEnv).env?.PROD !== true && target[WEVU_RUNTIME_APP_KEY] && target[WEVU_RUNTIME_APP_KEY] !== runtimeApp) {\n // eslint-disable-next-line ts/no-use-before-define -- refreshRuntimeInstance 统一处理旧实例快照与 facade 复用。\n return refreshRuntimeInstance(target, runtimeApp, watchMap, setup, {\n snapshotOmitKeys: options?.snapshotOmitKeys,\n attached: options?.attached,\n })\n }\n return target.__wevu as RuntimeInstance<D, C, M>\n }\n try {\n // eslint-disable-next-line ts/no-use-before-define -- 统一事务边界覆盖声明注册后、setup 前的挂载失败。\n return mountRuntimeInstanceWithContext(target, runtimeApp, watchMap, setup, options)\n }\n catch (error) {\n try {\n // eslint-disable-next-line ts/no-use-before-define -- 所有挂载失败共用 teardown,不能留下原生声明地址。\n teardownRuntimeInstance(target, { skipHooks: true })\n }\n catch {\n // 保留原始挂载异常,清理异常不能覆盖它。\n }\n throw error\n }\n}\n\nfunction mountRuntimeInstanceWithContext<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?: RuntimeMountOptions,\n) {\n const runtimeSetDataOptions = (\n runtimeApp as typeof runtimeApp & { __wevuSetDataOptions?: SetDataSnapshotOptions }\n ).__wevuSetDataOptions\n const hasScopedSlotBindings = hasTemplateRuntimeBindings(runtimeApp)\n const scopedSlotHooks = hasScopedSlotBindings\n ? requireRuntimeCapability('scopedSlots', 'mountRuntimeInstance(scoped-slot bindings)')\n : undefined\n const scopedSlotState = scopedSlotHooks?.prepareMount(target)\n const templateRefBindings = target.__wevuTemplateRefs\n if (Array.isArray(templateRefBindings) && templateRefBindings.length) {\n requireRuntimeCapability('templateRefs', 'mountRuntimeInstance(template refs)')\n }\n const highFrequencyWarningRequested = isSetDataHighFrequencyWarningRequested(\n runtimeSetDataOptions?.highFrequencyWarning,\n )\n const highFrequencyWarningHooks = highFrequencyWarningRequested\n ? requireRuntimeCapability('setDataHighFrequencyWarning', 'mountRuntimeInstance(setData.highFrequencyWarning)')\n : undefined\n attachRuntimeProvideParentContext(target, runtimeApp, options?.attached, options?.layoutParent)\n safeMarkNoSetData(target)\n const suspendWhenHidden = Boolean(runtimeSetDataOptions?.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 = highFrequencyWarningHooks?.createMonitor({\n option: runtimeSetDataOptions?.highFrequencyWarning,\n targetLabel,\n isInPageScrollHook: () => Number((target as any)[WEVU_PAGE_SCROLL_HOOK_DEPTH_KEY] ?? 0) > 0,\n })\n let visible = true\n let enabled = !options?.deferSetData\n let disposed = false\n let dispatchGeneration = 0\n let pendingPayload: SetDataPayload | undefined\n let pendingSettlementHead: BufferedSetDataSettlement | undefined\n let pendingSettlementTail: BufferedSetDataSettlement | undefined\n let pendingObservers: PhysicalSetDataObserver[] | undefined\n let pendingRawCallbacks: Array<() => void> = []\n const ownsHostCommit = !(WEVU_HOST_COMMIT_PROMISE_KEY in target)\n let pendingHostCommits = 0\n let hostCommitFailed = false\n let hostCommitCause: unknown\n let hostCommitPromise: Promise<void> | undefined\n let resolveHostCommit: (() => void) | undefined\n let rejectHostCommit: ((cause: unknown) => void) | undefined\n\n const resetHostCommitFailure = () => {\n if (!pendingHostCommits && !pendingPayload && !hostCommitPromise) {\n hostCommitFailed = false\n hostCommitCause = undefined\n }\n }\n const flushHostCommitWaiter = () => {\n if (pendingHostCommits || pendingPayload) {\n return\n }\n if (hostCommitFailed) {\n rejectHostCommit?.(hostCommitCause)\n }\n else {\n resolveHostCommit?.()\n }\n hostCommitPromise = undefined\n resolveHostCommit = undefined\n rejectHostCommit = undefined\n }\n const beginHostCommit = () => {\n if (ownsHostCommit) {\n pendingHostCommits += 1\n }\n }\n const finishHostCommit = (settlement: SetDataAdapterSettlement = 'committed', cause?: unknown) => {\n if (!ownsHostCommit || disposed) {\n return\n }\n if (settlement === 'failed' && !hostCommitFailed) {\n hostCommitFailed = true\n hostCommitCause = cause\n }\n pendingHostCommits -= 1\n flushHostCommitWaiter()\n }\n const failHostCommit = (cause: unknown) => finishHostCommit('failed', cause)\n if (ownsHostCommit) {\n Object.defineProperty(target, WEVU_HOST_COMMIT_PROMISE_KEY, {\n configurable: true,\n enumerable: false,\n get: () => {\n if (!pendingHostCommits && !pendingPayload) {\n return hostCommitFailed ? Promise.reject(hostCommitCause) : undefined\n }\n // 只有实例 $nextTick 消费宿主屏障时才创建 Promise。\n hostCommitPromise ??= new Promise<void>((resolve, reject) => {\n resolveHostCommit = resolve\n rejectHostCommit = reject\n })\n return hostCommitPromise\n },\n })\n }\n\n const refreshOwnerSnapshot = () => {\n if (scopedSlotState) {\n runtimeCapabilityRegistry.scopedSlots?.refresh(target, scopedSlotState)\n }\n }\n const completeSuccessfulSetData = () => {\n if (disposed) {\n return\n }\n const bindings = target.__wevuTemplateRefs\n if (!runtimeCapabilityRegistry.templateRefs && (!Array.isArray(bindings) || !bindings.length)) {\n if (ownsHostCommit) {\n finishHostCommit()\n }\n return\n }\n requireRuntimeCapability(\n 'templateRefs',\n 'mountRuntimeInstance(template ref completion)',\n ).schedule(\n target,\n ownsHostCommit ? finishHostCommit : undefined,\n target,\n ownsHostCommit ? failHostCommit : undefined,\n )\n }\n const syncNativeOwnerId = () => {\n if (scopedSlotState) {\n scopedSlotHooks?.syncNativeOwnerId(target, scopedSlotState)\n }\n }\n const appendPendingSettlement = (settle: SetDataAdapterSettler, observer?: PhysicalSetDataObserver) => {\n const record: BufferedSetDataSettlement = {\n settle,\n next: undefined,\n }\n if (pendingSettlementTail) {\n pendingSettlementTail.next = record\n }\n else {\n pendingSettlementHead = record\n }\n pendingSettlementTail = record\n if (observer) {\n (pendingObservers ??= []).push(observer)\n }\n }\n const settlePendingRecords = (\n first: BufferedSetDataSettlement | undefined,\n settlement: SetDataAdapterSettlement,\n cause?: unknown,\n ) => {\n let current = first\n let isFirst = true\n while (current) {\n const next = current.next\n current.next = undefined\n if (settlement === 'failed' && !isFirst) {\n current.settle('abandoned')\n }\n else {\n current.settle(settlement, cause)\n }\n current = next\n isFirst = false\n }\n }\n const dispatchPhysicalSetData = (\n payload: SetDataPayload,\n settle: SetDataAdapterSettler,\n observer?: PhysicalSetDataObserver,\n ) => {\n const generation = dispatchGeneration\n beginHostCommit()\n refreshOwnerSnapshot()\n observeSetDataCompletion({\n observer,\n invoke: (callback) => {\n const setData = resolveNativeSetData(target)\n if (!setData) {\n callback()\n return undefined\n }\n if (observer) {\n observePhysicalDispatch(observer, payload)\n }\n return callNativeSetData(target, setData, payload, callback)\n },\n completion: 'callback',\n settle: (settlement, cause) => {\n if (disposed || generation !== dispatchGeneration) {\n return\n }\n if (settlement !== 'committed') {\n finishHostCommit(settlement, cause)\n settle(settlement, cause)\n return\n }\n // 物理提交已成功,但实例屏障仍需等待原始回调;回调失败不能回滚快照账本。\n try {\n settle(settlement, cause)\n }\n catch (error) {\n finishHostCommit('failed', error)\n throw error\n }\n completeSuccessfulSetData()\n },\n })\n }\n const flushPendingSetData = () => {\n if (!pendingPayload) {\n return\n }\n const payload = pendingPayload\n const settlements = pendingSettlementHead\n const rawCallbacks = pendingRawCallbacks\n pendingPayload = undefined\n pendingSettlementHead = undefined\n pendingSettlementTail = undefined\n pendingRawCallbacks = []\n const observers = pendingObservers\n pendingObservers = undefined\n const observer: PhysicalSetDataObserver | undefined = observers && {\n dispatch: info => observers.forEach(item => item.dispatch(info)),\n returned: returnedAt => observers.forEach(item => item.returned(returnedAt)),\n complete: boundary => observers.forEach(item => item.complete(boundary)),\n }\n dispatchPhysicalSetData(payload, (settlement, cause) => {\n if (settlement === 'committed') {\n try {\n for (const callback of rawCallbacks) {\n callback()\n }\n }\n finally {\n settlePendingRecords(settlements, settlement, cause)\n }\n return\n }\n settlePendingRecords(settlements, settlement, cause)\n }, observer)\n }\n const abandonPendingSetData = () => {\n pendingObservers = undefined\n const settlements = pendingSettlementHead\n pendingPayload = undefined\n pendingSettlementHead = undefined\n pendingSettlementTail = undefined\n pendingRawCallbacks = []\n settlePendingRecords(settlements, 'abandoned')\n flushHostCommitWaiter()\n }\n const bufferPayload = (payload: SetDataPayload) => {\n resetHostCommitFailure()\n pendingPayload = mergeBufferedSetDataPayload(pendingPayload, payload)\n }\n\n const adapter: AdapterWithSetData = {\n setData(payload: Record<string, any>, callback?: () => void) {\n highFrequencyWarning?.()\n if (!enabled || (suspendWhenHidden && !visible)) {\n bufferPayload(payload)\n if (callback) {\n pendingRawCallbacks.push(callback)\n }\n refreshOwnerSnapshot()\n return undefined\n }\n\n refreshOwnerSnapshot()\n resetHostCommitFailure()\n beginHostCommit()\n const setData = resolveNativeSetData(target)\n if (!setData) {\n try {\n callback?.()\n }\n catch (cause) {\n finishHostCommit('failed', cause)\n throw cause\n }\n completeSuccessfulSetData()\n return undefined\n }\n\n let invoking = true\n let callbackCalled = false\n let returnIsAuthoritative = false\n let successHandled = false\n const handleFailure = (cause: unknown) => {\n if (successHandled) {\n return\n }\n successHandled = true\n finishHostCommit('failed', cause)\n }\n const handleSuccess = () => {\n if (successHandled) {\n return\n }\n successHandled = true\n completeSuccessfulSetData()\n }\n const nativeCallback = () => {\n try {\n callback?.()\n }\n catch (cause) {\n handleFailure(cause)\n throw cause\n }\n if (invoking) {\n callbackCalled = true\n return\n }\n if (!returnIsAuthoritative) {\n handleSuccess()\n }\n }\n let result: void | Promise<void>\n try {\n result = callNativeSetData(target, setData, payload, nativeCallback)\n }\n catch (cause) {\n handleFailure(cause)\n throw cause\n }\n invoking = false\n returnIsAuthoritative = Boolean(result && typeof result.then === 'function')\n if (result && typeof result.then === 'function') {\n return result.then(\n () => {\n handleSuccess()\n },\n (cause) => {\n handleFailure(cause)\n throw cause\n },\n )\n }\n if (callbackCalled) {\n handleSuccess()\n }\n return result\n },\n __wevu_dispatchSetData(payload, settle, observer) {\n highFrequencyWarning?.()\n if (disposed) {\n settle('abandoned')\n return\n }\n if (!enabled || (suspendWhenHidden && !visible)) {\n bufferPayload(payload)\n appendPendingSettlement(settle, observer)\n refreshOwnerSnapshot()\n return\n }\n resetHostCommitFailure()\n dispatchPhysicalSetData(payload, settle, observer)\n },\n __wevu_enableSetData(discardPending = false) {\n enabled = true\n if (discardPending) {\n abandonPendingSetData()\n return\n }\n flushPendingSetData()\n },\n __wevu_setVisibility(nextVisible: boolean) {\n visible = nextVisible\n if (visible && enabled) {\n flushPendingSetData()\n }\n },\n __wevu_disposeSetData() {\n if (disposed) {\n return\n }\n disposed = true\n dispatchGeneration += 1\n pendingPayload = undefined\n pendingSettlementHead = undefined\n pendingSettlementTail = undefined\n pendingRawCallbacks = []\n pendingHostCommits = 0\n hostCommitFailed = false\n hostCommitCause = undefined\n flushHostCommitWaiter()\n if (ownsHostCommit) {\n Reflect.deleteProperty(target, WEVU_HOST_COMMIT_PROMISE_KEY)\n }\n },\n }\n\n const baseMountAdapter = {\n ...adapter,\n }\n Object.defineProperty(baseMountAdapter, '__wevu_reportSetDataError', {\n configurable: true,\n enumerable: false,\n value: (error: Error) => {\n callHookList(target, 'onError', [error])\n },\n writable: false,\n })\n Object.defineProperty(baseMountAdapter, '__wevu_targetLabel', {\n configurable: true,\n enumerable: false,\n value: targetLabel,\n writable: false,\n })\n const targetProperties = (target as any).properties\n if (targetProperties && typeof targetProperties === 'object') {\n Object.defineProperty(baseMountAdapter, '__wevu_initialProps', {\n configurable: true,\n enumerable: false,\n value: targetProperties,\n writable: false,\n })\n }\n if (Array.isArray(options?.snapshotOmitKeys) && options.snapshotOmitKeys.length) {\n Object.defineProperty(baseMountAdapter, '__wevu_snapshotOmitKeys', {\n configurable: true,\n enumerable: false,\n value: options.snapshotOmitKeys,\n writable: false,\n })\n }\n const initialSnapshot = resolveInitialSnapshotFromNativeData(\n target,\n options?.snapshotOmitKeys,\n )\n if (initialSnapshot && Object.keys(initialSnapshot).length) {\n Object.defineProperty(baseMountAdapter, '__wevu_initialSnapshot', {\n configurable: true,\n enumerable: false,\n value: initialSnapshot,\n writable: false,\n })\n }\n if (scopedSlotState) {\n Object.defineProperty(baseMountAdapter, '__wevu_initialState', {\n configurable: true,\n enumerable: false,\n value: { [WEVU_SLOT_OWNER_ID_KEY]: scopedSlotState.ownerId },\n writable: false,\n })\n }\n const shouldDeferInitialSnapshot = Boolean(options?.deferSetData)\n || Boolean(setup)\n || Boolean(targetProperties && typeof targetProperties === 'object' && Object.keys(targetProperties).length > 0)\n if (shouldDeferInitialSnapshot) {\n Object.defineProperty(baseMountAdapter, '__wevu_deferInitialSnapshot', {\n configurable: true,\n enumerable: false,\n value: true,\n writable: false,\n })\n }\n const runtime = runtimeApp.mount(baseMountAdapter)\n attachRuntimeInstance(runtime as RuntimeInstance<any, any, any>, target)\n const runtimeProxy = runtime?.proxy ?? {}\n const runtimeState = runtime?.state ?? {}\n const runtimeSetupState = runtime?.setupState ?? Object.create(null)\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 setupState: runtimeSetupState,\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 Object.defineProperty(runtimeWithDefaults, '__wevu_initialRuntimeSnapshot', {\n configurable: true,\n enumerable: false,\n value: cloneInitialSnapshotValue(runtimeState),\n writable: false,\n })\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_trackSetupReactiveKey: (runtime as RuntimeInstanceWithSyncFlush<D, C, M>).__wevu_trackSetupReactiveKey,\n __wevu_cloneDispatchedSnapshot: (runtime as RuntimeInstanceWithSyncFlush<D, C, M>).__wevu_cloneDispatchedSnapshot,\n [WEVU_PROPS_DERIVED_KEYS_KEY]: (runtime as any)[WEVU_PROPS_DERIVED_KEYS_KEY],\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 const runtimeProps = ensureRuntimeProps(target, runtimeState as Record<string, any>)\n attachRuntimeSlots(runtimeState as Record<string, any>, runtimeProps)\n\n if (scopedSlotState) {\n scopedSlotHooks?.attachMount(target, runtimeWithDefaults, scopedSlotState, Boolean(options?.deferSetData))\n }\n syncNativeOwnerId()\n\n const watchStops = watchMap\n ? registerWatches(runtimeWithDefaults, watchMap, target, {\n deferMissingSourceBaseline: Boolean(setup),\n })\n : []\n if (watchStops.length) {\n target[WEVU_WATCH_STOPS_KEY] = watchStops\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 })\n if ((import.meta as ImportMetaWithEnv).env?.PROD !== true && typeof getMiniProgramRuntimeGlobalObject()?.[WEAPP_VITE_STATEFUL_HMR_BRIDGE_KEY]?.trackWevuComponent === 'function') {\n const initialReactiveSetupSnapshot: Record<string, unknown> = {}\n for (const [key, value] of Object.entries(runtimeWithDefaults.setupState ?? {})) {\n if (isReactive(value)) {\n initialReactiveSetupSnapshot[key] = cloneInitialSnapshotValue(value)\n }\n }\n initialReactiveSetupSnapshots.set(runtimeWithDefaults, initialReactiveSetupSnapshot)\n }\n if (!options?.deferSetData) {\n runtimeWithSyncFlush.__wevu_flushSetupSnapshotSync?.()\n }\n if (!options?.deferSetData) {\n refreshOwnerSnapshot()\n }\n for (const stop of watchStops) {\n stop.resume()\n }\n }\n else if (\n !options?.deferSetData\n && (target as any).properties\n && typeof (target as any).properties === 'object'\n && Object.keys((target as any).properties).length > 0\n ) {\n runtimeWithSyncFlush.__wevu_flushSetupSnapshotSync?.()\n refreshOwnerSnapshot()\n }\n\n // 将 runtime.methods 透传到原生实例,供小程序事件处理直接调用\n bridgeRuntimeMethodsToTarget(target, runtime)\n\n return runtime\n}\n\nfunction preserveRuntimeFacadeIdentity<D extends object, C extends ComputedDefinitions, M extends MethodDefinitions>(\n target: InternalRuntimeState,\n previousRuntime: RuntimeInstance<D, C, M>,\n nextRuntime: RuntimeInstance<D, C, M>,\n) {\n for (const key of Reflect.ownKeys(previousRuntime)) {\n if (!Reflect.has(nextRuntime, key)) {\n const descriptor = Reflect.getOwnPropertyDescriptor(previousRuntime, key)\n if (descriptor?.configurable) {\n Reflect.deleteProperty(previousRuntime, key)\n }\n }\n }\n for (const key of Reflect.ownKeys(nextRuntime)) {\n const descriptor = Reflect.getOwnPropertyDescriptor(nextRuntime, key)\n if (!descriptor) {\n continue\n }\n try {\n Reflect.defineProperty(previousRuntime, key, descriptor)\n }\n catch {\n try {\n ;(previousRuntime as any)[key] = (nextRuntime as any)[key]\n }\n catch {\n // 宿主包装对象仍持有旧 runtime 时,保留无法覆盖的只读字段。\n }\n }\n }\n attachRuntimeRef(previousRuntime.state as Record<string, any>, previousRuntime)\n const nextInitialSetupSnapshot = initialReactiveSetupSnapshots.get(nextRuntime)\n if (nextInitialSetupSnapshot) {\n initialReactiveSetupSnapshots.set(previousRuntime, nextInitialSetupSnapshot)\n }\n target.__wevu = previousRuntime\n Object.defineProperty(target, WEVU_PUBLIC_RUNTIME_KEY, {\n value: previousRuntime,\n configurable: true,\n enumerable: false,\n writable: false,\n })\n return previousRuntime\n}\n\nfunction createRuntimeStateSnapshot(\n runtime: RuntimeInstance<any, any, any>,\n nativeData: Record<string, any> | undefined,\n preferredState?: Record<string, any>,\n) {\n const runtimeState = runtime.state as Record<string, any>\n const setupState = runtime.setupState as Record<string, any> | undefined\n const snapshot: Record<string, any> = {}\n for (const key of Object.keys(nativeData ?? {})) {\n if (!Object.prototype.hasOwnProperty.call(runtimeState, key)) {\n continue\n }\n const setupBinding = setupState?.[key]\n if (setupState && Object.prototype.hasOwnProperty.call(setupState, key) && !isRef(setupBinding) && !isReactive(setupBinding)) {\n continue\n }\n if (preferredState && Object.prototype.hasOwnProperty.call(preferredState, key)) {\n snapshot[key] = cloneInitialSnapshotValue(preferredState[key])\n continue\n }\n snapshot[key] = cloneInitialSnapshotValue(isRef(setupBinding) ? setupBinding.value : runtimeState[key])\n }\n return snapshot\n}\n\nfunction syncRuntimeStateFromNativeData(\n target: InternalRuntimeState,\n options?: { includeSetupState?: boolean, nativeData?: Record<string, any>, initialSetupState?: Record<string, unknown> },\n) {\n const runtime = target.__wevu\n const runtimeState = runtime?.state as Record<string, any> | undefined\n const setupState = runtime?.setupState as Record<string, any> | undefined\n const nativeData = options?.nativeData ?? (target as any).data as Record<string, any> | undefined\n if (!runtimeState || typeof runtimeState !== 'object' || !nativeData || typeof nativeData !== 'object') {\n return\n }\n const initialRuntimeSnapshot = (runtime as any)?.__wevu_initialRuntimeSnapshot as Record<string, any> | undefined\n for (const [key, value] of Object.entries(nativeData)) {\n if (!key || key === 'undefined') {\n continue\n }\n if (Object.prototype.hasOwnProperty.call(runtimeState, key)) {\n try {\n const setupBinding = setupState?.[key]\n const runtimeValue = cloneInitialSnapshotValue(value)\n if (setupState && Object.prototype.hasOwnProperty.call(setupState, key)) {\n // 普通 setup 值来自当前代码;仅 ref/reactive 绑定承接宿主状态。\n if (!options?.includeSetupState || (!isRef(setupBinding) && !isReactive(setupBinding))) {\n continue\n }\n }\n if (\n !options?.includeSetupState\n && initialRuntimeSnapshot\n && Object.prototype.hasOwnProperty.call(initialRuntimeSnapshot, key)\n && !isDeepEqualValue(runtimeState[key], initialRuntimeSnapshot[key], 20, { keys: 10_000 })\n ) {\n continue\n }\n if (\n !options?.includeSetupState\n && initialRuntimeSnapshot\n && !Object.prototype.hasOwnProperty.call(initialRuntimeSnapshot, key)\n ) {\n continue\n }\n if (isRef(setupBinding)) {\n setupBinding.value = runtimeValue\n continue\n }\n if (isReactive(setupBinding) && runtimeValue && typeof runtimeValue === 'object') {\n restoreReactiveSetupSnapshot(setupBinding, runtimeValue, options?.initialSetupState?.[key])\n continue\n }\n runtimeState[key] = runtimeValue\n }\n catch {\n // DevTools 热更新期间可能带入响应式 state 拒绝写入的临时 data key,跳过即可。\n }\n }\n }\n}\n\nexport function enableDeferredSetData(\n target: InternalRuntimeState,\n options?: { rehydrateSetupState?: boolean },\n) {\n const adapter = target.__wevu?.adapter as AdapterWithSetData | undefined\n syncRuntimeStateFromNativeData(target, {\n includeSetupState: options?.rehydrateSetupState,\n })\n adapter?.__wevu_enableSetData?.(true)\n ;(target as any).__wevu?.__wevu_flushSetupSnapshotSync?.()\n}\n\nexport function setRuntimeSetDataVisibility(target: InternalRuntimeState, visible: boolean) {\n const adapter = target.__wevu?.adapter as AdapterWithSetData | undefined\n adapter?.__wevu_setVisibility?.(visible)\n}\n\n/**\n * 卸载运行时实例(框架内部注册流程使用)。\n * @internal\n */\nexport function teardownRuntimeInstance(target: InternalRuntimeState, options?: {\n skipHooks?: boolean\n preserveNativeDeclarationChildren?: boolean\n}) {\n const runtime = target.__wevu\n\n const stops = target[WEVU_WATCH_STOPS_KEY]\n const effectScope = target[WEVU_EFFECT_SCOPE_KEY]\n\n runTeardownSteps([\n () => {\n if (!options?.skipHooks && runtime && target[WEVU_HOOKS_KEY]?.[WEVU_ON_BEFORE_UNMOUNT_HOOK]) {\n if (effectScope?.active) {\n effectScope.run(() => callHookList(target, WEVU_ON_BEFORE_UNMOUNT_HOOK))\n }\n else {\n const teardownScope = createEffectScope(true)\n runTeardownSteps([\n () => teardownScope.run(() => callHookList(target, WEVU_ON_BEFORE_UNMOUNT_HOOK)),\n () => teardownScope.stop(),\n ])\n }\n }\n },\n ...((!(import.meta as ImportMetaWithEnv).env?.PLATFORM || (import.meta as ImportMetaWithEnv).env?.PLATFORM === 'weapp')\n ? [() => releaseNativeDeclaration(target, options?.preserveNativeDeclarationChildren)]\n : []),\n () => runtimeCapabilityRegistry.scopedSlots?.teardown(target),\n () => {\n if (Array.isArray(target.__wevuTemplateRefs) && target.__wevuTemplateRefs.length > 0) {\n requireRuntimeCapability('templateRefs', 'teardownRuntimeInstance(template refs)').clear(target)\n }\n },\n () => {\n // 触发卸载钩子(仅在 teardown 首次执行时触发)\n if (!options?.skipHooks && runtime && target[WEVU_HOOKS_KEY]) {\n callHookList(target, 'onUnload', [])\n }\n },\n () => {\n // 清理注册的生命周期钩子\n if (target[WEVU_HOOKS_KEY]) {\n target[WEVU_HOOKS_KEY] = undefined\n }\n },\n () => {\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 },\n () => {\n target[WEVU_WATCH_STOPS_KEY] = undefined\n },\n () => {\n effectScope?.stop()\n },\n () => {\n target[WEVU_EFFECT_SCOPE_KEY] = undefined\n },\n () => runtime?.unmount(),\n () => {\n const adapter = runtime?.adapter as AdapterWithSetData | undefined\n adapter?.__wevu_disposeSetData?.()\n },\n () => {\n delete (target as any)[WEVU_SETUP_CONTEXT_INSTANCE_KEY]\n delete (target as any)[WEVU_EXPOSED_KEY]\n },\n () => {\n delete target.__wevu\n },\n () => {\n if (WEVU_PUBLIC_RUNTIME_KEY in target) {\n delete (target as any)[WEVU_PUBLIC_RUNTIME_KEY]\n }\n },\n () => {\n // 只解除宿主引用,不清空 provides 或撤销用户已持有的注入对象。\n delete target[WEVU_PARENT_INSTANCE_KEY]\n },\n () => {\n delete target[WEVU_PROVIDES_KEY]\n },\n () => {\n delete target[WEVU_RUNTIME_APP_KEY]\n },\n ])\n}\n\n/**\n * 重建运行时实例,同时保持宿主包装对象持有的 runtime facade 身份稳定。\n * @internal\n */\nexport function refreshRuntimeInstance<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?: { snapshotOmitKeys?: string[], stateSnapshot?: Record<string, any>, attached?: boolean },\n): RuntimeInstance<D, C, M> {\n const previousRuntime = target.__wevu as RuntimeInstance<D, C, M> | undefined\n const initialSetupState = previousRuntime ? initialReactiveSetupSnapshots.get(previousRuntime) : undefined\n const previousRuntimeState = previousRuntime\n ? createRuntimeStateSnapshot(previousRuntime, (target as any).data, options?.stateSnapshot)\n : undefined\n // 页面上方的 layout 由独立挂载插入;HMR 仅在本次重建期间保留仍存活的 layout。\n const parent = target[WEVU_PARENT_INSTANCE_KEY]\n const layoutParent = parent && isRuntimeLayoutComponentTarget(parent) ? parent : undefined\n teardownRuntimeInstance(target, { skipHooks: true, preserveNativeDeclarationChildren: true })\n const nextRuntime = mountRuntimeInstance(target, runtimeApp, watchMap, setup, {\n deferSetData: true,\n snapshotOmitKeys: options?.snapshotOmitKeys,\n attached: options?.attached,\n layoutParent,\n })\n const stateSnapshot = previousRuntimeState ?? (options?.stateSnapshot\n ? createRuntimeStateSnapshot(nextRuntime, options.stateSnapshot, options.stateSnapshot)\n : undefined)\n if (stateSnapshot) {\n const nativeData = (target as any).data\n if (nativeData && typeof nativeData === 'object') {\n Object.assign(nativeData, cloneInitialSnapshotValue(stateSnapshot))\n }\n syncRuntimeStateFromNativeData(target, {\n includeSetupState: true,\n nativeData: stateSnapshot,\n initialSetupState,\n })\n }\n if (!previousRuntime || previousRuntime === nextRuntime) {\n return nextRuntime\n }\n return preserveRuntimeFacadeIdentity(target, previousRuntime, nextRuntime)\n}\n"],"mappings":"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"}
package/dist/fetch.mjs CHANGED
@@ -1 +1 @@
1
- import{fetch as e}from"@wevu/web-apis/fetch";export{e as fetch};
1
+ export{fetch}from"@wevu/web-apis/fetch";
@@ -1 +1 @@
1
- import{normalizeClass as e,normalizeStyle as t,resolvePropValue as n}from"./runtime/template.mjs";export{e as normalizeClass,t as normalizeStyle,n as resolvePropValue};
1
+ export{normalizeClass,normalizeStyle,resolvePropValue}from"./runtime/template.mjs";
package/dist/package.mjs CHANGED
@@ -1 +1 @@
1
- var e=`7.3.0`;export{e as version};
1
+ var e=`7.5.0`;export{e as version};
@@ -1 +1 @@
1
- import{queueJob as e}from"../scheduler.mjs";import t from"../_virtual/_@oxc-project_runtime@0.151.0/helpers/esm/defineProperty.mjs";const n=/* @__PURE__ */ new WeakMap;let r=null;const i=[];let a=!0,o,s=0,c=!1;const l=/* @__PURE__ */ new Set,u=/* @__PURE__ */ new Set;function d(e){if(e.active){if(e.scheduler){let t=o;o=e._scope;try{e.scheduler()}finally{o=t}return}e()}}function f(e){if(s>0||c){u.add(e);return}u.delete(e),e()}function p(){s++}function m(e){let t=e.values().next();if(!t.done)return e.delete(t.value),t.value}function h(){let e,t=!1;c=!0;try{for(;l.size;){let n=m(l);if(n)try{d(n)}catch(n){t||(e=n,t=!0)}}}finally{c=!1}for(;u.size;){let n=u.values().next().value;u.delete(n);try{n()}catch(n){t||(e=n,t=!0)}}if(t)throw e}function g(){s!==0&&(s--,s===0&&!c&&h())}function _(e){p();try{return e()}finally{g()}}function v(e){let{deps:t}=e;for(let n=0;n<t.length;n++)t[n].delete(e);t.length=0}function y(e){e.active&&(e.active=!1,v(e),e.onStop?.())}var b=class{constructor(e=!1){if(this.detached=e,t(this,`active`,!0),t(this,`effects`,[]),t(this,`cleanups`,[]),t(this,`parent`,void 0),t(this,`scopes`,void 0),!e&&o){var n;if(!o.active){this.active=!1;return}this.parent=o,((n=o).scopes||(n.scopes=[])).push(this)}}run(e){if(!this.active)return;let t=o;o=this;try{return e()}finally{o=t}}stop(){if(!this.active)return;this.active=!1;let e=o;o=this;let t,n=!1,r=e=>{n||(t=e,n=!0)};try{let e=this.effects.splice(0);for(let t of e)try{y(t)}catch(e){r(e)}let t=this.cleanups.splice(0);for(let e of t)try{e()}catch(e){r(e)}let n=this.scopes;if(this.scopes=void 0,n){for(let e of n)try{e.stop()}catch(e){r(e)}n.length=0}}finally{if(this.parent?.scopes){let e=this.parent.scopes.indexOf(this);e>=0&&this.parent.scopes.splice(e,1)}this.parent=void 0,o=e}if(n)throw t}};function x(e=!1){return new b(e)}function S(){return o}function C(e){o?.active&&o.cleanups.push(e)}function w(e){let t=a;a=!1;try{return e()}finally{a=t}}function T(e){if(o){if(o.active){o.effects.push(e);return}y(e)}}function E(e,t={}){let n=function(){if(!n.active||n._running)return e();v(n);let t=o;o=n._scope;let s=a;try{return a=!0,n._running=!0,i.push(n),r=n,e()}finally{i.pop(),r=i[i.length-1]??null,n._running=!1,o=t,a=s}};return n.deps=[],n.scheduler=t.scheduler,n.onStop=t.onStop,n.active=!0,n._running=!1,n._fn=e,n._scope=o,n}function D(e,t,n){let r=E(e,t);return r._computed=n,T(r),t.lazy||r(),r}function O(e,t={}){return D(e,t,!1)}function k(e,t={}){return D(e,t,!0)}function A(e,t){if(!a||!r)return;let i=n.get(e);i||(i=/* @__PURE__ */ new Map,n.set(e,i));let o=i.get(t);o||(o=/* @__PURE__ */ new Set,i.set(t,o)),o.has(r)||(o.add(r),r.deps.push(o))}function j(e){if(!e._running){if(e._computed){d(e);return}if(s>0||c){l.add(e);return}d(e)}}function M(e,t){let i=n.get(e);if(!i)return;let a=i.get(t);if(!a)return;let o=/* @__PURE__ */ new Set;a.forEach(e=>{e!==r&&o.add(e)}),o.forEach(j)}function N(e){a&&r&&(e.has(r)||(e.add(r),r.deps.push(e)))}function P(e){new Set(e).forEach(j)}export{_ as batch,k as createComputedEffect,E as createReactiveEffect,O as effect,x as effectScope,g as endBatch,S as getCurrentScope,C as onScopeDispose,f as queueBatchCallback,e as queueJob,w as runWithoutTracking,p as startBatch,y as stop,A as track,N as trackEffects,M as trigger,P as triggerEffects};
1
+ import{queueJob as e}from"../scheduler.mjs";import t from"../_virtual/_@oxc-project_runtime@0.153.0/helpers/esm/defineProperty.mjs";const n=/* @__PURE__ */ new WeakMap;let r=null;const i=[];let a=!0,o,s=0,c=!1;const l=/* @__PURE__ */ new Set,u=/* @__PURE__ */ new Set;function d(e){if(e.active){if(e.scheduler){let t=o;o=e._scope;try{e.scheduler()}finally{o=t}}else e()}}function f(e){s>0||c?u.add(e):(u.delete(e),e())}function p(){s++}function m(e){let t=e.values().next();if(!t.done)return e.delete(t.value),t.value}function h(){let e,t=!1;c=!0;try{for(;l.size;){let n=m(l);if(n)try{d(n)}catch(n){t||(e=n,t=!0)}}}finally{c=!1}for(;u.size;){let n=u.values().next().value;u.delete(n);try{n()}catch(n){t||(e=n,t=!0)}}if(t)throw e}function g(){s!==0&&(s--,s===0&&!c&&h())}function _(e){p();try{return e()}finally{g()}}function v(e){let{deps:t}=e;for(let n=0;n<t.length;n++)t[n].delete(e);t.length=0}function y(e){e.active&&(e.active=!1,v(e),e.onStop?.())}var b=class{constructor(e=!1){if(this.detached=e,t(this,`active`,!0),t(this,`effects`,[]),t(this,`cleanups`,[]),t(this,`parent`,void 0),t(this,`scopes`,void 0),!e&&o){var n;if(!o.active){this.active=!1;return}this.parent=o,((n=o).scopes||(n.scopes=[])).push(this)}}run(e){if(!this.active)return;let t=o;o=this;try{return e()}finally{o=t}}stop(){if(!this.active)return;this.active=!1;let e=o;o=this;let t,n=!1,r=e=>{n||(t=e,n=!0)};try{let e=this.effects.splice(0);for(let t of e)try{y(t)}catch(e){r(e)}let t=this.cleanups.splice(0);for(let e of t)try{e()}catch(e){r(e)}let n=this.scopes;if(this.scopes=void 0,n){for(let e of n)try{e.stop()}catch(e){r(e)}n.length=0}}finally{if(this.parent?.scopes){let e=this.parent.scopes.indexOf(this);e>=0&&this.parent.scopes.splice(e,1)}this.parent=void 0,o=e}if(n)throw t}};function x(e=!1){return new b(e)}function S(){return o}function C(e){o?.active&&o.cleanups.push(e)}function w(e){let t=a;a=!1;try{return e()}finally{a=t}}function T(e){o&&(o.active?o.effects.push(e):y(e))}function E(e,t={}){let n=function(){if(!n.active||n._running)return e();v(n);let t=o;o=n._scope;let s=a;try{return a=!0,n._running=!0,i.push(n),r=n,e()}finally{i.pop(),r=i[i.length-1]??null,n._running=!1,o=t,a=s}};return n.deps=[],n.scheduler=t.scheduler,n.onStop=t.onStop,n.active=!0,n._running=!1,n._fn=e,n._scope=o,n}function D(e,t,n){let r=E(e,t);return r._computed=n,T(r),t.lazy||r(),r}function O(e,t={}){return D(e,t,!1)}function k(e,t={}){return D(e,t,!0)}function A(e,t){if(!a||!r)return;let i=n.get(e);i||(i=/* @__PURE__ */ new Map,n.set(e,i));let o=i.get(t);o||(o=/* @__PURE__ */ new Set,i.set(t,o)),o.has(r)||(o.add(r),r.deps.push(o))}function j(e){e._running||(e._computed?d(e):s>0||c?l.add(e):d(e))}function M(e,t){let i=n.get(e);if(!i)return;let a=i.get(t);if(!a)return;let o=/* @__PURE__ */ new Set;a.forEach(e=>{e!==r&&o.add(e)}),o.forEach(j)}function N(e){a&&r&&(e.has(r)||(e.add(r),r.deps.push(e)))}function P(e){new Set(e).forEach(j)}export{_ as batch,k as createComputedEffect,E as createReactiveEffect,O as effect,x as effectScope,g as endBatch,S as getCurrentScope,C as onScopeDispose,f as queueBatchCallback,e as queueJob,w as runWithoutTracking,p as startBatch,y as stop,A as track,N as trackEffects,M as trigger,P as triggerEffects};
@@ -1 +1 @@
1
- import{track as e}from"../core.mjs";import{adoptReactiveRoot as t,indexPatchNode as n,rawMultiParentSet as r,rawParentMap as i,rawParentsMap as a,rawPathMap as o,rawRootMap as s,rawVersionMap as c,recordParentLink as l,rootPatchNodesMap as u}from"./patchState.mjs";import{VERSION_KEY as d,isObject as f,toRaw as p}from"./shared.mjs";function m(e,i){let a=p(e);o.set(a,``),n(a,a);let s=i?.shouldIncludeTopKey,c=typeof i?.maxDepth==`number`?Math.max(0,Math.floor(i.maxDepth)):1/0,u=typeof i?.maxKeys==`number`?Math.max(0,Math.floor(i.maxKeys)):1/0,d=/* @__PURE__ */ new WeakSet,m=[{current:a,path:``,depth:0}],h=0;for(;m.length;){let e=m.pop();if(d.has(e.current)||(d.add(e.current),o.set(e.current,e.path),n(a,e.current),h+=1,h>=u)||e.depth>=c||Array.isArray(e.current))continue;let i=Object.entries(e.current);for(let[c,u]of i){if(e.path===``&&s&&!s(c)||!f(u)||u.__r_skip)continue;let i=p(u);if(t(i,e.current),l(i,e.current,c),!r.has(i)){let t=e.path?`${e.path}.${c}`:c;o.set(i,t)}n(a,i),m.push({current:i,path:e.path?`${e.path}.${c}`:c,depth:e.depth+1})}}}function h(e){let t=p(e),n=u.get(t);if(!n){o.delete(t);return}for(let e of n)i.delete(e),a.delete(e),o.delete(e),r.delete(e),s.delete(e),c.delete(e);u.delete(t)}function g(t){let n=p(t);e(n,d)}export{h as clearPatchIndices,m as prelinkReactiveTree,g as touchReactive};
1
+ import{track as e}from"../core.mjs";import{adoptReactiveRoot as t,indexPatchNode as n,rawMultiParentSet as r,rawParentMap as i,rawParentsMap as a,rawPathMap as o,rawRootMap as s,rawVersionMap as c,recordParentLink as l,rootPatchNodesMap as u}from"./patchState.mjs";import{VERSION_KEY as d,isObject as f,toRaw as p}from"./shared.mjs";function m(e,i){let a=p(e);o.set(a,``),n(a,a);let s=i?.shouldIncludeTopKey,c=typeof i?.maxDepth==`number`?Math.max(0,Math.floor(i.maxDepth)):1/0,u=typeof i?.maxKeys==`number`?Math.max(0,Math.floor(i.maxKeys)):1/0,d=/* @__PURE__ */ new WeakSet,m=[{current:a,path:``,depth:0}],h=0;for(;m.length;){let e=m.pop();if(d.has(e.current)||(d.add(e.current),o.set(e.current,e.path),n(a,e.current),h+=1,h>=u)||e.depth>=c||Array.isArray(e.current))continue;let i=Object.entries(e.current);for(let[c,u]of i){if(e.path===``&&s&&!s(c)||!f(u)||u.__r_skip)continue;let i=p(u);if(t(i,e.current),l(i,e.current,c),!r.has(i)){let t=e.path?`${e.path}.${c}`:c;o.set(i,t)}n(a,i),m.push({current:i,path:e.path?`${e.path}.${c}`:c,depth:e.depth+1})}}}function h(e){let t=p(e),n=u.get(t);if(!n)o.delete(t);else{for(let e of n)i.delete(e),a.delete(e),o.delete(e),r.delete(e),s.delete(e),c.delete(e);u.delete(t)}}function g(t){let n=p(t);e(n,d)}export{h as clearPatchIndices,m as prelinkReactiveTree,g as touchReactive};
@@ -1 +1 @@
1
- import{mutationRecorders as e}from"./mutation.mjs";const t=/* @__PURE__ */ new WeakMap,n=/* @__PURE__ */ new WeakMap,r=/* @__PURE__ */ new WeakMap,i=/* @__PURE__ */ new WeakMap,a=/* @__PURE__ */ new WeakSet,o=/* @__PURE__ */ new WeakMap,s=/* @__PURE__ */ new WeakMap;function c(e){let t=s.get(e);return t||(t=/* @__PURE__ */ new Set,s.set(e,t)),t}function l(e,t){c(e).add(t)}function u(e){n.set(e,(n.get(e)??0)+1)}function d(e){return n.get(e)??0}function f(e,n){let r=t.get(n)??n,i=t.get(e);(!i||i===e||i===n)&&t.set(e,r)}function p(e){let t=/* @__PURE__ */ new Set,n=[e];for(let e=0;e<2e3&&n.length;e++){let e=n.pop(),r=i.get(e);if(r)for(let e of r.keys())t.has(e)||(t.add(e),u(e),n.push(e))}}function m(e){let t=i.get(e);if(!t){a.delete(e),r.delete(e);return}let n,o,s=0;for(let[e,r]of t){for(let t of r){if(s+=1,s>1)break;n=e,o=t}if(s>1)break}if(s===1&&n&&o){a.delete(e),r.set(e,{parent:n,key:o});return}a.add(e),r.delete(e)}function h(n,o,s){if(typeof s!=`string`){a.add(n),r.delete(n);return}if(e.size){let e=t.get(o)??o;l(e,o),l(e,n)}let c=i.get(n);c||(c=/* @__PURE__ */ new Map,i.set(n,c));let u=c.get(o);u||(u=/* @__PURE__ */ new Set,c.set(o,u)),u.add(s),m(n)}function g(e,t,n){let r=i.get(e);if(!r)return;let a=r.get(t);a&&(a.delete(n),a.size||r.delete(t),r.size||i.delete(e),m(e))}function _(e,t){if(t===e)return[];if(a.has(t))return;let n=[],i=t;for(let t=0;t<2e3;t++){if(i===e)return n.reverse();if(a.has(i))return;let t=r.get(i);if(!t||typeof t.key!=`string`)return;n.push(t.key),i=t.parent}}export{f as adoptReactiveRoot,p as bumpAncestorVersions,u as bumpRawVersion,d as getRawVersion,l as indexPatchNode,a as rawMultiParentSet,r as rawParentMap,i as rawParentsMap,o as rawPathMap,t as rawRootMap,n as rawVersionMap,h as recordParentLink,g as removeParentLink,_ as resolvePathToTarget,s as rootPatchNodesMap};
1
+ import{mutationRecorders as e}from"./mutation.mjs";const t=/* @__PURE__ */ new WeakMap,n=/* @__PURE__ */ new WeakMap,r=/* @__PURE__ */ new WeakMap,i=/* @__PURE__ */ new WeakMap,a=/* @__PURE__ */ new WeakSet,o=/* @__PURE__ */ new WeakMap,s=/* @__PURE__ */ new WeakMap;function c(e){let t=s.get(e);return t||(t=/* @__PURE__ */ new Set,s.set(e,t)),t}function l(e,t){c(e).add(t)}function u(e){n.set(e,(n.get(e)??0)+1)}function d(e){return n.get(e)??0}function f(e,n){let r=t.get(n)??n,i=t.get(e);(!i||i===e||i===n)&&t.set(e,r)}function p(e){let t=/* @__PURE__ */ new Set,n=[e];for(let e=0;e<2e3&&n.length;e++){let e=n.pop(),r=i.get(e);if(r)for(let e of r.keys())t.has(e)||(t.add(e),u(e),n.push(e))}}function m(e){let t=i.get(e);if(!t){a.delete(e),r.delete(e);return}let n,o,s=0;for(let[e,r]of t){for(let t of r){if(s+=1,s>1)break;n=e,o=t}if(s>1)break}s===1&&n&&o?(a.delete(e),r.set(e,{parent:n,key:o})):(a.add(e),r.delete(e))}function h(n,o,s){if(typeof s!=`string`){a.add(n),r.delete(n);return}if(e.size){let e=t.get(o)??o;l(e,o),l(e,n)}let c=i.get(n);c||(c=/* @__PURE__ */ new Map,i.set(n,c));let u=c.get(o);u||(u=/* @__PURE__ */ new Set,c.set(o,u)),u.add(s),m(n)}function g(e,t,n){let r=i.get(e);if(!r)return;let a=r.get(t);a&&(a.delete(n),a.size||r.delete(t),r.size||i.delete(e),m(e))}function _(e,t){if(t===e)return[];if(a.has(t))return;let n=[],i=t;for(let t=0;t<2e3;t++){if(i===e)return n.reverse();if(a.has(i))return;let t=r.get(i);if(!t||typeof t.key!=`string`)return;n.push(t.key),i=t.parent}}export{f as adoptReactiveRoot,p as bumpAncestorVersions,u as bumpRawVersion,d as getRawVersion,l as indexPatchNode,a as rawMultiParentSet,r as rawParentMap,i as rawParentsMap,o as rawPathMap,t as rawRootMap,n as rawVersionMap,h as recordParentLink,g as removeParentLink,_ as resolvePathToTarget,s as rootPatchNodesMap};
@@ -1 +1 @@
1
- import e from"../_virtual/_@oxc-project_runtime@0.151.0/helpers/esm/defineProperty.mjs";import{trackEffects as t,triggerEffects as n}from"./core.mjs";import{convertToReactive as r,markRaw as i}from"./reactive.mjs";const a=`__v_isRef`;function o(e){try{Object.defineProperty(e,a,{value:!0,configurable:!0})}catch{e[a]=!0}return e}function s(e){return!!(e&&typeof e==`object`&&e.__v_isRef===!0)}var c=class{constructor(t){e(this,`_value`,void 0),e(this,`_rawValue`,void 0),e(this,`dep`,void 0),o(this),this._rawValue=t,this._value=r(t)}get value(){return this.dep||(this.dep=/* @__PURE__ */ new Set),t(this.dep),this._value}set value(e){Object.is(e,this._rawValue)||(this._rawValue=e,this._value=r(e),this.dep&&n(this.dep))}};function l(e){return s(e)?e:i(new c(e))}function u(e){return s(e)?e.value:e}function d(e){return typeof e==`function`?e():u(e)}var f=class{constructor(r,i){e(this,`_getValue`,void 0),e(this,`_setValue`,void 0),e(this,`dep`,void 0),o(this);let a=i,s=()=>{this.dep||(this.dep=/* @__PURE__ */ new Set),t(this.dep)},c=()=>{this.dep&&n(this.dep)},l=e=>e===void 0&&a!==void 0?a:e;if(typeof r==`function`){let e=r(s,c);this._getValue=()=>l(e.get()),this._setValue=t=>e.set(t);return}let u=r;this._getValue=()=>(s(),l(u.get())),this._setValue=e=>{u.set(e),c()}}get value(){return this._getValue()}set value(e){this._setValue(e)}};function p(e,t){return i(new f(e,t))}export{a as RefFlag,p as customRef,s as isRef,o as markAsRef,l as ref,d as toValue,u as unref};
1
+ import e from"../_virtual/_@oxc-project_runtime@0.153.0/helpers/esm/defineProperty.mjs";import{trackEffects as t,triggerEffects as n}from"./core.mjs";import{convertToReactive as r,markRaw as i}from"./reactive.mjs";const a=`__v_isRef`;function o(e){try{Object.defineProperty(e,a,{value:!0,configurable:!0})}catch{e[a]=!0}return e}function s(e){return!!(e&&typeof e==`object`&&e.__v_isRef===!0)}var c=class{constructor(t){e(this,`_value`,void 0),e(this,`_rawValue`,void 0),e(this,`dep`,void 0),o(this),this._rawValue=t,this._value=r(t)}get value(){return this.dep||(this.dep=/* @__PURE__ */ new Set),t(this.dep),this._value}set value(e){Object.is(e,this._rawValue)||(this._rawValue=e,this._value=r(e),this.dep&&n(this.dep))}};function l(e){return s(e)?e:i(new c(e))}function u(e){return s(e)?e.value:e}function d(e){return typeof e==`function`?e():u(e)}var f=class{constructor(r,i){e(this,`_getValue`,void 0),e(this,`_setValue`,void 0),e(this,`dep`,void 0),o(this);let a=i,s=()=>{this.dep||(this.dep=/* @__PURE__ */ new Set),t(this.dep)},c=()=>{this.dep&&n(this.dep)},l=e=>e===void 0&&a!==void 0?a:e;if(typeof r==`function`){let e=r(s,c);this._getValue=()=>l(e.get()),this._setValue=t=>e.set(t);return}let u=r;this._getValue=()=>(s(),l(u.get())),this._setValue=e=>{u.set(e),c()}}get value(){return this._getValue()}set value(e){this._setValue(e)}};function p(e,t){return i(new f(e,t))}export{a as RefFlag,p as customRef,s as isRef,o as markAsRef,l as ref,d as toValue,u as unref};
@@ -1 +1 @@
1
- import{nextTick as e,queueJob as t}from"../../scheduler.mjs";import{touchReactive as n}from"../reactive/patch.mjs";import{isReactive as r}from"../reactive.mjs";import{isRef as i}from"../ref.mjs";import{isShallowRef as a}from"../shallowRef.mjs";import{traverse as o}from"../traverse.mjs";import{getDeepWatchStrategy as s}from"./types.mjs";function c(e){if(typeof e==`function`)return e();if(i(e))return e.value;if(r(e))return e;throw Error(`无效的 watch 源`)}function l(e){let t=Array.isArray(e),n=!t&&r(e),o=t?e.some(e=>r(e)):n,s=t?e.some(e=>a(e)):a(e),l;if(t){let t=e;l=()=>t.map(e=>c(e))}else if(typeof e==`function`)l=e;else if(i(e))l=()=>e.value;else if(n)l=()=>e;else throw Error(`无效的 watch 源`);return{getter:l,hasReactiveSource:o,hasShallowSource:s,isMultiSource:t,isReactiveSource:n}}function u(e,t,i,a,c){let l=i?t.some(e=>r(e)):a,u=c??l;if(u!==!0&&typeof u!=`number`)return e;let d=typeof u==`number`?u:u?1/0:0;return()=>{let t=e(),a=s();return i&&Array.isArray(t)?t.map(e=>a===`version`&&r(e)?(n(e),e):o(e,d)):a===`version`&&r(t)?(n(t),t):o(t,d)}}function d(n,r,i,a){if(a){a(n,i);return}if(r===`sync`){n();return}if(r===`post`){e(()=>t(n));return}i?n():t(n)}export{u as applyDeepWatchGetter,l as createWatchGetter,d as dispatchScheduledJob};
1
+ import{nextTick as e,queueJob as t}from"../../scheduler.mjs";import{touchReactive as n}from"../reactive/patch.mjs";import{isReactive as r}from"../reactive.mjs";import{isRef as i}from"../ref.mjs";import{isShallowRef as a}from"../shallowRef.mjs";import{traverse as o}from"../traverse.mjs";import{getDeepWatchStrategy as s}from"./types.mjs";function c(e){if(typeof e==`function`)return e();if(i(e))return e.value;if(r(e))return e;throw Error(`无效的 watch 源`)}function l(e){let t=Array.isArray(e),n=!t&&r(e),o=t?e.some(e=>r(e)):n,s=t?e.some(e=>a(e)):a(e),l;if(t){let t=e;l=()=>t.map(e=>c(e))}else if(typeof e==`function`)l=e;else if(i(e))l=()=>e.value;else if(n)l=()=>e;else throw Error(`无效的 watch 源`);return{getter:l,hasReactiveSource:o,hasShallowSource:s,isMultiSource:t,isReactiveSource:n}}function u(e,t,i,a,c){let l=i?t.some(e=>r(e)):a,u=c??l;if(u!==!0&&typeof u!=`number`)return e;let d=typeof u==`number`?u:u?1/0:0;return()=>{let t=e(),a=s();return i&&Array.isArray(t)?t.map(e=>a===`version`&&r(e)?(n(e),e):o(e,d)):a===`version`&&r(t)?(n(t),t):o(t,d)}}function d(n,r,i,a){a?a(n,i):r===`sync`?n():r===`post`?e(()=>t(n)):i?n():t(n)}export{u as applyDeepWatchGetter,l as createWatchGetter,d as dispatchScheduledJob};
@@ -1 +1 @@
1
- import{registerInitialNavigationLifecycle as e}from"../runtime/navigationLifecycle.mjs";import{getActiveRouter as t}from"./instance.mjs";import{WEVU_INITIAL_NAVIGATION_TIMEOUT_MARKER as n}from"@weapp-core/constants";import{queueMicrotaskPolyfill as r}from"@wevu/web-apis";const i=1e4,a=/* @__PURE__ */ new WeakMap,o=/* @__PURE__ */ new WeakMap;function s(e){return Number.isFinite(e)&&e>0?Math.max(1,Math.trunc(e)):i}function c(e){return{route:typeof e.route==`string`?e.route:void 0,__route__:typeof e.__route__==`string`?e.__route__:void 0,options:e.options&&typeof e.options==`object`?{...e.options}:void 0}}function l(e){if(!e||typeof e!=`object`)return;let t={};for(let[n,r]of Object.entries(e))t[n]=Array.isArray(r)?[...r]:r;return t}function u(){let e=t();return e?a.get(e)?.timeoutMs??1e4:i}function d(e){return!!(e&&typeof e==`object`&&e.__wevuNavigationFailure)}function f(e,i,s={}){let f=o.get(e);if(f)return s.onComplete&&f.blocking&&f.subscribe(s.onComplete),s.start!==!1&&f.start(i),f.blocking?f.promise:void 0;let p=t(),m=p?a.get(p):void 0,h=m?.runner;if(!h)return;let g=m?.mode===`blocking`,_=c(e),v=l(i),y=`idle`,b,x=u(),S,C=/* @__PURE__ */ new Set,w=new Promise(e=>{S=e}),T=(e,t)=>{if(y!==`idle`&&y!==`running`)return;y=e,b!==void 0&&(clearTimeout(b),b=void 0);let n=[...C];C.clear(),h=void 0,_=void 0,v=void 0,S(t),r(()=>{if(y===`allowed`||y===`timed-out`)for(let e of n)e.active&&(e.callback(t),e.active=!1)})},E={promise:w,blocking:g,status:()=>y,subscribe(e){let t={callback:e,active:!0};return y!==`idle`&&y!==`running`?r(()=>{t.active&&(y===`allowed`||y===`timed-out`)&&(e(y===`allowed`||y===`timed-out`),t.active=!1)}):C.add(t),()=>{t.active=!1,C.delete(t)}},start(e){if(y!==`idle`)return;y=`running`,g&&(b=setTimeout(()=>{y===`running`&&(console.warn(`${n} initial navigation exceeded ${x}ms; mounting page`,_?.route??_?.__route__??``),T(`timed-out`,!0))},x));let t=_,r=l(e??v),i=h;if(h=void 0,!i||!t){T(`aborted`,!1);return}i(t,r,()=>y===`running`).then(e=>{let t=d(e);T(t?`aborted`:`allowed`,!t)},()=>{T(`aborted`,!1)})},cancel(){T(`cancelled`,!1)}};return o.set(e,E),s.onComplete&&g&&E.subscribe(s.onComplete),s.start!==!1&&E.start(i),g?w:void 0}function p(e){o.get(e)?.cancel()}function m(t,n,r=i,o=`blocking`){e({ensure:f,cancel:p}),a.set(t,{runner:n,mode:o,timeoutMs:s(r)})}export{i as DEFAULT_INITIAL_NAVIGATION_TIMEOUT,p as cancelInitialNavigation,f as ensureInitialNavigation,u as getInitialNavigationTimeout,m as registerInitialNavigationRunner};
1
+ import{registerInitialNavigationLifecycle as e}from"../runtime/navigationLifecycle.mjs";import{getActiveRouter as t}from"./instance.mjs";import{WEVU_INITIAL_NAVIGATION_TIMEOUT_MARKER as n}from"@weapp-core/constants";import{queueMicrotaskPolyfill as r}from"@wevu/web-apis";const i=1e4,a=/* @__PURE__ */ new WeakMap,o=/* @__PURE__ */ new WeakMap;function s(e){return Number.isFinite(e)&&e>0?Math.max(1,Math.trunc(e)):i}function c(e){return{route:typeof e.route==`string`?e.route:void 0,__route__:typeof e.__route__==`string`?e.__route__:void 0,options:e.options&&typeof e.options==`object`?{...e.options}:void 0}}function l(e){if(!e||typeof e!=`object`)return;let t={};for(let[n,r]of Object.entries(e))t[n]=Array.isArray(r)?[...r]:r;return t}function u(){let e=t();return e?a.get(e)?.timeoutMs??1e4:i}function d(e){return!!(e&&typeof e==`object`&&e.__wevuNavigationFailure)}function f(e){return o.get(e)?.promise}function p(e,i,s={}){let f=o.get(e);if(f)return s.onComplete&&f.blocking&&f.subscribe(s.onComplete),s.start!==!1&&f.start(i),f.blocking?f.promise:void 0;let p=t(),m=p?a.get(p):void 0,h=m?.runner;if(!h)return;let g=m?.mode===`blocking`,_=c(e),v=l(i),y=`idle`,b,x=u(),S,C=/* @__PURE__ */ new Set,w=new Promise(e=>{S=e}),T=(e,t)=>{if(y!==`idle`&&y!==`running`)return;y=e,b!==void 0&&(clearTimeout(b),b=void 0);let n=[...C];C.clear(),h=void 0,_=void 0,v=void 0,S(t),r(()=>{if(y===`allowed`||y===`timed-out`)for(let e of n)e.active&&(e.callback(t),e.active=!1)})},E={promise:w,blocking:g,status:()=>y,subscribe(e){let t={callback:e,active:!0};return y!==`idle`&&y!==`running`?r(()=>{t.active&&(y===`allowed`||y===`timed-out`)&&(e(y===`allowed`||y===`timed-out`),t.active=!1)}):C.add(t),()=>{t.active=!1,C.delete(t)}},start(e){if(y!==`idle`)return;y=`running`,g&&(b=setTimeout(()=>{y===`running`&&(console.warn(`${n} initial navigation exceeded ${x}ms; mounting page`,_?.route??_?.__route__??``),T(`timed-out`,!0))},x));let t=_,r=l(e??v),i=h;h=void 0,!i||!t?T(`aborted`,!1):i(t,r,()=>y===`running`).then(e=>{let t=d(e);T(t?`aborted`:`allowed`,!t)},()=>{T(`aborted`,!1)})},cancel(){T(`cancelled`,!1)}};return o.set(e,E),s.onComplete&&g&&E.subscribe(s.onComplete),s.start!==!1&&E.start(i),g?w:void 0}function m(e){o.get(e)?.cancel()}function h(t,n,r=i,o=`blocking`){e({ensure:p,cancel:m}),a.set(t,{runner:n,mode:o,timeoutMs:s(r)})}export{i as DEFAULT_INITIAL_NAVIGATION_TIMEOUT,m as cancelInitialNavigation,p as ensureInitialNavigation,f as getInitialNavigationPromise,u as getInitialNavigationTimeout,h as registerInitialNavigationRunner};
@@ -0,0 +1,7 @@
1
+ import { ScrollRestorationHandle, ScrollRestorationRegistrationOptions, ScrollViewRestorationHandle } from "./types.mjs";
2
+ //#region src/router/scrollRestoration/adapters.d.ts
3
+ /** WebView 页面适配器;Skyline 没有隐式页面滚动容器。 */
4
+ export declare function usePageScrollRestoration(options?: ScrollRestorationRegistrationOptions): ScrollRestorationHandle;
5
+ /** 用属性控制 WebView/Skyline scroll-view,scroll 事件不产生 setData。 */
6
+ export declare function useScrollViewRestoration(options?: ScrollRestorationRegistrationOptions): ScrollViewRestorationHandle;
7
+ //#endregion
@@ -0,0 +1 @@
1
+ import{ref as e}from"../../reactivity/ref.mjs";import{getCurrentMiniProgramGlobalObject as t}from"../../runtime/platform/current.mjs";import{ensurePageHookOnInstance as n}from"../../runtime/hooks/pageScroll.mjs";import{addScrollHook as r}from"./host.mjs";import{resolveScrollController as i}from"./controller.mjs";import{getScrollSetupScope as a,registerScrollRestoration as o}from"./index.mjs";import{WEVU_PAGE_SCROLL_OBSERVERS_KEY as s,WEVU_PAGE_SCROLL_RESTORATION_OWNER_KEY as c}from"@weapp-core/constants";function l(e={}){let a=i(e.controller),l=t();if(typeof l?.pageScrollTo!=`function`)throw TypeError(`当前宿主不支持 pageScrollTo,请使用显式 scroll-view 适配器。`);let u=0,d,f=[];return o({...e,capture:()=>({top:u}),async restore(e,t){let n=a.transition;if(n&&n.page===d&&n.event.renderer===`skyline`)throw Error(`Skyline 不支持页面级滚动,请使用 useScrollViewRestoration()。`);t.isActive()&&await new Promise((t,n)=>{l.pageScrollTo({scrollTop:e?.top??0,duration:0,success:()=>t(),fail:n})})}},{onBindPage(e){d=e;let t=l[c]?.(d);typeof t==`function`&&f.push(t),f.push(r(d,s,e=>{e&&typeof e==`object`&&`scrollTop`in e&&typeof e.scrollTop==`number`&&(u=e.scrollTop)})),n(d,`onPageScroll`)},onStop(){for(let e of f)e();f.length=0}})}function u(t={}){let{commit:n}=a(),r=e(0),i=e(0),s=0,c=0;return{...o({...t,capture:()=>({top:s,left:c}),async restore(e,t){t.isActive()&&(r.value=s,i.value=c,await n(),t.isActive()&&(r.value=e?.top??0,i.value=e?.left??0,await n()))}}),scrollTop:r,scrollLeft:i,onScroll(e){s=e.detail.scrollTop,c=e.detail.scrollLeft}}}export{l as usePageScrollRestoration,u as useScrollViewRestoration};
@@ -0,0 +1,7 @@
1
+ import "../types.mjs";
2
+ import { ScrollRestorationController, ScrollRestorationOptions } from "./types.mjs";
3
+ import "./host.mjs";
4
+ //#region src/router/scrollRestoration/controller.d.ts
5
+ /** 创建显式启用的路由会话;不会安装全局默认滚动行为。 */
6
+ export declare function createScrollRestoration<TRouteMap extends object>(options: ScrollRestorationOptions<TRouteMap>): ScrollRestorationController;
7
+ //#endregion
@@ -0,0 +1 @@
1
+ import{getCurrentMiniProgramPages as e}from"../../runtime/platform.mjs";import{resolvePageRoute as t}from"../../routerInternal/location.mjs";import{getActiveRouter as n}from"../instance.mjs";import{currentScrollPage as r,subscribeScrollRouteEvents as i,supportsScrollRouteEvents as a}from"./host.mjs";const o=/* @__PURE__ */ new WeakMap,s=/* @__PURE__ */ new WeakMap;function c(n){if(s.has(n.router))throw Error(`该 router 已创建 scroll restoration 会话,请复用或先 dispose()。`);let c=n.router,l=/* @__PURE__ */ new Map,u=/* @__PURE__ */ new Map,d=new WeakSet(e()),f=n.onError??(e=>console.error(`[wevu/router] scroll restoration:`,e)),p=!1,m=0,h,g,_={automatic:a(),clear(e){e===void 0?l.clear():l.delete(e);for(let t of u.values())for(let n of t)(e===void 0||n.key===e)&&n.invalidate()},dispose(){if(!p){p=!0,m++,g?.();for(let e of u.values())for(let t of e)t.stop();u.clear(),l.clear(),h=void 0,s.delete(n.router),o.delete(_)}}},v={controller:_,get disposed(){return p},get transition(){return h},get generation(){return m},resolveRoute:e=>c.resolve(t(e)),register(e,t){if(p)throw Error(`scroll restoration 会话已 dispose()。`);let n=u.get(e);n||(n=/* @__PURE__ */ new Set,u.set(e,n));for(let e of n)if(e.key===t.key&&e.id===t.id)throw Error(`同一页面重复注册 scroll restoration key/id: ${t.key} / ${t.id}`);return n.add(t),()=>{n.delete(t),n.size===0&&u.delete(e)}},read:(e,t)=>l.get(e)?.get(t),save(e,t,n){if(p)return;if(n===null){v.clear(e,t);return}let r=l.get(e);r||(r=/* @__PURE__ */ new Map,l.set(e,r)),r.set(t,n)},clear(e,t){let n=l.get(e);n?.delete(t),n?.size===0&&l.delete(e);for(let n of u.values())for(let r of n)r.key===e&&r.id===t&&r.invalidate()},report:f};return _.automatic&&(g=i({BeforeAppRoute(e){if(p||h?.event.routeEventId===e.routeEventId)return;let t=r();if(t){d.add(t);for(let e of u.get(t)??[])e.capture()}m++;for(let e of u.values())for(let t of e)t.invalidate();h={event:e,fresh:!1,done:!1}},BeforePageUnload(e){let t=e.page;if(t){if(h?.event.routeEventId!==e.routeEventId&&t===r())for(let e of u.get(t)??[])e.capture();for(let e of u.get(t)??[])e.stop()}},AppRoute(e){if(p||h&&h.event.routeEventId!==e.routeEventId)return;let n=r();n&&t(n).path===e.path.replace(/^\/+/,``)&&(h??(h={event:e,fresh:!1,done:!1}),!h.page&&(h.page=n,h.fresh=!d.has(n),d.add(n)))},AppRouteDone(e){if(p||!h)return;let t=e.routeEventId===``&&h.fresh&&Number.isInteger(h.event.webviewId)&&e.webviewId===h.event.webviewId&&e.path===h.event.path&&typeof e.openType==`string`&&e.openType===h.event.openType;if((h.event.routeEventId===e.routeEventId||t)&&h.page&&h.page===r()&&!h.done){h.done=!0;for(let e of u.get(h.page)??[])e.restoreAutomatic()}}})),o.set(_,v),s.set(n.router,_),_}function l(e){let t=n(),r=e??(t&&s.get(t)),i=r&&o.get(r);if(!i||i.disposed)throw Error(`请先在应用启动时调用 createScrollRestoration({ router }),或传入有效的 controller。`);return i}export{c as createScrollRestoration,l as resolveScrollController};
@@ -0,0 +1,3 @@
1
+ import "../../routerInternal/types.mjs";
2
+ import "../types.mjs";
3
+ import { WEVU_HOOKS_KEY, WEVU_NATIVE_INSTANCE_KEY, WEVU_READY_CALLED_KEY } from "@weapp-core/constants";
@@ -0,0 +1 @@
1
+ import{getCurrentMiniProgramGlobalObject as e}from"../../runtime/platform/current.mjs";import{getCurrentMiniProgramPages as t}from"../../runtime/platform.mjs";import{pushHook as n}from"../../runtime/hooks/base.mjs";import{WEVU_HOOKS_KEY as r,WEVU_NATIVE_INSTANCE_KEY as i,WEVU_ROUTE_EVENT_CONTRACT_KEY as a}from"@weapp-core/constants";const o=[`BeforeAppRoute`,`BeforePageUnload`,`AppRoute`,`AppRouteDone`];function s(t=e()){if(!t||!o.every(e=>typeof t[`on${e}`]==`function`&&typeof t[`off${e}`]==`function`))return!1;if(t[a]===1)return!0;let n=t.getAppBaseInfo?.().SDKVersion??t.getSystemInfoSync?.().SDKVersion;if(typeof n!=`string`)return!1;let r=/^(\d+)\.(\d+)\.(\d+)(?:\D|$)/.exec(n);if(!r)return!1;let i=Number(r[1]),s=Number(r[2]),c=Number(r[3]);return i>3||i===3&&(s>5||s===5&&c>=5)}function c(t){let n=e(),r=[];try{for(let e of o){let i=n=>{typeof n?.routeEventId==`string`&&typeof n.path==`string`&&t[e](n)};n[`on${e}`](i),r.push(()=>n[`off${e}`](i))}}catch(e){for(let e of r)e();throw e}return()=>{for(let e of r)e()}}function l(){let e=t();return e[e.length-1]}function u(e){let n=t(),r=/* @__PURE__ */ new Set,a=e;for(;a&&!r.has(a);){if(r.add(a),n.includes(a))return a;let e=a.__wxWebviewId__;if(e!==void 0){let t=n.find(t=>t.__wxWebviewId__===e);if(t)return t}let t=a[i]??a.$;a=t&&t!==a?t:a.selectOwnerComponent?.()}}function d(e,t,i){return n(e,t,i),()=>{let n=e[r],a=n?.[t];n&&Array.isArray(a)&&(n[t]=a.filter(e=>e!==i))}}export{d as addScrollHook,l as currentScrollPage,u as resolveScrollPage,c as subscribeScrollRouteEvents,s as supportsScrollRouteEvents};
@@ -0,0 +1,8 @@
1
+ import { ScrollRestorationContext, ScrollRestorationController, ScrollRestorationHandle, ScrollRestorationOptions, ScrollRestorationRegistrationOptions, ScrollViewRestorationHandle, UseScrollRestorationOptions } from "./types.mjs";
2
+ import "./host.mjs";
3
+ import { createScrollRestoration } from "./controller.mjs";
4
+ //#region src/router/scrollRestoration/index.d.ts
5
+ /** 在同步 setup 中注册快照;只恢复新实例,不覆盖原生保留页的位置。 */
6
+ export declare function useScrollRestoration<T extends object>(options: UseScrollRestorationOptions<T>): ScrollRestorationHandle;
7
+ //#endregion
8
+ export { type ScrollRestorationContext, type ScrollRestorationController, type ScrollRestorationHandle, type ScrollRestorationOptions, type ScrollRestorationRegistrationOptions, type ScrollViewRestorationHandle, type UseScrollRestorationOptions, createScrollRestoration };
@@ -0,0 +1 @@
1
+ import{onScopeDispose as e}from"../../reactivity/core.mjs";import{assertInSetup as t,getCurrentSetupContext as n}from"../../runtime/hooks/base.mjs";import{getInitialNavigationPromise as r}from"../initialNavigation.mjs";import{addScrollHook as i,currentScrollPage as a,resolveScrollPage as o}from"./host.mjs";import{createScrollRestoration as s,resolveScrollController as c}from"./controller.mjs";import{WEVU_READY_CALLED_KEY as l}from"@weapp-core/constants";function u(){let e=t(`useScrollRestoration`),r=n()?.proxy;if(typeof r?.$nextTick!=`function`)throw TypeError(`scroll restoration 需要具有宿主提交屏障的 wevu setup 实例。`);return{instance:e,commit:()=>r.$nextTick()}}function d(t,n){let{instance:s,commit:d}=u(),f=c(t.controller),p=[],m,h,g=!1,_=!0,v=!1,y=!1,b=0,x=!!s[l],S=!1,C,w,T;function E(){(g||x&&S)&&w?.()}function D(){if(m||g)return;let e=o(s);if(!e)return;let r=f.resolveRoute(e);T.key=typeof t.key==`function`?t.key(r):t.key??r.fullPath;let a=f.register(e,T);m=e,h=r,p.push(a),S=!!e[l],p.push(i(e,`onReady`,()=>{S=!0,E(),T.restoreAutomatic()})),n?.onBindPage?.(e)}async function O(){if(g||f.disposed)return!1;if(D(),!m||!h)throw Error(`无法确定 scroll restoration 的原生归属页面,请在页面 attached 后恢复。`);if(!_||a()!==m)return!1;let e=++b,n=f.generation,i={route:h,routeEventId:f.transition?.page===m?f.transition.event.routeEventId:void 0,isActive:()=>!g&&!f.disposed&&_&&e===b&&n===f.generation&&a()===m};if((!x||!S)&&(C??(C=new Promise(e=>{w=e})),await C),!i.isActive()||await r(m)===!1||!i.isActive()||(await d(),!i.isActive()))return!1;let o=f.read(T.key,T.id);return await t.restore(o,i),i.isActive()}T={key:``,id:t.id??`default`,capture(){if(!(g||f.disposed||!m||!_||v)){v=!0;try{let e=t.capture();if(e!==null&&`then`in e&&typeof e.then==`function`)throw TypeError(`scroll restoration capture 必须同步返回快照,不能返回 Promise。`);f.save(T.key,T.id,e)}catch(e){f.clear(T.key,T.id),f.report(e)}}},invalidate(){b++,w?.(),C=void 0,w=void 0},restoreAutomatic(){let e=f.transition;!g&&!t.manual&&!y&&x&&S&&e?.fresh&&e.done&&e.page===m&&(y=!0,O().catch(f.report))},stop(){if(!g){g=!0,b++,E();for(let e of p)e();p.length=0,n?.onStop?.()}}};function k(){T.capture(),T.stop()}return p.push(i(s,`onAttached`,D),i(s,`onReady`,()=>{D(),x=!0,E(),T.restoreAutomatic()}),i(s,`onShow`,()=>{D(),_=!0,v=!1}),i(s,`onHide`,()=>{T.capture(),_=!1,T.invalidate()}),i(s,`onDetached`,k),i(s,`onUnload`,k)),e(k),D(),T.restoreAutomatic(),{automatic:f.controller.automatic&&!t.manual,scroll:O,clear:()=>{D(),m&&f.clear(T.key,T.id)},stop:T.stop}}function f(e){return d(e)}export{s as createScrollRestoration,u as getScrollSetupScope,d as registerScrollRestoration,f as useScrollRestoration};
@@ -0,0 +1,60 @@
1
+ import { Ref } from "../../reactivity/ref.mjs";
2
+ import "../../reactivity/index.mjs";
3
+ import { RouteLocationNormalizedLoaded, RouterNavigation } from "../types.mjs";
4
+ //#region src/router/scrollRestoration/types.d.ts
5
+ export interface ScrollRestorationController {
6
+ /** 当前宿主是否支持带 routeEventId 的自动路由关联。 */
7
+ readonly automatic: boolean;
8
+ /** 清除整个会话或指定路由 key 的快照,不注销组件。 */
9
+ clear: (key?: string) => void;
10
+ /** 注销宿主监听、组件注册和未完成的恢复,并清空会话。 */
11
+ dispose: () => void;
12
+ }
13
+ export interface ScrollRestorationOptions<TRouteMap extends object = object> {
14
+ router: RouterNavigation<TRouteMap>;
15
+ /** 自动捕获或恢复失败时调用;手动 scroll 的错误由调用者处理。 */
16
+ onError?: (error: unknown) => void;
17
+ }
18
+ export interface ScrollRestorationContext {
19
+ readonly route: Readonly<RouteLocationNormalizedLoaded>;
20
+ readonly routeEventId?: string;
21
+ /** 异步自定义恢复在每次 await 后、写入宿主前必须重新检查。 */
22
+ isActive: () => boolean;
23
+ }
24
+ export interface ScrollRestorationRegistrationOptions {
25
+ controller?: ScrollRestorationController;
26
+ /** 默认使用包含 query 的 route.fullPath。 */
27
+ key?: string | ((route: Readonly<RouteLocationNormalizedLoaded>) => string);
28
+ /** 同一页面和路由 key 内的独立容器名,默认为 default。 */
29
+ id?: string;
30
+ /** 只捕获,不在原生路由完成后自动恢复。 */
31
+ manual?: boolean;
32
+ }
33
+ export interface UseScrollRestorationOptions<T extends object> extends ScrollRestorationRegistrationOptions {
34
+ /** 同步返回独立快照;不能返回响应式活动对象或 Promise,null 表示清除。 */
35
+ capture: () => (T & {
36
+ then?: never;
37
+ }) | null;
38
+ restore: (snapshot: T | undefined, context: ScrollRestorationContext) => void | Promise<void>;
39
+ }
40
+ export interface ScrollRestorationHandle {
41
+ readonly automatic: boolean;
42
+ /** 等待组件就绪及宿主提交后恢复;已离开或失效时返回 false。 */
43
+ scroll: () => Promise<boolean>;
44
+ /** 只清除当前 key/id 的快照。 */
45
+ clear: () => void;
46
+ /** 停止当前注册;保留已捕获快照。 */
47
+ stop: () => void;
48
+ }
49
+ export interface ScrollViewRestorationHandle extends ScrollRestorationHandle {
50
+ scrollTop: Ref<number>;
51
+ scrollLeft: Ref<number>;
52
+ /** 绑定 scroll-view 的 scroll 事件,只更新非响应式缓存。 */
53
+ onScroll: (event: {
54
+ detail: {
55
+ scrollTop: number;
56
+ scrollLeft: number;
57
+ };
58
+ }) => void;
59
+ }
60
+ //#endregion
@@ -1 +1 @@
1
- import{reactive as e}from"../reactivity/reactive.mjs";import{readonly as t}from"../reactivity/readonly.mjs";import{getCurrentMiniProgramPages as n}from"../runtime/platform.mjs";import{getCurrentSetupContext as r}from"../runtime/hooks/base.mjs";import{onLoad as i,onReady as a,onRouteDone as o,onShow as s,onUnload as c}from"../runtime/hooks/register.mjs";import{registerRouteStateSyncHandler as l}from"./routeSync.mjs";import{resolveCurrentRoute as u,resolvePageRoute as d}from"../routerInternal/location.mjs";import{cloneLocationQuery as f,cloneRouteLocationRedirectedFrom as p,cloneRouteMeta as m,cloneRouteParams as h,cloneRouteRecordMatchedList as g}from"../routerInternal/snapshots.mjs";import{useNativePageRouter as _,useNativeRouter as v}from"../runtime/vueCompat/router.mjs";import{getActiveRouter as y}from"./instance.mjs";import{resolveRouteLocation as b}from"./resolve.mjs";import{WEVU_NATIVE_INSTANCE_KEY as x}from"@weapp-core/constants";function S(e){return typeof e.route==`string`||typeof e.__route__==`string`}function C(e){let t=e[x];return t&&typeof t==`object`?t:e}function w(e,t,r){if(r?.source===`router`||!t)return!0;let i=C(e);if(r?.page)return r.page===i;let a=n();return a[a.length-1]===i}function T(e,t){e.path=t.path,e.fullPath=t.fullPath,e.query=f(t.query),e.hash=t.hash,e.params=h(t.params),t.name===void 0?delete e.name:e.name=t.name,t.meta===void 0?delete e.meta:e.meta=m(t.meta),t.href===void 0?delete e.href:e.href=t.href,t.matched===void 0?delete e.matched:e.matched=g(t.matched),t.redirectedFrom===void 0?delete e.redirectedFrom:e.redirectedFrom=p(t.redirectedFrom)}function E(p={}){let m=r(),g=m?.instance&&typeof m.instance==`object`?m.instance:void 0,_=p.resolveRoute??(e=>y()?.resolve(e)??e),v=_(u(void 0,g)),x=e({path:v.path,fullPath:v.fullPath,query:f(v.query),hash:v.hash,params:h(v.params)});T(x,v);function E(e,t,n){let r=_(t||u(e,g));n&&p.beforeRouteStateSync?.(r,n),T(x,r)}if(!g)return l(e=>{if(e?.route){E(void 0,e.route,e);return}if(e?.url){E(void 0,b(e.url,x.path),e);return}if(e?.page){E(void 0,d(e.page),e);return}E(void 0,void 0,e)}),{route:t(x)};let D=g,O=C(D),k=S(O)||n().includes(O);i(e=>{E(e)}),a(()=>{E()}),s(()=>{E()}),o(()=>{E()});let A=l(e=>{if(w(D,k,e)){if(e?.route){E(void 0,e.route,e);return}if(e?.url){E(void 0,b(e.url,x.path),e);return}if(e?.page){E(void 0,d(e.page),e);return}E(void 0,void 0,e)}});return c(()=>{A()}),{route:t(x)}}function D(e={}){return E(e).route}function O(){return v()}function k(){return _()}export{E as createRouteStateController,k as useNativePageRouter,O as useNativeRouter,D as useRoute};
1
+ import{reactive as e}from"../reactivity/reactive.mjs";import{readonly as t}from"../reactivity/readonly.mjs";import{getCurrentMiniProgramPages as n}from"../runtime/platform.mjs";import{getCurrentSetupContext as r}from"../runtime/hooks/base.mjs";import{onLoad as i,onReady as a,onRouteDone as o,onShow as s,onUnload as c}from"../runtime/hooks/register.mjs";import{registerRouteStateSyncHandler as l}from"./routeSync.mjs";import{resolveCurrentRoute as u,resolvePageRoute as d}from"../routerInternal/location.mjs";import{cloneLocationQuery as f,cloneRouteLocationRedirectedFrom as p,cloneRouteMeta as m,cloneRouteParams as h,cloneRouteRecordMatchedList as g}from"../routerInternal/snapshots.mjs";import{useNativePageRouter as _,useNativeRouter as v}from"../runtime/vueCompat/router.mjs";import{getActiveRouter as y}from"./instance.mjs";import{resolveRouteLocation as b}from"./resolve.mjs";import{WEVU_NATIVE_INSTANCE_KEY as x}from"@weapp-core/constants";function S(e){return typeof e.route==`string`||typeof e.__route__==`string`}function C(e){let t=e[x];return t&&typeof t==`object`?t:e}function w(e,t,r){if(r?.source===`router`||!t)return!0;let i=C(e);if(r?.page)return r.page===i;let a=n();return a[a.length-1]===i}function T(e,t){e.path=t.path,e.fullPath=t.fullPath,e.query=f(t.query),e.hash=t.hash,e.params=h(t.params),t.name===void 0?delete e.name:e.name=t.name,t.meta===void 0?delete e.meta:e.meta=m(t.meta),t.href===void 0?delete e.href:e.href=t.href,t.matched===void 0?delete e.matched:e.matched=g(t.matched),t.redirectedFrom===void 0?delete e.redirectedFrom:e.redirectedFrom=p(t.redirectedFrom)}function E(p={}){let m=r(),g=m?.instance&&typeof m.instance==`object`?m.instance:void 0,_=p.resolveRoute??(e=>y()?.resolve(e)??e),v=_(u(void 0,g)),x=e({path:v.path,fullPath:v.fullPath,query:f(v.query),hash:v.hash,params:h(v.params)});T(x,v);function E(e,t,n){let r=_(t||u(e,g));n&&p.beforeRouteStateSync?.(r,n),T(x,r)}if(!g)return l(e=>{e?.route?E(void 0,e.route,e):e?.url?E(void 0,b(e.url,x.path),e):e?.page?E(void 0,d(e.page),e):E(void 0,void 0,e)}),{route:t(x)};let D=g,O=C(D),k=S(O)||n().includes(O);i(e=>{E(e)}),a(()=>{E()}),s(()=>{E()}),o(()=>{E()});let A=l(e=>{w(D,k,e)&&(e?.route?E(void 0,e.route,e):e?.url?E(void 0,b(e.url,x.path),e):e?.page?E(void 0,d(e.page),e):E(void 0,void 0,e))});return c(()=>{A()}),{route:t(x)}}function D(e={}){return E(e).route}function O(){return v()}function k(){return _()}export{E as createRouteStateController,k as useNativePageRouter,O as useNativeRouter,D as useRoute};
package/dist/router.d.mts CHANGED
@@ -6,6 +6,10 @@ import { AddRoute, InitialNavigationMode, LocationQuery, LocationQueryRaw, Locat
6
6
  import { createRouter } from "./router/createRouter.mjs";
7
7
  import { createNavigationFailure, isNavigationFailure } from "./router/navigationCore.mjs";
8
8
  import { resolveRouteLocation } from "./router/resolve.mjs";
9
+ import { ScrollRestorationContext, ScrollRestorationController, ScrollRestorationHandle, ScrollRestorationOptions, ScrollRestorationRegistrationOptions, ScrollViewRestorationHandle, UseScrollRestorationOptions } from "./router/scrollRestoration/types.mjs";
10
+ import { usePageScrollRestoration, useScrollViewRestoration } from "./router/scrollRestoration/adapters.mjs";
11
+ import { createScrollRestoration } from "./router/scrollRestoration/controller.mjs";
12
+ import { useScrollRestoration } from "./router/scrollRestoration/index.mjs";
9
13
  import { UseRouteOptions, useNativePageRouter, useNativeRouter, useRoute } from "./router/useRoute.mjs";
10
14
  import { useRouter } from "./router/useRouter.mjs";
11
15
  import { StaticPageDeclaration, StaticPageDeclaration as StaticPageDeclaration$1, StaticRouteValue } from "@wevu/compiler/page-route";
@@ -22,4 +26,4 @@ export interface WevuNamedRouteMap {}
22
26
  */
23
27
  export declare function definePage(route: StaticPageDeclaration$1): void;
24
28
  //#endregion
25
- export { type AddRoute, type InitialNavigationMode, type LocationQuery, type LocationQueryRaw, type LocationQueryValue, type LocationQueryValueRaw, type NamedRouteRecord, type NamedRoutes, type NavigationAfterEach, type NavigationAfterEachContext, type NavigationErrorContext, type NavigationErrorHandler, type NavigationFailure, NavigationFailureType, type NavigationFailureTypeValue, type NavigationGuard, type NavigationGuardContext, type NavigationGuardResult, type NavigationMode, type NavigationRedirect, type RouteLocationNamedRaw, type RouteLocationNormalizedByName, type RouteLocationNormalizedLoaded, type RouteLocationRaw, type RouteLocationRedirectedFrom, type RouteMeta, type RouteParamValue, type RouteParamValueRaw, type RouteParams, type RouteParamsMode, type RouteParamsRaw, type RouteQueryParser, type RouteQueryStringifier, type RouteRecordInput, type RouteRecordMatched, type RouteRecordRaw, type RouteRecordRedirect, type RouterNavigateToOption, type RouterNavigation, type RouterReLaunchOption, type RouterRedirectToOption, type RouterResolve, type RouterSwitchTabOption, type SetupContextRouter, type StaticPageDeclaration, type StaticRouteValue, type TypedRouterTabBarUrl, type TypedRouterUrl, type UseRouteOptions, type UseRouterOptions, type WevuAutoRoute, type WevuBroadRouteMap, type WevuNamedRouteDefinition, type WevuNamedRouteMeta, type WevuNamedRoutePath, type WevuRouteName, type WevuTypedRouterRouteMap, createNavigationFailure, createRouter, isNavigationFailure, parseQuery, resolveRouteLocation, stringifyQuery, useNativePageRouter, useNativeRouter, useRoute, useRouter };
29
+ export { type AddRoute, type InitialNavigationMode, type LocationQuery, type LocationQueryRaw, type LocationQueryValue, type LocationQueryValueRaw, type NamedRouteRecord, type NamedRoutes, type NavigationAfterEach, type NavigationAfterEachContext, type NavigationErrorContext, type NavigationErrorHandler, type NavigationFailure, NavigationFailureType, type NavigationFailureTypeValue, type NavigationGuard, type NavigationGuardContext, type NavigationGuardResult, type NavigationMode, type NavigationRedirect, type RouteLocationNamedRaw, type RouteLocationNormalizedByName, type RouteLocationNormalizedLoaded, type RouteLocationRaw, type RouteLocationRedirectedFrom, type RouteMeta, type RouteParamValue, type RouteParamValueRaw, type RouteParams, type RouteParamsMode, type RouteParamsRaw, type RouteQueryParser, type RouteQueryStringifier, type RouteRecordInput, type RouteRecordMatched, type RouteRecordRaw, type RouteRecordRedirect, type RouterNavigateToOption, type RouterNavigation, type RouterReLaunchOption, type RouterRedirectToOption, type RouterResolve, type RouterSwitchTabOption, type ScrollRestorationContext, type ScrollRestorationController, type ScrollRestorationHandle, type ScrollRestorationOptions, type ScrollRestorationRegistrationOptions, type ScrollViewRestorationHandle, type SetupContextRouter, type StaticPageDeclaration, type StaticRouteValue, type TypedRouterTabBarUrl, type TypedRouterUrl, type UseRouteOptions, type UseRouterOptions, type UseScrollRestorationOptions, type WevuAutoRoute, type WevuBroadRouteMap, type WevuNamedRouteDefinition, type WevuNamedRouteMeta, type WevuNamedRoutePath, type WevuRouteName, type WevuTypedRouterRouteMap, createNavigationFailure, createRouter, createScrollRestoration, isNavigationFailure, parseQuery, resolveRouteLocation, stringifyQuery, useNativePageRouter, useNativeRouter, usePageScrollRestoration, useRoute, useRouter, useScrollRestoration, useScrollViewRestoration };
package/dist/router.mjs CHANGED
@@ -1 +1 @@
1
- import{parseQuery as e,stringifyQuery as t}from"./routerInternal/query.mjs";import{NavigationFailureType as n}from"./router/types.mjs";import{createNavigationFailure as r,isNavigationFailure as i}from"./router/navigationCore.mjs";import{resolveRouteLocation as a}from"./router/resolve.mjs";import{useNativePageRouter as o,useNativeRouter as s,useRoute as c}from"./router/useRoute.mjs";import{createRouter as l}from"./router/createRouter.mjs";import{useRouter as u}from"./router/useRouter.mjs";export{n as NavigationFailureType,r as createNavigationFailure,l as createRouter,i as isNavigationFailure,e as parseQuery,a as resolveRouteLocation,t as stringifyQuery,o as useNativePageRouter,s as useNativeRouter,c as useRoute,u as useRouter};
1
+ import{parseQuery as e,stringifyQuery as t}from"./routerInternal/query.mjs";import{NavigationFailureType as n}from"./router/types.mjs";import{createNavigationFailure as r,isNavigationFailure as i}from"./router/navigationCore.mjs";import{resolveRouteLocation as a}from"./router/resolve.mjs";import{useNativePageRouter as o,useNativeRouter as s,useRoute as c}from"./router/useRoute.mjs";import{createRouter as l}from"./router/createRouter.mjs";import{createScrollRestoration as u}from"./router/scrollRestoration/controller.mjs";import{useScrollRestoration as d}from"./router/scrollRestoration/index.mjs";import{usePageScrollRestoration as f,useScrollViewRestoration as p}from"./router/scrollRestoration/adapters.mjs";import{useRouter as m}from"./router/useRouter.mjs";export{n as NavigationFailureType,r as createNavigationFailure,l as createRouter,u as createScrollRestoration,i as isNavigationFailure,e as parseQuery,a as resolveRouteLocation,t as stringifyQuery,o as useNativePageRouter,s as useNativeRouter,f as usePageScrollRestoration,c as useRoute,m as useRouter,d as useScrollRestoration,p as useScrollViewRestoration};
@@ -1 +1 @@
1
- import{isDynamicRoutePath as e}from"./path.mjs";import{decodeRouteParamSegment as t,parsePathParamToken as n}from"./params.mjs";function r(e){return e.split(`/`).filter(Boolean)}function i(e){return[e.path,...e.aliasPaths]}function a(e,t){let n=[],r=/* @__PURE__ */ new Set,i=e;for(;i&&!(r.has(i.name)||(r.add(i.name),n.unshift(i),!i.parentName));)i=t.recordByName.get(i.parentName);return n}function o(e){let t;for(let n of e)n.meta&&(t||(t=Object.create(null)),Object.assign(t,n.meta));return t}function s(e,t){let n=/* @__PURE__ */ new Set;if(!t.has(e))return n;n.add(e);let r=!0;for(;r;){r=!1;for(let[e,i]of t.entries())i.parentName&&!n.has(e)&&n.has(i.parentName)&&(n.add(e),r=!0)}return n}function c(e){let t={};for(let[n,r]of e.entries())r.length!==0&&(t[n]=r.length===1?r[0]:r);return t}function l(e,i){let a=r(e),o=r(i),s=/* @__PURE__ */ new Map,l=(e,t)=>{let n=s.get(e);if(n){n.push(t);return}s.set(e,[t])},u=e=>{let t=s.get(e);t&&t.length!==0&&(t.pop(),t.length===0&&s.delete(e))},d=(e,n,r)=>{for(let i=0;i<r;i+=1)l(e,t(o[n+i]));return()=>{for(let t=0;t<r;t+=1)u(e)}},f=(e,r)=>{if(e>=a.length)return r>=o.length;let i=a[e],s=n(i);if(!s)return r>=o.length||i!==o[r]?!1:f(e+1,r+1);if(s.modifier===``){if(r>=o.length)return!1;l(s.key,t(o[r]));let n=f(e+1,r+1);return n||u(s.key),n}if(s.modifier===`?`){if(r<o.length){if(l(s.key,t(o[r])),f(e+1,r+1))return!0;u(s.key)}return f(e+1,r)}let c=+(s.modifier===`+`),p=o.length-r;for(let t=p;t>=c;--t){let n=d(s.key,r,t);if(f(e+1,r+t))return!0;n()}return!1};if(f(0,0))return c(s)}function u(t,n){if(t.name){let e=n.recordByName.get(t.name);if(e)return{record:e,matchedRecords:a(e,n)}}let r=n.nameByStaticPath.get(t.path);if(r){let e=n.recordByName.get(r);if(e)return{record:e,matchedRecords:a(e,n),matchedPath:t.path}}for(let r of n.recordByName.values())for(let o of i(r)){if(!e(o))continue;let i=l(o,t.path);if(i)return{record:r,matchedRecords:a(r,n),matchedPath:o,params:i}}}export{s as collectRouteNamesForRemoval,o as mergeMatchedRouteMeta,u as resolveMatchedRouteRecord};
1
+ import{isDynamicRoutePath as e}from"./path.mjs";import{decodeRouteParamSegment as t,parsePathParamToken as n}from"./params.mjs";function r(e){return e.split(`/`).filter(Boolean)}function i(e){return[e.path,...e.aliasPaths]}function a(e,t){let n=[],r=/* @__PURE__ */ new Set,i=e;for(;i&&!(r.has(i.name)||(r.add(i.name),n.unshift(i),!i.parentName));)i=t.recordByName.get(i.parentName);return n}function o(e){let t;for(let n of e)n.meta&&(t||(t=Object.create(null)),Object.assign(t,n.meta));return t}function s(e,t){let n=/* @__PURE__ */ new Set;if(!t.has(e))return n;n.add(e);let r=!0;for(;r;){r=!1;for(let[e,i]of t.entries())i.parentName&&!n.has(e)&&n.has(i.parentName)&&(n.add(e),r=!0)}return n}function c(e){let t={};for(let[n,r]of e.entries())r.length!==0&&(t[n]=r.length===1?r[0]:r);return t}function l(e,i){let a=r(e),o=r(i),s=/* @__PURE__ */ new Map,l=(e,t)=>{let n=s.get(e);n?n.push(t):s.set(e,[t])},u=e=>{let t=s.get(e);t&&t.length!==0&&(t.pop(),t.length===0&&s.delete(e))},d=(e,n,r)=>{for(let i=0;i<r;i+=1)l(e,t(o[n+i]));return()=>{for(let t=0;t<r;t+=1)u(e)}},f=(e,r)=>{if(e>=a.length)return r>=o.length;let i=a[e],s=n(i);if(!s)return r>=o.length||i!==o[r]?!1:f(e+1,r+1);if(s.modifier===``){if(r>=o.length)return!1;l(s.key,t(o[r]));let n=f(e+1,r+1);return n||u(s.key),n}if(s.modifier===`?`){if(r<o.length){if(l(s.key,t(o[r])),f(e+1,r+1))return!0;u(s.key)}return f(e+1,r)}let c=+(s.modifier===`+`),p=o.length-r;for(let t=p;t>=c;--t){let n=d(s.key,r,t);if(f(e+1,r+t))return!0;n()}return!1};if(f(0,0))return c(s)}function u(t,n){if(t.name){let e=n.recordByName.get(t.name);if(e)return{record:e,matchedRecords:a(e,n)}}let r=n.nameByStaticPath.get(t.path);if(r){let e=n.recordByName.get(r);if(e)return{record:e,matchedRecords:a(e,n),matchedPath:t.path}}for(let r of n.recordByName.values())for(let o of i(r)){if(!e(o))continue;let i=l(o,t.path);if(i)return{record:r,matchedRecords:a(r,n),matchedPath:o,params:i}}}export{s as collectRouteNamesForRemoval,o as mergeMatchedRouteMeta,u as resolveMatchedRouteRecord};
@@ -1 +1 @@
1
- import{normalizeRouteParams as e}from"./query.mjs";const t=/^:(\w+)(?:\([^)]*\))?([+*?])?$/;function n(e){let n=t.exec(e);if(n)return{key:n[1],modifier:n[2]??``}}function r(e){return e===void 0?[]:Array.isArray(e)?e:[e]}function i(e){return encodeURIComponent(e)}function a(e){try{return decodeURIComponent(e)}catch{return e}}function o(e,t,a){let o=[],s=/* @__PURE__ */ new Set;for(let c of e.split(`/`)){if(!c)continue;let e=n(c);if(!e){o.push(c);continue}let l=r(t[e.key]);if(e.modifier===``){if(l.length!==1)throw Error(`Missing required param "${e.key}" for named route "${a}"`);s.add(e.key),o.push(i(l[0]));continue}if(e.modifier===`?`){if(l.length===0)continue;if(l.length>1)throw Error(`Param "${e.key}" for named route "${a}" must be a single value`);s.add(e.key),o.push(i(l[0]));continue}if(e.modifier===`+`){if(l.length===0)throw Error(`Missing required repeatable param "${e.key}" for named route "${a}"`);s.add(e.key);for(let e of l)o.push(i(e));continue}l.length>0&&s.add(e.key);for(let e of l)o.push(i(e))}return{path:o.join(`/`),consumedKeys:s}}function s(e){return e===void 0?!1:!Array.isArray(e)||e.length>0}function c(e,t,n){let r=Object.keys(e).filter(e=>!t.has(e)).filter(t=>s(e[t]));if(r.length!==0)throw Error(`Unexpected params for named route "${n}": ${r.join(`, `)}`)}function l(t,n,r){let i=t.name;if(typeof i!=`string`||!i||t.path!==void 0||t.fullPath!==void 0)return t;let a=n.recordByName.get(i);if(!a)throw Error(`Named route "${i}" is not defined in createRouter({ routes | namedRoutes })`);let s=t.params?e(t.params):{},l=o(a.path,s,i);return r===`strict`&&c(s,l.consumedKeys,i),{...t,path:l.path?`/${l.path}`:`/`,params:s}}export{a as decodeRouteParamSegment,n as parsePathParamToken,l as resolveNamedRouteLocation};
1
+ import{normalizeRouteParams as e}from"./query.mjs";const t=/^:(\w+)(?:\([^)]*\))?([+*?])?$/;function n(e){let n=t.exec(e);if(n)return{key:n[1],modifier:n[2]??``}}function r(e){return e===void 0?[]:Array.isArray(e)?e:[e]}function i(e){return encodeURIComponent(e)}function a(e){try{return decodeURIComponent(e)}catch{return e}}function o(e,t,a){let o=[],s=/* @__PURE__ */ new Set;for(let c of e.split(`/`)){if(!c)continue;let e=n(c);if(!e){o.push(c);continue}let l=r(t[e.key]);if(e.modifier===``){if(l.length!==1)throw Error(`Missing required param "${e.key}" for named route "${a}"`);s.add(e.key),o.push(i(l[0]))}else if(e.modifier===`?`){if(l.length===0)continue;if(l.length>1)throw Error(`Param "${e.key}" for named route "${a}" must be a single value`);s.add(e.key),o.push(i(l[0]))}else if(e.modifier===`+`){if(l.length===0)throw Error(`Missing required repeatable param "${e.key}" for named route "${a}"`);s.add(e.key);for(let e of l)o.push(i(e))}else{l.length>0&&s.add(e.key);for(let e of l)o.push(i(e))}}return{path:o.join(`/`),consumedKeys:s}}function s(e){return e===void 0?!1:!Array.isArray(e)||e.length>0}function c(e,t,n){let r=Object.keys(e).filter(e=>!t.has(e)).filter(t=>s(e[t]));if(r.length!==0)throw Error(`Unexpected params for named route "${n}": ${r.join(`, `)}`)}function l(t,n,r){let i=t.name;if(typeof i!=`string`||!i||t.path!==void 0||t.fullPath!==void 0)return t;let a=n.recordByName.get(i);if(!a)throw Error(`Named route "${i}" is not defined in createRouter({ routes | namedRoutes })`);let s=t.params?e(t.params):{},l=o(a.path,s,i);return r===`strict`&&c(s,l.consumedKeys,i),{...t,path:l.path?`/${l.path}`:`/`,params:s}}export{a as decodeRouteParamSegment,n as parsePathParamToken,l as resolveNamedRouteLocation};
@@ -1 +1 @@
1
- function e(e){let t=[];for(let n of e.split(`/`))if(n&&n!==`.`){if(n===`..`){t.length>0&&t.pop();continue}t.push(n)}return t}function t(t,n){if(!t)return e(n).join(`/`);if(t.startsWith(`/`))return e(t).join(`/`);if(t.startsWith(`./`)||t.startsWith(`../`)){let r=e(n);r.length>0&&r.pop();for(let e of t.split(`/`))if(e&&e!==`.`){if(e===`..`){r.length>0&&r.pop();continue}r.push(e)}return r.join(`/`)}return e(t).join(`/`)}function n(e){return e?`/${e}`:`/`}const r=/(?:^|\/):/;function i(e){return r.test(e)}export{n as createAbsoluteRoutePath,i as isDynamicRoutePath,t as resolvePath};
1
+ function e(e){let t=[];for(let n of e.split(`/`))n&&n!==`.`&&(n===`..`?t.length>0&&t.pop():t.push(n));return t}function t(t,n){if(!t)return e(n).join(`/`);if(t.startsWith(`/`))return e(t).join(`/`);if(t.startsWith(`./`)||t.startsWith(`../`)){let r=e(n);r.length>0&&r.pop();for(let e of t.split(`/`))e&&e!==`.`&&(e===`..`?r.length>0&&r.pop():r.push(e));return r.join(`/`)}return e(t).join(`/`)}function n(e){return e?`/${e}`:`/`}const r=/(?:^|\/):/;function i(e){return r.test(e)}export{n as createAbsoluteRoutePath,i as isDynamicRoutePath,t as resolvePath};
@@ -1 +1 @@
1
- const e=/\+/g;function t(t){return decodeURIComponent(t.replace(e,` `))}function n(e){return encodeURIComponent(e)}function r(e,t,n){let r=e[t];if(r===void 0){e[t]=n;return}if(Array.isArray(r)){r.push(n);return}e[t]=[r,n]}function i(e,t,n){let r=e[t];if(r===void 0){e[t]=n;return}if(Array.isArray(r)){r.push(n);return}e[t]=[r,n]}function a(e){if(e!==void 0)return e===null?null:String(e)}function o(e){let t={};for(let n of Object.keys(e)){let i=e[n];if(Array.isArray(i)){for(let e of i){let i=a(e);i!==void 0&&r(t,n,i)}continue}let o=a(i);o!==void 0&&r(t,n,o)}return t}function s(e){if(e!=null)return String(e)}function c(e){let t={};for(let n of Object.keys(e)){let r=e[n];if(Array.isArray(r)){for(let e of r){let r=s(e);r!==void 0&&i(t,n,r)}continue}let a=s(r);a!==void 0&&i(t,n,a)}return t}function l(e){return e?e.startsWith(`#`)?e:`#${e}`:``}function u(e){let n=e.startsWith(`?`)?e.slice(1):e,i={};if(!n)return i;for(let e of n.split(`&`)){if(!e)continue;let n=e.indexOf(`=`),a=n>=0?e.slice(0,n):e;a&&r(i,t(a),n>=0?t(e.slice(n+1)):null)}return i}function d(e={}){let t=o(e),r=[];for(let e of Object.keys(t)){let i=n(e),a=t[e];if(Array.isArray(a)){for(let e of a)e===null?r.push(i):r.push(`${i}=${n(e)}`);continue}if(a===null){r.push(i);continue}r.push(`${i}=${n(a)}`)}return r.join(`&`)}export{l as normalizeHash,o as normalizeQuery,c as normalizeRouteParams,u as parseQuery,d as stringifyQuery};
1
+ const e=/\+/g;function t(t){return decodeURIComponent(t.replace(e,` `))}function n(e){return encodeURIComponent(e)}function r(e,t,n){let r=e[t];r===void 0?e[t]=n:Array.isArray(r)?r.push(n):e[t]=[r,n]}function i(e,t,n){let r=e[t];r===void 0?e[t]=n:Array.isArray(r)?r.push(n):e[t]=[r,n]}function a(e){if(e!==void 0)return e===null?null:String(e)}function o(e){let t={};for(let n of Object.keys(e)){let i=e[n];if(Array.isArray(i)){for(let e of i){let i=a(e);i!==void 0&&r(t,n,i)}continue}let o=a(i);o!==void 0&&r(t,n,o)}return t}function s(e){if(e!=null)return String(e)}function c(e){let t={};for(let n of Object.keys(e)){let r=e[n];if(Array.isArray(r)){for(let e of r){let r=s(e);r!==void 0&&i(t,n,r)}continue}let a=s(r);a!==void 0&&i(t,n,a)}return t}function l(e){return e?e.startsWith(`#`)?e:`#${e}`:``}function u(e){let n=e.startsWith(`?`)?e.slice(1):e,i={};if(!n)return i;for(let e of n.split(`&`)){if(!e)continue;let n=e.indexOf(`=`),a=n>=0?e.slice(0,n):e;a&&r(i,t(a),n>=0?t(e.slice(n+1)):null)}return i}function d(e={}){let t=o(e),r=[];for(let e of Object.keys(t)){let i=n(e),a=t[e];if(Array.isArray(a))for(let e of a)e===null?r.push(i):r.push(`${i}=${n(e)}`);else a===null?r.push(i):r.push(`${i}=${n(a)}`)}return r.join(`&`)}export{l as normalizeHash,o as normalizeQuery,c as normalizeRouteParams,u as parseQuery,d as stringifyQuery};
@@ -1 +1 @@
1
- import{createAbsoluteRoutePath as e,isDynamicRoutePath as t,resolvePath as n}from"./path.mjs";import{warnRouteConfig as r}from"./recordsWarnings.mjs";function i(e){return e?Array.isArray(e)?e:[e]:[]}function a(e,t,n=`namedRoutes`){return typeof e.name==`string`&&e.name.trim()?e.name.trim():n===`routes`?t||`/`:``}function o(e,t){if(!e)return[];let r=Array.isArray(e)?e:[e],i=[];for(let e of r){if(typeof e!=`string`)continue;let r=n(e,``);r&&r!==t&&(i.includes(r)||i.push(r))}return i}function s(e,t,r=`namedRoutes`){let s=n(e.path,``);if(!s&&e.path!==`/`)return;let c=a(e,s,r);if(c)return{name:c,path:s,aliasPaths:o(e.alias,s),parentName:t,meta:e.meta,beforeEnterGuards:i(e.beforeEnter),redirect:e.redirect}}function c(t,r){return!r||t.startsWith(`/`)?n(t,``):n(`${e(r)}/${t}`,``)}function l(e){return e?Array.isArray(e)?e.filter(e=>typeof e==`string`&&e.length>0):typeof e==`string`&&e.length>0?[e]:[]:[]}function u(e){let t=[];for(let n of e)n&&!t.includes(n)&&t.push(n);return t}function d(t){if(t.length!==0)return t.length===1?e(t[0]):t.map(t=>e(t))}function f(t,n,i,o=[],s,p=`namedRoutes`,m=/* @__PURE__ */ new Set){let h=[];for(let[g,_]of t.entries()){let t=`${p}[${g}]`;if(m.has(_)){r(`ignored route record at ${t}: detected circular children reference`);continue}if(typeof _.path!=`string`||!_.path){let e=typeof _?.name==`string`?_.name.trim():``;r(`ignored route record "${e}" at ${t}: route path is required`);continue}let v=c(_.path,n),y=a(_,v,s);if(!y){r(`ignored route record at ${t}: route name is required`);continue}let b=[],x=/* @__PURE__ */ new Map;for(let i of l(_.alias)){let a=c(i,n);if(!a)continue;if(a===v){r(`ignored alias "${e(a)}" for route "${y}" at ${t}: alias is same as route path`);continue}let o=x.get(a);if(o){r(`ignored duplicate alias "${e(a)}" for route "${y}" at ${t}: already declared by "${o}"`);continue}x.set(a,i),b.push(a)}let S=_.path.startsWith(`/`)?[]:o.map(e=>c(_.path,e)).filter(Boolean).filter(e=>e!==v),C=u([...b,...S]),w={name:y,path:v?e(v):`/`,alias:d(C),meta:_.meta,beforeEnter:_.beforeEnter,redirect:_.redirect};if(h.push({route:w,parentName:i,source:s}),Array.isArray(_.children)&&_.children.length>0){let e=new Set(m);e.add(_),h.push(...f(_.children,v,y,C,s,`${t}.children`,e))}}return h}function p(e,t=`namedRoutes`){if(!e)return[];if(Array.isArray(e))return f(e,void 0,void 0,[],t,t);let n=[];for(let[i,a]of Object.entries(e)){let e=typeof i==`string`?i.trim():``;if(!e){r(`ignored route record at ${t}: route name is required`);continue}if(typeof a!=`string`||!a){r(`ignored route record "${e}" at ${t}: route path is required`);continue}n.push({route:{name:e,path:a},source:t})}return n}function m(e){return[...p(e.routes,`routes`),...p(e.namedRoutes,`namedRoutes`)]}function h(e){let n=/* @__PURE__ */ new Map;for(let[r,i]of e.entries()){!t(i.path)&&!n.has(i.path)&&n.set(i.path,r);for(let e of i.aliasPaths)!t(e)&&!n.has(e)&&n.set(e,r)}return n}function g(e){let t=/* @__PURE__ */ new Map;for(let n of e){let e=s(n.route,n.parentName,n.source);e&&t.set(e.name,e)}return{recordByName:t,nameByStaticPath:h(t)}}export{g as createNamedRouteLookup,h as createNamedRouteNameByStaticPath,d as createRouteRecordAliasValue,f as flattenNamedRouteRecords,s as normalizeRouteRecordRaw,m as resolveRouteOptionEntries};
1
+ import{createAbsoluteRoutePath as e,isDynamicRoutePath as t,resolvePath as n}from"./path.mjs";import{warnRouteConfig as r}from"./recordsWarnings.mjs";function i(e){return e?Array.isArray(e)?e:[e]:[]}function a(e,t,n=`namedRoutes`){return typeof e.name==`string`&&e.name.trim()?e.name.trim():n===`routes`?t||`/`:``}function o(e,t){if(!e)return[];let r=Array.isArray(e)?e:[e],i=[];for(let e of r){if(typeof e!=`string`)continue;let r=n(e,``);r&&r!==t&&(i.includes(r)||i.push(r))}return i}function s(e,t,r=`namedRoutes`){let s=n(e.path,``);if(!s&&e.path!==`/`)return;let c=a(e,s,r);if(c)return{name:c,path:s,aliasPaths:o(e.alias,s),parentName:t,meta:e.meta,beforeEnterGuards:i(e.beforeEnter),redirect:e.redirect}}function c(t,r){return!r||t.startsWith(`/`)?n(t,``):n(`${e(r)}/${t}`,``)}function l(e){return e?Array.isArray(e)?e.filter(e=>typeof e==`string`&&e.length>0):typeof e==`string`&&e.length>0?[e]:[]:[]}function u(e){let t=[];for(let n of e)n&&!t.includes(n)&&t.push(n);return t}function d(t){if(t.length!==0)return t.length===1?e(t[0]):t.map(t=>e(t))}function f(t,n,i,o=[],s,p=`namedRoutes`,m=/* @__PURE__ */ new Set){let h=[];for(let[g,_]of t.entries()){let t=`${p}[${g}]`;if(m.has(_)){r(`ignored route record at ${t}: detected circular children reference`);continue}if(typeof _.path!=`string`||!_.path){let e=typeof _?.name==`string`?_.name.trim():``;r(`ignored route record "${e}" at ${t}: route path is required`);continue}let v=c(_.path,n),y=a(_,v,s);if(!y){r(`ignored route record at ${t}: route name is required`);continue}let b=[],x=/* @__PURE__ */ new Map;for(let i of l(_.alias)){let a=c(i,n);if(!a)continue;if(a===v){r(`ignored alias "${e(a)}" for route "${y}" at ${t}: alias is same as route path`);continue}let o=x.get(a);o?r(`ignored duplicate alias "${e(a)}" for route "${y}" at ${t}: already declared by "${o}"`):(x.set(a,i),b.push(a))}let S=_.path.startsWith(`/`)?[]:o.map(e=>c(_.path,e)).filter(Boolean).filter(e=>e!==v),C=u([...b,...S]),w={name:y,path:v?e(v):`/`,alias:d(C),meta:_.meta,beforeEnter:_.beforeEnter,redirect:_.redirect};if(h.push({route:w,parentName:i,source:s}),Array.isArray(_.children)&&_.children.length>0){let e=new Set(m);e.add(_),h.push(...f(_.children,v,y,C,s,`${t}.children`,e))}}return h}function p(e,t=`namedRoutes`){if(!e)return[];if(Array.isArray(e))return f(e,void 0,void 0,[],t,t);let n=[];for(let[i,a]of Object.entries(e)){let e=typeof i==`string`?i.trim():``;e?typeof a!=`string`||!a?r(`ignored route record "${e}" at ${t}: route path is required`):n.push({route:{name:e,path:a},source:t}):r(`ignored route record at ${t}: route name is required`)}return n}function m(e){return[...p(e.routes,`routes`),...p(e.namedRoutes,`namedRoutes`)]}function h(e){let n=/* @__PURE__ */ new Map;for(let[r,i]of e.entries()){!t(i.path)&&!n.has(i.path)&&n.set(i.path,r);for(let e of i.aliasPaths)!t(e)&&!n.has(e)&&n.set(e,r)}return n}function g(e){let t=/* @__PURE__ */ new Map;for(let n of e){let e=s(n.route,n.parentName,n.source);e&&t.set(e.name,e)}return{recordByName:t,nameByStaticPath:h(t)}}export{g as createNamedRouteLookup,h as createNamedRouteNameByStaticPath,d as createRouteRecordAliasValue,f as flattenNamedRouteRecords,s as normalizeRouteRecordRaw,m as resolveRouteOptionEntries};