wevu 6.17.8 → 6.18.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 (70) hide show
  1. package/dist/base-BxKbbKVO.mjs +1 -0
  2. package/dist/computed-Xoi9XEUx.mjs +1 -0
  3. package/dist/dev/{base-ii6cqKIl.mjs → base-CYkvI7w8.mjs} +2 -2
  4. package/dist/dev/{base-ii6cqKIl.mjs.map → base-CYkvI7w8.mjs.map} +1 -1
  5. package/dist/dev/computed-BxRsUJgi.mjs +128 -0
  6. package/dist/dev/computed-BxRsUJgi.mjs.map +1 -0
  7. package/dist/dev/index.mjs +9 -9
  8. package/dist/dev/internal-reactivity.mjs +5 -5
  9. package/dist/dev/internal-runtime.mjs +3 -3
  10. package/dist/dev/internal-template.mjs +1 -1
  11. package/dist/dev/{ref-Bxwe2Kfo.mjs → ref-DRZC3Kc5.mjs} +6 -202
  12. package/dist/dev/ref-DRZC3Kc5.mjs.map +1 -0
  13. package/dist/dev/{router-D6H7HviN.mjs → router-BD-ovqV2.mjs} +69 -5
  14. package/dist/dev/router-BD-ovqV2.mjs.map +1 -0
  15. package/dist/dev/router.mjs +36 -13
  16. package/dist/dev/router.mjs.map +1 -1
  17. package/dist/dev/{store-7lzhCASj.mjs → store-HNsiQJ4d.mjs} +14 -10
  18. package/dist/dev/store-HNsiQJ4d.mjs.map +1 -0
  19. package/dist/dev/store.mjs +1 -1
  20. package/dist/dev/{template-DLHZbQ3E.mjs → template-n_iVr0ey.mjs} +2 -2
  21. package/dist/dev/{template-DLHZbQ3E.mjs.map → template-n_iVr0ey.mjs.map} +1 -1
  22. package/dist/dev/{templateRef-C4hJDc4O.mjs → templateRef-DuFamxmB.mjs} +108 -16
  23. package/dist/dev/templateRef-DuFamxmB.mjs.map +1 -0
  24. package/dist/dev/{toRefs-BVrN7XKZ.mjs → toRefs-D06VmFK2.mjs} +2 -2
  25. package/dist/dev/{toRefs-BVrN7XKZ.mjs.map → toRefs-D06VmFK2.mjs.map} +1 -1
  26. package/dist/dev/vue-demi.mjs +9 -9
  27. package/dist/dev/{watch-B46crqgs.mjs → watch-jrgL5ald.mjs} +121 -4
  28. package/dist/dev/watch-jrgL5ald.mjs.map +1 -0
  29. package/dist/fetch.d.mts +0 -1
  30. package/dist/{index-C6Jyiw-u.d.mts → index-CCET_bCY.d.mts} +3 -4
  31. package/dist/{index-HS9xxiUI.d.mts → index-Dg1-jV9L.d.mts} +17 -17
  32. package/dist/index.d.mts +5 -4
  33. package/dist/index.mjs +1 -1
  34. package/dist/internal-reactivity.d.mts +2 -1
  35. package/dist/internal-reactivity.mjs +1 -1
  36. package/dist/internal-runtime.d.mts +1 -1
  37. package/dist/internal-runtime.mjs +1 -1
  38. package/dist/internal-template.mjs +1 -1
  39. package/dist/jsx-runtime.d.mts +1 -2
  40. package/dist/ref-D37CknuD.mjs +1 -0
  41. package/dist/router-DLOOLAqv.mjs +1 -0
  42. package/dist/router.d.mts +1 -2
  43. package/dist/router.mjs +1 -1
  44. package/dist/store-eHrHBQiv.mjs +1 -0
  45. package/dist/store.d.mts +1 -1
  46. package/dist/store.mjs +1 -1
  47. package/dist/{template-CFhlojaH.mjs → template-CNzlwH-E.mjs} +1 -1
  48. package/dist/templateRef-C4R74tUR.mjs +1 -0
  49. package/dist/{toRefs-COgMIEoC.mjs → toRefs-CoytPyo0.mjs} +1 -1
  50. package/dist/traverse-B4Ez44Gd.d.mts +108 -0
  51. package/dist/vue-demi.d.mts +5 -6
  52. package/dist/vue-demi.mjs +1 -1
  53. package/dist/{vue-types-xMdYZRuG.d.mts → vue-types-B3N60cGV.d.mts} +13 -121
  54. package/dist/watch-Bbd-gmEg.mjs +1 -0
  55. package/dist/{weappIntrinsicElements-BjaNcUW3.d.mts → weappIntrinsicElements-BgDtC53_.d.mts} +1 -1
  56. package/package.json +2 -2
  57. package/dist/base-D-o2Hv6z.mjs +0 -1
  58. package/dist/computed-DdPJb4_M.mjs +0 -1
  59. package/dist/dev/computed-4hT2jDra.mjs +0 -48
  60. package/dist/dev/computed-4hT2jDra.mjs.map +0 -1
  61. package/dist/dev/ref-Bxwe2Kfo.mjs.map +0 -1
  62. package/dist/dev/router-D6H7HviN.mjs.map +0 -1
  63. package/dist/dev/store-7lzhCASj.mjs.map +0 -1
  64. package/dist/dev/templateRef-C4hJDc4O.mjs.map +0 -1
  65. package/dist/dev/watch-B46crqgs.mjs.map +0 -1
  66. package/dist/ref-CRwjgX_d.mjs +0 -1
  67. package/dist/router-BiJKkvy7.mjs +0 -1
  68. package/dist/store-B9C0AuaO.mjs +0 -1
  69. package/dist/templateRef-DPHQBy6k.mjs +0 -1
  70. package/dist/watch-6_s3_f8q.mjs +0 -1
@@ -0,0 +1 @@
1
+ import{_ as e,h as t,l as n,n as r,r as i}from"./ref-D37CknuD.mjs";import{WEVU_HOOKS_KEY as a}from"@weapp-core/constants";import{getMiniProgramPlatformByRuntimeGlobalKey as o,getMiniProgramRuntimeCapabilities as s,getMiniProgramRuntimeGlobalKey as c,getMiniProgramRuntimeGlobalKeys as l,getMiniProgramRuntimeHostConfigKey as u,resolveMiniProgramPlatform as d,supportsMiniProgramRuntimeCapability as f}from"@weapp-core/shared";function p(n){if(r(n)){let e=n,t=i({get value(){return e.value},set value(e){throw Error(`无法给只读 ref 赋值`)}});return Object.defineProperties(t,{__r_isReadonly:{value:!0,configurable:!0},__r_raw:{value:e,configurable:!0}}),t}return!e(n)||t(n)===0?n:new Proxy(n,{set(){throw Error(`无法在只读对象上设置属性`)},deleteProperty(){throw Error(`无法在只读对象上删除属性`)},defineProperty(){throw Error(`无法在只读对象上定义属性`)},get(e,t,n){return t===`__r_isReadonly`?!0:t===`__r_raw`?e:Reflect.get(e,t,n)}})}function m(e){return p(e)}function h(e){return p(e)}function g(e){return!!(e&&e.__r_isReadonly)}function _(e){return n(e)||g(e)}const v=[`switchTab`,`reLaunch`,`redirectTo`,`navigateTo`,`navigateBack`];function y(){if(!(typeof globalThis>`u`))return globalThis}function b(){var e;let t=y(),n=d((e=import.meta.env)==null?void 0:e.PLATFORM);if(n)return n;for(let e of l())if(t!=null&&t[e])return o(e)}function x(){return s(b())}function S(e){return f(b(),e)}function C(){if(!S(`globalPageStack`))return[];let e=globalThis.getCurrentPages;if(typeof e!=`function`)return[];try{let t=e();return Array.isArray(t)?t:[]}catch(e){return[]}}function w(){let e=y(),t=u(b()),n=e==null?void 0:e[t];return n&&typeof n==`object`?n:void 0}function T(e){var t;let n=y(),r=d(e==null?(t=import.meta.env)==null?void 0:t.PLATFORM:e);if(r){let e=c(r);return n==null?void 0:n[e]}for(let e of l()){let t=n==null?void 0:n[e];if(t)return t}}function E(){if(!S(`globalRouterApi`))return;let e=T();if(!e)return;let t=Object.create(null);for(let n of v){let r=e[n];if(typeof r!=`function`)return;t[n]=(...t)=>r.apply(e,t)}return t}function D(){var e;return(e=T())==null?y():e}let O,k;function A(){return O}function j(e){O=e}function M(){return k}function N(e){k=e}function P(e){if(!O)throw Error(`${e}() 必须在 setup() 的同步阶段调用`);return O}function F(e){return e[a]||(e[a]=Object.create(null)),e[a]}function I(e,t){let n=x().shareTimelineRequiresShareAppMessage?e||t:e,r=[];return n&&r.push(`shareAppMessage`),t&&r.push(`shareTimeline`),r}function L(e,t){let n=[{withShareTicket:!0,menus:t},{menus:t},t.includes(`shareTimeline`)?{withShareTicket:!0}:void 0,t.includes(`shareTimeline`)?{}:void 0,void 0];for(let t of n)try{t===void 0?e():e(t);return}catch(e){}}function R(e,t,n,{single:r=!1}={}){let i=F(e);if(r)i[t]=n;else{var a;((a=i[t])==null?i[t]=[]:a).push(n)}}function z(e,t){var n,r;let i=(r=(n=e).__wevuShareHookBridges)==null?n.__wevuShareHookBridges=Object.create(null):r;if(typeof i[t]==`function`)return;let o=e[t],s=function(...e){var n;let r=this[a],i=r==null?void 0:r[t],s=this.__wevu,c=(n=s==null?void 0:s.proxy)==null?this:n,l;if(typeof i==`function`)try{l=i.apply(c,e)}catch(e){l=void 0}else if(Array.isArray(i))for(let t of i)try{l=t.apply(c,e)}catch(e){}if(l!==void 0)return l;if(typeof o==`function`)return o.apply(this,e)};i[t]=s,e[t]=s}function B(e){var t;if(!S(`pageShareMenu`))return;let n=T();if(!n||typeof n.showShareMenu!=`function`)return;let r=(t=e[a])==null?{}:t,i=typeof r.onShareAppMessage==`function`,o=typeof r.onShareTimeline==`function`;if(!i&&!o)return;let s=I(i,o);s.length&&L(n.showShareMenu.bind(n),s)}function V(e,t,n=[]){var r;let i=e[a];if(!i)return;let o=i[t];if(!o)return;let s=e.__wevu,c=(r=s==null?void 0:s.proxy)==null?e:r;if(Array.isArray(o))for(let e of o)try{e.apply(c,n)}catch(e){}else if(typeof o==`function`)try{o.apply(c,n)}catch(e){}}function H(e,t){var n,r;let i=(r=(n=e).__wevuPageHookBridges)==null?n.__wevuPageHookBridges=Object.create(null):r;if(typeof i[t]==`function`)return;let a=e[t],o=function(...e){if(V(this,t,e),typeof a==`function`)return a.apply(this,e)};i[t]=o,e[t]=o}function U(e,t,n=[]){var r;let i=e[a];if(!i)return;let o=i[t];if(!o)return;let s=e.__wevu,c=(r=s==null?void 0:s.proxy)==null?e:r;if(typeof o==`function`)try{return o.apply(c,n)}catch(e){return}if(Array.isArray(o)){let e;for(let t of o)try{e=t.apply(c,n)}catch(e){}return e}}export{h as S,D as _,B as a,g as b,M as c,N as d,E as f,T as g,x as h,H as i,R as l,C as m,V as n,z as o,w as p,U as r,A as s,P as t,j as u,S as v,m as x,_ as y};
@@ -0,0 +1 @@
1
+ import{B as e,C as t,D as n,E as r,M as i,O as a,S as o,T as s,_ as c,b as l,m as u,r as d,v as f,w as p,x as m,z as h}from"./ref-D37CknuD.mjs";function g(e,t){let r=f(e);p.set(r,``),l(r,r);let i=t==null?void 0:t.shouldIncludeTopKey,a=typeof(t==null?void 0:t.maxDepth)==`number`?Math.max(0,Math.floor(t.maxDepth)):1/0,o=typeof(t==null?void 0:t.maxKeys)==`number`?Math.max(0,Math.floor(t.maxKeys)):1/0,u=new WeakSet,d=[{current:r,path:``,depth:0}],h=0;for(;d.length;){let e=d.pop();if(u.has(e.current)||(u.add(e.current),p.set(e.current,e.path),l(r,e.current),h+=1,h>=o)||e.depth>=a||Array.isArray(e.current))continue;let t=Object.entries(e.current);for(let[a,o]of t){if(e.path===``&&i&&!i(a)||!c(o)||o.__r_skip)continue;let t=f(o);if(s.has(t)||s.set(t,r),n(t,e.current,a),!m.has(t)){let n=e.path?`${e.path}.${a}`:a;p.set(t,n)}l(r,t),d.push({current:t,path:e.path?`${e.path}.${a}`:a,depth:e.depth+1})}}}function _(e){let n=f(e),i=a.get(n);if(!i){p.delete(n);return}for(let e of i)o.delete(e),t.delete(e),p.delete(e),m.delete(e),s.delete(e),r.delete(e);a.delete(n)}function v(e){h(f(e),u)}function y(t){let n,r;typeof t==`function`?(n=t,r=()=>{throw Error(`计算属性是只读的`)}):(n=t.get,r=t.set);let a,o=!0,s,c={get value(){return o&&(a=s(),o=!1),h(c,`value`),a},set value(e){r(e)}};return d(c),s=i(n,{lazy:!0,scheduler:()=>{o||(o=!0,e(c,`value`))}}),c}export{v as i,_ as n,g as r,y as t};
@@ -1,4 +1,4 @@
1
- import { _ as getTargetType, l as isReactive, n as isRef, r as markAsRef, v as isObject } from "./ref-Bxwe2Kfo.mjs";
1
+ import { _ as isObject, h as getTargetType, l as isReactive, n as isRef, r as markAsRef } from "./ref-DRZC3Kc5.mjs";
2
2
  import { WEVU_HOOKS_KEY } from "@weapp-core/constants";
