mirror of
https://github.com/Unleash/unleash.git
synced 2025-01-20 00:08:02 +01:00
refactor: remove check for feature naming data object (#4745)
We already check for its presence before doing anything. We don't need to check it twice (we're not Santa Claus, after all).
This commit is contained in:
parent
d838b5f2c3
commit
94b65542e8
@ -2,52 +2,43 @@ import { IFeatureNaming } from '../../types/model';
|
||||
|
||||
const compileRegex = (pattern: string) => new RegExp(`^${pattern}$`);
|
||||
|
||||
const disallowedStrings = [' ', '\\t', '\\s', '\\n', '\\r', '\\f', '\\v'];
|
||||
|
||||
// Helper functions for error messages
|
||||
const whitespaceError = (pattern: string) =>
|
||||
`Feature flag names cannot contain whitespace. You've provided a feature flag naming pattern that contains a whitespace character: "${pattern}". Remove any whitespace characters from your pattern.`;
|
||||
|
||||
const exampleMismatchError = (example: string, pattern: string) =>
|
||||
`You've provided a feature flag naming example ("${example}") that doesn't match your feature flag naming pattern ("${pattern}").`;
|
||||
|
||||
const invalidValueError = (valueName: string) =>
|
||||
`You've provided a feature flag naming ${valueName}, but no feature flag naming pattern. You must specify a pattern to use a ${valueName}.`;
|
||||
|
||||
export const checkFeatureNamingData = (
|
||||
featureNaming?: IFeatureNaming,
|
||||
featureNaming: IFeatureNaming,
|
||||
):
|
||||
| { state: 'valid' }
|
||||
| { state: 'invalid'; reasons: [string, ...string[]] } => {
|
||||
if (featureNaming) {
|
||||
const { pattern, example, description } = featureNaming;
|
||||
const errors: string[] = [];
|
||||
const disallowedStrings = [
|
||||
' ',
|
||||
'\\t',
|
||||
'\\s',
|
||||
'\\n',
|
||||
'\\r',
|
||||
'\\f',
|
||||
'\\v',
|
||||
];
|
||||
const { pattern, example, description } = featureNaming;
|
||||
const errors: string[] = [];
|
||||
|
||||
if (pattern) {
|
||||
if (disallowedStrings.some((str) => pattern.includes(str))) {
|
||||
errors.push(
|
||||
`Feature flag names can not contain whitespace. You've provided a feature flag naming pattern that contains a whitespace character: "${pattern}". Remove any whitespace characters from your pattern.`,
|
||||
);
|
||||
} else if (example && !example.match(compileRegex(pattern))) {
|
||||
errors.push(
|
||||
`You've provided a feature flag naming example ("${example}") that doesn't match your feature flag naming pattern ("${pattern}"). Please provide an example that matches your supplied pattern. Bear in mind that the pattern must match the whole example, as if it were surrounded by '^' and "$".`,
|
||||
);
|
||||
}
|
||||
} else {
|
||||
if (example) {
|
||||
errors.push(
|
||||
"You've provided a feature flag naming example, but no feature flag naming pattern. You must specify a pattern to use an example.",
|
||||
);
|
||||
}
|
||||
if (disallowedStrings.some((str) => pattern?.includes(str))) {
|
||||
errors.push(whitespaceError(pattern as string));
|
||||
} else if (pattern && example && !compileRegex(pattern).test(example)) {
|
||||
errors.push(exampleMismatchError(example, pattern));
|
||||
}
|
||||
|
||||
if (description) {
|
||||
errors.push(
|
||||
"You've provided a feature flag naming pattern description, but no feature flag naming pattern. You must have a pattern to use a description.",
|
||||
);
|
||||
}
|
||||
}
|
||||
if (!pattern && example) {
|
||||
errors.push(invalidValueError('example'));
|
||||
}
|
||||
|
||||
const [first, ...rest] = errors;
|
||||
if (first) {
|
||||
return { state: 'invalid', reasons: [first, ...rest] };
|
||||
}
|
||||
if (!pattern && description) {
|
||||
errors.push(invalidValueError('description'));
|
||||
}
|
||||
|
||||
const [first, ...rest] = errors;
|
||||
if (first) {
|
||||
return { state: 'invalid', reasons: [first, ...rest] };
|
||||
}
|
||||
|
||||
return { state: 'valid' };
|
||||
|
Loading…
Reference in New Issue
Block a user