@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
@@ -7,7 +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
- import { NO_OP_RESULT as NO_OP, snapshotDraft as snapshot } from "@/actions/actions";
10
+ import { actions } from "@/actions";
11
11
  import {
12
12
  type Action,
13
13
  addCol,
@@ -23,16 +23,14 @@ import {
23
23
  } from "@/table/actions.gen";
24
24
  import { type Cell } from "@/table/types.gen";
25
25
 
26
- // MIN_CELL_DIM is the floor enforced on row and column sizes.
27
26
  const MIN_CELL_DIM = 32;
28
27
  // BASE_ROW_DIM and BASE_COL_DIM are the defaults used when an action
29
28
  // bootstraps the opposing axis on an empty table.
30
29
  const BASE_ROW_DIM = 36;
31
30
  const BASE_COL_DIM = 72;
32
31
 
33
- // deriveCellKey returns the key for the index-th replica of template. Both
34
- // reducers run the same scheme so optimistic client state agrees with the
35
- // server.
32
+ // deriveCellKey returns the key for the index-th replica of template. Both reducers run
33
+ // the same scheme so optimistic client state agrees with the server.
36
34
  const deriveCellKey = (templateKey: string, index: number): string => {
37
35
  const suffix = index.toString(16).padStart(4, "0");
38
36
  if (templateKey.length < 36) return `${templateKey}-${suffix}`;
@@ -49,6 +47,11 @@ const expandTemplate = (template: Cell, count: number): Cell[] =>
49
47
  }));
50
48
 
