17 lines
502 B
JavaScript
17 lines
502 B
JavaScript
// api_v1/scanner/writeJsonAtomic.js
|
|
const path = require('path');
|
|
const fsp = require('fs/promises');
|
|
|
|
async function writeJsonAtomic(filePath, data) {
|
|
const tmpPath = `${filePath}.${process.pid}.${Date.now()}.${Math.random()
|
|
.toString(16)
|
|
.slice(2)}.tmp`;
|
|
|
|
const json = JSON.stringify(data, null, 2);
|
|
|
|
await fsp.mkdir(path.dirname(filePath), { recursive: true });
|
|
await fsp.writeFile(tmpPath, json, 'utf8');
|
|
await fsp.rename(tmpPath, filePath);
|
|
}
|
|
|
|
module.exports = writeJsonAtomic;
|