import { AuthType } from 'librechat-data-provider'; /** * Checks if the given value is truthy by being either the boolean `true` or a string * that case-insensitively matches 'true'. * * @param value - The value to check. * @returns Returns `true` if the value is the boolean `true` or a case-insensitive * match for the string 'true', otherwise returns `false`. * @example * * isEnabled("True"); // returns true * isEnabled("TRUE"); // returns true * isEnabled(true); // returns true * isEnabled("false"); // returns false * isEnabled(false); // returns false * isEnabled(null); // returns false * isEnabled(); // returns false */ export function isEnabled(value?: string | boolean | null | undefined): boolean { if (typeof value === 'boolean') { return value; } if (typeof value === 'string') { return value.toLowerCase().trim() === 'true'; } return false; } /** * Checks if the provided value is 'user_provided'. * * @param value - The value to check. * @returns - Returns true if the value is 'user_provided', otherwise false. */ export const isUserProvided = (value?: string): boolean => value === AuthType.USER_PROVIDED; /** * @param values */ export function optionalChainWithEmptyCheck( ...values: (string | number | undefined)[] ): string | number | undefined { for (const value of values) { if (value !== undefined && value !== null && value !== '') { return value; } } return values[values.length - 1]; } /** * Escapes special characters in a string for use in a regular expression. * @param str - The string to escape. * @returns The escaped string safe for use in RegExp. */ export function escapeRegExp(str: string): string { return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); }