@synnaxlabs/client 0.56.2 → 0.57.1

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-DDACDVZ-.js +14505 -0
  2. package/dist/client-DDACDVZ-.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 +91 -0
  99. package/dist/src/framer/cache/dynamic.d.ts.map +1 -0
  100. package/dist/src/framer/cache/reader.d.ts +57 -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 +39 -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 +39 -16
  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 +340 -0
  398. package/src/framer/cache/reader.ts +231 -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 +108 -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 +19 -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
@@ -0,0 +1,242 @@
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 { color } from "@synnaxlabs/x";
11
+
12
+ import { actions } from "@/actions";
13
+ import {
14
+ type Action,
15
+ addChannel,
16
+ createReduceAll,
17
+ type Handlers,
18
+ removeChannel,
19
+ rename,
20
+ setChannelAlias,
21
+ setChannelColor,
22
+ setChannelEntry,
23
+ setChannelNamesHidden,
24
+ setChannelNotation,
25
+ setChannelPrecision,
26
+ setChannels,
27
+ setChannelTimestampFormat,
28
+ setChannelTimestampTz,
29
+ setReceiptTimestampHidden,
30
+ setTimestampPrecision,
31
+ swapChannel,
32
+ } from "@/log/actions.gen";
33
+ import { channelEntryZ } from "@/log/types.gen";
34
+
35
+ // Handlers report the narrowest resource each action touches as its target. Log-level
36
+ // config (name, timestamp precision, display flags) targets the log key itself; channel
37
+ // mutations target the specific channel so concurrent edits to distinct channels
38
+ // neither coalesce nor invalidate each other's undoables.
39
+ const handlers: Handlers = {
40
+ create: (state, payload) => {
41
+ Object.assign(state, payload.log);
42
+ return { inverse: [], targets: [payload.log.key] };
43
+ },
44
+
45
+ rename: (state, payload) => {
46
+ const oldName = state.name;
47
+ state.name = payload.name;
48
+ return { inverse: [rename({ name: oldName })], targets: [state.key] };
49
+ },
50
+
51
+ addChannel: (state, payload) => {
52
+ if (state.channels.some((e) => e.channel === payload.channel))
53
+ return actions.NO_OP_RESULT;
54
+ state.channels.push(
55
+ channelEntryZ.parse({ channel: payload.channel, color: color.ZERO }),
56
+ );
57
+ return {
58
+ inverse: [removeChannel({ channel: payload.channel })],
59
+ targets: [`channel:${payload.channel}`],
60
+ };
61
+ },
62
+
63
+ removeChannel: (state, payload) => {
64
+ const idx = state.channels.findIndex((e) => e.channel === payload.channel);
65
+ if (idx === -1) return actions.NO_OP_RESULT;
66
+ const oldEntry = actions.snapshotDraft(state.channels[idx]);
67
+ state.channels.splice(idx, 1);
68
+ return {
69
+ inverse: [
70
+ addChannel({ channel: payload.channel }),
71
+ setChannelEntry({ entry: oldEntry }),
72
+ ],
73
+ targets: [`channel:${payload.channel}`],
74
+ };
75
+ },
76
+
77
+ setChannelEntry: (state, payload) => {
78
+ const idx = state.channels.findIndex((e) => e.channel === payload.entry.channel);
79
+ if (idx === -1) {
80
+ state.channels.push(payload.entry);
81
+ return {
82
+ inverse: [removeChannel({ channel: payload.entry.channel })],
83
+ targets: [`channel:${payload.entry.channel}`],
84
+ };
85
+ }
86
+ const oldEntry = actions.snapshotDraft(state.channels[idx]);
87
+ state.channels[idx] = payload.entry;
88
+ return {
89
+ inverse: [setChannelEntry({ entry: oldEntry })],
90
+ targets: [`channel:${payload.entry.channel}`],
91
+ };
92
+ },
93
+
94
+ setChannelColor: (state, payload) => {
95
+ const entry = state.channels.find((e) => e.channel === payload.channel);
96
+ if (entry == null) return actions.NO_OP_RESULT;
97
+ const inverse = [
98
+ setChannelColor({
99
+ channel: payload.channel,
100
+ color: actions.snapshotDraft(entry.color),
101
+ }),
102
+ ];
103
+ entry.color = payload.color;
104
+ return { inverse, targets: [`channel:${payload.channel}`] };
105
+ },
106
+
107
+ setChannelNotation: (state, payload) => {
108
+ const entry = state.channels.find((e) => e.channel === payload.channel);
109
+ if (entry == null) return actions.NO_OP_RESULT;
110
+ const inverse = [
111
+ setChannelNotation({ channel: payload.channel, notation: entry.notation }),
112
+ ];
113
+ entry.notation = payload.notation;
114
+ return { inverse, targets: [`channel:${payload.channel}`] };
115
+ },
116
+
117
+ setChannelPrecision: (state, payload) => {
118
+ const entry = state.channels.find((e) => e.channel === payload.channel);
119
+ if (entry == null) return actions.NO_OP_RESULT;
120
+ const inverse = [
121
+ setChannelPrecision({ channel: payload.channel, precision: entry.precision }),
122
+ ];
123
+ entry.precision = payload.precision;
124
+ return { inverse, targets: [`channel:${payload.channel}`] };
125
+ },
126
+
127
+ setChannelAlias: (state, payload) => {
128
+ const entry = state.channels.find((e) => e.channel === payload.channel);
129
+ if (entry == null) return actions.NO_OP_RESULT;
130
+ const inverse = [setChannelAlias({ channel: payload.channel, alias: entry.alias })];
131
+ entry.alias = payload.alias;
132
+ return { inverse, targets: [`channel:${payload.channel}`] };
133
+ },
134
+
135
+ setChannelTimestampFormat: (state, payload) => {
136
+ const entry = state.channels.find((e) => e.channel === payload.channel);
137
+ if (entry == null) return actions.NO_OP_RESULT;
138
+ const inverse = [
139
+ setChannelTimestampFormat({
140
+ channel: payload.channel,
141
+ format: entry.timestamp.format,
142
+ }),
143
+ ];
144
+ entry.timestamp.format = payload.format;
145
+ return { inverse, targets: [`channel:${payload.channel}`] };
146
+ },
147
+
148
+ setChannelTimestampTz: (state, payload) => {
149
+ const entry = state.channels.find((e) => e.channel === payload.channel);
150
+ if (entry == null) return actions.NO_OP_RESULT;
151
+ const inverse = [
152
+ setChannelTimestampTz({ channel: payload.channel, tz: entry.timestamp.tz }),
153
+ ];
154
+ entry.timestamp.tz = payload.tz;
155
+ return { inverse, targets: [`channel:${payload.channel}`] };
156
+ },
157
+
158
+ setChannels: (state, payload) => {
159
+ const oldChannels = actions.snapshotDraft(state.channels);
160
+ const targets = new Set<string>();
161
+ oldChannels.forEach((e) => targets.add(`channel:${e.channel}`));
162
+ payload.channels.forEach((e) => targets.add(`channel:${e.channel}`));
163
+ state.channels = payload.channels;
164
+ return { inverse: [setChannels({ channels: oldChannels })], targets: [...targets] };
165
+ },
166
+
167
+ swapChannel: (state, payload) => {
168
+ const idx = state.channels.findIndex((e) => e.channel === payload.from);
169
+ if (idx === -1) return actions.NO_OP_RESULT;
170
+ state.channels[idx].channel = payload.to;
171
+ return {
172
+ inverse: [swapChannel({ from: payload.to, to: payload.from })],
173
+ targets: [`channel:${payload.from}`, `channel:${payload.to}`],
174
+ };
175
+ },
176
+
177
+ setTimestampPrecision: (state, payload) => {
178
+ const oldPrecision = state.timestampPrecision;
179
+ state.timestampPrecision = payload.timestampPrecision;
180
+ return {
181
+ inverse: [setTimestampPrecision({ timestampPrecision: oldPrecision })],
182
+ targets: [state.key],
183
+ };
184
+ },
185
+
186
+ setChannelNamesHidden: (state, payload) => {
187
+ const oldValue = state.channelNamesHidden;
188
+ state.channelNamesHidden = payload.channelNamesHidden;
189
+ return {
190
+ inverse: [setChannelNamesHidden({ channelNamesHidden: oldValue })],
191
+ targets: [state.key],
192
+ };
193
+ },
194
+
195
+ setReceiptTimestampHidden: (state, payload) => {
196
+ const oldValue = state.receiptTimestampHidden;
197
+ state.receiptTimestampHidden = payload.receiptTimestampHidden;
198
+ return {
199
+ inverse: [setReceiptTimestampHidden({ receiptTimestampHidden: oldValue })],
200
+ targets: [state.key],
201
+ };
202
+ },
203
+ };
204
+
205
+ export const reduceAll = createReduceAll(handlers);
206
+
207
+ // createOf hands the dispatch controller the document carried by a create
208
+ // action so frames for never-cached documents ingest instead of drop.
209
+ export const createOf = (action: Action) =>
210
+ action.type === "create" ? action.create.log : undefined;
211
+
212
+ // kindOf keys single-channel edits by channel so rapid edits to one
213
+ // channel's config coalesce into a single undoable, while edits to distinct
214
+ // channels stay separate. Log-level edits (name, precision, flags) key by their
215
+ // action type; multi-action batches collapse into one "transaction" undoable.
216
+ export const kindOf = (actions: Action[]): string => {
217
+ if (actions.length === 0) return "default";
218
+ if (actions.length > 1) return "transaction";
219
+ const a = actions[0];
220
+ switch (a.type) {
221
+ case "add_channel":
222
+ return `channel:${a.addChannel.channel}`;
223
+ case "remove_channel":
224
+ return `channel:${a.removeChannel.channel}`;
225
+ case "set_channel_entry":
226
+ return `channel:${a.setChannelEntry.entry.channel}`;
227
+ case "set_channel_color":
228
+ return `channel:${a.setChannelColor.channel}`;
229
+ case "set_channel_notation":
230
+ return `channel:${a.setChannelNotation.channel}`;
231
+ case "set_channel_precision":
232
+ return `channel:${a.setChannelPrecision.channel}`;
233
+ case "set_channel_alias":
234
+ return `channel:${a.setChannelAlias.channel}`;
235
+ case "set_channel_timestamp_format":
236
+ return `channel:${a.setChannelTimestampFormat.channel}`;
237
+ case "set_channel_timestamp_tz":
238
+ return `channel:${a.setChannelTimestampTz.channel}`;
239
+ default:
240
+ return a.type;
241
+ }
242
+ };
package/src/log/client.ts CHANGED
@@ -8,88 +8,259 @@
8
8
  // included in the file licenses/APL.txt.
