UNPKG

inference-server

Version:

Libraries and server to build AI applications. Adapters to various native bindings allowing local inference. Integrate it with your application, or use as a microservice.

58 lines (50 loc) 1.88 kB
import { promises as fs } from 'node:fs' import path from 'node:path' import url from 'node:url' import type { InferenceServerOptions } from '#package/server.js' export async function loadConfig(customPath?: string): Promise<{ path: string; options: InferenceServerOptions } | null> { // If custom path provided, try only that if (customPath) { try { const configPath = path.resolve(customPath) const options = await importConfigOptions(configPath) return { path: configPath, options } } catch (error) { throw new Error(`Failed to load config from ${customPath}: ${(error as Error).message}`) } } // Default paths to check const configNames = ['infs.config.js', 'infs.config.mjs', 'infs.config.json', 'package.json'] // Try each possible config file for (const configName of configNames) { try { const configPath = path.resolve(process.cwd(), configName) const options = await importConfigOptions(configPath) // For package.json, we need to check for the 'infs' or 'inference-server' key if (configName === 'package.json') { const packageJson = options as any const inferenceServerOptions = packageJson.infs || packageJson['inference-server'] if (inferenceServerOptions) { return { path: configPath, options: inferenceServerOptions } } continue } return { path: configPath, options } } catch (error) { // Ignore errors for default paths continue } } return null } async function importConfigOptions(configPath: string): Promise<InferenceServerOptions> { // Handle different config formats if (configPath.endsWith('.json')) { const content = await fs.readFile(configPath, 'utf-8') return JSON.parse(content) } else { // For .js and .mjs files, use dynamic import const imported = await import(url.pathToFileURL(configPath).href) return imported.config || imported.default } }