37 lines
1.6 KiB
JavaScript
Executable file
37 lines
1.6 KiB
JavaScript
Executable file
const { Project, SyntaxKind } = require('ts-morph');
|
|
const project = new Project({ tsConfigFilePath: './tsconfig.json' });
|
|
const sourceFile = project.getSourceFileOrThrow('src/pages/Runboard.tsx');
|
|
const fn = sourceFile.getFunctionOrThrow('Runboard');
|
|
|
|
const varsToRemove = [
|
|
'compareRemediationRouteActionReadiness',
|
|
'compareRemediationRouteQuickActionDisabledState',
|
|
'compareRemediationEditorContextHref'
|
|
];
|
|
|
|
let extractedCode = "import { useMemo } from 'react';\n\nexport function useCompareRemediationRouteStrategy() {\n";
|
|
let removed = 0;
|
|
|
|
varsToRemove.forEach(name => {
|
|
const v = fn.getVariableStatements().find(x => x.getDeclarations().length > 0 && x.getDeclarations()[0].getName() === name);
|
|
if (v) {
|
|
extractedCode += v.getText() + '\n\n';
|
|
v.remove();
|
|
removed++;
|
|
}
|
|
});
|
|
|
|
extractedCode += " return {\n compareRemediationRouteActionReadiness,\n compareRemediationRouteQuickActionDisabledState,\n compareRemediationEditorContextHref\n };\n}\n";
|
|
|
|
if (removed > 0) {
|
|
require('fs').writeFileSync('src/hooks/useCompareRemediationRouteStrategy.ts', extractedCode);
|
|
fn.insertStatements(0, 'const { compareRemediationRouteActionReadiness, compareRemediationRouteQuickActionDisabledState, compareRemediationEditorContextHref } = useCompareRemediationRouteStrategy();');
|
|
sourceFile.addImportDeclaration({
|
|
namedImports: ['useCompareRemediationRouteStrategy'],
|
|
moduleSpecifier: '../hooks/useCompareRemediationRouteStrategy'
|
|
});
|
|
project.saveSync();
|
|
console.log('Successfully completed first massive hook split.');
|
|
} else {
|
|
console.log('Variables not found, likely already extracted.');
|
|
}
|