thor-io.vnext 2.0.6 → 3.1.0-beta.1

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 (178) hide show
  1. package/.gitattributes +17 -17
  2. package/{index.d.ts → build/index.d.ts} +11 -8
  3. package/build/index.js +47 -0
  4. package/build/src/Connection/ClientInfo.d.ts +27 -0
  5. package/{src → build/src}/Connection/ClientInfo.js +7 -0
  6. package/build/src/Connection/Connection.d.ts +117 -0
  7. package/build/src/Connection/Connection.js +202 -0
  8. package/build/src/Connection/IClientInfo.d.ts +20 -0
  9. package/build/src/Controller/ControllerBase.d.ts +134 -0
  10. package/build/src/Controller/ControllerBase.js +543 -0
  11. package/build/src/Controller/Subscription.d.ts +27 -0
  12. package/build/src/Controller/Subscription.js +22 -0
  13. package/build/src/Controllers/BrokerController/Broker.js +145 -0
  14. package/build/src/Controllers/BrokerController/BrokerController.d.ts +61 -0
  15. package/build/src/Controllers/BrokerController/BrokerController.js +115 -0
  16. package/{src/Controllers/BrokerController/Broker.js → build/src/Controllers/BrokerController/BrokerrController.js} +74 -85
  17. package/build/src/Controllers/BrokerController/Models/PeerConnection.d.ts +7 -0
  18. package/build/src/Controllers/BrokerController/Models/PeerConnection.js +14 -0
  19. package/build/src/Controllers/BrokerController/Models/Signal.js +11 -0
  20. package/build/src/Decorators/CanInvoke.d.ts +10 -0
  21. package/build/src/Decorators/CanInvoke.js +22 -0
  22. package/build/src/Decorators/CanSet.d.ts +10 -0
  23. package/build/src/Decorators/CanSet.js +20 -0
  24. package/build/src/Decorators/ControllerProperties.d.ts +10 -0
  25. package/build/src/Decorators/ControllerProperties.js +20 -0
  26. package/build/src/Interfaces/IInterceptor.js +2 -0
  27. package/build/src/Interfaces/ITransport.d.ts +94 -0
  28. package/build/src/Interfaces/ITransportMessage.d.ts +41 -0
  29. package/build/src/Messages/BufferMessage.d.ts +38 -0
  30. package/{src → build/src}/Messages/BufferMessage.js +32 -2
  31. package/build/src/Messages/ErrorMessage.d.ts +29 -0
  32. package/build/src/Messages/ErrorMessage.js +22 -0
  33. package/build/src/Messages/PipeMessage.d.ts +46 -0
  34. package/build/src/Messages/PipeMessage.js +41 -0
  35. package/build/src/Messages/TextMessage.d.ts +88 -0
  36. package/build/src/Messages/TextMessage.js +94 -0
  37. package/build/src/Messages/WebSocketMessage.d.ts +34 -0
  38. package/build/src/Messages/WebSocketMessage.js +41 -0
  39. package/build/src/Plugin.js +32 -0
  40. package/build/src/Server/Plugin.d.ts +37 -0
  41. package/build/src/Server/Plugin.js +32 -0
  42. package/build/src/Server/ThorIOServer.d.ts +68 -0
  43. package/build/src/Server/ThorIOServer.js +131 -0
  44. package/build/src/Subscription.js +22 -0
  45. package/build/src/ThorIO.js +142 -0
  46. package/build/src/ThorIOServer.d.ts +64 -0
  47. package/build/src/ThorIOServer.js +131 -0
  48. package/build/src/Transports/BufferMessageTransport.d.ts +78 -0
  49. package/build/src/Transports/BufferMessageTransport.js +85 -0
  50. package/build/src/Transports/PipeMessageTransport.d.ts +79 -0
  51. package/build/src/Transports/PipeMessageTransport.js +90 -0
  52. package/build/src/Transports/WebSocketMessageTransport.d.ts +87 -0
  53. package/build/src/Transports/WebSocketMessageTransport.js +93 -0
  54. package/build/src/Utils/BufferUtils.d.ts +32 -0
  55. package/build/src/Utils/BufferUtils.js +57 -0
  56. package/build/src/Utils/StringUtils.d.ts +15 -0
  57. package/build/src/Utils/StringUtils.js +31 -0
  58. package/build/src/test.js +5 -0
  59. package/docs/.nojekyll +1 -0
  60. package/docs/assets/hierarchy.js +1 -0
  61. package/docs/assets/highlight.css +43 -0
  62. package/docs/assets/icons.js +18 -0
  63. package/docs/assets/icons.svg +1 -0
  64. package/docs/assets/main.js +60 -0
  65. package/docs/assets/navigation.js +1 -0
  66. package/docs/assets/search.js +1 -0
  67. package/docs/assets/style.css +1610 -0
  68. package/docs/classes/BrokerController.html +164 -0
  69. package/docs/classes/BufferMessage.html +11 -0
  70. package/docs/classes/BufferMessageTransport.html +31 -0
  71. package/docs/classes/BufferUtils.html +16 -0
  72. package/docs/classes/ClientInfo.html +11 -0
  73. package/docs/classes/Connection.html +42 -0
  74. package/docs/classes/ControllerBase.html +144 -0
  75. package/docs/classes/ErrorMessage.html +13 -0
  76. package/docs/classes/PeerConnection.html +4 -0
  77. package/docs/classes/PipeMessage.html +17 -0
  78. package/docs/classes/PipeMessageTransport.html +33 -0
  79. package/docs/classes/Plugin.html +13 -0
  80. package/docs/classes/Signal.html +5 -0
  81. package/docs/classes/StringUtils.html +9 -0
  82. package/docs/classes/Subscription.html +11 -0
  83. package/docs/classes/TextMessage.html +37 -0
  84. package/docs/classes/ThorIOServer.html +25 -0
  85. package/docs/classes/WebSocketMessage.html +18 -0
  86. package/docs/classes/WebSocketMessageTransport.html +35 -0
  87. package/docs/functions/CanInvoke.html +5 -0
  88. package/docs/functions/CanSet.html +5 -0
  89. package/docs/functions/ControllerProperties.html +5 -0
  90. package/docs/hierarchy.html +1 -0
  91. package/docs/index.html +24 -0
  92. package/docs/interfaces/ITransport.html +46 -0
  93. package/docs/interfaces/ITransportMessage.html +21 -0
  94. package/docs/modules.html +1 -0
  95. package/index.ts +32 -35
  96. package/licence +21 -21
  97. package/package.json +48 -49
  98. package/readme.md +32 -71
  99. package/src/Connection/ClientInfo.ts +34 -37
  100. package/src/Connection/Connection.ts +229 -278
  101. package/src/Connection/IClientInfo.ts +22 -0
  102. package/src/Controller/ControllerBase.ts +561 -458
  103. package/src/{Subscription.ts → Controller/Subscription.ts} +32 -34
  104. package/src/Controllers/BrokerController/BrokerController.ts +121 -0
  105. package/src/Controllers/BrokerController/Models/PeerConnection.ts +12 -34
  106. package/src/Controllers/BrokerController/Models/Signal.ts +11 -43
  107. package/src/Decorators/CanInvoke.ts +21 -13
  108. package/src/Decorators/CanSet.ts +19 -12
  109. package/src/Decorators/ControllerProperties.ts +19 -16
  110. package/src/Interfaces/ITransport.ts +107 -23
  111. package/src/Interfaces/ITransportMessage.ts +45 -41
  112. package/src/Messages/BufferMessage.ts +70 -69
  113. package/src/Messages/ErrorMessage.ts +34 -6
  114. package/src/Messages/PipeMessage.ts +56 -62
  115. package/src/Messages/TextMessage.ts +139 -93
  116. package/src/Messages/WebSocketMessage.ts +39 -41
  117. package/src/Server/Plugin.ts +56 -0
  118. package/src/Server/ThorIOServer.ts +121 -0
  119. package/src/ThorIOServer.ts +117 -0
  120. package/src/Transports/BufferMessageTransport.ts +109 -100
  121. package/src/Transports/PipeMessageTransport.ts +112 -104
  122. package/src/Transports/WebSocketMessageTransport.ts +122 -110
  123. package/src/Utils/BufferUtils.ts +55 -61
  124. package/src/Utils/StringUtils.ts +28 -17
  125. package/tsconfig.json +109 -18
  126. package/typedoc.json +6 -0
  127. package/index.js +0 -40
  128. package/src/Connection/ClientInfo.d.ts +0 -6
  129. package/src/Connection/Connection.d.ts +0 -24
  130. package/src/Connection/Connection.js +0 -129
  131. package/src/Controller/ControllerBase.d.ts +0 -43
  132. package/src/Controller/ControllerBase.js +0 -331
  133. package/src/Controllers/BrokerController/Broker.d.ts +0 -21
  134. package/src/Controllers/BrokerController/Broker.ts +0 -153
  135. package/src/Controllers/BrokerController/Models/PeerConnection.d.ts +0 -5
  136. package/src/Controllers/BrokerController/Models/PeerConnection.js +0 -9
  137. package/src/Controllers/BrokerController/Models/Signal.js +0 -10
  138. package/src/Decorators/CanInvoke.d.ts +0 -2
  139. package/src/Decorators/CanInvoke.js +0 -9
  140. package/src/Decorators/CanSet.d.ts +0 -1
  141. package/src/Decorators/CanSet.js +0 -8
  142. package/src/Decorators/ControllerProperties.d.ts +0 -1
  143. package/src/Decorators/ControllerProperties.js +0 -10
  144. package/src/Interfaces/IInterceptor.d.ts +0 -2
  145. package/src/Interfaces/IInterceptor.ts +0 -2
  146. package/src/Interfaces/ITransport.d.ts +0 -18
  147. package/src/Interfaces/ITransportMessage.d.ts +0 -8
  148. package/src/Messages/BufferMessage.d.ts +0 -10
  149. package/src/Messages/ErrorMessage.d.ts +0 -4
  150. package/src/Messages/ErrorMessage.js +0 -8
  151. package/src/Messages/PipeMessage.d.ts +0 -12
  152. package/src/Messages/PipeMessage.js +0 -20
  153. package/src/Messages/TextMessage.d.ts +0 -15
  154. package/src/Messages/TextMessage.js +0 -50
  155. package/src/Messages/WebSocketMessage.d.ts +0 -10
  156. package/src/Messages/WebSocketMessage.js +0 -15
  157. package/src/Plugin.d.ts +0 -6
  158. package/src/Plugin.js +0 -11
  159. package/src/Plugin.ts +0 -37
  160. package/src/Subscription.d.ts +0 -5
  161. package/src/Subscription.js +0 -9
  162. package/src/ThorIO.d.ts +0 -19
  163. package/src/ThorIO.js +0 -67
  164. package/src/ThorIO.ts +0 -153
  165. package/src/Transports/BufferMessageTransport.d.ts +0 -21
  166. package/src/Transports/BufferMessageTransport.js +0 -31
  167. package/src/Transports/PipeMessageTransport.d.ts +0 -20
  168. package/src/Transports/PipeMessageTransport.js +0 -33
  169. package/src/Transports/WebSocketMessageTransport.d.ts +0 -20
  170. package/src/Transports/WebSocketMessageTransport.js +0 -31
  171. package/src/Utils/BufferUtils.d.ts +0 -5
  172. package/src/Utils/BufferUtils.js +0 -29
  173. package/src/Utils/StringUtils.d.ts +0 -4
  174. package/src/Utils/StringUtils.js +0 -13
  175. /package/{src/Interfaces/IInterceptor.js → build/src/Connection/IClientInfo.js} +0 -0
  176. /package/{src → build/src}/Controllers/BrokerController/Models/Signal.d.ts +0 -0
  177. /package/{src → build/src}/Interfaces/ITransport.js +0 -0
  178. /package/{src → build/src}/Interfaces/ITransportMessage.js +0 -0
