@synnaxlabs/client 0.18.3 → 0.20.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 (275) hide show
  1. package/.turbo/turbo-build.log +5 -5
  2. package/README.md +1 -1
  3. package/dist/auth/auth.d.ts +1 -0
  4. package/dist/auth/auth.d.ts.map +1 -0
  5. package/dist/auth/auth.spec.d.ts +1 -0
  6. package/dist/auth/auth.spec.d.ts.map +1 -0
  7. package/dist/auth/index.d.ts +1 -0
  8. package/dist/auth/index.d.ts.map +1 -0
  9. package/dist/channel/batchRetriever.spec.d.ts +1 -0
  10. package/dist/channel/batchRetriever.spec.d.ts.map +1 -0
  11. package/dist/channel/channel.spec.d.ts +1 -0
  12. package/dist/channel/channel.spec.d.ts.map +1 -0
  13. package/dist/channel/client.d.ts +9 -7
  14. package/dist/channel/client.d.ts.map +1 -0
  15. package/dist/channel/external.d.ts +2 -1
  16. package/dist/channel/external.d.ts.map +1 -0
  17. package/dist/channel/index.d.ts +1 -0
  18. package/dist/channel/index.d.ts.map +1 -0
  19. package/dist/channel/payload.d.ts +3 -3
  20. package/dist/channel/payload.d.ts.map +1 -0
  21. package/dist/channel/retriever.d.ts +1 -0
  22. package/dist/channel/retriever.d.ts.map +1 -0
  23. package/dist/channel/writer.d.ts +22 -0
  24. package/dist/channel/writer.d.ts.map +1 -0
  25. package/dist/client.cjs +18 -18
  26. package/dist/client.cjs.map +1 -1
  27. package/dist/client.d.ts +3 -3
  28. package/dist/client.d.ts.map +1 -0
  29. package/dist/client.js +8285 -8248
  30. package/dist/client.js.map +1 -1
  31. package/dist/connection/checker.d.ts +1 -0
  32. package/dist/connection/checker.d.ts.map +1 -0
  33. package/dist/connection/connection.spec.d.ts +1 -0
  34. package/dist/connection/connection.spec.d.ts.map +1 -0
  35. package/dist/connection/index.d.ts +1 -0
  36. package/dist/connection/index.d.ts.map +1 -0
  37. package/dist/control/authority.d.ts +1 -0
  38. package/dist/control/authority.d.ts.map +1 -0
  39. package/dist/control/external.d.ts +1 -0
  40. package/dist/control/external.d.ts.map +1 -0
  41. package/dist/control/index.d.ts +1 -0
  42. package/dist/control/index.d.ts.map +1 -0
  43. package/dist/control/state.d.ts +1 -0
  44. package/dist/control/state.d.ts.map +1 -0
  45. package/dist/control/state.spec.d.ts +1 -0
  46. package/dist/control/state.spec.d.ts.map +1 -0
  47. package/dist/errors.d.ts +3 -2
  48. package/dist/errors.d.ts.map +1 -0
  49. package/dist/framer/adapter.d.ts +1 -0
  50. package/dist/framer/adapter.d.ts.map +1 -0
  51. package/dist/framer/adapter.spec.d.ts +1 -0
  52. package/dist/framer/adapter.spec.d.ts.map +1 -0
  53. package/dist/framer/client.d.ts +9 -15
  54. package/dist/framer/client.d.ts.map +1 -0
  55. package/dist/framer/client.spec.d.ts +2 -0
  56. package/dist/framer/client.spec.d.ts.map +1 -0
  57. package/dist/framer/external.d.ts +1 -0
  58. package/dist/framer/external.d.ts.map +1 -0
  59. package/dist/framer/frame.d.ts +25 -24
  60. package/dist/framer/frame.d.ts.map +1 -0
  61. package/dist/framer/frame.spec.d.ts +1 -0
  62. package/dist/framer/frame.spec.d.ts.map +1 -0
  63. package/dist/framer/index.d.ts +1 -0
  64. package/dist/framer/index.d.ts.map +1 -0
  65. package/dist/framer/iterator.d.ts +3 -2
  66. package/dist/framer/iterator.d.ts.map +1 -0
  67. package/dist/framer/iterator.spec.d.ts +1 -0
  68. package/dist/framer/iterator.spec.d.ts.map +1 -0
  69. package/dist/framer/streamProxy.d.ts +1 -0
  70. package/dist/framer/streamProxy.d.ts.map +1 -0
  71. package/dist/framer/streamer.d.ts +1 -0
  72. package/dist/framer/streamer.d.ts.map +1 -0
  73. package/dist/framer/streamer.spec.d.ts +1 -0
  74. package/dist/framer/streamer.spec.d.ts.map +1 -0
  75. package/dist/framer/writer.d.ts +21 -19
  76. package/dist/framer/writer.d.ts.map +1 -0
  77. package/dist/framer/writer.spec.d.ts +1 -0
  78. package/dist/framer/writer.spec.d.ts.map +1 -0
  79. package/dist/hardware/client.d.ts +1 -0
  80. package/dist/hardware/client.d.ts.map +1 -0
  81. package/dist/hardware/device/client.d.ts +1 -0
  82. package/dist/hardware/device/client.d.ts.map +1 -0
  83. package/dist/hardware/device/device.spec.d.ts +1 -0
  84. package/dist/hardware/device/device.spec.d.ts.map +1 -0
  85. package/dist/hardware/device/external.d.ts +1 -0
  86. package/dist/hardware/device/external.d.ts.map +1 -0
  87. package/dist/hardware/device/index.d.ts +1 -0
  88. package/dist/hardware/device/index.d.ts.map +1 -0
  89. package/dist/hardware/device/payload.d.ts +1 -0
  90. package/dist/hardware/device/payload.d.ts.map +1 -0
  91. package/dist/hardware/device/retriever.d.ts +1 -0
  92. package/dist/hardware/device/retriever.d.ts.map +1 -0
  93. package/dist/hardware/device/writer.d.ts +1 -0
  94. package/dist/hardware/device/writer.d.ts.map +1 -0
  95. package/dist/hardware/external.d.ts +1 -0
  96. package/dist/hardware/external.d.ts.map +1 -0
  97. package/dist/hardware/index.d.ts +1 -0
  98. package/dist/hardware/index.d.ts.map +1 -0
  99. package/dist/hardware/rack/client.d.ts +1 -0
  100. package/dist/hardware/rack/client.d.ts.map +1 -0
  101. package/dist/hardware/rack/external.d.ts +1 -0
  102. package/dist/hardware/rack/external.d.ts.map +1 -0
  103. package/dist/hardware/rack/index.d.ts +1 -0
  104. package/dist/hardware/rack/index.d.ts.map +1 -0
  105. package/dist/hardware/rack/payload.d.ts +1 -0
  106. package/dist/hardware/rack/payload.d.ts.map +1 -0
  107. package/dist/hardware/rack/rack.spec.d.ts +1 -0
  108. package/dist/hardware/rack/rack.spec.d.ts.map +1 -0
  109. package/dist/hardware/rack/retriever.d.ts +1 -0
  110. package/dist/hardware/rack/retriever.d.ts.map +1 -0
  111. package/dist/hardware/rack/writer.d.ts +1 -0
  112. package/dist/hardware/rack/writer.d.ts.map +1 -0
  113. package/dist/hardware/task/client.d.ts +1 -0
  114. package/dist/hardware/task/client.d.ts.map +1 -0
  115. package/dist/hardware/task/external.d.ts +1 -0
  116. package/dist/hardware/task/external.d.ts.map +1 -0
  117. package/dist/hardware/task/index.d.ts +1 -0
  118. package/dist/hardware/task/index.d.ts.map +1 -0
  119. package/dist/hardware/task/payload.d.ts +1 -0
  120. package/dist/hardware/task/payload.d.ts.map +1 -0
  121. package/dist/hardware/task/retriever.d.ts +1 -0
  122. package/dist/hardware/task/retriever.d.ts.map +1 -0
  123. package/dist/hardware/task/task.spec.d.ts +1 -0
  124. package/dist/hardware/task/task.spec.d.ts.map +1 -0
  125. package/dist/hardware/task/writer.d.ts +1 -0
  126. package/dist/hardware/task/writer.d.ts.map +1 -0
  127. package/dist/index.d.ts +1 -0
  128. package/dist/index.d.ts.map +1 -0
  129. package/dist/label/client.d.ts +1 -0
  130. package/dist/label/client.d.ts.map +1 -0
  131. package/dist/label/external.d.ts +1 -0
  132. package/dist/label/external.d.ts.map +1 -0
  133. package/dist/label/index.d.ts +1 -0
  134. package/dist/label/index.d.ts.map +1 -0
  135. package/dist/label/label.spec.d.ts +1 -0
  136. package/dist/label/label.spec.d.ts.map +1 -0
  137. package/dist/label/payload.d.ts +1 -0
  138. package/dist/label/payload.d.ts.map +1 -0
  139. package/dist/label/retriever.d.ts +1 -0
  140. package/dist/label/retriever.d.ts.map +1 -0
  141. package/dist/label/writer.d.ts +1 -0
  142. package/dist/label/writer.d.ts.map +1 -0
  143. package/dist/ontology/client.d.ts +1 -0
  144. package/dist/ontology/client.d.ts.map +1 -0
  145. package/dist/ontology/external.d.ts +1 -0
  146. package/dist/ontology/external.d.ts.map +1 -0
  147. package/dist/ontology/group/client.d.ts +1 -0
  148. package/dist/ontology/group/client.d.ts.map +1 -0
  149. package/dist/ontology/group/external.d.ts +1 -0
  150. package/dist/ontology/group/external.d.ts.map +1 -0
  151. package/dist/ontology/group/group.d.ts +1 -0
  152. package/dist/ontology/group/group.d.ts.map +1 -0
  153. package/dist/ontology/group/group.spec.d.ts +1 -0
  154. package/dist/ontology/group/group.spec.d.ts.map +1 -0
  155. package/dist/ontology/group/index.d.ts +1 -0
  156. package/dist/ontology/group/index.d.ts.map +1 -0
  157. package/dist/ontology/group/payload.d.ts +1 -0
  158. package/dist/ontology/group/payload.d.ts.map +1 -0
  159. package/dist/ontology/group/writer.d.ts +1 -0
  160. package/dist/ontology/group/writer.d.ts.map +1 -0
  161. package/dist/ontology/index.d.ts +1 -0
  162. package/dist/ontology/index.d.ts.map +1 -0
  163. package/dist/ontology/ontology.spec.d.ts +1 -0
  164. package/dist/ontology/ontology.spec.d.ts.map +1 -0
  165. package/dist/ontology/payload.d.ts +1 -0
  166. package/dist/ontology/payload.d.ts.map +1 -0
  167. package/dist/ontology/retriever.d.ts +1 -0
  168. package/dist/ontology/retriever.d.ts.map +1 -0
  169. package/dist/ontology/signals.d.ts +1 -0
  170. package/dist/ontology/signals.d.ts.map +1 -0
  171. package/dist/ontology/writer.d.ts +1 -0
  172. package/dist/ontology/writer.d.ts.map +1 -0
  173. package/dist/ranger/active.d.ts +1 -0
  174. package/dist/ranger/active.d.ts.map +1 -0
  175. package/dist/ranger/alias.d.ts +1 -0
  176. package/dist/ranger/alias.d.ts.map +1 -0
  177. package/dist/ranger/client.d.ts +1 -0
  178. package/dist/ranger/client.d.ts.map +1 -0
  179. package/dist/ranger/external.d.ts +1 -0
  180. package/dist/ranger/external.d.ts.map +1 -0
  181. package/dist/ranger/index.d.ts +1 -0
  182. package/dist/ranger/index.d.ts.map +1 -0
  183. package/dist/ranger/kv.d.ts +1 -0
  184. package/dist/ranger/kv.d.ts.map +1 -0
  185. package/dist/ranger/payload.d.ts +29 -28
  186. package/dist/ranger/payload.d.ts.map +1 -0
  187. package/dist/ranger/range.d.ts +1 -0
  188. package/dist/ranger/range.d.ts.map +1 -0
  189. package/dist/ranger/ranger.spec.d.ts +1 -0
  190. package/dist/ranger/ranger.spec.d.ts.map +1 -0
  191. package/dist/ranger/retriever.d.ts +1 -0
  192. package/dist/ranger/retriever.d.ts.map +1 -0
  193. package/dist/ranger/writer.d.ts +1 -0
  194. package/dist/ranger/writer.d.ts.map +1 -0
  195. package/dist/setupspecs.d.ts +1 -0
  196. package/dist/setupspecs.d.ts.map +1 -0
  197. package/dist/signals/external.d.ts +1 -0
  198. package/dist/signals/external.d.ts.map +1 -0
  199. package/dist/signals/index.d.ts +1 -0
  200. package/dist/signals/index.d.ts.map +1 -0
  201. package/dist/signals/observable.d.ts +1 -0
  202. package/dist/signals/observable.d.ts.map +1 -0
  203. package/dist/transport.d.ts +1 -0
  204. package/dist/transport.d.ts.map +1 -0
  205. package/dist/user/index.d.ts +1 -0
  206. package/dist/user/index.d.ts.map +1 -0
  207. package/dist/user/payload.d.ts +1 -0
  208. package/dist/user/payload.d.ts.map +1 -0
  209. package/dist/util/telem.d.ts +1 -0
  210. package/dist/util/telem.d.ts.map +1 -0
  211. package/dist/workspace/client.d.ts +1 -0
  212. package/dist/workspace/client.d.ts.map +1 -0
  213. package/dist/workspace/external.d.ts +1 -0
  214. package/dist/workspace/external.d.ts.map +1 -0
  215. package/dist/workspace/index.d.ts +1 -0
  216. package/dist/workspace/index.d.ts.map +1 -0
  217. package/dist/workspace/lineplot/client.d.ts +1 -0
  218. package/dist/workspace/lineplot/client.d.ts.map +1 -0
  219. package/dist/workspace/lineplot/external.d.ts +1 -0
  220. package/dist/workspace/lineplot/external.d.ts.map +1 -0
  221. package/dist/workspace/lineplot/index.d.ts +1 -0
  222. package/dist/workspace/lineplot/index.d.ts.map +1 -0
  223. package/dist/workspace/lineplot/linePlot.spec.d.ts +1 -0
  224. package/dist/workspace/lineplot/linePlot.spec.d.ts.map +1 -0
  225. package/dist/workspace/lineplot/payload.d.ts +1 -0
  226. package/dist/workspace/lineplot/payload.d.ts.map +1 -0
  227. package/dist/workspace/lineplot/retriever.d.ts +1 -0
  228. package/dist/workspace/lineplot/retriever.d.ts.map +1 -0
  229. package/dist/workspace/lineplot/writer.d.ts +1 -0
  230. package/dist/workspace/lineplot/writer.d.ts.map +1 -0
  231. package/dist/workspace/payload.d.ts +1 -0
  232. package/dist/workspace/payload.d.ts.map +1 -0
  233. package/dist/workspace/pid/client.d.ts +1 -0
  234. package/dist/workspace/pid/client.d.ts.map +1 -0
  235. package/dist/workspace/pid/external.d.ts +1 -0
  236. package/dist/workspace/pid/external.d.ts.map +1 -0
  237. package/dist/workspace/pid/index.d.ts +1 -0
  238. package/dist/workspace/pid/index.d.ts.map +1 -0
  239. package/dist/workspace/pid/payload.d.ts +1 -0
  240. package/dist/workspace/pid/payload.d.ts.map +1 -0
  241. package/dist/workspace/pid/pid.spec.d.ts +1 -0
  242. package/dist/workspace/pid/pid.spec.d.ts.map +1 -0
  243. package/dist/workspace/pid/retriever.d.ts +1 -0
  244. package/dist/workspace/pid/retriever.d.ts.map +1 -0
  245. package/dist/workspace/pid/writer.d.ts +1 -0
  246. package/dist/workspace/pid/writer.d.ts.map +1 -0
  247. package/dist/workspace/retriever.d.ts +1 -0
  248. package/dist/workspace/retriever.d.ts.map +1 -0
  249. package/dist/workspace/workspace.spec.d.ts +1 -0
  250. package/dist/workspace/workspace.spec.d.ts.map +1 -0
  251. package/dist/workspace/writer.d.ts +1 -0
  252. package/dist/workspace/writer.d.ts.map +1 -0
  253. package/examples/node/liveStream.js +1 -1
  254. package/examples/node/package-lock.json +46 -47
  255. package/examples/node/package.json +2 -2
  256. package/examples/node/streamWrite.js +1 -1
  257. package/package.json +11 -11
  258. package/src/channel/channel.spec.ts +27 -0
  259. package/src/channel/client.ts +19 -13
  260. package/src/channel/external.ts +1 -1
  261. package/src/channel/payload.ts +1 -11
  262. package/src/channel/retriever.ts +1 -1
  263. package/src/channel/writer.ts +63 -0
  264. package/src/client.ts +24 -27
  265. package/src/control/state.spec.ts +2 -2
  266. package/src/errors.ts +2 -2
  267. package/src/framer/client.spec.ts +63 -0
  268. package/src/framer/client.ts +46 -14
  269. package/src/framer/iterator.spec.ts +2 -2
  270. package/src/framer/iterator.ts +7 -2
  271. package/src/framer/streamer.spec.ts +4 -4
  272. package/src/framer/writer.spec.ts +6 -6
  273. package/src/framer/writer.ts +6 -1
  274. package/dist/channel/creator.d.ts +0 -8
  275. package/src/channel/creator.ts +0 -44
