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

common-toolbox

v0.0.10

Published

Very practical utility library for JavaScript business projects.

Downloads

5

Readme

Common-toolbox

专注服务于Vue项目的可复用工具库

目前仅支持前端项目,不支持纯Node.js项目【后续会修复这个问题】

Axios相关API

Usage

import { createAxios } from 'common-toolbox'
import { getToken } from './token.js'
import router from '../router/index.js'
import { ElMessage } from 'element-plus'

// messageTip可以自己进行封装
// 例如
const messageTip = ({type, message}) => {
  alert(message)
  console.log('type: ', type)
}

// example
const axios = createAxios({
  baseURL: '',
  timeout: 50000,
  tokenName: 'token',
  getToken: getToken,
  router,
  messageTip: ElMessage
})

export default axios

// use axios
import axios form './utils/axios.js'

export const getList = (params) => {
  return axios.post(url, params, config)
}
// config可选可配置

API

| API | USAGE | REMARK | | :---------- | :----------------------------------- | :------------ | | createAxios | const axios = createAxios(options) | 生成axios实例 | | ... | ... | ... |

DOM处理相关API

Usage

import { domHandler } from 'common-box'

// vue main.js
domHandler.setFontSize()

// some page need setting fullscreen
const play = () => {
  domHandler.settingFullscreen()
}

// more ...

API

| API | USAGE | REMARK | | :---------------- | :------------------------------ | :----------------------------- | | setFontSize | setFontSize() | 以1920*1080为基准设置自适应 | | settingFullscreen | settingFullscreen() | 开启与关闭全屏 | | on | on(window, 'resize', resize) | 用于Echart图表随窗口大小自适应 | | off | off(window, 'resize', resize) | 用于Echart图表随窗口大小自适应 | | ... | ... | ... |

Form表单校验相关API

Usage

import { validator } from 'common-toolbox'

//example
const trueOrFalseOfMobile = validator.isMobile(userPhone)

const trueOrFalseOfIdCard = validator.isIdCard(userIdCard)

// more ...

说明

  • 邮箱、手机号、身份证号、中文姓名、密码复杂度等的校验函数返回均为Boolean类型,并没有专门去适配Element-uiElement-plusVant等UI框架,使用时应根据个人需求通过包装下面这些函数实现适配UI框架的校验函数

API

| API | USAGE | REMARK | | :------------------------- | :-------------------------------------------------------- | :-------------------------------------------------------------------------- | | isMobile | isMobile(value): boolean | 用于校验手机号 | | isEmail | isEmail(value): boolean | 用于校验邮箱号 | | isName | isName(value): boolean | 用于校验中文姓名 | | isIdCard | isIdCard(value): boolean | 用于校验身份证号 | | passwordComplexityValidate | passwordComplexityValidate(value, messageTool): boolean | 用于校验密码的复杂程度是否符合,messageTool参数是个消息提示弹窗实例或者函数 | | isDate | isDate(value): boolean | 用于校验日期 | | isNumeric | isNumeric(value): boolean | 判断值是否为数字 | | isNaN | isNaN(value): boolean | 判断值是否为NaN | | inBrowser | inBrowser(): boolean | 判断是否为浏览器 | | isAndroid | isAndroid(): boolean | 判断是否为安卓 | | isIOS | isIOS(): boolean | 判断是否为IOS | | ... | ... | ... |

File处理相关API

fileHandler

Usage

import { fileHandler } from 'common-toolbox'

