UNPKG

burdy

Version:

Open Source Headless Platform

82 lines (81 loc) 4.03 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 __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const path_1 = __importDefault(require("path")); const fs_extra_1 = __importDefault(require("fs-extra")); const multer_1 = __importDefault(require("multer")); const logger_1 = __importDefault(require("../../shared/features/logger")); const path_util_1 = __importDefault(require("../../scripts/util/path.util")); class FileSystemDriver { constructor() { this.dir = process.env.FS_UPLOAD_FOLDER || path_util_1.default.burdyRoot('upload'); this.provider = 'fs'; this.getUpload = () => (0, multer_1.default)({ dest: this.dir }); this.getPath = (key) => path_1.default.join(`${this.dir}`, key); this.getName = () => this.provider; this.write = (key, data) => __awaiter(this, void 0, void 0, function* () { yield fs_extra_1.default.writeFile(this.getPath(key), data); return { key, provider: this.provider, }; }); this.createReadStream = (key, options) => fs_extra_1.default.createReadStream(this.getPath(key), options); this.createWriteStream = (key, options) => fs_extra_1.default.createWriteStream(this.getPath(key), options); this.stat = (key) => __awaiter(this, void 0, void 0, function* () { const stat = yield fs_extra_1.default.stat(this.getPath(key)); if (stat) { return Object.assign(Object.assign({}, stat), { contentLength: stat.size }); } return stat; }); this.read = (key) => __awaiter(this, void 0, void 0, function* () { const data = yield fs_extra_1.default.readFile(this.getPath(key)); return data; }); this.delete = (params) => __awaiter(this, void 0, void 0, function* () { if (params) { if (Array.isArray(params)) { yield Promise.all(params.map((doc) => __awaiter(this, void 0, void 0, function* () { try { yield fs_extra_1.default.unlink(this.getPath(doc)); } catch (err) { logger_1.default.error({ type: 'assets', message: `Unable to delete file: ${doc}`, data: err.toString(), }); } }))); } else { try { yield fs_extra_1.default.unlink(this.getPath(params)); } catch (err) { logger_1.default.error({ type: 'assets', message: `Unable to delete file: ${params}`, data: err.toString(), }); } } } }); this.copy = (src, dest) => fs_extra_1.default.copyFile(this.getPath(src), this.getPath(dest)); fs_extra_1.default.ensureDirSync(this.dir); } } exports.default = FileSystemDriver;