@liphium/neoroute-ts 0.1.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 (145) hide show
  1. package/.prettierignore +5 -0
  2. package/.prettierrc +8 -0
  3. package/.zed/settings.json +3 -0
  4. package/dist/client.d.ts +8 -0
  5. package/dist/client.d.ts.map +1 -0
  6. package/dist/client.js +15 -0
  7. package/dist/client.js.map +1 -0
  8. package/dist/config.d.ts +5 -0
  9. package/dist/config.d.ts.map +1 -0
  10. package/dist/config.js +2 -0
  11. package/dist/config.js.map +1 -0
  12. package/dist/examples/http_client/src/main.d.ts +2 -0
  13. package/dist/examples/http_client/src/main.d.ts.map +1 -0
  14. package/dist/examples/http_client/src/main.js +51 -0
  15. package/dist/examples/http_client/src/main.js.map +1 -0
  16. package/dist/examples/http_client/src/messages.d.ts +9 -0
  17. package/dist/examples/http_client/src/messages.d.ts.map +1 -0
  18. package/dist/examples/http_client/src/messages.js +2 -0
  19. package/dist/examples/http_client/src/messages.js.map +1 -0
  20. package/dist/examples/http_client/src/requests.d.ts +5 -0
  21. package/dist/examples/http_client/src/requests.d.ts.map +1 -0
  22. package/dist/examples/http_client/src/requests.js +56 -0
  23. package/dist/examples/http_client/src/requests.js.map +1 -0
  24. package/dist/examples/web_socket_client/src/main.d.ts +2 -0
  25. package/dist/examples/web_socket_client/src/main.d.ts.map +1 -0
  26. package/dist/examples/web_socket_client/src/main.js +59 -0
  27. package/dist/examples/web_socket_client/src/main.js.map +1 -0
  28. package/dist/examples/web_socket_client/src/messages.d.ts +14 -0
  29. package/dist/examples/web_socket_client/src/messages.d.ts.map +1 -0
  30. package/dist/examples/web_socket_client/src/messages.js +3 -0
  31. package/dist/examples/web_socket_client/src/messages.js.map +1 -0
  32. package/dist/examples/web_socket_client/src/receiver.d.ts +3 -0
  33. package/dist/examples/web_socket_client/src/receiver.d.ts.map +1 -0
  34. package/dist/examples/web_socket_client/src/receiver.js +8 -0
  35. package/dist/examples/web_socket_client/src/receiver.js.map +1 -0
  36. package/dist/examples/web_socket_client/src/requests.d.ts +4 -0
  37. package/dist/examples/web_socket_client/src/requests.d.ts.map +1 -0
  38. package/dist/examples/web_socket_client/src/requests.js +32 -0
  39. package/dist/examples/web_socket_client/src/requests.js.map +1 -0
  40. package/dist/index.d.ts +11 -0
  41. package/dist/index.d.ts.map +1 -0
  42. package/dist/index.js +11 -0
  43. package/dist/index.js.map +1 -0
  44. package/dist/interfaces.d.ts +24 -0
  45. package/dist/interfaces.d.ts.map +1 -0
  46. package/dist/interfaces.js +7 -0
  47. package/dist/interfaces.js.map +1 -0
  48. package/dist/logger.d.ts +9 -0
  49. package/dist/logger.d.ts.map +1 -0
  50. package/dist/logger.js +11 -0
  51. package/dist/logger.js.map +1 -0
  52. package/dist/receiver.d.ts +12 -0
  53. package/dist/receiver.d.ts.map +1 -0
  54. package/dist/receiver.js +49 -0
  55. package/dist/receiver.js.map +1 -0
  56. package/dist/sender.d.ts +26 -0
  57. package/dist/sender.d.ts.map +1 -0
  58. package/dist/sender.js +135 -0
  59. package/dist/sender.js.map +1 -0
  60. package/dist/src/client.d.ts +8 -0
  61. package/dist/src/client.d.ts.map +1 -0
  62. package/dist/src/client.js +15 -0
  63. package/dist/src/client.js.map +1 -0
  64. package/dist/src/config.d.ts +5 -0
  65. package/dist/src/config.d.ts.map +1 -0
  66. package/dist/src/config.js +2 -0
  67. package/dist/src/config.js.map +1 -0
  68. package/dist/src/index.d.ts +11 -0
  69. package/dist/src/index.d.ts.map +1 -0
  70. package/dist/src/index.js +11 -0
  71. package/dist/src/index.js.map +1 -0
  72. package/dist/src/interfaces.d.ts +24 -0
  73. package/dist/src/interfaces.d.ts.map +1 -0
  74. package/dist/src/interfaces.js +7 -0
  75. package/dist/src/interfaces.js.map +1 -0
  76. package/dist/src/logger.d.ts +9 -0
  77. package/dist/src/logger.d.ts.map +1 -0
  78. package/dist/src/logger.js +11 -0
  79. package/dist/src/logger.js.map +1 -0
  80. package/dist/src/receiver.d.ts +12 -0
  81. package/dist/src/receiver.d.ts.map +1 -0
  82. package/dist/src/receiver.js +49 -0
  83. package/dist/src/receiver.js.map +1 -0
  84. package/dist/src/sender.d.ts +26 -0
  85. package/dist/src/sender.d.ts.map +1 -0
  86. package/dist/src/sender.js +135 -0
  87. package/dist/src/sender.js.map +1 -0
  88. package/dist/src/transporter/transporter_http.d.ts +6 -0
  89. package/dist/src/transporter/transporter_http.d.ts.map +1 -0
  90. package/dist/src/transporter/transporter_http.js +30 -0
  91. package/dist/src/transporter/transporter_http.js.map +1 -0
  92. package/dist/src/transporter/transporter_websocket.d.ts +17 -0
  93. package/dist/src/transporter/transporter_websocket.d.ts.map +1 -0
  94. package/dist/src/transporter/transporter_websocket.js +93 -0
  95. package/dist/src/transporter/transporter_websocket.js.map +1 -0
  96. package/dist/src/user_error.d.ts +4 -0
  97. package/dist/src/user_error.d.ts.map +1 -0
  98. package/dist/src/user_error.js +11 -0
  99. package/dist/src/user_error.js.map +1 -0
  100. package/dist/src/util.d.ts +9 -0
  101. package/dist/src/util.d.ts.map +1 -0
  102. package/dist/src/util.js +42 -0
  103. package/dist/src/util.js.map +1 -0
  104. package/dist/transporter/transporter_http.d.ts +6 -0
  105. package/dist/transporter/transporter_http.d.ts.map +1 -0
  106. package/dist/transporter/transporter_http.js +30 -0
  107. package/dist/transporter/transporter_http.js.map +1 -0
  108. package/dist/transporter/transporter_websocket.d.ts +17 -0
  109. package/dist/transporter/transporter_websocket.d.ts.map +1 -0
  110. package/dist/transporter/transporter_websocket.js +93 -0
  111. package/dist/transporter/transporter_websocket.js.map +1 -0
  112. package/dist/user_error.d.ts +4 -0
  113. package/dist/user_error.d.ts.map +1 -0
  114. package/dist/user_error.js +11 -0
  115. package/dist/user_error.js.map +1 -0
  116. package/dist/util.d.ts +9 -0
  117. package/dist/util.d.ts.map +1 -0
  118. package/dist/util.js +42 -0
  119. package/dist/util.js.map +1 -0
  120. package/examples/http_client/package.json +20 -0
  121. package/examples/http_client/src/main.ts +59 -0
  122. package/examples/http_client/src/messages.ts +9 -0
  123. package/examples/http_client/src/requests.ts +64 -0
  124. package/examples/http_client/tsconfig.json +44 -0
  125. package/examples/web_socket_client/package.json +20 -0
  126. package/examples/web_socket_client/src/main.ts +72 -0
  127. package/examples/web_socket_client/src/messages.ts +22 -0
  128. package/examples/web_socket_client/src/receiver.ts +8 -0
  129. package/examples/web_socket_client/src/requests.ts +51 -0
  130. package/examples/web_socket_client/tsconfig.json +44 -0
  131. package/package.json +36 -0
  132. package/pnpm-workspace.yaml +5 -0
  133. package/readme.md +49 -0
  134. package/src/client.ts +17 -0
  135. package/src/config.ts +4 -0
  136. package/src/index.ts +13 -0
  137. package/src/interfaces.ts +31 -0
  138. package/src/logger.ts +18 -0
  139. package/src/receiver.ts +56 -0
  140. package/src/sender.ts +203 -0
  141. package/src/transporter/transporter_http.ts +37 -0
  142. package/src/transporter/transporter_websocket.ts +115 -0
  143. package/src/user_error.ts +21 -0
  144. package/src/util.ts +58 -0
  145. package/tsconfig.json +44 -0
