mirror of
https://github.com/bknd-io/bknd/
synced 2026-08-02 16:16:02 +00:00
47 lines
1.4 KiB
TypeScript
47 lines
1.4 KiB
TypeScript
import type { TObject, TString } from "@sinclair/typebox";
|
|
import { type Constructor, Registry } from "core";
|
|
|
|
export { MIME_TYPES } from "./storage/mime-types";
|
|
export {
|
|
Storage,
|
|
type StorageAdapter,
|
|
type FileMeta,
|
|
type FileListObject,
|
|
type StorageConfig
|
|
} from "./storage/Storage";
|
|
import type { StorageAdapter } from "./storage/Storage";
|
|
import {
|
|
type CloudinaryConfig,
|
|
StorageCloudinaryAdapter
|
|
} from "./storage/adapters/StorageCloudinaryAdapter";
|
|
import { type S3AdapterConfig, StorageS3Adapter } from "./storage/adapters/StorageS3Adapter";
|
|
|
|
export { StorageS3Adapter, type S3AdapterConfig, StorageCloudinaryAdapter, type CloudinaryConfig };
|
|
|
|
export * as StorageEvents from "./storage/events";
|
|
export { type FileUploadedEventData } from "./storage/events";
|
|
export * from "./utils";
|
|
|
|
type ClassThatImplements<T> = Constructor<T> & { prototype: T };
|
|
|
|
export const MediaAdapterRegistry = new Registry<{
|
|
cls: ClassThatImplements<StorageAdapter>;
|
|
schema: TObject;
|
|
}>((cls: ClassThatImplements<StorageAdapter>) => ({
|
|
cls,
|
|
schema: cls.prototype.getSchema() as TObject
|
|
}))
|
|
.register("s3", StorageS3Adapter)
|
|
.register("cloudinary", StorageCloudinaryAdapter);
|
|
|
|
export const Adapters = {
|
|
s3: {
|
|
cls: StorageS3Adapter,
|
|
schema: StorageS3Adapter.prototype.getSchema()
|
|
},
|
|
cloudinary: {
|
|
cls: StorageCloudinaryAdapter,
|
|
schema: StorageCloudinaryAdapter.prototype.getSchema()
|
|
}
|
|
} as const;
|