UNPKG

cross-process-lock

Version:

Cross-process file locking solution with lock-queue

62 lines 2.14 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.saveMetadata = exports.readMetadata = void 0; const fs_1 = require("fs"); const logger_1 = require("./logger"); /** * Reads metadata from the given file * @param {string} file - path to file to read metadata from * @returns {Promise} */ const readMetadata = (file) => { return new Promise((resolve, reject) => { (0, logger_1.logger)("readMetadata file:%s", file); (0, fs_1.readFile)(file, { encoding: "utf8" }, (err, data) => { (0, logger_1.logger)("readMetadata err:%s", err); (0, logger_1.logger)("readMetadata data:%O", data); if (err) { reject(err); } else { try { const parsed = JSON.parse(String(data)); (0, logger_1.logger)("readMetadata parsed:%O", parsed); resolve(parsed); } catch (e) { (0, logger_1.logger)("readMetadata not JSON:%s", e); resolve(null); } } }); }); }; exports.readMetadata = readMetadata; /** * Saves metadata to the given file * @param {string} file - path to file to write metadata to * @param {number} lockTime - timestamp when lock should be registered * @returns {Promise} */ const saveMetadata = (file, lockTime) => { return new Promise((resolve, reject) => { (0, logger_1.logger)("saveMetadata file:%s", file); (0, logger_1.logger)("saveMetadata lockTime:%d", lockTime); const metadata = { pID: process.pid, lockTime }; (0, logger_1.logger)("saveMetadata metadata:%o", metadata); (0, fs_1.writeFile)(file, JSON.stringify(metadata), { encoding: "utf8" }, (err) => { (0, logger_1.logger)("saveMetadata done err:%o", err); if (err) { reject(err); } else { resolve(); } }); }); }; exports.saveMetadata = saveMetadata; //# sourceMappingURL=metadata.js.map