wevu 6.18.6 → 6.19.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 (585) hide show
  1. package/dist/_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/defineProperty.mjs +1 -0
  2. package/dist/_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/toPrimitive.mjs +1 -0
  3. package/dist/_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/toPropertyKey.mjs +1 -0
  4. package/dist/_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/typeof.mjs +1 -0
  5. package/dist/{rolldown-runtime-CenpyGzJ.mjs → _virtual/_rolldown/runtime.mjs} +1 -1
  6. package/dist/dev/_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/defineProperty.mjs +14 -0
  7. package/dist/dev/_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/toPrimitive.mjs +16 -0
  8. package/dist/dev/_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/toPropertyKey.mjs +11 -0
  9. package/dist/dev/_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/typeof.mjs +12 -0
  10. package/dist/dev/{rolldown-runtime-BUUfjzRC.mjs → _virtual/_rolldown/runtime.mjs} +1 -1
  11. package/dist/dev/index.mjs +49 -10
  12. package/dist/dev/internal-reactivity.mjs +15 -5
  13. package/dist/dev/internal-runtime.mjs +32 -4
  14. package/dist/dev/internal-template.mjs +1 -1
  15. package/dist/dev/package.mjs +6 -0
  16. package/dist/dev/package.mjs.map +1 -0
  17. package/dist/dev/reactivity/computed.mjs +49 -0
  18. package/dist/dev/reactivity/computed.mjs.map +1 -0
  19. package/dist/dev/reactivity/core.mjs +184 -0
  20. package/dist/dev/reactivity/core.mjs.map +1 -0
  21. package/dist/dev/reactivity/reactive/mutation.mjs +12 -0
  22. package/dist/dev/reactivity/reactive/mutation.mjs.map +1 -0
  23. package/dist/dev/{computed-BxRsUJgi.mjs → reactivity/reactive/patch.mjs} +6 -48
  24. package/dist/dev/reactivity/reactive/patch.mjs.map +1 -0
  25. package/dist/dev/reactivity/reactive/patchState.mjs +138 -0
  26. package/dist/dev/reactivity/reactive/patchState.mjs.map +1 -0
  27. package/dist/dev/reactivity/reactive/shallow.mjs +77 -0
  28. package/dist/dev/reactivity/reactive/shallow.mjs.map +1 -0
  29. package/dist/dev/reactivity/reactive/shared.mjs +40 -0
  30. package/dist/dev/reactivity/reactive/shared.mjs.map +1 -0
  31. package/dist/dev/reactivity/reactive/state.mjs +8 -0
  32. package/dist/dev/reactivity/reactive/state.mjs.map +1 -0
  33. package/dist/dev/reactivity/reactive.mjs +212 -0
  34. package/dist/dev/reactivity/reactive.mjs.map +1 -0
  35. package/dist/dev/reactivity/readonly.mjs +69 -0
  36. package/dist/dev/reactivity/readonly.mjs.map +1 -0
  37. package/dist/dev/reactivity/ref.mjs +97 -0
  38. package/dist/dev/reactivity/ref.mjs.map +1 -0
  39. package/dist/dev/reactivity/shallowRef.mjs +71 -0
  40. package/dist/dev/reactivity/shallowRef.mjs.map +1 -0
  41. package/dist/dev/{toRefs-D06VmFK2.mjs → reactivity/toRefs.mjs} +4 -3
  42. package/dist/dev/reactivity/toRefs.mjs.map +1 -0
  43. package/dist/dev/reactivity/traverse.mjs +40 -0
  44. package/dist/dev/reactivity/traverse.mjs.map +1 -0
  45. package/dist/dev/reactivity/watch/helpers.mjs +78 -0
  46. package/dist/dev/reactivity/watch/helpers.mjs.map +1 -0
  47. package/dist/dev/reactivity/watch/types.mjs +20 -0
  48. package/dist/dev/reactivity/watch/types.mjs.map +1 -0
  49. package/dist/dev/reactivity/watch.mjs +167 -0
  50. package/dist/dev/reactivity/watch.mjs.map +1 -0
  51. package/dist/dev/router/backNavigation.mjs +32 -0
  52. package/dist/dev/router/backNavigation.mjs.map +1 -0
  53. package/dist/dev/router/createRouter.mjs +176 -0
  54. package/dist/dev/router/createRouter.mjs.map +1 -0
  55. package/dist/dev/router/instance.mjs +17 -0
  56. package/dist/dev/router/instance.mjs.map +1 -0
  57. package/dist/dev/router/navigationApi.mjs +94 -0
  58. package/dist/dev/router/navigationApi.mjs.map +1 -0
  59. package/dist/dev/router/navigationCore.mjs +139 -0
  60. package/dist/dev/router/navigationCore.mjs.map +1 -0
  61. package/dist/dev/router/navigationResult.mjs +54 -0
  62. package/dist/dev/router/navigationResult.mjs.map +1 -0
  63. package/dist/dev/router/navigationTarget.mjs +121 -0
  64. package/dist/dev/router/navigationTarget.mjs.map +1 -0
  65. package/dist/dev/router/navigationTargetHelpers.mjs +38 -0
  66. package/dist/dev/router/navigationTargetHelpers.mjs.map +1 -0
  67. package/dist/dev/router/resolve.mjs +22 -0
  68. package/dist/dev/router/resolve.mjs.map +1 -0
  69. package/dist/dev/router/routeRegistry.mjs +78 -0
  70. package/dist/dev/router/routeRegistry.mjs.map +1 -0
  71. package/dist/dev/router/routeSync.mjs +72 -0
  72. package/dist/dev/router/routeSync.mjs.map +1 -0
  73. package/dist/dev/router/types.mjs +11 -0
  74. package/dist/dev/router/types.mjs.map +1 -0
  75. package/dist/dev/router/useRoute.mjs +106 -0
  76. package/dist/dev/router/useRoute.mjs.map +1 -0
  77. package/dist/dev/router/useRouter.mjs +15 -0
  78. package/dist/dev/router/useRouter.mjs.map +1 -0
  79. package/dist/dev/router.mjs +9 -1316
  80. package/dist/dev/routerInternal/location.mjs +66 -0
  81. package/dist/dev/routerInternal/location.mjs.map +1 -0
  82. package/dist/dev/routerInternal/matching.mjs +149 -0
  83. package/dist/dev/routerInternal/matching.mjs.map +1 -0
  84. package/dist/dev/routerInternal/params.mjs +95 -0
  85. package/dist/dev/routerInternal/params.mjs.map +1 -0
  86. package/dist/dev/routerInternal/path.mjs +42 -0
  87. package/dist/dev/routerInternal/path.mjs.map +1 -0
  88. package/dist/dev/routerInternal/query.mjs +113 -0
  89. package/dist/dev/routerInternal/query.mjs.map +1 -0
  90. package/dist/dev/routerInternal/records.mjs +172 -0
  91. package/dist/dev/routerInternal/records.mjs.map +1 -0
  92. package/dist/dev/routerInternal/recordsWarnings.mjs +49 -0
  93. package/dist/dev/routerInternal/recordsWarnings.mjs.map +1 -0
  94. package/dist/dev/routerInternal/snapshots.mjs +126 -0
  95. package/dist/dev/routerInternal/snapshots.mjs.map +1 -0
  96. package/dist/dev/runtime/app/computed.mjs +68 -0
  97. package/dist/dev/runtime/app/computed.mjs.map +1 -0
  98. package/dist/dev/runtime/app/context.mjs +275 -0
  99. package/dist/dev/runtime/app/context.mjs.map +1 -0
  100. package/dist/dev/runtime/app/diagnostics.mjs +34 -0
  101. package/dist/dev/runtime/app/diagnostics.mjs.map +1 -0
  102. package/dist/dev/runtime/app/mount.mjs +269 -0
  103. package/dist/dev/runtime/app/mount.mjs.map +1 -0
  104. package/dist/dev/runtime/app/pending.mjs +14 -0
  105. package/dist/dev/runtime/app/pending.mjs.map +1 -0
  106. package/dist/dev/runtime/app/setData/patchScheduler.mjs +158 -0
  107. package/dist/dev/runtime/app/setData/patchScheduler.mjs.map +1 -0
  108. package/dist/dev/runtime/app/setData/payload.mjs +161 -0
  109. package/dist/dev/runtime/app/setData/payload.mjs.map +1 -0
  110. package/dist/dev/runtime/app/setData/scheduler.mjs +313 -0
  111. package/dist/dev/runtime/app/setData/scheduler.mjs.map +1 -0
  112. package/dist/dev/runtime/app/setData/snapshot.mjs +129 -0
  113. package/dist/dev/runtime/app/setData/snapshot.mjs.map +1 -0
  114. package/dist/dev/runtime/app/setDataOptions.mjs +73 -0
  115. package/dist/dev/runtime/app/setDataOptions.mjs.map +1 -0
  116. package/dist/dev/runtime/app.mjs +93 -0
  117. package/dist/dev/runtime/app.mjs.map +1 -0
  118. package/dist/dev/runtime/bindModel.mjs +92 -0
  119. package/dist/dev/runtime/bindModel.mjs.map +1 -0
  120. package/dist/dev/runtime/defaults.mjs +61 -0
  121. package/dist/dev/runtime/defaults.mjs.map +1 -0
  122. package/dist/dev/runtime/define/initialComputed.mjs +125 -0
  123. package/dist/dev/runtime/define/initialComputed.mjs.map +1 -0
  124. package/dist/dev/runtime/define/options.mjs +169 -0
  125. package/dist/dev/runtime/define/options.mjs.map +1 -0
  126. package/dist/dev/runtime/define/optionsApi.mjs +48 -0
  127. package/dist/dev/runtime/define/optionsApi.mjs.map +1 -0
  128. package/dist/dev/runtime/define/props.mjs +194 -0
  129. package/dist/dev/runtime/define/props.mjs.map +1 -0
  130. package/dist/dev/runtime/define/scopedSlotOptions.mjs +313 -0
  131. package/dist/dev/runtime/define/scopedSlotOptions.mjs.map +1 -0
  132. package/dist/dev/runtime/define/setupResult.mjs +78 -0
  133. package/dist/dev/runtime/define/setupResult.mjs.map +1 -0
  134. package/dist/dev/runtime/define.mjs +140 -0
  135. package/dist/dev/runtime/define.mjs.map +1 -0
  136. package/dist/dev/runtime/diff.mjs +193 -0
  137. package/dist/dev/runtime/diff.mjs.map +1 -0
  138. package/dist/dev/runtime/disposables.mjs +81 -0
  139. package/dist/dev/runtime/disposables.mjs.map +1 -0
  140. package/dist/dev/runtime/elementIntersectionObserver.mjs +80 -0
  141. package/dist/dev/runtime/elementIntersectionObserver.mjs.map +1 -0
  142. package/dist/dev/runtime/emit.mjs +36 -0
  143. package/dist/dev/runtime/emit.mjs.map +1 -0
  144. package/dist/dev/{base-CYkvI7w8.mjs → runtime/hooks/base.mjs} +3 -140
  145. package/dist/dev/runtime/hooks/base.mjs.map +1 -0
  146. package/dist/dev/runtime/hooks/register.mjs +92 -0
  147. package/dist/dev/runtime/hooks/register.mjs.map +1 -0
  148. package/dist/dev/runtime/hooks/vue.mjs +81 -0
  149. package/dist/dev/runtime/hooks/vue.mjs.map +1 -0
  150. package/dist/dev/runtime/internal.mjs +18 -0
  151. package/dist/dev/runtime/internal.mjs.map +1 -0
  152. package/dist/dev/runtime/intersectionObserver.mjs +46 -0
  153. package/dist/dev/runtime/intersectionObserver.mjs.map +1 -0
  154. package/dist/dev/runtime/layoutBridge.mjs +303 -0
  155. package/dist/dev/runtime/layoutBridge.mjs.map +1 -0
  156. package/dist/dev/runtime/layoutComponentMatcher.mjs +11 -0
  157. package/dist/dev/runtime/layoutComponentMatcher.mjs.map +1 -0
  158. package/dist/dev/runtime/nativeBridge.mjs +21 -0
  159. package/dist/dev/runtime/nativeBridge.mjs.map +1 -0
  160. package/dist/dev/runtime/noSetData.mjs +18 -0
  161. package/dist/dev/runtime/noSetData.mjs.map +1 -0
  162. package/dist/dev/runtime/pageEnvironment.mjs +100 -0
  163. package/dist/dev/runtime/pageEnvironment.mjs.map +1 -0
  164. package/dist/dev/runtime/pageLayout.mjs +71 -0
  165. package/dist/dev/runtime/pageLayout.mjs.map +1 -0
  166. package/dist/dev/runtime/pageScroll.mjs +110 -0
  167. package/dist/dev/runtime/pageScroll.mjs.map +1 -0
  168. package/dist/dev/runtime/platform.mjs +77 -0
  169. package/dist/dev/runtime/platform.mjs.map +1 -0
  170. package/dist/dev/runtime/provide.mjs +71 -0
  171. package/dist/dev/runtime/provide.mjs.map +1 -0
  172. package/dist/dev/runtime/provideContext.mjs +101 -0
  173. package/dist/dev/runtime/provideContext.mjs.map +1 -0
  174. package/dist/dev/runtime/provideStore.mjs +18 -0
  175. package/dist/dev/runtime/provideStore.mjs.map +1 -0
  176. package/dist/dev/runtime/pullDownRefresh.mjs +24 -0
  177. package/dist/dev/runtime/pullDownRefresh.mjs.map +1 -0
  178. package/dist/dev/runtime/register/app.mjs +159 -0
  179. package/dist/dev/runtime/register/app.mjs.map +1 -0
  180. package/dist/dev/runtime/register/component/features.mjs +43 -0
  181. package/dist/dev/runtime/register/component/features.mjs.map +1 -0
  182. package/dist/dev/runtime/register/component/lifecycle/optionalHooks.mjs +64 -0
  183. package/dist/dev/runtime/register/component/lifecycle/optionalHooks.mjs.map +1 -0
  184. package/dist/dev/runtime/register/component/lifecycle/platform.mjs +95 -0
  185. package/dist/dev/runtime/register/component/lifecycle/platform.mjs.map +1 -0
  186. package/dist/dev/runtime/register/component/lifecycle.mjs +122 -0
  187. package/dist/dev/runtime/register/component/lifecycle.mjs.map +1 -0
  188. package/dist/dev/runtime/register/component/methods.mjs +80 -0
  189. package/dist/dev/runtime/register/component/methods.mjs.map +1 -0
  190. package/dist/dev/runtime/register/component/options.mjs +204 -0
  191. package/dist/dev/runtime/register/component/options.mjs.map +1 -0
  192. package/dist/dev/runtime/register/component/props.mjs +218 -0
  193. package/dist/dev/runtime/register/component/props.mjs.map +1 -0
  194. package/dist/dev/runtime/register/component/registerDefinition.mjs +290 -0
  195. package/dist/dev/runtime/register/component/registerDefinition.mjs.map +1 -0
  196. package/dist/dev/runtime/register/component.mjs +128 -0
  197. package/dist/dev/runtime/register/component.mjs.map +1 -0
  198. package/dist/dev/runtime/register/inline.mjs +145 -0
  199. package/dist/dev/runtime/register/inline.mjs.map +1 -0
  200. package/dist/dev/runtime/register/runtimeInstance/methodBridge.mjs +53 -0
  201. package/dist/dev/runtime/register/runtimeInstance/methodBridge.mjs.map +1 -0
  202. package/dist/dev/runtime/register/runtimeInstance/provideContext.mjs +34 -0
  203. package/dist/dev/runtime/register/runtimeInstance/provideContext.mjs.map +1 -0
  204. package/dist/dev/runtime/register/runtimeInstance/setupContext.mjs +230 -0
  205. package/dist/dev/runtime/register/runtimeInstance/setupContext.mjs.map +1 -0
  206. package/dist/dev/runtime/register/runtimeInstance/setupPhase.mjs +164 -0
  207. package/dist/dev/runtime/register/runtimeInstance/setupPhase.mjs.map +1 -0
  208. package/dist/dev/runtime/register/runtimeInstance/utils.mjs +122 -0
  209. package/dist/dev/runtime/register/runtimeInstance/utils.mjs.map +1 -0
  210. package/dist/dev/runtime/register/runtimeInstance.mjs +438 -0
  211. package/dist/dev/runtime/register/runtimeInstance.mjs.map +1 -0
  212. package/dist/dev/runtime/register/setDataFrequencyWarning.mjs +95 -0
  213. package/dist/dev/runtime/register/setDataFrequencyWarning.mjs.map +1 -0
  214. package/dist/dev/runtime/register/setup.mjs +22 -0
  215. package/dist/dev/runtime/register/setup.mjs.map +1 -0
  216. package/dist/dev/runtime/register/snapshot.mjs +17 -0
  217. package/dist/dev/runtime/register/snapshot.mjs.map +1 -0
  218. package/dist/dev/runtime/register/watch.mjs +57 -0
  219. package/dist/dev/runtime/register/watch.mjs.map +1 -0
  220. package/dist/dev/runtime/scopedSlots.mjs +115 -0
  221. package/dist/dev/runtime/scopedSlots.mjs.map +1 -0
  222. package/dist/dev/runtime/selectorQuery.mjs +49 -0
  223. package/dist/dev/runtime/selectorQuery.mjs.map +1 -0
  224. package/dist/dev/runtime/setupTracking.mjs +59 -0
  225. package/dist/dev/runtime/setupTracking.mjs.map +1 -0
  226. package/dist/dev/{template-n_iVr0ey.mjs → runtime/template.mjs} +7 -4
  227. package/dist/dev/runtime/template.mjs.map +1 -0
  228. package/dist/dev/runtime/templateRefs/helpers.mjs +254 -0
  229. package/dist/dev/runtime/templateRefs/helpers.mjs.map +1 -0
  230. package/dist/dev/runtime/templateRefs.mjs +162 -0
  231. package/dist/dev/runtime/templateRefs.mjs.map +1 -0
  232. package/dist/dev/runtime/uniAppHost.mjs +119 -0
  233. package/dist/dev/runtime/uniAppHost.mjs.map +1 -0
  234. package/dist/dev/runtime/updatePerformance.mjs +41 -0
  235. package/dist/dev/runtime/updatePerformance.mjs.map +1 -0
  236. package/dist/dev/runtime/use.mjs +25 -0
  237. package/dist/dev/runtime/use.mjs.map +1 -0
  238. package/dist/dev/runtime/vueCompat/context.mjs +25 -0
  239. package/dist/dev/runtime/vueCompat/context.mjs.map +1 -0
  240. package/dist/dev/runtime/vueCompat/model.mjs +118 -0
  241. package/dist/dev/runtime/vueCompat/model.mjs.map +1 -0
  242. package/dist/dev/runtime/vueCompat/router.mjs +124 -0
  243. package/dist/dev/runtime/vueCompat/router.mjs.map +1 -0
  244. package/dist/dev/runtime/vueCompat/templateRef.mjs +37 -0
  245. package/dist/dev/runtime/vueCompat/templateRef.mjs.map +1 -0
  246. package/dist/dev/scheduler.mjs +75 -0
  247. package/dist/dev/scheduler.mjs.map +1 -0
  248. package/dist/dev/store/actions.mjs +40 -0
  249. package/dist/dev/store/actions.mjs.map +1 -0
  250. package/dist/dev/store/base.mjs +56 -0
  251. package/dist/dev/store/base.mjs.map +1 -0
  252. package/dist/dev/store/define/optionsStyle.mjs +125 -0
  253. package/dist/dev/store/define/optionsStyle.mjs.map +1 -0
  254. package/dist/dev/store/define/setupStyle.mjs +145 -0
  255. package/dist/dev/store/define/setupStyle.mjs.map +1 -0
  256. package/dist/dev/store/define/shared.mjs +38 -0
  257. package/dist/dev/store/define/shared.mjs.map +1 -0
  258. package/dist/dev/store/define.mjs +23 -0
  259. package/dist/dev/store/define.mjs.map +1 -0
  260. package/dist/dev/store/manager.mjs +21 -0
  261. package/dist/dev/store/manager.mjs.map +1 -0
  262. package/dist/dev/store/storeToRefs.mjs +29 -0
  263. package/dist/dev/store/storeToRefs.mjs.map +1 -0
  264. package/dist/dev/store/utils.mjs +49 -0
  265. package/dist/dev/store/utils.mjs.map +1 -0
  266. package/dist/dev/store.mjs +3 -1
  267. package/dist/dev/utils.mjs +16 -0
  268. package/dist/dev/utils.mjs.map +1 -0
  269. package/dist/dev/version.mjs +8 -0
  270. package/dist/dev/version.mjs.map +1 -0
  271. package/dist/dev/vue-demi.mjs +49 -11
  272. package/dist/dev/vue-demi.mjs.map +1 -1
  273. package/dist/index.d.mts +71 -7
  274. package/dist/index.mjs +1 -1
  275. package/dist/internal-reactivity.d.mts +16 -2
  276. package/dist/internal-reactivity.mjs +1 -1
  277. package/dist/internal-runtime.d.mts +35 -2
  278. package/dist/internal-runtime.mjs +1 -1
  279. package/dist/internal-template.d.mts +1 -1
  280. package/dist/internal-template.mjs +1 -1
  281. package/dist/jsx-runtime.d.mts +1 -1
  282. package/dist/macros/shared.d.mts +81 -0
  283. package/dist/macros.d.mts +70 -0
  284. package/dist/package.mjs +1 -0
  285. package/dist/reactivity/computed.d.mts +21 -0
  286. package/dist/reactivity/computed.mjs +1 -0
  287. package/dist/reactivity/core.d.mts +34 -0
  288. package/dist/reactivity/core.mjs +1 -0
  289. package/dist/reactivity/index.d.mts +15 -0
  290. package/dist/reactivity/reactive/mutation.d.mts +21 -0
  291. package/dist/reactivity/reactive/mutation.mjs +1 -0
  292. package/dist/reactivity/reactive/patch.d.mts +18 -0
  293. package/dist/reactivity/reactive/patch.mjs +1 -0
  294. package/dist/reactivity/reactive/patchState.mjs +1 -0
  295. package/dist/reactivity/reactive/shallow.d.mts +22 -0
  296. package/dist/reactivity/reactive/shallow.mjs +1 -0
  297. package/dist/reactivity/reactive/shared.d.mts +4 -0
  298. package/dist/reactivity/reactive/shared.mjs +1 -0
  299. package/dist/reactivity/reactive/state.mjs +1 -0
  300. package/dist/reactivity/reactive.d.mts +41 -0
  301. package/dist/reactivity/reactive.mjs +1 -0
  302. package/dist/reactivity/readonly.d.mts +27 -0
  303. package/dist/reactivity/readonly.mjs +1 -0
  304. package/dist/reactivity/ref.d.mts +27 -0
  305. package/dist/reactivity/ref.mjs +1 -0
  306. package/dist/reactivity/shallowRef.d.mts +19 -0
  307. package/dist/reactivity/shallowRef.mjs +1 -0
  308. package/dist/reactivity/toRefs.d.mts +43 -0
  309. package/dist/reactivity/toRefs.mjs +1 -0
  310. package/dist/reactivity/traverse.d.mts +8 -0
  311. package/dist/reactivity/traverse.mjs +1 -0
  312. package/dist/reactivity/watch/helpers.mjs +1 -0
  313. package/dist/reactivity/watch/types.d.mts +43 -0
  314. package/dist/reactivity/watch/types.mjs +1 -0
  315. package/dist/reactivity/watch.d.mts +21 -0
  316. package/dist/reactivity/watch.mjs +1 -0
  317. package/dist/router/backNavigation.mjs +1 -0
  318. package/dist/router/createRouter.d.mts +8 -0
  319. package/dist/router/createRouter.mjs +1 -0
  320. package/dist/router/instance.mjs +1 -0
  321. package/dist/router/navigationApi.mjs +1 -0
  322. package/dist/router/navigationCore.d.mts +6 -0
  323. package/dist/router/navigationCore.mjs +1 -0
  324. package/dist/router/navigationResult.mjs +1 -0
  325. package/dist/router/navigationTarget.mjs +1 -0
  326. package/dist/router/navigationTargetHelpers.mjs +1 -0
  327. package/dist/router/resolve.d.mts +6 -0
  328. package/dist/router/resolve.mjs +1 -0
  329. package/dist/router/routeRegistry.mjs +1 -0
  330. package/dist/router/routeSync.d.mts +1 -0
  331. package/dist/router/routeSync.mjs +1 -0
  332. package/dist/router/types.d.mts +163 -0
  333. package/dist/router/types.mjs +1 -0
  334. package/dist/router/useRoute.d.mts +19 -0
  335. package/dist/router/useRoute.mjs +1 -0
  336. package/dist/router/useRouter.d.mts +8 -0
  337. package/dist/router/useRouter.mjs +1 -0
  338. package/dist/router.d.mts +9 -204
  339. package/dist/router.mjs +1 -1
  340. package/dist/routerInternal/location.mjs +1 -0
  341. package/dist/routerInternal/matching.mjs +1 -0
  342. package/dist/routerInternal/params.mjs +1 -0
  343. package/dist/routerInternal/path.mjs +1 -0
  344. package/dist/routerInternal/query.d.mts +7 -0
  345. package/dist/routerInternal/query.mjs +1 -0
  346. package/dist/routerInternal/records.mjs +1 -0
  347. package/dist/routerInternal/recordsWarnings.mjs +1 -0
  348. package/dist/routerInternal/snapshots.mjs +1 -0
  349. package/dist/routerInternal/types.d.mts +9 -0
  350. package/dist/runtime/app/computed.mjs +1 -0
  351. package/dist/runtime/app/context.mjs +1 -0
  352. package/dist/runtime/app/diagnostics.mjs +1 -0
  353. package/dist/runtime/app/mount.mjs +1 -0
  354. package/dist/runtime/app/pending.d.mts +10 -0
  355. package/dist/runtime/app/pending.mjs +1 -0
  356. package/dist/runtime/app/setData/patchScheduler.mjs +1 -0
  357. package/dist/runtime/app/setData/payload.mjs +1 -0
  358. package/dist/runtime/app/setData/scheduler.mjs +1 -0
  359. package/dist/runtime/app/setData/snapshot.mjs +1 -0
  360. package/dist/runtime/app/setDataOptions.mjs +1 -0
  361. package/dist/runtime/app.d.mts +8 -0
  362. package/dist/runtime/app.mjs +1 -0
  363. package/dist/runtime/bindModel.mjs +1 -0
  364. package/dist/runtime/defaults.d.mts +11 -0
  365. package/dist/runtime/defaults.mjs +1 -0
  366. package/dist/runtime/define/initialComputed.mjs +1 -0
  367. package/dist/runtime/define/options.mjs +1 -0
  368. package/dist/runtime/define/optionsApi.mjs +1 -0
  369. package/dist/runtime/define/props.mjs +1 -0
  370. package/dist/runtime/define/scopedSlotOptions.mjs +1 -0
  371. package/dist/runtime/define/setupResult.mjs +1 -0
  372. package/dist/runtime/define.d.mts +105 -0
  373. package/dist/runtime/define.mjs +1 -0
  374. package/dist/runtime/diff.mjs +1 -0
  375. package/dist/runtime/disposables.d.mts +31 -0
  376. package/dist/runtime/disposables.mjs +1 -0
  377. package/dist/runtime/elementIntersectionObserver.d.mts +26 -0
  378. package/dist/runtime/elementIntersectionObserver.mjs +1 -0
  379. package/dist/runtime/emit.mjs +1 -0
  380. package/dist/runtime/hooks/base.d.mts +27 -0
  381. package/dist/runtime/hooks/base.mjs +1 -0
  382. package/dist/runtime/hooks/register.d.mts +30 -0
  383. package/dist/runtime/hooks/register.mjs +1 -0
  384. package/dist/runtime/hooks/vue.d.mts +53 -0
  385. package/dist/runtime/hooks/vue.mjs +1 -0
  386. package/dist/runtime/hooks.d.mts +4 -0
  387. package/dist/runtime/index.d.mts +47 -0
  388. package/dist/runtime/internal.mjs +1 -0
  389. package/dist/runtime/intersectionObserver.d.mts +14 -0
  390. package/dist/runtime/intersectionObserver.mjs +1 -0
  391. package/dist/runtime/layoutBridge.d.mts +59 -0
  392. package/dist/runtime/layoutBridge.mjs +1 -0
  393. package/dist/runtime/layoutComponentMatcher.mjs +1 -0
  394. package/dist/runtime/nativeBridge.mjs +1 -0
  395. package/dist/runtime/noSetData.d.mts +5 -0
  396. package/dist/runtime/noSetData.mjs +1 -0
  397. package/dist/runtime/pageEnvironment.d.mts +50 -0
  398. package/dist/runtime/pageEnvironment.mjs +1 -0
  399. package/dist/runtime/pageLayout.d.mts +26 -0
  400. package/dist/runtime/pageLayout.mjs +1 -0
  401. package/dist/runtime/pageScroll.d.mts +29 -0
  402. package/dist/runtime/pageScroll.mjs +1 -0
  403. package/dist/runtime/platform.mjs +1 -0
  404. package/dist/runtime/provide.d.mts +59 -0
  405. package/dist/runtime/provide.mjs +1 -0
  406. package/dist/runtime/provideContext.mjs +1 -0
  407. package/dist/runtime/provideStore.d.mts +7 -0
  408. package/dist/runtime/provideStore.mjs +1 -0
  409. package/dist/runtime/pullDownRefresh.d.mts +12 -0
  410. package/dist/runtime/pullDownRefresh.mjs +1 -0
  411. package/dist/runtime/register/app.d.mts +14 -0
  412. package/dist/runtime/register/app.mjs +1 -0
  413. package/dist/runtime/register/component/features.mjs +1 -0
  414. package/dist/runtime/register/component/lifecycle/optionalHooks.mjs +1 -0
  415. package/dist/runtime/register/component/lifecycle/platform.mjs +1 -0
  416. package/dist/runtime/register/component/lifecycle.mjs +1 -0
  417. package/dist/runtime/register/component/methods.mjs +1 -0
  418. package/dist/runtime/register/component/options.mjs +1 -0
  419. package/dist/runtime/register/component/props.mjs +1 -0
  420. package/dist/runtime/register/component/registerDefinition.mjs +1 -0
  421. package/dist/runtime/register/component.d.mts +15 -0
  422. package/dist/runtime/register/component.mjs +1 -0
  423. package/dist/runtime/register/inline.d.mts +15 -0
  424. package/dist/runtime/register/inline.mjs +1 -0
  425. package/dist/runtime/register/runtimeInstance/methodBridge.mjs +1 -0
  426. package/dist/runtime/register/runtimeInstance/provideContext.mjs +1 -0
  427. package/dist/runtime/register/runtimeInstance/setupContext.mjs +1 -0
  428. package/dist/runtime/register/runtimeInstance/setupPhase.mjs +1 -0
  429. package/dist/runtime/register/runtimeInstance/utils.mjs +1 -0
  430. package/dist/runtime/register/runtimeInstance.d.mts +26 -0
  431. package/dist/runtime/register/runtimeInstance.mjs +1 -0
  432. package/dist/runtime/register/setDataFrequencyWarning.mjs +1 -0
  433. package/dist/runtime/register/setup.d.mts +11 -0
  434. package/dist/runtime/register/setup.mjs +1 -0
  435. package/dist/runtime/register/snapshot.mjs +1 -0
  436. package/dist/runtime/register/watch.d.mts +12 -0
  437. package/dist/runtime/register/watch.mjs +1 -0
  438. package/dist/runtime/register.d.mts +5 -0
  439. package/dist/runtime/scopedSlots.mjs +1 -0
  440. package/dist/runtime/selectorQuery.d.mts +54 -0
  441. package/dist/runtime/selectorQuery.mjs +1 -0
  442. package/dist/runtime/setupTracking.mjs +1 -0
  443. package/dist/{template-DE8e5dj_.d.mts → runtime/template.d.mts} +1 -1
  444. package/dist/runtime/template.mjs +1 -0
  445. package/dist/runtime/templateRefTypes.d.mts +7 -0
  446. package/dist/runtime/templateRefs/helpers.mjs +1 -0
  447. package/dist/runtime/templateRefs.d.mts +11 -0
  448. package/dist/runtime/templateRefs.mjs +1 -0
  449. package/dist/runtime/types/core.d.mts +35 -0
  450. package/dist/runtime/types/miniprogram.d.mts +80 -0
  451. package/dist/runtime/types/miniprogramHost.d.mts +44 -0
  452. package/dist/runtime/types/miniprogramHostSources.d.mts +112 -0
  453. package/dist/runtime/types/options.d.mts +136 -0
  454. package/dist/runtime/types/props/propTypes.d.mts +79 -0
  455. package/dist/runtime/types/props/router.d.mts +51 -0
  456. package/dist/runtime/types/props/setup.d.mts +96 -0
  457. package/dist/runtime/types/props.d.mts +4 -0
  458. package/dist/runtime/types/runtime.d.mts +59 -0
  459. package/dist/runtime/types/setData.d.mts +220 -0
  460. package/dist/runtime/types.d.mts +28 -0
  461. package/dist/runtime/uniAppHost.d.mts +8 -0
  462. package/dist/runtime/uniAppHost.mjs +1 -0
  463. package/dist/runtime/updatePerformance.d.mts +13 -0
  464. package/dist/runtime/updatePerformance.mjs +1 -0
  465. package/dist/runtime/use.d.mts +13 -0
  466. package/dist/runtime/use.mjs +1 -0
  467. package/dist/runtime/vueCompat/context.d.mts +8 -0
  468. package/dist/runtime/vueCompat/context.mjs +1 -0
  469. package/dist/runtime/vueCompat/model.d.mts +30 -0
  470. package/dist/runtime/vueCompat/model.mjs +1 -0
  471. package/dist/runtime/vueCompat/router.d.mts +28 -0
  472. package/dist/runtime/vueCompat/router.mjs +1 -0
  473. package/dist/runtime/vueCompat/templateRef.d.mts +9 -0
  474. package/dist/runtime/vueCompat/templateRef.mjs +1 -0
  475. package/dist/runtime/vueCompat.d.mts +5 -0
  476. package/dist/scheduler.d.mts +4 -0
  477. package/dist/scheduler.mjs +1 -0
  478. package/dist/store/actions.mjs +1 -0
  479. package/dist/store/base.mjs +1 -0
  480. package/dist/store/define/optionsStyle.mjs +1 -0
  481. package/dist/store/define/setupStyle.mjs +1 -0
  482. package/dist/store/define/shared.mjs +1 -0
  483. package/dist/store/define.d.mts +26 -0
  484. package/dist/store/define.mjs +1 -0
  485. package/dist/store/manager.d.mts +8 -0
  486. package/dist/store/manager.mjs +1 -0
  487. package/dist/store/storeToRefs.d.mts +13 -0
  488. package/dist/store/storeToRefs.mjs +1 -0
  489. package/dist/store/types.d.mts +70 -0
  490. package/dist/store/utils.mjs +1 -0
  491. package/dist/store.d.mts +4 -1
  492. package/dist/store.mjs +1 -1
  493. package/dist/utils.mjs +1 -0
  494. package/dist/version.d.mts +4 -0
  495. package/dist/version.mjs +1 -0
  496. package/dist/vue-augment.d.mts +6 -0
  497. package/dist/vue-demi.d.mts +67 -7
  498. package/dist/vue-demi.mjs +1 -1
  499. package/dist/vue-types.d.mts +18 -0
  500. package/dist/weappIntrinsicElements/base.d.mts +22 -0
  501. package/dist/weappIntrinsicElements/elements/ad-custom.d.mts +13 -0
  502. package/dist/weappIntrinsicElements/elements/ad.d.mts +16 -0
  503. package/dist/weappIntrinsicElements/elements/audio.d.mts +20 -0
  504. package/dist/weappIntrinsicElements/elements/block.d.mts +8 -0
  505. package/dist/weappIntrinsicElements/elements/button.d.mts +40 -0
  506. package/dist/weappIntrinsicElements/elements/camera.d.mts +18 -0
  507. package/dist/weappIntrinsicElements/elements/canvas.d.mts +18 -0
  508. package/dist/weappIntrinsicElements/elements/checkbox-group.d.mts +13 -0
  509. package/dist/weappIntrinsicElements/elements/checkbox.d.mts +13 -0
  510. package/dist/weappIntrinsicElements/elements/cover-image.d.mts +10 -0
  511. package/dist/weappIntrinsicElements/elements/cover-view.d.mts +10 -0
  512. package/dist/weappIntrinsicElements/elements/editor.d.mts +22 -0
  513. package/dist/weappIntrinsicElements/elements/form.d.mts +16 -0
  514. package/dist/weappIntrinsicElements/elements/functional-page-navigator.d.mts +15 -0
  515. package/dist/weappIntrinsicElements/elements/icon.d.mts +12 -0
  516. package/dist/weappIntrinsicElements/elements/image.d.mts +18 -0
  517. package/dist/weappIntrinsicElements/elements/import.d.mts +10 -0
  518. package/dist/weappIntrinsicElements/elements/include.d.mts +10 -0
  519. package/dist/weappIntrinsicElements/elements/input.d.mts +47 -0
  520. package/dist/weappIntrinsicElements/elements/keyboard-accessory.d.mts +8 -0
  521. package/dist/weappIntrinsicElements/elements/label.d.mts +10 -0
  522. package/dist/weappIntrinsicElements/elements/live-player.d.mts +35 -0
  523. package/dist/weappIntrinsicElements/elements/live-pusher.d.mts +57 -0
  524. package/dist/weappIntrinsicElements/elements/map.d.mts +105 -0
  525. package/dist/weappIntrinsicElements/elements/match-media.d.mts +16 -0
  526. package/dist/weappIntrinsicElements/elements/movable-area.d.mts +26 -0
  527. package/dist/weappIntrinsicElements/elements/movable-view.d.mts +26 -0
  528. package/dist/weappIntrinsicElements/elements/navigation-bar.d.mts +15 -0
  529. package/dist/weappIntrinsicElements/elements/navigator.d.mts +25 -0
  530. package/dist/weappIntrinsicElements/elements/official-account.d.mts +13 -0
  531. package/dist/weappIntrinsicElements/elements/open-data.d.mts +15 -0
  532. package/dist/weappIntrinsicElements/elements/page-container.d.mts +25 -0
  533. package/dist/weappIntrinsicElements/elements/page-meta.d.mts +23 -0
  534. package/dist/weappIntrinsicElements/elements/picker-view-column.d.mts +18 -0
  535. package/dist/weappIntrinsicElements/elements/picker-view.d.mts +18 -0
  536. package/dist/weappIntrinsicElements/elements/picker.d.mts +23 -0
  537. package/dist/weappIntrinsicElements/elements/progress.d.mts +21 -0
  538. package/dist/weappIntrinsicElements/elements/radio-group.d.mts +13 -0
  539. package/dist/weappIntrinsicElements/elements/radio.d.mts +13 -0
  540. package/dist/weappIntrinsicElements/elements/rich-text.d.mts +17 -0
  541. package/dist/weappIntrinsicElements/elements/scroll-view.d.mts +68 -0
  542. package/dist/weappIntrinsicElements/elements/share-element.d.mts +18 -0
  543. package/dist/weappIntrinsicElements/elements/slider.d.mts +23 -0
  544. package/dist/weappIntrinsicElements/elements/slot.d.mts +10 -0
  545. package/dist/weappIntrinsicElements/elements/swiper-item.d.mts +42 -0
  546. package/dist/weappIntrinsicElements/elements/swiper.d.mts +42 -0
  547. package/dist/weappIntrinsicElements/elements/switch.d.mts +14 -0
  548. package/dist/weappIntrinsicElements/elements/template.d.mts +12 -0
  549. package/dist/weappIntrinsicElements/elements/text.d.mts +15 -0
  550. package/dist/weappIntrinsicElements/elements/textarea.d.mts +40 -0
  551. package/dist/weappIntrinsicElements/elements/video.d.mts +71 -0
  552. package/dist/weappIntrinsicElements/elements/view.d.mts +13 -0
  553. package/dist/weappIntrinsicElements/elements/voip-room.d.mts +14 -0
  554. package/dist/weappIntrinsicElements/elements/web-view.d.mts +13 -0
  555. package/dist/weappIntrinsicElements.d.mts +153 -0
  556. package/package.json +6 -6
  557. package/dist/base-BxKbbKVO.mjs +0 -1
  558. package/dist/computed-Xoi9XEUx.mjs +0 -1
  559. package/dist/dev/base-CYkvI7w8.mjs.map +0 -1
  560. package/dist/dev/computed-BxRsUJgi.mjs.map +0 -1
  561. package/dist/dev/ref-DRZC3Kc5.mjs +0 -695
  562. package/dist/dev/ref-DRZC3Kc5.mjs.map +0 -1
  563. package/dist/dev/router-DjGhTM7A.mjs +0 -739
  564. package/dist/dev/router-DjGhTM7A.mjs.map +0 -1
  565. package/dist/dev/router.mjs.map +0 -1
  566. package/dist/dev/store-HNsiQJ4d.mjs +0 -479
  567. package/dist/dev/store-HNsiQJ4d.mjs.map +0 -1
  568. package/dist/dev/template-n_iVr0ey.mjs.map +0 -1
  569. package/dist/dev/templateRef-Dyo45y5v.mjs +0 -6436
  570. package/dist/dev/templateRef-Dyo45y5v.mjs.map +0 -1
  571. package/dist/dev/toRefs-D06VmFK2.mjs.map +0 -1
  572. package/dist/dev/watch-jrgL5ald.mjs +0 -445
  573. package/dist/dev/watch-jrgL5ald.mjs.map +0 -1
  574. package/dist/index-BiHILcmb.d.mts +0 -1215
  575. package/dist/index-CCET_bCY.d.mts +0 -111
  576. package/dist/ref-D37CknuD.mjs +0 -1
  577. package/dist/router-DJOmKqXb.mjs +0 -1
  578. package/dist/store-eHrHBQiv.mjs +0 -1
  579. package/dist/template-CNzlwH-E.mjs +0 -1
  580. package/dist/templateRef-L_qeTIeS.mjs +0 -1
  581. package/dist/toRefs-CoytPyo0.mjs +0 -1
  582. package/dist/traverse-B4Ez44Gd.d.mts +0 -108
  583. package/dist/vue-types-B3N60cGV.d.mts +0 -757
  584. package/dist/watch-Bbd-gmEg.mjs +0 -1
  585. package/dist/weappIntrinsicElements-BgDtC53_.d.mts +0 -1257
