ts-glitter 20.8.1 → 20.8.3
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/lowcode/Entry.js +1 -1
- package/lowcode/Entry.ts +1 -1
- package/package.json +1 -1
- package/src/modules/caught-error.js +1 -1
- package/src/modules/caught-error.js.map +1 -1
- package/src/modules/caught-error.ts +2 -2
- package/src/modules/database.js +9 -17
- package/src/modules/database.js.map +1 -1
- package/src/modules/database.ts +15 -20
package/lowcode/Entry.js
CHANGED
|
@@ -144,7 +144,7 @@ export class Entry {
|
|
|
144
144
|
}
|
|
145
145
|
window.renderClock = (_b = window.renderClock) !== null && _b !== void 0 ? _b : createClock();
|
|
146
146
|
console.log(`Entry-time:`, window.renderClock.stop());
|
|
147
|
-
glitter.share.editerVersion = 'V_20.8.
|
|
147
|
+
glitter.share.editerVersion = 'V_20.8.3';
|
|
148
148
|
glitter.share.start = new Date();
|
|
149
149
|
const vm = { appConfig: [] };
|
|
150
150
|
window.saasConfig = {
|
package/lowcode/Entry.ts
CHANGED
|
@@ -146,7 +146,7 @@ export class Entry {
|
|
|
146
146
|
}
|
|
147
147
|
(window as any).renderClock = (window as any).renderClock ?? createClock();
|
|
148
148
|
console.log(`Entry-time:`, (window as any).renderClock.stop());
|
|
149
|
-
glitter.share.editerVersion = 'V_20.8.
|
|
149
|
+
glitter.share.editerVersion = 'V_20.8.3';
|
|
150
150
|
glitter.share.start = new Date();
|
|
151
151
|
const vm = { appConfig: [] };
|
|
152
152
|
(window as any).saasConfig = {
|
package/package.json
CHANGED
|
@@ -12,7 +12,7 @@ class CaughtError {
|
|
|
12
12
|
if (process_1.default.env.is_local !== 'true') {
|
|
13
13
|
console.error('Uncaught Exception:', err);
|
|
14
14
|
if (err.message.includes('Too many connections')) {
|
|
15
|
-
|
|
15
|
+
process_1.default.exit(1);
|
|
16
16
|
}
|
|
17
17
|
else {
|
|
18
18
|
await database_1.default.query(`insert into \`${process_1.default.env.GLITTER_DB}\`.error_log (message, stack)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"caught-error.js","sourceRoot":"","sources":["caught-error.ts"],"names":[],"mappings":";;;;;;AAAA,sDAA8B;AAC9B,mEAAqC;AAErC,MAAa,WAAW;IACf,MAAM,CAAC,OAAO;QAEnB,iBAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,KAAK,EAAC,GAAG,EAAC,EAAE;YAE1C,IAAG,iBAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,EAAC,CAAC;gBAClC,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;gBAE1C,IAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC,EAAC,CAAC;oBAC/C,
|
|
1
|
+
{"version":3,"file":"caught-error.js","sourceRoot":"","sources":["caught-error.ts"],"names":[],"mappings":";;;;;;AAAA,sDAA8B;AAC9B,mEAAqC;AAErC,MAAa,WAAW;IACf,MAAM,CAAC,OAAO;QAEnB,iBAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,KAAK,EAAC,GAAG,EAAC,EAAE;YAE1C,IAAG,iBAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,EAAC,CAAC;gBAClC,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;gBAE1C,IAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC,EAAC,CAAC;oBAC/C,iBAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;qBAAI,CAAC;oBACJ,MAAM,kBAAE,CAAC,KAAK,CACZ,iBAAiB,iBAAO,CAAC,GAAG,CAAC,UAAU;sCACb,EAC1B,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,CACzB,CAAC;oBACF,iBAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;YACH,CAAC;iBAAI,CAAC;gBACJ,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;gBAC1C,iBAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,MAAM,CAAC,OAAO,CAAC,GAAW,EAAE,OAAe,EAAE,KAAa;QAC/D,kBAAE,CAAC,KAAK,CACN,iBAAiB,iBAAO,CAAC,GAAG,CAAC,UAAU;+BACd,EACzB,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,CACtB,CAAC;IACJ,CAAC;CACF;AAhCD,kCAgCC"}
|
|
@@ -8,9 +8,9 @@ export class CaughtError {
|
|
|
8
8
|
//非本地開發再插入錯誤
|
|
9
9
|
if(process.env.is_local !== 'true'){
|
|
10
10
|
console.error('Uncaught Exception:', err);
|
|
11
|
-
|
|
11
|
+
//如果連線太多,重啟應用
|
|
12
12
|
if(err.message.includes('Too many connections')){
|
|
13
|
-
|
|
13
|
+
process.exit(1); // 終止應用程式
|
|
14
14
|
}else{
|
|
15
15
|
await db.query(
|
|
16
16
|
`insert into \`${process.env.GLITTER_DB}\`.error_log (message, stack)
|
package/src/modules/database.js
CHANGED
|
@@ -8,22 +8,11 @@ const promise_1 = __importDefault(require("mysql2/promise"));
|
|
|
8
8
|
const config_1 = __importDefault(require("../config"));
|
|
9
9
|
const logger_1 = __importDefault(require("./logger"));
|
|
10
10
|
const exception_1 = __importDefault(require("./exception"));
|
|
11
|
+
const process_1 = __importDefault(require("process"));
|
|
11
12
|
const TAG = '[Database]';
|
|
12
13
|
let pool;
|
|
13
14
|
const createPool = async () => {
|
|
14
15
|
const logger = new logger_1.default();
|
|
15
|
-
if (pool) {
|
|
16
|
-
try {
|
|
17
|
-
await pool.end();
|
|
18
|
-
}
|
|
19
|
-
catch (e) {
|
|
20
|
-
}
|
|
21
|
-
await new Promise((resolve, reject) => {
|
|
22
|
-
setTimeout(() => {
|
|
23
|
-
resolve(true);
|
|
24
|
-
}, 500);
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
16
|
pool = promise_1.default.createPool({
|
|
28
17
|
connectionLimit: config_1.default.DB_CONN_LIMIT,
|
|
29
18
|
queueLimit: config_1.default.DB_QUEUE_LIMIT,
|
|
@@ -32,8 +21,6 @@ const createPool = async () => {
|
|
|
32
21
|
user: config_1.default.DB_USER,
|
|
33
22
|
password: config_1.default.DB_PWD,
|
|
34
23
|
supportBigNumbers: true,
|
|
35
|
-
enableKeepAlive: true,
|
|
36
|
-
keepAliveInitialDelay: 10000,
|
|
37
24
|
});
|
|
38
25
|
try {
|
|
39
26
|
return pool;
|
|
@@ -72,12 +59,15 @@ const execute = async (sql, params) => {
|
|
|
72
59
|
}
|
|
73
60
|
try {
|
|
74
61
|
const connection = await pool.getConnection();
|
|
75
|
-
const [results] = await
|
|
62
|
+
const [results] = await connection.execute(sql, params);
|
|
76
63
|
connection.release();
|
|
77
64
|
return results;
|
|
78
65
|
}
|
|
79
66
|
catch (err) {
|
|
80
67
|
logger.error(TAG, 'Failed to exect statement ' + sql + ' because ' + err);
|
|
68
|
+
if (`${err}`.includes('Too many connections')) {
|
|
69
|
+
process_1.default.exit(1);
|
|
70
|
+
}
|
|
81
71
|
throw exception_1.default.ServerError('INTERNAL_SERVER_ERROR', 'Failed to exect statement ' + sql + ' because ' + err);
|
|
82
72
|
}
|
|
83
73
|
};
|
|
@@ -90,13 +80,15 @@ const query = async (sql, params) => {
|
|
|
90
80
|
const TAG = '[Database][Query]';
|
|
91
81
|
try {
|
|
92
82
|
const connection = await pool.getConnection();
|
|
93
|
-
await
|
|
94
|
-
const [results] = await pool.query(sql, params);
|
|
83
|
+
const [results] = await connection.query(sql, params);
|
|
95
84
|
connection.release();
|
|
96
85
|
return results;
|
|
97
86
|
}
|
|
98
87
|
catch (err) {
|
|
99
88
|
logger.error(TAG, 'Failed to query statement ' + sql + ' because ' + err);
|
|
89
|
+
if (`${err}`.includes('Too many connections')) {
|
|
90
|
+
process_1.default.exit(1);
|
|
91
|
+
}
|
|
100
92
|
throw exception_1.default.ServerError('INTERNAL_SERVER_ERROR', 'Failed to query statement ' + sql + ' because ' + err);
|
|
101
93
|
}
|
|
102
94
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.js","sourceRoot":"","sources":["database.ts"],"names":[],"mappings":";;;;;;AAAA,6DAAmC;AACnC,uDAA+B;AAC/B,sDAA8B;AAC9B,4DAAoC;
|
|
1
|
+
{"version":3,"file":"database.js","sourceRoot":"","sources":["database.ts"],"names":[],"mappings":"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"}
|
package/src/modules/database.ts
CHANGED
|
@@ -2,25 +2,13 @@ import mysql from 'mysql2/promise';
|
|
|
2
2
|
import config from '../config';
|
|
3
3
|
import Logger from './logger';
|
|
4
4
|
import exception from './exception';
|
|
5
|
+
import process from 'process';
|
|
5
6
|
|
|
6
7
|
const TAG = '[Database]';
|
|
7
8
|
let pool: mysql.Pool;
|
|
8
9
|
|
|
9
10
|
const createPool = async () => {
|
|
10
11
|
const logger = new Logger();
|
|
11
|
-
if(pool){
|
|
12
|
-
try {
|
|
13
|
-
// 销毁连接池中的所有连接
|
|
14
|
-
await pool.end()
|
|
15
|
-
}catch (e) {
|
|
16
|
-
|
|
17
|
-
}
|
|
18
|
-
await new Promise((resolve, reject)=>{
|
|
19
|
-
setTimeout(()=>{
|
|
20
|
-
resolve(true)
|
|
21
|
-
},500)
|
|
22
|
-
})
|
|
23
|
-
}
|
|
24
12
|
pool = mysql.createPool({
|
|
25
13
|
connectionLimit: config.DB_CONN_LIMIT,
|
|
26
14
|
queueLimit: config.DB_QUEUE_LIMIT,
|
|
@@ -29,10 +17,10 @@ const createPool = async () => {
|
|
|
29
17
|
user: config.DB_USER,
|
|
30
18
|
password: config.DB_PWD,
|
|
31
19
|
supportBigNumbers: true,
|
|
32
|
-
// 啟用連線保持活躍
|
|
33
|
-
enableKeepAlive: true,
|
|
34
|
-
// 每 10 秒發送一次保持活躍訊號
|
|
35
|
-
keepAliveInitialDelay: 10000,
|
|
20
|
+
// // 啟用連線保持活躍
|
|
21
|
+
// enableKeepAlive: true,
|
|
22
|
+
// // 每 10 秒發送一次保持活躍訊號
|
|
23
|
+
// keepAliveInitialDelay: 10000,
|
|
36
24
|
});
|
|
37
25
|
try {
|
|
38
26
|
return pool;
|
|
@@ -71,11 +59,15 @@ const execute = async (sql: string, params: any[]): Promise<any> => {
|
|
|
71
59
|
}
|
|
72
60
|
try {
|
|
73
61
|
const connection = await pool.getConnection();
|
|
74
|
-
const [results] = await
|
|
62
|
+
const [results] = await connection.execute(sql, params);
|
|
75
63
|
connection.release();
|
|
76
64
|
return results;
|
|
77
65
|
} catch (err) {
|
|
78
66
|
logger.error(TAG, 'Failed to exect statement ' + sql + ' because ' + err);
|
|
67
|
+
//連線過多重啟應用
|
|
68
|
+
if(`${err}`.includes('Too many connections')){
|
|
69
|
+
process.exit(1)
|
|
70
|
+
}
|
|
79
71
|
throw exception.ServerError('INTERNAL_SERVER_ERROR', 'Failed to exect statement ' + sql + ' because ' + err);
|
|
80
72
|
}
|
|
81
73
|
};
|
|
@@ -88,12 +80,15 @@ const query = async (sql: string, params: unknown[]): Promise<any> => {
|
|
|
88
80
|
const TAG = '[Database][Query]';
|
|
89
81
|
try {
|
|
90
82
|
const connection = await pool.getConnection();
|
|
91
|
-
await
|
|
92
|
-
const [results] = await pool.query(sql, params);
|
|
83
|
+
const [results] = await connection.query(sql, params);
|
|
93
84
|
connection.release();
|
|
94
85
|
return results;
|
|
95
86
|
} catch (err) {
|
|
96
87
|
logger.error(TAG, 'Failed to query statement ' + sql + ' because ' + err);
|
|
88
|
+
//連線過多重啟應用
|
|
89
|
+
if(`${err}`.includes('Too many connections')){
|
|
90
|
+
process.exit(1)
|
|
91
|
+
}
|
|
97
92
|
throw exception.ServerError('INTERNAL_SERVER_ERROR', 'Failed to query statement ' + sql + ' because ' + err);
|
|
98
93
|
}
|
|
99
94
|
};
|