wevu 7.0.4 → 7.1.1

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