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