openpetswithchatandmcp/website/extract-fast.cjs
OpenPets Dev 65ac83849e Add 'website/' from commit '966aea480ffe1c340553aa878def30131d2af827'
git-subtree-dir: website
git-subtree-mainline: 8d3849caea
git-subtree-split: 966aea480f
2026-06-17 20:48:39 +00:00

47 lines
1.8 KiB
JavaScript
Executable file

const { Project, SyntaxKind } = require('ts-morph');
const fs = require('fs');
const path = require('path');
console.log('Starting fast payload extraction...');
const project = new Project();
project.addSourceFileAtPath('C:/ScriptoriumAI/scriptoriumai-ui/src/__tests__/Runboard.telemetry-lockstep-parity.test.tsx');
const sourceFile = project.getSourceFileOrThrow('C:/ScriptoriumAI/scriptoriumai-ui/src/__tests__/Runboard.telemetry-lockstep-parity.test.tsx');
let count = 0;
let output = 'export const fixtures = {\n';
const calls = sourceFile.getDescendantsOfKind(SyntaxKind.CallExpression);
console.log('Found ' + calls.length + ' call expressions.');
calls.forEach((call) => {
const expr = call.getExpression();
if (expr.getText().includes('mockResolvedValueOnce')) {
const args = call.getArguments();
if (args.length > 0) {
const arg = args[0];
const argText = arg.getText();
if (argText.length > 500) {
count++;
const pName = 'fixture_' + count;
let cleanText = argText;
if (cleanText.endsWith(' as any')) {
cleanText = cleanText.substring(0, cleanText.length - 7);
}
output += '"' + pName + '": ' + cleanText + ',\n';
call.removeArgument(0);
call.insertArgument(0, 'fixtures.' + pName + ' as any');
}
}
}
});
if (count > 0) {
sourceFile.insertImportDeclaration(0, { namedImports: ['fixtures'], moduleSpecifier: './__fixtures__/runboard-telemetry.fixtures' });
const p = 'C:/ScriptoriumAI/scriptoriumai-ui/src/__tests__/__fixtures__/runboard-telemetry.fixtures.ts';
fs.mkdirSync(path.dirname(p), { recursive: true });
fs.writeFileSync(p, output + '};\n');
sourceFile.saveSync();
console.log('Extracted ' + count + ' payloads.');
} else {
console.log('No payloads extracted.');
}