zed/crates/prettier/prettier_server/src/index.js

57 lines
1.2 KiB
JavaScript
Raw Normal View History

const { Buffer } = require('buffer');
let buffer = Buffer.alloc(0);
process.stdin.resume();
process.stdin.on('data', (data) => {
buffer = Buffer.concat([buffer, data]);
handleData();
});
process.stdin.on('end', () => {
handleData();
});
function handleData() {
if (buffer.length < 4) {
return;
}
const length = buffer.readUInt32LE(0);
console.log(length);
if (buffer.length < 4 + length) {
return;
}
const bytes = buffer.subarray(4, 4 + length);
buffer = buffer.subarray(4 + length);
try {
const message = JSON.parse(bytes);
handleMessage(message);
} catch (_) {
sendResponse(makeError("Request JSON parse error"));
return;
}
}
// format
// clear_cache
// shutdown
// error
function handleMessage(message) {
console.log(message);
sendResponse({ method: "hi", result: null });
}
function makeError(message) {
return { method: "error", message };
}
function sendResponse(response) {
let message = Buffer.from(JSON.stringify(response));
let length = Buffer.alloc(4);
length.writeUInt32LE(message.length);
process.stdout.write(length);
process.stdout.write(message);
}