| export = utility; | |
| export as namespace utility; | |
| 
 | |
| 
 | |
| // --------------------------------- | |
| /** | |
|  * @description Types definition by github@ddzy | |
|  * @see https://github.com/node-modules/utility | |
|  */ | |
| // ------------------------------------ | |
|  | |
| 
 | |
| declare namespace utility { | |
| 
 | |
|   /** | |
|    * ---------------0_0---------------- | |
|    * @description Defines For Array | |
|    * @see https://github.com/node-modules/utility | |
|    * ---------------0^0---------------- | |
|    */ | |
| 
 | |
| 
 | |
|   /** | |
|    * Static object define | |
|    */ | |
|   type ObjStatic = { [key: string]: any }; | |
| 
 | |
| 
 | |
|   /** | |
|    * Array random slice with items count. | |
|    * @param {Array} arr | |
|    * @param {Number} num, number of sub items. | |
|    * @return {Array} | |
|    */ | |
|   function randomSlice( | |
|     arr: any[], | |
|     num?: number, | |
|   ): any[]; | |
| 
 | |
|   /** | |
|    * Remove one exists element from an array | |
|    * @param {Array} arr | |
|    * @param  {Number} index - remove element index | |
|    * @return {Array} the array instance | |
|    */ | |
|   function spliceOne( | |
|     arr: any[], | |
|     index: number, | |
|   ): any[]; | |
| 
 | |
| 
 | |
|   /** | |
|    * --------------------0_0---------------- | |
|    * @description Defines For Crypto | |
|    * @see https://github.com/node-modules/utility#md5 | |
|    * --------------0^0------------------ | |
|    */ | |
| 
 | |
| 
 | |
|   /** | |
|    * hash | |
|    * | |
|    * @param {String} method hash method, e.g.: 'md5', 'sha1' | |
|    * @param {String|Buffer|Object} s | |
|    * @param {String} [format] output string format, could be 'hex' or 'base64'. default is 'hex'. | |
|    * @return {String} md5 hash string | |
|    * @public | |
|    */ | |
|   function hash( | |
|     method: 'md5' | 'sha1', | |
|     s: string | Buffer | Object, | |
|     format?: 'hex' | 'base64', | |
|   ): string; | |
| 
 | |
|   /** | |
|    * md5 hash | |
|    * | |
|    * @param {String|Buffer|Object} s | |
|    * @param {String} [format] output string format, could be 'hex' or 'base64'. default is 'hex'. | |
|    * @return {String} md5 hash string | |
|    * @public | |
|    */ | |
|   function md5( | |
|     s: string | Buffer | Object, | |
|     format?: 'hex' | 'base64', | |
|   ): string; | |
| 
 | |
|   /** | |
|    * sha1 hash | |
|    * | |
|    * @param {String|Buffer|Object} s | |
|    * @param {String} [format] output string format, could be 'hex' or 'base64'. default is 'hex'. | |
|    * @return {String} sha1 hash string | |
|    * @public | |
|    */ | |
|   function sha1( | |
|     s: string | Buffer | Object, | |
|     format?: 'hex' | 'base64', | |
|   ): string; | |
| 
 | |
|   /** | |
|    * sha256 hash | |
|    * | |
|    * @param {String|Buffer|Object} s | |
|    * @param {String} [format] output string format, could be 'hex' or 'base64'. default is 'hex'. | |
|    * @return {String} sha256 hash string | |
|    * @public | |
|    */ | |
|   function sha256( | |
|     s: string | Buffer | Object, | |
|     format?: 'hex' | 'base64', | |
|   ): string; | |
| 
 | |
|   /** | |
|    * HMAC algorithm. | |
|    * | |
|    * Equal bash: | |
|    * | |
|    * ```bash | |
|    * $ echo -n "$data" | openssl dgst -binary -$algorithm -hmac "$key" | openssl $encoding | |
|    * ``` | |
|    * | |
|    * @param {String} algorithm, dependent on the available algorithms supported by the version of OpenSSL on the platform. | |
|    *   Examples are 'sha1', 'md5', 'sha256', 'sha512', etc. | |
|    *   On recent releases, `openssl list-message-digest-algorithms` will display the available digest algorithms. | |
|    * @param {String} key, the hmac key to be used. | |
|    * @param {String|Buffer} data, content string. | |
|    * @param {String} [encoding='base64'] | |
|    * @return {String} digest string. | |
|    */ | |
|   function hmac( | |
|     algorithm: string, | |
|     key: string, | |
|     data: string | Buffer, | |
|     encoding?: 'base64' | string, | |
|   ): string; | |
| 
 | |
|   /** | |
|    * Base64 encode string. | |
|    * | |
|    * @param {String|Buffer} s | |
|    * @param {Boolean} [urlsafe=false] Encode string s using a URL-safe alphabet, | |
|    *   which substitutes - instead of + and _ instead of / in the standard Base64 alphabet. | |
|    * @return {String} base64 encode format string. | |
|    */ | |
|   function base64encode( | |
|     s: string | Buffer, | |
|     urlsafe?: boolean, | |
|   ): string; | |
| 
 | |
|   /** | |
|    * Base64 string decode. | |
|    * | |
|    * @param {String} encode, base64 encoding string. | |
|    * @param {Boolean} [urlsafe=false] Decode string s using a URL-safe alphabet, | |
|    *   which substitutes - instead of + and _ instead of / in the standard Base64 alphabet. | |
|    * @param {encoding} [encoding=utf8] if encoding = buffer, will return Buffer instance | |
|    * @return {String|Buffer} plain text. | |
|    */ | |
|   function base64decode( | |
|     encode: string, | |
|     urlsafe?: boolean, | |
|     encoding?: 'utf8' | 'buffer', | |
|   ): string | Buffer; | |
| 
 | |
| 
 | |
|   /** | |
|    * ----------------0_0----------------- | |
|    * @description Defines For Date | |
|    * @see https://github.com/node-modules/utility#date-utils | |
|    * ---------------0^0------------------ | |
|    */ | |
| 
 | |
| 
 | |
|   interface IYYYYMMDDHHmmssStaticOptions { | |
|     dateSep?: string, | |
|     timeSep?: string, | |
|   } | |
|   interface IDateStructStaticReturns { | |
|     YYYYMMDD: number, | |
|     H: number, | |
|   } | |
| 
 | |
|   /** | |
|    * Access log format date. format: `moment().format('DD/MMM/YYYY:HH:mm:ss ZZ')` | |
|    * | |
|    * @return {String} | |
|    */ | |
|   function accessLogDate(d: Date): string; | |
| 
 | |
|   /** | |
|    * Normal log format date. format: `moment().format('YYYY-MM-DD HH:mm:ss.SSS')` | |
|    * | |
|    * @return {String} | |
|    */ | |
|   function logDate( | |
|     d: string | Date, | |
|     msSep?: string, | |
|   ): string; | |
| 
 | |
|   /** | |
|    * `moment().format('YYYY-MM-DD HH:mm:ss')` format date string. | |
|    * | |
|    * @return {String} | |
|    */ | |
|   function YYYYMMDDHHmmss( | |
|     d: Date | string, | |
|     options?: IYYYYMMDDHHmmssStaticOptions, | |
|   ): string; | |
| 
 | |
|   /** | |
|    * `moment().format('YYYY-MM-DD')` format date string. | |
|    * | |
|    * @return {String} | |
|    */ | |
|   function YYYYMMDD( | |
|     d: string | Date, | |
|     sep?: string, | |
|   ): string; | |
| 
 | |
|   /** | |
|    * return datetime struct. | |
|    * | |
|    * @return {Object} date | |
|    *  - {Number} YYYYMMDD, 20130401 | |
|    *  - {Number} H, 0, 1, 9, 12, 23 | |
|    */ | |
|   function datestruct( | |
|     now?: Date, | |
|   ): IDateStructStaticReturns; | |
| 
 | |
|   /** | |
|    * Get Unix's timestamp in seconds. | |
|    * @return {Number} | |
|    */ | |
|   function timestamp( | |
|     t?: string | number, | |
|   ): number | Date; | |
| 
 | |
| 
 | |
|   /** | |
|    * ---------------0_0------------------- | |
|    * @description Defines For Function Method | |
|    * @see https://github.com/node-modules/utility#others | |
|    * ---------------0^0-------------------- | |
|    */ | |
| 
 | |
| 
 | |
|   /** | |
|    * A empty function. | |
|    * | |
|    * @return {Function} | |
|    * @public | |
|    */ | |
|   function noop(): () => any; | |
| 
 | |
|   /** | |
|    * Get a function parameter's names. | |
|    * | |
|    * @param {Function} func | |
|    * @param {Boolean} [useCache], default is true | |
|    * @return {Array} names | |
|    */ | |
|   function getParamNames( | |
|     func: (...args: any[]) => any, | |
|     cache?: boolean, | |
|   ): string[]; | |
| 
 | |
| 
 | |
|   /** | |
|    * ----------------0_0----------------------- | |
|    * @description Defines For JSON methods | |
|    * @see https://github.com/node-modules/utility#json | |
|    * -----------------0^0----------------------- | |
|    */ | |
| 
 | |
| 
 | |
|   interface IJSONStaticOptions { | |
|     space?: number | string, | |
|     replacer?: ( | |
|       key: string, | |
|       value: any, | |
|     ) => any, | |
|   } | |
| 
 | |
|   function strictJSONParse( | |
|     str: string, | |
|   ): ObjStatic; | |
| 
 | |
|   function readJSONSync( | |
|     filepath: string, | |
|   ): ObjStatic; | |
| 
 | |
|   function writeJSONSync( | |
|     filepath: string, | |
|     str: string | ObjStatic, | |
|     options?: IJSONStaticOptions, | |
|   ): void; | |
| 
 | |
|   function readJSON( | |
|     filepath: string, | |
|   ): Promise<any>; | |
| 
 | |
|   function writeJSON( | |
|     filepath: string, | |
|     str: string | ObjStatic, | |
|     options?: IJSONStaticOptions, | |
|   ): Promise<any>; | |
| 
 | |
|   function mkdir( | |
|     dir: string, | |
|   ): Promise<any>; | |
| 
 | |
| 
 | |
|   /** | |
|    * ------------------0_0------------------------ | |
|    * @description Defines For Number Methods | |
|    * @see https://github.com/node-modules/utility#number-utils | |
|    * --------------------0^0---------------------- | |
|    */ | |
| 
 | |
| 
 | |
|   /** | |
|    * CONSTANTS STATIC | |
|    */ | |
|   const MAX_SAFE_INTEGER: number; | |
|   const MIN_SAFE_INTEGER: number; | |
|   const MAX_SAFE_INTEGER_STR: string; | |
|   const MAX_SAFE_INTEGER_STR_LENGTH: number; | |
| 
 | |
|   /** | |
|    * Detect a number string can safe convert to Javascript Number. | |
|    * | |
|    * @param {String} s number format string, like `"123"`, `"-1000123123123123123123"` | |
|    * @return {Boolean} | |
|    */ | |
|   function isSafeNumberString( | |
|     s: string, | |
|   ): boolean; | |
| 
 | |
|   /** | |
|    * Convert string to Number if string in safe Number scope. | |
|    * | |
|    * @param {String} s number format string. | |
|    * @return {Number|String} success will return Number, otherise return the original string. | |
|    */ | |
|   function toSafeNumber( | |
|     s: string | number, | |
|   ): number | string; | |
| 
 | |
|   /** | |
|    * Produces a random integer between the inclusive `lower` and `upper` bounds. | |
|    * | |
|    * @param {Number} lower The lower bound. | |
|    * @param {Number} upper The upper bound. | |
|    * @return {Number} Returns the random number. | |
|    */ | |
|   function random( | |
|     lower?: number, | |
|     upper?: number, | |
|   ): number; | |
| 
 | |
| 
 | |
|   /** | |
|    * ------------------0_0-------------------------- | |
|    * @description Defines For Object Methods | |
|    * @see https://github.com/node-modules/utility#objectassign | |
|    * -------------------0^0------------------------ | |
|    */ | |
| 
 | |
| 
 | |
|   /** | |
|    * High performance assign before node6 | |
|    * @param {Object} target - target object | |
|    * @param {Object | Array} objects - object assign from | |
|    * @return {Object} - return target object | |
|    */ | |
|   function assign( | |
|     target: ObjStatic, | |
|     objects: ObjStatic | any[], | |
|   ): ObjStatic; | |
| 
 | |
|   function has( | |
|     obj: ObjStatic, | |
|     prop: string, | |
|   ): boolean; | |
| 
 | |
|   function getOwnEnumerables( | |
|     obj: ObjStatic, | |
|     ignoreNull?: boolean, | |
|   ): string[]; | |
| 
 | |
|   /** | |
|    * generate a real map object(clean object), no constructor, no __proto__ | |
|    * @param {Object} [obj] - init object, optional | |
|    * @return {Object} | |
|    */ | |
|   function map( | |
|     obj?: ObjStatic, | |
|   ): ObjStatic; | |
| 
 | |
| 
 | |
|   /** | |
|    * -----------------0_0--------------------------- | |
|    * @description Defines For Optimize Methods | |
|    * @see https://github.com/node-modules/utility#argumentstoarray | |
|    * -----------------0^0------------------------ | |
|    */ | |
| 
 | |
|   interface ITryStaticReturns { | |
|     error: Error | undefined, | |
|     value: any, | |
|   } | |
| 
 | |
|   const UNSTABLE_METHOD: { | |
|     /** | |
|      * optimize try catch | |
|      * @param {Function} fn | |
|      * @return {Object} | |
|      *   - {Error} error | |
|      *   - {Mix} value | |
|      */ | |
|     try: ( | |
|       fn: (...args: any[]) => any, | |
|     ) => ITryStaticReturns, | |
|   }; | |
| 
 | |
|   /** | |
|    * avoid if (a && a.b && a.b.c) | |
|    * @param {Object} obj | |
|    * @param {...String} keys | |
|    * @return {Object} | |
|    */ | |
|   function dig( | |
|     obj: ObjStatic, | |
|     ...args: any[], | |
|   ): any; | |
| 
 | |
|   /** | |
|    * optimize arguments to array | |
|    * @param {Arguments} args | |
|    * @return {Array} | |
|    */ | |
|   function argumentsToArray( | |
|     ...args: any[], | |
|   ): any[]; | |
| 
 | |
| 
 | |
|   /** | |
|    * -------------------0_0--------------------- | |
|    * @description Defines For Polyfill Methods | |
|    * @see https://github.com/node-modules/utility#timers | |
|    * -------------------0^0------------------- | |
|    */ | |
| 
 | |
| 
 | |
|   function setImmediate( | |
|     callback: (...args: any[]) => void, | |
|     ...args: any[], | |
|   ): NodeJS.Immediate; | |
|   function setImmediate( | |
|     fn: (...args: any[]) => any, | |
|     ...args: any[], | |
|   ): void; | |
| 
 | |
| 
 | |
|   /** | |
|    * ------------------0_0-------------------- | |
|    * @description Defines For String Methods | |
|    * @see https://github.com/node-modules/utility#others | |
|    * -------------------0^0--------------------- | |
|    */ | |
| 
 | |
| 
 | |
|   interface IReplaceInvalidHttpHeaderCharReturns { | |
|     val: string, | |
|     invalid: boolean, | |
|   } | |
| 
 | |
|   function randomString( | |
|     length?: number, | |
|     charSet?: string | string[], | |
|   ): string; | |
| 
 | |
|   /** | |
|    * split string to array | |
|    * @param  {String} str | |
|    * @param  {String} [sep] default is ',' | |
|    * @return {Array} | |
|    */ | |
|   function split( | |
|     str: string, | |
|     sep?: string, | |
|   ): string[]; | |
| 
 | |
|   /** | |
|    * always optimized | |
|    */ | |
|   function splitAlwaysOptimized( | |
|     ...args: any[], | |
|   ): string[]; | |
| 
 | |
|   /** | |
|    * Replace string | |
|    * | |
|    * @param  {String} str | |
|    * @param  {String|RegExp} substr | |
|    * @param  {String|Function} newSubstr | |
|    * @return {String} | |
|    */ | |
|   function replace( | |
|     str: string, | |
|     substr: string | RegExp, | |
|     newSubstr: string | ((...args: any[]) => any), | |
|   ): string; | |
| 
 | |
|   /** | |
|    * Replace invalid http header characters with replacement | |
|    * | |
|    * @param  {String} val | |
|    * @param  {String|Function} replacement - can be `function(char)` | |
|    * @return {Object} | |
|    */ | |
|   function replaceInvalidHttpHeaderChar( | |
|     val: string, | |
|     replacement?: string | ((...args: any[]) => any) | |
|   ): IReplaceInvalidHttpHeaderCharReturns; | |
| 
 | |
|   /** | |
|    * Detect invalid http header characters in a string | |
|    * | |
|    * @param {String} val | |
|    * @return {Boolean} | |
|    */ | |
|   function includesInvalidHttpHeaderChar( | |
|     val: string, | |
|   ): boolean; | |
| 
 | |
| 
 | |
|   /** | |
|    * ------------------0_0---------------------- | |
|    * @description Defines For Web Methods | |
|    * @see https://github.com/node-modules/utility#decode-and-encode | |
|    * ------------------0^0------------------------ | |
|    */ | |
| 
 | |
| 
 | |
|   /** | |
|    * Escape the given string of `html`. | |
|    * | |
|    * @param {String} html | |
|    * @return {String} | |
|    * @public | |
|    */ | |
|   function escape( | |
|     test: string, | |
|   ): string; | |
| 
 | |
|   /** | |
|    * Unescape the given string from html | |
|    * @param {String} html | |
|    * @param {String} type | |
|    * @return {String} | |
|    * @public | |
|    */ | |
|   function unescape( | |
|     html: string, | |
|     type?: string, | |
|   ): string | ObjStatic; | |
| 
 | |
|   /** | |
|    * Safe encodeURIComponent, won't throw any error. | |
|    * If `encodeURIComponent` error happen, just return the original value. | |
|    * | |
|    * @param {String} text | |
|    * @return {String} URL encode string. | |
|    */ | |
|   function encodeURIComponent( | |
|     text: string, | |
|   ): string; | |
| 
 | |
|   /** | |
|    * Safe decodeURIComponent, won't throw any error. | |
|    * If `decodeURIComponent` error happen, just return the original value. | |
|    * | |
|    * @param {String} encodeText | |
|    * @return {String} URL decode original string. | |
|    */ | |
|   function decodeURIComponent( | |
|     encodeText: string, | |
|   ): string; | |
| }
 |