@synnaxlabs/client 0.56.1 → 0.57.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (741) hide show
  1. package/dist/client-B08VDLSA.js +14463 -0
  2. package/dist/client-B08VDLSA.js.map +1 -0
  3. package/dist/client.js +1128 -14876
  4. package/dist/client.js.map +1 -0
  5. package/dist/src/access/client.d.ts +10 -1
  6. package/dist/src/access/client.d.ts.map +1 -1
  7. package/dist/src/access/enforce.d.ts.map +1 -1
  8. package/dist/src/access/external.d.ts +1 -0
  9. package/dist/src/access/external.d.ts.map +1 -1
  10. package/dist/src/access/granted.d.ts +39 -0
  11. package/dist/src/access/granted.d.ts.map +1 -0
  12. package/dist/src/access/policy/client.d.ts +136 -147
  13. package/dist/src/access/policy/client.d.ts.map +1 -1
  14. package/dist/src/access/policy/types.gen.d.ts +15 -68
  15. package/dist/src/access/policy/types.gen.d.ts.map +1 -1
  16. package/dist/src/access/role/client.d.ts +77 -58
  17. package/dist/src/access/role/client.d.ts.map +1 -1
  18. package/dist/src/access/role/types.gen.d.ts +8 -14
  19. package/dist/src/access/role/types.gen.d.ts.map +1 -1
  20. package/dist/src/actions/actions.d.ts +5 -6
  21. package/dist/src/actions/actions.d.ts.map +1 -1
  22. package/dist/src/actions/controller.d.ts +194 -0
  23. package/dist/src/actions/controller.d.ts.map +1 -0
  24. package/dist/src/actions/external.d.ts +1 -0
  25. package/dist/src/actions/external.d.ts.map +1 -1
  26. package/dist/src/arc/actions.d.ts +575 -0
  27. package/dist/src/arc/actions.d.ts.map +1 -0
  28. package/dist/src/arc/actions.gen.d.ts +1439 -0
  29. package/dist/src/arc/actions.gen.d.ts.map +1 -0
  30. package/dist/src/arc/client.d.ts +97 -13
  31. package/dist/src/arc/client.d.ts.map +1 -1
  32. package/dist/src/arc/compiler/types.gen.d.ts +3 -3
  33. package/dist/src/arc/compiler/types.gen.d.ts.map +1 -1
  34. package/dist/src/arc/external.d.ts +2 -0
  35. package/dist/src/arc/external.d.ts.map +1 -1
  36. package/dist/src/arc/graph/types.gen.d.ts +45 -597
  37. package/dist/src/arc/graph/types.gen.d.ts.map +1 -1
  38. package/dist/src/arc/ir/index.d.ts +1 -1
  39. package/dist/src/arc/ir/index.d.ts.map +1 -1
  40. package/dist/src/arc/ir/ir.d.ts +2 -0
  41. package/dist/src/arc/ir/ir.d.ts.map +1 -0
  42. package/dist/src/arc/ir/types.gen.d.ts +58 -2807
  43. package/dist/src/arc/ir/types.gen.d.ts.map +1 -1
  44. package/dist/src/arc/module/types.gen.d.ts +18 -1090
  45. package/dist/src/arc/module/types.gen.d.ts.map +1 -1
  46. package/dist/src/arc/program/types.gen.d.ts +18 -1090
  47. package/dist/src/arc/program/types.gen.d.ts.map +1 -1
  48. package/dist/src/arc/text/types.gen.d.ts +54 -1
  49. package/dist/src/arc/text/types.gen.d.ts.map +1 -1
  50. package/dist/src/arc/types/types.gen.d.ts +35 -153
  51. package/dist/src/arc/types/types.gen.d.ts.map +1 -1
  52. package/dist/src/arc/types.gen.d.ts +98 -2278
  53. package/dist/src/arc/types.gen.d.ts.map +1 -1
  54. package/dist/src/auth/auth.d.ts +14 -2
  55. package/dist/src/auth/auth.d.ts.map +1 -1
  56. package/dist/src/channel/client.d.ts +113 -75
  57. package/dist/src/channel/client.d.ts.map +1 -1
  58. package/dist/src/channel/external.d.ts +0 -1
  59. package/dist/src/channel/external.d.ts.map +1 -1
  60. package/dist/src/channel/payload.d.ts +65 -56
  61. package/dist/src/channel/payload.d.ts.map +1 -1
  62. package/dist/src/channel/types.gen.d.ts +26 -73
  63. package/dist/src/channel/types.gen.d.ts.map +1 -1
  64. package/dist/src/channel/writer.d.ts +1 -3
  65. package/dist/src/channel/writer.d.ts.map +1 -1
  66. package/dist/src/client.d.ts +55 -27
  67. package/dist/src/client.d.ts.map +1 -1
  68. package/dist/src/connection/client.d.ts +146 -0
  69. package/dist/src/connection/client.d.ts.map +1 -0
  70. package/dist/src/connection/external.d.ts +3 -0
  71. package/dist/src/connection/external.d.ts.map +1 -0
  72. package/dist/src/connection/index.d.ts +1 -1
  73. package/dist/src/connection/index.d.ts.map +1 -1
  74. package/dist/src/connection/status.d.ts +252 -0
  75. package/dist/src/connection/status.d.ts.map +1 -0
  76. package/dist/src/control/client.d.ts +31 -7
  77. package/dist/src/control/client.d.ts.map +1 -1
  78. package/dist/src/control/state.d.ts +47 -16
  79. package/dist/src/control/state.d.ts.map +1 -1
  80. package/dist/src/device/client.d.ts +59 -17
  81. package/dist/src/device/client.d.ts.map +1 -1
  82. package/dist/src/device/types.gen.d.ts +17 -67
  83. package/dist/src/device/types.gen.d.ts.map +1 -1
  84. package/dist/src/errors.d.ts +17 -20
  85. package/dist/src/errors.d.ts.map +1 -1
  86. package/dist/src/ethercat/external.d.ts +2 -0
  87. package/dist/src/ethercat/external.d.ts.map +1 -0
  88. package/dist/src/ethercat/index.d.ts +2 -0
  89. package/dist/src/ethercat/index.d.ts.map +1 -0
  90. package/dist/src/ethercat/types.gen.d.ts +243 -0
  91. package/dist/src/ethercat/types.gen.d.ts.map +1 -0
  92. package/dist/src/framer/adapter.d.ts +8 -5
  93. package/dist/src/framer/adapter.d.ts.map +1 -1
  94. package/dist/src/framer/benchutil.d.ts +19 -0
  95. package/dist/src/framer/benchutil.d.ts.map +1 -0
  96. package/dist/src/framer/cache/cache.d.ts +38 -0
  97. package/dist/src/framer/cache/cache.d.ts.map +1 -0
  98. package/dist/src/framer/cache/dynamic.d.ts +71 -0
  99. package/dist/src/framer/cache/dynamic.d.ts.map +1 -0
  100. package/dist/src/framer/cache/reader.d.ts +43 -0
  101. package/dist/src/framer/cache/reader.d.ts.map +1 -0
  102. package/dist/src/framer/cache/static.d.ts +66 -0
  103. package/dist/src/framer/cache/static.d.ts.map +1 -0
  104. package/dist/src/framer/cache/streamer.d.ts +86 -0
  105. package/dist/src/framer/cache/streamer.d.ts.map +1 -0
  106. package/dist/src/framer/cache/transform.d.ts +18 -0
  107. package/dist/src/framer/cache/transform.d.ts.map +1 -0
  108. package/dist/src/framer/cache/unary.d.ts +37 -0
  109. package/dist/src/framer/cache/unary.d.ts.map +1 -0
  110. package/dist/src/framer/client.d.ts +35 -14
  111. package/dist/src/framer/client.d.ts.map +1 -1
  112. package/dist/src/framer/codec.d.ts.map +1 -1
  113. package/dist/src/framer/deleter.d.ts +3 -2
  114. package/dist/src/framer/deleter.d.ts.map +1 -1
  115. package/dist/src/framer/external.d.ts +6 -0
  116. package/dist/src/framer/external.d.ts.map +1 -1
  117. package/dist/src/framer/feed.d.ts +40 -0
  118. package/dist/src/framer/feed.d.ts.map +1 -0
  119. package/dist/src/framer/frame.d.ts +16 -20
  120. package/dist/src/framer/frame.d.ts.map +1 -1
  121. package/dist/src/framer/hardened.d.ts +70 -0
  122. package/dist/src/framer/hardened.d.ts.map +1 -0
  123. package/dist/src/framer/iterator.d.ts +36 -43
  124. package/dist/src/framer/iterator.d.ts.map +1 -1
  125. package/dist/src/framer/reader.d.ts +3 -2
  126. package/dist/src/framer/reader.d.ts.map +1 -1
  127. package/dist/src/framer/streamer.d.ts +132 -205
  128. package/dist/src/framer/streamer.d.ts.map +1 -1
  129. package/dist/src/framer/writer.d.ts +130 -161
  130. package/dist/src/framer/writer.d.ts.map +1 -1
  131. package/dist/src/group/client.d.ts +66 -9
  132. package/dist/src/group/client.d.ts.map +1 -1
  133. package/dist/src/group/types.gen.d.ts +2 -2
  134. package/dist/src/http/external.d.ts +2 -0
  135. package/dist/src/http/external.d.ts.map +1 -0
  136. package/dist/src/http/index.d.ts +2 -0
  137. package/dist/src/http/index.d.ts.map +1 -0
  138. package/dist/src/http/types.gen.d.ts +451 -0
  139. package/dist/src/http/types.gen.d.ts.map +1 -0
  140. package/dist/src/imex/client.d.ts +88 -0
  141. package/dist/src/imex/client.d.ts.map +1 -0
  142. package/dist/src/imex/index.d.ts +2 -0
  143. package/dist/src/imex/index.d.ts.map +1 -0
  144. package/dist/src/index.d.ts +18 -5
  145. package/dist/src/index.d.ts.map +1 -1
  146. package/dist/src/label/client.d.ts +55 -36
  147. package/dist/src/label/client.d.ts.map +1 -1
  148. package/dist/src/label/external.d.ts +2 -0
  149. package/dist/src/label/external.d.ts.map +1 -1
  150. package/dist/src/label/payload.d.ts +4 -46
  151. package/dist/src/label/payload.d.ts.map +1 -1
  152. package/dist/src/label/store.d.ts +8 -0
  153. package/dist/src/label/store.d.ts.map +1 -0
  154. package/dist/src/label/types.gen.d.ts +45 -0
  155. package/dist/src/label/types.gen.d.ts.map +1 -0
  156. package/dist/src/labjack/external.d.ts +2 -0
  157. package/dist/src/labjack/external.d.ts.map +1 -0
  158. package/dist/src/labjack/index.d.ts +2 -0
  159. package/dist/src/labjack/index.d.ts.map +1 -0
  160. package/dist/src/labjack/types.gen.d.ts +442 -0
  161. package/dist/src/labjack/types.gen.d.ts.map +1 -0
  162. package/dist/src/lineplot/actions.d.ts +914 -0
  163. package/dist/src/lineplot/actions.d.ts.map +1 -0
  164. package/dist/src/lineplot/actions.gen.d.ts +4208 -0
  165. package/dist/src/lineplot/actions.gen.d.ts.map +1 -0
  166. package/dist/src/lineplot/client.d.ts +66 -16
  167. package/dist/src/lineplot/client.d.ts.map +1 -1
  168. package/dist/src/lineplot/external.d.ts +3 -0
  169. package/dist/src/lineplot/external.d.ts.map +1 -1
  170. package/dist/src/lineplot/line.d.ts +16 -0
  171. package/dist/src/lineplot/line.d.ts.map +1 -0
  172. package/dist/src/lineplot/types.gen.d.ts +837 -14
  173. package/dist/src/lineplot/types.gen.d.ts.map +1 -1
  174. package/dist/src/log/actions.d.ts +271 -0
  175. package/dist/src/log/actions.d.ts.map +1 -0
  176. package/dist/src/log/actions.gen.d.ts +1529 -0
  177. package/dist/src/log/actions.gen.d.ts.map +1 -0
  178. package/dist/src/log/client.d.ts +66 -16
  179. package/dist/src/log/client.d.ts.map +1 -1
  180. package/dist/src/log/external.d.ts +2 -0
  181. package/dist/src/log/external.d.ts.map +1 -1
  182. package/dist/src/log/types.gen.d.ts +139 -14
  183. package/dist/src/log/types.gen.d.ts.map +1 -1
  184. package/dist/src/modbus/external.d.ts +2 -0
  185. package/dist/src/modbus/external.d.ts.map +1 -0
  186. package/dist/src/modbus/index.d.ts +2 -0
  187. package/dist/src/modbus/index.d.ts.map +1 -0
  188. package/dist/src/modbus/types.gen.d.ts +280 -0
  189. package/dist/src/modbus/types.gen.d.ts.map +1 -0
  190. package/dist/src/ni/external.d.ts +2 -0
  191. package/dist/src/ni/external.d.ts.map +1 -0
  192. package/dist/src/ni/index.d.ts +2 -0
  193. package/dist/src/ni/index.d.ts.map +1 -0
  194. package/dist/src/ni/types.gen.d.ts +21029 -0
  195. package/dist/src/ni/types.gen.d.ts.map +1 -0
  196. package/dist/src/node/index.d.ts +2 -0
  197. package/dist/src/node/index.d.ts.map +1 -0
  198. package/dist/src/node/types.gen.d.ts +4 -0
  199. package/dist/src/node/types.gen.d.ts.map +1 -0
  200. package/dist/src/ontology/client.d.ts +314 -67
  201. package/dist/src/ontology/client.d.ts.map +1 -1
  202. package/dist/src/ontology/external.d.ts +1 -0
  203. package/dist/src/ontology/external.d.ts.map +1 -1
  204. package/dist/src/ontology/payload.d.ts +60 -18
  205. package/dist/src/ontology/payload.d.ts.map +1 -1
  206. package/dist/src/ontology/store.d.ts +32 -0
  207. package/dist/src/ontology/store.d.ts.map +1 -0
  208. package/dist/src/ontology/types.gen.d.ts +3 -2
  209. package/dist/src/ontology/types.gen.d.ts.map +1 -1
  210. package/dist/src/ontology/writer.d.ts +16 -10
  211. package/dist/src/ontology/writer.d.ts.map +1 -1
  212. package/dist/src/opcua/external.d.ts +2 -0
  213. package/dist/src/opcua/external.d.ts.map +1 -0
  214. package/dist/src/opcua/index.d.ts +2 -0
  215. package/dist/src/opcua/index.d.ts.map +1 -0
  216. package/dist/src/opcua/types.gen.d.ts +82 -0
  217. package/dist/src/opcua/types.gen.d.ts.map +1 -0
  218. package/dist/src/pagerduty/external.d.ts +2 -0
  219. package/dist/src/pagerduty/external.d.ts.map +1 -0
  220. package/dist/src/pagerduty/index.d.ts +2 -0
  221. package/dist/src/pagerduty/index.d.ts.map +1 -0
  222. package/dist/src/pagerduty/types.gen.d.ts +30 -0
  223. package/dist/src/pagerduty/types.gen.d.ts.map +1 -0
  224. package/dist/src/panel/actions.d.ts +273 -0
  225. package/dist/src/panel/actions.d.ts.map +1 -0
  226. package/dist/src/panel/actions.gen.d.ts +1255 -0
  227. package/dist/src/panel/actions.gen.d.ts.map +1 -0
  228. package/dist/src/panel/client.d.ts +148 -0
  229. package/dist/src/panel/client.d.ts.map +1 -0
  230. package/dist/src/panel/external.d.ts +6 -0
  231. package/dist/src/panel/external.d.ts.map +1 -0
  232. package/dist/src/panel/index.d.ts +2 -0
  233. package/dist/src/panel/index.d.ts.map +1 -0
  234. package/dist/src/panel/tree.d.ts +50 -0
  235. package/dist/src/panel/tree.d.ts.map +1 -0
  236. package/dist/src/panel/types.gen.d.ts +370 -0
  237. package/dist/src/panel/types.gen.d.ts.map +1 -0
  238. package/dist/src/project/client.d.ts +89 -0
  239. package/dist/src/project/client.d.ts.map +1 -0
  240. package/dist/src/project/external.d.ts.map +1 -0
  241. package/dist/src/project/index.d.ts +2 -0
  242. package/dist/src/project/index.d.ts.map +1 -0
  243. package/dist/src/project/types.gen.d.ts +27 -0
  244. package/dist/src/project/types.gen.d.ts.map +1 -0
  245. package/dist/src/query/cache.d.ts +132 -0
  246. package/dist/src/query/cache.d.ts.map +1 -0
  247. package/dist/src/query/deleted.d.ts +20 -0
  248. package/dist/src/query/deleted.d.ts.map +1 -0
  249. package/dist/src/query/derived.d.ts +33 -0
  250. package/dist/src/query/derived.d.ts.map +1 -0
  251. package/dist/src/query/external.d.ts +10 -0
  252. package/dist/src/query/external.d.ts.map +1 -0
  253. package/dist/src/query/index.d.ts +2 -0
  254. package/dist/src/query/index.d.ts.map +1 -0
  255. package/dist/src/query/query.d.ts +235 -0
  256. package/dist/src/query/query.d.ts.map +1 -0
  257. package/dist/src/query/retriever.d.ts +135 -0
  258. package/dist/src/query/retriever.d.ts.map +1 -0
  259. package/dist/src/query/streamer.d.ts +67 -0
  260. package/dist/src/query/streamer.d.ts.map +1 -0
  261. package/dist/src/query/table.d.ts +219 -0
  262. package/dist/src/query/table.d.ts.map +1 -0
  263. package/dist/src/query/types.d.ts +35 -0
  264. package/dist/src/query/types.d.ts.map +1 -0
  265. package/dist/src/query/write.d.ts +21 -0
  266. package/dist/src/query/write.d.ts.map +1 -0
  267. package/dist/src/rack/client.d.ts +58 -20
  268. package/dist/src/rack/client.d.ts.map +1 -1
  269. package/dist/src/rack/types.gen.d.ts +11 -12
  270. package/dist/src/rack/types.gen.d.ts.map +1 -1
  271. package/dist/src/range/alias/types.gen.d.ts +2 -3
  272. package/dist/src/range/alias/types.gen.d.ts.map +1 -1
  273. package/dist/src/ranger/client.d.ts +138 -27
  274. package/dist/src/ranger/client.d.ts.map +1 -1
  275. package/dist/src/ranger/kv/client.d.ts +7 -4
  276. package/dist/src/ranger/kv/client.d.ts.map +1 -1
  277. package/dist/src/ranger/payload.d.ts +3 -0
  278. package/dist/src/ranger/payload.d.ts.map +1 -1
  279. package/dist/src/ranger/types.gen.d.ts +45 -101
  280. package/dist/src/ranger/types.gen.d.ts.map +1 -1
  281. package/dist/src/ranger/writer.d.ts +2 -74
  282. package/dist/src/ranger/writer.d.ts.map +1 -1
  283. package/dist/src/schematic/actions.d.ts +90 -33
  284. package/dist/src/schematic/actions.d.ts.map +1 -1
  285. package/dist/src/schematic/actions.gen.d.ts +207 -114
  286. package/dist/src/schematic/actions.gen.d.ts.map +1 -1
  287. package/dist/src/schematic/client.d.ts +70 -68
  288. package/dist/src/schematic/client.d.ts.map +1 -1
  289. package/dist/src/schematic/symbol/client.d.ts +133 -27
  290. package/dist/src/schematic/symbol/client.d.ts.map +1 -1
  291. package/dist/src/schematic/symbol/types.gen.d.ts +258 -153
  292. package/dist/src/schematic/symbol/types.gen.d.ts.map +1 -1
  293. package/dist/src/schematic/types.gen.d.ts +17 -96
  294. package/dist/src/schematic/types.gen.d.ts.map +1 -1
  295. package/dist/src/status/client.d.ts +69 -14
  296. package/dist/src/status/client.d.ts.map +1 -1
  297. package/dist/src/status/external.d.ts +2 -0
  298. package/dist/src/status/external.d.ts.map +1 -1
  299. package/dist/src/status/payload.d.ts +2 -36
  300. package/dist/src/status/payload.d.ts.map +1 -1
  301. package/dist/src/status/status.d.ts +65 -0
  302. package/dist/src/status/status.d.ts.map +1 -0
  303. package/dist/src/status/types.gen.d.ts +58 -0
  304. package/dist/src/status/types.gen.d.ts.map +1 -0
  305. package/dist/src/table/actions.d.ts +72 -13
  306. package/dist/src/table/actions.d.ts.map +1 -1
  307. package/dist/src/table/actions.gen.d.ts +221 -137
  308. package/dist/src/table/actions.gen.d.ts.map +1 -1
  309. package/dist/src/table/client.d.ts +64 -40
  310. package/dist/src/table/client.d.ts.map +1 -1
  311. package/dist/src/table/types.gen.d.ts +20 -55
  312. package/dist/src/table/types.gen.d.ts.map +1 -1
  313. package/dist/src/task/client.d.ts +149 -28
  314. package/dist/src/task/client.d.ts.map +1 -1
  315. package/dist/src/task/types.gen.d.ts +71 -89
  316. package/dist/src/task/types.gen.d.ts.map +1 -1
  317. package/dist/src/testutil/access.d.ts +27 -1
  318. package/dist/src/testutil/access.d.ts.map +1 -1
  319. package/dist/src/testutil/channels.d.ts +2 -0
  320. package/dist/src/testutil/channels.d.ts.map +1 -1
  321. package/dist/src/testutil/client.d.ts +5 -0
  322. package/dist/src/testutil/client.d.ts.map +1 -1
  323. package/dist/src/testutil/connection.d.ts +10 -0
  324. package/dist/src/testutil/connection.d.ts.map +1 -0
  325. package/dist/src/testutil/index.d.ts +9 -0
  326. package/dist/src/testutil/index.d.ts.map +1 -0
  327. package/dist/src/testutil/panels.d.ts +8 -0
  328. package/dist/src/testutil/panels.d.ts.map +1 -0
  329. package/dist/src/testutil/proxy.d.ts +29 -0
  330. package/dist/src/testutil/proxy.d.ts.map +1 -0
  331. package/dist/src/testutil/query.d.ts +7 -0
  332. package/dist/src/testutil/query.d.ts.map +1 -0
  333. package/dist/src/testutil/telem.d.ts +4 -0
  334. package/dist/src/testutil/telem.d.ts.map +1 -1
  335. package/dist/src/transport.d.ts +10 -4
  336. package/dist/src/transport.d.ts.map +1 -1
  337. package/dist/src/user/client.d.ts +29 -28
  338. package/dist/src/user/client.d.ts.map +1 -1
  339. package/dist/src/user/external.d.ts +1 -1
  340. package/dist/src/user/external.d.ts.map +1 -1
  341. package/dist/src/user/types.gen.d.ts +4 -4
  342. package/dist/src/util/retrieve.d.ts +2 -2
  343. package/dist/src/util/retrieve.d.ts.map +1 -1
  344. package/dist/src/util/telem.d.ts.map +1 -1
  345. package/dist/src/view/client.d.ts +30 -14
  346. package/dist/src/view/client.d.ts.map +1 -1
  347. package/dist/src/view/types.gen.d.ts +7 -15
  348. package/dist/src/view/types.gen.d.ts.map +1 -1
  349. package/dist/testutil.js +189 -0
  350. package/dist/testutil.js.map +1 -0
  351. package/package.json +40 -17
  352. package/src/access/client.ts +14 -3
  353. package/src/access/enforce.ts +0 -3
  354. package/src/access/external.ts +1 -0
  355. package/src/access/granted.ts +114 -0
  356. package/src/access/policy/client.ts +135 -43
  357. package/src/access/policy/types.gen.ts +9 -11
  358. package/src/access/role/client.ts +160 -38
  359. package/src/access/role/types.gen.ts +8 -12
  360. package/src/actions/actions.ts +5 -6
  361. package/src/actions/controller.ts +626 -0
  362. package/src/actions/external.ts +11 -0
  363. package/src/arc/actions.gen.ts +313 -0
  364. package/src/arc/actions.ts +192 -0
  365. package/src/arc/client.ts +424 -41
  366. package/src/arc/compiler/types.gen.ts +5 -6
  367. package/src/arc/external.ts +2 -0
  368. package/src/arc/graph/types.gen.ts +24 -22
  369. package/src/arc/ir/index.ts +1 -1
  370. package/{eslint.config.ts → src/arc/ir/ir.ts} +1 -4
  371. package/src/arc/ir/types.gen.ts +42 -41
  372. package/src/arc/text/types.gen.ts +21 -2
  373. package/src/arc/types/types.gen.ts +40 -32
  374. package/src/arc/types.gen.ts +31 -29
  375. package/src/auth/auth.ts +40 -8
  376. package/src/channel/client.ts +529 -132
  377. package/src/channel/external.ts +0 -1
  378. package/src/channel/payload.ts +30 -3
  379. package/src/channel/types.gen.ts +37 -48
  380. package/src/channel/writer.ts +2 -11
  381. package/src/client.ts +215 -91
  382. package/src/connection/client.ts +495 -0
  383. package/src/connection/external.ts +34 -0
  384. package/src/connection/index.ts +1 -1
  385. package/src/connection/status.ts +442 -0
  386. package/src/control/client.ts +84 -12
  387. package/src/control/state.ts +17 -36
  388. package/src/device/client.ts +293 -41
  389. package/src/device/types.gen.ts +15 -26
  390. package/src/errors.ts +45 -22
  391. package/src/{workspace → ethercat}/external.ts +1 -2
  392. package/src/{workspace → ethercat}/index.ts +1 -1
  393. package/src/ethercat/types.gen.ts +151 -0
  394. package/src/framer/adapter.ts +60 -37
  395. package/src/framer/benchutil.ts +67 -0
  396. package/src/framer/cache/cache.ts +115 -0
  397. package/src/framer/cache/dynamic.ts +279 -0
  398. package/src/framer/cache/reader.ts +160 -0
  399. package/src/framer/cache/static.ts +215 -0
  400. package/src/framer/cache/streamer.ts +391 -0
  401. package/src/framer/cache/transform.ts +31 -0
  402. package/src/framer/cache/unary.ts +104 -0
  403. package/src/framer/client.ts +71 -43
  404. package/src/framer/codec.ts +55 -18
  405. package/src/framer/deleter.ts +4 -6
  406. package/src/framer/external.ts +10 -0
  407. package/src/framer/feed.ts +108 -0
  408. package/src/framer/frame.ts +13 -23
  409. package/src/framer/hardened.ts +283 -0
  410. package/src/framer/iterator.ts +31 -42
  411. package/src/framer/reader.ts +11 -11
  412. package/src/framer/streamer.ts +18 -178
  413. package/src/framer/writer.ts +39 -59
  414. package/src/group/client.ts +158 -23
  415. package/src/http/external.ts +10 -0
  416. package/src/{cluster → http}/index.ts +1 -1
  417. package/src/http/types.gen.ts +245 -0
  418. package/src/imex/client.ts +125 -0
  419. package/src/imex/index.ts +10 -0
  420. package/src/index.ts +18 -6
  421. package/src/label/client.ts +193 -54
  422. package/src/label/external.ts +2 -0
  423. package/src/label/payload.ts +4 -9
  424. package/src/label/store.ts +28 -0
  425. package/src/label/types.gen.ts +31 -0
  426. package/src/labjack/external.ts +10 -0
  427. package/src/labjack/index.ts +10 -0
  428. package/src/labjack/types.gen.ts +251 -0
  429. package/src/lineplot/actions.gen.ts +880 -0
  430. package/src/lineplot/actions.ts +535 -0
  431. package/src/lineplot/client.ts +224 -52
  432. package/src/lineplot/external.ts +3 -0
  433. package/src/lineplot/line.ts +80 -0
  434. package/src/lineplot/types.gen.ts +225 -12
  435. package/src/log/actions.gen.ts +474 -0
  436. package/src/log/actions.ts +242 -0
  437. package/src/log/client.ts +223 -52
  438. package/src/log/external.ts +2 -0
  439. package/src/log/types.gen.ts +45 -14
  440. package/src/modbus/external.ts +10 -0
  441. package/src/modbus/index.ts +10 -0
  442. package/src/modbus/types.gen.ts +185 -0
  443. package/src/ni/external.ts +10 -0
  444. package/src/ni/index.ts +10 -0
  445. package/src/ni/types.gen.ts +1632 -0
  446. package/src/node/index.ts +10 -0
  447. package/src/{cluster → node}/types.gen.ts +2 -2
  448. package/src/ontology/client.ts +408 -99
  449. package/src/ontology/external.ts +7 -0
  450. package/src/ontology/payload.ts +48 -7
  451. package/src/ontology/store.ts +83 -0
  452. package/src/ontology/types.gen.ts +2 -1
  453. package/src/ontology/writer.ts +1 -0
  454. package/src/opcua/external.ts +10 -0
  455. package/src/opcua/index.ts +10 -0
  456. package/src/opcua/types.gen.ts +65 -0
  457. package/src/pagerduty/external.ts +10 -0
  458. package/src/pagerduty/index.ts +10 -0
  459. package/src/pagerduty/types.gen.ts +41 -0
  460. package/src/panel/actions.gen.ts +267 -0
  461. package/src/panel/actions.ts +357 -0
  462. package/src/panel/client.ts +327 -0
  463. package/src/panel/external.ts +14 -0
  464. package/src/panel/index.ts +10 -0
  465. package/src/panel/tree.ts +163 -0
  466. package/src/panel/types.gen.ts +164 -0
  467. package/src/project/client.ts +273 -0
  468. package/src/project/external.ts +11 -0
  469. package/src/project/index.ts +10 -0
  470. package/src/project/types.gen.ts +40 -0
  471. package/src/query/cache.ts +326 -0
  472. package/src/query/deleted.ts +38 -0
  473. package/src/query/derived.ts +101 -0
  474. package/src/query/external.ts +51 -0
  475. package/src/query/index.ts +10 -0
  476. package/src/query/query.ts +865 -0
  477. package/src/query/retriever.ts +308 -0
  478. package/src/query/streamer.ts +207 -0
  479. package/src/query/table.ts +625 -0
  480. package/src/query/types.ts +54 -0
  481. package/src/query/write.ts +42 -0
  482. package/src/rack/client.ts +233 -45
  483. package/src/rack/types.gen.ts +15 -16
  484. package/src/range/alias/types.gen.ts +2 -3
  485. package/src/ranger/client.ts +581 -70
  486. package/src/ranger/kv/client.ts +52 -21
  487. package/src/ranger/payload.ts +3 -0
  488. package/src/ranger/types.gen.ts +21 -23
  489. package/src/ranger/writer.ts +4 -8
  490. package/src/schematic/actions.gen.ts +62 -53
  491. package/src/schematic/actions.ts +44 -42
  492. package/src/schematic/client.ts +226 -70
  493. package/src/schematic/symbol/client.ts +277 -48
  494. package/src/schematic/symbol/types.gen.ts +22 -34
  495. package/src/schematic/types.gen.ts +22 -29
  496. package/src/status/client.ts +321 -44
  497. package/src/status/external.ts +2 -0
  498. package/src/status/payload.ts +1 -23
  499. package/src/status/status.ts +241 -0
  500. package/src/status/types.gen.ts +108 -0
  501. package/src/table/actions.gen.ts +96 -63
  502. package/src/table/actions.ts +44 -19
  503. package/src/table/client.ts +220 -56
  504. package/src/table/types.gen.ts +24 -31
  505. package/src/task/client.ts +580 -101
  506. package/src/task/types.gen.ts +68 -75
  507. package/src/testutil/access.ts +102 -6
  508. package/src/testutil/channels.ts +29 -0
  509. package/src/testutil/client.ts +27 -2
  510. package/src/testutil/connection.ts +47 -0
  511. package/src/testutil/index.ts +17 -0
  512. package/src/testutil/panels.ts +26 -0
  513. package/src/testutil/proxy.ts +106 -0
  514. package/src/testutil/query.ts +28 -0
  515. package/src/testutil/telem.ts +17 -1
  516. package/src/transport.ts +18 -7
  517. package/src/user/client.ts +165 -64
  518. package/src/user/external.ts +1 -1
  519. package/src/user/types.gen.ts +5 -5
  520. package/src/util/retrieve.ts +4 -4
  521. package/src/util/telem.ts +0 -1
  522. package/src/view/client.ts +120 -37
  523. package/src/view/types.gen.ts +8 -11
  524. package/.turbo/turbo-build.log +0 -20
  525. package/.vscode/settings.json +0 -3
  526. package/CONTRIBUTING.md +0 -47
  527. package/dist/client.cjs +0 -118
  528. package/dist/eslint.config.d.ts +0 -4
  529. package/dist/eslint.config.d.ts.map +0 -1
  530. package/dist/src/access/enforce.spec.d.ts +0 -2
  531. package/dist/src/access/enforce.spec.d.ts.map +0 -1
  532. package/dist/src/access/policy/access.spec.d.ts +0 -2
  533. package/dist/src/access/policy/access.spec.d.ts.map +0 -1
  534. package/dist/src/access/role/role.spec.d.ts +0 -2
  535. package/dist/src/access/role/role.spec.d.ts.map +0 -1
  536. package/dist/src/actions/actions.spec.d.ts +0 -2
  537. package/dist/src/actions/actions.spec.d.ts.map +0 -1
  538. package/dist/src/arc/access.spec.d.ts +0 -2
  539. package/dist/src/arc/access.spec.d.ts.map +0 -1
  540. package/dist/src/arc/arc.spec.d.ts +0 -2
  541. package/dist/src/arc/arc.spec.d.ts.map +0 -1
  542. package/dist/src/arc/lsp.spec.d.ts +0 -2
  543. package/dist/src/arc/lsp.spec.d.ts.map +0 -1
  544. package/dist/src/auth/auth.spec.d.ts +0 -2
  545. package/dist/src/auth/auth.spec.d.ts.map +0 -1
  546. package/dist/src/channel/access.spec.d.ts +0 -2
  547. package/dist/src/channel/access.spec.d.ts.map +0 -1
  548. package/dist/src/channel/batchRetriever.spec.d.ts +0 -2
  549. package/dist/src/channel/batchRetriever.spec.d.ts.map +0 -1
  550. package/dist/src/channel/channel.spec.d.ts +0 -2
  551. package/dist/src/channel/channel.spec.d.ts.map +0 -1
  552. package/dist/src/channel/payload.spec.d.ts +0 -2
  553. package/dist/src/channel/payload.spec.d.ts.map +0 -1
  554. package/dist/src/channel/retriever.d.ts +0 -64
  555. package/dist/src/channel/retriever.d.ts.map +0 -1
  556. package/dist/src/cluster/index.d.ts +0 -2
  557. package/dist/src/cluster/index.d.ts.map +0 -1
  558. package/dist/src/cluster/types.gen.d.ts +0 -4
  559. package/dist/src/cluster/types.gen.d.ts.map +0 -1
  560. package/dist/src/connection/checker.d.ts +0 -86
  561. package/dist/src/connection/checker.d.ts.map +0 -1
  562. package/dist/src/connection/connection.spec.d.ts +0 -2
  563. package/dist/src/connection/connection.spec.d.ts.map +0 -1
  564. package/dist/src/connection.spec.d.ts +0 -2
  565. package/dist/src/connection.spec.d.ts.map +0 -1
  566. package/dist/src/control/state.spec.d.ts +0 -2
  567. package/dist/src/control/state.spec.d.ts.map +0 -1
  568. package/dist/src/device/access.spec.d.ts +0 -2
  569. package/dist/src/device/access.spec.d.ts.map +0 -1
  570. package/dist/src/device/device.spec.d.ts +0 -2
  571. package/dist/src/device/device.spec.d.ts.map +0 -1
  572. package/dist/src/device/payload.spec.d.ts +0 -2
  573. package/dist/src/device/payload.spec.d.ts.map +0 -1
  574. package/dist/src/errors.spec.d.ts +0 -2
  575. package/dist/src/errors.spec.d.ts.map +0 -1
  576. package/dist/src/framer/adapter.spec.d.ts +0 -2
  577. package/dist/src/framer/adapter.spec.d.ts.map +0 -1
  578. package/dist/src/framer/client.spec.d.ts +0 -2
  579. package/dist/src/framer/client.spec.d.ts.map +0 -1
  580. package/dist/src/framer/codec.spec.d.ts +0 -2
  581. package/dist/src/framer/codec.spec.d.ts.map +0 -1
  582. package/dist/src/framer/deleter.spec.d.ts +0 -2
  583. package/dist/src/framer/deleter.spec.d.ts.map +0 -1
  584. package/dist/src/framer/frame.spec.d.ts +0 -2
  585. package/dist/src/framer/frame.spec.d.ts.map +0 -1
  586. package/dist/src/framer/iterator.spec.d.ts +0 -2
  587. package/dist/src/framer/iterator.spec.d.ts.map +0 -1
  588. package/dist/src/framer/reader.spec.d.ts +0 -2
  589. package/dist/src/framer/reader.spec.d.ts.map +0 -1
  590. package/dist/src/framer/streamer.spec.d.ts +0 -2
  591. package/dist/src/framer/streamer.spec.d.ts.map +0 -1
  592. package/dist/src/framer/writer.spec.d.ts +0 -2
  593. package/dist/src/framer/writer.spec.d.ts.map +0 -1
  594. package/dist/src/group/access.spec.d.ts +0 -2
  595. package/dist/src/group/access.spec.d.ts.map +0 -1
  596. package/dist/src/group/group.spec.d.ts +0 -2
  597. package/dist/src/group/group.spec.d.ts.map +0 -1
  598. package/dist/src/label/access.spec.d.ts +0 -2
  599. package/dist/src/label/access.spec.d.ts.map +0 -1
  600. package/dist/src/label/label.spec.d.ts +0 -2
  601. package/dist/src/label/label.spec.d.ts.map +0 -1
  602. package/dist/src/lineplot/access.spec.d.ts +0 -2
  603. package/dist/src/lineplot/access.spec.d.ts.map +0 -1
  604. package/dist/src/lineplot/lineplot.spec.d.ts +0 -2
  605. package/dist/src/lineplot/lineplot.spec.d.ts.map +0 -1
  606. package/dist/src/log/access.spec.d.ts +0 -2
  607. package/dist/src/log/access.spec.d.ts.map +0 -1
  608. package/dist/src/log/log.spec.d.ts +0 -2
  609. package/dist/src/log/log.spec.d.ts.map +0 -1
  610. package/dist/src/ontology/ontology.spec.d.ts +0 -2
  611. package/dist/src/ontology/ontology.spec.d.ts.map +0 -1
  612. package/dist/src/rack/access.spec.d.ts +0 -2
  613. package/dist/src/rack/access.spec.d.ts.map +0 -1
  614. package/dist/src/rack/rack.spec.d.ts +0 -2
  615. package/dist/src/rack/rack.spec.d.ts.map +0 -1
  616. package/dist/src/ranger/access.spec.d.ts +0 -2
  617. package/dist/src/ranger/access.spec.d.ts.map +0 -1
  618. package/dist/src/ranger/alias/payload.spec.d.ts +0 -2
  619. package/dist/src/ranger/alias/payload.spec.d.ts.map +0 -1
  620. package/dist/src/ranger/ranger.spec.d.ts +0 -2
  621. package/dist/src/ranger/ranger.spec.d.ts.map +0 -1
  622. package/dist/src/schematic/access.spec.d.ts +0 -2
  623. package/dist/src/schematic/access.spec.d.ts.map +0 -1
  624. package/dist/src/schematic/actions.spec.d.ts +0 -2
  625. package/dist/src/schematic/actions.spec.d.ts.map +0 -1
  626. package/dist/src/schematic/schematic.spec.d.ts +0 -2
  627. package/dist/src/schematic/schematic.spec.d.ts.map +0 -1
  628. package/dist/src/schematic/symbol/access.spec.d.ts +0 -2
  629. package/dist/src/schematic/symbol/access.spec.d.ts.map +0 -1
  630. package/dist/src/schematic/symbol/client.spec.d.ts +0 -2
  631. package/dist/src/schematic/symbol/client.spec.d.ts.map +0 -1
  632. package/dist/src/status/access.spec.d.ts +0 -2
  633. package/dist/src/status/access.spec.d.ts.map +0 -1
  634. package/dist/src/status/status.spec.d.ts +0 -2
  635. package/dist/src/status/status.spec.d.ts.map +0 -1
  636. package/dist/src/table/access.spec.d.ts +0 -2
  637. package/dist/src/table/access.spec.d.ts.map +0 -1
  638. package/dist/src/table/table.spec.d.ts +0 -2
  639. package/dist/src/table/table.spec.d.ts.map +0 -1
  640. package/dist/src/task/access.spec.d.ts +0 -2
  641. package/dist/src/task/access.spec.d.ts.map +0 -1
  642. package/dist/src/task/payload.spec.d.ts +0 -2
  643. package/dist/src/task/payload.spec.d.ts.map +0 -1
  644. package/dist/src/task/task.spec.d.ts +0 -2
  645. package/dist/src/task/task.spec.d.ts.map +0 -1
  646. package/dist/src/user/access.spec.d.ts +0 -2
  647. package/dist/src/user/access.spec.d.ts.map +0 -1
  648. package/dist/src/user/user.spec.d.ts +0 -2
  649. package/dist/src/user/user.spec.d.ts.map +0 -1
  650. package/dist/src/util/retrieve.spec.d.ts +0 -2
  651. package/dist/src/util/retrieve.spec.d.ts.map +0 -1
  652. package/dist/src/view/view.spec.d.ts +0 -2
  653. package/dist/src/view/view.spec.d.ts.map +0 -1
  654. package/dist/src/workspace/access.spec.d.ts +0 -2
  655. package/dist/src/workspace/access.spec.d.ts.map +0 -1
  656. package/dist/src/workspace/client.d.ts +0 -36
  657. package/dist/src/workspace/client.d.ts.map +0 -1
  658. package/dist/src/workspace/external.d.ts.map +0 -1
  659. package/dist/src/workspace/index.d.ts +0 -2
  660. package/dist/src/workspace/index.d.ts.map +0 -1
  661. package/dist/src/workspace/types.gen.d.ts +0 -34
  662. package/dist/src/workspace/types.gen.d.ts.map +0 -1
  663. package/dist/src/workspace/workspace.spec.d.ts +0 -2
  664. package/dist/src/workspace/workspace.spec.d.ts.map +0 -1
  665. package/examples/node/basicReadWrite.js +0 -86
  666. package/examples/node/createChannels.js +0 -50
  667. package/examples/node/createRange.js +0 -67
  668. package/examples/node/package-lock.json +0 -133
  669. package/examples/node/package.json +0 -17
  670. package/examples/node/readLatest.js +0 -76
  671. package/examples/node/seriesAndFrames.js +0 -173
  672. package/examples/node/streamRead.js +0 -50
  673. package/examples/node/streamWrite.js +0 -87
  674. package/src/access/enforce.spec.ts +0 -188
  675. package/src/access/policy/access.spec.ts +0 -147
  676. package/src/access/role/role.spec.ts +0 -95
  677. package/src/actions/actions.spec.ts +0 -229
  678. package/src/arc/access.spec.ts +0 -149
  679. package/src/arc/arc.spec.ts +0 -44
  680. package/src/arc/lsp.spec.ts +0 -717
  681. package/src/auth/auth.spec.ts +0 -101
  682. package/src/channel/access.spec.ts +0 -116
  683. package/src/channel/batchRetriever.spec.ts +0 -115
  684. package/src/channel/channel.spec.ts +0 -352
  685. package/src/channel/payload.spec.ts +0 -117
  686. package/src/channel/retriever.ts +0 -252
  687. package/src/connection/checker.ts +0 -203
  688. package/src/connection/connection.spec.ts +0 -152
  689. package/src/connection.spec.ts +0 -145
  690. package/src/control/state.spec.ts +0 -22
  691. package/src/device/access.spec.ts +0 -159
  692. package/src/device/device.spec.ts +0 -461
  693. package/src/device/payload.spec.ts +0 -142
  694. package/src/errors.spec.ts +0 -71
  695. package/src/framer/adapter.spec.ts +0 -620
  696. package/src/framer/client.spec.ts +0 -180
  697. package/src/framer/codec.spec.ts +0 -383
  698. package/src/framer/deleter.spec.ts +0 -103
  699. package/src/framer/frame.spec.ts +0 -973
  700. package/src/framer/iterator.spec.ts +0 -169
  701. package/src/framer/reader.spec.ts +0 -865
  702. package/src/framer/streamer.spec.ts +0 -871
  703. package/src/framer/writer.spec.ts +0 -486
  704. package/src/group/access.spec.ts +0 -77
  705. package/src/group/group.spec.ts +0 -65
  706. package/src/label/access.spec.ts +0 -109
  707. package/src/label/label.spec.ts +0 -83
  708. package/src/lineplot/access.spec.ts +0 -134
  709. package/src/lineplot/lineplot.spec.ts +0 -120
  710. package/src/log/access.spec.ts +0 -132
  711. package/src/log/log.spec.ts +0 -106
  712. package/src/ontology/ontology.spec.ts +0 -521
  713. package/src/rack/access.spec.ts +0 -102
  714. package/src/rack/rack.spec.ts +0 -171
  715. package/src/ranger/access.spec.ts +0 -115
  716. package/src/ranger/alias/payload.spec.ts +0 -52
  717. package/src/ranger/ranger.spec.ts +0 -343
  718. package/src/schematic/access.spec.ts +0 -134
  719. package/src/schematic/actions.spec.ts +0 -699
  720. package/src/schematic/schematic.spec.ts +0 -340
  721. package/src/schematic/symbol/access.spec.ts +0 -172
  722. package/src/schematic/symbol/client.spec.ts +0 -160
  723. package/src/status/access.spec.ts +0 -129
  724. package/src/status/status.spec.ts +0 -448
  725. package/src/table/access.spec.ts +0 -128
  726. package/src/table/table.spec.ts +0 -651
  727. package/src/task/access.spec.ts +0 -131
  728. package/src/task/payload.spec.ts +0 -113
  729. package/src/task/task.spec.ts +0 -657
  730. package/src/user/access.spec.ts +0 -107
  731. package/src/user/user.spec.ts +0 -290
  732. package/src/util/retrieve.spec.ts +0 -49
  733. package/src/view/view.spec.ts +0 -165
  734. package/src/workspace/access.spec.ts +0 -108
  735. package/src/workspace/client.ts +0 -112
  736. package/src/workspace/types.gen.ts +0 -46
  737. package/src/workspace/workspace.spec.ts +0 -111
  738. package/tsconfig.json +0 -5
  739. package/tsconfig.vite.json +0 -4
  740. package/vite.config.ts +0 -29
  741. /package/dist/src/{workspace → project}/external.d.ts +0 -0