9
9
 
10
10
  import { type UnaryClient } from "@synnaxlabs/freighter";
11
- import { array, caseconv, record } from "@synnaxlabs/x";
11
+ import { array, type destructor, zod } from "@synnaxlabs/x";
12
12
  import { z } from "zod";
13
13
 
14
- import { type Key, keyZ, type Log, logZ, type New, newZ } from "@/log/types.gen";
15
- import { checkForMultipleOrNoResults } from "@/util/retrieve";
16
- import { workspace } from "@/workspace";
14
+ import { actions } from "@/actions";
15
+ import { createOf, kindOf, reduceAll } from "@/log/actions";
16
+ import {
17
+ type Action,
18
+ dispatchReqZ,
19
+ rename as renameAction,
20
+ scopedActionZ,
21
+ } from "@/log/actions.gen";
22
+ import { type Key, keyZ, type Log, logZ, type New, ontologyID } from "@/log/types.gen";
23
+ import { type ontology } from "@/ontology";
24
+ import { project } from "@/project";
25
+ import { query } from "@/query";
17
26
 
18
- const renameReqZ = z.object({ key: keyZ, name: z.string() });
27
+ export const SET_CHANNEL_NAME = "sy_log_set";
28
+ export const DELETE_CHANNEL_NAME = "sy_log_delete";
19
29
 
