@synnaxlabs/freighter 0.2.0 → 0.4.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 (175) hide show
  1. package/.eslintrc.cjs +18 -0
  2. package/LICENSE +4 -21
  3. package/dist/alamos.d.ts +3 -0
  4. package/{build/module/lib → dist}/errors.d.ts +35 -40
  5. package/dist/freighter.cjs.js +11828 -0
  6. package/dist/freighter.cjs.js.map +1 -0
  7. package/dist/freighter.es.js +11828 -0
  8. package/dist/freighter.es.js.map +1 -0
  9. package/dist/http.d.ts +20 -0
  10. package/dist/index.d.ts +8 -0
  11. package/{build/module/lib → dist}/middleware.d.ts +11 -8
  12. package/{build/main/lib → dist}/stream.d.ts +11 -11
  13. package/{build/main/lib → dist}/transport.d.ts +2 -2
  14. package/dist/unary.d.ts +16 -0
  15. package/dist/websocket.d.ts +24 -0
  16. package/package.json +30 -98
  17. package/src/alamos.ts +40 -0
  18. package/src/errors.spec.ts +94 -0
  19. package/src/errors.ts +205 -0
  20. package/src/http.spec.ts +67 -0
  21. package/src/http.ts +115 -0
  22. package/src/index.ts +21 -20
  23. package/src/{lib/middleware.ts → middleware.ts} +29 -19
  24. package/src/{lib/stream.ts → stream.ts} +23 -14
  25. package/src/transport.ts +23 -0
  26. package/src/unary.ts +44 -0
  27. package/src/websocket.spec.ts +119 -0
  28. package/src/websocket.ts +203 -0
  29. package/tsconfig.json +5 -42
  30. package/tsconfig.vite.json +4 -0
  31. package/vite.config.ts +16 -0
  32. package/.editorconfig +0 -15
  33. package/.eslintrc.json +0 -33
  34. package/.gitignore +0 -9
  35. package/.nyc_output/3238f10e-9572-49ec-ab9d-28cbcaa6152a.json +0 -1
  36. package/.nyc_output/4e78a5c9-c0ca-4664-aa04-f478522608eb.json +0 -1
  37. package/.nyc_output/6a2244f2-5aea-45c7-8eeb-e14b454f0096.json +0 -1
  38. package/.nyc_output/dd1075a0-827b-4154-a75e-9bc90a4e16d0.json +0 -1
  39. package/.nyc_output/f829ad27-9bcd-4604-ae57-aae8c6f28d51.json +0 -1
  40. package/.nyc_output/fabc60f1-8fc5-4a1e-bea0-dc1fbcc31c9c.json +0 -1
  41. package/.nyc_output/processinfo/3238f10e-9572-49ec-ab9d-28cbcaa6152a.json +0 -1
  42. package/.nyc_output/processinfo/4e78a5c9-c0ca-4664-aa04-f478522608eb.json +0 -1
  43. package/.nyc_output/processinfo/6a2244f2-5aea-45c7-8eeb-e14b454f0096.json +0 -1
  44. package/.nyc_output/processinfo/dd1075a0-827b-4154-a75e-9bc90a4e16d0.json +0 -1
  45. package/.nyc_output/processinfo/f829ad27-9bcd-4604-ae57-aae8c6f28d51.json +0 -1
  46. package/.nyc_output/processinfo/fabc60f1-8fc5-4a1e-bea0-dc1fbcc31c9c.json +0 -1
  47. package/.nyc_output/processinfo/index.json +0 -1
  48. package/.prettierignore +0 -2
  49. package/.prettierrc +0 -3
  50. package/.vscode/settings.json +0 -4
  51. package/build/main/index.d.ts +0 -9
  52. package/build/main/index.js +0 -29
  53. package/build/main/lib/caseconv.d.ts +0 -2
  54. package/build/main/lib/caseconv.js +0 -14
  55. package/build/main/lib/encoder.d.ts +0 -59
  56. package/build/main/lib/encoder.js +0 -57
  57. package/build/main/lib/encoder.spec.d.ts +0 -1
  58. package/build/main/lib/encoder.spec.js +0 -26
  59. package/build/main/lib/errors.d.ts +0 -87
  60. package/build/main/lib/errors.js +0 -189
  61. package/build/main/lib/errors.spec.js +0 -88
  62. package/build/main/lib/http.d.ts +0 -50
  63. package/build/main/lib/http.js +0 -114
  64. package/build/main/lib/http.spec.js +0 -59
  65. package/build/main/lib/middleware.d.ts +0 -45
  66. package/build/main/lib/middleware.js +0 -38
  67. package/build/main/lib/runtime.d.ts +0 -5
  68. package/build/main/lib/runtime.js +0 -24
  69. package/build/main/lib/stream.js +0 -3
  70. package/build/main/lib/transport.js +0 -3
  71. package/build/main/lib/unary.d.ts +0 -15
  72. package/build/main/lib/unary.js +0 -3
  73. package/build/main/lib/url.d.ts +0 -38
  74. package/build/main/lib/url.js +0 -65
  75. package/build/main/lib/url.spec.d.ts +0 -1
  76. package/build/main/lib/url.spec.js +0 -41
  77. package/build/main/lib/util/log.d.ts +0 -2
  78. package/build/main/lib/util/log.js +0 -15
  79. package/build/main/lib/websocket.d.ts +0 -25
  80. package/build/main/lib/websocket.js +0 -172
  81. package/build/main/lib/websocket.spec.js +0 -86
  82. package/build/main/lib/ws.spec.d.ts +0 -1
  83. package/build/main/lib/ws.spec.js +0 -115
  84. package/build/module/index.d.ts +0 -9
  85. package/build/module/index.js +0 -7
  86. package/build/module/lib/caseconv.d.ts +0 -2
  87. package/build/module/lib/caseconv.js +0 -12
  88. package/build/module/lib/encoder.d.ts +0 -59
  89. package/build/module/lib/encoder.js +0 -47
  90. package/build/module/lib/encoder.spec.d.ts +0 -1
  91. package/build/module/lib/encoder.spec.js +0 -21
  92. package/build/module/lib/errors.js +0 -164
  93. package/build/module/lib/errors.spec.d.ts +0 -1
  94. package/build/module/lib/errors.spec.js +0 -85
  95. package/build/module/lib/http.d.ts +0 -50
  96. package/build/module/lib/http.js +0 -108
  97. package/build/module/lib/http.spec.d.ts +0 -1
  98. package/build/module/lib/http.spec.js +0 -54
  99. package/build/module/lib/middleware.js +0 -32
  100. package/build/module/lib/runtime.d.ts +0 -5
  101. package/build/module/lib/runtime.js +0 -21
  102. package/build/module/lib/stream.d.ts +0 -76
  103. package/build/module/lib/stream.js +0 -2
  104. package/build/module/lib/transport.d.ts +0 -13
  105. package/build/module/lib/transport.js +0 -2
  106. package/build/module/lib/unary.d.ts +0 -15
  107. package/build/module/lib/unary.js +0 -2
  108. package/build/module/lib/url.d.ts +0 -38
  109. package/build/module/lib/url.js +0 -65
  110. package/build/module/lib/url.spec.d.ts +0 -1
  111. package/build/module/lib/url.spec.js +0 -34
  112. package/build/module/lib/util/log.d.ts +0 -2
  113. package/build/module/lib/util/log.js +0 -11
  114. package/build/module/lib/websocket.d.ts +0 -25
  115. package/build/module/lib/websocket.js +0 -181
  116. package/build/module/lib/websocket.spec.d.ts +0 -1
  117. package/build/module/lib/websocket.spec.js +0 -82
  118. package/build/module/lib/ws.spec.d.ts +0 -1
  119. package/build/module/lib/ws.spec.js +0 -94
  120. package/build/tsconfig.module.tsbuildinfo +0 -1
  121. package/build/tsconfig.tsbuildinfo +0 -1
  122. package/coverage/base.css +0 -224
  123. package/coverage/block-navigation.js +0 -87
  124. package/coverage/caseconv.ts.html +0 -124
  125. package/coverage/encoder.ts.html +0 -403
  126. package/coverage/errors.ts.html +0 -727
  127. package/coverage/favicon.png +0 -0
  128. package/coverage/http.ts.html +0 -532
  129. package/coverage/index.html +0 -221
  130. package/coverage/lcov-report/base.css +0 -224
  131. package/coverage/lcov-report/block-navigation.js +0 -87
  132. package/coverage/lcov-report/caseconv.ts.html +0 -124
  133. package/coverage/lcov-report/encoder.ts.html +0 -403
  134. package/coverage/lcov-report/errors.ts.html +0 -727
  135. package/coverage/lcov-report/favicon.png +0 -0
  136. package/coverage/lcov-report/http.ts.html +0 -532
  137. package/coverage/lcov-report/index.html +0 -221
  138. package/coverage/lcov-report/middleware.ts.html +0 -286
  139. package/coverage/lcov-report/prettify.css +0 -1
  140. package/coverage/lcov-report/prettify.js +0 -2
  141. package/coverage/lcov-report/runtime.ts.html +0 -154
  142. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  143. package/coverage/lcov-report/sorter.js +0 -196
  144. package/coverage/lcov-report/url.ts.html +0 -322
  145. package/coverage/lcov-report/websocket.ts.html +0 -760
  146. package/coverage/lcov.info +0 -552
  147. package/coverage/middleware.ts.html +0 -286
  148. package/coverage/prettify.css +0 -1
  149. package/coverage/prettify.js +0 -2
  150. package/coverage/runtime.ts.html +0 -154
  151. package/coverage/sort-arrow-sprite.png +0 -0
  152. package/coverage/sorter.js +0 -196
  153. package/coverage/url.ts.html +0 -322
  154. package/coverage/websocket.ts.html +0 -760
  155. package/src/lib/caseconv.ts +0 -13
  156. package/src/lib/encoder.spec.ts +0 -23
  157. package/src/lib/encoder.ts +0 -105
  158. package/src/lib/errors.spec.ts +0 -98
  159. package/src/lib/errors.ts +0 -214
  160. package/src/lib/http.spec.ts +0 -85
  161. package/src/lib/http.ts +0 -149
  162. package/src/lib/runtime.ts +0 -23
  163. package/src/lib/transport.ts +0 -14
  164. package/src/lib/unary.ts +0 -21
  165. package/src/lib/url.spec.ts +0 -37
  166. package/src/lib/url.ts +0 -79
  167. package/src/lib/util/log.ts +0 -12
  168. package/src/lib/websocket.spec.ts +0 -106
  169. package/src/lib/websocket.ts +0 -225
  170. package/src/types/example.d.ts +0 -24
  171. package/tsconfig.module.json +0 -9
  172. package/yarn.lock +0 -5878
  173. /package/{build/main/lib → dist}/errors.spec.d.ts +0 -0
  174. /package/{build/main/lib → dist}/http.spec.d.ts +0 -0
  175. /package/{build/main/lib → dist}/websocket.spec.d.ts +0 -0
