【初始化】前端工程项目

This commit is contained in:
chudong
2025-05-09 15:11:21 +08:00
parent c012704c9a
commit d7c556c3b0
524 changed files with 55595 additions and 112 deletions

View File

@@ -0,0 +1,148 @@
# 浏览器工具函数文档
这个模块提供了一系列用于浏览器端操作的实用工具函数。
## 目录
1. [浏览器环境检测](#浏览器环境检测)
2. [浏览器信息获取](#浏览器信息获取)
3. [缓存操作](#缓存操作)
4. [Cookie 操作](#cookie-操作)
5. [Storage 操作](#storage-操作)
## 浏览器环境检测
### isHttps
检查当前页面是否使用 HTTPS 协议。
```typescript
const isSecure = isHttps() // 返回 boolean
```
### isDev
判断当前是否为开发环境。
```typescript
const isDevelopment = isDev() // 返回 boolean
```
## 浏览器信息获取
### getBrowserOSInfo
获取当前浏览器和操作系统信息。
```typescript
const { browser, os } = getBrowserOSInfo()
// 返回格式:{ browser: string, os: string }
```
### getScreenInfo
获取屏幕分辨率和设备像素比信息。
```typescript
const { resolution, scale } = getScreenInfo()
// 返回格式:{ resolution: string, scale: number }
```
## 缓存操作
### forceRefresh
强制刷新页面并清理所有缓存(包括 Cache API、localStorage 和 sessionStorage
```typescript
await forceRefresh()
```
### clearBrowserCache
清空浏览器所有缓存数据。
```typescript
clearBrowserCache()
```
## Cookie 操作
### setCookie
设置 Cookie 值。
```typescript
setCookie(key: string, value: string, days?: number)
```
### getCookie
获取 Cookie 值。
```typescript
const value = getCookie(key: string) // 返回 string | null
```
### deleteCookie
删除指定的 Cookie。
```typescript
deleteCookie(key: string)
```
### clearCookie
清空所有 Cookie。
```typescript
clearCookie()
```
## Storage 操作
### LocalStorage 操作
```typescript
// 设置数据
setLocalItem(key: string, value: any)
// 获取数据
const value = getLocalItem(key: string)
// 删除数据
removeLocalItem(key: string)
// 清空所有数据
clearLocal()
```
### SessionStorage 操作
```typescript
// 设置数据
setSessionItem(key: string, value: any)
// 获取数据
const value = getSessionItem(key: string)
// 删除数据
removeSessionItem(key: string)
// 清空所有数据
clearSession()
```
## 特点
1. 使用 TypeScript 编写,提供完整的类型支持
2. 使用 Ramda.js 进行函数式编程
3. 支持数据自动序列化和反序列化
4. 提供柯里化版本的函数供函数式编程使用
## 注意事项
1. Cookie 操作会自动根据 HTTPS 协议添加前缀
2. Storage 操作会自动进行 JSON 序列化和反序列化
3. 所有清除缓存的操作都是不可逆的,请谨慎使用

View File

@@ -0,0 +1,219 @@
# 业务工具函数文档
这个模块提供了一系列用于业务处理的实用工具函数。该模块使用 Ramda.js 进行函数式编程,并提供了完整的 TypeScript 类型支持。
## 目录
1. [正则验证](#正则验证)
2. [业务操作](#业务操作)
3. [代理函数](#代理函数)
## 正则验证
### 邮箱验证
```typescript
isEmail(email: string): boolean
```
验证字符串是否为有效的邮箱地址。使用标准邮箱格式验证,要求包含 `@` 和域名。
### 手机号验证
```typescript
isPhone(phone: string): boolean
```
验证字符串是否为有效的中国大陆手机号。要求以 1 开头,第二位为 3-9总长度为 11 位。
### 身份证号验证
```typescript
isIdCard(idCard: string): boolean
```
验证字符串是否为有效的中国大陆身份证号。支持 18 位身份证号码验证,包含生日和校验位检查。
### URL验证
```typescript
isUrl(url: string): boolean
```
验证字符串是否为有效的URL。支持 http、https、ftp、rtsp、mms 等协议。
### IP地址验证
#### IPv4验证
```typescript
isIpv4(ip: string): boolean
```
验证字符串是否为有效的IPv4地址。每段数字范围为 0-255使用更精确的数字范围验证。
#### IPv6验证
```typescript
isIpv6(ip: string): boolean
```
验证字符串是否为有效的IPv6地址。支持以下格式
- 标准 IPv6 地址
- 压缩形式
- 混合形式
- IPv4 映射到 IPv6
- 特殊形式(如 fe80:: 链路本地地址)
#### 通用IP验证
```typescript
isIp(ip: string): boolean
```
验证字符串是否为有效的IP地址同时支持 IPv4 和 IPv6。
### IP段验证
```typescript
isIps(ips: string): boolean
```
验证字符串是否为有效的IP段。支持 CIDR 表示法,如 "192.168.1.0/24"。
### 端口验证
```typescript
isPort(port: string): boolean
```
验证字符串是否为有效的端口号。范围为 1-65535使用精确的数字范围验证。
### MAC地址验证
```typescript
isMac(mac: string): boolean
```
验证字符串是否为有效的MAC地址。格式为 XX-XX-XX-XX-XX-XX其中 X 为十六进制数字。
### 中文验证
```typescript
isChinese(str: string): boolean
```
验证字符串是否只包含中文字符。使用 Unicode 范围 \u4e00-\u9fa5 进行验证。
## 业务操作
### 手机号加密
```typescript
encryptPhone(phone: string): string
```
将手机号中间4位替换为星号。
示例:
```typescript
encryptPhone('13812345678') // 返回: '138****5678'
```
### 身份证号加密
```typescript
encryptIdCard(idCard: string): string
```
将身份证号中间4位替换为星号。
示例:
```typescript
encryptIdCard('440101199001011234') // 返回: '440101****1234'
```
### 版本号比较
```typescript
compareVersion(version1: string, version2: string): number
```
使用函数式编程方式比较两个版本号的大小。
- 返回 1: version1 > version2
- 返回 -1: version1 < version2
- 返回 0: version1 = version2
特点:
- 使用 Ramda.js 的 pipe 函数进行函数组合
- 自动处理不同长度的版本号
- 支持任意深度的版本号比较
### 字节转换
```typescript
formatBytes(bytes: number, fixed?: number, isUnit?: boolean, endUnit?: string): string
formatBytesCurried(bytes: number)(fixed?: number, isUnit?: boolean, endUnit?: string): string
```
将字节数转换为可读的字符串,提供普通版本和柯里化版本。
参数:
- `bytes`: 要转换的字节数
- `fixed`: 保留小数位数,默认为 2
- `isUnit`: 是否显示单位,默认为 true
- `endUnit`: 指定结束单位,如果指定则转换到该单位为止
支持的单位B、KB、MB、GB、TB
### 分页字符串转换
```typescript
formatPage(page: string): number
```
从特定格式的字符串中提取分页数量。使用正则表达式匹配 `class='Pcount'>共n条<` 格式的字符串。
## 代理函数
### 代理配置生成
```typescript
getProxyConfig(proxyKey: string, usage?: 'query' | 'params'): string | { request_time: number; request_token: string }
```
生成代理请求所需的配置信息。使用 MD5 加密生成请求令牌。
参数:
- `proxyKey`: 代理密钥
- `usage`: 使用场景
- 'params': 返回对象格式
- 'query': 返回查询字符串格式
返回值:
- params 格式: `{ request_time: number; request_token: string }`
- query 格式: `request_time=${time}&request_token=${token}`
## 特点
1. 使用 TypeScript 编写,提供完整的类型支持
2. 使用 Ramda.js 进行函数式编程
3. 提供柯里化版本的函数
4. 使用精确的正则表达式进行验证
5. 支持现代化的 IP 地址格式(包括 IPv6
## 注意事项
1. 所有正则验证函数都使用严格的匹配规则
2. 版本号比较支持任意深度的版本号格式
3. 字节转换函数支持自定义结束单位
4. 代理配置函数仅在开发环境下使用
5. 所有函数都经过优化,支持函数式编程范式

View File

@@ -0,0 +1,274 @@
# 数据处理工具函数文档
这个模块提供了一系列用于数据处理的实用工具函数。该模块使用 Ramda.js 进行函数式编程,并提供了完整的 TypeScript 类型支持。
## 目录
1. [数据转换](#数据转换)
2. [数据校验](#数据校验)
3. [数据过滤与重组](#数据过滤与重组)
4. [数据映射](#数据映射)
## 数据转换
### 对象值转字符串
```typescript
objectToString(obj: Record<string, any>): Record<string, string>
```
将对象的所有值转换为字符串。使用 Ramda.js 的 `map` 函数进行转换。
示例:
```typescript
objectToString({ age: 25, score: 98.5 }) // 返回: { age: "25", score: "98.5" }
```
### 数组转对象
```typescript
arrayToObject<T extends Record<string, any>>(key: string, array: T[]): Record<string, T>
```
将数组转换为对象,使用指定的 key 作为新对象的键。提供柯里化支持。
示例:
```typescript
const users = [
{ id: '1', name: 'Alice' },
{ id: '2', name: 'Bob' },
]
arrayToObject('id', users) // 返回: { '1': { id: '1', name: 'Alice' }, '2': { id: '2', name: 'Bob' } }
```
### 对象深度扁平化
```typescript
flattenObject<T extends Record<string, any>>(obj: T): Record<string, any>
```
将嵌套的对象结构扁平化,使用点号连接键名。
示例:
```typescript
const nested = {
user: {
info: {
name: 'Alice',
age: 25,
},
},
}
flattenObject(nested) // 返回: { 'user.info.name': 'Alice', 'user.info.age': 25 }
```
## 数据校验
### 正则匹配验证
```typescript
matchesPattern<T extends RegExp>(pattern: T, str: string): boolean
```
验证字符串是否符合指定的正则表达式模式。提供柯里化支持。
示例:
```typescript
const isEmail = matchesPattern(/^[^\s@]+@[^\s@]+\.[^\s@]+$/)
isEmail('test@example.com') // 返回: true
```
### 必需键验证
```typescript
hasRequiredKeys<T extends Record<string, any>>(requiredKeys: string[], obj: T): boolean
```
验证对象是否包含所有指定的必需键。提供柯里化支持。
示例:
```typescript
const requiredFields = ['name', 'email']
hasRequiredKeys(requiredFields, { name: 'Alice', email: 'alice@example.com' }) // 返回: true
```
### 数值范围验证
```typescript
isInRange<T extends number>(min: T, max: T, value: T): boolean
```
验证数值是否在指定的范围内。提供柯里化支持。
示例:
```typescript
const isValidAge = isInRange(0, 120)
isValidAge(25) // 返回: true
```
## 数据过滤与重组
### 对象属性过滤
```typescript
filterObject<T extends Record<string, any>>(predicate: (value: any) => boolean, obj: T): Record<string, any>
```
根据条件函数过滤对象的属性。提供柯里化支持。
示例:
```typescript
const removeEmpty = filterObject((value) => value !== '')
removeEmpty({ name: 'Alice', title: '', age: 25 }) // 返回: { name: 'Alice', age: 25 }
```
### 数组分组
```typescript
groupByKey<T extends Record<string, any>>(key: string, array: T[]): Record<string, T[]>
```
按照指定的键对数组进行分组。提供柯里化支持。
示例:
```typescript
const users = [
{ role: 'admin', name: 'Alice' },
{ role: 'user', name: 'Bob' },
{ role: 'admin', name: 'Charlie' },
]
groupByKey('role', users)
// 返回: {
// admin: [{ role: 'admin', name: 'Alice' }, { role: 'admin', name: 'Charlie' }],
// user: [{ role: 'user', name: 'Bob' }]
// }
```
### 深层属性提取
```typescript
pluckDeep<T extends Record<string, any>>(path: string[], list: T[]): T[]
```
从对象数组中提取指定路径的值。提供柯里化支持。
示例:
```typescript
const users = [{ info: { name: 'Alice', age: 25 } }, { info: { name: 'Bob', age: 30 } }]
pluckDeep(['info', 'name'], users) // 返回: ['Alice', 'Bob']
```
### 数组扁平化去重
```typescript
flattenAndUniq<T>(array: T[]): T[]
```
对嵌套数组进行扁平化处理并去除重复元素。
示例:
```typescript
flattenAndUniq([
[1, 2],
[2, 3],
[3, 4],
]) // 返回: [1, 2, 3, 4]
```
## 数据映射
### 对象映射
```typescript
mapData(
mapper: [string, string][] | Record<string, string>,
data: Record<string, unknown> | Record<string, unknown>[],
options: MapperOption = { deep: true }
): Record<string, unknown> | Record<string, unknown>[]
```
根据映射表将对象或数组映射为新的数据结构。
参数:
- `mapper`: 映射表,可以是键值对数组或对象
- `data`: 要映射的数据,可以是对象或对象数组
- `options`: 映射选项
- `inherit`: 要继承的字段数组
- `deep`: 是否深度映射(默认 true
- `ignore`: 要忽略的字段数组
特点:
- 支持深度映射
- 支持字段继承和忽略
- 支持嵌套路径映射
- 自动处理数组数据
示例:
```typescript
const mapper = {
'user.name': 'userName',
'user.age': 'userAge',
}
const data = {
user: {
name: 'Alice',
age: 25,
},
}
mapData(mapper, data) // 返回: { userName: 'Alice', userAge: 25 }
// 使用继承选项
mapData(mapper, data, { inherit: ['user.name'] })
// 返回: { userName: 'Alice' }
// 使用忽略选项,或者在映射表中直接忽略,如果未启用
mapData(mapper, data, { ignore: ['user.age'] })
// 返回: { userName: 'Alice' }
```
### 生成映射表
```typescript
generateMapper(obj: Record<string, unknown>): [string, unknown][]
```
将对象的所有字段转换为小驼峰格式的映射表。
示例:
```typescript
const obj = {
user_name: 'name',
user_age: 'age',
}
generateMapper(obj) // 返回: [['userName', 'name'], ['userAge', 'age']]
```
## 特点
1. 使用 TypeScript 编写,提供完整的类型支持
2. 使用 Ramda.js 进行函数式编程
3. 所有函数都提供柯里化支持
4. 支持深层数据结构处理
5. 提供丰富的数据验证方法
## 注意事项
1. 所有函数都是纯函数,不会修改原始数据
2. 对象扁平化会处理所有层级的嵌套
3. 数组转对象时要确保指定的 key 在数组对象中存在
4. 数据映射的 inherit 和 ignore 选项不能同时使用
5. 映射表中的路径必须存在于源数据中

View File

@@ -0,0 +1,198 @@
# 日期处理工具函数文档
这个模块提供了一系列用于日期处理的实用工具函数。该模块使用 Ramda.js 进行函数式编程,并提供了完整的 TypeScript 类型支持。
## 目录
1. [日期格式化](#日期格式化)
2. [日期计算](#日期计算)
3. [日期判断](#日期判断)
4. [时间获取](#时间获取)
## 日期格式化
### 日期格式化
```typescript
formatDate(date: string | number | Date, format: string = 'YYYY-MM-DD HH:mm:ss'): string
```
将日期转换为指定格式的字符串。
参数:
- `date`: 日期字符串、时间戳或 Date 对象
- `format`: 格式化字符串,默认为 'YYYY-MM-DD HH:mm:ss'
支持的格式化占位符:
- YYYY: 年份
- MM: 月份01-12
- DD: 日期01-31
- HH: 小时00-23
- mm: 分钟00-59
- ss: 秒钟00-59
示例:
```typescript
formatDate(new Date(), 'YYYY-MM-DD') // 返回: '2024-02-27'
formatDate('2024-02-27 14:30:00', 'MM/DD HH:mm') // 返回: '02/27 14:30'
```
### 相对时间格式化
```typescript
formatRelativeTime(date: string | number | Date): string
```
将日期转换为相对时间描述。
返回格式:
- 1分钟内'刚刚'
- 1小时内'x分钟前'
- 24小时内'x小时前'
- 30天内'x天前'
- 超过30天显示具体日期YYYY-MM-DD
示例:
```typescript
formatRelativeTime(new Date()) // 返回: '刚刚'
formatRelativeTime(Date.now() - 3600000) // 返回: '1小时前'
```
## 日期计算
### 天数差计算
```typescript
getDaysDiff(startDate: string | number | Date, endDate: string | number | Date): number
getDaysDiffCurried(startDate: string | number | Date)(endDate: string | number | Date): number
```
计算两个日期之间的天数差。提供普通版本和柯里化版本。
示例:
```typescript
getDaysDiff('2024-02-01', '2024-02-27') // 返回: 26
const diffFromToday = getDaysDiffCurried(new Date())
diffFromToday('2024-03-27') // 返回: 30
```
### 添加天数
```typescript
addDays(days: number, date: string | number | Date): Date
addDaysCurried(days: number)(date: string | number | Date): Date
```
在指定日期上添加或减少天数。提供普通版本和柯里化版本。
示例:
```typescript
addDays(7, new Date()) // 返回: 7天后的日期
addDays(-7, new Date()) // 返回: 7天前的日期
```
## 日期判断
### 日期范围判断
```typescript
isDateInRange(date: string | number | Date, startDate: string | number | Date, endDate: string | number | Date): boolean
isDateInRangeCurried(date: string | number | Date)(startDate: string | number | Date)(endDate: string | number | Date): boolean
```
判断日期是否在指定范围内。提供普通版本和柯里化版本。
示例:
```typescript
isDateInRange('2024-02-27', '2024-02-01', '2024-03-01') // 返回: true
const checkDateRange = isDateInRangeCurried('2024-02-27')
checkDateRange('2024-02-01')('2024-03-01') // 返回: true
```
## 时间获取
### 获取一天的开始时间
```typescript
getStartOfDay(date: string | number | Date): Date
```
获取指定日期的开始时间00:00:00
示例:
```typescript
getStartOfDay('2024-02-27 15:30:00') // 返回: 2024-02-27 00:00:00
```
### 获取一天的结束时间
```typescript
getEndOfDay(date: string | number | Date): Date
```
获取指定日期的结束时间23:59:59.999)。
示例:
```typescript
getEndOfDay('2024-02-27 15:30:00') // 返回: 2024-02-27 23:59:59.999
```
### 获取星期几
```typescript
getDayOfWeek(date: string | number | Date): string
```
获取指定日期是星期几。
示例:
```typescript
getDayOfWeek('2024-02-27') // 返回: '星期二'
```
### 获取到期时间
```typescript
getDaysUntilExpiration(date: string | number | Date, expirationDate?: string | number | Date): string
```
获取距离到期时间的天数。
参数:
- `date`: 目标日期
- `expirationDate`: 到期日期,默认为当前时间
示例:
```typescript
getDaysUntilExpiration('2024-03-27') // 返回: '30天'
getDaysUntilExpiration('2024-01-27') // 返回: '已过期'
```
## 特点
1. 使用 TypeScript 编写,提供完整的类型支持
2. 使用 Ramda.js 进行函数式编程
3. 提供多个函数的柯里化版本
4. 支持多种日期输入格式
5. 丰富的日期处理功能
## 注意事项
1. 所有接收日期的函数都支持字符串、时间戳和 Date 对象作为输入
2. 日期格式化函数会自动补零,确保输出格式统一
3. 天数差计算会忽略时分秒,只计算日期差
4. 范围判断包含起始和结束日期
5. 使用柯里化函数时注意参数顺序

View File

@@ -0,0 +1,132 @@
# 加密解密工具函数文档
这个模块提供了一系列用于加密解密的实用工具函数。该模块使用 JSEncrypt 库实现 RSA 加密解密功能。
## 目录
1. [密钥对生成](#密钥对生成)
2. [RSA 加密](#rsa-加密)
3. [RSA 解密](#rsa-解密)
## 密钥对生成
### 生成 RSA 密钥对
```typescript
generateKeyPair(): { publicKey: string, privateKey: string }
```
生成一对 RSA 公私钥。
返回值:
- 包含公钥和私钥的对象
- `publicKey`: RSA 公钥
- `privateKey`: RSA 私钥
特点:
- 使用 2048 位密钥长度
- 返回标准 PEM 格式的密钥对
示例:
```typescript
const { publicKey, privateKey } = generateKeyPair()
// publicKey: '-----BEGIN PUBLIC KEY-----\n...\n-----END PUBLIC KEY-----'
// privateKey: '-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----'
```
## RSA 加密
### RSA 加密函数
```typescript
rsaEncrypt(str: string, publicKey: string): string
```
使用 RSA 公钥对字符串进行加密。
参数:
- `str`: 需要加密的字符串
- `publicKey`: RSA 公钥
返回值:
- 加密后的字符串
注意事项:
- 如果公钥长度小于 10将直接返回原字符串
- 使用 JSEncrypt 库进行加密操作
示例:
```typescript
const publicKey = '-----BEGIN PUBLIC KEY-----\n...\n-----END PUBLIC KEY-----'
const encrypted = rsaEncrypt('hello world', publicKey)
```
## RSA 解密
### RSA 解密函数
```typescript
rsaDecrypt(str: string, privateKey: string): string
```
使用 RSA 私钥对加密字符串进行解密。
参数:
- `str`: 需要解密的字符串
- `privateKey`: RSA 私钥
返回值:
- 解密后的原始字符串
注意事项:
- 如果私钥长度小于 10将直接返回原字符串
- 使用 JSEncrypt 库进行解密操作
示例:
```typescript
const privateKey = '-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----'
const decrypted = rsaDecrypt(encrypted, privateKey)
```
## 完整使用示例
```typescript
// 1. 生成密钥对
const { publicKey, privateKey } = generateKeyPair()
// 2. 使用公钥加密数据
const message = 'Hello, World!'
const encrypted = rsaEncrypt(message, publicKey)
// 3. 使用私钥解密数据
const decrypted = rsaDecrypt(encrypted, privateKey)
console.log(decrypted) // 输出: 'Hello, World!'
```
## 特点
1. 使用 TypeScript 编写,提供完整的类型支持
2. 基于 JSEncrypt 库实现 RSA 加密解密
3. 提供简单易用的 API
4. 内置密钥长度验证
5. 支持标准 RSA 密钥格式
6. 提供密钥对生成功能
## 注意事项
1. 使用前需要准备好 RSA 公私钥对,或使用 generateKeyPair 生成
2. 密钥必须符合标准 RSA 密钥格式
3. 建议在 HTTPS 环境下使用
4. 注意保护好私钥,不要在客户端存储
5. 加密数据有长度限制,取决于 RSA 密钥长度2048 位)

View File

@@ -0,0 +1,135 @@
# 随机数生成工具函数文档
这个模块提供了一系列用于生成随机数和随机字符串的工具函数。
## 目录
1. [随机数生成](#随机数生成)
2. [随机字符串生成](#随机字符串生成)
## 随机数生成
### 随机整数生成
```typescript
randomInt(min: number, max: number): number
```
生成指定范围内的随机整数。
参数:
- `min`: 最小值(包含)
- `max`: 最大值(包含)
示例:
```typescript
randomInt(1, 10) // 返回: 1-10 之间的随机整数
```
## 随机字符串生成
### 基础随机字符串
```typescript
randomChart(
length: number = 32,
options: {
isSpecial?: boolean;
isLower?: boolean;
isUpper?: boolean;
isNumber?: boolean;
} = {}
): string
```
生成指定长度的随机字符串。
参数:
- `length`: 字符串长度(默认 32
- `options`: 配置选项
- `isSpecial`: 是否包含特殊字符(默认 false
- `isLower`: 是否包含小写字母(默认 true
- `isUpper`: 是否包含大写字母(默认 true
- `isNumber`: 是否包含数字(默认 true
示例:
```typescript
// 生成默认随机字符串
randomChart() // 返回: 32位随机字符串
// 生成包含特殊字符的随机字符串
randomChart(16, { isSpecial: true })
// 仅生成数字和大写字母
randomChart(8, { isLower: false })
```
### 高级随机字符串
```typescript
randomChartWithMinLength(
length: number = 32,
options: {
minUpper?: number;
minLower?: number;
minNumber?: number;
minSpecial?: number;
}
): string
```
生成满足最小字符数要求的随机字符串。
参数:
- `length`: 字符串总长度(默认 32
- `options`: 最小字符数要求
- `minUpper`: 大写字母最小个数(默认 1
- `minLower`: 小写字母最小个数(默认 1
- `minNumber`: 数字最小个数(默认 1
- `minSpecial`: 特殊字符最小个数(默认 0
特点:
- 确保生成的字符串满足各类字符的最小数量要求
- 自动打乱字符顺序
- 支持特殊字符
示例:
```typescript
// 生成包含至少2个大写字母、2个小写字母、2个数字的16位随机字符串
randomChartWithMinLength(16, {
minUpper: 2,
minLower: 2,
minNumber: 2,
})
// 生成包含特殊字符的安全密码
randomChartWithMinLength(12, {
minUpper: 1,
minLower: 1,
minNumber: 1,
minSpecial: 1,
})
```
## 特点
1. 使用 TypeScript 编写,提供完整的类型支持
2. 支持灵活的字符组合配置
3. 提供基础和高级两种随机字符串生成方式
4. 支持最小字符数量要求
5. 自动字符顺序打乱
## 注意事项
1. 随机数范围包含最小值和最大值
2. 字符串生成会自动过滤掉易混淆的字符0oO1Ii
3. 最小字符数要求总和不能超过总长度
4. 特殊字符集合为 !@#$%^&\*?
5. 建议在需要安全性的场景使用 randomChartWithMinLength

View File

@@ -0,0 +1,139 @@
# 字符串处理工具函数文档
这个模块提供了一系列用于字符串处理的实用工具函数。该模块使用 Ramda.js 进行函数式编程,并提供了完整的 TypeScript 类型支持。
## 目录
1. [URL 处理](#url-处理)
2. [HTML 转义](#html-转义)
3. [命名格式转换](#命名格式转换)
## URL 处理
### URL 参数转对象
```typescript
urlToObject(url: string): Record<string, string>
urlToObjectCurried(url: string): Record<string, string>
```
将 URL 字符串中的查询参数转换为对象。提供普通版本和柯里化版本。
示例:
```typescript
const url = 'https://example.com?name=Alice&age=25'
urlToObject(url) // 返回: { name: 'Alice', age: '25' }
const parseUrl = urlToObjectCurried('https://example.com?name=Alice&age=25')
parseUrl // 返回: { name: 'Alice', age: '25' }
```
## HTML 转义
### HTML 字符转义
```typescript
htmlEscape(str: string, isReverse: boolean = false): string
```
对 HTML 字符串进行转义或反转义。
参数:
- `str`: 要转义的字符串
- `isReverse`: 是否进行反转义(默认 false
支持的转义字符:
- & -> &amp;
- < -> &lt;
- > -> &gt;
- " -> &quot;
- ' -> &apos;
示例:
```typescript
// 转义
htmlEscape('<div>Hello & World</div>')
// 返回: '&lt;div&gt;Hello &amp; World&lt;/div&gt;'
// 反转义
htmlEscape('&lt;div&gt;Hello &amp; World&lt;/div&gt;', true)
// 返回: '<div>Hello & World</div>'
```
## 命名格式转换
### 小驼峰转下划线
```typescript
camelToUnderline(str: string): string
```
将小驼峰命名转换为下划线命名。
示例:
```typescript
camelToUnderline('userName') // 返回: 'user_name'
```
### 下划线转小驼峰
```typescript
underlineToCamel(str: string): string
```
将下划线命名转换为小驼峰命名。
示例:
```typescript
underlineToCamel('user_name') // 返回: 'userName'
```
### 下划线转大驼峰
```typescript
underlineToBigCamel(str: string): string
```
将下划线命名转换为大驼峰命名。
示例:
```typescript
underlineToBigCamel('user_name') // 返回: 'UserName'
```
### 大驼峰转下划线
```typescript
bigCamelToUnderline(str: string): string
```
将大驼峰命名转换为下划线命名。
示例:
```typescript
bigCamelToUnderline('UserName') // 返回: 'user_name'
```
## 特点
1. 使用 TypeScript 编写,提供完整的类型支持
2. 使用 Ramda.js 进行函数式编程
3. 提供 URL 参数解析的柯里化版本
4. 支持 HTML 字符的双向转义
5. 提供完整的命名格式转换工具
## 注意事项
1. URL 解析使用标准的 URL API
2. HTML 转义支持最常用的五种字符
3. 命名格式转换保持原字符串的大小写特性
4. 柯里化函数便于函数组合
5. 所有函数都是纯函数,不会修改原始数据

View File

@@ -0,0 +1,247 @@
# 类型检查工具函数文档
这个模块提供了一系列用于数据类型检查的实用工具函数。该模块使用 Ramda.js 进行函数式编程,并提供了完整的 TypeScript 类型支持。
## 目录
1. [基础类型检查](#基础类型检查)
2. [复杂类型检查](#复杂类型检查)
3. [特殊类型检查](#特殊类型检查)
4. [类型获取](#类型获取)
## 基础类型检查
### 数字类型检查
```typescript
isNumber(value: unknown): value is number
```
检查值是否为数字类型。
示例:
```typescript
isNumber(123) // 返回: true
isNumber('123') // 返回: false
```
### 字符串类型检查
```typescript
isString(value: unknown): value is string
```
检查值是否为字符串类型。
示例:
```typescript
isString('hello') // 返回: true
isString(123) // 返回: false
```
### 布尔类型检查
```typescript
isBoolean(value: unknown): value is boolean
```
检查值是否为布尔类型。
示例:
```typescript
isBoolean(true) // 返回: true
isBoolean('true') // 返回: false
```
## 复杂类型检查
### 对象类型检查
```typescript
isObject(value: unknown): value is object
```
检查值是否为对象类型(不包括数组)。
示例:
```typescript
isObject({}) // 返回: true
isObject([]) // 返回: false
```
### 数组类型检查
```typescript
isArray(value: unknown): value is any[]
```
检查值是否为数组类型。
示例:
```typescript
isArray([1, 2, 3]) // 返回: true
isArray({ length: 3 }) // 返回: false
```
### 函数类型检查
```typescript
isFunction(value: unknown): value is Function
```
检查值是否为函数类型。
示例:
```typescript
isFunction(() => {}) // 返回: true
isFunction({}) // 返回: false
```
## 特殊类型检查
### Promise 类型检查
```typescript
isPromise(value: unknown): value is Promise<unknown>
```
检查值是否为 Promise 类型。
示例:
```typescript
isPromise(Promise.resolve()) // 返回: true
isPromise({ then: () => {} }) // 返回: false
```
### 正则表达式检查
```typescript
isRegExp(value: unknown): value is RegExp
```
检查值是否为正则表达式。
示例:
```typescript
isRegExp(/test/) // 返回: true
isRegExp('test') // 返回: false
```
### 日期类型检查
```typescript
isDate(value: unknown): value is Date
```
检查值是否为日期类型。
示例:
```typescript
isDate(new Date()) // 返回: true
isDate('2024-02-27') // 返回: false
```
### null 检查
```typescript
isNull(value: unknown): value is null
```
检查值是否为 null与 undefined 区分)。
示例:
```typescript
isNull(null) // 返回: true
isNull(undefined) // 返回: false
```
### undefined 检查
```typescript
isUndefined(value: unknown): value is undefined
```
检查值是否为 undefined。
示例:
```typescript
isUndefined(undefined) // 返回: true
isUndefined(null) // 返回: false
```
### 空值检查
```typescript
isEmpty(value: unknown): value is '' | any[] | object
```
检查值是否为空('', [], {}),但不包括 null 和 undefined。
示例:
```typescript
isEmpty('') // 返回: true
isEmpty([]) // 返回: true
isEmpty({}) // 返回: true
isEmpty(null) // 返回: false
```
## 类型获取
### 获取类型
```typescript
getType(value: unknown): string
```
获取值的类型字符串。
示例:
```typescript
getType(123) // 返回: 'Number'
getType('hello') // 返回: 'String'
getType(null) // 返回: 'Null'
```
### 类型比较
```typescript
isType<T>(type: string, value: unknown): value is T
```
检查值是否为指定类型。
示例:
```typescript
isType('Number', 123) // 返回: true
isType('String', 123) // 返回: false
```
## 特点
1. 使用 TypeScript 编写,提供完整的类型支持
2. 使用 Ramda.js 进行函数式编程
3. 所有检查函数都提供类型守卫
4. 支持复杂类型和特殊类型检查
5. 提供类型获取和比较功能
## 注意事项
1. 对象检查不包括数组类型
2. null 和 undefined 检查是严格区分的
3. 空值检查不包括 null 和 undefined
4. 类型获取返回首字母大写的类型字符串
5. 所有函数都是类型安全的