20
- const setDataReqZ = z.object({
21
- key: keyZ,
22
- data: caseconv.preserveCase(record.unknownZ()),
23
- });
24
30
  const deleteReqZ = z.object({ keys: keyZ.array() });
25
31
 
26
- const retrieveReqZ = z.object({ keys: keyZ.array() });
27
- const singleRetrieveArgsZ = z
32
+ const retrieveReqZ = z.object({
33
+ keys: keyZ.array(),
34
+ ignoreNotFoundError: z.boolean().optional(),
35
+ });
36
+ const retrieveMultiParamsZ = retrieveReqZ.or(query.keyListZ(keyZ));
37
+ const singleRetrieveParamsZ = z
28
38
  .object({ key: keyZ })
29
39
  .transform(({ key }) => ({ keys: [key] }));
30
40
 
31
- export const retrieveArgsZ = z.union([singleRetrieveArgsZ, retrieveReqZ]);
32
- export type RetrieveArgs = z.input<typeof retrieveArgsZ>;
33
- export type RetrieveSingleParams = z.input<typeof singleRetrieveArgsZ>;
41
+ export const retrieveParamsZ = z.union([singleRetrieveParamsZ, retrieveReqZ]);
42
+ export type RetrieveParams = z.input<typeof retrieveParamsZ>;
43
+ export type RetrieveSingleParams = z.input<typeof singleRetrieveParamsZ>;
34
44
  export type RetrieveMultipleParams = z.input<typeof retrieveReqZ>;
