UNPKG

@gotake/gotake-sdk

Version:

SDK for interacting with GoTake blockchain contracts

81 lines (65 loc) 2.3 kB
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 };