From 7e0f15fa7c6913e7e59df50f8d668f02bf4b86c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=89=E5=92=B2=E6=99=BA=E5=AD=90=20Kevin=20Deng?= Date: Thu, 14 Mar 2024 15:50:58 +0800 Subject: [PATCH] refactor(runtime-vapor): re-organize --- .../runtime-vapor/__tests__/dom/prop.spec.ts | 2 +- .../src/{for.ts => apiCreateFor.ts} | 0 .../src/{if.ts => apiCreateIf.ts} | 0 packages/runtime-vapor/src/apiLifecycle.ts | 22 ++++++++++++++++--- packages/runtime-vapor/src/component.ts | 2 +- .../src/{metadata.ts => componentMetadata.ts} | 6 ++--- .../runtime-vapor/src/directives/vModel.ts | 2 +- packages/runtime-vapor/src/dom/event.ts | 6 ++++- packages/runtime-vapor/src/dom/prop.ts | 6 ++++- packages/runtime-vapor/src/dom/style.ts | 2 +- packages/runtime-vapor/src/enums.ts | 16 -------------- packages/runtime-vapor/src/errorHandling.ts | 2 +- packages/runtime-vapor/src/index.ts | 4 ++-- 13 files changed, 39 insertions(+), 31 deletions(-) rename packages/runtime-vapor/src/{for.ts => apiCreateFor.ts} (100%) rename packages/runtime-vapor/src/{if.ts => apiCreateIf.ts} (100%) rename packages/runtime-vapor/src/{metadata.ts => componentMetadata.ts} (87%) delete mode 100644 packages/runtime-vapor/src/enums.ts diff --git a/packages/runtime-vapor/__tests__/dom/prop.spec.ts b/packages/runtime-vapor/__tests__/dom/prop.spec.ts index f701910d5..325162a3d 100644 --- a/packages/runtime-vapor/__tests__/dom/prop.spec.ts +++ b/packages/runtime-vapor/__tests__/dom/prop.spec.ts @@ -13,7 +13,7 @@ import { createComponentInstance, setCurrentInstance, } from '../../src/component' -import { getMetadata, recordPropMetadata } from '../../src/metadata' +import { getMetadata, recordPropMetadata } from '../../src/componentMetadata' let removeComponentInstance = NOOP beforeEach(() => { diff --git a/packages/runtime-vapor/src/for.ts b/packages/runtime-vapor/src/apiCreateFor.ts similarity index 100% rename from packages/runtime-vapor/src/for.ts rename to packages/runtime-vapor/src/apiCreateFor.ts diff --git a/packages/runtime-vapor/src/if.ts b/packages/runtime-vapor/src/apiCreateIf.ts similarity index 100% rename from packages/runtime-vapor/src/if.ts rename to packages/runtime-vapor/src/apiCreateIf.ts diff --git a/packages/runtime-vapor/src/apiLifecycle.ts b/packages/runtime-vapor/src/apiLifecycle.ts index 831a94b38..dd81a686c 100644 --- a/packages/runtime-vapor/src/apiLifecycle.ts +++ b/packages/runtime-vapor/src/apiLifecycle.ts @@ -7,9 +7,25 @@ import { warn } from './warning' import { pauseTracking, resetTracking } from '@vue/reactivity' import { ErrorTypeStrings, callWithAsyncErrorHandling } from './errorHandling' import { toHandlerKey } from '@vue/shared' -import { VaporLifecycleHooks } from './enums' -export const injectHook = ( +export enum VaporLifecycleHooks { + BEFORE_CREATE = 'bc', + CREATED = 'c', + BEFORE_MOUNT = 'bm', + MOUNTED = 'm', + BEFORE_UPDATE = 'bu', + UPDATED = 'u', + BEFORE_UNMOUNT = 'bum', + UNMOUNTED = 'um', + DEACTIVATED = 'da', + ACTIVATED = 'a', + RENDER_TRIGGERED = 'rtg', + RENDER_TRACKED = 'rtc', + ERROR_CAPTURED = 'ec', + // SERVER_PREFETCH = 'sp', +} + +const injectHook = ( type: VaporLifecycleHooks, hook: Function & { __weh?: Function }, target: ComponentInternalInstance | null = currentInstance, @@ -49,7 +65,7 @@ export const injectHook = ( ) } } -export const createHook = +const createHook = any>(lifecycle: VaporLifecycleHooks) => (hook: T, target: ComponentInternalInstance | null = currentInstance) => injectHook(lifecycle, (...args: unknown[]) => hook(...args), target) diff --git a/packages/runtime-vapor/src/component.ts b/packages/runtime-vapor/src/component.ts index fce0a9e0d..666b50bdf 100644 --- a/packages/runtime-vapor/src/component.ts +++ b/packages/runtime-vapor/src/component.ts @@ -15,9 +15,9 @@ import { emit, normalizeEmitsOptions, } from './componentEmits' +import { VaporLifecycleHooks } from './apiLifecycle' import type { Data } from '@vue/shared' -import { VaporLifecycleHooks } from './enums' export type Component = FunctionalComponent | ObjectComponent diff --git a/packages/runtime-vapor/src/metadata.ts b/packages/runtime-vapor/src/componentMetadata.ts similarity index 87% rename from packages/runtime-vapor/src/metadata.ts rename to packages/runtime-vapor/src/componentMetadata.ts index f2835d0be..2562f11fe 100644 --- a/packages/runtime-vapor/src/metadata.ts +++ b/packages/runtime-vapor/src/componentMetadata.ts @@ -6,14 +6,14 @@ export enum MetadataKind { event, } -export type ElementMetadata = [ +export type ComponentMetadata = [ props: Data, events: Record, ] export function getMetadata( - el: Node & { $$metadata?: ElementMetadata }, -): ElementMetadata { + el: Node & { $$metadata?: ComponentMetadata }, +): ComponentMetadata { return el.$$metadata || (el.$$metadata = [{}, {}]) } diff --git a/packages/runtime-vapor/src/directives/vModel.ts b/packages/runtime-vapor/src/directives/vModel.ts index e3ef4a40b..b212437fd 100644 --- a/packages/runtime-vapor/src/directives/vModel.ts +++ b/packages/runtime-vapor/src/directives/vModel.ts @@ -15,7 +15,7 @@ import type { import { addEventListener } from '../dom/event' import { nextTick } from '../scheduler' import { warn } from '../warning' -import { MetadataKind, getMetadata } from '../metadata' +import { MetadataKind, getMetadata } from '../componentMetadata' type AssignerFn = (value: any) => void function getModelAssigner(el: Element): AssignerFn { diff --git a/packages/runtime-vapor/src/dom/event.ts b/packages/runtime-vapor/src/dom/event.ts index 6774717af..6121f1da9 100644 --- a/packages/runtime-vapor/src/dom/event.ts +++ b/packages/runtime-vapor/src/dom/event.ts @@ -3,7 +3,11 @@ import { onEffectCleanup, onScopeDispose, } from '@vue/reactivity' -import { MetadataKind, getMetadata, recordEventMetadata } from '../metadata' +import { + MetadataKind, + getMetadata, + recordEventMetadata, +} from '../componentMetadata' import { withKeys, withModifiers } from '@vue/runtime-dom' import { queuePostRenderEffect } from '../scheduler' diff --git a/packages/runtime-vapor/src/dom/prop.ts b/packages/runtime-vapor/src/dom/prop.ts index 67afb80e5..d5e6ba7c7 100644 --- a/packages/runtime-vapor/src/dom/prop.ts +++ b/packages/runtime-vapor/src/dom/prop.ts @@ -12,7 +12,11 @@ import { } from '@vue/shared' import { warn } from '../warning' import { setStyle } from './style' -import { MetadataKind, getMetadata, recordPropMetadata } from '../metadata' +import { + MetadataKind, + getMetadata, + recordPropMetadata, +} from '../componentMetadata' import { on } from './event' export function setClass(el: Element, value: any) { diff --git a/packages/runtime-vapor/src/dom/style.ts b/packages/runtime-vapor/src/dom/style.ts index a6dd74fa3..fbaee6f75 100644 --- a/packages/runtime-vapor/src/dom/style.ts +++ b/packages/runtime-vapor/src/dom/style.ts @@ -7,7 +7,7 @@ import { normalizeStyle, } from '@vue/shared' import { warn } from '../warning' -import { recordPropMetadata } from '../metadata' +import { recordPropMetadata } from '../componentMetadata' export function setStyle(el: HTMLElement, value: any) { const prev = recordPropMetadata(el, 'style', (value = normalizeStyle(value))) diff --git a/packages/runtime-vapor/src/enums.ts b/packages/runtime-vapor/src/enums.ts deleted file mode 100644 index b6714f795..000000000 --- a/packages/runtime-vapor/src/enums.ts +++ /dev/null @@ -1,16 +0,0 @@ -export enum VaporLifecycleHooks { - BEFORE_CREATE = 'bc', - CREATED = 'c', - BEFORE_MOUNT = 'bm', - MOUNTED = 'm', - BEFORE_UPDATE = 'bu', - UPDATED = 'u', - BEFORE_UNMOUNT = 'bum', - UNMOUNTED = 'um', - DEACTIVATED = 'da', - ACTIVATED = 'a', - RENDER_TRIGGERED = 'rtg', - RENDER_TRACKED = 'rtc', - ERROR_CAPTURED = 'ec', - // SERVER_PREFETCH = 'sp', -} diff --git a/packages/runtime-vapor/src/errorHandling.ts b/packages/runtime-vapor/src/errorHandling.ts index 53a5e5507..215bb40cc 100644 --- a/packages/runtime-vapor/src/errorHandling.ts +++ b/packages/runtime-vapor/src/errorHandling.ts @@ -6,7 +6,7 @@ import type { ComponentInternalInstance } from './component' import { isFunction, isPromise } from '@vue/shared' import { warn } from './warning' -import { VaporLifecycleHooks } from './enums' +import { VaporLifecycleHooks } from './apiLifecycle' import { BaseWatchErrorCodes } from '@vue/reactivity' // contexts where user provided function may be executed, in addition to diff --git a/packages/runtime-vapor/src/index.ts b/packages/runtime-vapor/src/index.ts index b2cac49cb..c426b1516 100644 --- a/packages/runtime-vapor/src/index.ts +++ b/packages/runtime-vapor/src/index.ts @@ -102,8 +102,8 @@ export { onErrorCaptured, // onServerPrefetch, } from './apiLifecycle' -export { createIf } from './if' -export { createFor } from './for' +export { createIf } from './apiCreateIf' +export { createFor } from './apiCreateFor' // **Internal** DOM-only runtime directive helpers export {