UNPKG

application-services

Version:

Out of the box application environment and configuration service.

46 lines (45 loc) 1.6 kB
import { readFile as _readFile } from 'node:fs/promises'; import { type LogService } from 'common-services'; export declare enum NodeEnv { Test = "test", Development = "development", Production = "production" } export type BaseAppEnv = 'local'; export type BaseAppEnvVars = { NODE_ENV: NodeEnv; ISOLATED_ENV?: string; }; export interface AppEnvVars extends BaseAppEnvVars { } declare const _default: typeof initENV; export default _default; export type ProcessEnvConfig = { BASE_ENV?: Partial<AppEnvVars>; }; export type ProcessEnvDependencies<T extends BaseAppEnv> = ProcessEnvConfig & { APP_ENV: T; PROJECT_DIR: string; PROCESS_ENV: Partial<AppEnvVars>; log?: LogService; readFile?: typeof _readFile; }; /** * Initialize the ENV service using process env plus dotenv files * loaded in `.env.node.${ENV.NODE_ENV}` and `.env.app.${APP_ENV}`. * @param {Object} services * The services `ENV` depends on * @param {Object} [services.BASE_ENV] * Base env vars that will be added to the environment * @param {Object} services.APP_ENV * The injected `APP_ENV` value * @param {Object} services.PROCESS_ENV * The injected `process.env` value * @param {Object} services.PROJECT_DIR * The NodeJS project directory * @param {Object} [services.log=noop] * An optional logging service * @return {Promise<Object>} * A promise of an object containing the actual env vars. */ declare function initENV<T extends BaseAppEnv>({ BASE_ENV, APP_ENV, PROCESS_ENV, PROJECT_DIR, log, readFile, }: ProcessEnvDependencies<T>): Promise<AppEnvVars>;