From 4f4cc59873ec704811649aeca8a49e3bcdbdf324 Mon Sep 17 00:00:00 2001 From: morluto <76467478+morluto@users.noreply.github.com> Date: Tue, 29 Sep 2026 19:07:05 +0800 Subject: [PATCH] refactor(domain): share AST property name reader --- src/domain/javascriptAstFingerprint.ts | 9 ++------- src/domain/javascriptAstValues.ts | 9 +++++++++ src/domain/javascriptStaticAnalysisHelpers.ts | 11 +++-------- 3 files changed, 14 insertions(+), 15 deletions(-) create mode 100644 src/domain/javascriptAstValues.ts diff --git a/src/domain/javascriptAstFingerprint.ts b/src/domain/javascriptAstFingerprint.ts index 1b1ff6e97a..ebf53346cb 100644 --- a/src/domain/javascriptAstFingerprint.ts +++ b/src/domain/javascriptAstFingerprint.ts @@ -2,6 +2,8 @@ import { createHash } from "node:crypto"; import * as t from "@babel/types"; +import { propertyName } from "./javascriptAstValues.js"; + /** Static CommonJS export names. */ export interface StaticExports { readonly values: readonly string[]; @@ -121,13 +123,6 @@ const memberPath = (node: t.Node | null | undefined): string => { return ""; }; -const propertyName = (node: t.Node): string => { - if (t.isIdentifier(node)) return node.name; - if (t.isStringLiteral(node) || t.isNumericLiteral(node)) - return String(node.value); - return ""; -}; - const stringValue = (node: t.Node | null | undefined): string | undefined => t.isStringLiteral(node) ? node.value : undefined; diff --git a/src/domain/javascriptAstValues.ts b/src/domain/javascriptAstValues.ts new file mode 100644 index 0000000000..434de1ba01 --- /dev/null +++ b/src/domain/javascriptAstValues.ts @@ -0,0 +1,9 @@ +import * as t from "@babel/types"; + +/** Read an identifier or literal property name without evaluating syntax. */ +export const propertyName = (node: t.Node): string => { + if (t.isIdentifier(node)) return node.name; + if (t.isStringLiteral(node) || t.isNumericLiteral(node)) + return String(node.value); + return ""; +}; diff --git a/src/domain/javascriptStaticAnalysisHelpers.ts b/src/domain/javascriptStaticAnalysisHelpers.ts index 020ecc1051..5602432112 100644 --- a/src/domain/javascriptStaticAnalysisHelpers.ts +++ b/src/domain/javascriptStaticAnalysisHelpers.ts @@ -10,6 +10,9 @@ import type { JavaScriptStaticPathContext, JavaScriptStaticStorage, } from "./javascriptStaticAnalysisTypes.js"; +import { propertyName } from "./javascriptAstValues.js"; + +export { propertyName } from "./javascriptAstValues.js"; /** Explicit result for source text that Babel cannot parse. */ export const failedJavaScriptStaticAnalysis = (): JavaScriptStaticAnalysis => ({ @@ -299,14 +302,6 @@ const calleeNameAt = (node: t.Node): string => { return ""; }; -/** Read a literal property name without evaluating computed syntax. */ -export const propertyName = (node: t.Node): string => { - if (t.isIdentifier(node)) return node.name; - if (t.isStringLiteral(node) || t.isNumericLiteral(node)) - return String(node.value); - return ""; -}; - /** Return a string literal value without evaluating an expression. */ export const stringValue = ( node: t.Node | null | undefined,