| gio | a71316d | 2025-05-24 09:41:36 +0400 | [diff] [blame] | 1 | import { FileSystem } from "./fs"; |
| 2 | |
| 3 | export interface ServiceAnalyzer { |
| 4 | detect: (fs: FileSystem, root: string) => boolean; |
| 5 | analyze: (fs: FileSystem, root: string) => Promise<ServiceInfo>; |
| 6 | } |
| 7 | |
| 8 | export interface ConfigVar { |
| 9 | name: string; |
| 10 | category: ConfigVarCategory; |
| 11 | type?: ConfigVarType; |
| 12 | semanticType?: ConfigVarSemanticType; |
| 13 | // eslint-disable-next-line @typescript-eslint/no-explicit-any |
| 14 | defaultValue?: any; |
| 15 | description?: string; |
| 16 | required?: boolean; |
| 17 | sensitive?: boolean; |
| 18 | } |
| 19 | |
| 20 | export enum ConfigVarCategory { |
| 21 | CommandLineFlag = "CommandLineFlag", |
| 22 | EnvironmentVariable = "EnvironmentVariable", |
| 23 | } |
| 24 | |
| 25 | export enum ConfigVarType { |
| 26 | String = "String", |
| 27 | Number = "Number", |
| 28 | Boolean = "Boolean", |
| 29 | } |
| 30 | |
| 31 | export enum ConfigVarSemanticType { |
| 32 | EXPANDED_ENV_VAR = "EXPANDED_ENV_VAR", |
| 33 | PORT = "PORT", |
| 34 | FILESYSTEM_PATH = "FILESYSTEM_PATH", |
| 35 | DATABASE_URL = "DATABASE_URL", |
| 36 | SQLITE_PATH = "SQLITE_PATH", |
| 37 | POSTGRES_URL = "POSTGRES_URL", |
| 38 | POSTGRES_PASSWORD = "POSTGRES_PASSWORD", |
| 39 | POSTGRES_USER = "POSTGRES_USER", |
| 40 | POSTGRES_DB = "POSTGRES_DB", |
| 41 | POSTGRES_PORT = "POSTGRES_PORT", |
| 42 | POSTGRES_HOST = "POSTGRES_HOST", |
| 43 | POSTGRES_SSL = "POSTGRES_SSL", |
| 44 | MONGO_URL = "MONGO_URL", |
| 45 | MONGO_PASSWORD = "MONGO_PASSWORD", |
| 46 | MONGO_USER = "MONGO_USER", |
| 47 | MONGO_DB = "MONGO_DB", |
| 48 | MONGO_PORT = "MONGO_PORT", |
| 49 | MONGO_HOST = "MONGO_HOST", |
| 50 | MONGO_SSL = "MONGO_SSL", |
| 51 | } |
| 52 | |
| 53 | export interface ServiceInfo { |
| 54 | name: string; |
| 55 | location: string; |
| 56 | configVars: Array<ConfigVar>; |
| 57 | commands: Array<string>; |
| 58 | } |