wevu 7.4.0 → 7.6.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.
- package/README.md +2 -0
- package/dist/config/defaults.d.mts +44 -0
- package/dist/config/pageFeatures.d.mts +51 -0
- package/dist/config.d.mts +4 -0
- package/dist/config.mjs +1 -0
- package/dist/dev/_virtual/{_@oxc-project_runtime@0.151.0 → _@oxc-project_runtime@0.154.0}/helpers/esm/defineProperty.mjs +1 -1
- package/dist/dev/_virtual/{_@oxc-project_runtime@0.151.0 → _@oxc-project_runtime@0.154.0}/helpers/esm/toPrimitive.mjs +1 -1
- package/dist/dev/_virtual/{_@oxc-project_runtime@0.151.0 → _@oxc-project_runtime@0.154.0}/helpers/esm/toPropertyKey.mjs +1 -1
- package/dist/dev/_virtual/{_@oxc-project_runtime@0.151.0 → _@oxc-project_runtime@0.154.0}/helpers/esm/typeof.mjs +1 -1
- package/dist/dev/package.mjs +1 -1
- package/dist/dev/reactivity/computed.mjs.map +1 -1
- package/dist/dev/reactivity/core.mjs +1 -1
- package/dist/dev/reactivity/ref.mjs +1 -1
- package/dist/dev/reactivity/ref.mjs.map +1 -1
- package/dist/dev/runtime/app/diagnostics.mjs +5 -1
- package/dist/dev/runtime/app/diagnostics.mjs.map +1 -1
- package/dist/dev/runtime/app/mount.mjs +8 -3
- package/dist/dev/runtime/app/mount.mjs.map +1 -1
- package/dist/dev/runtime/app/setData/commitTracker.mjs +39 -4
- package/dist/dev/runtime/app/setData/commitTracker.mjs.map +1 -1
- package/dist/dev/runtime/app/setData/observation.mjs +109 -0
- package/dist/dev/runtime/app/setData/observation.mjs.map +1 -0
- package/dist/dev/runtime/app/setData/scheduler.mjs +12 -1
- package/dist/dev/runtime/app/setData/scheduler.mjs.map +1 -1
- package/dist/dev/runtime/app/setDataOptions.mjs +1 -0
- package/dist/dev/runtime/app/setDataOptions.mjs.map +1 -1
- package/dist/dev/runtime/define/initialComputed.mjs +13 -12
- package/dist/dev/runtime/define/initialComputed.mjs.map +1 -1
- package/dist/dev/runtime/define/props.mjs +5 -1
- package/dist/dev/runtime/define/props.mjs.map +1 -1
- package/dist/dev/runtime/define/scopedSlotOptions.mjs +2 -1
- package/dist/dev/runtime/define/scopedSlotOptions.mjs.map +1 -1
- package/dist/dev/runtime/define/setupResult.mjs +3 -5
- package/dist/dev/runtime/define/setupResult.mjs.map +1 -1
- package/dist/dev/runtime/define.mjs +3 -8
- package/dist/dev/runtime/define.mjs.map +1 -1
- package/dist/dev/runtime/features/scopedSlots.mjs.map +1 -1
- package/dist/dev/runtime/pageLayout.mjs.map +1 -1
- package/dist/dev/runtime/register/component/hmrRegistration.mjs +15 -0
- package/dist/dev/runtime/register/component/hmrRegistration.mjs.map +1 -0
- package/dist/dev/runtime/register/component/props.mjs +15 -5
- package/dist/dev/runtime/register/component/props.mjs.map +1 -1
- package/dist/dev/runtime/register/component/registerDefinition.mjs +30 -18
- package/dist/dev/runtime/register/component/registerDefinition.mjs.map +1 -1
- package/dist/dev/runtime/register/component.mjs +23 -12
- package/dist/dev/runtime/register/component.mjs.map +1 -1
- package/dist/dev/runtime/register/runtimeInstance/methodBridge.mjs +14 -7
- package/dist/dev/runtime/register/runtimeInstance/methodBridge.mjs.map +1 -1
- package/dist/dev/runtime/register/runtimeInstance/nativeDeclaration.mjs +78 -0
- package/dist/dev/runtime/register/runtimeInstance/nativeDeclaration.mjs.map +1 -0
- package/dist/dev/runtime/register/runtimeInstance/provideContext.mjs +52 -8
- package/dist/dev/runtime/register/runtimeInstance/provideContext.mjs.map +1 -1
- package/dist/dev/runtime/register/runtimeInstance/setupPhase.mjs +2 -25
- package/dist/dev/runtime/register/runtimeInstance/setupPhase.mjs.map +1 -1
- package/dist/dev/runtime/register/runtimeInstance/utils.mjs.map +1 -1
- package/dist/dev/runtime/register/runtimeInstance.mjs +69 -29
- package/dist/dev/runtime/register/runtimeInstance.mjs.map +1 -1
- package/dist/dev/runtime/register/watch.mjs +1 -3
- package/dist/dev/runtime/register/watch.mjs.map +1 -1
- package/dist/fetch.mjs +1 -1
- package/dist/index.d.mts +13 -8
- package/dist/internal-reactivity.d.mts +2 -1
- package/dist/internal-template.mjs +1 -1
- package/dist/jsx-runtime.d.mts +2 -1
- package/dist/macros/shared.d.mts +3 -2
- package/dist/macros.d.mts +3 -10
- package/dist/package.mjs +1 -1
- package/dist/reactivity/asyncDerivation.d.mts +2 -1
- package/dist/reactivity/computed.d.mts +3 -7
- package/dist/reactivity/core.mjs +1 -1
- package/dist/reactivity/index.d.mts +2 -1
- package/dist/reactivity/reactive/mutation.d.mts +2 -1
- package/dist/reactivity/reactive/patch.mjs +1 -1
- package/dist/reactivity/reactive/patchState.mjs +1 -1
- package/dist/reactivity/ref.d.mts +1 -1
- package/dist/reactivity/ref.mjs +1 -1
- package/dist/reactivity/toRefs.d.mts +2 -1
- package/dist/reactivity/watch/helpers.mjs +1 -1
- package/dist/reactivity/watch/types.d.mts +2 -1
- package/dist/router/initialNavigation.mjs +1 -1
- package/dist/router/types.d.mts +2 -1
- package/dist/router/useRoute.mjs +1 -1
- package/dist/routerInternal/matching.mjs +1 -1
- package/dist/routerInternal/params.mjs +1 -1
- package/dist/routerInternal/path.mjs +1 -1
- package/dist/routerInternal/query.mjs +1 -1
- package/dist/routerInternal/records.mjs +1 -1
- package/dist/runtime/app/context.mjs +1 -1
- package/dist/runtime/app/diagnostics.mjs +1 -1
- package/dist/runtime/app/mount.mjs +1 -1
- package/dist/runtime/app/setData/commitTracker.d.mts +2 -1
- package/dist/runtime/app/setData/commitTracker.mjs +1 -1
- package/dist/runtime/app/setData/observation.d.mts +13 -0
- package/dist/runtime/app/setData/observation.mjs +1 -0
- package/dist/runtime/app/setData/scheduler.d.mts +1 -0
- package/dist/runtime/app/setData/scheduler.mjs +1 -1
- package/dist/runtime/app/setDataOptions.mjs +1 -1
- package/dist/runtime/app.d.mts +1 -1
- package/dist/runtime/capabilities.d.mts +2 -2
- package/dist/runtime/define/initialComputed.mjs +1 -1
- package/dist/runtime/define/props.mjs +1 -1
- package/dist/runtime/define/scopedSlotOptions.mjs +1 -1
- package/dist/runtime/define/setupResult.mjs +1 -1
- package/dist/runtime/define.d.mts +5 -3
- package/dist/runtime/define.mjs +1 -1
- package/dist/runtime/diff.mjs +1 -1
- package/dist/runtime/features/publicLayout.d.mts +2 -1
- package/dist/runtime/features/publicLayout.mjs +1 -1
- package/dist/runtime/features/scopedSlots.d.mts +3 -2
- package/dist/runtime/index.d.mts +7 -4
- package/dist/runtime/jsxIsland.mjs +1 -1
- package/dist/runtime/pageLayout.d.mts +3 -2
- package/dist/runtime/pageLayout.mjs +1 -1
- package/dist/runtime/pageScroll.mjs +1 -1
- package/dist/runtime/register/app.d.mts +1 -1
- package/dist/runtime/register/component/alipayRegistration.mjs +1 -1
- package/dist/runtime/register/component/hmrRegistration.mjs +1 -0
- package/dist/runtime/register/component/lifecycle.mjs +1 -1
- package/dist/runtime/register/component/props.mjs +1 -1
- package/dist/runtime/register/component/registerDefinition.mjs +1 -1
- package/dist/runtime/register/component/registerNativeDefinition.mjs +1 -1
- package/dist/runtime/register/component.d.mts +1 -1
- package/dist/runtime/register/component.mjs +1 -1
- package/dist/runtime/register/inline.d.mts +2 -1
- package/dist/runtime/register/runtimeInstance/methodBridge.mjs +1 -1
- package/dist/runtime/register/runtimeInstance/nativeDeclaration.mjs +1 -0
- package/dist/runtime/register/runtimeInstance/provideContext.mjs +1 -1
- package/dist/runtime/register/runtimeInstance/setupPhase.mjs +1 -1
- package/dist/runtime/register/runtimeInstance.d.mts +11 -6
- package/dist/runtime/register/runtimeInstance.mjs +1 -1
- package/dist/runtime/register/setup.d.mts +2 -1
- package/dist/runtime/register/watch.d.mts +2 -1
- package/dist/runtime/register/watch.mjs +1 -1
- package/dist/runtime/setupTracking.mjs +1 -1
- package/dist/runtime/templateRefTypes.d.mts +3 -5
- package/dist/runtime/templateRefs.mjs +1 -1
- package/dist/runtime/types/core.d.mts +3 -7
- package/dist/runtime/types/miniprogramHostSources.d.mts +1 -0
- package/dist/runtime/types/options.d.mts +6 -52
- package/dist/runtime/types/props/propTypes.d.mts +2 -1
- package/dist/runtime/types/props/router.d.mts +2 -1
- package/dist/runtime/types/props/setup.d.mts +2 -1
- package/dist/runtime/types/runtime.d.mts +3 -1
- package/dist/runtime/types/setData.d.mts +30 -0
- package/dist/runtime/types.d.mts +5 -3
- package/dist/runtime/uniAppHost.d.mts +2 -1
- package/dist/runtime/vueCompat/model.d.mts +3 -2
- package/dist/runtime/vueCompat/router.d.mts +2 -1
- package/dist/scheduler.mjs +1 -1
- package/dist/store/storeToRefs.d.mts +2 -1
- package/dist/store/types.d.mts +4 -3
- package/dist/types/definitions.d.mts +7 -0
- package/dist/types/pageLayout.d.mts +4 -0
- package/dist/types/pageMeta.d.mts +10 -0
- package/dist/types/reactivity.d.mts +13 -0
- package/dist/types.d.mts +5 -0
- package/dist/types.mjs +1 -0
- package/dist/vue-demi.d.mts +13 -7
- package/dist/vue-types.d.mts +3 -4
- package/dist/web-apis.mjs +1 -1
- package/package.json +23 -13
- package/dist/dev/api/vitest/setup.d.mts +0 -1
- package/dist/dev/api/vitest.d.mts +0 -1
- package/dist/dev/api.d.mts +0 -1
- package/dist/dev/compiler.d.mts +0 -1
- package/dist/dev/fetch.d.mts +0 -9
- package/dist/dev/index.d.mts +0 -72
- package/dist/dev/internal-reactivity.d.mts +0 -18
- package/dist/dev/internal-runtime.d.mts +0 -45
- package/dist/dev/internal-template.d.mts +0 -2
- package/dist/dev/jsxTypes.d.mts +0 -9
- package/dist/dev/macros/shared.d.mts +0 -83
- package/dist/dev/macros.d.mts +0 -71
- package/dist/dev/reactivity/asyncDerivation.d.mts +0 -41
- package/dist/dev/reactivity/computed.d.mts +0 -25
- package/dist/dev/reactivity/core.d.mts +0 -35
- package/dist/dev/reactivity/index.d.mts +0 -16
- package/dist/dev/reactivity/reactive/mutation.d.mts +0 -21
- package/dist/dev/reactivity/reactive/patch.d.mts +0 -18
- package/dist/dev/reactivity/reactive/shallow.d.mts +0 -22
- package/dist/dev/reactivity/reactive/shared.d.mts +0 -4
- package/dist/dev/reactivity/reactive.d.mts +0 -42
- package/dist/dev/reactivity/readonly.d.mts +0 -27
- package/dist/dev/reactivity/ref.d.mts +0 -27
- package/dist/dev/reactivity/shallowRef.d.mts +0 -19
- package/dist/dev/reactivity/toRefs.d.mts +0 -43
- package/dist/dev/reactivity/traverse.d.mts +0 -8
- package/dist/dev/reactivity/watch/types.d.mts +0 -43
- package/dist/dev/reactivity/watch.d.mts +0 -22
- package/dist/dev/router/auto-routes.d.mts +0 -8
- package/dist/dev/router/createRouter.d.mts +0 -9
- package/dist/dev/router/navigationCore.d.mts +0 -7
- package/dist/dev/router/resolve.d.mts +0 -7
- package/dist/dev/router/routeSync.d.mts +0 -2
- package/dist/dev/router/scrollRestoration/adapters.d.mts +0 -8
- package/dist/dev/router/scrollRestoration/controller.d.mts +0 -8
- package/dist/dev/router/scrollRestoration/host.d.mts +0 -3
- package/dist/dev/router/scrollRestoration/index.d.mts +0 -9
- package/dist/dev/router/scrollRestoration/types.d.mts +0 -61
- package/dist/dev/router/types.d.mts +0 -267
- package/dist/dev/router/useRoute.d.mts +0 -20
- package/dist/dev/router/useRouter.d.mts +0 -9
- package/dist/dev/router.d.mts +0 -30
- package/dist/dev/routerInternal/location.d.mts +0 -2
- package/dist/dev/routerInternal/matching.d.mts +0 -2
- package/dist/dev/routerInternal/params.d.mts +0 -2
- package/dist/dev/routerInternal/query.d.mts +0 -7
- package/dist/dev/routerInternal/records.d.mts +0 -2
- package/dist/dev/routerInternal/recordsWarnings.d.mts +0 -2
- package/dist/dev/routerInternal/shared.d.mts +0 -9
- package/dist/dev/routerInternal/snapshots.d.mts +0 -2
- package/dist/dev/routerInternal/types.d.mts +0 -9
- package/dist/dev/runtime/app/pending.d.mts +0 -10
- package/dist/dev/runtime/app/setData/commitTracker.d.mts +0 -13
- package/dist/dev/runtime/app/setData/scheduler.d.mts +0 -51
- package/dist/dev/runtime/app.d.mts +0 -8
- package/dist/dev/runtime/capabilities.d.mts +0 -78
- package/dist/dev/runtime/css.d.mts +0 -14
- package/dist/dev/runtime/defaults.d.mts +0 -12
- package/dist/dev/runtime/define.d.mts +0 -118
- package/dist/dev/runtime/disposables.d.mts +0 -31
- package/dist/dev/runtime/elementIntersectionObserver.d.mts +0 -26
- package/dist/dev/runtime/features/inlineEvents.d.mts +0 -7
- package/dist/dev/runtime/features/jsxIslands.d.mts +0 -7
- package/dist/dev/runtime/features/layout.d.mts +0 -7
- package/dist/dev/runtime/features/patchStrategy.d.mts +0 -7
- package/dist/dev/runtime/features/publicLayout.d.mts +0 -24
- package/dist/dev/runtime/features/scopedSlots.d.mts +0 -23
- package/dist/dev/runtime/features/setDataHighFrequencyWarning.d.mts +0 -7
- package/dist/dev/runtime/features/templateRefs.d.mts +0 -7
- package/dist/dev/runtime/hooks/base.d.mts +0 -27
- package/dist/dev/runtime/hooks/register.d.mts +0 -30
- package/dist/dev/runtime/hooks/vue.d.mts +0 -52
- package/dist/dev/runtime/hooks.d.mts +0 -4
- package/dist/dev/runtime/index.d.mts +0 -46
- package/dist/dev/runtime/intersectionObserver.d.mts +0 -14
- package/dist/dev/runtime/jsxIsland.d.mts +0 -37
- package/dist/dev/runtime/layoutBridge.d.mts +0 -55
- package/dist/dev/runtime/noSetData.d.mts +0 -5
- package/dist/dev/runtime/pageEnvironment.d.mts +0 -50
- package/dist/dev/runtime/pageLayout.d.mts +0 -25
- package/dist/dev/runtime/pageScroll.d.mts +0 -29
- package/dist/dev/runtime/provide.d.mts +0 -60
- package/dist/dev/runtime/provideStore.d.mts +0 -7
- package/dist/dev/runtime/publicRuntime.d.mts +0 -22
- package/dist/dev/runtime/pullDownRefresh.d.mts +0 -12
- package/dist/dev/runtime/register/app.d.mts +0 -14
- package/dist/dev/runtime/register/component.d.mts +0 -17
- package/dist/dev/runtime/register/inline.d.mts +0 -15
- package/dist/dev/runtime/register/runtimeInstance.d.mts +0 -26
- package/dist/dev/runtime/register/setup.d.mts +0 -11
- package/dist/dev/runtime/register/watch.d.mts +0 -12
- package/dist/dev/runtime/register.d.mts +0 -5
- package/dist/dev/runtime/selectorQuery.d.mts +0 -54
- package/dist/dev/runtime/template.d.mts +0 -6
- package/dist/dev/runtime/templateRefTypes.d.mts +0 -12
- package/dist/dev/runtime/types/core.d.mts +0 -35
- package/dist/dev/runtime/types/miniprogram.d.mts +0 -84
- package/dist/dev/runtime/types/miniprogramHost.d.mts +0 -45
- package/dist/dev/runtime/types/miniprogramHostSources.d.mts +0 -112
- package/dist/dev/runtime/types/options.d.mts +0 -138
- package/dist/dev/runtime/types/props/propTypes.d.mts +0 -79
- package/dist/dev/runtime/types/props/router.d.mts +0 -51
- package/dist/dev/runtime/types/props/setup.d.mts +0 -96
- package/dist/dev/runtime/types/props.d.mts +0 -4
- package/dist/dev/runtime/types/runtime.d.mts +0 -59
- package/dist/dev/runtime/types/setData.d.mts +0 -237
- package/dist/dev/runtime/types.d.mts +0 -29
- package/dist/dev/runtime/uniAppHost.d.mts +0 -8
- package/dist/dev/runtime/updatePerformance.d.mts +0 -13
- package/dist/dev/runtime/use.d.mts +0 -13
- package/dist/dev/runtime/vueCompat/context.d.mts +0 -8
- package/dist/dev/runtime/vueCompat/model.d.mts +0 -30
- package/dist/dev/runtime/vueCompat/router.d.mts +0 -29
- package/dist/dev/runtime/vueCompat/templateRef.d.mts +0 -9
- package/dist/dev/runtime/vueCompat.d.mts +0 -5
- package/dist/dev/scheduler.d.mts +0 -4
- package/dist/dev/store/define.d.mts +0 -8
- package/dist/dev/store/manager.d.mts +0 -16
- package/dist/dev/store/storeToRefs.d.mts +0 -11
- package/dist/dev/store/types.d.mts +0 -106
- package/dist/dev/store.d.mts +0 -5
- package/dist/dev/version.d.mts +0 -4
- package/dist/dev/vue-augment.d.mts +0 -8
- package/dist/dev/vue-demi.d.mts +0 -87
- package/dist/dev/vue-types.d.mts +0 -19
- package/dist/dev/web-apis.d.mts +0 -3
- /package/dist/_virtual/{_@oxc-project_runtime@0.151.0 → _@oxc-project_runtime@0.154.0}/helpers/esm/defineProperty.mjs +0 -0
- /package/dist/_virtual/{_@oxc-project_runtime@0.151.0 → _@oxc-project_runtime@0.154.0}/helpers/esm/toPrimitive.mjs +0 -0
- /package/dist/_virtual/{_@oxc-project_runtime@0.151.0 → _@oxc-project_runtime@0.154.0}/helpers/esm/toPropertyKey.mjs +0 -0
- /package/dist/_virtual/{_@oxc-project_runtime@0.151.0 → _@oxc-project_runtime@0.154.0}/helpers/esm/typeof.mjs +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"props.mjs","names":[],"sources":["../../../../../src/runtime/register/component/props.ts"],"sourcesContent":["import type { InternalRuntimeState } from '../../types'\nimport {\n WEVU_ATTRS_KEY,\n WEVU_PENDING_PROP_VALUES_KEY,\n WEVU_PROP_KEYS_KEY,\n WEVU_PROPS_DERIVED_KEYS_KEY,\n WEVU_PROPS_KEY,\n WEVU_SLOT_NAMES_PROP,\n WEVU_SLOT_OWNER_ID_PROP,\n WEVU_SLOT_SCOPE_KEY,\n} from '@weapp-core/constants'\nimport { hasOwn } from '../../../utils'\nimport { isDeepEqualValue } from '../../app/setData/snapshot'\nimport { refreshOwnerSnapshotFromInstance } from '../snapshot'\n\nexport function createPropsSync(options: {\n restOptions: Record<string, any>\n propsAliases?: Record<string, string>\n propsDerivedKeys?: string[]\n userObservers?: Record<string, any>\n}) {\n const { restOptions, propsAliases, propsDerivedKeys, userObservers } = options\n const propKeys = restOptions.properties && typeof restOptions.properties === 'object'\n ? Object.keys(restOptions.properties as any)\n : []\n const propKeySet = new Set(propKeys)\n const propsDerivedKeySet = new Set(propsDerivedKeys ?? [])\n const aliasEntries = Object.entries(propsAliases ?? {})\n .filter(([alias, propName]) => alias && propName)\n const templateRuntimePropKeys = new Set([\n WEVU_SLOT_NAMES_PROP,\n WEVU_SLOT_OWNER_ID_PROP,\n WEVU_SLOT_SCOPE_KEY,\n ])\n // 原生 properties 已由宿主管理,setup/data 中的同名绑定不能再通过 setData 回写。\n // 编译协议字段仍需镜像到顶层 data,供 WXML 的 slot 分支直接读取。\n const directPropsDerivedKeys = propKeys.filter(key => !templateRuntimePropKeys.has(key))\n const syncedAliases = new WeakMap<InternalRuntimeState, Set<string>>()\n\n const isInternalAttrKey = (key: string) => key.startsWith('__wv_')\n\n const updateSnapshotOmitKeys = (instance: InternalRuntimeState) => {\n const runtime = (instance as any).__wevu\n const snapshotOmitKeys = runtime?.[WEVU_PROPS_DERIVED_KEYS_KEY]\n if (!(snapshotOmitKeys instanceof Set)) {\n return\n }\n for (const key of directPropsDerivedKeys) {\n snapshotOmitKeys.add(key)\n }\n }\n\n const setIfChanged = (target: Record<string, unknown>, key: string, value: unknown) => {\n if (hasOwn(target, key) && Object.is(target[key], value)) {\n return false\n }\n target[key] = value\n return true\n }\n\n const setPropIfChanged = (target: Record<string, unknown>, key: string, value: unknown) => {\n if (\n templateRuntimePropKeys.has(key)\n && hasOwn(target, key)\n && isDeepEqualValue(target[key], value, 20, { keys: 10_000 })\n ) {\n return false\n }\n return setIfChanged(target, key, value)\n }\n\n const syncTemplateRuntimeProp = (instance: InternalRuntimeState, key: string, value: unknown) => {\n if (!templateRuntimePropKeys.has(key)) {\n return\n }\n let nativeDataChanged = false\n const runtimeState = (instance as any).__wevu?.state\n try {\n if (runtimeState && typeof runtimeState === 'object') {\n setPropIfChanged(runtimeState as Record<string, unknown>, key, value)\n }\n const nativeData = (instance as any).data\n if (nativeData && typeof nativeData === 'object') {\n nativeDataChanged = setPropIfChanged(nativeData as Record<string, unknown>, key, value)\n }\n }\n catch {\n // 忽略模板运行时字段同步失败,保持 props 主链路可用。\n }\n if (!nativeDataChanged || typeof (instance as any).setData !== 'function') {\n return\n }\n try {\n ;(instance as any).setData({ [key]: value })\n }\n catch {\n // 忽略模板桥接字段 setData 失败,后续响应式调度仍可兜底。\n }\n }\n\n const syncSetupStatePropsAliases = (instance: InternalRuntimeState, propsProxy: Record<string, unknown>) => {\n if (!aliasEntries.length) {\n return\n }\n const runtime = (instance as any).__wevu\n const setupState = runtime?.setupState\n const state = runtime?.state\n if (!setupState || typeof setupState !== 'object') {\n return\n }\n updateSnapshotOmitKeys(instance)\n const aliases = syncedAliases.get(instance) ?? new Set<string>()\n syncedAliases.set(instance, aliases)\n for (const [alias, propName] of aliasEntries) {\n if (hasOwn(setupState, alias) && !aliases.has(alias)) {\n continue\n }\n const value = propsProxy[propName]\n try {\n setIfChanged(setupState as Record<string, unknown>, alias, value)\n aliases.add(alias)\n }\n catch {\n // 忽略 alias 同步失败,保持 props 主链路可用。\n }\n if (state && typeof state === 'object' && (!hasOwn(state, alias) || aliases.has(alias))) {\n try {\n setIfChanged(state as Record<string, unknown>, alias, value)\n }\n catch {\n // 旧兼容 state 写入失败时不阻断运行时。\n }\n }\n }\n }\n\n const syncPropsDerivedKeys = (instance: InternalRuntimeState, propsProxy: Record<string, unknown>) => {\n if (!propsDerivedKeySet.size) {\n return\n }\n const runtime = (instance as any).__wevu\n const setupState = runtime?.setupState\n if (!setupState || typeof setupState !== 'object') {\n return\n }\n updateSnapshotOmitKeys(instance)\n const aliasToPropName = new Map<string, string>(aliasEntries)\n for (const key of propsDerivedKeySet) {\n const propName = aliasToPropName.get(key) ?? key\n if (!hasOwn(propsProxy, propName)) {\n continue\n }\n try {\n setIfChanged(setupState as Record<string, unknown>, key, propsProxy[propName])\n }\n catch {\n // 忽略 props-derived 同步失败,保持主 props 链路可用。\n }\n }\n }\n\n const attachWevuPropKeys = (instance: InternalRuntimeState) => {\n try {\n Object.defineProperty(instance, WEVU_PROP_KEYS_KEY, {\n value: propKeys,\n configurable: true,\n enumerable: false,\n writable: false,\n })\n }\n catch {\n ;(instance as any)[WEVU_PROP_KEYS_KEY] = propKeys\n }\n }\n\n const syncWevuAttrsFromInstance = (instance: InternalRuntimeState) => {\n const attrsProxy = (instance as any)[WEVU_ATTRS_KEY]\n if (!attrsProxy || typeof attrsProxy !== 'object') {\n return\n }\n const hasRuntimeStateKey = (key: string) => {\n const runtimeState = (instance as any).__wevu?.state\n return runtimeState != null\n && typeof runtimeState === 'object'\n && hasOwn(runtimeState as Record<string, unknown>, key)\n }\n\n const properties = (instance as any).properties\n const next = properties && typeof properties === 'object'\n ? (properties as Record<string, unknown>)\n : undefined\n\n const currentKeys = Object.keys(attrsProxy as any)\n for (const existingKey of currentKeys) {\n if (\n !next\n || !hasOwn(next, existingKey)\n || isInternalAttrKey(existingKey)\n || propKeySet.has(existingKey)\n || hasRuntimeStateKey(existingKey)\n ) {\n try {\n delete (attrsProxy as any)[existingKey]\n }\n catch {\n // 忽略异常\n }\n }\n }\n\n if (!next) {\n refreshOwnerSnapshotFromInstance(instance)\n return\n }\n\n for (const [key, value] of Object.entries(next)) {\n if (isInternalAttrKey(key) || propKeySet.has(key) || hasRuntimeStateKey(key)) {\n continue\n }\n try {\n ;(attrsProxy as any)[key] = value\n }\n catch {\n // 忽略异常\n }\n }\n\n refreshOwnerSnapshotFromInstance(instance)\n }\n\n const syncWevuPropsFromInstance = (instance: InternalRuntimeState) => {\n const propsProxy = (instance as any)[WEVU_PROPS_KEY]\n const properties = (instance as any).properties\n const pendingPropValues = (instance as any)[WEVU_PENDING_PROP_VALUES_KEY] as Record<string, unknown> | undefined\n\n if (propsProxy && typeof propsProxy === 'object' && properties && typeof properties === 'object') {\n const next = properties as any\n const currentKeys = Object.keys(propsProxy as any)\n for (const existingKey of currentKeys) {\n if (!propKeySet.has(existingKey) || !hasOwn(next, existingKey)) {\n try {\n delete (propsProxy as any)[existingKey]\n }\n catch {\n // 忽略异常\n }\n }\n }\n for (const key of propKeys) {\n const hasPendingValue = pendingPropValues && hasOwn(pendingPropValues, key)\n if (!hasPendingValue && !hasOwn(next, key)) {\n continue\n }\n const nextValue = hasPendingValue ? pendingPropValues[key] : next[key]\n try {\n setPropIfChanged(propsProxy as Record<string, unknown>, key, nextValue)\n }\n catch {\n // 忽略异常\n }\n syncTemplateRuntimeProp(instance, key, nextValue)\n }\n syncPropsDerivedKeys(instance, propsProxy as Record<string, unknown>)\n syncSetupStatePropsAliases(instance, propsProxy as Record<string, unknown>)\n refreshOwnerSnapshotFromInstance(instance)\n }\n if (pendingPropValues) {\n delete (instance as any)[WEVU_PENDING_PROP_VALUES_KEY]\n }\n\n syncWevuAttrsFromInstance(instance)\n }\n\n const syncWevuPropsFromValues = (instance: InternalRuntimeState, values: Record<string, unknown> | undefined) => {\n if (!values || typeof values !== 'object') {\n return\n }\n const propsProxy = (instance as any)[WEVU_PROPS_KEY]\n if (!propsProxy || typeof propsProxy !== 'object') {\n return\n }\n let changed = false\n for (const key of propKeys) {\n if (!hasOwn(values, key)) {\n continue\n }\n try {\n changed = setPropIfChanged(propsProxy as Record<string, unknown>, key, values[key]) || changed\n }\n catch {\n // 忽略 query props 同步失败,保持页面生命周期主链路可用。\n }\n syncTemplateRuntimeProp(instance, key, values[key])\n }\n if (!changed) {\n return\n }\n syncPropsDerivedKeys(instance, propsProxy as Record<string, unknown>)\n syncSetupStatePropsAliases(instance, propsProxy as Record<string, unknown>)\n refreshOwnerSnapshotFromInstance(instance)\n syncWevuAttrsFromInstance(instance)\n }\n\n const syncWevuPropValue = (instance: InternalRuntimeState, key: string, value: unknown) => {\n const propsProxy = (instance as any)[WEVU_PROPS_KEY]\n if (!propsProxy || typeof propsProxy !== 'object') {\n return\n }\n try {\n if (!setPropIfChanged(propsProxy as Record<string, unknown>, key, value)) {\n syncTemplateRuntimeProp(instance, key, value)\n return\n }\n }\n catch {\n // 忽略异常\n }\n syncTemplateRuntimeProp(instance, key, value)\n const pendingPropValues = ((instance as any)[WEVU_PENDING_PROP_VALUES_KEY] ??= Object.create(null)) as Record<string, unknown>\n pendingPropValues[key] = value\n syncPropsDerivedKeys(instance, propsProxy as Record<string, unknown>)\n syncSetupStatePropsAliases(instance, propsProxy as Record<string, unknown>)\n refreshOwnerSnapshotFromInstance(instance)\n syncWevuAttrsFromInstance(instance)\n }\n\n const injectedObservers: Record<string, any> = {}\n if (propKeys.length) {\n for (const key of propKeys) {\n injectedObservers[key] = function __wevu_prop_observer(this: InternalRuntimeState, newValue: unknown) {\n // 注意:在部分小程序运行时中,observer 回调触发时 `this.properties` 可能尚未更新,\n // 因此这里以 observer 的 newValue 为准写入 propsProxy,避免出现 props 仍为旧值/undefined。\n syncWevuPropValue(this, key, newValue)\n }\n }\n }\n\n const finalObservers: Record<string, any> = {\n ...(userObservers ?? {}),\n }\n for (const [key, injected] of Object.entries(injectedObservers)) {\n const existing = finalObservers[key]\n if (typeof existing === 'function') {\n finalObservers[key] = function chainedObserver(this: InternalRuntimeState, ...args: any[]) {\n existing.apply(this, args)\n injected.apply(this, args)\n }\n }\n else {\n finalObservers[key] = injected\n }\n }\n\n const allObserver = finalObservers['**']\n finalObservers['**'] = function __wevu_observer_all(this: InternalRuntimeState, ...args: any[]) {\n if (typeof allObserver === 'function') {\n allObserver.apply(this, args)\n }\n syncWevuPropsFromInstance(this)\n }\n\n return {\n attachWevuPropKeys,\n directPropsDerivedKeys,\n syncWevuPropsFromInstance,\n syncWevuPropsFromValues,\n finalObservers,\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"props.mjs","names":[],"sources":["../../../../../src/runtime/register/component/props.ts"],"sourcesContent":["import type { InternalRuntimeState } from '../../types'\nimport {\n WEVU_ATTRS_KEY,\n WEVU_NATIVE_DECLARATION_ADDRESS_PROP,\n WEVU_PENDING_PROP_VALUES_KEY,\n WEVU_PROP_KEYS_KEY,\n WEVU_PROPS_DERIVED_KEYS_KEY,\n WEVU_PROPS_KEY,\n WEVU_SLOT_NAMES_PROP,\n WEVU_SLOT_OWNER_ID_PROP,\n WEVU_SLOT_SCOPE_KEY,\n} from '@weapp-core/constants'\nimport { hasOwn } from '../../../utils'\nimport { isDeepEqualValue } from '../../app/setData/snapshot'\nimport { updateNativeDeclarationAddress } from '../runtimeInstance/nativeDeclaration'\nimport { refreshOwnerSnapshotFromInstance } from '../snapshot'\n\ntype ImportMetaWithEnv = ImportMeta & { env?: { PLATFORM?: string } }\n\nexport function createPropsSync(options: {\n restOptions: Record<string, any>\n nativeSlotContext: boolean\n propsAliases?: Record<string, string>\n propsDerivedKeys?: string[]\n userObservers?: Record<string, any>\n}) {\n const { restOptions, nativeSlotContext, propsAliases, propsDerivedKeys, userObservers } = options\n const propKeys = restOptions.properties && typeof restOptions.properties === 'object'\n ? Object.keys(restOptions.properties as any)\n : []\n const propKeySet = new Set(propKeys)\n const propsDerivedKeySet = new Set(propsDerivedKeys ?? [])\n const aliasEntries = Object.entries(propsAliases ?? {})\n .filter(([alias, propName]) => alias && propName)\n const templateRuntimePropKeys = new Set([\n WEVU_SLOT_NAMES_PROP,\n WEVU_SLOT_OWNER_ID_PROP,\n WEVU_SLOT_SCOPE_KEY,\n ])\n // 原生 properties 已由宿主管理,setup/data 中的同名绑定不能再通过 setData 回写。\n // 编译协议字段仍需镜像到顶层 data,供 WXML 的 slot 分支直接读取。\n const directPropsDerivedKeys = propKeys.filter(key => !templateRuntimePropKeys.has(key))\n const syncedAliases = new WeakMap<InternalRuntimeState, Set<string>>()\n\n const isInternalAttrKey = (key: string) => key.startsWith('__wv_')\n\n const updateSnapshotOmitKeys = (instance: InternalRuntimeState) => {\n const runtime = (instance as any).__wevu\n const snapshotOmitKeys = runtime?.[WEVU_PROPS_DERIVED_KEYS_KEY]\n if (!(snapshotOmitKeys instanceof Set)) {\n return\n }\n for (const key of directPropsDerivedKeys) {\n snapshotOmitKeys.add(key)\n }\n }\n\n const setIfChanged = (target: Record<string, unknown>, key: string, value: unknown) => {\n if (hasOwn(target, key) && Object.is(target[key], value)) {\n return false\n }\n target[key] = value\n return true\n }\n\n const setPropIfChanged = (target: Record<string, unknown>, key: string, value: unknown) => {\n if (\n templateRuntimePropKeys.has(key)\n && hasOwn(target, key)\n && isDeepEqualValue(target[key], value, 20, { keys: 10_000 })\n ) {\n return false\n }\n return setIfChanged(target, key, value)\n }\n\n const syncTemplateRuntimeProp = (instance: InternalRuntimeState, key: string, value: unknown) => {\n if (!templateRuntimePropKeys.has(key)) {\n return\n }\n let nativeDataChanged = false\n const runtimeState = (instance as any).__wevu?.state\n try {\n if (runtimeState && typeof runtimeState === 'object') {\n setPropIfChanged(runtimeState as Record<string, unknown>, key, value)\n }\n const nativeData = (instance as any).data\n if (nativeData && typeof nativeData === 'object') {\n nativeDataChanged = setPropIfChanged(nativeData as Record<string, unknown>, key, value)\n }\n }\n catch {\n // 忽略模板运行时字段同步失败,保持 props 主链路可用。\n }\n if (!nativeDataChanged || typeof (instance as any).setData !== 'function') {\n return\n }\n try {\n ;(instance as any).setData({ [key]: value })\n }\n catch {\n // 忽略模板桥接字段 setData 失败,后续响应式调度仍可兜底。\n }\n }\n\n const syncSetupStatePropsAliases = (instance: InternalRuntimeState, propsProxy: Record<string, unknown>) => {\n if (!aliasEntries.length) {\n return\n }\n const runtime = (instance as any).__wevu\n const setupState = runtime?.setupState\n const state = runtime?.state\n if (!setupState || typeof setupState !== 'object') {\n return\n }\n updateSnapshotOmitKeys(instance)\n const aliases = syncedAliases.get(instance) ?? new Set<string>()\n syncedAliases.set(instance, aliases)\n for (const [alias, propName] of aliasEntries) {\n if (hasOwn(setupState, alias) && !aliases.has(alias)) {\n continue\n }\n const value = propsProxy[propName]\n try {\n setIfChanged(setupState as Record<string, unknown>, alias, value)\n aliases.add(alias)\n }\n catch {\n // 忽略 alias 同步失败,保持 props 主链路可用。\n }\n if (state && typeof state === 'object' && (!hasOwn(state, alias) || aliases.has(alias))) {\n try {\n setIfChanged(state as Record<string, unknown>, alias, value)\n }\n catch {\n // 旧兼容 state 写入失败时不阻断运行时。\n }\n }\n }\n }\n\n const syncPropsDerivedKeys = (instance: InternalRuntimeState, propsProxy: Record<string, unknown>) => {\n if (!propsDerivedKeySet.size) {\n return\n }\n const runtime = (instance as any).__wevu\n const setupState = runtime?.setupState\n if (!setupState || typeof setupState !== 'object') {\n return\n }\n updateSnapshotOmitKeys(instance)\n const aliasToPropName = new Map<string, string>(aliasEntries)\n for (const key of propsDerivedKeySet) {\n const propName = aliasToPropName.get(key) ?? key\n if (!hasOwn(propsProxy, propName)) {\n continue\n }\n try {\n setIfChanged(setupState as Record<string, unknown>, key, propsProxy[propName])\n }\n catch {\n // 忽略 props-derived 同步失败,保持主 props 链路可用。\n }\n }\n }\n\n const attachWevuPropKeys = (instance: InternalRuntimeState) => {\n try {\n Object.defineProperty(instance, WEVU_PROP_KEYS_KEY, {\n value: propKeys,\n configurable: true,\n enumerable: false,\n writable: false,\n })\n }\n catch {\n ;(instance as any)[WEVU_PROP_KEYS_KEY] = propKeys\n }\n }\n\n const syncWevuAttrsFromInstance = (instance: InternalRuntimeState) => {\n const attrsProxy = (instance as any)[WEVU_ATTRS_KEY]\n if (!attrsProxy || typeof attrsProxy !== 'object') {\n return\n }\n const hasRuntimeStateKey = (key: string) => {\n const runtimeState = (instance as any).__wevu?.state\n return runtimeState != null\n && typeof runtimeState === 'object'\n && hasOwn(runtimeState as Record<string, unknown>, key)\n }\n\n const properties = (instance as any).properties\n const next = properties && typeof properties === 'object'\n ? (properties as Record<string, unknown>)\n : undefined\n\n const currentKeys = Object.keys(attrsProxy as any)\n for (const existingKey of currentKeys) {\n if (\n !next\n || !hasOwn(next, existingKey)\n || isInternalAttrKey(existingKey)\n || propKeySet.has(existingKey)\n || hasRuntimeStateKey(existingKey)\n ) {\n try {\n delete (attrsProxy as any)[existingKey]\n }\n catch {\n // 忽略异常\n }\n }\n }\n\n if (!next) {\n refreshOwnerSnapshotFromInstance(instance)\n return\n }\n\n for (const [key, value] of Object.entries(next)) {\n if (isInternalAttrKey(key) || propKeySet.has(key) || hasRuntimeStateKey(key)) {\n continue\n }\n try {\n ;(attrsProxy as any)[key] = value\n }\n catch {\n // 忽略异常\n }\n }\n\n refreshOwnerSnapshotFromInstance(instance)\n }\n\n const syncWevuPropsFromInstance = (instance: InternalRuntimeState) => {\n const propsProxy = (instance as any)[WEVU_PROPS_KEY]\n const properties = (instance as any).properties\n const pendingPropValues = (instance as any)[WEVU_PENDING_PROP_VALUES_KEY] as Record<string, unknown> | undefined\n\n if (propsProxy && typeof propsProxy === 'object' && properties && typeof properties === 'object') {\n const next = properties as any\n const currentKeys = Object.keys(propsProxy as any)\n for (const existingKey of currentKeys) {\n if (!propKeySet.has(existingKey) || !hasOwn(next, existingKey)) {\n try {\n delete (propsProxy as any)[existingKey]\n }\n catch {\n // 忽略异常\n }\n }\n }\n for (const key of propKeys) {\n const hasPendingValue = pendingPropValues && hasOwn(pendingPropValues, key)\n if (!hasPendingValue && !hasOwn(next, key)) {\n continue\n }\n const nextValue = hasPendingValue ? pendingPropValues[key] : next[key]\n try {\n setPropIfChanged(propsProxy as Record<string, unknown>, key, nextValue)\n }\n catch {\n // 忽略异常\n }\n syncTemplateRuntimeProp(instance, key, nextValue)\n }\n syncPropsDerivedKeys(instance, propsProxy as Record<string, unknown>)\n syncSetupStatePropsAliases(instance, propsProxy as Record<string, unknown>)\n refreshOwnerSnapshotFromInstance(instance)\n }\n if (pendingPropValues) {\n delete (instance as any)[WEVU_PENDING_PROP_VALUES_KEY]\n }\n\n syncWevuAttrsFromInstance(instance)\n }\n\n const syncWevuPropsFromValues = (instance: InternalRuntimeState, values: Record<string, unknown> | undefined) => {\n if (!values || typeof values !== 'object') {\n return\n }\n const propsProxy = (instance as any)[WEVU_PROPS_KEY]\n if (!propsProxy || typeof propsProxy !== 'object') {\n return\n }\n let changed = false\n for (const key of propKeys) {\n if (!hasOwn(values, key)) {\n continue\n }\n try {\n changed = setPropIfChanged(propsProxy as Record<string, unknown>, key, values[key]) || changed\n }\n catch {\n // 忽略 query props 同步失败,保持页面生命周期主链路可用。\n }\n syncTemplateRuntimeProp(instance, key, values[key])\n }\n if (!changed) {\n return\n }\n syncPropsDerivedKeys(instance, propsProxy as Record<string, unknown>)\n syncSetupStatePropsAliases(instance, propsProxy as Record<string, unknown>)\n refreshOwnerSnapshotFromInstance(instance)\n syncWevuAttrsFromInstance(instance)\n }\n\n const syncWevuPropValue = (instance: InternalRuntimeState, key: string, value: unknown) => {\n const propsProxy = (instance as any)[WEVU_PROPS_KEY]\n if (!propsProxy || typeof propsProxy !== 'object') {\n return\n }\n try {\n if (!setPropIfChanged(propsProxy as Record<string, unknown>, key, value)) {\n syncTemplateRuntimeProp(instance, key, value)\n return\n }\n }\n catch {\n // 忽略异常\n }\n syncTemplateRuntimeProp(instance, key, value)\n const pendingPropValues = ((instance as any)[WEVU_PENDING_PROP_VALUES_KEY] ??= Object.create(null)) as Record<string, unknown>\n pendingPropValues[key] = value\n syncPropsDerivedKeys(instance, propsProxy as Record<string, unknown>)\n syncSetupStatePropsAliases(instance, propsProxy as Record<string, unknown>)\n refreshOwnerSnapshotFromInstance(instance)\n syncWevuAttrsFromInstance(instance)\n }\n\n const injectedObservers: Record<string, any> = {}\n if (propKeys.length) {\n for (const key of propKeys) {\n injectedObservers[key] = function __wevu_prop_observer(this: InternalRuntimeState, newValue: unknown) {\n if (\n (!(import.meta as ImportMetaWithEnv).env?.PLATFORM || (import.meta as ImportMetaWithEnv).env?.PLATFORM === 'weapp')\n && nativeSlotContext\n && key === WEVU_NATIVE_DECLARATION_ADDRESS_PROP\n ) {\n updateNativeDeclarationAddress(this, newValue)\n }\n // 注意:在部分小程序运行时中,observer 回调触发时 `this.properties` 可能尚未更新,\n // 因此这里以 observer 的 newValue 为准写入 propsProxy,避免出现 props 仍为旧值/undefined。\n syncWevuPropValue(this, key, newValue)\n }\n }\n }\n\n const finalObservers: Record<string, any> = {\n // 地址 observer 必须先于通配/组合用户 observer,避免同步创建的后代看到旧索引。\n ...((!(import.meta as ImportMetaWithEnv).env?.PLATFORM || (import.meta as ImportMetaWithEnv).env?.PLATFORM === 'weapp')\n && nativeSlotContext\n && propKeySet.has(WEVU_NATIVE_DECLARATION_ADDRESS_PROP)\n ? { [WEVU_NATIVE_DECLARATION_ADDRESS_PROP]: undefined }\n : {}),\n ...(userObservers ?? {}),\n }\n for (const [key, injected] of Object.entries(injectedObservers)) {\n const existing = finalObservers[key]\n if (typeof existing === 'function') {\n finalObservers[key] = function chainedObserver(this: InternalRuntimeState, ...args: any[]) {\n if (nativeSlotContext && key === WEVU_NATIVE_DECLARATION_ADDRESS_PROP) {\n injected.apply(this, args)\n existing.apply(this, args)\n }\n else {\n existing.apply(this, args)\n injected.apply(this, args)\n }\n }\n }\n else {\n finalObservers[key] = injected\n }\n }\n\n const allObserver = finalObservers['**']\n finalObservers['**'] = function __wevu_observer_all(this: InternalRuntimeState, ...args: any[]) {\n if (typeof allObserver === 'function') {\n allObserver.apply(this, args)\n }\n syncWevuPropsFromInstance(this)\n }\n\n return {\n attachWevuPropKeys,\n directPropsDerivedKeys,\n syncWevuPropsFromInstance,\n syncWevuPropsFromValues,\n finalObservers,\n }\n}\n"],"mappings":"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"}
|
|
@@ -2,14 +2,17 @@ import { getMiniProgramRuntimeGlobalObject } from "../../platform.mjs";
|
|
|
2
2
|
import { callHookList } from "../../hooks/base.mjs";
|
|
3
3
|
import { requireRuntimeCapability, runtimeCapabilityRegistry } from "../../capabilities.mjs";
|
|
4
4
|
import { runTeardownSteps } from "../../teardown.mjs";
|
|
5
|
+
import { receiveNativeDeclaration } from "../runtimeInstance/nativeDeclaration.mjs";
|
|
6
|
+
import { receiveNativeSlotParent } from "../runtimeInstance/provideContext.mjs";
|
|
5
7
|
import { enableDeferredSetData, mountRuntimeInstance, refreshRuntimeInstance, setRuntimeSetDataVisibility, teardownRuntimeInstance } from "../runtimeInstance.mjs";
|
|
6
8
|
import { ensureInitialNavigation } from "../../navigationLifecycle.mjs";
|
|
9
|
+
import { createStatefulHmrRegistrationContract } from "./hmrRegistration.mjs";
|
|
7
10
|
import { registerNativeComponentDefinition } from "./registerNativeDefinition.mjs";
|
|
8
|
-
import { WEAPP_VITE_STATEFUL_HMR_BRIDGE_KEY, WEVU_PUBLIC_RUNTIME_KEY, WEVU_READY_CALLED_KEY, WEVU_RESOLVE_PUBLIC_INSTANCE_METHOD, WEVU_RUNTIME_KEY } from "@weapp-core/constants";
|
|
11
|
+
import { WEAPP_VITE_STATEFUL_HMR_BRIDGE_KEY, WEVU_NATIVE_DECLARATION_METHOD, WEVU_NATIVE_SLOT_PARENT_METHOD, WEVU_PUBLIC_RUNTIME_KEY, WEVU_READY_CALLED_KEY, WEVU_RESOLVE_PUBLIC_INSTANCE_METHOD, WEVU_RUNTIME_KEY } from "@weapp-core/constants";
|
|
9
12
|
|
|
10
13
|
//#region src/runtime/register/component/registerDefinition.ts
|
|
11
14
|
function registerComponentDefinition(options) {
|
|
12
|
-
const { runtimeApp, watch, setup, restOptions, pageLifecycleHooks, finalObservers, userLifetimes, userPageLifetimes, finalMethods, finalOptions, applyExtraInstanceFields, templateRefs, layoutHosts, attachWevuPropKeys, setupLifecycle, syncWevuPropsFromInstance, directPropsDerivedKeys, isPage, vueLifecycles, getRuntimeOwnerLabel, registerNative = true } = options;
|
|
15
|
+
const { runtimeApp, watch, setup, restOptions, statefulHmrRegistration, pageLifecycleHooks, finalObservers, userLifetimes, userPageLifetimes, finalMethods, finalOptions, applyExtraInstanceFields, templateRefs, layoutHosts, attachWevuPropKeys, setupLifecycle, syncWevuPropsFromInstance, directPropsDerivedKeys, isPage, nativeSlotContext, vueLifecycles, getRuntimeOwnerLabel, registerNative = true } = options;
|
|
13
16
|
const activeTemplateRefs = Array.isArray(templateRefs) && templateRefs.length > 0 ? templateRefs : void 0;
|
|
14
17
|
const pendingAttachment = /* @__PURE__ */ new WeakSet();
|
|
15
18
|
if (activeTemplateRefs) requireRuntimeCapability("templateRefs", "registerComponentDefinition(template refs)");
|
|
@@ -43,7 +46,8 @@ function registerComponentDefinition(options) {
|
|
|
43
46
|
attachWevuPropKeys(instance);
|
|
44
47
|
mountRuntimeInstance(instance, runtimeApp, watch, setup, {
|
|
45
48
|
deferSetData: true,
|
|
46
|
-
snapshotOmitKeys: directPropsDerivedKeys
|
|
49
|
+
snapshotOmitKeys: directPropsDerivedKeys,
|
|
50
|
+
attached: !pendingAttachment.has(instance)
|
|
47
51
|
});
|
|
48
52
|
syncWevuPropsFromInstance(instance);
|
|
49
53
|
enableDeferredSetData(instance);
|
|
@@ -97,6 +101,22 @@ function registerComponentDefinition(options) {
|
|
|
97
101
|
return pageHook.apply(this, args);
|
|
98
102
|
};
|
|
99
103
|
}
|
|
104
|
+
const methods = {
|
|
105
|
+
...pageMethodBridges,
|
|
106
|
+
...finalMethods,
|
|
107
|
+
[WEVU_RESOLVE_PUBLIC_INSTANCE_METHOD]: function resolvePublicInstance() {
|
|
108
|
+
const result = mountMissingRuntime(this);
|
|
109
|
+
if (result.mounted) {
|
|
110
|
+
callVueLifecycle(this, "created", []);
|
|
111
|
+
callVueLifecycle(this, "beforeMount", []);
|
|
112
|
+
}
|
|
113
|
+
return result.runtime?.proxy;
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
if ((!import.meta.env?.PLATFORM || import.meta.env?.PLATFORM === "weapp") && nativeSlotContext) {
|
|
117
|
+
methods[WEVU_NATIVE_SLOT_PARENT_METHOD] = receiveNativeSlotParent;
|
|
118
|
+
methods[WEVU_NATIVE_DECLARATION_METHOD] = receiveNativeDeclaration;
|
|
119
|
+
}
|
|
100
120
|
const componentDefinition = {
|
|
101
121
|
...restOptions,
|
|
102
122
|
...isPage ? pageLifecycleHooks : {},
|
|
@@ -140,7 +160,8 @@ function registerComponentDefinition(options) {
|
|
|
140
160
|
if (setupLifecycle !== "created" || !this.__wevu) try {
|
|
141
161
|
mountRuntimeInstance(this, runtimeApp, watch, setup, {
|
|
142
162
|
deferSetData: true,
|
|
143
|
-
snapshotOmitKeys: directPropsDerivedKeys
|
|
163
|
+
snapshotOmitKeys: directPropsDerivedKeys,
|
|
164
|
+
attached: true
|
|
144
165
|
});
|
|
145
166
|
} catch (error) {
|
|
146
167
|
const label = getRuntimeOwnerLabel(this);
|
|
@@ -276,27 +297,18 @@ function registerComponentDefinition(options) {
|
|
|
276
297
|
if (typeof userPageLifetimes.routeDone === "function") userPageLifetimes.routeDone.apply(this, args);
|
|
277
298
|
}
|
|
278
299
|
},
|
|
279
|
-
methods
|
|
280
|
-
...pageMethodBridges,
|
|
281
|
-
...finalMethods,
|
|
282
|
-
[WEVU_RESOLVE_PUBLIC_INSTANCE_METHOD]: function resolvePublicInstance() {
|
|
283
|
-
const result = mountMissingRuntime(this);
|
|
284
|
-
if (result.mounted) {
|
|
285
|
-
callVueLifecycle(this, "created", []);
|
|
286
|
-
callVueLifecycle(this, "beforeMount", []);
|
|
287
|
-
}
|
|
288
|
-
return result.runtime?.proxy;
|
|
289
|
-
}
|
|
290
|
-
},
|
|
300
|
+
methods,
|
|
291
301
|
options: finalOptions
|
|
292
302
|
};
|
|
293
303
|
if (!registerNative) return componentDefinition;
|
|
294
304
|
const statefulHmrBridge = getMiniProgramRuntimeGlobalObject()?.[WEAPP_VITE_STATEFUL_HMR_BRIDGE_KEY];
|
|
295
305
|
if (typeof statefulHmrBridge?.trackWevuComponent === "function") {
|
|
306
|
+
const registrationContract = createStatefulHmrRegistrationContract(statefulHmrBridge, statefulHmrRegistration);
|
|
296
307
|
const definition = statefulHmrBridge.trackWevuComponent(componentDefinition, (instance, stateSnapshot) => {
|
|
297
308
|
refreshRuntimeInstance(instance, runtimeApp, watch, setup, {
|
|
298
309
|
snapshotOmitKeys: directPropsDerivedKeys,
|
|
299
|
-
stateSnapshot
|
|
310
|
+
stateSnapshot,
|
|
311
|
+
attached: !pendingAttachment.has(instance)
|
|
300
312
|
});
|
|
301
313
|
syncWevuPropsFromInstance(instance);
|
|
302
314
|
attachPageLayoutSetter(instance);
|
|
@@ -304,7 +316,7 @@ function registerComponentDefinition(options) {
|
|
|
304
316
|
enableDeferredSetData(instance, { rehydrateSetupState: true });
|
|
305
317
|
}, (instance) => {
|
|
306
318
|
runTeardownSteps([() => activeLayoutHosts && layoutHooks?.detachHosts(activeLayoutHosts, instance), () => teardownRuntimeInstance(instance, { skipHooks: true })]);
|
|
307
|
-
});
|
|
319
|
+
}, registrationContract);
|
|
308
320
|
if (!statefulHmrBridge.isApplying()) registerNativeComponentDefinition(definition, isPage);
|
|
309
321
|
return definition;
|
|
310
322
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registerDefinition.mjs","names":[],"sources":["../../../../../src/runtime/register/component/registerDefinition.ts"],"sourcesContent":["import type { LayoutHostBinding, TemplateRefBinding } from '../../capabilities'\nimport type {\n ComponentPropsOptions,\n ComputedDefinitions,\n DefineComponentOptions,\n InternalRuntimeState,\n MethodDefinitions,\n RuntimeApp,\n} from '../../types'\nimport type { WatchMap } from '../watch'\nimport {\n WEAPP_VITE_STATEFUL_HMR_BRIDGE_KEY,\n WEVU_PUBLIC_RUNTIME_KEY,\n WEVU_READY_CALLED_KEY,\n WEVU_RESOLVE_PUBLIC_INSTANCE_METHOD,\n WEVU_RUNTIME_KEY,\n} from '@weapp-core/constants'\nimport { requireRuntimeCapability, runtimeCapabilityRegistry } from '../../capabilities'\nimport { callHookList } from '../../hooks'\nimport { ensureInitialNavigation } from '../../navigationLifecycle'\nimport { getMiniProgramRuntimeGlobalObject } from '../../platform'\nimport { runTeardownSteps } from '../../teardown'\nimport { enableDeferredSetData, mountRuntimeInstance, refreshRuntimeInstance, setRuntimeSetDataVisibility, teardownRuntimeInstance } from '../runtimeInstance'\nimport { registerNativeComponentDefinition } from './registerNativeDefinition'\n\nexport function registerComponentDefinition<D extends object, C extends ComputedDefinitions, M extends MethodDefinitions>(options: {\n runtimeApp: RuntimeApp<D, C, M>\n watch: WatchMap | undefined\n setup: DefineComponentOptions<ComponentPropsOptions, D, C, M>['setup']\n restOptions: Record<string, any>\n pageLifecycleHooks: Record<string, any>\n finalObservers: Record<string, any>\n userLifetimes: Record<string, any>\n userPageLifetimes: Record<string, any>\n finalMethods: Record<string, (...args: any[]) => any>\n finalOptions: Record<string, any>\n applyExtraInstanceFields: (instance: InternalRuntimeState) => void\n templateRefs: TemplateRefBinding[] | undefined\n layoutHosts: LayoutHostBinding[] | undefined\n attachWevuPropKeys: (instance: InternalRuntimeState) => void\n setupLifecycle: 'created' | 'attached'\n syncWevuPropsFromInstance: (instance: InternalRuntimeState) => void\n syncWevuPropsFromValues: (instance: InternalRuntimeState, values: Record<string, unknown> | undefined) => void\n directPropsDerivedKeys: string[]\n isPage: boolean\n vueLifecycles: Record<string, unknown>\n getRuntimeOwnerLabel: (instance: InternalRuntimeState) => string\n registerNative?: boolean\n}) {\n const {\n runtimeApp,\n watch,\n setup,\n restOptions,\n pageLifecycleHooks,\n finalObservers,\n userLifetimes,\n userPageLifetimes,\n finalMethods,\n finalOptions,\n applyExtraInstanceFields,\n templateRefs,\n layoutHosts,\n attachWevuPropKeys,\n setupLifecycle,\n syncWevuPropsFromInstance,\n directPropsDerivedKeys,\n isPage,\n vueLifecycles,\n getRuntimeOwnerLabel,\n registerNative = true,\n } = options\n const activeTemplateRefs = Array.isArray(templateRefs) && templateRefs.length > 0\n ? templateRefs\n : undefined\n const pendingAttachment = new WeakSet<InternalRuntimeState>()\n if (activeTemplateRefs) {\n requireRuntimeCapability('templateRefs', 'registerComponentDefinition(template refs)')\n }\n const activeLayoutHosts = Array.isArray(layoutHosts) && layoutHosts.length > 0\n ? layoutHosts\n : undefined\n const layoutHooks = activeLayoutHosts\n ? requireRuntimeCapability('layout', 'registerComponentDefinition(layout hosts)')\n : undefined\n\n const scheduleTemplateRefs = (instance: InternalRuntimeState, onResolved?: () => void) => {\n if (activeTemplateRefs) {\n runtimeCapabilityRegistry.templateRefs?.schedule(instance, onResolved)\n return\n }\n onResolved?.()\n }\n\n const resolveRuntime = (instance: InternalRuntimeState) => {\n const directRuntime = (instance as any).__wevu ?? (instance as any)[WEVU_PUBLIC_RUNTIME_KEY]\n if (directRuntime) {\n return directRuntime\n }\n const runtimeState = (instance as any).$state\n if (runtimeState && typeof runtimeState === 'object') {\n return (runtimeState as any)[WEVU_RUNTIME_KEY]\n }\n return undefined\n }\n\n const resolveLifecycleContext = (instance: InternalRuntimeState) => {\n const runtimeProxy = resolveRuntime(instance)?.proxy\n if (runtimeProxy) {\n return runtimeProxy\n }\n return runtimeCapabilityRegistry.scopedSlots?.resolveLifecycleProxy(instance) ?? instance\n }\n\n const mountMissingRuntime = (instance: InternalRuntimeState) => {\n const existing = resolveRuntime(instance)\n if (existing) {\n return { runtime: existing, mounted: false }\n }\n applyExtraInstanceFields(instance)\n attachWevuPropKeys(instance)\n mountRuntimeInstance(instance, runtimeApp, watch, setup, {\n deferSetData: true,\n snapshotOmitKeys: directPropsDerivedKeys,\n })\n syncWevuPropsFromInstance(instance)\n enableDeferredSetData(instance)\n return { runtime: resolveRuntime(instance), mounted: true }\n }\n\n const callVueLifecycle = (instance: InternalRuntimeState, name: string, args: any[]) => {\n const hook = vueLifecycles[name]\n if (typeof hook === 'function') {\n return hook.apply(resolveLifecycleContext(instance), args)\n }\n return undefined\n }\n\n const deferPageUntilNavigation = (instance: InternalRuntimeState, task: () => void) => {\n if (!isPage) {\n task()\n return\n }\n const initialNavigationPromise = ensureInitialNavigation(instance as any, undefined, {\n start: false,\n onComplete: (shouldMount) => {\n if (shouldMount) {\n task()\n }\n },\n })\n if (!initialNavigationPromise) {\n task()\n }\n }\n\n const ensureReadyRuntime = (instance: InternalRuntimeState) => {\n if (resolveRuntime(instance) || typeof vueLifecycles.mounted !== 'function') {\n return\n }\n const result = mountMissingRuntime(instance)\n if (result.mounted) {\n callVueLifecycle(instance, 'created', [])\n callVueLifecycle(instance, 'beforeMount', [])\n }\n }\n\n const pageMethodBridges: Record<string, (...args: any[]) => any> = {}\n const attachRuntimeLayoutHosts = (instance: InternalRuntimeState) => {\n if (activeLayoutHosts) {\n layoutHooks?.attachHosts(activeLayoutHosts, instance)\n }\n }\n const attachPageLayoutSetter = (instance: InternalRuntimeState) => {\n if (isPage && layoutHooks) {\n layoutHooks?.attachPageSetter(instance)\n }\n }\n if (isPage) {\n const methodBridgeHookNames = ['onPageScroll', 'onPullDownRefresh', 'onReachBottom', 'onShareAppMessage', 'onShareTimeline', 'onAddToFavorites']\n for (const hookName of methodBridgeHookNames) {\n const pageHook = (pageLifecycleHooks as any)[hookName]\n if (typeof pageHook !== 'function') {\n continue\n }\n if (typeof (finalMethods as any)[hookName] === 'function') {\n continue\n }\n pageMethodBridges[hookName] = function pageMethodBridge(this: InternalRuntimeState, ...args: any[]) {\n return pageHook.apply(this, args)\n }\n }\n }\n\n const componentDefinition = {\n ...restOptions,\n ...(isPage ? pageLifecycleHooks : {}),\n observers: finalObservers,\n lifetimes: {\n ...userLifetimes,\n created: function created(this: InternalRuntimeState, ...args: any[]) {\n pendingAttachment.add(this)\n applyExtraInstanceFields(this)\n attachWevuPropKeys(this)\n if (activeTemplateRefs) {\n runtimeCapabilityRegistry.templateRefs?.attachBindings(this, activeTemplateRefs)\n }\n const runCreated = () => {\n callVueLifecycle(this, 'beforeCreate', args)\n if (setupLifecycle === 'created') {\n try {\n mountRuntimeInstance(this, runtimeApp, watch, setup, {\n deferSetData: true,\n snapshotOmitKeys: directPropsDerivedKeys,\n })\n }\n catch (error) {\n const label = getRuntimeOwnerLabel(this)\n throw new Error(`[wevu] mount runtime failed in created (${label}): ${error instanceof Error ? error.message : String(error)}`)\n }\n syncWevuPropsFromInstance(this)\n attachPageLayoutSetter(this)\n }\n if (typeof (userLifetimes as any).created === 'function') {\n ;(userLifetimes as any).created.apply(this, args)\n }\n }\n deferPageUntilNavigation(this, runCreated)\n },\n moved: function moved(this: InternalRuntimeState, ...args: any[]) {\n callHookList(this, 'onMoved', args)\n if (typeof (userLifetimes as any).moved === 'function') {\n ;(userLifetimes as any).moved.apply(this, args)\n }\n },\n attached: function attached(this: InternalRuntimeState, ...args: any[]) {\n pendingAttachment.delete(this)\n applyExtraInstanceFields(this)\n attachWevuPropKeys(this)\n if (activeTemplateRefs && !runtimeCapabilityRegistry.templateRefs?.hasBindings(this)) {\n runtimeCapabilityRegistry.templateRefs?.attachBindings(this, activeTemplateRefs)\n }\n deferPageUntilNavigation(this, () => {\n if (setupLifecycle !== 'created' || !(this as any).__wevu) {\n try {\n mountRuntimeInstance(this, runtimeApp, watch, setup, {\n deferSetData: true,\n snapshotOmitKeys: directPropsDerivedKeys,\n })\n }\n catch (error) {\n const label = getRuntimeOwnerLabel(this)\n throw new Error(`[wevu] mount runtime failed in attached (${label}): ${error instanceof Error ? error.message : String(error)}`)\n }\n }\n syncWevuPropsFromInstance(this)\n callVueLifecycle(this, 'created', args)\n callVueLifecycle(this, 'beforeMount', args)\n attachPageLayoutSetter(this)\n attachRuntimeLayoutHosts(this)\n enableDeferredSetData(this)\n callHookList(this, 'onAttached', args)\n if (typeof (userLifetimes as any).attached === 'function') {\n ;(userLifetimes as any).attached.apply(this, args)\n }\n })\n },\n ready: function ready(this: InternalRuntimeState, ...args: any[]) {\n // 微信可能向初始条件分支中已被替换、从未 attached 的实例发送 ready。\n // 此时保留原生回调,不得将它当作已挂载实例的 wrapper 丢失而补挂载。\n if (pendingAttachment.has(this)) {\n return userLifetimes.ready?.apply(this, args)\n }\n if (isPage && !(this as any)[WEVU_READY_CALLED_KEY]) {\n const initialNavigationPromise = ensureInitialNavigation(this as any, undefined, {\n start: true,\n onComplete: (shouldMount) => {\n if (shouldMount && !(this as any).__wevuInitialNavigationReady) {\n ;(this as any).__wevuInitialNavigationReady = true\n componentDefinition.lifetimes.ready.call(this, ...args)\n }\n },\n })\n if (initialNavigationPromise && !(this as any).__wevuInitialNavigationReady) {\n return\n }\n }\n ensureReadyRuntime(this)\n if (isPage && typeof (pageLifecycleHooks as any).onReady === 'function') {\n const wasReadyCalled = Boolean((this as any)[WEVU_READY_CALLED_KEY])\n ;(pageLifecycleHooks as any).onReady.call(this, ...args)\n if (!wasReadyCalled) {\n const callMounted = () => callVueLifecycle(this, 'mounted', args)\n const initialNavigationPromise = ensureInitialNavigation(this as any, undefined, {\n start: false,\n onComplete: (shouldMount) => {\n if (shouldMount) {\n callMounted()\n }\n },\n })\n if (!initialNavigationPromise) {\n callMounted()\n }\n }\n if (typeof (userLifetimes as any).ready === 'function') {\n ;(userLifetimes as any).ready.apply(this, args)\n }\n return\n }\n if (!(this as any)[WEVU_READY_CALLED_KEY]) {\n ;(this as any)[WEVU_READY_CALLED_KEY] = true\n syncWevuPropsFromInstance(this)\n runtimeCapabilityRegistry.templateRefs?.scheduleOwner(this)\n scheduleTemplateRefs(this, () => {\n callHookList(this, 'onReady', args)\n callVueLifecycle(this, 'mounted', args)\n if (typeof (userLifetimes as any).ready === 'function') {\n ;(userLifetimes as any).ready.apply(this, args)\n }\n })\n return\n }\n if (typeof (userLifetimes as any).ready === 'function') {\n ;(userLifetimes as any).ready.apply(this, args)\n }\n },\n detached: function detached(this: InternalRuntimeState, ...args: any[]) {\n if (isPage && typeof (pageLifecycleHooks as any).onUnload === 'function') {\n runTeardownSteps([\n () => callVueLifecycle(this, 'beforeUnmount', args),\n () => callVueLifecycle(this, 'beforeDestroy', args),\n () => runtimeCapabilityRegistry.templateRefs?.scheduleOwner(this),\n () => callHookList(this, 'onDetached', args),\n () => (pageLifecycleHooks as any).onUnload.call(this, ...args),\n () => {\n if (typeof (userLifetimes as any).detached === 'function') {\n ;(userLifetimes as any).detached.apply(this, args)\n }\n },\n () => callVueLifecycle(this, 'unmounted', args),\n () => callVueLifecycle(this, 'destroyed', args),\n ])\n return\n }\n runTeardownSteps([\n () => callVueLifecycle(this, 'beforeUnmount', args),\n () => callVueLifecycle(this, 'beforeDestroy', args),\n () => runtimeCapabilityRegistry.templateRefs?.scheduleOwner(this),\n () => callHookList(this, 'onDetached', args),\n () => {\n if (activeLayoutHosts) {\n layoutHooks?.detachHosts(activeLayoutHosts, this)\n }\n },\n () => teardownRuntimeInstance(this),\n () => callVueLifecycle(this, 'unmounted', args),\n () => callVueLifecycle(this, 'destroyed', args),\n () => {\n if (typeof (userLifetimes as any).detached === 'function') {\n ;(userLifetimes as any).detached.apply(this, args)\n }\n },\n ])\n },\n error: function error(this: InternalRuntimeState, ...args: any[]) {\n callHookList(this, 'onError', args)\n if (typeof (userLifetimes as any).error === 'function') {\n ;(userLifetimes as any).error.apply(this, args)\n }\n },\n },\n pageLifetimes: {\n ...userPageLifetimes,\n show: function show(this: InternalRuntimeState, ...args: any[]) {\n if (isPage && typeof (pageLifecycleHooks as any).onShow === 'function') {\n ;(pageLifecycleHooks as any).onShow.call(this, ...args)\n if (typeof (userPageLifetimes as any).show === 'function') {\n ;(userPageLifetimes as any).show.apply(this, args)\n }\n return\n }\n setRuntimeSetDataVisibility(this, true)\n callHookList(this, 'onShow', args)\n if (typeof (userPageLifetimes as any).show === 'function') {\n ;(userPageLifetimes as any).show.apply(this, args)\n }\n },\n hide: function hide(this: InternalRuntimeState, ...args: any[]) {\n if (isPage && typeof (pageLifecycleHooks as any).onHide === 'function') {\n ;(pageLifecycleHooks as any).onHide.call(this, ...args)\n if (typeof (userPageLifetimes as any).hide === 'function') {\n ;(userPageLifetimes as any).hide.apply(this, args)\n }\n return\n }\n setRuntimeSetDataVisibility(this, false)\n callHookList(this, 'onHide', args)\n if (typeof (userPageLifetimes as any).hide === 'function') {\n ;(userPageLifetimes as any).hide.apply(this, args)\n }\n },\n resize: function resize(this: InternalRuntimeState, ...args: any[]) {\n if (isPage && typeof (pageLifecycleHooks as any).onResize === 'function') {\n ;(pageLifecycleHooks as any).onResize.call(this, ...args)\n if (typeof (userPageLifetimes as any).resize === 'function') {\n ;(userPageLifetimes as any).resize.apply(this, args)\n }\n return\n }\n callHookList(this, 'onResize', args)\n if (typeof (userPageLifetimes as any).resize === 'function') {\n ;(userPageLifetimes as any).resize.apply(this, args)\n }\n },\n routeDone: function routeDone(this: InternalRuntimeState, ...args: any[]) {\n if (isPage && typeof (pageLifecycleHooks as any).onRouteDone === 'function') {\n ;(pageLifecycleHooks as any).onRouteDone.call(this, ...args)\n if (typeof (userPageLifetimes as any).routeDone === 'function') {\n ;(userPageLifetimes as any).routeDone.apply(this, args)\n }\n return\n }\n callHookList(this, 'onRouteDone', args)\n if (typeof (userPageLifetimes as any).routeDone === 'function') {\n ;(userPageLifetimes as any).routeDone.apply(this, args)\n }\n },\n },\n methods: {\n ...pageMethodBridges,\n ...finalMethods,\n [WEVU_RESOLVE_PUBLIC_INSTANCE_METHOD]: function resolvePublicInstance(this: InternalRuntimeState) {\n const result = mountMissingRuntime(this)\n if (result.mounted) {\n callVueLifecycle(this, 'created', [])\n callVueLifecycle(this, 'beforeMount', [])\n }\n return result.runtime?.proxy\n },\n },\n options: finalOptions,\n }\n if (!registerNative) {\n return componentDefinition\n }\n\n const statefulHmrBridge = getMiniProgramRuntimeGlobalObject()?.[WEAPP_VITE_STATEFUL_HMR_BRIDGE_KEY]\n if (typeof statefulHmrBridge?.trackWevuComponent === 'function') {\n const definition = statefulHmrBridge.trackWevuComponent(componentDefinition, (\n instance: InternalRuntimeState,\n stateSnapshot?: Record<string, any>,\n ) => {\n refreshRuntimeInstance(instance, runtimeApp, watch, setup, {\n snapshotOmitKeys: directPropsDerivedKeys,\n stateSnapshot,\n })\n syncWevuPropsFromInstance(instance)\n attachPageLayoutSetter(instance)\n attachRuntimeLayoutHosts(instance)\n enableDeferredSetData(instance, { rehydrateSetupState: true })\n }, (instance: InternalRuntimeState) => {\n // HMR 仅抑制用户卸载钩子;被宿主替换的实例仍须停止响应式任务和原生数据写入。\n runTeardownSteps([\n () => activeLayoutHosts && layoutHooks?.detachHosts(activeLayoutHosts, instance),\n () => teardownRuntimeInstance(instance, { skipHooks: true }),\n ])\n })\n if (!statefulHmrBridge.isApplying()) {\n registerNativeComponentDefinition(definition, isPage)\n }\n return definition\n }\n registerNativeComponentDefinition(componentDefinition, isPage)\n return componentDefinition\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"registerDefinition.mjs","names":[],"sources":["../../../../../src/runtime/register/component/registerDefinition.ts"],"sourcesContent":["import type { LayoutHostBinding, TemplateRefBinding } from '../../capabilities'\nimport type {\n ComponentPropsOptions,\n ComputedDefinitions,\n DefineComponentOptions,\n InternalRuntimeState,\n MethodDefinitions,\n RuntimeApp,\n} from '../../types'\nimport type { WatchMap } from '../watch'\nimport type { StatefulHmrRegistrationInputs } from './hmrRegistration'\nimport {\n WEAPP_VITE_STATEFUL_HMR_BRIDGE_KEY,\n WEVU_NATIVE_DECLARATION_METHOD,\n WEVU_NATIVE_SLOT_PARENT_METHOD,\n WEVU_PUBLIC_RUNTIME_KEY,\n WEVU_READY_CALLED_KEY,\n WEVU_RESOLVE_PUBLIC_INSTANCE_METHOD,\n WEVU_RUNTIME_KEY,\n} from '@weapp-core/constants'\nimport { requireRuntimeCapability, runtimeCapabilityRegistry } from '../../capabilities'\nimport { callHookList } from '../../hooks'\nimport { ensureInitialNavigation } from '../../navigationLifecycle'\nimport { getMiniProgramRuntimeGlobalObject } from '../../platform'\nimport { runTeardownSteps } from '../../teardown'\nimport { enableDeferredSetData, mountRuntimeInstance, refreshRuntimeInstance, setRuntimeSetDataVisibility, teardownRuntimeInstance } from '../runtimeInstance'\nimport { receiveNativeDeclaration } from '../runtimeInstance/nativeDeclaration'\nimport { receiveNativeSlotParent } from '../runtimeInstance/provideContext'\nimport { createStatefulHmrRegistrationContract } from './hmrRegistration'\nimport { registerNativeComponentDefinition } from './registerNativeDefinition'\n\ntype ImportMetaWithEnv = ImportMeta & { env?: { PLATFORM?: string } }\n\nexport function registerComponentDefinition<D extends object, C extends ComputedDefinitions, M extends MethodDefinitions>(options: {\n runtimeApp: RuntimeApp<D, C, M>\n watch: WatchMap | undefined\n setup: DefineComponentOptions<ComponentPropsOptions, D, C, M>['setup']\n restOptions: Record<string, any>\n statefulHmrRegistration: StatefulHmrRegistrationInputs\n pageLifecycleHooks: Record<string, any>\n finalObservers: Record<string, any>\n userLifetimes: Record<string, any>\n userPageLifetimes: Record<string, any>\n finalMethods: Record<string, (...args: any[]) => any>\n finalOptions: Record<string, any>\n applyExtraInstanceFields: (instance: InternalRuntimeState) => void\n templateRefs: TemplateRefBinding[] | undefined\n layoutHosts: LayoutHostBinding[] | undefined\n attachWevuPropKeys: (instance: InternalRuntimeState) => void\n setupLifecycle: 'created' | 'attached'\n syncWevuPropsFromInstance: (instance: InternalRuntimeState) => void\n syncWevuPropsFromValues: (instance: InternalRuntimeState, values: Record<string, unknown> | undefined) => void\n directPropsDerivedKeys: string[]\n isPage: boolean\n nativeSlotContext: boolean\n vueLifecycles: Record<string, unknown>\n getRuntimeOwnerLabel: (instance: InternalRuntimeState) => string\n registerNative?: boolean\n}) {\n const {\n runtimeApp,\n watch,\n setup,\n restOptions,\n statefulHmrRegistration,\n pageLifecycleHooks,\n finalObservers,\n userLifetimes,\n userPageLifetimes,\n finalMethods,\n finalOptions,\n applyExtraInstanceFields,\n templateRefs,\n layoutHosts,\n attachWevuPropKeys,\n setupLifecycle,\n syncWevuPropsFromInstance,\n directPropsDerivedKeys,\n isPage,\n nativeSlotContext,\n vueLifecycles,\n getRuntimeOwnerLabel,\n registerNative = true,\n } = options\n const activeTemplateRefs = Array.isArray(templateRefs) && templateRefs.length > 0\n ? templateRefs\n : undefined\n const pendingAttachment = new WeakSet<InternalRuntimeState>()\n if (activeTemplateRefs) {\n requireRuntimeCapability('templateRefs', 'registerComponentDefinition(template refs)')\n }\n const activeLayoutHosts = Array.isArray(layoutHosts) && layoutHosts.length > 0\n ? layoutHosts\n : undefined\n const layoutHooks = activeLayoutHosts\n ? requireRuntimeCapability('layout', 'registerComponentDefinition(layout hosts)')\n : undefined\n\n const scheduleTemplateRefs = (instance: InternalRuntimeState, onResolved?: () => void) => {\n if (activeTemplateRefs) {\n runtimeCapabilityRegistry.templateRefs?.schedule(instance, onResolved)\n return\n }\n onResolved?.()\n }\n\n const resolveRuntime = (instance: InternalRuntimeState) => {\n const directRuntime = (instance as any).__wevu ?? (instance as any)[WEVU_PUBLIC_RUNTIME_KEY]\n if (directRuntime) {\n return directRuntime\n }\n const runtimeState = (instance as any).$state\n if (runtimeState && typeof runtimeState === 'object') {\n return (runtimeState as any)[WEVU_RUNTIME_KEY]\n }\n return undefined\n }\n\n const resolveLifecycleContext = (instance: InternalRuntimeState) => {\n const runtimeProxy = resolveRuntime(instance)?.proxy\n if (runtimeProxy) {\n return runtimeProxy\n }\n return runtimeCapabilityRegistry.scopedSlots?.resolveLifecycleProxy(instance) ?? instance\n }\n\n const mountMissingRuntime = (instance: InternalRuntimeState) => {\n const existing = resolveRuntime(instance)\n if (existing) {\n return { runtime: existing, mounted: false }\n }\n applyExtraInstanceFields(instance)\n attachWevuPropKeys(instance)\n mountRuntimeInstance(instance, runtimeApp, watch, setup, {\n deferSetData: true,\n snapshotOmitKeys: directPropsDerivedKeys,\n attached: !pendingAttachment.has(instance),\n })\n syncWevuPropsFromInstance(instance)\n enableDeferredSetData(instance)\n return { runtime: resolveRuntime(instance), mounted: true }\n }\n\n const callVueLifecycle = (instance: InternalRuntimeState, name: string, args: any[]) => {\n const hook = vueLifecycles[name]\n if (typeof hook === 'function') {\n return hook.apply(resolveLifecycleContext(instance), args)\n }\n return undefined\n }\n\n const deferPageUntilNavigation = (instance: InternalRuntimeState, task: () => void) => {\n if (!isPage) {\n task()\n return\n }\n const initialNavigationPromise = ensureInitialNavigation(instance as any, undefined, {\n start: false,\n onComplete: (shouldMount) => {\n if (shouldMount) {\n task()\n }\n },\n })\n if (!initialNavigationPromise) {\n task()\n }\n }\n\n const ensureReadyRuntime = (instance: InternalRuntimeState) => {\n if (resolveRuntime(instance) || typeof vueLifecycles.mounted !== 'function') {\n return\n }\n const result = mountMissingRuntime(instance)\n if (result.mounted) {\n callVueLifecycle(instance, 'created', [])\n callVueLifecycle(instance, 'beforeMount', [])\n }\n }\n\n const pageMethodBridges: Record<string, (...args: any[]) => any> = {}\n const attachRuntimeLayoutHosts = (instance: InternalRuntimeState) => {\n if (activeLayoutHosts) {\n layoutHooks?.attachHosts(activeLayoutHosts, instance)\n }\n }\n const attachPageLayoutSetter = (instance: InternalRuntimeState) => {\n if (isPage && layoutHooks) {\n layoutHooks?.attachPageSetter(instance)\n }\n }\n if (isPage) {\n const methodBridgeHookNames = ['onPageScroll', 'onPullDownRefresh', 'onReachBottom', 'onShareAppMessage', 'onShareTimeline', 'onAddToFavorites']\n for (const hookName of methodBridgeHookNames) {\n const pageHook = (pageLifecycleHooks as any)[hookName]\n if (typeof pageHook !== 'function') {\n continue\n }\n if (typeof (finalMethods as any)[hookName] === 'function') {\n continue\n }\n pageMethodBridges[hookName] = function pageMethodBridge(this: InternalRuntimeState, ...args: any[]) {\n return pageHook.apply(this, args)\n }\n }\n }\n\n const methods: Record<string, (...args: any[]) => any> = {\n ...pageMethodBridges,\n ...finalMethods,\n [WEVU_RESOLVE_PUBLIC_INSTANCE_METHOD]: function resolvePublicInstance(this: InternalRuntimeState) {\n const result = mountMissingRuntime(this)\n if (result.mounted) {\n callVueLifecycle(this, 'created', [])\n callVueLifecycle(this, 'beforeMount', [])\n }\n return result.runtime?.proxy\n },\n }\n if (\n (!(import.meta as ImportMetaWithEnv).env?.PLATFORM || (import.meta as ImportMetaWithEnv).env?.PLATFORM === 'weapp')\n && nativeSlotContext\n ) {\n methods[WEVU_NATIVE_SLOT_PARENT_METHOD] = receiveNativeSlotParent\n methods[WEVU_NATIVE_DECLARATION_METHOD] = receiveNativeDeclaration\n }\n\n const componentDefinition = {\n ...restOptions,\n ...(isPage ? pageLifecycleHooks : {}),\n observers: finalObservers,\n lifetimes: {\n ...userLifetimes,\n created: function created(this: InternalRuntimeState, ...args: any[]) {\n pendingAttachment.add(this)\n applyExtraInstanceFields(this)\n attachWevuPropKeys(this)\n if (activeTemplateRefs) {\n runtimeCapabilityRegistry.templateRefs?.attachBindings(this, activeTemplateRefs)\n }\n const runCreated = () => {\n callVueLifecycle(this, 'beforeCreate', args)\n if (setupLifecycle === 'created') {\n try {\n mountRuntimeInstance(this, runtimeApp, watch, setup, {\n deferSetData: true,\n snapshotOmitKeys: directPropsDerivedKeys,\n })\n }\n catch (error) {\n const label = getRuntimeOwnerLabel(this)\n throw new Error(`[wevu] mount runtime failed in created (${label}): ${error instanceof Error ? error.message : String(error)}`)\n }\n syncWevuPropsFromInstance(this)\n attachPageLayoutSetter(this)\n }\n if (typeof (userLifetimes as any).created === 'function') {\n ;(userLifetimes as any).created.apply(this, args)\n }\n }\n deferPageUntilNavigation(this, runCreated)\n },\n moved: function moved(this: InternalRuntimeState, ...args: any[]) {\n callHookList(this, 'onMoved', args)\n if (typeof (userLifetimes as any).moved === 'function') {\n ;(userLifetimes as any).moved.apply(this, args)\n }\n },\n attached: function attached(this: InternalRuntimeState, ...args: any[]) {\n pendingAttachment.delete(this)\n applyExtraInstanceFields(this)\n attachWevuPropKeys(this)\n if (activeTemplateRefs && !runtimeCapabilityRegistry.templateRefs?.hasBindings(this)) {\n runtimeCapabilityRegistry.templateRefs?.attachBindings(this, activeTemplateRefs)\n }\n deferPageUntilNavigation(this, () => {\n if (setupLifecycle !== 'created' || !(this as any).__wevu) {\n try {\n mountRuntimeInstance(this, runtimeApp, watch, setup, {\n deferSetData: true,\n snapshotOmitKeys: directPropsDerivedKeys,\n attached: true,\n })\n }\n catch (error) {\n const label = getRuntimeOwnerLabel(this)\n throw new Error(`[wevu] mount runtime failed in attached (${label}): ${error instanceof Error ? error.message : String(error)}`)\n }\n }\n syncWevuPropsFromInstance(this)\n callVueLifecycle(this, 'created', args)\n callVueLifecycle(this, 'beforeMount', args)\n attachPageLayoutSetter(this)\n attachRuntimeLayoutHosts(this)\n enableDeferredSetData(this)\n callHookList(this, 'onAttached', args)\n if (typeof (userLifetimes as any).attached === 'function') {\n ;(userLifetimes as any).attached.apply(this, args)\n }\n })\n },\n ready: function ready(this: InternalRuntimeState, ...args: any[]) {\n // 微信可能向初始条件分支中已被替换、从未 attached 的实例发送 ready。\n // 此时保留原生回调,不得将它当作已挂载实例的 wrapper 丢失而补挂载。\n if (pendingAttachment.has(this)) {\n return userLifetimes.ready?.apply(this, args)\n }\n if (isPage && !(this as any)[WEVU_READY_CALLED_KEY]) {\n const initialNavigationPromise = ensureInitialNavigation(this as any, undefined, {\n start: true,\n onComplete: (shouldMount) => {\n if (shouldMount && !(this as any).__wevuInitialNavigationReady) {\n ;(this as any).__wevuInitialNavigationReady = true\n componentDefinition.lifetimes.ready.call(this, ...args)\n }\n },\n })\n if (initialNavigationPromise && !(this as any).__wevuInitialNavigationReady) {\n return\n }\n }\n ensureReadyRuntime(this)\n if (isPage && typeof (pageLifecycleHooks as any).onReady === 'function') {\n const wasReadyCalled = Boolean((this as any)[WEVU_READY_CALLED_KEY])\n ;(pageLifecycleHooks as any).onReady.call(this, ...args)\n if (!wasReadyCalled) {\n const callMounted = () => callVueLifecycle(this, 'mounted', args)\n const initialNavigationPromise = ensureInitialNavigation(this as any, undefined, {\n start: false,\n onComplete: (shouldMount) => {\n if (shouldMount) {\n callMounted()\n }\n },\n })\n if (!initialNavigationPromise) {\n callMounted()\n }\n }\n if (typeof (userLifetimes as any).ready === 'function') {\n ;(userLifetimes as any).ready.apply(this, args)\n }\n return\n }\n if (!(this as any)[WEVU_READY_CALLED_KEY]) {\n ;(this as any)[WEVU_READY_CALLED_KEY] = true\n syncWevuPropsFromInstance(this)\n runtimeCapabilityRegistry.templateRefs?.scheduleOwner(this)\n scheduleTemplateRefs(this, () => {\n callHookList(this, 'onReady', args)\n callVueLifecycle(this, 'mounted', args)\n if (typeof (userLifetimes as any).ready === 'function') {\n ;(userLifetimes as any).ready.apply(this, args)\n }\n })\n return\n }\n if (typeof (userLifetimes as any).ready === 'function') {\n ;(userLifetimes as any).ready.apply(this, args)\n }\n },\n detached: function detached(this: InternalRuntimeState, ...args: any[]) {\n if (isPage && typeof (pageLifecycleHooks as any).onUnload === 'function') {\n runTeardownSteps([\n () => callVueLifecycle(this, 'beforeUnmount', args),\n () => callVueLifecycle(this, 'beforeDestroy', args),\n () => runtimeCapabilityRegistry.templateRefs?.scheduleOwner(this),\n () => callHookList(this, 'onDetached', args),\n () => (pageLifecycleHooks as any).onUnload.call(this, ...args),\n () => {\n if (typeof (userLifetimes as any).detached === 'function') {\n ;(userLifetimes as any).detached.apply(this, args)\n }\n },\n () => callVueLifecycle(this, 'unmounted', args),\n () => callVueLifecycle(this, 'destroyed', args),\n ])\n return\n }\n runTeardownSteps([\n () => callVueLifecycle(this, 'beforeUnmount', args),\n () => callVueLifecycle(this, 'beforeDestroy', args),\n () => runtimeCapabilityRegistry.templateRefs?.scheduleOwner(this),\n () => callHookList(this, 'onDetached', args),\n () => {\n if (activeLayoutHosts) {\n layoutHooks?.detachHosts(activeLayoutHosts, this)\n }\n },\n () => teardownRuntimeInstance(this),\n () => callVueLifecycle(this, 'unmounted', args),\n () => callVueLifecycle(this, 'destroyed', args),\n () => {\n if (typeof (userLifetimes as any).detached === 'function') {\n ;(userLifetimes as any).detached.apply(this, args)\n }\n },\n ])\n },\n error: function error(this: InternalRuntimeState, ...args: any[]) {\n callHookList(this, 'onError', args)\n if (typeof (userLifetimes as any).error === 'function') {\n ;(userLifetimes as any).error.apply(this, args)\n }\n },\n },\n pageLifetimes: {\n ...userPageLifetimes,\n show: function show(this: InternalRuntimeState, ...args: any[]) {\n if (isPage && typeof (pageLifecycleHooks as any).onShow === 'function') {\n ;(pageLifecycleHooks as any).onShow.call(this, ...args)\n if (typeof (userPageLifetimes as any).show === 'function') {\n ;(userPageLifetimes as any).show.apply(this, args)\n }\n return\n }\n setRuntimeSetDataVisibility(this, true)\n callHookList(this, 'onShow', args)\n if (typeof (userPageLifetimes as any).show === 'function') {\n ;(userPageLifetimes as any).show.apply(this, args)\n }\n },\n hide: function hide(this: InternalRuntimeState, ...args: any[]) {\n if (isPage && typeof (pageLifecycleHooks as any).onHide === 'function') {\n ;(pageLifecycleHooks as any).onHide.call(this, ...args)\n if (typeof (userPageLifetimes as any).hide === 'function') {\n ;(userPageLifetimes as any).hide.apply(this, args)\n }\n return\n }\n setRuntimeSetDataVisibility(this, false)\n callHookList(this, 'onHide', args)\n if (typeof (userPageLifetimes as any).hide === 'function') {\n ;(userPageLifetimes as any).hide.apply(this, args)\n }\n },\n resize: function resize(this: InternalRuntimeState, ...args: any[]) {\n if (isPage && typeof (pageLifecycleHooks as any).onResize === 'function') {\n ;(pageLifecycleHooks as any).onResize.call(this, ...args)\n if (typeof (userPageLifetimes as any).resize === 'function') {\n ;(userPageLifetimes as any).resize.apply(this, args)\n }\n return\n }\n callHookList(this, 'onResize', args)\n if (typeof (userPageLifetimes as any).resize === 'function') {\n ;(userPageLifetimes as any).resize.apply(this, args)\n }\n },\n routeDone: function routeDone(this: InternalRuntimeState, ...args: any[]) {\n if (isPage && typeof (pageLifecycleHooks as any).onRouteDone === 'function') {\n ;(pageLifecycleHooks as any).onRouteDone.call(this, ...args)\n if (typeof (userPageLifetimes as any).routeDone === 'function') {\n ;(userPageLifetimes as any).routeDone.apply(this, args)\n }\n return\n }\n callHookList(this, 'onRouteDone', args)\n if (typeof (userPageLifetimes as any).routeDone === 'function') {\n ;(userPageLifetimes as any).routeDone.apply(this, args)\n }\n },\n },\n methods,\n options: finalOptions,\n }\n if (!registerNative) {\n return componentDefinition\n }\n\n const statefulHmrBridge = getMiniProgramRuntimeGlobalObject()?.[WEAPP_VITE_STATEFUL_HMR_BRIDGE_KEY]\n if (typeof statefulHmrBridge?.trackWevuComponent === 'function') {\n const registrationContract = createStatefulHmrRegistrationContract(statefulHmrBridge, statefulHmrRegistration)\n const definition = statefulHmrBridge.trackWevuComponent(componentDefinition, (\n instance: InternalRuntimeState,\n stateSnapshot?: Record<string, any>,\n ) => {\n refreshRuntimeInstance(instance, runtimeApp, watch, setup, {\n snapshotOmitKeys: directPropsDerivedKeys,\n stateSnapshot,\n attached: !pendingAttachment.has(instance),\n })\n syncWevuPropsFromInstance(instance)\n attachPageLayoutSetter(instance)\n attachRuntimeLayoutHosts(instance)\n enableDeferredSetData(instance, { rehydrateSetupState: true })\n }, (instance: InternalRuntimeState) => {\n // HMR 仅抑制用户卸载钩子;被宿主替换的实例仍须停止响应式任务和原生数据写入。\n runTeardownSteps([\n () => activeLayoutHosts && layoutHooks?.detachHosts(activeLayoutHosts, instance),\n () => teardownRuntimeInstance(instance, { skipHooks: true }),\n ])\n }, registrationContract)\n if (!statefulHmrBridge.isApplying()) {\n registerNativeComponentDefinition(definition, isPage)\n }\n return definition\n }\n registerNativeComponentDefinition(componentDefinition, isPage)\n return componentDefinition\n}\n"],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import { createComponentMethods } from "./component/methods.mjs";
|
|
|
4
4
|
import { getRuntimeOwnerLabel, prepareComponentOptions } from "./component/options.mjs";
|
|
5
5
|
import { createPropsSync } from "./component/props.mjs";
|
|
6
6
|
import { registerComponentDefinition } from "./component/registerDefinition.mjs";
|
|
7
|
-
import { WEVU_EXPOSED_KEY, WEVU_HOOKS_KEY } from "@weapp-core/constants";
|
|
7
|
+
import { WEVU_EXPOSED_KEY, WEVU_HOOKS_KEY, WEVU_NATIVE_SLOT_CONTEXT_KEY } from "@weapp-core/constants";
|
|
8
8
|
|
|
9
9
|
//#region src/runtime/register/component.ts
|
|
10
10
|
/**
|
|
@@ -34,24 +34,24 @@ function registerComponent(runtimeApp, methods, watch, setup, mpOptions, options
|
|
|
34
34
|
if (Array.isArray(entry)) return entry.length > 0;
|
|
35
35
|
return typeof entry === "function";
|
|
36
36
|
};
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
...base
|
|
45
|
-
};
|
|
46
|
-
return base ?? exposed;
|
|
37
|
+
const userExport = restOptions.export;
|
|
38
|
+
restOptions.export = function __wevu_export() {
|
|
39
|
+
const exposed = this[WEVU_EXPOSED_KEY] ?? {};
|
|
40
|
+
const base = typeof userExport === "function" ? userExport.call(this) : {};
|
|
41
|
+
if (base && typeof base === "object" && !Array.isArray(base)) return {
|
|
42
|
+
...exposed,
|
|
43
|
+
...base
|
|
47
44
|
};
|
|
48
|
-
|
|
45
|
+
return base ?? exposed;
|
|
46
|
+
};
|
|
49
47
|
const finalOptions = {
|
|
50
48
|
multipleSlots: userOptions.multipleSlots ?? true,
|
|
51
49
|
...userOptions
|
|
52
50
|
};
|
|
51
|
+
const nativeSlotContext = (!import.meta.env?.PLATFORM || import.meta.env?.PLATFORM === "weapp") && mpOptions[WEVU_NATIVE_SLOT_CONTEXT_KEY] === true;
|
|
53
52
|
const { attachWevuPropKeys, directPropsDerivedKeys, syncWevuPropsFromInstance, syncWevuPropsFromValues, finalObservers } = createPropsSync({
|
|
54
53
|
restOptions,
|
|
54
|
+
nativeSlotContext,
|
|
55
55
|
propsAliases,
|
|
56
56
|
propsDerivedKeys,
|
|
57
57
|
userObservers
|
|
@@ -102,6 +102,16 @@ function registerComponent(runtimeApp, methods, watch, setup, mpOptions, options
|
|
|
102
102
|
watch,
|
|
103
103
|
setup,
|
|
104
104
|
restOptions,
|
|
105
|
+
statefulHmrRegistration: {
|
|
106
|
+
userObservers,
|
|
107
|
+
userExport,
|
|
108
|
+
propsAliases,
|
|
109
|
+
propsDerivedKeys,
|
|
110
|
+
templateRefs,
|
|
111
|
+
layoutHosts,
|
|
112
|
+
setupLifecycle,
|
|
113
|
+
nativeSlotContext
|
|
114
|
+
},
|
|
105
115
|
pageLifecycleHooks,
|
|
106
116
|
finalObservers,
|
|
107
117
|
userLifetimes,
|
|
@@ -116,6 +126,7 @@ function registerComponent(runtimeApp, methods, watch, setup, mpOptions, options
|
|
|
116
126
|
syncWevuPropsFromInstance,
|
|
117
127
|
syncWevuPropsFromValues,
|
|
118
128
|
directPropsDerivedKeys,
|
|
129
|
+
nativeSlotContext,
|
|
119
130
|
isPage,
|
|
120
131
|
vueLifecycles,
|
|
121
132
|
getRuntimeOwnerLabel,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component.mjs","names":[],"sources":["../../../../src/runtime/register/component.ts"],"sourcesContent":["import type { ComponentPropsOptions, ComputedDefinitions, DefineComponentOptions, InternalRuntimeState, MethodDefinitions, MiniProgramComponentRawOptions, RuntimeApp } from '../types'\nimport type { WatchMap } from './watch'\nimport { WEVU_EXPOSED_KEY, WEVU_HOOKS_KEY } from '@weapp-core/constants'\nimport { resolveComponentFeatures } from './component/features'\nimport { createPageLifecycleHooks } from './component/lifecycle'\nimport { createComponentMethods } from './component/methods'\nimport { getRuntimeOwnerLabel, prepareComponentOptions } from './component/options'\nimport { createPropsSync } from './component/props'\nimport { registerComponentDefinition } from './component/registerDefinition'\n\n/**\n * 注册组件入口(框架内部使用)。\n * @internal\n */\nexport function registerComponent<D extends object, C extends ComputedDefinitions, M extends MethodDefinitions>(\n runtimeApp: RuntimeApp<D, C, M>,\n methods: MethodDefinitions,\n watch: WatchMap | undefined,\n setup: DefineComponentOptions<ComponentPropsOptions, D, C, M>['setup'],\n mpOptions: MiniProgramComponentRawOptions,\n options: { registerNative?: boolean } = {},\n) {\n const {\n userMethods,\n userLifetimes,\n userPageLifetimes,\n userOptions,\n restOptions,\n topLevelMethods,\n templateRefs,\n layoutHosts,\n propsAliases,\n propsDerivedKeys,\n userObservers,\n setupLifecycle,\n vueLifecycles,\n isPage,\n features,\n userOnLoad,\n userOnUnload,\n userOnShow,\n userOnHide,\n userOnReady,\n userOnSaveExitState,\n userOnPullDownRefresh,\n userOnReachBottom,\n userOnPageScroll,\n userOnRouteDone,\n userOnTabItemTap,\n userOnResize,\n userOnShareAppMessage,\n userOnShareTimeline,\n userOnAddToFavorites,\n applyExtraInstanceFields,\n } = prepareComponentOptions(mpOptions)\n\n const {\n enableOnPullDownRefresh,\n enableOnReachBottom,\n enableOnPageScroll,\n enableOnRouteDone,\n enableOnRouteDoneFallback,\n enableOnTabItemTap,\n enableOnResize,\n enableOnShareAppMessage,\n enableOnShareTimeline,\n enableOnAddToFavorites,\n enableOnSaveExitState,\n effectiveOnSaveExitState,\n effectiveOnPullDownRefresh,\n effectiveOnReachBottom,\n effectiveOnPageScroll,\n effectiveOnRouteDone,\n effectiveOnTabItemTap,\n effectiveOnResize,\n effectiveOnShareAppMessage,\n effectiveOnShareTimeline,\n effectiveOnAddToFavorites,\n } = resolveComponentFeatures({\n features,\n userOnSaveExitState,\n userOnPullDownRefresh,\n userOnReachBottom,\n userOnPageScroll,\n userOnRouteDone,\n userOnTabItemTap,\n userOnResize,\n userOnShareAppMessage,\n userOnShareTimeline,\n userOnAddToFavorites,\n })\n\n const hasHook = (target: InternalRuntimeState, name: string) => {\n const hooks = target[WEVU_HOOKS_KEY]\n if (!hooks) {\n return false\n }\n const entry = (hooks as any)[name]\n if (!entry) {\n return false\n }\n if (Array.isArray(entry)) {\n return entry.length > 0\n }\n return typeof entry === 'function'\n }\n\n // 自动对齐 Vue 3 的 expose:\n // - 若用户未提供 component-export 的 export(),默认返回 setup() 中 expose() 写入的 __wevuExposed\n // - 若用户同时提供 export() 与 expose(),则自动浅合并(export() 优先级更高)\n
|
|
1
|
+
{"version":3,"file":"component.mjs","names":[],"sources":["../../../../src/runtime/register/component.ts"],"sourcesContent":["import type { ComponentPropsOptions, ComputedDefinitions, DefineComponentOptions, InternalRuntimeState, MethodDefinitions, MiniProgramComponentRawOptions, RuntimeApp } from '../types'\nimport type { WatchMap } from './watch'\nimport { WEVU_EXPOSED_KEY, WEVU_HOOKS_KEY, WEVU_NATIVE_SLOT_CONTEXT_KEY } from '@weapp-core/constants'\nimport { resolveComponentFeatures } from './component/features'\nimport { createPageLifecycleHooks } from './component/lifecycle'\nimport { createComponentMethods } from './component/methods'\nimport { getRuntimeOwnerLabel, prepareComponentOptions } from './component/options'\nimport { createPropsSync } from './component/props'\nimport { registerComponentDefinition } from './component/registerDefinition'\n\ntype ImportMetaWithEnv = ImportMeta & { env?: { PLATFORM?: string } }\n\n/**\n * 注册组件入口(框架内部使用)。\n * @internal\n */\nexport function registerComponent<D extends object, C extends ComputedDefinitions, M extends MethodDefinitions>(\n runtimeApp: RuntimeApp<D, C, M>,\n methods: MethodDefinitions,\n watch: WatchMap | undefined,\n setup: DefineComponentOptions<ComponentPropsOptions, D, C, M>['setup'],\n mpOptions: MiniProgramComponentRawOptions,\n options: { registerNative?: boolean } = {},\n) {\n const {\n userMethods,\n userLifetimes,\n userPageLifetimes,\n userOptions,\n restOptions,\n topLevelMethods,\n templateRefs,\n layoutHosts,\n propsAliases,\n propsDerivedKeys,\n userObservers,\n setupLifecycle,\n vueLifecycles,\n isPage,\n features,\n userOnLoad,\n userOnUnload,\n userOnShow,\n userOnHide,\n userOnReady,\n userOnSaveExitState,\n userOnPullDownRefresh,\n userOnReachBottom,\n userOnPageScroll,\n userOnRouteDone,\n userOnTabItemTap,\n userOnResize,\n userOnShareAppMessage,\n userOnShareTimeline,\n userOnAddToFavorites,\n applyExtraInstanceFields,\n } = prepareComponentOptions(mpOptions)\n\n const {\n enableOnPullDownRefresh,\n enableOnReachBottom,\n enableOnPageScroll,\n enableOnRouteDone,\n enableOnRouteDoneFallback,\n enableOnTabItemTap,\n enableOnResize,\n enableOnShareAppMessage,\n enableOnShareTimeline,\n enableOnAddToFavorites,\n enableOnSaveExitState,\n effectiveOnSaveExitState,\n effectiveOnPullDownRefresh,\n effectiveOnReachBottom,\n effectiveOnPageScroll,\n effectiveOnRouteDone,\n effectiveOnTabItemTap,\n effectiveOnResize,\n effectiveOnShareAppMessage,\n effectiveOnShareTimeline,\n effectiveOnAddToFavorites,\n } = resolveComponentFeatures({\n features,\n userOnSaveExitState,\n userOnPullDownRefresh,\n userOnReachBottom,\n userOnPageScroll,\n userOnRouteDone,\n userOnTabItemTap,\n userOnResize,\n userOnShareAppMessage,\n userOnShareTimeline,\n userOnAddToFavorites,\n })\n\n const hasHook = (target: InternalRuntimeState, name: string) => {\n const hooks = target[WEVU_HOOKS_KEY]\n if (!hooks) {\n return false\n }\n const entry = (hooks as any)[name]\n if (!entry) {\n return false\n }\n if (Array.isArray(entry)) {\n return entry.length > 0\n }\n return typeof entry === 'function'\n }\n\n // 自动对齐 Vue 3 的 expose:\n // - 若用户未提供 component-export 的 export(),默认返回 setup() 中 expose() 写入的 __wevuExposed\n // - 若用户同时提供 export() 与 expose(),则自动浅合并(export() 优先级更高)\n const userExport = (restOptions as any).export\n ;(restOptions as any).export = function __wevu_export(this: InternalRuntimeState) {\n const exposed = (this as any)[WEVU_EXPOSED_KEY] ?? {}\n const base = typeof userExport === 'function' ? userExport.call(this) : {}\n\n if (base && typeof base === 'object' && !Array.isArray(base)) {\n return {\n ...exposed,\n ...base,\n }\n }\n\n // 若用户 export() 返回非对象(理论上不应发生),则保持原返回值;否则回退 exposed\n return base ?? exposed\n }\n\n // 默认启用多 slot 以兼容微信小程序具名插槽写法;用户显式配置时保持原值\n const finalOptions = {\n multipleSlots: (userOptions as any).multipleSlots ?? true,\n ...(userOptions as any),\n }\n\n const nativeSlotContext = (!(import.meta as ImportMetaWithEnv).env?.PLATFORM || (import.meta as ImportMetaWithEnv).env?.PLATFORM === 'weapp')\n && (mpOptions as Record<string, unknown>)[WEVU_NATIVE_SLOT_CONTEXT_KEY] === true\n const { attachWevuPropKeys, directPropsDerivedKeys, syncWevuPropsFromInstance, syncWevuPropsFromValues, finalObservers } = createPropsSync({\n restOptions,\n nativeSlotContext,\n propsAliases,\n propsDerivedKeys,\n userObservers,\n })\n\n const { finalMethods } = createComponentMethods({\n userMethods: {\n ...topLevelMethods,\n ...userMethods,\n },\n runtimeMethods: methods,\n })\n\n const pageLifecycleHooks = createPageLifecycleHooks({\n runtimeApp,\n watch,\n setup,\n userOnLoad,\n userOnUnload,\n userOnShow,\n userOnHide,\n userOnReady,\n isPage,\n enableOnSaveExitState,\n enableOnPullDownRefresh,\n enableOnReachBottom,\n enableOnPageScroll,\n enableOnRouteDone,\n enableOnRouteDoneFallback,\n enableOnTabItemTap,\n enableOnResize,\n enableOnShareAppMessage,\n enableOnShareTimeline,\n enableOnAddToFavorites,\n syncWevuPropsFromValues,\n effectiveOnSaveExitState,\n effectiveOnPullDownRefresh,\n effectiveOnReachBottom,\n effectiveOnPageScroll,\n effectiveOnRouteDone,\n effectiveOnTabItemTap,\n effectiveOnResize,\n effectiveOnShareAppMessage,\n effectiveOnShareTimeline,\n effectiveOnAddToFavorites,\n hasHook,\n })\n\n return registerComponentDefinition({\n runtimeApp,\n watch,\n setup,\n restOptions,\n statefulHmrRegistration: {\n userObservers,\n userExport,\n propsAliases,\n propsDerivedKeys,\n templateRefs,\n layoutHosts,\n setupLifecycle,\n nativeSlotContext,\n },\n pageLifecycleHooks,\n finalObservers,\n userLifetimes,\n userPageLifetimes,\n finalMethods,\n finalOptions,\n applyExtraInstanceFields,\n templateRefs,\n layoutHosts,\n attachWevuPropKeys,\n setupLifecycle,\n syncWevuPropsFromInstance,\n syncWevuPropsFromValues,\n directPropsDerivedKeys,\n nativeSlotContext,\n isPage,\n vueLifecycles,\n getRuntimeOwnerLabel,\n registerNative: options.registerNative,\n })\n}\n"],"mappings":";;;;;;;;;;;;;AAgBA,SAAgB,kBACd,YACA,SACA,OACA,OACA,WACA,UAAwC,CAAC,GACzC;CACA,MAAM,EACJ,aACA,eACA,mBACA,aACA,aACA,iBACA,cACA,aACA,cACA,kBACA,eACA,gBACA,eACA,QACA,UACA,YACA,cACA,YACA,YACA,aACA,qBACA,uBACA,mBACA,kBACA,iBACA,kBACA,cACA,uBACA,qBACA,sBACA,6BACE,wBAAwB,SAAS;CAErC,MAAM,EACJ,yBACA,qBACA,oBACA,mBACA,2BACA,oBACA,gBACA,yBACA,uBACA,wBACA,uBACA,0BACA,4BACA,wBACA,uBACA,sBACA,uBACA,mBACA,4BACA,0BACA,8BACE,yBAAyB;EAC3B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CAED,MAAM,WAAW,QAA8B,SAAiB;EAC9D,MAAM,QAAQ,OAAO;EACrB,IAAI,CAAC,OACH,OAAO;EAET,MAAM,QAAS,MAAc;EAC7B,IAAI,CAAC,OACH,OAAO;EAET,IAAI,MAAM,QAAQ,KAAK,GACrB,OAAO,MAAM,SAAS;EAExB,OAAO,OAAO,UAAU;CAC1B;CAKA,MAAM,aAAc,YAAoB;CACvC,AAAC,YAAoB,SAAS,SAAS,gBAA0C;EAChF,MAAM,UAAW,KAAa,qBAAqB,CAAC;EACpD,MAAM,OAAO,OAAO,eAAe,aAAa,WAAW,KAAK,IAAI,IAAI,CAAC;EAEzE,IAAI,QAAQ,OAAO,SAAS,YAAY,CAAC,MAAM,QAAQ,IAAI,GACzD,OAAO;GACL,GAAG;GACH,GAAG;EACL;EAIF,OAAO,QAAQ;CACjB;CAGA,MAAM,eAAe;EACnB,eAAgB,YAAoB,iBAAiB;EACrD,GAAI;CACN;CAEA,MAAM,qBAAqB,CAAE,YAAkC,KAAK,YAAa,YAAkC,KAAK,aAAa,YAC/H,UAAsC,kCAAkC;CAC9E,MAAM,EAAE,oBAAoB,wBAAwB,2BAA2B,yBAAyB,mBAAmB,gBAAgB;EACzI;EACA;EACA;EACA;EACA;CACF,CAAC;CAED,MAAM,EAAE,iBAAiB,uBAAuB;EAC9C,aAAa;GACX,GAAG;GACH,GAAG;EACL;EACA,gBAAgB;CAClB,CAAC;CAED,MAAM,qBAAqB,yBAAyB;EAClD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CAED,OAAO,4BAA4B;EACjC;EACA;EACA;EACA;EACA,yBAAyB;GACvB;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACF;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,gBAAgB,QAAQ;CAC1B,CAAC;AACH"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { isNativeBridgeMethod } from "../../nativeBridge.mjs";
|
|
2
2
|
import { setupInstanceMethodNames } from "./setupContext.mjs";
|
|
3
|
-
import { WEVU_NATIVE_INSTANCE_KEY, WEVU_PUBLIC_RUNTIME_KEY } from "@weapp-core/constants";
|
|
3
|
+
import { WEVU_HOST_INSTALL_METHOD_KEY, WEVU_NATIVE_INSTANCE_KEY, WEVU_PUBLIC_RUNTIME_KEY } from "@weapp-core/constants";
|
|
4
4
|
|
|
5
5
|
//#region src/runtime/register/runtimeInstance/methodBridge.ts
|
|
6
6
|
function hasNativeApis(instance) {
|
|
@@ -35,15 +35,22 @@ function syncRuntimeNativeInstance(runtime, instance) {
|
|
|
35
35
|
function bridgeRuntimeMethodsToTarget(target, runtime) {
|
|
36
36
|
try {
|
|
37
37
|
const methods = runtime.methods;
|
|
38
|
+
const installMethods = Reflect.get(target, WEVU_HOST_INSTALL_METHOD_KEY);
|
|
39
|
+
const hostMethods = typeof installMethods === "function" ? {} : void 0;
|
|
38
40
|
for (const name of Object.keys(methods)) {
|
|
39
41
|
if (setupInstanceMethodNames.includes(name)) continue;
|
|
40
|
-
if (typeof target[name] !== "function")
|
|
41
|
-
const
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
42
|
+
if (hostMethods || typeof target[name] !== "function") {
|
|
43
|
+
const bridged = function(...args) {
|
|
44
|
+
const runtime = this[WEVU_PUBLIC_RUNTIME_KEY] ?? target[WEVU_PUBLIC_RUNTIME_KEY];
|
|
45
|
+
syncRuntimeNativeInstance(runtime, this);
|
|
46
|
+
const bound = (runtime?.methods)?.[name];
|
|
47
|
+
if (typeof bound === "function") return bound.apply(runtime.proxy, args);
|
|
48
|
+
};
|
|
49
|
+
if (hostMethods) hostMethods[name] = bridged;
|
|
50
|
+
else target[name] = bridged;
|
|
51
|
+
}
|
|
46
52
|
}
|
|
53
|
+
if (typeof installMethods === "function") installMethods.call(target, hostMethods);
|
|
47
54
|
} catch {}
|
|
48
55
|
}
|
|
49
56
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"methodBridge.mjs","names":[],"sources":["../../../../../src/runtime/register/runtimeInstance/methodBridge.ts"],"sourcesContent":["import type { InternalRuntimeState, RuntimeInstance } from '../../types'\nimport type { SetupInstanceMethodName } from './setupContext'\nimport {\n WEVU_NATIVE_INSTANCE_KEY,\n WEVU_PUBLIC_RUNTIME_KEY,\n} from '@weapp-core/constants'\nimport { isNativeBridgeMethod } from '../../nativeBridge'\nimport { setupInstanceMethodNames } from './setupContext'\n\nfunction hasNativeApis(instance: unknown) {\n if (!instance || typeof instance !== 'object') {\n return false\n }\n return typeof (instance as any).triggerEvent === 'function'\n || typeof (instance as any).createSelectorQuery === 'function'\n || typeof (instance as any).createIntersectionObserver === 'function'\n || typeof (instance as any).setData === 'function'\n}\n\nfunction isBridgeMethod(runtime: RuntimeInstance<any, any, any>, instance: any, methodName: 'triggerEvent' | 'createSelectorQuery' | 'createIntersectionObserver' | 'setData') {\n const instanceMethod = instance?.[methodName]\n if (typeof instanceMethod !== 'function') {\n return false\n }\n if (isNativeBridgeMethod(instanceMethod)) {\n return true\n }\n const runtimeProxy = runtime?.proxy as Record<string, any> | undefined\n return typeof runtimeProxy?.[methodName] === 'function' && instanceMethod === runtimeProxy[methodName]\n}\n\nfunction syncRuntimeNativeInstance(runtime: RuntimeInstance<any, any, any>, instance: unknown) {\n if (!runtime || !hasNativeApis(instance)) {\n return\n }\n if (instance === runtime.proxy) {\n return\n }\n const nativeCandidate = instance as Record<string, any>\n if (\n isBridgeMethod(runtime, nativeCandidate, 'triggerEvent')\n || isBridgeMethod(runtime, nativeCandidate, 'createSelectorQuery')\n || isBridgeMethod(runtime, nativeCandidate, 'createIntersectionObserver')\n || isBridgeMethod(runtime, nativeCandidate, 'setData')\n ) {\n return\n }\n const runtimeState = runtime.state\n if (!runtimeState || typeof runtimeState !== 'object') {\n return\n }\n try {\n Object.defineProperty(runtimeState, WEVU_NATIVE_INSTANCE_KEY, {\n value: nativeCandidate,\n configurable: true,\n enumerable: false,\n writable: true,\n })\n }\n catch {\n ;(runtimeState as any)[WEVU_NATIVE_INSTANCE_KEY] = nativeCandidate\n }\n}\n\nexport function bridgeRuntimeMethodsToTarget(\n target: InternalRuntimeState,\n runtime: RuntimeInstance<any, any, any>,\n) {\n try {\n const methods =
|
|
1
|
+
{"version":3,"file":"methodBridge.mjs","names":[],"sources":["../../../../../src/runtime/register/runtimeInstance/methodBridge.ts"],"sourcesContent":["import type { InternalRuntimeState, RuntimeInstance } from '../../types'\nimport type { SetupInstanceMethodName } from './setupContext'\nimport {\n WEVU_HOST_INSTALL_METHOD_KEY,\n WEVU_NATIVE_INSTANCE_KEY,\n WEVU_PUBLIC_RUNTIME_KEY,\n} from '@weapp-core/constants'\nimport { isNativeBridgeMethod } from '../../nativeBridge'\nimport { setupInstanceMethodNames } from './setupContext'\n\nfunction hasNativeApis(instance: unknown) {\n if (!instance || typeof instance !== 'object') {\n return false\n }\n return typeof (instance as any).triggerEvent === 'function'\n || typeof (instance as any).createSelectorQuery === 'function'\n || typeof (instance as any).createIntersectionObserver === 'function'\n || typeof (instance as any).setData === 'function'\n}\n\nfunction isBridgeMethod(runtime: RuntimeInstance<any, any, any>, instance: any, methodName: 'triggerEvent' | 'createSelectorQuery' | 'createIntersectionObserver' | 'setData') {\n const instanceMethod = instance?.[methodName]\n if (typeof instanceMethod !== 'function') {\n return false\n }\n if (isNativeBridgeMethod(instanceMethod)) {\n return true\n }\n const runtimeProxy = runtime?.proxy as Record<string, any> | undefined\n return typeof runtimeProxy?.[methodName] === 'function' && instanceMethod === runtimeProxy[methodName]\n}\n\nfunction syncRuntimeNativeInstance(runtime: RuntimeInstance<any, any, any>, instance: unknown) {\n if (!runtime || !hasNativeApis(instance)) {\n return\n }\n if (instance === runtime.proxy) {\n return\n }\n const nativeCandidate = instance as Record<string, any>\n if (\n isBridgeMethod(runtime, nativeCandidate, 'triggerEvent')\n || isBridgeMethod(runtime, nativeCandidate, 'createSelectorQuery')\n || isBridgeMethod(runtime, nativeCandidate, 'createIntersectionObserver')\n || isBridgeMethod(runtime, nativeCandidate, 'setData')\n ) {\n return\n }\n const runtimeState = runtime.state\n if (!runtimeState || typeof runtimeState !== 'object') {\n return\n }\n try {\n Object.defineProperty(runtimeState, WEVU_NATIVE_INSTANCE_KEY, {\n value: nativeCandidate,\n configurable: true,\n enumerable: false,\n writable: true,\n })\n }\n catch {\n ;(runtimeState as any)[WEVU_NATIVE_INSTANCE_KEY] = nativeCandidate\n }\n}\n\nexport function bridgeRuntimeMethodsToTarget(\n target: InternalRuntimeState,\n runtime: RuntimeInstance<any, any, any>,\n) {\n try {\n const methods = runtime.methods as Record<string, (...args: unknown[]) => unknown>\n const installMethods: unknown = Reflect.get(target, WEVU_HOST_INSTALL_METHOD_KEY)\n const hostMethods: typeof methods | undefined = typeof installMethods === 'function' ? {} : undefined\n for (const name of Object.keys(methods)) {\n if (setupInstanceMethodNames.includes(name as SetupInstanceMethodName)) {\n continue\n }\n if (hostMethods || typeof (target as any)[name] !== 'function') {\n const bridged = function (this: any, ...args: any[]) {\n const runtime = this[WEVU_PUBLIC_RUNTIME_KEY] ?? target[WEVU_PUBLIC_RUNTIME_KEY]\n syncRuntimeNativeInstance(runtime, this)\n const bound = (runtime?.methods as any)?.[name]\n if (typeof bound === 'function') {\n return bound.apply(runtime.proxy, args)\n }\n }\n if (hostMethods) {\n hostMethods[name] = bridged\n }\n else {\n ;(target as any)[name] = bridged\n }\n }\n }\n if (typeof installMethods === 'function') {\n installMethods.call(target, hostMethods)\n }\n }\n catch {\n // 桥接过程中若发生错误(如目标被封装)则忽略,避免阻断后续流程\n }\n}\n"],"mappings":";;;;;AAUA,SAAS,cAAc,UAAmB;CACxC,IAAI,CAAC,YAAY,OAAO,aAAa,UACnC,OAAO;CAET,OAAO,OAAQ,SAAiB,iBAAiB,cAC5C,OAAQ,SAAiB,wBAAwB,cACjD,OAAQ,SAAiB,+BAA+B,cACxD,OAAQ,SAAiB,YAAY;AAC5C;AAEA,SAAS,eAAe,SAAyC,UAAe,YAA+F;CAC7K,MAAM,iBAAiB,WAAW;CAClC,IAAI,OAAO,mBAAmB,YAC5B,OAAO;CAET,IAAI,qBAAqB,cAAc,GACrC,OAAO;CAET,MAAM,eAAe,SAAS;CAC9B,OAAO,OAAO,eAAe,gBAAgB,cAAc,mBAAmB,aAAa;AAC7F;AAEA,SAAS,0BAA0B,SAAyC,UAAmB;CAC7F,IAAI,CAAC,WAAW,CAAC,cAAc,QAAQ,GACrC;CAEF,IAAI,aAAa,QAAQ,OACvB;CAEF,MAAM,kBAAkB;CACxB,IACE,eAAe,SAAS,iBAAiB,cAAc,KACpD,eAAe,SAAS,iBAAiB,qBAAqB,KAC9D,eAAe,SAAS,iBAAiB,4BAA4B,KACrE,eAAe,SAAS,iBAAiB,SAAS,GAErD;CAEF,MAAM,eAAe,QAAQ;CAC7B,IAAI,CAAC,gBAAgB,OAAO,iBAAiB,UAC3C;CAEF,IAAI;EACF,OAAO,eAAe,cAAc,0BAA0B;GAC5D,OAAO;GACP,cAAc;GACd,YAAY;GACZ,UAAU;EACZ,CAAC;CACH,QACM;EACH,AAAC,aAAqB,4BAA4B;CACrD;AACF;AAEA,SAAgB,6BACd,QACA,SACA;CACA,IAAI;EACF,MAAM,UAAU,QAAQ;EACxB,MAAM,iBAA0B,QAAQ,IAAI,QAAQ,4BAA4B;EAChF,MAAM,cAA0C,OAAO,mBAAmB,aAAa,CAAC,IAAI;EAC5F,KAAK,MAAM,QAAQ,OAAO,KAAK,OAAO,GAAG;GACvC,IAAI,yBAAyB,SAAS,IAA+B,GACnE;GAEF,IAAI,eAAe,OAAQ,OAAe,UAAU,YAAY;IAC9D,MAAM,UAAU,SAAqB,GAAG,MAAa;KACnD,MAAM,UAAU,KAAK,4BAA4B,OAAO;KACxD,0BAA0B,SAAS,IAAI;KACvC,MAAM,SAAS,SAAS,QAAO,GAAW;KAC1C,IAAI,OAAO,UAAU,YACnB,OAAO,MAAM,MAAM,QAAQ,OAAO,IAAI;IAE1C;IACA,IAAI,aACF,YAAY,QAAQ;SAGnB,AAAC,OAAe,QAAQ;GAE7B;EACF;EACA,IAAI,OAAO,mBAAmB,YAC5B,eAAe,KAAK,QAAQ,WAAW;CAE3C,QACM,CAEN;AACF"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { WEVU_NATIVE_DECLARATION_ADDRESS_PROP, WEVU_NATIVE_DECLARATION_EVENT } from "@weapp-core/constants";
|
|
2
|
+
|
|
3
|
+
//#region src/runtime/register/runtimeInstance/nativeDeclaration.ts
|
|
4
|
+
const addressKey = /* @__PURE__ */ Symbol("address");
|
|
5
|
+
const registrationKey = /* @__PURE__ */ Symbol("registration");
|
|
6
|
+
const indexKey = /* @__PURE__ */ Symbol("index");
|
|
7
|
+
function parseAddress(value) {
|
|
8
|
+
return Array.isArray(value) && value.length === 2 && typeof value[0] === "string" && value[0] !== "" && typeof value[1] === "string" ? value : void 0;
|
|
9
|
+
}
|
|
10
|
+
function readAddress(target) {
|
|
11
|
+
return target[addressKey] === void 0 ? parseAddress(target.properties?.[WEVU_NATIVE_DECLARATION_ADDRESS_PROP]) : target[addressKey] ?? void 0;
|
|
12
|
+
}
|
|
13
|
+
function removeRegistration(registration) {
|
|
14
|
+
const { owner, target, selfKey } = registration;
|
|
15
|
+
if (owner[indexKey]?.get(selfKey) === registration) owner[indexKey]?.delete(selfKey);
|
|
16
|
+
if (target[registrationKey] === registration) delete target[registrationKey];
|
|
17
|
+
}
|
|
18
|
+
function installRegistration(registration) {
|
|
19
|
+
const { owner, target, selfKey } = registration;
|
|
20
|
+
const index = owner[indexKey] ?? (owner[indexKey] = /* @__PURE__ */ new Map());
|
|
21
|
+
const previous = index.get(selfKey);
|
|
22
|
+
if (previous && previous !== registration) removeRegistration(previous);
|
|
23
|
+
index.set(selfKey, registration);
|
|
24
|
+
target[registrationKey] = registration;
|
|
25
|
+
}
|
|
26
|
+
function updateNativeDeclarationAddress(target, newValue) {
|
|
27
|
+
const address = parseAddress(newValue);
|
|
28
|
+
target[addressKey] = address ?? null;
|
|
29
|
+
const registration = target[registrationKey];
|
|
30
|
+
if (!registration || registration.selfKey === address?.[0]) return;
|
|
31
|
+
removeRegistration(registration);
|
|
32
|
+
if (address) {
|
|
33
|
+
registration.selfKey = address[0];
|
|
34
|
+
installRegistration(registration);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
function resolveNativeDeclarationHost(owner, key) {
|
|
38
|
+
return key ? owner[indexKey]?.get(key)?.target : owner;
|
|
39
|
+
}
|
|
40
|
+
/** 编译后的直接事件必须在原生方法 this 上注册,不能经过公开 export 或 setup 方法代理。 */
|
|
41
|
+
function receiveNativeDeclaration(event) {
|
|
42
|
+
if (typeof event.detail?.register === "function") event.detail.register(this);
|
|
43
|
+
}
|
|
44
|
+
function resolveNativeDeclarationParent(target) {
|
|
45
|
+
const address = readAddress(target);
|
|
46
|
+
if (!address || typeof target.triggerEvent !== "function") return;
|
|
47
|
+
let parent;
|
|
48
|
+
target.triggerEvent(WEVU_NATIVE_DECLARATION_EVENT, { register(owner) {
|
|
49
|
+
if (owner === target) return;
|
|
50
|
+
const previous = target[registrationKey];
|
|
51
|
+
if (previous) removeRegistration(previous);
|
|
52
|
+
installRegistration({
|
|
53
|
+
owner,
|
|
54
|
+
target,
|
|
55
|
+
selfKey: address[0]
|
|
56
|
+
});
|
|
57
|
+
parent = resolveNativeDeclarationHost(owner, address[1]);
|
|
58
|
+
} }, {
|
|
59
|
+
bubbles: false,
|
|
60
|
+
composed: false
|
|
61
|
+
});
|
|
62
|
+
return parent;
|
|
63
|
+
}
|
|
64
|
+
function releaseNativeDeclaration(target, preserveOwnerIndex = false) {
|
|
65
|
+
const registration = target[registrationKey];
|
|
66
|
+
if (registration) removeRegistration(registration);
|
|
67
|
+
if (preserveOwnerIndex) return;
|
|
68
|
+
const index = target[indexKey];
|
|
69
|
+
if (index) {
|
|
70
|
+
for (const child of index.values()) removeRegistration(child);
|
|
71
|
+
delete target[indexKey];
|
|
72
|
+
}
|
|
73
|
+
delete target[addressKey];
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
//#endregion
|
|
77
|
+
export { receiveNativeDeclaration, releaseNativeDeclaration, resolveNativeDeclarationHost, resolveNativeDeclarationParent, updateNativeDeclarationAddress };
|
|
78
|
+
//# sourceMappingURL=nativeDeclaration.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nativeDeclaration.mjs","names":[],"sources":["../../../../../src/runtime/register/runtimeInstance/nativeDeclaration.ts"],"sourcesContent":["import type { InternalRuntimeState } from '../../types'\nimport {\n WEVU_NATIVE_DECLARATION_ADDRESS_PROP,\n WEVU_NATIVE_DECLARATION_EVENT,\n} from '@weapp-core/constants'\n\n// 平台条件须在调用点直接读取 import.meta.env.PLATFORM;跨模块布尔常量在发布产物\n// 压缩后不一定被下游折叠,会导致未启用原生协议的目标仍保留本模块。\n\nconst addressKey = /* @__PURE__ */ Symbol('address')\nconst registrationKey = /* @__PURE__ */ Symbol('registration')\nconst indexKey = /* @__PURE__ */ Symbol('index')\n\ntype NativeDeclarationAddress = readonly [selfKey: string, parentKey: string]\ntype DeclarationHost = InternalRuntimeState & {\n [addressKey]?: NativeDeclarationAddress | null\n [registrationKey]?: NativeDeclarationRegistration\n [indexKey]?: Map<string, NativeDeclarationRegistration>\n}\n\ninterface NativeDeclarationRegistration {\n owner: DeclarationHost\n target: DeclarationHost\n selfKey: string\n}\n\ninterface NativeDeclarationDetail {\n register: (owner: InternalRuntimeState) => void\n}\n\nfunction parseAddress(value: unknown): NativeDeclarationAddress | undefined {\n return Array.isArray(value) && value.length === 2\n && typeof value[0] === 'string' && value[0] !== '' && typeof value[1] === 'string'\n ? value as unknown as NativeDeclarationAddress\n : undefined\n}\n\nfunction readAddress(target: DeclarationHost) {\n return target[addressKey] === undefined\n ? parseAddress(target.properties?.[WEVU_NATIVE_DECLARATION_ADDRESS_PROP])\n : target[addressKey] ?? undefined\n}\n\nfunction removeRegistration(registration: NativeDeclarationRegistration) {\n const { owner, target, selfKey } = registration\n if (owner[indexKey]?.get(selfKey) === registration) {\n owner[indexKey]?.delete(selfKey)\n }\n if (target[registrationKey] === registration) {\n delete target[registrationKey]\n }\n}\n\nfunction installRegistration(registration: NativeDeclarationRegistration) {\n const { owner, target, selfKey } = registration\n const index = owner[indexKey] ??= new Map()\n const previous = index.get(selfKey)\n // 原生替换允许先 attached 后 detached;旧实例不能删掉或重新索引替代者。\n if (previous && previous !== registration) {\n removeRegistration(previous)\n }\n index.set(selfKey, registration)\n target[registrationKey] = registration\n}\n\nexport function updateNativeDeclarationAddress(target: DeclarationHost, newValue: unknown) {\n const address = parseAddress(newValue)\n target[addressKey] = address ?? null\n const registration = target[registrationKey]\n if (!registration || registration.selfKey === address?.[0]) {\n return\n }\n removeRegistration(registration)\n if (address) {\n registration.selfKey = address[0]\n installRegistration(registration)\n }\n}\n\nexport function resolveNativeDeclarationHost(owner: DeclarationHost, key: string): InternalRuntimeState | undefined {\n return key ? owner[indexKey]?.get(key)?.target : owner\n}\n\n/** 编译后的直接事件必须在原生方法 this 上注册,不能经过公开 export 或 setup 方法代理。 */\nexport function receiveNativeDeclaration(this: InternalRuntimeState, event: { detail?: NativeDeclarationDetail }) {\n if (typeof event.detail?.register === 'function') {\n event.detail.register(this)\n }\n}\n\nexport function resolveNativeDeclarationParent(target: DeclarationHost): InternalRuntimeState | undefined {\n const address = readAddress(target)\n if (!address || typeof target.triggerEvent !== 'function') {\n return undefined\n }\n let parent: InternalRuntimeState | undefined\n target.triggerEvent(WEVU_NATIVE_DECLARATION_EVENT, {\n register(owner: DeclarationHost) {\n if (owner === target) {\n return\n }\n const previous = target[registrationKey]\n if (previous) {\n removeRegistration(previous)\n }\n installRegistration({ owner, target, selfKey: address[0] })\n parent = resolveNativeDeclarationHost(owner, address[1])\n },\n } satisfies NativeDeclarationDetail, { bubbles: false, composed: false })\n return parent\n}\n\nexport function releaseNativeDeclaration(target: DeclarationHost, preserveOwnerIndex = false) {\n const registration = target[registrationKey]\n if (registration) {\n removeRegistration(registration)\n }\n if (preserveOwnerIndex) {\n return\n }\n const index = target[indexKey]\n if (index) {\n for (const child of index.values()) {\n removeRegistration(child)\n }\n delete target[indexKey]\n }\n delete target[addressKey]\n}\n"],"mappings":";;;AASA,MAAM,aAA6B,uBAAO,SAAS;AACnD,MAAM,kBAAkC,uBAAO,cAAc;AAC7D,MAAM,WAA2B,uBAAO,OAAO;AAmB/C,SAAS,aAAa,OAAsD;CAC1E,OAAO,MAAM,QAAQ,KAAK,KAAK,MAAM,WAAW,KAC3C,OAAO,MAAM,OAAO,YAAY,MAAM,OAAO,MAAM,OAAO,MAAM,OAAO,WACxE,QACA;AACN;AAEA,SAAS,YAAY,QAAyB;CAC5C,OAAO,OAAO,gBAAgB,SAC1B,aAAa,OAAO,aAAa,qCAAqC,IACtE,OAAO,eAAe;AAC5B;AAEA,SAAS,mBAAmB,cAA6C;CACvE,MAAM,EAAE,OAAO,QAAQ,YAAY;CACnC,IAAI,MAAM,SAAS,EAAE,IAAI,OAAO,MAAM,cACpC,MAAM,SAAS,EAAE,OAAO,OAAO;CAEjC,IAAI,OAAO,qBAAqB,cAC9B,OAAO,OAAO;AAElB;AAEA,SAAS,oBAAoB,cAA6C;CACxE,MAAM,EAAE,OAAO,QAAQ,YAAY;CACnC,MAAM,QAAQ,MAAM,cAAN,MAAM,4BAAc,IAAI,IAAI;CAC1C,MAAM,WAAW,MAAM,IAAI,OAAO;CAElC,IAAI,YAAY,aAAa,cAC3B,mBAAmB,QAAQ;CAE7B,MAAM,IAAI,SAAS,YAAY;CAC/B,OAAO,mBAAmB;AAC5B;AAEA,SAAgB,+BAA+B,QAAyB,UAAmB;CACzF,MAAM,UAAU,aAAa,QAAQ;CACrC,OAAO,cAAc,WAAW;CAChC,MAAM,eAAe,OAAO;CAC5B,IAAI,CAAC,gBAAgB,aAAa,YAAY,UAAU,IACtD;CAEF,mBAAmB,YAAY;CAC/B,IAAI,SAAS;EACX,aAAa,UAAU,QAAQ;EAC/B,oBAAoB,YAAY;CAClC;AACF;AAEA,SAAgB,6BAA6B,OAAwB,KAA+C;CAClH,OAAO,MAAM,MAAM,SAAS,EAAE,IAAI,GAAG,CAAC,EAAE,SAAS;AACnD;;AAGA,SAAgB,yBAAqD,OAA6C;CAChH,IAAI,OAAO,MAAM,QAAQ,aAAa,YACpC,MAAM,OAAO,SAAS,IAAI;AAE9B;AAEA,SAAgB,+BAA+B,QAA2D;CACxG,MAAM,UAAU,YAAY,MAAM;CAClC,IAAI,CAAC,WAAW,OAAO,OAAO,iBAAiB,YAC7C;CAEF,IAAI;CACJ,OAAO,aAAa,+BAA+B,EACjD,SAAS,OAAwB;EAC/B,IAAI,UAAU,QACZ;EAEF,MAAM,WAAW,OAAO;EACxB,IAAI,UACF,mBAAmB,QAAQ;EAE7B,oBAAoB;GAAE;GAAO;GAAQ,SAAS,QAAQ;EAAG,CAAC;EAC1D,SAAS,6BAA6B,OAAO,QAAQ,EAAE;CACzD,EACF,GAAqC;EAAE,SAAS;EAAO,UAAU;CAAM,CAAC;CACxE,OAAO;AACT;AAEA,SAAgB,yBAAyB,QAAyB,qBAAqB,OAAO;CAC5F,MAAM,eAAe,OAAO;CAC5B,IAAI,cACF,mBAAmB,YAAY;CAEjC,IAAI,oBACF;CAEF,MAAM,QAAQ,OAAO;CACrB,IAAI,OAAO;EACT,KAAK,MAAM,SAAS,MAAM,OAAO,GAC/B,mBAAmB,KAAK;EAE1B,OAAO,OAAO;CAChB;CACA,OAAO,OAAO;AAChB"}
|