@@ -1,25 +0,0 @@
1
- import { ZodSchema } from 'zod';
2
- import { EncoderDecoder } from './encoder';
3
- import { MiddlewareCollector } from './middleware';
4
- import { Stream, StreamClient } from './stream';
5
- import URL from './url';
6
- export declare const FREIGHTER_METADATA_PREFIX = "freightermd";
7
- /**
8
- * WebSocketClient is an implementation of StreamClient that is backed by
9
- * websockets.
10
- */
11
- export declare class WebSocketClient extends MiddlewareCollector implements StreamClient {
12
- baseUrl: URL;
13
- encoder: EncoderDecoder;
14
- static readonly MESSAGE_TYPE = "arraybuffer";
15
- /**
16
- * @param encoder - The encoder to use for encoding messages and decoding
17
- * responses.
18
- * @param baseURL - A base url to use as a prefix for all requests.
19
- */
20
- constructor(encoder: EncoderDecoder, baseURL: URL);
21
- /** Implements the StreamClient interface. */
22
- stream<RQ, RS>(target: string, reqSchema: ZodSchema<RQ>, resSchema: ZodSchema<RS>): Promise<Stream<RQ, RS>>;
23
- private buildURL;
24
- private wrapSocket;
25
- }
@@ -1,172 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.WebSocketClient = exports.FREIGHTER_METADATA_PREFIX = void 0;
4
- const zod_1 = require("zod");
5
- const errors_1 = require("./errors");
6
- const http_1 = require("./http");
7
- const http_2 = require("./http");
8
- const middleware_1 = require("./middleware");
9
- const runtime_1 = require("./runtime");
10
- const resolveWebSocketConstructor = () => {
11
- if (runtime_1.RUNTIME == runtime_1.Runtime.Node)
12
- return require('ws');
13
- return WebSocket;
14
- };
15
- var MessageType;
16
- (function (MessageType) {
17
- MessageType["Data"] = "data";
18
- MessageType["Close"] = "close";
19
- })(MessageType || (MessageType = {}));
20
- const MessageSchema = zod_1.z.object({
21
- type: zod_1.z.nativeEnum(MessageType),
22
- payload: zod_1.z.unknown().optional(),
23
- error: zod_1.z.optional(errors_1.ErrorPayloadSchema),
24
- });
25
- var CloseCode;
26
- (function (CloseCode) {
27
- CloseCode[CloseCode["Normal"] = 1000] = "Normal";
28
- CloseCode[CloseCode["GoingAway"] = 1001] = "GoingAway";
29
- })(CloseCode || (CloseCode = {}));
30
- /** WebSocketStream is an implementation of Stream that is backed by a websocket. */
31
- class WebSocketStream {
32
- constructor(ws, encoder, reqSchema, resSchema) {
33
- this.receiveDataQueue = [];
34
- this.receiveCallbacksQueue = [];
35
- this.encoder = encoder;
36
- this.reqSchema = reqSchema;
37
- this.resSchema = resSchema;
38
- this.ws = ws;
39
- this.send_closed = false;
40
- this.listenForMessages();
41
- }
42
- /** Implements the Stream protocol */
43
- send(req) {
44
- if (this.server_closed)
45
- return new errors_1.EOF();
46
- if (this.send_closed)
47
- throw new errors_1.StreamClosed();
48
- this.ws.send(this.encoder.encode({
49
- type: MessageType.Data,
50
- payload: req,
51
- error: undefined,
52
- }));
53
- return undefined;
54
- }
55
- /** Implements the Stream protocol */
56
- async receive() {
57
- if (this.server_closed)
58
- return [undefined, this.server_closed];
59
- const msg = await this.receiveMsg();
60
- if (msg.type == MessageType.Close) {
61
- if (!msg.error)
62
- throw new Error('Message error must be defined');
63
- this.server_closed = (0, errors_1.decodeError)(msg.error);
64
- return [undefined, this.server_closed];
65
- }
66
- return [this.resSchema.parse(msg.payload), undefined];
67
- }
68
- /** Implements the Stream protocol */
69
- received() {
70
- return this.receiveDataQueue.length !== 0;
71
- }
72
- /** Implements the Stream protocol */
73
- closeSend() {
74
- if (this.send_closed || this.server_closed) {
75
- return undefined;
76
- }
77
- const msg = { type: MessageType.Close };
78
- try {
79
- this.ws.send(this.encoder.encode(msg));
80
- }
81
- finally {
82
- this.send_closed = true;
83
- }
84
- return undefined;
85
- }
86
- async receiveMsg() {
87
- if (this.receiveDataQueue.length !== 0) {
88
- const msg = this.receiveDataQueue.shift();
89
- if (msg)
90
- return msg;
91
- throw new Error('unexpected undefined message');
92
- }
93
- return new Promise((resolve, reject) => {
94
- this.receiveCallbacksQueue.push({ resolve, reject });
95
- });
96
- }
97
- listenForMessages() {
98
- this.ws.onmessage = (ev) => {
99
- const msg = this.encoder.decode(ev.data, MessageSchema);
100
- if (this.receiveCallbacksQueue.length > 0) {
101
- const callback = this.receiveCallbacksQueue.shift();
102
- if (callback)
103
- callback.resolve(msg);
104
- else
105
- throw new Error('Unexpected empty callback queue');
106
- }
107
- else {
108
- this.receiveDataQueue.push(msg);
109
- }
110
- };
111
- this.ws.onclose = (ev) => {
112
- if ([CloseCode.Normal, CloseCode.GoingAway].includes(ev.code)) {
113
- this.server_closed = new errors_1.EOF();
114
- }
115
- else {
116
- this.server_closed = new errors_1.StreamClosed();
117
- }
118
- };
119
- }
120
- }
121
- exports.FREIGHTER_METADATA_PREFIX = 'freightermd';
122
- /**
123
- * WebSocketClient is an implementation of StreamClient that is backed by
124
- * websockets.
125
- */
126
- class WebSocketClient extends middleware_1.MiddlewareCollector {
127
- /**
128
- * @param encoder - The encoder to use for encoding messages and decoding
129
- * responses.
130
- * @param baseURL - A base url to use as a prefix for all requests.
131
- */
132
- constructor(encoder, baseURL) {
133
- super();
134
- this.baseUrl = baseURL.replace({ protocol: 'ws' });
135
- this.encoder = encoder;
136
- }
137
- /** Implements the StreamClient interface. */
138
- async stream(target, reqSchema, resSchema) {
139
- const socketConstructor = resolveWebSocketConstructor();
140
- let stream;
141
- const error = await this.executeMiddleware({ target, protocol: 'websocket', params: {} }, async (md) => {
142
- const ws = new socketConstructor(this.buildURL(target, md));
143
- ws.binaryType = WebSocketClient.MESSAGE_TYPE;
144
- const streamOrErr = await this.wrapSocket(ws, reqSchema, resSchema);
145
- if (streamOrErr instanceof Error)
146
- return streamOrErr;
147
- stream = streamOrErr;
148
- return undefined;
149
- });
150
- if (error)
151
- throw error;
152
- return stream;
153
- }
154
- buildURL(target, md) {
155
- const qs = (0, http_1.buildQueryString)({
156
- request: Object.assign({ [http_2.CONTENT_TYPE_HEADER_KEY]: this.encoder.contentType }, md.params),
157
- prefix: exports.FREIGHTER_METADATA_PREFIX,
158
- });
159
- return this.baseUrl.child(target).stringify() + qs;
160
- }
161
- async wrapSocket(ws, reqSchema, resSchema) {
162
- return await new Promise((resolve, reject) => {
163
- ws.onopen = () => {
164
- resolve(new WebSocketStream(ws, this.encoder, reqSchema, resSchema));
165
- };
166
- ws.onerror = (ev) => reject(new Error(ev.toString()));
167
- });
168
- }
169
- }
170
- exports.WebSocketClient = WebSocketClient;
171
- WebSocketClient.MESSAGE_TYPE = 'arraybuffer';
172
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vic29ja2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi93ZWJzb2NrZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkJBQW1DO0FBR25DLHFDQUE4RTtBQUM5RSxpQ0FBMEM7QUFDMUMsaUNBQWlEO0FBQ2pELDZDQUE2RDtBQUM3RCx1Q0FBNkM7QUFJN0MsTUFBTSwyQkFBMkIsR0FBRyxHQUFxQixFQUFFO0lBQ3pELElBQUksaUJBQU8sSUFBSSxpQkFBTyxDQUFDLElBQUk7UUFBRSxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDLENBQUM7QUFFRixJQUFLLFdBR0o7QUFIRCxXQUFLLFdBQVc7SUFDZCw0QkFBYSxDQUFBO0lBQ2IsOEJBQWUsQ0FBQTtBQUNqQixDQUFDLEVBSEksV0FBVyxLQUFYLFdBQVcsUUFHZjtBQUVELE1BQU0sYUFBYSxHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUM7SUFDN0IsSUFBSSxFQUFFLE9BQUMsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDO0lBQy9CLE9BQU8sRUFBRSxPQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQy9CLEtBQUssRUFBRSxPQUFDLENBQUMsUUFBUSxDQUFDLDJCQUFrQixDQUFDO0NBQ3RDLENBQUMsQ0FBQztBQUlILElBQUssU0FHSjtBQUhELFdBQUssU0FBUztJQUNaLGdEQUFhLENBQUE7SUFDYixzREFBZ0IsQ0FBQTtBQUNsQixDQUFDLEVBSEksU0FBUyxLQUFULFNBQVMsUUFHYjtBQUVELG9GQUFvRjtBQUNwRixNQUFNLGVBQWU7SUFnQm5CLFlBQ0UsRUFBYSxFQUNiLE9BQXVCLEVBQ3ZCLFNBQTBCLEVBQzFCLFNBQTBCO1FBVnBCLHFCQUFnQixHQUFjLEVBQUUsQ0FBQztRQUNqQywwQkFBcUIsR0FHdkIsRUFBRSxDQUFDO1FBUVAsSUFBSSxDQUFDLE9BQU8sR0FB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
@@ -1,86 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const ava_1 = __importDefault(require("ava"));
7
- const zod_1 = require("zod");
8
- const encoder_1 = require("./encoder");
9
- const errors_1 = require("./errors");
10
- const url_1 = __importDefault(require("./url"));
11
- const websocket_1 = require("./websocket");
12
- const url = new url_1.default({
13
- host: '127.0.0.1',
14
- port: 8080,
15
- });
16
- const MessageSchema = zod_1.z.object({
17
- id: zod_1.z.number().optional(),
18
- message: zod_1.z.string().optional(),
19
- });
20
- const client = new websocket_1.WebSocketClient(new encoder_1.JSONEncoderDecoder(), url);
21
- class MyCustomError extends errors_1.BaseTypedError {
22
- constructor(message, code) {
23
- super(message, 'integration.error');
24
- this.code = code;
25
- }
26
- }
27
- const encodeTestError = (err) => {
28
- if (!(err instanceof MyCustomError)) {
29
- throw new Error('Unexpected error type');
30
- }
31
- return `${err.code},${err.message}`;
32
- };
33
- const decodeTestError = (encoded) => {
34
- const [code, message] = encoded.split(',');
35
- return new MyCustomError(message, parseInt(code, 10));
36
- };
37
- (0, errors_1.registerError)({
38
- type: 'integration.error',
39
- encode: encodeTestError,
40
- decode: decodeTestError,
41
- });
42
- (0, ava_1.default)('basic exchange', async (t) => {
43
- const stream = await client.stream('stream/echo', MessageSchema, MessageSchema);
44
- for (let i = 0; i < 10; i++) {
45
- stream.send({ id: i, message: 'hello' });
46
- const [response, error] = await stream.receive();
47
- t.is(error, undefined);
48
- t.is(response === null || response === void 0 ? void 0 : response.id, i + 1);
49
- t.is(response === null || response === void 0 ? void 0 : response.message, 'hello');
50
- }
51
- stream.closeSend();
52
- const [response, error] = await stream.receive();
53
- t.deepEqual(error, new errors_1.EOF());
54
- t.is(response, undefined);
55
- });
56
- (0, ava_1.default)('receive message after close', async (t) => {
57
- const stream = await client.stream('stream/sendMessageAfterClientClose', MessageSchema, MessageSchema);
58
- await stream.closeSend();
59
- let [response, error] = await stream.receive();
60
- t.is(error, undefined);
61
- t.is(response === null || response === void 0 ? void 0 : response.id, 0);
62
- t.is(response === null || response === void 0 ? void 0 : response.message, 'Close Acknowledged');
63
- [response, error] = await stream.receive();
64
- t.deepEqual(error, new errors_1.EOF());
65
- });
66
- (0, ava_1.default)('receive error', async (t) => {
67
- const stream = await client.stream('stream/receiveAndExitWithErr', MessageSchema, MessageSchema);
68
- stream.send({ id: 0, message: 'hello' });
69
- const [response, error] = await stream.receive();
70
- t.deepEqual(error, new MyCustomError('unexpected error', 1));
71
- t.is(response, undefined);
72
- });
73
- (0, ava_1.default)('middleware', async (t) => {
74
- const myClient = new websocket_1.WebSocketClient(new encoder_1.JSONEncoderDecoder(), url);
75
- let c = 0;
76
- myClient.use(async (md, next) => {
77
- if (md.params) {
78
- c++;
79
- md.params['Test'] = 'test';
80
- }
81
- return await next(md);
82
- });
83
- await myClient.stream('stream/middlewareCheck', MessageSchema, MessageSchema);
84
- t.is(c, 1);
85
- });
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vic29ja2V0LnNwZWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3dlYnNvY2tldC5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsOENBQXVCO0FBQ3ZCLDZCQUF3QjtBQUV4Qix1Q0FBK0M7QUFDL0MscUNBQTBFO0FBQzFFLGdEQUF3QjtBQUN4QiwyQ0FBOEM7QUFFOUMsTUFBTSxHQUFHLEdBQUcsSUFBSSxhQUFHLENBQUM7SUFDbEIsSUFBSSxFQUFFLFdBQVc7SUFDakIsSUFBSSxFQUFFLElBQUk7Q0FDWCxDQUFDLENBQUM7QUFFSCxNQUFNLGFBQWEsR0FBRyxPQUFDLENBQUMsTUFBTSxDQUFDO0lBQzdCLEVBQUUsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ3pCLE9BQU8sRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0NBQy9CLENBQUMsQ0FBQztBQUVILE1BQU0sTUFBTSxHQUFHLElBQUksMkJBQWUsQ0FBQyxJQUFJLDRCQUFrQixFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFFbEUsTUFBTSxhQUFjLFNBQVEsdUJBQWM7SUFHeEMsWUFBWSxPQUFlLEVBQUUsSUFBWTtRQUN2QyxLQUFLLENBQUMsT0FBTyxFQUFFLG1CQUFtQixDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDbkIsQ0FBQztDQUNGO0FBRUQsTUFBTSxlQUFlLEdBQUcsQ0FBQyxHQUFlLEVBQVUsRUFBRTtJQUNsRCxJQUFJLENBQUMsQ0FBQyxHQUFHLFlBQVksYUFBYSxDQUFDLEVBQUU7UUFDbkMsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0tBQzFDO0lBQ0QsT0FBTyxHQUFHLEdBQUcsQ0FBQyxJQUFJLElBQUksR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDO0FBQ3RDLENBQUMsQ0FBQztBQUVGLE1B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
@@ -1 +0,0 @@
1
- export {};
@@ -1,115 +0,0 @@
1
- 'use strict';
2
- var __importDefault =
3
- (this && this.__importDefault) ||
4
- function (mod) {
5
- return mod && mod.__esModule ? mod : { default: mod };
6
- };
7
- Object.defineProperty(exports, '__esModule', { value: true });
8
- const ava_1 = __importDefault(require('ava'));
9
- const zod_1 = require('zod');
10
- const encoder_1 = require('./encoder');
11
- const errors_1 = require('./errors');
12
- const url_1 = __importDefault(require('./url'));
13
- const websocket_1 = require('./websocket');
14
- const url = new url_1.default({
15
- host: '127.0.0.1',
16
- port: 8080,
17
- });
18
- const MessageSchema = zod_1.z.object({
19
- id: zod_1.z.number().optional(),
20
- message: zod_1.z.string().optional(),
21
- });
22
- const client = new websocket_1.WebSocketClient(
23
- new encoder_1.JSONEncoderDecoder(),
24
- url
25
- );
26
- class MyCustomError extends errors_1.BaseTypedError {
27
- constructor(message, code) {
28
- super(message, 'integration.error');
29
- this.code = code;
30
- }
31
- }
32
- const encodeTestError = (err) => {
33
- if (!(err instanceof MyCustomError)) {
34
- throw new Error('Unexpected error type');
35
- }
36
- return `${err.code},${err.message}`;
37
- };
38
- const decodeTestError = (encoded) => {
39
- const [code, message] = encoded.split(',');
40
- return new MyCustomError(message, parseInt(code, 10));
41
- };
42
- (0, errors_1.registerError)({
43
- type: 'integration.error',
44
- encode: encodeTestError,
45
- decode: decodeTestError,
46
- });
47
- (0, ava_1.default)('basic exchange', async (t) => {
48
- const stream = await client.stream(
49
- 'stream/echo',
50
- MessageSchema,
51
- MessageSchema
52
- );
53
- for (let i = 0; i < 10; i++) {
54
- stream.send({ id: i, message: 'hello' });
55
- const [response, error] = await stream.receive();
56
- t.is(error, undefined);
57
- t.is(
58
- response === null || response === void 0 ? void 0 : response.id,
59
- i + 1
60
- );
61
- t.is(
62
- response === null || response === void 0 ? void 0 : response.message,
63
- 'hello'
64
- );
65
- }
66
- stream.closeSend();
67
- const [response, error] = await stream.receive();
68
- t.deepEqual(error, new errors_1.EOF());
69
- t.is(response, undefined);
70
- });
71
- (0, ava_1.default)('receive message after close', async (t) => {
72
- const stream = await client.stream(
73
- 'stream/sendMessageAfterClientClose',
74
- MessageSchema,
75
- MessageSchema
76
- );
77
- await stream.closeSend();
78
- let [response, error] = await stream.receive();
79
- t.is(error, undefined);
80
- t.is(response === null || response === void 0 ? void 0 : response.id, 0);
81
- t.is(
82
- response === null || response === void 0 ? void 0 : response.message,
83
- 'Close Acknowledged'
84
- );
85
- [response, error] = await stream.receive();
86
- t.deepEqual(error, new errors_1.EOF());
87
- });
88
- (0, ava_1.default)('receive error', async (t) => {
89
- const stream = await client.stream(
90
- 'stream/receiveAndExitWithErr',
91
- MessageSchema,
92
- MessageSchema
93
- );
94
- stream.send({ id: 0, message: 'hello' });
95
- const [response, error] = await stream.receive();
96
- t.deepEqual(error, new MyCustomError('unexpected error', 1));
97
- t.is(response, undefined);
98
- });
99
- (0, ava_1.default)('middleware', async (t) => {
100
- const myClient = new websocket_1.WebSocketClient(
101
- new encoder_1.JSONEncoderDecoder(),
102
- url
103
- );
104
- let c = 0;
105
- myClient.use(async (md, next) => {
106
- if (md.params) {
107
- c++;
108
- md.params['Test'] = 'test';
109
- }
110
- return await next(md);
111
- });
112
- await myClient.stream('stream/middlewareCheck', MessageSchema, MessageSchema);
113
- t.is(c, 1);
114
- });
115
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3Muc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvd3Muc3BlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDhDQUF1QjtBQUN2Qiw2QkFBd0I7QUFFeEIsdUNBQStDO0FBQy9DLHFDQUEwRTtBQUMxRSxnREFBd0I7QUFDeEIsMkNBQThDO0FBRTlDLE1BQU0sR0FBRyxHQUFHLElBQUksYUFBRyxDQUFDO0lBQ2xCLElBQUksRUFBRSxXQUFXO0lBQ2pCLElBQUksRUFBRSxJQUFJO0NBQ1gsQ0FBQyxDQUFDO0FBRUgsTUFBTSxhQUFhLEdBQUcsT0FBQyxDQUFDLE1BQU0sQ0FBQztJQUM3QixFQUFFLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUN6QixPQUFPLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtDQUMvQixDQUFDLENBQUM7QUFFSCxNQUFNLE1BQU0sR0FBRyxJQUFJLDJCQUFlLENBQUMsSUFBSSw0QkFBa0IsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBRWxFLE1BQU0sYUFBYyxTQUFRLHVCQUFjO0lBR3hDLFlBQVksT0FBZSxFQUFFLElBQVk7UUFDdkMsS0FBSyxDQUFDLE9BQU8sRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ25CLENBQUM7Q0FDRjtBQUVELE1BQU0sZUFBZSxHQUFHLENBQUMsR0FBZSxFQUFVLEVBQUU7SUFDbEQsSUFBSSxDQUFDLENBQUMsR0FBRyxZQUFZLGFBQWEsQ0FBQyxFQUFFO1FBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQztLQUMxQztJQUNELE9BQU8sR0FBRyxHQUFHLENBQUMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUN0QyxDQUFDLENBQUM7QUFFRixNQUFNLGVBQWUsR0FBRyxD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
@@ -1,9 +0,0 @@
1
- export { WebSocketClient } from './lib/websocket';
2
- export { MsgpackEncoderDecoder, JSONEncoderDecoder, registerCustomTypeEncoder, ENCODERS, } from './lib/encoder';
3
- export { StreamClient, Stream } from './lib/stream';
4
- export { UnaryClient } from './lib/unary';
5
- export { HTTPClientFactory } from './lib/http';
6
- export { default as URL } from './lib/url';
7
- export { encodeError, decodeError, registerError, BaseTypedError, TypedError, ErrorPayload, ErrorPayloadSchema, EOF, StreamClosed, Unreachable, } from './lib/errors';
8
- export { Middleware, Next, MetaData } from './lib/middleware';
9
- export { logMiddleware } from './lib/util/log';
@@ -1,7 +0,0 @@
1
- export { WebSocketClient } from './lib/websocket';
2
- export { MsgpackEncoderDecoder, JSONEncoderDecoder, registerCustomTypeEncoder, ENCODERS, } from './lib/encoder';
3
- export { HTTPClientFactory } from './lib/http';
4
- export { default as URL } from './lib/url';
5
- export { encodeError, decodeError, registerError, BaseTypedError, ErrorPayloadSchema, EOF, StreamClosed, Unreachable, } from './lib/errors';
6
- export { logMiddleware } from './lib/util/log';
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sRUFDTCxxQkFBcUIsRUFDckIsa0JBQWtCLEVBQ2xCLHlCQUF5QixFQUN6QixRQUFRLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxPQUFPLElBQUksR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzNDLE9BQU8sRUFDTCxXQUFXLEVBQ1gsV0FBVyxFQUNYLGFBQWEsRUFDYixjQUFjLEVBR2Qsa0JBQWtCLEVBQ2xCLEdBQUcsRUFDSCxZQUFZLEVBQ1osV0FBVyxHQUNaLE1BQU0sY0FBYyxDQUFDO0FBRXRCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQyJ9
@@ -1,2 +0,0 @@
1
- export declare const snakeKeys: (entity: unknown) => object | null;
2
- export declare const camelKeys: (entity: unknown) => object | null;
@@ -1,12 +0,0 @@
1
- import {
2
- camelKeys as _camelKeys,
3
- snakeKeys as _snakeKeys,
4
- } from 'js-convert-case';
5
- const options = {
6
- recursive: true,
7
- recursiveInArray: true,
8
- keepTypesOnRecursion: [Number, String, Uint8Array],
9
- };
10
- export const snakeKeys = (entity) => _snakeKeys(entity, options);
11
- export const camelKeys = (entity) => _camelKeys(entity, options);
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZWNvbnYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2Nhc2Vjb252LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLElBQUksVUFBVSxFQUN2QixTQUFTLElBQUksVUFBVSxHQUN4QixNQUFNLGlCQUFpQixDQUFDO0FBRXpCLE1BQU0sT0FBTyxHQUFHO0lBQ2QsU0FBUyxFQUFFLElBQUk7SUFDZixnQkFBZ0IsRUFBRSxJQUFJO0lBQ3RCLG9CQUFvQixFQUFFLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxVQUFVLENBQUM7Q0FDbkQsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxDQUFDLE1BQWUsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztBQUMxRSxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxNQUFlLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMifQ==
@@ -1,59 +0,0 @@
1
- import { ZodSchema } from 'zod';
2
- /**
3
- * CustomTypeEncoder is an interface for a class that needs to transform its
4
- * value before encoding.
5
- */
6
- interface CustomTypeEncoder {
7
- /** The Class the custom encoder is set for */
8
- Class: Function;
9
- /**
10
- * The function that transforms the value before encoding;
11
- *
12
- * @param instance - The instance of the class to transform.
13
- * @returns The transformed value.
14
- */
15
- write<P>(instance: P): unknown;
16
- }
17
- /**
18
- * EncoderDecoder is an entity that encodes and decodes messages to and from a
19
- * binary format.
20
- */
21
- export interface EncoderDecoder {
22
- /** The HTTP content type of the encoder */
23
- contentType: string;
24
- /**
25
- * Encodes the given payload into a binary representation.
26
- *
27
- * @param payload - The payload to encode.
28
- * @returns An ArrayBuffer containing the encoded payload.
29
- */
30
- encode(payload: unknown): ArrayBuffer;
31
- /**
32
- * Decodes the given binary representation into a type checked payload.
33
- *
34
- * @param data - The data to decode.
35
- * @param schema - The schema to decode the data with.
36
- */
37
- decode<P>(data: Uint8Array | ArrayBuffer, schema: ZodSchema<P>): P;
38
- }
39
- interface StaticEncoderDecoder {
40
- registerCustomType(encoder: CustomTypeEncoder): void;
41
- }
42
- /** MsgpackEncoderDecoder is a msgpack implementation of EncoderDecoder. */
43
- export declare class MsgpackEncoderDecoder implements EncoderDecoder {
44
- contentType: string;
45
- encode(payload: unknown): ArrayBuffer;
46
- decode<P>(data: Uint8Array, schema: ZodSchema<P>): P;
47
- static registerCustomType(encoder: CustomTypeEncoder): void;
48
- }
49
- /** JSONEncoderDecoder is a JSON implementation of EncoderDecoder. */
50
- export declare class JSONEncoderDecoder implements EncoderDecoder {
51
- contentType: string;
52
- encode(payload: unknown): ArrayBuffer;
53
- decode<P>(data: Uint8Array, schema: ZodSchema<P>): P;
54
- static registerCustomType(): void;
55
- }
56
- export declare const ENCODERS: EncoderDecoder[];
57
- export declare const ENCODER_CLASSES: StaticEncoderDecoder[];
58
- export declare const registerCustomTypeEncoder: (encoder: CustomTypeEncoder) => void;
59
- export {};
@@ -1,47 +0,0 @@
1
- import { addExtension, pack, unpack } from 'msgpackr';
2
- import { camelKeys, snakeKeys } from './caseconv';
3
- /** MsgpackEncoderDecoder is a msgpack implementation of EncoderDecoder. */
4
- export class MsgpackEncoderDecoder {
5
- contentType = 'application/msgpack';
6
- encode(payload) {
7
- return pack(snakeKeys(payload));
8
- }
9
- decode(data, schema) {
10
- return schema.parse(camelKeys(unpack(new Uint8Array(data))));
11
- }
12
- static registerCustomType(encoder) {
13
- addExtension({ type: 0, ...encoder });
14
- }
15
- }
16
- /** JSONEncoderDecoder is a JSON implementation of EncoderDecoder. */
17
- export class JSONEncoderDecoder {
18
- contentType = 'application/json';
19
- encode(payload) {
20
- const json = JSON.stringify(snakeKeys(payload), (_, v) => {
21
- if (ArrayBuffer.isView(v))
22
- return Array.from(v);
23
- return v;
24
- });
25
- return new TextEncoder().encode(json);
26
- }
27
- decode(data, schema) {
28
- return schema.parse(camelKeys(JSON.parse(new TextDecoder().decode(data))));
29
- }
30
- static registerCustomType() {
31
- return;
32
- }
33
- }
34
- export const ENCODERS = [
35
- new MsgpackEncoderDecoder(),
36
- new JSONEncoderDecoder(),
37
- ];
38
- export const ENCODER_CLASSES = [
39
- MsgpackEncoderDecoder,
40
- JSONEncoderDecoder,
41
- ];
42
- export const registerCustomTypeEncoder = (encoder) => {
43
- ENCODER_CLASSES.forEach((encoderClass) => {
44
- encoderClass.registerCustomType(encoder);
45
- });
46
- };
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jb2Rlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvZW5jb2Rlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFHdEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFpRGxELDJFQUEyRTtBQUMzRSxNQUFNLE9BQU8scUJBQXFCO0lBQ2hDLFdBQVcsR0FBRyxxQkFBcUIsQ0FBQztJQUVwQyxNQUFNLENBQUMsT0FBZ0I7UUFDckIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELE1BQU0sQ0FBSSxJQUFnQixFQUFFLE1BQW9CO1FBQzlDLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRCxNQUFNLENBQUMsa0JBQWtCLENBQUMsT0FBMEI7UUFDbEQsWUFBWSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDeEMsQ0FBQztDQUNGO0FBRUQscUVBQXFFO0FBQ3JFLE1BQU0sT0FBTyxrQkFBa0I7SUFDN0IsV0FBVyxHQUFHLGtCQUFrQixDQUFDO0lBRWpDLE1BQU0sQ0FBQyxPQUFnQjtRQUNyQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUN2RCxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO2dCQUFFLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFlLENBQUMsQ0FBQztZQUM5RCxPQUFPLENBQUMsQ0FBQztRQUNYLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxJQUFJLFdBQVcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsTUFBTSxDQUFJLElBQWdCLEVBQUUsTUFBb0I7UUFDOUMsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksV0FBVyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFRCxNQUFNLENBQUMsa0JBQWtCO1FBQ3ZCLE9BQU87SUFDVCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQXFCO0lBQ3hDLElBQUkscUJBQXFCLEVBQUU7SUFDM0IsSUFBSSxrQkFBa0IsRUFBRTtDQUN6QixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUEyQjtJQUNyRCxxQkFBcUI7SUFDckIsa0JBQWtCO0NBQ25CLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxDQUFDLE9BQTBCLEVBQVEsRUFBRTtJQUM1RSxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxFQUFFLEVBQUU7UUFDdkMsWUFBWSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzNDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDIn0=
@@ -1 +0,0 @@
1
- export {};
@@ -1,21 +0,0 @@
1
- import test from 'ava';
2
- import { z } from 'zod';
3
- import { ENCODERS } from './encoder';
4
- const SampleSchema = z.object({
5
- channelKey: z.string(),
6
- timeStamp: z.number(),
7
- value: z.unknown(),
8
- });
9
- ENCODERS.forEach((encoder) => {
10
- test(`[encoder] - encoder ${encoder.contentType}`, (t) => {
11
- const sample = {
12
- channelKey: 'test',
13
- timeStamp: 123,
14
- value: new Uint8Array([1, 2, 3]),
15
- };
16
- const encoded = encoder.encode(sample);
17
- const decoded = encoder.decode(encoded, SampleSchema);
18
- t.deepEqual(decoded, decoded);
19
- });
20
- });
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jb2Rlci5zcGVjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9lbmNvZGVyLnNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxJQUFJLE1BQU0sS0FBSyxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFFeEIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVyQyxNQUFNLFlBQVksR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQzVCLFVBQVUsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO0lBQ3RCLFNBQVMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO0lBQ3JCLEtBQUssRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFO0NBQ25CLENBQUMsQ0FBQztBQUVILFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtJQUMzQixJQUFJLENBQUMsdUJBQXVCLE9BQU8sQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO1FBQ3ZELE1BQU0sTUFBTSxHQUFHO1lBQ2IsVUFBVSxFQUFFLE1BQU07WUFDbEIsU0FBUyxFQUFFLEdBQUc7WUFDZCxLQUFLLEVBQUUsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ2pDLENBQUM7UUFDRixNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ3RELENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2hDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMifQ==