From: Evan You Date: Tue, 11 Apr 2023 05:45:45 +0000 (+0800) Subject: refactor(compiler-sfc): extract more defineProps logic X-Git-Tag: v3.3.0-alpha.10~30 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d0ac57872cf53443e8c14db2eeee11df2c561da6;p=thirdparty%2Fvuejs%2Fcore.git refactor(compiler-sfc): extract more defineProps logic --- diff --git a/packages/compiler-core/src/babelUtils.ts b/packages/compiler-core/src/babelUtils.ts index b58d9a0648..7d96ec5192 100644 --- a/packages/compiler-core/src/babelUtils.ts +++ b/packages/compiler-core/src/babelUtils.ts @@ -9,8 +9,7 @@ import type { Program, ImportDefaultSpecifier, ImportNamespaceSpecifier, - ImportSpecifier, - CallExpression + ImportSpecifier } from '@babel/types' import { walk } from 'estree-walker' @@ -443,25 +442,3 @@ export const TS_NODE_TYPES = [ 'TSInstantiationExpression', // foo 'TSSatisfiesExpression' // foo satisfies T ] -export function unwrapTSNode(node: Node): Node { - if (TS_NODE_TYPES.includes(node.type)) { - return unwrapTSNode((node as any).expression) - } else { - return node - } -} - -export function isCallOf( - node: Node | null | undefined, - test: string | ((id: string) => boolean) | null | undefined -): node is CallExpression { - return !!( - node && - test && - node.type === 'CallExpression' && - node.callee.type === 'Identifier' && - (typeof test === 'string' - ? node.callee.name === test - : test(node.callee.name)) - ) -} diff --git a/packages/compiler-sfc/src/compileScript.ts b/packages/compiler-sfc/src/compileScript.ts index ae2843613d..05bece0ed0 100644 --- a/packages/compiler-sfc/src/compileScript.ts +++ b/packages/compiler-sfc/src/compileScript.ts @@ -10,9 +10,7 @@ import { SimpleExpressionNode, isFunctionType, walkIdentifiers, - getImportedName, - unwrapTSNode, - isCallOf + getImportedName } from '@vue/compiler-dom' import { DEFAULT_FILENAME, SFCDescriptor, SFCScriptBlock } from './parse' import { parse as _parse, parseExpression, ParserPlugin } from '@babel/parser' @@ -36,7 +34,6 @@ import { TSInterfaceBody, TSTypeElement, AwaitExpression, - ObjectMethod, LVal, Expression, TSEnumDeclaration @@ -54,13 +51,22 @@ import { rewriteDefaultAST } from './rewriteDefault' import { createCache } from './cache' import { shouldTransform, transformAST } from '@vue/reactivity-transform' import { transformDestructuredProps } from './script/definePropsDestructure' -import { resolveObjectKey, FromNormalScript } from './script/utils' import { ScriptCompileContext } from './script/context' import { processDefineProps, DEFINE_PROPS, - WITH_DEFAULTS + WITH_DEFAULTS, + extractRuntimeProps } from './script/defineProps' +import { + resolveObjectKey, + FromNormalScript, + UNKNOWN_TYPE, + isLiteralNode, + unwrapTSNode, + isCallOf +} from './script/utils' +import { genRuntimeProps } from './script/defineProps' // Special compiler macros const DEFINE_EMITS = 'defineEmits' @@ -151,11 +157,6 @@ export type PropsDestructureBindings = Record< type EmitsDeclType = FromNormalScript< TSFunctionType | TSTypeLiteral | TSInterfaceBody > -interface ModelDecl { - type: TSType | undefined - options: string | undefined - identifier: string | undefined -} /** * Compile `