@sectester/repeater 0.27.0 → 0.29.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/README.md +3 -3
- package/package.json +11 -11
- package/src/api/DefaultRepeatersManager.js +1 -1
- package/src/api/DefaultRepeatersManager.js.map +1 -1
- package/src/api/commands/CreateRepeaterRequest.d.ts +1 -1
- package/src/api/commands/CreateRepeaterRequest.js +2 -2
- package/src/api/commands/CreateRepeaterRequest.js.map +1 -1
- package/src/api/commands/DeleteRepeaterRequest.d.ts +1 -1
- package/src/api/commands/DeleteRepeaterRequest.js +2 -2
- package/src/api/commands/DeleteRepeaterRequest.js.map +1 -1
- package/src/api/commands/GetRepeaterRequest.d.ts +1 -1
- package/src/api/commands/GetRepeaterRequest.js +2 -2
- package/src/api/commands/GetRepeaterRequest.js.map +1 -1
- package/src/api/commands/index.d.ts +0 -1
- package/src/api/commands/index.js +1 -4
- package/src/api/commands/index.js.map +1 -1
- package/src/api/index.d.ts +0 -3
- package/src/api/index.js +0 -7
- package/src/api/index.js.map +1 -1
- package/src/index.d.ts +1 -1
- package/src/index.js +1 -2
- package/src/index.js.map +1 -1
- package/src/lib/DefaultRepeaterCommands.d.ts +7 -0
- package/src/lib/DefaultRepeaterCommands.js +26 -0
- package/src/lib/DefaultRepeaterCommands.js.map +1 -0
- package/src/lib/DefaultRepeaterServer.d.ts +57 -0
- package/src/lib/DefaultRepeaterServer.js +218 -0
- package/src/lib/DefaultRepeaterServer.js.map +1 -0
- package/src/lib/Repeater.d.ts +18 -15
- package/src/lib/Repeater.js +90 -62
- package/src/lib/Repeater.js.map +1 -1
- package/src/lib/RepeaterCommands.d.ts +5 -0
- package/src/lib/RepeaterCommands.js +5 -0
- package/src/lib/RepeaterCommands.js.map +1 -0
- package/src/lib/RepeaterFactory.d.ts +3 -4
- package/src/lib/RepeaterFactory.js +18 -35
- package/src/lib/RepeaterFactory.js.map +1 -1
- package/src/lib/RepeaterServer.d.ts +92 -0
- package/src/lib/RepeaterServer.js +15 -0
- package/src/lib/RepeaterServer.js.map +1 -0
- package/src/lib/index.d.ts +8 -5
- package/src/lib/index.js +9 -7
- package/src/lib/index.js.map +1 -1
- package/src/models/Protocol.d.ts +1 -2
- package/src/models/Protocol.js +0 -1
- package/src/models/Protocol.js.map +1 -1
- package/src/register.js +15 -18
- package/src/register.js.map +1 -1
- package/src/request-runner/Request.d.ts +13 -9
- package/src/request-runner/Request.js +9 -19
- package/src/request-runner/Request.js.map +1 -1
- package/src/request-runner/Response.d.ts +5 -3
- package/src/request-runner/Response.js +2 -1
- package/src/request-runner/Response.js.map +1 -1
- package/src/request-runner/protocols/HttpRequestRunner.d.ts +9 -7
- package/src/request-runner/protocols/HttpRequestRunner.js +100 -88
- package/src/request-runner/protocols/HttpRequestRunner.js.map +1 -1
- package/src/request-runner/protocols/index.d.ts +0 -1
- package/src/request-runner/protocols/index.js +0 -1
- package/src/request-runner/protocols/index.js.map +1 -1
- package/src/utils/DefaultProxyFactory.d.ts +20 -0
- package/src/utils/DefaultProxyFactory.js +66 -0
- package/src/utils/DefaultProxyFactory.js.map +1 -0
- package/src/utils/NormalizeZlibDeflateTransformStream.d.ts +8 -0
- package/src/utils/NormalizeZlibDeflateTransformStream.js +25 -0
- package/src/utils/NormalizeZlibDeflateTransformStream.js.map +1 -0
- package/src/utils/PatchedHttpsProxyAgent.d.ts +14 -0
- package/src/utils/PatchedHttpsProxyAgent.js +17 -0
- package/src/utils/PatchedHttpsProxyAgent.js.map +1 -0
- package/src/utils/ProxyFactory.d.ts +19 -0
- package/src/utils/ProxyFactory.js +5 -0
- package/src/utils/ProxyFactory.js.map +1 -0
- package/src/utils/index.d.ts +3 -0
- package/src/utils/index.js +7 -0
- package/src/utils/index.js.map +1 -0
- package/src/api/ExecuteRequestEventHandler.d.ts +0 -24
- package/src/api/ExecuteRequestEventHandler.js +0 -37
- package/src/api/ExecuteRequestEventHandler.js.map +0 -1
- package/src/api/commands/RegisterRepeaterCommand.d.ts +0 -22
- package/src/api/commands/RegisterRepeaterCommand.js +0 -18
- package/src/api/commands/RegisterRepeaterCommand.js.map +0 -1
- package/src/api/events/RepeaterStatusEvent.d.ts +0 -10
- package/src/api/events/RepeaterStatusEvent.js +0 -11
- package/src/api/events/RepeaterStatusEvent.js.map +0 -1
- package/src/api/events/index.d.ts +0 -1
- package/src/api/events/index.js +0 -5
- package/src/api/events/index.js.map +0 -1
- package/src/request-runner/protocols/WsRequestRunner.d.ts +0 -24
- package/src/request-runner/protocols/WsRequestRunner.js +0 -149
- package/src/request-runner/protocols/WsRequestRunner.js.map +0 -1
package/README.md
CHANGED
|
@@ -169,8 +169,8 @@ describe('Scan', () => {
|
|
|
169
169
|
|
|
170
170
|
### Implementation details
|
|
171
171
|
|
|
172
|
-
Under the hood `Repeater`
|
|
173
|
-
|
|
172
|
+
Under the hood, `Repeater` connects to the Bright engine using the WebSocket protocol and then listens for incoming commands from the engine.
|
|
173
|
+
These commands are executed by the `RequestRunner` to process the requests coming from the engine:
|
|
174
174
|
|
|
175
175
|
```ts
|
|
176
176
|
export interface RequestRunner {
|
|
@@ -179,7 +179,7 @@ export interface RequestRunner {
|
|
|
179
179
|
}
|
|
180
180
|
```
|
|
181
181
|
|
|
182
|
-
Package contains `RequestRunner` implementations for
|
|
182
|
+
Package contains `RequestRunner` implementations for HTTP protocol only.
|
|
183
183
|
To support other protocol new class implementation of `RequestRunner` should be registered in global IoC container:
|
|
184
184
|
|
|
185
185
|
```ts
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sectester/repeater",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.29.0",
|
|
4
4
|
"description": "Package for managing repeaters, which are mandatory for scanning targets on a local network.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -35,25 +35,25 @@
|
|
|
35
35
|
"onprem"
|
|
36
36
|
],
|
|
37
37
|
"peerDependencies": {
|
|
38
|
-
"@sectester/bus": ">=0.16.0 <1.0.0",
|
|
39
38
|
"@sectester/core": ">=0.16.0 <1.0.0"
|
|
40
39
|
},
|
|
41
40
|
"main": "./src/index.js",
|
|
42
41
|
"typings": "./src/index.d.ts",
|
|
43
42
|
"dependencies": {
|
|
44
|
-
"
|
|
43
|
+
"axios": "^0.26.1",
|
|
45
44
|
"uuid": "^8.3.2",
|
|
45
|
+
"reflect-metadata": "^0.1.13",
|
|
46
46
|
"tsyringe": "^4.6.0",
|
|
47
|
-
"chalk": "^4.1.2",
|
|
48
|
-
"form-data": "^4.0.0",
|
|
49
|
-
"axios": "^0.26.1",
|
|
50
|
-
"amqp-connection-manager": "^4.1.13",
|
|
51
47
|
"axios-rate-limit": "^1.3.0",
|
|
52
|
-
"
|
|
53
|
-
"
|
|
48
|
+
"form-data": "^4.0.0",
|
|
49
|
+
"chalk": "^4.1.2",
|
|
50
|
+
"socket.io-msgpack-parser": "^3.0.2",
|
|
51
|
+
"socket.io-client": "^4.7.5",
|
|
52
|
+
"iconv-lite": "^0.6.3",
|
|
53
|
+
"fast-content-type-parse": "^1.1.0",
|
|
54
|
+
"https-proxy-agent": "^7.0.4",
|
|
55
|
+
"http-proxy-agent": "^7.0.2",
|
|
54
56
|
"socks-proxy-agent": "^6.2.0-beta.0",
|
|
55
|
-
"content-type": "^1.0.4",
|
|
56
|
-
"ws": "^8.5.0",
|
|
57
57
|
"tslib": "~2.3.1"
|
|
58
58
|
}
|
|
59
59
|
}
|
|
@@ -26,7 +26,7 @@ let DefaultRepeatersManager = class DefaultRepeatersManager {
|
|
|
26
26
|
}
|
|
27
27
|
return { repeaterId: repeater.id };
|
|
28
28
|
}
|
|
29
|
-
|
|
29
|
+
deleteRepeater(repeaterId) {
|
|
30
30
|
return this.commandDispatcher.execute(new commands_1.DeleteRepeaterRequest({ repeaterId }));
|
|
31
31
|
}
|
|
32
32
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultRepeatersManager.js","sourceRoot":"","sources":["../../../../../packages/repeater/src/api/DefaultRepeatersManager.ts"],"names":[],"mappings":";;;;AACA,yCAIoB;AACpB,uCAA8C;AAC9C,0CAAoD;AAGpD,IAAa,uBAAuB,GAApC,MAAa,uBAAuB;IAClC,YAEmB,iBAAoC;QAApC,sBAAiB,GAAjB,iBAAiB,CAAmB;IACpD,CAAC;IAEG,KAAK,CAAC,WAAW,CACtB,UAAkB;QAElB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CACnD,IAAI,6BAAkB,CAAC,UAAU,CAAC,CACnC,CAAC;QAEF,IAAI,CAAC,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,EAAE,CAAA,EAAE;YACjB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;SACzC;QAED,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC;IACrC,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,EAC1B,SAAS,EACT,GAAG,OAAO,EAKX;QACC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CACnD,IAAI,gCAAqB,CAAC;YACxB,GAAG,OAAO;YACV,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAClD,CAAC,CACH,CAAC;
|
|
1
|
+
{"version":3,"file":"DefaultRepeatersManager.js","sourceRoot":"","sources":["../../../../../packages/repeater/src/api/DefaultRepeatersManager.ts"],"names":[],"mappings":";;;;AACA,yCAIoB;AACpB,uCAA8C;AAC9C,0CAAoD;AAGpD,IAAa,uBAAuB,GAApC,MAAa,uBAAuB;IAClC,YAEmB,iBAAoC;QAApC,sBAAiB,GAAjB,iBAAiB,CAAmB;IACpD,CAAC;IAEG,KAAK,CAAC,WAAW,CACtB,UAAkB;QAElB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CACnD,IAAI,6BAAkB,CAAC,UAAU,CAAC,CACnC,CAAC;QAEF,IAAI,CAAC,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,EAAE,CAAA,EAAE;YACjB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;SACzC;QAED,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC;IACrC,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,EAC1B,SAAS,EACT,GAAG,OAAO,EAKX;QACC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CACnD,IAAI,gCAAqB,CAAC;YACxB,GAAG,OAAO;YACV,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAClD,CAAC,CACH,CAAC;QACF,IAAI,CAAC,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,EAAE,CAAA,EAAE;YACjB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;SAClD;QAED,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC;IACrC,CAAC;IAEM,cAAc,CAAC,UAAkB;QACtC,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,CACnC,IAAI,gCAAqB,CAAC,EAAE,UAAU,EAAE,CAAC,CAC1C,CAAC;IACJ,CAAC;CACF,CAAA;AA9CY,uBAAuB;IADnC,IAAA,qBAAU,GAAE;IAGR,mBAAA,IAAA,iBAAM,EAAC,wBAAiB,CAAC,CAAA;;GAFjB,uBAAuB,CA8CnC;AA9CY,0DAAuB"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.CreateRepeaterRequest = void 0;
|
|
4
|
-
const
|
|
5
|
-
class CreateRepeaterRequest extends
|
|
4
|
+
const core_1 = require("@sectester/core");
|
|
5
|
+
class CreateRepeaterRequest extends core_1.HttpRequest {
|
|
6
6
|
constructor(payload) {
|
|
7
7
|
super({
|
|
8
8
|
payload,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CreateRepeaterRequest.js","sourceRoot":"","sources":["../../../../../../packages/repeater/src/api/commands/CreateRepeaterRequest.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"CreateRepeaterRequest.js","sourceRoot":"","sources":["../../../../../../packages/repeater/src/api/commands/CreateRepeaterRequest.ts"],"names":[],"mappings":";;;AAAA,0CAA8C;AAY9C,MAAa,qBAAsB,SAAQ,kBAG1C;IACC,YAAY,OAAqC;QAC/C,KAAK,CAAC;YACJ,OAAO;YACP,GAAG,EAAE,mBAAmB;YACxB,MAAM,EAAE,MAAM;SACf,CAAC,CAAC;IACL,CAAC;CACF;AAXD,sDAWC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.DeleteRepeaterRequest = void 0;
|
|
4
|
-
const
|
|
5
|
-
class DeleteRepeaterRequest extends
|
|
4
|
+
const core_1 = require("@sectester/core");
|
|
5
|
+
class DeleteRepeaterRequest extends core_1.HttpRequest {
|
|
6
6
|
constructor(payload) {
|
|
7
7
|
super({
|
|
8
8
|
url: `/api/v1/repeaters/${payload.repeaterId}`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeleteRepeaterRequest.js","sourceRoot":"","sources":["../../../../../../packages/repeater/src/api/commands/DeleteRepeaterRequest.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"DeleteRepeaterRequest.js","sourceRoot":"","sources":["../../../../../../packages/repeater/src/api/commands/DeleteRepeaterRequest.ts"],"names":[],"mappings":";;;AAAA,0CAA8C;AAE9C,MAAa,qBAAsB,SAAQ,kBAAW;IACpD,YAAY,OAA+B;QACzC,KAAK,CAAC;YACJ,GAAG,EAAE,qBAAqB,OAAO,CAAC,UAAU,EAAE;YAC9C,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,SAAS;YAClB,WAAW,EAAE,KAAK;SACnB,CAAC,CAAC;IACL,CAAC;CACF;AATD,sDASC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.GetRepeaterRequest = void 0;
|
|
4
|
-
const
|
|
5
|
-
class GetRepeaterRequest extends
|
|
4
|
+
const core_1 = require("@sectester/core");
|
|
5
|
+
class GetRepeaterRequest extends core_1.HttpRequest {
|
|
6
6
|
constructor(repeaterId) {
|
|
7
7
|
super({
|
|
8
8
|
url: `/api/v1/repeaters/${repeaterId}`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GetRepeaterRequest.js","sourceRoot":"","sources":["../../../../../../packages/repeater/src/api/commands/GetRepeaterRequest.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"GetRepeaterRequest.js","sourceRoot":"","sources":["../../../../../../packages/repeater/src/api/commands/GetRepeaterRequest.ts"],"names":[],"mappings":";;;AAAA,0CAA8C;AAQ9C,MAAa,kBAAmB,SAAQ,kBAGvC;IACC,YAAY,UAAkB;QAC5B,KAAK,CAAC;YACJ,GAAG,EAAE,qBAAqB,UAAU,EAAE;YACtC,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,SAAS;SACnB,CAAC,CAAC;IACL,CAAC;CACF;AAXD,gDAWC"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
1
|
export { CreateRepeaterRequest } from './CreateRepeaterRequest';
|
|
2
2
|
export { DeleteRepeaterRequest } from './DeleteRepeaterRequest';
|
|
3
3
|
export { GetRepeaterRequest } from './GetRepeaterRequest';
|
|
4
|
-
export { RegisterRepeaterCommand, RegisterRepeaterCommandPayload, RegisterRepeaterResult, RepeaterRegisteringError } from './RegisterRepeaterCommand';
|
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.GetRepeaterRequest = exports.DeleteRepeaterRequest = exports.CreateRepeaterRequest = void 0;
|
|
4
4
|
var CreateRepeaterRequest_1 = require("./CreateRepeaterRequest");
|
|
5
5
|
Object.defineProperty(exports, "CreateRepeaterRequest", { enumerable: true, get: function () { return CreateRepeaterRequest_1.CreateRepeaterRequest; } });
|
|
6
6
|
var DeleteRepeaterRequest_1 = require("./DeleteRepeaterRequest");
|
|
7
7
|
Object.defineProperty(exports, "DeleteRepeaterRequest", { enumerable: true, get: function () { return DeleteRepeaterRequest_1.DeleteRepeaterRequest; } });
|
|
8
8
|
var GetRepeaterRequest_1 = require("./GetRepeaterRequest");
|
|
9
9
|
Object.defineProperty(exports, "GetRepeaterRequest", { enumerable: true, get: function () { return GetRepeaterRequest_1.GetRepeaterRequest; } });
|
|
10
|
-
var RegisterRepeaterCommand_1 = require("./RegisterRepeaterCommand");
|
|
11
|
-
Object.defineProperty(exports, "RegisterRepeaterCommand", { enumerable: true, get: function () { return RegisterRepeaterCommand_1.RegisterRepeaterCommand; } });
|
|
12
|
-
Object.defineProperty(exports, "RepeaterRegisteringError", { enumerable: true, get: function () { return RegisterRepeaterCommand_1.RepeaterRegisteringError; } });
|
|
13
10
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/repeater/src/api/commands/index.ts"],"names":[],"mappings":";;;AAAA,iEAAgE;AAAvD,8HAAA,qBAAqB,OAAA;AAC9B,iEAAgE;AAAvD,8HAAA,qBAAqB,OAAA;AAC9B,2DAA0D;AAAjD,wHAAA,kBAAkB,OAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/repeater/src/api/commands/index.ts"],"names":[],"mappings":";;;AAAA,iEAAgE;AAAvD,8HAAA,qBAAqB,OAAA;AAC9B,iEAAgE;AAAvD,8HAAA,qBAAqB,OAAA;AAC9B,2DAA0D;AAAjD,wHAAA,kBAAkB,OAAA"}
|
package/src/api/index.d.ts
CHANGED
|
@@ -1,5 +1,2 @@
|
|
|
1
|
-
export { RepeaterRegisteringError, RegisterRepeaterResult, RegisterRepeaterCommandPayload, RegisterRepeaterCommand } from './commands';
|
|
2
|
-
export { RepeaterStatusEvent } from './events';
|
|
3
1
|
export * from './RepeatersManager';
|
|
4
2
|
export * from './DefaultRepeatersManager';
|
|
5
|
-
export * from './ExecuteRequestEventHandler';
|
package/src/api/index.js
CHANGED
|
@@ -1,13 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.RepeaterStatusEvent = exports.RegisterRepeaterCommand = exports.RepeaterRegisteringError = void 0;
|
|
4
3
|
const tslib_1 = require("tslib");
|
|
5
|
-
var commands_1 = require("./commands");
|
|
6
|
-
Object.defineProperty(exports, "RepeaterRegisteringError", { enumerable: true, get: function () { return commands_1.RepeaterRegisteringError; } });
|
|
7
|
-
Object.defineProperty(exports, "RegisterRepeaterCommand", { enumerable: true, get: function () { return commands_1.RegisterRepeaterCommand; } });
|
|
8
|
-
var events_1 = require("./events");
|
|
9
|
-
Object.defineProperty(exports, "RepeaterStatusEvent", { enumerable: true, get: function () { return events_1.RepeaterStatusEvent; } });
|
|
10
4
|
tslib_1.__exportStar(require("./RepeatersManager"), exports);
|
|
11
5
|
tslib_1.__exportStar(require("./DefaultRepeatersManager"), exports);
|
|
12
|
-
tslib_1.__exportStar(require("./ExecuteRequestEventHandler"), exports);
|
|
13
6
|
//# sourceMappingURL=index.js.map
|
package/src/api/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/repeater/src/api/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/repeater/src/api/index.ts"],"names":[],"mappings":";;;AAAA,6DAAmC;AACnC,oEAA0C"}
|
package/src/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import './register';
|
|
2
|
-
export { RepeatersManager
|
|
2
|
+
export { RepeatersManager } from './api';
|
|
3
3
|
export * from './lib';
|
|
4
4
|
export * from './models';
|
|
5
5
|
export * from './request-runner';
|
package/src/index.js
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.RepeatersManager = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
require("./register");
|
|
6
6
|
var api_1 = require("./api");
|
|
7
7
|
Object.defineProperty(exports, "RepeatersManager", { enumerable: true, get: function () { return api_1.RepeatersManager; } });
|
|
8
|
-
Object.defineProperty(exports, "ExecuteRequestEventHandler", { enumerable: true, get: function () { return api_1.ExecuteRequestEventHandler; } });
|
|
9
8
|
tslib_1.__exportStar(require("./lib"), exports);
|
|
10
9
|
tslib_1.__exportStar(require("./models"), exports);
|
|
11
10
|
tslib_1.__exportStar(require("./request-runner"), exports);
|
package/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/repeater/src/index.ts"],"names":[],"mappings":";;;;AAAA,sBAAoB;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/repeater/src/index.ts"],"names":[],"mappings":";;;;AAAA,sBAAoB;AACpB,6BAAyC;AAAhC,uGAAA,gBAAgB,OAAA;AACzB,gDAAsB;AACtB,mDAAyB;AACzB,2DAAiC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { RepeaterCommands } from './RepeaterCommands';
|
|
2
|
+
import { Request, Response, RequestRunner } from '../request-runner';
|
|
3
|
+
export declare class DefaultRepeaterCommands implements RepeaterCommands {
|
|
4
|
+
private readonly requestRunners;
|
|
5
|
+
constructor(requestRunners: RequestRunner[]);
|
|
6
|
+
sendRequest(request: Request): Promise<Response>;
|
|
7
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DefaultRepeaterCommands = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const request_runner_1 = require("../request-runner");
|
|
6
|
+
const tsyringe_1 = require("tsyringe");
|
|
7
|
+
let DefaultRepeaterCommands = class DefaultRepeaterCommands {
|
|
8
|
+
constructor(requestRunners) {
|
|
9
|
+
this.requestRunners = requestRunners;
|
|
10
|
+
}
|
|
11
|
+
async sendRequest(request) {
|
|
12
|
+
const { protocol } = request;
|
|
13
|
+
const requestRunner = this.requestRunners.find(x => x.protocol === protocol);
|
|
14
|
+
if (!requestRunner) {
|
|
15
|
+
throw new Error(`Unsupported protocol "${protocol}"`);
|
|
16
|
+
}
|
|
17
|
+
return requestRunner.run(request);
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
DefaultRepeaterCommands = tslib_1.__decorate([
|
|
21
|
+
(0, tsyringe_1.injectable)(),
|
|
22
|
+
tslib_1.__param(0, (0, tsyringe_1.injectAll)(request_runner_1.RequestRunner)),
|
|
23
|
+
tslib_1.__metadata("design:paramtypes", [Array])
|
|
24
|
+
], DefaultRepeaterCommands);
|
|
25
|
+
exports.DefaultRepeaterCommands = DefaultRepeaterCommands;
|
|
26
|
+
//# sourceMappingURL=DefaultRepeaterCommands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DefaultRepeaterCommands.js","sourceRoot":"","sources":["../../../../../packages/repeater/src/lib/DefaultRepeaterCommands.ts"],"names":[],"mappings":";;;;AACA,sDAAqE;AACrE,uCAAiD;AAGjD,IAAa,uBAAuB,GAApC,MAAa,uBAAuB;IAClC,YAEmB,cAA+B;QAA/B,mBAAc,GAAd,cAAc,CAAiB;IAC/C,CAAC;IAEG,KAAK,CAAC,WAAW,CAAC,OAAgB;QACvC,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;QAE7B,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAC5C,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAC7B,CAAC;QAEF,IAAI,CAAC,aAAa,EAAE;YAClB,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,GAAG,CAAC,CAAC;SACvD;QAED,OAAO,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;CACF,CAAA;AAnBY,uBAAuB;IADnC,IAAA,qBAAU,GAAE;IAGR,mBAAA,IAAA,oBAAS,EAAC,8BAAa,CAAC,CAAA;;GAFhB,uBAAuB,CAmBnC;AAnBY,0DAAuB"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
2
|
+
import { RepeaterServer, RepeaterServerEventHandler, RepeaterServerEventsMap, DeployCommandOptions, RepeaterServerDeployedEvent } from './RepeaterServer';
|
|
3
|
+
import { Logger } from '@sectester/core';
|
|
4
|
+
export interface DefaultRepeaterServerOptions {
|
|
5
|
+
readonly uri: string;
|
|
6
|
+
readonly token: string;
|
|
7
|
+
readonly connectTimeout?: number;
|
|
8
|
+
readonly proxyUrl?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare const DefaultRepeaterServerOptions: unique symbol;
|
|
11
|
+
export declare const enum SocketEvents {
|
|
12
|
+
DEPLOYED = "deployed",
|
|
13
|
+
DEPLOY = "deploy",
|
|
14
|
+
UNDEPLOY = "undeploy",
|
|
15
|
+
UNDEPLOYED = "undeployed",
|
|
16
|
+
ERROR = "error",
|
|
17
|
+
UPDATE_AVAILABLE = "update-available",
|
|
18
|
+
PING = "ping",
|
|
19
|
+
REQUEST = "request"
|
|
20
|
+
}
|
|
21
|
+
export declare class DefaultRepeaterServer implements RepeaterServer {
|
|
22
|
+
private readonly logger;
|
|
23
|
+
private readonly options;
|
|
24
|
+
private readonly MAX_DEPLOYMENT_TIMEOUT;
|
|
25
|
+
private readonly MAX_PING_INTERVAL;
|
|
26
|
+
private readonly MAX_RECONNECTION_ATTEMPTS;
|
|
27
|
+
private readonly MIN_RECONNECTION_DELAY;
|
|
28
|
+
private readonly MAX_RECONNECTION_DELAY;
|
|
29
|
+
private latestReconnectionError?;
|
|
30
|
+
private pingTimer?;
|
|
31
|
+
private connectionTimer?;
|
|
32
|
+
private _socket?;
|
|
33
|
+
private connectionAttempts;
|
|
34
|
+
private events;
|
|
35
|
+
private readonly handlerMap;
|
|
36
|
+
private get socket();
|
|
37
|
+
constructor(logger: Logger, options: DefaultRepeaterServerOptions);
|
|
38
|
+
disconnect(): void;
|
|
39
|
+
deploy(options?: DeployCommandOptions): Promise<RepeaterServerDeployedEvent>;
|
|
40
|
+
connect(namePrefix?: string): Promise<void>;
|
|
41
|
+
off<K extends keyof RepeaterServerEventsMap>(event: K, handler: RepeaterServerEventHandler<K>): void;
|
|
42
|
+
on<K extends keyof RepeaterServerEventsMap>(event: K, handler: RepeaterServerEventHandler<K>): void;
|
|
43
|
+
private wrapEventListener;
|
|
44
|
+
private extractLastArgument;
|
|
45
|
+
private listenToApplicationEvents;
|
|
46
|
+
private listenToReservedEvents;
|
|
47
|
+
private handleConnectionError;
|
|
48
|
+
private suppressConnectionError;
|
|
49
|
+
private scheduleReconnection;
|
|
50
|
+
private logConnectionError;
|
|
51
|
+
private clearConnectionTimer;
|
|
52
|
+
private handleConnect;
|
|
53
|
+
private handleDisconnect;
|
|
54
|
+
private handleEventError;
|
|
55
|
+
private createPingTimer;
|
|
56
|
+
private clearPingTimer;
|
|
57
|
+
}
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DefaultRepeaterServer = exports.DefaultRepeaterServerOptions = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
require("reflect-metadata");
|
|
6
|
+
const RepeaterServer_1 = require("./RepeaterServer");
|
|
7
|
+
const core_1 = require("@sectester/core");
|
|
8
|
+
const tsyringe_1 = require("tsyringe");
|
|
9
|
+
const socket_io_client_1 = tslib_1.__importDefault(require("socket.io-client"));
|
|
10
|
+
const socket_io_msgpack_parser_1 = tslib_1.__importDefault(require("socket.io-msgpack-parser"));
|
|
11
|
+
const events_1 = require("events");
|
|
12
|
+
const os_1 = require("os");
|
|
13
|
+
exports.DefaultRepeaterServerOptions = Symbol('DefaultRepeaterServerOptions');
|
|
14
|
+
let DefaultRepeaterServer = class DefaultRepeaterServer {
|
|
15
|
+
constructor(logger, options) {
|
|
16
|
+
this.logger = logger;
|
|
17
|
+
this.options = options;
|
|
18
|
+
this.MAX_DEPLOYMENT_TIMEOUT = 60000;
|
|
19
|
+
this.MAX_PING_INTERVAL = 10000;
|
|
20
|
+
this.MAX_RECONNECTION_ATTEMPTS = 20;
|
|
21
|
+
this.MIN_RECONNECTION_DELAY = 1000;
|
|
22
|
+
this.MAX_RECONNECTION_DELAY = 86400000;
|
|
23
|
+
this.connectionAttempts = 0;
|
|
24
|
+
this.events = new events_1.EventEmitter();
|
|
25
|
+
this.handlerMap = new WeakMap();
|
|
26
|
+
this.handleConnectionError = (err) => {
|
|
27
|
+
const { data } = err;
|
|
28
|
+
// If the error is not related to the repeater, we should ignore it
|
|
29
|
+
if (!(data === null || data === void 0 ? void 0 : data.code)) {
|
|
30
|
+
this.logConnectionError(err);
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
if (this.suppressConnectionError(data)) {
|
|
34
|
+
this.events.emit("error" /* RepeaterServerEvents.ERROR */, {
|
|
35
|
+
...data,
|
|
36
|
+
message: err.message
|
|
37
|
+
});
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
if (this.connectionAttempts >= this.MAX_RECONNECTION_ATTEMPTS) {
|
|
41
|
+
this.events.emit("reconnection_failed" /* RepeaterServerEvents.RECONNECTION_FAILED */, {
|
|
42
|
+
error: err
|
|
43
|
+
});
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
// If the error is not related to the authentication, we should manually reconnect
|
|
47
|
+
this.scheduleReconnection();
|
|
48
|
+
};
|
|
49
|
+
this.handleConnect = () => {
|
|
50
|
+
this.connectionAttempts = 0;
|
|
51
|
+
this.clearConnectionTimer();
|
|
52
|
+
this.events.emit("connected" /* RepeaterServerEvents.CONNECTED */);
|
|
53
|
+
};
|
|
54
|
+
this.handleDisconnect = (reason) => {
|
|
55
|
+
this.clearPingTimer();
|
|
56
|
+
if (reason !== 'io client disconnect') {
|
|
57
|
+
this.events.emit("disconnected" /* RepeaterServerEvents.DISCONNECTED */);
|
|
58
|
+
}
|
|
59
|
+
// the disconnection was initiated by the server, you need to reconnect manually
|
|
60
|
+
if (reason === 'io server disconnect') {
|
|
61
|
+
this.socket.connect();
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
get socket() {
|
|
66
|
+
if (!this._socket) {
|
|
67
|
+
throw new Error('Please make sure that repeater established a connection with host.');
|
|
68
|
+
}
|
|
69
|
+
return this._socket;
|
|
70
|
+
}
|
|
71
|
+
disconnect() {
|
|
72
|
+
var _a, _b;
|
|
73
|
+
this.events.removeAllListeners();
|
|
74
|
+
this.clearPingTimer();
|
|
75
|
+
this.clearConnectionTimer();
|
|
76
|
+
(_a = this._socket) === null || _a === void 0 ? void 0 : _a.disconnect();
|
|
77
|
+
(_b = this._socket) === null || _b === void 0 ? void 0 : _b.removeAllListeners();
|
|
78
|
+
this._socket = undefined;
|
|
79
|
+
}
|
|
80
|
+
async deploy(options = {}) {
|
|
81
|
+
process.nextTick(() => this.socket.emit("deploy" /* SocketEvents.DEPLOY */, options));
|
|
82
|
+
const [result] = await Promise.race([
|
|
83
|
+
(0, events_1.once)(this.socket, "deployed" /* SocketEvents.DEPLOYED */),
|
|
84
|
+
new Promise((_, reject) => setTimeout(reject, this.MAX_DEPLOYMENT_TIMEOUT, new Error('No response.')).unref())
|
|
85
|
+
]);
|
|
86
|
+
this.createPingTimer();
|
|
87
|
+
return result;
|
|
88
|
+
}
|
|
89
|
+
async connect(namePrefix = (0, os_1.hostname)()) {
|
|
90
|
+
this._socket = (0, socket_io_client_1.default)(this.options.uri, {
|
|
91
|
+
parser: socket_io_msgpack_parser_1.default,
|
|
92
|
+
path: '/api/ws/v1',
|
|
93
|
+
transports: ['websocket'],
|
|
94
|
+
reconnectionAttempts: this.MAX_RECONNECTION_ATTEMPTS,
|
|
95
|
+
auth: {
|
|
96
|
+
domain: namePrefix + '123',
|
|
97
|
+
token: this.options.token
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
this.listenToReservedEvents();
|
|
101
|
+
this.listenToApplicationEvents();
|
|
102
|
+
await (0, events_1.once)(this.socket, 'connect');
|
|
103
|
+
this.logger.debug('Repeater connected to %s', this.options.uri);
|
|
104
|
+
}
|
|
105
|
+
off(event, handler) {
|
|
106
|
+
const wrappedHandler = this.handlerMap.get(handler);
|
|
107
|
+
if (wrappedHandler) {
|
|
108
|
+
this.events.off(event, wrappedHandler);
|
|
109
|
+
this.handlerMap.delete(handler);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
on(event, handler) {
|
|
113
|
+
const wrappedHandler = (...args) => this.wrapEventListener(event, handler, ...args);
|
|
114
|
+
this.handlerMap.set(handler, wrappedHandler);
|
|
115
|
+
this.events.on(event, wrappedHandler);
|
|
116
|
+
}
|
|
117
|
+
async wrapEventListener(event, handler, ...args) {
|
|
118
|
+
try {
|
|
119
|
+
const callback = this.extractLastArgument(args);
|
|
120
|
+
// eslint-disable-next-line @typescript-eslint/return-await
|
|
121
|
+
const response = await handler(...args);
|
|
122
|
+
callback === null || callback === void 0 ? void 0 : callback(response);
|
|
123
|
+
}
|
|
124
|
+
catch (err) {
|
|
125
|
+
this.handleEventError(err, event, args);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
extractLastArgument(args) {
|
|
129
|
+
const lastArg = args.pop();
|
|
130
|
+
if (typeof lastArg === 'function') {
|
|
131
|
+
return lastArg;
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
// If the last argument is not a function, add it back to the args array
|
|
135
|
+
args.push(lastArg);
|
|
136
|
+
return undefined;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
listenToApplicationEvents() {
|
|
140
|
+
this.socket.on("deployed" /* SocketEvents.DEPLOYED */, event => {
|
|
141
|
+
this.events.emit("deploy" /* RepeaterServerEvents.DEPLOY */, event);
|
|
142
|
+
});
|
|
143
|
+
this.socket.on("request" /* SocketEvents.REQUEST */, (event, callback) => this.events.emit("request" /* RepeaterServerEvents.REQUEST */, event, callback));
|
|
144
|
+
this.socket.on("error" /* SocketEvents.ERROR */, event => {
|
|
145
|
+
this.events.emit("error" /* RepeaterServerEvents.ERROR */, event);
|
|
146
|
+
});
|
|
147
|
+
this.socket.on("update-available" /* SocketEvents.UPDATE_AVAILABLE */, event => this.events.emit("update_available" /* RepeaterServerEvents.UPDATE_AVAILABLE */, event));
|
|
148
|
+
}
|
|
149
|
+
listenToReservedEvents() {
|
|
150
|
+
this.socket.on('connect', this.handleConnect);
|
|
151
|
+
this.socket.on('connect_error', this.handleConnectionError);
|
|
152
|
+
this.socket.on('disconnect', this.handleDisconnect);
|
|
153
|
+
this.socket.io.on('reconnect', () => {
|
|
154
|
+
this.latestReconnectionError = undefined;
|
|
155
|
+
});
|
|
156
|
+
this.socket.io.on('reconnect_error', error => (this.latestReconnectionError = error));
|
|
157
|
+
this.socket.io.on('reconnect_failed', () => this.events.emit("reconnection_failed" /* RepeaterServerEvents.RECONNECTION_FAILED */, {
|
|
158
|
+
error: this.latestReconnectionError
|
|
159
|
+
}));
|
|
160
|
+
this.socket.io.on('reconnect_attempt', attempt => this.events.emit("reconnect_attempt" /* RepeaterServerEvents.RECONNECT_ATTEMPT */, {
|
|
161
|
+
attempt,
|
|
162
|
+
maxAttempts: this.MAX_RECONNECTION_ATTEMPTS
|
|
163
|
+
}));
|
|
164
|
+
this.socket.io.on('reconnect', () => this.events.emit("reconnection_succeeded" /* RepeaterServerEvents.RECONNECTION_SUCCEEDED */));
|
|
165
|
+
}
|
|
166
|
+
suppressConnectionError(data) {
|
|
167
|
+
return [
|
|
168
|
+
RepeaterServer_1.RepeaterErrorCodes.REPEATER_UNAUTHORIZED,
|
|
169
|
+
RepeaterServer_1.RepeaterErrorCodes.REPEATER_NOT_PERMITTED
|
|
170
|
+
].includes(data.code);
|
|
171
|
+
}
|
|
172
|
+
scheduleReconnection() {
|
|
173
|
+
let delay = Math.max(this.MIN_RECONNECTION_DELAY * 2 ** this.connectionAttempts, this.MIN_RECONNECTION_DELAY);
|
|
174
|
+
delay += delay * 0.3 * Math.random();
|
|
175
|
+
delay = Math.min(delay, this.MAX_RECONNECTION_DELAY);
|
|
176
|
+
this.connectionAttempts++;
|
|
177
|
+
this.events.emit("reconnect_attempt" /* RepeaterServerEvents.RECONNECT_ATTEMPT */, {
|
|
178
|
+
attempt: this.connectionAttempts,
|
|
179
|
+
maxAttempts: this.MAX_RECONNECTION_ATTEMPTS
|
|
180
|
+
});
|
|
181
|
+
this.connectionTimer = setTimeout(() => this.socket.connect(), delay);
|
|
182
|
+
}
|
|
183
|
+
logConnectionError(err) {
|
|
184
|
+
var _a;
|
|
185
|
+
this.logger.debug('An error occurred while connecting to the repeater: %s', err.message);
|
|
186
|
+
const { description, cause } = err;
|
|
187
|
+
const nestedError = (_a = description === null || description === void 0 ? void 0 : description.error) !== null && _a !== void 0 ? _a : cause;
|
|
188
|
+
if (nestedError) {
|
|
189
|
+
this.logger.debug('The error cause: %s', nestedError.message);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
clearConnectionTimer() {
|
|
193
|
+
if (this.connectionTimer) {
|
|
194
|
+
clearTimeout(this.connectionTimer);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
handleEventError(error, event, args) {
|
|
198
|
+
this.logger.debug('An error occurred while processing the %s event with the following payload: %j', event, args);
|
|
199
|
+
this.logger.error('An error occurred', error);
|
|
200
|
+
}
|
|
201
|
+
createPingTimer() {
|
|
202
|
+
this.clearPingTimer();
|
|
203
|
+
this.pingTimer = setInterval(() => this.socket.volatile.emit("ping" /* SocketEvents.PING */), this.MAX_PING_INTERVAL).unref();
|
|
204
|
+
}
|
|
205
|
+
clearPingTimer() {
|
|
206
|
+
if (this.pingTimer) {
|
|
207
|
+
clearInterval(this.pingTimer);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
};
|
|
211
|
+
DefaultRepeaterServer = tslib_1.__decorate([
|
|
212
|
+
(0, tsyringe_1.scoped)(tsyringe_1.Lifecycle.ContainerScoped),
|
|
213
|
+
(0, tsyringe_1.injectable)(),
|
|
214
|
+
tslib_1.__param(1, (0, tsyringe_1.inject)(exports.DefaultRepeaterServerOptions)),
|
|
215
|
+
tslib_1.__metadata("design:paramtypes", [core_1.Logger, Object])
|
|
216
|
+
], DefaultRepeaterServer);
|
|
217
|
+
exports.DefaultRepeaterServer = DefaultRepeaterServer;
|
|
218
|
+
//# sourceMappingURL=DefaultRepeaterServer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DefaultRepeaterServer.js","sourceRoot":"","sources":["../../../../../packages/repeater/src/lib/DefaultRepeaterServer.ts"],"names":[],"mappings":";;;;AAAA,4BAA0B;AAC1B,qDAgB0B;AAC1B,0CAAyC;AACzC,uCAAiE;AACjE,gFAA8C;AAC9C,gGAA8C;AAC9C,mCAA4C;AAC5C,2BAA8B;AAUjB,QAAA,4BAA4B,GAAkB,MAAM,CAC/D,8BAA8B,CAC/B,CAAC;AAkCF,IAAa,qBAAqB,GAAlC,MAAa,qBAAqB;IA6BhC,YACmB,MAAc,EAEd,OAAqC;QAFrC,WAAM,GAAN,MAAM,CAAQ;QAEd,YAAO,GAAP,OAAO,CAA8B;QA/BvC,2BAAsB,GAAG,KAAM,CAAC;QAChC,sBAAiB,GAAG,KAAM,CAAC;QAC3B,8BAAyB,GAAG,EAAE,CAAC;QAC/B,2BAAsB,GAAG,IAAI,CAAC;QAC9B,2BAAsB,GAAG,QAAU,CAAC;QAM7C,uBAAkB,GAAG,CAAC,CAAC;QACvB,WAAM,GAAG,IAAI,qBAAY,EAAE,CAAC;QAEnB,eAAU,GAAG,IAAI,OAAO,EAGtC,CAAC;QAiKI,0BAAqB,GAAG,CAAC,GAAU,EAAE,EAAE;YAC7C,MAAM,EAAE,IAAI,EAAE,GAAG,GAEhB,CAAC;YAEF,mEAAmE;YACnE,IAAI,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,CAAA,EAAE;gBACf,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;gBAE7B,OAAO;aACR;YAED,IAAI,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE;gBACtC,IAAI,CAAC,MAAM,CAAC,IAAI,2CAA6B;oBAC3C,GAAG,IAAI;oBACP,OAAO,EAAE,GAAG,CAAC,OAAO;iBACrB,CAAC,CAAC;gBAEH,OAAO;aACR;YAED,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,yBAAyB,EAAE;gBAC7D,IAAI,CAAC,MAAM,CAAC,IAAI,uEAA2C;oBACzD,KAAK,EAAE,GAAG;iBAC8B,CAAC,CAAC;gBAE5C,OAAO;aACR;YAED,kFAAkF;YAClF,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC9B,CAAC,CAAC;QAqDM,kBAAa,GAAG,GAAG,EAAE;YAC3B,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;YAC5B,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,IAAI,CAAC,MAAM,CAAC,IAAI,kDAAgC,CAAC;QACnD,CAAC,CAAC;QAEM,qBAAgB,GAAG,CAAC,MAAc,EAAQ,EAAE;YAClD,IAAI,CAAC,cAAc,EAAE,CAAC;YAEtB,IAAI,MAAM,KAAK,sBAAsB,EAAE;gBACrC,IAAI,CAAC,MAAM,CAAC,IAAI,wDAAmC,CAAC;aACrD;YAED,gFAAgF;YAChF,IAAI,MAAM,KAAK,sBAAsB,EAAE;gBACrC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;aACvB;QACH,CAAC,CAAC;IAtPC,CAAC;IAdJ,IAAY,MAAM;QAChB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,MAAM,IAAI,KAAK,CACb,oEAAoE,CACrE,CAAC;SACH;QAED,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAQM,UAAU;;QACf,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;QACjC,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAE5B,MAAA,IAAI,CAAC,OAAO,0CAAE,UAAU,EAAE,CAAC;QAC3B,MAAA,IAAI,CAAC,OAAO,0CAAE,kBAAkB,EAAE,CAAC;QACnC,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;IAC3B,CAAC;IAEM,KAAK,CAAC,MAAM,CACjB,UAAgC,EAAE;QAElC,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,qCAAsB,OAAO,CAAC,CAAC,CAAC;QAEvE,MAAM,CAAC,MAAM,CAAC,GAAkC,MAAM,OAAO,CAAC,IAAI,CAAC;YACjE,IAAA,aAAI,EAAC,IAAI,CAAC,MAAM,yCAAwB;YACxC,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAC/B,UAAU,CACR,MAAM,EACN,IAAI,CAAC,sBAAsB,EAC3B,IAAI,KAAK,CAAC,cAAc,CAAC,CAC1B,CAAC,KAAK,EAAE,CACV;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,eAAe,EAAE,CAAC;QAEvB,OAAO,MAAM,CAAC;IAChB,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,aAAqB,IAAA,aAAQ,GAAE;QAClD,IAAI,CAAC,OAAO,GAAG,IAAA,0BAAE,EAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;YAClC,MAAM,EAAN,kCAAM;YACN,IAAI,EAAE,YAAY;YAClB,UAAU,EAAE,CAAC,WAAW,CAAC;YACzB,oBAAoB,EAAE,IAAI,CAAC,yBAAyB;YACpD,IAAI,EAAE;gBACJ,MAAM,EAAE,UAAU,GAAG,KAAK;gBAC1B,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;aAC1B;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,IAAI,CAAC,yBAAyB,EAAE,CAAC;QAEjC,MAAM,IAAA,aAAI,EAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAEnC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAClE,CAAC;IAEM,GAAG,CACR,KAAQ,EACR,OAAsC;QAEtC,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACpD,IAAI,cAAc,EAAE;YAClB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;YACvC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;SACjC;IACH,CAAC;IAEM,EAAE,CACP,KAAQ,EACR,OAAsC;QAEtC,MAAM,cAAc,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE,CAC5C,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;QAClD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;IACxC,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAC7B,KAAa,EACb,OAAuC,EACvC,GAAG,IAAe;QAElB,IAAI;YACF,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;YAEhD,2DAA2D;YAC3D,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAI,IAAc,CAAC,CAAC;YAEnD,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAG,QAAQ,CAAC,CAAC;SACtB;QAAC,OAAO,GAAG,EAAE;YACZ,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;SACzC;IACH,CAAC;IAEO,mBAAmB,CAAC,IAAe;QACzC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC3B,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE;YACjC,OAAO,OAA2B,CAAC;SACpC;aAAM;YACL,wEAAwE;YACxE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAEnB,OAAO,SAAS,CAAC;SAClB;IACH,CAAC;IAEO,yBAAyB;QAC/B,IAAI,CAAC,MAAM,CAAC,EAAE,yCAAwB,KAAK,CAAC,EAAE;YAC5C,IAAI,CAAC,MAAM,CAAC,IAAI,6CAA8B,KAAK,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,EAAE,uCAAuB,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,CACvD,IAAI,CAAC,MAAM,CAAC,IAAI,+CAA+B,KAAK,EAAE,QAAQ,CAAC,CAChE,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,EAAE,mCAAqB,KAAK,CAAC,EAAE;YACzC,IAAI,CAAC,MAAM,CAAC,IAAI,2CAA6B,KAAK,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,EAAE,yDAAgC,KAAK,CAAC,EAAE,CACpD,IAAI,CAAC,MAAM,CAAC,IAAI,iEAAwC,KAAK,CAAC,CAC/D,CAAC;IACJ,CAAC;IAEO,sBAAsB;QAC5B,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAC9C,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,eAAe,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAC5D,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACpD,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE;YAClC,IAAI,CAAC,uBAAuB,GAAG,SAAS,CAAC;QAC3C,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CACf,iBAAiB,EACjB,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC,CAChD,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,kBAAkB,EAAE,GAAG,EAAE,CACzC,IAAI,CAAC,MAAM,CAAC,IAAI,uEAA2C;YACzD,KAAK,EAAE,IAAI,CAAC,uBAAuB;SACK,CAAC,CAC5C,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,mBAAmB,EAAE,OAAO,CAAC,EAAE,CAC/C,IAAI,CAAC,MAAM,CAAC,IAAI,mEAAyC;YACvD,OAAO;YACP,WAAW,EAAE,IAAI,CAAC,yBAAyB;SACA,CAAC,CAC/C,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE,CAClC,IAAI,CAAC,MAAM,CAAC,IAAI,4EAA6C,CAC9D,CAAC;IACJ,CAAC;IAmCO,uBAAuB,CAC7B,IAAmD;QAEnD,OAAO;YACL,mCAAkB,CAAC,qBAAqB;YACxC,mCAAkB,CAAC,sBAAsB;SAC1C,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAEO,oBAAoB;QAC1B,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAClB,IAAI,CAAC,sBAAsB,GAAG,CAAC,IAAI,IAAI,CAAC,kBAAkB,EAC1D,IAAI,CAAC,sBAAsB,CAC5B,CAAC;QACF,KAAK,IAAI,KAAK,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACrC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAErD,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAE1B,IAAI,CAAC,MAAM,CAAC,IAAI,mEAAyC;YACvD,OAAO,EAAE,IAAI,CAAC,kBAAkB;YAChC,WAAW,EAAE,IAAI,CAAC,yBAAyB;SACA,CAAC,CAAC;QAC/C,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC;IACxE,CAAC;IAEO,kBAAkB,CAAC,GAAU;;QACnC,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,wDAAwD,EACxD,GAAG,CAAC,OAAO,CACZ,CAAC;QAEF,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,GAK9B,CAAC;QACF,MAAM,WAAW,GAAG,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,KAAK,mCAAI,KAAK,CAAC;QAEhD,IAAI,WAAW,EAAE;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;SAC/D;IACH,CAAC;IAEO,oBAAoB;QAC1B,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;SACpC;IACH,CAAC;IAqBO,gBAAgB,CAAC,KAAY,EAAE,KAAa,EAAE,IAAe;QACnE,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,gFAAgF,EAChF,KAAK,EACL,IAAI,CACL,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;IAEO,eAAe;QACrB,IAAI,CAAC,cAAc,EAAE,CAAC;QAEtB,IAAI,CAAC,SAAS,GAAG,WAAW,CAC1B,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,gCAAmB,EAClD,IAAI,CAAC,iBAAiB,CACvB,CAAC,KAAK,EAAE,CAAC;IACZ,CAAC;IAEO,cAAc;QACpB,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SAC/B;IACH,CAAC;CACF,CAAA;AAhTY,qBAAqB;IAFjC,IAAA,iBAAM,EAAC,oBAAS,CAAC,eAAe,CAAC;IACjC,IAAA,qBAAU,GAAE;IAgCR,mBAAA,IAAA,iBAAM,EAAC,oCAA4B,CAAC,CAAA;6CADZ,aAAM;GA9BtB,qBAAqB,CAgTjC;AAhTY,sDAAqB"}
|
package/src/lib/Repeater.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { RepeaterServer } from './RepeaterServer';
|
|
2
|
+
import { RepeaterCommands } from './RepeaterCommands';
|
|
3
|
+
import { Logger } from '@sectester/core';
|
|
2
4
|
export declare enum RunningStatus {
|
|
3
5
|
OFF = 0,
|
|
4
6
|
STARTING = 1,
|
|
@@ -8,23 +10,24 @@ export declare type RepeaterId = string;
|
|
|
8
10
|
export declare const RepeaterId: unique symbol;
|
|
9
11
|
export declare class Repeater {
|
|
10
12
|
readonly repeaterId: RepeaterId;
|
|
11
|
-
private readonly bus;
|
|
12
|
-
private readonly configuration;
|
|
13
13
|
private readonly logger;
|
|
14
|
-
private
|
|
14
|
+
private readonly repeaterServer;
|
|
15
|
+
private readonly repeaterCommands;
|
|
15
16
|
private _runningStatus;
|
|
16
17
|
get runningStatus(): RunningStatus;
|
|
17
|
-
constructor(
|
|
18
|
-
repeaterId: RepeaterId;
|
|
19
|
-
bus: EventBus;
|
|
20
|
-
configuration: Configuration;
|
|
21
|
-
});
|
|
18
|
+
constructor(repeaterId: RepeaterId, logger: Logger, repeaterServer: RepeaterServer, repeaterCommands: RepeaterCommands);
|
|
22
19
|
start(): Promise<void>;
|
|
23
20
|
stop(): Promise<void>;
|
|
24
|
-
private
|
|
25
|
-
private
|
|
26
|
-
private
|
|
27
|
-
private
|
|
28
|
-
private
|
|
29
|
-
private
|
|
21
|
+
private connect;
|
|
22
|
+
private deploy;
|
|
23
|
+
private subscribeConnectedEvent;
|
|
24
|
+
private subscribeDiagnosticEvents;
|
|
25
|
+
private handleError;
|
|
26
|
+
private normalizeMessage;
|
|
27
|
+
private isCriticalError;
|
|
28
|
+
private handleCriticalError;
|
|
29
|
+
private upgradeAvailable;
|
|
30
|
+
private reconnectAttempt;
|
|
31
|
+
private reconnectionFailed;
|
|
32
|
+
private requestReceived;
|
|
30
33
|
}
|