{"_id":"cloudku-uploader","_rev":"27-4d1e7242e2c6b8c283497261bcf59dd6","name":"cloudku-uploader","dist-tags":{"latest":"3.0.0"},"versions":{"1.0.0":{"name":"cloudku-uploader","version":"1.0.0","keywords":["uploader","cloudkuimages","file-upload"],"author":{"name":"Alfi Dev"},"license":"MIT","_id":"cloudku-uploader@1.0.0","maintainers":[{"name":"alfidev","email":"cloudku145@gmail.com"}],"dist":{"shasum":"77c45a2bfa4578d42a1bf73981f9ffb165d0ad1d","tarball":"https://registry.npmjs.org/cloudku-uploader/-/cloudku-uploader-1.0.0.tgz","fileCount":7,"integrity":"sha512-OuHI8bsm0ytDkFM+1aVXMDlLVLs6bt7CJOk5mpl5GGvtxKyLQmd21vO9Ps2JmU0vDPchF6U4OASf6PrZT95rKw==","signatures":[{"sig":"MEYCIQDL5COJhg84AdSus1KX36z87ClBoAqSJ+YZPPv+sm6aowIhAOCA8vRI8QatZ9z8jib1FvNW9nHSQCi0RQKHMOy8WEZN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2590},"main":"index.cjs","type":"module","module":"index.mjs","_npmUser":{"name":"alfidev","email":"cloudku145@gmail.com"},"deprecated":"New Domain Has Ben Update, Pliss Update It with this command npm i cloudku-uploader@latest","_npmVersion":"10.9.2","description":"Uploader file ke CloudkuImages.com","directories":{},"_nodeVersion":"23.7.0","dependencies":{"axios":"^1.4.0","form-data":"^4.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cloudku-uploader_1.0.0_1741912983114_0.2398380052069522","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"cloudku-uploader","version":"1.0.1","keywords":["upload","cloud","cloudkuimages","api"],"author":{"name":"AlfiDev Dev"},"license":"MIT","_id":"cloudku-uploader@1.0.1","maintainers":[{"name":"alfidev","email":"cloudku145@gmail.com"}],"dist":{"shasum":"40b02284fb142aec88b508026a755096ab9b17a7","tarball":"https://registry.npmjs.org/cloudku-uploader/-/cloudku-uploader-1.0.1.tgz","fileCount":3,"integrity":"sha512-098syd/eftHoj54LDAcX38hrZRp0/B8iqc/jfS+3ntRlstj/skpk0qlO+8H55pXnG0ulPk4nf6qiQakSvTguyg==","signatures":[{"sig":"MEUCIQC3lt8Lu5Q9lodKUojMoVcQLZUwJhBFCXDvDPiwSaupLAIgdDQO1tXw6e4W2hnw+OgwfUwsC7fGrnU4KHh1GA8GbR0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1395},"main":"src/index.js","types":"src/index.d.ts","module":"src/index.js","scripts":{"test":"node test.js"},"_npmUser":{"name":"alfidev","email":"cloudku145@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","_npmVersion":"10.9.2","description":"Package untuk upload file ke CloudkuImages.com","directories":{},"_nodeVersion":"23.7.0","dependencies":{"form-data":"^4.0.0","node-fetch":"^3.3.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cloudku-uploader_1.0.1_1741919292665_0.2601642478695547","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"cloudku-uploader","version":"1.0.2","_id":"cloudku-uploader@1.0.2","maintainers":[{"name":"alfidev","email":"cloudku145@gmail.com"}],"dist":{"shasum":"d7ea3796af4e97d659a003070737e6e5c6dea1af","tarball":"https://registry.npmjs.org/cloudku-uploader/-/cloudku-uploader-1.0.2.tgz","fileCount":3,"integrity":"sha512-5ePpN7/Y2Kh0Kk91pUf33EMDyjFoUCfEmcX80uT4a8hvr1zRoDkImiOzY3sgJwnsHfvufLs4CjCsEiEJD6sEFw==","signatures":[{"sig":"MEUCIQD8vWHxR2Ge05QcHaz2yUg4Uy8mZBb0K1V4JTecFoyEcgIgfeu/WaZsvSvtOemV0ugzeBMBJ6+7mOmH0TJMjQC4QZo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1211},"main":"index.cjs","type":"module","module":"index.mjs","exports":{"import":"index.mjs","require":"index.cjs"},"_npmUser":{"name":"alfidev","email":"cloudku145@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","_npmVersion":"10.9.2","description":"Package untuk upload file ke CloudkuImages","directories":{},"_nodeVersion":"23.7.0","dependencies":{"form-data":"^4.0.0","node-fetch":"^3.3.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cloudku-uploader_1.0.2_1741920267847_0.744245191972841","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"cloudku-uploader","version":"1.0.3","_id":"cloudku-uploader@1.0.3","maintainers":[{"name":"alfidev","email":"cloudku145@gmail.com"}],"dist":{"shasum":"507f655f1dc6b28277e08984301af616441275ac","tarball":"https://registry.npmjs.org/cloudku-uploader/-/cloudku-uploader-1.0.3.tgz","fileCount":3,"integrity":"sha512-Jr9kfBaUwuRMPeNkYW9Qgxd70p6p/uemdl+n2mJyvA9CsfbqB34pPwD17blq1UhOIK4Su30xD3pfj+aYzPJ4yA==","signatures":[{"sig":"MEQCIDGbXdM4aAF8NN8RVQnzCyEXkHheV7kgKQFE0JiH5QvuAiABsiyja5iYpiqezsjy9zgGMd6QHeOd4oGs+WyH7e75uA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1215},"main":"index.cjs","type":"module","module":"index.mjs","exports":{"import":"./index.mjs","require":"./index.cjs"},"_npmUser":{"name":"alfidev","email":"cloudku145@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","_npmVersion":"10.9.2","description":"Package untuk upload file ke CloudkuImages","directories":{},"_nodeVersion":"23.7.0","dependencies":{"form-data":"^4.0.0","node-fetch":"^3.3.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cloudku-uploader_1.0.3_1741923298105_0.6103468788076238","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"cloudku-uploader","version":"1.0.4","_id":"cloudku-uploader@1.0.4","maintainers":[{"name":"alfidev","email":"cloudku145@gmail.com"}],"dist":{"shasum":"724ae2e99c57c97b242d1294fb6f0a0736560443","tarball":"https://registry.npmjs.org/cloudku-uploader/-/cloudku-uploader-1.0.4.tgz","fileCount":3,"integrity":"sha512-5wS9cctDWZx2g2m9ODg97yNG70NShoBmML4zMx/wRUMmMRSHueGfmieNkM232GGZmOGOWyCdZDHlrFcyFjUQFg==","signatures":[{"sig":"MEUCIGr46TkdUwE7Nmi5RcZq1V0eq9qNiCsmBKVixIsIGJMNAiEAgmwBKwTIp7n53tAKkMQEH/5l8eYaePlGOxmWdgl/Ogw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1232},"main":"index.cjs","type":"module","module":"index.mjs","exports":{"import":"./index.mjs","require":"./index.cjs"},"_npmUser":{"name":"alfidev","email":"cloudku145@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","_npmVersion":"10.9.2","description":"Package untuk upload file ke CloudkuImages","directories":{},"_nodeVersion":"23.7.0","dependencies":{"form-data":"^4.0.0","node-fetch":"^3.3.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cloudku-uploader_1.0.4_1741924149781_0.6354613863668164","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"cloudku-uploader","version":"1.0.5","keywords":["cloudku","uploader","file-upload","cloud-storage","cloudkuimages"],"author":{"name":"Alfi Dev"},"license":"MIT","_id":"cloudku-uploader@1.0.5","maintainers":[{"name":"alfidev","email":"cloudku145@gmail.com"}],"dist":{"shasum":"75d061601248b9bd523f3e74e6875d670ab2df38","tarball":"https://registry.npmjs.org/cloudku-uploader/-/cloudku-uploader-1.0.5.tgz","fileCount":4,"integrity":"sha512-Rc8k0eG+Xqu4W05ltJWY4HsgxpQIynV+jVtsYZa8NHi9TsmeBjQYvM8T4cQT/7yfA1GXr47hsEPROZJLZd74BA==","signatures":[{"sig":"MEYCIQDE38VEUlFzMEiqRA9Dv3jH9ZyiAdQbwiBRi8ik6UWmXgIhAIXTgq9VPEcaSR9I0ArJCgXmP4wUouw/G6UAiqHIK0as","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3467},"main":"index.cjs","type":"module","module":"index.mjs","engines":{"node":">=16.0.0"},"exports":{"import":"./index.mjs","require":"./index.cjs"},"_npmUser":{"name":"alfidev","email":"cloudku145@gmail.com"},"deprecated":"New Domain Has Ben Update, Pliss Update It with this command npm i cloudku-uploader@latest","_npmVersion":"10.9.2","description":"Uploader All Type File Dengan CloudkuImages dan proses yang lebih cepat","directories":{},"_nodeVersion":"23.7.0","dependencies":{"form-data":"^4.0.0","node-fetch":"^3.3.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cloudku-uploader_1.0.5_1741946201036_0.44901965483972206","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"cloudku-uploader","version":"2.0.0","keywords":["cloudku","uploader","file-upload","cloud-storage","cloudkuimages"],"author":{"name":"Alfi Dev"},"license":"MIT","_id":"cloudku-uploader@2.0.0","maintainers":[{"name":"flowfalcon","email":"contact@flowfalcon.xyz"},{"name":"alfidev","email":"cloudku145@gmail.com"}],"dist":{"shasum":"df689360e5d5f74285fc72c0fc9eef5871af5e33","tarball":"https://registry.npmjs.org/cloudku-uploader/-/cloudku-uploader-2.0.0.tgz","fileCount":4,"integrity":"sha512-uBFY/xXiiF+vhV/N8rjzd8ZPYmBWwAjkX3SwssFZdSEwZbaV9sP0akbT/3h6X/PBSsNW2EfooaMO3vh2HY8HgA==","signatures":[{"sig":"MEUCICeG3k0Zyo/JV2jv5o7Y21TQefPf5AT2C2GuDwEbh/lcAiEAnQmt0jgYRXxaVmdJ0le+wRCcnygcs5dtECPro5MWAuY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3700},"main":"index.cjs","type":"module","module":"index.mjs","engines":{"node":">=16.0.0"},"exports":{"import":"./index.mjs","require":"./index.cjs"},"_npmUser":{"name":"alfidev","email":"cloudku145@gmail.com"},"deprecated":"New Domain Has Ben Update, Pliss Update It with this command npm i cloudku-uploader@latest","_npmVersion":"10.9.2","description":"Uploader All Type File Dengan CloudkuImages dan proses yang lebih cepat","directories":{},"_nodeVersion":"23.7.0","dependencies":{"form-data":"^4.0.0","node-fetch":"^3.3.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cloudku-uploader_2.0.0_1743004094325_0.6616148755904039","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"cloudku-uploader","version":"2.1.0","keywords":["cloudku","cloudkuimages","file-uploader","file-upload","cloud-storage","media-uploader","nodejs-uploader","upload-api","auto-convert","upload-images","upload-videos","upload-audios"],"author":{"name":"Alfi Dev","email":"support@cloudkuimages.com"},"license":"MIT","_id":"cloudku-uploader@2.1.0","maintainers":[{"name":"flowfalcon","email":"contact@flowfalcon.xyz"},{"name":"alfidev","email":"support@cloudkuimages.com"}],"homepage":"https://cloudkuimages.com","bugs":{"url":"https://github.com/AlfiCloud/cloudku-uploader/issues"},"dist":{"shasum":"67492fac7cc9992c21b4f708f392a8303159a2c8","tarball":"https://registry.npmjs.org/cloudku-uploader/-/cloudku-uploader-2.1.0.tgz","fileCount":7,"integrity":"sha512-3v2gHXyom0/B2ExQRMsMxiYeEWnkF08ekXiuOfZ0pioCT3ePc1MEsoMvK9yVu4HvLwI8Iaes2STFdhp3hRiOVQ==","signatures":[{"sig":"MEQCICXWSTd+eSBvoltAlwOlJkKqmqziDLPmtUI9sk+03cooAiA/0x/N/7eJprUzK/7LGbcWMLIX7epOWEEAUbR2uv/NNg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7476},"main":"index.cjs","type":"module","module":"index.mjs","engines":{"node":">=16.0.0"},"exports":{"import":"./index.mjs","require":"./index.cjs"},"_npmUser":{"name":"alfidev","email":"support@cloudkuimages.com"},"deprecated":"New Domain Has Ben Update, Pliss Update It with this command npm i cloudku-uploader@latest","repository":{"url":"git+https://github.com/AlfiCloud/cloudku-uploader.git","type":"git"},"_npmVersion":"11.2.0","description":"A powerful and easy-to-use uploader for all file types using CloudKuImages API. Supports auto conversion, fast upload, and modern Node.js support.","directories":{},"_nodeVersion":"23.7.0","dependencies":{"form-data":"^4.0.0","node-fetch":"^3.3.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cloudku-uploader_2.1.0_1743881252991_0.16198932197728255","host":"s3://npm-registry-packages-npm-production"}},"2.1.5":{"name":"cloudku-uploader","version":"2.1.5","keywords":["cloudku","cloudkuimages","file-uploader","file-upload","cloud-storage","media-uploader","nodejs-uploader","upload-api","auto-convert","upload-images","upload-videos","upload-audios"],"author":{"name":"Alfi Dev","email":"support@cloudkuimages.com"},"license":"MIT","_id":"cloudku-uploader@2.1.5","maintainers":[{"name":"flowfalcon","email":"contact@flowfalcon.xyz"},{"name":"alfidev","email":"support@cloudkuimages.com"}],"homepage":"https://cloudkuimages.guru","bugs":{"url":"https://github.com/AlfiCloud/cloudku-uploader/issues"},"dist":{"shasum":"086f68f3279faff246f5b985c8e9aad1cfc28edc","tarball":"https://registry.npmjs.org/cloudku-uploader/-/cloudku-uploader-2.1.5.tgz","fileCount":7,"integrity":"sha512-1U7TJmMqKawtzrRcgu2F+W+i72KO8aJeqC+bWGh2XuDiBgtQYbHv4D10TPbsZTKw9nWEgrusJGLoblYfgZ7AuA==","signatures":[{"sig":"MEYCIQCo/TQZhFsbOonoH6KSN4b7vFx67UJdfX8I69pZsyNLCQIhALR1xmnDM0S0rL4hBMMlNFVjD5j3cfCKoQow1bPFg0a6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7454},"main":"index.cjs","type":"module","module":"index.mjs","engines":{"node":">=16.0.0"},"exports":{"import":"./index.mjs","require":"./index.cjs"},"_npmUser":{"name":"alfidev","email":"support@cloudkuimages.com"},"repository":{"url":"git+https://github.com/AlfiCloud/cloudku-uploader.git","type":"git"},"_npmVersion":"11.2.0","description":"A powerful and easy-to-use uploader for all file types using CloudKuImages API. Supports auto conversion, fast upload, and modern Node.js support.","directories":{},"_nodeVersion":"23.7.0","dependencies":{"form-data":"^4.0.0","node-fetch":"^3.3.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cloudku-uploader_2.1.5_1744771262290_0.5415367598997571","host":"s3://npm-registry-packages-npm-production"}},"2.2.0":{"name":"cloudku-uploader","version":"2.2.0","keywords":["cloudku","cloudkuimages","file-uploader","file-upload","cloud-storage","media-uploader","nodejs-uploader","upload-api","auto-convert","upload-images","upload-videos","upload-audios"],"author":{"name":"Alfi Dev","email":"support@cloudkuimages.com"},"license":"MIT","_id":"cloudku-uploader@2.2.0","maintainers":[{"name":"flowfalcon","email":"contact@flowfalcon.xyz"},{"name":"alfidev","email":"support@cloudkuimages.com"}],"homepage":"https://cloudkuimages.guru","bugs":{"url":"https://github.com/AlfiCloud/cloudku-uploader/issues"},"dist":{"shasum":"9e03c8c700e2d801cf229b799ad1ad9669c2bb58","tarball":"https://registry.npmjs.org/cloudku-uploader/-/cloudku-uploader-2.2.0.tgz","fileCount":7,"integrity":"sha512-adgUfBP04MCsc4dk5RbHHZ5riTS0aXZtZRDTtyC8pepMlowfXipS6uZNjPRNW2Yxzcw3U7UVOn5K9ZaRXCPe1g==","signatures":[{"sig":"MEUCIQCD5C28x4XDmjRU8O38mBxd5WSd2uHj2kTmeJnuyoDIKgIgf0Yney0e2bzPmmi/zd7i3kMx9tbHfPdBtu9pDfhEGq8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7558},"main":"index.cjs","type":"module","module":"index.mjs","engines":{"node":">=16.0.0"},"exports":{"import":"./index.mjs","require":"./index.cjs"},"_npmUser":{"name":"alfidev","email":"support@cloudkuimages.com"},"repository":{"url":"git+https://github.com/AlfiCloud/cloudku-uploader.git","type":"git"},"_npmVersion":"11.2.0","description":"A powerful and easy-to-use uploader for all file types using CloudKuImages API. Supports auto conversion, fast upload, and modern Node.js support.","directories":{},"_nodeVersion":"23.7.0","dependencies":{"axios":"^1.6.8","form-data":"^4.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cloudku-uploader_2.2.0_1744784809695_0.4764395140842528","host":"s3://npm-registry-packages-npm-production"}},"2.2.5":{"name":"cloudku-uploader","version":"2.2.5","keywords":["cloudku","cloudkuimages","file-uploader","file-upload","cloud-storage","media-uploader","nodejs-uploader","upload-api","auto-convert","upload-images","upload-videos","upload-audios"],"author":{"name":"Alfi Dev","email":"support@cloudkuimages.com"},"license":"MIT","_id":"cloudku-uploader@2.2.5","maintainers":[{"name":"flowfalcon","email":"contact@flowfalcon.xyz"},{"name":"alfidev","email":"support@cloudkuimages.com"}],"homepage":"https://cloudkuimages.guru","bugs":{"url":"https://github.com/AlfiCloud/cloudku-uploader/issues"},"dist":{"shasum":"6836fa73b30f46f73bef92dfb4a5badbaf8da96e","tarball":"https://registry.npmjs.org/cloudku-uploader/-/cloudku-uploader-2.2.5.tgz","fileCount":7,"integrity":"sha512-jA9cA0PTzw7rHGmjCj+cPYaOcAgehsIUBGY7zdrM9QAHHyHrOB6VdTsKWfto1W1q3oNZylW9ZOEOkXHapwJThA==","signatures":[{"sig":"MEUCIQCOU6knP+DehpKec5AK1R1vD6CTbTNGpjpOqL9X2KOqHAIgN3dMszV04cspiCxXf6iQYhvZgM2AyKP+RTRk2zWfjDI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7566},"main":"index.cjs","type":"module","module":"index.mjs","engines":{"node":">=19.0.0"},"exports":{"import":"./index.mjs","require":"./index.cjs"},"_npmUser":{"name":"alfidev","email":"support@cloudkuimages.com"},"repository":{"url":"git+https://github.com/AlfiCloud/cloudku-uploader.git","type":"git"},"_npmVersion":"11.2.0","description":"A powerful and easy-to-use uploader for all file types using CloudKuImages API. Supports auto conversion, fast upload, and modern Node.js support.","directories":{},"_nodeVersion":"23.7.0","dependencies":{"axios":"^1.6.8","form-data":"^4.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cloudku-uploader_2.2.5_1745163565762_0.7184353850968126","host":"s3://npm-registry-packages-npm-production"}},"2.2.7":{"name":"cloudku-uploader","version":"2.2.7","keywords":["cloudku","cloudkuimages","file-uploader","file-upload","cloud-storage","media-uploader","nodejs-uploader","upload-api","auto-convert","upload-images","upload-videos","upload-audios"],"author":{"name":"Alfi Dev","email":"support@cloudkuimages.com"},"license":"MIT","_id":"cloudku-uploader@2.2.7","maintainers":[{"name":"flowfalcon","email":"contact@flowfalcon.xyz"},{"name":"alfidev","email":"support@cloudkuimages.com"},{"name":"cloudkuimages","email":"alfi78447@gmail.com"}],"homepage":"https://cloudkuimages.guru","bugs":{"url":"https://github.com/AlfiCloud/cloudku-uploader/issues"},"dist":{"shasum":"6c059a5c34fdb4efb5aa409f844b1bb155c98a89","tarball":"https://registry.npmjs.org/cloudku-uploader/-/cloudku-uploader-2.2.7.tgz","fileCount":7,"integrity":"sha512-ZU96lBKzNfSJa8INLY/89t+War6pruk/2LATNrLbKp3hEBtwKsmYdxVWt/WaRxRgUAKzo/4n7b6gJIzMrgx6Gw==","signatures":[{"sig":"MEUCIQDE7SIABe5BQrrvtOoueZXjo4lDzGHYUa4E0/SgRNGGXgIgVMwcfbsZUNZqFR8a5MKJWksjh19PqQzrRueYYxBD0sE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12160},"main":"index.cjs","type":"module","module":"index.mjs","engines":{"node":">=19.0.0"},"exports":{"import":"./index.mjs","require":"./index.cjs"},"_npmUser":{"name":"alfidev","email":"support@cloudkuimages.com"},"repository":{"url":"git+https://github.com/AlfiCloud/cloudku-uploader.git","type":"git"},"_npmVersion":"11.2.0","description":"A powerful and easy-to-use uploader for all file types using CloudKuImages API. Supports auto conversion, fast upload, and modern Node.js support.","directories":{},"_nodeVersion":"23.7.0","dependencies":{"axios":"^1.6.8","form-data":"^4.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cloudku-uploader_2.2.7_1749368538129_0.2857280617881015","host":"s3://npm-registry-packages-npm-production"}},"2.5.0":{"name":"cloudku-uploader","version":"2.5.0","keywords":["cloudku","cloudkuimages","file-uploader","file-upload","cloud-storage","media-uploader","nodejs-uploader","upload-api","auto-convert","upload-images","upload-videos","upload-audios","zero-dependencies","lightweight"],"author":{"name":"Alfi Dev","email":"support@cloudkuimages.com"},"license":"MIT","_id":"cloudku-uploader@2.5.0","maintainers":[{"name":"flowfalcon","email":"contact@flowfalcon.xyz"},{"name":"alfidev","email":"support@cloudkuimages.com"},{"name":"cloudkuimages","email":"alfi78447@gmail.com"}],"homepage":"https://cloudkuimages.guru","bugs":{"url":"https://github.com/cloudkuimages/cloudku-uploader/issues"},"dist":{"shasum":"4c279d1db1de4d48e7260be397c39d1b162ab06c","tarball":"https://registry.npmjs.org/cloudku-uploader/-/cloudku-uploader-2.5.0.tgz","fileCount":5,"integrity":"sha512-aYDNocbv7KZq0Q54SSKLMYIKy8opb7fReJ7dL8ymnQHViHUUuC4sILyXWKR4tOQWQaYMPK7K5tuQK1BNK6Z0hw==","signatures":[{"sig":"MEQCIHtBVCT/SRggrnedpZU3uBUMlL31dTY+xLmYF2/iqB9nAiBeJ/XH0hOhPY2j5/cf41GmnHqOBvr2GkAiv5fEuhUJJw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32633},"main":"index.cjs","type":"module","module":"index.mjs","engines":{"node":">=20.0.0"},"exports":{"import":"./index.mjs","require":"./index.cjs"},"scripts":{"test":"node test.mjs && node test.cjs","test:cjs":"node test.cjs","test:esm":"node test.mjs"},"_npmUser":{"name":"alfidev","email":"support@cloudkuimages.com"},"repository":{"url":"git+https://github.com/cloudkuimages/cloudku-uploader.git","type":"git"},"_npmVersion":"11.2.0","description":"A powerful and easy-to-use uploader for all file types using CloudKuImages API. Supports auto conversion, fast upload, and modern Node.js support with zero dependencies.","directories":{},"_nodeVersion":"24.1.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cloudku-uploader_2.5.0_1749643153272_0.6845873612789806","host":"s3://npm-registry-packages-npm-production"}},"2.6.0":{"name":"cloudku-uploader","version":"2.6.0","keywords":["file-upload","cloudku","cloudkuimages","uploader","cloud-storage","media-upload","image-upload","video-upload","audio-upload","document-upload","chunked-upload","auto-convert","zero-dependencies","lightweight","modern","esm","cjs","typescript","nodejs","api-client","blazing-fast","progress-tracking","file-compression","multi-format","cross-platform"],"author":{"url":"https://cloudkuimages.guru","name":"Alfi Dev","email":"support@cloudkuimages.com"},"license":"MIT","_id":"cloudku-uploader@2.6.0","maintainers":[{"name":"flowfalcon","email":"contact@flowfalcon.xyz"},{"name":"alfidev","email":"cloudkuimages@gmail.com"},{"name":"cloudkuimages","email":"alfi78447@gmail.com"}],"homepage":"https://cloudkuimages.guru","bugs":{"url":"https://github.com/cloudkuimages/cloudku-uploader/issues","email":"support@cloudkuimages.com"},"os":["darwin","linux","win32"],"dist":{"shasum":"c09c13e4dfd8ab3b9f117c8dcdb608d5592c004e","tarball":"https://registry.npmjs.org/cloudku-uploader/-/cloudku-uploader-2.6.0.tgz","fileCount":5,"integrity":"sha512-LmKapM4u6r9TL1X3MmFjdKQI1+xS5fH6X17kBY8wGKt5UMivfzGuJiOGjEnfe0jB/ybQsNrPNb7AhZBx7ojWtQ==","signatures":[{"sig":"MEUCICOGEFewT645Qpce/Asa0lMwYqzGZCdGOMZgk+Rr7FN3AiEAy0hBnN+KPbsa/gYQBsc8CQqqpIbnAx2AgWngVbBIjqk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27542},"main":"index.cjs","type":"module","module":"index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./index.d.ts","import":"./index.mjs","require":"./index.cjs"}},"funding":{"url":"https://github.com/sponsors/cloudkuimages","type":"individual"},"scripts":{"lint":"eslint *.{js,mjs,cjs}","test":"npm run test:esm && npm run test:cjs","format":"prettier --write *.{js,mjs,cjs,json,md}","test:cjs":"node test.cjs","test:esm":"node test.mjs","prepublishOnly":"npm test"},"_npmUser":{"name":"alfidev","actor":{"name":"alfidev","type":"user","email":"cloudkuimages@gmail.com"},"email":"cloudkuimages@gmail.com"},"repository":{"url":"git+https://github.com/cloudkuimages/cloudku-uploader.git","type":"git"},"_npmVersion":"11.2.0","description":"Modern zero-dependency file uploader with auto-conversion, chunked uploads, and TypeScript support. Upload images, videos, audio, and documents to CloudKu with blazing-fast performance.","directories":{},"_nodeVersion":"24.1.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cloudku-uploader_2.6.0_1750138773358_0.1378051097465811","host":"s3://npm-registry-packages-npm-production"}},"2.7.0":{"name":"cloudku-uploader","version":"2.7.0","keywords":["cloudku","cloudkuimages","uploader","file-upload","cloud-storage","image-upload","video-upload","audio-upload","document-upload","chunked-upload","auto-convert","typescript","nodejs","esm","cjs","modern","zero-dependencies","fast-upload","progress-tracking","multi-format","cross-platform"],"author":{"url":"https://cloudkuimages.guru","name":"Alfi Dev","email":"support@cloudkuimages.com"},"license":"MIT","_id":"cloudku-uploader@2.7.0","maintainers":[{"name":"flowfalcon","email":"contact@flowfalcon.xyz"},{"name":"alfidev","email":"cloudkuimages@gmail.com"},{"name":"cloudkuimages","email":"alfi78447@gmail.com"}],"homepage":"https://cloudkuimages.guru","bugs":{"url":"https://github.com/cloudkuimages/cloudku-uploader/issues","email":"support@cloudkuimages.com"},"dist":{"shasum":"98d5225eb0c6cf9c243fb9044d3aa3d4006d01f5","tarball":"https://registry.npmjs.org/cloudku-uploader/-/cloudku-uploader-2.7.0.tgz","fileCount":8,"integrity":"sha512-GLqFgNPldVW4KLOQBytHz3BKYUix49aXTh2OJkwoXjqN3qAdUa7JZUOns8v507YAxgLq6JtnhfF25tc4/0WF4Q==","signatures":[{"sig":"MEYCIQCHOnvOk8oKCRtLtm897QXOzPPTB2hbIJcGa55zZ4XopAIhAJ7ojUYYYJRp/IBjTnVoKUdZXXdh2DHsgsB9RnIKlCkU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":18738635},"main":"index.cjs","type":"module","types":"index.d.ts","module":"index.mjs","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./index.d.ts","import":"./index.mjs","require":"./index.cjs"}},"funding":{"url":"https://github.com/sponsors/cloudkuimages","type":"individual"},"scripts":{},"_npmUser":{"name":"alfidev","actor":{"name":"alfidev","type":"user","email":"cloudkuimages@gmail.com"},"email":"cloudkuimages@gmail.com"},"repository":{"url":"git+https://github.com/cloudkuimages/cloudku-uploader.git","type":"git"},"_npmVersion":"11.3.0","description":"Blazing-fast, zero-dependency uploader for CloudKu. Supports auto-conversion, chunked uploads, and TypeScript. Easily upload images, videos, audio, and documents via Node.js.","directories":{},"_nodeVersion":"24.2.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cloudku-uploader_2.7.0_1750681939265_0.7265209491393043","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"cloudku-uploader","version":"3.0.0","description":"Blazing-fast, zero-dependency uploader for CloudKu. Supports auto-conversion, chunked uploads, and TypeScript. Easily upload images, videos, audio, and documents via Node.js.","license":"MIT","author":{"name":"Alfi Dev","email":"support@cloudkuimages.com","url":"https://cloudkuimages.guru"},"homepage":"https://cloudkuimages.guru","repository":{"type":"git","url":"git+https://github.com/cloudkuimages/cloudku-uploader.git"},"bugs":{"url":"https://github.com/cloudkuimages/cloudku-uploader/issues","email":"support@cloudkuimages.com"},"funding":{"type":"individual","url":"https://github.com/sponsors/cloudkuimages"},"type":"module","main":"index.cjs","module":"index.mjs","types":"index.d.ts","exports":{".":{"import":"./index.mjs","require":"./index.cjs","types":"./index.d.ts"}},"engines":{"node":">=20.0.0"},"publishConfig":{"access":"public"},"scripts":{},"keywords":["cloudku","cloudkuimages","uploader","file-upload","cloud-storage","image-upload","video-upload","audio-upload","document-upload","chunked-upload","auto-convert","typescript","nodejs","esm","cjs","modern","zero-dependencies","fast-upload","progress-tracking","multi-format","cross-platform"],"_id":"cloudku-uploader@3.0.0","_nodeVersion":"22.21.1","_npmVersion":"10.9.4","dist":{"integrity":"sha512-v8Ge9Y0Vg7TGiWv54BFGhyepk8rjsZVwJEcGE+6R6tyakpL2ySV1wH84we2LMyD81YTm2dmgnrhvs5ozaPRaTA==","shasum":"ed0ccc6930d2169b33cabf0777d6f154013c83ef","tarball":"https://registry.npmjs.org/cloudku-uploader/-/cloudku-uploader-3.0.0.tgz","fileCount":4,"unpackedSize":20467,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDooWhmZV/tpN0XxP5DZd6AJ/rhfWGOkyKcfwPnjbTflgIhAN/q1sp1NsMBit1QLsVjT9zT6HRU9CAcJjWBn82fx4jm"}]},"_npmUser":{"name":"alfidev","email":"cloudkuimages@gmail.com"},"directories":{},"maintainers":[{"name":"flowfalcon","email":"contact@flowfalcon.xyz"},{"name":"alfidev","email":"cloudkuimages@gmail.com"},{"name":"cloudkuimages","email":"alfi78447@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/cloudku-uploader_3.0.0_1765724055737_0.8585511654963367"},"_hasShrinkwrap":false}},"time":{"created":"2025-03-14T00:43:03.022Z","modified":"2025-12-14T14:54:16.108Z","1.0.0":"2025-03-14T00:43:03.307Z","1.0.1":"2025-03-14T02:28:12.862Z","1.0.2":"2025-03-14T02:44:28.012Z","1.0.3":"2025-03-14T03:34:58.284Z","1.0.4":"2025-03-14T03:49:09.967Z","1.0.5":"2025-03-14T09:56:41.230Z","2.0.0":"2025-03-26T15:48:14.492Z","2.1.0":"2025-04-05T19:27:33.202Z","2.1.5":"2025-04-16T02:41:02.495Z","2.2.0":"2025-04-16T06:26:49.907Z","2.2.5":"2025-04-20T15:39:25.937Z","2.2.6":"2025-06-08T06:41:50.286Z","2.2.7":"2025-06-08T07:42:18.316Z","2.5.0":"2025-06-11T11:59:13.568Z","2.6.0":"2025-06-17T05:39:33.524Z","2.7.0":"2025-06-23T12:32:19.584Z","3.0.0":"2025-12-14T14:54:15.900Z"},"bugs":{"url":"https://github.com/cloudkuimages/cloudku-uploader/issues","email":"support@cloudkuimages.com"},"author":{"name":"Alfi Dev","email":"support@cloudkuimages.com","url":"https://cloudkuimages.guru"},"license":"MIT","homepage":"https://cloudkuimages.guru","keywords":["cloudku","cloudkuimages","uploader","file-upload","cloud-storage","image-upload","video-upload","audio-upload","document-upload","chunked-upload","auto-convert","typescript","nodejs","esm","cjs","modern","zero-dependencies","fast-upload","progress-tracking","multi-format","cross-platform"],"repository":{"type":"git","url":"git+https://github.com/cloudkuimages/cloudku-uploader.git"},"description":"Blazing-fast, zero-dependency uploader for CloudKu. Supports auto-conversion, chunked uploads, and TypeScript. Easily upload images, videos, audio, and documents via Node.js.","maintainers":[{"name":"flowfalcon","email":"contact@flowfalcon.xyz"},{"name":"alfidev","email":"cloudkuimages@gmail.com"},{"name":"cloudkuimages","email":"alfi78447@gmail.com"}],"readme":"# cloudku-uploader\r\n\r\n[![npm version](https://img.shields.io/npm/v/cloudku-uploader?style=for-the-badge&logo=npm&color=cb3837&logoColor=white)](https://www.npmjs.com/package/cloudku-uploader)\r\n[![downloads](https://img.shields.io/npm/dm/cloudku-uploader?style=for-the-badge&logo=npm&color=00D8FF&logoColor=white)](https://www.npmjs.com/package/cloudku-uploader)\r\n[![license](https://img.shields.io/badge/license-MIT-00E676?style=for-the-badge&logo=open-source-initiative&logoColor=white)](LICENSE)\r\n[![bundle size](https://img.shields.io/bundlephobia/minzip/cloudku-uploader?style=for-the-badge&color=FF6B35&logo=webpack&logoColor=white)](https://bundlephobia.com/package/cloudku-uploader)\r\n[![TypeScript](https://img.shields.io/badge/TypeScript-Ready-blue?style=for-the-badge&logo=typescript)](https://www.typescriptlang.org/)\r\n\r\n> Powerful file uploader client for CloudKu image hosting service with automatic chunked uploads, stream support, and load balancing across multiple endpoints.\r\n\r\n## ✨ Features\r\n\r\n- 🚀 **Smart Upload Strategy** - Automatically switches between single and chunked upload based on file size (100MB threshold)\r\n- 📦 **Chunked Upload Support** - Handles large files by splitting into 8MB chunks with UUID-based tracking\r\n- 🌊 **Stream Upload** - Direct stream-to-upload capability for memory-efficient processing\r\n- 🔄 **Built-in Load Balancing** - Random endpoint selection across `cloudkuimages.guru` and `cloudkuimages-guru.us.itpanel.app`\r\n- 📤 **Batch Upload** - Upload multiple files concurrently with `Promise.allSettled` for resilient batch operations\r\n- 🎯 **Simple & Clean API** - Minimal surface area with three core methods\r\n- 📦 **Dual Module Support** - Ships with both ESM and CommonJS builds\r\n- 🔒 **Type-safe** - Full TypeScript definitions included\r\n- ⚡ **Zero Dependencies** - Pure JavaScript implementation using native Web APIs\r\n\r\n## 📦 Installation\r\n\r\n```bash\r\nnpm install cloudku-uploader\r\n```\r\n\r\n```bash\r\nyarn add cloudku-uploader\r\n```\r\n\r\n```bash\r\npnpm add cloudku-uploader\r\n```\r\n\r\n## 🚀 Usage\r\n\r\n### ESM (ES Modules)\r\n\r\n```javascript\r\nimport cloudku from 'cloudku-uploader'\r\n\r\nconst buffer = await fetch('image.jpg').then(r => r.arrayBuffer())\r\nconst result = await cloudku.uploadFile(buffer, 'image.jpg')\r\n\r\nconsole.log(result.url)\r\n```\r\n\r\n### CommonJS\r\n\r\n```javascript\r\nconst cloudku = require('cloudku-uploader')\r\n\r\nconst fs = require('fs').promises\r\n\r\nasync function upload() {\r\n  const buffer = await fs.readFile('image.jpg')\r\n  const result = await cloudku.uploadFile(buffer, 'image.jpg')\r\n  console.log(result.url)\r\n}\r\n\r\nupload()\r\n```\r\n\r\n### Browser - File Input\r\n\r\n```javascript\r\nimport cloudku from 'cloudku-uploader'\r\n\r\ndocument.querySelector('#fileInput').addEventListener('change', async (e) => {\r\n  const file = e.target.files[0]\r\n  const buffer = await file.arrayBuffer()\r\n  \r\n  const result = await cloudku.uploadFile(buffer, file.name)\r\n  console.log('Uploaded to:', result.url)\r\n})\r\n```\r\n\r\n### Node.js - File System\r\n\r\n```javascript\r\nimport cloudku from 'cloudku-uploader'\r\nimport { readFile } from 'fs/promises'\r\n\r\nconst buffer = await readFile('./photo.jpg')\r\nconst result = await cloudku.uploadFile(buffer.buffer, 'photo.jpg')\r\n\r\nconsole.log('File URL:', result.url)\r\n```\r\n\r\n### Stream Upload (Node.js)\r\n\r\n```javascript\r\nimport cloudku from 'cloudku-uploader'\r\nimport { createReadStream } from 'fs'\r\nimport { pipeline } from 'stream/promises'\r\n\r\nconst stream = createReadStream('./large-video.mp4')\r\n\r\nconst chunks = []\r\nfor await (const chunk of stream) {\r\n  chunks.push(chunk)\r\n}\r\nconst buffer = Buffer.concat(chunks)\r\n\r\nconst result = await cloudku.uploadFile(buffer.buffer, 'video.mp4')\r\nconsole.log('Stream uploaded:', result.url)\r\n```\r\n\r\n### Stream Upload with Progress Tracking\r\n\r\n```javascript\r\nimport cloudku from 'cloudku-uploader'\r\nimport { createReadStream } from 'fs'\r\nimport { stat } from 'fs/promises'\r\n\r\nconst filePath = './movie.mp4'\r\nconst fileStats = await stat(filePath)\r\nconst totalSize = fileStats.size\r\n\r\nconst stream = createReadStream(filePath)\r\n\r\nlet uploadedSize = 0\r\nconst chunks = []\r\n\r\nfor await (const chunk of stream) {\r\n  chunks.push(chunk)\r\n  uploadedSize += chunk.length\r\n  const progress = (uploadedSize / totalSize * 100).toFixed(2)\r\n  console.log(`Progress: ${progress}%`)\r\n}\r\n\r\nconst buffer = Buffer.concat(chunks)\r\nconst result = await cloudku.uploadFile(buffer.buffer, 'movie.mp4')\r\n\r\nconsole.log('Complete:', result.url)\r\n```\r\n\r\n### Large File Upload with Custom Chunk Size\r\n\r\n```javascript\r\nimport cloudku from 'cloudku-uploader'\r\n\r\nconst buffer = await fetch('4k-video.mp4').then(r => r.arrayBuffer())\r\n\r\nconst result = await cloudku.uploadLarge(\r\n  buffer,\r\n  '4k-video.mp4',\r\n  16 * 1024 * 1024\r\n)\r\n\r\nconsole.log('Large file URL:', result.url)\r\n```\r\n\r\n### Batch Upload with Status Tracking\r\n\r\n```javascript\r\nimport cloudku from 'cloudku-uploader'\r\n\r\nconst files = [\r\n  { buffer: buffer1, name: 'photo1.jpg' },\r\n  { buffer: buffer2, name: 'photo2.png' },\r\n  { buffer: buffer3, name: 'document.pdf' }\r\n]\r\n\r\nconst results = await cloudku.uploadBatch(files)\r\n\r\nconst successful = results.filter(r => r.status === 'fulfilled')\r\nconst failed = results.filter(r => r.status === 'rejected')\r\n\r\nconsole.log(`✓ ${successful.length} uploaded successfully`)\r\nconsole.log(`✗ ${failed.length} failed`)\r\n\r\nresults.forEach((result, index) => {\r\n  if (result.status === 'fulfilled') {\r\n    console.log(`[${index + 1}] ${files[index].name}: ${result.value.url}`)\r\n  } else {\r\n    console.error(`[${index + 1}] ${files[index].name}: ${result.reason.message}`)\r\n  }\r\n})\r\n```\r\n\r\n## 📚 API Reference\r\n\r\n### `uploadFile(buffer, name?)`\r\n\r\nMain upload method with automatic strategy selection based on file size.\r\n\r\n**Parameters:**\r\n- `buffer` **{ArrayBuffer}** - File content as ArrayBuffer (required)\r\n- `name` **{string}** - Filename with extension (optional, default: `'file.bin'`)\r\n\r\n**Returns:** `Promise<UploadResult>`\r\n\r\n**Behavior:**\r\n- Files ≤ 100MB: Uses single POST request\r\n- Files > 100MB: Automatically switches to chunked upload\r\n\r\n**Example:**\r\n```javascript\r\nconst buffer = await file.arrayBuffer()\r\nconst result = await cloudku.uploadFile(buffer, 'photo.jpg')\r\n```\r\n\r\n**Response Schema:**\r\n```javascript\r\n{\r\n  status: 'success',\r\n  url: 'https://cloudkuimages.guru/files/abc123.jpg',\r\n  filename: 'photo.jpg',\r\n  size: 2048576\r\n}\r\n```\r\n\r\n---\r\n\r\n### `uploadLarge(buffer, name?, chunkSize?)`\r\n\r\nExplicit chunked upload for large files with progress control.\r\n\r\n**Parameters:**\r\n- `buffer` **{ArrayBuffer}** - File content as ArrayBuffer (required)\r\n- `name` **{string}** - Filename with extension (optional, default: `'file.bin'`)\r\n- `chunkSize` **{number}** - Chunk size in bytes (optional, default: `8388608` = 8MB)\r\n\r\n**Returns:** `Promise<UploadResult>`\r\n\r\n**Implementation Details:**\r\n1. Generates UUID v4 as `fileId` for chunk tracking\r\n2. Splits buffer into chunks of specified size\r\n3. Uploads each chunk with metadata:\r\n   - `chunk`: Current chunk index (0-based)\r\n   - `chunks`: Total number of chunks\r\n   - `filename`: Original filename\r\n   - `fileId`: UUID for tracking\r\n   - `size`: Total file size in bytes\r\n4. Sends finalization request with `chunked=1&finalize=1` query params\r\n\r\n**Example:**\r\n```javascript\r\nconst result = await cloudku.uploadLarge(\r\n  buffer,\r\n  'movie.mkv',\r\n  10 * 1024 * 1024\r\n)\r\n```\r\n\r\n**Chunk Upload Request:**\r\n```javascript\r\nFormData {\r\n  file: Blob(chunk),\r\n  chunk: 0,\r\n  chunks: 12,\r\n  filename: 'movie.mkv',\r\n  fileId: '550e8400-e29b-41d4-a716-446655440000',\r\n  size: 104857600\r\n}\r\n```\r\n\r\n**Finalization Request:**\r\n```javascript\r\nPOST /upload.php?chunked=1&finalize=1\r\nContent-Type: application/json\r\n\r\n{\r\n  \"fileId\": \"550e8400-e29b-41d4-a716-446655440000\",\r\n  \"filename\": \"movie.mkv\",\r\n  \"chunks\": 12\r\n}\r\n```\r\n\r\n---\r\n\r\n### `uploadBatch(files)`\r\n\r\nUpload multiple files concurrently with individual error handling.\r\n\r\n**Parameters:**\r\n- `files` **{Array<FileObject>}** - Array of file objects (required)\r\n\r\n**FileObject Schema:**\r\n```typescript\r\n{\r\n  buffer: ArrayBuffer,\r\n  name: string\r\n}\r\n```\r\n\r\n**Returns:** `Promise<Array<PromiseSettledResult<UploadResult>>>`\r\n\r\n**Example:**\r\n```javascript\r\nconst results = await cloudku.uploadBatch([\r\n  { buffer: buffer1, name: 'image1.jpg' },\r\n  { buffer: buffer2, name: 'image2.png' },\r\n  { buffer: buffer3, name: 'video.mp4' }\r\n])\r\n\r\nresults.forEach((result, index) => {\r\n  if (result.status === 'fulfilled') {\r\n    console.log(`Success: ${result.value.url}`)\r\n  } else {\r\n    console.error(`Failed: ${result.reason}`)\r\n  }\r\n})\r\n```\r\n\r\n## 🔧 Advanced Usage\r\n\r\n### Error Handling\r\n\r\n```javascript\r\ntry {\r\n  const result = await cloudku.uploadFile(buffer, 'image.jpg')\r\n  \r\n  if (result.status === 'error') {\r\n    throw new Error(result.message)\r\n  }\r\n  \r\n  console.log('Uploaded:', result.url)\r\n} catch (error) {\r\n  console.error('Upload failed:', error.message)\r\n}\r\n```\r\n\r\n### Retry Logic\r\n\r\n```javascript\r\nasync function uploadWithRetry(buffer, name, maxRetries = 3) {\r\n  for (let i = 0; i < maxRetries; i++) {\r\n    try {\r\n      const result = await cloudku.uploadFile(buffer, name)\r\n      return result\r\n    } catch (error) {\r\n      if (i === maxRetries - 1) throw error\r\n      await new Promise(resolve => setTimeout(resolve, 1000 * (i + 1)))\r\n    }\r\n  }\r\n}\r\n```\r\n\r\n### Custom Chunk Size Based on Connection\r\n\r\n```javascript\r\nfunction getOptimalChunkSize(connectionType) {\r\n  const sizes = {\r\n    '4g': 16 * 1024 * 1024,\r\n    'wifi': 10 * 1024 * 1024,\r\n    '3g': 4 * 1024 * 1024,\r\n    'slow-2g': 1 * 1024 * 1024\r\n  }\r\n  return sizes[connectionType] || 8 * 1024 * 1024\r\n}\r\n\r\nconst connection = navigator.connection?.effectiveType || 'wifi'\r\nconst chunkSize = getOptimalChunkSize(connection)\r\n\r\nconst result = await cloudku.uploadLarge(buffer, 'file.zip', chunkSize)\r\n```\r\n\r\n### Parallel Batch Upload with Concurrency Limit\r\n\r\n```javascript\r\nasync function uploadBatchWithLimit(files, limit = 3) {\r\n  const results = []\r\n  \r\n  for (let i = 0; i < files.length; i += limit) {\r\n    const batch = files.slice(i, i + limit)\r\n    const batchResults = await cloudku.uploadBatch(batch)\r\n    results.push(...batchResults)\r\n  }\r\n  \r\n  return results\r\n}\r\n```\r\n\r\n## ⚙️ Technical Details\r\n\r\n### Endpoint Selection\r\n\r\nThe uploader uses random selection between two endpoints:\r\n- `https://cloudkuimages.guru`\r\n- `https://cloudkuimages-guru.us.itpanel.app`\r\n\r\nThis provides basic load balancing and failover capability.\r\n\r\n### Upload Flow\r\n\r\n**Small File (<= 100MB):**\r\n```\r\nClient → pickBase() → POST /upload.php → Response\r\n```\r\n\r\n**Large File (> 100MB):**\r\n```\r\nClient → Generate UUID\r\n      → Split into chunks\r\n      → For each chunk:\r\n          → POST /upload.php (with metadata)\r\n      → POST /upload.php?chunked=1&finalize=1\r\n      → Response\r\n```\r\n\r\n### Headers\r\n\r\nAll requests include:\r\n```javascript\r\n{\r\n  'User-Agent': 'cloudku-uploader/5.0',\r\n  'Accept': 'application/json'\r\n}\r\n```\r\n\r\n### File Size Limits\r\n\r\n- **Single upload**: Recommended up to 100MB\r\n- **Chunked upload**: No hard limit (tested up to 5GB)\r\n- **Default chunk size**: 8MB (8,388,608 bytes)\r\n- **Recommended chunk range**: 4MB - 16MB\r\n\r\n## 🌐 Environment Support\r\n\r\n### Browser\r\n- ✅ Chrome 90+\r\n- ✅ Firefox 88+\r\n- ✅ Safari 14+\r\n- ✅ Edge 90+\r\n\r\n### Node.js\r\n- ✅ Node.js 14.x\r\n- ✅ Node.js 16.x\r\n- ✅ Node.js 18.x\r\n- ✅ Node.js 20.x\r\n\r\n### Frameworks\r\n- ✅ React / Next.js\r\n- ✅ Vue / Nuxt\r\n- ✅ Angular\r\n- ✅ Svelte / SvelteKit\r\n\r\n### Module Systems\r\n- ✅ ESM (ES Modules)\r\n- ✅ CommonJS\r\n- ✅ UMD (via bundlers)\r\n\r\n## 🛠️ Module Formats\r\n\r\n### ESM Import\r\n```javascript\r\nimport cloudku from 'cloudku-uploader'\r\n```\r\n\r\n### CommonJS Require\r\n```javascript\r\nconst cloudku = require('cloudku-uploader')\r\n```\r\n\r\n### TypeScript\r\n```typescript\r\nimport cloudku from 'cloudku-uploader'\r\nimport type { UploadResult, FileObject } from 'cloudku-uploader'\r\n\r\nconst result: UploadResult = await cloudku.uploadFile(buffer, 'file.jpg')\r\n```\r\n\r\n## 📝 Type Definitions\r\n\r\n```typescript\r\ninterface UploadResult {\r\n  status: 'success' | 'error'\r\n  url?: string\r\n  filename?: string\r\n  size?: number\r\n  message?: string\r\n}\r\n\r\ninterface FileObject {\r\n  buffer: ArrayBuffer\r\n  name: string\r\n}\r\n\r\ninterface CloudkuUploader {\r\n  uploadFile(buffer: ArrayBuffer, name?: string): Promise<UploadResult>\r\n  uploadLarge(buffer: ArrayBuffer, name?: string, chunkSize?: number): Promise<UploadResult>\r\n  uploadBatch(files: FileObject[]): Promise<PromiseSettledResult<UploadResult>[]>\r\n}\r\n```\r\n\r\n## 🤝 Contributing\r\n\r\nContributions are welcome! Please follow these guidelines:\r\n\r\n1. Fork the repository\r\n2. Create a feature branch: `git checkout -b feature/amazing-feature`\r\n3. Commit your changes: `git commit -m 'Add amazing feature'`\r\n4. Push to the branch: `git push origin feature/amazing-feature`\r\n5. Open a Pull Request\r\n\r\nPlease ensure:\r\n- Code follows existing style\r\n- All tests pass\r\n- Documentation is updated\r\n- Commit messages are clear\r\n\r\n## 📄 License\r\n\r\nMIT License - see [LICENSE](LICENSE) file for details\r\n\r\n## 🔗 Links\r\n\r\n- [NPM Package](https://www.npmjs.com/package/cloudku-uploader)\r\n- [GitHub Repository](https://github.com/cloudkuimages/cloudku-uploader)\r\n- [Issue Tracker](https://github.com/cloudkuimages/cloudku-uploader/issues)\r\n\r\n## 💬 Support\r\n\r\n- 📫 Open an issue on GitHub\r\n- 💡 Check existing issues for solutions\r\n- 📖 Read the full documentation\r\n\r\n## ⭐ Acknowledgments\r\n\r\nSpecial thanks to the CloudKu team for providing the hosting infrastructure.\r\n\r\n---\r\n\r\n**Made with ❤️ for the JavaScript community**","readmeFilename":"README.md"}