-
Notifications
You must be signed in to change notification settings - Fork 14
/
env.ts
39 lines (33 loc) 路 944 Bytes
/
env.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import { fallback, required } from './values.js';
export type NodeEnv<T = undefined> =
| T
| 'development'
| 'production'
| undefined;
/**
* give NODE_ENV value or given fallback value
*/
export const getEnv = (
envKey: string,
defaultValue?: string,
): string | undefined => fallback(process.env[envKey], defaultValue);
/**
* returns NODE_ENV value or given fallback value
*/
export const getNodeEnv = (defaultValue?: string): string | undefined =>
getEnv('NODE_ENV', defaultValue);
/**
* returns NODE_ENV value or given fallback otherwise throws
*/
export const getRequiredEnv = (envKey: string, defaultValue?: string): string =>
required(getEnv(envKey, defaultValue), envKey);
/**
* strict check NODE_ENV with given value
*/
const is = <T>(value: NodeEnv<T>): boolean => process.env.NODE_ENV === value;
export const Env = {
is,
isDev: is('development'),
isProd: is('production'),
isTest: is('test'),
};