From 9767b48df7493242bce335f1da57a12653307b35 Mon Sep 17 00:00:00 2001 From: Thomas Heartman Date: Wed, 21 Aug 2024 09:41:10 +0200 Subject: [PATCH] chore: rewrite to use original function instead --- src/lib/create-config.ts | 49 +++++++++++++------------------- src/lib/util/parseEnvVar.test.ts | 28 ++++++------------ src/lib/util/parseEnvVar.ts | 42 +++++++++++---------------- 3 files changed, 45 insertions(+), 74 deletions(-) diff --git a/src/lib/create-config.ts b/src/lib/create-config.ts index 471754bf21..669b6c961f 100644 --- a/src/lib/create-config.ts +++ b/src/lib/create-config.ts @@ -40,7 +40,6 @@ import { import { parseEnvVarBoolean, parseEnvVarNumber, - parseEnvVarNumberWithBounds, parseEnvVarStrings, } from './util/parseEnvVar'; import { @@ -654,69 +653,61 @@ export function createConfig(options: IUnleashOptions): IUnleashConfig { process.env.UNLEASH_SIGNAL_TOKENS_PER_ENDPOINT_LIMIT, 5, ), - featureEnvironmentStrategies: parseEnvVarNumberWithBounds( + featureEnvironmentStrategies: parseEnvVarNumber( process.env.UNLEASH_FEATURE_ENVIRONMENT_STRATEGIES_LIMIT, + 30, { min: 1, optionsOverride: options?.resourceLimits?.featureEnvironmentStrategies, - fallback: 30, }, ), - constraintValues: parseEnvVarNumberWithBounds( + constraintValues: parseEnvVarNumber( process.env.UNLEASH_CONSTRAINT_VALUES_LIMIT, + 250, { min: 1, optionsOverride: options?.resourceLimits?.constraintValues, - fallback: 250, }, ), - constraints: parseEnvVarNumberWithBounds( + constraints: parseEnvVarNumber( process.env.UNLEASH_CONSTRAINTS_LIMIT, + 30, { min: 0, optionsOverride: options?.resourceLimits?.constraints, - fallback: 30, }, ), - environments: parseEnvVarNumberWithBounds( + environments: parseEnvVarNumber( process.env.UNLEASH_ENVIRONMENTS_LIMIT, + 50, { min: 1, optionsOverride: options?.resourceLimits?.environments, - fallback: 50, }, ), - projects: parseEnvVarNumberWithBounds( - process.env.UNLEASH_PROJECTS_LIMIT, - { - min: 1, - optionsOverride: options?.resourceLimits?.projects, - fallback: 500, - }, - ), - apiTokens: parseEnvVarNumberWithBounds( + projects: parseEnvVarNumber(process.env.UNLEASH_PROJECTS_LIMIT, 500, { + min: 1, + optionsOverride: options?.resourceLimits?.projects, + }), + apiTokens: parseEnvVarNumber( process.env.UNLEASH_API_TOKENS_LIMIT, + 2_000, { min: 0, optionsOverride: options?.resourceLimits?.apiTokens, - fallback: 2000, }, ), - segments: parseEnvVarNumberWithBounds( - process.env.UNLEASH_SEGMENTS_LIMIT, - { - min: 0, - optionsOverride: options?.resourceLimits?.segments, - fallback: 300, - }, - ), - featureFlags: parseEnvVarNumberWithBounds( + segments: parseEnvVarNumber(process.env.UNLEASH_SEGMENTS_LIMIT, 300, { + min: 0, + optionsOverride: options?.resourceLimits?.segments, + }), + featureFlags: parseEnvVarNumber( process.env.UNLEASH_FEATURE_FLAGS_LIMIT, + 5_000, { min: 1, optionsOverride: options?.resourceLimits?.featureFlags, - fallback: 5000, }, ), }; diff --git a/src/lib/util/parseEnvVar.test.ts b/src/lib/util/parseEnvVar.test.ts index 6ece00916c..c87ae6716b 100644 --- a/src/lib/util/parseEnvVar.test.ts +++ b/src/lib/util/parseEnvVar.test.ts @@ -1,7 +1,6 @@ import { parseEnvVarBoolean, parseEnvVarNumber, - parseEnvVarNumberWithBounds, parseEnvVarStrings, } from './parseEnvVar'; @@ -42,34 +41,23 @@ test('parseEnvVarStringList', () => { }); describe('parseEnvVarNumberWithBounds', () => { - const parse = parseEnvVarNumberWithBounds; - test('works the same as parseEnvVarNumber', () => { - expect(parse('', { fallback: 1 })).toEqual(1); - expect(parse(' ', { fallback: 1 })).toEqual(1); - expect(parse('a', { fallback: 1 })).toEqual(1); - expect(parse('1', { fallback: 1 })).toEqual(1); - expect(parse('2', { fallback: 1 })).toEqual(2); - expect(parse('2e2', { fallback: 1 })).toEqual(2); - expect(parse('-1', { fallback: 1 })).toEqual(-1); - }); - test('prefers options override over default value if present', () => { - expect(parse('', { fallback: 1, optionsOverride: 2 })).toEqual(2); + expect(parseEnvVarNumber('', 1, { optionsOverride: 2 })).toEqual(2); }); test('accepts 0 as options override', () => { - expect(parse('', { fallback: 1, optionsOverride: 0 })).toEqual(0); + expect(parseEnvVarNumber('', 1, { optionsOverride: 0 })).toEqual(0); }); test('prefers env var over options override', () => { - expect(parse('5', { fallback: 1, optionsOverride: 2 })).toEqual(5); + expect(parseEnvVarNumber('5', 1, { optionsOverride: 2 })).toEqual(5); }); test('clamps the number to greater than or equal to the min number if provided', () => { - expect(parse('1', { fallback: 0, min: 2 })).toEqual(2); - expect(parse('', { fallback: 0, min: 2 })).toEqual(2); - expect(parse('', { fallback: 0, optionsOverride: 1, min: 2 })).toEqual( - 2, - ); + expect(parseEnvVarNumber('1', 0, { min: 2 })).toEqual(2); + expect(parseEnvVarNumber('', 0, { min: 2 })).toEqual(2); + expect( + parseEnvVarNumber('', 0, { optionsOverride: 1, min: 2 }), + ).toEqual(2); }); }); diff --git a/src/lib/util/parseEnvVar.ts b/src/lib/util/parseEnvVar.ts index fb4ee6581a..7dc30a2a27 100644 --- a/src/lib/util/parseEnvVar.ts +++ b/src/lib/util/parseEnvVar.ts @@ -1,14 +1,25 @@ export function parseEnvVarNumber( envVar: string | undefined, defaultVal: number, + options?: { min?: number; optionsOverride?: number }, ): number { - if (!envVar) { - return defaultVal; - } - const parsed = Number.parseInt(envVar, 10); + const parse = (fallback: number) => { + if (!envVar) { + return fallback; + } + const parsed = Number.parseInt(envVar, 10); - if (Number.isNaN(parsed)) { - return defaultVal; + if (Number.isNaN(parsed)) { + return fallback; + } + + return parsed; + }; + + const parsed = parse(options?.optionsOverride ?? defaultVal); + + if (options?.min) { + return Math.max(options?.min, parsed); } return parsed; @@ -38,22 +49,3 @@ export function parseEnvVarStrings( return defaultVal; } - -type parseEnvVarNumberWithBoundsOptions = { - fallback: number; - min?: number; - optionsOverride?: number; -}; - -export function parseEnvVarNumberWithBounds( - envVar: string | undefined, - { min, fallback, optionsOverride }: parseEnvVarNumberWithBoundsOptions, -): number { - const parsed = parseEnvVarNumber(envVar, optionsOverride ?? fallback); - - if (min) { - return Math.max(min, parsed); - } - - return parsed; -}