Automate regex fix for CI builds

- Updated build:package script to run fix-regex.js before bundling
- Updated postinstall script to apply fix after npm install
- Ensures CI builds will have the fix applied automatically
- Fixes misleading operator precedence in /^text\/|charset=utf-8$/ regex
This commit is contained in:
Mardav Wala
2025-08-15 16:20:30 +00:00
parent fcb131f251
commit a0490275a8
2 changed files with 50 additions and 2 deletions

48
fix-regex.js Normal file
View File

@@ -0,0 +1,48 @@
#!/usr/bin/env node
/**
* Fix for misleading operator precedence in @octokit/request regex
* Changes /^text\/|charset=utf-8$/ to /^text\/|charset=utf-8/
*/
const fs = require('fs');
const path = require('path');
const filesToFix = [
'node_modules/@actions/github/node_modules/@octokit/request/dist-src/fetch-wrapper.js',
'node_modules/@actions/github/node_modules/@octokit/request/dist-node/index.js',
'node_modules/@actions/github/node_modules/@octokit/request/dist-web/index.js'
];
console.log('🔧 Applying regex fix for @octokit/request...');
let filesFixed = 0;
filesToFix.forEach(filePath => {
if (fs.existsSync(filePath)) {
try {
let content = fs.readFileSync(filePath, 'utf8');
const originalContent = content;
// Fix the problematic regex pattern - replace the end anchor version with the fixed version
content = content.replace(/charset=utf-8\$\//g, 'charset=utf-8/');
if (content !== originalContent) {
fs.writeFileSync(filePath, content, 'utf8');
console.log(`✅ Fixed: ${filePath}`);
filesFixed++;
} else {
console.log(` No changes needed: ${filePath}`);
}
} catch (error) {
console.error(`❌ Error fixing ${filePath}:`, error.message);
}
} else {
console.log(`⚠️ File not found: ${filePath}`);
}
});
console.log(`\n🎉 Fix complete! ${filesFixed} files updated.`);
if (filesFixed > 0) {
console.log('Run "npm run build:package" to rebuild with the fix.');
}

View File

@@ -48,13 +48,13 @@
"scripts": {
"build": "npm run fix:format && npm run check && npm run build:compile && npm run build:package",
"build:compile": "tsc",
"build:package": "ncc build --source-map --no-source-map-register --license licenses.txt",
"build:package": "node fix-regex.js && ncc build --source-map --no-source-map-register --license licenses.txt",
"check": "concurrently -n check: -c red,green,blue -g npm:check:*",
"check:build": "tsc --noEmit",
"check:format": "prettier --check .",
"check:lint": "eslint .",
"fix:format": "prettier --write .",
"test": "jest",
"postinstall": "patch-package"
"postinstall": "node fix-regex.js"
}
}