@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.
Files changed (292) hide show
  1. package/.eslintrc.cjs +18 -0
  2. package/.pytest_cache/README.md +8 -0
  3. package/.turbo/turbo-build.log +16 -0
  4. package/LICENSE +4 -21
  5. package/{build/module/lib → dist/auth}/auth.d.ts +16 -19
  6. package/dist/auth/index.d.ts +1 -0
  7. package/dist/cdc/external.d.ts +1 -0
  8. package/dist/cdc/index.d.ts +1 -0
  9. package/dist/cdc/observable.d.ts +17 -0
  10. package/dist/channel/client.d.ts +58 -0
  11. package/dist/channel/creator.d.ts +8 -0
  12. package/dist/channel/external.d.ts +4 -0
  13. package/dist/channel/index.d.ts +1 -0
  14. package/dist/channel/payload.d.ts +63 -0
  15. package/dist/channel/retriever.d.ts +49 -0
  16. package/dist/client.cjs.js +23050 -0
  17. package/dist/client.cjs.js.map +1 -0
  18. package/dist/client.d.ts +73 -0
  19. package/dist/client.es.js +23050 -0
  20. package/dist/client.es.js.map +1 -0
  21. package/dist/connection/checker.d.ts +66 -0
  22. package/dist/connection/index.d.ts +1 -0
  23. package/dist/control/authority.d.ts +6 -0
  24. package/dist/control/external.d.ts +2 -0
  25. package/dist/control/index.d.ts +1 -0
  26. package/dist/control/state.d.ts +81 -0
  27. package/{build/main/lib → dist}/errors.d.ts +6 -3
  28. package/dist/framer/adapter.d.ts +21 -0
  29. package/dist/framer/client.d.ts +44 -0
  30. package/dist/framer/external.d.ts +5 -0
  31. package/dist/framer/frame.d.ts +251 -0
  32. package/dist/framer/index.d.ts +1 -0
  33. package/{build/module/lib/segment → dist/framer}/iterator.d.ts +32 -64
  34. package/dist/framer/streamProxy.d.ts +12 -0
  35. package/dist/framer/streamer.d.ts +17 -0
  36. package/dist/framer/writer.d.ts +257 -0
  37. package/dist/index.d.ts +16 -0
  38. package/dist/label/client.d.ts +25 -0
  39. package/dist/label/external.d.ts +4 -0
  40. package/dist/label/index.d.ts +1 -0
  41. package/dist/label/payload.d.ts +20 -0
  42. package/dist/label/retriever.d.ts +13 -0
  43. package/dist/label/writer.d.ts +26 -0
  44. package/dist/ontology/cdc.d.ts +25 -0
  45. package/dist/ontology/client.d.ts +25 -0
  46. package/dist/ontology/external.d.ts +3 -0
  47. package/dist/ontology/group/client.d.ts +11 -0
  48. package/dist/ontology/group/external.d.ts +2 -0
  49. package/dist/ontology/group/group.d.ts +7 -0
  50. package/dist/ontology/group/index.d.ts +1 -0
  51. package/dist/ontology/group/payload.d.ts +40 -0
  52. package/dist/ontology/group/writer.d.ts +13 -0
  53. package/dist/ontology/index.d.ts +1 -0
  54. package/dist/ontology/ontology.spec.d.ts +1 -0
  55. package/dist/ontology/payload.d.ts +235 -0
  56. package/dist/ontology/retriever.d.ts +12 -0
  57. package/dist/ontology/signals.d.ts +25 -0
  58. package/dist/ontology/writer.d.ts +9 -0
  59. package/dist/ranger/active.d.ts +9 -0
  60. package/dist/ranger/alias.d.ts +32 -0
  61. package/dist/ranger/client.d.ts +31 -0
  62. package/dist/ranger/external.d.ts +6 -0
  63. package/dist/ranger/index.d.ts +1 -0
  64. package/dist/ranger/kv.d.ts +50 -0
  65. package/dist/ranger/payload.d.ts +94 -0
  66. package/dist/ranger/range.d.ts +29 -0
  67. package/dist/ranger/ranger.spec.d.ts +1 -0
  68. package/dist/ranger/retriever.d.ts +10 -0
  69. package/dist/ranger/writer.d.ts +9 -0
  70. package/{build/main → dist}/setupspecs.d.ts +2 -2
  71. package/dist/signals/external.d.ts +1 -0
  72. package/dist/signals/index.d.ts +1 -0
  73. package/dist/signals/observable.d.ts +17 -0
  74. package/dist/transport.d.ts +10 -0
  75. package/dist/user/index.d.ts +1 -0
  76. package/{build/main/lib → dist}/user/payload.d.ts +3 -3
  77. package/dist/util/telem.d.ts +2 -0
  78. package/dist/workspace/client.d.ts +22 -0
  79. package/dist/workspace/external.d.ts +2 -0
  80. package/dist/workspace/index.d.ts +1 -0
  81. package/dist/workspace/lineplot/client.d.ts +15 -0
  82. package/dist/workspace/lineplot/external.d.ts +2 -0
  83. package/dist/workspace/lineplot/index.d.ts +1 -0
  84. package/dist/workspace/lineplot/linePlot.spec.d.ts +1 -0
  85. package/dist/workspace/lineplot/payload.d.ts +31 -0
  86. package/dist/workspace/lineplot/retriever.d.ts +9 -0
  87. package/dist/workspace/lineplot/writer.d.ts +39 -0
  88. package/dist/workspace/payload.d.ts +31 -0
  89. package/dist/workspace/pid/client.d.ts +16 -0
  90. package/dist/workspace/pid/external.d.ts +2 -0
  91. package/dist/workspace/pid/index.d.ts +1 -0
  92. package/dist/workspace/pid/payload.d.ts +37 -0
  93. package/dist/workspace/pid/pid.spec.d.ts +1 -0
  94. package/dist/workspace/pid/retriever.d.ts +9 -0
  95. package/dist/workspace/pid/writer.d.ts +46 -0
  96. package/dist/workspace/retriever.d.ts +12 -0
  97. package/dist/workspace/workspace.spec.d.ts +1 -0
  98. package/dist/workspace/writer.d.ts +55 -0
  99. package/package.json +27 -98
  100. package/src/auth/auth.spec.ts +46 -0
  101. package/src/auth/auth.ts +83 -0
  102. package/src/auth/index.ts +10 -0
  103. package/src/cdc/external.ts +10 -0
  104. package/src/cdc/index.ts +10 -0
  105. package/src/cdc/observable.ts +80 -0
  106. package/src/channel/channel.spec.ts +82 -0
  107. package/src/channel/client.ts +209 -0
  108. package/src/channel/creator.ts +43 -0
  109. package/src/channel/external.ts +13 -0
  110. package/src/channel/index.ts +10 -0
  111. package/src/channel/payload.ts +52 -0
  112. package/src/channel/retriever.ts +160 -0
  113. package/src/client.ts +112 -0
  114. package/src/connection/checker.ts +104 -0
  115. package/src/connection/connection.spec.ts +35 -0
  116. package/src/connection/index.ts +10 -0
  117. package/src/control/authority.ts +25 -0
  118. package/src/control/external.ts +11 -0
  119. package/src/control/index.ts +10 -0
  120. package/src/control/state.spec.ts +24 -0
  121. package/src/control/state.ts +117 -0
  122. package/src/errors.ts +153 -0
  123. package/src/framer/adapter.ts +116 -0
  124. package/src/framer/client.ts +116 -0
  125. package/src/framer/external.ts +14 -0
  126. package/src/framer/frame.spec.ts +317 -0
  127. package/src/framer/frame.ts +412 -0
  128. package/src/framer/index.ts +10 -0
  129. package/src/framer/iterator.spec.ts +62 -0
  130. package/src/framer/iterator.ts +240 -0
  131. package/src/framer/streamProxy.ts +59 -0
  132. package/src/framer/streamer.spec.ts +42 -0
  133. package/src/framer/streamer.ts +86 -0
  134. package/src/framer/writer.spec.ts +52 -0
  135. package/src/framer/writer.ts +236 -0
  136. package/src/index.ts +52 -0
  137. package/src/ontology/cdc.ts +135 -0
  138. package/src/ontology/client.ts +103 -0
  139. package/src/ontology/external.ts +12 -0
  140. package/src/ontology/group/client.ts +40 -0
  141. package/src/ontology/group/external.ts +11 -0
  142. package/src/ontology/group/group.spec.ts +46 -0
  143. package/src/ontology/group/group.ts +27 -0
  144. package/src/ontology/group/index.ts +10 -0
  145. package/src/ontology/group/payload.ts +65 -0
  146. package/src/ontology/group/writer.ts +48 -0
  147. package/src/ontology/index.ts +10 -0
  148. package/src/ontology/ontology.spec.ts +114 -0
  149. package/src/ontology/payload.ts +121 -0
  150. package/src/ontology/retriever.ts +91 -0
  151. package/src/ontology/writer.ts +49 -0
  152. package/src/ranger/active.ts +56 -0
  153. package/src/ranger/alias.ts +183 -0
  154. package/src/ranger/client.ts +124 -0
  155. package/src/ranger/external.ts +15 -0
  156. package/src/ranger/index.ts +10 -0
  157. package/src/ranger/kv.ts +91 -0
  158. package/src/ranger/payload.ts +70 -0
  159. package/src/ranger/range.ts +74 -0
  160. package/src/ranger/ranger.spec.ts +167 -0
  161. package/src/ranger/retriever.ts +50 -0
  162. package/src/ranger/writer.ts +80 -0
  163. package/src/setupspecs.ts +25 -0
  164. package/src/transport.ts +39 -0
  165. package/src/user/index.ts +10 -0
  166. package/src/user/payload.ts +17 -0
  167. package/src/util/telem.ts +19 -0
  168. package/src/vite-env.d.ts +11 -0
  169. package/src/workspace/client.ts +75 -0
  170. package/src/workspace/external.ts +11 -0
  171. package/src/workspace/index.ts +10 -0
  172. package/src/workspace/lineplot/client.ts +51 -0
  173. package/src/workspace/lineplot/external.ts +11 -0
  174. package/src/workspace/lineplot/index.ts +10 -0
  175. package/src/workspace/lineplot/linePlot.spec.ts +78 -0
  176. package/src/workspace/lineplot/payload.ts +29 -0
  177. package/src/workspace/lineplot/retriever.ts +49 -0
  178. package/src/workspace/lineplot/writer.ts +109 -0
  179. package/src/workspace/payload.ts +29 -0
  180. package/src/workspace/pid/client.ts +55 -0
  181. package/src/workspace/pid/external.ts +11 -0
  182. package/src/workspace/pid/index.ts +10 -0
  183. package/src/workspace/pid/payload.ts +31 -0
  184. package/src/workspace/pid/pid.spec.ts +111 -0
  185. package/src/workspace/pid/retriever.ts +45 -0
  186. package/src/workspace/pid/writer.ts +130 -0
  187. package/src/workspace/retriever.ts +67 -0
  188. package/src/workspace/workspace.spec.ts +62 -0
  189. package/src/workspace/writer.ts +103 -0
  190. package/tsconfig.json +7 -0
  191. package/tsconfig.vite.json +4 -0
  192. package/vite.config.ts +25 -0
  193. package/CHANGELOG.md +0 -5
  194. package/build/main/index.d.ts +0 -4
  195. package/build/main/index.js +0 -35
  196. package/build/main/lib/auth.d.ts +0 -54
  197. package/build/main/lib/auth.js +0 -62
  198. package/build/main/lib/auth.spec.js +0 -39
  199. package/build/main/lib/channel/channel.spec.js +0 -49
  200. package/build/main/lib/channel/client.d.ts +0 -94
  201. package/build/main/lib/channel/client.js +0 -134
  202. package/build/main/lib/channel/creator.d.ts +0 -19
  203. package/build/main/lib/channel/creator.js +0 -44
  204. package/build/main/lib/channel/payload.d.ts +0 -25
  205. package/build/main/lib/channel/payload.js +0 -18
  206. package/build/main/lib/channel/registry.d.ts +0 -9
  207. package/build/main/lib/channel/registry.js +0 -37
  208. package/build/main/lib/channel/retriever.d.ts +0 -11
  209. package/build/main/lib/channel/retriever.js +0 -39
  210. package/build/main/lib/client.d.ts +0 -30
  211. package/build/main/lib/client.js +0 -46
  212. package/build/main/lib/errors.js +0 -122
  213. package/build/main/lib/segment/client.d.ts +0 -62
  214. package/build/main/lib/segment/client.js +0 -95
  215. package/build/main/lib/segment/iterator.d.ts +0 -134
  216. package/build/main/lib/segment/iterator.js +0 -253
  217. package/build/main/lib/segment/iterator.spec.js +0 -73
  218. package/build/main/lib/segment/payload.d.ts +0 -16
  219. package/build/main/lib/segment/payload.js +0 -13
  220. package/build/main/lib/segment/splitter.d.ts +0 -7
  221. package/build/main/lib/segment/splitter.js +0 -25
  222. package/build/main/lib/segment/typed.d.ts +0 -15
  223. package/build/main/lib/segment/typed.js +0 -49
  224. package/build/main/lib/segment/validator.d.ts +0 -22
  225. package/build/main/lib/segment/validator.js +0 -64
  226. package/build/main/lib/segment/writer.d.ts +0 -98
  227. package/build/main/lib/segment/writer.js +0 -183
  228. package/build/main/lib/segment/writer.spec.js +0 -90
  229. package/build/main/lib/telem.d.ts +0 -395
  230. package/build/main/lib/telem.js +0 -553
  231. package/build/main/lib/telem.spec.js +0 -152
  232. package/build/main/lib/transport.d.ts +0 -10
  233. package/build/main/lib/transport.js +0 -22
  234. package/build/main/lib/user/payload.js +0 -9
  235. package/build/main/lib/util/telem.d.ts +0 -2
  236. package/build/main/lib/util/telem.js +0 -13
  237. package/build/main/setupspecs.js +0 -17
  238. package/build/module/index.d.ts +0 -4
  239. package/build/module/index.js +0 -5
  240. package/build/module/lib/auth.js +0 -63
  241. package/build/module/lib/auth.spec.js +0 -34
  242. package/build/module/lib/channel/channel.spec.js +0 -44
  243. package/build/module/lib/channel/client.d.ts +0 -94
  244. package/build/module/lib/channel/client.js +0 -134
  245. package/build/module/lib/channel/creator.d.ts +0 -19
  246. package/build/module/lib/channel/creator.js +0 -42
  247. package/build/module/lib/channel/payload.d.ts +0 -25
  248. package/build/module/lib/channel/payload.js +0 -15
  249. package/build/module/lib/channel/registry.d.ts +0 -9
  250. package/build/module/lib/channel/registry.js +0 -36
  251. package/build/module/lib/channel/retriever.d.ts +0 -11
  252. package/build/module/lib/channel/retriever.js +0 -37
  253. package/build/module/lib/client.d.ts +0 -30
  254. package/build/module/lib/client.js +0 -44
  255. package/build/module/lib/errors.d.ts +0 -53
  256. package/build/module/lib/errors.js +0 -113
  257. package/build/module/lib/segment/client.d.ts +0 -62
  258. package/build/module/lib/segment/client.js +0 -94
  259. package/build/module/lib/segment/iterator.js +0 -248
  260. package/build/module/lib/segment/iterator.spec.js +0 -68
  261. package/build/module/lib/segment/payload.d.ts +0 -16
  262. package/build/module/lib/segment/payload.js +0 -10
  263. package/build/module/lib/segment/splitter.d.ts +0 -7
  264. package/build/module/lib/segment/splitter.js +0 -26
  265. package/build/module/lib/segment/typed.d.ts +0 -15
  266. package/build/module/lib/segment/typed.js +0 -49
  267. package/build/module/lib/segment/validator.d.ts +0 -22
  268. package/build/module/lib/segment/validator.js +0 -60
  269. package/build/module/lib/segment/writer.d.ts +0 -98
  270. package/build/module/lib/segment/writer.js +0 -183
  271. package/build/module/lib/segment/writer.spec.js +0 -85
  272. package/build/module/lib/telem.d.ts +0 -395
  273. package/build/module/lib/telem.js +0 -545
  274. package/build/module/lib/telem.spec.js +0 -147
  275. package/build/module/lib/transport.d.ts +0 -10
  276. package/build/module/lib/transport.js +0 -22
  277. package/build/module/lib/user/payload.d.ts +0 -12
  278. package/build/module/lib/user/payload.js +0 -6
  279. package/build/module/lib/util/telem.d.ts +0 -2
  280. package/build/module/lib/util/telem.js +0 -9
  281. package/build/module/setupspecs.d.ts +0 -4
  282. package/build/module/setupspecs.js +0 -16
  283. /package/{build/main/lib → dist/auth}/auth.spec.d.ts +0 -0
  284. /package/{build/main/lib → dist}/channel/channel.spec.d.ts +0 -0
  285. /package/{build/main/lib/segment/iterator.spec.d.ts → dist/connection/connection.spec.d.ts} +0 -0
  286. /package/{build/main/lib/segment/writer.spec.d.ts → dist/control/state.spec.d.ts} +0 -0
  287. /package/{build/main/lib/telem.spec.d.ts → dist/framer/frame.spec.d.ts} +0 -0
  288. /package/{build/module/lib/segment → dist/framer}/iterator.spec.d.ts +0 -0
  289. /package/{build/module/lib/auth.spec.d.ts → dist/framer/streamer.spec.d.ts} +0 -0
  290. /package/{build/module/lib/segment → dist/framer}/writer.spec.d.ts +0 -0
  291. /package/{build/module/lib/channel/channel.spec.d.ts → dist/label/label.spec.d.ts} +0 -0
  292. /package/{build/module/lib/telem.spec.d.ts → dist/ontology/group/group.spec.d.ts} +0 -0
