refactor(runtime-vapor): re-organize

This commit is contained in:
三咲智子 Kevin Deng 2024-03-14 15:50:58 +08:00
parent b4da5a8da6
commit 7e0f15fa7c
No known key found for this signature in database
GPG Key ID: 69992F2250DFD93E
13 changed files with 39 additions and 31 deletions

View File

@ -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(() => {

View File

@ -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 =
<T extends Function = () => any>(lifecycle: VaporLifecycleHooks) =>
(hook: T, target: ComponentInternalInstance | null = currentInstance) =>
injectHook(lifecycle, (...args: unknown[]) => hook(...args), target)

View File

@ -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

View File

@ -6,14 +6,14 @@ export enum MetadataKind {
event,
}
export type ElementMetadata = [
export type ComponentMetadata = [
props: Data,
events: Record<string, DelegatedHandler[]>,
]
export function getMetadata(
el: Node & { $$metadata?: ElementMetadata },
): ElementMetadata {
el: Node & { $$metadata?: ComponentMetadata },
): ComponentMetadata {
return el.$$metadata || (el.$$metadata = [{}, {}])
}

View File

@ -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 {

View File

@ -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'

View File

@ -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) {

View File

@ -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)))

View File

@ -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',
}

View File

@ -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

View File

@ -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 {