@synnaxlabs/client 0.56.2 → 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,620 +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, Series, TimeStamp } from "@synnaxlabs/x";
11
- import { beforeAll, describe, expect, it } from "vitest";
12
-
13
- import { type channel } from "@/channel";
14
- import { ReadAdapter, WriteAdapter } from "@/framer/adapter";
15
- import { Frame } from "@/index";
16
- import { createTestClient } from "@/testutil/client";
17
-
18
- const client = createTestClient();
19
-
20
- describe("WriteFrameAdapter", () => {
21
- let timeCh: channel.Channel;
22
- let dataCh: channel.Channel;
23
- let adapter: WriteAdapter;
24
-
25
- beforeAll(async () => {
26
- timeCh = await client.channels.create({
27
- name: id.create(),
28
- dataType: DataType.TIMESTAMP,
29
- isIndex: true,
30
- });
31
- dataCh = await client.channels.create({
32
- name: id.create(),
33
- dataType: DataType.FLOAT32,
34
- index: timeCh.key,
35
- });
36
-
37
- adapter = await WriteAdapter.open(client.channels.retriever, [
38
- timeCh.key,
39
- dataCh.key,
40
- ]);
41
- });
42
-
43
- it("should correctly adapt a record of keys to single values", async () => {
44
- const ts = TimeStamp.now().valueOf();
45
- const res = await adapter.adapt({ [timeCh.key]: ts, [dataCh.key]: 1 });
46
- expect(res.columns).toHaveLength(2);
47
- expect(res.series).toHaveLength(2);
48
- expect(res.get(timeCh.key)).toHaveLength(1);
49
- expect(res.get(dataCh.key)).toHaveLength(1);
50
- expect(res.get(timeCh.key).at(0)).toEqual(ts);
51
- expect(res.get(dataCh.key).at(0)).toEqual(1);
52
- });
53
-
54
- it("should correctly adapt a record of names to single values", async () => {
55
- const ts = TimeStamp.now().valueOf();
56
- const res2 = await adapter.adapt({ [timeCh.name]: ts, [dataCh.name]: 1 });
57
- expect(res2.columns).toHaveLength(2);
58
- expect(res2.series).toHaveLength(2);
59
- expect(res2.get(timeCh.key)).toHaveLength(1);
60
- expect(res2.get(dataCh.key)).toHaveLength(1);
61
- expect(res2.get(timeCh.key).at(0)).toEqual(ts);
62
- expect(res2.get(dataCh.key).at(0)).toEqual(1);
63
- });
64
-
65
- it("should correctly adapt a single name to a single series", async () => {
66
- const res3 = await adapter.adapt(dataCh.name, new Series(1));
67
- expect(res3.columns).toHaveLength(1);
68
- expect(res3.series).toHaveLength(1);
69
- expect(res3.get(dataCh.key)).toHaveLength(1);
70
- expect(res3.get(dataCh.key).at(0)).toEqual(1);
71
- });
72
-
73
- it("should correctly adapt multiple names to multiple series", async () => {
74
- const ts = TimeStamp.now().valueOf();
75
- const res4 = await adapter.adapt(
76
- [timeCh.name, dataCh.name],
77
- [new Series(ts), new Series(1)],
78
- );
79
- expect(res4.get(timeCh.key)).toHaveLength(1);
80
- expect(res4.get(dataCh.key)).toHaveLength(1);
81
- expect(res4.get(timeCh.key).at(0)).toEqual(ts);
82
- expect(res4.get(dataCh.key).at(0)).toEqual(1);
83
- });
84
-
85
- it("should correctly adapt a frame keyed by name", async () => {
86
- const ts = TimeStamp.now().valueOf();
87
- const fr = new Frame({
88
- [timeCh.name]: new Series(ts),
89
- [dataCh.name]: new Series(1),
90
- });
91
- const res = await adapter.adapt(fr);
92
- expect(res.columns).toHaveLength(2);
93
- expect(res.series).toHaveLength(2);
94
- expect(res.get(timeCh.key).at(0)).toEqual(ts);
95
- expect(res.get(dataCh.key).at(0)).toEqual(1);
96
- });
97
-
98
- it("should not modify a frame keyed by key", async () => {
99
- const ts = TimeStamp.now().valueOf();
100
- const fr = new Frame({ [timeCh.key]: new Series(ts), [dataCh.key]: new Series(1) });
101
- const res = await adapter.adapt(fr);
102
- expect(res.columns).toHaveLength(2);
103
- expect(res.series).toHaveLength(2);
104
- expect(res.get(timeCh.key).at(0)).toEqual(ts);
105
- expect(res.get(dataCh.key).at(0)).toEqual(1);
106
- });
107
-
108
- it("should correctly adapt a map of series", async () => {
109
- const ts = TimeStamp.now().valueOf();
110
- const m = new Map();
111
- m.set(timeCh.key, new Series(ts));
112
- const res = await adapter.adapt(m);
113
- expect(res.columns).toHaveLength(1);
114
- expect(res.series).toHaveLength(1);
115
- expect(res.get(timeCh.key)).toHaveLength(1);
116
- expect(res.get(timeCh.key).at(0)).toEqual(ts);
117
- });
118
-
119
- it("should correctly adapt a name and JSON value", async () => {
120
- const jsonChannel = await client.channels.create({
121
- name: id.create(),
122
- dataType: DataType.JSON,
123
- virtual: true,
124
- });
125
- const adapter = await WriteAdapter.open(client.channels.retriever, [
126
- jsonChannel.key,
127
- ]);
128
- const res = await adapter.adapt(jsonChannel.name, [{ dog: "blue" }]);
129
- expect(res.columns).toHaveLength(1);
130
- expect(res.series).toHaveLength(1);
131
- expect(res.get(jsonChannel.key)).toHaveLength(1);
132
- expect(res.get(jsonChannel.key).at(0)).toEqual({ dog: "blue" });
133
- });
134
-
135
- it("should correctly adapt a name and a json typed series", async () => {
136
- const jsonChannel = await client.channels.create({
137
- name: id.create(),
138
- dataType: DataType.JSON,
139
- virtual: true,
140
- });
141
- const adapter = await WriteAdapter.open(client.channels.retriever, [
142
- jsonChannel.key,
143
- ]);
144
- const res = await adapter.adapt(jsonChannel.name, new Series([{ dog: "blue" }]));
145
- expect(res.columns).toHaveLength(1);
146
- expect(res.series).toHaveLength(1);
147
- expect(res.get(jsonChannel.key)).toHaveLength(1);
148
- expect(res.get(jsonChannel.key).at(0)).toEqual({ dog: "blue" });
149
- });
150
-
151
- it("should correctly adapt a numeric value to a BigInt keyed by key", async () => {
152
- const bigIntCh = await client.channels.create({
153
- name: id.create(),
154
- dataType: DataType.INT64,
155
- virtual: true,
156
- });
157
- const res = await adapter.adapt({
158
- [bigIntCh.key]: 12,
159
- });
160
- expect(res.get(bigIntCh.key).at(0)).toEqual(12n);
161
- });
162
-
163
- describe("adaptParams", () => {
164
- it("should correctly adapt generic object keys", async () => {
165
- const res = await adapter.adaptParams([timeCh.name, dataCh.name]);
166
- expect(res).toContain(timeCh.key);
167
- expect(res).toContain(dataCh.key);
168
- });
169
- });
170
-
171
- describe("update", () => {
172
- it("should return false when updating with the same channels", async () => {
173
- const hasChanged = await adapter.update([timeCh.key, dataCh.key]);
174
- expect(hasChanged).toBe(false);
175
- });
176
-
177
- it("should return true when adding a new channel", async () => {
178
- const newCh = await client.channels.create({
179
- name: id.create(),
180
- dataType: DataType.FLOAT32,
181
- index: timeCh.key,
182
- });
183
- const hasChanged = await adapter.update([timeCh.key, dataCh.key, newCh.key]);
184
- expect(hasChanged).toBe(true);
185
- });
186
-
187
- it("should return true when removing a channel", async () => {
188
- const hasChanged = await adapter.update([timeCh.key]);
189
- expect(hasChanged).toBe(true);
190
- });
191
-
192
- it("should return true when replacing channels", async () => {
193
- const newCh = await client.channels.create({
194
- name: id.create(),
195
- dataType: DataType.FLOAT32,
196
- index: timeCh.key,
197
- });
198
- const hasChanged = await adapter.update([timeCh.key, newCh.key]);
199
- expect(hasChanged).toBe(true);
200
- });
201
-
202
- it("should return false when updating with same channels in different order", async () => {
203
- await adapter.update([timeCh.key, dataCh.key]);
204
- const hasChanged = await adapter.update([dataCh.key, timeCh.key]);
205
- expect(hasChanged).toBe(false);
206
- });
207
-
208
- it("should return false when updating with channel names that resolve to same keys", async () => {
209
- await adapter.update([timeCh.key, dataCh.key]);
210
- const hasChanged = await adapter.update([timeCh.name, dataCh.name]);
211
- expect(hasChanged).toBe(false);
212
- });
213
- });
214
- });
215
-
216
- describe("ReadFrameAdapter", () => {
217
- let timeCh: channel.Channel;
218
- let dataCh: channel.Channel;
219
- let extraCh: channel.Channel;
220
- let adapter: ReadAdapter;
221
-
222
- beforeAll(async () => {
223
- timeCh = await client.channels.create({
224
- name: id.create(),
225
- dataType: DataType.TIMESTAMP,
226
- isIndex: true,
227
- });
228
- dataCh = await client.channels.create({
229
- name: id.create(),
230
- dataType: DataType.FLOAT32,
231
- index: timeCh.key,
232
- });
233
- extraCh = await client.channels.create({
234
- name: id.create(),
235
- dataType: DataType.FLOAT64,
236
- index: timeCh.key,
237
- });
238
-
239
- adapter = await ReadAdapter.open(client.channels.retriever, [
240
- timeCh.key,
241
- dataCh.key,
242
- ]);
243
- });
244
-
245
- describe("adapt", () => {
246
- describe("with keys (no conversion)", () => {
247
- describe("hot path - exact channel match", () => {
248
- it("should return frame unchanged when all channels match", () => {
249
- // HOT PATH: Frame has exactly the channels registered with adapter
250
- const ts = TimeStamp.now().valueOf();
251
- const inputFrame = new Frame({
252
- [timeCh.key]: new Series([ts]),
253
- [dataCh.key]: new Series([1.5]),
254
- });
255
-
256
- const result = adapter.adapt(inputFrame);
257
-
258
- // Frame should be returned unchanged (zero allocations)
259
- expect(result).toBe(inputFrame); // Same object reference
260
- expect(result.columns).toHaveLength(2);
261
- expect(result.has(timeCh.key)).toBe(true);
262
- expect(result.has(dataCh.key)).toBe(true);
263
- expect(result.get(timeCh.key).at(0)).toEqual(ts);
264
- expect(result.get(dataCh.key).at(0)).toEqual(1.5);
265
- });
266
-
267
- it("should preserve series data types in hot path", () => {
268
- const ts = TimeStamp.now().valueOf();
269
- const inputFrame = new Frame({
270
- [timeCh.key]: new Series({ data: [ts], dataType: DataType.TIMESTAMP }),
271
- [dataCh.key]: new Series({ data: [1.5], dataType: DataType.FLOAT32 }),
272
- });
273
-
274
- const result = adapter.adapt(inputFrame);
275
-
276
- // Data types should be preserved
277
- expect(result.get(timeCh.key).dataType).toEqual(DataType.TIMESTAMP);
278
- expect(result.get(dataCh.key).dataType).toEqual(DataType.FLOAT32);
279
- });
280
- });
281
-
282
- describe("cold path - filtering needed", () => {
283
- it("should filter out extra channels in key mode", () => {
284
- // COLD PATH: Frame has extra channels not in adapter
285
- const ts = TimeStamp.now().valueOf();
286
- const inputFrame = new Frame({
287
- [timeCh.key]: new Series([ts]),
288
- [dataCh.key]: new Series([1.5]),
289
- [extraCh.key]: new Series([999.0]), // Extra channel
290
- });
291
-
292
- const result = adapter.adapt(inputFrame);
293
-
294
- // Should filter out extraCh
295
- expect(result).not.toBe(inputFrame); // Different object (filtered)
296
- expect(result.columns).toHaveLength(2);
297
- expect(result.has(timeCh.key)).toBe(true);
298
- expect(result.has(dataCh.key)).toBe(true);
299
- expect(result.has(extraCh.key)).toBe(false);
300
- });
301
-
302
- it("should handle partial matches in key mode", () => {
303
- // Frame has some matching and some extra channels
304
- const ts = TimeStamp.now().valueOf();
305
- const inputFrame = new Frame({
306
- [timeCh.key]: new Series([ts]),
307
- [extraCh.key]: new Series([999.0]),
308
- });
309
-
310
- const result = adapter.adapt(inputFrame);
311
-
312
- expect(result.columns).toHaveLength(1);
313
- expect(result.has(timeCh.key)).toBe(true);
314
- expect(result.has(extraCh.key)).toBe(false);
315
- });
316
-
317
- it("should return empty frame when no channels match in key mode", () => {
318
- const inputFrame = new Frame({
319
- [extraCh.key]: new Series([999.0]),
320
- });
321
-
322
- const result = adapter.adapt(inputFrame);
323
-
324
- expect(result.columns).toHaveLength(0);
325
- expect(result.series).toHaveLength(0);
326
- });
327
- });
328
- });
329
-
330
- describe("with names (conversion)", () => {
331
- let nameAdapter: ReadAdapter;
332
-
333
- beforeAll(async () => {
334
- // Create adapter with channel names (triggers key-to-name mapping)
335
- nameAdapter = await ReadAdapter.open(client.channels.retriever, [
336
- timeCh.name,
337
- dataCh.name,
338
- ]);
339
- });
340
-
341
- describe("hot path - exact match, only convert", () => {
342
- it("should convert channel keys to names when all channels match", () => {
343
- // HOT PATH: Frame has exactly the channels in adapter
344
- const ts = TimeStamp.now().valueOf();
345
- const inputFrame = new Frame({
346
- [timeCh.key]: new Series([ts]),
347
- [dataCh.key]: new Series([2.5]),
348
- });
349
-
350
- const result = nameAdapter.adapt(inputFrame);
351
-
352
- // Output should have names instead of keys (one allocation for conversion)
353
- expect(result.columns).toHaveLength(2);
354
- expect(result.has(timeCh.name)).toBe(true);
355
- expect(result.has(dataCh.name)).toBe(true);
356
- expect(result.get(timeCh.name).at(0)).toEqual(ts);
357
- expect(result.get(dataCh.name).at(0)).toEqual(2.5);
358
- });
359
-
360
- it("should handle multiple values in hot path", () => {
361
- const ts = TimeStamp.now().valueOf();
362
- const inputFrame = new Frame({
363
- [timeCh.key]: new Series([ts, ts + 1000n]),
364
- [dataCh.key]: new Series([1.0, 2.0]),
365
- });
366
-
367
- const result = nameAdapter.adapt(inputFrame);
368
-
369
- expect(result.columns).toHaveLength(2);
370
- expect(result.get(timeCh.name)).toHaveLength(2);
371
- expect(result.get(dataCh.name)).toHaveLength(2);
372
- expect(result.get(timeCh.name).at(0)).toEqual(ts);
373
- expect(result.get(timeCh.name).at(1)).toEqual(ts + 1000n);
374
- expect(result.get(dataCh.name).at(0)).toEqual(1.0);
375
- expect(result.get(dataCh.name).at(1)).toEqual(2.0);
376
- });
377
-
378
- it("should preserve data types during name conversion", () => {
379
- const ts = TimeStamp.now().valueOf();
380
- const inputFrame = new Frame({
381
- [timeCh.key]: new Series({ data: [ts], dataType: DataType.TIMESTAMP }),
382
- [dataCh.key]: new Series({ data: [3.5], dataType: DataType.FLOAT32 }),
383
- });
384
-
385
- const result = nameAdapter.adapt(inputFrame);
386
-
387
- expect(result.get(timeCh.name).dataType).toEqual(DataType.TIMESTAMP);
388
- expect(result.get(dataCh.name).dataType).toEqual(DataType.FLOAT32);
389
- });
390
- });
391
-
392
- describe("cold path - filter and convert", () => {
393
- it("should filter out extra channels while converting", async () => {
394
- // COLD PATH: Frame has extra channels that need filtering
395
- const ts = TimeStamp.now().valueOf();
396
- const inputFrame = new Frame({
397
- [timeCh.key]: new Series([ts]),
398
- [dataCh.key]: new Series([1.5]),
399
- [extraCh.key]: new Series([999.0]), // Extra channel
400
- });
401
-
402
- const result = nameAdapter.adapt(inputFrame);
403
-
404
- // Should filter extraCh and convert remaining keys to names
405
- expect(result.columns).toHaveLength(2);
406
- expect(result.has(timeCh.name)).toBe(true);
407
- expect(result.has(dataCh.name)).toBe(true);
408
- expect(result.has(extraCh.key)).toBe(false);
409
- });
410
-
411
- it("should handle partial matches while converting", async () => {
412
- const filterAdapter = await ReadAdapter.open(client.channels.retriever, [
413
- timeCh.name,
414
- ]);
415
-
416
- const ts = TimeStamp.now().valueOf();
417
- const inputFrame = new Frame({
418
- [timeCh.key]: new Series([ts]),
419
- [extraCh.key]: new Series([999.0]),
420
- });
421
-
422
- const result = filterAdapter.adapt(inputFrame);
423
-
424
- expect(result.columns).toHaveLength(1);
425
- expect(result.has(timeCh.name)).toBe(true);
426
- expect(result.has(extraCh.key)).toBe(false);
427
- expect(result.get(timeCh.name).at(0)).toEqual(ts);
428
- });
429
-
430
- it("should return empty frame when no channels match", async () => {
431
- const filterAdapter = await ReadAdapter.open(client.channels.retriever, [
432
- timeCh.name,
433
- ]);
434
-
435
- const inputFrame = new Frame({
436
- [extraCh.key]: new Series([999.0]),
437
- });
438
-
439
- const result = filterAdapter.adapt(inputFrame);
440
-
441
- expect(result.columns).toHaveLength(0);
442
- expect(result.series).toHaveLength(0);
443
- });
444
- });
445
- });
446
-
447
- describe("edge cases", () => {
448
- it("should handle empty frames", () => {
449
- const inputFrame = new Frame({});
450
-
451
- const result = adapter.adapt(inputFrame);
452
-
453
- expect(result.columns).toHaveLength(0);
454
- expect(result.series).toHaveLength(0);
455
- });
456
-
457
- it("should handle frames with empty series", () => {
458
- const inputFrame = new Frame({
459
- [timeCh.key]: new Series({ data: [], dataType: DataType.TIMESTAMP }),
460
- [dataCh.key]: new Series({ data: [], dataType: DataType.FLOAT32 }),
461
- });
462
-
463
- const result = adapter.adapt(inputFrame);
464
-
465
- expect(result.columns).toHaveLength(2);
466
- expect(result.get(timeCh.key)).toHaveLength(0);
467
- expect(result.get(dataCh.key)).toHaveLength(0);
468
- });
469
- });
470
-
471
- describe("data integrity", () => {
472
- it("should preserve series values across multiple data types", async () => {
473
- const int64Ch = await client.channels.create({
474
- name: id.create(),
475
- dataType: DataType.INT64,
476
- index: timeCh.key,
477
- });
478
-
479
- const testAdapter = await ReadAdapter.open(client.channels.retriever, [
480
- timeCh.key,
481
- dataCh.key,
482
- int64Ch.key,
483
- ]);
484
-
485
- const ts = TimeStamp.now().valueOf();
486
- const inputFrame = new Frame({
487
- [timeCh.key]: new Series([ts, ts + 1000n]),
488
- [dataCh.key]: new Series([1.5, 2.5]),
489
- [int64Ch.key]: new Series([100n, 200n]),
490
- });
491
-
492
- const result = testAdapter.adapt(inputFrame);
493
-
494
- // Verify all values preserved
495
- expect(result.get(timeCh.key).at(0)).toEqual(ts);
496
- expect(result.get(timeCh.key).at(1)).toEqual(ts + 1000n);
497
- expect(result.get(dataCh.key).at(0)).toEqual(1.5);
498
- expect(result.get(dataCh.key).at(1)).toEqual(2.5);
499
- expect(result.get(int64Ch.key).at(0)).toEqual(100n);
500
- expect(result.get(int64Ch.key).at(1)).toEqual(200n);
501
- });
502
-
503
- it("should preserve series lengths after filtering", () => {
504
- const ts = TimeStamp.now().valueOf();
505
- const inputFrame = new Frame({
506
- [timeCh.key]: new Series([ts, ts + 1000n, ts + 2000n]),
507
- [dataCh.key]: new Series([1.0, 2.0, 3.0]),
508
- [extraCh.key]: new Series([999.0, 888.0, 777.0]),
509
- });
510
-
511
- const result = adapter.adapt(inputFrame);
512
-
513
- // Lengths should be preserved for included channels
514
- expect(result.get(timeCh.key)).toHaveLength(3);
515
- expect(result.get(dataCh.key)).toHaveLength(3);
516
- });
517
-
518
- it("should preserve series order", () => {
519
- const ts = TimeStamp.now().valueOf();
520
- // Create frame with explicit column order
521
- const inputFrame = new Frame(
522
- [dataCh.key, timeCh.key],
523
- [new Series([1.0, 2.0, 3.0]), new Series([ts, ts + 1000n, ts + 2000n])],
524
- );
525
-
526
- const result = adapter.adapt(inputFrame);
527
-
528
- // Order should be preserved (dataCh first, then timeCh)
529
- expect(result.columns[0]).toEqual(dataCh.key);
530
- expect(result.columns[1]).toEqual(timeCh.key);
531
- });
532
- });
533
-
534
- describe("state management", () => {
535
- it("should handle multiple sequential updates correctly", async () => {
536
- // Start with NAME mode to enable filtering
537
- const newAdapter = await ReadAdapter.open(client.channels.retriever, [
538
- timeCh.name,
539
- ]);
540
-
541
- // Initial state: only timeCh registered
542
- const ts = TimeStamp.now().valueOf();
543
- const inputFrame = new Frame({
544
- [timeCh.key]: new Series([ts]),
545
- [dataCh.key]: new Series([1.5]),
546
- });
547
-
548
- // Should filter out dataCh and convert timeCh key to name
549
- let result = newAdapter.adapt(inputFrame);
550
- expect(result.columns).toHaveLength(1);
551
- expect(result.has(timeCh.name)).toBe(true);
552
- expect(result.has(dataCh.name)).toBe(false);
553
-
554
- // Update to include dataCh
555
- await newAdapter.update([timeCh.name, dataCh.name]);
556
-
557
- // Should now include both channels (converted to names)
558
- result = newAdapter.adapt(inputFrame);
559
- expect(result.columns).toHaveLength(2);
560
- expect(result.has(timeCh.name)).toBe(true);
561
- expect(result.has(dataCh.name)).toBe(true);
562
- });
563
- });
564
-
565
- describe("codec integration", () => {
566
- it("should update codec when channels change", async () => {
567
- const codecAdapter = await ReadAdapter.open(client.channels.retriever, [
568
- timeCh.key,
569
- ]);
570
- expect(codecAdapter.keys).toHaveLength(1);
571
- await codecAdapter.update([timeCh.key, dataCh.key]);
572
- expect(codecAdapter.keys).toHaveLength(2);
573
- });
574
- });
575
- });
576
-
577
- describe("update", () => {
578
- it("should return false when updating with the same channels", async () => {
579
- const hasChanged = await adapter.update([timeCh.key, dataCh.key]);
580
- expect(hasChanged).toBe(false);
581
- });
582
-
583
- it("should return true when adding a new channel", async () => {
584
- const newCh = await client.channels.create({
585
- name: id.create(),
586
- dataType: DataType.FLOAT32,
587
- index: timeCh.key,
588
- });
589
- const hasChanged = await adapter.update([timeCh.key, dataCh.key, newCh.key]);
590
- expect(hasChanged).toBe(true);
591
- });
592
-
593
- it("should return true when removing a channel", async () => {
594
- const hasChanged = await adapter.update([timeCh.key]);
595
- expect(hasChanged).toBe(true);
596
- });
597
-
598
- it("should return true when replacing channels", async () => {
599
- const newCh = await client.channels.create({
600
- name: id.create(),
601
- dataType: DataType.FLOAT32,
602
- index: timeCh.key,
603
- });
604
- const hasChanged = await adapter.update([timeCh.key, newCh.key]);
605
- expect(hasChanged).toBe(true);
606
- });
607
-
608
- it("should return false when updating with same channels in different order", async () => {
609
- await adapter.update([timeCh.key, dataCh.key]);
610
- const hasChanged = await adapter.update([dataCh.key, timeCh.key]);
611
- expect(hasChanged).toBe(false);
612
- });
613
-
614
- it("should return false when updating with channel names that resolve to same keys", async () => {
615
- await adapter.update([timeCh.key, dataCh.key]);
616
- const hasChanged = await adapter.update([timeCh.name, dataCh.name]);
617
- expect(hasChanged).toBe(false);
618
- });
619
- });
620
- });