wevu 7.0.4 → 7.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +20 -4
- package/dist/alipay/jsx-runtime.d.mts +13 -0
- package/dist/alipay/jsx-runtime.mjs +1 -0
- package/dist/alipayIntrinsicElements/base.d.mts +4 -0
- package/dist/alipayIntrinsicElements/elements/button.d.mts +29 -0
- package/dist/alipayIntrinsicElements/elements/camera.d.mts +18 -0
- package/dist/alipayIntrinsicElements/elements/canvas.d.mts +20 -0
- package/dist/alipayIntrinsicElements/elements/checkbox-group.d.mts +11 -0
- package/dist/alipayIntrinsicElements/elements/checkbox.d.mts +14 -0
- package/dist/alipayIntrinsicElements/elements/contact-button.d.mts +15 -0
- package/dist/alipayIntrinsicElements/elements/cover-image.d.mts +11 -0
- package/dist/alipayIntrinsicElements/elements/cover-view.d.mts +11 -0
- package/dist/alipayIntrinsicElements/elements/error-view.d.mts +14 -0
- package/dist/alipayIntrinsicElements/elements/form.d.mts +12 -0
- package/dist/alipayIntrinsicElements/elements/icon.d.mts +11 -0
- package/dist/alipayIntrinsicElements/elements/image.d.mts +17 -0
- package/dist/alipayIntrinsicElements/elements/input.d.mts +31 -0
- package/dist/alipayIntrinsicElements/elements/join-group-chat.d.mts +9 -0
- package/dist/alipayIntrinsicElements/elements/label.d.mts +9 -0
- package/dist/alipayIntrinsicElements/elements/lifestyle.d.mts +11 -0
- package/dist/alipayIntrinsicElements/elements/lottie.d.mts +25 -0
- package/dist/alipayIntrinsicElements/elements/map.d.mts +44 -0
- package/dist/alipayIntrinsicElements/elements/match-media.d.mts +15 -0
- package/dist/alipayIntrinsicElements/elements/movable-area.d.mts +9 -0
- package/dist/alipayIntrinsicElements/elements/movable-view.d.mts +32 -0
- package/dist/alipayIntrinsicElements/elements/navigator.d.mts +13 -0
- package/dist/alipayIntrinsicElements/elements/page-container.d.mts +27 -0
- package/dist/alipayIntrinsicElements/elements/page-meta.d.mts +19 -0
- package/dist/alipayIntrinsicElements/elements/picker-view-column.d.mts +7 -0
- package/dist/alipayIntrinsicElements/elements/picker-view.d.mts +18 -0
- package/dist/alipayIntrinsicElements/elements/picker.d.mts +15 -0
- package/dist/alipayIntrinsicElements/elements/progress.d.mts +14 -0
- package/dist/alipayIntrinsicElements/elements/radio-group.d.mts +11 -0
- package/dist/alipayIntrinsicElements/elements/radio.d.mts +12 -0
- package/dist/alipayIntrinsicElements/elements/rich-text.d.mts +17 -0
- package/dist/alipayIntrinsicElements/elements/root-portal.d.mts +9 -0
- package/dist/alipayIntrinsicElements/elements/scroll-view.d.mts +29 -0
- package/dist/alipayIntrinsicElements/elements/share-element.d.mts +12 -0
- package/dist/alipayIntrinsicElements/elements/slider.d.mts +23 -0
- package/dist/alipayIntrinsicElements/elements/subscribe-message.d.mts +11 -0
- package/dist/alipayIntrinsicElements/elements/swiper-item.d.mts +7 -0
- package/dist/alipayIntrinsicElements/elements/swiper.d.mts +36 -0
- package/dist/alipayIntrinsicElements/elements/switch.d.mts +15 -0
- package/dist/alipayIntrinsicElements/elements/text.d.mts +12 -0
- package/dist/alipayIntrinsicElements/elements/textarea.d.mts +24 -0
- package/dist/alipayIntrinsicElements/elements/video.d.mts +39 -0
- package/dist/alipayIntrinsicElements/elements/view.d.mts +29 -0
- package/dist/alipayIntrinsicElements/elements/web-view.d.mts +13 -0
- package/dist/alipayIntrinsicElements.d.mts +94 -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/alipayIntrinsicElements/base.d.mts +5 -0
- package/dist/dev/alipayIntrinsicElements/elements/button.d.mts +30 -0
- package/dist/dev/alipayIntrinsicElements/elements/camera.d.mts +19 -0
- package/dist/dev/alipayIntrinsicElements/elements/canvas.d.mts +21 -0
- package/dist/dev/alipayIntrinsicElements/elements/checkbox-group.d.mts +12 -0
- package/dist/dev/alipayIntrinsicElements/elements/checkbox.d.mts +15 -0
- package/dist/dev/alipayIntrinsicElements/elements/contact-button.d.mts +16 -0
- package/dist/dev/alipayIntrinsicElements/elements/cover-image.d.mts +12 -0
- package/dist/dev/alipayIntrinsicElements/elements/cover-view.d.mts +12 -0
- package/dist/dev/alipayIntrinsicElements/elements/error-view.d.mts +15 -0
- package/dist/dev/alipayIntrinsicElements/elements/form.d.mts +13 -0
- package/dist/dev/alipayIntrinsicElements/elements/icon.d.mts +12 -0
- package/dist/dev/alipayIntrinsicElements/elements/image.d.mts +18 -0
- package/dist/dev/alipayIntrinsicElements/elements/input.d.mts +32 -0
- package/dist/dev/alipayIntrinsicElements/elements/join-group-chat.d.mts +10 -0
- package/dist/dev/alipayIntrinsicElements/elements/label.d.mts +10 -0
- package/dist/dev/alipayIntrinsicElements/elements/lifestyle.d.mts +12 -0
- package/dist/dev/alipayIntrinsicElements/elements/lottie.d.mts +26 -0
- package/dist/dev/alipayIntrinsicElements/elements/map.d.mts +45 -0
- package/dist/dev/alipayIntrinsicElements/elements/match-media.d.mts +16 -0
- package/dist/dev/alipayIntrinsicElements/elements/movable-area.d.mts +10 -0
- package/dist/dev/alipayIntrinsicElements/elements/movable-view.d.mts +33 -0
- package/dist/dev/alipayIntrinsicElements/elements/navigator.d.mts +14 -0
- package/dist/dev/alipayIntrinsicElements/elements/page-container.d.mts +28 -0
- package/dist/dev/alipayIntrinsicElements/elements/page-meta.d.mts +20 -0
- package/dist/dev/alipayIntrinsicElements/elements/picker-view-column.d.mts +8 -0
- package/dist/dev/alipayIntrinsicElements/elements/picker-view.d.mts +19 -0
- package/dist/dev/alipayIntrinsicElements/elements/picker.d.mts +16 -0
- package/dist/dev/alipayIntrinsicElements/elements/progress.d.mts +15 -0
- package/dist/dev/alipayIntrinsicElements/elements/radio-group.d.mts +12 -0
- package/dist/dev/alipayIntrinsicElements/elements/radio.d.mts +13 -0
- package/dist/dev/alipayIntrinsicElements/elements/rich-text.d.mts +18 -0
- package/dist/dev/alipayIntrinsicElements/elements/root-portal.d.mts +10 -0
- package/dist/dev/alipayIntrinsicElements/elements/scroll-view.d.mts +30 -0
- package/dist/dev/alipayIntrinsicElements/elements/share-element.d.mts +13 -0
- package/dist/dev/alipayIntrinsicElements/elements/slider.d.mts +24 -0
- package/dist/dev/alipayIntrinsicElements/elements/subscribe-message.d.mts +12 -0
- package/dist/dev/alipayIntrinsicElements/elements/swiper-item.d.mts +8 -0
- package/dist/dev/alipayIntrinsicElements/elements/swiper.d.mts +37 -0
- package/dist/dev/alipayIntrinsicElements/elements/switch.d.mts +16 -0
- package/dist/dev/alipayIntrinsicElements/elements/text.d.mts +13 -0
- package/dist/dev/alipayIntrinsicElements/elements/textarea.d.mts +25 -0
- package/dist/dev/alipayIntrinsicElements/elements/video.d.mts +40 -0
- package/dist/dev/alipayIntrinsicElements/elements/view.d.mts +30 -0
- package/dist/dev/alipayIntrinsicElements/elements/web-view.d.mts +14 -0
- package/dist/dev/alipayIntrinsicElements.d.mts +94 -0
- 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/jsx-runtime.d.mts +44 -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/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/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/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 +0 -4
- 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 +28 -0
- 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/ttIntrinsicElements/base.d.mts +5 -0
- package/dist/dev/ttIntrinsicElements/elements/ad.d.mts +8 -0
- package/dist/dev/ttIntrinsicElements/elements/aweme-data.d.mts +15 -0
- package/dist/dev/ttIntrinsicElements/elements/aweme-user-card.d.mts +16 -0
- package/dist/dev/ttIntrinsicElements/elements/button.d.mts +23 -0
- package/dist/dev/ttIntrinsicElements/elements/camera.d.mts +19 -0
- package/dist/dev/ttIntrinsicElements/elements/canvas.d.mts +16 -0
- package/dist/dev/ttIntrinsicElements/elements/checkbox-group.d.mts +12 -0
- package/dist/dev/ttIntrinsicElements/elements/checkbox.d.mts +12 -0
- package/dist/dev/ttIntrinsicElements/elements/draw-ad.d.mts +16 -0
- package/dist/dev/ttIntrinsicElements/elements/form.d.mts +14 -0
- package/dist/dev/ttIntrinsicElements/elements/icon.d.mts +11 -0
- package/dist/dev/ttIntrinsicElements/elements/image.d.mts +16 -0
- package/dist/dev/ttIntrinsicElements/elements/input.d.mts +32 -0
- package/dist/dev/ttIntrinsicElements/elements/label.d.mts +10 -0
- package/dist/dev/ttIntrinsicElements/elements/live-player.d.mts +19 -0
- package/dist/dev/ttIntrinsicElements/elements/live-preview.d.mts +13 -0
- package/dist/dev/ttIntrinsicElements/elements/map.d.mts +36 -0
- package/dist/dev/ttIntrinsicElements/elements/mask.d.mts +8 -0
- package/dist/dev/ttIntrinsicElements/elements/match-media.d.mts +16 -0
- package/dist/dev/ttIntrinsicElements/elements/movable-area.d.mts +10 -0
- package/dist/dev/ttIntrinsicElements/elements/movable-view.d.mts +27 -0
- package/dist/dev/ttIntrinsicElements/elements/navigator.d.mts +16 -0
- package/dist/dev/ttIntrinsicElements/elements/open-data.d.mts +15 -0
- package/dist/dev/ttIntrinsicElements/elements/picker-view-column.d.mts +8 -0
- package/dist/dev/ttIntrinsicElements/elements/picker-view.d.mts +19 -0
- package/dist/dev/ttIntrinsicElements/elements/picker.d.mts +22 -0
- package/dist/dev/ttIntrinsicElements/elements/progress.d.mts +16 -0
- package/dist/dev/ttIntrinsicElements/elements/radio-group.d.mts +12 -0
- package/dist/dev/ttIntrinsicElements/elements/radio.d.mts +12 -0
- package/dist/dev/ttIntrinsicElements/elements/rich-text.d.mts +10 -0
- package/dist/dev/ttIntrinsicElements/elements/rtc-room.d.mts +13 -0
- package/dist/dev/ttIntrinsicElements/elements/scroll-view.d.mts +32 -0
- package/dist/dev/ttIntrinsicElements/elements/slider.d.mts +19 -0
- package/dist/dev/ttIntrinsicElements/elements/swiper-item.d.mts +10 -0
- package/dist/dev/ttIntrinsicElements/elements/swiper.d.mts +27 -0
- package/dist/dev/ttIntrinsicElements/elements/switch.d.mts +14 -0
- package/dist/dev/ttIntrinsicElements/elements/text.d.mts +12 -0
- package/dist/dev/ttIntrinsicElements/elements/textarea.d.mts +34 -0
- package/dist/dev/ttIntrinsicElements/elements/video.d.mts +58 -0
- package/dist/dev/ttIntrinsicElements/elements/view.d.mts +15 -0
- package/dist/dev/ttIntrinsicElements/elements/web-view.d.mts +15 -0
- package/dist/dev/ttIntrinsicElements.d.mts +88 -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/weappIntrinsicElements/base.d.mts +5 -0
- package/dist/dev/weappIntrinsicElements/elements/ad-custom.d.mts +14 -0
- package/dist/dev/weappIntrinsicElements/elements/ad.d.mts +17 -0
- package/dist/dev/weappIntrinsicElements/elements/audio.d.mts +21 -0
- package/dist/dev/weappIntrinsicElements/elements/block.d.mts +8 -0
- package/dist/dev/weappIntrinsicElements/elements/button.d.mts +42 -0
- package/dist/dev/weappIntrinsicElements/elements/camera.d.mts +19 -0
- package/dist/dev/weappIntrinsicElements/elements/canvas.d.mts +19 -0
- package/dist/dev/weappIntrinsicElements/elements/checkbox-group.d.mts +11 -0
- package/dist/dev/weappIntrinsicElements/elements/checkbox.d.mts +13 -0
- package/dist/dev/weappIntrinsicElements/elements/cover-image.d.mts +14 -0
- package/dist/dev/weappIntrinsicElements/elements/cover-view.d.mts +10 -0
- package/dist/dev/weappIntrinsicElements/elements/editor.d.mts +23 -0
- package/dist/dev/weappIntrinsicElements/elements/form.d.mts +17 -0
- package/dist/dev/weappIntrinsicElements/elements/functional-page-navigator.d.mts +16 -0
- package/dist/dev/weappIntrinsicElements/elements/icon.d.mts +12 -0
- package/dist/dev/weappIntrinsicElements/elements/image.d.mts +19 -0
- package/dist/dev/weappIntrinsicElements/elements/import.d.mts +10 -0
- package/dist/dev/weappIntrinsicElements/elements/include.d.mts +10 -0
- package/dist/dev/weappIntrinsicElements/elements/input.d.mts +47 -0
- package/dist/dev/weappIntrinsicElements/elements/keyboard-accessory.d.mts +8 -0
- package/dist/dev/weappIntrinsicElements/elements/label.d.mts +10 -0
- package/dist/dev/weappIntrinsicElements/elements/live-player.d.mts +36 -0
- package/dist/dev/weappIntrinsicElements/elements/live-pusher.d.mts +58 -0
- package/dist/dev/weappIntrinsicElements/elements/map.d.mts +106 -0
- package/dist/dev/weappIntrinsicElements/elements/match-media.d.mts +16 -0
- package/dist/dev/weappIntrinsicElements/elements/movable-area.d.mts +27 -0
- package/dist/dev/weappIntrinsicElements/elements/movable-view.d.mts +27 -0
- package/dist/dev/weappIntrinsicElements/elements/navigation-bar.d.mts +15 -0
- package/dist/dev/weappIntrinsicElements/elements/navigator.d.mts +26 -0
- package/dist/dev/weappIntrinsicElements/elements/official-account.d.mts +14 -0
- package/dist/dev/weappIntrinsicElements/elements/open-data.d.mts +16 -0
- package/dist/dev/weappIntrinsicElements/elements/page-container.d.mts +26 -0
- package/dist/dev/weappIntrinsicElements/elements/page-meta.d.mts +24 -0
- package/dist/dev/weappIntrinsicElements/elements/picker-view-column.d.mts +19 -0
- package/dist/dev/weappIntrinsicElements/elements/picker-view.d.mts +19 -0
- package/dist/dev/weappIntrinsicElements/elements/picker.d.mts +24 -0
- package/dist/dev/weappIntrinsicElements/elements/progress.d.mts +22 -0
- package/dist/dev/weappIntrinsicElements/elements/radio-group.d.mts +11 -0
- package/dist/dev/weappIntrinsicElements/elements/radio.d.mts +13 -0
- package/dist/dev/weappIntrinsicElements/elements/rich-text.d.mts +17 -0
- package/dist/dev/weappIntrinsicElements/elements/scroll-view.d.mts +64 -0
- package/dist/dev/weappIntrinsicElements/elements/share-element.d.mts +17 -0
- package/dist/dev/weappIntrinsicElements/elements/slider.d.mts +24 -0
- package/dist/dev/weappIntrinsicElements/elements/slot.d.mts +10 -0
- package/dist/dev/weappIntrinsicElements/elements/swiper-item.d.mts +11 -0
- package/dist/dev/weappIntrinsicElements/elements/swiper.d.mts +40 -0
- package/dist/dev/weappIntrinsicElements/elements/switch.d.mts +15 -0
- package/dist/dev/weappIntrinsicElements/elements/template.d.mts +12 -0
- package/dist/dev/weappIntrinsicElements/elements/text.d.mts +15 -0
- package/dist/dev/weappIntrinsicElements/elements/textarea.d.mts +41 -0
- package/dist/dev/weappIntrinsicElements/elements/video.d.mts +72 -0
- package/dist/dev/weappIntrinsicElements/elements/view.d.mts +15 -0
- package/dist/dev/weappIntrinsicElements/elements/voip-room.d.mts +15 -0
- package/dist/dev/weappIntrinsicElements/elements/web-view.d.mts +14 -0
- package/dist/dev/weappIntrinsicElements.d.mts +114 -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 +13 -0
- package/dist/miniprogram/jsx-runtime.mjs +1 -0
- package/dist/miniprogramIntrinsicElements/base.d.mts +4 -0
- package/dist/miniprogramIntrinsicElements/elements/button.d.mts +23 -0
- package/dist/miniprogramIntrinsicElements/elements/camera.d.mts +18 -0
- package/dist/miniprogramIntrinsicElements/elements/canvas.d.mts +16 -0
- package/dist/miniprogramIntrinsicElements/elements/checkbox-group.d.mts +12 -0
- package/dist/miniprogramIntrinsicElements/elements/checkbox.d.mts +13 -0
- package/dist/miniprogramIntrinsicElements/elements/form.d.mts +13 -0
- package/dist/miniprogramIntrinsicElements/elements/icon.d.mts +12 -0
- package/dist/miniprogramIntrinsicElements/elements/image.d.mts +16 -0
- package/dist/miniprogramIntrinsicElements/elements/input.d.mts +29 -0
- package/dist/miniprogramIntrinsicElements/elements/label.d.mts +11 -0
- package/dist/miniprogramIntrinsicElements/elements/map.d.mts +31 -0
- package/dist/miniprogramIntrinsicElements/elements/match-media.d.mts +13 -0
- package/dist/miniprogramIntrinsicElements/elements/movable-area.d.mts +9 -0
- package/dist/miniprogramIntrinsicElements/elements/movable-view.d.mts +26 -0
- package/dist/miniprogramIntrinsicElements/elements/navigator.d.mts +15 -0
- package/dist/miniprogramIntrinsicElements/elements/picker-view-column.d.mts +9 -0
- package/dist/miniprogramIntrinsicElements/elements/picker-view.d.mts +20 -0
- package/dist/miniprogramIntrinsicElements/elements/picker.d.mts +14 -0
- package/dist/miniprogramIntrinsicElements/elements/progress.d.mts +12 -0
- package/dist/miniprogramIntrinsicElements/elements/radio-group.d.mts +12 -0
- package/dist/miniprogramIntrinsicElements/elements/radio.d.mts +13 -0
- package/dist/miniprogramIntrinsicElements/elements/rich-text.d.mts +11 -0
- package/dist/miniprogramIntrinsicElements/elements/scroll-view.d.mts +22 -0
- package/dist/miniprogramIntrinsicElements/elements/slider.d.mts +19 -0
- package/dist/miniprogramIntrinsicElements/elements/swiper-item.d.mts +9 -0
- package/dist/miniprogramIntrinsicElements/elements/swiper.d.mts +24 -0
- package/dist/miniprogramIntrinsicElements/elements/switch.d.mts +14 -0
- package/dist/miniprogramIntrinsicElements/elements/text.d.mts +13 -0
- package/dist/miniprogramIntrinsicElements/elements/textarea.d.mts +23 -0
- package/dist/miniprogramIntrinsicElements/elements/video.d.mts +29 -0
- package/dist/miniprogramIntrinsicElements/elements/view.d.mts +16 -0
- package/dist/miniprogramIntrinsicElements/elements/web-view.d.mts +15 -0
- package/dist/miniprogramIntrinsicElements.d.mts +70 -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/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/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/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 +13 -0
- package/dist/tt/jsx-runtime.mjs +1 -0
- package/dist/ttIntrinsicElements/base.d.mts +4 -0
- package/dist/ttIntrinsicElements/elements/ad.d.mts +7 -0
- package/dist/ttIntrinsicElements/elements/aweme-data.d.mts +14 -0
- package/dist/ttIntrinsicElements/elements/aweme-user-card.d.mts +15 -0
- package/dist/ttIntrinsicElements/elements/button.d.mts +22 -0
- package/dist/ttIntrinsicElements/elements/camera.d.mts +18 -0
- package/dist/ttIntrinsicElements/elements/canvas.d.mts +15 -0
- package/dist/ttIntrinsicElements/elements/checkbox-group.d.mts +11 -0
- package/dist/ttIntrinsicElements/elements/checkbox.d.mts +11 -0
- package/dist/ttIntrinsicElements/elements/draw-ad.d.mts +15 -0
- package/dist/ttIntrinsicElements/elements/form.d.mts +13 -0
- package/dist/ttIntrinsicElements/elements/icon.d.mts +10 -0
- package/dist/ttIntrinsicElements/elements/image.d.mts +15 -0
- package/dist/ttIntrinsicElements/elements/input.d.mts +31 -0
- package/dist/ttIntrinsicElements/elements/label.d.mts +9 -0
- package/dist/ttIntrinsicElements/elements/live-player.d.mts +18 -0
- package/dist/ttIntrinsicElements/elements/live-preview.d.mts +12 -0
- package/dist/ttIntrinsicElements/elements/map.d.mts +35 -0
- package/dist/ttIntrinsicElements/elements/mask.d.mts +7 -0
- package/dist/ttIntrinsicElements/elements/match-media.d.mts +15 -0
- package/dist/ttIntrinsicElements/elements/movable-area.d.mts +9 -0
- package/dist/ttIntrinsicElements/elements/movable-view.d.mts +26 -0
- package/dist/ttIntrinsicElements/elements/navigator.d.mts +15 -0
- package/dist/ttIntrinsicElements/elements/open-data.d.mts +14 -0
- package/dist/ttIntrinsicElements/elements/picker-view-column.d.mts +7 -0
- package/dist/ttIntrinsicElements/elements/picker-view.d.mts +18 -0
- package/dist/ttIntrinsicElements/elements/picker.d.mts +21 -0
- package/dist/ttIntrinsicElements/elements/progress.d.mts +15 -0
- package/dist/ttIntrinsicElements/elements/radio-group.d.mts +11 -0
- package/dist/ttIntrinsicElements/elements/radio.d.mts +11 -0
- package/dist/ttIntrinsicElements/elements/rich-text.d.mts +9 -0
- package/dist/ttIntrinsicElements/elements/rtc-room.d.mts +12 -0
- package/dist/ttIntrinsicElements/elements/scroll-view.d.mts +31 -0
- package/dist/ttIntrinsicElements/elements/slider.d.mts +18 -0
- package/dist/ttIntrinsicElements/elements/swiper-item.d.mts +9 -0
- package/dist/ttIntrinsicElements/elements/swiper.d.mts +26 -0
- package/dist/ttIntrinsicElements/elements/switch.d.mts +13 -0
- package/dist/ttIntrinsicElements/elements/text.d.mts +11 -0
- package/dist/ttIntrinsicElements/elements/textarea.d.mts +33 -0
- package/dist/ttIntrinsicElements/elements/video.d.mts +57 -0
- package/dist/ttIntrinsicElements/elements/view.d.mts +14 -0
- package/dist/ttIntrinsicElements/elements/web-view.d.mts +14 -0
- package/dist/ttIntrinsicElements.d.mts +88 -0
- package/dist/vue-demi.d.mts +13 -14
- package/dist/vue-demi.mjs +1 -1
- package/dist/weapp/jsx-runtime.d.mts +13 -0
- package/dist/weapp/jsx-runtime.mjs +1 -0
- package/dist/weappIntrinsicElements/base.d.mts +2 -19
- package/dist/weappIntrinsicElements/elements/ad-custom.d.mts +5 -4
- package/dist/weappIntrinsicElements/elements/ad.d.mts +6 -5
- package/dist/weappIntrinsicElements/elements/audio.d.mts +8 -7
- package/dist/weappIntrinsicElements/elements/block.d.mts +2 -2
- package/dist/weappIntrinsicElements/elements/button.d.mts +17 -15
- package/dist/weappIntrinsicElements/elements/camera.d.mts +11 -10
- package/dist/weappIntrinsicElements/elements/canvas.d.mts +9 -8
- package/dist/weappIntrinsicElements/elements/checkbox-group.d.mts +5 -7
- package/dist/weappIntrinsicElements/elements/checkbox.d.mts +2 -2
- package/dist/weappIntrinsicElements/elements/cover-image.d.mts +8 -4
- package/dist/weappIntrinsicElements/elements/cover-view.d.mts +2 -2
- package/dist/weappIntrinsicElements/elements/editor.d.mts +8 -7
- package/dist/weappIntrinsicElements/elements/form.d.mts +6 -5
- package/dist/weappIntrinsicElements/elements/functional-page-navigator.d.mts +8 -7
- package/dist/weappIntrinsicElements/elements/icon.d.mts +2 -2
- package/dist/weappIntrinsicElements/elements/image.d.mts +6 -5
- package/dist/weappIntrinsicElements/elements/import.d.mts +2 -2
- package/dist/weappIntrinsicElements/elements/include.d.mts +2 -2
- package/dist/weappIntrinsicElements/elements/input.d.mts +16 -16
- package/dist/weappIntrinsicElements/elements/keyboard-accessory.d.mts +2 -2
- package/dist/weappIntrinsicElements/elements/label.d.mts +2 -2
- package/dist/weappIntrinsicElements/elements/live-player.d.mts +17 -16
- package/dist/weappIntrinsicElements/elements/live-pusher.d.mts +18 -17
- package/dist/weappIntrinsicElements/elements/map.d.mts +17 -16
- package/dist/weappIntrinsicElements/elements/match-media.d.mts +2 -2
- package/dist/weappIntrinsicElements/elements/movable-area.d.mts +7 -6
- package/dist/weappIntrinsicElements/elements/movable-view.d.mts +7 -6
- package/dist/weappIntrinsicElements/elements/navigation-bar.d.mts +2 -2
- package/dist/weappIntrinsicElements/elements/navigator.d.mts +9 -8
- package/dist/weappIntrinsicElements/elements/official-account.d.mts +5 -4
- package/dist/weappIntrinsicElements/elements/open-data.d.mts +4 -3
- package/dist/weappIntrinsicElements/elements/page-container.d.mts +10 -9
- package/dist/weappIntrinsicElements/elements/page-meta.d.mts +6 -5
- package/dist/weappIntrinsicElements/elements/picker-view-column.d.mts +6 -5
- package/dist/weappIntrinsicElements/elements/picker-view.d.mts +6 -5
- package/dist/weappIntrinsicElements/elements/picker.d.mts +8 -7
- package/dist/weappIntrinsicElements/elements/progress.d.mts +4 -3
- package/dist/weappIntrinsicElements/elements/radio-group.d.mts +5 -7
- package/dist/weappIntrinsicElements/elements/radio.d.mts +2 -2
- package/dist/weappIntrinsicElements/elements/rich-text.d.mts +5 -5
- package/dist/weappIntrinsicElements/elements/scroll-view.d.mts +19 -23
- package/dist/weappIntrinsicElements/elements/share-element.d.mts +4 -5
- package/dist/weappIntrinsicElements/elements/slider.d.mts +5 -4
- package/dist/weappIntrinsicElements/elements/slot.d.mts +2 -2
- package/dist/weappIntrinsicElements/elements/swiper-item.d.mts +5 -36
- package/dist/weappIntrinsicElements/elements/swiper.d.mts +10 -12
- package/dist/weappIntrinsicElements/elements/switch.d.mts +4 -3
- package/dist/weappIntrinsicElements/elements/template.d.mts +2 -2
- package/dist/weappIntrinsicElements/elements/text.d.mts +4 -4
- package/dist/weappIntrinsicElements/elements/textarea.d.mts +15 -14
- package/dist/weappIntrinsicElements/elements/video.d.mts +23 -22
- package/dist/weappIntrinsicElements/elements/view.d.mts +4 -2
- package/dist/weappIntrinsicElements/elements/voip-room.d.mts +6 -5
- package/dist/weappIntrinsicElements/elements/web-view.d.mts +6 -5
- package/dist/weappIntrinsicElements.d.mts +111 -150
- package/package.json +19 -19
- package/dist/dev/jsx-runtime.mjs +0 -1
- package/dist/runtime/templateRefs.d.mts +0 -10
- /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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scheduler.mjs","names":[],"sources":["../../../../../src/runtime/app/setData/scheduler.ts"],"sourcesContent":["import type { MutationRecord } from '../../../reactivity'\nimport type { SetDataDebugInfo } from '../../types'\nimport { getReactiveVersion, isReactive, isRef, toRaw } from '../../../reactivity'\nimport { hasOwn } from '../../../utils'\nimport { diffSnapshots, toPlain } from '../../diff'\nimport { hasTrackableSetupBinding } from '../../setupTracking'\nimport { runPatchUpdate } from './patchScheduler'\nimport { collectSnapshot } from './snapshot'\n\nexport function createSetDataScheduler(options: {\n state: Record<string, any>\n setupState?: Record<string, any>\n snapshotOmitKeys?: Set<string>\n computedRefs: Record<string, { value: any }>\n dirtyComputedKeys: Set<string>\n includeComputed: boolean\n setDataStrategy: 'diff' | 'patch'\n computedCompare: 'reference' | 'shallow' | 'deep'\n computedCompareMaxDepth: number\n computedCompareMaxKeys: number\n currentAdapter: { setData?: (payload: Record<string, any>) => void | Promise<void> }\n shouldIncludeKey: (key: string) => boolean\n maxPatchKeys: number\n maxPayloadBytes: number\n mergeSiblingThreshold: number\n mergeSiblingMaxInflationRatio: number\n mergeSiblingMaxParentBytes: number\n mergeSiblingSkipArray: boolean\n elevateTopKeyThreshold: number\n toPlainMaxDepth: number\n toPlainMaxKeys: number\n includeFunctions?: boolean\n functionPaths: string[]\n debug: ((info: SetDataDebugInfo) => void) | undefined\n debugWhen: 'fallback' | 'always'\n debugSampleRate: number\n loopWarning: false | {\n sampleWindowMs: number\n maxFlushes: number\n coolDownMs: number\n }\n targetLabel?: string\n runTracker: () => void\n isMounted: () => boolean\n initialSnapshot?: Record<string, any>\n initialState?: Record<string, any>\n}) {\n const {\n state,\n setupState,\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 = false,\n functionPaths,\n debug,\n debugWhen,\n debugSampleRate,\n loopWarning,\n targetLabel,\n runTracker,\n isMounted,\n initialSnapshot,\n initialState,\n } = options\n\n const plainCache = new WeakMap<object, { version: number, value: any }>()\n const plainCacheEligibility = new WeakMap<object, boolean>()\n let latestSnapshot: Record<string, any> = {}\n let latestComputedSnapshot: Record<string, any> = Object.create(null)\n const latestStateTokens = Object.create(null) as Record<string, unknown>\n const latestComputedTokens = Object.create(null) as Record<string, unknown>\n const needsFullSnapshot = { value: setDataStrategy === 'patch' }\n const pendingPatches = new Map<string, { kind: 'property' | 'array', op: 'set' | 'delete' }>()\n const fallbackTopKeys = new Set<string>()\n const flushTimes: number[] = []\n let lastLoopWarningAt = Number.NEGATIVE_INFINITY\n const initialStateKeys = new Set(\n initialState && typeof initialState === 'object'\n ? Object.keys(initialState)\n : [],\n )\n\n const 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\n const isDeepEqual = (left: any, right: any): boolean => {\n if (Object.is(left, right)) {\n return true\n }\n if (Array.isArray(left) && Array.isArray(right)) {\n if (left.length !== right.length) {\n return false\n }\n return left.every((item, index) => isDeepEqual(item, right[index]))\n }\n if (isPlainObject(left) && isPlainObject(right)) {\n const leftKeys = Object.keys(left)\n const rightKeys = Object.keys(right)\n if (leftKeys.length !== rightKeys.length) {\n return false\n }\n return leftKeys.every(key => hasOwn(right, key) && isDeepEqual(left[key], right[key]))\n }\n return false\n }\n\n const createValueToken = (value: unknown) => {\n const candidate = isRef(value) ? value.value : value\n if (candidate == null || typeof candidate !== 'object') {\n return candidate\n }\n if (!isReactive(candidate) && hasTrackableSetupBinding(candidate)) {\n return {\n snapshot: toPlain(candidate, new WeakMap(), {\n cacheEligibility: plainCacheEligibility,\n maxDepth: toPlainMaxDepth,\n maxKeys: toPlainMaxKeys,\n includeFunctions,\n functionPaths,\n }),\n }\n }\n const raw = isReactive(candidate) ? toRaw(candidate as any) : candidate\n return {\n raw,\n version: getReactiveVersion(raw as any),\n }\n }\n\n const isSameToken = (left: unknown, right: unknown) => {\n if (Object.is(left, right)) {\n return true\n }\n if (\n !left\n || !right\n || typeof left !== 'object'\n || typeof right !== 'object'\n || !hasOwn(left as object, 'raw')\n || !hasOwn(right as object, 'raw')\n ) {\n if (\n left\n && right\n && typeof left === 'object'\n && typeof right === 'object'\n && hasOwn(left as object, 'snapshot')\n && hasOwn(right as object, 'snapshot')\n ) {\n return isDeepEqual((left as any).snapshot, (right as any).snapshot)\n }\n return false\n }\n return (left as any).raw === (right as any).raw && (left as any).version === (right as any).version\n }\n\n const shouldIncludeSnapshotKey = (key: string) => shouldIncludeKey(key) && !snapshotOmitKeys?.has(key)\n\n if (initialSnapshot) {\n for (const [key, value] of Object.entries(initialSnapshot)) {\n if (shouldIncludeSnapshotKey(key)) {\n latestSnapshot[key] = value\n }\n }\n }\n\n const syncInitialSnapshotTokens = () => {\n if (!initialSnapshot) {\n return\n }\n const rawState = (isReactive(state) ? toRaw(state as any) : state) as Record<string, any>\n const rawSetupState = setupState && typeof setupState === 'object'\n ? (isReactive(setupState) ? toRaw(setupState as any) : setupState)\n : undefined\n\n for (const key of Object.keys(initialSnapshot)) {\n if (!shouldIncludeSnapshotKey(key)) {\n continue\n }\n if (rawSetupState && hasOwn(rawSetupState, key)) {\n latestStateTokens[key] = createValueToken(rawSetupState[key])\n continue\n }\n if (hasOwn(rawState, key)) {\n if (initialStateKeys.has(key)) {\n continue\n }\n rawState[key] = initialSnapshot[key]\n latestStateTokens[key] = createValueToken(rawState[key])\n }\n }\n }\n\n const resolveTopKeysByRoot = (root: object) => {\n const matches: string[] = []\n const rawSetupState = setupState && typeof setupState === 'object'\n ? (isReactive(setupState) ? toRaw(setupState as any) : setupState)\n : undefined\n for (const key of new Set([...Object.keys(state), ...(rawSetupState ? Object.keys(rawSetupState) : [])])) {\n if (!shouldIncludeSnapshotKey(key)) {\n continue\n }\n const value = rawSetupState && hasOwn(rawSetupState, key) ? rawSetupState[key] : state[key]\n const candidate = isRef(value) ? value.value : value\n if (!candidate || typeof candidate !== 'object') {\n continue\n }\n if (toRaw(candidate as any) === root) {\n matches.push(key)\n }\n }\n return matches\n }\n\n const emitDebug = (info: SetDataDebugInfo) => {\n if (!debug) {\n return\n }\n const isFallback = info.reason !== 'patch' && info.reason !== 'diff'\n if (debugWhen === 'fallback' && !isFallback) {\n return\n }\n if (debugSampleRate < 1 && Math.random() > debugSampleRate) {\n return\n }\n try {\n debug(info)\n }\n catch {\n // 忽略异常\n }\n }\n\n const recordFlushForLoopWarning = () => {\n if (!loopWarning) {\n return\n }\n const current = Date.now()\n flushTimes.push(current)\n const windowStart = current - loopWarning.sampleWindowMs\n while (flushTimes.length && flushTimes[0] < windowStart) {\n flushTimes.shift()\n }\n if (flushTimes.length <= loopWarning.maxFlushes) {\n return\n }\n if (loopWarning.coolDownMs > 0 && current - lastLoopWarningAt < loopWarning.coolDownMs) {\n return\n }\n lastLoopWarningAt = current\n emitDebug({\n mode: setDataStrategy,\n reason: 'loopWarning',\n pendingPatchKeys: pendingPatches.size + fallbackTopKeys.size,\n payloadKeys: 0,\n computedDirtyKeys: includeComputed ? dirtyComputedKeys.size : 0,\n flushCount: flushTimes.length,\n windowMs: loopWarning.sampleWindowMs,\n targetLabel,\n message: `${targetLabel ? `${targetLabel} ` : ''}疑似运行时更新循环:${flushTimes.length} 次 setData flush/${loopWarning.sampleWindowMs}ms`,\n })\n }\n\n const collect = () => collectSnapshot({\n state,\n setupState,\n computedRefs,\n includeComputed,\n shouldIncludeKey: shouldIncludeSnapshotKey,\n plainCache,\n plainCacheEligibility,\n toPlainMaxDepth,\n toPlainMaxKeys,\n includeFunctions,\n functionPaths,\n })\n\n syncInitialSnapshotTokens()\n\n const collectDiffSnapshot = () => {\n const rawState = (isReactive(state) ? toRaw(state as any) : state) as Record<string, any>\n const rawSetupState = setupState && typeof setupState === 'object'\n ? (isReactive(setupState) ? toRaw(setupState as any) : setupState)\n : undefined\n const nextSnapshot: Record<string, any> = { ...latestSnapshot }\n const seen = new WeakMap<object, any>()\n const includedStateKeys = new Set<string>()\n const includedComputedKeys = new Set<string>()\n const replacedTopLevelKeys = new Set<string>()\n\n for (const key of new Set([...Object.keys(rawState), ...(rawSetupState ? Object.keys(rawSetupState) : [])])) {\n if (!shouldIncludeSnapshotKey(key)) {\n continue\n }\n includedStateKeys.add(key)\n const source = rawSetupState && hasOwn(rawSetupState, key) ? rawSetupState : rawState\n const token = createValueToken(source[key])\n const previousToken = latestStateTokens[key]\n if (\n previousToken\n && token\n && typeof previousToken === 'object'\n && typeof token === 'object'\n && hasOwn(previousToken as object, 'raw')\n && hasOwn(token as object, 'raw')\n && Array.isArray((previousToken as any).raw)\n && Array.isArray((token as any).raw)\n && (previousToken as any).raw !== (token as any).raw\n ) {\n replacedTopLevelKeys.add(key)\n }\n if (!isSameToken(previousToken, token) || !hasOwn(latestSnapshot, key)) {\n nextSnapshot[key] = toPlain(source[key], seen, {\n cache: plainCache,\n cacheEligibility: plainCacheEligibility,\n maxDepth: toPlainMaxDepth,\n maxKeys: toPlainMaxKeys,\n includeFunctions,\n functionPaths,\n _path: key,\n })\n }\n latestStateTokens[key] = token\n }\n\n for (const key of Object.keys(latestStateTokens)) {\n if (!includedStateKeys.has(key)) {\n delete latestStateTokens[key]\n if (!includeComputed || !hasOwn(computedRefs, key)) {\n delete nextSnapshot[key]\n }\n }\n }\n\n if (!includeComputed) {\n for (const key of Object.keys(latestComputedTokens)) {\n delete latestComputedTokens[key]\n }\n return {\n snapshot: nextSnapshot,\n replacedTopLevelKeys,\n }\n }\n\n for (const key of Object.keys(computedRefs)) {\n if (!shouldIncludeSnapshotKey(key)) {\n continue\n }\n includedComputedKeys.add(key)\n const value = computedRefs[key].value\n const token = createValueToken(value)\n if (!isSameToken(latestComputedTokens[key], token) || !hasOwn(latestSnapshot, key)) {\n nextSnapshot[key] = toPlain(value, seen, {\n cache: plainCache,\n cacheEligibility: plainCacheEligibility,\n maxDepth: toPlainMaxDepth,\n maxKeys: toPlainMaxKeys,\n includeFunctions,\n functionPaths,\n _path: key,\n })\n }\n latestComputedTokens[key] = token\n }\n\n for (const key of Object.keys(latestComputedTokens)) {\n if (!includedComputedKeys.has(key)) {\n delete latestComputedTokens[key]\n if (!hasOwn(rawState, key) || !shouldIncludeSnapshotKey(key)) {\n delete nextSnapshot[key]\n }\n }\n }\n\n return {\n snapshot: nextSnapshot,\n replacedTopLevelKeys,\n }\n }\n\n const runDiffUpdate = (reason: SetDataDebugInfo['reason'] = 'diff'): void | Promise<void> => {\n const diffCollection = setDataStrategy === 'diff' ? collectDiffSnapshot() : undefined\n const snapshot = diffCollection?.snapshot ?? collect()\n const diff = diffCollection\n ? (() => {\n const fastDiff: Record<string, any> = {}\n for (const key of diffCollection.replacedTopLevelKeys) {\n fastDiff[key] = snapshot[key]\n }\n const baseDiff = diffSnapshots(latestSnapshot, snapshot, {\n skipKeys: diffCollection.replacedTopLevelKeys,\n })\n return {\n ...baseDiff,\n ...fastDiff,\n }\n })()\n : diffSnapshots(latestSnapshot, snapshot)\n latestSnapshot = snapshot\n needsFullSnapshot.value = false\n pendingPatches.clear()\n if (setDataStrategy === 'patch' && includeComputed) {\n latestComputedSnapshot = Object.create(null)\n for (const key of Object.keys(computedRefs)) {\n if (!shouldIncludeSnapshotKey(key)) {\n continue\n }\n latestComputedSnapshot[key] = snapshot[key]\n }\n dirtyComputedKeys.clear()\n }\n if (!Object.keys(diff).length) {\n return\n }\n if (typeof currentAdapter.setData === 'function') {\n const result = currentAdapter.setData(diff)\n if (result && typeof (result as Promise<any>).then === 'function') {\n return (result as Promise<void>).catch(() => {})\n }\n }\n emitDebug({\n mode: 'diff',\n reason,\n pendingPatchKeys: 0,\n payloadKeys: Object.keys(diff).length,\n })\n }\n\n const mutationRecorder = (record: MutationRecord, stateRootRaw: object) => {\n if (!isMounted()) {\n return\n }\n if (record.root !== stateRootRaw) {\n const topKeys = resolveTopKeysByRoot(record.root)\n if (topKeys.length) {\n for (const key of topKeys) {\n fallbackTopKeys.add(key)\n }\n }\n return\n }\n if (!record.path) {\n if (Array.isArray(record.fallbackTopKeys) && record.fallbackTopKeys.length) {\n for (const key of record.fallbackTopKeys) {\n fallbackTopKeys.add(key)\n }\n }\n else {\n needsFullSnapshot.value = true\n }\n return\n }\n const topKey = record.path.split('.', 1)[0]\n if (!shouldIncludeSnapshotKey(topKey)) {\n return\n }\n pendingPatches.set(record.path, { kind: record.kind, op: record.op })\n }\n\n const job = (_stateRootRaw: object) => {\n if (!isMounted()) {\n return\n }\n recordFlushForLoopWarning()\n // 生成快照前刷新依赖(setup 中的 ref / 新增 key)\n runTracker()\n\n if (setDataStrategy === 'patch' && !needsFullSnapshot.value) {\n const hasPatchSignal = pendingPatches.size > 0\n || fallbackTopKeys.size > 0\n || (includeComputed && dirtyComputedKeys.size > 0)\n // setup 返回的 ref/computed 变更不会进入 mutation recorder,patch 信号为空时兜底走 diff。\n if (!hasPatchSignal) {\n return runDiffUpdate('diff')\n }\n return runPatchUpdate({\n state,\n computedRefs,\n dirtyComputedKeys,\n includeComputed,\n computedCompare,\n computedCompareMaxDepth,\n computedCompareMaxKeys,\n currentAdapter,\n shouldIncludeKey: shouldIncludeSnapshotKey,\n maxPatchKeys,\n maxPayloadBytes,\n mergeSiblingThreshold,\n mergeSiblingMaxInflationRatio,\n mergeSiblingMaxParentBytes,\n mergeSiblingSkipArray,\n elevateTopKeyThreshold,\n toPlainMaxDepth,\n toPlainMaxKeys,\n includeFunctions,\n functionPaths,\n plainCache,\n plainCacheEligibility,\n pendingPatches,\n fallbackTopKeys,\n latestSnapshot,\n latestComputedSnapshot,\n needsFullSnapshot,\n emitDebug,\n runDiffUpdate,\n })\n }\n else {\n return runDiffUpdate(needsFullSnapshot.value ? 'needsFullSnapshot' : 'diff')\n }\n }\n\n const snapshot = () => (setDataStrategy === 'patch' ? collect() : ({ ...latestSnapshot }))\n const cloneLatestSnapshot = () => ({ ...latestSnapshot })\n\n return {\n job,\n mutationRecorder,\n snapshot,\n cloneLatestSnapshot,\n getLatestSnapshot: () => latestSnapshot,\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"scheduler.mjs","names":[],"sources":["../../../../../src/runtime/app/setData/scheduler.ts"],"sourcesContent":["import type { WevuRuntimeBindingManifestV1 } from '@weapp-core/constants'\nimport type { SetDataScheduler } from '../../capabilities'\nimport type { SetDataDebugInfo } from '../../types'\nimport type { CommitAwareSetDataAdapter, PreparedSetDataUpdate, SetDataCommitFailure, SetDataSnapshot } from './commitTracker'\nimport { getReactiveVersion, isReactive, isRef, toRaw } from '../../../reactivity'\nimport { hasOwn } from '../../../utils'\nimport { resolveBindingDiagnostics } from '../../bindingManifest'\nimport { diffSnapshots, toPlain } from '../../diff'\nimport { hasTrackableSetupBinding } from '../../setupTracking'\nimport { createSetDataCommitTracker } from './commitTracker'\nimport { collectSnapshot } from './snapshot'\n\nexport interface SetDataSchedulerOptions {\n state: Record<string, any>\n setupState?: Record<string, any>\n snapshotOmitKeys?: Set<string>\n computedRefs: Record<string, { value: any }>\n dirtyComputedKeys: Set<string>\n includeComputed: boolean\n setDataStrategy: 'diff' | 'patch'\n computedCompare: 'reference' | 'shallow' | 'deep'\n computedCompareMaxDepth: number\n computedCompareMaxKeys: number\n currentAdapter: CommitAwareSetDataAdapter\n shouldIncludeKey: (key: string) => boolean\n maxPatchKeys: number\n maxPayloadBytes: number\n mergeSiblingThreshold: number\n mergeSiblingMaxInflationRatio: number\n mergeSiblingMaxParentBytes: number\n mergeSiblingSkipArray: boolean\n elevateTopKeyThreshold: number\n prelinkMaxDepth?: number\n prelinkMaxKeys?: number\n toPlainMaxDepth: number\n toPlainMaxKeys: number\n includeFunctions?: boolean\n functionPaths: string[]\n debug: ((info: SetDataDebugInfo) => void) | undefined\n debugWhen: 'fallback' | 'always'\n debugSampleRate: number\n bindingManifest?: WevuRuntimeBindingManifestV1\n loopWarning: false | {\n sampleWindowMs: number\n maxFlushes: number\n coolDownMs: number\n }\n targetLabel?: string\n runTracker: () => void\n isMounted: () => boolean\n initialSnapshot?: Record<string, any>\n initialState?: Record<string, any>\n}\n\nexport interface SetDataSchedulerInternals extends SetDataScheduler {\n collect: () => Record<string, unknown>\n dispatchUpdate: (update: PreparedSetDataUpdate) => number\n dispose: () => void\n emitDebug: (info: SetDataDebugInfo, pathSource?: Iterable<string> | (() => Iterable<string>)) => void\n getLatestSnapshot: () => Record<string, unknown>\n needsFullSnapshot: () => boolean\n plainCache: WeakMap<object, { version: number, value: unknown }>\n plainCacheEligibility: WeakMap<object, boolean>\n prepareJob: (pendingPatchKeys?: number, pathSource?: Iterable<string> | (() => Iterable<string>)) => boolean\n resolveTopKeysByRoot: (root: object) => string[]\n runDiffUpdate: (\n reason?: SetDataDebugInfo['reason'],\n pendingPatchKeys?: number,\n onSnapshotPrepared?: (snapshot: SetDataSnapshot) => void,\n ) => void\n shouldIncludeSnapshotKey: (key: string) => boolean\n}\n\nexport function createSetDataScheduler(options: SetDataSchedulerOptions): SetDataSchedulerInternals {\n const {\n state,\n setupState,\n snapshotOmitKeys,\n computedRefs,\n dirtyComputedKeys,\n includeComputed,\n setDataStrategy,\n currentAdapter,\n shouldIncludeKey,\n toPlainMaxDepth,\n toPlainMaxKeys,\n includeFunctions = false,\n functionPaths,\n debug,\n debugWhen,\n debugSampleRate,\n bindingManifest,\n loopWarning,\n targetLabel,\n runTracker,\n isMounted,\n initialSnapshot,\n initialState,\n } = options\n\n const plainCache = new WeakMap<object, { version: number, value: any }>()\n const plainCacheEligibility = new WeakMap<object, boolean>()\n const initialSnapshotBaseline: SetDataSnapshot = {}\n const dispatchedStateTokens = Object.create(null) as Record<string, unknown>\n const dispatchedComputedTokens = Object.create(null) as Record<string, unknown>\n const flushTimes: number[] = []\n let lastLoopWarningAt = Number.NEGATIVE_INFINITY\n const initialStateKeys = new Set(\n initialState && typeof initialState === 'object'\n ? Object.keys(initialState)\n : [],\n )\n\n const 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\n const isDeepEqual = (left: any, right: any): boolean => {\n if (Object.is(left, right)) {\n return true\n }\n if (Array.isArray(left) && Array.isArray(right)) {\n if (left.length !== right.length) {\n return false\n }\n return left.every((item, index) => isDeepEqual(item, right[index]))\n }\n if (isPlainObject(left) && isPlainObject(right)) {\n const leftKeys = Object.keys(left)\n const rightKeys = Object.keys(right)\n if (leftKeys.length !== rightKeys.length) {\n return false\n }\n return leftKeys.every(key => hasOwn(right, key) && isDeepEqual(left[key], right[key]))\n }\n return false\n }\n\n const createValueToken = (value: unknown) => {\n const candidate = isRef(value) ? value.value : value\n if (candidate == null || typeof candidate !== 'object') {\n return candidate\n }\n if (!isReactive(candidate) && hasTrackableSetupBinding(candidate)) {\n return {\n snapshot: toPlain(candidate, new WeakMap(), {\n cacheEligibility: plainCacheEligibility,\n maxDepth: toPlainMaxDepth,\n maxKeys: toPlainMaxKeys,\n includeFunctions,\n functionPaths,\n }),\n }\n }\n const raw = isReactive(candidate) ? toRaw(candidate as any) : candidate\n return {\n raw,\n version: getReactiveVersion(raw as any),\n }\n }\n\n const isSameToken = (left: unknown, right: unknown) => {\n if (Object.is(left, right)) {\n return true\n }\n if (\n !left\n || !right\n || typeof left !== 'object'\n || typeof right !== 'object'\n || !hasOwn(left as object, 'raw')\n || !hasOwn(right as object, 'raw')\n ) {\n if (\n left\n && right\n && typeof left === 'object'\n && typeof right === 'object'\n && hasOwn(left as object, 'snapshot')\n && hasOwn(right as object, 'snapshot')\n ) {\n return isDeepEqual((left as any).snapshot, (right as any).snapshot)\n }\n return false\n }\n return (left as any).raw === (right as any).raw && (left as any).version === (right as any).version\n }\n\n const shouldIncludeSnapshotKey = (key: string) => shouldIncludeKey(key) && !snapshotOmitKeys?.has(key)\n\n if (initialSnapshot) {\n for (const [key, value] of Object.entries(initialSnapshot)) {\n if (shouldIncludeSnapshotKey(key)) {\n initialSnapshotBaseline[key] = value\n }\n }\n }\n\n const syncInitialSnapshotTokens = () => {\n if (!initialSnapshot) {\n return\n }\n const rawState = (isReactive(state) ? toRaw(state as any) : state) as Record<string, any>\n const rawSetupState = setupState && typeof setupState === 'object'\n ? (isReactive(setupState) ? toRaw(setupState as any) : setupState)\n : undefined\n\n for (const key of Object.keys(initialSnapshot)) {\n if (!shouldIncludeSnapshotKey(key)) {\n continue\n }\n if (rawSetupState && hasOwn(rawSetupState, key)) {\n dispatchedStateTokens[key] = createValueToken(rawSetupState[key])\n continue\n }\n if (hasOwn(rawState, key)) {\n if (initialStateKeys.has(key)) {\n continue\n }\n rawState[key] = initialSnapshot[key]\n dispatchedStateTokens[key] = createValueToken(rawState[key])\n }\n }\n }\n\n const resolveTopKeysByRoot = (root: object) => {\n const matches: string[] = []\n const rawSetupState = setupState && typeof setupState === 'object'\n ? (isReactive(setupState) ? toRaw(setupState as any) : setupState)\n : undefined\n for (const key of new Set([...Object.keys(state), ...(rawSetupState ? Object.keys(rawSetupState) : [])])) {\n if (!shouldIncludeSnapshotKey(key)) {\n continue\n }\n const value = rawSetupState && hasOwn(rawSetupState, key) ? rawSetupState[key] : state[key]\n const candidate = isRef(value) ? value.value : value\n if (!candidate || typeof candidate !== 'object') {\n continue\n }\n if (toRaw(candidate as any) === root) {\n matches.push(key)\n }\n }\n return matches\n }\n\n const emitDebug = (\n info: SetDataDebugInfo,\n pathSource?: Iterable<string> | (() => Iterable<string>),\n ) => {\n if (!debug) {\n return\n }\n const isFallback = info.reason !== 'patch' && info.reason !== 'diff'\n if (debugWhen === 'fallback' && !isFallback) {\n return\n }\n if (info.reason !== 'commitFailure' && debugSampleRate < 1 && Math.random() > debugSampleRate) {\n return\n }\n let debugInfo = info\n if (bindingManifest) {\n const paths = typeof pathSource === 'function'\n ? pathSource()\n : pathSource ?? []\n const wholeSnapshotFallback = info.reason === 'needsFullSnapshot'\n || info.reason === 'maxPatchKeys'\n || info.reason === 'maxPayloadBytes'\n debugInfo = {\n ...info,\n bindings: resolveBindingDiagnostics(bindingManifest, paths, wholeSnapshotFallback),\n }\n }\n try {\n debug(debugInfo)\n }\n catch {\n // 忽略异常\n }\n }\n\n const commitTracker = createSetDataCommitTracker({\n initialSnapshot: initialSnapshotBaseline,\n adapter: currentAdapter,\n onFailure: (failure: SetDataCommitFailure) => {\n emitDebug({\n mode: failure.mode,\n reason: 'commitFailure',\n pendingPatchKeys: failure.pendingPatchKeys,\n payloadKeys: failure.payloadKeys,\n revision: failure.revision,\n committedRevision: failure.committedRevision,\n targetLabel,\n message: failure.error.message,\n })\n try {\n currentAdapter.__wevu_reportSetDataError?.(failure.error)\n }\n catch {\n // 宿主错误钩子不得反向破坏提交状态机。\n }\n },\n })\n\n const recordFlushForLoopWarning = (\n pendingPatchKeys = 0,\n pathSource?: Iterable<string> | (() => Iterable<string>),\n ) => {\n if (!loopWarning) {\n return\n }\n const current = Date.now()\n flushTimes.push(current)\n const windowStart = current - loopWarning.sampleWindowMs\n while (flushTimes.length && flushTimes[0] < windowStart) {\n flushTimes.shift()\n }\n if (flushTimes.length <= loopWarning.maxFlushes) {\n return\n }\n if (loopWarning.coolDownMs > 0 && current - lastLoopWarningAt < loopWarning.coolDownMs) {\n return\n }\n lastLoopWarningAt = current\n emitDebug({\n mode: setDataStrategy,\n reason: 'loopWarning',\n pendingPatchKeys,\n payloadKeys: 0,\n computedDirtyKeys: includeComputed ? dirtyComputedKeys.size : 0,\n flushCount: flushTimes.length,\n windowMs: loopWarning.sampleWindowMs,\n targetLabel,\n message: `${targetLabel ? `${targetLabel} ` : ''}疑似运行时更新循环:${flushTimes.length} 次 setData flush/${loopWarning.sampleWindowMs}ms`,\n }, pathSource)\n }\n\n const collect = () => collectSnapshot({\n state,\n setupState,\n computedRefs,\n includeComputed,\n shouldIncludeKey: shouldIncludeSnapshotKey,\n plainCache,\n plainCacheEligibility,\n toPlainMaxDepth,\n toPlainMaxKeys,\n includeFunctions,\n functionPaths,\n })\n\n syncInitialSnapshotTokens()\n\n const collectDiffSnapshot = () => {\n const rawState = (isReactive(state) ? toRaw(state as any) : state) as Record<string, any>\n const rawSetupState = setupState && typeof setupState === 'object'\n ? (isReactive(setupState) ? toRaw(setupState as any) : setupState)\n : undefined\n const dispatchedSnapshot = commitTracker.state.dispatchedSnapshot\n const nextSnapshot: Record<string, any> = { ...dispatchedSnapshot }\n const seen = new WeakMap<object, any>()\n const includedStateKeys = new Set<string>()\n const includedComputedKeys = new Set<string>()\n const replacedTopLevelKeys = new Set<string>()\n\n for (const key of new Set([...Object.keys(rawState), ...(rawSetupState ? Object.keys(rawSetupState) : [])])) {\n if (!shouldIncludeSnapshotKey(key)) {\n continue\n }\n includedStateKeys.add(key)\n const source = rawSetupState && hasOwn(rawSetupState, key) ? rawSetupState : rawState\n const token = createValueToken(source[key])\n const previousToken = dispatchedStateTokens[key]\n if (\n previousToken\n && token\n && typeof previousToken === 'object'\n && typeof token === 'object'\n && hasOwn(previousToken as object, 'raw')\n && hasOwn(token as object, 'raw')\n && Array.isArray((previousToken as any).raw)\n && Array.isArray((token as any).raw)\n && (previousToken as any).raw !== (token as any).raw\n ) {\n replacedTopLevelKeys.add(key)\n }\n if (!isSameToken(previousToken, token) || !hasOwn(dispatchedSnapshot, key)) {\n nextSnapshot[key] = toPlain(source[key], seen, {\n cache: plainCache,\n cacheEligibility: plainCacheEligibility,\n maxDepth: toPlainMaxDepth,\n maxKeys: toPlainMaxKeys,\n includeFunctions,\n functionPaths,\n _path: key,\n })\n }\n dispatchedStateTokens[key] = token\n }\n\n for (const key of Object.keys(dispatchedStateTokens)) {\n if (!includedStateKeys.has(key)) {\n delete dispatchedStateTokens[key]\n if (!includeComputed || !hasOwn(computedRefs, key)) {\n delete nextSnapshot[key]\n }\n }\n }\n\n if (!includeComputed) {\n for (const key of Object.keys(dispatchedComputedTokens)) {\n delete dispatchedComputedTokens[key]\n }\n return {\n snapshot: nextSnapshot,\n replacedTopLevelKeys,\n }\n }\n\n for (const key of Object.keys(computedRefs)) {\n if (!shouldIncludeSnapshotKey(key)) {\n continue\n }\n includedComputedKeys.add(key)\n const value = computedRefs[key].value\n const token = createValueToken(value)\n if (!isSameToken(dispatchedComputedTokens[key], token) || !hasOwn(dispatchedSnapshot, key)) {\n nextSnapshot[key] = toPlain(value, seen, {\n cache: plainCache,\n cacheEligibility: plainCacheEligibility,\n maxDepth: toPlainMaxDepth,\n maxKeys: toPlainMaxKeys,\n includeFunctions,\n functionPaths,\n _path: key,\n })\n }\n dispatchedComputedTokens[key] = token\n }\n\n for (const key of Object.keys(dispatchedComputedTokens)) {\n if (!includedComputedKeys.has(key)) {\n delete dispatchedComputedTokens[key]\n if (!hasOwn(rawState, key) || !shouldIncludeSnapshotKey(key)) {\n delete nextSnapshot[key]\n }\n }\n }\n\n return {\n snapshot: nextSnapshot,\n replacedTopLevelKeys,\n }\n }\n\n const runDiffUpdate = (\n reason: SetDataDebugInfo['reason'] = 'diff',\n pendingPatchKeys = 0,\n onSnapshotPrepared?: (snapshot: SetDataSnapshot) => void,\n ): void => {\n const diffCollection = setDataStrategy === 'diff' ? collectDiffSnapshot() : undefined\n const snapshot = diffCollection?.snapshot ?? collect()\n const dispatchedSnapshot = commitTracker.state.dispatchedSnapshot\n const needsRecovery = commitTracker.state.needsFullSnapshot\n const payload = needsRecovery\n ? commitTracker.createFullPayload(snapshot)\n : diffCollection\n ? (() => {\n const fastDiff: Record<string, any> = {}\n for (const key of diffCollection.replacedTopLevelKeys) {\n fastDiff[key] = snapshot[key]\n }\n const baseDiff = diffSnapshots(dispatchedSnapshot, snapshot, {\n skipKeys: diffCollection.replacedTopLevelKeys,\n })\n return {\n ...baseDiff,\n ...fastDiff,\n }\n })()\n : diffSnapshots(dispatchedSnapshot, snapshot)\n onSnapshotPrepared?.(snapshot)\n const payloadKeys = Object.keys(payload).length\n if (!payloadKeys && !needsRecovery) {\n return\n }\n const effectiveReason = needsRecovery ? 'needsFullSnapshot' : reason\n emitDebug({\n mode: 'diff',\n reason: effectiveReason,\n pendingPatchKeys,\n payloadKeys,\n }, Object.keys(payload))\n commitTracker.dispatch({\n mode: 'diff',\n kind: needsRecovery ? 'full' : 'delta',\n reason: effectiveReason,\n snapshot,\n payload,\n pendingPatchKeys,\n })\n }\n\n const prepareJob = (\n pendingPatchKeys = 0,\n pathSource?: Iterable<string> | (() => Iterable<string>),\n ) => {\n if (!isMounted()) {\n return false\n }\n recordFlushForLoopWarning(pendingPatchKeys, pathSource)\n // 生成快照前刷新依赖(setup 中的 ref / 新增 key)\n runTracker()\n return true\n }\n\n const job = (_stateRootRaw?: object) => {\n if (!prepareJob()) {\n return\n }\n return runDiffUpdate('diff')\n }\n\n const snapshot = () => (\n setDataStrategy === 'patch'\n ? collect()\n : { ...commitTracker.state.dispatchedSnapshot }\n )\n const cloneLatestSnapshot = () => ({ ...commitTracker.state.dispatchedSnapshot })\n\n return {\n collect,\n emitDebug,\n getLatestSnapshot: () => commitTracker.state.dispatchedSnapshot,\n dispatchUpdate: commitTracker.dispatch,\n needsFullSnapshot: () => commitTracker.state.needsFullSnapshot,\n job,\n plainCache,\n plainCacheEligibility,\n prepareJob,\n resolveTopKeysByRoot,\n runDiffUpdate,\n shouldIncludeSnapshotKey,\n snapshot,\n cloneLatestSnapshot,\n dispose: commitTracker.dispose,\n }\n}\n"],"mappings":";;;;;;;;;;;AAyEA,SAAgB,uBAAuB,SAA6D;CAClG,MAAM,EACJ,OACA,YACA,kBACA,cACA,mBACA,iBACA,iBACA,gBACA,kBACA,iBACA,gBACA,mBAAmB,OACnB,eACA,OACA,WACA,iBACA,iBACA,aACA,aACA,YACA,WACA,iBACA,iBACE;CAEJ,MAAM,6BAAa,IAAI,QAAiD;CACxE,MAAM,wCAAwB,IAAI,QAAyB;CAC3D,MAAM,0BAA2C,CAAC;CAClD,MAAM,wBAAwB,OAAO,OAAO,IAAI;CAChD,MAAM,2BAA2B,OAAO,OAAO,IAAI;CACnD,MAAM,aAAuB,CAAC;CAC9B,IAAI,oBAAoB,OAAO;CAC/B,MAAM,mBAAmB,IAAI,IAC3B,gBAAgB,OAAO,iBAAiB,WACpC,OAAO,KAAK,YAAY,IACxB,CAAC,CACP;CAEA,MAAM,iBAAiB,UAAiD;EACtE,IAAI,OAAO,UAAU,SAAS,KAAK,KAAK,MAAM,mBAC5C,OAAO;EAET,MAAM,QAAQ,OAAO,eAAe,KAAK;EACzC,OAAO,UAAU,QAAQ,UAAU,OAAO;CAC5C;CAEA,MAAM,eAAe,MAAW,UAAwB;EACtD,IAAI,OAAO,GAAG,MAAM,KAAK,GACvB,OAAO;EAET,IAAI,MAAM,QAAQ,IAAI,KAAK,MAAM,QAAQ,KAAK,GAAG;GAC/C,IAAI,KAAK,WAAW,MAAM,QACxB,OAAO;GAET,OAAO,KAAK,OAAO,MAAM,UAAU,YAAY,MAAM,MAAM,MAAM,CAAC;EACpE;EACA,IAAI,cAAc,IAAI,KAAK,cAAc,KAAK,GAAG;GAC/C,MAAM,WAAW,OAAO,KAAK,IAAI;GACjC,MAAM,YAAY,OAAO,KAAK,KAAK;GACnC,IAAI,SAAS,WAAW,UAAU,QAChC,OAAO;GAET,OAAO,SAAS,OAAM,QAAO,OAAO,OAAO,GAAG,KAAK,YAAY,KAAK,MAAM,MAAM,IAAI,CAAC;EACvF;EACA,OAAO;CACT;CAEA,MAAM,oBAAoB,UAAmB;EAC3C,MAAM,YAAY,MAAM,KAAK,IAAI,MAAM,QAAQ;EAC/C,IAAI,aAAa,QAAQ,OAAO,cAAc,UAC5C,OAAO;EAET,IAAI,CAAC,WAAW,SAAS,KAAK,yBAAyB,SAAS,GAC9D,OAAO,EACL,UAAU,QAAQ,2BAAW,IAAI,QAAQ,GAAG;GAC1C,kBAAkB;GAClB,UAAU;GACV,SAAS;GACT;GACA;EACF,CAAC,EACH;EAEF,MAAM,MAAM,WAAW,SAAS,IAAI,MAAM,SAAgB,IAAI;EAC9D,OAAO;GACL;GACA,SAAS,mBAAmB,GAAU;EACxC;CACF;CAEA,MAAM,eAAe,MAAe,UAAmB;EACrD,IAAI,OAAO,GAAG,MAAM,KAAK,GACvB,OAAO;EAET,IACE,CAAC,QACE,CAAC,SACD,OAAO,SAAS,YAChB,OAAO,UAAU,YACjB,CAAC,OAAO,MAAgB,KAAK,KAC7B,CAAC,OAAO,OAAiB,KAAK,GACjC;GACA,IACE,QACG,SACA,OAAO,SAAS,YAChB,OAAO,UAAU,YACjB,OAAO,MAAgB,UAAU,KACjC,OAAO,OAAiB,UAAU,GAErC,OAAO,YAAa,KAAa,UAAW,MAAc,QAAQ;GAEpE,OAAO;EACT;EACA,OAAQ,KAAa,QAAS,MAAc,OAAQ,KAAa,YAAa,MAAc;CAC9F;CAEA,MAAM,4BAA4B,QAAgB,iBAAiB,GAAG,KAAK,sEAAC,iBAAkB,IAAI,GAAG;CAErG,IAAI,iBACF;OAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,eAAe,GACvD,IAAI,yBAAyB,GAAG,GAC9B,wBAAwB,OAAO;CAEnC;CAGF,MAAM,kCAAkC;EACtC,IAAI,CAAC,iBACH;EAEF,MAAM,WAAY,WAAW,KAAK,IAAI,MAAM,KAAY,IAAI;EAC5D,MAAM,gBAAgB,cAAc,OAAO,eAAe,WACrD,WAAW,UAAU,IAAI,MAAM,UAAiB,IAAI,aACrD;EAEJ,KAAK,MAAM,OAAO,OAAO,KAAK,eAAe,GAAG;GAC9C,IAAI,CAAC,yBAAyB,GAAG,GAC/B;GAEF,IAAI,iBAAiB,OAAO,eAAe,GAAG,GAAG;IAC/C,sBAAsB,OAAO,iBAAiB,cAAc,IAAI;IAChE;GACF;GACA,IAAI,OAAO,UAAU,GAAG,GAAG;IACzB,IAAI,iBAAiB,IAAI,GAAG,GAC1B;IAEF,SAAS,OAAO,gBAAgB;IAChC,sBAAsB,OAAO,iBAAiB,SAAS,IAAI;GAC7D;EACF;CACF;CAEA,MAAM,wBAAwB,SAAiB;EAC7C,MAAM,UAAoB,CAAC;EAC3B,MAAM,gBAAgB,cAAc,OAAO,eAAe,WACrD,WAAW,UAAU,IAAI,MAAM,UAAiB,IAAI,aACrD;EACJ,KAAK,MAAM,uBAAO,IAAI,IAAI,CAAC,GAAG,OAAO,KAAK,KAAK,GAAG,GAAI,gBAAgB,OAAO,KAAK,aAAa,IAAI,CAAC,CAAE,CAAC,GAAG;GACxG,IAAI,CAAC,yBAAyB,GAAG,GAC/B;GAEF,MAAM,QAAQ,iBAAiB,OAAO,eAAe,GAAG,IAAI,cAAc,OAAO,MAAM;GACvF,MAAM,YAAY,MAAM,KAAK,IAAI,MAAM,QAAQ;GAC/C,IAAI,CAAC,aAAa,OAAO,cAAc,UACrC;GAEF,IAAI,MAAM,SAAgB,MAAM,MAC9B,QAAQ,KAAK,GAAG;EAEpB;EACA,OAAO;CACT;CAEA,MAAM,aACJ,MACA,eACG;EACH,IAAI,CAAC,OACH;EAEF,MAAM,aAAa,KAAK,WAAW,WAAW,KAAK,WAAW;EAC9D,IAAI,cAAc,cAAc,CAAC,YAC/B;EAEF,IAAI,KAAK,WAAW,mBAAmB,kBAAkB,KAAK,KAAK,OAAO,IAAI,iBAC5E;EAEF,IAAI,YAAY;EAChB,IAAI,iBAAiB;GACnB,MAAM,QAAQ,OAAO,eAAe,aAChC,WAAW,IACX,4DAAc,CAAC;GACnB,MAAM,wBAAwB,KAAK,WAAW,uBACzC,KAAK,WAAW,kBAChB,KAAK,WAAW;GACrB,YAAY;IACV,GAAG;IACH,UAAU,0BAA0B,iBAAiB,OAAO,qBAAqB;GACnF;EACF;EACA,IAAI;GACF,MAAM,SAAS;EACjB,kBACM,CAEN;CACF;CAEA,MAAM,gBAAgB,2BAA2B;EAC/C,iBAAiB;EACjB,SAAS;EACT,YAAY,YAAkC;GAC5C,UAAU;IACR,MAAM,QAAQ;IACd,QAAQ;IACR,kBAAkB,QAAQ;IAC1B,aAAa,QAAQ;IACrB,UAAU,QAAQ;IAClB,mBAAmB,QAAQ;IAC3B;IACA,SAAS,QAAQ,MAAM;GACzB,CAAC;GACD,IAAI;;IACF,wCAAe,sHAA4B,QAAQ,KAAK;GAC1D,mBACM,CAEN;EACF;CACF,CAAC;CAED,MAAM,6BACJ,mBAAmB,GACnB,eACG;EACH,IAAI,CAAC,aACH;EAEF,MAAM,UAAU,KAAK,IAAI;EACzB,WAAW,KAAK,OAAO;EACvB,MAAM,cAAc,UAAU,YAAY;EAC1C,OAAO,WAAW,UAAU,WAAW,KAAK,aAC1C,WAAW,MAAM;EAEnB,IAAI,WAAW,UAAU,YAAY,YACnC;EAEF,IAAI,YAAY,aAAa,KAAK,UAAU,oBAAoB,YAAY,YAC1E;EAEF,oBAAoB;EACpB,UAAU;GACR,MAAM;GACN,QAAQ;GACR;GACA,aAAa;GACb,mBAAmB,kBAAkB,kBAAkB,OAAO;GAC9D,YAAY,WAAW;GACvB,UAAU,YAAY;GACtB;GACA,SAAS,GAAG,cAAc,GAAG,YAAY,KAAK,GAAG,YAAY,WAAW,OAAO,mBAAmB,YAAY,eAAe;EAC/H,GAAG,UAAU;CACf;CAEA,MAAM,gBAAgB,gBAAgB;EACpC;EACA;EACA;EACA;EACA,kBAAkB;EAClB;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CAED,0BAA0B;CAE1B,MAAM,4BAA4B;EAChC,MAAM,WAAY,WAAW,KAAK,IAAI,MAAM,KAAY,IAAI;EAC5D,MAAM,gBAAgB,cAAc,OAAO,eAAe,WACrD,WAAW,UAAU,IAAI,MAAM,UAAiB,IAAI,aACrD;EACJ,MAAM,qBAAqB,cAAc,MAAM;EAC/C,MAAM,eAAoC,EAAE,GAAG,mBAAmB;EAClE,MAAM,uBAAO,IAAI,QAAqB;EACtC,MAAM,oCAAoB,IAAI,IAAY;EAC1C,MAAM,uCAAuB,IAAI,IAAY;EAC7C,MAAM,uCAAuB,IAAI,IAAY;EAE7C,KAAK,MAAM,uBAAO,IAAI,IAAI,CAAC,GAAG,OAAO,KAAK,QAAQ,GAAG,GAAI,gBAAgB,OAAO,KAAK,aAAa,IAAI,CAAC,CAAE,CAAC,GAAG;GAC3G,IAAI,CAAC,yBAAyB,GAAG,GAC/B;GAEF,kBAAkB,IAAI,GAAG;GACzB,MAAM,SAAS,iBAAiB,OAAO,eAAe,GAAG,IAAI,gBAAgB;GAC7E,MAAM,QAAQ,iBAAiB,OAAO,IAAI;GAC1C,MAAM,gBAAgB,sBAAsB;GAC5C,IACE,iBACG,SACA,OAAO,kBAAkB,YACzB,OAAO,UAAU,YACjB,OAAO,eAAyB,KAAK,KACrC,OAAO,OAAiB,KAAK,KAC7B,MAAM,QAAS,cAAsB,GAAG,KACxC,MAAM,QAAS,MAAc,GAAG,KAC/B,cAAsB,QAAS,MAAc,KAEjD,qBAAqB,IAAI,GAAG;GAE9B,IAAI,CAAC,YAAY,eAAe,KAAK,KAAK,CAAC,OAAO,oBAAoB,GAAG,GACvE,aAAa,OAAO,QAAQ,OAAO,MAAM,MAAM;IAC7C,OAAO;IACP,kBAAkB;IAClB,UAAU;IACV,SAAS;IACT;IACA;IACA,OAAO;GACT,CAAC;GAEH,sBAAsB,OAAO;EAC/B;EAEA,KAAK,MAAM,OAAO,OAAO,KAAK,qBAAqB,GACjD,IAAI,CAAC,kBAAkB,IAAI,GAAG,GAAG;GAC/B,OAAO,sBAAsB;GAC7B,IAAI,CAAC,mBAAmB,CAAC,OAAO,cAAc,GAAG,GAC/C,OAAO,aAAa;EAExB;EAGF,IAAI,CAAC,iBAAiB;GACpB,KAAK,MAAM,OAAO,OAAO,KAAK,wBAAwB,GACpD,OAAO,yBAAyB;GAElC,OAAO;IACL,UAAU;IACV;GACF;EACF;EAEA,KAAK,MAAM,OAAO,OAAO,KAAK,YAAY,GAAG;GAC3C,IAAI,CAAC,yBAAyB,GAAG,GAC/B;GAEF,qBAAqB,IAAI,GAAG;GAC5B,MAAM,QAAQ,aAAa,IAAI,CAAC;GAChC,MAAM,QAAQ,iBAAiB,KAAK;GACpC,IAAI,CAAC,YAAY,yBAAyB,MAAM,KAAK,KAAK,CAAC,OAAO,oBAAoB,GAAG,GACvF,aAAa,OAAO,QAAQ,OAAO,MAAM;IACvC,OAAO;IACP,kBAAkB;IAClB,UAAU;IACV,SAAS;IACT;IACA;IACA,OAAO;GACT,CAAC;GAEH,yBAAyB,OAAO;EAClC;EAEA,KAAK,MAAM,OAAO,OAAO,KAAK,wBAAwB,GACpD,IAAI,CAAC,qBAAqB,IAAI,GAAG,GAAG;GAClC,OAAO,yBAAyB;GAChC,IAAI,CAAC,OAAO,UAAU,GAAG,KAAK,CAAC,yBAAyB,GAAG,GACzD,OAAO,aAAa;EAExB;EAGF,OAAO;GACL,UAAU;GACV;EACF;CACF;CAEA,MAAM,iBACJ,SAAqC,QACrC,mBAAmB,GACnB,uBACS;;EACT,MAAM,iBAAiB,oBAAoB,SAAS,oBAAoB,IAAI;EAC5E,MAAM,oGAAW,eAAgB,iFAAY,QAAQ;EACrD,MAAM,qBAAqB,cAAc,MAAM;EAC/C,MAAM,gBAAgB,cAAc,MAAM;EAC1C,MAAM,UAAU,gBACZ,cAAc,kBAAkB,QAAQ,IACxC,wBACS;GACL,MAAM,WAAgC,CAAC;GACvC,KAAK,MAAM,OAAO,eAAe,sBAC/B,SAAS,OAAO,SAAS;GAK3B,OAAO;IACL,GAJe,cAAc,oBAAoB,UAAU,EAC3D,UAAU,eAAe,qBAC3B,CAEY;IACV,GAAG;GACL;EACF,EAAC,CAAE,IACH,cAAc,oBAAoB,QAAQ;EAChD,mFAAqB,QAAQ;EAC7B,MAAM,cAAc,OAAO,KAAK,OAAO,CAAC,CAAC;EACzC,IAAI,CAAC,eAAe,CAAC,eACnB;EAEF,MAAM,kBAAkB,gBAAgB,sBAAsB;EAC9D,UAAU;GACR,MAAM;GACN,QAAQ;GACR;GACA;EACF,GAAG,OAAO,KAAK,OAAO,CAAC;EACvB,cAAc,SAAS;GACrB,MAAM;GACN,MAAM,gBAAgB,SAAS;GAC/B,QAAQ;GACR;GACA;GACA;EACF,CAAC;CACH;CAEA,MAAM,cACJ,mBAAmB,GACnB,eACG;EACH,IAAI,CAAC,UAAU,GACb,OAAO;EAET,0BAA0B,kBAAkB,UAAU;EAEtD,WAAW;EACX,OAAO;CACT;CAEA,MAAM,OAAO,kBAA2B;EACtC,IAAI,CAAC,WAAW,GACd;EAEF,OAAO,cAAc,MAAM;CAC7B;CAEA,MAAM,iBACJ,oBAAoB,UAChB,QAAQ,IACR,EAAE,GAAG,cAAc,MAAM,mBAAmB;CAElD,MAAM,6BAA6B,EAAE,GAAG,cAAc,MAAM,mBAAmB;CAE/E,OAAO;EACL;EACA;EACA,yBAAyB,cAAc,MAAM;EAC7C,gBAAgB,cAAc;EAC9B,yBAAyB,cAAc,MAAM;EAC7C;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,SAAS,cAAc;CACzB;AACF"}
|
|
@@ -59,12 +59,22 @@ function isDeepEqualValue(a, b, depth, budget) {
|
|
|
59
59
|
function applySnapshotUpdate(snapshot, path, value, op, options) {
|
|
60
60
|
var _options$cloneValue;
|
|
61
61
|
const cloneValue = (_options$cloneValue = options === null || options === void 0 ? void 0 : options.cloneValue) !== null && _options$cloneValue !== void 0 ? _options$cloneValue : true;
|
|
62
|
+
const clonedParents = options === null || options === void 0 ? void 0 : options.clonedParents;
|
|
62
63
|
const segments = path.split(".").filter(Boolean);
|
|
63
64
|
if (!segments.length) return;
|
|
65
|
+
clonedParents === null || clonedParents === void 0 || clonedParents.add(snapshot);
|
|
64
66
|
let current = snapshot;
|
|
65
67
|
for (let i = 0; i < segments.length - 1; i++) {
|
|
66
68
|
const key = segments[i];
|
|
67
|
-
|
|
69
|
+
const child = current[key];
|
|
70
|
+
if (child == null || typeof child !== "object") {
|
|
71
|
+
current[key] = {};
|
|
72
|
+
clonedParents === null || clonedParents === void 0 || clonedParents.add(current[key]);
|
|
73
|
+
} else if (clonedParents && !clonedParents.has(child)) {
|
|
74
|
+
const clonedChild = Array.isArray(child) ? child.slice() : { ...child };
|
|
75
|
+
current[key] = clonedChild;
|
|
76
|
+
clonedParents.add(clonedChild);
|
|
77
|
+
}
|
|
68
78
|
current = current[key];
|
|
69
79
|
}
|
|
70
80
|
const leaf = segments[segments.length - 1];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot.mjs","names":[],"sources":["../../../../../src/runtime/app/setData/snapshot.ts"],"sourcesContent":["import { isReactive, toRaw } from '../../../reactivity'\nimport { hasOwn } from '../../../utils'\nimport { toPlain } from '../../diff'\n\nexport function isPlainObjectLike(value: any) {\n if (value == null || typeof value !== 'object') {\n return false\n }\n const proto = Object.getPrototypeOf(value)\n return proto === Object.prototype || proto === null\n}\n\nexport function normalizeSetDataValue<T>(value: T): T | null {\n return value === undefined ? null : value\n}\n\nexport function cloneSnapshotValue<T>(value: T): T {\n if (Array.isArray(value)) {\n return value.map(item => cloneSnapshotValue(item)) as T\n }\n if (!isPlainObjectLike(value)) {\n return value\n }\n // 这里的快照对象会继续进入 setData / WXML / DevTools 热重载链路。\n // 不能使用 Object.create(null),否则微信运行时内部直接调用 hasOwnProperty 时会报错。\n const out: Record<string, any> = {}\n for (const key of Object.keys(value as Record<string, any>)) {\n out[key] = cloneSnapshotValue((value as Record<string, any>)[key])\n }\n return out as T\n}\n\nexport function isShallowEqualValue(a: any, b: any): boolean {\n if (Object.is(a, b)) {\n return true\n }\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) {\n return false\n }\n for (let i = 0; i < a.length; i++) {\n if (!Object.is(a[i], b[i])) {\n return false\n }\n }\n return true\n }\n if (!isPlainObjectLike(a) || !isPlainObjectLike(b)) {\n return false\n }\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 k of aKeys) {\n if (!hasOwn(b, k)) {\n return false\n }\n if (!Object.is(a[k], b[k])) {\n return false\n }\n }\n return true\n}\n\nexport function isDeepEqualValue(\n a: any,\n b: any,\n depth: number,\n budget: { keys: number },\n): boolean {\n if (Object.is(a, b)) {\n return true\n }\n if (depth <= 0) {\n return false\n }\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) {\n return false\n }\n for (let i = 0; i < a.length; i++) {\n if (!isDeepEqualValue(a[i], b[i], depth - 1, budget)) {\n return false\n }\n }\n return true\n }\n if (!isPlainObjectLike(a) || !isPlainObjectLike(b)) {\n return false\n }\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 k of aKeys) {\n budget.keys -= 1\n if (budget.keys <= 0) {\n return false\n }\n if (!hasOwn(b, k)) {\n return false\n }\n if (!isDeepEqualValue(a[k], b[k], depth - 1, budget)) {\n return false\n }\n }\n return true\n}\n\nexport function applySnapshotUpdate(\n snapshot: Record<string, any>,\n path: string,\n value: any,\n op: 'set' | 'delete',\n options?: { cloneValue?: boolean },\n) {\n const cloneValue = options?.cloneValue ?? true\n const segments = path.split('.').filter(Boolean)\n if (!segments.length) {\n return\n }\n let current: any = snapshot\n for (let i = 0; i < segments.length - 1; i++) {\n const key = segments[i]\n
|
|
1
|
+
{"version":3,"file":"snapshot.mjs","names":[],"sources":["../../../../../src/runtime/app/setData/snapshot.ts"],"sourcesContent":["import { isReactive, toRaw } from '../../../reactivity'\nimport { hasOwn } from '../../../utils'\nimport { toPlain } from '../../diff'\n\nexport function isPlainObjectLike(value: any) {\n if (value == null || typeof value !== 'object') {\n return false\n }\n const proto = Object.getPrototypeOf(value)\n return proto === Object.prototype || proto === null\n}\n\nexport function normalizeSetDataValue<T>(value: T): T | null {\n return value === undefined ? null : value\n}\n\nexport function cloneSnapshotValue<T>(value: T): T {\n if (Array.isArray(value)) {\n return value.map(item => cloneSnapshotValue(item)) as T\n }\n if (!isPlainObjectLike(value)) {\n return value\n }\n // 这里的快照对象会继续进入 setData / WXML / DevTools 热重载链路。\n // 不能使用 Object.create(null),否则微信运行时内部直接调用 hasOwnProperty 时会报错。\n const out: Record<string, any> = {}\n for (const key of Object.keys(value as Record<string, any>)) {\n out[key] = cloneSnapshotValue((value as Record<string, any>)[key])\n }\n return out as T\n}\n\nexport function isShallowEqualValue(a: any, b: any): boolean {\n if (Object.is(a, b)) {\n return true\n }\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) {\n return false\n }\n for (let i = 0; i < a.length; i++) {\n if (!Object.is(a[i], b[i])) {\n return false\n }\n }\n return true\n }\n if (!isPlainObjectLike(a) || !isPlainObjectLike(b)) {\n return false\n }\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 k of aKeys) {\n if (!hasOwn(b, k)) {\n return false\n }\n if (!Object.is(a[k], b[k])) {\n return false\n }\n }\n return true\n}\n\nexport function isDeepEqualValue(\n a: any,\n b: any,\n depth: number,\n budget: { keys: number },\n): boolean {\n if (Object.is(a, b)) {\n return true\n }\n if (depth <= 0) {\n return false\n }\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) {\n return false\n }\n for (let i = 0; i < a.length; i++) {\n if (!isDeepEqualValue(a[i], b[i], depth - 1, budget)) {\n return false\n }\n }\n return true\n }\n if (!isPlainObjectLike(a) || !isPlainObjectLike(b)) {\n return false\n }\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 k of aKeys) {\n budget.keys -= 1\n if (budget.keys <= 0) {\n return false\n }\n if (!hasOwn(b, k)) {\n return false\n }\n if (!isDeepEqualValue(a[k], b[k], depth - 1, budget)) {\n return false\n }\n }\n return true\n}\n\nexport function applySnapshotUpdate(\n snapshot: Record<string, any>,\n path: string,\n value: any,\n op: 'set' | 'delete',\n options?: { cloneValue?: boolean, clonedParents?: WeakSet<object> },\n) {\n const cloneValue = options?.cloneValue ?? true\n const clonedParents = options?.clonedParents\n const segments = path.split('.').filter(Boolean)\n if (!segments.length) {\n return\n }\n clonedParents?.add(snapshot)\n let current: any = snapshot\n for (let i = 0; i < segments.length - 1; i++) {\n const key = segments[i]\n const child = current[key]\n if (child == null || typeof child !== 'object') {\n // 中间节点同样会被同步到已派发快照并可能参与视图层更新,必须保持普通对象原型。\n current[key] = {}\n clonedParents?.add(current[key])\n }\n else if (clonedParents && !clonedParents.has(child)) {\n const clonedChild = Array.isArray(child) ? child.slice() : { ...child }\n current[key] = clonedChild\n clonedParents.add(clonedChild)\n }\n current = current[key]\n }\n const leaf = segments[segments.length - 1]!\n if (op === 'delete') {\n try {\n delete current[leaf]\n }\n catch {\n current[leaf] = null\n }\n }\n else {\n current[leaf] = cloneValue ? cloneSnapshotValue(value) : value\n }\n}\n\nexport function collectSnapshot(options: {\n state: Record<string, any>\n setupState?: Record<string, any>\n computedRefs: Record<string, { value: any }>\n includeComputed: boolean\n shouldIncludeKey: (key: string) => boolean\n plainCache: WeakMap<object, { version: number, value: any }>\n plainCacheEligibility?: WeakMap<object, boolean>\n toPlainMaxDepth: number\n toPlainMaxKeys: number\n includeFunctions?: boolean\n functionPaths?: string[]\n}) {\n const {\n state,\n setupState,\n computedRefs,\n includeComputed,\n shouldIncludeKey,\n plainCache,\n plainCacheEligibility,\n toPlainMaxDepth,\n toPlainMaxKeys,\n includeFunctions = false,\n functionPaths = [],\n } = options\n const seen = new WeakMap<object, any>()\n // collectSnapshot 的返回值会被 owner snapshot / patch scheduler 复用。\n // 后续维护不要改回 null-prototype 对象,否则热重载下会再次触发 hasOwnProperty 兼容问题。\n const out: Record<string, any> = {}\n const budget = Number.isFinite(toPlainMaxKeys) ? { keys: toPlainMaxKeys } : undefined\n\n const rawState = (isReactive(state) ? toRaw(state as any) : state) as Record<string, any>\n const rawSetupState = setupState && typeof setupState === 'object'\n ? (isReactive(setupState) ? toRaw(setupState as any) : setupState)\n : undefined\n const stateKeys = Object.keys(rawState)\n const setupStateKeys = rawSetupState ? Object.keys(rawSetupState) : []\n const computedKeys = includeComputed ? Object.keys(computedRefs) : []\n\n for (const key of stateKeys) {\n if (!shouldIncludeKey(key)) {\n continue\n }\n out[key] = toPlain(rawState[key], seen, { cache: plainCache, cacheEligibility: plainCacheEligibility, maxDepth: toPlainMaxDepth, includeFunctions, functionPaths, _budget: budget, _path: key })\n }\n\n for (const key of setupStateKeys) {\n if (!shouldIncludeKey(key)) {\n continue\n }\n out[key] = toPlain(rawSetupState![key], seen, { cache: plainCache, cacheEligibility: plainCacheEligibility, maxDepth: toPlainMaxDepth, includeFunctions, functionPaths, _budget: budget, _path: key })\n }\n\n for (const key of computedKeys) {\n if (!shouldIncludeKey(key)) {\n continue\n }\n out[key] = toPlain(computedRefs[key].value, seen, { cache: plainCache, cacheEligibility: plainCacheEligibility, maxDepth: toPlainMaxDepth, includeFunctions, functionPaths, _budget: budget, _path: key })\n }\n\n return out\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ComputedDefinitions, MethodDefinitions } from "./types/core.mjs";
|
|
2
|
+
import { RuntimeApp } from "./types/runtime.mjs";
|
|
3
|
+
import { CreateAppOptions } from "./types/options.mjs";
|
|
4
|
+
import "./types.mjs";
|
|
5
|
+
//#region src/runtime/app.d.ts
|
|
6
|
+
export declare function createApp<D extends object, C extends ComputedDefinitions, M extends MethodDefinitions>(options: CreateAppOptions<D, C, M>): RuntimeApp<D, C, M>;
|
|
7
|
+
//#endregion
|
|
8
|
+
//# sourceMappingURL=app.d.mts.map
|
package/dist/dev/runtime/app.mjs
CHANGED
|
@@ -1,17 +1,28 @@
|
|
|
1
1
|
import { getMiniProgramGlobalObject } from "./platform.mjs";
|
|
2
|
+
import { INTERNAL_DEFAULTS_SCOPE_KEY, applyWevuAppDefaults } from "./defaults.mjs";
|
|
3
|
+
import { isSetDataHighFrequencyWarningRequested, requireRuntimeCapability } from "./capabilities.mjs";
|
|
4
|
+
import { ensureRuntimeAppProvides, setRuntimeAppProvidedValue } from "./provideContext.mjs";
|
|
2
5
|
import { version } from "../version.mjs";
|
|
6
|
+
import { resolveBindingManifest } from "./bindingManifest.mjs";
|
|
3
7
|
import { createRuntimeMount } from "./app/mount.mjs";
|
|
4
8
|
import { setPendingRuntimeAppRegistration } from "./app/pending.mjs";
|
|
5
|
-
import { INTERNAL_DEFAULTS_SCOPE_KEY, applyWevuAppDefaults } from "./defaults.mjs";
|
|
6
|
-
import { ensureRuntimeAppProvides, setRuntimeAppProvidedValue } from "./provideContext.mjs";
|
|
7
9
|
import { registerApp } from "./register/app.mjs";
|
|
10
|
+
import { WEVU_BINDING_MANIFEST_KEY, WEVU_INLINE_HANDLER, WEVU_INLINE_MAP_KEY, WEVU_SCOPED_SLOT_OWNER_REQUIRED_KEY, WEVU_SLOT_OWNER_ID_KEY } from "@weapp-core/constants";
|
|
8
11
|
|
|
9
12
|
//#region src/runtime/app.ts
|
|
10
13
|
function createApp(options) {
|
|
11
14
|
const defaultsScope = options[INTERNAL_DEFAULTS_SCOPE_KEY];
|
|
12
|
-
const { [INTERNAL_DEFAULTS_SCOPE_KEY]: _ignoredDefaultsScope, data, computed: computedOptions, methods, setData: setDataOptions, watch: appWatch, setup: appSetup, ...mpOptions } = defaultsScope === "component" ? options : applyWevuAppDefaults(options);
|
|
15
|
+
const { [INTERNAL_DEFAULTS_SCOPE_KEY]: _ignoredDefaultsScope, [WEVU_BINDING_MANIFEST_KEY]: rawBindingManifest, [WEVU_SCOPED_SLOT_OWNER_REQUIRED_KEY]: scopedSlotOwnerRequired, data, computed: computedOptions, methods, setData: setDataOptions, watch: appWatch, setup: appSetup, ...mpOptions } = defaultsScope === "component" ? options : applyWevuAppDefaults(options);
|
|
16
|
+
const bindingManifest = resolveBindingManifest(rawBindingManifest);
|
|
13
17
|
const resolvedMethods = methods !== null && methods !== void 0 ? methods : {};
|
|
14
18
|
const resolvedComputed = computedOptions !== null && computedOptions !== void 0 ? computedOptions : {};
|
|
19
|
+
const hasScopedSlotBindings = scopedSlotOwnerRequired === true || Array.isArray(setDataOptions === null || setDataOptions === void 0 ? void 0 : setDataOptions.pick) && setDataOptions.pick.includes(WEVU_SLOT_OWNER_ID_KEY);
|
|
20
|
+
const methodRecord = resolvedMethods;
|
|
21
|
+
const inlineMap = methodRecord[WEVU_INLINE_MAP_KEY];
|
|
22
|
+
if (Object.prototype.hasOwnProperty.call(methodRecord, WEVU_INLINE_MAP_KEY) && inlineMap && typeof inlineMap === "object" && Object.keys(inlineMap).length > 0 && typeof methodRecord[WEVU_INLINE_HANDLER] !== "function" && typeof mpOptions[WEVU_INLINE_HANDLER] !== "function") requireRuntimeCapability("inlineEvents", "createApp(inline event metadata)");
|
|
23
|
+
if ((setDataOptions === null || setDataOptions === void 0 ? void 0 : setDataOptions.strategy) === "patch") requireRuntimeCapability("patchStrategy", "createApp(setData.strategy=\"patch\")");
|
|
24
|
+
if (isSetDataHighFrequencyWarningRequested(setDataOptions === null || setDataOptions === void 0 ? void 0 : setDataOptions.highFrequencyWarning)) requireRuntimeCapability("setDataHighFrequencyWarning", "createApp(setData.highFrequencyWarning)");
|
|
25
|
+
if (hasScopedSlotBindings) requireRuntimeCapability("scopedSlots", "createApp(scoped-slot bindings)");
|
|
15
26
|
const installedPlugins = /* @__PURE__ */ new Set();
|
|
16
27
|
const appUnmountCleanups = /* @__PURE__ */ new Set();
|
|
17
28
|
let appUnmounted = false;
|
|
@@ -22,7 +33,8 @@ function createApp(options) {
|
|
|
22
33
|
resolvedComputed,
|
|
23
34
|
resolvedMethods,
|
|
24
35
|
appConfig,
|
|
25
|
-
setDataOptions
|
|
36
|
+
setDataOptions,
|
|
37
|
+
bindingManifest
|
|
26
38
|
}),
|
|
27
39
|
use(plugin, ...options) {
|
|
28
40
|
if (!plugin || installedPlugins.has(plugin)) return runtimeApp;
|
|
@@ -63,14 +75,14 @@ function createApp(options) {
|
|
|
63
75
|
writable: false
|
|
64
76
|
});
|
|
65
77
|
Object.defineProperty(runtimeApp, "__wevuHasTemplateRuntimeBindings", {
|
|
66
|
-
value:
|
|
78
|
+
value: hasScopedSlotBindings,
|
|
67
79
|
configurable: true,
|
|
68
80
|
enumerable: false,
|
|
69
81
|
writable: false
|
|
70
82
|
});
|
|
71
83
|
} catch (_unused) {
|
|
72
84
|
runtimeApp.__wevuSetDataOptions = setDataOptions;
|
|
73
|
-
runtimeApp.__wevuHasTemplateRuntimeBindings =
|
|
85
|
+
runtimeApp.__wevuHasTemplateRuntimeBindings = hasScopedSlotBindings;
|
|
74
86
|
}
|
|
75
87
|
const registerRuntimeApp = () => {
|
|
76
88
|
const globalObject = getMiniProgramGlobalObject();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.mjs","names":[],"sources":["../../../src/runtime/app.ts"],"sourcesContent":["import type {\n AppConfig,\n ComputedDefinitions,\n CreateAppOptions,\n MethodDefinitions,\n RuntimeApp,\n WevuPlugin,\n} from './types'\nimport { version } from '../version'\nimport { createRuntimeMount } from './app/mount'\nimport { setPendingRuntimeAppRegistration } from './app/pending'\nimport { applyWevuAppDefaults, INTERNAL_DEFAULTS_SCOPE_KEY } from './defaults'\nimport { getMiniProgramGlobalObject } from './platform'\nimport { ensureRuntimeAppProvides, setRuntimeAppProvidedValue } from './provideContext'\nimport { registerApp } from './register'\n\nexport function createApp<D extends object, C extends ComputedDefinitions, M extends MethodDefinitions>(\n options: CreateAppOptions<D, C, M>,\n): RuntimeApp<D, C, M> {\n const defaultsScope = (options as any)[INTERNAL_DEFAULTS_SCOPE_KEY] as string | undefined\n const resolvedOptions = defaultsScope === 'component'\n ? options\n : applyWevuAppDefaults(options)\n const {\n [INTERNAL_DEFAULTS_SCOPE_KEY]: _ignoredDefaultsScope,\n data,\n computed: computedOptions,\n methods,\n setData: setDataOptions,\n watch: appWatch,\n setup: appSetup,\n ...mpOptions\n } = resolvedOptions\n const resolvedMethods = methods ?? ({} as M)\n const resolvedComputed = computedOptions ?? ({} as C)\n\n const installedPlugins = new Set<WevuPlugin>()\n const appUnmountCleanups = new Set<() => void>()\n let appUnmounted = false\n const appConfig: AppConfig = { globalProperties: {} }\n const mount = createRuntimeMount<D, C, M>({\n data,\n resolvedComputed,\n resolvedMethods,\n appConfig,\n setDataOptions,\n })\n\n const runtimeApp: RuntimeApp<D, C, M> = {\n mount,\n use(plugin: WevuPlugin, ...options: any[]) {\n if (!plugin || installedPlugins.has(plugin)) {\n return runtimeApp\n }\n installedPlugins.add(plugin)\n if (typeof plugin === 'function') {\n plugin(runtimeApp, ...options)\n }\n else if (typeof plugin.install === 'function') {\n plugin.install(runtimeApp, ...options)\n }\n else {\n throw new TypeError('插件必须是函数,或包含 install 方法的对象')\n }\n return runtimeApp\n },\n provide(key: any, value: any) {\n setRuntimeAppProvidedValue(runtimeApp, key, value, {\n syncGlobal: defaultsScope !== 'component',\n })\n return runtimeApp\n },\n onUnmount(cleanup: () => void) {\n if (typeof cleanup !== 'function') {\n throw new TypeError('onUnmount 只接受函数')\n }\n if (appUnmounted) {\n cleanup()\n return runtimeApp\n }\n appUnmountCleanups.add(cleanup)\n return runtimeApp\n },\n unmount() {\n if (appUnmounted) {\n return\n }\n appUnmounted = true\n for (const cleanup of appUnmountCleanups) {\n cleanup()\n }\n appUnmountCleanups.clear()\n },\n config: appConfig,\n version,\n }\n\n try {\n ensureRuntimeAppProvides(runtimeApp)\n Object.defineProperty(runtimeApp as Record<string, any>, '__wevuSetDataOptions', {\n value: setDataOptions,\n configurable: true,\n enumerable: false,\n writable: false,\n })\n Object.defineProperty(runtimeApp as Record<string, any>, '__wevuHasTemplateRuntimeBindings', {\n value:
|
|
1
|
+
{"version":3,"file":"app.mjs","names":[],"sources":["../../../src/runtime/app.ts"],"sourcesContent":["import type { WevuRuntimeBindingManifestV1 } from '@weapp-core/constants'\nimport type {\n AppConfig,\n ComputedDefinitions,\n CreateAppOptions,\n MethodDefinitions,\n RuntimeApp,\n WevuPlugin,\n} from './types'\nimport {\n WEVU_BINDING_MANIFEST_KEY,\n WEVU_INLINE_HANDLER,\n WEVU_INLINE_MAP_KEY,\n WEVU_SCOPED_SLOT_OWNER_REQUIRED_KEY,\n WEVU_SLOT_OWNER_ID_KEY,\n} from '@weapp-core/constants'\nimport { version } from '../version'\nimport { createRuntimeMount } from './app/mount'\nimport { setPendingRuntimeAppRegistration } from './app/pending'\nimport { resolveBindingManifest } from './bindingManifest'\nimport { isSetDataHighFrequencyWarningRequested, requireRuntimeCapability } from './capabilities'\nimport { applyWevuAppDefaults, INTERNAL_DEFAULTS_SCOPE_KEY } from './defaults'\nimport { getMiniProgramGlobalObject } from './platform'\nimport { ensureRuntimeAppProvides, setRuntimeAppProvidedValue } from './provideContext'\nimport { registerApp } from './register'\n\nexport function createApp<D extends object, C extends ComputedDefinitions, M extends MethodDefinitions>(\n options: CreateAppOptions<D, C, M>,\n): RuntimeApp<D, C, M> {\n const defaultsScope = (options as any)[INTERNAL_DEFAULTS_SCOPE_KEY] as string | undefined\n const resolvedOptions = defaultsScope === 'component'\n ? options\n : applyWevuAppDefaults(options)\n const {\n [INTERNAL_DEFAULTS_SCOPE_KEY]: _ignoredDefaultsScope,\n [WEVU_BINDING_MANIFEST_KEY]: rawBindingManifest,\n [WEVU_SCOPED_SLOT_OWNER_REQUIRED_KEY]: scopedSlotOwnerRequired,\n data,\n computed: computedOptions,\n methods,\n setData: setDataOptions,\n watch: appWatch,\n setup: appSetup,\n ...mpOptions\n } = resolvedOptions as typeof resolvedOptions & { [WEVU_SCOPED_SLOT_OWNER_REQUIRED_KEY]?: boolean }\n const bindingManifest: WevuRuntimeBindingManifestV1 | undefined = resolveBindingManifest(rawBindingManifest)\n const resolvedMethods = methods ?? ({} as M)\n const resolvedComputed = computedOptions ?? ({} as C)\n const hasScopedSlotBindings = scopedSlotOwnerRequired === true\n || (Array.isArray(setDataOptions?.pick) && setDataOptions.pick.includes(WEVU_SLOT_OWNER_ID_KEY))\n const methodRecord = resolvedMethods as unknown as Record<string, unknown>\n const inlineMap = methodRecord[WEVU_INLINE_MAP_KEY]\n const hasInlineMetadata = Object.prototype.hasOwnProperty.call(methodRecord, WEVU_INLINE_MAP_KEY)\n && inlineMap\n && typeof inlineMap === 'object'\n && Object.keys(inlineMap).length > 0\n if (\n hasInlineMetadata\n && typeof methodRecord[WEVU_INLINE_HANDLER] !== 'function'\n && typeof (mpOptions as Record<string, unknown>)[WEVU_INLINE_HANDLER] !== 'function'\n ) {\n requireRuntimeCapability('inlineEvents', 'createApp(inline event metadata)')\n }\n if (setDataOptions?.strategy === 'patch') {\n requireRuntimeCapability('patchStrategy', 'createApp(setData.strategy=\"patch\")')\n }\n if (isSetDataHighFrequencyWarningRequested(setDataOptions?.highFrequencyWarning)) {\n requireRuntimeCapability('setDataHighFrequencyWarning', 'createApp(setData.highFrequencyWarning)')\n }\n if (hasScopedSlotBindings) {\n requireRuntimeCapability('scopedSlots', 'createApp(scoped-slot bindings)')\n }\n\n const installedPlugins = new Set<WevuPlugin>()\n const appUnmountCleanups = new Set<() => void>()\n let appUnmounted = false\n const appConfig: AppConfig = { globalProperties: {} }\n const mount = createRuntimeMount<D, C, M>({\n data,\n resolvedComputed,\n resolvedMethods,\n appConfig,\n setDataOptions,\n bindingManifest,\n })\n\n const runtimeApp: RuntimeApp<D, C, M> = {\n mount,\n use(plugin: WevuPlugin, ...options: any[]) {\n if (!plugin || installedPlugins.has(plugin)) {\n return runtimeApp\n }\n installedPlugins.add(plugin)\n if (typeof plugin === 'function') {\n plugin(runtimeApp, ...options)\n }\n else if (typeof plugin.install === 'function') {\n plugin.install(runtimeApp, ...options)\n }\n else {\n throw new TypeError('插件必须是函数,或包含 install 方法的对象')\n }\n return runtimeApp\n },\n provide(key: any, value: any) {\n setRuntimeAppProvidedValue(runtimeApp, key, value, {\n syncGlobal: defaultsScope !== 'component',\n })\n return runtimeApp\n },\n onUnmount(cleanup: () => void) {\n if (typeof cleanup !== 'function') {\n throw new TypeError('onUnmount 只接受函数')\n }\n if (appUnmounted) {\n cleanup()\n return runtimeApp\n }\n appUnmountCleanups.add(cleanup)\n return runtimeApp\n },\n unmount() {\n if (appUnmounted) {\n return\n }\n appUnmounted = true\n for (const cleanup of appUnmountCleanups) {\n cleanup()\n }\n appUnmountCleanups.clear()\n },\n config: appConfig,\n version,\n }\n\n try {\n ensureRuntimeAppProvides(runtimeApp)\n Object.defineProperty(runtimeApp as Record<string, any>, '__wevuSetDataOptions', {\n value: setDataOptions,\n configurable: true,\n enumerable: false,\n writable: false,\n })\n Object.defineProperty(runtimeApp as Record<string, any>, '__wevuHasTemplateRuntimeBindings', {\n value: hasScopedSlotBindings,\n configurable: true,\n enumerable: false,\n writable: false,\n })\n }\n catch {\n ;(runtimeApp as any).__wevuSetDataOptions = setDataOptions\n ;(runtimeApp as any).__wevuHasTemplateRuntimeBindings = hasScopedSlotBindings\n }\n\n const registerRuntimeApp = () => {\n const globalObject = getMiniProgramGlobalObject()\n const appRegisterKey = '__wevuAppRegistered'\n const hasRegistered = globalObject ? Boolean(globalObject[appRegisterKey]) : false\n // 开发者工具/HMR 可能重复执行入口,避免多次 App() 导致 AppService 事件监听累积。\n if (!hasRegistered) {\n if (globalObject) {\n globalObject[appRegisterKey] = true\n }\n // 若检测到全局 App 构造器则自动注册小程序 App\n registerApp<D, C, M>(runtimeApp, (methods ?? {}) as any, appWatch as any, appSetup as any, mpOptions as any)\n }\n }\n\n if (defaultsScope !== 'component' && typeof App === 'function') {\n registerRuntimeApp()\n }\n else if (defaultsScope !== 'component') {\n setPendingRuntimeAppRegistration({\n app: runtimeApp,\n register: registerRuntimeApp,\n })\n }\n\n return runtimeApp\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
//#region src/runtime/bindingManifest.ts
|
|
2
|
+
const BINDING_UPDATE_MODES = {
|
|
3
|
+
"exact-path": true,
|
|
4
|
+
"snapshot-fallback": true,
|
|
5
|
+
"top-level": true
|
|
6
|
+
};
|
|
7
|
+
function isStringArray(value) {
|
|
8
|
+
return Array.isArray(value) && value.every((item) => typeof item === "string");
|
|
9
|
+
}
|
|
10
|
+
function isFiniteInteger(value) {
|
|
11
|
+
return typeof value === "number" && Number.isFinite(value) && Number.isInteger(value);
|
|
12
|
+
}
|
|
13
|
+
function isSourcePosition(value) {
|
|
14
|
+
if (!value || typeof value !== "object") return false;
|
|
15
|
+
const position = value;
|
|
16
|
+
return isFiniteInteger(position.offset) && position.offset >= 0 && isFiniteInteger(position.line) && position.line >= 1 && isFiniteInteger(position.column) && position.column >= 1;
|
|
17
|
+
}
|
|
18
|
+
function isSourceLocation(value) {
|
|
19
|
+
if (!value || typeof value !== "object") return false;
|
|
20
|
+
const location = value;
|
|
21
|
+
const start = location.start;
|
|
22
|
+
const end = location.end;
|
|
23
|
+
return isSourcePosition(start) && isSourcePosition(end) && end.offset >= start.offset;
|
|
24
|
+
}
|
|
25
|
+
function hasValidFeatures(value) {
|
|
26
|
+
return Object.values(value).every((feature) => feature === true);
|
|
27
|
+
}
|
|
28
|
+
function isBindingRecord(value) {
|
|
29
|
+
if (!value || typeof value !== "object") return false;
|
|
30
|
+
const binding = value;
|
|
31
|
+
return typeof binding.id === "string" && binding.id.length > 0 && typeof binding.outputPath === "string" && binding.outputPath.length > 0 && (binding.sourceFile === void 0 || typeof binding.sourceFile === "string" && binding.sourceFile.length > 0) && (binding.updateMode === void 0 || typeof binding.updateMode === "string" && BINDING_UPDATE_MODES[binding.updateMode] === true) && (binding.sourceRoots === void 0 || isStringArray(binding.sourceRoots)) && (binding.sourceLocation === void 0 || isSourceLocation(binding.sourceLocation));
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* 仅接受当前运行时理解的 Binding Manifest 版本。
|
|
35
|
+
*/
|
|
36
|
+
function resolveBindingManifest(value) {
|
|
37
|
+
if (!value || typeof value !== "object") return;
|
|
38
|
+
const manifest = value;
|
|
39
|
+
if (manifest.version !== 1 || typeof manifest.sourceFile !== "string" || !Array.isArray(manifest.bindings) || !manifest.bindings.every(isBindingRecord) || manifest.features !== void 0 && (!manifest.features || typeof manifest.features !== "object" || Array.isArray(manifest.features) || !hasValidFeatures(manifest.features))) return;
|
|
40
|
+
return manifest;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* 判断清单是否声明了指定输出路径。
|
|
44
|
+
*/
|
|
45
|
+
function hasBindingOutputPath(manifest, outputPath) {
|
|
46
|
+
var _manifest$bindings$so;
|
|
47
|
+
return (_manifest$bindings$so = manifest === null || manifest === void 0 ? void 0 : manifest.bindings.some((binding) => binding.outputPath === outputPath)) !== null && _manifest$bindings$so !== void 0 ? _manifest$bindings$so : false;
|
|
48
|
+
}
|
|
49
|
+
function normalizeBindingPath(path) {
|
|
50
|
+
return path.replace(/\[(?:'([^']+)'|"([^"]+)"|([^\]]+))\]/g, (_match, single, double, bare) => {
|
|
51
|
+
var _ref;
|
|
52
|
+
return `.${(_ref = single !== null && single !== void 0 ? single : double) !== null && _ref !== void 0 ? _ref : bare}`;
|
|
53
|
+
}).replace(/^\./, "");
|
|
54
|
+
}
|
|
55
|
+
function topLevelPath(path) {
|
|
56
|
+
var _normalizeBindingPath;
|
|
57
|
+
return (_normalizeBindingPath = normalizeBindingPath(path).split(".", 1)[0]) !== null && _normalizeBindingPath !== void 0 ? _normalizeBindingPath : "";
|
|
58
|
+
}
|
|
59
|
+
function pathsOverlap(left, right) {
|
|
60
|
+
const normalizedLeft = normalizeBindingPath(left);
|
|
61
|
+
const normalizedRight = normalizeBindingPath(right);
|
|
62
|
+
return normalizedLeft === normalizedRight || normalizedLeft.startsWith(`${normalizedRight}.`) || normalizedRight.startsWith(`${normalizedLeft}.`);
|
|
63
|
+
}
|
|
64
|
+
function getBindingUpdateMode(binding) {
|
|
65
|
+
var _binding$updateMode;
|
|
66
|
+
return (_binding$updateMode = binding.updateMode) !== null && _binding$updateMode !== void 0 ? _binding$updateMode : "exact-path";
|
|
67
|
+
}
|
|
68
|
+
function matchesBindingPath(binding, path) {
|
|
69
|
+
var _binding$sourceRoots;
|
|
70
|
+
if (!path) return false;
|
|
71
|
+
const updateMode = getBindingUpdateMode(binding);
|
|
72
|
+
if (updateMode === "snapshot-fallback" && binding.outputPath === "*") return true;
|
|
73
|
+
if (updateMode === "exact-path") return pathsOverlap(binding.outputPath, path);
|
|
74
|
+
const pathRoot = topLevelPath(path);
|
|
75
|
+
if (topLevelPath(binding.outputPath) === pathRoot) return true;
|
|
76
|
+
return updateMode === "snapshot-fallback" && ((_binding$sourceRoots = binding.sourceRoots) !== null && _binding$sourceRoots !== void 0 ? _binding$sourceRoots : []).some((sourceRoot) => topLevelPath(sourceRoot) === pathRoot);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* 按实际 setData 路径惰性解析相关模板绑定,保持清单顺序并按 id 去重。
|
|
80
|
+
*/
|
|
81
|
+
function resolveBindingDiagnostics(manifest, paths, wholeSnapshotFallback = false) {
|
|
82
|
+
const payloadPaths = [...paths];
|
|
83
|
+
const seenIds = /* @__PURE__ */ new Set();
|
|
84
|
+
const diagnostics = [];
|
|
85
|
+
for (const binding of manifest.bindings) {
|
|
86
|
+
var _binding$sourceFile;
|
|
87
|
+
if (seenIds.has(binding.id)) continue;
|
|
88
|
+
const updateMode = getBindingUpdateMode(binding);
|
|
89
|
+
if (!(payloadPaths.length > 0 ? payloadPaths.some((path) => matchesBindingPath(binding, path)) : wholeSnapshotFallback && updateMode === "snapshot-fallback")) continue;
|
|
90
|
+
seenIds.add(binding.id);
|
|
91
|
+
const diagnostic = {
|
|
92
|
+
id: binding.id,
|
|
93
|
+
outputPath: binding.outputPath,
|
|
94
|
+
updateMode,
|
|
95
|
+
sourceFile: (_binding$sourceFile = binding.sourceFile) !== null && _binding$sourceFile !== void 0 ? _binding$sourceFile : manifest.sourceFile
|
|
96
|
+
};
|
|
97
|
+
if (binding.sourceLocation) diagnostic.sourceLocation = binding.sourceLocation;
|
|
98
|
+
diagnostics.push(diagnostic);
|
|
99
|
+
}
|
|
100
|
+
return diagnostics;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
//#endregion
|
|
104
|
+
export { hasBindingOutputPath, resolveBindingDiagnostics, resolveBindingManifest };
|
|
105
|
+
//# sourceMappingURL=bindingManifest.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bindingManifest.mjs","names":[],"sources":["../../../src/runtime/bindingManifest.ts"],"sourcesContent":["import type {\n WevuBindingSourcePositionV1,\n WevuBindingUpdateMode,\n WevuRuntimeBindingManifestV1,\n WevuRuntimeBindingRecordV1,\n} from '@weapp-core/constants'\nimport type { SetDataBindingDiagnostic } from './types'\n\nconst BINDING_UPDATE_MODES: Record<string, true> = {\n 'exact-path': true,\n 'snapshot-fallback': true,\n 'top-level': true,\n}\n\nfunction isStringArray(value: unknown): value is string[] {\n return Array.isArray(value) && value.every(item => typeof item === 'string')\n}\nfunction isFiniteInteger(value: unknown): value is number {\n return typeof value === 'number' && Number.isFinite(value) && Number.isInteger(value)\n}\n\nfunction isSourcePosition(value: unknown): value is WevuBindingSourcePositionV1 {\n if (!value || typeof value !== 'object') {\n return false\n }\n const position = value as Record<string, unknown>\n return isFiniteInteger(position.offset)\n && position.offset >= 0\n && isFiniteInteger(position.line)\n && position.line >= 1\n && isFiniteInteger(position.column)\n && position.column >= 1\n}\n\nfunction isSourceLocation(value: unknown) {\n if (!value || typeof value !== 'object') {\n return false\n }\n const location = value as Record<string, unknown>\n const start = location.start\n const end = location.end\n return isSourcePosition(start)\n && isSourcePosition(end)\n && end.offset >= start.offset\n}\n\nfunction hasValidFeatures(value: object) {\n return Object.values(value).every(feature => feature === true)\n}\n\nfunction isBindingRecord(value: unknown): value is WevuRuntimeBindingRecordV1 {\n if (!value || typeof value !== 'object') {\n return false\n }\n const binding = value as Partial<WevuRuntimeBindingRecordV1>\n return typeof binding.id === 'string'\n && binding.id.length > 0\n && typeof binding.outputPath === 'string'\n && binding.outputPath.length > 0\n && (binding.sourceFile === undefined\n || (typeof binding.sourceFile === 'string' && binding.sourceFile.length > 0))\n && (binding.updateMode === undefined\n || (typeof binding.updateMode === 'string' && BINDING_UPDATE_MODES[binding.updateMode] === true))\n && (binding.sourceRoots === undefined || isStringArray(binding.sourceRoots))\n && (binding.sourceLocation === undefined || isSourceLocation(binding.sourceLocation))\n}\n\n/**\n * 仅接受当前运行时理解的 Binding Manifest 版本。\n */\nexport function resolveBindingManifest(value: unknown): WevuRuntimeBindingManifestV1 | undefined {\n if (!value || typeof value !== 'object') {\n return undefined\n }\n const manifest = value as Partial<WevuRuntimeBindingManifestV1>\n if (\n manifest.version !== 1\n || typeof manifest.sourceFile !== 'string'\n || !Array.isArray(manifest.bindings)\n || !manifest.bindings.every(isBindingRecord)\n || (manifest.features !== undefined\n && (!manifest.features\n || typeof manifest.features !== 'object'\n || Array.isArray(manifest.features)\n || !hasValidFeatures(manifest.features)))\n ) {\n return undefined\n }\n return manifest as WevuRuntimeBindingManifestV1\n}\n\n/**\n * 判断清单是否声明了指定输出路径。\n */\nexport function hasBindingOutputPath(\n manifest: WevuRuntimeBindingManifestV1 | undefined,\n outputPath: string,\n) {\n return manifest?.bindings.some(binding => binding.outputPath === outputPath) ?? false\n}\n\nfunction normalizeBindingPath(path: string) {\n return path\n .replace(/\\[(?:'([^']+)'|\"([^\"]+)\"|([^\\]]+))\\]/g, (_match, single, double, bare) => `.${single ?? double ?? bare}`)\n .replace(/^\\./, '')\n}\n\nfunction topLevelPath(path: string) {\n return normalizeBindingPath(path).split('.', 1)[0] ?? ''\n}\n\nfunction pathsOverlap(left: string, right: string) {\n const normalizedLeft = normalizeBindingPath(left)\n const normalizedRight = normalizeBindingPath(right)\n return normalizedLeft === normalizedRight\n || normalizedLeft.startsWith(`${normalizedRight}.`)\n || normalizedRight.startsWith(`${normalizedLeft}.`)\n}\n\nfunction getBindingUpdateMode(binding: WevuRuntimeBindingRecordV1): WevuBindingUpdateMode {\n return binding.updateMode ?? 'exact-path'\n}\n\nfunction matchesBindingPath(binding: WevuRuntimeBindingRecordV1, path: string) {\n if (!path) {\n return false\n }\n const updateMode = getBindingUpdateMode(binding)\n if (updateMode === 'snapshot-fallback' && binding.outputPath === '*') {\n return true\n }\n if (updateMode === 'exact-path') {\n return pathsOverlap(binding.outputPath, path)\n }\n\n const pathRoot = topLevelPath(path)\n if (topLevelPath(binding.outputPath) === pathRoot) {\n return true\n }\n return updateMode === 'snapshot-fallback'\n && (binding.sourceRoots ?? []).some(sourceRoot => topLevelPath(sourceRoot) === pathRoot)\n}\n\n/**\n * 按实际 setData 路径惰性解析相关模板绑定,保持清单顺序并按 id 去重。\n */\nexport function resolveBindingDiagnostics(\n manifest: WevuRuntimeBindingManifestV1,\n paths: Iterable<string>,\n wholeSnapshotFallback = false,\n): SetDataBindingDiagnostic[] {\n const payloadPaths = [...paths]\n const seenIds = new Set<string>()\n const diagnostics: SetDataBindingDiagnostic[] = []\n\n for (const binding of manifest.bindings) {\n if (seenIds.has(binding.id)) {\n continue\n }\n const updateMode = getBindingUpdateMode(binding)\n const matches = payloadPaths.length > 0\n ? payloadPaths.some(path => matchesBindingPath(binding, path))\n : wholeSnapshotFallback && updateMode === 'snapshot-fallback'\n if (!matches) {\n continue\n }\n seenIds.add(binding.id)\n const diagnostic: SetDataBindingDiagnostic = {\n id: binding.id,\n outputPath: binding.outputPath,\n updateMode,\n sourceFile: binding.sourceFile ?? manifest.sourceFile,\n }\n if (binding.sourceLocation) {\n diagnostic.sourceLocation = binding.sourceLocation\n }\n diagnostics.push(diagnostic)\n }\n\n return diagnostics\n}\n"],"mappings":";AAQA,MAAM,uBAA6C;CACjD,cAAc;CACd,qBAAqB;CACrB,aAAa;AACf;AAEA,SAAS,cAAc,OAAmC;CACxD,OAAO,MAAM,QAAQ,KAAK,KAAK,MAAM,OAAM,SAAQ,OAAO,SAAS,QAAQ;AAC7E;AACA,SAAS,gBAAgB,OAAiC;CACxD,OAAO,OAAO,UAAU,YAAY,OAAO,SAAS,KAAK,KAAK,OAAO,UAAU,KAAK;AACtF;AAEA,SAAS,iBAAiB,OAAsD;CAC9E,IAAI,CAAC,SAAS,OAAO,UAAU,UAC7B,OAAO;CAET,MAAM,WAAW;CACjB,OAAO,gBAAgB,SAAS,MAAM,KACjC,SAAS,UAAU,KACnB,gBAAgB,SAAS,IAAI,KAC7B,SAAS,QAAQ,KACjB,gBAAgB,SAAS,MAAM,KAC/B,SAAS,UAAU;AAC1B;AAEA,SAAS,iBAAiB,OAAgB;CACxC,IAAI,CAAC,SAAS,OAAO,UAAU,UAC7B,OAAO;CAET,MAAM,WAAW;CACjB,MAAM,QAAQ,SAAS;CACvB,MAAM,MAAM,SAAS;CACrB,OAAO,iBAAiB,KAAK,KACxB,iBAAiB,GAAG,KACpB,IAAI,UAAU,MAAM;AAC3B;AAEA,SAAS,iBAAiB,OAAe;CACvC,OAAO,OAAO,OAAO,KAAK,CAAC,CAAC,OAAM,YAAW,YAAY,IAAI;AAC/D;AAEA,SAAS,gBAAgB,OAAqD;CAC5E,IAAI,CAAC,SAAS,OAAO,UAAU,UAC7B,OAAO;CAET,MAAM,UAAU;CAChB,OAAO,OAAO,QAAQ,OAAO,YACxB,QAAQ,GAAG,SAAS,KACpB,OAAO,QAAQ,eAAe,YAC9B,QAAQ,WAAW,SAAS,MAC3B,QAAQ,eAAe,UACrB,OAAO,QAAQ,eAAe,YAAY,QAAQ,WAAW,SAAS,OACxE,QAAQ,eAAe,UACrB,OAAO,QAAQ,eAAe,YAAY,qBAAqB,QAAQ,gBAAgB,UACzF,QAAQ,gBAAgB,UAAa,cAAc,QAAQ,WAAW,OACtE,QAAQ,mBAAmB,UAAa,iBAAiB,QAAQ,cAAc;AACvF;;;;AAKA,SAAgB,uBAAuB,OAA0D;CAC/F,IAAI,CAAC,SAAS,OAAO,UAAU,UAC7B;CAEF,MAAM,WAAW;CACjB,IACE,SAAS,YAAY,KAClB,OAAO,SAAS,eAAe,YAC/B,CAAC,MAAM,QAAQ,SAAS,QAAQ,KAChC,CAAC,SAAS,SAAS,MAAM,eAAe,KACvC,SAAS,aAAa,WACpB,CAAC,SAAS,YACT,OAAO,SAAS,aAAa,YAC7B,MAAM,QAAQ,SAAS,QAAQ,KAC/B,CAAC,iBAAiB,SAAS,QAAQ,IAE1C;CAEF,OAAO;AACT;;;;AAKA,SAAgB,qBACd,UACA,YACA;;CACA,oFAAO,SAAU,SAAS,MAAK,YAAW,QAAQ,eAAe,UAAU,0EAAK;AAClF;AAEA,SAAS,qBAAqB,MAAc;CAC1C,OAAO,KACJ,QAAQ,0CAA0C,QAAQ,QAAQ,QAAQ,SAAS;;qBAAI,gDAAU,6CAAU;CAAK,CAAC,CAAC,CAClH,QAAQ,OAAO,EAAE;AACtB;AAEA,SAAS,aAAa,MAAc;;CAClC,gCAAO,qBAAqB,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,2EAAM;AACxD;AAEA,SAAS,aAAa,MAAc,OAAe;CACjD,MAAM,iBAAiB,qBAAqB,IAAI;CAChD,MAAM,kBAAkB,qBAAqB,KAAK;CAClD,OAAO,mBAAmB,mBACrB,eAAe,WAAW,GAAG,gBAAgB,EAAE,KAC/C,gBAAgB,WAAW,GAAG,eAAe,EAAE;AACtD;AAEA,SAAS,qBAAqB,SAA4D;;CACxF,8BAAO,QAAQ,+EAAc;AAC/B;AAEA,SAAS,mBAAmB,SAAqC,MAAc;;CAC7E,IAAI,CAAC,MACH,OAAO;CAET,MAAM,aAAa,qBAAqB,OAAO;CAC/C,IAAI,eAAe,uBAAuB,QAAQ,eAAe,KAC/D,OAAO;CAET,IAAI,eAAe,cACjB,OAAO,aAAa,QAAQ,YAAY,IAAI;CAG9C,MAAM,WAAW,aAAa,IAAI;CAClC,IAAI,aAAa,QAAQ,UAAU,MAAM,UACvC,OAAO;CAET,OAAO,eAAe,gDAChB,QAAQ,kFAAe,CAAC,EAAC,CAAE,MAAK,eAAc,aAAa,UAAU,MAAM,QAAQ;AAC3F;;;;AAKA,SAAgB,0BACd,UACA,OACA,wBAAwB,OACI;CAC5B,MAAM,eAAe,CAAC,GAAG,KAAK;CAC9B,MAAM,0BAAU,IAAI,IAAY;CAChC,MAAM,cAA0C,CAAC;CAEjD,KAAK,MAAM,WAAW,SAAS,UAAU;;EACvC,IAAI,QAAQ,IAAI,QAAQ,EAAE,GACxB;EAEF,MAAM,aAAa,qBAAqB,OAAO;EAI/C,IAAI,EAHY,aAAa,SAAS,IAClC,aAAa,MAAK,SAAQ,mBAAmB,SAAS,IAAI,CAAC,IAC3D,yBAAyB,eAAe,sBAE1C;EAEF,QAAQ,IAAI,QAAQ,EAAE;EACtB,MAAM,aAAuC;GAC3C,IAAI,QAAQ;GACZ,YAAY,QAAQ;GACpB;GACA,mCAAY,QAAQ,+EAAc,SAAS;EAC7C;EACA,IAAI,QAAQ,gBACV,WAAW,iBAAiB,QAAQ;EAEtC,YAAY,KAAK,UAAU;CAC7B;CAEA,OAAO;AACT"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { ComputedDefinitions, MethodDefinitions } from "./types/core.mjs";
|
|
2
|
+
import { InternalRuntimeState, RuntimeInstance } from "./types/runtime.mjs";
|
|
3
|
+
import { SetDataSnapshotOptions } from "./types/setData.mjs";
|
|
4
|
+
import "./types.mjs";
|
|
5
|
+
import { SetDataSchedulerOptions } from "./app/setData/scheduler.mjs";
|
|
6
|
+
import { InlineExpressionMap } from "./register/inline.mjs";
|
|
7
|
+
//#region src/runtime/capabilities.d.ts
|
|
8
|
+
export type RuntimeCapabilityName = 'patchStrategy' | 'templateRefs' | 'inlineEvents' | 'setDataHighFrequencyWarning' | 'scopedSlots' | 'layout';
|
|
9
|
+
export interface TemplateRefBinding {
|
|
10
|
+
selector: string;
|
|
11
|
+
inFor: boolean;
|
|
12
|
+
name?: string;
|
|
13
|
+
get?: () => unknown;
|
|
14
|
+
kind?: 'component' | 'element';
|
|
15
|
+
}
|
|
16
|
+
export interface LayoutHostBinding {
|
|
17
|
+
key: string;
|
|
18
|
+
refName?: string;
|
|
19
|
+
selector: string;
|
|
20
|
+
kind?: 'component';
|
|
21
|
+
}
|
|
22
|
+
export interface HighFrequencyWarningMonitorOptions {
|
|
23
|
+
option: SetDataSnapshotOptions['highFrequencyWarning'];
|
|
24
|
+
targetLabel: string;
|
|
25
|
+
isInPageScrollHook?: () => boolean;
|
|
26
|
+
now?: () => number;
|
|
27
|
+
logger?: (message: string) => void;
|
|
28
|
+
}
|
|
29
|
+
export interface SetDataScheduler {
|
|
30
|
+
job: () => void | Promise<void>;
|
|
31
|
+
snapshot: () => Record<string, unknown>;
|
|
32
|
+
cloneLatestSnapshot: () => Record<string, unknown>;
|
|
33
|
+
start?: () => void;
|
|
34
|
+
dispose?: () => void;
|
|
35
|
+
}
|
|
36
|
+
export interface ScopedSlotMountState {
|
|
37
|
+
ownerId: string;
|
|
38
|
+
shouldFlushNativeOwnerId: boolean;
|
|
39
|
+
}
|
|
40
|
+
export interface RuntimeCapabilityRegistry {
|
|
41
|
+
patchStrategy?: {
|
|
42
|
+
createScheduler: (options: SetDataSchedulerOptions) => SetDataScheduler;
|
|
43
|
+
};
|
|
44
|
+
templateRefs?: {
|
|
45
|
+
attachBindings: (target: InternalRuntimeState, bindings: readonly TemplateRefBinding[]) => void;
|
|
46
|
+
hasBindings: (target: InternalRuntimeState) => boolean;
|
|
47
|
+
schedule: (target: InternalRuntimeState, onResolved?: () => void, assignmentTarget?: InternalRuntimeState, onRejected?: (cause: unknown) => void) => void;
|
|
48
|
+
scheduleOwner: (target: InternalRuntimeState) => void;
|
|
49
|
+
clear: (target: InternalRuntimeState, assignmentTarget?: InternalRuntimeState) => void;
|
|
50
|
+
};
|
|
51
|
+
inlineEvents?: {
|
|
52
|
+
handler: (this: InternalRuntimeState, event: unknown) => unknown;
|
|
53
|
+
run: (context: unknown, expression: unknown, event: unknown, map?: InlineExpressionMap) => unknown;
|
|
54
|
+
};
|
|
55
|
+
setDataHighFrequencyWarning?: {
|
|
56
|
+
createMonitor: (options: HighFrequencyWarningMonitorOptions) => (() => void) | undefined;
|
|
57
|
+
};
|
|
58
|
+
scopedSlots?: {
|
|
59
|
+
prepareMount: (target: InternalRuntimeState) => ScopedSlotMountState;
|
|
60
|
+
attachMount: <D extends object, C extends ComputedDefinitions, M extends MethodDefinitions>(target: InternalRuntimeState, runtime: RuntimeInstance<D, C, M>, state: ScopedSlotMountState, deferSnapshot: boolean) => void;
|
|
61
|
+
refresh: (target: InternalRuntimeState, state: ScopedSlotMountState) => void;
|
|
62
|
+
syncNativeOwnerId: (target: InternalRuntimeState, state: ScopedSlotMountState) => void;
|
|
63
|
+
teardown: (target: InternalRuntimeState) => void;
|
|
64
|
+
resolveLifecycleProxy: (target: InternalRuntimeState) => unknown;
|
|
65
|
+
allocateOwnerId: () => string;
|
|
66
|
+
};
|
|
67
|
+
layout?: {
|
|
68
|
+
attachPageSetter: (target: InternalRuntimeState) => void;
|
|
69
|
+
attachHosts: (bindings: readonly LayoutHostBinding[], target: InternalRuntimeState) => void;
|
|
70
|
+
detachHosts: (bindings: readonly LayoutHostBinding[], target: InternalRuntimeState) => void;
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
//#endregion
|
|
74
|
+
export type { SetDataSchedulerOptions };
|
|
75
|
+
//# sourceMappingURL=capabilities.d.mts.map
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
//#region src/runtime/capabilities.ts
|
|
2
|
+
const RUNTIME_SCOPED_SLOT_STATE_KEY = "__wevuScopedSlotMountState";
|
|
3
|
+
/**
|
|
4
|
+
* 读取能力实现挂在宿主实例上的作用域插槽挂载状态。
|
|
5
|
+
*/
|
|
6
|
+
function getScopedSlotMountState(target) {
|
|
7
|
+
return target[RUNTIME_SCOPED_SLOT_STATE_KEY];
|
|
8
|
+
}
|
|
9
|
+
const mutableRuntimeCapabilityRegistry = {};
|
|
10
|
+
/**
|
|
11
|
+
* 运行时能力的只读实时视图。安装器直接替换对应槽位,核心路径不会复制能力清单。
|
|
12
|
+
*/
|
|
13
|
+
const runtimeCapabilityRegistry = mutableRuntimeCapabilityRegistry;
|
|
14
|
+
/**
|
|
15
|
+
* 注册或热替换一个运行时能力实现。
|
|
16
|
+
*/
|
|
17
|
+
function registerRuntimeCapability(name, implementation) {
|
|
18
|
+
if (mutableRuntimeCapabilityRegistry[name] === implementation) return;
|
|
19
|
+
mutableRuntimeCapabilityRegistry[name] = implementation;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* 读取调用方明确请求的能力;缺失时同步失败,禁止静默降级。
|
|
23
|
+
*/
|
|
24
|
+
function requireRuntimeCapability(name, requester) {
|
|
25
|
+
const implementation = mutableRuntimeCapabilityRegistry[name];
|
|
26
|
+
if (!implementation) throw new Error(`[wevu] runtime capability "${name}" is required by ${requester}; install it before registration`);
|
|
27
|
+
return implementation;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* 判断 setData 高频告警是否被显式启用。
|
|
31
|
+
*/
|
|
32
|
+
function isSetDataHighFrequencyWarningRequested(option) {
|
|
33
|
+
if (option === true) return true;
|
|
34
|
+
if (!option || typeof option !== "object" || Array.isArray(option)) return false;
|
|
35
|
+
return option.enabled !== false;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
//#endregion
|
|
39
|
+
export { RUNTIME_SCOPED_SLOT_STATE_KEY, getScopedSlotMountState, isSetDataHighFrequencyWarningRequested, registerRuntimeCapability, requireRuntimeCapability, runtimeCapabilityRegistry };
|
|
40
|
+
//# sourceMappingURL=capabilities.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capabilities.mjs","names":[],"sources":["../../../src/runtime/capabilities.ts"],"sourcesContent":["import type { SetDataSchedulerOptions } from './app/setData/scheduler'\nimport type { InlineExpressionMap } from './register/inline'\nimport type { ComputedDefinitions, InternalRuntimeState, MethodDefinitions, RuntimeInstance, SetDataSnapshotOptions } from './types'\n\nexport type { SetDataSchedulerOptions } from './app/setData/scheduler'\n\nexport type RuntimeCapabilityName\n = | 'patchStrategy'\n | 'templateRefs'\n | 'inlineEvents'\n | 'setDataHighFrequencyWarning'\n | 'scopedSlots'\n | 'layout'\n\nexport interface TemplateRefBinding {\n selector: string\n inFor: boolean\n name?: string\n get?: () => unknown\n kind?: 'component' | 'element'\n}\n\nexport interface LayoutHostBinding {\n key: string\n refName?: string\n selector: string\n kind?: 'component'\n}\n\nexport interface HighFrequencyWarningMonitorOptions {\n option: SetDataSnapshotOptions['highFrequencyWarning']\n targetLabel: string\n isInPageScrollHook?: () => boolean\n now?: () => number\n logger?: (message: string) => void\n}\n\nexport const RUNTIME_SCOPED_SLOT_STATE_KEY = '__wevuScopedSlotMountState'\n\nexport interface SetDataScheduler {\n job: () => void | Promise<void>\n snapshot: () => Record<string, unknown>\n cloneLatestSnapshot: () => Record<string, unknown>\n start?: () => void\n dispose?: () => void\n}\n\nexport interface ScopedSlotMountState {\n ownerId: string\n shouldFlushNativeOwnerId: boolean\n}\n\ntype RuntimeStateWithScopedSlotMount = InternalRuntimeState & {\n [RUNTIME_SCOPED_SLOT_STATE_KEY]?: ScopedSlotMountState\n}\n\n/**\n * 读取能力实现挂在宿主实例上的作用域插槽挂载状态。\n */\nexport function getScopedSlotMountState(target: InternalRuntimeState): ScopedSlotMountState | undefined {\n return (target as RuntimeStateWithScopedSlotMount)[RUNTIME_SCOPED_SLOT_STATE_KEY]\n}\n\nexport interface RuntimeCapabilityRegistry {\n patchStrategy?: {\n createScheduler: (options: SetDataSchedulerOptions) => SetDataScheduler\n }\n templateRefs?: {\n attachBindings: (target: InternalRuntimeState, bindings: readonly TemplateRefBinding[]) => void\n hasBindings: (target: InternalRuntimeState) => boolean\n schedule: (target: InternalRuntimeState, onResolved?: () => void, assignmentTarget?: InternalRuntimeState, onRejected?: (cause: unknown) => void) => void\n scheduleOwner: (target: InternalRuntimeState) => void\n clear: (target: InternalRuntimeState, assignmentTarget?: InternalRuntimeState) => void\n }\n inlineEvents?: {\n handler: (this: InternalRuntimeState, event: unknown) => unknown\n run: (context: unknown, expression: unknown, event: unknown, map?: InlineExpressionMap) => unknown\n }\n setDataHighFrequencyWarning?: {\n createMonitor: (options: HighFrequencyWarningMonitorOptions) => (() => void) | undefined\n }\n scopedSlots?: {\n prepareMount: (target: InternalRuntimeState) => ScopedSlotMountState\n attachMount: <D extends object, C extends ComputedDefinitions, M extends MethodDefinitions>(\n target: InternalRuntimeState,\n runtime: RuntimeInstance<D, C, M>,\n state: ScopedSlotMountState,\n deferSnapshot: boolean,\n ) => void\n refresh: (target: InternalRuntimeState, state: ScopedSlotMountState) => void\n syncNativeOwnerId: (target: InternalRuntimeState, state: ScopedSlotMountState) => void\n teardown: (target: InternalRuntimeState) => void\n resolveLifecycleProxy: (target: InternalRuntimeState) => unknown\n allocateOwnerId: () => string\n }\n layout?: {\n attachPageSetter: (target: InternalRuntimeState) => void\n attachHosts: (bindings: readonly LayoutHostBinding[], target: InternalRuntimeState) => void\n detachHosts: (bindings: readonly LayoutHostBinding[], target: InternalRuntimeState) => void\n }\n}\n\nconst mutableRuntimeCapabilityRegistry: RuntimeCapabilityRegistry = {}\n\n/**\n * 运行时能力的只读实时视图。安装器直接替换对应槽位,核心路径不会复制能力清单。\n */\nexport const runtimeCapabilityRegistry: Readonly<RuntimeCapabilityRegistry> = mutableRuntimeCapabilityRegistry\n\n/**\n * 注册或热替换一个运行时能力实现。\n */\nexport function registerRuntimeCapability<Name extends RuntimeCapabilityName>(\n name: Name,\n implementation: NonNullable<RuntimeCapabilityRegistry[Name]>,\n): void {\n if (mutableRuntimeCapabilityRegistry[name] === implementation) {\n return\n }\n mutableRuntimeCapabilityRegistry[name] = implementation\n}\n\n/**\n * 读取调用方明确请求的能力;缺失时同步失败,禁止静默降级。\n */\nexport function requireRuntimeCapability<Name extends RuntimeCapabilityName>(\n name: Name,\n requester: string,\n): NonNullable<RuntimeCapabilityRegistry[Name]> {\n const implementation = mutableRuntimeCapabilityRegistry[name]\n if (!implementation) {\n throw new Error(`[wevu] runtime capability \"${name}\" is required by ${requester}; install it before registration`)\n }\n return implementation\n}\n\n/**\n * 判断 setData 高频告警是否被显式启用。\n */\nexport function isSetDataHighFrequencyWarningRequested(\n option: SetDataSnapshotOptions['highFrequencyWarning'],\n): boolean {\n if (option === true) {\n return true\n }\n if (!option || typeof option !== 'object' || Array.isArray(option)) {\n return false\n }\n return option.enabled !== false\n}\n"],"mappings":";AAqCA,MAAa,gCAAgC;;;;AAsB7C,SAAgB,wBAAwB,QAAgE;CACtG,OAAQ,OAA2C;AACrD;AAyCA,MAAM,mCAA8D,CAAC;;;;AAKrE,MAAa,4BAAiE;;;;AAK9E,SAAgB,0BACd,MACA,gBACM;CACN,IAAI,iCAAiC,UAAU,gBAC7C;CAEF,iCAAiC,QAAQ;AAC3C;;;;AAKA,SAAgB,yBACd,MACA,WAC8C;CAC9C,MAAM,iBAAiB,iCAAiC;CACxD,IAAI,CAAC,gBACH,MAAM,IAAI,MAAM,8BAA8B,KAAK,mBAAmB,UAAU,iCAAiC;CAEnH,OAAO;AACT;;;;AAKA,SAAgB,uCACd,QACS;CACT,IAAI,WAAW,MACb,OAAO;CAET,IAAI,CAAC,UAAU,OAAO,WAAW,YAAY,MAAM,QAAQ,MAAM,GAC/D,OAAO;CAET,OAAO,OAAO,YAAY;AAC5B"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ComputedRef } from "../reactivity/computed.mjs";
|
|
2
|
+
import "../reactivity/index.mjs";
|
|
3
|
+
//#region src/runtime/css.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* 读取当前 SFC 的 CSS Modules 映射。
|
|
6
|
+
*/
|
|
7
|
+
export declare function useCssModule(name?: string): Record<string, string>;
|
|
8
|
+
/**
|
|
9
|
+
* 注册编译器生成的响应式 CSS 变量。
|
|
10
|
+
* @internal
|
|
11
|
+
*/
|
|
12
|
+
export declare function useCssVars(getter: (context: Record<string, any>) => Record<string, unknown>): ComputedRef<string>;
|
|
13
|
+
//#endregion
|
|
14
|
+
//# sourceMappingURL=css.d.mts.map
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { CreateAppOptions, DefineComponentOptions } from "./types/options.mjs";
|
|
2
|
+
import "./types.mjs";
|
|
3
|
+
//#region src/runtime/defaults.d.ts
|
|
4
|
+
export declare const INTERNAL_DEFAULTS_SCOPE_KEY = "__wevuDefaultsScope";
|
|
5
|
+
export interface WevuDefaults {
|
|
6
|
+
app?: Partial<CreateAppOptions<any, any, any>>;
|
|
7
|
+
component?: Partial<DefineComponentOptions<any, any, any, any>>;
|
|
8
|
+
}
|
|
9
|
+
export declare function setWevuDefaults(next: WevuDefaults): void;
|
|
10
|
+
export declare function resetWevuDefaults(): void;
|
|
11
|
+
//#endregion
|
|
12
|
+
//# sourceMappingURL=defaults.d.mts.map
|