qmwts 1.1.60 → 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.
- package/dist/class/local-date-time.js +2 -5
- package/dist/class/local-date.js +23 -24
- package/dist/class/year-month.js +9 -10
- package/dist/index.d.ts +2 -1
- package/dist/index.js +15 -13
- package/dist/utils/array-utils.d.ts +3 -3
- package/dist/utils/array-utils.js +38 -50
- package/dist/utils/axios-instance.js +23 -67
- package/dist/utils/downloader.js +22 -79
- package/dist/utils/encryptor.js +2 -2
- package/dist/utils/file-utils.js +6 -6
- package/dist/utils/finance-utils.js +13 -23
- package/dist/utils/json-utils.js +12 -15
- package/dist/utils/number-utils.js +11 -17
- package/dist/utils/object-utils.d.ts +6 -0
- package/dist/utils/object-utils.js +42 -0
- package/dist/utils/prototype-utils.js +10 -10
- package/dist/utils/request-data-generator.js +3 -7
- package/dist/utils/string-utils.js +6 -7
- package/package.json +5 -6
package/dist/class/local-date.js
CHANGED
|
@@ -1,47 +1,46 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
// https://juejin.cn/post/7098891689955164168
|
|
4
|
-
|
|
5
|
-
|
|
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
|
-
|
|
11
|
+
static now() {
|
|
12
12
|
return new LocalDate();
|
|
13
|
-
}
|
|
14
|
-
|
|
13
|
+
}
|
|
14
|
+
static of(year, month, date) {
|
|
15
15
|
return new LocalDate(new Date(year, month - 1, date));
|
|
16
|
-
}
|
|
17
|
-
|
|
16
|
+
}
|
|
17
|
+
getYear() {
|
|
18
18
|
return this.date.getFullYear();
|
|
19
|
-
}
|
|
20
|
-
|
|
19
|
+
}
|
|
20
|
+
getMonth() {
|
|
21
21
|
return this.date.getMonth() + 1;
|
|
22
|
-
}
|
|
23
|
-
|
|
22
|
+
}
|
|
23
|
+
getDayOfMonth() {
|
|
24
24
|
return this.date.getDate();
|
|
25
|
-
}
|
|
26
|
-
|
|
25
|
+
}
|
|
26
|
+
getDayOfWeek() {
|
|
27
27
|
return this.date.getDay() || 7;
|
|
28
|
-
}
|
|
29
|
-
|
|
28
|
+
}
|
|
29
|
+
plusDays(days) {
|
|
30
30
|
return LocalDate.of(this.getYear(), this.getMonth(), this.getDayOfMonth() + days);
|
|
31
|
-
}
|
|
32
|
-
|
|
31
|
+
}
|
|
32
|
+
minusDays(days) {
|
|
33
33
|
return this.plusDays(-days);
|
|
34
|
-
}
|
|
35
|
-
|
|
34
|
+
}
|
|
35
|
+
format() {
|
|
36
36
|
return this.toString();
|
|
37
|
-
}
|
|
38
|
-
|
|
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
|
-
|
|
46
|
-
}());
|
|
44
|
+
}
|
|
45
|
+
}
|
|
47
46
|
exports.default = LocalDate;
|
package/dist/class/year-month.js
CHANGED
|
@@ -1,24 +1,23 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
4
|
-
|
|
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
|
-
|
|
10
|
+
static now() {
|
|
11
11
|
return new YearMonth();
|
|
12
|
-
}
|
|
13
|
-
|
|
12
|
+
}
|
|
13
|
+
static of(year, month) {
|
|
14
14
|
return new YearMonth(new Date(year, month - 1));
|
|
15
|
-
}
|
|
16
|
-
|
|
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
|
-
|
|
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
|
-
|
|
9
|
+
const axios_instance_1 = require("./utils/axios-instance");
|
|
10
10
|
exports.AxiosInstance = axios_instance_1.default;
|
|
11
|
-
|
|
11
|
+
const downloader_1 = require("./utils/downloader");
|
|
12
12
|
exports.Downloader = downloader_1.default;
|
|
13
|
-
|
|
13
|
+
const encryptor_1 = require("./utils/encryptor");
|
|
14
14
|
exports.Encryptor = encryptor_1.default;
|
|
15
|
-
|
|
15
|
+
const number_utils_1 = require("./utils/number-utils");
|
|
16
16
|
exports.NumberUtils = number_utils_1.default;
|
|
17
|
-
|
|
17
|
+
const json_utils_1 = require("./utils/json-utils");
|
|
18
18
|
exports.JsonUtils = json_utils_1.default;
|
|
19
|
-
|
|
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
|
-
|
|
23
|
+
const request_data_generator_1 = require("./utils/request-data-generator");
|
|
22
24
|
exports.RequestDataGenerator = request_data_generator_1.default;
|
|
23
|
-
|
|
25
|
+
const file_utils_1 = require("./utils/file-utils");
|
|
24
26
|
exports.FileUtils = file_utils_1.default;
|
|
25
|
-
|
|
27
|
+
const string_utils_1 = require("./utils/string-utils");
|
|
26
28
|
exports.StringUtils = string_utils_1.default;
|
|
27
|
-
|
|
29
|
+
const local_date_1 = require("./class/local-date");
|
|
28
30
|
exports.LocalDate = local_date_1.default;
|
|
29
|
-
|
|
31
|
+
const local_date_time_1 = require("./class/local-date-time");
|
|
30
32
|
exports.LocalDateTime = local_date_time_1.default;
|
|
31
|
-
|
|
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
|
|
30
|
+
* @param override 遇到重复元素是否覆盖
|
|
31
31
|
*/
|
|
32
|
-
uniqueBy<T>(array
|
|
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
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
for (
|
|
30
|
-
|
|
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
|
|
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
|
-
|
|
50
|
-
for (
|
|
51
|
-
|
|
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
|
-
|
|
55
|
-
|
|
48
|
+
const result = [];
|
|
49
|
+
let current = idMap.get(id);
|
|
56
50
|
while (current) {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
if (
|
|
60
|
-
result.unshift(
|
|
61
|
-
current =
|
|
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
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
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
|
|
88
|
+
* @param override 遇到重复元素是否覆盖
|
|
98
89
|
*/
|
|
99
|
-
uniqueBy
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
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
|
}
|
|
@@ -1,84 +1,40 @@
|
|
|
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
|
-
|
|
40
|
-
|
|
3
|
+
const axios_1 = require("axios");
|
|
4
|
+
const index_1 = require("../index");
|
|
41
5
|
// post 默认application/json
|
|
42
6
|
// post 使用URLSearchParams自动变为application/x-www-form-urlencoded;charset=UTF-8
|
|
43
7
|
// post 使用FormData自动变为multipart/form-data
|
|
44
8
|
// get 默认无
|
|
45
9
|
// get 使用URLSearchParams默认无
|
|
46
10
|
// get 无法使用FormData
|
|
47
|
-
axios_1.default.interceptors.request.use(
|
|
11
|
+
axios_1.default.interceptors.request.use(request => {
|
|
48
12
|
request.data = index_1.RequestDataGenerator.generate(request.data, new FormData());
|
|
49
13
|
request.params = index_1.RequestDataGenerator.generate(request.params, new URLSearchParams());
|
|
50
14
|
return request;
|
|
51
|
-
},
|
|
15
|
+
}, error => {
|
|
52
16
|
return Promise.reject(error);
|
|
53
17
|
});
|
|
54
|
-
axios_1.default.interceptors.response.use(
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
return [2 /*return*/, Promise.resolve(response)];
|
|
71
|
-
case 1:
|
|
72
|
-
if (!(data.type === 'application/json')) return [3 /*break*/, 3];
|
|
73
|
-
_a = response;
|
|
74
|
-
return [4 /*yield*/, new Response(data).json()];
|
|
75
|
-
case 2:
|
|
76
|
-
_a.data = _b.sent();
|
|
77
|
-
_b.label = 3;
|
|
78
|
-
case 3: return [2 /*return*/, 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();
|
|
79
34
|
}
|
|
80
|
-
}
|
|
81
|
-
|
|
35
|
+
}
|
|
36
|
+
return response;
|
|
37
|
+
}, error => {
|
|
82
38
|
return Promise.reject(error);
|
|
83
39
|
});
|
|
84
40
|
exports.default = axios_1.default;
|
package/dist/utils/downloader.js
CHANGED
|
@@ -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
|
-
|
|
40
|
-
|
|
3
|
+
const JSZip = require("jszip");
|
|
4
|
+
const file_utils_1 = require("./file-utils");
|
|
41
5
|
exports.default = {
|
|
42
|
-
zip
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
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
|
};
|
package/dist/utils/encryptor.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.default = {
|
|
4
|
-
encrypt
|
|
4
|
+
encrypt(s, type) {
|
|
5
5
|
if (type === "base64")
|
|
6
6
|
return btoa(s);
|
|
7
7
|
throw '请指定加密类型';
|
|
8
8
|
},
|
|
9
|
-
decrypt
|
|
9
|
+
decrypt(s, type) {
|
|
10
10
|
if (type === "base64")
|
|
11
11
|
try {
|
|
12
12
|
return atob(s);
|
package/dist/utils/file-utils.js
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.default = {
|
|
4
|
-
formatSize
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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
|
|
15
|
-
|
|
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
|
|
17
|
-
if (guess === void 0) { guess = 0.1; }
|
|
7
|
+
XIRR(entities, guess = 0.1) {
|
|
18
8
|
// 按照日期从小到大排列
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
for (
|
|
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
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
19
|
+
let epsilon = 1e-6; // 精度
|
|
20
|
+
let x0 = guess;
|
|
21
|
+
let x1;
|
|
22
|
+
let iteration = 0;
|
|
33
23
|
while (iteration < 100) {
|
|
34
|
-
|
|
35
|
-
|
|
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;
|
package/dist/utils/json-utils.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
3
|
+
const prototype_utils_1 = require("./prototype-utils");
|
|
4
4
|
exports.default = {
|
|
5
|
-
isObject
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
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
|
|
54
|
-
|
|
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
|
|
5
|
+
ifNaN(number, substitute) {
|
|
6
6
|
return this.isNumber(number) ? +number : substitute;
|
|
7
7
|
},
|
|
8
|
-
isNumber
|
|
9
|
-
|
|
10
|
-
|
|
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
|
|
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
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
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
|
|
37
|
+
isBetween(a, min, max) {
|
|
44
38
|
return a >= Math.min(min, max) && a <= Math.max(max, min);
|
|
45
39
|
},
|
|
46
|
-
isInside
|
|
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,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
|
|
5
|
-
return Object.prototype.toString.call(o) ===
|
|
4
|
+
is(o, type) {
|
|
5
|
+
return Object.prototype.toString.call(o) === `[object ${type}]`;
|
|
6
6
|
},
|
|
7
|
-
isObject
|
|
7
|
+
isObject(o) {
|
|
8
8
|
return this.is(o, 'Object');
|
|
9
9
|
},
|
|
10
|
-
isArray
|
|
10
|
+
isArray(o) {
|
|
11
11
|
return this.is(o, 'Array');
|
|
12
12
|
},
|
|
13
|
-
isFile
|
|
13
|
+
isFile(o) {
|
|
14
14
|
return this.is(o, 'File');
|
|
15
15
|
},
|
|
16
|
-
isNumber
|
|
16
|
+
isNumber(o) {
|
|
17
17
|
return this.is(o, 'Number');
|
|
18
18
|
},
|
|
19
|
-
isDate
|
|
19
|
+
isDate(o) {
|
|
20
20
|
return this.is(o, 'Date');
|
|
21
21
|
},
|
|
22
|
-
isFunction
|
|
22
|
+
isFunction(o) {
|
|
23
23
|
return this.is(o, 'Function');
|
|
24
24
|
},
|
|
25
|
-
isBoolean
|
|
25
|
+
isBoolean(o) {
|
|
26
26
|
return this.is(o, 'Boolean');
|
|
27
27
|
},
|
|
28
|
-
isString
|
|
28
|
+
isString(o) {
|
|
29
29
|
return this.is(o, 'String');
|
|
30
30
|
},
|
|
31
31
|
};
|
|
@@ -1,15 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.default = {
|
|
4
|
-
generate
|
|
5
|
-
|
|
6
|
-
for (var _i = 0, _a = Object.entries(data); _i < _a.length; _i++) {
|
|
7
|
-
var _b = _a[_i], key = _b[0], value = _b[1];
|
|
4
|
+
generate(data = {}, params) {
|
|
5
|
+
for (const [key, value] of Object.entries(data)) {
|
|
8
6
|
if (Array.isArray(value))
|
|
9
|
-
for (
|
|
10
|
-
var i = value_1[_c];
|
|
7
|
+
for (const i of value)
|
|
11
8
|
params.append(key, i);
|
|
12
|
-
}
|
|
13
9
|
else if (isValidValue(value))
|
|
14
10
|
params.append(key, value);
|
|
15
11
|
}
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.default = {
|
|
4
|
-
trimAll
|
|
4
|
+
trimAll(str) {
|
|
5
5
|
if ([void 0, null].includes(str))
|
|
6
6
|
return '';
|
|
7
|
-
return String(str).split('').map(
|
|
7
|
+
return String(str).split('').map(e => e.trim()).join('');
|
|
8
8
|
},
|
|
9
|
-
uuid
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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.
|
|
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": "
|
|
9
|
+
"test": "vitest"
|
|
10
10
|
},
|
|
11
11
|
"author": "qmw",
|
|
12
12
|
"license": "ISC",
|
|
13
13
|
"devDependencies": {
|
|
14
|
-
"
|
|
15
|
-
"
|
|
16
|
-
"
|
|
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
|
}
|