wevu 7.2.1 → 7.3.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.
Files changed (466) hide show
  1. package/README.md +6 -0
  2. package/dist/dev/_virtual/{_@oxc-project_runtime@0.150.0 → _@oxc-project_runtime@0.151.0}/helpers/esm/defineProperty.mjs +1 -1
  3. package/dist/dev/_virtual/{_@oxc-project_runtime@0.150.0 → _@oxc-project_runtime@0.151.0}/helpers/esm/toPrimitive.mjs +1 -1
  4. package/dist/dev/_virtual/{_@oxc-project_runtime@0.150.0 → _@oxc-project_runtime@0.151.0}/helpers/esm/toPropertyKey.mjs +1 -1
  5. package/dist/dev/_virtual/{_@oxc-project_runtime@0.150.0 → _@oxc-project_runtime@0.151.0}/helpers/esm/typeof.mjs +1 -1
  6. package/dist/dev/api/vitest/setup.d.mts +1 -0
  7. package/dist/dev/api/vitest.d.mts +1 -0
  8. package/dist/dev/api.d.mts +1 -0
  9. package/dist/dev/compiler.d.mts +1 -0
  10. package/dist/dev/fetch.d.mts +9 -0
  11. package/dist/dev/index.d.mts +72 -0
  12. package/dist/dev/internal-reactivity.d.mts +18 -0
  13. package/dist/dev/internal-runtime.d.mts +45 -0
  14. package/dist/dev/internal-runtime.mjs +3 -2
  15. package/dist/dev/internal-template.d.mts +2 -0
  16. package/dist/dev/jsxTypes.d.mts +9 -0
  17. package/dist/dev/macros/shared.d.mts +83 -0
  18. package/dist/dev/macros.d.mts +71 -0
  19. package/dist/dev/package.mjs +1 -1
  20. package/dist/dev/reactivity/asyncDerivation.d.mts +41 -0
  21. package/dist/dev/reactivity/asyncDerivation.mjs +8 -10
  22. package/dist/dev/reactivity/asyncDerivation.mjs.map +1 -1
  23. package/dist/dev/reactivity/computed.d.mts +25 -0
  24. package/dist/dev/reactivity/core.d.mts +35 -0
  25. package/dist/dev/reactivity/core.mjs +5 -8
  26. package/dist/dev/reactivity/core.mjs.map +1 -1
  27. package/dist/dev/reactivity/index.d.mts +16 -0
  28. package/dist/dev/reactivity/reactive/mutation.d.mts +21 -0
  29. package/dist/dev/reactivity/reactive/patch.d.mts +18 -0
  30. package/dist/dev/reactivity/reactive/patch.mjs +3 -3
  31. package/dist/dev/reactivity/reactive/patch.mjs.map +1 -1
  32. package/dist/dev/reactivity/reactive/patchState.mjs +4 -8
  33. package/dist/dev/reactivity/reactive/patchState.mjs.map +1 -1
  34. package/dist/dev/reactivity/reactive/shallow.d.mts +22 -0
  35. package/dist/dev/reactivity/reactive/shared.d.mts +4 -0
  36. package/dist/dev/reactivity/reactive/shared.mjs +1 -2
  37. package/dist/dev/reactivity/reactive/shared.mjs.map +1 -1
  38. package/dist/dev/reactivity/reactive.d.mts +42 -0
  39. package/dist/dev/reactivity/reactive.mjs +5 -10
  40. package/dist/dev/reactivity/reactive.mjs.map +1 -1
  41. package/dist/dev/reactivity/readonly.d.mts +27 -0
  42. package/dist/dev/reactivity/ref.d.mts +27 -0
  43. package/dist/dev/reactivity/ref.mjs +2 -2
  44. package/dist/dev/reactivity/ref.mjs.map +1 -1
  45. package/dist/dev/reactivity/shallowRef.d.mts +19 -0
  46. package/dist/dev/reactivity/shallowRef.mjs +1 -1
  47. package/dist/dev/reactivity/shallowRef.mjs.map +1 -1
  48. package/dist/dev/reactivity/toRefs.d.mts +43 -0
  49. package/dist/dev/reactivity/traverse.d.mts +8 -0
  50. package/dist/dev/reactivity/watch/helpers.mjs +1 -1
  51. package/dist/dev/reactivity/watch/helpers.mjs.map +1 -1
  52. package/dist/dev/reactivity/watch/types.d.mts +43 -0
  53. package/dist/dev/reactivity/watch.d.mts +22 -0
  54. package/dist/dev/reactivity/watch.mjs +6 -8
  55. package/dist/dev/reactivity/watch.mjs.map +1 -1
  56. package/dist/dev/router/auto-routes.d.mts +8 -0
  57. package/dist/dev/router/createRouter.d.mts +9 -0
  58. package/dist/dev/router/createRouter.mjs +17 -24
  59. package/dist/dev/router/createRouter.mjs.map +1 -1
  60. package/dist/dev/router/initialNavigation.mjs +18 -16
  61. package/dist/dev/router/initialNavigation.mjs.map +1 -1
  62. package/dist/dev/router/instance.mjs +1 -2
  63. package/dist/dev/router/instance.mjs.map +1 -1
  64. package/dist/dev/router/navigationCore.d.mts +7 -0
  65. package/dist/dev/router/navigationCore.mjs +2 -2
  66. package/dist/dev/router/navigationCore.mjs.map +1 -1
  67. package/dist/dev/router/navigationResult.mjs +7 -10
  68. package/dist/dev/router/navigationResult.mjs.map +1 -1
  69. package/dist/dev/router/navigationTarget.mjs +1 -3
  70. package/dist/dev/router/navigationTarget.mjs.map +1 -1
  71. package/dist/dev/router/resolve.d.mts +7 -0
  72. package/dist/dev/router/resolve.mjs +3 -4
  73. package/dist/dev/router/resolve.mjs.map +1 -1
  74. package/dist/dev/router/routeRegistry.mjs +1 -1
  75. package/dist/dev/router/routeRegistry.mjs.map +1 -1
  76. package/dist/dev/router/routeSync.d.mts +2 -0
  77. package/dist/dev/router/routeSync.mjs +1 -1
  78. package/dist/dev/router/routeSync.mjs.map +1 -1
  79. package/dist/dev/router/types.d.mts +267 -0
  80. package/dist/dev/router/useRoute.d.mts +20 -0
  81. package/dist/dev/router/useRoute.mjs +12 -19
  82. package/dist/dev/router/useRoute.mjs.map +1 -1
  83. package/dist/dev/router/useRouter.d.mts +9 -0
  84. package/dist/dev/router.d.mts +26 -0
  85. package/dist/dev/routerInternal/location.d.mts +2 -0
  86. package/dist/dev/routerInternal/location.mjs +2 -3
  87. package/dist/dev/routerInternal/location.mjs.map +1 -1
  88. package/dist/dev/routerInternal/matching.d.mts +2 -0
  89. package/dist/dev/routerInternal/params.d.mts +2 -0
  90. package/dist/dev/routerInternal/params.mjs +2 -3
  91. package/dist/dev/routerInternal/params.mjs.map +1 -1
  92. package/dist/dev/routerInternal/query.d.mts +7 -0
  93. package/dist/dev/routerInternal/records.d.mts +2 -0
  94. package/dist/dev/routerInternal/records.mjs +1 -1
  95. package/dist/dev/routerInternal/records.mjs.map +1 -1
  96. package/dist/dev/routerInternal/recordsWarnings.d.mts +2 -0
  97. package/dist/dev/routerInternal/recordsWarnings.mjs +1 -2
  98. package/dist/dev/routerInternal/recordsWarnings.mjs.map +1 -1
  99. package/dist/dev/routerInternal/shared.d.mts +9 -0
  100. package/dist/dev/routerInternal/snapshots.d.mts +2 -0
  101. package/dist/dev/routerInternal/types.d.mts +9 -0
  102. package/dist/dev/runtime/app/context.mjs +13 -26
  103. package/dist/dev/runtime/app/context.mjs.map +1 -1
  104. package/dist/dev/runtime/app/diagnostics.mjs +2 -4
  105. package/dist/dev/runtime/app/diagnostics.mjs.map +1 -1
  106. package/dist/dev/runtime/app/mount.mjs +27 -33
  107. package/dist/dev/runtime/app/mount.mjs.map +1 -1
  108. package/dist/dev/runtime/app/pending.d.mts +10 -0
  109. package/dist/dev/runtime/app/setData/commitTracker.d.mts +13 -0
  110. package/dist/dev/runtime/app/setData/commitTracker.mjs +5 -9
  111. package/dist/dev/runtime/app/setData/commitTracker.mjs.map +1 -1
  112. package/dist/dev/runtime/app/setData/patchScheduler.mjs +2 -4
  113. package/dist/dev/runtime/app/setData/patchScheduler.mjs.map +1 -1
  114. package/dist/dev/runtime/app/setData/payload.mjs +2 -3
  115. package/dist/dev/runtime/app/setData/payload.mjs.map +1 -1
  116. package/dist/dev/runtime/app/setData/scheduler.d.mts +51 -0
  117. package/dist/dev/runtime/app/setData/scheduler.mjs +7 -9
  118. package/dist/dev/runtime/app/setData/scheduler.mjs.map +1 -1
  119. package/dist/dev/runtime/app/setData/snapshot.mjs +5 -6
  120. package/dist/dev/runtime/app/setData/snapshot.mjs.map +1 -1
  121. package/dist/dev/runtime/app/setDataOptions.mjs +26 -27
  122. package/dist/dev/runtime/app/setDataOptions.mjs.map +1 -1
  123. package/dist/dev/runtime/app.d.mts +8 -0
  124. package/dist/dev/runtime/app.mjs +9 -9
  125. package/dist/dev/runtime/app.mjs.map +1 -1
  126. package/dist/dev/runtime/bindingManifest.mjs +6 -14
  127. package/dist/dev/runtime/bindingManifest.mjs.map +1 -1
  128. package/dist/dev/runtime/capabilities.d.mts +78 -0
  129. package/dist/dev/runtime/capabilities.mjs.map +1 -1
  130. package/dist/dev/runtime/css.d.mts +14 -0
  131. package/dist/dev/runtime/css.mjs +4 -8
  132. package/dist/dev/runtime/css.mjs.map +1 -1
  133. package/dist/dev/runtime/defaults.d.mts +12 -0
  134. package/dist/dev/runtime/defaults.mjs +4 -4
  135. package/dist/dev/runtime/defaults.mjs.map +1 -1
  136. package/dist/dev/runtime/define/initialComputed.mjs +5 -5
  137. package/dist/dev/runtime/define/initialComputed.mjs.map +1 -1
  138. package/dist/dev/runtime/define/options.mjs +10 -12
  139. package/dist/dev/runtime/define/options.mjs.map +1 -1
  140. package/dist/dev/runtime/define/props.mjs +4 -5
  141. package/dist/dev/runtime/define/props.mjs.map +1 -1
  142. package/dist/dev/runtime/define/scopedSlotOptions.mjs +43 -61
  143. package/dist/dev/runtime/define/scopedSlotOptions.mjs.map +1 -1
  144. package/dist/dev/runtime/define/setupResult.mjs +17 -28
  145. package/dist/dev/runtime/define/setupResult.mjs.map +1 -1
  146. package/dist/dev/runtime/define.d.mts +118 -0
  147. package/dist/dev/runtime/define.mjs +9 -12
  148. package/dist/dev/runtime/define.mjs.map +1 -1
  149. package/dist/dev/runtime/diff.mjs +9 -11
  150. package/dist/dev/runtime/diff.mjs.map +1 -1
  151. package/dist/dev/runtime/disposables.d.mts +31 -0
  152. package/dist/dev/runtime/disposables.mjs +2 -2
  153. package/dist/dev/runtime/disposables.mjs.map +1 -1
  154. package/dist/dev/runtime/elementIntersectionObserver.d.mts +26 -0
  155. package/dist/dev/runtime/elementIntersectionObserver.mjs +16 -24
  156. package/dist/dev/runtime/elementIntersectionObserver.mjs.map +1 -1
  157. package/dist/dev/runtime/features/inlineEvents.d.mts +7 -0
  158. package/dist/dev/runtime/features/inlineEvents.mjs +2 -3
  159. package/dist/dev/runtime/features/inlineEvents.mjs.map +1 -1
  160. package/dist/dev/runtime/features/jsxIslands.d.mts +7 -0
  161. package/dist/dev/runtime/features/jsxIslands.mjs +20 -0
  162. package/dist/dev/runtime/features/jsxIslands.mjs.map +1 -0
  163. package/dist/dev/runtime/features/layout.d.mts +7 -0
  164. package/dist/dev/runtime/features/layout.mjs +2 -3
  165. package/dist/dev/runtime/features/layout.mjs.map +1 -1
  166. package/dist/dev/runtime/features/patchStrategy.d.mts +7 -0
  167. package/dist/dev/runtime/features/publicLayout.d.mts +24 -0
  168. package/dist/dev/runtime/features/publicLayout.mjs +2 -6
  169. package/dist/dev/runtime/features/publicLayout.mjs.map +1 -1
  170. package/dist/dev/runtime/features/scopedSlots.d.mts +23 -0
  171. package/dist/dev/runtime/features/scopedSlots.mjs +5 -9
  172. package/dist/dev/runtime/features/scopedSlots.mjs.map +1 -1
  173. package/dist/dev/runtime/features/setDataHighFrequencyWarning.d.mts +7 -0
  174. package/dist/dev/runtime/features/templateRefs.d.mts +7 -0
  175. package/dist/dev/runtime/features/templateRefs.mjs +1 -1
  176. package/dist/dev/runtime/features/templateRefs.mjs.map +1 -1
  177. package/dist/dev/runtime/hooks/base.d.mts +27 -0
  178. package/dist/dev/runtime/hooks/base.mjs +21 -32
  179. package/dist/dev/runtime/hooks/base.mjs.map +1 -1
  180. package/dist/dev/runtime/hooks/register.d.mts +30 -0
  181. package/dist/dev/runtime/hooks/vue.d.mts +52 -0
  182. package/dist/dev/runtime/hooks.d.mts +4 -0
  183. package/dist/dev/runtime/index.d.mts +46 -0
  184. package/dist/dev/runtime/inlineDataset.mjs +1 -2
  185. package/dist/dev/runtime/inlineDataset.mjs.map +1 -1
  186. package/dist/dev/runtime/intersectionObserver.d.mts +14 -0
  187. package/dist/dev/runtime/intersectionObserver.mjs +6 -6
  188. package/dist/dev/runtime/intersectionObserver.mjs.map +1 -1
  189. package/dist/dev/runtime/jsxIsland.d.mts +37 -0
  190. package/dist/dev/runtime/jsxIsland.mjs +16 -33
  191. package/dist/dev/runtime/jsxIsland.mjs.map +1 -1
  192. package/dist/dev/runtime/layoutBridge.d.mts +55 -0
  193. package/dist/dev/runtime/layoutBridge.mjs +32 -62
  194. package/dist/dev/runtime/layoutBridge.mjs.map +1 -1
  195. package/dist/dev/runtime/nativeBridge.mjs +1 -1
  196. package/dist/dev/runtime/nativeBridge.mjs.map +1 -1
  197. package/dist/dev/runtime/navigationLifecycle.mjs +24 -0
  198. package/dist/dev/runtime/navigationLifecycle.mjs.map +1 -0
  199. package/dist/dev/runtime/noSetData.d.mts +5 -0
  200. package/dist/dev/runtime/pageEnvironment.d.mts +50 -0
  201. package/dist/dev/runtime/pageEnvironment.mjs +15 -18
  202. package/dist/dev/runtime/pageEnvironment.mjs.map +1 -1
  203. package/dist/dev/runtime/pageLayout.d.mts +25 -0
  204. package/dist/dev/runtime/pageLayout.mjs +7 -11
  205. package/dist/dev/runtime/pageLayout.mjs.map +1 -1
  206. package/dist/dev/runtime/pageScroll.d.mts +29 -0
  207. package/dist/dev/runtime/pageScroll.mjs +2 -3
  208. package/dist/dev/runtime/pageScroll.mjs.map +1 -1
  209. package/dist/dev/runtime/platform/current.mjs +12 -0
  210. package/dist/dev/runtime/platform/current.mjs.map +1 -0
  211. package/dist/dev/runtime/platform/generic.mjs +36 -0
  212. package/dist/dev/runtime/platform/generic.mjs.map +1 -0
  213. package/dist/dev/runtime/platform/globals.mjs +29 -0
  214. package/dist/dev/runtime/platform/globals.mjs.map +1 -0
  215. package/dist/dev/runtime/platform.mjs +15 -60
  216. package/dist/dev/runtime/platform.mjs.map +1 -1
  217. package/dist/dev/runtime/provide.d.mts +60 -0
  218. package/dist/dev/runtime/provideContext.mjs +7 -9
  219. package/dist/dev/runtime/provideContext.mjs.map +1 -1
  220. package/dist/dev/runtime/provideStore.d.mts +7 -0
  221. package/dist/dev/runtime/publicRuntime.d.mts +22 -0
  222. package/dist/dev/runtime/publicRuntime.mjs +4 -0
  223. package/dist/dev/runtime/publicRuntime.mjs.map +1 -1
  224. package/dist/dev/runtime/pullDownRefresh.d.mts +12 -0
  225. package/dist/dev/runtime/pullDownRefresh.mjs +2 -4
  226. package/dist/dev/runtime/pullDownRefresh.mjs.map +1 -1
  227. package/dist/dev/runtime/register/app.d.mts +14 -0
  228. package/dist/dev/runtime/register/app.mjs +18 -19
  229. package/dist/dev/runtime/register/app.mjs.map +1 -1
  230. package/dist/dev/runtime/register/component/alipay.mjs +9 -18
  231. package/dist/dev/runtime/register/component/alipay.mjs.map +1 -1
  232. package/dist/dev/runtime/register/component/alipayRegistration.mjs +60 -0
  233. package/dist/dev/runtime/register/component/alipayRegistration.mjs.map +1 -0
  234. package/dist/dev/runtime/register/component/lifecycle/platform.mjs +8 -9
  235. package/dist/dev/runtime/register/component/lifecycle/platform.mjs.map +1 -1
  236. package/dist/dev/runtime/register/component/lifecycle.mjs +7 -12
  237. package/dist/dev/runtime/register/component/lifecycle.mjs.map +1 -1
  238. package/dist/dev/runtime/register/component/methods.mjs +13 -18
  239. package/dist/dev/runtime/register/component/methods.mjs.map +1 -1
  240. package/dist/dev/runtime/register/component/options.mjs +3 -4
  241. package/dist/dev/runtime/register/component/options.mjs.map +1 -1
  242. package/dist/dev/runtime/register/component/props.mjs +25 -31
  243. package/dist/dev/runtime/register/component/props.mjs.map +1 -1
  244. package/dist/dev/runtime/register/component/registerDefinition.mjs +18 -40
  245. package/dist/dev/runtime/register/component/registerDefinition.mjs.map +1 -1
  246. package/dist/dev/runtime/register/component/registerNativeDefinition.mjs +18 -60
  247. package/dist/dev/runtime/register/component/registerNativeDefinition.mjs.map +1 -1
  248. package/dist/dev/runtime/register/component.d.mts +17 -0
  249. package/dist/dev/runtime/register/component.mjs +3 -5
  250. package/dist/dev/runtime/register/component.mjs.map +1 -1
  251. package/dist/dev/runtime/register/inline.d.mts +15 -0
  252. package/dist/dev/runtime/register/inline.mjs +8 -10
  253. package/dist/dev/runtime/register/inline.mjs.map +1 -1
  254. package/dist/dev/runtime/register/runtimeInstance/methodBridge.mjs +7 -8
  255. package/dist/dev/runtime/register/runtimeInstance/methodBridge.mjs.map +1 -1
  256. package/dist/dev/runtime/register/runtimeInstance/provideContext.mjs +1 -1
  257. package/dist/dev/runtime/register/runtimeInstance/provideContext.mjs.map +1 -1
  258. package/dist/dev/runtime/register/runtimeInstance/setupContext.mjs +25 -34
  259. package/dist/dev/runtime/register/runtimeInstance/setupContext.mjs.map +1 -1
  260. package/dist/dev/runtime/register/runtimeInstance/setupPhase.mjs +6 -13
  261. package/dist/dev/runtime/register/runtimeInstance/setupPhase.mjs.map +1 -1
  262. package/dist/dev/runtime/register/runtimeInstance/setupSnapshot.mjs +2 -2
  263. package/dist/dev/runtime/register/runtimeInstance/setupSnapshot.mjs.map +1 -1
  264. package/dist/dev/runtime/register/runtimeInstance/utils.mjs +9 -9
  265. package/dist/dev/runtime/register/runtimeInstance/utils.mjs.map +1 -1
  266. package/dist/dev/runtime/register/runtimeInstance.d.mts +26 -0
  267. package/dist/dev/runtime/register/runtimeInstance.mjs +74 -100
  268. package/dist/dev/runtime/register/runtimeInstance.mjs.map +1 -1
  269. package/dist/dev/runtime/register/setDataFrequencyWarning.mjs +12 -15
  270. package/dist/dev/runtime/register/setDataFrequencyWarning.mjs.map +1 -1
  271. package/dist/dev/runtime/register/setup.d.mts +11 -0
  272. package/dist/dev/runtime/register/setup.mjs +2 -3
  273. package/dist/dev/runtime/register/setup.mjs.map +1 -1
  274. package/dist/dev/runtime/register/snapshot.mjs +1 -4
  275. package/dist/dev/runtime/register/snapshot.mjs.map +1 -1
  276. package/dist/dev/runtime/register/watch.d.mts +12 -0
  277. package/dist/dev/runtime/register/watch.mjs +3 -5
  278. package/dist/dev/runtime/register/watch.mjs.map +1 -1
  279. package/dist/dev/runtime/register.d.mts +5 -0
  280. package/dist/dev/runtime/scopedSlots.mjs +14 -21
  281. package/dist/dev/runtime/scopedSlots.mjs.map +1 -1
  282. package/dist/dev/runtime/selectorQuery.d.mts +54 -0
  283. package/dist/dev/runtime/selectorQuery.mjs +5 -9
  284. package/dist/dev/runtime/selectorQuery.mjs.map +1 -1
  285. package/dist/dev/runtime/template.d.mts +6 -0
  286. package/dist/dev/runtime/template.mjs +1 -1
  287. package/dist/dev/runtime/template.mjs.map +1 -1
  288. package/dist/dev/runtime/templateRefTypes.d.mts +12 -0
  289. package/dist/dev/runtime/templateRefs/helpers.mjs +14 -24
  290. package/dist/dev/runtime/templateRefs/helpers.mjs.map +1 -1
  291. package/dist/dev/runtime/templateRefs.mjs +8 -15
  292. package/dist/dev/runtime/templateRefs.mjs.map +1 -1
  293. package/dist/dev/runtime/types/core.d.mts +35 -0
  294. package/dist/dev/runtime/types/miniprogram.d.mts +84 -0
  295. package/dist/dev/runtime/types/miniprogramHost.d.mts +45 -0
  296. package/dist/dev/runtime/types/miniprogramHostSources.d.mts +112 -0
  297. package/dist/dev/runtime/types/options.d.mts +138 -0
  298. package/dist/dev/runtime/types/props/propTypes.d.mts +79 -0
  299. package/dist/dev/runtime/types/props/router.d.mts +51 -0
  300. package/dist/dev/runtime/types/props/setup.d.mts +96 -0
  301. package/dist/dev/runtime/types/props.d.mts +4 -0
  302. package/dist/dev/runtime/types/runtime.d.mts +59 -0
  303. package/dist/dev/runtime/types/setData.d.mts +237 -0
  304. package/dist/dev/runtime/types.d.mts +29 -0
  305. package/dist/dev/runtime/uniAppHost.d.mts +8 -0
  306. package/dist/dev/runtime/uniAppHost.mjs +6 -14
  307. package/dist/dev/runtime/uniAppHost.mjs.map +1 -1
  308. package/dist/dev/runtime/updatePerformance.d.mts +13 -0
  309. package/dist/dev/runtime/updatePerformance.mjs +1 -1
  310. package/dist/dev/runtime/updatePerformance.mjs.map +1 -1
  311. package/dist/dev/runtime/use.d.mts +13 -0
  312. package/dist/dev/runtime/use.mjs +1 -1
  313. package/dist/dev/runtime/use.mjs.map +1 -1
  314. package/dist/dev/runtime/vueCompat/context.d.mts +8 -0
  315. package/dist/dev/runtime/vueCompat/context.mjs +3 -5
  316. package/dist/dev/runtime/vueCompat/context.mjs.map +1 -1
  317. package/dist/dev/runtime/vueCompat/model.d.mts +30 -0
  318. package/dist/dev/runtime/vueCompat/model.mjs +9 -13
  319. package/dist/dev/runtime/vueCompat/model.mjs.map +1 -1
  320. package/dist/dev/runtime/vueCompat/router.d.mts +29 -0
  321. package/dist/dev/runtime/vueCompat/router.mjs +4 -4
  322. package/dist/dev/runtime/vueCompat/router.mjs.map +1 -1
  323. package/dist/dev/runtime/vueCompat/templateRef.d.mts +9 -0
  324. package/dist/dev/runtime/vueCompat/templateRef.mjs +1 -1
  325. package/dist/dev/runtime/vueCompat/templateRef.mjs.map +1 -1
  326. package/dist/dev/runtime/vueCompat.d.mts +5 -0
  327. package/dist/dev/scheduler.d.mts +4 -0
  328. package/dist/dev/scheduler.mjs +3 -4
  329. package/dist/dev/scheduler.mjs.map +1 -1
  330. package/dist/dev/store/base.mjs +1 -2
  331. package/dist/dev/store/base.mjs.map +1 -1
  332. package/dist/dev/store/define/create.mjs +11 -22
  333. package/dist/dev/store/define/create.mjs.map +1 -1
  334. package/dist/dev/store/define.d.mts +8 -0
  335. package/dist/dev/store/define.mjs +1 -1
  336. package/dist/dev/store/define.mjs.map +1 -1
  337. package/dist/dev/store/manager.d.mts +16 -0
  338. package/dist/dev/store/storeToRefs.d.mts +11 -0
  339. package/dist/dev/store/types.d.mts +106 -0
  340. package/dist/dev/store/view.mjs +1 -1
  341. package/dist/dev/store/view.mjs.map +1 -1
  342. package/dist/dev/store.d.mts +5 -0
  343. package/dist/dev/version.d.mts +4 -0
  344. package/dist/dev/vue-augment.d.mts +8 -0
  345. package/dist/dev/vue-demi.d.mts +87 -0
  346. package/dist/dev/vue-types.d.mts +19 -0
  347. package/dist/dev/web-apis.d.mts +3 -0
  348. package/dist/internal-runtime.d.mts +2 -1
  349. package/dist/internal-runtime.mjs +1 -1
  350. package/dist/package.mjs +1 -1
  351. package/dist/reactivity/asyncDerivation.mjs +1 -1
  352. package/dist/reactivity/core.mjs +1 -1
  353. package/dist/reactivity/reactive/patch.mjs +1 -1
  354. package/dist/reactivity/reactive/patchState.mjs +1 -1
  355. package/dist/reactivity/reactive/shared.mjs +1 -1
  356. package/dist/reactivity/reactive.mjs +1 -1
  357. package/dist/reactivity/ref.mjs +1 -1
  358. package/dist/reactivity/shallowRef.mjs +1 -1
  359. package/dist/reactivity/watch/helpers.mjs +1 -1
  360. package/dist/reactivity/watch.mjs +1 -1
  361. package/dist/router/createRouter.mjs +1 -1
  362. package/dist/router/initialNavigation.mjs +1 -1
  363. package/dist/router/instance.mjs +1 -1
  364. package/dist/router/navigationCore.mjs +1 -1
  365. package/dist/router/navigationResult.mjs +1 -1
  366. package/dist/router/navigationTarget.mjs +1 -1
  367. package/dist/router/resolve.mjs +1 -1
  368. package/dist/router/routeRegistry.mjs +1 -1
  369. package/dist/router/routeSync.mjs +1 -1
  370. package/dist/router/useRoute.mjs +1 -1
  371. package/dist/routerInternal/location.mjs +1 -1
  372. package/dist/routerInternal/params.mjs +1 -1
  373. package/dist/routerInternal/records.mjs +1 -1
  374. package/dist/routerInternal/recordsWarnings.mjs +1 -1
  375. package/dist/runtime/app/context.mjs +1 -1
  376. package/dist/runtime/app/diagnostics.mjs +1 -1
  377. package/dist/runtime/app/mount.mjs +1 -1
  378. package/dist/runtime/app/setData/commitTracker.mjs +1 -1
  379. package/dist/runtime/app/setData/patchScheduler.mjs +1 -1
  380. package/dist/runtime/app/setData/payload.mjs +1 -1
  381. package/dist/runtime/app/setData/scheduler.mjs +1 -1
  382. package/dist/runtime/app/setData/snapshot.mjs +1 -1
  383. package/dist/runtime/app/setDataOptions.mjs +1 -1
  384. package/dist/runtime/app.mjs +1 -1
  385. package/dist/runtime/bindingManifest.mjs +1 -1
  386. package/dist/runtime/capabilities.d.mts +4 -1
  387. package/dist/runtime/css.mjs +1 -1
  388. package/dist/runtime/defaults.mjs +1 -1
  389. package/dist/runtime/define/initialComputed.mjs +1 -1
  390. package/dist/runtime/define/options.mjs +1 -1
  391. package/dist/runtime/define/props.mjs +1 -1
  392. package/dist/runtime/define/scopedSlotOptions.mjs +1 -1
  393. package/dist/runtime/define/setupResult.mjs +1 -1
  394. package/dist/runtime/define.mjs +1 -1
  395. package/dist/runtime/diff.mjs +1 -1
  396. package/dist/runtime/disposables.mjs +1 -1
  397. package/dist/runtime/elementIntersectionObserver.mjs +1 -1
  398. package/dist/runtime/features/inlineEvents.mjs +1 -1
  399. package/dist/runtime/features/jsxIslands.d.mts +6 -0
  400. package/dist/runtime/features/jsxIslands.mjs +1 -0
  401. package/dist/runtime/features/layout.mjs +1 -1
  402. package/dist/runtime/features/publicLayout.mjs +1 -1
  403. package/dist/runtime/features/scopedSlots.mjs +1 -1
  404. package/dist/runtime/features/templateRefs.mjs +1 -1
  405. package/dist/runtime/hooks/base.mjs +1 -1
  406. package/dist/runtime/inlineDataset.mjs +1 -1
  407. package/dist/runtime/intersectionObserver.mjs +1 -1
  408. package/dist/runtime/jsxIsland.mjs +1 -1
  409. package/dist/runtime/layoutBridge.mjs +1 -1
  410. package/dist/runtime/nativeBridge.mjs +1 -1
  411. package/dist/runtime/navigationLifecycle.mjs +1 -0
  412. package/dist/runtime/pageEnvironment.mjs +1 -1
  413. package/dist/runtime/pageLayout.mjs +1 -1
  414. package/dist/runtime/pageScroll.mjs +1 -1
  415. package/dist/runtime/platform/current.mjs +1 -0
  416. package/dist/runtime/platform/generic.mjs +1 -0
  417. package/dist/runtime/platform/globals.mjs +1 -0
  418. package/dist/runtime/platform.mjs +1 -1
  419. package/dist/runtime/provideContext.mjs +1 -1
  420. package/dist/runtime/publicRuntime.mjs +1 -1
  421. package/dist/runtime/pullDownRefresh.mjs +1 -1
  422. package/dist/runtime/register/app.mjs +1 -1
  423. package/dist/runtime/register/component/alipay.mjs +1 -1
  424. package/dist/runtime/register/component/alipayRegistration.mjs +1 -0
  425. package/dist/runtime/register/component/lifecycle/platform.mjs +1 -1
  426. package/dist/runtime/register/component/lifecycle.mjs +1 -1
  427. package/dist/runtime/register/component/methods.mjs +1 -1
  428. package/dist/runtime/register/component/options.mjs +1 -1
  429. package/dist/runtime/register/component/props.mjs +1 -1
  430. package/dist/runtime/register/component/registerDefinition.mjs +1 -1
  431. package/dist/runtime/register/component/registerNativeDefinition.mjs +1 -1
  432. package/dist/runtime/register/component.mjs +1 -1
  433. package/dist/runtime/register/inline.mjs +1 -1
  434. package/dist/runtime/register/runtimeInstance/methodBridge.mjs +1 -1
  435. package/dist/runtime/register/runtimeInstance/provideContext.mjs +1 -1
  436. package/dist/runtime/register/runtimeInstance/setupContext.mjs +1 -1
  437. package/dist/runtime/register/runtimeInstance/setupPhase.mjs +1 -1
  438. package/dist/runtime/register/runtimeInstance/setupSnapshot.mjs +1 -1
  439. package/dist/runtime/register/runtimeInstance/utils.mjs +1 -1
  440. package/dist/runtime/register/runtimeInstance.mjs +1 -1
  441. package/dist/runtime/register/setDataFrequencyWarning.mjs +1 -1
  442. package/dist/runtime/register/setup.mjs +1 -1
  443. package/dist/runtime/register/snapshot.mjs +1 -1
  444. package/dist/runtime/register/watch.mjs +1 -1
  445. package/dist/runtime/scopedSlots.mjs +1 -1
  446. package/dist/runtime/selectorQuery.mjs +1 -1
  447. package/dist/runtime/template.mjs +1 -1
  448. package/dist/runtime/templateRefs/helpers.mjs +1 -1
  449. package/dist/runtime/templateRefs.mjs +1 -1
  450. package/dist/runtime/uniAppHost.mjs +1 -1
  451. package/dist/runtime/updatePerformance.mjs +1 -1
  452. package/dist/runtime/use.mjs +1 -1
  453. package/dist/runtime/vueCompat/context.mjs +1 -1
  454. package/dist/runtime/vueCompat/model.mjs +1 -1
  455. package/dist/runtime/vueCompat/router.mjs +1 -1
  456. package/dist/runtime/vueCompat/templateRef.mjs +1 -1
  457. package/dist/scheduler.mjs +1 -1
  458. package/dist/store/base.mjs +1 -1
  459. package/dist/store/define/create.mjs +1 -1
  460. package/dist/store/define.mjs +1 -1
  461. package/dist/store/view.mjs +1 -1
  462. package/package.json +7 -7
  463. /package/dist/_virtual/{_@oxc-project_runtime@0.150.0 → _@oxc-project_runtime@0.151.0}/helpers/esm/defineProperty.mjs +0 -0
  464. /package/dist/_virtual/{_@oxc-project_runtime@0.150.0 → _@oxc-project_runtime@0.151.0}/helpers/esm/toPrimitive.mjs +0 -0
  465. /package/dist/_virtual/{_@oxc-project_runtime@0.150.0 → _@oxc-project_runtime@0.151.0}/helpers/esm/toPropertyKey.mjs +0 -0
  466. /package/dist/_virtual/{_@oxc-project_runtime@0.150.0 → _@oxc-project_runtime@0.151.0}/helpers/esm/typeof.mjs +0 -0
