chore(apps/server)!: rewrite rename and move to appropriate dir

This commit is contained in:
PalmDevs
2023-11-24 23:06:57 +07:00
parent ab44312e7b
commit c97ba54802
22 changed files with 1588 additions and 0 deletions

View File

@@ -0,0 +1,28 @@
import type { Logger } from './logger.js'
export default function checkEnv(logger: Logger) {
if (!process.env['NODE_ENV']) logger.warn('NODE_ENV not set, defaulting to `development`')
const environment = (process.env['NODE_ENV'] ??
'development') as NodeEnvironment
if (!['development', 'production'].includes(environment)) {
logger.error(
'NODE_ENV is neither `development` nor `production`, unable to determine environment'
)
logger.info('Set NODE_ENV to blank to use `development` mode')
process.exit(1)
}
logger.info(`Running in ${environment} mode...`)
if (environment === 'production' && process.env['IS_USING_DOT_ENV']) {
logger.warn('You seem to be using .env files, this is generally not a good idea in production...')
}
if (!process.env['WIT_AI_TOKEN']) {
logger.error('WIT_AI_TOKEN is not defined in the environment variables')
process.exit(1)
}
return environment
}

View File

@@ -0,0 +1,37 @@
import { existsSync } from 'node:fs'
import { resolve as resolvePath } from 'node:path'
import { pathToFileURL } from 'node:url'
const configPath = resolvePath(
process.cwd(),
'config.json'
)
const userConfig: Partial<Config> = existsSync(configPath)
? (await import(pathToFileURL(configPath).href, {
assert: {
type: 'json',
},
})).default
: {}
type BaseTypeOf<T> = T extends (infer U)[]
? U[]
: T extends (...args: any[]) => infer U
? (...args: any[]) => U
: T extends object
? { [K in keyof T]: T[K] }
: T
export type Config = Omit<BaseTypeOf<typeof import('../../config.json')>, '$schema'> & {}
export const defaultConfig: Config = {
address: '127.0.0.1',
port: 80,
ocrConcurrentQueues: 1,
clientHeartbeatInterval: 60000,
debugLogsInProduction: false,
}
export default function getConfig() {
return Object.assign(defaultConfig, userConfig) satisfies Config
}

View File

@@ -0,0 +1,3 @@
export { default as getConfig } from './getConfig.js'
export { default as checkEnv } from './checkEnv.js'
export { default as logger } from './logger.js'

View File

@@ -0,0 +1,16 @@
import { Chalk } from 'chalk'
const chalk = new Chalk()
const logger = {
debug: (...args) => console.debug(chalk.gray('DEBUG:', ...args)),
info: (...args) => console.info(chalk.bgBlue.whiteBright(' INFO '), ...args),
warn: (...args) => console.warn(chalk.bgYellow.blackBright.bold(' WARN '), chalk.yellowBright(...args)),
error: (...args) => console.error(chalk.bgRed.whiteBright.bold(' ERROR '), chalk.redBright(...args)),
log: console.log,
} satisfies Logger
export type LogLevel = 'debug' | 'info' | 'warn' | 'error' | 'log'
export type LogFunction = (...x: any[]) => void
export type Logger = Record<LogLevel, LogFunction>
export default logger