UNPKG

@npio/internals

Version:

A free visual website editor, powered with your own SolidJS components.

39 lines (30 loc) 1.16 kB
import { Driver, createLocal, createS3 } from "@npio/filesystem"; import { createGlobal } from "./util"; import { useServerConfig } from "./config"; const create = () => { const config = useServerConfig(); const drivers = {} as { local: Driver; s3?: Driver }; if (config.filesystem.drivers.local) { drivers.local = createLocal(config.filesystem.drivers.local); } if (config.filesystem.drivers.s3) { drivers.s3 = createS3(config.filesystem.drivers.s3); } return { default: config.filesystem.defaultDriver, drivers }; }; const initFilesystem = () => setFilesystem(create); export default initFilesystem; export const [useFilesystem, setFilesystem] = createGlobal<ReturnType<typeof create>>("npFilesystem"); export const useFilesystemDriver = (driver?: string | null) => { const fs = useFilesystem(); const d = (driver as keyof typeof fs.drivers) ?? "local"; if (fs.drivers[d]) return fs.drivers[d]!; const alt = d === "local" ? "s3" : "local"; if (import.meta.env.DEV) { console.log( `Requested filesystem driver "${driver}" not found in config, using "${alt}"!`, ); } return fs.drivers[alt]!; };