@ivujs/i-utils 2.1.0 → 2.1.2

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.
Files changed (60) hide show
  1. package/dist/cjs/ID-card/index.cjs +1 -1
  2. package/dist/cjs/color/index.cjs +1 -1
  3. package/dist/cjs/constants/date.cjs +55 -1
  4. package/dist/cjs/constants/id-card.cjs +42 -1
  5. package/dist/cjs/constants/keycode.cjs +117 -2
  6. package/dist/cjs/constants/lang.cjs +7 -1
  7. package/dist/cjs/constants/math.cjs +9 -1
  8. package/dist/cjs/constants/regexp.cjs +33 -10
  9. package/dist/cjs/constants/sort.cjs +10 -1
  10. package/dist/cjs/date/index.cjs +160 -133
  11. package/dist/cjs/device/index.cjs +7 -6
  12. package/dist/cjs/index.cjs +4 -2
  13. package/dist/cjs/keycode/index.cjs +1 -1
  14. package/dist/cjs/math/index.cjs +26 -15
  15. package/dist/cjs/object/index.cjs +5 -4
  16. package/dist/cjs/string/index.cjs +38 -12
  17. package/dist/cjs/url/index.cjs +6 -6
  18. package/dist/cjs/validate/index.cjs +6 -2
  19. package/dist/es/ID-card/index.mjs +1 -1
  20. package/dist/es/array/index.d.ts +1 -1
  21. package/dist/es/clipboard/index.d.ts +5 -5
  22. package/dist/es/color/index.mjs +1 -1
  23. package/dist/es/constants/date.d.ts +55 -1
  24. package/dist/es/constants/date.mjs +55 -1
  25. package/dist/es/constants/id-card.d.ts +42 -1
  26. package/dist/es/constants/id-card.mjs +42 -1
  27. package/dist/es/constants/keycode.d.ts +118 -0
  28. package/dist/es/constants/keycode.mjs +117 -2
  29. package/dist/es/constants/lang.d.ts +7 -1
  30. package/dist/es/constants/lang.mjs +7 -1
  31. package/dist/es/constants/math.d.ts +9 -1
  32. package/dist/es/constants/math.mjs +9 -1
  33. package/dist/es/constants/regexp.d.ts +24 -1
  34. package/dist/es/constants/regexp.mjs +33 -10
  35. package/dist/es/constants/sort.d.ts +10 -1
  36. package/dist/es/constants/sort.mjs +10 -1
  37. package/dist/es/date/index.d.ts +40 -11
  38. package/dist/es/date/index.mjs +160 -135
  39. package/dist/es/device/index.d.ts +2 -2
  40. package/dist/es/device/index.mjs +7 -6
  41. package/dist/es/dom/index.d.ts +1 -1
  42. package/dist/es/function/index.d.ts +2 -2
  43. package/dist/es/index.mjs +2 -2
  44. package/dist/es/keycode/index.d.ts +1 -1
  45. package/dist/es/keycode/index.mjs +1 -1
  46. package/dist/es/math/index.d.ts +4 -4
  47. package/dist/es/math/index.mjs +26 -15
  48. package/dist/es/object/index.d.ts +2 -1
  49. package/dist/es/object/index.mjs +5 -4
  50. package/dist/es/string/index.d.ts +4 -7
  51. package/dist/es/string/index.mjs +37 -11
  52. package/dist/es/url/index.mjs +6 -6
  53. package/dist/es/validate/index.mjs +6 -2
  54. package/dist/index.d.ts +327 -41
  55. package/dist/lib/index.full.umd.js +947 -623
  56. package/dist/lib/index.full.umd.min.js +2 -2
  57. package/dist/lib/index.full.umd.min.js.map +1 -1
  58. package/dist/resolver/auto-imports.cjs +5 -3
  59. package/dist/resolver/auto-imports.mjs +5 -3
  60. package/package.json +1 -1
