UNPKG

@foxpage/foxpage-manager

Version:

foxpage resource manager

44 lines (43 loc) 1.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.storeContent = exports.resolveContentPath = exports.resolveContentDir = exports.FOXPAGE_CONTENT_FILE = exports.FOXPAGE_CONTENT = void 0; const path_1 = require("path"); const fs_extra_1 = require("fs-extra"); const common_1 = require("../common"); const locker_1 = require("./locker"); exports.FOXPAGE_CONTENT = 'contents'; exports.FOXPAGE_CONTENT_FILE = '.json'; const DIR_MARK = `${process.platform === 'win32' ? '\\' : '/'}`; function resolveContentDir(appId, dirs) { return (0, path_1.join)(common_1.FOXPAGE_ROOT, appId, exports.FOXPAGE_CONTENT, ...dirs); } exports.resolveContentDir = resolveContentDir; function resolveContentPath(appId, dirs) { const filename = dirs.pop(); const dir = resolveContentDir(appId, dirs); const filePath = (0, path_1.join)(dir, `${filename}${exports.FOXPAGE_CONTENT_FILE}`); return filePath; } exports.resolveContentPath = resolveContentPath; async function storeContent(filePath, content) { if (!content) { return; } if (await (0, fs_extra_1.pathExists)(filePath)) { return; } let lockStr = filePath.replace('.json', '-locked'); // TODO: const pkgMark = `contents${DIR_MARK}packages`; const [dir, value] = lockStr.split(pkgMark); if (value) { const layers = Array.from(value.split(DIR_MARK)); const last = layers.pop(); lockStr = dir + pkgMark + (layers.join(DIR_MARK) + '-' + last).replace(':', '_').replace(/\./g, '-'); } // for record cache time //@ts-ignore content._lastModified = new Date().getTime(); await (0, locker_1.withLock)(lockStr, () => (0, fs_extra_1.outputJSON)(filePath, content, { spaces: 2, flag: 'wx' })); } exports.storeContent = storeContent;