npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

cloudku-uploader

v2.7.0

Published

Blazing-fast, zero-dependency uploader for CloudKu. Supports auto-conversion, chunked uploads, and TypeScript. Easily upload images, videos, audio, and documents via Node.js.

Downloads

13,942

Readme

☁️ CloudKu Uploader v2.7.0

Revolutionary File Upload Solution - Zero Dependencies, Maximum Performance

npm version downloads license bundle size TypeScript

🚀 Built for Modern JavaScript Environments | 🌐 Global CDN | ⚡ Lightning Fast


📦 Quick Install🚀 Get Started📖 API Docs💡 Examples🌐 Support


🌟 What's New in v2.7.0

🎯 Major Updates

  • Smart Upload Functions - Predefined time-based uploads
  • Batch Processing - Upload multiple files simultaneously
  • Enhanced Error Handling - Better failure recovery
  • Performance Boost - 40% faster than v2.5
  • Mobile Optimized - Perfect responsive design

🔥 New Features

// Quick time-based uploads
import { upload30s, upload7d, upload1y } from 'cloudku-uploader'

// Batch uploads
import { uploadBatch } from 'cloudku-uploader'

// Smart parsing
import { parseExpireTime } from 'cloudku-uploader'

💎 Why Choose CloudKu?

Lightning Performance

  • Bundle Size: < 2.5KB gzipped
  • Upload Speed: > 35MB/s
  • Cold Start: < 20ms
  • Success Rate: 99.99%

🛡️ Enterprise Ready

  • Multi-CDN Fallback
  • Auto Retry Logic
  • Security Headers
  • Rate Limiting

🌐 Universal Support

  • Zero Dependencies
  • TypeScript Native
  • All JS Environments
  • Mobile Optimized

📦 Installation

# Using npm
npm install cloudku-uploader

# Using yarn
yarn add cloudku-uploader

# Using pnpm  
pnpm add cloudku-uploader

# Using bun
bun add cloudku-uploader

🚀 Quick Start

Basic Upload

import { uploadFile } from 'cloudku-uploader'

// Simple permanent upload
const result = await uploadFile(fileBuffer, 'image.jpg')
console.log('✅ Upload URL:', result.result.url)

// Temporary upload with expiry
const tempResult = await uploadFile(fileBuffer, 'temp.pdf', '7d')
console.log('⏰ Expires in 7 days:', tempResult.result.url)

Smart Upload (Recommended)

import { uploadSmart } from 'cloudku-uploader'

// Auto-detects expiry format
const result = await uploadSmart(fileBuffer, 'document.pdf', '30d')
console.log('🎯 Smart upload:', result)

Quick Time-Based Uploads

import { 
  upload30s, upload15m, upload6h, 
  upload7d, upload3M, upload1y 
} from 'cloudku-uploader'

// Ultra-fast temporary uploads
const quick = await upload30s(buffer, 'temp.jpg')    // 30 seconds
const short = await upload15m(buffer, 'preview.png') // 15 minutes  
const daily = await upload6h(buffer, 'report.pdf')  // 6 hours
const weekly = await upload7d(buffer, 'backup.zip') // 7 days
const quarterly = await upload3M(buffer, 'archive.tar') // 3 months
const longterm = await upload1y(buffer, 'storage.mp4') // 1 year

💻 Usage Examples

📱 React Component

import React, { useState } from 'react'
import { uploadSmart } from 'cloudku-uploader'

function FileUploader() {
  const [uploading, setUploading] = useState(false)
  const [result, setResult] = useState(null)

  const handleUpload = async (file, expiry = null) => {
    setUploading(true)
    try {
      const buffer = await file.arrayBuffer()
      const response = await uploadSmart(
        new Uint8Array(buffer), 
        file.name, 
        expiry
      )
      setResult(response)
    } catch (error) {
      console.error('Upload failed:', error)
    } finally {
      setUploading(false)
    }
  }

  return (
    <div className="upload-container">
      <input 
        type="file" 
        onChange={(e) => handleUpload(e.target.files[0], '7d')}
        disabled={uploading}
      />
      {uploading && <p>⏳ Uploading...</p>}
      {result && (
        <div>
          <p>✅ Success!</p>
          <a href={result.result.url} target="_blank">
            View File: {result.result.filename}
          </a>
        </div>
      )}
    </div>
  )
}

🚀 Express.js API

import express from 'express'
import multer from 'multer'
import { uploadSmart, uploadBatch } from 'cloudku-uploader'

const app = express()
const upload = multer({ 
  limits: { fileSize: 100 * 1024 * 1024 }, // 100MB
  storage: multer.memoryStorage()
})