51
49
  const handlers: Handlers = {
50
+ create: (state, payload) => {
51
+ Object.assign(state, payload.table);
52
+ return { inverse: [], targets: [payload.table.key] };
53
+ },
54
+
52
55
  rename: (state, payload) => {
53
56
  const oldName = state.name;
54
57
  state.name = payload.name;
@@ -83,12 +86,12 @@ const handlers: Handlers = {
83
86
  },
84
87
 
85
88
  removeRow: (state, payload) => {
86
- if (payload.index >= state.rows.length) return NO_OP;
87
- const removed = snapshot(state.rows[payload.index]);
89
+ if (payload.index >= state.rows.length) return actions.NO_OP_RESULT;
90
+ const removed = actions.snapshotDraft(state.rows[payload.index]);
88
91
  const cells: Cell[] = [];
89
92
  for (const k of removed.cells) {
90
93
  const c = state.cells[k];
91
- if (c != null) cells.push(snapshot(c));
94
+ if (c != null) cells.push(actions.snapshotDraft(c));
92
95
  }
93
96
  state.rows.splice(payload.index, 1);
94
97
  for (const k of removed.cells) delete state.cells[k];
@@ -123,7 +126,7 @@ const handlers: Handlers = {
123
126
  },
124
127
 
125
128
  removeCol: (state, payload) => {
126
- if (payload.index >= state.columns.length) return NO_OP;
129
+ if (payload.index >= state.columns.length) return actions.NO_OP_RESULT;
127
130
  const oldSize = state.columns[payload.index].size;
128
131
  const removedCells: Cell[] = [];
129
132
  state.columns.splice(payload.index, 1);
@@ -134,7 +137,7 @@ const handlers: Handlers = {
134
137
  if (payload.index >= state.rows[i].cells.length) continue;
135
138
  const k = state.rows[i].cells[payload.index];
136
139
  const c = state.cells[k];
137
- if (c != null) removedCells.push(snapshot(c));
140
+ if (c != null) removedCells.push(actions.snapshotDraft(c));
138
141
  delete state.cells[k];
139
142
  state.rows[i].cells.splice(payload.index, 1);
140
143
  }
@@ -145,7 +148,7 @@ const handlers: Handlers = {
145
148
  },
146
149
 
147
150
  resizeRow: (state, payload) => {
148
- if (payload.index >= state.rows.length) return NO_OP;
151
+ if (payload.index >= state.rows.length) return actions.NO_OP_RESULT;
149
152
  const oldSize = state.rows[payload.index].size;
150
153
  state.rows[payload.index].size = Math.max(payload.size, MIN_CELL_DIM);
151
154
  return {
@@ -155,7 +158,7 @@ const handlers: Handlers = {
155
158
  },
156
159
 
157
160
  resizeCol: (state, payload) => {
158
- if (payload.index >= state.columns.length) return NO_OP;
161
+ if (payload.index >= state.columns.length) return actions.NO_OP_RESULT;
159
162
  const oldSize = state.columns[payload.index].size;
160
163
  state.columns[payload.index].size = Math.max(payload.size, MIN_CELL_DIM);
161
164
  const targets = state.rows
@@ -169,8 +172,8 @@ const handlers: Handlers = {
169
172
 
170
173
  setCell: (state, payload) => {
171
174
  const existing = state.cells[payload.cell.key];
172
- if (existing == null) return NO_OP;
173
- const oldCell = snapshot(existing);
175
+ if (existing == null) return actions.NO_OP_RESULT;
176
+ const oldCell = actions.snapshotDraft(existing);
174
177
  state.cells[payload.cell.key] = payload.cell;
175
178
  return {
176
179
  inverse: [setCell({ cell: oldCell })],
@@ -179,7 +182,7 @@ const handlers: Handlers = {
179
182
  },
180
183
 
181
184
  eraseCells: (state, payload) => {
182
- if (payload.cells.length === 0) return NO_OP;
185
+ if (payload.cells.length === 0) return actions.NO_OP_RESULT;
183
186
  const selected = new Set(payload.cells);
184
187
  const rowPosOf = new Map<string, { row: number; col: number }>();
185
188
  for (let r = 0; r < state.rows.length; r++) {
@@ -209,11 +212,11 @@ const handlers: Handlers = {
209
212
  // unshift the inverse so undo replays it in ascending order.
210
213
  for (let i = fullRowIdx.length - 1; i >= 0; i--) {
211
214
  const idx = fullRowIdx[i];
212
- const removed = snapshot(state.rows[idx]);
215
+ const removed = actions.snapshotDraft(state.rows[idx]);
213
216
  const cells: Cell[] = [];
214
217
  for (const k of removed.cells) {
215
218
  const c = state.cells[k];
216
- if (c != null) cells.push(snapshot(c));
219
+ if (c != null) cells.push(actions.snapshotDraft(c));
217
220
  }
218
221
  state.rows.splice(idx, 1);
219
222
  for (const k of removed.cells) delete state.cells[k];
@@ -229,7 +232,7 @@ const handlers: Handlers = {
229
232
  if (idx >= state.rows[r].cells.length) continue;
230
233
  const k = state.rows[r].cells[idx];
231
234
  const c = state.cells[k];
232
- if (c != null) removedCells.push(snapshot(c));
235
+ if (c != null) removedCells.push(actions.snapshotDraft(c));
233
236
  delete state.cells[k];
234
237
  state.rows[r].cells.splice(idx, 1);
235
238
  }
@@ -239,7 +242,7 @@ const handlers: Handlers = {
239
242
  for (const k of selected) {
240
243
  const existing = state.cells[k];
241
244
  if (existing == null) continue;
242
- const oldCell = snapshot(existing);
245
+ const oldCell = actions.snapshotDraft(existing);
243
246
  state.cells[k] = {
244
247
  key: k,
245
248
  variant: payload.template.variant,
@@ -253,3 +256,25 @@ const handlers: Handlers = {
253
256
  };
254
257
 
255
258
  export const reduceAll = createReduceAll(handlers);
259
+
260
+ // createOf hands the dispatch controller the document carried by a create
261
+ // action so frames for never-cached documents ingest instead of drop.
262
+ export const createOf = (action: Action) =>
263
+ action.type === "create" ? action.create.table : undefined;
264
+
265
+ // kindOf classifies an action batch for the undoable store's per-kind coalesce window.
266
+ // Continuous resize gestures (a stream of resize_row or resize_col actions) collapse
267
+ // into a single undo step; successive set_cell actions on the same cell coalesce
268
+ // per-cell so typing inside one cell collapses to one undo step but switching cells
269
+ // starts a fresh entry; everything else is treated as a discrete user action.
270
+ export const kindOf = (actions: Action[]): string => {
271
+ if (actions.length === 0) return "default";
272
+ if (actions.every((a) => a.type === "resize_row" || a.type === "resize_col"))
273
+ return "resize";
274
+ if (actions.length === 1) {
275
+ const a = actions[0];
276
+ if (a.type === "set_cell") return `set_cell:${a.setCell.cell.key}`;
277
+ return a.type;
278
+ }
279
+ return "transaction";
280
+ };
@@ -8,73 +8,225 @@
8
8
  // included in the file licenses/APL.txt.
9
9
 
10
10
  import { type UnaryClient } from "@synnaxlabs/freighter";
11
- import { array } from "@synnaxlabs/x";
11
+ import { array, type destructor, zod } from "@synnaxlabs/x";
12
12
  import { z } from "zod";
13
13
 
14
- import { type Action, dispatchReqZ } from "@/table/actions.gen";
15
- import { type Key, keyZ, type New, newZ, type Table, tableZ } from "@/table/types.gen";
16
- import { checkForMultipleOrNoResults } from "@/util/retrieve";
17
- import { workspace } from "@/workspace";
14
+ import { actions } from "@/actions";
15
+ import { type ontology } from "@/ontology";
16
+ import { project } from "@/project";
17
+ import { query } from "@/query";
18
+ import { createOf, kindOf, reduceAll } from "@/table/actions";
19
+ import {
20
+ type Action,
21
+ dispatchReqZ,
22
+ rename as renameAction,
23
+ scopedActionZ,
24
+ } from "@/table/actions.gen";
25
+ import {
26
+ type Key,
27
+ keyZ,
28
+ type New,
29
+ ontologyID,
30
+ type Table,
31
+ tableZ,
32
+ } from "@/table/types.gen";
18
33
 
19
34
  export const SET_CHANNEL_NAME = "sy_table_set";
35
+ export const DELETE_CHANNEL_NAME = "sy_table_delete";
20
36
 
21
- const renameReqZ = z.object({ key: keyZ, name: z.string() });
22
-
23
- const setDataBodyZ = tableZ.omit({ key: true, name: true });
24
- export type SetDataBody = z.input<typeof setDataBodyZ>;
25
- const setDataReqZ = z.object({ key: keyZ, data: setDataBodyZ });
26
37
  const deleteReqZ = z.object({ keys: keyZ.array() });
27
38
 
28
- const retrieveReqZ = z.object({ keys: keyZ.array() });
29
- const singleRetrieveArgsZ = z
39
+ const retrieveReqZ = z.object({
40
+ keys: keyZ.array(),
41
+ ignoreNotFoundError: z.boolean().optional(),
42
+ });
43
+ const retrieveMultiParamsZ = retrieveReqZ.or(query.keyListZ(keyZ));
44
+ const singleRetrieveParamsZ = z
30
45
  .object({ key: keyZ })
31
46
  .transform(({ key }) => ({ keys: [key] }));
32
47
 
33
- export const retrieveArgsZ = z.union([singleRetrieveArgsZ, retrieveReqZ]);
34
- export type RetrieveArgs = z.input<typeof retrieveArgsZ>;
35
- export type RetrieveSingleParams = z.input<typeof singleRetrieveArgsZ>;
48
+ export const retrieveParamsZ = z.union([singleRetrieveParamsZ, retrieveReqZ]);
49
+ export type RetrieveParams = z.input<typeof retrieveParamsZ>;
50
+ export type RetrieveSingleParams = z.input<typeof singleRetrieveParamsZ>;
36
51
  export type RetrieveMultipleParams = z.input<typeof retrieveReqZ>;
37
52
 
38
- const retrieveResZ = z.object({ tables: array.nullishToEmpty(tableZ) });
53
+ interface RetrieveRequest extends z.infer<typeof retrieveReqZ> {}
54
+
55
+ const retrieveResZ = z.object({ tables: tableZ.array().default(() => []) });
39
56
 
40
- const createReqZ = z.object({ workspace: workspace.keyZ, tables: newZ.array() });
57
+ const createReqZ = z.object({ project: project.keyZ, tables: tableZ.array() });
41
58
  const createResZ = z.object({ tables: tableZ.array() });
42
59
 
43
60
  const emptyResZ = z.object({});
44
61
 
45
- export class Client {
46
- private readonly client: UnaryClient;
62
+ /**
63
+ * Client-side matching for a request: exact for the requested key set, the
64
+ * only field a request carries.
65
+ */
66
+ const requestFilter = (req: RetrieveRequest): ((t: Table) => boolean) => {
67
+ const keySet = new Set(req.keys);
68
+ return (t) => keySet.has(t.key);
69
+ };
70
+
71
+ export interface ClientConfig {
72
+ unary: UnaryClient;
73
+ cache: query.Cache;
74
+ ontology: ontology.Client;
75
+ }
76
+
77
+ export class Client extends query.Retriever<typeof retrieveMultiParamsZ, Key, Table> {
78
+ private readonly cfg: ClientConfig;
79
+ private readonly store: query.Table<Key, Table>;
80
+ private readonly dispatcher: actions.Controller<Key, Table, Action>;
47
81
 
48
- constructor(client: UnaryClient) {
49
- this.client = client;
82
+ constructor(cfg: ClientConfig) {
83
+ const { cache } = cfg;
84
+ // Dispatch mutates documents server-side, so fetched copies never clobber
85
+ // a doc holding locally replayed edits: the table hydrates if-absent.
86
+ const store = cache.createTable<Key, Table>({
87
+ name: "tables",
88
+ hydrate: "if-absent",
89
+ fetch: async (keys) =>
90
+ await this.execRetrieve({ keys, ignoreNotFoundError: true }),
91
+ listen: [query.createDeleteListener(DELETE_CHANNEL_NAME, keyZ)],
92
+ });
93
+ const dispatcher = new actions.Controller<Key, Table, Action>({
94
+ store,
95
+ onError: cache.onError,
96
+ reduce: reduceAll,
97
+ kindOf,
98
+ createOf,
99
+ });
100
+ cache.listen(dispatcher.listener(SET_CHANNEL_NAME, scopedActionZ));
101
+ super(cache, {
102
+ name: "table",
103
+ table: store,
104
+ request: {
105
+ schema: retrieveMultiParamsZ,
106
+ fetch: async (req) => await this.execRetrieve(req),
107
+ matches: (table, req) => requestFilter(req)(table),
108
+ },
109
+ });
110
+ this.cfg = cfg;
111
+ this.store = store;
112
+ this.dispatcher = dispatcher;
50
113
  }
51
114
 
52
- async create(workspace: workspace.Key, table: New): Promise<Table>;
53
- async create(workspace: workspace.Key, tables: New[]): Promise<Table[]>;
54
115
  async create(
55
- workspace: workspace.Key,
116
+ project: project.Key,
117
+ table: New,
118
+ opts?: query.WriteOptions<Table[]>,
119
+ ): Promise<Table>;
120
+ async create(
121
+ project: project.Key,
122
+ tables: New[],
123
+ opts?: query.WriteOptions<Table[]>,
124
+ ): Promise<Table[]>;
125
+ async create(
126
+ project: project.Key,
56
127
  tables: New | New[],
128
+ opts: query.WriteOptions<Table[]> = {},
57
129
  ): Promise<Table | Table[]> {
58
130
  const isMany = Array.isArray(tables);
59
- const res = await this.client.send(
60
- "/table/create",
61
- { workspace, tables: array.toArray(tables) },
62
- createReqZ,
63
- createResZ,
64
- );
131
+ const optimistic = array
132
+ .toArray(tables)
133
+ .map((t) => zod.parse(tableZ, t, { label: "table" }));
134
+ const res = await query.optimistic({
135
+ rollbacks: [this.store.set(optimistic)],
136
+ onOptimistic: () => opts.onOptimistic?.(optimistic),
137
+ commit: async () =>
138
+ await this.cfg.unary.send(
139
+ "/table/create",
140
+ { project, tables: optimistic },
141
+ createReqZ,
142
+ createResZ,
143
+ ),
144
+ });
145
+ this.store.set(res.tables);
65
146
  return isMany ? res.tables : res.tables[0];
66
147
  }
67
148
 
68
- async rename(key: Key, name: string): Promise<void> {
69
- await this.client.send("/table/rename", { key, name }, renameReqZ, emptyResZ);
149
+ async rename(key: Key, name: string, opts: query.WriteOptions = {}): Promise<void> {
150
+ const rename = () => [
151
+ query.partialUpdate(this.store, key, { name }),
152
+ this.cfg.ontology.cache.renameResource(ontologyID(key), name),
153
+ ];
154
+ await query.optimistic({
155
+ rollbacks: rename(),
156
+ onOptimistic: opts.onOptimistic,
157
+ commit: async () => await this.sendDispatch(key, "", [renameAction({ name })]),
158
+ });
159
+ rename();
160
+ }
161
+
162
+ /**
163
+ * Applies actions to the cached table and sends them to the server, recording an
164
+ * undoable entry. Returns false without side effects when the table isn't cached.
165
+ * Rolls back the local apply and rethrows on send failure.
166
+ */
167
+ async dispatch(
168
+ key: Key,
169
+ actions: Action | Action[],
170
+ opts: actions.Options<Table, Action> = {},
171
+ ): Promise<boolean> {
172
+ return await this.dispatcher.dispatch(
173
+ key,
174
+ array.toArray(actions),
175
+ this.dispatchSender(key),
176
+ opts,
177
+ );
178
+ }
179
+
180
+ /**
181
+ * Reverts the table's most recent undoable entry. Returns false when
182
+ * nothing is undoable.
183
+ */
184
+ async undo(key: Key): Promise<boolean> {
185
+ return await this.dispatcher.undo(key, this.dispatchSender(key));
186
+ }
187
+
188
+ /**
189
+ * Re-applies the table's most recently undone entry. Returns false when
190
+ * nothing is redoable.
191
+ */
192
+ async redo(key: Key): Promise<boolean> {
193
+ return await this.dispatcher.redo(key, this.dispatchSender(key));
194
+ }
195
+
196
+ /** Whether the table has a live undo entry. */
197
+ hasUndo(key: Key): boolean {
198
+ return this.dispatcher.hasUndo(key);
199
+ }
200
+
201
+ /** Whether the table has a live redo entry. */
202
+ hasRedo(key: Key): boolean {
203
+ return this.dispatcher.hasRedo(key);
204
+ }
205
+
206
+ /**
207
+ * Subscribes to changes in the table's undo/redo stacks. Returns a
208
+ * destructor that unsubscribes.
209
+ */
210
+ onUndoStateChange(callback: () => void, key?: Key): destructor.Destructor {
211
+ return this.dispatcher.onUndoStateChange(callback, key);
212
+ }
213
+
214
+ /** Stages actions committed atomically as one undoable entry. */
215
+ beginTransaction(key: Key, kind?: string): actions.Transaction<Action> {
216
+ return this.dispatcher.transaction(key, this.dispatchSender(key), kind);
70
217
  }
71
218
 
72
- async setData(key: Key, data: SetDataBody): Promise<void> {
73
- await this.client.send("/table/set-data", { key, data }, setDataReqZ, emptyResZ);
219
+ private dispatchSender(key: Key): actions.SendDispatch<Action> {
220
+ return async (actions, dispatchKey) =>
221
+ await this.sendDispatch(key, dispatchKey, actions);
74
222
  }
75
223
 
76
- async dispatch(key: Key, dispatchKey: string, actions: Action[]): Promise<void> {
77
- await this.client.send(
224
+ private async sendDispatch(
225
+ key: Key,
226
+ dispatchKey: string,
227
+ actions: Action[],
228
+ ): Promise<void> {
229
+ await this.cfg.unary.send(
78
230
  "/table/dispatch",
79
231
  { key, dispatchKey, actions },
80
232
  dispatchReqZ,
@@ -82,28 +234,40 @@ export class Client {
82
234
  );
83
235
  }
84
236
 
85
- async retrieve(args: RetrieveSingleParams): Promise<Table>;
86
- async retrieve(args: RetrieveMultipleParams): Promise<Table[]>;
87
- async retrieve(
88
- args: RetrieveSingleParams | RetrieveMultipleParams,
89
- ): Promise<Table | Table[]> {
90
- const isSingle = singleRetrieveArgsZ.safeParse(args).success;
91
- const res = await this.client.send(
92
- "/table/retrieve",
93
- args,
94
- retrieveArgsZ,
95
- retrieveResZ,
96
- );
97
- checkForMultipleOrNoResults("Table", args, res.tables, isSingle);
98
- return isSingle ? res.tables[0] : res.tables;
237
+ async delete(keys: Key | Key[], opts: query.WriteOptions = {}): Promise<void> {
238
+ const keysArr = array.toArray(keys);
239
+ const drop = () => [
240
+ this.cfg.ontology.cache.deleteRelationships(ontologyID(keysArr)),
241
+ this.store.delete(keysArr),
242
+ ];
243
+ await query.optimistic({
244
+ rollbacks: drop(),
245
+ onOptimistic: opts.onOptimistic,
246
+ commit: async () =>
247
+ await this.cfg.unary.send(
248
+ "/table/delete",
249
+ { keys: keysArr },
250
+ deleteReqZ,
251
+ emptyResZ,
252
+ ),
253
+ });
254
+ drop();
99
255
  }
100
256
 
101
- async delete(keys: Key | Key[]): Promise<void> {
102
- await this.client.send(
103
- "/table/delete",
104
- { keys: array.toArray(keys) },
105
- deleteReqZ,
106
- emptyResZ,
257
+ /** Subscribes to every table delete delivered to the cache. */
258
+ onDelete(handler: (key: Key) => void): destructor.Destructor {
259
+ return this.store.subscribe((event) => {
260
+ if (event.variant === "delete") handler(event.key);
261
+ });
262
+ }
263
+
264
+ private async execRetrieve(params: RetrieveMultipleParams): Promise<Table[]> {
265
+ const res = await this.cfg.unary.send(
266
+ "/table/retrieve",
267
+ params,
268
+ retrieveReqZ,
269
+ retrieveResZ,
107
270
  );
271
+ return res.tables;
108
272
  }
109
273
  }
@@ -9,7 +9,7 @@
9
9
 
10
10
  // Code generated by Oracle. DO NOT EDIT.
11
11
 
12
- import { array, caseconv, record } from "@synnaxlabs/x";
12
+ import { caseconv, record, uuid } from "@synnaxlabs/x";
13
13
  import { z } from "zod";
14
14
 
15
15
  import { ontology } from "@/ontology";
@@ -20,17 +20,15 @@ export const cellZ = z.object({
20
20
  key: z.string(),
21
21
  /**
22
22
  * variant is the cell variant identifier (e.g. "text", "value"). The variant
23
- * determines the shape of props and which Pluto cell component renders
24
- * the cell.
23
+ * determines the shape of props and which Pluto cell component renders the cell.
25
24
  */
26
25
  variant: z.string(),
27
26
  /**
28
- * props is the variant-specific cell configuration. The shape is determined
29
- * by the variant; the wire format intentionally stores it as an
30
- * opaque record so new variants can be added without a schema
31
- * migration.
27
+ * props is the variant-specific cell configuration. The shape is determined by the
28
+ * variant; the wire format intentionally stores it as an opaque record so new
29
+ * variants can be added without a schema migration.
32
30
  */
33
- props: caseconv.preserveCase(record.nullishToEmpty()),
31
+ props: caseconv.preserveCase(record.unknownZ().default(() => ({}))),
34
32
  });
35
33
  export interface Cell extends z.infer<typeof cellZ> {}
36
34
 
@@ -39,10 +37,13 @@ export const rowZ = z.object({
39
37
  /** size is the height of the row in pixels. */
40
38
  size: z.number(),
41
39
  /**
42
- * cells is the ordered list of cell keys in this row from left to right.
43
- * Each key points at an entry in the table's cells map.
40
+ * cells is the ordered list of cell keys in this row from left to right. Each key
41
+ * points at an entry in the table's cells map.
44
42
  */
45
- cells: array.nullishToEmpty(z.string()),
43
+ cells: z
44
+ .string()
45
+ .array()
46
+ .default(() => []),
46
47
  });
47
48
  export interface Row extends z.infer<typeof rowZ> {}
48
49
 
@@ -60,36 +61,28 @@ export const cellTemplateZ = cellZ.omit({ key: true });
60
61
  export interface CellTemplate extends z.infer<typeof cellTemplateZ> {}
61
62
 
62
63
  /**
63
- * Table is a tabular data display component for viewing structured telemetry
64
- * data. Tables support multiple columns, channel data sources, and
65
- * customizable formatting options.
64
+ * Table is a tabular data display component for viewing structured telemetry data.
65
+ * Tables support multiple columns, channel data sources, and customizable formatting
66
+ * options.
66
67
  */
67
68
  export const tableZ = z.object({
68
69
  /** key is the unique identifier for this table. */
69
- key: keyZ,
70
+ key: keyZ.default(uuid.create),
70
71
  /** name is a human-readable name for the table. */
71
- name: z.string(),
72
+ name: z.string().min(1, "name is required"),
72
73
  /** rows are the table rows in display order, top to bottom. */
73
- rows: array.nullishToEmpty(rowZ),
74
+ rows: rowZ.array().default(() => []),
74
75
  /** columns are the table columns in display order, left to right. */
75
- columns: array.nullishToEmpty(columnZ),
76
+ columns: columnZ.array().default(() => []),
76
77
  /**
77
- * cells contains all cells in the table, keyed by cell key. Cell positions
78
- * are derived from rows[*].cells[*] references; cells not referenced
79
- * by any row are orphaned and will be pruned on the next structural
80
- * edit.
78
+ * cells contains all cells in the table, keyed by cell key. Cell positions are
79
+ * derived from rows[*].cells[*] references; cells not referenced by any row are
80
+ * orphaned and will be pruned on the next structural edit.
81
81
  */
82
- cells: caseconv.preserveCase(record.nullishToEmpty(z.string(), cellZ)),
82
+ cells: caseconv.preserveCase(z.record(z.string(), cellZ).default(() => ({}))),
83
83
  });
84
84
  export interface Table extends z.infer<typeof tableZ> {}
85
-
86
- export const newZ = tableZ.partial({
87
- key: true,
88
- rows: true,
89
- columns: true,
90
- cells: true,
91
- });
92
- export interface New extends z.input<typeof newZ> {}
85
+ export interface New extends z.input<typeof tableZ> {}
93
86
 
94
87
  export const ontologyID = ontology.createIDFactory<Key>("table");
95
88
  export const TYPE_ONTOLOGY_ID = ontologyID("");