@microsoft/kiota
Version:
npm package exposing Kiota CLI functionality to TypeScript
36 lines • 1.29 kB
JavaScript
import * as cp from 'child_process';
import * as rpc from 'vscode-jsonrpc/node';
import { ensureKiotaIsPresent, getKiotaPath } from './install';
export default async function connectToKiota(callback, workingDirectory = process.cwd()) {
const kiotaPath = getKiotaPath();
await ensureKiotaIsPresent();
const childProcess = cp.spawn(kiotaPath, ["rpc"], {
cwd: workingDirectory,
env: {
...process.env,
// eslint-disable-next-line @typescript-eslint/naming-convention
KIOTA_CONFIG_PREVIEW: "true",
}
});
const inputReader = new rpc.StreamMessageReader(childProcess.stdout);
const outputWriter = new rpc.StreamMessageWriter(childProcess.stdin);
const connection = rpc.createMessageConnection(inputReader, outputWriter);
connection.listen();
try {
return await callback(connection);
}
catch (error) {
console.warn(error);
const errorMessage = error?.data?.message
|| 'An unknown error occurred';
return new Error(errorMessage);
}
finally {
inputReader.dispose();
outputWriter.dispose();
connection.dispose();
childProcess.stdin?.end();
childProcess.kill();
}
}
//# sourceMappingURL=connect.js.map