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