Published source
Download source ZIP
CH-J Server Manager
Browse directories and files for a specific application release.
Source is provided under the CH-J Proprietary Software License 1.14. Its availability does not change the license terms or grant additional rights.
1
"use strict";3
const crypto = require("node:crypto");4
const fs = require("node:fs");5
const path = require("node:path");7
function atomicWriteFile(filePath, content, options = {}) {8
fs.mkdirSync(path.dirname(filePath), { recursive: true });9
const tempPath = `${filePath}.tmp-${crypto.randomBytes(6).toString("hex")}`;10
const backupPath = `${filePath}.replace-backup`;11
fs.writeFileSync(tempPath, content, { mode: options.mode || 0o600, encoding: options.encoding });12
try {13
if (process.platform === "win32" && fs.existsSync(filePath)) {14
try { fs.unlinkSync(backupPath); } catch {}15
fs.renameSync(filePath, backupPath);16
try {17
fs.renameSync(tempPath, filePath);18
fs.unlinkSync(backupPath);19
} catch (error) {20
try { fs.renameSync(backupPath, filePath); } catch {}21
throw error;22
}23
} else {24
fs.renameSync(tempPath, filePath);25
}26
} catch (error) {27
try { fs.unlinkSync(tempPath); } catch {}28
throw error;29
}30
}32
function atomicWriteJson(filePath, value) {33
atomicWriteFile(filePath, `${JSON.stringify(value, null, 2)}\n`, { encoding: "utf8", mode: 0o600 });34
}36
module.exports = { atomicWriteFile, atomicWriteJson };SHA-256: 7aee82e6b371127f5467bd9f5b77e57dfccbe53d8b7eed9a675767ff4c8c5610
Archive SHA-256: 5ac91caf4fa32a6fdb114f2430deed486fbe7489d5eea343d1f034169fafb5e0