@@ -1,49 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const errors_1 = require("../errors");
4
- const telem_1 = require("../telem");
5
- class TypedSegment {
6
- constructor(channel, payload) {
7
- this.channel = channel;
8
- this.payload = payload;
9
- this.view = new this.channel.dataType.arrayConstructor(this.payload.data.buffer);
10
- }
11
- get start() {
12
- return this.payload.start;
13
- }
14
- get span() {
15
- return this.channel.rate.byteSpan(telem_1.Size.Bytes(this.view.byteLength), this.channel.density);
16
- }
17
- get range() {
18
- return this.start.spanRange(this.span);
19
- }
20
- get end() {
21
- return this.range.end;
22
- }
23
- get size() {
24
- return telem_1.Size.Bytes(this.view.byteLength);
25
- }
26
- extend(other) {
27
- if (other.channel.key !== this.channel.key) {
28
- throw new errors_1.ValidationError(`
29
- Cannot extend segment because channel keys mismatch.
30
- Segment Channel Key: ${this.channel.key}
31
- Other Segment Channel Key: ${other.channel.key}
32
- `);
33
- }
34
- else if (!this.end.equals(other.start)) {
35
- throw new errors_1.ContiguityError(`
36
- Cannot extend segment because segments are not contiguous.
37
- Segment End: ${this.end}
38
- Other Segment Start: ${other.start}
39
- `);
40
- }
41
- const newData = new Uint8Array(this.view.byteLength + other.view.byteLength);
42
- newData.set(this.payload.data, 0);
43
- newData.set(other.payload.data, this.view.byteLength);
44
- this.payload.data = newData;
45
- this.view = new this.channel.dataType.arrayConstructor(this.payload.data.buffer);
46
- }
47
- }
48
- exports.default = TypedSegment;
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3NlZ21lbnQvdHlwZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFDQSxzQ0FBNkQ7QUFDN0Qsb0NBT2tCO0FBSWxCLE1BQXFCLFlBQVk7SUFLL0IsWUFBWSxPQUF1QixFQUFFLE9BQXVCO1FBQzFELElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FDcEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUN6QixDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUMvQixZQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQ2hDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBa0IsQ0FDaEMsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsSUFBSSxHQUFHO1FBQ0wsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ04sT0FBTyxZQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFtQjtRQUN4QixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFO1lBQzFDLE1BQU0sSUFBSSx3QkFBZSxDQUFDOzsrQkFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUc7cUNBQ1YsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHO09BQy9DLENBQUMsQ0FBQztTQUNKO2FBQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN4QyxNQUFNLElBQUksd0JBQWUsQ0FBQzs7cUJBRVgsSUFBSSxDQUFDLEdBQUc7NkJBQ0EsS0FBSyxDQUFDLEtBQUs7T0FDakMsQ0FBQyxDQUFDO1NBQ0o7UUFDRCxNQUFNLE9BQU8sR0FBRyxJQUFJLFVBQVUsQ0FDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQzdDLENBQUM7UUFDRixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2xDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksR0FBRyxPQUFPLENBQUM7UUFDNUIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUNwRCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQ3pCLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUE1REQsK0JBNERDIn0=
@@ -1,22 +0,0 @@
1
- import { DataType, TimeStamp, TypedArray } from '../telem';
2
- import TypedSegment from './typed';
3
- export declare class ScalarTypeValidator {
4
- validate(array: TypedArray, dataType: DataType): void;
5
- }
6
- export declare type ContiguityValidatorProps = {
7
- allowNoHighWaterMark: boolean;
8
- allowOverlap: boolean;
9
- allowGaps: boolean;
10
- };
11
- export declare class ContiguityValidator {
12
- highWaterMarks: Map<string, TimeStamp>;
13
- allowNoHighWaterMark: boolean;
14
- allowOverlap: boolean;
15
- allowGaps: boolean;
16
- constructor(props: ContiguityValidatorProps);
17
- validate(segment: TypedSegment): void;
18
- private enforceNoOverlap;
19
- private enforceNoGaps;
20
- private getHighWaterMark;
21
- private updateHighWaterMark;
22
- }
@@ -1,64 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ContiguityValidator = exports.ScalarTypeValidator = void 0;
4
- const errors_1 = require("../errors");
5
- class ScalarTypeValidator {
6
- validate(array, dataType) {
7
- if (!dataType.checkArray(array)) {
8
- throw new errors_1.ValidationError({
9
- field: 'data',
10
- message: `Data type mismatch. Expected ${dataType} but got ${array.constructor.name}`,
11
- });
12
- }
13
- }
14
- }
15
- exports.ScalarTypeValidator = ScalarTypeValidator;
16
- class ContiguityValidator {
17
- constructor(props) {
18
- this.allowNoHighWaterMark = false;
19
- this.allowOverlap = false;
20
- this.allowGaps = false;
21
- this.highWaterMarks = new Map();
22
- this.allowNoHighWaterMark = props.allowNoHighWaterMark;
23
- this.allowOverlap = props.allowOverlap;
24
- this.allowGaps = props.allowGaps;
25
- }
26
- validate(segment) {
27
- if (!segment.channel.key) {
28
- throw new errors_1.UnexpectedError('Channel key is not set');
29
- }
30
- const hwm = this.getHighWaterMark(segment.channel.key);
31
- if (hwm) {
32
- this.enforceNoOverlap(hwm, segment);
33
- this.enforceNoGaps(hwm, segment);
34
- }
35
- this.updateHighWaterMark(segment);
36
- }
37
- enforceNoOverlap(hwm, seg) {
38
- if (!this.allowOverlap && seg.start.before(hwm)) {
39
- throw new errors_1.ContiguityError(`Segment overlaps with previous segment. Previous segment ends at ${hwm.toString()}
40
- Segment starts at ${seg.start.toString()}`);
41
- }
42
- }
43
- enforceNoGaps(hwm, seg) {
44
- if (!this.allowGaps && !seg.start.equals(hwm)) {
45
- throw new errors_1.ContiguityError(`Segment is not contiguous with previous segment. Previous segment ends at ${hwm.toString()}
46
- Segment starts at ${seg.start.toString()}`);
47
- }
48
- }
49
- getHighWaterMark(key) {
50
- const hwm = this.highWaterMarks.get(key);
51
- if (!hwm && !this.allowNoHighWaterMark) {
52
- throw new errors_1.UnexpectedError('No high water mark found for channel key ' + key);
53
- }
54
- return hwm;
55
- }
56
- updateHighWaterMark(seg) {
57
- if (!seg.channel.key) {
58
- throw new errors_1.UnexpectedError('Channel key is not set');
59
- }
60
- this.highWaterMarks.set(seg.channel.key, seg.end);
61
- }
62
- }
63
- exports.ContiguityValidator = ContiguityValidator;
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9zZWdtZW50L3ZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxzQ0FBOEU7QUFLOUUsTUFBYSxtQkFBbUI7SUFDOUIsUUFBUSxDQUFDLEtBQWlCLEVBQUUsUUFBa0I7UUFDNUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDL0IsTUFBTSxJQUFJLHdCQUFlLENBQUM7Z0JBQ3hCLEtBQUssRUFBRSxNQUFNO2dCQUNiLE9BQU8sRUFBRSxnQ0FBZ0MsUUFBUSxZQUFZLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFO2FBQ3RGLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztDQUNGO0FBVEQsa0RBU0M7QUFRRCxNQUFhLG1CQUFtQjtJQU05QixZQUFZLEtBQStCO1FBSjNDLHlCQUFvQixHQUFHLEtBQUssQ0FBQztRQUM3QixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNyQixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBR2hCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDLG9CQUFvQixDQUFDO1FBQ3ZELElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQztRQUN2QyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7SUFDbkMsQ0FBQztJQUVELFFBQVEsQ0FBQyxPQUFxQjtRQUM1QixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUU7WUFDeEIsTUFBTSxJQUFJLHdCQUFlLENBQUMsd0JBQXdCLENBQUMsQ0FBQztTQUNyRDtRQUNELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZELElBQUksR0FBRyxFQUFFO1lBQ1AsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUNwQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztTQUNsQztRQUNELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRU8sZ0JBQWdCLENBQUMsR0FBYyxFQUFFLEdBQWlCO1FBQ3hELElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQy9DLE1BQU0sSUFBSSx3QkFBZSxDQUN2QixvRUFBb0UsR0FBRyxDQUFDLFFBQVEsRUFBRTs0QkFDOUQsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUMzQyxDQUFDO1NBQ0g7SUFDSCxDQUFDO0lBRU8sYUFBYSxDQUFDLEdBQWMsRUFBRSxHQUFpQjtRQUNyRCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzdDLE1BQU0sSUFBSSx3QkFBZSxDQUN2Qiw2RUFBNkUsR0FBRyxDQUFDLFFBQVEsRUFBRTs0QkFDdkUsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUMzQyxDQUFDO1NBQ0g7SUFDSCxDQUFDO0lBRU8sZ0JBQWdCLENBQUMsR0FBVztRQUNsQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFO1lBQ3RDLE1BQU0sSUFBSSx3QkFBZSxDQUN2QiwyQ0FBMkMsR0FBRyxHQUFHLENBQ2xELENBQUM7U0FDSDtRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVPLG1CQUFtQixDQUFDLEdBQWlCO1FBQzNDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRTtZQUNwQixNQUFNLElBQUksd0JBQWUsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1NBQ3JEO1FBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BELENBQUM7Q0FDRjtBQTNERCxrREEyREMifQ==
@@ -1,98 +0,0 @@
1
- import { StreamClient } from '@synnaxlabs/freighter';
2
- import ChannelRegistry from '../channel/registry';
3
- import { TypedArray, UnparsedTimeStamp } from '../telem';
4
- import { SegmentPayload } from './payload';
5
- /**
6
- * CoreWriter is used to write telemetry to a set of channels in time-order. It
7
- * should not be instantiated directly, but rather through a {@link SegmentClient}.
8
- *
9
- * Using a writer is ideal when writing large volumes of data (such as recording
10
- * telemetry from a sensor), but it is relatively complex and challenging to use.
11
- * If you're looking to write a contiguous block of telemetry, see the {@link SegmentClient}
12
- * write() method.
13
- */
14
- export declare class CoreWriter {
15
- private static ENDPOINT;
16
- private client;
17
- private stream;
18
- private keys;
19
- constructor(client: StreamClient);
20
- /**
21
- * Opens the writer, acquiring an exclusive lock on the given channels for
22
- * the duration of the writer's lifetime. open must be called before any other
23
- * writer methods.
24
- *
25
- * @param keys - A list of keys representing the channels the writer will write
26
- * to.
27
- */
28
- open(keys: string[]): Promise<void>;
29
- /**
30
- * Validates and writes the given segments to the database. The provided segments
31
- * must:
32
- *
33
- * 1. Be in time order (on a per-channel basis)
34
- * 2. Have channel keys in the set of keys this writer was opened with.
35
- * 3. Have non-zero length data with the correct data type.
36
- *
37
- * @param segments - A list of segments to write to the database.
38
- * @returns false if the writer has accumulated an error. In this case,
39
- * the caller should stop executing requests and close the writer.
40
- */
41
- write(segments: SegmentPayload[]): Promise<boolean>;
42
- /**
43
- * Closes the writer, raising any accumulated error encountered during operation.
44
- * A writer MUST be closed after use, and this method should probably be placed
45
- * in a 'finally' block. If the writer is not closed, the database will not release
46
- * the exclusive lock on the channels, preventing any other callers from
47
- * writing to them. It also might leak resources and threads.
48
- */
49
- close(): Promise<void>;
50
- private checkKeys;
51
- }
52
- /**
53
- * TypedWriter is used to write telemetry to a set of channels in time-order. It
54
- * should not be instantiated directly, but rather through a {@link SegmentClient}.
55
- *
56
- * Using a writer is ideal when writing large volumes of data (such as recording
57
- * telemetry from a sensor), but it is relatively complex and challenging to use.
58
- * If you're looking to write a contiguous block of telemetry, see the {@link SegmentClient}
59
- * write() method.
60
- */
61
- export declare class TypedWriter {
62
- private core;
63
- private splitter;
64
- private channels;
65
- private scalarTypeValidator;
66
- private contiguityValidator;
67
- constructor(client: StreamClient, channels: ChannelRegistry);
68
- /**
69
- * Opens the writer, acquiring an exclusive lock on the given channels for
70
- * the duration of the writer's lifetime. open must be called before any other
71
- * writer methods.
72
- *
73
- * @param keys - A list of keys representing the channels the writer will write
74
- * to.
75
- */
76
- open(keys: string[]): Promise<void>;
77
- /**
78
- * Writes the given telemetry to the database.
79
- *
80
- * @param to - They key of the channel to write to. This must be in the set of
81
- * keys this writer was opened with.
82
- * @param start - The start time of the telemetry. This must be equal to
83
- * the end of the previous segment written to the channel (unless it's the first
84
- * write to that channel).
85
- * @param data - The telemetry to write. This must be a valid type for the channel.
86
- * @returns false if the writer has accumulated an error. In this case,
87
- * the caller should stop executing requests and close the writer.
88
- */
89
- write(to: string, start: UnparsedTimeStamp, data: TypedArray): Promise<boolean>;
90
- /**
91
- * Closes the writer, raising any accumulated error encountered during operation.
92
- * A writer MUST be closed after use, and this method should probably be placed
93
- * in a 'finally' block. If the writer is not closed, the database will not release
94
- * the exclusive lock on the channels, preventing any other callers from
95
- * writing to them. It also might leak resources and threads.
96
- */
97
- close(): Promise<void>;
98
- }
@@ -1,183 +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.TypedWriter = exports.CoreWriter = void 0;
7
- const freighter_1 = require("@synnaxlabs/freighter");
8
- const zod_1 = require("zod");
9
- const errors_1 = require("../errors");
10
- const telem_1 = require("../telem");
11
- const payload_1 = require("./payload");
12
- const splitter_1 = __importDefault(require("./splitter"));
13
- const typed_1 = __importDefault(require("./typed"));
14
- const validator_1 = require("./validator");
15
- const RequestSchema = zod_1.z.object({
16
- openKeys: zod_1.z.string().array().optional(),
17
- segments: payload_1.SegmentPayloadSchema.array().optional(),
18
- });
19
- const ResponseSchema = zod_1.z.object({
20
- ack: zod_1.z.boolean(),
21
- error: freighter_1.ErrorPayloadSchema.optional(),
22
- });
23
- const NOT_OPEN = new errors_1.GeneralError('Writer has not been opened. Please open before calling write() or close().');
24
- /**
25
- * CoreWriter is used to write telemetry to a set of channels in time-order. It
26
- * should not be instantiated directly, but rather through a {@link SegmentClient}.
27
- *
28
- * Using a writer is ideal when writing large volumes of data (such as recording
29
- * telemetry from a sensor), but it is relatively complex and challenging to use.
30
- * If you're looking to write a contiguous block of telemetry, see the {@link SegmentClient}
31
- * write() method.
32
- */
33
- class CoreWriter {
34
- constructor(client) {
35
- this.client = client;
36
- this.keys = [];
37
- }
38
- /**
39
- * Opens the writer, acquiring an exclusive lock on the given channels for
40
- * the duration of the writer's lifetime. open must be called before any other
41
- * writer methods.
42
- *
43
- * @param keys - A list of keys representing the channels the writer will write
44
- * to.
45
- */
46
- async open(keys) {
47
- this.keys = keys;
48
- this.stream = await this.client.stream(CoreWriter.ENDPOINT,
49
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
50
- // @ts-ignore
51
- RequestSchema, ResponseSchema);
52
- this.stream.send({ openKeys: keys });
53
- const [res, err] = await this.stream.receive();
54
- if (err)
55
- throw err;
56
- if (!(res === null || res === void 0 ? void 0 : res.ack))
57
- throw new errors_1.UnexpectedError('Writer failed to positively acknowledge open request. This is a bug. Please report it.');
58
- }
59
- /**
60
- * Validates and writes the given segments to the database. The provided segments
61
- * must:
62
- *
63
- * 1. Be in time order (on a per-channel basis)
64
- * 2. Have channel keys in the set of keys this writer was opened with.
65
- * 3. Have non-zero length data with the correct data type.
66
- *
67
- * @param segments - A list of segments to write to the database.
68
- * @returns false if the writer has accumulated an error. In this case,
69
- * the caller should stop executing requests and close the writer.
70
- */
71
- async write(segments) {
72
- if (!this.stream)
73
- throw NOT_OPEN;
74
- if (this.stream.received())
75
- return false;
76
- this.checkKeys(segments);
77
- const err = this.stream.send({ segments });
78
- if (err)
79
- throw err;
80
- return true;
81
- }
82
- /**
83
- * Closes the writer, raising any accumulated error encountered during operation.
84
- * A writer MUST be closed after use, and this method should probably be placed
85
- * in a 'finally' block. If the writer is not closed, the database will not release
86
- * the exclusive lock on the channels, preventing any other callers from
87
- * writing to them. It also might leak resources and threads.
88
- */
89
- async close() {
90
- if (!this.stream)
91
- throw NOT_OPEN;
92
- this.stream.closeSend();
93
- const [res, err] = await this.stream.receive();
94
- if (!err && (res === null || res === void 0 ? void 0 : res.error))
95
- throw (0, freighter_1.decodeError)(res.error);
96
- if (!(err instanceof freighter_1.EOF))
97
- throw err;
98
- }
99
- checkKeys(segments) {
100
- // check that the channel key of each segment is in the open keys
101
- segments
102
- .map((segment) => segment.channelKey)
103
- .forEach((key) => {
104
- if (!this.keys.includes(key))
105
- throw new errors_1.ValidationError({
106
- field: 'channelKey',
107
- message: `Channel key ${key} is not in the list of keys this writer was opened with.`,
108
- });
109
- });
110
- }
111
- }
112
- exports.CoreWriter = CoreWriter;
113
- CoreWriter.ENDPOINT = '/segment/write';
114
- /**
115
- * TypedWriter is used to write telemetry to a set of channels in time-order. It
116
- * should not be instantiated directly, but rather through a {@link SegmentClient}.
117
- *
118
- * Using a writer is ideal when writing large volumes of data (such as recording
119
- * telemetry from a sensor), but it is relatively complex and challenging to use.
120
- * If you're looking to write a contiguous block of telemetry, see the {@link SegmentClient}
121
- * write() method.
122
- */
123
- class TypedWriter {
124
- constructor(client, channels) {
125
- this.core = new CoreWriter(client);
126
- this.channels = channels;
127
- this.scalarTypeValidator = new validator_1.ScalarTypeValidator();
128
- this.contiguityValidator = new validator_1.ContiguityValidator({
129
- allowNoHighWaterMark: true,
130
- allowGaps: false,
131
- allowOverlap: false,
132
- });
133
- this.splitter = new splitter_1.default(telem_1.Size.Megabytes(4));
134
- }
135
- /**
136
- * Opens the writer, acquiring an exclusive lock on the given channels for
137
- * the duration of the writer's lifetime. open must be called before any other
138
- * writer methods.
139
- *
140
- * @param keys - A list of keys representing the channels the writer will write
141
- * to.
142
- */
143
- async open(keys) {
144
- await this.core.open(keys);
145
- }
146
- /**
147
- * Writes the given telemetry to the database.
148
- *
149
- * @param to - They key of the channel to write to. This must be in the set of
150
- * keys this writer was opened with.
151
- * @param start - The start time of the telemetry. This must be equal to
152
- * the end of the previous segment written to the channel (unless it's the first
153
- * write to that channel).
154
- * @param data - The telemetry to write. This must be a valid type for the channel.
155
- * @returns false if the writer has accumulated an error. In this case,
156
- * the caller should stop executing requests and close the writer.
157
- */
158
- async write(to, start, data) {
159
- const ch = await this.channels.get(to);
160
- this.scalarTypeValidator.validate(data, ch.dataType);
161
- const pld = {
162
- channelKey: to,
163
- start: new telem_1.TimeStamp(start),
164
- data: new Uint8Array(data.buffer),
165
- };
166
- const segment = new typed_1.default(ch, pld);
167
- this.contiguityValidator.validate(segment);
168
- const segments = this.splitter.split(segment);
169
- return this.core.write(segments.map((s) => s.payload));
170
- }
171
- /**
172
- * Closes the writer, raising any accumulated error encountered during operation.
173
- * A writer MUST be closed after use, and this method should probably be placed
174
- * in a 'finally' block. If the writer is not closed, the database will not release
175
- * the exclusive lock on the channels, preventing any other callers from
176
- * writing to them. It also might leak resources and threads.
177
- */
178
- async close() {
179
- await this.core.close();
180
- }
181
- }
182
- exports.TypedWriter = TypedWriter;
183
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9zZWdtZW50L3dyaXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxxREFNK0I7QUFDL0IsNkJBQXdCO0FBR3hCLHNDQUEyRTtBQUMzRSxvQ0FBMEU7QUFFMUUsdUNBQWlFO0FBQ2pFLDBEQUFrQztBQUNsQyxvREFBbUM7QUFDbkMsMkNBQXVFO0FBRXZFLE1BQU0sYUFBYSxHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUM7SUFDN0IsUUFBUSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDdkMsUUFBUSxFQUFFLDhCQUFvQixDQUFDLEtBQUssRUFBRSxDQUFDLFFBQVEsRUFBRTtDQUNsRCxDQUFDLENBQUM7QUFJSCxNQUFNLGNBQWMsR0FBRyxPQUFDLENBQUMsTUFBTSxDQUFDO0lBQzlCLEdBQUcsRUFBRSxPQUFDLENBQUMsT0FBTyxFQUFFO0lBQ2hCLEtBQUssRUFBRSw4QkFBa0IsQ0FBQyxRQUFRLEVBQUU7Q0FDckMsQ0FBQyxDQUFDO0FBSUgsTUFBTSxRQUFRLEdBQUcsSUFBSSxxQkFBWSxDQUMvQiw0RUFBNEUsQ0FDN0UsQ0FBQztBQUVGOzs7Ozs7OztHQVFHO0FBQ0gsTUFBYSxVQUFVO0lBTXJCLFlBQVksTUFBb0I7UUFDOUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxLQUFLLENBQUMsSUFBSSxDQUFDLElBQWM7UUFDdkIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUNwQyxVQUFVLENBQUMsUUFBUTtRQUNuQiw2REFBNkQ7UUFD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
@@ -1,90 +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(1),
17
- dataType: telem_1.DataType.Float64,
18
- });
19
- };
20
- (0, ava_1.default)('TypedWriter - basic write', async (t) => {
21
- const ch = await newChannel();
22
- const writer = await client.data.newWriter([ch.key]);
23
- try {
24
- await writer.write(ch.key, 0, (0, telem_2.randomTypedArray)(10, ch.dataType));
25
- }
26
- finally {
27
- await writer.close();
28
- }
29
- t.true(true);
30
- });
31
- (0, ava_1.default)('TypedWriter - invalid data type', async (t) => {
32
- const ch = await newChannel();
33
- const writer = await client.data.newWriter([ch.key]);
34
- try {
35
- await writer.write(ch.key, 0, (0, telem_2.randomTypedArray)(16, telem_1.DataType.Uint8));
36
- t.fail('Expected error');
37
- }
38
- catch (err) {
39
- t.true(err instanceof errors_1.ValidationError);
40
- }
41
- finally {
42
- await writer.close();
43
- }
44
- });
45
- (0, ava_1.default)('TypedWriter - non contiguous', async (t) => {
46
- const ch = await newChannel();
47
- const writer = await client.data.newWriter([ch.key]);
48
- try {
49
- await writer.write(ch.key, 0, (0, telem_2.randomTypedArray)(10, ch.dataType));
50
- await writer.write(ch.key, 12, (0, telem_2.randomTypedArray)(10, ch.dataType));
51
- t.fail('Expected error');
52
- }
53
- catch (err) {
54
- t.true(err instanceof errors_1.ContiguityError);
55
- }
56
- finally {
57
- await writer.close();
58
- }
59
- });
60
- (0, ava_1.default)('TypedWriter - multi segment write', async (t) => {
61
- const ch = await newChannel();
62
- const nSamples = 1000;
63
- const nWrites = 100;
64
- const writer = await client.data.newWriter([ch.key]);
65
- const data = (0, telem_2.randomTypedArray)(nSamples, ch.dataType);
66
- try {
67
- for (let i = 0; i < nWrites; i++) {
68
- await writer.write(ch.key, telem_1.TimeSpan.Seconds(i * nSamples), data);
69
- }
70
- }
71
- finally {
72
- await writer.close();
73
- }
74
- t.true(true);
75
- });
76
- (0, ava_1.default)('TypedWriter - segment splitting', async (t) => {
77
- const ch = await newChannel();
78
- const span = ch.rate.byteSpan(new telem_1.Size(9e6), ch.density);
79
- const nSamples = ch.rate.sampleCount(span);
80
- const data = (0, telem_2.randomTypedArray)(nSamples, ch.dataType);
81
- const writer = await client.data.newWriter([ch.key]);
82
- try {
83
- await writer.write(ch.key, 0, data);
84
- }
85
- finally {
86
- await writer.close();
87
- }
88
- t.true(true);
89
- });
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGVyLnNwZWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3NlZ21lbnQvd3JpdGVyLnNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw4Q0FBdUI7QUFFdkIsaURBQTZDO0FBQzdDLHNDQUE2RDtBQUM3RCxvQ0FBMEQ7QUFDMUQseUNBQWlEO0FBRWpELE1BQU0sTUFBTSxHQUFHLElBQUEsc0JBQVMsR0FBRSxDQUFDO0FBRTNCLE1BQU0sVUFBVSxHQUFHLEtBQUssSUFBSSxFQUFFO0lBQzVCLE9BQU8sTUFBTSxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztRQUNqQyxJQUFJLEVBQUUsTUFBTTtRQUNaLE1BQU0sRUFBRSxDQUFDO1FBQ1QsSUFBSSxFQUFFLFlBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2hCLFFBQVEsRUFBRSxnQkFBUSxDQUFDLE9BQU87S0FDM0IsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsSUFBQSxhQUFJLEVBQUMsMkJBQTJCLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQzVDLE1BQU0sRUFBRSxHQUFHLE1BQU0sVUFBVSxFQUFFLENBQUM7SUFDOUIsTUFBTSxNQUFNLEdBQUcsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3JELElBQUk7UUFDRixNQUFNLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsSUFBQSx3QkFBZ0IsRUFBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7S0FDbEU7WUFBUztRQUNSLE1BQU0sTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO0tBQ3RCO0lBQ0QsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNmLENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBQSxhQUFJLEVBQUMsaUNBQWlDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ2xELE1BQU0sRUFBRSxHQUFHLE1BQU0sVUFBVSxFQUFFLENBQUM7SUFDOUIsTUFBTSxNQUFNLEdBQUcsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3JELElBQUk7UUFDRixNQUFNLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsSUFBQSx3QkFBZ0IsRUFBQyxFQUFFLEVBQUUsZ0JBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3BFLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztLQUMxQjtJQUFDLE9BQU8sR0FBRyxFQUFFO1FBQ1osQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLFlBQVksd0JBQWUsQ0FBQyxDQUFDO0tBQ3hDO1lBQVM7UUFDUixNQUFNLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztLQUN0QjtBQUNILENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBQSxhQUFJLEVBQUMsOEJBQThCLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQy9DLE1BQU0sRUFBRSxHQUFHLE1BQU0sVUFBVSxFQUFFLENBQUM7SUFDOUIsTUFBTSxNQUFNLEdBQUcsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3JELElBQUk7UUFDRixNQUFNLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsSUFBQSx3QkFBZ0IsRUFBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDakUsTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLElBQUEsd0JBQWdCLEVBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ2xFLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztLQUMxQjtJQUFDLE9BQU8sR0FBRyxFQUFFO1FBQ1osQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLFlBQVksd0JBQWUsQ0FBQyxDQUFDO0tBQ3hDO1lBQVM7UUFDUixNQUFNLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztLQUN0QjtBQUNILENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBQSxhQUFJLEVBQUMsbUNBQW1DLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ3BELE1BQU0sRUFBRSxHQUFHLE1BQU0sVUFBVSxFQUFFLENBQUM7SUFDOUIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDO0lBQ3RCLE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQztJQUNwQixNQUFNLE1BQU0sR0FBRyxNQUFNLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDckQsTUFBTSxJQUFJLEdBQUcsSUFBQSx3QkFBZ0IsRUFBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3JELElBQUk7UUFDRixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ2hDLE1BQU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLGdCQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztTQUNsRTtLQUNGO1lBQVM7UUFDUixNQUFNLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztLQUN0QjtJQUNELENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDZixDQUFDLENBQUMsQ0FBQztBQUVILElBQUEsYUFBSSxFQUFDLGlDQUFpQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNsRCxNQUFNLEVBQUUsR0FBRyxNQUFNLFVBQVUsRUFBRSxDQUFDO0lBQzlCLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksWUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN6RCxNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQyxNQUFNLElBQUksR0FBRyxJQUFBLHdCQUFnQixFQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDckQsTUFBTSxNQUFNLEdBQUcsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3JELElBQUk7UUFDRixNQUFNLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7S0FDckM7WUFBUztRQUNSLE1BQU0sTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO0tBQ3RCO0lBQ0QsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNmLENBQUMsQ0FBQyxDQUFDIn0=