@synnaxlabs/freighter 0.24.0 → 0.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/http.d.ts CHANGED
@@ -1,7 +1,7 @@
1
- import { UnaryClient } from './unary';
2
- import { MiddlewareCollector } from './middleware';
3
- import { z } from 'zod';
4
1
  import { binary, URL } from '@synnaxlabs/x';
2
+ import { z } from 'zod';
3
+ import { MiddlewareCollector } from './middleware';
4
+ import { UnaryClient } from './unary';
5
5
 
6
6
  export declare const CONTENT_TYPE_HEADER_KEY = "Content-Type";
7
7
  /**
@@ -13,9 +13,9 @@ export declare const CONTENT_TYPE_HEADER_KEY = "Content-Type";
13
13
  */
14
14
  export declare class HTTPClient extends MiddlewareCollector implements UnaryClient {
15
15
  endpoint: URL;
16
- encoder: binary.EncoderDecoder;
16
+ encoder: binary.Codec;
17
17
  fetch: typeof fetch;
18
- constructor(endpoint: URL, encoder: binary.EncoderDecoder, secure?: boolean);
18
+ constructor(endpoint: URL, encoder: binary.Codec, secure?: boolean);
19
19
  get headers(): Record<string, string>;
20
20
  send<RQ extends z.ZodTypeAny, RS extends z.ZodTypeAny = RQ>(target: string, req: z.input<RQ> | z.output<RQ>, reqSchema: RQ, resSchema: RS): Promise<[z.output<RS> | null, Error | null]>;
21
21
  }
