eservices-back-core 1.3.18 → 1.3.19
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/Server.d.ts +8 -3
- package/dist/Server.d.ts.map +1 -1
- package/dist/Server.js +1 -1
- package/dist/Server.js.map +1 -1
- package/dist/app.js +3 -2
- package/dist/app.js.map +1 -1
- package/dist/logger/use-logger.d.ts.map +1 -1
- package/dist/logger/use-logger.js +0 -9
- package/dist/logger/use-logger.js.map +1 -1
- package/dist/rabbitmq/connect-rabbit.d.ts.map +1 -1
- package/dist/rabbitmq/connect-rabbit.js +26 -43
- package/dist/rabbitmq/connect-rabbit.js.map +1 -1
- package/dist/router/close/test-close-router.js +5 -4
- package/dist/router/close/test-close-router.js.map +1 -1
- package/dist/socket/connect-socket.d.ts +1 -1
- package/dist/socket/connect-socket.d.ts.map +1 -1
- package/dist/socket/connect-socket.js +17 -29
- package/dist/socket/connect-socket.js.map +1 -1
- package/dist/socket/core-socket-server.d.ts +32 -0
- package/dist/socket/core-socket-server.d.ts.map +1 -0
- package/dist/socket/core-socket-server.js +56 -0
- package/dist/socket/core-socket-server.js.map +1 -0
- package/package.json +2 -1
- package/tsconfig.json +1 -0
- package/dist/scripts/update-using-context.d.ts +0 -3
- package/dist/scripts/update-using-context.d.ts.map +0 -1
- package/dist/scripts/update-using-context.js +0 -25
- package/dist/scripts/update-using-context.js.map +0 -1
- package/dist/socket/namespaces/index-namespace.d.ts +0 -4
- package/dist/socket/namespaces/index-namespace.d.ts.map +0 -1
- package/dist/socket/namespaces/index-namespace.js +0 -14
- package/dist/socket/namespaces/index-namespace.js.map +0 -1
- package/dist/socket/use-socket.d.ts +0 -2
- package/dist/socket/use-socket.d.ts.map +0 -1
- package/dist/socket/use-socket.js +0 -27
- package/dist/socket/use-socket.js.map +0 -1
- package/dist/types/index.d.ts +0 -12
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -3
- package/dist/types/index.js.map +0 -1
- package/dist/utils/graphql-utils.d.ts +0 -9
- package/dist/utils/graphql-utils.d.ts.map +0 -1
- package/dist/utils/graphql-utils.js +0 -38
- package/dist/utils/graphql-utils.js.map +0 -1
package/dist/Server.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { Express } from "express";
|
|
3
3
|
import { Server as HTTPServer } from 'http';
|
|
4
4
|
import { ConfigParams } from "express-openid-connect";
|
|
5
|
-
import
|
|
5
|
+
import CoreSocketServer from "./socket/core-socket-server";
|
|
6
6
|
export default class Server implements Omit<ServerOptions, "amqp"> {
|
|
7
7
|
/**
|
|
8
8
|
* @description Ссылка на express сервер.
|
|
@@ -33,9 +33,9 @@ export default class Server implements Omit<ServerOptions, "amqp"> {
|
|
|
33
33
|
*/
|
|
34
34
|
staticDir: string;
|
|
35
35
|
/**
|
|
36
|
-
* @description Instance of
|
|
36
|
+
* @description Instance of WebSocketServer с модификациями
|
|
37
37
|
*/
|
|
38
|
-
socket:
|
|
38
|
+
socket: CoreSocketServer;
|
|
39
39
|
/**
|
|
40
40
|
* @description API URL(App Server)
|
|
41
41
|
*/
|
|
@@ -112,7 +112,12 @@ export interface ServerOptions {
|
|
|
112
112
|
* @description Строковое значение префикса для названия queue.
|
|
113
113
|
*/
|
|
114
114
|
prefix?: string;
|
|
115
|
+
/**
|
|
116
|
+
* @description Название Exchange к которому будет собачиться наша очередь
|
|
117
|
+
*/
|
|
118
|
+
exchange: string;
|
|
115
119
|
};
|
|
116
120
|
}
|
|
117
121
|
export declare type ServerType = 'back' | 'front';
|
|
122
|
+
export declare type UserId = number;
|
|
118
123
|
//# sourceMappingURL=Server.d.ts.map
|
package/dist/Server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Server.d.ts","sourceRoot":"","sources":["../src/Server.ts"],"names":[],"mappings":";AAAA,OAAgB,EAAC,OAAO,EAAC,MAAM,SAAS,CAAC;AACzC,OAAa,EAAC,MAAM,IAAI,UAAU,EAAC,MAAM,MAAM,CAAC;AAMhD,OAAO,EAAC,YAAY,EAAC,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"Server.d.ts","sourceRoot":"","sources":["../src/Server.ts"],"names":[],"mappings":";AAAA,OAAgB,EAAC,OAAO,EAAC,MAAM,SAAS,CAAC;AACzC,OAAa,EAAC,MAAM,IAAI,UAAU,EAAC,MAAM,MAAM,CAAC;AAMhD,OAAO,EAAC,YAAY,EAAC,MAAM,wBAAwB,CAAC;AAOpD,OAAO,gBAAgB,MAAM,6BAA6B,CAAC;AAI3D,MAAM,CAAC,OAAO,OAAO,MAAO,YAAW,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC;IAEjE;;OAEG;IACH,GAAG,EAAE,OAAO,CAAC;IAEb;;OAEG;IACH,UAAU,EAAE,UAAU,CAAA;IAEtB;;OAEG;IACH,IAAI,EAAE,UAAU,CAAC;IACjB;;OAEG;IACH,IAAI,QAAQ,IAAI,KAAK,GAAG,KAAK,CAE5B;IAED;;OAEG;IACH,UAAU,EAAE,MAAM,CAAA;IAElB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;IAEnB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,MAAM,EAAE,gBAAgB,CAAA;IAExB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAA;IACd;;OAEG;IACH,IAAI,EAAE,YAAY,CAAA;IAClB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IAEZ;;OAEG;IACH,OAAO,EAAE,MAAM,CAAA;IAEf,MAAM,CAAC,SAAS,IAAI,MAAM;gBAGd,MAAM,EAAE,aAAa;IAoBjC,GAAG;IAcG,eAAe,CAAC,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,EAAE,mBAAmB,EAAE,aAAa,CAAC,qBAAqB,CAAC;CAYlH;AAED,wBAAsB,YAAY,CAAC,MAAM,EAAE,aAAa,mBAavD;AAED,MAAM,WAAW,aAAa;IAC7B;;OAEG;IACH,OAAO,EAAE,MAAM,CAAA;IACf;;OAEG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ;;OAEG;IACH,IAAI,EAAE,UAAU,CAAA;IAChB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAA;IAClB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAA;IACd;;OAEG;IACH,IAAI,EAAE,YAAY,CAAC;IAEnB;;OAEG;IACH,IAAI,EAAE;QACL;;WAEG;QACH,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB;;;;WAIG;QACH,QAAQ,EAAE,MAAM,CAAC;QACjB;;WAEG;QACH,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB;;WAEG;QACH,QAAQ,EAAE,MAAM,CAAA;KAChB,CAAA;CACD;AAED,oBAAY,UAAU,GAAG,MAAM,GAAG,OAAO,CAAA;AACzC,oBAAY,MAAM,GAAG,MAAM,CAAA"}
|
package/dist/Server.js
CHANGED
|
@@ -29,6 +29,7 @@ class Server {
|
|
|
29
29
|
var _a, _b, _c, _d;
|
|
30
30
|
serverLink = this;
|
|
31
31
|
Object.assign(this, params);
|
|
32
|
+
(0, use_logger_1.default)();
|
|
32
33
|
this.app = (0, express_1.default)();
|
|
33
34
|
this.httpServer = http_1.default.createServer(this.app);
|
|
34
35
|
this.staticDir = path_1.default.join(params.projectDir, 'static');
|
|
@@ -78,7 +79,6 @@ function createServer(params) {
|
|
|
78
79
|
return __awaiter(this, void 0, void 0, function* () {
|
|
79
80
|
const server = new Server(params);
|
|
80
81
|
yield server.generateVersion(params.version, params.filepathBuildNumber);
|
|
81
|
-
(0, use_logger_1.default)();
|
|
82
82
|
(0, router_1.default)();
|
|
83
83
|
(0, use_config_1.default)();
|
|
84
84
|
server.run();
|
package/dist/Server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Server.js","sourceRoot":"","sources":["../src/Server.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,sDAAyC;AACzC,gDAAgD;AAChD,qEAA+C;AAC/C,sDAAoC;AACpC,qCAAgC;AAChC,gDAAwB;AACxB,oEAA2C;AAE3C,4CAAoB;AACpB,6EAAoD;AAIpD,+EAAsD;
|
|
1
|
+
{"version":3,"file":"Server.js","sourceRoot":"","sources":["../src/Server.ts"],"names":[],"mappings":"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"}
|
package/dist/app.js
CHANGED
|
@@ -34,10 +34,11 @@ console.log(`For retoken http://localhost:${process.env.PORT}/test-api/re-token`
|
|
|
34
34
|
},
|
|
35
35
|
},
|
|
36
36
|
amqp: {
|
|
37
|
-
vhost: "ar-aiti-
|
|
37
|
+
vhost: "ar-aiti-dev",
|
|
38
38
|
username: "ws",
|
|
39
39
|
password: "admin",
|
|
40
|
-
hostname: "104.41.213.67"
|
|
40
|
+
hostname: "104.41.213.67",
|
|
41
|
+
exchange: "AppRegister.Features.Notifications:DisplayMessageCreated"
|
|
41
42
|
}
|
|
42
43
|
});
|
|
43
44
|
//# sourceMappingURL=app.js.map
|
package/dist/app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":";;;;;AAAA,qCAAsC;AAEtC,gDAAwB;AAExB,mCAA8C;AAE9C,IAAA,eAAY,EAAC;IACZ,IAAI,EAAE,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC;CACxC,CAAC,CAAC;AAEH,OAAO,CAAC,GAAG,CAAC,gCAAgC,OAAO,CAAC,GAAG,CAAC,IAAI,oBAAoB,CAAC,CAAA;AAEjF,IAAA,qBAAY,EAAC;IACZ,OAAO,EAAE,OAAO;IAChB,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;IAC9B,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,IAAwB;IAC1C,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO;IAC3B,UAAU,EAAE,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC;IACtC,WAAW,EAAE,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,UAAU,CAAC;IACtD,IAAI,EAAE;QACL,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU;QACrC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ;QAC7B,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc;QACpC,MAAM,EACL,qEAAqE;QACtE,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW;QACrC,SAAS,EAAE,IAAI;QACf,WAAW,EAAE,IAAI;QACjB,MAAM,EAAE;YACP,KAAK,EAAE,KAAK;SACZ;QACD,mBAAmB,EAAE;YACpB,aAAa,EAAE,MAAM;YACrB,KAAK,EAAE,+BAA+B;SACtC;KACD;IACD,IAAI,EAAE;QACL,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":";;;;;AAAA,qCAAsC;AAEtC,gDAAwB;AAExB,mCAA8C;AAE9C,IAAA,eAAY,EAAC;IACZ,IAAI,EAAE,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC;CACxC,CAAC,CAAC;AAEH,OAAO,CAAC,GAAG,CAAC,gCAAgC,OAAO,CAAC,GAAG,CAAC,IAAI,oBAAoB,CAAC,CAAA;AAEjF,IAAA,qBAAY,EAAC;IACZ,OAAO,EAAE,OAAO;IAChB,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;IAC9B,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,IAAwB;IAC1C,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO;IAC3B,UAAU,EAAE,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC;IACtC,WAAW,EAAE,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,UAAU,CAAC;IACtD,IAAI,EAAE;QACL,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU;QACrC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ;QAC7B,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc;QACpC,MAAM,EACL,qEAAqE;QACtE,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW;QACrC,SAAS,EAAE,IAAI;QACf,WAAW,EAAE,IAAI;QACjB,MAAM,EAAE;YACP,KAAK,EAAE,KAAK;SACZ;QACD,mBAAmB,EAAE;YACpB,aAAa,EAAE,MAAM;YACrB,KAAK,EAAE,+BAA+B;SACtC;KACD;IACD,IAAI,EAAE;QACL,KAAK,EAAE,aAAa;QACpB,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,OAAO;QACjB,QAAQ,EAAE,eAAe;QACzB,QAAQ,EAAE,0DAA0D;KACpE;CACD,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-logger.d.ts","sourceRoot":"","sources":["../../src/logger/use-logger.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"use-logger.d.ts","sourceRoot":"","sources":["../../src/logger/use-logger.ts"],"names":[],"mappings":"AAmBA,MAAM,CAAC,OAAO,UAAU,SAAS,SAmBhC"}
|
|
@@ -37,15 +37,6 @@ function useLogger() {
|
|
|
37
37
|
if (typeof data === "string")
|
|
38
38
|
addLogger(data);
|
|
39
39
|
});
|
|
40
|
-
/*
|
|
41
|
-
addLogger('socket');
|
|
42
|
-
addLogger('metadata');
|
|
43
|
-
addLogger('context');
|
|
44
|
-
addLogger('main');
|
|
45
|
-
addLogger('error');
|
|
46
|
-
addLogger('tokens');
|
|
47
|
-
addLogger('request');
|
|
48
|
-
*/
|
|
49
40
|
}
|
|
50
41
|
exports.default = useLogger;
|
|
51
42
|
//# sourceMappingURL=use-logger.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-logger.js","sourceRoot":"","sources":["../../src/logger/use-logger.ts"],"names":[],"mappings":";;;;;AAAA,gDAAwB;AACxB,uDAA+B;AAC/B,qCAAoD;
|
|
1
|
+
{"version":3,"file":"use-logger.js","sourceRoot":"","sources":["../../src/logger/use-logger.ts"],"names":[],"mappings":";;;;;AAAA,gDAAwB;AACxB,uDAA+B;AAC/B,qCAAoD;AAEpD,SAAS,WAAW,CAAC,IAAY;IAC7B,OAAO,cAAI,CAAC,IAAI,CAAC,gBAAM,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,CAAC;AAC3E,CAAC;AACD,SAAS,SAAS,CAAC,IAAY;IAC3B,iBAAO,CAAC,GAAG,CAAC,IAAI,EAAE;QACd,MAAM,EAAE,gBAAM,CAAC,OAAO,CAClB,gBAAM,CAAC,SAAS,EAAE,EAClB,gBAAM,CAAC,WAAW,EAAE,CACvB;QACD,UAAU,EAAE;YACR,IAAI,oBAAU,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAE,WAAW,CAAC,IAAI,CAAC,EAAC,CAAC;SACrD;KACJ,CAAC,CAAA;AACN,CAAC;AAED,SAAwB,SAAS;IAC7B,MAAM,MAAM,GAAG;QACX,QAAQ;QACR,UAAU;QACV,SAAS;QACT,MAAM;QACN,OAAO;QACP,QAAQ;QACR,SAAS;QACT,aAAa;QACb,cAAc;QACd,gBAAgB;QAChB,OAAO;QACP,SAAS;QACT,WAAW;KACd,CAAA;IACD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QAClB,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,SAAS,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC,CAAC,CAAA;AACN,CAAC;AAnBD,4BAmBC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connect-rabbit.d.ts","sourceRoot":"","sources":["../../src/rabbitmq/connect-rabbit.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,EAAE,EAAC,aAAa,EAAC,MAAM,WAAW,CAAC;AAIhD;;;GAGG;AACH,wBAA8B,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"connect-rabbit.d.ts","sourceRoot":"","sources":["../../src/rabbitmq/connect-rabbit.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,EAAE,EAAC,aAAa,EAAC,MAAM,WAAW,CAAC;AAIhD;;;GAGG;AACH,wBAA8B,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,iBA4EzF"}
|
|
@@ -13,7 +13,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
13
13
|
};
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
const amqplib_1 = __importDefault(require("amqplib"));
|
|
16
|
-
const Server_1 = __importDefault(require("../Server"));
|
|
17
16
|
const connect_socket_1 = require("../socket/connect-socket");
|
|
18
17
|
const winston_1 = require("winston");
|
|
19
18
|
/**
|
|
@@ -22,58 +21,42 @@ const winston_1 = require("winston");
|
|
|
22
21
|
*/
|
|
23
22
|
function connectRabbit(server, options) {
|
|
24
23
|
return __awaiter(this, void 0, void 0, function* () {
|
|
25
|
-
|
|
24
|
+
let connectionStatus = 'closed';
|
|
26
25
|
let connection;
|
|
26
|
+
const queue = [(options.prefix || "UNKNOWN"), "WS", "Events"].join('.');
|
|
27
|
+
const exchange = options.exchange;
|
|
28
|
+
const logger = winston_1.loggers.get('main');
|
|
29
|
+
console.log('AMQP options', options);
|
|
30
|
+
tryConnection();
|
|
27
31
|
function startConnection() {
|
|
28
32
|
return __awaiter(this, void 0, void 0, function* () {
|
|
29
|
-
|
|
30
|
-
|
|
33
|
+
if (connectionStatus === 'connecting')
|
|
34
|
+
return;
|
|
35
|
+
connectionStatus = 'connecting';
|
|
36
|
+
logger.info("Start connection to Rabbit.");
|
|
31
37
|
connection = yield amqplib_1.default.connect(options);
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
connection.on('error', (err) => {
|
|
37
|
-
mainLogger.info('Connection to Rabbit has error.');
|
|
38
|
-
tryConnection();
|
|
39
|
-
});
|
|
40
|
-
mainLogger.info("Connection to RabbitMQ was created!", options);
|
|
38
|
+
connectionStatus = 'connected';
|
|
39
|
+
logger.info("Connection to RabbitMQ was created!", options);
|
|
40
|
+
connection.on('close', handleCloseConnection);
|
|
41
|
+
connection.on('error', handleCloseConnection);
|
|
41
42
|
const channel = yield connection.createChannel();
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
yield channel.assertQueue(queue, {
|
|
45
|
-
durable: false
|
|
46
|
-
}).then(ok => channel.bindQueue(ok.queue, exchange, ""));
|
|
43
|
+
yield channel.assertQueue(queue, { durable: false })
|
|
44
|
+
.then(ok => channel.bindQueue(ok.queue, exchange, ""));
|
|
47
45
|
channel.consume(queue, handleMessage, { noAck: true });
|
|
48
46
|
});
|
|
49
47
|
}
|
|
48
|
+
/**
|
|
49
|
+
* @description Функция для подключения к RabbitMQ. В случаи неудачи вызывается переподключение.
|
|
50
|
+
*/
|
|
50
51
|
function tryConnection() {
|
|
51
|
-
setTimeout(() =>
|
|
52
|
-
startConnection()
|
|
53
|
-
.catch(err => {
|
|
54
|
-
console.log('Rabbit is not connect');
|
|
55
|
-
try {
|
|
56
|
-
Server_1.default.getServer().socket.sockets.forEach(ws => {
|
|
57
|
-
(0, connect_socket_1.sendWSResponse)(ws, 'info', {
|
|
58
|
-
message: 'RMQ is not connected'
|
|
59
|
-
});
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
catch (e) {
|
|
63
|
-
//
|
|
64
|
-
}
|
|
65
|
-
tryConnection();
|
|
66
|
-
});
|
|
67
|
-
}, 2000);
|
|
52
|
+
setTimeout(() => startConnection().catch(tryConnection), 2000);
|
|
68
53
|
}
|
|
69
|
-
tryConnection();
|
|
70
54
|
function getPayload(data) {
|
|
71
55
|
if (data.content)
|
|
72
56
|
return JSON.parse(data.content.toString());
|
|
73
57
|
throw new Error("Where is payload in rabbit message?");
|
|
74
58
|
}
|
|
75
59
|
function handleMessage(data) {
|
|
76
|
-
const logger = winston_1.loggers.get("main");
|
|
77
60
|
try {
|
|
78
61
|
if (!isMessage(data))
|
|
79
62
|
throw new Error('Is not correct Rabbit Message');
|
|
@@ -84,9 +67,8 @@ function connectRabbit(server, options) {
|
|
|
84
67
|
const message = payload.message.body;
|
|
85
68
|
const subject = payload.message.subject;
|
|
86
69
|
const arrayUsers = Array.isArray(userId) ? userId : [userId];
|
|
87
|
-
console.log(payload);
|
|
88
70
|
arrayUsers.forEach(id => {
|
|
89
|
-
const set = server.socket.
|
|
71
|
+
const set = server.socket.getByClientId(typeof id === 'number' ? id : parseInt(id, 10));
|
|
90
72
|
set.forEach(ws => {
|
|
91
73
|
if (!ws)
|
|
92
74
|
return;
|
|
@@ -95,15 +77,16 @@ function connectRabbit(server, options) {
|
|
|
95
77
|
});
|
|
96
78
|
}
|
|
97
79
|
catch (e) {
|
|
98
|
-
|
|
99
|
-
console.log(data.content.toString());
|
|
100
|
-
logger.info(e === null || e === void 0 ? void 0 : e.message);
|
|
80
|
+
logger.error(e === null || e === void 0 ? void 0 : e.message);
|
|
101
81
|
}
|
|
102
82
|
}
|
|
83
|
+
function handleCloseConnection(err) {
|
|
84
|
+
logger.error('Connection was closed or error: ' + (err === null || err === void 0 ? void 0 : err.message));
|
|
85
|
+
tryConnection();
|
|
86
|
+
}
|
|
103
87
|
});
|
|
104
88
|
}
|
|
105
89
|
exports.default = connectRabbit;
|
|
106
|
-
function handleConnectionError() { }
|
|
107
90
|
const isMessage = (data) => !!data && typeof data === "object" && ('content' in data || 'message' in data);
|
|
108
91
|
const isMessagePayload = (data) => !!data && typeof data === "object" && 'message' in data && typeof data.message === 'object';
|
|
109
92
|
//# sourceMappingURL=connect-rabbit.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connect-rabbit.js","sourceRoot":"","sources":["../../src/rabbitmq/connect-rabbit.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,sDAA2B;
|
|
1
|
+
{"version":3,"file":"connect-rabbit.js","sourceRoot":"","sources":["../../src/rabbitmq/connect-rabbit.ts"],"names":[],"mappings":"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"}
|
|
@@ -40,9 +40,11 @@ exports.default = () => {
|
|
|
40
40
|
});
|
|
41
41
|
TestCloseRouter.get('/sockets', (req, res, next) => {
|
|
42
42
|
try {
|
|
43
|
-
const sockets = Server_1.default.getServer().socket.
|
|
43
|
+
const sockets = Server_1.default.getServer().socket.getAllSockets();
|
|
44
44
|
res.json(sockets.reduce((acc, item) => {
|
|
45
|
-
acc[item
|
|
45
|
+
if (!acc[item.userId])
|
|
46
|
+
acc[item.userId] = [];
|
|
47
|
+
acc[item.userId].push(item.id);
|
|
46
48
|
return acc;
|
|
47
49
|
}, {}));
|
|
48
50
|
}
|
|
@@ -56,8 +58,7 @@ exports.default = () => {
|
|
|
56
58
|
if (typeof message !== 'string')
|
|
57
59
|
message = "No message";
|
|
58
60
|
const userId = parseInt(req.query.userId, 10);
|
|
59
|
-
const set = Server_1.default.getServer().socket.
|
|
60
|
-
console.log(set);
|
|
61
|
+
const set = Server_1.default.getServer().socket.getByClientId(userId);
|
|
61
62
|
if (!set)
|
|
62
63
|
return res.json({
|
|
63
64
|
message: "Not connected user"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-close-router.js","sourceRoot":"","sources":["../../../src/router/close/test-close-router.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,sDAAmD;AACnD,oDAAkC;AAClC,yFAAgE;AAChE,uCAAkC;AAClC,uFAA8D;AAC9D,iDAAiD;AACjD,uFAA8D;AAC9D,8DAAsC;AACtC,0DAAkC;AAClC,yFAAgE;AAChE,0FAAgE;AAChE,uFAA8D;AAC9D,gEAA2D;AAG3D,kBAAe,GAAG,EAAE;IAChB,MAAM,eAAe,GAAG,iBAAO,CAAC,MAAM,EAAE,CAAC;IAEzC,eAAe,CAAC,GAAG,CAAC,UAAU,EAAC,CAAC,GAAY,EAAE,GAAG,EAAE,EAAE;QACjD,aAAa;QACb,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAE1B,CAAC,CAAC,CAAA;IAEF,eAAe,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE;QAC1D,GAAG,CAAC,IAAI,CAAC;YACL,YAAY,EAAE,eAAK,CAAC,gBAAgB;YACpC,UAAU,EAAE,eAAK,CAAC,cAAc;YAChC,YAAY,EAAE,eAAK,CAAC,YAAY;SACnC,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;IACF,eAAe,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QAC/C,IAAI;YACA,MAAM,OAAO,GAAG,gBAAM,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"test-close-router.js","sourceRoot":"","sources":["../../../src/router/close/test-close-router.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connect-socket.d.ts","sourceRoot":"","sources":["../../src/socket/connect-socket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,IAAI,CAAC;AAC7B,OAAO,MAAM,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"connect-socket.d.ts","sourceRoot":"","sources":["../../src/socket/connect-socket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,IAAI,CAAC;AAC7B,OAAO,MAAM,MAAM,WAAW,CAAC;AAY/B;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,SAAS,EAAE,MAAM,QAkGtD;AAeD,wBAAgB,cAAc,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,GAAE,MAAU,QAMhG;AAED,MAAM,WAAW,cAAc;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;CACjB"}
|
|
@@ -13,41 +13,31 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
13
13
|
};
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
exports.sendWSResponse = void 0;
|
|
16
|
-
const ws_1 = require("ws");
|
|
17
16
|
const auth_middleware_1 = __importDefault(require("../middleware/auth-middleware"));
|
|
18
17
|
const entity_read_socket_1 = require("./entity-read-socket");
|
|
19
18
|
const get_usage_context_1 = __importDefault(require("../utils/get-usage-context"));
|
|
20
19
|
const metadata_read_socket_1 = require("./metadata-read-socket");
|
|
21
20
|
const configuration_read_socket_1 = require("./configuration-read-socket");
|
|
22
|
-
const uuid_1 = require("uuid");
|
|
23
21
|
const api_error_1 = __importDefault(require("../errors/api-error"));
|
|
24
22
|
const entity_count_socket_1 = require("./entity-count-socket");
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
}
|
|
23
|
+
const winston_1 = require("winston");
|
|
24
|
+
const core_socket_server_1 = __importDefault(require("./core-socket-server"));
|
|
28
25
|
/**
|
|
29
26
|
* @description Метод используется для присоединения сокета к HTTP серверу. Также добавляются простые обработчики для
|
|
30
27
|
* чтения данных и т.д.
|
|
31
28
|
*/
|
|
32
29
|
function connectSocket(webServer) {
|
|
33
|
-
const
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
const socketServer = webServer.socket = new ws_1.WebSocket.Server({
|
|
37
|
-
noServer: true
|
|
30
|
+
const socketServer = webServer.socket = new core_socket_server_1.default({
|
|
31
|
+
noServer: true,
|
|
32
|
+
perMessageDeflate: true
|
|
38
33
|
})
|
|
39
34
|
.on('connection', function connection(ws, req) {
|
|
40
|
-
|
|
41
|
-
socketStore.set(ws.id, ws);
|
|
42
|
-
const userId = req.__userId;
|
|
43
|
-
if (!socketClients.get(userId))
|
|
44
|
-
socketClients.set(userId, new Set());
|
|
45
|
-
socketClients.get(userId).add(ws.id);
|
|
35
|
+
socketServer.addSocket(ws, req.__userId);
|
|
46
36
|
sendWSResponse(ws, 'configuration:read', (0, configuration_read_socket_1.readConfiguration)());
|
|
47
37
|
ws.on('error', console.error);
|
|
48
38
|
ws.on('message', function message(stringData) {
|
|
49
39
|
return __awaiter(this, void 0, void 0, function* () {
|
|
50
|
-
const info = JSON.parse(stringData);
|
|
40
|
+
const info = JSON.parse(stringData.toString());
|
|
51
41
|
const options = {
|
|
52
42
|
token: req.__token,
|
|
53
43
|
usageContext: (0, get_usage_context_1.default)(info.url),
|
|
@@ -81,20 +71,10 @@ function connectSocket(webServer) {
|
|
|
81
71
|
});
|
|
82
72
|
});
|
|
83
73
|
ws.on('close', () => {
|
|
84
|
-
|
|
85
|
-
socketStore.delete(ws.id);
|
|
86
|
-
socketClients[userId].delete(ws.id);
|
|
87
|
-
}
|
|
88
|
-
catch (e) {
|
|
89
|
-
console.log(e);
|
|
90
|
-
}
|
|
74
|
+
socketServer.deleteSocket(ws.id);
|
|
91
75
|
});
|
|
92
76
|
});
|
|
93
|
-
|
|
94
|
-
socketServer._getClients = (id) => socketClients.get(id) && [...socketClients.get(id).values()].map(i => socketStore.get(i));
|
|
95
|
-
socketServer._getAll = () => [...socketClients.entries()];
|
|
96
|
-
socketServer.sockets = () => [...socketStore.values()];
|
|
97
|
-
httpServer.on('upgrade', function upgrade(request, socket, head) {
|
|
77
|
+
webServer.httpServer.on('upgrade', function upgrade(request, socket, head) {
|
|
98
78
|
socket.on('error', onSocketError);
|
|
99
79
|
/**
|
|
100
80
|
* @description Фиктивная обёртка для authMiddleware. Т.к. в middleware происходит получение cookie, а в
|
|
@@ -136,6 +116,14 @@ function connectSocket(webServer) {
|
|
|
136
116
|
});
|
|
137
117
|
}
|
|
138
118
|
exports.default = connectSocket;
|
|
119
|
+
/**
|
|
120
|
+
* @description Функция при перехвате ошибки в сокете
|
|
121
|
+
*/
|
|
122
|
+
function onSocketError(err) {
|
|
123
|
+
console.error(err);
|
|
124
|
+
const logger = winston_1.loggers.get('main');
|
|
125
|
+
logger.error(typeof err === 'string' ? err : err instanceof Error ? err.message : err);
|
|
126
|
+
}
|
|
139
127
|
function wrapResponse(ws, requestId, defaultEvent) {
|
|
140
128
|
return (response, event) => {
|
|
141
129
|
sendWSResponse(ws, event || defaultEvent, response, requestId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connect-socket.js","sourceRoot":"","sources":["../../src/socket/connect-socket.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"connect-socket.js","sourceRoot":"","sources":["../../src/socket/connect-socket.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { WebSocket, WebSocketServer } from "ws";
|
|
2
|
+
import { UserId } from "../Server";
|
|
3
|
+
export default class CoreSocketServer extends WebSocketServer {
|
|
4
|
+
/**
|
|
5
|
+
* @description Метод по переданному идентификатору пользователя возвращает массив сокетов пользователя.
|
|
6
|
+
* */
|
|
7
|
+
getByClientId(clientId: UserId): WebSocket[];
|
|
8
|
+
/**
|
|
9
|
+
* @description Метод возвращает все сокеты.
|
|
10
|
+
* */
|
|
11
|
+
getAllSockets(): WebSocket[];
|
|
12
|
+
/**
|
|
13
|
+
* @description Хранит все сокет соединения
|
|
14
|
+
* */
|
|
15
|
+
socketStore: Map<CoreSocketId, WebSocket>;
|
|
16
|
+
/**
|
|
17
|
+
* @description Перечисление, где ключом выступает массив идентификатор пользователя, а значением - Набор сокетов
|
|
18
|
+
* используемых этим пользователем
|
|
19
|
+
* */
|
|
20
|
+
socketClients: Map<UserId, Set<CoreSocketId>>;
|
|
21
|
+
/**
|
|
22
|
+
* @description Метод добавляет сокет в харинилище. Также связывает его и устаналивает уникальный ID
|
|
23
|
+
* */
|
|
24
|
+
addSocket(ws: WebSocket, userId: UserId): void;
|
|
25
|
+
/**
|
|
26
|
+
* @description Начисто удаляет сокет соединение по ws-id
|
|
27
|
+
* */
|
|
28
|
+
deleteSocket(socketId: string): void;
|
|
29
|
+
}
|
|
30
|
+
declare type CoreSocketId = string;
|
|
31
|
+
export {};
|
|
32
|
+
//# sourceMappingURL=core-socket-server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core-socket-server.d.ts","sourceRoot":"","sources":["../../src/socket/core-socket-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,eAAe,EAAC,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAC,MAAM,EAAC,MAAM,WAAW,CAAC;AAGjC,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,eAAe;IAEzD;;SAEK;IACL,aAAa,CAAC,QAAQ,EAAE,MAAM;IAM9B;;SAEK;IACL,aAAa;IAGb;;SAEK;IACL,WAAW,EAAE,GAAG,CAAC,YAAY,EAAE,SAAS,CAAC,CAAY;IACrD;;;SAGK;IACL,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,CAAa;IAE1D;;SAEK;IACL,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM;IAQvC;;SAEK;IACL,YAAY,CAAC,QAAQ,EAAE,MAAM;CAShC;AAED,aAAK,YAAY,GAAG,MAAM,CAAA"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const ws_1 = require("ws");
|
|
4
|
+
const uuid_1 = require("uuid");
|
|
5
|
+
class CoreSocketServer extends ws_1.WebSocketServer {
|
|
6
|
+
constructor() {
|
|
7
|
+
super(...arguments);
|
|
8
|
+
/**
|
|
9
|
+
* @description Хранит все сокет соединения
|
|
10
|
+
* */
|
|
11
|
+
this.socketStore = new Map();
|
|
12
|
+
/**
|
|
13
|
+
* @description Перечисление, где ключом выступает массив идентификатор пользователя, а значением - Набор сокетов
|
|
14
|
+
* используемых этим пользователем
|
|
15
|
+
* */
|
|
16
|
+
this.socketClients = new Map();
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* @description Метод по переданному идентификатору пользователя возвращает массив сокетов пользователя.
|
|
20
|
+
* */
|
|
21
|
+
getByClientId(clientId) {
|
|
22
|
+
if (!this.socketClients.has(clientId))
|
|
23
|
+
return [];
|
|
24
|
+
return [...this.socketClients.get(clientId)].map(socketId => this.socketStore.get(socketId));
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* @description Метод возвращает все сокеты.
|
|
28
|
+
* */
|
|
29
|
+
getAllSockets() {
|
|
30
|
+
return [...this.socketStore.values()];
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* @description Метод добавляет сокет в харинилище. Также связывает его и устаналивает уникальный ID
|
|
34
|
+
* */
|
|
35
|
+
addSocket(ws, userId) {
|
|
36
|
+
ws.id = (0, uuid_1.v4)();
|
|
37
|
+
ws.userId = userId;
|
|
38
|
+
this.socketStore.set(ws.id, ws);
|
|
39
|
+
if (!this.socketClients.get(userId))
|
|
40
|
+
this.socketClients.set(userId, new Set());
|
|
41
|
+
this.socketClients.get(userId).add(ws.id);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* @description Начисто удаляет сокет соединение по ws-id
|
|
45
|
+
* */
|
|
46
|
+
deleteSocket(socketId) {
|
|
47
|
+
const socketInfo = this.socketStore.get(socketId);
|
|
48
|
+
this.socketStore.delete(socketId);
|
|
49
|
+
const userSockets = this.socketClients.get(socketInfo.userId);
|
|
50
|
+
if (!userSockets)
|
|
51
|
+
return;
|
|
52
|
+
userSockets.delete(socketId);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
exports.default = CoreSocketServer;
|
|
56
|
+
//# sourceMappingURL=core-socket-server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core-socket-server.js","sourceRoot":"","sources":["../../src/socket/core-socket-server.ts"],"names":[],"mappings":";;AAAA,2BAA8C;AAE9C,+BAAkC;AAElC,MAAqB,gBAAiB,SAAQ,oBAAe;IAA7D;;QAiBI;;aAEK;QACL,gBAAW,GAAiC,IAAI,GAAG,EAAE,CAAA;QACrD;;;aAGK;QACL,kBAAa,GAAmC,IAAI,GAAG,EAAE,CAAC;IAyB9D,CAAC;IAhDG;;SAEK;IACL,aAAa,CAAC,QAAgB;QAC1B,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC;YAAE,OAAO,EAAE,CAAC;QAEjD,OAAO,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;IACjG,CAAC;IAED;;SAEK;IACL,aAAa;QACT,OAAO,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAA;IACzC,CAAC;IAWD;;SAEK;IACL,SAAS,CAAC,EAAa,EAAE,MAAc;QACnC,EAAE,CAAC,EAAE,GAAG,IAAA,SAAM,GAAE,CAAC;QACjB,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC;QACnB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAEhC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QAC/E,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9C,CAAC;IACD;;SAEK;IACL,YAAY,CAAC,QAAgB;QACzB,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAClD,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAElC,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;QAC7D,IAAI,CAAC,WAAW;YAAE,OAAO;QAEzB,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;CACJ;AAlDD,mCAkDC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "eservices-back-core",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.19",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/Server.js",
|
|
6
6
|
"scripts": {
|
|
@@ -60,6 +60,7 @@
|
|
|
60
60
|
"@types/graphql": "^14.5.0",
|
|
61
61
|
"@types/jest": "^29.5.0",
|
|
62
62
|
"@types/uuid": "^8.3.4",
|
|
63
|
+
"@types/ws": "^8.5.7",
|
|
63
64
|
"jest": "^29.5.0",
|
|
64
65
|
"ts-jest": "^29.0.5",
|
|
65
66
|
"tslint": "^6.1.3"
|
package/tsconfig.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"update-using-context.d.ts","sourceRoot":"","sources":["../../src/scripts/update-using-context.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,WAAW,CAAC;AAe/B,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,MAAM,EAAE,MAAM,QAUrD"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const fs_1 = __importDefault(require("fs"));
|
|
7
|
-
function handle(server) {
|
|
8
|
-
const file = fs_1.default.readFileSync(server.options.usingContextFile, 'utf8');
|
|
9
|
-
const data = JSON.parse(file);
|
|
10
|
-
Object.keys(data).forEach(key => {
|
|
11
|
-
let value = data[key];
|
|
12
|
-
if (typeof value === 'string')
|
|
13
|
-
value = [value];
|
|
14
|
-
server.usingContextStore[key] = value;
|
|
15
|
-
});
|
|
16
|
-
}
|
|
17
|
-
function useUsingContext(server) {
|
|
18
|
-
if (!server.options.usingContextFile) {
|
|
19
|
-
return;
|
|
20
|
-
}
|
|
21
|
-
fs_1.default.watch(server.options.usingContextFile, () => handle(server));
|
|
22
|
-
handle(server);
|
|
23
|
-
}
|
|
24
|
-
exports.default = useUsingContext;
|
|
25
|
-
//# sourceMappingURL=update-using-context.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"update-using-context.js","sourceRoot":"","sources":["../../src/scripts/update-using-context.ts"],"names":[],"mappings":";;;;;AACA,4CAAoB;AAEpB,SAAS,MAAM,CAAC,MAAc;IAC7B,MAAM,IAAI,GAAG,YAAE,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IACtE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAE9B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QAC/B,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QACtB,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;QAE/C,MAAM,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACvC,CAAC,CAAC,CAAA;AACH,CAAC;AAED,SAAwB,eAAe,CAAC,MAAc;IAGrD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,EAAE;QACrC,OAAO;KACP;IAED,YAAE,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;IAC/D,MAAM,CAAC,MAAM,CAAC,CAAC;AAEhB,CAAC;AAVD,kCAUC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-namespace.d.ts","sourceRoot":"","sources":["../../../src/socket/namespaces/index-namespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,WAAW,CAAC;6BAIb,MAAM;AAA1B,wBASC"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const store_1 = require("../../store");
|
|
7
|
-
const Store_1 = __importDefault(require("../../store/Store"));
|
|
8
|
-
exports.default = (io) => {
|
|
9
|
-
io.on('connection', socket => {
|
|
10
|
-
const state = store_1.store.getState();
|
|
11
|
-
socket.emit("server-configuration:update", JSON.stringify(Object.assign(Object.assign({}, state.webServerConfiguration), { navigation: Store_1.default.viewNavigation, notification: Store_1.default.viewNotification })));
|
|
12
|
-
});
|
|
13
|
-
};
|
|
14
|
-
//# sourceMappingURL=index-namespace.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-namespace.js","sourceRoot":"","sources":["../../../src/socket/namespaces/index-namespace.ts"],"names":[],"mappings":";;;;;AACA,uCAAkC;AAClC,8DAAsC;AAEtC,kBAAe,CAAC,EAAU,EAAE,EAAE;IAC1B,EAAE,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,CAAC,EAAE;QACzB,MAAM,KAAK,GAAG,aAAK,CAAC,QAAQ,EAAE,CAAC;QAC/B,MAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE,IAAI,CAAC,SAAS,iCAClD,KAAK,CAAC,sBAAsB,KAC/B,UAAU,EAAE,eAAK,CAAC,cAAc,EAChC,YAAY,EAAE,eAAK,CAAC,gBAAgB,IACtC,CAAC,CAAA;IACP,CAAC,CAAC,CAAA;AACN,CAAC,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-socket.d.ts","sourceRoot":"","sources":["../../src/socket/use-socket.ts"],"names":[],"mappings":"AAUA,MAAM,CAAC,OAAO,UAAW,SAAS,SAcjC"}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const session_middleware_1 = __importDefault(require("../middleware/session-middleware"));
|
|
7
|
-
const default_namespace_1 = __importDefault(require("./namespaces/default-namespace"));
|
|
8
|
-
const api_error_1 = __importDefault(require("../errors/api-error"));
|
|
9
|
-
const Server_1 = __importDefault(require("../Server"));
|
|
10
|
-
const index_namespace_1 = __importDefault(require("./namespaces/index-namespace"));
|
|
11
|
-
const wrap = middleware => (socket, next) => middleware(socket.request, {}, next);
|
|
12
|
-
function useSocket() {
|
|
13
|
-
const io = Server_1.default.getServer().socket;
|
|
14
|
-
(0, index_namespace_1.default)(io
|
|
15
|
-
.use(wrap(session_middleware_1.default))
|
|
16
|
-
.use(wrap(authSocketMiddleware)));
|
|
17
|
-
(0, default_namespace_1.default)(io.of('default')
|
|
18
|
-
.use(wrap(session_middleware_1.default))
|
|
19
|
-
.use(wrap(authSocketMiddleware)));
|
|
20
|
-
}
|
|
21
|
-
exports.default = useSocket;
|
|
22
|
-
function authSocketMiddleware(req, res, next) {
|
|
23
|
-
if (req.session.userId)
|
|
24
|
-
return next();
|
|
25
|
-
next(api_error_1.default.UnauthorizedAccess('socket server'));
|
|
26
|
-
}
|
|
27
|
-
//# sourceMappingURL=use-socket.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-socket.js","sourceRoot":"","sources":["../../src/socket/use-socket.ts"],"names":[],"mappings":";;;;;AAAA,0FAAiE;AAEjE,uFAA8D;AAE9D,oEAA2C;AAC3C,uDAA+B;AAC/B,mFAA0D;AAE1D,MAAM,IAAI,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;AAElF,SAAyB,SAAS;IACjC,MAAM,EAAE,GAAG,gBAAM,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC;IAErC,IAAA,yBAAc,EACb,EAAE;SACA,GAAG,CAAC,IAAI,CAAC,4BAAiB,CAAC,CAAC;SAC5B,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CACjC,CAAA;IACD,IAAA,2BAAgB,EACf,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;SACd,GAAG,CAAC,IAAI,CAAC,4BAAiB,CAAC,CAAC;SAC5B,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CACjC,CAAC;AAEH,CAAC;AAdD,4BAcC;AAED,SAAS,oBAAoB,CAAC,GAAY,EAAE,GAAa,EAAE,IAAI;IAC9D,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM;QAAE,OAAO,IAAI,EAAE,CAAC;IAEtC,IAAI,CAAC,mBAAQ,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC,CAAC;AACpD,CAAC"}
|
package/dist/types/index.d.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { ConfigParams } from "express-openid-connect";
|
|
2
|
-
export declare type ServerType = 'back' | 'front';
|
|
3
|
-
export interface ServerParams {
|
|
4
|
-
port: number;
|
|
5
|
-
baseUrl: string;
|
|
6
|
-
type: ServerType;
|
|
7
|
-
frontendDir: string;
|
|
8
|
-
projectDir: string;
|
|
9
|
-
apiUrl: string;
|
|
10
|
-
oidc: ConfigParams;
|
|
11
|
-
}
|
|
12
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,wBAAwB,CAAC;AAwBpD,oBAAY,UAAU,GAAG,MAAM,GAAG,OAAO,CAAA;AAEzC,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,UAAU,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,YAAY,CAAC;CACtB"}
|
package/dist/types/index.js
DELETED
package/dist/types/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":""}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
interface ParseJSONConfigInterface {
|
|
2
|
-
[name: string]: boolean | ParseJSONConfigInterface;
|
|
3
|
-
}
|
|
4
|
-
export default class GraphqlUtils {
|
|
5
|
-
static parseToGraphQLFields(a: string[]): string;
|
|
6
|
-
static parseFields(fields: string[]): ParseJSONConfigInterface;
|
|
7
|
-
}
|
|
8
|
-
export {};
|
|
9
|
-
//# sourceMappingURL=graphql-utils.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"graphql-utils.d.ts","sourceRoot":"","sources":["../../src/utils/graphql-utils.ts"],"names":[],"mappings":"AAAA,UAAU,wBAAwB;IACjC,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,wBAAwB,CAAA;CAClD;AAED,MAAM,CAAC,OAAO,OAAO,YAAY;IAChC,MAAM,CAAC,oBAAoB,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM;IAuBhD,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,wBAAwB;CAsB9D"}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
class GraphqlUtils {
|
|
4
|
-
static parseToGraphQLFields(a) {
|
|
5
|
-
const v = GraphqlUtils.parseFields(a);
|
|
6
|
-
function test(object) {
|
|
7
|
-
let str = '';
|
|
8
|
-
for (const key in object) {
|
|
9
|
-
if (typeof object[key] === 'boolean')
|
|
10
|
-
str += ` ${key} `;
|
|
11
|
-
else {
|
|
12
|
-
// @ts-ignore
|
|
13
|
-
str += ` ${key} { ${test(object[key])} }`;
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
return str;
|
|
17
|
-
}
|
|
18
|
-
return test(v);
|
|
19
|
-
}
|
|
20
|
-
static parseFields(fields) {
|
|
21
|
-
function parseField(object, field) {
|
|
22
|
-
if (field.includes('.')) {
|
|
23
|
-
const pointPosition = field.indexOf('.');
|
|
24
|
-
const nextFields = field.substring(pointPosition + 1);
|
|
25
|
-
const currentField = field.substring(0, pointPosition);
|
|
26
|
-
if (!(currentField in object))
|
|
27
|
-
object[currentField] = {};
|
|
28
|
-
parseField(object[currentField], nextFields);
|
|
29
|
-
}
|
|
30
|
-
else
|
|
31
|
-
object[field] = true;
|
|
32
|
-
return object;
|
|
33
|
-
}
|
|
34
|
-
return fields.reduce(parseField, {});
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
exports.default = GraphqlUtils;
|
|
38
|
-
//# sourceMappingURL=graphql-utils.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"graphql-utils.js","sourceRoot":"","sources":["../../src/utils/graphql-utils.ts"],"names":[],"mappings":";;AAIA,MAAqB,YAAY;IAChC,MAAM,CAAC,oBAAoB,CAAC,CAAW;QACtC,MAAM,CAAC,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;QAErC,SAAS,IAAI,CAAC,MAAgC;YAE7C,IAAI,GAAG,GAAG,EAAE,CAAC;YAEb,KAAK,MAAM,GAAG,IAAI,MAAM,EAAG;gBAE1B,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS;oBAAE,GAAG,IAAI,IAAI,GAAG,GAAG,CAAC;qBACnD;oBACJ,aAAa;oBACb,GAAG,IAAI,IAAI,GAAG,MAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAE,IAAI,CAAC;iBAC5C;aAED;YAED,OAAO,GAAG,CAAC;QACZ,CAAC;QAED,OAAO,IAAI,CAAC,CAAC,CAAC,CAAA;IACf,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,MAAgB;QAElC,SAAS,UAAU,CAAC,MAAW,EAAE,KAAa;YAE7C,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBACxB,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAEzC,MAAM,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC;gBACtD,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;gBAEvD,IAAI,CAAC,CAAC,YAAY,IAAI,MAAM,CAAC;oBAAE,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;gBAEzD,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,UAAU,CAAC,CAAC;aAE7C;;gBAAM,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;YAE5B,OAAO,MAAM,CAAC;QACf,CAAC;QAED,OAAO,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAEtC,CAAC;CACD;AA9CD,+BA8CC"}
|