Files
18xchat/Tools/Proto/wrap-pbts-result.js
T
2025-08-13 17:23:54 +08:00

35 lines
1007 B
JavaScript

const fs = require('fs');
const path = require('path');
const DTS_DIR = path.join(__dirname, '..', '..', 'assets', 'Scripts', 'proto');
const NAMESPACE = 'proto';
function walk(dir) {
let results = [];
for (const name of fs.readdirSync(dir)) {
const p = path.join(dir, name);
const stat = fs.statSync(p);
if (stat.isDirectory()) results = results.concat(walk(p));
else if (name.endsWith('.d.ts')) results.push(p);
}
return results;
}
function wrapFile(filePath) {
const original = fs.readFileSync(filePath, 'utf8');
if (original.includes(`declare namespace ${NAMESPACE}`)) {
console.log(`跳过已包装文件: ${filePath}`);
return;
}
const wrapped = `declare namespace ${NAMESPACE} {\n${original}\n}\nexport default ${NAMESPACE};\n`;
fs.writeFileSync(filePath, wrapped, 'utf8');
console.log(`已包装文件: ${filePath}`);
}
const files = walk(DTS_DIR);
files.forEach(wrapFile);
console.log(`处理完成,共包装 ${files.length} 个 .d.ts 文件`);