@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,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 };
@@ -0,0 +1,199 @@
1
+ // ==================== 响应处理工具函数 ====================
2
+ /**
3
+ * 处理成功响应 - 检查响应码是否为0
4
+ * @param data 响应数据
5
+ * @returns 是否成功
6
+ */
7
+ const handleSuccess = (data) => {
8
+ if (data && data.code === 0) {
9
+ return true;
10
+ }
11
+ return false;
12
+ };
13
+ /**
14
+ * 处理错误响应 - 统一错误处理和抛出
15
+ * @param error 错误对象
16
+ * @param context 错误上下文描述
17
+ */
18
+ const handleError = (error, context) => {
19
+ const errorMessage = context ? `${context}: ${error.message || error}` : error.message || error;
20
+ console.error('Service error:', errorMessage);
21
+ throw error;
22
+ };
23
+ /**
24
+ * 安全获取响应数据 - 失败时返回默认值
25
+ * @param response 响应对象
26
+ * @param defaultValue 默认值
27
+ * @returns 响应数据或默认值
28
+ */
29
+ const safeGetResponseData = (response, defaultValue) => {
30
+ let data = null;
31
+ if (response && response.code === 0) {
32
+ data = response.result;
33
+ }
34
+ return data !== null ? data : defaultValue;
35
+ };
36
+ // ==================== 业务数据处理工具函数 ====================
37
+ /**
38
+ * 验证必填字段
39
+ * @param data 数据对象
40
+ * @param requiredFields 必填字段数组
41
+ * @returns 验证结果
42
+ */
43
+ const validateRequiredFields = (data, requiredFields) => {
44
+ const missingFields = [];
45
+ if (requiredFields && requiredFields.length >= 0) {
46
+ for (const field of requiredFields) {
47
+ if (!data[field] && data[field] !== 0) {
48
+ missingFields.push(field);
49
+ }
50
+ }
51
+ }
52
+ return {
53
+ isValid: missingFields.length === 0,
54
+ missingFields
55
+ };
56
+ };
57
+ /**
58
+ * 创建带时间戳的数据对象
59
+ * @param data 原始数据
60
+ * @param userId 用户ID
61
+ * @returns 带时间戳的数据对象
62
+ */
63
+ const createTimestampedData = (data, userId) => {
64
+ const now = new Date();
65
+ return {
66
+ ...data,
67
+ createdAt: now,
68
+ updateAt: now,
69
+ ...(userId && { creatorId: userId })
70
+ };
71
+ };
72
+ /**
73
+ * 创建更新数据对象(只包含updateAt)
74
+ * @param data 原始数据
75
+ * @returns 带更新时间戳的数据对象
76
+ */
77
+ const createUpdateData = (data) => {
78
+ const now = new Date();
79
+ return {
80
+ ...data,
81
+ updateAt: now
82
+ };
83
+ };
84
+ // ==================== 数据格式化工具函数 ====================
85
+ /**
86
+ * 格式化日期
87
+ * @param date 日期对象、时间戳或日期字符串
88
+ * @param format 格式化模式,默认'YYYY-MM-DD'
89
+ * @returns 格式化后的日期字符串
90
+ */
91
+ const formatDate = (date, format = 'YYYY-MM-DD') => {
92
+ const d = new Date(date);
93
+ if (isNaN(d.getTime())) {
94
+ return '';
95
+ }
96
+ const year = d.getFullYear();
97
+ const month = String(d.getMonth() + 1).padStart(2, '0');
98
+ const day = String(d.getDate()).padStart(2, '0');
99
+ const hours = String(d.getHours()).padStart(2, '0');
100
+ const minutes = String(d.getMinutes()).padStart(2, '0');
101
+ const seconds = String(d.getSeconds()).padStart(2, '0');
102
+ return format
103
+ .replace('YYYY', String(year))
104
+ .replace('MM', month)
105
+ .replace('DD', day)
106
+ .replace('HH', hours)
107
+ .replace('mm', minutes)
108
+ .replace('ss', seconds);
109
+ };
110
+ /**
111
+ * 格式化时间为相对时间
112
+ * @param timestamp 时间戳或日期字符串
113
+ * @returns 相对时间字符串
114
+ */
115
+ const formatRelativeTime = (timestamp) => {
116
+ const now = Date.now();
117
+ const time = new Date(timestamp).getTime();
118
+ const diff = now - time;
119
+ if (diff < 60000) { // 1分钟内
120
+ return '刚刚';
121
+ }
122
+ else if (diff < 3600000) { // 1小时内
123
+ return `${Math.floor(diff / 60000)}分钟前`;
124
+ }
125
+ else if (diff < 86400000) { // 1天内
126
+ return `${Math.floor(diff / 3600000)}小时前`;
127
+ }
128
+ else if (diff < 2592000000) { // 30天内
129
+ return `${Math.floor(diff / 86400000)}天前`;
130
+ }
131
+ return formatDate(timestamp, 'YYYY-MM-DD');
132
+ };
133
+ // ==================== 数组和对象工具函数 ====================
134
+ /**
135
+ * 安全的数组操作 - 确保返回数组
136
+ * @param data 可能为数组的数据
137
+ * @returns 数组
138
+ */
139
+ const ensureArray = (data) => {
140
+ if (Array.isArray(data)) {
141
+ return data;
142
+ }
143
+ if (data !== null && data !== undefined) {
144
+ return [data];
145
+ }
146
+ return [];
147
+ };
148
+ /**
149
+ * 根据ID查找数组中的项
150
+ * @param array 数组
151
+ * @param id ID值
152
+ * @param idField ID字段名,默认'id'
153
+ * @returns 找到的项或undefined
154
+ */
155
+ const findById = (array, id, idField = 'id') => {
156
+ return array.find(item => item[idField] === id);
157
+ };
158
+ /**
159
+ * 深拷贝对象
160
+ * @param obj 要拷贝的对象
161
+ * @returns 拷贝后的对象
162
+ */
163
+ const deepClone = (obj) => {
164
+ if (obj === null || typeof obj !== 'object') {
165
+ return obj;
166
+ }
167
+ if (obj instanceof Date) {
168
+ return new Date(obj.getTime());
169
+ }
170
+ if (Array.isArray(obj)) {
171
+ return obj.map(item => deepClone(item));
172
+ }
173
+ const cloned = {};
174
+ for (const key in obj) {
175
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
176
+ cloned[key] = deepClone(obj[key]);
177
+ }
178
+ }
179
+ return cloned;
180
+ };
181
+ /**
182
+ * 检查是否为有效的家庭验证响应
183
+ * @param response 响应对象
184
+ * @returns 是否验证通过
185
+ */
186
+ const isValidFamilyMember = (response) => {
187
+ return response && response.code === 0;
188
+ };
189
+ /**
190
+ * 检查数据是否存在
191
+ * @param response 响应对象
192
+ * @returns 数据是否存在
193
+ */
194
+ const isDataExists = (response) => {
195
+ return !!(response && response.code === 0 && response.result);
196
+ };
197
+
198
+ export { createTimestampedData, createUpdateData, deepClone, ensureArray, findById, formatDate, formatRelativeTime, handleError, handleSuccess, isDataExists, isValidFamilyMember, safeGetResponseData, validateRequiredFields };
199
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../src/uniapp/uniUtils/index.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
package/dist/index.cjs ADDED
@@ -0,0 +1,88 @@
1
+ 'use strict';
2
+
3
+ var index$e = require('./core/stringUtils/index.cjs');
4
+ var index$1 = require('./core/arrayUtils/index.cjs');
5
+ var index$d = require('./core/objectUtils/index.cjs');
6
+ var index$8 = require('./core/dateUtils/index.cjs');
7
+ var index$c = require('./core/numberUtils/index.cjs');
8
+ var index$g = require('./core/validationUtils/index.cjs');
9
+ var index$2 = require('./core/asyncUtils/index.cjs');
10
+ var index$4 = require('./core/colorUtils/index.cjs');
11
+ var index$7 = require('./core/cryptoUtils/index.cjs');
12
+ var index$a = require('./core/pageUtils/index.cjs');
13
+ var index$b = require('./browser/domUtils/index.cjs');
14
+ var index$5 = require('./browser/cookieUtils/index.cjs');
15
+ var index$f = require('./browser/urlUtils/index.cjs');
16
+ var request_index = require('./request/index.cjs');
17
+ var index$6 = require('./uniapp/uniUtils/index.cjs');
18
+ var index = require('./uniapp/Tips/index.cjs');
19
+ var index$3 = require('./uniapp/cloudUtils/index.cjs');
20
+ var index$9 = require('./types/data/index.cjs');
21
+
22
+ // 主入口文件 - 导出所有工具函数
23
+ // 核心工具函数(适用于 Node.js、UniApp、React Native 等)
24
+ // 版本信息
25
+ const version = '1.0.0';
26
+
27
+ exports.stringUtils = index$e.default;
28
+ exports.arrayUtils = index$1.default;
29
+ exports.objectUtils = index$d.default;
30
+ exports.dateUtils = index$8.default;
31
+ exports.numberUtils = index$c.default;
32
+ exports.validationUtils = index$g.default;
33
+ exports.asyncUtils = index$2.default;
34
+ exports.colorUtils = index$4.default;
35
+ exports.cryptoUtils = index$7.default;
36
+ exports.defTableData = index$a.defTableData;
37
+ exports.pageUtils = index$a.default;
38
+ exports.domUtils = index$b.default;
39
+ exports.cookieUtils = index$5.default;
40
+ exports.urlUtils = index$f.default;
41
+ exports.request = request_index.default;
42
+ exports.createTimestampedData = index$6.createTimestampedData;
43
+ exports.createUpdateData = index$6.createUpdateData;
44
+ exports.deepClone = index$6.deepClone;
45
+ exports.ensureArray = index$6.ensureArray;
46
+ exports.findById = index$6.findById;
47
+ exports.formatDate = index$6.formatDate;
48
+ exports.formatRelativeTime = index$6.formatRelativeTime;
49
+ exports.handleError = index$6.handleError;
50
+ exports.handleSuccess = index$6.handleSuccess;
51
+ exports.isDataExists = index$6.isDataExists;
52
+ exports.isValidFamilyMember = index$6.isValidFamilyMember;
53
+ exports.safeGetResponseData = index$6.safeGetResponseData;
54
+ exports.validateRequiredFields = index$6.validateRequiredFields;
55
+ exports.BatchOperationTips = index.BatchOperationTips;
56
+ exports.Tips = index.Tips;
57
+ Object.defineProperty(exports, "ToastPosition", {
58
+ enumerable: true,
59
+ get: function () { return index.ToastPosition; }
60
+ });
61
+ Object.defineProperty(exports, "ToastType", {
62
+ enumerable: true,
63
+ get: function () { return index.ToastType; }
64
+ });
65
+ exports.hideLoading = index.hideLoading;
66
+ exports.hideToast = index.hideToast;
67
+ exports.showActionSheet = index.showActionSheet;
68
+ exports.showConfirmDialog = index.showConfirmDialog;
69
+ exports.showDeleteConfirm = index.showDeleteConfirm;
70
+ exports.showErrorToast = index.showErrorToast;
71
+ exports.showErrorToastDebounced = index.showErrorToastDebounced;
72
+ exports.showErrorToastWithCallback = index.showErrorToastWithCallback;
73
+ exports.showInputDialog = index.showInputDialog;
74
+ exports.showLoading = index.showLoading;
75
+ exports.showLoadingWithAsync = index.showLoadingWithAsync;
76
+ exports.showModal = index.showModal;
77
+ exports.showNetworkError = index.showNetworkError;
78
+ exports.showPermissionRequest = index.showPermissionRequest;
79
+ exports.showSuccessToast = index.showSuccessToast;
80
+ exports.showSuccessToastDebounced = index.showSuccessToastDebounced;
81
+ exports.showSuccessToastWithCallback = index.showSuccessToastWithCallback;
82
+ exports.showToast = index.showToast;
83
+ exports.showUpdateDialog = index.showUpdateDialog;
84
+ exports.showWarningToast = index.showWarningToast;
85
+ exports.cloudUtils = index$3.cloudUtils;
86
+ exports.defBaseFilter = index$9.defBaseFilter;
87
+ exports.version = version;
88
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../src/index.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAEA;AA2BA;AACO,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,22 @@
1
+ export { default as stringUtils } from './core/stringUtils/index.js';
2
+ export { default as arrayUtils } from './core/arrayUtils/index.js';
3
+ export { default as objectUtils } from './core/objectUtils/index.js';
4
+ export { default as dateUtils } from './core/dateUtils/index.js';
5
+ export { default as numberUtils } from './core/numberUtils/index.js';
6
+ export { default as validationUtils } from './core/validationUtils/index.js';
7
+ export { default as asyncUtils } from './core/asyncUtils/index.js';
8
+ export { default as colorUtils } from './core/colorUtils/index.js';
9
+ export { default as cryptoUtils } from './core/cryptoUtils/index.js';
10
+ export { ITablePage, defTableData, default as pageUtils } from './core/pageUtils/index.js';
11
+ export { default as domUtils } from './browser/domUtils/index.js';
12
+ export { default as cookieUtils } from './browser/cookieUtils/index.js';
13
+ export { default as urlUtils } from './browser/urlUtils/index.js';
14
+ export { default as request } from './request/index.js';
15
+ export { ExistenceValidationResponse, FamilyValidationResponse, StandardResponse, createTimestampedData, createUpdateData, deepClone, ensureArray, findById, formatDate, formatRelativeTime, handleError, handleSuccess, isDataExists, isValidFamilyMember, safeGetResponseData, validateRequiredFields } from './uniapp/uniUtils/index.js';
16
+ export { ActionSheetItem, ActionSheetOptions, BatchOperationTips, ModalButton, ModalOptions, Tips, ToastPosition, ToastType, hideLoading, hideToast, showActionSheet, showConfirmDialog, showDeleteConfirm, showErrorToast, showErrorToastDebounced, showErrorToastWithCallback, showInputDialog, showLoading, showLoadingWithAsync, showModal, showNetworkError, showPermissionRequest, showSuccessToast, showSuccessToastDebounced, showSuccessToastWithCallback, showToast, showUpdateDialog, showWarningToast } from './uniapp/Tips/index.js';
17
+ export { cloudUtils } from './uniapp/cloudUtils/index.js';
18
+ export { IBaseFilter, IOptions, IOptions2, IOptions61, IValidityNum, IWaterInfo, IWaterLives, defBaseFilter } from './types/data/index.js';
19
+
20
+ declare const version = "1.0.0";
21
+
22
+ export { version };
@@ -0,0 +1,63 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var index = require('../../core/cryptoUtils/index.cjs');
6
+
7
+ // 请求队列,最多存储30个请求,超过30个请求,最早的请求将被删除
8
+ class ReqQueue {
9
+ constructor(p) {
10
+ if (!ReqQueue.instance) {
11
+ ReqQueue.instance = this;
12
+ ReqQueue.maxQueueLength = p.maxQueueLength || 30;
13
+ ReqQueue.cacheMethod = p.cacheMethod || (() => { });
14
+ }
15
+ return ReqQueue.instance;
16
+ }
17
+ static init(p) {
18
+ return this.getInstance(p);
19
+ }
20
+ static getInstance(p) {
21
+ if (!this.instance) {
22
+ if (window) {
23
+ window.ReqQueue = this.reqQueue;
24
+ }
25
+ return (this.instance = new ReqQueue(p));
26
+ }
27
+ return this.instance;
28
+ }
29
+ /**
30
+ * 获取下日志队列
31
+ */
32
+ static getReqQueue() {
33
+ return this.reqQueue;
34
+ }
35
+ /**
36
+ * 添加或者更新一条记录
37
+ * @param data
38
+ * @param key
39
+ */
40
+ static async addReqQueue(data, key) {
41
+ if (!key) {
42
+ key = await index.default.uuid();
43
+ }
44
+ const keys = Object.keys(this.reqQueue);
45
+ if (keys.length >= this.maxQueueLength) {
46
+ // 移除keys里面的第一个
47
+ delete this.reqQueue[keys[0]];
48
+ }
49
+ // 获取下当前的时间戳
50
+ const now = new Date().getTime();
51
+ if (!this.reqQueue[key]) {
52
+ this.reqQueue[key] = {};
53
+ }
54
+ this.reqQueue[key][now] = data;
55
+ this.cacheMethod(this.reqQueue);
56
+ }
57
+ }
58
+ ReqQueue.reqQueue = {};
59
+ ReqQueue.maxQueueLength = 30;
60
+ ReqQueue.cacheMethod = () => { };
61
+
62
+ exports.default = ReqQueue;
63
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../../../src/request/ReqQueue/index.ts"],"sourcesContent":[null],"names":["cryptoUtils"],"mappings":";;;;;;AAOA;AACA,MAAqB,QAAQ,CAAA;AAS3B,IAAA,WAAA,CAAY,CAAgB,EAAA;AAC1B,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;AACtB,YAAA,QAAQ,CAAC,QAAQ,GAAG,IAAI;YACxB,QAAQ,CAAC,cAAc,GAAG,CAAC,CAAC,cAAc,IAAI,EAAE;AAChD,YAAA,QAAQ,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,KAAK,MAAK,EAAG,CAAC,CAAC;QACrD;QACA,OAAO,QAAQ,CAAC,QAAQ;IAC1B;IAEA,OAAO,IAAI,CAAC,CAAgB,EAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAC5B;IAEA,OAAO,WAAW,CAAC,CAAgB,EAAA;AACjC,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,IAAI,MAAM,EAAE;AACV,gBAAA,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ;YACjC;YACA,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,CAAC,CAAC;QACzC;QACA,OAAO,IAAI,CAAC,QAAQ;IACtB;AAEA;;AAEG;AACH,IAAA,OAAO,WAAW,GAAA;QAChB,OAAO,IAAI,CAAC,QAAQ;IACtB;AAEA;;;;AAIG;AACH,IAAA,aAAa,WAAW,CAAC,IAAS,EAAE,GAAY,EAAA;QAC9C,IAAI,CAAC,GAAG,EAAE;AACR,YAAA,GAAG,GAAG,MAAMA,aAAW,CAAC,IAAI,EAAE;QAChC;QACA,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;QACvC,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,cAAc,EAAE;;YAEtC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC/B;;QAEA,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE;QAChC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAI,CAAC,EAAE;AACxB,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAI,CAAC,GAAG,EAAE;QAC1B;QACA,IAAI,CAAC,QAAQ,CAAC,GAAI,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;AAC/B,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC;IACjC;;AAzDe,QAAA,CAAA,QAAQ,GAAwB,EAAE;AAElC,QAAA,CAAA,cAAc,GAAG,EAAE;AAEnB,QAAA,CAAA,WAAW,GAAqC,MAAK,EAAG,CAAC;;;;"}
@@ -0,0 +1,52 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * HTTP编码属性
5
+ */
6
+ const codeMessage = {
7
+ 20: '请求超时,请检查网络。',
8
+ 200: '服务器成功返回请求的数据。',
9
+ 201: '新建或修改数据成功。',
10
+ 202: '一个请求已经进入后台排队(异步任务)。',
11
+ 204: '删除数据成功。',
12
+ 400: '发出的请求有错误,服务器无法响应操作。',
13
+ 401: '用户没有权限(令牌、用户名、密码错误)。',
14
+ 403: '用户得到授权,但是访问是被禁止的。',
15
+ 404: '请求的接口不存在。',
16
+ 406: '请求的格式不可得。',
17
+ 410: '请求的资源被永久删除,且不会再得到的。',
18
+ 415: '请求的方式错误',
19
+ 422: '当创建一个对象时,发生一个验证错误。',
20
+ 500: '服务器发生错误,请检查服务器。',
21
+ 502: '网关错误。',
22
+ 503: '服务不可用,服务器暂时过载或维护。',
23
+ 504: '服务响应超时,请稍后再试。',
24
+ transitional: '网络错误,请检查网络。',
25
+ ERR_NETWORK: '网络错误,请检查网络。',
26
+ ERR_CANCELED: '请求超时,请稍后再试。'
27
+ };
28
+ // 默认的配置项
29
+ const defOption = {
30
+ method: 'post',
31
+ manner: 'form',
32
+ requestType: 'form',
33
+ setToken: false,
34
+ isFile: false,
35
+ headers: {},
36
+ mode: 'cors',
37
+ isFilter: true,
38
+ toHtml: true,
39
+ validateStatus: () => true,
40
+ reqEnv: 'browser',
41
+ timeout: 6500,
42
+ withCredentials: false,
43
+ cookieMode: 'header',
44
+ cookieHeaderName: 'X-Custom-Cookie',
45
+ autoCSRF: false,
46
+ csrfCookieName: 'csrftoken',
47
+ csrfHeaderName: 'X-CSRFToken'
48
+ };
49
+
50
+ exports.codeMessage = codeMessage;
51
+ exports.defOption = defOption;
52
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../../../src/request/httpCode/index.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAEA;;AAEG;AACI,MAAM,WAAW,GAAQ;AAC9B,IAAA,EAAE,EAAE,aAAa;AACjB,IAAA,GAAG,EAAE,eAAe;AACpB,IAAA,GAAG,EAAE,YAAY;AACjB,IAAA,GAAG,EAAE,qBAAqB;AAC1B,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,qBAAqB;AAC1B,IAAA,GAAG,EAAE,sBAAsB;AAC3B,IAAA,GAAG,EAAE,mBAAmB;AACxB,IAAA,GAAG,EAAE,WAAW;AAChB,IAAA,GAAG,EAAE,WAAW;AAChB,IAAA,GAAG,EAAE,qBAAqB;AAC1B,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,oBAAoB;AACzB,IAAA,GAAG,EAAE,iBAAiB;AACtB,IAAA,GAAG,EAAE,OAAO;AACZ,IAAA,GAAG,EAAE,mBAAmB;AACxB,IAAA,GAAG,EAAE,eAAe;AACpB,IAAA,YAAY,EAAE,aAAa;AAC3B,IAAA,WAAW,EAAE,aAAa;AAC1B,IAAA,YAAY,EAAE;;AAGhB;AACO,MAAM,SAAS,GAAmB;AACvC,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,WAAW,EAAE,MAAM;AACnB,IAAA,QAAQ,EAAE,KAAK;AACf,IAAA,MAAM,EAAE,KAAK;AACb,IAAA,OAAO,EAAE,EAAE;AACX,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,MAAM,EAAE,IAAI;AACZ,IAAA,cAAc,EAAE,MAAM,IAAI;AAC1B,IAAA,MAAM,EAAE,SAAS;AACjB,IAAA,OAAO,EAAE,IAAI;AACb,IAAA,eAAe,EAAE,KAAK;AACtB,IAAA,UAAU,EAAE,QAAQ;AACpB,IAAA,gBAAgB,EAAE,iBAAiB;AACnC,IAAA,QAAQ,EAAE,KAAK;AACf,IAAA,cAAc,EAAE,WAAW;AAC3B,IAAA,cAAc,EAAE;;;;;;"}