UNPKG

@becomes/cms

Version:

Simple CMS for building APIs.

315 lines 14.3 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __generator = (this && this.__generator) || function (thisArg, body) { var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (_) try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } op = body.call(thisArg, _); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; Object.defineProperty(exports, "__esModule", { value: true }); exports.FSUtil = void 0; var path = require("path"); var util = require("util"); var fs = require("fs"); var fsExtra = require("fs-extra"); var uuid = require("uuid"); var folder_tree_interface_1 = require("./interfaces/folder-tree.interface"); var FSUtil = (function () { function FSUtil() { } FSUtil.save = function (data, root) { return __awaiter(this, void 0, void 0, function () { var parts, base, j, error_1; return __generator(this, function (_a) { switch (_a.label) { case 0: parts = root.split('/'); base = "" + FSUtil.base; j = 0; _a.label = 1; case 1: if (!(j < parts.length)) return [3, 8]; if (!(parts[j].indexOf('.') === -1)) return [3, 7]; base = path.join(base, parts[j]); _a.label = 2; case 2: _a.trys.push([2, 6, , 7]); return [4, util.promisify(fs.exists)(base)]; case 3: if (!((_a.sent()) === false)) return [3, 5]; return [4, util.promisify(fs.mkdir)(base)]; case 4: _a.sent(); _a.label = 5; case 5: return [3, 7]; case 6: error_1 = _a.sent(); console.log("Failed to create directory '" + base + "'"); return [3, 7]; case 7: j = j + 1; return [3, 1]; case 8: return [4, util.promisify(fs.writeFile)(path.join(base, parts[parts.length - 1]), data)]; case 9: _a.sent(); return [2]; } }); }); }; FSUtil.mkdir = function (root, isAbsolute) { return __awaiter(this, void 0, void 0, function () { var parts, base, j, error_2; return __generator(this, function (_a) { switch (_a.label) { case 0: parts = root.split('/'); base = "" + FSUtil.base; j = 0; _a.label = 1; case 1: if (!(j < parts.length)) return [3, 8]; if (!(parts[j].indexOf('.') === -1)) return [3, 7]; base = path.join(base, parts[j]); _a.label = 2; case 2: _a.trys.push([2, 6, , 7]); return [4, util.promisify(fs.exists)(base)]; case 3: if (!((_a.sent()) === false)) return [3, 5]; return [4, util.promisify(fs.mkdir)(base)]; case 4: _a.sent(); _a.label = 5; case 5: return [3, 7]; case 6: error_2 = _a.sent(); console.log("Failed to create directory '" + base + "'"); return [3, 7]; case 7: j = j + 1; return [3, 1]; case 8: return [2]; } }); }); }; FSUtil.read = function (root) { return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) { switch (_a.label) { case 0: return [4, util.promisify(fs.readFile)(path.join(FSUtil.base, root))]; case 1: return [2, _a.sent()]; } }); }); }; FSUtil.exist = function (root) { return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) { switch (_a.label) { case 0: return [4, util.promisify(fs.exists)(path.join(FSUtil.base, root))]; case 1: return [2, _a.sent()]; } }); }); }; FSUtil.deleteFile = function (root) { return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) { switch (_a.label) { case 0: return [4, util.promisify(fs.unlink)(path.join(FSUtil.base, root))]; case 1: _a.sent(); return [2]; } }); }); }; FSUtil.deleteDir = function (root) { return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) { switch (_a.label) { case 0: return [4, fsExtra.remove(path.join(FSUtil.base, root))]; case 1: _a.sent(); return [2]; } }); }); }; FSUtil.rename = function (oldRoot, newRoot) { return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) { switch (_a.label) { case 0: return [4, util.promisify(fs.rename)(path.join(FSUtil.base, oldRoot), path.join(FSUtil.base, newRoot))]; case 1: _a.sent(); return [2]; } }); }); }; FSUtil.folderTree = function (p, relativePath) { return __awaiter(this, void 0, void 0, function () { var folderTree, result, _a, _b, _i, i, _c, _d, _e, entity, extParts, ext, error_3; return __generator(this, function (_f) { switch (_f.label) { case 0: if (!relativePath) { relativePath = ''; } folderTree = []; _f.label = 1; case 1: _f.trys.push([1, 8, , 9]); return [4, util.promisify(fs.readdir)(p)]; case 2: result = _f.sent(); _a = []; for (_b in result) _a.push(_b); _i = 0; _f.label = 3; case 3: if (!(_i < _a.length)) return [3, 7]; i = _a[_i]; if (!(result[i].indexOf('.') === -1)) return [3, 5]; _d = (_c = folderTree).push; _e = { id: uuid.v4(), name: result[i], path: relativePath + "/" + result[i], type: folder_tree_interface_1.FolderTreeType.DIR }; return [4, FSUtil.folderTree(path.join(p, result[i]), relativePath + "/" + result[i])]; case 4: _d.apply(_c, [(_e.children = _f.sent(), _e.state = false, _e)]); return [3, 6]; case 5: entity = { id: uuid.v4(), name: result[i], type: folder_tree_interface_1.FolderTreeType.DIR, path: relativePath + "/" + result[i], state: false, }; extParts = result[i].split('.'); ext = extParts[extParts.length - 1]; if (ext === 'png' || ext === 'jpg' || ext === 'jpeg' || ext === 'svg') { entity.type = folder_tree_interface_1.FolderTreeType.IMG; } else if (ext === 'mov' || ext === 'mp4' || ext === 'mpeg' || ext === 'avi' || ext === 'mkv' || ext === 'wmv' || ext === 'mpg' || ext === 'm2v' || ext === 'm4v') { entity.type = folder_tree_interface_1.FolderTreeType.VID; } else if (ext === 'PDF') { entity.type = folder_tree_interface_1.FolderTreeType.PDF; } else if (ext === 'gif') { entity.type = folder_tree_interface_1.FolderTreeType.GIF; } else if (ext === 'ts' || ext === 'sh' || ext === 'go') { entity.type = folder_tree_interface_1.FolderTreeType.CODE; } else if (ext === 'js') { entity.type = folder_tree_interface_1.FolderTreeType.JS; } else if (ext === 'html') { entity.type = folder_tree_interface_1.FolderTreeType.HTML; } else if (ext === 'css') { entity.type = folder_tree_interface_1.FolderTreeType.CSS; } else if (ext === 'java') { entity.type = folder_tree_interface_1.FolderTreeType.JAVA; } else if (ext === 'php') { entity.type = folder_tree_interface_1.FolderTreeType.PHP; } else if (ext === 'ttf' || ext === 'woff' || ext === 'woff2' || ext === 'eot') { entity.type = folder_tree_interface_1.FolderTreeType.FONT; } else { entity.type = folder_tree_interface_1.FolderTreeType.OTH; } folderTree.push(entity); _f.label = 6; case 6: _i++; return [3, 3]; case 7: return [3, 9]; case 8: error_3 = _f.sent(); console.log("'" + p + "' does not exist."); return [3, 9]; case 9: return [2, folderTree]; } }); }); }; FSUtil.composeFolderTree = function (folderTree) { var roots = []; folderTree.forEach(function (ft) { var root = ft.name; var childRoots = []; if (ft.children) { childRoots = FSUtil.composeFolderTree(ft.children); if (childRoots.length === 0) { roots.push(root); } else { childRoots.forEach(function (cr) { roots.push(root + "/" + cr); }); } } }); return roots; }; FSUtil.base = path.join(process.env.PROJECT_ROOT, 'uploads'); return FSUtil; }()); exports.FSUtil = FSUtil; //# sourceMappingURL=fs-util.js.map