From a4d1855b70fd62f29331b9fd8ff5771fa75d732b Mon Sep 17 00:00:00 2001 From: KernelDeimos Date: Tue, 9 Sep 2025 15:42:00 -0400 Subject: [PATCH] fix: add missing file File missing from previous commit --- src/backend/src/kernel/modutil.js | 59 +++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 src/backend/src/kernel/modutil.js diff --git a/src/backend/src/kernel/modutil.js b/src/backend/src/kernel/modutil.js new file mode 100644 index 000000000..e949e0103 --- /dev/null +++ b/src/backend/src/kernel/modutil.js @@ -0,0 +1,59 @@ +const fs = require('fs').promises; +const path = require('path'); + +async function prependToJSFiles(directory, snippet) { + const jsExtensions = new Set(['.js', '.cjs', '.mjs']); + + async function processDirectory(dir) { + try { + const entries = await fs.readdir(dir, { withFileTypes: true }); + const promises = []; + + for (const entry of entries) { + const fullPath = path.join(dir, entry.name); + + if (entry.isDirectory()) { + // Skip common directories that shouldn't be modified + if (!shouldSkipDirectory(entry.name)) { + promises.push(processDirectory(fullPath)); + } + } else if (entry.isFile() && jsExtensions.has(path.extname(entry.name))) { + promises.push(prependToFile(fullPath, snippet)); + } + } + + await Promise.all(promises); + } catch (error) { + throw new Error(`error processing directory ${dir}`, { + cause: error, + }); + } + } + + function shouldSkipDirectory(dirName) { + const skipDirs = new Set([ + 'node_modules', + ]); + if ( skipDirs.has(dirName) ) return true; + if ( dirName.startsWith('.') ) return true; + return false; + } + + async function prependToFile(filePath, snippet) { + try { + const content = await fs.readFile(filePath, 'utf8'); + const newContent = snippet + content; + await fs.writeFile(filePath, newContent, 'utf8'); + } catch (error) { + throw new Error(`error processing file ${filePath}`, { + cause: error, + }); + } + } + + await processDirectory(directory); +} + +module.exports = { + prependToJSFiles +};