npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@mt-utils/tools

v1.0.6

Published

明途公共工具库

Downloads

192

Readme

@mt-utils/tools工具库

欢迎使用@mt-utils/tools工具库,旨在提供一系列实用的函数,以简化日常开发任务。

安装

使用 pnpm 安装最新版本的 @mt-utils/tools:

pnpm install @mt-utils/tools

功能概览

chunkArray

chunkArray<T>(array: T[], chunkSize: number = 1): T[][]

这个函数接受一个数组和一个指定的块大小,然后返回一个二维数组。每个子数组包含原数组中的一部分元素,大小由 chunkSize 参数决定。如果数组的长度不是 chunkSize 的整数倍,最后一个块可能包含的元素少于 chunkSize

参数

  • array (Array): 要分割的源数组。
  • chunkSize (number): 每个块的大小,默认值为 1。

返回

(Array): 返回一个二维数组,每个子数组是原数组的一部分元素。

例子

chunkArray(['a', 'b', 'c', 'd'], 2)
// => [['a', 'b'], ['c', 'd']]

chunkArray(['a', 'b', 'c', 'd', 'e'], 3)
// => [['a', 'b', 'c'], ['d', 'e']]

chunkArray([1, 2, 3, 4, 5], 4)
// => [[1, 2, 3, 4], [5]]

getUuid

getUuid(): string

利用 Web Crypto API,生成一个随机的 32 位无符号整数,并将其转换为一个基于 36 进制的字符串。这种格式的字符串通常用于标识,并且可以保证在很大范围内的唯一性。

返回

(string): 返回一个随机生成的 UUID 字符串。

例子

const uuid = getUuid()
console.log(uuid) // 输出类似于 "1gann4cq9b6r"

createWorker

createWorker(fun: (...args: any) => any): Worker

创建并返回一个新的 Worker 实例,fun指的的任意函数,也就是要在 Worker 中执行的 JavaScript 函数。

参数

  • fun (Function): 要在 Worker 中执行的 JavaScript 函数。

返回

(Worker): 返回新创建的 Worker 实例。

例子

const myWorker = createWorker(function () {
  console.log('Hello from the Web Worker!')
})

closeWorker

关闭并终止传入 Web Worker 实例的执行,通常配合createWorker一起使用

closeWorker(worker: Worker | undefined | null): void

参数

  • worker (Worker | undefined | null): 要关闭的 Worker 实例。

例子

const myWorker = createWorker(function () {
  console.log('Hello from the Web Worker!')
})
// 当不再需要 Worker 时
closeWorker(myWorker)

isWebSocketSupported

isWebSocketSupported(): boolean

检查当前浏览器是否支持 WebSocket

返回

(boolean): 如果浏览器支持 WebSocket,则返回 true;否则返回 false

例子

if (isWebSocketSupported()) {
  console.log('WebSocket is supported!')
} else {
  console.log('WebSocket is not supported!')
}

createWebSocket

createWebSocket(url: string): WebSocket

创建一个新的 WebSocket 实例。此函数接受一个 WebSocket 服务器的 URL 并创建一个新的 WebSocket 实例。

参数

  • url (string): WebSocket 服务器的 URL。

返回

(WebSocket): 返回一个新的 WebSocket 实例。

例子

const socket = createWebSocket('ws://example.com')
// 使用 socket 进行通信...

isNumber

isNumber(value: unknown): value is number

判断给定的值是否是一个数字。

参数

  • value (unknown): 要检查的值。

返回

(value is number): 如果 value 是一个数字,则返回 true,否则返回 false

例子

isNumber(123) // => true
isNumber('123') // => false

isString

isString(value: unknown): value is string

判断给定的值是否是一个字符串。

参数

  • value (unknown): 要检查的值。

返回

(value is string): 如果 value 是一个字符串,则返回 true,否则返回 false

例子

isString('hello') // => true
isString(123) // => false

isObject

isObject(value: unknown): value is object

判断给定的值是否是一个对象。

参数

  • value (unknown): 要检查的值。

返回

(value is object): 如果 value 是一个普通对象,则返回 true,否则返回 false

例子

isObject({ a: 1 }) // => true
isObject(null) // => false

isArray

isArray(value: unknown): value is Array<unknown>

判断给定的值是否是一个数组。

参数

  • value (unknown): 要检查的值。

返回

(value is Array<unknown>): 如果 value 是一个数组,则返回 true,否则返回 false

例子

isArray([1, 2, 3]) // => true
isArray('123') // => false

checkArrayEmpty

checkArrayEmpty(value: unknown): value is Array<unknown>

检查数组是否为空。

参数

  • value (unknown): 要检查的值。

返回

(value is Array<unknown>): 如果 value 是一个数组并且长度为0,则返回 true,否则返回 false

例子

checkArrayEmpty([]) // => true
checkArrayEmpty([1, 2, 3]) // => false

checkObjectEmpty

checkObjectEmpty(value: unknown): value is Record<string, unknown>

检查对象是否为空。一个空对象是指没有任何自身属性的对象。

参数

  • value (unknown): 要检查的值。

返回

(value is Record<string, unknown>): 如果 value 是一个空对象,则返回 true,否则返回 false

例子

checkObjectEmpty({}) // => true
checkObjectEmpty({ a: 1 }) // => false

checkEmpty

checkEmpty(value: unknown): boolean

检查给定的值是否为空。空值包括:空字符串、空数组、空对象、null 或 undefined。

参数

  • value (unknown): 要检查的值。

返回

(boolean): 如果 value 是空的,则返回 true,否则返回 false

例子

checkEmpty('') // => true
checkEmpty(null) // => true
checkEmpty({}) // => true
checkEmpty([]) // => true
checkEmpty('text') // => false

checkEmptyNotZero

checkEmptyNotZero(value: unknown): boolean

检查给定的值是否为空,但不包括数字 0。空值包括:空字符串、空数组、空对象、null 或 undefined。

参数

  • value (unknown): 要检查的值。

返回

(boolean): 如果 value 是空的,且不是数字 0,则返回 true,否则返回 false

例子

checkEmptyNotZero('') // => true
checkEmptyNotZero(0) // => false
checkEmptyNotZero(null) // => true
checkEmptyNotZero({}) // => true
checkEmptyNotZero([]) // => true
checkEmptyNotZero('text') // => false

deepFreeze

deepFreeze<T extends Record<string, any>>(value: T): Readonly<T>

深度冻结一个对象,防止其属性及嵌套属性被修改。递归地冻结对象的所有属性,包括嵌套对象,确保对象的状态不可变。

参数

  • value (T): 需要被冻结的对象。

返回

  • (Readonly<T>): 返回深度冻结后的对象。

例子

const obj = { name: 'Kimi', details: { age: 30 } };
const frozenObj = deepFreeze(obj);
console.log(Object.isFrozen(frozenObj)); // 输出:true
console.log(Object.isFrozen(frozenObj.details)); // 输出:true

copyText

copyText(text: string): Promise<string>

将指定的文本复制到剪贴板。

参数

  • text (string): 需要复制到剪贴板的文本。

返回

  • Promise<string>: 一个 Promise 对象,当文本成功复制到剪贴板时解析为被复制的文本,如果复制失败则拒绝 Promise。

例子

copyText('Hello, World!').then(
  (text) => console.log('Text copied to clipboard:', text),
  (error) => console.error('Failed to copy text:', error)
);