@@ -43,18 +43,13 @@ function resolveBindingManifest(value) {
43
43
  * 判断清单是否声明了指定输出路径。
44
44
  */
45
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;
46
+ return manifest?.bindings.some((binding) => binding.outputPath === outputPath) ?? false;
48
47
  }
49
48
  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(/^\./, "");
49
+ return path.replace(/\[(?:'([^']+)'|"([^"]+)"|([^\]]+))\]/g, (_match, single, double, bare) => `.${single ?? double ?? bare}`).replace(/^\./, "");
54
50
  }
55
51
  function topLevelPath(path) {
56
- var _normalizeBindingPath;
57
- return (_normalizeBindingPath = normalizeBindingPath(path).split(".", 1)[0]) !== null && _normalizeBindingPath !== void 0 ? _normalizeBindingPath : "";
52
+ return normalizeBindingPath(path).split(".", 1)[0] ?? "";
58
53
  }
59
54
  function pathsOverlap(left, right) {
60
55
  const normalizedLeft = normalizeBindingPath(left);
@@ -62,18 +57,16 @@ function pathsOverlap(left, right) {
62
57
  return normalizedLeft === normalizedRight || normalizedLeft.startsWith(`${normalizedRight}.`) || normalizedRight.startsWith(`${normalizedLeft}.`);
63
58
  }
64
59
  function getBindingUpdateMode(binding) {
65
- var _binding$updateMode;
66
- return (_binding$updateMode = binding.updateMode) !== null && _binding$updateMode !== void 0 ? _binding$updateMode : "exact-path";
60
+ return binding.updateMode ?? "exact-path";
67
61
  }
68
62
  function matchesBindingPath(binding, path) {
69
- var _binding$sourceRoots;
70
63
  if (!path) return false;
71
64
  const updateMode = getBindingUpdateMode(binding);
72
65
  if (updateMode === "snapshot-fallback" && binding.outputPath === "*") return true;
73
66
  if (updateMode === "exact-path") return pathsOverlap(binding.outputPath, path);
74
67
  const pathRoot = topLevelPath(path);
75
68
  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);
69
+ return updateMode === "snapshot-fallback" && (binding.sourceRoots ?? []).some((sourceRoot) => topLevelPath(sourceRoot) === pathRoot);
77
70
  }
