UNPKG

application-services

Version:

Out of the box application environment and configuration service.

47 lines (46 loc) 1.68 kB
import { readFile as _readFile } from 'node:fs/promises'; import { type ServiceProperties } from 'knifecycle'; import { type LogService } from 'common-services'; export declare enum NodeEnv { Test = "test", Development = "development", Production = "production" } export type BaseAppEnv = 'local'; export interface BaseAppEnvVars { NODE_ENV: NodeEnv; ISOLATED_ENV?: string; } export interface AppEnvVars extends BaseAppEnvVars { } export interface 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>; declare const _default: ServiceProperties & typeof initENV; export default _default;