UNPKG

file-cms

Version:

File based Content Management System, easy to use with content stored in native file system

43 lines (42 loc) 1.92 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.fetchContentCached = void 0; var tslib_1 = require("tslib"); var path_1 = tslib_1.__importDefault(require("path")); var promises_1 = require("fs/promises"); var parseContent_1 = require("./parseContent"); var NotFoundError_1 = require("../errors/NotFoundError"); var cache = {}; var fetchContentCached = function (rootDir, type, slug) { return tslib_1.__awaiter(void 0, void 0, void 0, function () { var normalizedPath, fileContents, content; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: normalizedPath = path_1.default.normalize(path_1.default.join(rootDir, type, slug + ".md")); if (!(cache[normalizedPath] == undefined)) return [3 /*break*/, 2]; return [4 /*yield*/, readContentFile(rootDir, type, slug)]; case 1: fileContents = _a.sent(); content = (0, parseContent_1.parseContent)(fileContents, type, slug); cache[normalizedPath] = content; _a.label = 2; case 2: return [2 /*return*/, cache[normalizedPath]]; } }); }); }; exports.fetchContentCached = fetchContentCached; var readContentFile = function (rootDir, type, slug) { return tslib_1.__awaiter(void 0, void 0, void 0, function () { var e_1; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: _a.trys.push([0, 2, , 3]); return [4 /*yield*/, (0, promises_1.readFile)(path_1.default.join(rootDir, type, slug + ".md"), "utf8")]; case 1: return [2 /*return*/, _a.sent()]; case 2: e_1 = _a.sent(); throw new NotFoundError_1.NotFoundError(rootDir, type, slug, e_1); case 3: return [2 /*return*/]; } }); }); };