@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,213 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
// ==================== 响应处理工具函数 ====================
|
|
4
|
+
/**
|
|
5
|
+
* 处理成功响应 - 检查响应码是否为0
|
|
6
|
+
* @param data 响应数据
|
|
7
|
+
* @returns 是否成功
|
|
8
|
+
*/
|
|
9
|
+
const handleSuccess = (data) => {
|
|
10
|
+
if (data && data.code === 0) {
|
|
11
|
+
return true;
|
|
12
|
+
}
|
|
13
|
+
return false;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* 处理错误响应 - 统一错误处理和抛出
|
|
17
|
+
* @param error 错误对象
|
|
18
|
+
* @param context 错误上下文描述
|
|
19
|
+
*/
|
|
20
|
+
const handleError = (error, context) => {
|
|
21
|
+
const errorMessage = context ? `${context}: ${error.message || error}` : error.message || error;
|
|
22
|
+
console.error('Service error:', errorMessage);
|
|
23
|
+
throw error;
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* 安全获取响应数据 - 失败时返回默认值
|
|
27
|
+
* @param response 响应对象
|
|
28
|
+
* @param defaultValue 默认值
|
|
29
|
+
* @returns 响应数据或默认值
|
|
30
|
+
*/
|
|
31
|
+
const safeGetResponseData = (response, defaultValue) => {
|
|
32
|
+
let data = null;
|
|
33
|
+
if (response && response.code === 0) {
|
|
34
|
+
data = response.result;
|
|
35
|
+
}
|
|
36
|
+
return data !== null ? data : defaultValue;
|
|
37
|
+
};
|
|
38
|
+
// ==================== 业务数据处理工具函数 ====================
|
|
39
|
+
/**
|
|
40
|
+
* 验证必填字段
|
|
41
|
+
* @param data 数据对象
|
|
42
|
+
* @param requiredFields 必填字段数组
|
|
43
|
+
* @returns 验证结果
|
|
44
|
+
*/
|
|
45
|
+
const validateRequiredFields = (data, requiredFields) => {
|
|
46
|
+
const missingFields = [];
|
|
47
|
+
if (requiredFields && requiredFields.length >= 0) {
|
|
48
|
+
for (const field of requiredFields) {
|
|
49
|
+
if (!data[field] && data[field] !== 0) {
|
|
50
|
+
missingFields.push(field);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return {
|
|
55
|
+
isValid: missingFields.length === 0,
|
|
56
|
+
missingFields
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* 创建带时间戳的数据对象
|
|
61
|
+
* @param data 原始数据
|
|
62
|
+
* @param userId 用户ID
|
|
63
|
+
* @returns 带时间戳的数据对象
|
|
64
|
+
*/
|
|
65
|
+
const createTimestampedData = (data, userId) => {
|
|
66
|
+
const now = new Date();
|
|
67
|
+
return {
|
|
68
|
+
...data,
|
|
69
|
+
createdAt: now,
|
|
70
|
+
updateAt: now,
|
|
71
|
+
...(userId && { creatorId: userId })
|
|
72
|
+
};
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* 创建更新数据对象(只包含updateAt)
|
|
76
|
+
* @param data 原始数据
|
|
77
|
+
* @returns 带更新时间戳的数据对象
|
|
78
|
+
*/
|
|
79
|
+
const createUpdateData = (data) => {
|
|
80
|
+
const now = new Date();
|
|
81
|
+
return {
|
|
82
|
+
...data,
|
|
83
|
+
updateAt: now
|
|
84
|
+
};
|
|
85
|
+
};
|
|
86
|
+
// ==================== 数据格式化工具函数 ====================
|
|
87
|
+
/**
|
|
88
|
+
* 格式化日期
|
|
89
|
+
* @param date 日期对象、时间戳或日期字符串
|
|
90
|
+
* @param format 格式化模式,默认'YYYY-MM-DD'
|
|
91
|
+
* @returns 格式化后的日期字符串
|
|
92
|
+
*/
|
|
93
|
+
const formatDate = (date, format = 'YYYY-MM-DD') => {
|
|
94
|
+
const d = new Date(date);
|
|
95
|
+
if (isNaN(d.getTime())) {
|
|
96
|
+
return '';
|
|
97
|
+
}
|
|
98
|
+
const year = d.getFullYear();
|
|
99
|
+
const month = String(d.getMonth() + 1).padStart(2, '0');
|
|
100
|
+
const day = String(d.getDate()).padStart(2, '0');
|
|
101
|
+
const hours = String(d.getHours()).padStart(2, '0');
|
|
102
|
+
const minutes = String(d.getMinutes()).padStart(2, '0');
|
|
103
|
+
const seconds = String(d.getSeconds()).padStart(2, '0');
|
|
104
|
+
return format
|
|
105
|
+
.replace('YYYY', String(year))
|
|
106
|
+
.replace('MM', month)
|
|
107
|
+
.replace('DD', day)
|
|
108
|
+
.replace('HH', hours)
|
|
109
|
+
.replace('mm', minutes)
|
|
110
|
+
.replace('ss', seconds);
|
|
111
|
+
};
|
|
112
|
+
/**
|
|
113
|
+
* 格式化时间为相对时间
|
|
114
|
+
* @param timestamp 时间戳或日期字符串
|
|
115
|
+
* @returns 相对时间字符串
|
|
116
|
+
*/
|
|
117
|
+
const formatRelativeTime = (timestamp) => {
|
|
118
|
+
const now = Date.now();
|
|
119
|
+
const time = new Date(timestamp).getTime();
|
|
120
|
+
const diff = now - time;
|
|
121
|
+
if (diff < 60000) { // 1分钟内
|
|
122
|
+
return '刚刚';
|
|
123
|
+
}
|
|
124
|
+
else if (diff < 3600000) { // 1小时内
|
|
125
|
+
return `${Math.floor(diff / 60000)}分钟前`;
|
|
126
|
+
}
|
|
127
|
+
else if (diff < 86400000) { // 1天内
|
|
128
|
+
return `${Math.floor(diff / 3600000)}小时前`;
|
|
129
|
+
}
|
|
130
|
+
else if (diff < 2592000000) { // 30天内
|
|
131
|
+
return `${Math.floor(diff / 86400000)}天前`;
|
|
132
|
+
}
|
|
133
|
+
return formatDate(timestamp, 'YYYY-MM-DD');
|
|
134
|
+
};
|
|
135
|
+
// ==================== 数组和对象工具函数 ====================
|
|
136
|
+
/**
|
|
137
|
+
* 安全的数组操作 - 确保返回数组
|
|
138
|
+
* @param data 可能为数组的数据
|
|
139
|
+
* @returns 数组
|
|
140
|
+
*/
|
|
141
|
+
const ensureArray = (data) => {
|
|
142
|
+
if (Array.isArray(data)) {
|
|
143
|
+
return data;
|
|
144
|
+
}
|
|
145
|
+
if (data !== null && data !== undefined) {
|
|
146
|
+
return [data];
|
|
147
|
+
}
|
|
148
|
+
return [];
|
|
149
|
+
};
|
|
150
|
+
/**
|
|
151
|
+
* 根据ID查找数组中的项
|
|
152
|
+
* @param array 数组
|
|
153
|
+
* @param id ID值
|
|
154
|
+
* @param idField ID字段名,默认'id'
|
|
155
|
+
* @returns 找到的项或undefined
|
|
156
|
+
*/
|
|
157
|
+
const findById = (array, id, idField = 'id') => {
|
|
158
|
+
return array.find(item => item[idField] === id);
|
|
159
|
+
};
|
|
160
|
+
/**
|
|
161
|
+
* 深拷贝对象
|
|
162
|
+
* @param obj 要拷贝的对象
|
|
163
|
+
* @returns 拷贝后的对象
|
|
164
|
+
*/
|
|
165
|
+
const deepClone = (obj) => {
|
|
166
|
+
if (obj === null || typeof obj !== 'object') {
|
|
167
|
+
return obj;
|
|
168
|
+
}
|
|
169
|
+
if (obj instanceof Date) {
|
|
170
|
+
return new Date(obj.getTime());
|
|
171
|
+
}
|
|
172
|
+
if (Array.isArray(obj)) {
|
|
173
|
+
return obj.map(item => deepClone(item));
|
|
174
|
+
}
|
|
175
|
+
const cloned = {};
|
|
176
|
+
for (const key in obj) {
|
|
177
|
+
if (Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
178
|
+
cloned[key] = deepClone(obj[key]);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
return cloned;
|
|
182
|
+
};
|
|
183
|
+
/**
|
|
184
|
+
* 检查是否为有效的家庭验证响应
|
|
185
|
+
* @param response 响应对象
|
|
186
|
+
* @returns 是否验证通过
|
|
187
|
+
*/
|
|
188
|
+
const isValidFamilyMember = (response) => {
|
|
189
|
+
return response && response.code === 0;
|
|
190
|
+
};
|
|
191
|
+
/**
|
|
192
|
+
* 检查数据是否存在
|
|
193
|
+
* @param response 响应对象
|
|
194
|
+
* @returns 数据是否存在
|
|
195
|
+
*/
|
|
196
|
+
const isDataExists = (response) => {
|
|
197
|
+
return !!(response && response.code === 0 && response.result);
|
|
198
|
+
};
|
|
199
|
+
|
|
200
|
+
exports.createTimestampedData = createTimestampedData;
|
|
201
|
+
exports.createUpdateData = createUpdateData;
|
|
202
|
+
exports.deepClone = deepClone;
|
|
203
|
+
exports.ensureArray = ensureArray;
|
|
204
|
+
exports.findById = findById;
|
|
205
|
+
exports.formatDate = formatDate;
|
|
206
|
+
exports.formatRelativeTime = formatRelativeTime;
|
|
207
|
+
exports.handleError = handleError;
|
|
208
|
+
exports.handleSuccess = handleSuccess;
|
|
209
|
+
exports.isDataExists = isDataExists;
|
|
210
|
+
exports.isValidFamilyMember = isValidFamilyMember;
|
|
211
|
+
exports.safeGetResponseData = safeGetResponseData;
|
|
212
|
+
exports.validateRequiredFields = validateRequiredFields;
|
|
213
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../src/uniapp/uniUtils/index.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 标准响应结构
|
|
3
|
+
*/
|
|
4
|
+
interface StandardResponse<T = any> {
|
|
5
|
+
code: number;
|
|
6
|
+
message?: string;
|
|
7
|
+
result?: T;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* 处理成功响应 - 检查响应码是否为0
|
|
11
|
+
* @param data 响应数据
|
|
12
|
+
* @returns 是否成功
|
|
13
|
+
*/
|
|
14
|
+
declare const handleSuccess: (data: any) => boolean;
|
|
15
|
+
/**
|
|
16
|
+
* 处理错误响应 - 统一错误处理和抛出
|
|
17
|
+
* @param error 错误对象
|
|
18
|
+
* @param context 错误上下文描述
|
|
19
|
+
*/
|
|
20
|
+
declare const handleError: (error: any, context?: string) => void;
|
|
21
|
+
/**
|
|
22
|
+
* 安全获取响应数据 - 失败时返回默认值
|
|
23
|
+
* @param response 响应对象
|
|
24
|
+
* @param defaultValue 默认值
|
|
25
|
+
* @returns 响应数据或默认值
|
|
26
|
+
*/
|
|
27
|
+
declare const safeGetResponseData: <T>(response: any, defaultValue: T) => T;
|
|
28
|
+
/**
|
|
29
|
+
* 验证必填字段
|
|
30
|
+
* @param data 数据对象
|
|
31
|
+
* @param requiredFields 必填字段数组
|
|
32
|
+
* @returns 验证结果
|
|
33
|
+
*/
|
|
34
|
+
declare const validateRequiredFields: (data: any, requiredFields?: string[]) => {
|
|
35
|
+
isValid: boolean;
|
|
36
|
+
missingFields: string[];
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* 创建带时间戳的数据对象
|
|
40
|
+
* @param data 原始数据
|
|
41
|
+
* @param userId 用户ID
|
|
42
|
+
* @returns 带时间戳的数据对象
|
|
43
|
+
*/
|
|
44
|
+
declare const createTimestampedData: (data: any, userId?: string) => any;
|
|
45
|
+
/**
|
|
46
|
+
* 创建更新数据对象(只包含updateAt)
|
|
47
|
+
* @param data 原始数据
|
|
48
|
+
* @returns 带更新时间戳的数据对象
|
|
49
|
+
*/
|
|
50
|
+
declare const createUpdateData: (data: any) => any;
|
|
51
|
+
/**
|
|
52
|
+
* 格式化日期
|
|
53
|
+
* @param date 日期对象、时间戳或日期字符串
|
|
54
|
+
* @param format 格式化模式,默认'YYYY-MM-DD'
|
|
55
|
+
* @returns 格式化后的日期字符串
|
|
56
|
+
*/
|
|
57
|
+
declare const formatDate: (date: Date | number | string, format?: string) => string;
|
|
58
|
+
/**
|
|
59
|
+
* 格式化时间为相对时间
|
|
60
|
+
* @param timestamp 时间戳或日期字符串
|
|
61
|
+
* @returns 相对时间字符串
|
|
62
|
+
*/
|
|
63
|
+
declare const formatRelativeTime: (timestamp: string | number) => string;
|
|
64
|
+
/**
|
|
65
|
+
* 安全的数组操作 - 确保返回数组
|
|
66
|
+
* @param data 可能为数组的数据
|
|
67
|
+
* @returns 数组
|
|
68
|
+
*/
|
|
69
|
+
declare const ensureArray: <T>(data: T[] | T | null | undefined) => T[];
|
|
70
|
+
/**
|
|
71
|
+
* 根据ID查找数组中的项
|
|
72
|
+
* @param array 数组
|
|
73
|
+
* @param id ID值
|
|
74
|
+
* @param idField ID字段名,默认'id'
|
|
75
|
+
* @returns 找到的项或undefined
|
|
76
|
+
*/
|
|
77
|
+
declare const findById: <T extends Record<string, any>>(array: T[], id: any, idField?: string) => T | undefined;
|
|
78
|
+
/**
|
|
79
|
+
* 深拷贝对象
|
|
80
|
+
* @param obj 要拷贝的对象
|
|
81
|
+
* @returns 拷贝后的对象
|
|
82
|
+
*/
|
|
83
|
+
declare const deepClone: <T>(obj: T) => T;
|
|
84
|
+
/**
|
|
85
|
+
* 验证家庭成员身份的响应结构
|
|
86
|
+
*/
|
|
87
|
+
interface FamilyValidationResponse {
|
|
88
|
+
code: number;
|
|
89
|
+
message?: string;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* 验证数据存在性的响应结构
|
|
93
|
+
*/
|
|
94
|
+
interface ExistenceValidationResponse<T = any> {
|
|
95
|
+
code: number;
|
|
96
|
+
message?: string;
|
|
97
|
+
result?: T;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* 检查是否为有效的家庭验证响应
|
|
101
|
+
* @param response 响应对象
|
|
102
|
+
* @returns 是否验证通过
|
|
103
|
+
*/
|
|
104
|
+
declare const isValidFamilyMember: (response: FamilyValidationResponse) => boolean;
|
|
105
|
+
/**
|
|
106
|
+
* 检查数据是否存在
|
|
107
|
+
* @param response 响应对象
|
|
108
|
+
* @returns 数据是否存在
|
|
109
|
+
*/
|
|
110
|
+
declare const isDataExists: <T>(response: ExistenceValidationResponse<T>) => boolean;
|
|
111
|
+
|
|
112
|
+
export { createTimestampedData, createUpdateData, deepClone, ensureArray, findById, formatDate, formatRelativeTime, handleError, handleSuccess, isDataExists, isValidFamilyMember, safeGetResponseData, validateRequiredFields };
|
|
113
|
+
export type { ExistenceValidationResponse, FamilyValidationResponse, StandardResponse };
|
package/package.json
ADDED
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@allahjs/utils",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "A utility library for common JavaScript/TypeScript functions",
|
|
5
|
+
"main": "dist/index.cjs",
|
|
6
|
+
"module": "dist/esm/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/esm/index.js",
|
|
12
|
+
"require": "./dist/index.cjs",
|
|
13
|
+
"browser": "./dist/esm/index.js",
|
|
14
|
+
"default": "./dist/esm/index.js"
|
|
15
|
+
},
|
|
16
|
+
"./core": {
|
|
17
|
+
"types": "./dist/core/index.d.ts",
|
|
18
|
+
"import": "./dist/esm/core/index.js",
|
|
19
|
+
"require": "./dist/core.cjs",
|
|
20
|
+
"browser": "./dist/esm/core/index.js",
|
|
21
|
+
"default": "./dist/esm/core/index.js"
|
|
22
|
+
},
|
|
23
|
+
"./browser": {
|
|
24
|
+
"types": "./dist/browser/index.d.ts",
|
|
25
|
+
"import": "./dist/esm/browser/index.js",
|
|
26
|
+
"require": "./dist/browser.cjs",
|
|
27
|
+
"browser": "./dist/esm/browser/index.js",
|
|
28
|
+
"default": "./dist/esm/browser/index.js"
|
|
29
|
+
},
|
|
30
|
+
"./request": {
|
|
31
|
+
"types": "./dist/request/index.d.ts",
|
|
32
|
+
"import": "./dist/esm/request/index.js",
|
|
33
|
+
"require": "./dist/request.cjs",
|
|
34
|
+
"browser": "./dist/esm/request/index.js",
|
|
35
|
+
"default": "./dist/esm/request/index.js"
|
|
36
|
+
},
|
|
37
|
+
"./uniapp": {
|
|
38
|
+
"types": "./dist/uniapp/index.d.ts",
|
|
39
|
+
"import": "./dist/esm/uniapp/index.js",
|
|
40
|
+
"require": "./dist/uniapp.cjs",
|
|
41
|
+
"browser": "./dist/esm/uniapp/index.js",
|
|
42
|
+
"default": "./dist/esm/uniapp/index.js"
|
|
43
|
+
},
|
|
44
|
+
"./package.json": "./package.json"
|
|
45
|
+
},
|
|
46
|
+
"files": [
|
|
47
|
+
"dist",
|
|
48
|
+
"README.md",
|
|
49
|
+
"LICENSE"
|
|
50
|
+
],
|
|
51
|
+
"scripts": {
|
|
52
|
+
"build": "rollup -c",
|
|
53
|
+
"build:watch": "rollup -c -w",
|
|
54
|
+
"dev": "rollup -c -w",
|
|
55
|
+
"test": "jest --passWithNoTests",
|
|
56
|
+
"test:watch": "jest --watch",
|
|
57
|
+
"lint": "eslint \"src/**/*.{ts,js}\"",
|
|
58
|
+
"lint:fix": "eslint \"src/**/*.{ts,js}\" --fix",
|
|
59
|
+
"type-check": "tsc --noEmit",
|
|
60
|
+
"clean": "rimraf dist",
|
|
61
|
+
"prepublishOnly": "pnpm run clean && pnpm run build && pnpm run test",
|
|
62
|
+
"publish:npm": "npm publish --registry=https://registry.npmjs.org/",
|
|
63
|
+
"publish:dry": "npm publish --dry-run",
|
|
64
|
+
"docs:dev": "dumi dev",
|
|
65
|
+
"docs:build": "dumi build",
|
|
66
|
+
"docs:preview": "dumi preview"
|
|
67
|
+
},
|
|
68
|
+
"keywords": [
|
|
69
|
+
"utils",
|
|
70
|
+
"utilities",
|
|
71
|
+
"javascript",
|
|
72
|
+
"typescript",
|
|
73
|
+
"library"
|
|
74
|
+
],
|
|
75
|
+
"author": "allahbin",
|
|
76
|
+
"license": "MIT",
|
|
77
|
+
"repository": {
|
|
78
|
+
"type": "git",
|
|
79
|
+
"url": "https://github.com/allah-prime/allah-utils.git"
|
|
80
|
+
},
|
|
81
|
+
"bugs": {
|
|
82
|
+
"url": "https://github.com/allah-prime/allah-utils/issues"
|
|
83
|
+
},
|
|
84
|
+
"homepage": "https://github.com/allah-prime/allah-utils#readme",
|
|
85
|
+
"publishConfig": {
|
|
86
|
+
"access": "public"
|
|
87
|
+
},
|
|
88
|
+
"pnpm": {
|
|
89
|
+
"overrides": {
|
|
90
|
+
"eslint": "9.39.2"
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
"devDependencies": {
|
|
94
|
+
"@allahjs/eslint": "^0.0.3",
|
|
95
|
+
"@rollup/plugin-alias": "6.0.0",
|
|
96
|
+
"@rollup/plugin-commonjs": "29.0.0",
|
|
97
|
+
"@rollup/plugin-json": "6.1.0",
|
|
98
|
+
"@rollup/plugin-node-resolve": "16.0.3",
|
|
99
|
+
"@rollup/plugin-replace": "6.0.3",
|
|
100
|
+
"@rollup/plugin-typescript": "12.3.0",
|
|
101
|
+
"@types/crypto-js": "4.2.2",
|
|
102
|
+
"@types/jest": "30.0.0",
|
|
103
|
+
"@types/node": "25.2.3",
|
|
104
|
+
"dumi": "2.4.23",
|
|
105
|
+
"eslint": "^9.39.2",
|
|
106
|
+
"globals": "16.5.0",
|
|
107
|
+
"jest": "30.2.0",
|
|
108
|
+
"prettier": "^3.8.1",
|
|
109
|
+
"rimraf": "6.1.3",
|
|
110
|
+
"rollup": "4.57.1",
|
|
111
|
+
"rollup-plugin-dts": "6.3.0",
|
|
112
|
+
"stream-browserify": "3.0.0",
|
|
113
|
+
"ts-jest": "29.4.6",
|
|
114
|
+
"tslib": "2.8.1",
|
|
115
|
+
"typescript": "5.9.3",
|
|
116
|
+
"util": "0.12.5"
|
|
117
|
+
},
|
|
118
|
+
"engines": {
|
|
119
|
+
"node": ">=22.0.0"
|
|
120
|
+
},
|
|
121
|
+
"packageManager": "pnpm@9.1.0",
|
|
122
|
+
"dependencies": {
|
|
123
|
+
"axios": "1.13.5",
|
|
124
|
+
"crypto-js": "4.2.0",
|
|
125
|
+
"dayjs": "1.11.19",
|
|
126
|
+
"jsencrypt": "3.5.4",
|
|
127
|
+
"uuid": "13.0.0"
|
|
128
|
+
}
|
|
129
|
+
}
|