bknd
Version:
Lightweight Firebase/Supabase alternative built to run anywhere — incl. Next.js, React Router, Astro, Cloudflare, Bun, Node, AWS Lambda & more.
71 lines (70 loc) • 3.07 kB
TypeScript
import { type AppEntity } from "../core";
import type { Entity, EntityManager } from "../data";
import { type FileUploadedEventData, Storage } from "../media";
import { Module } from "../modules/Module";
import { type FieldSchema } from "../data/prototype";
import { type mediaConfigSchema } from "./media-schema";
export type MediaFieldSchema = FieldSchema<typeof AppMedia.mediaFields>;
declare module "../core" {
interface Media extends AppEntity, MediaFieldSchema {
}
interface DB {
media: Media;
}
}
export declare class AppMedia extends Module<typeof mediaConfigSchema> {
private _storage?;
build(): Promise<void>;
getSchema(): import("@sinclair/typebox").TObject<{
enabled: import("@sinclair/typebox").TBoolean;
basepath: import("@sinclair/typebox").TString;
entity_name: import("@sinclair/typebox").TString;
storage: import("@sinclair/typebox").TObject<{
body_max_size: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
}>;
adapter: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<import("@sinclair/typebox").TObject<{
type: import("@sinclair/typebox").TLiteral<string>;
config: import("@sinclair/typebox").TObject<import("@sinclair/typebox").TProperties>;
}>[]>>;
}>;
get basepath(): string;
get storage(): Storage;
uploadedEventDataToMediaPayload(info: FileUploadedEventData): MediaFieldSchema;
static mediaFields: {
path: import("../data").TextField<true>;
folder: import("../data").BooleanField<false> & {
required: () => import("../data").BooleanField<true>;
};
mime_type: import("../data").TextField<false> & {
required: () => import("../data").TextField<true>;
};
size: import("../data").NumberField<false> & {
required: () => import("../data").NumberField<true>;
};
scope: import("../data").TextField<false> & {
required: () => import("../data").TextField<true>;
};
etag: import("../data").TextField<false> & {
required: () => import("../data").TextField<true>;
};
modified_at: import("../data").DateField<false> & {
required: () => import("../data").DateField<true>;
};
reference: import("../data").TextField<false> & {
required: () => import("../data").TextField<true>;
};
entity_id: import("../data").NumberField<false> & {
required: () => import("../data").NumberField<true>;
};
metadata: import("../data").JsonField<false, object> & {
required: () => import("../data").JsonField<true, object>;
};
};
getMediaEntity(forceCreate?: boolean): Entity<"media", typeof AppMedia.mediaFields>;
get em(): EntityManager;
private setupListeners;
getOverwritePaths(): RegExp[];
toJSON(secrets?: boolean): (ReturnType<this["getSchema"]> & {
params: [];
})["static"];
}