UNPKG

silvie

Version:

Typescript Back-end Framework

83 lines (78 loc) 2.49 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _path = _interopRequireDefault(require("path")); var _crypto = _interopRequireDefault(require("crypto")); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; } function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } const config = process.configs.storage; class File { get filename() { return _path.default.join(this.filePath, `${this.fileName}${this.fileExt ? `.${this.fileExt}` : ''}`); } constructor(filename, extension) { _defineProperty(this, "fileName", void 0); _defineProperty(this, "fileExt", ''); _defineProperty(this, "filePath", ''); if (filename) { if (extension) { this.fileName = filename; this.fileExt = extension; } else { const parts = filename.split('.'); if (parts.length > 1) { this.fileExt = parts.pop(); this.fileName = parts.join('.'); } else { this.fileName = filename; } } } else { this.randomName(); if (extension) { this.fileExt = extension; } } } /** * Generate a random file name */ randomName() { const hashConfig = config.files.hash; const hash = _crypto.default.createHash(hashConfig.algorithm).update(`${Date.now()}${Math.random()}${hashConfig.salt}`); this.fileName = hash.digest('hex'); return this; } /** * Change file instance name * @param filename */ name(filename) { this.fileName = filename; return this; } /** * Change file instance path * @param filePath */ path(filePath) { this.filePath = filePath; return this; } /** * Change file instance extension * @param extension */ ext(extension) { this.fileExt = extension; return this; } toString() { return this.filename; } } exports.default = File;