qmwts 1.1.59 → 1.1.61

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.
@@ -1,8 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- var LocalDateTime = /** @class */ (function () {
4
- function LocalDateTime() {
5
- }
6
- return LocalDateTime;
7
- }());
3
+ class LocalDateTime {
4
+ }
8
5
  exports.default = LocalDateTime;
@@ -1,47 +1,46 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  // https://juejin.cn/post/7098891689955164168
4
- var LocalDate = /** @class */ (function () {
5
- function LocalDate(date) {
4
+ class LocalDate {
5
+ constructor(date) {
6
6
  if (date == void 0)
7
7
  this.date = new Date();
8
8
  else
9
9
  this.date = date;
10
10
  }
11
- LocalDate.now = function () {
11
+ static now() {
12
12
  return new LocalDate();
13
- };
14
- LocalDate.of = function (year, month, date) {
13
+ }
14
+ static of(year, month, date) {
15
15
  return new LocalDate(new Date(year, month - 1, date));
16
- };
17
- LocalDate.prototype.getYear = function () {
16
+ }
17
+ getYear() {
18
18
  return this.date.getFullYear();
19
- };
20
- LocalDate.prototype.getMonth = function () {
19
+ }
20
+ getMonth() {
21
21
  return this.date.getMonth() + 1;
22
- };
23
- LocalDate.prototype.getDayOfMonth = function () {
22
+ }
23
+ getDayOfMonth() {
24
24
  return this.date.getDate();
25
- };
26
- LocalDate.prototype.getDayOfWeek = function () {
25
+ }
26
+ getDayOfWeek() {
27
27
  return this.date.getDay() || 7;
28
- };
29
- LocalDate.prototype.plusDays = function (days) {
28
+ }
29
+ plusDays(days) {
30
30
  return LocalDate.of(this.getYear(), this.getMonth(), this.getDayOfMonth() + days);
31
- };
32
- LocalDate.prototype.minusDays = function (days) {
31
+ }
32
+ minusDays(days) {
33
33
  return this.plusDays(-days);
34
- };
35
- LocalDate.prototype.format = function () {
34
+ }
35
+ format() {
36
36
  return this.toString();
37
- };
38
- LocalDate.prototype.toString = function () {
37
+ }
38
+ toString() {
39
39
  return [
40
40
  this.date.getFullYear().toString(),
41
41
  (this.date.getMonth() + 1).toString().padStart(2, '0'),
42
42
  this.date.getDate().toString().padStart(2, '0')
43
43
  ].join('-');
44
- };
45
- return LocalDate;
46
- }());
44
+ }
45
+ }
47
46
  exports.default = LocalDate;
@@ -1,24 +1,23 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- var YearMonth = /** @class */ (function () {
4
- function YearMonth(date) {
3
+ class YearMonth {
4
+ constructor(date) {
5
5
  if (date == void 0)
6
6
  this.date = new Date();
7
7
  else
8
8
  this.date = date;
9
9
  }
10
- YearMonth.now = function () {
10
+ static now() {
11
11
  return new YearMonth();
12
- };
13
- YearMonth.of = function (year, month) {
12
+ }
13
+ static of(year, month) {
14
14
  return new YearMonth(new Date(year, month - 1));
15
- };
16
- YearMonth.prototype.toString = function () {
15
+ }
16
+ toString() {
17
17
  return [
18
18
  this.date.getFullYear().toString(),
19
19
  (this.date.getMonth() + 1).toString().padStart(2, '0')
20
20
  ].join('-');
21
- };
22
- return YearMonth;
23
- }());
21
+ }
22
+ }
24
23
  exports.default = YearMonth;
package/dist/index.d.ts CHANGED
@@ -6,6 +6,7 @@ import Downloader from './utils/downloader';
6
6
  import Encryptor from './utils/encryptor';
7
7
  import NumberUtils from './utils/number-utils';
8
8
  import JsonUtils from './utils/json-utils';
9
+ import ObjectUtils from './utils/object-utils';
9
10
  import PrototypeUtils from './utils/prototype-utils';
10
11
  import RequestDataGenerator from './utils/request-data-generator';
11
12
  import FileUtils from './utils/file-utils';
@@ -13,4 +14,4 @@ import StringUtils from './utils/string-utils';
13
14
  import LocalDate from './class/local-date';
14
15
  import LocalDateTime from './class/local-date-time';
15
16
  import YearMonth from './class/year-month';
16
- export { AxiosInstance, Downloader, Encryptor, NumberUtils, JsonUtils, PrototypeUtils, RequestDataGenerator, FileUtils, StringUtils, LocalDate, LocalDateTime, YearMonth, };
17
+ export { AxiosInstance, Downloader, Encryptor, NumberUtils, JsonUtils, ObjectUtils, PrototypeUtils, RequestDataGenerator, FileUtils, StringUtils, LocalDate, LocalDateTime, YearMonth, };
package/dist/index.js CHANGED
@@ -1,32 +1,34 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.YearMonth = exports.LocalDateTime = exports.LocalDate = exports.StringUtils = exports.FileUtils = exports.RequestDataGenerator = exports.PrototypeUtils = exports.JsonUtils = exports.NumberUtils = exports.Encryptor = exports.Downloader = exports.AxiosInstance = exports.FinanceUtils = exports.ArrayUtils = void 0;
3
+ exports.YearMonth = exports.LocalDateTime = exports.LocalDate = exports.StringUtils = exports.FileUtils = exports.RequestDataGenerator = exports.PrototypeUtils = exports.ObjectUtils = exports.JsonUtils = exports.NumberUtils = exports.Encryptor = exports.Downloader = exports.AxiosInstance = exports.FinanceUtils = exports.ArrayUtils = void 0;
4
4
  // https://www.jianshu.com/p/8fa2c50720e4
5
5
  var array_utils_1 = require("./utils/array-utils");
6
6
  Object.defineProperty(exports, "ArrayUtils", { enumerable: true, get: function () { return array_utils_1.default; } });
7
7
  var finance_utils_1 = require("./utils/finance-utils");
8
8
  Object.defineProperty(exports, "FinanceUtils", { enumerable: true, get: function () { return finance_utils_1.default; } });
9
- var axios_instance_1 = require("./utils/axios-instance");
9
+ const axios_instance_1 = require("./utils/axios-instance");
10
10
  exports.AxiosInstance = axios_instance_1.default;
11
- var downloader_1 = require("./utils/downloader");
11
+ const downloader_1 = require("./utils/downloader");
12
12
  exports.Downloader = downloader_1.default;
13
- var encryptor_1 = require("./utils/encryptor");
13
+ const encryptor_1 = require("./utils/encryptor");
14
14
  exports.Encryptor = encryptor_1.default;
15
- var number_utils_1 = require("./utils/number-utils");
15
+ const number_utils_1 = require("./utils/number-utils");
16
16
  exports.NumberUtils = number_utils_1.default;
17
- var json_utils_1 = require("./utils/json-utils");
17
+ const json_utils_1 = require("./utils/json-utils");
18
18
  exports.JsonUtils = json_utils_1.default;
19
- var prototype_utils_1 = require("./utils/prototype-utils");
19
+ const object_utils_1 = require("./utils/object-utils");
20
+ exports.ObjectUtils = object_utils_1.default;
21
+ const prototype_utils_1 = require("./utils/prototype-utils");
20
22
  exports.PrototypeUtils = prototype_utils_1.default;
21
- var request_data_generator_1 = require("./utils/request-data-generator");
23
+ const request_data_generator_1 = require("./utils/request-data-generator");
22
24
  exports.RequestDataGenerator = request_data_generator_1.default;
23
- var file_utils_1 = require("./utils/file-utils");
25
+ const file_utils_1 = require("./utils/file-utils");
24
26
  exports.FileUtils = file_utils_1.default;
25
- var string_utils_1 = require("./utils/string-utils");
27
+ const string_utils_1 = require("./utils/string-utils");
26
28
  exports.StringUtils = string_utils_1.default;
27
- var local_date_1 = require("./class/local-date");
29
+ const local_date_1 = require("./class/local-date");
28
30
  exports.LocalDate = local_date_1.default;
29
- var local_date_time_1 = require("./class/local-date-time");
31
+ const local_date_time_1 = require("./class/local-date-time");
30
32
  exports.LocalDateTime = local_date_time_1.default;
31
- var year_month_1 = require("./class/year-month");
33
+ const year_month_1 = require("./class/year-month");
32
34
  exports.YearMonth = year_month_1.default;
@@ -24,11 +24,11 @@ declare const _default: {
24
24
  */
25
25
  getDescendants<T>(array: any[] | undefined, id: any, idKey?: string, parentKey?: string): T[];
26
26
  /**
27
- * 根据数组中的某一属性去重
27
+ * 根据数组元素中的某一属性进行去重
28
28
  * @param array
29
29
  * @param keyName
30
- * @param onDuplicate key重复是的行为,override=覆盖,ignore=忽略
30
+ * @param override 遇到重复元素是否覆盖
31
31
  */
32
- uniqueBy<T>(array?: any[], keyName?: any, onDuplicate?: "override" | "ignore"): T[];
32
+ uniqueBy<T>(array: T[] | undefined, keyName: string, override?: boolean): T[];
33
33
  };
34
34
  export default _default;
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ const object_utils_1 = require("./object-utils");
3
4
  exports.default = {
4
5
  /**
5
6
  * 数组转化为树形结构
@@ -8,26 +9,22 @@ exports.default = {
8
9
  * @param parentKey 关联上级字段
9
10
  * @param childrenKey 下级字段
10
11
  */
11
- treeify: function (array, idKey, parentKey, childrenKey) {
12
- if (array === void 0) { array = []; }
13
- if (idKey === void 0) { idKey = 'id'; }
14
- if (parentKey === void 0) { parentKey = 'parentId'; }
15
- if (childrenKey === void 0) { childrenKey = 'children'; }
16
- var map = new Map(); // 先根据每项的parentId将该项放入Map
17
- var ids = []; // 记录所有的id,parentId不在这个集合内则说明是最上级
18
- var length = array.length;
19
- for (var i = 0; i < length; i++) {
20
- var e = array[i], id = e[idKey], pid = e[parentKey];
21
- var children = map.get(pid) || [];
12
+ treeify(array = [], idKey = 'id', parentKey = 'parentId', childrenKey = 'children') {
13
+ const map = new Map(); // 先根据每项的parentId将该项放入Map
14
+ const ids = []; // 记录所有的id,parentId不在这个集合内则说明是最上级
15
+ const length = array.length;
16
+ for (let i = 0; i < length; i++) {
17
+ const e = array[i], id = e[idKey], pid = e[parentKey];
18
+ const children = map.get(pid) || [];
22
19
  children.push(e);
23
20
  map.set(pid, children);
24
21
  ids.push(id);
25
22
  }
26
- var o = [];
27
- var values = Array.from(map.values()).flat();
28
- var length2 = values.length;
29
- for (var i = 0; i < length2; i++) {
30
- var e = values[i], id = e[idKey], pid = e[parentKey];
23
+ const o = [];
24
+ const values = Array.from(map.values()).flat();
25
+ const length2 = values.length;
26
+ for (let i = 0; i < length2; i++) {
27
+ const e = values[i], id = e[idKey], pid = e[parentKey];
31
28
  e[childrenKey] = map.get(id); // 赋值children
32
29
  if (!ids.includes(pid)) // 只返回最上级
33
30
  o.push(e);
@@ -41,24 +38,21 @@ exports.default = {
41
38
  * @param idKey id的key
42
39
  * @param parentKey parent的key
43
40
  */
44
- getAncestors: function (array, id, idKey, parentKey) {
45
- if (array === void 0) { array = []; }
46
- if (idKey === void 0) { idKey = 'id'; }
47
- if (parentKey === void 0) { parentKey = 'parentId'; }
41
+ getAncestors(array = [], id, idKey = 'id', parentKey = 'parentId') {
48
42
  // 建立 id - item 的映射
49
- var idMap = new Map();
50
- for (var i = array.length - 1; i >= 0; i--) {
51
- var e = array[i], _a = e, _b = idKey, itemId = _a[_b];
43
+ const idMap = new Map();
44
+ for (let i = array.length - 1; i >= 0; i--) {
45
+ const e = array[i], { [idKey]: itemId } = e;
52
46
  idMap.set(itemId, e);
53
47
  }
54
- var result = [];
55
- var current = idMap.get(id);
48
+ const result = [];
49
+ let current = idMap.get(id);
56
50
  while (current) {
57
- var parentId = current[parentKey];
58
- var parent_1 = idMap.get(parentId);
59
- if (parent_1) {
60
- result.unshift(parent_1);
61
- current = parent_1;
51
+ let parentId = current[parentKey];
52
+ const parent = idMap.get(parentId);
53
+ if (parent) {
54
+ result.unshift(parent);
55
+ current = parent;
62
56
  }
63
57
  else {
64
58
  break;
@@ -73,14 +67,11 @@ exports.default = {
73
67
  * @param idKey id的key
74
68
  * @param parentKey parent的key
75
69
  */
76
- getDescendants: function (array, id, idKey, parentKey) {
77
- if (array === void 0) { array = []; }
78
- if (idKey === void 0) { idKey = 'id'; }
79
- if (parentKey === void 0) { parentKey = 'parentId'; }
80
- var result = [];
81
- var dfs = function (currentId) {
82
- for (var i = array.length - 1; i >= 0; i--) {
83
- var e = array[i], itemId = e[idKey], pid = e[parentKey];
70
+ getDescendants(array = [], id, idKey = 'id', parentKey = 'parentId') {
71
+ const result = [];
72
+ const dfs = (currentId) => {
73
+ for (let i = array.length - 1; i >= 0; i--) {
74
+ const e = array[i], itemId = e[idKey], pid = e[parentKey];
84
75
  if (pid === currentId) {
85
76
  result.unshift(e);
86
77
  dfs(itemId);
@@ -91,21 +82,18 @@ exports.default = {
91
82
  return result;
92
83
  },
93
84
  /**
94
- * 根据数组中的某一属性去重
85
+ * 根据数组元素中的某一属性进行去重
95
86
  * @param array
96
87
  * @param keyName
97
- * @param onDuplicate key重复是的行为,override=覆盖,ignore=忽略
88
+ * @param override 遇到重复元素是否覆盖
98
89
  */
99
- uniqueBy: function (array, keyName, onDuplicate) {
100
- if (array === void 0) { array = []; }
101
- if (keyName === void 0) { keyName = 'id'; }
102
- if (onDuplicate === void 0) { onDuplicate = 'ignore'; }
103
- var map = new Map();
104
- var length = array.length;
105
- for (var i = 0; i < length; i++) {
106
- var e = array[i];
107
- var key = e[keyName];
108
- if (onDuplicate === 'ignore' && map.has(key))
90
+ uniqueBy(array = [], keyName, override = false) {
91
+ const map = new Map();
92
+ const length = array.length;
93
+ for (let i = 0; i < length; i++) {
94
+ const e = array[i];
95
+ const key = object_utils_1.default.optionalChaining(e, keyName);
96
+ if (!override && map.has(key))
109
97
  continue;
110
98
  map.set(key, e);
111
99
  }
@@ -0,0 +1,2 @@
1
+ import axios from 'axios';
2
+ export default axios;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var axios_1 = require("axios");
4
+ axios_1.default.interceptors.request.use(function (request) {
5
+ console.log('request');
6
+ return request;
7
+ }, function (error) {
8
+ console.log('request error');
9
+ return Promise.reject(error);
10
+ });
11
+ axios_1.default.interceptors.response.use(function (response) {
12
+ console.log('response');
13
+ return response;
14
+ }, function (error) {
15
+ console.log('response error');
16
+ return Promise.reject(error);
17
+ });
18
+ exports.default = axios_1.default;
@@ -1,18 +1,40 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- var axios_1 = require("axios");
4
- axios_1.default.interceptors.request.use(function (request) {
5
- console.log('request');
3
+ const axios_1 = require("axios");
4
+ const index_1 = require("../index");
5
+ // post 默认application/json
6
+ // post 使用URLSearchParams自动变为application/x-www-form-urlencoded;charset=UTF-8
7
+ // post 使用FormData自动变为multipart/form-data
8
+ // get 默认无
9
+ // get 使用URLSearchParams默认无
10
+ // get 无法使用FormData
11
+ axios_1.default.interceptors.request.use(request => {
12
+ request.data = index_1.RequestDataGenerator.generate(request.data, new FormData());
13
+ request.params = index_1.RequestDataGenerator.generate(request.params, new URLSearchParams());
6
14
  return request;
7
- }, function (error) {
8
- console.log('request error');
15
+ }, error => {
9
16
  return Promise.reject(error);
10
17
  });
11
- axios_1.default.interceptors.response.use(function (response) {
12
- console.log('response');
18
+ axios_1.default.interceptors.response.use(async (response) => {
19
+ if (response.config.responseType === 'blob') {
20
+ const { data } = response;
21
+ if (data.type === 'application/x-download') { // 不是json说明下载成功
22
+ const file = new File([data], decodeURI(response.headers['content-disposition'].split('filename=')[1]));
23
+ const a = document.createElement('a');
24
+ a.href = URL.createObjectURL(file);
25
+ a.download = file.name;
26
+ a.click();
27
+ // 释放
28
+ URL.revokeObjectURL(a.href);
29
+ a.remove();
30
+ return Promise.resolve(response);
31
+ }
32
+ else if (data.type === 'application/json') { // 是json说明有报错
33
+ response.data = await new Response(data).json();
34
+ }
35
+ }
13
36
  return response;
14
- }, function (error) {
15
- console.log('response error');
37
+ }, error => {
16
38
  return Promise.reject(error);
17
39
  });
18
40
  exports.default = axios_1.default;
@@ -1,85 +1,28 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __generator = (this && this.__generator) || function (thisArg, body) {
12
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
13
- return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
- function verb(n) { return function (v) { return step([n, v]); }; }
15
- function step(op) {
16
- if (f) throw new TypeError("Generator is already executing.");
17
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
- if (y = 0, t) op = [op[0] & 2, t.value];
20
- switch (op[0]) {
21
- case 0: case 1: t = op; break;
22
- case 4: _.label++; return { value: op[1], done: false };
23
- case 5: _.label++; y = op[1]; op = [0]; continue;
24
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
- default:
26
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
- if (t[2]) _.ops.pop();
31
- _.trys.pop(); continue;
32
- }
33
- op = body.call(thisArg, _);
34
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
- }
37
- };
38
2
  Object.defineProperty(exports, "__esModule", { value: true });
39
- var JSZip = require("jszip");
40
- var file_utils_1 = require("./file-utils");
3
+ const JSZip = require("jszip");
4
+ const file_utils_1 = require("./file-utils");
41
5
  exports.default = {
42
- zip: function (urls) {
43
- return __awaiter(this, void 0, void 0, function () {
44
- var fetch, URL, zip, index, _i, urls_1, url, response, blob;
45
- return __generator(this, function (_a) {
46
- switch (_a.label) {
47
- case 0:
48
- fetch = window.fetch, URL = window.URL;
49
- if (!fetch) {
50
- alert('您的浏览器不支持fetch');
51
- return [2 /*return*/];
52
- }
53
- urls = [urls].flat(Infinity);
54
- zip = new JSZip();
55
- index = 1;
56
- _i = 0, urls_1 = urls;
57
- _a.label = 1;
58
- case 1:
59
- if (!(_i < urls_1.length)) return [3 /*break*/, 5];
60
- url = urls_1[_i];
61
- return [4 /*yield*/, fetch(url)];
62
- case 2:
63
- response = _a.sent();
64
- return [4 /*yield*/, response.blob()];
65
- case 3:
66
- blob = _a.sent();
67
- zip.file([index++, file_utils_1.default.fileType(url)].filter(function (e) { return !!e; }).join('.'), blob);
68
- _a.label = 4;
69
- case 4:
70
- _i++;
71
- return [3 /*break*/, 1];
72
- case 5:
73
- zip.generateAsync({ type: 'blob' }).then(function (blob) {
74
- var a = document.createElement('a');
75
- a.href = URL.createObjectURL(blob);
76
- a.click();
77
- URL.revokeObjectURL(a.href);
78
- a.remove();
79
- });
80
- return [2 /*return*/];
81
- }
82
- });
6
+ async zip(urls) {
7
+ const { fetch, URL } = window;
8
+ if (!fetch) {
9
+ alert('您的浏览器不支持fetch');
10
+ return;
11
+ }
12
+ urls = [urls].flat(Infinity);
13
+ const zip = new JSZip();
14
+ let index = 1;
15
+ for (const url of urls) {
16
+ const response = await fetch(url);
17
+ const blob = await response.blob();
18
+ zip.file([index++, file_utils_1.default.fileType(url)].filter(e => !!e).join('.'), blob);
19
+ }
20
+ zip.generateAsync({ type: 'blob' }).then(blob => {
21
+ const a = document.createElement('a');
22
+ a.href = URL.createObjectURL(blob);
23
+ a.click();
24
+ URL.revokeObjectURL(a.href);
25
+ a.remove();
83
26
  });
84
27
  }
85
28
  };
@@ -1,12 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.default = {
4
- encrypt: function (s, type) {
4
+ encrypt(s, type) {
5
5
  if (type === "base64")
6
6
  return btoa(s);
7
7
  throw '请指定加密类型';
8
8
  },
9
- decrypt: function (s, type) {
9
+ decrypt(s, type) {
10
10
  if (type === "base64")
11
11
  try {
12
12
  return atob(s);
@@ -1,18 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.default = {
4
- formatSize: function (size) {
5
- var units = ['B', 'KB', 'MB', 'GB', 'TB'];
6
- var index = 0;
7
- var s = size;
4
+ formatSize(size) {
5
+ const units = ['B', 'KB', 'MB', 'GB', 'TB'];
6
+ let index = 0;
7
+ let s = size;
8
8
  while (s >= 1024 && index < units.length - 1) {
9
9
  index++;
10
10
  s = s / 1024;
11
11
  }
12
12
  return s.toFixed(1) + units[index];
13
13
  },
14
- fileType: function (url) {
15
- var s = String(url);
14
+ fileType(url) {
15
+ const s = String(url);
16
16
  if (!s.includes('.'))
17
17
  return '';
18
18
  return s.substring(s.lastIndexOf('.') + 1, s.length);
@@ -1,38 +1,28 @@
1
1
  "use strict";
2
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
3
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
4
- if (ar || !(i in from)) {
5
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
6
- ar[i] = from[i];
7
- }
8
- }
9
- return to.concat(ar || Array.prototype.slice.call(from));
10
- };
11
2
  Object.defineProperty(exports, "__esModule", { value: true });
12
3
  // 货币相关工具类
13
4
  exports.default = {
14
5
  // https://support.microsoft.com/zh-cn/office/xirr-%E5%87%BD%E6%95%B0-de1242ec-6477-445b-b11b-a303ad9adc9d
15
6
  // 不定期投资收益率
16
- XIRR: function (entities, guess) {
17
- if (guess === void 0) { guess = 0.1; }
7
+ XIRR(entities, guess = 0.1) {
18
8
  // 按照日期从小到大排列
19
- var list = __spreadArray([], entities, true).sort(function (a, b) { return a.date.getTime() - b.date.getTime(); });
20
- var d0 = list[0].date.getTime();
21
- var npv = function (rate) {
22
- var total = 0;
23
- for (var i = list.length - 1; i >= 0; i--) {
24
- var daysDiff = (list[i].date.getTime() - d0) / (1000 * 3600 * 24);
9
+ const list = [...entities].sort((a, b) => a.date.getTime() - b.date.getTime());
10
+ const d0 = list[0].date.getTime();
11
+ const npv = (rate) => {
12
+ let total = 0;
13
+ for (let i = list.length - 1; i >= 0; i--) {
14
+ const daysDiff = (list[i].date.getTime() - d0) / (1000 * 3600 * 24);
25
15
  total += list[i].amount / Math.pow(1 + rate, daysDiff / 365);
26
16
  }
27
17
  return total;
28
18
  };
29
- var epsilon = 1e-6; // 精度
30
- var x0 = guess;
31
- var x1;
32
- var iteration = 0;
19
+ let epsilon = 1e-6; // 精度
20
+ let x0 = guess;
21
+ let x1;
22
+ let iteration = 0;
33
23
  while (iteration < 100) {
34
- var f0 = npv(x0);
35
- var fPrime = (npv(x0 + epsilon) - f0) / epsilon;
24
+ const f0 = npv(x0);
25
+ const fPrime = (npv(x0 + epsilon) - f0) / epsilon;
36
26
  x1 = x0 - f0 / fPrime;
37
27
  if (Math.abs(x1 - x0) < epsilon)
38
28
  return x1;
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- var prototype_utils_1 = require("./prototype-utils");
3
+ const prototype_utils_1 = require("./prototype-utils");
4
4
  exports.default = {
5
- isObject: function (o) {
5
+ isObject(o) {
6
6
  if (prototype_utils_1.default.isObject(o))
7
7
  return true;
8
8
  try {
@@ -12,7 +12,7 @@ exports.default = {
12
12
  return false;
13
13
  }
14
14
  },
15
- isArray: function (o) {
15
+ isArray(o) {
16
16
  if (prototype_utils_1.default.isArray(o))
17
17
  return true;
18
18
  try {
@@ -22,22 +22,20 @@ exports.default = {
22
22
  return false;
23
23
  }
24
24
  },
25
- parseObject: function (o) {
25
+ parseObject(o) {
26
26
  if (prototype_utils_1.default.isObject(o))
27
27
  return o;
28
28
  return this.isObject(o) ? JSON.parse(o) : {};
29
29
  },
30
- parseArray: function (o) {
30
+ parseArray(o) {
31
31
  if (prototype_utils_1.default.isArray(o))
32
32
  return o;
33
33
  return this.isArray(o) ? JSON.parse(o) : [];
34
34
  },
35
- optionalChaining: function (o, chain, substitute) {
36
- if (o === void 0) { o = {}; }
37
- if (substitute === void 0) { substitute = ''; }
38
- var chaining = chain.split('.');
39
- for (var _i = 0, chaining_1 = chaining; _i < chaining_1.length; _i++) {
40
- var key = chaining_1[_i];
35
+ /* 迁移至object-utils,后续删除 */
36
+ optionalChaining(o = {}, chain, substitute = '') {
37
+ const chaining = chain.split('.');
38
+ for (const key of chaining) {
41
39
  try {
42
40
  o = o[key];
43
41
  }
@@ -49,11 +47,10 @@ exports.default = {
49
47
  return substitute;
50
48
  return o;
51
49
  },
50
+ /* 迁移至object-utils,后续删除 */
52
51
  // 将一个object的值全部设为null,主要用于naive-ui
53
- setNull: function (o, exclusions) {
54
- if (o === void 0) { o = {}; }
55
- if (exclusions === void 0) { exclusions = []; }
56
- for (var key in o)
52
+ setNull(o = {}, exclusions = []) {
53
+ for (const key in o)
57
54
  if (!exclusions.includes(key))
58
55
  o[key] = null;
59
56
  }
@@ -2,24 +2,19 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.default = {
4
4
  // 判断是否数字
5
- ifNaN: function (number, substitute) {
5
+ ifNaN(number, substitute) {
6
6
  return this.isNumber(number) ? +number : substitute;
7
7
  },
8
- isNumber: function () {
9
- var number = [];
10
- for (var _i = 0; _i < arguments.length; _i++) {
11
- number[_i] = arguments[_i];
12
- }
13
- for (var i = number.length - 1; i >= 0; i--) {
14
- var e = String(number[i]).trim();
8
+ isNumber(...number) {
9
+ for (let i = number.length - 1; i >= 0; i--) {
10
+ const e = String(number[i]).trim();
15
11
  if (e === '' || !isFinite(+e) || isNaN(+e))
16
12
  return false;
17
13
  }
18
14
  return true;
19
15
  },
20
16
  // 增加千分位分隔符
21
- thousandths: function (number, fixed) {
22
- if (fixed === void 0) { fixed = 2; }
17
+ thousandths(number, fixed = 2) {
23
18
  if (!this.isNumber(number))
24
19
  return '';
25
20
  number = new Intl.NumberFormat('en-US', {
@@ -30,20 +25,19 @@ exports.default = {
30
25
  return (0).toFixed(fixed);
31
26
  return number;
32
27
  },
33
- summation: function (array) {
34
- if (array === void 0) { array = []; }
35
- var sum = 0;
36
- for (var i = array.length - 1; i >= 0; i--) {
37
- var e = +array[i];
28
+ summation(array = []) {
29
+ let sum = 0;
30
+ for (let i = array.length - 1; i >= 0; i--) {
31
+ const e = +array[i];
38
32
  if (this.isNumber(e))
39
33
  sum += e;
40
34
  }
41
35
  return sum;
42
36
  },
43
- isBetween: function (a, min, max) {
37
+ isBetween(a, min, max) {
44
38
  return a >= Math.min(min, max) && a <= Math.max(max, min);
45
39
  },
46
- isInside: function (a, min, max) {
40
+ isInside(a, min, max) {
47
41
  return a > Math.min(min, max) && a < Math.max(max, min);
48
42
  }
49
43
  };
@@ -0,0 +1,6 @@
1
+ declare const _default: {
2
+ optionalChaining(o: any | undefined, chain: string, substitute?: any): any;
3
+ setValue(o?: any, value?: any, exclusions?: any): void;
4
+ merge(...objects: any[]): object;
5
+ };
6
+ export default _default;
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const prototype_utils_1 = require("./prototype-utils");
4
+ exports.default = {
5
+ optionalChaining(o = {}, chain, substitute = '') {
6
+ const chaining = chain.split('.');
7
+ for (const key of chaining) {
8
+ try {
9
+ o = o[key];
10
+ }
11
+ catch (e) {
12
+ o = '';
13
+ }
14
+ }
15
+ if ([void 0, null].includes(o))
16
+ return substitute;
17
+ return o;
18
+ },
19
+ // 将一个object的value全部设定为某个值
20
+ setValue(o = {}, value = null, exclusions = []) {
21
+ for (const key in o)
22
+ if (!exclusions.includes(key))
23
+ o[key] = value;
24
+ },
25
+ // 递归合并多个对象,返回一个新的对象
26
+ merge(...objects) {
27
+ const data = {};
28
+ const length = objects.length;
29
+ for (let i = 0; i < length; i++) {
30
+ const o = objects[i];
31
+ for (const key in o) {
32
+ const v1 = data[key];
33
+ const v2 = o[key];
34
+ if (prototype_utils_1.default.isObject(v1) && prototype_utils_1.default.isObject(v2))
35
+ data[key] = this.merge(v1, v2);
36
+ else
37
+ data[key] = v2;
38
+ }
39
+ }
40
+ return data;
41
+ }
42
+ };
@@ -1,31 +1,31 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.default = {
4
- is: function (o, type) {
5
- return Object.prototype.toString.call(o) === "[object ".concat(type, "]");
4
+ is(o, type) {
5
+ return Object.prototype.toString.call(o) === `[object ${type}]`;
6
6
  },
7
- isObject: function (o) {
7
+ isObject(o) {
8
8
  return this.is(o, 'Object');
9
9
  },
10
- isArray: function (o) {
10
+ isArray(o) {
11
11
  return this.is(o, 'Array');
12
12
  },
13
- isFile: function (o) {
13
+ isFile(o) {
14
14
  return this.is(o, 'File');
15
15
  },
16
- isNumber: function (o) {
16
+ isNumber(o) {
17
17
  return this.is(o, 'Number');
18
18
  },
19
- isDate: function (o) {
19
+ isDate(o) {
20
20
  return this.is(o, 'Date');
21
21
  },
22
- isFunction: function (o) {
22
+ isFunction(o) {
23
23
  return this.is(o, 'Function');
24
24
  },
25
- isBoolean: function (o) {
25
+ isBoolean(o) {
26
26
  return this.is(o, 'Boolean');
27
27
  },
28
- isString: function (o) {
28
+ isString(o) {
29
29
  return this.is(o, 'String');
30
30
  },
31
31
  };
@@ -1,16 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- var prototype_utils_1 = require("./prototype-utils");
4
3
  exports.default = {
5
- generate: function (data, params) {
6
- if (data === void 0) { data = {}; }
7
- for (var _i = 0, _a = Object.entries(data); _i < _a.length; _i++) {
8
- var _b = _a[_i], key = _b[0], value = _b[1];
9
- if (prototype_utils_1.default.isArray(value))
10
- for (var _c = 0, _d = value; _c < _d.length; _c++) {
11
- var i = _d[_c];
4
+ generate(data = {}, params) {
5
+ for (const [key, value] of Object.entries(data)) {
6
+ if (Array.isArray(value))
7
+ for (const i of value)
12
8
  params.append(key, i);
13
- }
14
9
  else if (isValidValue(value))
15
10
  params.append(key, value);
16
11
  }
@@ -1,16 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.default = {
4
- trimAll: function (str) {
4
+ trimAll(str) {
5
5
  if ([void 0, null].includes(str))
6
6
  return '';
7
- return String(str).split('').map(function (e) { return e.trim(); }).join('');
7
+ return String(str).split('').map(e => e.trim()).join('');
8
8
  },
9
- uuid: function (withDash) {
10
- if (withDash === void 0) { withDash = false; }
11
- return ['xxxxxxxx', 'xxxx', '4xxx', 'yxxx', 'xxxxxxxxxxxx'].join(withDash ? '-' : '').replace(/[xy]/g, function (c) {
12
- var r = (Math.random() * 16) | 0;
13
- var v = c === 'x' ? r : (r & 0x3) | 0x8;
9
+ uuid(withDash = false) {
10
+ return ['xxxxxxxx', 'xxxx', '4xxx', 'yxxx', 'xxxxxxxxxxxx'].join(withDash ? '-' : '').replace(/[xy]/g, c => {
11
+ const r = (Math.random() * 16) | 0;
12
+ const v = c === 'x' ? r : (r & 0x3) | 0x8;
14
13
  return v.toString(16);
15
14
  });
16
15
  }
package/package.json CHANGED
@@ -1,25 +1,24 @@
1
1
  {
2
2
  "name": "qmwts",
3
- "version": "1.1.59",
3
+ "version": "1.1.61",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "scripts": {
8
8
  "build": "tsc",
9
- "test": "jest"
9
+ "test": "vitest"
10
10
  },
11
11
  "author": "qmw",
12
12
  "license": "ISC",
13
13
  "devDependencies": {
14
- "jest": "^29.7.0",
15
- "ts-jest": "^29.2.5",
16
- "typescript": "^5.8.3"
14
+ "axios": "^1.11.0",
15
+ "typescript": "^5.9.2",
16
+ "vitest": "^3.2.4"
17
17
  },
18
18
  "files": [
19
19
  "dist"
20
20
  ],
21
21
  "dependencies": {
22
- "axios": "^1.11.0",
23
22
  "jszip": "^3.10.1"
24
23
  }
25
24
  }
@@ -1,4 +0,0 @@
1
- declare const _default: {
2
- uuid(): string;
3
- };
4
- export default _default;
@@ -1,11 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = {
4
- uuid: function () {
5
- return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
6
- var r = (Math.random() * 16) | 0;
7
- var v = c === 'x' ? r : (r & 0x3) | 0x8;
8
- return v.toString(16);
9
- });
10
- }
11
- };