@@ -1,180 +0,0 @@
1
- // Copyright 2026 Synnax Labs, Inc.
2
- //
3
- // Use of this software is governed by the Business Source License included in the file
4
- // licenses/BSL.txt.
5
- //
6
- // As of the Change Date specified in that file, in accordance with the Business Source
7
- // License, use of this software will be governed by the Apache License, Version 2.0,
8
- // included in the file licenses/APL.txt.
9
-
10
- import { id, TimeSpan, TimeStamp } from "@synnaxlabs/x";
11
- import { describe, expect, it } from "vitest";
12
-
13
- import { createTestClient } from "@/testutil/client";
14
-
15
- const client = createTestClient();
16
-
17
- describe("Client", () => {
18
- describe("read + write", () => {
19
- it("should correctly write and read a frame of data", async () => {
20
- const time = await client.channels.create({
21
- name: id.create(),
22
- dataType: "timestamp",
23
- isIndex: true,
24
- });
25
- const data = await client.channels.create({
26
- name: id.create(),
27
- dataType: "float32",
28
- index: time.key,
29
- });
30
- const start = TimeStamp.now();
31
- await client.write(start, { [time.key]: [start], [data.key]: [1] });
32
- const frame = await client.read({ start, end: start.add(TimeSpan.seconds(1)) }, [
33
- time.key,
34
- data.key,
35
- ]);
36
- expect(Array.from(frame.get(time.key))).toEqual([start.valueOf()]);
37
- expect(Array.from(frame.get(data.key))).toEqual([1]);
38
- });
39
- it("should correctly write a single series of data", async () => {
40
- const time = await client.channels.create({
41
- name: id.create(),
42
- dataType: "timestamp",
43
- isIndex: true,
44
- });
45
- const data = await client.channels.create({
46
- name: id.create(),
47
- dataType: "float32",
48
- index: time.key,
49
- });
50
- const start = TimeStamp.now();
51
- await client.write(start, time.key, TimeStamp.now());
52
- await client.write(start, data.key, 1);
53
- });
54
- });
55
- describe("retrieveGroup", () => {
56
- it("should correctly retrieve the main channel group", async () => {
57
- const group = await client.channels.retrieveGroup();
58
- expect(group.name).toEqual("Channels");
59
- });
60
- });
61
- describe("readLatestN", () => {
62
- it("should correctly read the latest N samples from a single channel", async () => {
63
- const time = await client.channels.create({
64
- name: id.create(),
65
- dataType: "timestamp",
66
- isIndex: true,
67
- });
68
- const data = await client.channels.create({
69
- name: id.create(),
70
- dataType: "float32",
71
- index: time.key,
72
- });
73
- const start = TimeStamp.now();
74
- const timeData = [
75
- start,
76
- start.add(TimeSpan.seconds(1)),
77
- start.add(TimeSpan.seconds(2)),
78
- start.add(TimeSpan.seconds(3)),
79
- start.add(TimeSpan.seconds(4)),
80
- start.add(TimeSpan.seconds(5)),
81
- start.add(TimeSpan.seconds(6)),
82
- start.add(TimeSpan.seconds(7)),
83
- start.add(TimeSpan.seconds(8)),
84
- start.add(TimeSpan.seconds(9)),
85
- ];
86
- const dataValues = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
87
- await client.write(start, { [time.key]: timeData, [data.key]: dataValues });
88
-
89
- const result = await client.readLatest(data.key, 3);
90
- expect(Array.from(result)).toEqual([8, 9, 10]);
91
- });
92
-
93
- it("should correctly read the latest N samples from multiple channels", async () => {
94
- const time = await client.channels.create({
95
- name: id.create(),
96
- dataType: "timestamp",
97
- isIndex: true,
98
- });
99
- const data1 = await client.channels.create({
100
- name: id.create(),
101
- dataType: "float32",
102
- index: time.key,
103
- });
104
- const data2 = await client.channels.create({
105
- name: id.create(),
106
- dataType: "float32",
107
- index: time.key,
108
- });
109
- const start = TimeStamp.now();
110
- const timeData = [
111
- start,
112
- start.add(TimeSpan.seconds(1)),
113
- start.add(TimeSpan.seconds(2)),
114
- start.add(TimeSpan.seconds(3)),
115
- start.add(TimeSpan.seconds(4)),
116
- start.add(TimeSpan.seconds(5)),
117
- start.add(TimeSpan.seconds(6)),
118
- start.add(TimeSpan.seconds(7)),
119
- start.add(TimeSpan.seconds(8)),
120
- start.add(TimeSpan.seconds(9)),
121
- ];
122
- const data1Values = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
123
- const data2Values = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100];
124
- await client.write(start, {
125
- [time.key]: timeData,
126
- [data1.key]: data1Values,
127
- [data2.key]: data2Values,
128
- });
129
-
130
- const frame = await client.readLatest([time.key, data1.key, data2.key], 3);
131
- expect(Array.from(frame.get(data1.key))).toEqual([8, 9, 10]);
132
- expect(Array.from(frame.get(data2.key))).toEqual([80, 90, 100]);
133
- expect(Array.from(frame.get(time.key))).toEqual([
134
- timeData[7].valueOf(),
135
- timeData[8].valueOf(),
136
- timeData[9].valueOf(),
137
- ]);
138
- });
139
-
140
- it("should return empty series when no data exists", async () => {
141
- const time = await client.channels.create({
142
- name: id.create(),
143
- dataType: "timestamp",
144
- isIndex: true,
145
- });
146
- const data = await client.channels.create({
147
- name: id.create(),
148
- dataType: "float32",
149
- index: time.key,
150
- });
151
-
152
- const result = await client.readLatest(data.key, 5);
153
- expect(Array.from(result)).toEqual([]);
154
- });
155
-
156
- it("should correctly handle N larger than available data", async () => {
157
- const time = await client.channels.create({
158
- name: id.create(),
159
- dataType: "timestamp",
160
- isIndex: true,
161
- });
162
- const data = await client.channels.create({
163
- name: id.create(),
164
- dataType: "float32",
165
- index: time.key,
166
- });
167
- const start = TimeStamp.now();
168
- const timeData = [
169
- start,
170
- start.add(TimeSpan.seconds(1)),
171
- start.add(TimeSpan.seconds(2)),
172
- ];
173
- const dataValues = [1, 2, 3];
174
- await client.write(start, { [time.key]: timeData, [data.key]: dataValues });
175
-
176
- const result = await client.readLatest(data.key, 10);
177
- expect(Array.from(result)).toEqual([1, 2, 3]);
178
- });
179
- });
180
- });
@@ -1,383 +0,0 @@
1
- // Copyright 2026 Synnax Labs, Inc.
2
- //
3
- // Use of this software is governed by the Business Source License included in the file
4
- // licenses/BSL.txt.
5
- //
6
- // As of the Change Date specified in that file, in accordance with the Business Source
7
- // License, use of this software will be governed by the Apache License, Version 2.0,
8
- // included in the file licenses/APL.txt.
9
-
10
- import { type WebsocketMessage } from "@synnaxlabs/freighter";
11
- import { DataType, Series, TimeStamp } from "@synnaxlabs/x";
12
- import { describe, expect, it } from "vitest";
13
-
14
- import { type channel } from "@/channel";
15
- import { ValidationError } from "@/errors";
16
- import { framer } from "@/framer";
17
- import {
18
- Codec,
19
- HIGH_PERF_SPECIAL_CHAR,
20
- LOW_PERF_SPECIAL_CHAR,
21
- WSIteratorCodec,
22
- WSWriterCodec,
23
- } from "@/framer/codec";
24
- import { Frame } from "@/framer/frame";
25
- import { type IteratorResponse } from "@/framer/iterator";
26
- import { IteratorResponseVariant, WriterCommand } from "@/framer/types.gen";
27
- import { type WriteRequest } from "@/framer/writer";
28
-
29
- describe("encoder", () => {
30
- describe("base codec", () => {
31
- interface Spec {
32
- name: string;
33
- channels: channel.Key[];
34
- dataTypes: DataType[];
35
- frame: framer.Frame;
36
- }
37
-
38
- const SPECS: Spec[] = [
39
- {
40
- name: "All Channels Present, In Order",
41
- channels: [1, 2, 3],
42
- dataTypes: [DataType.INT64, DataType.FLOAT32, DataType.FLOAT64],
43
- frame: new framer.Frame(
44
- [1, 2, 3],
45
- [
46
- new Series(new BigInt64Array([1n, 2n, 3n])),
47
- new Series(new Float32Array([4, 5, 6])),
48
- new Series(new Float64Array([7, 8, 9])),
49
- ],
50
- ),
51
- },
52
- {
53
- name: "All Channels Present, Out of Order",
54
- channels: [3, 1, 2],
55
- dataTypes: [DataType.FLOAT64, DataType.INT64, DataType.FLOAT32],
56
- frame: new framer.Frame(
57
- [2, 3, 1],
58
- [
59
- new Series(new Float32Array([4, 5, 6])),
60
- new Series(new Float64Array([7, 8, 9])),
61
- new Series(new BigInt64Array([1n, 2n, 3n])),
62
- ],
63
- ),
64
- },
65
- {
66
- name: "Some Channels Present, In Order",
67
- channels: [1, 2, 3],
68
- dataTypes: [DataType.UINT8, DataType.FLOAT32, DataType.FLOAT64],
69
- frame: new framer.Frame(
70
- [1, 3],
71
- [
72
- new Series(new Uint8Array([1, 2, 3])),
73
- new Series(new Float64Array([7, 8, 9])),
74
- ],
75
- ),
76
- },
77
- {
78
- name: "Some Channels Present, Out of Order",
79
- channels: [1, 2, 3],
80
- dataTypes: [DataType.UINT8, DataType.FLOAT32, DataType.FLOAT64],
81
- frame: new framer.Frame(
82
- [3, 1],
83
- [
84
- new Series(new Float64Array([7, 8, 9])),
85
- new Series(new Uint8Array([1, 2, 3])),
86
- ],
87
- ),
88
- },
89
- {
90
- name: "Only One Channel Present",
91
- channels: [1, 2, 3, 4, 5],
92
- dataTypes: [
93
- DataType.UINT8,
94
- DataType.UINT8,
95
- DataType.UINT8,
96
- DataType.UINT8,
97
- DataType.UINT8,
98
- ],
99
- frame: new framer.Frame([3], [new Series(new Uint8Array([1, 2, 3, 4, 5]))]),
100
- },
101
- {
102
- name: "All Same Time Range",
103
- channels: [1, 2],
104
- dataTypes: [DataType.UINT8, DataType.FLOAT32],
105
- frame: new framer.Frame(
106
- [1, 2],
107
- [
108
- new Series({
109
- dataType: DataType.UINT8,
110
- data: new Uint8Array([1]),
111
- timeRange: new TimeStamp(0).spanRange(5),
112
- }),
113
- new Series({
114
- dataType: DataType.FLOAT32,
115
- data: new Float32Array([1, 2, 3, 4]),
116
- timeRange: new TimeStamp(0).spanRange(5),
117
- }),
118
- ],
119
- ),
120
- },
121
- {
122
- name: "All Same Non-Zero Time Range",
123
- channels: [1, 2],
124
- dataTypes: [DataType.UINT8, DataType.FLOAT32],
125
- frame: new framer.Frame(
126
- [1, 2],
127
- [
128
- new Series({
129
- dataType: DataType.UINT8,
130
- data: new Uint8Array([1]),
131
- timeRange: new TimeStamp(1000000000).spanRange(5000000000),
132
- }),
133
- new Series({
134
- dataType: DataType.FLOAT32,
135
- data: new Float32Array([1, 2, 3, 4]),
136
- timeRange: new TimeStamp(1000000000).spanRange(5000000000),
137
- }),
138
- ],
139
- ),
140
- },
141
- {
142
- name: "Different Non-Zero Time Ranges",
143
- channels: [1, 2],
144
- dataTypes: [DataType.UINT8, DataType.FLOAT32],
145
- frame: new framer.Frame(
146
- [1, 2],
147
- [
148
- new Series({
149
- dataType: DataType.UINT8,
150
- data: new Uint8Array([1]),
151
- timeRange: new TimeStamp(1000000000).spanRange(5000000000),
152
- }),
153
- new Series({
154
- dataType: DataType.FLOAT32,
155
- data: new Float32Array([1, 2, 3, 4]),
156
- timeRange: new TimeStamp(2000000000).spanRange(3000000000),
157
- }),
158
- ],
159
- ),
160
- },
161
- {
162
- name: "Partial Present, Different Lengths",
163
- channels: [1, 2, 3],
164
- dataTypes: [DataType.UINT8, DataType.FLOAT32, DataType.FLOAT64],
165
- frame: new framer.Frame(
166
- [1, 3],
167
- [new Series(new Uint8Array([1])), new Series(new Float64Array([1, 2, 3, 4]))],
168
- ),
169
- },
170
- {
171
- name: "Same Alignments",
172
- channels: [1, 2],
173
- dataTypes: [DataType.UINT8, DataType.FLOAT32],
174
- frame: new framer.Frame(
175
- [1, 2],
176
- [
177
- new Series({
178
- dataType: DataType.UINT8,
179
- data: new Uint8Array([1]),
180
- alignment: 5n,
181
- }),
182
- new Series({
183
- dataType: DataType.FLOAT32,
184
- data: new Uint8Array([1, 2, 3, 4]),
185
- alignment: 5n,
186
- }),
187
- ],
188
- ),
189
- },
190
- {
191
- name: "Different Alignments",
192
- channels: [1, 2],
193
- dataTypes: [DataType.UINT8, DataType.FLOAT32],
194
- frame: new Frame(
195
- [1, 2],
196
- [
197
- new Series({
198
- dataType: DataType.UINT8,
199
- data: new Uint8Array([1]),
200
- alignment: 5n,
201
- }),
202
- new Series({
203
- dataType: DataType.FLOAT32,
204
- data: new Uint8Array([1, 2, 3, 4]),
205
- alignment: 10n,
206
- }),
207
- ],
208
- ),
209
- },
210
- {
211
- name: "Variable Data Types",
212
- channels: [1, 2, 3],
213
- dataTypes: [DataType.UINT8, DataType.STRING, DataType.JSON],
214
- frame: new framer.Frame(
215
- [1, 2, 3],
216
- [
217
- new Series(new Uint8Array([1])),
218
- new Series({
219
- data: ["one", "two", "three"],
220
- dataType: DataType.STRING,
221
- }),
222
- new Series({
223
- data: [{ a: 1 }, { b: 2 }, { c: 3 }],
224
- dataType: DataType.JSON,
225
- }),
226
- ],
227
- ),
228
- },
229
- ];
230
-
231
- SPECS.forEach((spec) => {
232
- it(`should encode & decode ${spec.name}`, () => {
233
- const codec = new Codec(spec.channels, spec.dataTypes);
234
- const encoded = codec.encode(spec.frame.toPayload());
235
- const decoded = codec.decode(encoded);
236
- decoded.keys.forEach((k, i) => {
237
- const dcs = decoded.series[i];
238
- const ser = spec.frame.get(k);
239
- expect(ser.series.length).toBeGreaterThan(0);
240
- const os = ser.series[0];
241
- if (dcs.timeRange != null && !dcs.timeRange.span.isZero)
242
- expect(dcs.timeRange.toString()).toEqual(os.timeRange?.toString());
243
- expect(new Series(dcs).toString()).toEqual(os.toString());
244
- });
245
- });
246
- });
247
- });
248
-
249
- describe("dynamic codec", () => {
250
- it("should allow the caller to update the codec", () => {
251
- const codec = new Codec();
252
- codec.update([1], [DataType.INT32]);
253
- const encoded = codec.encode(
254
- new framer.Frame([1], [new Series(new Int32Array([1, 2, 3]))]),
255
- );
256
- const decoded1 = new Frame(codec.decode(encoded));
257
- expect(Array.from(decoded1.series[0])).toEqual([1, 2, 3]);
258
- expect(decoded1.keys[0]).toEqual(1);
259
- codec.update([2], [DataType.INT64]);
260
- const encoded2 = codec.encode(
261
- new framer.Frame([2], [new Series(new BigInt64Array([1n, 2n, 3n]))]),
262
- );
263
- const decoded2 = new Frame(codec.decode(encoded2));
264
- expect(Array.from(decoded2.series[0])).toEqual([1n, 2n, 3n]);
265
- expect(decoded2.keys[0]).toEqual(2);
266
- });
267
-
268
- it("should throw an error if the codec is not initialized", () => {
269
- const codec = new Codec();
270
- expect(() =>
271
- codec.encode(new framer.Frame([1], [new Series(new Int32Array([1, 2, 3]))])),
272
- ).toThrow(ValidationError);
273
- });
274
-
275
- it("should use the correct encode/decode state even if the codecs are out of sync", () => {
276
- const encoder = new Codec();
277
- const decoder = new Codec();
278
- encoder.update([1], [DataType.INT32]);
279
- decoder.update([1], [DataType.INT32]);
280
-
281
- const fr = new framer.Frame([1], [new Series(new Int32Array([1, 2, 3]))]);
282
- let encoded = encoder.encode(fr);
283
- let decoded = new Frame(decoder.decode(encoded));
284
- expect(decoded.keys[0]).toEqual(1);
285
- expect(decoded.series[0].data).toEqual(fr.series[0].data);
286
-
287
- decoder.update([2], [DataType.INT64]);
288
- encoded = encoder.encode(fr);
289
- decoded = new Frame(decoder.decode(encoded));
290
- expect(decoded.keys[0]).toEqual(1);
291
- expect(decoded.series[0].data).toEqual(fr.series[0].data);
292
-
293
- encoder.update([2], [DataType.INT64]);
294
- expect(() => encoder.encode(fr)).toThrow(ValidationError);
295
- const fr2 = new framer.Frame([2], [new Series(new BigInt64Array([1n, 2n, 3n]))]);
296
- encoded = encoder.encode(fr2);
297
- decoded = new Frame(decoder.decode(encoded));
298
- expect(decoded.keys[0]).toEqual(2);
299
- expect(decoded.series[0].data).toEqual(fr2.series[0].data);
300
- });
301
- });
302
-
303
- describe("websocket writer codec", () => {
304
- it("should correctly encode and decode a websocket write request", () => {
305
- const baseCodec = new Codec([1], [DataType.INT32]);
306
- const fr = new framer.Frame([1], [new Series(new Int32Array([1, 2, 3]))]);
307
- const writeReq: WriteRequest = {
308
- command: WriterCommand.Write,
309
- frame: fr.toPayload(),
310
- };
311
- const msg: WebsocketMessage<WriteRequest> = { type: "data", payload: writeReq };
312
- const codec = new WSWriterCodec(baseCodec);
313
- const encoded = codec.encode(msg);
314
- expect(encoded[0]).toEqual(HIGH_PERF_SPECIAL_CHAR);
315
- const decoded = codec.decode(encoded) as WebsocketMessage<WriteRequest>;
316
- expect(decoded.payload?.command).toEqual(WriterCommand.Write);
317
- const decodedFr = new Frame(decoded.payload?.frame);
318
- expect(decodedFr.series[0].data).toEqual(fr.series[0].data);
319
- });
320
-
321
- it("should correctly e +d a WS write set authority request", () => {
322
- const baseCodec = new Codec([1], [DataType.INT32]);
323
- const writeReq: WriteRequest = {
324
- command: WriterCommand.SetAuthority,
325
- config: { authorities: [123] },
326
- };
327
- const codec = new WSWriterCodec(baseCodec);
328
- const msg: WebsocketMessage<WriteRequest> = { type: "data", payload: writeReq };
329
- const encoded = codec.encode(msg);
330
- expect(encoded[0]).toEqual(LOW_PERF_SPECIAL_CHAR);
331
- const decoded = codec.decode(encoded);
332
- expect(decoded).toEqual(msg);
333
- });
334
- });
335
-
336
- describe("websocket iterator codec", () => {
337
- it("should JSON-encode an iterator request without a special char prefix", () => {
338
- const baseCodec = new Codec([1], [DataType.INT32]);
339
- const codec = new WSIteratorCodec(baseCodec);
340
- const msg: WebsocketMessage<unknown> = {
341
- type: "data",
342
- payload: { command: 1, span: 0 },
343
- };
344
- const encoded = codec.encode(msg);
345
- // Iterator requests are sent as raw JSON; no special-char prefix.
346
- // Confirm the first byte is JSON ('{' or '[').
347
- expect([0x7b, 0x5b]).toContain(encoded[0]);
348
- });
349
-
350
- it("should binary-decode a data variant response and synthesize variant=Data", () => {
351
- const baseCodec = new Codec([1], [DataType.INT32]);
352
- const fr = new framer.Frame([1], [new Series(new Int32Array([1, 2, 3]))]);
353
- const codec = new WSIteratorCodec(baseCodec);
354
- const encoded = new Uint8Array(baseCodec.encode(fr.toPayload(), 1));
355
- encoded[0] = HIGH_PERF_SPECIAL_CHAR;
356
- const decoded = codec.decode(encoded) as WebsocketMessage<IteratorResponse>;
357
- expect(decoded.payload?.variant).toEqual(IteratorResponseVariant.Data);
358
- const decodedFr = new Frame(decoded.payload?.frame);
359
- expect(decodedFr.series[0].data).toEqual(fr.series[0].data);
360
- });
361
-
362
- it("should JSON-decode an ack variant response prefixed with the low-perf char", () => {
363
- const baseCodec = new Codec([1], [DataType.INT32]);
364
- const codec = new WSIteratorCodec(baseCodec);
365
- const ackMsg: WebsocketMessage<IteratorResponse> = {
366
- type: "data",
367
- payload: {
368
- variant: IteratorResponseVariant.Ack,
369
- ack: true,
370
- command: 1,
371
- },
372
- };
373
- // Simulate what the server sends: LOW_PERF_SPECIAL_CHAR + JSON-encoded message.
374
- const json = new TextEncoder().encode(JSON.stringify(ackMsg));
375
- const encoded = new Uint8Array(json.byteLength + 1);
376
- encoded[0] = LOW_PERF_SPECIAL_CHAR;
377
- encoded.set(json, 1);
378
- const decoded = codec.decode(encoded) as WebsocketMessage<IteratorResponse>;
379
- expect(decoded.payload?.variant).toEqual(IteratorResponseVariant.Ack);
380
- expect(decoded.payload?.ack).toEqual(true);
381
- });
382
- });
383
- });
@@ -1,103 +0,0 @@
1
- // Copyright 2026 Synnax Labs, Inc.
2
- //
3
- // Use of this software is governed by the Business Source License included in the file
4
- // licenses/BSL.txt.
5
- //
6
- // As of the Change Date specified in that file, in accordance with the Business Source
7
- // License, use of this software will be governed by the Apache License, Version 2.0,
8
- // included in the file licenses/APL.txt.
9
-
10
- import { TimeRange, TimeStamp } from "@synnaxlabs/x";
11
- import { describe, expect, test } from "vitest";
12
-
13
- import { NotFoundError, UnauthorizedError } from "@/errors";
14
- import { newIndexedPair } from "@/testutil/channels";
15
- import { createTestClient } from "@/testutil/client";
16
- import { secondsLinspace } from "@/testutil/telem";
17
- import { randomSeries } from "@/util/telem";
18
-
19
- const client = createTestClient();
20
-
21
- describe("Deleter", () => {
22
- test("Client - basic delete", async () => {
23
- const [indexCh, dataCh] = await newIndexedPair(client);
24
- const data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
25
- await client.write(TimeStamp.seconds(5), {
26
- [indexCh.key]: secondsLinspace(5, 10),
27
- [dataCh.key]: data,
28
- });
29
- const res = await client.read(TimeRange.MAX, dataCh.key);
30
- expect(res.data.length).toEqual(10);
31
- await client.delete(dataCh.key, TimeStamp.seconds(5).range(TimeStamp.seconds(7)));
32
-
33
- const deletedRes = await client.read(TimeRange.MAX, dataCh.key);
34
- expect(deletedRes.data.length).toEqual(8);
35
- expect(Array.from(deletedRes)).toEqual([3, 4, 5, 6, 7, 8, 9, 10]);
36
- });
37
- test("Client - basic delete by name", async () => {
38
- const [indexCh, dataCh] = await newIndexedPair(client);
39
- const data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
40
- await client.write(TimeStamp.seconds(5), {
41
- [indexCh.key]: secondsLinspace(5, 10),
42
- [dataCh.key]: data,
43
- });
44
- const res = await client.read(TimeRange.MAX, dataCh.key);
45
- expect(res.data.length).toEqual(10);
46
- await client.delete(dataCh.name, TimeStamp.seconds(5).range(TimeStamp.seconds(7)));
47
-
48
- const deletedRes = await client.read(TimeRange.MAX, dataCh.key);
49
- expect(deletedRes.data.length).toEqual(8);
50
- expect(Array.from(deletedRes)).toEqual([3, 4, 5, 6, 7, 8, 9, 10]);
51
- });
52
- test("Client - delete key not found", async () => {
53
- const [indexCh, dataCh] = await newIndexedPair(client);
54
- const data = randomSeries(10, dataCh.dataType);
55
- await client.write(TimeStamp.seconds(0), {
56
- [indexCh.key]: secondsLinspace(0, 10),
57
- [dataCh.key]: data,
58
- });
59
-
60
- await expect(client.delete([indexCh.key, 1232], TimeRange.MAX)).rejects.toThrow(
61
- NotFoundError,
62
- );
63
-
64
- const res = await client.read(TimeRange.MAX, dataCh.key);
65
- expect(res.data).toEqual(data);
66
- });
67
-
68
- test("Client - delete with writer", async () => {
69
- const [indexCh] = await newIndexedPair(client);
70
-
71
- const writer = await client.openWriter({
72
- start: TimeStamp.seconds(10),
73
- channels: [indexCh.key],
74
- });
75
-
76
- await expect(
77
- client.delete([indexCh.key], TimeStamp.seconds(12).range(TimeStamp.seconds(30))),
78
- ).rejects.toThrow(UnauthorizedError);
79
-
80
- await writer.close();
81
- });
82
-
83
- test("Client - delete index channel alone", async () => {
84
- const [indexCh, dataCh] = await newIndexedPair(client);
85
- const index = indexCh;
86
- const dat = dataCh;
87
- const data = randomSeries(10, dat.dataType);
88
-
89
- const time = BigInt64Array.from({ length: 10 }, (_, i) =>
90
- TimeStamp.milliseconds(i).valueOf(),
91
- );
92
-
93
- await index.write(0, time);
94
- await dat.write(0, data);
95
-
96
- await expect(
97
- client.delete(
98
- [index.key],
99
- TimeStamp.milliseconds(2).range(TimeStamp.milliseconds(5)),
100
- ),
101
- ).rejects.toThrow();
102
- });
103
- });