@opengis/fastify-table
Version:
core-plugins
33 lines (32 loc) • 1.09 kB
JavaScript
import { once } from "node:events";
import { rm } from "node:fs/promises";
import { createInterface } from "node:readline";
import { createReadStream, createWriteStream } from "node:fs";
export default async function jsonlToJsonFile(inputPath) {
const outputPath = inputPath.replace(/.jsonl$/g, ".json");
const input = createReadStream(inputPath);
const output = createWriteStream(outputPath);
const stream = createInterface({ input, crlfDelay: Infinity });
output.write("[\n");
let first = true;
stream.on("line", (line) => {
if (!line.trim())
return;
if (!first)
output.write(",\n");
output.write(JSON.stringify(JSON.parse(line)));
first = false;
});
// await stream to close /until convert finished
await once(stream, "close");
output.write("\n]");
output.end();
// wait for write stream to finish flushing
await once(output, "finish");
// rm temporary json line
await rm(inputPath, {
recursive: true,
force: true,
});
return outputPath;
}