wevu 7.0.4 → 7.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +20 -4
- package/dist/alipay/jsx-runtime.d.mts +12 -0
- package/dist/alipay/jsx-runtime.mjs +1 -0
- package/dist/dev/_virtual/{_@oxc-project_runtime@0.148.0 → _@oxc-project_runtime@0.149.0}/helpers/esm/defineProperty.mjs +1 -1
- package/dist/dev/_virtual/{_@oxc-project_runtime@0.148.0 → _@oxc-project_runtime@0.149.0}/helpers/esm/toPrimitive.mjs +1 -1
- package/dist/dev/_virtual/{_@oxc-project_runtime@0.148.0 → _@oxc-project_runtime@0.149.0}/helpers/esm/toPropertyKey.mjs +1 -1
- package/dist/dev/_virtual/{_@oxc-project_runtime@0.148.0 → _@oxc-project_runtime@0.149.0}/helpers/esm/typeof.mjs +1 -1
- package/dist/dev/api/vitest/setup.d.mts +1 -0
- package/dist/dev/api/vitest.d.mts +1 -0
- package/dist/dev/api.d.mts +1 -0
- package/dist/dev/compiler.d.mts +1 -0
- package/dist/dev/fetch.d.mts +9 -0
- package/dist/dev/index.d.mts +72 -0
- package/dist/dev/index.mjs +12 -15
- package/dist/dev/internal-reactivity.d.mts +18 -0
- package/dist/dev/internal-reactivity.mjs +3 -2
- package/dist/dev/internal-runtime.d.mts +44 -0
- package/dist/dev/internal-runtime.mjs +19 -14
- package/dist/dev/internal-template.d.mts +2 -0
- package/dist/dev/jsxTypes.d.mts +9 -0
- package/dist/dev/macros/shared.d.mts +81 -0
- package/dist/dev/macros.d.mts +71 -0
- package/dist/dev/package.mjs +1 -1
- package/dist/dev/reactivity/asyncDerivation.d.mts +41 -0
- package/dist/dev/reactivity/asyncDerivation.mjs +130 -0
- package/dist/dev/reactivity/asyncDerivation.mjs.map +1 -0
- package/dist/dev/reactivity/computed.d.mts +21 -0
- package/dist/dev/reactivity/computed.mjs +2 -2
- package/dist/dev/reactivity/computed.mjs.map +1 -1
- package/dist/dev/reactivity/core.d.mts +35 -0
- package/dist/dev/reactivity/core.mjs +156 -32
- package/dist/dev/reactivity/core.mjs.map +1 -1
- package/dist/dev/reactivity/index.d.mts +16 -0
- package/dist/dev/reactivity/reactive/mutation.d.mts +21 -0
- package/dist/dev/reactivity/reactive/patch.d.mts +18 -0
- package/dist/dev/reactivity/reactive/shallow.d.mts +22 -0
- package/dist/dev/reactivity/reactive/shared.d.mts +4 -0
- package/dist/dev/reactivity/reactive.d.mts +42 -0
- package/dist/dev/reactivity/readonly.d.mts +27 -0
- package/dist/dev/reactivity/readonly.mjs.map +1 -1
- package/dist/dev/reactivity/ref.d.mts +27 -0
- package/dist/dev/reactivity/ref.mjs +1 -1
- package/dist/dev/reactivity/shallowRef.d.mts +19 -0
- package/dist/dev/reactivity/toRefs.d.mts +43 -0
- package/dist/dev/reactivity/traverse.d.mts +8 -0
- package/dist/dev/reactivity/watch/types.d.mts +43 -0
- package/dist/dev/reactivity/watch.d.mts +22 -0
- package/dist/dev/router/createRouter.d.mts +8 -0
- package/dist/dev/router/createRouter.mjs +16 -3
- package/dist/dev/router/createRouter.mjs.map +1 -1
- package/dist/dev/router/navigationCore.d.mts +6 -0
- package/dist/dev/router/resolve.d.mts +6 -0
- package/dist/dev/router/routeSync.d.mts +1 -0
- package/dist/dev/router/types.d.mts +172 -0
- package/dist/dev/router/useRoute.d.mts +19 -0
- package/dist/dev/router/useRoute.mjs +23 -5
- package/dist/dev/router/useRoute.mjs.map +1 -1
- package/dist/dev/router/useRouter.d.mts +8 -0
- package/dist/dev/router.d.mts +10 -0
- package/dist/dev/routerInternal/query.d.mts +7 -0
- package/dist/dev/routerInternal/types.d.mts +9 -0
- package/dist/dev/runtime/app/computed.mjs +2 -2
- package/dist/dev/runtime/app/computed.mjs.map +1 -1
- package/dist/dev/runtime/app/context.mjs +8 -2
- package/dist/dev/runtime/app/context.mjs.map +1 -1
- package/dist/dev/runtime/app/diagnostics.mjs +12 -0
- package/dist/dev/runtime/app/diagnostics.mjs.map +1 -1
- package/dist/dev/runtime/app/mount.mjs +31 -28
- package/dist/dev/runtime/app/mount.mjs.map +1 -1
- package/dist/dev/runtime/app/pending.d.mts +10 -0
- package/dist/dev/runtime/app/setData/commitTracker.d.mts +13 -0
- package/dist/dev/runtime/app/setData/commitTracker.mjs +265 -0
- package/dist/dev/runtime/app/setData/commitTracker.mjs.map +1 -0
- package/dist/dev/runtime/app/setData/patchScheduler.mjs +47 -51
- package/dist/dev/runtime/app/setData/patchScheduler.mjs.map +1 -1
- package/dist/dev/runtime/app/setData/scheduler.d.mts +51 -0
- package/dist/dev/runtime/app/setData/scheduler.mjs +98 -111
- package/dist/dev/runtime/app/setData/scheduler.mjs.map +1 -1
- package/dist/dev/runtime/app/setData/snapshot.mjs +11 -1
- package/dist/dev/runtime/app/setData/snapshot.mjs.map +1 -1
- package/dist/dev/runtime/app.d.mts +8 -0
- package/dist/dev/runtime/app.mjs +18 -6
- package/dist/dev/runtime/app.mjs.map +1 -1
- package/dist/dev/runtime/bindingManifest.mjs +105 -0
- package/dist/dev/runtime/bindingManifest.mjs.map +1 -0
- package/dist/dev/runtime/capabilities.d.mts +75 -0
- package/dist/dev/runtime/capabilities.mjs +40 -0
- package/dist/dev/runtime/capabilities.mjs.map +1 -0
- package/dist/dev/runtime/css.d.mts +14 -0
- package/dist/dev/runtime/defaults.d.mts +12 -0
- package/dist/dev/runtime/define/componentDefinition.mjs +3 -0
- package/dist/dev/runtime/define/componentDefinition.mjs.map +1 -1
- package/dist/dev/runtime/define/optionsApi.mjs +1 -1
- package/dist/dev/runtime/define/props.mjs +30 -60
- package/dist/dev/runtime/define/props.mjs.map +1 -1
- package/dist/dev/runtime/define/scopedSlotOptions.mjs +37 -21
- package/dist/dev/runtime/define/scopedSlotOptions.mjs.map +1 -1
- package/dist/dev/runtime/define.d.mts +118 -0
- package/dist/dev/runtime/define.mjs +32 -44
- package/dist/dev/runtime/define.mjs.map +1 -1
- package/dist/dev/runtime/diff.mjs +1 -1
- package/dist/dev/runtime/disposables.d.mts +31 -0
- package/dist/dev/runtime/elementIntersectionObserver.d.mts +26 -0
- package/dist/dev/runtime/features/inlineEvents.d.mts +7 -0
- package/dist/dev/runtime/features/inlineEvents.mjs +25 -0
- package/dist/dev/runtime/features/inlineEvents.mjs.map +1 -0
- package/dist/dev/runtime/features/layout.d.mts +7 -0
- package/dist/dev/runtime/features/layout.mjs +44 -0
- package/dist/dev/runtime/features/layout.mjs.map +1 -0
- package/dist/dev/runtime/features/patchStrategy.d.mts +7 -0
- package/dist/dev/runtime/features/patchStrategy.mjs +129 -0
- package/dist/dev/runtime/features/patchStrategy.mjs.map +1 -0
- package/dist/dev/runtime/features/publicLayout.d.mts +24 -0
- package/dist/dev/runtime/features/publicLayout.mjs +81 -0
- package/dist/dev/runtime/features/publicLayout.mjs.map +1 -0
- package/dist/dev/runtime/features/scopedSlots.d.mts +23 -0
- package/dist/dev/runtime/features/scopedSlots.mjs +88 -0
- package/dist/dev/runtime/features/scopedSlots.mjs.map +1 -0
- package/dist/dev/runtime/features/setDataHighFrequencyWarning.d.mts +7 -0
- package/dist/dev/runtime/features/setDataHighFrequencyWarning.mjs +15 -0
- package/dist/dev/runtime/features/setDataHighFrequencyWarning.mjs.map +1 -0
- package/dist/dev/runtime/features/templateRefs.d.mts +7 -0
- package/dist/dev/runtime/features/templateRefs.mjs +39 -0
- package/dist/dev/runtime/features/templateRefs.mjs.map +1 -0
- package/dist/dev/runtime/hooks/base.d.mts +27 -0
- package/dist/dev/runtime/hooks/register.d.mts +30 -0
- package/dist/dev/runtime/hooks/vue.d.mts +52 -0
- package/dist/dev/runtime/hooks/vue.mjs +3 -5
- package/dist/dev/runtime/hooks/vue.mjs.map +1 -1
- package/dist/dev/runtime/hooks.d.mts +4 -0
- package/dist/dev/runtime/index.d.mts +46 -0
- package/dist/dev/runtime/inlineDataset.mjs +75 -0
- package/dist/dev/runtime/inlineDataset.mjs.map +1 -0
- package/dist/dev/runtime/intersectionObserver.d.mts +14 -0
- package/dist/dev/runtime/jsxIsland.d.mts +37 -0
- package/dist/dev/runtime/jsxIsland.mjs.map +1 -1
- package/dist/dev/runtime/layoutBridge.d.mts +55 -0
- package/dist/dev/runtime/layoutBridge.mjs.map +1 -1
- package/dist/dev/runtime/noSetData.d.mts +5 -0
- package/dist/dev/runtime/pageEnvironment.d.mts +50 -0
- package/dist/dev/runtime/pageLayout.d.mts +25 -0
- package/dist/dev/runtime/pageLayout.mjs.map +1 -1
- package/dist/dev/runtime/pageScroll.d.mts +29 -0
- package/dist/dev/runtime/platform.mjs +18 -1
- package/dist/dev/runtime/platform.mjs.map +1 -1
- package/dist/dev/runtime/provide.d.mts +60 -0
- package/dist/dev/runtime/provideStore.d.mts +7 -0
- package/dist/dev/runtime/publicRuntime.d.mts +22 -0
- package/dist/dev/runtime/publicRuntime.mjs +91 -0
- package/dist/dev/runtime/publicRuntime.mjs.map +1 -0
- package/dist/dev/runtime/pullDownRefresh.d.mts +12 -0
- package/dist/dev/runtime/register/app.d.mts +14 -0
- package/dist/dev/runtime/register/app.mjs +7 -10
- package/dist/dev/runtime/register/app.mjs.map +1 -1
- package/dist/dev/runtime/register/component/lifecycle.mjs +22 -6
- package/dist/dev/runtime/register/component/lifecycle.mjs.map +1 -1
- package/dist/dev/runtime/register/component/methods.mjs +7 -10
- package/dist/dev/runtime/register/component/methods.mjs.map +1 -1
- package/dist/dev/runtime/register/component/options.mjs.map +1 -1
- package/dist/dev/runtime/register/component/registerDefinition.mjs +64 -69
- package/dist/dev/runtime/register/component/registerDefinition.mjs.map +1 -1
- package/dist/dev/runtime/register/component.d.mts +17 -0
- package/dist/dev/runtime/register/inline.d.mts +15 -0
- package/dist/dev/runtime/register/inline.mjs +4 -64
- package/dist/dev/runtime/register/inline.mjs.map +1 -1
- package/dist/dev/runtime/register/runtimeInstance/setupContext.mjs +1 -1
- package/dist/dev/runtime/register/runtimeInstance/setupContext.mjs.map +1 -1
- package/dist/dev/runtime/register/runtimeInstance/setupPhase.mjs +4 -6
- package/dist/dev/runtime/register/runtimeInstance/setupPhase.mjs.map +1 -1
- package/dist/dev/runtime/register/runtimeInstance/setupSnapshot.mjs +26 -0
- package/dist/dev/runtime/register/runtimeInstance/setupSnapshot.mjs.map +1 -0
- package/dist/dev/runtime/register/runtimeInstance/utils.mjs.map +1 -1
- package/dist/dev/runtime/register/runtimeInstance.d.mts +26 -0
- package/dist/dev/runtime/register/runtimeInstance.mjs +402 -160
- package/dist/dev/runtime/register/runtimeInstance.mjs.map +1 -1
- package/dist/dev/runtime/register/setDataFrequencyWarning.mjs.map +1 -1
- package/dist/dev/runtime/register/setup.d.mts +11 -0
- package/dist/dev/runtime/register/snapshot.mjs +6 -10
- package/dist/dev/runtime/register/snapshot.mjs.map +1 -1
- package/dist/dev/runtime/register/watch.d.mts +12 -0
- package/dist/dev/runtime/register.d.mts +5 -0
- package/dist/dev/runtime/scopedSlots.mjs +1 -1
- package/dist/dev/runtime/scopedSlots.mjs.map +1 -1
- package/dist/dev/runtime/selectorQuery.d.mts +54 -0
- package/dist/dev/runtime/selectorQuery.mjs +5 -0
- package/dist/dev/runtime/selectorQuery.mjs.map +1 -1
- package/dist/dev/runtime/teardown.mjs +18 -0
- package/dist/dev/runtime/teardown.mjs.map +1 -0
- package/dist/dev/runtime/template.d.mts +6 -0
- package/dist/dev/runtime/templateRefTypes.d.mts +12 -0
- package/dist/dev/runtime/templateRefs/helpers.mjs.map +1 -1
- package/dist/dev/runtime/templateRefs.mjs +187 -118
- package/dist/dev/runtime/templateRefs.mjs.map +1 -1
- package/dist/dev/runtime/types/core.d.mts +35 -0
- package/dist/dev/runtime/types/miniprogram.d.mts +84 -0
- package/dist/dev/runtime/types/miniprogramHost.d.mts +45 -0
- package/dist/dev/runtime/types/miniprogramHostSources.d.mts +112 -0
- package/dist/dev/runtime/types/options.d.mts +136 -0
- package/dist/dev/runtime/types/props/propTypes.d.mts +79 -0
- package/dist/dev/runtime/types/props/router.d.mts +51 -0
- package/dist/dev/runtime/types/props/setup.d.mts +96 -0
- package/dist/dev/runtime/types/props.d.mts +4 -0
- package/dist/dev/runtime/types/runtime.d.mts +59 -0
- package/dist/dev/runtime/types/setData.d.mts +237 -0
- package/dist/dev/runtime/types.d.mts +29 -0
- package/dist/dev/runtime/uniAppHost.d.mts +8 -0
- package/dist/dev/runtime/updatePerformance.d.mts +13 -0
- package/dist/dev/runtime/use.d.mts +13 -0
- package/dist/dev/runtime/vueCompat/context.d.mts +8 -0
- package/dist/dev/runtime/vueCompat/model.d.mts +30 -0
- package/dist/dev/runtime/vueCompat/router.d.mts +29 -0
- package/dist/dev/runtime/vueCompat/router.mjs +18 -13
- package/dist/dev/runtime/vueCompat/router.mjs.map +1 -1
- package/dist/dev/runtime/vueCompat/templateRef.d.mts +9 -0
- package/dist/dev/runtime/vueCompat/templateRef.mjs +2 -0
- package/dist/dev/runtime/vueCompat/templateRef.mjs.map +1 -1
- package/dist/dev/runtime/vueCompat.d.mts +5 -0
- package/dist/dev/scheduler.d.mts +4 -0
- package/dist/dev/store/base.mjs +12 -18
- package/dist/dev/store/base.mjs.map +1 -1
- package/dist/dev/store/define/optionsStyle.mjs +13 -23
- package/dist/dev/store/define/optionsStyle.mjs.map +1 -1
- package/dist/dev/store/define/setupStyle.mjs +14 -24
- package/dist/dev/store/define/setupStyle.mjs.map +1 -1
- package/dist/dev/store/define/shared.mjs +44 -1
- package/dist/dev/store/define/shared.mjs.map +1 -1
- package/dist/dev/store/define.d.mts +28 -0
- package/dist/dev/store/define.mjs.map +1 -1
- package/dist/dev/store/manager.d.mts +8 -0
- package/dist/dev/store/storeToRefs.d.mts +13 -0
- package/dist/dev/store/types.d.mts +70 -0
- package/dist/dev/store.d.mts +5 -0
- package/dist/dev/version.d.mts +4 -0
- package/dist/dev/vue-augment.d.mts +8 -0
- package/dist/dev/vue-demi.d.mts +87 -0
- package/dist/dev/vue-demi.mjs +12 -15
- package/dist/dev/vue-demi.mjs.map +1 -1
- package/dist/dev/vue-types.d.mts +19 -0
- package/dist/dev/web-apis.d.mts +3 -0
- package/dist/index.d.mts +13 -14
- package/dist/index.mjs +1 -1
- package/dist/internal-reactivity.d.mts +2 -1
- package/dist/internal-reactivity.mjs +1 -1
- package/dist/internal-runtime.d.mts +13 -6
- package/dist/internal-runtime.mjs +1 -1
- package/dist/jsx-runtime.d.mts +47 -9
- package/dist/jsxTypes.d.mts +8 -0
- package/dist/miniprogram/jsx-runtime.d.mts +12 -0
- package/dist/miniprogram/jsx-runtime.mjs +1 -0
- package/dist/package.mjs +1 -1
- package/dist/reactivity/asyncDerivation.d.mts +40 -0
- package/dist/reactivity/asyncDerivation.mjs +1 -0
- package/dist/reactivity/computed.mjs +1 -1
- package/dist/reactivity/core.d.mts +1 -0
- package/dist/reactivity/core.mjs +1 -1
- package/dist/reactivity/index.d.mts +2 -1
- package/dist/reactivity/readonly.d.mts +1 -1
- package/dist/reactivity/ref.mjs +1 -1
- package/dist/router/createRouter.mjs +1 -1
- package/dist/router/useRoute.mjs +1 -1
- package/dist/runtime/app/computed.mjs +1 -1
- package/dist/runtime/app/context.mjs +1 -1
- package/dist/runtime/app/diagnostics.mjs +1 -1
- package/dist/runtime/app/mount.mjs +1 -1
- package/dist/runtime/app/setData/commitTracker.d.mts +12 -0
- package/dist/runtime/app/setData/commitTracker.mjs +1 -0
- package/dist/runtime/app/setData/patchScheduler.mjs +1 -1
- package/dist/runtime/app/setData/scheduler.d.mts +50 -0
- package/dist/runtime/app/setData/scheduler.mjs +1 -1
- package/dist/runtime/app/setData/snapshot.mjs +1 -1
- package/dist/runtime/app.mjs +1 -1
- package/dist/runtime/bindingManifest.mjs +1 -0
- package/dist/runtime/capabilities.d.mts +74 -0
- package/dist/runtime/capabilities.mjs +1 -0
- package/dist/runtime/define/componentDefinition.mjs +1 -1
- package/dist/runtime/define/optionsApi.mjs +1 -1
- package/dist/runtime/define/props.mjs +1 -1
- package/dist/runtime/define/scopedSlotOptions.mjs +1 -1
- package/dist/runtime/define.d.mts +5 -13
- package/dist/runtime/define.mjs +1 -1
- package/dist/runtime/diff.mjs +1 -1
- package/dist/runtime/features/inlineEvents.d.mts +6 -0
- package/dist/runtime/features/inlineEvents.mjs +1 -0
- package/dist/runtime/features/layout.d.mts +6 -0
- package/dist/runtime/features/layout.mjs +1 -0
- package/dist/runtime/features/patchStrategy.d.mts +6 -0
- package/dist/runtime/features/patchStrategy.mjs +1 -0
- package/dist/runtime/features/publicLayout.d.mts +23 -0
- package/dist/runtime/features/publicLayout.mjs +1 -0
- package/dist/runtime/features/scopedSlots.d.mts +22 -0
- package/dist/runtime/features/scopedSlots.mjs +1 -0
- package/dist/runtime/features/setDataHighFrequencyWarning.d.mts +6 -0
- package/dist/runtime/features/setDataHighFrequencyWarning.mjs +1 -0
- package/dist/runtime/features/templateRefs.d.mts +6 -0
- package/dist/runtime/features/templateRefs.mjs +1 -0
- package/dist/runtime/hooks/vue.d.mts +1 -2
- package/dist/runtime/hooks/vue.mjs +1 -1
- package/dist/runtime/index.d.mts +12 -14
- package/dist/runtime/inlineDataset.mjs +1 -0
- package/dist/runtime/jsxIsland.d.mts +2 -6
- package/dist/runtime/layoutBridge.d.mts +5 -9
- package/dist/runtime/pageLayout.d.mts +3 -4
- package/dist/runtime/platform.mjs +1 -1
- package/dist/runtime/publicRuntime.d.mts +21 -0
- package/dist/runtime/publicRuntime.mjs +1 -0
- package/dist/runtime/register/app.mjs +1 -1
- package/dist/runtime/register/component/lifecycle.mjs +1 -1
- package/dist/runtime/register/component/methods.mjs +1 -1
- package/dist/runtime/register/component/registerDefinition.mjs +1 -1
- package/dist/runtime/register/inline.mjs +1 -1
- package/dist/runtime/register/runtimeInstance/setupContext.mjs +1 -1
- package/dist/runtime/register/runtimeInstance/setupPhase.mjs +1 -1
- package/dist/runtime/register/runtimeInstance/setupSnapshot.mjs +1 -0
- package/dist/runtime/register/runtimeInstance.mjs +1 -1
- package/dist/runtime/register/snapshot.mjs +1 -1
- package/dist/runtime/scopedSlots.mjs +1 -1
- package/dist/runtime/selectorQuery.mjs +1 -1
- package/dist/runtime/teardown.mjs +1 -0
- package/dist/runtime/templateRefTypes.d.mts +5 -2
- package/dist/runtime/templateRefs.mjs +1 -1
- package/dist/runtime/types/miniprogram.d.mts +3 -0
- package/dist/runtime/types/options.d.mts +2 -2
- package/dist/runtime/types/props.d.mts +1 -1
- package/dist/runtime/types/setData.d.mts +18 -1
- package/dist/runtime/types.d.mts +3 -3
- package/dist/runtime/vueCompat/router.d.mts +5 -4
- package/dist/runtime/vueCompat/router.mjs +1 -1
- package/dist/runtime/vueCompat/templateRef.mjs +1 -1
- package/dist/store/base.mjs +1 -1
- package/dist/store/define/optionsStyle.mjs +1 -1
- package/dist/store/define/setupStyle.mjs +1 -1
- package/dist/store/define/shared.mjs +1 -1
- package/dist/store/define.d.mts +10 -8
- package/dist/store/types.d.mts +4 -4
- package/dist/tt/jsx-runtime.d.mts +12 -0
- package/dist/tt/jsx-runtime.mjs +1 -0
- package/dist/vue-demi.d.mts +13 -14
- package/dist/vue-demi.mjs +1 -1
- package/dist/weapp/jsx-runtime.d.mts +12 -0
- package/dist/weapp/jsx-runtime.mjs +1 -0
- package/package.json +26 -22
- package/dist/dev/jsx-runtime.mjs +0 -1
- package/dist/runtime/templateRefs.d.mts +0 -10
- package/dist/weappIntrinsicElements/base.d.mts +0 -21
- package/dist/weappIntrinsicElements/elements/ad-custom.d.mts +0 -12
- package/dist/weappIntrinsicElements/elements/ad.d.mts +0 -15
- package/dist/weappIntrinsicElements/elements/audio.d.mts +0 -19
- package/dist/weappIntrinsicElements/elements/block.d.mts +0 -7
- package/dist/weappIntrinsicElements/elements/button.d.mts +0 -39
- package/dist/weappIntrinsicElements/elements/camera.d.mts +0 -17
- package/dist/weappIntrinsicElements/elements/canvas.d.mts +0 -17
- package/dist/weappIntrinsicElements/elements/checkbox-group.d.mts +0 -12
- package/dist/weappIntrinsicElements/elements/checkbox.d.mts +0 -12
- package/dist/weappIntrinsicElements/elements/cover-image.d.mts +0 -9
- package/dist/weappIntrinsicElements/elements/cover-view.d.mts +0 -9
- package/dist/weappIntrinsicElements/elements/editor.d.mts +0 -21
- package/dist/weappIntrinsicElements/elements/form.d.mts +0 -15
- package/dist/weappIntrinsicElements/elements/functional-page-navigator.d.mts +0 -14
- package/dist/weappIntrinsicElements/elements/icon.d.mts +0 -11
- package/dist/weappIntrinsicElements/elements/image.d.mts +0 -17
- package/dist/weappIntrinsicElements/elements/import.d.mts +0 -9
- package/dist/weappIntrinsicElements/elements/include.d.mts +0 -9
- package/dist/weappIntrinsicElements/elements/input.d.mts +0 -46
- package/dist/weappIntrinsicElements/elements/keyboard-accessory.d.mts +0 -7
- package/dist/weappIntrinsicElements/elements/label.d.mts +0 -9
- package/dist/weappIntrinsicElements/elements/live-player.d.mts +0 -34
- package/dist/weappIntrinsicElements/elements/live-pusher.d.mts +0 -56
- package/dist/weappIntrinsicElements/elements/map.d.mts +0 -104
- package/dist/weappIntrinsicElements/elements/match-media.d.mts +0 -15
- package/dist/weappIntrinsicElements/elements/movable-area.d.mts +0 -25
- package/dist/weappIntrinsicElements/elements/movable-view.d.mts +0 -25
- package/dist/weappIntrinsicElements/elements/navigation-bar.d.mts +0 -14
- package/dist/weappIntrinsicElements/elements/navigator.d.mts +0 -24
- package/dist/weappIntrinsicElements/elements/official-account.d.mts +0 -12
- package/dist/weappIntrinsicElements/elements/open-data.d.mts +0 -14
- package/dist/weappIntrinsicElements/elements/page-container.d.mts +0 -24
- package/dist/weappIntrinsicElements/elements/page-meta.d.mts +0 -22
- package/dist/weappIntrinsicElements/elements/picker-view-column.d.mts +0 -17
- package/dist/weappIntrinsicElements/elements/picker-view.d.mts +0 -17
- package/dist/weappIntrinsicElements/elements/picker.d.mts +0 -22
- package/dist/weappIntrinsicElements/elements/progress.d.mts +0 -20
- package/dist/weappIntrinsicElements/elements/radio-group.d.mts +0 -12
- package/dist/weappIntrinsicElements/elements/radio.d.mts +0 -12
- package/dist/weappIntrinsicElements/elements/rich-text.d.mts +0 -16
- package/dist/weappIntrinsicElements/elements/scroll-view.d.mts +0 -67
- package/dist/weappIntrinsicElements/elements/share-element.d.mts +0 -17
- package/dist/weappIntrinsicElements/elements/slider.d.mts +0 -22
- package/dist/weappIntrinsicElements/elements/slot.d.mts +0 -9
- package/dist/weappIntrinsicElements/elements/swiper-item.d.mts +0 -41
- package/dist/weappIntrinsicElements/elements/swiper.d.mts +0 -41
- package/dist/weappIntrinsicElements/elements/switch.d.mts +0 -13
- package/dist/weappIntrinsicElements/elements/template.d.mts +0 -11
- package/dist/weappIntrinsicElements/elements/text.d.mts +0 -14
- package/dist/weappIntrinsicElements/elements/textarea.d.mts +0 -39
- package/dist/weappIntrinsicElements/elements/video.d.mts +0 -70
- package/dist/weappIntrinsicElements/elements/view.d.mts +0 -12
- package/dist/weappIntrinsicElements/elements/voip-room.d.mts +0 -13
- package/dist/weappIntrinsicElements/elements/web-view.d.mts +0 -12
- package/dist/weappIntrinsicElements.d.mts +0 -153
- /package/dist/_virtual/{_@oxc-project_runtime@0.148.0 → _@oxc-project_runtime@0.149.0}/helpers/esm/defineProperty.mjs +0 -0
- /package/dist/_virtual/{_@oxc-project_runtime@0.148.0 → _@oxc-project_runtime@0.149.0}/helpers/esm/toPrimitive.mjs +0 -0
- /package/dist/_virtual/{_@oxc-project_runtime@0.148.0 → _@oxc-project_runtime@0.149.0}/helpers/esm/toPropertyKey.mjs +0 -0
- /package/dist/_virtual/{_@oxc-project_runtime@0.148.0 → _@oxc-project_runtime@0.149.0}/helpers/esm/typeof.mjs +0 -0
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { queueJob } from "../../scheduler.mjs";
|
|
2
2
|
import { effect, stop } from "../../reactivity/core.mjs";
|
|
3
|
-
import {
|
|
4
|
-
import { toRaw } from "../../reactivity/reactive/shared.mjs";
|
|
5
|
-
import { clearPatchIndices, prelinkReactiveTree, touchReactive } from "../../reactivity/reactive/patch.mjs";
|
|
3
|
+
import { touchReactive } from "../../reactivity/reactive/patch.mjs";
|
|
6
4
|
import { shallowReactive } from "../../reactivity/reactive/shallow.mjs";
|
|
7
5
|
import { isReactive, reactive } from "../../reactivity/reactive.mjs";
|
|
8
6
|
import { watch } from "../../reactivity/watch.mjs";
|
|
7
|
+
import { requireRuntimeCapability } from "../capabilities.mjs";
|
|
9
8
|
import { hasOwn } from "../../utils.mjs";
|
|
10
9
|
import { createBindModel } from "../bindModel.mjs";
|
|
11
10
|
import { hasTrackableSetupBinding, touchSetupBinding } from "../setupTracking.mjs";
|
|
@@ -36,8 +35,10 @@ function resolveDataOption(data) {
|
|
|
36
35
|
return data !== null && data !== void 0 ? data : {};
|
|
37
36
|
}
|
|
38
37
|
function createRuntimeMount(options) {
|
|
39
|
-
const { data, resolvedComputed, resolvedMethods, appConfig, setDataOptions } = options;
|
|
38
|
+
const { data, resolvedComputed, resolvedMethods, appConfig, setDataOptions, bindingManifest } = options;
|
|
40
39
|
return (adapter) => {
|
|
40
|
+
var _scheduler$start;
|
|
41
|
+
if ((setDataOptions === null || setDataOptions === void 0 ? void 0 : setDataOptions.strategy) === "patch") requireRuntimeCapability("patchStrategy", "createRuntimeMount(setData.strategy=\"patch\")");
|
|
41
42
|
const rawState = resolveDataOption(data);
|
|
42
43
|
const adapterInitialProps = adapter === null || adapter === void 0 ? void 0 : adapter.__wevu_initialProps;
|
|
43
44
|
if (rawState && typeof rawState === "object" && !hasOwn(rawState, WEVU_PROPS_KEY)) try {
|
|
@@ -82,7 +83,9 @@ function createRuntimeMount(options) {
|
|
|
82
83
|
const diagnosticsLogger = createDiagnosticsLogger(diagnostics);
|
|
83
84
|
const loopWarningLogger = diagnostics === "off" && loopWarning ? createDiagnosticsLogger("fallback") : void 0;
|
|
84
85
|
const mergedDebug = debug || diagnosticsLogger || loopWarningLogger ? (info) => {
|
|
85
|
-
if (typeof debug === "function")
|
|
86
|
+
if (typeof debug === "function") try {
|
|
87
|
+
debug(info);
|
|
88
|
+
} catch (_unused3) {}
|
|
86
89
|
diagnosticsLogger === null || diagnosticsLogger === void 0 || diagnosticsLogger(info);
|
|
87
90
|
if (info.reason === "loopWarning") loopWarningLogger === null || loopWarningLogger === void 0 || loopWarningLogger(info);
|
|
88
91
|
} : void 0;
|
|
@@ -98,9 +101,8 @@ function createRuntimeMount(options) {
|
|
|
98
101
|
});
|
|
99
102
|
const currentAdapter = adapter !== null && adapter !== void 0 ? adapter : { setData: () => {} };
|
|
100
103
|
const targetLabel = currentAdapter.__wevu_targetLabel;
|
|
101
|
-
const stateRootRaw = toRaw(state);
|
|
102
104
|
let tracker;
|
|
103
|
-
const
|
|
105
|
+
const schedulerOptions = {
|
|
104
106
|
state,
|
|
105
107
|
setupState,
|
|
106
108
|
snapshotOmitKeys,
|
|
@@ -120,6 +122,8 @@ function createRuntimeMount(options) {
|
|
|
120
122
|
mergeSiblingMaxParentBytes,
|
|
121
123
|
mergeSiblingSkipArray,
|
|
122
124
|
elevateTopKeyThreshold,
|
|
125
|
+
prelinkMaxDepth,
|
|
126
|
+
prelinkMaxKeys,
|
|
123
127
|
toPlainMaxDepth,
|
|
124
128
|
toPlainMaxKeys,
|
|
125
129
|
includeFunctions,
|
|
@@ -127,15 +131,16 @@ function createRuntimeMount(options) {
|
|
|
127
131
|
debug: mergedDebug,
|
|
128
132
|
debugWhen: mergedDebugWhen,
|
|
129
133
|
debugSampleRate,
|
|
134
|
+
bindingManifest,
|
|
130
135
|
loopWarning,
|
|
131
136
|
targetLabel,
|
|
132
137
|
runTracker: () => tracker === null || tracker === void 0 ? void 0 : tracker(),
|
|
133
138
|
isMounted: () => mounted,
|
|
134
139
|
initialSnapshot: adapterInitialSnapshot && typeof adapterInitialSnapshot === "object" ? adapterInitialSnapshot : void 0,
|
|
135
140
|
initialState: adapterInitialState && typeof adapterInitialState === "object" ? adapterInitialState : void 0
|
|
136
|
-
}
|
|
137
|
-
const
|
|
138
|
-
const
|
|
141
|
+
};
|
|
142
|
+
const scheduler = setDataStrategy === "patch" ? requireRuntimeCapability("patchStrategy", "createRuntimeMount(setData.strategy=\"patch\")").createScheduler(schedulerOptions) : createSetDataScheduler(schedulerOptions);
|
|
143
|
+
const job = () => scheduler.job();
|
|
139
144
|
tracker = effect(() => {
|
|
140
145
|
touchReactive(state);
|
|
141
146
|
const runtimeProps = state[WEVU_PROPS_KEY];
|
|
@@ -153,16 +158,8 @@ function createRuntimeMount(options) {
|
|
|
153
158
|
});
|
|
154
159
|
if (!deferInitialSnapshot) job();
|
|
155
160
|
stopHandles.push(createWatchStopHandle(() => stop(tracker)));
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
shouldIncludeTopKey: shouldIncludeKey,
|
|
159
|
-
maxDepth: prelinkMaxDepth,
|
|
160
|
-
maxKeys: prelinkMaxKeys
|
|
161
|
-
});
|
|
162
|
-
addMutationRecorder(mutationRecorder);
|
|
163
|
-
stopHandles.push(createWatchStopHandle(() => removeMutationRecorder(mutationRecorder)));
|
|
164
|
-
stopHandles.push(createWatchStopHandle(() => clearPatchIndices(state)));
|
|
165
|
-
}
|
|
161
|
+
(_scheduler$start = scheduler.start) === null || _scheduler$start === void 0 || _scheduler$start.call(scheduler);
|
|
162
|
+
if (scheduler.dispose) stopHandles.push(createWatchStopHandle(scheduler.dispose));
|
|
166
163
|
function registerWatch(source, cb, watchOptions) {
|
|
167
164
|
const stopHandle = watch(source, (value, oldValue) => cb(value, oldValue), watchOptions);
|
|
168
165
|
stopHandles.push(stopHandle);
|
|
@@ -174,12 +171,18 @@ function createRuntimeMount(options) {
|
|
|
174
171
|
}
|
|
175
172
|
const bindModel = createBindModel(publicInstance, state, computedRefs, computedSetters, setupState);
|
|
176
173
|
const unmount = () => {
|
|
174
|
+
var _scheduler$dispose;
|
|
177
175
|
if (!mounted) return;
|
|
178
176
|
mounted = false;
|
|
177
|
+
(_scheduler$dispose = scheduler.dispose) === null || _scheduler$dispose === void 0 || _scheduler$dispose.call(scheduler);
|
|
178
|
+
try {
|
|
179
|
+
var _currentAdapter$__wev;
|
|
180
|
+
(_currentAdapter$__wev = currentAdapter.__wevu_disposeSetData) === null || _currentAdapter$__wev === void 0 || _currentAdapter$__wev.call(currentAdapter);
|
|
181
|
+
} catch (_unused4) {}
|
|
179
182
|
stopHandles.forEach((handle) => {
|
|
180
183
|
try {
|
|
181
184
|
handle();
|
|
182
|
-
} catch (
|
|
185
|
+
} catch (_unused5) {}
|
|
183
186
|
});
|
|
184
187
|
stopHandles.length = 0;
|
|
185
188
|
};
|
|
@@ -214,7 +217,7 @@ function createRuntimeMount(options) {
|
|
|
214
217
|
enumerable: false,
|
|
215
218
|
writable: false
|
|
216
219
|
});
|
|
217
|
-
} catch (
|
|
220
|
+
} catch (_unused6) {
|
|
218
221
|
runtimeInstance.__wevu_touchSetupMethodsVersion = touchSetupMethodsVersion;
|
|
219
222
|
}
|
|
220
223
|
try {
|
|
@@ -224,18 +227,18 @@ function createRuntimeMount(options) {
|
|
|
224
227
|
enumerable: false,
|
|
225
228
|
writable: false
|
|
226
229
|
});
|
|
227
|
-
} catch (
|
|
230
|
+
} catch (_unused7) {
|
|
228
231
|
runtimeInstance.__wevu_flushSetupSnapshotSync = job;
|
|
229
232
|
}
|
|
230
233
|
try {
|
|
231
|
-
Object.defineProperty(runtimeInstance, "
|
|
234
|
+
Object.defineProperty(runtimeInstance, "__wevu_cloneDispatchedSnapshot", {
|
|
232
235
|
value: scheduler.cloneLatestSnapshot,
|
|
233
236
|
configurable: true,
|
|
234
237
|
enumerable: false,
|
|
235
238
|
writable: false
|
|
236
239
|
});
|
|
237
|
-
} catch (
|
|
238
|
-
runtimeInstance.
|
|
240
|
+
} catch (_unused8) {
|
|
241
|
+
runtimeInstance.__wevu_cloneDispatchedSnapshot = scheduler.cloneLatestSnapshot;
|
|
239
242
|
}
|
|
240
243
|
try {
|
|
241
244
|
Object.defineProperty(runtimeInstance, "__wevu_trackSetupReactiveKey", {
|
|
@@ -246,7 +249,7 @@ function createRuntimeMount(options) {
|
|
|
246
249
|
enumerable: false,
|
|
247
250
|
writable: false
|
|
248
251
|
});
|
|
249
|
-
} catch (
|
|
252
|
+
} catch (_unused9) {
|
|
250
253
|
runtimeInstance.__wevu_trackSetupReactiveKey = (key) => {
|
|
251
254
|
trackedSetupReactiveKeys.add(key);
|
|
252
255
|
};
|
|
@@ -258,7 +261,7 @@ function createRuntimeMount(options) {
|
|
|
258
261
|
enumerable: false,
|
|
259
262
|
writable: false
|
|
260
263
|
});
|
|
261
|
-
} catch (
|
|
264
|
+
} catch (_unused10) {
|
|
262
265
|
runtimeInstance[WEVU_PROPS_DERIVED_KEYS_KEY] = snapshotOmitKeys;
|
|
263
266
|
}
|
|
264
267
|
return runtimeInstance;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mount.mjs","names":[],"sources":["../../../../src/runtime/app/mount.ts"],"sourcesContent":["import type { MutationRecord, WatchOptions, WatchStopHandle } from '../../reactivity'\nimport type {\n AppConfig,\n ComputedDefinitions,\n CreateAppOptions,\n ExtractComputed,\n MethodDefinitions,\n MiniProgramAdapter,\n RuntimeInstance,\n SetDataDebugInfo,\n} from '../types'\nimport {\n WEVU_ATTRS_KEY,\n WEVU_PROPS_DERIVED_KEYS_KEY,\n WEVU_PROPS_KEY,\n WEVU_SETUP_STATE_KEY,\n} from '@weapp-core/constants'\nimport { addMutationRecorder, effect, isReactive, prelinkReactiveTree, reactive, removeMutationRecorder, shallowReactive, stop, toRaw, touchReactive, watch } from '../../reactivity'\nimport { clearPatchIndices } from '../../reactivity/reactive'\nimport { queueJob } from '../../scheduler'\nimport { hasOwn } from '../../utils'\nimport { createBindModel } from '../bindModel'\nimport { hasTrackableSetupBinding, touchSetupBinding } from '../setupTracking'\nimport { createRuntimeContext } from './context'\nimport { createDiagnosticsLogger } from './diagnostics'\nimport { createSetDataScheduler } from './setData/scheduler'\nimport { resolveSetDataOptions } from './setDataOptions'\n\nfunction createWatchStopHandle(cleanup: () => void, baseHandle?: WatchStopHandle): WatchStopHandle {\n const stopHandle = (() => {\n cleanup()\n }) as WatchStopHandle\n stopHandle.stop = () => stopHandle()\n stopHandle.pause = () => {\n baseHandle?.pause?.()\n }\n stopHandle.resume = () => {\n baseHandle?.resume?.()\n }\n return stopHandle\n}\n\ntype RuntimeInstanceWithSetupMethodsVersion<\n D extends object,\n C extends ComputedDefinitions,\n M extends MethodDefinitions,\n> = RuntimeInstance<D, C, M> & {\n __wevu_touchSetupMethodsVersion?: () => void\n __wevu_flushSetupSnapshotSync?: () => void\n __wevu_cloneLatestSnapshot?: () => Record<string, any>\n __wevu_trackSetupReactiveKey?: (key: string) => void\n}\n\nfunction resolveDataOption<D extends object>(data: CreateAppOptions<D, any, any>['data']): D {\n if (typeof data === 'function') {\n return data()\n }\n return (data ?? {}) as D\n}\n\nexport function createRuntimeMount<D extends object, C extends ComputedDefinitions, M extends MethodDefinitions>(options: {\n data: CreateAppOptions<D, C, M>['data']\n resolvedComputed: C\n resolvedMethods: M\n appConfig: AppConfig\n setDataOptions: CreateAppOptions<D, C, M>['setData']\n}) {\n const {\n data,\n resolvedComputed,\n resolvedMethods,\n appConfig,\n setDataOptions,\n } = options\n\n return (adapter?: MiniProgramAdapter): RuntimeInstance<D, C, M> => {\n const rawState = resolveDataOption(data)\n const adapterInitialProps = (adapter as any)?.__wevu_initialProps\n // 预置 props 容器,确保编译器生成的 this.__wevuProps 回退表达式\n // 在 computed 首次求值阶段即可建立响应式依赖。\n if (rawState && typeof rawState === 'object' && !hasOwn(rawState as object, WEVU_PROPS_KEY)) {\n try {\n Object.defineProperty(rawState as object, WEVU_PROPS_KEY, {\n value: shallowReactive(Object.create(null)),\n configurable: true,\n enumerable: false,\n writable: false,\n })\n }\n catch {\n // 若 data 返回对象不可扩展,则跳过预置,后续由 mount 阶段兜底注入。\n }\n }\n const rawProps = rawState && typeof rawState === 'object'\n ? (rawState as any)[WEVU_PROPS_KEY]\n : undefined\n if (rawProps && typeof rawProps === 'object' && adapterInitialProps && typeof adapterInitialProps === 'object') {\n Object.assign(rawProps, adapterInitialProps)\n }\n const state = reactive(rawState)\n const setupState = reactive(Object.create(null))\n const adapterSnapshotOmitKeys = (adapter as any)?.__wevu_snapshotOmitKeys\n const deferInitialSnapshot = Boolean((adapter as any)?.__wevu_deferInitialSnapshot)\n const adapterInitialSnapshot = (adapter as any)?.__wevu_initialSnapshot\n const adapterInitialState = (adapter as any)?.__wevu_initialState\n const snapshotOmitKeys = new Set<string>(\n adapterSnapshotOmitKeys instanceof Set\n ? adapterSnapshotOmitKeys\n : Array.isArray(adapterSnapshotOmitKeys)\n ? adapterSnapshotOmitKeys\n : [],\n )\n if (rawState && typeof rawState === 'object' && !hasOwn(rawState as object, WEVU_SETUP_STATE_KEY)) {\n try {\n Object.defineProperty(rawState as object, WEVU_SETUP_STATE_KEY, {\n value: setupState,\n configurable: true,\n enumerable: false,\n writable: false,\n })\n }\n catch {\n // 若 data 返回对象不可扩展,则跳过预置,后续由注册阶段兜底注入。\n }\n }\n if (rawState && typeof rawState === 'object' && adapterInitialState && typeof adapterInitialState === 'object') {\n for (const [key, value] of Object.entries(adapterInitialState as Record<string, unknown>)) {\n if (snapshotOmitKeys.has(key)) {\n continue\n }\n ;(rawState as Record<string, unknown>)[key] = value\n }\n }\n const computedDefs = resolvedComputed\n const methodDefs = resolvedMethods\n\n let mounted = true\n const stopHandles: WatchStopHandle[] = []\n const trackedSetupReactiveKeys = new Set<string>()\n Object.keys(state as any).forEach((key) => {\n const value = (state as any)[key]\n if (hasTrackableSetupBinding(value)) {\n trackedSetupReactiveKeys.add(key)\n }\n })\n\n const {\n includeComputed,\n setDataStrategy,\n maxPatchKeys,\n maxPayloadBytes,\n mergeSiblingThreshold,\n mergeSiblingMaxInflationRatio,\n mergeSiblingMaxParentBytes,\n mergeSiblingSkipArray,\n computedCompare,\n computedCompareMaxDepth,\n computedCompareMaxKeys,\n prelinkMaxDepth,\n prelinkMaxKeys,\n debug,\n diagnostics,\n loopWarning,\n debugWhen,\n debugSampleRate,\n elevateTopKeyThreshold,\n toPlainMaxDepth,\n toPlainMaxKeys,\n includeFunctions,\n functionPaths,\n shouldIncludeKey,\n } = resolveSetDataOptions(setDataOptions)\n const diagnosticsLogger = createDiagnosticsLogger(diagnostics)\n const loopWarningLogger = diagnostics === 'off' && loopWarning\n ? createDiagnosticsLogger('fallback')\n : undefined\n const mergedDebug = (debug || diagnosticsLogger || loopWarningLogger)\n ? (info: SetDataDebugInfo) => {\n if (typeof debug === 'function') {\n debug(info)\n }\n diagnosticsLogger?.(info)\n if (info.reason === 'loopWarning') {\n loopWarningLogger?.(info)\n }\n }\n : undefined\n const mergedDebugWhen = diagnostics === 'always'\n ? 'always'\n : debugWhen\n\n const {\n boundMethods,\n computedRefs,\n computedSetters,\n dirtyComputedKeys,\n computedProxy,\n publicInstance,\n touchSetupMethodsVersion,\n } = createRuntimeContext({\n state,\n setupState: setupState as Record<string, any>,\n computedDefs,\n methodDefs,\n appConfig,\n includeComputed,\n setDataStrategy,\n })\n\n const currentAdapter = adapter ?? { setData: () => {} }\n const targetLabel = (currentAdapter as any).__wevu_targetLabel as string | undefined\n const stateRootRaw = toRaw(state as any) as object\n let tracker: ReturnType<typeof effect> | undefined\n const scheduler = createSetDataScheduler({\n state: state as any,\n setupState: setupState as any,\n snapshotOmitKeys,\n computedRefs,\n dirtyComputedKeys,\n includeComputed,\n setDataStrategy,\n computedCompare,\n computedCompareMaxDepth,\n computedCompareMaxKeys,\n currentAdapter,\n shouldIncludeKey,\n maxPatchKeys,\n maxPayloadBytes,\n mergeSiblingThreshold,\n mergeSiblingMaxInflationRatio,\n mergeSiblingMaxParentBytes,\n mergeSiblingSkipArray,\n elevateTopKeyThreshold,\n toPlainMaxDepth,\n toPlainMaxKeys,\n includeFunctions,\n functionPaths,\n debug: mergedDebug,\n debugWhen: mergedDebugWhen,\n debugSampleRate,\n loopWarning,\n targetLabel,\n runTracker: () => tracker?.(),\n isMounted: () => mounted,\n initialSnapshot: adapterInitialSnapshot && typeof adapterInitialSnapshot === 'object'\n ? adapterInitialSnapshot\n : undefined,\n initialState: adapterInitialState && typeof adapterInitialState === 'object'\n ? adapterInitialState\n : undefined,\n })\n const job = () => scheduler.job(stateRootRaw)\n const mutationRecorder = (record: MutationRecord) => scheduler.mutationRecorder(record, stateRootRaw)\n\n tracker = effect(\n () => {\n // 通过根版本信号跟踪任意状态变化\n touchReactive(state as any)\n // __wevuProps / __wevuAttrs 是非枚举属性,需显式跟踪,\n // 否则 props/attrs 更新不会触发 setData 调度。\n const runtimeProps = (state as any)[WEVU_PROPS_KEY]\n if (isReactive(runtimeProps)) {\n touchReactive(runtimeProps as any)\n }\n const runtimeAttrs = (state as any)[WEVU_ATTRS_KEY]\n if (isReactive(runtimeAttrs)) {\n touchReactive(runtimeAttrs as any)\n }\n // 在 setup 返回的 ref/computedRef 变更不会提升 reactive 根版本:\n // 仅跟踪这些明确注册过的键,避免每轮 flush 扫描整份 state。\n trackedSetupReactiveKeys.forEach((key) => {\n const v = (setupState as any)[key] ?? (state as any)[key]\n // setup 返回的组合式对象常常是“普通对象 + 内含 refs/reactive”,\n // 这里递归触达内部响应式源,确保异步更新也能继续驱动 setData。\n touchSetupBinding(v)\n })\n },\n {\n lazy: true,\n scheduler: () => queueJob(job),\n },\n )\n\n if (!deferInitialSnapshot) {\n job()\n }\n\n stopHandles.push(createWatchStopHandle(() => stop(tracker)))\n if (setDataStrategy === 'patch') {\n prelinkReactiveTree(state as any, { shouldIncludeTopKey: shouldIncludeKey, maxDepth: prelinkMaxDepth, maxKeys: prelinkMaxKeys })\n addMutationRecorder(mutationRecorder)\n stopHandles.push(createWatchStopHandle(() => removeMutationRecorder(mutationRecorder)))\n stopHandles.push(createWatchStopHandle(() => clearPatchIndices(state as any)))\n }\n\n function registerWatch<T>(\n source: (() => T) | Record<string, any>,\n cb: (value: T, oldValue: T) => void,\n watchOptions?: WatchOptions,\n ): WatchStopHandle {\n const stopHandle = watch(source as any, (value: T, oldValue: T) => cb(value, oldValue), watchOptions)\n stopHandles.push(stopHandle)\n return createWatchStopHandle(() => {\n stopHandle()\n const index = stopHandles.indexOf(stopHandle)\n if (index >= 0) {\n stopHandles.splice(index, 1)\n }\n }, stopHandle)\n }\n\n const bindModel = createBindModel(\n publicInstance as any,\n state as any,\n computedRefs,\n computedSetters,\n setupState as Record<string, any>,\n )\n\n const unmount = () => {\n if (!mounted) {\n return\n }\n mounted = false\n stopHandles.forEach((handle) => {\n try {\n handle()\n }\n catch {\n // 卸载阶段忽略 stop 抛错,确保其余清理继续\n }\n })\n stopHandles.length = 0\n }\n\n const runtimeInstance: RuntimeInstance<D, C, M> = {\n get state() {\n return state\n },\n get setupState() {\n return setupState as Record<string, any>\n },\n get proxy() {\n return publicInstance\n },\n get methods() {\n return boundMethods\n },\n get computed() {\n return computedProxy as Readonly<ExtractComputed<C>>\n },\n get adapter() {\n return currentAdapter\n },\n bindModel,\n watch: registerWatch,\n snapshot: () => scheduler.snapshot(),\n unmount,\n }\n\n try {\n Object.defineProperty(runtimeInstance, '__wevu_touchSetupMethodsVersion', {\n value: touchSetupMethodsVersion,\n configurable: true,\n enumerable: false,\n writable: false,\n })\n }\n catch {\n ;(runtimeInstance as RuntimeInstanceWithSetupMethodsVersion<D, C, M>).__wevu_touchSetupMethodsVersion = touchSetupMethodsVersion\n }\n\n try {\n Object.defineProperty(runtimeInstance, '__wevu_flushSetupSnapshotSync', {\n value: job,\n configurable: true,\n enumerable: false,\n writable: false,\n })\n }\n catch {\n ;(runtimeInstance as RuntimeInstanceWithSetupMethodsVersion<D, C, M>).__wevu_flushSetupSnapshotSync = job\n }\n\n try {\n Object.defineProperty(runtimeInstance, '__wevu_cloneLatestSnapshot', {\n value: scheduler.cloneLatestSnapshot,\n configurable: true,\n enumerable: false,\n writable: false,\n })\n }\n catch {\n ;(runtimeInstance as RuntimeInstanceWithSetupMethodsVersion<D, C, M>).__wevu_cloneLatestSnapshot = scheduler.cloneLatestSnapshot\n }\n\n try {\n Object.defineProperty(runtimeInstance, '__wevu_trackSetupReactiveKey', {\n value: (key: string) => {\n trackedSetupReactiveKeys.add(key)\n },\n configurable: true,\n enumerable: false,\n writable: false,\n })\n }\n catch {\n ;(runtimeInstance as RuntimeInstanceWithSetupMethodsVersion<D, C, M>).__wevu_trackSetupReactiveKey = (key: string) => {\n trackedSetupReactiveKeys.add(key)\n }\n }\n\n try {\n Object.defineProperty(runtimeInstance, WEVU_PROPS_DERIVED_KEYS_KEY, {\n value: snapshotOmitKeys,\n configurable: true,\n enumerable: false,\n writable: false,\n })\n }\n catch {\n ;(runtimeInstance as any)[WEVU_PROPS_DERIVED_KEYS_KEY] = snapshotOmitKeys\n }\n\n return runtimeInstance\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mount.mjs","names":[],"sources":["../../../../src/runtime/app/mount.ts"],"sourcesContent":["import type { WevuRuntimeBindingManifestV1 } from '@weapp-core/constants'\nimport type { WatchOptions, WatchStopHandle } from '../../reactivity'\nimport type {\n AppConfig,\n ComputedDefinitions,\n CreateAppOptions,\n ExtractComputed,\n MethodDefinitions,\n MiniProgramAdapter,\n RuntimeInstance,\n SetDataDebugInfo,\n} from '../types'\nimport type { CommitAwareSetDataAdapter } from './setData/commitTracker'\nimport {\n WEVU_ATTRS_KEY,\n WEVU_PROPS_DERIVED_KEYS_KEY,\n WEVU_PROPS_KEY,\n WEVU_SETUP_STATE_KEY,\n} from '@weapp-core/constants'\nimport { effect, isReactive, reactive, shallowReactive, stop, touchReactive, watch } from '../../reactivity'\nimport { queueJob } from '../../scheduler'\nimport { hasOwn } from '../../utils'\nimport { createBindModel } from '../bindModel'\nimport { requireRuntimeCapability } from '../capabilities'\nimport { hasTrackableSetupBinding, touchSetupBinding } from '../setupTracking'\nimport { createRuntimeContext } from './context'\nimport { createDiagnosticsLogger } from './diagnostics'\nimport { createSetDataScheduler } from './setData/scheduler'\nimport { resolveSetDataOptions } from './setDataOptions'\n\nfunction createWatchStopHandle(cleanup: () => void, baseHandle?: WatchStopHandle): WatchStopHandle {\n const stopHandle = (() => {\n cleanup()\n }) as WatchStopHandle\n stopHandle.stop = () => stopHandle()\n stopHandle.pause = () => {\n baseHandle?.pause?.()\n }\n stopHandle.resume = () => {\n baseHandle?.resume?.()\n }\n return stopHandle\n}\n\ntype RuntimeInstanceWithSetupMethodsVersion<\n D extends object,\n C extends ComputedDefinitions,\n M extends MethodDefinitions,\n> = RuntimeInstance<D, C, M> & {\n __wevu_touchSetupMethodsVersion?: () => void\n __wevu_flushSetupSnapshotSync?: () => void\n __wevu_cloneDispatchedSnapshot?: () => Record<string, any>\n __wevu_trackSetupReactiveKey?: (key: string) => void\n}\n\nfunction resolveDataOption<D extends object>(data: CreateAppOptions<D, any, any>['data']): D {\n if (typeof data === 'function') {\n return data()\n }\n return (data ?? {}) as D\n}\n\nexport function createRuntimeMount<D extends object, C extends ComputedDefinitions, M extends MethodDefinitions>(options: {\n data: CreateAppOptions<D, C, M>['data']\n resolvedComputed: C\n resolvedMethods: M\n appConfig: AppConfig\n setDataOptions: CreateAppOptions<D, C, M>['setData']\n bindingManifest?: WevuRuntimeBindingManifestV1\n}) {\n const {\n data,\n resolvedComputed,\n resolvedMethods,\n appConfig,\n setDataOptions,\n bindingManifest,\n } = options\n\n return (adapter?: MiniProgramAdapter): RuntimeInstance<D, C, M> => {\n if (setDataOptions?.strategy === 'patch') {\n requireRuntimeCapability('patchStrategy', 'createRuntimeMount(setData.strategy=\"patch\")')\n }\n const rawState = resolveDataOption(data)\n const adapterInitialProps = (adapter as any)?.__wevu_initialProps\n // 预置 props 容器,确保编译器生成的 this.__wevuProps 回退表达式\n // 在 computed 首次求值阶段即可建立响应式依赖。\n if (rawState && typeof rawState === 'object' && !hasOwn(rawState as object, WEVU_PROPS_KEY)) {\n try {\n Object.defineProperty(rawState as object, WEVU_PROPS_KEY, {\n value: shallowReactive(Object.create(null)),\n configurable: true,\n enumerable: false,\n writable: false,\n })\n }\n catch {\n // 若 data 返回对象不可扩展,则跳过预置,后续由 mount 阶段兜底注入。\n }\n }\n const rawProps = rawState && typeof rawState === 'object'\n ? (rawState as any)[WEVU_PROPS_KEY]\n : undefined\n if (rawProps && typeof rawProps === 'object' && adapterInitialProps && typeof adapterInitialProps === 'object') {\n Object.assign(rawProps, adapterInitialProps)\n }\n const state = reactive(rawState)\n const setupState = reactive(Object.create(null))\n const adapterSnapshotOmitKeys = (adapter as any)?.__wevu_snapshotOmitKeys\n const deferInitialSnapshot = Boolean((adapter as any)?.__wevu_deferInitialSnapshot)\n const adapterInitialSnapshot = (adapter as any)?.__wevu_initialSnapshot\n const adapterInitialState = (adapter as any)?.__wevu_initialState\n const snapshotOmitKeys = new Set<string>(\n adapterSnapshotOmitKeys instanceof Set\n ? adapterSnapshotOmitKeys\n : Array.isArray(adapterSnapshotOmitKeys)\n ? adapterSnapshotOmitKeys\n : [],\n )\n if (rawState && typeof rawState === 'object' && !hasOwn(rawState as object, WEVU_SETUP_STATE_KEY)) {\n try {\n Object.defineProperty(rawState as object, WEVU_SETUP_STATE_KEY, {\n value: setupState,\n configurable: true,\n enumerable: false,\n writable: false,\n })\n }\n catch {\n // 若 data 返回对象不可扩展,则跳过预置,后续由注册阶段兜底注入。\n }\n }\n if (rawState && typeof rawState === 'object' && adapterInitialState && typeof adapterInitialState === 'object') {\n for (const [key, value] of Object.entries(adapterInitialState as Record<string, unknown>)) {\n if (snapshotOmitKeys.has(key)) {\n continue\n }\n ;(rawState as Record<string, unknown>)[key] = value\n }\n }\n const computedDefs = resolvedComputed\n const methodDefs = resolvedMethods\n\n let mounted = true\n const stopHandles: WatchStopHandle[] = []\n const trackedSetupReactiveKeys = new Set<string>()\n Object.keys(state as any).forEach((key) => {\n const value = (state as any)[key]\n if (hasTrackableSetupBinding(value)) {\n trackedSetupReactiveKeys.add(key)\n }\n })\n\n const {\n includeComputed,\n setDataStrategy,\n maxPatchKeys,\n maxPayloadBytes,\n mergeSiblingThreshold,\n mergeSiblingMaxInflationRatio,\n mergeSiblingMaxParentBytes,\n mergeSiblingSkipArray,\n computedCompare,\n computedCompareMaxDepth,\n computedCompareMaxKeys,\n prelinkMaxDepth,\n prelinkMaxKeys,\n debug,\n diagnostics,\n loopWarning,\n debugWhen,\n debugSampleRate,\n elevateTopKeyThreshold,\n toPlainMaxDepth,\n toPlainMaxKeys,\n includeFunctions,\n functionPaths,\n shouldIncludeKey,\n } = resolveSetDataOptions(setDataOptions)\n const diagnosticsLogger = createDiagnosticsLogger(diagnostics)\n const loopWarningLogger = diagnostics === 'off' && loopWarning\n ? createDiagnosticsLogger('fallback')\n : undefined\n const mergedDebug = (debug || diagnosticsLogger || loopWarningLogger)\n ? (info: SetDataDebugInfo) => {\n if (typeof debug === 'function') {\n try {\n debug(info)\n }\n catch {\n // 用户调试回调不得阻止默认诊断。\n }\n }\n diagnosticsLogger?.(info)\n if (info.reason === 'loopWarning') {\n loopWarningLogger?.(info)\n }\n }\n : undefined\n const mergedDebugWhen = diagnostics === 'always'\n ? 'always'\n : debugWhen\n\n const {\n boundMethods,\n computedRefs,\n computedSetters,\n dirtyComputedKeys,\n computedProxy,\n publicInstance,\n touchSetupMethodsVersion,\n } = createRuntimeContext({\n state,\n setupState: setupState as Record<string, any>,\n computedDefs,\n methodDefs,\n appConfig,\n includeComputed,\n setDataStrategy,\n })\n\n const currentAdapter: CommitAwareSetDataAdapter = adapter ?? { setData: () => {} }\n const targetLabel = (currentAdapter as any).__wevu_targetLabel as string | undefined\n let tracker: ReturnType<typeof effect> | undefined\n const schedulerOptions = {\n state: state as any,\n setupState: setupState as any,\n snapshotOmitKeys,\n computedRefs,\n dirtyComputedKeys,\n includeComputed,\n setDataStrategy,\n computedCompare,\n computedCompareMaxDepth,\n computedCompareMaxKeys,\n currentAdapter,\n shouldIncludeKey,\n maxPatchKeys,\n maxPayloadBytes,\n mergeSiblingThreshold,\n mergeSiblingMaxInflationRatio,\n mergeSiblingMaxParentBytes,\n mergeSiblingSkipArray,\n elevateTopKeyThreshold,\n prelinkMaxDepth,\n prelinkMaxKeys,\n toPlainMaxDepth,\n toPlainMaxKeys,\n includeFunctions,\n functionPaths,\n debug: mergedDebug,\n debugWhen: mergedDebugWhen,\n debugSampleRate,\n bindingManifest,\n loopWarning,\n targetLabel,\n runTracker: () => tracker?.(),\n isMounted: () => mounted,\n initialSnapshot: adapterInitialSnapshot && typeof adapterInitialSnapshot === 'object'\n ? adapterInitialSnapshot\n : undefined,\n initialState: adapterInitialState && typeof adapterInitialState === 'object'\n ? adapterInitialState\n : undefined,\n }\n const scheduler = setDataStrategy === 'patch'\n ? requireRuntimeCapability('patchStrategy', 'createRuntimeMount(setData.strategy=\"patch\")')\n .createScheduler(schedulerOptions)\n : createSetDataScheduler(schedulerOptions)\n const job = () => scheduler.job()\n\n tracker = effect(\n () => {\n // 通过根版本信号跟踪任意状态变化\n touchReactive(state as any)\n // __wevuProps / __wevuAttrs 是非枚举属性,需显式跟踪,\n // 否则 props/attrs 更新不会触发 setData 调度。\n const runtimeProps = (state as any)[WEVU_PROPS_KEY]\n if (isReactive(runtimeProps)) {\n touchReactive(runtimeProps as any)\n }\n const runtimeAttrs = (state as any)[WEVU_ATTRS_KEY]\n if (isReactive(runtimeAttrs)) {\n touchReactive(runtimeAttrs as any)\n }\n // 在 setup 返回的 ref/computedRef 变更不会提升 reactive 根版本:\n // 仅跟踪这些明确注册过的键,避免每轮 flush 扫描整份 state。\n trackedSetupReactiveKeys.forEach((key) => {\n const v = (setupState as any)[key] ?? (state as any)[key]\n // setup 返回的组合式对象常常是“普通对象 + 内含 refs/reactive”,\n // 这里递归触达内部响应式源,确保异步更新也能继续驱动 setData。\n touchSetupBinding(v)\n })\n },\n {\n lazy: true,\n scheduler: () => queueJob(job),\n },\n )\n\n if (!deferInitialSnapshot) {\n job()\n }\n\n stopHandles.push(createWatchStopHandle(() => stop(tracker)))\n scheduler.start?.()\n if (scheduler.dispose) {\n stopHandles.push(createWatchStopHandle(scheduler.dispose))\n }\n\n function registerWatch<T>(\n source: (() => T) | Record<string, any>,\n cb: (value: T, oldValue: T) => void,\n watchOptions?: WatchOptions,\n ): WatchStopHandle {\n const stopHandle = watch(source as any, (value: T, oldValue: T) => cb(value, oldValue), watchOptions)\n stopHandles.push(stopHandle)\n return createWatchStopHandle(() => {\n stopHandle()\n const index = stopHandles.indexOf(stopHandle)\n if (index >= 0) {\n stopHandles.splice(index, 1)\n }\n }, stopHandle)\n }\n\n const bindModel = createBindModel(\n publicInstance as any,\n state as any,\n computedRefs,\n computedSetters,\n setupState as Record<string, any>,\n )\n\n const unmount = () => {\n if (!mounted) {\n return\n }\n mounted = false\n scheduler.dispose?.()\n try {\n currentAdapter.__wevu_disposeSetData?.()\n }\n catch {\n // 卸载阶段继续清理其余运行时资源。\n }\n stopHandles.forEach((handle) => {\n try {\n handle()\n }\n catch {\n // 卸载阶段忽略 stop 抛错,确保其余清理继续\n }\n })\n stopHandles.length = 0\n }\n\n const runtimeInstance: RuntimeInstance<D, C, M> = {\n get state() {\n return state\n },\n get setupState() {\n return setupState as Record<string, any>\n },\n get proxy() {\n return publicInstance\n },\n get methods() {\n return boundMethods\n },\n get computed() {\n return computedProxy as Readonly<ExtractComputed<C>>\n },\n get adapter() {\n return currentAdapter\n },\n bindModel,\n watch: registerWatch,\n snapshot: () => scheduler.snapshot(),\n unmount,\n }\n\n try {\n Object.defineProperty(runtimeInstance, '__wevu_touchSetupMethodsVersion', {\n value: touchSetupMethodsVersion,\n configurable: true,\n enumerable: false,\n writable: false,\n })\n }\n catch {\n ;(runtimeInstance as RuntimeInstanceWithSetupMethodsVersion<D, C, M>).__wevu_touchSetupMethodsVersion = touchSetupMethodsVersion\n }\n\n try {\n Object.defineProperty(runtimeInstance, '__wevu_flushSetupSnapshotSync', {\n value: job,\n configurable: true,\n enumerable: false,\n writable: false,\n })\n }\n catch {\n ;(runtimeInstance as RuntimeInstanceWithSetupMethodsVersion<D, C, M>).__wevu_flushSetupSnapshotSync = job\n }\n\n try {\n Object.defineProperty(runtimeInstance, '__wevu_cloneDispatchedSnapshot', {\n value: scheduler.cloneLatestSnapshot,\n configurable: true,\n enumerable: false,\n writable: false,\n })\n }\n catch {\n ;(runtimeInstance as RuntimeInstanceWithSetupMethodsVersion<D, C, M>).__wevu_cloneDispatchedSnapshot = scheduler.cloneLatestSnapshot\n }\n\n try {\n Object.defineProperty(runtimeInstance, '__wevu_trackSetupReactiveKey', {\n value: (key: string) => {\n trackedSetupReactiveKeys.add(key)\n },\n configurable: true,\n enumerable: false,\n writable: false,\n })\n }\n catch {\n ;(runtimeInstance as RuntimeInstanceWithSetupMethodsVersion<D, C, M>).__wevu_trackSetupReactiveKey = (key: string) => {\n trackedSetupReactiveKeys.add(key)\n }\n }\n\n try {\n Object.defineProperty(runtimeInstance, WEVU_PROPS_DERIVED_KEYS_KEY, {\n value: snapshotOmitKeys,\n configurable: true,\n enumerable: false,\n writable: false,\n })\n }\n catch {\n ;(runtimeInstance as any)[WEVU_PROPS_DERIVED_KEYS_KEY] = snapshotOmitKeys\n }\n\n return runtimeInstance\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { RuntimeApp } from "../types/runtime.mjs";
|
|
2
|
+
import "../types.mjs";
|
|
3
|
+
//#region src/runtime/app/pending.d.ts
|
|
4
|
+
export interface PendingRuntimeAppRegistration {
|
|
5
|
+
app: RuntimeApp<any, any, any>;
|
|
6
|
+
register: () => void;
|
|
7
|
+
}
|
|
8
|
+
export declare function takePendingRuntimeAppRegistration(): PendingRuntimeAppRegistration | undefined;
|
|
9
|
+
//#endregion
|
|
10
|
+
//# sourceMappingURL=pending.d.mts.map
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { MiniProgramAdapter } from "../../types/miniprogram.mjs";
|
|
2
|
+
import "../../types.mjs";
|
|
3
|
+
//#region src/runtime/app/setData/commitTracker.d.ts
|
|
4
|
+
export type SetDataPayload = Record<string, unknown>;
|
|
5
|
+
export type SetDataAdapterSettlement = 'committed' | 'failed' | 'abandoned';
|
|
6
|
+
export type SetDataAdapterSettler = (settlement: SetDataAdapterSettlement, cause?: unknown) => void;
|
|
7
|
+
export interface CommitAwareSetDataAdapter extends MiniProgramAdapter {
|
|
8
|
+
__wevu_dispatchSetData?: (payload: SetDataPayload, settle: SetDataAdapterSettler) => void;
|
|
9
|
+
__wevu_reportSetDataError?: (error: Error) => void;
|
|
10
|
+
__wevu_disposeSetData?: () => void;
|
|
11
|
+
}
|
|
12
|
+
//#endregion
|
|
13
|
+
//# sourceMappingURL=commitTracker.d.mts.map
|
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
import { cloneSnapshotValue } from "./snapshot.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/runtime/app/setData/commitTracker.ts
|
|
4
|
+
const resolvedCommitPromise = Promise.resolve();
|
|
5
|
+
function isThenable(value) {
|
|
6
|
+
return Boolean(value && (typeof value === "object" || typeof value === "function") && typeof value.then === "function");
|
|
7
|
+
}
|
|
8
|
+
function formatCommitFailureCause(cause) {
|
|
9
|
+
try {
|
|
10
|
+
return cause instanceof Error ? cause.message : String(cause);
|
|
11
|
+
} catch (_unused) {
|
|
12
|
+
return "<unprintable cause>";
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
function createCommitError(kind, record, cause) {
|
|
16
|
+
const causeMessage = formatCommitFailureCause(cause);
|
|
17
|
+
const error = /* @__PURE__ */ new Error(`[wevu] setData commit failed (${kind === "adapter" ? "adapter failure" : "out-of-order completion"}, revision=${record.revision}, mode=${record.mode}, kind=${record.kind}): ${causeMessage}`);
|
|
18
|
+
error.cause = cause;
|
|
19
|
+
return error;
|
|
20
|
+
}
|
|
21
|
+
function observeSetDataCompletion(options) {
|
|
22
|
+
let settled = false;
|
|
23
|
+
let invoking = true;
|
|
24
|
+
let callbackCalled = false;
|
|
25
|
+
let returnIsAuthoritative = false;
|
|
26
|
+
const settleOnce = (settlement, cause) => {
|
|
27
|
+
if (settled) return;
|
|
28
|
+
settled = true;
|
|
29
|
+
options.settle(settlement, cause);
|
|
30
|
+
};
|
|
31
|
+
const callback = () => {
|
|
32
|
+
if (invoking) {
|
|
33
|
+
callbackCalled = true;
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
if (returnIsAuthoritative) return;
|
|
37
|
+
if (options.completion === "callback") settleOnce("committed");
|
|
38
|
+
};
|
|
39
|
+
try {
|
|
40
|
+
const result = options.invoke(callback);
|
|
41
|
+
const resultIsThenable = isThenable(result);
|
|
42
|
+
returnIsAuthoritative = resultIsThenable;
|
|
43
|
+
invoking = false;
|
|
44
|
+
if (resultIsThenable) {
|
|
45
|
+
result.then(() => settleOnce("committed"), (cause) => settleOnce("failed", cause));
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
if (options.completion === "return" || callbackCalled) settleOnce("committed");
|
|
49
|
+
} catch (cause) {
|
|
50
|
+
invoking = false;
|
|
51
|
+
settleOnce("failed", cause);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
function createSetDataCommitTracker(options) {
|
|
55
|
+
const initialSnapshot = options.initialSnapshot ? cloneSnapshotValue(options.initialSnapshot) : {};
|
|
56
|
+
const knownHostTopKeys = new Set(Object.keys(initialSnapshot));
|
|
57
|
+
let epoch = 0;
|
|
58
|
+
let highestCompletedRevision = 0;
|
|
59
|
+
let head;
|
|
60
|
+
let tail;
|
|
61
|
+
function ensureCommitBarrier(record) {
|
|
62
|
+
if (!record.inLedger) return resolvedCommitPromise;
|
|
63
|
+
if (!record.commitPromise) record.commitPromise = new Promise((resolve) => {
|
|
64
|
+
record.resolveCommit = resolve;
|
|
65
|
+
});
|
|
66
|
+
return record.commitPromise;
|
|
67
|
+
}
|
|
68
|
+
const state = {
|
|
69
|
+
preparedSnapshot: initialSnapshot,
|
|
70
|
+
dispatchedSnapshot: initialSnapshot,
|
|
71
|
+
committedSnapshot: initialSnapshot,
|
|
72
|
+
revision: 0,
|
|
73
|
+
committedRevision: 0,
|
|
74
|
+
failedRevision: void 0,
|
|
75
|
+
needsFullSnapshot: false,
|
|
76
|
+
get commitPromise() {
|
|
77
|
+
return tail ? ensureCommitBarrier(tail) : resolvedCommitPromise;
|
|
78
|
+
},
|
|
79
|
+
disposed: false
|
|
80
|
+
};
|
|
81
|
+
const reportFailure = (kind, record, cause) => {
|
|
82
|
+
const error = createCommitError(kind, record, cause);
|
|
83
|
+
try {
|
|
84
|
+
options.onFailure({
|
|
85
|
+
kind,
|
|
86
|
+
revision: record.revision,
|
|
87
|
+
committedRevision: state.committedRevision,
|
|
88
|
+
mode: record.mode,
|
|
89
|
+
cause,
|
|
90
|
+
error,
|
|
91
|
+
payloadKeys: record.payloadKeys,
|
|
92
|
+
pendingPatchKeys: record.pendingPatchKeys
|
|
93
|
+
});
|
|
94
|
+
} catch (_unused2) {}
|
|
95
|
+
};
|
|
96
|
+
const resolveRecord = (record) => {
|
|
97
|
+
var _record$resolveCommit;
|
|
98
|
+
(_record$resolveCommit = record.resolveCommit) === null || _record$resolveCommit === void 0 || _record$resolveCommit.call(record);
|
|
99
|
+
record.resolveCommit = void 0;
|
|
100
|
+
};
|
|
101
|
+
const removePrefixThrough = (last) => {
|
|
102
|
+
let current = head;
|
|
103
|
+
while (current) {
|
|
104
|
+
const next = current.next;
|
|
105
|
+
current.inLedger = false;
|
|
106
|
+
current.next = void 0;
|
|
107
|
+
resolveRecord(current);
|
|
108
|
+
if (current === last) {
|
|
109
|
+
head = next;
|
|
110
|
+
if (!head) tail = void 0;
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
current = next;
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
const invalidateLedger = () => {
|
|
117
|
+
let current = head;
|
|
118
|
+
while (current) {
|
|
119
|
+
const next = current.next;
|
|
120
|
+
current.inLedger = false;
|
|
121
|
+
current.next = void 0;
|
|
122
|
+
if (!current.physicalSettled) current.status = "abandoned";
|
|
123
|
+
resolveRecord(current);
|
|
124
|
+
current = next;
|
|
125
|
+
}
|
|
126
|
+
head = void 0;
|
|
127
|
+
tail = void 0;
|
|
128
|
+
epoch += 1;
|
|
129
|
+
highestCompletedRevision = state.committedRevision;
|
|
130
|
+
};
|
|
131
|
+
const armRecovery = () => {
|
|
132
|
+
state.needsFullSnapshot = true;
|
|
133
|
+
};
|
|
134
|
+
const failLineage = (kind, record, cause) => {
|
|
135
|
+
record.status = "failed";
|
|
136
|
+
state.failedRevision = record.revision;
|
|
137
|
+
armRecovery();
|
|
138
|
+
invalidateLedger();
|
|
139
|
+
reportFailure(kind, record, cause);
|
|
140
|
+
};
|
|
141
|
+
const drainSucceededPrefix = () => {
|
|
142
|
+
while ((head === null || head === void 0 ? void 0 : head.status) === "succeeded") {
|
|
143
|
+
const record = head;
|
|
144
|
+
state.committedSnapshot = record.snapshot;
|
|
145
|
+
state.committedRevision = record.revision;
|
|
146
|
+
head = record.next;
|
|
147
|
+
record.inLedger = false;
|
|
148
|
+
record.next = void 0;
|
|
149
|
+
resolveRecord(record);
|
|
150
|
+
}
|
|
151
|
+
if (!head) tail = void 0;
|
|
152
|
+
};
|
|
153
|
+
const commitFullCheckpoint = (record) => {
|
|
154
|
+
state.committedSnapshot = record.snapshot;
|
|
155
|
+
state.committedRevision = record.revision;
|
|
156
|
+
state.failedRevision = void 0;
|
|
157
|
+
state.needsFullSnapshot = false;
|
|
158
|
+
removePrefixThrough(record);
|
|
159
|
+
drainSucceededPrefix();
|
|
160
|
+
};
|
|
161
|
+
const handleLateSettlement = (record, settlement, cause) => {
|
|
162
|
+
if (settlement === "failed") {
|
|
163
|
+
reportFailure("adapter", record, cause);
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
if (settlement === "committed" && state.committedRevision > record.revision) {
|
|
167
|
+
if (head) invalidateLedger();
|
|
168
|
+
armRecovery();
|
|
169
|
+
reportFailure("out-of-order", record, `revision ${record.revision} completed after committed revision ${state.committedRevision}`);
|
|
170
|
+
}
|
|
171
|
+
};
|
|
172
|
+
const settleRecord = (record, settlement, cause) => {
|
|
173
|
+
if (state.disposed || record.physicalSettled) return;
|
|
174
|
+
record.physicalSettled = true;
|
|
175
|
+
if (!record.inLedger || record.epoch !== epoch) {
|
|
176
|
+
handleLateSettlement(record, settlement, cause);
|
|
177
|
+
return;
|
|
178
|
+
}
|
|
179
|
+
if (settlement === "abandoned") {
|
|
180
|
+
record.status = "abandoned";
|
|
181
|
+
armRecovery();
|
|
182
|
+
invalidateLedger();
|
|
183
|
+
return;
|
|
184
|
+
}
|
|
185
|
+
if (settlement === "failed") {
|
|
186
|
+
failLineage("adapter", record, cause);
|
|
187
|
+
return;
|
|
188
|
+
}
|
|
189
|
+
record.status = "succeeded";
|
|
190
|
+
if (highestCompletedRevision > record.revision) {
|
|
191
|
+
failLineage("out-of-order", record, `revision ${record.revision} completed after revision ${highestCompletedRevision}`);
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
highestCompletedRevision = record.revision;
|
|
195
|
+
if (record.kind === "full") {
|
|
196
|
+
commitFullCheckpoint(record);
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
drainSucceededPrefix();
|
|
200
|
+
};
|
|
201
|
+
const createFullPayload = (snapshot) => {
|
|
202
|
+
const payload = {};
|
|
203
|
+
const snapshotKeys = new Set(Object.keys(snapshot));
|
|
204
|
+
for (const [key, value] of Object.entries(snapshot)) payload[key] = value === void 0 ? null : value;
|
|
205
|
+
for (const key of knownHostTopKeys) if (!snapshotKeys.has(key)) payload[key] = null;
|
|
206
|
+
return payload;
|
|
207
|
+
};
|
|
208
|
+
const dispatch = (update) => {
|
|
209
|
+
if (state.disposed) return state.revision;
|
|
210
|
+
const revision = state.revision + 1;
|
|
211
|
+
state.revision = revision;
|
|
212
|
+
state.preparedSnapshot = update.snapshot;
|
|
213
|
+
const record = {
|
|
214
|
+
revision,
|
|
215
|
+
epoch,
|
|
216
|
+
mode: update.mode,
|
|
217
|
+
kind: update.kind,
|
|
218
|
+
snapshot: update.snapshot,
|
|
219
|
+
payloadKeys: Object.keys(update.payload).length,
|
|
220
|
+
pendingPatchKeys: update.pendingPatchKeys,
|
|
221
|
+
status: "dispatched",
|
|
222
|
+
physicalSettled: false,
|
|
223
|
+
inLedger: true,
|
|
224
|
+
next: void 0
|
|
225
|
+
};
|
|
226
|
+
if (tail) tail.next = record;
|
|
227
|
+
else head = record;
|
|
228
|
+
tail = record;
|
|
229
|
+
state.dispatchedSnapshot = update.snapshot;
|
|
230
|
+
for (const key of Object.keys(update.payload)) knownHostTopKeys.add(key.split(".", 1)[0]);
|
|
231
|
+
const settle = (settlement, cause) => {
|
|
232
|
+
settleRecord(record, settlement, cause);
|
|
233
|
+
};
|
|
234
|
+
const hostPayload = cloneSnapshotValue(update.payload);
|
|
235
|
+
if (typeof options.adapter.__wevu_dispatchSetData === "function") try {
|
|
236
|
+
options.adapter.__wevu_dispatchSetData(hostPayload, settle);
|
|
237
|
+
} catch (cause) {
|
|
238
|
+
settle("failed", cause);
|
|
239
|
+
}
|
|
240
|
+
else observeSetDataCompletion({
|
|
241
|
+
invoke: () => {
|
|
242
|
+
var _options$adapter$setD, _options$adapter;
|
|
243
|
+
return (_options$adapter$setD = (_options$adapter = options.adapter).setData) === null || _options$adapter$setD === void 0 ? void 0 : _options$adapter$setD.call(_options$adapter, hostPayload);
|
|
244
|
+
},
|
|
245
|
+
completion: "return",
|
|
246
|
+
settle
|
|
247
|
+
});
|
|
248
|
+
return revision;
|
|
249
|
+
};
|
|
250
|
+
const dispose = () => {
|
|
251
|
+
if (state.disposed) return;
|
|
252
|
+
state.disposed = true;
|
|
253
|
+
invalidateLedger();
|
|
254
|
+
};
|
|
255
|
+
return {
|
|
256
|
+
state,
|
|
257
|
+
dispatch,
|
|
258
|
+
createFullPayload,
|
|
259
|
+
dispose
|
|
260
|
+
};
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
//#endregion
|
|
264
|
+
export { createSetDataCommitTracker, observeSetDataCompletion };
|
|
265
|
+
//# sourceMappingURL=commitTracker.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commitTracker.mjs","names":[],"sources":["../../../../../src/runtime/app/setData/commitTracker.ts"],"sourcesContent":["import type { MiniProgramAdapter, SetDataDebugInfo } from '../../types'\nimport { cloneSnapshotValue } from './snapshot'\n\nexport type SetDataSnapshot = Record<string, unknown>\nexport type SetDataPayload = Record<string, unknown>\nexport type SetDataMode = 'diff' | 'patch'\nexport type SetDataRevisionKind = 'delta' | 'full'\nexport type SetDataAdapterSettlement = 'committed' | 'failed' | 'abandoned'\n\nexport type SetDataAdapterSettler = (\n settlement: SetDataAdapterSettlement,\n cause?: unknown,\n) => void\n\nexport interface CommitAwareSetDataAdapter extends MiniProgramAdapter {\n __wevu_dispatchSetData?: (\n payload: SetDataPayload,\n settle: SetDataAdapterSettler,\n ) => void\n __wevu_reportSetDataError?: (error: Error) => void\n __wevu_disposeSetData?: () => void\n}\n\nexport interface PreparedSetDataUpdate {\n mode: SetDataMode\n kind: SetDataRevisionKind\n reason: SetDataDebugInfo['reason']\n snapshot: SetDataSnapshot\n payload: SetDataPayload\n pendingPatchKeys: number\n}\n\nexport interface SetDataCommitFailure {\n kind: 'adapter' | 'out-of-order'\n revision: number\n committedRevision: number\n mode: SetDataMode\n cause: unknown\n error: Error\n payloadKeys: number\n pendingPatchKeys: number\n}\n\nexport interface SetDataCommitState {\n preparedSnapshot: SetDataSnapshot\n dispatchedSnapshot: SetDataSnapshot\n committedSnapshot: SetDataSnapshot\n revision: number\n committedRevision: number\n failedRevision: number | undefined\n needsFullSnapshot: boolean\n commitPromise: Promise<void>\n disposed: boolean\n}\n\nexport interface SetDataCommitTracker {\n readonly state: SetDataCommitState\n dispatch: (update: PreparedSetDataUpdate) => number\n createFullPayload: (snapshot: SetDataSnapshot) => SetDataPayload\n dispose: () => void\n}\n\ntype RevisionStatus = 'dispatched' | 'succeeded' | 'failed' | 'abandoned'\n\ninterface RevisionRecord {\n revision: number\n epoch: number\n mode: SetDataMode\n kind: SetDataRevisionKind\n snapshot: SetDataSnapshot\n payloadKeys: number\n pendingPatchKeys: number\n status: RevisionStatus\n physicalSettled: boolean\n inLedger: boolean\n next: RevisionRecord | undefined\n commitPromise?: Promise<void>\n resolveCommit?: () => void\n}\n\nconst resolvedCommitPromise = Promise.resolve()\n\nfunction isThenable(value: unknown): value is PromiseLike<unknown> {\n return Boolean(\n value\n && (typeof value === 'object' || typeof value === 'function')\n && typeof (value as PromiseLike<unknown>).then === 'function',\n )\n}\n\nfunction formatCommitFailureCause(cause: unknown): string {\n try {\n return cause instanceof Error ? cause.message : String(cause)\n }\n catch {\n return '<unprintable cause>'\n }\n}\n\nfunction createCommitError(\n kind: SetDataCommitFailure['kind'],\n record: RevisionRecord,\n cause: unknown,\n) {\n const causeMessage = formatCommitFailureCause(cause)\n const label = kind === 'adapter' ? 'adapter failure' : 'out-of-order completion'\n const error = new Error(\n `[wevu] setData commit failed (${label}, revision=${record.revision}, mode=${record.mode}, kind=${record.kind}): ${causeMessage}`,\n )\n ;(error as Error & { cause?: unknown }).cause = cause\n return error\n}\n\nexport function observeSetDataCompletion(options: {\n invoke: (callback: () => void) => unknown\n completion: 'return' | 'callback'\n settle: SetDataAdapterSettler\n}): void {\n let settled = false\n let invoking = true\n let callbackCalled = false\n let returnIsAuthoritative = false\n const settleOnce: SetDataAdapterSettler = (settlement, cause) => {\n if (settled) {\n return\n }\n settled = true\n options.settle(settlement, cause)\n }\n const callback = () => {\n if (invoking) {\n callbackCalled = true\n return\n }\n if (returnIsAuthoritative) {\n return\n }\n if (options.completion === 'callback') {\n settleOnce('committed')\n }\n }\n\n try {\n const result = options.invoke(callback)\n const resultIsThenable = isThenable(result)\n returnIsAuthoritative = resultIsThenable\n invoking = false\n if (resultIsThenable) {\n result.then(\n () => settleOnce('committed'),\n cause => settleOnce('failed', cause),\n )\n return\n }\n if (options.completion === 'return' || callbackCalled) {\n settleOnce('committed')\n }\n }\n catch (cause) {\n invoking = false\n settleOnce('failed', cause)\n }\n}\n\nexport function createSetDataCommitTracker(options: {\n initialSnapshot?: SetDataSnapshot\n adapter: CommitAwareSetDataAdapter\n onFailure: (failure: SetDataCommitFailure) => void\n}): SetDataCommitTracker {\n const initialSnapshot = options.initialSnapshot ? cloneSnapshotValue(options.initialSnapshot) : {}\n const knownHostTopKeys = new Set(Object.keys(initialSnapshot))\n let epoch = 0\n let highestCompletedRevision = 0\n let head: RevisionRecord | undefined\n let tail: RevisionRecord | undefined\n\n function ensureCommitBarrier(record: RevisionRecord) {\n if (!record.inLedger) {\n return resolvedCommitPromise\n }\n if (!record.commitPromise) {\n record.commitPromise = new Promise<void>((resolve) => {\n record.resolveCommit = resolve\n })\n }\n return record.commitPromise\n }\n\n const state: SetDataCommitState = {\n preparedSnapshot: initialSnapshot,\n dispatchedSnapshot: initialSnapshot,\n committedSnapshot: initialSnapshot,\n revision: 0,\n committedRevision: 0,\n failedRevision: undefined,\n needsFullSnapshot: false,\n get commitPromise() {\n return tail ? ensureCommitBarrier(tail) : resolvedCommitPromise\n },\n disposed: false,\n }\n\n const reportFailure = (\n kind: SetDataCommitFailure['kind'],\n record: RevisionRecord,\n cause: unknown,\n ) => {\n const error = createCommitError(kind, record, cause)\n try {\n options.onFailure({\n kind,\n revision: record.revision,\n committedRevision: state.committedRevision,\n mode: record.mode,\n cause,\n error,\n payloadKeys: record.payloadKeys,\n pendingPatchKeys: record.pendingPatchKeys,\n })\n }\n catch {\n // 错误上报不得反向破坏提交状态机。\n }\n }\n\n const resolveRecord = (record: RevisionRecord) => {\n record.resolveCommit?.()\n record.resolveCommit = undefined\n }\n\n const removePrefixThrough = (last: RevisionRecord) => {\n let current = head\n while (current) {\n const next = current.next\n current.inLedger = false\n current.next = undefined\n resolveRecord(current)\n if (current === last) {\n head = next\n if (!head) {\n tail = undefined\n }\n return\n }\n current = next\n }\n }\n\n const invalidateLedger = () => {\n let current = head\n while (current) {\n const next = current.next\n current.inLedger = false\n current.next = undefined\n if (!current.physicalSettled) {\n current.status = 'abandoned'\n }\n resolveRecord(current)\n current = next\n }\n head = undefined\n tail = undefined\n epoch += 1\n highestCompletedRevision = state.committedRevision\n }\n\n const armRecovery = () => {\n state.needsFullSnapshot = true\n }\n\n const failLineage = (\n kind: SetDataCommitFailure['kind'],\n record: RevisionRecord,\n cause: unknown,\n ) => {\n record.status = 'failed'\n state.failedRevision = record.revision\n armRecovery()\n invalidateLedger()\n reportFailure(kind, record, cause)\n }\n\n const drainSucceededPrefix = () => {\n while (head?.status === 'succeeded') {\n const record = head\n state.committedSnapshot = record.snapshot\n state.committedRevision = record.revision\n head = record.next\n record.inLedger = false\n record.next = undefined\n resolveRecord(record)\n }\n if (!head) {\n tail = undefined\n }\n }\n\n const commitFullCheckpoint = (record: RevisionRecord) => {\n state.committedSnapshot = record.snapshot\n state.committedRevision = record.revision\n state.failedRevision = undefined\n state.needsFullSnapshot = false\n removePrefixThrough(record)\n drainSucceededPrefix()\n }\n\n const handleLateSettlement = (\n record: RevisionRecord,\n settlement: SetDataAdapterSettlement,\n cause: unknown,\n ) => {\n if (settlement === 'failed') {\n reportFailure('adapter', record, cause)\n return\n }\n if (settlement === 'committed' && state.committedRevision > record.revision) {\n if (head) {\n invalidateLedger()\n }\n armRecovery()\n reportFailure(\n 'out-of-order',\n record,\n `revision ${record.revision} completed after committed revision ${state.committedRevision}`,\n )\n }\n }\n\n const settleRecord = (\n record: RevisionRecord,\n settlement: SetDataAdapterSettlement,\n cause?: unknown,\n ) => {\n if (state.disposed || record.physicalSettled) {\n return\n }\n record.physicalSettled = true\n\n if (!record.inLedger || record.epoch !== epoch) {\n handleLateSettlement(record, settlement, cause)\n return\n }\n\n if (settlement === 'abandoned') {\n record.status = 'abandoned'\n armRecovery()\n invalidateLedger()\n return\n }\n if (settlement === 'failed') {\n failLineage('adapter', record, cause)\n return\n }\n\n record.status = 'succeeded'\n if (highestCompletedRevision > record.revision) {\n failLineage(\n 'out-of-order',\n record,\n `revision ${record.revision} completed after revision ${highestCompletedRevision}`,\n )\n return\n }\n highestCompletedRevision = record.revision\n\n if (record.kind === 'full') {\n commitFullCheckpoint(record)\n return\n }\n drainSucceededPrefix()\n }\n\n const createFullPayload = (snapshot: SetDataSnapshot): SetDataPayload => {\n const payload: SetDataPayload = {}\n const snapshotKeys = new Set(Object.keys(snapshot))\n for (const [key, value] of Object.entries(snapshot)) {\n payload[key] = value === undefined ? null : value\n }\n for (const key of knownHostTopKeys) {\n if (!snapshotKeys.has(key)) {\n payload[key] = null\n }\n }\n return payload\n }\n\n const dispatch = (update: PreparedSetDataUpdate) => {\n if (state.disposed) {\n return state.revision\n }\n\n const revision = state.revision + 1\n state.revision = revision\n state.preparedSnapshot = update.snapshot\n const record: RevisionRecord = {\n revision,\n epoch,\n mode: update.mode,\n kind: update.kind,\n snapshot: update.snapshot,\n payloadKeys: Object.keys(update.payload).length,\n pendingPatchKeys: update.pendingPatchKeys,\n status: 'dispatched',\n physicalSettled: false,\n inLedger: true,\n next: undefined,\n }\n if (tail) {\n tail.next = record\n }\n else {\n head = record\n }\n tail = record\n state.dispatchedSnapshot = update.snapshot\n for (const key of Object.keys(update.payload)) {\n knownHostTopKeys.add(key.split('.', 1)[0]!)\n }\n\n const settle: SetDataAdapterSettler = (settlement, cause) => {\n settleRecord(record, settlement, cause)\n }\n // 宿主会保留对象并在后续路径更新时原地修改,载荷不能与序列化缓存及快照共享引用。\n const hostPayload = cloneSnapshotValue(update.payload)\n if (typeof options.adapter.__wevu_dispatchSetData === 'function') {\n try {\n options.adapter.__wevu_dispatchSetData(hostPayload, settle)\n }\n catch (cause) {\n settle('failed', cause)\n }\n }\n else {\n observeSetDataCompletion({\n invoke: () => options.adapter.setData?.(hostPayload),\n completion: 'return',\n settle,\n })\n }\n return revision\n }\n\n const dispose = () => {\n if (state.disposed) {\n return\n }\n state.disposed = true\n invalidateLedger()\n }\n\n return {\n state,\n dispatch,\n createFullPayload,\n dispose,\n }\n}\n"],"mappings":"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"}
|