UNPKG

nodejs-file-utils

Version:

File Read and Write Apis with Cached content in NodeJs

60 lines (59 loc) 2.44 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.saveFileStore = exports.updateFileStore = exports.readFileStore = void 0; var tslib_1 = require("tslib"); var lodash_1 = require("lodash"); var path_1 = require("path"); var readPromises = {}; var dataMap = {}; var readFileStore = function (path, reader, force) { if (force === void 0) { force = false; } return tslib_1.__awaiter(void 0, void 0, void 0, function () { var normalizedPath, data, e_1; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: normalizedPath = (0, path_1.normalize)(path); if (!(!dataMap[normalizedPath] || force)) return [3 /*break*/, 4]; if (!readPromises[normalizedPath] || force) { readPromises[normalizedPath] = reader(normalizedPath); } _a.label = 1; case 1: _a.trys.push([1, 3, , 4]); return [4 /*yield*/, readPromises[normalizedPath]]; case 2: data = _a.sent(); dataMap[normalizedPath] = data; return [3 /*break*/, 4]; case 3: e_1 = _a.sent(); delete readPromises[normalizedPath]; throw e_1; case 4: return [2 /*return*/, (0, lodash_1.cloneDeep)(dataMap[normalizedPath])]; } }); }); }; exports.readFileStore = readFileStore; var updateFileStore = function (path, data) { var normalizedPath = (0, path_1.normalize)(path); dataMap[normalizedPath] = (0, lodash_1.cloneDeep)(data); }; exports.updateFileStore = updateFileStore; var saveFileStore = function (path, writer) { return tslib_1.__awaiter(void 0, void 0, void 0, function () { var normalizedPath; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: normalizedPath = (0, path_1.normalize)(path); if (!dataMap[normalizedPath]) return [3 /*break*/, 2]; return [4 /*yield*/, writer(normalizedPath, dataMap[normalizedPath])]; case 1: _a.sent(); _a.label = 2; case 2: return [2 /*return*/]; } }); }); }; exports.saveFileStore = saveFileStore;