application-services
Version:
Out of the box application environment and configuration service.
46 lines (45 loc) • 1.6 kB
TypeScript
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>;