3
3
  import { getMiniProgramPlatformByRuntimeGlobalKey, getMiniProgramRuntimeCapabilities, getMiniProgramRuntimeGlobalKey, getMiniProgramRuntimeGlobalKeys, getMiniProgramRuntimeHostConfigKey, resolveMiniProgramPlatform, supportsMiniProgramRuntimeCapability } from "@weapp-core/shared";
4
4
 
@@ -299,4 +299,4 @@ function callHookReturn(target, name, args = []) {
299
299
 
300
300
  //#endregion
301
301
  export { shallowReadonly as S, getScopedSlotHostGlobalObject as _, ensurePageShareMenusOnSetup as a, isReadonly as b, getCurrentSetupContext as c, setCurrentSetupContext as d, getCurrentMiniProgramGlobalRouter as f, getMiniProgramGlobalObject as g, getCurrentMiniProgramRuntimeCapabilities as h, ensurePageHookOnInstance as i, pushHook as l, getCurrentMiniProgramPages as m, callHookList as n, ensureSinglePageHookOnInstance as o, getCurrentMiniProgramHostConfig as p, callHookReturn as r, getCurrentInstance as s, assertInSetup as t, setCurrentInstance as u, supportsCurrentMiniProgramRuntimeCapability as v, readonly as x, isProxy as y };
302
- //# sourceMappingURL=base-ii6cqKIl.mjs.map
302
+ //# sourceMappingURL=base-CYkvI7w8.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"base-ii6cqKIl.mjs","names":[],"sources":["../../src/reactivity/readonly.ts","../../src/runtime/platform.ts","../../src/runtime/hooks/base.ts"],"sourcesContent":["import type { Ref } from './ref'\nimport { isObject, isReactive } from './reactive'\nimport { getTargetType, ReactiveFlags, TargetType } from './reactive/shared'\nimport { isRef, markAsRef } from './ref'\n\nfunction createReadonlyWrapper(target: any): any {\n if (isRef(target)) {\n const source = target\n const readonlyRef = markAsRef({\n get value() {\n return source.value\n },\n set value(_v: any) {\n throw new Error('无法给只读 ref 赋值')\n },\n })\n Object.defineProperties(readonlyRef, {\n [ReactiveFlags.IS_READONLY]: {\n value: true,\n configurable: true,\n },\n [ReactiveFlags.RAW]: {\n value: source,\n configurable: true,\n },\n })\n return readonlyRef\n }\n if (!isObject(target)) {\n return target\n }\n if (getTargetType(target as object) === TargetType.INVALID) {\n return target\n }\n return new Proxy(target as object, {\n set() {\n throw new Error('无法在只读对象上设置属性')\n },\n deleteProperty() {\n throw new Error('无法在只读对象上删除属性')\n },\n defineProperty() {\n throw new Error('无法在只读对象上定义属性')\n },\n get(target, key, receiver) {\n if (key === ReactiveFlags.IS_READONLY) {\n return true\n }\n if (key === ReactiveFlags.RAW) {\n return target\n }\n const res = Reflect.get(target, key, receiver)\n // 仅处理顶层属性,嵌套对象维持原引用以避免深拷贝和额外代理\n return res\n },\n })\n}\n\n/**\n * readonly 会为对象/数组创建一个“浅层”只读代理,并为 Ref 创建只读包装。\n * 选择浅层而非深层递归,是为了在小程序环境中保持实现和运行时开销最小,\n * 仅阻止直接属性写入/删除,嵌套对象仍按原样透传。\n */\nexport function readonly<T extends object>(target: T): T\nexport function readonly<T>(target: Ref<T>): Readonly<Ref<T>>\nexport function readonly(target: any): any {\n return createReadonlyWrapper(target)\n}\n\n/**\n * 与 Vue 3 的 `shallowReadonly()` 对齐。\n *\n * 当前 wevu 的只读语义本身就是浅层只读,因此这里直接复用同一套实现,\n * 让依赖 Vue 兼容 API 的代码可以无缝迁移。\n */\nexport function shallowReadonly<T extends object>(target: T): Readonly<T>\nexport function shallowReadonly<T>(target: Ref<T>): Readonly<Ref<T>>\nexport function shallowReadonly(target: any): any {\n return createReadonlyWrapper(target)\n}\n\n/**\n * 判断值是否为只读代理或只读 ref 包装。\n */\nexport function isReadonly(value: unknown): boolean {\n return Boolean(value && (value as any)[ReactiveFlags.IS_READONLY])\n}\n\n/**\n * 判断值是否为响应式代理或只读代理。\n */\nexport function isProxy(value: unknown): boolean {\n return isReactive(value) || isReadonly(value)\n}\n","import type { MiniProgramRuntimeCapabilities, MiniProgramRuntimeCapabilityName } from '@weapp-core/shared'\nimport {\n getMiniProgramPlatformByRuntimeGlobalKey,\n getMiniProgramRuntimeCapabilities,\n getMiniProgramRuntimeGlobalKey,\n getMiniProgramRuntimeGlobalKeys,\n getMiniProgramRuntimeHostConfigKey,\n resolveMiniProgramPlatform,\n supportsMiniProgramRuntimeCapability,\n} from '@weapp-core/shared'\n\ntype MiniProgramGlobal = Record<string, any>\ntype MiniProgramHostConfig = Record<string, any>\ntype MiniProgramGlobalRouterMethodName = 'switchTab' | 'reLaunch' | 'redirectTo' | 'navigateTo' | 'navigateBack'\ntype MiniProgramGlobalRouter = Record<MiniProgramGlobalRouterMethodName, (...args: any[]) => any>\ntype ImportMetaWithEnv = ImportMeta & {\n env?: {\n PLATFORM?: string\n }\n}\nconst MINI_PROGRAM_GLOBAL_ROUTER_METHODS: readonly MiniProgramGlobalRouterMethodName[] = [\n 'switchTab',\n 'reLaunch',\n 'redirectTo',\n 'navigateTo',\n 'navigateBack',\n]\n\nfunction getGlobalRuntime() {\n if (typeof globalThis === 'undefined') {\n return undefined\n }\n return globalThis as MiniProgramGlobal\n}\n\nexport function resolveCurrentMiniProgramPlatform() {\n const globalRuntime = getGlobalRuntime()\n const compiledPlatform = (import.meta as ImportMetaWithEnv).env?.PLATFORM\n\n // 优先命中编译期平台分支,便于构建阶段做 dead-code elimination。\n const resolvedCompiledPlatform = resolveMiniProgramPlatform(compiledPlatform)\n if (resolvedCompiledPlatform) {\n return resolvedCompiledPlatform\n }\n\n for (const globalKey of getMiniProgramRuntimeGlobalKeys()) {\n if (globalRuntime?.[globalKey]) {\n return getMiniProgramPlatformByRuntimeGlobalKey(globalKey)\n }\n }\n\n return undefined\n}\n\nexport function getCurrentMiniProgramRuntimeCapabilities(): MiniProgramRuntimeCapabilities {\n return getMiniProgramRuntimeCapabilities(resolveCurrentMiniProgramPlatform())\n}\n\nexport function supportsCurrentMiniProgramRuntimeCapability(capabilityName: MiniProgramRuntimeCapabilityName): boolean {\n return supportsMiniProgramRuntimeCapability(resolveCurrentMiniProgramPlatform(), capabilityName)\n}\n\nexport function getCurrentMiniProgramPages(): Array<Record<string, any>> {\n if (!supportsCurrentMiniProgramRuntimeCapability('globalPageStack')) {\n return []\n }\n const getCurrentPagesFn = (globalThis as Record<string, unknown>).getCurrentPages\n if (typeof getCurrentPagesFn !== 'function') {\n return []\n }\n try {\n const pages = getCurrentPagesFn()\n return Array.isArray(pages) ? pages as Array<Record<string, any>> : []\n }\n catch {\n return []\n }\n}\n\nexport function getCurrentMiniProgramHostConfig(): MiniProgramHostConfig | undefined {\n const globalRuntime = getGlobalRuntime()\n const hostConfigKey = getMiniProgramRuntimeHostConfigKey(resolveCurrentMiniProgramPlatform())\n const hostConfig = globalRuntime?.[hostConfigKey]\n return hostConfig && typeof hostConfig === 'object' ? hostConfig as MiniProgramHostConfig : undefined\n}\n\nexport function getMiniProgramGlobalObject(platformInput?: string): MiniProgramGlobal | undefined {\n const globalRuntime = getGlobalRuntime()\n const compiledPlatform = platformInput ?? (import.meta as ImportMetaWithEnv).env?.PLATFORM\n const resolvedCompiledPlatform = resolveMiniProgramPlatform(compiledPlatform)\n\n if (resolvedCompiledPlatform) {\n const globalKey = getMiniProgramRuntimeGlobalKey(resolvedCompiledPlatform)\n return globalRuntime?.[globalKey] as MiniProgramGlobal | undefined\n }\n\n for (const globalKey of getMiniProgramRuntimeGlobalKeys()) {\n const candidate = globalRuntime?.[globalKey]\n if (candidate) {\n return candidate as MiniProgramGlobal\n }\n }\n return undefined\n}\n\nexport function getCurrentMiniProgramGlobalRouter(): MiniProgramGlobalRouter | undefined {\n if (!supportsCurrentMiniProgramRuntimeCapability('globalRouterApi')) {\n return undefined\n }\n const miniProgramGlobal = getMiniProgramGlobalObject()\n if (!miniProgramGlobal) {\n return undefined\n }\n const routerMethods = Object.create(null) as Partial<MiniProgramGlobalRouter>\n for (const methodName of MINI_PROGRAM_GLOBAL_ROUTER_METHODS) {\n const handler = miniProgramGlobal[methodName]\n if (typeof handler !== 'function') {\n return undefined\n }\n routerMethods[methodName] = (...args: any[]) => handler.apply(miniProgramGlobal, args)\n }\n return routerMethods as MiniProgramGlobalRouter\n}\n\nexport function getScopedSlotHostGlobalObject(): MiniProgramGlobal | undefined {\n return getMiniProgramGlobalObject() ?? getGlobalRuntime()\n}\n","import type { InternalRuntimeState } from '../types'\nimport { WEVU_HOOKS_KEY } from '@weapp-core/constants'\nimport { getCurrentMiniProgramRuntimeCapabilities, getMiniProgramGlobalObject, supportsCurrentMiniProgramRuntimeCapability } from '../platform'\n\n// 仅供同步 setup() 调用期间使用的当前实例引用\nlet __currentInstance: InternalRuntimeState | undefined\nlet __currentSetupContext: any | undefined\n\nexport function getCurrentInstance<T extends InternalRuntimeState = InternalRuntimeState>(): T | undefined {\n return __currentInstance as T | undefined\n}\n\n/**\n * 设置当前运行时实例(框架内部使用)。\n * @internal\n */\nexport function setCurrentInstance(inst: InternalRuntimeState | undefined) {\n __currentInstance = inst\n}\n\nexport function getCurrentSetupContext<T = any>(): T | undefined {\n return __currentSetupContext as T | undefined\n}\n\n/**\n * 设置当前 setup 上下文(框架内部使用)。\n * @internal\n */\nexport function setCurrentSetupContext(ctx: any | undefined) {\n __currentSetupContext = ctx\n}\n\nexport function assertInSetup(name: string): InternalRuntimeState {\n if (!__currentInstance) {\n throw new Error(`${name}() 必须在 setup() 的同步阶段调用`)\n }\n return __currentInstance\n}\n\nfunction ensureHookBucket(target: InternalRuntimeState): Record<string, any> {\n if (!target[WEVU_HOOKS_KEY]) {\n target[WEVU_HOOKS_KEY] = Object.create(null)\n }\n return target[WEVU_HOOKS_KEY] as Record<string, any>\n}\n\ntype ShareMenuName = 'shareAppMessage' | 'shareTimeline'\n\nfunction buildShareMenus(\n enableOnShareAppMessage: boolean,\n enableOnShareTimeline: boolean,\n): ShareMenuName[] {\n const runtimeCapabilities = getCurrentMiniProgramRuntimeCapabilities()\n const shouldShowShareAppMessage = runtimeCapabilities.shareTimelineRequiresShareAppMessage\n ? (enableOnShareAppMessage || enableOnShareTimeline)\n : enableOnShareAppMessage\n\n const menus: ShareMenuName[] = []\n if (shouldShowShareAppMessage) {\n menus.push('shareAppMessage')\n }\n if (enableOnShareTimeline) {\n menus.push('shareTimeline')\n }\n return menus\n}\n\nfunction tryShowShareMenu(showShareMenu: (...args: any[]) => unknown, menus: ShareMenuName[]) {\n const payloads = [\n { withShareTicket: true, menus },\n { menus },\n menus.includes('shareTimeline') ? { withShareTicket: true } : undefined,\n menus.includes('shareTimeline') ? {} : undefined,\n undefined,\n ]\n\n for (const payload of payloads) {\n try {\n if (payload === undefined) {\n showShareMenu()\n }\n else {\n showShareMenu(payload as any)\n }\n return\n }\n catch {\n // 继续尝试更保守的 payload,兼容不同宿主的 showShareMenu 参数形态。\n }\n }\n}\n\nexport function pushHook(\n target: InternalRuntimeState,\n name: string,\n handler: (...args: any[]) => any,\n { single = false } = {},\n) {\n const bucket = ensureHookBucket(target)\n if (single) {\n bucket[name] = handler\n }\n else {\n const list: Array<(...args: any[]) => any> = bucket[name] ?? (bucket[name] = [])\n list.push(handler)\n }\n}\n\nexport function ensureSinglePageHookOnInstance(target: InternalRuntimeState, name: 'onShareAppMessage' | 'onShareTimeline' | 'onAddToFavorites') {\n const bridges = ((target as any).__wevuShareHookBridges ??= Object.create(null)) as Record<string, (...args: any[]) => any>\n if (typeof bridges[name] === 'function') {\n return\n }\n\n const original = (target as any)[name]\n const bridge = function onWevuShareHookBridge(this: InternalRuntimeState, ...args: any[]) {\n const hooks = this[WEVU_HOOKS_KEY] as Record<string, any> | undefined\n const entry = hooks?.[name]\n const runtime = this.__wevu\n const ctx = runtime?.proxy ?? this\n let ret: any\n\n if (typeof entry === 'function') {\n try {\n ret = entry.apply(ctx, args)\n }\n catch {\n ret = undefined\n }\n }\n else if (Array.isArray(entry)) {\n for (const fn of entry) {\n try {\n ret = fn.apply(ctx, args)\n }\n catch {\n // 忽略单个 hook 抛出的异常,继续执行后续 hook\n }\n }\n }\n\n if (ret !== undefined) {\n return ret\n }\n if (typeof original === 'function') {\n return original.apply(this, args)\n }\n return undefined\n }\n\n bridges[name] = bridge\n ;(target as any)[name] = bridge\n}\n\nexport function ensurePageShareMenusOnSetup(target: InternalRuntimeState) {\n if (!supportsCurrentMiniProgramRuntimeCapability('pageShareMenu')) {\n return\n }\n const miniProgramGlobal = getMiniProgramGlobalObject()\n if (!miniProgramGlobal || typeof miniProgramGlobal.showShareMenu !== 'function') {\n return\n }\n\n const hooks = (target[WEVU_HOOKS_KEY] ?? {}) as Record<string, any>\n const hasShareAppMessage = typeof hooks.onShareAppMessage === 'function'\n const hasShareTimeline = typeof hooks.onShareTimeline === 'function'\n\n if (!hasShareAppMessage && !hasShareTimeline) {\n return\n }\n\n const menus = buildShareMenus(hasShareAppMessage, hasShareTimeline)\n if (!menus.length) {\n return\n }\n\n tryShowShareMenu(miniProgramGlobal.showShareMenu.bind(miniProgramGlobal), menus)\n}\n\n/**\n * 调用批量 hook(框架内部调度入口)。\n * @internal\n */\nexport function callHookList(target: InternalRuntimeState, name: string, args: any[] = []) {\n const hooks = target[WEVU_HOOKS_KEY]\n if (!hooks) {\n return\n }\n const list = hooks[name]\n if (!list) {\n return\n }\n const runtime = target.__wevu\n const ctx = runtime?.proxy ?? target\n if (Array.isArray(list)) {\n for (const fn of list) {\n try {\n fn.apply(ctx, args)\n }\n catch {\n // 忽略单个 hook 抛出的异常,防止阻塞其他监听\n }\n }\n }\n else if (typeof list === 'function') {\n try {\n list.apply(ctx, args)\n }\n catch {\n // 忽略单个 hook 抛出的异常,防止阻塞其他监听\n }\n }\n}\n\nexport function ensurePageHookOnInstance(target: InternalRuntimeState, name: 'onPageScroll') {\n const bridges = ((target as any).__wevuPageHookBridges ??= Object.create(null)) as Record<string, (...args: any[]) => any>\n if (typeof bridges[name] === 'function') {\n return\n }\n\n const original = (target as any)[name]\n const bridge = function onWevuPageHookBridge(this: InternalRuntimeState, ...args: any[]) {\n callHookList(this, name, args)\n if (typeof original === 'function') {\n return original.apply(this, args)\n }\n return undefined\n }\n\n bridges[name] = bridge\n ;(target as any)[name] = bridge\n}\n\n/**\n * 调用返回值型 hook(框架内部调度入口)。\n * @internal\n */\nexport function callHookReturn(target: InternalRuntimeState, name: string, args: any[] = []) {\n const hooks = target[WEVU_HOOKS_KEY]\n if (!hooks) {\n return undefined\n }\n const entry = hooks[name]\n if (!entry) {\n return undefined\n }\n const runtime = target.__wevu\n const ctx = runtime?.proxy ?? target\n if (typeof entry === 'function') {\n try {\n return entry.apply(ctx, args)\n }\n catch {\n return undefined\n }\n }\n if (Array.isArray(entry)) {\n let out: any\n for (const fn of entry) {\n try {\n out = fn.apply(ctx, args)\n }\n catch {\n // 忽略单个 hook 抛出的异常,继续执行后续 hook\n }\n }\n return out\n }\n return undefined\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"base-CYkvI7w8.mjs","names":[],"sources":["../../src/reactivity/readonly.ts","../../src/runtime/platform.ts","../../src/runtime/hooks/base.ts"],"sourcesContent":["import type { Ref } from './ref'\nimport { isObject, isReactive } from './reactive'\nimport { getTargetType, ReactiveFlags, TargetType } from './reactive/shared'\nimport { isRef, markAsRef } from './ref'\n\nfunction createReadonlyWrapper(target: any): any {\n if (isRef(target)) {\n const source = target\n const readonlyRef = markAsRef({\n get value() {\n return source.value\n },\n set value(_v: any) {\n throw new Error('无法给只读 ref 赋值')\n },\n })\n Object.defineProperties(readonlyRef, {\n [ReactiveFlags.IS_READONLY]: {\n value: true,\n configurable: true,\n },\n [ReactiveFlags.RAW]: {\n value: source,\n configurable: true,\n },\n })\n return readonlyRef\n }\n if (!isObject(target)) {\n return target\n }\n if (getTargetType(target as object) === TargetType.INVALID) {\n return target\n }\n return new Proxy(target as object, {\n set() {\n throw new Error('无法在只读对象上设置属性')\n },\n deleteProperty() {\n throw new Error('无法在只读对象上删除属性')\n },\n defineProperty() {\n throw new Error('无法在只读对象上定义属性')\n },\n get(target, key, receiver) {\n if (key === ReactiveFlags.IS_READONLY) {\n return true\n }\n if (key === ReactiveFlags.RAW) {\n return target\n }\n const res = Reflect.get(target, key, receiver)\n // 仅处理顶层属性,嵌套对象维持原引用以避免深拷贝和额外代理\n return res\n },\n })\n}\n\n/**\n * readonly 会为对象/数组创建一个“浅层”只读代理,并为 Ref 创建只读包装。\n * 选择浅层而非深层递归,是为了在小程序环境中保持实现和运行时开销最小,\n * 仅阻止直接属性写入/删除,嵌套对象仍按原样透传。\n */\nexport function readonly<T extends object>(target: T): T\nexport function readonly<T>(target: Ref<T>): Readonly<Ref<T>>\nexport function readonly(target: any): any {\n return createReadonlyWrapper(target)\n}\n\n/**\n * 与 Vue 3 的 `shallowReadonly()` 对齐。\n *\n * 当前 wevu 的只读语义本身就是浅层只读,因此这里直接复用同一套实现,\n * 让依赖 Vue 兼容 API 的代码可以无缝迁移。\n */\nexport function shallowReadonly<T extends object>(target: T): Readonly<T>\nexport function shallowReadonly<T>(target: Ref<T>): Readonly<Ref<T>>\nexport function shallowReadonly(target: any): any {\n return createReadonlyWrapper(target)\n}\n\n/**\n * 判断值是否为只读代理或只读 ref 包装。\n */\nexport function isReadonly(value: unknown): boolean {\n return Boolean(value && (value as any)[ReactiveFlags.IS_READONLY])\n}\n\n/**\n * 判断值是否为响应式代理或只读代理。\n */\nexport function isProxy(value: unknown): boolean {\n return isReactive(value) || isReadonly(value)\n}\n","import type { MiniProgramRuntimeCapabilities, MiniProgramRuntimeCapabilityName } from '@weapp-core/shared'\nimport {\n getMiniProgramPlatformByRuntimeGlobalKey,\n getMiniProgramRuntimeCapabilities,\n getMiniProgramRuntimeGlobalKey,\n getMiniProgramRuntimeGlobalKeys,\n getMiniProgramRuntimeHostConfigKey,\n resolveMiniProgramPlatform,\n supportsMiniProgramRuntimeCapability,\n} from '@weapp-core/shared'\n\ntype MiniProgramGlobal = Record<string, any>\ntype MiniProgramHostConfig = Record<string, any>\ntype MiniProgramGlobalRouterMethodName = 'switchTab' | 'reLaunch' | 'redirectTo' | 'navigateTo' | 'navigateBack'\ntype MiniProgramGlobalRouter = Record<MiniProgramGlobalRouterMethodName, (...args: any[]) => any>\ntype ImportMetaWithEnv = ImportMeta & {\n env?: {\n PLATFORM?: string\n }\n}\nconst MINI_PROGRAM_GLOBAL_ROUTER_METHODS: readonly MiniProgramGlobalRouterMethodName[] = [\n 'switchTab',\n 'reLaunch',\n 'redirectTo',\n 'navigateTo',\n 'navigateBack',\n]\n\nfunction getGlobalRuntime() {\n if (typeof globalThis === 'undefined') {\n return undefined\n }\n return globalThis as MiniProgramGlobal\n}\n\nexport function resolveCurrentMiniProgramPlatform() {\n const globalRuntime = getGlobalRuntime()\n const compiledPlatform = (import.meta as ImportMetaWithEnv).env?.PLATFORM\n\n // 优先命中编译期平台分支,便于构建阶段做 dead-code elimination。\n const resolvedCompiledPlatform = resolveMiniProgramPlatform(compiledPlatform)\n if (resolvedCompiledPlatform) {\n return resolvedCompiledPlatform\n }\n\n for (const globalKey of getMiniProgramRuntimeGlobalKeys()) {\n if (globalRuntime?.[globalKey]) {\n return getMiniProgramPlatformByRuntimeGlobalKey(globalKey)\n }\n }\n\n return undefined\n}\n\nexport function getCurrentMiniProgramRuntimeCapabilities(): MiniProgramRuntimeCapabilities {\n return getMiniProgramRuntimeCapabilities(resolveCurrentMiniProgramPlatform())\n}\n\nexport function supportsCurrentMiniProgramRuntimeCapability(capabilityName: MiniProgramRuntimeCapabilityName): boolean {\n return supportsMiniProgramRuntimeCapability(resolveCurrentMiniProgramPlatform(), capabilityName)\n}\n\nexport function getCurrentMiniProgramPages(): Array<Record<string, any>> {\n if (!supportsCurrentMiniProgramRuntimeCapability('globalPageStack')) {\n return []\n }\n const getCurrentPagesFn = (globalThis as Record<string, unknown>).getCurrentPages\n if (typeof getCurrentPagesFn !== 'function') {\n return []\n }\n try {\n const pages = getCurrentPagesFn()\n return Array.isArray(pages) ? pages as Array<Record<string, any>> : []\n }\n catch {\n return []\n }\n}\n\nexport function getCurrentMiniProgramHostConfig(): MiniProgramHostConfig | undefined {\n const globalRuntime = getGlobalRuntime()\n const hostConfigKey = getMiniProgramRuntimeHostConfigKey(resolveCurrentMiniProgramPlatform())\n const hostConfig = globalRuntime?.[hostConfigKey]\n return hostConfig && typeof hostConfig === 'object' ? hostConfig as MiniProgramHostConfig : undefined\n}\n\nexport function getMiniProgramGlobalObject(platformInput?: string): MiniProgramGlobal | undefined {\n const globalRuntime = getGlobalRuntime()\n const compiledPlatform = platformInput ?? (import.meta as ImportMetaWithEnv).env?.PLATFORM\n const resolvedCompiledPlatform = resolveMiniProgramPlatform(compiledPlatform)\n\n if (resolvedCompiledPlatform) {\n const globalKey = getMiniProgramRuntimeGlobalKey(resolvedCompiledPlatform)\n return globalRuntime?.[globalKey] as MiniProgramGlobal | undefined\n }\n\n for (const globalKey of getMiniProgramRuntimeGlobalKeys()) {\n const candidate = globalRuntime?.[globalKey]\n if (candidate) {\n return candidate as MiniProgramGlobal\n }\n }\n return undefined\n}\n\nexport function getCurrentMiniProgramGlobalRouter(): MiniProgramGlobalRouter | undefined {\n if (!supportsCurrentMiniProgramRuntimeCapability('globalRouterApi')) {\n return undefined\n }\n const miniProgramGlobal = getMiniProgramGlobalObject()\n if (!miniProgramGlobal) {\n return undefined\n }\n const routerMethods = Object.create(null) as Partial<MiniProgramGlobalRouter>\n for (const methodName of MINI_PROGRAM_GLOBAL_ROUTER_METHODS) {\n const handler = miniProgramGlobal[methodName]\n if (typeof handler !== 'function') {\n return undefined\n }\n routerMethods[methodName] = (...args: any[]) => handler.apply(miniProgramGlobal, args)\n }\n return routerMethods as MiniProgramGlobalRouter\n}\n\nexport function getScopedSlotHostGlobalObject(): MiniProgramGlobal | undefined {\n return getMiniProgramGlobalObject() ?? getGlobalRuntime()\n}\n","import type { InternalRuntimeState } from '../types'\nimport { WEVU_HOOKS_KEY } from '@weapp-core/constants'\nimport { getCurrentMiniProgramRuntimeCapabilities, getMiniProgramGlobalObject, supportsCurrentMiniProgramRuntimeCapability } from '../platform'\n\n// 仅供同步 setup() 调用期间使用的当前实例引用\nlet __currentInstance: InternalRuntimeState | undefined\nlet __currentSetupContext: any | undefined\n\nexport function getCurrentInstance<T extends InternalRuntimeState = InternalRuntimeState>(): T | undefined {\n return __currentInstance as T | undefined\n}\n\n/**\n * 设置当前运行时实例(框架内部使用)。\n * @internal\n */\nexport function setCurrentInstance(inst: InternalRuntimeState | undefined) {\n __currentInstance = inst\n}\n\nexport function getCurrentSetupContext<T = any>(): T | undefined {\n return __currentSetupContext as T | undefined\n}\n\n/**\n * 设置当前 setup 上下文(框架内部使用)。\n * @internal\n */\nexport function setCurrentSetupContext(ctx: any | undefined) {\n __currentSetupContext = ctx\n}\n\nexport function assertInSetup(name: string): InternalRuntimeState {\n if (!__currentInstance) {\n throw new Error(`${name}() 必须在 setup() 的同步阶段调用`)\n }\n return __currentInstance\n}\n\nfunction ensureHookBucket(target: InternalRuntimeState): Record<string, any> {\n if (!target[WEVU_HOOKS_KEY]) {\n target[WEVU_HOOKS_KEY] = Object.create(null)\n }\n return target[WEVU_HOOKS_KEY] as Record<string, any>\n}\n\ntype ShareMenuName = 'shareAppMessage' | 'shareTimeline'\n\nfunction buildShareMenus(\n enableOnShareAppMessage: boolean,\n enableOnShareTimeline: boolean,\n): ShareMenuName[] {\n const runtimeCapabilities = getCurrentMiniProgramRuntimeCapabilities()\n const shouldShowShareAppMessage = runtimeCapabilities.shareTimelineRequiresShareAppMessage\n ? (enableOnShareAppMessage || enableOnShareTimeline)\n : enableOnShareAppMessage\n\n const menus: ShareMenuName[] = []\n if (shouldShowShareAppMessage) {\n menus.push('shareAppMessage')\n }\n if (enableOnShareTimeline) {\n menus.push('shareTimeline')\n }\n return menus\n}\n\nfunction tryShowShareMenu(showShareMenu: (...args: any[]) => unknown, menus: ShareMenuName[]) {\n const payloads = [\n { withShareTicket: true, menus },\n { menus },\n menus.includes('shareTimeline') ? { withShareTicket: true } : undefined,\n menus.includes('shareTimeline') ? {} : undefined,\n undefined,\n ]\n\n for (const payload of payloads) {\n try {\n if (payload === undefined) {\n showShareMenu()\n }\n else {\n showShareMenu(payload as any)\n }\n return\n }\n catch {\n // 继续尝试更保守的 payload,兼容不同宿主的 showShareMenu 参数形态。\n }\n }\n}\n\nexport function pushHook(\n target: InternalRuntimeState,\n name: string,\n handler: (...args: any[]) => any,\n { single = false } = {},\n) {\n const bucket = ensureHookBucket(target)\n if (single) {\n bucket[name] = handler\n }\n else {\n const list: Array<(...args: any[]) => any> = bucket[name] ?? (bucket[name] = [])\n list.push(handler)\n }\n}\n\nexport function ensureSinglePageHookOnInstance(target: InternalRuntimeState, name: 'onShareAppMessage' | 'onShareTimeline' | 'onAddToFavorites') {\n const bridges = ((target as any).__wevuShareHookBridges ??= Object.create(null)) as Record<string, (...args: any[]) => any>\n if (typeof bridges[name] === 'function') {\n return\n }\n\n const original = (target as any)[name]\n const bridge = function onWevuShareHookBridge(this: InternalRuntimeState, ...args: any[]) {\n const hooks = this[WEVU_HOOKS_KEY] as Record<string, any> | undefined\n const entry = hooks?.[name]\n const runtime = this.__wevu\n const ctx = runtime?.proxy ?? this\n let ret: any\n\n if (typeof entry === 'function') {\n try {\n ret = entry.apply(ctx, args)\n }\n catch {\n ret = undefined\n }\n }\n else if (Array.isArray(entry)) {\n for (const fn of entry) {\n try {\n ret = fn.apply(ctx, args)\n }\n catch {\n // 忽略单个 hook 抛出的异常,继续执行后续 hook\n }\n }\n }\n\n if (ret !== undefined) {\n return ret\n }\n if (typeof original === 'function') {\n return original.apply(this, args)\n }\n return undefined\n }\n\n bridges[name] = bridge\n ;(target as any)[name] = bridge\n}\n\nexport function ensurePageShareMenusOnSetup(target: InternalRuntimeState) {\n if (!supportsCurrentMiniProgramRuntimeCapability('pageShareMenu')) {\n return\n }\n const miniProgramGlobal = getMiniProgramGlobalObject()\n if (!miniProgramGlobal || typeof miniProgramGlobal.showShareMenu !== 'function') {\n return\n }\n\n const hooks = (target[WEVU_HOOKS_KEY] ?? {}) as Record<string, any>\n const hasShareAppMessage = typeof hooks.onShareAppMessage === 'function'\n const hasShareTimeline = typeof hooks.onShareTimeline === 'function'\n\n if (!hasShareAppMessage && !hasShareTimeline) {\n return\n }\n\n const menus = buildShareMenus(hasShareAppMessage, hasShareTimeline)\n if (!menus.length) {\n return\n }\n\n tryShowShareMenu(miniProgramGlobal.showShareMenu.bind(miniProgramGlobal), menus)\n}\n\n/**\n * 调用批量 hook(框架内部调度入口)。\n * @internal\n */\nexport function callHookList(target: InternalRuntimeState, name: string, args: any[] = []) {\n const hooks = target[WEVU_HOOKS_KEY]\n if (!hooks) {\n return\n }\n const list = hooks[name]\n if (!list) {\n return\n }\n const runtime = target.__wevu\n const ctx = runtime?.proxy ?? target\n if (Array.isArray(list)) {\n for (const fn of list) {\n try {\n fn.apply(ctx, args)\n }\n catch {\n // 忽略单个 hook 抛出的异常,防止阻塞其他监听\n }\n }\n }\n else if (typeof list === 'function') {\n try {\n list.apply(ctx, args)\n }\n catch {\n // 忽略单个 hook 抛出的异常,防止阻塞其他监听\n }\n }\n}\n\nexport function ensurePageHookOnInstance(target: InternalRuntimeState, name: 'onPageScroll') {\n const bridges = ((target as any).__wevuPageHookBridges ??= Object.create(null)) as Record<string, (...args: any[]) => any>\n if (typeof bridges[name] === 'function') {\n return\n }\n\n const original = (target as any)[name]\n const bridge = function onWevuPageHookBridge(this: InternalRuntimeState, ...args: any[]) {\n callHookList(this, name, args)\n if (typeof original === 'function') {\n return original.apply(this, args)\n }\n return undefined\n }\n\n bridges[name] = bridge\n ;(target as any)[name] = bridge\n}\n\n/**\n * 调用返回值型 hook(框架内部调度入口)。\n * @internal\n */\nexport function callHookReturn(target: InternalRuntimeState, name: string, args: any[] = []) {\n const hooks = target[WEVU_HOOKS_KEY]\n if (!hooks) {\n return undefined\n }\n const entry = hooks[name]\n if (!entry) {\n return undefined\n }\n const runtime = target.__wevu\n const ctx = runtime?.proxy ?? target\n if (typeof entry === 'function') {\n try {\n return entry.apply(ctx, args)\n }\n catch {\n return undefined\n }\n }\n if (Array.isArray(entry)) {\n let out: any\n for (const fn of entry) {\n try {\n out = fn.apply(ctx, args)\n }\n catch {\n // 忽略单个 hook 抛出的异常,继续执行后续 hook\n }\n }\n return out\n }\n return undefined\n}\n"],"mappings":"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"}
@@ -0,0 +1,128 @@
1
+ import { B as trigger, C as rawParentsMap, D as recordParentLink, E as rawVersionMap, M as effect, O as rootPatchNodesMap, S as rawParentMap, T as rawRootMap, _ as isObject, b as indexPatchNode, m as VERSION_KEY, r as markAsRef, v as toRaw, w as rawPathMap, x as rawMultiParentSet, z as track } from "./ref-DRZC3Kc5.mjs";
2
+
3
+ //#region src/reactivity/reactive/patch.ts
4
+ /**
5
+ * 预链接响应式树结构,供运行时差量路径追踪使用。
6
+ * @internal
7
+ */
8
+ function prelinkReactiveTree(root, options) {
9
+ const rootRaw = toRaw(root);
10
+ rawPathMap.set(rootRaw, "");
11
+ indexPatchNode(rootRaw, rootRaw);
12
+ const shouldIncludeTopKey = options === null || options === void 0 ? void 0 : options.shouldIncludeTopKey;
13
+ const maxDepth = typeof (options === null || options === void 0 ? void 0 : options.maxDepth) === "number" ? Math.max(0, Math.floor(options.maxDepth)) : Number.POSITIVE_INFINITY;
14
+ const maxKeys = typeof (options === null || options === void 0 ? void 0 : options.maxKeys) === "number" ? Math.max(0, Math.floor(options.maxKeys)) : Number.POSITIVE_INFINITY;
15
+ const visited = /* @__PURE__ */ new WeakSet();
16
+ const stack = [{
17
+ current: rootRaw,
18
+ path: "",
19
+ depth: 0
20
+ }];
21
+ let indexed = 0;
22
+ while (stack.length) {
23
+ const node = stack.pop();
24
+ if (visited.has(node.current)) continue;
25
+ visited.add(node.current);
26
+ rawPathMap.set(node.current, node.path);
27
+ indexPatchNode(rootRaw, node.current);
28
+ indexed += 1;
29
+ if (indexed >= maxKeys) continue;
30
+ if (node.depth >= maxDepth) continue;
31
+ if (Array.isArray(node.current)) continue;
32
+ const entries = Object.entries(node.current);
33
+ for (const [key, value] of entries) {
34
+ if (node.path === "" && shouldIncludeTopKey && !shouldIncludeTopKey(key)) continue;
35
+ if (!isObject(value)) continue;
36
+ if (value["__r_skip"]) continue;
37
+ const childRaw = toRaw(value);
38
+ if (!rawRootMap.has(childRaw)) rawRootMap.set(childRaw, rootRaw);
39
+ recordParentLink(childRaw, node.current, key);
40
+ if (!rawMultiParentSet.has(childRaw)) {
41
+ const childPath = node.path ? `${node.path}.${key}` : key;
42
+ rawPathMap.set(childRaw, childPath);
43
+ }
44
+ indexPatchNode(rootRaw, childRaw);
45
+ stack.push({
46
+ current: childRaw,
47
+ path: node.path ? `${node.path}.${key}` : key,
48
+ depth: node.depth + 1
49
+ });
50
+ }
51
+ }
52
+ }
53
+ /**
54
+ * 清理预链接阶段建立的路径与父子索引。
55
+ * @internal
56
+ */
57
+ function clearPatchIndices(root) {
58
+ const rootRaw = toRaw(root);
59
+ const nodes = rootPatchNodesMap.get(rootRaw);
60
+ if (!nodes) {
61
+ rawPathMap.delete(rootRaw);
62
+ return;
63
+ }
64
+ for (const node of nodes) {
65
+ rawParentMap.delete(node);
66
+ rawParentsMap.delete(node);
67
+ rawPathMap.delete(node);
68
+ rawMultiParentSet.delete(node);
69
+ rawRootMap.delete(node);
70
+ rawVersionMap.delete(node);
71
+ }
72
+ rootPatchNodesMap.delete(rootRaw);
73
+ }
74
+ /**
75
+ * 让 effect 订阅整个对象的“版本号”,无需深度遍历即可对任何字段变化做出响应。
76
+ * @internal
77
+ */
78
+ function touchReactive(target) {
79
+ track(toRaw(target), VERSION_KEY);
80
+ }
81
+
82
+ //#endregion
83
+ //#region src/reactivity/computed.ts
84
+ function computed(getterOrOptions) {
85
+ let getter;
86
+ let setter;
87
+ const onlyGetter = typeof getterOrOptions === "function";
88
+ if (onlyGetter) {
89
+ getter = getterOrOptions;
90
+ setter = () => {
91
+ throw new Error("计算属性是只读的");
92
+ };
93
+ } else {
94
+ getter = getterOrOptions.get;
95
+ setter = getterOrOptions.set;
96
+ }
97
+ let value;
98
+ let dirty = true;
99
+ let runner;
100
+ const obj = {
101
+ get value() {
102
+ if (dirty) {
103
+ value = runner();
104
+ dirty = false;
105
+ }
106
+ track(obj, "value");
107
+ return value;
108
+ },
109
+ set value(newValue) {
110
+ setter(newValue);
111
+ }
112
+ };
113
+ markAsRef(obj);
114
+ runner = effect(getter, {
115
+ lazy: true,
116
+ scheduler: () => {
117
+ if (!dirty) {
118
+ dirty = true;
119
+ trigger(obj, "value");
120
+ }
121
+ }
122
+ });
123
+ return onlyGetter ? obj : obj;
124
+ }
125
+
126
+ //#endregion
127
+ export { touchReactive as i, clearPatchIndices as n, prelinkReactiveTree as r, computed as t };
128
+ //# sourceMappingURL=computed-BxRsUJgi.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"computed-BxRsUJgi.mjs","names":[],"sources":["../../src/reactivity/reactive/patch.ts","../../src/reactivity/computed.ts"],"sourcesContent":["import { track } from '../core'\nimport {\n indexPatchNode,\n rawMultiParentSet,\n rawParentMap,\n rawParentsMap,\n rawPathMap,\n rawRootMap,\n rawVersionMap,\n recordParentLink,\n rootPatchNodesMap,\n} from './patchState'\nimport { isObject, ReactiveFlags, toRaw, VERSION_KEY } from './shared'\n\nexport interface PrelinkReactiveTreeOptions {\n shouldIncludeTopKey?: (key: string) => boolean\n maxDepth?: number\n maxKeys?: number\n}\n\n/**\n * 预链接响应式树结构,供运行时差量路径追踪使用。\n * @internal\n */\nexport function prelinkReactiveTree(root: object, options?: PrelinkReactiveTreeOptions) {\n const rootRaw = toRaw(root as any) as object\n rawPathMap.set(rootRaw, '')\n indexPatchNode(rootRaw, rootRaw)\n\n const shouldIncludeTopKey = options?.shouldIncludeTopKey\n const maxDepth = typeof options?.maxDepth === 'number' ? Math.max(0, Math.floor(options!.maxDepth!)) : Number.POSITIVE_INFINITY\n const maxKeys = typeof options?.maxKeys === 'number' ? Math.max(0, Math.floor(options!.maxKeys!)) : Number.POSITIVE_INFINITY\n\n const visited = new WeakSet<object>()\n const stack: Array<{ current: object, path: string, depth: number }> = [{ current: rootRaw, path: '', depth: 0 }]\n let indexed = 0\n\n while (stack.length) {\n const node = stack.pop()!\n if (visited.has(node.current)) {\n continue\n }\n visited.add(node.current)\n rawPathMap.set(node.current, node.path)\n indexPatchNode(rootRaw, node.current)\n indexed += 1\n if (indexed >= maxKeys) {\n continue\n }\n\n if (node.depth >= maxDepth) {\n continue\n }\n if (Array.isArray(node.current)) {\n // 数组不预先展开子元素:大列表场景避免 O(n) 初始化开销。\n continue\n }\n\n const entries = Object.entries(node.current as any)\n for (const [key, value] of entries) {\n if (node.path === '' && shouldIncludeTopKey && !shouldIncludeTopKey(key)) {\n continue\n }\n if (!isObject(value)) {\n continue\n }\n if ((value as any)[ReactiveFlags.SKIP]) {\n continue\n }\n const childRaw = toRaw(value as any) as object\n if (!rawRootMap.has(childRaw)) {\n rawRootMap.set(childRaw, rootRaw)\n }\n recordParentLink(childRaw, node.current, key)\n if (!rawMultiParentSet.has(childRaw)) {\n const childPath = node.path ? `${node.path}.${key}` : key\n rawPathMap.set(childRaw, childPath)\n }\n indexPatchNode(rootRaw, childRaw)\n stack.push({ current: childRaw, path: node.path ? `${node.path}.${key}` : key, depth: node.depth + 1 })\n }\n }\n}\n\n/**\n * 清理预链接阶段建立的路径与父子索引。\n * @internal\n */\nexport function clearPatchIndices(root: object) {\n const rootRaw = toRaw(root as any) as object\n const nodes = rootPatchNodesMap.get(rootRaw)\n if (!nodes) {\n rawPathMap.delete(rootRaw)\n return\n }\n\n for (const node of nodes) {\n rawParentMap.delete(node)\n rawParentsMap.delete(node)\n rawPathMap.delete(node)\n rawMultiParentSet.delete(node)\n rawRootMap.delete(node)\n rawVersionMap.delete(node)\n }\n\n rootPatchNodesMap.delete(rootRaw)\n}\n\n/**\n * 让 effect 订阅整个对象的“版本号”,无需深度遍历即可对任何字段变化做出响应。\n * @internal\n */\nexport function touchReactive(target: object) {\n const raw = toRaw(target as any) as object\n track(raw, VERSION_KEY)\n}\n","import type { ReactiveEffect } from './core'\nimport type { Ref } from './ref'\nimport { effect, track, trigger } from './core'\nimport { markAsRef } from './ref'\n\nexport type ComputedGetter<T> = () => T\nexport type ComputedSetter<T> = (value: T) => void\n\ninterface BaseComputedRef<T, S = T> extends Ref<T, S> {\n [key: symbol]: any\n}\n\nexport interface ComputedRef<T = any> extends BaseComputedRef<T> {\n readonly value: T\n}\n\nexport interface WritableComputedRef<T, S = T> extends BaseComputedRef<T, S> {\n value: T\n}\n\nexport interface WritableComputedOptions<T> {\n get: ComputedGetter<T>\n set: ComputedSetter<T>\n}\n\nexport function computed<T>(getter: ComputedGetter<T>): ComputedRef<T>\nexport function computed<T>(options: WritableComputedOptions<T>): WritableComputedRef<T>\nexport function computed<T>(\n getterOrOptions: ComputedGetter<T> | WritableComputedOptions<T>,\n): ComputedRef<T> | WritableComputedRef<T> {\n let getter: ComputedGetter<T>\n let setter: ComputedSetter<T>\n const onlyGetter = typeof getterOrOptions === 'function'\n if (onlyGetter) {\n getter = getterOrOptions as ComputedGetter<T>\n setter = () => {\n throw new Error('计算属性是只读的')\n }\n }\n else {\n getter = (getterOrOptions as WritableComputedOptions<T>).get\n setter = (getterOrOptions as WritableComputedOptions<T>).set\n }\n let value: T\n let dirty = true\n let runner: ReactiveEffect<T>\n const obj: any = {\n get value() {\n if (dirty) {\n value = runner()\n dirty = false\n }\n track(obj, 'value')\n return value\n },\n set value(newValue: T) {\n setter(newValue)\n },\n }\n markAsRef(obj)\n runner = effect(getter, {\n lazy: true,\n scheduler: () => {\n if (!dirty) {\n dirty = true\n trigger(obj, 'value')\n }\n },\n })\n return (onlyGetter ? obj as ComputedRef<T> : obj as WritableComputedRef<T>)\n}\n"],"mappings":"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"}
@@ -1,13 +1,13 @@
1
1
  import { n as __reExport, t as __exportAll } from "./rolldown-runtime-BUUfjzRC.mjs";
2
- import { C as effect, D as onScopeDispose, E as getCurrentScope, N as nextTick, O as startBatch, S as batch, T as endBatch, a as toValue, b as addMutationRecorder, c as isRaw, d as reactive, f as isShallowReactive, g as touchReactive, h as prelinkReactiveTree, i as ref, k as stop, l as isReactive, n as isRef, o as unref, p as shallowReactive, s as getReactiveVersion, t as customRef, u as markRaw, w as effectScope, x as removeMutationRecorder, y as toRaw } from "./ref-Bxwe2Kfo.mjs";
3
- import { t as computed } from "./computed-4hT2jDra.mjs";
4
- import { S as shallowReadonly, b as isReadonly, c as getCurrentSetupContext, d as setCurrentSetupContext, n as callHookList, r as callHookReturn, s as getCurrentInstance, u as setCurrentInstance, x as readonly, y as isProxy } from "./base-ii6cqKIl.mjs";
5
- import { a as getDeepWatchStrategy, c as isShallowRef, i as watchSyncEffect, l as shallowRef, n as watchEffect, o as setDeepWatchStrategy, r as watchPostEffect, s as traverse, t as watch, u as triggerRef } from "./watch-B46crqgs.mjs";
6
- import { n as toRefs, t as toRef } from "./toRefs-BVrN7XKZ.mjs";
7
- import { $ as onUnhandledRejection, A as setGlobalProvidedValue, B as onPageNotFound, F as onHide, G as onResize, H as onPullDownRefresh, I as onLaunch, J as onShareAppMessage, K as onRouteDone, L as onLoad, M as onAttached, N as onDetached, P as onError, Q as onThemeChange, R as onMemoryWarning, U as onReachBottom, V as onPageScroll, W as onReady, X as onShow, Y as onShareTimeline, Z as onTabItemTap, _ as provide, et as onUnload, g as injectGlobal, h as inject, j as onAddToFavorites, m as hasInjectionContext, n as useNativeRouter, q as onSaveExitState, t as useNativePageRouter, v as provideGlobal, z as onMoved } from "./router-D6H7HviN.mjs";
8
- import { $ as version, A as registerPageLayoutBridge, B as mountRuntimeInstance, C as useElementIntersectionObserver, D as defineComponent, E as createWevuScopedSlotComponent, F as unregisterRuntimeLayoutHosts, G as setPageLayout, H as teardownRuntimeInstance, I as useLayoutBridge, J as usePageLayout, K as syncRuntimePageLayoutState, L as useLayoutHosts, M as resolveLayoutBridge, N as resolveLayoutHost, O as createApp, P as unregisterPageLayoutBridge, Q as markNoSetData, R as waitForLayoutHost, S as useIntersectionObserver, T as createWevuComponent, U as runSetupFunction, V as setRuntimeSetDataVisibility, W as resolveRuntimePageLayoutName, X as setWevuDefaults, Y as resetWevuDefaults, Z as isNoSetData, _ as usePageScrollThrottle, a as useModel, at as onDeactivated, b as useNavigationBarMetrics, c as useSlots, ct as onServerPrefetch, d as useUpdatePerformanceListener, et as callUpdateHooks, f as useBoundingClientRect, g as useAsyncPullDownRefresh, h as useSelectorQuery, i as useChangeModel, it as onBeforeUpdate, j as registerRuntimeLayoutHosts, k as registerComponent, l as defineAppSetup, lt as onUnmounted, m as useSelectorFields, n as mergeModels, nt as onBeforeMount, o as useAttrs, ot as onErrorCaptured, p as useScrollOffset, q as syncRuntimePageLayoutStateFromRuntime, r as useBindModel, rt as onBeforeUnmount, s as useNativeInstance, st as onMounted, t as useTemplateRef, tt as onActivated, u as use, ut as onUpdated, v as getCurrentPageStackSnapshot, w as useDisposables, x as usePageStack, y as getNavigationBarMetrics, z as registerApp } from "./templateRef-C4hJDc4O.mjs";
9
- import { n as normalizeStyle, r as resolvePropValue, t as normalizeClass } from "./template-DLHZbQ3E.mjs";
10
- import { n as defineStore, r as createStore, t as storeToRefs } from "./store-7lzhCASj.mjs";
2
+ import { a as getDeepWatchStrategy, c as isShallowRef, d as isShallowReactive, f as shallowReactive, i as watchSyncEffect, l as shallowRef, n as watchEffect, o as setDeepWatchStrategy, p as nextTick, r as watchPostEffect, s as traverse, t as watch, u as triggerRef } from "./watch-jrgL5ald.mjs";
3
+ import { A as removeMutationRecorder, F as getCurrentScope, I as onScopeDispose, L as startBatch, M as effect, N as effectScope, P as endBatch, R as stop, a as toValue, c as isRaw, d as reactive, i as ref, j as batch, k as addMutationRecorder, l as isReactive, n as isRef, o as unref, s as getReactiveVersion, t as customRef, u as markRaw, v as toRaw } from "./ref-DRZC3Kc5.mjs";
4
+ import { i as touchReactive, r as prelinkReactiveTree, t as computed } from "./computed-BxRsUJgi.mjs";
5
+ import { S as shallowReadonly, b as isReadonly, c as getCurrentSetupContext, d as setCurrentSetupContext, n as callHookList, r as callHookReturn, s as getCurrentInstance, u as setCurrentInstance, x as readonly, y as isProxy } from "./base-CYkvI7w8.mjs";
6
+ import { n as toRefs, t as toRef } from "./toRefs-D06VmFK2.mjs";
7
+ import { $ as onShow, B as onLoad, F as onAttached, G as onPullDownRefresh, H as onMoved, I as onDetached, J as onResize, K as onReachBottom, L as onError, N as setGlobalProvidedValue, P as onAddToFavorites, Q as onShareTimeline, R as onHide, U as onPageNotFound, V as onMemoryWarning, W as onPageScroll, X as onSaveExitState, Y as onRouteDone, Z as onShareAppMessage, _ as hasInjectionContext, b as provide, et as onTabItemTap, n as useNativeRouter, nt as onUnhandledRejection, q as onReady, rt as onUnload, t as useNativePageRouter, tt as onThemeChange, v as inject, x as provideGlobal, y as injectGlobal, z as onLaunch } from "./router-BD-ovqV2.mjs";
8
+ import { $ as version, A as registerPageLayoutBridge, B as mountRuntimeInstance, C as useElementIntersectionObserver, D as defineComponent, E as createWevuScopedSlotComponent, F as unregisterRuntimeLayoutHosts, G as setPageLayout, H as teardownRuntimeInstance, I as useLayoutBridge, J as usePageLayout, K as syncRuntimePageLayoutState, L as useLayoutHosts, M as resolveLayoutBridge, N as resolveLayoutHost, O as createApp, P as unregisterPageLayoutBridge, Q as markNoSetData, R as waitForLayoutHost, S as useIntersectionObserver, T as createWevuComponent, U as runSetupFunction, V as setRuntimeSetDataVisibility, W as resolveRuntimePageLayoutName, X as setWevuDefaults, Y as resetWevuDefaults, Z as isNoSetData, _ as usePageScrollThrottle, a as useModel, at as onDeactivated, b as useNavigationBarMetrics, c as useSlots, ct as onServerPrefetch, d as useUpdatePerformanceListener, et as callUpdateHooks, f as useBoundingClientRect, g as useAsyncPullDownRefresh, h as useSelectorQuery, i as useChangeModel, it as onBeforeUpdate, j as registerRuntimeLayoutHosts, k as registerComponent, l as defineAppSetup, lt as onUnmounted, m as useSelectorFields, n as mergeModels, nt as onBeforeMount, o as useAttrs, ot as onErrorCaptured, p as useScrollOffset, q as syncRuntimePageLayoutStateFromRuntime, r as useBindModel, rt as onBeforeUnmount, s as useNativeInstance, st as onMounted, t as useTemplateRef, tt as onActivated, u as use, ut as onUpdated, v as getCurrentPageStackSnapshot, w as useDisposables, x as usePageStack, y as getNavigationBarMetrics, z as registerApp } from "./templateRef-DuFamxmB.mjs";
9
+ import { n as normalizeStyle, r as resolvePropValue, t as normalizeClass } from "./template-n_iVr0ey.mjs";
10
+ import { n as defineStore, r as createStore, t as storeToRefs } from "./store-HNsiQJ4d.mjs";
11
11
 
12
12
  export * from "@wevu/web-apis"
13
13
 
@@ -1,7 +1,7 @@
1
- import { C as effect, D as onScopeDispose, E as getCurrentScope, N as nextTick, O as startBatch, S as batch, T as endBatch, a as toValue, b as addMutationRecorder, c as isRaw, d as reactive, f as isShallowReactive, g as touchReactive, h as prelinkReactiveTree, i as ref, k as stop, l as isReactive, n as isRef, o as unref, p as shallowReactive, s as getReactiveVersion, t as customRef, u as markRaw, w as effectScope, x as removeMutationRecorder, y as toRaw } from "./ref-Bxwe2Kfo.mjs";
2
- import { t as computed } from "./computed-4hT2jDra.mjs";
3
- import { S as shallowReadonly, b as isReadonly, x as readonly, y as isProxy } from "./base-ii6cqKIl.mjs";
4
- import { a as getDeepWatchStrategy, c as isShallowRef, i as watchSyncEffect, l as shallowRef, n as watchEffect, o as setDeepWatchStrategy, r as watchPostEffect, s as traverse, t as watch, u as triggerRef } from "./watch-B46crqgs.mjs";
5
- import { n as toRefs, t as toRef } from "./toRefs-BVrN7XKZ.mjs";
1
+ import { a as getDeepWatchStrategy, c as isShallowRef, d as isShallowReactive, f as shallowReactive, i as watchSyncEffect, l as shallowRef, n as watchEffect, o as setDeepWatchStrategy, p as nextTick, r as watchPostEffect, s as traverse, t as watch, u as triggerRef } from "./watch-jrgL5ald.mjs";
2
+ import { A as removeMutationRecorder, F as getCurrentScope, I as onScopeDispose, L as startBatch, M as effect, N as effectScope, P as endBatch, R as stop, a as toValue, c as isRaw, d as reactive, i as ref, j as batch, k as addMutationRecorder, l as isReactive, n as isRef, o as unref, s as getReactiveVersion, t as customRef, u as markRaw, v as toRaw } from "./ref-DRZC3Kc5.mjs";
3
+ import { i as touchReactive, r as prelinkReactiveTree, t as computed } from "./computed-BxRsUJgi.mjs";
4
+ import { S as shallowReadonly, b as isReadonly, x as readonly, y as isProxy } from "./base-CYkvI7w8.mjs";
5
+ import { n as toRefs, t as toRef } from "./toRefs-D06VmFK2.mjs";
6
6
 
7
7
  export { addMutationRecorder, batch, computed, customRef, effect, effectScope, endBatch, getCurrentScope, getDeepWatchStrategy, getReactiveVersion, isProxy, isRaw, isReactive, isReadonly, isRef, isShallowReactive, isShallowRef, markRaw, nextTick, onScopeDispose, prelinkReactiveTree, reactive, readonly, ref, removeMutationRecorder, setDeepWatchStrategy, shallowReactive, shallowReadonly, shallowRef, startBatch, stop, toRaw, toRef, toRefs, toValue, touchReactive, traverse, triggerRef, unref, watch, watchEffect, watchPostEffect, watchSyncEffect };
@@ -1,5 +1,5 @@
1
- import { c as getCurrentSetupContext, d as setCurrentSetupContext, n as callHookList, r as callHookReturn, s as getCurrentInstance, u as setCurrentInstance } from "./base-ii6cqKIl.mjs";
2
- import { $ as onUnhandledRejection, A as setGlobalProvidedValue, B as onPageNotFound, F as onHide, G as onResize, H as onPullDownRefresh, I as onLaunch, J as onShareAppMessage, K as onRouteDone, L as onLoad, M as onAttached, N as onDetached, P as onError, Q as onThemeChange, R as onMemoryWarning, U as onReachBottom, V as onPageScroll, W as onReady, X as onShow, Y as onShareTimeline, Z as onTabItemTap, _ as provide, et as onUnload, g as injectGlobal, h as inject, j as onAddToFavorites, m as hasInjectionContext, n as useNativeRouter, q as onSaveExitState, t as useNativePageRouter, v as provideGlobal, z as onMoved } from "./router-D6H7HviN.mjs";
3
- import { $ as version, B as mountRuntimeInstance, C as useElementIntersectionObserver, D as defineComponent, E as createWevuScopedSlotComponent, G as setPageLayout, H as teardownRuntimeInstance, I as useLayoutBridge, J as usePageLayout, K as syncRuntimePageLayoutState, L as useLayoutHosts, M as resolveLayoutBridge, N as resolveLayoutHost, O as createApp, Q as markNoSetData, R as waitForLayoutHost, S as useIntersectionObserver, T as createWevuComponent, U as runSetupFunction, V as setRuntimeSetDataVisibility, W as resolveRuntimePageLayoutName, X as setWevuDefaults, Y as resetWevuDefaults, Z as isNoSetData, _ as usePageScrollThrottle, a as useModel, at as onDeactivated, b as useNavigationBarMetrics, c as useSlots, ct as onServerPrefetch, d as useUpdatePerformanceListener, f as useBoundingClientRect, g as useAsyncPullDownRefresh, h as useSelectorQuery, i as useChangeModel, it as onBeforeUpdate, k as registerComponent, l as defineAppSetup, lt as onUnmounted, m as useSelectorFields, n as mergeModels, nt as onBeforeMount, o as useAttrs, ot as onErrorCaptured, p as useScrollOffset, q as syncRuntimePageLayoutStateFromRuntime, r as useBindModel, rt as onBeforeUnmount, s as useNativeInstance, st as onMounted, t as useTemplateRef, tt as onActivated, u as use, ut as onUpdated, v as getCurrentPageStackSnapshot, w as useDisposables, x as usePageStack, y as getNavigationBarMetrics, z as registerApp } from "./templateRef-C4hJDc4O.mjs";
1
+ import { c as getCurrentSetupContext, d as setCurrentSetupContext, n as callHookList, r as callHookReturn, s as getCurrentInstance, u as setCurrentInstance } from "./base-CYkvI7w8.mjs";
2
+ import { $ as onShow, B as onLoad, F as onAttached, G as onPullDownRefresh, H as onMoved, I as onDetached, J as onResize, K as onReachBottom, L as onError, N as setGlobalProvidedValue, P as onAddToFavorites, Q as onShareTimeline, R as onHide, U as onPageNotFound, V as onMemoryWarning, W as onPageScroll, X as onSaveExitState, Y as onRouteDone, Z as onShareAppMessage, _ as hasInjectionContext, b as provide, et as onTabItemTap, n as useNativeRouter, nt as onUnhandledRejection, q as onReady, rt as onUnload, t as useNativePageRouter, tt as onThemeChange, v as inject, x as provideGlobal, y as injectGlobal, z as onLaunch } from "./router-BD-ovqV2.mjs";
3
+ import { $ as version, B as mountRuntimeInstance, C as useElementIntersectionObserver, D as defineComponent, E as createWevuScopedSlotComponent, G as setPageLayout, H as teardownRuntimeInstance, I as useLayoutBridge, J as usePageLayout, K as syncRuntimePageLayoutState, L as useLayoutHosts, M as resolveLayoutBridge, N as resolveLayoutHost, O as createApp, Q as markNoSetData, R as waitForLayoutHost, S as useIntersectionObserver, T as createWevuComponent, U as runSetupFunction, V as setRuntimeSetDataVisibility, W as resolveRuntimePageLayoutName, X as setWevuDefaults, Y as resetWevuDefaults, Z as isNoSetData, _ as usePageScrollThrottle, a as useModel, at as onDeactivated, b as useNavigationBarMetrics, c as useSlots, ct as onServerPrefetch, d as useUpdatePerformanceListener, f as useBoundingClientRect, g as useAsyncPullDownRefresh, h as useSelectorQuery, i as useChangeModel, it as onBeforeUpdate, k as registerComponent, l as defineAppSetup, lt as onUnmounted, m as useSelectorFields, n as mergeModels, nt as onBeforeMount, o as useAttrs, ot as onErrorCaptured, p as useScrollOffset, q as syncRuntimePageLayoutStateFromRuntime, r as useBindModel, rt as onBeforeUnmount, s as useNativeInstance, st as onMounted, t as useTemplateRef, tt as onActivated, u as use, ut as onUpdated, v as getCurrentPageStackSnapshot, w as useDisposables, x as usePageStack, y as getNavigationBarMetrics, z as registerApp } from "./templateRef-DuFamxmB.mjs";
4
4
 
5
5
  export { callHookList, callHookReturn, createApp, createWevuComponent, createWevuScopedSlotComponent, defineAppSetup, defineComponent, getCurrentInstance, getCurrentPageStackSnapshot, getCurrentSetupContext, getNavigationBarMetrics, hasInjectionContext, inject, injectGlobal, isNoSetData, markNoSetData, mergeModels, mountRuntimeInstance, onActivated, onAddToFavorites, onAttached, onBeforeMount, onBeforeUnmount, onBeforeUpdate, onDeactivated, onDetached, onError, onErrorCaptured, onHide, onLaunch, onLoad, onMemoryWarning, onMounted, onMoved, onPageNotFound, onPageScroll, onPullDownRefresh, onReachBottom, onReady, onResize, onRouteDone, onSaveExitState, onServerPrefetch, onShareAppMessage, onShareTimeline, onShow, onTabItemTap, onThemeChange, onUnhandledRejection, onUnload, onUnmounted, onUpdated, provide, provideGlobal, registerApp, registerComponent, resetWevuDefaults, resolveLayoutBridge, resolveLayoutHost, resolveRuntimePageLayoutName, runSetupFunction, setCurrentInstance, setCurrentSetupContext, setGlobalProvidedValue, setPageLayout, setRuntimeSetDataVisibility, setWevuDefaults, syncRuntimePageLayoutState, syncRuntimePageLayoutStateFromRuntime, teardownRuntimeInstance, use, useAsyncPullDownRefresh, useAttrs, useBindModel, useBoundingClientRect, useChangeModel, useDisposables, useElementIntersectionObserver, useIntersectionObserver, useLayoutBridge, useLayoutHosts, useModel, useNativeInstance, useNativePageRouter, useNativeRouter, useNavigationBarMetrics, usePageLayout, usePageScrollThrottle, usePageStack, useScrollOffset, useSelectorFields, useSelectorQuery, useSlots, useTemplateRef, useUpdatePerformanceListener, version, waitForLayoutHost };
@@ -1,3 +1,3 @@
1
- import { n as normalizeStyle, r as resolvePropValue, t as normalizeClass } from "./template-DLHZbQ3E.mjs";
1
+ import { n as normalizeStyle, r as resolvePropValue, t as normalizeClass } from "./template-n_iVr0ey.mjs";
2
2
 
3
3
  export { normalizeClass, normalizeStyle, resolvePropValue };
@@ -1,50 +1,4 @@
1
- //#region src/scheduler.ts
2
- const resolvedPromise = Promise.resolve();
3
- const jobQueue = /* @__PURE__ */ new Set();
4
- const deferredJobQueue = /* @__PURE__ */ new Set();
5
- let isFlushing = false;
6
- let isFlushPending = false;
7
- let flushedJobs;
8
- function flushJobs() {
9
- isFlushPending = false;
10
- isFlushing = true;
11
- flushedJobs = /* @__PURE__ */ new Set();
12
- try {
13
- jobQueue.forEach((job) => {
14
- flushedJobs === null || flushedJobs === void 0 || flushedJobs.add(job);
15
- job();
16
- });
17
- } finally {
18
- jobQueue.clear();
19
- flushedJobs = void 0;
20
- isFlushing = false;
21
- if (deferredJobQueue.size) {
22
- deferredJobQueue.forEach((job) => jobQueue.add(job));
23
- deferredJobQueue.clear();
24
- if (!isFlushPending) {
25
- isFlushPending = true;
26
- resolvedPromise.then(flushJobs);
27
- }
28
- }
29
- }
30
- }
31
- function queueJob(job) {
32
- if (isFlushing && (flushedJobs === null || flushedJobs === void 0 ? void 0 : flushedJobs.has(job))) {
33
- deferredJobQueue.add(job);
34
- return;
35
- }
36
- jobQueue.add(job);
37
- if (!isFlushing && !isFlushPending) {
38
- isFlushPending = true;
39
- resolvedPromise.then(flushJobs);
40
- }
41
- }
42
- function nextTick(fn) {
43
- return fn ? resolvedPromise.then(fn) : resolvedPromise;
44
- }
45
-
46
- //#endregion
47
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/typeof.js
1
+ //#region \0@oxc-project+runtime@0.139.0/helpers/esm/typeof.js
48
2
  function _typeof(o) {
49
3
  "@babel/helpers - typeof";
50
4
  return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
@@ -55,7 +9,7 @@ function _typeof(o) {
55
9
  }
56
10
 
57
11
  //#endregion
58
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/toPrimitive.js
12
+ //#region \0@oxc-project+runtime@0.139.0/helpers/esm/toPrimitive.js
59
13
  function toPrimitive(t, r) {
60
14
  if ("object" != _typeof(t) || !t) return t;
61
15
  var e = t[Symbol.toPrimitive];
@@ -68,14 +22,14 @@ function toPrimitive(t, r) {
68
22
  }
69
23
 
70
24
  //#endregion
71
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/toPropertyKey.js
25
+ //#region \0@oxc-project+runtime@0.139.0/helpers/esm/toPropertyKey.js
72
26
  function toPropertyKey(t) {
73
27
  var i = toPrimitive(t, "string");
74
28
  return "symbol" == _typeof(i) ? i : i + "";
75
29
  }
76
30
 
77
31
  //#endregion
78
- //#region \0@oxc-project+runtime@0.137.0/helpers/esm/defineProperty.js
32
+ //#region \0@oxc-project+runtime@0.139.0/helpers/esm/defineProperty.js
79
33
  function _defineProperty(e, r, t) {
80
34
  return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
81
35
  value: t,
@@ -442,156 +396,6 @@ const reactiveMap = /* @__PURE__ */ new WeakMap();
442
396
  const rawMap = /* @__PURE__ */ new WeakMap();
443
397
  const shallowReactiveMap = /* @__PURE__ */ new WeakMap();
444
398
 
445
- //#endregion
446
- //#region src/reactivity/reactive/patch.ts
447
- /**
448
- * 预链接响应式树结构,供运行时差量路径追踪使用。
449
- * @internal
450
- */
451
- function prelinkReactiveTree(root, options) {
452
- const rootRaw = toRaw(root);
453
- rawPathMap.set(rootRaw, "");
454
- indexPatchNode(rootRaw, rootRaw);
455
- const shouldIncludeTopKey = options === null || options === void 0 ? void 0 : options.shouldIncludeTopKey;
456
- const maxDepth = typeof (options === null || options === void 0 ? void 0 : options.maxDepth) === "number" ? Math.max(0, Math.floor(options.maxDepth)) : Number.POSITIVE_INFINITY;
457
- const maxKeys = typeof (options === null || options === void 0 ? void 0 : options.maxKeys) === "number" ? Math.max(0, Math.floor(options.maxKeys)) : Number.POSITIVE_INFINITY;
458
- const visited = /* @__PURE__ */ new WeakSet();
459
- const stack = [{
460
- current: rootRaw,
461
- path: "",
462
- depth: 0
463
- }];
464
- let indexed = 0;
465
- while (stack.length) {
466
- const node = stack.pop();
467
- if (visited.has(node.current)) continue;
468
- visited.add(node.current);
469
- rawPathMap.set(node.current, node.path);
470
- indexPatchNode(rootRaw, node.current);
471
- indexed += 1;
472
- if (indexed >= maxKeys) continue;
473
- if (node.depth >= maxDepth) continue;
474
- if (Array.isArray(node.current)) continue;
475
- const entries = Object.entries(node.current);
476
- for (const [key, value] of entries) {
477
- if (node.path === "" && shouldIncludeTopKey && !shouldIncludeTopKey(key)) continue;
478
- if (!isObject(value)) continue;
479
- if (value["__r_skip"]) continue;
480
- const childRaw = toRaw(value);
481
- if (!rawRootMap.has(childRaw)) rawRootMap.set(childRaw, rootRaw);
482
- recordParentLink(childRaw, node.current, key);
483
- if (!rawMultiParentSet.has(childRaw)) {
484
- const childPath = node.path ? `${node.path}.${key}` : key;
485
- rawPathMap.set(childRaw, childPath);
486
- }
487
- indexPatchNode(rootRaw, childRaw);
488
- stack.push({
489
- current: childRaw,
490
- path: node.path ? `${node.path}.${key}` : key,
491
- depth: node.depth + 1
492
- });
493
- }
494
- }
495
- }
496
- /**
497
- * 清理预链接阶段建立的路径与父子索引。
498
- * @internal
499
- */
500
- function clearPatchIndices(root) {
501
- const rootRaw = toRaw(root);
502
- const nodes = rootPatchNodesMap.get(rootRaw);
503
- if (!nodes) {
504
- rawPathMap.delete(rootRaw);
505
- return;
506
- }
507
- for (const node of nodes) {
508
- rawParentMap.delete(node);
509
- rawParentsMap.delete(node);
510
- rawPathMap.delete(node);
511
- rawMultiParentSet.delete(node);
512
- rawRootMap.delete(node);
513
- rawVersionMap.delete(node);
514
- }
515
- rootPatchNodesMap.delete(rootRaw);
516
- }
517
- /**
518
- * 让 effect 订阅整个对象的“版本号”,无需深度遍历即可对任何字段变化做出响应。
519
- * @internal
520
- */
521
- function touchReactive(target) {
522
- track(toRaw(target), VERSION_KEY);
523
- }
524
-
525
- //#endregion
526
- //#region src/reactivity/reactive/shallow.ts
527
- const shallowHandlers = {
528
- get(target, key, receiver) {
529
- if (key === "__r_isReactive") return true;
530
- if (key === "__r_raw") return target;
531
- const res = Reflect.get(target, key, receiver);
532
- track(target, key);
533
- return res;
534
- },
535
- set(target, key, value, receiver) {
536
- const oldValue = Reflect.get(target, key, receiver);
537
- const result = Reflect.set(target, key, value, receiver);
538
- if (!Object.is(oldValue, value)) {
539
- trigger(target, key);
540
- trigger(target, VERSION_KEY);
541
- bumpRawVersion(target);
542
- }
543
- return result;
544
- },
545
- deleteProperty(target, key) {
546
- const hadKey = hasOwn(target, key);
547
- const result = Reflect.deleteProperty(target, key);
548
- if (hadKey && result) {
549
- trigger(target, key);
550
- trigger(target, VERSION_KEY);
551
- bumpRawVersion(target);
552
- }
553
- return result;
554
- },
555
- ownKeys(target) {
556
- track(target, Symbol.iterator);
557
- track(target, VERSION_KEY);
558
- return Reflect.ownKeys(target);
559
- }
560
- };
561
- /**
562
- * 创建一个浅层响应式代理:仅跟踪第一层属性变更,不深度递归嵌套对象。
563
- *
564
- * @param target 待转换的对象
565
- * @returns 浅层响应式代理
566
- *
567
- * @example
568
- * ```ts
569
- * const state = shallowReactive({ nested: { count: 0 } })
570
- *
571
- * state.nested.count++ // 不会触发 effect(嵌套对象未深度代理)
572
- * state.nested = { count: 1 } // 会触发 effect(顶层属性变更)
573
- * ```
574
- */
575
- function shallowReactive(target) {
576
- if (!isObject(target)) return target;
577
- if (target["__r_isReactive"]) return target;
578
- const existingProxy = shallowReactiveMap.get(target);
579
- if (existingProxy) return existingProxy;
580
- if (getTargetType(target) === 0) return target;
581
- const proxy = new Proxy(target, shallowHandlers);
582
- shallowReactiveMap.set(target, proxy);
583
- rawMap.set(proxy, target);
584
- if (!rawVersionMap.has(target)) rawVersionMap.set(target, 0);
585
- return proxy;
586
- }
587
- /**
588
- * 判断一个值是否为 shallowReactive 创建的浅层响应式对象
589
- */
590
- function isShallowReactive(value) {
591
- const raw = toRaw(value);
592
- return shallowReactiveMap.has(raw);
593
- }
594
-
595
399
  //#endregion
596
400
  //#region src/reactivity/reactive.ts
597
401
  /**
@@ -887,5 +691,5 @@ function customRef(factory, defaultValue) {
887
691
  }
888
692
 
889
693
  //#endregion
890
- export { track as A, effect as C, onScopeDispose as D, getCurrentScope as E, triggerEffects as M, nextTick as N, startBatch as O, queueJob as P, batch as S, endBatch as T, getTargetType as _, toValue as a, addMutationRecorder as b, isRaw as c, reactive as d, isShallowReactive as f, touchReactive as g, prelinkReactiveTree as h, ref as i, trigger as j, stop as k, isReactive as l, clearPatchIndices as m, isRef as n, unref as o, shallowReactive as p, markAsRef as r, getReactiveVersion as s, customRef as t, markRaw as u, isObject as v, effectScope as w, removeMutationRecorder as x, toRaw as y };
891
- //# sourceMappingURL=ref-Bxwe2Kfo.mjs.map
694
+ export { removeMutationRecorder as A, trigger as B, rawParentsMap as C, recordParentLink as D, rawVersionMap as E, getCurrentScope as F, onScopeDispose as I, startBatch as L, effect as M, effectScope as N, rootPatchNodesMap as O, endBatch as P, stop as R, rawParentMap as S, rawRootMap as T, triggerEffects as V, isObject as _, toValue as a, indexPatchNode as b, isRaw as c, reactive as d, rawMap as f, hasOwn as g, getTargetType as h, ref as i, batch as j, addMutationRecorder as k, isReactive as l, VERSION_KEY as m, isRef as n, unref as o, shallowReactiveMap as p, markAsRef as r, getReactiveVersion as s, customRef as t, markRaw as u, toRaw as v, rawPathMap as w, rawMultiParentSet as x, bumpRawVersion as y, track as z };
695
+ //# sourceMappingURL=ref-DRZC3Kc5.mjs.map