first commit
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
/**
|
||||
* `@wrnexus/uploader` — config-driven file uploads + serving.
|
||||
*
|
||||
* Declare stores in `wrnexus.config.ts`:
|
||||
*
|
||||
* storage: {
|
||||
* default: "public",
|
||||
* stores: {
|
||||
* public: { driver: "local", dir: "uploads/public", access: "public",
|
||||
* maxBytes: 10_000_000, accept: ["image/*", ".pdf"] },
|
||||
* docs: { driver: "s3", access: "private", bucket: "…", region: "auto",
|
||||
* endpoint: "https://…r2.cloudflarestorage.com",
|
||||
* accessKeyId: process.env.S3_KEY!, secretAccessKey: process.env.S3_SECRET! },
|
||||
* },
|
||||
* }
|
||||
*
|
||||
* Upload from an API route, and drop a drag-and-drop widget on a page:
|
||||
*
|
||||
* // app/api/upload.ts
|
||||
* export const POST = handleUpload({ store: "public" });
|
||||
*
|
||||
* <!-- any page -->
|
||||
* <div data-uploader="public" data-endpoint="/api/upload" data-accept="image/*"></div>
|
||||
*
|
||||
* Public files serve themselves (local → framework route, S3 → bucket URL).
|
||||
* Private files serve through a route you gate with your auth middleware:
|
||||
*
|
||||
* // app/api/files/[key].ts
|
||||
* export const GET = serveFromStore("docs");
|
||||
*/
|
||||
|
||||
export {
|
||||
upload,
|
||||
handleUpload,
|
||||
serveFromStore,
|
||||
serveStoredFile,
|
||||
storedUrl,
|
||||
UploadError,
|
||||
UPLOADS_PREFIX,
|
||||
} from "./upload.ts";
|
||||
export type { UploadedFile, UploadOptions } from "./upload.ts";
|
||||
|
||||
export { configureStorage, getStore, hasStorage, storeNames } from "./client.ts";
|
||||
export type { Store } from "./client.ts";
|
||||
|
||||
export { UPLOAD_RUNTIME, UPLOAD_JS_HREF } from "./runtime.ts";
|
||||
|
||||
export { localDriver } from "./adapters/local.ts";
|
||||
export { s3Driver } from "./adapters/s3.ts";
|
||||
export { signS3, sha256Hex, encodeKey } from "./sigv4.ts";
|
||||
export { accepts, contentTypeOf, extForType, extOf } from "./mime.ts";
|
||||
|
||||
export type {
|
||||
StorageConfig,
|
||||
StoreConfig,
|
||||
LocalStoreConfig,
|
||||
S3StoreConfig,
|
||||
StorageDriver,
|
||||
StoredObject,
|
||||
StoreAccess,
|
||||
PutMeta,
|
||||
} from "./driver.ts";
|
||||
Reference in New Issue
Block a user