@synnaxlabs/client 0.2.1 → 0.13.5
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/.eslintrc.cjs +18 -0
- package/.pytest_cache/README.md +8 -0
- package/.turbo/turbo-build.log +16 -0
- package/LICENSE +4 -21
- package/{build/module/lib → dist/auth}/auth.d.ts +16 -19
- package/dist/auth/index.d.ts +1 -0
- package/dist/cdc/external.d.ts +1 -0
- package/dist/cdc/index.d.ts +1 -0
- package/dist/cdc/observable.d.ts +17 -0
- package/dist/channel/client.d.ts +58 -0
- package/dist/channel/creator.d.ts +8 -0
- package/dist/channel/external.d.ts +4 -0
- package/dist/channel/index.d.ts +1 -0
- package/dist/channel/payload.d.ts +63 -0
- package/dist/channel/retriever.d.ts +49 -0
- package/dist/client.cjs.js +23050 -0
- package/dist/client.cjs.js.map +1 -0
- package/dist/client.d.ts +73 -0
- package/dist/client.es.js +23050 -0
- package/dist/client.es.js.map +1 -0
- package/dist/connection/checker.d.ts +66 -0
- package/dist/connection/index.d.ts +1 -0
- package/dist/control/authority.d.ts +6 -0
- package/dist/control/external.d.ts +2 -0
- package/dist/control/index.d.ts +1 -0
- package/dist/control/state.d.ts +81 -0
- package/{build/main/lib → dist}/errors.d.ts +6 -3
- package/dist/framer/adapter.d.ts +21 -0
- package/dist/framer/client.d.ts +44 -0
- package/dist/framer/external.d.ts +5 -0
- package/dist/framer/frame.d.ts +251 -0
- package/dist/framer/index.d.ts +1 -0
- package/{build/module/lib/segment → dist/framer}/iterator.d.ts +32 -64
- package/dist/framer/streamProxy.d.ts +12 -0
- package/dist/framer/streamer.d.ts +17 -0
- package/dist/framer/writer.d.ts +257 -0
- package/dist/index.d.ts +16 -0
- package/dist/label/client.d.ts +25 -0
- package/dist/label/external.d.ts +4 -0
- package/dist/label/index.d.ts +1 -0
- package/dist/label/payload.d.ts +20 -0
- package/dist/label/retriever.d.ts +13 -0
- package/dist/label/writer.d.ts +26 -0
- package/dist/ontology/cdc.d.ts +25 -0
- package/dist/ontology/client.d.ts +25 -0
- package/dist/ontology/external.d.ts +3 -0
- package/dist/ontology/group/client.d.ts +11 -0
- package/dist/ontology/group/external.d.ts +2 -0
- package/dist/ontology/group/group.d.ts +7 -0
- package/dist/ontology/group/index.d.ts +1 -0
- package/dist/ontology/group/payload.d.ts +40 -0
- package/dist/ontology/group/writer.d.ts +13 -0
- package/dist/ontology/index.d.ts +1 -0
- package/dist/ontology/ontology.spec.d.ts +1 -0
- package/dist/ontology/payload.d.ts +235 -0
- package/dist/ontology/retriever.d.ts +12 -0
- package/dist/ontology/signals.d.ts +25 -0
- package/dist/ontology/writer.d.ts +9 -0
- package/dist/ranger/active.d.ts +9 -0
- package/dist/ranger/alias.d.ts +32 -0
- package/dist/ranger/client.d.ts +31 -0
- package/dist/ranger/external.d.ts +6 -0
- package/dist/ranger/index.d.ts +1 -0
- package/dist/ranger/kv.d.ts +50 -0
- package/dist/ranger/payload.d.ts +94 -0
- package/dist/ranger/range.d.ts +29 -0
- package/dist/ranger/ranger.spec.d.ts +1 -0
- package/dist/ranger/retriever.d.ts +10 -0
- package/dist/ranger/writer.d.ts +9 -0
- package/{build/main → dist}/setupspecs.d.ts +2 -2
- package/dist/signals/external.d.ts +1 -0
- package/dist/signals/index.d.ts +1 -0
- package/dist/signals/observable.d.ts +17 -0
- package/dist/transport.d.ts +10 -0
- package/dist/user/index.d.ts +1 -0
- package/{build/main/lib → dist}/user/payload.d.ts +3 -3
- package/dist/util/telem.d.ts +2 -0
- package/dist/workspace/client.d.ts +22 -0
- package/dist/workspace/external.d.ts +2 -0
- package/dist/workspace/index.d.ts +1 -0
- package/dist/workspace/lineplot/client.d.ts +15 -0
- package/dist/workspace/lineplot/external.d.ts +2 -0
- package/dist/workspace/lineplot/index.d.ts +1 -0
- package/dist/workspace/lineplot/linePlot.spec.d.ts +1 -0
- package/dist/workspace/lineplot/payload.d.ts +31 -0
- package/dist/workspace/lineplot/retriever.d.ts +9 -0
- package/dist/workspace/lineplot/writer.d.ts +39 -0
- package/dist/workspace/payload.d.ts +31 -0
- package/dist/workspace/pid/client.d.ts +16 -0
- package/dist/workspace/pid/external.d.ts +2 -0
- package/dist/workspace/pid/index.d.ts +1 -0
- package/dist/workspace/pid/payload.d.ts +37 -0
- package/dist/workspace/pid/pid.spec.d.ts +1 -0
- package/dist/workspace/pid/retriever.d.ts +9 -0
- package/dist/workspace/pid/writer.d.ts +46 -0
- package/dist/workspace/retriever.d.ts +12 -0
- package/dist/workspace/workspace.spec.d.ts +1 -0
- package/dist/workspace/writer.d.ts +55 -0
- package/package.json +27 -98
- package/src/auth/auth.spec.ts +46 -0
- package/src/auth/auth.ts +83 -0
- package/src/auth/index.ts +10 -0
- package/src/cdc/external.ts +10 -0
- package/src/cdc/index.ts +10 -0
- package/src/cdc/observable.ts +80 -0
- package/src/channel/channel.spec.ts +82 -0
- package/src/channel/client.ts +209 -0
- package/src/channel/creator.ts +43 -0
- package/src/channel/external.ts +13 -0
- package/src/channel/index.ts +10 -0
- package/src/channel/payload.ts +52 -0
- package/src/channel/retriever.ts +160 -0
- package/src/client.ts +112 -0
- package/src/connection/checker.ts +104 -0
- package/src/connection/connection.spec.ts +35 -0
- package/src/connection/index.ts +10 -0
- package/src/control/authority.ts +25 -0
- package/src/control/external.ts +11 -0
- package/src/control/index.ts +10 -0
- package/src/control/state.spec.ts +24 -0
- package/src/control/state.ts +117 -0
- package/src/errors.ts +153 -0
- package/src/framer/adapter.ts +116 -0
- package/src/framer/client.ts +116 -0
- package/src/framer/external.ts +14 -0
- package/src/framer/frame.spec.ts +317 -0
- package/src/framer/frame.ts +412 -0
- package/src/framer/index.ts +10 -0
- package/src/framer/iterator.spec.ts +62 -0
- package/src/framer/iterator.ts +240 -0
- package/src/framer/streamProxy.ts +59 -0
- package/src/framer/streamer.spec.ts +42 -0
- package/src/framer/streamer.ts +86 -0
- package/src/framer/writer.spec.ts +52 -0
- package/src/framer/writer.ts +236 -0
- package/src/index.ts +52 -0
- package/src/ontology/cdc.ts +135 -0
- package/src/ontology/client.ts +103 -0
- package/src/ontology/external.ts +12 -0
- package/src/ontology/group/client.ts +40 -0
- package/src/ontology/group/external.ts +11 -0
- package/src/ontology/group/group.spec.ts +46 -0
- package/src/ontology/group/group.ts +27 -0
- package/src/ontology/group/index.ts +10 -0
- package/src/ontology/group/payload.ts +65 -0
- package/src/ontology/group/writer.ts +48 -0
- package/src/ontology/index.ts +10 -0
- package/src/ontology/ontology.spec.ts +114 -0
- package/src/ontology/payload.ts +121 -0
- package/src/ontology/retriever.ts +91 -0
- package/src/ontology/writer.ts +49 -0
- package/src/ranger/active.ts +56 -0
- package/src/ranger/alias.ts +183 -0
- package/src/ranger/client.ts +124 -0
- package/src/ranger/external.ts +15 -0
- package/src/ranger/index.ts +10 -0
- package/src/ranger/kv.ts +91 -0
- package/src/ranger/payload.ts +70 -0
- package/src/ranger/range.ts +74 -0
- package/src/ranger/ranger.spec.ts +167 -0
- package/src/ranger/retriever.ts +50 -0
- package/src/ranger/writer.ts +80 -0
- package/src/setupspecs.ts +25 -0
- package/src/transport.ts +39 -0
- package/src/user/index.ts +10 -0
- package/src/user/payload.ts +17 -0
- package/src/util/telem.ts +19 -0
- package/src/vite-env.d.ts +11 -0
- package/src/workspace/client.ts +75 -0
- package/src/workspace/external.ts +11 -0
- package/src/workspace/index.ts +10 -0
- package/src/workspace/lineplot/client.ts +51 -0
- package/src/workspace/lineplot/external.ts +11 -0
- package/src/workspace/lineplot/index.ts +10 -0
- package/src/workspace/lineplot/linePlot.spec.ts +78 -0
- package/src/workspace/lineplot/payload.ts +29 -0
- package/src/workspace/lineplot/retriever.ts +49 -0
- package/src/workspace/lineplot/writer.ts +109 -0
- package/src/workspace/payload.ts +29 -0
- package/src/workspace/pid/client.ts +55 -0
- package/src/workspace/pid/external.ts +11 -0
- package/src/workspace/pid/index.ts +10 -0
- package/src/workspace/pid/payload.ts +31 -0
- package/src/workspace/pid/pid.spec.ts +111 -0
- package/src/workspace/pid/retriever.ts +45 -0
- package/src/workspace/pid/writer.ts +130 -0
- package/src/workspace/retriever.ts +67 -0
- package/src/workspace/workspace.spec.ts +62 -0
- package/src/workspace/writer.ts +103 -0
- package/tsconfig.json +7 -0
- package/tsconfig.vite.json +4 -0
- package/vite.config.ts +25 -0
- package/CHANGELOG.md +0 -5
- package/build/main/index.d.ts +0 -4
- package/build/main/index.js +0 -35
- package/build/main/lib/auth.d.ts +0 -54
- package/build/main/lib/auth.js +0 -62
- package/build/main/lib/auth.spec.js +0 -39
- package/build/main/lib/channel/channel.spec.js +0 -49
- package/build/main/lib/channel/client.d.ts +0 -94
- package/build/main/lib/channel/client.js +0 -134
- package/build/main/lib/channel/creator.d.ts +0 -19
- package/build/main/lib/channel/creator.js +0 -44
- package/build/main/lib/channel/payload.d.ts +0 -25
- package/build/main/lib/channel/payload.js +0 -18
- package/build/main/lib/channel/registry.d.ts +0 -9
- package/build/main/lib/channel/registry.js +0 -37
- package/build/main/lib/channel/retriever.d.ts +0 -11
- package/build/main/lib/channel/retriever.js +0 -39
- package/build/main/lib/client.d.ts +0 -30
- package/build/main/lib/client.js +0 -46
- package/build/main/lib/errors.js +0 -122
- package/build/main/lib/segment/client.d.ts +0 -62
- package/build/main/lib/segment/client.js +0 -95
- package/build/main/lib/segment/iterator.d.ts +0 -134
- package/build/main/lib/segment/iterator.js +0 -253
- package/build/main/lib/segment/iterator.spec.js +0 -73
- package/build/main/lib/segment/payload.d.ts +0 -16
- package/build/main/lib/segment/payload.js +0 -13
- package/build/main/lib/segment/splitter.d.ts +0 -7
- package/build/main/lib/segment/splitter.js +0 -25
- package/build/main/lib/segment/typed.d.ts +0 -15
- package/build/main/lib/segment/typed.js +0 -49
- package/build/main/lib/segment/validator.d.ts +0 -22
- package/build/main/lib/segment/validator.js +0 -64
- package/build/main/lib/segment/writer.d.ts +0 -98
- package/build/main/lib/segment/writer.js +0 -183
- package/build/main/lib/segment/writer.spec.js +0 -90
- package/build/main/lib/telem.d.ts +0 -395
- package/build/main/lib/telem.js +0 -553
- package/build/main/lib/telem.spec.js +0 -152
- package/build/main/lib/transport.d.ts +0 -10
- package/build/main/lib/transport.js +0 -22
- package/build/main/lib/user/payload.js +0 -9
- package/build/main/lib/util/telem.d.ts +0 -2
- package/build/main/lib/util/telem.js +0 -13
- package/build/main/setupspecs.js +0 -17
- package/build/module/index.d.ts +0 -4
- package/build/module/index.js +0 -5
- package/build/module/lib/auth.js +0 -63
- package/build/module/lib/auth.spec.js +0 -34
- package/build/module/lib/channel/channel.spec.js +0 -44
- package/build/module/lib/channel/client.d.ts +0 -94
- package/build/module/lib/channel/client.js +0 -134
- package/build/module/lib/channel/creator.d.ts +0 -19
- package/build/module/lib/channel/creator.js +0 -42
- package/build/module/lib/channel/payload.d.ts +0 -25
- package/build/module/lib/channel/payload.js +0 -15
- package/build/module/lib/channel/registry.d.ts +0 -9
- package/build/module/lib/channel/registry.js +0 -36
- package/build/module/lib/channel/retriever.d.ts +0 -11
- package/build/module/lib/channel/retriever.js +0 -37
- package/build/module/lib/client.d.ts +0 -30
- package/build/module/lib/client.js +0 -44
- package/build/module/lib/errors.d.ts +0 -53
- package/build/module/lib/errors.js +0 -113
- package/build/module/lib/segment/client.d.ts +0 -62
- package/build/module/lib/segment/client.js +0 -94
- package/build/module/lib/segment/iterator.js +0 -248
- package/build/module/lib/segment/iterator.spec.js +0 -68
- package/build/module/lib/segment/payload.d.ts +0 -16
- package/build/module/lib/segment/payload.js +0 -10
- package/build/module/lib/segment/splitter.d.ts +0 -7
- package/build/module/lib/segment/splitter.js +0 -26
- package/build/module/lib/segment/typed.d.ts +0 -15
- package/build/module/lib/segment/typed.js +0 -49
- package/build/module/lib/segment/validator.d.ts +0 -22
- package/build/module/lib/segment/validator.js +0 -60
- package/build/module/lib/segment/writer.d.ts +0 -98
- package/build/module/lib/segment/writer.js +0 -183
- package/build/module/lib/segment/writer.spec.js +0 -85
- package/build/module/lib/telem.d.ts +0 -395
- package/build/module/lib/telem.js +0 -545
- package/build/module/lib/telem.spec.js +0 -147
- package/build/module/lib/transport.d.ts +0 -10
- package/build/module/lib/transport.js +0 -22
- package/build/module/lib/user/payload.d.ts +0 -12
- package/build/module/lib/user/payload.js +0 -6
- package/build/module/lib/util/telem.d.ts +0 -2
- package/build/module/lib/util/telem.js +0 -9
- package/build/module/setupspecs.d.ts +0 -4
- package/build/module/setupspecs.js +0 -16
- /package/{build/main/lib → dist/auth}/auth.spec.d.ts +0 -0
- /package/{build/main/lib → dist}/channel/channel.spec.d.ts +0 -0
- /package/{build/main/lib/segment/iterator.spec.d.ts → dist/connection/connection.spec.d.ts} +0 -0
- /package/{build/main/lib/segment/writer.spec.d.ts → dist/control/state.spec.d.ts} +0 -0
- /package/{build/main/lib/telem.spec.d.ts → dist/framer/frame.spec.d.ts} +0 -0
- /package/{build/module/lib/segment → dist/framer}/iterator.spec.d.ts +0 -0
- /package/{build/module/lib/auth.spec.d.ts → dist/framer/streamer.spec.d.ts} +0 -0
- /package/{build/module/lib/segment → dist/framer}/writer.spec.d.ts +0 -0
- /package/{build/module/lib/channel/channel.spec.d.ts → dist/label/label.spec.d.ts} +0 -0
- /package/{build/module/lib/telem.spec.d.ts → dist/ontology/group/group.spec.d.ts} +0 -0
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const telem_1 = require("../telem");
|
|
4
|
-
const iterator_1 = require("./iterator");
|
|
5
|
-
const writer_1 = require("./writer");
|
|
6
|
-
class SegmentClient {
|
|
7
|
-
constructor(transport, channels) {
|
|
8
|
-
this.transport = transport;
|
|
9
|
-
this.channels = channels;
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* Opens a new iterator over the given channels within the provided time range.
|
|
13
|
-
*
|
|
14
|
-
* @param tr - A time range to iterate over.
|
|
15
|
-
* @param keys - A list of channel keys to iterate over.
|
|
16
|
-
* @param aggregate - Whether to accumulate iteration results or reset them
|
|
17
|
-
* on every iterator method call.
|
|
18
|
-
* @returns a new {@link TypedIterator}.
|
|
19
|
-
*/
|
|
20
|
-
async newIterator(tr, keys, aggregate) {
|
|
21
|
-
const iter = new iterator_1.TypedIterator(this.transport.streamClient, this.channels, aggregate);
|
|
22
|
-
await iter.open(tr, keys);
|
|
23
|
-
return iter;
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Opens a new writer on the given channels.
|
|
27
|
-
*
|
|
28
|
-
* @param keys - The keys of the channels to write to. A writer cannot write to
|
|
29
|
-
* a channel that is not in this list. See the {@link TypedWriter} documentation
|
|
30
|
-
* for more information.
|
|
31
|
-
* @returns a new {@link TypedWriter}.
|
|
32
|
-
*/
|
|
33
|
-
async newWriter(keys) {
|
|
34
|
-
const writer = new writer_1.TypedWriter(this.transport.streamClient, this.channels);
|
|
35
|
-
await writer.open(keys);
|
|
36
|
-
return writer;
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Writes telemetry to the given channel starting at the given timestamp.
|
|
40
|
-
*
|
|
41
|
-
* @param to - The key of the channel to write to.
|
|
42
|
-
* @param start - The starting timestamp of the first sample in data.
|
|
43
|
-
* @param data - The telemetry to write. This telemetry must have the same
|
|
44
|
-
* data type as the channel.
|
|
45
|
-
* @throws if the channel does not exist.
|
|
46
|
-
*/
|
|
47
|
-
async write(to, start, data) {
|
|
48
|
-
const writer = await this.newWriter([to]);
|
|
49
|
-
try {
|
|
50
|
-
return await writer.write(to, start, data);
|
|
51
|
-
}
|
|
52
|
-
finally {
|
|
53
|
-
await writer.close();
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Reads telemetry from the channel between the two timestamps.
|
|
58
|
-
*
|
|
59
|
-
* @param from - The key of the channel to read from.
|
|
60
|
-
* @param start - The starting timestamp of the range to read from.
|
|
61
|
-
* @param end - The ending timestamp of the range to read from.
|
|
62
|
-
* @returns a typed array containing the retrieved telemetry.
|
|
63
|
-
* @throws if the channel does not exist.
|
|
64
|
-
* @throws if the telemetry between start and end is not contiguous.
|
|
65
|
-
*/
|
|
66
|
-
async read(from, start, end) {
|
|
67
|
-
return (await this.readSegment(from, start, end)).view;
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Reads a segment from the channel between the two timestamps.
|
|
71
|
-
*
|
|
72
|
-
* @param from - The key of the channel to read from.
|
|
73
|
-
* @param start - The starting timestamp of the range to read from.
|
|
74
|
-
* @param end - The ending timestamp of the range to read from.
|
|
75
|
-
* @returns a segment containing the retrieved telemetry.
|
|
76
|
-
* @throws if the channel does not exist.
|
|
77
|
-
* @throws if the telemetry between start and end is not contiguous.
|
|
78
|
-
*/
|
|
79
|
-
async readSegment(from, start, end) {
|
|
80
|
-
const iter = await this.newIterator(new telem_1.TimeRange(start, end), [from], true);
|
|
81
|
-
let seg;
|
|
82
|
-
try {
|
|
83
|
-
await iter.first();
|
|
84
|
-
// eslint-disable-next-line no-empty
|
|
85
|
-
while (await iter.next()) { }
|
|
86
|
-
seg = (await iter.value())[from];
|
|
87
|
-
}
|
|
88
|
-
finally {
|
|
89
|
-
await iter.close();
|
|
90
|
-
}
|
|
91
|
-
return seg;
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
exports.default = SegmentClient;
|
|
95
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9zZWdtZW50L2NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLG9DQUFvRTtBQUdwRSx5Q0FBMkM7QUFFM0MscUNBQXVDO0FBRXZDLE1BQXFCLGFBQWE7SUFJaEMsWUFBWSxTQUFvQixFQUFFLFFBQWtCO1FBQ2xELElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQzNCLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNILEtBQUssQ0FBQyxXQUFXLENBQ2YsRUFBYSxFQUNiLElBQWMsRUFDZCxTQUFrQjtRQUVsQixNQUFNLElBQUksR0FBRyxJQUFJLHdCQUFhLENBQzVCLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUMzQixJQUFJLENBQUMsUUFBUSxFQUNiLFNBQVMsQ0FDVixDQUFDO1FBQ0YsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMxQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFjO1FBQzVCLE1BQU0sTUFBTSxHQUFHLElBQUksb0JBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDM0UsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hCLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNILEtBQUssQ0FBQyxLQUFLLENBQ1QsRUFBVSxFQUNWLEtBQXdCLEVBQ3hCLElBQWdCO1FBRWhCLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDMUMsSUFBSTtZQUNGLE9BQU8sTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDNUM7Z0JBQVM7WUFDUixNQUFNLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUN0QjtJQUNILENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSCxLQUFLLENBQUMsSUFBSSxDQUNSLElBQVksRUFDWixLQUF3QixFQUN4QixHQUFzQjtRQUV0QixPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDekQsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNILEtBQUssQ0FBQyxXQUFXLENBQ2YsSUFBWSxFQUNaLEtBQXdCLEVBQ3hCLEdBQXNCO1FBRXRCLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FDakMsSUFBSSxpQkFBUyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsRUFDekIsQ0FBQyxJQUFJLENBQUMsRUFDTixJQUFJLENBQ0wsQ0FBQztRQUNGLElBQUksR0FBaUIsQ0FBQztRQUN0QixJQUFJO1lBQ0YsTUFBTSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDbkIsb0NBQW9DO1lBQ3BDLE9BQU8sTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsR0FBRTtZQUM1QixHQUFHLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2xDO2dCQUFTO1lBQ1IsTUFBTSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDcEI7UUFDRCxPQUFPLEdBQW1CLENBQUM7SUFDN0IsQ0FBQztDQUNGO0FBckhELGdDQXFIQyJ9
|
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
import { StreamClient } from '@synnaxlabs/freighter';
|
|
2
|
-
import Registry from '../channel/registry';
|
|
3
|
-
import { TimeRange } from '../telem';
|
|
4
|
-
import { SegmentPayload } from './payload';
|
|
5
|
-
import TypedSegment from './typed';
|
|
6
|
-
/**
|
|
7
|
-
* Used to iterate over a clusters telemetry in time-order. It should not be
|
|
8
|
-
* instantiated directly, and should instead be instantiated via the SegmentClient.
|
|
9
|
-
*
|
|
10
|
-
* Using an iterator is ideal when querying/processing large ranges of data, but
|
|
11
|
-
* is relatively complex and difficult to use. If you're looking to retrieve
|
|
12
|
-
* telemetry between two timestamps, see the SegmentClient.read method.
|
|
13
|
-
*/
|
|
14
|
-
export declare class CoreIterator {
|
|
15
|
-
private static ENDPOINT;
|
|
16
|
-
private client;
|
|
17
|
-
private stream;
|
|
18
|
-
private readonly aggregate;
|
|
19
|
-
values: SegmentPayload[];
|
|
20
|
-
constructor(client: StreamClient, aggregate?: boolean);
|
|
21
|
-
/**
|
|
22
|
-
* Opens the iterator, configuring it to iterate over the telemetry in the
|
|
23
|
-
* channels with the given keys within the provided time range.
|
|
24
|
-
*
|
|
25
|
-
* @param tr - The time range to iterate over.
|
|
26
|
-
* @param keys - The keys of the channels to iterate over.
|
|
27
|
-
*/
|
|
28
|
-
open(tr: TimeRange, keys: string[]): Promise<void>;
|
|
29
|
-
/**
|
|
30
|
-
* Reads the next segment for each channel in the iterator.
|
|
31
|
-
*
|
|
32
|
-
* @returns false if the next segment can't be found for one or more channels or
|
|
33
|
-
* the iterator has accumulated an error.
|
|
34
|
-
*/
|
|
35
|
-
next(): Promise<boolean>;
|
|
36
|
-
/**
|
|
37
|
-
* Reads the previous segment for each channel in the iterator.
|
|
38
|
-
*
|
|
39
|
-
* @returns false if the next segment can't be found for one or more channels or
|
|
40
|
-
* the iterator has accumulated an error.
|
|
41
|
-
*/
|
|
42
|
-
prev(): Promise<boolean>;
|
|
43
|
-
/**
|
|
44
|
-
* Seeks to the beginning of the time range and reads the first segment of each
|
|
45
|
-
* channel in the iterator.
|
|
46
|
-
*
|
|
47
|
-
* @returns false if no segments exists in the time range for a particular channel
|
|
48
|
-
* or the iterator has accumulated an error.
|
|
49
|
-
*/
|
|
50
|
-
first(): Promise<boolean>;
|
|
51
|
-
/**
|
|
52
|
-
* Seeks to the end of the time range and reads the last segment of each channel
|
|
53
|
-
* in the iterator.
|
|
54
|
-
*
|
|
55
|
-
* @returns false if no segments exists in the time range for a particular channel,
|
|
56
|
-
* or the iterator has accumulated an error.
|
|
57
|
-
*/
|
|
58
|
-
last(): Promise<boolean>;
|
|
59
|
-
/**
|
|
60
|
-
* Reads the next time span of telemetry for each channel in the iterator.
|
|
61
|
-
*
|
|
62
|
-
* @returns false if a segment satisfying the request can't be found for a
|
|
63
|
-
* particular channel or the iterator has accumulated an error.
|
|
64
|
-
*/
|
|
65
|
-
nextSpan(span: number): Promise<boolean>;
|
|
66
|
-
/**
|
|
67
|
-
* Reads the previous time span of telemetry for each channel in the iterator.
|
|
68
|
-
*
|
|
69
|
-
* @returns false if a segment satisfying the request can't be found for a particular
|
|
70
|
-
* channel or the iterator has accumulated an error.
|
|
71
|
-
*/
|
|
72
|
-
prevSpan(span: number): Promise<boolean>;
|
|
73
|
-
/**
|
|
74
|
-
* Seeks the iterator to the start of the time range and reads the telemetry within
|
|
75
|
-
* the range for each channel.
|
|
76
|
-
*
|
|
77
|
-
* @returns: False if a segment satisfying the request can't be found for a particular
|
|
78
|
-
* channel or the iterator has accumulated an error.
|
|
79
|
-
*/
|
|
80
|
-
nextRange(range: TimeRange): Promise<boolean>;
|
|
81
|
-
/**
|
|
82
|
-
* Seeks the iterator to the first segment in the time range, but does not read
|
|
83
|
-
* it. Also invalidates the iterator. The iterator will not be considered valid
|
|
84
|
-
* until a call to first, last, next, prev, prev_span, next_span, or next_range.
|
|
85
|
-
*
|
|
86
|
-
* @returns false if the iterator is not pointing to a valid segment for a particular
|
|
87
|
-
* channel or has accumulated an error.
|
|
88
|
-
*/
|
|
89
|
-
seekFirst(): Promise<boolean>;
|
|
90
|
-
/** Seeks the iterator to the last segment in the time range, but does not read it.
|
|
91
|
-
* Also invalidates the iterator. The iterator will not be considered valid
|
|
92
|
-
* until a call to first, last, next, prev, prev_span, next_span, or next_range.
|
|
93
|
-
*
|
|
94
|
-
* @returns false if the iterator is not pointing to a valid segment for a particular
|
|
95
|
-
* channel or has accumulated an error.
|
|
96
|
-
*/
|
|
97
|
-
seekLast(): Promise<boolean>;
|
|
98
|
-
/**
|
|
99
|
-
* Seeks the iterator to the first segment whose start is less than or equal to
|
|
100
|
-
* the provided timestamp. Also invalidates the iterator. The iterator will not be
|
|
101
|
-
* considered valid until a call to first, last, next, prev, prev_span, next_span, or next_range.
|
|
102
|
-
*
|
|
103
|
-
* @returns false if the iterator is not pointing to a valid segment for a particular
|
|
104
|
-
* channel or has accumulated an error.
|
|
105
|
-
*/
|
|
106
|
-
seekLT(stamp: number): Promise<boolean>;
|
|
107
|
-
/**
|
|
108
|
-
* Seeks the iterator to the first segment whose start is greater than or equal to
|
|
109
|
-
* the provided timestamp. Also invalidates the iterator. The iterator will not be
|
|
110
|
-
* considered valid until a call to first, last, next, prev, prev_span, next_span, or next_range.
|
|
111
|
-
*
|
|
112
|
-
* @returns false if the iterator is not pointing to a valid segment for a particular
|
|
113
|
-
* channel or has accumulated an error.
|
|
114
|
-
*/
|
|
115
|
-
seekGE(stamp: number): Promise<boolean>;
|
|
116
|
-
/**
|
|
117
|
-
* @returns true if the iterator value contains a valid segment, and fale otherwise.
|
|
118
|
-
* valid most commonly returns false when the iterator is exhausted or has
|
|
119
|
-
* accumulated an error.
|
|
120
|
-
*/
|
|
121
|
-
valid(): Promise<boolean>;
|
|
122
|
-
/**
|
|
123
|
-
* Closes the iterator. An iterator MUST be closed after use, and this method
|
|
124
|
-
* should probably be placed in a 'finally' block. If the iterator is not closed,
|
|
125
|
-
* it may leak resources.
|
|
126
|
-
*/
|
|
127
|
-
close(): Promise<void>;
|
|
128
|
-
private execute;
|
|
129
|
-
}
|
|
130
|
-
export declare class TypedIterator extends CoreIterator {
|
|
131
|
-
channels: Registry;
|
|
132
|
-
constructor(client: StreamClient, channels: Registry, aggregate?: boolean);
|
|
133
|
-
value(): Promise<Record<string, TypedSegment>>;
|
|
134
|
-
}
|
|
@@ -1,253 +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
|
-
exports.TypedIterator = exports.CoreIterator = void 0;
|
|
7
|
-
const freighter_1 = require("@synnaxlabs/freighter");
|
|
8
|
-
const zod_1 = require("zod");
|
|
9
|
-
const telem_1 = require("../telem");
|
|
10
|
-
const payload_1 = require("./payload");
|
|
11
|
-
const typed_1 = __importDefault(require("./typed"));
|
|
12
|
-
var Command;
|
|
13
|
-
(function (Command) {
|
|
14
|
-
Command[Command["Open"] = 0] = "Open";
|
|
15
|
-
Command[Command["Next"] = 1] = "Next";
|
|
16
|
-
Command[Command["Prev"] = 2] = "Prev";
|
|
17
|
-
Command[Command["First"] = 3] = "First";
|
|
18
|
-
Command[Command["Last"] = 4] = "Last";
|
|
19
|
-
Command[Command["NextSpan"] = 5] = "NextSpan";
|
|
20
|
-
Command[Command["PrevSpan"] = 6] = "PrevSpan";
|
|
21
|
-
Command[Command["NextRange"] = 7] = "NextRange";
|
|
22
|
-
Command[Command["Valid"] = 8] = "Valid";
|
|
23
|
-
Command[Command["Error"] = 9] = "Error";
|
|
24
|
-
Command[Command["SeekFirst"] = 10] = "SeekFirst";
|
|
25
|
-
Command[Command["SeekLast"] = 11] = "SeekLast";
|
|
26
|
-
Command[Command["SeekLT"] = 12] = "SeekLT";
|
|
27
|
-
Command[Command["SeekGE"] = 13] = "SeekGE";
|
|
28
|
-
})(Command || (Command = {}));
|
|
29
|
-
var ResponseVariant;
|
|
30
|
-
(function (ResponseVariant) {
|
|
31
|
-
ResponseVariant[ResponseVariant["None"] = 0] = "None";
|
|
32
|
-
ResponseVariant[ResponseVariant["Ack"] = 1] = "Ack";
|
|
33
|
-
ResponseVariant[ResponseVariant["Data"] = 2] = "Data";
|
|
34
|
-
})(ResponseVariant || (ResponseVariant = {}));
|
|
35
|
-
const RequestSchema = zod_1.z.object({
|
|
36
|
-
command: zod_1.z.nativeEnum(Command),
|
|
37
|
-
span: zod_1.z.number().optional(),
|
|
38
|
-
range: zod_1.z.instanceof(telem_1.TimeRange).optional(),
|
|
39
|
-
stamp: zod_1.z.number().optional(),
|
|
40
|
-
keys: zod_1.z.string().array().optional(),
|
|
41
|
-
});
|
|
42
|
-
const ResponseSchema = zod_1.z.object({
|
|
43
|
-
variant: zod_1.z.nativeEnum(ResponseVariant),
|
|
44
|
-
ack: zod_1.z.boolean(),
|
|
45
|
-
command: zod_1.z.nativeEnum(Command),
|
|
46
|
-
error: freighter_1.ErrorPayloadSchema.optional(),
|
|
47
|
-
segments: payload_1.SegmentPayloadSchema.array().nullable(),
|
|
48
|
-
});
|
|
49
|
-
/**
|
|
50
|
-
* Used to iterate over a clusters telemetry in time-order. It should not be
|
|
51
|
-
* instantiated directly, and should instead be instantiated via the SegmentClient.
|
|
52
|
-
*
|
|
53
|
-
* Using an iterator is ideal when querying/processing large ranges of data, but
|
|
54
|
-
* is relatively complex and difficult to use. If you're looking to retrieve
|
|
55
|
-
* telemetry between two timestamps, see the SegmentClient.read method.
|
|
56
|
-
*/
|
|
57
|
-
class CoreIterator {
|
|
58
|
-
constructor(client, aggregate = false) {
|
|
59
|
-
this.aggregate = false;
|
|
60
|
-
this.values = [];
|
|
61
|
-
this.client = client;
|
|
62
|
-
this.aggregate = aggregate;
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Opens the iterator, configuring it to iterate over the telemetry in the
|
|
66
|
-
* channels with the given keys within the provided time range.
|
|
67
|
-
*
|
|
68
|
-
* @param tr - The time range to iterate over.
|
|
69
|
-
* @param keys - The keys of the channels to iterate over.
|
|
70
|
-
*/
|
|
71
|
-
async open(tr, keys) {
|
|
72
|
-
this.stream = await this.client.stream(CoreIterator.ENDPOINT, RequestSchema,
|
|
73
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
74
|
-
// @ts-ignore
|
|
75
|
-
ResponseSchema);
|
|
76
|
-
await this.execute({ command: Command.Open, keys, range: tr });
|
|
77
|
-
this.values = [];
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* Reads the next segment for each channel in the iterator.
|
|
81
|
-
*
|
|
82
|
-
* @returns false if the next segment can't be found for one or more channels or
|
|
83
|
-
* the iterator has accumulated an error.
|
|
84
|
-
*/
|
|
85
|
-
async next() {
|
|
86
|
-
return this.execute({ command: Command.Next });
|
|
87
|
-
}
|
|
88
|
-
/**
|
|
89
|
-
* Reads the previous segment for each channel in the iterator.
|
|
90
|
-
*
|
|
91
|
-
* @returns false if the next segment can't be found for one or more channels or
|
|
92
|
-
* the iterator has accumulated an error.
|
|
93
|
-
*/
|
|
94
|
-
async prev() {
|
|
95
|
-
return this.execute({ command: Command.Prev });
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Seeks to the beginning of the time range and reads the first segment of each
|
|
99
|
-
* channel in the iterator.
|
|
100
|
-
*
|
|
101
|
-
* @returns false if no segments exists in the time range for a particular channel
|
|
102
|
-
* or the iterator has accumulated an error.
|
|
103
|
-
*/
|
|
104
|
-
async first() {
|
|
105
|
-
return this.execute({ command: Command.First });
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* Seeks to the end of the time range and reads the last segment of each channel
|
|
109
|
-
* in the iterator.
|
|
110
|
-
*
|
|
111
|
-
* @returns false if no segments exists in the time range for a particular channel,
|
|
112
|
-
* or the iterator has accumulated an error.
|
|
113
|
-
*/
|
|
114
|
-
async last() {
|
|
115
|
-
return this.execute({ command: Command.Last });
|
|
116
|
-
}
|
|
117
|
-
/**
|
|
118
|
-
* Reads the next time span of telemetry for each channel in the iterator.
|
|
119
|
-
*
|
|
120
|
-
* @returns false if a segment satisfying the request can't be found for a
|
|
121
|
-
* particular channel or the iterator has accumulated an error.
|
|
122
|
-
*/
|
|
123
|
-
async nextSpan(span) {
|
|
124
|
-
return this.execute({ command: Command.NextSpan, span });
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* Reads the previous time span of telemetry for each channel in the iterator.
|
|
128
|
-
*
|
|
129
|
-
* @returns false if a segment satisfying the request can't be found for a particular
|
|
130
|
-
* channel or the iterator has accumulated an error.
|
|
131
|
-
*/
|
|
132
|
-
async prevSpan(span) {
|
|
133
|
-
return this.execute({ command: Command.PrevSpan, span });
|
|
134
|
-
}
|
|
135
|
-
/**
|
|
136
|
-
* Seeks the iterator to the start of the time range and reads the telemetry within
|
|
137
|
-
* the range for each channel.
|
|
138
|
-
*
|
|
139
|
-
* @returns: False if a segment satisfying the request can't be found for a particular
|
|
140
|
-
* channel or the iterator has accumulated an error.
|
|
141
|
-
*/
|
|
142
|
-
async nextRange(range) {
|
|
143
|
-
return this.execute({ command: Command.NextRange, range });
|
|
144
|
-
}
|
|
145
|
-
/**
|
|
146
|
-
* Seeks the iterator to the first segment in the time range, but does not read
|
|
147
|
-
* it. Also invalidates the iterator. The iterator will not be considered valid
|
|
148
|
-
* until a call to first, last, next, prev, prev_span, next_span, or next_range.
|
|
149
|
-
*
|
|
150
|
-
* @returns false if the iterator is not pointing to a valid segment for a particular
|
|
151
|
-
* channel or has accumulated an error.
|
|
152
|
-
*/
|
|
153
|
-
async seekFirst() {
|
|
154
|
-
return this.execute({ command: Command.SeekFirst });
|
|
155
|
-
}
|
|
156
|
-
/** Seeks the iterator to the last segment in the time range, but does not read it.
|
|
157
|
-
* Also invalidates the iterator. The iterator will not be considered valid
|
|
158
|
-
* until a call to first, last, next, prev, prev_span, next_span, or next_range.
|
|
159
|
-
*
|
|
160
|
-
* @returns false if the iterator is not pointing to a valid segment for a particular
|
|
161
|
-
* channel or has accumulated an error.
|
|
162
|
-
*/
|
|
163
|
-
async seekLast() {
|
|
164
|
-
return this.execute({ command: Command.SeekLast });
|
|
165
|
-
}
|
|
166
|
-
/**
|
|
167
|
-
* Seeks the iterator to the first segment whose start is less than or equal to
|
|
168
|
-
* the provided timestamp. Also invalidates the iterator. The iterator will not be
|
|
169
|
-
* considered valid until a call to first, last, next, prev, prev_span, next_span, or next_range.
|
|
170
|
-
*
|
|
171
|
-
* @returns false if the iterator is not pointing to a valid segment for a particular
|
|
172
|
-
* channel or has accumulated an error.
|
|
173
|
-
*/
|
|
174
|
-
async seekLT(stamp) {
|
|
175
|
-
return this.execute({ command: Command.SeekLT, stamp });
|
|
176
|
-
}
|
|
177
|
-
/**
|
|
178
|
-
* Seeks the iterator to the first segment whose start is greater than or equal to
|
|
179
|
-
* the provided timestamp. Also invalidates the iterator. The iterator will not be
|
|
180
|
-
* considered valid until a call to first, last, next, prev, prev_span, next_span, or next_range.
|
|
181
|
-
*
|
|
182
|
-
* @returns false if the iterator is not pointing to a valid segment for a particular
|
|
183
|
-
* channel or has accumulated an error.
|
|
184
|
-
*/
|
|
185
|
-
async seekGE(stamp) {
|
|
186
|
-
return this.execute({ command: Command.SeekGE, stamp });
|
|
187
|
-
}
|
|
188
|
-
/**
|
|
189
|
-
* @returns true if the iterator value contains a valid segment, and fale otherwise.
|
|
190
|
-
* valid most commonly returns false when the iterator is exhausted or has
|
|
191
|
-
* accumulated an error.
|
|
192
|
-
*/
|
|
193
|
-
async valid() {
|
|
194
|
-
return this.execute({ command: Command.Valid });
|
|
195
|
-
}
|
|
196
|
-
/**
|
|
197
|
-
* Closes the iterator. An iterator MUST be closed after use, and this method
|
|
198
|
-
* should probably be placed in a 'finally' block. If the iterator is not closed,
|
|
199
|
-
* it may leak resources.
|
|
200
|
-
*/
|
|
201
|
-
async close() {
|
|
202
|
-
if (!this.stream)
|
|
203
|
-
throw new Error('iterator.open() must be called before any other method');
|
|
204
|
-
this.stream.closeSend();
|
|
205
|
-
const [, exc] = await this.stream.receive();
|
|
206
|
-
if (!(exc instanceof freighter_1.EOF))
|
|
207
|
-
throw exc;
|
|
208
|
-
}
|
|
209
|
-
async execute(request) {
|
|
210
|
-
if (!this.stream)
|
|
211
|
-
throw new Error('iterator.open() must be called before any other method');
|
|
212
|
-
const err = this.stream.send(request);
|
|
213
|
-
if (err)
|
|
214
|
-
throw err;
|
|
215
|
-
if (!this.aggregate)
|
|
216
|
-
this.values = [];
|
|
217
|
-
for (;;) {
|
|
218
|
-
const [res, err] = await this.stream.receive();
|
|
219
|
-
if (err || !res)
|
|
220
|
-
throw err;
|
|
221
|
-
if (res.variant == ResponseVariant.Ack)
|
|
222
|
-
return res.ack;
|
|
223
|
-
if (res.segments)
|
|
224
|
-
this.values.push(...res.segments);
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
exports.CoreIterator = CoreIterator;
|
|
229
|
-
CoreIterator.ENDPOINT = '/segment/iterate';
|
|
230
|
-
class TypedIterator extends CoreIterator {
|
|
231
|
-
constructor(client, channels, aggregate = false) {
|
|
232
|
-
super(client, aggregate);
|
|
233
|
-
this.channels = channels;
|
|
234
|
-
}
|
|
235
|
-
async value() {
|
|
236
|
-
const result = {};
|
|
237
|
-
this.values.sort((a, b) => a.start.valueOf() - b.start.valueOf());
|
|
238
|
-
const keys = this.values.map((v) => v.channelKey);
|
|
239
|
-
const channels = await this.channels.getN(...keys);
|
|
240
|
-
this.values.forEach((v) => {
|
|
241
|
-
const sugared = new typed_1.default(channels.find((c) => c.key == v.channelKey), v);
|
|
242
|
-
if (v.channelKey in result) {
|
|
243
|
-
result[v.channelKey].extend(sugared);
|
|
244
|
-
}
|
|
245
|
-
else {
|
|
246
|
-
result[v.channelKey] = sugared;
|
|
247
|
-
}
|
|
248
|
-
});
|
|
249
|
-
return result;
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
exports.TypedIterator = TypedIterator;
|
|
253
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3NlZ21lbnQvaXRlcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEscURBSytCO0FBQy9CLDZCQUF3QjtBQUl4QixvQ0FBcUM7QUFFckMsdUNBQWlFO0FBQ2pFLG9EQUFtQztBQUVuQyxJQUFLLE9BZUo7QUFmRCxXQUFLLE9BQU87SUFDVixxQ0FBUSxDQUFBO0lBQ1IscUNBQVEsQ0FBQTtJQUNSLHFDQUFRLENBQUE7SUFDUix1Q0FBUyxDQUFBO0lBQ1QscUNBQVEsQ0FBQTtJQUNSLDZDQUFZLENBQUE7SUFDWiw2Q0FBWSxDQUFBO0lBQ1osK0NBQWEsQ0FBQTtJQUNiLHVDQUFTLENBQUE7SUFDVCx1Q0FBUyxDQUFBO0lBQ1QsZ0RBQWMsQ0FBQTtJQUNkLDhDQUFhLENBQUE7SUFDYiwwQ0FBVyxDQUFBO0lBQ1gsMENBQVcsQ0FBQTtBQUNiLENBQUMsRUFmSSxPQUFPLEtBQVAsT0FBTyxRQWVYO0FBRUQsSUFBSyxlQUlKO0FBSkQsV0FBSyxlQUFlO0lBQ2xCLHFEQUFRLENBQUE7SUFDUixtREFBTyxDQUFBO0lBQ1AscURBQVEsQ0FBQTtBQUNWLENBQUMsRUFKSSxlQUFlLEtBQWYsZUFBZSxRQUluQjtBQUVELE1BQU0sYUFBYSxHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUM7SUFDN0IsT0FBTyxFQUFFLE9BQUMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDO0lBQzlCLElBQUksRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzNCLEtBQUssRUFBRSxPQUFDLENBQUMsVUFBVSxDQUFDLGlCQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUU7SUFDekMsS0FBSyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDNUIsSUFBSSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxLQUFLLEVB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
|
|
@@ -1,73 +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 setupspecs_1 = require("../../setupspecs");
|
|
8
|
-
const errors_1 = require("../errors");
|
|
9
|
-
const telem_1 = require("../telem");
|
|
10
|
-
const telem_2 = require("../util/telem");
|
|
11
|
-
const client = (0, setupspecs_1.newClient)();
|
|
12
|
-
const newChannel = async () => {
|
|
13
|
-
return await client.channel.create({
|
|
14
|
-
name: 'test',
|
|
15
|
-
nodeId: 1,
|
|
16
|
-
rate: telem_1.Rate.Hz(25),
|
|
17
|
-
dataType: telem_1.DataType.Float64,
|
|
18
|
-
});
|
|
19
|
-
};
|
|
20
|
-
(0, ava_1.default)('TypedIterator - basic iteration', async (t) => {
|
|
21
|
-
const ch = await newChannel();
|
|
22
|
-
const writer = await client.data.newWriter([ch.key]);
|
|
23
|
-
const data = (0, telem_2.randomTypedArray)(25, ch.dataType);
|
|
24
|
-
try {
|
|
25
|
-
await writer.write(ch.key, telem_1.TimeSpan.Second, data);
|
|
26
|
-
await writer.write(ch.key, telem_1.TimeSpan.Seconds(2), data);
|
|
27
|
-
await writer.write(ch.key, telem_1.TimeSpan.Seconds(3), data);
|
|
28
|
-
}
|
|
29
|
-
finally {
|
|
30
|
-
await writer.close();
|
|
31
|
-
}
|
|
32
|
-
const iterator = await client.data.newIterator(new telem_1.TimeRange(telem_1.TimeSpan.Zero, telem_1.TimeSpan.Seconds(4)), [ch.key], false);
|
|
33
|
-
try {
|
|
34
|
-
t.true(await iterator.first());
|
|
35
|
-
t.true((await iterator.value())[ch.key].view.length === 25);
|
|
36
|
-
let c = 1;
|
|
37
|
-
while (await iterator.next()) {
|
|
38
|
-
c++;
|
|
39
|
-
t.true((await iterator.value())[ch.key].view.length === 25);
|
|
40
|
-
}
|
|
41
|
-
t.true(c === 3);
|
|
42
|
-
}
|
|
43
|
-
finally {
|
|
44
|
-
await iterator.close();
|
|
45
|
-
}
|
|
46
|
-
});
|
|
47
|
-
(0, ava_1.default)('Client - basic read', async (t) => {
|
|
48
|
-
const ch = await newChannel();
|
|
49
|
-
const writer = await client.data.newWriter([ch.key]);
|
|
50
|
-
const data = (0, telem_2.randomTypedArray)(25, ch.dataType);
|
|
51
|
-
try {
|
|
52
|
-
await writer.write(ch.key, telem_1.TimeSpan.Second, data);
|
|
53
|
-
await writer.write(ch.key, telem_1.TimeSpan.Seconds(2), data);
|
|
54
|
-
await writer.write(ch.key, telem_1.TimeSpan.Seconds(3), data);
|
|
55
|
-
}
|
|
56
|
-
finally {
|
|
57
|
-
await writer.close();
|
|
58
|
-
}
|
|
59
|
-
const resData = await client.data.read(ch.key, telem_1.TimeSpan.Zero, telem_1.TimeSpan.Seconds(4));
|
|
60
|
-
resData.slice(0, 25).forEach((v, i) => t.true(v === data[i]));
|
|
61
|
-
t.true(resData.length === 75);
|
|
62
|
-
});
|
|
63
|
-
(0, ava_1.default)('Client - incontiguous read', async (t) => {
|
|
64
|
-
const ch = await newChannel();
|
|
65
|
-
const data = (0, telem_2.randomTypedArray)(25, ch.dataType);
|
|
66
|
-
await ch.write(telem_1.TimeSpan.Zero, data);
|
|
67
|
-
await ch.write(telem_1.TimeSpan.Seconds(2), data);
|
|
68
|
-
const err = await t.throwsAsync(async () => {
|
|
69
|
-
await client.data.read(ch.key, telem_1.TimeSpan.Zero, telem_1.TimeSpan.Seconds(4));
|
|
70
|
-
});
|
|
71
|
-
t.true(err instanceof errors_1.ContiguityError);
|
|
72
|
-
});
|
|
73
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlcmF0b3Iuc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvc2VnbWVudC9pdGVyYXRvci5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsOENBQXVCO0FBRXZCLGlEQUE2QztBQUM3QyxzQ0FBNEM7QUFDNUMsb0NBQStEO0FBQy9ELHlDQUFpRDtBQUVqRCxNQUFNLE1BQU0sR0FBRyxJQUFBLHNCQUFTLEdBQUUsQ0FBQztBQUUzQixNQUFNLFVBQVUsR0FBRyxLQUFLLElBQUksRUFBRTtJQUM1QixPQUFPLE1BQU0sTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFDakMsSUFBSSxFQUFFLE1BQU07UUFDWixNQUFNLEVBQUUsQ0FBQztRQUNULElBQUksRUFBRSxZQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUNqQixRQUFRLEVBQUUsZ0JBQVEsQ0FBQyxPQUFPO0tBQzNCLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGLElBQUEsYUFBSSxFQUFDLGlDQUFpQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNsRCxNQUFNLEVBQUUsR0FBRyxNQUFNLFVBQVUsRUFBRSxDQUFDO0lBQzlCLE1BQU0sTUFBTSxHQUFHLE1BQU0sTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNyRCxNQUFNLElBQUksR0FBRyxJQUFBLHdCQUFnQixFQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDL0MsSUFBSTtRQUNGLE1BQU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLGdCQUFRLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2xELE1BQU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLGdCQUFRLENBQUMs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
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
import { TimeStamp } from '../telem';
|
|
3
|
-
export declare const SegmentPayloadSchema: z.ZodObject<{
|
|
4
|
-
channelKey: z.ZodString;
|
|
5
|
-
start: z.ZodEffects<z.ZodNumber, TimeStamp, number>;
|
|
6
|
-
data: z.ZodEffects<z.ZodString, Uint8Array, string>;
|
|
7
|
-
}, "strip", z.ZodTypeAny, {
|
|
8
|
-
data: Uint8Array;
|
|
9
|
-
channelKey: string;
|
|
10
|
-
start: TimeStamp;
|
|
11
|
-
}, {
|
|
12
|
-
data: string;
|
|
13
|
-
channelKey: string;
|
|
14
|
-
start: number;
|
|
15
|
-
}>;
|
|
16
|
-
export declare type SegmentPayload = z.infer<typeof SegmentPayloadSchema>;
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SegmentPayloadSchema = void 0;
|
|
4
|
-
const zod_1 = require("zod");
|
|
5
|
-
const telem_1 = require("../telem");
|
|
6
|
-
exports.SegmentPayloadSchema = zod_1.z.object({
|
|
7
|
-
channelKey: zod_1.z.string(),
|
|
8
|
-
start: zod_1.z.number().transform((n) => new telem_1.TimeStamp(n)),
|
|
9
|
-
data: zod_1.z.string().transform((s) => new Uint8Array(atob(s)
|
|
10
|
-
.split('')
|
|
11
|
-
.map((c) => c.charCodeAt(0)))),
|
|
12
|
-
});
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5bG9hZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvc2VnbWVudC9wYXlsb2FkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZCQUF3QjtBQUV4QixvQ0FBcUM7QUFFeEIsUUFBQSxvQkFBb0IsR0FBRyxPQUFDLENBQUMsTUFBTSxDQUFDO0lBQzNDLFVBQVUsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFO0lBQ3RCLEtBQUssRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLGlCQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEQsSUFBSSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxTQUFTLENBQ3hCLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDSixJQUFJLFVBQVUsQ0FDWixJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQ0osS0FBSyxDQUFDLEVBQUUsQ0FBQztTQUNULEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUMvQixDQUNKO0NBQ0YsQ0FBQyxDQUFDIn0=
|
|
@@ -1,25 +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 errors_1 = require("../errors");
|
|
7
|
-
const typed_1 = __importDefault(require("./typed"));
|
|
8
|
-
class Splitter {
|
|
9
|
-
constructor(threshold) {
|
|
10
|
-
this.threshold = threshold;
|
|
11
|
-
}
|
|
12
|
-
split(segment) {
|
|
13
|
-
if (segment.size.smallerThan(this.threshold))
|
|
14
|
-
return [segment];
|
|
15
|
-
if (!segment.channel.density)
|
|
16
|
-
throw new errors_1.ValidationError('Cannot split segment because channel density is undefined');
|
|
17
|
-
const splitPoint = this.threshold.valueOf() -
|
|
18
|
-
(this.threshold.valueOf() % segment.channel.density.valueOf());
|
|
19
|
-
const truncated = new typed_1.default(segment.channel, Object.assign(Object.assign({}, segment.payload), { data: segment.payload.data.slice(0, splitPoint) }));
|
|
20
|
-
const next = new typed_1.default(segment.channel, Object.assign(Object.assign({}, segment.payload), { data: segment.payload.data.slice(splitPoint) }));
|
|
21
|
-
return [truncated, ...this.split(next)];
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
exports.default = Splitter;
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BsaXR0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3NlZ21lbnQvc3BsaXR0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxzQ0FBNEM7QUFHNUMsb0RBQW1DO0FBRW5DLE1BQXFCLFFBQVE7SUFHM0IsWUFBWSxTQUFlO1FBQ3pCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO0lBQzdCLENBQUM7SUFFRCxLQUFLLENBQUMsT0FBcUI7UUFDekIsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQy9ELElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU87WUFDMUIsTUFBTSxJQUFJLHdCQUFlLENBQ3ZCLDJEQUEyRCxDQUM1RCxDQUFDO1FBQ0osTUFBTSxVQUFVLEdBQ2QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUU7WUFDeEIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDakUsTUFBTSxTQUFTLEdBQUcsSUFBSSxlQUFZLENBQUMsT0FBTyxDQUFDLE9BQU8sa0NBQzdDLE9BQU8sQ0FBQyxPQUFPLEtBQ2xCLElBQUksRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxJQUMvQyxDQUFDO1FBQ0gsTUFBTSxJQUFJLEdBQUcsSUFBSSxlQUFZLENBQUMsT0FBTyxDQUFDLE9BQU8sa0NBQ3hDLE9BQU8sQ0FBQyxPQUFPLEtBQ2xCLElBQUksRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQzVDLENBQUM7UUFDSCxPQUFPLENBQUMsU0FBUyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzFDLENBQUM7Q0FDRjtBQTFCRCwyQkEwQkMifQ==
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { ChannelPayload } from '../channel/payload';
|
|
2
|
-
import { Size, TimeRange, TimeSpan, TimeStamp, TypedArray } from '../telem';
|
|
3
|
-
import { SegmentPayload } from './payload';
|
|
4
|
-
export default class TypedSegment {
|
|
5
|
-
payload: SegmentPayload;
|
|
6
|
-
channel: ChannelPayload;
|
|
7
|
-
view: TypedArray;
|
|
8
|
-
constructor(channel: ChannelPayload, payload: SegmentPayload);
|
|
9
|
-
get start(): TimeStamp;
|
|
10
|
-
get span(): TimeSpan;
|
|
11
|
-
get range(): TimeRange;
|
|
12
|
-
get end(): TimeStamp;
|
|
13
|
-
get size(): Size;
|
|
14
|
-
extend(other: TypedSegment): void;
|
|
15
|
-
}
|