@@ -64,7 +64,7 @@ function getAgeByIDCard(idCard) {
64
64
  */
65
65
  function getSexByIDCard(idCard$1) {
66
66
  if (index.isNull(idCard$1))
67
- return undefined;
67
+ return;
68
68
  // 15位身份证
69
69
  if (idCard$1.length === 15) {
70
70
  return Number(idCard$1.substring(14)) % 2 === 0 ? idCard.ID_CARD.SEX.WOMAN : idCard.ID_CARD.SEX.MAN;
@@ -186,7 +186,7 @@ function getDrawRgba() {
186
186
  /**
187
187
  * 颜色值转换
188
188
  * @param {number} num 转换的值
189
- * @returns
189
+ * @returns {string} 返回计算
190
190
  */
191
191
  function _hex(num) {
192
192
  if (num > 255) {
@@ -1,7 +1,61 @@
1
1
  'use strict';
2
2
 
3
3
  /**
4
- * 日期
4
+ * 日期相关的多语言常量配置(全局只读)
5
+ *
6
+ * AM_PM: 上午/下午多语言配置
7
+ * - zh: { AM: "上午", PM: "下午" }
8
+ * - en: { AM: "AM", PM: "PM" }
9
+ *
10
+ * WEEK: 星期多语言配置
11
+ * - zh.FULL: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"]
12
+ * - zh.SHORT: ["周日", "周一", "周二", "周三", "周四", "周五", "周六"]
13
+ * - zh.MINI: ["日", "一", "二", "三", "四", "五", "六"]
14
+ * - en.FULL: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]
15
+ * - en.SHORT: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]
16
+ * - en.MINI: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"]
17
+ *
18
+ * MONTH: 月份多语言配置
19
+ * - zh.FULL: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"]
20
+ * - zh.SHORT: ["一", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二"]
21
+ * - en.FULL: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]
22
+ * - en.SHORT: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
23
+ *
24
+ * QUARTER: 季度多语言配置
25
+ * - zh.FULL: ["第一季度", "第二季度", "第三季度", "第四季度"]
26
+ * - zh.SHORT: ["一季度", "二季度", "三季度", "四季度"]
27
+ * - zh.MINI: ["一", "二", "三", "四"]
28
+ * - en.FULL: ["quarter 1st", "quarter 2nd", "quarter 3rd", "quarter 4th"]
29
+ * - en.SHORT: ["Q1th", "Q2nd", "Q3rd", "Q4th"]
30
+ * - en.MINI: ["Q1", "Q2", "Q3", "Q4"]
31
+ *
32
+ * OVER_TIME: 剩余时间单位多语言配置
33
+ * - zh: { YEAR: "年", MONTH: "月", DATE: "日", HOUR: "时", MINUTE: "分", SECOND: "秒", MILLISECOND: "毫秒", DAY: "天", QUARTER: "季度" }
34
+ * - en: { YEAR: "year", MONTH: "month", DATE: "date", HOUR: "hour", MINUTE: "minute", SECOND: "second", MILLISECOND: "millisecond", DAY: "day", QUARTER: "quarter" }
35
+ *
36
+ * PASS_TIME: 过去时间描述多语言配置
37
+ * - zh: { YEAR: "年前", MONTH: "个月前", DAY: "天前", BEFORE_YESTERDAY: "前天", YESTERDAY: "昨天", TODAY: "今天", HOUR: "小时前", MINUTE: "分钟前", JUST: "刚刚" }
38
+ * - en: { YEAR: " year ago", MONTH: " month ago", DAY: " day ago", BEFORE_YESTERDAY: "before yesterday", YESTERDAY: " yesterday", TODAY: " today", HOUR: " hour ago", MINUTE: " minute ago", JUST: " just" }
39
+ *
40
+ * HOLIDAY: 节假日多语言配置
41
+ * - zh: ["元旦", "春节", "清明节", "劳动节", "端午节", "中秋节", "国庆节"]
42
+ * - en: ["New Year‘s Day", "Spring Festival", "Tomb Sweeping Day", "Labor Day", "Dragon Boat Festival", "Mid-Autumn Day", "National Day"]
43
+ *
44
+ * ZODIAC: 星座多语言配置
45
+ * - zh: ["摩羯座", "水瓶座", "双鱼座", "白羊座", "金牛座", "双子座", "巨蟹座", "狮子座", "处女座", "天秤座", "天蝎座", "射手座"]
46
+ * - en: ["Capricorn", "Aquarius", "Pisces", "Aries", "Taurus", "Gemini", "Cancer", "Leo", "Virgo", "Libra", "Scorpio", "Sagittarius"]
47
+ *
48
+ * CHINESE_ZODIAC: 生肖多语言配置
49
+ * - zh: ["鼠", "牛", "虎", "兔", "龙", "蛇", "马", "羊", "猴", "鸡", "狗", "猪"]
50
+ * - en: ["Rat", "Ox", "Tiger", "Rabbit", "Dragon", "Snake", "Horse", "Goat", "Monkey", "Rooster", "Dog", "Pig"]
51
+ *
52
+ * HEAVENLY_STEMS: 天干多语言配置
53
+ * - zh: ["甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "壬", "癸"]
54
+ * - en: ["Jia", "Yi", "Bing", "Ding", "Wu", "Ji", "Geng", "Xin", "Ren", "Gui"]
55
+ *
56
+ * EARTHLY_BRANCHES: 地支多语言配置
57
+ * - zh: ["子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥"]
58
+ * - en: ["Zi", "Chou", "Yin", "Mao", "Chen", "Si", "Wu", "Wei", "Shen", "You", "Xu", "Hai"]
5
59
  */
6
60
  const DATE = {
7
61
  // 上午和下午
@@ -1,7 +1,48 @@
1
1
  'use strict';
2
2
 
3
3
  /**
4
- * 身份证号
4
+ * 身份证号相关常量配置(全局只读)
5
+ *
6
+ * PROVINCE: 身份证号前两位对应的省份/地区编码映射
7
+ * - 11: 北京
8
+ * - 12: 天津
9
+ * - 13: 河北
10
+ * - 14: 山西
11
+ * - 15: 内蒙古
12
+ * - 21: 辽宁
13
+ * - 22: 吉林
14
+ * - 23: 黑龙江
15
+ * - 31: 上海
16
+ * - 32: 江苏
17
+ * - 33: 浙江
18
+ * - 34: 安徽
19
+ * - 35: 福建
20
+ * - 36: 江西
21
+ * - 37: 山东
22
+ * - 41: 河南
23
+ * - 42: 湖北
24
+ * - 43: 湖南
25
+ * - 44: 广东
26
+ * - 45: 广西
27
+ * - 46: 海南
28
+ * - 50: 重庆
29
+ * - 51: 四川
30
+ * - 52: 贵州
31
+ * - 53: 云南
32
+ * - 54: 西藏
33
+ * - 61: 陕西
34
+ * - 62: 甘肃
35
+ * - 63: 青海
36
+ * - 64: 宁夏
37
+ * - 65: 新疆
38
+ * - 71: 台湾
39
+ * - 81: 香港
40
+ * - 82: 澳门
41
+ * - 91: 国外
42
+ *
43
+ * SEX: 身份证号解析的性别映射
44
+ * - MAN: 男
45
+ * - WOMAN: 女
5
46
  */
6
47
  const ID_CARD = {
7
48
  // 身份证号对应的省
@@ -1,7 +1,122 @@
1
1
  'use strict';
2
2
 
3
- /*
4
- * 键盘码
3
+ /**
4
+ * 键盘码相关常量配置(全局只读)
5
+ *
6
+ * 字符键:
7
+ * - 8: Backspace
8
+ * - 9: Tab
9
+ * - 13: Enter
10
+ * - 16: Shift
11
+ * - 17: Ctrl
12
+ * - 18: Alt
13
+ * - 19: Pause
14
+ * - 20: Caps Lock
15
+ * - 27: Escape
16
+ * - 32: Space
17
+ * - 33: Page Up
18
+ * - 34: Page Down
19
+ * - 35: End
20
+ * - 36: Home
21
+ * - 37: Left
22
+ * - 38: Up
23
+ * - 39: Right
24
+ * - 40: Down
25
+ * - 42: Print Screen
26
+ * - 45: Insert
27
+ * - 46: Delete
28
+ *
29
+ * 数字键:
30
+ * - 48: 0
31
+ * - 49: 1
32
+ * - 50: 2
33
+ * - 51: 3
34
+ * - 52: 4
35
+ * - 53: 5
36
+ * - 54: 6
37
+ * - 55: 7
38
+ * - 56: 8
39
+ * - 57: 9
40
+ *
41
+ * 字母键:
42
+ * - 65: A
43
+ * - 66: B
44
+ * - 67: C
45
+ * - 68: D
46
+ * - 69: E
47
+ * - 70: F
48
+ * - 71: G
49
+ * - 72: H
50
+ * - 73: I
51
+ * - 74: J
52
+ * - 75: K
53
+ * - 76: L
54
+ * - 77: M
55
+ * - 78: N
56
+ * - 79: O
57
+ * - 80: P
58
+ * - 81: Q
59
+ * - 82: R
60
+ * - 83: S
61
+ * - 84: T
62
+ * - 85: U
63
+ * - 86: V
64
+ * - 87: W
65
+ * - 88: X
66
+ * - 89: Y
67
+ * - 90: Z
68
+ *
69
+ * window 相关键:
70
+ * - 91: Windows
71
+ * - 93: Right Click
72
+ *
73
+ * 数字小键盘(Numpad):
74
+ * - 96: Numpad 0
75
+ * - 97: Numpad 1
76
+ * - 98: Numpad 2
77
+ * - 99: Numpad 3
78
+ * - 100: Numpad 4
79
+ * - 101: Numpad 5
80
+ * - 102: Numpad 6
81
+ * - 103: Numpad 7
82
+ * - 104: Numpad 8
83
+ * - 105: Numpad 9
84
+ * - 106: Numpad *
85
+ * - 107: Numpad +
86
+ * - 109: Numpad -
87
+ * - 110: Numpad .
88
+ * - 111: Numpad /
89
+ *
90
+ * F功能键:
91
+ * - 112: F1
92
+ * - 113: F2
93
+ * - 114: F3
94
+ * - 115: F4
95
+ * - 116: F5
96
+ * - 117: F6
97
+ * - 118: F7
98
+ * - 119: F8
99
+ * - 120: F9
100
+ * - 121: F10
101
+ * - 122: F11
102
+ * - 123: F12
103
+ *
104
+ * 特殊符号/功能键:
105
+ * - 144: Num Lock
106
+ * - 145: Scroll Lock
107
+ * - 182: My Computer
108
+ * - 183: My Calculator
109
+ * - 186: ;
110
+ * - 187: =
111
+ * - 188: ,
112
+ * - 189: -
113
+ * - 190: .
114
+ * - 191: /
115
+ * - 192: `
116
+ * - 219: [
117
+ * - 220: \
118
+ * - 221: ]
119
+ * - 222: '
5
120
  */
6
121
  const KEYCODE = {
7
122
  // 字符键
@@ -1,7 +1,13 @@
1
1
  'use strict';
2
2
 
3
3
  /**
4
- * 语言
4
+ * 语言相关常量配置(全局只读)
5
+ *
6
+ * ZH: 中文
7
+ * - zh
8
+ *
9
+ * EN: 英文
10
+ * - en
5
11
  */
6
12
  const LANG = {
7
13
  // 中文
@@ -1,7 +1,15 @@
1
1
  'use strict';
2
2
 
3
3
  /**
4
- * 数学
4
+ * 数学计算相关常量配置(全局只读)
5
+ *
6
+ * ROUND: 正常四舍五入
7
+ * - 取值:0
8
+ * - 示例:1.354保留两位是1.35;1.355保留两位是1.36
9
+ *
10
+ * ROUND_FLOOR: 向下舍出
11
+ * - 取值:1
12
+ * - 示例:1.354保留两位是1.35;1.355保留两位是1.35
5
13
  */
6
14
  const MATH = {
7
15
  // 正常四舍五入,如:1.354保留两位是1.35;1.355保留两位是1.36;
@@ -1,27 +1,50 @@
1
1
  'use strict';
2
2
 
3
3
  /**
4
- * 正则
4
+ * 正则表达式相关常量配置(全局只读)
5
+ *
6
+ * CH: 中文汉字
7
+ * EN: 英文字母
8
+ * LOWER_CASE: 小写字母
9
+ * UPPER_CASE: 大写字母
10
+ * CH_NAME: 中文姓名(2-16位)
11
+ * EN_NAME: 英文姓名(1-20位)
12
+ * NUMBER: 数字(包含正数和负数)
13
+ * INTEGER: 整数(包含:0,正整数和负整数)
14
+ * DECIMAL: 小数(包含正小数和负小数)
15
+ * INT_OR_FLOAT: 正整数或者保留两位小数
16
+ * MOBILE: 手机号码(支持+86)
17
+ * PHONE: 固定电话号码(比如:0755-1111111)
18
+ * EMAIL: 邮箱
19
+ * ID_CARD: 一代15位或二代18位身份证
20
+ * ID_CARD15: 仅校验一代15位身份证
21
+ * ID_CARD18: 仅校验二代18位身份证
22
+ * BANK_CARD: 银行卡号
23
+ * POST_CODE: 邮政编码
24
+ * URL: url地址(可获取主机地址、主机名、端口号、协议、查询参数、hash等信息)
25
+ * IP: ip地址
26
+ * IP6: IPv6地址
27
+ * EXTERNAL: 外链(http、https、mail、tel电话)
5
28
  */
6
29
  const REGEXP = {
7
30
  // 中文汉字
8
31
  CH: /^[\u4E00-\u9FA5]+$/,
9
- // 英文字母
10
- EN: /^[a-zA-Z]$/,
32
+ // 英文字母,1个以上
33
+ EN: /^[a-zA-Z]+$/,
11
34
  // 小写字母
12
35
  LOWER_CASE: /^[a-z]+$/,
13
36
  // 大写字母
14
37
  UPPER_CASE: /^[A-Z]+$/,
15
- // 中文姓名,2-16
38
+ // 中文姓名,2-16位(支持少数民族姓名间隔符「·」)
16
39
  CH_NAME: /^[\u4e00-\u9fa5·]{2,16}$/,
17
- // 英文姓名,0-20位
18
- EN_NAME: /(^[a-zA-Z][a-zA-Z\s]{0,20}[a-zA-Z]$)/,
40
+ // 英文姓名,1-20位
41
+ EN_NAME: /^[a-zA-Z\s]{1,20}$/,
19
42
  // 数字,包含正数和负数
20
43
  NUMBER: /^([-+])?\d+(\.\d+)?$/,
21
44
  // 整数,包含:0,正整数和负整数
22
45
  INTEGER: /^(0|[1-9][0-9]*|-[1-9][0-9]*)$/,
23
46
  // 小数,包含正小数和负小数
24
- DECIMAL: /^\d+\.\d+$/,
47
+ DECIMAL: /^([-+])?\d+\.\d+$/,
25
48
  // 正整数或者保留两位小数
26
49
  INT_OR_FLOAT: /(^[1-9][0-9]*$)|(^[1-9][0-9]*\.[0-9]{1,2}$)|(^0\.[0-9]{1,2}$)|(^0$)/,
27
50
  // 手机号码,支持+86
@@ -30,7 +53,7 @@ const REGEXP = {
30
53
  PHONE: /^(?:(?:\d{3}-)?\d{8}|^(?:\d{4}-)?\d{7,8})(?:-\d+)?$/,
31
54
  // 邮箱
32
55
  EMAIL: /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/,
33
- // 一代15位和二代18位身份证
56
+ // 一代15位或二代18位身份证
34
57
  ID_CARD: /(^\d{8}(0\d|10|11|12)([0-2]\d|30|31)\d{3}$)|(^\d{6}(18|19|20)\d{2}(0[1-9]|10|11|12)([0-2]\d|30|31)\d{3}(\d|X|x)$)/,
35
58
  // 仅校验一代15位身份证
36
59
  ID_CARD15: /(^\d{8}(0\d|10|11|12)([0-2]\d|30|31)\d{3}$)/,
@@ -45,9 +68,9 @@ const REGEXP = {
45
68
  // ip地址
46
69
  IP: /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,
47
70
  // IPv6地址
48
- IP6: /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,
71
+ IP6: /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|::([0-9a-fA-F]{1,4}:){0,6}[0-9a-fA-F]{1,4}|[0-9a-fA-F]{1,4}::([0-9a-fA-F]{1,4}:){0,5}[0-9a-fA-F]{1,4})$/i,
49
72
  // 是外链,http,https,mail,tel电话
50
- EXTERNAL: /^(http?:|https?:|mailto:|tel:)/,
73
+ EXTERNAL: /^(http:|https:|ftp:|ftps:|mailto:|tel:)/i,
51
74
  };
52
75
 
53
76
  exports.REGEXP = REGEXP;
@@ -1,7 +1,16 @@
1
1
  'use strict';
2
2
 
3
3
  /**
4
- * 排序
4
+ * 排序相关常量配置(全局只读)
5
+ *
6
+ * DESC: 降序
7
+ * - 取值:0
8
+ *
9
+ * ASC: 升序
10
+ * - 取值:1
11
+ *
12
+ * RANDOM: 随机排序
13
+ * - 取值:2
5
14
  */
6
15
  const SORT = {
7
16
  // 降序