// * Packages import { ReactNode } from "react"; // * Other import { AppEnv } from "@/types/global"; // eslint-disable-next-line no-unused-vars type SettingResolver = (appEnv: AppEnv) => ReactNode; export default class SettingRegistry { private static resolvers: SettingResolver[] = []; static add(resolver: SettingResolver) { this.resolvers.push(resolver); } static getAll(appEnv: AppEnv): ReactNode[] { return this.resolvers.map((resolver) => resolver(appEnv)); } } // Add all sections presents in files to the registry. // @ts-expect-error Glob error. const modules = import.meta.glob("./Sections/*.tsx", { eager: true, }) as Record< string, { // eslint-disable-next-line no-unused-vars default: (appEnv: AppEnv) => ReactNode; } >; Object.entries(modules) .sort(([pathA], [pathB]) => pathA.localeCompare(pathB)) .forEach(([, module]) => { SettingRegistry.add(module.default); });