UNPKG

edgespec

Version:

Write Winter-CG compatible routes with filesystem routing and tons of features

84 lines (82 loc) 2.36 kB
import path from 'path'; import fs from 'fs/promises'; import { bundleRequire } from 'bundle-require'; // src/config/utils.ts var cloneObjectAndDeleteUndefinedKeys = (obj) => { const clone = { ...obj }; Object.keys(clone).forEach((key) => { if (clone[key] === void 0) { delete clone[key]; } }); return clone; }; var resolvePossibleRelativePath = (possibleRelativePath, configDirectory) => { if (path.isAbsolute(possibleRelativePath)) { return possibleRelativePath; } return path.resolve(configDirectory, possibleRelativePath); }; var resolveConfig = (config) => { const { rootDirectory, tsconfigPath, routesDirectory, ...rest } = cloneObjectAndDeleteUndefinedKeys(config); const resolvedRootDirectory = path.resolve(config.rootDirectory); return { rootDirectory: resolvedRootDirectory, tsconfigPath: resolvePossibleRelativePath( tsconfigPath ?? "tsconfig.json", resolvedRootDirectory ), routesDirectory: resolvePossibleRelativePath( routesDirectory ?? "api", resolvedRootDirectory ), platform: "wintercg-minimal", ...rest }; }; var validateConfig = async (config) => { try { await fs.stat(config.routesDirectory); } catch (error) { throw new Error(`Could not find routes directory ${config.routesDirectory}`); } try { await fs.stat(config.tsconfigPath); } catch (error) { throw new Error(`Could not find tsconfig.json at ${config.tsconfigPath}`); } return config; }; var loadConfig = async (rootDirectory, overrides) => { let loadedConfig = {}; let configInRootExists = false; const potentialConfigPath = path.join(rootDirectory, "edgespec.config.ts"); try { await fs.stat(potentialConfigPath); configInRootExists = true; } catch { } if (configInRootExists) { const { mod: { default: config } } = await bundleRequire({ filepath: potentialConfigPath }); if (!config) { throw new Error( `Could not find a default export in ${potentialConfigPath}` ); } loadedConfig = config; } return await validateConfig( resolveConfig({ rootDirectory, ...loadedConfig, ...cloneObjectAndDeleteUndefinedKeys(overrides ?? {}) }) ); }; export { loadConfig }; //# sourceMappingURL=chunk-TMYKADNK.js.map //# sourceMappingURL=chunk-TMYKADNK.js.map