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,78 @@
|
|
|
1
|
+
import { toRaw } from "../../reactivity/reactive/shared.mjs";
|
|
2
|
+
import { isReactive } from "../../reactivity/reactive.mjs";
|
|
3
|
+
import { isRef } from "../../reactivity/ref.mjs";
|
|
4
|
+
import { hasTrackableSetupBinding } from "../setupTracking.mjs";
|
|
5
|
+
|
|
6
|
+
//#region src/runtime/define/setupResult.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 shouldExposeInSnapshot(value) {
|
|
13
|
+
if (value == null) return true;
|
|
14
|
+
if (typeof value !== "object") return true;
|
|
15
|
+
if (isRef(value) || isReactive(value)) return true;
|
|
16
|
+
if (Array.isArray(value)) return true;
|
|
17
|
+
return isPlainObject(value);
|
|
18
|
+
}
|
|
19
|
+
function applySetupResult(runtime, target, result, options) {
|
|
20
|
+
var _runtime$methods, _runtime$state, _runtime$setupState;
|
|
21
|
+
const includeFunctionsInState = Boolean(options === null || options === void 0 ? void 0 : options.includeFunctionsInState);
|
|
22
|
+
const functionPropPaths = options === null || options === void 0 ? void 0 : options.functionPropPaths;
|
|
23
|
+
const methods = (_runtime$methods = runtime === null || runtime === void 0 ? void 0 : runtime.methods) !== null && _runtime$methods !== void 0 ? _runtime$methods : Object.create(null);
|
|
24
|
+
const state = (_runtime$state = runtime === null || runtime === void 0 ? void 0 : runtime.state) !== null && _runtime$state !== void 0 ? _runtime$state : Object.create(null);
|
|
25
|
+
const setupState = (_runtime$setupState = runtime === null || runtime === void 0 ? void 0 : runtime.setupState) !== null && _runtime$setupState !== void 0 ? _runtime$setupState : Object.create(null);
|
|
26
|
+
const rawState = isReactive(state) ? toRaw(state) : state;
|
|
27
|
+
let methodsChanged = false;
|
|
28
|
+
if (runtime && !runtime.methods) try {
|
|
29
|
+
runtime.methods = methods;
|
|
30
|
+
} catch (_unused) {}
|
|
31
|
+
if (runtime && !runtime.state) try {
|
|
32
|
+
runtime.state = state;
|
|
33
|
+
} catch (_unused2) {}
|
|
34
|
+
if (runtime && !runtime.setupState) try {
|
|
35
|
+
runtime.setupState = setupState;
|
|
36
|
+
} catch (_unused3) {}
|
|
37
|
+
Object.keys(result).forEach((key) => {
|
|
38
|
+
const val = result[key];
|
|
39
|
+
if (typeof val === "function") {
|
|
40
|
+
const bound = (...args) => {
|
|
41
|
+
var _runtime$proxy;
|
|
42
|
+
return val.apply((_runtime$proxy = runtime === null || runtime === void 0 ? void 0 : runtime.proxy) !== null && _runtime$proxy !== void 0 ? _runtime$proxy : runtime, args);
|
|
43
|
+
};
|
|
44
|
+
methods[key] = bound;
|
|
45
|
+
state[key] = bound;
|
|
46
|
+
if (includeFunctionsInState || (functionPropPaths === null || functionPropPaths === void 0 ? void 0 : functionPropPaths.has(key))) setupState[key] = bound;
|
|
47
|
+
methodsChanged = true;
|
|
48
|
+
} else {
|
|
49
|
+
if (hasTrackableSetupBinding(val)) {
|
|
50
|
+
var _runtime$__wevu_track;
|
|
51
|
+
runtime === null || runtime === void 0 || (_runtime$__wevu_track = runtime.__wevu_trackSetupReactiveKey) === null || _runtime$__wevu_track === void 0 || _runtime$__wevu_track.call(runtime, key);
|
|
52
|
+
}
|
|
53
|
+
state[key] = val;
|
|
54
|
+
if (val === target || !shouldExposeInSnapshot(val)) try {
|
|
55
|
+
Object.defineProperty(rawState, key, {
|
|
56
|
+
value: val,
|
|
57
|
+
configurable: true,
|
|
58
|
+
enumerable: false,
|
|
59
|
+
writable: true
|
|
60
|
+
});
|
|
61
|
+
} catch (_unused4) {}
|
|
62
|
+
setupState[key] = val;
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
if (runtime) {
|
|
66
|
+
var _runtime$methods2, _runtime$state2;
|
|
67
|
+
runtime.methods = (_runtime$methods2 = runtime.methods) !== null && _runtime$methods2 !== void 0 ? _runtime$methods2 : methods;
|
|
68
|
+
runtime.state = (_runtime$state2 = runtime.state) !== null && _runtime$state2 !== void 0 ? _runtime$state2 : state;
|
|
69
|
+
if (methodsChanged) {
|
|
70
|
+
var _runtime$__wevu_touch;
|
|
71
|
+
(_runtime$__wevu_touch = runtime.__wevu_touchSetupMethodsVersion) === null || _runtime$__wevu_touch === void 0 || _runtime$__wevu_touch.call(runtime);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
//#endregion
|
|
77
|
+
export { applySetupResult, shouldExposeInSnapshot };
|
|
78
|
+
//# sourceMappingURL=setupResult.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setupResult.mjs","names":[],"sources":["../../../../src/runtime/define/setupResult.ts"],"sourcesContent":["import { isReactive, isRef, toRaw } from '../../reactivity'\nimport { hasTrackableSetupBinding } from '../setupTracking'\n\nfunction isPlainObject(value: unknown): value is Record<string, any> {\n if (Object.prototype.toString.call(value) !== '[object Object]') {\n return false\n }\n const proto = Object.getPrototypeOf(value)\n return proto === null || proto === Object.prototype\n}\n\nexport function shouldExposeInSnapshot(value: unknown): boolean {\n if (value == null) {\n return true\n }\n if (typeof value !== 'object') {\n return true\n }\n if (isRef(value) || isReactive(value)) {\n return true\n }\n if (Array.isArray(value)) {\n return true\n }\n return isPlainObject(value)\n}\n\nexport function applySetupResult(\n runtime: any,\n target: any,\n result: any,\n options?: { includeFunctionsInState?: boolean, functionPropPaths?: Set<string> },\n) {\n const includeFunctionsInState = Boolean(options?.includeFunctionsInState)\n const functionPropPaths = options?.functionPropPaths\n const methods = runtime?.methods ?? Object.create(null)\n const state = runtime?.state ?? Object.create(null)\n const setupState = runtime?.setupState ?? Object.create(null)\n const rawState = isReactive(state) ? toRaw(state) : state\n let methodsChanged = false\n if (runtime && !runtime.methods) {\n try {\n runtime.methods = methods\n }\n catch {\n // 个别场景 runtime 可能只读,保持兼容行为。\n }\n }\n if (runtime && !runtime.state) {\n try {\n runtime.state = state\n }\n catch {\n // 个别场景 runtime 可能只读,保持兼容行为。\n }\n }\n if (runtime && !runtime.setupState) {\n try {\n runtime.setupState = setupState\n }\n catch {\n // 个别场景 runtime 可能只读,保持兼容行为。\n }\n }\n Object.keys(result).forEach((key) => {\n const val = (result as any)[key]\n if (typeof val === 'function') {\n const bound = (...args: any[]) => (val as any).apply(runtime?.proxy ?? runtime, args)\n ;(methods as any)[key] = bound\n ;(state as any)[key] = bound\n if (includeFunctionsInState || functionPropPaths?.has(key)) {\n ;(setupState as any)[key] = bound\n }\n methodsChanged = true\n }\n else {\n if (hasTrackableSetupBinding(val)) {\n runtime?.__wevu_trackSetupReactiveKey?.(key)\n }\n ;(state as any)[key] = val\n if (val === target || !shouldExposeInSnapshot(val)) {\n try {\n Object.defineProperty(rawState, key, {\n value: val,\n configurable: true,\n enumerable: false,\n writable: true,\n })\n }\n catch {\n // 保持 state 的兼容写入已完成,这里只兜底非枚举定义。\n }\n }\n ;(setupState as any)[key] = val\n }\n })\n if (runtime) {\n runtime.methods = runtime.methods ?? methods\n runtime.state = runtime.state ?? state\n if (methodsChanged) {\n runtime.__wevu_touchSetupMethodsVersion?.()\n }\n }\n}\n"],"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,SAAgB,uBAAuB,OAAyB;CAC9D,IAAI,SAAS,MACX,OAAO;CAET,IAAI,OAAO,UAAU,UACnB,OAAO;CAET,IAAI,MAAM,KAAK,KAAK,WAAW,KAAK,GAClC,OAAO;CAET,IAAI,MAAM,QAAQ,KAAK,GACrB,OAAO;CAET,OAAO,cAAc,KAAK;AAC5B;AAEA,SAAgB,iBACd,SACA,QACA,QACA,SACA;;CACA,MAAM,0BAA0B,0DAAQ,QAAS,uBAAuB;CACxE,MAAM,sEAAoB,QAAS;CACnC,MAAM,gFAAU,QAAS,sEAAW,OAAO,OAAO,IAAI;CACtD,MAAM,4EAAQ,QAAS,gEAAS,OAAO,OAAO,IAAI;CAClD,MAAM,sFAAa,QAAS,+EAAc,OAAO,OAAO,IAAI;CAC5D,MAAM,WAAW,WAAW,KAAK,IAAI,MAAM,KAAK,IAAI;CACpD,IAAI,iBAAiB;CACrB,IAAI,WAAW,CAAC,QAAQ,SACtB,IAAI;EACF,QAAQ,UAAU;CACpB,kBACM,CAEN;CAEF,IAAI,WAAW,CAAC,QAAQ,OACtB,IAAI;EACF,QAAQ,QAAQ;CAClB,mBACM,CAEN;CAEF,IAAI,WAAW,CAAC,QAAQ,YACtB,IAAI;EACF,QAAQ,aAAa;CACvB,mBACM,CAEN;CAEF,OAAO,KAAK,MAAM,CAAC,CAAC,SAAS,QAAQ;EACnC,MAAM,MAAO,OAAe;EAC5B,IAAI,OAAO,QAAQ,YAAY;GAC7B,MAAM,SAAS,GAAG,SAAgB;;WAAC,IAAY,0EAAM,QAAS,gEAAS,SAAS,IAAI;;GACnF,AAAC,QAAgB,OAAO;GACxB,AAAC,MAAc,OAAO;GACvB,IAAI,kGAA2B,kBAAmB,IAAI,GAAG,IACtD,AAAC,WAAmB,OAAO;GAE9B,iBAAiB;EACnB,OACK;GACH,IAAI,yBAAyB,GAAG,GAAG;;IACjC,2EAAS,kHAA+B,GAAG;GAC7C;GACC,AAAC,MAAc,OAAO;GACvB,IAAI,QAAQ,UAAU,CAAC,uBAAuB,GAAG,GAC/C,IAAI;IACF,OAAO,eAAe,UAAU,KAAK;KACnC,OAAO;KACP,cAAc;KACd,YAAY;KACZ,UAAU;IACZ,CAAC;GACH,mBACM,CAEN;GAED,AAAC,WAAmB,OAAO;EAC9B;CACF,CAAC;CACD,IAAI,SAAS;;EACX,QAAQ,+BAAU,QAAQ,wEAAW;EACrC,QAAQ,2BAAQ,QAAQ,kEAAS;EACjC,IAAI,gBAAgB;;GAClB,iCAAQ,mHAAkC;EAC5C;CACF;AACF"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { getScopedSlotHostGlobalObject } from "./platform.mjs";
|
|
2
|
+
import { hasOwn } from "../utils.mjs";
|
|
3
|
+
import { INTERNAL_DEFAULTS_SCOPE_KEY, applyWevuComponentDefaults } from "./defaults.mjs";
|
|
4
|
+
import { allocateOwnerId } from "./scopedSlots.mjs";
|
|
5
|
+
import { runSetupFunction } from "./register/setup.mjs";
|
|
6
|
+
import { registerComponent } from "./register/component.mjs";
|
|
7
|
+
import { createApp } from "./app.mjs";
|
|
8
|
+
import { resolveNativeInitialData } from "./define/initialComputed.mjs";
|
|
9
|
+
import { resolveVueComponentOptions } from "./define/options.mjs";
|
|
10
|
+
import { applyOptionsApiProvide, resolveOptionsApiInjections } from "./define/optionsApi.mjs";
|
|
11
|
+
import { normalizeProps } from "./define/props.mjs";
|
|
12
|
+
import { createScopedSlotOptions } from "./define/scopedSlotOptions.mjs";
|
|
13
|
+
import { applySetupResult } from "./define/setupResult.mjs";
|
|
14
|
+
import { WEVU_FUNCTION_PROP_PATHS_KEY, WEVU_SCOPED_SLOT_CREATOR_KEY, WEVU_SLOT_OWNER_ID_KEY, WEVU_SLOT_OWNER_ID_PROP, WEVU_SLOT_SCOPE_KEY } from "@weapp-core/constants";
|
|
15
|
+
|
|
16
|
+
//#region src/runtime/define.ts
|
|
17
|
+
let scopedSlotCreator;
|
|
18
|
+
function ensureScopedSlotComponentGlobal() {
|
|
19
|
+
const globalObject = getScopedSlotHostGlobalObject();
|
|
20
|
+
if (!globalObject) return;
|
|
21
|
+
const globalRecord = globalObject;
|
|
22
|
+
if (scopedSlotCreator && globalRecord[WEVU_SCOPED_SLOT_CREATOR_KEY] !== scopedSlotCreator) globalRecord[WEVU_SCOPED_SLOT_CREATOR_KEY] = scopedSlotCreator;
|
|
23
|
+
}
|
|
24
|
+
function resolveInitialDataContext(properties, methods) {
|
|
25
|
+
const context = { ...methods !== null && methods !== void 0 ? methods : {} };
|
|
26
|
+
if (!properties || typeof properties !== "object") return context;
|
|
27
|
+
for (const [name, definition] of Object.entries(properties)) if (definition && typeof definition === "object" && hasOwn(definition, "value")) context[name] = definition.value;
|
|
28
|
+
return context;
|
|
29
|
+
}
|
|
30
|
+
function shouldSeedNativeSlotOwnerId(mpOptions, setData) {
|
|
31
|
+
return Boolean(mpOptions.__wevu_isPage) && Array.isArray(setData === null || setData === void 0 ? void 0 : setData.pick) && setData.pick.includes(WEVU_SLOT_OWNER_ID_KEY);
|
|
32
|
+
}
|
|
33
|
+
function shouldDeclareNativeSlotOwnerId(setData) {
|
|
34
|
+
return Array.isArray(setData === null || setData === void 0 ? void 0 : setData.pick) && setData.pick.includes(WEVU_SLOT_OWNER_ID_KEY);
|
|
35
|
+
}
|
|
36
|
+
function hasScopedSlotHostProperties(mpOptions) {
|
|
37
|
+
const properties = mpOptions.properties;
|
|
38
|
+
return Boolean(properties && typeof properties === "object" && (WEVU_SLOT_OWNER_ID_PROP in properties || WEVU_SLOT_SCOPE_KEY in properties));
|
|
39
|
+
}
|
|
40
|
+
function resolveScopedSlotHostSetData(mpOptions, setData) {
|
|
41
|
+
if ((setData === null || setData === void 0 ? void 0 : setData.strategy) !== "patch" || !hasScopedSlotHostProperties(mpOptions)) return setData;
|
|
42
|
+
return {
|
|
43
|
+
...setData,
|
|
44
|
+
strategy: "diff"
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
function defineComponent(options) {
|
|
48
|
+
ensureScopedSlotComponentGlobal();
|
|
49
|
+
const { __typeProps: _typeProps, data, computed, methods, setData, watch, setup, props, inject: injectOptions, provide: provideOptions, allowFunctionProps, ...mpOptions } = resolveVueComponentOptions(applyWevuComponentDefaults(options));
|
|
50
|
+
const rawFunctionPropPaths = mpOptions[WEVU_FUNCTION_PROP_PATHS_KEY];
|
|
51
|
+
const functionPropPaths = Array.isArray(rawFunctionPropPaths) ? [...new Set(rawFunctionPropPaths.filter((path) => typeof path === "string" && path.length > 0))] : [];
|
|
52
|
+
delete mpOptions[WEVU_FUNCTION_PROP_PATHS_KEY];
|
|
53
|
+
const resolvedSetData = resolveScopedSlotHostSetData(mpOptions, allowFunctionProps === true ? {
|
|
54
|
+
...setData !== null && setData !== void 0 ? setData : {},
|
|
55
|
+
includeFunctions: true,
|
|
56
|
+
functionPaths: functionPropPaths
|
|
57
|
+
} : allowFunctionProps === false ? setData : functionPropPaths.length ? {
|
|
58
|
+
...setData !== null && setData !== void 0 ? setData : {},
|
|
59
|
+
functionPaths: functionPropPaths
|
|
60
|
+
} : setData);
|
|
61
|
+
const setupFunctionPropKeys = new Set(functionPropPaths.filter((path) => !path.includes(".")));
|
|
62
|
+
const normalizedMpOptions = normalizeProps(mpOptions, props);
|
|
63
|
+
const initialDataContext = resolveInitialDataContext(normalizedMpOptions.properties, methods);
|
|
64
|
+
const resolvedData = typeof data === "function" ? () => data.call(initialDataContext) : data;
|
|
65
|
+
const runtimeApp = createApp({
|
|
66
|
+
data: resolvedData,
|
|
67
|
+
computed,
|
|
68
|
+
methods,
|
|
69
|
+
setData: resolvedSetData,
|
|
70
|
+
[INTERNAL_DEFAULTS_SCOPE_KEY]: "component"
|
|
71
|
+
});
|
|
72
|
+
const setupWrapper = typeof setup === "function" || injectOptions != null || provideOptions != null ? ((props, ctx) => {
|
|
73
|
+
var _ref, _proxy;
|
|
74
|
+
const publicInstance = (_ref = (_proxy = ctx === null || ctx === void 0 ? void 0 : ctx.proxy) !== null && _proxy !== void 0 ? _proxy : ctx === null || ctx === void 0 ? void 0 : ctx.instance) !== null && _ref !== void 0 ? _ref : Object.create(null);
|
|
75
|
+
const injected = resolveOptionsApiInjections(injectOptions, publicInstance);
|
|
76
|
+
if (provideOptions != null) applyOptionsApiProvide(provideOptions, publicInstance);
|
|
77
|
+
const setupResult = typeof setup === "function" ? runSetupFunction(setup, props, ctx) : void 0;
|
|
78
|
+
const result = {
|
|
79
|
+
...injected,
|
|
80
|
+
...setupResult !== null && setupResult !== void 0 ? setupResult : {}
|
|
81
|
+
};
|
|
82
|
+
if (ctx && Object.keys(result).length) applySetupResult(ctx.runtime, ctx.instance, result, {
|
|
83
|
+
includeFunctionsInState: allowFunctionProps === true,
|
|
84
|
+
functionPropPaths: allowFunctionProps === false ? void 0 : setupFunctionPropKeys
|
|
85
|
+
});
|
|
86
|
+
return result;
|
|
87
|
+
}) : void 0;
|
|
88
|
+
const nativeData = typeof resolvedData === "function" ? resolvedData() : resolvedData;
|
|
89
|
+
const nativeInitialData = resolveNativeInitialData(shouldDeclareNativeSlotOwnerId(resolvedSetData) ? {
|
|
90
|
+
...nativeData && typeof nativeData === "object" ? nativeData : {},
|
|
91
|
+
[WEVU_SLOT_OWNER_ID_KEY]: shouldSeedNativeSlotOwnerId(mpOptions, resolvedSetData) ? (nativeData === null || nativeData === void 0 ? void 0 : nativeData[WEVU_SLOT_OWNER_ID_KEY]) || allocateOwnerId() : (nativeData === null || nativeData === void 0 ? void 0 : nativeData[WEVU_SLOT_OWNER_ID_KEY]) || ""
|
|
92
|
+
} : nativeData, computed, resolvedSetData);
|
|
93
|
+
const mpOptionsWithProps = nativeInitialData !== void 0 ? {
|
|
94
|
+
...normalizedMpOptions,
|
|
95
|
+
data: nativeInitialData
|
|
96
|
+
} : normalizedMpOptions;
|
|
97
|
+
const componentOptions = {
|
|
98
|
+
data: resolvedData,
|
|
99
|
+
computed,
|
|
100
|
+
methods,
|
|
101
|
+
setData: resolvedSetData,
|
|
102
|
+
watch,
|
|
103
|
+
setup: setupWrapper,
|
|
104
|
+
mpOptions: mpOptionsWithProps
|
|
105
|
+
};
|
|
106
|
+
registerComponent(runtimeApp, methods !== null && methods !== void 0 ? methods : {}, watch, setupWrapper, mpOptionsWithProps);
|
|
107
|
+
return {
|
|
108
|
+
__wevu_runtime: runtimeApp,
|
|
109
|
+
__wevu_options: componentOptions
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* 从 Vue SFC 选项创建 wevu 组件,供 weapp-vite 编译产物直接调用的兼容入口。
|
|
114
|
+
*
|
|
115
|
+
* @param options 组件选项,可能包含小程序特有的 properties
|
|
116
|
+
* @internal
|
|
117
|
+
*/
|
|
118
|
+
function createWevuComponent(options) {
|
|
119
|
+
var _allowNullPropInput;
|
|
120
|
+
ensureScopedSlotComponentGlobal();
|
|
121
|
+
const { properties, props, ...restOptions } = options;
|
|
122
|
+
defineComponent(normalizeProps({
|
|
123
|
+
...restOptions,
|
|
124
|
+
allowNullPropInput: (_allowNullPropInput = restOptions.allowNullPropInput) !== null && _allowNullPropInput !== void 0 ? _allowNullPropInput : true,
|
|
125
|
+
__wevu_allowNullPropInput: true
|
|
126
|
+
}, props, properties));
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* scoped slot 兼容组件入口(编译产物内部使用)。
|
|
130
|
+
* @internal
|
|
131
|
+
*/
|
|
132
|
+
function createWevuScopedSlotComponent(overrides) {
|
|
133
|
+
createWevuComponent(createScopedSlotOptions(overrides));
|
|
134
|
+
}
|
|
135
|
+
scopedSlotCreator = createWevuScopedSlotComponent;
|
|
136
|
+
ensureScopedSlotComponentGlobal();
|
|
137
|
+
|
|
138
|
+
//#endregion
|
|
139
|
+
export { createWevuComponent, createWevuScopedSlotComponent, defineComponent };
|
|
140
|
+
//# sourceMappingURL=define.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define.mjs","names":[],"sources":["../../../src/runtime/define.ts"],"sourcesContent":["import type { InlineExpressionMap } from './register/inline'\nimport type { TemplateRefBinding } from './templateRefs'\nimport type {\n ComponentPropsOptions,\n ComponentPublicInstance,\n ComputedDefinitions,\n DefineComponent,\n DefineComponentOptions,\n InferProps,\n MethodDefinitions,\n MiniProgramComponentPropertyOption,\n MiniProgramComponentRawOptions,\n ShallowUnwrapRef,\n} from './types'\nimport {\n WEVU_FUNCTION_PROP_PATHS_KEY,\n WEVU_SCOPED_SLOT_CREATOR_KEY,\n WEVU_SLOT_OWNER_ID_KEY,\n WEVU_SLOT_OWNER_ID_PROP,\n WEVU_SLOT_SCOPE_KEY,\n} from '@weapp-core/constants'\nimport { hasOwn } from '../utils'\nimport { createApp } from './app'\nimport { applyWevuComponentDefaults, INTERNAL_DEFAULTS_SCOPE_KEY } from './defaults'\nimport { resolveNativeInitialData } from './define/initialComputed'\nimport { resolveVueComponentOptions } from './define/options'\nimport { applyOptionsApiProvide, resolveOptionsApiInjections } from './define/optionsApi'\nimport { normalizeProps } from './define/props'\nimport { createScopedSlotOptions } from './define/scopedSlotOptions'\nimport { applySetupResult } from './define/setupResult'\nimport { getScopedSlotHostGlobalObject } from './platform'\nimport { registerComponent, runSetupFunction } from './register'\nimport { allocateOwnerId } from './scopedSlots'\n\nlet scopedSlotCreator: (() => void) | undefined\n\nfunction ensureScopedSlotComponentGlobal() {\n const globalObject = getScopedSlotHostGlobalObject()\n if (!globalObject) {\n return\n }\n const globalRecord = globalObject as Record<string, any>\n if (scopedSlotCreator && globalRecord[WEVU_SCOPED_SLOT_CREATOR_KEY] !== scopedSlotCreator) {\n globalRecord[WEVU_SCOPED_SLOT_CREATOR_KEY] = scopedSlotCreator\n }\n}\n\nfunction resolveInitialDataContext(properties: unknown, methods: MethodDefinitions | undefined) {\n const context: Record<string, unknown> = { ...(methods ?? {}) }\n if (!properties || typeof properties !== 'object') {\n return context\n }\n for (const [name, definition] of Object.entries(properties)) {\n if (definition && typeof definition === 'object' && hasOwn(definition, 'value')) {\n context[name] = (definition as Record<string, unknown>).value\n }\n }\n return context\n}\n\nfunction shouldSeedNativeSlotOwnerId(\n mpOptions: Record<string, any>,\n setData: DefineComponentOptions<any, any, any, any, any>['setData'],\n) {\n return Boolean((mpOptions as any).__wevu_isPage)\n && Array.isArray(setData?.pick)\n && setData.pick.includes(WEVU_SLOT_OWNER_ID_KEY)\n}\n\nfunction shouldDeclareNativeSlotOwnerId(\n setData: DefineComponentOptions<any, any, any, any, any>['setData'],\n) {\n return Array.isArray(setData?.pick)\n && setData.pick.includes(WEVU_SLOT_OWNER_ID_KEY)\n}\n\nfunction hasScopedSlotHostProperties(mpOptions: Record<string, any>) {\n const properties = mpOptions.properties\n return Boolean(\n properties\n && typeof properties === 'object'\n && (\n WEVU_SLOT_OWNER_ID_PROP in properties\n || WEVU_SLOT_SCOPE_KEY in properties\n ),\n )\n}\n\nfunction resolveScopedSlotHostSetData(\n mpOptions: Record<string, any>,\n setData: DefineComponentOptions<any, any, any, any, any>['setData'],\n) {\n if (setData?.strategy !== 'patch' || !hasScopedSlotHostProperties(mpOptions)) {\n return setData\n }\n return {\n ...setData,\n strategy: 'diff' as const,\n }\n}\n\n/**\n * defineComponent 返回的组件定义描述,用于手动注册或高级用法。\n */\nexport interface ComponentDefinition<\n D extends object,\n C extends ComputedDefinitions,\n M extends MethodDefinitions,\n> {\n /**\n * 内部 runtime app(高级能力使用),不对外暴露正式 API。\n * @internal\n */\n __wevu_runtime: import('./types').RuntimeApp<D, C, M>\n\n /**\n * 内部选项快照(高级能力使用),包含 data/computed/methods 等。\n * @internal\n */\n __wevu_options: {\n data: () => D\n computed: C\n methods: M\n setData: import('./types').SetDataSnapshotOptions | undefined\n watch: Record<string, any> | undefined\n setup: ((props: any, ctx: any) => any) | undefined\n mpOptions: MiniProgramComponentRawOptions\n }\n}\n\ntype SetupBindings<S> = Exclude<S, void> extends never ? Record<string, never> : Exclude<S, void>\ntype ResolveProps<P> = P extends ComponentPropsOptions ? InferProps<P> : P\n\nexport interface WevuComponentConstructor<\n Props,\n RawBindings,\n D extends object,\n C extends ComputedDefinitions,\n M extends MethodDefinitions,\n> {\n new (): ComponentPublicInstance<D, C, M, Props> & ShallowUnwrapRef<RawBindings>\n}\n\nexport type WevuDefinedComponent<\n PropsOrPropOptions,\n RawBindings,\n D extends object,\n C extends ComputedDefinitions,\n M extends MethodDefinitions,\n> = DefineComponent<PropsOrPropOptions, RawBindings, D, C, M> & ComponentDefinition<D, C, M>\nexport interface SetupContextWithTypeProps<TypeProps> {\n props: TypeProps\n [key: string]: any\n}\nexport type SetupFunctionWithTypeProps<\n TypeProps,\n> = (\n props: TypeProps,\n ctx: SetupContextWithTypeProps<TypeProps>,\n) => Record<string, any> | void\nexport interface DefineComponentTypePropsOptions<TypeProps> {\n __typeProps: TypeProps\n setup?: SetupFunctionWithTypeProps<TypeProps>\n [key: string]: any\n}\nexport interface DefineComponentWithTypeProps<TypeProps> {\n new (): { $props: TypeProps } & Record<string, any>\n}\n\n/**\n * 按 Vue 3 风格定义一个小程序组件/页面。\n *\n * - 统一注册为 `Component()`\n *\n * @param options 组件定义项\n * @returns 可手动注册的组件定义\n *\n * @example\n * ```ts\n * defineComponent({\n * data: () => ({ count: 0 }),\n * setup() {\n * onMounted(() => console.log('已挂载'))\n * }\n * })\n * ```\n *\n * @example\n * ```ts\n * defineComponent({\n * setup() {\n * onPageScroll(() => {})\n * }\n * })\n * ```\n */\n// @ts-expect-error -- TS2589:__typeProps 签名的重载实例化深度过高。\nexport function defineComponent<\n TypeProps = any,\n>(\n options: DefineComponentTypePropsOptions<TypeProps>,\n): DefineComponentWithTypeProps<TypeProps>\nexport function defineComponent<\n P extends ComponentPropsOptions = ComponentPropsOptions,\n D extends object = Record<string, any>,\n C extends ComputedDefinitions = ComputedDefinitions,\n M extends MethodDefinitions = MethodDefinitions,\n S extends Record<string, any> | void = Record<string, any> | void,\n>(\n options: DefineComponentOptions<P, D, C, M, S>,\n): WevuComponentConstructor<ResolveProps<P>, SetupBindings<S>, D, C, M> & ComponentDefinition<D, C, M>\nexport function defineComponent(\n options: DefineComponentOptions<any, any, any, any, any>,\n): WevuComponentConstructor<Record<string, any>, Record<string, any>, Record<string, any>, ComputedDefinitions, MethodDefinitions>\n & ComponentDefinition<any, any, any> {\n ensureScopedSlotComponentGlobal()\n const resolvedOptions = resolveVueComponentOptions(applyWevuComponentDefaults(options))\n const {\n __typeProps: _typeProps,\n data,\n computed,\n methods,\n setData,\n watch,\n setup,\n props,\n inject: injectOptions,\n provide: provideOptions,\n allowFunctionProps,\n ...mpOptions\n } = resolvedOptions\n\n const rawFunctionPropPaths = (mpOptions as any)[WEVU_FUNCTION_PROP_PATHS_KEY]\n const functionPropPaths: string[] = Array.isArray(rawFunctionPropPaths)\n ? [...new Set(rawFunctionPropPaths.filter((path: unknown): path is string => typeof path === 'string' && path.length > 0))]\n : []\n delete (mpOptions as any)[WEVU_FUNCTION_PROP_PATHS_KEY]\n\n const rawResolvedSetData = allowFunctionProps === true\n ? {\n ...(setData ?? {}),\n includeFunctions: true,\n functionPaths: functionPropPaths,\n }\n : allowFunctionProps === false\n ? setData\n : functionPropPaths.length\n ? {\n ...(setData ?? {}),\n functionPaths: functionPropPaths,\n }\n : setData\n const resolvedSetData = resolveScopedSlotHostSetData(mpOptions, rawResolvedSetData)\n const setupFunctionPropKeys = new Set(\n functionPropPaths\n .filter(path => !path.includes('.')),\n )\n\n const normalizedMpOptions = normalizeProps(mpOptions, props)\n const initialDataContext = resolveInitialDataContext(normalizedMpOptions.properties, methods)\n const resolvedData = typeof data === 'function'\n ? () => data.call(initialDataContext)\n : data\n\n const runtimeApp = createApp({\n data: resolvedData,\n computed,\n methods,\n setData: resolvedSetData,\n [INTERNAL_DEFAULTS_SCOPE_KEY]: 'component',\n } as any)\n\n const hasOptionsApiContext = injectOptions != null || provideOptions != null\n const setupWrapper = typeof setup === 'function' || hasOptionsApiContext\n ? ((props, ctx) => {\n const publicInstance = (ctx as any)?.proxy ?? (ctx as any)?.instance ?? Object.create(null)\n const injected = resolveOptionsApiInjections(injectOptions, publicInstance)\n if (provideOptions != null) {\n applyOptionsApiProvide(provideOptions, publicInstance)\n }\n const setupResult = typeof setup === 'function'\n ? runSetupFunction(setup as any, props as Record<string, any>, ctx as any) as Record<string, any> | void\n : undefined\n const result = {\n ...injected,\n ...(setupResult ?? {}),\n }\n if (ctx && Object.keys(result).length) {\n applySetupResult((ctx as any).runtime, (ctx as any).instance, result, {\n includeFunctionsInState: allowFunctionProps === true,\n functionPropPaths: allowFunctionProps === false ? undefined : setupFunctionPropKeys,\n })\n }\n return result\n }) satisfies DefineComponentOptions<ComponentPropsOptions, any, any, any, any>['setup']\n : undefined\n\n const nativeData = typeof resolvedData === 'function'\n ? resolvedData()\n : resolvedData\n const shouldDeclareOwnerId = shouldDeclareNativeSlotOwnerId(resolvedSetData)\n const seededNativeData = shouldDeclareOwnerId\n ? {\n ...(nativeData && typeof nativeData === 'object' ? nativeData : {}),\n [WEVU_SLOT_OWNER_ID_KEY]: shouldSeedNativeSlotOwnerId(mpOptions, resolvedSetData)\n ? (nativeData as any)?.[WEVU_SLOT_OWNER_ID_KEY] || allocateOwnerId()\n : (nativeData as any)?.[WEVU_SLOT_OWNER_ID_KEY] || '',\n }\n : nativeData\n const nativeInitialData = resolveNativeInitialData(seededNativeData, computed as ComputedDefinitions, resolvedSetData)\n const mpOptionsWithProps = nativeInitialData !== undefined\n ? {\n ...normalizedMpOptions,\n data: nativeInitialData,\n }\n : normalizedMpOptions\n\n const componentOptions = {\n data: resolvedData as () => Record<string, any>,\n computed: computed as ComputedDefinitions,\n methods: methods as MethodDefinitions,\n setData: resolvedSetData,\n watch,\n setup: setupWrapper,\n mpOptions: mpOptionsWithProps,\n }\n\n registerComponent(runtimeApp as any, methods ?? {}, watch as any, setupWrapper as any, mpOptionsWithProps as any)\n\n // 返回组件定义,便于外部自行注册\n const definition: ComponentDefinition<any, any, any> = {\n __wevu_runtime: runtimeApp as any,\n __wevu_options: componentOptions as ComponentDefinition<any, any, any>['__wevu_options'],\n }\n\n return definition as unknown as WevuComponentConstructor<\n ResolveProps<ComponentPropsOptions>,\n Record<string, any>,\n Record<string, any>,\n ComputedDefinitions,\n MethodDefinitions\n > & ComponentDefinition<any, any, any>\n}\n\n/**\n * 从 Vue SFC 选项创建 wevu 组件,供 weapp-vite 编译产物直接调用的兼容入口。\n *\n * @param options 组件选项,可能包含小程序特有的 properties\n * @internal\n */\nexport function createWevuComponent<\n P extends ComponentPropsOptions = ComponentPropsOptions,\n D extends object = Record<string, any>,\n C extends ComputedDefinitions = ComputedDefinitions,\n M extends MethodDefinitions = MethodDefinitions,\n>(\n options: DefineComponentOptions<P, D, C, M> & { properties?: MiniProgramComponentPropertyOption },\n): void {\n ensureScopedSlotComponentGlobal()\n const {\n properties,\n props,\n ...restOptions\n } = options\n\n const baseOptions = {\n ...restOptions,\n allowNullPropInput: (restOptions as any).allowNullPropInput ?? true,\n __wevu_allowNullPropInput: true,\n }\n\n // 将 properties 合并到 mpOptions,保持小程序属性定义\n const finalOptions = normalizeProps(baseOptions, props, properties)\n\n defineComponent(finalOptions)\n}\n\n/**\n * scoped slot 兼容组件入口(编译产物内部使用)。\n * @internal\n */\nexport function createWevuScopedSlotComponent(\n overrides?: {\n computed?: ComputedDefinitions\n inlineMap?: InlineExpressionMap\n templateRefs?: TemplateRefBinding[]\n },\n): void {\n const baseOptions = createScopedSlotOptions(overrides)\n createWevuComponent(baseOptions as any)\n}\n\nscopedSlotCreator = createWevuScopedSlotComponent\nensureScopedSlotComponentGlobal()\n"],"mappings":"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"}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
import { toRaw } from "../reactivity/reactive/shared.mjs";
|
|
2
|
+
import { getReactiveVersion, isReactive } from "../reactivity/reactive.mjs";
|
|
3
|
+
import { unref } from "../reactivity/ref.mjs";
|
|
4
|
+
import { hasOwn } from "../utils.mjs";
|
|
5
|
+
import { hasTrackableSetupBinding } from "./setupTracking.mjs";
|
|
6
|
+
import { isNoSetData } from "./noSetData.mjs";
|
|
7
|
+
|
|
8
|
+
//#region src/runtime/diff.ts
|
|
9
|
+
function isPlainObject(value) {
|
|
10
|
+
if (Object.prototype.toString.call(value) !== "[object Object]") return false;
|
|
11
|
+
const proto = Object.getPrototypeOf(value);
|
|
12
|
+
return proto === null || proto === Object.prototype;
|
|
13
|
+
}
|
|
14
|
+
function isAllowedFunctionPath(functionPathSet, currentPath) {
|
|
15
|
+
if (!functionPathSet || !currentPath) return false;
|
|
16
|
+
let candidate = currentPath;
|
|
17
|
+
while (candidate) {
|
|
18
|
+
if (functionPathSet.has(candidate)) return true;
|
|
19
|
+
const separatorIndex = candidate.lastIndexOf(".");
|
|
20
|
+
if (separatorIndex < 0) return false;
|
|
21
|
+
candidate = candidate.slice(0, separatorIndex);
|
|
22
|
+
}
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
function toPlainInternal(value, seen, visiting, cache, cacheEligibility, depth, budget, includeFunctions, functionPathSet, currentPath) {
|
|
26
|
+
const unwrapped = unref(value);
|
|
27
|
+
if (typeof unwrapped === "bigint") {
|
|
28
|
+
const asNumber = Number(unwrapped);
|
|
29
|
+
return Number.isSafeInteger(asNumber) ? asNumber : unwrapped.toString();
|
|
30
|
+
}
|
|
31
|
+
if (typeof unwrapped === "symbol") return unwrapped.toString();
|
|
32
|
+
if (typeof unwrapped === "function") return includeFunctions || isAllowedFunctionPath(functionPathSet, currentPath) ? unwrapped : void 0;
|
|
33
|
+
if (typeof unwrapped !== "object" || unwrapped === null) return unwrapped;
|
|
34
|
+
if (isNoSetData(unwrapped)) return;
|
|
35
|
+
const reactiveValue = isReactive(unwrapped);
|
|
36
|
+
const raw = reactiveValue ? toRaw(unwrapped) : unwrapped;
|
|
37
|
+
let canUseCache = Boolean(cache) && reactiveValue;
|
|
38
|
+
if (cache && !canUseCache) {
|
|
39
|
+
const cachedEligibility = cacheEligibility === null || cacheEligibility === void 0 ? void 0 : cacheEligibility.get(raw);
|
|
40
|
+
canUseCache = cachedEligibility !== null && cachedEligibility !== void 0 ? cachedEligibility : !hasTrackableSetupBinding(raw);
|
|
41
|
+
cacheEligibility === null || cacheEligibility === void 0 || cacheEligibility.set(raw, canUseCache);
|
|
42
|
+
}
|
|
43
|
+
const cacheRef = canUseCache ? cache : void 0;
|
|
44
|
+
if (depth <= 0 || budget.keys <= 0) return raw;
|
|
45
|
+
if (cacheRef) {
|
|
46
|
+
const version = getReactiveVersion(raw);
|
|
47
|
+
const cached = cacheRef.get(raw);
|
|
48
|
+
if (cached && cached.version === version) return cached.value;
|
|
49
|
+
}
|
|
50
|
+
if (visiting.has(raw)) return;
|
|
51
|
+
if (seen.has(raw)) return seen.get(raw);
|
|
52
|
+
if (raw instanceof Date) return raw.getTime();
|
|
53
|
+
if (raw instanceof RegExp) return raw.toString();
|
|
54
|
+
if (raw instanceof Map) {
|
|
55
|
+
const entries = [];
|
|
56
|
+
seen.set(raw, entries);
|
|
57
|
+
visiting.add(raw);
|
|
58
|
+
raw.forEach((mapValue, mapKey) => {
|
|
59
|
+
entries.push([toPlainInternal(mapKey, seen, visiting, void 0, void 0, Number.POSITIVE_INFINITY, { keys: Number.POSITIVE_INFINITY }, includeFunctions, void 0, ""), toPlainInternal(mapValue, seen, visiting, void 0, void 0, Number.POSITIVE_INFINITY, { keys: Number.POSITIVE_INFINITY }, includeFunctions, void 0, "")]);
|
|
60
|
+
});
|
|
61
|
+
visiting.delete(raw);
|
|
62
|
+
return entries;
|
|
63
|
+
}
|
|
64
|
+
if (raw instanceof Set) {
|
|
65
|
+
const values = [];
|
|
66
|
+
seen.set(raw, values);
|
|
67
|
+
visiting.add(raw);
|
|
68
|
+
raw.forEach((setValue) => {
|
|
69
|
+
values.push(toPlainInternal(setValue, seen, visiting, void 0, void 0, Number.POSITIVE_INFINITY, { keys: Number.POSITIVE_INFINITY }, includeFunctions, void 0, ""));
|
|
70
|
+
});
|
|
71
|
+
visiting.delete(raw);
|
|
72
|
+
return values;
|
|
73
|
+
}
|
|
74
|
+
if (typeof ArrayBuffer !== "undefined") {
|
|
75
|
+
if (raw instanceof ArrayBuffer) return raw.byteLength;
|
|
76
|
+
if (ArrayBuffer.isView(raw)) {
|
|
77
|
+
const view = raw;
|
|
78
|
+
if (typeof view[Symbol.iterator] === "function") {
|
|
79
|
+
const values = [...view];
|
|
80
|
+
seen.set(raw, values);
|
|
81
|
+
return values.map((item) => toPlainInternal(item, seen, visiting, void 0, void 0, Number.POSITIVE_INFINITY, { keys: Number.POSITIVE_INFINITY }, includeFunctions, void 0, ""));
|
|
82
|
+
}
|
|
83
|
+
const bytes = [...new Uint8Array(view.buffer, view.byteOffset, view.byteLength)];
|
|
84
|
+
seen.set(raw, bytes);
|
|
85
|
+
return bytes;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
if (raw instanceof Error) return {
|
|
89
|
+
name: raw.name,
|
|
90
|
+
message: raw.message
|
|
91
|
+
};
|
|
92
|
+
if (Array.isArray(raw)) {
|
|
93
|
+
const arr = [];
|
|
94
|
+
seen.set(raw, arr);
|
|
95
|
+
visiting.add(raw);
|
|
96
|
+
const nextDepth = depth - 1;
|
|
97
|
+
for (let index = 0; index < raw.length; index += 1) {
|
|
98
|
+
const childPath = currentPath ? `${currentPath}.${index}` : String(index);
|
|
99
|
+
const next = toPlainInternal(raw[index], seen, visiting, cache, cacheEligibility, nextDepth, budget, includeFunctions, functionPathSet, childPath);
|
|
100
|
+
arr[index] = next === void 0 ? null : next;
|
|
101
|
+
}
|
|
102
|
+
visiting.delete(raw);
|
|
103
|
+
if (cacheRef) cacheRef.set(raw, {
|
|
104
|
+
version: getReactiveVersion(raw),
|
|
105
|
+
value: arr
|
|
106
|
+
});
|
|
107
|
+
return arr;
|
|
108
|
+
}
|
|
109
|
+
const output = {};
|
|
110
|
+
seen.set(raw, output);
|
|
111
|
+
visiting.add(raw);
|
|
112
|
+
const nextDepth = depth - 1;
|
|
113
|
+
for (const key of Object.keys(raw)) {
|
|
114
|
+
budget.keys -= 1;
|
|
115
|
+
if (budget.keys <= 0) break;
|
|
116
|
+
const childPath = currentPath ? `${currentPath}.${key}` : key;
|
|
117
|
+
const next = toPlainInternal(raw[key], seen, visiting, cache, cacheEligibility, nextDepth, budget, includeFunctions, functionPathSet, childPath);
|
|
118
|
+
if (next !== void 0) output[key] = next;
|
|
119
|
+
}
|
|
120
|
+
visiting.delete(raw);
|
|
121
|
+
if (cacheRef) cacheRef.set(raw, {
|
|
122
|
+
version: getReactiveVersion(raw),
|
|
123
|
+
value: output
|
|
124
|
+
});
|
|
125
|
+
return output;
|
|
126
|
+
}
|
|
127
|
+
function toPlain(value, seen = /* @__PURE__ */ new WeakMap(), options) {
|
|
128
|
+
var _options$_depth, _options$_budget, _options$_path;
|
|
129
|
+
const depth = (_options$_depth = options === null || options === void 0 ? void 0 : options._depth) !== null && _options$_depth !== void 0 ? _options$_depth : typeof (options === null || options === void 0 ? void 0 : options.maxDepth) === "number" ? Math.max(0, Math.floor(options.maxDepth)) : Number.POSITIVE_INFINITY;
|
|
130
|
+
const budget = (_options$_budget = options === null || options === void 0 ? void 0 : options._budget) !== null && _options$_budget !== void 0 ? _options$_budget : typeof (options === null || options === void 0 ? void 0 : options.maxKeys) === "number" ? { keys: Math.max(0, Math.floor(options.maxKeys)) } : { keys: Number.POSITIVE_INFINITY };
|
|
131
|
+
const functionPathSet = Array.isArray(options === null || options === void 0 ? void 0 : options.functionPaths) && options.functionPaths.length ? new Set(options.functionPaths) : void 0;
|
|
132
|
+
return toPlainInternal(value, seen, /* @__PURE__ */ new WeakSet(), options === null || options === void 0 ? void 0 : options.cache, options === null || options === void 0 ? void 0 : options.cacheEligibility, depth, budget, Boolean(options === null || options === void 0 ? void 0 : options.includeFunctions), functionPathSet, (_options$_path = options === null || options === void 0 ? void 0 : options._path) !== null && _options$_path !== void 0 ? _options$_path : "");
|
|
133
|
+
}
|
|
134
|
+
function isArrayEqual(a, b, compare) {
|
|
135
|
+
if (a.length !== b.length) return false;
|
|
136
|
+
for (let i = 0; i < a.length; i++) if (!compare(a[i], b[i])) return false;
|
|
137
|
+
return true;
|
|
138
|
+
}
|
|
139
|
+
function isPlainObjectEqual(a, b, compare) {
|
|
140
|
+
const aKeys = Object.keys(a);
|
|
141
|
+
const bKeys = Object.keys(b);
|
|
142
|
+
if (aKeys.length !== bKeys.length) return false;
|
|
143
|
+
for (const key of aKeys) {
|
|
144
|
+
if (!hasOwn(b, key)) return false;
|
|
145
|
+
if (!compare(a[key], b[key])) return false;
|
|
146
|
+
}
|
|
147
|
+
return true;
|
|
148
|
+
}
|
|
149
|
+
function isDeepEqual(a, b) {
|
|
150
|
+
if (Object.is(a, b)) return true;
|
|
151
|
+
if (Array.isArray(a) && Array.isArray(b)) return isArrayEqual(a, b, isDeepEqual);
|
|
152
|
+
if (isPlainObject(a) && isPlainObject(b)) return isPlainObjectEqual(a, b, isDeepEqual);
|
|
153
|
+
return false;
|
|
154
|
+
}
|
|
155
|
+
function normalizeSetDataValue(value) {
|
|
156
|
+
return value === void 0 ? null : value;
|
|
157
|
+
}
|
|
158
|
+
function assignNestedDiff(prev, next, path, output) {
|
|
159
|
+
if (isDeepEqual(prev, next)) return;
|
|
160
|
+
if (isPlainObject(prev) && isPlainObject(next)) {
|
|
161
|
+
for (const key of Object.keys(next)) {
|
|
162
|
+
if (!hasOwn(prev, key)) {
|
|
163
|
+
output[`${path}.${key}`] = normalizeSetDataValue(next[key]);
|
|
164
|
+
continue;
|
|
165
|
+
}
|
|
166
|
+
assignNestedDiff(prev[key], next[key], `${path}.${key}`, output);
|
|
167
|
+
}
|
|
168
|
+
for (const key of Object.keys(prev)) if (!hasOwn(next, key)) output[`${path}.${key}`] = null;
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
if (Array.isArray(prev) && Array.isArray(next)) {
|
|
172
|
+
if (!isArrayEqual(prev, next, isDeepEqual)) output[path] = normalizeSetDataValue(next);
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
output[path] = normalizeSetDataValue(next);
|
|
176
|
+
}
|
|
177
|
+
function diffSnapshots(prev, next, options) {
|
|
178
|
+
const diff = {};
|
|
179
|
+
const skipKeys = options === null || options === void 0 ? void 0 : options.skipKeys;
|
|
180
|
+
for (const key of Object.keys(next)) {
|
|
181
|
+
if (skipKeys === null || skipKeys === void 0 ? void 0 : skipKeys.has(key)) continue;
|
|
182
|
+
assignNestedDiff(prev[key], next[key], key, diff);
|
|
183
|
+
}
|
|
184
|
+
for (const key of Object.keys(prev)) {
|
|
185
|
+
if (skipKeys === null || skipKeys === void 0 ? void 0 : skipKeys.has(key)) continue;
|
|
186
|
+
if (!hasOwn(next, key)) diff[key] = null;
|
|
187
|
+
}
|
|
188
|
+
return diff;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
//#endregion
|
|
192
|
+
export { diffSnapshots, toPlain };
|
|
193
|
+
//# sourceMappingURL=diff.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff.mjs","names":[],"sources":["../../../src/runtime/diff.ts"],"sourcesContent":["import { getReactiveVersion, isReactive, toRaw, unref } from '../reactivity'\nimport { hasOwn } from '../utils'\nimport { isNoSetData } from './noSetData'\nimport { hasTrackableSetupBinding } from './setupTracking'\n\nfunction isPlainObject(value: unknown): value is Record<string, any> {\n if (Object.prototype.toString.call(value) !== '[object Object]') {\n return false\n }\n const proto = Object.getPrototypeOf(value)\n return proto === null || proto === Object.prototype\n}\n\nexport interface ToPlainOptions {\n cache?: WeakMap<object, { version: number, value: any }>\n cacheEligibility?: WeakMap<object, boolean>\n maxDepth?: number\n maxKeys?: number\n includeFunctions?: boolean\n functionPaths?: string[]\n _depth?: number\n _budget?: { keys: number }\n _path?: string\n}\n\nfunction isAllowedFunctionPath(functionPathSet: Set<string> | undefined, currentPath: string) {\n if (!functionPathSet || !currentPath) {\n return false\n }\n let candidate = currentPath\n while (candidate) {\n if (functionPathSet.has(candidate)) {\n return true\n }\n const separatorIndex = candidate.lastIndexOf('.')\n if (separatorIndex < 0) {\n return false\n }\n candidate = candidate.slice(0, separatorIndex)\n }\n return false\n}\n\nfunction toPlainInternal(\n value: any,\n seen: WeakMap<object, any>,\n visiting: WeakSet<object>,\n cache: WeakMap<object, { version: number, value: any }> | undefined,\n cacheEligibility: WeakMap<object, boolean> | undefined,\n depth: number,\n budget: { keys: number },\n includeFunctions: boolean,\n functionPathSet: Set<string> | undefined,\n currentPath: string,\n): any {\n const unwrapped = unref(value)\n if (typeof unwrapped === 'bigint') {\n const asNumber = Number(unwrapped)\n return Number.isSafeInteger(asNumber) ? asNumber : unwrapped.toString()\n }\n if (typeof unwrapped === 'symbol') {\n return unwrapped.toString()\n }\n if (typeof unwrapped === 'function') {\n return includeFunctions || isAllowedFunctionPath(functionPathSet, currentPath) ? unwrapped : undefined\n }\n if (typeof unwrapped !== 'object' || unwrapped === null) {\n return unwrapped\n }\n if (isNoSetData(unwrapped)) {\n return undefined\n }\n const reactiveValue = isReactive(unwrapped)\n const raw = reactiveValue ? toRaw(unwrapped) : unwrapped\n let canUseCache = Boolean(cache) && reactiveValue\n if (cache && !canUseCache) {\n const cachedEligibility = cacheEligibility?.get(raw)\n canUseCache = cachedEligibility ?? !hasTrackableSetupBinding(raw)\n cacheEligibility?.set(raw, canUseCache)\n }\n const cacheRef = canUseCache ? cache : undefined\n\n if (depth <= 0 || budget.keys <= 0) {\n return raw\n }\n\n if (cacheRef) {\n const version = getReactiveVersion(raw as any)\n const cached = cacheRef.get(raw)\n if (cached && cached.version === version) {\n return cached.value\n }\n }\n\n if (visiting.has(raw)) {\n return undefined\n }\n if (seen.has(raw)) {\n return seen.get(raw)\n }\n if (raw instanceof Date) {\n return raw.getTime()\n }\n if (raw instanceof RegExp) {\n return raw.toString()\n }\n if (raw instanceof Map) {\n const entries: any[] = []\n seen.set(raw, entries)\n visiting.add(raw)\n raw.forEach((mapValue, mapKey) => {\n entries.push([\n toPlainInternal(mapKey, seen, visiting, undefined, undefined, Number.POSITIVE_INFINITY, { keys: Number.POSITIVE_INFINITY }, includeFunctions, undefined, ''),\n toPlainInternal(mapValue, seen, visiting, undefined, undefined, Number.POSITIVE_INFINITY, { keys: Number.POSITIVE_INFINITY }, includeFunctions, undefined, ''),\n ])\n })\n visiting.delete(raw)\n return entries\n }\n if (raw instanceof Set) {\n const values: any[] = []\n seen.set(raw, values)\n visiting.add(raw)\n raw.forEach((setValue) => {\n values.push(toPlainInternal(setValue, seen, visiting, undefined, undefined, Number.POSITIVE_INFINITY, { keys: Number.POSITIVE_INFINITY }, includeFunctions, undefined, ''))\n })\n visiting.delete(raw)\n return values\n }\n if (typeof ArrayBuffer !== 'undefined') {\n if (raw instanceof ArrayBuffer) {\n return raw.byteLength\n }\n if (ArrayBuffer.isView(raw)) {\n const view: any = raw as any\n const iter = view[Symbol.iterator]\n if (typeof iter === 'function') {\n const values = [...view]\n seen.set(raw, values)\n return values.map(item => toPlainInternal(item, seen, visiting, undefined, undefined, Number.POSITIVE_INFINITY, { keys: Number.POSITIVE_INFINITY }, includeFunctions, undefined, ''))\n }\n const bytes = [...new Uint8Array(view.buffer, view.byteOffset, view.byteLength)]\n seen.set(raw, bytes)\n return bytes\n }\n }\n if (raw instanceof Error) {\n return {\n name: raw.name,\n message: raw.message,\n }\n }\n if (Array.isArray(raw)) {\n const arr: any[] = []\n seen.set(raw, arr)\n visiting.add(raw)\n const nextDepth = depth - 1\n for (let index = 0; index < raw.length; index += 1) {\n const childPath = currentPath ? `${currentPath}.${index}` : String(index)\n const next = toPlainInternal(raw[index], seen, visiting, cache, cacheEligibility, nextDepth, budget, includeFunctions, functionPathSet, childPath)\n arr[index] = next === undefined ? null : next\n }\n visiting.delete(raw)\n if (cacheRef) {\n cacheRef.set(raw, { version: getReactiveVersion(raw as any), value: arr })\n }\n return arr\n }\n const output: Record<string, any> = {}\n seen.set(raw, output)\n visiting.add(raw)\n const nextDepth = depth - 1\n for (const key of Object.keys(raw)) {\n budget.keys -= 1\n if (budget.keys <= 0) {\n break\n }\n const childPath = currentPath ? `${currentPath}.${key}` : key\n const next = toPlainInternal((raw as any)[key], seen, visiting, cache, cacheEligibility, nextDepth, budget, includeFunctions, functionPathSet, childPath)\n if (next !== undefined) {\n output[key] = next\n }\n }\n visiting.delete(raw)\n if (cacheRef) {\n cacheRef.set(raw, { version: getReactiveVersion(raw as any), value: output })\n }\n return output\n}\n\nexport function toPlain(value: any, seen = new WeakMap<object, any>(), options?: ToPlainOptions): any {\n const depth = options?._depth ?? (typeof options?.maxDepth === 'number' ? Math.max(0, Math.floor(options.maxDepth)) : Number.POSITIVE_INFINITY)\n const budget = options?._budget ?? (typeof options?.maxKeys === 'number' ? { keys: Math.max(0, Math.floor(options.maxKeys)) } : { keys: Number.POSITIVE_INFINITY })\n const functionPathSet = Array.isArray(options?.functionPaths) && options.functionPaths.length\n ? new Set(options.functionPaths)\n : undefined\n return toPlainInternal(value, seen, new WeakSet(), options?.cache, options?.cacheEligibility, depth, budget, Boolean(options?.includeFunctions), functionPathSet, options?._path ?? '')\n}\n\ntype DeepEqualCompare = (a: any, b: any) => boolean\n\nfunction isArrayEqual(a: any[], b: any[], compare: DeepEqualCompare): boolean {\n if (a.length !== b.length) {\n return false\n }\n for (let i = 0; i < a.length; i++) {\n if (!compare(a[i], b[i])) {\n return false\n }\n }\n return true\n}\n\nfunction isPlainObjectEqual(a: Record<string, any>, b: Record<string, any>, compare: DeepEqualCompare): boolean {\n const aKeys = Object.keys(a)\n const bKeys = Object.keys(b)\n if (aKeys.length !== bKeys.length) {\n return false\n }\n for (const key of aKeys) {\n if (!hasOwn(b, key)) {\n return false\n }\n if (!compare(a[key], b[key])) {\n return false\n }\n }\n return true\n}\n\nfunction isDeepEqual(a: any, b: any): boolean {\n if (Object.is(a, b)) {\n return true\n }\n if (Array.isArray(a) && Array.isArray(b)) {\n return isArrayEqual(a, b, isDeepEqual)\n }\n if (isPlainObject(a) && isPlainObject(b)) {\n return isPlainObjectEqual(a, b, isDeepEqual)\n }\n return false\n}\n\nfunction normalizeSetDataValue<T>(value: T): T | null {\n return value === undefined ? null : value\n}\n\nfunction assignNestedDiff(\n prev: any,\n next: any,\n path: string,\n output: Record<string, any>,\n) {\n if (isDeepEqual(prev, next)) {\n return\n }\n\n if (isPlainObject(prev) && isPlainObject(next)) {\n for (const key of Object.keys(next)) {\n if (!hasOwn(prev, key)) {\n output[`${path}.${key}`] = normalizeSetDataValue(next[key])\n continue\n }\n assignNestedDiff(prev[key], next[key], `${path}.${key}`, output)\n }\n for (const key of Object.keys(prev)) {\n if (!hasOwn(next, key)) {\n output[`${path}.${key}`] = null\n }\n }\n return\n }\n\n if (Array.isArray(prev) && Array.isArray(next)) {\n if (!isArrayEqual(prev, next, isDeepEqual)) {\n output[path] = normalizeSetDataValue(next)\n }\n return\n }\n\n output[path] = normalizeSetDataValue(next)\n}\n\nexport function diffSnapshots(\n prev: Record<string, any>,\n next: Record<string, any>,\n options?: { skipKeys?: Set<string> },\n): Record<string, any> {\n const diff: Record<string, any> = {}\n const skipKeys = options?.skipKeys\n for (const key of Object.keys(next)) {\n if (skipKeys?.has(key)) {\n continue\n }\n assignNestedDiff(prev[key], next[key], key, diff)\n }\n for (const key of Object.keys(prev)) {\n if (skipKeys?.has(key)) {\n continue\n }\n if (!hasOwn(next, key)) {\n diff[key] = null\n }\n }\n return diff\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { getCurrentInstance } from "./hooks/base.mjs";
|
|
2
|
+
import { onDetached, onUnload } from "./hooks/register.mjs";
|
|
3
|
+
|
|
4
|
+
//#region src/runtime/disposables.ts
|
|
5
|
+
const DISPOSABLE_METHODS = [
|
|
6
|
+
"dispose",
|
|
7
|
+
"abort",
|
|
8
|
+
"cancel",
|
|
9
|
+
"stop",
|
|
10
|
+
"disconnect",
|
|
11
|
+
"destroy",
|
|
12
|
+
"close"
|
|
13
|
+
];
|
|
14
|
+
function resolveCleanup(target) {
|
|
15
|
+
if (!target) return;
|
|
16
|
+
if (typeof target === "function") return target;
|
|
17
|
+
for (const methodName of DISPOSABLE_METHODS) {
|
|
18
|
+
const candidate = target[methodName];
|
|
19
|
+
if (typeof candidate === "function") return () => candidate.call(target);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* 在 setup() 中创建一个“清理袋”,统一管理副作用释放。
|
|
24
|
+
*
|
|
25
|
+
* 典型用法:注册定时器、请求任务、事件监听退订函数,
|
|
26
|
+
* 在页面/组件卸载时自动批量清理,减少内存泄漏风险。
|
|
27
|
+
*/
|
|
28
|
+
function useDisposables() {
|
|
29
|
+
if (!getCurrentInstance()) throw new Error("useDisposables() 必须在 setup() 的同步阶段调用");
|
|
30
|
+
const cleanupSet = /* @__PURE__ */ new Set();
|
|
31
|
+
let disposed = false;
|
|
32
|
+
const add = (target) => {
|
|
33
|
+
const cleanup = resolveCleanup(target);
|
|
34
|
+
if (!cleanup) return () => {};
|
|
35
|
+
if (disposed) {
|
|
36
|
+
try {
|
|
37
|
+
cleanup();
|
|
38
|
+
} catch (_unused) {}
|
|
39
|
+
return () => {};
|
|
40
|
+
}
|
|
41
|
+
cleanupSet.add(cleanup);
|
|
42
|
+
return () => {
|
|
43
|
+
cleanupSet.delete(cleanup);
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
const dispose = () => {
|
|
47
|
+
if (disposed) return;
|
|
48
|
+
disposed = true;
|
|
49
|
+
const queue = [...cleanupSet];
|
|
50
|
+
cleanupSet.clear();
|
|
51
|
+
for (const cleanup of queue) try {
|
|
52
|
+
cleanup();
|
|
53
|
+
} catch (_unused2) {}
|
|
54
|
+
};
|
|
55
|
+
const bagSetTimeout = (handler, timeout, ...args) => {
|
|
56
|
+
const timer = setTimeout(handler, timeout, ...args);
|
|
57
|
+
add(() => {
|
|
58
|
+
clearTimeout(timer);
|
|
59
|
+
});
|
|
60
|
+
return timer;
|
|
61
|
+
};
|
|
62
|
+
const bagSetInterval = (handler, timeout, ...args) => {
|
|
63
|
+
const timer = setInterval(handler, timeout, ...args);
|
|
64
|
+
add(() => {
|
|
65
|
+
clearInterval(timer);
|
|
66
|
+
});
|
|
67
|
+
return timer;
|
|
68
|
+
};
|
|
69
|
+
onUnload(dispose);
|
|
70
|
+
onDetached(dispose);
|
|
71
|
+
return {
|
|
72
|
+
add,
|
|
73
|
+
dispose,
|
|
74
|
+
setTimeout: bagSetTimeout,
|
|
75
|
+
setInterval: bagSetInterval
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
//#endregion
|
|
80
|
+
export { useDisposables };
|
|
81
|
+
//# sourceMappingURL=disposables.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"disposables.mjs","names":[],"sources":["../../../src/runtime/disposables.ts"],"sourcesContent":["import { getCurrentInstance, onDetached, onUnload } from './hooks'\n\nexport type DisposableMethodName\n = | 'dispose'\n | 'abort'\n | 'cancel'\n | 'stop'\n | 'disconnect'\n | 'destroy'\n | 'close'\n\nexport type DisposableObject = Partial<Record<DisposableMethodName, () => void>>\nexport type DisposableLike = (() => void) | DisposableObject\n\nexport interface DisposableBag {\n /**\n * 注册一个清理项,返回“取消注册”函数(不会立即执行清理)。\n */\n add: (target: DisposableLike | null | undefined) => () => void\n /**\n * 立即执行并清空当前 bag 中的全部清理项(幂等)。\n */\n dispose: () => void\n /**\n * 注册 timeout,并在 bag dispose 时自动 clearTimeout。\n */\n setTimeout: (\n handler: (...args: any[]) => void,\n timeout?: number,\n ...args: any[]\n ) => ReturnType<typeof setTimeout>\n /**\n * 注册 interval,并在 bag dispose 时自动 clearInterval。\n */\n setInterval: (\n handler: (...args: any[]) => void,\n timeout?: number,\n ...args: any[]\n ) => ReturnType<typeof setInterval>\n}\n\nconst DISPOSABLE_METHODS: DisposableMethodName[] = [\n 'dispose',\n 'abort',\n 'cancel',\n 'stop',\n 'disconnect',\n 'destroy',\n 'close',\n]\n\nfunction resolveCleanup(target: DisposableLike | null | undefined): (() => void) | undefined {\n if (!target) {\n return undefined\n }\n if (typeof target === 'function') {\n return target\n }\n for (const methodName of DISPOSABLE_METHODS) {\n const candidate = target[methodName]\n if (typeof candidate === 'function') {\n return () => candidate.call(target)\n }\n }\n return undefined\n}\n\n/**\n * 在 setup() 中创建一个“清理袋”,统一管理副作用释放。\n *\n * 典型用法:注册定时器、请求任务、事件监听退订函数,\n * 在页面/组件卸载时自动批量清理,减少内存泄漏风险。\n */\nexport function useDisposables(): DisposableBag {\n if (!getCurrentInstance()) {\n throw new Error('useDisposables() 必须在 setup() 的同步阶段调用')\n }\n\n const cleanupSet = new Set<() => void>()\n let disposed = false\n\n const add: DisposableBag['add'] = (target) => {\n const cleanup = resolveCleanup(target)\n if (!cleanup) {\n return () => {}\n }\n\n if (disposed) {\n try {\n cleanup()\n }\n catch {\n // 忽略清理项自身异常,避免影响后续流程\n }\n return () => {}\n }\n\n cleanupSet.add(cleanup)\n return () => {\n cleanupSet.delete(cleanup)\n }\n }\n\n const dispose = () => {\n if (disposed) {\n return\n }\n disposed = true\n const queue = [...cleanupSet]\n cleanupSet.clear()\n for (const cleanup of queue) {\n try {\n cleanup()\n }\n catch {\n // 忽略单个清理项失败,保证其余清理继续执行\n }\n }\n }\n\n const bagSetTimeout: DisposableBag['setTimeout'] = (handler, timeout, ...args) => {\n const timer = setTimeout(handler, timeout, ...args)\n add(() => {\n clearTimeout(timer)\n })\n return timer\n }\n\n const bagSetInterval: DisposableBag['setInterval'] = (handler, timeout, ...args) => {\n const timer = setInterval(handler, timeout, ...args)\n add(() => {\n clearInterval(timer)\n })\n return timer\n }\n\n onUnload(dispose)\n onDetached(dispose)\n\n return {\n add,\n dispose,\n setTimeout: bagSetTimeout,\n setInterval: bagSetInterval,\n }\n}\n"],"mappings":";;;;AAyCA,MAAM,qBAA6C;CACjD;CACA;CACA;CACA;CACA;CACA;CACA;AACF;AAEA,SAAS,eAAe,QAAqE;CAC3F,IAAI,CAAC,QACH;CAEF,IAAI,OAAO,WAAW,YACpB,OAAO;CAET,KAAK,MAAM,cAAc,oBAAoB;EAC3C,MAAM,YAAY,OAAO;EACzB,IAAI,OAAO,cAAc,YACvB,aAAa,UAAU,KAAK,MAAM;CAEtC;AAEF;;;;;;;AAQA,SAAgB,iBAAgC;CAC9C,IAAI,CAAC,mBAAmB,GACtB,MAAM,IAAI,MAAM,sCAAsC;CAGxD,MAAM,6BAAa,IAAI,IAAgB;CACvC,IAAI,WAAW;CAEf,MAAM,OAA6B,WAAW;EAC5C,MAAM,UAAU,eAAe,MAAM;EACrC,IAAI,CAAC,SACH,aAAa,CAAC;EAGhB,IAAI,UAAU;GACZ,IAAI;IACF,QAAQ;GACV,kBACM,CAEN;GACA,aAAa,CAAC;EAChB;EAEA,WAAW,IAAI,OAAO;EACtB,aAAa;GACX,WAAW,OAAO,OAAO;EAC3B;CACF;CAEA,MAAM,gBAAgB;EACpB,IAAI,UACF;EAEF,WAAW;EACX,MAAM,QAAQ,CAAC,GAAG,UAAU;EAC5B,WAAW,MAAM;EACjB,KAAK,MAAM,WAAW,OACpB,IAAI;GACF,QAAQ;EACV,mBACM,CAEN;CAEJ;CAEA,MAAM,iBAA8C,SAAS,SAAS,GAAG,SAAS;EAChF,MAAM,QAAQ,WAAW,SAAS,SAAS,GAAG,IAAI;EAClD,UAAU;GACR,aAAa,KAAK;EACpB,CAAC;EACD,OAAO;CACT;CAEA,MAAM,kBAAgD,SAAS,SAAS,GAAG,SAAS;EAClF,MAAM,QAAQ,YAAY,SAAS,SAAS,GAAG,IAAI;EACnD,UAAU;GACR,cAAc,KAAK;EACrB,CAAC;EACD,OAAO;CACT;CAEA,SAAS,OAAO;CAChB,WAAW,OAAO;CAElB,OAAO;EACL;EACA;EACA,YAAY;EACZ,aAAa;CACf;AACF"}
|