hexo/node_modules/utility/index.d.ts

593 lines
14 KiB
TypeScript

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;
}