1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-09-05 17:53:12 +02:00

chore: rewrite to use original function instead

This commit is contained in:
Thomas Heartman 2024-08-21 09:41:10 +02:00
parent d881de3e10
commit 9767b48df7
No known key found for this signature in database
GPG Key ID: BD1F880DAED1EE78
3 changed files with 45 additions and 74 deletions

View File

@ -40,7 +40,6 @@ import {
import { import {
parseEnvVarBoolean, parseEnvVarBoolean,
parseEnvVarNumber, parseEnvVarNumber,
parseEnvVarNumberWithBounds,
parseEnvVarStrings, parseEnvVarStrings,
} from './util/parseEnvVar'; } from './util/parseEnvVar';
import { import {
@ -654,69 +653,61 @@ export function createConfig(options: IUnleashOptions): IUnleashConfig {
process.env.UNLEASH_SIGNAL_TOKENS_PER_ENDPOINT_LIMIT, process.env.UNLEASH_SIGNAL_TOKENS_PER_ENDPOINT_LIMIT,
5, 5,
), ),
featureEnvironmentStrategies: parseEnvVarNumberWithBounds( featureEnvironmentStrategies: parseEnvVarNumber(
process.env.UNLEASH_FEATURE_ENVIRONMENT_STRATEGIES_LIMIT, process.env.UNLEASH_FEATURE_ENVIRONMENT_STRATEGIES_LIMIT,
30,
{ {
min: 1, min: 1,
optionsOverride: optionsOverride:
options?.resourceLimits?.featureEnvironmentStrategies, options?.resourceLimits?.featureEnvironmentStrategies,
fallback: 30,
}, },
), ),
constraintValues: parseEnvVarNumberWithBounds( constraintValues: parseEnvVarNumber(
process.env.UNLEASH_CONSTRAINT_VALUES_LIMIT, process.env.UNLEASH_CONSTRAINT_VALUES_LIMIT,
250,
{ {
min: 1, min: 1,
optionsOverride: options?.resourceLimits?.constraintValues, optionsOverride: options?.resourceLimits?.constraintValues,
fallback: 250,
}, },
), ),
constraints: parseEnvVarNumberWithBounds( constraints: parseEnvVarNumber(
process.env.UNLEASH_CONSTRAINTS_LIMIT, process.env.UNLEASH_CONSTRAINTS_LIMIT,
30,
{ {
min: 0, min: 0,
optionsOverride: options?.resourceLimits?.constraints, optionsOverride: options?.resourceLimits?.constraints,
fallback: 30,
}, },
), ),
environments: parseEnvVarNumberWithBounds( environments: parseEnvVarNumber(
process.env.UNLEASH_ENVIRONMENTS_LIMIT, process.env.UNLEASH_ENVIRONMENTS_LIMIT,
50,
{ {
min: 1, min: 1,
optionsOverride: options?.resourceLimits?.environments, optionsOverride: options?.resourceLimits?.environments,
fallback: 50,
}, },
), ),
projects: parseEnvVarNumberWithBounds( projects: parseEnvVarNumber(process.env.UNLEASH_PROJECTS_LIMIT, 500, {
process.env.UNLEASH_PROJECTS_LIMIT, min: 1,
{ optionsOverride: options?.resourceLimits?.projects,
min: 1, }),
optionsOverride: options?.resourceLimits?.projects, apiTokens: parseEnvVarNumber(
fallback: 500,
},
),
apiTokens: parseEnvVarNumberWithBounds(
process.env.UNLEASH_API_TOKENS_LIMIT, process.env.UNLEASH_API_TOKENS_LIMIT,
2_000,
{ {
min: 0, min: 0,
optionsOverride: options?.resourceLimits?.apiTokens, optionsOverride: options?.resourceLimits?.apiTokens,
fallback: 2000,
}, },
), ),
segments: parseEnvVarNumberWithBounds( segments: parseEnvVarNumber(process.env.UNLEASH_SEGMENTS_LIMIT, 300, {
process.env.UNLEASH_SEGMENTS_LIMIT, min: 0,
{ optionsOverride: options?.resourceLimits?.segments,
min: 0, }),
optionsOverride: options?.resourceLimits?.segments, featureFlags: parseEnvVarNumber(
fallback: 300,
},
),
featureFlags: parseEnvVarNumberWithBounds(
process.env.UNLEASH_FEATURE_FLAGS_LIMIT, process.env.UNLEASH_FEATURE_FLAGS_LIMIT,
5_000,
{ {
min: 1, min: 1,
optionsOverride: options?.resourceLimits?.featureFlags, optionsOverride: options?.resourceLimits?.featureFlags,
fallback: 5000,
}, },
), ),
}; };

View File

@ -1,7 +1,6 @@
import { import {
parseEnvVarBoolean, parseEnvVarBoolean,
parseEnvVarNumber, parseEnvVarNumber,
parseEnvVarNumberWithBounds,
parseEnvVarStrings, parseEnvVarStrings,
} from './parseEnvVar'; } from './parseEnvVar';
@ -42,34 +41,23 @@ test('parseEnvVarStringList', () => {
}); });
describe('parseEnvVarNumberWithBounds', () => { 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', () => { 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', () => { 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', () => { 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', () => { 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(parseEnvVarNumber('1', 0, { min: 2 })).toEqual(2);
expect(parse('', { fallback: 0, min: 2 })).toEqual(2); expect(parseEnvVarNumber('', 0, { min: 2 })).toEqual(2);
expect(parse('', { fallback: 0, optionsOverride: 1, min: 2 })).toEqual( expect(
2, parseEnvVarNumber('', 0, { optionsOverride: 1, min: 2 }),
); ).toEqual(2);
}); });
}); });

View File

@ -1,14 +1,25 @@
export function parseEnvVarNumber( export function parseEnvVarNumber(
envVar: string | undefined, envVar: string | undefined,
defaultVal: number, defaultVal: number,
options?: { min?: number; optionsOverride?: number },
): number { ): number {
if (!envVar) { const parse = (fallback: number) => {
return defaultVal; if (!envVar) {
} return fallback;
const parsed = Number.parseInt(envVar, 10); }
const parsed = Number.parseInt(envVar, 10);
if (Number.isNaN(parsed)) { if (Number.isNaN(parsed)) {
return defaultVal; return fallback;
}
return parsed;
};
const parsed = parse(options?.optionsOverride ?? defaultVal);
if (options?.min) {
return Math.max(options?.min, parsed);
} }
return parsed; return parsed;
@ -38,22 +49,3 @@ export function parseEnvVarStrings(
return defaultVal; 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;
}