78
71
  /**
79
72
  * 按实际 setData 路径惰性解析相关模板绑定,保持清单顺序并按 id 去重。
@@ -83,7 +76,6 @@ function resolveBindingDiagnostics(manifest, paths, wholeSnapshotFallback = fals
83
76
  const seenIds = /* @__PURE__ */ new Set();
84
77
  const diagnostics = [];
85
78
  for (const binding of manifest.bindings) {
86
- var _binding$sourceFile;
87
79
  if (seenIds.has(binding.id)) continue;
88
80
  const updateMode = getBindingUpdateMode(binding);
89
81
  if (!(payloadPaths.length > 0 ? payloadPaths.some((path) => matchesBindingPath(binding, path)) : wholeSnapshotFallback && updateMode === "snapshot-fallback")) continue;
@@ -92,7 +84,7 @@ function resolveBindingDiagnostics(manifest, paths, wholeSnapshotFallback = fals
92
84
  id: binding.id,
93
85
  outputPath: binding.outputPath,
94
86
  updateMode,
95
- sourceFile: (_binding$sourceFile = binding.sourceFile) !== null && _binding$sourceFile !== void 0 ? _binding$sourceFile : manifest.sourceFile
87
+ sourceFile: binding.sourceFile ?? manifest.sourceFile
96
88
  };
97
89
  if (binding.sourceLocation) diagnostic.sourceLocation = binding.sourceLocation;
98
90
  diagnostics.push(diagnostic);
@@ -1 +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":"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"}
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":"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"}
@@ -0,0 +1,78 @@
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' | 'jsxIslands';
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
+ jsxIslands?: {
73
+ attachMethods: (methods: Record<string, (...args: any[]) => any>) => void;
74
+ };
75
+ }
76
+ //#endregion
77
+ export type { SetDataSchedulerOptions };
78
+ //# sourceMappingURL=capabilities.d.mts.map
@@ -1 +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"}
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 | 'jsxIslands'\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 jsxIslands?: {\n attachMethods: (methods: Record<string, (...args: any[]) => any>) => 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":";AAsCA,MAAa,gCAAgC;;;;AAsB7C,SAAgB,wBAAwB,QAAgE;CACtG,OAAQ,OAA2C;AACrD;AA4CA,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
@@ -11,8 +11,7 @@ function stringifyCssVars(values) {
11
11
  * 读取当前 SFC 的 CSS Modules 映射。
12
12
  */
13
13
  function useCssModule(name = "$style") {
14
- const modules = assertInSetup("useCssModule")[WEVU_CSS_MODULES_KEY];
15
- const resolved = modules === null || modules === void 0 ? void 0 : modules[name];
14
+ const resolved = assertInSetup("useCssModule")[WEVU_CSS_MODULES_KEY]?.[name];
16
15
  if (!resolved || typeof resolved !== "object") throw new Error(`useCssModule() 找不到名为 ${JSON.stringify(name)} 的 CSS Module`);
17
16
  return resolved;
18
17
  }
@@ -23,12 +22,9 @@ function useCssModule(name = "$style") {
23
22
  function useCssVars(getter) {
24
23
  const instance = assertInSetup("useCssVars");
25
24
  const runtime = instance.__wevu;
26
- const style = computed(() => {
27
- var _runtime$proxy;
28
- return stringifyCssVars(getter((_runtime$proxy = runtime === null || runtime === void 0 ? void 0 : runtime.proxy) !== null && _runtime$proxy !== void 0 ? _runtime$proxy : instance));
29
- });
30
- if ((runtime === null || runtime === void 0 ? void 0 : runtime.state) && typeof runtime.state === "object") runtime.state[WEVU_CSS_VARS_STYLE_KEY] = style;
31
- if ((runtime === null || runtime === void 0 ? void 0 : runtime.setupState) && typeof runtime.setupState === "object") runtime.setupState[WEVU_CSS_VARS_STYLE_KEY] = style;
25
+ const style = computed(() => stringifyCssVars(getter(runtime?.proxy ?? instance)));
26
+ if (runtime?.state && typeof runtime.state === "object") runtime.state[WEVU_CSS_VARS_STYLE_KEY] = style;
27
+ if (runtime?.setupState && typeof runtime.setupState === "object") runtime.setupState[WEVU_CSS_VARS_STYLE_KEY] = style;
32
28
  return style;
33
29
  }
34
30
 
@@ -1 +1 @@
1
- {"version":3,"file":"css.mjs","names":[],"sources":["../../../src/runtime/css.ts"],"sourcesContent":["import type { ComputedRef } from '../reactivity'\nimport { WEVU_CSS_MODULES_KEY, WEVU_CSS_VARS_STYLE_KEY } from '@weapp-core/constants'\nimport { computed, unref } from '../reactivity'\nimport { assertInSetup } from './hooks/base'\n\nfunction stringifyCssVars(values: Record<string, unknown>) {\n return Object.entries(values)\n .map(([key, value]) => `--${key}:${value == null ? '' : String(unref(value as any))}`)\n .join(';')\n}\n\n/**\n * 读取当前 SFC 的 CSS Modules 映射。\n */\nexport function useCssModule(name = '$style'): Record<string, string> {\n const instance = assertInSetup('useCssModule') as Record<string, any>\n const modules = instance[WEVU_CSS_MODULES_KEY]\n const resolved = modules?.[name]\n if (!resolved || typeof resolved !== 'object') {\n throw new Error(`useCssModule() 找不到名为 ${JSON.stringify(name)} 的 CSS Module`)\n }\n return resolved\n}\n\n/**\n * 注册编译器生成的响应式 CSS 变量。\n * @internal\n */\nexport function useCssVars(getter: (context: Record<string, any>) => Record<string, unknown>): ComputedRef<string> {\n const instance = assertInSetup('useCssVars') as Record<string, any>\n const runtime = instance.__wevu\n const style = computed(() => stringifyCssVars(getter(runtime?.proxy ?? instance)))\n if (runtime?.state && typeof runtime.state === 'object') {\n runtime.state[WEVU_CSS_VARS_STYLE_KEY] = style\n }\n if (runtime?.setupState && typeof runtime.setupState === 'object') {\n runtime.setupState[WEVU_CSS_VARS_STYLE_KEY] = style\n }\n return style\n}\n"],"mappings":";;;;;;AAKA,SAAS,iBAAiB,QAAiC;CACzD,OAAO,OAAO,QAAQ,MAAM,CAAC,CAC1B,KAAK,CAAC,KAAK,WAAW,KAAK,IAAI,GAAG,SAAS,OAAO,KAAK,OAAO,MAAM,KAAY,CAAC,GAAG,CAAC,CACrF,KAAK,GAAG;AACb;;;;AAKA,SAAgB,aAAa,OAAO,UAAkC;CAEpE,MAAM,UADW,cAAc,cACR,CAAC,CAAC;CACzB,MAAM,6DAAW,QAAU;CAC3B,IAAI,CAAC,YAAY,OAAO,aAAa,UACnC,MAAM,IAAI,MAAM,wBAAwB,KAAK,UAAU,IAAI,EAAE,cAAc;CAE7E,OAAO;AACT;;;;;AAMA,SAAgB,WAAW,QAAwF;CACjH,MAAM,WAAW,cAAc,YAAY;CAC3C,MAAM,UAAU,SAAS;CACzB,MAAM,QAAQ,eAAe;;0BAAiB,2EAAO,QAAS,gEAAS,QAAQ,CAAC;EAAC;CACjF,uDAAI,QAAS,UAAS,OAAO,QAAQ,UAAU,UAC7C,QAAQ,MAAM,2BAA2B;CAE3C,uDAAI,QAAS,eAAc,OAAO,QAAQ,eAAe,UACvD,QAAQ,WAAW,2BAA2B;CAEhD,OAAO;AACT"}
1
+ {"version":3,"file":"css.mjs","names":[],"sources":["../../../src/runtime/css.ts"],"sourcesContent":["import type { ComputedRef } from '../reactivity'\nimport { WEVU_CSS_MODULES_KEY, WEVU_CSS_VARS_STYLE_KEY } from '@weapp-core/constants'\nimport { computed, unref } from '../reactivity'\nimport { assertInSetup } from './hooks/base'\n\nfunction stringifyCssVars(values: Record<string, unknown>) {\n return Object.entries(values)\n .map(([key, value]) => `--${key}:${value == null ? '' : String(unref(value as any))}`)\n .join(';')\n}\n\n/**\n * 读取当前 SFC 的 CSS Modules 映射。\n */\nexport function useCssModule(name = '$style'): Record<string, string> {\n const instance = assertInSetup('useCssModule') as Record<string, any>\n const modules = instance[WEVU_CSS_MODULES_KEY]\n const resolved = modules?.[name]\n if (!resolved || typeof resolved !== 'object') {\n throw new Error(`useCssModule() 找不到名为 ${JSON.stringify(name)} 的 CSS Module`)\n }\n return resolved\n}\n\n/**\n * 注册编译器生成的响应式 CSS 变量。\n * @internal\n */\nexport function useCssVars(getter: (context: Record<string, any>) => Record<string, unknown>): ComputedRef<string> {\n const instance = assertInSetup('useCssVars') as Record<string, any>\n const runtime = instance.__wevu\n const style = computed(() => stringifyCssVars(getter(runtime?.proxy ?? instance)))\n if (runtime?.state && typeof runtime.state === 'object') {\n runtime.state[WEVU_CSS_VARS_STYLE_KEY] = style\n }\n if (runtime?.setupState && typeof runtime.setupState === 'object') {\n runtime.setupState[WEVU_CSS_VARS_STYLE_KEY] = style\n }\n return style\n}\n"],"mappings":";;;;;;AAKA,SAAS,iBAAiB,QAAiC;CACzD,OAAO,OAAO,QAAQ,MAAM,CAAC,CAC1B,KAAK,CAAC,KAAK,WAAW,KAAK,IAAI,GAAG,SAAS,OAAO,KAAK,OAAO,MAAM,KAAY,CAAC,GAAG,CAAC,CACrF,KAAK,GAAG;AACb;;;;AAKA,SAAgB,aAAa,OAAO,UAAkC;CAGpE,MAAM,WAFW,cAAc,cACR,CAAC,CAAC,qBACD,GAAG;CAC3B,IAAI,CAAC,YAAY,OAAO,aAAa,UACnC,MAAM,IAAI,MAAM,wBAAwB,KAAK,UAAU,IAAI,EAAE,cAAc;CAE7E,OAAO;AACT;;;;;AAMA,SAAgB,WAAW,QAAwF;CACjH,MAAM,WAAW,cAAc,YAAY;CAC3C,MAAM,UAAU,SAAS;CACzB,MAAM,QAAQ,eAAe,iBAAiB,OAAO,SAAS,SAAS,QAAQ,CAAC,CAAC;CACjF,IAAI,SAAS,SAAS,OAAO,QAAQ,UAAU,UAC7C,QAAQ,MAAM,2BAA2B;CAE3C,IAAI,SAAS,cAAc,OAAO,QAAQ,eAAe,UACvD,QAAQ,WAAW,2BAA2B;CAEhD,OAAO;AACT"}
@@ -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
@@ -15,14 +15,14 @@ function mergeDefaults(defaults, options) {
15
15
  const defaultSetData = getPlainRecord(defaults.setData);
16
16
  const optionSetData = getPlainRecord(options.setData);
17
17
  if (defaultSetData || optionSetData) merged.setData = {
18
- ...defaultSetData !== null && defaultSetData !== void 0 ? defaultSetData : {},
19
- ...optionSetData !== null && optionSetData !== void 0 ? optionSetData : {}
18
+ ...defaultSetData ?? {},
19
+ ...optionSetData ?? {}
20
20
  };
21
21
  const defaultOptions = getPlainRecord(defaults.options);
22
22
  const optionOptions = getPlainRecord(options.options);
23
23
  if (defaultOptions || optionOptions) merged.options = {
24
- ...defaultOptions !== null && defaultOptions !== void 0 ? defaultOptions : {},
25
- ...optionOptions !== null && optionOptions !== void 0 ? optionOptions : {}
24
+ ...defaultOptions ?? {},
25
+ ...optionOptions ?? {}
26
26
  };
27
27
  return merged;
28
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.mjs","names":[],"sources":["../../../src/runtime/defaults.ts"],"sourcesContent":["import type { CreateAppOptions, DefineComponentOptions } from './types'\n\nexport type WevuDefaultsScope = 'app' | 'component'\n\nexport const INTERNAL_DEFAULTS_SCOPE_KEY = '__wevuDefaultsScope'\n\nexport interface WevuDefaults {\n app?: Partial<CreateAppOptions<any, any, any>>\n component?: Partial<DefineComponentOptions<any, any, any, any>>\n}\n\nlet currentDefaults: WevuDefaults = {}\n\nfunction getPlainRecord(value: unknown): Record<string, any> | undefined {\n if (!value || typeof value !== 'object' || Array.isArray(value)) {\n return undefined\n }\n return value as Record<string, any>\n}\n\nfunction mergeDefaults<T extends Record<string, any>>(\n defaults?: Partial<T>,\n options?: Partial<T>,\n) {\n if (!defaults) {\n return options\n }\n if (!options) {\n return defaults\n }\n\n const merged = {\n ...(defaults as Record<string, any>),\n ...(options as Record<string, any>),\n }\n\n const defaultSetData = getPlainRecord((defaults as any).setData)\n const optionSetData = getPlainRecord((options as any).setData)\n if (defaultSetData || optionSetData) {\n merged.setData = {\n ...(defaultSetData ?? {}),\n ...(optionSetData ?? {}),\n }\n }\n\n const defaultOptions = getPlainRecord((defaults as any).options)\n const optionOptions = getPlainRecord((options as any).options)\n if (defaultOptions || optionOptions) {\n merged.options = {\n ...(defaultOptions ?? {}),\n ...(optionOptions ?? {}),\n }\n }\n\n return merged as Partial<T>\n}\n\nfunction mergeWithDefaults<T extends Record<string, any>>(\n defaults: Partial<T> | undefined,\n options: T,\n): T {\n return mergeDefaults(defaults, options) as T\n}\n\nfunction mergeWevuDefaults(base: WevuDefaults, next: WevuDefaults): WevuDefaults {\n return {\n app: mergeDefaults(base.app, next.app),\n component: mergeDefaults(base.component, next.component),\n }\n}\n\nexport function setWevuDefaults(next: WevuDefaults) {\n currentDefaults = mergeWevuDefaults(currentDefaults, next)\n}\n\nexport function resetWevuDefaults() {\n currentDefaults = {}\n}\n\n/**\n * 读取当前默认配置(框架内部使用)。\n * @internal\n */\nexport function resolveWevuDefaults() {\n return currentDefaults\n}\n\n/**\n * 将默认配置应用到 App 选项(框架内部使用)。\n * @internal\n */\nexport function applyWevuAppDefaults<T extends CreateAppOptions<any, any, any>>(options: T): T {\n return mergeWithDefaults(currentDefaults.app as Partial<T> | undefined, options)\n}\n\n/**\n * 将默认配置应用到组件选项(框架内部使用)。\n * @internal\n */\nexport function applyWevuComponentDefaults<T extends DefineComponentOptions<any, any, any, any>>(options: T): T {\n return mergeWithDefaults(currentDefaults.component as Partial<T> | undefined, options)\n}\n"],"mappings":";AAIA,MAAa,8BAA8B;AAO3C,IAAI,kBAAgC,CAAC;AAErC,SAAS,eAAe,OAAiD;CACvE,IAAI,CAAC,SAAS,OAAO,UAAU,YAAY,MAAM,QAAQ,KAAK,GAC5D;CAEF,OAAO;AACT;AAEA,SAAS,cACP,UACA,SACA;CACA,IAAI,CAAC,UACH,OAAO;CAET,IAAI,CAAC,SACH,OAAO;CAGT,MAAM,SAAS;EACb,GAAI;EACJ,GAAI;CACN;CAEA,MAAM,iBAAiB,eAAgB,SAAiB,OAAO;CAC/D,MAAM,gBAAgB,eAAgB,QAAgB,OAAO;CAC7D,IAAI,kBAAkB,eACpB,OAAO,UAAU;EACf,GAAI,wEAAkB,CAAC;EACvB,GAAI,qEAAiB,CAAC;CACxB;CAGF,MAAM,iBAAiB,eAAgB,SAAiB,OAAO;CAC/D,MAAM,gBAAgB,eAAgB,QAAgB,OAAO;CAC7D,IAAI,kBAAkB,eACpB,OAAO,UAAU;EACf,GAAI,wEAAkB,CAAC;EACvB,GAAI,qEAAiB,CAAC;CACxB;CAGF,OAAO;AACT;AAEA,SAAS,kBACP,UACA,SACG;CACH,OAAO,cAAc,UAAU,OAAO;AACxC;AAEA,SAAS,kBAAkB,MAAoB,MAAkC;CAC/E,OAAO;EACL,KAAK,cAAc,KAAK,KAAK,KAAK,GAAG;EACrC,WAAW,cAAc,KAAK,WAAW,KAAK,SAAS;CACzD;AACF;AAEA,SAAgB,gBAAgB,MAAoB;CAClD,kBAAkB,kBAAkB,iBAAiB,IAAI;AAC3D;AAEA,SAAgB,oBAAoB;CAClC,kBAAkB,CAAC;AACrB;;;;;AAcA,SAAgB,qBAAgE,SAAe;CAC7F,OAAO,kBAAkB,gBAAgB,KAA+B,OAAO;AACjF;;;;;AAMA,SAAgB,2BAAiF,SAAe;CAC9G,OAAO,kBAAkB,gBAAgB,WAAqC,OAAO;AACvF"}
1
+ {"version":3,"file":"defaults.mjs","names":[],"sources":["../../../src/runtime/defaults.ts"],"sourcesContent":["import type { CreateAppOptions, DefineComponentOptions } from './types'\n\nexport type WevuDefaultsScope = 'app' | 'component'\n\nexport const INTERNAL_DEFAULTS_SCOPE_KEY = '__wevuDefaultsScope'\n\nexport interface WevuDefaults {\n app?: Partial<CreateAppOptions<any, any, any>>\n component?: Partial<DefineComponentOptions<any, any, any, any>>\n}\n\nlet currentDefaults: WevuDefaults = {}\n\nfunction getPlainRecord(value: unknown): Record<string, any> | undefined {\n if (!value || typeof value !== 'object' || Array.isArray(value)) {\n return undefined\n }\n return value as Record<string, any>\n}\n\nfunction mergeDefaults<T extends Record<string, any>>(\n defaults?: Partial<T>,\n options?: Partial<T>,\n) {\n if (!defaults) {\n return options\n }\n if (!options) {\n return defaults\n }\n\n const merged = {\n ...(defaults as Record<string, any>),\n ...(options as Record<string, any>),\n }\n\n const defaultSetData = getPlainRecord((defaults as any).setData)\n const optionSetData = getPlainRecord((options as any).setData)\n if (defaultSetData || optionSetData) {\n merged.setData = {\n ...(defaultSetData ?? {}),\n ...(optionSetData ?? {}),\n }\n }\n\n const defaultOptions = getPlainRecord((defaults as any).options)\n const optionOptions = getPlainRecord((options as any).options)\n if (defaultOptions || optionOptions) {\n merged.options = {\n ...(defaultOptions ?? {}),\n ...(optionOptions ?? {}),\n }\n }\n\n return merged as Partial<T>\n}\n\nfunction mergeWithDefaults<T extends Record<string, any>>(\n defaults: Partial<T> | undefined,\n options: T,\n): T {\n return mergeDefaults(defaults, options) as T\n}\n\nfunction mergeWevuDefaults(base: WevuDefaults, next: WevuDefaults): WevuDefaults {\n return {\n app: mergeDefaults(base.app, next.app),\n component: mergeDefaults(base.component, next.component),\n }\n}\n\nexport function setWevuDefaults(next: WevuDefaults) {\n currentDefaults = mergeWevuDefaults(currentDefaults, next)\n}\n\nexport function resetWevuDefaults() {\n currentDefaults = {}\n}\n\n/**\n * 读取当前默认配置(框架内部使用)。\n * @internal\n */\nexport function resolveWevuDefaults() {\n return currentDefaults\n}\n\n/**\n * 将默认配置应用到 App 选项(框架内部使用)。\n * @internal\n */\nexport function applyWevuAppDefaults<T extends CreateAppOptions<any, any, any>>(options: T): T {\n return mergeWithDefaults(currentDefaults.app as Partial<T> | undefined, options)\n}\n\n/**\n * 将默认配置应用到组件选项(框架内部使用)。\n * @internal\n */\nexport function applyWevuComponentDefaults<T extends DefineComponentOptions<any, any, any, any>>(options: T): T {\n return mergeWithDefaults(currentDefaults.component as Partial<T> | undefined, options)\n}\n"],"mappings":";AAIA,MAAa,8BAA8B;AAO3C,IAAI,kBAAgC,CAAC;AAErC,SAAS,eAAe,OAAiD;CACvE,IAAI,CAAC,SAAS,OAAO,UAAU,YAAY,MAAM,QAAQ,KAAK,GAC5D;CAEF,OAAO;AACT;AAEA,SAAS,cACP,UACA,SACA;CACA,IAAI,CAAC,UACH,OAAO;CAET,IAAI,CAAC,SACH,OAAO;CAGT,MAAM,SAAS;EACb,GAAI;EACJ,GAAI;CACN;CAEA,MAAM,iBAAiB,eAAgB,SAAiB,OAAO;CAC/D,MAAM,gBAAgB,eAAgB,QAAgB,OAAO;CAC7D,IAAI,kBAAkB,eACpB,OAAO,UAAU;EACf,GAAI,kBAAkB,CAAC;EACvB,GAAI,iBAAiB,CAAC;CACxB;CAGF,MAAM,iBAAiB,eAAgB,SAAiB,OAAO;CAC/D,MAAM,gBAAgB,eAAgB,QAAgB,OAAO;CAC7D,IAAI,kBAAkB,eACpB,OAAO,UAAU;EACf,GAAI,kBAAkB,CAAC;EACvB,GAAI,iBAAiB,CAAC;CACxB;CAGF,OAAO;AACT;AAEA,SAAS,kBACP,UACA,SACG;CACH,OAAO,cAAc,UAAU,OAAO;AACxC;AAEA,SAAS,kBAAkB,MAAoB,MAAkC;CAC/E,OAAO;EACL,KAAK,cAAc,KAAK,KAAK,KAAK,GAAG;EACrC,WAAW,cAAc,KAAK,WAAW,KAAK,SAAS;CACzD;AACF;AAEA,SAAgB,gBAAgB,MAAoB;CAClD,kBAAkB,kBAAkB,iBAAiB,IAAI;AAC3D;AAEA,SAAgB,oBAAoB;CAClC,kBAAkB,CAAC;AACrB;;;;;AAcA,SAAgB,qBAAgE,SAAe;CAC7F,OAAO,kBAAkB,gBAAgB,KAA+B,OAAO;AACjF;;;;;AAMA,SAAgB,2BAAiF,SAAe;CAC9G,OAAO,kBAAkB,gBAAgB,WAAqC,OAAO;AACvF"}
@@ -7,7 +7,7 @@ import { WEVU_SLOT_OWNER_ID_KEY } from "@weapp-core/constants";
7
7
  var InitialComputedBailout = class extends Error {};
8
8
  function resolveComputedGetter(definition) {
9
9
  if (typeof definition === "function") return definition;
10
- const getter = definition === null || definition === void 0 ? void 0 : definition.get;
10
+ const getter = definition?.get;
11
11
  return typeof getter === "function" ? getter : void 0;
12
12
  }
13
13
  function isCompilerGeneratedTemplateComputedKey(key) {
@@ -17,7 +17,7 @@ function canResolveInitialTemplateComputed(key, getter) {
17
17
  if (!key.startsWith("__wv_bind_")) return false;
18
18
  try {
19
19
  return !/\bthis\b/.test(Function.prototype.toString.call(getter));
20
- } catch (_unused) {
20
+ } catch {
21
21
  return false;
22
22
  }
23
23
  }
@@ -27,9 +27,9 @@ function resolveRuntimeBindingPlaceholder(key) {
27
27
  if (key.startsWith("__wv_cls_") || key.startsWith("__wv_style_")) return "";
28
28
  }
29
29
  function resolveRuntimeBindingPlaceholderData(data, setData) {
30
- const pickKeys = Array.isArray(setData === null || setData === void 0 ? void 0 : setData.pick) ? setData.pick : [];
30
+ const pickKeys = Array.isArray(setData?.pick) ? setData.pick : [];
31
31
  if (!pickKeys.length) return;
32
- const omitKeys = new Set(Array.isArray(setData === null || setData === void 0 ? void 0 : setData.omit) ? setData.omit : []);
32
+ const omitKeys = new Set(Array.isArray(setData?.omit) ? setData.omit : []);
33
33
  const resolved = {};
34
34
  for (const key of pickKeys) {
35
35
  if (omitKeys.has(key) || hasOwn(data, key)) continue;
@@ -73,7 +73,7 @@ function resolveInitialComputedData(options) {
73
73
  ok: true,
74
74
  value
75
75
  };
76
- } catch (_unused2) {
76
+ } catch {
77
77
  return { ok: false };
78
78
  } finally {
79
79
  resolving.delete(key);
@@ -1 +1 @@
1
- {"version":3,"file":"initialComputed.mjs","names":[],"sources":["../../../../src/runtime/define/initialComputed.ts"],"sourcesContent":["import type { WritableComputedOptions } from '../../reactivity'\nimport type { ComputedDefinitions, SetDataSnapshotOptions } from '../types'\nimport { WEVU_SLOT_OWNER_ID_KEY } from '@weapp-core/constants'\nimport { hasOwn } from '../../utils'\nimport { resolveSetDataOptions } from '../app/setDataOptions'\nimport { toPlain } from '../diff'\n\nclass InitialComputedBailout extends Error {}\n\nfunction resolveComputedGetter(definition: unknown): ((...args: any[]) => unknown) | undefined {\n if (typeof definition === 'function') {\n return definition as (...args: any[]) => unknown\n }\n const getter = (definition as WritableComputedOptions<any> | undefined)?.get\n return typeof getter === 'function' ? getter : undefined\n}\n\nfunction isCompilerGeneratedTemplateComputedKey(key: string) {\n return key.startsWith('__wv_bind_')\n || key.startsWith('__wv_cls_')\n || key.startsWith('__wv_style_')\n}\n\nfunction canResolveInitialTemplateComputed(key: string, getter: (...args: any[]) => unknown) {\n if (!key.startsWith('__wv_bind_')) {\n return false\n }\n try {\n return !/\\bthis\\b/.test(Function.prototype.toString.call(getter))\n }\n catch {\n return false\n }\n}\n\nfunction resolveRuntimeBindingPlaceholder(key: string) {\n if (key === WEVU_SLOT_OWNER_ID_KEY) {\n return ''\n }\n if (key.startsWith('__wv_bind_')) {\n return null\n }\n if (key.startsWith('__wv_cls_') || key.startsWith('__wv_style_')) {\n return ''\n }\n}\n\nfunction resolveRuntimeBindingPlaceholderData(\n data: Record<string, any>,\n setData: SetDataSnapshotOptions | undefined,\n) {\n const pickKeys = Array.isArray(setData?.pick) ? setData.pick : []\n if (!pickKeys.length) {\n return undefined\n }\n const omitKeys = new Set(Array.isArray(setData?.omit) ? setData.omit : [])\n const resolved: Record<string, any> = {}\n for (const key of pickKeys) {\n if (omitKeys.has(key) || hasOwn(data, key)) {\n continue\n }\n const placeholder = resolveRuntimeBindingPlaceholder(key)\n if (placeholder !== undefined) {\n resolved[key] = placeholder\n }\n }\n return Object.keys(resolved).length ? resolved : undefined\n}\n\nexport function resolveInitialComputedData(options: {\n data: Record<string, any>\n computed: ComputedDefinitions | undefined\n methods?: Record<string, any>\n setData: SetDataSnapshotOptions | undefined\n}) {\n const {\n data,\n computed,\n methods,\n setData,\n } = options\n const computedKeys = computed ? Object.keys(computed) : []\n if (!computedKeys.length) {\n return undefined\n }\n\n const {\n includeComputed,\n shouldIncludeKey,\n toPlainMaxDepth,\n toPlainMaxKeys,\n includeFunctions,\n functionPaths,\n } = resolveSetDataOptions(setData)\n if (!includeComputed) {\n return undefined\n }\n\n const resolved: Record<string, any> = {}\n const resolving = new Set<string>()\n let proxy!: Record<string, any>\n const resolveComputedValue = (key: string): { ok: true, value: any } | { ok: false } => {\n if (hasOwn(data, key) || !shouldIncludeKey(key)) {\n return { ok: false }\n }\n if (hasOwn(resolved, key)) {\n return { ok: true, value: resolved[key] }\n }\n if (resolving.has(key)) {\n return { ok: false }\n }\n const getter = resolveComputedGetter((computed as ComputedDefinitions)[key])\n if (!getter) {\n return { ok: false }\n }\n resolving.add(key)\n try {\n const rawValue = getter.call(proxy)\n if (rawValue === undefined) {\n return { ok: false }\n }\n const value = toPlain(rawValue, new WeakMap(), {\n maxDepth: toPlainMaxDepth,\n maxKeys: toPlainMaxKeys,\n includeFunctions,\n functionPaths,\n _path: key,\n })\n if (value === undefined) {\n return { ok: false }\n }\n resolved[key] = value\n return { ok: true, value }\n }\n catch {\n return { ok: false }\n }\n finally {\n resolving.delete(key)\n }\n }\n\n proxy = new Proxy(data, {\n get(target, key, receiver) {\n if (typeof key === 'string') {\n if (key === 'data' || key === '$state') {\n return data\n }\n if (key === 'props' || key === '$props' || key === '$attrs') {\n throw new InitialComputedBailout()\n }\n if (hasOwn(data, key)) {\n return Reflect.get(target, key, receiver)\n }\n if (methods && hasOwn(methods, key)) {\n const method = methods[key]\n return typeof method === 'function' ? method.bind(proxy) : method\n }\n if (computed && hasOwn(computed, key)) {\n const computedValue = resolveComputedValue(key)\n if (computedValue.ok) {\n return computedValue.value\n }\n throw new InitialComputedBailout()\n }\n throw new InitialComputedBailout()\n }\n return Reflect.get(target, key, receiver)\n },\n has(target, key) {\n return Reflect.has(target, key)\n || (typeof key === 'string' && Boolean(\n computed && hasOwn(computed, key),\n ))\n },\n })\n\n for (const key of computedKeys) {\n const getter = resolveComputedGetter((computed as ComputedDefinitions)[key])\n if (isCompilerGeneratedTemplateComputedKey(key) && (!getter || !canResolveInitialTemplateComputed(key, getter))) {\n continue\n }\n resolveComputedValue(key)\n }\n\n return Object.keys(resolved).length ? resolved : undefined\n}\n\nexport function resolveNativeInitialData(\n data: unknown,\n computed: ComputedDefinitions | undefined,\n setData: SetDataSnapshotOptions | undefined,\n methods?: Record<string, any>,\n) {\n if (!data || typeof data !== 'object') {\n return data\n }\n const initialComputedData = resolveInitialComputedData({\n data: data as Record<string, any>,\n computed,\n methods,\n setData,\n })\n const runtimeBindingPlaceholderData = resolveRuntimeBindingPlaceholderData(data as Record<string, any>, setData)\n return initialComputedData || runtimeBindingPlaceholderData\n ? {\n ...(data as Record<string, any>),\n ...runtimeBindingPlaceholderData,\n ...initialComputedData,\n }\n : data\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"initialComputed.mjs","names":[],"sources":["../../../../src/runtime/define/initialComputed.ts"],"sourcesContent":["import type { WritableComputedOptions } from '../../reactivity'\nimport type { ComputedDefinitions, SetDataSnapshotOptions } from '../types'\nimport { WEVU_SLOT_OWNER_ID_KEY } from '@weapp-core/constants'\nimport { hasOwn } from '../../utils'\nimport { resolveSetDataOptions } from '../app/setDataOptions'\nimport { toPlain } from '../diff'\n\nclass InitialComputedBailout extends Error {}\n\nfunction resolveComputedGetter(definition: unknown): ((...args: any[]) => unknown) | undefined {\n if (typeof definition === 'function') {\n return definition as (...args: any[]) => unknown\n }\n const getter = (definition as WritableComputedOptions<any> | undefined)?.get\n return typeof getter === 'function' ? getter : undefined\n}\n\nfunction isCompilerGeneratedTemplateComputedKey(key: string) {\n return key.startsWith('__wv_bind_')\n || key.startsWith('__wv_cls_')\n || key.startsWith('__wv_style_')\n}\n\nfunction canResolveInitialTemplateComputed(key: string, getter: (...args: any[]) => unknown) {\n if (!key.startsWith('__wv_bind_')) {\n return false\n }\n try {\n return !/\\bthis\\b/.test(Function.prototype.toString.call(getter))\n }\n catch {\n return false\n }\n}\n\nfunction resolveRuntimeBindingPlaceholder(key: string) {\n if (key === WEVU_SLOT_OWNER_ID_KEY) {\n return ''\n }\n if (key.startsWith('__wv_bind_')) {\n return null\n }\n if (key.startsWith('__wv_cls_') || key.startsWith('__wv_style_')) {\n return ''\n }\n}\n\nfunction resolveRuntimeBindingPlaceholderData(\n data: Record<string, any>,\n setData: SetDataSnapshotOptions | undefined,\n) {\n const pickKeys = Array.isArray(setData?.pick) ? setData.pick : []\n if (!pickKeys.length) {\n return undefined\n }\n const omitKeys = new Set(Array.isArray(setData?.omit) ? setData.omit : [])\n const resolved: Record<string, any> = {}\n for (const key of pickKeys) {\n if (omitKeys.has(key) || hasOwn(data, key)) {\n continue\n }\n const placeholder = resolveRuntimeBindingPlaceholder(key)\n if (placeholder !== undefined) {\n resolved[key] = placeholder\n }\n }\n return Object.keys(resolved).length ? resolved : undefined\n}\n\nexport function resolveInitialComputedData(options: {\n data: Record<string, any>\n computed: ComputedDefinitions | undefined\n methods?: Record<string, any>\n setData: SetDataSnapshotOptions | undefined\n}) {\n const {\n data,\n computed,\n methods,\n setData,\n } = options\n const computedKeys = computed ? Object.keys(computed) : []\n if (!computedKeys.length) {\n return undefined\n }\n\n const {\n includeComputed,\n shouldIncludeKey,\n toPlainMaxDepth,\n toPlainMaxKeys,\n includeFunctions,\n functionPaths,\n } = resolveSetDataOptions(setData)\n if (!includeComputed) {\n return undefined\n }\n\n const resolved: Record<string, any> = {}\n const resolving = new Set<string>()\n let proxy!: Record<string, any>\n const resolveComputedValue = (key: string): { ok: true, value: any } | { ok: false } => {\n if (hasOwn(data, key) || !shouldIncludeKey(key)) {\n return { ok: false }\n }\n if (hasOwn(resolved, key)) {\n return { ok: true, value: resolved[key] }\n }\n if (resolving.has(key)) {\n return { ok: false }\n }\n const getter = resolveComputedGetter((computed as ComputedDefinitions)[key])\n if (!getter) {\n return { ok: false }\n }\n resolving.add(key)\n try {\n const rawValue = getter.call(proxy)\n if (rawValue === undefined) {\n return { ok: false }\n }\n const value = toPlain(rawValue, new WeakMap(), {\n maxDepth: toPlainMaxDepth,\n maxKeys: toPlainMaxKeys,\n includeFunctions,\n functionPaths,\n _path: key,\n })\n if (value === undefined) {\n return { ok: false }\n }\n resolved[key] = value\n return { ok: true, value }\n }\n catch {\n return { ok: false }\n }\n finally {\n resolving.delete(key)\n }\n }\n\n proxy = new Proxy(data, {\n get(target, key, receiver) {\n if (typeof key === 'string') {\n if (key === 'data' || key === '$state') {\n return data\n }\n if (key === 'props' || key === '$props' || key === '$attrs') {\n throw new InitialComputedBailout()\n }\n if (hasOwn(data, key)) {\n return Reflect.get(target, key, receiver)\n }\n if (methods && hasOwn(methods, key)) {\n const method = methods[key]\n return typeof method === 'function' ? method.bind(proxy) : method\n }\n if (computed && hasOwn(computed, key)) {\n const computedValue = resolveComputedValue(key)\n if (computedValue.ok) {\n return computedValue.value\n }\n throw new InitialComputedBailout()\n }\n throw new InitialComputedBailout()\n }\n return Reflect.get(target, key, receiver)\n },\n has(target, key) {\n return Reflect.has(target, key)\n || (typeof key === 'string' && Boolean(\n computed && hasOwn(computed, key),\n ))\n },\n })\n\n for (const key of computedKeys) {\n const getter = resolveComputedGetter((computed as ComputedDefinitions)[key])\n if (isCompilerGeneratedTemplateComputedKey(key) && (!getter || !canResolveInitialTemplateComputed(key, getter))) {\n continue\n }\n resolveComputedValue(key)\n }\n\n return Object.keys(resolved).length ? resolved : undefined\n}\n\nexport function resolveNativeInitialData(\n data: unknown,\n computed: ComputedDefinitions | undefined,\n setData: SetDataSnapshotOptions | undefined,\n methods?: Record<string, any>,\n) {\n if (!data || typeof data !== 'object') {\n return data\n }\n const initialComputedData = resolveInitialComputedData({\n data: data as Record<string, any>,\n computed,\n methods,\n setData,\n })\n const runtimeBindingPlaceholderData = resolveRuntimeBindingPlaceholderData(data as Record<string, any>, setData)\n return initialComputedData || runtimeBindingPlaceholderData\n ? {\n ...(data as Record<string, any>),\n ...runtimeBindingPlaceholderData,\n ...initialComputedData,\n }\n : data\n}\n"],"mappings":"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"}
@@ -74,12 +74,11 @@ function mergeData(parent, child) {
74
74
  if (parent === void 0) return child;
75
75
  if (child === void 0) return parent;
76
76
  return function mergedOptionData() {
77
- var _asRecord, _asRecord2;
78
77
  const parentData = typeof parent === "function" ? parent.call(this) : parent;
79
78
  const childData = typeof child === "function" ? child.call(this) : child;
80
79
  return {
81
- ...(_asRecord = asRecord(parentData)) !== null && _asRecord !== void 0 ? _asRecord : {},
82
- ...(_asRecord2 = asRecord(childData)) !== null && _asRecord2 !== void 0 ? _asRecord2 : {}
80
+ ...asRecord(parentData) ?? {},
81
+ ...asRecord(childData) ?? {}
83
82
  };
84
83
  };
85
84
  }
@@ -98,15 +97,14 @@ function mergeWatchDescriptor(parent, child) {
98
97
  const parentRecord = asRecord(parent);
99
98
  const childRecord = asRecord(child);
100
99
  return {
101
- ...parentRecord !== null && parentRecord !== void 0 ? parentRecord : {},
102
- ...childRecord !== null && childRecord !== void 0 ? childRecord : {},
100
+ ...parentRecord ?? {},
101
+ ...childRecord ?? {},
103
102
  handler(...args) {
104
- var _resolveWatchHandler, _resolveWatchHandler2;
105
- (_resolveWatchHandler = resolveWatchHandler(parent, this)) === null || _resolveWatchHandler === void 0 || _resolveWatchHandler.apply(this, args);
106
- return (_resolveWatchHandler2 = resolveWatchHandler(child, this)) === null || _resolveWatchHandler2 === void 0 ? void 0 : _resolveWatchHandler2.apply(this, args);
103
+ resolveWatchHandler(parent, this)?.apply(this, args);
104
+ return resolveWatchHandler(child, this)?.apply(this, args);
107
105
  },
108
- immediate: Boolean((parentRecord === null || parentRecord === void 0 ? void 0 : parentRecord.immediate) || (childRecord === null || childRecord === void 0 ? void 0 : childRecord.immediate)),
109
- deep: Boolean((parentRecord === null || parentRecord === void 0 ? void 0 : parentRecord.deep) || (childRecord === null || childRecord === void 0 ? void 0 : childRecord.deep))
106
+ immediate: Boolean(parentRecord?.immediate || childRecord?.immediate),
107
+ deep: Boolean(parentRecord?.deep || childRecord?.deep)
110
108
  };
111
109
  }
112
110
  function mergeWatch(parent, child) {
@@ -134,8 +132,8 @@ function mergeOptions(parent, child) {
134
132
  const parentRecord = asRecord(parent[key]);
135
133
  const childRecord = asRecord(child[key]);
136
134
  if (parentRecord || childRecord) merged[key] = {
137
- ...parentRecord !== null && parentRecord !== void 0 ? parentRecord : {},
138
- ...childRecord !== null && childRecord !== void 0 ? childRecord : {}
135
+ ...parentRecord ?? {},
136
+ ...childRecord ?? {}
139
137
  };
140
138
  }
141
139
  merged.data = mergeData(parent.data, child.data);
@@ -1 +1 @@
1
- {"version":3,"file":"options.mjs","names":[],"sources":["../../../../src/runtime/define/options.ts"],"sourcesContent":["import type { DefineComponentOptions } from '../types'\n\ntype ComponentOptions = DefineComponentOptions<any, any, any, any, any>\ntype OptionRecord = Record<string, any>\n\nconst OBJECT_OPTION_KEYS = [\n 'components',\n 'computed',\n 'directives',\n 'inject',\n 'methods',\n 'props',\n 'provide',\n] as const\n\nconst HOOK_OPTION_KEYS = new Set([\n 'activated',\n 'attached',\n 'beforeCreate',\n 'beforeDestroy',\n 'beforeMount',\n 'beforeUnmount',\n 'beforeUpdate',\n 'created',\n 'deactivated',\n 'destroyed',\n 'detached',\n 'errorCaptured',\n 'hide',\n 'mounted',\n 'moved',\n 'onAddToFavorites',\n 'onHide',\n 'onLoad',\n 'onPageScroll',\n 'onPullDownRefresh',\n 'onReachBottom',\n 'onReady',\n 'onResize',\n 'onRouteDone',\n 'onSaveExitState',\n 'onShareAppMessage',\n 'onShareTimeline',\n 'onShow',\n 'onTabItemTap',\n 'onUnload',\n 'ready',\n 'renderTracked',\n 'renderTriggered',\n 'serverPrefetch',\n 'show',\n 'unmounted',\n 'updated',\n])\n\nfunction asRecord(value: unknown): OptionRecord | undefined {\n return value && typeof value === 'object' && !Array.isArray(value)\n ? value as OptionRecord\n : undefined\n}\n\nfunction mergeHook(parent: unknown, child: unknown) {\n if (typeof parent !== 'function') {\n return child\n }\n if (typeof child !== 'function') {\n return parent\n }\n return function mergedOptionHook(this: unknown, ...args: unknown[]) {\n parent.apply(this, args)\n return child.apply(this, args)\n }\n}\n\nfunction mergeHookRecord(parent: unknown, child: unknown) {\n const parentRecord = asRecord(parent)\n const childRecord = asRecord(child)\n if (!parentRecord) {\n return childRecord\n }\n if (!childRecord) {\n return parentRecord\n }\n const merged = { ...parentRecord, ...childRecord }\n for (const key of new Set([...Object.keys(parentRecord), ...Object.keys(childRecord)])) {\n merged[key] = mergeHook(parentRecord[key], childRecord[key])\n }\n return merged\n}\n\nfunction mergeData(parent: unknown, child: unknown) {\n if (parent === undefined) {\n return child\n }\n if (child === undefined) {\n return parent\n }\n return function mergedOptionData(this: unknown) {\n const parentData = typeof parent === 'function' ? parent.call(this) : parent\n const childData = typeof child === 'function' ? child.call(this) : child\n return {\n ...(asRecord(parentData) ?? {}),\n ...(asRecord(childData) ?? {}),\n }\n }\n}\n\nfunction resolveWatchHandler(descriptor: unknown, context: OptionRecord): ((...args: unknown[]) => unknown) | undefined {\n if (typeof descriptor === 'function') {\n return descriptor as (...args: unknown[]) => unknown\n }\n if (typeof descriptor === 'string') {\n const method = context[descriptor]\n return typeof method === 'function' ? method : undefined\n }\n const record = asRecord(descriptor)\n return record ? resolveWatchHandler(record.handler, context) : undefined\n}\n\nfunction mergeWatchDescriptor(parent: unknown, child: unknown) {\n if (parent === undefined) {\n return child\n }\n if (child === undefined) {\n return parent\n }\n const parentRecord = asRecord(parent)\n const childRecord = asRecord(child)\n return {\n ...(parentRecord ?? {}),\n ...(childRecord ?? {}),\n handler(this: OptionRecord, ...args: unknown[]) {\n resolveWatchHandler(parent, this)?.apply(this, args)\n return resolveWatchHandler(child, this)?.apply(this, args)\n },\n immediate: Boolean(parentRecord?.immediate || childRecord?.immediate),\n deep: Boolean(parentRecord?.deep || childRecord?.deep),\n }\n}\n\nfunction mergeWatch(parent: unknown, child: unknown) {\n const parentRecord = asRecord(parent)\n const childRecord = asRecord(child)\n if (!parentRecord) {\n return childRecord\n }\n if (!childRecord) {\n return parentRecord\n }\n const merged = { ...parentRecord, ...childRecord }\n for (const key of new Set([...Object.keys(parentRecord), ...Object.keys(childRecord)])) {\n merged[key] = mergeWatchDescriptor(parentRecord[key], childRecord[key])\n }\n return merged\n}\n\nfunction mergeArray(parent: unknown, child: unknown) {\n const values = [\n ...(Array.isArray(parent) ? parent : []),\n ...(Array.isArray(child) ? child : []),\n ]\n return [...new Set(values)]\n}\n\nfunction mergeOptions(parent: OptionRecord, child: OptionRecord) {\n const merged: OptionRecord = { ...parent, ...child }\n\n for (const key of OBJECT_OPTION_KEYS) {\n const parentRecord = asRecord(parent[key])\n const childRecord = asRecord(child[key])\n if (parentRecord || childRecord) {\n merged[key] = { ...(parentRecord ?? {}), ...(childRecord ?? {}) }\n }\n }\n\n merged.data = mergeData(parent.data, child.data)\n merged.watch = mergeWatch(parent.watch, child.watch)\n merged.lifetimes = mergeHookRecord(parent.lifetimes, child.lifetimes)\n merged.pageLifetimes = mergeHookRecord(parent.pageLifetimes, child.pageLifetimes)\n\n for (const key of new Set([...Object.keys(parent), ...Object.keys(child)])) {\n if (HOOK_OPTION_KEYS.has(key)) {\n merged[key] = mergeHook(parent[key], child[key])\n }\n }\n\n if (Array.isArray(parent.emits) || Array.isArray(child.emits)) {\n merged.emits = mergeArray(parent.emits, child.emits)\n }\n if (Array.isArray(parent.expose) || Array.isArray(child.expose)) {\n merged.expose = mergeArray(parent.expose, child.expose)\n }\n return merged\n}\n\nfunction appendOptions(target: OptionRecord, source: unknown, seen: WeakSet<object>) {\n const sourceRecord = asRecord(source)\n if (!sourceRecord || seen.has(sourceRecord)) {\n return target\n }\n seen.add(sourceRecord)\n\n let merged = target\n merged = appendOptions(merged, sourceRecord.extends, seen)\n if (Array.isArray(sourceRecord.mixins)) {\n for (const mixin of sourceRecord.mixins) {\n merged = appendOptions(merged, mixin, seen)\n }\n }\n\n const {\n extends: _extends,\n mixins: _mixins,\n ...ownOptions\n } = sourceRecord\n return mergeOptions(merged, ownOptions)\n}\n\n/**\n * 将 Vue Options API 的 extends/mixins 展开为单一组件选项。\n */\nexport function resolveVueComponentOptions<T extends ComponentOptions>(options: T): T {\n return appendOptions({}, options, new WeakSet()) as T\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"options.mjs","names":[],"sources":["../../../../src/runtime/define/options.ts"],"sourcesContent":["import type { DefineComponentOptions } from '../types'\n\ntype ComponentOptions = DefineComponentOptions<any, any, any, any, any>\ntype OptionRecord = Record<string, any>\n\nconst OBJECT_OPTION_KEYS = [\n 'components',\n 'computed',\n 'directives',\n 'inject',\n 'methods',\n 'props',\n 'provide',\n] as const\n\nconst HOOK_OPTION_KEYS = new Set([\n 'activated',\n 'attached',\n 'beforeCreate',\n 'beforeDestroy',\n 'beforeMount',\n 'beforeUnmount',\n 'beforeUpdate',\n 'created',\n 'deactivated',\n 'destroyed',\n 'detached',\n 'errorCaptured',\n 'hide',\n 'mounted',\n 'moved',\n 'onAddToFavorites',\n 'onHide',\n 'onLoad',\n 'onPageScroll',\n 'onPullDownRefresh',\n 'onReachBottom',\n 'onReady',\n 'onResize',\n 'onRouteDone',\n 'onSaveExitState',\n 'onShareAppMessage',\n 'onShareTimeline',\n 'onShow',\n 'onTabItemTap',\n 'onUnload',\n 'ready',\n 'renderTracked',\n 'renderTriggered',\n 'serverPrefetch',\n 'show',\n 'unmounted',\n 'updated',\n])\n\nfunction asRecord(value: unknown): OptionRecord | undefined {\n return value && typeof value === 'object' && !Array.isArray(value)\n ? value as OptionRecord\n : undefined\n}\n\nfunction mergeHook(parent: unknown, child: unknown) {\n if (typeof parent !== 'function') {\n return child\n }\n if (typeof child !== 'function') {\n return parent\n }\n return function mergedOptionHook(this: unknown, ...args: unknown[]) {\n parent.apply(this, args)\n return child.apply(this, args)\n }\n}\n\nfunction mergeHookRecord(parent: unknown, child: unknown) {\n const parentRecord = asRecord(parent)\n const childRecord = asRecord(child)\n if (!parentRecord) {\n return childRecord\n }\n if (!childRecord) {\n return parentRecord\n }\n const merged = { ...parentRecord, ...childRecord }\n for (const key of new Set([...Object.keys(parentRecord), ...Object.keys(childRecord)])) {\n merged[key] = mergeHook(parentRecord[key], childRecord[key])\n }\n return merged\n}\n\nfunction mergeData(parent: unknown, child: unknown) {\n if (parent === undefined) {\n return child\n }\n if (child === undefined) {\n return parent\n }\n return function mergedOptionData(this: unknown) {\n const parentData = typeof parent === 'function' ? parent.call(this) : parent\n const childData = typeof child === 'function' ? child.call(this) : child\n return {\n ...(asRecord(parentData) ?? {}),\n ...(asRecord(childData) ?? {}),\n }\n }\n}\n\nfunction resolveWatchHandler(descriptor: unknown, context: OptionRecord): ((...args: unknown[]) => unknown) | undefined {\n if (typeof descriptor === 'function') {\n return descriptor as (...args: unknown[]) => unknown\n }\n if (typeof descriptor === 'string') {\n const method = context[descriptor]\n return typeof method === 'function' ? method : undefined\n }\n const record = asRecord(descriptor)\n return record ? resolveWatchHandler(record.handler, context) : undefined\n}\n\nfunction mergeWatchDescriptor(parent: unknown, child: unknown) {\n if (parent === undefined) {\n return child\n }\n if (child === undefined) {\n return parent\n }\n const parentRecord = asRecord(parent)\n const childRecord = asRecord(child)\n return {\n ...(parentRecord ?? {}),\n ...(childRecord ?? {}),\n handler(this: OptionRecord, ...args: unknown[]) {\n resolveWatchHandler(parent, this)?.apply(this, args)\n return resolveWatchHandler(child, this)?.apply(this, args)\n },\n immediate: Boolean(parentRecord?.immediate || childRecord?.immediate),\n deep: Boolean(parentRecord?.deep || childRecord?.deep),\n }\n}\n\nfunction mergeWatch(parent: unknown, child: unknown) {\n const parentRecord = asRecord(parent)\n const childRecord = asRecord(child)\n if (!parentRecord) {\n return childRecord\n }\n if (!childRecord) {\n return parentRecord\n }\n const merged = { ...parentRecord, ...childRecord }\n for (const key of new Set([...Object.keys(parentRecord), ...Object.keys(childRecord)])) {\n merged[key] = mergeWatchDescriptor(parentRecord[key], childRecord[key])\n }\n return merged\n}\n\nfunction mergeArray(parent: unknown, child: unknown) {\n const values = [\n ...(Array.isArray(parent) ? parent : []),\n ...(Array.isArray(child) ? child : []),\n ]\n return [...new Set(values)]\n}\n\nfunction mergeOptions(parent: OptionRecord, child: OptionRecord) {\n const merged: OptionRecord = { ...parent, ...child }\n\n for (const key of OBJECT_OPTION_KEYS) {\n const parentRecord = asRecord(parent[key])\n const childRecord = asRecord(child[key])\n if (parentRecord || childRecord) {\n merged[key] = { ...(parentRecord ?? {}), ...(childRecord ?? {}) }\n }\n }\n\n merged.data = mergeData(parent.data, child.data)\n merged.watch = mergeWatch(parent.watch, child.watch)\n merged.lifetimes = mergeHookRecord(parent.lifetimes, child.lifetimes)\n merged.pageLifetimes = mergeHookRecord(parent.pageLifetimes, child.pageLifetimes)\n\n for (const key of new Set([...Object.keys(parent), ...Object.keys(child)])) {\n if (HOOK_OPTION_KEYS.has(key)) {\n merged[key] = mergeHook(parent[key], child[key])\n }\n }\n\n if (Array.isArray(parent.emits) || Array.isArray(child.emits)) {\n merged.emits = mergeArray(parent.emits, child.emits)\n }\n if (Array.isArray(parent.expose) || Array.isArray(child.expose)) {\n merged.expose = mergeArray(parent.expose, child.expose)\n }\n return merged\n}\n\nfunction appendOptions(target: OptionRecord, source: unknown, seen: WeakSet<object>) {\n const sourceRecord = asRecord(source)\n if (!sourceRecord || seen.has(sourceRecord)) {\n return target\n }\n seen.add(sourceRecord)\n\n let merged = target\n merged = appendOptions(merged, sourceRecord.extends, seen)\n if (Array.isArray(sourceRecord.mixins)) {\n for (const mixin of sourceRecord.mixins) {\n merged = appendOptions(merged, mixin, seen)\n }\n }\n\n const {\n extends: _extends,\n mixins: _mixins,\n ...ownOptions\n } = sourceRecord\n return mergeOptions(merged, ownOptions)\n}\n\n/**\n * 将 Vue Options API 的 extends/mixins 展开为单一组件选项。\n */\nexport function resolveVueComponentOptions<T extends ComponentOptions>(options: T): T {\n return appendOptions({}, options, new WeakSet()) as T\n}\n"],"mappings":"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"}
@@ -62,7 +62,7 @@ function applyNullableTransportOptions(target, definition, allowNullPropInput) {
62
62
  const candidates = collectNativePropertyTypeCandidates(definitionRecord ? [definitionRecord.type, definitionRecord.optionalTypes] : definition);
63
63
  const explicitlyNullable = candidates.includes(null);
64
64
  const acceptsMultipleNativeTypes = candidates.filter((candidate) => candidate !== null).length > 1;
65
- const acceptsMissingInput = (definitionRecord === null || definitionRecord === void 0 ? void 0 : definitionRecord.required) !== true;
65
+ const acceptsMissingInput = definitionRecord?.required !== true;
66
66
  if (!explicitlyNullable && !acceptsMultipleNativeTypes && !acceptsMissingInput) return;
67
67
  if (!explicitlyNullable) preserveImplicitNativeDefault(target);
68
68
  target.type = null;
@@ -117,15 +117,14 @@ function normalizeVueProps(props, allowNullPropInput) {
117
117
  return properties;
118
118
  }
119
119
  function normalizeProps(baseOptions, props, explicitProperties) {
120
- var _ALLOW_NULL_PROP_INPU;
121
- const allowNullPropInput = Boolean((_ALLOW_NULL_PROP_INPU = baseOptions[ALLOW_NULL_PROP_INPUT_KEY]) !== null && _ALLOW_NULL_PROP_INPU !== void 0 ? _ALLOW_NULL_PROP_INPU : baseOptions[PUBLIC_ALLOW_NULL_PROP_INPUT_KEY]);
120
+ const allowNullPropInput = Boolean(baseOptions[ALLOW_NULL_PROP_INPUT_KEY] ?? baseOptions[PUBLIC_ALLOW_NULL_PROP_INPUT_KEY]);
122
121
  const { [ALLOW_NULL_PROP_INPUT_KEY]: _ignoredAllowNullPropInput, [PUBLIC_ALLOW_NULL_PROP_INPUT_KEY]: _ignoredPublicAllowNullPropInput, ...normalizedBaseOptions } = baseOptions;
123
122
  const baseProperties = baseOptions.properties;
124
123
  const normalizedBaseProperties = baseProperties && typeof baseProperties === "object" && Object.keys(baseProperties).length > 0 ? baseProperties : void 0;
125
- const resolvedExplicit = explicitProperties !== null && explicitProperties !== void 0 ? explicitProperties : normalizedBaseProperties;
124
+ const resolvedExplicit = explicitProperties ?? normalizedBaseProperties;
126
125
  const shouldAttachInternalProps = Boolean(props || resolvedExplicit);
127
126
  const attachInternalProps = (source) => {
128
- const next = { ...source !== null && source !== void 0 ? source : {} };
127
+ const next = { ...source ?? {} };
129
128
  if (!shouldAttachInternalProps) return next;
130
129
  if (!hasOwn(next, WEVU_SLOT_OWNER_ID_PROP)) next[WEVU_SLOT_OWNER_ID_PROP] = {
131
130
  type: String,