package/dist/sender.js ADDED
@@ -0,0 +1,135 @@
1
+ import { decode, encode } from '@msgpack/msgpack';
2
+ import { MessageType, } from './interfaces.js';
3
+ import { logger } from './logger.js';
4
+ import { marshalRequestData, unmarshalResponseData, withTimeout, } from './util.js';
5
+ import { UserError } from './user_error.js';
6
+ export class Sender {
7
+ config;
8
+ sendFunc;
9
+ requestId = 0;
10
+ // Maps a request ID to a resolve function to fulfill the promise
11
+ waiters = new Map();
12
+ constructor(config) {
13
+ this.config = config;
14
+ if (!this.config.requestTimeout) {
15
+ this.config.requestTimeout = 5000; // default timeout 5 seconds
16
+ }
17
+ }
18
+ getRequestId() {
19
+ this.requestId++;
20
+ return this.requestId;
21
+ }
22
+ setSendFunc(sendFunc) {
23
+ this.sendFunc = sendFunc;
24
+ }
25
+ handle(reqData) {
26
+ let message;
27
+ try {
28
+ message = decode(reqData);
29
+ }
30
+ catch (error) {
31
+ logger.info('failed to unmarshal message', error);
32
+ return;
33
+ }
34
+ if (message.type === MessageType.Response) {
35
+ this.handleResponse(message.data);
36
+ }
37
+ else {
38
+ this.handleOther(message);
39
+ }
40
+ }
41
+ handleResponse(respBytes) {
42
+ let resp;
43
+ try {
44
+ resp = decode(respBytes);
45
+ }
46
+ catch (error) {
47
+ logger.info('failed to unmarshal response', error);
48
+ return;
49
+ }
50
+ if (resp.id === -1 && resp.error) {
51
+ const decoder = new TextDecoder();
52
+ this.config.errorHandler(new Error(decoder.decode(resp.data)));
53
+ return;
54
+ }
55
+ const resolveFunc = this.waiters.get(resp.id);
56
+ if (!resolveFunc) {
57
+ logger.info('received response for non existing waiter', resp.id);
58
+ return;
59
+ }
60
+ resolveFunc(resp);
61
+ }
62
+ handleOther(message) {
63
+ logger.info('received unsupported message type', message.type);
64
+ }
65
+ removeResponseWaiter(requestId) {
66
+ this.waiters.delete(requestId);
67
+ }
68
+ async sendRequest(route, reqData, wantResponse) {
69
+ const reqId = this.getRequestId();
70
+ if (!this.sendFunc) {
71
+ throw new Error('sendFunc is not set');
72
+ }
73
+ const req = {
74
+ id: reqId,
75
+ route: route,
76
+ data: reqData,
77
+ };
78
+ let reqBytes;
79
+ try {
80
+ reqBytes = encode(req);
81
+ }
82
+ catch (err) {
83
+ throw new Error(`failed to marshal request: ${err}`);
84
+ }
85
+ let respPromise = Promise.resolve({});
86
+ if (wantResponse) {
87
+ respPromise = new Promise((resolve) => {
88
+ this.waiters.set(reqId, resolve);
89
+ });
90
+ }
91
+ await this.sendFunc(reqBytes);
92
+ return { promise: respPromise, reqId: reqId };
93
+ }
94
+ getConfig() {
95
+ return this.config;
96
+ }
97
+ /// Internal helper for making send functions easier to write.
98
+ async sendInternal(route, req, waitForResponse) {
99
+ const { promise: respPromise, reqId } = await this.sendRequest(route, req != undefined ? marshalRequestData(req) : new Uint8Array(), true);
100
+ // When we want to wait for response, properly serialize it
101
+ if (waitForResponse) {
102
+ const timeout = this.config.requestTimeout ?? 5000;
103
+ const res = await withTimeout(respPromise, timeout);
104
+ this.removeResponseWaiter(reqId);
105
+ if (res.error) {
106
+ const decoder = new TextDecoder();
107
+ return new UserError(decoder.decode(res.data));
108
+ }
109
+ return unmarshalResponseData(res.data);
110
+ }
111
+ else {
112
+ // Otherwise signal that nothing will be waited for
113
+ return undefined;
114
+ }
115
+ }
116
+ send(route, req) {
117
+ return this.sendInternal(route, req, true);
118
+ }
119
+ sendOk(route, req) {
120
+ return this.sendInternal(route, req, true);
121
+ }
122
+ async sendOkNoRequest(route) {
123
+ return this.sendInternal(route, undefined, false);
124
+ }
125
+ async sendNoRequest(route) {
126
+ return this.sendInternal(route, undefined, true);
127
+ }
128
+ async sendNoResponse(route, req) {
129
+ await this.sendInternal(route, req, false);
130
+ }
131
+ async sendPing(route) {
132
+ await this.sendInternal(route, undefined, false);
133
+ }
134
+ }
135
+ //# sourceMappingURL=sender.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sender.js","sourceRoot":"","sources":["../src/sender.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export declare class Ctx {
2
+ private _data;
3
+ private _name;
4
+ constructor(data: Uint8Array, name: string);
5
+ data(): Uint8Array;
6
+ name(): string;
7
+ }
8
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAAA,qBAAa,GAAG;IACf,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,KAAK,CAAS;gBAEV,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM;IAKnC,IAAI,IAAI,UAAU;IAIlB,IAAI,IAAI,MAAM;CAGrB"}
@@ -0,0 +1,15 @@
1
+ export class Ctx {
2
+ _data;
3
+ _name;
4
+ constructor(data, name) {
5
+ this._data = data;
6
+ this._name = name;
7
+ }
8
+ data() {
9
+ return this._data;
10
+ }
11
+ name() {
12
+ return this._name;
13
+ }
14
+ }
15
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG;IACP,KAAK,CAAa;IAClB,KAAK,CAAS;IAEtB,YAAY,IAAgB,EAAE,IAAY;QACzC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACnB,CAAC;IAEM,IAAI;QACV,OAAO,IAAI,CAAC,KAAK,CAAC;IACnB,CAAC;IAEM,IAAI;QACV,OAAO,IAAI,CAAC,KAAK,CAAC;IACnB,CAAC;CACD"}
@@ -0,0 +1,5 @@
1
+ export interface Config {
2
+ errorHandler: (error: Error) => void;
3
+ requestTimeout?: number;
4
+ }
5
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,MAAM;IACtB,YAAY,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACrC,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":""}
@@ -0,0 +1,11 @@
1
+ export * from './interfaces.js';
2
+ export * from './config.js';
3
+ export * from './logger.js';
4
+ export * from './client.js';
5
+ export * from './sender.js';
6
+ export * from './receiver.js';
7
+ export * from './util.js';
8
+ export * from './user_error.js';
9
+ export * from './transporter/transporter_http.js';
10
+ export * from './transporter/transporter_websocket.js';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAE5B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAE1B,cAAc,iBAAiB,CAAC;AAEhC,cAAc,mCAAmC,CAAC;AAClD,cAAc,wCAAwC,CAAC"}
@@ -0,0 +1,11 @@
1
+ export * from './interfaces.js';
2
+ export * from './config.js';
3
+ export * from './logger.js';
4
+ export * from './client.js';
5
+ export * from './sender.js';
6
+ export * from './receiver.js';
7
+ export * from './util.js';
8
+ export * from './user_error.js';
9
+ export * from './transporter/transporter_http.js';
10
+ export * from './transporter/transporter_websocket.js';
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAE5B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAE1B,cAAc,iBAAiB,CAAC;AAEhC,cAAc,mCAAmC,CAAC;AAClD,cAAc,wCAAwC,CAAC"}
@@ -0,0 +1,24 @@
1
+ export declare enum MessageType {
2
+ Response = 0,
3
+ Event = 1
4
+ }
5
+ export interface Message {
6
+ type: MessageType;
7
+ data: Uint8Array;
8
+ }
9
+ export interface Event {
10
+ name: string;
11
+ data: Uint8Array;
12
+ }
13
+ export interface Response {
14
+ id: number;
15
+ has_data: boolean;
16
+ error: boolean;
17
+ data: Uint8Array;
18
+ }
19
+ export interface Request {
20
+ id: number;
21
+ route: string;
22
+ data: Uint8Array;
23
+ }
24
+ //# sourceMappingURL=interfaces.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":"AAEA,oBAAY,WAAW;IACtB,QAAQ,IAAA;IACR,KAAK,IAAA;CACL;AAED,MAAM,WAAW,OAAO;IACvB,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE,UAAU,CAAC;CACjB;AAED,MAAM,WAAW,KAAK;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,CAAC;CACjB;AAED,MAAM,WAAW,QAAQ;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,UAAU,CAAC;CACjB;AAID,MAAM,WAAW,OAAO;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,UAAU,CAAC;CACjB"}
@@ -0,0 +1,7 @@
1
+ // Incoming messages
2
+ export var MessageType;
3
+ (function (MessageType) {
4
+ MessageType[MessageType["Response"] = 0] = "Response";
5
+ MessageType[MessageType["Event"] = 1] = "Event";
6
+ })(MessageType || (MessageType = {}));
7
+ //# sourceMappingURL=interfaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":"AAAA,oBAAoB;AAEpB,MAAM,CAAN,IAAY,WAGX;AAHD,WAAY,WAAW;IACtB,qDAAQ,CAAA;IACR,+CAAK,CAAA;AACN,CAAC,EAHW,WAAW,KAAX,WAAW,QAGtB"}
@@ -0,0 +1,9 @@
1
+ export interface Logger {
2
+ debug(msg: string, ...args: any[]): void;
3
+ info(msg: string, ...args: any[]): void;
4
+ warn(msg: string, ...args: any[]): void;
5
+ error(msg: string, ...args: any[]): void;
6
+ }
7
+ export declare let logger: Logger;
8
+ export declare function setLogger(l: Logger): void;
9
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/logger.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,MAAM;IACtB,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACzC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACxC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACxC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;CACzC;AAGD,eAAO,IAAI,MAAM,EAAE,MAKlB,CAAC;AAEF,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,QAElC"}
@@ -0,0 +1,11 @@
1
+ // Default logger falls back to the standard console
2
+ export let logger = {
3
+ debug: console.debug,
4
+ info: console.info,
5
+ warn: console.warn,
6
+ error: console.error,
7
+ };
8
+ export function setLogger(l) {
9
+ logger = l;
10
+ }
11
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/logger.ts"],"names":[],"mappings":"AAOA,oDAAoD;AACpD,MAAM,CAAC,IAAI,MAAM,GAAW;IAC3B,KAAK,EAAE,OAAO,CAAC,KAAK;IACpB,IAAI,EAAE,OAAO,CAAC,IAAI;IAClB,IAAI,EAAE,OAAO,CAAC,IAAI;IAClB,KAAK,EAAE,OAAO,CAAC,KAAK;CACpB,CAAC;AAEF,MAAM,UAAU,SAAS,CAAC,CAAS;IAClC,MAAM,GAAG,CAAC,CAAC;AACZ,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { Ctx } from './client.js';
2
+ import type { Config } from './config.js';
3
+ import { Sender } from './sender.js';
4
+ import { type Message } from './interfaces.js';
5
+ export declare class Receiver extends Sender {
6
+ private receiver;
7
+ constructor(config: Config);
8
+ protected handleOther(message: Message): void;
9
+ private handleEvent;
10
+ receive<E>(eventName: string, handleFunc: (c: Ctx, data: E) => void): void;
11
+ }
12
+ //# sourceMappingURL=receiver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"receiver.d.ts","sourceRoot":"","sources":["../../src/receiver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAA2B,KAAK,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAGxE,qBAAa,QAAS,SAAQ,MAAM;IACnC,OAAO,CAAC,QAAQ,CAA4C;gBAEhD,MAAM,EAAE,MAAM;cAIP,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAQtD,OAAO,CAAC,WAAW;IAoBZ,OAAO,CAAC,CAAC,EACf,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,KAAK,IAAI,GACnC,IAAI;CAUP"}
@@ -0,0 +1,49 @@
1
+ import { decode } from '@msgpack/msgpack';
2
+ import { Ctx } from './client.js';
3
+ import { Sender } from './sender.js';
4
+ import { MessageType } from './interfaces.js';
5
+ import { logger } from './logger.js';
6
+ export class Receiver extends Sender {
7
+ receiver = new Map();
8
+ constructor(config) {
9
+ super(config);
10
+ }
11
+ handleOther(message) {
12
+ if (message.type === MessageType.Event) {
13
+ this.handleEvent(message.data);
14
+ }
15
+ else {
16
+ super.handleOther(message);
17
+ }
18
+ }
19
+ handleEvent(eventBytes) {
20
+ let ev;
21
+ try {
22
+ ev = decode(eventBytes);
23
+ }
24
+ catch (error) {
25
+ logger.info('failed to unmarshal event', error);
26
+ return;
27
+ }
28
+ const receiverFunc = this.receiver.get(ev.name);
29
+ if (!receiverFunc) {
30
+ logger.info('received event for non existing receiver', ev.name);
31
+ return;
32
+ }
33
+ const c = new Ctx(ev.data, ev.name);
34
+ receiverFunc(c);
35
+ }
36
+ /// Handle receiving of an event. Only one handleFunc can exist at the same time.
37
+ receive(eventName, handleFunc) {
38
+ this.receiver.set(eventName, (c) => {
39
+ try {
40
+ const data = decode(c.data());
41
+ handleFunc(c, data);
42
+ }
43
+ catch (error) {
44
+ logger.info('failed to unmarshal event data', error);
45
+ }
46
+ });
47
+ }
48
+ }
49
+ //# sourceMappingURL=receiver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"receiver.js","sourceRoot":"","sources":["../../src/receiver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAElC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAc,WAAW,EAAgB,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,OAAO,QAAS,SAAQ,MAAM;IAC3B,QAAQ,GAAkC,IAAI,GAAG,EAAE,CAAC;IAE5D,YAAY,MAAc;QACzB,KAAK,CAAC,MAAM,CAAC,CAAC;IACf,CAAC;IAEkB,WAAW,CAAC,OAAgB;QAC9C,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC,KAAK,EAAE,CAAC;YACxC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACP,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC;IACF,CAAC;IAEO,WAAW,CAAC,UAAsB;QACzC,IAAI,EAAS,CAAC;QACd,IAAI,CAAC;YACJ,EAAE,GAAG,MAAM,CAAC,UAAU,CAAU,CAAC;QAClC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;YAChD,OAAO;QACR,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,CAAC,YAAY,EAAE,CAAC;YACnB,MAAM,CAAC,IAAI,CAAC,0CAA0C,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;YACjE,OAAO;QACR,CAAC;QAED,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;QACpC,YAAY,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IAED,iFAAiF;IAC1E,OAAO,CACb,SAAiB,EACjB,UAAqC;QAErC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAM,EAAE,EAAE;YACvC,IAAI,CAAC;gBACJ,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAM,CAAC;gBACnC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YACrB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,MAAM,CAAC,IAAI,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;YACtD,CAAC;QACF,CAAC,CAAC,CAAC;IACJ,CAAC;CACD"}
@@ -0,0 +1,26 @@
1
+ import { type Message } from './interfaces.js';
2
+ import type { Config } from './config.js';
3
+ import { UserError } from './user_error.js';
4
+ export declare class Sender {
5
+ private config;
6
+ private sendFunc?;
7
+ private requestId;
8
+ private waiters;
9
+ constructor(config: Config);
10
+ getRequestId(): number;
11
+ setSendFunc(sendFunc: (data: Uint8Array) => Promise<void>): void;
12
+ handle(reqData: Uint8Array): void;
13
+ handleResponse(respBytes: Uint8Array): void;
14
+ protected handleOther(message: Message): void;
15
+ removeResponseWaiter(requestId: number): void;
16
+ private sendRequest;
17
+ getConfig(): Config;
18
+ private sendInternal;
19
+ send<RS, RQ>(route: string, req: RQ): Promise<RS | UserError>;
20
+ sendOk<RQ>(route: string, req: RQ): Promise<UserError>;
21
+ sendOkNoRequest(route: string): Promise<UserError>;
22
+ sendNoRequest<RS>(route: string): Promise<RS | UserError>;
23
+ sendNoResponse<RQ>(route: string, req: RQ): Promise<void>;
24
+ sendPing(route: string): Promise<void>;
25
+ }
26
+ //# sourceMappingURL=sender.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sender.d.ts","sourceRoot":"","sources":["../../src/sender.ts"],"names":[],"mappings":"AACA,OAAO,EACN,KAAK,OAAO,EAIZ,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAM1C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,qBAAa,MAAM;IAClB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAC,CAAsC;IACvD,OAAO,CAAC,SAAS,CAAa;IAG9B,OAAO,CAAC,OAAO,CAAoD;gBAEvD,MAAM,EAAE,MAAM;IAOnB,YAAY,IAAI,MAAM;IAKtB,WAAW,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAIhE,MAAM,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI;IAgBjC,cAAc,CAAC,SAAS,EAAE,UAAU,GAAG,IAAI;IAwBlD,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAItC,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;YAItC,WAAW;IAmClB,SAAS,IAAI,MAAM;YAKZ,YAAY;IA6BnB,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC;IAM7D,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC;IAQhD,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAIlD,aAAa,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC;IAQzD,cAAc,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzD,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGnD"}
@@ -0,0 +1,135 @@
1
+ import { decode, encode } from '@msgpack/msgpack';
2
+ import { MessageType, } from './interfaces.js';
3
+ import { logger } from './logger.js';
4
+ import { marshalRequestData, unmarshalResponseData, withTimeout, } from './util.js';
5
+ import { UserError } from './user_error.js';
6
+ export class Sender {
7
+ config;
8
+ sendFunc;
9
+ requestId = 0;
10
+ // Maps a request ID to a resolve function to fulfill the promise
11
+ waiters = new Map();
12
+ constructor(config) {
13
+ this.config = config;
14
+ if (!this.config.requestTimeout) {
15
+ this.config.requestTimeout = 5000; // default timeout 5 seconds
16
+ }
17
+ }
18
+ getRequestId() {
19
+ this.requestId++;
20
+ return this.requestId;
21
+ }
22
+ setSendFunc(sendFunc) {
23
+ this.sendFunc = sendFunc;
24
+ }
25
+ handle(reqData) {
26
+ let message;
27
+ try {
28
+ message = decode(reqData);
29
+ }
30
+ catch (error) {
31
+ logger.info('failed to unmarshal message', error);
32
+ return;
33
+ }
34
+ if (message.type === MessageType.Response) {
35
+ this.handleResponse(message.data);
36
+ }
37
+ else {
38
+ this.handleOther(message);
39
+ }
40
+ }
41
+ handleResponse(respBytes) {
42
+ let resp;
43
+ try {
44
+ resp = decode(respBytes);
45
+ }
46
+ catch (error) {
47
+ logger.info('failed to unmarshal response', error);
48
+ return;
49
+ }
50
+ if (resp.id === -1 && resp.error) {
51
+ const decoder = new TextDecoder();
52
+ this.config.errorHandler(new Error(decoder.decode(resp.data)));
53
+ return;
54
+ }
55
+ const resolveFunc = this.waiters.get(resp.id);
56
+ if (!resolveFunc) {
57
+ logger.info('received response for non existing waiter', resp.id);
58
+ return;
59
+ }
60
+ resolveFunc(resp);
61
+ }
62
+ handleOther(message) {
63
+ logger.info('received unsupported message type', message.type);
64
+ }
65
+ removeResponseWaiter(requestId) {
66
+ this.waiters.delete(requestId);
67
+ }
68
+ async sendRequest(route, reqData, wantResponse) {
69
+ const reqId = this.getRequestId();
70
+ if (!this.sendFunc) {
71
+ throw new Error('sendFunc is not set');
72
+ }
73
+ const req = {
74
+ id: reqId,
75
+ route: route,
76
+ data: reqData,
77
+ };
78
+ let reqBytes;
79
+ try {
80
+ reqBytes = encode(req);
81
+ }
82
+ catch (err) {
83
+ throw new Error(`failed to marshal request: ${err}`);
84
+ }
85
+ let respPromise = Promise.resolve({});
86
+ if (wantResponse) {
87
+ respPromise = new Promise((resolve) => {
88
+ this.waiters.set(reqId, resolve);
89
+ });
90
+ }
91
+ await this.sendFunc(reqBytes);
92
+ return { promise: respPromise, reqId: reqId };
93
+ }
94
+ getConfig() {
95
+ return this.config;
96
+ }
97
+ /// Internal helper for making send functions easier to write.
98
+ async sendInternal(route, req, waitForResponse) {
99
+ const { promise: respPromise, reqId } = await this.sendRequest(route, req != undefined ? marshalRequestData(req) : new Uint8Array(), true);
100
+ // When we want to wait for response, properly serialize it
101
+ if (waitForResponse) {
102
+ const timeout = this.config.requestTimeout ?? 5000;
103
+ const res = await withTimeout(respPromise, timeout);
104
+ this.removeResponseWaiter(reqId);
105
+ if (res.error) {
106
+ const decoder = new TextDecoder();
107
+ return new UserError(decoder.decode(res.data));
108
+ }
109
+ return unmarshalResponseData(res.data);
110
+ }
111
+ else {
112
+ // Otherwise signal that nothing will be waited for
113
+ return undefined;
114
+ }
115
+ }
116
+ send(route, req) {
117
+ return this.sendInternal(route, req, true);
118
+ }
119
+ sendOk(route, req) {
120
+ return this.sendInternal(route, req, true);
121
+ }
122
+ async sendOkNoRequest(route) {
123
+ return this.sendInternal(route, undefined, false);
124
+ }
125
+ async sendNoRequest(route) {
126
+ return this.sendInternal(route, undefined, true);
127
+ }
128
+ async sendNoResponse(route, req) {
129
+ await this.sendInternal(route, req, false);
130
+ }
131
+ async sendPing(route) {
132
+ await this.sendInternal(route, undefined, false);
133
+ }
134
+ }
135
+ //# sourceMappingURL=sender.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sender.js","sourceRoot":"","sources":["../../src/sender.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { Sender } from '../sender.js';
2
+ export declare class HTTPTransporter {
3
+ private sender;
4
+ constructor(s: Sender, method: string, url: string);
5
+ }
6
+ //# sourceMappingURL=transporter_http.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transporter_http.d.ts","sourceRoot":"","sources":["../../../src/transporter/transporter_http.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C,qBAAa,eAAe;IAC3B,OAAO,CAAC,MAAM,CAAS;gBAEX,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;CA+BlD"}
@@ -0,0 +1,30 @@
1
+ export class HTTPTransporter {
2
+ sender;
3
+ constructor(s, method, url) {
4
+ this.sender = s;
5
+ this.sender.setSendFunc(async (data) => {
6
+ const controller = new AbortController();
7
+ const timeout = setTimeout(() => controller.abort(), 20000);
8
+ try {
9
+ const response = await fetch(url, {
10
+ method: method,
11
+ body: data,
12
+ signal: controller.signal,
13
+ headers: {
14
+ 'Content-Type': 'application/octet-stream',
15
+ },
16
+ });
17
+ // Check for transporter errors
18
+ if (!response.ok) {
19
+ throw new Error(`received non ok status ${response.status} ${response.statusText}`);
20
+ }
21
+ // Let sender handle the response routing
22
+ this.sender.handle(await response.bytes());
23
+ }
24
+ finally {
25
+ clearTimeout(timeout);
26
+ }
27
+ });
28
+ }
29
+ }
30
+ //# sourceMappingURL=transporter_http.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transporter_http.js","sourceRoot":"","sources":["../../../src/transporter/transporter_http.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,eAAe;IACnB,MAAM,CAAS;IAEvB,YAAY,CAAS,EAAE,MAAc,EAAE,GAAW;QACjD,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAEhB,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,IAAgB,EAAiB,EAAE;YACjE,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;YACzC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC,CAAC;YAE5D,IAAI,CAAC;gBACJ,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;oBACjC,MAAM,EAAE,MAAM;oBACd,IAAI,EAAE,IAA2B;oBACjC,MAAM,EAAE,UAAU,CAAC,MAAM;oBACzB,OAAO,EAAE;wBACR,cAAc,EAAE,0BAA0B;qBAC1C;iBACD,CAAC,CAAC;gBAEH,+BAA+B;gBAC/B,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;oBAClB,MAAM,IAAI,KAAK,CACd,0BAA0B,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAClE,CAAC;gBACH,CAAC;gBAED,yCAAyC;gBACzC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;YAC5C,CAAC;oBAAS,CAAC;gBACV,YAAY,CAAC,OAAO,CAAC,CAAC;YACvB,CAAC;QACF,CAAC,CAAC,CAAC;IACJ,CAAC;CACD"}
@@ -0,0 +1,17 @@
1
+ import type { Receiver } from '../receiver.js';
2
+ export interface WebSocketOptions {
3
+ connectionTimeout?: number;
4
+ onOpen?: () => void;
5
+ }
6
+ export declare class WebSocketTransporter {
7
+ private conn;
8
+ private receiver;
9
+ private options;
10
+ private connected;
11
+ private queue;
12
+ constructor(receiver: Receiver, options: WebSocketOptions);
13
+ connect(url: string): void;
14
+ close(reason?: string): void;
15
+ isConnected(): boolean;
16
+ }
17
+ //# sourceMappingURL=transporter_websocket.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transporter_websocket.d.ts","sourceRoot":"","sources":["../../../src/transporter/transporter_websocket.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,MAAM,WAAW,gBAAgB;IAEhC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAG3B,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,qBAAa,oBAAoB;IAChC,OAAO,CAAC,IAAI,CAA0B;IACtC,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,KAAK,CAAoB;gBAErB,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,gBAAgB;IAQlD,OAAO,CAAC,GAAG,EAAE,MAAM;IAwEnB,KAAK,CAAC,MAAM,GAAE,MAA4B,GAAG,IAAI;IAajD,WAAW,IAAI,OAAO;CAG7B"}