From 6efa912143b5ff5386c6e3fee50c13b3f23b197b Mon Sep 17 00:00:00 2001 From: Lukas Date: Mon, 24 Jan 2022 19:42:37 +0100 Subject: [PATCH] fix: fallback to process.env when window is not available (#7) --- src/getEnvConfig.ts | 11 +++++++---- test/getEnvConfig.test.ts | 20 +++++++++++++++++++- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/src/getEnvConfig.ts b/src/getEnvConfig.ts index c565863..7d79daf 100644 --- a/src/getEnvConfig.ts +++ b/src/getEnvConfig.ts @@ -3,8 +3,11 @@ export interface EnvConfig { } export function getEnvConfig(key: keyof EnvConfig): EnvConfig[T] | undefined { - const { env } = window as unknown as { env: EnvConfig }; - const config = env || {}; - - return config[key]; + const _window = global.window as unknown as { env?: EnvConfig }; + if (_window?.env) { + return _window.env[key]; + } + if (global.process?.env) { + return global.process.env[key]; + } } diff --git a/test/getEnvConfig.test.ts b/test/getEnvConfig.test.ts index a2fb92f..31f73ed 100644 --- a/test/getEnvConfig.test.ts +++ b/test/getEnvConfig.test.ts @@ -1,15 +1,22 @@ import { EnvConfig, getEnvConfig } from '~/getEnvConfig'; describe('getEnvConfig', () => { + const env = process.env; + beforeEach(() => { jest.resetModules(); delete (window as unknown as { env?: EnvConfig }).env; + process.env = { ...env }; + }); + + afterEach(() => { + process.env = env; }); it('should get a config value from window.env', () => { // given const config: EnvConfig = { - BACKEND_URL: 'http://localhost:4000', + BACKEND_URL: 'http://localhost:4000/window', }; (window as unknown as { env?: EnvConfig }).env = config; @@ -20,6 +27,17 @@ describe('getEnvConfig', () => { expect(configBackendUrl).toStrictEqual(config.BACKEND_URL); }); + it('should get a config value from process.env', () => { + // given + process.env.BACKEND_URL = 'http://localhost:4000/process'; + + // when + const configBackendUrl = getEnvConfig('BACKEND_URL'); + + // then + expect(configBackendUrl).toStrictEqual(process.env.BACKEND_URL); + }); + it('should return undefined when a config value is not set', () => { // when const configBackendUrl = getEnvConfig('BACKEND_URL');