@@ -0,0 +1,97 @@
1
+ import _defineProperty from "../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm/defineProperty.mjs";
2
+ import { trackEffects, triggerEffects } from "./core.mjs";
3
+ import { convertToReactive, markRaw } from "./reactive.mjs";
4
+
5
+ //#region src/reactivity/ref.ts
6
+ const RefFlag = "__v_isRef";
7
+ function markAsRef(target) {
8
+ try {
9
+ Object.defineProperty(target, RefFlag, {
10
+ value: true,
11
+ configurable: true
12
+ });
13
+ } catch (_unused) {
14
+ target[RefFlag] = true;
15
+ }
16
+ return target;
17
+ }
18
+ function isRef(value) {
19
+ return Boolean(value && typeof value === "object" && value["__v_isRef"] === true);
20
+ }
21
+ var RefImpl = class {
22
+ constructor(value) {
23
+ _defineProperty(this, "_value", void 0);
24
+ _defineProperty(this, "_rawValue", void 0);
25
+ _defineProperty(this, "dep", void 0);
26
+ markAsRef(this);
27
+ this._rawValue = value;
28
+ this._value = convertToReactive(value);
29
+ }
30
+ get value() {
31
+ if (!this.dep) this.dep = /* @__PURE__ */ new Set();
32
+ trackEffects(this.dep);
33
+ return this._value;
34
+ }
35
+ set value(newValue) {
36
+ if (!Object.is(newValue, this._rawValue)) {
37
+ this._rawValue = newValue;
38
+ this._value = convertToReactive(newValue);
39
+ if (this.dep) triggerEffects(this.dep);
40
+ }
41
+ }
42
+ };
43
+ function ref(value) {
44
+ if (isRef(value)) return value;
45
+ return markRaw(new RefImpl(value));
46
+ }
47
+ function unref(value) {
48
+ return isRef(value) ? value.value : value;
49
+ }
50
+ function toValue(source) {
51
+ return typeof source === "function" ? source() : unref(source);
52
+ }
53
+ var CustomRefImpl = class {
54
+ constructor(factory, defaultValue) {
55
+ _defineProperty(this, "_getValue", void 0);
56
+ _defineProperty(this, "_setValue", void 0);
57
+ _defineProperty(this, "dep", void 0);
58
+ markAsRef(this);
59
+ const fallbackValue = defaultValue;
60
+ const track = () => {
61
+ if (!this.dep) this.dep = /* @__PURE__ */ new Set();
62
+ trackEffects(this.dep);
63
+ };
64
+ const trigger = () => {
65
+ if (this.dep) triggerEffects(this.dep);
66
+ };
67
+ const withFallback = (value) => value === void 0 && fallbackValue !== void 0 ? fallbackValue : value;
68
+ if (typeof factory === "function") {
69
+ const handlers = factory(track, trigger);
70
+ this._getValue = () => withFallback(handlers.get());
71
+ this._setValue = (value) => handlers.set(value);
72
+ return;
73
+ }
74
+ const handlers = factory;
75
+ this._getValue = () => {
76
+ track();
77
+ return withFallback(handlers.get());
78
+ };
79
+ this._setValue = (value) => {
80
+ handlers.set(value);
81
+ trigger();
82
+ };
83
+ }
84
+ get value() {
85
+ return this._getValue();
86
+ }
87
+ set value(newValue) {
88
+ this._setValue(newValue);
89
+ }
90
+ };
91
+ function customRef(factory, defaultValue) {
92
+ return markRaw(new CustomRefImpl(factory, defaultValue));
93
+ }
94
+
95
+ //#endregion
96
+ export { RefFlag, customRef, isRef, markAsRef, ref, toValue, unref };
97
+ //# sourceMappingURL=ref.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ref.mjs","names":[],"sources":["../../../src/reactivity/ref.ts"],"sourcesContent":["import type { Ref as VueRef, ShallowRef as VueShallowRef } from '../vue-types'\nimport type { ComputedRef, WritableComputedRef } from './computed'\nimport type { Dep } from './core'\nimport { trackEffects, triggerEffects } from './core'\nimport { convertToReactive, markRaw } from './reactive'\n\n// 类型对齐 @vue/reactivity.Ref:\n// - 用于 Volar 模板自动解包(UnwrapRef 依赖 RefSymbol 品牌标记)。\n// - 运行时仍使用 wevu 自己的 ref 实现,不依赖 Vue。\nexport type Ref<T = any, S = T> = VueRef<T, S>\nexport type ShallowRef<T = any> = VueShallowRef<T>\nexport type MaybeRef<T = any> = T | Ref<T> | ShallowRef<T> | WritableComputedRef<T>\nexport type MaybeRefOrGetter<T = any> = MaybeRef<T> | ComputedRef<T> | (() => T)\n\nexport const RefFlag = '__v_isRef' as const\n\nexport function markAsRef<T extends object>(target: T): T {\n try {\n Object.defineProperty(target, RefFlag, {\n value: true,\n configurable: true,\n })\n }\n catch {\n ;(target as any)[RefFlag] = true\n }\n return target\n}\n\nexport function isRef(value: unknown): value is Ref<any> {\n return Boolean(value && typeof value === 'object' && (value as any)[RefFlag] === true)\n}\n\nclass RefImpl<T> {\n private _value: T\n private _rawValue: T\n public dep: Dep | undefined\n constructor(value: T) {\n markAsRef(this)\n this._rawValue = value\n this._value = convertToReactive(value)\n }\n\n get value(): T {\n if (!this.dep) {\n this.dep = new Set()\n }\n trackEffects(this.dep)\n return this._value\n }\n\n set value(newValue: T) {\n if (!Object.is(newValue, this._rawValue)) {\n this._rawValue = newValue\n this._value = convertToReactive(newValue)\n if (this.dep) {\n triggerEffects(this.dep)\n }\n }\n }\n}\n\nexport function ref<T = any>(): Ref<T | undefined>\nexport function ref<T>(value: T): Ref<T>\nexport function ref<T>(value?: T): Ref<T | undefined> {\n if (isRef(value)) {\n return value\n }\n return markRaw(new RefImpl(value as T | undefined)) as any\n}\n\nexport function unref<T>(value: MaybeRef<T> | ComputedRef<T>): T {\n return isRef(value) ? value.value : value\n}\n\nexport function toValue<T>(source: MaybeRefOrGetter<T>): T {\n return typeof source === 'function' ? (source as () => T)() : unref(source)\n}\n\n/**\n * 自定义 ref 工厂:用于创建可显式控制 track/trigger 的自定义 ref\n */\nexport type CustomRefFactory<T> = (\n track: () => void,\n trigger: () => void,\n) => {\n get: () => T\n set: (value: T) => void\n}\n\nexport interface CustomRefOptions<T> {\n get: () => T\n set: (value: T) => void\n}\n\nexport type CustomRefSource<T> = CustomRefFactory<T> | CustomRefOptions<T>\n\nclass CustomRefImpl<T> {\n private _getValue: () => T\n private _setValue: (value: T) => void\n public dep: Dep | undefined\n\n constructor(factory: CustomRefSource<T>, defaultValue?: T) {\n markAsRef(this)\n const fallbackValue = defaultValue\n const track = () => {\n if (!this.dep) {\n this.dep = new Set()\n }\n trackEffects(this.dep)\n }\n const trigger = () => {\n if (this.dep) {\n triggerEffects(this.dep)\n }\n }\n\n const withFallback = (value: T) => (value === undefined && fallbackValue !== undefined ? fallbackValue as T : value)\n\n if (typeof factory === 'function') {\n const handlers = factory(track, trigger)\n this._getValue = () => withFallback(handlers.get())\n this._setValue = value => handlers.set(value)\n return\n }\n\n const handlers = factory\n this._getValue = () => {\n track()\n return withFallback(handlers.get())\n }\n this._setValue = (value: T) => {\n handlers.set(value)\n trigger()\n }\n }\n\n get value(): T {\n return this._getValue()\n }\n\n set value(newValue: T) {\n this._setValue(newValue)\n }\n}\n\nexport function customRef<T>(factory: CustomRefSource<T>, defaultValue?: T): Ref<T> {\n return markRaw(new CustomRefImpl(factory, defaultValue)) as any\n}\n"],"mappings":";;;;;AAcA,MAAa,UAAU;AAEvB,SAAgB,UAA4B,QAAc;CACxD,IAAI;EACF,OAAO,eAAe,QAAQ,SAAS;GACrC,OAAO;GACP,cAAc;EAChB,CAAC;CACH,kBACM;EACH,AAAC,OAAe,WAAW;CAC9B;CACA,OAAO;AACT;AAEA,SAAgB,MAAM,OAAmC;CACvD,OAAO,QAAQ,SAAS,OAAO,UAAU,YAAa,uBAA2B,IAAI;AACvF;AAEA,IAAM,UAAN,MAAiB;CAIf,YAAY,OAAU;wBAHd;wBACA;wBACD;EAEL,UAAU,IAAI;EACd,KAAK,YAAY;EACjB,KAAK,SAAS,kBAAkB,KAAK;CACvC;CAEA,IAAI,QAAW;EACb,IAAI,CAAC,KAAK,KACR,KAAK,sBAAM,IAAI,IAAI;EAErB,aAAa,KAAK,GAAG;EACrB,OAAO,KAAK;CACd;CAEA,IAAI,MAAM,UAAa;EACrB,IAAI,CAAC,OAAO,GAAG,UAAU,KAAK,SAAS,GAAG;GACxC,KAAK,YAAY;GACjB,KAAK,SAAS,kBAAkB,QAAQ;GACxC,IAAI,KAAK,KACP,eAAe,KAAK,GAAG;EAE3B;CACF;AACF;AAIA,SAAgB,IAAO,OAA+B;CACpD,IAAI,MAAM,KAAK,GACb,OAAO;CAET,OAAO,QAAQ,IAAI,QAAQ,KAAsB,CAAC;AACpD;AAEA,SAAgB,MAAS,OAAwC;CAC/D,OAAO,MAAM,KAAK,IAAI,MAAM,QAAQ;AACtC;AAEA,SAAgB,QAAW,QAAgC;CACzD,OAAO,OAAO,WAAW,aAAc,OAAmB,IAAI,MAAM,MAAM;AAC5E;AAoBA,IAAM,gBAAN,MAAuB;CAKrB,YAAY,SAA6B,cAAkB;wBAJnD;wBACA;wBACD;EAGL,UAAU,IAAI;EACd,MAAM,gBAAgB;EACtB,MAAM,cAAc;GAClB,IAAI,CAAC,KAAK,KACR,KAAK,sBAAM,IAAI,IAAI;GAErB,aAAa,KAAK,GAAG;EACvB;EACA,MAAM,gBAAgB;GACpB,IAAI,KAAK,KACP,eAAe,KAAK,GAAG;EAE3B;EAEA,MAAM,gBAAgB,UAAc,UAAU,UAAa,kBAAkB,SAAY,gBAAqB;EAE9G,IAAI,OAAO,YAAY,YAAY;GACjC,MAAM,WAAW,QAAQ,OAAO,OAAO;GACvC,KAAK,kBAAkB,aAAa,SAAS,IAAI,CAAC;GAClD,KAAK,aAAY,UAAS,SAAS,IAAI,KAAK;GAC5C;EACF;EAEA,MAAM,WAAW;EACjB,KAAK,kBAAkB;GACrB,MAAM;GACN,OAAO,aAAa,SAAS,IAAI,CAAC;EACpC;EACA,KAAK,aAAa,UAAa;GAC7B,SAAS,IAAI,KAAK;GAClB,QAAQ;EACV;CACF;CAEA,IAAI,QAAW;EACb,OAAO,KAAK,UAAU;CACxB;CAEA,IAAI,MAAM,UAAa;EACrB,KAAK,UAAU,QAAQ;CACzB;AACF;AAEA,SAAgB,UAAa,SAA6B,cAA0B;CAClF,OAAO,QAAQ,IAAI,cAAc,SAAS,YAAY,CAAC;AACzD"}
@@ -0,0 +1,71 @@
1
+ import { triggerEffects } from "./core.mjs";
2
+ import { customRef, isRef } from "./ref.mjs";
3
+
4
+ //#region src/reactivity/shallowRef.ts
5
+ const ShallowRefFlag = "__v_isShallow";
6
+ function markAsShallowRef(target) {
7
+ try {
8
+ Object.defineProperty(target, ShallowRefFlag, {
9
+ value: true,
10
+ configurable: true
11
+ });
12
+ } catch (_unused) {
13
+ target[ShallowRefFlag] = true;
14
+ }
15
+ return target;
16
+ }
17
+ /**
18
+ * 创建一个“浅层” ref:它只在 .value 被整体替换时触发依赖,不会对内部对象做深层响应式处理。
19
+ *
20
+ * @param value 初始值
21
+ * @param defaultValue 传递给 customRef 的默认值,可用于兜底
22
+ * @returns 仅跟踪自身 .value 变更的浅层 ref
23
+ *
24
+ * @example
25
+ * ```ts
26
+ * const state = shallowRef({ count: 0 })
27
+ * state.value = { count: 1 } // 会触发依赖
28
+ * state.value.count++ // 不会触发依赖(内部属性未被深度代理)
29
+ * ```
30
+ */
31
+ function shallowRef(value, defaultValue) {
32
+ return markAsShallowRef(customRef((track, trigger) => ({
33
+ get() {
34
+ track();
35
+ return value;
36
+ },
37
+ set(newValue) {
38
+ if (Object.is(value, newValue)) return;
39
+ value = newValue;
40
+ trigger();
41
+ }
42
+ }), defaultValue));
43
+ }
44
+ /**
45
+ * 判断传入值是否为浅层 ref。
46
+ *
47
+ * @param r 待判断的值
48
+ * @returns 若为浅层 ref 则返回 true
49
+ */
50
+ function isShallowRef(r) {
51
+ return isRef(r) && r[ShallowRefFlag] === true;
52
+ }
53
+ /**
54
+ * 主动触发一次浅层 ref 的更新(无需深度比较)。
55
+ *
56
+ * @param ref 需要触发的 ref
57
+ */
58
+ function triggerRef(ref) {
59
+ if (isRef(ref)) {
60
+ const dep = ref.dep;
61
+ if (dep) {
62
+ triggerEffects(dep);
63
+ return;
64
+ }
65
+ ref.value = ref.value;
66
+ }
67
+ }
68
+
69
+ //#endregion
70
+ export { isShallowRef, shallowRef, triggerRef };
71
+ //# sourceMappingURL=shallowRef.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shallowRef.mjs","names":[],"sources":["../../../src/reactivity/shallowRef.ts"],"sourcesContent":["import type { Ref } from './ref'\nimport { triggerEffects } from './core'\nimport { customRef, isRef } from './ref'\n\nconst ShallowRefFlag = '__v_isShallow' as const\n\nfunction markAsShallowRef<T extends object>(target: T): T {\n try {\n Object.defineProperty(target, ShallowRefFlag, {\n value: true,\n configurable: true,\n })\n }\n catch {\n ;(target as any)[ShallowRefFlag] = true\n }\n return target\n}\n\nexport function shallowRef<T>(value: T): Ref<T>\nexport function shallowRef<T>(value: T, defaultValue: T): Ref<T>\n/**\n * 创建一个“浅层” ref:它只在 .value 被整体替换时触发依赖,不会对内部对象做深层响应式处理。\n *\n * @param value 初始值\n * @param defaultValue 传递给 customRef 的默认值,可用于兜底\n * @returns 仅跟踪自身 .value 变更的浅层 ref\n *\n * @example\n * ```ts\n * const state = shallowRef({ count: 0 })\n * state.value = { count: 1 } // 会触发依赖\n * state.value.count++ // 不会触发依赖(内部属性未被深度代理)\n * ```\n */\nexport function shallowRef<T>(value: T, defaultValue?: T): Ref<T> {\n return markAsShallowRef(customRef<T>(\n (track, trigger) => ({\n get() {\n track()\n return value\n },\n set(newValue: T) {\n if (Object.is(value, newValue)) {\n return\n }\n value = newValue\n trigger()\n },\n }),\n defaultValue,\n )) as Ref<T>\n}\n\n/**\n * 判断传入值是否为浅层 ref。\n *\n * @param r 待判断的值\n * @returns 若为浅层 ref 则返回 true\n */\nexport function isShallowRef(r: any): r is Ref<any> {\n return isRef(r) && (r as unknown as Record<string, unknown>)[ShallowRefFlag] === true\n}\n\n/**\n * 主动触发一次浅层 ref 的更新(无需深度比较)。\n *\n * @param ref 需要触发的 ref\n */\nexport function triggerRef<T>(ref: Ref<T>) {\n // 若未来有专用 trigger 机制可替换,此处作为兼容 API 的占位实现\n if (isRef(ref)) {\n const dep = (ref as any).dep\n if (dep) {\n triggerEffects(dep)\n return\n }\n // 通过重新赋值自身触发依赖\n const value = ref.value\n ref.value = value\n }\n}\n"],"mappings":";;;;AAIA,MAAM,iBAAiB;AAEvB,SAAS,iBAAmC,QAAc;CACxD,IAAI;EACF,OAAO,eAAe,QAAQ,gBAAgB;GAC5C,OAAO;GACP,cAAc;EAChB,CAAC;CACH,kBACM;EACH,AAAC,OAAe,kBAAkB;CACrC;CACA,OAAO;AACT;;;;;;;;;;;;;;;AAkBA,SAAgB,WAAc,OAAU,cAA0B;CAChE,OAAO,iBAAiB,WACrB,OAAO,aAAa;EACnB,MAAM;GACJ,MAAM;GACN,OAAO;EACT;EACA,IAAI,UAAa;GACf,IAAI,OAAO,GAAG,OAAO,QAAQ,GAC3B;GAEF,QAAQ;GACR,QAAQ;EACV;CACF,IACA,YACF,CAAC;AACH;;;;;;;AAQA,SAAgB,aAAa,GAAuB;CAClD,OAAO,MAAM,CAAC,KAAM,EAAyC,oBAAoB;AACnF;;;;;;AAOA,SAAgB,WAAc,KAAa;CAEzC,IAAI,MAAM,GAAG,GAAG;EACd,MAAM,MAAO,IAAY;EACzB,IAAI,KAAK;GACP,eAAe,GAAG;GAClB;EACF;EAGA,IAAI,QADU,IAAI;CAEpB;AACF"}
@@ -1,4 +1,5 @@
1
- import { l as isReactive, n as isRef, t as customRef } from "./ref-DRZC3Kc5.mjs";
1
+ import { isReactive } from "./reactive.mjs";
2
+ import { customRef, isRef } from "./ref.mjs";
2
3
 
