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

saltire_util

v2.0.7

Published

util for commom job

Downloads

15

Readme

Description

日常工具操作函数,其中包含:日期处理数据类型判断字符串处理cookie处理正则判断dom操作设备判断url操作

Use

import util from 'saltire_util'

API

comm

util.debounce() // 防止函数被频繁触发,第一个参数是指定的函数,第二个是延迟时间
// 如: debounce(function(){console.log(this);}, 300)
util.copyToClipboard('字符串内容') // 将一个字符串复制到剪贴板
util.downoladFile(url, '文件名称') // 下载网络上的文件(任意文件格式,前提需要是一个存在于公网的资源地址)
// 如: downoladFile('https://rk-secure-base-test.oss-cn-qingdao.aliyuncs.com/font/image/image1.jpg', '资料')
util.once(): '控制函数只被执行一次',
util.flatten(): '多维数组扁平化'

cookie

util.setCookie(cname, cvalue, exdays) // '给维权骑士项目(rightknights-html设置cookie,开发模式下是本地,正式环境下是.rightknights.com)'
// @param (cname,string,键名) (cvalue,string,键值)(exdays, number, 失效时间,以天为单位)
util.getCookie(cname) // '获取cookie' cname为键名
util.clearCookie(cname) // '清除某个cookie'
util.parseCookie() // '解析 HTTP Cookie 标头字符串并返回所有cookie的name-value对的对象'

date

util.renderDate(d, f) //  '日期格式化工具函数',第一个参数为Date对象,第二个参数是格式,默认为年-月-日

util.between(d, s, e) // '判断指定日期是否在指定的开始日期和结束日期之间',@param (date, 指定日期) (start, 开始时间) (end, 结束时间)

util.isEqual(d1, d2) // '判断两个日期是否相等',
util.isLeapYear(d) // '判断是否是闰年',
util.getFirstDayOfMonth(d) // '返回指定年月的第一天是星期几,返回值是1-7的数字',
util.getLastDayOfMonth(d) // '返回指定月份的最后一天是星期几,返回值是1-7的数字',
util.getFirstDateOfMonth(d) // '返回指定年月第一天的日期',
util.getLastDateOfMonth(d) // '返回指定年月最后一天的日期',
util.getDaysInMonth(d) // '获取指定月份的天数',
util.addDays(d, days) // '给指定日期增加指定天数',
util.addHours(d, hours) // '给指定日期增加指定小时',
util.timeStartChange(d) // '将时间转为时间戳,按当天最初一刻',
util.timeEndChange(d) //'将时间转为时间戳,按当天最后一刻',
util.timeDifference(time1, time2) // '获取时间差,提供两个时间戳,返回一个对象,为负数表示当前time1比time2小',这里两个参数都是时间戳

device

util.ispc()  // "是否是PC设备",
util.istrident()  // "是否是IE浏览器",
util.ispresto()  // "是否是opera内核",
util.iswebKit()  // "苹果、谷歌内核",
util.isiPhone()  // "是否为iPhone或者QQHD浏览器",
util.isiPad()  // "是否iPad",
util.isweixin()  // "是否微信",
util.isgecko()  // "判断是否是火狐内核",
util.isios()  // "判断是否是ios终端",
util.isqq()  // "判断是否是qq"
util.scrollToTop() // "回到顶部"
util.elementIsVisibleInViewport()  // "如果指定的元素在可视窗口中可见,则返回 true ,否则返回 false",* @param (指定元素,el)(省略第二个参数来判断元素是否完全可见,或者指定 true 来判断它是否部分可见,bolean)

dom

util.hasClass(element, className) //  '判断元素是否含有某个class',
util.addClass(element, ...) //  '原生js操作元素class的方法,给元素添加class,支持不定长参数',element为必填,class名称支持不定长参数
util.removeClass(element, ...) //  '原生js操作元素class的方法,删除元素的class,支持不定长参数',element为必填,class名称支持不定长参数

check

