jsm-utilities
Version:
A utilities library.
179 lines (178 loc) • 9.7 kB
TypeScript
export * from "./common";
import * as commonUtils from './common';
declare const utilities: {
combineArrays: (arg: string[][], separator?: string) => string[];
chunkArray: <T>(arr: T[], chunkSize: number) => T[][];
applyOnChunkedArray: <T, R>(arr: T[] | undefined, chunkSize: number, callback: (chArr: T[], chunkIndex: number) => Promise<R>) => Promise<void>;
transformTimeRangeToDates(timeRange: string, currentDate?: Date, rangeIn?: "past" | "future"): false | {
start: Date;
end: Date;
};
isDateWithinLastNSeconds: (date: Date, seconds: number) => boolean;
isDateWithinLastNMinutes: (date: Date, minutes: number) => boolean;
isDateWithinLastNHours: (date: Date, hours: number) => boolean;
isDateWithinLastNDays: (date: Date, days: number) => boolean;
isDateWithinLastNWeeks: (date: Date, weeks: number) => boolean;
isDateWithinLastNMonths: (date: Date, months: number) => boolean;
isDateWithinLastNYears: (date: Date, years: number) => boolean;
isDateWithinLastNTimeRange: (date: Date, timeRange: string) => boolean;
isDateRangObject: (obj: any) => obj is {
start: Date;
end: Date;
};
getSecondsDifference(endDate: Date, startDate: Date): number;
millisecondsToTimeString: (milli: number) => string;
isEntityObject: (obj: any) => obj is {
_id: string;
};
generateErrorFromHttpException: (error: Jsm.Core.Utils.Api.Response.Error, status: number, statusText: string) => Error;
errorToObject: (error: typeof import("jsm-exceptions").JsmException | import("joi").ValidationError | Error | commonUtils.AxiosError | Jsm.Core.Utils.Api.Response.Error) => Jsm.Core.Utils.Api.Response.ErrorObject | undefined;
fetchRemoteFileAsBlob(url: string): Promise<Blob>;
createFileObjectFromRemote(url: string, filename: string): Promise<File>;
getMimeType(filePath: string, fromExtension?: boolean): Promise<string | false>;
getFileTypeGroup<M extends keyof typeof commonUtils.mimetypeToFileTypeGroup>(mimetype: M): (typeof commonUtils.mimetypeToFileTypeGroup)[M] | null;
mimetypeToFileTypeGroup: {
readonly 'image/jpeg': "image";
readonly 'image/png': "image";
readonly 'image/gif': "image";
readonly 'image/bmp': "image";
readonly 'image/webp': "image";
readonly 'image/svg+xml': "image";
readonly 'image/tiff': "image";
readonly 'image/vnd.microsoft.icon': "image";
readonly 'application/pdf': "document";
readonly 'application/vnd.openxmlformats-officedocument.wordprocessingml.document': "document";
readonly 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': "document";
readonly 'application/vnd.openxmlformats-officedocument.presentationml.presentation': "document";
readonly 'application/vnd.ms-excel': "document";
readonly 'text/csv': "document";
readonly 'application/msword': "document";
readonly 'application/json': "data";
readonly 'application/xml': "data";
readonly 'text/plain': "text";
readonly 'video/mp4': "video";
readonly 'video/mpeg': "video";
readonly 'video/quicktime': "video";
readonly 'video/webm': "video";
readonly 'video/x-msvideo': "video";
readonly 'audio/mpeg': "audio";
readonly 'audio/ogg': "audio";
readonly 'audio/wav': "audio";
readonly 'audio/aac': "audio";
readonly 'audio/midi': "audio";
readonly 'application/zip': "archive";
readonly 'application/x-rar-compressed': "archive";
readonly 'application/x-7z-compressed': "archive";
readonly 'application/x-tar': "archive";
readonly 'text/html': "web";
readonly 'text/css': "web";
readonly 'application/javascript': "web";
};
sanitizeObject(obj: any, cache?: WeakMap<WeakKey, any>): any;
removeUndefinedAttributes(object: any): any;
defaults: <T extends object, Y extends object = Partial<T>>(x: T, y: Y, options?: import("deepmerge").Options) => import("utility-types").Assign<import("utility-types").Diff<T, Y>, import("utility-types").DeepRequired<Y>>;
getItemIdsFromOldAndNewData: <T extends string | string[] | null>(new_value?: T, old_value?: T) => T;
isDevelopmentDev: () => boolean;
isProductionDev: () => boolean;
isNumberRange(variable: any): variable is {
min?: number;
max?: number;
};
roundNumberDecimals: (num: number, decimals?: number) => number;
deepSanitizeObjectValues(value: any): any;
unflattenObject(flatObj: Record<string, any>): Record<string, any>;
deletePropertyRecursively<T extends object, P extends keyof T>(obj: T, property: P): void;
deepMergeUnlessNull<X extends object, Y extends object>(x: X, y: Y): X & Y;
replaceNullAndUndefined<T>(x: T, y: Partial<T>): T;
mergeAddresses(address1?: Partial<Jsm.Core.Utils.Entity.Snapshots.Locations.Address> | null, address2?: Partial<Jsm.Core.Utils.Entity.Snapshots.Locations.Address> | null): Jsm.Core.Utils.Entity.Snapshots.Locations.Address | undefined;
transformObjectToString: (obj: any) => any;
flattenObjectKeys: (obj: Record<string, any>, prefix?: string) => string[];
flattenObject: (obj: Record<string, any>, prefix?: string) => Record<string, any>;
extractPartialObject: <D extends object, P extends keyof D>(obj: D, properties: P[]) => Pick<D, P>;
unflattenObjectArray: <T extends {
_id: string;
parent: string | null;
children: string[];
}>(items: T[]) => (T & {
children: T[];
})[];
ObjectUpdatedPropertyObject: typeof commonUtils.ObjectUpdatedPropertyObject;
ObjectUpdatedProperties: typeof commonUtils.ObjectUpdatedProperties;
getFileExtensionFromUrl(url: string): string | undefined;
respond<T>(res: Response, data: T, status?: number): void;
fixFiltersObject(filters?: any): any;
requestHasParam<P extends object>(payload: P, param: keyof P): boolean;
extractRequestSignificantData: (req: Request) => commonUtils.RequestData;
getAuthData: (req: Request) => Promise<Jsm.Core.Security.AuthData>;
fragmentObjectId(str: string): string;
ressembleObjectId(str: string): string;
sanitizeKeys: (obj: any) => any;
sanitizeObjectBooleans: (obj: any) => any;
hashString: (str: string) => number;
extractRawTextFromHtml: (html: string) => string;
isValidPhoneNumber(phoneNumber: string): boolean;
isValidAlgerianPhoneNumber(phoneNumber: string): boolean;
transformAlgerianPhoneNumberToStandardFormat(phoneNumber: string): string | null;
transformPhoneNumberToStandardFormat(phoneNumber: string): string | null;
capitalizeFirstLetter(str: string): string;
kebabToCamel(kebabString: string): string;
camelToKebab(camelCaseString: string): string;
camelToWords(camelCaseString: string): string;
pluralize(word: string): string;
singularize(word: string): string;
replaceAll(input: string, search: string, replace: string): string;
buildUserFullName(names: {
first_name?: string | null;
family_name?: string | null;
}): string;
generatePinCode(): string;
getSubstringUntilFirstWhitespaceAfterNChars(str: string, threshold?: number, dots?: string): string;
generateItemAlphabetCode(usedCodes: string[]): string;
countCharacterOccurrenceInString(str: string, character: string): number;
splitString: (str: string, use_plus_character?: boolean) => string[];
stringToBoolean: (str: string) => boolean;
addLeadingZeros: (num: number, totalLength: number) => string;
toPriceAmount: (str: string) => number;
isNumeric: (val: string) => boolean;
abbreviateNumber: (n: number) => string;
createBigram: (word: string) => string[];
checkSimilarity: (a: string, b: string) => number;
generateStringNgrams: (str: string) => string[];
formatBytes: (bytes: number, decimals?: number) => string;
generateSlug: (title: string) => Promise<string>;
toSnakeCase: (str: string) => string;
toKebabCase: (input: string) => string;
formatAmount: (x: number | {
amount: number;
separator?: string;
decimals?: number;
currency?: string;
}, separator?: string | {
separator?: string;
decimals?: number;
currency?: string;
}, decimals?: number, currency?: string) => string;
formatNotificationSpace: (space: string, infos: {
user?: string;
company?: string | null;
office?: string;
store?: string;
role?: string;
}) => string | null;
slugify(title: string): string;
Timer: typeof commonUtils.Timer;
initTimer: () => commonUtils.Timer;
delay: (ms: number) => Promise<null>;
sleep: (ms: number) => Promise<null>;
isTrackingId: (str: string | null) => false | string;
createTrackingId: (entity: string, shortcuts: {
[key: string]: string;
}, model?: import("mongoose").Model<{
[StringKey: string]: any;
[NumberKey: number]: any;
}> | null, custom_prefix?: string | null, parent_tracking_id?: string | null) => Promise<string>;
getEnvBrowser<T extends string | number | boolean | null>(key: string, defaultValue?: T): T extends string ? string & T : T extends number ? number : T extends boolean ? boolean : T | null;
generatePathWithParams<T extends Record<string, string | number | undefined | null>>(template: string, params: T): string;
getJsmRouteTree<Space extends string>(MENU_ITEMS: Jsm.Core.UI.RouteItems<Space>, childNode: Jsm.Core.UI.RouteItem<Space>): Jsm.Core.UI.RouteItem<Space>[];
};
export default utilities;