@lakutata/core 1.0.36 → 1.0.39
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/build/ApplicationManagement.js +6 -1
- package/build/ApplicationManagement.js.map +1 -1
- package/build/lib/multipleRunner/lib/bridges/ProcessBridge.js +8 -4
- package/build/lib/multipleRunner/lib/bridges/ProcessBridge.js.map +1 -1
- package/build/lib/multipleRunner/lib/bridges/ThreadBridge.js +8 -4
- package/build/lib/multipleRunner/lib/bridges/ThreadBridge.js.map +1 -1
- package/build/lib/multipleRunner/lib/prototypes/MultipleRunnerBaseClass.js +7 -3
- package/build/lib/multipleRunner/lib/prototypes/MultipleRunnerBaseClass.js.map +1 -1
- package/package.json +11 -12
- package/src/ApplicationManagement.ts +6 -1
- package/src/lib/multipleRunner/lib/bridges/ProcessBridge.ts +15 -12
- package/src/lib/multipleRunner/lib/bridges/ThreadBridge.ts +12 -9
- package/src/lib/multipleRunner/lib/prototypes/MultipleRunnerBaseClass.ts +7 -3
|
@@ -24,7 +24,12 @@ async function createApp(config) {
|
|
|
24
24
|
return coreContainer.getModule(Application_1.Application);
|
|
25
25
|
}
|
|
26
26
|
catch (e) {
|
|
27
|
-
|
|
27
|
+
const fatalException = new FatalException_1.FatalException(e.message);
|
|
28
|
+
const createAppErrorStack = e.stack;
|
|
29
|
+
if (createAppErrorStack) {
|
|
30
|
+
fatalException.stack = createAppErrorStack;
|
|
31
|
+
}
|
|
32
|
+
throw fatalException;
|
|
28
33
|
}
|
|
29
34
|
}
|
|
30
35
|
exports.createApp = createApp;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApplicationManagement.js","sourceRoot":"","sources":["../src/ApplicationManagement.ts"],"names":[],"mappings":";;;;;;AAAA,sEAA4C;AAE5C,OAAO,CAAC,QAAQ,CAAC,CAAC,iBAAiB,GAAG,IAAI,CAAA;AAE1C,+CAAyC;AACzC,gEAA0D;AAC1D,gDAA0C;AAC1C,2DAA0D;AAE1D,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,gCAAiB,EAAE,OAAO,CAAC;IAAE,OAAO,CAAC,cAAc,CAAC,gCAAiB,EAAE,IAAI,qBAAS,EAAE,EAAE,OAAO,CAAC,CAAA;AAOlH,KAAK,UAAU,SAAS,CAAC,MAA0B;IACzD,IAAI;QACH,MAAM,aAAa,GAAc,OAAO,CAAC,WAAW,CAAC,gCAAiB,EAAE,OAAO,CAAC,CAAA;QAChF,aAAa,CAAC,UAAU,CAAC,yBAAW,EAAE,MAAM,CAAC,CAAA;QAC7C,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC,EAAE,CAAA;QACzB,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,EAAE,CAAA;QAC7B,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAA;QACjC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,yBAAc,CAAC,EAAE,CAAC,KAAK,EAAE,CAAA;QAC9E,MAAM,aAAa,CAAC,UAAU,EAAE,CAAA;QAChC,OAAO,aAAa,CAAC,SAAS,CAAC,yBAAW,CAAC,CAAA;KAC3C;IAAC,OAAO,CAAC,EAAE;QACX,
|
|
1
|
+
{"version":3,"file":"ApplicationManagement.js","sourceRoot":"","sources":["../src/ApplicationManagement.ts"],"names":[],"mappings":";;;;;;AAAA,sEAA4C;AAE5C,OAAO,CAAC,QAAQ,CAAC,CAAC,iBAAiB,GAAG,IAAI,CAAA;AAE1C,+CAAyC;AACzC,gEAA0D;AAC1D,gDAA0C;AAC1C,2DAA0D;AAE1D,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,gCAAiB,EAAE,OAAO,CAAC;IAAE,OAAO,CAAC,cAAc,CAAC,gCAAiB,EAAE,IAAI,qBAAS,EAAE,EAAE,OAAO,CAAC,CAAA;AAOlH,KAAK,UAAU,SAAS,CAAC,MAA0B;IACzD,IAAI;QACH,MAAM,aAAa,GAAc,OAAO,CAAC,WAAW,CAAC,gCAAiB,EAAE,OAAO,CAAC,CAAA;QAChF,aAAa,CAAC,UAAU,CAAC,yBAAW,EAAE,MAAM,CAAC,CAAA;QAC7C,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC,EAAE,CAAA;QACzB,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,EAAE,CAAA;QAC7B,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAA;QACjC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,yBAAc,CAAC,EAAE,CAAC,KAAK,EAAE,CAAA;QAC9E,MAAM,aAAa,CAAC,UAAU,EAAE,CAAA;QAChC,OAAO,aAAa,CAAC,SAAS,CAAC,yBAAW,CAAC,CAAA;KAC3C;IAAC,OAAO,CAAC,EAAE;QACX,MAAM,cAAc,GAAG,IAAI,+BAAc,CAAE,CAAW,CAAC,OAAO,CAAC,CAAA;QAC/D,MAAM,mBAAmB,GAAI,CAAW,CAAC,KAAK,CAAA;QAC9C,IAAI,mBAAmB,EAAE;YACxB,cAAc,CAAC,KAAK,GAAG,mBAAmB,CAAA;SAC1C;QACD,MAAM,cAAc,CAAA;KACpB;AACF,CAAC;AAlBD,8BAkBC;AAMD,SAAgB,MAAM;IACrB,IAAI;QACH,MAAM,aAAa,GAAc,OAAO,CAAC,WAAW,CAAC,gCAAiB,EAAE,OAAO,CAAC,CAAA;QAChF,OAAO,aAAa,CAAC,SAAS,CAAC,yBAAW,CAAC,CAAA;KAC3C;IAAC,OAAO,CAAC,EAAE;QACX,MAAM,IAAI,+BAAc,CAAC,6BAA6B,CAAC,CAAA;KACvD;AACF,CAAC;AAPD,wBAOC"}
|
|
@@ -4,10 +4,14 @@ exports.ProcessBridge = void 0;
|
|
|
4
4
|
const BaseBridge_1 = require("./BaseBridge");
|
|
5
5
|
class ProcessBridge extends BaseBridge_1.BaseBridge {
|
|
6
6
|
send(channel, ...args) {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
try {
|
|
8
|
+
this.bridge.send({
|
|
9
|
+
channel: channel,
|
|
10
|
+
args: args
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
catch (e) {
|
|
14
|
+
}
|
|
11
15
|
}
|
|
12
16
|
async terminate() {
|
|
13
17
|
return new Promise(resolve => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProcessBridge.js","sourceRoot":"","sources":["../../../../../src/lib/multipleRunner/lib/bridges/ProcessBridge.ts"],"names":[],"mappings":";;;AAAA,6CAAuC;AAEvC,MAAa,aAAc,SAAQ,uBAAU;
|
|
1
|
+
{"version":3,"file":"ProcessBridge.js","sourceRoot":"","sources":["../../../../../src/lib/multipleRunner/lib/bridges/ProcessBridge.ts"],"names":[],"mappings":";;;AAAA,6CAAuC;AAEvC,MAAa,aAAc,SAAQ,uBAAU;IAErC,IAAI,CAAC,OAAe,EAAE,GAAG,IAAW;QAC1C,IAAI;YACH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;gBAChB,OAAO,EAAE,OAAO;gBAChB,IAAI,EAAE,IAAI;aACV,CAAC,CAAA;SACF;QAAC,OAAO,CAAC,EAAE;SACX;IACF,CAAC;IAEM,KAAK,CAAC,SAAS;QACrB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;YAC5B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;YAClC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;QACnB,CAAC,CAAC,CAAA;IACH,CAAC;CACD;AAlBD,sCAkBC"}
|
|
@@ -4,10 +4,14 @@ exports.ThreadBridge = void 0;
|
|
|
4
4
|
const BaseBridge_1 = require("./BaseBridge");
|
|
5
5
|
class ThreadBridge extends BaseBridge_1.BaseBridge {
|
|
6
6
|
send(channel, ...args) {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
try {
|
|
8
|
+
this.bridge.postMessage({
|
|
9
|
+
channel: channel,
|
|
10
|
+
args: args
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
catch (e) {
|
|
14
|
+
}
|
|
11
15
|
}
|
|
12
16
|
async terminate() {
|
|
13
17
|
await this.bridge.terminate();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThreadBridge.js","sourceRoot":"","sources":["../../../../../src/lib/multipleRunner/lib/bridges/ThreadBridge.ts"],"names":[],"mappings":";;;AAAA,6CAAuC;AAEvC,MAAa,YAAa,SAAQ,uBAAU;
|
|
1
|
+
{"version":3,"file":"ThreadBridge.js","sourceRoot":"","sources":["../../../../../src/lib/multipleRunner/lib/bridges/ThreadBridge.ts"],"names":[],"mappings":";;;AAAA,6CAAuC;AAEvC,MAAa,YAAa,SAAQ,uBAAU;IAEpC,IAAI,CAAC,OAAe,EAAE,GAAG,IAAW;QAC1C,IAAI;YACH,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;gBACvB,OAAO,EAAE,OAAO;gBAChB,IAAI,EAAE,IAAI;aACV,CAAC,CAAA;SACF;QAAC,OAAO,CAAC,EAAE;SACX;IACF,CAAC;IAEM,KAAK,CAAC,SAAS;QACrB,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAA;IAC9B,CAAC;CACD;AAfD,oCAeC"}
|
|
@@ -16,11 +16,15 @@ class MultipleRunnerBaseClass {
|
|
|
16
16
|
const exports = cachedModule.exports;
|
|
17
17
|
if (exports && typeof exports === 'object') {
|
|
18
18
|
for (const exportName of Object.keys(exports)) {
|
|
19
|
-
|
|
20
|
-
if (exports[exportName] ===
|
|
21
|
-
|
|
19
|
+
try {
|
|
20
|
+
if (typeof exports[exportName] === 'function') {
|
|
21
|
+
if (exports[exportName] === this) {
|
|
22
|
+
Reflect.defineMetadata(MetadataKey_1.MULTIPLE_RUNNER__CLASS_PATH, modulePath, this);
|
|
23
|
+
}
|
|
22
24
|
}
|
|
23
25
|
}
|
|
26
|
+
catch (e) {
|
|
27
|
+
}
|
|
24
28
|
}
|
|
25
29
|
}
|
|
26
30
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultipleRunnerBaseClass.js","sourceRoot":"","sources":["../../../../../src/lib/multipleRunner/lib/prototypes/MultipleRunnerBaseClass.ts"],"names":[],"mappings":";;;AAAA,4BAAyB;AAEzB,6DAAmG;AAEnG,MAAa,uBAAuB;
|
|
1
|
+
{"version":3,"file":"MultipleRunnerBaseClass.js","sourceRoot":"","sources":["../../../../../src/lib/multipleRunner/lib/prototypes/MultipleRunnerBaseClass.ts"],"names":[],"mappings":";;;AAAA,4BAAyB;AAEzB,6DAAmG;AAEnG,MAAa,uBAAuB;IAoCnC,YAAY,MAAkB;QAC7B,IAAI,CAAC,UAAU,GAAG,MAAM,CAAA;IACzB,CAAC;IAnCM,MAAM,KAAK,UAAU;QAC3B,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,yCAA2B,EAAE,IAAI,CAAC,EAAE;YAC5D,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAA;YAC9C,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;gBACpD,MAAM,YAAY,GAAG,aAAa,CAAC,UAAU,CAAC,CAAA;gBAC9C,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE;oBACrC,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAA;oBACpC,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;wBAC3C,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;4BAC9C,IAAI;gCACH,IAAI,OAAO,OAAO,CAAC,UAAU,CAAC,KAAK,UAAU,EAAE;oCAC9C,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE;wCACjC,OAAO,CAAC,cAAc,CAAC,yCAA2B,EAAE,UAAU,EAAE,IAAI,CAAC,CAAA;qCACrE;iCACD;6BACD;4BAAC,OAAO,CAAC,EAAE;6BAEX;yBACD;qBACD;iBACD;aACD;SACD;QACD,OAAO,OAAO,CAAC,WAAW,CAAC,yCAA2B,EAAE,IAAI,CAAC,CAAA;IAC9D,CAAC;IAEM,MAAM,KAAK,UAAU;QAC3B,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,wCAA0B,EAAE,IAAI,CAAC,EAAE;YAC3D,OAAO,CAAC,cAAc,CAAC,wCAA0B,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;SACnE;QACD,OAAO,OAAO,CAAC,WAAW,CAAC,wCAA0B,EAAE,IAAI,CAAC,CAAA;IAC7D,CAAC;IAMS,KAAK,CAAC,KAAK;IAErB,CAAC;IAEM,GAAG,CAAC,KAAa;QACvB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAC3B,CAAC;IAKM,EAAE,CAAC,KAAa,EAAE,OAAiC;QACzD,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;IACnC,CAAC;IAKM,IAAI,CAAC,KAAa,EAAE,OAAiC;QAC3D,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;IACrC,CAAC;IAEM,IAAI,CAAC,KAAa,EAAE,GAAG,IAAW;QACxC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAQ,CAAC,CAAA;IACzE,CAAC;CACD;AAjED,0DAiEC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lakutata/core",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.39",
|
|
4
4
|
"description": "Lakutata Framework Core",
|
|
5
5
|
"main": "./build/Core.js",
|
|
6
6
|
"types": "./build/Core.d.ts",
|
|
@@ -55,13 +55,13 @@
|
|
|
55
55
|
"dependencies": {
|
|
56
56
|
"bcryptjs": "^2.4.3",
|
|
57
57
|
"crypto-js": "^4.1.1",
|
|
58
|
-
"google-libphonenumber": "^3.2.
|
|
58
|
+
"google-libphonenumber": "^3.2.27",
|
|
59
59
|
"inversify": "^6.0.1",
|
|
60
60
|
"is-ssh": "^1.3.3",
|
|
61
|
-
"json-helpers": "^5.
|
|
61
|
+
"json-helpers": "^5.2.0",
|
|
62
62
|
"json5": "^2.2.0",
|
|
63
63
|
"lodash.mapvalues": "^4.6.0",
|
|
64
|
-
"memfs": "^3.4.
|
|
64
|
+
"memfs": "^3.4.1",
|
|
65
65
|
"merge-deep": "^3.0.3",
|
|
66
66
|
"moment": "^2.29.1",
|
|
67
67
|
"moment-timezone": "^0.5.34",
|
|
@@ -73,22 +73,21 @@
|
|
|
73
73
|
"random": "^3.0.6",
|
|
74
74
|
"reflect-metadata": "^0.1.13",
|
|
75
75
|
"string-random": "^0.1.3",
|
|
76
|
-
"winston": "^3.
|
|
77
|
-
"winston-transport": "^4.
|
|
76
|
+
"winston": "^3.6.0",
|
|
77
|
+
"winston-transport": "^4.5.0",
|
|
78
78
|
"yup": "^0.32.11"
|
|
79
79
|
},
|
|
80
80
|
"devDependencies": {
|
|
81
81
|
"@types/bcryptjs": "^2.4.2",
|
|
82
|
-
"@types/crypto-js": "^4.
|
|
82
|
+
"@types/crypto-js": "^4.1.1",
|
|
83
83
|
"@types/google-libphonenumber": "^7.4.23",
|
|
84
84
|
"@types/is-ssh": "^1.3.0",
|
|
85
85
|
"@types/lodash.mapvalues": "^4.6.6",
|
|
86
86
|
"@types/merge-deep": "^3.0.0",
|
|
87
87
|
"@types/msgpack5": "^3.4.2",
|
|
88
|
-
"@types/needle": "^2.5.
|
|
88
|
+
"@types/needle": "^2.5.3",
|
|
89
89
|
"@types/node": "^16.11.7",
|
|
90
|
-
"@types/node-rsa": "^1.1.
|
|
91
|
-
"@types/valid-data-url": "^2.0.0",
|
|
90
|
+
"@types/node-rsa": "^1.1.1",
|
|
92
91
|
"@typescript-eslint/eslint-plugin": "^5.7.0",
|
|
93
92
|
"@typescript-eslint/parser": "^5.7.0",
|
|
94
93
|
"eslint": "^7.32.0",
|
|
@@ -97,8 +96,8 @@
|
|
|
97
96
|
"eslint-plugin-node": "^11.1.0",
|
|
98
97
|
"eslint-plugin-promise": "^5.2.0",
|
|
99
98
|
"shx": "^0.3.3",
|
|
100
|
-
"ts-node": "^10.
|
|
101
|
-
"typescript": "^4.
|
|
99
|
+
"ts-node": "^10.6.0" ,
|
|
100
|
+
"typescript": "^4.6.2"
|
|
102
101
|
},
|
|
103
102
|
"engines": {
|
|
104
103
|
"node": ">=12.22.1"
|
|
@@ -25,7 +25,12 @@ export async function createApp(config: IApplicationConfig): Promise<Application
|
|
|
25
25
|
await coreContainer.initialize()
|
|
26
26
|
return coreContainer.getModule(Application)
|
|
27
27
|
} catch (e) {
|
|
28
|
-
|
|
28
|
+
const fatalException = new FatalException((e as Error).message)
|
|
29
|
+
const createAppErrorStack = (e as Error).stack
|
|
30
|
+
if (createAppErrorStack) {
|
|
31
|
+
fatalException.stack = createAppErrorStack
|
|
32
|
+
}
|
|
33
|
+
throw fatalException
|
|
29
34
|
}
|
|
30
35
|
}
|
|
31
36
|
|
|
@@ -2,17 +2,20 @@ import {BaseBridge} from './BaseBridge'
|
|
|
2
2
|
|
|
3
3
|
export class ProcessBridge extends BaseBridge {
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
5
|
+
public send(channel: string, ...args: any[]) {
|
|
6
|
+
try {
|
|
7
|
+
this.bridge.send({
|
|
8
|
+
channel: channel,
|
|
9
|
+
args: args
|
|
10
|
+
})
|
|
11
|
+
} catch (e) {
|
|
12
|
+
}
|
|
13
|
+
}
|
|
11
14
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
public async terminate(): Promise<void> {
|
|
16
|
+
return new Promise(resolve => {
|
|
17
|
+
this.bridge.once('close', resolve)
|
|
18
|
+
this.bridge.kill()
|
|
19
|
+
})
|
|
20
|
+
}
|
|
18
21
|
}
|
|
@@ -2,14 +2,17 @@ import {BaseBridge} from './BaseBridge'
|
|
|
2
2
|
|
|
3
3
|
export class ThreadBridge extends BaseBridge {
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
5
|
+
public send(channel: string, ...args: any[]): void {
|
|
6
|
+
try {
|
|
7
|
+
this.bridge.postMessage({
|
|
8
|
+
channel: channel,
|
|
9
|
+
args: args
|
|
10
|
+
})
|
|
11
|
+
} catch (e) {
|
|
12
|
+
}
|
|
13
|
+
}
|
|
11
14
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
+
public async terminate(): Promise<void> {
|
|
16
|
+
await this.bridge.terminate()
|
|
17
|
+
}
|
|
15
18
|
}
|
|
@@ -14,10 +14,14 @@ export class MultipleRunnerBaseClass {
|
|
|
14
14
|
const exports = cachedModule.exports
|
|
15
15
|
if (exports && typeof exports === 'object') {
|
|
16
16
|
for (const exportName of Object.keys(exports)) {
|
|
17
|
-
|
|
18
|
-
if (exports[exportName] ===
|
|
19
|
-
|
|
17
|
+
try {
|
|
18
|
+
if (typeof exports[exportName] === 'function') {
|
|
19
|
+
if (exports[exportName] === this) {
|
|
20
|
+
Reflect.defineMetadata(MULTIPLE_RUNNER__CLASS_PATH, modulePath, this)
|
|
21
|
+
}
|
|
20
22
|
}
|
|
23
|
+
} catch (e) {
|
|
24
|
+
//Do nothing, just catch error to prevent application crash
|
|
21
25
|
}
|
|
22
26
|
}
|
|
23
27
|
}
|