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
@@ -0,0 +1,51 @@
1
+ import { SetDataDebugInfo } from "../../types/setData.mjs";
2
+ import "../../types.mjs";
3
+ import { CommitAwareSetDataAdapter } from "./commitTracker.mjs";
4
+ import "../../capabilities.mjs";
5
+ import { WevuRuntimeBindingManifestV1 } from "@weapp-core/constants";
6
+ //#region src/runtime/app/setData/scheduler.d.ts
7
+ export interface SetDataSchedulerOptions {
8
+ state: Record<string, any>;
9
+ setupState?: Record<string, any>;
10
+ snapshotOmitKeys?: Set<string>;
11
+ computedRefs: Record<string, {
12
+ value: any;
13
+ }>;
14
+ dirtyComputedKeys: Set<string>;
15
+ includeComputed: boolean;
16
+ setDataStrategy: 'diff' | 'patch';
17
+ computedCompare: 'reference' | 'shallow' | 'deep';
18
+ computedCompareMaxDepth: number;
19
+ computedCompareMaxKeys: number;
20
+ currentAdapter: CommitAwareSetDataAdapter;
21
+ shouldIncludeKey: (key: string) => boolean;
22
+ maxPatchKeys: number;
23
+ maxPayloadBytes: number;
24
+ mergeSiblingThreshold: number;
25
+ mergeSiblingMaxInflationRatio: number;
26
+ mergeSiblingMaxParentBytes: number;
27
+ mergeSiblingSkipArray: boolean;
28
+ elevateTopKeyThreshold: number;
29
+ prelinkMaxDepth?: number;
30
+ prelinkMaxKeys?: number;
31
+ toPlainMaxDepth: number;
32
+ toPlainMaxKeys: number;
33
+ includeFunctions?: boolean;
34
+ functionPaths: string[];
35
+ debug: ((info: SetDataDebugInfo) => void) | undefined;
36
+ debugWhen: 'fallback' | 'always';
37
+ debugSampleRate: number;
38
+ bindingManifest?: WevuRuntimeBindingManifestV1;
39
+ loopWarning: false | {
40
+ sampleWindowMs: number;
41
+ maxFlushes: number;
42
+ coolDownMs: number;
43
+ };
44
+ targetLabel?: string;
45
+ runTracker: () => void;
46
+ isMounted: () => boolean;
47
+ initialSnapshot?: Record<string, any>;
48
+ initialState?: Record<string, any>;
49
+ }
50
+ //#endregion
51
+ //# sourceMappingURL=scheduler.d.mts.map
@@ -62,7 +62,7 @@ function createSetDataScheduler(options) {
62
62
  }
63
63
  return left.raw === right.raw && left.version === right.version;
64
64
  };
65
- const shouldIncludeSnapshotKey = (key) => shouldIncludeKey(key) && !(snapshotOmitKeys === null || snapshotOmitKeys === void 0 ? void 0 : snapshotOmitKeys.has(key));
65
+ const shouldIncludeSnapshotKey = (key) => shouldIncludeKey(key) && !snapshotOmitKeys?.has(key);
66
66
  if (initialSnapshot) {
67
67
  for (const [key, value] of Object.entries(initialSnapshot)) if (shouldIncludeSnapshotKey(key)) initialSnapshotBaseline[key] = value;
68
68
  }
@@ -102,7 +102,7 @@ function createSetDataScheduler(options) {
102
102
  if (info.reason !== "commitFailure" && debugSampleRate < 1 && Math.random() > debugSampleRate) return;
103
103
  let debugInfo = info;
104
104
  if (bindingManifest) {
105
- const paths = typeof pathSource === "function" ? pathSource() : pathSource !== null && pathSource !== void 0 ? pathSource : [];
105
+ const paths = typeof pathSource === "function" ? pathSource() : pathSource ?? [];
106
106
  const wholeSnapshotFallback = info.reason === "needsFullSnapshot" || info.reason === "maxPatchKeys" || info.reason === "maxPayloadBytes";
107
107
  debugInfo = {
108
108
  ...info,
@@ -111,7 +111,7 @@ function createSetDataScheduler(options) {
111
111
  }
112
112
  try {
113
113
  debug(debugInfo);
114
- } catch (_unused) {}
114
+ } catch {}
115
115
  };
116
116
  const commitTracker = createSetDataCommitTracker({
117
117
  initialSnapshot: initialSnapshotBaseline,
@@ -128,9 +128,8 @@ function createSetDataScheduler(options) {
128
128
  message: failure.error.message
129
129
  });
130
130
  try {
131
- var _currentAdapter$__wev;
132
- (_currentAdapter$__wev = currentAdapter.__wevu_reportSetDataError) === null || _currentAdapter$__wev === void 0 || _currentAdapter$__wev.call(currentAdapter, failure.error);
133
- } catch (_unused2) {}
131
+ currentAdapter.__wevu_reportSetDataError?.(failure.error);
132
+ } catch {}
134
133
  }
135
134
  });
136
135
  const recordFlushForLoopWarning = (pendingPatchKeys = 0, pathSource) => {
@@ -232,9 +231,8 @@ function createSetDataScheduler(options) {
232
231
  };
233
232
  };
