baja-lite 1.0.0
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/LICENSE +21 -0
- package/README.md +1 -0
- package/cjs/constant.d.ts +13 -0
- package/cjs/constant.js +19 -0
- package/cjs/error.d.ts +5 -0
- package/cjs/error.js +16 -0
- package/cjs/fn.d.ts +128 -0
- package/cjs/fn.js +169 -0
- package/cjs/index.d.ts +8 -0
- package/cjs/index.js +24 -0
- package/cjs/math.d.ts +69 -0
- package/cjs/math.js +435 -0
- package/cjs/now.d.ts +7 -0
- package/cjs/now.js +26 -0
- package/cjs/object.d.ts +77 -0
- package/cjs/object.js +212 -0
- package/cjs/set-ex.d.ts +171 -0
- package/cjs/set-ex.js +336 -0
- package/cjs/sql.d.ts +1216 -0
- package/cjs/sql.js +3380 -0
- package/cjs/string.d.ts +18 -0
- package/cjs/string.js +124 -0
- package/cjs/test-mysql.d.ts +1 -0
- package/cjs/test-mysql.js +108 -0
- package/cjs/test-sqlite.d.ts +1 -0
- package/cjs/test-sqlite.js +89 -0
- package/cjs/test.d.ts +1 -0
- package/cjs/test.js +4 -0
- package/es/constant.d.ts +13 -0
- package/es/constant.js +16 -0
- package/es/error.d.ts +5 -0
- package/es/error.js +13 -0
- package/es/fn.d.ts +128 -0
- package/es/fn.js +162 -0
- package/es/index.d.ts +8 -0
- package/es/index.js +8 -0
- package/es/math.d.ts +69 -0
- package/es/math.js +414 -0
- package/es/now.d.ts +7 -0
- package/es/now.js +16 -0
- package/es/object.d.ts +77 -0
- package/es/object.js +196 -0
- package/es/set-ex.d.ts +171 -0
- package/es/set-ex.js +332 -0
- package/es/sql.d.ts +1216 -0
- package/es/sql.js +3338 -0
- package/es/string.d.ts +18 -0
- package/es/string.js +109 -0
- package/es/test-mysql.d.ts +1 -0
- package/es/test-mysql.js +106 -0
- package/es/test-sqlite.d.ts +1 -0
- package/es/test-sqlite.js +87 -0
- package/es/test.d.ts +1 -0
- package/es/test.js +2 -0
- package/package.json +66 -0
package/cjs/string.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 通过uri获取key
|
|
3
|
+
* @param uri
|
|
4
|
+
*/
|
|
5
|
+
export declare const getPicKey: (uri: string) => string;
|
|
6
|
+
export declare const emptyString: (source: any, skipEmptyString?: boolean) => boolean;
|
|
7
|
+
export declare const eqString: (a: any, b: any) => boolean;
|
|
8
|
+
export declare const notEmptyString: (source: any, skipEmptyString?: boolean) => boolean;
|
|
9
|
+
export declare const safeString: (source?: string) => string;
|
|
10
|
+
export declare const trimObject: <T>(data: any) => T;
|
|
11
|
+
export declare const randomNumber: (len: number) => string;
|
|
12
|
+
export declare const randomString: (len: number) => string;
|
|
13
|
+
export declare const randomString2: (len: number) => string;
|
|
14
|
+
export declare const randomString3: (len: number) => string;
|
|
15
|
+
export declare const buildWxStr: (data: {
|
|
16
|
+
[key: string]: string;
|
|
17
|
+
}, maxLabelLength: number, ...titles: string[]) => string;
|
|
18
|
+
export declare const replaceChineseCode: (str: string) => string;
|
package/cjs/string.js
ADDED
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.replaceChineseCode = exports.buildWxStr = exports.randomString3 = exports.randomString2 = exports.randomString = exports.randomNumber = exports.trimObject = exports.safeString = exports.notEmptyString = exports.eqString = exports.emptyString = exports.getPicKey = void 0;
|
|
4
|
+
const lodash_1 = require("lodash");
|
|
5
|
+
/**
|
|
6
|
+
* 通过uri获取key
|
|
7
|
+
* @param uri
|
|
8
|
+
*/
|
|
9
|
+
const getPicKey = (uri) => {
|
|
10
|
+
const arr = /key=([0-9a-zA-Z.]+)/.exec(uri);
|
|
11
|
+
if (arr && arr.length === 2) {
|
|
12
|
+
return arr[1];
|
|
13
|
+
}
|
|
14
|
+
return uri;
|
|
15
|
+
};
|
|
16
|
+
exports.getPicKey = getPicKey;
|
|
17
|
+
const emptyString = (source, skipEmptyString = true) => {
|
|
18
|
+
return (source === null ||
|
|
19
|
+
source === undefined ||
|
|
20
|
+
(skipEmptyString === true && (source === '' || `${source}`.replace(/\s/g, '') === '')));
|
|
21
|
+
};
|
|
22
|
+
exports.emptyString = emptyString;
|
|
23
|
+
const eqString = (a, b) => {
|
|
24
|
+
return (0, lodash_1.lowerCase)(`${a}`) === (0, lodash_1.lowerCase)(`${b}`);
|
|
25
|
+
};
|
|
26
|
+
exports.eqString = eqString;
|
|
27
|
+
const notEmptyString = (source, skipEmptyString = true) => {
|
|
28
|
+
return (0, exports.emptyString)(source, skipEmptyString) === false;
|
|
29
|
+
};
|
|
30
|
+
exports.notEmptyString = notEmptyString;
|
|
31
|
+
const safeString = (source) => {
|
|
32
|
+
if (source) {
|
|
33
|
+
return `${source}`.replace(/'/g, '');
|
|
34
|
+
}
|
|
35
|
+
return '';
|
|
36
|
+
};
|
|
37
|
+
exports.safeString = safeString;
|
|
38
|
+
const trimObject = (data) => {
|
|
39
|
+
if (data) {
|
|
40
|
+
for (const k in data) {
|
|
41
|
+
if (typeof data[k] === 'string') {
|
|
42
|
+
data[k] = data[k].trim();
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return data;
|
|
47
|
+
};
|
|
48
|
+
exports.trimObject = trimObject;
|
|
49
|
+
const randomNumber = (len) => {
|
|
50
|
+
return `${parseInt(`${(Math.random() * 9 + 1) * Math.pow(10, (len - 1))}`, 10)}`;
|
|
51
|
+
};
|
|
52
|
+
exports.randomNumber = randomNumber;
|
|
53
|
+
const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
|
|
54
|
+
const charLen = chars.length;
|
|
55
|
+
const randomString = (len) => {
|
|
56
|
+
return Array.from(new Array(len)).map(() => chars.charAt(Math.floor(Math.random() * charLen))).join('');
|
|
57
|
+
};
|
|
58
|
+
exports.randomString = randomString;
|
|
59
|
+
const chars2 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
|
|
60
|
+
const charLen2 = chars2.length;
|
|
61
|
+
const randomString2 = (len) => {
|
|
62
|
+
return Array.from(new Array(len)).map(() => chars2.charAt(Math.floor(Math.random() * charLen2))).join('');
|
|
63
|
+
};
|
|
64
|
+
exports.randomString2 = randomString2;
|
|
65
|
+
const chars3 = 'abcdefghijklmnopqrstuvwxyz0123456789';
|
|
66
|
+
const charLen3 = chars3.length;
|
|
67
|
+
const randomString3 = (len) => {
|
|
68
|
+
return Array.from(new Array(len)).map(() => chars3.charAt(Math.floor(Math.random() * charLen3))).join('');
|
|
69
|
+
};
|
|
70
|
+
exports.randomString3 = randomString3;
|
|
71
|
+
const buildWxStr = (data, maxLabelLength, ...titles) => {
|
|
72
|
+
let str = titles.join('\r\n');
|
|
73
|
+
str += '\r\n\r\n';
|
|
74
|
+
const items = new Array();
|
|
75
|
+
// const maxLength = maxLabelLength * 2;
|
|
76
|
+
for (const [key, value] of Object.entries(data)) {
|
|
77
|
+
if ((0, exports.notEmptyString)(value)) {
|
|
78
|
+
const len = maxLabelLength - key.length;
|
|
79
|
+
items.push(`${key}:${''.padEnd(len * 3 + (len > 0 ? 1 : 0), ' ')}${value}`);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
str += items.join('\r\n');
|
|
83
|
+
return str;
|
|
84
|
+
};
|
|
85
|
+
exports.buildWxStr = buildWxStr;
|
|
86
|
+
const chinese = /[\u3002|\uff1f|\uff01|\uff0c|\u3001|\uff1b|\uff1a|\u201c|\u201d|\u2018|\u2019|\uff08|\uff09|\u300a|\u300b|\u3008|\u3009|\u3010|\u3011|\u300e|\u300f|\u300c|\u300d|\ufe43|\ufe44|\u3014|\u3015|\u2026|\u2014|\uff5e|\ufe4f|\uffe5]/g;
|
|
87
|
+
const table = {
|
|
88
|
+
'!': '!',
|
|
89
|
+
'¥': '$',
|
|
90
|
+
'…': '.',
|
|
91
|
+
'(': '(',
|
|
92
|
+
')': ')',
|
|
93
|
+
'《': '<',
|
|
94
|
+
'》': '>',
|
|
95
|
+
'?': '?',
|
|
96
|
+
':': ':',
|
|
97
|
+
'“': `'`,
|
|
98
|
+
'”': `'`,
|
|
99
|
+
'’': `'`,
|
|
100
|
+
'‘': `'`,
|
|
101
|
+
',': ',',
|
|
102
|
+
'。': '.',
|
|
103
|
+
'、': '/',
|
|
104
|
+
';': ';',
|
|
105
|
+
'〈': '<',
|
|
106
|
+
'〉': '>',
|
|
107
|
+
'【': '[',
|
|
108
|
+
'】': ']',
|
|
109
|
+
'『': '[',
|
|
110
|
+
'』': ']',
|
|
111
|
+
'「': '[',
|
|
112
|
+
'」': ']',
|
|
113
|
+
'﹃': '[',
|
|
114
|
+
'﹄': ']',
|
|
115
|
+
'〔': '(',
|
|
116
|
+
'〕': ')',
|
|
117
|
+
'—': '-',
|
|
118
|
+
'~': '~',
|
|
119
|
+
'﹏': '~'
|
|
120
|
+
};
|
|
121
|
+
const replaceChineseCode = (str) => {
|
|
122
|
+
return str.replace(chinese, (a) => table[a] || '');
|
|
123
|
+
};
|
|
124
|
+
exports.replaceChineseCode = replaceChineseCode;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
const sql_1 = require("./sql");
|
|
13
|
+
class AmaFuck2 {
|
|
14
|
+
}
|
|
15
|
+
__decorate([
|
|
16
|
+
(0, sql_1.Field)({ type: sql_1.SqlType.varchar, length1: 200 }),
|
|
17
|
+
__metadata("design:type", String)
|
|
18
|
+
], AmaFuck2.prototype, "site", void 0);
|
|
19
|
+
__decorate([
|
|
20
|
+
(0, sql_1.Field)({ type: sql_1.SqlType.varchar, length1: 200 }),
|
|
21
|
+
__metadata("design:type", String)
|
|
22
|
+
], AmaFuck2.prototype, "SellerSKU2", void 0);
|
|
23
|
+
__decorate([
|
|
24
|
+
(0, sql_1.Field)({ type: sql_1.SqlType.varchar, id: true, length1: 200 }),
|
|
25
|
+
__metadata("design:type", String)
|
|
26
|
+
], AmaFuck2.prototype, "SellerSKU", void 0);
|
|
27
|
+
let AmaService2 = class AmaService2 extends sql_1.SqlService {
|
|
28
|
+
};
|
|
29
|
+
AmaService2 = __decorate([
|
|
30
|
+
(0, sql_1.DB)({
|
|
31
|
+
tableName: 'ama_fuck2', clz: AmaFuck2, dbType: sql_1.DBType.Mysql
|
|
32
|
+
})
|
|
33
|
+
], AmaService2);
|
|
34
|
+
async function go2() {
|
|
35
|
+
await (0, sql_1.LetsGo)({
|
|
36
|
+
Mysql: {
|
|
37
|
+
host: '39.98.58.252',
|
|
38
|
+
port: 3308,
|
|
39
|
+
user: 'root',
|
|
40
|
+
password: 'Eme!2#456$&*',
|
|
41
|
+
// 数据库名
|
|
42
|
+
database: 'dmce',
|
|
43
|
+
debug: false
|
|
44
|
+
},
|
|
45
|
+
log: 'info'
|
|
46
|
+
});
|
|
47
|
+
const service = new AmaService2();
|
|
48
|
+
const ret = await service.transaction({
|
|
49
|
+
fn: async (conn) => {
|
|
50
|
+
const list = new Array({
|
|
51
|
+
SellerSKU: 'SellerSKU1',
|
|
52
|
+
site: 'site1'
|
|
53
|
+
}, {
|
|
54
|
+
SellerSKU: 'SellerSKU2',
|
|
55
|
+
SellerSKU2: 'SellerSKU22',
|
|
56
|
+
}, {
|
|
57
|
+
SellerSKU2: 'SellerSKU23',
|
|
58
|
+
SellerSKU: 'SellerSKU3',
|
|
59
|
+
site: 'site3'
|
|
60
|
+
}, {
|
|
61
|
+
SellerSKU2: 'SellerSKU24',
|
|
62
|
+
SellerSKU: 'SellerSKU4',
|
|
63
|
+
site: 'site4'
|
|
64
|
+
}, {
|
|
65
|
+
SellerSKU2: '',
|
|
66
|
+
SellerSKU: 'SellerSKU5',
|
|
67
|
+
site: undefined
|
|
68
|
+
});
|
|
69
|
+
const rt = await service.insert({
|
|
70
|
+
data: list,
|
|
71
|
+
conn, skipEmptyString: false,
|
|
72
|
+
mode: sql_1.SqlInsertMode.InsertWithTempTable
|
|
73
|
+
});
|
|
74
|
+
console.log(11, rt);
|
|
75
|
+
const rt2 = await service.update({
|
|
76
|
+
data: {
|
|
77
|
+
SellerSKU: 'SellerSKU1',
|
|
78
|
+
SellerSKU2: 'SellerSKU21',
|
|
79
|
+
site: 'site1'
|
|
80
|
+
},
|
|
81
|
+
conn, skipEmptyString: false
|
|
82
|
+
});
|
|
83
|
+
console.log(22, rt2);
|
|
84
|
+
const rt3 = await service.delete({
|
|
85
|
+
where: [
|
|
86
|
+
{ SellerSKU2: 'SellerSKU23', SellerSKU: 'SellerSKU3' }
|
|
87
|
+
],
|
|
88
|
+
mode: sql_1.SqlDelMode.TempTable,
|
|
89
|
+
conn
|
|
90
|
+
});
|
|
91
|
+
console.log(33, rt3);
|
|
92
|
+
const rt4 = await service.template({
|
|
93
|
+
where: { SellerSKU2: 'SellerSKU22', SellerSKU: 'SellerSKU2' },
|
|
94
|
+
resultMode: sql_1.SqlTemplateMode.Count
|
|
95
|
+
});
|
|
96
|
+
console.log(44, rt4);
|
|
97
|
+
const rt5 = await service.select({
|
|
98
|
+
sql: `SELECT SellerSKU FROM ama_fuck2 WHERE SellerSKU LIKE CONCAT(:sku, '%');SELECT SellerSKU FROM ama_fuck2 WHERE SellerSKU LIKE CONCAT(:sku, '%');SELECT SellerSKU FROM ama_fuck2 WHERE SellerSKU LIKE CONCAT(:sku, '%')`,
|
|
99
|
+
params: { sku: 'SellerSKU4' },
|
|
100
|
+
resultMode: sql_1.SqlQueryMode.Many_Row_One_Column
|
|
101
|
+
});
|
|
102
|
+
console.log(55, rt5);
|
|
103
|
+
return 1;
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
return ret;
|
|
107
|
+
}
|
|
108
|
+
go2();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
const sql_1 = require("./sql");
|
|
13
|
+
class AmaFuck {
|
|
14
|
+
}
|
|
15
|
+
__decorate([
|
|
16
|
+
(0, sql_1.Field)({ type: sql_1.SqlType.varchar }),
|
|
17
|
+
__metadata("design:type", String)
|
|
18
|
+
], AmaFuck.prototype, "site", void 0);
|
|
19
|
+
__decorate([
|
|
20
|
+
(0, sql_1.Field)({ type: sql_1.SqlType.varchar }),
|
|
21
|
+
__metadata("design:type", String)
|
|
22
|
+
], AmaFuck.prototype, "SellerSKU2", void 0);
|
|
23
|
+
__decorate([
|
|
24
|
+
(0, sql_1.Field)({ type: sql_1.SqlType.varchar, id: true }),
|
|
25
|
+
__metadata("design:type", String)
|
|
26
|
+
], AmaFuck.prototype, "SellerSKU", void 0);
|
|
27
|
+
let AmaService = class AmaService extends sql_1.SqlService {
|
|
28
|
+
};
|
|
29
|
+
AmaService = __decorate([
|
|
30
|
+
(0, sql_1.DB)({
|
|
31
|
+
tableName: 'ama_fuck2', clz: AmaFuck, dbType: sql_1.DBType.Sqlite, sqliteVersion: '0.0.3'
|
|
32
|
+
})
|
|
33
|
+
], AmaService);
|
|
34
|
+
async function go() {
|
|
35
|
+
await (0, sql_1.LetsGo)({
|
|
36
|
+
Sqlite: 'd:1.db',
|
|
37
|
+
log: 'info'
|
|
38
|
+
});
|
|
39
|
+
const service = new AmaService();
|
|
40
|
+
const ret = service.transaction({
|
|
41
|
+
sync: sql_1.SqlSyncMode.Sync,
|
|
42
|
+
fn: conn => {
|
|
43
|
+
const list = new Array({
|
|
44
|
+
SellerSKU: '1',
|
|
45
|
+
site: '111'
|
|
46
|
+
}, {
|
|
47
|
+
SellerSKU: '2',
|
|
48
|
+
SellerSKU2: '22',
|
|
49
|
+
}, {
|
|
50
|
+
SellerSKU2: '33',
|
|
51
|
+
SellerSKU: '3',
|
|
52
|
+
site: '333'
|
|
53
|
+
}, {
|
|
54
|
+
SellerSKU2: '44',
|
|
55
|
+
SellerSKU: '4',
|
|
56
|
+
site: '444'
|
|
57
|
+
}, {
|
|
58
|
+
SellerSKU2: '',
|
|
59
|
+
SellerSKU: '66',
|
|
60
|
+
site: undefined
|
|
61
|
+
});
|
|
62
|
+
const rt = service.insert({
|
|
63
|
+
sync: sql_1.SqlSyncMode.Sync,
|
|
64
|
+
data: list,
|
|
65
|
+
conn, skipEmptyString: false, mode: sql_1.SqlInsertMode.InsertWithTempTable
|
|
66
|
+
});
|
|
67
|
+
console.log(rt);
|
|
68
|
+
const rt2 = service.update({
|
|
69
|
+
sync: sql_1.SqlSyncMode.Sync,
|
|
70
|
+
data: list,
|
|
71
|
+
conn, skipEmptyString: false
|
|
72
|
+
});
|
|
73
|
+
console.log(rt2);
|
|
74
|
+
const rt3 = service.delete({
|
|
75
|
+
sync: sql_1.SqlSyncMode.Sync,
|
|
76
|
+
where: [
|
|
77
|
+
{ SellerSKU2: '11', SellerSKU: '1' },
|
|
78
|
+
{ SellerSKU2: '22', SellerSKU: '2' },
|
|
79
|
+
{ SellerSKU2: '33', SellerSKU: '3' }
|
|
80
|
+
],
|
|
81
|
+
mode: sql_1.SqlDelMode.TempTable
|
|
82
|
+
});
|
|
83
|
+
console.log(rt3);
|
|
84
|
+
return 1;
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
return ret;
|
|
88
|
+
}
|
|
89
|
+
go();
|
package/cjs/test.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/cjs/test.js
ADDED
package/es/constant.d.ts
ADDED
package/es/constant.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/** 执行方式 */
|
|
2
|
+
export var SqlSyncMode;
|
|
3
|
+
(function (SqlSyncMode) {
|
|
4
|
+
/** 同步执行 */
|
|
5
|
+
SqlSyncMode[SqlSyncMode["Sync"] = 0] = "Sync";
|
|
6
|
+
/** 异步执行 */
|
|
7
|
+
SqlSyncMode[SqlSyncMode["Async"] = 1] = "Async";
|
|
8
|
+
})(SqlSyncMode || (SqlSyncMode = {}));
|
|
9
|
+
;
|
|
10
|
+
export var ExcuteSplitMode;
|
|
11
|
+
(function (ExcuteSplitMode) {
|
|
12
|
+
ExcuteSplitMode[ExcuteSplitMode["SyncTrust"] = 0] = "SyncTrust";
|
|
13
|
+
ExcuteSplitMode[ExcuteSplitMode["SyncNoTrust"] = 1] = "SyncNoTrust";
|
|
14
|
+
ExcuteSplitMode[ExcuteSplitMode["AsyncTrust"] = 2] = "AsyncTrust";
|
|
15
|
+
ExcuteSplitMode[ExcuteSplitMode["AsyncNoTrust"] = 3] = "AsyncNoTrust";
|
|
16
|
+
})(ExcuteSplitMode || (ExcuteSplitMode = {}));
|
package/es/error.d.ts
ADDED
package/es/error.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export const Throw = {
|
|
2
|
+
if(test, message) {
|
|
3
|
+
if (test === true)
|
|
4
|
+
this.now(message);
|
|
5
|
+
},
|
|
6
|
+
ifNot(test, message) {
|
|
7
|
+
if (test !== true)
|
|
8
|
+
this.now(message);
|
|
9
|
+
},
|
|
10
|
+
now(message) {
|
|
11
|
+
throw typeof message === 'string' ? new Error(message) : message;
|
|
12
|
+
},
|
|
13
|
+
};
|
package/es/fn.d.ts
ADDED
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 回调函数promise化
|
|
3
|
+
* 调用示例
|
|
4
|
+
* soap.excute(arg1, arg2, function(error, data){});
|
|
5
|
+
* 可使用为:
|
|
6
|
+
* const soap_excute = promise({
|
|
7
|
+
* fn: soap.excute,
|
|
8
|
+
* target: soap
|
|
9
|
+
* });
|
|
10
|
+
* const data = await soap_excute(arg1, arg2);
|
|
11
|
+
* @param this
|
|
12
|
+
* @param param1
|
|
13
|
+
*/
|
|
14
|
+
export declare const promise: <T>(this: any, { fn, target, last }: {
|
|
15
|
+
fn: (...args: any[]) => any;
|
|
16
|
+
target?: any;
|
|
17
|
+
last?: boolean;
|
|
18
|
+
}) => (...args: any[]) => Promise<T>;
|
|
19
|
+
export declare const sleep: (time?: number) => Promise<unknown>;
|
|
20
|
+
/**
|
|
21
|
+
* 执行器
|
|
22
|
+
* @param fn
|
|
23
|
+
* @param {
|
|
24
|
+
ifFinish?: (result?: T) => boolean; // 是否结束,默认是建议判断 !!result
|
|
25
|
+
maxTryTimes?: number; //最多尝试几次,默认是20
|
|
26
|
+
onFail?: () => Promise<boolean | undefined> | boolean | undefined; // 失败时的回调,返回false表示停止执行
|
|
27
|
+
name?: string; // 执行器名称,用于打印日志
|
|
28
|
+
exitIfFail?: boolean; // 失败时是否退出,默认是false. 这里设置true后,onFail返回true,也会停止执行
|
|
29
|
+
defVal?: T; // 失败时的默认值
|
|
30
|
+
sleepAppend?: number; // 等待延迟MS,默认是1000内随机+200
|
|
31
|
+
* }
|
|
32
|
+
* @returns
|
|
33
|
+
*/
|
|
34
|
+
export declare function dieTrying<T = any>(fn: (...args: any[]) => Promise<T | undefined> | T | undefined, { ifFinish, maxTryTimes, onFail, name, exitIfFail, defVal, sleepAppend }?: {
|
|
35
|
+
ifFinish?: (result?: T) => boolean;
|
|
36
|
+
maxTryTimes?: number;
|
|
37
|
+
onFail?: () => Promise<boolean | undefined> | boolean | undefined;
|
|
38
|
+
name?: string;
|
|
39
|
+
exitIfFail?: boolean;
|
|
40
|
+
defVal?: T;
|
|
41
|
+
sleepAppend?: number;
|
|
42
|
+
}): Promise<T | undefined>;
|
|
43
|
+
export declare enum ExcuteSplitMode {
|
|
44
|
+
SyncTrust = 0,
|
|
45
|
+
SyncNoTrust = 1,
|
|
46
|
+
AsyncTrust = 2,
|
|
47
|
+
AsyncNoTrust = 3
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* 数组分割执行
|
|
51
|
+
* @param datas 数组
|
|
52
|
+
* @param fn 执行的函数, 参数1:分割数组;参数2:第几个分割数组;参数3:分割数组的数量;参数4:从第几个下标(相对于总数组)元素开始;参数5:到第几个下标(相对于总数组)元素结束
|
|
53
|
+
* @param config 配置(三选一):everyLength=每组个数(最后一组可能不足次数), groupCount=拆分几组, extendParams=依附拆分数组;
|
|
54
|
+
* @param 额外选项 settled=是否并行?
|
|
55
|
+
* T: datas类型
|
|
56
|
+
* E: extendParams类型
|
|
57
|
+
* R: 返回值类型
|
|
58
|
+
*/
|
|
59
|
+
/**
|
|
60
|
+
* 数组分割执行
|
|
61
|
+
*
|
|
62
|
+
* # 参数说明
|
|
63
|
+
* @param sync 同步异步开关
|
|
64
|
+
* @param datas 数组
|
|
65
|
+
* @param fn 执行的函数
|
|
66
|
+
```
|
|
67
|
+
** `args`: 分割后的小数组
|
|
68
|
+
** `index`: 第几个小数组
|
|
69
|
+
** `length`: 总共多少个小数组
|
|
70
|
+
** `extendParam`?: `参见下面Option中的extendParams`
|
|
71
|
+
** `startIndex`?: 本次小数组的第一个元素是从总数组的第几个元素
|
|
72
|
+
** `endIndex`?: 本次小数组的最后一个元素是从总数组的第几个元素
|
|
73
|
+
fn: (args: T[], index: number, length: number, extendParam?: E, startIndex?: number, endIndex?: number):R => {
|
|
74
|
+
|
|
75
|
+
}
|
|
76
|
+
```
|
|
77
|
+
* @param option 选项
|
|
78
|
+
|
|
79
|
+
## 分割数组方式:2种,选择一种即可
|
|
80
|
+
1. everyLength=每组个数(最后一组可能不足次数)
|
|
81
|
+
2. groupCount=拆分几组
|
|
82
|
+
## settled 异步执行是否并行执行? 默认false
|
|
83
|
+
## `extendParams`:扩展参数
|
|
84
|
+
** 数组
|
|
85
|
+
** 结合分组方式:groupCount使用。例如:
|
|
86
|
+
```
|
|
87
|
+
`groupCount`=5,那么可以传入5个`extendParams`,在执行分组时,会为每个数组传入对应下标的`extendParam`
|
|
88
|
+
```
|
|
89
|
+
## `trust` 是否信任方法体,默认false
|
|
90
|
+
* true时,执行时捕获不异常, 返回值变为 R[]
|
|
91
|
+
* false时,执行时捕获异常,并返回 { result: R[]; error: string[]; };
|
|
92
|
+
# 泛型说明:全部可选
|
|
93
|
+
1. T = 数组类型
|
|
94
|
+
2. R = 返回结果类型
|
|
95
|
+
3. E = 扩展参数类型
|
|
96
|
+
|
|
97
|
+
* @returns
|
|
98
|
+
*/
|
|
99
|
+
export declare function excuteSplit<T = any, R = any, E = any>(sync: ExcuteSplitMode.SyncTrust, datas: T[], fn: (args: T[], index: number, length: number, extendParam?: E, startIndex?: number, endIndex?: number) => R, option: {
|
|
100
|
+
everyLength?: number;
|
|
101
|
+
groupCount?: number;
|
|
102
|
+
settled?: boolean;
|
|
103
|
+
extendParams?: E[];
|
|
104
|
+
}): R[];
|
|
105
|
+
export declare function excuteSplit<T = any, R = any, E = any>(sync: ExcuteSplitMode.SyncNoTrust, datas: T[], fn: (args: T[], index: number, length: number, extendParam?: E, startIndex?: number, endIndex?: number) => R, option: {
|
|
106
|
+
everyLength?: number;
|
|
107
|
+
groupCount?: number;
|
|
108
|
+
settled?: boolean;
|
|
109
|
+
extendParams?: E[];
|
|
110
|
+
}): {
|
|
111
|
+
result: R[];
|
|
112
|
+
error: string[];
|
|
113
|
+
};
|
|
114
|
+
export declare function excuteSplit<T = any, R = any, E = any>(sync: ExcuteSplitMode.AsyncTrust, datas: T[], fn: (args: T[], index: number, length: number, extendParam?: E, startIndex?: number, endIndex?: number) => Promise<R>, option: {
|
|
115
|
+
everyLength?: number;
|
|
116
|
+
groupCount?: number;
|
|
117
|
+
settled?: boolean;
|
|
118
|
+
extendParams?: E[];
|
|
119
|
+
}): Promise<R[]>;
|
|
120
|
+
export declare function excuteSplit<T = any, R = any, E = any>(sync: ExcuteSplitMode.AsyncNoTrust, datas: T[], fn: (args: T[], index: number, length: number, extendParam?: E, startIndex?: number, endIndex?: number) => Promise<R>, option: {
|
|
121
|
+
everyLength?: number;
|
|
122
|
+
groupCount?: number;
|
|
123
|
+
settled?: boolean;
|
|
124
|
+
extendParams?: E[];
|
|
125
|
+
}): Promise<{
|
|
126
|
+
result: R[];
|
|
127
|
+
error: string[];
|
|
128
|
+
}>;
|