@allahjs/utils 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 +244 -0
- package/dist/.tsbuildinfo +1 -0
- package/dist/browser/cookieUtils/index.cjs +100 -0
- package/dist/browser/cookieUtils/index.cjs.map +1 -0
- package/dist/browser/cookieUtils/index.d.ts +55 -0
- package/dist/browser/domUtils/index.cjs +237 -0
- package/dist/browser/domUtils/index.cjs.map +1 -0
- package/dist/browser/domUtils/index.d.ts +116 -0
- package/dist/browser/index.cjs +12 -0
- package/dist/browser/index.cjs.map +1 -0
- package/dist/browser/index.d.ts +3 -0
- package/dist/browser/urlUtils/index.cjs +262 -0
- package/dist/browser/urlUtils/index.cjs.map +1 -0
- package/dist/browser/urlUtils/index.d.ts +72 -0
- package/dist/core/arrayUtils/index.cjs +109 -0
- package/dist/core/arrayUtils/index.cjs.map +1 -0
- package/dist/core/arrayUtils/index.d.ts +67 -0
- package/dist/core/asyncUtils/index.cjs +180 -0
- package/dist/core/asyncUtils/index.cjs.map +1 -0
- package/dist/core/asyncUtils/index.d.ts +80 -0
- package/dist/core/colorUtils/index.cjs +38 -0
- package/dist/core/colorUtils/index.cjs.map +1 -0
- package/dist/core/colorUtils/index.d.ts +10 -0
- package/dist/core/cryptoUtils/index.cjs +428 -0
- package/dist/core/cryptoUtils/index.cjs.map +1 -0
- package/dist/core/cryptoUtils/index.d.ts +132 -0
- package/dist/core/dateUtils/index.cjs +245 -0
- package/dist/core/dateUtils/index.cjs.map +1 -0
- package/dist/core/dateUtils/index.d.ts +117 -0
- package/dist/core/index.cjs +34 -0
- package/dist/core/index.cjs.map +1 -0
- package/dist/core/index.d.ts +118 -0
- package/dist/core/numberUtils/index.cjs +126 -0
- package/dist/core/numberUtils/index.cjs.map +1 -0
- package/dist/core/numberUtils/index.d.ts +91 -0
- package/dist/core/objectUtils/index.cjs +249 -0
- package/dist/core/objectUtils/index.cjs.map +1 -0
- package/dist/core/objectUtils/index.d.ts +91 -0
- package/dist/core/pageUtils/index.cjs +74 -0
- package/dist/core/pageUtils/index.cjs.map +1 -0
- package/dist/core/pageUtils/index.d.ts +52 -0
- package/dist/core/stringUtils/index.cjs +163 -0
- package/dist/core/stringUtils/index.cjs.map +1 -0
- package/dist/core/stringUtils/index.d.ts +69 -0
- package/dist/core/validationUtils/index.cjs +154 -0
- package/dist/core/validationUtils/index.cjs.map +1 -0
- package/dist/core/validationUtils/index.d.ts +87 -0
- package/dist/esm/browser/cookieUtils/index.d.ts +55 -0
- package/dist/esm/browser/cookieUtils/index.js +96 -0
- package/dist/esm/browser/cookieUtils/index.js.map +1 -0
- package/dist/esm/browser/domUtils/index.d.ts +116 -0
- package/dist/esm/browser/domUtils/index.js +233 -0
- package/dist/esm/browser/domUtils/index.js.map +1 -0
- package/dist/esm/browser/index.d.ts +3 -0
- package/dist/esm/browser/index.js +4 -0
- package/dist/esm/browser/index.js.map +1 -0
- package/dist/esm/browser/urlUtils/index.d.ts +72 -0
- package/dist/esm/browser/urlUtils/index.js +248 -0
- package/dist/esm/browser/urlUtils/index.js.map +1 -0
- package/dist/esm/core/arrayUtils/index.d.ts +67 -0
- package/dist/esm/core/arrayUtils/index.js +105 -0
- package/dist/esm/core/arrayUtils/index.js.map +1 -0
- package/dist/esm/core/asyncUtils/index.d.ts +80 -0
- package/dist/esm/core/asyncUtils/index.js +175 -0
- package/dist/esm/core/asyncUtils/index.js.map +1 -0
- package/dist/esm/core/colorUtils/index.d.ts +10 -0
- package/dist/esm/core/colorUtils/index.js +34 -0
- package/dist/esm/core/colorUtils/index.js.map +1 -0
- package/dist/esm/core/cryptoUtils/index.d.ts +132 -0
- package/dist/esm/core/cryptoUtils/index.js +424 -0
- package/dist/esm/core/cryptoUtils/index.js.map +1 -0
- package/dist/esm/core/dateUtils/index.d.ts +117 -0
- package/dist/esm/core/dateUtils/index.js +241 -0
- package/dist/esm/core/dateUtils/index.js.map +1 -0
- package/dist/esm/core/index.d.ts +118 -0
- package/dist/esm/core/index.js +30 -0
- package/dist/esm/core/index.js.map +1 -0
- package/dist/esm/core/numberUtils/index.d.ts +91 -0
- package/dist/esm/core/numberUtils/index.js +122 -0
- package/dist/esm/core/numberUtils/index.js.map +1 -0
- package/dist/esm/core/objectUtils/index.d.ts +91 -0
- package/dist/esm/core/objectUtils/index.js +245 -0
- package/dist/esm/core/objectUtils/index.js.map +1 -0
- package/dist/esm/core/pageUtils/index.d.ts +52 -0
- package/dist/esm/core/pageUtils/index.js +66 -0
- package/dist/esm/core/pageUtils/index.js.map +1 -0
- package/dist/esm/core/stringUtils/index.d.ts +69 -0
- package/dist/esm/core/stringUtils/index.js +159 -0
- package/dist/esm/core/stringUtils/index.js.map +1 -0
- package/dist/esm/core/validationUtils/index.d.ts +87 -0
- package/dist/esm/core/validationUtils/index.js +150 -0
- package/dist/esm/core/validationUtils/index.js.map +1 -0
- package/dist/esm/index.d.ts +22 -0
- package/dist/esm/index.js +26 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/request/ReqQueue/index.js +59 -0
- package/dist/esm/request/ReqQueue/index.js.map +1 -0
- package/dist/esm/request/httpCode/index.js +49 -0
- package/dist/esm/request/httpCode/index.js.map +1 -0
- package/dist/esm/request/httpUtils/index.js +359 -0
- package/dist/esm/request/httpUtils/index.js.map +1 -0
- package/dist/esm/request/index.d.ts +15 -0
- package/dist/esm/request/index.js +166 -0
- package/dist/esm/request/index.js.map +1 -0
- package/dist/esm/request/typings/index.d.ts +184 -0
- package/dist/esm/request/uniRequest/index.js +62 -0
- package/dist/esm/request/uniRequest/index.js.map +1 -0
- package/dist/esm/types/data/index.d.ts +188 -0
- package/dist/esm/types/data/index.js +13 -0
- package/dist/esm/types/data/index.js.map +1 -0
- package/dist/esm/types/index.d.ts +1 -0
- package/dist/esm/types/index.js +2 -0
- package/dist/esm/types/index.js.map +1 -0
- package/dist/esm/uniapp/Tips/index.d.ts +295 -0
- package/dist/esm/uniapp/Tips/index.js +498 -0
- package/dist/esm/uniapp/Tips/index.js.map +1 -0
- package/dist/esm/uniapp/cloudUtils/index.d.ts +56 -0
- package/dist/esm/uniapp/cloudUtils/index.js +90 -0
- package/dist/esm/uniapp/cloudUtils/index.js.map +1 -0
- package/dist/esm/uniapp/index.d.ts +3 -0
- package/dist/esm/uniapp/index.js +4 -0
- package/dist/esm/uniapp/index.js.map +1 -0
- package/dist/esm/uniapp/uniUtils/index.d.ts +113 -0
- package/dist/esm/uniapp/uniUtils/index.js +199 -0
- package/dist/esm/uniapp/uniUtils/index.js.map +1 -0
- package/dist/index.cjs +88 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/request/ReqQueue/index.cjs +63 -0
- package/dist/request/ReqQueue/index.cjs.map +1 -0
- package/dist/request/httpCode/index.cjs +52 -0
- package/dist/request/httpCode/index.cjs.map +1 -0
- package/dist/request/httpUtils/index.cjs +365 -0
- package/dist/request/httpUtils/index.cjs.map +1 -0
- package/dist/request/index.cjs +170 -0
- package/dist/request/index.cjs.map +1 -0
- package/dist/request/index.d.ts +15 -0
- package/dist/request/typings/index.d.ts +184 -0
- package/dist/request/uniRequest/index.cjs +66 -0
- package/dist/request/uniRequest/index.cjs.map +1 -0
- package/dist/types/data/index.cjs +15 -0
- package/dist/types/data/index.cjs.map +1 -0
- package/dist/types/data/index.d.ts +188 -0
- package/dist/types/index.cjs +8 -0
- package/dist/types/index.cjs.map +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/uniapp/Tips/index.cjs +521 -0
- package/dist/uniapp/Tips/index.cjs.map +1 -0
- package/dist/uniapp/Tips/index.d.ts +295 -0
- package/dist/uniapp/cloudUtils/index.cjs +92 -0
- package/dist/uniapp/cloudUtils/index.cjs.map +1 -0
- package/dist/uniapp/cloudUtils/index.d.ts +56 -0
- package/dist/uniapp/index.cjs +53 -0
- package/dist/uniapp/index.cjs.map +1 -0
- package/dist/uniapp/index.d.ts +3 -0
- package/dist/uniapp/uniUtils/index.cjs +213 -0
- package/dist/uniapp/uniUtils/index.cjs.map +1 -0
- package/dist/uniapp/uniUtils/index.d.ts +113 -0
- package/package.json +129 -0
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var dayjs = require('dayjs');
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* 日期工具函数
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* 日期工具对象
|
|
12
|
+
*/
|
|
13
|
+
const dateUtils = {
|
|
14
|
+
/**
|
|
15
|
+
* 格式化日期
|
|
16
|
+
* @param date 日期对象或时间戳
|
|
17
|
+
* @param format 格式字符串,如 'YYYY-MM-DD HH:mm:ss'
|
|
18
|
+
* @returns 格式化后的日期字符串
|
|
19
|
+
*/
|
|
20
|
+
formatDate(date, format = 'YYYY-MM-DD HH:mm:ss') {
|
|
21
|
+
if (!date)
|
|
22
|
+
return '未知';
|
|
23
|
+
return dayjs(date).format(format);
|
|
24
|
+
},
|
|
25
|
+
/**
|
|
26
|
+
* 获取相对时间描述
|
|
27
|
+
* @param date 日期对象或时间戳
|
|
28
|
+
* @returns 相对时间描述,如 '2小时前'
|
|
29
|
+
*/
|
|
30
|
+
timeAgo(date) {
|
|
31
|
+
const now = dayjs();
|
|
32
|
+
const target = dayjs(date);
|
|
33
|
+
const diff = now.diff(target);
|
|
34
|
+
const minute = 60 * 1000;
|
|
35
|
+
const hour = minute * 60;
|
|
36
|
+
const day = hour * 24;
|
|
37
|
+
const month = day * 30;
|
|
38
|
+
const year = day * 365;
|
|
39
|
+
if (diff < minute) {
|
|
40
|
+
return '刚刚';
|
|
41
|
+
}
|
|
42
|
+
else if (diff < hour) {
|
|
43
|
+
return `${Math.floor(diff / minute)}分钟前`;
|
|
44
|
+
}
|
|
45
|
+
else if (diff < day) {
|
|
46
|
+
return `${Math.floor(diff / hour)}小时前`;
|
|
47
|
+
}
|
|
48
|
+
else if (diff < month) {
|
|
49
|
+
return `${Math.floor(diff / day)}天前`;
|
|
50
|
+
}
|
|
51
|
+
else if (diff < year) {
|
|
52
|
+
return `${Math.floor(diff / month)}个月前`;
|
|
53
|
+
}
|
|
54
|
+
return `${Math.floor(diff / year)}年前`;
|
|
55
|
+
},
|
|
56
|
+
/**
|
|
57
|
+
* 添加时间
|
|
58
|
+
* @param date 日期对象或时间戳
|
|
59
|
+
* @param amount 数量
|
|
60
|
+
* @param unit 单位:'years' | 'months' | 'days' | 'hours' | 'minutes' | 'seconds'
|
|
61
|
+
* @returns 新的日期对象
|
|
62
|
+
*/
|
|
63
|
+
addTime(date, amount, unit) {
|
|
64
|
+
const unitMap = {
|
|
65
|
+
years: 'year',
|
|
66
|
+
months: 'month',
|
|
67
|
+
days: 'day',
|
|
68
|
+
hours: 'hour',
|
|
69
|
+
minutes: 'minute',
|
|
70
|
+
seconds: 'second'
|
|
71
|
+
};
|
|
72
|
+
return dayjs(date).add(amount, unitMap[unit]).toDate();
|
|
73
|
+
},
|
|
74
|
+
/**
|
|
75
|
+
* 获取日期范围的开始和结束
|
|
76
|
+
* @param date 日期对象或时间戳
|
|
77
|
+
* @param unit 单位:'day' | 'week' | 'month' | 'year'
|
|
78
|
+
* @returns 包含开始和结束日期的对象
|
|
79
|
+
*/
|
|
80
|
+
getDateRange(date, unit) {
|
|
81
|
+
const d = dayjs(date);
|
|
82
|
+
const start = d.startOf(unit).toDate();
|
|
83
|
+
const end = d.endOf(unit).add(1, 'millisecond').toDate();
|
|
84
|
+
return { start, end };
|
|
85
|
+
},
|
|
86
|
+
/**
|
|
87
|
+
* 判断是否为同一天
|
|
88
|
+
* @param date1 日期1
|
|
89
|
+
* @param date2 日期2
|
|
90
|
+
* @returns 是否为同一天
|
|
91
|
+
*/
|
|
92
|
+
isSameDay(date1, date2) {
|
|
93
|
+
return dayjs(date1).isSame(dayjs(date2), 'day');
|
|
94
|
+
},
|
|
95
|
+
/**
|
|
96
|
+
* 判断是否为闰年
|
|
97
|
+
* @param year 年份
|
|
98
|
+
* @returns 是否为闰年
|
|
99
|
+
*/
|
|
100
|
+
isLeapYear(year) {
|
|
101
|
+
return (year % 4 === 0 && year % 100 !== 0) || (year % 400 === 0);
|
|
102
|
+
},
|
|
103
|
+
/**
|
|
104
|
+
* 获取月份天数
|
|
105
|
+
* @param year 年份
|
|
106
|
+
* @param month 月份(0-11)
|
|
107
|
+
* @returns 天数
|
|
108
|
+
*/
|
|
109
|
+
getDaysInMonth(year, month) {
|
|
110
|
+
return dayjs().year(year).month(month).daysInMonth();
|
|
111
|
+
},
|
|
112
|
+
/**
|
|
113
|
+
* 获取最近几年的年份选项
|
|
114
|
+
* @param num 几年?默认三年(向上取)
|
|
115
|
+
* @returns 年份选项数组
|
|
116
|
+
*/
|
|
117
|
+
getYearOptions(num = 3) {
|
|
118
|
+
const yearList = [];
|
|
119
|
+
const currentYear = dayjs().year();
|
|
120
|
+
for (let i = 0; i < num; i += 1) {
|
|
121
|
+
const year = currentYear + i;
|
|
122
|
+
yearList.push({
|
|
123
|
+
id: year,
|
|
124
|
+
text: year
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
return yearList;
|
|
128
|
+
},
|
|
129
|
+
/**
|
|
130
|
+
* 获取最近几年的年份选项(向下取)
|
|
131
|
+
* @param num 几年?默认三年(向下取)
|
|
132
|
+
* @returns 年份选项数组
|
|
133
|
+
*/
|
|
134
|
+
getPastYearOptions(num = 3) {
|
|
135
|
+
const yearList = [];
|
|
136
|
+
const currentYear = dayjs().year();
|
|
137
|
+
for (let i = 0; i < num; i += 1) {
|
|
138
|
+
const year = currentYear - i;
|
|
139
|
+
yearList.push({
|
|
140
|
+
id: year,
|
|
141
|
+
text: year
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
return yearList;
|
|
145
|
+
},
|
|
146
|
+
/**
|
|
147
|
+
* 格式化时间显示
|
|
148
|
+
* @param timestamp 时间戳(字符串或数字)
|
|
149
|
+
* @returns 格式化后的时间显示字符串
|
|
150
|
+
*/
|
|
151
|
+
formatTime(timestamp) {
|
|
152
|
+
const date = dayjs(timestamp);
|
|
153
|
+
const now = dayjs();
|
|
154
|
+
const diff = now.diff(date);
|
|
155
|
+
// 小于1分钟
|
|
156
|
+
if (diff < 60 * 1000) {
|
|
157
|
+
return '刚刚';
|
|
158
|
+
}
|
|
159
|
+
// 小于1小时
|
|
160
|
+
if (diff < 60 * 60 * 1000) {
|
|
161
|
+
return `${Math.floor(diff / (60 * 1000))}分钟前`;
|
|
162
|
+
}
|
|
163
|
+
// 小于1天
|
|
164
|
+
if (diff < 24 * 60 * 60 * 1000) {
|
|
165
|
+
return `${Math.floor(diff / (60 * 60 * 1000))}小时前`;
|
|
166
|
+
}
|
|
167
|
+
// 小于7天
|
|
168
|
+
if (diff < 7 * 24 * 60 * 60 * 1000) {
|
|
169
|
+
return `${Math.floor(diff / (24 * 60 * 60 * 1000))}天前`;
|
|
170
|
+
}
|
|
171
|
+
// 超过7天显示具体日期
|
|
172
|
+
return date.format('M月D日 HH:mm');
|
|
173
|
+
},
|
|
174
|
+
/**
|
|
175
|
+
* 根据当前的时间,来生成是凌晨、早上、中午、下午、晚上,返回对应的字符串
|
|
176
|
+
*/
|
|
177
|
+
getDayTimeStr: (date = dayjs()) => {
|
|
178
|
+
const hour = date.hour();
|
|
179
|
+
if (hour >= 0 && hour < 6) {
|
|
180
|
+
return '凌晨';
|
|
181
|
+
}
|
|
182
|
+
else if (hour >= 6 && hour < 12) {
|
|
183
|
+
return '上午';
|
|
184
|
+
}
|
|
185
|
+
else if (hour >= 12 && hour < 14) {
|
|
186
|
+
return '中午';
|
|
187
|
+
}
|
|
188
|
+
else if (hour >= 14 && hour < 18) {
|
|
189
|
+
return '下午';
|
|
190
|
+
}
|
|
191
|
+
else if (hour >= 18 && hour < 24) {
|
|
192
|
+
return '晚上';
|
|
193
|
+
}
|
|
194
|
+
return '';
|
|
195
|
+
},
|
|
196
|
+
/**
|
|
197
|
+
* 安全格式化日期
|
|
198
|
+
*
|
|
199
|
+
* @param date - 要格式化的日期,可以是字符串、数字、Date 对象或 dayjs 对象
|
|
200
|
+
* @param format - 输出的日期格式,默认为 "YYYY-MM-DD"
|
|
201
|
+
* @returns 格式化后的日期字符串;如果输入无效,则返回 "-"
|
|
202
|
+
*
|
|
203
|
+
* @example
|
|
204
|
+
* safeFormat("2025-09-20") // "2025-09-20"
|
|
205
|
+
* safeFormat("2025-13-40") // "-"
|
|
206
|
+
* safeFormat(new Date(), "YYYY/MM/DD HH:mm") // "2025/09/20 16:30"
|
|
207
|
+
*/
|
|
208
|
+
safeFormat: (date, format = 'YYYY-MM-DD') => {
|
|
209
|
+
if (date === null || date === undefined || date === '') {
|
|
210
|
+
return '-';
|
|
211
|
+
}
|
|
212
|
+
const d = dayjs(date);
|
|
213
|
+
return d.isValid() ? d.format(format) : '-';
|
|
214
|
+
},
|
|
215
|
+
/**
|
|
216
|
+
* 安全格式化时间
|
|
217
|
+
*/
|
|
218
|
+
safeFormatTime: (date, format = 'YYYY-MM-DD HH:mm:ss') => {
|
|
219
|
+
return dateUtils.safeFormat(date, format);
|
|
220
|
+
},
|
|
221
|
+
/**
|
|
222
|
+
* 格式化日期范围显示
|
|
223
|
+
* 将开始时间和结束时间格式化为范围显示
|
|
224
|
+
* @param startTime 开始时间
|
|
225
|
+
* @param endTime 结束时间
|
|
226
|
+
* @returns 格式化后的日期范围字符串
|
|
227
|
+
*/
|
|
228
|
+
formatDateRange: (startTime, endTime) => {
|
|
229
|
+
const start = dateUtils.safeFormat(startTime);
|
|
230
|
+
const end = dateUtils.safeFormat(endTime);
|
|
231
|
+
if (start === '-' && end === '-') {
|
|
232
|
+
return '-';
|
|
233
|
+
}
|
|
234
|
+
else if (start === '-') {
|
|
235
|
+
return `至 ${end}`;
|
|
236
|
+
}
|
|
237
|
+
else if (end === '-') {
|
|
238
|
+
return `${start} 至 -`;
|
|
239
|
+
}
|
|
240
|
+
return `${start} - ${end}`;
|
|
241
|
+
}
|
|
242
|
+
};
|
|
243
|
+
|
|
244
|
+
exports.default = dateUtils;
|
|
245
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../src/core/dateUtils/index.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { Dayjs } from 'dayjs';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* 日期工具函数
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* 日期工具对象
|
|
9
|
+
*/
|
|
10
|
+
declare const dateUtils: {
|
|
11
|
+
/**
|
|
12
|
+
* 格式化日期
|
|
13
|
+
* @param date 日期对象或时间戳
|
|
14
|
+
* @param format 格式字符串,如 'YYYY-MM-DD HH:mm:ss'
|
|
15
|
+
* @returns 格式化后的日期字符串
|
|
16
|
+
*/
|
|
17
|
+
formatDate(date: Date | number | string, format?: string): string;
|
|
18
|
+
/**
|
|
19
|
+
* 获取相对时间描述
|
|
20
|
+
* @param date 日期对象或时间戳
|
|
21
|
+
* @returns 相对时间描述,如 '2小时前'
|
|
22
|
+
*/
|
|
23
|
+
timeAgo(date: Date | number | string): string;
|
|
24
|
+
/**
|
|
25
|
+
* 添加时间
|
|
26
|
+
* @param date 日期对象或时间戳
|
|
27
|
+
* @param amount 数量
|
|
28
|
+
* @param unit 单位:'years' | 'months' | 'days' | 'hours' | 'minutes' | 'seconds'
|
|
29
|
+
* @returns 新的日期对象
|
|
30
|
+
*/
|
|
31
|
+
addTime(date: Date | number | string, amount: number, unit: "years" | "months" | "days" | "hours" | "minutes" | "seconds"): Date;
|
|
32
|
+
/**
|
|
33
|
+
* 获取日期范围的开始和结束
|
|
34
|
+
* @param date 日期对象或时间戳
|
|
35
|
+
* @param unit 单位:'day' | 'week' | 'month' | 'year'
|
|
36
|
+
* @returns 包含开始和结束日期的对象
|
|
37
|
+
*/
|
|
38
|
+
getDateRange(date: Date | number | string, unit: "day" | "week" | "month" | "year"): {
|
|
39
|
+
start: Date;
|
|
40
|
+
end: Date;
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* 判断是否为同一天
|
|
44
|
+
* @param date1 日期1
|
|
45
|
+
* @param date2 日期2
|
|
46
|
+
* @returns 是否为同一天
|
|
47
|
+
*/
|
|
48
|
+
isSameDay(date1: Date | number | string, date2: Date | number | string): boolean;
|
|
49
|
+
/**
|
|
50
|
+
* 判断是否为闰年
|
|
51
|
+
* @param year 年份
|
|
52
|
+
* @returns 是否为闰年
|
|
53
|
+
*/
|
|
54
|
+
isLeapYear(year: number): boolean;
|
|
55
|
+
/**
|
|
56
|
+
* 获取月份天数
|
|
57
|
+
* @param year 年份
|
|
58
|
+
* @param month 月份(0-11)
|
|
59
|
+
* @returns 天数
|
|
60
|
+
*/
|
|
61
|
+
getDaysInMonth(year: number, month: number): number;
|
|
62
|
+
/**
|
|
63
|
+
* 获取最近几年的年份选项
|
|
64
|
+
* @param num 几年?默认三年(向上取)
|
|
65
|
+
* @returns 年份选项数组
|
|
66
|
+
*/
|
|
67
|
+
getYearOptions(num?: number): Array<{
|
|
68
|
+
id: number;
|
|
69
|
+
text: number;
|
|
70
|
+
}>;
|
|
71
|
+
/**
|
|
72
|
+
* 获取最近几年的年份选项(向下取)
|
|
73
|
+
* @param num 几年?默认三年(向下取)
|
|
74
|
+
* @returns 年份选项数组
|
|
75
|
+
*/
|
|
76
|
+
getPastYearOptions(num?: number): Array<{
|
|
77
|
+
id: number;
|
|
78
|
+
text: number;
|
|
79
|
+
}>;
|
|
80
|
+
/**
|
|
81
|
+
* 格式化时间显示
|
|
82
|
+
* @param timestamp 时间戳(字符串或数字)
|
|
83
|
+
* @returns 格式化后的时间显示字符串
|
|
84
|
+
*/
|
|
85
|
+
formatTime(timestamp: string | number): string;
|
|
86
|
+
/**
|
|
87
|
+
* 根据当前的时间,来生成是凌晨、早上、中午、下午、晚上,返回对应的字符串
|
|
88
|
+
*/
|
|
89
|
+
getDayTimeStr: (date?: Dayjs) => "" | "凌晨" | "上午" | "中午" | "下午" | "晚上";
|
|
90
|
+
/**
|
|
91
|
+
* 安全格式化日期
|
|
92
|
+
*
|
|
93
|
+
* @param date - 要格式化的日期,可以是字符串、数字、Date 对象或 dayjs 对象
|
|
94
|
+
* @param format - 输出的日期格式,默认为 "YYYY-MM-DD"
|
|
95
|
+
* @returns 格式化后的日期字符串;如果输入无效,则返回 "-"
|
|
96
|
+
*
|
|
97
|
+
* @example
|
|
98
|
+
* safeFormat("2025-09-20") // "2025-09-20"
|
|
99
|
+
* safeFormat("2025-13-40") // "-"
|
|
100
|
+
* safeFormat(new Date(), "YYYY/MM/DD HH:mm") // "2025/09/20 16:30"
|
|
101
|
+
*/
|
|
102
|
+
safeFormat: (date: any, format?: string) => string;
|
|
103
|
+
/**
|
|
104
|
+
* 安全格式化时间
|
|
105
|
+
*/
|
|
106
|
+
safeFormatTime: (date: any, format?: string) => string;
|
|
107
|
+
/**
|
|
108
|
+
* 格式化日期范围显示
|
|
109
|
+
* 将开始时间和结束时间格式化为范围显示
|
|
110
|
+
* @param startTime 开始时间
|
|
111
|
+
* @param endTime 结束时间
|
|
112
|
+
* @returns 格式化后的日期范围字符串
|
|
113
|
+
*/
|
|
114
|
+
formatDateRange: (startTime?: string, endTime?: string) => string;
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
export { dateUtils as default };
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var index$8 = require('./arrayUtils/index.cjs');
|
|
6
|
+
var index$7 = require('./stringUtils/index.cjs');
|
|
7
|
+
var index$6 = require('./objectUtils/index.cjs');
|
|
8
|
+
var index$5 = require('./numberUtils/index.cjs');
|
|
9
|
+
var index$3 = require('./colorUtils/index.cjs');
|
|
10
|
+
var index$4 = require('./dateUtils/index.cjs');
|
|
11
|
+
var index$1 = require('./asyncUtils/index.cjs');
|
|
12
|
+
var index$2 = require('./validationUtils/index.cjs');
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* 核心工具函数库
|
|
16
|
+
* 统一导出所有工具对象
|
|
17
|
+
*/
|
|
18
|
+
/**
|
|
19
|
+
* 默认导出所有工具对象的集合
|
|
20
|
+
*/
|
|
21
|
+
var index = {
|
|
22
|
+
arrayUtils: index$8.default,
|
|
23
|
+
stringUtils: index$7.default,
|
|
24
|
+
objectUtils: index$6.default,
|
|
25
|
+
numberUtils: index$5.default,
|
|
26
|
+
dateUtils: index$4.default,
|
|
27
|
+
asyncUtils: index$1.default,
|
|
28
|
+
colorUtils: index$3.default,
|
|
29
|
+
validationUtils: index$2.default,
|
|
30
|
+
AsyncQueue: index$1.AsyncQueue
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
exports.default = index;
|
|
34
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../src/core/index.ts"],"sourcesContent":[null],"names":["arrayUtils","stringUtils","objectUtils","numberUtils","dateUtils","asyncUtils","colorUtils","validationUtils","AsyncQueue"],"mappings":";;;;;;;;;;;;;AAAA;;;AAGG;AAWH;;AAEG;AACH,YAAe;gBACbA,eAAU;iBACVC,eAAW;iBACXC,eAAW;iBACXC,eAAW;eACXC,eAAS;gBACTC,eAAU;gBACVC,eAAU;qBACVC,eAAe;gBACfC;CACD;;;;"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import * as dayjs from 'dayjs';
|
|
2
|
+
import { IOptions2 } from '../types/data/index.js';
|
|
3
|
+
import { AsyncQueue } from './asyncUtils/index.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* 默认导出所有工具对象的集合
|
|
7
|
+
*/
|
|
8
|
+
declare const _default: {
|
|
9
|
+
arrayUtils: {
|
|
10
|
+
unique<T>(arr: T[]): T[];
|
|
11
|
+
chunk<T>(arr: T[], size: number): T[][];
|
|
12
|
+
flatten<T>(arr: any[], depth?: number): T[];
|
|
13
|
+
shuffle<T>(arr: T[]): T[];
|
|
14
|
+
intersection<T>(arr1: T[], arr2: T[]): T[];
|
|
15
|
+
difference<T>(arr1: T[], arr2: T[]): T[];
|
|
16
|
+
groupBy<T, K extends string | number | symbol>(arr: T[], keyFn: (item: T) => K): Record<K, T[]>;
|
|
17
|
+
getListId(s: string, optList: IOptions2[], key: string): any;
|
|
18
|
+
};
|
|
19
|
+
stringUtils: {
|
|
20
|
+
capitalize(str: string): string;
|
|
21
|
+
toCamelCase(str: string): string;
|
|
22
|
+
toKebabCase(str: string): string;
|
|
23
|
+
toSnakeCase(str: string): string;
|
|
24
|
+
truncate(str: string, length: number, suffix?: string): string;
|
|
25
|
+
trim(str: string): string;
|
|
26
|
+
randomString(length: number, chars?: string): string;
|
|
27
|
+
buildMoneyStr(str: number | string): string;
|
|
28
|
+
replaceEmpty: (data: any, replaceStr?: string) => any;
|
|
29
|
+
replaceFieldsEmpty: (data: any, fields: string[], replaceStr?: string) => any;
|
|
30
|
+
};
|
|
31
|
+
objectUtils: {
|
|
32
|
+
deepClone<T>(obj: T): T;
|
|
33
|
+
merge<T extends Record<string, any>>(target: T, ...sources: Partial<T>[]): T;
|
|
34
|
+
get<T = any>(obj: Record<string, any>, path: string, defaultValue?: T): T;
|
|
35
|
+
set(obj: Record<string, any>, path: string, value: any): void;
|
|
36
|
+
unset(obj: Record<string, any>, path: string): boolean;
|
|
37
|
+
paths(obj: Record<string, any>, prefix?: string): string[];
|
|
38
|
+
buildNullStr<T = any>(obj: any, str?: string): T;
|
|
39
|
+
objToNum(obj: any): any;
|
|
40
|
+
refreshState(state: any, payload: any): void;
|
|
41
|
+
deleteTime(obj: any, keys?: string[]): any;
|
|
42
|
+
enumToOptions(enumObj: any): any[];
|
|
43
|
+
isSameObj(obj1: any, obj2: any): boolean;
|
|
44
|
+
};
|
|
45
|
+
numberUtils: {
|
|
46
|
+
formatNumber(num: number, separator?: string): string;
|
|
47
|
+
toFixed(num: number, digits: number): number;
|
|
48
|
+
random(min: number, max: number, integer?: boolean): number;
|
|
49
|
+
clamp(num: number, min: number, max: number): number;
|
|
50
|
+
mapRange(value: number, fromMin: number, fromMax: number, toMin: number, toMax: number): number;
|
|
51
|
+
isEven(num: number): boolean;
|
|
52
|
+
isOdd(num: number): boolean;
|
|
53
|
+
percentage(value: number, total: number, digits?: number): number;
|
|
54
|
+
formatBytes(bytes: number, digits?: number): string;
|
|
55
|
+
gcd(a: number, b: number): number;
|
|
56
|
+
lcm(a: number, b: number): number;
|
|
57
|
+
};
|
|
58
|
+
dateUtils: {
|
|
59
|
+
formatDate(date: Date | number | string, format?: string): string;
|
|
60
|
+
timeAgo(date: Date | number | string): string;
|
|
61
|
+
addTime(date: Date | number | string, amount: number, unit: "years" | "months" | "days" | "hours" | "minutes" | "seconds"): Date;
|
|
62
|
+
getDateRange(date: Date | number | string, unit: "day" | "week" | "month" | "year"): {
|
|
63
|
+
start: Date;
|
|
64
|
+
end: Date;
|
|
65
|
+
};
|
|
66
|
+
isSameDay(date1: Date | number | string, date2: Date | number | string): boolean;
|
|
67
|
+
isLeapYear(year: number): boolean;
|
|
68
|
+
getDaysInMonth(year: number, month: number): number;
|
|
69
|
+
getYearOptions(num?: number): Array<{
|
|
70
|
+
id: number;
|
|
71
|
+
text: number;
|
|
72
|
+
}>;
|
|
73
|
+
getPastYearOptions(num?: number): Array<{
|
|
74
|
+
id: number;
|
|
75
|
+
text: number;
|
|
76
|
+
}>;
|
|
77
|
+
formatTime(timestamp: string | number): string;
|
|
78
|
+
getDayTimeStr: (date?: dayjs.Dayjs) => "" | "凌晨" | "上午" | "中午" | "下午" | "晚上";
|
|
79
|
+
safeFormat: (date: any, format?: string) => string;
|
|
80
|
+
safeFormatTime: (date: any, format?: string) => string;
|
|
81
|
+
formatDateRange: (startTime?: string, endTime?: string) => string;
|
|
82
|
+
};
|
|
83
|
+
asyncUtils: {
|
|
84
|
+
delay(ms: number): Promise<void>;
|
|
85
|
+
withTimeout<T>(promise: Promise<T>, timeout: number, timeoutMessage?: string): Promise<T>;
|
|
86
|
+
retry<T>(fn: () => Promise<T>, maxRetries?: number, delayMs?: number): Promise<T>;
|
|
87
|
+
concurrent<T>(tasks: (() => Promise<T>)[], concurrency?: number): Promise<T[]>;
|
|
88
|
+
debounce<T extends (...args: any[]) => any>(fn: T, delay: number): (...args: Parameters<T>) => void;
|
|
89
|
+
throttle<T extends (...args: any[]) => any>(fn: T, interval: number): (...args: Parameters<T>) => void;
|
|
90
|
+
createQueue(): AsyncQueue;
|
|
91
|
+
memoizeAsync<T extends (...args: any[]) => Promise<any>>(fn: T, keyFn?: (...args: Parameters<T>) => string, ttl?: number): T;
|
|
92
|
+
};
|
|
93
|
+
colorUtils: {
|
|
94
|
+
getColor(index: number): string;
|
|
95
|
+
};
|
|
96
|
+
validationUtils: {
|
|
97
|
+
isEmail(email: string): boolean;
|
|
98
|
+
isPhone(phone: string): boolean;
|
|
99
|
+
isIdCard(idCard: string): boolean;
|
|
100
|
+
isUrl(url: string): boolean;
|
|
101
|
+
isIp(ip: string): boolean;
|
|
102
|
+
passwordStrength(password: string, options?: {
|
|
103
|
+
minLength?: number;
|
|
104
|
+
requireUppercase?: boolean;
|
|
105
|
+
requireLowercase?: boolean;
|
|
106
|
+
requireNumbers?: boolean;
|
|
107
|
+
requireSpecialChars?: boolean;
|
|
108
|
+
}): number;
|
|
109
|
+
isBankCard(cardNumber: string): boolean;
|
|
110
|
+
hasChinese(text: string): boolean;
|
|
111
|
+
isChineseOnly(text: string): boolean;
|
|
112
|
+
isInRange(value: number, min: number, max: number): boolean;
|
|
113
|
+
isLengthInRange(str: string, min: number, max: number): boolean;
|
|
114
|
+
};
|
|
115
|
+
AsyncQueue: typeof AsyncQueue;
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
export { _default as default };
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* 数字工具函数
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* 数字工具对象
|
|
10
|
+
*/
|
|
11
|
+
const numberUtils = {
|
|
12
|
+
/**
|
|
13
|
+
* 格式化数字(添加千分位分隔符)
|
|
14
|
+
* @param num 数字
|
|
15
|
+
* @param separator 分隔符,默认为 ','
|
|
16
|
+
* @returns 格式化后的字符串
|
|
17
|
+
*/
|
|
18
|
+
formatNumber(num, separator = ',') {
|
|
19
|
+
return num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, separator);
|
|
20
|
+
},
|
|
21
|
+
/**
|
|
22
|
+
* 保留指定小数位数
|
|
23
|
+
* @param num 数字
|
|
24
|
+
* @param digits 小数位数
|
|
25
|
+
* @returns 处理后的数字
|
|
26
|
+
*/
|
|
27
|
+
toFixed(num, digits) {
|
|
28
|
+
return Number(num.toFixed(digits));
|
|
29
|
+
},
|
|
30
|
+
/**
|
|
31
|
+
* 生成指定范围内的随机数
|
|
32
|
+
* @param min 最小值
|
|
33
|
+
* @param max 最大值
|
|
34
|
+
* @param integer 是否为整数,默认为 false
|
|
35
|
+
* @returns 随机数
|
|
36
|
+
*/
|
|
37
|
+
random(min, max, integer = false) {
|
|
38
|
+
const result = Math.random() * (max - min) + min;
|
|
39
|
+
return integer ? Math.floor(result) : result;
|
|
40
|
+
},
|
|
41
|
+
/**
|
|
42
|
+
* 限制数字在指定范围内
|
|
43
|
+
* @param num 数字
|
|
44
|
+
* @param min 最小值
|
|
45
|
+
* @param max 最大值
|
|
46
|
+
* @returns 限制后的数字
|
|
47
|
+
*/
|
|
48
|
+
clamp(num, min, max) {
|
|
49
|
+
return Math.min(Math.max(num, min), max);
|
|
50
|
+
},
|
|
51
|
+
/**
|
|
52
|
+
* 数字映射到新范围
|
|
53
|
+
* @param value 原值
|
|
54
|
+
* @param fromMin 原范围最小值
|
|
55
|
+
* @param fromMax 原范围最大值
|
|
56
|
+
* @param toMin 新范围最小值
|
|
57
|
+
* @param toMax 新范围最大值
|
|
58
|
+
* @returns 映射后的值
|
|
59
|
+
*/
|
|
60
|
+
mapRange(value, fromMin, fromMax, toMin, toMax) {
|
|
61
|
+
return ((value - fromMin) * (toMax - toMin)) / (fromMax - fromMin) + toMin;
|
|
62
|
+
},
|
|
63
|
+
/**
|
|
64
|
+
* 判断是否为偶数
|
|
65
|
+
* @param num 数字
|
|
66
|
+
* @returns 是否为偶数
|
|
67
|
+
*/
|
|
68
|
+
isEven(num) {
|
|
69
|
+
return num % 2 === 0;
|
|
70
|
+
},
|
|
71
|
+
/**
|
|
72
|
+
* 判断是否为奇数
|
|
73
|
+
* @param num 数字
|
|
74
|
+
* @returns 是否为奇数
|
|
75
|
+
*/
|
|
76
|
+
isOdd(num) {
|
|
77
|
+
return num % 2 !== 0;
|
|
78
|
+
},
|
|
79
|
+
/**
|
|
80
|
+
* 计算百分比
|
|
81
|
+
* @param value 值
|
|
82
|
+
* @param total 总数
|
|
83
|
+
* @param digits 小数位数,默认为 2
|
|
84
|
+
* @returns 百分比
|
|
85
|
+
*/
|
|
86
|
+
percentage(value, total, digits = 2) {
|
|
87
|
+
if (total === 0)
|
|
88
|
+
return 0;
|
|
89
|
+
return numberUtils.toFixed((value / total) * 100, digits);
|
|
90
|
+
},
|
|
91
|
+
/**
|
|
92
|
+
* 数字转换为文件大小格式
|
|
93
|
+
* @param bytes 字节数
|
|
94
|
+
* @param digits 小数位数,默认为 2
|
|
95
|
+
* @returns 文件大小字符串
|
|
96
|
+
*/
|
|
97
|
+
formatBytes(bytes, digits = 2) {
|
|
98
|
+
if (bytes === 0)
|
|
99
|
+
return '0 Bytes';
|
|
100
|
+
const k = 1024;
|
|
101
|
+
const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB'];
|
|
102
|
+
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
|
103
|
+
return `${numberUtils.toFixed(bytes / Math.pow(k, i), digits)} ${sizes[i]}`;
|
|
104
|
+
},
|
|
105
|
+
/**
|
|
106
|
+
* 求最大公约数
|
|
107
|
+
* @param a 数字a
|
|
108
|
+
* @param b 数字b
|
|
109
|
+
* @returns 最大公约数
|
|
110
|
+
*/
|
|
111
|
+
gcd(a, b) {
|
|
112
|
+
return b === 0 ? a : numberUtils.gcd(b, a % b);
|
|
113
|
+
},
|
|
114
|
+
/**
|
|
115
|
+
* 求最小公倍数
|
|
116
|
+
* @param a 数字a
|
|
117
|
+
* @param b 数字b
|
|
118
|
+
* @returns 最小公倍数
|
|
119
|
+
*/
|
|
120
|
+
lcm(a, b) {
|
|
121
|
+
return Math.abs(a * b) / numberUtils.gcd(a, b);
|
|
122
|
+
}
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
exports.default = numberUtils;
|
|
126
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../src/core/numberUtils/index.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|