From 5a529bbf238ad64781d499f89245dc78c894192d Mon Sep 17 00:00:00 2001 From: Evan You Date: Tue, 11 Apr 2023 14:34:18 +0800 Subject: [PATCH] refactor(compiler-sfc): extract defineEmits logic --- packages/compiler-sfc/src/compileScript.ts | 307 +----------------- packages/compiler-sfc/src/script/context.ts | 6 + .../compiler-sfc/src/script/defineEmits.ts | 154 +++++++++ .../src/script/definePropsDestructure.ts | 2 +- 4 files changed, 174 insertions(+), 295 deletions(-) create mode 100644 packages/compiler-sfc/src/script/defineEmits.ts diff --git a/packages/compiler-sfc/src/compileScript.ts b/packages/compiler-sfc/src/compileScript.ts index 018e1f498e..7a93693bad 100644 --- a/packages/compiler-sfc/src/compileScript.ts +++ b/packages/compiler-sfc/src/compileScript.ts @@ -24,17 +24,11 @@ import { Identifier, ExportSpecifier, TSType, - TSTypeLiteral, - TSFunctionType, ArrayExpression, Statement, CallExpression, - RestElement, - TSInterfaceBody, - TSTypeElement, AwaitExpression, LVal, - Expression, TSEnumDeclaration } from '@babel/types' import { walk } from 'estree-walker' @@ -57,10 +51,14 @@ import { DEFINE_PROPS, WITH_DEFAULTS } from './script/defineProps' +import { + processDefineEmits, + genRuntimeEmits, + DEFINE_EMITS +} from './script/defineEmits' import { DEFINE_MODEL, processDefineModel } from './script/defineModel' import { resolveObjectKey, - FromNormalScript, UNKNOWN_TYPE, isLiteralNode, unwrapTSNode, @@ -68,7 +66,6 @@ import { } from './script/utils' // Special compiler macros -const DEFINE_EMITS = 'defineEmits' const DEFINE_EXPOSE = 'defineExpose' const DEFINE_OPTIONS = 'defineOptions' const DEFINE_SLOTS = 'defineSlots' @@ -144,18 +141,6 @@ export interface ImportBinding { isUsedInTemplate: boolean } -export type PropsDestructureBindings = Record< - string, // public prop key - { - local: string // local identifier, may be different - default?: Expression - } -> - -type EmitsDeclType = FromNormalScript< - TSFunctionType | TSTypeLiteral | TSInterfaceBody -> - /** * Compile `