From 2403b47b5c160c476eb84d01ba7bcbda37e29bd9 Mon Sep 17 00:00:00 2001 From: snomiao Date: Tue, 2 Sep 2025 14:24:31 +0000 Subject: [PATCH] refactor: Use glob pattern to find litegraph files with declare keywords Instead of hardcoding the list of files, dynamically find all TypeScript files in litegraph that contain 'declare' keywords using glob pattern matching. --- browser_tests/i18nSetup.ts | 82 ++++++++++++++++++++++++-------------- 1 file changed, 51 insertions(+), 31 deletions(-) diff --git a/browser_tests/i18nSetup.ts b/browser_tests/i18nSetup.ts index a4878f24b..1fafafdcf 100644 --- a/browser_tests/i18nSetup.ts +++ b/browser_tests/i18nSetup.ts @@ -5,52 +5,72 @@ import * as fs from 'fs' import * as path from 'path' import { fileURLToPath } from 'url' +import { globSync } from 'glob' const __dirname = path.dirname(fileURLToPath(import.meta.url)) const rootDir = path.resolve(__dirname, '..') const litegraphSrcDir = path.join(rootDir, 'src/lib/litegraph/src') -const filesToProcess = [ - 'LGraphNode.ts', - 'widgets/BaseWidget.ts', - 'subgraph/SubgraphInput.ts', - 'subgraph/SubgraphNode.ts', - 'subgraph/SubgraphOutput.ts', - 'subgraph/EmptySubgraphInput.ts', - 'subgraph/EmptySubgraphOutput.ts' -] - const backupMap = new Map() +/** + * Find all TypeScript files in litegraph that contain 'declare' keywords + */ +function findFilesWithDeclare(): string[] { + // Search for all .ts files in litegraph src directory + const pattern = path.join(litegraphSrcDir, '**/*.ts') + const files = globSync(pattern, { + ignore: ['**/*.test.ts', '**/*.spec.ts', '**/node_modules/**'] + }) + + // Filter to only files that actually contain 'declare' keyword + return files.filter(filePath => { + try { + const content = fs.readFileSync(filePath, 'utf-8') + // Check for class property declarations with 'declare' keyword + return /^\s*declare\s+/m.test(content) + } catch (error) { + console.warn(` ⚠ Could not read ${filePath}: ${error.message}`) + return false + } + }) +} + export async function preprocessLitegraph() { console.log('Preprocessing litegraph files for i18n collection...') - for (const relativePath of filesToProcess) { - const filePath = path.join(litegraphSrcDir, relativePath) + const filesToProcess = findFilesWithDeclare() + + if (filesToProcess.length === 0) { + console.log(' ℹ No files with declare keywords found') + return + } + + console.log(` Found ${filesToProcess.length} files with declare keywords`) + + for (const filePath of filesToProcess) { + const originalContent = fs.readFileSync(filePath, 'utf-8') - if (fs.existsSync(filePath)) { - const originalContent = fs.readFileSync(filePath, 'utf-8') - - // Only process if file contains 'declare' keywords - if (originalContent.includes('declare ')) { - // Store original content in memory - backupMap.set(filePath, originalContent) - - // Remove 'declare' keyword from class properties - const modifiedContent = originalContent.replace( - /^(\s*)declare\s+/gm, - '$1// @ts-ignore - removed declare for Playwright\n$1' - ) - - // Write modified content - fs.writeFileSync(filePath, modifiedContent) - console.log(` ✓ Processed ${relativePath}`) - } - } + // Store original content in memory + backupMap.set(filePath, originalContent) + + // Remove 'declare' keyword from class properties + const modifiedContent = originalContent.replace( + /^(\s*)declare\s+/gm, + '$1// @ts-ignore - removed declare for Playwright\n$1' + ) + + // Write modified content + fs.writeFileSync(filePath, modifiedContent) + console.log(` ✓ Processed ${path.relative(litegraphSrcDir, filePath)}`) } } export async function restoreLitegraph() { + if (backupMap.size === 0) { + return + } + console.log('Restoring original litegraph files...') for (const [filePath, originalContent] of backupMap.entries()) {