const reg = {
	// 网址(url,支持端口和"?+参数"和"#+参数)
	url: /^(((ht|f)tps?):\/\/)?[\w-]+(\.[\w-]+)+([\w.,@?^=%&:/~+#-]*[\w@?^=%&/~+#-])?$/,
	
	// 视频(video)链接地址(视频格式可按需增删)
	video_url: /^https?:\/\/(.+\/)+.+(\.(swf|avi|flv|mpg|rm|mov|wav|asf|3gp|mkv|rmvb|mp4))$/i,
	
	// 图片(image)链接地址(图片格式可按需增删)
	img_url: /^https?:\/\/(.+\/)+.+(\.(gif|png|jpg|jpeg|webp|svg|psd|bmp|tif))$/i,
	
	// 24小时制时间(HH:mm:ss)
	time_24: /^(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d$/,
	
	// 12小时制时间(hh:mm:ss)
	time_12: /^(?:1[0-2]|0?[1-9]):[0-5]\d:[0-5]\d$/,
	
	// base64格式
	base64: /^\s*data:(?:[a-z]+\/[a-z0-9-+.]+(?:;[a-z-]+=[a-z0-9-]+)?)?(?:;base64)?,([a-z0-9!$&',()*+;=\-._~:@/?%\s]*?)\s*$/i,
	
	// 数字/货币金额(支持负数、千分位分隔符)
	money: /^-?\d+(,\d{3})*(\.\d{1,2})?$/,
	
	// 银行卡号(10到30位, 覆盖对公/私账户, 参考微信支付)
	bank_card: /^[1-9]\d{9,29}$/,
	
	// 中文姓名
	name_chinese: /^(?:[\u4e00-\u9fa5·]{2,16})$/,
	
	// 车牌号(新能源+非新能源)
	license_plate: /^(?:[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领 A-Z]{1}[A-HJ-NP-Z]{1}(?:(?:[0-9]{5}[DF])|(?:[DF](?:[A-HJ-NP-Z0-9])[0-9]{4})))$|(?:[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领 A-Z]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9 挂学警港澳]{1})$/,
	
	// md5格式(32位)
	md5: /^([a-f\d]{32}|[A-F\d]{32})$/,
	
	// 手机号(mobile phone)中国(严谨), 根据工信部2019年最新公布的手机号段
	phone_rigorous: /^(?:(?:\+|00)86)?1(?:(?:3[\d])|(?:4[5-7|9])|(?:5[0-3|5-9])|(?:6[5-7])|(?:7[0-8])|(?:8[\d])|(?:9[1|8|9]))\d{8}$/,
	
	// 手机号(mobile phone)中国(宽松), 只要是13,14,15,16,17,18,19开头即可
	phone_loose: /^(?:(?:\+|00)86)?1[3-9]\d{9}$/,
	
	// 日期 支持2020-01-02和2020/01/02这两种形式
	date: /^\d{4}(-|\/)(1[0-2]|0?\d)\1([0-2]\d|\d|30|31)$/,
	
	// 邮箱
	email: /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,
	
	// 座机(tel phone)电话(国内),如: 0341-86091234
	tel: /^\d{3}-\d{8}$|^\d{4}-\d{7,8}$/,
	
	// 身份证号(2代,18位数字),最后一位是校验位,可能为数字或字符X
	id_card: /^[1-9]\d{5}(?:18|19|20)\d{2}(?:0[1-9]|10|11|12)(?:0[1-9]|[1-2]\d|30|31)\d{3}[\dXx]$/,
	
	// 护照(包含香港、澳门)
	passports: /(^[EeKkGgDdSsPpHh]\d{8}$)|(^(([Ee][a-fA-F])|([DdSsPp][Ee])|([Kk][Jj])|([Mm][Aa])|(1[45]))\d{7}$)/,
	
	// 用户名校验,4到16位(字母,数字,下划线,减号)
	username: /^[a-zA-Z0-9_-]{4,16}$/,
	
	// 中文/汉字
	chinese: /^(?:[\u3400-\u4DB5\u4E00-\u9FEA\uFA0E\uFA0F\uFA11\uFA13\uFA14\uFA1F\uFA21\uFA23\uFA24\uFA27-\uFA29]|[\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0])+$/,
	
	// 小数
	decimal: /^\d+\.\d+$/,
	
	// 数字
	number: /^\d{1,}$/,
	
	// qq号码格式
	qq_number: /^[1-9][0-9]{4,10}$/,
	
	// 密码强度校验,最少6位,包括至少1个大写字母,1个小写字母,1个数字,1个特殊字符
	password: /^\S*(?=\S{6,})(?=\S*\d)(?=\S*[A-Z])(?=\S*[a-z])(?=\S*[!@#$%^&*? ])\S*$/,
	
	// ipv4地址
	ip_v4: /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,
	
	// 十六进制颜色
	color_16: /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/,
	
	// 微信号
	wx_username: /^[a-zA-Z][-_a-zA-Z0-9]{5,19}$/,
	
	// 邮政编码(中国)
	zip_code: /^(0[1-7]|1[0-356]|2[0-7]|3[0-6]|4[0-7]|5[1-7]|6[1-7]|7[0-5]|8[013-6])\d{4}$/,
}

string

util.camelCase(string) //  '英文字符串依序转驼峰,处理过程中遇见非英文字母字符,全部当做空格处理,其余依序拼装',
util.endsWith(string, match) //  '判断某个字符串是否以某特殊字符结尾,尾部空格会被忽略',  * @example: endsWith("foobar", "bar") // true   endsWith("foobar", "foo") // false
util.startsWith(string, match) //  '判断某个字符串是否以某特殊字符开头,头部空格会被忽略', * @example: startsWith("foobar", "fo") // true startsWith("foobar", "v") // false
util.randomString() //  '生成随机字符串',
util.hiddenNumber(str, frontLen, endLen) //  '隐藏号码的中间一部分,常见的是隐藏手机号中间四位',* @example hiddenNumber('13901342187', 3, 4) => 139****2187
util.randomNumber(min, max) // '生成一个[min, max]之间的随机数'

url

util.GetQueryString(name) //  '获取url中的某个参数值',
util.replaceQueryString(paramName,replaceWith) //  '修改url中的某个参数的值,返回新地址',
util.addQueryString(paramName,replaceWith) //  '在URL中追加一个参数'
util.isAbsoluteURL(url) // '如果给定的字符串是绝对URL,则返回 true ;否则返回 false'