@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.
Files changed (160) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +244 -0
  3. package/dist/.tsbuildinfo +1 -0
  4. package/dist/browser/cookieUtils/index.cjs +100 -0
  5. package/dist/browser/cookieUtils/index.cjs.map +1 -0
  6. package/dist/browser/cookieUtils/index.d.ts +55 -0
  7. package/dist/browser/domUtils/index.cjs +237 -0
  8. package/dist/browser/domUtils/index.cjs.map +1 -0
  9. package/dist/browser/domUtils/index.d.ts +116 -0
  10. package/dist/browser/index.cjs +12 -0
  11. package/dist/browser/index.cjs.map +1 -0
  12. package/dist/browser/index.d.ts +3 -0
  13. package/dist/browser/urlUtils/index.cjs +262 -0
  14. package/dist/browser/urlUtils/index.cjs.map +1 -0
  15. package/dist/browser/urlUtils/index.d.ts +72 -0
  16. package/dist/core/arrayUtils/index.cjs +109 -0
  17. package/dist/core/arrayUtils/index.cjs.map +1 -0
  18. package/dist/core/arrayUtils/index.d.ts +67 -0
  19. package/dist/core/asyncUtils/index.cjs +180 -0
  20. package/dist/core/asyncUtils/index.cjs.map +1 -0
  21. package/dist/core/asyncUtils/index.d.ts +80 -0
  22. package/dist/core/colorUtils/index.cjs +38 -0
  23. package/dist/core/colorUtils/index.cjs.map +1 -0
  24. package/dist/core/colorUtils/index.d.ts +10 -0
  25. package/dist/core/cryptoUtils/index.cjs +428 -0
  26. package/dist/core/cryptoUtils/index.cjs.map +1 -0
  27. package/dist/core/cryptoUtils/index.d.ts +132 -0
  28. package/dist/core/dateUtils/index.cjs +245 -0
  29. package/dist/core/dateUtils/index.cjs.map +1 -0
  30. package/dist/core/dateUtils/index.d.ts +117 -0
  31. package/dist/core/index.cjs +34 -0
  32. package/dist/core/index.cjs.map +1 -0
  33. package/dist/core/index.d.ts +118 -0
  34. package/dist/core/numberUtils/index.cjs +126 -0
  35. package/dist/core/numberUtils/index.cjs.map +1 -0
  36. package/dist/core/numberUtils/index.d.ts +91 -0
  37. package/dist/core/objectUtils/index.cjs +249 -0
  38. package/dist/core/objectUtils/index.cjs.map +1 -0
  39. package/dist/core/objectUtils/index.d.ts +91 -0
  40. package/dist/core/pageUtils/index.cjs +74 -0
  41. package/dist/core/pageUtils/index.cjs.map +1 -0
  42. package/dist/core/pageUtils/index.d.ts +52 -0
  43. package/dist/core/stringUtils/index.cjs +163 -0
  44. package/dist/core/stringUtils/index.cjs.map +1 -0
  45. package/dist/core/stringUtils/index.d.ts +69 -0
  46. package/dist/core/validationUtils/index.cjs +154 -0
  47. package/dist/core/validationUtils/index.cjs.map +1 -0
  48. package/dist/core/validationUtils/index.d.ts +87 -0
  49. package/dist/esm/browser/cookieUtils/index.d.ts +55 -0
  50. package/dist/esm/browser/cookieUtils/index.js +96 -0
  51. package/dist/esm/browser/cookieUtils/index.js.map +1 -0
  52. package/dist/esm/browser/domUtils/index.d.ts +116 -0
  53. package/dist/esm/browser/domUtils/index.js +233 -0
  54. package/dist/esm/browser/domUtils/index.js.map +1 -0
  55. package/dist/esm/browser/index.d.ts +3 -0
  56. package/dist/esm/browser/index.js +4 -0
  57. package/dist/esm/browser/index.js.map +1 -0
  58. package/dist/esm/browser/urlUtils/index.d.ts +72 -0
  59. package/dist/esm/browser/urlUtils/index.js +248 -0
  60. package/dist/esm/browser/urlUtils/index.js.map +1 -0
  61. package/dist/esm/core/arrayUtils/index.d.ts +67 -0
  62. package/dist/esm/core/arrayUtils/index.js +105 -0
  63. package/dist/esm/core/arrayUtils/index.js.map +1 -0
  64. package/dist/esm/core/asyncUtils/index.d.ts +80 -0
  65. package/dist/esm/core/asyncUtils/index.js +175 -0
  66. package/dist/esm/core/asyncUtils/index.js.map +1 -0
  67. package/dist/esm/core/colorUtils/index.d.ts +10 -0
  68. package/dist/esm/core/colorUtils/index.js +34 -0
  69. package/dist/esm/core/colorUtils/index.js.map +1 -0
  70. package/dist/esm/core/cryptoUtils/index.d.ts +132 -0
  71. package/dist/esm/core/cryptoUtils/index.js +424 -0
  72. package/dist/esm/core/cryptoUtils/index.js.map +1 -0
  73. package/dist/esm/core/dateUtils/index.d.ts +117 -0
  74. package/dist/esm/core/dateUtils/index.js +241 -0
  75. package/dist/esm/core/dateUtils/index.js.map +1 -0
  76. package/dist/esm/core/index.d.ts +118 -0
  77. package/dist/esm/core/index.js +30 -0
  78. package/dist/esm/core/index.js.map +1 -0
  79. package/dist/esm/core/numberUtils/index.d.ts +91 -0
  80. package/dist/esm/core/numberUtils/index.js +122 -0
  81. package/dist/esm/core/numberUtils/index.js.map +1 -0
  82. package/dist/esm/core/objectUtils/index.d.ts +91 -0
  83. package/dist/esm/core/objectUtils/index.js +245 -0
  84. package/dist/esm/core/objectUtils/index.js.map +1 -0
  85. package/dist/esm/core/pageUtils/index.d.ts +52 -0
  86. package/dist/esm/core/pageUtils/index.js +66 -0
  87. package/dist/esm/core/pageUtils/index.js.map +1 -0
  88. package/dist/esm/core/stringUtils/index.d.ts +69 -0
  89. package/dist/esm/core/stringUtils/index.js +159 -0
  90. package/dist/esm/core/stringUtils/index.js.map +1 -0
  91. package/dist/esm/core/validationUtils/index.d.ts +87 -0
  92. package/dist/esm/core/validationUtils/index.js +150 -0
  93. package/dist/esm/core/validationUtils/index.js.map +1 -0
  94. package/dist/esm/index.d.ts +22 -0
  95. package/dist/esm/index.js +26 -0
  96. package/dist/esm/index.js.map +1 -0
  97. package/dist/esm/request/ReqQueue/index.js +59 -0
  98. package/dist/esm/request/ReqQueue/index.js.map +1 -0
  99. package/dist/esm/request/httpCode/index.js +49 -0
  100. package/dist/esm/request/httpCode/index.js.map +1 -0
  101. package/dist/esm/request/httpUtils/index.js +359 -0
  102. package/dist/esm/request/httpUtils/index.js.map +1 -0
  103. package/dist/esm/request/index.d.ts +15 -0
  104. package/dist/esm/request/index.js +166 -0
  105. package/dist/esm/request/index.js.map +1 -0
  106. package/dist/esm/request/typings/index.d.ts +184 -0
  107. package/dist/esm/request/uniRequest/index.js +62 -0
  108. package/dist/esm/request/uniRequest/index.js.map +1 -0
  109. package/dist/esm/types/data/index.d.ts +188 -0
  110. package/dist/esm/types/data/index.js +13 -0
  111. package/dist/esm/types/data/index.js.map +1 -0
  112. package/dist/esm/types/index.d.ts +1 -0
  113. package/dist/esm/types/index.js +2 -0
  114. package/dist/esm/types/index.js.map +1 -0
  115. package/dist/esm/uniapp/Tips/index.d.ts +295 -0
  116. package/dist/esm/uniapp/Tips/index.js +498 -0
  117. package/dist/esm/uniapp/Tips/index.js.map +1 -0
  118. package/dist/esm/uniapp/cloudUtils/index.d.ts +56 -0
  119. package/dist/esm/uniapp/cloudUtils/index.js +90 -0
  120. package/dist/esm/uniapp/cloudUtils/index.js.map +1 -0
  121. package/dist/esm/uniapp/index.d.ts +3 -0
  122. package/dist/esm/uniapp/index.js +4 -0
  123. package/dist/esm/uniapp/index.js.map +1 -0
  124. package/dist/esm/uniapp/uniUtils/index.d.ts +113 -0
  125. package/dist/esm/uniapp/uniUtils/index.js +199 -0
  126. package/dist/esm/uniapp/uniUtils/index.js.map +1 -0
  127. package/dist/index.cjs +88 -0
  128. package/dist/index.cjs.map +1 -0
  129. package/dist/index.d.ts +22 -0
  130. package/dist/request/ReqQueue/index.cjs +63 -0
  131. package/dist/request/ReqQueue/index.cjs.map +1 -0
  132. package/dist/request/httpCode/index.cjs +52 -0
  133. package/dist/request/httpCode/index.cjs.map +1 -0
  134. package/dist/request/httpUtils/index.cjs +365 -0
  135. package/dist/request/httpUtils/index.cjs.map +1 -0
  136. package/dist/request/index.cjs +170 -0
  137. package/dist/request/index.cjs.map +1 -0
  138. package/dist/request/index.d.ts +15 -0
  139. package/dist/request/typings/index.d.ts +184 -0
  140. package/dist/request/uniRequest/index.cjs +66 -0
  141. package/dist/request/uniRequest/index.cjs.map +1 -0
  142. package/dist/types/data/index.cjs +15 -0
  143. package/dist/types/data/index.cjs.map +1 -0
  144. package/dist/types/data/index.d.ts +188 -0
  145. package/dist/types/index.cjs +8 -0
  146. package/dist/types/index.cjs.map +1 -0
  147. package/dist/types/index.d.ts +1 -0
  148. package/dist/uniapp/Tips/index.cjs +521 -0
  149. package/dist/uniapp/Tips/index.cjs.map +1 -0
  150. package/dist/uniapp/Tips/index.d.ts +295 -0
  151. package/dist/uniapp/cloudUtils/index.cjs +92 -0
  152. package/dist/uniapp/cloudUtils/index.cjs.map +1 -0
  153. package/dist/uniapp/cloudUtils/index.d.ts +56 -0
  154. package/dist/uniapp/index.cjs +53 -0
  155. package/dist/uniapp/index.cjs.map +1 -0
  156. package/dist/uniapp/index.d.ts +3 -0
  157. package/dist/uniapp/uniUtils/index.cjs +213 -0
  158. package/dist/uniapp/uniUtils/index.cjs.map +1 -0
  159. package/dist/uniapp/uniUtils/index.d.ts +113 -0
  160. 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
+ }