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 {
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,
},
),
};

View File

@ -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);
});
});

View File

@ -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;
}