vtcode 0.172.2

A Rust-based terminal coding agent with modular architecture supporting multiple LLM providers
const { after } = require("node:test");
const fs = require("node:fs");
const os = require("node:os");
const path = require("node:path");
const ts = require("typescript");

module.exports = function compileModules(files, fixtures = {}) {
    const root = fs.mkdtempSync(path.join(os.tmpdir(), "vtcode-vscode-unit-"));
    after(() => fs.rmSync(root, { recursive: true, force: true }));
    const vscodeDir = path.join(root, "node_modules", "vscode");
    fs.mkdirSync(vscodeDir, { recursive: true });
    fs.copyFileSync(path.join(__dirname, "..", "fixtures", "vscode.cjs"), path.join(vscodeDir, "index.js"));
    for (const file of files) {
        const source = fs.readFileSync(path.join(__dirname, "..", "..", "src", `${file}.ts`), "utf8");
        const compiled = ts.transpileModule(source, {
            fileName: `${file}.ts`,
            compilerOptions: { module: ts.ModuleKind.CommonJS, target: ts.ScriptTarget.ES2020 },
        });
        const target = path.join(root, `${file}.js`);
        fs.mkdirSync(path.dirname(target), { recursive: true });
        fs.writeFileSync(target, compiled.outputText);
    }
    for (const [file, fixture] of Object.entries(fixtures)) {
        const target = path.join(root, `${file}.js`);
        fs.mkdirSync(path.dirname(target), { recursive: true });
        fs.copyFileSync(path.join(__dirname, "..", "fixtures", fixture), target);
    }
    return {
        load: (file) => require(path.join(root, `${file}.js`)),
        vscode: require(path.join(vscodeDir, "index.js")),
    };
};