/// /// /// /** * @description 常用工具模块 */ declare module 'util' { /** * @description 按照指定的格式格式化变量 * * @param fmt 格式化字符串 * @param args 可选参数列表 * @return 返回格式化后的字符串 * */ function format(fmt: string, ...args: any[]): string; /** * @description 格式格式化变量 * * @param args 可选参数列表 * @return 返回格式化后的字符串 * */ function format(...args: any[]): string; /** * @description 从一个构造函数 constructor 继承原型函数到另一个。构造函数的原型将被设置为一个新的从超类(superConstructor)创建的对象。 * * @param constructor 初始的构造函数 * @param superConstructor 被继承的超类 * */ function inherits(constructor: any, superConstructor: any): void; /** * @description 函数返回 obj 的字符串表示,主要用于调试。 附加的 options 可用于改变格式化字符串的某些方面。 * * @param obj 指定需要处理的对象 * @param options 指定格式控制选项 * @return 返回格式化后的字符串 * */ function inspect(obj: FIBJS.GeneralObject, options?: FIBJS.GeneralObject): string; /** * @description 封装给定的函数,本函数仅为兼容,并不输出警告 * * @param fn 给定需要封装的函数 * @param msg 给定警告消息 * @param code 给定警告编号 * @return 如果封装结果 * */ function deprecate(fn: (...args: any[])=>any, msg: string, code?: string): (...args: any[])=>any; /** * @description 检测给定的变量是否不包含任何值(没有可枚举的属性) * * @param v 给定需要检测的变量 * @return 如果为空则返回 True * */ function isEmpty(v: any): boolean; /** * @description 检测给定的变量是否是数组 * * @param v 给定需要检测的变量 * @return 如果是数组则返回 True * */ function isArray(v: any): boolean; /** * @description 检测给定的变量是否是 Boolean * * @param v 给定需要检测的变量 * @return 如果是 Boolean 则返回 True * */ function isBoolean(v: any): boolean; /** * @description 检测给定的变量是否是 Null * * @param v 给定需要检测的变量 * @return 如果是 Null 则返回 True * */ function isNull(v: any): boolean; /** * @description 检测给定的变量是否是 Null 或者 Undefined * * @param v 给定需要检测的变量 * @return 如果是 Null 或者 Undefined 则返回 True * */ function isNullOrUndefined(v: any): boolean; /** * @description 检测给定的变量是否是数字 * * @param v 给定需要检测的变量 * @return 如果是数字则返回 True * */ function isNumber(v: any): boolean; /** * @description 检测给定的变量是否是 BigInt * * @param v 给定需要检测的变量 * @return 如果是数字则返回 True * */ function isBigInt(v: any): boolean; /** * @description 检测给定的变量是否是字符串 * * @param v 给定需要检测的变量 * @return 如果是字符串则返回 True * */ function isString(v: any): boolean; /** * @description 检测给定的变量是否是 Undefined * * @param v 给定需要检测的变量 * @return 如果是 Undefined 则返回 True * */ function isUndefined(v: any): boolean; /** * @description 检测给定的变量是否是正则对象 * * @param v 给定需要检测的变量 * @return 如果是正则对象则返回 True * */ function isRegExp(v: any): boolean; /** * @description 检测给定的变量是否是对象 * * @param v 给定需要检测的变量 * @return 如果是对象则返回 True * */ function isObject(v: any): boolean; /** * @description 检测给定的变量是否是日期对象 * * @param v 给定需要检测的变量 * @return 如果是日期对象则返回 True * */ function isDate(v: any): boolean; /** * @description 检测给定的变量是否是错误对象 * * @param v 给定需要检测的变量 * @return 如果是错误对象则返回 True * */ function isNativeError(v: any): boolean; /** * @description 检测给定的变量是否是原始类型 * * @param v 给定需要检测的变量 * @return 如果是原始类型则返回 True * */ function isPrimitive(v: any): boolean; /** * @description 检测给定的变量是否是Symbol类型 * * @param v 给定需要检测的变量 * @return 如果是Symbol类型则返回 True * */ function isSymbol(v: any): boolean; /** * @description 检测给定的变量是否是 DataView 类型 * * @param v 给定需要检测的变量 * @return 如果是 DataView 类型则返回 True * */ function isDataView(v: any): boolean; /** * @description 检测给定的变量是否是 External 类型 * * @param v 给定需要检测的变量 * @return 如果是 External 类型则返回 True * */ function isExternal(v: any): boolean; /** * @description 检测给定的变量是否是 Map 类型 * * @param v 给定需要检测的变量 * @return 如果是 Map 类型则返回 True * */ function isMap(v: any): boolean; /** * @description 检测给定的变量是否是 MapIterator 类型 * * @param v 给定需要检测的变量 * @return 如果是 MapIterator 类型则返回 True * */ function isMapIterator(v: any): boolean; /** * @description 检测给定的变量是否是 Promise 类型 * * @param v 给定需要检测的变量 * @return 如果是 Promise 类型则返回 True * */ function isPromise(v: any): boolean; /** * @description 检测给定的变量是否是 AsyncFunction 类型 * * @param v 给定需要检测的变量 * @return 如果是 AsyncFunction 类型则返回 True * */ function isAsyncFunction(v: any): boolean; /** * @description 检测给定的变量是否是 Set 类型 * * @param v 给定需要检测的变量 * @return 如果是 Set 类型则返回 True * */ function isSet(v: any): boolean; /** * @description 检测给定的变量是否是 SetIterator 类型 * * @param v 给定需要检测的变量 * @return 如果是 SetIterator 类型则返回 True * */ function isSetIterator(v: any): boolean; /** * @description 检测给定的变量是否是 TypedArray 类型 * * @param v 给定需要检测的变量 * @return 如果是 TypedArray 类型则返回 True * */ function isTypedArray(v: any): boolean; /** * @description 检测给定的变量是否是 Uint8Array 类型 * * @param v 给定需要检测的变量 * @return 如果是 Uint8Array 类型则返回 True * */ function isUint8Array(v: any): boolean; /** * @description 检测给定的变量是否是函数对象 * * @param v 给定需要检测的变量 * @return 如果是函数对象则返回 True * */ function isFunction(v: any): boolean; /** * @description 检测给定的变量是否是函数 Buffer 对象 * * @param v 给定需要检测的变量 * @return 如果是函数 Buffer 对象则返回 True * */ function isBuffer(v: any): boolean; /** * @description 查询指定对象是否包含给定的键 * * @param v 给定需要查询的对象 * @param key 指定需要查询的键 * @return 返回对象的全部键数组 * */ function has(v: any, key: string): boolean; /** * @description 查询指定对象的全部键数组 * * @param v 给定需要查询的对象 * @return 返回对象的全部键数组 * */ function keys(v: any): any[]; /** * @description 查询指定对象的全部值数组 * * @param v 给定需要查询的对象 * @return 返回对象的全部值数组 * */ function values(v: any): any[]; /** * @description 克隆给定变量,如果是对象或数组,则复制内容到新对象 * * @param v 给定要克隆的变量 * @return 返回克隆结果 * */ function clone(v: any): any; /** * @description 深度冻结一个对象,被冻结后的对象及其包含的对象都将不允许修改 * * @param v 指定要冻结的对象 * */ function deepFreeze(v: any): void; /** * @description 将一个或者多个对象的键值扩展到指定对象 * * @param v 指定要扩展的对象 * @param objs 指定一个或者多个用于扩展的对象 * @return 返回扩展的结果 * */ function extend(v: any, ...objs: any[]): any; /** * @description 将一个或者多个对象的键值扩展到指定对象,是 extend 的别名 * * @param v 指定要扩展的对象 * @param objs 指定一个或者多个用于扩展的对象 * @return 返回扩展的结果 * */ function _extend(v: any, ...objs: any[]): any; /** * @description 返回一个object副本,只过滤出指定键的属性值 * * @param v 指定要过滤的对象 * @param objs 指定一个或者多个用于选择的键 * @return 返回过滤的结果 * */ function pick(v: any, ...objs: any[]): FIBJS.GeneralObject; /** * @description 返回一个object副本,只过排除指定键的属性值 * * @param v 指定要过滤的对象 * @param keys 指定一个或者多个用于排除的键 * @return 返回排除的结果 * */ function omit(v: any, ...keys: any[]): FIBJS.GeneralObject; /** * @description 获取数组的第一个元素 * * @param v 给定要获取的数组 * @return 返回获取的元素 * */ function first(v: any): any; /** * @description 获取数组的开始多个元素 * * @param v 给定要获取的数组 * @param n 指定要获取的元素个数 * @return 返回获取的元素数组 * */ function first(v: any, n: number): any; /** * @description 获取数组的第后一个元素 * * @param v 给定要获取的数组 * @return 返回获取的元素 * */ function last(v: any): any; /** * @description 获取数组的结尾多个元素 * * @param v 给定要获取的数组 * @param n 指定要获取的元素个数 * @return 返回获取的元素数组 * */ function last(v: any, n: number): any; /** * @description 获取数组的元素去重后的副本 * * @param v 给定要去重的数组 * @param sorted 指定数组是否排序,如果指定数组排序,将使用快速算法 * @return 返回去重元素后的数组 * */ function unique(v: any, sorted?: boolean): any[]; /** * @description 将一个或者多个数组的值合并成一个值唯一的数组 * * @param arrs 指定一个或者多个用于合并的数组 * @return 返回合并的结果 * */ function union(...arrs: any[]): any[]; /** * @description 返回一个包含 arr 数组中排除一个或者多个数组元素的交集 * * @param arrs 指定一个或者多个用于计算交集的数组 * @return 返回计算交集的结果 * */ function intersection(...arrs: any[]): any[]; /** * @description 将一个嵌套多层的数组(嵌套可以是任何层数)转换为只有一层的数组。 如果你传递 shallow 参数,数组将只减少一维的嵌套。 * * @param arr 指定需要转换的数组 * @param shallow 指定是否只减少一维的嵌套,缺省为 false * @return 返回转换的结果 * */ function flatten(arr: any, shallow?: boolean): any[]; /** * @description 返回一个包含 arr 数组中排除一个或者多个元素后的数组 * * @param arr 指定需要排除的数组 * @param els 指定一个或者多个用于排除的元素 * @return 返回排除的结果 * */ function without(arr: any, ...els: any[]): any[]; /** * @description 返回一个包含 arr 数组中排除 without 数组元素之后的数组 * * @param list 指定需要排除的数组 * @param arrs 指定用于排除的一个或者多个数组 * @return 返回排除的结果 * */ function difference(list: any[], ...arrs: any[]): any[]; /** * @description 遍历 list 中的所有元素,按顺序用遍历输出每个元素。如果传递了 context 参数,则把 iterator 绑定到 context 对象上。每次调用 iterator 都会传递三个参数:(element, index, list) * * @param list 指定需要遍历的列表或对象 * @param iterator 指定用于遍历的回调函数 * @param context 指定调用 iterator 时绑定的 context 对象 * @return 返回 list 本身 * */ function each(list: any, iterator: (...args: any[])=>any, context?: any): any; /** * @description 通过变换函数(iterator迭代器)把 list 中的每个值映射到一个新的数组中。如果传递了 context 参数,则把 iterator 绑定到 context 对象上。每次调用 iterator 都会传递三个参数:(element, index, list) * * @param list 指定需要变换的列表或对象 * @param iterator 指定用于变换的回调函数 * @param context 指定调用 iterator 时绑定的 context 对象 * @return 返回变换的结果 * */ function map(list: any, iterator: (...args: any[])=>any, context?: any): any[]; /** * @description 把 list中 元素归结为一个单独的数值。如果传递了 context 参数,则把 iterator 绑定到 context 对象上。每次调用 iterator 都会传递三个参数:(memo, element, index, list) * * @param list 指定需要归结的列表或对象 * @param iterator 指定用于归结的回调函数 * @param memo 指定归结的初始值 * @param context 指定调用 iterator 时绑定的 context 对象 * @return 返回归结的结果 * */ function reduce(list: any, iterator: (...args: any[])=>any, memo: any, context?: any): any; /** * @description LRU(least recently used) 缓存对象,参见 LruCache 对象。 */ const LruCache: typeof Class_LruCache; /** * @description 解析命令行字符串返回参数列表 * @param command 指定要解析的命令行字符串 * @return 返回解析出的参数列表 * */ function parseArgs(command: string): any[]; /** * @description 编译脚本为二进制代码 * util.compile 可以将脚本编译为 v8 内部运行数据块(非机器执行代码)。编译以后的代码,保存为 *.jsc 后,可以由 run 和 require 直接加载执行。 * * 由于编译之后,目标代码将不能逆向获取源代码,依赖于 Function.toString 的程序将不能正常运行。 * * @param srcname 指定要添加的脚本名称 * @param script 指定要编译的脚本代码 * @param mode 编译模式,0: module, 1: script, 2: worker,缺省为 0 * @return 返回编译出的二进制代码 * */ function compile(srcname: string, script: string, mode?: number): Class_Buffer; /** * @description 包裹 callback 或 async 函数为同步调用 * * util.sync 将 callback 函数或者 async 函数处理为 sync 函数,以方便调用。 * * callback 示例如下: * ```JavaScript * // callback * var util = require('util'); * * function cb_test(a, b, cb) { * setTimeout(() => { * cb(null, a + b); * }, 100); * } * * var fn_sync = util.sync(cb_test); * console.log(fn_sync(100, 200)); * ``` * async 示例如下: * ```JavaScript * // async/await * var util = require('util'); * * async function async_test(a, b) { * return a + b; * } * * var fn_sync = util.sync(async_test); * console.log(fn_sync(100, 200)); * ``` * 对于未标记为 async 的返回 promise 的函数,可以手动指定 sync 模式: * ```JavaScript * // async/await * var util = require('util'); * * function async_test(a, b) { * return new Promise(function (resolve, reject) { * resolve(a + b); * }); * } * * var fn_sync = util.sync(async_test, true); * console.log(fn_sync(100, 200)); * ``` * * @param func 给定需要包裹的函数 * @param async_func 指定以 async 函数方式处理 func,为 false 则自动判断 * @return 返回同步运行的函数 * */ function sync(func: (...args: any[])=>any, async_func?: boolean): (...args: any[])=>any; /** * @description 包裹 callback 函数为 async 调用 * * util.promisify 将 callback 函数处理为 async 函数,以方便调用。 * * callback 示例如下: * ```JavaScript * // callback * var util = require('util'); * * function cb_test(a, b, cb) { * setTimeout(() => { * cb(null, a + b); * }, 100); * } * * var fn_sync = util.promisify(cb_test); * console.log(async fn_sync(100, 200)); * ``` * * @param func 给定需要包裹的函数 * @return 返回 async 函数 * */ function promisify(func: (...args: any[])=>any): (...args: any[])=>any; /** * @description 包裹 async 函数为 callback 调用 * * util.callbackify 将 async 函数处理为 callback 函数,以方便调用。 * * async 示例如下: * ```JavaScript * // async * var util = require('util'); * * async function async_test(a, b) { * return a + b; * } * * var fn_callback = util.callbackify(async_test); * * fn_callback(100, 200, (err, result) => { * console.log(result); * }); * ``` * * @param func 给定需要包裹的函数 * @return 返回 callback 函数 * */ function callbackify(func: (...args: any[])=>any): (...args: any[])=>any; /** * @description 查询当前引擎及各组件版本信息 * * ```JavaScript * { * "fibjs": "0.25.0", * "clang": "9.1", * "date": "Jun 12 2018 07:22:40", * "vender": { * "ev": "4.24", * "expat": "2.2.5", * "gd": "2.2.4", * "jpeg": "8.3", * "leveldb": "1.17", * "mongo": "0.7", * "pcre": "8.21", * "png": "1.5.4", * "mbedtls": "2.6.1", * "snappy": "1.1.2", * "sqlite": "3.23.0", * "tiff": "3.9.5", * "uuid": "1.6.2", * "v8": "6.7.288.20", * "v8-snapshot": true, * "zlib": "1.2.7", * "zmq": "3.1" * } * } * ``` * @return 返回组件版本对象 * */ function buildInfo(): FIBJS.GeneralObject; }