@airpower/enum 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +50 -0
- package/dist/airpower.js +78 -0
- package/dist/enum/Enum.d.ts +59 -0
- package/dist/enum/IEnum.d.ts +16 -0
- package/dist/enum/index.d.ts +3 -0
- package/dist/enum/type.d.ts +11 -0
- package/dist/index.d.ts +1 -0
- package/docs/README.md +9 -0
- package/docs/airpower-bg.svg +246 -0
- package/docs/airpower.svg +246 -0
- package/docs/base.md +140 -0
- package/docs/config.md +3 -0
- package/docs/decorator.md +75 -0
- package/docs/enums.md +50 -0
- package/docs/helper.md +118 -0
- package/docs/i18n.md +7 -0
- package/docs/transformer.md +90 -0
- package/package.json +54 -0
package/docs/helper.md
ADDED
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
# 工具库
|
|
2
|
+
|
|
3
|
+
**AirPower** 提供了一些常用的工具类,你可以直接使用。
|
|
4
|
+
|
|
5
|
+
## CryptoUtil 编码和加解密
|
|
6
|
+
|
|
7
|
+
内置了 `AES加解密`、`SHA1`、`MD5`、`Base64` 等前端常用算法,可直接使用。
|
|
8
|
+
|
|
9
|
+
```typescript
|
|
10
|
+
CryptoUtil.aesEncrypt()
|
|
11
|
+
CryptoUtil.aesDecrypt()
|
|
12
|
+
CryptoUtil.sha1()
|
|
13
|
+
CryptoUtil.md5()
|
|
14
|
+
CryptoUtil.base64Encode()
|
|
15
|
+
CryptoUtil.base64Decode()
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## DateTimeUtil 时间与日期
|
|
19
|
+
|
|
20
|
+
提供了日期时间在前端常用的一些转换方法:
|
|
21
|
+
|
|
22
|
+
```typescript
|
|
23
|
+
// 休眠
|
|
24
|
+
await DateTimeUtil.sleep(3000)
|
|
25
|
+
|
|
26
|
+
// 格式化到Unix秒时间戳(默认当前时间)
|
|
27
|
+
DateTimeUtil.getUnixTimeStamps('2022-02-02 23:59:59')
|
|
28
|
+
|
|
29
|
+
// 格式化到毫秒时间戳(默认当前时间)
|
|
30
|
+
DateTimeUtil.getMilliTimeStamps('2022-02-02 23:59:59')
|
|
31
|
+
|
|
32
|
+
// 格式化到友好字符串显示
|
|
33
|
+
DateTimeUtil.getFriendlyDateTime('2022-02-02 23:59:59') // 三天前
|
|
34
|
+
|
|
35
|
+
// 使用指定的模板格式化
|
|
36
|
+
DateTimeFormatter.YYYY_MM_DD_HH_mm_ss.formatXXX(xxx)
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## DecoratorUtil 装饰器
|
|
40
|
+
|
|
41
|
+
装饰器助手类提供了一些设置和读取配置项的方法:
|
|
42
|
+
|
|
43
|
+
```typescript
|
|
44
|
+
// 反射添加属性
|
|
45
|
+
DecoratorUtil.setProperty()
|
|
46
|
+
|
|
47
|
+
// 设置一个类配置项
|
|
48
|
+
DecoratorUtil.setClassConfig()
|
|
49
|
+
|
|
50
|
+
// 递归获取指定类的配置项
|
|
51
|
+
DecoratorUtil.getClassConfig()
|
|
52
|
+
|
|
53
|
+
// 设置一个属性配置项
|
|
54
|
+
DecoratorUtil.setFieldConfig()
|
|
55
|
+
|
|
56
|
+
// 获取类指定属性的指定类型的配置
|
|
57
|
+
DecoratorUtil.getFieldConfig()
|
|
58
|
+
|
|
59
|
+
// 获取类标记了装饰器的属性列表
|
|
60
|
+
DecoratorUtil.getFieldList()
|
|
61
|
+
|
|
62
|
+
// 获取目标类指定属性列表的配置项列表
|
|
63
|
+
DecoratorUtil.getFieldConfigList()
|
|
64
|
+
|
|
65
|
+
// 获取目标类上指定属性的某个配置的值
|
|
66
|
+
DecoratorUtil.getFieldConfigValue()
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## FileUtil 文件
|
|
70
|
+
|
|
71
|
+
提供了一些常用文件处理方法
|
|
72
|
+
|
|
73
|
+
```typescript
|
|
74
|
+
// 字节数转可读文件大小
|
|
75
|
+
FileUtil.getFileSizeFriendly()
|
|
76
|
+
|
|
77
|
+
// 获取静态文件的绝对地址
|
|
78
|
+
FileUtil.getAbsoluteFileUrl()
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## RandomUtil 随机生成
|
|
82
|
+
|
|
83
|
+
提供了一些常用随机生成方法
|
|
84
|
+
|
|
85
|
+
```typescript
|
|
86
|
+
// 指定范围内获取随机整数
|
|
87
|
+
RandomUtil.getRandNumber()
|
|
88
|
+
|
|
89
|
+
// 获取随机数字字符串
|
|
90
|
+
RandomUtil.getRandNumberString()
|
|
91
|
+
|
|
92
|
+
// 获取随机字母字符串
|
|
93
|
+
RandomUtil.getRandCharString()
|
|
94
|
+
|
|
95
|
+
// 获取大小写混合随机字母字符串
|
|
96
|
+
RandomUtil.getRandMixedCharString()
|
|
97
|
+
|
|
98
|
+
// 获取字母加数字随机字符串
|
|
99
|
+
RandomUtil.getRandNumberAndCharString()
|
|
100
|
+
|
|
101
|
+
// 获取大小写字母加数字随机字符串
|
|
102
|
+
RandomUtil.getRandNumberAndMixedCharString()
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
## StringUtil 字符串常见处理
|
|
106
|
+
|
|
107
|
+
提供了一些字符串处理的常见方法
|
|
108
|
+
|
|
109
|
+
```typescript
|
|
110
|
+
// 获取字符串可视化长度
|
|
111
|
+
StringUtil.getLength()
|
|
112
|
+
|
|
113
|
+
// 获取字符串可视化位置的内容
|
|
114
|
+
StringUtil.get()
|
|
115
|
+
|
|
116
|
+
// 字符串可视化截取
|
|
117
|
+
StringUtil.slice()
|
|
118
|
+
```
|
package/docs/i18n.md
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
# 📖 数据转换
|
|
2
|
+
|
|
3
|
+
这一篇是需要重点讲的部分。
|
|
4
|
+
|
|
5
|
+
## 强制类型和数组
|
|
6
|
+
|
|
7
|
+
可以通过为 `@Field` 标记 `type` 来强制类型转换。
|
|
8
|
+
|
|
9
|
+
```typescript
|
|
10
|
+
class User extends AirPower {
|
|
11
|
+
@Field({
|
|
12
|
+
type: Number // 强制转换为数字类型
|
|
13
|
+
})
|
|
14
|
+
age!: number
|
|
15
|
+
|
|
16
|
+
@Field({
|
|
17
|
+
type: Role // 强制是Role类型
|
|
18
|
+
})
|
|
19
|
+
role!: Role
|
|
20
|
+
|
|
21
|
+
@Field({
|
|
22
|
+
type: Department, // 强制是Department类型
|
|
23
|
+
array: true // 指定是数组
|
|
24
|
+
})
|
|
25
|
+
departmentList: Department[] = []
|
|
26
|
+
}
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
那么,如果使用 `User.fromJson(json)`,那么 `json` 中的数据就会按照标记的装饰器类型进行类型转换。
|
|
30
|
+
|
|
31
|
+
**请注意,如果非简单类型,一定要标记 `type`,否则无法进行递归转换**
|
|
32
|
+
|
|
33
|
+
## 别名转换
|
|
34
|
+
|
|
35
|
+
别名转换适用于突然属性名称的变更,如 `nickname` -> `nickName`
|
|
36
|
+
|
|
37
|
+
```typescript
|
|
38
|
+
class User extends AirPower {
|
|
39
|
+
@Field({
|
|
40
|
+
alias: 'nickName'
|
|
41
|
+
})
|
|
42
|
+
nickname!: string
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## 固定前缀
|
|
47
|
+
|
|
48
|
+
有时候,后端提供的数据都带了统一的属性前缀:
|
|
49
|
+
|
|
50
|
+
```json
|
|
51
|
+
{
|
|
52
|
+
"user_id": 123,
|
|
53
|
+
"user_name": "userName",
|
|
54
|
+
"user_age": 18
|
|
55
|
+
}
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
此时,我们可以通过类的装饰器 `@Model` 来配置属性前缀:
|
|
59
|
+
|
|
60
|
+
```typescript
|
|
61
|
+
|
|
62
|
+
@Model({
|
|
63
|
+
prefix: 'user_'
|
|
64
|
+
})
|
|
65
|
+
class User extends AirPower {
|
|
66
|
+
id!: number
|
|
67
|
+
name!: string
|
|
68
|
+
age!: number
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
如果,其中的某个属性不需要前缀,可以通过 `@Field` 的 `ignorePrefix` 来忽略:
|
|
73
|
+
|
|
74
|
+
```typescript
|
|
75
|
+
|
|
76
|
+
@Model({
|
|
77
|
+
prefix: 'user_'
|
|
78
|
+
})
|
|
79
|
+
class User extends AirPower {
|
|
80
|
+
// 其他需要前缀的属性
|
|
81
|
+
@Field({
|
|
82
|
+
ignorePrefix: true
|
|
83
|
+
})
|
|
84
|
+
bio!: string
|
|
85
|
+
}
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## 自定义转换
|
|
89
|
+
|
|
90
|
+
`@ToJson` `@ToModel` 可完成自定义转换
|
package/package.json
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@airpower/enum",
|
|
3
|
+
"type": "module",
|
|
4
|
+
"version": "0.0.1",
|
|
5
|
+
"description": "AirPower-Enum 是一个基于 TypeScript 的封装的类似 Java 枚举类的枚举字典处理工具。",
|
|
6
|
+
"author": {
|
|
7
|
+
"name": "Hamm",
|
|
8
|
+
"email": "admin@hamm.cn",
|
|
9
|
+
"url": "https://github.com/HammCn"
|
|
10
|
+
},
|
|
11
|
+
"license": "MIT",
|
|
12
|
+
"homepage": "https://github.com/AirPowerTeam/AirPower-Enum#readme",
|
|
13
|
+
"repository": {
|
|
14
|
+
"type": "git",
|
|
15
|
+
"url": "git+https://github.com/AirPowerTeam/AirPower-Enum.git"
|
|
16
|
+
},
|
|
17
|
+
"bugs": {
|
|
18
|
+
"url": "https://github.com/AirPowerTeam/AirPower-Enum/issues"
|
|
19
|
+
},
|
|
20
|
+
"keywords": [
|
|
21
|
+
"AirPower",
|
|
22
|
+
"typescript",
|
|
23
|
+
"java",
|
|
24
|
+
"enum",
|
|
25
|
+
"dictionary",
|
|
26
|
+
"oop",
|
|
27
|
+
"class"
|
|
28
|
+
],
|
|
29
|
+
"main": "dist/main.js",
|
|
30
|
+
"module": "dist/main.js",
|
|
31
|
+
"types": "dist/index.d.ts",
|
|
32
|
+
"files": [
|
|
33
|
+
"dist",
|
|
34
|
+
"docs"
|
|
35
|
+
],
|
|
36
|
+
"scripts": {
|
|
37
|
+
"build": "tsc && vite build",
|
|
38
|
+
"lint": "eslint src --ext .ts",
|
|
39
|
+
"preview": "vite preview"
|
|
40
|
+
},
|
|
41
|
+
"dependencies": {
|
|
42
|
+
},
|
|
43
|
+
"devDependencies": {
|
|
44
|
+
"@antfu/eslint-config": "^4.11.0",
|
|
45
|
+
"@types/node": "^22.13.14",
|
|
46
|
+
"eslint": "^9.23.0",
|
|
47
|
+
"typescript": "^5.8.2",
|
|
48
|
+
"vite": "^6.2.0",
|
|
49
|
+
"vite-plugin-dts": "^4.5.3"
|
|
50
|
+
},
|
|
51
|
+
"publishConfig": {
|
|
52
|
+
"access": "public"
|
|
53
|
+
}
|
|
54
|
+
}
|