UNPKG

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
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?];