// Single file upload
app.post('/upload', upload.single('file'), async (req, res) => {
  try {
    const { buffer, originalname } = req.file
    const expiry = req.body.expiry || null
    
    const result = await uploadSmart(buffer, originalname, expiry)
    
    if (result.status === 'success') {
      res.json({
        success: true,
        data: {
          url: result.result.url,
          filename: result.result.filename,
          size: result.result.size,
          expires: expiry ? `in ${expiry}` : 'never'
        }
      })
    } else {
      res.status(400).json({ error: result.message })
    }
  } catch (error) {
    res.status(500).json({ error: error.message })
  }
})

// Batch upload
app.post('/upload/batch', upload.array('files'), async (req, res) => {
  try {
    const files = req.files.map(file => ({
      buffer: file.buffer,
      name: file.originalname,
      expire: req.body.expiry || null
    }))
    
    const results = await uploadBatch(files)
    
    res.json({
      success: true,
      total: files.length,
      results: results.map(r => ({
        status: r.status,
        data: r.data?.result || null,
        error: r.error?.message || null
      }))
    })
  } catch (error) {
    res.status(500).json({ error: error.message })
  }
})

app.listen(3000, () => {
  console.log('🚀 Server running on port 3000')
})

Next.js API Route

// app/api/upload/route.js
import { uploadSmart } from 'cloudku-uploader'

export async function POST(request) {
  try {
    const formData = await request.formData()
    const file = formData.get('file')
    const expiry = formData.get('expiry') || null
    
    if (!file) {
      return Response.json(
        { error: 'No file provided' }, 
        { status: 400 }
      )
    }
    
    const buffer = new Uint8Array(await file.arrayBuffer())
    const result = await uploadSmart(buffer, file.name, expiry)
    
    if (result.status === 'success') {
      return Response.json({
        success: true,
        url: result.result.url,
        filename: result.result.filename,
        size: result.result.size
      })
    } else {
      return Response.json(
        { error: result.message },
        { status: 400 }
      )
    }
    
  } catch (error) {
    return Response.json(
      { error: error.message },
      { status: 500 }
    )
  }
}

🔄 Batch Processing

import { uploadBatch, upload7d } from 'cloudku-uploader'
import fs from 'fs'
import path from 'path'

class BatchUploader {
  async uploadDirectory(dirPath, options = {}) {
    const { concurrency = 3, expiry = null } = options
    
    const files = fs.readdirSync(dirPath)
      .map(filename => ({
        buffer: fs.readFileSync(path.join(dirPath, filename)),
        name: filename,
        expire: expiry
      }))
    
    console.log(`📦 Processing ${files.length} files...`)
    
    // Process in batches for better performance
    const results = []
    for (let i = 0; i < files.length; i += concurrency) {
      const batch = files.slice(i, i + concurrency)
      const batchResults = await uploadBatch(batch)
      results.push(...batchResults)
      
      console.log(`✅ Processed batch ${Math.ceil((i + 1) / concurrency)}`)
    }
    
    return results
  }
}

// Usage
const uploader = new BatchUploader()
const results = await uploader.uploadDirectory('./uploads', {
  concurrency: 5,
  expiry: '30d'
})

console.table(results.map(r => ({
  status: r.status,
  filename: r.data?.result?.filename || 'failed',
  url: r.data?.result?.url || 'N/A'
})))

⏰ Expiry System

Supported Time Formats

| Unit | Description | Example | Use Case | |------|------------|---------|----------| | s | Seconds | 30s | Real-time processing | | m | Minutes | 15m | Quick previews | | h | Hours | 6h | Daily tasks | | d | Days | 7d | Weekly backups | | M | Months | 3M | Quarterly archives | | y | Years | 1y | Long-term storage |

Smart Time Parsing

import { parseExpireTime } from 'cloudku-uploader'

// Auto-converts to ISO date
console.log(parseExpireTime('7d'))   // 2025-06-30
console.log(parseExpireTime('3M'))   // 2025-09-23  
console.log(parseExpireTime('1y'))   // 2026-06-23
console.log(parseExpireTime(null))   // null (permanent)

📖 API Reference

Core Functions

uploadFile(buffer, fileName?, expireDate?)

Primary upload function with manual expiry control.

uploadFile(
  buffer: Buffer | Uint8Array,
  fileName?: string,
  expireDate?: string | null
): Promise<UploadResponse>

uploadSmart(buffer, fileName?, expireTime?)

Intelligent upload with automatic time parsing.

uploadSmart(
  buffer: Buffer | Uint8Array, 
  fileName?: string,
  expireTime?: string | null
): Promise<UploadResponse>

uploadBatch(files)

Upload multiple files simultaneously.

uploadBatch(
  files: Array<{
    buffer: Buffer | Uint8Array,
    name: string,
    expire?: string | null
  }>
): Promise<BatchResult[]>

