@lskjs/upload
Version:
LSK module for uploading files.
186 lines • 15.4 kB
JavaScript
// import multer from 'multer';
// import fs from 'fs';
// import nodepath from 'path';
// import random from 'lodash/random';
// import get from 'lodash/get';
// import aws from 'aws-sdk';
// import multerS3 from 'multer-s3';
// import Api from '@lskjs/server-api';
// export default class UploadApi extends Api {
// getFileType(file) {
// if (file && file.originalname) {
// const res = file.originalname.match(/\.([0-9a-z]+)(?:[\?#]|$)/i); //eslint-disable-line
// if (res && res[1]) {
// return res[1];
// }
// }
// return null;
// }
// // @TODO real file name
// // const getFileName = (file) => {
// // return file.originalname;
// // };
// createDir(targetDir) {
// if (!fs.existsSync(targetDir)) {
// targetDir.split('/').forEach((dir, index, splits) => {
// const parent = splits.slice(0, index).join('/');
// const dirPath = nodepath.resolve(parent, dir);
// if (!fs.existsSync(dirPath)) {
// fs.mkdirSync(dirPath);
// }
// });
// }
// }
// getFilePath(req, file) {
// const { e403 } = this.app.errors;
// const { config } = this;
// let { path = 'storage' } = config;
// if (req.user && req.user._id) {
// path += `/${req.user._id}`;
// } else if (config.allowGuest) {
// path += '/general';
// } else {
// throw e403('Guest can not upload files');
// }
// let fileName;
// if (config.allowSetFilename) {
// fileName = file.originalname;
// } else {
// fileName = `${Date.now()}_${random(0, 1000)}.${this.getFileType(file)}`;
// }
// const { prefix = '' } = config;
// const path2 = `${path}/${prefix}${fileName}`;
// // console.log({ path2 });
// return path2;
// }
// getS3Storage() {
// return multerS3({
// s3: this.s3,
// bucket: this.config.s3.bucket,
// contentType: multerS3.AUTO_CONTENT_TYPE,
// acl: 'public-read',
// key3: (req, file, cb) => {
// const filename = nodepath.parse(file.originalname);
// // console.log({ req, file });
// // console.log(`avatar_${req.user._id}.${filename.ext}`);
// cb(null, `avatar_${req.user._id}.${filename.ext}`);
// },
// key: async (req, file, cb) => {
// let filename;
// try {
// // console.log('req, file', file);
// filename = this.getFilePath(req, file);
// // console.log('filename', filename);
// filename = filename.replace(/\//g, '__');
// // console.log('filename2', filename);
// } catch (err) {
// return cb(err);
// }
// return cb(null, filename);
// },
// });
// }
// getDiskStorage() {
// // const config = this.app.config.upload;
// const storage = multer.diskStorage({
// destination: (req, file, cb) => {
// // console.log('destination');
// let path;
// let dirname;
// try {
// path = this.getFilePath(req, file);
// dirname = path.split('/').slice(0, -1).join('/');
// this.createDir(dirname);
// } catch (err) {
// return cb(err);
// }
// return cb(null, dirname);
// },
// filename: (req, file, cb) => {
// let path;
// let filename;
// try {
// path = this.getFilePath(req, file);
// [filename] = path.split('/').reverse();
// } catch (err) {
// return cb(err);
// }
// // console.log('filename', filename);
// // this.createDir(filename);
// return cb(null, filename);
// },
// });
// return storage;
// }
// getMulter() {
// const { e400 } = this.app.errors;
// const config = this.app.config.upload;
// const fileFilter = (req, file, cb) => {
// if (Array.isArray(config.mimetypes)) {
// if (config.mimetypes.indexOf(file.mimetype) === -1) {
// return cb(e400('You are not allowed to upload files with this extension'));
// }
// }
// return cb(null, true);
// };
// const limits = {};
// if (config.maxSize) {
// const fileSize = parseFloat(config.maxSize) * 1024 * 1024;
// limits.fileSize = fileSize;
// }
// // console.log('getMulter', {
// // storage: this.storage,
// // limits,
// // fileFilter,
// // });
// return multer({
// storage: this.storage,
// limits,
// fileFilter,
// });
// }
// getApi() {
// const config = this.app.config.upload;
// function processFile(file) {
// if (config.s3) {
// return {
// name: file.fieldname,
// url: file.location,
// path: file.location,
// relative: `/${file.key}`,
// mimetype: file.contentType,
// filename: file.originalname,
// };
// }
// return {
// name: file.fieldname,
// url: `${config.url}/${file.path}`,
// path: `/${file.path}`,
// relative: `/${file.path}`,
// mimetype: file.mimetype,
// filename: file.originalname,
// };
// }
// const api = this.app.asyncRouter();
// api.post('/many', this.multer.any(), async (req) => {
// const { files = [] } = req;
// return files.map(processFile);
// });
// // const upload = multer();
// // api.post('/', this.multer.single('file'), async (req) => {
// api.post('/', this.multer.single('file'), async (req) => {
// const { file } = req;
// if (!file) {
// throw '!file';
// }
// return processFile(file);
// });
// return api;
// }
// async run() {
// this.app.app.use('/api/module/upload', this.getApi());
// }
// }
"use strict";
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9VcGxvYWRBcGkuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlc0NvbnRlbnQiOlsiLy8gaW1wb3J0IG11bHRlciBmcm9tICdtdWx0ZXInO1xuLy8gaW1wb3J0IGZzIGZyb20gJ2ZzJztcbi8vIGltcG9ydCBub2RlcGF0aCBmcm9tICdwYXRoJztcbi8vIGltcG9ydCByYW5kb20gZnJvbSAnbG9kYXNoL3JhbmRvbSc7XG4vLyBpbXBvcnQgZ2V0IGZyb20gJ2xvZGFzaC9nZXQnO1xuLy8gaW1wb3J0IGF3cyBmcm9tICdhd3Mtc2RrJztcbi8vIGltcG9ydCBtdWx0ZXJTMyBmcm9tICdtdWx0ZXItczMnO1xuLy8gaW1wb3J0IEFwaSBmcm9tICdAbHNranMvc2VydmVyLWFwaSc7XG5cbi8vIGV4cG9ydCBkZWZhdWx0IGNsYXNzIFVwbG9hZEFwaSBleHRlbmRzIEFwaSB7XG4vLyAgIGdldEZpbGVUeXBlKGZpbGUpIHtcbi8vICAgICBpZiAoZmlsZSAmJiBmaWxlLm9yaWdpbmFsbmFtZSkge1xuLy8gICAgICAgY29uc3QgcmVzID0gZmlsZS5vcmlnaW5hbG5hbWUubWF0Y2goL1xcLihbMC05YS16XSspKD86W1xcPyNdfCQpL2kpOyAgLy9lc2xpbnQtZGlzYWJsZS1saW5lXG4vLyAgICAgICBpZiAocmVzICYmIHJlc1sxXSkge1xuLy8gICAgICAgICByZXR1cm4gcmVzWzFdO1xuLy8gICAgICAgfVxuLy8gICAgIH1cbi8vICAgICByZXR1cm4gbnVsbDtcbi8vICAgfVxuLy8gICAvLyBAVE9ETyByZWFsIGZpbGUgbmFtZVxuLy8gICAvLyBjb25zdCBnZXRGaWxlTmFtZSA9IChmaWxlKSA9PiB7XG4vLyAgIC8vICAgcmV0dXJuIGZpbGUub3JpZ2luYWxuYW1lO1xuLy8gICAvLyB9O1xuXG4vLyAgIGNyZWF0ZURpcih0YXJnZXREaXIpIHtcbi8vICAgICBpZiAoIWZzLmV4aXN0c1N5bmModGFyZ2V0RGlyKSkge1xuLy8gICAgICAgdGFyZ2V0RGlyLnNwbGl0KCcvJykuZm9yRWFjaCgoZGlyLCBpbmRleCwgc3BsaXRzKSA9PiB7XG4vLyAgICAgICAgIGNvbnN0IHBhcmVudCA9IHNwbGl0cy5zbGljZSgwLCBpbmRleCkuam9pbignLycpO1xuLy8gICAgICAgICBjb25zdCBkaXJQYXRoID0gbm9kZXBhdGgucmVzb2x2ZShwYXJlbnQsIGRpcik7XG4vLyAgICAgICAgIGlmICghZnMuZXhpc3RzU3luYyhkaXJQYXRoKSkge1xuLy8gICAgICAgICAgIGZzLm1rZGlyU3luYyhkaXJQYXRoKTtcbi8vICAgICAgICAgfVxuLy8gICAgICAgfSk7XG4vLyAgICAgfVxuLy8gICB9XG5cbi8vICAgZ2V0RmlsZVBhdGgocmVxLCBmaWxlKSB7XG4vLyAgICAgY29uc3QgeyBlNDAzIH0gPSB0aGlzLmFwcC5lcnJvcnM7XG4vLyAgICAgY29uc3QgeyBjb25maWcgfSA9IHRoaXM7XG4vLyAgICAgbGV0IHsgcGF0aCA9ICdzdG9yYWdlJyB9ID0gY29uZmlnO1xuXG4vLyAgICAgaWYgKHJlcS51c2VyICYmIHJlcS51c2VyLl9pZCkge1xuLy8gICAgICAgcGF0aCArPSBgLyR7cmVxLnVzZXIuX2lkfWA7XG4vLyAgICAgfSBlbHNlIGlmIChjb25maWcuYWxsb3dHdWVzdCkge1xuLy8gICAgICAgcGF0aCArPSAnL2dlbmVyYWwnO1xuLy8gICAgIH0gZWxzZSB7XG4vLyAgICAgICB0aHJvdyBlNDAzKCdHdWVzdCBjYW4gbm90IHVwbG9hZCBmaWxlcycpO1xuLy8gICAgIH1cblxuLy8gICAgIGxldCBmaWxlTmFtZTtcbi8vICAgICBpZiAoY29uZmlnLmFsbG93U2V0RmlsZW5hbWUpIHtcbi8vICAgICAgIGZpbGVOYW1lID0gZmlsZS5vcmlnaW5hbG5hbWU7XG4vLyAgICAgfSBlbHNlIHtcbi8vICAgICAgIGZpbGVOYW1lID0gYCR7RGF0ZS5ub3coKX1fJHtyYW5kb20oMCwgMTAwMCl9LiR7dGhpcy5nZXRGaWxlVHlwZShmaWxlKX1gO1xuLy8gICAgIH1cbi8vICAgICBjb25zdCB7IHByZWZpeCA9ICcnIH0gPSBjb25maWc7XG4vLyAgICAgY29uc3QgcGF0aDIgPSBgJHtwYXRofS8ke3ByZWZpeH0ke2ZpbGVOYW1lfWA7XG4vLyAgICAgLy8gY29uc29sZS5sb2coeyBwYXRoMiB9KTtcblxuLy8gICAgIHJldHVybiBwYXRoMjtcbi8vICAgfVxuXG4vLyAgIGdldFMzU3RvcmFnZSgpIHtcbi8vICAgICByZXR1cm4gbXVsdGVyUzMoe1xuLy8gICAgICAgczM6IHRoaXMuczMsXG4vLyAgICAgICBidWNrZXQ6IHRoaXMuY29uZmlnLnMzLmJ1Y2tldCxcbi8vICAgICAgIGNvbnRlbnRUeXBlOiBtdWx0ZXJTMy5BVVRPX0NPTlRFTlRfVFlQRSxcbi8vICAgICAgIGFjbDogJ3B1YmxpYy1yZWFkJyxcbi8vICAgICAgIGtleTM6IChyZXEsIGZpbGUsIGNiKSA9PiB7XG4vLyAgICAgICAgIGNvbnN0IGZpbGVuYW1lID0gbm9kZXBhdGgucGFyc2UoZmlsZS5vcmlnaW5hbG5hbWUpO1xuLy8gICAgICAgICAvLyBjb25zb2xlLmxvZyh7IHJlcSwgZmlsZSB9KTtcbi8vICAgICAgICAgLy8gY29uc29sZS5sb2coYGF2YXRhcl8ke3JlcS51c2VyLl9pZH0uJHtmaWxlbmFtZS5leHR9YCk7XG4vLyAgICAgICAgIGNiKG51bGwsIGBhdmF0YXJfJHtyZXEudXNlci5faWR9LiR7ZmlsZW5hbWUuZXh0fWApO1xuLy8gICAgICAgfSxcbi8vICAgICAgIGtleTogYXN5bmMgKHJlcSwgZmlsZSwgY2IpID0+IHtcbi8vICAgICAgICAgbGV0IGZpbGVuYW1lO1xuLy8gICAgICAgICB0cnkge1xuLy8gICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdyZXEsIGZpbGUnLCBmaWxlKTtcbi8vICAgICAgICAgICBmaWxlbmFtZSA9IHRoaXMuZ2V0RmlsZVBhdGgocmVxLCBmaWxlKTtcbi8vICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnZmlsZW5hbWUnLCBmaWxlbmFtZSk7XG4vLyAgICAgICAgICAgZmlsZW5hbWUgPSBmaWxlbmFtZS5yZXBsYWNlKC9cXC8vZywgJ19fJyk7XG4vLyAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ2ZpbGVuYW1lMicsIGZpbGVuYW1lKTtcbi8vICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4vLyAgICAgICAgICAgcmV0dXJuIGNiKGVycik7XG4vLyAgICAgICAgIH1cbi8vICAgICAgICAgcmV0dXJuIGNiKG51bGwsIGZpbGVuYW1lKTtcbi8vICAgICAgIH0sXG4vLyAgICAgfSk7XG4vLyAgIH1cblxuLy8gICBnZXREaXNrU3RvcmFnZSgpIHtcbi8vICAgICAvLyBjb25zdCBjb25maWcgPSB0aGlzLmFwcC5jb25maWcudXBsb2FkO1xuLy8gICAgIGNvbnN0IHN0b3JhZ2UgPSBtdWx0ZXIuZGlza1N0b3JhZ2Uoe1xuLy8gICAgICAgZGVzdGluYXRpb246IChyZXEsIGZpbGUsIGNiKSA9PiB7XG4vLyAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdkZXN0aW5hdGlvbicpO1xuLy8gICAgICAgICBsZXQgcGF0aDtcbi8vICAgICAgICAgbGV0IGRpcm5hbWU7XG4vLyAgICAgICAgIHRyeSB7XG4vLyAgICAgICAgICAgcGF0aCA9IHRoaXMuZ2V0RmlsZVBhdGgocmVxLCBmaWxlKTtcbi8vICAgICAgICAgICBkaXJuYW1lID0gcGF0aC5zcGxpdCgnLycpLnNsaWNlKDAsIC0xKS5qb2luKCcvJyk7XG4vLyAgICAgICAgICAgdGhpcy5jcmVhdGVEaXIoZGlybmFtZSk7XG4vLyAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuLy8gICAgICAgICAgIHJldHVybiBjYihlcnIpO1xuLy8gICAgICAgICB9XG4vLyAgICAgICAgIHJldHVybiBjYihudWxsLCBkaXJuYW1lKTtcbi8vICAgICAgIH0sXG4vLyAgICAgICBmaWxlbmFtZTogKHJlcSwgZmlsZSwgY2IpID0+IHtcbi8vICAgICAgICAgbGV0IHBhdGg7XG4vLyAgICAgICAgIGxldCBmaWxlbmFtZTtcbi8vICAgICAgICAgdHJ5IHtcbi8vICAgICAgICAgICBwYXRoID0gdGhpcy5nZXRGaWxlUGF0aChyZXEsIGZpbGUpO1xuLy8gICAgICAgICAgIFtmaWxlbmFtZV0gPSBwYXRoLnNwbGl0KCcvJykucmV2ZXJzZSgpO1xuLy8gICAgICAgICB9IGNhdGNoIChlcnIpIHtcbi8vICAgICAgICAgICByZXR1cm4gY2IoZXJyKTtcbi8vICAgICAgICAgfVxuLy8gICAgICAgICAvLyBjb25zb2xlLmxvZygnZmlsZW5hbWUnLCBmaWxlbmFtZSk7XG4vLyAgICAgICAgIC8vIHRoaXMuY3JlYXRlRGlyKGZpbGVuYW1lKTtcbi8vICAgICAgICAgcmV0dXJuIGNiKG51bGwsIGZpbGVuYW1lKTtcbi8vICAgICAgIH0sXG4vLyAgICAgfSk7XG4vLyAgICAgcmV0dXJuIHN0b3JhZ2U7XG4vLyAgIH1cblxuLy8gICBnZXRNdWx0ZXIoKSB7XG4vLyAgICAgY29uc3QgeyBlNDAwIH0gPSB0aGlzLmFwcC5lcnJvcnM7XG4vLyAgICAgY29uc3QgY29uZmlnID0gdGhpcy5hcHAuY29uZmlnLnVwbG9hZDtcbi8vICAgICBjb25zdCBmaWxlRmlsdGVyID0gKHJlcSwgZmlsZSwgY2IpID0+IHtcbi8vICAgICAgIGlmIChBcnJheS5pc0FycmF5KGNvbmZpZy5taW1ldHlwZXMpKSB7XG4vLyAgICAgICAgIGlmIChjb25maWcubWltZXR5cGVzLmluZGV4T2YoZmlsZS5taW1ldHlwZSkgPT09IC0xKSB7XG4vLyAgICAgICAgICAgcmV0dXJuIGNiKGU0MDAoJ1lvdSBhcmUgbm90IGFsbG93ZWQgdG8gdXBsb2FkIGZpbGVzIHdpdGggdGhpcyBleHRlbnNpb24nKSk7XG4vLyAgICAgICAgIH1cbi8vICAgICAgIH1cbi8vICAgICAgIHJldHVybiBjYihudWxsLCB0cnVlKTtcbi8vICAgICB9O1xuXG4vLyAgICAgY29uc3QgbGltaXRzID0ge307XG4vLyAgICAgaWYgKGNvbmZpZy5tYXhTaXplKSB7XG4vLyAgICAgICBjb25zdCBmaWxlU2l6ZSA9IHBhcnNlRmxvYXQoY29uZmlnLm1heFNpemUpICogMTAyNCAqIDEwMjQ7XG4vLyAgICAgICBsaW1pdHMuZmlsZVNpemUgPSBmaWxlU2l6ZTtcbi8vICAgICB9XG4vLyAgICAgLy8gY29uc29sZS5sb2coJ2dldE11bHRlcicsIHtcbi8vICAgICAvLyAgIHN0b3JhZ2U6IHRoaXMuc3RvcmFnZSxcbi8vICAgICAvLyAgIGxpbWl0cyxcbi8vICAgICAvLyAgIGZpbGVGaWx0ZXIsXG4vLyAgICAgLy8gfSk7XG4vLyAgICAgcmV0dXJuIG11bHRlcih7XG4vLyAgICAgICBzdG9yYWdlOiB0aGlzLnN0b3JhZ2UsXG4vLyAgICAgICBsaW1pdHMsXG4vLyAgICAgICBmaWxlRmlsdGVyLFxuLy8gICAgIH0pO1xuLy8gICB9XG5cbi8vICAgZ2V0QXBpKCkge1xuLy8gICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuYXBwLmNvbmZpZy51cGxvYWQ7XG4vLyAgICAgZnVuY3Rpb24gcHJvY2Vzc0ZpbGUoZmlsZSkge1xuLy8gICAgICAgaWYgKGNvbmZpZy5zMykge1xuLy8gICAgICAgICByZXR1cm4ge1xuLy8gICAgICAgICAgIG5hbWU6IGZpbGUuZmllbGRuYW1lLFxuLy8gICAgICAgICAgIHVybDogZmlsZS5sb2NhdGlvbixcbi8vICAgICAgICAgICBwYXRoOiBmaWxlLmxvY2F0aW9uLFxuLy8gICAgICAgICAgIHJlbGF0aXZlOiBgLyR7ZmlsZS5rZXl9YCxcbi8vICAgICAgICAgICBtaW1ldHlwZTogZmlsZS5jb250ZW50VHlwZSxcbi8vICAgICAgICAgICBmaWxlbmFtZTogZmlsZS5vcmlnaW5hbG5hbWUsXG4vLyAgICAgICAgIH07XG4vLyAgICAgICB9XG5cbi8vICAgICAgIHJldHVybiB7XG4vLyAgICAgICAgIG5hbWU6IGZpbGUuZmllbGRuYW1lLFxuLy8gICAgICAgICB1cmw6IGAke2NvbmZpZy51cmx9LyR7ZmlsZS5wYXRofWAsXG4vLyAgICAgICAgIHBhdGg6IGAvJHtmaWxlLnBhdGh9YCxcbi8vICAgICAgICAgcmVsYXRpdmU6IGAvJHtmaWxlLnBhdGh9YCxcbi8vICAgICAgICAgbWltZXR5cGU6IGZpbGUubWltZXR5cGUsXG4vLyAgICAgICAgIGZpbGVuYW1lOiBmaWxlLm9yaWdpbmFsbmFtZSxcbi8vICAgICAgIH07XG4vLyAgICAgfVxuXG4vLyAgICAgY29uc3QgYXBpID0gdGhpcy5hcHAuYXN5bmNSb3V0ZXIoKTtcbi8vICAgICBhcGkucG9zdCgnL21hbnknLCB0aGlzLm11bHRlci5hbnkoKSwgYXN5bmMgKHJlcSkgPT4ge1xuLy8gICAgICAgY29uc3QgeyBmaWxlcyA9IFtdIH0gPSByZXE7XG4vLyAgICAgICByZXR1cm4gZmlsZXMubWFwKHByb2Nlc3NGaWxlKTtcbi8vICAgICB9KTtcblxuLy8gICAgIC8vIGNvbnN0IHVwbG9hZCA9IG11bHRlcigpO1xuLy8gICAgIC8vIGFwaS5wb3N0KCcvJywgdGhpcy5tdWx0ZXIuc2luZ2xlKCdmaWxlJyksIGFzeW5jIChyZXEpID0+IHtcbi8vICAgICBhcGkucG9zdCgnLycsIHRoaXMubXVsdGVyLnNpbmdsZSgnZmlsZScpLCBhc3luYyAocmVxKSA9PiB7XG4vLyAgICAgICBjb25zdCB7IGZpbGUgfSA9IHJlcTtcbi8vICAgICAgIGlmICghZmlsZSkge1xuLy8gICAgICAgICB0aHJvdyAnIWZpbGUnO1xuLy8gICAgICAgfVxuLy8gICAgICAgcmV0dXJuIHByb2Nlc3NGaWxlKGZpbGUpO1xuLy8gICAgIH0pO1xuLy8gICAgIHJldHVybiBhcGk7XG4vLyAgIH1cblxuLy8gICBhc3luYyBydW4oKSB7XG4vLyAgICAgdGhpcy5hcHAuYXBwLnVzZSgnL2FwaS9tb2R1bGUvdXBsb2FkJywgdGhpcy5nZXRBcGkoKSk7XG4vLyAgIH1cbi8vIH1cbiJdfQ==
//# sourceMappingURL=UploadApi.js.map