From 58d5569e4bbe7ac4140eb6c3b01b992539c0b9af Mon Sep 17 00:00:00 2001 From: Bob Lee Date: Mon, 10 Aug 2026 02:18:18 -0700 Subject: [PATCH] fix(appearance): skip dependency dirs in contract audit walks Prevent MiniApp local node_modules and build outputs from triggering false ThemeService contract failures during desktop builds. --- scripts/audit-appearance-contracts.mjs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/scripts/audit-appearance-contracts.mjs b/scripts/audit-appearance-contracts.mjs index 8c4d85fd21..7f2d9e10d3 100644 --- a/scripts/audit-appearance-contracts.mjs +++ b/scripts/audit-appearance-contracts.mjs @@ -80,10 +80,15 @@ if (fs.existsSync(retiredOwnershipFile)) { failures.push(`${relative(retiredOwnershipFile)}: directory-level Appearance source ownership is forbidden`); } +const ignoredWalkDirectories = new Set(['node_modules', 'dist', 'build']); + function walk(directory) { return fs.readdirSync(directory, { withFileTypes: true }).flatMap(entry => { const absolute = path.join(directory, entry.name); - if (entry.isDirectory()) return walk(absolute); + if (entry.isDirectory()) { + if (ignoredWalkDirectories.has(entry.name)) return []; + return walk(absolute); + } return /\.(?:css|scss|ts|tsx)$/.test(entry.name) ? [absolute] : []; }); } @@ -91,7 +96,10 @@ function walk(directory) { function walkContractSources(directory) { return fs.readdirSync(directory, { withFileTypes: true }).flatMap(entry => { const absolute = path.join(directory, entry.name); - if (entry.isDirectory()) return walkContractSources(absolute); + if (entry.isDirectory()) { + if (ignoredWalkDirectories.has(entry.name)) return []; + return walkContractSources(absolute); + } return /\.(?:css|d\.ts|html|js|json|md|rs|scss|ts|tsx)$/.test(entry.name) ? [absolute] : []; }); }