标准库
这个模块是供我个人使用的 包含一些我相信节点Js标准库的东西 应 有,但是没有.
但不要指望我注意功能要求(bug reports in though. 正如我在上面所说,这实际上只是为了我个人的用途(如在 @doctormckay npm中的一切) 名称空间).
目录
阵列
const {Arrays} = require('@doctormckay/stdlib');
import {unique} from '@doctormckay/stdlib/arrays';
独有( 阵列[, 严格])
array- 从中获取独特元素的阵列strict-可选的 过true使用严格的比较,或false用来进行微弱的比较。 在对大型阵列使用微弱比较时,性能会大幅提升. 默认false。 。 。 .
返回只包含输入数组中的独特元素的数组,顺序为它们首次出现的顺序 .
货币
司马发
const {Concurrency} = require('@doctormckay/stdlib');
import {Semaphore} from '@doctormckay/stdlib/concurrency';
let sem = new Concurrency.Semaphore();
仅确保一个(或若干个)同步任务的母体同时运行.
构造器([通 )
concurrency- 最高锁数 semaphore将允许一次。 可选,默认 1
创建一个带有某种货币限制的新司马phore.
等待( 回调)
callback- 等待结束时需要调用的职能release- 一个功能,你需要呼叫 一旦你完成释放 semaphore
等出自司马pho. 一旦空出,所提供的功能将被调用. 如果司马发已经自由了, 立即调用回话 .
一旦你完成处理 并准备好释放 semaphore,打电话 release()。 。 。 .
等待阿辛克 ()
返回解约后解约 。 承诺以功能解决 release,这个你
处理完毕后一定要打电话 准备释放血浆.
import {Semaphore} from '@doctormckay/stdlib/concurrency';
let sem = new Semaphore();
let release = await sem.waitAsync();
// do something
release();
时空 ()
回返 true 如果血浆是免费的,或者 false 如果不是的话。 如果有人打来电话的话,就自由了 wait() 将
导致立即援引回调.
数据结构
Async 队列
const {DataStructures} = require('@doctormckay/stdlib');
import {AsyncQueue} from '@doctormckay/stdlib/data_structures';
let queue = new DataStructures.AsyncQueue(processItemSomehow, 2);
自动从阵列中弹出第一个元素并运行自动同步的队列 worker 在它,到你的设定
concurrency 限制。 非常类似 与 async 模块的 队列。 。 。 .
构造器( 工人[, 货币] )
worker- 每次从队列跳出项目时都会引用的函数。 此项职能应采纳以下论点:item- 你推入队列的物品callback- 处理完成后您应该拨打的函数 。 这个回调的第一个论点应该是Error如果处理失败,或null如果成功的话。 其余的论据按原样转至push方法.
暂停( c)
暂停处决。 在暂停期间,没有新物品被解排并交给工人,但任何工人目前处理 将会被允许完成.
恢复( )
暂停后恢复行刑. 这将重新开始向工人移交任务.
杀( )
删除 drain 财务报告和审定财务报表 empty 调用并空出队列。 任何已经在工作的工人将获准
结束。 在你杀了AsyncQueee之后,你不能再使用它了. 任何进一步企图 push 输入 Async 队列
将扔出一个 Error。 。 。 .
推(项目[,回调])
item- 推到队列后方的项目callback- 处理完成后可选择的回调。 给回调的论据与工人的回调相同.
将新项目添加到队列中, 如果您还没有达到货币限制, 请立即将其交给 工人们.
货币
表示货币限额的财产 。 您可以为此指定更改货币限额, 但它只会 生效.
劳动者
包含工人函数的属性,用于处理队列中的项目. 如果 需要帮助.
运行
仅读财产,说明目前有多少工人在经营.
已暂停
仅读布尔属性, 表示队列是否暂停 .
长度
仅读属性,表示队列中还有多少项,等待分配给工人.
排水量
您可以指定一个函数的属性, 当队列为空且最后一个工人完成时, 函数将被调用 .
空
您可以指定一个函数的属性, 当队列中最后一个项目被交给工人时, 函数将被调用 .
错误
一个您可以指定一个函数的属性, 当工人完成错误时, 该函数将被调用 . 函数的第一个参数是出错,第二个是导致它的项目.
最少使用缓存
const {DataStructures} = require('@doctormckay/stdlib');
let cache = new DataStructures.LeastUsedCache(100, 30000);
构造器( 最大项目, gcInterval)
maxItems最小用户卡切在开始浏览旧东西前将存储的最大项数gcInterval- 垃圾收集努力之间的最低毫秒数
添加( 键, val)
key- 弦键val- 任何类型的价值
在缓存中添加新条目 .
获取( 键)
key- 弦键
从缓存中获取一个值 。 回返 null 如果钥匙不存在的话.
删除( 键)
key- 弦键
从缓存中删除一个值.
获取 Keys ()
返回包含缓存中所有密钥的数组.
检查GC( )
请检查date=中的日期值 (帮助) 垃圾收集是否必要,如果需要,请检查是否有必要.
gc( ) (中文( ) )
手动收集垃圾,不等待适当的超时.
TTLCACH 语言
const {DataStructures} = require('@doctormckay/stdlib');
let cache = new DataStructures.TTLCache(10000);
构造器( ttlMilliseconds)
ttlMilliseconds- 从缓存中取出物品的毫秒数.
添加( 键, 值 [, ttlMilliseconds] )
key- 弦键val- 任何类型的价值ttlMilliseconds-可选的 覆盖此项目的默认 TTL 。 如果省略,将使用默认的 TTL .
在缓存中添加新条目 .
获取( 键)
key- 弦键
从缓存中获取一个值 。 回返 null 如果钥匙不存在的话.
删除( 键)
key- 弦键
从缓存中删除一个值.
获取 Keys ()
返回包含缓存中所有密钥的数组.
清除( c)
清除整个缓存.
队列
const {DataStructures} = require('@doctormckay/stdlib');
let queue = new DataStructures.Queue();
只是一个基本的队列,作为双链接列表执行 .
构造器( )
推( 项目)
item- 推入后排的项目
将项目推入队列的后部。 返回队列的新长度 。 别名: enqueue(item)
弹出( b)
从队列中删除第一个项目并返回。 回返 null 如果队列为空。 别名: dequeue()
空 ()
删除并丢弃队列中的每一项目.
长度
显示队列中有多少项的属性 .
堆栈
const {DataStructures} = require('@doctormckay/stdlib');
let stack = new DataStructures.Stack();
只是一个基本堆栈,作为链接列表执行.
构造器( )
推( 项目)
item- 把它推到堆起的顶上
将一个项目推到堆栈上方。 返回堆栈新长度 .
弹出( b)
从堆栈中删除顶部项目并返回。 回返 null 如果堆栈是空的.
空 ()
删除并丢弃堆栈中的每个项目.
长度
显示堆栈中有多少项的属性 .
欢呼
const {Hashing} = require('@doctormckay/stdlib');
md5(输入[,输出格式])
input- 缓冲或字符串(如果字符串,将解释为UTF-8)outputForm- 表示表单的字符串 缓冲编码,或者替换buffer仅仅返回缓冲器。 默认hex。 。 。 .
返回输入的 MD5 散列 .
sha1( 输入[, 输出格式] )
input- 缓冲或字符串(如果字符串,将解释为UTF-8)outputForm- 表示表单的字符串 缓冲编码,或者替换buffer仅仅返回缓冲器。 默认hex。 。 。 .
返回输入的 SHA-1 散列 .
sha256(输入 [, 输出表格])
input- 缓冲或字符串(如果字符串,将解释为UTF-8)outputForm- 表示表单的字符串 缓冲编码,或者替换buffer仅仅返回缓冲器。 默认hex。 。 。 .
返回输入的SHA-256散列.
crc32( 输入[, 输出表格] )
input- 缓冲或字符串(如果字符串,将解释为UTF-8)outputForm- 表示表单的字符串 缓冲编码,或者替换buffer仅仅返回缓冲器或number以返回未签名的32位整数。 默认number。 。 。 .
返回输入的 CR32 散列 .
HTTP 密码
const {HTTP} = require('@doctormckay/stdlib');
import {getProxyAgent, HttpClient} from '@doctormckay/stdlib/http';
获取Proxy Agent( 安全性 [, 代理 Url [, 代理 Timeout ] ] )
secure- 说吧true如果此代理将被用于安全( HTTPS) 请求,或false如果不是的话proxyUrl- URL到你的代理, 或东西发疯只是得到false返回( 未显示代理)proxyTimeout- 连接代理服务器的超时, 以毫秒计; 默认值5000(5秒)
获得一个(HTTP QQ HTTPS). 可以通过 HTTP/HTTPS 代理服务器进行请求的代理 .
const StdLib = require('@doctormckay/stdlib');
const HTTPS = require('https');
HTTPS.get({
host: 'icanhazip.com',
port: 443,
agent: StdLib.HTTP.getProxyAgent(true, "http://user:[email protected]:12345", 10000)
}, (res) => {
if (res.statusCode != 200) {
console.log("HTTP error: " + res.statusCode);
}
res.on('data', (chunk) => {
console.log(chunk.toString('utf8'));
});
}).on('error', (err) => {
console.log(err);
});
Http 客户端
import {HttpClient, HttpClientOptions, HttpRequestOptions, HttpResponse} from '@doctormckay/stdlib/http';
let client = new HttpClient({
defaultHeaders: {'user-agent': 'my super cool app'},
cookieJar: true
});
let response = await client.request({
method: 'GET',
url: 'https://tools.learningcontainer.com/sample-json.json'
});
console.log(response.statusCode);
console.log(response.jsonBody);
IPv4 请检查url=值 (帮助)
const {Ipv4} = require('@doctormckay/stdlib');
inttoString( ip) 键盘 (单位)
ipInt- 整数格式的 Ipv4 地址
返回输入 IP 地址的点- 十进制字符串代表 .
字符串输入( ipString)
ipString- 一个点- 十进制字符串格式 Ipv4 地址
返回输入 IP 地址的32 位无符号的整数表示.
对象
const {Objects} = require('@doctormckay/stdlib');
克隆( obj)
obj- 克隆的某些价值(可能为任何类型)
克隆是一个值, 及其所有子对象.
深等分(obj1,obj2[,严格])
obj1- 第一件事比较obj2- 第二点比较strict-可选的 过true使用严格的平等检查(第1条)===) (中文(简体) ). 默认假.
检查两个值及其所有子对象是否相等,然后返回 true 或者说 false。 。 。 .
如果两个对象具有所有相同的属性,而每个相同的属性具有相同的价值,则这两个对象被认为是平等的. 除数组外,不考虑属性的顺序.
监督办
const {OS} = require('@doctormckay/stdlib');
应用数据目录( 段落)
params- 一个物体appName- 包含你应用程序名称的字符串appAuthor- 包含您的应用程序作者/供应商名称的字符串( 只用于 Windows )useRoaming-可选的.true在 Windows 上使用漫游应用程序数据( 默认)false(中文(简体) )
返回包含路径的字符串,用于存储应用程序特定数据.
分析
const {Parsing} = require('@doctormckay/stdlib');
命令Args(输入)
input- 输入字符串
解析一组命令式,无名的命令行参数,类似源引擎如何操作. 比方说
做它喜欢 --arg=foo -pbar 感觉就像 one two "three three" four。 。 。 .
更具体地说,参数在空格上被分割出来,但引文中的空格被解释为值的一部分. 引文,空格和后鞭可以被后鞭所逃脱. 参数之间的双空格崩溃,但 您可以用引用保留空值。 一些例子:
one two three => ["one", "two", "three"]
one two "three three" four => ["one", "two", "three three", "four"]
one two three four => ["one", "two", "three", "four"]
one two "" four five => ["one", "two", "", "four", "five"]
one two\ two three four => ["one", "two two", "three", "four"]
承诺
const {Promises} = require('@doctormckay/stdlib');
承诺( 超时, 执行者)
timeout- 超时数毫秒。 如果该值为 QQ 0,则超时功能被禁用.executor- 以签名执行承诺的操作(resolve, reject)
创建并返回一个在指定超时后自动拒绝的许诺, 如果该许诺尚未解决 .
如果承诺无效,那就以 Error 有信件的对象 Request timed out。 。 。 .
callback 保证( callbackArgs, callback, [是可选的,] 执行器)
callbackArgs- 一系列字符串,说明调用中参数的名称和顺序.null以传递整个承诺结果对象callback- 召回功能,如果没有,则变质isOptional- 说明回调是否可选。 如果不是,那么被拒绝的承诺将会崩溃(最终)应用. 默认false。 。 。 .executor- 以签名执行承诺的操作(resolve, reject)
创造并返回一个承诺,也可用于发射回调,既支持承诺,又支持回调.
超时调用Callback Promitise(超时调用,调用BallbackArgs,调用Ballback,[是可选的,]执行器)
timeout- 超时数毫秒。 如果该值为 QQ 0,则超时功能被禁用.callbackArgs- 一系列字符串,说明调用中参数的名称和顺序.null以传递整个承诺结果对象callback- 召回功能,如果没有,则变质isOptional- 说明回调是否可选。 如果不是,那么被拒绝的承诺将会崩溃(最终)应用. 默认false。 。 。 .executor- 以签名执行承诺的操作(resolve, reject)
创建并返回具有两者属性的许诺 timeoutPromise 财务报告和审定财务报表 callbackPromise。 。 。 .
睡眠 Async( 睡眠马里秒)
sleepMilliseconds- 时间,以毫秒计, 之后的承诺应该解决
返回指定延迟后解决的承诺.
渲染
const {Rendering} = require('@doctormckay/stdlib');
进度栏( 值、 最大值、 宽度、 显示百分比)
value- 作为数字的进度栏的当前值maxValue- 进步栏的最大值,作为数字barWidth- 字符栏的宽度,包括方括号showPercentage- 通过true以显示条在其中心位置的当前百分比(默认)false(中文(简体) )
返回包含 ASCII 进度栏的字符串。 在使用时取得最佳结果 showPercentage, (中文(简体) ), barWidth 应该是
一个奇数.
时间
const {Time} = require('@doctormckay/stdlib');
时间戳
以格式返回含有本地时区当前24小时时间的字符串 YYYY-MM-DD HH:MM:SS。 。 。 .
单位
const {Units} = require('@doctormckay/stdlib');
人可读Bytes(字节[, 二进制])
bytes- 字节数binary- 通过true如果您想要使用基础-1024系统(即MiB而不是MB). 默认false
返回输入字节数的可读字符串表示,例如12.5 MB.