234
233
  const runDiffUpdate = (reason = "diff", pendingPatchKeys = 0, onSnapshotPrepared) => {
235
- var _diffCollection$snaps;
236
234
  const diffCollection = setDataStrategy === "diff" ? collectDiffSnapshot() : void 0;
237
- const snapshot = (_diffCollection$snaps = diffCollection === null || diffCollection === void 0 ? void 0 : diffCollection.snapshot) !== null && _diffCollection$snaps !== void 0 ? _diffCollection$snaps : collect();
235
+ const snapshot = diffCollection?.snapshot ?? collect();
238
236
  const dispatchedSnapshot = commitTracker.state.dispatchedSnapshot;
239
237
  const needsRecovery = commitTracker.state.needsFullSnapshot;
240
238
  const payload = needsRecovery ? commitTracker.createFullPayload(snapshot) : diffCollection ? (() => {
@@ -245,7 +243,7 @@ function createSetDataScheduler(options) {
245
243
  ...fastDiff
246
244
  };
247
245
  })() : diffSnapshots(dispatchedSnapshot, snapshot);
248
- onSnapshotPrepared === null || onSnapshotPrepared === void 0 || onSnapshotPrepared(snapshot);
246
+ onSnapshotPrepared?.(snapshot);
249
247
  const payloadKeys = Object.keys(payload).length;
250
248
  if (!payloadKeys && !needsRecovery) return;
251
249
  const effectiveReason = needsRecovery ? "needsFullSnapshot" : reason;
@@ -1 +1 @@
1
- {"version":3,"file":"scheduler.mjs","names":[],"sources":["../../../../../src/runtime/app/setData/scheduler.ts"],"sourcesContent":["import type { WevuRuntimeBindingManifestV1 } from '@weapp-core/constants'\nimport type { SetDataScheduler } from '../../capabilities'\nimport type { SetDataDebugInfo } from '../../types'\nimport type { CommitAwareSetDataAdapter, PreparedSetDataUpdate, SetDataCommitFailure, SetDataSnapshot } from './commitTracker'\nimport { getReactiveVersion, isReactive, isRef, toRaw } from '../../../reactivity'\nimport { hasOwn } from '../../../utils'\nimport { resolveBindingDiagnostics } from '../../bindingManifest'\nimport { diffSnapshots, toPlain } from '../../diff'\nimport { hasTrackableSetupBinding } from '../../setupTracking'\nimport { createSetDataCommitTracker } from './commitTracker'\nimport { collectSnapshot } from './snapshot'\n\nexport interface SetDataSchedulerOptions {\n state: Record<string, any>\n setupState?: Record<string, any>\n snapshotOmitKeys?: Set<string>\n computedRefs: Record<string, { value: any }>\n dirtyComputedKeys: Set<string>\n includeComputed: boolean\n setDataStrategy: 'diff' | 'patch'\n computedCompare: 'reference' | 'shallow' | 'deep'\n computedCompareMaxDepth: number\n computedCompareMaxKeys: number\n currentAdapter: CommitAwareSetDataAdapter\n shouldIncludeKey: (key: string) => boolean\n maxPatchKeys: number\n maxPayloadBytes: number\n mergeSiblingThreshold: number\n mergeSiblingMaxInflationRatio: number\n mergeSiblingMaxParentBytes: number\n mergeSiblingSkipArray: boolean\n elevateTopKeyThreshold: number\n prelinkMaxDepth?: number\n prelinkMaxKeys?: number\n toPlainMaxDepth: number\n toPlainMaxKeys: number\n includeFunctions?: boolean\n functionPaths: string[]\n debug: ((info: SetDataDebugInfo) => void) | undefined\n debugWhen: 'fallback' | 'always'\n debugSampleRate: number\n bindingManifest?: WevuRuntimeBindingManifestV1\n loopWarning: false | {\n sampleWindowMs: number\n maxFlushes: number\n coolDownMs: number\n }\n targetLabel?: string\n runTracker: () => void\n isMounted: () => boolean\n initialSnapshot?: Record<string, any>\n initialState?: Record<string, any>\n}\n\nexport interface SetDataSchedulerInternals extends SetDataScheduler {\n collect: () => Record<string, unknown>\n dispatchUpdate: (update: PreparedSetDataUpdate) => number\n dispose: () => void\n emitDebug: (info: SetDataDebugInfo, pathSource?: Iterable<string> | (() => Iterable<string>)) => void\n getLatestSnapshot: () => Record<string, unknown>\n needsFullSnapshot: () => boolean\n plainCache: WeakMap<object, { version: number, value: unknown }>\n plainCacheEligibility: WeakMap<object, boolean>\n prepareJob: (pendingPatchKeys?: number, pathSource?: Iterable<string> | (() => Iterable<string>)) => boolean\n resolveTopKeysByRoot: (root: object) => string[]\n runDiffUpdate: (\n reason?: SetDataDebugInfo['reason'],\n pendingPatchKeys?: number,\n onSnapshotPrepared?: (snapshot: SetDataSnapshot) => void,\n ) => void\n shouldIncludeSnapshotKey: (key: string) => boolean\n}\n\nexport function createSetDataScheduler(options: SetDataSchedulerOptions): SetDataSchedulerInternals {\n const {\n state,\n setupState,\n snapshotOmitKeys,\n computedRefs,\n dirtyComputedKeys,\n includeComputed,\n setDataStrategy,\n currentAdapter,\n shouldIncludeKey,\n toPlainMaxDepth,\n toPlainMaxKeys,\n includeFunctions = false,\n functionPaths,\n debug,\n debugWhen,\n debugSampleRate,\n bindingManifest,\n loopWarning,\n targetLabel,\n runTracker,\n isMounted,\n initialSnapshot,\n initialState,\n } = options\n\n const plainCache = new WeakMap<object, { version: number, value: any }>()\n const plainCacheEligibility = new WeakMap<object, boolean>()\n const initialSnapshotBaseline: SetDataSnapshot = {}\n const dispatchedStateTokens = Object.create(null) as Record<string, unknown>\n const dispatchedComputedTokens = Object.create(null) as Record<string, unknown>\n const flushTimes: number[] = []\n let lastLoopWarningAt = Number.NEGATIVE_INFINITY\n const initialStateKeys = new Set(\n initialState && typeof initialState === 'object'\n ? Object.keys(initialState)\n : [],\n )\n\n const isPlainObject = (value: unknown): value is Record<string, any> => {\n if (Object.prototype.toString.call(value) !== '[object Object]') {\n return false\n }\n const proto = Object.getPrototypeOf(value)\n return proto === null || proto === Object.prototype\n }\n\n const isDeepEqual = (left: any, right: any): boolean => {\n if (Object.is(left, right)) {\n return true\n }\n if (Array.isArray(left) && Array.isArray(right)) {\n if (left.length !== right.length) {\n return false\n }\n return left.every((item, index) => isDeepEqual(item, right[index]))\n }\n if (isPlainObject(left) && isPlainObject(right)) {\n const leftKeys = Object.keys(left)\n const rightKeys = Object.keys(right)\n if (leftKeys.length !== rightKeys.length) {\n return false\n }\n return leftKeys.every(key => hasOwn(right, key) && isDeepEqual(left[key], right[key]))\n }\n return false\n }\n\n const createValueToken = (value: unknown) => {\n const candidate = isRef(value) ? value.value : value\n if (candidate == null || typeof candidate !== 'object') {\n return candidate\n }\n if (!isReactive(candidate) && hasTrackableSetupBinding(candidate)) {\n return {\n snapshot: toPlain(candidate, new WeakMap(), {\n cacheEligibility: plainCacheEligibility,\n maxDepth: toPlainMaxDepth,\n maxKeys: toPlainMaxKeys,\n includeFunctions,\n functionPaths,\n }),\n }\n }\n const raw = isReactive(candidate) ? toRaw(candidate as any) : candidate\n return {\n raw,\n version: getReactiveVersion(raw as any),\n }\n }\n\n const isSameToken = (left: unknown, right: unknown) => {\n if (Object.is(left, right)) {\n return true\n }\n if (\n !left\n || !right\n || typeof left !== 'object'\n || typeof right !== 'object'\n || !hasOwn(left as object, 'raw')\n || !hasOwn(right as object, 'raw')\n ) {\n if (\n left\n && right\n && typeof left === 'object'\n && typeof right === 'object'\n && hasOwn(left as object, 'snapshot')\n && hasOwn(right as object, 'snapshot')\n ) {\n return isDeepEqual((left as any).snapshot, (right as any).snapshot)\n }\n return false\n }\n return (left as any).raw === (right as any).raw && (left as any).version === (right as any).version\n }\n\n const shouldIncludeSnapshotKey = (key: string) => shouldIncludeKey(key) && !snapshotOmitKeys?.has(key)\n\n if (initialSnapshot) {\n for (const [key, value] of Object.entries(initialSnapshot)) {\n if (shouldIncludeSnapshotKey(key)) {\n initialSnapshotBaseline[key] = value\n }\n }\n }\n\n const syncInitialSnapshotTokens = () => {\n if (!initialSnapshot) {\n return\n }\n const rawState = (isReactive(state) ? toRaw(state as any) : state) as Record<string, any>\n const rawSetupState = setupState && typeof setupState === 'object'\n ? (isReactive(setupState) ? toRaw(setupState as any) : setupState)\n : undefined\n\n for (const key of Object.keys(initialSnapshot)) {\n if (!shouldIncludeSnapshotKey(key)) {\n continue\n }\n if (rawSetupState && hasOwn(rawSetupState, key)) {\n dispatchedStateTokens[key] = createValueToken(rawSetupState[key])\n continue\n }\n if (hasOwn(rawState, key)) {\n if (initialStateKeys.has(key)) {\n continue\n }\n rawState[key] = initialSnapshot[key]\n dispatchedStateTokens[key] = createValueToken(rawState[key])\n }\n }\n }\n\n const resolveTopKeysByRoot = (root: object) => {\n const matches: string[] = []\n const rawSetupState = setupState && typeof setupState === 'object'\n ? (isReactive(setupState) ? toRaw(setupState as any) : setupState)\n : undefined\n for (const key of new Set([...Object.keys(state), ...(rawSetupState ? Object.keys(rawSetupState) : [])])) {\n if (!shouldIncludeSnapshotKey(key)) {\n continue\n }\n const value = rawSetupState && hasOwn(rawSetupState, key) ? rawSetupState[key] : state[key]\n const candidate = isRef(value) ? value.value : value\n if (!candidate || typeof candidate !== 'object') {\n continue\n }\n if (toRaw(candidate as any) === root) {\n matches.push(key)\n }\n }\n return matches\n }\n\n const emitDebug = (\n info: SetDataDebugInfo,\n pathSource?: Iterable<string> | (() => Iterable<string>),\n ) => {\n if (!debug) {\n return\n }\n const isFallback = info.reason !== 'patch' && info.reason !== 'diff'\n if (debugWhen === 'fallback' && !isFallback) {\n return\n }\n if (info.reason !== 'commitFailure' && debugSampleRate < 1 && Math.random() > debugSampleRate) {\n return\n }\n let debugInfo = info\n if (bindingManifest) {\n const paths = typeof pathSource === 'function'\n ? pathSource()\n : pathSource ?? []\n const wholeSnapshotFallback = info.reason === 'needsFullSnapshot'\n || info.reason === 'maxPatchKeys'\n || info.reason === 'maxPayloadBytes'\n debugInfo = {\n ...info,\n bindings: resolveBindingDiagnostics(bindingManifest, paths, wholeSnapshotFallback),\n }\n }\n try {\n debug(debugInfo)\n }\n catch {\n // 忽略异常\n }\n }\n\n const commitTracker = createSetDataCommitTracker({\n initialSnapshot: initialSnapshotBaseline,\n adapter: currentAdapter,\n onFailure: (failure: SetDataCommitFailure) => {\n emitDebug({\n mode: failure.mode,\n reason: 'commitFailure',\n pendingPatchKeys: failure.pendingPatchKeys,\n payloadKeys: failure.payloadKeys,\n revision: failure.revision,\n committedRevision: failure.committedRevision,\n targetLabel,\n message: failure.error.message,\n })\n try {\n currentAdapter.__wevu_reportSetDataError?.(failure.error)\n }\n catch {\n // 宿主错误钩子不得反向破坏提交状态机。\n }\n },\n })\n\n const recordFlushForLoopWarning = (\n pendingPatchKeys = 0,\n pathSource?: Iterable<string> | (() => Iterable<string>),\n ) => {\n if (!loopWarning) {\n return\n }\n const current = Date.now()\n flushTimes.push(current)\n const windowStart = current - loopWarning.sampleWindowMs\n while (flushTimes.length && flushTimes[0] < windowStart) {\n flushTimes.shift()\n }\n if (flushTimes.length <= loopWarning.maxFlushes) {\n return\n }\n if (loopWarning.coolDownMs > 0 && current - lastLoopWarningAt < loopWarning.coolDownMs) {\n return\n }\n lastLoopWarningAt = current\n emitDebug({\n mode: setDataStrategy,\n reason: 'loopWarning',\n pendingPatchKeys,\n payloadKeys: 0,\n computedDirtyKeys: includeComputed ? dirtyComputedKeys.size : 0,\n flushCount: flushTimes.length,\n windowMs: loopWarning.sampleWindowMs,\n targetLabel,\n message: `${targetLabel ? `${targetLabel} ` : ''}疑似运行时更新循环:${flushTimes.length} 次 setData flush/${loopWarning.sampleWindowMs}ms`,\n }, pathSource)\n }\n\n const collect = () => collectSnapshot({\n state,\n setupState,\n computedRefs,\n includeComputed,\n shouldIncludeKey: shouldIncludeSnapshotKey,\n plainCache,\n plainCacheEligibility,\n toPlainMaxDepth,\n toPlainMaxKeys,\n includeFunctions,\n functionPaths,\n })\n\n syncInitialSnapshotTokens()\n\n const collectDiffSnapshot = () => {\n const rawState = (isReactive(state) ? toRaw(state as any) : state) as Record<string, any>\n const rawSetupState = setupState && typeof setupState === 'object'\n ? (isReactive(setupState) ? toRaw(setupState as any) : setupState)\n : undefined\n const dispatchedSnapshot = commitTracker.state.dispatchedSnapshot\n const nextSnapshot: Record<string, any> = { ...dispatchedSnapshot }\n const seen = new WeakMap<object, any>()\n const includedStateKeys = new Set<string>()\n const includedComputedKeys = new Set<string>()\n const replacedTopLevelKeys = new Set<string>()\n\n for (const key of new Set([...Object.keys(rawState), ...(rawSetupState ? Object.keys(rawSetupState) : [])])) {\n if (!shouldIncludeSnapshotKey(key)) {\n continue\n }\n includedStateKeys.add(key)\n const source = rawSetupState && hasOwn(rawSetupState, key) ? rawSetupState : rawState\n const token = createValueToken(source[key])\n const previousToken = dispatchedStateTokens[key]\n if (\n previousToken\n && token\n && typeof previousToken === 'object'\n && typeof token === 'object'\n && hasOwn(previousToken as object, 'raw')\n && hasOwn(token as object, 'raw')\n && Array.isArray((previousToken as any).raw)\n && Array.isArray((token as any).raw)\n && (previousToken as any).raw !== (token as any).raw\n ) {\n replacedTopLevelKeys.add(key)\n }\n if (!isSameToken(previousToken, token) || !hasOwn(dispatchedSnapshot, key)) {\n nextSnapshot[key] = toPlain(source[key], seen, {\n cache: plainCache,\n cacheEligibility: plainCacheEligibility,\n maxDepth: toPlainMaxDepth,\n maxKeys: toPlainMaxKeys,\n includeFunctions,\n functionPaths,\n _path: key,\n })\n }\n dispatchedStateTokens[key] = token\n }\n\n for (const key of Object.keys(dispatchedStateTokens)) {\n if (!includedStateKeys.has(key)) {\n delete dispatchedStateTokens[key]\n if (!includeComputed || !hasOwn(computedRefs, key)) {\n delete nextSnapshot[key]\n }\n }\n }\n\n if (!includeComputed) {\n for (const key of Object.keys(dispatchedComputedTokens)) {\n delete dispatchedComputedTokens[key]\n }\n return {\n snapshot: nextSnapshot,\n replacedTopLevelKeys,\n }\n }\n\n for (const key of Object.keys(computedRefs)) {\n if (!shouldIncludeSnapshotKey(key)) {\n continue\n }\n includedComputedKeys.add(key)\n const value = computedRefs[key].value\n const token = createValueToken(value)\n if (!isSameToken(dispatchedComputedTokens[key], token) || !hasOwn(dispatchedSnapshot, key)) {\n nextSnapshot[key] = toPlain(value, seen, {\n cache: plainCache,\n cacheEligibility: plainCacheEligibility,\n maxDepth: toPlainMaxDepth,\n maxKeys: toPlainMaxKeys,\n includeFunctions,\n functionPaths,\n _path: key,\n })\n }\n dispatchedComputedTokens[key] = token\n }\n\n for (const key of Object.keys(dispatchedComputedTokens)) {\n if (!includedComputedKeys.has(key)) {\n delete dispatchedComputedTokens[key]\n if (!hasOwn(rawState, key) || !shouldIncludeSnapshotKey(key)) {\n delete nextSnapshot[key]\n }\n }\n }\n\n return {\n snapshot: nextSnapshot,\n replacedTopLevelKeys,\n }\n }\n\n const runDiffUpdate = (\n reason: SetDataDebugInfo['reason'] = 'diff',\n pendingPatchKeys = 0,\n onSnapshotPrepared?: (snapshot: SetDataSnapshot) => void,\n ): void => {\n const diffCollection = setDataStrategy === 'diff' ? collectDiffSnapshot() : undefined\n const snapshot = diffCollection?.snapshot ?? collect()\n const dispatchedSnapshot = commitTracker.state.dispatchedSnapshot\n const needsRecovery = commitTracker.state.needsFullSnapshot\n const payload = needsRecovery\n ? commitTracker.createFullPayload(snapshot)\n : diffCollection\n ? (() => {\n const fastDiff: Record<string, any> = {}\n for (const key of diffCollection.replacedTopLevelKeys) {\n fastDiff[key] = snapshot[key]\n }\n const baseDiff = diffSnapshots(dispatchedSnapshot, snapshot, {\n skipKeys: diffCollection.replacedTopLevelKeys,\n })\n return {\n ...baseDiff,\n ...fastDiff,\n }\n })()\n : diffSnapshots(dispatchedSnapshot, snapshot)\n onSnapshotPrepared?.(snapshot)\n const payloadKeys = Object.keys(payload).length\n if (!payloadKeys && !needsRecovery) {\n return\n }\n const effectiveReason = needsRecovery ? 'needsFullSnapshot' : reason\n emitDebug({\n mode: 'diff',\n reason: effectiveReason,\n pendingPatchKeys,\n payloadKeys,\n }, Object.keys(payload))\n commitTracker.dispatch({\n mode: 'diff',\n kind: needsRecovery ? 'full' : 'delta',\n reason: effectiveReason,\n snapshot,\n payload,\n pendingPatchKeys,\n })\n }\n\n const prepareJob = (\n pendingPatchKeys = 0,\n pathSource?: Iterable<string> | (() => Iterable<string>),\n ) => {\n if (!isMounted()) {\n return false\n }\n recordFlushForLoopWarning(pendingPatchKeys, pathSource)\n // 生成快照前刷新依赖(setup 中的 ref / 新增 key)\n runTracker()\n return true\n }\n\n const job = (_stateRootRaw?: object) => {\n if (!prepareJob()) {\n return\n }\n return runDiffUpdate('diff')\n }\n\n const snapshot = () => (\n setDataStrategy === 'patch'\n ? collect()\n : { ...commitTracker.state.dispatchedSnapshot }\n )\n const cloneLatestSnapshot = () => ({ ...commitTracker.state.dispatchedSnapshot })\n\n return {\n collect,\n emitDebug,\n getLatestSnapshot: () => commitTracker.state.dispatchedSnapshot,\n dispatchUpdate: commitTracker.dispatch,\n needsFullSnapshot: () => commitTracker.state.needsFullSnapshot,\n job,\n plainCache,\n plainCacheEligibility,\n prepareJob,\n resolveTopKeysByRoot,\n runDiffUpdate,\n shouldIncludeSnapshotKey,\n snapshot,\n cloneLatestSnapshot,\n dispose: commitTracker.dispose,\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"scheduler.mjs","names":[],"sources":["../../../../../src/runtime/app/setData/scheduler.ts"],"sourcesContent":["import type { WevuRuntimeBindingManifestV1 } from '@weapp-core/constants'\nimport type { SetDataScheduler } from '../../capabilities'\nimport type { SetDataDebugInfo } from '../../types'\nimport type { CommitAwareSetDataAdapter, PreparedSetDataUpdate, SetDataCommitFailure, SetDataSnapshot } from './commitTracker'\nimport { getReactiveVersion, isReactive, isRef, toRaw } from '../../../reactivity'\nimport { hasOwn } from '../../../utils'\nimport { resolveBindingDiagnostics } from '../../bindingManifest'\nimport { diffSnapshots, toPlain } from '../../diff'\nimport { hasTrackableSetupBinding } from '../../setupTracking'\nimport { createSetDataCommitTracker } from './commitTracker'\nimport { collectSnapshot } from './snapshot'\n\nexport interface SetDataSchedulerOptions {\n state: Record<string, any>\n setupState?: Record<string, any>\n snapshotOmitKeys?: Set<string>\n computedRefs: Record<string, { value: any }>\n dirtyComputedKeys: Set<string>\n includeComputed: boolean\n setDataStrategy: 'diff' | 'patch'\n computedCompare: 'reference' | 'shallow' | 'deep'\n computedCompareMaxDepth: number\n computedCompareMaxKeys: number\n currentAdapter: CommitAwareSetDataAdapter\n shouldIncludeKey: (key: string) => boolean\n maxPatchKeys: number\n maxPayloadBytes: number\n mergeSiblingThreshold: number\n mergeSiblingMaxInflationRatio: number\n mergeSiblingMaxParentBytes: number\n mergeSiblingSkipArray: boolean\n elevateTopKeyThreshold: number\n prelinkMaxDepth?: number\n prelinkMaxKeys?: number\n toPlainMaxDepth: number\n toPlainMaxKeys: number\n includeFunctions?: boolean\n functionPaths: string[]\n debug: ((info: SetDataDebugInfo) => void) | undefined\n debugWhen: 'fallback' | 'always'\n debugSampleRate: number\n bindingManifest?: WevuRuntimeBindingManifestV1\n loopWarning: false | {\n sampleWindowMs: number\n maxFlushes: number\n coolDownMs: number\n }\n targetLabel?: string\n runTracker: () => void\n isMounted: () => boolean\n initialSnapshot?: Record<string, any>\n initialState?: Record<string, any>\n}\n\nexport interface SetDataSchedulerInternals extends SetDataScheduler {\n collect: () => Record<string, unknown>\n dispatchUpdate: (update: PreparedSetDataUpdate) => number\n dispose: () => void\n emitDebug: (info: SetDataDebugInfo, pathSource?: Iterable<string> | (() => Iterable<string>)) => void\n getLatestSnapshot: () => Record<string, unknown>\n needsFullSnapshot: () => boolean\n plainCache: WeakMap<object, { version: number, value: unknown }>\n plainCacheEligibility: WeakMap<object, boolean>\n prepareJob: (pendingPatchKeys?: number, pathSource?: Iterable<string> | (() => Iterable<string>)) => boolean\n resolveTopKeysByRoot: (root: object) => string[]\n runDiffUpdate: (\n reason?: SetDataDebugInfo['reason'],\n pendingPatchKeys?: number,\n onSnapshotPrepared?: (snapshot: SetDataSnapshot) => void,\n ) => void\n shouldIncludeSnapshotKey: (key: string) => boolean\n}\n\nexport function createSetDataScheduler(options: SetDataSchedulerOptions): SetDataSchedulerInternals {\n const {\n state,\n setupState,\n snapshotOmitKeys,\n computedRefs,\n dirtyComputedKeys,\n includeComputed,\n setDataStrategy,\n currentAdapter,\n shouldIncludeKey,\n toPlainMaxDepth,\n toPlainMaxKeys,\n includeFunctions = false,\n functionPaths,\n debug,\n debugWhen,\n debugSampleRate,\n bindingManifest,\n loopWarning,\n targetLabel,\n runTracker,\n isMounted,\n initialSnapshot,\n initialState,\n } = options\n\n const plainCache = new WeakMap<object, { version: number, value: any }>()\n const plainCacheEligibility = new WeakMap<object, boolean>()\n const initialSnapshotBaseline: SetDataSnapshot = {}\n const dispatchedStateTokens = Object.create(null) as Record<string, unknown>\n const dispatchedComputedTokens = Object.create(null) as Record<string, unknown>\n const flushTimes: number[] = []\n let lastLoopWarningAt = Number.NEGATIVE_INFINITY\n const initialStateKeys = new Set(\n initialState && typeof initialState === 'object'\n ? Object.keys(initialState)\n : [],\n )\n\n const isPlainObject = (value: unknown): value is Record<string, any> => {\n if (Object.prototype.toString.call(value) !== '[object Object]') {\n return false\n }\n const proto = Object.getPrototypeOf(value)\n return proto === null || proto === Object.prototype\n }\n\n const isDeepEqual = (left: any, right: any): boolean => {\n if (Object.is(left, right)) {\n return true\n }\n if (Array.isArray(left) && Array.isArray(right)) {\n if (left.length !== right.length) {\n return false\n }\n return left.every((item, index) => isDeepEqual(item, right[index]))\n }\n if (isPlainObject(left) && isPlainObject(right)) {\n const leftKeys = Object.keys(left)\n const rightKeys = Object.keys(right)\n if (leftKeys.length !== rightKeys.length) {\n return false\n }\n return leftKeys.every(key => hasOwn(right, key) && isDeepEqual(left[key], right[key]))\n }\n return false\n }\n\n const createValueToken = (value: unknown) => {\n const candidate = isRef(value) ? value.value : value\n if (candidate == null || typeof candidate !== 'object') {\n return candidate\n }\n if (!isReactive(candidate) && hasTrackableSetupBinding(candidate)) {\n return {\n snapshot: toPlain(candidate, new WeakMap(), {\n cacheEligibility: plainCacheEligibility,\n maxDepth: toPlainMaxDepth,\n maxKeys: toPlainMaxKeys,\n includeFunctions,\n functionPaths,\n }),\n }\n }\n const raw = isReactive(candidate) ? toRaw(candidate as any) : candidate\n return {\n raw,\n version: getReactiveVersion(raw as any),\n }\n }\n\n const isSameToken = (left: unknown, right: unknown) => {\n if (Object.is(left, right)) {\n return true\n }\n if (\n !left\n || !right\n || typeof left !== 'object'\n || typeof right !== 'object'\n || !hasOwn(left as object, 'raw')\n || !hasOwn(right as object, 'raw')\n ) {\n if (\n left\n && right\n && typeof left === 'object'\n && typeof right === 'object'\n && hasOwn(left as object, 'snapshot')\n && hasOwn(right as object, 'snapshot')\n ) {\n return isDeepEqual((left as any).snapshot, (right as any).snapshot)\n }\n return false\n }\n return (left as any).raw === (right as any).raw && (left as any).version === (right as any).version\n }\n\n const shouldIncludeSnapshotKey = (key: string) => shouldIncludeKey(key) && !snapshotOmitKeys?.has(key)\n\n if (initialSnapshot) {\n for (const [key, value] of Object.entries(initialSnapshot)) {\n if (shouldIncludeSnapshotKey(key)) {\n initialSnapshotBaseline[key] = value\n }\n }\n }\n\n const syncInitialSnapshotTokens = () => {\n if (!initialSnapshot) {\n return\n }\n const rawState = (isReactive(state) ? toRaw(state as any) : state) as Record<string, any>\n const rawSetupState = setupState && typeof setupState === 'object'\n ? (isReactive(setupState) ? toRaw(setupState as any) : setupState)\n : undefined\n\n for (const key of Object.keys(initialSnapshot)) {\n if (!shouldIncludeSnapshotKey(key)) {\n continue\n }\n if (rawSetupState && hasOwn(rawSetupState, key)) {\n dispatchedStateTokens[key] = createValueToken(rawSetupState[key])\n continue\n }\n if (hasOwn(rawState, key)) {\n if (initialStateKeys.has(key)) {\n continue\n }\n rawState[key] = initialSnapshot[key]\n dispatchedStateTokens[key] = createValueToken(rawState[key])\n }\n }\n }\n\n const resolveTopKeysByRoot = (root: object) => {\n const matches: string[] = []\n const rawSetupState = setupState && typeof setupState === 'object'\n ? (isReactive(setupState) ? toRaw(setupState as any) : setupState)\n : undefined\n for (const key of new Set([...Object.keys(state), ...(rawSetupState ? Object.keys(rawSetupState) : [])])) {\n if (!shouldIncludeSnapshotKey(key)) {\n continue\n }\n const value = rawSetupState && hasOwn(rawSetupState, key) ? rawSetupState[key] : state[key]\n const candidate = isRef(value) ? value.value : value\n if (!candidate || typeof candidate !== 'object') {\n continue\n }\n if (toRaw(candidate as any) === root) {\n matches.push(key)\n }\n }\n return matches\n }\n\n const emitDebug = (\n info: SetDataDebugInfo,\n pathSource?: Iterable<string> | (() => Iterable<string>),\n ) => {\n if (!debug) {\n return\n }\n const isFallback = info.reason !== 'patch' && info.reason !== 'diff'\n if (debugWhen === 'fallback' && !isFallback) {\n return\n }\n if (info.reason !== 'commitFailure' && debugSampleRate < 1 && Math.random() > debugSampleRate) {\n return\n }\n let debugInfo = info\n if (bindingManifest) {\n const paths = typeof pathSource === 'function'\n ? pathSource()\n : pathSource ?? []\n const wholeSnapshotFallback = info.reason === 'needsFullSnapshot'\n || info.reason === 'maxPatchKeys'\n || info.reason === 'maxPayloadBytes'\n debugInfo = {\n ...info,\n bindings: resolveBindingDiagnostics(bindingManifest, paths, wholeSnapshotFallback),\n }\n }\n try {\n debug(debugInfo)\n }\n catch {\n // 忽略异常\n }\n }\n\n const commitTracker = createSetDataCommitTracker({\n initialSnapshot: initialSnapshotBaseline,\n adapter: currentAdapter,\n onFailure: (failure: SetDataCommitFailure) => {\n emitDebug({\n mode: failure.mode,\n reason: 'commitFailure',\n pendingPatchKeys: failure.pendingPatchKeys,\n payloadKeys: failure.payloadKeys,\n revision: failure.revision,\n committedRevision: failure.committedRevision,\n targetLabel,\n message: failure.error.message,\n })\n try {\n currentAdapter.__wevu_reportSetDataError?.(failure.error)\n }\n catch {\n // 宿主错误钩子不得反向破坏提交状态机。\n }\n },\n })\n\n const recordFlushForLoopWarning = (\n pendingPatchKeys = 0,\n pathSource?: Iterable<string> | (() => Iterable<string>),\n ) => {\n if (!loopWarning) {\n return\n }\n const current = Date.now()\n flushTimes.push(current)\n const windowStart = current - loopWarning.sampleWindowMs\n while (flushTimes.length && flushTimes[0] < windowStart) {\n flushTimes.shift()\n }\n if (flushTimes.length <= loopWarning.maxFlushes) {\n return\n }\n if (loopWarning.coolDownMs > 0 && current - lastLoopWarningAt < loopWarning.coolDownMs) {\n return\n }\n lastLoopWarningAt = current\n emitDebug({\n mode: setDataStrategy,\n reason: 'loopWarning',\n pendingPatchKeys,\n payloadKeys: 0,\n computedDirtyKeys: includeComputed ? dirtyComputedKeys.size : 0,\n flushCount: flushTimes.length,\n windowMs: loopWarning.sampleWindowMs,\n targetLabel,\n message: `${targetLabel ? `${targetLabel} ` : ''}疑似运行时更新循环:${flushTimes.length} 次 setData flush/${loopWarning.sampleWindowMs}ms`,\n }, pathSource)\n }\n\n const collect = () => collectSnapshot({\n state,\n setupState,\n computedRefs,\n includeComputed,\n shouldIncludeKey: shouldIncludeSnapshotKey,\n plainCache,\n plainCacheEligibility,\n toPlainMaxDepth,\n toPlainMaxKeys,\n includeFunctions,\n functionPaths,\n })\n\n syncInitialSnapshotTokens()\n\n const collectDiffSnapshot = () => {\n const rawState = (isReactive(state) ? toRaw(state as any) : state) as Record<string, any>\n const rawSetupState = setupState && typeof setupState === 'object'\n ? (isReactive(setupState) ? toRaw(setupState as any) : setupState)\n : undefined\n const dispatchedSnapshot = commitTracker.state.dispatchedSnapshot\n const nextSnapshot: Record<string, any> = { ...dispatchedSnapshot }\n const seen = new WeakMap<object, any>()\n const includedStateKeys = new Set<string>()\n const includedComputedKeys = new Set<string>()\n const replacedTopLevelKeys = new Set<string>()\n\n for (const key of new Set([...Object.keys(rawState), ...(rawSetupState ? Object.keys(rawSetupState) : [])])) {\n if (!shouldIncludeSnapshotKey(key)) {\n continue\n }\n includedStateKeys.add(key)\n const source = rawSetupState && hasOwn(rawSetupState, key) ? rawSetupState : rawState\n const token = createValueToken(source[key])\n const previousToken = dispatchedStateTokens[key]\n if (\n previousToken\n && token\n && typeof previousToken === 'object'\n && typeof token === 'object'\n && hasOwn(previousToken as object, 'raw')\n && hasOwn(token as object, 'raw')\n && Array.isArray((previousToken as any).raw)\n && Array.isArray((token as any).raw)\n && (previousToken as any).raw !== (token as any).raw\n ) {\n replacedTopLevelKeys.add(key)\n }\n if (!isSameToken(previousToken, token) || !hasOwn(dispatchedSnapshot, key)) {\n nextSnapshot[key] = toPlain(source[key], seen, {\n cache: plainCache,\n cacheEligibility: plainCacheEligibility,\n maxDepth: toPlainMaxDepth,\n maxKeys: toPlainMaxKeys,\n includeFunctions,\n functionPaths,\n _path: key,\n })\n }\n dispatchedStateTokens[key] = token\n }\n\n for (const key of Object.keys(dispatchedStateTokens)) {\n if (!includedStateKeys.has(key)) {\n delete dispatchedStateTokens[key]\n if (!includeComputed || !hasOwn(computedRefs, key)) {\n delete nextSnapshot[key]\n }\n }\n }\n\n if (!includeComputed) {\n for (const key of Object.keys(dispatchedComputedTokens)) {\n delete dispatchedComputedTokens[key]\n }\n return {\n snapshot: nextSnapshot,\n replacedTopLevelKeys,\n }\n }\n\n for (const key of Object.keys(computedRefs)) {\n if (!shouldIncludeSnapshotKey(key)) {\n continue\n }\n includedComputedKeys.add(key)\n const value = computedRefs[key].value\n const token = createValueToken(value)\n if (!isSameToken(dispatchedComputedTokens[key], token) || !hasOwn(dispatchedSnapshot, key)) {\n nextSnapshot[key] = toPlain(value, seen, {\n cache: plainCache,\n cacheEligibility: plainCacheEligibility,\n maxDepth: toPlainMaxDepth,\n maxKeys: toPlainMaxKeys,\n includeFunctions,\n functionPaths,\n _path: key,\n })\n }\n dispatchedComputedTokens[key] = token\n }\n\n for (const key of Object.keys(dispatchedComputedTokens)) {\n if (!includedComputedKeys.has(key)) {\n delete dispatchedComputedTokens[key]\n if (!hasOwn(rawState, key) || !shouldIncludeSnapshotKey(key)) {\n delete nextSnapshot[key]\n }\n }\n }\n\n return {\n snapshot: nextSnapshot,\n replacedTopLevelKeys,\n }\n }\n\n const runDiffUpdate = (\n reason: SetDataDebugInfo['reason'] = 'diff',\n pendingPatchKeys = 0,\n onSnapshotPrepared?: (snapshot: SetDataSnapshot) => void,\n ): void => {\n const diffCollection = setDataStrategy === 'diff' ? collectDiffSnapshot() : undefined\n const snapshot = diffCollection?.snapshot ?? collect()\n const dispatchedSnapshot = commitTracker.state.dispatchedSnapshot\n const needsRecovery = commitTracker.state.needsFullSnapshot\n const payload = needsRecovery\n ? commitTracker.createFullPayload(snapshot)\n : diffCollection\n ? (() => {\n const fastDiff: Record<string, any> = {}\n for (const key of diffCollection.replacedTopLevelKeys) {\n fastDiff[key] = snapshot[key]\n }\n const baseDiff = diffSnapshots(dispatchedSnapshot, snapshot, {\n skipKeys: diffCollection.replacedTopLevelKeys,\n })\n return {\n ...baseDiff,\n ...fastDiff,\n }\n })()\n : diffSnapshots(dispatchedSnapshot, snapshot)\n onSnapshotPrepared?.(snapshot)\n const payloadKeys = Object.keys(payload).length\n if (!payloadKeys && !needsRecovery) {\n return\n }\n const effectiveReason = needsRecovery ? 'needsFullSnapshot' : reason\n emitDebug({\n mode: 'diff',\n reason: effectiveReason,\n pendingPatchKeys,\n payloadKeys,\n }, Object.keys(payload))\n commitTracker.dispatch({\n mode: 'diff',\n kind: needsRecovery ? 'full' : 'delta',\n reason: effectiveReason,\n snapshot,\n payload,\n pendingPatchKeys,\n })\n }\n\n const prepareJob = (\n pendingPatchKeys = 0,\n pathSource?: Iterable<string> | (() => Iterable<string>),\n ) => {\n if (!isMounted()) {\n return false\n }\n recordFlushForLoopWarning(pendingPatchKeys, pathSource)\n // 生成快照前刷新依赖(setup 中的 ref / 新增 key)\n runTracker()\n return true\n }\n\n const job = (_stateRootRaw?: object) => {\n if (!prepareJob()) {\n return\n }\n return runDiffUpdate('diff')\n }\n\n const snapshot = () => (\n setDataStrategy === 'patch'\n ? collect()\n : { ...commitTracker.state.dispatchedSnapshot }\n )\n const cloneLatestSnapshot = () => ({ ...commitTracker.state.dispatchedSnapshot })\n\n return {\n collect,\n emitDebug,\n getLatestSnapshot: () => commitTracker.state.dispatchedSnapshot,\n dispatchUpdate: commitTracker.dispatch,\n needsFullSnapshot: () => commitTracker.state.needsFullSnapshot,\n job,\n plainCache,\n plainCacheEligibility,\n prepareJob,\n resolveTopKeysByRoot,\n runDiffUpdate,\n shouldIncludeSnapshotKey,\n snapshot,\n cloneLatestSnapshot,\n dispose: commitTracker.dispose,\n }\n}\n"],"mappings":"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"}
@@ -57,19 +57,18 @@ function isDeepEqualValue(a, b, depth, budget) {
57
57
  return true;
58
58
  }
59
59
  function applySnapshotUpdate(snapshot, path, value, op, options) {
60
- var _options$cloneValue;
61
- const cloneValue = (_options$cloneValue = options === null || options === void 0 ? void 0 : options.cloneValue) !== null && _options$cloneValue !== void 0 ? _options$cloneValue : true;
62
- const clonedParents = options === null || options === void 0 ? void 0 : options.clonedParents;
60
+ const cloneValue = options?.cloneValue ?? true;
61
+ const clonedParents = options?.clonedParents;
63
62
  const segments = path.split(".").filter(Boolean);
64
63
  if (!segments.length) return;
65
- clonedParents === null || clonedParents === void 0 || clonedParents.add(snapshot);
64
+ clonedParents?.add(snapshot);
66
65
  let current = snapshot;
67
66
  for (let i = 0; i < segments.length - 1; i++) {
68
67
  const key = segments[i];
69
68
  const child = current[key];
70
69
  if (child == null || typeof child !== "object") {
71
70
  current[key] = {};
72
- clonedParents === null || clonedParents === void 0 || clonedParents.add(current[key]);
71
+ clonedParents?.add(current[key]);
73
72
  } else if (clonedParents && !clonedParents.has(child)) {
74
73
  const clonedChild = Array.isArray(child) ? child.slice() : { ...child };
75
74
  current[key] = clonedChild;
@@ -80,7 +79,7 @@ function applySnapshotUpdate(snapshot, path, value, op, options) {
80
79
  const leaf = segments[segments.length - 1];
81
80
  if (op === "delete") try {
82
81
  delete current[leaf];
83
- } catch (_unused) {
82
+ } catch {
84
83
  current[leaf] = null;
85
84
  }
86
85
  else current[leaf] = cloneValue ? cloneSnapshotValue(value) : value;
@@ -1 +1 @@
1
- {"version":3,"file":"snapshot.mjs","names":[],"sources":["../../../../../src/runtime/app/setData/snapshot.ts"],"sourcesContent":["import { isReactive, toRaw } from '../../../reactivity'\nimport { hasOwn } from '../../../utils'\nimport { toPlain } from '../../diff'\n\nexport function isPlainObjectLike(value: any) {\n if (value == null || typeof value !== 'object') {\n return false\n }\n const proto = Object.getPrototypeOf(value)\n return proto === Object.prototype || proto === null\n}\n\nexport function normalizeSetDataValue<T>(value: T): T | null {\n return value === undefined ? null : value\n}\n\nexport function cloneSnapshotValue<T>(value: T): T {\n if (Array.isArray(value)) {\n return value.map(item => cloneSnapshotValue(item)) as T\n }\n if (!isPlainObjectLike(value)) {\n return value\n }\n // 这里的快照对象会继续进入 setData / WXML / DevTools 热重载链路。\n // 不能使用 Object.create(null),否则微信运行时内部直接调用 hasOwnProperty 时会报错。\n const out: Record<string, any> = {}\n for (const key of Object.keys(value as Record<string, any>)) {\n out[key] = cloneSnapshotValue((value as Record<string, any>)[key])\n }\n return out as T\n}\n\nexport function isShallowEqualValue(a: any, b: any): boolean {\n if (Object.is(a, b)) {\n return true\n }\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) {\n return false\n }\n for (let i = 0; i < a.length; i++) {\n if (!Object.is(a[i], b[i])) {\n return false\n }\n }\n return true\n }\n if (!isPlainObjectLike(a) || !isPlainObjectLike(b)) {\n return false\n }\n const aKeys = Object.keys(a)\n const bKeys = Object.keys(b)\n if (aKeys.length !== bKeys.length) {\n return false\n }\n for (const k of aKeys) {\n if (!hasOwn(b, k)) {\n return false\n }\n if (!Object.is(a[k], b[k])) {\n return false\n }\n }\n return true\n}\n\nexport function isDeepEqualValue(\n a: any,\n b: any,\n depth: number,\n budget: { keys: number },\n): boolean {\n if (Object.is(a, b)) {\n return true\n }\n if (depth <= 0) {\n return false\n }\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) {\n return false\n }\n for (let i = 0; i < a.length; i++) {\n if (!isDeepEqualValue(a[i], b[i], depth - 1, budget)) {\n return false\n }\n }\n return true\n }\n if (!isPlainObjectLike(a) || !isPlainObjectLike(b)) {\n return false\n }\n const aKeys = Object.keys(a)\n const bKeys = Object.keys(b)\n if (aKeys.length !== bKeys.length) {\n return false\n }\n for (const k of aKeys) {\n budget.keys -= 1\n if (budget.keys <= 0) {\n return false\n }\n if (!hasOwn(b, k)) {\n return false\n }\n if (!isDeepEqualValue(a[k], b[k], depth - 1, budget)) {\n return false\n }\n }\n return true\n}\n\nexport function applySnapshotUpdate(\n snapshot: Record<string, any>,\n path: string,\n value: any,\n op: 'set' | 'delete',\n options?: { cloneValue?: boolean, clonedParents?: WeakSet<object> },\n) {\n const cloneValue = options?.cloneValue ?? true\n const clonedParents = options?.clonedParents\n const segments = path.split('.').filter(Boolean)\n if (!segments.length) {\n return\n }\n clonedParents?.add(snapshot)\n let current: any = snapshot\n for (let i = 0; i < segments.length - 1; i++) {\n const key = segments[i]\n const child = current[key]\n if (child == null || typeof child !== 'object') {\n // 中间节点同样会被同步到已派发快照并可能参与视图层更新,必须保持普通对象原型。\n current[key] = {}\n clonedParents?.add(current[key])\n }\n else if (clonedParents && !clonedParents.has(child)) {\n const clonedChild = Array.isArray(child) ? child.slice() : { ...child }\n current[key] = clonedChild\n clonedParents.add(clonedChild)\n }\n current = current[key]\n }\n const leaf = segments[segments.length - 1]!\n if (op === 'delete') {\n try {\n delete current[leaf]\n }\n catch {\n current[leaf] = null\n }\n }\n else {\n current[leaf] = cloneValue ? cloneSnapshotValue(value) : value\n }\n}\n\nexport function collectSnapshot(options: {\n state: Record<string, any>\n setupState?: Record<string, any>\n computedRefs: Record<string, { value: any }>\n includeComputed: boolean\n shouldIncludeKey: (key: string) => boolean\n plainCache: WeakMap<object, { version: number, value: any }>\n plainCacheEligibility?: WeakMap<object, boolean>\n toPlainMaxDepth: number\n toPlainMaxKeys: number\n includeFunctions?: boolean\n functionPaths?: string[]\n}) {\n const {\n state,\n setupState,\n computedRefs,\n includeComputed,\n shouldIncludeKey,\n plainCache,\n plainCacheEligibility,\n toPlainMaxDepth,\n toPlainMaxKeys,\n includeFunctions = false,\n functionPaths = [],\n } = options\n const seen = new WeakMap<object, any>()\n // collectSnapshot 的返回值会被 owner snapshot / patch scheduler 复用。\n // 后续维护不要改回 null-prototype 对象,否则热重载下会再次触发 hasOwnProperty 兼容问题。\n const out: Record<string, any> = {}\n const budget = Number.isFinite(toPlainMaxKeys) ? { keys: toPlainMaxKeys } : undefined\n\n const rawState = (isReactive(state) ? toRaw(state as any) : state) as Record<string, any>\n const rawSetupState = setupState && typeof setupState === 'object'\n ? (isReactive(setupState) ? toRaw(setupState as any) : setupState)\n : undefined\n const stateKeys = Object.keys(rawState)\n const setupStateKeys = rawSetupState ? Object.keys(rawSetupState) : []\n const computedKeys = includeComputed ? Object.keys(computedRefs) : []\n\n for (const key of stateKeys) {\n if (!shouldIncludeKey(key)) {\n continue\n }\n out[key] = toPlain(rawState[key], seen, { cache: plainCache, cacheEligibility: plainCacheEligibility, maxDepth: toPlainMaxDepth, includeFunctions, functionPaths, _budget: budget, _path: key })\n }\n\n for (const key of setupStateKeys) {\n if (!shouldIncludeKey(key)) {\n continue\n }\n out[key] = toPlain(rawSetupState![key], seen, { cache: plainCache, cacheEligibility: plainCacheEligibility, maxDepth: toPlainMaxDepth, includeFunctions, functionPaths, _budget: budget, _path: key })\n }\n\n for (const key of computedKeys) {\n if (!shouldIncludeKey(key)) {\n continue\n }\n out[key] = toPlain(computedRefs[key].value, seen, { cache: plainCache, cacheEligibility: plainCacheEligibility, maxDepth: toPlainMaxDepth, includeFunctions, functionPaths, _budget: budget, _path: key })\n }\n\n return out\n}\n"],"mappings":";;;;;;AAIA,SAAgB,kBAAkB,OAAY;CAC5C,IAAI,SAAS,QAAQ,OAAO,UAAU,UACpC,OAAO;CAET,MAAM,QAAQ,OAAO,eAAe,KAAK;CACzC,OAAO,UAAU,OAAO,aAAa,UAAU;AACjD;AAEA,SAAgB,sBAAyB,OAAoB;CAC3D,OAAO,UAAU,SAAY,OAAO;AACtC;AAEA,SAAgB,mBAAsB,OAAa;CACjD,IAAI,MAAM,QAAQ,KAAK,GACrB,OAAO,MAAM,KAAI,SAAQ,mBAAmB,IAAI,CAAC;CAEnD,IAAI,CAAC,kBAAkB,KAAK,GAC1B,OAAO;CAIT,MAAM,MAA2B,CAAC;CAClC,KAAK,MAAM,OAAO,OAAO,KAAK,KAA4B,GACxD,IAAI,OAAO,mBAAoB,MAA8B,IAAI;CAEnE,OAAO;AACT;AAEA,SAAgB,oBAAoB,GAAQ,GAAiB;CAC3D,IAAI,OAAO,GAAG,GAAG,CAAC,GAChB,OAAO;CAET,IAAI,MAAM,QAAQ,CAAC,KAAK,MAAM,QAAQ,CAAC,GAAG;EACxC,IAAI,EAAE,WAAW,EAAE,QACjB,OAAO;EAET,KAAK,IAAI,IAAI,GAAG,IAAI,EAAE,QAAQ,KAC5B,IAAI,CAAC,OAAO,GAAG,EAAE,IAAI,EAAE,EAAE,GACvB,OAAO;EAGX,OAAO;CACT;CACA,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,kBAAkB,CAAC,GAC/C,OAAO;CAET,MAAM,QAAQ,OAAO,KAAK,CAAC;CAC3B,MAAM,QAAQ,OAAO,KAAK,CAAC;CAC3B,IAAI,MAAM,WAAW,MAAM,QACzB,OAAO;CAET,KAAK,MAAM,KAAK,OAAO;EACrB,IAAI,CAAC,OAAO,GAAG,CAAC,GACd,OAAO;EAET,IAAI,CAAC,OAAO,GAAG,EAAE,IAAI,EAAE,EAAE,GACvB,OAAO;CAEX;CACA,OAAO;AACT;AAEA,SAAgB,iBACd,GACA,GACA,OACA,QACS;CACT,IAAI,OAAO,GAAG,GAAG,CAAC,GAChB,OAAO;CAET,IAAI,SAAS,GACX,OAAO;CAET,IAAI,MAAM,QAAQ,CAAC,KAAK,MAAM,QAAQ,CAAC,GAAG;EACxC,IAAI,EAAE,WAAW,EAAE,QACjB,OAAO;EAET,KAAK,IAAI,IAAI,GAAG,IAAI,EAAE,QAAQ,KAC5B,IAAI,CAAC,iBAAiB,EAAE,IAAI,EAAE,IAAI,QAAQ,GAAG,MAAM,GACjD,OAAO;EAGX,OAAO;CACT;CACA,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,kBAAkB,CAAC,GAC/C,OAAO;CAET,MAAM,QAAQ,OAAO,KAAK,CAAC;CAC3B,MAAM,QAAQ,OAAO,KAAK,CAAC;CAC3B,IAAI,MAAM,WAAW,MAAM,QACzB,OAAO;CAET,KAAK,MAAM,KAAK,OAAO;EACrB,OAAO,QAAQ;EACf,IAAI,OAAO,QAAQ,GACjB,OAAO;EAET,IAAI,CAAC,OAAO,GAAG,CAAC,GACd,OAAO;EAET,IAAI,CAAC,iBAAiB,EAAE,IAAI,EAAE,IAAI,QAAQ,GAAG,MAAM,GACjD,OAAO;CAEX;CACA,OAAO;AACT;AAEA,SAAgB,oBACd,UACA,MACA,OACA,IACA,SACA;;CACA,MAAM,sFAAa,QAAS,+EAAc;CAC1C,MAAM,kEAAgB,QAAS;CAC/B,MAAM,WAAW,KAAK,MAAM,GAAG,CAAC,CAAC,OAAO,OAAO;CAC/C,IAAI,CAAC,SAAS,QACZ;CAEF,oEAAe,IAAI,QAAQ;CAC3B,IAAI,UAAe;CACnB,KAAK,IAAI,IAAI,GAAG,IAAI,SAAS,SAAS,GAAG,KAAK;EAC5C,MAAM,MAAM,SAAS;EACrB,MAAM,QAAQ,QAAQ;EACtB,IAAI,SAAS,QAAQ,OAAO,UAAU,UAAU;GAE9C,QAAQ,OAAO,CAAC;GAChB,oEAAe,IAAI,QAAQ,IAAI;EACjC,OACK,IAAI,iBAAiB,CAAC,cAAc,IAAI,KAAK,GAAG;GACnD,MAAM,cAAc,MAAM,QAAQ,KAAK,IAAI,MAAM,MAAM,IAAI,EAAE,GAAG,MAAM;GACtE,QAAQ,OAAO;GACf,cAAc,IAAI,WAAW;EAC/B;EACA,UAAU,QAAQ;CACpB;CACA,MAAM,OAAO,SAAS,SAAS,SAAS;CACxC,IAAI,OAAO,UACT,IAAI;EACF,OAAO,QAAQ;CACjB,kBACM;EACJ,QAAQ,QAAQ;CAClB;MAGA,QAAQ,QAAQ,aAAa,mBAAmB,KAAK,IAAI;AAE7D;AAEA,SAAgB,gBAAgB,SAY7B;CACD,MAAM,EACJ,OACA,YACA,cACA,iBACA,kBACA,YACA,uBACA,iBACA,gBACA,mBAAmB,OACnB,gBAAgB,CAAC,MACf;CACJ,MAAM,uBAAO,IAAI,QAAqB;CAGtC,MAAM,MAA2B,CAAC;CAClC,MAAM,SAAS,OAAO,SAAS,cAAc,IAAI,EAAE,MAAM,eAAe,IAAI;CAE5E,MAAM,WAAY,WAAW,KAAK,IAAI,MAAM,KAAY,IAAI;CAC5D,MAAM,gBAAgB,cAAc,OAAO,eAAe,WACrD,WAAW,UAAU,IAAI,MAAM,UAAiB,IAAI,aACrD;CACJ,MAAM,YAAY,OAAO,KAAK,QAAQ;CACtC,MAAM,iBAAiB,gBAAgB,OAAO,KAAK,aAAa,IAAI,CAAC;CACrE,MAAM,eAAe,kBAAkB,OAAO,KAAK,YAAY,IAAI,CAAC;CAEpE,KAAK,MAAM,OAAO,WAAW;EAC3B,IAAI,CAAC,iBAAiB,GAAG,GACvB;EAEF,IAAI,OAAO,QAAQ,SAAS,MAAM,MAAM;GAAE,OAAO;GAAY,kBAAkB;GAAuB,UAAU;GAAiB;GAAkB;GAAe,SAAS;GAAQ,OAAO;EAAI,CAAC;CACjM;CAEA,KAAK,MAAM,OAAO,gBAAgB;EAChC,IAAI,CAAC,iBAAiB,GAAG,GACvB;EAEF,IAAI,OAAO,QAAQ,cAAe,MAAM,MAAM;GAAE,OAAO;GAAY,kBAAkB;GAAuB,UAAU;GAAiB;GAAkB;GAAe,SAAS;GAAQ,OAAO;EAAI,CAAC;CACvM;CAEA,KAAK,MAAM,OAAO,cAAc;EAC9B,IAAI,CAAC,iBAAiB,GAAG,GACvB;EAEF,IAAI,OAAO,QAAQ,aAAa,IAAI,CAAC,OAAO,MAAM;GAAE,OAAO;GAAY,kBAAkB;GAAuB,UAAU;GAAiB;GAAkB;GAAe,SAAS;GAAQ,OAAO;EAAI,CAAC;CAC3M;CAEA,OAAO;AACT"}
1
+ {"version":3,"file":"snapshot.mjs","names":[],"sources":["../../../../../src/runtime/app/setData/snapshot.ts"],"sourcesContent":["import { isReactive, toRaw } from '../../../reactivity'\nimport { hasOwn } from '../../../utils'\nimport { toPlain } from '../../diff'\n\nexport function isPlainObjectLike(value: any) {\n if (value == null || typeof value !== 'object') {\n return false\n }\n const proto = Object.getPrototypeOf(value)\n return proto === Object.prototype || proto === null\n}\n\nexport function normalizeSetDataValue<T>(value: T): T | null {\n return value === undefined ? null : value\n}\n\nexport function cloneSnapshotValue<T>(value: T): T {\n if (Array.isArray(value)) {\n return value.map(item => cloneSnapshotValue(item)) as T\n }\n if (!isPlainObjectLike(value)) {\n return value\n }\n // 这里的快照对象会继续进入 setData / WXML / DevTools 热重载链路。\n // 不能使用 Object.create(null),否则微信运行时内部直接调用 hasOwnProperty 时会报错。\n const out: Record<string, any> = {}\n for (const key of Object.keys(value as Record<string, any>)) {\n out[key] = cloneSnapshotValue((value as Record<string, any>)[key])\n }\n return out as T\n}\n\nexport function isShallowEqualValue(a: any, b: any): boolean {\n if (Object.is(a, b)) {\n return true\n }\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) {\n return false\n }\n for (let i = 0; i < a.length; i++) {\n if (!Object.is(a[i], b[i])) {\n return false\n }\n }\n return true\n }\n if (!isPlainObjectLike(a) || !isPlainObjectLike(b)) {\n return false\n }\n const aKeys = Object.keys(a)\n const bKeys = Object.keys(b)\n if (aKeys.length !== bKeys.length) {\n return false\n }\n for (const k of aKeys) {\n if (!hasOwn(b, k)) {\n return false\n }\n if (!Object.is(a[k], b[k])) {\n return false\n }\n }\n return true\n}\n\nexport function isDeepEqualValue(\n a: any,\n b: any,\n depth: number,\n budget: { keys: number },\n): boolean {\n if (Object.is(a, b)) {\n return true\n }\n if (depth <= 0) {\n return false\n }\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) {\n return false\n }\n for (let i = 0; i < a.length; i++) {\n if (!isDeepEqualValue(a[i], b[i], depth - 1, budget)) {\n return false\n }\n }\n return true\n }\n if (!isPlainObjectLike(a) || !isPlainObjectLike(b)) {\n return false\n }\n const aKeys = Object.keys(a)\n const bKeys = Object.keys(b)\n if (aKeys.length !== bKeys.length) {\n return false\n }\n for (const k of aKeys) {\n budget.keys -= 1\n if (budget.keys <= 0) {\n return false\n }\n if (!hasOwn(b, k)) {\n return false\n }\n if (!isDeepEqualValue(a[k], b[k], depth - 1, budget)) {\n return false\n }\n }\n return true\n}\n\nexport function applySnapshotUpdate(\n snapshot: Record<string, any>,\n path: string,\n value: any,\n op: 'set' | 'delete',\n options?: { cloneValue?: boolean, clonedParents?: WeakSet<object> },\n) {\n const cloneValue = options?.cloneValue ?? true\n const clonedParents = options?.clonedParents\n const segments = path.split('.').filter(Boolean)\n if (!segments.length) {\n return\n }\n clonedParents?.add(snapshot)\n let current: any = snapshot\n for (let i = 0; i < segments.length - 1; i++) {\n const key = segments[i]\n const child = current[key]\n if (child == null || typeof child !== 'object') {\n // 中间节点同样会被同步到已派发快照并可能参与视图层更新,必须保持普通对象原型。\n current[key] = {}\n clonedParents?.add(current[key])\n }\n else if (clonedParents && !clonedParents.has(child)) {\n const clonedChild = Array.isArray(child) ? child.slice() : { ...child }\n current[key] = clonedChild\n clonedParents.add(clonedChild)\n }\n current = current[key]\n }\n const leaf = segments[segments.length - 1]!\n if (op === 'delete') {\n try {\n delete current[leaf]\n }\n catch {\n current[leaf] = null\n }\n }\n else {\n current[leaf] = cloneValue ? cloneSnapshotValue(value) : value\n }\n}\n\nexport function collectSnapshot(options: {\n state: Record<string, any>\n setupState?: Record<string, any>\n computedRefs: Record<string, { value: any }>\n includeComputed: boolean\n shouldIncludeKey: (key: string) => boolean\n plainCache: WeakMap<object, { version: number, value: any }>\n plainCacheEligibility?: WeakMap<object, boolean>\n toPlainMaxDepth: number\n toPlainMaxKeys: number\n includeFunctions?: boolean\n functionPaths?: string[]\n}) {\n const {\n state,\n setupState,\n computedRefs,\n includeComputed,\n shouldIncludeKey,\n plainCache,\n plainCacheEligibility,\n toPlainMaxDepth,\n toPlainMaxKeys,\n includeFunctions = false,\n functionPaths = [],\n } = options\n const seen = new WeakMap<object, any>()\n // collectSnapshot 的返回值会被 owner snapshot / patch scheduler 复用。\n // 后续维护不要改回 null-prototype 对象,否则热重载下会再次触发 hasOwnProperty 兼容问题。\n const out: Record<string, any> = {}\n const budget = Number.isFinite(toPlainMaxKeys) ? { keys: toPlainMaxKeys } : undefined\n\n const rawState = (isReactive(state) ? toRaw(state as any) : state) as Record<string, any>\n const rawSetupState = setupState && typeof setupState === 'object'\n ? (isReactive(setupState) ? toRaw(setupState as any) : setupState)\n : undefined\n const stateKeys = Object.keys(rawState)\n const setupStateKeys = rawSetupState ? Object.keys(rawSetupState) : []\n const computedKeys = includeComputed ? Object.keys(computedRefs) : []\n\n for (const key of stateKeys) {\n if (!shouldIncludeKey(key)) {\n continue\n }\n out[key] = toPlain(rawState[key], seen, { cache: plainCache, cacheEligibility: plainCacheEligibility, maxDepth: toPlainMaxDepth, includeFunctions, functionPaths, _budget: budget, _path: key })\n }\n\n for (const key of setupStateKeys) {\n if (!shouldIncludeKey(key)) {\n continue\n }\n out[key] = toPlain(rawSetupState![key], seen, { cache: plainCache, cacheEligibility: plainCacheEligibility, maxDepth: toPlainMaxDepth, includeFunctions, functionPaths, _budget: budget, _path: key })\n }\n\n for (const key of computedKeys) {\n if (!shouldIncludeKey(key)) {\n continue\n }\n out[key] = toPlain(computedRefs[key].value, seen, { cache: plainCache, cacheEligibility: plainCacheEligibility, maxDepth: toPlainMaxDepth, includeFunctions, functionPaths, _budget: budget, _path: key })\n }\n\n return out\n}\n"],"mappings":";;;;;;AAIA,SAAgB,kBAAkB,OAAY;CAC5C,IAAI,SAAS,QAAQ,OAAO,UAAU,UACpC,OAAO;CAET,MAAM,QAAQ,OAAO,eAAe,KAAK;CACzC,OAAO,UAAU,OAAO,aAAa,UAAU;AACjD;AAEA,SAAgB,sBAAyB,OAAoB;CAC3D,OAAO,UAAU,SAAY,OAAO;AACtC;AAEA,SAAgB,mBAAsB,OAAa;CACjD,IAAI,MAAM,QAAQ,KAAK,GACrB,OAAO,MAAM,KAAI,SAAQ,mBAAmB,IAAI,CAAC;CAEnD,IAAI,CAAC,kBAAkB,KAAK,GAC1B,OAAO;CAIT,MAAM,MAA2B,CAAC;CAClC,KAAK,MAAM,OAAO,OAAO,KAAK,KAA4B,GACxD,IAAI,OAAO,mBAAoB,MAA8B,IAAI;CAEnE,OAAO;AACT;AAEA,SAAgB,oBAAoB,GAAQ,GAAiB;CAC3D,IAAI,OAAO,GAAG,GAAG,CAAC,GAChB,OAAO;CAET,IAAI,MAAM,QAAQ,CAAC,KAAK,MAAM,QAAQ,CAAC,GAAG;EACxC,IAAI,EAAE,WAAW,EAAE,QACjB,OAAO;EAET,KAAK,IAAI,IAAI,GAAG,IAAI,EAAE,QAAQ,KAC5B,IAAI,CAAC,OAAO,GAAG,EAAE,IAAI,EAAE,EAAE,GACvB,OAAO;EAGX,OAAO;CACT;CACA,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,kBAAkB,CAAC,GAC/C,OAAO;CAET,MAAM,QAAQ,OAAO,KAAK,CAAC;CAC3B,MAAM,QAAQ,OAAO,KAAK,CAAC;CAC3B,IAAI,MAAM,WAAW,MAAM,QACzB,OAAO;CAET,KAAK,MAAM,KAAK,OAAO;EACrB,IAAI,CAAC,OAAO,GAAG,CAAC,GACd,OAAO;EAET,IAAI,CAAC,OAAO,GAAG,EAAE,IAAI,EAAE,EAAE,GACvB,OAAO;CAEX;CACA,OAAO;AACT;AAEA,SAAgB,iBACd,GACA,GACA,OACA,QACS;CACT,IAAI,OAAO,GAAG,GAAG,CAAC,GAChB,OAAO;CAET,IAAI,SAAS,GACX,OAAO;CAET,IAAI,MAAM,QAAQ,CAAC,KAAK,MAAM,QAAQ,CAAC,GAAG;EACxC,IAAI,EAAE,WAAW,EAAE,QACjB,OAAO;EAET,KAAK,IAAI,IAAI,GAAG,IAAI,EAAE,QAAQ,KAC5B,IAAI,CAAC,iBAAiB,EAAE,IAAI,EAAE,IAAI,QAAQ,GAAG,MAAM,GACjD,OAAO;EAGX,OAAO;CACT;CACA,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,kBAAkB,CAAC,GAC/C,OAAO;CAET,MAAM,QAAQ,OAAO,KAAK,CAAC;CAC3B,MAAM,QAAQ,OAAO,KAAK,CAAC;CAC3B,IAAI,MAAM,WAAW,MAAM,QACzB,OAAO;CAET,KAAK,MAAM,KAAK,OAAO;EACrB,OAAO,QAAQ;EACf,IAAI,OAAO,QAAQ,GACjB,OAAO;EAET,IAAI,CAAC,OAAO,GAAG,CAAC,GACd,OAAO;EAET,IAAI,CAAC,iBAAiB,EAAE,IAAI,EAAE,IAAI,QAAQ,GAAG,MAAM,GACjD,OAAO;CAEX;CACA,OAAO;AACT;AAEA,SAAgB,oBACd,UACA,MACA,OACA,IACA,SACA;CACA,MAAM,aAAa,SAAS,cAAc;CAC1C,MAAM,gBAAgB,SAAS;CAC/B,MAAM,WAAW,KAAK,MAAM,GAAG,CAAC,CAAC,OAAO,OAAO;CAC/C,IAAI,CAAC,SAAS,QACZ;CAEF,eAAe,IAAI,QAAQ;CAC3B,IAAI,UAAe;CACnB,KAAK,IAAI,IAAI,GAAG,IAAI,SAAS,SAAS,GAAG,KAAK;EAC5C,MAAM,MAAM,SAAS;EACrB,MAAM,QAAQ,QAAQ;EACtB,IAAI,SAAS,QAAQ,OAAO,UAAU,UAAU;GAE9C,QAAQ,OAAO,CAAC;GAChB,eAAe,IAAI,QAAQ,IAAI;EACjC,OACK,IAAI,iBAAiB,CAAC,cAAc,IAAI,KAAK,GAAG;GACnD,MAAM,cAAc,MAAM,QAAQ,KAAK,IAAI,MAAM,MAAM,IAAI,EAAE,GAAG,MAAM;GACtE,QAAQ,OAAO;GACf,cAAc,IAAI,WAAW;EAC/B;EACA,UAAU,QAAQ;CACpB;CACA,MAAM,OAAO,SAAS,SAAS,SAAS;CACxC,IAAI,OAAO,UACT,IAAI;EACF,OAAO,QAAQ;CACjB,QACM;EACJ,QAAQ,QAAQ;CAClB;MAGA,QAAQ,QAAQ,aAAa,mBAAmB,KAAK,IAAI;AAE7D;AAEA,SAAgB,gBAAgB,SAY7B;CACD,MAAM,EACJ,OACA,YACA,cACA,iBACA,kBACA,YACA,uBACA,iBACA,gBACA,mBAAmB,OACnB,gBAAgB,CAAC,MACf;CACJ,MAAM,uBAAO,IAAI,QAAqB;CAGtC,MAAM,MAA2B,CAAC;CAClC,MAAM,SAAS,OAAO,SAAS,cAAc,IAAI,EAAE,MAAM,eAAe,IAAI;CAE5E,MAAM,WAAY,WAAW,KAAK,IAAI,MAAM,KAAY,IAAI;CAC5D,MAAM,gBAAgB,cAAc,OAAO,eAAe,WACrD,WAAW,UAAU,IAAI,MAAM,UAAiB,IAAI,aACrD;CACJ,MAAM,YAAY,OAAO,KAAK,QAAQ;CACtC,MAAM,iBAAiB,gBAAgB,OAAO,KAAK,aAAa,IAAI,CAAC;CACrE,MAAM,eAAe,kBAAkB,OAAO,KAAK,YAAY,IAAI,CAAC;CAEpE,KAAK,MAAM,OAAO,WAAW;EAC3B,IAAI,CAAC,iBAAiB,GAAG,GACvB;EAEF,IAAI,OAAO,QAAQ,SAAS,MAAM,MAAM;GAAE,OAAO;GAAY,kBAAkB;GAAuB,UAAU;GAAiB;GAAkB;GAAe,SAAS;GAAQ,OAAO;EAAI,CAAC;CACjM;CAEA,KAAK,MAAM,OAAO,gBAAgB;EAChC,IAAI,CAAC,iBAAiB,GAAG,GACvB;EAEF,IAAI,OAAO,QAAQ,cAAe,MAAM,MAAM;GAAE,OAAO;GAAY,kBAAkB;GAAuB,UAAU;GAAiB;GAAkB;GAAe,SAAS;GAAQ,OAAO;EAAI,CAAC;CACvM;CAEA,KAAK,MAAM,OAAO,cAAc;EAC9B,IAAI,CAAC,iBAAiB,GAAG,GACvB;EAEF,IAAI,OAAO,QAAQ,aAAa,IAAI,CAAC,OAAO,MAAM;GAAE,OAAO;GAAY,kBAAkB;GAAuB,UAAU;GAAiB;GAAkB;GAAe,SAAS;GAAQ,OAAO;EAAI,CAAC;CAC3M;CAEA,OAAO;AACT"}
@@ -1,37 +1,36 @@
1
1
  //#region src/runtime/app/setDataOptions.ts
2
2
  function resolveSetDataOptions(setDataOptions) {
3
- var _setDataOptions$inclu, _setDataOptions$suspe, _setDataOptions$strat, _setDataOptions$merge, _setDataOptions$compu, _setDataOptions$diagn, _setDataOptions$debug;
4
- const includeComputed = (_setDataOptions$inclu = setDataOptions === null || setDataOptions === void 0 ? void 0 : setDataOptions.includeComputed) !== null && _setDataOptions$inclu !== void 0 ? _setDataOptions$inclu : true;
5
- const suspendWhenHidden = (_setDataOptions$suspe = setDataOptions === null || setDataOptions === void 0 ? void 0 : setDataOptions.suspendWhenHidden) !== null && _setDataOptions$suspe !== void 0 ? _setDataOptions$suspe : false;
6
- const setDataStrategy = (_setDataOptions$strat = setDataOptions === null || setDataOptions === void 0 ? void 0 : setDataOptions.strategy) !== null && _setDataOptions$strat !== void 0 ? _setDataOptions$strat : "diff";
7
- const maxPatchKeys = typeof (setDataOptions === null || setDataOptions === void 0 ? void 0 : setDataOptions.maxPatchKeys) === "number" ? Math.max(0, setDataOptions.maxPatchKeys) : Number.POSITIVE_INFINITY;
8
- const maxPayloadBytes = typeof (setDataOptions === null || setDataOptions === void 0 ? void 0 : setDataOptions.maxPayloadBytes) === "number" ? Math.max(0, setDataOptions.maxPayloadBytes) : Number.POSITIVE_INFINITY;
9
- const mergeSiblingThreshold = typeof (setDataOptions === null || setDataOptions === void 0 ? void 0 : setDataOptions.mergeSiblingThreshold) === "number" ? Math.max(2, Math.floor(setDataOptions.mergeSiblingThreshold)) : 0;
10
- const mergeSiblingMaxInflationRatio = typeof (setDataOptions === null || setDataOptions === void 0 ? void 0 : setDataOptions.mergeSiblingMaxInflationRatio) === "number" ? Math.max(0, setDataOptions.mergeSiblingMaxInflationRatio) : 1.25;
11
- const mergeSiblingMaxParentBytes = typeof (setDataOptions === null || setDataOptions === void 0 ? void 0 : setDataOptions.mergeSiblingMaxParentBytes) === "number" ? Math.max(0, setDataOptions.mergeSiblingMaxParentBytes) : Number.POSITIVE_INFINITY;
12
- const mergeSiblingSkipArray = (_setDataOptions$merge = setDataOptions === null || setDataOptions === void 0 ? void 0 : setDataOptions.mergeSiblingSkipArray) !== null && _setDataOptions$merge !== void 0 ? _setDataOptions$merge : true;
13
- const computedCompare = (_setDataOptions$compu = setDataOptions === null || setDataOptions === void 0 ? void 0 : setDataOptions.computedCompare) !== null && _setDataOptions$compu !== void 0 ? _setDataOptions$compu : setDataStrategy === "patch" ? "deep" : "reference";
14
- const computedCompareMaxDepth = typeof (setDataOptions === null || setDataOptions === void 0 ? void 0 : setDataOptions.computedCompareMaxDepth) === "number" ? Math.max(0, Math.floor(setDataOptions.computedCompareMaxDepth)) : 4;
15
- const computedCompareMaxKeys = typeof (setDataOptions === null || setDataOptions === void 0 ? void 0 : setDataOptions.computedCompareMaxKeys) === "number" ? Math.max(0, Math.floor(setDataOptions.computedCompareMaxKeys)) : 200;
16
- const prelinkMaxDepth = setDataOptions === null || setDataOptions === void 0 ? void 0 : setDataOptions.prelinkMaxDepth;
17
- const prelinkMaxKeys = setDataOptions === null || setDataOptions === void 0 ? void 0 : setDataOptions.prelinkMaxKeys;
18
- const debug = setDataOptions === null || setDataOptions === void 0 ? void 0 : setDataOptions.debug;
19
- const diagnostics = (_setDataOptions$diagn = setDataOptions === null || setDataOptions === void 0 ? void 0 : setDataOptions.diagnostics) !== null && _setDataOptions$diagn !== void 0 ? _setDataOptions$diagn : "off";
20
- const loopWarningOption = setDataOptions === null || setDataOptions === void 0 ? void 0 : setDataOptions.loopWarning;
3
+ const includeComputed = setDataOptions?.includeComputed ?? true;
4
+ const suspendWhenHidden = setDataOptions?.suspendWhenHidden ?? false;
5
+ const setDataStrategy = setDataOptions?.strategy ?? "diff";
6
+ const maxPatchKeys = typeof setDataOptions?.maxPatchKeys === "number" ? Math.max(0, setDataOptions.maxPatchKeys) : Number.POSITIVE_INFINITY;
7
+ const maxPayloadBytes = typeof setDataOptions?.maxPayloadBytes === "number" ? Math.max(0, setDataOptions.maxPayloadBytes) : Number.POSITIVE_INFINITY;
8
+ const mergeSiblingThreshold = typeof setDataOptions?.mergeSiblingThreshold === "number" ? Math.max(2, Math.floor(setDataOptions.mergeSiblingThreshold)) : 0;
9
+ const mergeSiblingMaxInflationRatio = typeof setDataOptions?.mergeSiblingMaxInflationRatio === "number" ? Math.max(0, setDataOptions.mergeSiblingMaxInflationRatio) : 1.25;
10
+ const mergeSiblingMaxParentBytes = typeof setDataOptions?.mergeSiblingMaxParentBytes === "number" ? Math.max(0, setDataOptions.mergeSiblingMaxParentBytes) : Number.POSITIVE_INFINITY;
11
+ const mergeSiblingSkipArray = setDataOptions?.mergeSiblingSkipArray ?? true;
12
+ const computedCompare = setDataOptions?.computedCompare ?? (setDataStrategy === "patch" ? "deep" : "reference");
13
+ const computedCompareMaxDepth = typeof setDataOptions?.computedCompareMaxDepth === "number" ? Math.max(0, Math.floor(setDataOptions.computedCompareMaxDepth)) : 4;
14
+ const computedCompareMaxKeys = typeof setDataOptions?.computedCompareMaxKeys === "number" ? Math.max(0, Math.floor(setDataOptions.computedCompareMaxKeys)) : 200;
15
+ const prelinkMaxDepth = setDataOptions?.prelinkMaxDepth;
16
+ const prelinkMaxKeys = setDataOptions?.prelinkMaxKeys;
17
+ const debug = setDataOptions?.debug;
18
+ const diagnostics = setDataOptions?.diagnostics ?? "off";
19
+ const loopWarningOption = setDataOptions?.loopWarning;
21
20
  const loopWarning = loopWarningOption === false || loopWarningOption && typeof loopWarningOption === "object" && loopWarningOption.enabled === false ? false : {
22
21
  sampleWindowMs: typeof loopWarningOption === "object" && typeof loopWarningOption.sampleWindowMs === "number" ? Math.max(100, Math.floor(loopWarningOption.sampleWindowMs)) : 1e3,
23
22
  maxFlushes: typeof loopWarningOption === "object" && typeof loopWarningOption.maxFlushes === "number" ? Math.max(1, Math.floor(loopWarningOption.maxFlushes)) : 50,
24
23
  coolDownMs: typeof loopWarningOption === "object" && typeof loopWarningOption.coolDownMs === "number" ? Math.max(0, Math.floor(loopWarningOption.coolDownMs)) : 5e3
25
24
  };
26
- const debugWhen = (_setDataOptions$debug = setDataOptions === null || setDataOptions === void 0 ? void 0 : setDataOptions.debugWhen) !== null && _setDataOptions$debug !== void 0 ? _setDataOptions$debug : "fallback";
27
- const debugSampleRate = typeof (setDataOptions === null || setDataOptions === void 0 ? void 0 : setDataOptions.debugSampleRate) === "number" ? Math.min(1, Math.max(0, setDataOptions.debugSampleRate)) : 1;
28
- const elevateTopKeyThreshold = typeof (setDataOptions === null || setDataOptions === void 0 ? void 0 : setDataOptions.elevateTopKeyThreshold) === "number" ? Math.max(0, Math.floor(setDataOptions.elevateTopKeyThreshold)) : Number.POSITIVE_INFINITY;
29
- const toPlainMaxDepth = typeof (setDataOptions === null || setDataOptions === void 0 ? void 0 : setDataOptions.toPlainMaxDepth) === "number" ? Math.max(0, Math.floor(setDataOptions.toPlainMaxDepth)) : Number.POSITIVE_INFINITY;
30
- const toPlainMaxKeys = typeof (setDataOptions === null || setDataOptions === void 0 ? void 0 : setDataOptions.toPlainMaxKeys) === "number" ? Math.max(0, Math.floor(setDataOptions.toPlainMaxKeys)) : Number.POSITIVE_INFINITY;
31
- const includeFunctions = Boolean(setDataOptions === null || setDataOptions === void 0 ? void 0 : setDataOptions.includeFunctions);
32
- const functionPaths = Array.isArray(setDataOptions === null || setDataOptions === void 0 ? void 0 : setDataOptions.functionPaths) ? [...new Set(setDataOptions.functionPaths.filter((path) => typeof path === "string" && path.length > 0))] : [];
33
- const pickSet = Array.isArray(setDataOptions === null || setDataOptions === void 0 ? void 0 : setDataOptions.pick) && setDataOptions.pick.length > 0 ? new Set(setDataOptions.pick) : void 0;
34
- const omitSet = Array.isArray(setDataOptions === null || setDataOptions === void 0 ? void 0 : setDataOptions.omit) && setDataOptions.omit.length > 0 ? new Set(setDataOptions.omit) : void 0;
25
+ const debugWhen = setDataOptions?.debugWhen ?? "fallback";
26
+ const debugSampleRate = typeof setDataOptions?.debugSampleRate === "number" ? Math.min(1, Math.max(0, setDataOptions.debugSampleRate)) : 1;
27
+ const elevateTopKeyThreshold = typeof setDataOptions?.elevateTopKeyThreshold === "number" ? Math.max(0, Math.floor(setDataOptions.elevateTopKeyThreshold)) : Number.POSITIVE_INFINITY;
28
+ const toPlainMaxDepth = typeof setDataOptions?.toPlainMaxDepth === "number" ? Math.max(0, Math.floor(setDataOptions.toPlainMaxDepth)) : Number.POSITIVE_INFINITY;
29
+ const toPlainMaxKeys = typeof setDataOptions?.toPlainMaxKeys === "number" ? Math.max(0, Math.floor(setDataOptions.toPlainMaxKeys)) : Number.POSITIVE_INFINITY;
30
+ const includeFunctions = Boolean(setDataOptions?.includeFunctions);
31
+ const functionPaths = Array.isArray(setDataOptions?.functionPaths) ? [...new Set(setDataOptions.functionPaths.filter((path) => typeof path === "string" && path.length > 0))] : [];
32
+ const pickSet = Array.isArray(setDataOptions?.pick) && setDataOptions.pick.length > 0 ? new Set(setDataOptions.pick) : void 0;
33
+ const omitSet = Array.isArray(setDataOptions?.omit) && setDataOptions.omit.length > 0 ? new Set(setDataOptions.omit) : void 0;
35
34
  const shouldIncludeKey = (key) => {
36
35
  if (pickSet && !pickSet.has(key)) return false;
37
36
  if (omitSet && omitSet.has(key)) return false;
@@ -1 +1 @@
1
- {"version":3,"file":"setDataOptions.mjs","names":[],"sources":["../../../../src/runtime/app/setDataOptions.ts"],"sourcesContent":["import type { SetDataSnapshotOptions } from '../types'\n\nexport interface ResolvedSetDataOptions {\n includeComputed: boolean\n suspendWhenHidden: boolean\n setDataStrategy: 'diff' | 'patch'\n maxPatchKeys: number\n maxPayloadBytes: number\n mergeSiblingThreshold: number\n mergeSiblingMaxInflationRatio: number\n mergeSiblingMaxParentBytes: number\n mergeSiblingSkipArray: boolean\n computedCompare: 'reference' | 'shallow' | 'deep'\n computedCompareMaxDepth: number\n computedCompareMaxKeys: number\n prelinkMaxDepth: number | undefined\n prelinkMaxKeys: number | undefined\n debug: SetDataSnapshotOptions['debug']\n diagnostics: 'off' | 'fallback' | 'always'\n loopWarning: false | {\n sampleWindowMs: number\n maxFlushes: number\n coolDownMs: number\n }\n debugWhen: 'fallback' | 'always'\n debugSampleRate: number\n elevateTopKeyThreshold: number\n toPlainMaxDepth: number\n toPlainMaxKeys: number\n includeFunctions: boolean\n functionPaths: string[]\n pickSet: Set<string> | undefined\n omitSet: Set<string> | undefined\n shouldIncludeKey: (key: string) => boolean\n}\n\nexport function resolveSetDataOptions(\n setDataOptions?: SetDataSnapshotOptions,\n): ResolvedSetDataOptions {\n const includeComputed = setDataOptions?.includeComputed ?? true\n const suspendWhenHidden = setDataOptions?.suspendWhenHidden ?? false\n const setDataStrategy = setDataOptions?.strategy ?? 'diff'\n const maxPatchKeys = typeof setDataOptions?.maxPatchKeys === 'number'\n ? Math.max(0, setDataOptions!.maxPatchKeys!)\n : Number.POSITIVE_INFINITY\n const maxPayloadBytes = typeof setDataOptions?.maxPayloadBytes === 'number'\n ? Math.max(0, setDataOptions!.maxPayloadBytes!)\n : Number.POSITIVE_INFINITY\n const mergeSiblingThreshold = typeof setDataOptions?.mergeSiblingThreshold === 'number'\n ? Math.max(2, Math.floor(setDataOptions!.mergeSiblingThreshold!))\n : 0\n const mergeSiblingMaxInflationRatio = typeof setDataOptions?.mergeSiblingMaxInflationRatio === 'number'\n ? Math.max(0, setDataOptions!.mergeSiblingMaxInflationRatio!)\n : 1.25\n const mergeSiblingMaxParentBytes = typeof setDataOptions?.mergeSiblingMaxParentBytes === 'number'\n ? Math.max(0, setDataOptions!.mergeSiblingMaxParentBytes!)\n : Number.POSITIVE_INFINITY\n const mergeSiblingSkipArray = setDataOptions?.mergeSiblingSkipArray ?? true\n const computedCompare = setDataOptions?.computedCompare ?? (setDataStrategy === 'patch' ? 'deep' : 'reference')\n const computedCompareMaxDepth = typeof setDataOptions?.computedCompareMaxDepth === 'number'\n ? Math.max(0, Math.floor(setDataOptions!.computedCompareMaxDepth!))\n : 4\n const computedCompareMaxKeys = typeof setDataOptions?.computedCompareMaxKeys === 'number'\n ? Math.max(0, Math.floor(setDataOptions!.computedCompareMaxKeys!))\n : 200\n const prelinkMaxDepth = setDataOptions?.prelinkMaxDepth\n const prelinkMaxKeys = setDataOptions?.prelinkMaxKeys\n const debug = setDataOptions?.debug\n const diagnostics = setDataOptions?.diagnostics ?? 'off'\n const loopWarningOption = setDataOptions?.loopWarning\n const loopWarning = loopWarningOption === false || (\n loopWarningOption\n && typeof loopWarningOption === 'object'\n && loopWarningOption.enabled === false\n )\n ? false\n : {\n sampleWindowMs: typeof loopWarningOption === 'object' && typeof loopWarningOption.sampleWindowMs === 'number'\n ? Math.max(100, Math.floor(loopWarningOption.sampleWindowMs))\n : 1000,\n maxFlushes: typeof loopWarningOption === 'object' && typeof loopWarningOption.maxFlushes === 'number'\n ? Math.max(1, Math.floor(loopWarningOption.maxFlushes))\n : 50,\n coolDownMs: typeof loopWarningOption === 'object' && typeof loopWarningOption.coolDownMs === 'number'\n ? Math.max(0, Math.floor(loopWarningOption.coolDownMs))\n : 5000,\n }\n const debugWhen = setDataOptions?.debugWhen ?? 'fallback'\n const debugSampleRate = typeof setDataOptions?.debugSampleRate === 'number'\n ? Math.min(1, Math.max(0, setDataOptions!.debugSampleRate!))\n : 1\n const elevateTopKeyThreshold = typeof setDataOptions?.elevateTopKeyThreshold === 'number'\n ? Math.max(0, Math.floor(setDataOptions!.elevateTopKeyThreshold!))\n : Number.POSITIVE_INFINITY\n const toPlainMaxDepth = typeof setDataOptions?.toPlainMaxDepth === 'number'\n ? Math.max(0, Math.floor(setDataOptions!.toPlainMaxDepth!))\n : Number.POSITIVE_INFINITY\n const toPlainMaxKeys = typeof setDataOptions?.toPlainMaxKeys === 'number'\n ? Math.max(0, Math.floor(setDataOptions!.toPlainMaxKeys!))\n : Number.POSITIVE_INFINITY\n const includeFunctions = Boolean(setDataOptions?.includeFunctions)\n const functionPaths = Array.isArray(setDataOptions?.functionPaths)\n ? [...new Set(setDataOptions.functionPaths.filter(path => typeof path === 'string' && path.length > 0))]\n : []\n const pickSet = Array.isArray(setDataOptions?.pick) && setDataOptions!.pick!.length > 0\n ? new Set(setDataOptions!.pick)\n : undefined\n const omitSet = Array.isArray(setDataOptions?.omit) && setDataOptions!.omit!.length > 0\n ? new Set(setDataOptions!.omit)\n : undefined\n const shouldIncludeKey = (key: string) => {\n if (pickSet && !pickSet.has(key)) {\n return false\n }\n if (omitSet && omitSet.has(key)) {\n return false\n }\n return true\n }\n\n return {\n includeComputed,\n suspendWhenHidden,\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 pickSet,\n omitSet,\n shouldIncludeKey,\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"setDataOptions.mjs","names":[],"sources":["../../../../src/runtime/app/setDataOptions.ts"],"sourcesContent":["import type { SetDataSnapshotOptions } from '../types'\n\nexport interface ResolvedSetDataOptions {\n includeComputed: boolean\n suspendWhenHidden: boolean\n setDataStrategy: 'diff' | 'patch'\n maxPatchKeys: number\n maxPayloadBytes: number\n mergeSiblingThreshold: number\n mergeSiblingMaxInflationRatio: number\n mergeSiblingMaxParentBytes: number\n mergeSiblingSkipArray: boolean\n computedCompare: 'reference' | 'shallow' | 'deep'\n computedCompareMaxDepth: number\n computedCompareMaxKeys: number\n prelinkMaxDepth: number | undefined\n prelinkMaxKeys: number | undefined\n debug: SetDataSnapshotOptions['debug']\n diagnostics: 'off' | 'fallback' | 'always'\n loopWarning: false | {\n sampleWindowMs: number\n maxFlushes: number\n coolDownMs: number\n }\n debugWhen: 'fallback' | 'always'\n debugSampleRate: number\n elevateTopKeyThreshold: number\n toPlainMaxDepth: number\n toPlainMaxKeys: number\n includeFunctions: boolean\n functionPaths: string[]\n pickSet: Set<string> | undefined\n omitSet: Set<string> | undefined\n shouldIncludeKey: (key: string) => boolean\n}\n\nexport function resolveSetDataOptions(\n setDataOptions?: SetDataSnapshotOptions,\n): ResolvedSetDataOptions {\n const includeComputed = setDataOptions?.includeComputed ?? true\n const suspendWhenHidden = setDataOptions?.suspendWhenHidden ?? false\n const setDataStrategy = setDataOptions?.strategy ?? 'diff'\n const maxPatchKeys = typeof setDataOptions?.maxPatchKeys === 'number'\n ? Math.max(0, setDataOptions!.maxPatchKeys!)\n : Number.POSITIVE_INFINITY\n const maxPayloadBytes = typeof setDataOptions?.maxPayloadBytes === 'number'\n ? Math.max(0, setDataOptions!.maxPayloadBytes!)\n : Number.POSITIVE_INFINITY\n const mergeSiblingThreshold = typeof setDataOptions?.mergeSiblingThreshold === 'number'\n ? Math.max(2, Math.floor(setDataOptions!.mergeSiblingThreshold!))\n : 0\n const mergeSiblingMaxInflationRatio = typeof setDataOptions?.mergeSiblingMaxInflationRatio === 'number'\n ? Math.max(0, setDataOptions!.mergeSiblingMaxInflationRatio!)\n : 1.25\n const mergeSiblingMaxParentBytes = typeof setDataOptions?.mergeSiblingMaxParentBytes === 'number'\n ? Math.max(0, setDataOptions!.mergeSiblingMaxParentBytes!)\n : Number.POSITIVE_INFINITY\n const mergeSiblingSkipArray = setDataOptions?.mergeSiblingSkipArray ?? true\n const computedCompare = setDataOptions?.computedCompare ?? (setDataStrategy === 'patch' ? 'deep' : 'reference')\n const computedCompareMaxDepth = typeof setDataOptions?.computedCompareMaxDepth === 'number'\n ? Math.max(0, Math.floor(setDataOptions!.computedCompareMaxDepth!))\n : 4\n const computedCompareMaxKeys = typeof setDataOptions?.computedCompareMaxKeys === 'number'\n ? Math.max(0, Math.floor(setDataOptions!.computedCompareMaxKeys!))\n : 200\n const prelinkMaxDepth = setDataOptions?.prelinkMaxDepth\n const prelinkMaxKeys = setDataOptions?.prelinkMaxKeys\n const debug = setDataOptions?.debug\n const diagnostics = setDataOptions?.diagnostics ?? 'off'\n const loopWarningOption = setDataOptions?.loopWarning\n const loopWarning = loopWarningOption === false || (\n loopWarningOption\n && typeof loopWarningOption === 'object'\n && loopWarningOption.enabled === false\n )\n ? false\n : {\n sampleWindowMs: typeof loopWarningOption === 'object' && typeof loopWarningOption.sampleWindowMs === 'number'\n ? Math.max(100, Math.floor(loopWarningOption.sampleWindowMs))\n : 1000,\n maxFlushes: typeof loopWarningOption === 'object' && typeof loopWarningOption.maxFlushes === 'number'\n ? Math.max(1, Math.floor(loopWarningOption.maxFlushes))\n : 50,\n coolDownMs: typeof loopWarningOption === 'object' && typeof loopWarningOption.coolDownMs === 'number'\n ? Math.max(0, Math.floor(loopWarningOption.coolDownMs))\n : 5000,\n }\n const debugWhen = setDataOptions?.debugWhen ?? 'fallback'\n const debugSampleRate = typeof setDataOptions?.debugSampleRate === 'number'\n ? Math.min(1, Math.max(0, setDataOptions!.debugSampleRate!))\n : 1\n const elevateTopKeyThreshold = typeof setDataOptions?.elevateTopKeyThreshold === 'number'\n ? Math.max(0, Math.floor(setDataOptions!.elevateTopKeyThreshold!))\n : Number.POSITIVE_INFINITY\n const toPlainMaxDepth = typeof setDataOptions?.toPlainMaxDepth === 'number'\n ? Math.max(0, Math.floor(setDataOptions!.toPlainMaxDepth!))\n : Number.POSITIVE_INFINITY\n const toPlainMaxKeys = typeof setDataOptions?.toPlainMaxKeys === 'number'\n ? Math.max(0, Math.floor(setDataOptions!.toPlainMaxKeys!))\n : Number.POSITIVE_INFINITY\n const includeFunctions = Boolean(setDataOptions?.includeFunctions)\n const functionPaths = Array.isArray(setDataOptions?.functionPaths)\n ? [...new Set(setDataOptions.functionPaths.filter(path => typeof path === 'string' && path.length > 0))]\n : []\n const pickSet = Array.isArray(setDataOptions?.pick) && setDataOptions!.pick!.length > 0\n ? new Set(setDataOptions!.pick)\n : undefined\n const omitSet = Array.isArray(setDataOptions?.omit) && setDataOptions!.omit!.length > 0\n ? new Set(setDataOptions!.omit)\n : undefined\n const shouldIncludeKey = (key: string) => {\n if (pickSet && !pickSet.has(key)) {\n return false\n }\n if (omitSet && omitSet.has(key)) {\n return false\n }\n return true\n }\n\n return {\n includeComputed,\n suspendWhenHidden,\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 pickSet,\n omitSet,\n shouldIncludeKey,\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { ComputedDefinitions, MethodDefinitions } from "./types/core.mjs";
2
+ import { RuntimeApp } from "./types/runtime.mjs";
3
+ import { CreateAppOptions } from "./types/options.mjs";
4
+ import "./types.mjs";
5
+ //#region src/runtime/app.d.ts
6
+ export declare function createApp<D extends object, C extends ComputedDefinitions, M extends MethodDefinitions>(options: CreateAppOptions<D, C, M>): RuntimeApp<D, C, M>;
7
+ //#endregion
8
+ //# sourceMappingURL=app.d.mts.map
@@ -1,4 +1,4 @@
1
- import { getMiniProgramGlobalObject } from "./platform.mjs";
1
+ import { getCurrentMiniProgramGlobalObject } from "./platform/current.mjs";
2
2
  import { INTERNAL_DEFAULTS_SCOPE_KEY, applyWevuAppDefaults } from "./defaults.mjs";
3
3
  import { isSetDataHighFrequencyWarningRequested, requireRuntimeCapability } from "./capabilities.mjs";
4
4
  import { ensureRuntimeAppProvides, setRuntimeAppProvidedValue } from "./provideContext.mjs";
@@ -14,14 +14,14 @@ function createApp(options) {
14
14
  const defaultsScope = options[INTERNAL_DEFAULTS_SCOPE_KEY];
15
15
  const { [INTERNAL_DEFAULTS_SCOPE_KEY]: _ignoredDefaultsScope, [WEVU_BINDING_MANIFEST_KEY]: rawBindingManifest, [WEVU_SCOPED_SLOT_OWNER_REQUIRED_KEY]: scopedSlotOwnerRequired, data, computed: computedOptions, methods, setData: setDataOptions, watch: appWatch, setup: appSetup, ...mpOptions } = defaultsScope === "component" ? options : applyWevuAppDefaults(options);
16
16
  const bindingManifest = resolveBindingManifest(rawBindingManifest);
17
- const resolvedMethods = methods !== null && methods !== void 0 ? methods : {};
18
- const resolvedComputed = computedOptions !== null && computedOptions !== void 0 ? computedOptions : {};
19
- const hasScopedSlotBindings = scopedSlotOwnerRequired === true || Array.isArray(setDataOptions === null || setDataOptions === void 0 ? void 0 : setDataOptions.pick) && setDataOptions.pick.includes(WEVU_SLOT_OWNER_ID_KEY);
17
+ const resolvedMethods = methods ?? {};
18
+ const resolvedComputed = computedOptions ?? {};
19
+ const hasScopedSlotBindings = scopedSlotOwnerRequired === true || Array.isArray(setDataOptions?.pick) && setDataOptions.pick.includes(WEVU_SLOT_OWNER_ID_KEY);
20
20
  const methodRecord = resolvedMethods;
21
21
  const inlineMap = methodRecord[WEVU_INLINE_MAP_KEY];
22
22
  if (Object.prototype.hasOwnProperty.call(methodRecord, WEVU_INLINE_MAP_KEY) && inlineMap && typeof inlineMap === "object" && Object.keys(inlineMap).length > 0 && typeof methodRecord[WEVU_INLINE_HANDLER] !== "function" && typeof mpOptions[WEVU_INLINE_HANDLER] !== "function") requireRuntimeCapability("inlineEvents", "createApp(inline event metadata)");
23
- if ((setDataOptions === null || setDataOptions === void 0 ? void 0 : setDataOptions.strategy) === "patch") requireRuntimeCapability("patchStrategy", "createApp(setData.strategy=\"patch\")");
24
- if (isSetDataHighFrequencyWarningRequested(setDataOptions === null || setDataOptions === void 0 ? void 0 : setDataOptions.highFrequencyWarning)) requireRuntimeCapability("setDataHighFrequencyWarning", "createApp(setData.highFrequencyWarning)");
23
+ if (setDataOptions?.strategy === "patch") requireRuntimeCapability("patchStrategy", "createApp(setData.strategy=\"patch\")");
24
+ if (isSetDataHighFrequencyWarningRequested(setDataOptions?.highFrequencyWarning)) requireRuntimeCapability("setDataHighFrequencyWarning", "createApp(setData.highFrequencyWarning)");
25
25
  if (hasScopedSlotBindings) requireRuntimeCapability("scopedSlots", "createApp(scoped-slot bindings)");
26
26
  const installedPlugins = /* @__PURE__ */ new Set();
27
27
  const appUnmountCleanups = /* @__PURE__ */ new Set();
@@ -80,16 +80,16 @@ function createApp(options) {
80
80
  enumerable: false,
81
81
  writable: false
82
82
  });
83
- } catch (_unused) {
83
+ } catch {
84
84
  runtimeApp.__wevuSetDataOptions = setDataOptions;
85
85
  runtimeApp.__wevuHasTemplateRuntimeBindings = hasScopedSlotBindings;
86
86
  }
87
87
  const registerRuntimeApp = () => {
88
- const globalObject = getMiniProgramGlobalObject();
88
+ const globalObject = getCurrentMiniProgramGlobalObject();
89
89
  const appRegisterKey = "__wevuAppRegistered";
90
90
  if (!(globalObject ? Boolean(globalObject[appRegisterKey]) : false)) {
91
91
  if (globalObject) globalObject[appRegisterKey] = true;
92
- registerApp(runtimeApp, methods !== null && methods !== void 0 ? methods : {}, appWatch, appSetup, mpOptions);
92
+ registerApp(runtimeApp, methods ?? {}, appWatch, appSetup, mpOptions);
93
93
  }
94
94
  };
95
95
  if (defaultsScope !== "component" && typeof App === "function") registerRuntimeApp();
@@ -1 +1 @@
1
- {"version":3,"file":"app.mjs","names":[],"sources":["../../../src/runtime/app.ts"],"sourcesContent":["import type { WevuRuntimeBindingManifestV1 } from '@weapp-core/constants'\nimport type {\n AppConfig,\n ComputedDefinitions,\n CreateAppOptions,\n MethodDefinitions,\n RuntimeApp,\n WevuPlugin,\n} from './types'\nimport {\n WEVU_BINDING_MANIFEST_KEY,\n WEVU_INLINE_HANDLER,\n WEVU_INLINE_MAP_KEY,\n WEVU_SCOPED_SLOT_OWNER_REQUIRED_KEY,\n WEVU_SLOT_OWNER_ID_KEY,\n} from '@weapp-core/constants'\nimport { version } from '../version'\nimport { createRuntimeMount } from './app/mount'\nimport { setPendingRuntimeAppRegistration } from './app/pending'\nimport { resolveBindingManifest } from './bindingManifest'\nimport { isSetDataHighFrequencyWarningRequested, requireRuntimeCapability } from './capabilities'\nimport { applyWevuAppDefaults, INTERNAL_DEFAULTS_SCOPE_KEY } from './defaults'\nimport { getMiniProgramGlobalObject } from './platform'\nimport { ensureRuntimeAppProvides, setRuntimeAppProvidedValue } from './provideContext'\nimport { registerApp } from './register'\n\nexport function createApp<D extends object, C extends ComputedDefinitions, M extends MethodDefinitions>(\n options: CreateAppOptions<D, C, M>,\n): RuntimeApp<D, C, M> {\n const defaultsScope = (options as any)[INTERNAL_DEFAULTS_SCOPE_KEY] as string | undefined\n const resolvedOptions = defaultsScope === 'component'\n ? options\n : applyWevuAppDefaults(options)\n const {\n [INTERNAL_DEFAULTS_SCOPE_KEY]: _ignoredDefaultsScope,\n [WEVU_BINDING_MANIFEST_KEY]: rawBindingManifest,\n [WEVU_SCOPED_SLOT_OWNER_REQUIRED_KEY]: scopedSlotOwnerRequired,\n data,\n computed: computedOptions,\n methods,\n setData: setDataOptions,\n watch: appWatch,\n setup: appSetup,\n ...mpOptions\n } = resolvedOptions as typeof resolvedOptions & { [WEVU_SCOPED_SLOT_OWNER_REQUIRED_KEY]?: boolean }\n const bindingManifest: WevuRuntimeBindingManifestV1 | undefined = resolveBindingManifest(rawBindingManifest)\n const resolvedMethods = methods ?? ({} as M)\n const resolvedComputed = computedOptions ?? ({} as C)\n const hasScopedSlotBindings = scopedSlotOwnerRequired === true\n || (Array.isArray(setDataOptions?.pick) && setDataOptions.pick.includes(WEVU_SLOT_OWNER_ID_KEY))\n const methodRecord = resolvedMethods as unknown as Record<string, unknown>\n const inlineMap = methodRecord[WEVU_INLINE_MAP_KEY]\n const hasInlineMetadata = Object.prototype.hasOwnProperty.call(methodRecord, WEVU_INLINE_MAP_KEY)\n && inlineMap\n && typeof inlineMap === 'object'\n && Object.keys(inlineMap).length > 0\n if (\n hasInlineMetadata\n && typeof methodRecord[WEVU_INLINE_HANDLER] !== 'function'\n && typeof (mpOptions as Record<string, unknown>)[WEVU_INLINE_HANDLER] !== 'function'\n ) {\n requireRuntimeCapability('inlineEvents', 'createApp(inline event metadata)')\n }\n if (setDataOptions?.strategy === 'patch') {\n requireRuntimeCapability('patchStrategy', 'createApp(setData.strategy=\"patch\")')\n }\n if (isSetDataHighFrequencyWarningRequested(setDataOptions?.highFrequencyWarning)) {\n requireRuntimeCapability('setDataHighFrequencyWarning', 'createApp(setData.highFrequencyWarning)')\n }\n if (hasScopedSlotBindings) {\n requireRuntimeCapability('scopedSlots', 'createApp(scoped-slot bindings)')\n }\n\n const installedPlugins = new Set<WevuPlugin>()\n const appUnmountCleanups = new Set<() => void>()\n let appUnmounted = false\n const appConfig: AppConfig = { globalProperties: {} }\n const mount = createRuntimeMount<D, C, M>({\n data,\n resolvedComputed,\n resolvedMethods,\n appConfig,\n setDataOptions,\n bindingManifest,\n })\n\n const runtimeApp: RuntimeApp<D, C, M> = {\n mount,\n use(plugin: WevuPlugin, ...options: any[]) {\n if (!plugin || installedPlugins.has(plugin)) {\n return runtimeApp\n }\n installedPlugins.add(plugin)\n if (typeof plugin === 'function') {\n plugin(runtimeApp, ...options)\n }\n else if (typeof plugin.install === 'function') {\n plugin.install(runtimeApp, ...options)\n }\n else {\n throw new TypeError('插件必须是函数,或包含 install 方法的对象')\n }\n return runtimeApp\n },\n provide(key: any, value: any) {\n setRuntimeAppProvidedValue(runtimeApp, key, value, {\n syncGlobal: defaultsScope !== 'component',\n })\n return runtimeApp\n },\n onUnmount(cleanup: () => void) {\n if (typeof cleanup !== 'function') {\n throw new TypeError('onUnmount 只接受函数')\n }\n if (appUnmounted) {\n cleanup()\n return runtimeApp\n }\n appUnmountCleanups.add(cleanup)\n return runtimeApp\n },\n unmount() {\n if (appUnmounted) {\n return\n }\n appUnmounted = true\n for (const cleanup of appUnmountCleanups) {\n cleanup()\n }\n appUnmountCleanups.clear()\n },\n config: appConfig,\n version,\n }\n\n try {\n ensureRuntimeAppProvides(runtimeApp)\n Object.defineProperty(runtimeApp as Record<string, any>, '__wevuSetDataOptions', {\n value: setDataOptions,\n configurable: true,\n enumerable: false,\n writable: false,\n })\n Object.defineProperty(runtimeApp as Record<string, any>, '__wevuHasTemplateRuntimeBindings', {\n value: hasScopedSlotBindings,\n configurable: true,\n enumerable: false,\n writable: false,\n })\n }\n catch {\n ;(runtimeApp as any).__wevuSetDataOptions = setDataOptions\n ;(runtimeApp as any).__wevuHasTemplateRuntimeBindings = hasScopedSlotBindings\n }\n\n const registerRuntimeApp = () => {\n const globalObject = getMiniProgramGlobalObject()\n const appRegisterKey = '__wevuAppRegistered'\n const hasRegistered = globalObject ? Boolean(globalObject[appRegisterKey]) : false\n // 开发者工具/HMR 可能重复执行入口,避免多次 App() 导致 AppService 事件监听累积。\n if (!hasRegistered) {\n if (globalObject) {\n globalObject[appRegisterKey] = true\n }\n // 若检测到全局 App 构造器则自动注册小程序 App\n registerApp<D, C, M>(runtimeApp, (methods ?? {}) as any, appWatch as any, appSetup as any, mpOptions as any)\n }\n }\n\n if (defaultsScope !== 'component' && typeof App === 'function') {\n registerRuntimeApp()\n }\n else if (defaultsScope !== 'component') {\n setPendingRuntimeAppRegistration({\n app: runtimeApp,\n register: registerRuntimeApp,\n })\n }\n\n return runtimeApp\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"app.mjs","names":[],"sources":["../../../src/runtime/app.ts"],"sourcesContent":["import type { WevuRuntimeBindingManifestV1 } from '@weapp-core/constants'\nimport type {\n AppConfig,\n ComputedDefinitions,\n CreateAppOptions,\n MethodDefinitions,\n RuntimeApp,\n WevuPlugin,\n} from './types'\nimport {\n WEVU_BINDING_MANIFEST_KEY,\n WEVU_INLINE_HANDLER,\n WEVU_INLINE_MAP_KEY,\n WEVU_SCOPED_SLOT_OWNER_REQUIRED_KEY,\n WEVU_SLOT_OWNER_ID_KEY,\n} from '@weapp-core/constants'\nimport { version } from '../version'\nimport { createRuntimeMount } from './app/mount'\nimport { setPendingRuntimeAppRegistration } from './app/pending'\nimport { resolveBindingManifest } from './bindingManifest'\nimport { isSetDataHighFrequencyWarningRequested, requireRuntimeCapability } from './capabilities'\nimport { applyWevuAppDefaults, INTERNAL_DEFAULTS_SCOPE_KEY } from './defaults'\nimport { getCurrentMiniProgramGlobalObject } from './platform'\nimport { ensureRuntimeAppProvides, setRuntimeAppProvidedValue } from './provideContext'\nimport { registerApp } from './register'\n\nexport function createApp<D extends object, C extends ComputedDefinitions, M extends MethodDefinitions>(\n options: CreateAppOptions<D, C, M>,\n): RuntimeApp<D, C, M> {\n const defaultsScope = (options as any)[INTERNAL_DEFAULTS_SCOPE_KEY] as string | undefined\n const resolvedOptions = defaultsScope === 'component'\n ? options\n : applyWevuAppDefaults(options)\n const {\n [INTERNAL_DEFAULTS_SCOPE_KEY]: _ignoredDefaultsScope,\n [WEVU_BINDING_MANIFEST_KEY]: rawBindingManifest,\n [WEVU_SCOPED_SLOT_OWNER_REQUIRED_KEY]: scopedSlotOwnerRequired,\n data,\n computed: computedOptions,\n methods,\n setData: setDataOptions,\n watch: appWatch,\n setup: appSetup,\n ...mpOptions\n } = resolvedOptions as typeof resolvedOptions & { [WEVU_SCOPED_SLOT_OWNER_REQUIRED_KEY]?: boolean }\n const bindingManifest: WevuRuntimeBindingManifestV1 | undefined = resolveBindingManifest(rawBindingManifest)\n const resolvedMethods = methods ?? ({} as M)\n const resolvedComputed = computedOptions ?? ({} as C)\n const hasScopedSlotBindings = scopedSlotOwnerRequired === true\n || (Array.isArray(setDataOptions?.pick) && setDataOptions.pick.includes(WEVU_SLOT_OWNER_ID_KEY))\n const methodRecord = resolvedMethods as unknown as Record<string, unknown>\n const inlineMap = methodRecord[WEVU_INLINE_MAP_KEY]\n const hasInlineMetadata = Object.prototype.hasOwnProperty.call(methodRecord, WEVU_INLINE_MAP_KEY)\n && inlineMap\n && typeof inlineMap === 'object'\n && Object.keys(inlineMap).length > 0\n if (\n hasInlineMetadata\n && typeof methodRecord[WEVU_INLINE_HANDLER] !== 'function'\n && typeof (mpOptions as Record<string, unknown>)[WEVU_INLINE_HANDLER] !== 'function'\n ) {\n requireRuntimeCapability('inlineEvents', 'createApp(inline event metadata)')\n }\n if (setDataOptions?.strategy === 'patch') {\n requireRuntimeCapability('patchStrategy', 'createApp(setData.strategy=\"patch\")')\n }\n if (isSetDataHighFrequencyWarningRequested(setDataOptions?.highFrequencyWarning)) {\n requireRuntimeCapability('setDataHighFrequencyWarning', 'createApp(setData.highFrequencyWarning)')\n }\n if (hasScopedSlotBindings) {\n requireRuntimeCapability('scopedSlots', 'createApp(scoped-slot bindings)')\n }\n\n const installedPlugins = new Set<WevuPlugin>()\n const appUnmountCleanups = new Set<() => void>()\n let appUnmounted = false\n const appConfig: AppConfig = { globalProperties: {} }\n const mount = createRuntimeMount<D, C, M>({\n data,\n resolvedComputed,\n resolvedMethods,\n appConfig,\n setDataOptions,\n bindingManifest,\n })\n\n const runtimeApp: RuntimeApp<D, C, M> = {\n mount,\n use(plugin: WevuPlugin, ...options: any[]) {\n if (!plugin || installedPlugins.has(plugin)) {\n return runtimeApp\n }\n installedPlugins.add(plugin)\n if (typeof plugin === 'function') {\n plugin(runtimeApp, ...options)\n }\n else if (typeof plugin.install === 'function') {\n plugin.install(runtimeApp, ...options)\n }\n else {\n throw new TypeError('插件必须是函数,或包含 install 方法的对象')\n }\n return runtimeApp\n },\n provide(key: any, value: any) {\n setRuntimeAppProvidedValue(runtimeApp, key, value, {\n syncGlobal: defaultsScope !== 'component',\n })\n return runtimeApp\n },\n onUnmount(cleanup: () => void) {\n if (typeof cleanup !== 'function') {\n throw new TypeError('onUnmount 只接受函数')\n }\n if (appUnmounted) {\n cleanup()\n return runtimeApp\n }\n appUnmountCleanups.add(cleanup)\n return runtimeApp\n },\n unmount() {\n if (appUnmounted) {\n return\n }\n appUnmounted = true\n for (const cleanup of appUnmountCleanups) {\n cleanup()\n }\n appUnmountCleanups.clear()\n },\n config: appConfig,\n version,\n }\n\n try {\n ensureRuntimeAppProvides(runtimeApp)\n Object.defineProperty(runtimeApp as Record<string, any>, '__wevuSetDataOptions', {\n value: setDataOptions,\n configurable: true,\n enumerable: false,\n writable: false,\n })\n Object.defineProperty(runtimeApp as Record<string, any>, '__wevuHasTemplateRuntimeBindings', {\n value: hasScopedSlotBindings,\n configurable: true,\n enumerable: false,\n writable: false,\n })\n }\n catch {\n ;(runtimeApp as any).__wevuSetDataOptions = setDataOptions\n ;(runtimeApp as any).__wevuHasTemplateRuntimeBindings = hasScopedSlotBindings\n }\n\n const registerRuntimeApp = () => {\n const globalObject = getCurrentMiniProgramGlobalObject()\n const appRegisterKey = '__wevuAppRegistered'\n const hasRegistered = globalObject ? Boolean(globalObject[appRegisterKey]) : false\n // 开发者工具/HMR 可能重复执行入口,避免多次 App() 导致 AppService 事件监听累积。\n if (!hasRegistered) {\n if (globalObject) {\n globalObject[appRegisterKey] = true\n }\n // 若检测到全局 App 构造器则自动注册小程序 App\n registerApp<D, C, M>(runtimeApp, (methods ?? {}) as any, appWatch as any, appSetup as any, mpOptions as any)\n }\n }\n\n if (defaultsScope !== 'component' && typeof App === 'function') {\n registerRuntimeApp()\n }\n else if (defaultsScope !== 'component') {\n setPendingRuntimeAppRegistration({\n app: runtimeApp,\n register: registerRuntimeApp,\n })\n }\n\n return runtimeApp\n}\n"],"mappings":"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"}