pushduck
Version:
The fastest way to add file uploads to any web application. Enterprise security, edge-ready. Works with 16+ frameworks and 5+ storage providers. No heavy AWS SDK required.
35 lines (33 loc) • 1.67 kB
TypeScript
import { ClientConfig, InferClientRouter, RouterRouteNames, S3FileMetadata, S3RouteUploadConfig, S3RouteUploadResult, S3Router, S3UploadedFile, TypedRouteHook, TypedUploadedFile } from "./index-GOfQFW5v.js";
import { formatETA, formatUploadSpeed, useUploadRoute } from "./use-upload-route-Ci8wBWkX.js";
//#region src/client/upload-client.d.ts
/**
* Create a type-safe upload client with property-based access and per-route configuration
*
* Following tRPC pattern, each route returns a hook factory function that accepts optional configuration.
* This ensures React's rules of hooks are followed while maintaining type safety and flexibility.
*
* @example
* ```typescript
* const upload = createUploadClient<AppRouter>({ endpoint: "/api/upload" });
*
* // Simple usage
* const { uploadFiles, files } = upload.imageUpload();
*
* // With per-route callbacks
* const { uploadFiles, files } = upload.imageUpload({
* onSuccess: (results) => console.log('Upload successful!', results),
* onError: (error) => console.error('Upload failed:', error),
* onProgress: (progress) => setProgress(progress)
* });
*
* // With different endpoint
* const { uploadFiles } = upload.secureUpload({
* endpoint: '/api/secure-upload',
* onSuccess: handleSecureUpload
* });
* ```
*/
declare function createUploadClient<TRouter extends S3Router<any>>(config: ClientConfig): InferClientRouter<TRouter>;
//#endregion
export { ClientConfig, InferClientRouter, RouterRouteNames, S3FileMetadata, S3RouteUploadConfig, S3RouteUploadResult, S3Router, S3UploadedFile, TypedRouteHook, TypedUploadedFile, createUploadClient, formatETA, formatUploadSpeed, useUploadRoute };