@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.
- package/.turbo/turbo-build.log +5 -5
- package/README.md +1 -1
- package/dist/auth/auth.d.ts +1 -0
- package/dist/auth/auth.d.ts.map +1 -0
- package/dist/auth/auth.spec.d.ts +1 -0
- package/dist/auth/auth.spec.d.ts.map +1 -0
- package/dist/auth/index.d.ts +1 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/channel/batchRetriever.spec.d.ts +1 -0
- package/dist/channel/batchRetriever.spec.d.ts.map +1 -0
- package/dist/channel/channel.spec.d.ts +1 -0
- package/dist/channel/channel.spec.d.ts.map +1 -0
- package/dist/channel/client.d.ts +9 -7
- package/dist/channel/client.d.ts.map +1 -0
- package/dist/channel/external.d.ts +2 -1
- package/dist/channel/external.d.ts.map +1 -0
- package/dist/channel/index.d.ts +1 -0
- package/dist/channel/index.d.ts.map +1 -0
- package/dist/channel/payload.d.ts +3 -3
- package/dist/channel/payload.d.ts.map +1 -0
- package/dist/channel/retriever.d.ts +1 -0
- package/dist/channel/retriever.d.ts.map +1 -0
- package/dist/channel/writer.d.ts +22 -0
- package/dist/channel/writer.d.ts.map +1 -0
- package/dist/client.cjs +18 -18
- package/dist/client.cjs.map +1 -1
- package/dist/client.d.ts +3 -3
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +8285 -8248
- package/dist/client.js.map +1 -1
- package/dist/connection/checker.d.ts +1 -0
- package/dist/connection/checker.d.ts.map +1 -0
- package/dist/connection/connection.spec.d.ts +1 -0
- package/dist/connection/connection.spec.d.ts.map +1 -0
- package/dist/connection/index.d.ts +1 -0
- package/dist/connection/index.d.ts.map +1 -0
- package/dist/control/authority.d.ts +1 -0
- package/dist/control/authority.d.ts.map +1 -0
- package/dist/control/external.d.ts +1 -0
- package/dist/control/external.d.ts.map +1 -0
- package/dist/control/index.d.ts +1 -0
- package/dist/control/index.d.ts.map +1 -0
- package/dist/control/state.d.ts +1 -0
- package/dist/control/state.d.ts.map +1 -0
- package/dist/control/state.spec.d.ts +1 -0
- package/dist/control/state.spec.d.ts.map +1 -0
- package/dist/errors.d.ts +3 -2
- package/dist/errors.d.ts.map +1 -0
- package/dist/framer/adapter.d.ts +1 -0
- package/dist/framer/adapter.d.ts.map +1 -0
- package/dist/framer/adapter.spec.d.ts +1 -0
- package/dist/framer/adapter.spec.d.ts.map +1 -0
- package/dist/framer/client.d.ts +9 -15
- package/dist/framer/client.d.ts.map +1 -0
- package/dist/framer/client.spec.d.ts +2 -0
- package/dist/framer/client.spec.d.ts.map +1 -0
- package/dist/framer/external.d.ts +1 -0
- package/dist/framer/external.d.ts.map +1 -0
- package/dist/framer/frame.d.ts +25 -24
- package/dist/framer/frame.d.ts.map +1 -0
- package/dist/framer/frame.spec.d.ts +1 -0
- package/dist/framer/frame.spec.d.ts.map +1 -0
- package/dist/framer/index.d.ts +1 -0
- package/dist/framer/index.d.ts.map +1 -0
- package/dist/framer/iterator.d.ts +3 -2
- package/dist/framer/iterator.d.ts.map +1 -0
- package/dist/framer/iterator.spec.d.ts +1 -0
- package/dist/framer/iterator.spec.d.ts.map +1 -0
- package/dist/framer/streamProxy.d.ts +1 -0
- package/dist/framer/streamProxy.d.ts.map +1 -0
- package/dist/framer/streamer.d.ts +1 -0
- package/dist/framer/streamer.d.ts.map +1 -0
- package/dist/framer/streamer.spec.d.ts +1 -0
- package/dist/framer/streamer.spec.d.ts.map +1 -0
- package/dist/framer/writer.d.ts +21 -19
- package/dist/framer/writer.d.ts.map +1 -0
- package/dist/framer/writer.spec.d.ts +1 -0
- package/dist/framer/writer.spec.d.ts.map +1 -0
- package/dist/hardware/client.d.ts +1 -0
- package/dist/hardware/client.d.ts.map +1 -0
- package/dist/hardware/device/client.d.ts +1 -0
- package/dist/hardware/device/client.d.ts.map +1 -0
- package/dist/hardware/device/device.spec.d.ts +1 -0
- package/dist/hardware/device/device.spec.d.ts.map +1 -0
- package/dist/hardware/device/external.d.ts +1 -0
- package/dist/hardware/device/external.d.ts.map +1 -0
- package/dist/hardware/device/index.d.ts +1 -0
- package/dist/hardware/device/index.d.ts.map +1 -0
- package/dist/hardware/device/payload.d.ts +1 -0
- package/dist/hardware/device/payload.d.ts.map +1 -0
- package/dist/hardware/device/retriever.d.ts +1 -0
- package/dist/hardware/device/retriever.d.ts.map +1 -0
- package/dist/hardware/device/writer.d.ts +1 -0
- package/dist/hardware/device/writer.d.ts.map +1 -0
- package/dist/hardware/external.d.ts +1 -0
- package/dist/hardware/external.d.ts.map +1 -0
- package/dist/hardware/index.d.ts +1 -0
- package/dist/hardware/index.d.ts.map +1 -0
- package/dist/hardware/rack/client.d.ts +1 -0
- package/dist/hardware/rack/client.d.ts.map +1 -0
- package/dist/hardware/rack/external.d.ts +1 -0
- package/dist/hardware/rack/external.d.ts.map +1 -0
- package/dist/hardware/rack/index.d.ts +1 -0
- package/dist/hardware/rack/index.d.ts.map +1 -0
- package/dist/hardware/rack/payload.d.ts +1 -0
- package/dist/hardware/rack/payload.d.ts.map +1 -0
- package/dist/hardware/rack/rack.spec.d.ts +1 -0
- package/dist/hardware/rack/rack.spec.d.ts.map +1 -0
- package/dist/hardware/rack/retriever.d.ts +1 -0
- package/dist/hardware/rack/retriever.d.ts.map +1 -0
- package/dist/hardware/rack/writer.d.ts +1 -0
- package/dist/hardware/rack/writer.d.ts.map +1 -0
- package/dist/hardware/task/client.d.ts +1 -0
- package/dist/hardware/task/client.d.ts.map +1 -0
- package/dist/hardware/task/external.d.ts +1 -0
- package/dist/hardware/task/external.d.ts.map +1 -0
- package/dist/hardware/task/index.d.ts +1 -0
- package/dist/hardware/task/index.d.ts.map +1 -0
- package/dist/hardware/task/payload.d.ts +1 -0
- package/dist/hardware/task/payload.d.ts.map +1 -0
- package/dist/hardware/task/retriever.d.ts +1 -0
- package/dist/hardware/task/retriever.d.ts.map +1 -0
- package/dist/hardware/task/task.spec.d.ts +1 -0
- package/dist/hardware/task/task.spec.d.ts.map +1 -0
- package/dist/hardware/task/writer.d.ts +1 -0
- package/dist/hardware/task/writer.d.ts.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/label/client.d.ts +1 -0
- package/dist/label/client.d.ts.map +1 -0
- package/dist/label/external.d.ts +1 -0
- package/dist/label/external.d.ts.map +1 -0
- package/dist/label/index.d.ts +1 -0
- package/dist/label/index.d.ts.map +1 -0
- package/dist/label/label.spec.d.ts +1 -0
- package/dist/label/label.spec.d.ts.map +1 -0
- package/dist/label/payload.d.ts +1 -0
- package/dist/label/payload.d.ts.map +1 -0
- package/dist/label/retriever.d.ts +1 -0
- package/dist/label/retriever.d.ts.map +1 -0
- package/dist/label/writer.d.ts +1 -0
- package/dist/label/writer.d.ts.map +1 -0
- package/dist/ontology/client.d.ts +1 -0
- package/dist/ontology/client.d.ts.map +1 -0
- package/dist/ontology/external.d.ts +1 -0
- package/dist/ontology/external.d.ts.map +1 -0
- package/dist/ontology/group/client.d.ts +1 -0
- package/dist/ontology/group/client.d.ts.map +1 -0
- package/dist/ontology/group/external.d.ts +1 -0
- package/dist/ontology/group/external.d.ts.map +1 -0
- package/dist/ontology/group/group.d.ts +1 -0
- package/dist/ontology/group/group.d.ts.map +1 -0
- package/dist/ontology/group/group.spec.d.ts +1 -0
- package/dist/ontology/group/group.spec.d.ts.map +1 -0
- package/dist/ontology/group/index.d.ts +1 -0
- package/dist/ontology/group/index.d.ts.map +1 -0
- package/dist/ontology/group/payload.d.ts +1 -0
- package/dist/ontology/group/payload.d.ts.map +1 -0
- package/dist/ontology/group/writer.d.ts +1 -0
- package/dist/ontology/group/writer.d.ts.map +1 -0
- package/dist/ontology/index.d.ts +1 -0
- package/dist/ontology/index.d.ts.map +1 -0
- package/dist/ontology/ontology.spec.d.ts +1 -0
- package/dist/ontology/ontology.spec.d.ts.map +1 -0
- package/dist/ontology/payload.d.ts +1 -0
- package/dist/ontology/payload.d.ts.map +1 -0
- package/dist/ontology/retriever.d.ts +1 -0
- package/dist/ontology/retriever.d.ts.map +1 -0
- package/dist/ontology/signals.d.ts +1 -0
- package/dist/ontology/signals.d.ts.map +1 -0
- package/dist/ontology/writer.d.ts +1 -0
- package/dist/ontology/writer.d.ts.map +1 -0
- package/dist/ranger/active.d.ts +1 -0
- package/dist/ranger/active.d.ts.map +1 -0
- package/dist/ranger/alias.d.ts +1 -0
- package/dist/ranger/alias.d.ts.map +1 -0
- package/dist/ranger/client.d.ts +1 -0
- package/dist/ranger/client.d.ts.map +1 -0
- package/dist/ranger/external.d.ts +1 -0
- package/dist/ranger/external.d.ts.map +1 -0
- package/dist/ranger/index.d.ts +1 -0
- package/dist/ranger/index.d.ts.map +1 -0
- package/dist/ranger/kv.d.ts +1 -0
- package/dist/ranger/kv.d.ts.map +1 -0
- package/dist/ranger/payload.d.ts +29 -28
- package/dist/ranger/payload.d.ts.map +1 -0
- package/dist/ranger/range.d.ts +1 -0
- package/dist/ranger/range.d.ts.map +1 -0
- package/dist/ranger/ranger.spec.d.ts +1 -0
- package/dist/ranger/ranger.spec.d.ts.map +1 -0
- package/dist/ranger/retriever.d.ts +1 -0
- package/dist/ranger/retriever.d.ts.map +1 -0
- package/dist/ranger/writer.d.ts +1 -0
- package/dist/ranger/writer.d.ts.map +1 -0
- package/dist/setupspecs.d.ts +1 -0
- package/dist/setupspecs.d.ts.map +1 -0
- package/dist/signals/external.d.ts +1 -0
- package/dist/signals/external.d.ts.map +1 -0
- package/dist/signals/index.d.ts +1 -0
- package/dist/signals/index.d.ts.map +1 -0
- package/dist/signals/observable.d.ts +1 -0
- package/dist/signals/observable.d.ts.map +1 -0
- package/dist/transport.d.ts +1 -0
- package/dist/transport.d.ts.map +1 -0
- package/dist/user/index.d.ts +1 -0
- package/dist/user/index.d.ts.map +1 -0
- package/dist/user/payload.d.ts +1 -0
- package/dist/user/payload.d.ts.map +1 -0
- package/dist/util/telem.d.ts +1 -0
- package/dist/util/telem.d.ts.map +1 -0
- package/dist/workspace/client.d.ts +1 -0
- package/dist/workspace/client.d.ts.map +1 -0
- package/dist/workspace/external.d.ts +1 -0
- package/dist/workspace/external.d.ts.map +1 -0
- package/dist/workspace/index.d.ts +1 -0
- package/dist/workspace/index.d.ts.map +1 -0
- package/dist/workspace/lineplot/client.d.ts +1 -0
- package/dist/workspace/lineplot/client.d.ts.map +1 -0
- package/dist/workspace/lineplot/external.d.ts +1 -0
- package/dist/workspace/lineplot/external.d.ts.map +1 -0
- package/dist/workspace/lineplot/index.d.ts +1 -0
- package/dist/workspace/lineplot/index.d.ts.map +1 -0
- package/dist/workspace/lineplot/linePlot.spec.d.ts +1 -0
- package/dist/workspace/lineplot/linePlot.spec.d.ts.map +1 -0
- package/dist/workspace/lineplot/payload.d.ts +1 -0
- package/dist/workspace/lineplot/payload.d.ts.map +1 -0
- package/dist/workspace/lineplot/retriever.d.ts +1 -0
- package/dist/workspace/lineplot/retriever.d.ts.map +1 -0
- package/dist/workspace/lineplot/writer.d.ts +1 -0
- package/dist/workspace/lineplot/writer.d.ts.map +1 -0
- package/dist/workspace/payload.d.ts +1 -0
- package/dist/workspace/payload.d.ts.map +1 -0
- package/dist/workspace/pid/client.d.ts +1 -0
- package/dist/workspace/pid/client.d.ts.map +1 -0
- package/dist/workspace/pid/external.d.ts +1 -0
- package/dist/workspace/pid/external.d.ts.map +1 -0
- package/dist/workspace/pid/index.d.ts +1 -0
- package/dist/workspace/pid/index.d.ts.map +1 -0
- package/dist/workspace/pid/payload.d.ts +1 -0
- package/dist/workspace/pid/payload.d.ts.map +1 -0
- package/dist/workspace/pid/pid.spec.d.ts +1 -0
- package/dist/workspace/pid/pid.spec.d.ts.map +1 -0
- package/dist/workspace/pid/retriever.d.ts +1 -0
- package/dist/workspace/pid/retriever.d.ts.map +1 -0
- package/dist/workspace/pid/writer.d.ts +1 -0
- package/dist/workspace/pid/writer.d.ts.map +1 -0
- package/dist/workspace/retriever.d.ts +1 -0
- package/dist/workspace/retriever.d.ts.map +1 -0
- package/dist/workspace/workspace.spec.d.ts +1 -0
- package/dist/workspace/workspace.spec.d.ts.map +1 -0
- package/dist/workspace/writer.d.ts +1 -0
- package/dist/workspace/writer.d.ts.map +1 -0
- package/examples/node/liveStream.js +1 -1
- package/examples/node/package-lock.json +46 -47
- package/examples/node/package.json +2 -2
- package/examples/node/streamWrite.js +1 -1
- package/package.json +11 -11
- package/src/channel/channel.spec.ts +27 -0
- package/src/channel/client.ts +19 -13
- package/src/channel/external.ts +1 -1
- package/src/channel/payload.ts +1 -11
- package/src/channel/retriever.ts +1 -1
- package/src/channel/writer.ts +63 -0
- package/src/client.ts +24 -27
- package/src/control/state.spec.ts +2 -2
- package/src/errors.ts +2 -2
- package/src/framer/client.spec.ts +63 -0
- package/src/framer/client.ts +46 -14
- package/src/framer/iterator.spec.ts +2 -2
- package/src/framer/iterator.ts +7 -2
- package/src/framer/streamer.spec.ts +4 -4
- package/src/framer/writer.spec.ts +6 -6
- package/src/framer/writer.ts +6 -1
- package/dist/channel/creator.d.ts +0 -8
- package/src/channel/creator.ts +0 -44
package/src/framer/client.ts
CHANGED
|
@@ -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:
|
|
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
|
|
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
|
-
|
|
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:
|
|
135
|
+
channels: channels as Params,
|
|
104
136
|
mode: WriterMode.PersistOnly,
|
|
105
137
|
});
|
|
106
138
|
try {
|
|
107
|
-
await w.write(
|
|
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:
|
|
146
|
+
async read(tr: CrudeTimeRange, channel: KeyOrName): Promise<MultiSeries>;
|
|
115
147
|
|
|
116
|
-
async read(tr:
|
|
148
|
+
async read(tr: CrudeTimeRange, channels: Params): Promise<Frame>;
|
|
117
149
|
|
|
118
|
-
async read(tr:
|
|
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.
|
|
153
|
+
if (single) return fr.get(channels as KeyOrName);
|
|
122
154
|
return fr;
|
|
123
155
|
}
|
|
124
156
|
|
|
125
|
-
private async readFrame(tr:
|
|
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.
|
|
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.
|
|
45
|
+
const iter = await client.openIterator(
|
|
46
46
|
new TimeRange(TimeSpan.ZERO, TimeSpan.seconds(4)),
|
|
47
47
|
[ch.key],
|
|
48
48
|
);
|
package/src/framer/iterator.ts
CHANGED
|
@@ -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:
|
|
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({
|
|
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.
|
|
29
|
+
const streamer = await client.openStreamer(ch.key);
|
|
30
30
|
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
31
|
-
const writer = await client.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
52
|
-
const writer = await client.
|
|
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.
|
|
75
|
-
const res = await client.
|
|
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
|
});
|
package/src/framer/writer.ts
CHANGED
|
@@ -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
|
-
}
|
package/src/channel/creator.ts
DELETED
|
@@ -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
|
-
}
|