Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/constants.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { validateSplits } from './utils';
import { validateFeatureFlags } from './utils';

// The string below is a marker and will be replaced by the real version number. DO NOT CHANGE
export const VERSION: string = 'react-' + 'REACT_SDK_VERSION_NUMBER';
Expand All @@ -17,7 +17,7 @@ export const CONTROL_WITH_CONFIG: SplitIO.TreatmentWithConfig = {

export const getControlTreatmentsWithConfig = (splitNames: unknown): SplitIO.TreatmentsWithConfig => {
// validate split Names
const validatedSplitNames = validateSplits(splitNames);
const validatedSplitNames = validateFeatureFlags(splitNames);

// return empty object if the returned value is false
if (!validatedSplitNames) return {};
Expand Down
26 changes: 13 additions & 13 deletions src/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -103,13 +103,13 @@ export function checkHooks(message: string): boolean {

// Input validation utils that will be replaced eventually

export function validateSplits(maybeSplits: unknown, listName = 'split names'): false | string[] {
if (Array.isArray(maybeSplits) && maybeSplits.length > 0) {
export function validateFeatureFlags(maybeFeatureFlags: unknown, listName = 'split names'): false | string[] {
if (Array.isArray(maybeFeatureFlags) && maybeFeatureFlags.length > 0) {
const validatedArray: string[] = [];
// Remove invalid values
maybeSplits.forEach((maybeSplit) => {
const splitName = validateSplit(maybeSplit);
if (splitName) validatedArray.push(splitName);
maybeFeatureFlags.forEach((maybeFeatureFlag) => {
const featureFlagName = validateFeatureFlag(maybeFeatureFlag);
if (featureFlagName) validatedArray.push(featureFlagName);
});

// Strip off duplicated values if we have valid split names then return
Expand All @@ -129,19 +129,19 @@ export function initAttributes(client: SplitIO.IBrowserClient, attributes?: Spli

const TRIMMABLE_SPACES_REGEX = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/;

function validateSplit(maybeSplit: unknown, item = 'split name'): false | string {
if (maybeSplit == undefined) {
function validateFeatureFlag(maybeFeatureFlag: unknown, item = 'split name'): false | string {
if (maybeFeatureFlag == undefined) {
console.log(`[ERROR] you passed a null or undefined ${item}, ${item} must be a non-empty string.`);
} else if (!isString(maybeSplit)) {
} else if (!isString(maybeFeatureFlag)) {
console.log(`[ERROR] you passed an invalid ${item}, ${item} must be a non-empty string.`);
} else {
if (TRIMMABLE_SPACES_REGEX.test(maybeSplit)) {
console.log(`[WARN] ${item} "${maybeSplit}" has extra whitespace, trimming.`);
maybeSplit = maybeSplit.trim();
if (TRIMMABLE_SPACES_REGEX.test(maybeFeatureFlag)) {
console.log(`[WARN] ${item} "${maybeFeatureFlag}" has extra whitespace, trimming.`);
maybeFeatureFlag = maybeFeatureFlag.trim();
}

if ((maybeSplit as string).length > 0) {
return maybeSplit as string;
if ((maybeFeatureFlag as string).length > 0) {
return maybeFeatureFlag as string;
} else {
console.log(`[ERROR] you passed an empty ${item}, ${item} must be a non-empty string.`);
}
Expand Down
2 changes: 1 addition & 1 deletion types/utils.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ export declare function getStatus(client: SplitIO.IBrowserClient | null): IClien
* @returns boolean indicating if React.useContext is available
*/
export declare function checkHooks(message: string): boolean;
export declare function validateSplits(maybeSplits: unknown, listName?: string): false | string[];
export declare function validateFeatureFlags(maybeFeatureFlag: unknown, listName?: string): false | string[];
/**
* Manage client attributes binding
*/
Expand Down