35
45
 
36
- const retrieveResZ = z.object({ logs: array.nullishToEmpty(logZ) });
46
+ interface RetrieveRequest extends z.infer<typeof retrieveReqZ> {}
47
+
48
+ const retrieveResZ = z.object({ logs: logZ.array().default(() => []) });
37
49
 
38
- const createReqZ = z.object({ workspace: workspace.keyZ, logs: newZ.array() });
50
+ const createReqZ = z.object({ project: project.keyZ, logs: logZ.array() });
39
51
  const createResZ = z.object({ logs: logZ.array() });
40
52
 
41
53
  const emptyResZ = z.object({});
42
54
 
43
- export class Client {
44
- private readonly client: UnaryClient;
55
+ /**
56
+ * Client-side matching for a request: exact for the requested key set, the
57
+ * only field a request carries.
58
+ */
59
+ const requestFilter = (req: RetrieveRequest): ((l: Log) => boolean) => {
60
+ const keySet = new Set(req.keys);
61
+ return (l) => keySet.has(l.key);
62
+ };
63
+
64
+ export interface ClientConfig {
65
+ unary: UnaryClient;
66
+ cache: query.Cache;
67
+ ontology: ontology.Client;
68
+ }
45
69
 
46
- constructor(client: UnaryClient) {
47
- this.client = client;
70
+ export class Client extends query.Retriever<typeof retrieveMultiParamsZ, Key, Log> {
71
+ private readonly cfg: ClientConfig;
72
+ private readonly store: query.Table<Key, Log>;
73
+ private readonly dispatcher: actions.Controller<Key, Log, Action>;
74
+
75
+ constructor(cfg: ClientConfig) {
76
+ const { cache } = cfg;
77
+ // Dispatch mutates documents server-side, so fetched copies never clobber
78
+ // a doc holding locally replayed edits: the table hydrates if-absent.
79
+ const store = cache.createTable<Key, Log>({
80
+ name: "logs",
81
+ hydrate: "if-absent",
82
+ fetch: async (keys) =>
83
+ await this.execRetrieve({ keys, ignoreNotFoundError: true }),
84
+ listen: [query.createDeleteListener(DELETE_CHANNEL_NAME, keyZ)],
85
+ });
86
+ const dispatcher = new actions.Controller<Key, Log, Action>({
87
+ store,
88
+ onError: cache.onError,
89
+ reduce: reduceAll,
90
+ kindOf,
91
+ createOf,
92
+ });
93
+ cache.listen(dispatcher.listener(SET_CHANNEL_NAME, scopedActionZ));
94
+ super(cache, {
95
+ name: "log",
96
+ table: store,
97
+ request: {
98
+ schema: retrieveMultiParamsZ,
99
+ fetch: async (req) => await this.execRetrieve(req),
100
+ matches: (log, req) => requestFilter(req)(log),
101
+ },
102
+ });
103
+ this.cfg = cfg;
104
+ this.store = store;
105
+ this.dispatcher = dispatcher;
48
106
  }
49
107
 
50
- async create(workspace: workspace.Key, log: New): Promise<Log>;
51
- async create(workspace: workspace.Key, logs: New[]): Promise<Log[]>;
52
- async create(workspace: workspace.Key, logs: New | New[]): Promise<Log | Log[]> {
108
+ async create(
109
+ project: project.Key,
110
+ log: New,
111
+ opts?: query.WriteOptions<Log[]>,
112
+ ): Promise<Log>;
113
+ async create(
114
+ project: project.Key,
115
+ logs: New[],
116
+ opts?: query.WriteOptions<Log[]>,
117
+ ): Promise<Log[]>;
118
+ async create(
119
+ project: project.Key,
120
+ logs: New | New[],
121
+ opts: query.WriteOptions<Log[]> = {},
122
+ ): Promise<Log | Log[]> {
53
123
  const isMany = Array.isArray(logs);
54
- const res = await this.client.send(
55
- "/log/create",
56
- { workspace, logs: array.toArray(logs) },
57
- createReqZ,
58
- createResZ,
59
- );
124
+ const optimistic = array
125
+ .toArray(logs)
126
+ .map((l) => zod.parse(logZ, l, { label: "log" }));
127
+ const res = await query.optimistic({
128
+ rollbacks: [this.store.set(optimistic)],
129
+ onOptimistic: () => opts.onOptimistic?.(optimistic),
130
+ commit: async () =>
131
+ await this.cfg.unary.send(
132
+ "/log/create",
133
+ { project, logs: optimistic },
134
+ createReqZ,
135
+ createResZ,
136
+ ),
137
+ });
138
+ this.store.set(res.logs);
60
139
  return isMany ? res.logs : res.logs[0];
61
140
  }
62
141
 
63
- async rename(key: Key, name: string): Promise<void> {
64
- await this.client.send("/log/rename", { key, name }, renameReqZ, emptyResZ);
142
+ async rename(key: Key, name: string, opts: query.WriteOptions = {}): Promise<void> {
143
+ const rename = () => [
144
+ query.partialUpdate(this.store, key, { name }),
145
+ this.cfg.ontology.cache.renameResource(ontologyID(key), name),
146
+ ];
147
+ await query.optimistic({
148
+ rollbacks: rename(),
149
+ onOptimistic: opts.onOptimistic,
150
+ commit: async () => await this.sendDispatch(key, "", [renameAction({ name })]),
151
+ });
152
+ rename();
65
153
  }
66
154
 
67
- async setData(key: Key, data: record.Unknown): Promise<void> {
68
- await this.client.send("/log/set-data", { key, data }, setDataReqZ, emptyResZ);
155
+ /**
156
+ * Applies actions to the cached log and sends them to the server, recording an
157
+ * undoable entry. Returns false without side effects when the log isn't cached. Rolls
158
+ * back the local apply and rethrows on send failure.
159
+ */
160
+ async dispatch(
161
+ key: Key,
162
+ actions: Action | Action[],
163
+ opts: actions.Options<Log, Action> = {},
164
+ ): Promise<boolean> {
165
+ return await this.dispatcher.dispatch(
166
+ key,
167
+ array.toArray(actions),
168
+ this.dispatchSender(key),
169
+ opts,
170
+ );
69
171
  }
70
172
 
71
- async retrieve(args: RetrieveSingleParams): Promise<Log>;
72
- async retrieve(args: RetrieveMultipleParams): Promise<Log[]>;
73
- async retrieve(
74
- args: RetrieveSingleParams | RetrieveMultipleParams,
75
- ): Promise<Log | Log[]> {
76
- const isSingle = singleRetrieveArgsZ.safeParse(args).success;
77
- const res = await this.client.send(
78
- "/log/retrieve",
79
- args,
80
- retrieveArgsZ,
81
- retrieveResZ,
82
- );
83
- checkForMultipleOrNoResults("Log", args, res.logs, isSingle);
84
- return isSingle ? res.logs[0] : res.logs;
173
+ /**
174
+ * Reverts the log's most recent undoable entry. Returns false when
175
+ * nothing is undoable.
176
+ */
177
+ async undo(key: Key): Promise<boolean> {
178
+ return await this.dispatcher.undo(key, this.dispatchSender(key));
179
+ }
180
+
181
+ /**
182
+ * Re-applies the log's most recently undone entry. Returns false when
183
+ * nothing is redoable.
184
+ */
185
+ async redo(key: Key): Promise<boolean> {
186
+ return await this.dispatcher.redo(key, this.dispatchSender(key));
187
+ }
188
+
189
+ /** Whether the log has a live undo entry. */
190
+ hasUndo(key: Key): boolean {
191
+ return this.dispatcher.hasUndo(key);
85
192
  }
86
193
 
87
- async delete(keys: Key | Key[]): Promise<void> {
88
- await this.client.send(
89
- "/log/delete",
90
- { keys: array.toArray(keys) },
91
- deleteReqZ,
194
+ /** Whether the log has a live redo entry. */
195
+ hasRedo(key: Key): boolean {
196
+ return this.dispatcher.hasRedo(key);
197
+ }
198
+
199
+ /**
200
+ * Subscribes to changes in the log's undo/redo stacks. Returns a
201
+ * destructor that unsubscribes.
202
+ */
203
+ onUndoStateChange(callback: () => void, key?: Key): destructor.Destructor {
204
+ return this.dispatcher.onUndoStateChange(callback, key);
205
+ }
206
+
207
+ /** Stages actions committed atomically as one undoable entry. */
208
+ beginTransaction(key: Key, kind?: string): actions.Transaction<Action> {
209
+ return this.dispatcher.transaction(key, this.dispatchSender(key), kind);
210
+ }
211
+
212
+ private dispatchSender(key: Key): actions.SendDispatch<Action> {
213
+ return async (actions, dispatchKey) =>
214
+ await this.sendDispatch(key, dispatchKey, actions);
215
+ }
216
+
217
+ private async sendDispatch(
218
+ key: Key,
219
+ dispatchKey: string,
220
+ actions: Action[],
221
+ ): Promise<void> {
222
+ await this.cfg.unary.send(
223
+ "/log/dispatch",
224
+ { key, dispatchKey, actions },
225
+ dispatchReqZ,
92
226
  emptyResZ,
93
227
  );
94
228
  }
229
+
230
+ async delete(keys: Key | Key[], opts: query.WriteOptions = {}): Promise<void> {
231
+ const keysArr = array.toArray(keys);
232
+ const drop = () => [
233
+ this.cfg.ontology.cache.deleteRelationships(ontologyID(keysArr)),
234
+ this.store.delete(keysArr),
235
+ ];
236
+ await query.optimistic({
237
+ rollbacks: drop(),
238
+ onOptimistic: opts.onOptimistic,
239
+ commit: async () =>
240
+ await this.cfg.unary.send(
241
+ "/log/delete",
242
+ { keys: keysArr },
243
+ deleteReqZ,
244
+ emptyResZ,
245
+ ),
246
+ });
247
+ drop();
248
+ }
249
+
250
+ /** Subscribes to every log delete delivered to the cache. */
251
+ onDelete(handler: (key: Key) => void): destructor.Destructor {
252
+ return this.store.subscribe((event) => {
253
+ if (event.variant === "delete") handler(event.key);
254
+ });
255
+ }
256
+
257
+ private async execRetrieve(params: RetrieveMultipleParams): Promise<Log[]> {
258
+ const res = await this.cfg.unary.send(
259
+ "/log/retrieve",
260
+ params,
261
+ retrieveReqZ,
262
+ retrieveResZ,
263
+ );
264
+ return res.logs;
265
+ }
95
266
  }
@@ -7,5 +7,7 @@
7
7
  // License, use of this software will be governed by the Apache License, Version 2.0,
8
8
  // included in the file licenses/APL.txt.
9
9
 
10
+ export * from "@/log/actions";
11
+ export * from "@/log/actions.gen";
10
12
  export * from "@/log/client";
11
13
  export * from "@/log/types.gen";
@@ -9,34 +9,65 @@
9
9
 
10
10
  // Code generated by Oracle. DO NOT EDIT.
11
11
 
12
- import { caseconv, record } from "@synnaxlabs/x";
12
+ import { color, notation, telem, uuid } from "@synnaxlabs/x";
13
13
  import { z } from "zod";
14
14
 
15
+ import { channel } from "@/channel";
15
16
  import { ontology } from "@/ontology";
16
17
 
18
+ /** TimestampConfig is per-channel timestamp display configuration. */
19
+ export const timestampConfigZ = z.object({
20
+ /** format controls how channel timestamps are rendered. */
21
+ format: telem.timestampFormatZ,
22
+ /** tz is the time zone used when rendering timestamps. */
23
+ tz: telem.timeZoneZ,
24
+ });
25
+ export interface TimestampConfig extends z.infer<typeof timestampConfigZ> {}
26
+
17
27
  export const keyZ = z.uuid();
18
28
  export type Key = z.infer<typeof keyZ>;
19
29
 
30
+ /** ChannelEntry is a per-channel display configuration entry within a log. */
31
+ export const channelEntryZ = z.object({
32
+ /** channel is the channel this entry references. */
33
+ channel: channel.keyZ,
34
+ /** color is the display color for the channel. */
35
+ color: color.colorZ,
36
+ /** notation is the numeric notation used to render samples. */
37
+ notation: notation.notationZ.default("standard"),
38
+ /**
39
+ * precision is the number of decimal digits to display. -1 means "use the log-level
40
+ * precision"; 17 is the maximum significant digits for a float64.
41
+ */
42
+ precision: z.int32().min(-1).max(17).default(-1),
43
+ /** alias is a human-readable alias displayed in place of the channel name. */
44
+ alias: z.string().default(""),
45
+ /** timestamp is the per-channel timestamp display configuration. */
46
+ timestamp: timestampConfigZ.prefault({ format: "preciseDate", tz: "local" }),
47
+ });
48
+ export interface ChannelEntry extends z.infer<typeof channelEntryZ> {}
49
+
20
50
  /**
21
- * Log is a timestamped event and message logging component. Logs display
22
- * chronological records of events, system messages, and audit trails with
23
- * filtering and formatting capabilities.
51
+ * Log is a timestamped event and message logging component. Logs display chronological
52
+ * records of events, system messages, and audit trails with filtering and formatting
53
+ * capabilities.
24
54
  */
25
55
  export const logZ = z.object({
26
56
  /** key is the unique identifier for this log. */
27
- key: keyZ,
57
+ key: keyZ.default(uuid.create),
28
58
  /** name is a human-readable name for the log. */
29
- name: z.string(),
30
- /**
31
- * data is the log configuration including message formatting, filtering
32
- * rules, and display options.
33
- */
34
- data: caseconv.preserveCase(record.nullishToEmpty()),
59
+ name: z.string().min(1, "name is required"),
60
+ /** channels are the channels displayed in this log, in order. */
61
+ channels: channelEntryZ.array().default(() => []),
62
+ /** timestampPrecision is the precision of displayed timestamps (0-3). */
63
+ timestampPrecision: z.int32().min(0).max(3).default(0),
64
+ /** channelNamesHidden is true when channel names are hidden. */
65
+ channelNamesHidden: z.boolean().default(false),
66
+ /** receiptTimestampHidden is true when the receipt timestamp column is hidden. */
67
+ receiptTimestampHidden: z.boolean().default(false),
35
68
  });
36
69
  export interface Log extends z.infer<typeof logZ> {}
37
-
38
- export const newZ = logZ.partial({ key: true });
39
- export interface New extends z.input<typeof newZ> {}
70
+ export interface New extends z.input<typeof logZ> {}
40
71
 
41
72
  export const ontologyID = ontology.createIDFactory<Key>("log");
42
73
  export const TYPE_ONTOLOGY_ID = ontologyID("");
@@ -0,0 +1,10 @@
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
+ export * from "@/modbus/types.gen";
@@ -0,0 +1,10 @@
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
+ export * as modbus from "@/modbus/external";