
Product
Introducing Pull Request Stories to Help Security Teams Track Supply Chain Risks
Socket’s new Pull Request Stories give security teams clear visibility into dependency risks and outcomes across scanned pull requests.
A comprehensive JavaScript/TypeScript utility library with modular design, complete test coverage, and optimized performance
一个包含常用工具函数的 JavaScript/TypeScript 库,按功能模块分类,便于按需引入。
# 使用 npm
npm install fezbox
# 使用 pnpm
pnpm add fezbox
# 使用 yarn
yarn add fezbox
import { deepClone, formatFileSize, relativeTime, outsideClick, getQueryObject } from 'fezbox'
// 深拷贝对象
const original = { a: 1, b: { c: 2 } }
const cloned = deepClone(original)
// 格式化文件大小
const size = formatFileSize(1048576) // "1.00 Mb"
// 相对时间格式化
const time = relativeTime(new Date(Date.now() - 3600000)) // "1小时前"
// 获取所有查询参数
const params = getQueryObject('https://example.com?id=123&name=test')
console.log(params) // { id: '123', name: 'test' }
// 外部点击监听
const element = document.getElementById('myElement')
const unlisten = outsideClick.listen({
domRefs: element,
handler: () => console.log('点击了外部区域')
})
// 只引入需要的模块,减少包体积
import { deepClone } from 'fezbox/data'
import { formatFileSize, fetchFile, uploadFileByUrl } from 'fezbox/file'
import { relativeTime } from 'fezbox/time'
import { getQueryParam, getQueryObject } from 'fezbox/url'
import { decryptAES } from 'fezbox/crypto'
import { outsideClick } from 'fezbox/dom'
import { QRCodeScriptLoader } from 'fezbox/qr'
import { getLocalStorage, setCookie, getSessionStorage } from 'fezbox/storage'
深拷贝函数,基于 JSON 序列化实现,支持对象和数组的深度复制。
import { deepClone } from 'fezbox/data'
const obj = { a: 1, b: { c: 2 } }
const cloned = deepClone(obj)
文件操作相关工具,包括文件大小格式化、文件获取和上传。
import { formatFileSize, fetchFile, uploadFileByUrl } from 'fezbox/file'
// 格式化文件大小
formatFileSize(1048576) // "1.00 Mb"
// 获取文件
const file = await fetchFile('https://example.com/image.jpg', 'image.jpg')
// 上传文件
const uploadedUrl = await uploadFileByUrl(
'https://example.com/image.jpg',
async (formData) => {
const response = await fetch('/upload', { method: 'POST', body: formData })
return await response.json()
}
)
相对时间格式化,支持多种输入格式。
import { relativeTime } from 'fezbox/time'
relativeTime(new Date()) // "刚刚"
relativeTime(new Date(Date.now() - 3600000)) // "1小时前"
relativeTime(new Date(Date.now() - 86400000)) // "1天前"
URL 查询参数处理工具。
import { getQueryObject, getQueryParam } from 'fezbox/url'
// 获取所有查询参数
const params = getQueryObject('https://example.com?id=123&name=test')
// 返回: { id: '123', name: 'test' }
// 获取单个参数
const id = getQueryParam('id', 'https://example.com?id=123&name=test') // "123"
AES 解密功能。
import { decryptAES } from 'fezbox/crypto'
const decrypted = decryptAES('encryptedData', 'my-secret-key')
DOM 操作相关工具。
import { outsideClick } from 'fezbox/dom'
const element = document.getElementById('dropdown')
const unlisten = outsideClick.listen({
domRefs: element,
handler: () => {
console.log('点击了下拉菜单外部')
element.classList.remove('open')
}
})
二维码生成与转换工具,支持自动依赖管理。
特性:
import { QRCodeScriptLoader } from 'fezbox/qr'
// 零配置使用,依赖会自动加载
const loader = new QRCodeScriptLoader({
sandbox: true, // 沙箱模式(推荐)
autoCompress: true, // 自动压缩
debug: true // 调试模式
})
// 生成二维码数据
const result = await loader.generateQRCodeData('Hello World')
if (result.success) {
console.log('生成成功:', result.data)
} else {
console.log('生成失败:', result.error)
}
// 检查功能可用性
console.log('生成功能:', loader.isFeatureAvailable('generate'))
console.log('解析功能:', loader.isFeatureAvailable('parse'))
console.log('压缩功能:', loader.isFeatureAvailable('compress'))
// 从图片解析二维码
const code = await loader.parseQRCodeFromImageData(imageData)
提供统一的本地存储解决方案,包括 localStorage、sessionStorage 和 Cookie 的操作。
特性:
import { getLocalStorage, setLocalStorage, setSessionStorage, getSessionStorage, setCookie, getCookie } from 'fezbox/storage'
// localStorage 基本操作
setLocalStorage('user', { name: 'John', age: 25 })
const user = getLocalStorage('user')
// 带过期时间的存储(1小时后过期)
setLocalStorage('tempData', { session: 'abc123' }, {
expires: Date.now() + 60 * 60 * 1000
})
// sessionStorage 操作
setSessionStorage('formData', { name: 'John', email: 'john@example.com' })
const formData = getSessionStorage('formData')
// Cookie 操作
setCookie('theme', 'dark', { expires: 7, secure: true })
const theme = getCookie('theme')
// 类型安全
interface UserInfo { id: number; name: string }
const userInfo = getLocalStorage<UserInfo>('userInfo')
📖 完整API文档: 查看 docs/api/ 目录 了解每个模块的详细使用说明
crypto-js
(用于加密功能)dayjs
(用于时间处理)vitest
(测试框架)typescript
(类型支持)vite
(构建工具)eslint
+ prettier
(代码质量)# 安装依赖
pnpm install
# 开发模式 (监听文件变化)
pnpm run dev
# 构建
pnpm run build
# 运行测试
pnpm test
# 生成覆盖率报告
pnpm run test:coverage
# 类型检查
pnpm run typecheck
# 代码格式化
pnpm run format
# 代码检查
pnpm run lint
# 修复代码问题
pnpm run lint:fix
项目包含完整的测试覆盖:
运行测试并查看覆盖率报告:
pnpm run test:coverage
覆盖率报告会生成在 coverage/
目录下。
欢迎提交 Issue 和 Pull Request!
git checkout -b feature/AmazingFeature
)git commit -m 'Add some AmazingFeature'
)git push origin feature/AmazingFeature
)MIT
FAQs
A comprehensive JavaScript/TypeScript utility library with modular design, complete test coverage, and optimized performance
The npm package fezbox receives a total of 11 weekly downloads. As such, fezbox popularity was classified as not popular.
We found that fezbox demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Product
Socket’s new Pull Request Stories give security teams clear visibility into dependency risks and outcomes across scanned pull requests.
Research
/Security News
npm author Qix’s account was compromised, with malicious versions of popular packages like chalk-template, color-convert, and strip-ansi published.
Research
Four npm packages disguised as cryptographic tools steal developer credentials and send them to attacker-controlled Telegram infrastructure.