@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,101 +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 Context } from "@synnaxlabs/freighter";
11
- import { URL } from "@synnaxlabs/x";
12
- import { describe, expect, it, test } from "vitest";
13
-
14
- import { auth } from "@/auth";
15
- import { AuthError, ExpiredTokenError, InvalidTokenError } from "@/errors";
16
- import { TEST_CLIENT_PARAMS } from "@/testutil/client";
17
- import { Transport } from "@/transport";
18
-
19
- const DUMMY_CTX: Context = {
20
- target: "test",
21
- role: "client",
22
- protocol: "http",
23
- params: {},
24
- };
25
-
26
- describe("auth", () => {
27
- test("valid credentials", async () => {
28
- const transport = new Transport(
29
- new URL({
30
- host: TEST_CLIENT_PARAMS.host,
31
- port: Number(TEST_CLIENT_PARAMS.port),
32
- }),
33
- );
34
- const client = new auth.Client(transport.unary, TEST_CLIENT_PARAMS);
35
- const mw = client.middleware();
36
- const res = await mw(DUMMY_CTX, async () => DUMMY_CTX);
37
- expect(res).toEqual(DUMMY_CTX);
38
- });
39
-
40
- test("invalid credentials", async () => {
41
- const transport = new Transport(
42
- new URL({
43
- host: TEST_CLIENT_PARAMS.host,
44
- port: Number(TEST_CLIENT_PARAMS.port),
45
- }),
46
- );
47
- const client = new auth.Client(transport.unary, {
48
- ...TEST_CLIENT_PARAMS,
49
- password: "wrong",
50
- });
51
- const mw = client.middleware();
52
- await expect(mw(DUMMY_CTX, async () => DUMMY_CTX)).rejects.toThrow(AuthError);
53
- });
54
-
55
- describe("token retry", () => {
56
- const ERROR_TYPES = [InvalidTokenError, ExpiredTokenError];
57
- ERROR_TYPES.forEach((ErrorType) => {
58
- it(`should re-authenticate and retry the request for ${ErrorType.name}`, async () => {
59
- const transport = new Transport(
60
- new URL({
61
- host: TEST_CLIENT_PARAMS.host,
62
- port: Number(TEST_CLIENT_PARAMS.port),
63
- }),
64
- );
65
- const client = new auth.Client(transport.unary, TEST_CLIENT_PARAMS);
66
- const mw = client.middleware();
67
- let isFirst = true;
68
- let tkOne: string | undefined;
69
- let tkTwo: string | undefined;
70
- const res = await mw(DUMMY_CTX, async () => {
71
- if (isFirst) {
72
- isFirst = false;
73
- tkOne = client.token;
74
- throw new ErrorType();
75
- }
76
- tkTwo = client.token;
77
- return DUMMY_CTX;
78
- });
79
- expect(res).toEqual(DUMMY_CTX);
80
- expect(tkOne).toBeDefined();
81
- expect(tkTwo).toBeDefined();
82
- });
83
- });
84
-
85
- it("should fail after MAX_RETRIES", async () => {
86
- const transport = new Transport(
87
- new URL({
88
- host: TEST_CLIENT_PARAMS.host,
89
- port: Number(TEST_CLIENT_PARAMS.port),
90
- }),
91
- );
92
- const client = new auth.Client(transport.unary, TEST_CLIENT_PARAMS);
93
- const mw = client.middleware();
94
- await expect(
95
- mw(DUMMY_CTX, async () => {
96
- throw new InvalidTokenError();
97
- }),
98
- ).rejects.toThrow(InvalidTokenError);
99
- });
100
- });
101
- });
@@ -1,116 +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 { DataType, id } from "@synnaxlabs/x";
11
- import { describe, expect, it } from "vitest";
12
-
13
- import { channel } from "@/channel";
14
- import { AuthError, NotFoundError } from "@/errors";
15
- import { createTestClientWithPolicy } from "@/testutil/access";
16
- import { createTestClient } from "@/testutil/client";
17
-
18
- const client = createTestClient();
19
-
20
- describe("channel", () => {
21
- describe("access control", () => {
22
- it("should deny access when no matching policy exists", async () => {
23
- const userClient = await createTestClientWithPolicy(client, {
24
- name: "test",
25
- objects: [],
26
- actions: [],
27
- });
28
- const randomChannel = await client.channels.create({
29
- name: id.create(),
30
- dataType: DataType.FLOAT32,
31
- virtual: true,
32
- });
33
- await expect(userClient.channels.retrieve(randomChannel.key)).rejects.toThrow(
34
- AuthError,
35
- );
36
- });
37
-
38
- it("should allow the caller to retrieve channels with the correct policy", async () => {
39
- const userClient = await createTestClientWithPolicy(client, {
40
- name: "test",
41
- objects: [channel.ontologyID(0)],
42
- actions: ["retrieve"],
43
- });
44
- const randomChannel = await client.channels.create({
45
- name: id.create(),
46
- dataType: DataType.FLOAT32,
47
- virtual: true,
48
- });
49
- const retrieved = await userClient.channels.retrieve(randomChannel.key);
50
- expect(retrieved.key).toBe(randomChannel.key);
51
- expect(retrieved.name).toBe(randomChannel.name);
52
- expect(retrieved.dataType.equals(randomChannel.dataType)).toBe(true);
53
- });
54
-
55
- it("should allow the caller to create channels with the correct policy", async () => {
56
- const userClient = await createTestClientWithPolicy(client, {
57
- name: "test",
58
- objects: [channel.ontologyID(0)],
59
- actions: ["create"],
60
- });
61
- await userClient.channels.create({
62
- name: id.create(),
63
- dataType: DataType.FLOAT32,
64
- virtual: true,
65
- });
66
- });
67
-
68
- it("should deny access when no create policy exists", async () => {
69
- const userClient = await createTestClientWithPolicy(client, {
70
- name: "test",
71
- objects: [channel.ontologyID(0)],
72
- actions: ["retrieve"],
73
- });
74
- await expect(
75
- userClient.channels.create({
76
- name: id.create(),
77
- dataType: DataType.FLOAT32,
78
- virtual: true,
79
- }),
80
- ).rejects.toThrow(AuthError);
81
- });
82
-
83
- it("should allow the caller to delete channels with the correct policy", async () => {
84
- const userClient = await createTestClientWithPolicy(client, {
85
- name: "test",
86
- objects: [channel.ontologyID(0)],
87
- actions: ["delete"],
88
- });
89
- const randomChannel = await client.channels.create({
90
- name: id.create(),
91
- dataType: DataType.FLOAT32,
92
- virtual: true,
93
- });
94
- await userClient.channels.delete(randomChannel.key);
95
- await expect(userClient.channels.retrieve(randomChannel.key)).rejects.toThrow(
96
- NotFoundError,
97
- );
98
- });
99
-
100
- it("should deny access when no delete policy exists", async () => {
101
- const userClient = await createTestClientWithPolicy(client, {
102
- name: "test",
103
- objects: [channel.ontologyID(0)],
104
- actions: ["retrieve"],
105
- });
106
- const randomChannel = await client.channels.create({
107
- name: id.create(),
108
- dataType: DataType.FLOAT32,
109
- virtual: true,
110
- });
111
- await expect(userClient.channels.delete(randomChannel.key)).rejects.toThrow(
112
- AuthError,
113
- );
114
- });
115
- });
116
- });
@@ -1,115 +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 { DataType, errors, Rate, TimeSpan } from "@synnaxlabs/x";
11
- import { describe, expect, it, vi } from "vitest";
12
-
13
- import { channel } from "@/channel";
14
-
15
- class MockRetriever implements channel.Retriever {
16
- func: (
17
- channels: channel.Params,
18
- options?: channel.RetrieveOptions,
19
- ) => Promise<channel.Payload[]>;
20
-
21
- constructor(
22
- func: (
23
- channels: channel.Params,
24
- options?: channel.RetrieveOptions,
25
- ) => Promise<channel.Payload[]>,
26
- ) {
27
- this.func = func;
28
- }
29
-
30
- async retrieve(
31
- channels: channel.Params | channel.RetrieveRequest,
32
- options?: channel.RetrieveOptions,
33
- ): Promise<channel.Payload[]> {
34
- if (typeof channels === "object" && !Array.isArray(channels))
35
- throw new errors.NotImplemented();
36
- return await this.func(channels, options);
37
- }
38
- }
39
-
40
- describe("channelchannel.Retriever", () => {
41
- it("should batch multiple retrieve requests", async () => {
42
- const called = vi.fn();
43
- const base = new MockRetriever(async (batch): Promise<channel.Payload[]> => {
44
- called(batch);
45
- const { normalized } = channel.analyzeParams(batch);
46
- return normalized.map((key) => ({
47
- key: key as number,
48
- name: `channel-${key}`,
49
- dataType: DataType.FLOAT32,
50
- internal: false,
51
- isIndex: false,
52
- rate: Rate.hz(1),
53
- leaseholder: 1,
54
- index: 0,
55
- virtual: false,
56
- expression: "",
57
- operations: [],
58
- }));
59
- });
60
- const retriever = new channel.DebouncedBatchRetriever(
61
- base,
62
- TimeSpan.milliseconds(10),
63
- );
64
- const res = await Promise.all([
65
- retriever.retrieve([1]),
66
- retriever.retrieve([2]),
67
- retriever.retrieve([3, 4]),
68
- ]);
69
- expect(called).toHaveBeenCalledTimes(1);
70
- expect(called).toHaveBeenCalledWith([1, 2, 3, 4]);
71
- expect(res.map((r) => r.map((c) => c.key))).toEqual([[1], [2], [3, 4]]);
72
- });
73
- it("should only fetch duplicate keys once", async () => {
74
- const called = vi.fn();
75
- const base = new MockRetriever(async (batch): Promise<channel.Payload[]> => {
76
- called(batch);
77
- const { normalized } = channel.analyzeParams(batch);
78
- return normalized.map((key) => ({
79
- key: key as number,
80
- name: `channel-${key}`,
81
- dataType: DataType.FLOAT32,
82
- internal: false,
83
- isIndex: false,
84
- rate: Rate.hz(1),
85
- leaseholder: 1,
86
- index: 0,
87
- virtual: false,
88
- expression: "",
89
- operations: [],
90
- }));
91
- });
92
- const retriever = new channel.DebouncedBatchRetriever(
93
- base,
94
- TimeSpan.milliseconds(10),
95
- );
96
- const res = await Promise.all([
97
- retriever.retrieve([1]),
98
- retriever.retrieve([2]),
99
- retriever.retrieve([1, 2]),
100
- ]);
101
- expect(called).toHaveBeenCalledTimes(1);
102
- expect(called).toHaveBeenCalledWith([1, 2]);
103
- expect(res.map((r) => r.map((c) => c.key))).toEqual([[1], [2], [1, 2]]);
104
- });
105
- it("should throw an error if the fetch fails", async () => {
106
- const base = new MockRetriever(async (): Promise<channel.Payload[]> => {
107
- throw new Error("failed to fetch");
108
- });
109
- const retriever = new channel.DebouncedBatchRetriever(
110
- base,
111
- TimeSpan.milliseconds(10),
112
- );
113
- await expect(retriever.retrieve([1])).rejects.toThrow("failed to fetch");
114
- });
115
- });
@@ -1,352 +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 { DataType, id } from "@synnaxlabs/x";
11
- import { describe, expect, it, test } from "vitest";
12
-
13
- import { Channel } from "@/channel/client";
14
- import { NotFoundError } from "@/errors";
15
- import { createTestClient } from "@/testutil/client";
16
-
17
- const client = createTestClient();
18
-
19
- describe("Channel", () => {
20
- describe("create", () => {
21
- test("create one", async () => {
22
- const name = id.create();
23
- const channel = await client.channels.create({
24
- name,
25
- dataType: DataType.FLOAT32,
26
- virtual: true,
27
- });
28
- expect(channel.name).toEqual(name);
29
- expect(channel.leaseholder).toEqual(1);
30
- expect(channel.virtual).toBe(true);
31
- expect(channel.dataType).toEqual(DataType.FLOAT32);
32
- }, 80000);
33
-
34
- test("create calculated", async () => {
35
- const chOneName = id.create();
36
- let chOne = new Channel({
37
- name: chOneName,
38
- virtual: true,
39
- dataType: DataType.FLOAT32,
40
- });
41
- chOne = await client.channels.create(chOne);
42
- let calculatedCH = new Channel({
43
- name: id.create(),
44
- virtual: true,
45
- dataType: DataType.FLOAT32,
46
- expression: `return ${chOne.name} * 2`,
47
- });
48
- calculatedCH = await client.channels.create(calculatedCH);
49
- expect(calculatedCH.key).not.toEqual(0);
50
- expect(calculatedCH.virtual).toEqual(true);
51
- expect(calculatedCH.expression).toEqual(`return ${chOneName} * 2`);
52
- });
53
-
54
- test("create calculated channel with constant expression", async () => {
55
- // Calculated channels can now have constant expressions that don't
56
- // reference other channels
57
- const calculatedCH = await client.channels.create({
58
- name: id.create(),
59
- virtual: true,
60
- dataType: DataType.FLOAT32,
61
- expression: `return 2`,
62
- });
63
- expect(calculatedCH.virtual).toEqual(true);
64
- expect(calculatedCH.expression).toEqual(`return 2`);
65
- });
66
-
67
- test("create index and indexed pair", async () => {
68
- const one = await client.channels.create({
69
- name: id.create(),
70
- isIndex: true,
71
- dataType: DataType.TIMESTAMP,
72
- });
73
- expect(one.key).not.toEqual(0);
74
- const two = await client.channels.create({
75
- name: id.create(),
76
- index: one.key,
77
- dataType: DataType.FLOAT32,
78
- });
79
- expect(two.key).not.toEqual(0);
80
- });
81
-
82
- test("create many", async () => {
83
- const names = [id.create(), id.create()];
84
- const channels = await client.channels.create([
85
- { name: names[0], leaseholder: 1, virtual: true, dataType: DataType.FLOAT32 },
86
- { name: names[1], leaseholder: 1, virtual: true, dataType: DataType.FLOAT32 },
87
- ]);
88
- expect(channels.length).toEqual(2);
89
- expect(channels[0].name).toEqual(names[0]);
90
- expect(channels[1].name).toEqual(names[1]);
91
- });
92
-
93
- test("create instances of channels", async () => {
94
- const timeIndexChannel = await client.channels.create({
95
- name: id.create(),
96
- dataType: DataType.TIMESTAMP,
97
- isIndex: true,
98
- });
99
-
100
- const sensorOne = new Channel({
101
- name: id.create(),
102
- dataType: DataType.FLOAT32,
103
- index: timeIndexChannel.key,
104
- });
105
-
106
- const sensorTwo = new Channel({
107
- name: id.create(),
108
- dataType: DataType.FLOAT32,
109
- index: timeIndexChannel.key,
110
- });
111
-
112
- const sensorThree = new Channel({
113
- name: id.create(),
114
- dataType: DataType.FLOAT32,
115
- index: timeIndexChannel.key,
116
- });
117
- await client.channels.create([sensorOne, sensorTwo, sensorThree]);
118
- });
119
-
120
- describe("virtual", () => {
121
- it("should create a virtual channel", async () => {
122
- const channel = await client.channels.create({
123
- name: id.create(),
124
- dataType: DataType.JSON,
125
- virtual: true,
126
- });
127
- expect(channel.virtual).toEqual(true);
128
- const retrieved = await client.channels.retrieve(channel.key);
129
- expect(retrieved.virtual).toBe(true);
130
- });
131
- });
132
-
133
- describe("retrieveIfNameExists", () => {
134
- it("should retrieve the existing channel when it exists", async () => {
135
- const name = id.create();
136
- const channel = await client.channels.create({
137
- name,
138
- leaseholder: 1,
139
- virtual: true,
140
- dataType: DataType.FLOAT32,
141
- });
142
- const channelTwo = await client.channels.create(
143
- { name, leaseholder: 1, virtual: true, dataType: DataType.FLOAT32 },
144
- { retrieveIfNameExists: true },
145
- );
146
- expect(channelTwo.key).toEqual(channel.key);
147
- });
148
- it("should create a new channel when it does not exist", async () => {
149
- const channel = await client.channels.create({
150
- name: id.create(),
151
- leaseholder: 1,
152
- virtual: true,
153
- dataType: DataType.FLOAT32,
154
- });
155
- const channelTwo = await client.channels.create(
156
- {
157
- name: id.create(),
158
- leaseholder: 1,
159
- virtual: true,
160
- dataType: DataType.FLOAT32,
161
- },
162
- { retrieveIfNameExists: true },
163
- );
164
- expect(channelTwo.key).not.toEqual(channel.key);
165
- });
166
- it("should retrieve and create the correct channels when creating many", async () => {
167
- const name = id.create();
168
- const channel = await client.channels.create({
169
- name,
170
- leaseholder: 1,
171
- virtual: true,
172
- dataType: DataType.FLOAT32,
173
- });
174
- const channelTwo = await client.channels.create(
175
- [
176
- { name, leaseholder: 1, virtual: true, dataType: DataType.FLOAT32 },
177
- {
178
- name: id.create(),
179
- leaseholder: 1,
180
- virtual: true,
181
- dataType: DataType.FLOAT32,
182
- },
183
- ],
184
- { retrieveIfNameExists: true },
185
- );
186
- expect(channelTwo.length).toEqual(2);
187
- expect(channelTwo[0].key).toEqual(channel.key);
188
- expect(channelTwo[1].key).not.toEqual(channel.key);
189
- });
190
- });
191
- });
192
-
193
- describe("retrieve", () => {
194
- test("retrieve by key", async () => {
195
- const channel = await client.channels.create({
196
- name: id.create(),
197
- leaseholder: 1,
198
- virtual: true,
199
- dataType: DataType.FLOAT32,
200
- });
201
- const retrieved = await client.channels.retrieve(channel.key);
202
- expect(retrieved.name).toEqual(channel.name);
203
- expect(retrieved.leaseholder).toEqual(1);
204
- expect(retrieved.virtual).toEqual(true);
205
- expect(retrieved.dataType).toEqual(DataType.FLOAT32);
206
- });
207
- test("retrieve by key - not found", async () => {
208
- await expect(
209
- async () => await client.channels.retrieve("1-1000"),
210
- ).rejects.toThrow(NotFoundError);
211
- });
212
- test("retrieve by name", async () => {
213
- const name = id.create();
214
- await client.channels.create({
215
- name,
216
- leaseholder: 1,
217
- virtual: true,
218
- dataType: DataType.FLOAT32,
219
- });
220
- const retrieved = await client.channels.retrieve([name]);
221
- expect(retrieved.length).toBe(1);
222
- expect(retrieved[0].name).toEqual(name);
223
- });
224
- test("retrieve by key - not found", async () => {
225
- await expect(
226
- async () => await client.channels.retrieve("1-1000"),
227
- ).rejects.toThrow(NotFoundError);
228
- });
229
- test("retrieve by search term", async () => {
230
- const prefix = id.create();
231
- const names = [`${prefix}_1`, `${prefix}_2`];
232
- await client.channels.create(
233
- names.map((name) => ({ name, virtual: true, dataType: DataType.FLOAT32 })),
234
- );
235
- await expect
236
- .poll(async () => {
237
- const results = await client.channels.retrieve({ searchTerm: prefix });
238
- return results.map((c) => c.name).sort();
239
- })
240
- .toEqual(names);
241
- });
242
- });
243
-
244
- describe("delete", async () => {
245
- test("delete by key", async () => {
246
- const channel = await client.channels.create({
247
- name: id.create(),
248
- leaseholder: 1,
249
- virtual: true,
250
- dataType: DataType.FLOAT32,
251
- });
252
- await client.channels.delete(channel.key);
253
- await expect(
254
- async () => await client.channels.retrieve(channel.key),
255
- ).rejects.toThrow(NotFoundError);
256
- });
257
- test("delete by name", async () => {
258
- const channel = await client.channels.create({
259
- name: id.create(),
260
- leaseholder: 1,
261
- virtual: true,
262
- dataType: DataType.FLOAT32,
263
- });
264
- await client.channels.delete([channel.name]);
265
- await expect(
266
- async () => await client.channels.retrieve(channel.key),
267
- ).rejects.toThrow(NotFoundError);
268
- });
269
- });
270
- describe("rename", async () => {
271
- test("single rename", async () => {
272
- const channel = await client.channels.create({
273
- name: id.create(),
274
- leaseholder: 1,
275
- virtual: true,
276
- dataType: DataType.FLOAT32,
277
- });
278
- const newName = id.create();
279
- await client.channels.rename(channel.key, newName);
280
- const renamed = await client.channels.retrieve(channel.key);
281
- expect(renamed.name).toEqual(newName);
282
- });
283
- test("multiple rename", async () => {
284
- const names = [id.create(), id.create()];
285
- const channels = await client.channels.create([
286
- { name: names[0], leaseholder: 1, virtual: true, dataType: DataType.FLOAT32 },
287
- { name: names[1], leaseholder: 1, virtual: true, dataType: DataType.FLOAT32 },
288
- ]);
289
- // Retrieve channels here to ensure we check for cache invalidation
290
- const initial = await client.channels.retrieve(channels.map((c) => c.key));
291
- expect(initial[0].name).toEqual(names[0]);
292
- expect(initial[1].name).toEqual(names[1]);
293
- const newNames = [id.create(), id.create()];
294
- await client.channels.rename(
295
- channels.map((c) => c.key),
296
- newNames,
297
- );
298
- const renamed = await client.channels.retrieve(channels.map((c) => c.key));
299
- expect(renamed[0].name).toEqual(newNames[0]);
300
- expect(renamed[1].name).toEqual(newNames[1]);
301
- });
302
- });
303
-
304
- describe("update calculations", () => {
305
- test("update virtual channel expression", async () => {
306
- const channel = await client.channels.create({
307
- name: id.create(),
308
- virtual: true,
309
- dataType: DataType.INT64,
310
- expression: "return 1",
311
- });
312
-
313
- const updated = await client.channels.create({
314
- key: channel.key,
315
- name: channel.name,
316
- dataType: channel.dataType,
317
- leaseholder: channel.leaseholder,
318
- virtual: true,
319
- expression: "return 2",
320
- });
321
-
322
- const channelsWithName = await client.channels.retrieve([channel.name]);
323
- expect(channelsWithName.length).toEqual(1);
324
-
325
- expect(updated.expression).toEqual("return 2");
326
-
327
- const retrieved = await client.channels.retrieve(channel.key);
328
- expect(retrieved.expression).toEqual("return 2");
329
- });
330
-
331
- test("update calculated channel name", async () => {
332
- const channel = await client.channels.create({
333
- name: id.create(),
334
- dataType: DataType.FLOAT32,
335
- virtual: true,
336
- expression: "return 1",
337
- });
338
-
339
- const updated = await client.channels.create({
340
- key: channel.key,
341
- name: id.create(),
342
- dataType: channel.dataType,
343
- virtual: true,
344
- expression: channel.expression,
345
- });
346
- expect(updated.name).toEqual(updated.name);
347
-
348
- const retrieved = await client.channels.retrieve(channel.key);
349
- expect(retrieved.name).toEqual(updated.name);
350
- });
351
- });
352
- });