@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.
Files changed (90) hide show
  1. package/README.md +3 -3
  2. package/package.json +11 -11
  3. package/src/api/DefaultRepeatersManager.js +1 -1
  4. package/src/api/DefaultRepeatersManager.js.map +1 -1
  5. package/src/api/commands/CreateRepeaterRequest.d.ts +1 -1
  6. package/src/api/commands/CreateRepeaterRequest.js +2 -2
  7. package/src/api/commands/CreateRepeaterRequest.js.map +1 -1
  8. package/src/api/commands/DeleteRepeaterRequest.d.ts +1 -1
  9. package/src/api/commands/DeleteRepeaterRequest.js +2 -2
  10. package/src/api/commands/DeleteRepeaterRequest.js.map +1 -1
  11. package/src/api/commands/GetRepeaterRequest.d.ts +1 -1
  12. package/src/api/commands/GetRepeaterRequest.js +2 -2
  13. package/src/api/commands/GetRepeaterRequest.js.map +1 -1
  14. package/src/api/commands/index.d.ts +0 -1
  15. package/src/api/commands/index.js +1 -4
  16. package/src/api/commands/index.js.map +1 -1
  17. package/src/api/index.d.ts +0 -3
  18. package/src/api/index.js +0 -7
  19. package/src/api/index.js.map +1 -1
  20. package/src/index.d.ts +1 -1
  21. package/src/index.js +1 -2
  22. package/src/index.js.map +1 -1
  23. package/src/lib/DefaultRepeaterCommands.d.ts +7 -0
  24. package/src/lib/DefaultRepeaterCommands.js +26 -0
  25. package/src/lib/DefaultRepeaterCommands.js.map +1 -0
  26. package/src/lib/DefaultRepeaterServer.d.ts +57 -0
  27. package/src/lib/DefaultRepeaterServer.js +218 -0
  28. package/src/lib/DefaultRepeaterServer.js.map +1 -0
  29. package/src/lib/Repeater.d.ts +18 -15
  30. package/src/lib/Repeater.js +90 -62
  31. package/src/lib/Repeater.js.map +1 -1
  32. package/src/lib/RepeaterCommands.d.ts +5 -0
  33. package/src/lib/RepeaterCommands.js +5 -0
  34. package/src/lib/RepeaterCommands.js.map +1 -0
  35. package/src/lib/RepeaterFactory.d.ts +3 -4
  36. package/src/lib/RepeaterFactory.js +18 -35
  37. package/src/lib/RepeaterFactory.js.map +1 -1
  38. package/src/lib/RepeaterServer.d.ts +92 -0
  39. package/src/lib/RepeaterServer.js +15 -0
  40. package/src/lib/RepeaterServer.js.map +1 -0
  41. package/src/lib/index.d.ts +8 -5
  42. package/src/lib/index.js +9 -7
  43. package/src/lib/index.js.map +1 -1
  44. package/src/models/Protocol.d.ts +1 -2
  45. package/src/models/Protocol.js +0 -1
  46. package/src/models/Protocol.js.map +1 -1
  47. package/src/register.js +15 -18
  48. package/src/register.js.map +1 -1
  49. package/src/request-runner/Request.d.ts +13 -9
  50. package/src/request-runner/Request.js +9 -19
  51. package/src/request-runner/Request.js.map +1 -1
  52. package/src/request-runner/Response.d.ts +5 -3
  53. package/src/request-runner/Response.js +2 -1
  54. package/src/request-runner/Response.js.map +1 -1
  55. package/src/request-runner/protocols/HttpRequestRunner.d.ts +9 -7
  56. package/src/request-runner/protocols/HttpRequestRunner.js +100 -88
  57. package/src/request-runner/protocols/HttpRequestRunner.js.map +1 -1
  58. package/src/request-runner/protocols/index.d.ts +0 -1
  59. package/src/request-runner/protocols/index.js +0 -1
  60. package/src/request-runner/protocols/index.js.map +1 -1
  61. package/src/utils/DefaultProxyFactory.d.ts +20 -0
  62. package/src/utils/DefaultProxyFactory.js +66 -0
  63. package/src/utils/DefaultProxyFactory.js.map +1 -0
  64. package/src/utils/NormalizeZlibDeflateTransformStream.d.ts +8 -0
  65. package/src/utils/NormalizeZlibDeflateTransformStream.js +25 -0
  66. package/src/utils/NormalizeZlibDeflateTransformStream.js.map +1 -0
  67. package/src/utils/PatchedHttpsProxyAgent.d.ts +14 -0
  68. package/src/utils/PatchedHttpsProxyAgent.js +17 -0
  69. package/src/utils/PatchedHttpsProxyAgent.js.map +1 -0
  70. package/src/utils/ProxyFactory.d.ts +19 -0
  71. package/src/utils/ProxyFactory.js +5 -0
  72. package/src/utils/ProxyFactory.js.map +1 -0
  73. package/src/utils/index.d.ts +3 -0
  74. package/src/utils/index.js +7 -0
  75. package/src/utils/index.js.map +1 -0
  76. package/src/api/ExecuteRequestEventHandler.d.ts +0 -24
  77. package/src/api/ExecuteRequestEventHandler.js +0 -37
  78. package/src/api/ExecuteRequestEventHandler.js.map +0 -1
  79. package/src/api/commands/RegisterRepeaterCommand.d.ts +0 -22
  80. package/src/api/commands/RegisterRepeaterCommand.js +0 -18
  81. package/src/api/commands/RegisterRepeaterCommand.js.map +0 -1
  82. package/src/api/events/RepeaterStatusEvent.d.ts +0 -10
  83. package/src/api/events/RepeaterStatusEvent.js +0 -11
  84. package/src/api/events/RepeaterStatusEvent.js.map +0 -1
  85. package/src/api/events/index.d.ts +0 -1
  86. package/src/api/events/index.js +0 -5
  87. package/src/api/events/index.js.map +0 -1
  88. package/src/request-runner/protocols/WsRequestRunner.d.ts +0 -24
  89. package/src/request-runner/protocols/WsRequestRunner.js +0 -149
  90. 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` register `ExecuteRequestEventHandler` in bus,
173
- which in turn uses the `RequestRunner` to proceed with request:
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 both HTTP and WS protocols.
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.27.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
- "reflect-metadata": "^0.1.13",
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
- "amqplib": "^0.10.3",
53
- "semver": "^7.5.2",
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
- async deleteRepeater(repeaterId) {
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;QAEF,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,KAAK,CAAC,cAAc,CAAC,UAAkB;QAC5C,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,CACnC,IAAI,gCAAqB,CAAC,EAAE,UAAU,EAAE,CAAC,CAC1C,CAAC;IACJ,CAAC;CACF,CAAA;AA/CY,uBAAuB;IADnC,IAAA,qBAAU,GAAE;IAGR,mBAAA,IAAA,iBAAM,EAAC,wBAAiB,CAAC,CAAA;;GAFjB,uBAAuB,CA+CnC;AA/CY,0DAAuB"}
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,4 +1,4 @@
1
- import { HttpRequest } from '@sectester/bus';
1
+ import { HttpRequest } from '@sectester/core';
2
2
  export interface CreateRepeaterRequestPayload {
3
3
  name: string;
4
4
  description?: string;
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.CreateRepeaterRequest = void 0;
4
- const bus_1 = require("@sectester/bus");
5
- class CreateRepeaterRequest extends bus_1.HttpRequest {
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,wCAA6C;AAY7C,MAAa,qBAAsB,SAAQ,iBAG1C;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
+ {"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,4 +1,4 @@
1
- import { HttpRequest } from '@sectester/bus';
1
+ import { HttpRequest } from '@sectester/core';
2
2
  export declare class DeleteRepeaterRequest extends HttpRequest {
3
3
  constructor(payload: {
4
4
  repeaterId: string;
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DeleteRepeaterRequest = void 0;
4
- const bus_1 = require("@sectester/bus");
5
- class DeleteRepeaterRequest extends bus_1.HttpRequest {
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,wCAA6C;AAE7C,MAAa,qBAAsB,SAAQ,iBAAW;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
+ {"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,4 +1,4 @@
1
- import { HttpRequest } from '@sectester/bus';
1
+ import { HttpRequest } from '@sectester/core';
2
2
  export interface GetRepeaterResponsePayload {
3
3
  id: string;
4
4
  name: string;
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.GetRepeaterRequest = void 0;
4
- const bus_1 = require("@sectester/bus");
5
- class GetRepeaterRequest extends bus_1.HttpRequest {
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,wCAA6C;AAQ7C,MAAa,kBAAmB,SAAQ,iBAGvC;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
+ {"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.RepeaterRegisteringError = exports.RegisterRepeaterCommand = exports.GetRepeaterRequest = exports.DeleteRepeaterRequest = exports.CreateRepeaterRequest = void 0;
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;AAC3B,qEAKmC;AAJjC,kIAAA,uBAAuB,OAAA;AAGvB,mIAAA,wBAAwB,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"}
@@ -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
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/repeater/src/api/index.ts"],"names":[],"mappings":";;;;AAAA,uCAKoB;AAJlB,oHAAA,wBAAwB,OAAA;AAGxB,mHAAA,uBAAuB,OAAA;AAEzB,mCAA+C;AAAtC,6GAAA,mBAAmB,OAAA;AAC5B,6DAAmC;AACnC,oEAA0C;AAC1C,uEAA6C"}
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, ExecuteRequestEventHandler, ExecuteRequestPayload, ExecuteRequestResult } from './api';
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.ExecuteRequestEventHandler = exports.RepeatersManager = void 0;
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;AAEpB,6BAKe;AAJb,uGAAA,gBAAgB,OAAA;AAChB,iHAAA,0BAA0B,OAAA;AAI5B,gDAAsB;AACtB,mDAAyB;AACzB,2DAAiC"}
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":"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"}
@@ -1,4 +1,6 @@
1
- import { Configuration, EventBus } from '@sectester/core';
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 timer?;
14
+ private readonly repeaterServer;
15
+ private readonly repeaterCommands;
15
16
  private _runningStatus;
16
17
  get runningStatus(): RunningStatus;
17
- constructor({ repeaterId, bus, configuration }: {
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 register;
25
- private subscribeToEvents;
26
- private schedulePing;
27
- private sendStatus;
28
- private handleRegisterResult;
29
- private handleRegisterError;
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
  }