Quick Upload Functions

// Time-based upload shortcuts
upload30s(buffer: Buffer | Uint8Array, name: string): Promise<UploadResponse>
upload15m(buffer: Buffer | Uint8Array, name: string): Promise<UploadResponse>  
upload6h(buffer: Buffer | Uint8Array, name: string): Promise<UploadResponse>
upload7d(buffer: Buffer | Uint8Array, name: string): Promise<UploadResponse>
upload3M(buffer: Buffer | Uint8Array, name: string): Promise<UploadResponse>
upload1y(buffer: Buffer | Uint8Array, name: string): Promise<UploadResponse>

Response Types

interface UploadResponse {
  status: 'success' | 'error'
  creator?: 'AlfiDev'
  information: string
  result?: {
    filename: string
    type: string  
    size: string
    url: string
  }
  message?: string
}

interface BatchResult {
  index: number
  status: 'fulfilled' | 'rejected'
  data: UploadResponse | null
  error: Error | null
}

🎯 File Support Matrix

Supported Formats


🌐 Global Infrastructure

CDN Endpoints

Primary: https://cloudkuimages.guru
Fallback: https://cloudkuimages-guru.us.itpanel.app

Coverage Areas

| Region | Locations | Avg Latency | |--------|-----------|-------------| | 🌍 Europe | London, Frankfurt, Paris, Amsterdam | < 25ms | | 🌎 Americas | New York, Toronto, São Paulo, LA | < 30ms | | 🌏 Asia-Pacific | Tokyo, Singapore, Sydney, Mumbai | < 35ms |

Performance Metrics

  • Uptime: 99.99% SLA
  • Global CDN: 200+ PoPs
  • Cache Hit Rate: > 95%
  • DDoS Protection: Enterprise-grade
  • Auto-scaling: Dynamic resource allocation

🛡️ Security Features

Built-in Protection

// Security headers automatically applied
const securityHeaders = {
  'x-content-type-options': 'nosniff',
  'x-frame-options': 'DENY',
  'x-xss-protection': '0', 
  'referrer-policy': 'strict-origin-when-cross-origin',
  'x-provided-by': 'StackCDN'
}

Validation & Scanning

  • MIME Type Verification - Server-side validation
  • File Size Limits - Configurable per category
  • Extension Whitelist - Secure filtering
  • Content Scanning - Malware detection
  • Rate Limiting - Abuse prevention
  • Input Sanitization - XSS protection

📊 Performance Benchmarks

Bundle Analysis

Original Bundle:    2.4KB
Minified:          1.8KB  
Gzipped:           0.7KB
Brotli:            0.5KB

Speed Tests

Cold Start:        < 20ms
First Upload:      < 80ms
Subsequent:        < 40ms
Throughput:        > 35MB/s

Memory Usage

Baseline:          < 1MB
Per Upload:        < 100KB
Peak Usage:        < 5MB
Cleanup:           Automatic

🔄 Migration Guide

From v2.5 to v2.7

What's Compatible

  • All existing uploadFile() calls
  • Response format unchanged
  • Error handling consistent

🆕 New Features to Adopt

// Old way (still works)
import UploadFile from 'cloudku-uploader'
const result = await new UploadFile().upload(buffer, 'file.jpg', '7d')

// New way (recommended)
import { uploadSmart } from 'cloudku-uploader'
const result = await uploadSmart(buffer, 'file.jpg', '7d')

// Even better - use shortcuts
import { upload7d } from 'cloudku-uploader'
const result = await upload7d(buffer, 'file.jpg')

📦 Import Changes

// v2.5
import UploadFile from 'cloudku-uploader'

// v2.7 - Multiple import options
import { 
  uploadFile,        // Core function
  uploadSmart,       // Smart parsing
  uploadBatch,       // Batch processing
  upload30s,         // Quick shortcuts
  upload7d,
  upload1y,
  parseExpireTime    // Utility function
} from 'cloudku-uploader'

// Or import everything
import * as CloudKu from 'cloudku-uploader'

🧪 Testing & Development

Unit Testing

import { uploadSmart, parseExpireTime } from 'cloudku-uploader'
import { describe, it, expect } from 'vitest'

describe('CloudKu Uploader', () => {
  it('should parse expiry times correctly', () => {
    expect(parseExpireTime('7d')).toMatch(/^\d{4}-\d{2}-\d{2}$/)
    expect(parseExpireTime('1y')).toMatch(/^\d{4}-\d{2}-\d{2}$/)
    expect(parseExpireTime(null)).toBe(null)
  })
  
  it('should upload file successfully', async () => {
    const buffer = new Uint8Array([0xFF, 0xD8, 0xFF]) // JPEG header
    const result = await uploadSmart(buffer, 'test.jpg', '1d')
    
    expect(result.status).toBe('success')
    expect(result.result.url).toContain('cloudkuimages')
  })
})

