UNPKG

@bonhomie/cloudinary-super-uploader

Version:

A powerful React + Node Cloudinary toolkit with drag & drop, browser compression, EXIF checks, duplicate detection, signed uploads, and more.

2 lines (1 loc) 3.78 kB
var N=Object.create;var x=Object.defineProperty;var P=Object.getOwnPropertyDescriptor;var Q=Object.getOwnPropertyNames;var T=Object.getPrototypeOf,W=Object.prototype.hasOwnProperty;var $=(t,e)=>{for(var r in e)x(t,r,{get:e[r],enumerable:!0})},S=(t,e,r,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of Q(e))!W.call(t,a)&&a!==r&&x(t,a,{get:()=>e[a],enumerable:!(s=P(e,a))||s.enumerable});return t};var n=(t,e,r)=>(r=t!=null?N(T(t)):{},S(e||!t||!t.__esModule?x(r,"default",{value:t,enumerable:!0}):r,t)),q=t=>S(x({},"__esModule",{value:!0}),t);var R={};$(R,{compressImageNode:()=>I,generateSignature:()=>l,getExif:()=>g,hashPHash:()=>z,hashSHA256:()=>M,uploadImage:()=>d,uploadImages:()=>D,validateQuality:()=>O});module.exports=q(R);var H=n(require("cloudinary"),1);var _=n(require("crypto"),1);function l(t,e){try{let r=Object.keys(t).sort().map(a=>`${a}=${t[a]}`).join("&");return{success:!0,signature:_.default.createHash("sha256").update(r+e).digest("hex")}}catch(r){return{success:!1,error:r.message}}}async function d(t,e={}){let{cloud_name:r,api_key:s,api_secret:a,folder:m="uploads",public_id:c,useSigned:i=!1,transformation:o={},tags:h=[],resource_type:w="image"}=e;try{H.default.v2.config({cloud_name:r,api_key:s,api_secret:a});let f={folder:m,public_id:c,tags:h,resource_type:w,transformation:o};if(i){let p=Math.floor(Date.now()/1e3),b={timestamp:p,folder:m,public_id:c,...o},y=l(b,a);if(!y.success)throw new Error(y.error);f={...f,timestamp:p,signature:y.signature,api_key:s}}let u=await H.default.v2.uploader.upload(t,f);return{success:!0,data:{url:u.secure_url,publicId:u.public_id,width:u.width,height:u.height,size:u.bytes,format:u.format,folder:u.folder,etag:u.etag}}}catch(f){return{success:!1,error:f.message}}}async function D(t,e={}){try{return{success:!0,data:await Promise.all(t.map(async s=>{let a=await d(s,e);return{file:s,...a}}))}}catch(r){return{success:!1,error:r.message}}}var k=n(require("sharp"),1);async function I(t,e,r={}){let{quality:s=80,maxWidth:a=2e3,maxHeight:m=2e3,format:c="jpeg",removeMetadata:i=!0}=r;try{let o=(0,k.default)(t).rotate();return o=o.resize({width:a,height:m,fit:"inside",withoutEnlargement:!0}),i&&(o=o.withMetadata({exif:!1})),c==="jpeg"&&(o=o.jpeg({quality:s})),c==="png"&&(o=o.png({quality:s})),c==="webp"&&(o=o.webp({quality:s})),await o.toFile(e),{success:!0,output:e}}catch(o){return{success:!1,error:o.message}}}var v=n(require("fs"),1),j=n(require("exif-parser"),1);function g(t){try{let e=v.default.readFileSync(t);return{success:!0,data:j.default.create(e).parse().tags}}catch(e){return{success:!1,error:e.message}}}var E=n(require("fs"),1),A=n(require("crypto"),1),F=require("image-hash");function M(t){try{let e=E.default.readFileSync(t);return{success:!0,hash:A.default.createHash("sha256").update(e).digest("hex")}}catch(e){return{success:!1,error:e.message}}}async function z(t){try{return new Promise((e,r)=>{(0,F.imageHash)(t,16,!0,(s,a)=>{s?r({success:!1,error:s.message}):e({success:!0,hash:a})})})}catch(e){return{success:!1,error:e.message}}}var B=n(require("sharp"),1);async function O(t,e={}){let{minWidth:r=600,minHeight:s=600,maxAgeDays:a=365,minBrightness:m=20,minSharpness:c=15}=e;try{let i=await(0,B.default)(t).metadata(),o=i.width>=r&&i.height>=s,h=(i==null?void 0:i.brightness)||null,w=h?h>=m:!0,f=i!=null&&i.sharpness?i.sharpness>=c:!0,u=g(t),p=!0;if(u.success&&u.data.DateTimeOriginal){let b=new Date(u.data.DateTimeOriginal*1e3);p=(Date.now()-b.getTime())/(1e3*3600*24)<=a}return{success:!0,data:{resolutionOk:o,brightnessOk:w,sharpnessOk:f,ageOk:p,width:i.width,height:i.height,exif:u.data||{}}}}catch(i){return{success:!1,error:i.message}}}0&&(module.exports={compressImageNode,generateSignature,getExif,hashPHash,hashSHA256,uploadImage,uploadImages,validateQuality});