@doctormckay/stdlib

中文文档
2.10.0发布于 2024/01/16MITCommonJS近 30 天下载 32.8万

在Node.js,我发现通常有用的“标准库”

中文使用文档
文档目录66 节
  1. 独有( 阵列[, 严格])
  2. 司马发
  3. 构造器([通 )
  4. 等待( 回调)
  5. 等待阿辛克 ()
  6. 时空 ()
  7. Async 队列
  8. 构造器( 工人[, 货币] )
  9. 暂停( c)
  10. 恢复( )
  11. 杀( )
  12. 推(项目[,回调])
  13. 货币
  14. 劳动者
  15. 运行
  16. 已暂停
  17. 长度
  18. 排水量
  19. 空
  20. 错误
  21. 最少使用缓存
  22. 构造器( 最大项目, gcInterval)
  23. 添加( 键, val)
  24. 获取( 键)
  25. 删除( 键)
  26. 获取 Keys ()
  27. 检查GC( )
  28. gc( ) (中文( ) )
  29. TTLCACH 语言
  30. 构造器( ttlMilliseconds)
  31. 添加( 键, 值 [, ttlMilliseconds] )
  32. 获取( 键)
  33. 删除( 键)
  34. 获取 Keys ()
  35. 清除( c)
  36. 队列
  37. 构造器( )
  38. 推( 项目)
  39. 弹出( b)
  40. 空 ()
  41. 长度
  42. 堆栈
  43. 构造器( )
  44. 推( 项目)
  45. 弹出( b)
  46. 空 ()
  47. 长度
  48. md5(输入[,输出格式])
  49. sha1( 输入[, 输出格式] )
  50. sha256(输入 [, 输出表格])
  51. crc32( 输入[, 输出表格] )
  52. 获取Proxy Agent( 安全性 [, 代理 Url [, 代理 Timeout ] ] )
  53. Http 客户端
  54. inttoString( ip) 键盘 (单位)
  55. 字符串输入( ipString)
  56. 克隆( obj)
  57. 深等分(obj1,obj2[,严格])
  58. 应用数据目录( 段落)
  59. 命令Args(输入)
  60. 承诺( 超时, 执行者)
  61. callback 保证( callbackArgs, callback, [是可选的,] 执行器)
  62. 超时调用Callback Promitise(超时调用,调用BallbackArgs,调用Ballback,[是可选的…
  63. 睡眠 Async( 睡眠马里秒)
  64. 进度栏( 值、 最大值、 宽度、 显示百分比)
  65. 时间戳
  66. 人可读Bytes(字节[, 二进制])

标准库

这个模块是供我个人使用的 包含一些我相信节点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.

版本与发布记录

@doctormckay/stdlib 共发布 45 个版本,首次发布于 2017/11/04;过去 12 个月发布了 0 个版本。

版本发布日期距今
2.10.0latest2024/01/162 年前
2.9.12023/10/223 年前
2.9.02023/10/203 年前
2.8.12023/10/023 年前
2.8.02023/10/023 年前
2.7.12023/09/133 年前

其他发布通道:ver1 → 1.16.1。

关于 @doctormckay/stdlib 的常见问题

@doctormckay/stdlib 是什么?

在Node.js,我发现通常有用的“标准库”

如何安装 @doctormckay/stdlib?

在项目目录运行 npm install @doctormckay/stdlib,或使用 pnpm add / yarn add / bun add。

@doctormckay/stdlib 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/doctormckay__stdlib 是否存在。

@doctormckay/stdlib 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@doctormckay/stdlib 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=12.22.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@doctormckay/stdlib 可以商用吗?

@doctormckay/stdlib 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@doctormckay/stdlib 的下载量有多少?

根据 npm 官方下载统计,@doctormckay/stdlib 在 2026/10/13 – 2026/11/11 这 30 天内被下载 327,550 次,日均约 10,918 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@doctormckay/stdlib 还在维护吗?

最新版本 2.10.0 发布于 2024/01/16(2 年前);至今共发布 45 个版本,其中过去 12 个月发布了 0 个;首次发布于 2017/11/04。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。