@gotake/gotake-sdk
Version:
SDK for interacting with GoTake blockchain contracts
81 lines (65 loc) • 2.3 kB
JavaScript
const fs = require('fs');
const path = require('path');
function checkFileForProcessDependencies(filePath) {
const content = fs.readFileSync(filePath, 'utf8');
const issues = [];
// Check for dangerous process usages
const processPatterns = [
/process\.env(?!\s*\?)/, // process.env without conditional check
/process\.cwd\(\)/, // process.cwd()
/require\(['"]dotenv['"]\)/, // require('dotenv')
/process\.exit/, // process.exit
/process\.argv/, // process.argv
];
processPatterns.forEach((pattern, index) => {
const matches = content.match(pattern);
if (matches) {
issues.push({
file: filePath,
pattern: pattern.toString(),
matches: matches
});
}
});
return issues;
}
function checkDirectory(dir, issues = []) {
const files = fs.readdirSync(dir);
files.forEach(file => {
const fullPath = path.join(dir, file);
const stat = fs.statSync(fullPath);
if (stat.isDirectory()) {
checkDirectory(fullPath, issues);
} else if (file.endsWith('.js')) {
const fileIssues = checkFileForProcessDependencies(fullPath);
issues.push(...fileIssues);
}
});
return issues;
}
function main() {
console.log('=== Browser Compatibility Check ===\n');
const esmDir = path.join(__dirname, '../dist/esm');
if (!fs.existsSync(esmDir)) {
console.log('❌ ESM build not found. Run npm run build first.');
process.exit(1);
}
console.log('Checking ESM build for browser compatibility...');
const issues = checkDirectory(esmDir);
if (issues.length === 0) {
console.log('✅ No browser compatibility issues found!');
console.log('✅ ESM build is ready for browser use');
} else {
console.log(`❌ Found ${issues.length} browser compatibility issues:`);
issues.forEach(issue => {
console.log(`\n🔍 File: ${issue.file}`);
console.log(` Pattern: ${issue.pattern}`);
console.log(` Matches: ${JSON.stringify(issue.matches)}`);
});
process.exit(1);
}
}
if (require.main === module) {
main();
}
module.exports = { main };