// example
const downloadWord = async () => {
  const res = await axios.get('/api/download/file?id')
  if (res.success) {
    fileHandler.blobFile(res, 'example.docx', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' )
  }
}

API

| API | USAGE | REMARK | | :------------ | :------------------------------------------ | :----------------------------------------------------- | | dataURLtoFile | const file = dataURLtoFile(url, filename) | 将URL转为file | | blobFile | blob(url, name, type) | 下载文件,name: 下载存储的文件名;type: 下载的文件类型 | | ... | ... | ... |

nodeFileHandler

Usage

import { nodeFileHandler } from 'common-toolbox'

// example
nodeFileHandler.isFileExist('/path')

nodeFileHandler.getFolderExcludeSome('parentPath', /^example/)

API

| API | USAGE | REMARK | | :------------------- | :------------------------------------------------------------------ | :----------------------------------------------------- | | isFileExist | isFileExist(path): boolean | 判断文件是否存在 | | getFolderExcludeSome | getFolderExcludeSome(parentPath, excludeRegex): Promise<string[]> | 获取parentPath下的除了excludeRegex正则表达式包含的目录 | | hasFolder | hasFolder(parentPath, excludeRegex, name): boolean | 判断参数name的目录是否存在 | | ... | ... | ... |

Cookie与LocalStorage相关API

Usage

import { cookieAndStorage } from 'common'

// example
const cs = cookieAndStorage

cs.getLocalStorage('userInfo')
cs.setLocalStorage('userInfo', info)
cs.clearAllLocalStorage()

cs.getCookie('token')
cs.setCookie('token', token)
cs.clearAllCookies()

cs.clearAllStorage()

API

| API | USAGE | REMARK | | :------------------- | :------------------------------- | :----- | | getLocalStorage | getLocalStorage(key) | | | setLocalStorage | setLocalStorage(key, data) | | | removeLocalStorage | removeLocalStorage(key) | | | clearAllLocalStorage | clearAllLocalStorage() | | | getCookie | getCookie(key) | | | setCookie | setCookie(key, value, expires) | | | removeCookie | removeCookie(key) | | | clearAllCookies | clearAllCookies() | | | clearAllStorage | clearAllStorage() | | | ... | ... | ... |

Browser处理相关API

Usage

import { browserHandler } from 'common-toolbox'
import { ElMessage } from 'element-plus'

// example
browserHandler.getPositionByGeolocation(ElMessage)

API

| API | USAGE | REMARK | | :----------------------- | :-------------------------------------------------------- | :-------------------------------------------------------- | | getPositionByGeolocation | getPositionByGeolocation(messageTool): {Promise<Object> | 获取定位坐标;messageTool参数应传入一个消息弹窗实例或函数 | | ... | ... | ... |

Date相关接口

Usage

import { dateHandler } from 'common-toolbox'

// example
const date = dateHandler.getDateAndWeek()
console.log(date)
/**
 * date: '2023年5月1日'
 * week: '周一'
 * time: '12:45'
 */

API

| API | USAGE | REMARK | | :------------- | :------------------------------ | :----------------- | | getDateAndWeek | const date = getDateAndWeek() | 返回当前日期与周几 | | ... | ... | ... |

Encrypt加密相关API

Usage

import { createEncrypter, encryptHandler } from 'common-toolbox'

// example
const PUBLIC_KEY = 'PUBLIC_KEY'

export const setRas = createEncrypter(PUBLIC_KEY)

// 通过*加密文本,例如手机号、邮箱
const encodeMobile = encryptHandler.encryptText('13356789900', 'mobile', '请绑定手机号')

const encodeEmail = encryptHandler.encryptEmail('[email protected]', '请绑定邮箱')

API

| API | USAGE | REMARK | | :-------------- | :---------------------------------------------- | :-------------------------- | | createEncrypter | const setRAS = createEncrypter(publicKey) | 目前使用JSEncrypt进行加密 | | encryptText | encodeText = encryptText(text, flag, tipText) | 通过对指定文本进行加密 | | encryptName | encodeName = encryptName(name, tipText) | 通过对指定中文姓名进行加密 | | encryptMobile | encodeMobile = encryptMobile(mobile, tipText) | 通过对指定手机号进行加密 | | encryptEmail | encodeEmail = encryptEmail(email, tipText) | 通过对指定邮箱进行加密 | | ... | ... | ... |

其他API

Usage

import { getPdf, sleep } from 'common-toolbox'

// example
// type: file: 表示下载pdf
// type: base64: 表示生成base64码
const pdfBase64 = getPdf('#container', 'base64', 'example-pdf')

const sleepPromise = sleep(50000)

// more ...

API

| API | USAGE | REMARK | | :------ | :------------------------- | :------------------------ | | getPdf | getPdf(ref, type, title) | 将指定div元素转为pdf | | sleep | sleep(timeout) | 设置休眠时间,返回promise | | getType | getType(value) | 返回value的类型 | | ... | ... | ... |

打包方式

  • 目前打包成两种格式:
    • ESM
    • CJS

Examples

- examples/vue3-example

# dev
pnpm dev

补充

进行中...