@@ -9,13 +9,13 @@
9
9
 
10
10
  import { type StreamClient } from "@synnaxlabs/freighter";
11
11
  import {
12
- type Series,
13
- type TimeRange,
14
12
  type CrudeTimeStamp,
15
13
  type CrudeSeries,
14
+ type CrudeTimeRange,
15
+ type MultiSeries,
16
16
  } from "@synnaxlabs/x";
17
17
 
18
- import { type KeyOrName, type Params } from "@/channel/payload";
18
+ import { type KeysOrNames, type KeyOrName, type Params } from "@/channel/payload";
19
19
  import { type Retriever, analyzeParams } from "@/channel/retriever";
20
20
  import { Frame } from "@/framer/frame";
21
21
  import { Iterator } from "@/framer/iterator";
@@ -38,7 +38,7 @@ export class Client {
38
38
  * @param keys - A list of channel keys to iterate over.
39
39
  * @returns a new {@link TypedIterator}.
40
40
  */
41
- async openIterator(tr: TimeRange, channels: Params): Promise<Iterator> {
41
+ async openIterator(tr: CrudeTimeRange, channels: Params): Promise<Iterator> {
42
42
  return await Iterator._open(tr, channels, this.retriever, this.stream);
43
43
  }
44
44
 
@@ -84,45 +84,77 @@ export class Client {
84
84
  return await Streamer._open(this.retriever, this.stream, config as StreamerConfig);
85
85
  }
86
86
 
87
+ async write(
88
+ start: CrudeTimeStamp,
89
+ channel: KeyOrName,
90
+ data: CrudeSeries,
91
+ ): Promise<void>;
92
+
93
+ async write(
94
+ start: CrudeTimeStamp,
95
+ channels: KeysOrNames,
96
+ data: CrudeSeries[],
97
+ ): Promise<void>;
98
+
99
+ async write(
100
+ start: CrudeTimeStamp,
101
+ data: Record<KeyOrName, CrudeSeries>,
102
+ ): Promise<void>;
103
+
87
104
  /**
88
105
  * Writes telemetry to the given channel starting at the given timestamp.
89
106
  *
90
- * @param channel - The key of the channel to write to.
107
+ * @param channels - The key of the channel to write to.
91
108
  * @param start - The starting timestamp of the first sample in data.
92
109
  * @param data - The telemetry to write. This telemetry must have the same
93
110
  * data type as the channel.
94
111
  * @throws if the channel does not exist.
95
112
  */
96
113
  async write(
97
- channel: KeyOrName,
98
114
  start: CrudeTimeStamp,
99
- data: CrudeSeries,
115
+ channels: Params | Record<KeyOrName, CrudeSeries>,
116
+ data?: CrudeSeries | CrudeSeries[],
100
117
  ): Promise<void> {
118
+ if (data == null) {
119
+ const data_ = channels as Record<KeyOrName, CrudeSeries>;
120
+ const w = await this.openWriter({
121
+ start,
122
+ channels: Object.keys(data_),
123
+ mode: WriterMode.PersistOnly,
124
+ });
125
+ try {
126
+ await w.write(data_);
127
+ await w.commit();
128
+ } finally {
129
+ await w.close();
130
+ }
131
+ return;
132
+ }
101
133
  const w = await this.openWriter({
102
134
  start,
103
- channels: channel,
135
+ channels: channels as Params,
104
136
  mode: WriterMode.PersistOnly,
105
137
  });
106
138
  try {
107
- await w.write(channel, data);
139
+ await w.write(channels as Params, data);
108
140
  await w.commit();
109
141
  } finally {
110
142
  await w.close();
111
143
  }
112
144
  }
113
145
 
114
- async read(tr: TimeRange, channel: KeyOrName): Promise<Series>;
146
+ async read(tr: CrudeTimeRange, channel: KeyOrName): Promise<MultiSeries>;
115
147
 
116
- async read(tr: TimeRange, channels: Params): Promise<Frame>;
148
+ async read(tr: CrudeTimeRange, channels: Params): Promise<Frame>;
117
149
 
118
- async read(tr: TimeRange, channels: Params): Promise<Series | Frame> {
150
+ async read(tr: CrudeTimeRange, channels: Params): Promise<MultiSeries | Frame> {
119
151
  const { single } = analyzeParams(channels);
120
152
  const fr = await this.readFrame(tr, channels);
121
- if (single) return fr.series[0];
153
+ if (single) return fr.get(channels as KeyOrName);
122
154
  return fr;
123
155
  }
124
156
 
125
- private async readFrame(tr: TimeRange, params: Params): Promise<Frame> {
157
+ private async readFrame(tr: CrudeTimeRange, params: Params): Promise<Frame> {
126
158
  const i = await this.openIterator(tr, params);
127
159
  const frame = new Frame();
128
160
  try {
@@ -28,7 +28,7 @@ const newChannel = async (): Promise<channel.Channel> => {
28
28
  describe("Iterator", () => {
29
29
  test("happy path", async () => {
30
30
  const ch = await newChannel();
31
- const writer = await client.telem.openWriter({
31
+ const writer = await client.openWriter({
32
32
  start: TimeStamp.SECOND,
33
33
  channels: ch.key,
34
34
  });
@@ -42,7 +42,7 @@ describe("Iterator", () => {
42
42
  await writer.close();
43
43
  }
44
44
 
45
- const iter = await client.telem.openIterator(
45
+ const iter = await client.openIterator(
46
46
  new TimeRange(TimeSpan.ZERO, TimeSpan.seconds(4)),
47
47
  [ch.key],
48
48
  );
@@ -14,6 +14,7 @@ import {
14
14
  TimeRange,
15
15
  TimeSpan,
16
16
  TimeStamp,
17
+ type CrudeTimeRange,
17
18
  } from "@synnaxlabs/x";
18
19
  import { z } from "zod";
19
20
 
@@ -92,7 +93,7 @@ export class Iterator {
92
93
  * @param keys - The keys of the channels to iterate over.
93
94
  */
94
95
  static async _open(
95
- tr: TimeRange,
96
+ tr: CrudeTimeRange,
96
97
  channels: Params,
97
98
  retriever: Retriever,
98
99
  client: StreamClient,
@@ -100,7 +101,11 @@ export class Iterator {
100
101
  const adapter = await ReadFrameAdapter.open(retriever, channels);
101
102
  const stream = await client.stream(Iterator.ENDPOINT, reqZ, resZ);
102
103
  const iter = new Iterator(stream, adapter);
103
- await iter.execute({ command: Command.Open, keys: adapter.keys, bounds: tr });
104
+ await iter.execute({
105
+ command: Command.Open,
106
+ keys: adapter.keys,
107
+ bounds: new TimeRange(tr),
108
+ });
104
109
  return iter;
105
110
  }
106
111
 
@@ -26,9 +26,9 @@ const newChannel = async (): Promise<channel.Channel> =>
26
26
  describe("Streamer", () => {
27
27
  test("happy path", async () => {
28
28
  const ch = await newChannel();
29
- const streamer = await client.telem.openStreamer(ch.key);
29
+ const streamer = await client.openStreamer(ch.key);
30
30
  await new Promise((resolve) => setTimeout(resolve, 100));
31
- const writer = await client.telem.openWriter({
31
+ const writer = await client.openWriter({
32
32
  start: TimeStamp.now(),
33
33
  channels: ch.key,
34
34
  });
@@ -43,13 +43,13 @@ describe("Streamer", () => {
43
43
  test("open with config", async () => {
44
44
  const ch = await newChannel();
45
45
  await expect(
46
- client.telem.openStreamer({
46
+ client.openStreamer({
47
47
  channels: ch.key,
48
48
  from: TimeStamp.now(),
49
49
  }),
50
50
  ).resolves.not.toThrow();
51
51
  });
52
52
  it("should not throw an error when the streamer is opened with zero channels", async () => {
53
- await expect(client.telem.openStreamer([])).resolves.not.toThrow();
53
+ await expect(client.openStreamer([])).resolves.not.toThrow();
54
54
  });
55
55
  });
@@ -29,7 +29,7 @@ describe("Writer", () => {
29
29
  describe("Writer", () => {
30
30
  test("basic write", async () => {
31
31
  const ch = await newChannel();
32
- const writer = await client.telem.openWriter({ start: 0, channels: ch.key });
32
+ const writer = await client.openWriter({ start: 0, channels: ch.key });
33
33
  try {
34
34
  await writer.write(ch.key, randomSeries(10, ch.dataType));
35
35
  await writer.commit();
@@ -40,7 +40,7 @@ describe("Writer", () => {
40
40
  });
41
41
  test("write to unknown channel key", async () => {
42
42
  const ch = await newChannel();
43
- const writer = await client.telem.openWriter({ start: 0, channels: ch.key });
43
+ const writer = await client.openWriter({ start: 0, channels: ch.key });
44
44
  await expect(
45
45
  writer.write("billy bob", randomSeries(10, DataType.FLOAT64)),
46
46
  ).rejects.toThrow("Channel billy bob not found");
@@ -48,8 +48,8 @@ describe("Writer", () => {
48
48
  });
49
49
  test("stream when mode is set ot persist only", async () => {
50
50
  const ch = await newChannel();
51
- const stream = await client.telem.openStreamer(ch.key);
52
- const writer = await client.telem.openWriter({
51
+ const stream = await client.openStreamer(ch.key);
52
+ const writer = await client.openWriter({
53
53
  start: 0,
54
54
  channels: ch.key,
55
55
  mode: WriterMode.PersistOnly,
@@ -71,8 +71,8 @@ describe("Writer", () => {
71
71
  test("Client - basic write", async () => {
72
72
  const ch = await newChannel();
73
73
  const data = randomSeries(10, ch.dataType);
74
- await client.telem.write(ch.key, TimeStamp.seconds(1), data);
75
- const res = await client.telem.read(TimeRange.MAX, ch.key);
74
+ await client.write(TimeStamp.seconds(1), ch.key, data);
75
+ const res = await client.read(TimeRange.MAX, ch.key);
76
76
  expect(res.length).toEqual(data.length);
77
77
  expect(res.data).toEqual(data);
78
78
  });
@@ -163,7 +163,12 @@ export class Writer {
163
163
 
164
164
  async write(channel: KeysOrNames, data: CrudeSeries[]): Promise<boolean>;
165
165
 
166
- async write(frame: CrudeFrame): Promise<boolean>;
166
+ async write(frame: CrudeFrame | Record<KeyOrName, CrudeSeries>): Promise<boolean>;
167
+
168
+ async write(
169
+ channelsOrData: Params | Record<KeyOrName, CrudeSeries> | CrudeFrame,
170
+ series?: CrudeSeries | CrudeSeries[],
171
+ ): Promise<boolean>;
167
172
 
168
173
  /**
169
174
  * Writes the given frame to the database.
@@ -1,8 +0,0 @@
1
- import type { UnaryClient } from "@synnaxlabs/freighter";
2
- import { type Payload, type NewPayload } from './payload';
3
- export declare class Creator {
4
- private static readonly ENDPOINT;
5
- private readonly client;
6
- constructor(client: UnaryClient);
7
- create(channels: NewPayload[]): Promise<Payload[]>;
8
- }
@@ -1,44 +0,0 @@
1
- // Copyright 2023 Synnax Labs, Inc.
2
- //
3
- // Use of this software is governed by the Business Source License included in the file
4
- // licenses/BSL.txt.
5
- //
6
- // As of the Change Date specified in that file, in accordance with the Business Source
7
- // License, use of this software will be governed by the Apache License, Version 2.0,
8
- // included in the file licenses/APL.txt.
9
-
10
- import type { UnaryClient } from "@synnaxlabs/freighter";
11
- import { z } from "zod";
12
-
13
- import {
14
- type Payload,
15
- payload,
16
- parseChannels,
17
- newPayload,
18
- type NewPayload,
19
- } from "@/channel/payload";
20
-
21
- const reqZ = z.object({ channels: newPayload.array() });
22
-
23
- const resZ = z.object({ channels: payload.array() });
24
-
25
- export class Creator {
26
- private static readonly ENDPOINT = "/channel/create";
27
- private readonly client: UnaryClient;
28
-
29
- constructor(client: UnaryClient) {
30
- this.client = client;
31
- }
32
-
33
- async create(channels: NewPayload[]): Promise<Payload[]> {
34
- const req = { channels: parseChannels(channels) };
35
- const [res, err] = await this.client.send<typeof reqZ, typeof resZ>(
36
- Creator.ENDPOINT,
37
- req,
38
- reqZ,
39
- resZ,
40
- );
41
- if (err != null) throw err;
42
- return res.channels;
43
- }
44
- }