tools-min-ns 1.18.7 → 1.18.9

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/README.md CHANGED
@@ -5,6 +5,10 @@ pnpm i tools-min-ns --save
5
5
  ```
6
6
 
7
7
  # updates
8
+ ## v1.18.9
9
+ fix: 修改RequestUtil.getAuthorization json排序问题
10
+ ## v1.18.8
11
+ fix: RequestUtil handleRequests并发请求优化
8
12
  ## v1.18.7
9
13
  fix: 不需要那么严格的URL正则
10
14
 
@@ -8,7 +8,7 @@ import mgop, { setDefaultHeader } from './mgop';
8
8
  import uniRquestFn from './uniRquest';
9
9
  import jsonpFn, { jsonpRquest as jsonpRquestFn } from './jsonp';
10
10
  import nsPromiseFn from './nsPromiseFn';
11
- export type PromiseInput<T> = Array<(() => Promise<T>) | Promise<T>> | (() => Promise<T>) | Promise<T>;
11
+ export type PromiseInput<T> = (() => Promise<T>)[] | (() => Promise<T>) | Promise<T>;
12
12
  declare namespace RequestUtil {
13
13
  /** @name 浙里办请求工具设置默认请求头 */
14
14
  export const mgopSetDefaultHeader: typeof setDefaultHeader;
@@ -136,9 +136,11 @@ function exampleAsyncFunction() {
136
136
  /** POST请求参数 */
137
137
  data?: any;
138
138
  /** 前端传参方式(默认form)json => body; form=> query */
139
- requestType?: any;
139
+ requestType?: 'json' | 'form';
140
140
  /** 前端接受类型(默认json) */
141
- responseType?: any;
141
+ responseType?: 'json' | 'text' | 'blob' | 'arrayBuffer' | 'formData';
142
+ /** 打印 */
143
+ isLog: boolean;
142
144
  };
143
145
  export function getAuthorization(opt: RequestParam): string;
144
146
  export {};
@@ -113,6 +113,37 @@ var __generator = this && this.__generator || function (thisArg, body) {
113
113
  };
114
114
  }
115
115
  };
116
+ var __read = this && this.__read || function (o, n) {
117
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
118
+ if (!m) return o;
119
+ var i = m.call(o),
120
+ r,
121
+ ar = [],
122
+ e;
123
+ try {
124
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
125
+ } catch (error) {
126
+ e = {
127
+ error: error
128
+ };
129
+ } finally {
130
+ try {
131
+ if (r && !r.done && (m = i["return"])) m.call(i);
132
+ } finally {
133
+ if (e) throw e.error;
134
+ }
135
+ }
136
+ return ar;
137
+ };
138
+ var __spreadArray = this && this.__spreadArray || function (to, from, pack) {
139
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
140
+ if (ar || !(i in from)) {
141
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
142
+ ar[i] = from[i];
143
+ }
144
+ }
145
+ return to.concat(ar || Array.prototype.slice.call(from));
146
+ };
116
147
  /**
117
148
  * 请求工具
118
149
  * @description
@@ -125,6 +156,7 @@ import jsonpFn, { jsonpRquest as jsonpRquestFn } from './jsonp';
125
156
  import nsPromiseFn from './nsPromiseFn';
126
157
  import StringUtil from '../string/StringUtil';
127
158
  import PasswordUtil from '../pwd/PasswordUtil';
159
+ import DateUtil from 'src/date/DateUtil';
128
160
  var RequestUtil;
129
161
  (function (RequestUtil) {
130
162
  /** @name 浙里办请求工具设置默认请求头 */
@@ -175,43 +207,52 @@ var RequestUtil;
175
207
  */
176
208
  function handleRequests(requests, options) {
177
209
  return __awaiter(this, void 0, void 0, function () {
178
- // 存储所有请求的结果
179
- // 定义一个递归函数,用于处理请求并控制并发数量
180
210
  function processRequest() {
181
211
  return __awaiter(this, void 0, void 0, function () {
182
- var res, result;
212
+ var resFn, result, progress, error_1;
183
213
  return __generator(this, function (_a) {
184
214
  switch (_a.label) {
185
215
  case 0:
186
- if (!functionArray.length) return [2 /*return*/];
187
- res = functionArray.shift();
188
- if (!res) return [2 /*return*/];
189
- return [4 /*yield*/, res()];
216
+ if (!(functionArray.length > 0)) return [3 /*break*/, 6];
217
+ resFn = functionArray.shift();
218
+ if (!resFn) return [3 /*break*/, 0];
219
+ _a.label = 1;
190
220
  case 1:
191
- result = _a.sent();
192
- // 执行请求并等待其完成
193
- results.push(result);
194
- // 将结果存储
195
- // 递归调用,确保有新的请求补充进去
196
- return [4 /*yield*/, processRequest()];
221
+ _a.trys.push([1, 4,, 5]);
222
+ return [4 /*yield*/, resFn()];
197
223
  case 2:
198
- // 将结果存储
199
- // 递归调用,确保有新的请求补充进去
224
+ result = _a.sent();
225
+ results.push(result); // 顺序由完成顺序决定
226
+ // 更新进度(使用互斥锁确保原子性)
227
+ return [4 /*yield*/, progressLock.acquire()];
228
+ case 3:
229
+ // 更新进度(使用互斥锁确保原子性)
200
230
  _a.sent();
201
231
  loaded += 1;
232
+ progress = loaded / resLength;
202
233
  onUploadProgress === null || onUploadProgress === void 0 ? void 0 : onUploadProgress({
203
234
  total: resLength,
204
235
  loaded: loaded,
205
- progress: loaded / resLength,
236
+ progress: progress,
206
237
  nowResponse: result,
207
- endResponses: results
238
+ endResponses: __spreadArray([], __read(results), false)
208
239
  });
240
+ progressLock.release();
241
+ return [3 /*break*/, 5];
242
+ case 4:
243
+ error_1 = _a.sent();
244
+ // 错误处理(根据需求决定是否抛出或记录)
245
+ console.error('请求失败:', error_1);
246
+ throw error_1;
247
+ case 5:
248
+ return [3 /*break*/, 0];
249
+ case 6:
209
250
  return [2 /*return*/];
210
251
  }
211
252
  });
212
253
  });
213
254
  }
214
- var _a, _b, limit, onUploadProgress, requestArray, functionArray, resLength, results, loaded, concurrent;
255
+ var _a, _b, limit, onUploadProgress, requestArray, functionArray, resLength, results, loaded, progressLock, concurrent;
215
256
  return __generator(this, function (_c) {
216
257
  switch (_c.label) {
217
258
  case 0:
@@ -225,23 +266,48 @@ var RequestUtil;
225
266
  resLength = functionArray.length;
226
267
  results = [];
227
268
  loaded = 0;
269
+ progressLock = new AsyncLock();
228
270
  concurrent = Array.from({
229
271
  length: Math.min(limit, resLength)
230
272
  }, function () {
231
273
  return processRequest();
232
274
  });
233
- // 等待所有并发的请求完成
234
275
  return [4 /*yield*/, Promise.all(concurrent)];
235
276
  case 1:
236
- // 等待所有并发的请求完成
237
277
  _c.sent();
238
278
  return [2 /*return*/, results];
239
- // 返回所有请求的结果
240
279
  }
241
280
  });
242
281
  });
243
282
  }
244
283
  RequestUtil.handleRequests = handleRequests;
284
+ // 互斥锁实现(简化版)
285
+ var AsyncLock = /** @class */function () {
286
+ function AsyncLock() {
287
+ this._locked = false;
288
+ this._queue = [];
289
+ }
290
+ AsyncLock.prototype.acquire = function () {
291
+ var _this = this;
292
+ return new Promise(function (resolve) {
293
+ var _tryAcquire = function tryAcquire() {
294
+ if (!_this._locked) {
295
+ _this._locked = true;
296
+ resolve();
297
+ } else {
298
+ _this._queue.push(_tryAcquire);
299
+ }
300
+ };
301
+ _tryAcquire();
302
+ });
303
+ };
304
+ AsyncLock.prototype.release = function () {
305
+ this._locked = false;
306
+ var next = this._queue.shift();
307
+ if (next) next();
308
+ };
309
+ return AsyncLock;
310
+ }();
245
311
  /**
246
312
  * 封装多个 Promise 方法,返回 [错误, 数据, 停止状态] 格式
247
313
  * @param {Array<Function | Promise> | Function | Promise} input - 返回 Promise 的函数数组或 Promise 数组,或者单个函数或 Promise
@@ -303,31 +369,46 @@ var RequestUtil;
303
369
  */
304
370
  RequestUtil.nsPromise = nsPromiseFn;
305
371
  function getAuthorization(opt) {
372
+ var _a = opt.data,
373
+ data = _a === void 0 ? {} : _a,
374
+ url = opt.url,
375
+ _b = opt.requestType,
376
+ requestType = _b === void 0 ? 'form' : _b,
377
+ _c = opt.responseType,
378
+ responseType = _c === void 0 ? 'json' : _c,
379
+ _d = opt.isLog,
380
+ isLog = _d === void 0 ? false : _d;
306
381
  try {
307
382
  var uuid = StringUtil.getUuiD(16);
308
- var _a = opt.data,
309
- data_1 = _a === void 0 ? {} : _a,
310
- url = opt.url,
311
- _b = opt.requestType,
312
- requestType = _b === void 0 ? 'form' : _b,
313
- _c = opt.responseType,
314
- responseType = _c === void 0 ? 'json' : _c;
315
383
  var ts = new Date().getTime();
316
- var paramStr = JSON.stringify(data_1);
384
+ var paramStr = '{}';
317
385
  if (responseType === 'json') {
318
- if (requestType === 'form') {
386
+ if (['json', 'form'].includes(requestType)) {
319
387
  var _data_1 = {};
320
- var sortedKeys = Object.keys(data_1).sort(); // 对键进行排序
388
+ var sortedKeys = Object.keys(data).sort(function (a, b) {
389
+ return a.localeCompare(b);
390
+ }); // 对键进行排序
321
391
  sortedKeys.forEach(function (k) {
322
- if (!['null', 'undefined'].includes(String(data_1[k]))) _data_1[k] = String(data_1[k]);
392
+ if (!['null', 'undefined'].includes(String(data[k]))) _data_1[k] = requestType === 'json' ? data[k] : String(data[k]);
323
393
  });
324
394
  paramStr = JSON.stringify(_data_1);
325
395
  }
326
396
  }
327
397
  var str = url + paramStr + ts + uuid;
328
- return ts + PasswordUtil.str2MD5(str, uuid) + uuid;
398
+ if (isLog) console.info("[".concat(DateUtil.formatDate(), "]"), 'url + paramStr + ts + uuid ', {
399
+ url: url,
400
+ paramStr: paramStr,
401
+ ts: ts,
402
+ uuid: uuid
403
+ });
404
+ if (isLog) console.info("[".concat(DateUtil.formatDate(), "]"), '加密前 ', str);
405
+ var md5 = PasswordUtil.str2MD5(str, uuid);
406
+ if (isLog) console.info("[".concat(DateUtil.formatDate(), "]"), '加密后 ', md5);
407
+ var s = ts + md5 + uuid;
408
+ if (isLog) console.info("[".concat(DateUtil.formatDate(), "]"), '最终结果 ', s);
409
+ return s;
329
410
  } catch (error) {
330
- console.error(error);
411
+ if (isLog) console.error('getAuthorization error', error);
331
412
  return '';
332
413
  }
333
414
  }
@@ -8,7 +8,7 @@ import mgop, { setDefaultHeader } from './mgop';
8
8
  import uniRquestFn from './uniRquest';
9
9
  import jsonpFn, { jsonpRquest as jsonpRquestFn } from './jsonp';
10
10
  import nsPromiseFn from './nsPromiseFn';
11
- export type PromiseInput<T> = Array<(() => Promise<T>) | Promise<T>> | (() => Promise<T>) | Promise<T>;
11
+ export type PromiseInput<T> = (() => Promise<T>)[] | (() => Promise<T>) | Promise<T>;
12
12
  declare namespace RequestUtil {
13
13
  /** @name 浙里办请求工具设置默认请求头 */
14
14
  export const mgopSetDefaultHeader: typeof setDefaultHeader;
@@ -136,9 +136,11 @@ function exampleAsyncFunction() {
136
136
  /** POST请求参数 */
137
137
  data?: any;
138
138
  /** 前端传参方式(默认form)json => body; form=> query */
139
- requestType?: any;
139
+ requestType?: 'json' | 'form';
140
140
  /** 前端接受类型(默认json) */
141
- responseType?: any;
141
+ responseType?: 'json' | 'text' | 'blob' | 'arrayBuffer' | 'formData';
142
+ /** 打印 */
143
+ isLog: boolean;
142
144
  };
143
145
  export function getAuthorization(opt: RequestParam): string;
144
146
  export {};
@@ -146,6 +146,37 @@ var __generator = this && this.__generator || function (thisArg, body) {
146
146
  };
147
147
  }
148
148
  };
149
+ var __read = this && this.__read || function (o, n) {
150
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
151
+ if (!m) return o;
152
+ var i = m.call(o),
153
+ r,
154
+ ar = [],
155
+ e;
156
+ try {
157
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
158
+ } catch (error) {
159
+ e = {
160
+ error: error
161
+ };
162
+ } finally {
163
+ try {
164
+ if (r && !r.done && (m = i["return"])) m.call(i);
165
+ } finally {
166
+ if (e) throw e.error;
167
+ }
168
+ }
169
+ return ar;
170
+ };
171
+ var __spreadArray = this && this.__spreadArray || function (to, from, pack) {
172
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
173
+ if (ar || !(i in from)) {
174
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
175
+ ar[i] = from[i];
176
+ }
177
+ }
178
+ return to.concat(ar || Array.prototype.slice.call(from));
179
+ };
149
180
  var __importDefault = this && this.__importDefault || function (mod) {
150
181
  return mod && mod.__esModule ? mod : {
151
182
  "default": mod
@@ -166,6 +197,7 @@ var jsonp_1 = __importStar(require("./jsonp"));
166
197
  var nsPromiseFn_1 = __importDefault(require("./nsPromiseFn"));
167
198
  var StringUtil_1 = __importDefault(require("../string/StringUtil"));
168
199
  var PasswordUtil_1 = __importDefault(require("../pwd/PasswordUtil"));
200
+ var DateUtil_1 = __importDefault(require("src/date/DateUtil"));
169
201
  var RequestUtil;
170
202
  (function (RequestUtil) {
171
203
  /** @name 浙里办请求工具设置默认请求头 */
@@ -216,43 +248,52 @@ var RequestUtil;
216
248
  */
217
249
  function handleRequests(requests, options) {
218
250
  return __awaiter(this, void 0, void 0, function () {
219
- // 存储所有请求的结果
220
- // 定义一个递归函数,用于处理请求并控制并发数量
221
251
  function processRequest() {
222
252
  return __awaiter(this, void 0, void 0, function () {
223
- var res, result;
253
+ var resFn, result, progress, error_1;
224
254
  return __generator(this, function (_a) {
225
255
  switch (_a.label) {
226
256
  case 0:
227
- if (!functionArray.length) return [2 /*return*/];
228
- res = functionArray.shift();
229
- if (!res) return [2 /*return*/];
230
- return [4 /*yield*/, res()];
257
+ if (!(functionArray.length > 0)) return [3 /*break*/, 6];
258
+ resFn = functionArray.shift();
259
+ if (!resFn) return [3 /*break*/, 0];
260
+ _a.label = 1;
231
261
  case 1:
232
- result = _a.sent();
233
- // 执行请求并等待其完成
234
- results.push(result);
235
- // 将结果存储
236
- // 递归调用,确保有新的请求补充进去
237
- return [4 /*yield*/, processRequest()];
262
+ _a.trys.push([1, 4,, 5]);
263
+ return [4 /*yield*/, resFn()];
238
264
  case 2:
239
- // 将结果存储
240
- // 递归调用,确保有新的请求补充进去
265
+ result = _a.sent();
266
+ results.push(result); // 顺序由完成顺序决定
267
+ // 更新进度(使用互斥锁确保原子性)
268
+ return [4 /*yield*/, progressLock.acquire()];
269
+ case 3:
270
+ // 更新进度(使用互斥锁确保原子性)
241
271
  _a.sent();
242
272
  loaded += 1;
273
+ progress = loaded / resLength;
243
274
  onUploadProgress === null || onUploadProgress === void 0 ? void 0 : onUploadProgress({
244
275
  total: resLength,
245
276
  loaded: loaded,
246
- progress: loaded / resLength,
277
+ progress: progress,
247
278
  nowResponse: result,
248
- endResponses: results
279
+ endResponses: __spreadArray([], __read(results), false)
249
280
  });
281
+ progressLock.release();
282
+ return [3 /*break*/, 5];
283
+ case 4:
284
+ error_1 = _a.sent();
285
+ // 错误处理(根据需求决定是否抛出或记录)
286
+ console.error('请求失败:', error_1);
287
+ throw error_1;
288
+ case 5:
289
+ return [3 /*break*/, 0];
290
+ case 6:
250
291
  return [2 /*return*/];
251
292
  }
252
293
  });
253
294
  });
254
295
  }
255
- var _a, _b, limit, onUploadProgress, requestArray, functionArray, resLength, results, loaded, concurrent;
296
+ var _a, _b, limit, onUploadProgress, requestArray, functionArray, resLength, results, loaded, progressLock, concurrent;
256
297
  return __generator(this, function (_c) {
257
298
  switch (_c.label) {
258
299
  case 0:
@@ -266,23 +307,48 @@ var RequestUtil;
266
307
  resLength = functionArray.length;
267
308
  results = [];
268
309
  loaded = 0;
310
+ progressLock = new AsyncLock();
269
311
  concurrent = Array.from({
270
312
  length: Math.min(limit, resLength)
271
313
  }, function () {
272
314
  return processRequest();
273
315
  });
274
- // 等待所有并发的请求完成
275
316
  return [4 /*yield*/, Promise.all(concurrent)];
276
317
  case 1:
277
- // 等待所有并发的请求完成
278
318
  _c.sent();
279
319
  return [2 /*return*/, results];
280
- // 返回所有请求的结果
281
320
  }
282
321
  });
283
322
  });
284
323
  }
285
324
  RequestUtil.handleRequests = handleRequests;
325
+ // 互斥锁实现(简化版)
326
+ var AsyncLock = /** @class */function () {
327
+ function AsyncLock() {
328
+ this._locked = false;
329
+ this._queue = [];
330
+ }
331
+ AsyncLock.prototype.acquire = function () {
332
+ var _this = this;
333
+ return new Promise(function (resolve) {
334
+ var _tryAcquire = function tryAcquire() {
335
+ if (!_this._locked) {
336
+ _this._locked = true;
337
+ resolve();
338
+ } else {
339
+ _this._queue.push(_tryAcquire);
340
+ }
341
+ };
342
+ _tryAcquire();
343
+ });
344
+ };
345
+ AsyncLock.prototype.release = function () {
346
+ this._locked = false;
347
+ var next = this._queue.shift();
348
+ if (next) next();
349
+ };
350
+ return AsyncLock;
351
+ }();
286
352
  /**
287
353
  * 封装多个 Promise 方法,返回 [错误, 数据, 停止状态] 格式
288
354
  * @param {Array<Function | Promise> | Function | Promise} input - 返回 Promise 的函数数组或 Promise 数组,或者单个函数或 Promise
@@ -344,31 +410,46 @@ var RequestUtil;
344
410
  */
345
411
  RequestUtil.nsPromise = nsPromiseFn_1.default;
346
412
  function getAuthorization(opt) {
413
+ var _a = opt.data,
414
+ data = _a === void 0 ? {} : _a,
415
+ url = opt.url,
416
+ _b = opt.requestType,
417
+ requestType = _b === void 0 ? 'form' : _b,
418
+ _c = opt.responseType,
419
+ responseType = _c === void 0 ? 'json' : _c,
420
+ _d = opt.isLog,
421
+ isLog = _d === void 0 ? false : _d;
347
422
  try {
348
423
  var uuid = StringUtil_1.default.getUuiD(16);
349
- var _a = opt.data,
350
- data_1 = _a === void 0 ? {} : _a,
351
- url = opt.url,
352
- _b = opt.requestType,
353
- requestType = _b === void 0 ? 'form' : _b,
354
- _c = opt.responseType,
355
- responseType = _c === void 0 ? 'json' : _c;
356
424
  var ts = new Date().getTime();
357
- var paramStr = JSON.stringify(data_1);
425
+ var paramStr = '{}';
358
426
  if (responseType === 'json') {
359
- if (requestType === 'form') {
427
+ if (['json', 'form'].includes(requestType)) {
360
428
  var _data_1 = {};
361
- var sortedKeys = Object.keys(data_1).sort(); // 对键进行排序
429
+ var sortedKeys = Object.keys(data).sort(function (a, b) {
430
+ return a.localeCompare(b);
431
+ }); // 对键进行排序
362
432
  sortedKeys.forEach(function (k) {
363
- if (!['null', 'undefined'].includes(String(data_1[k]))) _data_1[k] = String(data_1[k]);
433
+ if (!['null', 'undefined'].includes(String(data[k]))) _data_1[k] = requestType === 'json' ? data[k] : String(data[k]);
364
434
  });
365
435
  paramStr = JSON.stringify(_data_1);
366
436
  }
367
437
  }
368
438
  var str = url + paramStr + ts + uuid;
369
- return ts + PasswordUtil_1.default.str2MD5(str, uuid) + uuid;
439
+ if (isLog) console.info("[".concat(DateUtil_1.default.formatDate(), "]"), 'url + paramStr + ts + uuid ', {
440
+ url: url,
441
+ paramStr: paramStr,
442
+ ts: ts,
443
+ uuid: uuid
444
+ });
445
+ if (isLog) console.info("[".concat(DateUtil_1.default.formatDate(), "]"), '加密前 ', str);
446
+ var md5 = PasswordUtil_1.default.str2MD5(str, uuid);
447
+ if (isLog) console.info("[".concat(DateUtil_1.default.formatDate(), "]"), '加密后 ', md5);
448
+ var s = ts + md5 + uuid;
449
+ if (isLog) console.info("[".concat(DateUtil_1.default.formatDate(), "]"), '最终结果 ', s);
450
+ return s;
370
451
  } catch (error) {
371
- console.error(error);
452
+ if (isLog) console.error('getAuthorization error', error);
372
453
  return '';
373
454
  }
374
455
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "tools-min-ns",
3
3
  "description": "工具包适用于前端以及node",
4
- "version": "1.18.7",
4
+ "version": "1.18.9",
5
5
  "main": "lib/index.js",
6
6
  "license": "MIT",
7
7
  "author": "nanshen",