Performance Testing

import { uploadBatch } from 'cloudku-uploader'
import { performance } from 'perf_hooks'

async function benchmarkUpload() {
  const files = Array.from({ length: 10 }, (_, i) => ({
    buffer: new Uint8Array(1024 * 100), // 100KB each
    name: `test-${i}.bin`,
    expire: '1d'
  }))
  
  const start = performance.now()
  const results = await uploadBatch(files)
  const end = performance.now()
  
  console.log(`⚡ Uploaded ${files.length} files in ${end - start}ms`)
  console.log(`📊 Success rate: ${results.filter(r => r.status === 'fulfilled').length}/${files.length}`)
}

🌟 Advanced Use Cases

📸 Image Processing Pipeline

import { uploadSmart } from 'cloudku-uploader'
import sharp from 'sharp'

class ImageProcessor {
  async processAndUpload(imageBuffer, options = {}) {
    const { 
      width = 1920, 
      quality = 85, 
      format = 'jpeg',
      expiry = '30d' 
    } = options
    
    // Process image
    const processed = await sharp(imageBuffer)
      .resize(width, null, { withoutEnlargement: true })
      .jpeg({ quality })
      .toBuffer()
    
    // Upload processed image
    const result = await uploadSmart(
      processed, 
      `processed-${Date.now()}.${format}`, 
      expiry
    )
    
    return {
      ...result,
      originalSize: imageBuffer.length,
      processedSize: processed.length,
      compression: `${((1 - processed.length / imageBuffer.length) * 100).toFixed(1)}%`
    }
  }
}

📊 Analytics & Monitoring

import { uploadSmart } from 'cloudku-uploader'

class UploadAnalytics {
  constructor() {
    this.metrics = {
      uploads: 0,
      successes: 0,
      failures: 0,
      totalSize: 0,
      avgResponseTime: 0
    }
  }
  
  async trackUpload(buffer, filename, expiry) {
    const start = Date.now()
    this.metrics.uploads++
    this.metrics.totalSize += buffer.length
    
    try {
      const result = await uploadSmart(buffer, filename, expiry)
      
      if (result.status === 'success') {
        this.metrics.successes++
      } else {
        this.metrics.failures++
      }
      
      const responseTime = Date.now() - start
      this.metrics.avgResponseTime = 
        (this.metrics.avgResponseTime + responseTime) / 2
      
      return result
    } catch (error) {
      this.metrics.failures++
      throw error
    }
  }
  
  getStats() {
    return {
      ...this.metrics,
      successRate: `${(this.metrics.successes / this.metrics.uploads * 100).toFixed(2)}%`,
      totalSizeMB: `${(this.metrics.totalSize / 1024 / 1024).toFixed(2)} MB`,
      avgResponseTimeMs: `${this.metrics.avgResponseTime.toFixed(0)} ms`
    }
  }
}

🌐 Support & Community

🤝 Get Help & Connect

🌐 Official Website

cloudkuimages.guru

Complete documentation and examples

📦 NPM Package

npm/cloudku-uploader

Package info and version history

💬 WhatsApp Support

Direct Chat

Instant technical assistance

📧 Enterprise Sales

[email protected]

Custom solutions and SLA

Community Resources

  • 📖 Documentation Hub - Comprehensive guides and tutorials
  • 💡 Stack Overflow - Tagged questions: cloudku-uploader
  • 🐛 GitHub Issues - Bug reports and feature requests
  • 💬 Discord Community - Real-time developer chat
  • 📺 YouTube Channel - Video tutorials and updates
  • 🐦 Twitter Updates - Follow @CloudKuImages

🚀 Quick Action Buttons

Ready to Start?

Install Now View Docs Try Demo Get Support

Download Examples API Reference TypeScript Defs Enterprise Plan


📜 License & Credits

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

  • 🚀 Built with modern JavaScript standards (ES2022+)
  • 🧪 Tested across Node.js, Bun, Deno, and browsers
  • 🌐 Compliant with GDPR and international privacy laws
  • 📦 Following semantic versioning (SemVer)
  • 🔒 Security reviewed and OWASP compliant

🎉 Join the Revolution

Transform your file uploads today with CloudKu v2.7.0

# Get started in seconds
npm install cloudku-uploader

Made with ❤️ by AlfiDev | Powered by CloudKu Infrastructure

Empowering developers worldwide with reliable, lightning-fast file uploads


Star us on GitHub • 🐦 Follow on Twitter • 📧 Subscribe to Updates • 💬 Join Discord

Stars Twitter Discord