@gitborlando/utils
v5.2.0
Published
JavaScript/TypeScript 实用工具集合。
Maintainers
Keywords
Readme
Gitborlando Utils
JavaScript/TypeScript 实用工具集合。
这是 v5 文档。v5 删除了旧版的大量历史 API,只保留当前源码实际导出的工具。
安装
npm install @gitborlando/utils主入口
import {
clampIndex,
clone,
createFuncAOP,
deleteFromArray,
firstOne,
flushFuncs,
getSet,
iife,
jsonFy,
jsonParse,
lastOne,
Log,
loopFor,
matchCase,
miniId,
objectId,
objKeys,
safeTimeout,
suffixOf,
ThisAsAny,
} from '@gitborlando/utils'数组工具
firstOne([1, 2, 3]) // 1
firstOne(new Set([1, 2, 3])) // 1
lastOne([1, 2, 3]) // 3
lastOne(new Set([1, 2, 3])) // 3
const items = ['a', 'b', 'c']
deleteFromArray(items, 'b') // ['a', 'c']
clampIndex([1, 2, 3], -1) // 0
clampIndex([1, 2, 3], 10) // 3
loopFor(['A', 'B', 'C'], (current, next, prev, index) => {
console.log(current, next, prev, index)
})
const callbacks = new Set([() => console.log('done')])
flushFuncs(callbacks) // 执行后清空 Set缓存工具
getSet 支持 Map、WeakMap 和普通对象缓存。
const cache = new Map<string, number>()
const value = getSet(cache, 'total', () => {
return expensiveCalculate()
})
const refreshed = getSet(cache, 'total', () => expensiveCalculate(), [
userId,
version,
])通用工具
const result = iife(() => 1 + 2)
const message = matchCase('loading', {
loading: '加载中',
_default: '未知状态',
})
const copied = clone({ a: 1, b: { c: 2 } })
jsonFy({ ok: true })
jsonParse('{"ok":true}', { ok: false })
objKeys({ name: 'Ada', age: 36 })
const id = objectId({})
const suffix = suffixOf('avatar.PNG', true) // 'png'
const shortId = miniId(8)
const wrapped = createFuncAOP({
before: (...args) => console.log(args),
after: (value) => console.log(value),
})((count: number) => count + 1)
safeTimeout(() => console.log('next tick'))
const value = Log({ ok: true }, 'debug')Browser 入口
import {
isLeftMouse,
isRightMouse,
listen,
preventDefault,
stopPropagation,
} from '@gitborlando/utils/browser'
const unlisten = listen('click', (event) => {
if (isLeftMouse(event)) {
console.log('left')
}
})
const onSubmit = preventDefault((event) => {
console.log(event)
})
const onClick = stopPropagation()
unlisten()React 入口
import {
useClean,
useHTMLElement,
useMount,
withSuspense,
} from '@gitborlando/utils/react'
function Demo() {
const inputRef = useHTMLElement('input')
useMount(() => {
console.log('mounted')
})
useClean(() => {
console.log('cleanup')
})
return <input ref={inputRef} />
}
export const SuspendedDemo = withSuspense(Demo, null)Node 入口
import { ensureDir, getDirname } from '@gitborlando/utils/node'
const dirname = getDirname()
ensureDir('./dist/assets')发布
pnpm build
pnpm publish