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:
parent
d881de3e10
commit
9767b48df7
@ -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,
|
||||
},
|
||||
),
|
||||
};
|
||||
|
@ -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);
|
||||
});
|
||||
});
|
||||
|
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user