sfs-node
Version:
Core of SFS for node.js
3 lines (2 loc) • 3.72 kB
JavaScript
var e=require("fs"),r=require("path"),t=require("check-disk-space"),n=require("crypto"),i=require("uuid"),o=require("sfs-file-type");function u(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function a(e){if(e&&e.__esModule)return e;var r=Object.create(null);return e&&Object.keys(e).forEach(function(t){if("default"!==t){var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,n.get?n:{enumerable:!0,get:function(){return e[t]}})}}),r.default=e,r}var l=/*#__PURE__*/u(e),c=/*#__PURE__*/u(r),f=/*#__PURE__*/u(t);function s(){return s=Object.assign?Object.assign.bind():function(e){for(var r=1;r<arguments.length;r++){var t=arguments[r];for(var n in t)({}).hasOwnProperty.call(t,n)&&(e[n]=t[n])}return e},s.apply(null,arguments)}function d(e,r){try{var t=e()}catch(e){return r(e)}return t&&t.then?t.then(void 0,r):t}module.exports=function(e){var r=e.publicFolder,t=e.mask,u=e.getFileById,h=e.getFileByHash,v=e.createFile,y=e.logger,m=void 0===y?void 0:y,p=e.uid,P=void 0===p?i.v4:p,F=e.allowDuplicates,g=void 0!==F&&F,j=e.cleanupOnFailedUpload,w=void 0!==j&&j,b=function(e){return(t.endsWith("/")?t:t+"/")+e},S=function(e){try{return Promise.resolve(d(function(){return Promise.resolve(u(e)).then(function(e){var t=e.name;return{filePath:c.default.join(r,e.hash+e.extension),fileName:t}})},function(e){m&&m(e,"error")}))}catch(e){return Promise.reject(e)}};return{resolveFilePath:S,idToUrl:b,urlToId:function(e){return t.endsWith("/")?e.replace(t,""):e.replace(t+"/","")},saveFile:function(e,t){try{return Promise.resolve(d(function(){function i(){var n=c.default.join(r,p+F);return Promise.resolve(h(p)).then(function(r){function i(){return function(){if(!r||u!==r.path||g){var e=(null==r?void 0:r.size)||l.default.statSync(n).size,i=(null==r?void 0:r.type)||o.dotExtensionToCategotry(F),a=Date.now(),c=s({id:f,name:y,extension:F,hash:p,size:e,type:i,last_modified:a,path:u,publishedAt:a},null==t?void 0:t.additionalFields);return d(function(){return Promise.resolve(v(c)).then(function(e){return e.url=b(e.id),e})},function(){w&&!r&&(l.default.unlinkSync(n),m&&m("SFS: Cleaning up orphaned file after database error","info"))})}return m&&m("File already exists at this location","error"),r.url=b(r.id),r}()}var a=function(){if(!r)return m&&m("SFS: Saving file","success"),Promise.resolve(e.mv(n)).then(function(){});m&&m("SFS: File already uploaded","info")}();return a&&a.then?a.then(i):i()})}var u=(null==t?void 0:t.filePath)||"/",f=(null==t?void 0:t.id)||P(),y=decodeURI(e.name),p=n.createHash("sha256").update(e.data).digest("hex"),F="",j=c.default.extname(y),S=function(){if(!j)return Promise.resolve(function(e){try{return Promise.resolve(Promise.resolve().then(function(){/*#__PURE__*/return a(require("file-type"))})).then(function(r){return Promise.resolve((0,r.fileTypeFromBuffer)(e))})}catch(e){return Promise.reject(e)}}(e.data)).then(function(e){e&&(F="."+e.ext)});F=j}();return S&&S.then?S.then(i):i()},function(e){throw m&&m("Upload error","error"),new Error(e)}))}catch(e){return Promise.reject(e)}},deleteFileByHash:function(e){try{try{var t=l.default.readdirSync(r).find(function(r){return r.split(".")[0]===e});if(!t)throw new Error("File with hash "+e+" not found in "+r);var n=c.default.join(r,t);l.default.unlinkSync(n)}catch(e){throw new Error(e)}return Promise.resolve()}catch(e){return Promise.reject(e)}},deleteFileById:function(e){try{return Promise.resolve(d(function(){return Promise.resolve(S(e)).then(function(e){l.default.unlinkSync(e.filePath)})},function(e){throw new Error(e)}))}catch(e){return Promise.reject(e)}},getDiskUsage:function(e,t){try{return Promise.resolve(f.default(r))}catch(e){return Promise.reject(e)}}}};
//# sourceMappingURL=index.cjs.map