All files / apis/shared environment.ts

85.71% Statements 6/7
100% Branches 0/0
50% Functions 1/2
85.71% Lines 6/7

Press n or j to go to the next uncovered block, b, p or k for the previous block.

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 381x                                     1x   1x 4x         1x     1x              
import { getOwnProperty } from "./get";
 
type Environment<
  K extends string = string,
  X extends string | undefined = string | undefined
> = Readonly<Record<K, X>>;
 
/**
 * Создаёт копию `process.env` ограниченную по ключам
 *
 * @template T
 * @param {Record<string, string | string>} baseEnvironment
 * @param {...T} keys
 * @return {Object}  {(Record<T[number], string | undefined>)}
 */
function loadEnvironment<T extends string[]>(
  baseEnvironment: Environment,
  ...keys: T
): Environment<T[number], string> {
  const environment = {} as Environment<string, string>;
 
  for (const key of keys) {
    Object.defineProperty(environment, key, {
      get: () => getOwnProperty(baseEnvironment, key)
    });
  }
 
  return environment;
}
 
export const environment = loadEnvironment(
  process.env,
  "QIWI_TOKEN",
  "QIWI_WALLET",
  "QIWI_SECRET_KEY",
  "QIWI_PUBLIC_KEY"
);