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 {
|
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,
|
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
};
|
};
|
||||||
|
@ -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);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -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;
|
|
||||||
}
|
|
||||||
|
Loading…
Reference in New Issue
Block a user