@synnaxlabs/client 0.49.0 → 0.49.2

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.
@@ -3,6 +3,7 @@ import { CrudeSeries, CrudeTimeRange, CrudeTimeStamp, MultiSeries } from '@synna
3
3
  import { channel } from '../channel';
4
4
  import { Frame } from './frame';
5
5
  import { Iterator, IteratorConfig } from './iterator';
6
+ import { ReadRequest } from './reader';
6
7
  import { Streamer, StreamerConfig } from './streamer';
7
8
  import { Writer, WriterConfig } from './writer';
8
9
  import { ontology } from '../ontology';
@@ -18,6 +19,7 @@ export declare class Client {
18
19
  private readonly streamClient;
19
20
  private readonly retriever;
20
21
  private readonly deleter;
22
+ private readonly reader;
21
23
  constructor(stream: WebSocketClient, unary: UnaryClient, retriever: channel.Retriever);
22
24
  /**
23
25
  * Opens a new iterator over the given channels within the provided time range.
@@ -53,6 +55,7 @@ export declare class Client {
53
55
  write(start: CrudeTimeStamp, data: Record<channel.KeyOrName, CrudeSeries>): Promise<void>;
54
56
  read(tr: CrudeTimeRange, channel: channel.KeyOrName): Promise<MultiSeries>;
55
57
  read(tr: CrudeTimeRange, channels: channel.Params): Promise<Frame>;
58
+ read(request: ReadRequest): Promise<ReadableStream<Uint8Array>>;
56
59
  private readFrame;
57
60
  readLatest(channel: channel.KeyOrName, n: number): Promise<MultiSeries>;
58
61
  readLatest(channels: channel.Params, n: number): Promise<Frame>;
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/framer/client.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC/E,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,WAAW,EAGjB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAa,QAAQ,EAAE,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,EAAgB,KAAK,QAAQ,EAAE,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACrF,OAAO,EAAE,MAAM,EAAE,KAAK,YAAY,EAAc,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,eAAO,MAAM,UAAU,2BAA6C,CAAC;AACrE,eAAO,MAAM,gBAAgB;;;;;;CAAiB,CAAC;AAE/C,qBAAa,MAAM;IACjB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAkB;IAC/C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoB;IAC9C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;gBAGhC,MAAM,EAAE,eAAe,EACvB,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,OAAO,CAAC,SAAS;IAO9B;;;;;;;OAOG;IACG,YAAY,CAChB,EAAE,EAAE,cAAc,EAClB,QAAQ,EAAE,OAAO,CAAC,MAAM,EACxB,IAAI,CAAC,EAAE,cAAc,GACpB,OAAO,CAAC,QAAQ,CAAC;IAIpB;;;;;;OAMG;IACG,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAIvD;;;;;;;;;;OAUG;IACG,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC;IAIvD,KAAK,CACT,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,OAAO,CAAC,SAAS,EAC1B,IAAI,EAAE,WAAW,GAChB,OAAO,CAAC,IAAI,CAAC;IAEV,KAAK,CACT,KAAK,EAAE,cAAc,EACrB,QAAQ,EAAE,OAAO,CAAC,WAAW,EAC7B,IAAI,EAAE,WAAW,EAAE,GAClB,OAAO,CAAC,IAAI,CAAC;IAEV,KAAK,CACT,KAAK,EAAE,cAAc,EACrB,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,WAAW,CAAC,GAC3C,OAAO,CAAC,IAAI,CAAC;IAuCV,IAAI,CAAC,EAAE,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC;IAE1E,IAAI,CAAC,EAAE,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;YAY1D,SAAS;IAcjB,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAEvE,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;YAYvD,gBAAgB;IAcxB,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;CAajF"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/framer/client.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC/E,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,WAAW,EAGjB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAa,QAAQ,EAAE,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,EAAU,KAAK,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAgB,KAAK,QAAQ,EAAE,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACrF,OAAO,EAAE,MAAM,EAAE,KAAK,YAAY,EAAc,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,eAAO,MAAM,UAAU,2BAA6C,CAAC;AACrE,eAAO,MAAM,gBAAgB;;;;;;CAAiB,CAAC;AAE/C,qBAAa,MAAM;IACjB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAkB;IAC/C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoB;IAC9C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAG9B,MAAM,EAAE,eAAe,EACvB,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,OAAO,CAAC,SAAS;IAQ9B;;;;;;;OAOG;IACG,YAAY,CAChB,EAAE,EAAE,cAAc,EAClB,QAAQ,EAAE,OAAO,CAAC,MAAM,EACxB,IAAI,CAAC,EAAE,cAAc,GACpB,OAAO,CAAC,QAAQ,CAAC;IAIpB;;;;;;OAMG;IACG,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAIvD;;;;;;;;;;OAUG;IACG,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC;IAIvD,KAAK,CACT,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,OAAO,CAAC,SAAS,EAC1B,IAAI,EAAE,WAAW,GAChB,OAAO,CAAC,IAAI,CAAC;IAEV,KAAK,CACT,KAAK,EAAE,cAAc,EACrB,QAAQ,EAAE,OAAO,CAAC,WAAW,EAC7B,IAAI,EAAE,WAAW,EAAE,GAClB,OAAO,CAAC,IAAI,CAAC;IAEV,KAAK,CACT,KAAK,EAAE,cAAc,EACrB,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,WAAW,CAAC,GAC3C,OAAO,CAAC,IAAI,CAAC;IAuCV,IAAI,CAAC,EAAE,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC;IAC1E,IAAI,CAAC,EAAE,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAClE,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;YAYvD,SAAS;IAcjB,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAEvE,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;YAYvD,gBAAgB;IAcxB,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;CAOjF"}
@@ -0,0 +1,16 @@
1
+ import { WebSocketClient } from '@synnaxlabs/freighter';
2
+ import { CrudeTimeRange } from '@synnaxlabs/x';
3
+ import { channel } from '../channel';
4
+ export interface ReadRequest {
5
+ channels: channel.Params;
6
+ timeRange: CrudeTimeRange;
7
+ channelNames?: Map<channel.KeyOrName, string>;
8
+ responseType: "csv";
9
+ }
10
+ export declare class Reader {
11
+ private readonly retriever;
12
+ private readonly streamClient;
13
+ constructor(retriever: channel.Retriever, streamClient: WebSocketClient);
14
+ read(request: ReadRequest): Promise<ReadableStream<Uint8Array>>;
15
+ }
16
+ //# sourceMappingURL=reader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reader.d.ts","sourceRoot":"","sources":["../../../src/framer/reader.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,KAAK,cAAc,EAAgB,MAAM,eAAe,CAAC;AAElE,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC;IACzB,SAAS,EAAE,cAAc,CAAC;IAC1B,YAAY,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAC9C,YAAY,EAAE,KAAK,CAAC;CACrB;AAED,qBAAa,MAAM;IACjB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoB;IAC9C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAkB;gBAEnC,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,YAAY,EAAE,eAAe;IAKjE,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;CA2BtE"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=reader.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reader.spec.d.ts","sourceRoot":"","sources":["../../../src/framer/reader.spec.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@synnaxlabs/client",
3
- "version": "0.49.0",
3
+ "version": "0.49.2",
4
4
  "description": "The Synnax Client Library",
5
5
  "keywords": [
6
6
  "synnax",
@@ -27,7 +27,7 @@
27
27
  "async-mutex": "^0.5.0",
28
28
  "zod": "^4.1.12",
29
29
  "@synnaxlabs/freighter": "^0.49.0",
30
- "@synnaxlabs/x": "^0.49.0"
30
+ "@synnaxlabs/x": "^0.49.2"
31
31
  },
32
32
  "devDependencies": {
33
33
  "@vitest/coverage-v8": "^3.2.4",
@@ -21,6 +21,7 @@ import { channel } from "@/channel";
21
21
  import { Deleter } from "@/framer/deleter";
22
22
  import { Frame } from "@/framer/frame";
23
23
  import { AUTO_SPAN, Iterator, type IteratorConfig } from "@/framer/iterator";
24
+ import { Reader, type ReadRequest } from "@/framer/reader";
24
25
  import { openStreamer, type Streamer, type StreamerConfig } from "@/framer/streamer";
25
26
  import { Writer, type WriterConfig, WriterMode } from "@/framer/writer";
26
27
  import { ontology } from "@/ontology";
@@ -32,6 +33,7 @@ export class Client {
32
33
  private readonly streamClient: WebSocketClient;
33
34
  private readonly retriever: channel.Retriever;
34
35
  private readonly deleter: Deleter;
36
+ private readonly reader: Reader;
35
37
 
36
38
  constructor(
37
39
  stream: WebSocketClient,
@@ -41,6 +43,7 @@ export class Client {
41
43
  this.streamClient = stream;
42
44
  this.retriever = retriever;
43
45
  this.deleter = new Deleter(unary);
46
+ this.reader = new Reader(retriever, stream);
44
47
  }
45
48
 
46
49
  /**
@@ -140,15 +143,15 @@ export class Client {
140
143
  }
141
144
 
142
145
  async read(tr: CrudeTimeRange, channel: channel.KeyOrName): Promise<MultiSeries>;
143
-
144
146
  async read(tr: CrudeTimeRange, channels: channel.Params): Promise<Frame>;
145
-
147
+ async read(request: ReadRequest): Promise<ReadableStream<Uint8Array>>;
146
148
  async read(
147
- tr: CrudeTimeRange,
148
- channels: channel.Params,
149
- ): Promise<MultiSeries | Frame> {
150
- const { single } = channel.analyzeParams(channels);
151
- const fr = await this.readFrame(tr, channels);
149
+ tr: CrudeTimeRange | ReadRequest,
150
+ channels?: channel.Params,
151
+ ): Promise<MultiSeries | Frame | ReadableStream<Uint8Array>> {
152
+ if (!("start" in tr)) return this.reader.read(tr);
153
+ const { single } = channel.analyzeParams(channels!);
154
+ const fr = await this.readFrame(tr, channels!);
152
155
  if (single) return fr.get(channels as channel.KeyOrName);
153
156
  return fr;
154
157
  }
@@ -199,13 +202,7 @@ export class Client {
199
202
  const { normalized, variant } = channel.analyzeParams(channels);
200
203
  const bounds = new TimeRange(timeRange);
201
204
  if (variant === "keys")
202
- return await this.deleter.delete({
203
- keys: normalized as channel.Key[],
204
- bounds,
205
- });
206
- return await this.deleter.delete({
207
- names: normalized as string[],
208
- bounds,
209
- });
205
+ return await this.deleter.delete({ keys: normalized as channel.Key[], bounds });
206
+ return await this.deleter.delete({ names: normalized as string[], bounds });
210
207
  }
211
208
  }