@@ -1,10 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- class Signal {
4
- constructor(recipient, sender, message) {
5
- this.recipient = recipient;
6
- this.sender = sender;
7
- this.message = message;
8
- }
9
- }
10
- exports.Signal = Signal;
@@ -1,2 +0,0 @@
1
- import 'reflect-metadata';
2
- export declare function CanInvoke(state: boolean, alias?: string): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => void;
@@ -1,9 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- require("reflect-metadata");
4
- function CanInvoke(state, alias) {
5
- return function (target, propertyKey, descriptor) {
6
- Reflect.defineMetadata("canInvokeOrSet", state, target, propertyKey);
7
- };
8
- }
9
- exports.CanInvoke = CanInvoke;
@@ -1 +0,0 @@
1
- export declare function CanSet(state: boolean): (target: Object, propertyKey: string) => void;
@@ -1,8 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- function CanSet(state) {
4
- return function (target, propertyKey) {
5
- Reflect.defineMetadata("canInvokeOrSet", state, target, propertyKey);
6
- };
7
- }
8
- exports.CanSet = CanSet;
@@ -1 +0,0 @@
1
- export declare function ControllerProperties(alias: string, seald?: boolean, heartbeatInterval?: number): (target: Function) => void;
@@ -1,10 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- function ControllerProperties(alias, seald, heartbeatInterval) {
4
- return function (target) {
5
- Reflect.defineMetadata("seald", seald || false, target);
6
- Reflect.defineMetadata("alias", alias, target);
7
- Reflect.defineMetadata("heartbeatInterval", heartbeatInterval || -1, target);
8
- };
9
- }
10
- exports.ControllerProperties = ControllerProperties;
@@ -1,2 +0,0 @@
1
- export interface IInterceptor {
2
- }
@@ -1,2 +0,0 @@
1
- export interface IInterceptor {
2
- }
@@ -1,18 +0,0 @@
1
- /// <reference types="node" />
2
- import { ITransportMessage } from "./ITransportMessage";
3
- import { IInterceptor } from "./IInterceptor";
4
- import { IncomingMessage } from 'http';
5
- export interface ITransport {
6
- id: string;
7
- socket: any;
8
- readyState: number;
9
- send(data: any): void;
10
- close(reason: number, message: any): void;
11
- addEventListener(topic: string, fn: Function): void;
12
- ping(): void;
13
- onMessage: (message: ITransportMessage) => void;
14
- onClose: (e: any) => void;
15
- onOpen: (e: any) => void;
16
- interceptors: Map<string, IInterceptor>;
17
- request: IncomingMessage | any;
18
- }
@@ -1,8 +0,0 @@
1
- /// <reference types="node" />
2
- import { TextMessage } from "../Messages/TextMessage";
3
- export interface ITransportMessage {
4
- toMessage(): TextMessage;
5
- toBuffer(message?: TextMessage): Buffer;
6
- binary: boolean;
7
- data: any;
8
- }
@@ -1,10 +0,0 @@
1
- /// <reference types="node" />
2
- import { TextMessage } from './TextMessage';
3
- import { ITransportMessage } from '../Interfaces/ITransportMessage';
4
- export declare class BufferMessage implements ITransportMessage {
5
- data: Buffer;
6
- binary: boolean;
7
- constructor(data: Buffer, binary: boolean);
8
- toMessage(): TextMessage;
9
- toBuffer(): Buffer;
10
- }
@@ -1,4 +0,0 @@
1
- export declare class ErrorMessage {
2
- message: string;
3
- constructor(message: string);
4
- }
@@ -1,8 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- class ErrorMessage {
4
- constructor(message) {
5
- this.message = message;
6
- }
7
- }
8
- exports.ErrorMessage = ErrorMessage;
@@ -1,12 +0,0 @@
1
- /// <reference types="node" />
2
- import { TextMessage } from './TextMessage';
3
- import { ITransportMessage } from '../Interfaces/ITransportMessage';
4
- export declare class PipeMessage implements ITransportMessage {
5
- data: any;
6
- binary: boolean;
7
- private message;
8
- private arr;
9
- constructor(data: any, binary: boolean);
10
- toBuffer(): Buffer;
11
- toMessage(): TextMessage;
12
- }
@@ -1,20 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- class PipeMessage {
4
- constructor(data, binary) {
5
- this.data = data;
6
- this.binary = binary;
7
- this.message = JSON.parse(this.data);
8
- this.arr = new Array();
9
- this.arr.push(this.message.C);
10
- this.arr.push(this.message.T);
11
- this.arr.push(this.message.D);
12
- }
13
- toBuffer() {
14
- return new Buffer(this.arr.join("|"));
15
- }
16
- toMessage() {
17
- return this.message;
18
- }
19
- }
20
- exports.PipeMessage = PipeMessage;
@@ -1,15 +0,0 @@
1
- /// <reference types="node" />
2
- export declare class TextMessage {
3
- B: Buffer;
4
- T: string;
5
- D: any;
6
- C: string;
7
- isBinary: Boolean;
8
- I: string;
9
- F: boolean;
10
- get JSON(): any;
11
- constructor(topic: string, data: any, controller: string, arrayBuffer?: Buffer, uuid?: string, isFinal?: boolean);
12
- toString(): string;
13
- static fromArrayBuffer(buffer: Buffer): TextMessage;
14
- toArrayBuffer(): Buffer;
15
- }
@@ -1,50 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const BufferUtils_1 = require("../Utils/BufferUtils");
4
- const thor_io_client_vnext_1 = require("thor-io.client-vnext");
5
- class TextMessage {
6
- constructor(topic, data, controller, arrayBuffer, uuid, isFinal) {
7
- this.D = data;
8
- this.T = topic;
9
- this.C = controller;
10
- this.B = arrayBuffer;
11
- this.I = uuid || thor_io_client_vnext_1.Utils.newGuid();
12
- this.F = true;
13
- if (arrayBuffer)
14
- this.isBinary = true;
15
- }
16
- get JSON() {
17
- return {
18
- T: this.T,
19
- D: JSON.stringify(this.D),
20
- C: this.C,
21
- I: this.I,
22
- F: this.F
23
- };
24
- }
25
- ;
26
- toString() {
27
- return JSON.stringify(this.JSON);
28
- }
29
- static fromArrayBuffer(buffer) {
30
- let headerLen = 8;
31
- let header = buffer.slice(0, 8);
32
- let payloadLength = BufferUtils_1.BufferUtils.arrayToLong(header);
33
- let message = buffer.slice(headerLen, payloadLength + headerLen);
34
- let blobOffset = headerLen + payloadLength;
35
- let blob = buffer.slice(blobOffset, buffer.byteLength);
36
- let data = JSON.parse(message.toString());
37
- return new TextMessage(data.T, data.D, data.C, blob, data.I, data.F);
38
- }
39
- toArrayBuffer() {
40
- let messagePayload = this.toString();
41
- let payloadLength = messagePayload.length;
42
- let header = new Buffer(BufferUtils_1.BufferUtils.longToArray(payloadLength));
43
- let message = new Buffer(payloadLength);
44
- message.write(messagePayload, 0, payloadLength, "utf-8");
45
- var blob = new Buffer(this.B);
46
- var buffer = Buffer.concat([header, message, blob]);
47
- return buffer;
48
- }
49
- }
50
- exports.TextMessage = TextMessage;
@@ -1,10 +0,0 @@
1
- /// <reference types="node" />
2
- import { TextMessage } from './TextMessage';
3
- import { ITransportMessage } from '../Interfaces/ITransportMessage';
4
- export declare class WebSocketMessage implements ITransportMessage {
5
- data: string;
6
- binary: any;
7
- constructor(data: string, binary: any);
8
- toBuffer(): Buffer;
9
- toMessage(): TextMessage;
10
- }
@@ -1,15 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- class WebSocketMessage {
4
- constructor(data, binary) {
5
- this.data = data;
6
- this.binary = binary;
7
- }
8
- toBuffer() {
9
- throw "not yet implemented";
10
- }
11
- toMessage() {
12
- return JSON.parse(this.data);
13
- }
14
- }
15
- exports.WebSocketMessage = WebSocketMessage;
package/src/Plugin.d.ts DELETED
@@ -1,6 +0,0 @@
1
- export declare class Plugin<T> {
2
- alias: string;
3
- instance: T;
4
- id: string;
5
- constructor(controller: T);
6
- }
package/src/Plugin.js DELETED
@@ -1,11 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const StringUtils_1 = require("./Utils/StringUtils");
4
- class Plugin {
5
- constructor(controller) {
6
- this.id = StringUtils_1.StringUtils.newGuid();
7
- this.alias = Reflect.getMetadata("alias", controller);
8
- this.instance = controller;
9
- }
10
- }
11
- exports.Plugin = Plugin;
package/src/Plugin.ts DELETED
@@ -1,37 +0,0 @@
1
- import { StringUtils } from './Utils/StringUtils';
2
- /**
3
- *
4
- *
5
- * @export
6
- * @class Plugin
7
- * @template T
8
- */
9
- export class Plugin<T> {
10
- /**
11
- *
12
- *
13
- * @type {string}
14
- * @memberOf Plugin
15
- */
16
- public alias: string;
17
- /**
18
- *
19
- *
20
- * @type {T}
21
- * @memberOf Plugin
22
- */
23
- public instance: T;
24
- id: string;
25
- /**
26
- * Creates an instance of Plugin.
27
- *
28
- * @param {T} controller
29
- *
30
- * @memberOf Plugin
31
- */
32
- constructor(controller: T) {
33
- this.id = StringUtils.newGuid()
34
- this.alias = Reflect.getMetadata("alias", controller);
35
- this.instance = controller;
36
- }
37
- }
@@ -1,5 +0,0 @@
1
- export declare class Subscription {
2
- topic: string;
3
- controller: string;
4
- constructor(topic: string, controller: string);
5
- }
@@ -1,9 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- class Subscription {
4
- constructor(topic, controller) {
5
- this.topic = topic;
6
- this.controller = controller;
7
- }
8
- }
9
- exports.Subscription = Subscription;
package/src/ThorIO.d.ts DELETED
@@ -1,19 +0,0 @@
1
- /// <reference types="node" />
2
- import { ITransport } from "./Interfaces/ITransport";
3
- import * as net from 'net';
4
- export declare class ThorIO {
5
- private controllers;
6
- private connections;
7
- private endpoints;
8
- interceptors: any;
9
- static createInstance(controllers: any): ThorIO;
10
- P: any;
11
- constructor(controllers: Array<any>);
12
- createSealdControllers(): void;
13
- removeConnection(id: string, reason: number): void;
14
- addEndpoint(typeOfTransport: {
15
- new (...args: any[]): ITransport;
16
- }, host: string, port: number): net.Server;
17
- addWebSocket(ws: any, req: any): void;
18
- private addConnection;
19
- }
package/src/ThorIO.js DELETED
@@ -1,67 +0,0 @@
1
- "use strict";
2
- var __importStar = (this && this.__importStar) || function (mod) {
3
- if (mod && mod.__esModule) return mod;
4
- var result = {};
5
- if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
6
- result["default"] = mod;
7
- return result;
8
- };
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- const Plugin_1 = require("./Plugin");
11
- const WebSocketMessageTransport_1 = require("./Transports/WebSocketMessageTransport");
12
- const net = __importStar(require("net"));
13
- const Connection_1 = require("./Connection/Connection");
14
- class ThorIO {
15
- constructor(controllers) {
16
- this.endpoints = new Array();
17
- this.connections = new Map();
18
- this.controllers = new Array();
19
- controllers.forEach((ctrl) => {
20
- if (!Reflect.hasOwnMetadata("alias", ctrl)) {
21
- throw "Faild to register on of the specified Controller's";
22
- }
23
- let plugin = new Plugin_1.Plugin(ctrl);
24
- this.controllers.push(plugin);
25
- });
26
- }
27
- static createInstance(controllers) {
28
- return new ThorIO(controllers);
29
- }
30
- createSealdControllers() {
31
- this.controllers.forEach((controller) => {
32
- if (Reflect.getMetadata("seald", controller.instance)) {
33
- new controller.instance(new Connection_1.Connection(null, this.connections, this.controllers));
34
- }
35
- });
36
- }
37
- removeConnection(id, reason) {
38
- try {
39
- this.connections.delete(id);
40
- }
41
- catch (error) {
42
- }
43
- }
44
- addEndpoint(typeOfTransport, host, port) {
45
- let endpoint = net.createServer((socket) => {
46
- let transport = new typeOfTransport(socket);
47
- this.addConnection(transport);
48
- });
49
- endpoint.listen(port, host, ((listener) => {
50
- }));
51
- this.endpoints.push(endpoint);
52
- return endpoint;
53
- }
54
- addWebSocket(ws, req) {
55
- let transport = new WebSocketMessageTransport_1.WebSocketMessageTransport(ws, req);
56
- this.addConnection(transport);
57
- }
58
- addConnection(transport) {
59
- transport.addEventListener("close", (reason) => {
60
- if (transport.onClose)
61
- transport.onClose(reason);
62
- this.removeConnection(transport.id, reason);
63
- });
64
- this.connections.set(transport.id, new Connection_1.Connection(transport, this.connections, this.controllers));
65
- }
66
- }
67
- exports.ThorIO = ThorIO;
package/src/ThorIO.ts DELETED
@@ -1,153 +0,0 @@
1
- import { Plugin } from './Plugin';
2
- import { WebSocketMessageTransport } from "./Transports/WebSocketMessageTransport";
3
- import { ITransport } from "./Interfaces/ITransport";
4
- import * as net from 'net';
5
- import { ControllerBase } from "./Controller/ControllerBase";
6
- import { Connection } from './Connection/Connection';
7
-
8
- /**
9
- * Creates an hosting container / hug
10
- *
11
- * @export
12
- * @class ThorIO
13
- */
14
- export class ThorIO {
15
- /**
16
- *
17
- *
18
- * @private
19
- * @type {Array<Plugin<IController>>}
20
- * @memberOf ThorIO
21
- */
22
- private controllers: Array<Plugin<ControllerBase>>;
23
- /**
24
- *
25
- *
26
- * @private
27
- * @type {Array<Connection>}
28
- * @memberOf ThorIO
29
- */
30
- private connections: Map<string,Connection>;
31
- /**
32
- *
33
- *
34
- * @private
35
- * @type {Array<net.Server>}
36
- * @memberOf ThorIO
37
- */
38
- private endpoints: Array<net.Server>;
39
- interceptors: any;
40
-
41
-
42
- static createInstance(controllers):ThorIO{
43
- return new ThorIO(controllers)
44
- }
45
- P
46
- /**
47
- * Creates an instance of ThorIO.
48
- *
49
- * @param {Array<any>} controllers
50
- *
51
- * @memberOf ThorIO
52
- */
53
- constructor(controllers: Array<any>) {
54
- this.endpoints = new Array<net.Server>();
55
- this.connections = new Map<string,Connection>();
56
- this.controllers = new Array<Plugin<ControllerBase>>();
57
-
58
-
59
- controllers.forEach((ctrl: ControllerBase) => {
60
- if (!Reflect.hasOwnMetadata("alias", ctrl)) {
61
- throw "Faild to register on of the specified Controller's";
62
- }
63
- let plugin = new Plugin<ControllerBase>(ctrl);
64
- this.controllers.push(plugin);
65
- });
66
- }
67
- /**
68
- *
69
- *
70
- * @public
71
- *
72
- * @memberOf ThorIO
73
- */
74
- public createSealdControllers() {
75
- this.controllers.forEach((controller: Plugin<ControllerBase>) => {
76
- if (Reflect.getMetadata("seald", controller.instance)) {
77
- new controller.instance(new Connection(null,
78
- this.connections, this.controllers));
79
- }
80
- });
81
- }
82
- /**
83
- *
84
- *
85
- * @param {string} id
86
- * @param {number} reason
87
- *
88
- * @memberOf ThorIO
89
- */
90
- removeConnection(id: string, reason: number): void {
91
- try {
92
- this.connections.delete(id);
93
- }
94
- catch (error) {
95
- }
96
- }
97
- /**
98
- *
99
- *
100
- * @param {{ new (...args: any[]): ITransport; }} typeOfTransport
101
- * @param {string} host
102
- * @param {number} port
103
- * @returns {net.Server}
104
- *
105
- * @memberOf ThorIO
106
- */
107
- addEndpoint(typeOfTransport: {
108
- new(...args: any[]): ITransport;
109
- }, host: string, port: number): net.Server {
110
- /**
111
- *
112
- *
113
- * @param {net.Socket} socket
114
- */
115
- let endpoint = net.createServer((socket: net.Socket) => {
116
- let transport = new typeOfTransport(socket);
117
- this.addConnection(transport);
118
- });
119
- endpoint.listen(port, host, ((listener: any) => {
120
- // do op
121
- }));
122
- this.endpoints.push(endpoint);
123
- return endpoint;
124
- }
125
- /**
126
- *
127
- *
128
- * @param {*} ws
129
- * @param {*} req
130
- *
131
- * @memberOf ThorIO
132
- */
133
- addWebSocket(ws: any, req: any): void {
134
- let transport = new WebSocketMessageTransport(ws,req);
135
- this.addConnection(transport);
136
- }
137
- /**
138
- *
139
- *
140
- * @private
141
- * @param {ITransport} transport
142
- *
143
- * @memberOf ThorIO
144
- */
145
- private addConnection(transport: ITransport): void {
146
- transport.addEventListener("close", (reason) => {
147
- if(transport.onClose)
148
- transport.onClose(reason);
149
- this.removeConnection(transport.id, reason);
150
- });
151
- this.connections.set(transport.id,new Connection(transport, this.connections, this.controllers));
152
- }
153
- }
@@ -1,21 +0,0 @@
1
- /// <reference types="node" />
2
- import * as net from 'net';
3
- import { ITransport } from '../Interfaces/ITransport';
4
- import { ITransportMessage } from '../Interfaces/ITransportMessage';
5
- import { IInterceptor } from '../Interfaces/IInterceptor';
6
- import { IncomingMessage } from 'http';
7
- export declare class BufferMessageTransport implements ITransport {
8
- socket: net.Socket;
9
- id: string;
10
- onMessage: (messsage: ITransportMessage) => void;
11
- constructor(socket: net.Socket);
12
- request: IncomingMessage | any;
13
- interceptors: Map<string, IInterceptor>;
14
- onClose: () => void;
15
- onOpen: () => void;
16
- get readyState(): number;
17
- send(data: string): void;
18
- addEventListener(name: string, fn: any): void;
19
- ping(): void;
20
- close(): void;
21
- }
@@ -1,31 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const BufferMessage_1 = require("../Messages/BufferMessage");
4
- const StringUtils_1 = require("../Utils/StringUtils");
5
- class BufferMessageTransport {
6
- constructor(socket) {
7
- this.socket = socket;
8
- this.id = StringUtils_1.StringUtils.newGuid();
9
- this.socket.addListener("data", (buffer) => {
10
- let bm = new BufferMessage_1.BufferMessage(buffer, false);
11
- this.onMessage(bm);
12
- });
13
- }
14
- get readyState() {
15
- return 1;
16
- }
17
- send(data) {
18
- let bm = new BufferMessage_1.BufferMessage(new Buffer(data), false);
19
- this.socket.write(bm.toBuffer());
20
- }
21
- addEventListener(name, fn) {
22
- this.socket.addListener(name, fn);
23
- }
24
- ping() {
25
- return;
26
- }
27
- close() {
28
- this.socket.destroy();
29
- }
30
- }
31
- exports.BufferMessageTransport = BufferMessageTransport;
@@ -1,20 +0,0 @@
1
- /// <reference types="node" />
2
- import { ITransport } from '../Interfaces/ITransport';
3
- import { PipeMessage } from '../Messages/PipeMessage';
4
- import * as net from 'net';
5
- import { IInterceptor } from '../Interfaces/IInterceptor';
6
- export declare class PipeMessageTransport implements ITransport {
7
- socket: net.Socket;
8
- id: string;
9
- onMessage: (message: PipeMessage) => void;
10
- send(data: any): void;
11
- close(reason: number, message: any): void;
12
- addEventListener(name: string, fn: any): void;
13
- get readyState(): number;
14
- ping(): void;
15
- constructor(socket: net.Socket);
16
- request: any;
17
- interceptors: Map<string, IInterceptor>;
18
- onClose: () => void;
19
- onOpen: () => void;
20
- }