From 0cdc9f20c6e9ce329ff8c2b9f13d3208e996d6f1 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, 8 Feb 2024 20:35:11 +0800 Subject: [PATCH] refactor(compiler): export isLiteralWhitelisted --- packages/compiler-core/src/index.ts | 1 + packages/compiler-core/src/transforms/transformExpression.ts | 4 +++- packages/compiler-vapor/src/generators/expression.ts | 5 ++--- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/compiler-core/src/index.ts b/packages/compiler-core/src/index.ts index aff69dbc7..3f0d6597c 100644 --- a/packages/compiler-core/src/index.ts +++ b/packages/compiler-core/src/index.ts @@ -54,6 +54,7 @@ export { transformExpression, processExpression, stringifyExpression, + isLiteralWhitelisted, } from './transforms/transformExpression' export { buildSlots, diff --git a/packages/compiler-core/src/transforms/transformExpression.ts b/packages/compiler-core/src/transforms/transformExpression.ts index c7cd1b63d..20ad81619 100644 --- a/packages/compiler-core/src/transforms/transformExpression.ts +++ b/packages/compiler-core/src/transforms/transformExpression.ts @@ -44,7 +44,9 @@ import { parse } from '@babel/parser' import { IS_REF, UNREF } from '../runtimeHelpers' import { BindingTypes } from '../options' -const isLiteralWhitelisted = /*#__PURE__*/ makeMap('true,false,null,this') +export const isLiteralWhitelisted = /*#__PURE__*/ makeMap( + 'true,false,null,this', +) // a heuristic safeguard to bail constant expressions on presence of // likely function invocation and member access diff --git a/packages/compiler-vapor/src/generators/expression.ts b/packages/compiler-vapor/src/generators/expression.ts index a9b97e35f..ff3467db2 100644 --- a/packages/compiler-vapor/src/generators/expression.ts +++ b/packages/compiler-vapor/src/generators/expression.ts @@ -5,10 +5,11 @@ import { type SourceLocation, advancePositionWithClone, isInDestructureAssignment, + isLiteralWhitelisted, isStaticProperty, walkIdentifiers, } from '@vue/compiler-dom' -import { isGloballyAllowed, makeMap } from '@vue/shared' +import { isGloballyAllowed } from '@vue/shared' import type { Identifier } from '@babel/types' import { type CodeFragment, @@ -98,8 +99,6 @@ export function genExpression( } } -const isLiteralWhitelisted = /*#__PURE__*/ makeMap('true,false,null,this') - function genIdentifier( raw: string, { options, vaporHelper, identifiers }: CodegenContext,