You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					593 lines
				
				14 KiB
			
		
		
			
		
	
	
					593 lines
				
				14 KiB
			| 
											3 years ago
										 | 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; | ||
|  | } |