wevu 7.2.2 → 7.4.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.
- package/README.md +6 -0
- package/dist/dev/_virtual/{_@oxc-project_runtime@0.150.0 → _@oxc-project_runtime@0.151.0}/helpers/esm/defineProperty.mjs +1 -1
- package/dist/dev/_virtual/{_@oxc-project_runtime@0.150.0 → _@oxc-project_runtime@0.151.0}/helpers/esm/toPrimitive.mjs +1 -1
- package/dist/dev/_virtual/{_@oxc-project_runtime@0.150.0 → _@oxc-project_runtime@0.151.0}/helpers/esm/toPropertyKey.mjs +1 -1
- package/dist/dev/_virtual/{_@oxc-project_runtime@0.150.0 → _@oxc-project_runtime@0.151.0}/helpers/esm/typeof.mjs +1 -1
- package/dist/dev/internal-runtime.d.mts +2 -1
- package/dist/dev/internal-runtime.mjs +3 -2
- package/dist/dev/package.mjs +1 -1
- package/dist/dev/reactivity/asyncDerivation.mjs +8 -10
- package/dist/dev/reactivity/asyncDerivation.mjs.map +1 -1
- package/dist/dev/reactivity/core.mjs +5 -8
- package/dist/dev/reactivity/core.mjs.map +1 -1
- package/dist/dev/reactivity/reactive/patch.mjs +3 -3
- package/dist/dev/reactivity/reactive/patch.mjs.map +1 -1
- package/dist/dev/reactivity/reactive/patchState.mjs +4 -8
- package/dist/dev/reactivity/reactive/patchState.mjs.map +1 -1
- package/dist/dev/reactivity/reactive/shared.mjs +1 -2
- package/dist/dev/reactivity/reactive/shared.mjs.map +1 -1
- package/dist/dev/reactivity/reactive.mjs +5 -10
- package/dist/dev/reactivity/reactive.mjs.map +1 -1
- package/dist/dev/reactivity/ref.mjs +2 -2
- package/dist/dev/reactivity/ref.mjs.map +1 -1
- package/dist/dev/reactivity/shallowRef.mjs +1 -1
- package/dist/dev/reactivity/shallowRef.mjs.map +1 -1
- package/dist/dev/reactivity/watch/helpers.mjs +1 -1
- package/dist/dev/reactivity/watch/helpers.mjs.map +1 -1
- package/dist/dev/reactivity/watch.mjs +6 -8
- package/dist/dev/reactivity/watch.mjs.map +1 -1
- package/dist/dev/router/createRouter.mjs +17 -24
- package/dist/dev/router/createRouter.mjs.map +1 -1
- package/dist/dev/router/initialNavigation.mjs +22 -17
- package/dist/dev/router/initialNavigation.mjs.map +1 -1
- package/dist/dev/router/instance.mjs +1 -2
- package/dist/dev/router/instance.mjs.map +1 -1
- package/dist/dev/router/navigationCore.mjs +2 -2
- package/dist/dev/router/navigationCore.mjs.map +1 -1
- package/dist/dev/router/navigationResult.mjs +7 -10
- package/dist/dev/router/navigationResult.mjs.map +1 -1
- package/dist/dev/router/navigationTarget.mjs +1 -3
- package/dist/dev/router/navigationTarget.mjs.map +1 -1
- package/dist/dev/router/resolve.mjs +3 -4
- package/dist/dev/router/resolve.mjs.map +1 -1
- package/dist/dev/router/routeRegistry.mjs +1 -1
- package/dist/dev/router/routeRegistry.mjs.map +1 -1
- package/dist/dev/router/routeSync.mjs +1 -1
- package/dist/dev/router/routeSync.mjs.map +1 -1
- package/dist/dev/router/scrollRestoration/adapters.d.mts +8 -0
- package/dist/dev/router/scrollRestoration/adapters.mjs +86 -0
- package/dist/dev/router/scrollRestoration/adapters.mjs.map +1 -0
- package/dist/dev/router/scrollRestoration/controller.d.mts +8 -0
- package/dist/dev/router/scrollRestoration/controller.mjs +148 -0
- package/dist/dev/router/scrollRestoration/controller.mjs.map +1 -0
- package/dist/dev/router/scrollRestoration/host.d.mts +3 -0
- package/dist/dev/router/scrollRestoration/host.mjs +76 -0
- package/dist/dev/router/scrollRestoration/host.mjs.map +1 -0
- package/dist/dev/router/scrollRestoration/index.d.mts +9 -0
- package/dist/dev/router/scrollRestoration/index.mjs +156 -0
- package/dist/dev/router/scrollRestoration/index.mjs.map +1 -0
- package/dist/dev/router/scrollRestoration/types.d.mts +61 -0
- package/dist/dev/router/useRoute.mjs +12 -19
- package/dist/dev/router/useRoute.mjs.map +1 -1
- package/dist/dev/router.d.mts +5 -1
- package/dist/dev/router.mjs +4 -1
- package/dist/dev/routerInternal/location.mjs +2 -3
- package/dist/dev/routerInternal/location.mjs.map +1 -1
- package/dist/dev/routerInternal/params.mjs +2 -3
- package/dist/dev/routerInternal/params.mjs.map +1 -1
- package/dist/dev/routerInternal/records.mjs +1 -1
- package/dist/dev/routerInternal/records.mjs.map +1 -1
- package/dist/dev/routerInternal/recordsWarnings.mjs +1 -2
- package/dist/dev/routerInternal/recordsWarnings.mjs.map +1 -1
- package/dist/dev/runtime/app/context.mjs +13 -26
- package/dist/dev/runtime/app/context.mjs.map +1 -1
- package/dist/dev/runtime/app/diagnostics.mjs +2 -4
- package/dist/dev/runtime/app/diagnostics.mjs.map +1 -1
- package/dist/dev/runtime/app/mount.mjs +27 -33
- package/dist/dev/runtime/app/mount.mjs.map +1 -1
- package/dist/dev/runtime/app/setData/commitTracker.mjs +5 -9
- package/dist/dev/runtime/app/setData/commitTracker.mjs.map +1 -1
- package/dist/dev/runtime/app/setData/patchScheduler.mjs +2 -4
- package/dist/dev/runtime/app/setData/patchScheduler.mjs.map +1 -1
- package/dist/dev/runtime/app/setData/payload.mjs +2 -3
- package/dist/dev/runtime/app/setData/payload.mjs.map +1 -1
- package/dist/dev/runtime/app/setData/scheduler.mjs +7 -9
- package/dist/dev/runtime/app/setData/scheduler.mjs.map +1 -1
- package/dist/dev/runtime/app/setData/snapshot.mjs +5 -6
- package/dist/dev/runtime/app/setData/snapshot.mjs.map +1 -1
- package/dist/dev/runtime/app/setDataOptions.mjs +26 -27
- package/dist/dev/runtime/app/setDataOptions.mjs.map +1 -1
- package/dist/dev/runtime/app.mjs +9 -9
- package/dist/dev/runtime/app.mjs.map +1 -1
- package/dist/dev/runtime/bindingManifest.mjs +6 -14
- package/dist/dev/runtime/bindingManifest.mjs.map +1 -1
- package/dist/dev/runtime/capabilities.d.mts +4 -1
- package/dist/dev/runtime/capabilities.mjs.map +1 -1
- package/dist/dev/runtime/css.mjs +4 -8
- package/dist/dev/runtime/css.mjs.map +1 -1
- package/dist/dev/runtime/defaults.mjs +4 -4
- package/dist/dev/runtime/defaults.mjs.map +1 -1
- package/dist/dev/runtime/define/initialComputed.mjs +5 -5
- package/dist/dev/runtime/define/initialComputed.mjs.map +1 -1
- package/dist/dev/runtime/define/options.mjs +10 -12
- package/dist/dev/runtime/define/options.mjs.map +1 -1
- package/dist/dev/runtime/define/props.mjs +4 -5
- package/dist/dev/runtime/define/props.mjs.map +1 -1
- package/dist/dev/runtime/define/scopedSlotOptions.mjs +43 -61
- package/dist/dev/runtime/define/scopedSlotOptions.mjs.map +1 -1
- package/dist/dev/runtime/define/setupResult.mjs +17 -28
- package/dist/dev/runtime/define/setupResult.mjs.map +1 -1
- package/dist/dev/runtime/define.mjs +9 -12
- package/dist/dev/runtime/define.mjs.map +1 -1
- package/dist/dev/runtime/diff.mjs +9 -11
- package/dist/dev/runtime/diff.mjs.map +1 -1
- package/dist/dev/runtime/disposables.mjs +2 -2
- package/dist/dev/runtime/disposables.mjs.map +1 -1
- package/dist/dev/runtime/elementIntersectionObserver.mjs +16 -24
- package/dist/dev/runtime/elementIntersectionObserver.mjs.map +1 -1
- package/dist/dev/runtime/features/inlineEvents.mjs +2 -3
- package/dist/dev/runtime/features/inlineEvents.mjs.map +1 -1
- package/dist/dev/runtime/features/jsxIslands.d.mts +7 -0
- package/dist/dev/runtime/features/jsxIslands.mjs +20 -0
- package/dist/dev/runtime/features/jsxIslands.mjs.map +1 -0
- package/dist/dev/runtime/features/layout.mjs +2 -3
- package/dist/dev/runtime/features/layout.mjs.map +1 -1
- package/dist/dev/runtime/features/publicLayout.mjs +2 -6
- package/dist/dev/runtime/features/publicLayout.mjs.map +1 -1
- package/dist/dev/runtime/features/scopedSlots.mjs +5 -9
- package/dist/dev/runtime/features/scopedSlots.mjs.map +1 -1
- package/dist/dev/runtime/features/templateRefs.mjs +1 -1
- package/dist/dev/runtime/features/templateRefs.mjs.map +1 -1
- package/dist/dev/runtime/hooks/base.mjs +20 -43
- package/dist/dev/runtime/hooks/base.mjs.map +1 -1
- package/dist/dev/runtime/hooks/pageScroll.mjs +41 -0
- package/dist/dev/runtime/hooks/pageScroll.mjs.map +1 -0
- package/dist/dev/runtime/hooks/register.mjs +2 -1
- package/dist/dev/runtime/hooks/register.mjs.map +1 -1
- package/dist/dev/runtime/inlineDataset.mjs +1 -2
- package/dist/dev/runtime/inlineDataset.mjs.map +1 -1
- package/dist/dev/runtime/intersectionObserver.mjs +6 -6
- package/dist/dev/runtime/intersectionObserver.mjs.map +1 -1
- package/dist/dev/runtime/jsxIsland.mjs +16 -33
- package/dist/dev/runtime/jsxIsland.mjs.map +1 -1
- package/dist/dev/runtime/layoutBridge.mjs +32 -62
- package/dist/dev/runtime/layoutBridge.mjs.map +1 -1
- package/dist/dev/runtime/nativeBridge.mjs +1 -1
- package/dist/dev/runtime/nativeBridge.mjs.map +1 -1
- package/dist/dev/runtime/navigationLifecycle.mjs +24 -0
- package/dist/dev/runtime/navigationLifecycle.mjs.map +1 -0
- package/dist/dev/runtime/pageEnvironment.mjs +15 -18
- package/dist/dev/runtime/pageEnvironment.mjs.map +1 -1
- package/dist/dev/runtime/pageLayout.mjs +7 -11
- package/dist/dev/runtime/pageLayout.mjs.map +1 -1
- package/dist/dev/runtime/pageScroll.mjs +2 -3
- package/dist/dev/runtime/pageScroll.mjs.map +1 -1
- package/dist/dev/runtime/platform/current.mjs +12 -0
- package/dist/dev/runtime/platform/current.mjs.map +1 -0
- package/dist/dev/runtime/platform/generic.mjs +36 -0
- package/dist/dev/runtime/platform/generic.mjs.map +1 -0
- package/dist/dev/runtime/platform/globals.mjs +29 -0
- package/dist/dev/runtime/platform/globals.mjs.map +1 -0
- package/dist/dev/runtime/platform.mjs +15 -60
- package/dist/dev/runtime/platform.mjs.map +1 -1
- package/dist/dev/runtime/provideContext.mjs +7 -9
- package/dist/dev/runtime/provideContext.mjs.map +1 -1
- package/dist/dev/runtime/publicRuntime.mjs +4 -0
- package/dist/dev/runtime/publicRuntime.mjs.map +1 -1
- package/dist/dev/runtime/pullDownRefresh.mjs +2 -4
- package/dist/dev/runtime/pullDownRefresh.mjs.map +1 -1
- package/dist/dev/runtime/register/app.mjs +18 -19
- package/dist/dev/runtime/register/app.mjs.map +1 -1
- package/dist/dev/runtime/register/component/alipay.mjs +9 -18
- package/dist/dev/runtime/register/component/alipay.mjs.map +1 -1
- package/dist/dev/runtime/register/component/alipayRegistration.mjs +60 -0
- package/dist/dev/runtime/register/component/alipayRegistration.mjs.map +1 -0
- package/dist/dev/runtime/register/component/lifecycle/optionalHooks.mjs +2 -5
- package/dist/dev/runtime/register/component/lifecycle/optionalHooks.mjs.map +1 -1
- package/dist/dev/runtime/register/component/lifecycle/platform.mjs +13 -26
- package/dist/dev/runtime/register/component/lifecycle/platform.mjs.map +1 -1
- package/dist/dev/runtime/register/component/lifecycle.mjs +7 -12
- package/dist/dev/runtime/register/component/lifecycle.mjs.map +1 -1
- package/dist/dev/runtime/register/component/methods.mjs +13 -18
- package/dist/dev/runtime/register/component/methods.mjs.map +1 -1
- package/dist/dev/runtime/register/component/options.mjs +3 -4
- package/dist/dev/runtime/register/component/options.mjs.map +1 -1
- package/dist/dev/runtime/register/component/props.mjs +25 -31
- package/dist/dev/runtime/register/component/props.mjs.map +1 -1
- package/dist/dev/runtime/register/component/registerDefinition.mjs +21 -40
- package/dist/dev/runtime/register/component/registerDefinition.mjs.map +1 -1
- package/dist/dev/runtime/register/component/registerNativeDefinition.mjs +18 -60
- package/dist/dev/runtime/register/component/registerNativeDefinition.mjs.map +1 -1
- package/dist/dev/runtime/register/component.mjs +3 -5
- package/dist/dev/runtime/register/component.mjs.map +1 -1
- package/dist/dev/runtime/register/inline.mjs +8 -10
- package/dist/dev/runtime/register/inline.mjs.map +1 -1
- package/dist/dev/runtime/register/runtimeInstance/methodBridge.mjs +7 -8
- package/dist/dev/runtime/register/runtimeInstance/methodBridge.mjs.map +1 -1
- package/dist/dev/runtime/register/runtimeInstance/provideContext.mjs +1 -1
- package/dist/dev/runtime/register/runtimeInstance/provideContext.mjs.map +1 -1
- package/dist/dev/runtime/register/runtimeInstance/setupContext.mjs +25 -34
- package/dist/dev/runtime/register/runtimeInstance/setupContext.mjs.map +1 -1
- package/dist/dev/runtime/register/runtimeInstance/setupPhase.mjs +13 -15
- package/dist/dev/runtime/register/runtimeInstance/setupPhase.mjs.map +1 -1
- package/dist/dev/runtime/register/runtimeInstance/setupSnapshot.mjs +2 -2
- package/dist/dev/runtime/register/runtimeInstance/setupSnapshot.mjs.map +1 -1
- package/dist/dev/runtime/register/runtimeInstance/utils.mjs +9 -9
- package/dist/dev/runtime/register/runtimeInstance/utils.mjs.map +1 -1
- package/dist/dev/runtime/register/runtimeInstance.mjs +74 -100
- package/dist/dev/runtime/register/runtimeInstance.mjs.map +1 -1
- package/dist/dev/runtime/register/setDataFrequencyWarning.mjs +12 -15
- package/dist/dev/runtime/register/setDataFrequencyWarning.mjs.map +1 -1
- package/dist/dev/runtime/register/setup.mjs +2 -3
- package/dist/dev/runtime/register/setup.mjs.map +1 -1
- package/dist/dev/runtime/register/snapshot.mjs +1 -4
- package/dist/dev/runtime/register/snapshot.mjs.map +1 -1
- package/dist/dev/runtime/register/watch.mjs +3 -5
- package/dist/dev/runtime/register/watch.mjs.map +1 -1
- package/dist/dev/runtime/scopedSlots.mjs +14 -21
- package/dist/dev/runtime/scopedSlots.mjs.map +1 -1
- package/dist/dev/runtime/selectorQuery.mjs +5 -9
- package/dist/dev/runtime/selectorQuery.mjs.map +1 -1
- package/dist/dev/runtime/template.mjs +1 -1
- package/dist/dev/runtime/template.mjs.map +1 -1
- package/dist/dev/runtime/templateRefs/helpers.mjs +14 -24
- package/dist/dev/runtime/templateRefs/helpers.mjs.map +1 -1
- package/dist/dev/runtime/templateRefs.mjs +8 -15
- package/dist/dev/runtime/templateRefs.mjs.map +1 -1
- package/dist/dev/runtime/uniAppHost.mjs +6 -14
- package/dist/dev/runtime/uniAppHost.mjs.map +1 -1
- package/dist/dev/runtime/updatePerformance.mjs +1 -1
- package/dist/dev/runtime/updatePerformance.mjs.map +1 -1
- package/dist/dev/runtime/use.mjs +1 -1
- package/dist/dev/runtime/use.mjs.map +1 -1
- package/dist/dev/runtime/vueCompat/context.mjs +3 -5
- package/dist/dev/runtime/vueCompat/context.mjs.map +1 -1
- package/dist/dev/runtime/vueCompat/model.mjs +9 -13
- package/dist/dev/runtime/vueCompat/model.mjs.map +1 -1
- package/dist/dev/runtime/vueCompat/router.mjs +4 -4
- package/dist/dev/runtime/vueCompat/router.mjs.map +1 -1
- package/dist/dev/runtime/vueCompat/templateRef.mjs +1 -1
- package/dist/dev/runtime/vueCompat/templateRef.mjs.map +1 -1
- package/dist/dev/scheduler.mjs +3 -4
- package/dist/dev/scheduler.mjs.map +1 -1
- package/dist/dev/store/base.mjs +1 -2
- package/dist/dev/store/base.mjs.map +1 -1
- package/dist/dev/store/define/create.mjs +11 -22
- package/dist/dev/store/define/create.mjs.map +1 -1
- package/dist/dev/store/define.mjs +1 -1
- package/dist/dev/store/define.mjs.map +1 -1
- package/dist/dev/store/view.mjs +1 -1
- package/dist/dev/store/view.mjs.map +1 -1
- package/dist/internal-runtime.d.mts +2 -1
- package/dist/internal-runtime.mjs +1 -1
- package/dist/package.mjs +1 -1
- package/dist/reactivity/asyncDerivation.mjs +1 -1
- package/dist/reactivity/core.mjs +1 -1
- package/dist/reactivity/reactive/patch.mjs +1 -1
- package/dist/reactivity/reactive/patchState.mjs +1 -1
- package/dist/reactivity/reactive/shared.mjs +1 -1
- package/dist/reactivity/reactive.mjs +1 -1
- package/dist/reactivity/ref.mjs +1 -1
- package/dist/reactivity/shallowRef.mjs +1 -1
- package/dist/reactivity/watch/helpers.mjs +1 -1
- package/dist/reactivity/watch.mjs +1 -1
- package/dist/router/createRouter.mjs +1 -1
- package/dist/router/initialNavigation.mjs +1 -1
- package/dist/router/instance.mjs +1 -1
- package/dist/router/navigationCore.mjs +1 -1
- package/dist/router/navigationResult.mjs +1 -1
- package/dist/router/navigationTarget.mjs +1 -1
- package/dist/router/resolve.mjs +1 -1
- package/dist/router/routeRegistry.mjs +1 -1
- package/dist/router/routeSync.mjs +1 -1
- package/dist/router/scrollRestoration/adapters.d.mts +7 -0
- package/dist/router/scrollRestoration/adapters.mjs +1 -0
- package/dist/router/scrollRestoration/controller.d.mts +7 -0
- package/dist/router/scrollRestoration/controller.mjs +1 -0
- package/dist/router/scrollRestoration/host.d.mts +3 -0
- package/dist/router/scrollRestoration/host.mjs +1 -0
- package/dist/router/scrollRestoration/index.d.mts +8 -0
- package/dist/router/scrollRestoration/index.mjs +1 -0
- package/dist/router/scrollRestoration/types.d.mts +60 -0
- package/dist/router/useRoute.mjs +1 -1
- package/dist/router.d.mts +5 -1
- package/dist/router.mjs +1 -1
- package/dist/routerInternal/location.mjs +1 -1
- package/dist/routerInternal/params.mjs +1 -1
- package/dist/routerInternal/records.mjs +1 -1
- package/dist/routerInternal/recordsWarnings.mjs +1 -1
- package/dist/runtime/app/context.mjs +1 -1
- package/dist/runtime/app/diagnostics.mjs +1 -1
- package/dist/runtime/app/mount.mjs +1 -1
- package/dist/runtime/app/setData/commitTracker.mjs +1 -1
- package/dist/runtime/app/setData/patchScheduler.mjs +1 -1
- package/dist/runtime/app/setData/payload.mjs +1 -1
- package/dist/runtime/app/setData/scheduler.mjs +1 -1
- package/dist/runtime/app/setData/snapshot.mjs +1 -1
- package/dist/runtime/app/setDataOptions.mjs +1 -1
- package/dist/runtime/app.mjs +1 -1
- package/dist/runtime/bindingManifest.mjs +1 -1
- package/dist/runtime/capabilities.d.mts +4 -1
- package/dist/runtime/css.mjs +1 -1
- package/dist/runtime/defaults.mjs +1 -1
- package/dist/runtime/define/initialComputed.mjs +1 -1
- package/dist/runtime/define/options.mjs +1 -1
- package/dist/runtime/define/props.mjs +1 -1
- package/dist/runtime/define/scopedSlotOptions.mjs +1 -1
- package/dist/runtime/define/setupResult.mjs +1 -1
- package/dist/runtime/define.mjs +1 -1
- package/dist/runtime/diff.mjs +1 -1
- package/dist/runtime/disposables.mjs +1 -1
- package/dist/runtime/elementIntersectionObserver.mjs +1 -1
- package/dist/runtime/features/inlineEvents.mjs +1 -1
- package/dist/runtime/features/jsxIslands.d.mts +6 -0
- package/dist/runtime/features/jsxIslands.mjs +1 -0
- package/dist/runtime/features/layout.mjs +1 -1
- package/dist/runtime/features/publicLayout.mjs +1 -1
- package/dist/runtime/features/scopedSlots.mjs +1 -1
- package/dist/runtime/features/templateRefs.mjs +1 -1
- package/dist/runtime/hooks/base.mjs +1 -1
- package/dist/runtime/hooks/pageScroll.mjs +1 -0
- package/dist/runtime/hooks/register.mjs +1 -1
- package/dist/runtime/inlineDataset.mjs +1 -1
- package/dist/runtime/intersectionObserver.mjs +1 -1
- package/dist/runtime/jsxIsland.mjs +1 -1
- package/dist/runtime/layoutBridge.mjs +1 -1
- package/dist/runtime/nativeBridge.mjs +1 -1
- package/dist/runtime/navigationLifecycle.mjs +1 -0
- package/dist/runtime/pageEnvironment.mjs +1 -1
- package/dist/runtime/pageLayout.mjs +1 -1
- package/dist/runtime/pageScroll.mjs +1 -1
- package/dist/runtime/platform/current.mjs +1 -0
- package/dist/runtime/platform/generic.mjs +1 -0
- package/dist/runtime/platform/globals.mjs +1 -0
- package/dist/runtime/platform.mjs +1 -1
- package/dist/runtime/provideContext.mjs +1 -1
- package/dist/runtime/publicRuntime.mjs +1 -1
- package/dist/runtime/pullDownRefresh.mjs +1 -1
- package/dist/runtime/register/app.mjs +1 -1
- package/dist/runtime/register/component/alipay.mjs +1 -1
- package/dist/runtime/register/component/alipayRegistration.mjs +1 -0
- package/dist/runtime/register/component/lifecycle/optionalHooks.mjs +1 -1
- package/dist/runtime/register/component/lifecycle/platform.mjs +1 -1
- package/dist/runtime/register/component/lifecycle.mjs +1 -1
- package/dist/runtime/register/component/methods.mjs +1 -1
- package/dist/runtime/register/component/options.mjs +1 -1
- package/dist/runtime/register/component/props.mjs +1 -1
- package/dist/runtime/register/component/registerDefinition.mjs +1 -1
- package/dist/runtime/register/component/registerNativeDefinition.mjs +1 -1
- package/dist/runtime/register/component.mjs +1 -1
- package/dist/runtime/register/inline.mjs +1 -1
- package/dist/runtime/register/runtimeInstance/methodBridge.mjs +1 -1
- package/dist/runtime/register/runtimeInstance/provideContext.mjs +1 -1
- package/dist/runtime/register/runtimeInstance/setupContext.mjs +1 -1
- package/dist/runtime/register/runtimeInstance/setupPhase.mjs +1 -1
- package/dist/runtime/register/runtimeInstance/setupSnapshot.mjs +1 -1
- package/dist/runtime/register/runtimeInstance/utils.mjs +1 -1
- package/dist/runtime/register/runtimeInstance.mjs +1 -1
- package/dist/runtime/register/setDataFrequencyWarning.mjs +1 -1
- package/dist/runtime/register/setup.mjs +1 -1
- package/dist/runtime/register/snapshot.mjs +1 -1
- package/dist/runtime/register/watch.mjs +1 -1
- package/dist/runtime/scopedSlots.mjs +1 -1
- package/dist/runtime/selectorQuery.mjs +1 -1
- package/dist/runtime/template.mjs +1 -1
- package/dist/runtime/templateRefs/helpers.mjs +1 -1
- package/dist/runtime/templateRefs.mjs +1 -1
- package/dist/runtime/uniAppHost.mjs +1 -1
- package/dist/runtime/updatePerformance.mjs +1 -1
- package/dist/runtime/use.mjs +1 -1
- package/dist/runtime/vueCompat/context.mjs +1 -1
- package/dist/runtime/vueCompat/model.mjs +1 -1
- package/dist/runtime/vueCompat/router.mjs +1 -1
- package/dist/runtime/vueCompat/templateRef.mjs +1 -1
- package/dist/scheduler.mjs +1 -1
- package/dist/store/base.mjs +1 -1
- package/dist/store/define/create.mjs +1 -1
- package/dist/store/define.mjs +1 -1
- package/dist/store/view.mjs +1 -1
- package/package.json +7 -7
- /package/dist/_virtual/{_@oxc-project_runtime@0.150.0 → _@oxc-project_runtime@0.151.0}/helpers/esm/defineProperty.mjs +0 -0
- /package/dist/_virtual/{_@oxc-project_runtime@0.150.0 → _@oxc-project_runtime@0.151.0}/helpers/esm/toPrimitive.mjs +0 -0
- /package/dist/_virtual/{_@oxc-project_runtime@0.150.0 → _@oxc-project_runtime@0.151.0}/helpers/esm/toPropertyKey.mjs +0 -0
- /package/dist/_virtual/{_@oxc-project_runtime@0.150.0 → _@oxc-project_runtime@0.151.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":"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"}
|
|
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,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getCurrentMiniProgramGlobalObject } from "../platform/current.mjs";
|
|
2
|
+
import { getCurrentMiniProgramHostConfig, getMiniProgramRuntimeConsoleWarn } from "../platform.mjs";
|
|
2
3
|
|
|
3
4
|
//#region src/runtime/register/setDataFrequencyWarning.ts
|
|
4
5
|
function isObject(value) {
|
|
@@ -8,7 +9,6 @@ function isObject(value) {
|
|
|
8
9
|
* 解析 setData 高频告警配置。
|
|
9
10
|
*/
|
|
10
11
|
function resolveHighFrequencyWarningOptions(option) {
|
|
11
|
-
var _option$enabled, _option$devOnly, _option$warnOnPageScr;
|
|
12
12
|
const defaults = {
|
|
13
13
|
devOnly: true,
|
|
14
14
|
sampleWindowMs: 1e3,
|
|
@@ -30,12 +30,12 @@ function resolveHighFrequencyWarningOptions(option) {
|
|
|
30
30
|
enabled: false
|
|
31
31
|
};
|
|
32
32
|
return {
|
|
33
|
-
enabled:
|
|
34
|
-
devOnly:
|
|
33
|
+
enabled: option.enabled ?? true,
|
|
34
|
+
devOnly: option.devOnly ?? defaults.devOnly,
|
|
35
35
|
sampleWindowMs: typeof option.sampleWindowMs === "number" ? Math.max(100, Math.floor(option.sampleWindowMs)) : defaults.sampleWindowMs,
|
|
36
36
|
maxCalls: typeof option.maxCalls === "number" ? Math.max(1, Math.floor(option.maxCalls)) : defaults.maxCalls,
|
|
37
37
|
coolDownMs: typeof option.coolDownMs === "number" ? Math.max(0, Math.floor(option.coolDownMs)) : defaults.coolDownMs,
|
|
38
|
-
warnOnPageScroll:
|
|
38
|
+
warnOnPageScroll: option.warnOnPageScroll ?? defaults.warnOnPageScroll,
|
|
39
39
|
pageScrollCoolDownMs: typeof option.pageScrollCoolDownMs === "number" ? Math.max(0, Math.floor(option.pageScrollCoolDownMs)) : defaults.pageScrollCoolDownMs
|
|
40
40
|
};
|
|
41
41
|
}
|
|
@@ -44,25 +44,23 @@ function resolveHighFrequencyWarningOptions(option) {
|
|
|
44
44
|
*/
|
|
45
45
|
function isDevelopmentRuntime() {
|
|
46
46
|
const miniProgramHostConfig = getCurrentMiniProgramHostConfig();
|
|
47
|
-
if (
|
|
48
|
-
const miniProgramGlobal =
|
|
47
|
+
if (miniProgramHostConfig?.debug === true || miniProgramHostConfig?.envVersion === "develop") return true;
|
|
48
|
+
const miniProgramGlobal = getCurrentMiniProgramGlobalObject();
|
|
49
49
|
try {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
} catch (_unused) {}
|
|
50
|
+
if (miniProgramGlobal?.getAccountInfoSync?.()?.miniProgram?.envVersion === "develop") return true;
|
|
51
|
+
} catch {}
|
|
53
52
|
return false;
|
|
54
53
|
}
|
|
55
54
|
/**
|
|
56
55
|
* 创建 setData 高频调用告警监视器。
|
|
57
56
|
*/
|
|
58
57
|
function createSetDataHighFrequencyWarningMonitor(options) {
|
|
59
|
-
var _options$now, _options$logger;
|
|
60
58
|
const resolved = resolveHighFrequencyWarningOptions(options.option);
|
|
61
59
|
if (!resolved.enabled) return;
|
|
62
60
|
const isDev = isDevelopmentRuntime();
|
|
63
61
|
if (resolved.devOnly && !isDev) return;
|
|
64
|
-
const now =
|
|
65
|
-
const logger =
|
|
62
|
+
const now = options.now ?? (() => Date.now());
|
|
63
|
+
const logger = options.logger ?? ((message) => {
|
|
66
64
|
const runtimeConsoleWarn = getMiniProgramRuntimeConsoleWarn();
|
|
67
65
|
if (typeof runtimeConsoleWarn === "function") runtimeConsoleWarn(message);
|
|
68
66
|
});
|
|
@@ -70,12 +68,11 @@ function createSetDataHighFrequencyWarningMonitor(options) {
|
|
|
70
68
|
let lastWarnAt = Number.NEGATIVE_INFINITY;
|
|
71
69
|
let lastPageScrollWarnAt = Number.NEGATIVE_INFINITY;
|
|
72
70
|
return () => {
|
|
73
|
-
var _options$isInPageScro, _options$isInPageScro2;
|
|
74
71
|
const current = now();
|
|
75
72
|
callTimes.push(current);
|
|
76
73
|
const windowStart = current - resolved.sampleWindowMs;
|
|
77
74
|
while (callTimes.length > 0 && callTimes[0] < windowStart) callTimes.shift();
|
|
78
|
-
const inPageScrollHook =
|
|
75
|
+
const inPageScrollHook = options.isInPageScrollHook?.() ?? false;
|
|
79
76
|
if (resolved.warnOnPageScroll && inPageScrollHook) {
|
|
80
77
|
if (resolved.pageScrollCoolDownMs <= 0 || current - lastPageScrollWarnAt >= resolved.pageScrollCoolDownMs) {
|
|
81
78
|
lastPageScrollWarnAt = current;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setDataFrequencyWarning.mjs","names":[],"sources":["../../../../src/runtime/register/setDataFrequencyWarning.ts"],"sourcesContent":["import type { HighFrequencyWarningMonitorOptions } from '../capabilities'\nimport type { SetDataSnapshotOptions } from '../types'\nimport {
|
|
1
|
+
{"version":3,"file":"setDataFrequencyWarning.mjs","names":[],"sources":["../../../../src/runtime/register/setDataFrequencyWarning.ts"],"sourcesContent":["import type { HighFrequencyWarningMonitorOptions } from '../capabilities'\nimport type { SetDataSnapshotOptions } from '../types'\nimport { getCurrentMiniProgramGlobalObject, getCurrentMiniProgramHostConfig, getMiniProgramRuntimeConsoleWarn } from '../platform'\n\ninterface ResolvedHighFrequencyWarningOptions {\n enabled: boolean\n devOnly: boolean\n sampleWindowMs: number\n maxCalls: number\n coolDownMs: number\n warnOnPageScroll: boolean\n pageScrollCoolDownMs: number\n}\n\nexport type { HighFrequencyWarningMonitorOptions } from '../capabilities'\n\nfunction isObject(value: unknown): value is Record<string, any> {\n return !!value && typeof value === 'object' && !Array.isArray(value)\n}\n\n/**\n * 解析 setData 高频告警配置。\n */\nexport function resolveHighFrequencyWarningOptions(\n option: SetDataSnapshotOptions['highFrequencyWarning'],\n): ResolvedHighFrequencyWarningOptions {\n const defaults = {\n devOnly: true,\n sampleWindowMs: 1000,\n maxCalls: 30,\n coolDownMs: 5000,\n warnOnPageScroll: true,\n pageScrollCoolDownMs: 2000,\n }\n\n if (option === undefined || option === false) {\n return {\n ...defaults,\n enabled: false,\n }\n }\n if (option === true) {\n return {\n ...defaults,\n enabled: true,\n }\n }\n if (!isObject(option)) {\n return {\n ...defaults,\n enabled: false,\n }\n }\n return {\n enabled: option.enabled ?? true,\n devOnly: option.devOnly ?? defaults.devOnly,\n sampleWindowMs: typeof option.sampleWindowMs === 'number'\n ? Math.max(100, Math.floor(option.sampleWindowMs))\n : defaults.sampleWindowMs,\n maxCalls: typeof option.maxCalls === 'number'\n ? Math.max(1, Math.floor(option.maxCalls))\n : defaults.maxCalls,\n coolDownMs: typeof option.coolDownMs === 'number'\n ? Math.max(0, Math.floor(option.coolDownMs))\n : defaults.coolDownMs,\n warnOnPageScroll: option.warnOnPageScroll ?? defaults.warnOnPageScroll,\n pageScrollCoolDownMs: typeof option.pageScrollCoolDownMs === 'number'\n ? Math.max(0, Math.floor(option.pageScrollCoolDownMs))\n : defaults.pageScrollCoolDownMs,\n }\n}\n\n/**\n * 判断当前是否为开发态运行环境。\n */\nexport function isDevelopmentRuntime(): boolean {\n const miniProgramHostConfig = getCurrentMiniProgramHostConfig()\n if (miniProgramHostConfig?.debug === true || miniProgramHostConfig?.envVersion === 'develop') {\n return true\n }\n\n const miniProgramGlobal = getCurrentMiniProgramGlobalObject()\n try {\n const envVersion = miniProgramGlobal?.getAccountInfoSync?.()?.miniProgram?.envVersion\n if (envVersion === 'develop') {\n return true\n }\n }\n catch {\n // 忽略运行环境不支持 getAccountInfoSync 的异常\n }\n\n return false\n}\n\n/**\n * 创建 setData 高频调用告警监视器。\n */\nexport function createSetDataHighFrequencyWarningMonitor(\n options: HighFrequencyWarningMonitorOptions,\n) {\n const resolved = resolveHighFrequencyWarningOptions(options.option)\n if (!resolved.enabled) {\n return undefined\n }\n\n const isDev = isDevelopmentRuntime()\n if (resolved.devOnly && !isDev) {\n return undefined\n }\n\n const now = options.now ?? (() => Date.now())\n const logger = options.logger ?? ((message: string) => {\n const runtimeConsoleWarn = getMiniProgramRuntimeConsoleWarn()\n if (typeof runtimeConsoleWarn === 'function') {\n runtimeConsoleWarn(message)\n }\n })\n\n const callTimes: number[] = []\n let lastWarnAt = Number.NEGATIVE_INFINITY\n let lastPageScrollWarnAt = Number.NEGATIVE_INFINITY\n\n return () => {\n const current = now()\n callTimes.push(current)\n\n const windowStart = current - resolved.sampleWindowMs\n while (callTimes.length > 0 && callTimes[0] < windowStart) {\n callTimes.shift()\n }\n\n const inPageScrollHook = options.isInPageScrollHook?.() ?? false\n if (resolved.warnOnPageScroll && inPageScrollHook) {\n if (resolved.pageScrollCoolDownMs <= 0 || current - lastPageScrollWarnAt >= resolved.pageScrollCoolDownMs) {\n lastPageScrollWarnAt = current\n logger(\n `[wevu:setData] 检测到 onPageScroll 回调内调用 setData(${options.targetLabel})。建议改用 IntersectionObserver 监听可见性,或对滚动更新做节流。`,\n )\n }\n }\n\n if (callTimes.length <= resolved.maxCalls) {\n return\n }\n if (resolved.coolDownMs > 0 && current - lastWarnAt < resolved.coolDownMs) {\n return\n }\n lastWarnAt = current\n\n logger(\n `[wevu:setData] 检测到高频 setData 调用:${callTimes.length} 次/${resolved.sampleWindowMs}ms(${options.targetLabel})。建议合并更新或降低调用频率。`,\n )\n }\n}\n"],"mappings":";;;;AAgBA,SAAS,SAAS,OAA8C;CAC9D,OAAO,CAAC,CAAC,SAAS,OAAO,UAAU,YAAY,CAAC,MAAM,QAAQ,KAAK;AACrE;;;;AAKA,SAAgB,mCACd,QACqC;CACrC,MAAM,WAAW;EACf,SAAS;EACT,gBAAgB;EAChB,UAAU;EACV,YAAY;EACZ,kBAAkB;EAClB,sBAAsB;CACxB;CAEA,IAAI,WAAW,UAAa,WAAW,OACrC,OAAO;EACL,GAAG;EACH,SAAS;CACX;CAEF,IAAI,WAAW,MACb,OAAO;EACL,GAAG;EACH,SAAS;CACX;CAEF,IAAI,CAAC,SAAS,MAAM,GAClB,OAAO;EACL,GAAG;EACH,SAAS;CACX;CAEF,OAAO;EACL,SAAS,OAAO,WAAW;EAC3B,SAAS,OAAO,WAAW,SAAS;EACpC,gBAAgB,OAAO,OAAO,mBAAmB,WAC7C,KAAK,IAAI,KAAK,KAAK,MAAM,OAAO,cAAc,CAAC,IAC/C,SAAS;EACb,UAAU,OAAO,OAAO,aAAa,WACjC,KAAK,IAAI,GAAG,KAAK,MAAM,OAAO,QAAQ,CAAC,IACvC,SAAS;EACb,YAAY,OAAO,OAAO,eAAe,WACrC,KAAK,IAAI,GAAG,KAAK,MAAM,OAAO,UAAU,CAAC,IACzC,SAAS;EACb,kBAAkB,OAAO,oBAAoB,SAAS;EACtD,sBAAsB,OAAO,OAAO,yBAAyB,WACzD,KAAK,IAAI,GAAG,KAAK,MAAM,OAAO,oBAAoB,CAAC,IACnD,SAAS;CACf;AACF;;;;AAKA,SAAgB,uBAAgC;CAC9C,MAAM,wBAAwB,gCAAgC;CAC9D,IAAI,uBAAuB,UAAU,QAAQ,uBAAuB,eAAe,WACjF,OAAO;CAGT,MAAM,oBAAoB,kCAAkC;CAC5D,IAAI;EAEF,IADmB,mBAAmB,qBAAqB,CAAC,EAAE,aAAa,eACxD,WACjB,OAAO;CAEX,QACM,CAEN;CAEA,OAAO;AACT;;;;AAKA,SAAgB,yCACd,SACA;CACA,MAAM,WAAW,mCAAmC,QAAQ,MAAM;CAClE,IAAI,CAAC,SAAS,SACZ;CAGF,MAAM,QAAQ,qBAAqB;CACnC,IAAI,SAAS,WAAW,CAAC,OACvB;CAGF,MAAM,MAAM,QAAQ,cAAc,KAAK,IAAI;CAC3C,MAAM,SAAS,QAAQ,YAAY,YAAoB;EACrD,MAAM,qBAAqB,iCAAiC;EAC5D,IAAI,OAAO,uBAAuB,YAChC,mBAAmB,OAAO;CAE9B;CAEA,MAAM,YAAsB,CAAC;CAC7B,IAAI,aAAa,OAAO;CACxB,IAAI,uBAAuB,OAAO;CAElC,aAAa;EACX,MAAM,UAAU,IAAI;EACpB,UAAU,KAAK,OAAO;EAEtB,MAAM,cAAc,UAAU,SAAS;EACvC,OAAO,UAAU,SAAS,KAAK,UAAU,KAAK,aAC5C,UAAU,MAAM;EAGlB,MAAM,mBAAmB,QAAQ,qBAAqB,KAAK;EAC3D,IAAI,SAAS,oBAAoB,kBAC/B;OAAI,SAAS,wBAAwB,KAAK,UAAU,wBAAwB,SAAS,sBAAsB;IACzG,uBAAuB;IACvB,OACE,iDAAiD,QAAQ,YAAY,6CACvE;GACF;;EAGF,IAAI,UAAU,UAAU,SAAS,UAC/B;EAEF,IAAI,SAAS,aAAa,KAAK,UAAU,aAAa,SAAS,YAC7D;EAEF,aAAa;EAEb,OACE,mCAAmC,UAAU,OAAO,KAAK,SAAS,eAAe,KAAK,QAAQ,YAAY,iBAC5G;CACF;AACF"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
//#region src/runtime/register/setup.ts
|
|
2
2
|
function runSetupFunction(setup, props, context) {
|
|
3
|
-
var _context$runtime;
|
|
4
3
|
if (typeof setup !== "function") return;
|
|
5
|
-
const runtimeContext =
|
|
4
|
+
const runtimeContext = context?.runtime ?? {
|
|
6
5
|
methods: Object.create(null),
|
|
7
6
|
state: {},
|
|
8
7
|
setupState: {},
|
|
@@ -12,7 +11,7 @@ function runSetupFunction(setup, props, context) {
|
|
|
12
11
|
};
|
|
13
12
|
if (context) context.runtime = runtimeContext;
|
|
14
13
|
return setup(props, {
|
|
15
|
-
...context
|
|
14
|
+
...context ?? {},
|
|
16
15
|
runtime: runtimeContext
|
|
17
16
|
});
|
|
18
17
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.mjs","names":[],"sources":["../../../../src/runtime/register/setup.ts"],"sourcesContent":["type SetupRunner = {\n bivarianceHack: (props: Record<string, any>, ctx: any) => any\n}['bivarianceHack']\n\n/**\n * 执行 setup 函数并注入运行时上下文(框架内部使用)。\n * @internal\n */\nexport function runSetupFunction(\n setup: SetupRunner | undefined,\n props: Record<string, any>,\n context: any,\n): unknown\nexport function runSetupFunction(\n setup: SetupRunner | undefined,\n props: Record<string, any>,\n context: any,\n) {\n if (typeof setup !== 'function') {\n return undefined\n }\n const runtimeContext = context?.runtime ?? {\n methods: Object.create(null),\n state: {},\n setupState: {},\n proxy: {},\n watch: () => () => {},\n bindModel: () => {},\n }\n if (context) {\n context.runtime = runtimeContext\n }\n const finalContext = {\n ...(context ?? {}),\n runtime: runtimeContext,\n }\n return setup(props, finalContext)\n}\n"],"mappings":";AAaA,SAAgB,iBACd,OACA,OACA,SACA
|
|
1
|
+
{"version":3,"file":"setup.mjs","names":[],"sources":["../../../../src/runtime/register/setup.ts"],"sourcesContent":["type SetupRunner = {\n bivarianceHack: (props: Record<string, any>, ctx: any) => any\n}['bivarianceHack']\n\n/**\n * 执行 setup 函数并注入运行时上下文(框架内部使用)。\n * @internal\n */\nexport function runSetupFunction(\n setup: SetupRunner | undefined,\n props: Record<string, any>,\n context: any,\n): unknown\nexport function runSetupFunction(\n setup: SetupRunner | undefined,\n props: Record<string, any>,\n context: any,\n) {\n if (typeof setup !== 'function') {\n return undefined\n }\n const runtimeContext = context?.runtime ?? {\n methods: Object.create(null),\n state: {},\n setupState: {},\n proxy: {},\n watch: () => () => {},\n bindModel: () => {},\n }\n if (context) {\n context.runtime = runtimeContext\n }\n const finalContext = {\n ...(context ?? {}),\n runtime: runtimeContext,\n }\n return setup(props, finalContext)\n}\n"],"mappings":";AAaA,SAAgB,iBACd,OACA,OACA,SACA;CACA,IAAI,OAAO,UAAU,YACnB;CAEF,MAAM,iBAAiB,SAAS,WAAW;EACzC,SAAS,OAAO,OAAO,IAAI;EAC3B,OAAO,CAAC;EACR,YAAY,CAAC;EACb,OAAO,CAAC;EACR,mBAAmB,CAAC;EACpB,iBAAiB,CAAC;CACpB;CACA,IAAI,SACF,QAAQ,UAAU;CAMpB,OAAO,MAAM,OAAO;EAHlB,GAAI,WAAW,CAAC;EAChB,SAAS;CAEoB,CAAC;AAClC"}
|
|
@@ -3,10 +3,7 @@ import { getScopedSlotMountState, runtimeCapabilityRegistry } from "../capabilit
|
|
|
3
3
|
//#region src/runtime/register/snapshot.ts
|
|
4
4
|
function refreshOwnerSnapshotFromInstance(instance) {
|
|
5
5
|
const state = getScopedSlotMountState(instance);
|
|
6
|
-
if (state)
|
|
7
|
-
var _runtimeCapabilityReg;
|
|
8
|
-
(_runtimeCapabilityReg = runtimeCapabilityRegistry.scopedSlots) === null || _runtimeCapabilityReg === void 0 || _runtimeCapabilityReg.refresh(instance, state);
|
|
9
|
-
}
|
|
6
|
+
if (state) runtimeCapabilityRegistry.scopedSlots?.refresh(instance, state);
|
|
10
7
|
}
|
|
11
8
|
|
|
12
9
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot.mjs","names":[],"sources":["../../../../src/runtime/register/snapshot.ts"],"sourcesContent":["import type { InternalRuntimeState } from '../types'\nimport { getScopedSlotMountState, runtimeCapabilityRegistry } from '../capabilities'\n\nexport function refreshOwnerSnapshotFromInstance(instance: InternalRuntimeState) {\n const state = getScopedSlotMountState(instance)\n if (state) {\n runtimeCapabilityRegistry.scopedSlots?.refresh(instance, state)\n }\n}\n"],"mappings":";;;AAGA,SAAgB,iCAAiC,UAAgC;CAC/E,MAAM,QAAQ,wBAAwB,QAAQ;CAC9C,IAAI,
|
|
1
|
+
{"version":3,"file":"snapshot.mjs","names":[],"sources":["../../../../src/runtime/register/snapshot.ts"],"sourcesContent":["import type { InternalRuntimeState } from '../types'\nimport { getScopedSlotMountState, runtimeCapabilityRegistry } from '../capabilities'\n\nexport function refreshOwnerSnapshotFromInstance(instance: InternalRuntimeState) {\n const state = getScopedSlotMountState(instance)\n if (state) {\n runtimeCapabilityRegistry.scopedSlots?.refresh(instance, state)\n }\n}\n"],"mappings":";;;AAGA,SAAgB,iCAAiC,UAAgC;CAC/E,MAAM,QAAQ,wBAAwB,QAAQ;CAC9C,IAAI,OACF,0BAA0B,aAAa,QAAQ,UAAU,KAAK;AAElE"}
|
|
@@ -5,8 +5,7 @@ function normalizeWatchDescriptor(descriptor, runtime, instance) {
|
|
|
5
5
|
options: {}
|
|
6
6
|
};
|
|
7
7
|
if (typeof descriptor === "string") {
|
|
8
|
-
|
|
9
|
-
const method = (_descriptor = (_runtime$methods = runtime.methods) === null || _runtime$methods === void 0 ? void 0 : _runtime$methods[descriptor]) !== null && _descriptor !== void 0 ? _descriptor : instance[descriptor];
|
|
8
|
+
const method = runtime.methods?.[descriptor] ?? instance[descriptor];
|
|
10
9
|
if (typeof method === "function") return {
|
|
11
10
|
handler: method.bind(runtime.proxy),
|
|
12
11
|
options: {}
|
|
@@ -40,13 +39,12 @@ function registerWatches(runtime, watchMap, instance, options) {
|
|
|
40
39
|
const stops = [];
|
|
41
40
|
const proxy = runtime.proxy;
|
|
42
41
|
for (const [expression, descriptor] of Object.entries(watchMap)) {
|
|
43
|
-
var _expression$split$;
|
|
44
42
|
const normalized = normalizeWatchDescriptor(descriptor, runtime, instance);
|
|
45
43
|
if (!normalized) continue;
|
|
46
44
|
const getter = createPathGetter(proxy, expression);
|
|
47
45
|
const stopHandle = runtime.watch(getter, normalized.handler, normalized.options);
|
|
48
|
-
const sourceRoot =
|
|
49
|
-
if (
|
|
46
|
+
const sourceRoot = expression.split(".")[0]?.trim();
|
|
47
|
+
if (options?.deferMissingSourceBaseline && !normalized.options.immediate && sourceRoot && !(sourceRoot in proxy)) stopHandle.pause();
|
|
50
48
|
stops.push(stopHandle);
|
|
51
49
|
}
|
|
52
50
|
return stops;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watch.mjs","names":[],"sources":["../../../../src/runtime/register/watch.ts"],"sourcesContent":["import type { WatchStopHandle } from '../../reactivity'\nimport type {\n ComponentPublicInstance,\n InternalRuntimeState,\n RuntimeInstance,\n} from '../types'\n\ntype WatchHandler = (this: any, value: any, oldValue: any) => void\nexport type WatchDescriptor = WatchHandler | string | {\n handler: WatchHandler | string\n immediate?: boolean\n deep?: boolean\n}\nexport type WatchMap = Record<string, WatchDescriptor>\n\ninterface RegisterWatchesOptions {\n deferMissingSourceBaseline?: boolean\n}\n\nexport function normalizeWatchDescriptor(\n descriptor: WatchDescriptor,\n runtime: RuntimeInstance<any, any, any>,\n instance: InternalRuntimeState,\n): { handler: WatchHandler, options: any } | undefined {\n if (typeof descriptor === 'function') {\n return {\n handler: descriptor.bind(runtime.proxy),\n options: {},\n }\n }\n\n if (typeof descriptor === 'string') {\n const method = (runtime.methods as any)?.[descriptor] ?? (instance as any)[descriptor]\n if (typeof method === 'function') {\n return {\n handler: method.bind(runtime.proxy),\n options: {},\n }\n }\n return undefined\n }\n\n if (!descriptor || typeof descriptor !== 'object') {\n return undefined\n }\n\n const base = normalizeWatchDescriptor((descriptor as any).handler, runtime, instance)\n if (!base) {\n return undefined\n }\n\n const options: any = {\n ...base.options,\n }\n\n if ((descriptor as any).immediate !== undefined) {\n options.immediate = (descriptor as any).immediate\n }\n if ((descriptor as any).deep !== undefined) {\n options.deep = (descriptor as any).deep\n }\n\n return {\n handler: base.handler,\n options,\n }\n}\n\nexport function createPathGetter(target: ComponentPublicInstance<any, any, any>, path: string) {\n const segments = path.split('.').map(segment => segment.trim()).filter(Boolean)\n if (!segments.length) {\n return () => target\n }\n\n return () => {\n let current: any = target\n for (const segment of segments) {\n if (current == null) {\n return current\n }\n current = current[segment]\n }\n return current\n }\n}\n\nexport function registerWatches(\n runtime: RuntimeInstance<any, any, any>,\n watchMap: WatchMap,\n instance: InternalRuntimeState,\n options?: RegisterWatchesOptions,\n) {\n const stops: WatchStopHandle[] = []\n const proxy = runtime.proxy\n\n for (const [expression, descriptor] of Object.entries(watchMap)) {\n const normalized = normalizeWatchDescriptor(descriptor as any, runtime, instance)\n if (!normalized) {\n continue\n }\n const getter = createPathGetter(proxy, expression)\n const stopHandle = runtime.watch(getter, normalized.handler, normalized.options)\n const sourceRoot = expression.split('.')[0]?.trim()\n if (\n options?.deferMissingSourceBaseline\n && !normalized.options.immediate\n && sourceRoot\n && !(sourceRoot in proxy)\n ) {\n stopHandle.pause()\n }\n stops.push(stopHandle)\n }\n\n return stops\n}\n"],"mappings":";AAmBA,SAAgB,yBACd,YACA,SACA,UACqD;CACrD,IAAI,OAAO,eAAe,YACxB,OAAO;EACL,SAAS,WAAW,KAAK,QAAQ,KAAK;EACtC,SAAS,CAAC;CACZ;CAGF,IAAI,OAAO,eAAe,UAAU
|
|
1
|
+
{"version":3,"file":"watch.mjs","names":[],"sources":["../../../../src/runtime/register/watch.ts"],"sourcesContent":["import type { WatchStopHandle } from '../../reactivity'\nimport type {\n ComponentPublicInstance,\n InternalRuntimeState,\n RuntimeInstance,\n} from '../types'\n\ntype WatchHandler = (this: any, value: any, oldValue: any) => void\nexport type WatchDescriptor = WatchHandler | string | {\n handler: WatchHandler | string\n immediate?: boolean\n deep?: boolean\n}\nexport type WatchMap = Record<string, WatchDescriptor>\n\ninterface RegisterWatchesOptions {\n deferMissingSourceBaseline?: boolean\n}\n\nexport function normalizeWatchDescriptor(\n descriptor: WatchDescriptor,\n runtime: RuntimeInstance<any, any, any>,\n instance: InternalRuntimeState,\n): { handler: WatchHandler, options: any } | undefined {\n if (typeof descriptor === 'function') {\n return {\n handler: descriptor.bind(runtime.proxy),\n options: {},\n }\n }\n\n if (typeof descriptor === 'string') {\n const method = (runtime.methods as any)?.[descriptor] ?? (instance as any)[descriptor]\n if (typeof method === 'function') {\n return {\n handler: method.bind(runtime.proxy),\n options: {},\n }\n }\n return undefined\n }\n\n if (!descriptor || typeof descriptor !== 'object') {\n return undefined\n }\n\n const base = normalizeWatchDescriptor((descriptor as any).handler, runtime, instance)\n if (!base) {\n return undefined\n }\n\n const options: any = {\n ...base.options,\n }\n\n if ((descriptor as any).immediate !== undefined) {\n options.immediate = (descriptor as any).immediate\n }\n if ((descriptor as any).deep !== undefined) {\n options.deep = (descriptor as any).deep\n }\n\n return {\n handler: base.handler,\n options,\n }\n}\n\nexport function createPathGetter(target: ComponentPublicInstance<any, any, any>, path: string) {\n const segments = path.split('.').map(segment => segment.trim()).filter(Boolean)\n if (!segments.length) {\n return () => target\n }\n\n return () => {\n let current: any = target\n for (const segment of segments) {\n if (current == null) {\n return current\n }\n current = current[segment]\n }\n return current\n }\n}\n\nexport function registerWatches(\n runtime: RuntimeInstance<any, any, any>,\n watchMap: WatchMap,\n instance: InternalRuntimeState,\n options?: RegisterWatchesOptions,\n) {\n const stops: WatchStopHandle[] = []\n const proxy = runtime.proxy\n\n for (const [expression, descriptor] of Object.entries(watchMap)) {\n const normalized = normalizeWatchDescriptor(descriptor as any, runtime, instance)\n if (!normalized) {\n continue\n }\n const getter = createPathGetter(proxy, expression)\n const stopHandle = runtime.watch(getter, normalized.handler, normalized.options)\n const sourceRoot = expression.split('.')[0]?.trim()\n if (\n options?.deferMissingSourceBaseline\n && !normalized.options.immediate\n && sourceRoot\n && !(sourceRoot in proxy)\n ) {\n stopHandle.pause()\n }\n stops.push(stopHandle)\n }\n\n return stops\n}\n"],"mappings":";AAmBA,SAAgB,yBACd,YACA,SACA,UACqD;CACrD,IAAI,OAAO,eAAe,YACxB,OAAO;EACL,SAAS,WAAW,KAAK,QAAQ,KAAK;EACtC,SAAS,CAAC;CACZ;CAGF,IAAI,OAAO,eAAe,UAAU;EAClC,MAAM,SAAU,QAAQ,UAAkB,eAAgB,SAAiB;EAC3E,IAAI,OAAO,WAAW,YACpB,OAAO;GACL,SAAS,OAAO,KAAK,QAAQ,KAAK;GAClC,SAAS,CAAC;EACZ;EAEF;CACF;CAEA,IAAI,CAAC,cAAc,OAAO,eAAe,UACvC;CAGF,MAAM,OAAO,yBAA0B,WAAmB,SAAS,SAAS,QAAQ;CACpF,IAAI,CAAC,MACH;CAGF,MAAM,UAAe,EACnB,GAAG,KAAK,QACV;CAEA,IAAK,WAAmB,cAAc,QACpC,QAAQ,YAAa,WAAmB;CAE1C,IAAK,WAAmB,SAAS,QAC/B,QAAQ,OAAQ,WAAmB;CAGrC,OAAO;EACL,SAAS,KAAK;EACd;CACF;AACF;AAEA,SAAgB,iBAAiB,QAAgD,MAAc;CAC7F,MAAM,WAAW,KAAK,MAAM,GAAG,CAAC,CAAC,KAAI,YAAW,QAAQ,KAAK,CAAC,CAAC,CAAC,OAAO,OAAO;CAC9E,IAAI,CAAC,SAAS,QACZ,aAAa;CAGf,aAAa;EACX,IAAI,UAAe;EACnB,KAAK,MAAM,WAAW,UAAU;GAC9B,IAAI,WAAW,MACb,OAAO;GAET,UAAU,QAAQ;EACpB;EACA,OAAO;CACT;AACF;AAEA,SAAgB,gBACd,SACA,UACA,UACA,SACA;CACA,MAAM,QAA2B,CAAC;CAClC,MAAM,QAAQ,QAAQ;CAEtB,KAAK,MAAM,CAAC,YAAY,eAAe,OAAO,QAAQ,QAAQ,GAAG;EAC/D,MAAM,aAAa,yBAAyB,YAAmB,SAAS,QAAQ;EAChF,IAAI,CAAC,YACH;EAEF,MAAM,SAAS,iBAAiB,OAAO,UAAU;EACjD,MAAM,aAAa,QAAQ,MAAM,QAAQ,WAAW,SAAS,WAAW,OAAO;EAC/E,MAAM,aAAa,WAAW,MAAM,GAAG,CAAC,CAAC,EAAE,EAAE,KAAK;EAClD,IACE,SAAS,8BACN,CAAC,WAAW,QAAQ,aACpB,cACA,EAAE,cAAc,QAEnB,WAAW,MAAM;EAEnB,MAAM,KAAK,UAAU;CACvB;CAEA,OAAO;AACT"}
|
|
@@ -4,8 +4,7 @@ import { WEVU_PROPS_KEY, WEVU_RUNTIME_OWNER_ID_KEY, WEVU_SCOPED_SLOT_OWNER_SEED_
|
|
|
4
4
|
|
|
5
5
|
//#region src/runtime/scopedSlots.ts
|
|
6
6
|
function getScopedSlotGlobalStore() {
|
|
7
|
-
|
|
8
|
-
const globalObject = (_getScopedSlotHostGlo = getScopedSlotHostGlobalObject()) !== null && _getScopedSlotHostGlo !== void 0 ? _getScopedSlotHostGlo : Object.create(null);
|
|
7
|
+
const globalObject = getScopedSlotHostGlobalObject() ?? Object.create(null);
|
|
9
8
|
if (!(globalObject[WEVU_SCOPED_SLOT_OWNER_STORE_KEY] instanceof Map)) globalObject[WEVU_SCOPED_SLOT_OWNER_STORE_KEY] = /* @__PURE__ */ new Map();
|
|
10
9
|
if (typeof globalObject[WEVU_SCOPED_SLOT_OWNER_SEED_KEY] !== "number") globalObject[WEVU_SCOPED_SLOT_OWNER_SEED_KEY] = 0;
|
|
11
10
|
return {
|
|
@@ -19,9 +18,8 @@ function allocateOwnerId() {
|
|
|
19
18
|
return `wv${globalObject[WEVU_SCOPED_SLOT_OWNER_SEED_KEY]}`;
|
|
20
19
|
}
|
|
21
20
|
function updateOwnerSnapshot(ownerId, snapshot, proxy, target) {
|
|
22
|
-
var _ownerStore$get;
|
|
23
21
|
const { ownerStore } = getScopedSlotGlobalStore();
|
|
24
|
-
const record =
|
|
22
|
+
const record = ownerStore.get(ownerId) ?? {
|
|
25
23
|
snapshot: {},
|
|
26
24
|
proxy,
|
|
27
25
|
subscribers: /* @__PURE__ */ new Set()
|
|
@@ -30,20 +28,19 @@ function updateOwnerSnapshot(ownerId, snapshot, proxy, target) {
|
|
|
30
28
|
const proxyChanged = record.proxy !== proxy;
|
|
31
29
|
record.snapshot = snapshot;
|
|
32
30
|
record.proxy = proxy;
|
|
33
|
-
record.target = target
|
|
31
|
+
record.target = target ?? record.target;
|
|
34
32
|
ownerStore.set(ownerId, record);
|
|
35
33
|
if ((snapshotChanged || proxyChanged) && record.subscribers.size) for (const subscriber of record.subscribers) try {
|
|
36
34
|
subscriber(snapshot, proxy);
|
|
37
|
-
} catch
|
|
35
|
+
} catch {}
|
|
38
36
|
}
|
|
39
37
|
function removeOwner(ownerId) {
|
|
40
38
|
const { ownerStore } = getScopedSlotGlobalStore();
|
|
41
39
|
ownerStore.delete(ownerId);
|
|
42
40
|
}
|
|
43
41
|
function subscribeOwner(ownerId, subscriber) {
|
|
44
|
-
var _ownerStore$get2;
|
|
45
42
|
const { ownerStore } = getScopedSlotGlobalStore();
|
|
46
|
-
const record =
|
|
43
|
+
const record = ownerStore.get(ownerId) ?? {
|
|
47
44
|
snapshot: {},
|
|
48
45
|
proxy: void 0,
|
|
49
46
|
subscribers: /* @__PURE__ */ new Set()
|
|
@@ -57,19 +54,16 @@ function subscribeOwner(ownerId, subscriber) {
|
|
|
57
54
|
};
|
|
58
55
|
}
|
|
59
56
|
function getOwnerProxy(ownerId) {
|
|
60
|
-
var _ownerStore$get3;
|
|
61
57
|
const { ownerStore } = getScopedSlotGlobalStore();
|
|
62
|
-
return
|
|
58
|
+
return ownerStore.get(ownerId)?.proxy;
|
|
63
59
|
}
|
|
64
60
|
function getOwnerSnapshot(ownerId) {
|
|
65
|
-
var _ownerStore$get4;
|
|
66
61
|
const { ownerStore } = getScopedSlotGlobalStore();
|
|
67
|
-
return
|
|
62
|
+
return ownerStore.get(ownerId)?.snapshot;
|
|
68
63
|
}
|
|
69
64
|
function getOwnerTarget(ownerId) {
|
|
70
|
-
var _ownerStore$get5;
|
|
71
65
|
const { ownerStore } = getScopedSlotGlobalStore();
|
|
72
|
-
return
|
|
66
|
+
return ownerStore.get(ownerId)?.target;
|
|
73
67
|
}
|
|
74
68
|
function resolveOwnerSnapshot(runtime) {
|
|
75
69
|
const fastSnapshot = runtime.__wevu_cloneDispatchedSnapshot;
|
|
@@ -93,22 +87,21 @@ function mergeOwnerSnapshotProps(snapshot, propsSource) {
|
|
|
93
87
|
}
|
|
94
88
|
}
|
|
95
89
|
function attachOwnerSnapshot(target, runtime, ownerId, options) {
|
|
96
|
-
var _WEVU_PROPS_KEY;
|
|
97
90
|
try {
|
|
98
91
|
target[WEVU_RUNTIME_OWNER_ID_KEY] = ownerId;
|
|
99
|
-
} catch
|
|
92
|
+
} catch {}
|
|
100
93
|
try {
|
|
101
94
|
runtime.state[WEVU_SLOT_OWNER_ID_KEY] = ownerId;
|
|
102
|
-
} catch
|
|
95
|
+
} catch {}
|
|
103
96
|
try {
|
|
104
97
|
target[WEVU_SLOT_OWNER_ID_KEY] = ownerId;
|
|
105
|
-
} catch
|
|
98
|
+
} catch {}
|
|
106
99
|
try {
|
|
107
100
|
const data = target.data;
|
|
108
101
|
if (data && typeof data === "object") data[WEVU_SLOT_OWNER_ID_KEY] = ownerId;
|
|
109
|
-
} catch
|
|
110
|
-
const snapshot =
|
|
111
|
-
mergeOwnerSnapshotProps(snapshot,
|
|
102
|
+
} catch {}
|
|
103
|
+
const snapshot = options?.deferSnapshot ? {} : resolveOwnerSnapshot(runtime);
|
|
104
|
+
mergeOwnerSnapshotProps(snapshot, target[WEVU_PROPS_KEY] ?? target.properties);
|
|
112
105
|
updateOwnerSnapshot(ownerId, snapshot, runtime.proxy, target);
|
|
113
106
|
}
|
|
114
107
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scopedSlots.mjs","names":[],"sources":["../../../src/runtime/scopedSlots.ts"],"sourcesContent":["import type { ComponentPublicInstance, InternalRuntimeState, RuntimeInstance } from './types'\nimport {\n WEVU_PROPS_KEY,\n WEVU_RUNTIME_OWNER_ID_KEY,\n WEVU_SCOPED_SLOT_OWNER_SEED_KEY,\n WEVU_SCOPED_SLOT_OWNER_STORE_KEY,\n WEVU_SLOT_OWNER_ID_KEY,\n WEVU_SLOT_OWNER_ID_PROP,\n WEVU_SLOT_OWNER_KEY,\n WEVU_SLOT_OWNER_PROXY_KEY,\n WEVU_SLOT_PROPS_DATA_KEY,\n WEVU_SLOT_PROPS_KEY,\n WEVU_SLOT_SCOPE_KEY,\n} from '@weapp-core/constants'\nimport { isDeepEqualValue } from './app/setData/snapshot'\nimport { getScopedSlotHostGlobalObject } from './platform'\n\ntype OwnerSubscriber = (snapshot: Record<string, any>, proxy: ComponentPublicInstance<any, any, any> | undefined) => void\n\ninterface OwnerRecord {\n snapshot: Record<string, any>\n proxy?: ComponentPublicInstance<any, any, any>\n target?: InternalRuntimeState\n subscribers: Set<OwnerSubscriber>\n}\n\ntype RuntimeInstanceWithOwnerSnapshot = RuntimeInstance<any, any, any> & {\n __wevu_cloneDispatchedSnapshot?: () => Record<string, any>\n}\n\nfunction getScopedSlotGlobalStore() {\n const globalObject = getScopedSlotHostGlobalObject() ?? Object.create(null)\n if (!(globalObject[WEVU_SCOPED_SLOT_OWNER_STORE_KEY] instanceof Map)) {\n globalObject[WEVU_SCOPED_SLOT_OWNER_STORE_KEY] = new Map<string, OwnerRecord>()\n }\n if (typeof globalObject[WEVU_SCOPED_SLOT_OWNER_SEED_KEY] !== 'number') {\n globalObject[WEVU_SCOPED_SLOT_OWNER_SEED_KEY] = 0\n }\n return {\n globalObject,\n ownerStore: globalObject[WEVU_SCOPED_SLOT_OWNER_STORE_KEY] as Map<string, OwnerRecord>,\n }\n}\n\nexport function allocateOwnerId() {\n const { globalObject } = getScopedSlotGlobalStore()\n globalObject[WEVU_SCOPED_SLOT_OWNER_SEED_KEY] += 1\n return `wv${globalObject[WEVU_SCOPED_SLOT_OWNER_SEED_KEY]}`\n}\n\nexport function updateOwnerSnapshot(\n ownerId: string,\n snapshot: Record<string, any>,\n proxy: ComponentPublicInstance<any, any, any> | undefined,\n target?: InternalRuntimeState,\n) {\n const { ownerStore } = getScopedSlotGlobalStore()\n const record = ownerStore.get(ownerId) ?? { snapshot: {}, proxy, subscribers: new Set() }\n const snapshotChanged = !isDeepEqualValue(record.snapshot, snapshot, 20, { keys: 10_000 })\n const proxyChanged = record.proxy !== proxy\n record.snapshot = snapshot\n record.proxy = proxy\n record.target = target ?? record.target\n ownerStore.set(ownerId, record)\n if ((snapshotChanged || proxyChanged) && record.subscribers.size) {\n for (const subscriber of record.subscribers) {\n try {\n subscriber(snapshot, proxy)\n }\n catch {\n // 忽略订阅回调错误\n }\n }\n }\n}\n\nexport function removeOwner(ownerId: string) {\n const { ownerStore } = getScopedSlotGlobalStore()\n ownerStore.delete(ownerId)\n}\n\nexport function subscribeOwner(ownerId: string, subscriber: OwnerSubscriber) {\n const { ownerStore } = getScopedSlotGlobalStore()\n const record = ownerStore.get(ownerId) ?? { snapshot: {}, proxy: undefined, subscribers: new Set() }\n record.subscribers.add(subscriber)\n ownerStore.set(ownerId, record)\n return () => {\n const current = ownerStore.get(ownerId)\n if (!current) {\n return\n }\n current.subscribers.delete(subscriber)\n }\n}\n\nexport function getOwnerProxy(ownerId: string) {\n const { ownerStore } = getScopedSlotGlobalStore()\n return ownerStore.get(ownerId)?.proxy\n}\n\nexport function getOwnerSnapshot(ownerId: string) {\n const { ownerStore } = getScopedSlotGlobalStore()\n return ownerStore.get(ownerId)?.snapshot\n}\n\nexport function getOwnerTarget(ownerId: string) {\n const { ownerStore } = getScopedSlotGlobalStore()\n return ownerStore.get(ownerId)?.target\n}\n\nexport function resolveOwnerSnapshot(runtime: RuntimeInstance<any, any, any>) {\n const fastSnapshot = (runtime as RuntimeInstanceWithOwnerSnapshot).__wevu_cloneDispatchedSnapshot\n if (typeof fastSnapshot === 'function') {\n return fastSnapshot()\n }\n return typeof runtime.snapshot === 'function' ? runtime.snapshot() : {}\n}\n\nconst OWNER_SNAPSHOT_PROTOCOL_KEYS = new Set([\n WEVU_SLOT_OWNER_ID_KEY,\n WEVU_SLOT_OWNER_ID_PROP,\n WEVU_SLOT_OWNER_KEY,\n WEVU_SLOT_OWNER_PROXY_KEY,\n WEVU_SLOT_PROPS_DATA_KEY,\n WEVU_SLOT_PROPS_KEY,\n WEVU_SLOT_SCOPE_KEY,\n])\n\nexport function mergeOwnerSnapshotProps(\n snapshot: Record<string, any>,\n propsSource: unknown,\n) {\n if (!propsSource || typeof propsSource !== 'object') {\n return\n }\n for (const [key, value] of Object.entries(propsSource as Record<string, any>)) {\n if (OWNER_SNAPSHOT_PROTOCOL_KEYS.has(key)) {\n continue\n }\n snapshot[key] = value\n }\n}\n\nexport function attachOwnerSnapshot(\n target: InternalRuntimeState,\n runtime: RuntimeInstance<any, any, any>,\n ownerId: string,\n options?: {\n deferSnapshot?: boolean\n },\n) {\n try {\n ;(target as any)[WEVU_RUNTIME_OWNER_ID_KEY] = ownerId\n }\n catch {\n // 宿主拒绝扩展实例时继续使用现有引用通道。\n }\n try {\n ;(runtime.state as any)[WEVU_SLOT_OWNER_ID_KEY] = ownerId\n }\n catch {\n // 忽略写入异常\n }\n try {\n ;(target as any)[WEVU_SLOT_OWNER_ID_KEY] = ownerId\n }\n catch {\n // 忽略写入异常\n }\n try {\n const data = (target as any).data\n if (data && typeof data === 'object') {\n data[WEVU_SLOT_OWNER_ID_KEY] = ownerId\n }\n }\n catch {\n // 忽略 owner id 同步异常\n }\n const snapshot = options?.deferSnapshot ? {} : resolveOwnerSnapshot(runtime)\n const propsSource = (target as any)[WEVU_PROPS_KEY] ?? (target as any).properties\n mergeOwnerSnapshotProps(snapshot, propsSource)\n updateOwnerSnapshot(ownerId, snapshot, runtime.proxy, target)\n}\n"],"mappings":";;;;;AA8BA,SAAS,2BAA2B
|
|
1
|
+
{"version":3,"file":"scopedSlots.mjs","names":[],"sources":["../../../src/runtime/scopedSlots.ts"],"sourcesContent":["import type { ComponentPublicInstance, InternalRuntimeState, RuntimeInstance } from './types'\nimport {\n WEVU_PROPS_KEY,\n WEVU_RUNTIME_OWNER_ID_KEY,\n WEVU_SCOPED_SLOT_OWNER_SEED_KEY,\n WEVU_SCOPED_SLOT_OWNER_STORE_KEY,\n WEVU_SLOT_OWNER_ID_KEY,\n WEVU_SLOT_OWNER_ID_PROP,\n WEVU_SLOT_OWNER_KEY,\n WEVU_SLOT_OWNER_PROXY_KEY,\n WEVU_SLOT_PROPS_DATA_KEY,\n WEVU_SLOT_PROPS_KEY,\n WEVU_SLOT_SCOPE_KEY,\n} from '@weapp-core/constants'\nimport { isDeepEqualValue } from './app/setData/snapshot'\nimport { getScopedSlotHostGlobalObject } from './platform'\n\ntype OwnerSubscriber = (snapshot: Record<string, any>, proxy: ComponentPublicInstance<any, any, any> | undefined) => void\n\ninterface OwnerRecord {\n snapshot: Record<string, any>\n proxy?: ComponentPublicInstance<any, any, any>\n target?: InternalRuntimeState\n subscribers: Set<OwnerSubscriber>\n}\n\ntype RuntimeInstanceWithOwnerSnapshot = RuntimeInstance<any, any, any> & {\n __wevu_cloneDispatchedSnapshot?: () => Record<string, any>\n}\n\nfunction getScopedSlotGlobalStore() {\n const globalObject = getScopedSlotHostGlobalObject() ?? Object.create(null)\n if (!(globalObject[WEVU_SCOPED_SLOT_OWNER_STORE_KEY] instanceof Map)) {\n globalObject[WEVU_SCOPED_SLOT_OWNER_STORE_KEY] = new Map<string, OwnerRecord>()\n }\n if (typeof globalObject[WEVU_SCOPED_SLOT_OWNER_SEED_KEY] !== 'number') {\n globalObject[WEVU_SCOPED_SLOT_OWNER_SEED_KEY] = 0\n }\n return {\n globalObject,\n ownerStore: globalObject[WEVU_SCOPED_SLOT_OWNER_STORE_KEY] as Map<string, OwnerRecord>,\n }\n}\n\nexport function allocateOwnerId() {\n const { globalObject } = getScopedSlotGlobalStore()\n globalObject[WEVU_SCOPED_SLOT_OWNER_SEED_KEY] += 1\n return `wv${globalObject[WEVU_SCOPED_SLOT_OWNER_SEED_KEY]}`\n}\n\nexport function updateOwnerSnapshot(\n ownerId: string,\n snapshot: Record<string, any>,\n proxy: ComponentPublicInstance<any, any, any> | undefined,\n target?: InternalRuntimeState,\n) {\n const { ownerStore } = getScopedSlotGlobalStore()\n const record = ownerStore.get(ownerId) ?? { snapshot: {}, proxy, subscribers: new Set() }\n const snapshotChanged = !isDeepEqualValue(record.snapshot, snapshot, 20, { keys: 10_000 })\n const proxyChanged = record.proxy !== proxy\n record.snapshot = snapshot\n record.proxy = proxy\n record.target = target ?? record.target\n ownerStore.set(ownerId, record)\n if ((snapshotChanged || proxyChanged) && record.subscribers.size) {\n for (const subscriber of record.subscribers) {\n try {\n subscriber(snapshot, proxy)\n }\n catch {\n // 忽略订阅回调错误\n }\n }\n }\n}\n\nexport function removeOwner(ownerId: string) {\n const { ownerStore } = getScopedSlotGlobalStore()\n ownerStore.delete(ownerId)\n}\n\nexport function subscribeOwner(ownerId: string, subscriber: OwnerSubscriber) {\n const { ownerStore } = getScopedSlotGlobalStore()\n const record = ownerStore.get(ownerId) ?? { snapshot: {}, proxy: undefined, subscribers: new Set() }\n record.subscribers.add(subscriber)\n ownerStore.set(ownerId, record)\n return () => {\n const current = ownerStore.get(ownerId)\n if (!current) {\n return\n }\n current.subscribers.delete(subscriber)\n }\n}\n\nexport function getOwnerProxy(ownerId: string) {\n const { ownerStore } = getScopedSlotGlobalStore()\n return ownerStore.get(ownerId)?.proxy\n}\n\nexport function getOwnerSnapshot(ownerId: string) {\n const { ownerStore } = getScopedSlotGlobalStore()\n return ownerStore.get(ownerId)?.snapshot\n}\n\nexport function getOwnerTarget(ownerId: string) {\n const { ownerStore } = getScopedSlotGlobalStore()\n return ownerStore.get(ownerId)?.target\n}\n\nexport function resolveOwnerSnapshot(runtime: RuntimeInstance<any, any, any>) {\n const fastSnapshot = (runtime as RuntimeInstanceWithOwnerSnapshot).__wevu_cloneDispatchedSnapshot\n if (typeof fastSnapshot === 'function') {\n return fastSnapshot()\n }\n return typeof runtime.snapshot === 'function' ? runtime.snapshot() : {}\n}\n\nconst OWNER_SNAPSHOT_PROTOCOL_KEYS = new Set([\n WEVU_SLOT_OWNER_ID_KEY,\n WEVU_SLOT_OWNER_ID_PROP,\n WEVU_SLOT_OWNER_KEY,\n WEVU_SLOT_OWNER_PROXY_KEY,\n WEVU_SLOT_PROPS_DATA_KEY,\n WEVU_SLOT_PROPS_KEY,\n WEVU_SLOT_SCOPE_KEY,\n])\n\nexport function mergeOwnerSnapshotProps(\n snapshot: Record<string, any>,\n propsSource: unknown,\n) {\n if (!propsSource || typeof propsSource !== 'object') {\n return\n }\n for (const [key, value] of Object.entries(propsSource as Record<string, any>)) {\n if (OWNER_SNAPSHOT_PROTOCOL_KEYS.has(key)) {\n continue\n }\n snapshot[key] = value\n }\n}\n\nexport function attachOwnerSnapshot(\n target: InternalRuntimeState,\n runtime: RuntimeInstance<any, any, any>,\n ownerId: string,\n options?: {\n deferSnapshot?: boolean\n },\n) {\n try {\n ;(target as any)[WEVU_RUNTIME_OWNER_ID_KEY] = ownerId\n }\n catch {\n // 宿主拒绝扩展实例时继续使用现有引用通道。\n }\n try {\n ;(runtime.state as any)[WEVU_SLOT_OWNER_ID_KEY] = ownerId\n }\n catch {\n // 忽略写入异常\n }\n try {\n ;(target as any)[WEVU_SLOT_OWNER_ID_KEY] = ownerId\n }\n catch {\n // 忽略写入异常\n }\n try {\n const data = (target as any).data\n if (data && typeof data === 'object') {\n data[WEVU_SLOT_OWNER_ID_KEY] = ownerId\n }\n }\n catch {\n // 忽略 owner id 同步异常\n }\n const snapshot = options?.deferSnapshot ? {} : resolveOwnerSnapshot(runtime)\n const propsSource = (target as any)[WEVU_PROPS_KEY] ?? (target as any).properties\n mergeOwnerSnapshotProps(snapshot, propsSource)\n updateOwnerSnapshot(ownerId, snapshot, runtime.proxy, target)\n}\n"],"mappings":"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"}
|