3
4
  //#region src/reactivity/toRefs.ts
4
5
  function toRef(object, key, defaultValue) {
@@ -38,5 +39,5 @@ function toRefs(object) {
38
39
  }
39
40
 
40
41
  //#endregion
41
- export { toRefs as n, toRef as t };
42
- //# sourceMappingURL=toRefs-D06VmFK2.mjs.map
42
+ export { toRef, toRefs };
43
+ //# sourceMappingURL=toRefs.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toRefs.mjs","names":[],"sources":["../../../src/reactivity/toRefs.ts"],"sourcesContent":["import type { Ref } from './ref'\nimport { isReactive } from './reactive'\nimport { customRef, isRef } from './ref'\n\n/**\n * 为源响应式对象的单个属性创建 ref,可读可写并与原属性保持同步。\n *\n * @param object 源响应式对象\n * @param key 属性名\n * @returns 指向该属性的 ref\n *\n * @example\n * ```ts\n * const state = reactive({ foo: 1 })\n * const fooRef = toRef(state, 'foo')\n *\n * fooRef.value++\n * console.log(state.foo) // 2\n * ```\n */\nexport function toRef<T extends object, K extends keyof T>(\n object: T,\n key: K,\n): ToRef<T[K]>\nexport function toRef<T extends object, K extends keyof T>(\n object: T,\n key: K,\n defaultValue: T[K],\n): ToRef<T[K]>\nexport function toRef<T extends object, K extends keyof T>(\n object: T,\n key: K,\n defaultValue?: T[K],\n): ToRef<T[K]> {\n const value = object[key]\n\n if (isRef(value)) {\n return value as ToRef<T[K]>\n }\n\n return customRef<T[K]>((track, trigger) => ({\n get() {\n track()\n return object[key]\n },\n set(newValue) {\n ;(object as any)[key] = newValue\n trigger()\n },\n }), defaultValue) as ToRef<T[K]>\n}\n\n/**\n * 将一个响应式对象转换成“同结构的普通对象”,其中每个字段都是指向原对象对应属性的 ref。\n *\n * @param object 待转换的响应式对象\n * @returns 包含若干 ref 的普通对象\n *\n * @example\n * ```ts\n * const state = reactive({ foo: 1, bar: 2 })\n * const stateAsRefs = toRefs(state)\n *\n * stateAsRefs.foo.value++ // 2\n * state.foo // 2\n * ```\n */\nexport function toRefs<T extends object>(object: T): ToRefs<T> {\n if (!isReactive(object)) {\n // eslint-disable-next-line no-console -- 保持与 Vue 类似的非响应式输入警告\n console.warn('toRefs() 需要响应式对象,但收到的是普通对象。')\n }\n\n const result: any = Array.isArray(object) ? Array.from({ length: object.length }) : {}\n\n for (const key in object) {\n result[key] = toRef(object, key)\n }\n\n return result\n}\n\n/**\n * toRefs 返回值的类型辅助\n */\ntype ToRef<T> = T extends Ref<any> ? T : Ref<T>\n\nexport type ToRefs<T extends object> = {\n [K in keyof T]: ToRef<T[K]>\n}\n"],"mappings":";;;;AA6BA,SAAgB,MACd,QACA,KACA,cACa;CACb,MAAM,QAAQ,OAAO;CAErB,IAAI,MAAM,KAAK,GACb,OAAO;CAGT,OAAO,WAAiB,OAAO,aAAa;EAC1C,MAAM;GACJ,MAAM;GACN,OAAO,OAAO;EAChB;EACA,IAAI,UAAU;GACX,AAAC,OAAe,OAAO;GACxB,QAAQ;EACV;CACF,IAAI,YAAY;AAClB;;;;;;;;;;;;;;;;AAiBA,SAAgB,OAAyB,QAAsB;CAC7D,IAAI,CAAC,WAAW,MAAM,GAEpB,QAAQ,KAAK,6BAA6B;CAG5C,MAAM,SAAc,MAAM,QAAQ,MAAM,IAAI,MAAM,KAAK,EAAE,QAAQ,OAAO,OAAO,CAAC,IAAI,CAAC;CAErF,KAAK,MAAM,OAAO,QAChB,OAAO,OAAO,MAAM,QAAQ,GAAG;CAGjC,OAAO;AACT"}
@@ -0,0 +1,40 @@
1
+ import { isObject, toRaw } from "./reactive/shared.mjs";
2
+ import { isReactive } from "./reactive.mjs";
3
+ import { isRef } from "./ref.mjs";
4
+
5
+ //#region src/reactivity/traverse.ts
6
+ /**
7
+ * 深度遍历工具(框架内部依赖收集使用)。
8
+ * @internal
9
+ */
10
+ function traverse(value, depth = Infinity, seen = /* @__PURE__ */ new Map()) {
11
+ if (depth <= 0 || !isObject(value)) return value;
12
+ if (isRef(value)) {
13
+ traverse(value.value, depth - 1, seen);
14
+ return value;
15
+ }
16
+ if (value["__r_skip"]) return value;
17
+ const existingDepth = seen.get(value);
18
+ if (existingDepth !== void 0 && existingDepth >= depth) return value;
19
+ seen.set(value, depth);
20
+ const nextDepth = depth - 1;
21
+ if (Array.isArray(value)) {
22
+ value.forEach((item) => traverse(item, nextDepth, seen));
23
+ return value;
24
+ }
25
+ if (value instanceof Map) {
26
+ value.forEach((item) => traverse(item, nextDepth, seen));
27
+ return value;
28
+ }
29
+ if (value instanceof Set) {
30
+ value.forEach((item) => traverse(item, nextDepth, seen));
31
+ return value;
32
+ }
33
+ const target = isReactive(value) && depth !== Infinity ? toRaw(value) : value;
34
+ for (const key in target) traverse(value[key], nextDepth, seen);
35
+ return value;
36
+ }
37
+
38
+ //#endregion
39
+ export { traverse };
40
+ //# sourceMappingURL=traverse.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"traverse.mjs","names":[],"sources":["../../../src/reactivity/traverse.ts"],"sourcesContent":["import { isObject, isReactive, toRaw } from './reactive'\nimport { ReactiveFlags } from './reactive/shared'\nimport { isRef } from './ref'\n\n/**\n * 深度遍历工具(框架内部依赖收集使用)。\n * @internal\n */\nexport function traverse(value: any, depth: number = Infinity, seen = new Map<object, number>()): any {\n if (depth <= 0 || !isObject(value)) {\n return value\n }\n if (isRef(value)) {\n traverse(value.value, depth - 1, seen)\n return value\n }\n if ((value as any)[ReactiveFlags.SKIP]) {\n return value\n }\n const existingDepth = seen.get(value)\n if (existingDepth !== undefined && existingDepth >= depth) {\n return value\n }\n seen.set(value, depth)\n const nextDepth = depth - 1\n if (Array.isArray(value)) {\n value.forEach(item => traverse(item, nextDepth, seen))\n return value\n }\n if (value instanceof Map) {\n value.forEach(item => traverse(item, nextDepth, seen))\n return value\n }\n if (value instanceof Set) {\n value.forEach(item => traverse(item, nextDepth, seen))\n return value\n }\n const target = isReactive(value) && depth !== Infinity ? toRaw(value) : value\n for (const key in target as any) {\n traverse((value as any)[key], nextDepth, seen)\n }\n return value\n}\n"],"mappings":";;;;;;;;;AAQA,SAAgB,SAAS,OAAY,QAAgB,UAAU,uBAAO,IAAI,IAAoB,GAAQ;CACpG,IAAI,SAAS,KAAK,CAAC,SAAS,KAAK,GAC/B,OAAO;CAET,IAAI,MAAM,KAAK,GAAG;EAChB,SAAS,MAAM,OAAO,QAAQ,GAAG,IAAI;EACrC,OAAO;CACT;CACA,IAAK,mBACH,OAAO;CAET,MAAM,gBAAgB,KAAK,IAAI,KAAK;CACpC,IAAI,kBAAkB,UAAa,iBAAiB,OAClD,OAAO;CAET,KAAK,IAAI,OAAO,KAAK;CACrB,MAAM,YAAY,QAAQ;CAC1B,IAAI,MAAM,QAAQ,KAAK,GAAG;EACxB,MAAM,SAAQ,SAAQ,SAAS,MAAM,WAAW,IAAI,CAAC;EACrD,OAAO;CACT;CACA,IAAI,iBAAiB,KAAK;EACxB,MAAM,SAAQ,SAAQ,SAAS,MAAM,WAAW,IAAI,CAAC;EACrD,OAAO;CACT;CACA,IAAI,iBAAiB,KAAK;EACxB,MAAM,SAAQ,SAAQ,SAAS,MAAM,WAAW,IAAI,CAAC;EACrD,OAAO;CACT;CACA,MAAM,SAAS,WAAW,KAAK,KAAK,UAAU,WAAW,MAAM,KAAK,IAAI;CACxE,KAAK,MAAM,OAAO,QAChB,SAAU,MAAc,MAAM,WAAW,IAAI;CAE/C,OAAO;AACT"}
@@ -0,0 +1,78 @@
1
+ import { nextTick, queueJob } from "../../scheduler.mjs";
2
+ import { touchReactive } from "../reactive/patch.mjs";
3
+ import { isReactive } from "../reactive.mjs";
4
+ import { isRef } from "../ref.mjs";
5
+ import { isShallowRef } from "../shallowRef.mjs";
6
+ import { traverse } from "../traverse.mjs";
7
+ import { getDeepWatchStrategy } from "./types.mjs";
8
+
9
+ //#region src/reactivity/watch/helpers.ts
10
+ function resolveWatchSource(item) {
11
+ if (typeof item === "function") return item();
12
+ if (isRef(item)) return item.value;
13
+ if (isReactive(item)) return item;
14
+ throw new Error("无效的 watch 源");
15
+ }
16
+ function createWatchGetter(source) {
17
+ const isMultiSource = Array.isArray(source);
18
+ const isReactiveSource = !isMultiSource && isReactive(source);
19
+ const hasReactiveSource = isMultiSource ? source.some((item) => isReactive(item)) : isReactiveSource;
20
+ const hasShallowSource = isMultiSource ? source.some((item) => isShallowRef(item)) : isShallowRef(source);
21
+ let getter;
22
+ if (isMultiSource) {
23
+ const sources = source;
24
+ getter = () => sources.map((item) => resolveWatchSource(item));
25
+ } else if (typeof source === "function") getter = source;
26
+ else if (isRef(source)) getter = () => source.value;
27
+ else if (isReactiveSource) getter = () => source;
28
+ else throw new Error("无效的 watch 源");
29
+ return {
30
+ getter,
31
+ hasReactiveSource,
32
+ hasShallowSource,
33
+ isMultiSource,
34
+ isReactiveSource
35
+ };
36
+ }
37
+ function applyDeepWatchGetter(getter, source, isMultiSource, isReactiveSource, deepOption) {
38
+ const deepDefault = isMultiSource ? source.some((item) => isReactive(item)) : isReactiveSource;
39
+ const deep = deepOption !== null && deepOption !== void 0 ? deepOption : deepDefault;
40
+ if (!(deep === true || typeof deep === "number")) return getter;
41
+ const depth = typeof deep === "number" ? deep : deep ? Infinity : 0;
42
+ return () => {
43
+ const value = getter();
44
+ const strategy = getDeepWatchStrategy();
45
+ if (isMultiSource && Array.isArray(value)) return value.map((item) => {
46
+ if (strategy === "version" && isReactive(item)) {
47
+ touchReactive(item);
48
+ return item;
49
+ }
50
+ return traverse(item, depth);
51
+ });
52
+ if (strategy === "version" && isReactive(value)) {
53
+ touchReactive(value);
54
+ return value;
55
+ }
56
+ return traverse(value, depth);
57
+ };
58
+ }
59
+ function dispatchScheduledJob(job, flush, isFirstRun, scheduler) {
60
+ if (scheduler) {
61
+ scheduler(job, isFirstRun);
62
+ return;
63
+ }
64
+ if (flush === "sync") {
65
+ job();
66
+ return;
67
+ }
68
+ if (flush === "post") {
69
+ nextTick(() => queueJob(job));
70
+ return;
71
+ }
72
+ if (isFirstRun) job();
73
+ else queueJob(job);
74
+ }
75
+
76
+ //#endregion
77
+ export { applyDeepWatchGetter, createWatchGetter, dispatchScheduledJob };
78
+ //# sourceMappingURL=helpers.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.mjs","names":[],"sources":["../../../../src/reactivity/watch/helpers.ts"],"sourcesContent":["import type { Ref } from '../ref'\nimport type { WatchScheduler, WatchSource, WatchSources } from './types'\nimport { nextTick } from '../../scheduler'\nimport { queueJob } from '../core'\nimport { isReactive, touchReactive } from '../reactive'\nimport { isRef } from '../ref'\nimport { isShallowRef } from '../shallowRef'\nimport { traverse } from '../traverse'\nimport { getDeepWatchStrategy } from './types'\n\ninterface WatchGetterContext {\n getter: () => any\n hasReactiveSource: boolean\n hasShallowSource: boolean\n isMultiSource: boolean\n isReactiveSource: boolean\n}\n\nfunction resolveWatchSource(item: WatchSource<any> | object) {\n if (typeof item === 'function') {\n return (item as () => any)()\n }\n if (isRef(item)) {\n return (item as Ref<any>).value\n }\n if (isReactive(item)) {\n return item\n }\n throw new Error('无效的 watch 源')\n}\n\nexport function createWatchGetter(source: WatchSources<any>): WatchGetterContext {\n const isMultiSource = Array.isArray(source)\n const isReactiveSource = !isMultiSource && isReactive(source)\n const hasReactiveSource = isMultiSource\n ? (source as ReadonlyArray<WatchSource<any> | object>).some(item => isReactive(item))\n : isReactiveSource\n const hasShallowSource = isMultiSource\n ? (source as ReadonlyArray<WatchSource<any> | object>).some(item => isShallowRef(item))\n : isShallowRef(source)\n let getter: () => any\n\n if (isMultiSource) {\n const sources = source as ReadonlyArray<WatchSource<any> | object>\n getter = () => sources.map(item => resolveWatchSource(item))\n }\n else if (typeof source === 'function') {\n getter = source as () => any\n }\n else if (isRef(source)) {\n getter = () => (source as Ref<any>).value\n }\n else if (isReactiveSource) {\n getter = () => source as any\n }\n else {\n throw new Error('无效的 watch 源')\n }\n\n return {\n getter,\n hasReactiveSource,\n hasShallowSource,\n isMultiSource,\n isReactiveSource,\n }\n}\n\nexport function applyDeepWatchGetter(\n getter: () => any,\n source: WatchSources<any>,\n isMultiSource: boolean,\n isReactiveSource: boolean,\n deepOption: boolean | number | undefined,\n) {\n const deepDefault = isMultiSource\n ? (source as ReadonlyArray<WatchSource<any> | object>).some(item => isReactive(item))\n : isReactiveSource\n const deep = deepOption ?? deepDefault\n const shouldDeep = deep === true || typeof deep === 'number'\n if (!shouldDeep) {\n return getter\n }\n const depth = typeof deep === 'number' ? deep : (deep ? Infinity : 0)\n return () => {\n const value = getter()\n const strategy = getDeepWatchStrategy()\n if (isMultiSource && Array.isArray(value)) {\n return value.map((item) => {\n if (strategy === 'version' && isReactive(item)) {\n touchReactive(item as any)\n return item\n }\n return traverse(item, depth)\n })\n }\n if (strategy === 'version' && isReactive(value)) {\n touchReactive(value as any)\n return value\n }\n return traverse(value, depth)\n }\n}\n\nexport function dispatchScheduledJob(\n job: () => void,\n flush: 'pre' | 'post' | 'sync',\n isFirstRun: boolean,\n scheduler?: WatchScheduler,\n) {\n if (scheduler) {\n scheduler(job, isFirstRun)\n return\n }\n if (flush === 'sync') {\n job()\n return\n }\n if (flush === 'post') {\n nextTick(() => queueJob(job))\n return\n }\n if (isFirstRun) {\n job()\n }\n else {\n queueJob(job)\n }\n}\n"],"mappings":";;;;;;;;;AAkBA,SAAS,mBAAmB,MAAiC;CAC3D,IAAI,OAAO,SAAS,YAClB,OAAQ,KAAmB;CAE7B,IAAI,MAAM,IAAI,GACZ,OAAQ,KAAkB;CAE5B,IAAI,WAAW,IAAI,GACjB,OAAO;CAET,MAAM,IAAI,MAAM,aAAa;AAC/B;AAEA,SAAgB,kBAAkB,QAA+C;CAC/E,MAAM,gBAAgB,MAAM,QAAQ,MAAM;CAC1C,MAAM,mBAAmB,CAAC,iBAAiB,WAAW,MAAM;CAC5D,MAAM,oBAAoB,gBACrB,OAAoD,MAAK,SAAQ,WAAW,IAAI,CAAC,IAClF;CACJ,MAAM,mBAAmB,gBACpB,OAAoD,MAAK,SAAQ,aAAa,IAAI,CAAC,IACpF,aAAa,MAAM;CACvB,IAAI;CAEJ,IAAI,eAAe;EACjB,MAAM,UAAU;EAChB,eAAe,QAAQ,KAAI,SAAQ,mBAAmB,IAAI,CAAC;CAC7D,OACK,IAAI,OAAO,WAAW,YACzB,SAAS;MAEN,IAAI,MAAM,MAAM,GACnB,eAAgB,OAAoB;MAEjC,IAAI,kBACP,eAAe;MAGf,MAAM,IAAI,MAAM,aAAa;CAG/B,OAAO;EACL;EACA;EACA;EACA;EACA;CACF;AACF;AAEA,SAAgB,qBACd,QACA,QACA,eACA,kBACA,YACA;CACA,MAAM,cAAc,gBACf,OAAoD,MAAK,SAAQ,WAAW,IAAI,CAAC,IAClF;CACJ,MAAM,OAAO,4DAAc;CAE3B,IAAI,EADe,SAAS,QAAQ,OAAO,SAAS,WAElD,OAAO;CAET,MAAM,QAAQ,OAAO,SAAS,WAAW,OAAQ,OAAO,WAAW;CACnE,aAAa;EACX,MAAM,QAAQ,OAAO;EACrB,MAAM,WAAW,qBAAqB;EACtC,IAAI,iBAAiB,MAAM,QAAQ,KAAK,GACtC,OAAO,MAAM,KAAK,SAAS;GACzB,IAAI,aAAa,aAAa,WAAW,IAAI,GAAG;IAC9C,cAAc,IAAW;IACzB,OAAO;GACT;GACA,OAAO,SAAS,MAAM,KAAK;EAC7B,CAAC;EAEH,IAAI,aAAa,aAAa,WAAW,KAAK,GAAG;GAC/C,cAAc,KAAY;GAC1B,OAAO;EACT;EACA,OAAO,SAAS,OAAO,KAAK;CAC9B;AACF;AAEA,SAAgB,qBACd,KACA,OACA,YACA,WACA;CACA,IAAI,WAAW;EACb,UAAU,KAAK,UAAU;EACzB;CACF;CACA,IAAI,UAAU,QAAQ;EACpB,IAAI;EACJ;CACF;CACA,IAAI,UAAU,QAAQ;EACpB,eAAe,SAAS,GAAG,CAAC;EAC5B;CACF;CACA,IAAI,YACF,IAAI;MAGJ,SAAS,GAAG;AAEhB"}
@@ -0,0 +1,20 @@
1
+ //#region src/reactivity/watch/types.ts
2
+ let __deepWatchStrategy = "version";
3
+ /**
4
+ * 设置深度 watch 内部策略(测试/框架内部使用)。
5
+ * @internal
6
+ */
7
+ function setDeepWatchStrategy(strategy) {
8
+ __deepWatchStrategy = strategy;
9
+ }
10
+ /**
11
+ * 获取深度 watch 内部策略(测试/框架内部使用)。
12
+ * @internal
13
+ */
14
+ function getDeepWatchStrategy() {
15
+ return __deepWatchStrategy;
16
+ }
17
+
18
+ //#endregion
19
+ export { getDeepWatchStrategy, setDeepWatchStrategy };
20
+ //# sourceMappingURL=types.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.mjs","names":[],"sources":["../../../../src/reactivity/watch/types.ts"],"sourcesContent":["import type { ComputedRef } from '../computed'\nimport type { Ref } from '../ref'\n\nexport type OnCleanup = (cleanupFn: () => void) => void\nexport type WatchEffect = (onCleanup: OnCleanup) => void\nexport type WatchSource<T = any> = Ref<T> | ComputedRef<T> | (() => T)\nexport type WatchCallback<V = any, OV = any> = (value: V, oldValue: OV, onCleanup: OnCleanup) => void\nexport type WatchScheduler = (job: () => void, isFirstRun: boolean) => void\nexport type MaybeUndefined<T, Immediate> = Immediate extends true ? T | undefined : T\nexport type MultiWatchSources = (WatchSource<unknown> | object)[]\nexport type MapSources<T, Immediate> = {\n [K in keyof T]: T[K] extends WatchSource<infer V>\n ? MaybeUndefined<V, Immediate>\n : T[K] extends object\n ? MaybeUndefined<T[K], Immediate>\n : never\n}\nexport type WatchSourceValue<S> = S extends WatchSource<infer V>\n ? V\n : S extends object\n ? S\n : never\nexport type WatchSources<T = any>\n = | WatchSource<T>\n | ReadonlyArray<WatchSource<unknown> | object>\n | (T extends object ? T : never)\ntype IsTuple<T extends ReadonlyArray<any>> = number extends T['length'] ? false : true\nexport type WatchMultiSources<T extends ReadonlyArray<WatchSource<unknown> | object>> = IsTuple<T> extends true\n ? { [K in keyof T]: WatchSourceValue<T[K]> }\n : Array<WatchSourceValue<T[number]>>\n\nexport interface WatchEffectOptions {\n flush?: 'pre' | 'post' | 'sync'\n}\n\nexport interface WatchOptions<Immediate extends boolean = false> extends WatchEffectOptions {\n immediate?: Immediate\n deep?: boolean | number\n once?: boolean\n scheduler?: WatchScheduler\n}\n\nexport interface WatchStopHandle {\n (): void\n stop: () => void\n pause: () => void\n resume: () => void\n}\n\nexport type DeepWatchStrategy = 'version' | 'traverse'\n\nlet __deepWatchStrategy: DeepWatchStrategy = 'version'\n\n/**\n * 设置深度 watch 内部策略(测试/框架内部使用)。\n * @internal\n */\nexport function setDeepWatchStrategy(strategy: DeepWatchStrategy) {\n __deepWatchStrategy = strategy\n}\n\n/**\n * 获取深度 watch 内部策略(测试/框架内部使用)。\n * @internal\n */\nexport function getDeepWatchStrategy(): DeepWatchStrategy {\n return __deepWatchStrategy\n}\n"],"mappings":";AAmDA,IAAI,sBAAyC;;;;;AAM7C,SAAgB,qBAAqB,UAA6B;CAChE,sBAAsB;AACxB;;;;;AAMA,SAAgB,uBAA0C;CACxD,OAAO;AACT"}
@@ -0,0 +1,167 @@
1
+ import { effect, onScopeDispose, stop } from "./core.mjs";
2
+ import { getCurrentInstance, setCurrentInstance } from "../runtime/hooks/base.mjs";
3
+ import { getDeepWatchStrategy, setDeepWatchStrategy } from "./watch/types.mjs";
4
+ import { applyDeepWatchGetter, createWatchGetter, dispatchScheduledJob } from "./watch/helpers.mjs";
5
+
6
+ //#region src/reactivity/watch.ts
7
+ function watch(source, cb, options = {}) {
8
+ var _options$flush;
9
+ const ownerInstance = getCurrentInstance();
10
+ const watchGetterContext = createWatchGetter(source);
11
+ const getter = applyDeepWatchGetter(watchGetterContext.getter, source, watchGetterContext.isMultiSource, watchGetterContext.isReactiveSource, options.deep);
12
+ const forceTrigger = options.deep === true || typeof options.deep === "number" || options.deep === void 0 && watchGetterContext.hasReactiveSource || watchGetterContext.hasShallowSource;
13
+ let cleanup;
14
+ const onCleanup = (fn) => {
15
+ cleanup = fn;
16
+ };
17
+ let oldValue = watchGetterContext.isMultiSource ? [] : void 0;
18
+ let runner;
19
+ let paused = false;
20
+ let pauseToken = 0;
21
+ let scheduledToken = pauseToken;
22
+ let stopHandle;
23
+ const cbWithOnce = options.once ? (value, oldVal, cleanupRegister) => {
24
+ cb(value, oldVal, cleanupRegister);
25
+ stopHandle();
26
+ } : cb;
27
+ const flush = (_options$flush = options.flush) !== null && _options$flush !== void 0 ? _options$flush : "pre";
28
+ const hasChanged = (newValue, previousValue) => {
29
+ if (!watchGetterContext.isMultiSource) return !Object.is(newValue, previousValue);
30
+ if (!Array.isArray(newValue) || !Array.isArray(previousValue)) return !Object.is(newValue, previousValue);
31
+ return newValue.length !== previousValue.length || newValue.some((value, index) => !Object.is(value, previousValue[index]));
32
+ };
33
+ const runJob = (token, force = false) => {
34
+ if (!runner.active || paused || token !== pauseToken) return;
35
+ const newValue = runner();
36
+ if (!force && !forceTrigger && !hasChanged(newValue, oldValue)) return;
37
+ cleanup === null || cleanup === void 0 || cleanup();
38
+ const previousInstance = getCurrentInstance();
39
+ setCurrentInstance(ownerInstance);
40
+ try {
41
+ cbWithOnce(newValue, oldValue, onCleanup);
42
+ } finally {
43
+ setCurrentInstance(previousInstance);
44
+ }
45
+ oldValue = newValue;
46
+ };
47
+ const scheduledJob = () => runJob(scheduledToken);
48
+ const scheduleJob = (isFirstRun) => {
49
+ scheduledToken = pauseToken;
50
+ dispatchScheduledJob(scheduledJob, flush, isFirstRun, options.scheduler);
51
+ };
52
+ runner = effect(() => getter(), {
53
+ scheduler: () => {
54
+ if (paused) return;
55
+ scheduleJob(false);
56
+ },
57
+ lazy: true
58
+ });
59
+ const doStop = () => {
60
+ cleanup === null || cleanup === void 0 || cleanup();
61
+ cleanup = void 0;
62
+ stop(runner);
63
+ };
64
+ stopHandle = doStop;
65
+ stopHandle.stop = doStop;
66
+ stopHandle.pause = () => {
67
+ if (!paused) {
68
+ paused = true;
69
+ pauseToken += 1;
70
+ }
71
+ };
72
+ stopHandle.resume = () => {
73
+ if (!paused || !runner.active) return;
74
+ paused = false;
75
+ oldValue = runner();
76
+ };
77
+ if (options.immediate) runJob(pauseToken, true);
78
+ else oldValue = runner();
79
+ onScopeDispose(stopHandle);
80
+ return stopHandle;
81
+ }
82
+ /**
83
+ * watchEffect 注册一个响应式副作用,可选清理函数。
84
+ * 副作用会立即执行,并在依赖变化时重新运行。
85
+ */
86
+ function watchEffect(effectFn, options = {}) {
87
+ var _options$flush2;
88
+ const ownerInstance = getCurrentInstance();
89
+ let cleanup;
90
+ const onCleanup = (fn) => {
91
+ cleanup = fn;
92
+ };
93
+ let runner;
94
+ let paused = false;
95
+ let pauseToken = 0;
96
+ let scheduledToken = pauseToken;
97
+ const flush = (_options$flush2 = options.flush) !== null && _options$flush2 !== void 0 ? _options$flush2 : "pre";
98
+ const runJob = (token) => {
99
+ if (!runner.active || paused || token !== pauseToken) return;
100
+ runner();
101
+ };
102
+ const scheduledJob = () => runJob(scheduledToken);
103
+ const scheduleJob = (isFirstRun) => {
104
+ scheduledToken = pauseToken;
105
+ dispatchScheduledJob(scheduledJob, flush, isFirstRun);
106
+ };
107
+ runner = effect(() => {
108
+ cleanup === null || cleanup === void 0 || cleanup();
109
+ cleanup = void 0;
110
+ const previousInstance = getCurrentInstance();
111
+ setCurrentInstance(ownerInstance);
112
+ try {
113
+ effectFn(onCleanup);
114
+ } finally {
115
+ setCurrentInstance(previousInstance);
116
+ }
117
+ }, {
118
+ lazy: true,
119
+ scheduler: () => {
120
+ if (paused) return;
121
+ scheduleJob(false);
122
+ }
123
+ });
124
+ scheduleJob(true);
125
+ const doStop = () => {
126
+ cleanup === null || cleanup === void 0 || cleanup();
127
+ cleanup = void 0;
128
+ stop(runner);
129
+ };
130
+ const stopHandle = doStop;
131
+ stopHandle.stop = doStop;
132
+ stopHandle.pause = () => {
133
+ if (!paused) {
134
+ paused = true;
135
+ pauseToken += 1;
136
+ }
137
+ };
138
+ stopHandle.resume = () => {
139
+ if (!paused || !runner.active) return;
140
+ paused = false;
141
+ scheduleJob(true);
142
+ };
143
+ onScopeDispose(stopHandle);
144
+ return stopHandle;
145
+ }
146
+ /**
147
+ * 以后置刷新的方式运行副作用,与 Vue 的 `watchPostEffect()` 兼容。
148
+ */
149
+ function watchPostEffect(effectFn, options = {}) {
150
+ return watchEffect(effectFn, {
151
+ ...options,
152
+ flush: "post"
153
+ });
154
+ }
155
+ /**
156
+ * 以同步刷新的方式运行副作用,与 Vue 的 `watchSyncEffect()` 兼容。
157
+ */
158
+ function watchSyncEffect(effectFn, options = {}) {
159
+ return watchEffect(effectFn, {
160
+ ...options,
161
+ flush: "sync"
162
+ });
163
+ }
164
+
165
+ //#endregion
166
+ export { getDeepWatchStrategy, setDeepWatchStrategy, watch, watchEffect, watchPostEffect, watchSyncEffect };
167
+ //# sourceMappingURL=watch.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watch.mjs","names":[],"sources":["../../../src/reactivity/watch.ts"],"sourcesContent":["import type { ReactiveEffect } from './core'\nimport type {\n MapSources,\n MaybeUndefined,\n MultiWatchSources,\n OnCleanup,\n WatchCallback,\n WatchEffect,\n WatchEffectOptions,\n WatchOptions,\n WatchSource,\n WatchSources,\n WatchStopHandle,\n} from './watch/types'\nimport { getCurrentInstance, setCurrentInstance } from '../runtime/hooks'\nimport { effect, onScopeDispose, stop } from './core'\nimport { applyDeepWatchGetter, createWatchGetter, dispatchScheduledJob } from './watch/helpers'\n\nexport type {\n DeepWatchStrategy,\n MapSources,\n MaybeUndefined,\n MultiWatchSources,\n OnCleanup,\n WatchCallback,\n WatchEffect,\n WatchEffectOptions,\n WatchMultiSources,\n WatchOptions,\n WatchScheduler,\n WatchSource,\n WatchSources,\n WatchSourceValue,\n WatchStopHandle,\n} from './watch/types'\nexport { getDeepWatchStrategy, setDeepWatchStrategy } from './watch/types'\n\nexport function watch<T, Immediate extends Readonly<boolean> = false>(\n source: WatchSource<T>,\n cb: WatchCallback<T, MaybeUndefined<T, Immediate>>,\n options?: WatchOptions<Immediate>,\n): WatchStopHandle\nexport function watch<T extends object, Immediate extends Readonly<boolean> = false>(\n source: T extends ReadonlyArray<any> ? never : T,\n cb: WatchCallback<T, MaybeUndefined<T, Immediate>>,\n options?: WatchOptions<Immediate>,\n): WatchStopHandle\nexport function watch<T extends Readonly<MultiWatchSources>, Immediate extends Readonly<boolean> = false>(\n source: readonly [...T] | T,\n cb: WatchCallback<MapSources<T, false>, MapSources<T, Immediate>>,\n options?: WatchOptions<Immediate>,\n): WatchStopHandle\nexport function watch<T extends MultiWatchSources, Immediate extends Readonly<boolean> = false>(\n source: [...T],\n cb: WatchCallback<MapSources<T, false>, MapSources<T, Immediate>>,\n options?: WatchOptions<Immediate>,\n): WatchStopHandle\nexport function watch(\n source: WatchSources<any>,\n cb: WatchCallback,\n options: WatchOptions = {},\n): WatchStopHandle {\n const ownerInstance = getCurrentInstance()\n const watchGetterContext = createWatchGetter(source)\n const getter = applyDeepWatchGetter(\n watchGetterContext.getter,\n source,\n watchGetterContext.isMultiSource,\n watchGetterContext.isReactiveSource,\n options.deep,\n )\n const forceTrigger = options.deep === true\n || typeof options.deep === 'number'\n || (options.deep === undefined && watchGetterContext.hasReactiveSource)\n || watchGetterContext.hasShallowSource\n\n let cleanup: (() => void) | undefined\n const onCleanup: OnCleanup = (fn) => {\n cleanup = fn\n }\n\n let oldValue: any = watchGetterContext.isMultiSource ? [] : undefined\n let runner: ReactiveEffect<any>\n let paused = false\n let pauseToken = 0\n let scheduledToken = pauseToken\n let stopHandle: WatchStopHandle\n const cbWithOnce: WatchCallback = options.once\n ? (value, oldVal, cleanupRegister) => {\n cb(value, oldVal, cleanupRegister)\n stopHandle()\n }\n : cb\n const flush = options.flush ?? 'pre'\n\n const hasChanged = (newValue: any, previousValue: any) => {\n if (!watchGetterContext.isMultiSource) {\n return !Object.is(newValue, previousValue)\n }\n if (!Array.isArray(newValue) || !Array.isArray(previousValue)) {\n return !Object.is(newValue, previousValue)\n }\n return newValue.length !== previousValue.length\n || newValue.some((value, index) => !Object.is(value, previousValue[index]))\n }\n\n const runJob = (token: number, force = false) => {\n if (!runner.active || paused || token !== pauseToken) {\n return\n }\n const newValue = runner()\n if (!force && !forceTrigger && !hasChanged(newValue, oldValue)) {\n return\n }\n cleanup?.()\n const previousInstance = getCurrentInstance()\n setCurrentInstance(ownerInstance)\n try {\n cbWithOnce(newValue, oldValue, onCleanup)\n }\n finally {\n setCurrentInstance(previousInstance)\n }\n oldValue = newValue\n }\n const scheduledJob = () => runJob(scheduledToken)\n\n const scheduleJob = (isFirstRun: boolean) => {\n scheduledToken = pauseToken\n dispatchScheduledJob(scheduledJob, flush, isFirstRun, options.scheduler)\n }\n\n runner = effect(() => getter(), {\n scheduler: () => {\n if (paused) {\n return\n }\n scheduleJob(false)\n },\n lazy: true,\n })\n\n const doStop = () => {\n cleanup?.()\n cleanup = undefined\n stop(runner)\n }\n stopHandle = doStop as WatchStopHandle\n stopHandle.stop = doStop\n stopHandle.pause = () => {\n if (!paused) {\n paused = true\n pauseToken += 1\n }\n }\n stopHandle.resume = () => {\n if (!paused || !runner.active) {\n return\n }\n paused = false\n oldValue = runner()\n }\n\n if (options.immediate) {\n runJob(pauseToken, true)\n }\n else {\n oldValue = runner()\n }\n onScopeDispose(stopHandle)\n return stopHandle\n}\n\n/**\n * watchEffect 注册一个响应式副作用,可选清理函数。\n * 副作用会立即执行,并在依赖变化时重新运行。\n */\nexport function watchEffect(\n effectFn: WatchEffect,\n options: WatchEffectOptions = {},\n): WatchStopHandle {\n const ownerInstance = getCurrentInstance()\n let cleanup: (() => void) | undefined\n const onCleanup: OnCleanup = (fn) => {\n cleanup = fn\n }\n let runner: ReactiveEffect\n let paused = false\n let pauseToken = 0\n let scheduledToken = pauseToken\n const flush = options.flush ?? 'pre'\n\n const runJob = (token: number) => {\n if (!runner.active || paused || token !== pauseToken) {\n return\n }\n runner()\n }\n const scheduledJob = () => runJob(scheduledToken)\n\n const scheduleJob = (isFirstRun: boolean) => {\n scheduledToken = pauseToken\n dispatchScheduledJob(scheduledJob, flush, isFirstRun)\n }\n\n runner = effect(\n () => {\n cleanup?.()\n cleanup = undefined\n const previousInstance = getCurrentInstance()\n setCurrentInstance(ownerInstance)\n try {\n effectFn(onCleanup)\n }\n finally {\n setCurrentInstance(previousInstance)\n }\n },\n {\n lazy: true,\n scheduler: () => {\n if (paused) {\n return\n }\n scheduleJob(false)\n },\n },\n )\n scheduleJob(true)\n\n const doStop = () => {\n cleanup?.()\n cleanup = undefined\n stop(runner)\n }\n const stopHandle = doStop as WatchStopHandle\n stopHandle.stop = doStop\n stopHandle.pause = () => {\n if (!paused) {\n paused = true\n pauseToken += 1\n }\n }\n stopHandle.resume = () => {\n if (!paused || !runner.active) {\n return\n }\n paused = false\n scheduleJob(true)\n }\n onScopeDispose(stopHandle)\n return stopHandle\n}\n\n/**\n * 以后置刷新的方式运行副作用,与 Vue 的 `watchPostEffect()` 兼容。\n */\nexport function watchPostEffect(\n effectFn: WatchEffect,\n options: Omit<WatchEffectOptions, 'flush'> = {},\n): WatchStopHandle {\n return watchEffect(effectFn, {\n ...options,\n flush: 'post',\n })\n}\n\n/**\n * 以同步刷新的方式运行副作用,与 Vue 的 `watchSyncEffect()` 兼容。\n */\nexport function watchSyncEffect(\n effectFn: WatchEffect,\n options: Omit<WatchEffectOptions, 'flush'> = {},\n): WatchStopHandle {\n return watchEffect(effectFn, {\n ...options,\n flush: 'sync',\n })\n}\n"],"mappings":";;;;;;AAyDA,SAAgB,MACd,QACA,IACA,UAAwB,CAAC,GACR;;CACjB,MAAM,gBAAgB,mBAAmB;CACzC,MAAM,qBAAqB,kBAAkB,MAAM;CACnD,MAAM,SAAS,qBACb,mBAAmB,QACnB,QACA,mBAAmB,eACnB,mBAAmB,kBACnB,QAAQ,IACV;CACA,MAAM,eAAe,QAAQ,SAAS,QACjC,OAAO,QAAQ,SAAS,YACvB,QAAQ,SAAS,UAAa,mBAAmB,qBAClD,mBAAmB;CAExB,IAAI;CACJ,MAAM,aAAwB,OAAO;EACnC,UAAU;CACZ;CAEA,IAAI,WAAgB,mBAAmB,gBAAgB,CAAC,IAAI;CAC5D,IAAI;CACJ,IAAI,SAAS;CACb,IAAI,aAAa;CACjB,IAAI,iBAAiB;CACrB,IAAI;CACJ,MAAM,aAA4B,QAAQ,QACrC,OAAO,QAAQ,oBAAoB;EAClC,GAAG,OAAO,QAAQ,eAAe;EACjC,WAAW;CACb,IACA;CACJ,MAAM,0BAAQ,QAAQ,gEAAS;CAE/B,MAAM,cAAc,UAAe,kBAAuB;EACxD,IAAI,CAAC,mBAAmB,eACtB,OAAO,CAAC,OAAO,GAAG,UAAU,aAAa;EAE3C,IAAI,CAAC,MAAM,QAAQ,QAAQ,KAAK,CAAC,MAAM,QAAQ,aAAa,GAC1D,OAAO,CAAC,OAAO,GAAG,UAAU,aAAa;EAE3C,OAAO,SAAS,WAAW,cAAc,UACpC,SAAS,MAAM,OAAO,UAAU,CAAC,OAAO,GAAG,OAAO,cAAc,MAAM,CAAC;CAC9E;CAEA,MAAM,UAAU,OAAe,QAAQ,UAAU;EAC/C,IAAI,CAAC,OAAO,UAAU,UAAU,UAAU,YACxC;EAEF,MAAM,WAAW,OAAO;EACxB,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,WAAW,UAAU,QAAQ,GAC3D;EAEF,kDAAU;EACV,MAAM,mBAAmB,mBAAmB;EAC5C,mBAAmB,aAAa;EAChC,IAAI;GACF,WAAW,UAAU,UAAU,SAAS;EAC1C,UACQ;GACN,mBAAmB,gBAAgB;EACrC;EACA,WAAW;CACb;CACA,MAAM,qBAAqB,OAAO,cAAc;CAEhD,MAAM,eAAe,eAAwB;EAC3C,iBAAiB;EACjB,qBAAqB,cAAc,OAAO,YAAY,QAAQ,SAAS;CACzE;CAEA,SAAS,aAAa,OAAO,GAAG;EAC9B,iBAAiB;GACf,IAAI,QACF;GAEF,YAAY,KAAK;EACnB;EACA,MAAM;CACR,CAAC;CAED,MAAM,eAAe;EACnB,kDAAU;EACV,UAAU;EACV,KAAK,MAAM;CACb;CACA,aAAa;CACb,WAAW,OAAO;CAClB,WAAW,cAAc;EACvB,IAAI,CAAC,QAAQ;GACX,SAAS;GACT,cAAc;EAChB;CACF;CACA,WAAW,eAAe;EACxB,IAAI,CAAC,UAAU,CAAC,OAAO,QACrB;EAEF,SAAS;EACT,WAAW,OAAO;CACpB;CAEA,IAAI,QAAQ,WACV,OAAO,YAAY,IAAI;MAGvB,WAAW,OAAO;CAEpB,eAAe,UAAU;CACzB,OAAO;AACT;;;;;AAMA,SAAgB,YACd,UACA,UAA8B,CAAC,GACd;;CACjB,MAAM,gBAAgB,mBAAmB;CACzC,IAAI;CACJ,MAAM,aAAwB,OAAO;EACnC,UAAU;CACZ;CACA,IAAI;CACJ,IAAI,SAAS;CACb,IAAI,aAAa;CACjB,IAAI,iBAAiB;CACrB,MAAM,2BAAQ,QAAQ,kEAAS;CAE/B,MAAM,UAAU,UAAkB;EAChC,IAAI,CAAC,OAAO,UAAU,UAAU,UAAU,YACxC;EAEF,OAAO;CACT;CACA,MAAM,qBAAqB,OAAO,cAAc;CAEhD,MAAM,eAAe,eAAwB;EAC3C,iBAAiB;EACjB,qBAAqB,cAAc,OAAO,UAAU;CACtD;CAEA,SAAS,aACD;EACJ,kDAAU;EACV,UAAU;EACV,MAAM,mBAAmB,mBAAmB;EAC5C,mBAAmB,aAAa;EAChC,IAAI;GACF,SAAS,SAAS;EACpB,UACQ;GACN,mBAAmB,gBAAgB;EACrC;CACF,GACA;EACE,MAAM;EACN,iBAAiB;GACf,IAAI,QACF;GAEF,YAAY,KAAK;EACnB;CACF,CACF;CACA,YAAY,IAAI;CAEhB,MAAM,eAAe;EACnB,kDAAU;EACV,UAAU;EACV,KAAK,MAAM;CACb;CACA,MAAM,aAAa;CACnB,WAAW,OAAO;CAClB,WAAW,cAAc;EACvB,IAAI,CAAC,QAAQ;GACX,SAAS;GACT,cAAc;EAChB;CACF;CACA,WAAW,eAAe;EACxB,IAAI,CAAC,UAAU,CAAC,OAAO,QACrB;EAEF,SAAS;EACT,YAAY,IAAI;CAClB;CACA,eAAe,UAAU;CACzB,OAAO;AACT;;;;AAKA,SAAgB,gBACd,UACA,UAA6C,CAAC,GAC7B;CACjB,OAAO,YAAY,UAAU;EAC3B,GAAG;EACH,OAAO;CACT,CAAC;AACH;;;;AAKA,SAAgB,gBACd,UACA,UAA6C,CAAC,GAC7B;CACjB,OAAO,YAAY,UAAU;EAC3B,GAAG;EACH,OAAO;CACT,CAAC;AACH"}
@@ -0,0 +1,32 @@
1
+ import { getCurrentMiniProgramPages } from "../runtime/platform.mjs";
2
+ import { resolvePageRoute } from "../routerInternal/location.mjs";
3
+ import { NavigationFailureType } from "./types.mjs";
4
+ import { createNavigationFailure, runNavigationGuards } from "./navigationCore.mjs";
5
+ import { createNavigationRunResult } from "./navigationResult.mjs";
6
+
7
+ //#region src/router/backNavigation.ts
8
+ function resolveBackNavigationTarget(delta, from, resolveWithCodec) {
9
+ const pages = getCurrentMiniProgramPages();
10
+ const targetPage = pages[pages.length - 1 - delta];
11
+ if (!targetPage) return;
12
+ return resolveWithCodec(resolvePageRoute(targetPage).fullPath, from.path);
13
+ }
14
+ async function runBackNavigationGuards(options) {
15
+ const { target, from, nativeRouter, beforeEachGuards, beforeResolveGuards, resolveWithCodec } = options;
16
+ const guardContext = {
17
+ mode: "back",
18
+ to: target,
19
+ from,
20
+ nativeRouter
21
+ };
22
+ for (const guards of [beforeEachGuards, beforeResolveGuards]) {
23
+ const guardResult = await runNavigationGuards(guards, guardContext, resolveWithCodec);
24
+ if (guardResult.status === "failure") return createNavigationRunResult("back", from, target, guardResult.failure);
25
+ if (guardResult.status === "redirect") return createNavigationRunResult("back", from, target, createNavigationFailure(NavigationFailureType.aborted, target, from, "Redirect is not supported in back navigation guards"));
26
+ }
27
+ return createNavigationRunResult("back", from, target);
28
+ }
29
+
30
+ //#endregion
31
+ export { resolveBackNavigationTarget, runBackNavigationGuards };
32
+ //# sourceMappingURL=backNavigation.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backNavigation.mjs","names":[],"sources":["../../../src/router/backNavigation.ts"],"sourcesContent":["import type { SetupContextRouter } from '../runtime/types/props'\nimport type { NavigationRunResult } from './navigationResult'\nimport type {\n NavigationGuard,\n RouteLocationNormalizedLoaded,\n RouteLocationRaw,\n} from './types'\nimport { resolvePageRoute } from '../routerInternal/shared'\nimport { getCurrentMiniProgramPages } from '../runtime/platform'\nimport { createNavigationFailure, runNavigationGuards } from './navigationCore'\nimport { createNavigationRunResult } from './navigationResult'\nimport { NavigationFailureType } from './types'\n\ninterface RunBackNavigationGuardsOptions {\n target?: RouteLocationNormalizedLoaded\n from: RouteLocationNormalizedLoaded\n nativeRouter: SetupContextRouter\n beforeEachGuards: ReadonlySet<NavigationGuard>\n beforeResolveGuards: ReadonlySet<NavigationGuard>\n resolveWithCodec: (to: RouteLocationRaw, currentPath: string) => RouteLocationNormalizedLoaded\n}\n\nexport function resolveBackNavigationTarget(\n delta: number,\n from: RouteLocationNormalizedLoaded,\n resolveWithCodec: (to: RouteLocationRaw, currentPath: string) => RouteLocationNormalizedLoaded,\n): RouteLocationNormalizedLoaded | undefined {\n const pages = getCurrentMiniProgramPages()\n const targetPage = pages[pages.length - 1 - delta]\n if (!targetPage) {\n return undefined\n }\n const target = resolvePageRoute(targetPage)\n return resolveWithCodec(target.fullPath, from.path)\n}\n\nexport async function runBackNavigationGuards(\n options: RunBackNavigationGuardsOptions,\n): Promise<NavigationRunResult> {\n const {\n target,\n from,\n nativeRouter,\n beforeEachGuards,\n beforeResolveGuards,\n resolveWithCodec,\n } = options\n const guardContext = {\n mode: 'back' as const,\n to: target,\n from,\n nativeRouter,\n }\n\n for (const guards of [beforeEachGuards, beforeResolveGuards]) {\n const guardResult = await runNavigationGuards(guards, guardContext, resolveWithCodec)\n if (guardResult.status === 'failure') {\n return createNavigationRunResult('back', from, target, guardResult.failure)\n }\n if (guardResult.status === 'redirect') {\n return createNavigationRunResult(\n 'back',\n from,\n target,\n createNavigationFailure(\n NavigationFailureType.aborted,\n target,\n from,\n 'Redirect is not supported in back navigation guards',\n ),\n )\n }\n }\n\n return createNavigationRunResult('back', from, target)\n}\n"],"mappings":";;;;;;;AAsBA,SAAgB,4BACd,OACA,MACA,kBAC2C;CAC3C,MAAM,QAAQ,2BAA2B;CACzC,MAAM,aAAa,MAAM,MAAM,SAAS,IAAI;CAC5C,IAAI,CAAC,YACH;CAGF,OAAO,iBADQ,iBAAiB,UACH,CAAC,CAAC,UAAU,KAAK,IAAI;AACpD;AAEA,eAAsB,wBACpB,SAC8B;CAC9B,MAAM,EACJ,QACA,MACA,cACA,kBACA,qBACA,qBACE;CACJ,MAAM,eAAe;EACnB,MAAM;EACN,IAAI;EACJ;EACA;CACF;CAEA,KAAK,MAAM,UAAU,CAAC,kBAAkB,mBAAmB,GAAG;EAC5D,MAAM,cAAc,MAAM,oBAAoB,QAAQ,cAAc,gBAAgB;EACpF,IAAI,YAAY,WAAW,WACzB,OAAO,0BAA0B,QAAQ,MAAM,QAAQ,YAAY,OAAO;EAE5E,IAAI,YAAY,WAAW,YACzB,OAAO,0BACL,QACA,MACA,QACA,wBACE,sBAAsB,SACtB,QACA,MACA,qDACF,CACF;CAEJ;CAEA,OAAO,0BAA0B,QAAQ,MAAM,MAAM;AACvD"}