@@ -1 +1 @@
1
- {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,KAAK,MAAM,EAAU,KAAK,GAAG,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,CAAC;AAG7B,OAAO,EAAgB,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C,eAAO,MAAM,uBAAuB,iBAAiB,CAAC;AAYtD;;;;;;GAMG;AACH,qBAAa,UAAW,SAAQ,mBAAoB,YAAW,WAAW;IACxE,QAAQ,EAAE,GAAG,CAAC;IACd,OAAO,EAAE,MAAM,CAAC,cAAc,CAAC;IAC/B,KAAK,EAAE,OAAO,KAAK,CAAC;gBAER,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,GAAE,OAAe;IAclF,IAAI,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAIpC;IAEK,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC,UAAU,EAAE,EAAE,SAAS,CAAC,CAAC,UAAU,GAAG,EAAE,EAC9D,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAC/B,SAAS,EAAE,EAAE,EACb,SAAS,EAAE,EAAE,GACZ,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC,CAAC;CAuDhD"}
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,KAAK,MAAM,EAAW,KAAK,GAAG,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,CAAC;AAG7B,OAAO,EAAgB,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C,eAAO,MAAM,uBAAuB,iBAAiB,CAAC;AAYtD;;;;;;GAMG;AACH,qBAAa,UAAW,SAAQ,mBAAoB,YAAW,WAAW;IACxE,QAAQ,EAAE,GAAG,CAAC;IACd,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC;IACtB,KAAK,EAAE,OAAO,KAAK,CAAC;gBAER,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,GAAE,OAAe;IAczE,IAAI,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAIpC;IAEK,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC,UAAU,EAAE,EAAE,SAAS,CAAC,CAAC,UAAU,GAAG,EAAE,EAC9D,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAC/B,SAAS,EAAE,EAAE,EACb,SAAS,EAAE,EAAE,GACZ,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC,CAAC;CAuDhD"}
package/dist/stream.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { Transport } from './transport';
2
1
  import { z } from 'zod';
2
+ import { Transport } from './transport';
3
3
 
4
4
  /**
5
5
  * Interface for an entity that receives a stream of responses.
package/dist/unary.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { Transport } from './transport';
2
1
  import { z } from 'zod';
2
+ import { Transport } from './transport';
3
3
 
4
4
  /**
5
5
  * An interface for an entity that implements a simple request-response
@@ -1 +1 @@
1
- {"version":3,"file":"unary.d.ts","sourceRoot":"","sources":["../src/unary.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C;;;GAGG;AACH,MAAM,WAAW,WAAY,SAAQ,SAAS;IAC5C;;;;;OAKG;IACH,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,UAAU,EAAE,EAAE,SAAS,CAAC,CAAC,UAAU,GAAG,EAAE,EAC1D,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAC/B,SAAS,EAAE,EAAE,EACb,SAAS,EAAE,EAAE,KACV,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;CACpD;AAED,eAAO,MAAM,YAAY,kEAIf,WAAW,UACX,MAAM,OACT,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC,aACpB,EAAE,aACF,EAAE,KACZ,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,CAItB,CAAC"}
1
+ {"version":3,"file":"unary.d.ts","sourceRoot":"","sources":["../src/unary.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C;;;GAGG;AACH,MAAM,WAAW,WAAY,SAAQ,SAAS;IAC5C;;;;;OAKG;IACH,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,UAAU,EAAE,EAAE,SAAS,CAAC,CAAC,UAAU,GAAG,EAAE,EAC1D,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAC/B,SAAS,EAAE,EAAE,EACb,SAAS,EAAE,EAAE,KACV,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;CACpD;AAED,eAAO,MAAM,YAAY,GACvB,EAAE,SAAS,CAAC,CAAC,UAAU,EACvB,EAAE,SAAS,CAAC,CAAC,UAAU,eAEf,WAAW,UACX,MAAM,OACT,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,aACpB,EAAE,aACF,EAAE,KACZ,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAItB,CAAC"}
@@ -1,7 +1,7 @@
1
- import { Stream, StreamClient } from './stream';
2
- import { MiddlewareCollector } from './middleware';
3
- import { z } from 'zod';
4
1
  import { binary, URL } from '@synnaxlabs/x';
2
+ import { z } from 'zod';
3
+ import { MiddlewareCollector } from './middleware';
4
+ import { Stream, StreamClient } from './stream';
5
5
 
6
6
  export declare const FREIGHTER_METADATA_PREFIX = "freighterctx";
7
7
  /**
@@ -10,14 +10,14 @@ export declare const FREIGHTER_METADATA_PREFIX = "freighterctx";
10
10
  */
11
11
  export declare class WebSocketClient extends MiddlewareCollector implements StreamClient {
12
12
  baseUrl: URL;
13
- encoder: binary.EncoderDecoder;
13
+ encoder: binary.Codec;
14
14
  static readonly MESSAGE_TYPE = "arraybuffer";
15
15
  /**
16
16
  * @param encoder - The encoder to use for encoding messages and decoding
17
17
  * responses.
18
18
  * @param baseEndpoint - A base url to use as a prefix for all requests.
19
19
  */
20
- constructor(baseEndpoint: URL, encoder: binary.EncoderDecoder, secure?: boolean);
20
+ constructor(baseEndpoint: URL, encoder: binary.Codec, secure?: boolean);
21
21
  /** Implements the StreamClient interface. */
22
22
  stream<RQ extends z.ZodTypeAny, RS extends z.ZodTypeAny = RQ>(target: string, reqSchema: RQ, resSchema: RS): Promise<Stream<RQ, RS>>;
23
23
  private buildURL;
@@ -1 +1 @@
1
- {"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../src/websocket.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,MAAM,EAA6B,KAAK,GAAG,EAAE,MAAM,eAAe,CAAC;AACjF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,EAAgB,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAgHrD,eAAO,MAAM,yBAAyB,iBAAiB,CAAC;AAQxD;;;GAGG;AACH,qBAAa,eAAgB,SAAQ,mBAAoB,YAAW,YAAY;IAC9E,OAAO,EAAE,GAAG,CAAC;IACb,OAAO,EAAE,MAAM,CAAC,cAAc,CAAC;IAE/B,MAAM,CAAC,QAAQ,CAAC,YAAY,iBAAiB;IAE7C;;;;OAIG;gBACS,YAAY,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,UAAQ;IAM7E,6CAA6C;IACvC,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC,UAAU,EAAE,EAAE,SAAS,CAAC,CAAC,UAAU,GAAG,EAAE,EAChE,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,EAAE,EACb,SAAS,EAAE,EAAE,GACZ,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAmB1B,OAAO,CAAC,QAAQ;YAWF,UAAU;CAezB"}
1
+ {"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../src/websocket.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,MAAM,EAA6B,KAAK,GAAG,EAAE,MAAM,eAAe,CAAC;AACjF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,EAAgB,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AA2GrD,eAAO,MAAM,yBAAyB,iBAAiB,CAAC;AAQxD;;;GAGG;AACH,qBAAa,eAAgB,SAAQ,mBAAoB,YAAW,YAAY;IAC9E,OAAO,EAAE,GAAG,CAAC;IACb,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC;IAEtB,MAAM,CAAC,QAAQ,CAAC,YAAY,iBAAiB;IAE7C;;;;OAIG;gBACS,YAAY,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,UAAQ;IAMpE,6CAA6C;IACvC,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC,UAAU,EAAE,EAAE,SAAS,CAAC,CAAC,UAAU,GAAG,EAAE,EAChE,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,EAAE,EACb,SAAS,EAAE,EAAE,GACZ,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAmB1B,OAAO,CAAC,QAAQ;YAWF,UAAU;CAezB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@synnaxlabs/freighter",
3
- "version": "0.24.0",
3
+ "version": "0.26.0",
4
4
  "type": "module",
5
5
  "description": "a modular transport abstraction",
6
6
  "repository": "https://github.com/synnaxlabs/synnax/tree/main/freighter/ts",
@@ -17,8 +17,8 @@
17
17
  "node-fetch": "2.6.11",
18
18
  "ws": "^8.17.0",
19
19
  "zod": "3.23.8",
20
- "@synnaxlabs/alamos": "0.24.0",
21
- "@synnaxlabs/x": "0.24.0"
20
+ "@synnaxlabs/alamos": "0.26.0",
21
+ "@synnaxlabs/x": "0.26.0"
22
22
  },
23
23
  "devDependencies": {
24
24
  "@types/node": "^20.12.7",
@@ -26,8 +26,8 @@
26
26
  "typescript": "^5.4.5",
27
27
  "vite": "5.2.11",
28
28
  "vitest": "^1.5.0",
29
- "@synnaxlabs/tsconfig": "0.0.2",
30
29
  "@synnaxlabs/vite-plugin": "0.0.1",
30
+ "@synnaxlabs/tsconfig": "0.0.2",
31
31
  "eslint-config-synnaxlabs": "0.0.1"
32
32
  },
33
33
  "peerDependencies": {
package/src/http.spec.ts CHANGED
@@ -7,7 +7,7 @@
7
7
  // License, use of this software will be governed by the Apache License, Version 2.0,
8
8
  // included in the file licenses/APL.txt.
9
9
 
10
- import { binary,URL } from "@synnaxlabs/x";
10
+ import { binary, URL } from "@synnaxlabs/x";
11
11
  import { describe, expect, test } from "vitest";
12
12
  import { z } from "zod";
13
13
 
@@ -20,7 +20,7 @@ const ENDPOINT = new URL({
20
20
  pathPrefix: "unary",
21
21
  });
22
22
 
23
- const client = new HTTPClient(ENDPOINT, new binary.JSONEncoderDecoder());
23
+ const client = new HTTPClient(ENDPOINT, new binary.JSONCodec());
24
24
 
25
25
  const messageZ = z.object({
26
26
  id: z.number().optional(),
package/src/http.ts CHANGED
@@ -17,7 +17,7 @@
17
17
  // License, use of this software will be governed by the Apache License, Version 2.0,
18
18
  // included in the file licenses/APL.txt.
19
19
 
20
- import { type binary,runtime, type URL } from "@synnaxlabs/x";
20
+ import { type binary, runtime, type URL } from "@synnaxlabs/x";
21
21
  import { type z } from "zod";
22
22
 
23
23
  import { decodeError, errorZ, Unreachable } from "@/errors";
@@ -45,10 +45,10 @@ const resolveFetchAPI = (protocol: "http" | "https"): typeof fetch => {
45
45
  */
46
46
  export class HTTPClient extends MiddlewareCollector implements UnaryClient {
47
47
  endpoint: URL;
48
- encoder: binary.EncoderDecoder;
48
+ encoder: binary.Codec;
49
49
  fetch: typeof fetch;
50
50
 
51
- constructor(endpoint: URL, encoder: binary.EncoderDecoder, secure: boolean = false) {
51
+ constructor(endpoint: URL, encoder: binary.Codec, secure: boolean = false) {
52
52
  super();
53
53
  this.endpoint = endpoint.replace({ protocol: secure ? "https" : "http" });
54
54
  this.encoder = encoder;
@@ -74,7 +74,7 @@ export class HTTPClient extends MiddlewareCollector implements UnaryClient {
74
74
  reqSchema: RQ,
75
75
  resSchema: RS,
76
76
  ): Promise<[z.output<RS> | null, Error | null]> {
77
- req = reqSchema?.parse(req)
77
+ req = reqSchema?.parse(req);
78
78
  let res: RS | null = null;
79
79
  const url = this.endpoint.child(target);
80
80
  const request: RequestInit = {};
@@ -31,7 +31,7 @@ const MessageSchema = z.object({
31
31
  message: z.string().optional(),
32
32
  });
33
33
 
34
- const client = new WebSocketClient(url, new binary.JSONEncoderDecoder());
34
+ const client = new WebSocketClient(url, new binary.JSONCodec());
35
35
 
36
36
  class MyCustomError extends BaseTypedError {
37
37
  code: number;
@@ -105,7 +105,7 @@ describe("websocket", () => {
105
105
  });
106
106
 
107
107
  test("middleware", async () => {
108
- const myClient = new WebSocketClient(url, new binary.JSONEncoderDecoder());
108
+ const myClient = new WebSocketClient(url, new binary.JSONCodec());
109
109
  let c = 0;
110
110
  myClient.use(async (md, next): Promise<[Context, Error | null]> => {
111
111
  if (md.params !== undefined) {
package/src/websocket.ts CHANGED
@@ -38,7 +38,7 @@ type ReceiveCallbacksQueue = Array<{
38
38
  class WebSocketStream<RQ extends z.ZodTypeAny, RS extends z.ZodTypeAny = RQ>
39
39
  implements Stream<RQ, RS>
40
40
  {
41
- private readonly encoder: binary.EncoderDecoder;
41
+ private readonly encoder: binary.Codec;
42
42
  private readonly reqSchema: RQ;
43
43
  private readonly resSchema: RS;
44
44
  private readonly ws: WebSocket;
@@ -47,12 +47,7 @@ class WebSocketStream<RQ extends z.ZodTypeAny, RS extends z.ZodTypeAny = RQ>
47
47
  private readonly receiveDataQueue: Message[] = [];
48
48
  private readonly receiveCallbacksQueue: ReceiveCallbacksQueue = [];
49
49
 
50
- constructor(
51
- ws: WebSocket,
52
- encoder: binary.EncoderDecoder,
53
- reqSchema: RQ,
54
- resSchema: RS,
55
- ) {
50
+ constructor(ws: WebSocket, encoder: binary.Codec, reqSchema: RQ, resSchema: RS) {
56
51
  this.encoder = encoder;
57
52
  this.reqSchema = reqSchema;
58
53
  this.resSchema = resSchema;
@@ -139,7 +134,7 @@ const isNormalClosure = (ev: CloseEvent): boolean => NORMAL_CLOSURES.includes(ev
139
134
  */
140
135
  export class WebSocketClient extends MiddlewareCollector implements StreamClient {
141
136
  baseUrl: URL;
142
- encoder: binary.EncoderDecoder;
137
+ encoder: binary.Codec;
143
138
 
144
139
  static readonly MESSAGE_TYPE = "arraybuffer";
145
140
 
@@ -148,7 +143,7 @@ export class WebSocketClient extends MiddlewareCollector implements StreamClient
148
143
  * responses.
149
144
  * @param baseEndpoint - A base url to use as a prefix for all requests.
150
145
  */
151
- constructor(baseEndpoint: URL, encoder: binary.EncoderDecoder, secure = false) {
146
+ constructor(baseEndpoint: URL, encoder: binary.Codec, secure = false) {
152
147
  super();
153
148
  this.baseUrl = baseEndpoint.replace({ protocol: secure ? "wss" : "ws" });
154
149
  this.encoder = encoder;