topkat-utils
Version:
A comprehensive collection of TypeScript/JavaScript utility functions for common programming tasks. Includes validation, object manipulation, date handling, string formatting, and more. Zero dependencies, fully typed, and optimized for performance.
82 lines (77 loc) • 3.75 kB
TypeScript
export type BaseTypes = 'objectId' | 'dateInt6' | 'dateInt' | 'dateInt8' | 'dateInt12' | 'time' | 'humanReadableTimestamp' | 'date' | 'dateObject' | 'array' | 'object' | 'buffer' | 'string' | 'function' | 'boolean' | 'number' | 'bigint' | 'year' | 'email' | 'any';
export declare function issetOr(...elms: any[]): boolean;
export declare function isEmptyOrNotSet(...elms: any[]): boolean;
export declare function isDateObject(variable: any[]): boolean;
/** Check all values are set */
export declare function checkAllObjectValuesAreEmpty(o: Record<string, any>): boolean;
/** Throw an error in case data passed is not a valid ctx */
export declare function checkCtxIntegrity(ctx: Record<string, any>): void;
/**
## VALIDATOR
@name validator
@description support multiple names, multiple values and multiple type check
@option if nameString ends by $ sign it is considered optional
@function validator([Objects])
@return {error|true/false|testMode} depend on mode (see prop mode)
@param {} mode normal (default) | test (TODO) | boolean
@param {} name 'myName' || [{myVar1: 'blah, myvar2: myvar2}], support multiple names / values
@param {} value myVar,
@param {string} myVar myVar, instead of name / value
@param {array} in ['blah', 'otherPossibleValue', true], equal ONE OF THESE values
@param {any} eq exactly equal to in, both support string or array of values
@param {any} neq not in, both support string or array of values
@param {number} lte 3, less than or equal
@param {number} gte 1, greater or equal
@param {number} lt 3, less than
@param {number} gt 1, greater
@param {string|string[]} type
* possibleTypes: object, number, string, boolean, array, date, dateInt8, dateInt12, dateInt6, time, objectId (mongo), humanReadableTimestamp, buffer
* Notes: multiples value is an OR, /!\ Array is type 'array' and not 'object' like in real JS /!\
@param {regExp} regexp /regexp/, test against regexp
@param {number} minLength for string, array or number length
@param {number} maxLength
@param {number} length
@param {boolean} optional default false
@param {boolean} emptyAllowed default false (to use if must be set but can be empty)
@param {boolean} mustNotBeSet this one must not be set
@param {any} includes check if array or string includes value (like js .includes())
@example
validator(
{ myNumber : 3, type: 'number', gte: 1, lte: 3 }, // use the name directly as a param
{ name: 'email', value: 'nameATsite.com', regexp: /[^\sAT]+AT[^\sAT]+\.[^\sAT]/},
{ name: [{'blahVar': blahVarValue, 'myOtherVar': myOtherVarValue}], type: 'string'} // multiple names for same check
)
----------------------------------------*/
export type ValidatorObject = {
name?: string;
value?: any;
type?: BaseTypes;
eq?: any;
neq?: any;
in?: any[];
lt?: number;
gt?: number;
lte?: number;
gte?: number;
length?: number;
minLength?: number;
maxLength?: number;
emptyAllowed?: boolean;
regexp?: RegExp;
mustNotBeSet?: boolean;
isset?: boolean;
optional?: boolean;
isArray?: boolean;
includes?: any;
[k: string]: any;
};
export declare function validator(...paramsToValidate: ValidatorObject[]): void;
/** Same as validator but return a boolean
* See {@link validator}
*/
export declare function isValid(...paramsToValidate: ValidatorObject[]): boolean;
/** Default types + custom types
* 'objectId','dateInt6','dateInt','dateInt8','dateInt12','time','humanReadableTimestamp','date','array','object','buffer','string','function','boolean','number','bigint',
*/
export declare function isType(value: any, type: BaseTypes): boolean;
export declare function validatorReturnErrArray(...paramsToValidate: ValidatorObject[]): [string?, object?];