nitropage
Version:
A free and open source, extensible visual page builder based on SolidStart.
47 lines (42 loc) • 1.14 kB
text/typescript
import type { LocalOptions, S3Options } from "@npio/filesystem";
import { Config as AuthConfig } from "../auth/core/server";
import type { PrismaClientOptions } from "./prisma";
import { createGlobal } from "./util";
export type ServerConfig = {
auth: AuthConfig & { salt: string };
database?: {
prisma?: PrismaClientOptions;
};
filesystem: {
defaultDriver: "local" | "s3";
drivers: {
local?: LocalOptions;
s3?: S3Options;
};
};
image: {
aspectRatios: string[];
sizes: number[];
placeholder: {
name: string;
};
maxAge: number;
quality: number;
};
};
export type ServerConfigOptions = {
auth?: Partial<AuthConfig>;
database?: ServerConfig["database"];
filesystem?: Partial<Omit<ServerConfig["filesystem"], "drivers">> & {
drivers?: {
local?: Partial<LocalOptions>;
s3?: Partial<S3Options>;
};
};
image?: Partial<ServerConfig["image"]>;
};
export const [useServerConfig, setServerConfig] =
createGlobal<ServerConfig>("npServerConfig");
export const defineServerConfig = function (config: () => ServerConfigOptions) {
return config;
};