wevu 6.18.6 → 6.19.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/dist/_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/defineProperty.mjs +1 -0
- package/dist/_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/toPrimitive.mjs +1 -0
- package/dist/_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/toPropertyKey.mjs +1 -0
- package/dist/_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/typeof.mjs +1 -0
- package/dist/{rolldown-runtime-CenpyGzJ.mjs → _virtual/_rolldown/runtime.mjs} +1 -1
- package/dist/dev/_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/defineProperty.mjs +14 -0
- package/dist/dev/_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/toPrimitive.mjs +16 -0
- package/dist/dev/_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/toPropertyKey.mjs +11 -0
- package/dist/dev/_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/typeof.mjs +12 -0
- package/dist/dev/{rolldown-runtime-BUUfjzRC.mjs → _virtual/_rolldown/runtime.mjs} +1 -1
- package/dist/dev/index.mjs +49 -10
- package/dist/dev/internal-reactivity.mjs +15 -5
- package/dist/dev/internal-runtime.mjs +32 -4
- package/dist/dev/internal-template.mjs +1 -1
- package/dist/dev/package.mjs +6 -0
- package/dist/dev/package.mjs.map +1 -0
- package/dist/dev/reactivity/computed.mjs +49 -0
- package/dist/dev/reactivity/computed.mjs.map +1 -0
- package/dist/dev/reactivity/core.mjs +184 -0
- package/dist/dev/reactivity/core.mjs.map +1 -0
- package/dist/dev/reactivity/reactive/mutation.mjs +12 -0
- package/dist/dev/reactivity/reactive/mutation.mjs.map +1 -0
- package/dist/dev/{computed-BxRsUJgi.mjs → reactivity/reactive/patch.mjs} +6 -48
- package/dist/dev/reactivity/reactive/patch.mjs.map +1 -0
- package/dist/dev/reactivity/reactive/patchState.mjs +138 -0
- package/dist/dev/reactivity/reactive/patchState.mjs.map +1 -0
- package/dist/dev/reactivity/reactive/shallow.mjs +77 -0
- package/dist/dev/reactivity/reactive/shallow.mjs.map +1 -0
- package/dist/dev/reactivity/reactive/shared.mjs +40 -0
- package/dist/dev/reactivity/reactive/shared.mjs.map +1 -0
- package/dist/dev/reactivity/reactive/state.mjs +8 -0
- package/dist/dev/reactivity/reactive/state.mjs.map +1 -0
- package/dist/dev/reactivity/reactive.mjs +212 -0
- package/dist/dev/reactivity/reactive.mjs.map +1 -0
- package/dist/dev/reactivity/readonly.mjs +69 -0
- package/dist/dev/reactivity/readonly.mjs.map +1 -0
- package/dist/dev/reactivity/ref.mjs +97 -0
- package/dist/dev/reactivity/ref.mjs.map +1 -0
- package/dist/dev/reactivity/shallowRef.mjs +71 -0
- package/dist/dev/reactivity/shallowRef.mjs.map +1 -0
- package/dist/dev/{toRefs-D06VmFK2.mjs → reactivity/toRefs.mjs} +4 -3
- package/dist/dev/reactivity/toRefs.mjs.map +1 -0
- package/dist/dev/reactivity/traverse.mjs +40 -0
- package/dist/dev/reactivity/traverse.mjs.map +1 -0
- package/dist/dev/reactivity/watch/helpers.mjs +78 -0
- package/dist/dev/reactivity/watch/helpers.mjs.map +1 -0
- package/dist/dev/reactivity/watch/types.mjs +20 -0
- package/dist/dev/reactivity/watch/types.mjs.map +1 -0
- package/dist/dev/reactivity/watch.mjs +167 -0
- package/dist/dev/reactivity/watch.mjs.map +1 -0
- package/dist/dev/router/backNavigation.mjs +32 -0
- package/dist/dev/router/backNavigation.mjs.map +1 -0
- package/dist/dev/router/createRouter.mjs +176 -0
- package/dist/dev/router/createRouter.mjs.map +1 -0
- package/dist/dev/router/instance.mjs +17 -0
- package/dist/dev/router/instance.mjs.map +1 -0
- package/dist/dev/router/navigationApi.mjs +94 -0
- package/dist/dev/router/navigationApi.mjs.map +1 -0
- package/dist/dev/router/navigationCore.mjs +139 -0
- package/dist/dev/router/navigationCore.mjs.map +1 -0
- package/dist/dev/router/navigationResult.mjs +54 -0
- package/dist/dev/router/navigationResult.mjs.map +1 -0
- package/dist/dev/router/navigationTarget.mjs +121 -0
- package/dist/dev/router/navigationTarget.mjs.map +1 -0
- package/dist/dev/router/navigationTargetHelpers.mjs +38 -0
- package/dist/dev/router/navigationTargetHelpers.mjs.map +1 -0
- package/dist/dev/router/resolve.mjs +22 -0
- package/dist/dev/router/resolve.mjs.map +1 -0
- package/dist/dev/router/routeRegistry.mjs +78 -0
- package/dist/dev/router/routeRegistry.mjs.map +1 -0
- package/dist/dev/router/routeSync.mjs +72 -0
- package/dist/dev/router/routeSync.mjs.map +1 -0
- package/dist/dev/router/types.mjs +11 -0
- package/dist/dev/router/types.mjs.map +1 -0
- package/dist/dev/router/useRoute.mjs +106 -0
- package/dist/dev/router/useRoute.mjs.map +1 -0
- package/dist/dev/router/useRouter.mjs +15 -0
- package/dist/dev/router/useRouter.mjs.map +1 -0
- package/dist/dev/router.mjs +9 -1316
- package/dist/dev/routerInternal/location.mjs +66 -0
- package/dist/dev/routerInternal/location.mjs.map +1 -0
- package/dist/dev/routerInternal/matching.mjs +149 -0
- package/dist/dev/routerInternal/matching.mjs.map +1 -0
- package/dist/dev/routerInternal/params.mjs +95 -0
- package/dist/dev/routerInternal/params.mjs.map +1 -0
- package/dist/dev/routerInternal/path.mjs +42 -0
- package/dist/dev/routerInternal/path.mjs.map +1 -0
- package/dist/dev/routerInternal/query.mjs +113 -0
- package/dist/dev/routerInternal/query.mjs.map +1 -0
- package/dist/dev/routerInternal/records.mjs +172 -0
- package/dist/dev/routerInternal/records.mjs.map +1 -0
- package/dist/dev/routerInternal/recordsWarnings.mjs +49 -0
- package/dist/dev/routerInternal/recordsWarnings.mjs.map +1 -0
- package/dist/dev/routerInternal/snapshots.mjs +126 -0
- package/dist/dev/routerInternal/snapshots.mjs.map +1 -0
- package/dist/dev/runtime/app/computed.mjs +68 -0
- package/dist/dev/runtime/app/computed.mjs.map +1 -0
- package/dist/dev/runtime/app/context.mjs +275 -0
- package/dist/dev/runtime/app/context.mjs.map +1 -0
- package/dist/dev/runtime/app/diagnostics.mjs +34 -0
- package/dist/dev/runtime/app/diagnostics.mjs.map +1 -0
- package/dist/dev/runtime/app/mount.mjs +269 -0
- package/dist/dev/runtime/app/mount.mjs.map +1 -0
- package/dist/dev/runtime/app/pending.mjs +14 -0
- package/dist/dev/runtime/app/pending.mjs.map +1 -0
- package/dist/dev/runtime/app/setData/patchScheduler.mjs +158 -0
- package/dist/dev/runtime/app/setData/patchScheduler.mjs.map +1 -0
- package/dist/dev/runtime/app/setData/payload.mjs +161 -0
- package/dist/dev/runtime/app/setData/payload.mjs.map +1 -0
- package/dist/dev/runtime/app/setData/scheduler.mjs +313 -0
- package/dist/dev/runtime/app/setData/scheduler.mjs.map +1 -0
- package/dist/dev/runtime/app/setData/snapshot.mjs +129 -0
- package/dist/dev/runtime/app/setData/snapshot.mjs.map +1 -0
- package/dist/dev/runtime/app/setDataOptions.mjs +73 -0
- package/dist/dev/runtime/app/setDataOptions.mjs.map +1 -0
- package/dist/dev/runtime/app.mjs +93 -0
- package/dist/dev/runtime/app.mjs.map +1 -0
- package/dist/dev/runtime/bindModel.mjs +92 -0
- package/dist/dev/runtime/bindModel.mjs.map +1 -0
- package/dist/dev/runtime/defaults.mjs +61 -0
- package/dist/dev/runtime/defaults.mjs.map +1 -0
- package/dist/dev/runtime/define/initialComputed.mjs +125 -0
- package/dist/dev/runtime/define/initialComputed.mjs.map +1 -0
- package/dist/dev/runtime/define/options.mjs +169 -0
- package/dist/dev/runtime/define/options.mjs.map +1 -0
- package/dist/dev/runtime/define/optionsApi.mjs +48 -0
- package/dist/dev/runtime/define/optionsApi.mjs.map +1 -0
- package/dist/dev/runtime/define/props.mjs +194 -0
- package/dist/dev/runtime/define/props.mjs.map +1 -0
- package/dist/dev/runtime/define/scopedSlotOptions.mjs +313 -0
- package/dist/dev/runtime/define/scopedSlotOptions.mjs.map +1 -0
- package/dist/dev/runtime/define/setupResult.mjs +78 -0
- package/dist/dev/runtime/define/setupResult.mjs.map +1 -0
- package/dist/dev/runtime/define.mjs +140 -0
- package/dist/dev/runtime/define.mjs.map +1 -0
- package/dist/dev/runtime/diff.mjs +193 -0
- package/dist/dev/runtime/diff.mjs.map +1 -0
- package/dist/dev/runtime/disposables.mjs +81 -0
- package/dist/dev/runtime/disposables.mjs.map +1 -0
- package/dist/dev/runtime/elementIntersectionObserver.mjs +80 -0
- package/dist/dev/runtime/elementIntersectionObserver.mjs.map +1 -0
- package/dist/dev/runtime/emit.mjs +36 -0
- package/dist/dev/runtime/emit.mjs.map +1 -0
- package/dist/dev/{base-CYkvI7w8.mjs → runtime/hooks/base.mjs} +3 -140
- package/dist/dev/runtime/hooks/base.mjs.map +1 -0
- package/dist/dev/runtime/hooks/register.mjs +92 -0
- package/dist/dev/runtime/hooks/register.mjs.map +1 -0
- package/dist/dev/runtime/hooks/vue.mjs +81 -0
- package/dist/dev/runtime/hooks/vue.mjs.map +1 -0
- package/dist/dev/runtime/internal.mjs +18 -0
- package/dist/dev/runtime/internal.mjs.map +1 -0
- package/dist/dev/runtime/intersectionObserver.mjs +46 -0
- package/dist/dev/runtime/intersectionObserver.mjs.map +1 -0
- package/dist/dev/runtime/layoutBridge.mjs +303 -0
- package/dist/dev/runtime/layoutBridge.mjs.map +1 -0
- package/dist/dev/runtime/layoutComponentMatcher.mjs +11 -0
- package/dist/dev/runtime/layoutComponentMatcher.mjs.map +1 -0
- package/dist/dev/runtime/nativeBridge.mjs +21 -0
- package/dist/dev/runtime/nativeBridge.mjs.map +1 -0
- package/dist/dev/runtime/noSetData.mjs +18 -0
- package/dist/dev/runtime/noSetData.mjs.map +1 -0
- package/dist/dev/runtime/pageEnvironment.mjs +100 -0
- package/dist/dev/runtime/pageEnvironment.mjs.map +1 -0
- package/dist/dev/runtime/pageLayout.mjs +71 -0
- package/dist/dev/runtime/pageLayout.mjs.map +1 -0
- package/dist/dev/runtime/pageScroll.mjs +110 -0
- package/dist/dev/runtime/pageScroll.mjs.map +1 -0
- package/dist/dev/runtime/platform.mjs +77 -0
- package/dist/dev/runtime/platform.mjs.map +1 -0
- package/dist/dev/runtime/provide.mjs +71 -0
- package/dist/dev/runtime/provide.mjs.map +1 -0
- package/dist/dev/runtime/provideContext.mjs +101 -0
- package/dist/dev/runtime/provideContext.mjs.map +1 -0
- package/dist/dev/runtime/provideStore.mjs +18 -0
- package/dist/dev/runtime/provideStore.mjs.map +1 -0
- package/dist/dev/runtime/pullDownRefresh.mjs +24 -0
- package/dist/dev/runtime/pullDownRefresh.mjs.map +1 -0
- package/dist/dev/runtime/register/app.mjs +159 -0
- package/dist/dev/runtime/register/app.mjs.map +1 -0
- package/dist/dev/runtime/register/component/features.mjs +43 -0
- package/dist/dev/runtime/register/component/features.mjs.map +1 -0
- package/dist/dev/runtime/register/component/lifecycle/optionalHooks.mjs +64 -0
- package/dist/dev/runtime/register/component/lifecycle/optionalHooks.mjs.map +1 -0
- package/dist/dev/runtime/register/component/lifecycle/platform.mjs +95 -0
- package/dist/dev/runtime/register/component/lifecycle/platform.mjs.map +1 -0
- package/dist/dev/runtime/register/component/lifecycle.mjs +122 -0
- package/dist/dev/runtime/register/component/lifecycle.mjs.map +1 -0
- package/dist/dev/runtime/register/component/methods.mjs +80 -0
- package/dist/dev/runtime/register/component/methods.mjs.map +1 -0
- package/dist/dev/runtime/register/component/options.mjs +204 -0
- package/dist/dev/runtime/register/component/options.mjs.map +1 -0
- package/dist/dev/runtime/register/component/props.mjs +218 -0
- package/dist/dev/runtime/register/component/props.mjs.map +1 -0
- package/dist/dev/runtime/register/component/registerDefinition.mjs +290 -0
- package/dist/dev/runtime/register/component/registerDefinition.mjs.map +1 -0
- package/dist/dev/runtime/register/component.mjs +128 -0
- package/dist/dev/runtime/register/component.mjs.map +1 -0
- package/dist/dev/runtime/register/inline.mjs +145 -0
- package/dist/dev/runtime/register/inline.mjs.map +1 -0
- package/dist/dev/runtime/register/runtimeInstance/methodBridge.mjs +53 -0
- package/dist/dev/runtime/register/runtimeInstance/methodBridge.mjs.map +1 -0
- package/dist/dev/runtime/register/runtimeInstance/provideContext.mjs +34 -0
- package/dist/dev/runtime/register/runtimeInstance/provideContext.mjs.map +1 -0
- package/dist/dev/runtime/register/runtimeInstance/setupContext.mjs +230 -0
- package/dist/dev/runtime/register/runtimeInstance/setupContext.mjs.map +1 -0
- package/dist/dev/runtime/register/runtimeInstance/setupPhase.mjs +164 -0
- package/dist/dev/runtime/register/runtimeInstance/setupPhase.mjs.map +1 -0
- package/dist/dev/runtime/register/runtimeInstance/utils.mjs +122 -0
- package/dist/dev/runtime/register/runtimeInstance/utils.mjs.map +1 -0
- package/dist/dev/runtime/register/runtimeInstance.mjs +438 -0
- package/dist/dev/runtime/register/runtimeInstance.mjs.map +1 -0
- package/dist/dev/runtime/register/setDataFrequencyWarning.mjs +95 -0
- package/dist/dev/runtime/register/setDataFrequencyWarning.mjs.map +1 -0
- package/dist/dev/runtime/register/setup.mjs +22 -0
- package/dist/dev/runtime/register/setup.mjs.map +1 -0
- package/dist/dev/runtime/register/snapshot.mjs +17 -0
- package/dist/dev/runtime/register/snapshot.mjs.map +1 -0
- package/dist/dev/runtime/register/watch.mjs +57 -0
- package/dist/dev/runtime/register/watch.mjs.map +1 -0
- package/dist/dev/runtime/scopedSlots.mjs +115 -0
- package/dist/dev/runtime/scopedSlots.mjs.map +1 -0
- package/dist/dev/runtime/selectorQuery.mjs +49 -0
- package/dist/dev/runtime/selectorQuery.mjs.map +1 -0
- package/dist/dev/runtime/setupTracking.mjs +59 -0
- package/dist/dev/runtime/setupTracking.mjs.map +1 -0
- package/dist/dev/{template-n_iVr0ey.mjs → runtime/template.mjs} +7 -4
- package/dist/dev/runtime/template.mjs.map +1 -0
- package/dist/dev/runtime/templateRefs/helpers.mjs +254 -0
- package/dist/dev/runtime/templateRefs/helpers.mjs.map +1 -0
- package/dist/dev/runtime/templateRefs.mjs +162 -0
- package/dist/dev/runtime/templateRefs.mjs.map +1 -0
- package/dist/dev/runtime/uniAppHost.mjs +119 -0
- package/dist/dev/runtime/uniAppHost.mjs.map +1 -0
- package/dist/dev/runtime/updatePerformance.mjs +41 -0
- package/dist/dev/runtime/updatePerformance.mjs.map +1 -0
- package/dist/dev/runtime/use.mjs +25 -0
- package/dist/dev/runtime/use.mjs.map +1 -0
- package/dist/dev/runtime/vueCompat/context.mjs +25 -0
- package/dist/dev/runtime/vueCompat/context.mjs.map +1 -0
- package/dist/dev/runtime/vueCompat/model.mjs +118 -0
- package/dist/dev/runtime/vueCompat/model.mjs.map +1 -0
- package/dist/dev/runtime/vueCompat/router.mjs +124 -0
- package/dist/dev/runtime/vueCompat/router.mjs.map +1 -0
- package/dist/dev/runtime/vueCompat/templateRef.mjs +37 -0
- package/dist/dev/runtime/vueCompat/templateRef.mjs.map +1 -0
- package/dist/dev/scheduler.mjs +75 -0
- package/dist/dev/scheduler.mjs.map +1 -0
- package/dist/dev/store/actions.mjs +40 -0
- package/dist/dev/store/actions.mjs.map +1 -0
- package/dist/dev/store/base.mjs +56 -0
- package/dist/dev/store/base.mjs.map +1 -0
- package/dist/dev/store/define/optionsStyle.mjs +125 -0
- package/dist/dev/store/define/optionsStyle.mjs.map +1 -0
- package/dist/dev/store/define/setupStyle.mjs +145 -0
- package/dist/dev/store/define/setupStyle.mjs.map +1 -0
- package/dist/dev/store/define/shared.mjs +38 -0
- package/dist/dev/store/define/shared.mjs.map +1 -0
- package/dist/dev/store/define.mjs +23 -0
- package/dist/dev/store/define.mjs.map +1 -0
- package/dist/dev/store/manager.mjs +21 -0
- package/dist/dev/store/manager.mjs.map +1 -0
- package/dist/dev/store/storeToRefs.mjs +29 -0
- package/dist/dev/store/storeToRefs.mjs.map +1 -0
- package/dist/dev/store/utils.mjs +49 -0
- package/dist/dev/store/utils.mjs.map +1 -0
- package/dist/dev/store.mjs +3 -1
- package/dist/dev/utils.mjs +16 -0
- package/dist/dev/utils.mjs.map +1 -0
- package/dist/dev/version.mjs +8 -0
- package/dist/dev/version.mjs.map +1 -0
- package/dist/dev/vue-demi.mjs +49 -11
- package/dist/dev/vue-demi.mjs.map +1 -1
- package/dist/index.d.mts +71 -7
- package/dist/index.mjs +1 -1
- package/dist/internal-reactivity.d.mts +16 -2
- package/dist/internal-reactivity.mjs +1 -1
- package/dist/internal-runtime.d.mts +35 -2
- package/dist/internal-runtime.mjs +1 -1
- package/dist/internal-template.d.mts +1 -1
- package/dist/internal-template.mjs +1 -1
- package/dist/jsx-runtime.d.mts +1 -1
- package/dist/macros/shared.d.mts +81 -0
- package/dist/macros.d.mts +70 -0
- package/dist/package.mjs +1 -0
- package/dist/reactivity/computed.d.mts +21 -0
- package/dist/reactivity/computed.mjs +1 -0
- package/dist/reactivity/core.d.mts +34 -0
- package/dist/reactivity/core.mjs +1 -0
- package/dist/reactivity/index.d.mts +15 -0
- package/dist/reactivity/reactive/mutation.d.mts +21 -0
- package/dist/reactivity/reactive/mutation.mjs +1 -0
- package/dist/reactivity/reactive/patch.d.mts +18 -0
- package/dist/reactivity/reactive/patch.mjs +1 -0
- package/dist/reactivity/reactive/patchState.mjs +1 -0
- package/dist/reactivity/reactive/shallow.d.mts +22 -0
- package/dist/reactivity/reactive/shallow.mjs +1 -0
- package/dist/reactivity/reactive/shared.d.mts +4 -0
- package/dist/reactivity/reactive/shared.mjs +1 -0
- package/dist/reactivity/reactive/state.mjs +1 -0
- package/dist/reactivity/reactive.d.mts +41 -0
- package/dist/reactivity/reactive.mjs +1 -0
- package/dist/reactivity/readonly.d.mts +27 -0
- package/dist/reactivity/readonly.mjs +1 -0
- package/dist/reactivity/ref.d.mts +27 -0
- package/dist/reactivity/ref.mjs +1 -0
- package/dist/reactivity/shallowRef.d.mts +19 -0
- package/dist/reactivity/shallowRef.mjs +1 -0
- package/dist/reactivity/toRefs.d.mts +43 -0
- package/dist/reactivity/toRefs.mjs +1 -0
- package/dist/reactivity/traverse.d.mts +8 -0
- package/dist/reactivity/traverse.mjs +1 -0
- package/dist/reactivity/watch/helpers.mjs +1 -0
- package/dist/reactivity/watch/types.d.mts +43 -0
- package/dist/reactivity/watch/types.mjs +1 -0
- package/dist/reactivity/watch.d.mts +21 -0
- package/dist/reactivity/watch.mjs +1 -0
- package/dist/router/backNavigation.mjs +1 -0
- package/dist/router/createRouter.d.mts +8 -0
- package/dist/router/createRouter.mjs +1 -0
- package/dist/router/instance.mjs +1 -0
- package/dist/router/navigationApi.mjs +1 -0
- package/dist/router/navigationCore.d.mts +6 -0
- package/dist/router/navigationCore.mjs +1 -0
- package/dist/router/navigationResult.mjs +1 -0
- package/dist/router/navigationTarget.mjs +1 -0
- package/dist/router/navigationTargetHelpers.mjs +1 -0
- package/dist/router/resolve.d.mts +6 -0
- package/dist/router/resolve.mjs +1 -0
- package/dist/router/routeRegistry.mjs +1 -0
- package/dist/router/routeSync.d.mts +1 -0
- package/dist/router/routeSync.mjs +1 -0
- package/dist/router/types.d.mts +163 -0
- package/dist/router/types.mjs +1 -0
- package/dist/router/useRoute.d.mts +19 -0
- package/dist/router/useRoute.mjs +1 -0
- package/dist/router/useRouter.d.mts +8 -0
- package/dist/router/useRouter.mjs +1 -0
- package/dist/router.d.mts +9 -204
- package/dist/router.mjs +1 -1
- package/dist/routerInternal/location.mjs +1 -0
- package/dist/routerInternal/matching.mjs +1 -0
- package/dist/routerInternal/params.mjs +1 -0
- package/dist/routerInternal/path.mjs +1 -0
- package/dist/routerInternal/query.d.mts +7 -0
- package/dist/routerInternal/query.mjs +1 -0
- package/dist/routerInternal/records.mjs +1 -0
- package/dist/routerInternal/recordsWarnings.mjs +1 -0
- package/dist/routerInternal/snapshots.mjs +1 -0
- package/dist/routerInternal/types.d.mts +9 -0
- package/dist/runtime/app/computed.mjs +1 -0
- package/dist/runtime/app/context.mjs +1 -0
- package/dist/runtime/app/diagnostics.mjs +1 -0
- package/dist/runtime/app/mount.mjs +1 -0
- package/dist/runtime/app/pending.d.mts +10 -0
- package/dist/runtime/app/pending.mjs +1 -0
- package/dist/runtime/app/setData/patchScheduler.mjs +1 -0
- package/dist/runtime/app/setData/payload.mjs +1 -0
- package/dist/runtime/app/setData/scheduler.mjs +1 -0
- package/dist/runtime/app/setData/snapshot.mjs +1 -0
- package/dist/runtime/app/setDataOptions.mjs +1 -0
- package/dist/runtime/app.d.mts +8 -0
- package/dist/runtime/app.mjs +1 -0
- package/dist/runtime/bindModel.mjs +1 -0
- package/dist/runtime/defaults.d.mts +11 -0
- package/dist/runtime/defaults.mjs +1 -0
- package/dist/runtime/define/initialComputed.mjs +1 -0
- package/dist/runtime/define/options.mjs +1 -0
- package/dist/runtime/define/optionsApi.mjs +1 -0
- package/dist/runtime/define/props.mjs +1 -0
- package/dist/runtime/define/scopedSlotOptions.mjs +1 -0
- package/dist/runtime/define/setupResult.mjs +1 -0
- package/dist/runtime/define.d.mts +105 -0
- package/dist/runtime/define.mjs +1 -0
- package/dist/runtime/diff.mjs +1 -0
- package/dist/runtime/disposables.d.mts +31 -0
- package/dist/runtime/disposables.mjs +1 -0
- package/dist/runtime/elementIntersectionObserver.d.mts +26 -0
- package/dist/runtime/elementIntersectionObserver.mjs +1 -0
- package/dist/runtime/emit.mjs +1 -0
- package/dist/runtime/hooks/base.d.mts +27 -0
- package/dist/runtime/hooks/base.mjs +1 -0
- package/dist/runtime/hooks/register.d.mts +30 -0
- package/dist/runtime/hooks/register.mjs +1 -0
- package/dist/runtime/hooks/vue.d.mts +53 -0
- package/dist/runtime/hooks/vue.mjs +1 -0
- package/dist/runtime/hooks.d.mts +4 -0
- package/dist/runtime/index.d.mts +47 -0
- package/dist/runtime/internal.mjs +1 -0
- package/dist/runtime/intersectionObserver.d.mts +14 -0
- package/dist/runtime/intersectionObserver.mjs +1 -0
- package/dist/runtime/layoutBridge.d.mts +59 -0
- package/dist/runtime/layoutBridge.mjs +1 -0
- package/dist/runtime/layoutComponentMatcher.mjs +1 -0
- package/dist/runtime/nativeBridge.mjs +1 -0
- package/dist/runtime/noSetData.d.mts +5 -0
- package/dist/runtime/noSetData.mjs +1 -0
- package/dist/runtime/pageEnvironment.d.mts +50 -0
- package/dist/runtime/pageEnvironment.mjs +1 -0
- package/dist/runtime/pageLayout.d.mts +26 -0
- package/dist/runtime/pageLayout.mjs +1 -0
- package/dist/runtime/pageScroll.d.mts +29 -0
- package/dist/runtime/pageScroll.mjs +1 -0
- package/dist/runtime/platform.mjs +1 -0
- package/dist/runtime/provide.d.mts +59 -0
- package/dist/runtime/provide.mjs +1 -0
- package/dist/runtime/provideContext.mjs +1 -0
- package/dist/runtime/provideStore.d.mts +7 -0
- package/dist/runtime/provideStore.mjs +1 -0
- package/dist/runtime/pullDownRefresh.d.mts +12 -0
- package/dist/runtime/pullDownRefresh.mjs +1 -0
- package/dist/runtime/register/app.d.mts +14 -0
- package/dist/runtime/register/app.mjs +1 -0
- package/dist/runtime/register/component/features.mjs +1 -0
- package/dist/runtime/register/component/lifecycle/optionalHooks.mjs +1 -0
- package/dist/runtime/register/component/lifecycle/platform.mjs +1 -0
- package/dist/runtime/register/component/lifecycle.mjs +1 -0
- package/dist/runtime/register/component/methods.mjs +1 -0
- package/dist/runtime/register/component/options.mjs +1 -0
- package/dist/runtime/register/component/props.mjs +1 -0
- package/dist/runtime/register/component/registerDefinition.mjs +1 -0
- package/dist/runtime/register/component.d.mts +15 -0
- package/dist/runtime/register/component.mjs +1 -0
- package/dist/runtime/register/inline.d.mts +15 -0
- package/dist/runtime/register/inline.mjs +1 -0
- package/dist/runtime/register/runtimeInstance/methodBridge.mjs +1 -0
- package/dist/runtime/register/runtimeInstance/provideContext.mjs +1 -0
- package/dist/runtime/register/runtimeInstance/setupContext.mjs +1 -0
- package/dist/runtime/register/runtimeInstance/setupPhase.mjs +1 -0
- package/dist/runtime/register/runtimeInstance/utils.mjs +1 -0
- package/dist/runtime/register/runtimeInstance.d.mts +26 -0
- package/dist/runtime/register/runtimeInstance.mjs +1 -0
- package/dist/runtime/register/setDataFrequencyWarning.mjs +1 -0
- package/dist/runtime/register/setup.d.mts +11 -0
- package/dist/runtime/register/setup.mjs +1 -0
- package/dist/runtime/register/snapshot.mjs +1 -0
- package/dist/runtime/register/watch.d.mts +12 -0
- package/dist/runtime/register/watch.mjs +1 -0
- package/dist/runtime/register.d.mts +5 -0
- package/dist/runtime/scopedSlots.mjs +1 -0
- package/dist/runtime/selectorQuery.d.mts +54 -0
- package/dist/runtime/selectorQuery.mjs +1 -0
- package/dist/runtime/setupTracking.mjs +1 -0
- package/dist/{template-DE8e5dj_.d.mts → runtime/template.d.mts} +1 -1
- package/dist/runtime/template.mjs +1 -0
- package/dist/runtime/templateRefTypes.d.mts +7 -0
- package/dist/runtime/templateRefs/helpers.mjs +1 -0
- package/dist/runtime/templateRefs.d.mts +11 -0
- package/dist/runtime/templateRefs.mjs +1 -0
- package/dist/runtime/types/core.d.mts +35 -0
- package/dist/runtime/types/miniprogram.d.mts +80 -0
- package/dist/runtime/types/miniprogramHost.d.mts +44 -0
- package/dist/runtime/types/miniprogramHostSources.d.mts +112 -0
- package/dist/runtime/types/options.d.mts +136 -0
- package/dist/runtime/types/props/propTypes.d.mts +79 -0
- package/dist/runtime/types/props/router.d.mts +51 -0
- package/dist/runtime/types/props/setup.d.mts +96 -0
- package/dist/runtime/types/props.d.mts +4 -0
- package/dist/runtime/types/runtime.d.mts +59 -0
- package/dist/runtime/types/setData.d.mts +220 -0
- package/dist/runtime/types.d.mts +28 -0
- package/dist/runtime/uniAppHost.d.mts +8 -0
- package/dist/runtime/uniAppHost.mjs +1 -0
- package/dist/runtime/updatePerformance.d.mts +13 -0
- package/dist/runtime/updatePerformance.mjs +1 -0
- package/dist/runtime/use.d.mts +13 -0
- package/dist/runtime/use.mjs +1 -0
- package/dist/runtime/vueCompat/context.d.mts +8 -0
- package/dist/runtime/vueCompat/context.mjs +1 -0
- package/dist/runtime/vueCompat/model.d.mts +30 -0
- package/dist/runtime/vueCompat/model.mjs +1 -0
- package/dist/runtime/vueCompat/router.d.mts +28 -0
- package/dist/runtime/vueCompat/router.mjs +1 -0
- package/dist/runtime/vueCompat/templateRef.d.mts +9 -0
- package/dist/runtime/vueCompat/templateRef.mjs +1 -0
- package/dist/runtime/vueCompat.d.mts +5 -0
- package/dist/scheduler.d.mts +4 -0
- package/dist/scheduler.mjs +1 -0
- package/dist/store/actions.mjs +1 -0
- package/dist/store/base.mjs +1 -0
- package/dist/store/define/optionsStyle.mjs +1 -0
- package/dist/store/define/setupStyle.mjs +1 -0
- package/dist/store/define/shared.mjs +1 -0
- package/dist/store/define.d.mts +26 -0
- package/dist/store/define.mjs +1 -0
- package/dist/store/manager.d.mts +8 -0
- package/dist/store/manager.mjs +1 -0
- package/dist/store/storeToRefs.d.mts +13 -0
- package/dist/store/storeToRefs.mjs +1 -0
- package/dist/store/types.d.mts +70 -0
- package/dist/store/utils.mjs +1 -0
- package/dist/store.d.mts +4 -1
- package/dist/store.mjs +1 -1
- package/dist/utils.mjs +1 -0
- package/dist/version.d.mts +4 -0
- package/dist/version.mjs +1 -0
- package/dist/vue-augment.d.mts +6 -0
- package/dist/vue-demi.d.mts +67 -7
- package/dist/vue-demi.mjs +1 -1
- package/dist/vue-types.d.mts +18 -0
- package/dist/weappIntrinsicElements/base.d.mts +22 -0
- package/dist/weappIntrinsicElements/elements/ad-custom.d.mts +13 -0
- package/dist/weappIntrinsicElements/elements/ad.d.mts +16 -0
- package/dist/weappIntrinsicElements/elements/audio.d.mts +20 -0
- package/dist/weappIntrinsicElements/elements/block.d.mts +8 -0
- package/dist/weappIntrinsicElements/elements/button.d.mts +40 -0
- package/dist/weappIntrinsicElements/elements/camera.d.mts +18 -0
- package/dist/weappIntrinsicElements/elements/canvas.d.mts +18 -0
- package/dist/weappIntrinsicElements/elements/checkbox-group.d.mts +13 -0
- package/dist/weappIntrinsicElements/elements/checkbox.d.mts +13 -0
- package/dist/weappIntrinsicElements/elements/cover-image.d.mts +10 -0
- package/dist/weappIntrinsicElements/elements/cover-view.d.mts +10 -0
- package/dist/weappIntrinsicElements/elements/editor.d.mts +22 -0
- package/dist/weappIntrinsicElements/elements/form.d.mts +16 -0
- package/dist/weappIntrinsicElements/elements/functional-page-navigator.d.mts +15 -0
- package/dist/weappIntrinsicElements/elements/icon.d.mts +12 -0
- package/dist/weappIntrinsicElements/elements/image.d.mts +18 -0
- package/dist/weappIntrinsicElements/elements/import.d.mts +10 -0
- package/dist/weappIntrinsicElements/elements/include.d.mts +10 -0
- package/dist/weappIntrinsicElements/elements/input.d.mts +47 -0
- package/dist/weappIntrinsicElements/elements/keyboard-accessory.d.mts +8 -0
- package/dist/weappIntrinsicElements/elements/label.d.mts +10 -0
- package/dist/weappIntrinsicElements/elements/live-player.d.mts +35 -0
- package/dist/weappIntrinsicElements/elements/live-pusher.d.mts +57 -0
- package/dist/weappIntrinsicElements/elements/map.d.mts +105 -0
- package/dist/weappIntrinsicElements/elements/match-media.d.mts +16 -0
- package/dist/weappIntrinsicElements/elements/movable-area.d.mts +26 -0
- package/dist/weappIntrinsicElements/elements/movable-view.d.mts +26 -0
- package/dist/weappIntrinsicElements/elements/navigation-bar.d.mts +15 -0
- package/dist/weappIntrinsicElements/elements/navigator.d.mts +25 -0
- package/dist/weappIntrinsicElements/elements/official-account.d.mts +13 -0
- package/dist/weappIntrinsicElements/elements/open-data.d.mts +15 -0
- package/dist/weappIntrinsicElements/elements/page-container.d.mts +25 -0
- package/dist/weappIntrinsicElements/elements/page-meta.d.mts +23 -0
- package/dist/weappIntrinsicElements/elements/picker-view-column.d.mts +18 -0
- package/dist/weappIntrinsicElements/elements/picker-view.d.mts +18 -0
- package/dist/weappIntrinsicElements/elements/picker.d.mts +23 -0
- package/dist/weappIntrinsicElements/elements/progress.d.mts +21 -0
- package/dist/weappIntrinsicElements/elements/radio-group.d.mts +13 -0
- package/dist/weappIntrinsicElements/elements/radio.d.mts +13 -0
- package/dist/weappIntrinsicElements/elements/rich-text.d.mts +17 -0
- package/dist/weappIntrinsicElements/elements/scroll-view.d.mts +68 -0
- package/dist/weappIntrinsicElements/elements/share-element.d.mts +18 -0
- package/dist/weappIntrinsicElements/elements/slider.d.mts +23 -0
- package/dist/weappIntrinsicElements/elements/slot.d.mts +10 -0
- package/dist/weappIntrinsicElements/elements/swiper-item.d.mts +42 -0
- package/dist/weappIntrinsicElements/elements/swiper.d.mts +42 -0
- package/dist/weappIntrinsicElements/elements/switch.d.mts +14 -0
- package/dist/weappIntrinsicElements/elements/template.d.mts +12 -0
- package/dist/weappIntrinsicElements/elements/text.d.mts +15 -0
- package/dist/weappIntrinsicElements/elements/textarea.d.mts +40 -0
- package/dist/weappIntrinsicElements/elements/video.d.mts +71 -0
- package/dist/weappIntrinsicElements/elements/view.d.mts +13 -0
- package/dist/weappIntrinsicElements/elements/voip-room.d.mts +14 -0
- package/dist/weappIntrinsicElements/elements/web-view.d.mts +13 -0
- package/dist/weappIntrinsicElements.d.mts +153 -0
- package/package.json +6 -6
- package/dist/base-BxKbbKVO.mjs +0 -1
- package/dist/computed-Xoi9XEUx.mjs +0 -1
- package/dist/dev/base-CYkvI7w8.mjs.map +0 -1
- package/dist/dev/computed-BxRsUJgi.mjs.map +0 -1
- package/dist/dev/ref-DRZC3Kc5.mjs +0 -695
- package/dist/dev/ref-DRZC3Kc5.mjs.map +0 -1
- package/dist/dev/router-DjGhTM7A.mjs +0 -739
- package/dist/dev/router-DjGhTM7A.mjs.map +0 -1
- package/dist/dev/router.mjs.map +0 -1
- package/dist/dev/store-HNsiQJ4d.mjs +0 -479
- package/dist/dev/store-HNsiQJ4d.mjs.map +0 -1
- package/dist/dev/template-n_iVr0ey.mjs.map +0 -1
- package/dist/dev/templateRef-Dyo45y5v.mjs +0 -6436
- package/dist/dev/templateRef-Dyo45y5v.mjs.map +0 -1
- package/dist/dev/toRefs-D06VmFK2.mjs.map +0 -1
- package/dist/dev/watch-jrgL5ald.mjs +0 -445
- package/dist/dev/watch-jrgL5ald.mjs.map +0 -1
- package/dist/index-BiHILcmb.d.mts +0 -1215
- package/dist/index-CCET_bCY.d.mts +0 -111
- package/dist/ref-D37CknuD.mjs +0 -1
- package/dist/router-DJOmKqXb.mjs +0 -1
- package/dist/store-eHrHBQiv.mjs +0 -1
- package/dist/template-CNzlwH-E.mjs +0 -1
- package/dist/templateRef-L_qeTIeS.mjs +0 -1
- package/dist/toRefs-CoytPyo0.mjs +0 -1
- package/dist/traverse-B4Ez44Gd.d.mts +0 -108
- package/dist/vue-types-B3N60cGV.d.mts +0 -757
- package/dist/watch-Bbd-gmEg.mjs +0 -1
- package/dist/weappIntrinsicElements-BgDtC53_.d.mts +0 -1257
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtimeInstance.mjs","names":[],"sources":["../../../../src/runtime/register/runtimeInstance.ts"],"sourcesContent":["import type {\n ComponentPropsOptions,\n ComputedDefinitions,\n DefineAppOptions,\n DefineComponentOptions,\n InternalRuntimeState,\n MethodDefinitions,\n RuntimeApp,\n RuntimeInstance,\n} from '../types'\nimport type { AdapterWithSetData } from './runtimeInstance/utils'\nimport type { WatchMap } from './watch'\nimport {\n WEVU_EFFECT_SCOPE_KEY,\n WEVU_HOOKS_KEY,\n WEVU_PAGE_LAYOUT_NAME_KEY,\n WEVU_PAGE_LAYOUT_PROPS_KEY,\n WEVU_PAGE_LAYOUT_SETTER_KEY,\n WEVU_PAGE_SCROLL_HOOK_DEPTH_KEY,\n WEVU_PROPS_DERIVED_KEYS_KEY,\n WEVU_PROPS_KEY,\n WEVU_PUBLIC_RUNTIME_KEY,\n WEVU_RUNTIME_OWNER_ID_KEY,\n WEVU_SLOT_OWNER_ID_KEY,\n WEVU_TEMPLATE_REFS_KEY,\n WEVU_WATCH_STOPS_KEY,\n} from '@weapp-core/constants'\nimport { isRef } from '../../reactivity'\nimport { isDeepEqualValue } from '../app/setData/snapshot'\nimport { callHookList } from '../hooks'\nimport { resolveRuntimePageLayoutName, syncRuntimePageLayoutState } from '../pageLayout'\nimport { allocateOwnerId, attachOwnerSnapshot, mergeOwnerSnapshotProps, removeOwner, resolveOwnerSnapshot, updateOwnerSnapshot } from '../scopedSlots'\nimport { clearTemplateRefs, scheduleTemplateRefUpdate } from '../templateRefs'\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 {\n attachNativeInstanceRef,\n attachRuntimeInstance,\n attachRuntimeRef,\n callNativeSetData,\n ensureRuntimeProps,\n resolveNativeSetData,\n} from './runtimeInstance/utils'\nimport { createSetDataHighFrequencyWarningMonitor } from './setDataFrequencyWarning'\nimport { registerWatches } from './watch'\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}\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}\n\nfunction attachPageLayoutSetter(target: InternalRuntimeState) {\n if (typeof (target as any).route !== 'string' || !(target as any).route) {\n return\n }\n\n target[WEVU_PAGE_LAYOUT_SETTER_KEY] = (layout: string | false, props?: Record<string, any>) => {\n const runtimeState = target.__wevu?.state as Record<string, any> | undefined\n if (!runtimeState || typeof runtimeState !== 'object') {\n return\n }\n\n runtimeState[WEVU_PAGE_LAYOUT_NAME_KEY] = resolveRuntimePageLayoutName(layout)\n const nextProps = layout === false ? {} : (props ?? {})\n runtimeState[WEVU_PAGE_LAYOUT_PROPS_KEY] = nextProps\n syncRuntimePageLayoutState(target as Record<string, any>, layout, nextProps)\n }\n}\n\n/**\n * 挂载运行时实例(框架内部注册流程使用)。\n * @internal\n */\nexport function mountRuntimeInstance<D extends object, C extends ComputedDefinitions, M extends MethodDefinitions>(\n target: InternalRuntimeState,\n runtimeApp: RuntimeApp<D, C, M>,\n watchMap: WatchMap | undefined,\n setup?: RuntimeSetupFunction<D, C, M>,\n options?: { deferSetData?: boolean, snapshotOmitKeys?: string[] },\n) {\n if (target.__wevu) {\n return target.__wevu as RuntimeInstance<D, C, M>\n }\n attachRuntimeProvideParentContext(target, runtimeApp as RuntimeApp<any, any, any>)\n safeMarkNoSetData(target)\n const initialNativeOwnerId = (target as any).data?.[WEVU_SLOT_OWNER_ID_KEY]\n const ownerId = typeof initialNativeOwnerId === 'string' && initialNativeOwnerId\n ? initialNativeOwnerId\n : allocateOwnerId()\n const shouldFlushNativeOwnerId = typeof initialNativeOwnerId === 'string' && initialNativeOwnerId !== ownerId\n const suspendWhenHidden = Boolean((runtimeApp as any)?.__wevuSetDataOptions?.suspendWhenHidden)\n const targetLabel = typeof (target as any).route === 'string' && (target as any).route\n ? `page:${(target as any).route}`\n : typeof (target as any).is === 'string' && (target as any).is\n ? `component:${(target as any).is}`\n : 'unknown-target'\n const highFrequencyWarning = createSetDataHighFrequencyWarningMonitor({\n option: (runtimeApp as any)?.__wevuSetDataOptions?.highFrequencyWarning,\n targetLabel,\n isInPageScrollHook: () => Number((target as any)[WEVU_PAGE_SCROLL_HOOK_DEPTH_KEY] ?? 0) > 0,\n })\n const createDeferredAdapter = (instance: InternalRuntimeState): AdapterWithSetData => {\n let pending: Record<string, any> | undefined\n let pendingCallbacks: Array<() => void> = []\n let enabled = false\n const adapter: AdapterWithSetData = {\n setData(payload: Record<string, any>, callback?: () => void) {\n if (!enabled) {\n pending = {\n ...(pending ?? {}),\n ...payload,\n }\n if (callback) {\n pendingCallbacks.push(callback)\n }\n return undefined\n }\n const setData = resolveNativeSetData(instance)\n if (setData) {\n return callNativeSetData(instance, setData, payload, callback)\n }\n return undefined\n },\n }\n adapter.__wevu_enableSetData = (discardPending = false) => {\n enabled = true\n if (discardPending) {\n pending = undefined\n pendingCallbacks = []\n }\n const setData = resolveNativeSetData(instance)\n if (pending && Object.keys(pending).length && setData) {\n const payload = pending\n const callbacks = pendingCallbacks\n pending = undefined\n pendingCallbacks = []\n const callback = callbacks.length\n ? () => callbacks.forEach(callback => callback())\n : undefined\n callNativeSetData(instance, setData, payload, callback)\n }\n }\n return adapter\n }\n\n const baseAdapter: AdapterWithSetData = options?.deferSetData\n ? createDeferredAdapter(target)\n : {\n setData(payload: Record<string, any>, callback?: () => void) {\n const setData = resolveNativeSetData(target)\n if (setData) {\n return callNativeSetData(target, setData, payload, callback)\n }\n return undefined\n },\n }\n let runtimeRef: RuntimeInstance<any, any, any> | undefined\n let visible = true\n let hiddenPendingPayload: Record<string, any> | undefined\n\n const mergePendingPayload = (pending: Record<string, any> | undefined, payload: Record<string, any>) => ({\n ...(pending ?? {}),\n ...payload,\n })\n const refreshOwnerSnapshot = () => {\n if (!runtimeRef) {\n return\n }\n const snapshot = resolveOwnerSnapshot(runtimeRef)\n const propsSource = (target as any)[WEVU_PROPS_KEY] ?? (target as any).properties\n mergeOwnerSnapshotProps(snapshot, propsSource)\n updateOwnerSnapshot(ownerId, snapshot, runtimeRef.proxy, target)\n }\n const syncNativeOwnerId = () => {\n if (!shouldFlushNativeOwnerId) {\n return\n }\n const nativeData = (target as any).data\n try {\n if (nativeData && typeof nativeData === 'object') {\n nativeData[WEVU_SLOT_OWNER_ID_KEY] = ownerId\n }\n }\n catch {\n // 忽略直接写入失败,后续 setData 仍会尝试同步。\n }\n const setData = resolveNativeSetData(target)\n if (!setData) {\n return\n }\n callNativeSetData(target, setData, { [WEVU_SLOT_OWNER_ID_KEY]: ownerId })\n }\n const adapter: AdapterWithSetData = {\n ...(baseAdapter as any),\n setData(payload: Record<string, any>) {\n highFrequencyWarning?.()\n if (suspendWhenHidden && !visible) {\n hiddenPendingPayload = mergePendingPayload(hiddenPendingPayload, payload)\n refreshOwnerSnapshot()\n scheduleTemplateRefUpdate(target)\n return undefined\n }\n const hasTemplateRefs = Array.isArray((target as any)[WEVU_TEMPLATE_REFS_KEY])\n && (target as any)[WEVU_TEMPLATE_REFS_KEY].length > 0\n refreshOwnerSnapshot()\n if (hasTemplateRefs && resolveNativeSetData(target)) {\n return new Promise<void>((resolve) => {\n baseAdapter.setData(payload, () => {\n refreshOwnerSnapshot()\n scheduleTemplateRefUpdate(target)\n resolve()\n })\n })\n }\n const result = baseAdapter.setData(payload)\n scheduleTemplateRefUpdate(target)\n return result\n },\n __wevu_setVisibility(nextVisible: boolean) {\n visible = nextVisible\n if (!visible || !hiddenPendingPayload) {\n return undefined\n }\n const payload = hiddenPendingPayload\n hiddenPendingPayload = undefined\n const hasTemplateRefs = Array.isArray((target as any)[WEVU_TEMPLATE_REFS_KEY])\n && (target as any)[WEVU_TEMPLATE_REFS_KEY].length > 0\n refreshOwnerSnapshot()\n if (hasTemplateRefs && resolveNativeSetData(target)) {\n return new Promise<void>((resolve) => {\n baseAdapter.setData(payload, () => {\n refreshOwnerSnapshot()\n scheduleTemplateRefUpdate(target)\n resolve()\n })\n })\n }\n const result = baseAdapter.setData(payload)\n scheduleTemplateRefUpdate(target)\n return result\n },\n }\n\n const baseMountAdapter = {\n ...(adapter as any),\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 hasTemplateRuntimeBindings(runtimeApp)\n ? undefined\n : { [WEVU_SLOT_OWNER_ID_KEY]: ownerId },\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 Object.defineProperty(baseMountAdapter, '__wevu_initialState', {\n configurable: true,\n enumerable: false,\n value: { [WEVU_SLOT_OWNER_ID_KEY]: ownerId },\n writable: false,\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 runtimeRef = runtime\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_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 attachPageLayoutSetter(target)\n const runtimeProps = ensureRuntimeProps(target, runtimeState as Record<string, any>)\n attachRuntimeSlots(runtimeState as Record<string, any>, runtimeProps)\n\n attachOwnerSnapshot(target, runtimeWithDefaults as any, ownerId, {\n deferSnapshot: options?.deferSetData,\n })\n syncNativeOwnerId()\n\n const watchStops = watchMap\n ? registerWatches(runtimeWithDefaults, watchMap, target, {\n deferMissingSourceBaseline: Boolean(setup),\n })\n : []\n if (watchStops.length) {\n target[WEVU_WATCH_STOPS_KEY] = watchStops\n }\n\n if (setup) {\n runRuntimeSetupPhase({\n target,\n runtime,\n runtimeWithDefaults,\n runtimeState: runtimeState as Record<string, any>,\n runtimeProxy: runtimeProxy as Record<string, any>,\n setup,\n })\n if (!options?.deferSetData) {\n runtimeWithSyncFlush.__wevu_flushSetupSnapshotSync?.()\n }\n if (!options?.deferSetData) {\n refreshOwnerSnapshot()\n }\n for (const stop of watchStops) {\n stop.resume()\n }\n }\n else if (\n !options?.deferSetData\n && (target as any).properties\n && typeof (target as any).properties === 'object'\n && Object.keys((target as any).properties).length > 0\n ) {\n runtimeWithSyncFlush.__wevu_flushSetupSnapshotSync?.()\n refreshOwnerSnapshot()\n }\n\n // 将 runtime.methods 透传到原生实例,供小程序事件处理直接调用\n bridgeRuntimeMethodsToTarget(target, runtime)\n\n return runtime\n}\n\nfunction preserveRuntimeFacadeIdentity<D extends object, C extends ComputedDefinitions, M extends MethodDefinitions>(\n target: InternalRuntimeState,\n previousRuntime: RuntimeInstance<D, C, M>,\n nextRuntime: RuntimeInstance<D, C, M>,\n) {\n for (const key of Reflect.ownKeys(previousRuntime)) {\n if (!Reflect.has(nextRuntime, key)) {\n const descriptor = Reflect.getOwnPropertyDescriptor(previousRuntime, key)\n if (descriptor?.configurable) {\n Reflect.deleteProperty(previousRuntime, key)\n }\n }\n }\n for (const key of Reflect.ownKeys(nextRuntime)) {\n const descriptor = Reflect.getOwnPropertyDescriptor(nextRuntime, key)\n if (!descriptor) {\n continue\n }\n try {\n Reflect.defineProperty(previousRuntime, key, descriptor)\n }\n catch {\n try {\n ;(previousRuntime as any)[key] = (nextRuntime as any)[key]\n }\n catch {\n // 宿主包装对象仍持有旧 runtime 时,保留无法覆盖的只读字段。\n }\n }\n }\n attachRuntimeRef(previousRuntime.state as Record<string, any>, previousRuntime)\n 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 if (preferredState && Object.prototype.hasOwnProperty.call(preferredState, key)) {\n snapshot[key] = cloneInitialSnapshotValue(preferredState[key])\n continue\n }\n const setupBinding = setupState?.[key]\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> },\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 (!options?.includeSetupState && setupState && Object.prototype.hasOwnProperty.call(setupState, key)) {\n continue\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 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 as any).__wevu?.adapter\n syncRuntimeStateFromNativeData(target, {\n includeSetupState: options?.rehydrateSetupState,\n })\n if (adapter && typeof (adapter as any).__wevu_enableSetData === 'function') {\n ;(adapter as any).__wevu_enableSetData(true)\n }\n ;(target as any).__wevu?.__wevu_flushSetupSnapshotSync?.()\n}\n\nexport function setRuntimeSetDataVisibility(target: InternalRuntimeState, visible: boolean) {\n const adapter = (target as any).__wevu?.adapter\n if (adapter && typeof (adapter as any).__wevu_setVisibility === 'function') {\n ;(adapter as any).__wevu_setVisibility(visible)\n }\n}\n\n/**\n * 卸载运行时实例(框架内部注册流程使用)。\n * @internal\n */\nexport function teardownRuntimeInstance(target: InternalRuntimeState, options?: { skipHooks?: boolean }) {\n const runtime = target.__wevu\n const ownerId = (target as any)[WEVU_RUNTIME_OWNER_ID_KEY]\n ?? (target as any)[WEVU_SLOT_OWNER_ID_KEY]\n if (ownerId) {\n removeOwner(ownerId)\n }\n clearTemplateRefs(target)\n // 触发卸载钩子(仅在 teardown 首次执行时触发)\n if (!options?.skipHooks && runtime && target[WEVU_HOOKS_KEY]) {\n callHookList(target, 'onUnload', [])\n }\n // 清理注册的生命周期钩子\n if (target[WEVU_HOOKS_KEY]) {\n target[WEVU_HOOKS_KEY] = undefined\n }\n const stops = target[WEVU_WATCH_STOPS_KEY]\n if (Array.isArray(stops)) {\n for (const stop of stops) {\n try {\n stop()\n }\n catch {\n // 避免 teardown 中断:单个 stop 失败不阻塞其他清理\n }\n }\n }\n target[WEVU_WATCH_STOPS_KEY] = undefined\n target[WEVU_EFFECT_SCOPE_KEY]?.stop()\n target[WEVU_EFFECT_SCOPE_KEY] = undefined\n if (runtime) {\n runtime.unmount()\n }\n delete target.__wevu\n if (WEVU_PUBLIC_RUNTIME_KEY in target) {\n delete (target as any)[WEVU_PUBLIC_RUNTIME_KEY]\n }\n}\n\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 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 if (previousRuntimeState) {\n const nativeData = (target as any).data\n if (nativeData && typeof nativeData === 'object') {\n Object.assign(nativeData, cloneInitialSnapshotValue(previousRuntimeState))\n }\n syncRuntimeStateFromNativeData(target, {\n includeSetupState: true,\n nativeData: previousRuntimeState,\n })\n }\n if (!previousRuntime || previousRuntime === nextRuntime) {\n return nextRuntime\n }\n return preserveRuntimeFacadeIdentity(target, previousRuntime, nextRuntime)\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { getCurrentMiniProgramHostConfig, getMiniProgramGlobalObject } from "../platform.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/runtime/register/setDataFrequencyWarning.ts
|
|
4
|
+
function isObject(value) {
|
|
5
|
+
return !!value && typeof value === "object" && !Array.isArray(value);
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* 解析 setData 高频告警配置。
|
|
9
|
+
*/
|
|
10
|
+
function resolveHighFrequencyWarningOptions(option) {
|
|
11
|
+
var _option$enabled, _option$devOnly, _option$warnOnPageScr;
|
|
12
|
+
const defaults = {
|
|
13
|
+
devOnly: true,
|
|
14
|
+
sampleWindowMs: 1e3,
|
|
15
|
+
maxCalls: 30,
|
|
16
|
+
coolDownMs: 5e3,
|
|
17
|
+
warnOnPageScroll: true,
|
|
18
|
+
pageScrollCoolDownMs: 2e3
|
|
19
|
+
};
|
|
20
|
+
if (option === void 0 || option === false) return {
|
|
21
|
+
...defaults,
|
|
22
|
+
enabled: false
|
|
23
|
+
};
|
|
24
|
+
if (option === true) return {
|
|
25
|
+
...defaults,
|
|
26
|
+
enabled: true
|
|
27
|
+
};
|
|
28
|
+
if (!isObject(option)) return {
|
|
29
|
+
...defaults,
|
|
30
|
+
enabled: false
|
|
31
|
+
};
|
|
32
|
+
return {
|
|
33
|
+
enabled: (_option$enabled = option.enabled) !== null && _option$enabled !== void 0 ? _option$enabled : true,
|
|
34
|
+
devOnly: (_option$devOnly = option.devOnly) !== null && _option$devOnly !== void 0 ? _option$devOnly : defaults.devOnly,
|
|
35
|
+
sampleWindowMs: typeof option.sampleWindowMs === "number" ? Math.max(100, Math.floor(option.sampleWindowMs)) : defaults.sampleWindowMs,
|
|
36
|
+
maxCalls: typeof option.maxCalls === "number" ? Math.max(1, Math.floor(option.maxCalls)) : defaults.maxCalls,
|
|
37
|
+
coolDownMs: typeof option.coolDownMs === "number" ? Math.max(0, Math.floor(option.coolDownMs)) : defaults.coolDownMs,
|
|
38
|
+
warnOnPageScroll: (_option$warnOnPageScr = option.warnOnPageScroll) !== null && _option$warnOnPageScr !== void 0 ? _option$warnOnPageScr : defaults.warnOnPageScroll,
|
|
39
|
+
pageScrollCoolDownMs: typeof option.pageScrollCoolDownMs === "number" ? Math.max(0, Math.floor(option.pageScrollCoolDownMs)) : defaults.pageScrollCoolDownMs
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* 判断当前是否为开发态运行环境。
|
|
44
|
+
*/
|
|
45
|
+
function isDevelopmentRuntime() {
|
|
46
|
+
const miniProgramHostConfig = getCurrentMiniProgramHostConfig();
|
|
47
|
+
if ((miniProgramHostConfig === null || miniProgramHostConfig === void 0 ? void 0 : miniProgramHostConfig.debug) === true || (miniProgramHostConfig === null || miniProgramHostConfig === void 0 ? void 0 : miniProgramHostConfig.envVersion) === "develop") return true;
|
|
48
|
+
const miniProgramGlobal = getMiniProgramGlobalObject();
|
|
49
|
+
try {
|
|
50
|
+
var _miniProgramGlobal$ge;
|
|
51
|
+
if ((miniProgramGlobal === null || miniProgramGlobal === void 0 || (_miniProgramGlobal$ge = miniProgramGlobal.getAccountInfoSync) === null || _miniProgramGlobal$ge === void 0 || (_miniProgramGlobal$ge = _miniProgramGlobal$ge.call(miniProgramGlobal)) === null || _miniProgramGlobal$ge === void 0 || (_miniProgramGlobal$ge = _miniProgramGlobal$ge.miniProgram) === null || _miniProgramGlobal$ge === void 0 ? void 0 : _miniProgramGlobal$ge.envVersion) === "develop") return true;
|
|
52
|
+
} catch (_unused) {}
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* 创建 setData 高频调用告警监视器。
|
|
57
|
+
*/
|
|
58
|
+
function createSetDataHighFrequencyWarningMonitor(options) {
|
|
59
|
+
var _options$now, _options$logger;
|
|
60
|
+
const resolved = resolveHighFrequencyWarningOptions(options.option);
|
|
61
|
+
if (!resolved.enabled) return;
|
|
62
|
+
const isDev = isDevelopmentRuntime();
|
|
63
|
+
if (resolved.devOnly && !isDev) return;
|
|
64
|
+
const now = (_options$now = options.now) !== null && _options$now !== void 0 ? _options$now : (() => Date.now());
|
|
65
|
+
const logger = (_options$logger = options.logger) !== null && _options$logger !== void 0 ? _options$logger : ((message) => {
|
|
66
|
+
var _globalThis;
|
|
67
|
+
const runtimeConsoleWarn = (_globalThis = globalThis) === null || _globalThis === void 0 || (_globalThis = _globalThis.console) === null || _globalThis === void 0 ? void 0 : _globalThis.warn;
|
|
68
|
+
if (typeof runtimeConsoleWarn === "function") runtimeConsoleWarn(message);
|
|
69
|
+
});
|
|
70
|
+
const callTimes = [];
|
|
71
|
+
let lastWarnAt = Number.NEGATIVE_INFINITY;
|
|
72
|
+
let lastPageScrollWarnAt = Number.NEGATIVE_INFINITY;
|
|
73
|
+
return () => {
|
|
74
|
+
var _options$isInPageScro, _options$isInPageScro2;
|
|
75
|
+
const current = now();
|
|
76
|
+
callTimes.push(current);
|
|
77
|
+
const windowStart = current - resolved.sampleWindowMs;
|
|
78
|
+
while (callTimes.length > 0 && callTimes[0] < windowStart) callTimes.shift();
|
|
79
|
+
const inPageScrollHook = (_options$isInPageScro = (_options$isInPageScro2 = options.isInPageScrollHook) === null || _options$isInPageScro2 === void 0 ? void 0 : _options$isInPageScro2.call(options)) !== null && _options$isInPageScro !== void 0 ? _options$isInPageScro : false;
|
|
80
|
+
if (resolved.warnOnPageScroll && inPageScrollHook) {
|
|
81
|
+
if (resolved.pageScrollCoolDownMs <= 0 || current - lastPageScrollWarnAt >= resolved.pageScrollCoolDownMs) {
|
|
82
|
+
lastPageScrollWarnAt = current;
|
|
83
|
+
logger(`[wevu:setData] 检测到 onPageScroll 回调内调用 setData(${options.targetLabel})。建议改用 IntersectionObserver 监听可见性,或对滚动更新做节流。`);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
if (callTimes.length <= resolved.maxCalls) return;
|
|
87
|
+
if (resolved.coolDownMs > 0 && current - lastWarnAt < resolved.coolDownMs) return;
|
|
88
|
+
lastWarnAt = current;
|
|
89
|
+
logger(`[wevu:setData] 检测到高频 setData 调用:${callTimes.length} 次/${resolved.sampleWindowMs}ms(${options.targetLabel})。建议合并更新或降低调用频率。`);
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
//#endregion
|
|
94
|
+
export { createSetDataHighFrequencyWarningMonitor, isDevelopmentRuntime, resolveHighFrequencyWarningOptions };
|
|
95
|
+
//# sourceMappingURL=setDataFrequencyWarning.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setDataFrequencyWarning.mjs","names":[],"sources":["../../../../src/runtime/register/setDataFrequencyWarning.ts"],"sourcesContent":["import type { SetDataSnapshotOptions } from '../types'\nimport { getCurrentMiniProgramHostConfig, getMiniProgramGlobalObject } from '../platform'\n\ninterface ResolvedHighFrequencyWarningOptions {\n enabled: boolean\n devOnly: boolean\n sampleWindowMs: number\n maxCalls: number\n coolDownMs: number\n warnOnPageScroll: boolean\n pageScrollCoolDownMs: number\n}\n\ninterface CreateHighFrequencyWarningMonitorOptions {\n option: SetDataSnapshotOptions['highFrequencyWarning']\n targetLabel: string\n isInPageScrollHook?: () => boolean\n now?: () => number\n logger?: (message: string) => void\n}\n\nfunction isObject(value: unknown): value is Record<string, any> {\n return !!value && typeof value === 'object' && !Array.isArray(value)\n}\n\n/**\n * 解析 setData 高频告警配置。\n */\nexport function resolveHighFrequencyWarningOptions(\n option: SetDataSnapshotOptions['highFrequencyWarning'],\n): ResolvedHighFrequencyWarningOptions {\n const defaults = {\n devOnly: true,\n sampleWindowMs: 1000,\n maxCalls: 30,\n coolDownMs: 5000,\n warnOnPageScroll: true,\n pageScrollCoolDownMs: 2000,\n }\n\n if (option === undefined || option === false) {\n return {\n ...defaults,\n enabled: false,\n }\n }\n if (option === true) {\n return {\n ...defaults,\n enabled: true,\n }\n }\n if (!isObject(option)) {\n return {\n ...defaults,\n enabled: false,\n }\n }\n return {\n enabled: option.enabled ?? true,\n devOnly: option.devOnly ?? defaults.devOnly,\n sampleWindowMs: typeof option.sampleWindowMs === 'number'\n ? Math.max(100, Math.floor(option.sampleWindowMs))\n : defaults.sampleWindowMs,\n maxCalls: typeof option.maxCalls === 'number'\n ? Math.max(1, Math.floor(option.maxCalls))\n : defaults.maxCalls,\n coolDownMs: typeof option.coolDownMs === 'number'\n ? Math.max(0, Math.floor(option.coolDownMs))\n : defaults.coolDownMs,\n warnOnPageScroll: option.warnOnPageScroll ?? defaults.warnOnPageScroll,\n pageScrollCoolDownMs: typeof option.pageScrollCoolDownMs === 'number'\n ? Math.max(0, Math.floor(option.pageScrollCoolDownMs))\n : defaults.pageScrollCoolDownMs,\n }\n}\n\n/**\n * 判断当前是否为开发态运行环境。\n */\nexport function isDevelopmentRuntime(): boolean {\n const miniProgramHostConfig = getCurrentMiniProgramHostConfig()\n if (miniProgramHostConfig?.debug === true || miniProgramHostConfig?.envVersion === 'develop') {\n return true\n }\n\n const miniProgramGlobal = getMiniProgramGlobalObject()\n try {\n const envVersion = miniProgramGlobal?.getAccountInfoSync?.()?.miniProgram?.envVersion\n if (envVersion === 'develop') {\n return true\n }\n }\n catch {\n // 忽略运行环境不支持 getAccountInfoSync 的异常\n }\n\n return false\n}\n\n/**\n * 创建 setData 高频调用告警监视器。\n */\nexport function createSetDataHighFrequencyWarningMonitor(\n options: CreateHighFrequencyWarningMonitorOptions,\n) {\n const resolved = resolveHighFrequencyWarningOptions(options.option)\n if (!resolved.enabled) {\n return undefined\n }\n\n const isDev = isDevelopmentRuntime()\n if (resolved.devOnly && !isDev) {\n return undefined\n }\n\n const now = options.now ?? (() => Date.now())\n const logger = options.logger ?? ((message: string) => {\n const runtimeConsoleWarn = (globalThis as Record<string, any>)?.console?.warn\n if (typeof runtimeConsoleWarn === 'function') {\n runtimeConsoleWarn(message)\n }\n })\n\n const callTimes: number[] = []\n let lastWarnAt = Number.NEGATIVE_INFINITY\n let lastPageScrollWarnAt = Number.NEGATIVE_INFINITY\n\n return () => {\n const current = now()\n callTimes.push(current)\n\n const windowStart = current - resolved.sampleWindowMs\n while (callTimes.length > 0 && callTimes[0] < windowStart) {\n callTimes.shift()\n }\n\n const inPageScrollHook = options.isInPageScrollHook?.() ?? false\n if (resolved.warnOnPageScroll && inPageScrollHook) {\n if (resolved.pageScrollCoolDownMs <= 0 || current - lastPageScrollWarnAt >= resolved.pageScrollCoolDownMs) {\n lastPageScrollWarnAt = current\n logger(\n `[wevu:setData] 检测到 onPageScroll 回调内调用 setData(${options.targetLabel})。建议改用 IntersectionObserver 监听可见性,或对滚动更新做节流。`,\n )\n }\n }\n\n if (callTimes.length <= resolved.maxCalls) {\n return\n }\n if (resolved.coolDownMs > 0 && current - lastWarnAt < resolved.coolDownMs) {\n return\n }\n lastWarnAt = current\n\n logger(\n `[wevu:setData] 检测到高频 setData 调用:${callTimes.length} 次/${resolved.sampleWindowMs}ms(${options.targetLabel})。建议合并更新或降低调用频率。`,\n )\n }\n}\n"],"mappings":";;;AAqBA,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,4BAAS,OAAO,oEAAW;EAC3B,4BAAS,OAAO,oEAAW,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,2CAAkB,OAAO,yFAAoB,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,mFAAI,sBAAuB,WAAU,uFAAQ,sBAAuB,gBAAe,WACjF,OAAO;CAGT,MAAM,oBAAoB,2BAA2B;CACrD,IAAI;;EAEF,4FADmB,kBAAmB,yIAAqB,kGAAG,2FAAa,gBACxD,WACjB,OAAO;CAEX,kBACM,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,sBAAM,QAAQ,iEAAc,KAAK,IAAI;CAC3C,MAAM,4BAAS,QAAQ,qEAAY,YAAoB;;EACrD,MAAM,oCAAsB,6EAAoC,mEAAS;EACzE,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,sEAAmB,QAAQ,gHAAqB,0EAAK;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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
//#region src/runtime/register/setup.ts
|
|
2
|
+
function runSetupFunction(setup, props, context) {
|
|
3
|
+
var _context$runtime;
|
|
4
|
+
if (typeof setup !== "function") return;
|
|
5
|
+
const runtimeContext = (_context$runtime = context === null || context === void 0 ? void 0 : context.runtime) !== null && _context$runtime !== void 0 ? _context$runtime : {
|
|
6
|
+
methods: Object.create(null),
|
|
7
|
+
state: {},
|
|
8
|
+
setupState: {},
|
|
9
|
+
proxy: {},
|
|
10
|
+
watch: () => () => {},
|
|
11
|
+
bindModel: () => {}
|
|
12
|
+
};
|
|
13
|
+
if (context) context.runtime = runtimeContext;
|
|
14
|
+
return setup(props, {
|
|
15
|
+
...context !== null && context !== void 0 ? context : {},
|
|
16
|
+
runtime: runtimeContext
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
//#endregion
|
|
21
|
+
export { runSetupFunction };
|
|
22
|
+
//# sourceMappingURL=setup.mjs.map
|
|
@@ -0,0 +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;;CACA,IAAI,OAAO,UAAU,YACnB;CAEF,MAAM,uFAAiB,QAAS,sEAAW;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,mDAAW,CAAC;EAChB,SAAS;CAEoB,CAAC;AAClC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { mergeOwnerSnapshotProps, updateOwnerSnapshot } from "../scopedSlots.mjs";
|
|
2
|
+
import { WEVU_PROPS_KEY, WEVU_SLOT_OWNER_ID_KEY } from "@weapp-core/constants";
|
|
3
|
+
|
|
4
|
+
//#region src/runtime/register/snapshot.ts
|
|
5
|
+
function refreshOwnerSnapshotFromInstance(instance) {
|
|
6
|
+
var _WEVU_PROPS_KEY;
|
|
7
|
+
const runtime = instance.__wevu;
|
|
8
|
+
const ownerId = instance[WEVU_SLOT_OWNER_ID_KEY];
|
|
9
|
+
if (!runtime || !ownerId || typeof runtime.snapshot !== "function") return;
|
|
10
|
+
const snapshot = runtime.snapshot();
|
|
11
|
+
mergeOwnerSnapshotProps(snapshot, (_WEVU_PROPS_KEY = instance[WEVU_PROPS_KEY]) !== null && _WEVU_PROPS_KEY !== void 0 ? _WEVU_PROPS_KEY : instance.properties);
|
|
12
|
+
updateOwnerSnapshot(ownerId, snapshot, runtime.proxy, instance);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
//#endregion
|
|
16
|
+
export { refreshOwnerSnapshotFromInstance };
|
|
17
|
+
//# sourceMappingURL=snapshot.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapshot.mjs","names":[],"sources":["../../../../src/runtime/register/snapshot.ts"],"sourcesContent":["import type { InternalRuntimeState } from '../types'\nimport {\n WEVU_PROPS_KEY,\n WEVU_SLOT_OWNER_ID_KEY,\n} from '@weapp-core/constants'\nimport { mergeOwnerSnapshotProps, updateOwnerSnapshot } from '../scopedSlots'\n\nexport function refreshOwnerSnapshotFromInstance(instance: InternalRuntimeState) {\n const runtime = instance.__wevu\n const ownerId = (instance as any)[WEVU_SLOT_OWNER_ID_KEY]\n if (!runtime || !ownerId || typeof runtime.snapshot !== 'function') {\n return\n }\n const snapshot = runtime.snapshot()\n const propsSource = (instance as any)[WEVU_PROPS_KEY] ?? (instance as any).properties\n mergeOwnerSnapshotProps(snapshot, propsSource)\n updateOwnerSnapshot(ownerId, snapshot, runtime.proxy, instance)\n}\n"],"mappings":";;;;AAOA,SAAgB,iCAAiC,UAAgC;;CAC/E,MAAM,UAAU,SAAS;CACzB,MAAM,UAAW,SAAiB;CAClC,IAAI,CAAC,WAAW,CAAC,WAAW,OAAO,QAAQ,aAAa,YACtD;CAEF,MAAM,WAAW,QAAQ,SAAS;CAElC,wBAAwB,6BADH,SAAiB,4EAAoB,SAAiB,UAC9B;CAC7C,oBAAoB,SAAS,UAAU,QAAQ,OAAO,QAAQ;AAChE"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
//#region src/runtime/register/watch.ts
|
|
2
|
+
function normalizeWatchDescriptor(descriptor, runtime, instance) {
|
|
3
|
+
if (typeof descriptor === "function") return {
|
|
4
|
+
handler: descriptor.bind(runtime.proxy),
|
|
5
|
+
options: {}
|
|
6
|
+
};
|
|
7
|
+
if (typeof descriptor === "string") {
|
|
8
|
+
var _descriptor, _runtime$methods;
|
|
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];
|
|
10
|
+
if (typeof method === "function") return {
|
|
11
|
+
handler: method.bind(runtime.proxy),
|
|
12
|
+
options: {}
|
|
13
|
+
};
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
if (!descriptor || typeof descriptor !== "object") return;
|
|
17
|
+
const base = normalizeWatchDescriptor(descriptor.handler, runtime, instance);
|
|
18
|
+
if (!base) return;
|
|
19
|
+
const options = { ...base.options };
|
|
20
|
+
if (descriptor.immediate !== void 0) options.immediate = descriptor.immediate;
|
|
21
|
+
if (descriptor.deep !== void 0) options.deep = descriptor.deep;
|
|
22
|
+
return {
|
|
23
|
+
handler: base.handler,
|
|
24
|
+
options
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
function createPathGetter(target, path) {
|
|
28
|
+
const segments = path.split(".").map((segment) => segment.trim()).filter(Boolean);
|
|
29
|
+
if (!segments.length) return () => target;
|
|
30
|
+
return () => {
|
|
31
|
+
let current = target;
|
|
32
|
+
for (const segment of segments) {
|
|
33
|
+
if (current == null) return current;
|
|
34
|
+
current = current[segment];
|
|
35
|
+
}
|
|
36
|
+
return current;
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
function registerWatches(runtime, watchMap, instance, options) {
|
|
40
|
+
const stops = [];
|
|
41
|
+
const proxy = runtime.proxy;
|
|
42
|
+
for (const [expression, descriptor] of Object.entries(watchMap)) {
|
|
43
|
+
var _expression$split$;
|
|
44
|
+
const normalized = normalizeWatchDescriptor(descriptor, runtime, instance);
|
|
45
|
+
if (!normalized) continue;
|
|
46
|
+
const getter = createPathGetter(proxy, expression);
|
|
47
|
+
const stopHandle = runtime.watch(getter, normalized.handler, normalized.options);
|
|
48
|
+
const sourceRoot = (_expression$split$ = expression.split(".")[0]) === null || _expression$split$ === void 0 ? void 0 : _expression$split$.trim();
|
|
49
|
+
if ((options === null || options === void 0 ? void 0 : options.deferMissingSourceBaseline) && !normalized.options.immediate && sourceRoot && !(sourceRoot in proxy)) stopHandle.pause();
|
|
50
|
+
stops.push(stopHandle);
|
|
51
|
+
}
|
|
52
|
+
return stops;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
//#endregion
|
|
56
|
+
export { createPathGetter, normalizeWatchDescriptor, registerWatches };
|
|
57
|
+
//# sourceMappingURL=watch.mjs.map
|
|
@@ -0,0 +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;;EAClC,MAAM,4CAAU,QAAQ,6EAAkB,gEAAgB,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,mCAAa,WAAW,MAAM,GAAG,CAAC,CAAC,4EAAI,KAAK;EAClD,uDACE,QAAS,+BACN,CAAC,WAAW,QAAQ,aACpB,cACA,EAAE,cAAc,QAEnB,WAAW,MAAM;EAEnB,MAAM,KAAK,UAAU;CACvB;CAEA,OAAO;AACT"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { isDeepEqualValue } from "./app/setData/snapshot.mjs";
|
|
2
|
+
import { WEVU_PROPS_KEY, WEVU_RUNTIME_OWNER_ID_KEY, WEVU_SCOPED_SLOT_OWNER_SEED_KEY, WEVU_SCOPED_SLOT_OWNER_STORE_KEY, WEVU_SLOT_OWNER_ID_KEY, WEVU_SLOT_OWNER_ID_PROP, WEVU_SLOT_OWNER_KEY, WEVU_SLOT_OWNER_PROXY_KEY, WEVU_SLOT_PROPS_DATA_KEY, WEVU_SLOT_PROPS_KEY, WEVU_SLOT_SCOPE_KEY } from "@weapp-core/constants";
|
|
3
|
+
|
|
4
|
+
//#region src/runtime/scopedSlots.ts
|
|
5
|
+
function getScopedSlotGlobalStore() {
|
|
6
|
+
const globalObject = globalThis;
|
|
7
|
+
if (!(globalObject[WEVU_SCOPED_SLOT_OWNER_STORE_KEY] instanceof Map)) globalObject[WEVU_SCOPED_SLOT_OWNER_STORE_KEY] = /* @__PURE__ */ new Map();
|
|
8
|
+
if (typeof globalObject[WEVU_SCOPED_SLOT_OWNER_SEED_KEY] !== "number") globalObject[WEVU_SCOPED_SLOT_OWNER_SEED_KEY] = 0;
|
|
9
|
+
return {
|
|
10
|
+
globalObject,
|
|
11
|
+
ownerStore: globalObject[WEVU_SCOPED_SLOT_OWNER_STORE_KEY]
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
function allocateOwnerId() {
|
|
15
|
+
const { globalObject } = getScopedSlotGlobalStore();
|
|
16
|
+
globalObject[WEVU_SCOPED_SLOT_OWNER_SEED_KEY] += 1;
|
|
17
|
+
return `wv${globalObject[WEVU_SCOPED_SLOT_OWNER_SEED_KEY]}`;
|
|
18
|
+
}
|
|
19
|
+
function updateOwnerSnapshot(ownerId, snapshot, proxy, target) {
|
|
20
|
+
var _ownerStore$get;
|
|
21
|
+
const { ownerStore } = getScopedSlotGlobalStore();
|
|
22
|
+
const record = (_ownerStore$get = ownerStore.get(ownerId)) !== null && _ownerStore$get !== void 0 ? _ownerStore$get : {
|
|
23
|
+
snapshot: {},
|
|
24
|
+
proxy,
|
|
25
|
+
subscribers: /* @__PURE__ */ new Set()
|
|
26
|
+
};
|
|
27
|
+
const snapshotChanged = !isDeepEqualValue(record.snapshot, snapshot, 20, { keys: 1e4 });
|
|
28
|
+
const proxyChanged = record.proxy !== proxy;
|
|
29
|
+
record.snapshot = snapshot;
|
|
30
|
+
record.proxy = proxy;
|
|
31
|
+
record.target = target !== null && target !== void 0 ? target : record.target;
|
|
32
|
+
ownerStore.set(ownerId, record);
|
|
33
|
+
if ((snapshotChanged || proxyChanged) && record.subscribers.size) for (const subscriber of record.subscribers) try {
|
|
34
|
+
subscriber(snapshot, proxy);
|
|
35
|
+
} catch (_unused) {}
|
|
36
|
+
}
|
|
37
|
+
function removeOwner(ownerId) {
|
|
38
|
+
const { ownerStore } = getScopedSlotGlobalStore();
|
|
39
|
+
ownerStore.delete(ownerId);
|
|
40
|
+
}
|
|
41
|
+
function subscribeOwner(ownerId, subscriber) {
|
|
42
|
+
var _ownerStore$get2;
|
|
43
|
+
const { ownerStore } = getScopedSlotGlobalStore();
|
|
44
|
+
const record = (_ownerStore$get2 = ownerStore.get(ownerId)) !== null && _ownerStore$get2 !== void 0 ? _ownerStore$get2 : {
|
|
45
|
+
snapshot: {},
|
|
46
|
+
proxy: void 0,
|
|
47
|
+
subscribers: /* @__PURE__ */ new Set()
|
|
48
|
+
};
|
|
49
|
+
record.subscribers.add(subscriber);
|
|
50
|
+
ownerStore.set(ownerId, record);
|
|
51
|
+
return () => {
|
|
52
|
+
const current = ownerStore.get(ownerId);
|
|
53
|
+
if (!current) return;
|
|
54
|
+
current.subscribers.delete(subscriber);
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
function getOwnerProxy(ownerId) {
|
|
58
|
+
var _ownerStore$get3;
|
|
59
|
+
const { ownerStore } = getScopedSlotGlobalStore();
|
|
60
|
+
return (_ownerStore$get3 = ownerStore.get(ownerId)) === null || _ownerStore$get3 === void 0 ? void 0 : _ownerStore$get3.proxy;
|
|
61
|
+
}
|
|
62
|
+
function getOwnerSnapshot(ownerId) {
|
|
63
|
+
var _ownerStore$get4;
|
|
64
|
+
const { ownerStore } = getScopedSlotGlobalStore();
|
|
65
|
+
return (_ownerStore$get4 = ownerStore.get(ownerId)) === null || _ownerStore$get4 === void 0 ? void 0 : _ownerStore$get4.snapshot;
|
|
66
|
+
}
|
|
67
|
+
function getOwnerTarget(ownerId) {
|
|
68
|
+
var _ownerStore$get5;
|
|
69
|
+
const { ownerStore } = getScopedSlotGlobalStore();
|
|
70
|
+
return (_ownerStore$get5 = ownerStore.get(ownerId)) === null || _ownerStore$get5 === void 0 ? void 0 : _ownerStore$get5.target;
|
|
71
|
+
}
|
|
72
|
+
function resolveOwnerSnapshot(runtime) {
|
|
73
|
+
const fastSnapshot = runtime.__wevu_cloneLatestSnapshot;
|
|
74
|
+
if (typeof fastSnapshot === "function") return fastSnapshot();
|
|
75
|
+
return typeof runtime.snapshot === "function" ? runtime.snapshot() : {};
|
|
76
|
+
}
|
|
77
|
+
const OWNER_SNAPSHOT_PROTOCOL_KEYS = /* @__PURE__ */ new Set([
|
|
78
|
+
WEVU_SLOT_OWNER_ID_KEY,
|
|
79
|
+
WEVU_SLOT_OWNER_ID_PROP,
|
|
80
|
+
WEVU_SLOT_OWNER_KEY,
|
|
81
|
+
WEVU_SLOT_OWNER_PROXY_KEY,
|
|
82
|
+
WEVU_SLOT_PROPS_DATA_KEY,
|
|
83
|
+
WEVU_SLOT_PROPS_KEY,
|
|
84
|
+
WEVU_SLOT_SCOPE_KEY
|
|
85
|
+
]);
|
|
86
|
+
function mergeOwnerSnapshotProps(snapshot, propsSource) {
|
|
87
|
+
if (!propsSource || typeof propsSource !== "object") return;
|
|
88
|
+
for (const [key, value] of Object.entries(propsSource)) {
|
|
89
|
+
if (OWNER_SNAPSHOT_PROTOCOL_KEYS.has(key)) continue;
|
|
90
|
+
snapshot[key] = value;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
function attachOwnerSnapshot(target, runtime, ownerId, options) {
|
|
94
|
+
var _WEVU_PROPS_KEY;
|
|
95
|
+
try {
|
|
96
|
+
target[WEVU_RUNTIME_OWNER_ID_KEY] = ownerId;
|
|
97
|
+
} catch (_unused2) {}
|
|
98
|
+
try {
|
|
99
|
+
runtime.state[WEVU_SLOT_OWNER_ID_KEY] = ownerId;
|
|
100
|
+
} catch (_unused3) {}
|
|
101
|
+
try {
|
|
102
|
+
target[WEVU_SLOT_OWNER_ID_KEY] = ownerId;
|
|
103
|
+
} catch (_unused4) {}
|
|
104
|
+
try {
|
|
105
|
+
const data = target.data;
|
|
106
|
+
if (data && typeof data === "object") data[WEVU_SLOT_OWNER_ID_KEY] = ownerId;
|
|
107
|
+
} catch (_unused5) {}
|
|
108
|
+
const snapshot = (options === null || options === void 0 ? void 0 : options.deferSnapshot) ? {} : resolveOwnerSnapshot(runtime);
|
|
109
|
+
mergeOwnerSnapshotProps(snapshot, (_WEVU_PROPS_KEY = target[WEVU_PROPS_KEY]) !== null && _WEVU_PROPS_KEY !== void 0 ? _WEVU_PROPS_KEY : target.properties);
|
|
110
|
+
updateOwnerSnapshot(ownerId, snapshot, runtime.proxy, target);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
//#endregion
|
|
114
|
+
export { allocateOwnerId, attachOwnerSnapshot, getOwnerProxy, getOwnerSnapshot, getOwnerTarget, mergeOwnerSnapshotProps, removeOwner, resolveOwnerSnapshot, subscribeOwner, updateOwnerSnapshot };
|
|
115
|
+
//# sourceMappingURL=scopedSlots.mjs.map
|
|
@@ -0,0 +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'\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_cloneLatestSnapshot?: () => Record<string, any>\n}\n\nfunction getScopedSlotGlobalStore() {\n const globalObject = globalThis as Record<string, any>\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_cloneLatestSnapshot\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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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { getCurrentInstance, getCurrentSetupContext } from "./hooks/base.mjs";
|
|
2
|
+
import { createSelectorQuery } from "./templateRefs/helpers.mjs";
|
|
3
|
+
|
|
4
|
+
//#region src/runtime/selectorQuery.ts
|
|
5
|
+
function resolveSetupContext(apiName, context) {
|
|
6
|
+
const resolved = context !== null && context !== void 0 ? context : getCurrentInstance();
|
|
7
|
+
if (!resolved || !getCurrentSetupContext()) throw new Error(`${apiName}() 必须在 setup() 的同步阶段调用`);
|
|
8
|
+
return resolved;
|
|
9
|
+
}
|
|
10
|
+
function runSelectorQuery(context, selector, all, apply) {
|
|
11
|
+
const query = createSelectorQuery(context);
|
|
12
|
+
if (!query || !selector) return Promise.resolve(null);
|
|
13
|
+
apply(all ? query.selectAll(selector) : query.select(selector));
|
|
14
|
+
return new Promise((resolve) => {
|
|
15
|
+
query.exec((res) => {
|
|
16
|
+
const result = Array.isArray(res) ? res[0] : null;
|
|
17
|
+
resolve(result !== null && result !== void 0 ? result : null);
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* 创建绑定当前小程序实例的选择器查询工厂。
|
|
23
|
+
*/
|
|
24
|
+
function useSelectorQuery(options = {}) {
|
|
25
|
+
const context = resolveSetupContext("useSelectorQuery", options.context);
|
|
26
|
+
return () => createSelectorQuery(context);
|
|
27
|
+
}
|
|
28
|
+
function useBoundingClientRect(options = {}) {
|
|
29
|
+
var _options$all;
|
|
30
|
+
const context = resolveSetupContext("useBoundingClientRect", options.context);
|
|
31
|
+
const all = (_options$all = options.all) !== null && _options$all !== void 0 ? _options$all : false;
|
|
32
|
+
return (selector) => runSelectorQuery(context, selector, all, (nodesRef) => nodesRef.boundingClientRect());
|
|
33
|
+
}
|
|
34
|
+
function useSelectorFields(options) {
|
|
35
|
+
var _options$all2;
|
|
36
|
+
const context = resolveSetupContext("useSelectorFields", options.context);
|
|
37
|
+
const all = (_options$all2 = options.all) !== null && _options$all2 !== void 0 ? _options$all2 : false;
|
|
38
|
+
return (selector) => runSelectorQuery(context, selector, all, (nodesRef) => nodesRef.fields(options.fields));
|
|
39
|
+
}
|
|
40
|
+
function useScrollOffset(options = {}) {
|
|
41
|
+
var _options$all3;
|
|
42
|
+
const context = resolveSetupContext("useScrollOffset", options.context);
|
|
43
|
+
const all = (_options$all3 = options.all) !== null && _options$all3 !== void 0 ? _options$all3 : false;
|
|
44
|
+
return (selector) => runSelectorQuery(context, selector, all, (nodesRef) => nodesRef.scrollOffset());
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
//#endregion
|
|
48
|
+
export { useBoundingClientRect, useScrollOffset, useSelectorFields, useSelectorQuery };
|
|
49
|
+
//# sourceMappingURL=selectorQuery.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selectorQuery.mjs","names":[],"sources":["../../../src/runtime/selectorQuery.ts"],"sourcesContent":["import type {\n InternalRuntimeState,\n MiniProgramBoundingClientRectResult,\n MiniProgramNodesRefFields,\n MiniProgramScrollOffsetResult,\n MiniProgramSelectorQuery,\n} from './types'\nimport { getCurrentInstance, getCurrentSetupContext } from './hooks'\nimport { createSelectorQuery } from './templateRefs/helpers'\n\nexport interface UseSelectorQueryOptions {\n context?: InternalRuntimeState | null\n}\n\nexport interface UseBoundingClientRectOptions extends UseSelectorQueryOptions {\n all?: boolean\n}\n\nexport interface UseSelectorFieldsOptions extends UseSelectorQueryOptions {\n all?: boolean\n fields: MiniProgramNodesRefFields\n}\n\nexport interface UseScrollOffsetOptions extends UseSelectorQueryOptions {\n all?: boolean\n}\n\nexport interface UseAllBoundingClientRectOptions extends UseSelectorQueryOptions {\n all: true\n}\n\nexport interface UseAllSelectorFieldsOptions extends UseSelectorQueryOptions {\n all: true\n fields: MiniProgramNodesRefFields\n}\n\nexport interface UseAllScrollOffsetOptions extends UseSelectorQueryOptions {\n all: true\n}\n\nfunction resolveSetupContext<T extends InternalRuntimeState>(\n apiName: string,\n context?: T | null,\n): T {\n const resolved = context ?? getCurrentInstance<T>()\n if (!resolved || !getCurrentSetupContext()) {\n throw new Error(`${apiName}() 必须在 setup() 的同步阶段调用`)\n }\n return resolved\n}\n\nfunction runSelectorQuery<T>(\n context: InternalRuntimeState,\n selector: string,\n all: boolean,\n apply: (nodesRef: any) => void,\n): Promise<T | null> {\n const query = createSelectorQuery(context)\n if (!query || !selector) {\n return Promise.resolve(null)\n }\n\n const nodesRef = all ? query.selectAll(selector) : query.select(selector)\n apply(nodesRef)\n\n return new Promise((resolve) => {\n query.exec((res) => {\n const result = Array.isArray(res) ? res[0] : null\n resolve((result ?? null) as T | null)\n })\n })\n}\n\n/**\n * 创建绑定当前小程序实例的选择器查询工厂。\n */\nexport function useSelectorQuery(options: UseSelectorQueryOptions = {}) {\n const context = resolveSetupContext('useSelectorQuery', options.context)\n return (): MiniProgramSelectorQuery | null => createSelectorQuery(context)\n}\n\n/**\n * 创建绑定当前小程序实例的节点布局查询函数。\n */\nexport function useBoundingClientRect(\n options?: UseBoundingClientRectOptions & { all?: false },\n): (selector: string) => Promise<MiniProgramBoundingClientRectResult | null>\nexport function useBoundingClientRect(\n options: UseAllBoundingClientRectOptions,\n): (selector: string) => Promise<MiniProgramBoundingClientRectResult[] | null>\nexport function useBoundingClientRect(options: UseBoundingClientRectOptions = {}) {\n const context = resolveSetupContext('useBoundingClientRect', options.context)\n const all = options.all ?? false\n\n return (selector: string) => runSelectorQuery<\n MiniProgramBoundingClientRectResult | MiniProgramBoundingClientRectResult[]\n >(\n context,\n selector,\n all,\n nodesRef => nodesRef.boundingClientRect(),\n )\n}\n\n/**\n * 创建绑定当前小程序实例的节点字段查询函数。\n */\nexport function useSelectorFields(\n options: UseSelectorFieldsOptions & { all?: false },\n): (selector: string) => Promise<Record<string, any> | null>\nexport function useSelectorFields(\n options: UseAllSelectorFieldsOptions,\n): (selector: string) => Promise<Array<Record<string, any>> | null>\nexport function useSelectorFields(options: UseSelectorFieldsOptions) {\n const context = resolveSetupContext('useSelectorFields', options.context)\n const all = options.all ?? false\n\n return (selector: string) => runSelectorQuery(\n context,\n selector,\n all,\n nodesRef => nodesRef.fields(options.fields),\n )\n}\n\n/**\n * 创建绑定当前小程序实例的滚动位置查询函数。\n */\nexport function useScrollOffset(\n options?: UseScrollOffsetOptions & { all?: false },\n): (selector: string) => Promise<MiniProgramScrollOffsetResult | null>\nexport function useScrollOffset(\n options: UseAllScrollOffsetOptions,\n): (selector: string) => Promise<MiniProgramScrollOffsetResult[] | null>\nexport function useScrollOffset(options: UseScrollOffsetOptions = {}) {\n const context = resolveSetupContext('useScrollOffset', options.context)\n const all = options.all ?? false\n\n return (selector: string) => runSelectorQuery<\n MiniProgramScrollOffsetResult | MiniProgramScrollOffsetResult[]\n >(\n context,\n selector,\n all,\n nodesRef => nodesRef.scrollOffset(),\n )\n}\n"],"mappings":";;;;AAwCA,SAAS,oBACP,SACA,SACG;CACH,MAAM,WAAW,mDAAW,mBAAsB;CAClD,IAAI,CAAC,YAAY,CAAC,uBAAuB,GACvC,MAAM,IAAI,MAAM,GAAG,QAAQ,uBAAuB;CAEpD,OAAO;AACT;AAEA,SAAS,iBACP,SACA,UACA,KACA,OACmB;CACnB,MAAM,QAAQ,oBAAoB,OAAO;CACzC,IAAI,CAAC,SAAS,CAAC,UACb,OAAO,QAAQ,QAAQ,IAAI;CAI7B,MADiB,MAAM,MAAM,UAAU,QAAQ,IAAI,MAAM,OAAO,QAAQ,CAC1D;CAEd,OAAO,IAAI,SAAS,YAAY;EAC9B,MAAM,MAAM,QAAQ;GAClB,MAAM,SAAS,MAAM,QAAQ,GAAG,IAAI,IAAI,KAAK;GAC7C,QAAS,gDAAU,IAAiB;EACtC,CAAC;CACH,CAAC;AACH;;;;AAKA,SAAgB,iBAAiB,UAAmC,CAAC,GAAG;CACtE,MAAM,UAAU,oBAAoB,oBAAoB,QAAQ,OAAO;CACvE,aAA8C,oBAAoB,OAAO;AAC3E;AAWA,SAAgB,sBAAsB,UAAwC,CAAC,GAAG;;CAChF,MAAM,UAAU,oBAAoB,yBAAyB,QAAQ,OAAO;CAC5E,MAAM,sBAAM,QAAQ,0DAAO;CAE3B,QAAQ,aAAqB,iBAG3B,SACA,UACA,MACA,aAAY,SAAS,mBAAmB,CAC1C;AACF;AAWA,SAAgB,kBAAkB,SAAmC;;CACnE,MAAM,UAAU,oBAAoB,qBAAqB,QAAQ,OAAO;CACxE,MAAM,uBAAM,QAAQ,4DAAO;CAE3B,QAAQ,aAAqB,iBAC3B,SACA,UACA,MACA,aAAY,SAAS,OAAO,QAAQ,MAAM,CAC5C;AACF;AAWA,SAAgB,gBAAgB,UAAkC,CAAC,GAAG;;CACpE,MAAM,UAAU,oBAAoB,mBAAmB,QAAQ,OAAO;CACtE,MAAM,uBAAM,QAAQ,4DAAO;CAE3B,QAAQ,aAAqB,iBAG3B,SACA,UACA,MACA,aAAY,SAAS,aAAa,CACpC;AACF"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { toRaw } from "../reactivity/reactive/shared.mjs";
|
|
2
|
+
import { touchReactive } from "../reactivity/reactive/patch.mjs";
|
|
3
|
+
import { isReactive } from "../reactivity/reactive.mjs";
|
|
4
|
+
import { isRef } from "../reactivity/ref.mjs";
|
|
5
|
+
|
|
6
|
+
//#region src/runtime/setupTracking.ts
|
|
7
|
+
function isPlainObject(value) {
|
|
8
|
+
if (Object.prototype.toString.call(value) !== "[object Object]") return false;
|
|
9
|
+
const proto = Object.getPrototypeOf(value);
|
|
10
|
+
return proto === null || proto === Object.prototype;
|
|
11
|
+
}
|
|
12
|
+
function shouldTraverse(value) {
|
|
13
|
+
return Array.isArray(value) || isPlainObject(value);
|
|
14
|
+
}
|
|
15
|
+
function getTrackableChildren(value) {
|
|
16
|
+
if (Array.isArray(value)) return value;
|
|
17
|
+
const children = [];
|
|
18
|
+
for (const key of Object.keys(value)) {
|
|
19
|
+
const descriptor = Object.getOwnPropertyDescriptor(value, key);
|
|
20
|
+
if (!descriptor || typeof descriptor.get === "function") continue;
|
|
21
|
+
children.push(descriptor.value);
|
|
22
|
+
}
|
|
23
|
+
return children;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* 判断 setup 返回值是否包含需要额外跟踪的 ref/reactive 源。
|
|
27
|
+
*/
|
|
28
|
+
function hasTrackableSetupBinding(value, seen = /* @__PURE__ */ new WeakSet()) {
|
|
29
|
+
if (isRef(value) || isReactive(value)) return true;
|
|
30
|
+
if (!value || typeof value !== "object") return false;
|
|
31
|
+
if (seen.has(value)) return false;
|
|
32
|
+
seen.add(value);
|
|
33
|
+
if (!shouldTraverse(value)) return false;
|
|
34
|
+
return getTrackableChildren(value).some((item) => hasTrackableSetupBinding(item, seen));
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* 递归触达 setup 返回值中的 ref/reactive,确保异步更新能驱动 setData 调度。
|
|
38
|
+
*/
|
|
39
|
+
function touchSetupBinding(value, seen = /* @__PURE__ */ new WeakSet()) {
|
|
40
|
+
if (isRef(value)) {
|
|
41
|
+
const inner = value.value;
|
|
42
|
+
if (isReactive(inner)) touchReactive(inner);
|
|
43
|
+
touchSetupBinding(inner, seen);
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
if (isReactive(value)) {
|
|
47
|
+
touchReactive(value);
|
|
48
|
+
touchSetupBinding(toRaw(value), seen);
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
if (!value || typeof value !== "object") return;
|
|
52
|
+
if (seen.has(value) || !shouldTraverse(value)) return;
|
|
53
|
+
seen.add(value);
|
|
54
|
+
getTrackableChildren(value).forEach((item) => touchSetupBinding(item, seen));
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
//#endregion
|
|
58
|
+
export { hasTrackableSetupBinding, touchSetupBinding };
|
|
59
|
+
//# sourceMappingURL=setupTracking.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setupTracking.mjs","names":[],"sources":["../../../src/runtime/setupTracking.ts"],"sourcesContent":["import { isReactive, toRaw, touchReactive } from '../reactivity'\nimport { isRef } from '../reactivity/ref'\n\nfunction isPlainObject(value: unknown): value is Record<string, any> {\n if (Object.prototype.toString.call(value) !== '[object Object]') {\n return false\n }\n const proto = Object.getPrototypeOf(value)\n return proto === null || proto === Object.prototype\n}\n\nfunction shouldTraverse(value: unknown): value is Record<string, any> | any[] {\n return Array.isArray(value) || isPlainObject(value)\n}\n\nfunction getTrackableChildren(value: Record<string, any> | any[]) {\n if (Array.isArray(value)) {\n return value\n }\n const children: unknown[] = []\n for (const key of Object.keys(value)) {\n const descriptor = Object.getOwnPropertyDescriptor(value, key)\n if (!descriptor || typeof descriptor.get === 'function') {\n continue\n }\n children.push(descriptor.value)\n }\n return children\n}\n\n/**\n * 判断 setup 返回值是否包含需要额外跟踪的 ref/reactive 源。\n */\nexport function hasTrackableSetupBinding(value: unknown, seen = new WeakSet<object>()): boolean {\n if (isRef(value) || isReactive(value)) {\n return true\n }\n if (!value || typeof value !== 'object') {\n return false\n }\n if (seen.has(value as object)) {\n return false\n }\n seen.add(value as object)\n if (!shouldTraverse(value)) {\n return false\n }\n return getTrackableChildren(value).some(item => hasTrackableSetupBinding(item, seen))\n}\n\n/**\n * 递归触达 setup 返回值中的 ref/reactive,确保异步更新能驱动 setData 调度。\n */\nexport function touchSetupBinding(value: unknown, seen = new WeakSet<object>()) {\n if (isRef(value)) {\n const inner = value.value\n if (isReactive(inner)) {\n touchReactive(inner as any)\n }\n touchSetupBinding(inner, seen)\n return\n }\n if (isReactive(value)) {\n touchReactive(value as any)\n touchSetupBinding(toRaw(value as any), seen)\n return\n }\n if (!value || typeof value !== 'object') {\n return\n }\n if (seen.has(value as object) || !shouldTraverse(value)) {\n return\n }\n seen.add(value as object)\n getTrackableChildren(value).forEach(item => touchSetupBinding(item, seen))\n}\n"],"mappings":";;;;;;AAGA,SAAS,cAAc,OAA8C;CACnE,IAAI,OAAO,UAAU,SAAS,KAAK,KAAK,MAAM,mBAC5C,OAAO;CAET,MAAM,QAAQ,OAAO,eAAe,KAAK;CACzC,OAAO,UAAU,QAAQ,UAAU,OAAO;AAC5C;AAEA,SAAS,eAAe,OAAsD;CAC5E,OAAO,MAAM,QAAQ,KAAK,KAAK,cAAc,KAAK;AACpD;AAEA,SAAS,qBAAqB,OAAoC;CAChE,IAAI,MAAM,QAAQ,KAAK,GACrB,OAAO;CAET,MAAM,WAAsB,CAAC;CAC7B,KAAK,MAAM,OAAO,OAAO,KAAK,KAAK,GAAG;EACpC,MAAM,aAAa,OAAO,yBAAyB,OAAO,GAAG;EAC7D,IAAI,CAAC,cAAc,OAAO,WAAW,QAAQ,YAC3C;EAEF,SAAS,KAAK,WAAW,KAAK;CAChC;CACA,OAAO;AACT;;;;AAKA,SAAgB,yBAAyB,OAAgB,uBAAO,IAAI,QAAgB,GAAY;CAC9F,IAAI,MAAM,KAAK,KAAK,WAAW,KAAK,GAClC,OAAO;CAET,IAAI,CAAC,SAAS,OAAO,UAAU,UAC7B,OAAO;CAET,IAAI,KAAK,IAAI,KAAe,GAC1B,OAAO;CAET,KAAK,IAAI,KAAe;CACxB,IAAI,CAAC,eAAe,KAAK,GACvB,OAAO;CAET,OAAO,qBAAqB,KAAK,CAAC,CAAC,MAAK,SAAQ,yBAAyB,MAAM,IAAI,CAAC;AACtF;;;;AAKA,SAAgB,kBAAkB,OAAgB,uBAAO,IAAI,QAAgB,GAAG;CAC9E,IAAI,MAAM,KAAK,GAAG;EAChB,MAAM,QAAQ,MAAM;EACpB,IAAI,WAAW,KAAK,GAClB,cAAc,KAAY;EAE5B,kBAAkB,OAAO,IAAI;EAC7B;CACF;CACA,IAAI,WAAW,KAAK,GAAG;EACrB,cAAc,KAAY;EAC1B,kBAAkB,MAAM,KAAY,GAAG,IAAI;EAC3C;CACF;CACA,IAAI,CAAC,SAAS,OAAO,UAAU,UAC7B;CAEF,IAAI,KAAK,IAAI,KAAe,KAAK,CAAC,eAAe,KAAK,GACpD;CAEF,KAAK,IAAI,KAAe;CACxB,qBAAqB,KAAK,CAAC,CAAC,SAAQ,SAAQ,kBAAkB,MAAM,IAAI,CAAC;AAC3E"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { unref } from "../reactivity/ref.mjs";
|
|
2
|
+
import { WEVU_SETUP_STATE_KEY } from "@weapp-core/constants";
|
|
2
3
|
|
|
3
4
|
//#region src/runtime/template.ts
|
|
4
5
|
const hyphenateRE = /\B([A-Z])/g;
|
|
@@ -80,12 +81,14 @@ function resolvePropValue(target, key, fallback, preferProps = false) {
|
|
|
80
81
|
return fallback;
|
|
81
82
|
}
|
|
82
83
|
const stateObject = unref(target.$state);
|
|
83
|
-
|
|
84
|
+
const setupStateObject = stateObject === null || stateObject === void 0 ? void 0 : stateObject[WEVU_SETUP_STATE_KEY];
|
|
85
|
+
if (setupStateObject != null && hasOwnProperty(setupStateObject, key)) return target[key];
|
|
86
|
+
if (stateObject != null && hasOwnProperty(stateObject, key)) return stateObject[key];
|
|
84
87
|
if (hasPropsValue) return propsObject[key];
|
|
85
88
|
if (!(key in target)) return fallback;
|
|
86
89
|
return target[key];
|
|
87
90
|
}
|
|
88
91
|
|
|
89
92
|
//#endregion
|
|
90
|
-
export { normalizeStyle
|
|
91
|
-
//# sourceMappingURL=template
|
|
93
|
+
export { normalizeClass, normalizeStyle, resolvePropValue };
|
|
94
|
+
//# sourceMappingURL=template.mjs.map
|